aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2019-11-16 23:37:24 +0100
committerache <ache@ache.one>2019-11-16 23:38:29 +0100
commitb965cadb4e94bab93b73471621846b2713250aee (patch)
tree6cbcb6aa58d675894f9b21a6712a7c8338765dba
parentFix install (diff)
Add save button
-rw-r--r--app.js65
-rw-r--r--package-lock.json32
-rw-r--r--package.json7
-rw-r--r--public/edit.html142
-rw-r--r--public/js/hmd.min.js22
-rw-r--r--rollup.config.js6
-rw-r--r--tohtml.js62
7 files changed, 245 insertions, 91 deletions
diff --git a/app.js b/app.js
index 81ad45a..71ad164 100644
--- a/app.js
+++ b/app.js
@@ -1,13 +1,14 @@
'use-strict';
const fs = require('fs');
+const path = require('path');
const dirTree = require('directory-tree');
const express = require('express');
const report = require('vfile-reporter');
const hmd = require('./tohtml');
-const path = 'md';
+const pathMD = 'md';
const app = express();
process.on('uncaughtException', err => {
@@ -16,15 +17,20 @@ process.on('uncaughtException', err => {
const useLandScript = '';
const rawButton = '<button class="raw_button" ><div><div>Raw</div></div></button></form>';
+const editButton = '<button class="raw_button" style="right: 45px;"><div><div>Edit</div></div></button></form>';
app.use(express.static('public'));
+app.use('/edit', express.json());
-app.get(`/${path}/*`, (req, res) => {
+app.get(`/${pathMD}/*`, (req, res) => {
const url = decodeURI(req._parsedUrl.pathname);
const {query} = req;
console.log(`[${new Date()}] > ${200} - ${url}`);
- if (query && query.raw === 'true') {
+
+ if (query && query.edit === 'true') {
+ res.redirect(`/edit${url.slice(3)}`);
+ } else if (query && query.raw === 'true') {
res.sendFile(url, {
root: '.',
dotfiles: 'deny',
@@ -49,7 +55,7 @@ app.get(`/${path}/*`, (req, res) => {
hmd(data, (err, file) => {
res.send(`${String(file) + useLandScript
- }<a href="${url}?raw=true" class="no-style">${rawButton}</a>`);
+ }<a href="${url}?raw=true" class="no-style">${rawButton}</a><a href="${url}?edit=true" class="no-style">${editButton}</a>`);
console.error(report(err || file));
});
});
@@ -57,22 +63,23 @@ app.get(`/${path}/*`, (req, res) => {
app.get('/data', (req, res) => {
console.log(`[${new Date()}] > ${200} - ${req.url}`);
- res.send(dirTree(path, {extensions: /\.md/}));
+ res.send(dirTree(pathMD, {extensions: /\.md/}));
});
app.get('/img/*', (req, res) => {
console.log(`[${new Date()}] > ${200} - ${req.url}`);
- if (path === '/img/ic_info_black_48px.svg' ||
- path === '/imr/ic_error_black_48px.svg' ||
- path === '/imr/ic_good_black_48px.svg' ||
- path === '/imr/ic_bad_black_48px.svg' ||
- path === '/imr/ic_comment_black_48px.svg' ||
- path === '/imr/ic_help_black_48px.svg') {
- const img = fs.readFileSync(path);
+ const pathR = req.url;
+ if (pathR === '/img/ic_info_black_48px.svg' ||
+ pathR === '/imr/ic_error_black_48px.svg' ||
+ pathR === '/imr/ic_good_black_48px.svg' ||
+ pathR === '/imr/ic_bad_black_48px.svg' ||
+ pathR === '/imr/ic_comment_black_48px.svg' ||
+ pathR === '/imr/ic_help_black_48px.svg') {
+ const img = fs.readFileSync(pathR);
res.writeHead(200, {'Content-Type': 'image/svg'});
res.end(img, 'binary');
} else {
- const img = fs.readFileSync(req.url.replace('/img', path));
+ const img = fs.readFileSync(req.url.replace('/img', pathR));
res.writeHead(200, {'Content-Type': 'image/gif'});
res.end(img, 'binary');
}
@@ -88,16 +95,42 @@ app.get('/', (req, res) => {
res.send(data);
});
});
-app.get('/edit', (req, res) => {
+app.get('/edit/?*', (req, res) => {
console.log(`[${new Date()}] > ${200} - ${req.url}`);
- fs.readFile('public/edit.html', 'utf8', (err, data) => {
+
+ const pathReq = path.normalize(`md/${req.url.slice(5)}`);
+
+ console.log(`[${new Date()}] > ${200} - ${pathReq}`);
+
+ fs.readFile('public/edit.html', 'utf8', (err, d) => {
if (err) {
return console.error(err);
}
- res.send(data);
+ res.send(d);
});
});
+app.put('/edit/?*', (req, res) => {
+ const pathR = path.normalize(`md${req.url.slice(5)}`);
+ console.log('PUT !');
+ console.log(pathR);
+ if (pathR.startsWith('md/public') ||
+ (pathR.startsWith('md/') && req.body.password === 'renard crétin')) {
+ fs.writeFile(pathR, req.body.text, err => {
+ if (err) {
+ res.status(404).send('Not found');
+ return console.log(err);
+ }
+ });
+
+ res.send('Saved !');
+ return;
+ }
+
+ console.log("Send error !");
+ res.status(500).send('Error');
+});
+
app.get('*', (req, res) => {
console.error(`[${new Date()}] > ${404} - ${req.url}`);
fs.readFile('public/404.md', 'utf8', (err, data) => {
diff --git a/package-lock.json b/package-lock.json
index 34ab2a3..f58cc34 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7787,6 +7787,19 @@
"resolve": "^1.1.6"
}
},
+ "rollup-plugin-terser": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.1.2.tgz",
+ "integrity": "sha512-sWKBCOS+vUkRtHtEiJPAf+WnBqk/C402fBD9AVHxSIXMqjsY7MnYWKYEUqGixtr0c8+1DjzUEPlNgOYQPVrS1g==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "jest-worker": "^24.6.0",
+ "rollup-pluginutils": "^2.8.1",
+ "serialize-javascript": "^1.7.0",
+ "terser": "^4.1.0"
+ }
+ },
"rollup-plugin-uglify": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.3.tgz",
@@ -8561,6 +8574,25 @@
"execa": "^0.7.0"
}
},
+ "terser": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz",
+ "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
diff --git a/package.json b/package.json
index f702853..dc185f0 100644
--- a/package.json
+++ b/package.json
@@ -35,16 +35,17 @@
"author": "Titely",
"license": "",
"devDependencies": {
+ "@rollup/plugin-json": "4.x.x",
"ava": "2.4.x",
- "unist-util-inspect": "5.x.x",
+ "del-cli": "3.x.x",
"rollup": "1.27.x",
"rollup-plugin-commonjs": "10.x.x",
- "@rollup/plugin-json": "4.x.x",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-globals": "^1.2.0",
"rollup-plugin-node-resolve": "^3.3.0",
+ "rollup-plugin-terser": "^5.1.2",
"rollup-plugin-uglify": "6.0.x",
- "del-cli": "3.x.x",
+ "unist-util-inspect": "5.x.x",
"xo": "0.25.x"
},
"xo": {
diff --git a/public/edit.html b/public/edit.html
index 9cf8ae5..6938c02 100644
--- a/public/edit.html
+++ b/public/edit.html
@@ -6,12 +6,12 @@
content="width=device-width,minimum-scale=1,initial-scale=1">
<title>Plugins examples</title>
- <script src="js/qcm.js"></script>
- <script src="js/hmd.min.js"></script>
+ <script src="/js/qcm.js"></script>
+ <script src="/js/hmd.min.js"></script>
<link rel="stylesheet" type="text/css" href="/css/style.css">
<link rel="stylesheet" type="text/css" href="/css/contenu.css">
- <link rel="stylesheet" type="text/css" href="css/katex.min.css">
+ <link rel="stylesheet" type="text/css" href="/css/katex.min.css">
<style>
html {
height: 100vh;
@@ -27,98 +27,78 @@ body {
width: 100vv;
margin: 0;
padding: 0;
- overflow-y: hidden;
- overflow-x: hidden;
}
#edit {
grid-area: edit;
- overflow-y: auto;
- overflow-x: hidden;
- height: 100vh;
-}
-#edit-zone{
- overflow-x: hidden;
+ padding: 20px;
+ background-color: #EEE;
+ resize: none;
}
#preview {
margin-left: 5px;
grid-area: preview;
overflow-y: scroll;
overflow-x: hidden;
+ min-height: 100vh;
}
</style>
</head>
<body>
- <div id="edit"><div contenteditable="true" id="edit-zone"> </div></div>
+ <textarea id="edit" contenteditable="true" spellcheck="false" placeholder="Write here..." autofocus=true></textarea>
<div id="preview" class="view" contenteditable="false">If you can read this line more thant <em>15s</em> there is a bug in the matrix.</div>
<!-- This is the bundle generated by rollup.js -->
<script>
-let edit = document.getElementById('edit-zone');
+let edit = document.getElementById('edit');
let preview = document.getElementById('preview');
let modification = true;
+const saveButton = document.createElement('button');
+saveButton.classList.add('raw_button');
+let tmpDiv = document.createElement('div');
+let tmpDiv2 = document.createElement('div');
-edit.innerText = `Plugins presentation
-=================
-
-This page is an example of using [remark][remark] with plugins that I created. These plugins are used to parse [lines][remark-line-input] of [text](remark-text-input), [selection boxes][remark-select] and even [MCQs][remark-mcq].
-
-The goal of this project is to propose a set of plugins allowing to create **exercises** easily.
-
-To first let's see somes examples !
-
-Example of exercises
---------------------
-
-The 151th pokémon [__151th pokémon__]{#pokemon oninput="pokemon(this)"} is one of the two pokemons that can use transform attack (the other one is [ Pikachu | Ditto | Mewtow | Eevee |v] ).
-
-
-Line edit
----------
-
-You can use line edit like that :
-
-Login : [__email or username__]{#login}
-Passwd: [__Passwd__]{#password type=password}
-
-Text edit
---------
+let password = "";
-It's also easy to use text edit :
+tmpDiv2.appendChild(document.createTextNode('Save'))
+tmpDiv.appendChild(tmpDiv2);
+saveButton.appendChild(tmpDiv);
+saveButton.style = "margin-right: 10px;";
-[______
-This is a text zone
+edit.value = hmd.defaultValue;
-______]{rows=13 cols=30}
+async function saveMD() {
+ // Default options are marked with *
+ const url = window.location.href;
+ console.log(url);
-Selection box
--------------
+ const data = {};
+ data.text = edit.value;
+ data.password = password;
-To use a selection box, just write it in the markdown file.
-
-[ Mario | Peach | Luigi |v]
-
-[remark]: https://github.com/remarkjs/remark "Github of the remark project"
-[remark-line-input]: https://www.npmjs.com/package/remark-line-input
-[remark-text-input]: https://www.npmjs.com/package/remark-text-input
-[remark-select]: https://www.npmjs.com/package/remark-select
-
-
-<script>
- if( !pokemon ) {
-function pokemon( elem ) {
- if( elem.value != 'mew' ) {
- if( elem.classList.contains('valid') )
- elem.classList.remove('valid')
- elem['className'] = 'invalid';
- }else{
- if( elem.classList.contains('invalid') )
- elem.classList.remove('invalid')
- elem.classList.add('valid')
+ const response = await fetch(url, {
+ method: 'PUT',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(data)
+ }).then( res => {
+ if (res.status >= 400 && res.status < 600) {
+ throw new Error(`${res.status}Bad error code`);
+ }
+ return res;
+ }).then( res => {
+ }).catch( err => {
+ console.log('Catch !');
+ if (!password) {
+ password = window.prompt("You shall NOT pass !");
+ window.alert('Try again !');
+ } else {
+ window.alert(`${err} - Erreur fichier \
+${window.location.pathname.replace(/\/edit/g, '/md')}`);
}
-}}` + `</scr` + `ipt>`;
+ });
+}
function nodeScriptReplace(node) {
if (node.tagName === 'SCRIPT') {
@@ -145,10 +125,11 @@ function nodeScriptClone(node) {
let interval = setInterval( () => {
if( modification ) {
- hmd(edit.innerText, (err, file) => {
+ hmd(edit.value, (err, file) => {
let finalString = String(file);
if( finalString ) {
preview.innerHTML = String(file);
+ preview.appendChild(saveButton);
nodeScriptReplace(preview);
modification = false;
}
@@ -160,6 +141,33 @@ edit.addEventListener('input', () => {
modification = true;
}, false);
+saveButton.addEventListener('click', saveMD, false);
+
+document.addEventListener("DOMContentLoaded", function(event) {
+ let url = window.location.href;
+ url = url.replace(/\/edit/g, '/md');
+ url += '?raw=true';
+
+ fetch(url).
+ then(function(response) {
+ if(response.ok) {
+ return response.text();
+ } else {
+ console.error(`${response.status} - Erreur fichier \
+${window.location.pathname.replace(/\/edit/g, '/md')}`);
+ }
+ })
+ .then(function(data) {
+ if( data ) {
+ edit.value = data;
+ }
+ })
+ .catch(function(error) {
+ console.log('Il y a eu un problème avec l\'opération fetch: ' + error.message);
+ });
+});
+
+
</script>
diff --git a/public/js/hmd.min.js b/public/js/hmd.min.js
index 547393f..bb8dc1e 100644
--- a/public/js/hmd.min.js
+++ b/public/js/hmd.min.js
@@ -1,2 +1,20 @@
-var hmd=function(){"use strict";var e=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var a in r)t.call(r,a)&&(e[a]=r[a])}return e},t=Object.prototype.hasOwnProperty;var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;var i=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var i,o,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in i=Object(arguments[l]))r.call(i,c)&&(s[c]=i[c]);if(n){o=n(i);for(var d=0;d<o.length;d++)a.call(i,o[d])&&(s[o[d]]=i[o[d]])}}return s},o=function(e,t,n){var r;null!==n&&void 0!==n||"object"==typeof t&&!Array.isArray(t)||(n=t,t={});r=i({type:String(e)},t),Array.isArray(n)?r.children=n:null!==n&&void 0!==n&&(r.value=String(n));return r};var s=l;function l(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return c;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=l(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function c(){return!0}var d=p,_=!0,u="skip",m=!1;function p(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=g(n(e,s)))[0]!==m)&&e.children&&c[0]!==u&&(l=g(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===m)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===m?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=s(t),i(e,null,[])}function g(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[_,e]:[e]}p.CONTINUE=_,p.SKIP=u,p.EXIT=m;var E=T,h=d.CONTINUE,S=d.SKIP,f=d.EXIT;function T(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),d(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}T.CONTINUE=h,T.SKIP=S,T.EXIT=f;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function b(e,t){return e(t={exports:{}},t.exports),t.exports}function C(e){return e&&e.default||e}var N=b(function(e,t){var n=t;function r(e){return t.displayName=e,t;function t(t){var n=t&&t.position&&t.position[e]||{};return{line:n.line||null,column:n.column||null,offset:isNaN(n.offset)?null:n.offset}}}n.start=r("start"),n.end=r("end")}),v=function(e){var t=R(R(e).position),n=R(t.start),r=R(t.end);return!(n.line&&n.column&&r.line&&r.column)};function R(e){return e&&"object"==typeof e?e:{}}var A=function(e,t){return function(e){return function(t){var n=t&&y(t);return n&&O.call(e,n)?e[n]:null}}(function(e,t){var n={};if(!e||!e.type)throw new Error("mdast-util-definitions expected node");return E(e,"definition",t&&t.commonmark?function(e){var t=y(e.identifier);O.call(n,t)||(n[t]=e)}:function(e){n[y(e.identifier)]=e}),n}(e,t))},O={}.hasOwnProperty;function y(e){return e.toUpperCase()}var I=b(function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}}),D=(I.left,I.right,function(e,t){var n,r,a=t.children||[],i=a.length,o=[],s=-1;for(;++s<i;)(n=x(e,a[s],t))&&(s&&"break"===a[s-1].type&&(n.value&&(n.value=I.left(n.value)),(r=n.children&&n.children[0])&&r.value&&(r.value=I.left(r.value))),o=o.concat(n));return o});var x=function(e,t,n){var r=t&&t.type,a=M.call(e.handlers,r)?e.handlers[r]:null;if(!r)throw new Error("Expected node, got `"+t+"`");return("function"==typeof a?a:function(e,t){if(function(e){var t=e.data||{};if(M.call(t,"hName")||M.call(t,"hProperties")||M.call(t,"hChildren"))return!1;return"value"in e}(t))return e.augment(t,o("text",t.value));return e(t,"div",D(e,t))})(e,t,n)},M={}.hasOwnProperty;var w=function(e,t){return e(t,"hr")};var L=function(e,t){var n=[],r=-1,a=e.length;t&&n.push(o("text","\n"));for(;++r<a;)r&&n.push(o("text","\n")),n.push(e[r]);t&&0!==e.length&&n.push(o("text","\n"));return n};var P=function(e,t){var n,r,a={},i=t.ordered?"ol":"ul",o=-1;"number"==typeof t.start&&1!==t.start&&(a.start=t.start);n=D(e,t),r=n.length;for(;++o<r;)if(n[o].properties.className&&-1!==n[o].properties.className.indexOf("task-list-item")){a.className=["contains-task-list"];break}return e(t,i,a,L(n,!0))};var k=function(e){var t,n,r,a,i=e.footnoteById,o=e.footnoteOrder,s=o.length,l=-1,c=[];for(;++l<s;)(t=i[o[l].toUpperCase()])&&(r=t.children.concat(),a=r[r.length-1],n={type:"link",url:"#fnref-"+t.identifier,data:{hProperties:{className:["footnote-backref"]}},children:[{type:"text",value:"↩"}]},a&&"paragraph"===a.type||(a={type:"paragraph",children:[]},r.push(a)),a.children.push(n),c.push({type:"listItem",data:{hProperties:{id:"fn-"+t.identifier}},children:r,position:t.position}));if(0===c.length)return null;return e(null,"div",{className:["footnotes"]},L([w(e),P(e,{type:"list",ordered:!0,children:c})],!0))};var U=function(e,t){return e(t,"blockquote",L(D(e,t),!0))};var F=function(e,t){return[e(t,"br"),o("text","\n")]};var B,G="",H=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(B!==e||void 0===B)B=e,G="";else if(G.length>=n)return G.substr(0,n);for(;n>G.length&&t>1;)1&t&&(G+=e),t>>=1,e+=e;return G=(G+=e).substr(0,n)};var Y=function(e,t){var n,r,a="string"==typeof e,i=a&&e.length,o=0,s=-1,l=-1,c=t||4,d=[];if(!a)throw new Error("detab expected string");for(;++s<i;)(n=e.charCodeAt(s))===V?(l+=r=c-(l+1)%c,d.push(e.slice(o,s)+H(" ",r)),o=s+1):n===z||n===q?l=-1:l++;return d.push(e.slice(o)),d.join("")},V=9,z=10,q=13;var K=function(e,t){var n=t.value?Y(t.value+"\n"):"",r=t.lang&&t.lang.match(/^[^ \t]+(?=[ \t]|$)/),a={};r&&(a.className=["language-"+r]);return e(t.position,"pre",[e(t,"code",a,[o("text",n)])])};var W=function(e,t){return e(t,"del",D(e,t))};var Q=function(e,t){return e(t,"em",D(e,t))};var $=function(e,t){var n=e.footnoteOrder,r=String(t.identifier);-1===n.indexOf(r)&&n.push(r);return e(t.position,"sup",{id:"fnref-"+r},[e(t,"a",{href:"#fn-"+r,className:["footnote-ref"]},[o("text",t.label||r)])])};var j=function(e,t){var n=e.footnoteById,r=e.footnoteOrder,a=1;for(;a in n;)a++;return a=String(a),r.push(a),n[a]={type:"footnoteDefinition",identifier:a,children:[{type:"paragraph",children:t.children}],position:t.position},$(e,{type:"footnoteReference",identifier:a,position:t.position})};var X=function(e,t){return e(t,"h"+t.depth,D(e,t))};var Z=function(e,t){return e.dangerous?e.augment(t,o("raw",t.value)):null};var J={};function ee(e,t,n){var r,a,i,o,s,l="";for("string"!=typeof t&&(n=t,t=ee.defaultChars),void 0===n&&(n=!0),s=function(e){var t,n,r=J[e];if(r)return r;for(r=J[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?r.push(n):r.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)r[e.charCodeAt(t)]=e[t];return r}(t),r=0,a=e.length;r<a;r++)if(i=e.charCodeAt(r),n&&37===i&&r+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(r+1,r+3)))l+=e.slice(r,r+3),r+=2;else if(i<128)l+=s[i];else if(i>=55296&&i<=57343){if(i>=55296&&i<=56319&&r+1<a&&(o=e.charCodeAt(r+1))>=56320&&o<=57343){l+=encodeURIComponent(e[r]+e[r+1]),r++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[r]);return l}ee.defaultChars=";/?:@&=+$,-_.!~*'()#",ee.componentChars="-_.!~*'()";var te=ee,ne=function(e,t){var n,r,a,i=t.referenceType,s="]";"collapsed"===i?s+="[]":"full"===i&&(s+="["+(t.label||t.identifier)+"]");if("imageReference"===t.type)return o("text","!["+t.alt+s);n=D(e,t),(r=n[0])&&"text"===r.type?r.value="["+r.value:n.unshift(o("text","["));(a=n[n.length-1])&&"text"===a.type?a.value+=s:n.push(o("text",s));return n};var re=function(e){return String(e).replace(/\s+/g," ")};function ae(e){var t=e.spread;return void 0===t||null===t?e.children.length>1:t}var ie=function(e){return String(e).replace(oe,se)},oe=/[ \t]*\n+[ \t]*/g,se="\n";var le={blockquote:U,break:F,code:K,delete:W,emphasis:Q,footnoteReference:$,footnote:j,heading:X,html:Z,imageReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={src:te(r.url||""),alt:t.alt},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"img",n)},image:function(e,t){var n={src:te(t.url),alt:t.alt};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"img",n)},inlineCode:function(e,t){return e(t,"code",[o("text",re(t.value))])},linkReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return ne(e,t);n={href:te(r.url||"")},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"a",n,D(e,t))},link:function(e,t){var n={href:te(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"a",n,D(e,t))},listItem:function(e,t,n){var r,a,i,s,l,c=t.children[0],d=D(e,t),_=n?function(e){var t=e.spread,n=e.children,r=n.length,a=-1;for(;!t&&++a<r;)t=ae(n[a]);return t}(n):ae(t),u={};if(_)r=d;else for(r=[],s=d.length,i=-1;++i<s;)"p"===(l=d[i]).tagName?r=r.concat(l.children):r.push(l);"boolean"==typeof t.checked&&(!_||c&&"paragraph"===c.type||r.unshift(e(null,"p",[])),0!==(a=_?r[0].children:r).length&&a.unshift(o("text"," ")),a.unshift(e(null,"input",{type:"checkbox",checked:t.checked,disabled:!0})),u.className=["task-list-item"]);_&&0!==r.length&&(r=L(r,!0));return e(t,"li",u,r)},list:P,paragraph:function(e,t){return e(t,"p",D(e,t))},root:function(e,t){return e.augment(t,o("root",L(D(e,t))))},strong:function(e,t){return e(t,"strong",D(e,t))},table:function(e,t){var n,r,a,i,o,s=t.children,l=s.length,c=t.align,d=c.length,_=[];for(;l--;){for(r=s[l].children,i=0===l?"th":"td",n=d,a=[];n--;)o=r[n],a[n]=e(o,i,{align:c[n]},o?D(e,o):[]);_[l]=e(s[l],"tr",L(a,!0))}return e(t,"table",L([e(_[0].position,"thead",L([_[0]],!0)),e({start:N.start(_[1]),end:N.end(_[_.length-1])},"tbody",L(_.slice(1),!0))],!0))},text:function(e,t){return e.augment(t,o("text",ie(t.value)))},thematicBreak:w,toml:ce,yaml:ce,definition:ce,footnoteDefinition:ce};function ce(){return null}var de=function(t,n){var r=function(t,n){var r=n||{},a=r.allowDangerousHTML,i={};return s.dangerous=a,s.definition=A(t,r),s.footnoteById=i,s.footnoteOrder=[],s.augment=o,s.handlers=e(le,r.handlers||{}),E(t,"footnoteDefinition",function(e){var t=String(e.identifier).toUpperCase();_e.call(i,t)||(i[t]=e)}),s;function o(t,n){var r,a;return t&&"data"in t&&(r=t.data,"element"===n.type&&r.hName&&(n.tagName=r.hName),"element"===n.type&&r.hProperties&&(n.properties=e(n.properties,r.hProperties)),n.children&&r.hChildren&&(n.children=r.hChildren)),a=t&&t.position?t:{position:t},v(a)||(n.position={start:N.start(a),end:N.end(a)}),n}function s(e,t,n,r){return(void 0===r||null===r)&&"object"==typeof n&&"length"in n&&(r=n,n={}),o(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}(t,n),a=x(r,t),i=k(r);i&&(a.children=a.children.concat(o("text","\n"),i));return a},_e={}.hasOwnProperty;var ue=de,me=function(e,t){e&&!e.process&&(t=e,e=null);return e?function(e,t){return function(n,r,a){e.run(ue(n,t),r,function(e){a(e)})}}(e,t):function(e){return function(t){return ue(t,e)}}(t)};var pe=function(e){return Ee.test("number"==typeof e?ge(e):e.charAt(0))},ge=String.fromCharCode,Ee=/\s/;var he="|",Se="||";function fe(e,t){return e.indexOf(Se,t)}var Te=function(){function e(e,t,n){if(this.options.gfm&&t.substr(0,2)===Se&&t.substr(0,4)!==Se+Se&&!pe(t.charAt(2))){var r="",a="",i="",o="",s=1,l=t.length,c=e.now();for(c.column+=2,c.offset+=2;++s<l;){if(!((r=t.charAt(s))!==he||a!==he||i&&pe(i)))return!!n||e(Se+o+Se)({type:"kbd",children:this.tokenizeInline(o,c),data:{hName:"kbd"}});o+=a,i=a,a=r}}}e.locator=fe;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.kbd=e,r.splice(r.indexOf("text"),0,"kbd");var a=this.Compiler;a&&(a.prototype.visitors.kbd=function(e){return"||".concat(this.all(e).join(""),"||")})};var be={isRemarkParser:function(e){return Boolean(e&&e.prototype&&e.prototype.blockTokenizers)},isRemarkCompiler:function(e){return Boolean(e&&e.prototype&&e.prototype.visitors)}},Ce=function(e){const t=this.Parser,n=this.Compiler;be.isRemarkParser(t)&&function(e,t){const n=e.prototype,r=n.inlineMethods;function a(e,n,r){const a=n.length;let i,o,s,l,c,d,_,u=!1,m=!1,p=0;if(n.charCodeAt(p)===ye&&(m=!0,p++),n.charCodeAt(p)===Re){if(p++,m)return!!r||e(n.slice(0,p))({type:"text",value:"$"});if(n.charCodeAt(p)===Re&&(u=!0,p++),(s=n.charCodeAt(p))!==ve&&s!==Ne){for(l=p;p<a;){if(o=s,s=n.charCodeAt(p+1),o===Re){if((i=n.charCodeAt(p-1))!==ve&&i!==Ne&&(s!=s||s<Ae||s>Oe)&&(!u||s===Re)){c=p-1,p++,u&&p++,d=p;break}}else o===ye&&(p++,s=n.charCodeAt(p+1));p++}if(void 0!==d)return!!r||(_=n.slice(l,c+1),e(n.slice(0,d))({type:"inlineMath",value:_,data:{hName:"span",hProperties:{className:Ie.concat(u&&t.inlineMathDouble?[De]:[])},hChildren:[{type:"text",value:_}]}}))}}}a.locator=function(e,t){return e.indexOf("$",t)},n.inlineTokenizers.math=a,r.splice(r.indexOf("text"),0,"math")}(t,e);be.isRemarkCompiler(n)&&function(e){e.prototype.visitors.inlineMath=function(e){let t="$";(e.data&&e.data.hProperties&&e.data.hProperties.className||[]).includes(De)&&(t="$$");return t+e.value+t}}(n)};const Ne=9,ve=32,Re=36,Ae=48,Oe=57,ye=92,Ie=["math","math-inline"],De="math-display";var xe=function(){const e=this.Parser,t=this.Compiler;be.isRemarkParser(e)&&function(e){const t=e.prototype,n=t.blockMethods,r=t.interruptParagraph,a=t.interruptList,i=t.interruptBlockquote;t.blockTokenizers.math=function(e,t,n){var r=t.length,a=0;let i,o,s,l,c,d,_,u,m,p,g;for(;a<r&&t.charCodeAt(a)===we;)a++;c=a;for(;a<r&&t.charCodeAt(a)===Le;)a++;if((d=a-c)<Ue)return;for(;a<r&&t.charCodeAt(a)===we;)a++;_=a;for(;a<r;){if((i=t.charCodeAt(a))===Le)return;if(i===Me)break;a++}if(t.charCodeAt(a)!==Me)return;if(n)return!0;o=[],_!==a&&o.push(t.slice(_,a));a++,s=-1===(s=t.indexOf(Pe,a+1))?r:s;for(;a<r;){for(u=!1,p=a,g=s,l=s,m=0;l>p&&t.charCodeAt(l-1)===we;)l--;for(;l>p&&t.charCodeAt(l-1)===Le;)m++,l--;for(d<=m&&t.indexOf(ke,p)===l&&(u=!0,g=l);p<=g&&p-a<c&&t.charCodeAt(p)===we;)p++;if(u)for(;g>p&&t.charCodeAt(g-1)===we;)g--;if(u&&p===g||o.push(t.slice(p,g)),u)break;a=s+1,s=-1===(s=t.indexOf(Pe,a+1))?r:s}return o=o.join("\n"),e(t.slice(0,s))({type:"math",value:o,data:{hName:"div",hProperties:{className:Fe.concat()},hChildren:[{type:"text",value:o}]}})},n.splice(n.indexOf("fencedCode")+1,0,"math"),r.splice(r.indexOf("fencedCode")+1,0,["math"]),a.splice(a.indexOf("fencedCode")+1,0,["math"]),i.splice(i.indexOf("fencedCode")+1,0,["math"])}(e);be.isRemarkCompiler(t)&&function(e){e.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"}}(t)};const Me=10,we=32,Le=36,Pe="\n",ke="$",Ue=2,Fe=["math","math-display"];var Be=function(e){null==e&&(e={});xe.call(this,e),Ce.call(this,e)};var Ge=b(function(e,t){var n,r;n=function(e){var t,n=[],r=Object.keys,a={},i={},o=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,c="</span>",d={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},_="of and for in not or if then".split(" ");function u(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function m(e){return e.nodeName.toLowerCase()}function p(e){return o.test(e)}function g(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function E(e){var t=[];return function e(n,r){for(var a=n.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(t.push({event:"start",offset:r,node:a}),r=e(a,r),m(a).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:a}));return r}(e,0),t}function h(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return g(e,{variants:null},t)})),e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[g(e,{starts:e.starts?g(e.starts):null})]:[e]}function S(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(S)}}function f(e,t){var n={};return"string"==typeof e?a("keyword",e):r(e).forEach(function(t){a(t,e[t])}),n;function a(e,r){t&&(r=r.toLowerCase()),r.split(" ").forEach(function(t){var r=t.split("|");n[r[0]]=[e,function(e,t){return t?Number(t):(n=e,-1!=_.indexOf(n.toLowerCase())?0:1);var n}(r[0],r[1])]})}}function T(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(e){var r,a,i={},o=[],s={},l=1;function c(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+"|").exec("").length-1+1}for(var d=0;d<e.contains.length;d++){c(a=e.contains[d],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin)}e.terminator_end&&c("end",e.terminator_end),e.illegal&&c("illegal",e.illegal);var _=o.map(function(e){return e[1]});return r=n(function(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,i="",o=0;o<e.length;o++){var s=a+=1,l=t(e[o]);for(o>0&&(i+=n),i+="(";l.length>0;){var c=r.exec(l);if(null==c){i+=l;break}i+=l.substring(0,c.index),l=l.substring(c.index+c[0].length),"\\"==c[0][0]&&c[1]?i+="\\"+String(Number(c[1])+s):(i+=c[0],"("==c[0]&&a++)}i+=")"}return i}(_,"|"),!0),s.lastIndex=0,s.exec=function(t){var n;if(0===o.length)return null;r.lastIndex=s.lastIndex;var a=r.exec(t);if(!a)return null;for(var l=0;l<a.length;l++)if(void 0!=a[l]&&void 0!=i[""+l]){n=i[""+l];break}return"string"==typeof n?(a.type=n,a.extra=[e.illegal,e.terminator_end]):(a.type="begin",a.rule=n),a},s}!function a(i,o){i.compiled||(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords&&(i.keywords=f(i.keywords,e.case_insensitive)),i.lexemesRe=n(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=n(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return h("self"===e?i:e)})),i.contains.forEach(function(e){a(e,i)}),i.starts&&a(i.starts,o),i.terminators=r(i))}(e)}function b(e,t,n,r){function i(e,t){var n=E.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function o(e,t,n,r){if(!n&&""===t)return"";if(!e)return t;var a='<span class="'+(r?"":d.classPrefix);return(a+=e+'">')+t+(n?"":c)}function s(){N+=null!=S.subLanguage?function(){var e="string"==typeof S.subLanguage;if(e&&!a[S.subLanguage])return u(v);var t=e?b(S.subLanguage,v,!0,f[S.subLanguage]):C(v,S.subLanguage.length?S.subLanguage:void 0);return S.relevance>0&&(R+=t.relevance),e&&(f[S.subLanguage]=t.top),o(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!S.keywords)return u(v);for(r="",t=0,S.lexemesRe.lastIndex=0,n=S.lexemesRe.exec(v);n;)r+=u(v.substring(t,n.index)),(e=i(S,n))?(R+=e[1],r+=o(e[0],u(n[0]))):r+=u(n[0]),t=S.lexemesRe.lastIndex,n=S.lexemesRe.exec(v);return r+u(v.substr(t))}(),v=""}function l(e){N+=e.className?o(e.className,"",!0):"",S=Object.create(e,{parent:{value:S}})}function _(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?v+=t:(n.excludeBegin&&(v+=t),s(),n.returnBegin||n.excludeBegin||(v=t)),l(n),n.returnBegin?0:t.length}function m(e){var t=e[0],n=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(S,t);if(n){var r=S;r.skip?v+=t:(r.returnEnd||r.excludeEnd||(v+=t),s(),r.excludeEnd&&(v=t));do{S.className&&(N+=c),S.skip||S.subLanguage||(R+=S.relevance),S=S.parent}while(S!==n.parent);return n.starts&&(n.endSameAsBegin&&(n.starts.endRe=n.endRe),l(n.starts)),r.returnEnd?0:t.length}}var p={};function g(e,r){var a=r&&r[0];if(v+=e,null==a)return s(),0;if("begin"==p.type&&"end"==r.type&&p.index==r.index&&""===a)return v+=t.slice(r.index,r.index+1),1;if(p=r,"begin"===r.type)return _(r);if("illegal"===r.type&&!n)throw new Error('Illegal lexeme "'+a+'" for mode "'+(S.className||"<unnamed>")+'"');if("end"===r.type){var i=m(r);if(void 0!=i)return i}return v+=a,a.length}var E=A(e);if(!E)throw new Error('Unknown language: "'+e+'"');T(E);var h,S=r||E,f={},N="";for(h=S;h!==E;h=h.parent)h.className&&(N=o(h.className,"",!0)+N);var v="",R=0;try{for(var O,y,I=0;S.terminators.lastIndex=I,O=S.terminators.exec(t);)y=g(t.substring(I,O.index),O),I=O.index+y;for(g(t.substr(I)),h=S;h.parent;h=h.parent)h.className&&(N+=c);return{relevance:R,value:N,illegal:!1,language:e,top:S}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:u(t)};throw e}}function C(e,t){t=t||d.languages||r(a);var n={relevance:0,value:u(e)},i=n;return t.filter(A).filter(O).forEach(function(t){var r=b(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)}),i.language&&(n.second_best=i),n}function N(e){return d.tabReplace||d.useBR?e.replace(l,function(e,t){return d.useBR&&"\n"===e?"<br>":d.tabReplace?t.replace(/\t/g,d.tabReplace):""}):e}function v(e){var t,r,a,o,l,c=function(e){var t,n,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=s.exec(i))return A(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t<r;t++)if(p(a=i[t])||A(a))return a}(e);p(c)||(d.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,l=t.textContent,a=c?b(c,l,!0):C(l),(r=E(t)).length&&((o=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=function(e,t,r){var a=0,i="",o=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:"start"===t[0].event?e:t:e.length?e:t}function l(e){i+="<"+m(e)+n.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+u(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function c(e){i+="</"+m(e)+">"}function d(e){("start"===e.event?l:c)(e.node)}for(;e.length||t.length;){var _=s();if(i+=u(r.substring(a,_[0].offset)),a=_[0].offset,_===e){o.reverse().forEach(c);do{d(_.splice(0,1)[0]),_=s()}while(_===e&&_.length&&_[0].offset===a);o.reverse().forEach(l)}else"start"===_[0].event?o.push(_[0].node):o.pop(),d(_.splice(0,1)[0])}return i+u(r.substr(a))}(r,E(o),l)),a.value=N(a.value),e.innerHTML=a.value,e.className=function(e,t,n){var r=t?i[t]:n,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,c,a.language),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function R(){if(!R.called){R.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,v)}}function A(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function O(e){var t=A(e);return t&&!t.disableAutodetect}return e.highlight=b,e.highlightAuto=C,e.fixMarkup=N,e.highlightBlock=v,e.configure=function(e){d=g(d,e)},e.initHighlighting=R,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",R,!1),addEventListener("load",R,!1)},e.registerLanguage=function(t,n){var r=a[t]=n(e);S(r),r.rawDefinition=n.bind(null,e),r.aliases&&r.aliases.forEach(function(e){i[e]=t})},e.listLanguages=function(){return r(a)},e.getLanguage=A,e.autoDetection=O,e.inherit=g,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var a=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e},r="object"==typeof window&&window||"object"==typeof self&&self,t.nodeType?r&&(r.hljs=n({})):n(t)}),He=b(function(e){!function(){var t;function n(e){for(var t,n,r,a,i=1,o=[].slice.call(arguments),s=0,l=e.length,c="",d=!1,_=!1,u=function(){return o[i++]},m=function(){for(var n="";/\d/.test(e[s]);)n+=e[s++],t=e[s];return n.length>0?parseInt(n):null};s<l;++s)if(t=e[s],d)switch(d=!1,"."==t?(_=!1,t=e[++s]):"0"==t&&"."==e[s+1]?(_=!0,t=e[s+=2]):_=!0,a=m(),t){case"b":c+=parseInt(u(),10).toString(2);break;case"c":"string"==typeof(n=u())||n instanceof String?c+=n:c+=String.fromCharCode(parseInt(n,10));break;case"d":c+=parseInt(u(),10);break;case"f":r=String(parseFloat(u()).toFixed(a||6)),c+=_?r:r.replace(/^0/,"");break;case"j":c+=JSON.stringify(u());break;case"o":c+="0"+parseInt(u(),10).toString(8);break;case"s":c+=u();break;case"x":c+="0x"+parseInt(u(),10).toString(16);break;case"X":c+="0x"+parseInt(u(),10).toString(16).toUpperCase();break;default:c+=t}else"%"===t?d=!0:c+=t;return c}(t=e.exports=n).format=n,t.vsprintf=function(e,t){return n.apply(null,[e].concat(t))},"undefined"!=typeof console&&"function"==typeof console.log&&(t.printf=function(){console.log(n.apply(null,arguments))})}()}),Ye=ze(Error),Ve=Ye;function ze(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=He.apply(null,arguments)),new e(t)}}function qe(){}Ye.eval=ze(EvalError),Ye.range=ze(RangeError),Ye.reference=ze(ReferenceError),Ye.syntax=ze(SyntaxError),Ye.type=ze(TypeError),Ye.uri=ze(URIError),Ye.create=ze,qe.prototype=Ge;var Ke=new qe,We=Ke;Ke.highlight=function(e,t,n){var r=(n||{}).prefix;null!==r&&void 0!==r||(r=je);return mt(_t(e,t,!0,r))},Ke.highlightAuto=ct,Ke.registerLanguage=function(e,t){var n=t(Ke);n.rawDefinition=t.bind(null,Ke),st[e]=n,ot.push(e),n.aliases&&dt(e,n.aliases)},Ke.listLanguages=function(){return ot.concat()},Ke.registerAlias=dt,Ke.getLanguage=pt;var Qe=Ge.inherit,$e={}.hasOwnProperty,je="hljs-",Xe="case_insensitive",Ze="cached_variants",Je="terminator_end",et=" ",tt="|",nt="(",rt=")",at="\\",it=["of","and","for","in","not","or","if","then"],ot=[],st={},lt={};function ct(e,t){var n,r,a,i,o=t||{},s=o.subset||ot,l=o.prefix,c=s.length,d=-1;if(null!==l&&void 0!==l||(l=je),"string"!=typeof e)throw Ve("Expected `string` for value, got `%s`",e);for(r=mt({}),n=mt({});++d<c;)pt(i=s[d])&&((a=mt(_t(i,e,!1,l))).language=i,a.relevance>r.relevance&&(r=a),a.relevance>n.relevance&&(r=n,n=a));return r.language&&(n.secondBest=r),n}function dt(e,t){var n,r,a,i,o=e;for(n in t&&((o={})[e]=t),o)for(a=(r="string"==typeof(r=o[n])?[r]:r).length,i=-1;++i<a;)lt[r[i]]=n}function _t(e,t,n,r,a){var i,o,s,l,c,d,_,u,m={},p={},g=[],E="",h=0;if("string"!=typeof e)throw Ve("Expected `string` for name, got `%s`",e);if("string"!=typeof t)throw Ve("Expected `string` for value, got `%s`",t);if(i=pt(e),s=o=a||i,l=u=[],!i)throw Ve("Unknown language: `%s` is not registered",e);!function(e){function t(a,i){a.compiled||(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords&&(a.keywords=function(e,t){var n,r={};if("string"==typeof e)a("keyword",e);else for(n in e)a(n,e[n]);return r;function a(e,n){var a=t?n.toLowerCase():n;!function(e,t){var n,a=t.length,i=-1;for(;++i<a;)n=t[i].split(tt),r[n[0]]=[e,Number(n[1])||(o=n[0],-1!==it.indexOf(o.toLowerCase()))?0:1];var o}(e,a.split(et))}}(a.keywords,e[Xe])),a.lexemesRe=n(a.lexemes||/\w+/,!0),i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(et).join(tt)+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a[Je]=r(a.end)||"",a.endsWithParent&&i[Je]&&(a[Je]+=(a.end?tt:"")+i[Je])),a.illegal&&(a.illegalRe=n(a.illegal)),void 0===a.relevance&&(a.relevance=1),a.contains=function(e,n){var r,a=[],i=e.length,o=-1;for(;++o<i;)r=e[o],a=a.concat(ut("self"===r?n:r));i=a.length,o=-1;for(;++o<i;)t(a[o],n);return a}(a.contains||[],a),a.starts&&t(a.starts,i),a.terminators=function(e){var t,a,i={},o=[],s={},l=1,c=e.contains,d=c.length,_=-1,u=[];for(;++_<d;)m(a=c[_],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin);e[Je]&&m("end",e[Je]);e.illegal&&m("illegal",e.illegal);d=o.length,_=-1;for(;++_<d;)u[_]=o[_][1];return t=n(function(e,t){for(var n,a,i,o,s=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9]\d*)|\\./,l=0,c="",d=e.length,_=-1;++_<d;){for(n=e[_],i=r(n),a=l+=1,0!==_&&(c+=t),c+=nt;i.length>0;){if(null===(o=s.exec(i))){c+=i;break}c+=i.slice(0,o.index),i=i.slice(o.index+o[0].length),o[0][0]===at&&o[1]?c+=at+String(Number(o[1])+a):(c+=o[0],o[0]===nt&&l++)}c+=rt}return c}(u,tt),!0),s={lastIndex:0,exec:function(n){var r,a,l,c;if(0===o.length)return null;if(t.lastIndex=s.lastIndex,!(c=t.exec(n)))return null;for(r=c.length,a=-1;++a<r;)if(void 0!==c[a]&&void 0!==i[a]){l=i[a];break}return"string"==typeof l?(c.type=l,c.extra=[e.illegal,e.terminator_end]):(c.type="begin",c.rule=l),c}};function m(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+tt).exec("").length}}(a))}function n(t,n){return new RegExp(r(t),"m"+(e[Xe]?"i":"")+(n?"g":""))}function r(e){return e&&e.source||e}t(e)}(i);try{for(o.terminators.lastIndex=0,c=0,_=o.terminators.exec(t);_;)d=T(t.slice(c,_.index),_),c=_.index+d,o.terminators.lastIndex=c,_=o.terminators.exec(t);for(T(t.slice(c)),s=o;s.parent;)s.className&&y(),s=s.parent;return{relevance:h,value:l,illegal:!1,language:e,top:o}}catch(e){if(-1===e.message.indexOf("Illegal"))throw e;return{relevance:0,illegal:!0,value:v(t,[])}}function S(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?E+=t:(n.excludeBegin&&(E+=t),N(C(),l),n.returnBegin||n.excludeBegin||(E=t)),b(n),n.returnBegin?0:t.length}function f(e){var n=e[0],r=t.slice(e.index),a=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(o,r);if(a){var i=o;i.skip?E+=n:(i.returnEnd||i.excludeEnd||(E+=n),N(C(),l),i.excludeEnd&&(E=n));do{o.className&&y(),o.skip||o.subLanguage||(h+=o.relevance),o=o.parent}while(o!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),b(a.starts)),i.returnEnd?0:n.length}}function T(e,r){var a,i=r&&r[0];if(E+=e,void 0===i)return N(C(),l),0;if("begin"===m.type&&"end"===r.type&&m.index===r.index&&""===i)return E+=t.slice(r.index,r.index+1),1;if(m=r,"begin"===r.type)return S(r);if("end"===r.type&&void 0!==(a=f(r)))return a;if("illegal"===r.type&&!n)throw Ve('Illegal lexeme "%s" for mode "%s"',i,o.className||"<unnamed>");return E+=i,i.length}function b(e){var t;e.className&&(t=A(e.className,[])),t&&(l.push(t),g.push(l),l=t.children),o=Object.create(e,{parent:{value:o}})}function C(){var e=o.subLanguage?function(){var e,t="string"==typeof o.subLanguage;if(t&&!st[o.subLanguage])return v(E,[]);e=t?_t(o.subLanguage,E,!0,r,p[o.subLanguage]):ct(E,{subset:0===o.subLanguage.length?void 0:o.subLanguage,prefix:r});if(!e.language)return[R(E)];o.relevance>0&&(h+=e.relevance);t&&(p[o.subLanguage]=e.top);return[A(e.language,e.value,!0)]}():function(){var e,t,n,r,a=[];if(!o.keywords)return v(E,a);e=0,o.lexemesRe.lastIndex=0,t=o.lexemesRe.exec(E);for(;t;)v(E.slice(e,t.index),a),(r=O(o,t))?(h+=r[1],n=A(r[0],[]),a.push(n),v(t[0],n.children)):v(t[0],a),e=o.lexemesRe.lastIndex,t=o.lexemesRe.exec(E);return v(E.slice(e),a),a}();return E="",e}function N(e,t){for(var n,r=e.length,a=-1;++a<r;)"text"===(n=e[a]).type?v(n.value,t):t.push(n)}function v(e,t){var n;return e&&((n=t[t.length-1])&&"text"===n.type?n.value+=e:t.push(R(e))),t}function R(e){return{type:"text",value:e}}function A(e,t,n){return{type:"element",tagName:"span",properties:{className:[(n?"":r)+e]},children:t}}function O(e,t){var n=t[0];return i[Xe]&&(n=n.toLowerCase()),$e.call(e.keywords,n)&&e.keywords[n]}function y(){l=g.pop()||u}}function ut(e){var t,n,r,a;if(e.variants&&!e[Ze]){for(t=(r=e.variants).length,n=-1,a=[];++n<t;)a[n]=Qe(e,{variants:null},r[n]);e[Ze]=a}return e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[Qe(e,{starts:e.starts?Qe(e.starts):null})]:[e]}function mt(e){return{relevance:e.relevance||0,language:e.language||null,value:e.value||[]}}function pt(e){return e=e.toLowerCase(),st[e]||st[lt[e]]}var gt=We;function Et({include:e,exclude:t}={}){return e=>E(e,"code",n);function n(n){let{lang:r,data:a}=n;!r||e&&-1===e.indexOf(r)||t&&-1!==t.indexOf(r)||(a||(a={},n.data=a),a.hProperties||(a.hProperties={}),a.hChildren=gt.highlight(r,n.value).value,a.hProperties.className=["hljs",...a.hProperties.className||[],"language-"+r])}}We.registerLanguage("1c",function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",a=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[s]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[a,i,o]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},a,i,o]}}),We.registerLanguage("abnf",function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),a={className:"attribute",begin:t+"(?=\\s*=)"};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[a,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("accesslog",function(e){var t=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{contains:[{className:"number",begin:"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b",relevance:5},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"('+t.join("|")+")",end:'"',keywords:t.join(" "),illegal:"\\n",relevance:5,contains:[{begin:"HTTP/[12]\\.\\d",relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:"\\n",relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n",relevance:0},{className:"string",begin:'"Mozilla/\\d\\.\\d \\(',end:'"',illegal:"\\n",relevance:3},{className:"string",begin:'"',end:'"',illegal:"\\n",relevance:0}]}}),We.registerLanguage("actionscript",function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}}),We.registerLanguage("ada",function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}}),We.registerLanguage("angelscript",function(e){var t={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},r={className:"keyword",begin:"<",end:">",contains:[t,n]};return t.contains=[r],n.contains=[r],{aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{beginKeywords:"interface namespace",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}),We.registerLanguage("apache",function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}}),We.registerLanguage("applescript",function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),a=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(a),illegal:"//|->|=>|\\[\\["}}),We.registerLanguage("arcade",function(e){var t="[A-Za-z_][0-9A-Za-z_]*",n={keyword:"if for while var new function do return void else break",literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined",built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year "},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var o=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["arcade"],keywords:n,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"},r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}),We.registerLanguage("cpp",function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",o={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},s=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:o,illegal:"</",contains:s.concat([a,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:o,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:o},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:o,contains:s.concat([{begin:/\(/,end:/\)/,keywords:o,contains:s.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:o,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t,{begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:a,strings:n,keywords:o}}}),We.registerLanguage("arduino",function(e){var t="boolean byte word String",n="setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",r="DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW",a=e.getLanguage("cpp").rawDefinition(),i=a.keywords;return i.keyword+=" "+t,i.literal+=" "+r,i.built_in+=" "+n,a}),We.registerLanguage("armasm",function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}}),We.registerLanguage("xml",function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}),We.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}),We.registerLanguage("aspectj",function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("autohotkey",function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}),We.registerLanguage("autoit",function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,a,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,a]}]}]}}),We.registerLanguage("avrasm",function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}),We.registerLanguage("awk",function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}}),We.registerLanguage("axapta",function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}}),We.registerLanguage("bash",function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}),We.registerLanguage("basic",function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}}),We.registerLanguage("bnf",function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}}),We.registerLanguage("brainfuck",function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|\-\-)/,contains:[t]},t]}}),We.registerLanguage("cal",function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,a]}].concat(n)},o={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,a,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,o,i]}}),We.registerLanguage("capnproto",function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}),We.registerLanguage("ceylon",function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}}),We.registerLanguage("clean",function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}}),We.registerLanguage("clojure",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b(true|false|nil)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,c.contains=[s],{aliases:["clj"],illegal:/\S/,contains:[_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("clojure-repl",function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/,subLanguage:"clojure"}}]}}),We.registerLanguage("cmake",function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}),We.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("coq",function(e){return{keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}),We.registerLanguage("cos",function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}}),We.registerLanguage("crmsh",function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}}),We.registerLanguage("crystal",function(e){var t="(_*[ui](8|16|32|64|128))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",r="[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",a={keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},i={className:"subst",begin:"#{",end:"}",keywords:a},o={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:a};function s(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var l={className:"string",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%[Qwi]?\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%[Qwi]?{",end:"}",contains:s("{","}")},{begin:"%[Qwi]?<",end:">",contains:s("<",">")},{begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},c={className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%q{",end:"}",contains:s("{","}")},{begin:"%q<",end:">",contains:s("<",">")},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},d={begin:"(?!%})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*",keywords:"case if select unless until when while",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},_=[o,l,c,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"%r\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%r{",end:"}",contains:s("{","}")},{begin:"%r<",end:">",contains:s("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},d,{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{beginKeywords:"annotation",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[l,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)"},{begin:"\\b([1-9][0-9_]*|0)"+t}],relevance:0}];return i.contains=_,o.contains=_.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:a,contains:_}}),We.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},a=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},c=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],o.contains=[c,s,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,n,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[d,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}),We.registerLanguage("csp",function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}),We.registerLanguage("css",function(e){var t={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}),We.registerLanguage("d",function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},a={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},o={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},o,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},a,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}),We.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}),We.registerLanguage("dart",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:"\\${",end:"}"}],keywords:"true false null this is new super"},r={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[e.C_NUMBER_MODE,r];return{keywords:{keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:"Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window"},contains:[r,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///+\\s*","$",{contains:[{subLanguage:"markdown",begin:".",end:"$"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}),We.registerLanguage("delphi",function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},a={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},o={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},s={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[a,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[a,i,e.NUMBER_MODE,o,s,r].concat(n)}}),We.registerLanguage("diff",function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}),We.registerLanguage("django",function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}}),We.registerLanguage("dns",function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}}),We.registerLanguage("dockerfile",function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}),We.registerLanguage("dos",function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}}),We.registerLanguage("dsconfig",function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}}),We.registerLanguage("dts",function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},o={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},s={className:"params",begin:"<",end:">",contains:[n,a]},l={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}}),We.registerLanguage("dust",function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}}),We.registerLanguage("ebnf",function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("elixir",function(e){var t="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},o=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[a,e.HASH_COMMENT_MODE,o,i,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[a,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=s,{lexemes:t,keywords:n,contains:s}}),We.registerLanguage("elm",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}),We.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,o]}]}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,a,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[a,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);o.contains=c,l.contains=c;var d=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(d).concat(c)}}),We.registerLanguage("erb",function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("erlang-repl",function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}),We.registerLanguage("erlang",function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},a=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},o={begin:"fun\\s+"+t+"/\\d+"},s={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},l={begin:"{",end:"}",relevance:0},c={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},d={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},_={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},u={beginKeywords:"fun receive if try case",end:"end",keywords:r};u.contains=[a,o,e.inherit(e.APOS_STRING_MODE,{className:""}),u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];var m=[a,o,u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];s.contains[1].contains=m,l.contains=m,_.contains[1].contains=m;var p={className:"params",begin:"\\(",end:"\\)",contains:m};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[p,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:m}},a,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[p]},i,e.QUOTE_STRING_MODE,_,c,d,l,{begin:/\.$/}]}}),We.registerLanguage("excel",function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}}),We.registerLanguage("fix",function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}),We.registerLanguage("flix",function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}}),We.registerLanguage("fortran",function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("fsharp",function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}}),We.registerLanguage("gams",function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},a={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,a,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}}),We.registerLanguage("gauss",function(e){var t={keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR"},n=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n]},a={begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},i=[{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,a]}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},s=function(t,r,a){var s=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0,contains:[].concat(i)},a||{});return s.contains.push(o),s.contains.push(e.C_NUMBER_MODE),s.contains.push(e.C_BLOCK_COMMENT_MODE),s.contains.push(n),s},l={className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},c={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},d={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t,relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},_={begin:/\(/,end:/\)/,relevance:0,keywords:{built_in:t.built_in,literal:t.literal},contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,l,d,c,"self"]};return d.contains.push(_),{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,c,r,{className:"keyword",begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/},s("proc keyword",";"),s("fn","="),{beginKeywords:"for threadfor",end:/;/,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,n,_]},{variants:[{begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},d,a]}}),We.registerLanguage("gcode",function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}}),We.registerLanguage("gherkin",function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}}),We.registerLanguage("glsl",function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}}),We.registerLanguage("gml",function(e){return{aliases:["gml","GML"],case_insensitive:!1,keywords:{keywords:"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion",built_in:"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height",literal:"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version timezone_local timezone_utc gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters",symbol:"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}}),We.registerLanguage("golo",function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("gradle",function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}}),We.registerLanguage("groovy",function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}}),We.registerLanguage("haml",function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}}),We.registerLanguage("handlebars",function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup"},n={begin:/".*?"|'.*?'|\[.*?\]|\w+/},r=e.inherit(n,{keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.inherit(n,{relevance:0})]}}),a=e.inherit(r,{className:"name"}),i=e.inherit(r,{relevance:0});return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[a],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[a]},{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[a]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,keywords:t,contains:[i]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t,contains:[i]}]}}),We.registerLanguage("haskell",function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},a={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[a,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,a,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[a,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[a,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,a,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}}),We.registerLanguage("haxe",function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}}),We.registerLanguage("hsp",function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("htmlbars",function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}}),We.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}),We.registerLanguage("hy",function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},_,a,l,c,i,d,s,r,o]}}),We.registerLanguage("inform7",function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}}),We.registerLanguage("ini",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_\.-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_\.-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}}),We.registerLanguage("irpf90",function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}}),We.registerLanguage("isbl",function(e){var t="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n={className:"number",begin:e.NUMBER_RE,relevance:0},r={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},a={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},i={variants:[{className:"comment",begin:"//",end:"$",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]},{className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]}]},o={keyword:"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",literal:"null true false nil "},s={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,keywords:o,relevance:0},l={className:"type",begin:":[ \\t]*("+"IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ".trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},c={className:"variable",lexemes:t,keywords:o,begin:t,relevance:0,contains:[l,s]};return{aliases:["isbl"],case_insensitive:!0,lexemes:t,keywords:o,illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\)$",returnBegin:!0,lexemes:t,keywords:o,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[{className:"title",lexemes:t,keywords:{built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр "},begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\(",returnBegin:!0,excludeEnd:!0},s,c,r,n,i]},l,s,c,r,n,i]}}),We.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},o={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"css"}},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,r,e.REGEXP_MODE];var l=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:l}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin:/</,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:l}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}),We.registerLanguage("jboss-cli",function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}}),We.registerLanguage("json",function(e){var t={literal:"true false null"},n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],r=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:r,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(a,{begin:/:/})].concat(n),illegal:"\\S"},o={begin:"\\[",end:"\\]",contains:[e.inherit(a)],illegal:"\\S"};return r.push(i,o),n.forEach(function(e){r.push(e)}),{contains:r,keywords:t,illegal:"\\S"}}),We.registerLanguage("julia",function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],a.contains=r.contains,r}),We.registerLanguage("julia-repl",function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}}),We.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[a,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,r]}]};r.contains.push(i);var o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},_=d;return _.variants[1].contains=[d],d.variants[1].contains=[_],{aliases:["kt"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,o,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,o,s,i,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},o,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}}),We.registerLanguage("lasso",function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),a={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},o={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},s=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},a,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},a,i].concat(s)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(s)}}),We.registerLanguage("ldif",function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}}),We.registerLanguage("leaf",function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}}),We.registerLanguage("less",function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],a=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a("'"),a('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),o,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=r.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},c={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},d={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},_={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},u={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,_,c,u),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}}),We.registerLanguage("lisp",function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o=e.COMMENT(";","$",{relevance:0}),s={begin:"\\*",end:"\\*"},l={className:"symbol",begin:"[:&]"+t},c={begin:t,relevance:0},d={begin:"\\|[^]*?\\|"},_={contains:[a,i,s,l,{begin:"\\(",end:"\\)",contains:["self",r,i,a,c]},c],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},u={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},m={begin:"\\(\\s*",end:"\\)"},p={endsWithParent:!0,relevance:0};return m.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},p],p.contains=[_,u,m,r,a,i,o,s,l,d,c],{illegal:/\S/,contains:[a,{className:"meta",begin:"^#!",end:"$"},r,i,o,_,u,m,c]}}),We.registerLanguage("livecodeserver",function(e){var t={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),a=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[a,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}}),We.registerLanguage("livescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},o=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[a,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];a.contains=o;var s={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{begin:"(#=>|=>|\\|>>|-?->|\\!->)"},{className:"function",contains:[r,s],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("llvm",function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}}),We.registerLanguage("lsl",function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")],relevance:0},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}),We.registerLanguage("lua",function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}),We.registerLanguage("makefile",function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,a,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}}),We.registerLanguage("mathematica",function(e){return{aliases:["mma","wl"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID",contains:[e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("matlab",function(e){var t={relevance:0,contains:[{begin:"('|\\.')+"}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{className:"built_in",begin:/true|false/,relevance:0,starts:t},{begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",begin:e.C_NUMBER_RE,relevance:0,starts:t},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|}|\)/,relevance:0,starts:t},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}],starts:t},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")]}}),We.registerLanguage("maxima",function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}}),We.registerLanguage("mel",function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("mercury",function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}}),We.registerLanguage("mipsasm",function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#](?!s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}}),We.registerLanguage("mizar",function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}}),We.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},a={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,a],o=[a,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=o,r.contains=o,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:o}}),We.registerLanguage("mojolicious",function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}}),We.registerLanguage("monkey",function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}}),We.registerLanguage("moonscript",function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}),We.registerLanguage("n1ql",function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("nginx",function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}}),We.registerLanguage("nimrod",function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("nix",function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},a=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=a,{aliases:["nixos"],keywords:t,contains:a}}),We.registerLanguage("nsis",function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},a={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},a,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}}),We.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}),We.registerLanguage("ocaml",function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("openscad",function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},a]}}),We.registerLanguage("oxygene",function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),a={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},o={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[a,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,a,i,e.NUMBER_MODE,o,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[a,i,n,r,e.C_LINE_COMMENT_MODE,o]}]}}),We.registerLanguage("parser3",function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}}),We.registerLanguage("pf",function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}}),We.registerLanguage("pgsql",function(e){var t=e.COMMENT("--","$"),n="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",r=n.trim().split(" ").map(function(e){return e.split("|")[0]}).join("|"),a="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAPLEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILYINET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ".trim().split(" ").map(function(e){return e.split("|")[0]}).join("|");return{aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:e.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+a+")\\s*\\("},{begin:"\\.("+r+")\\b"},{begin:"\\b("+r+")\\s+PATH\\b",keywords:{keyword:"PATH",type:n.replace("PATH ","")}},{className:"type",begin:"\\b("+r+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},{begin:"\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",endSameAsBegin:!0,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]},{begin:'"',end:'"',contains:[{begin:'""'}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}),We.registerLanguage("php",function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,a]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,a]}}),We.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}}),We.registerLanguage("pony",function(e){return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("powershell",function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},a=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps","ps1"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catchValidateNoCircleInNodeResources ValidateNodeExclusiveResources ValidateNodeManager ValidateNodeResources ValidateNodeResourceSource ValidateNoNameNodeResources ThrowError IsHiddenResourceIsPatternMatched ",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct Add-CIDatastore Add-KeyManagementServer Add-NodeKeys Add-NsxDynamicCriteria Add-NsxDynamicMemberSet Add-NsxEdgeInterfaceAddress Add-NsxFirewallExclusionListMember Add-NsxFirewallRuleMember Add-NsxIpSetMember Add-NsxLicense Add-NsxLoadBalancerPoolMember Add-NsxLoadBalancerVip Add-NsxSecondaryManager Add-NsxSecurityGroupMember Add-NsxSecurityPolicyRule Add-NsxSecurityPolicyRuleGroup Add-NsxSecurityPolicyRuleService Add-NsxServiceGroupMember Add-NsxTransportZoneMember Add-PassthroughDevice Add-VDSwitchPhysicalNetworkAdapter Add-VDSwitchVMHost Add-VMHost Add-VMHostNtpServer Add-VirtualSwitchPhysicalNetworkAdapter Add-XmlElement Add-vRACustomForm Add-vRAPrincipalToTenantRole Add-vRAReservationNetwork Add-vRAReservationStorage Clear-NsxEdgeInterface Clear-NsxManagerTimeSettings Compress-Archive Connect-CIServer Connect-CisServer Connect-HCXServer Connect-NIServer Connect-NsxLogicalSwitch Connect-NsxServer Connect-NsxtServer Connect-SrmServer Connect-VIServer Connect-Vmc Connect-vRAServer Connect-vRNIServer ConvertFrom-Markdown ConvertTo-MOFInstance Copy-DatastoreItem Copy-HardDisk Copy-NsxEdge Copy-VDisk Copy-VMGuestFile Debug-Runspace Disable-NsxEdgeSsh Disable-RunspaceDebug Disable-vRNIDataSource Disconnect-CIServer Disconnect-CisServer Disconnect-HCXServer Disconnect-NsxLogicalSwitch Disconnect-NsxServer Disconnect-NsxtServer Disconnect-SrmServer Disconnect-VIServer Disconnect-Vmc Disconnect-vRAServer Disconnect-vRNIServer Dismount-Tools Enable-NsxEdgeSsh Enable-RunspaceDebug Enable-vRNIDataSource Expand-Archive Export-NsxObject Export-SpbmStoragePolicy Export-VApp Export-VDPortGroup Export-VDSwitch Export-VMHostProfile Export-vRAIcon Export-vRAPackage Find-Command Find-DscResource Find-Module Find-NsxWhereVMUsed Find-Package Find-PackageProvider Find-RoleCapability Find-Script Format-Hex Format-VMHostDiskPartition Format-XML Generate-VersionInfo Get-AdvancedSetting Get-AlarmAction Get-AlarmActionTrigger Get-AlarmDefinition Get-Annotation Get-CDDrive Get-CIAccessControlRule Get-CIDatastore Get-CINetworkAdapter Get-CIRole Get-CIUser Get-CIVApp Get-CIVAppNetwork Get-CIVAppStartRule Get-CIVAppTemplate Get-CIVM Get-CIVMTemplate Get-CIView Get-Catalog Get-CisCommand Get-CisService Get-CloudCommand Get-Cluster Get-CompatibleVersionAddtionaPropertiesStr Get-ComplexResourceQualifier Get-ConfigurationErrorCount Get-ContentLibraryItem Get-CustomAttribute Get-DSCResourceModules Get-Datacenter Get-Datastore Get-DatastoreCluster Get-DrsClusterGroup Get-DrsRecommendation Get-DrsRule Get-DrsVMHostRule Get-DscResource Get-EdgeGateway Get-EncryptedPassword Get-ErrorReport Get-EsxCli Get-EsxTop Get-ExternalNetwork Get-FileHash Get-FloppyDrive Get-Folder Get-HAPrimaryVMHost Get-HCXAppliance Get-HCXApplianceCompute Get-HCXApplianceDVS Get-HCXApplianceDatastore Get-HCXApplianceNetwork Get-HCXContainer Get-HCXDatastore Get-HCXGateway Get-HCXInterconnectStatus Get-HCXJob Get-HCXMigration Get-HCXNetwork Get-HCXNetworkExtension Get-HCXReplication Get-HCXReplicationSnapshot Get-HCXService Get-HCXSite Get-HCXSitePairing Get-HCXVM Get-HardDisk Get-IScsiHbaTarget Get-InnerMostErrorRecord Get-InstallPath Get-InstalledModule Get-InstalledScript Get-Inventory Get-ItemPropertyValue Get-KeyManagementServer Get-KmipClientCertificate Get-KmsCluster Get-Log Get-LogType Get-MarkdownOption Get-Media Get-MofInstanceName Get-MofInstanceText Get-NetworkAdapter Get-NetworkPool Get-NfsUser Get-NicTeamingPolicy Get-NsxApplicableMember Get-NsxApplicableSecurityAction Get-NsxBackingDVSwitch Get-NsxBackingPortGroup Get-NsxCliDfwAddrSet Get-NsxCliDfwFilter Get-NsxCliDfwRule Get-NsxClusterStatus Get-NsxController Get-NsxDynamicCriteria Get-NsxDynamicMemberSet Get-NsxEdge Get-NsxEdgeBgp Get-NsxEdgeBgpNeighbour Get-NsxEdgeCertificate Get-NsxEdgeCsr Get-NsxEdgeFirewall Get-NsxEdgeFirewallRule Get-NsxEdgeInterface Get-NsxEdgeInterfaceAddress Get-NsxEdgeNat Get-NsxEdgeNatRule Get-NsxEdgeOspf Get-NsxEdgeOspfArea Get-NsxEdgeOspfInterface Get-NsxEdgePrefix Get-NsxEdgeRedistributionRule Get-NsxEdgeRouting Get-NsxEdgeStaticRoute Get-NsxEdgeSubInterface Get-NsxFirewallExclusionListMember Get-NsxFirewallGlobalConfiguration Get-NsxFirewallPublishStatus Get-NsxFirewallRule Get-NsxFirewallRuleMember Get-NsxFirewallSavedConfiguration Get-NsxFirewallSection Get-NsxFirewallThreshold Get-NsxIpPool Get-NsxIpSet Get-NsxLicense Get-NsxLoadBalancer Get-NsxLoadBalancerApplicationProfile Get-NsxLoadBalancerApplicationRule Get-NsxLoadBalancerMonitor Get-NsxLoadBalancerPool Get-NsxLoadBalancerPoolMember Get-NsxLoadBalancerStats Get-NsxLoadBalancerVip Get-NsxLogicalRouter Get-NsxLogicalRouterBgp Get-NsxLogicalRouterBgpNeighbour Get-NsxLogicalRouterBridge Get-NsxLogicalRouterBridging Get-NsxLogicalRouterInterface Get-NsxLogicalRouterOspf Get-NsxLogicalRouterOspfArea Get-NsxLogicalRouterOspfInterface Get-NsxLogicalRouterPrefix Get-NsxLogicalRouterRedistributionRule Get-NsxLogicalRouterRouting Get-NsxLogicalRouterStaticRoute Get-NsxLogicalSwitch Get-NsxMacSet Get-NsxManagerBackup Get-NsxManagerCertificate Get-NsxManagerComponentSummary Get-NsxManagerNetwork Get-NsxManagerRole Get-NsxManagerSsoConfig Get-NsxManagerSyncStatus Get-NsxManagerSyslogServer Get-NsxManagerSystemSummary Get-NsxManagerTimeSettings Get-NsxManagerVcenterConfig Get-NsxSecondaryManager Get-NsxSecurityGroup Get-NsxSecurityGroupEffectiveIpAddress Get-NsxSecurityGroupEffectiveMacAddress Get-NsxSecurityGroupEffectiveMember Get-NsxSecurityGroupEffectiveVirtualMachine Get-NsxSecurityGroupEffectiveVnic Get-NsxSecurityGroupMemberTypes Get-NsxSecurityPolicy Get-NsxSecurityPolicyHighestUsedPrecedence Get-NsxSecurityPolicyRule Get-NsxSecurityTag Get-NsxSecurityTagAssignment Get-NsxSegmentIdRange Get-NsxService Get-NsxServiceDefinition Get-NsxServiceGroup Get-NsxServiceGroupMember Get-NsxServiceProfile Get-NsxSpoofguardNic Get-NsxSpoofguardPolicy Get-NsxSslVpn Get-NsxSslVpnAuthServer Get-NsxSslVpnClientInstallationPackage Get-NsxSslVpnIpPool Get-NsxSslVpnPrivateNetwork Get-NsxSslVpnUser Get-NsxTransportZone Get-NsxUserRole Get-NsxVdsContext Get-NsxtPolicyService Get-NsxtService Get-OSCustomizationNicMapping Get-OSCustomizationSpec Get-Org Get-OrgNetwork Get-OrgVdc Get-OrgVdcNetwork Get-OvfConfiguration Get-PSCurrentConfigurationNode Get-PSDefaultConfigurationDocument Get-PSMetaConfigDocumentInstVersionInfo Get-PSMetaConfigurationProcessed Get-PSReadLineKeyHandler Get-PSReadLineOption Get-PSRepository Get-PSTopConfigurationName Get-PSVersion Get-Package Get-PackageProvider Get-PackageSource Get-PassthroughDevice Get-PositionInfo Get-PowerCLICommunity Get-PowerCLIConfiguration Get-PowerCLIHelp Get-PowerCLIVersion Get-PowerNsxVersion Get-ProviderVdc Get-PublicKeyFromFile Get-PublicKeyFromStore Get-ResourcePool Get-Runspace Get-RunspaceDebug Get-ScsiController Get-ScsiLun Get-ScsiLunPath Get-SecurityInfo Get-SecurityPolicy Get-Snapshot Get-SpbmCapability Get-SpbmCompatibleStorage Get-SpbmEntityConfiguration Get-SpbmFaultDomain Get-SpbmPointInTimeReplica Get-SpbmReplicationGroup Get-SpbmReplicationPair Get-SpbmStoragePolicy Get-Stat Get-StatInterval Get-StatType Get-Tag Get-TagAssignment Get-TagCategory Get-Task Get-Template Get-TimeZone Get-Uptime Get-UsbDevice Get-VAIOFilter Get-VApp Get-VDBlockedPolicy Get-VDPort Get-VDPortgroup Get-VDPortgroupOverridePolicy Get-VDSecurityPolicy Get-VDSwitch Get-VDSwitchPrivateVlan Get-VDTrafficShapingPolicy Get-VDUplinkLacpPolicy Get-VDUplinkTeamingPolicy Get-VDisk Get-VIAccount Get-VICommand Get-VICredentialStoreItem Get-VIEvent Get-VIObjectByVIView Get-VIPermission Get-VIPrivilege Get-VIProperty Get-VIRole Get-VM Get-VMGuest Get-VMHost Get-VMHostAccount Get-VMHostAdvancedConfiguration Get-VMHostAuthentication Get-VMHostAvailableTimeZone Get-VMHostDiagnosticPartition Get-VMHostDisk Get-VMHostDiskPartition Get-VMHostFirewallDefaultPolicy Get-VMHostFirewallException Get-VMHostFirmware Get-VMHostHardware Get-VMHostHba Get-VMHostModule Get-VMHostNetwork Get-VMHostNetworkAdapter Get-VMHostNtpServer Get-VMHostPatch Get-VMHostPciDevice Get-VMHostProfile Get-VMHostProfileImageCacheConfiguration Get-VMHostProfileRequiredInput Get-VMHostProfileStorageDeviceConfiguration Get-VMHostProfileUserConfiguration Get-VMHostProfileVmPortGroupConfiguration Get-VMHostRoute Get-VMHostService Get-VMHostSnmp Get-VMHostStartPolicy Get-VMHostStorage Get-VMHostSysLogServer Get-VMQuestion Get-VMResourceConfiguration Get-VMStartPolicy Get-VTpm Get-VTpmCSR Get-VTpmCertificate Get-VasaProvider Get-VasaStorageArray Get-View Get-VirtualPortGroup Get-VirtualSwitch Get-VmcSddcNetworkService Get-VmcService Get-VsanClusterConfiguration Get-VsanComponent Get-VsanDisk Get-VsanDiskGroup Get-VsanEvacuationPlan Get-VsanFaultDomain Get-VsanIscsiInitiatorGroup Get-VsanIscsiInitiatorGroupTargetAssociation Get-VsanIscsiLun Get-VsanIscsiTarget Get-VsanObject Get-VsanResyncingComponent Get-VsanRuntimeInfo Get-VsanSpaceUsage Get-VsanStat Get-VsanView Get-vRAApplianceServiceStatus Get-vRAAuthorizationRole Get-vRABlueprint Get-vRABusinessGroup Get-vRACatalogItem Get-vRACatalogItemRequestTemplate Get-vRACatalogPrincipal Get-vRAComponentRegistryService Get-vRAComponentRegistryServiceEndpoint Get-vRAComponentRegistryServiceStatus Get-vRAContent Get-vRAContentData Get-vRAContentType Get-vRACustomForm Get-vRAEntitledCatalogItem Get-vRAEntitledService Get-vRAEntitlement Get-vRAExternalNetworkProfile Get-vRAGroupPrincipal Get-vRAIcon Get-vRANATNetworkProfile Get-vRANetworkProfileIPAddressList Get-vRANetworkProfileIPRangeSummary Get-vRAPackage Get-vRAPackageContent Get-vRAPropertyDefinition Get-vRAPropertyGroup Get-vRARequest Get-vRARequestDetail Get-vRAReservation Get-vRAReservationComputeResource Get-vRAReservationComputeResourceMemory Get-vRAReservationComputeResourceNetwork Get-vRAReservationComputeResourceResourcePool Get-vRAReservationComputeResourceStorage Get-vRAReservationPolicy Get-vRAReservationTemplate Get-vRAReservationType Get-vRAResource Get-vRAResourceAction Get-vRAResourceActionRequestTemplate Get-vRAResourceMetric Get-vRAResourceOperation Get-vRAResourceType Get-vRARoutedNetworkProfile Get-vRAService Get-vRAServiceBlueprint Get-vRASourceMachine Get-vRAStorageReservationPolicy Get-vRATenant Get-vRATenantDirectory Get-vRATenantDirectoryStatus Get-vRATenantRole Get-vRAUserPrincipal Get-vRAUserPrincipalGroupMembership Get-vRAVersion Get-vRNIAPIVersion Get-vRNIApplication Get-vRNIApplicationTier Get-vRNIDataSource Get-vRNIDataSourceSNMPConfig Get-vRNIDatastore Get-vRNIDistributedSwitch Get-vRNIDistributedSwitchPortGroup Get-vRNIEntity Get-vRNIEntityName Get-vRNIFirewallRule Get-vRNIFlow Get-vRNIHost Get-vRNIHostVMKNic Get-vRNIIPSet Get-vRNIL2Network Get-vRNINSXManager Get-vRNINodes Get-vRNIProblem Get-vRNIRecommendedRules Get-vRNIRecommendedRulesNsxBundle Get-vRNISecurityGroup Get-vRNISecurityTag Get-vRNIService Get-vRNIServiceGroup Get-vRNIVM Get-vRNIVMvNIC Get-vRNIvCenter Get-vRNIvCenterCluster Get-vRNIvCenterDatacenter Get-vRNIvCenterFolder Grant-NsxSpoofguardNicApproval Import-CIVApp Import-CIVAppTemplate Import-NsxObject Import-PackageProvider Import-PowerShellDataFile Import-SpbmStoragePolicy Import-VApp Import-VMHostProfile Import-vRAContentData Import-vRAIcon Import-vRAPackage Initialize-ConfigurationRuntimeState Install-Module Install-NsxCluster Install-Package Install-PackageProvider Install-Script Install-VMHostPatch Invoke-DrsRecommendation Invoke-NsxCli Invoke-NsxClusterResolveAll Invoke-NsxManagerSync Invoke-NsxRestMethod Invoke-NsxWebRequest Invoke-VMHostProfile Invoke-VMScript Invoke-XpathQuery Invoke-vRADataCollection Invoke-vRARestMethod Invoke-vRATenantDirectorySync Invoke-vRNIRestMethod Join-String Mount-Tools Move-Cluster Move-Datacenter Move-Datastore Move-Folder Move-HardDisk Move-Inventory Move-NsxSecurityPolicyRule Move-ResourcePool Move-Template Move-VApp Move-VDisk Move-VM Move-VMHost New-AdvancedSetting New-AlarmAction New-AlarmActionTrigger New-CDDrive New-CIAccessControlRule New-CIVApp New-CIVAppNetwork New-CIVAppTemplate New-CIVM New-Cluster New-CustomAttribute New-Datacenter New-Datastore New-DatastoreCluster New-DatastoreDrive New-DrsClusterGroup New-DrsRule New-DrsVMHostRule New-DscChecksum New-FloppyDrive New-Folder New-Guid New-HCXAppliance New-HCXMigration New-HCXNetworkExtension New-HCXNetworkMapping New-HCXReplication New-HCXSitePairing New-HCXStaticRoute New-HardDisk New-IScsiHbaTarget New-KmipClientCertificate New-NetworkAdapter New-NfsUser New-NsxAddressSpec New-NsxClusterVxlanConfig New-NsxController New-NsxDynamicCriteriaSpec New-NsxEdge New-NsxEdgeBgpNeighbour New-NsxEdgeCsr New-NsxEdgeFirewallRule New-NsxEdgeInterfaceSpec New-NsxEdgeNatRule New-NsxEdgeOspfArea New-NsxEdgeOspfInterface New-NsxEdgePrefix New-NsxEdgeRedistributionRule New-NsxEdgeSelfSignedCertificate New-NsxEdgeStaticRoute New-NsxEdgeSubInterface New-NsxEdgeSubInterfaceSpec New-NsxFirewallRule New-NsxFirewallSavedConfiguration New-NsxFirewallSection New-NsxIpPool New-NsxIpSet New-NsxLoadBalancerApplicationProfile New-NsxLoadBalancerApplicationRule New-NsxLoadBalancerMemberSpec New-NsxLoadBalancerMonitor New-NsxLoadBalancerPool New-NsxLogicalRouter New-NsxLogicalRouterBgpNeighbour New-NsxLogicalRouterBridge New-NsxLogicalRouterInterface New-NsxLogicalRouterInterfaceSpec New-NsxLogicalRouterOspfArea New-NsxLogicalRouterOspfInterface New-NsxLogicalRouterPrefix New-NsxLogicalRouterRedistributionRule New-NsxLogicalRouterStaticRoute New-NsxLogicalSwitch New-NsxMacSet New-NsxManager New-NsxSecurityGroup New-NsxSecurityPolicy New-NsxSecurityPolicyAssignment New-NsxSecurityPolicyFirewallRuleSpec New-NsxSecurityPolicyGuestIntrospectionSpec New-NsxSecurityPolicyNetworkIntrospectionSpec New-NsxSecurityTag New-NsxSecurityTagAssignment New-NsxSegmentIdRange New-NsxService New-NsxServiceGroup New-NsxSpoofguardPolicy New-NsxSslVpnAuthServer New-NsxSslVpnClientInstallationPackage New-NsxSslVpnIpPool New-NsxSslVpnPrivateNetwork New-NsxSslVpnUser New-NsxTransportZone New-NsxVdsContext New-OSCustomizationNicMapping New-OSCustomizationSpec New-Org New-OrgNetwork New-OrgVdc New-OrgVdcNetwork New-ResourcePool New-ScriptFileInfo New-ScsiController New-Snapshot New-SpbmRule New-SpbmRuleSet New-SpbmStoragePolicy New-StatInterval New-Tag New-TagAssignment New-TagCategory New-Template New-TemporaryFile New-VAIOFilter New-VApp New-VDPortgroup New-VDSwitch New-VDSwitchPrivateVlan New-VDisk New-VICredentialStoreItem New-VIInventoryDrive New-VIPermission New-VIProperty New-VIRole New-VISamlSecurityContext New-VM New-VMHostAccount New-VMHostNetworkAdapter New-VMHostProfile New-VMHostProfileVmPortGroupConfiguration New-VMHostRoute New-VTpm New-VasaProvider New-VcsOAuthSecurityContext New-VirtualPortGroup New-VirtualSwitch New-VsanDisk New-VsanDiskGroup New-VsanFaultDomain New-VsanIscsiInitiatorGroup New-VsanIscsiInitiatorGroupTargetAssociation New-VsanIscsiLun New-VsanIscsiTarget New-vRABusinessGroup New-vRAEntitlement New-vRAExternalNetworkProfile New-vRAGroupPrincipal New-vRANATNetworkProfile New-vRANetworkProfileIPRangeDefinition New-vRAPackage New-vRAPropertyDefinition New-vRAPropertyGroup New-vRAReservation New-vRAReservationNetworkDefinition New-vRAReservationPolicy New-vRAReservationStorageDefinition New-vRARoutedNetworkProfile New-vRAService New-vRAStorageReservationPolicy New-vRATenant New-vRATenantDirectory New-vRAUserPrincipal New-vRNIApplication New-vRNIApplicationTier New-vRNIDataSource Open-VMConsoleWindow Publish-Module Publish-NsxSpoofguardPolicy Publish-Script Register-PSRepository Register-PackageSource Remove-AdvancedSetting Remove-AlarmAction Remove-AlarmActionTrigger Remove-Alias Remove-CDDrive Remove-CIAccessControlRule Remove-CIVApp Remove-CIVAppNetwork Remove-CIVAppTemplate Remove-Cluster Remove-CustomAttribute Remove-Datacenter Remove-Datastore Remove-DatastoreCluster Remove-DrsClusterGroup Remove-DrsRule Remove-DrsVMHostRule Remove-FloppyDrive Remove-Folder Remove-HCXAppliance Remove-HCXNetworkExtension Remove-HCXReplication Remove-HCXSitePairing Remove-HardDisk Remove-IScsiHbaTarget Remove-Inventory Remove-KeyManagementServer Remove-NetworkAdapter Remove-NfsUser Remove-NsxCluster Remove-NsxClusterVxlanConfig Remove-NsxController Remove-NsxDynamicCriteria Remove-NsxDynamicMemberSet Remove-NsxEdge Remove-NsxEdgeBgpNeighbour Remove-NsxEdgeCertificate Remove-NsxEdgeCsr Remove-NsxEdgeFirewallRule Remove-NsxEdgeInterfaceAddress Remove-NsxEdgeNatRule Remove-NsxEdgeOspfArea Remove-NsxEdgeOspfInterface Remove-NsxEdgePrefix Remove-NsxEdgeRedistributionRule Remove-NsxEdgeStaticRoute Remove-NsxEdgeSubInterface Remove-NsxFirewallExclusionListMember Remove-NsxFirewallRule Remove-NsxFirewallRuleMember Remove-NsxFirewallSavedConfiguration Remove-NsxFirewallSection Remove-NsxIpPool Remove-NsxIpSet Remove-NsxIpSetMember Remove-NsxLoadBalancerApplicationProfile Remove-NsxLoadBalancerMonitor Remove-NsxLoadBalancerPool Remove-NsxLoadBalancerPoolMember Remove-NsxLoadBalancerVip Remove-NsxLogicalRouter Remove-NsxLogicalRouterBgpNeighbour Remove-NsxLogicalRouterBridge Remove-NsxLogicalRouterInterface Remove-NsxLogicalRouterOspfArea Remove-NsxLogicalRouterOspfInterface Remove-NsxLogicalRouterPrefix Remove-NsxLogicalRouterRedistributionRule Remove-NsxLogicalRouterStaticRoute Remove-NsxLogicalSwitch Remove-NsxMacSet Remove-NsxSecondaryManager Remove-NsxSecurityGroup Remove-NsxSecurityGroupMember Remove-NsxSecurityPolicy Remove-NsxSecurityPolicyAssignment Remove-NsxSecurityPolicyRule Remove-NsxSecurityPolicyRuleGroup Remove-NsxSecurityPolicyRuleService Remove-NsxSecurityTag Remove-NsxSecurityTagAssignment Remove-NsxSegmentIdRange Remove-NsxService Remove-NsxServiceGroup Remove-NsxSpoofguardPolicy Remove-NsxSslVpnClientInstallationPackage Remove-NsxSslVpnIpPool Remove-NsxSslVpnPrivateNetwork Remove-NsxSslVpnUser Remove-NsxTransportZone Remove-NsxTransportZoneMember Remove-NsxVdsContext Remove-OSCustomizationNicMapping Remove-OSCustomizationSpec Remove-Org Remove-OrgNetwork Remove-OrgVdc Remove-OrgVdcNetwork Remove-PSReadLineKeyHandler Remove-PassthroughDevice Remove-ResourcePool Remove-Snapshot Remove-SpbmStoragePolicy Remove-StatInterval Remove-Tag Remove-TagAssignment Remove-TagCategory Remove-Template Remove-UsbDevice Remove-VAIOFilter Remove-VApp Remove-VDPortGroup Remove-VDSwitch Remove-VDSwitchPhysicalNetworkAdapter Remove-VDSwitchPrivateVlan Remove-VDSwitchVMHost Remove-VDisk Remove-VICredentialStoreItem Remove-VIPermission Remove-VIProperty Remove-VIRole Remove-VM Remove-VMHost Remove-VMHostAccount Remove-VMHostNetworkAdapter Remove-VMHostNtpServer Remove-VMHostProfile Remove-VMHostProfileVmPortGroupConfiguration Remove-VMHostRoute Remove-VTpm Remove-VasaProvider Remove-VirtualPortGroup Remove-VirtualSwitch Remove-VirtualSwitchPhysicalNetworkAdapter Remove-VsanDisk Remove-VsanDiskGroup Remove-VsanFaultDomain Remove-VsanIscsiInitiatorGroup Remove-VsanIscsiInitiatorGroupTargetAssociation Remove-VsanIscsiLun Remove-VsanIscsiTarget Remove-vRABusinessGroup Remove-vRACustomForm Remove-vRAExternalNetworkProfile Remove-vRAGroupPrincipal Remove-vRAIcon Remove-vRANATNetworkProfile Remove-vRAPackage Remove-vRAPrincipalFromTenantRole Remove-vRAPropertyDefinition Remove-vRAPropertyGroup Remove-vRAReservation Remove-vRAReservationNetwork Remove-vRAReservationPolicy Remove-vRAReservationStorage Remove-vRARoutedNetworkProfile Remove-vRAService Remove-vRAStorageReservationPolicy Remove-vRATenant Remove-vRATenantDirectory Remove-vRAUserPrincipal Remove-vRNIApplication Remove-vRNIApplicationTier Remove-vRNIDataSource Repair-NsxEdge Repair-VsanObject Request-vRACatalogItem Request-vRAResourceAction Restart-CIVApp Restart-CIVAppGuest Restart-CIVM Restart-CIVMGuest Restart-VM Restart-VMGuest Restart-VMHost Restart-VMHostService Resume-HCXReplication Revoke-NsxSpoofguardNicApproval Save-Module Save-Package Save-Script Search-Cloud Set-AdvancedSetting Set-AlarmDefinition Set-Annotation Set-CDDrive Set-CIAccessControlRule Set-CINetworkAdapter Set-CIVApp Set-CIVAppNetwork Set-CIVAppStartRule Set-CIVAppTemplate Set-Cluster Set-CustomAttribute Set-Datacenter Set-Datastore Set-DatastoreCluster Set-DrsClusterGroup Set-DrsRule Set-DrsVMHostRule Set-FloppyDrive Set-Folder Set-HCXAppliance Set-HCXMigration Set-HCXReplication Set-HardDisk Set-IScsiHbaTarget Set-KeyManagementServer Set-KmsCluster Set-MarkdownOption Set-NetworkAdapter Set-NfsUser Set-NicTeamingPolicy Set-NodeExclusiveResources Set-NodeManager Set-NodeResourceSource Set-NodeResources Set-NsxEdge Set-NsxEdgeBgp Set-NsxEdgeFirewall Set-NsxEdgeInterface Set-NsxEdgeNat Set-NsxEdgeOspf Set-NsxEdgeRouting Set-NsxFirewallGlobalConfiguration Set-NsxFirewallRule Set-NsxFirewallSavedConfiguration Set-NsxFirewallThreshold Set-NsxLoadBalancer Set-NsxLoadBalancerPoolMember Set-NsxLogicalRouter Set-NsxLogicalRouterBgp Set-NsxLogicalRouterBridging Set-NsxLogicalRouterInterface Set-NsxLogicalRouterOspf Set-NsxLogicalRouterRouting Set-NsxManager Set-NsxManagerRole Set-NsxManagerTimeSettings Set-NsxSecurityPolicy Set-NsxSecurityPolicyFirewallRule Set-NsxSslVpn Set-OSCustomizationNicMapping Set-OSCustomizationSpec Set-Org Set-OrgNetwork Set-OrgVdc Set-OrgVdcNetwork Set-PSCurrentConfigurationNode Set-PSDefaultConfigurationDocument Set-PSMetaConfigDocInsProcessedBeforeMeta Set-PSMetaConfigVersionInfoV2 Set-PSReadLineKeyHandler Set-PSReadLineOption Set-PSRepository Set-PSTopConfigurationName Set-PackageSource Set-PowerCLIConfiguration Set-ResourcePool Set-ScsiController Set-ScsiLun Set-ScsiLunPath Set-SecurityPolicy Set-Snapshot Set-SpbmEntityConfiguration Set-SpbmStoragePolicy Set-StatInterval Set-Tag Set-TagCategory Set-Template Set-VAIOFilter Set-VApp Set-VDBlockedPolicy Set-VDPort Set-VDPortgroup Set-VDPortgroupOverridePolicy Set-VDSecurityPolicy Set-VDSwitch Set-VDTrafficShapingPolicy Set-VDUplinkLacpPolicy Set-VDUplinkTeamingPolicy Set-VDVlanConfiguration Set-VDisk Set-VIPermission Set-VIRole Set-VM Set-VMHost Set-VMHostAccount Set-VMHostAdvancedConfiguration Set-VMHostAuthentication Set-VMHostDiagnosticPartition Set-VMHostFirewallDefaultPolicy Set-VMHostFirewallException Set-VMHostFirmware Set-VMHostHba Set-VMHostModule Set-VMHostNetwork Set-VMHostNetworkAdapter Set-VMHostProfile Set-VMHostProfileImageCacheConfiguration Set-VMHostProfileStorageDeviceConfiguration Set-VMHostProfileUserConfiguration Set-VMHostProfileVmPortGroupConfiguration Set-VMHostRoute Set-VMHostService Set-VMHostSnmp Set-VMHostStartPolicy Set-VMHostStorage Set-VMHostSysLogServer Set-VMQuestion Set-VMResourceConfiguration Set-VMStartPolicy Set-VTpm Set-VirtualPortGroup Set-VirtualSwitch Set-VsanClusterConfiguration Set-VsanFaultDomain Set-VsanIscsiInitiatorGroup Set-VsanIscsiLun Set-VsanIscsiTarget Set-vRABusinessGroup Set-vRACatalogItem Set-vRACustomForm Set-vRAEntitlement Set-vRAExternalNetworkProfile Set-vRANATNetworkProfile Set-vRAReservation Set-vRAReservationNetwork Set-vRAReservationPolicy Set-vRAReservationStorage Set-vRARoutedNetworkProfile Set-vRAService Set-vRAStorageReservationPolicy Set-vRATenant Set-vRATenantDirectory Set-vRAUserPrincipal Set-vRNIDataSourceSNMPConfig Show-Markdown Start-CIVApp Start-CIVM Start-HCXMigration Start-HCXReplication Start-SpbmReplicationFailover Start-SpbmReplicationPrepareFailover Start-SpbmReplicationPromote Start-SpbmReplicationReverse Start-SpbmReplicationTestFailover Start-ThreadJob Start-VApp Start-VM Start-VMHost Start-VMHostService Start-VsanClusterDiskUpdate Start-VsanClusterRebalance Start-VsanEncryptionConfiguration Stop-CIVApp Stop-CIVAppGuest Stop-CIVM Stop-CIVMGuest Stop-SpbmReplicationTestFailover Stop-Task Stop-VApp Stop-VM Stop-VMGuest Stop-VMHost Stop-VMHostService Stop-VsanClusterRebalance Suspend-CIVApp Suspend-CIVM Suspend-HCXReplication Suspend-VM Suspend-VMGuest Suspend-VMHost Sync-SpbmReplicationGroup Test-ConflictingResources Test-HCXMigration Test-HCXReplication Test-Json Test-ModuleReloadRequired Test-MofInstanceText Test-NodeManager Test-NodeResourceSource Test-NodeResources Test-ScriptFileInfo Test-VMHostProfileCompliance Test-VMHostSnmp Test-VsanClusterHealth Test-VsanNetworkPerformance Test-VsanStoragePerformance Test-VsanVMCreation Test-vRAPackage Uninstall-Module Uninstall-Package Uninstall-Script Unlock-VM Unregister-PSRepository Unregister-PackageSource Update-ConfigurationDocumentRef Update-ConfigurationErrorCount Update-DependsOn Update-LocalConfigManager Update-Module Update-ModuleManifest Update-ModuleVersion Update-PowerNsx Update-Script Update-ScriptFileInfo Update-Tools Update-VsanHclDatabase ValidateUpdate-ConfigurationData Wait-Debugger Wait-NsxControllerJob Wait-NsxGenericJob Wait-NsxJob Wait-Task Wait-Tools Write-Information Write-Log Write-MetaConfigFile Write-NodeMOFFile",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,a]}}),We.registerLanguage("processing",function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("profile",function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}}),We.registerLanguage("prolog",function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},a={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}}),We.registerLanguage("properties",function(e){var t="[ \\t\\f]*",n="("+t+"[:=]"+t+"|[ \\t\\f]+)",r="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={end:n,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+n,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:a},{begin:r+n,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:r,endsParent:!0,relevance:0}],starts:a},{className:"attr",relevance:0,begin:r+t+"$"}]}}),We.registerLanguage("protobuf",function(e){return{keywords:{keyword:"package import option optional required repeated group oneof",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}}),We.registerLanguage("puppet",function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}}),We.registerLanguage("purebasic",function(e){return{aliases:["pb","pbi"],keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule UseModule Wend While With XIncludeFile XOr",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}}),We.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},a={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,a,r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},s={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i,e.HASH_COMMENT_MODE]};return r.contains=[i,o,n],{aliases:["py","gyp","ipython"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,s,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}),We.registerLanguage("q",function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}}),We.registerLanguage("qml",function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},a={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,a],illegal:/#/}}),We.registerLanguage("r",function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}),We.registerLanguage("reasonml",function(e){var t="~?[a-z$_][0-9a-zA-Z$_]*",n="`?[A-Z$_][0-9a-zA-Z$_]*",r="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(e){return e.split("").map(function(e){return"\\"+e}).join("")}).join("|")+"|==|===)",a="\\s+"+r+"\\s+",i={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},o="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={className:"number",relevance:0,variants:[{begin:o},{begin:"\\(\\-"+o+"\\)"}]},l={className:"operator",relevance:0,begin:r},c=[{className:"identifier",relevance:0,begin:t},l,s],d=[e.QUOTE_STRING_MODE,l,{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",contains:[{className:"identifier",begin:n,relevance:0}]}],_=[{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:n,relevance:0}]}],u={className:"function",relevance:0,keywords:i,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+t+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:t},{begin:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{begin:t,end:"(,|\\n|\\))",relevance:0,contains:[l,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:_}]}]}]},{begin:"\\(\\.\\s"+t+"\\)\\s*=>"}]};d.push(u);var m={className:"constructor",begin:n+"\\(",end:"\\)",illegal:"\\n",keywords:i,contains:[e.QUOTE_STRING_MODE,l,{className:"params",begin:"\\b"+t}]},p={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:i,end:"=>",relevance:0,contains:[m,l,{relevance:0,className:"constructor",begin:n}]},g={className:"module-access",keywords:i,returnBegin:!0,variants:[{begin:"\\b("+n+"\\.)+"+t},{begin:"\\b("+n+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[u,{begin:"\\(",end:"\\)",skip:!0}].concat(d)},{begin:"\\b("+n+"\\.)+{",end:"}"}],contains:d};return _.push(g),{aliases:["re"],keywords:i,illegal:"(:\\-|:=|\\${|\\+=)",contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(\\#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:c},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:c},m,{className:"operator",begin:a,illegal:"\\-\\->",relevance:0},s,e.C_LINE_COMMENT_MODE,p,u,{className:"module-def",begin:"\\bmodule\\s+"+t+"\\s+"+n+"\\s+=\\s+{",end:"}",returnBegin:!0,keywords:i,relevance:0,contains:[{className:"module",relevance:0,begin:n},{begin:"{",end:"}",skip:!0}].concat(d)},g]}}),We.registerLanguage("rib",function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}),We.registerLanguage("roboconf",function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}),We.registerLanguage("routeros",function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),a,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[a,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}}),We.registerLanguage("rsl",function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}}),We.registerLanguage("ruleslanguage",function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}}),We.registerLanguage("rust",function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}}),We.registerLanguage("sas",function(e){return{aliases:["sas","SAS"],case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where"},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/},{className:"variable",begin:/\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]"},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("scala",function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},a={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},a]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[a]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,o,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}),We.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},a=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],o={begin:t,relevance:0},s={className:"symbol",begin:"'"+t},l={endsWithParent:!0,relevance:0},c={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,a,r,o,s]}]},d={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},_={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[d,{begin:/\(/,end:/\)/,endsParent:!0,contains:[o]}]},d,l]};return l.contains=[n,r,a,o,s,c,_].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,a,s,c,_].concat(i)}}),We.registerLanguage("scilab",function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}}),We.registerLanguage("scss",function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}}),We.registerLanguage("shell",function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}),We.registerLanguage("smali",function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}),We.registerLanguage("smalltalk",function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}}),We.registerLanguage("sml",function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}}),We.registerLanguage("sqf",function(e){var t={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},n={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},t,n],illegal:/#|^\$ /}}),We.registerLanguage("sql",function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}),We.registerLanguage("stan",function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}}),We.registerLanguage("stata",function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}}),We.registerLanguage("step21",function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}}),We.registerLanguage("stylus",function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"};return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-class"},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-id"},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")(?=[\\.\\s\\n\\[\\:,])",className:"selector-tag"},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")(?=[\\.\\s\\n\\[\\:,])"},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}}),We.registerLanguage("subunit",function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}}),We.registerLanguage("swift",function(e){var t={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},i={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return r.contains=[i],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",i,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}),We.registerLanguage("taggerscript",function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}}),We.registerLanguage("yaml",function(e){var t={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t]}}),We.registerLanguage("tap",function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}),We.registerLanguage("tcl",function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}}),We.registerLanguage("tex",function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},{begin:/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}}),We.registerLanguage("thrift",function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}}),We.registerLanguage("tp",function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}}),We.registerLanguage("twig",function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode",contains:[n]},a="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with";return a=a+" "+a.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:a,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}}),We.registerLanguage("typescript",function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},r={begin:"\\(",end:/\)/,keywords:t,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},a={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r]},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},s={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},c={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};return o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,i,e.REGEXP_MODE],{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),a],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",a]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r]}}),We.registerLanguage("vala",function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}}),We.registerLanguage("vbnet",function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend|^\\$ ",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}}),We.registerLanguage("vbscript",function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}}),We.registerLanguage("vbscript-html",function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}}),We.registerLanguage("verilog",function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}}),We.registerLanguage("vhdl",function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}}),We.registerLanguage("vim",function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}}),We.registerLanguage("x86asm",function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}),We.registerLanguage("xl",function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},a={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},a,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}}),We.registerLanguage("xquery",function(e){return{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN"},contains:[{className:"variable",begin:/[\$][\w-:]+/},{className:"built_in",variants:[{begin:/\barray\:/,end:/(?:append|filter|flatten|fold\-(?:left|right)|for-each(?:\-pair)?|get|head|insert\-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap\:/,end:/(?:contains|entry|find|for\-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath\:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop\:/,end:/\(/,excludeEnd:!0},{begin:/\bfn\:/,end:/\(/,excludeEnd:!0},{begin:/[^<\/\$\:'"-]\b(?:abs|accumulator\-(?:after|before)|adjust\-(?:date(?:Time)?|time)\-to\-timezone|analyze\-string|apply|available\-(?:environment\-variables|system\-properties)|avg|base\-uri|boolean|ceiling|codepoints?\-(?:equal|to\-string)|collation\-key|collection|compare|concat|contains(?:\-token)?|copy\-of|count|current(?:\-)?(?:date(?:Time)?|time|group(?:ing\-key)?|output\-uri|merge\-(?:group|key))?data|dateTime|days?\-from\-(?:date(?:Time)?|duration)|deep\-equal|default\-(?:collation|language)|distinct\-values|document(?:\-uri)?|doc(?:\-available)?|element\-(?:available|with\-id)|empty|encode\-for\-uri|ends\-with|environment\-variable|error|escape\-html\-uri|exactly\-one|exists|false|filter|floor|fold\-(?:left|right)|for\-each(?:\-pair)?|format\-(?:date(?:Time)?|time|integer|number)|function\-(?:arity|available|lookup|name)|generate\-id|has\-children|head|hours\-from\-(?:dateTime|duration|time)|id(?:ref)?|implicit\-timezone|in\-scope\-prefixes|index\-of|innermost|insert\-before|iri\-to\-uri|json\-(?:doc|to\-xml)|key|lang|last|load\-xquery\-module|local\-name(?:\-from\-QName)?|(?:lower|upper)\-case|matches|max|minutes\-from\-(?:dateTime|duration|time)|min|months?\-from\-(?:date(?:Time)?|duration)|name(?:space\-uri\-?(?:for\-prefix|from\-QName)?)?|nilled|node\-name|normalize\-(?:space|unicode)|not|number|one\-or\-more|outermost|parse\-(?:ietf\-date|json)|path|position|(?:prefix\-from\-)?QName|random\-number\-generator|regex\-group|remove|replace|resolve\-(?:QName|uri)|reverse|root|round(?:\-half\-to\-even)?|seconds\-from\-(?:dateTime|duration|time)|snapshot|sort|starts\-with|static\-base\-uri|stream\-available|string\-?(?:join|length|to\-codepoints)?|subsequence|substring\-?(?:after|before)?|sum|system\-property|tail|timezone\-from\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\-available|unordered|unparsed\-(?:entity|text)?\-?(?:public\-id|uri|available|lines)?|uri\-collection|xml\-to\-json|years?\-from\-(?:date(?:Time)?|duration)|zero\-or\-one)\b/},{begin:/\blocal\:/,end:/\(/,excludeEnd:!0},{begin:/\bzip\:/,end:/(?:zip\-file|(?:xml|html|text|binary)\-entry| (?:update\-)?entries)\b/},{begin:/\b(?:util|db|functx|app|xdmp|xmldb)\:/,end:/\(/,excludeEnd:!0}]},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:/%[\w-:]+/},{className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,end:/;/},{beginKeywords:"element attribute comment document processing-instruction",end:"{",excludeEnd:!0},{begin:/<([\w\._:\-]+)((\s*.*)=('|").*('|"))?>/,end:/(\/[\w\._:\-]+>)/,subLanguage:"xml",contains:[{begin:"{",end:"}",subLanguage:"xquery"},"self"]}]}}),We.registerLanguage("zephir",function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}});var ht=function(){return function(e,t,n){return function(e){let t=0;E(e,"list",e=>{let n=!0,r=0;const a=[];return Array.from(e.children).forEach(e=>{e.children&&"paragraph"===e.children[0].type&&e.children[0].children&&e.children[0].children[0].value?"~!=".indexOf(e.children[0].children[0].value[0])<0&&(n=!1):n=!1}),n&&(Array.from(e.children).forEach(e=>{"paragraph"===e.children[0].type&&("~"===e.children[0].children[0].value[0]?a.push(.5):"!"===e.children[0].children[0].value[0]?a.push(0):a.push(1),e.children[0].children[0].value=`${e.children[0].children[0].value.slice(1)}\r`)}),e.type="mc",e.data={hName:"fieldset",hProperties:{className:"mc check",id:`mc_${t}`}},e.children=[{type:"list-item-mc",data:{hName:"ul"},children:e.children.map(e=>({type:"input-list-item",data:{hName:"li"},children:[{type:"input-list-input",data:{hName:"input",hProperties:{checked:e.checked,type:"checkbox",id:`mc_${t}_${r}`,className:"!~="[2*a[r]]}}},{type:"input-list-label",data:{hName:"label",hProperties:{for:`mc_${t}_${r++}`}},children:function(e){let t=[];return"paragraph"===e[0].type&&(t=e[0].children),t[0].value=t[0].value.trim(),"blockquote"===e[e.length-1].type&&(e[e.length-1].type="div",e[e.length-1].data={hName:"blockquote",hProperties:{className:"hiden_block_quote"}}),t=t.concat(e.slice(1))}(e.children)}]}))},{type:"field-button",data:{hName:"input",hProperties:{onclick:`check('mc_${t}',[${String(a)}])`,value:"Validate",type:"button"}}}],t++),e})}(e),"function"==typeof n?n(null,e,t):e}};function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Tt={prop:{},eaten:""},bt={defaultValue:function(){}};var Ct=function(e,t,n){var r="",a=!1,i=!1,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(n,!0).forEach(function(t){ft(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},bt,{},n);if("function"!=typeof o.defaultValue){var s=o.defaultValue;o.defaultValue=function(){return s}}var l,c,d={},_="";void 0===t&&(t=0);var u=function(){return t>=e.length||"\n\r{}".indexOf(e[t])>-1?(a&&"}"!==e[t]&&(i=!0),!0):"}"===e[t]&&a},m="",p=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))>=0;)r+=e.charAt(t),m+=e.charAt(t),t++;return u()},g=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))<0;)r+=e.charAt(t),m+=e.charAt(t),t++;return _?l=m:_=m,u()},E=function(e,n){return r+=e,t++,!n&&u()},h=function(n){return E(n,!0),function(n){if(m="",e[t]!==n){for(;t<e.length&&(n!==e[t]||"\\"===e[t-1])&&"\n"!==e[t]&&"\r"!==e[t];)r+=e.charAt(t),m+=e.charAt(t),t++;"\n"===e[t]||"\r"===e[t]||t>=e.length?i=!0:(_?l=m.replace(/\\"/g,'"'):_=m.replace(/\\"/g,'"'),u())}}(n),e.charAt(t)!==n?Tt:E(n)?-1:void 0},S=!1,f=function(){switch(c){case"id":S?(d.id=_,S=!1):d.id=d.id||_;break;case"class":d.class||(d.class=[]),d.class.indexOf(_)<0&&d.class.push(_);break;case"key":if(!_)return Tt;_ in d?"class"===_&&Boolean(l)&&d.class.push(l):(d[_]=void 0===l?o.defaultValue(_):"class"===_?[l]:l,"id"===_&&(S=!0))}c=void 0,_="",l=void 0};for(p(" \t\v"),"{"===e[t]&&(E("{"),a=!0);!u()&&!p(" \t\v");){if("."===e.charAt(t)){if(c="class",E(".")){i=!0;break}}else if("#"===e.charAt(t)){if(c="id",E("#")){i=!0;break}}else c="key";if(g("=\t\b\v  ")||!_)break;if("="===e.charAt(t)&&"key"===c){if(E("="))break;if('"'===e.charAt(t)){var T=h('"');if(-1===T)break;if(T===Tt)return Tt}else if("'"===e.charAt(t)){var b=h("'");if(-1===b)break;if(b===Tt)return Tt}else if(g(" \t\n\r\v=}"))break}f()}if(f(),a){if(!(t<e.length&&"}"===e[t]))return Tt;a=!1,E("}")}return i?Tt:{prop:d,eaten:r}},Nt="[__",vt="__]";function Rt(e,t){return e.indexOf(Nt,t)}var At=function(){function e(e,t){if(t.startsWith(Nt)){for(var n="",r=Nt.length,a=t.length;!t.startsWith(vt,r)&&r<a;){if(n+=t.charAt(r),"\n"===t.charAt(r))return!0;r++}var i="",o={};if("{"===t.charAt(r+vt.length)){var s=Ct(t,r+vt.length);i=s.eaten,o=s.prop}return"password"!==o.type&&(o.type="text"),o.placeholder=n.replace(/^_*/g,"").replace(/_*$/g,"")||void 0,!(r<a)||e(Nt+n+vt+i)({type:"line-input",children:[],data:{hName:"input",hProperties:o}})}}e.locator=Rt;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.input=e,r.splice(r.indexOf("url"),0,"input");var a=this.Compiler;a&&(a.prototype.visitors.lineinput=function(e){return"[__".concat(this.all(e).join(""),"__]")})};const Ot="[",yt=/(\| *[vV] *])({[^\n]*})?/;function It(e,t){return e.indexOf(Ot,t)}var Dt=function(){let e="|v]";function t(t,n){if(!this.options.gfm||!n.startsWith(Ot))return;let r="",a=1;const{length:i}=n,o=t.now();o.column+=2,o.offset+=2;let s=null;if(!((s=n.substr(1).match(yt))&&a<i))return;r+=n.substr(1,s.index),e=s[1],a+=s.index+e.length;let l="",c={};if("{"===n.charAt(a)){const e=Ct(n,a);a+=(l=e.eaten).length,c=e.prop}return!(a<=i)||t(Ot+r+e+l)({type:"select",children:[],data:{hName:"select",hProperties:c,hChildren:r.split("|").filter(e=>e).map(e=>{const t=e.trim();return{type:"element",tagName:"option",properties:{value:t},children:[{type:"text",value:t}]}})}})}t.locator=It;const{Parser:n}=this,{inlineTokenizers:r}=n.prototype,{inlineMethods:a}=n.prototype;r.select=t,a.splice(a.indexOf("url"),0,"select");const{Compiler:i}=this;if(i){const{visitors:t}=i.prototype;t.lineselect=function(t){return Ot+this.all(t).join("")+e}}};const xt=/^(\[_+\n)/g,Mt=/(_+])/g;function wt(e,t){return e.indexOf(xt,t)}var Lt=function(){function e(e,t){if(!this.options.gfm||0!==t.search(xt))return;let n={class:void 0,id:void 0},r="";if(t.search(Mt)>0){if(t.search(Mt)+t.match(Mt)[0].length<t.length&&"{"===t.charAt(t.search(Mt)+t.match(Mt)[0].length)){const e=Ct(t,t.search(Mt)+t.match(Mt)[0].length);r=e.eaten,n=e.prop}let a=t.search(Mt);return a!==t.match(xt)[0].length&&(a-=1),e(t.slice(0,t.search(Mt)+t.match(Mt)[0].length)+r)({type:"textarea",data:{hName:"TEXTAREA",hProperties:n,hChildren:[{type:"text",value:t.slice(t.match(xt)[0].length,a)}]}})}return!0}e.locator=wt;const{Parser:t}=this,{blockTokenizers:n}=t.prototype,{blockMethods:r}=t.prototype;n.textinput=e,r.splice(r.indexOf("fencedCode")+1,0,"textinput");const{Compiler:a}=this;if(a){const{visitors:e}=a.prototype;e.textinput=function(e){return`[__${this.all(e).join("")}__]`}}};const Pt=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];var kt={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},isSurrogate:function(e){return e>=55296&&e<=57343},isSurrogatePair:function(e){return e>=56320&&e<=57343},getSurrogatePairCodePoint:function(e,t){return 1024*(e-55296)+9216+t},isControlCodePoint:function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},isUndefinedCodePoint:function(e){return e>=64976&&e<=65007||Pt.indexOf(e)>-1}},Ut={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"};const Ft=kt.CODE_POINTS,Bt=65536;var Gt=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=Bt}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){const t=this.html.charCodeAt(this.pos+1);if(kt.isSurrogatePair(t))return this.pos++,this._addGap(),kt.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Ft.EOF;return this._err(Ut.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,Ft.EOF;let e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===Ft.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===Ft.CARRIAGE_RETURN?(this.skipNextNewLine=!0,Ft.LINE_FEED):(this.skipNextNewLine=!1,kt.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===Ft.LINE_FEED||e===Ft.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e)}_checkForProblematicCharacters(e){kt.isControlCodePoint(e)?this._err(Ut.controlCharacterInInputStream):kt.isUndefinedCodePoint(e)&&this._err(Ut.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}},Ht=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);const Yt=kt.CODE_POINTS,Vt=kt.CODE_POINT_SEQUENCES,zt={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},qt=1,Kt=2,Wt=4,Qt=qt|Kt|Wt,$t="DATA_STATE",jt="RCDATA_STATE",Xt="RAWTEXT_STATE",Zt="SCRIPT_DATA_STATE",Jt="PLAINTEXT_STATE",en="TAG_OPEN_STATE",tn="END_TAG_OPEN_STATE",nn="TAG_NAME_STATE",rn="RCDATA_LESS_THAN_SIGN_STATE",an="RCDATA_END_TAG_OPEN_STATE",on="RCDATA_END_TAG_NAME_STATE",sn="RAWTEXT_LESS_THAN_SIGN_STATE",ln="RAWTEXT_END_TAG_OPEN_STATE",cn="RAWTEXT_END_TAG_NAME_STATE",dn="SCRIPT_DATA_LESS_THAN_SIGN_STATE",_n="SCRIPT_DATA_END_TAG_OPEN_STATE",un="SCRIPT_DATA_END_TAG_NAME_STATE",mn="SCRIPT_DATA_ESCAPE_START_STATE",pn="SCRIPT_DATA_ESCAPE_START_DASH_STATE",gn="SCRIPT_DATA_ESCAPED_STATE",En="SCRIPT_DATA_ESCAPED_DASH_STATE",hn="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",Sn="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",fn="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",Tn="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",bn="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",Cn="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",Nn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",vn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",Rn="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",An="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",On="BEFORE_ATTRIBUTE_NAME_STATE",yn="ATTRIBUTE_NAME_STATE",In="AFTER_ATTRIBUTE_NAME_STATE",Dn="BEFORE_ATTRIBUTE_VALUE_STATE",xn="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",Mn="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",wn="ATTRIBUTE_VALUE_UNQUOTED_STATE",Ln="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Pn="SELF_CLOSING_START_TAG_STATE",kn="BOGUS_COMMENT_STATE",Un="MARKUP_DECLARATION_OPEN_STATE",Fn="COMMENT_START_STATE",Bn="COMMENT_START_DASH_STATE",Gn="COMMENT_STATE",Hn="COMMENT_LESS_THAN_SIGN_STATE",Yn="COMMENT_LESS_THAN_SIGN_BANG_STATE",Vn="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",zn="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",qn="COMMENT_END_DASH_STATE",Kn="COMMENT_END_STATE",Wn="COMMENT_END_BANG_STATE",Qn="DOCTYPE_STATE",$n="BEFORE_DOCTYPE_NAME_STATE",jn="DOCTYPE_NAME_STATE",Xn="AFTER_DOCTYPE_NAME_STATE",Zn="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",Jn="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",er="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",tr="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",nr="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",rr="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",ar="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",ir="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",or="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",sr="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",lr="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",cr="BOGUS_DOCTYPE_STATE",dr="CDATA_SECTION_STATE",_r="CDATA_SECTION_BRACKET_STATE",ur="CDATA_SECTION_END_STATE",mr="CHARACTER_REFERENCE_STATE",pr="NAMED_CHARACTER_REFERENCE_STATE",gr="AMBIGUOS_AMPERSAND_STATE",Er="NUMERIC_CHARACTER_REFERENCE_STATE",hr="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",Sr="DECIMAL_CHARACTER_REFERENCE_START_STATE",fr="HEXADEMICAL_CHARACTER_REFERENCE_STATE",Tr="DECIMAL_CHARACTER_REFERENCE_STATE",br="NUMERIC_CHARACTER_REFERENCE_END_STATE";function Cr(e){return e===Yt.SPACE||e===Yt.LINE_FEED||e===Yt.TABULATION||e===Yt.FORM_FEED}function Nr(e){return e>=Yt.DIGIT_0&&e<=Yt.DIGIT_9}function vr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_Z}function Rr(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_Z}function Ar(e){return Rr(e)||vr(e)}function Or(e){return Ar(e)||Nr(e)}function yr(e){return e>=Yt.LATIN_CAPITAL_A&&e<=Yt.LATIN_CAPITAL_F}function Ir(e){return e>=Yt.LATIN_SMALL_A&&e<=Yt.LATIN_SMALL_F}function Dr(e){return e+32}function xr(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Mr(e){return String.fromCharCode(Dr(e))}function wr(e,t){const n=Ht[++e];let r=++e,a=r+n-1;for(;r<=a;){const e=r+a>>>1,i=Ht[e];if(i<t)r=e+1;else{if(!(i>t))return Ht[e+n];a=e-1}}return-1}class Lr{constructor(){this.preprocessor=new Gt,this.tokenQueue=[],this.allowCDATA=!1,this.state=$t,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Lr.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,a=!0;const i=e.length;let o=0,s=t,l=void 0;for(;o<i;o++){if(o>0&&(s=this._consume(),r++),s===Yt.EOF){a=!1;break}if(s!==(l=e[o])&&(n||s!==Dr(l))){a=!1;break}}if(!a)for(;r--;)this._unconsume();return a}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==Vt.SCRIPT_STRING.length)return!1;for(let e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==Vt.SCRIPT_STRING[e])return!1;return!0}_createStartTagToken(){this.currentToken={type:Lr.START_TAG_TOKEN,tagName:"",selfClosing:!1,ackSelfClosing:!1,attrs:[]}}_createEndTagToken(){this.currentToken={type:Lr.END_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}}_createCommentToken(){this.currentToken={type:Lr.COMMENT_TOKEN,data:""}}_createDoctypeToken(e){this.currentToken={type:Lr.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}}_createCharacterToken(e,t){this.currentCharacterToken={type:e,chars:t}}_createEOFToken(){this.currentToken={type:Lr.EOF_TOKEN}}_createAttr(e){this.currentAttr={name:e,value:""}}_leaveAttrName(e){null===Lr.getTokenAttr(this.currentToken,this.currentAttr.name)?this.currentToken.attrs.push(this.currentAttr):this._err(Ut.duplicateAttribute),this.state=e}_leaveAttrValue(e){this.state=e}_emitCurrentToken(){this._emitCurrentCharacterToken();const e=this.currentToken;this.currentToken=null,e.type===Lr.START_TAG_TOKEN?this.lastStartTagName=e.tagName:e.type===Lr.END_TAG_TOKEN&&(e.attrs.length>0&&this._err(Ut.endTagWithAttributes),e.selfClosing&&this._err(Ut.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Lr.CHARACTER_TOKEN;Cr(e)?t=Lr.WHITESPACE_CHARACTER_TOKEN:e===Yt.NULL&&(t=Lr.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,xr(e))}_emitSeveralCodePoints(e){for(let t=0;t<e.length;t++)this._emitCodePoint(e[t])}_emitChars(e){this._appendCharToCurrentCharacterToken(Lr.CHARACTER_TOKEN,e)}_matchNamedCharacterReference(e){let t=null,n=1,r=wr(0,e);for(this.tempBuff.push(e);r>-1;){const e=Ht[r],a=e<Qt;a&&e&qt&&(t=e&Kt?[Ht[++r],Ht[++r]]:[Ht[++r]],n=0);const i=this._consume();if(this.tempBuff.push(i),n++,i===Yt.EOF)break;r=a?e&Wt?wr(r,i):-1:i===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===xn||this.returnState===Mn||this.returnState===wn}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){const e=this._consume();return this._unconsume(),e===Yt.EQUALS_SIGN||Or(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e<this.tempBuff.length;e++)this.currentAttr.value+=xr(this.tempBuff[e]);else this._emitSeveralCodePoints(this.tempBuff);this.tempBuff=[]}[$t](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=en:e===Yt.AMPERSAND?(this.returnState=$t,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitCodePoint(e)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[jt](e){this.preprocessor.dropParsedChunk(),e===Yt.AMPERSAND?(this.returnState=jt,this.state=mr):e===Yt.LESS_THAN_SIGN?this.state=rn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Xt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Zt](e){this.preprocessor.dropParsedChunk(),e===Yt.LESS_THAN_SIGN?this.state=dn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[Jt](e){this.preprocessor.dropParsedChunk(),e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[en](e){e===Yt.EXCLAMATION_MARK?this.state=Un:e===Yt.SOLIDUS?this.state=tn:Ar(e)?(this._createStartTagToken(),this._reconsumeInState(nn)):e===Yt.QUESTION_MARK?(this._err(Ut.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(),this._reconsumeInState(kn)):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._emitChars("<"),this._reconsumeInState($t))}[tn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(nn)):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingEndTagName),this.state=$t):e===Yt.EOF?(this._err(Ut.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken()):(this._err(Ut.invalidFirstCharacterOfTagName),this._createCommentToken(),this._reconsumeInState(kn))}[nn](e){Cr(e)?this.state=On:e===Yt.SOLIDUS?this.state=Pn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.tagName+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.tagName+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentToken.tagName+=xr(e)}[rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=an):(this._emitChars("<"),this._reconsumeInState(jt))}[an](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(on)):(this._emitChars("</"),this._reconsumeInState(jt))}[on](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this.state=$t,void this._emitCurrentToken()}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(jt)}}[sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=ln):(this._emitChars("<"),this._reconsumeInState(Xt))}[ln](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(cn)):(this._emitChars("</"),this._reconsumeInState(Xt))}[cn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Xt)}}[dn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=_n):e===Yt.EXCLAMATION_MARK?(this.state=mn,this._emitChars("<!")):(this._emitChars("<"),this._reconsumeInState(Zt))}[_n](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(un)):(this._emitChars("</"),this._reconsumeInState(Zt))}[un](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(Zt)}}[mn](e){e===Yt.HYPHEN_MINUS?(this.state=pn,this._emitChars("-")):this._reconsumeInState(Zt)}[pn](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):this._reconsumeInState(Zt)}[gn](e){e===Yt.HYPHEN_MINUS?(this.state=En,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[En](e){e===Yt.HYPHEN_MINUS?(this.state=hn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[hn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?this.state=Sn:e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=gn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=gn,this._emitCodePoint(e))}[Sn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=fn):Ar(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(bn)):(this._emitChars("<"),this._reconsumeInState(gn))}[fn](e){Ar(e)?(this._createEndTagToken(),this._reconsumeInState(Tn)):(this._emitChars("</"),this._reconsumeInState(gn))}[Tn](e){if(vr(e))this.currentToken.tagName+=Mr(e),this.tempBuff.push(e);else if(Rr(e))this.currentToken.tagName+=xr(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(Cr(e))return void(this.state=On);if(e===Yt.SOLIDUS)return void(this.state=Pn);if(e===Yt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=$t)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(gn)}}[bn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?Cn:gn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(gn)}[Cn](e){e===Yt.HYPHEN_MINUS?(this.state=Nn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[Nn](e){e===Yt.HYPHEN_MINUS?(this.state=vn,this._emitChars("-")):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[vn](e){e===Yt.HYPHEN_MINUS?this._emitChars("-"):e===Yt.LESS_THAN_SIGN?(this.state=Rn,this._emitChars("<")):e===Yt.GREATER_THAN_SIGN?(this.state=Zt,this._emitChars(">")):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.state=Cn,this._emitChars(kt.REPLACEMENT_CHARACTER)):e===Yt.EOF?(this._err(Ut.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=Cn,this._emitCodePoint(e))}[Rn](e){e===Yt.SOLIDUS?(this.tempBuff=[],this.state=An,this._emitChars("/")):this._reconsumeInState(Cn)}[An](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?gn:Cn,this._emitCodePoint(e)):vr(e)?(this.tempBuff.push(Dr(e)),this._emitCodePoint(e)):Rr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(Cn)}[On](e){Cr(e)||(e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?this._reconsumeInState(In):e===Yt.EQUALS_SIGN?(this._err(Ut.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=yn):(this._createAttr(""),this._reconsumeInState(yn)))}[yn](e){Cr(e)||e===Yt.SOLIDUS||e===Yt.GREATER_THAN_SIGN||e===Yt.EOF?(this._leaveAttrName(In),this._unconsume()):e===Yt.EQUALS_SIGN?this._leaveAttrName(Dn):vr(e)?this.currentAttr.name+=Mr(e):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN?(this._err(Ut.unexpectedCharacterInAttributeName),this.currentAttr.name+=xr(e)):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.name+=kt.REPLACEMENT_CHARACTER):this.currentAttr.name+=xr(e)}[In](e){Cr(e)||(e===Yt.SOLIDUS?this.state=Pn:e===Yt.EQUALS_SIGN?this.state=Dn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(yn)))}[Dn](e){Cr(e)||(e===Yt.QUOTATION_MARK?this.state=xn:e===Yt.APOSTROPHE?this.state=Mn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingAttributeValue),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(wn))}[xn](e){e===Yt.QUOTATION_MARK?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=xn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Mn](e){e===Yt.APOSTROPHE?this.state=Ln:e===Yt.AMPERSAND?(this.returnState=Mn,this.state=mr):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[wn](e){Cr(e)?this._leaveAttrValue(On):e===Yt.AMPERSAND?(this.returnState=wn,this.state=mr):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentAttr.value+=kt.REPLACEMENT_CHARACTER):e===Yt.QUOTATION_MARK||e===Yt.APOSTROPHE||e===Yt.LESS_THAN_SIGN||e===Yt.EQUALS_SIGN||e===Yt.GRAVE_ACCENT?(this._err(Ut.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=xr(e)):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):this.currentAttr.value+=xr(e)}[Ln](e){Cr(e)?this._leaveAttrValue(On):e===Yt.SOLIDUS?this._leaveAttrValue(Pn):e===Yt.GREATER_THAN_SIGN?(this._leaveAttrValue($t),this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBetweenAttributes),this._reconsumeInState(On))}[Pn](e){e===Yt.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInTag),this._emitEOFToken()):(this._err(Ut.unexpectedSolidusInTag),this._reconsumeInState(On))}[kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):this.currentToken.data+=xr(e)}[Un](e){this._consumeSequenceIfMatch(Vt.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=Fn):this._consumeSequenceIfMatch(Vt.DOCTYPE_STRING,e,!1)?this.state=Qn:this._consumeSequenceIfMatch(Vt.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=dr:(this._err(Ut.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=kn):this._ensureHibernation()||(this._err(Ut.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(kn))}[Fn](e){e===Yt.HYPHEN_MINUS?this.state=Bn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):this._reconsumeInState(Gn)}[Bn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptClosingOfEmptyComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Gn](e){e===Yt.HYPHEN_MINUS?this.state=qn:e===Yt.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=Hn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.data+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=xr(e)}[Hn](e){e===Yt.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=Yn):e===Yt.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(Gn)}[Yn](e){e===Yt.HYPHEN_MINUS?this.state=Vn:this._reconsumeInState(Gn)}[Vn](e){e===Yt.HYPHEN_MINUS?this.state=zn:this._reconsumeInState(qn)}[zn](e){e!==Yt.GREATER_THAN_SIGN&&e!==Yt.EOF&&this._err(Ut.nestedComment),this._reconsumeInState(Kn)}[qn](e){e===Yt.HYPHEN_MINUS?this.state=Kn:e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Gn))}[Kn](e){e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EXCLAMATION_MARK?this.state=Wn:e===Yt.HYPHEN_MINUS?this.currentToken.data+="-":e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(Gn))}[Wn](e){e===Yt.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=qn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.incorrectlyClosedComment),this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(Gn))}[Qn](e){Cr(e)?this.state=$n:e===Yt.GREATER_THAN_SIGN?this._reconsumeInState($n):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingWhitespaceBeforeDoctypeName),this._reconsumeInState($n))}[$n](e){Cr(e)||(vr(e)?(this._createDoctypeToken(Mr(e)),this.state=jn):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this._createDoctypeToken(kt.REPLACEMENT_CHARACTER),this.state=jn):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(xr(e)),this.state=jn))}[jn](e){Cr(e)?this.state=Xn:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):vr(e)?this.currentToken.name+=Mr(e):e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.name+=kt.REPLACEMENT_CHARACTER):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=xr(e)}[Xn](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(Vt.PUBLIC_STRING,e,!1)?this.state=Zn:this._consumeSequenceIfMatch(Vt.SYSTEM_STRING,e,!1)?this.state=ar:this._ensureHibernation()||(this._err(Ut.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[Zn](e){Cr(e)?this.state=Jn:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[Jn](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.publicId="",this.state=er):e===Yt.APOSTROPHE?(this.currentToken.publicId="",this.state=tr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[er](e){e===Yt.QUOTATION_MARK?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[tr](e){e===Yt.APOSTROPHE?this.state=nr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.publicId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=xr(e)}[nr](e){Cr(e)?this.state=rr:e===Yt.GREATER_THAN_SIGN?(this.state=$t,this._emitCurrentToken()):e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[rr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[ar](e){Cr(e)?this.state=ir:e===Yt.QUOTATION_MARK?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this._err(Ut.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr))}[ir](e){Cr(e)||(e===Yt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=or):e===Yt.APOSTROPHE?(this.currentToken.systemId="",this.state=sr):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=$t,this._emitCurrentToken()):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(cr)))}[or](e){e===Yt.QUOTATION_MARK?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[sr](e){e===Yt.APOSTROPHE?this.state=lr:e===Yt.NULL?(this._err(Ut.unexpectedNullCharacter),this.currentToken.systemId+=kt.REPLACEMENT_CHARACTER):e===Yt.GREATER_THAN_SIGN?(this._err(Ut.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=xr(e)}[lr](e){Cr(e)||(e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.EOF?(this._err(Ut.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Ut.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(cr)))}[cr](e){e===Yt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=$t):e===Yt.NULL?this._err(Ut.unexpectedNullCharacter):e===Yt.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[dr](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=_r:e===Yt.EOF?(this._err(Ut.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[_r](e){e===Yt.RIGHT_SQUARE_BRACKET?this.state=ur:(this._emitChars("]"),this._reconsumeInState(dr))}[ur](e){e===Yt.GREATER_THAN_SIGN?this.state=$t:e===Yt.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(dr))}[mr](e){this.tempBuff=[Yt.AMPERSAND],e===Yt.NUMBER_SIGN?(this.tempBuff.push(e),this.state=Er):Or(e)?this._reconsumeInState(pr):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[pr](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[Yt.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===Yt.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(Ut.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=gr}[gr](e){Or(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=xr(e):this._emitCodePoint(e):(e===Yt.SEMICOLON&&this._err(Ut.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[Er](e){this.charRefCode=0,e===Yt.LATIN_SMALL_X||e===Yt.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=hr):this._reconsumeInState(Sr)}[hr](e){!function(e){return Nr(e)||yr(e)||Ir(e)}(e)?(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(fr)}[Sr](e){Nr(e)?this._reconsumeInState(Tr):(this._err(Ut.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[fr](e){yr(e)?this.charRefCode=16*this.charRefCode+e-55:Ir(e)?this.charRefCode=16*this.charRefCode+e-87:Nr(e)?this.charRefCode=16*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[Tr](e){Nr(e)?this.charRefCode=10*this.charRefCode+e-48:e===Yt.SEMICOLON?this.state=br:(this._err(Ut.missingSemicolonAfterCharacterReference),this._reconsumeInState(br))}[br](){if(this.charRefCode===Yt.NULL)this._err(Ut.nullCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(Ut.characterReferenceOutsideUnicodeRange),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isSurrogate(this.charRefCode))this._err(Ut.surrogateCharacterReference),this.charRefCode=Yt.REPLACEMENT_CHARACTER;else if(kt.isUndefinedCodePoint(this.charRefCode))this._err(Ut.noncharacterCharacterReference);else if(kt.isControlCodePoint(this.charRefCode)||this.charRefCode===Yt.CARRIAGE_RETURN){this._err(Ut.controlCharacterReference);const e=zt[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Lr.CHARACTER_TOKEN="CHARACTER_TOKEN",Lr.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Lr.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Lr.START_TAG_TOKEN="START_TAG_TOKEN",Lr.END_TAG_TOKEN="END_TAG_TOKEN",Lr.COMMENT_TOKEN="COMMENT_TOKEN",Lr.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Lr.EOF_TOKEN="EOF_TOKEN",Lr.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Lr.MODE={DATA:$t,RCDATA:jt,RAWTEXT:Xt,SCRIPT_DATA:Zt,PLAINTEXT:Jt},Lr.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null};var Pr=Lr,kr=b(function(e,t){const n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[n.HTML]:{[r.ADDRESS]:!0,[r.APPLET]:!0,[r.AREA]:!0,[r.ARTICLE]:!0,[r.ASIDE]:!0,[r.BASE]:!0,[r.BASEFONT]:!0,[r.BGSOUND]:!0,[r.BLOCKQUOTE]:!0,[r.BODY]:!0,[r.BR]:!0,[r.BUTTON]:!0,[r.CAPTION]:!0,[r.CENTER]:!0,[r.COL]:!0,[r.COLGROUP]:!0,[r.DD]:!0,[r.DETAILS]:!0,[r.DIR]:!0,[r.DIV]:!0,[r.DL]:!0,[r.DT]:!0,[r.EMBED]:!0,[r.FIELDSET]:!0,[r.FIGCAPTION]:!0,[r.FIGURE]:!0,[r.FOOTER]:!0,[r.FORM]:!0,[r.FRAME]:!0,[r.FRAMESET]:!0,[r.H1]:!0,[r.H2]:!0,[r.H3]:!0,[r.H4]:!0,[r.H5]:!0,[r.H6]:!0,[r.HEAD]:!0,[r.HEADER]:!0,[r.HGROUP]:!0,[r.HR]:!0,[r.HTML]:!0,[r.IFRAME]:!0,[r.IMG]:!0,[r.INPUT]:!0,[r.LI]:!0,[r.LINK]:!0,[r.LISTING]:!0,[r.MAIN]:!0,[r.MARQUEE]:!0,[r.MENU]:!0,[r.META]:!0,[r.NAV]:!0,[r.NOEMBED]:!0,[r.NOFRAMES]:!0,[r.NOSCRIPT]:!0,[r.OBJECT]:!0,[r.OL]:!0,[r.P]:!0,[r.PARAM]:!0,[r.PLAINTEXT]:!0,[r.PRE]:!0,[r.SCRIPT]:!0,[r.SECTION]:!0,[r.SELECT]:!0,[r.SOURCE]:!0,[r.STYLE]:!0,[r.SUMMARY]:!0,[r.TABLE]:!0,[r.TBODY]:!0,[r.TD]:!0,[r.TEMPLATE]:!0,[r.TEXTAREA]:!0,[r.TFOOT]:!0,[r.TH]:!0,[r.THEAD]:!0,[r.TITLE]:!0,[r.TR]:!0,[r.TRACK]:!0,[r.UL]:!0,[r.WBR]:!0,[r.XMP]:!0},[n.MATHML]:{[r.MI]:!0,[r.MO]:!0,[r.MN]:!0,[r.MS]:!0,[r.MTEXT]:!0,[r.ANNOTATION_XML]:!0},[n.SVG]:{[r.TITLE]:!0,[r.FOREIGN_OBJECT]:!0,[r.DESC]:!0}}});kr.NAMESPACES,kr.ATTRS,kr.DOCUMENT_MODE,kr.TAG_NAMES,kr.SPECIAL_ELEMENTS;const Ur=kr.TAG_NAMES,Fr=kr.NAMESPACES;function Br(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI;case 3:return e===Ur.RTC;case 6:return e===Ur.OPTION;case 8:return e===Ur.OPTGROUP}return!1}function Gr(e){switch(e.length){case 1:return e===Ur.P;case 2:return e===Ur.RB||e===Ur.RP||e===Ur.RT||e===Ur.DD||e===Ur.DT||e===Ur.LI||e===Ur.TD||e===Ur.TH||e===Ur.TR;case 3:return e===Ur.RTC;case 5:return e===Ur.TBODY||e===Ur.TFOOT||e===Ur.THEAD;case 6:return e===Ur.OPTION;case 7:return e===Ur.CAPTION;case 8:return e===Ur.OPTGROUP||e===Ur.COLGROUP}return!1}function Hr(e,t){switch(e.length){case 2:if(e===Ur.TD||e===Ur.TH)return t===Fr.HTML;if(e===Ur.MI||e===Ur.MO||e===Ur.MN||e===Ur.MS)return t===Fr.MATHML;break;case 4:if(e===Ur.HTML)return t===Fr.HTML;if(e===Ur.DESC)return t===Fr.SVG;break;case 5:if(e===Ur.TABLE)return t===Fr.HTML;if(e===Ur.MTEXT)return t===Fr.MATHML;if(e===Ur.TITLE)return t===Fr.SVG;break;case 6:return(e===Ur.APPLET||e===Ur.OBJECT)&&t===Fr.HTML;case 7:return(e===Ur.CAPTION||e===Ur.MARQUEE)&&t===Fr.HTML;case 8:return e===Ur.TEMPLATE&&t===Fr.HTML;case 13:return e===Ur.FOREIGN_OBJECT&&t===Fr.SVG;case 14:return e===Ur.ANNOTATION_XML&&t===Fr.MATHML}return!1}var Yr=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===Ur.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Fr.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){const n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){const t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===Fr.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){const t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.H1||e===Ur.H2||e===Ur.H3||e===Ur.H4||e===Ur.H5||e===Ur.H6&&t===Fr.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Ur.TD||e===Ur.TH&&t===Fr.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==Ur.TABLE&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==Ur.TBODY&&this.currentTagName!==Ur.TFOOT&&this.currentTagName!==Ur.THEAD&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==Ur.TR&&this.currentTagName!==Ur.TEMPLATE&&this.currentTagName!==Ur.HTML||this.treeAdapter.getNamespaceURI(this.current)!==Fr.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){const e=this.items[1];return e&&this.treeAdapter.getTagName(e)===Ur.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===Ur.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(Hr(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===Ur.H1||t===Ur.H2||t===Ur.H3||t===Ur.H4||t===Ur.H5||t===Ur.H6)&&n===Fr.HTML)return!0;if(Hr(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if((n===Ur.UL||n===Ur.OL)&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===Fr.HTML)return!0;if(n===Ur.BUTTON&&r===Fr.HTML||Hr(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n===Ur.TABLE||n===Ur.TEMPLATE||n===Ur.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===Fr.HTML){if(t===Ur.TBODY||t===Ur.THEAD||t===Ur.TFOOT)return!0;if(t===Ur.TABLE||t===Ur.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===Fr.HTML){if(n===e)return!0;if(n!==Ur.OPTION&&n!==Ur.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;Br(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;Gr(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;Br(this.currentTagName)&&this.currentTagName!==e;)this.pop()}};const Vr=3;class zr{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){const t=[];if(this.length>=Vr){const n=this.treeAdapter.getAttrList(e).length,r=this.treeAdapter.getTagName(e),a=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){const i=this.entries[e];if(i.type===zr.MARKER_ENTRY)break;const o=i.element,s=this.treeAdapter.getAttrList(o);this.treeAdapter.getTagName(o)===r&&this.treeAdapter.getNamespaceURI(o)===a&&s.length===n&&t.push({idx:e,attrs:s})}}return t.length<Vr?[]:t}_ensureNoahArkCondition(e){const t=this._getNoahArkConditionCandidates(e);let n=t.length;if(n){const r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e<a;e++){const t=r[e];i[t.name]=t.value}for(let e=0;e<a;e++)for(let r=0;r<n;r++){const a=t[r].attrs[e];if(i[a.name]!==a.value&&(t.splice(r,1),n--),t.length<Vr)return}for(let e=n-1;e>=Vr-1;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:zr.MARKER_ENTRY}),this.length++}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.push({type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}insertElementAfterBookmark(e,t){let n=this.length-1;for(;n>=0&&this.entries[n]!==this.bookmark;n--);this.entries.splice(n+1,0,{type:zr.ELEMENT_ENTRY,element:e,token:t}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){const e=this.entries.pop();if(this.length--,e.type===zr.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(n.element)===e)return n}return null}getElementEntry(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===zr.ELEMENT_ENTRY&&n.element===e)return n}return null}}zr.MARKER_ENTRY="MARKER_ENTRY",zr.ELEMENT_ENTRY="ELEMENT_ENTRY";var qr=zr;class Kr{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}Kr.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n<e.__mixins.length;n++)if(e.__mixins[n].constructor===t)return e.__mixins[n];const r=new t(e,n);return e.__mixins.push(r),r};var Wr=Kr;var Qr=class extends Wr{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}};var $r=class extends Wr{constructor(e){super(e),this.tokenizer=e,this.posTracker=Wr.install(e.preprocessor,Qr),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===Pr.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(Pr.MODE).forEach(r=>{const a=Pr.MODE[r];n[a]=function(n){e.ctLoc=e._getCurrentLocation(),t[a].call(this,n)}}),n}};var jr=class extends Wr{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}};const Xr=kr.TAG_NAMES;var Zr=class extends Wr{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){const n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){const r=t.location,a=this.treeAdapter.getTagName(e);t.type===Pr.END_TAG_TOKEN&&a===t.tagName?(n.endTag=Object.assign({},r),n.endLine=r.endLine,n.endCol=r.endCol,n.endOffset=r.endOffset):(n.endLine=r.startLine,n.endCol=r.startCol,n.endOffset=r.startOffset)}}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;const a=Wr.install(this.tokenizer,$r);e.posTracker=a.posTracker,Wr.install(this.openElements,jr,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){if(e.currentToken=n,t._processToken.call(this,n),n.type===Pr.END_TAG_TOKEN&&(n.tagName===Xr.HTML||n.tagName===Xr.BODY&&this.openElements.hasInScope(Xr.BODY)))for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);const n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t<r;t++){const r=n[t];if(this.treeAdapter.isDocumentTypeNode(r)){this.treeAdapter.setNodeSourceCodeLocation(r,e.location);break}}},_attachElementToTree(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n);const r=this.treeAdapter.getTemplateContent(this.openElements.current);this.treeAdapter.setNodeSourceCodeLocation(r,null)},_insertFakeRootElement(){t._insertFakeRootElement.call(this),this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current,null)},_appendCommentNode(e,n){t._appendCommentNode.call(this,e,n);const r=this.treeAdapter.getChildNodes(n),a=r[r.length-1];this.treeAdapter.setNodeSourceCodeLocation(a,e.location)},_findFosterParentingLocation(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters(n){t._insertCharacters.call(this,n);const r=this._shouldFosterParentOnInsertion(),a=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(a),o=i[r&&e.lastFosterParentingLocation.beforeElement?i.indexOf(e.lastFosterParentingLocation.beforeElement)-1:i.length-1],s=this.treeAdapter.getNodeSourceCodeLocation(o);s?(s.endLine=n.location.endLine,s.endCol=n.location.endCol,s.endOffset=n.location.endOffset):this.treeAdapter.setNodeSourceCodeLocation(o,n.location)}}}};var Jr=class extends Wr{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){const t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}};var ea=class extends Jr{constructor(e,t){super(e,t),this.posTracker=Wr.install(e,Qr),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}};var ta=class extends Jr{constructor(e,t){super(e,t);const n=Wr.install(e.preprocessor,ea,t);this.posTracker=n.posTracker}};var na=class extends Jr{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),Wr.install(this.tokenizer,ta,e.opts),Wr.install(this.tokenizer,$r)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}},ra=b(function(e,t){const{DOCUMENT_MODE:n}=kr;t.createDocument=function(){return{nodeName:"#document",mode:n.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const r=function(e){return{nodeName:"#text",value:e,parentNode:null}},a=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},i=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t<e.childNodes.length;t++)if("#documentType"===e.childNodes[t].nodeName){i=e.childNodes[t];break}i?(i.name=t,i.publicId=n,i.systemId=r):a(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){const n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}a(e,r(t))},t.insertTextBefore=function(e,t,n){const a=e.childNodes[e.childNodes.indexOf(n)-1];a&&"#text"===a.nodeName?a.value+=t:i(e,r(t),n)},t.adoptAttributes=function(e,t){const n=[];for(let t=0;t<e.attrs.length;t++)n.push(e.attrs[t].name);for(let r=0;r<t.length;r++)-1===n.indexOf(t[r].name)&&e.attrs.push(t[r])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation}}),aa=(ra.createDocument,ra.createDocumentFragment,ra.createElement,ra.createCommentNode,ra.appendChild,ra.insertBefore,ra.setTemplateContent,ra.getTemplateContent,ra.setDocumentType,ra.setDocumentMode,ra.getDocumentMode,ra.detachNode,ra.insertText,ra.insertTextBefore,ra.adoptAttributes,ra.getFirstChild,ra.getChildNodes,ra.getParentNode,ra.getAttrList,ra.getTagName,ra.getNamespaceURI,ra.getTextNodeContent,ra.getCommentNodeContent,ra.getDocumentTypeNodeName,ra.getDocumentTypeNodePublicId,ra.getDocumentTypeNodeSystemId,ra.isTextNode,ra.isCommentNode,ra.isDocumentTypeNode,ra.isElementNode,ra.setNodeSourceCodeLocation,ra.getNodeSourceCodeLocation,function(e,t){return[e,t=t||Object.create(null)].reduce((e,t)=>(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))});const{DOCUMENT_MODE:ia}=kr,oa=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],sa=oa.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),la=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],ca=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],da=ca.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function _a(e){const t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function ua(e,t){for(let n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}var ma={isConforming:function(e){return"html"===e.name&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)},getDocumentMode:function(e){if("html"!==e.name)return ia.QUIRKS;const t=e.systemId;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return ia.QUIRKS;let n=e.publicId;if(null!==n){if(n=n.toLowerCase(),la.indexOf(n)>-1)return ia.QUIRKS;let e=null===t?sa:oa;if(ua(n,e))return ia.QUIRKS;if(ua(n,e=null===t?ca:da))return ia.LIMITED_QUIRKS}return ia.NO_QUIRKS},serializeContent:function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+_a(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+_a(n)),r}},pa=b(function(e,t){const n=kr.TAG_NAMES,r=kr.NAMESPACES,a=kr.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},s={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},l=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c={[n.B]:!0,[n.BIG]:!0,[n.BLOCKQUOTE]:!0,[n.BODY]:!0,[n.BR]:!0,[n.CENTER]:!0,[n.CODE]:!0,[n.DD]:!0,[n.DIV]:!0,[n.DL]:!0,[n.DT]:!0,[n.EM]:!0,[n.EMBED]:!0,[n.H1]:!0,[n.H2]:!0,[n.H3]:!0,[n.H4]:!0,[n.H5]:!0,[n.H6]:!0,[n.HEAD]:!0,[n.HR]:!0,[n.I]:!0,[n.IMG]:!0,[n.LI]:!0,[n.LISTING]:!0,[n.MENU]:!0,[n.META]:!0,[n.NOBR]:!0,[n.OL]:!0,[n.P]:!0,[n.PRE]:!0,[n.RUBY]:!0,[n.S]:!0,[n.SMALL]:!0,[n.SPAN]:!0,[n.STRONG]:!0,[n.STRIKE]:!0,[n.SUB]:!0,[n.SUP]:!0,[n.TABLE]:!0,[n.TT]:!0,[n.U]:!0,[n.UL]:!0,[n.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!!(t===n.FONT&&(null!==Pr.getTokenAttr(e,a.COLOR)||null!==Pr.getTokenAttr(e,a.SIZE)||null!==Pr.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=s[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){const t=l[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,s){return!(s&&s!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(let e=0;e<o.length;e++)if(o[e].name===a.ENCODING){const t=o[e].value.toLowerCase();return t===i.TEXT_HTML||t===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(s&&s!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}});pa.SVG_TAG_NAMES_ADJUSTMENT_MAP,pa.causesExit,pa.adjustTokenMathMLAttrs,pa.adjustTokenSVGAttrs,pa.adjustTokenXMLAttrs,pa.adjustTokenSVGTagName,pa.isIntegrationPoint;const ga=kr.TAG_NAMES,Ea=kr.NAMESPACES,ha=kr.ATTRS,Sa={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:ra},fa="hidden",Ta=8,ba=3,Ca="INITIAL_MODE",Na="BEFORE_HTML_MODE",va="BEFORE_HEAD_MODE",Ra="IN_HEAD_MODE",Aa="IN_HEAD_NO_SCRIPT_MODE",Oa="AFTER_HEAD_MODE",ya="IN_BODY_MODE",Ia="TEXT_MODE",Da="IN_TABLE_MODE",xa="IN_TABLE_TEXT_MODE",Ma="IN_CAPTION_MODE",wa="IN_COLUMN_GROUP_MODE",La="IN_TABLE_BODY_MODE",Pa="IN_ROW_MODE",ka="IN_CELL_MODE",Ua="IN_SELECT_MODE",Fa="IN_SELECT_IN_TABLE_MODE",Ba="IN_TEMPLATE_MODE",Ga="AFTER_BODY_MODE",Ha="IN_FRAMESET_MODE",Ya="AFTER_FRAMESET_MODE",Va="AFTER_AFTER_BODY_MODE",za="AFTER_AFTER_FRAMESET_MODE",qa={[ga.TR]:Pa,[ga.TBODY]:La,[ga.THEAD]:La,[ga.TFOOT]:La,[ga.CAPTION]:Ma,[ga.COLGROUP]:wa,[ga.TABLE]:Da,[ga.BODY]:ya,[ga.FRAMESET]:Ha},Ka={[ga.CAPTION]:Da,[ga.COLGROUP]:Da,[ga.TBODY]:Da,[ga.TFOOT]:Da,[ga.THEAD]:Da,[ga.COL]:wa,[ga.TR]:La,[ga.TD]:Pa,[ga.TH]:Pa},Wa={[Ca]:{[Pr.CHARACTER_TOKEN]:li,[Pr.NULL_CHARACTER_TOKEN]:li,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);const n=t.forceQuirks?kr.DOCUMENT_MODE.QUIRKS:ma.getDocumentMode(t);ma.isConforming(t)||e._err(Ut.nonConformingDoctype);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=Na},[Pr.START_TAG_TOKEN]:li,[Pr.END_TAG_TOKEN]:li,[Pr.EOF_TOKEN]:li},[Na]:{[Pr.CHARACTER_TOKEN]:ci,[Pr.NULL_CHARACTER_TOKEN]:ci,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?(e._insertElement(t,Ea.HTML),e.insertionMode=va):ci(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n!==ga.HTML&&n!==ga.HEAD&&n!==ga.BODY&&n!==ga.BR||ci(e,t)},[Pr.EOF_TOKEN]:ci},[va]:{[Pr.CHARACTER_TOKEN]:di,[Pr.NULL_CHARACTER_TOKEN]:di,[Pr.WHITESPACE_CHARACTER_TOKEN]:ni,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.HEAD?(e._insertElement(t,Ea.HTML),e.headElement=e.openElements.current,e.insertionMode=Ra):di(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HEAD||n===ga.BODY||n===ga.HTML||n===ga.BR?di(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:di},[Ra]:{[Pr.CHARACTER_TOKEN]:mi,[Pr.NULL_CHARACTER_TOKEN]:mi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:_i,[Pr.END_TAG_TOKEN]:ui,[Pr.EOF_TOKEN]:mi},[Aa]:{[Pr.CHARACTER_TOKEN]:pi,[Pr.NULL_CHARACTER_TOKEN]:pi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASEFONT||n===ga.BGSOUND||n===ga.HEAD||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.STYLE?_i(e,t):n===ga.NOSCRIPT?e._err(Ut.nestedNoscriptInHead):pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.NOSCRIPT?(e.openElements.pop(),e.insertionMode=Ra):n===ga.BR?pi(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:pi},[Oa]:{[Pr.CHARACTER_TOKEN]:gi,[Pr.NULL_CHARACTER_TOKEN]:gi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ri,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BODY?(e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=ya):n===ga.FRAMESET?(e._insertElement(t,Ea.HTML),e.insertionMode=Ha):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE?(e._err(Ut.abandonedHeadElementChild),e.openElements.push(e.headElement),_i(e,t),e.openElements.remove(e.headElement)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.BODY||n===ga.HTML||n===ga.BR?gi(e,t):n===ga.TEMPLATE?ui(e,t):e._err(Ut.endTagWithoutMatchingOpenElement)},[Pr.EOF_TOKEN]:gi},[ya]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:yi,[Pr.END_TAG_TOKEN]:Mi,[Pr.EOF_TOKEN]:wi},[Ia]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:oi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ni,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:ni,[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[Pr.EOF_TOKEN]:function(e,t){e._err(Ut.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[Da]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Pi,[Pr.END_TAG_TOKEN]:ki,[Pr.EOF_TOKEN]:wi},[xa]:{[Pr.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[Pr.COMMENT_TOKEN]:Fi,[Pr.DOCTYPE_TOKEN]:Fi,[Pr.START_TAG_TOKEN]:Fi,[Pr.END_TAG_TOKEN]:Fi,[Pr.EOF_TOKEN]:Fi},[Ma]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE?e.openElements.hasInTableScope(ga.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Da,n===ga.TABLE&&e._processToken(t)):n!==ga.BODY&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[wa]:{[Pr.CHARACTER_TOKEN]:Bi,[Pr.NULL_CHARACTER_TOKEN]:Bi,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.COL?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TEMPLATE?_i(e,t):Bi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.COLGROUP?e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da):n===ga.TEMPLATE?ui(e,t):n!==ga.COL&&Bi(e,t)},[Pr.EOF_TOKEN]:wi},[La]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Ea.HTML),e.insertionMode=Pa):n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(ga.TR),e.insertionMode=Pa,e._processToken(t)):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da):n===ga.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=Da,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH&&n!==ga.TR)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[Pa]:{[Pr.CHARACTER_TOKEN]:Li,[Pr.NULL_CHARACTER_TOKEN]:Li,[Pr.WHITESPACE_CHARACTER_TOKEN]:Li,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TH||n===ga.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,Ea.HTML),e.insertionMode=ka,e.activeFormattingElements.insertMarker()):n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):Pi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TR?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La):n===ga.TABLE?e.openElements.hasInTableScope(ga.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(ga.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=La,e._processToken(t)):(n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP||n!==ga.HTML&&n!==ga.TD&&n!==ga.TH)&&ki(e,t)},[Pr.EOF_TOKEN]:wi},[ka]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.COL||n===ga.COLGROUP||n===ga.TBODY||n===ga.TD||n===ga.TFOOT||n===ga.TH||n===ga.THEAD||n===ga.TR?(e.openElements.hasInTableScope(ga.TD)||e.openElements.hasInTableScope(ga.TH))&&(e._closeTableCell(),e._processToken(t)):yi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Pa):n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&Mi(e,t)},[Pr.EOF_TOKEN]:wi},[Ua]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:Gi,[Pr.END_TAG_TOKEN]:Hi,[Pr.EOF_TOKEN]:wi},[Fa]:{[Pr.CHARACTER_TOKEN]:oi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Gi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.CAPTION||n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR||n===ga.TD||n===ga.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),e._processToken(t)):Hi(e,t)},[Pr.EOF_TOKEN]:wi},[Ba]:{[Pr.CHARACTER_TOKEN]:hi,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;if(n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META||n===ga.NOFRAMES||n===ga.SCRIPT||n===ga.STYLE||n===ga.TEMPLATE||n===ga.TITLE)_i(e,t);else{const r=Ka[n]||ya;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.TEMPLATE&&ui(e,t)},[Pr.EOF_TOKEN]:Yi},[Ga]:{[Pr.CHARACTER_TOKEN]:Vi,[Pr.NULL_CHARACTER_TOKEN]:Vi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):Vi(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?e.fragmentContext||(e.insertionMode=Va):Vi(e,t)},[Pr.EOF_TOKEN]:si},[Ha]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.FRAMESET?e._insertElement(t,Ea.HTML):n===ga.FRAME?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName!==ga.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===ga.FRAMESET||(e.insertionMode=Ya))},[Pr.EOF_TOKEN]:si},[Ya]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:oi,[Pr.COMMENT_TOKEN]:ai,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML&&(e.insertionMode=za)},[Pr.EOF_TOKEN]:si},[Va]:{[Pr.CHARACTER_TOKEN]:zi,[Pr.NULL_CHARACTER_TOKEN]:zi,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){t.tagName===ga.HTML?yi(e,t):zi(e,t)},[Pr.END_TAG_TOKEN]:zi,[Pr.EOF_TOKEN]:si},[za]:{[Pr.CHARACTER_TOKEN]:ni,[Pr.NULL_CHARACTER_TOKEN]:ni,[Pr.WHITESPACE_CHARACTER_TOKEN]:Ei,[Pr.COMMENT_TOKEN]:ii,[Pr.DOCTYPE_TOKEN]:ni,[Pr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.NOFRAMES&&_i(e,t)},[Pr.END_TAG_TOKEN]:ni,[Pr.EOF_TOKEN]:si}};var Qa=class{constructor(e){this.options=aa(Sa,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&Wr.install(this,Zr),this.options.onParseError&&Wr.install(this,na,{onParseError:this.options.onParseError})}parse(e){const t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(ga.TEMPLATE,Ea.HTML,[]));const n=this.treeAdapter.createElement("documentmock",Ea.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===ga.TEMPLATE&&this._pushTmplInsertionMode(Ba),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);const r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new Pr(this.options),this.stopped=!1,this.insertionMode=Ca,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Yr(this.document,this.treeAdapter),this.activeFormattingElements=new qr(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(t.type===Pr.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===Pr.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){const e=this.pendingScript;return this.pendingScript=null,void t(e)}e&&e()}_setupTokenizerCDATAMode(){const e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==Ea.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,Ea.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=Ia}switchToPlaintextParsing(){this.insertionMode=Ia,this.originalInsertionMode=ya,this.tokenizer.state=Pr.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===ga.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===Ea.HTML){const e=this.treeAdapter.getTagName(this.fragmentContext);e===ga.TITLE||e===ga.TEXTAREA?this.tokenizer.state=Pr.MODE.RCDATA:e===ga.STYLE||e===ga.XMP||e===ga.IFRAME||e===ga.NOEMBED||e===ga.NOFRAMES||e===ga.NOSCRIPT?this.tokenizer.state=Pr.MODE.RAWTEXT:e===ga.SCRIPT?this.tokenizer.state=Pr.MODE.SCRIPT_DATA:e===ga.PLAINTEXT&&(this.tokenizer.state=Pr.MODE.PLAINTEXT)}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){const t=this.treeAdapter.createElement(e,Ea.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,Ea.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(ga.HTML,Ea.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){const t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;const n=this.treeAdapter.getNamespaceURI(t);if(n===Ea.HTML)return!1;if(this.treeAdapter.getTagName(t)===ga.ANNOTATION_XML&&n===Ea.MATHML&&e.type===Pr.START_TAG_TOKEN&&e.tagName===ga.SVG)return!1;const r=e.type===Pr.CHARACTER_TOKEN||e.type===Pr.NULL_CHARACTER_TOKEN||e.type===Pr.WHITESPACE_CHARACTER_TOKEN;return!((e.type===Pr.START_TAG_TOKEN&&e.tagName!==ga.MGLYPH&&e.tagName!==ga.MALIGNMARK||r)&&this._isIntegrationPoint(t,Ea.MATHML)||(e.type===Pr.START_TAG_TOKEN||r)&&this._isIntegrationPoint(t,Ea.HTML)||e.type===Pr.EOF_TOKEN)}_processToken(e){Wa[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){Wa[ya][e.type](this,e)}_processTokenInForeignContent(e){e.type===Pr.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===Pr.NULL_CHARACTER_TOKEN?function(e,t){t.chars=kt.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===Pr.WHITESPACE_CHARACTER_TOKEN?oi(this,e):e.type===Pr.COMMENT_TOKEN?ai(this,e):e.type===Pr.START_TAG_TOKEN?function(e,t){if(pa.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Ea.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===Ea.MATHML?pa.adjustTokenMathMLAttrs(t):r===Ea.SVG&&(pa.adjustTokenSVGTagName(t),pa.adjustTokenSVGAttrs(t)),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===Pr.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===Ea.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===Pr.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(Ut.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){const n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return pa.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.length;if(e){let t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===qr.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(let r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=Pa}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(ga.P),this.openElements.popUntilTagNamePopped(ga.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop,t=!1;e>=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));const r=this.treeAdapter.getTagName(n),a=qa[r];if(a){this.insertionMode=a;break}if(!(t||r!==ga.TD&&r!==ga.TH)){this.insertionMode=ka;break}if(!t&&r===ga.HEAD){this.insertionMode=Ra;break}if(r===ga.SELECT){this._resetInsertionModeForSelect(e);break}if(r===ga.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===ga.HTML){this.insertionMode=this.headElement?Oa:va;break}if(t){this.insertionMode=ya;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===ga.TEMPLATE)break;if(n===ga.TABLE)return void(this.insertionMode=Fa)}this.insertionMode=Ua}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){const t=this.treeAdapter.getTagName(e);return t===ga.TABLE||t===ga.TBODY||t===ga.TFOOT||t===ga.THEAD||t===ga.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){const e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===ga.TEMPLATE&&a===Ea.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===ga.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return kr.SPECIAL_ELEMENTS[n][t]}};function $a(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):xi(e,t),n}function ja(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){const a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function Xa(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);const n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=ba;!n||s?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=Za(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function Za(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function Ja(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{const r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===ga.TEMPLATE&&a===Ea.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function ei(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function ti(e,t){let n;for(let r=0;r<Ta&&(n=$a(e,t));r++){const t=ja(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;const r=Xa(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),Ja(e,a,r),ei(e,t,n)}}function ni(){}function ri(e){e._err(Ut.misplacedDoctype)}function ai(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function ii(e,t){e._appendCommentNode(t,e.document)}function oi(e,t){e._insertCharacters(t)}function si(e){e.stopped=!0}function li(e,t){e._err(Ut.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,kr.DOCUMENT_MODE.QUIRKS),e.insertionMode=Na,e._processToken(t)}function ci(e,t){e._insertFakeRootElement(),e.insertionMode=va,e._processToken(t)}function di(e,t){e._insertFakeElement(ga.HEAD),e.headElement=e.openElements.current,e.insertionMode=Ra,e._processToken(t)}function _i(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.BASE||n===ga.BASEFONT||n===ga.BGSOUND||n===ga.LINK||n===ga.META?(e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0):n===ga.TITLE?e._switchToTextParsing(t,Pr.MODE.RCDATA):n===ga.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):(e._insertElement(t,Ea.HTML),e.insertionMode=Aa):n===ga.NOFRAMES||n===ga.STYLE?e._switchToTextParsing(t,Pr.MODE.RAWTEXT):n===ga.SCRIPT?e._switchToTextParsing(t,Pr.MODE.SCRIPT_DATA):n===ga.TEMPLATE?(e._insertTemplate(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=Ba,e._pushTmplInsertionMode(Ba)):n===ga.HEAD?e._err(Ut.misplacedStartTagForHeadElement):mi(e,t)}function ui(e,t){const n=t.tagName;n===ga.HEAD?(e.openElements.pop(),e.insertionMode=Oa):n===ga.BODY||n===ga.BR||n===ga.HTML?mi(e,t):n===ga.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==ga.TEMPLATE&&e._err(Ut.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(Ut.endTagWithoutMatchingOpenElement)}function mi(e,t){e.openElements.pop(),e.insertionMode=Oa,e._processToken(t)}function pi(e,t){const n=t.type===Pr.EOF_TOKEN?Ut.openElementsLeftAfterEof:Ut.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=Ra,e._processToken(t)}function gi(e,t){e._insertFakeElement(ga.BODY),e.insertionMode=ya,e._processToken(t)}function Ei(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function hi(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function Si(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}function fi(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function Ti(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function bi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function Ci(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Ni(e,t){e._appendElement(t,Ea.HTML),t.ackSelfClosing=!0}function vi(e,t){e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}function Ri(e,t){e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function Ai(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Ea.HTML)}function Oi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML)}function yi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.I||n===ga.S||n===ga.B||n===ga.U?Ti(e,t):n===ga.P?Si(e,t):n===ga.A?function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(ga.A);n&&(ti(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):Oi(e,t);break;case 2:n===ga.DL||n===ga.OL||n===ga.UL?Si(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement();const n=e.openElements.currentTagName;n!==ga.H1&&n!==ga.H2&&n!==ga.H3&&n!==ga.H4&&n!==ga.H5&&n!==ga.H6||e.openElements.pop(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.LI||n===ga.DD||n===ga.DT?function(e,t){e.framesetOk=!1;const n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.items[t],a=e.treeAdapter.getTagName(r);let i=null;if(n===ga.LI&&a===ga.LI?i=ga.LI:n!==ga.DD&&n!==ga.DT||a!==ga.DD&&a!==ga.DT||(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==ga.ADDRESS&&a!==ga.DIV&&a!==ga.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n===ga.EM||n===ga.TT?Ti(e,t):n===ga.BR?Ci(e,t):n===ga.HR?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._appendElement(t,Ea.HTML),e.framesetOk=!1,e.ackSelfClosing=!0}(e,t):n===ga.RB?Ai(e,t):n===ga.RT||n===ga.RP?function(e,t){e.openElements.hasInScope(ga.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(ga.RTC),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.TH&&n!==ga.TD&&n!==ga.TR&&Oi(e,t);break;case 3:n===ga.DIV||n===ga.DIR||n===ga.NAV?Si(e,t):n===ga.PRE?fi(e,t):n===ga.BIG?Ti(e,t):n===ga.IMG||n===ga.WBR?Ci(e,t):n===ga.XMP?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SVG?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenSVGAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.SVG):e._insertElement(t,Ea.SVG),t.ackSelfClosing=!0}(e,t):n===ga.RTC?Ai(e,t):n!==ga.COL&&Oi(e,t);break;case 4:n===ga.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t):n===ga.BASE||n===ga.LINK||n===ga.META?_i(e,t):n===ga.BODY?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===ga.MAIN||n===ga.MENU?Si(e,t):n===ga.FORM?function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===ga.CODE||n===ga.FONT?Ti(e,t):n===ga.NOBR?function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(ga.NOBR)&&(ti(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Ea.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):n===ga.AREA?Ci(e,t):n===ga.MATH?function(e,t){e._reconstructActiveFormattingElements(),pa.adjustTokenMathMLAttrs(t),pa.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ea.MATHML):e._insertElement(t,Ea.MATHML),t.ackSelfClosing=!0}(e,t):n===ga.MENU?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML)}(e,t):n!==ga.HEAD&&Oi(e,t);break;case 5:n===ga.STYLE||n===ga.TITLE?_i(e,t):n===ga.ASIDE?Si(e,t):n===ga.SMALL?Ti(e,t):n===ga.TABLE?function(e,t){e.treeAdapter.getDocumentMode(e.document)!==kr.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode=Da}(e,t):n===ga.EMBED?Ci(e,t):n===ga.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ea.HTML);const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===ga.PARAM||n===ga.TRACK?Ni(e,t):n===ga.IMAGE?function(e,t){t.tagName=ga.IMG,Ci(e,t)}(e,t):n!==ga.FRAME&&n!==ga.TBODY&&n!==ga.TFOOT&&n!==ga.THEAD&&Oi(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Si(e,t):n===ga.BUTTON?function(e,t){e.openElements.hasInScope(ga.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ga.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1}(e,t):n===ga.STRIKE||n===ga.STRONG?Ti(e,t):n===ga.APPLET||n===ga.OBJECT?bi(e,t):n===ga.KEYGEN?Ci(e,t):n===ga.SOURCE?Ni(e,t):n===ga.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,Pr.MODE.RAWTEXT)}(e,t):n===ga.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ea.HTML),e.framesetOk=!1,e.insertionMode===Da||e.insertionMode===Ma||e.insertionMode===La||e.insertionMode===Pa||e.insertionMode===ka?e.insertionMode=Fa:e.insertionMode=Ua}(e,t):n===ga.OPTION?Ri(e,t):Oi(e,t);break;case 7:n===ga.BGSOUND?_i(e,t):n===ga.DETAILS||n===ga.ADDRESS||n===ga.ARTICLE||n===ga.SECTION||n===ga.SUMMARY?Si(e,t):n===ga.LISTING?fi(e,t):n===ga.MARQUEE?bi(e,t):n===ga.NOEMBED?vi(e,t):n!==ga.CAPTION&&Oi(e,t);break;case 8:n===ga.BASEFONT?_i(e,t):n===ga.FRAMESET?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Ea.HTML),e.insertionMode=Ha)}(e,t):n===ga.FIELDSET?Si(e,t):n===ga.TEXTAREA?function(e,t){e._insertElement(t,Ea.HTML),e.skipNextNewLine=!0,e.tokenizer.state=Pr.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=Ia}(e,t):n===ga.TEMPLATE?_i(e,t):n===ga.NOSCRIPT?e.options.scriptingEnabled?vi(e,t):Oi(e,t):n===ga.OPTGROUP?Ri(e,t):n!==ga.COLGROUP&&Oi(e,t);break;case 9:n===ga.PLAINTEXT?function(e,t){e.openElements.hasInButtonScope(ga.P)&&e._closePElement(),e._insertElement(t,Ea.HTML),e.tokenizer.state=Pr.MODE.PLAINTEXT}(e,t):Oi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Si(e,t):Oi(e,t);break;default:Oi(e,t)}}function Ii(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Di(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function xi(e,t){const n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){const r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function Mi(e,t){const n=t.tagName;switch(n.length){case 1:n===ga.A||n===ga.B||n===ga.I||n===ga.S||n===ga.U?ti(e,t):n===ga.P?function(e){e.openElements.hasInButtonScope(ga.P)||e._insertFakeElement(ga.P),e._closePElement()}(e):xi(e,t);break;case 2:n===ga.DL||n===ga.UL||n===ga.OL?Ii(e,t):n===ga.LI?function(e){e.openElements.hasInListItemScope(ga.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(ga.LI),e.openElements.popUntilTagNamePopped(ga.LI))}(e):n===ga.DD||n===ga.DT?function(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===ga.H1||n===ga.H2||n===ga.H3||n===ga.H4||n===ga.H5||n===ga.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):n===ga.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(ga.BR),e.openElements.pop(),e.framesetOk=!1}(e):n===ga.EM||n===ga.TT?ti(e,t):xi(e,t);break;case 3:n===ga.BIG?ti(e,t):n===ga.DIR||n===ga.DIV||n===ga.NAV||n===ga.PRE?Ii(e,t):xi(e,t);break;case 4:n===ga.BODY?function(e){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga)}(e):n===ga.HTML?function(e,t){e.openElements.hasInScope(ga.BODY)&&(e.insertionMode=Ga,e._processToken(t))}(e,t):n===ga.FORM?function(e){const t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(ga.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(ga.FORM):e.openElements.remove(n))}(e):n===ga.CODE||n===ga.FONT||n===ga.NOBR?ti(e,t):n===ga.MAIN||n===ga.MENU?Ii(e,t):xi(e,t);break;case 5:n===ga.ASIDE?Ii(e,t):n===ga.SMALL?ti(e,t):xi(e,t);break;case 6:n===ga.CENTER||n===ga.FIGURE||n===ga.FOOTER||n===ga.HEADER||n===ga.HGROUP||n===ga.DIALOG?Ii(e,t):n===ga.APPLET||n===ga.OBJECT?Di(e,t):n===ga.STRIKE||n===ga.STRONG?ti(e,t):xi(e,t);break;case 7:n===ga.ADDRESS||n===ga.ARTICLE||n===ga.DETAILS||n===ga.SECTION||n===ga.SUMMARY||n===ga.LISTING?Ii(e,t):n===ga.MARQUEE?Di(e,t):xi(e,t);break;case 8:n===ga.FIELDSET?Ii(e,t):n===ga.TEMPLATE?ui(e,t):xi(e,t);break;case 10:n===ga.BLOCKQUOTE||n===ga.FIGCAPTION?Ii(e,t):xi(e,t);break;default:xi(e,t)}}function wi(e,t){e.tmplInsertionModeStackTop>-1?Yi(e,t):e.stopped=!0}function Li(e,t){const n=e.openElements.currentTagName;n===ga.TABLE||n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD||n===ga.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=xa,e._processToken(t)):Ui(e,t)}function Pi(e,t){const n=t.tagName;switch(n.length){case 2:n===ga.TD||n===ga.TH||n===ga.TR?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.TBODY),e.insertionMode=La,e._processToken(t)}(e,t):Ui(e,t);break;case 3:n===ga.COL?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ga.COLGROUP),e.insertionMode=wa,e._processToken(t)}(e,t):Ui(e,t);break;case 4:n===ga.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,Ea.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t):Ui(e,t);break;case 5:n===ga.TABLE?function(e,t){e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode(),e._processToken(t))}(e,t):n===ga.STYLE?_i(e,t):n===ga.TBODY||n===ga.TFOOT||n===ga.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=La}(e,t):n===ga.INPUT?function(e,t){const n=Pr.getTokenAttr(t,ha.TYPE);n&&n.toLowerCase()===fa?e._appendElement(t,Ea.HTML):Ui(e,t),t.ackSelfClosing=!0}(e,t):Ui(e,t);break;case 6:n===ga.SCRIPT?_i(e,t):Ui(e,t);break;case 7:n===ga.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Ea.HTML),e.insertionMode=Ma}(e,t):Ui(e,t);break;case 8:n===ga.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ea.HTML),e.insertionMode=wa}(e,t):n===ga.TEMPLATE?_i(e,t):Ui(e,t);break;default:Ui(e,t)}}function ki(e,t){const n=t.tagName;n===ga.TABLE?e.openElements.hasInTableScope(ga.TABLE)&&(e.openElements.popUntilTagNamePopped(ga.TABLE),e._resetInsertionMode()):n===ga.TEMPLATE?ui(e,t):n!==ga.BODY&&n!==ga.CAPTION&&n!==ga.COL&&n!==ga.COLGROUP&&n!==ga.HTML&&n!==ga.TBODY&&n!==ga.TD&&n!==ga.TFOOT&&n!==ga.TH&&n!==ga.THEAD&&n!==ga.TR&&Ui(e,t)}function Ui(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function Fi(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Ui(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)}function Bi(e,t){e.openElements.currentTagName===ga.COLGROUP&&(e.openElements.pop(),e.insertionMode=Da,e._processToken(t))}function Gi(e,t){const n=t.tagName;n===ga.HTML?yi(e,t):n===ga.OPTION?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.OPTGROUP?(e.openElements.currentTagName===ga.OPTION&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Ea.HTML)):n===ga.INPUT||n===ga.KEYGEN||n===ga.TEXTAREA||n===ga.SELECT?e.openElements.hasInSelectScope(ga.SELECT)&&(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode(),n!==ga.SELECT&&e._processToken(t)):n!==ga.SCRIPT&&n!==ga.TEMPLATE||_i(e,t)}function Hi(e,t){const n=t.tagName;if(n===ga.OPTGROUP){const t=e.openElements.items[e.openElements.stackTop-1],n=t&&e.treeAdapter.getTagName(t);e.openElements.currentTagName===ga.OPTION&&n===ga.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===ga.OPTGROUP&&e.openElements.pop()}else n===ga.OPTION?e.openElements.currentTagName===ga.OPTION&&e.openElements.pop():n===ga.SELECT&&e.openElements.hasInSelectScope(ga.SELECT)?(e.openElements.popUntilTagNamePopped(ga.SELECT),e._resetInsertionMode()):n===ga.TEMPLATE&&ui(e,t)}function Yi(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(ga.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function Vi(e,t){e.insertionMode=ya,e._processToken(t)}function zi(e,t){e.insertionMode=ya,e._processToken(t)}var qi=Wi,Ki=Wi.prototype;function Wi(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}Ki.space=null,Ki.normal={},Ki.property={};var Qi=function(t){var n,r,a=t.length,i=[],o=[],s=-1;for(;++s<a;)n=t[s],i.push(n.property),o.push(n.normal),r=n.space;return new qi(e.apply(null,i),e.apply(null,o),r)};var $i=function(e){return e.toLowerCase()};var ji=Zi,Xi=Zi.prototype;function Zi(e,t){this.property=e,this.attribute=t}Xi.space=null,Xi.attribute=null,Xi.property=null,Xi.boolean=!1,Xi.booleanish=!1,Xi.overloadedBoolean=!1,Xi.number=!1,Xi.commaSeparated=!1,Xi.spaceSeparated=!1,Xi.commaOrSpaceSeparated=!1,Xi.mustUseProperty=!1,Xi.defined=!1;var Ji=0;function eo(){return Math.pow(2,++Ji)}var to={boolean:eo(),booleanish:eo(),overloadedBoolean:eo(),number:eo(),spaceSeparated:eo(),commaSeparated:eo(),commaOrSpaceSeparated:eo()},no=io;io.prototype=new ji,io.prototype.defined=!0;var ro=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],ao=ro.length;function io(e,t,n,r){var a,i=-1;for(oo(this,"space",r),ji.call(this,e,t);++i<ao;)oo(this,a=ro[i],(n&to[a])===to[a])}function oo(e,t,n){n&&(e[t]=n)}var so=function(e){var t,n,r=e.space,a=e.mustUseProperty||[],i=e.attributes||{},o=e.properties,s=e.transform,l={},c={};for(t in o)n=new no(t,s(i,t),o[t],r),-1!==a.indexOf(t)&&(n.mustUseProperty=!0),l[t]=n,c[$i(t)]=t,c[$i(n.attribute)]=t;return new qi(l,c,r)};var lo=so({space:"xlink",transform:function(e,t){return"xlink:"+t.slice(5).toLowerCase()},properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}});var co=so({space:"xml",transform:function(e,t){return"xml:"+t.slice(3).toLowerCase()},properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});var _o=function(e,t){return t in e?e[t]:t};var uo=function(e,t){return _o(e,t.toLowerCase())};var mo=so({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:uo,properties:{xmlns:null,xmlnsXLink:null}}),po=to.booleanish,go=to.number,Eo=to.spaceSeparated,ho=so({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:po,ariaAutoComplete:null,ariaBusy:po,ariaChecked:po,ariaColCount:go,ariaColIndex:go,ariaColSpan:go,ariaControls:Eo,ariaCurrent:null,ariaDescribedBy:Eo,ariaDetails:null,ariaDisabled:po,ariaDropEffect:Eo,ariaErrorMessage:null,ariaExpanded:po,ariaFlowTo:Eo,ariaGrabbed:po,ariaHasPopup:null,ariaHidden:po,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Eo,ariaLevel:go,ariaLive:null,ariaModal:po,ariaMultiLine:po,ariaMultiSelectable:po,ariaOrientation:null,ariaOwns:Eo,ariaPlaceholder:null,ariaPosInSet:go,ariaPressed:po,ariaReadOnly:po,ariaRelevant:null,ariaRequired:po,ariaRoleDescription:Eo,ariaRowCount:go,ariaRowIndex:go,ariaRowSpan:go,ariaSelected:po,ariaSetSize:go,ariaSort:null,ariaValueMax:go,ariaValueMin:go,ariaValueNow:go,ariaValueText:null,role:null}});var So=to.boolean,fo=to.overloadedBoolean,To=to.booleanish,bo=to.number,Co=to.spaceSeparated,No=to.commaSeparated,vo=Qi([co,lo,mo,ho,so({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:uo,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:No,acceptCharset:Co,accessKey:Co,action:null,allow:null,allowFullScreen:So,allowPaymentRequest:So,allowUserMedia:So,alt:null,as:null,async:So,autoCapitalize:null,autoComplete:Co,autoFocus:So,autoPlay:So,capture:So,charSet:null,checked:So,cite:null,className:Co,cols:bo,colSpan:null,content:null,contentEditable:To,controls:So,controlsList:Co,coords:bo|No,crossOrigin:null,data:null,dateTime:null,decoding:null,default:So,defer:So,dir:null,dirName:null,disabled:So,download:fo,draggable:To,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:So,formTarget:null,headers:Co,height:bo,hidden:So,high:bo,href:null,hrefLang:null,htmlFor:Co,httpEquiv:Co,id:null,imageSizes:null,imageSrcSet:No,inputMode:null,integrity:null,is:null,isMap:So,itemId:null,itemProp:Co,itemRef:Co,itemScope:So,itemType:Co,kind:null,label:null,lang:null,language:null,list:null,loop:So,low:bo,manifest:null,max:null,maxLength:bo,media:null,method:null,min:null,minLength:bo,multiple:So,muted:So,name:null,nonce:null,noModule:So,noValidate:So,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:So,optimum:bo,pattern:null,ping:Co,placeholder:null,playsInline:So,poster:null,preload:null,readOnly:So,referrerPolicy:null,rel:Co,required:So,reversed:So,rows:bo,rowSpan:bo,sandbox:Co,scope:null,scoped:So,seamless:So,selected:So,shape:null,size:bo,sizes:null,slot:null,span:bo,spellCheck:To,src:null,srcDoc:null,srcLang:null,srcSet:No,start:bo,step:null,style:null,tabIndex:bo,target:null,title:null,translate:null,type:null,typeMustMatch:So,useMap:null,value:To,width:bo,wrap:null,align:null,aLink:null,archive:Co,axis:null,background:null,bgColor:null,border:bo,borderColor:null,bottomMargin:bo,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:So,declare:So,event:null,face:null,frame:null,frameBorder:null,hSpace:bo,leftMargin:bo,link:null,longDesc:null,lowSrc:null,marginHeight:bo,marginWidth:bo,noResize:So,noHref:So,noShade:So,noWrap:So,object:null,profile:null,prompt:null,rev:null,rightMargin:bo,rules:null,scheme:null,scrolling:To,standby:null,summary:null,text:null,topMargin:bo,valueType:null,version:null,vAlign:null,vLink:null,vSpace:bo,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:So,prefix:null,property:null,results:bo,security:null,unselectable:null}})]),Ro=to.boolean,Ao=to.number,Oo=to.spaceSeparated,yo=to.commaSeparated,Io=to.commaOrSpaceSeparated,Do=Qi([co,lo,mo,ho,so({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:_o,properties:{about:Io,accentHeight:Ao,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Ao,amplitude:Ao,arabicForm:null,ascent:Ao,attributeName:null,attributeType:null,azimuth:Ao,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Ao,by:null,calcMode:null,capHeight:Ao,className:Oo,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Ao,diffuseConstant:Ao,direction:null,display:null,dur:null,divisor:Ao,dominantBaseline:null,download:Ro,dx:null,dy:null,edgeMode:null,editable:null,elevation:Ao,enableBackground:null,end:null,event:null,exponent:Ao,externalResourcesRequired:null,fill:null,fillOpacity:Ao,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:yo,g2:yo,glyphName:yo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Ao,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Ao,horizOriginX:Ao,horizOriginY:Ao,id:null,ideographic:Ao,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Ao,k:Ao,k1:Ao,k2:Ao,k3:Ao,k4:Ao,kernelMatrix:Io,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Ao,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Ao,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Ao,overlineThickness:Ao,paintOrder:null,panose1:null,path:null,pathLength:Ao,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Oo,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Ao,pointsAtY:Ao,pointsAtZ:Ao,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Io,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Io,rev:Io,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Io,requiredFeatures:Io,requiredFonts:Io,requiredFormats:Io,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Ao,specularExponent:Ao,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Ao,strikethroughThickness:Ao,string:null,stroke:null,strokeDashArray:Io,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Ao,strokeOpacity:Ao,strokeWidth:null,style:null,surfaceScale:Ao,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Io,tabIndex:Ao,tableValues:null,target:null,targetX:Ao,targetY:Ao,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Io,to:null,transform:null,u1:null,u2:null,underlinePosition:Ao,underlineThickness:Ao,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Ao,values:null,vAlphabetic:Ao,vMathematical:Ao,vectorEffect:null,vHanging:Ao,vIdeographic:Ao,version:null,vertAdvY:Ao,vertOriginX:Ao,vertOriginY:Ao,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Ao,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}})]),xo="data",Mo=function(e,t){var n=$i(t),r=t,a=ji;if(n in e.normal)return e.property[e.normal[n]];n.length>4&&n.slice(0,4)===xo&&wo.test(t)&&("-"===t.charAt(4)?r=function(e){var t=e.slice(5).replace(Lo,Uo);return xo+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(Lo.test(t))return e;"-"!==(t=t.replace(Po,ko)).charAt(0)&&(t="-"+t);return xo+t}(t),a=no);return new a(r,t)},wo=/^data[-a-z0-9.:_]+$/i,Lo=/-[a-z]/g,Po=/[A-Z]/g;function ko(e){return"-"+e.toLowerCase()}function Uo(e){return e.charAt(1).toUpperCase()}const Fo="http://www.w3.org/1999/xhtml",Bo="http://www.w3.org/1998/Math/MathML",Go="http://www.w3.org/2000/svg",Ho="http://www.w3.org/1999/xlink",Yo="http://www.w3.org/XML/1998/namespace",Vo="http://www.w3.org/2000/xmlns/";var zo={html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo},qo=Object.freeze({html:Fo,mathml:Bo,svg:Go,xlink:Ho,xml:Yo,xmlns:Vo,default:zo}),Ko=Object.freeze({default:["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","solidColor","textArea","textPath"]}),Wo=function(e,t){var n,r,a,i,o,s=e||"",l=t||"div",c={},d=-1,_=s.length;for(;++d<=_;)(a=s.charCodeAt(d))&&a!==$o&&a!==Qo||((i=s.slice(o,d))&&(r===$o?n?n.push(i):(n=[i],c.className=n):r===Qo?c.id=i:l=i),o=d+1,r=a);return{type:"element",tagName:l,properties:c,children:[]}},Qo=35,$o=46;var jo=function(e){var t=String(e||Zo).trim();return t===Zo?[]:t.split(es)},Xo=function(e){return e.join(Jo).trim()},Zo="",Jo=" ",es=/[ \t\n\r\f]+/g;var ts={parse:jo,stringify:Xo},ns=function(e){var t,n=[],r=String(e||os),a=r.indexOf(as),i=0,o=!1;for(;!o;)-1===a&&(a=r.length,o=!0),!(t=r.slice(i,a).trim())&&o||n.push(t),i=a+1,a=r.indexOf(as,i);return n},rs=function(e,t){var n=t||{},r=!1===n.padLeft?os:is,a=n.padRight?is:os;e[e.length-1]===os&&(e=e.concat(os));return e.join(a+as+r).trim()},as=",",is=" ",os="";var ss={parse:ns,stringify:rs},ls=ts.parse,cs=ss.parse,ds=function(e,t,n){var r=n?function(e){var t,n=e.length,r=-1,a={};for(;++r<n;)t=e[r],a[t.toLowerCase()]=t;return a}(n):null;return function(e,n){var i,o=Wo(e,t),s=Array.prototype.slice.call(arguments,2),l=o.tagName.toLowerCase();o.tagName=r&&_s.call(r,l)?r[l]:l,n&&function(e,t){return"string"==typeof e||"length"in e||function(e,t){var n=t.type;return!("input"===e||!n||"string"!=typeof n)&&("object"==typeof t.children&&"length"in t.children||(n=n.toLowerCase(),"button"===e?"menu"!==n&&"submit"!==n&&"reset"!==n&&"button"!==n:"value"in t))}(t.tagName,e)}(n,o)&&(s.unshift(n),n=null);if(n)for(i in n)a(o.properties,i,n[i]);(function e(t,n){var r,a;if("string"!=typeof n&&"number"!=typeof n)if("object"==typeof n&&"length"in n)for(r=-1,a=n.length;++r<a;)e(t,n[r]);else{if("object"!=typeof n||!("type"in n))throw new Error("Expected node, nodes, or string, got `"+n+"`");t.push(n)}else t.push({type:"text",value:String(n)})})(o.children,s),"template"===o.tagName&&(o.content={type:"root",children:o.children},o.children=[]);return o};function a(t,n,r){var a,i,o;null!==r&&void 0!==r&&r==r&&(a=Mo(e,n),i=a.property,"string"==typeof(o=r)&&(a.spaceSeparated?o=ls(o):a.commaSeparated?o=cs(o):a.commaOrSpaceSeparated&&(o=ls(cs(o).join(" ")))),"style"===i&&"string"!=typeof r&&(o=function(e){var t,n=[];for(t in e)n.push([t,e[t]].join(": "));return n.join("; ")}(o)),"className"===i&&t.className&&(o=t.className.concat(o)),t[i]=function(e,t,n){var r,a,i;if("object"!=typeof n||!("length"in n))return us(e,t,n);a=n.length,r=-1,i=[];for(;++r<a;)i[r]=us(e,t,n[r]);return i}(a,i,o))}},_s={}.hasOwnProperty;function us(e,t,n){var r=n;return e.number||e.positiveNumber?isNaN(r)||""===r||(r=Number(r)):(e.boolean||e.overloadedBoolean)&&("string"!=typeof r||""!==r&&$i(n)!==$i(t)||(r=!0)),r}var ms=C(Ko),ps=ds(Do,"g",ms);ps.displayName="svg";var gs=ps,Es=ds(vo,"div");Es.displayName="html";var hs=Es,Ss=function(e,t){var n,r=0;if(e=String(e),"string"!=typeof t||1!==t.length)throw new Error("Expected character");n=e.indexOf(t);for(;-1!==n;)r++,n=e.indexOf(t,n+1);return r};var fs=C(qo),Ts=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Ns(e,{schema:"svg"===r.space?Do:vo,file:n,verbose:r.verbose,location:!1})},bs={}.hasOwnProperty,Cs={"#document":vs,"#document-fragment":vs,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Ns(t,n){var r,a,i,o=n.schema,s=bs.call(Cs,t.nodeName)?Cs[t.nodeName]:Rs;return s===Rs&&(n.schema=t.namespaceURI===fs.svg?Do:vo),t.childNodes&&(r=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Ns(e[r],t);return a}(t.childNodes,n)),a=s(t,r,n),t.sourceCodeLocation&&n.file&&(i=function(t,n,r){var a,i,o,s,l,c=r.schema,d=r.verbose,_=As(n);if("element"===t.type&&(a=t.children[t.children.length-1],!n.endTag&&a&&a.position&&a.position.end&&(_.end=e(a.position.end)),d)){for(o in i=n.attrs,s={},i)l=Mo(c,o).property,s[l]=As(i[o]);t.data={position:{opening:As(n.startTag),closing:n.endTag?As(n.endTag):null,properties:s}}}return _}(a,t.sourceCodeLocation,n))&&(n.location=!0,a.position=i),n.schema=o,a}function vs(e,t,n){var r,a={type:"root",children:t,data:{}};return a.data.quirksMode="quirks"===e.mode||"limited-quirks"===e.mode,n.file&&n.location&&(r=String(n.file),a.position={start:{line:1,column:1,offset:0},end:{line:Ss(r,"\n")+1,column:r.length-r.lastIndexOf("\n"),offset:r.length}}),a}function Rs(e,t,n){for(var r,a,i,o,s,l="svg"===n.schema.space?gs:hs,c=e.tagName,d=e.attrs,_=d.length,u={},m=-1;++m<_;)u[((r=d[m]).prefix?r.prefix+":":"")+r.name]=r.value;return a=l(c,u,t),"template"===c&&"content"in e&&(o=(i=e.sourceCodeLocation)&&i.startTag&&As(i.startTag).end,s=i&&i.endTag&&As(i.endTag).start,a.content=Ns(e.content,n),(o||s)&&n.file&&(a.content.position={start:o,end:s})),a}function As(e){var t=Os({line:e.startLine,column:e.startCol,offset:e.startOffset}),n=Os({line:e.endLine,column:e.endCol,offset:e.endOffset});return t||n?{start:t,end:n}:null}function Os(e){return e.line&&e.column?e:null}var ys={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Is=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,Ds=/\n/g,xs=/^\s*/,Ms=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,ws=/^:\s*/,Ls=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Ps=/^[;\s]*/,ks=/^\s+|\s+$/g,Us="\n",Fs="/",Bs="*",Gs="",Hs="comment",Ys="declaration",Vs=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function a(e){var t=e.match(Ds);t&&(n+=t.length);var a=e.lastIndexOf(Us);r=~a?e.length-a:r+e.length}function i(){var e={line:n,column:r};return function(t){return t.position=new o(e),c(),t}}function o(e){this.start=e,this.end={line:n,column:r},this.source=t.source}function s(a){var i=new Error(t.source+":"+n+":"+r+": "+a);if(i.reason=a,i.filename=t.source,i.line=n,i.column=r,i.source=e,!t.silent)throw i}function l(t){var n=t.exec(e);if(n){var r=n[0];return a(r),e=e.slice(r.length),n}}function c(){l(xs)}function d(e){var t;for(e=e||[];t=_();)!1!==t&&e.push(t);return e}function _(){var t=i();if(Fs==e.charAt(0)&&Bs==e.charAt(1)){for(var n=2;Gs!=e.charAt(n)&&(Bs!=e.charAt(n)||Fs!=e.charAt(n+1));)++n;if(n+=2,Gs===e.charAt(n-1))return s("End of comment missing");var o=e.slice(2,n-2);return r+=2,a(o),e=e.slice(n),r+=2,t({type:Hs,comment:o})}}function u(){var e=i(),t=l(Ms);if(t){if(_(),!l(ws))return s("property missing ':'");var n=l(Ls),r=e({type:Ys,property:zs(t[0].replace(Is,Gs)),value:n?zs(n[0].replace(Is,Gs)):Gs});return l(Ps),r}}return o.prototype.content=e,c(),function(){var e,t=[];for(d(t);e=u();)!1!==e&&(t.push(e),d(t));return t}()};function zs(e){return e?e.replace(ks,Gs):Gs}var qs=function(e,t){var n,r=null;if(!e||"string"!=typeof e)return r;for(var a,i,o=Vs(e),s="function"==typeof t,l=0,c=o.length;l<c;l++)a=(n=o[l]).property,i=n.value,s?t(a,i,n):i&&(r||(r={}),r[a]=i);return r},Ks=C(Object.freeze({classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink",default:ys})),Ws=s("root"),Qs=s("element"),$s=s("text"),js=/-([a-z])/g,Xs=function(e,t,n){var r,a,i,o,s=n||{};if("function"!=typeof e)throw new Error("h is not a function");"string"==typeof s||"boolean"==typeof s?(r=s,s={}):r=s.prefix;a=function(e){var t=e&&e("div");return Boolean(t&&("_owner"in t||"_store"in t)&&null===t.key)}(e),i=function(e){var t=e&&e("div");return Boolean(t&&t.context&&t.context._isVue)}(e),o=function(e){return e&&"VirtualNode"===e("div").type}(e),(null===r||void 0===r)&&(r=(!0===a||!0===i||!0===o)&&"h-");if(Ws(t))t=1===t.children.length&&Qs(t.children[0])?t.children[0]:{type:"element",tagName:"div",properties:{},children:t.children};else if(!Qs(t))throw new Error("Expected root or element, not `"+(t&&t.type||t)+"`");return function e(t,n,r){var a=r.schema;var i=a;var o=n.tagName;var s;var l;var c;var d;var _;var u;var m;var p;var g;"html"===a.space&&"svg"===o.toLowerCase()&&(i=Do,r.schema=i);!0===r.vdom&&"html"===i.space&&(o=o.toUpperCase());s=n.properties;l={};for(d in s)Zs(l,d,s[d],r);"string"!=typeof l.style||!0!==r.vdom&&!0!==r.vue&&!0!==r.react||(l.style=function(e,t){var n={};try{qs(e,function(e,t){n[function(e){"-ms-"===e.slice(0,4)&&(e="ms-"+e.slice(4));return e.replace(js,Js)}(e)]=t})}catch(e){throw e.message=t+"[style]"+e.message.slice("undefined".length),e}return n}(l.style,o));r.prefix&&(r.key++,l.key=r.prefix+r.key);r.vdom&&"html"!==i.space&&(l.namespace=fs[i.space]);_=[];c=n.children;u=c?c.length:0;m=-1;for(;++m<u;)p=c[m],Qs(p)?_.push(e(t,p,r)):$s(p)&&_.push(p.value);g=0===_.length?t(o,l):t(o,l,_);r.schema=a;return g}(e,t,{schema:"svg"===s.space?Do:vo,prefix:r,key:0,react:a,vue:i,vdom:o,hyperscript:function(e){return Boolean(e&&e.context&&e.cleanup)}(e)})};function Zs(e,t,n,r){var a,i=r.hyperscript||r.vdom||r.vue,o=r.schema,s=Mo(o,t);null===n||void 0===n||n!=n||i&&!1===n||i&&s.boolean&&!n||(null!==n&&"object"==typeof n&&"length"in n&&(n=(s.commaSeparated?ss:ts).stringify(n)),s.boolean&&!0===r.hyperscript&&(n=""),r.vue?"style"!==t&&(a="attrs"):s.mustUseProperty||(!0===r.vdom?a="attributes":!0===r.hyperscript&&(a="attrs")),a?(void 0===e[a]&&(e[a]={}),e[a][s.attribute]=n):r.react&&s.space?e[Ks[s.property]||s.property]=n:e[s.attribute]=n)}function Js(e,t){return t.toUpperCase()}var el=function(e,t){var n=t||{};function r(t){var n=r.invalid,a=r.handlers;return t&&nl.call(t,e)&&(n=nl.call(a,t[e])?a[t[e]]:r.unknown),(n||tl).apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r},tl=Function.prototype,nl={}.hasOwnProperty;var rl=function(e,t){return il(e,"svg"===t?Do:vo)},al=["svg","html"],il=el("type");function ol(e,t,n){var r,a=n,i=e.position,o=e.children,s=[],l=o?o.length:0,c=-1;for("element"===e.type&&("html"===a.space&&"svg"===e.tagName&&(a=Do),t.namespaceURI=fs[a.space]);++c<l;)(r=il(o[c],a)).parentNode=t,s[c]=r;return"element"!==e.type&&"root"!==e.type||(t.childNodes=s),i&&i.start&&i.end&&(t.sourceCodeLocation={startLine:i.start.line,startCol:i.start.column,startOffset:i.start.offset,endLine:i.end.line,endCol:i.end.column,endOffset:i.end.offset}),t}il.handlers.root=function(e,t){var n=(e.data||{}).quirksMode?"quirks":"no-quirks";return ol(e,{nodeName:"#document",mode:n},t)},il.handlers.element=function(t,n){var r=n.space,a=e(t,{children:[]});return Xs(function(e,r){var i,o,s,l,c,d,_=[];for(l in r)c=Mo(n,l),!1===(o=r[l])||c.boolean&&!o||(s={name:l,value:!0===o?"":String(o)},c.space&&-1===al.indexOf(c.space)&&(-1===(d=l.indexOf(":"))?s.prefix="":(s.name=l.slice(d+1),s.prefix=l.slice(0,d)),s.namespace=fs[c.space]),_.push(s));i=ol(t,{nodeName:e,tagName:e,attrs:_},n),"template"===e&&(i.content=function(e,t){return ol(e,{nodeName:"#document-fragment"},t)}(a.content,n));return i},a,{space:r})},il.handlers.text=function(e,t){return ol(e,{nodeName:"#text",value:e.value},t)},il.handlers.comment=function(e,t){return ol(e,{nodeName:"#comment",data:e.value},t)},il.handlers.doctype=function(e,t){return ol(e,{nodeName:"#documentType",name:e.name,publicId:e.public||"",systemId:e.system||""},t)};var sl=C(Object.freeze({default:["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"]})),ll=function(t,n){var r,a,i,o,s,l=new Qa(El),c=el("type");if(c.handlers.root=function(e){m(e.children)},c.handlers.element=function(t){var n=-1!==sl.indexOf(t.tagName);l._processToken(function(t){var n=Sl(t);return n.startTag=e(n),{type:ul,tagName:t.tagName,selfClosing:!1,attrs:function(e){return rl({tagName:e.tagName,type:"element",properties:e.properties}).attrs}(t),location:n}}(t),fs.html),m(t.children),n||(l._processToken(function(t){var n=Sl(t);return n.endTag=e(n),{type:ml,tagName:t.tagName,attrs:[],location:n}}(t)),r.state=dl)},c.handlers.text=function(e){l._processToken({type:_l,chars:e.value,location:Sl(e)})},c.handlers.comment=function(e){l._processToken({type:pl,data:e.value,location:Sl(e)})},c.handlers.doctype=function(e){var t=rl(e);l._processToken({type:gl,name:t.name,forceQuirks:!1,publicId:t.publicId,systemId:t.systemId,location:Sl(e)})},c.handlers.raw=function(e){var t,n=N.start(e);a.html=null,a.endOfChunkHit=!1,a.lastChunkWritten=!1,a.lastCharPos=-1,a.pos=-1,i.droppedBufferSize=0,i.line=n.line,i.col=1,i.offset=0,i.lineStartPos=1-n.column,i.droppedBufferSize=n.offset,o.currentAttrLocation=null,o.ctLoc=Sl(e),r.write(e.value),l._runParsingLoop(null),(t=r.currentCharacterToken)&&(t.location.endLine=i.line,t.location.endCol=i.col+1,t.location.endOffset=i.offset+1,l._processToken(t)),r.currentToken=null,r.currentCharacterToken=null,r.currentAttr=null},c.unknown=hl,s=Ts((_=t,u="root"===_.type?_.children[0]:_,!u||"doctype"!==u.type&&"html"!==u.tagName?function(){var e,n,s;return e={nodeName:"template",tagName:"template",attrs:[],namespaceURI:fs.html,childNodes:[]},n={nodeName:"documentmock",tagName:"documentmock",attrs:[],namespaceURI:fs.html,childNodes:[]},s={nodeName:"#document-fragment",childNodes:[]},l._bootstrap(n,e),l._pushTmplInsertionMode(cl),l._initTokenizerForFragmentParsing(),l._insertFakeRootElement(),l._resetInsertionMode(),l._findFormInFragmentContext(),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),l._adoptNodes(n.childNodes[0],s),s}():(d=l.treeAdapter.createDocument(),l._bootstrap(d,null),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),d)),n),"root"!==t.type&&1===s.children.length)return s.children[0];var d;var _,u;return s;function m(e){var t=0,n=-1;for(e&&(t=e.length);++n<t;)c(e[n])}},cl="IN_TEMPLATE_MODE",dl="DATA_STATE",_l="CHARACTER_TOKEN",ul="START_TAG_TOKEN",ml="END_TAG_TOKEN",pl="COMMENT_TOKEN",gl="DOCTYPE_TOKEN",El={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function hl(e){throw new Error("Cannot compile `"+e.type+"` node")}function Sl(e){var t=N.start(e),n=N.end(e);return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}var fl=function(){return ll};var Tl=bl;function bl(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null===e||void 0===e)return Cl;if("object"==typeof e)return("length"in e?function(e){var t=function(e){var t=[],n=e.length,r=-1;for(;++r<n;)t[r]=bl(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}:function(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}})(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function Cl(){return!0}var Nl=Ol,vl=!0,Rl="skip",Al=!1;function Ol(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=yl(n(e,s)))[0]!==Al)&&e.children&&c[0]!==Rl&&(l=yl(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===Al)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===Al?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=Tl(t),i(e,null,[])}function yl(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[vl,e]:[e]}Ol.CONTINUE=vl,Ol.SKIP=Rl,Ol.EXIT=Al;var Il=wl,Dl=Nl.CONTINUE,xl=Nl.SKIP,Ml=Nl.EXIT;function wl(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),Nl(e,t,function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)},r)}wl.CONTINUE=Dl,wl.SKIP=xl,wl.EXIT=Ml;var Ll,Pl=b(function(e,t){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){n.r(t);n(0);var r=function(){function e(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}return e.range=function(t,n){return n?t&&t.loc&&n.loc&&t.loc.lexer===n.loc.lexer?new e(t.loc.lexer,t.loc.start,n.loc.end):null:t&&t.loc},e}(),a=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,n){return new e(n,r.range(this,t))},e}(),i=function e(t,n){this.position=void 0;var r,a="KaTeX parse error: "+t,i=n&&n.loc;if(i&&i.start<=i.end){var o=i.lexer.input;r=i.start;var s=i.end;r===o.length?a+=" at end of input: ":a+=" at position "+(r+1)+": ";var l=o.slice(r,s).replace(/[^]/g,"$&̲");a+=(r>15?"…"+o.slice(r-15,r):o.slice(0,r))+l+(s+15<o.length?o.slice(s,s+15)+"…":o.slice(s))}var c=new Error(a);return c.name="ParseError",c.__proto__=e.prototype,c.position=r,c};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,l={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},c=/[&><"']/g;var d=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},_={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(c,function(e){return l[e]})},hyphenate:function(e){return e.replace(s,"-$1").toLowerCase()},getBaseElem:d,isCharacterBox:function(e){var t=d(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},u=function(){function e(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,e=e||{},this.displayMode=_.deflt(e.displayMode,!1),this.output=_.deflt(e.output,"htmlAndMathml"),this.leqno=_.deflt(e.leqno,!1),this.fleqn=_.deflt(e.fleqn,!1),this.throwOnError=_.deflt(e.throwOnError,!0),this.errorColor=_.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.minRuleThickness=Math.max(0,_.deflt(e.minRuleThickness,0)),this.colorIsTextColor=_.deflt(e.colorIsTextColor,!1),this.strict=_.deflt(e.strict,"warn"),this.trust=_.deflt(e.trust,!1),this.maxSize=Math.max(0,_.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,_.deflt(e.maxExpand,1e3))}var t=e.prototype;return t.reportNonstrict=function(e,t,n){var r=this.strict;if("function"==typeof r&&(r=r(e,t,n)),r&&"ignore"!==r){if(!0===r||"error"===r)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",n);"warn"===r?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,n){var r=this.strict;if("function"==typeof r)try{r=r(e,t,n)}catch(e){r="error"}return!(!r||"ignore"===r)&&(!0===r||"error"===r||("warn"===r?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=_.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),m=function(){function e(e,t,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=n}var t=e.prototype;return t.sup=function(){return p[g[this.id]]},t.sub=function(){return p[E[this.id]]},t.fracNum=function(){return p[h[this.id]]},t.fracDen=function(){return p[S[this.id]]},t.cramp=function(){return p[f[this.id]]},t.text=function(){return p[T[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],g=[4,5,4,5,6,7,6,7],E=[5,5,5,5,7,7,7,7],h=[2,3,4,5,6,7,6,7],S=[3,3,5,5,7,7,7,7],f=[1,1,3,3,5,5,7,7],T=[0,1,2,3,2,3,2,3],b={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},C=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var N=[];function v(e){for(var t=0;t<N.length;t+=2)if(e>=N[t]&&e<=N[t+1])return!0;return!1}C.forEach(function(e){return e.blocks.forEach(function(e){return N.push.apply(N,e)})});var R={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),O=function(e){return e.filter(function(e){return e}).join(" ")},y=function(e,t,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},t){t.style.isTight()&&this.classes.push("mtight");var r=t.getColor();r&&(this.style.color=r)}},I=function(e){var t=document.createElement(e);for(var n in t.className=O(this.classes),this.style)this.style.hasOwnProperty(n)&&(t.style[n]=this.style[n]);for(var r in this.attributes)this.attributes.hasOwnProperty(r)&&t.setAttribute(r,this.attributes[r]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},D=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+_.escape(O(this.classes))+'"');var n="";for(var r in this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");for(var a in n&&(t+=' style="'+_.escape(n)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+_.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},x=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,e,n,r),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"span")},t.toMarkup=function(){return D.call(this,"span")},e}(),M=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,t,r),this.children=n||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"a")},t.toMarkup=function(){return D.call(this,"a")},e}(),w=function(){function e(e,t,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=n}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=_.hyphenate(n)+":"+this.style[n]+";");return t&&(e+=' style="'+_.escape(t)+'"'),e+="'/>"},e}(),L={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},P=function(){function e(e,t,n,r,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=n||0,this.italic=r||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<C.length;t++)for(var n=C[t],r=0;r<n.blocks.length;r++){var a=n.blocks[r];if(e>=a[0]&&e<=a[1])return n.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=L[this.text])}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var n in this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=O(this.classes)),this.style)this.style.hasOwnProperty(n)&&((t=t||document.createElement("span")).style[n]=this.style[n]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=_.escape(O(this.classes)),t+='"');var n="";for(var r in this.italic>0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");n&&(e=!0,t+=' style="'+_.escape(n)+'"');var a=_.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),k=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</svg>"},e}(),U=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",R[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+R[this.pathName]+"'/>"},e}(),F=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function B(e){if(e instanceof P)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var G={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},H={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Y={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function V(e,t,n){if(!G[t])throw new Error("Font metrics not found for font: "+t+".");var r=e.charCodeAt(0),a=G[t][r];if(!a&&e[0]in Y&&(r=Y[e[0]].charCodeAt(0),a=G[t][r]),a||"text"!==n||v(r)&&(a=G[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var z={};var q={bin:1,close:1,inner:1,open:1,punct:1,rel:1},K={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},W={math:{},text:{}},Q=W;function $(e,t,n,r,a,i){W[e][a]={font:t,group:n,replace:r},i&&r&&(W[e][r]=W[e][a])}var j="main",X="ams",Z="bin",J="mathord",ee="op-token",te="rel";$("math",j,te,"≡","\\equiv",!0),$("math",j,te,"≺","\\prec",!0),$("math",j,te,"≻","\\succ",!0),$("math",j,te,"∼","\\sim",!0),$("math",j,te,"⊥","\\perp"),$("math",j,te,"⪯","\\preceq",!0),$("math",j,te,"⪰","\\succeq",!0),$("math",j,te,"≃","\\simeq",!0),$("math",j,te,"∣","\\mid",!0),$("math",j,te,"≪","\\ll",!0),$("math",j,te,"≫","\\gg",!0),$("math",j,te,"≍","\\asymp",!0),$("math",j,te,"∥","\\parallel"),$("math",j,te,"⋈","\\bowtie",!0),$("math",j,te,"⌣","\\smile",!0),$("math",j,te,"⊑","\\sqsubseteq",!0),$("math",j,te,"⊒","\\sqsupseteq",!0),$("math",j,te,"≐","\\doteq",!0),$("math",j,te,"⌢","\\frown",!0),$("math",j,te,"∋","\\ni",!0),$("math",j,te,"∝","\\propto",!0),$("math",j,te,"⊢","\\vdash",!0),$("math",j,te,"⊣","\\dashv",!0),$("math",j,te,"∋","\\owns"),$("math",j,"punct",".","\\ldotp"),$("math",j,"punct","⋅","\\cdotp"),$("math",j,"textord","#","\\#"),$("text",j,"textord","#","\\#"),$("math",j,"textord","&","\\&"),$("text",j,"textord","&","\\&"),$("math",j,"textord","ℵ","\\aleph",!0),$("math",j,"textord","∀","\\forall",!0),$("math",j,"textord","ℏ","\\hbar",!0),$("math",j,"textord","∃","\\exists",!0),$("math",j,"textord","∇","\\nabla",!0),$("math",j,"textord","♭","\\flat",!0),$("math",j,"textord","ℓ","\\ell",!0),$("math",j,"textord","♮","\\natural",!0),$("math",j,"textord","♣","\\clubsuit",!0),$("math",j,"textord","℘","\\wp",!0),$("math",j,"textord","♯","\\sharp",!0),$("math",j,"textord","♢","\\diamondsuit",!0),$("math",j,"textord","ℜ","\\Re",!0),$("math",j,"textord","♡","\\heartsuit",!0),$("math",j,"textord","ℑ","\\Im",!0),$("math",j,"textord","♠","\\spadesuit",!0),$("text",j,"textord","§","\\S",!0),$("text",j,"textord","¶","\\P",!0),$("math",j,"textord","†","\\dag"),$("text",j,"textord","†","\\dag"),$("text",j,"textord","†","\\textdagger"),$("math",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\textdaggerdbl"),$("math",j,"close","⎱","\\rmoustache",!0),$("math",j,"open","⎰","\\lmoustache",!0),$("math",j,"close","⟯","\\rgroup",!0),$("math",j,"open","⟮","\\lgroup",!0),$("math",j,Z,"∓","\\mp",!0),$("math",j,Z,"⊖","\\ominus",!0),$("math",j,Z,"⊎","\\uplus",!0),$("math",j,Z,"⊓","\\sqcap",!0),$("math",j,Z,"∗","\\ast"),$("math",j,Z,"⊔","\\sqcup",!0),$("math",j,Z,"◯","\\bigcirc"),$("math",j,Z,"∙","\\bullet"),$("math",j,Z,"‡","\\ddagger"),$("math",j,Z,"≀","\\wr",!0),$("math",j,Z,"⨿","\\amalg"),$("math",j,Z,"&","\\And"),$("math",j,te,"⟵","\\longleftarrow",!0),$("math",j,te,"⇐","\\Leftarrow",!0),$("math",j,te,"⟸","\\Longleftarrow",!0),$("math",j,te,"⟶","\\longrightarrow",!0),$("math",j,te,"⇒","\\Rightarrow",!0),$("math",j,te,"⟹","\\Longrightarrow",!0),$("math",j,te,"↔","\\leftrightarrow",!0),$("math",j,te,"⟷","\\longleftrightarrow",!0),$("math",j,te,"⇔","\\Leftrightarrow",!0),$("math",j,te,"⟺","\\Longleftrightarrow",!0),$("math",j,te,"↦","\\mapsto",!0),$("math",j,te,"⟼","\\longmapsto",!0),$("math",j,te,"↗","\\nearrow",!0),$("math",j,te,"↩","\\hookleftarrow",!0),$("math",j,te,"↪","\\hookrightarrow",!0),$("math",j,te,"↘","\\searrow",!0),$("math",j,te,"↼","\\leftharpoonup",!0),$("math",j,te,"⇀","\\rightharpoonup",!0),$("math",j,te,"↙","\\swarrow",!0),$("math",j,te,"↽","\\leftharpoondown",!0),$("math",j,te,"⇁","\\rightharpoondown",!0),$("math",j,te,"↖","\\nwarrow",!0),$("math",j,te,"⇌","\\rightleftharpoons",!0),$("math",X,te,"≮","\\nless",!0),$("math",X,te,"","\\@nleqslant"),$("math",X,te,"","\\@nleqq"),$("math",X,te,"⪇","\\lneq",!0),$("math",X,te,"≨","\\lneqq",!0),$("math",X,te,"","\\@lvertneqq"),$("math",X,te,"⋦","\\lnsim",!0),$("math",X,te,"⪉","\\lnapprox",!0),$("math",X,te,"⊀","\\nprec",!0),$("math",X,te,"⋠","\\npreceq",!0),$("math",X,te,"⋨","\\precnsim",!0),$("math",X,te,"⪹","\\precnapprox",!0),$("math",X,te,"≁","\\nsim",!0),$("math",X,te,"","\\@nshortmid"),$("math",X,te,"∤","\\nmid",!0),$("math",X,te,"⊬","\\nvdash",!0),$("math",X,te,"⊭","\\nvDash",!0),$("math",X,te,"⋪","\\ntriangleleft"),$("math",X,te,"⋬","\\ntrianglelefteq",!0),$("math",X,te,"⊊","\\subsetneq",!0),$("math",X,te,"","\\@varsubsetneq"),$("math",X,te,"⫋","\\subsetneqq",!0),$("math",X,te,"","\\@varsubsetneqq"),$("math",X,te,"≯","\\ngtr",!0),$("math",X,te,"","\\@ngeqslant"),$("math",X,te,"","\\@ngeqq"),$("math",X,te,"⪈","\\gneq",!0),$("math",X,te,"≩","\\gneqq",!0),$("math",X,te,"","\\@gvertneqq"),$("math",X,te,"⋧","\\gnsim",!0),$("math",X,te,"⪊","\\gnapprox",!0),$("math",X,te,"⊁","\\nsucc",!0),$("math",X,te,"⋡","\\nsucceq",!0),$("math",X,te,"⋩","\\succnsim",!0),$("math",X,te,"⪺","\\succnapprox",!0),$("math",X,te,"≆","\\ncong",!0),$("math",X,te,"","\\@nshortparallel"),$("math",X,te,"∦","\\nparallel",!0),$("math",X,te,"⊯","\\nVDash",!0),$("math",X,te,"⋫","\\ntriangleright"),$("math",X,te,"⋭","\\ntrianglerighteq",!0),$("math",X,te,"","\\@nsupseteqq"),$("math",X,te,"⊋","\\supsetneq",!0),$("math",X,te,"","\\@varsupsetneq"),$("math",X,te,"⫌","\\supsetneqq",!0),$("math",X,te,"","\\@varsupsetneqq"),$("math",X,te,"⊮","\\nVdash",!0),$("math",X,te,"⪵","\\precneqq",!0),$("math",X,te,"⪶","\\succneqq",!0),$("math",X,te,"","\\@nsubseteqq"),$("math",X,Z,"⊴","\\unlhd"),$("math",X,Z,"⊵","\\unrhd"),$("math",X,te,"↚","\\nleftarrow",!0),$("math",X,te,"↛","\\nrightarrow",!0),$("math",X,te,"⇍","\\nLeftarrow",!0),$("math",X,te,"⇏","\\nRightarrow",!0),$("math",X,te,"↮","\\nleftrightarrow",!0),$("math",X,te,"⇎","\\nLeftrightarrow",!0),$("math",X,te,"△","\\vartriangle"),$("math",X,"textord","ℏ","\\hslash"),$("math",X,"textord","▽","\\triangledown"),$("math",X,"textord","◊","\\lozenge"),$("math",X,"textord","Ⓢ","\\circledS"),$("math",X,"textord","®","\\circledR"),$("text",X,"textord","®","\\circledR"),$("math",X,"textord","∡","\\measuredangle",!0),$("math",X,"textord","∄","\\nexists"),$("math",X,"textord","℧","\\mho"),$("math",X,"textord","Ⅎ","\\Finv",!0),$("math",X,"textord","⅁","\\Game",!0),$("math",X,"textord","‵","\\backprime"),$("math",X,"textord","▲","\\blacktriangle"),$("math",X,"textord","▼","\\blacktriangledown"),$("math",X,"textord","■","\\blacksquare"),$("math",X,"textord","⧫","\\blacklozenge"),$("math",X,"textord","★","\\bigstar"),$("math",X,"textord","∢","\\sphericalangle",!0),$("math",X,"textord","∁","\\complement",!0),$("math",X,"textord","ð","\\eth",!0),$("math",X,"textord","╱","\\diagup"),$("math",X,"textord","╲","\\diagdown"),$("math",X,"textord","□","\\square"),$("math",X,"textord","□","\\Box"),$("math",X,"textord","◊","\\Diamond"),$("math",X,"textord","¥","\\yen",!0),$("text",X,"textord","¥","\\yen",!0),$("math",X,"textord","✓","\\checkmark",!0),$("text",X,"textord","✓","\\checkmark"),$("math",X,"textord","ℶ","\\beth",!0),$("math",X,"textord","ℸ","\\daleth",!0),$("math",X,"textord","ℷ","\\gimel",!0),$("math",X,"textord","ϝ","\\digamma",!0),$("math",X,"textord","ϰ","\\varkappa"),$("math",X,"open","┌","\\ulcorner",!0),$("math",X,"close","┐","\\urcorner",!0),$("math",X,"open","└","\\llcorner",!0),$("math",X,"close","┘","\\lrcorner",!0),$("math",X,te,"≦","\\leqq",!0),$("math",X,te,"⩽","\\leqslant",!0),$("math",X,te,"⪕","\\eqslantless",!0),$("math",X,te,"≲","\\lesssim",!0),$("math",X,te,"⪅","\\lessapprox",!0),$("math",X,te,"≊","\\approxeq",!0),$("math",X,Z,"⋖","\\lessdot"),$("math",X,te,"⋘","\\lll",!0),$("math",X,te,"≶","\\lessgtr",!0),$("math",X,te,"⋚","\\lesseqgtr",!0),$("math",X,te,"⪋","\\lesseqqgtr",!0),$("math",X,te,"≑","\\doteqdot"),$("math",X,te,"≓","\\risingdotseq",!0),$("math",X,te,"≒","\\fallingdotseq",!0),$("math",X,te,"∽","\\backsim",!0),$("math",X,te,"⋍","\\backsimeq",!0),$("math",X,te,"⫅","\\subseteqq",!0),$("math",X,te,"⋐","\\Subset",!0),$("math",X,te,"⊏","\\sqsubset",!0),$("math",X,te,"≼","\\preccurlyeq",!0),$("math",X,te,"⋞","\\curlyeqprec",!0),$("math",X,te,"≾","\\precsim",!0),$("math",X,te,"⪷","\\precapprox",!0),$("math",X,te,"⊲","\\vartriangleleft"),$("math",X,te,"⊴","\\trianglelefteq"),$("math",X,te,"⊨","\\vDash",!0),$("math",X,te,"⊪","\\Vvdash",!0),$("math",X,te,"⌣","\\smallsmile"),$("math",X,te,"⌢","\\smallfrown"),$("math",X,te,"≏","\\bumpeq",!0),$("math",X,te,"≎","\\Bumpeq",!0),$("math",X,te,"≧","\\geqq",!0),$("math",X,te,"⩾","\\geqslant",!0),$("math",X,te,"⪖","\\eqslantgtr",!0),$("math",X,te,"≳","\\gtrsim",!0),$("math",X,te,"⪆","\\gtrapprox",!0),$("math",X,Z,"⋗","\\gtrdot"),$("math",X,te,"⋙","\\ggg",!0),$("math",X,te,"≷","\\gtrless",!0),$("math",X,te,"⋛","\\gtreqless",!0),$("math",X,te,"⪌","\\gtreqqless",!0),$("math",X,te,"≖","\\eqcirc",!0),$("math",X,te,"≗","\\circeq",!0),$("math",X,te,"≜","\\triangleq",!0),$("math",X,te,"∼","\\thicksim"),$("math",X,te,"≈","\\thickapprox"),$("math",X,te,"⫆","\\supseteqq",!0),$("math",X,te,"⋑","\\Supset",!0),$("math",X,te,"⊐","\\sqsupset",!0),$("math",X,te,"≽","\\succcurlyeq",!0),$("math",X,te,"⋟","\\curlyeqsucc",!0),$("math",X,te,"≿","\\succsim",!0),$("math",X,te,"⪸","\\succapprox",!0),$("math",X,te,"⊳","\\vartriangleright"),$("math",X,te,"⊵","\\trianglerighteq"),$("math",X,te,"⊩","\\Vdash",!0),$("math",X,te,"∣","\\shortmid"),$("math",X,te,"∥","\\shortparallel"),$("math",X,te,"≬","\\between",!0),$("math",X,te,"⋔","\\pitchfork",!0),$("math",X,te,"∝","\\varpropto"),$("math",X,te,"◀","\\blacktriangleleft"),$("math",X,te,"∴","\\therefore",!0),$("math",X,te,"∍","\\backepsilon"),$("math",X,te,"▶","\\blacktriangleright"),$("math",X,te,"∵","\\because",!0),$("math",X,te,"⋘","\\llless"),$("math",X,te,"⋙","\\gggtr"),$("math",X,Z,"⊲","\\lhd"),$("math",X,Z,"⊳","\\rhd"),$("math",X,te,"≂","\\eqsim",!0),$("math",j,te,"⋈","\\Join"),$("math",X,te,"≑","\\Doteq",!0),$("math",X,Z,"∔","\\dotplus",!0),$("math",X,Z,"∖","\\smallsetminus"),$("math",X,Z,"⋒","\\Cap",!0),$("math",X,Z,"⋓","\\Cup",!0),$("math",X,Z,"⩞","\\doublebarwedge",!0),$("math",X,Z,"⊟","\\boxminus",!0),$("math",X,Z,"⊞","\\boxplus",!0),$("math",X,Z,"⋇","\\divideontimes",!0),$("math",X,Z,"⋉","\\ltimes",!0),$("math",X,Z,"⋊","\\rtimes",!0),$("math",X,Z,"⋋","\\leftthreetimes",!0),$("math",X,Z,"⋌","\\rightthreetimes",!0),$("math",X,Z,"⋏","\\curlywedge",!0),$("math",X,Z,"⋎","\\curlyvee",!0),$("math",X,Z,"⊝","\\circleddash",!0),$("math",X,Z,"⊛","\\circledast",!0),$("math",X,Z,"⋅","\\centerdot"),$("math",X,Z,"⊺","\\intercal",!0),$("math",X,Z,"⋒","\\doublecap"),$("math",X,Z,"⋓","\\doublecup"),$("math",X,Z,"⊠","\\boxtimes",!0),$("math",X,te,"⇢","\\dashrightarrow",!0),$("math",X,te,"⇠","\\dashleftarrow",!0),$("math",X,te,"⇇","\\leftleftarrows",!0),$("math",X,te,"⇆","\\leftrightarrows",!0),$("math",X,te,"⇚","\\Lleftarrow",!0),$("math",X,te,"↞","\\twoheadleftarrow",!0),$("math",X,te,"↢","\\leftarrowtail",!0),$("math",X,te,"↫","\\looparrowleft",!0),$("math",X,te,"⇋","\\leftrightharpoons",!0),$("math",X,te,"↶","\\curvearrowleft",!0),$("math",X,te,"↺","\\circlearrowleft",!0),$("math",X,te,"↰","\\Lsh",!0),$("math",X,te,"⇈","\\upuparrows",!0),$("math",X,te,"↿","\\upharpoonleft",!0),$("math",X,te,"⇃","\\downharpoonleft",!0),$("math",X,te,"⊸","\\multimap",!0),$("math",X,te,"↭","\\leftrightsquigarrow",!0),$("math",X,te,"⇉","\\rightrightarrows",!0),$("math",X,te,"⇄","\\rightleftarrows",!0),$("math",X,te,"↠","\\twoheadrightarrow",!0),$("math",X,te,"↣","\\rightarrowtail",!0),$("math",X,te,"↬","\\looparrowright",!0),$("math",X,te,"↷","\\curvearrowright",!0),$("math",X,te,"↻","\\circlearrowright",!0),$("math",X,te,"↱","\\Rsh",!0),$("math",X,te,"⇊","\\downdownarrows",!0),$("math",X,te,"↾","\\upharpoonright",!0),$("math",X,te,"⇂","\\downharpoonright",!0),$("math",X,te,"⇝","\\rightsquigarrow",!0),$("math",X,te,"⇝","\\leadsto"),$("math",X,te,"⇛","\\Rrightarrow",!0),$("math",X,te,"↾","\\restriction"),$("math",j,"textord","‘","`"),$("math",j,"textord","$","\\$"),$("text",j,"textord","$","\\$"),$("text",j,"textord","$","\\textdollar"),$("math",j,"textord","%","\\%"),$("text",j,"textord","%","\\%"),$("math",j,"textord","_","\\_"),$("text",j,"textord","_","\\_"),$("text",j,"textord","_","\\textunderscore"),$("math",j,"textord","∠","\\angle",!0),$("math",j,"textord","∞","\\infty",!0),$("math",j,"textord","′","\\prime"),$("math",j,"textord","△","\\triangle"),$("math",j,"textord","Γ","\\Gamma",!0),$("math",j,"textord","Δ","\\Delta",!0),$("math",j,"textord","Θ","\\Theta",!0),$("math",j,"textord","Λ","\\Lambda",!0),$("math",j,"textord","Ξ","\\Xi",!0),$("math",j,"textord","Π","\\Pi",!0),$("math",j,"textord","Σ","\\Sigma",!0),$("math",j,"textord","Υ","\\Upsilon",!0),$("math",j,"textord","Φ","\\Phi",!0),$("math",j,"textord","Ψ","\\Psi",!0),$("math",j,"textord","Ω","\\Omega",!0),$("math",j,"textord","A","Α"),$("math",j,"textord","B","Β"),$("math",j,"textord","E","Ε"),$("math",j,"textord","Z","Ζ"),$("math",j,"textord","H","Η"),$("math",j,"textord","I","Ι"),$("math",j,"textord","K","Κ"),$("math",j,"textord","M","Μ"),$("math",j,"textord","N","Ν"),$("math",j,"textord","O","Ο"),$("math",j,"textord","P","Ρ"),$("math",j,"textord","T","Τ"),$("math",j,"textord","X","Χ"),$("math",j,"textord","¬","\\neg",!0),$("math",j,"textord","¬","\\lnot"),$("math",j,"textord","⊤","\\top"),$("math",j,"textord","⊥","\\bot"),$("math",j,"textord","∅","\\emptyset"),$("math",X,"textord","∅","\\varnothing"),$("math",j,J,"α","\\alpha",!0),$("math",j,J,"β","\\beta",!0),$("math",j,J,"γ","\\gamma",!0),$("math",j,J,"δ","\\delta",!0),$("math",j,J,"ϵ","\\epsilon",!0),$("math",j,J,"ζ","\\zeta",!0),$("math",j,J,"η","\\eta",!0),$("math",j,J,"θ","\\theta",!0),$("math",j,J,"ι","\\iota",!0),$("math",j,J,"κ","\\kappa",!0),$("math",j,J,"λ","\\lambda",!0),$("math",j,J,"μ","\\mu",!0),$("math",j,J,"ν","\\nu",!0),$("math",j,J,"ξ","\\xi",!0),$("math",j,J,"ο","\\omicron",!0),$("math",j,J,"π","\\pi",!0),$("math",j,J,"ρ","\\rho",!0),$("math",j,J,"σ","\\sigma",!0),$("math",j,J,"τ","\\tau",!0),$("math",j,J,"υ","\\upsilon",!0),$("math",j,J,"ϕ","\\phi",!0),$("math",j,J,"χ","\\chi",!0),$("math",j,J,"ψ","\\psi",!0),$("math",j,J,"ω","\\omega",!0),$("math",j,J,"ε","\\varepsilon",!0),$("math",j,J,"ϑ","\\vartheta",!0),$("math",j,J,"ϖ","\\varpi",!0),$("math",j,J,"ϱ","\\varrho",!0),$("math",j,J,"ς","\\varsigma",!0),$("math",j,J,"φ","\\varphi",!0),$("math",j,Z,"∗","*"),$("math",j,Z,"+","+"),$("math",j,Z,"−","-"),$("math",j,Z,"⋅","\\cdot",!0),$("math",j,Z,"∘","\\circ"),$("math",j,Z,"÷","\\div",!0),$("math",j,Z,"±","\\pm",!0),$("math",j,Z,"×","\\times",!0),$("math",j,Z,"∩","\\cap",!0),$("math",j,Z,"∪","\\cup",!0),$("math",j,Z,"∖","\\setminus"),$("math",j,Z,"∧","\\land"),$("math",j,Z,"∨","\\lor"),$("math",j,Z,"∧","\\wedge",!0),$("math",j,Z,"∨","\\vee",!0),$("math",j,"textord","√","\\surd"),$("math",j,"open","(","("),$("math",j,"open","[","["),$("math",j,"open","⟨","\\langle",!0),$("math",j,"open","∣","\\lvert"),$("math",j,"open","∥","\\lVert"),$("math",j,"close",")",")"),$("math",j,"close","]","]"),$("math",j,"close","?","?"),$("math",j,"close","!","!"),$("math",j,"close","⟩","\\rangle",!0),$("math",j,"close","∣","\\rvert"),$("math",j,"close","∥","\\rVert"),$("math",j,te,"=","="),$("math",j,te,"<","<"),$("math",j,te,">",">"),$("math",j,te,":",":"),$("math",j,te,"≈","\\approx",!0),$("math",j,te,"≅","\\cong",!0),$("math",j,te,"≥","\\ge"),$("math",j,te,"≥","\\geq",!0),$("math",j,te,"←","\\gets"),$("math",j,te,">","\\gt"),$("math",j,te,"∈","\\in",!0),$("math",j,te,"","\\@not"),$("math",j,te,"⊂","\\subset",!0),$("math",j,te,"⊃","\\supset",!0),$("math",j,te,"⊆","\\subseteq",!0),$("math",j,te,"⊇","\\supseteq",!0),$("math",X,te,"⊈","\\nsubseteq",!0),$("math",X,te,"⊉","\\nsupseteq",!0),$("math",j,te,"⊨","\\models"),$("math",j,te,"←","\\leftarrow",!0),$("math",j,te,"≤","\\le"),$("math",j,te,"≤","\\leq",!0),$("math",j,te,"<","\\lt"),$("math",j,te,"→","\\rightarrow",!0),$("math",j,te,"→","\\to"),$("math",X,te,"≱","\\ngeq",!0),$("math",X,te,"≰","\\nleq",!0),$("math",j,"spacing"," ","\\ "),$("math",j,"spacing"," ","~"),$("math",j,"spacing"," ","\\space"),$("math",j,"spacing"," ","\\nobreakspace"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," ","~"),$("text",j,"spacing"," ","\\space"),$("text",j,"spacing"," ","\\nobreakspace"),$("math",j,"spacing",null,"\\nobreak"),$("math",j,"spacing",null,"\\allowbreak"),$("math",j,"punct",",",","),$("math",j,"punct",";",";"),$("math",X,Z,"⊼","\\barwedge",!0),$("math",X,Z,"⊻","\\veebar",!0),$("math",j,Z,"⊙","\\odot",!0),$("math",j,Z,"⊕","\\oplus",!0),$("math",j,Z,"⊗","\\otimes",!0),$("math",j,"textord","∂","\\partial",!0),$("math",j,Z,"⊘","\\oslash",!0),$("math",X,Z,"⊚","\\circledcirc",!0),$("math",X,Z,"⊡","\\boxdot",!0),$("math",j,Z,"△","\\bigtriangleup"),$("math",j,Z,"▽","\\bigtriangledown"),$("math",j,Z,"†","\\dagger"),$("math",j,Z,"⋄","\\diamond"),$("math",j,Z,"⋆","\\star"),$("math",j,Z,"◃","\\triangleleft"),$("math",j,Z,"▹","\\triangleright"),$("math",j,"open","{","\\{"),$("text",j,"textord","{","\\{"),$("text",j,"textord","{","\\textbraceleft"),$("math",j,"close","}","\\}"),$("text",j,"textord","}","\\}"),$("text",j,"textord","}","\\textbraceright"),$("math",j,"open","{","\\lbrace"),$("math",j,"close","}","\\rbrace"),$("math",j,"open","[","\\lbrack"),$("text",j,"textord","[","\\lbrack"),$("math",j,"close","]","\\rbrack"),$("text",j,"textord","]","\\rbrack"),$("math",j,"open","(","\\lparen"),$("math",j,"close",")","\\rparen"),$("text",j,"textord","<","\\textless"),$("text",j,"textord",">","\\textgreater"),$("math",j,"open","⌊","\\lfloor",!0),$("math",j,"close","⌋","\\rfloor",!0),$("math",j,"open","⌈","\\lceil",!0),$("math",j,"close","⌉","\\rceil",!0),$("math",j,"textord","\\","\\backslash"),$("math",j,"textord","∣","|"),$("math",j,"textord","∣","\\vert"),$("text",j,"textord","|","\\textbar"),$("math",j,"textord","∥","\\|"),$("math",j,"textord","∥","\\Vert"),$("text",j,"textord","∥","\\textbardbl"),$("text",j,"textord","~","\\textasciitilde"),$("text",j,"textord","\\","\\textbackslash"),$("text",j,"textord","^","\\textasciicircum"),$("math",j,te,"↑","\\uparrow",!0),$("math",j,te,"⇑","\\Uparrow",!0),$("math",j,te,"↓","\\downarrow",!0),$("math",j,te,"⇓","\\Downarrow",!0),$("math",j,te,"↕","\\updownarrow",!0),$("math",j,te,"⇕","\\Updownarrow",!0),$("math",j,ee,"∐","\\coprod"),$("math",j,ee,"⋁","\\bigvee"),$("math",j,ee,"⋀","\\bigwedge"),$("math",j,ee,"⨄","\\biguplus"),$("math",j,ee,"⋂","\\bigcap"),$("math",j,ee,"⋃","\\bigcup"),$("math",j,ee,"∫","\\int"),$("math",j,ee,"∫","\\intop"),$("math",j,ee,"∬","\\iint"),$("math",j,ee,"∭","\\iiint"),$("math",j,ee,"∏","\\prod"),$("math",j,ee,"∑","\\sum"),$("math",j,ee,"⨂","\\bigotimes"),$("math",j,ee,"⨁","\\bigoplus"),$("math",j,ee,"⨀","\\bigodot"),$("math",j,ee,"∮","\\oint"),$("math",j,ee,"∯","\\oiint"),$("math",j,ee,"∰","\\oiiint"),$("math",j,ee,"⨆","\\bigsqcup"),$("math",j,ee,"∫","\\smallint"),$("text",j,"inner","…","\\textellipsis"),$("math",j,"inner","…","\\mathellipsis"),$("text",j,"inner","…","\\ldots",!0),$("math",j,"inner","…","\\ldots",!0),$("math",j,"inner","⋯","\\@cdots",!0),$("math",j,"inner","⋱","\\ddots",!0),$("math",j,"textord","⋮","\\varvdots"),$("math",j,"accent-token","ˊ","\\acute"),$("math",j,"accent-token","ˋ","\\grave"),$("math",j,"accent-token","¨","\\ddot"),$("math",j,"accent-token","~","\\tilde"),$("math",j,"accent-token","ˉ","\\bar"),$("math",j,"accent-token","˘","\\breve"),$("math",j,"accent-token","ˇ","\\check"),$("math",j,"accent-token","^","\\hat"),$("math",j,"accent-token","⃗","\\vec"),$("math",j,"accent-token","˙","\\dot"),$("math",j,"accent-token","˚","\\mathring"),$("math",j,J,"ı","\\imath",!0),$("math",j,J,"ȷ","\\jmath",!0),$("text",j,"textord","ı","\\i",!0),$("text",j,"textord","ȷ","\\j",!0),$("text",j,"textord","ß","\\ss",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","œ","\\oe",!0),$("text",j,"textord","ø","\\o",!0),$("text",j,"textord","Æ","\\AE",!0),$("text",j,"textord","Œ","\\OE",!0),$("text",j,"textord","Ø","\\O",!0),$("text",j,"accent-token","ˊ","\\'"),$("text",j,"accent-token","ˋ","\\`"),$("text",j,"accent-token","ˆ","\\^"),$("text",j,"accent-token","˜","\\~"),$("text",j,"accent-token","ˉ","\\="),$("text",j,"accent-token","˘","\\u"),$("text",j,"accent-token","˙","\\."),$("text",j,"accent-token","˚","\\r"),$("text",j,"accent-token","ˇ","\\v"),$("text",j,"accent-token","¨",'\\"'),$("text",j,"accent-token","˝","\\H"),$("text",j,"accent-token","◯","\\textcircled");var ne={"--":!0,"---":!0,"``":!0,"''":!0};$("text",j,"textord","–","--"),$("text",j,"textord","–","\\textendash"),$("text",j,"textord","—","---"),$("text",j,"textord","—","\\textemdash"),$("text",j,"textord","‘","`"),$("text",j,"textord","‘","\\textquoteleft"),$("text",j,"textord","’","'"),$("text",j,"textord","’","\\textquoteright"),$("text",j,"textord","“","``"),$("text",j,"textord","“","\\textquotedblleft"),$("text",j,"textord","”","''"),$("text",j,"textord","”","\\textquotedblright"),$("math",j,"textord","°","\\degree",!0),$("text",j,"textord","°","\\degree"),$("text",j,"textord","°","\\textdegree",!0),$("math",j,J,"£","\\pounds"),$("math",j,J,"£","\\mathsterling",!0),$("text",j,J,"£","\\pounds"),$("text",j,J,"£","\\textsterling",!0),$("math",X,"textord","✠","\\maltese"),$("text",X,"textord","✠","\\maltese"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," "," "),$("text",j,"spacing"," ","~");for(var re=0;re<'0123456789/@."'.length;re++){var ae='0123456789/@."'.charAt(re);$("math",j,"textord",ae,ae)}for(var ie=0;ie<'0123456789!@*()-=+[]<>|";:?/.,'.length;ie++){var oe='0123456789!@*()-=+[]<>|";:?/.,'.charAt(ie);$("text",j,"textord",oe,oe)}for(var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",le=0;le<se.length;le++){var ce=se.charAt(le);$("math",j,J,ce,ce),$("text",j,"textord",ce,ce)}$("math",X,"textord","C","ℂ"),$("text",X,"textord","C","ℂ"),$("math",X,"textord","H","ℍ"),$("text",X,"textord","H","ℍ"),$("math",X,"textord","N","ℕ"),$("text",X,"textord","N","ℕ"),$("math",X,"textord","P","ℙ"),$("text",X,"textord","P","ℙ"),$("math",X,"textord","Q","ℚ"),$("text",X,"textord","Q","ℚ"),$("math",X,"textord","R","ℝ"),$("text",X,"textord","R","ℝ"),$("math",X,"textord","Z","ℤ"),$("text",X,"textord","Z","ℤ"),$("math",j,J,"h","ℎ"),$("text",j,J,"h","ℎ");for(var de="",_e=0;_e<se.length;_e++){var ue=se.charAt(_e);$("math",j,J,ue,de=String.fromCharCode(55349,56320+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56372+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56424+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56580+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56736+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56788+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56840+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56944+_e)),$("text",j,"textord",ue,de),_e<26&&($("math",j,J,ue,de=String.fromCharCode(55349,56632+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56476+_e)),$("text",j,"textord",ue,de))}$("math",j,J,"k",de=String.fromCharCode(55349,56668)),$("text",j,"textord","k",de);for(var me=0;me<10;me++){var pe=me.toString();$("math",j,J,pe,de=String.fromCharCode(55349,57294+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57314+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57324+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57334+me)),$("text",j,"textord",pe,de)}for(var ge=0;ge<"ÇÐÞçþ".length;ge++){var Ee="ÇÐÞçþ".charAt(ge);$("math",j,J,Ee,Ee),$("text",j,"textord",Ee,Ee)}$("text",j,"textord","ð","ð"),$("text",j,"textord","–","–"),$("text",j,"textord","—","—"),$("text",j,"textord","‘","‘"),$("text",j,"textord","’","’"),$("text",j,"textord","“","“"),$("text",j,"textord","”","”");var he=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Se=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],fe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Te=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],be=function(e,t){return t.size<2?e:fe[e-1][t.size-1]},Ce=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Te[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);return new e(n)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:be(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Te[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var n=be(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!z[t=e>=5?0:e>=3?1:2]){var n=z[t]={cssEmPerMu:H.quad[t]/18};for(var r in H)H.hasOwnProperty(r)&&(n[r]=H[r][t])}return z[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();Ce.BASESIZE=6;var Ne=Ce,ve={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Re={ex:!0,em:!0,mu:!0},Ae=function(e){return"string"!=typeof e&&(e=e.unit),e in ve||e in Re||"ex"===e},Oe=function(e,t){var n;if(e.unit in ve)n=ve[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)n=t.fontMetrics().cssEmPerMu;else{var r;if(r=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)n=r.fontMetrics().xHeight;else{if("em"!==e.unit)throw new o("Invalid unit: '"+e.unit+"'");n=r.fontMetrics().quad}r!==t&&(n*=r.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)},ye=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],Ie=function(e,t,n){return Q[n][e]&&Q[n][e].replace&&(e=Q[n][e].replace),{value:e,metrics:V(e,t,n)}},De=function(e,t,n,r,a){var i,o=Ie(e,t,n),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===n||r&&"mathit"===r.font)&&(l=0),i=new P(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+n+"'"),i=new P(e,0,0,0,0,0,a);if(r){i.maxFontSize=r.sizeMultiplier,r.style.isTight()&&i.classes.push("mtight");var c=r.getColor();c&&(i.style.color=c)}return i},xe=function(e,t){if(O(e.classes)!==O(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;return!0},Me=function(e){for(var t=0,n=0,r=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>n&&(n=i.depth),i.maxFontSize>r&&(r=i.maxFontSize)}e.height=t,e.depth=n,e.maxFontSize=r},we=function(e,t,n,r){var a=new x(e,t,n,r);return Me(a),a},Le=function(e,t,n,r){return new x(e,t,n,r)},Pe=function(e){var t=new A(e);return Me(t),t},ke=function(e,t,n){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}return r+"-"+("textbf"===t&&"textit"===n?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ue={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Fe={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Be={fontMap:Ue,makeSymbol:De,mathsym:function(e,t,n,r){return void 0===r&&(r=[]),"boldsymbol"===n.font&&Ie(e,"Main-Bold",t).metrics?De(e,"Main-Bold",t,n,r.concat(["mathbf"])):"\\"===e||"main"===Q[t][e].font?De(e,"Main-Regular",t,n,r):De(e,"AMS-Regular",t,n,r.concat(["amsrm"]))},makeSpan:we,makeSvgSpan:Le,makeLineSpan:function(e,t,n){var r=we([e],[],t);return r.height=Math.max(n||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),r.style.borderBottomWidth=r.height+"em",r.maxFontSize=1,r},makeAnchor:function(e,t,n,r){var a=new M(e,t,n,r);return Me(a),a},makeFragment:Pe,wrapFragment:function(e,t){return e instanceof A?we([],[e],t):e},makeVList:function(e,t){for(var n=function(e){if("individualShift"===e.positionType){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,a=r,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,n.push({type:"kern",size:s}),n.push(t[i])}return{children:n,depth:r}}var l;if("top"===e.positionType){for(var c=e.positionData,d=0;d<e.children.length;d++){var _=e.children[d];c-="kern"===_.type?_.size:_.elem.height+_.elem.depth}l=c}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),r=n.children,a=n.depth,i=0,o=0;o<r.length;o++){var s=r[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var c=we(["pstrut"],[]);c.style.height=i+"em";for(var d=[],_=a,u=a,m=a,p=0;p<r.length;p++){var g=r[p];if("kern"===g.type)m+=g.size;else{var E=g.elem,h=g.wrapperClasses||[],S=g.wrapperStyle||{},f=we(h,[c,E],void 0,S);f.style.top=-i-m-E.depth+"em",g.marginLeft&&(f.style.marginLeft=g.marginLeft),g.marginRight&&(f.style.marginRight=g.marginRight),d.push(f),m+=E.height+E.depth}_=Math.min(_,m),u=Math.max(u,m)}var T,b=we(["vlist"],d);if(b.style.height=u+"em",_<0){var C=we([],[]),N=we(["vlist"],[C]);N.style.height=-_+"em";var v=we(["vlist-s"],[new P("​")]);T=[we(["vlist-r"],[b,v]),we(["vlist-r"],[N])]}else T=[we(["vlist-r"],[b])];var R=we(["vlist-t"],T);return 2===T.length&&R.classes.push("vlist-t2"),R.height=u,R.depth=-_,R},makeOrd:function(e,t,n){var r,a=e.mode,i=e.text,s=["mord"],l="math"===a||"text"===a&&t.font,c=l?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var d=function(e,t){var n=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,r="math"===t?0:1;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return[he[a][2],he[a][r]]}if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return[Se[i][2],Se[i][r]]}if(120485===n||120486===n)return[he[0][2],he[0][r]];if(120486<n&&n<120782)return["",""];throw new o("Unsupported character: "+e)}(i,a),u=d[0],m=d[1];return De(i,u,a,t,s.concat(m))}if(c){var p,g;if("boldsymbol"===c||"mathnormal"===c){var E="boldsymbol"===c?function(e,t,n,r){return Ie(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a):(r=i,_.contains(ye,r)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(r.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});p=E.fontName,g=[E.fontClass]}else _.contains(ye,i)?(p="Main-Italic",g=["mathit"]):l?(p=Ue[c].fontName,g=[c]):(p=ke(c,t.fontWeight,t.fontShape),g=[c,t.fontWeight,t.fontShape]);if(Ie(i,p,a).metrics)return De(i,p,a,t,s.concat(g));if(ne.hasOwnProperty(i)&&"Typewriter"===p.substr(0,10)){for(var h=[],S=0;S<i.length;S++)h.push(De(i[S],p,a,t,s.concat(g)));return Pe(h)}}if("mathord"===n){var f=function(e,t,n,r){return/[0-9]/.test(e.charAt(0))||_.contains(ye,e)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return De(i,f.fontName,a,t,s.concat([f.fontClass]))}if("textord"===n){var T=Q[a][i]&&Q[a][i].font;if("ams"===T){var b=ke("amsrm",t.fontWeight,t.fontShape);return De(i,b,a,t,s.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==T&&T){var C=ke(T,t.fontWeight,t.fontShape);return De(i,C,a,t,s.concat(C,t.fontWeight,t.fontShape))}var N=ke("textrm",t.fontWeight,t.fontShape);return De(i,N,a,t,s.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+n+" in makeOrd")},makeGlue:function(e,t){var n=we(["mspace"],[],t),r=Oe(e,t);return n.style.marginRight=r+"em",n},staticSvg:function(e,t){var n=Fe[e],r=n[0],a=n[1],i=n[2],o=new U(r),s=new k([o],{width:a+"em",height:i+"em",style:"width:"+a+"em",viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=Le(["overlay"],[s],t);return l.height=i,l.style.height=i+"em",l.style.width=a+"em",l},svgData:Fe,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var n=e[t],r=e[t+1];n instanceof P&&r instanceof P&&xe(n,r)&&(n.text+=r.text,n.height=Math.max(n.height,r.height),n.depth=Math.max(n.depth,r.depth),n.italic=r.italic,e.splice(t+1,1),t--)}return e}};function Ge(e,t){var n=He(e,t);if(!n)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return n}function He(e,t){return e&&e.type===t?e:null}function Ye(e,t){var n=function(e,t){return e&&"atom"===e.type&&e.family===t?e:null}(e,t);if(!n)throw new Error('Expected node of type "atom" and family "'+t+'", but got '+(e?"atom"===e.type?"atom of family "+e.family:"node of type "+e.type:String(e)));return n}function Ve(e){var t=ze(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function ze(e){return e&&("atom"===e.type||K.hasOwnProperty(e.type))?e:null}var qe={number:3,unit:"mu"},Ke={number:4,unit:"mu"},We={number:5,unit:"mu"},Qe={mord:{mop:qe,mbin:Ke,mrel:We,minner:qe},mop:{mord:qe,mop:qe,mrel:We,minner:qe},mbin:{mord:Ke,mop:Ke,mopen:Ke,minner:Ke},mrel:{mord:We,mop:We,mopen:We,minner:We},mopen:{},mclose:{mop:qe,mbin:Ke,mrel:We,minner:qe},mpunct:{mord:qe,mop:qe,mrel:We,mopen:qe,mclose:qe,mpunct:qe,minner:qe},minner:{mord:qe,mop:qe,mbin:Ke,mrel:We,mopen:qe,mpunct:qe,minner:qe}},$e={mord:{mop:qe},mop:{mord:qe,mop:qe},mbin:{},mrel:{},mopen:{},mclose:{mop:qe},mpunct:{},minner:{mop:qe}},je={},Xe={},Ze={};function Je(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs,argTypes:r.argTypes,greediness:void 0===r.greediness?1:r.greediness,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a},l=0;l<n.length;++l)je[n[l]]=s;t&&(i&&(Xe[t]=i),o&&(Ze[t]=o))}function et(e){Je({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var tt=function(e){var t=He(e,"ordgroup");return t?t.body:[e]},nt=Be.makeSpan,rt=["leftmost","mbin","mopen","mrel","mop","mpunct"],at=["rightmost","mrel","mclose","mpunct"],it={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT},ot={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},st=function(e,t,n,r){void 0===r&&(r=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=ut(e[i],t);if(o instanceof A){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(!n)return a;var l=t;if(1===e.length){var c=He(e[0],"sizing")||He(e[0],"styling");c&&("sizing"===c.type?l=t.havingSize(c.size):"styling"===c.type&&(l=t.havingStyle(it[c.style])))}var d=nt([r[0]||"leftmost"],[],t),u=nt([r[1]||"rightmost"],[],t);return lt(a,function(e,t){var n=t.classes[0],r=e.classes[0];"mbin"===n&&_.contains(at,r)?t.classes[0]="mord":"mbin"===r&&_.contains(rt,n)&&(e.classes[0]="mord")},{node:d},u),lt(a,function(e,t){var n=dt(t),r=dt(e),a=n&&r?e.hasClass("mtight")?$e[n][r]:Qe[n][r]:null;if(a)return Be.makeGlue(a,l)},{node:d},u),a},lt=function e(t,n,r,a){a&&t.push(a);for(var i=0;i<t.length;i++){var o=t[i],s=ct(o);if(s)e(s.children,n,r);else if("mspace"!==o.classes[0]){var l=n(o,r.node);l&&(r.insertAfter?r.insertAfter(l):(t.unshift(l),i++)),r.node=o,r.insertAfter=function(e){return function(n){t.splice(e+1,0,n),i++}}(i)}}a&&t.pop()},ct=function(e){return e instanceof A||e instanceof M?e:null},dt=function(e,t){return e?(t&&(e=function e(t,n){var r=ct(t);if(r){var a=r.children;if(a.length){if("right"===n)return e(a[a.length-1],"right");if("left"===n)return e(a[0],"left")}}return t}(e,t)),ot[e.classes[0]]||null):null},_t=function(e,t){var n=["nulldelimiter"].concat(e.baseSizingClasses());return nt(t.concat(n))},ut=function(e,t,n){if(!e)return nt();if(Xe[e.type]){var r=Xe[e.type](e,t);if(n&&t.size!==n.size){r=nt(t.sizingClasses(n),[r],t);var a=t.sizeMultiplier/n.sizeMultiplier;r.height*=a,r.depth*=a}return r}throw new o("Got group of unknown type: '"+e.type+"'")};function mt(e,t){var n=nt(["base"],e,t),r=nt(["strut"]);return r.style.height=n.height+n.depth+"em",r.style.verticalAlign=-n.depth+"em",n.children.unshift(r),n}function pt(e,t){var n=null;1===e.length&&"tag"===e[0].type&&(n=e[0].tag,e=e[0].body);for(var r,a=st(e,t,!0),i=[],o=[],s=0;s<a.length;s++)if(o.push(a[s]),a[s].hasClass("mbin")||a[s].hasClass("mrel")||a[s].hasClass("allowbreak")){for(var l=!1;s<a.length-1&&a[s+1].hasClass("mspace")&&!a[s+1].hasClass("newline");)s++,o.push(a[s]),a[s].hasClass("nobreak")&&(l=!0);l||(i.push(mt(o,t)),o=[])}else a[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(mt(o,t)),o=[]),i.push(a[s]));o.length>0&&i.push(mt(o,t)),n&&((r=mt(st(n,t,!0))).classes=["tag"],i.push(r));var c=nt(["katex-html"],i);if(c.setAttribute("aria-hidden","true"),r){var d=r.children[0];d.style.height=c.height+c.depth+"em",d.style.verticalAlign=-c.depth+"em"}return c}function gt(e){return new A(e)}var Et=function(){function e(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=_.escape(this.attributes[t]),e+='"');e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},e}(),ht=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return _.escape(this.toText())},t.toText=function(){return this.text},e}(),St={MathNode:Et,TextNode:ht,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":e>=-.05556&&e<=-.05555?" ⁣":e>=-.1667&&e<=-.1666?" ⁣":e>=-.2223&&e<=-.2222?" ⁣":e>=-.2778&&e<=-.2777?" ⁣":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:gt},ft=function(e,t,n){return!Q[t][e]||!Q[t][e].replace||55349===e.charCodeAt(0)||ne.hasOwnProperty(e)&&n&&(n.fontFamily&&"tt"===n.fontFamily.substr(4,2)||n.font&&"tt"===n.font.substr(4,2))||(e=Q[t][e].replace),new St.TextNode(e)},Tt=function(e){return 1===e.length?e[0]:new St.MathNode("mrow",e)},bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var n=t.font;if(!n||"mathnormal"===n)return null;var r=e.mode;if("mathit"===n)return"italic";if("boldsymbol"===n)return"bold-italic";if("mathbf"===n)return"bold";if("mathbb"===n)return"double-struck";if("mathfrak"===n)return"fraktur";if("mathscr"===n||"mathcal"===n)return"script";if("mathsf"===n)return"sans-serif";if("mathtt"===n)return"monospace";var a=e.text;return _.contains(["\\imath","\\jmath"],a)?null:(Q[r][a]&&Q[r][a].replace&&(a=Q[r][a].replace),V(a,Be.fontMap[n].fontName,r)?Be.fontMap[n].variant:null)},Ct=function(e,t,n){if(1===e.length){var r=vt(e[0],t);return n&&r instanceof Et&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var a,i=[],o=0;o<e.length;o++){var s=vt(e[o],t);if(s instanceof Et&&a instanceof Et){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var c;(c=a.children).push.apply(c,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var d=s.children[0];if(d instanceof ht&&"."===d.text){var _;(_=a.children).push.apply(_,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof ht&&"̸"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof ht&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Nt=function(e,t,n){return Tt(Ct(e,t,n))},vt=function(e,t){if(!e)return new St.MathNode("mrow");if(Ze[e.type])return Ze[e.type](e,t);throw new o("Got group of unknown type: '"+e.type+"'")};function Rt(e,t,n,r){var a,i=Ct(e,n);a=1===i.length&&i[0]instanceof Et&&_.contains(["mrow","mtable"],i[0].type)?i[0]:new St.MathNode("mrow",i);var o=new St.MathNode("annotation",[new St.TextNode(t)]);o.setAttribute("encoding","application/x-tex");var s=new St.MathNode("semantics",[a,o]),l=new St.MathNode("math",[s]);l.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var c=r?"katex":"katex-mathml";return Be.makeSpan([c],[l])}var At=function(e){return new Ne({style:e.displayMode?b.DISPLAY:b.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Ot=function(e,t){if(t.displayMode){var n=["katex-display"];t.leqno&&n.push("leqno"),t.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},yt={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋"},It={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Dt=function(e){return"ordgroup"===e.type?e.body.length:1},xt=function(e,t,n,r){var a,i=e.height+e.depth+2*n;if(/fbox|color/.test(t)){if(a=Be.makeSpan(["stretchy",t],[],r),"fbox"===t){var o=r.color&&r.getColor();o&&(a.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(t)&&s.push(new F({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&s.push(new F({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var l=new k(s,{width:"100%",height:i+"em"});a=Be.makeSvgSpan([],[l],r)}return a.height=i,a.style.height=i+"em",a},Mt=function(e){var t=new St.MathNode("mo",[new St.TextNode(yt[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},wt=function(e,t){var n=function(){var n=4e5,r=e.label.substr(1);if(_.contains(["widehat","widecheck","widetilde","utilde"],r)){var a,i,o,s=Dt(e.base);if(s>5)"widehat"===r||"widecheck"===r?(a=420,n=2364,o=.42,i=r+"4"):(a=312,n=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===r||"widecheck"===r?(n=[0,1062,2364,2364,2364][l],a=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=r+l):(n=[0,600,1033,2339,2340][l],a=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var c=new U(i),d=new k([c],{width:"100%",height:o+"em",viewBox:"0 0 "+n+" "+a,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[d],t),minWidth:0,height:o}}var u,m,p=[],g=It[r],E=g[0],h=g[1],S=g[2],f=S/1e3,T=E.length;if(1===T)u=["hide-tail"],m=[g[3]];else if(2===T)u=["halfarrow-left","halfarrow-right"],m=["xMinYMin","xMaxYMin"];else{if(3!==T)throw new Error("Correct katexImagesData or update code here to support\n "+T+" children.");u=["brace-left","brace-center","brace-right"],m=["xMinYMin","xMidYMin","xMaxYMin"]}for(var b=0;b<T;b++){var C=new U(E[b]),N=new k([C],{width:"400em",height:f+"em",viewBox:"0 0 "+n+" "+S,preserveAspectRatio:m[b]+" slice"}),v=Be.makeSvgSpan([u[b]],[N],t);if(1===T)return{span:v,minWidth:h,height:f};v.style.height=f+"em",p.push(v)}return{span:Be.makeSpan(["stretchy"],p,t),minWidth:h,height:f}}(),r=n.span,a=n.minWidth,i=n.height;return r.height=i,r.style.height=i+"em",a>0&&(r.style.minWidth=a+"em"),r},Lt=function(e,t){var n,r,a,i=He(e,"supsub");i?(n=(r=Ge(i.base,"accent")).base,i.base=n,a=function(e){if(e instanceof x)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(ut(i,t)),i.base=r):n=(r=Ge(e,"accent")).base;var o=ut(n,t.havingCrampedStyle()),s=0;if(r.isShifty&&_.isCharacterBox(n)){var l=_.getBaseElem(n);s=B(ut(l,t.havingCrampedStyle())).skew}var c,d=Math.min(o.height,t.fontMetrics().xHeight);if(r.isStretchy)c=wt(r,t),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:c,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},t);else{var u,m;"\\vec"===r.label?(u=Be.staticSvg("vec",t),m=Be.svgData.vec[1]):((u=B(u=Be.makeOrd({mode:r.mode,text:r.label},t,"textord"))).italic=0,m=u.width),c=Be.makeSpan(["accent-body"],[u]);var p="\\textcircled"===r.label;p&&(c.classes.push("accent-full"),d=o.height);var g=s;p||(g-=m/2),c.style.left=g+"em","\\textcircled"===r.label&&(c.style.top=".2em"),c=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}var E=Be.makeSpan(["mord","accent"],[c],t);return a?(a.children[0]=E,a.height=Math.max(E.height,a.height),a.classes[0]="mord",a):E},Pt=function(e,t){var n=e.isStretchy?Mt(e.label):new St.MathNode("mo",[ft(e.label,e.mode)]),r=new St.MathNode("mover",[vt(e.base,t),n]);return r.setAttribute("accent","true"),r},kt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(e){return"\\"+e}).join("|"));Je({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var n=t[0],r=!kt.test(e.funcName),a=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:a,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=t[0];return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"accentUnder",mode:n.mode,label:r,base:a}},htmlBuilder:function(e,t){var n=ut(e.base,t),r=wt(e,t),a="\\utilde"===e.label?.12:0,i=Be.makeVList({positionType:"bottom",positionData:r.height+a,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var n=Mt(e.label),r=new St.MathNode("munder",[vt(e.base,t),n]);return r.setAttribute("accentunder","true"),r}});var Ut=function(e){var t=new St.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Je({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName;return{type:"xArrow",mode:r.mode,label:a,body:t[0],below:n[0]}},htmlBuilder:function(e,t){var n,r=t.style,a=t.havingStyle(r.sup()),i=Be.wrapFragment(ut(e.body,a,t),t);i.classes.push("x-arrow-pad"),e.below&&(a=t.havingStyle(r.sub()),(n=Be.wrapFragment(ut(e.below,a,t),t)).classes.push("x-arrow-pad"));var o,s=wt(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=i.depth),n){var d=-t.fontMetrics().axisHeight+n.height+.5*s.height+.111;o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l},{type:"elem",elem:n,shift:d}]},t)}else o=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l}]},t);return o.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[o],t)},mathmlBuilder:function(e,t){var n,r=Mt(e.label);if(e.body){var a=Ut(vt(e.body,t));if(e.below){var i=Ut(vt(e.below,t));n=new St.MathNode("munderover",[r,i,a])}else n=new St.MathNode("mover",[r,a])}else if(e.below){var o=Ut(vt(e.below,t));n=new St.MathNode("munder",[r,o])}else n=Ut(),n=new St.MathNode("mover",[r,n]);return n}}),Je({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var n=e.parser,r=Ge(t[0],"ordgroup").body,a="",i=0;i<r.length;i++){a+=Ge(r[i],"textord").text}var s=parseInt(a);if(isNaN(s))throw new o("\\@char has non-numeric argument "+a);return{type:"textord",mode:n.mode,text:String.fromCharCode(s)}}});var Ft=function(e,t){var n=st(e.body,t.withColor(e.color),!1);return Be.makeFragment(n)},Bt=function(e,t){var n=Ct(e.body,t.withColor(e.color)),r=new St.MathNode("mstyle",n);return r.setAttribute("mathcolor",e.color),r};Je({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var n=e.parser,r=Ge(t[0],"color-token").color,a=t[1];return{type:"color",mode:n.mode,color:r,body:tt(a)}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var n=e.parser,r=e.breakOnTokenText,a=Ge(t[0],"color-token").color;n.gullet.macros.set("\\current@color",a);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:a,body:i}},htmlBuilder:Ft,mathmlBuilder:Bt}),Je({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=n[0],o="\\cr"===a,s=!1;return o||(s=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:r.mode,newLine:s,newRow:o,size:i&&Ge(i,"size").value}},htmlBuilder:function(e,t){if(e.newRow)throw new o("\\cr valid only within a tabular/array environment");var n=Be.makeSpan(["mspace"],[],t);return e.newLine&&(n.classes.push("newline"),e.size&&(n.style.marginTop=Oe(e.size,t)+"em")),n},mathmlBuilder:function(e,t){var n=new St.MathNode("mspace");return e.newLine&&(n.setAttribute("linebreak","newline"),e.size&&n.setAttribute("height",Oe(e.size,t)+"em")),n}});var Gt=function(e,t,n){var r=V(Q.math[e]&&Q.math[e].replace||e,t,n);if(!r)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return r},Ht=function(e,t,n,r){var a=n.havingBaseStyle(t),i=Be.makeSpan(r.concat(a.sizingClasses(n)),[e],n),o=a.sizeMultiplier/n.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},Yt=function(e,t,n){var r=t.havingBaseStyle(n),a=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},Vt=function(e,t,n,r,a,i){var o=function(e,t,n,r){return Be.makeSymbol(e,"Size"+t+"-Regular",n,r)}(e,t,a,r),s=Ht(Be.makeSpan(["delimsizing","size"+t],[o],r),b.TEXT,r,i);return n&&Yt(s,r,b.TEXT),s},zt=function(e,t,n){var r;return r="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Be.makeSpan(["delimsizinginner",r],[Be.makeSpan([],[Be.makeSymbol(e,t,n)])])}},qt={type:"kern",size:-.005},Kt=function(e,t,n,r,a,i){var o,s,l,c;o=l=c=e,s=null;var d="Size1-Regular";"\\uparrow"===e?l=c="⏐":"\\Uparrow"===e?l=c="‖":"\\downarrow"===e?o=l="⏐":"\\Downarrow"===e?o=l="‖":"\\updownarrow"===e?(o="\\uparrow",l="⏐",c="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="‖",c="\\Downarrow"):"["===e||"\\lbrack"===e?(o="⎡",l="⎢",c="⎣",d="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="⎤",l="⎥",c="⎦",d="Size4-Regular"):"\\lfloor"===e||"⌊"===e?(l=o="⎢",c="⎣",d="Size4-Regular"):"\\lceil"===e||"⌈"===e?(o="⎡",l=c="⎢",d="Size4-Regular"):"\\rfloor"===e||"⌋"===e?(l=o="⎥",c="⎦",d="Size4-Regular"):"\\rceil"===e||"⌉"===e?(o="⎤",l=c="⎥",d="Size4-Regular"):"("===e||"\\lparen"===e?(o="⎛",l="⎜",c="⎝",d="Size4-Regular"):")"===e||"\\rparen"===e?(o="⎞",l="⎟",c="⎠",d="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",c="⎩",l="⎪",d="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",c="⎭",l="⎪",d="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",c="⎩",l="⎪",d="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",c="⎭",l="⎪",d="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",c="⎭",l="⎪",d="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",c="⎩",l="⎪",d="Size4-Regular");var _=Gt(o,d,a),u=_.height+_.depth,m=Gt(l,d,a),p=m.height+m.depth,g=Gt(c,d,a),E=g.height+g.depth,h=0,S=1;if(null!==s){var f=Gt(s,d,a);h=f.height+f.depth,S=2}var T=u+E+h,C=Math.max(0,Math.ceil((t-T)/(S*p))),N=T+C*S*p,v=r.fontMetrics().axisHeight;n&&(v*=r.sizeMultiplier);var R=N/2-v,A=.005*(C+1)-p,O=[];if(O.push(zt(c,d,a)),null===s)for(var y=0;y<C;y++)O.push(qt),O.push(zt(l,d,a));else{for(var I=0;I<C;I++)O.push(qt),O.push(zt(l,d,a));O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(s,d,a));for(var D=0;D<C;D++)O.push(qt),O.push(zt(l,d,a))}O.push({type:"kern",size:A}),O.push(zt(l,d,a)),O.push(qt),O.push(zt(o,d,a));var x=r.havingBaseStyle(b.TEXT),M=Be.makeVList({positionType:"bottom",positionData:R,children:O},x);return Ht(Be.makeSpan(["delimsizing","mult"],[M],x),b.TEXT,r,i)},Wt=function(e,t,n,r,a){var i=function(e,t,n){t*=1e3;var r="";switch(e){case"sqrtMain":r=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize1":r=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize2":r=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize3":r=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize4":r=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,80);break;case"sqrtTall":r=function(e,t,n){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(n-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,80,n)}return r}(e,r,n),o=new U(e,i),s=new k([o],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[s],a)},Qt=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],$t=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jt=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Xt=[0,1.2,1.8,2.4,3],Zt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Jt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"stack"}],en=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],tn=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},nn=function(e,t,n,r){for(var a=Math.min(2,3-r.style.size);a<n.length&&"stack"!==n[a].type;a++){var i=Gt(e,tn(n[a]),"math"),o=i.height+i.depth;if("small"===n[a].type&&(o*=r.havingBaseStyle(n[a].style).sizeMultiplier),o>t)return n[a]}return n[n.length-1]},rn=function(e,t,n,r,a,i){var o;"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),o=_.contains(jt,e)?Zt:_.contains(Qt,e)?en:Jt;var s=nn(e,t,o,r);return"small"===s.type?function(e,t,n,r,a,i){var o=Be.makeSymbol(e,"Main-Regular",a,r),s=Ht(o,t,r,i);return n&&Yt(s,r,t),s}(e,s.style,n,r,a,i):"large"===s.type?Vt(e,s.size,n,r,a,i):Kt(e,t,n,r,a,i)},an=function(e,t){var n,r,a=t.havingBaseSizing(),i=nn("\\surd",e*a.sizeMultiplier,en,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,c=0,d=0;return"small"===i.type?(d=1e3+1e3*s+80,e<1?o=1:e<1.4&&(o=.7),c=(1+s)/o,(n=Wt("sqrtMain",l=(1+s+.08)/o,d,s,t)).style.minWidth="0.853em",r=.833/o):"large"===i.type?(d=1080*Xt[i.size],c=(Xt[i.size]+s)/o,l=(Xt[i.size]+s+.08)/o,(n=Wt("sqrtSize"+i.size,l,d,s,t)).style.minWidth="1.02em",r=1/o):(l=e+s+.08,c=e+s,d=Math.floor(1e3*e+s)+80,(n=Wt("sqrtTall",l,d,s,t)).style.minWidth="0.742em",r=1.056),n.height=c,n.style.height=l+"em",{span:n,advanceWidth:r,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},on=function(e,t,n,r,a){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),_.contains(Qt,e)||_.contains(jt,e))return Vt(e,t,!1,n,r,a);if(_.contains($t,e))return Kt(e,Xt[t],!1,n,r,a);throw new o("Illegal delimiter: '"+e+"'")},sn=rn,ln=function(e,t,n,r,a,i){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o),c=Math.max(l/500*901,2*l-s);return rn(e,c,!0,r,a,i)},cn={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},dn=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function _n(e,t){var n=ze(e);if(n&&_.contains(dn,n.text))return n;throw new o("Invalid delimiter: '"+(n?n.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function un(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Je({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cn[e.funcName].size,mclass:cn[e.funcName].mclass,delim:n.text}},htmlBuilder:function(e,t){return"."===e.delim?Be.makeSpan([e.mclass]):on(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(ft(e.delim,e.mode));var n=new St.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n}}),Je({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){var n=e.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:_n(t[0],e).text,color:n}}}),Je({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e),r=e.parser;++r.leftrightDepth;var a=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=Ge(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:a,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){un(e);for(var n,r,a=st(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,n="."===e.left?_t(t,["mopen"]):ln(e.left,i,o,t,e.mode,["mopen"]),a.unshift(n),s)for(var c=1;c<a.length;c++){var d=a[c].isMiddle;d&&(a[c]=ln(d.delim,i,o,d.options,e.mode,[]))}if("."===e.right)r=_t(t,["mclose"]);else{var _=e.rightColor?t.withColor(e.rightColor):t;r=ln(e.right,i,o,_,e.mode,["mclose"])}return a.push(r),Be.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){un(e);var n=Ct(e.body,t);if("."!==e.left){var r=new St.MathNode("mo",[ft(e.left,e.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if("."!==e.right){var a=new St.MathNode("mo",[ft(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),n.push(a)}return Tt(n)}}),Je({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);if(!e.parser.leftrightDepth)throw new o("\\middle without preceding \\left",n);return{type:"middle",mode:e.parser.mode,delim:n.text}},htmlBuilder:function(e,t){var n;if("."===e.delim)n=_t(t,[]);else{n=on(e.delim,1,t,e.mode,[]);var r={delim:e.delim,options:t};n.isMiddle=r}return n},mathmlBuilder:function(e,t){var n="\\vert"===e.delim||"|"===e.delim?ft("|","text"):ft(e.delim,e.mode),r=new St.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var mn=function(e,t){var n,r,a=Be.wrapFragment(ut(e.body,t),t),i=e.label.substr(1),o=t.sizeMultiplier,s=0,l=_.isCharacterBox(e.body);if("sout"===i)(n=Be.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/o,s=-.5*t.fontMetrics().xHeight;else{/cancel/.test(i)?l||a.classes.push("cancel-pad"):a.classes.push("boxpad");var c=0,d=0;/box/.test(i)?(d=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),c=t.fontMetrics().fboxsep+("colorbox"===i?0:d)):c=l?.2:0,n=xt(a,i,c,t),/fbox|boxed|fcolorbox/.test(i)&&(n.style.borderStyle="solid",n.style.borderWidth=d+"em"),s=a.depth+c,e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor,e.borderColor&&(n.style.borderColor=e.borderColor))}return r=e.backgroundColor?Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:s},{type:"elem",elem:a,shift:0}]},t):Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},t),/cancel/.test(i)&&(r.height=a.height,r.depth=a.depth),/cancel/.test(i)&&!l?Be.makeSpan(["mord","cancel-lap"],[r],t):Be.makeSpan(["mord"],[r],t)},pn=function(e,t){var n=0,r=new St.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[vt(e.body,t)]);switch(e.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};Je({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:r.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Ge(t[0],"color-token").color,o=Ge(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:r.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),Je({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=t[0];return{type:"enclose",mode:r.mode,label:a,body:i}},htmlBuilder:mn,mathmlBuilder:pn});var gn={};function En(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<n.length;++l)gn[n[l]]=s;i&&(Xe[t]=i),o&&(Ze[t]=o)}function hn(e){var t=[];e.consumeSpaces();for(var n=e.fetch().text;"\\hline"===n||"\\hdashline"===n;)e.consume(),t.push("\\hdashline"===n),e.consumeSpaces(),n=e.fetch().text;return t}function Sn(e,t,n){var r=t.hskipBeforeAndAfter,a=t.addJot,i=t.cols,s=t.arraystretch,l=t.colSeparationType;if(e.gullet.beginGroup(),e.gullet.macros.set("\\\\","\\cr"),!s){var c=e.gullet.expandMacroAsText("\\arraystretch");if(null==c)s=1;else if(!(s=parseFloat(c))||s<0)throw new o("Invalid \\arraystretch: "+c)}e.gullet.beginGroup();var d=[],_=[d],u=[],m=[];for(m.push(hn(e));;){var p=e.parseExpression(!1,"\\cr");e.gullet.endGroup(),e.gullet.beginGroup(),p={type:"ordgroup",mode:e.mode,body:p},n&&(p={type:"styling",mode:e.mode,style:n,body:[p]}),d.push(p);var g=e.fetch().text;if("&"===g)e.consume();else{if("\\end"===g){1===d.length&&"styling"===p.type&&0===p.body[0].body.length&&_.pop(),m.length<_.length+1&&m.push([]);break}if("\\cr"!==g)throw new o("Expected & or \\\\ or \\cr or \\end",e.nextToken);var E=Ge(e.parseFunction(),"cr");u.push(E.size),m.push(hn(e)),d=[],_.push(d)}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:a,arraystretch:s,body:_,cols:i,rowGaps:u,hskipBeforeAndAfter:r,hLinesBeforeRow:m,colSeparationType:l}}function fn(e){return"d"===e.substr(0,1)?"display":"text"}var Tn=function(e,t){var n,r,a=e.body.length,i=e.hLinesBeforeRow,s=0,l=new Array(a),c=[],d=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,m=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(m=t.havingStyle(b.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var p=12*u,g=3*u,E=e.arraystretch*p,h=.7*E,S=.3*E,f=0;function T(e){for(var t=0;t<e.length;++t)t>0&&(f+=.25),c.push({pos:f,isDashed:e[t]})}for(T(i[0]),n=0;n<e.body.length;++n){var C=e.body[n],N=h,v=S;s<C.length&&(s=C.length);var R=new Array(C.length);for(r=0;r<C.length;++r){var A=ut(C[r],t);v<A.depth&&(v=A.depth),N<A.height&&(N=A.height),R[r]=A}var O=e.rowGaps[n],y=0;O&&(y=Oe(O,t))>0&&(v<(y+=S)&&(v=y),y=0),e.addJot&&(v+=g),R.height=N,R.depth=v,f+=N,R.pos=f,f+=v+y,l[n]=R,T(i[n+1])}var I,D,x=f/2+t.fontMetrics().axisHeight,M=e.cols||[],w=[];for(r=0,D=0;r<s||D<M.length;++r,++D){for(var L=M[D]||{},P=!0;"separator"===L.type;){if(P||((I=Be.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",w.push(I)),"|"!==L.separator&&":"!==L.separator)throw new o("Invalid separator type: "+L.separator);var k="|"===L.separator?"solid":"dashed",U=Be.makeSpan(["vertical-separator"],[],t);U.style.height=f+"em",U.style.borderRightWidth=d+"em",U.style.borderRightStyle=k,U.style.margin="0 -"+d/2+"em",U.style.verticalAlign=-(f-x)+"em",w.push(U),L=M[++D]||{},P=!1}if(!(r>=s)){var F=void 0;(r>0||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.pregap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I));var B=[];for(n=0;n<a;++n){var G=l[n],H=G[r];if(H){var Y=G.pos-x;H.depth=G.depth,H.height=G.height,B.push({type:"elem",elem:H,shift:Y})}}B=Be.makeVList({positionType:"individualShift",children:B},t),B=Be.makeSpan(["col-align-"+(L.align||"c")],[B]),w.push(B),(r<s-1||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.postgap,m))&&((I=Be.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I))}}if(l=Be.makeSpan(["mtable"],w),c.length>0){for(var V=Be.makeLineSpan("hline",t,d),z=Be.makeLineSpan("hdashline",t,d),q=[{type:"elem",elem:l,shift:0}];c.length>0;){var K=c.pop(),W=K.pos-x;K.isDashed?q.push({type:"elem",elem:z,shift:W}):q.push({type:"elem",elem:V,shift:W})}l=Be.makeVList({positionType:"individualShift",children:q},t)}return Be.makeSpan(["mord"],[l],t)},bn={c:"center ",l:"left ",r:"right "},Cn=function(e,t){var n=new St.MathNode("mtable",e.body.map(function(e){return new St.MathNode("mtr",e.map(function(e){return new St.MathNode("mtd",[vt(e,t)])}))})),r=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);n.setAttribute("rowspacing",r+"em");var a="",i="";if(e.cols){var o=e.cols,s="",l=!1,c=0,d=o.length;"separator"===o[0].type&&(a+="top ",c=1),"separator"===o[o.length-1].type&&(a+="bottom ",d-=1);for(var _=c;_<d;_++)"align"===o[_].type?(i+=bn[o[_].align],l&&(s+="none "),l=!0):"separator"===o[_].type&&l&&(s+="|"===o[_].separator?"solid ":"dashed ",l=!1);n.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&n.setAttribute("columnlines",s.trim())}if("align"===e.colSeparationType){for(var u=e.cols||[],m="",p=1;p<u.length;p++)m+=p%2?"0em ":"1em ";n.setAttribute("columnspacing",m.trim())}else"alignat"===e.colSeparationType?n.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?n.setAttribute("columnspacing","0.2778em"):n.setAttribute("columnspacing","1em");var g="",E=e.hLinesBeforeRow;a+=E[0].length>0?"left ":"",a+=E[E.length-1].length>0?"right ":"";for(var h=1;h<E.length-1;h++)g+=0===E[h].length?"none ":E[h][0]?"dashed ":"solid ";return/[sd]/.test(g)&&n.setAttribute("rowlines",g.trim()),""!==a&&(n=new St.MathNode("menclose",[n])).setAttribute("notation",a.trim()),e.arraystretch&&e.arraystretch<1&&(n=new St.MathNode("mstyle",[n])).setAttribute("scriptlevel","1"),n},Nn=function(e,t){var n,r=[],a=Sn(e.parser,{cols:r,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:e.mode,body:[]},l=He(t[0],"ordgroup");if(l){for(var c="",d=0;d<l.body.length;d++){c+=Ge(l.body[d],"textord").text}n=Number(c),i=2*n}var _=!i;a.body.forEach(function(e){for(var t=1;t<e.length;t+=2){Ge(Ge(e[t],"styling").body[0],"ordgroup").body.unshift(s)}if(_)i<e.length&&(i=e.length);else{var r=e.length/2;if(n<r)throw new o("Too many math in a row: expected "+n+", but got "+r,e[0])}});for(var u=0;u<i;++u){var m="r",p=0;u%2==1?m="l":u>0&&_&&(p=1),r[u]={type:"align",align:m,pregap:p,postgap:0}}return a.colSeparationType=_?"align":"alignat",a};En({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var n={cols:(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+t,e)}),hskipBeforeAndAfter:!0};return Sn(e.parser,n,fn(e.envName))},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],n=Sn(e.parser,{hskipBeforeAndAfter:!1},fn(e.envName));return t?{type:"leftright",mode:e.mode,body:[n],left:t[0],right:t[1],rightColor:void 0}:n},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var n=(ze(t[0])?[t[0]]:Ge(t[0],"ordgroup").body).map(function(e){var t=Ve(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new o("Unknown column alignment: "+t,e)});if(n.length>1)throw new o("{subarray} can contain only one column");var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if((r=Sn(e.parser,r,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return r},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},fn(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["aligned"],props:{numArgs:0},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){return Sn(e.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["alignedat"],props:{numArgs:1},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),Je({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new o(e.funcName+" valid only within array environment")}});var vn=gn;Je({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];if("ordgroup"!==a.type)throw new o("Invalid environment name",a);for(var i="",s=0;s<a.body.length;++s)i+=Ge(a.body[s],"textord").text;if("\\begin"===r){if(!vn.hasOwnProperty(i))throw new o("No such environment: "+i,a);var l=vn[i],c=n.parseArguments("\\begin{"+i+"}",l),d=c.args,_=c.optArgs,u={mode:n.mode,envName:i,parser:n},m=l.handler(u,d,_);n.expect("\\end",!1);var p=n.nextToken,g=Ge(n.parseFunction(),"environment");if(g.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+g.name+"}",p);return m}return{type:"environment",mode:n.mode,name:i,nameGroup:a}}});var Rn=Be.makeSpan;function An(e,t){var n=st(e.body,t,!0);return Rn([e.mclass],n,t)}function On(e,t){var n,r=Ct(e.body,t);return"minner"===e.mclass?St.newDocumentFragment(r):("mord"===e.mclass?e.isCharacterBox?(n=r[0]).type="mi":n=new St.MathNode("mi",r):(e.isCharacterBox?(n=r[0]).type="mo":n=new St.MathNode("mo",r),"mbin"===e.mclass?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):"mpunct"===e.mclass?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):"mopen"!==e.mclass&&"mclose"!==e.mclass||(n.attributes.lspace="0em",n.attributes.rspace="0em")),n)}Je({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.substr(5),body:tt(a),isCharacterBox:_.isCharacterBox(a)}},htmlBuilder:An,mathmlBuilder:On});var yn=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};Je({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:yn(t[0]),body:[t[1]],isCharacterBox:_.isCharacterBox(t[1])}}}),Je({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[1],o=t[0];n="\\stackrel"!==a?yn(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:tt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:r.mode,mclass:n,body:[l],isCharacterBox:_.isCharacterBox(l)}},htmlBuilder:An,mathmlBuilder:On});var In=function(e,t){var n=e.font,r=t.withFont(n);return ut(e.body,r)},Dn=function(e,t){var n=e.font,r=t.withFont(n);return vt(e.body,r)},xn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Je({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0],i=r;return i in xn&&(i=xn[i]),{type:"font",mode:n.mode,font:i.slice(1),body:a}},htmlBuilder:In,mathmlBuilder:Dn}),Je({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=t[0],a=_.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:yn(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:a}}}),Je({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=e.breakOnTokenText,i=n.mode,o=n.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+r.slice(1),body:{type:"ordgroup",mode:n.mode,body:o}}},htmlBuilder:In,mathmlBuilder:Dn});var Mn=function(e,t){var n=t;return"display"===e?n=n.id>=b.SCRIPT.id?n.text():b.DISPLAY:"text"===e&&n.size===b.DISPLAY.size?n=b.TEXT:"script"===e?n=b.SCRIPT:"scriptscript"===e&&(n=b.SCRIPTSCRIPT),n},wn=function(e,t){var n,r=Mn(e.size,t.style),a=r.fracNum(),i=r.fracDen();n=t.havingStyle(a);var o=ut(e.numer,n,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}n=t.havingStyle(i);var c,d,_,u,m,p,g,E,h,S,f=ut(e.denom,n,t);if(e.hasBarLine?(e.barSize?(d=Oe(e.barSize,t),c=Be.makeLineSpan("frac-line",t,d)):c=Be.makeLineSpan("frac-line",t),d=c.height,_=c.height):(c=null,d=0,_=t.fontMetrics().defaultRuleThickness),r.size===b.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,m=d>0?3*_:7*_,p=t.fontMetrics().denom1):(d>0?(u=t.fontMetrics().num2,m=_):(u=t.fontMetrics().num3,m=3*_),p=t.fontMetrics().denom2),c){var T=t.fontMetrics().axisHeight;u-o.depth-(T+.5*d)<m&&(u+=m-(u-o.depth-(T+.5*d))),T-.5*d-(f.height-p)<m&&(p+=m-(T-.5*d-(f.height-p)));var C=-(T-.5*d);g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:c,shift:C},{type:"elem",elem:o,shift:-u}]},t)}else{var N=u-o.depth-(f.height-p);N<m&&(u+=.5*(m-N),p+=.5*(m-N)),g=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:o,shift:-u}]},t)}return n=t.havingStyle(r),g.height*=n.sizeMultiplier/t.sizeMultiplier,g.depth*=n.sizeMultiplier/t.sizeMultiplier,E=r.size===b.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2,h=null==e.leftDelim?_t(t,["mopen"]):sn(e.leftDelim,E,!0,t.havingStyle(r),e.mode,["mopen"]),S=e.continued?Be.makeSpan([]):null==e.rightDelim?_t(t,["mclose"]):sn(e.rightDelim,E,!0,t.havingStyle(r),e.mode,["mclose"]),Be.makeSpan(["mord"].concat(n.sizingClasses(t)),[h,Be.makeSpan(["mfrac"],[g]),S],t)},Ln=function(e,t){var n=new St.MathNode("mfrac",[vt(e.numer,t),vt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var r=Oe(e.barSize,t);n.setAttribute("linethickness",r+"em")}}else n.setAttribute("linethickness","0px");var a=Mn(e.size,t.style);if(a.size!==t.style.size){n=new St.MathNode("mstyle",[n]);var i=a.size===b.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new St.MathNode("mo",[new St.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(n),null!=e.rightDelim){var l=new St.MathNode("mo",[new St.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Tt(o)}return n};Je({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,c="auto";switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":n=!0;break;case"\\\\atopfrac":n=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":n=!1,s="(",l=")";break;case"\\\\bracefrac":n=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":n=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\cfrac":case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text"}return{type:"genfrac",mode:r.mode,continued:"\\cfrac"===a,numer:i,denom:o,hasBarLine:n,leftDelim:s,rightDelim:l,size:c,barSize:null}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,n=e.parser,r=e.funcName,a=e.token;switch(r){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:n.mode,replaceWith:t,token:a}}});var Pn=["display","text","script","scriptscript"],kn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};Je({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var n=e.parser,r=t[4],a=t[5],i=He(t[0],"atom");i&&(i=Ye(t[0],"open"));var o=i?kn(i.text):null,s=He(t[1],"atom");s&&(s=Ye(t[1],"close"));var l,c=s?kn(s.text):null,d=Ge(t[2],"size"),_=null;l=!!d.isBlank||(_=d.value).number>0;var u="auto",m=He(t[3],"ordgroup");if(m){if(m.body.length>0){var p=Ge(m.body[0],"textord");u=Pn[Number(p.text)]}}else m=Ge(t[3],"textord"),u=Pn[Number(m.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:l,barSize:_,leftDelim:o,rightDelim:c,size:u}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var n=e.parser,r=(e.funcName,e.token);return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:Ge(t[0],"size").value,token:r}}}),Je({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var n=e.parser,r=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ge(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:wn,mathmlBuilder:Ln});var Un=function(e,t){var n,r,a=t.style,i=He(e,"supsub");i?(n=i.sup?ut(i.sup,t.havingStyle(a.sup()),t):ut(i.sub,t.havingStyle(a.sub()),t),r=Ge(i.base,"horizBrace")):r=Ge(e,"horizBrace");var o,s=ut(r.base,t.havingBaseStyle(b.DISPLAY)),l=wt(r,t);if(r.isOver?(o=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(o=Be.makeVList({positionType:"bottom",positionData:s.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[0].classes.push("svg-align"),n){var c=Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t);o=r.isOver?Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Be.makeVList({positionType:"bottom",positionData:c.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:c}]},t)}return Be.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t)};Je({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:t[0]}},htmlBuilder:Un,mathmlBuilder:function(e,t){var n=Mt(e.label);return new St.MathNode(e.isOver?"mover":"munder",[vt(e.base,t),n])}}),Je({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[1],a=Ge(t[0],"url").url;return n.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:n.mode,href:a,body:tt(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var n=st(e.body,t,!1);return Be.makeAnchor(e.href,[],n,t)},mathmlBuilder:function(e,t){var n=Nt(e.body,t);return n instanceof Et||(n=new Et("mrow",[n])),n.setAttribute("href",e.href),n}}),Je({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:n.mode,font:"\\texttt",body:a};return{type:"href",mode:n.mode,href:r,body:tt(s)}}}),Je({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:tt(t[0]),mathml:tt(t[1])}},htmlBuilder:function(e,t){var n=st(e.html,t,!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){return Nt(e.mathml,t)}});var Fn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new o("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(t[1]+t[2]),unit:t[3]};if(!Ae(n))throw new o("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Je({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,n){var r=e.parser,a={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(n[0])for(var c=Ge(n[0],"raw").string.split(","),d=0;d<c.length;d++){var _=c[d].split("=");if(2===_.length){var u=_[1].trim();switch(_[0].trim()){case"alt":l=u;break;case"width":a=Fn(u);break;case"height":i=Fn(u);break;case"totalheight":s=Fn(u);break;default:throw new o("Invalid key: '"+_[0]+"' in \\includegraphics.")}}}var m=Ge(t[0],"url").url;return""===l&&(l=(l=(l=m).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),r.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:r.mode,alt:l,width:a,height:i,totalheight:s,src:m}:r.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var n=Oe(e.height,t),r=0;e.totalheight.number>0&&(r=Oe(e.totalheight,t)-n,r=Number(r.toFixed(2)));var a=0;e.width.number>0&&(a=Oe(e.width,t));var i={height:n+r+"em"};a>0&&(i.width=a+"em"),r>0&&(i.verticalAlign=-r+"em");var o=new w(e.src,e.alt,i);return o.height=n,o.depth=r,o},mathmlBuilder:function(e,t){var n=new St.MathNode("mglyph",[]);n.setAttribute("alt",e.alt);var r=Oe(e.height,t),a=0;if(e.totalheight.number>0&&(a=(a=Oe(e.totalheight,t)-r).toFixed(2),n.setAttribute("valign","-"+a+"em")),n.setAttribute("height",r+a+"em"),e.width.number>0){var i=Oe(e.width,t);n.setAttribute("width",i+"em")}return n.setAttribute("src",e.src),n}}),Je({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=Ge(t[0],"size");if(n.settings.strict){var i="m"===r[1],o="mu"===a.value.unit;i?(o||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, not "+a.value.unit+" units"),"math"!==n.mode&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):o&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:a.value}},htmlBuilder:function(e,t){return Be.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var n=Oe(e.dimension,t);return new St.SpaceNode(n)}}),Je({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:a}},htmlBuilder:function(e,t){var n;"clap"===e.alignment?(n=Be.makeSpan([],[ut(e.body,t)]),n=Be.makeSpan(["inner"],[n],t)):n=Be.makeSpan(["inner"],[ut(e.body,t)]);var r=Be.makeSpan(["fix"],[]),a=Be.makeSpan([e.alignment],[n,r],t),i=Be.makeSpan(["strut"]);return i.style.height=a.height+a.depth+"em",i.style.verticalAlign=-a.depth+"em",a.children.unshift(i),a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},t),Be.makeSpan(["mord"],[a],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);if("rlap"!==e.alignment){var r="llap"===e.alignment?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}}),Je({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=e.funcName,r=e.parser,a=r.mode;r.switchMode("math");var i="\\("===n?"\\)":"$",o=r.parseExpression(!1,i);return r.expect(i),r.switchMode(a),{type:"styling",mode:r.mode,style:"text",body:o}}}),Je({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new o("Mismatched "+e.funcName)}});var Bn=function(e,t){switch(t.style.size){case b.DISPLAY.size:return e.display;case b.TEXT.size:return e.text;case b.SCRIPT.size:return e.script;case b.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Je({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:tt(t[0]),text:tt(t[1]),script:tt(t[2]),scriptscript:tt(t[3])}},htmlBuilder:function(e,t){var n=Bn(e,t),r=st(n,t,!1);return Be.makeFragment(r)},mathmlBuilder:function(e,t){var n=Bn(e,t);return Nt(n,t)}});var Gn=function(e,t,n,r,a,i,o){var s,l,c;if(e=Be.makeSpan([],[e]),t){var d=ut(t,r.havingStyle(a.sup()),r);l={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-d.depth)}}if(n){var _=ut(n,r.havingStyle(a.sub()),r);s={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}if(l&&s){var u=r.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(s){var m=e.height-o;c=Be.makeVList({positionType:"top",positionData:m,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e}]},r)}else{if(!l)return e;var p=e.depth+o;c=Be.makeVList({positionType:"bottom",positionData:p,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}return Be.makeSpan(["mop","op-limits"],[c],r)},Hn=["\\smallint"],Yn=function(e,t){var n,r,a,i=!1,o=He(e,"supsub");o?(n=o.sup,r=o.sub,a=Ge(o.base,"op"),i=!0):a=Ge(e,"op");var s,l=t.style,c=!1;if(l.size===b.DISPLAY.size&&a.symbol&&!_.contains(Hn,a.name)&&(c=!0),a.symbol){var d=c?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(u=a.name.substr(1),a.name="oiint"===u?"\\iint":"\\iiint"),s=Be.makeSymbol(a.name,d,"math",t,["mop","op-symbol",c?"large-op":"small-op"]),u.length>0){var m=s.italic,p=Be.staticSvg(u+"Size"+(c?"2":"1"),t);s=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:c?.08:0}]},t),a.name="\\"+u,s.classes.unshift("mop"),s.italic=m}}else if(a.body){var g=st(a.body,t,!0);1===g.length&&g[0]instanceof P?(s=g[0]).classes[0]="mop":s=Be.makeSpan(["mop"],Be.tryCombineChars(g),t)}else{for(var E=[],h=1;h<a.name.length;h++)E.push(Be.mathsym(a.name[h],a.mode,t));s=Be.makeSpan(["mop"],E,t)}var S=0,f=0;return(s instanceof P||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(S=(s.height-s.depth)/2-t.fontMetrics().axisHeight,f=s.italic),i?Gn(s,n,r,t,l,f,S):(S&&(s.style.position="relative",s.style.top=S+"em"),s)},Vn=function(e,t){var n;if(e.symbol)n=new Et("mo",[ft(e.name,e.mode)]),_.contains(Hn,e.name)&&n.setAttribute("largeop","false");else if(e.body)n=new Et("mo",Ct(e.body,t));else{n=new Et("mi",[new ht(e.name.slice(1))]);var r=new Et("mo",[ft("⁡","text")]);n=e.parentIsSupSub?new Et("mo",[n,r]):gt([n,r])}return n},zn={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Je({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:function(e,t){var n=e.parser,r=e.funcName;return 1===r.length&&(r=zn[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:tt(r)}},htmlBuilder:Yn,mathmlBuilder:Vn});var qn={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Je({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return 1===n.length&&(n=qn[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn});var Kn=function(e,t){var n,r,a,i,o=!1,s=He(e,"supsub");if(s?(n=s.sup,r=s.sub,a=Ge(s.base,"operatorname"),o=!0):a=Ge(e,"operatorname"),a.body.length>0){for(var l=a.body.map(function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),c=st(l,t.withFont("mathrm"),!0),d=0;d<c.length;d++){var _=c[d];_ instanceof P&&(_.text=_.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Be.makeSpan(["mop"],c,t)}else i=Be.makeSpan(["mop"],[],t);return o?Gn(i,n,r,t,t.style,0,0):i};function Wn(e,t,n){for(var r=st(e,t,!1),a=t.sizeMultiplier/n.sizeMultiplier,i=0;i<r.length;i++){var o=r[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(r[i].classes,t.sizingClasses(n)):r[i].classes[o+1]==="reset-size"+t.size&&(r[i].classes[o+1]="reset-size"+n.size),r[i].height*=a,r[i].depth*=a}return Be.makeFragment(r)}Je({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"operatorname",mode:n.mode,body:tt(a),alwaysHandleSupSub:"\\operatorname*"===r,limits:!1,parentIsSupSub:!1}},htmlBuilder:Kn,mathmlBuilder:function(e,t){for(var n=Ct(e.body,t.withFont("mathrm")),r=!0,a=0;a<n.length;a++){var i=n[a];if(i instanceof St.SpaceNode);else if(i instanceof St.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof St.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):r=!1;break;default:r=!1}else r=!1}if(r){var s=n.map(function(e){return e.toText()}).join("");n=[new St.TextNode(s)]}var l=new St.MathNode("mi",n);l.setAttribute("mathvariant","normal");var c=new St.MathNode("mo",[ft("⁡","text")]);return e.parentIsSupSub?new St.MathNode("mo",[l,c]):St.newDocumentFragment([l,c])}}),et({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Be.makeFragment(st(e.body,t,!1)):Be.makeSpan(["mord"],st(e.body,t,!0),t)},mathmlBuilder:function(e,t){return Nt(e.body,t,!0)}}),Je({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle()),r=Be.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r},{type:"kern",size:a}]},t);return Be.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("mover",[vt(e.body,t),n]);return r.setAttribute("accent","true"),r}}),Je({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"phantom",mode:n.mode,body:tt(r)}},htmlBuilder:function(e,t){var n=st(e.body,t.withPhantom(),!1);return Be.makeFragment(n)},mathmlBuilder:function(e,t){var n=Ct(e.body,t);return new St.MathNode("mphantom",n)}}),Je({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r<n.children.length;r++)n.children[r].height=0,n.children[r].depth=0;return n=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t),Be.makeSpan(["mord"],[n],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),Je({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Be.makeSpan(["inner"],[ut(e.body,t.withPhantom())]),r=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[n,r],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("width","0px"),a}}),Je({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Ge(t[0],"size").value,a=t[1];return{type:"raisebox",mode:n.mode,dy:r,body:a}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Oe(e.dy,t);return Be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute("voffset",r),n}}),Je({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,n){var r=e.parser,a=n[0],i=Ge(t[0],"size"),o=Ge(t[1],"size");return{type:"rule",mode:r.mode,shift:a&&Ge(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var n=Be.makeSpan(["mord","rule"],[],t),r=Oe(e.width,t),a=Oe(e.height,t),i=e.shift?Oe(e.shift,t):0;return n.style.borderRightWidth=r+"em",n.style.borderTopWidth=a+"em",n.style.bottom=i+"em",n.width=r,n.height=a+i,n.depth=-i,n.maxFontSize=1.125*a*t.sizeMultiplier,n},mathmlBuilder:function(e,t){var n=Oe(e.width,t),r=Oe(e.height,t),a=e.shift?Oe(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new St.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",n+"em"),o.setAttribute("height",r+"em");var s=new St.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height","+"+a+"em"):(s.setAttribute("height",a+"em"),s.setAttribute("depth","+"+-a+"em")),s.setAttribute("voffset",a+"em"),s}});var Qn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Je({type:"sizing",names:Qn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!1,n);return{type:"sizing",mode:a.mode,size:Qn.indexOf(r)+1,body:i}},htmlBuilder:function(e,t){var n=t.havingSize(e.size);return Wn(e.body,n,t)},mathmlBuilder:function(e,t){var n=t.havingSize(e.size),r=Ct(e.body,n),a=new St.MathNode("mstyle",r);return a.setAttribute("mathsize",n.sizeMultiplier+"em"),a}}),Je({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=!1,i=!1,o=n[0]&&Ge(n[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var c=t[0];return{type:"smash",mode:r.mode,body:c,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var n=Be.makeSpan([],[ut(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0,n.children))for(var r=0;r<n.children.length;r++)n.children[r].height=0;if(e.smashDepth&&(n.depth=0,n.children))for(var a=0;a<n.children.length;a++)n.children[a].depth=0;var i=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t);return Be.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);return e.smashHeight&&n.setAttribute("height","0px"),e.smashDepth&&n.setAttribute("depth","0px"),n}}),Je({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=n[0],i=t[0];return{type:"sqrt",mode:r.mode,body:i,index:a}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle());0===n.height&&(n.height=t.fontMetrics().xHeight),n=Be.wrapFragment(n,t);var r=t.fontMetrics().defaultRuleThickness,a=r;t.style.id<b.TEXT.id&&(a=t.fontMetrics().xHeight);var i=r+a/4,o=n.height+n.depth+i+r,s=an(o,t),l=s.span,c=s.ruleWidth,d=s.advanceWidth,_=l.height-c;_>n.height+n.depth+i&&(i=(i+_-n.height-n.depth)/2);var u=l.height-n.height-i-c;n.style.paddingLeft=d+"em";var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+u)},{type:"elem",elem:l},{type:"kern",size:c}]},t);if(e.index){var p=t.havingStyle(b.SCRIPTSCRIPT),g=ut(e.index,p,t),E=.6*(m.height-m.depth),h=Be.makeVList({positionType:"shift",positionData:-E,children:[{type:"elem",elem:g}]},t),S=Be.makeSpan(["root"],[h]);return Be.makeSpan(["mord","sqrt"],[S,m],t)}return Be.makeSpan(["mord","sqrt"],[m],t)},mathmlBuilder:function(e,t){var n=e.body,r=e.index;return r?new St.MathNode("mroot",[vt(n,t),vt(r,t)]):new St.MathNode("msqrt",[vt(n,t)])}});var $n={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT};Je({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!0,n),o=r.slice(1,r.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n).withFont("");return Wn(e.body,r,t)},mathmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n),a=Ct(e.body,r),i=new St.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});et({type:"supsub",htmlBuilder:function(e,t){var n=function(e,t){var n=e.base;return n?"op"===n.type?n.limits&&(t.style.size===b.DISPLAY.size||n.alwaysHandleSupSub)?Yn:null:"operatorname"===n.type?n.alwaysHandleSupSub&&(t.style.size===b.DISPLAY.size||n.limits)?Kn:null:"accent"===n.type?_.isCharacterBox(n.base)?Lt:null:"horizBrace"===n.type&&!e.sub===n.isOver?Un:null:null}(e,t);if(n)return n(e,t);var r,a,i,o=e.base,s=e.sup,l=e.sub,c=ut(o,t),d=t.fontMetrics(),u=0,m=0,p=o&&_.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());r=ut(s,g,t),p||(u=c.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var E=t.havingStyle(t.style.sub());a=ut(l,E,t),p||(m=c.depth+E.fontMetrics().subDrop*E.sizeMultiplier/t.sizeMultiplier)}i=t.style===b.DISPLAY?d.sup1:t.style.cramped?d.sup3:d.sup2;var h,S=t.sizeMultiplier,f=.5/d.ptPerEm/S+"em",T=null;if(a){var C=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(c instanceof P||C)&&(T=-c.italic+"em")}if(r&&a){u=Math.max(u,i,r.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var N=4*d.defaultRuleThickness;if(u-r.depth-(a.height-m)<N){m=N-(u-r.depth)+a.height;var v=.8*d.xHeight-(u-r.depth);v>0&&(u+=v,m-=v)}var R=[{type:"elem",elem:a,shift:m,marginRight:f,marginLeft:T},{type:"elem",elem:r,shift:-u,marginRight:f}];h=Be.makeVList({positionType:"individualShift",children:R},t)}else if(a){m=Math.max(m,d.sub1,a.height-.8*d.xHeight);var A=[{type:"elem",elem:a,marginLeft:T,marginRight:f}];h=Be.makeVList({positionType:"shift",positionData:m,children:A},t)}else{if(!r)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,r.depth+.25*d.xHeight),h=Be.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:r,marginRight:f}]},t)}var O=dt(c,"right")||"mord";return Be.makeSpan([O],[c,Be.makeSpan(["msupsub"],[h])],t)},mathmlBuilder:function(e,t){var n,r=!1,a=He(e.base,"horizBrace");a&&!!e.sup===a.isOver&&(r=!0,n=a.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var i,o=[vt(e.base,t)];if(e.sub&&o.push(vt(e.sub,t)),e.sup&&o.push(vt(e.sup,t)),r)i=n?"mover":"munder";else if(e.sub)if(e.sup){var s=e.base;i=s&&"op"===s.type&&s.limits&&t.style===b.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(t.style===b.DISPLAY||s.limits)?"munderover":"msubsup"}else{var l=e.base;i=l&&"op"===l.type&&l.limits&&(t.style===b.DISPLAY||l.alwaysHandleSupSub)?"munder":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===b.DISPLAY)?"munder":"msub"}else{var c=e.base;i=c&&"op"===c.type&&c.limits&&(t.style===b.DISPLAY||c.alwaysHandleSupSub)?"mover":c&&"operatorname"===c.type&&c.alwaysHandleSupSub&&(c.limits||t.style===b.DISPLAY)?"mover":"msup"}return new St.MathNode(i,o)}}),et({type:"atom",htmlBuilder:function(e,t){return Be.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[ft(e.text,e.mode)]);if("bin"===e.family){var r=bt(e,t);"bold-italic"===r&&n.setAttribute("mathvariant",r)}else"punct"===e.family?n.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||n.setAttribute("stretchy","false");return n}});var jn={mi:"italic",mn:"normal",mtext:"normal"};et({type:"mathord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var n=new St.MathNode("mi",[ft(e.text,e.mode,t)]),r=bt(e,t)||"italic";return r!==jn[n.type]&&n.setAttribute("mathvariant",r),n}}),et({type:"textord",htmlBuilder:function(e,t){return Be.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var n,r=ft(e.text,e.mode,t),a=bt(e,t)||"normal";return n="text"===e.mode?new St.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new St.MathNode("mn",[r]):"\\prime"===e.text?new St.MathNode("mo",[r]):new St.MathNode("mi",[r]),a!==jn[n.type]&&n.setAttribute("mathvariant",a),n}});var Xn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Zn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};et({type:"spacing",htmlBuilder:function(e,t){if(Zn.hasOwnProperty(e.text)){var n=Zn[e.text].className||"";if("text"===e.mode){var r=Be.makeOrd(e,t,"textord");return r.classes.push(n),r}return Be.makeSpan(["mspace",n],[Be.mathsym(e.text,e.mode,t)],t)}if(Xn.hasOwnProperty(e.text))return Be.makeSpan(["mspace",Xn[e.text]],[],t);throw new o('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Zn.hasOwnProperty(e.text)){if(Xn.hasOwnProperty(e.text))return new St.MathNode("mspace");throw new o('Unknown type of space "'+e.text+'"')}return new St.MathNode("mtext",[new St.TextNode(" ")])}});var Jn=function(){var e=new St.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};et({type:"tag",mathmlBuilder:function(e,t){var n=new St.MathNode("mtable",[new St.MathNode("mtr",[Jn(),new St.MathNode("mtd",[Nt(e.body,t)]),Jn(),new St.MathNode("mtd",[Nt(e.tag,t)])])]);return n.setAttribute("width","100%"),n}});var er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},tr={"\\textbf":"textbf","\\textmd":"textmd"},nr={"\\textit":"textit","\\textup":"textup"},rr=function(e,t){var n=e.font;return n?er[n]?t.withTextFontFamily(er[n]):tr[n]?t.withTextFontWeight(tr[n]):t.withTextFontShape(nr[n]):t};Je({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"text",mode:n.mode,body:tt(a),font:r}},htmlBuilder:function(e,t){var n=rr(e,t),r=st(e.body,n,!0);return Be.makeSpan(["mord","text"],Be.tryCombineChars(r),n)},mathmlBuilder:function(e,t){var n=rr(e,t);return Nt(e.body,n)}}),Je({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Be.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:a},{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n}]},t);return Be.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("munder",[vt(e.body,t),n]);return r.setAttribute("accentunder","true"),r}}),Je({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,n){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var n=ar(e),r=[],a=t.havingStyle(t.style.text()),i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),r.push(Be.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Be.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Be.tryCombineChars(r),a)},mathmlBuilder:function(e,t){var n=new St.TextNode(ar(e)),r=new St.MathNode("mtext",[n]);return r.setAttribute("mathvariant","monospace"),r}});var ar=function(e){return e.body.replace(/ /g,e.star?"␣":" ")},ir=je,or=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sr=new RegExp("[̀-ͯ]+$"),lr="([ \r\n\t]+)|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",cr=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(lr,"g"),this.catcodes={"%":14}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new a("EOF",new r(this,t,t));var n=this.tokenRegex.exec(e);if(null===n||n.index!==t)throw new o("Unexpected character: '"+e[t]+"'",new a(e[t],new r(this,t,t+1)));var i=n[2]||" ";if(14===this.catcodes[i]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var l=i.match(or);return l&&(i=l[1]),new a(i,new r(this,t,this.tokenRegex.lastIndex))},e}(),dr=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(void 0===e[t]?delete this.current[t]:this.current[t]=e[t])},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,n){if(void 0===n&&(n=!1),n){for(var r=0;r<this.undefStack.length;r++)delete this.undefStack[r][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}this.current[e]=t},e}(),_r={},ur=_r;function mr(e,t){_r[e]=t}mr("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),mr("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),mr("\\@ifnextchar",function(e){var t=e.consumeArgs(3),n=e.future();return 1===t[0].length&&t[0][0].text===n.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),mr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),mr("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var pr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};mr("\\char",function(e){var t,n=e.popToken(),r="";if("'"===n.text)t=8,n=e.popToken();else if('"'===n.text)t=16,n=e.popToken();else if("`"===n.text)if("\\"===(n=e.popToken()).text[0])r=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new o("\\char` missing argument");r=n.text.charCodeAt(0)}else t=10;if(t){if(null==(r=pr[n.text])||r>=t)throw new o("Invalid base-"+t+" digit "+n.text);for(var a;null!=(a=pr[e.future().text])&&a<t;)r*=t,r+=a,e.popToken()}return"\\@char{"+r+"}"});var gr=function(e,t){var n=e.consumeArgs(1)[0];if(1!==n.length)throw new o("\\gdef's first argument must be a macro name");var r=n[0].text,a=0;for(n=e.consumeArgs(1)[0];1===n.length&&"#"===n[0].text;){if(1!==(n=e.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+n.length+'"');if(!/^[1-9]$/.test(n[0].text))throw new o('Invalid argument number "'+n[0].text+'"');if(a++,parseInt(n[0].text)!==a)throw new o('Argument number "'+n[0].text+'" out of order');n=e.consumeArgs(1)[0]}return e.macros.set(r,{tokens:n,numArgs:a},t),""};mr("\\gdef",function(e){return gr(e,!0)}),mr("\\def",function(e){return gr(e,!1)}),mr("\\global",function(e){var t=e.consumeArgs(1)[0];if(1!==t.length)throw new o("Invalid command after \\global");var n=t[0].text;if("\\def"===n)return gr(e,!0);throw new o("Invalid command '"+n+"' after \\global")});var Er=function(e,t,n){var r=e.consumeArgs(1)[0];if(1!==r.length)throw new o("\\newcommand's first argument must be a macro name");var a=r[0].text,i=e.isDefined(a);if(i&&!t)throw new o("\\newcommand{"+a+"} attempting to redefine "+a+"; use \\renewcommand");if(!i&&!n)throw new o("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(1===(r=e.consumeArgs(1)[0]).length&&"["===r[0].text){for(var l="",c=e.expandNextToken();"]"!==c.text&&"EOF"!==c.text;)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+l);s=parseInt(l),r=e.consumeArgs(1)[0]}return e.macros.set(a,{tokens:r,numArgs:s}),""};mr("\\newcommand",function(e){return Er(e,!1,!0)}),mr("\\renewcommand",function(e){return Er(e,!0,!1)}),mr("\\providecommand",function(e){return Er(e,!0,!0)}),mr("\\bgroup","{"),mr("\\egroup","}"),mr("\\lq","`"),mr("\\rq","'"),mr("\\aa","\\r a"),mr("\\AA","\\r A"),mr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),mr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),mr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),mr("ℬ","\\mathscr{B}"),mr("ℰ","\\mathscr{E}"),mr("ℱ","\\mathscr{F}"),mr("ℋ","\\mathscr{H}"),mr("ℐ","\\mathscr{I}"),mr("ℒ","\\mathscr{L}"),mr("ℳ","\\mathscr{M}"),mr("ℛ","\\mathscr{R}"),mr("ℭ","\\mathfrak{C}"),mr("ℌ","\\mathfrak{H}"),mr("ℨ","\\mathfrak{Z}"),mr("\\Bbbk","\\Bbb{k}"),mr("·","\\cdotp"),mr("\\llap","\\mathllap{\\textrm{#1}}"),mr("\\rlap","\\mathrlap{\\textrm{#1}}"),mr("\\clap","\\mathclap{\\textrm{#1}}"),mr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),mr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),mr("\\ne","\\neq"),mr("≠","\\neq"),mr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),mr("∉","\\notin"),mr("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),mr("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),mr("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),mr("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),mr("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),mr("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),mr("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),mr("⟂","\\perp"),mr("‼","\\mathclose{!\\mkern-0.8mu!}"),mr("∌","\\notni"),mr("⌜","\\ulcorner"),mr("⌝","\\urcorner"),mr("⌞","\\llcorner"),mr("⌟","\\lrcorner"),mr("©","\\copyright"),mr("®","\\textregistered"),mr("️","\\textregistered"),mr("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),mr("⋮","\\vdots"),mr("\\varGamma","\\mathit{\\Gamma}"),mr("\\varDelta","\\mathit{\\Delta}"),mr("\\varTheta","\\mathit{\\Theta}"),mr("\\varLambda","\\mathit{\\Lambda}"),mr("\\varXi","\\mathit{\\Xi}"),mr("\\varPi","\\mathit{\\Pi}"),mr("\\varSigma","\\mathit{\\Sigma}"),mr("\\varUpsilon","\\mathit{\\Upsilon}"),mr("\\varPhi","\\mathit{\\Phi}"),mr("\\varPsi","\\mathit{\\Psi}"),mr("\\varOmega","\\mathit{\\Omega}"),mr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),mr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),mr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),mr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),mr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),mr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var hr={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};mr("\\dots",function(e){var t="\\dotso",n=e.expandAfterFuture().text;return n in hr?t=hr[n]:"\\not"===n.substr(0,4)?t="\\dotsb":n in Q.math&&_.contains(["bin","rel"],Q.math[n].group)&&(t="\\dotsb"),t});var Sr={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};mr("\\dotso",function(e){return e.future().text in Sr?"\\ldots\\,":"\\ldots"}),mr("\\dotsc",function(e){var t=e.future().text;return t in Sr&&","!==t?"\\ldots\\,":"\\ldots"}),mr("\\cdots",function(e){return e.future().text in Sr?"\\@cdots\\,":"\\@cdots"}),mr("\\dotsb","\\cdots"),mr("\\dotsm","\\cdots"),mr("\\dotsi","\\!\\cdots"),mr("\\dotsx","\\ldots\\,"),mr("\\DOTSI","\\relax"),mr("\\DOTSB","\\relax"),mr("\\DOTSX","\\relax"),mr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),mr("\\,","\\tmspace+{3mu}{.1667em}"),mr("\\thinspace","\\,"),mr("\\>","\\mskip{4mu}"),mr("\\:","\\tmspace+{4mu}{.2222em}"),mr("\\medspace","\\:"),mr("\\;","\\tmspace+{5mu}{.2777em}"),mr("\\thickspace","\\;"),mr("\\!","\\tmspace-{3mu}{.1667em}"),mr("\\negthinspace","\\!"),mr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),mr("\\negthickspace","\\tmspace-{5mu}{.277em}"),mr("\\enspace","\\kern.5em "),mr("\\enskip","\\hskip.5em\\relax"),mr("\\quad","\\hskip1em\\relax"),mr("\\qquad","\\hskip2em\\relax"),mr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),mr("\\tag@paren","\\tag@literal{({#1})}"),mr("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),mr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),mr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),mr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),mr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),mr("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),mr("\\\\","\\newline"),mr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var fr=G["Main-Regular"]["T".charCodeAt(0)][1]-.7*G["Main-Regular"]["A".charCodeAt(0)][1]+"em";mr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),mr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),mr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),mr("\\@hspace","\\hskip #1\\relax"),mr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),mr("\\ordinarycolon",":"),mr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),mr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),mr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),mr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),mr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),mr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),mr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),mr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),mr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),mr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),mr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),mr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),mr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),mr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),mr("∷","\\dblcolon"),mr("∹","\\eqcolon"),mr("≔","\\coloneqq"),mr("≕","\\eqqcolon"),mr("⩴","\\Coloneqq"),mr("\\ratio","\\vcentcolon"),mr("\\coloncolon","\\dblcolon"),mr("\\colonequals","\\coloneqq"),mr("\\coloncolonequals","\\Coloneqq"),mr("\\equalscolon","\\eqqcolon"),mr("\\equalscoloncolon","\\Eqqcolon"),mr("\\colonminus","\\coloneq"),mr("\\coloncolonminus","\\Coloneq"),mr("\\minuscolon","\\eqcolon"),mr("\\minuscoloncolon","\\Eqcolon"),mr("\\coloncolonapprox","\\Colonapprox"),mr("\\coloncolonsim","\\Colonsim"),mr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),mr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),mr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),mr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),mr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),mr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),mr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),mr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),mr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),mr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),mr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),mr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),mr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),mr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),mr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),mr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),mr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),mr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),mr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),mr("⟦","\\llbracket"),mr("⟧","\\rrbracket"),mr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),mr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),mr("⦃","\\lBrace"),mr("⦄","\\rBrace"),mr("\\darr","\\downarrow"),mr("\\dArr","\\Downarrow"),mr("\\Darr","\\Downarrow"),mr("\\lang","\\langle"),mr("\\rang","\\rangle"),mr("\\uarr","\\uparrow"),mr("\\uArr","\\Uparrow"),mr("\\Uarr","\\Uparrow"),mr("\\N","\\mathbb{N}"),mr("\\R","\\mathbb{R}"),mr("\\Z","\\mathbb{Z}"),mr("\\alef","\\aleph"),mr("\\alefsym","\\aleph"),mr("\\Alpha","\\mathrm{A}"),mr("\\Beta","\\mathrm{B}"),mr("\\bull","\\bullet"),mr("\\Chi","\\mathrm{X}"),mr("\\clubs","\\clubsuit"),mr("\\cnums","\\mathbb{C}"),mr("\\Complex","\\mathbb{C}"),mr("\\Dagger","\\ddagger"),mr("\\diamonds","\\diamondsuit"),mr("\\empty","\\emptyset"),mr("\\Epsilon","\\mathrm{E}"),mr("\\Eta","\\mathrm{H}"),mr("\\exist","\\exists"),mr("\\harr","\\leftrightarrow"),mr("\\hArr","\\Leftrightarrow"),mr("\\Harr","\\Leftrightarrow"),mr("\\hearts","\\heartsuit"),mr("\\image","\\Im"),mr("\\infin","\\infty"),mr("\\Iota","\\mathrm{I}"),mr("\\isin","\\in"),mr("\\Kappa","\\mathrm{K}"),mr("\\larr","\\leftarrow"),mr("\\lArr","\\Leftarrow"),mr("\\Larr","\\Leftarrow"),mr("\\lrarr","\\leftrightarrow"),mr("\\lrArr","\\Leftrightarrow"),mr("\\Lrarr","\\Leftrightarrow"),mr("\\Mu","\\mathrm{M}"),mr("\\natnums","\\mathbb{N}"),mr("\\Nu","\\mathrm{N}"),mr("\\Omicron","\\mathrm{O}"),mr("\\plusmn","\\pm"),mr("\\rarr","\\rightarrow"),mr("\\rArr","\\Rightarrow"),mr("\\Rarr","\\Rightarrow"),mr("\\real","\\Re"),mr("\\reals","\\mathbb{R}"),mr("\\Reals","\\mathbb{R}"),mr("\\Rho","\\mathrm{P}"),mr("\\sdot","\\cdot"),mr("\\sect","\\S"),mr("\\spades","\\spadesuit"),mr("\\sub","\\subset"),mr("\\sube","\\subseteq"),mr("\\supe","\\supseteq"),mr("\\Tau","\\mathrm{T}"),mr("\\thetasym","\\vartheta"),mr("\\weierp","\\wp"),mr("\\Zeta","\\mathrm{Z}"),mr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),mr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),mr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),mr("\\blue","\\textcolor{##6495ed}{#1}"),mr("\\orange","\\textcolor{##ffa500}{#1}"),mr("\\pink","\\textcolor{##ff00af}{#1}"),mr("\\red","\\textcolor{##df0030}{#1}"),mr("\\green","\\textcolor{##28ae7b}{#1}"),mr("\\gray","\\textcolor{gray}{#1}"),mr("\\purple","\\textcolor{##9d38bd}{#1}"),mr("\\blueA","\\textcolor{##ccfaff}{#1}"),mr("\\blueB","\\textcolor{##80f6ff}{#1}"),mr("\\blueC","\\textcolor{##63d9ea}{#1}"),mr("\\blueD","\\textcolor{##11accd}{#1}"),mr("\\blueE","\\textcolor{##0c7f99}{#1}"),mr("\\tealA","\\textcolor{##94fff5}{#1}"),mr("\\tealB","\\textcolor{##26edd5}{#1}"),mr("\\tealC","\\textcolor{##01d1c1}{#1}"),mr("\\tealD","\\textcolor{##01a995}{#1}"),mr("\\tealE","\\textcolor{##208170}{#1}"),mr("\\greenA","\\textcolor{##b6ffb0}{#1}"),mr("\\greenB","\\textcolor{##8af281}{#1}"),mr("\\greenC","\\textcolor{##74cf70}{#1}"),mr("\\greenD","\\textcolor{##1fab54}{#1}"),mr("\\greenE","\\textcolor{##0d923f}{#1}"),mr("\\goldA","\\textcolor{##ffd0a9}{#1}"),mr("\\goldB","\\textcolor{##ffbb71}{#1}"),mr("\\goldC","\\textcolor{##ff9c39}{#1}"),mr("\\goldD","\\textcolor{##e07d10}{#1}"),mr("\\goldE","\\textcolor{##a75a05}{#1}"),mr("\\redA","\\textcolor{##fca9a9}{#1}"),mr("\\redB","\\textcolor{##ff8482}{#1}"),mr("\\redC","\\textcolor{##f9685d}{#1}"),mr("\\redD","\\textcolor{##e84d39}{#1}"),mr("\\redE","\\textcolor{##bc2612}{#1}"),mr("\\maroonA","\\textcolor{##ffbde0}{#1}"),mr("\\maroonB","\\textcolor{##ff92c6}{#1}"),mr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),mr("\\maroonD","\\textcolor{##ca337c}{#1}"),mr("\\maroonE","\\textcolor{##9e034e}{#1}"),mr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),mr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),mr("\\purpleC","\\textcolor{##aa87ff}{#1}"),mr("\\purpleD","\\textcolor{##7854ab}{#1}"),mr("\\purpleE","\\textcolor{##543b78}{#1}"),mr("\\mintA","\\textcolor{##f5f9e8}{#1}"),mr("\\mintB","\\textcolor{##edf2df}{#1}"),mr("\\mintC","\\textcolor{##e0e5cc}{#1}"),mr("\\grayA","\\textcolor{##f6f7f7}{#1}"),mr("\\grayB","\\textcolor{##f0f1f2}{#1}"),mr("\\grayC","\\textcolor{##e3e5e6}{#1}"),mr("\\grayD","\\textcolor{##d6d8da}{#1}"),mr("\\grayE","\\textcolor{##babec2}{#1}"),mr("\\grayF","\\textcolor{##888d93}{#1}"),mr("\\grayG","\\textcolor{##626569}{#1}"),mr("\\grayH","\\textcolor{##3b3e40}{#1}"),mr("\\grayI","\\textcolor{##21242c}{#1}"),mr("\\kaBlue","\\textcolor{##314453}{#1}"),mr("\\kaGreen","\\textcolor{##71B307}{#1}");var Tr={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},br=function(){function e(e,t,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(ur,t.macros),this.mode=n,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new cr(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],n=0;n<e;++n){this.consumeSpaces();var r=this.popToken();if("{"===r.text){for(var a=[],i=1;0!==i;){var s=this.popToken();if(a.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",r)}a.pop(),a.reverse(),t[n]=a}else{if("EOF"===r.text)throw new o("End of input expecting macro argument");t[n]=[r]}}return t},t.expandOnce=function(){var e=this.popToken(),t=e.text,n=this._getExpansion(t);if(null==n)return this.pushToken(e),e;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var r=n.tokens;if(n.numArgs)for(var a=this.consumeArgs(n.numArgs),i=(r=r.slice()).length-1;i>=0;--i){var s=r[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=r[--i]).text)r.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var l;(l=r).splice.apply(l,[i,2].concat(a[+s.text-1]))}}}return this.pushTokens(r),r},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],n=this.stack.length;for(this.pushToken(new a(e));this.stack.length>n;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var n="function"==typeof t?t(this):t;if("string"==typeof n){var r=0;if(-1!==n.indexOf("#"))for(var a=n.replace(/##/g,"");-1!==a.indexOf("#"+(r+1));)++r;for(var i=new cr(n,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:r}}return n},t.isDefined=function(e){return this.macros.has(e)||ir.hasOwnProperty(e)||Q.math.hasOwnProperty(e)||Q.text.hasOwnProperty(e)||Tr.hasOwnProperty(e)},e}(),Cr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}},Nr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},vr=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new br(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new o("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var e=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),e},t.parseExpression=function(t,n){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(n&&a.text===n)break;if(t&&ir[a.text]&&ir[a.text].infix)break;var i=this.parseAtom(n);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},t.handleInfixNodes=function(e){for(var t,n=-1,r=0;r<e.length;r++){var a=He(e[r],"infix");if(a){if(-1!==n)throw new o("only one infix operator per group",a.token);n=r,t=a.replaceWith}}if(-1!==n&&t){var i,s,l=e.slice(0,n),c=e.slice(n+1);return i=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},s=1===c.length&&"ordgroup"===c[0].type?c[0]:{type:"ordgroup",mode:this.mode,body:c},["\\\\abovefrac"===t?this.callFunction(t,[i,e[n],s],[]):this.callFunction(t,[i,s],[])]}return e},t.handleSupSubscript=function(t){var n=this.fetch(),r=n.text;this.consume();var a=this.parseGroup(t,!1,e.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!a)throw new o("Expected group after '"+r+"'",n);return a},t.formatUnsupportedCmd=function(e){for(var t=[],n=0;n<e.length;n++)t.push({type:"textord",mode:"text",text:e[n]});var r={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]}},t.parseAtom=function(e){var t,n,r=this.parseGroup("atom",!1,null,e);if("text"===this.mode)return r;for(;;){this.consumeSpaces();var a=this.fetch();if("\\limits"===a.text||"\\nolimits"===a.text){var i=He(r,"op");if(i){var s="\\limits"===a.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=He(r,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",a);var l="\\limits"===a.text;i.limits=l}this.consume()}else if("^"===a.text){if(t)throw new o("Double superscript",a);t=this.handleSupSubscript("superscript")}else if("_"===a.text){if(n)throw new o("Double subscript",a);n=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(t)throw new o("Double superscript",a);var c={type:"textord",mode:this.mode,text:"\\prime"},d=[c];for(this.consume();"'"===this.fetch().text;)d.push(c),this.consume();"^"===this.fetch().text&&d.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:d}}}return t||n?{type:"supsub",mode:this.mode,base:r,sup:t,sub:n}:r},t.parseFunction=function(e,t,n){var r=this.fetch(),a=r.text,i=ir[a];if(!i)return null;if(this.consume(),null!=n&&i.greediness<=n)throw new o("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+a+"' in math mode",r);var s=this.parseArguments(a,i),l=s.args,c=s.optArgs;return this.callFunction(a,l,c,r,e)},t.callFunction=function(e,t,n,r,a){var i={funcName:e,parser:this,token:r,breakOnTokenText:a},s=ir[e];if(s&&s.handler)return s.handler(i,t,n);throw new o("No function handler for "+e)},t.parseArguments=function(e,t){var n=t.numArgs+t.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};for(var r=t.greediness,a=[],i=[],s=0;s<n;s++){var l=t.argTypes&&t.argTypes[s],c=s<t.numOptionalArgs,d=s>0&&!c||0===s&&!c&&"math"===this.mode,_=this.parseGroupOfType("argument to '"+e+"'",l,c,r,d);if(!_){if(c){i.push(null);continue}throw new o("Expected group after '"+e+"'",this.fetch())}(c?i:a).push(_)}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,n,r,a){switch(t){case"color":return a&&this.consumeSpaces(),this.parseColorGroup(n);case"size":return a&&this.consumeSpaces(),this.parseSizeGroup(n);case"url":return this.parseUrlGroup(n,a);case"math":case"text":return this.parseGroup(e,n,r,void 0,t,a);case"hbox":var i=this.parseGroup(e,n,r,void 0,"text",a);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(a&&this.consumeSpaces(),n&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",n,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(e,n,r,void 0,void 0,a);default:throw new o("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t,n){var r=t?"[":"{",a=t?"]":"}",i=this.fetch();if(i.text!==r){if(t)return null;if(n&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(r);for(var l,c="",d=this.fetch(),_=0,u=d;(l=this.fetch()).text!==a||n&&_>0;){switch(l.text){case"EOF":throw new o("Unexpected end of input in "+e,d.range(u,c));case r:_++;break;case a:_--}c+=(u=l).text,this.consume()}return this.expect(a),this.mode=s,d.range(u,c)},t.parseRegexGroup=function(e,t){var n=this.mode;this.mode="text";for(var r,a=this.fetch(),i=a,s="";"EOF"!==(r=this.fetch()).text&&e.test(s+r.text);)s+=(i=r).text,this.consume();if(""===s)throw new o("Invalid "+t+": '"+a.text+"'",a);return this.mode=n,a.range(i,s)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var n=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!n)throw new o("Invalid color: '"+t.text+"'",t);var r=n[0];return/^[0-9a-f]{6}$/i.test(r)&&(r="#"+r),{type:"color-token",mode:this.mode,color:r}},t.parseSizeGroup=function(e){var t,n=!1;if(!(t=e||"{"===this.fetch().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",n=!0);var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r)throw new o("Invalid size: '"+t.text+"'",t);var a={number:+(r[1]+r[2]),unit:r[3]};if(!Ae(a))throw new o("Invalid unit: '"+a.unit+"'",t);return{type:"size",mode:this.mode,value:a,isBlank:n}},t.parseUrlGroup=function(e,t){this.gullet.lexer.setCatcode("%",13);var n=this.parseStringGroup("url",e,!0);if(this.gullet.lexer.setCatcode("%",14),!n)return null;var r=n.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseGroup=function(t,n,a,i,s,l){var c=this.mode;s&&this.switchMode(s),l&&this.consumeSpaces();var d,_=this.fetch(),u=_.text;if(n?"["===u:"{"===u||"\\begingroup"===u){this.consume();var m=e.endOfGroup[u];this.gullet.beginGroup();var p=this.parseExpression(!1,m),g=this.fetch();this.expect(m),this.gullet.endGroup(),d={type:"ordgroup",mode:this.mode,loc:r.range(_,g),body:p,semisimple:"\\begingroup"===u||void 0}}else if(n)d=null;else if(null==(d=this.parseFunction(i,t,a)||this.parseSymbol())&&"\\"===u[0]&&!Tr.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,_);d=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(c),d},t.formLigatures=function(e){for(var t=e.length-1,n=0;n<t;++n){var a=e[n],i=a.text;"-"===i&&"-"===e[n+1].text&&(n+1<t&&"-"===e[n+2].text?(e.splice(n,3,{type:"textord",mode:"text",loc:r.range(a,e[n+2]),text:"---"}),t-=2):(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:"--"}),t-=1)),"'"!==i&&"`"!==i||e[n+1].text!==i||(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:i+i}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var n=t.slice(5),a="*"===n.charAt(0);if(a&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new o("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:n=n.slice(1,-1),star:a}}Nr.hasOwnProperty(t[0])&&!Q[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Nr[t[0]]+t.substr(1));var i,s=sr.exec(t);if(s&&("i"===(t=t.substring(0,s.index))?t="ı":"j"===t&&(t="ȷ")),Q[this.mode][t]){this.settings.strict&&"math"===this.mode&&"ÇÐÞçþ".indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,c=Q[this.mode][t].group,d=r.range(e);if(q.hasOwnProperty(c)){var _=c;l={type:"atom",mode:this.mode,family:_,loc:d,text:t}}else l={type:c,mode:this.mode,loc:d,text:t};i=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(v(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:r.range(e),text:t}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var m=s[0][u];if(!Cr[m])throw new o("Unknown accent ' "+m+"'",e);var p=Cr[m][this.mode];if(!p)throw new o("Accent "+m+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:r.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();vr.endOfExpression=["}","\\endgroup","\\end","\\right","&"],vr.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},vr.SUPSUB_GREEDINESS=1;var Rr=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var n=new vr(e,t);delete n.gullet.macros.current["\\df@tag"];var r=n.parse();if(n.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new o("\\tag works only in display equations");n.gullet.feed("\\df@tag"),r=[{type:"tag",mode:"text",body:r,tag:n.parse()}]}return r},Ar=function(e,t,n){t.textContent="";var r=yr(e,n).toNode();t.appendChild(r)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Ar=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Or=function(e,t,n){if(n.throwOnError||!(e instanceof o))throw e;var r=Be.makeSpan(["katex-error"],[new P(t)]);return r.setAttribute("title",e.toString()),r.setAttribute("style","color:"+n.errorColor),r},yr=function(e,t){var n=new u(t);try{return function(e,t,n){var r,a=At(n);if("mathml"===n.output)return Rt(e,t,a,!0);if("html"===n.output){var i=pt(e,a);r=Be.makeSpan(["katex"],[i])}else{var o=Rt(e,t,a,!1),s=pt(e,a);r=Be.makeSpan(["katex"],[o,s])}return Ot(r,n)}(Rr(e,n),e,n)}catch(t){return Or(t,e,n)}},Ir={version:"0.11.1",render:Ar,renderToString:function(e,t){return yr(e,t).toMarkup()},ParseError:o,__parse:function(e,t){var n=new u(t);return Rr(e,n)},__renderToDomTree:yr,__renderToHTMLTree:function(e,t){var n=new u(t);try{return function(e,t,n){var r=pt(e,At(n)),a=Be.makeSpan(["katex"],[r]);return Ot(a,n)}(Rr(e,n),0,n)}catch(t){return Or(t,e,n)}},__setFontMetrics:function(e,t){G[e]=t},__defineSymbol:$,__defineMacro:mr,__domTree:{Span:x,Anchor:M,SymbolNode:P,SvgNode:k,PathNode:U,LineNode:F}};t.default=Ir}]).default},e.exports=n()});(Ll=Pl)&&Ll.__esModule&&Object.prototype.hasOwnProperty.call(Ll,"default")&&Ll.default;var kl=Object.prototype.hasOwnProperty,Ul=Object.prototype.toString,Fl=Object.defineProperty,Bl=Object.getOwnPropertyDescriptor,Gl=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Ul.call(e)},Hl=function(e){if(!e||"[object Object]"!==Ul.call(e))return!1;var t,n=kl.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&kl.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||kl.call(e,t)},Yl=function(e,t){Fl&&"__proto__"===t.name?Fl(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Vl=function(e,t){if("__proto__"===t){if(!kl.call(e,t))return;if(Bl)return Bl(e,t).value}return e[t]},zl=function e(){var t,n,r,a,i,o,s=arguments[0],l=1,c=arguments.length,d=!1;for("boolean"==typeof s&&(d=s,s=arguments[1]||{},l=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Vl(s,n),s!==(a=Vl(t,n))&&(d&&a&&(Hl(a)||(i=Gl(a)))?(i?(i=!1,o=r&&Gl(r)?r:[]):o=r&&Hl(r)?r:{},Yl(s,{name:n,newValue:e(d,o,a)})):void 0!==a&&Yl(s,{name:n,newValue:a}));return s},ql=function(e){if(e)throw e};var Kl={}.hasOwnProperty,Wl=function(e){if(!e||"object"!=typeof e)return"";if(Kl.call(e,"position")||Kl.call(e,"type"))return $l(e.position);if(Kl.call(e,"start")||Kl.call(e,"end"))return $l(e);if(Kl.call(e,"line")||Kl.call(e,"column"))return Ql(e);return""};function Ql(e){return e&&"object"==typeof e||(e={}),jl(e.line)+":"+jl(e.column)}function $l(e){return e&&"object"==typeof e||(e={}),Ql(e.start)+"-"+Ql(e.end)}function jl(e){return e&&"number"==typeof e?e:1}var Xl=ec;function Zl(){}Zl.prototype=Error.prototype,ec.prototype=new Zl;var Jl=ec.prototype;function ec(e,t,n){var r,a,i;"string"==typeof t&&(n=t,t=null),r=function(e){var t,n=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?n[1]=e:(n[0]=e.slice(0,t),n[1]=e.slice(t+1)));return n}(n),a=Wl(t)||"1:1",i={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(i=t,t=t.start):i.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=a,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=i,this.source=r[0],this.ruleId=r[1]}Jl.file="",Jl.name="",Jl.reason="",Jl.message="",Jl.stack="",Jl.fatal=null,Jl.column=null,Jl.line=null;var tc="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function nc(){throw new Error("setTimeout has not been defined")}function rc(){throw new Error("clearTimeout has not been defined")}var ac=nc,ic=rc;function oc(e){if(ac===setTimeout)return setTimeout(e,0);if((ac===nc||!ac)&&setTimeout)return ac=setTimeout,setTimeout(e,0);try{return ac(e,0)}catch(t){try{return ac.call(null,e,0)}catch(t){return ac.call(this,e,0)}}}"function"==typeof tc.setTimeout&&(ac=setTimeout),"function"==typeof tc.clearTimeout&&(ic=clearTimeout);var sc,lc=[],cc=!1,dc=-1;function _c(){cc&&sc&&(cc=!1,sc.length?lc=sc.concat(lc):dc=-1,lc.length&&uc())}function uc(){if(!cc){var e=oc(_c);cc=!0;for(var t=lc.length;t;){for(sc=lc,lc=[];++dc<t;)sc&&sc[dc].run();dc=-1,t=lc.length}sc=null,cc=!1,function(e){if(ic===clearTimeout)return clearTimeout(e);if((ic===rc||!ic)&&clearTimeout)return ic=clearTimeout,clearTimeout(e);try{ic(e)}catch(t){try{return ic.call(null,e)}catch(t){return ic.call(this,e)}}}(e)}}function mc(e,t){this.fun=e,this.array=t}mc.prototype.run=function(){this.fun.apply(null,this.array)};function pc(){}var gc=pc,Ec=pc,hc=pc,Sc=pc,fc=pc,Tc=pc,bc=pc;var Cc=tc.performance||{},Nc=Cc.now||Cc.mozNow||Cc.msNow||Cc.oNow||Cc.webkitNow||function(){return(new Date).getTime()};var vc=new Date;var Rc={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];lc.push(new mc(e,t)),1!==lc.length||cc||oc(uc)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:gc,addListener:Ec,once:hc,off:Sc,removeListener:fc,removeAllListeners:Tc,emit:bc,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Nc.call(Cc),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-vc)/1e3}};function Ac(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Oc=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,yc=function(e){return Oc.exec(e).slice(1)};function Ic(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"),(t?"/":"")+e||"."}function Dc(e){var t=xc(e),n="/"===Lc(e,-1);return(e=Ac(wc(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function xc(e){return"/"===e.charAt(0)}var Mc={extname:function(e){return yc(e)[3]},basename:function(e,t){var n=yc(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function(e){var t=yc(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},sep:"/",delimiter:":",relative:function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Ic(e).substr(1),t=Ic(t).substr(1);for(var r=n(e.split("/")),a=n(t.split("/")),i=Math.min(r.length,a.length),o=i,s=0;s<i;s++)if(r[s]!==a[s]){o=s;break}var l=[];for(s=o;s<r.length;s++)l.push("..");return(l=l.concat(a.slice(o))).join("/")},join:function(){return Dc(wc(Array.prototype.slice.call(arguments,0),function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},isAbsolute:xc,normalize:Dc,resolve:Ic};function wc(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var Lc="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)};var Pc=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var n=Mc.basename(e,Mc.extname(e))+t;return Mc.join(Mc.dirname(e),n)},kc=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},Uc=Hc,Fc={}.hasOwnProperty,Bc=Hc.prototype,Gc=["history","path","basename","stem","extname","dirname"];function Hc(e){var t,n,r;if(e){if("string"==typeof e||kc(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Hc))return new Hc(e);for(this.data={},this.messages=[],this.history=[],this.cwd=Rc.cwd(),n=-1,r=Gc.length;++n<r;)t=Gc[n],Fc.call(e,t)&&(this[t]=e[t]);for(t in e)-1===Gc.indexOf(t)&&(this[t]=e[t])}function Yc(e,t){if(-1!==e.indexOf(Mc.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Mc.sep+"`")}function Vc(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function zc(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}Bc.toString=function(e){var t=this.contents||"";return kc(t)?t.toString(e):String(t)},Object.defineProperty(Bc,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){Vc(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty(Bc,"dirname",{get:function(){return"string"==typeof this.path?Mc.dirname(this.path):void 0},set:function(e){zc(this.path,"dirname"),this.path=Mc.join(e||"",this.basename)}}),Object.defineProperty(Bc,"basename",{get:function(){return"string"==typeof this.path?Mc.basename(this.path):void 0},set:function(e){Vc(e,"basename"),Yc(e,"basename"),this.path=Mc.join(this.dirname||"",e)}}),Object.defineProperty(Bc,"extname",{get:function(){return"string"==typeof this.path?Mc.extname(this.path):void 0},set:function(e){var t=e||"";if(Yc(t,"extname"),zc(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Pc(this.path,t)}}),Object.defineProperty(Bc,"stem",{get:function(){return"string"==typeof this.path?Mc.basename(this.path,this.extname):void 0},set:function(e){Vc(e,"stem"),Yc(e,"stem"),this.path=Mc.join(this.dirname||"",e+(this.extname||""))}});var qc=Uc,Kc=Uc.prototype;Kc.message=function(e,t,n){var r=this.path,a=new Xl(e,t,n);r&&(a.name=r+":"+a.name,a.file=r);return a.fatal=!1,this.messages.push(a),a},Kc.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},Kc.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e};var Wc=[].slice,Qc=function(e,t){var n;return function(){var t,i=Wc.call(arguments,0),o=e.length>i.length;o&&i.push(r);try{t=e.apply(null,i)}catch(e){if(o&&n)throw e;return r(e)}o||(t&&"function"==typeof t.then?t.then(a,r):t instanceof Error?r(t):a(t))};function r(){n||(n=!0,t.apply(null,arguments))}function a(e){r(null,e)}};var $c=Xc;Xc.wrap=Qc;var jc=[].slice;function Xc(){var e=[],t={run:function(){var t=-1,n=jc.call(arguments,0,-1),r=arguments[arguments.length-1];if("function"!=typeof r)throw new Error("Expected function as last argument, not "+r);(function a(i){var o=e[++t];var s=jc.call(arguments,0);var l=s.slice(1);var c=n.length;var d=-1;if(i)return void r(i);for(;++d<c;)null!==l[d]&&void 0!==l[d]||(l[d]=n[d]);n=l;o?Qc(o,a).apply(null,n):r.apply(null,[null].concat(n))}).apply(null,[null].concat(n))},use:function(n){if("function"!=typeof n)throw new Error("Expected `fn` to be a function, not "+n);return e.push(n),t}};return t}var Zc=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},Jc=function e(){var t=[];var n=$c();var r={};var a=!1;var i=-1;o.data=function(e,t){if("string"==typeof e)return 2===arguments.length?(od("data",a),r[e]=t,o):td.call(r,e)&&r[e]||null;if(e)return od("data",a),r=e,o;return r};o.freeze=s;o.attachers=t;o.use=function(e){var n;if(od("use",a),null===e||void 0===e);else if("function"==typeof e)c.apply(null,arguments);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?l(e):i(e)}n&&(r.settings=zl(r.settings||{},n));return o;function i(e){l(e.plugins),e.settings&&(n=zl(n||{},e.settings))}function s(e){if("function"==typeof e)c(e);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?c.apply(null,e):i(e)}}function l(e){var t,n;if(null===e||void 0===e);else{if(!("object"==typeof e&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(t=e.length,n=-1;++n<t;)s(e[n])}}function c(e,n){var r=function(e){var n,r=t.length,a=-1;for(;++a<r;)if((n=t[a])[0]===e)return n}(e);r?(Zc(r[1])&&Zc(n)&&(n=zl(r[1],n)),r[1]=n):t.push(ed.call(arguments))}};o.parse=function(e){var t,n=qc(e);if(s(),ad("parse",t=o.Parser),rd(t,"parse"))return new t(String(n),n).parse();return t(String(n),n)};o.stringify=function(e,t){var n,r=qc(t);if(s(),id("stringify",n=o.Compiler),sd(e),rd(n,"compile"))return new n(e,r).compile();return n(e,r)};o.run=l;o.runSync=function(e,t){var n,r=!1;return l(e,t,function(e,t){r=!0,ql(e),n=t}),ld("runSync","run",r),n};o.process=c;o.processSync=function(e){var t,n=!1;return s(),ad("processSync",o.Parser),id("processSync",o.Compiler),c(t=qc(e),function(e){n=!0,ql(e)}),ld("processSync","process",n),t};return o;function o(){for(var n=e(),a=t.length,i=-1;++i<a;)n.use.apply(null,t[i]);return n.data(zl(!0,{},r)),n}function s(){var e,r,s,l;if(a)return o;for(;++i<t.length;)e=t[i],r=e[0],s=e[1],l=null,!1!==s&&(!0===s&&(e[1]=void 0),"function"==typeof(l=r.apply(o,e.slice(1)))&&n.use(l));return a=!0,i=1/0,o}function l(e,t,r){if(sd(e),s(),r||"function"!=typeof t||(r=t,t=null),!r)return new Promise(a);function a(a,i){n.run(e,qc(t),function(t,n,o){n=n||e,t?i(t):a?a(n):r(null,n,o)})}a(null,r)}function c(e,t){if(s(),ad("process",o.Parser),id("process",o.Compiler),!t)return new Promise(n);function n(n,r){var a=qc(e);nd.run(o,{file:a},function(e){e?r(e):n?n(a):t(null,a)})}n(null,t)}}().freeze(),ed=[].slice,td={}.hasOwnProperty,nd=$c().use(function(e,t){t.tree=e.parse(t.file)}).use(function(e,t,n){e.run(t.tree,t.file,function(e,r,a){e?n(e):(t.tree=r,t.file=a,n())})}).use(function(e,t){t.file.contents=e.stringify(t.tree,t.file)});function rd(e,t){return"function"==typeof e&&e.prototype&&(function(e){var t;for(t in e)return!0;return!1}(e.prototype)||t in e.prototype)}function ad(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Parser`")}function id(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Compiler`")}function od(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function sd(e){if(!e||"string"!=typeof e.type)throw new Error("Expected node, got `"+e+"`")}function ld(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}const cd={reason:"Unexpected metadata element after head",description:"Unexpected element after head. Expected the element before `</head>`",url:!1},dd={reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `--\x3e` to close comments"},_d={reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},ud={reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},md={reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},pd={reason:"Unexpected CDATA section in HTML",description:"Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"},gd={reason:"Unexpected too big numeric character reference",description:"Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"},Ed={reason:"Unexpected closing tag with open child elements",description:"Unexpectedly closing tag. Expected other tags to be closed first",url:!1},hd={reason:"Unexpected control character",description:"Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"},Sd={reason:"Unexpected control character reference",description:"Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"},fd={reason:"Disallowed content inside `<noscript>` in `<head>`",description:"Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",url:!1},Td={reason:"Unexpected duplicate attribute",description:"Unexpectedly double attribute. Expected attributes to occur only once"},bd={reason:"Unexpected attribute on closing tag",description:"Unexpected attribute. Expected `>` instead"},Cd={reason:"Unexpected slash at end of closing tag",description:"Unexpected `%c-1`. Expected `>` instead"},Nd={reason:"Unexpected unopened end tag",description:"Unexpected end tag. Expected no end tag or another end tag",url:!1},vd={reason:"Unexpected end of file",description:"Unexpected end of file. Expected tag name instead"},Rd={reason:"Unexpected end of file in CDATA",description:"Unexpected end of file. Expected `]]>` to close the CDATA"},Ad={reason:"Unexpected end of file in comment",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Od={reason:"Unexpected end of file in doctype",description:"Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"},yd={reason:"Unexpected end of file in element that can only contain text",description:"Unexpected end of file. Expected text or a closing tag",url:!1},Id={reason:"Unexpected end of file in comment inside script",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Dd={reason:"Unexpected end of file in tag",description:"Unexpected end of file. Expected `>` to close the tag"},xd={reason:"Incorrectly closed comment",description:"Unexpected `%c-1`. Expected `--\x3e` to close the comment"},Md={reason:"Incorrectly opened comment",description:"Unexpected `%c`. Expected `\x3c!--` to open the comment"},wd={reason:"Invalid sequence after doctype name",description:"Unexpected sequence at `%c`. Expected `public` or `system`"},Ld={reason:"Invalid first character in tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},Pd={reason:"Misplaced doctype",description:"Unexpected doctype. Expected doctype before head",url:!1},kd={reason:"Misplaced `<head>` start tag",description:"Unexpected start tag `<head>`. Expected `<head>` directly after doctype",url:!1},Ud={reason:"Missing attribute value",description:"Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"},Fd={reason:"Missing doctype before other content",description:"Expected a `<!doctype html>` before anything else",url:!1},Bd={reason:"Missing doctype name",description:"Unexpected doctype end at `%c`. Expected `html` instead"},Gd={reason:"Missing public identifier in doctype",description:"Unexpected `%c`. Expected identifier for `public` instead"},Hd={reason:"Missing system identifier in doctype",description:'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'},Yd={reason:"Missing name in end tag",description:"Unexpected `%c`. Expected an ASCII letter instead"},Vd={reason:"Missing quote before public identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},zd={reason:"Missing quote before system identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},qd={reason:"Missing semicolon after character reference",description:"Unexpected `%c`. Expected `;` instead"},Kd={reason:"Missing whitespace after public identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Wd={reason:"Missing whitespace after system identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Qd={reason:"Missing whitespace before doctype name",description:"Unexpected `%c`. Expected ASCII whitespace instead"},$d={reason:"Missing whitespace between attributes",description:"Unexpected `%c`. Expected ASCII whitespace instead"},jd={reason:"Missing whitespace between public and system identifiers in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},Xd={reason:"Unexpected nested comment",description:"Unexpected `\x3c!--`. Expected `--\x3e`"},Zd={reason:"Unexpected nested `<noscript>` in `<head>`",description:"Unexpected `<noscript>`. Expected a closing tag or a meta element",url:!1},Jd={reason:"Unexpected non-conforming doctype declaration",description:'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',url:!1},e_={reason:"Unexpected trailing slash on start tag of non-void element",description:"Unexpected `/`. Expected `>` instead"},t_={reason:"Unexpected noncharacter code point referenced by character reference",description:"Unexpected code point. Do not use noncharacters in HTML"},n_={reason:"Unexpected noncharacter character",description:"Unexpected code point `%x`. Do not use noncharacters in HTML"},r_={reason:"Unexpected NULL character referenced by character reference",description:"Unexpected code point. Do not use NULL characters in HTML"},a_={reason:"Unexpected end of file",description:"Unexpected end of file. Expected closing tag instead",url:!1},i_={reason:"Unexpected surrogate character referenced by character reference",description:"Unexpected code point. Do not use lone surrogate characters in HTML"},o_={reason:"Unexpected surrogate character",description:"Unexpected code point `%x`. Do not use lone surrogate characters in HTML"},s_={reason:"Invalid character after system identifier in doctype",description:"Unexpected character at `%c`. Expected `>`"},l_={reason:"Unexpected character in attribute name",description:"Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"},c_={reason:"Unexpected character in unquoted attribute value",description:"Unexpected `%c`. Quote the attribute value to include it"},d_={reason:"Unexpected equals sign before attribute name ",description:"Unexpected `%c`. Add an attribute name before it"},__={reason:"Unexpected NULL character",description:"Unexpected code point `%x`. Do not use NULL characters in HTML"},u_={reason:"Unexpected question mark instead of tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},m_={reason:"Unexpected slash in tag",description:"Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"},p_={reason:"Unexpected unknown named character reference",description:"Unexpected character reference. Expected known named character references"};var g_={abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_},E_=C(Object.freeze({abandonedHeadElementChild:cd,abruptClosingOfEmptyComment:dd,abruptDoctypePublicIdentifier:_d,abruptDoctypeSystemIdentifier:ud,absenceOfDigitsInNumericCharacterReference:md,cdataInHtmlContent:pd,characterReferenceOutsideUnicodeRange:gd,closingOfElementWithOpenChildElements:Ed,controlCharacterInInputStream:hd,controlCharacterReference:Sd,disallowedContentInNoscriptInHead:fd,duplicateAttribute:Td,endTagWithAttributes:bd,endTagWithTrailingSolidus:Cd,endTagWithoutMatchingOpenElement:Nd,eofBeforeTagName:vd,eofInCdata:Rd,eofInComment:Ad,eofInDoctype:Od,eofInElementThatCanContainOnlyText:yd,eofInScriptHtmlCommentLikeText:Id,eofInTag:Dd,incorrectlyClosedComment:xd,incorrectlyOpenedComment:Md,invalidCharacterSequenceAfterDoctypeName:wd,invalidFirstCharacterOfTagName:Ld,misplacedDoctype:Pd,misplacedStartTagForHeadElement:kd,missingAttributeValue:Ud,missingDoctype:Fd,missingDoctypeName:Bd,missingDoctypePublicIdentifier:Gd,missingDoctypeSystemIdentifier:Hd,missingEndTagName:Yd,missingQuoteBeforeDoctypePublicIdentifier:Vd,missingQuoteBeforeDoctypeSystemIdentifier:zd,missingSemicolonAfterCharacterReference:qd,missingWhitespaceAfterDoctypePublicKeyword:Kd,missingWhitespaceAfterDoctypeSystemKeyword:Wd,missingWhitespaceBeforeDoctypeName:Qd,missingWhitespaceBetweenAttributes:$d,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:jd,nestedComment:Xd,nestedNoscriptInHead:Zd,nonConformingDoctype:Jd,nonVoidHtmlElementStartTagWithTrailingSolidus:e_,noncharacterCharacterReference:t_,noncharacterInInputStream:n_,nullCharacterReference:r_,openElementsLeftAfterEof:a_,surrogateCharacterReference:i_,surrogateInInputStream:o_,unexpectedCharacterAfterDoctypeSystemIdentifier:s_,unexpectedCharacterInAttributeName:l_,unexpectedCharacterInUnquotedAttributeValue:c_,unexpectedEqualsSignBeforeAttributeName:d_,unexpectedNullCharacter:__,unexpectedQuestionMarkInsteadOfTagName:u_,unexpectedSolidusInTag:m_,unknownNamedCharacterReference:p_,default:g_})),h_="https://html.spec.whatwg.org/multipage/parsing.html#parse-error-",S_={2:!0,1:!1,0:null},f_=function(t){var n=e(t,this.data("settings")),r=n.position;r="boolean"!=typeof r||r,this.Parser=function(e,t){var a=n.fragment?"parseFragment":"parse",i=n.emitParseErrors?function(r){var a,i,o=r.code,s=(m=o,m.replace(/-[a-z]/g,T_)),l=n[s],c=void 0===l||null===l||l,d="number"==typeof c?c:c?1:0,_={line:r.startLine,column:r.startCol,offset:r.startOffset},u={line:r.endLine,column:r.endCol,offset:r.endOffset};var m;d&&(a=E_[s]||{reason:"",description:""},(i=t.message(p(a.reason),{start:_,end:u})).source="parse-error",i.ruleId=o,i.fatal=S_[d],i.note=p(a.description),i.url=!1===a.url?null:h_+o);function p(e){return e.replace(/%c(?:-(\d+))?/g,g).replace(/%x/g,E)}function g(t,n){var a=n?-parseInt(n,10):0,i=e.charAt(r.startOffset+a);return"`"===i?"` ` `":i}function E(){var t=e.charCodeAt(r.startOffset).toString(16).toUpperCase();return"0x"+t}}:null,o=new Qa({sourceCodeLocationInfo:r,onParseError:i,scriptingEnabled:!1});return Ts(o[a](e),{space:n.space,file:t,verbose:n.verbose})}};function T_(e){return e.charAt(1).toUpperCase()}var b_=function(e,t){var n;if(null!==t&&void 0!==t&&"string"!=typeof t&&("object"!=typeof t||0===t.length))throw new Error("Expected `string` or `Array.<string>` for `tagNames`, not `"+t+"`");if(!e||"object"!=typeof e||"element"!==e.type||"string"!=typeof e.tagName)return!1;if(null===t||void 0===t)return!0;if(n=e.tagName,"string"==typeof t)return n===t;return-1!==t.indexOf(n)};var C_=function(e,t,n){var r,a,i,o=s(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");r=e.children,i=r.length,t&&t.type&&(t=r.indexOf(t));if(isNaN(t)||t<0||t===1/0)throw new Error("Expected positive finite index or child node");for(;++t<i;)if(a=r[t],o(a,t,e))return a;return null};var N_=function(e){var t,n,r,a,i,o=e.children||[],s=o.length,l=Z_(e),c=Q_(e,{}),d=-1;if("text"===e.type||"comment"===e.type)return q_(e,{whiteSpace:c,breakBefore:!0,breakAfter:!0});t=[];for(;++d<s;)n=z_(o[d],d,e,{whiteSpace:c,breakBefore:0===d&&l,breakAfter:d===s-1?l:b_(o[d+1],"br")}),t=t.concat(n);d=-1,s=t.length,r=[];for(;++d<s;)"number"==typeof(a=t[d])?void 0!==i&&a>i&&(i=a):""!==a&&(i&&r.push(H(Y_,i)),i=0,r.push(a));return r.join("")},v_=Math.min,R_=Math.max,A_=9,O_=32,y_=8203,I_=1564,D_=8206,x_=8207,M_=8234,w_=8235,L_=8236,P_=8237,k_=8238,U_=8294,F_=8295,B_=8296,G_=8297,H_="\t",Y_="\n",V_=" ";function z_(e,t,n,r){return"element"===e.type?function(e,t,n,r){var a,i,o,s=Q_(e,r),l=e.children||[],c=l.length,d=-1,_=[];if(function(e){var t=e.properties||{};return b_(e,["datalist","head","noembed","noframes","rp","script","style","template","title","noscript"])||t.hidden||b_(e,"dialog")&&!t.open}(e))return _;b_(e,"br")?o=Y_:X_(e)&&C_(n,e,X_)?o=Y_:b_(e,"p")?(i=2,o=2):Z_(e)&&(i=1,o=1);for(;++d<c;)a=z_(l[d],d,e,{whiteSpace:s,breakBefore:0===d&&i,breakAfter:d===c-1?o:b_(l[d+1],"br")}),_=_.concat(a);j_(e)&&C_(n,e,j_)&&_.push(H_);i&&_.unshift(i);o&&_.push(o);return _}(e,0,n,r):"text"===e.type?["normal"===r.whiteSpace?q_(e,r):function(e){return String(e.value)}(e)]:[]}function q_(e,t){var n,r,a,i,o,s=t.breakBefore,l=t.breakAfter,c=String(e.value),d=-1,_=c.length,u=[],m=[];for(n=0,r=-1===(r=c.indexOf(Y_))?c.length:r;-1!==r&&(a=W_(a=K_(a=c.slice(n,r)),s,l),u.push(a),r!==c.length);)n=r+1,r=-1===(r=c.indexOf(Y_,n))?c.length:r;for(d=-1,_=u.length,o="";++d<_;)a=u[d],i=u[d+1]||"",a.charCodeAt(a.length-1)!==y_&&i.charCodeAt(0)!==y_?a&&(o&&m.push(o),m.push(a),o=V_):(m.push(a),o="");return m.join("")}function K_(e){for(var t=-1,n=e.length,r="";++t<n;)$_(e.charCodeAt(t))||(r+=e.charAt(t));return r}function W_(e,t,n){for(var r,a,i=0,o=e.length,s=[];i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;for(0===i||t||s.push(""),r=l(i-1);i<o;){for(r=-1===r?o:r,s.push(e.slice(i,r)),i=r;i<=o&&((a=e.charCodeAt(i))===O_||a===A_);)i++;i!==o||i===r||n||s.push(""),r=l(i)}return s.join(" ");function l(t){var n=e.indexOf(V_,t+1),r=e.indexOf(H_,t+1);return(-1===n||-1===r?R_:v_)(n,r)}}function Q_(e,t){var n=e.properties||{},r=t.whiteSpace||"normal";switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":r;case"textarea":return"pre-wrap";default:return r}}function $_(e){switch(e){case I_:case D_:case x_:case M_:case w_:case L_:case P_:case k_:case U_:case F_:case B_:case G_:return!0;default:return!1}}function j_(e){return b_(e,["th","td"])}function X_(e){return b_(e,["tr"])}function Z_(e){return b_(e,["caption","html","body","address","blockquote","center","dialog","div","figure","figcaption","footer","form,","header","hr","legend","listing","main","p","plaintext","pre","xmp","article","aside","h1","h2","h3","h4","h5","h6","hgroup","nav","section","dir","dd","dl","dt","menu","ol","ul"])}const J_=Pl.renderToString;var eu=function(e){const t=(e||{}).throwOnError||!1;return function(n,r){Il(n,"element",function(n){const a=n.properties.className||[],i=a.includes("math-inline"),o=a.includes("math-display");if(!i&&!o)return;const s=N_(n);let l;try{l=J_(s,tu({},e,{displayMode:o,throwOnError:!0}))}catch(a){const i=t?"fail":"message",c=[ru,a.name.toLowerCase()].join(":");r[i](a.message,n.position,c),l=J_(s,tu({},e,{displayMode:o,throwOnError:!1,strict:"ignore"}))}n.children=nu.parse(l).children})}};const tu=Object.assign,nu=Jc().use(f_,{fragment:!0,position:!1}),ru="rehype-katex";var au=function(e){var t;if(e&&"object"==typeof e&&"text"===e.type)t=e.value||"";else{if("string"!=typeof e)return!1;t=e}return""===t.replace(iu,"")},iu=/[ \t\n\f\r]/g;function ou(e){return function(t,n,r){var a,i=t&&t.children;if(n+=e,a=i&&i[n],!r)for(;a&&au(a);)a=i[n+=e];return a}}var su={before:ou(-1),after:ou(1)},lu=su.after,cu=function(e,t){return lu(e,-1,t)};var du=function(e,t){return e&&e.children&&e.children.indexOf(t)};var _u=function(e){return uu(e)&&au(e.value.charAt(0))},uu=s("text");var mu=function(e){return function(t,n,r){var a=t.tagName,i=!!pu.call(e,a)&&e[a];return!!i&&i(t,n,r)}},pu={}.hasOwnProperty;var gu=su.after,Eu=s("comment"),hu="optgroup",Su=["option"].concat(hu),fu=["dt","dd"],Tu="li",bu=["menuitem","hr","menu"],Cu=["rp","rt"],Nu=["tbody","tfoot"],vu="tr",Ru=["td","th"],Au=["a","audio","del","ins","map","noscript","video"],Ou=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","menu","nav","ol","p","pre","section","table","ul"],yu=mu({html:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},head:Iu,body:function(e,t,n){var r=gu(n,t);return!r||!Eu(r)},p:function(e,t,n){var r=gu(n,t);return r?b_(r,Ou):!n||!b_(n,Au)},li:function(e,t,n){var r=gu(n,t);return!r||b_(r,Tu)},dt:function(e,t,n){var r=gu(n,t);return r&&b_(r,fu)},dd:function(e,t,n){var r=gu(n,t);return!r||b_(r,fu)},rt:Du,rp:Du,optgroup:function(e,t,n){var r=gu(n,t);return!r||b_(r,hu)},option:function(e,t,n){var r=gu(n,t);return!r||b_(r,Su)},menuitem:function(e,t,n){var r=gu(n,t);return!r||b_(r,bu)},colgroup:Iu,caption:Iu,thead:function(e,t,n){var r=gu(n,t);return r&&b_(r,Nu)},tbody:function(e,t,n){var r=gu(n,t);return!r||b_(r,Nu)},tfoot:function(e,t,n){return!gu(n,t)},tr:function(e,t,n){var r=gu(n,t);return!r||b_(r,vu)},td:xu,th:xu});function Iu(e,t,n){var r=gu(n,t,!0);return!r||!Eu(r)&&!_u(r)}function Du(e,t,n){var r=gu(n,t);return!r||b_(r,Cu)}function xu(e,t,n){var r=gu(n,t);return!r||b_(r,Ru)}var Mu=su.before,wu={}.hasOwnProperty,Lu=s("comment"),Pu=["title","base"],ku=["meta","link","script","style","template"],Uu=["thead","tbody"],Fu="tr";var Bu={opening:mu({html:function(e){var t=cu(e);return!t||!Lu(t)},head:function(e){var t,n,r=e.children,a=r.length,i={},o=-1;for(;++o<a;)if(t=r[o],n=t.tagName,b_(t,Pu)){if(wu.call(i,n))return!1;i[n]=!0}return Boolean(a)},body:function(e){var t=cu(e,!0);return!t||!Lu(t)&&!_u(t)&&!b_(t,ku)},colgroup:function(e,t,n){var r=Mu(n,t),a=cu(e,!0);if(b_(r,"colgroup")&&yu(r,du(n,r),n))return!1;return a&&b_(a,"col")},tbody:function(e,t,n){var r=Mu(n,t),a=cu(e);if(b_(r,Uu)&&yu(r,du(n,r),n))return!1;return a&&b_(a,Fu)}}),closing:yu},Gu=function(e,t){var n=t&&t.children,r=n&&n.length,a=-1,i=[];for(;++a<r;)i[a]=Mm(e,n[a],a,t);return i.join("")};var Hu={nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},Yu=Object.freeze({nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€",default:Hu});var Vu={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},zu=Object.freeze({AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:Vu}),qu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var Ku=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var Wu=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var Qu=function(e){return Wu(e)||Ku(e)};var $u=Object.freeze({default:["cent","copy","divide","gt","lt","not","para","times"]}),ju=C(Yu),Xu=C(zu),Zu=C($u),Ju=Ku,em=om;om.escape=function(e){return om(e,{escapeOnly:!0,useNamedReferences:!0})};var tm={}.hasOwnProperty,nm=function(){var e,t={};for(e in ju)t[ju[e]]=e;return t}(),rm=lm(['"',"'","<",">","&","`"]),am=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,im=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function om(e,t){var n=t||{},r=n.subset,a=r?lm(r):rm,i=n.escapeOnly,o=n.omitOptionalSemicolons;return e=e.replace(a,s),r||i?e:e.replace(am,function(e,t,n){return sm(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536,n.charAt(t+2),o)}).replace(im,s);function s(e,t,r){return function(e,t,n){var r,a,i,o,s=n.useShortestReferences,l=n.omitOptionalSemicolons;(s||n.useNamedReferences)&&tm.call(nm,e)&&(r=function(e,t,n,r){var a="&"+e;if(n&&tm.call(Xu,e)&&-1===Zu.indexOf(e)&&(!r||t&&"="!==t&&!Qu(t)))return a;return a+";"}(nm[e],t,l,n.attribute));!s&&r||(a=e.charCodeAt(0),i=sm(a,t,l),s&&(o=function(e,t,n){var r="&#"+String(e);return n&&t&&!Ju(t)?r:r+";"}(a,t,l)).length<i.length&&(i=o));if(r&&(!s||r.length<i.length))return r;return i}(e,r.charAt(t+1),n)}}function sm(e,t,n){var r="&#x"+e.toString(16).toUpperCase();return n&&t&&!qu(t)?r:r+";"}function lm(e){return new RegExp("["+e.join("")+"]","g")}var cm=function(t,n,r,a){var i=n.value;return function(e){return e&&("script"===e.tagName||"style"===e.tagName)}(a)?i:em(i,e(t.entities,{subset:["<","&"]}))};var dm=[" ","\t","\n","\r","\f"],_m=dm.concat("&","/",">","="),um=dm.concat("&",">"),mm=um.concat("\0",'"',"'","<","=","`"),pm=["&","'"],gm=["&",'"'],Em={name:[[_m,_m.concat('"',"'","`")],[_m.concat("\0",'"',"'","<"),_m.concat("\0",'"',"'","<","`")]],unquoted:[[um,mm],[mm,mm]],single:[[pm,pm.concat('"',"`")],[pm.concat("\0"),pm.concat("\0",'"',"`")]],double:[[gm,gm.concat("'","`")],[gm.concat("\0"),gm.concat("\0","'","`")]]},hm=ts.stringify,Sm=ss.stringify,fm=function(e,t,n,r){var a,i,o,s,l,c,d=e.schema,_=t.tagName,u="",m=t;"html"===d.space&&"svg"===_&&(e.schema=Do);l=function(e,t){var n,r,a,i,o,s,l=[];for(n in t)null!=(r=t[n])&&(a=Om(e,n,r))&&l.push(a);for(i=l.length,o=-1;++o<i;)a=l[o],s=null,e.tight&&(s=a.charAt(a.length-1)),o!==i-1&&s!==bm&&s!==Cm&&(l[o]=a+Tm);return l.join("")}(e,t.properties),"svg"===e.schema.space?(o=!1,i=!0,a=e.closeEmpty):(o=e.omit,i=e.close,a=-1!==e.voids.indexOf(_.toLowerCase()),"template"===_&&(m=t.content));s=Gu(e,m),a=!s&&a,!l&&o&&o.opening(t,n,r)||(u=vm+_+(l?Tm+l:""),a&&i&&(c=l.charAt(l.length-1),(!e.tightClose||c===Am||"svg"===e.schema.space&&c&&c!==bm&&c!==Cm)&&(u+=Tm),u+=Am),u+=Rm);u+=s,a||o&&o.closing(t,n,r)||(u+=vm+Am+_+Rm);return e.schema=d,u},Tm=" ",bm='"',Cm="'",Nm="=",vm="<",Rm=">",Am="/";function Om(t,n,r){var a=t.schema,i=Mo(a,n),o=i.attribute;return!i.overloadedBoolean||r!==o&&""!==r?(i.boolean||i.overloadedBoolean&&"string"!=typeof r)&&(r=Boolean(r)):r=!0,null==r||!1===r||"number"==typeof r&&isNaN(r)?"":(o=function(t,n){var r="html"===t.schema.space?t.valid:1,a=Em.name[r][t.safe];return em(n,e(t.entities,{subset:a}))}(t,o),!0===r?o:o+function(t,n,r,a){var i,o,s=t.entities,l=t.quote,c=t.alternative;"object"==typeof r&&"length"in r&&(r=(a.commaSeparated?Sm:hm)(r,{padLeft:!t.tightLists}));!(r=String(r))&&t.collapseEmpty||(i=r,t.unquoted&&(o=Em.unquoted[t.valid][t.safe],i=em(r,e(s,{subset:o,attribute:!0}))),t.unquoted&&i===r||(c&&Ss(r,l)>Ss(r,c)&&(l=c),o=(o=l===Cm?Em.single:Em.double)["html"===t.schema.space?t.valid:1][t.safe],r=em(r,e(s,{subset:o,attribute:!0})),r=l+r+l),r=r?Nm+r:r);return r}(t,0,r,i))}var ym=function(e,t){var n=e.tightDoctype?"":" ",r=t.name,a=t.public,i=t.system,o=["<!doctype"];r&&(o.push(n,r),null!=a?o.push(" public",n,Im(a)):null!=i&&o.push(" system"),null!=i&&o.push(n,Im(i)));return o.join("")+">"};function Im(e){var t=-1===e.indexOf('"')?'"':"'";return t+e+t}var Dm=function(e,t){return"\x3c!--"+t.value+"--\x3e"};var xm=function(e,t){return e.dangerous?t.value:cm(e,t)};var Mm=function(e,t,n,r){var a=t&&t.type;if(!a)throw new Error("Expected node, not `"+t+"`");if(!wm.call(Lm,a))throw new Error("Cannot compile unknown node `"+a+"`");return Lm[a](e,t,n,r)},wm={}.hasOwnProperty,Lm={};Lm.root=Gu,Lm.text=cm,Lm.element=fm,Lm.doctype=ym,Lm.comment=Dm,Lm.raw=xm;var Pm=function(e,t){var n=t||{},r=n.quote||km,a=r===km?Um:km,i=n.quoteSmart;if(r!==km&&r!==Um)throw new Error("Invalid quote `"+r+"`, expected `"+Um+"` or `"+km+"`");return Mm({valid:n.allowParseErrors?0:1,safe:n.allowDangerousCharacters?0:1,schema:"svg"===n.space?Do:vo,omit:n.omitOptionalTags&&Bu,quote:r,alternative:i?a:null,unquoted:Boolean(n.preferUnquoted),tight:n.tightAttributes,tightDoctype:Boolean(n.tightDoctype),tightLists:n.tightCommaSeparatedLists,tightClose:n.tightSelfClosing,collapseEmpty:n.collapseEmptyAttributes,dangerous:n.allowDangerousHTML,voids:n.voids||sl.concat(),entities:n.entities||{},close:n.closeSelfClosing,closeEmpty:n.closeEmptyElements},e)},km='"',Um="'";var Fm=Pm,Bm=function(t){var n=e(t,this.data("settings"));this.Compiler=function(e){return Fm(e,n)}};var Gm=b(function(e){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),Hm=function(t){var n,r,a;for(r in Gm(o,t),Gm(i,o),n=o.prototype)(a=n[r])&&"object"==typeof a&&(n[r]="concat"in a?a.concat():e(a));return o;function i(e){return t.apply(this,e)}function o(){return this instanceof o?t.apply(this,arguments):new i(arguments)}};var Ym=function(e,t,n){return function(){var r=n||this,a=r[e];return r[e]=!t,function(){r[e]=a}}};var Vm=function(e){var t=function(e){var t=[],n=e.indexOf("\n");for(;-1!==n;)t.push(n+1),n=e.indexOf("\n",n+1);return t.push(e.length+1),t}(String(e));return{toPosition:function(e){return function(t){var n=-1,r=e.length;if(t<0)return{};for(;++n<r;)if(e[n]>t)return{line:n+1,column:t-(e[n-1]||0)+1,offset:t};return{}}}(t),toOffset:function(e){return function(t){var n=t&&t.line,r=t&&t.column;if(!isNaN(n)&&!isNaN(r)&&n-1 in e)return(e[n-2]||0)+r-1||0;return-1}}(t)}};var zm=function(e,t){return function(n){var r,a=0,i=n.indexOf(qm),o=e[t],s=[];for(;-1!==i;)s.push(n.slice(a,i)),a=i+1,(r=n.charAt(a))&&-1!==o.indexOf(r)||s.push(qm),i=n.indexOf(qm,a+1);return s.push(n.slice(a)),s.join("")}},qm="\\";var Km,Wm=59,Qm=function(e){var t,n="&"+e+";";if((Km=Km||document.createElement("i")).innerHTML=n,(t=Km.textContent).charCodeAt(t.length-1)===Wm&&"semi"!==e)return!1;return t!==n&&t};var $m=C(Object.freeze({default:{0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"}})),jm=function(e,t){var n,r,a={};t||(t={});for(r in ep)n=t[r],a[r]=null===n||void 0===n?ep[r]:n;(a.position.indent||a.position.start)&&(a.indent=a.position.indent||[],a.position=a.position.start);return function(e,t){var n,r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b=t.additional,C=t.nonTerminated,N=t.text,v=t.reference,R=t.warning,A=t.textContext,O=t.referenceContext,y=t.warningContext,I=t.position,D=t.indent||[],x=e.length,M=0,w=-1,L=I.column||1,P=I.line||1,k="",U=[];"string"==typeof b&&(b=b.charCodeAt(0));h=B(),c=R?function(e,t){var n=B();n.column+=t,n.offset+=t,R.call(y,Rp[e],n,e)}:Jm,M--,x++;for(;++M<x;)if(o===np&&(L=D[w]||1),(o=e.charCodeAt(M))===ip){if((l=e.charCodeAt(M+1))===tp||l===np||l===rp||l===ap||l===ip||l===sp||l!=l||b&&l===b){k+=Zm(o),L++;continue}for(m=p=M+1,T=p,l===cp?(T=++m,(l=e.charCodeAt(T))===dp||l===_p?(g=pp,T=++m):g=gp):g=mp,n="",u="",i="",E=hp[g],T--;++T<x&&(l=e.charCodeAt(T),E(l));)i+=Zm(l),g===mp&&Xm.call(Xu,i)&&(n=i,u=Xu[i]);(a=e.charCodeAt(T)===op)&&(T++,(r=g===mp&&Qm(i))&&(n=i,u=r)),f=1+T-p,(a||C)&&(i?g===mp?(a&&!u?c(Cp,1):(n!==i&&(T=m+n.length,f=1+T-m,a=!1),a||(d=n?Sp:Tp,t.attribute?(l=e.charCodeAt(T))===lp?(c(d,f),u=null):Qu(l)?u=null:c(d,f):c(d,f))),s=u):(a||c(fp,f),s=parseInt(i,Ep[g]),(F=s)>=55296&&F<=57343||F>1114111?(c(vp,f),s=Zm(up)):s in $m?(c(Np,f),s=$m[s]):(_="",Ap(s)&&c(Np,f),s>65535&&(_+=Zm((s-=65536)>>>10|55296),s=56320|1023&s),s=_+Zm(s))):g!==mp&&c(bp,f)),s?(G(),h=B(),M=T-1,L+=T-p+1,U.push(s),(S=B()).offset++,v&&v.call(O,s,{start:h,end:S},e.slice(p-1,T)),h=S):(i=e.slice(p-1,T),k+=i,L+=i.length,M=T-1)}else 10===o&&(P++,w++,L=0),o==o?(k+=Zm(o),L++):G();var F;return U.join("");function B(){return{line:P,column:L,offset:M+(I.offset||0)}}function G(){k&&(U.push(k),N&&N.call(A,k,{start:h,end:B()}),k="")}}(e,a)},Xm={}.hasOwnProperty,Zm=String.fromCharCode,Jm=Function.prototype,ep={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},tp=9,np=10,rp=12,ap=32,ip=38,op=59,sp=60,lp=61,cp=35,dp=88,_p=120,up=65533,mp="named",pp="hexadecimal",gp="decimal",Ep={};Ep[pp]=16,Ep[gp]=10;var hp={};hp[mp]=Qu,hp[gp]=Ku,hp[pp]=qu;var Sp=1,fp=2,Tp=3,bp=4,Cp=5,Np=6,vp=7,Rp={};function Ap(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}Rp[Sp]="Named character references must be terminated by a semicolon",Rp[fp]="Numeric character references must be terminated by a semicolon",Rp[Tp]="Named character references cannot be empty",Rp[bp]="Numeric character references cannot be empty",Rp[Cp]="Named character references must be known",Rp[Np]="Numeric character references cannot be disallowed",Rp[vp]="Numeric character references cannot be outside the permissible Unicode range";var Op=function(t){return r.raw=function(t,r,i){return jm(t,e(i,{position:n(r),warning:a}))},r;function n(e){for(var n=t.offset,r=e.line,a=[];++r&&r in n;)a.push((n[r]||0)+1);return{start:e,indent:a}}function r(e,r,i){jm(e,{position:n(r),warning:a,text:i,reference:i,textContext:t,referenceContext:t})}function a(e,n,r){3!==r&&t.file.message(e,n)}};var yp=function(e){return function(t,n){var r,a,i,o,s,l,c=this,d=c.offset,_=[],u=c[e+"Methods"],m=c[e+"Tokenizers"],p=n.line,g=n.column;if(!t)return _;f.now=h,f.file=c.file,E("");for(;t;){for(r=-1,a=u.length,s=!1;++r<a&&(o=u[r],!(i=m[o])||i.onlyAtStart&&!c.atStart||i.notInList&&c.inList||i.notInBlock&&c.inBlock||i.notInLink&&c.inLink||(l=t.length,i.apply(c,[f,t]),!(s=l!==t.length))););s||c.file.fail(new Error("Infinite loop"),f.now())}return c.eof=h(),_;function E(e){for(var t=-1,n=e.indexOf("\n");-1!==n;)p++,t=n,n=e.indexOf("\n",n+1);-1===t?g+=e.length:g=e.length-t,p in d&&(-1!==t?g+=d[p]:g<=d[p]&&(g=d[p]+1))}function h(){var e={line:p,column:g};return e.offset=c.toOffset(e),e}function S(){var e=h();return function(t,n){var r=t.position,a=r?r.start:e,i=[],o=r&&r.end.line,s=e.line;if(t.position=new function(e){this.start=e,this.end=h()}(a),r&&n&&r.indent){if(i=r.indent,o<s){for(;++o<s;)i.push((d[o]||0)+1);i.push(e.column)}n=i.concat(n)}return t.position.indent=n||[],t}}function f(e){var n=function(){var e=[],t=p+1;return function(){for(var n=p+1;t<n;)e.push((d[t]||0)+1),t++;return e}}(),r=S(),a=h();return function(e){t.slice(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"),h())}(e),i.reset=o,o.test=s,i.test=s,t=t.slice(e.length),E(e),n=n(),i;function i(e,t){return r(function(e,t){var n,r=t?t.children:_,a=r[r.length-1];a&&e.type===a.type&&("text"===e.type||"blockquote"===e.type)&&Ip(a)&&Ip(e)&&(n="text"===e.type?Dp:xp,e=n.call(c,a,e));e!==a&&r.push(e);c.atStart&&0!==_.length&&c.exitStart();return e}(r(e),t),n)}function o(){var n=i.apply(null,arguments);return p=a.line,g=a.column,t=e+t,n}function s(){var n=r({});return p=a.line,g=a.column,t=e+t,n.position}}}};function Ip(e){var t,n;return"text"!==e.type||!e.position||(t=e.position.start,n=e.position.end,t.line!==n.line||n.column-t.column===e.value.length)}function Dp(e,t){return e.value+=t.value,e}function xp(e,t){return this.options.commonmark||this.options.gfm?t:(e.children=e.children.concat(t.children),e)}var Mp=kp,wp=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],Lp=wp.concat(["~","|"]),Pp=Lp.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function kp(e){var t=e||{};return t.commonmark?Pp:t.gfm?Lp:wp}kp.default=wp,kp.gfm=Lp,kp.commonmark=Pp;var Up={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},Fp=function(t){var n,r,a=this.options;if(null==t)t={};else{if("object"!=typeof t)throw new Error("Invalid value `"+t+"` for setting `options`");t=e(t)}for(n in Up){if(null==(r=t[n])&&(r=a[n]),"blocks"!==n&&"boolean"!=typeof r||"blocks"===n&&"object"!=typeof r)throw new Error("Invalid value `"+r+"` for setting `options."+n+"`");t[n]=r}return this.options=t,this.escape=Mp(t),this};var Bp=function(e,t){return E(e,t?Gp:Hp),e};function Gp(e){delete e.position}function Hp(e){e.position=void 0}var Yp=function(){var t,n=String(this.file),r={line:1,column:1,offset:0},a=e(r);65279===(n=n.replace(zp,Vp)).charCodeAt(0)&&(n=n.slice(1),a.column++,a.offset++);t={type:"root",children:this.tokenizeBlock(n,a),position:{start:r,end:this.eof||e(r)}},this.options.position||Bp(t,!0);return t},Vp="\n",zp=/\r\n|\r/g;var qp=function(e,t,n){var r,a,i,o,s=t.charAt(0);if(s!==Kp)return;if(n)return!0;o=1,r=t.length,a=s,i="";for(;o<r&&(s=t.charAt(o),pe(s));)i+=s,s===Kp&&(a+=i,i=""),o++;e(a)},Kp="\n";var Wp=function(e){var t=String(e),n=t.length;for(;t.charAt(--n)===Qp;);return t.slice(0,n+1)},Qp="\n";var $p=function(e,t,n){var r,a,i,o=-1,s=t.length,l="",c="",d="",_="";for(;++o<s;)if(r=t.charAt(o),i)if(i=!1,l+=d,c+=_,d="",_="",r===jp)d=r,_=r;else for(l+=r,c+=r;++o<s;){if(!(r=t.charAt(o))||r===jp){_=r,d=r;break}l+=r,c+=r}else if(r===Zp&&t.charAt(o+1)===r&&t.charAt(o+2)===r&&t.charAt(o+3)===r)d+=Jp,o+=3,i=!0;else if(r===Xp)d+=r,i=!0;else{for(a="";r===Xp||r===Zp;)a+=r,r=t.charAt(++o);if(r!==jp)break;d+=a+r,_+=r}if(c)return!!n||e(l)({type:"code",lang:null,meta:null,value:Wp(c)})},jp="\n",Xp="\t",Zp=" ",Jp=H(Zp,4);var eg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E=this.options.gfm,h=t.length+1,S=0,f="";if(!E)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;if(p=S,(i=t.charAt(S))!==ag&&i!==ig)return;S++,a=i,r=1,f+=i;for(;S<h&&(i=t.charAt(S))===a;)f+=i,r++,S++;if(r<og)return;for(;S<h&&((i=t.charAt(S))===rg||i===ng);)f+=i,S++;o="",c="";for(;S<h&&(i=t.charAt(S))!==tg&&(a!==ig||i!==a);)i===rg||i===ng?c+=i:(o+=c+i,c=""),S++;if((i=t.charAt(S))&&i!==tg)return;if(n)return!0;(g=e.now()).column+=f.length,g.offset+=f.length,f+=o,o=this.decode.raw(this.unescape(o),g),c&&(f+=c);c="",u="",m="",d="",_="";var T=!0;for(;S<h;)if(i=t.charAt(S),d+=u,_+=m,u="",m="",i===tg){for(T?(f+=i,T=!1):(u+=i,m+=i),c="",S++;S<h&&(i=t.charAt(S))===rg;)c+=i,S++;if(u+=c,m+=c.slice(p),!(c.length>=sg)){for(c="";S<h&&(i=t.charAt(S))===a;)c+=i,S++;if(u+=c,m+=c,!(c.length<r)){for(c="";S<h&&((i=t.charAt(S))===rg||i===ng);)u+=i,m+=i,S++;if(!i||i===tg)break}}}else d+=i,m+=i,S++;f+=d+u,S=-1,h=o.length;for(;++S<h;)if((i=o.charAt(S))===rg||i===ng)s||(s=o.slice(0,S));else if(s){l=o.slice(S);break}return e(f)({type:"code",lang:s||o||null,meta:l||null,value:_})},tg="\n",ng="\t",rg=" ",ag="~",ig="`",og=3,sg=4;var lg=function(e,t,n,r){var a,i,o=e.length,s=-1;for(;++s<o;)if(a=e[s],(void 0===(i=a[1]||{}).pedantic||i.pedantic===n.options.pedantic)&&(void 0===i.commonmark||i.commonmark===n.options.commonmark)&&t[a[0]].apply(n,r))return!0;return!1};var cg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u=this.offset,m=this.blockTokenizers,p=this.interruptBlockquote,g=e.now(),E=g.line,h=t.length,S=[],f=[],T=[],b=0;for(;b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)!==mg)return;if(n)return!0;b=0;for(;b<h;){for(o=t.indexOf(dg,b),c=b,d=!1,-1===o&&(o=h);b<h&&((a=t.charAt(b))===ug||a===_g);)b++;if(t.charAt(b)===mg?(b++,d=!0,t.charAt(b)===ug&&b++):b=c,s=t.slice(b,o),!d&&!I(s)){b=c;break}if(!d&&(i=t.slice(b),lg(p,m,this,[e,i,!0])))break;l=c===b?s:t.slice(c,o),T.push(b-c),S.push(l),f.push(s),b=o+1}b=-1,h=T.length,r=e(S.join(dg));for(;++b<h;)u[E]=(u[E]||0)+T[b],E++;return _=this.enterBlock(),f=this.tokenizeBlock(f.join(dg),g),_(),r({type:"blockquote",children:f})},dg="\n",_g="\t",ug=" ",mg=">";var pg=function(e,t,n){var r,a,i,o=this.options.pedantic,s=t.length+1,l=-1,c=e.now(),d="",_="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}d+=r}i=0;for(;++l<=s;){if((r=t.charAt(l))!==Sg){l--;break}d+=r,i++}if(i>fg)return;if(!i||!o&&t.charAt(l+1)===Sg)return;s=t.length+1,a="";for(;++l<s;){if((r=t.charAt(l))!==hg&&r!==Eg){l--;break}a+=r}if(!o&&0===a.length&&r&&r!==gg)return;if(n)return!0;d+=a,a="",_="";for(;++l<s&&(r=t.charAt(l))&&r!==gg;)if(r===hg||r===Eg||r===Sg){for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);if(o||!_||a||r!==Sg){for(;r===Sg;)a+=r,r=t.charAt(++l);for(;r===hg||r===Eg;)a+=r,r=t.charAt(++l);l--}else _+=r}else _+=a+r,a="";return c.column+=d.length,c.offset+=d.length,e(d+=_+a)({type:"heading",depth:i,children:this.tokenizeInline(_,c)})},gg="\n",Eg="\t",hg=" ",Sg="#",fg=6;var Tg=function(e,t,n){var r,a,i,o,s=-1,l=t.length+1,c="";for(;++s<l&&((r=t.charAt(s))===bg||r===Ng);)c+=r;if(r!==vg&&r!==Rg&&r!==Ag)return;a=r,c+=r,i=1,o="";for(;++s<l;)if((r=t.charAt(s))===a)i++,c+=o+a,o="";else{if(r!==Ng)return i>=Og&&(!r||r===Cg)?(c+=o,!!n||e(c)({type:"thematicBreak"})):void 0;o+=r}},bg="\t",Cg="\n",Ng=" ",vg="*",Rg="-",Ag="_",Og=3;var yg=function(e){var t,n=0,r=0,a=e.charAt(n),i={};for(;a===Ig||a===Dg;)r+=t=a===Ig?Mg:xg,t>1&&(r=Math.floor(r/t)*t),i[r]=n,a=e.charAt(++n);return{indent:r,stops:i}},Ig="\t",Dg=" ",xg=1,Mg=4;var wg=function(e,t){var n,r,a,i,o=e.split(Pg),s=o.length+1,l=1/0,c=[];o.unshift(H(kg,t)+Ug);for(;s--;)if(r=yg(o[s]),c[s]=r.stops,0!==I(o[s]).length){if(!r.indent){l=1/0;break}r.indent>0&&r.indent<l&&(l=r.indent)}if(l!==1/0)for(s=o.length;s--;){for(a=c[s],n=l;n&&!(n in a);)n--;i=0!==I(o[s]).length&&l&&n!==l?Lg:"",o[s]=i+o[s].slice(n in a?a[n]+1:0)}return o.shift(),o.join(Pg)},Lg="\t",Pg="\n",kg=" ",Ug="!";var Fg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v,R=this.options.commonmark,A=this.options.pedantic,O=this.blockTokenizers,y=this.interruptList,D=0,x=t.length,M=null,w=0,L=!1;for(;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g)return;if((i=t.charAt(D))===Bg||i===Hg||i===Yg)o=i,a=!1;else{for(a=!0,r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;if(i=t.charAt(D),!r||!(i===Vg||R&&i===Wg))return;M=parseInt(r,10),o=i}if((i=t.charAt(++D))!==zg&&i!==Kg&&(A||i!==qg&&""!==i))return;if(n)return!0;D=0,g=[],E=[],h=[];for(;D<x;){for(s=t.indexOf(qg,D),l=D,c=!1,v=!1,-1===s&&(s=x),N=D+$g,w=0;D<x;){if((i=t.charAt(D))===Kg)w+=$g-w%$g;else{if(i!==zg)break;w++}D++}if(w>=$g&&(v=!0),S&&w>=S.indent&&(v=!0),i=t.charAt(D),d=null,!v){if(i===Bg||i===Hg||i===Yg)d=i,D++,w++;else{for(r="";D<x&&(i=t.charAt(D),Ku(i));)r+=i,D++;i=t.charAt(D),D++,r&&(i===Vg||R&&i===Wg)&&(d=i,w+=r.length+1)}if(d)if((i=t.charAt(D))===Kg)w+=$g-w%$g,D++;else if(i===zg){for(N=D+$g;D<N&&t.charAt(D)===zg;)D++,w++;D===N&&t.charAt(D)===zg&&(D-=$g-1,w-=$g-1)}else i!==qg&&""!==i&&(d=null)}if(d){if(!A&&o!==d)break;c=!0}else R||v||t.charAt(l)!==zg?R&&S&&(v=w>=S.indent||w>$g):v=!0,c=!1,D=l;if(u=t.slice(l,s),_=l===D?u:t.slice(D,s),(d===Bg||d===Gg||d===Yg)&&O.thematicBreak.call(this,e,u,!0))break;if(m=p,p=!c&&!I(_).length,v&&S)S.value=S.value.concat(h,u),E=E.concat(h,u),h=[];else if(c)0!==h.length&&(L=!0,S.value.push(""),S.trail=h.concat()),S={value:[u],indent:w,trail:[]},g.push(S),E=E.concat(h,u),h=[];else if(p){if(m&&!R)break;h.push(u)}else{if(m)break;if(lg(y,O,this,[e,u,!0]))break;S.value=S.value.concat(h,u),E=E.concat(h,u),h=[]}D=s+1}b=e(E.join(qg)).reset({type:"list",ordered:a,start:M,spread:L,children:[]}),f=this.enterList(),T=this.enterBlock(),D=-1,x=g.length;for(;++D<x;)S=g[D].value.join(qg),C=e.now(),e(S)(tE(this,S,C),b),S=g[D].trail.join(qg),D!==x-1&&(S+=qg),e(S);return f(),T(),b},Bg="*",Gg="_",Hg="+",Yg="-",Vg=".",zg=" ",qg="\n",Kg="\t",Wg=")",Qg="x",$g=4,jg=/\n\n(?!\s*$)/,Xg=/^\[([ \t]|x|X)][ \t]/,Zg=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,Jg=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,eE=/^( {1,4}|\t)?/gm;function tE(e,t,n){var r,a,i=e.offset,o=null;return t=(e.options.pedantic?nE:rE).apply(null,arguments),e.options.gfm&&(r=t.match(Xg))&&(a=r[0].length,o=r[1].toLowerCase()===Qg,i[n.line]+=a,t=t.slice(a)),{type:"listItem",spread:jg.test(t),checked:o,children:e.tokenizeBlock(t,n)}}function nE(e,t,n){var r=e.offset,a=n.line;return t=t.replace(Jg,i),a=n.line,t.replace(eE,i);function i(e){return r[a]=(r[a]||0)+e.length,a++,""}}function rE(e,t,n){var r,a,i,o,s,l,c,d=e.offset,_=n.line;for(o=(t=t.replace(Zg,function(e,t,n,o,s){a=t+n+o,i=s,Number(n)<10&&a.length%2==1&&(n=zg+n);return(r=t+H(zg,n.length)+o)+i})).split(qg),(s=wg(t,yg(r).indent).split(qg))[0]=i,d[_]=(d[_]||0)+a.length,_++,l=0,c=o.length;++l<c;)d[_]=(d[_]||0)+o[l].length-s[l].length,_++;return s.join(qg)}var aE=function(e,t,n){var r,a,i,o,s,l=e.now(),c=t.length,d=-1,_="";for(;++d<c;){if((i=t.charAt(d))!==sE||d>=dE){d--;break}_+=i}r="",a="";for(;++d<c;){if((i=t.charAt(d))===iE){d--;break}i===sE||i===oE?a+=i:(r+=a+i,a="")}if(l.column+=_.length,l.offset+=_.length,_+=r+a,i=t.charAt(++d),o=t.charAt(++d),i!==iE||o!==lE&&o!==cE)return;_+=i,a=o,s=o===lE?_E:uE;for(;++d<c;){if((i=t.charAt(d))!==o){if(i!==iE)return;d--;break}a+=i}if(n)return!0;return e(_+a)({type:"heading",depth:s,children:this.tokenizeInline(r,l)})},iE="\n",oE="\t",sE=" ",lE="=",cE="-",dE=3,_E=1,uE=2;var mE="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",pE="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",gE={openCloseTag:new RegExp("^(?:"+mE+"|"+pE+")"),tag:new RegExp("^(?:"+mE+"|"+pE+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},EE=function(e,t,n){var r,a,i,o,s,l,c,d=this.options.blocks.join("|"),_=new RegExp("^</?("+d+")(?=(\\s|/?>|$))","i"),u=t.length,m=0,p=[[bE,CE,!0],[NE,vE,!0],[RE,AE,!0],[OE,yE,!0],[IE,DE,!0],[_,xE,!0],[ME,xE,!1]];for(;m<u&&((o=t.charAt(m))===hE||o===SE);)m++;if(t.charAt(m)!==TE)return;r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m,r),i=-1,s=p.length;for(;++i<s;)if(p[i][0].test(a)){l=p[i];break}if(!l)return;if(n)return l[2];if(m=r,!l[1].test(a))for(;m<u;){if(r=-1===(r=t.indexOf(fE,m+1))?u:r,a=t.slice(m+1,r),l[1].test(a)){a&&(m=r);break}m=r}return c=t.slice(0,m),e(c)({type:"html",value:c})},hE="\t",SE=" ",fE="\n",TE="<",bE=/^<(script|pre|style)(?=(\s|>|$))/i,CE=/<\/(script|pre|style)>/i,NE=/^<!--/,vE=/-->/,RE=/^<\?/,AE=/\?>/,OE=/^<![A-Za-z]/,yE=/>/,IE=/^<!\[CDATA\[/,DE=/\]\]>/,xE=/^$/,ME=new RegExp(gE.openCloseTag.source+"\\s*$");var wE=function(e){return re(e).toLowerCase()};var LE=zE;zE.notInList=!0,zE.notInBlock=!0;var PE="\\",kE="\n",UE="\t",FE=" ",BE="[",GE="]",HE="^",YE=":",VE=/^( {4}|\t)?/gm;function zE(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g=this.offset;if(this.options.footnotes){for(r=0,a=t.length,i="",o=e.now(),s=o.line;r<a&&(_=t.charAt(r),pe(_));)i+=_,r++;if(t.charAt(r)===BE&&t.charAt(r+1)===HE){for(r=(i+=BE+HE).length,c="";r<a&&(_=t.charAt(r))!==GE;)_===PE&&(c+=_,r++,_=t.charAt(r)),c+=_,r++;if(c&&t.charAt(r)===GE&&t.charAt(r+1)===YE){if(n)return!0;for(u=c,r=(i+=c+GE+YE).length;r<a&&((_=t.charAt(r))===UE||_===FE);)i+=_,r++;for(o.column+=i.length,o.offset+=i.length,c="",l="",d="";r<a;){if((_=t.charAt(r))===kE){for(d=_,r++;r<a&&(_=t.charAt(r))===kE;)d+=_,r++;for(c+=d,d="";r<a&&(_=t.charAt(r))===FE;)d+=_,r++;if(0===d.length)break;c+=d}c&&(l+=c,c=""),l+=_,r++}return i+=l,l=l.replace(VE,function(e){return g[s]=(g[s]||0)+e.length,s++,""}),m=e(i),p=this.enterBlock(),l=this.tokenizeBlock(l,o),p(),m({type:"footnoteDefinition",identifier:wE(u),label:u,children:l})}}}}var qE=function(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=0,m=t.length,p="";for(;u<m&&((o=t.charAt(u))===XE||o===jE);)p+=o,u++;if((o=t.charAt(u))!==ZE)return;u++,p+=o,i="";for(;u<m&&(o=t.charAt(u))!==JE;)o===QE&&(i+=o,u++,o=t.charAt(u)),i+=o,u++;if(!i||t.charAt(u)!==JE||t.charAt(u+1)!==nh)return;l=i,u=(p+=i+JE+nh).length,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)p+=o,u++;if(o=t.charAt(u),i="",r=p,o===rh){for(u++;u<m&&ih(o=t.charAt(u));)i+=o,u++;if((o=t.charAt(u))===ih.delimiter)p+=rh+i+o,u++;else{if(_)return;u-=i.length+1,i=""}}if(!i){for(;u<m&&oh(o=t.charAt(u));)i+=o,u++;p+=i}if(!i)return;c=i,i="";for(;u<m&&((o=t.charAt(u))===jE||o===XE||o===$E);)i+=o,u++;o=t.charAt(u),s=null,o===KE?s=KE:o===WE?s=WE:o===eh&&(s=th);if(s){if(!i)return;for(u=(p+=i+o).length,i="";u<m&&(o=t.charAt(u))!==s;){if(o===$E){if(u++,(o=t.charAt(u))===$E||o===s)return;i+=$E}i+=o,u++}if((o=t.charAt(u))!==s)return;a=p,p+=i+o,u++,d=i,i=""}else i="",u=p.length;for(;u<m&&((o=t.charAt(u))===jE||o===XE);)p+=o,u++;if(!(o=t.charAt(u))||o===$E)return!!n||(r=e(r).test().end,c=this.decode.raw(this.unescape(c),r,{nonTerminated:!1}),d&&(a=e(a).test().end,d=this.decode.raw(this.unescape(d),a)),e(p)({type:"definition",identifier:wE(l),label:l,title:d||null,url:c}))},KE='"',WE="'",QE="\\",$E="\n",jE="\t",XE=" ",ZE="[",JE="]",eh="(",th=")",nh=":",rh="<",ah=">";function ih(e){return e!==ah&&e!==ZE&&e!==JE}function oh(e){return e!==ZE&&e!==JE&&!pe(e)}ih.delimiter=ah;var sh=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v;if(!this.options.gfm)return;r=0,S=0,l=t.length+1,c=[];for(;r<l;){if(C=t.indexOf(ch,r),N=t.indexOf(ph,r+1),-1===C&&(C=t.length),-1===N||N>C){if(S<Eh)return;break}c.push(t.slice(r,C)),S++,r=C+1}o=c.join(ch),a=c.splice(1,1)[0]||[],r=0,l=a.length,S--,i=!1,m=[];for(;r<l;){if((_=a.charAt(r))===ph){if(u=null,!1===i){if(!1===v)return}else m.push(i),i=!1;v=!1}else if(_===_h)u=!0,i=i||null;else if(_===uh)i=i===hh?Sh:u&&null===i?fh:hh;else if(!pe(_))return;r++}!1!==i&&m.push(i);if(m.length<gh)return;if(n)return!0;h=-1,T=[],b=e(o).reset({type:"table",align:m,children:T});for(;++h<S;){for(f=c[h],s={type:"tableRow",children:[]},h&&e(ch),e(f).reset(s,b),l=f.length+1,r=0,d="",p="",g=!0;r<l;)(_=f.charAt(r))!==lh&&_!==dh?(""===_||_===ph?g?e(_):(!p&&!_||g||(o=p,d.length>1&&(_?(o+=d.slice(0,d.length-1),d=d.charAt(d.length-1)):(o+=d,d="")),E=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(p,E)},s)),e(d+_),d="",p=""):(d&&(p+=d,d=""),p+=_,_===mh&&r!==l-2&&(p+=f.charAt(r+1),r++)),g=!1,r++):(p?d+=_:e(_),r++);h||e(ch+a)}return b},lh="\t",ch="\n",dh=" ",_h="-",uh=":",mh="\\",ph="|",gh=1,Eh=2,hh="left",Sh="center",fh="right";var Th=function(e,t,n){var r,a,i,o,s,l=this.options,c=l.commonmark,d=l.gfm,_=this.blockTokenizers,u=this.interruptParagraph,m=t.indexOf(Ch),p=t.length;for(;m<p;){if(-1===m){m=p;break}if(t.charAt(m+1)===Ch)break;if(c){for(o=0,r=m+1;r<p;){if((i=t.charAt(r))===bh){o=vh;break}if(i!==Nh)break;o++,r++}if(o>=vh&&i!==Ch){m=t.indexOf(Ch,m+1);continue}}if(a=t.slice(m+1),lg(u,_,this,[e,a,!0]))break;if(_.list.call(this,e,a,!0)&&(this.inList||c||d&&!Ku(I.left(a).charAt(0))))break;if(r=m,-1!==(m=t.indexOf(Ch,m+1))&&""===I(t.slice(r,m))){m=r;break}}if(a=t.slice(0,m),""===I(a))return e(a),null;if(n)return!0;return s=e.now(),a=Wp(a),e(a)({type:"paragraph",children:this.tokenizeInline(a,s)})},bh="\t",Ch="\n",Nh=" ",vh=4;var Rh=function(e,t){return e.indexOf("\\",t)};var Ah=Ih;Ih.locator=Rh;var Oh="\n",yh="\\";function Ih(e,t,n){var r,a;if(t.charAt(0)===yh&&(r=t.charAt(1),-1!==this.escape.indexOf(r)))return!!n||(a=r===Oh?{type:"break"}:{type:"text",value:r},e(yh+r)(a))}var Dh=function(e,t){return e.indexOf("<",t)};var xh=Fh;Fh.locator=Dh,Fh.notInLink=!0;var Mh="<",wh=">",Lh="@",Ph="/",kh="mailto:",Uh=kh.length;function Fh(e,t,n){var r,a,i,o,s,l="",c=t.length,d=0,_="",u=!1,m="";if(t.charAt(0)===Mh){for(d++,l=Mh;d<c&&(r=t.charAt(d),!(pe(r)||r===wh||r===Lh||":"===r&&t.charAt(d+1)===Ph));)_+=r,d++;if(_){if(m+=_,_="",m+=r=t.charAt(d),d++,r===Lh)u=!0;else{if(":"!==r||t.charAt(d+1)!==Ph)return;m+=Ph,d++}for(;d<c&&(r=t.charAt(d),!pe(r)&&r!==wh);)_+=r,d++;if(r=t.charAt(d),_&&r===wh)return!!n||(i=m+=_,l+=m+r,(a=e.now()).column++,a.offset++,u&&(m.slice(0,Uh).toLowerCase()===kh?(i=i.slice(Uh),a.column+=Uh,a.offset+=Uh):m=kh+m),o=this.inlineTokenizers,this.inlineTokenizers={text:o.text},s=this.enterLink(),i=this.tokenizeInline(i,a),this.inlineTokenizers=o,s(),e(l)({type:"link",title:null,url:jm(m,{nonTerminated:!1}),children:i}))}}}var Bh=function(e,t){var n,r=Gh.length,a=-1,i=-1;if(!this.options.gfm)return-1;for(;++a<r;)-1!==(n=e.indexOf(Gh[a],t))&&(n<i||-1===i)&&(i=n);return i},Gh=["https://","http://","mailto:"];var Hh=rS;rS.locator=Bh,rS.notInLink=!0;var Yh='"',Vh="'",zh="(",qh=")",Kh=",",Wh=".",Qh=":",$h=";",jh="<",Xh="@",Zh="[",Jh="]",eS="mailto:",tS=["http://","https://",eS],nS=tS.length;function rS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g;if(this.options.gfm){for(r="",o=-1;++o<nS;)if(l=tS[o],(c=t.slice(0,l.length)).toLowerCase()===l){r=c;break}if(r){for(o=r.length,d=t.length,_="",u=0;o<d&&(i=t.charAt(o),!pe(i)&&i!==jh)&&(i!==Wh&&i!==Kh&&i!==Qh&&i!==$h&&i!==Yh&&i!==Vh&&i!==qh&&i!==Jh||(m=t.charAt(o+1))&&!pe(m))&&(i!==zh&&i!==Zh||u++,i!==qh&&i!==Jh||!(--u<0));)_+=i,o++;if(_){if(a=r+=_,l===eS){if(-1===(s=_.indexOf(Xh))||s===d-1)return;a=a.slice(eS.length)}return!!n||(g=this.enterLink(),p=this.inlineTokenizers,this.inlineTokenizers={text:p.text},a=this.tokenizeInline(a,e.now()),this.inlineTokenizers=p,g(),e(r)({type:"link",title:null,url:jm(r,{nonTerminated:!1}),children:a}))}}}}var aS=gE.tag,iS=uS;uS.locator=Dh;var oS="<",sS="?",lS="!",cS="/",dS=/^<a /i,_S=/^<\/a>/i;function uS(e,t,n){var r,a,i=t.length;if(!(t.charAt(0)!==oS||i<3)&&(r=t.charAt(1),(Wu(r)||r===sS||r===lS||r===cS)&&(a=t.match(aS))))return!!n||(a=a[0],!this.inLink&&dS.test(a)?this.inLink=!0:this.inLink&&_S.test(a)&&(this.inLink=!1),e(a)({type:"html",value:a}))}var mS=function(e,t){var n=e.indexOf("[",t),r=e.indexOf("![",t);if(-1===r)return n;return n<r?n:r};var pS=OS;OS.locator=mS;var gS="\n",ES="!",hS='"',SS="'",fS="(",TS=")",bS="<",CS=">",NS="[",vS="\\",RS="]",AS="`";function OS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b="",C=0,N=t.charAt(0),v=this.options.pedantic,R=this.options.commonmark,A=this.options.gfm;if(N===ES&&(d=!0,b=N,N=t.charAt(++C)),N===NS&&(d||!this.inLink)){for(b+=N,E="",C++,m=t.length,g=0,(S=e.now()).column+=C,S.offset+=C;C<m;){if(l=N=t.charAt(C),N===AS){for(a=1;t.charAt(C+1)===AS;)l+=N,C++,a++;i?a>=i&&(i=0):i=a}else if(N===vS)C++,l+=t.charAt(C);else if(i&&!A||N!==NS){if((!i||A)&&N===RS){if(!g){if(!v)for(;C<m&&(N=t.charAt(C+1),pe(N));)l+=N,C++;if(t.charAt(C+1)!==fS)return;l+=fS,r=!0,C++;break}g--}}else g++;E+=l,l="",C++}if(r){for(_=E,b+=E+l,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++;if(E="",o=b,(N=t.charAt(C))===bS){for(C++,o+=bS;C<m&&(N=t.charAt(C))!==CS;){if(R&&N===gS)return;E+=N,C++}if(t.charAt(C)!==CS)return;b+=bS+E+CS,h=E,C++}else{for(N=null,l="";C<m&&(N=t.charAt(C),!l||!(N===hS||N===SS||R&&N===fS));){if(pe(N)){if(!v)break;l+=N}else{if(N===fS)g++;else if(N===TS){if(0===g)break;g--}E+=l,l="",N===vS&&(E+=vS,N=t.charAt(++C)),E+=N}C++}h=E,C=(b+=E).length}for(E="";C<m&&(N=t.charAt(C),pe(N));)E+=N,C++;if(N=t.charAt(C),b+=E,E&&(N===hS||N===SS||R&&N===fS))if(C++,b+=N,E="",u=N===fS?TS:N,s=b,R){for(;C<m&&(N=t.charAt(C))!==u;)N===vS&&(E+=vS,N=t.charAt(++C)),C++,E+=N;if((N=t.charAt(C))!==u)return;for(p=E,b+=E+N,C++;C<m&&(N=t.charAt(C),pe(N));)b+=N,C++}else for(l="";C<m;){if((N=t.charAt(C))===u)c&&(E+=u+l,l=""),c=!0;else if(c){if(N===TS){b+=E+u+l,p=E;break}pe(N)?l+=N:(E+=u+l+N,l="",c=!1)}else E+=N;C++}if(t.charAt(C)===TS)return!!n||(b+=TS,h=this.decode.raw(this.unescape(h),e(o).test().end,{nonTerminated:!1}),p&&(s=e(s).test().end,p=this.decode.raw(this.unescape(p),s)),T={type:d?"image":"link",title:p||null,url:h},d?T.alt=this.decode.raw(this.unescape(_),S)||null:(f=this.enterLink(),T.children=this.tokenizeInline(_,S),f()),e(b)(T))}}}var yS=HS;HS.locator=mS;var IS="link",DS="image",xS="footnote",MS="shortcut",wS="collapsed",LS="full",PS=" ",kS="!",US="[",FS="\\",BS="]",GS="^";function HS(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=this.options.footnotes,m=t.charAt(0),p=0,g=t.length,E="",h="",S=IS,f=MS;if(m===kS&&(S=DS,h=m,m=t.charAt(++p)),m===US){if(p++,h+=m,l="",u&&t.charAt(p)===GS){if(S===DS)return;h+=GS,p++,S=xS}for(d=0;p<g;){if((m=t.charAt(p))===US)c=!0,d++;else if(m===BS){if(!d)break;d--}m===FS&&(l+=FS,m=t.charAt(++p)),l+=m,p++}if(E=l,r=l,(m=t.charAt(p))===BS){if(p++,E+=m,l="",!_)for(;p<g&&(m=t.charAt(p),pe(m));)l+=m,p++;if(m=t.charAt(p),S===xS||m!==US||u&&t.charAt(p+1)===GS){if(!r)return;a=r}else{for(a="",l+=m,p++;p<g&&(m=t.charAt(p))!==US&&m!==BS;)m===FS&&(a+=FS,m=t.charAt(++p)),a+=m,p++;(m=t.charAt(p))===BS?(f=a?LS:wS,l+=a+m,p++):a="",E+=l,l=""}if(f===LS||!c)return E=h+E,S===IS&&this.inLink?null:!!n||(S===xS&&-1!==r.indexOf(PS)?e(E)({type:xS,children:this.tokenizeInline(r,e.now())}):((i=e.now()).column+=h.length,i.offset+=h.length,o={type:S+"Reference",identifier:wE(a=f===LS?a:r),label:a},S!==IS&&S!==DS||(o.referenceType=f),S===IS?(s=this.enterLink(),o.children=this.tokenizeInline(r,i),s()):S===DS&&(o.alt=this.decode.raw(this.unescape(r),i)||null),e(E)(o)))}}}var YS=function(e,t){var n=e.indexOf("**",t),r=e.indexOf("__",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var VS=WS;WS.locator=YS;var zS="\\",qS="*",KS="_";function WS(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==qS&&_!==KS||t.charAt(++d)!==_||(a=this.options.pedantic,s=(i=_)+i,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||t.charAt(d+1)!==i||a&&pe(c))&&(_=t.charAt(d+2))!==i){if(!I(o))return;return!!n||((r=e.now()).column+=2,r.offset+=2,e(s+o+s)({type:"strong",children:this.tokenizeInline(o,r)}))}a||_!==zS||(o+=_,_=t.charAt(++d)),o+=_,d++}}var QS=function(e){return jS.test("number"==typeof e?$S(e):e.charAt(0))},$S=String.fromCharCode,jS=/\w/;var XS=function(e,t){var n=e.indexOf("*",t),r=e.indexOf("_",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var ZS=nf;nf.locator=XS;var JS="*",ef="_",tf="\\";function nf(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==JS&&_!==ef||(a=this.options.pedantic,s=_,i=_,l=t.length,d++,o="",_="",a&&pe(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||a&&pe(c))){if((_=t.charAt(++d))!==i){if(!I(o)||c===i)return;if(!a&&i===ef&&QS(_)){o+=i;continue}return!!n||((r=e.now()).column++,r.offset++,e(s+o+i)({type:"emphasis",children:this.tokenizeInline(o,r)}))}o+=i}a||_!==tf||(o+=_,_=t.charAt(++d)),o+=_,d++}}var rf=function(e,t){return e.indexOf("~~",t)};var af=lf;lf.locator=rf;var of="~",sf="~~";function lf(e,t,n){var r,a,i,o="",s="",l="",c="";if(this.options.gfm&&t.charAt(0)===of&&t.charAt(1)===of&&!pe(t.charAt(2)))for(r=1,a=t.length,(i=e.now()).column+=2,i.offset+=2;++r<a;){if(!((o=t.charAt(r))!==of||s!==of||l&&pe(l)))return!!n||e(sf+c+sf)({type:"delete",children:this.tokenizeInline(c,i)});c+=s,l=s,s=o}}var cf=function(e,t){return e.indexOf("`",t)};var df=pf;pf.locator=cf;var _f=10,uf=32,mf=96;function pf(e,t,n){for(var r,a,i,o,s,l,c=t.length,d=0;d<c&&t.charCodeAt(d)===mf;)d++;if(0!==d&&d!==c){for(r=d,s=t.charCodeAt(d);d<c;){if(o=s,s=t.charCodeAt(d+1),o===mf){if(void 0===a&&(a=d),i=d+1,s!==mf&&i-a===r){l=!0;break}}else void 0!==a&&(a=void 0,i=void 0);d++}if(l){if(n)return!0;if(d=r,c=a,o=t.charCodeAt(d),s=t.charCodeAt(c-1),l=!1,c-d>2&&(o===uf||o===_f)&&(s===uf||s===_f)){for(d++,c--;d<c;){if((o=t.charCodeAt(d))!==uf&&o!==_f){l=!0;break}d++}!0===l&&(r++,a--)}return e(t.slice(0,i))({type:"inlineCode",value:t.slice(r,a)})}}}var gf=function(e,t){var n=e.indexOf("\n",t);for(;n>t&&" "===e.charAt(n-1);)n--;return n};var Ef=Tf;Tf.locator=gf;var hf=" ",Sf="\n",ff=2;function Tf(e,t,n){for(var r,a=t.length,i=-1,o="";++i<a;){if((r=t.charAt(i))===Sf){if(i<ff)return;return!!n||e(o+=r)({type:"break"})}if(r!==hf)return;o+=r}}var bf=function(e,t,n){var r,a,i,o,s,l,c,d,_,u;if(n)return!0;r=this.inlineMethods,o=r.length,a=this.inlineTokenizers,i=-1,_=t.length;for(;++i<o;)"text"!==(d=r[i])&&a[d]&&((c=a[d].locator)||e.file.fail("Missing locator: `"+d+"`"),-1!==(l=c.call(this,t,1))&&l<_&&(_=l));s=t.slice(0,_),u=e.now(),this.decode(s,u,function(t,n,r){e(r||t)({type:"text",value:t})})};var Cf=Nf;function Nf(t,n){this.file=n,this.offset={},this.options=e(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=Vm(n).toOffset,this.unescape=zm(this,"escape"),this.decode=Op(this)}var vf=Nf.prototype;function Rf(e){var t,n=[];for(t in e)n.push(t);return n}vf.setOptions=Fp,vf.parse=Yp,vf.options=Up,vf.exitStart=Ym("atStart",!0),vf.enterList=Ym("inList",!1),vf.enterLink=Ym("inLink",!1),vf.enterBlock=Ym("inBlock",!1),vf.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],vf.blockTokenizers={newline:qp,indentedCode:$p,fencedCode:eg,blockquote:cg,atxHeading:pg,thematicBreak:Tg,list:Fg,setextHeading:aE,html:EE,footnote:LE,definition:qE,table:sh,paragraph:Th},vf.inlineTokenizers={escape:Ah,autoLink:xh,url:Hh,html:iS,link:pS,reference:yS,strong:VS,emphasis:ZS,deletion:af,code:df,break:Ef,text:bf},vf.blockMethods=Rf(vf.blockTokenizers),vf.inlineMethods=Rf(vf.inlineTokenizers),vf.tokenizeBlock=yp("block"),vf.tokenizeInline=yp("inline"),vf.tokenizeFactory=yp;var Af=Of;function Of(t){var n=this.data("settings"),r=Hm(Cf);r.prototype.options=e(r.prototype.options,n,t),this.Parser=r}function yf(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function If(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Df(e){return e.replace(new RegExp("[-[\\]{}()*+?.\\\\^$|/]","g"),"\\$&")}Of.Parser=Cf;var xf="\n",Mf="|";var wf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).map(Df).join("|");if(!t)throw new Error("remark-custom-blocks needs to be passed a configuration object as option");var n=new RegExp("\\[\\[(".concat(t,")(?: *\\| *(.*))?\\]\\]\n"));var r=this.Parser,a=r.prototype.blockTokenizers,i=r.prototype.blockMethods;a.customBlocks=function(t,r,a){var i=t.now(),o=n.exec(r);if(o&&0===o.index){var s=If(o,3),l=s[0],c=s[1],d=s[2];if(a)return!0;for(var _=[],u=[],m=0;-1!==(m=r.indexOf(xf));){var p=r.indexOf(xf,m+1),g=-1!==p?r.slice(m+1,p):r.slice(m+1);if(g[0]!==Mf)break;var E=g.slice(g.startsWith("".concat(Mf," "))?2:1);_.push(g),u.push(E),r=r.slice(m+1)}var h=u.join(xf),S=l+_.join(xf),f=e[c],T=f.title&&["optional","required"].includes(f.title);if((!f.title||"required"!==f.title||d)&&(T||!d)){var b=t(S),C=this.enterBlock(),N={type:"".concat(c,"CustomBlockBody"),data:{hName:"div",hProperties:{className:"custom-block-body"}},children:this.tokenizeBlock(h,i)};C();var v=[N];if(T&&d){var R={type:"".concat(c,"CustomBlockHeading"),data:{hName:f.details?"summary":"div",hProperties:{className:"custom-block-heading"}},children:this.tokenizeInline(d,i)};v.unshift(R)}var A=ts.parse(f.classes||"");return b({type:"".concat(c,"CustomBlock"),children:v,data:{hName:f.details?"details":"div",hProperties:{className:["custom-block"].concat(yf(A))}}})}}},i.splice(i.indexOf("fencedCode")+1,0,"customBlocks");var o=this.Compiler;if(o){var s=o.prototype.visitors;if(!s)return;Object.keys(e).forEach(function(e){var t,n,r,a=(t=e,{blockHeading:function(e){return r=this.all(e).join(""),""},blockBody:function(e){return n=this.all(e).map(function(e){return e.replace(/\n/g,"\n| ")}).join("\n|\n| ")},block:function(e){return n="",r="",this.all(e),r?"[[".concat(t," | ").concat(r,"]]\n| ").concat(n):"[[".concat(t,"]]\n| ").concat(n)}});s["".concat(e,"CustomBlock")]=a.block,s["".concat(e,"CustomBlockHeading")]=a.blockHeading,s["".concat(e,"CustomBlockBody")]=a.blockBody})}var l=r.prototype.interruptParagraph,c=r.prototype.interruptList,d=r.prototype.interruptBlockquote;l.splice(l.indexOf("fencedCode")+1,0,["customBlocks"]),c.splice(c.indexOf("fencedCode")+1,0,["customBlocks"]),d.splice(d.indexOf("fencedCode")+1,0,["customBlocks"])},Lf=2147483647,Pf=36,kf=1,Uf=26,Ff=38,Bf=700,Gf=72,Hf=128,Yf="-",Vf=/[^\x20-\x7E]/,zf=/[\x2E\u3002\uFF0E\uFF61]/g,qf={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Kf=Pf-kf,Wf=Math.floor,Qf=String.fromCharCode;function $f(e){throw new RangeError(qf[e])}function jf(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function Xf(e,t,n){var r=0;for(e=n?Wf(e/Bf):e>>1,e+=Wf(e/t);e>Kf*Uf>>1;r+=Pf)e=Wf(e/Kf);return Wf(r+(Kf+1)*e/(e+Ff))}function Zf(e){return function(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var a=function(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}((e=e.replace(zf,".")).split("."),t).join(".");return r+a}(e,function(e){return Vf.test(e)?"xn--"+function(e){var t,n,r,a,i,o,s,l,c,d,_,u,m,p,g,E=[];for(u=(e=function(e){for(var t,n,r=[],a=0,i=e.length;a<i;)(t=e.charCodeAt(a++))>=55296&&t<=56319&&a<i?56320==(64512&(n=e.charCodeAt(a++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),a--):r.push(t);return r}(e)).length,t=Hf,n=0,i=Gf,o=0;o<u;++o)(_=e[o])<128&&E.push(Qf(_));for(r=a=E.length,a&&E.push(Yf);r<u;){for(s=Lf,o=0;o<u;++o)(_=e[o])>=t&&_<s&&(s=_);for(s-t>Wf((Lf-n)/(m=r+1))&&$f("overflow"),n+=(s-t)*m,t=s,o=0;o<u;++o)if((_=e[o])<t&&++n>Lf&&$f("overflow"),_==t){for(l=n,c=Pf;!(l<(d=c<=i?kf:c>=i+Uf?Uf:c-i));c+=Pf)g=l-d,p=Pf-d,E.push(Qf(jf(d+g%p,0))),l=Wf(g/p);E.push(Qf(jf(l,0))),i=Xf(n,m,r==a),n=0,++r}++n,++t}return E.join("")}(e):e})}var Jf=[],eT=[],tT="undefined"!=typeof Uint8Array?Uint8Array:Array,nT=!1;function rT(){nT=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Jf[t]=e[t],eT[e.charCodeAt(t)]=t;eT["-".charCodeAt(0)]=62,eT["_".charCodeAt(0)]=63}function aT(e,t,n){for(var r,a,i=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(Jf[(a=r)>>18&63]+Jf[a>>12&63]+Jf[a>>6&63]+Jf[63&a]);return i.join("")}function iT(e){var t;nT||rT();for(var n=e.length,r=n%3,a="",i=[],o=0,s=n-r;o<s;o+=16383)i.push(aT(e,o,o+16383>s?s:o+16383));return 1===r?(t=e[n-1],a+=Jf[t>>2],a+=Jf[t<<4&63],a+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],a+=Jf[t>>10],a+=Jf[t>>4&63],a+=Jf[t<<2&63],a+="="),i.push(a),i.join("")}function oT(e,t,n,r,a){var i,o,s=8*a-r-1,l=(1<<s)-1,c=l>>1,d=-7,_=n?a-1:0,u=n?-1:1,m=e[t+_];for(_+=u,i=m&(1<<-d)-1,m>>=-d,d+=s;d>0;i=256*i+e[t+_],_+=u,d-=8);for(o=i&(1<<-d)-1,i>>=-d,d+=r;d>0;o=256*o+e[t+_],_+=u,d-=8);if(0===i)i=1-c;else{if(i===l)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,r),i-=c}return(m?-1:1)*o*Math.pow(2,i-r)}function sT(e,t,n,r,a,i){var o,s,l,c=8*i-a-1,d=(1<<c)-1,_=d>>1,u=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:i-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+_>=1?u/l:u*Math.pow(2,1-_))*l>=2&&(o++,l/=2),o+_>=d?(s=0,o=d):o+_>=1?(s=(t*l-1)*Math.pow(2,a),o+=_):(s=t*Math.pow(2,_-1)*Math.pow(2,a),o=0));a>=8;e[n+m]=255&s,m+=p,s/=256,a-=8);for(o=o<<a|s,c+=a;c>0;e[n+m]=255&o,m+=p,o/=256,c-=8);e[n+m-p]|=128*g}var lT={}.toString,cT=Array.isArray||function(e){return"[object Array]"==lT.call(e)};function dT(){return uT.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function _T(e,t){if(dT()<t)throw new RangeError("Invalid typed array length");return uT.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=uT.prototype:(null===e&&(e=new uT(t)),e.length=t),e}function uT(e,t,n){if(!(uT.TYPED_ARRAY_SUPPORT||this instanceof uT))return new uT(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return gT(this,e)}return mT(this,e,t,n)}function mT(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);uT.TYPED_ARRAY_SUPPORT?(e=t).__proto__=uT.prototype:e=ET(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!uT.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|fT(t,n),a=(e=_T(e,r)).write(t,n);a!==r&&(e=e.slice(0,a));return e}(e,t,n):function(e,t){if(ST(t)){var n=0|hT(t.length);return 0===(e=_T(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?_T(e,0):ET(e,t);if("Buffer"===t.type&&cT(t.data))return ET(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function pT(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function gT(e,t){if(pT(t),e=_T(e,t<0?0:0|hT(t)),!uT.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function ET(e,t){var n=t.length<0?0:0|hT(t.length);e=_T(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function hT(e){if(e>=dT())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+dT().toString(16)+" bytes");return 0|e}function ST(e){return!(null==e||!e._isBuffer)}function fT(e,t){if(ST(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return qT(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return KT(e).length;default:if(r)return qT(e).length;t=(""+t).toLowerCase(),r=!0}}function TT(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function bT(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=uT.from(t,r)),ST(t))return 0===t.length?-1:CT(e,t,n,r,a);if("number"==typeof t)return t&=255,uT.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):CT(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function CT(e,t,n,r,a){var i,o=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var d=-1;for(i=n;i<s;i++)if(c(e,i)===c(t,-1===d?0:i-d)){if(-1===d&&(d=i),i-d+1===l)return d*o}else-1!==d&&(i-=i-d),d=-1}else for(n+l>s&&(n=s-l),i=n;i>=0;i--){for(var _=!0,u=0;u<l;u++)if(c(e,i+u)!==c(t,u)){_=!1;break}if(_)return i}return-1}function NT(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;o<r;++o){var s=parseInt(t.substr(2*o,2),16);if(isNaN(s))return o;e[n+o]=s}return o}function vT(e,t,n,r){return WT(qT(t,e.length-n),e,n,r)}function RT(e,t,n,r){return WT(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function AT(e,t,n,r){return RT(e,t,n,r)}function OT(e,t,n,r){return WT(KT(t),e,n,r)}function yT(e,t,n,r){return WT(function(e,t){for(var n,r,a,i=[],o=0;o<e.length&&!((t-=2)<0);++o)n=e.charCodeAt(o),r=n>>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function IT(e,t,n){return 0===t&&n===e.length?iT(e):iT(e.slice(t,n))}function DT(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var i,o,s,l,c=e[a],d=null,_=c>239?4:c>223?3:c>191?2:1;if(a+_<=n)switch(_){case 1:c<128&&(d=c);break;case 2:128==(192&(i=e[a+1]))&&(l=(31&c)<<6|63&i)>127&&(d=l);break;case 3:i=e[a+1],o=e[a+2],128==(192&i)&&128==(192&o)&&(l=(15&c)<<12|(63&i)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:i=e[a+1],o=e[a+2],s=e[a+3],128==(192&i)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&i)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(d=l)}null===d?(d=65533,_=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),a+=_}return function(e){var t=e.length;if(t<=xT)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=xT));return n}(r)}uT.TYPED_ARRAY_SUPPORT=void 0===tc.TYPED_ARRAY_SUPPORT||tc.TYPED_ARRAY_SUPPORT,uT.poolSize=8192,uT._augment=function(e){return e.__proto__=uT.prototype,e},uT.from=function(e,t,n){return mT(null,e,t,n)},uT.TYPED_ARRAY_SUPPORT&&(uT.prototype.__proto__=Uint8Array.prototype,uT.__proto__=Uint8Array),uT.alloc=function(e,t,n){return function(e,t,n,r){return pT(t),t<=0?_T(e,t):void 0!==n?"string"==typeof r?_T(e,t).fill(n,r):_T(e,t).fill(n):_T(e,t)}(null,e,t,n)},uT.allocUnsafe=function(e){return gT(null,e)},uT.allocUnsafeSlow=function(e){return gT(null,e)},uT.isBuffer=function(e){return null!=e&&(!!e._isBuffer||QT(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&QT(e.slice(0,0))}(e))},uT.compare=function(e,t){if(!ST(e)||!ST(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,i=Math.min(n,r);a<i;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},uT.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},uT.concat=function(e,t){if(!cT(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return uT.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=uT.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var i=e[n];if(!ST(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a),a+=i.length}return r},uT.byteLength=fT,uT.prototype._isBuffer=!0,uT.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)TT(this,t,t+1);return this},uT.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)TT(this,t,t+3),TT(this,t+1,t+2);return this},uT.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)TT(this,t,t+7),TT(this,t+1,t+6),TT(this,t+2,t+5),TT(this,t+3,t+4);return this},uT.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?DT(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return LT(this,t,n);case"utf8":case"utf-8":return DT(this,t,n);case"ascii":return MT(this,t,n);case"latin1":case"binary":return wT(this,t,n);case"base64":return IT(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return PT(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},uT.prototype.equals=function(e){if(!ST(e))throw new TypeError("Argument must be a Buffer");return this===e||0===uT.compare(this,e)},uT.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},uT.prototype.compare=function(e,t,n,r,a){if(!ST(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,a>>>=0,this===e)return 0;for(var i=a-r,o=n-t,s=Math.min(i,o),l=this.slice(r,a),c=e.slice(t,n),d=0;d<s;++d)if(l[d]!==c[d]){i=l[d],o=c[d];break}return i<o?-1:o<i?1:0},uT.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},uT.prototype.indexOf=function(e,t,n){return bT(this,e,t,n,!0)},uT.prototype.lastIndexOf=function(e,t,n){return bT(this,e,t,n,!1)},uT.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return NT(this,e,t,n);case"utf8":case"utf-8":return vT(this,e,t,n);case"ascii":return RT(this,e,t,n);case"latin1":case"binary":return AT(this,e,t,n);case"base64":return OT(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return yT(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},uT.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var xT=4096;function MT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function wT(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function LT(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",i=t;i<n;++i)a+=zT(e[i]);return a}function PT(e,t,n){for(var r=e.slice(t,n),a="",i=0;i<r.length;i+=2)a+=String.fromCharCode(r[i]+256*r[i+1]);return a}function kT(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function UT(e,t,n,r,a,i){if(!ST(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function FT(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-n,2);a<i;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function BT(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-n,4);a<i;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function GT(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function HT(e,t,n,r,a){return a||GT(e,0,n,4),sT(e,t,n,r,23,4),n+4}function YT(e,t,n,r,a){return a||GT(e,0,n,8),sT(e,t,n,r,52,8),n+8}uT.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),uT.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=uT.prototype;else{var a=t-e;n=new uT(a,void 0);for(var i=0;i<a;++i)n[i]=this[i+e]}return n},uT.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r},uT.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},uT.prototype.readUInt8=function(e,t){return t||kT(e,1,this.length),this[e]},uT.prototype.readUInt16LE=function(e,t){return t||kT(e,2,this.length),this[e]|this[e+1]<<8},uT.prototype.readUInt16BE=function(e,t){return t||kT(e,2,this.length),this[e]<<8|this[e+1]},uT.prototype.readUInt32LE=function(e,t){return t||kT(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},uT.prototype.readUInt32BE=function(e,t){return t||kT(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},uT.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=this[e],a=1,i=0;++i<t&&(a*=256);)r+=this[e+i]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},uT.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||kT(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},uT.prototype.readInt8=function(e,t){return t||kT(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},uT.prototype.readInt16LE=function(e,t){t||kT(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt16BE=function(e,t){t||kT(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},uT.prototype.readInt32LE=function(e,t){return t||kT(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},uT.prototype.readInt32BE=function(e,t){return t||kT(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},uT.prototype.readFloatLE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!0,23,4)},uT.prototype.readFloatBE=function(e,t){return t||kT(e,4,this.length),oT(this,e,!1,23,4)},uT.prototype.readDoubleLE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!0,52,8)},uT.prototype.readDoubleBE=function(e,t){return t||kT(e,8,this.length),oT(this,e,!1,52,8)},uT.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i<n&&(a*=256);)this[t+i]=e/a&255;return t+n},uT.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||UT(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+n},uT.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,255,0),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},uT.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,65535,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):BT(this,e,t,!0),t+4},uT.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,4294967295,0),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=0,o=1,s=0;for(this[t]=255&e;++i<n&&(o*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);UT(this,e,t,n,a-1,-a)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},uT.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,1,127,-128),uT.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},uT.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):FT(this,e,t,!0),t+2},uT.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,2,32767,-32768),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):FT(this,e,t,!1),t+2},uT.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),uT.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):BT(this,e,t,!0),t+4},uT.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||UT(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),uT.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):BT(this,e,t,!1),t+4},uT.prototype.writeFloatLE=function(e,t,n){return HT(this,e,t,!0,n)},uT.prototype.writeFloatBE=function(e,t,n){return HT(this,e,t,!1,n)},uT.prototype.writeDoubleLE=function(e,t,n){return YT(this,e,t,!0,n)},uT.prototype.writeDoubleBE=function(e,t,n){return YT(this,e,t,!1,n)},uT.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,i=r-n;if(this===e&&n<t&&t<r)for(a=i-1;a>=0;--a)e[a+t]=this[a+n];else if(i<1e3||!uT.TYPED_ARRAY_SUPPORT)for(a=0;a<i;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},uT.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!uT.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var o=ST(e)?e:qT(new uT(e,r).toString()),s=o.length;for(i=0;i<n-t;++i)this[i+t]=o[i%s]}return this};var VT=/[^+\/0-9A-Za-z-_]/g;function zT(e){return e<16?"0"+e.toString(16):e.toString(16)}function qT(e,t){var n;t=t||1/0;for(var r=e.length,a=null,i=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function KT(e){return function(e){var t,n,r,a,i,o;nT||rT();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===e[s-2]?2:"="===e[s-1]?1:0,o=new tT(3*s/4-i),r=i>0?s-4:s;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)a=eT[e.charCodeAt(t)]<<18|eT[e.charCodeAt(t+1)]<<12|eT[e.charCodeAt(t+2)]<<6|eT[e.charCodeAt(t+3)],o[l++]=a>>16&255,o[l++]=a>>8&255,o[l++]=255&a;return 2===i?(a=eT[e.charCodeAt(t)]<<2|eT[e.charCodeAt(t+1)]>>4,o[l++]=255&a):1===i&&(a=eT[e.charCodeAt(t)]<<10|eT[e.charCodeAt(t+1)]<<4|eT[e.charCodeAt(t+2)]>>2,o[l++]=a>>8&255,o[l++]=255&a),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(VT,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function WT(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function QT(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function $T(e){return null===e}function jT(e){return"string"==typeof e}function XT(e){return"object"==typeof e&&null!==e}function ZT(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var JT=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function eb(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function tb(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var nb=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function rb(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var s=e.length;o>0&&s>o&&(s=o);for(var l=0;l<s;++l){var c,d,_,u,m=e[l].replace(i,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),d=m.substr(p+1)):(c=m,d=""),_=decodeURIComponent(c),u=decodeURIComponent(d),ZT(a,_)?JT(a[_])?a[_].push(u):a[_]=[a[_],u]:a[_]=u}return a}var ab={parse:fb,resolve:function(e,t){return fb(e,!1,!0).resolve(t)},resolveObject:function(e,t){return e?fb(e,!1,!0).resolveObject(t):t},format:function(e){jT(e)&&(e=Tb({},e));return bb(e)},Url:ib};function ib(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var ob=/^([a-z0-9.+-]+:)/i,sb=/:[0-9]*$/,lb=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,cb=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),db=["'"].concat(cb),_b=["%","/","?",";","#"].concat(db),ub=["/","?","#"],mb=255,pb=/^[+a-z0-9A-Z_-]{0,63}$/,gb=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Eb={javascript:!0,"javascript:":!0},hb={javascript:!0,"javascript:":!0},Sb={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function fb(e,t,n){if(e&&XT(e)&&e instanceof ib)return e;var r=new ib;return r.parse(e,t,n),r}function Tb(e,t,n,r){if(!jT(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),i=-1!==a&&a<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(i);if(s=s.trim(),!r&&1===t.split("#").length){var l=lb.exec(s);if(l)return e.path=s,e.href=s,e.pathname=l[1],l[2]?(e.search=l[2],e.query=n?rb(e.search.substr(1)):e.search.substr(1)):n&&(e.search="",e.query={}),e}var c,d,_,u,m=ob.exec(s);if(m){var p=(m=m[0]).toLowerCase();e.protocol=p,s=s.substr(m.length)}if(r||m||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var g="//"===s.substr(0,2);!g||m&&hb[m]||(s=s.substr(2),e.slashes=!0)}if(!hb[m]&&(g||m&&!Sb[m])){var E,h,S=-1;for(c=0;c<ub.length;c++)-1!==(d=s.indexOf(ub[c]))&&(-1===S||d<S)&&(S=d);for(-1!==(h=-1===S?s.lastIndexOf("@"):s.lastIndexOf("@",S))&&(E=s.slice(0,h),s=s.slice(h+1),e.auth=decodeURIComponent(E)),S=-1,c=0;c<_b.length;c++)-1!==(d=s.indexOf(_b[c]))&&(-1===S||d<S)&&(S=d);-1===S&&(S=s.length),e.host=s.slice(0,S),s=s.slice(S),Cb(e),e.hostname=e.hostname||"";var f="["===e.hostname[0]&&"]"===e.hostname[e.hostname.length-1];if(!f){var T=e.hostname.split(/\./);for(c=0,_=T.length;c<_;c++){var b=T[c];if(b&&!b.match(pb)){for(var C="",N=0,v=b.length;N<v;N++)b.charCodeAt(N)>127?C+="x":C+=b[N];if(!C.match(pb)){var R=T.slice(0,c),A=T.slice(c+1),O=b.match(gb);O&&(R.push(O[1]),A.unshift(O[2])),A.length&&(s="/"+A.join(".")+s),e.hostname=R.join(".");break}}}}e.hostname.length>mb?e.hostname="":e.hostname=e.hostname.toLowerCase(),f||(e.hostname=Zf(e.hostname)),u=e.port?":"+e.port:"";var y=e.hostname||"";e.host=y+u,e.href+=e.host,f&&(e.hostname=e.hostname.substr(1,e.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!Eb[p])for(c=0,_=db.length;c<_;c++){var I=db[c];if(-1!==s.indexOf(I)){var D=encodeURIComponent(I);D===I&&(D=escape(I)),s=s.split(I).join(D)}}var x=s.indexOf("#");-1!==x&&(e.hash=s.substr(x),s=s.slice(0,x));var M=s.indexOf("?");if(-1!==M?(e.search=s.substr(M),e.query=s.substr(M+1),n&&(e.query=rb(e.query)),s=s.slice(0,M)):n&&(e.search="",e.query={}),s&&(e.pathname=s),Sb[p]&&e.hostname&&!e.pathname&&(e.pathname="/"),e.pathname||e.search){u=e.pathname||"";var w=e.search||"";e.path=u+w}return e.href=bb(e),e}function bb(e){var t=e.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n,r,a,i,o=e.protocol||"",s=e.pathname||"",l=e.hash||"",c=!1,d="";e.host?c=t+e.host:e.hostname&&(c=t+(-1===e.hostname.indexOf(":")?e.hostname:"["+this.hostname+"]"),e.port&&(c+=":"+e.port)),e.query&&XT(e.query)&&Object.keys(e.query).length&&(n=e.query,r=r||"&",a=a||"=",null===n&&(n=void 0),d="object"==typeof n?tb(nb(n),function(e){var t=encodeURIComponent(eb(e))+a;return JT(n[e])?tb(n[e],function(e){return t+encodeURIComponent(eb(e))}).join(r):t+encodeURIComponent(eb(n[e]))}).join(r):i?encodeURIComponent(eb(i))+a+encodeURIComponent(eb(n)):"");var _=e.search||d&&"?"+d||"";return o&&":"!==o.substr(-1)&&(o+=":"),e.slashes||(!o||Sb[o])&&!1!==c?(c="//"+(c||""),s&&"/"!==s.charAt(0)&&(s="/"+s)):c||(c=""),l&&"#"!==l.charAt(0)&&(l="#"+l),_&&"?"!==_.charAt(0)&&(_="?"+_),o+c+(s=s.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(_=_.replace("#","%23"))+l}function Cb(e){var t=e.host,n=sb.exec(t);n&&(":"!==(n=n[0])&&(e.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(e.hostname=t)}function Nb(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function vb(e){return(vb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}ib.prototype.parse=function(e,t,n){return Tb(this,e,t,n)},ib.prototype.format=function(){return bb(this)},ib.prototype.resolve=function(e){return this.resolveObject(fb(e,!1,!0)).format()},ib.prototype.resolveObject=function(e){if(jT(e)){var t=new ib;t.parse(e,!1,!0),e=t}for(var n,r=new ib,a=Object.keys(this),i=0;i<a.length;i++){var o=a[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l];"protocol"!==c&&(r[c]=e[c])}return Sb[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Sb[e.protocol]){for(var d=Object.keys(e),_=0;_<d.length;_++){var u=d[_];r[u]=e[u]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||hb[e.protocol])r.pathname=e.pathname;else{for(n=(e.pathname||"").split("/");n.length&&!(e.host=n.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==n[0]&&n.unshift(""),n.length<2&&n.unshift(""),r.pathname=n.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",p=r.search||"";r.path=m+p}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var g,E=r.pathname&&"/"===r.pathname.charAt(0),h=e.host||e.pathname&&"/"===e.pathname.charAt(0),S=h||E||r.host&&e.pathname,f=S,T=r.pathname&&r.pathname.split("/")||[],b=r.protocol&&!Sb[r.protocol];if(n=e.pathname&&e.pathname.split("/")||[],b&&(r.hostname="",r.port=null,r.host&&(""===T[0]?T[0]=r.host:T.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===n[0]?n[0]=e.host:n.unshift(e.host)),e.host=null),S=S&&(""===n[0]||""===T[0])),h)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,T=n;else if(n.length)T||(T=[]),T.pop(),T=T.concat(n),r.search=e.search,r.query=e.query;else if(null!=e.search)return b&&(r.hostname=r.host=T.shift(),(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),r.search=e.search,r.query=e.query,$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!T.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var C=T.slice(-1)[0],N=(r.host||e.host||T.length>1)&&("."===C||".."===C)||""===C,v=0,R=T.length;R>=0;R--)"."===(C=T[R])?T.splice(R,1):".."===C?(T.splice(R,1),v++):v&&(T.splice(R,1),v--);if(!S&&!f)for(;v--;v)T.unshift("..");!S||""===T[0]||T[0]&&"/"===T[0].charAt(0)||T.unshift(""),N&&"/"!==T.join("/").substr(-1)&&T.push("");var A=""===T[0]||T[0]&&"/"===T[0].charAt(0);return b&&(r.hostname=r.host=A?"":T.length?T.shift():"",(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),(S=S||r.host&&T.length)&&!A&&T.unshift(""),T.length?r.pathname=T.join("/"):(r.pathname=null,r.path=null),$T(r.pathname)&&$T(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},ib.prototype.parseHost=function(){return Cb(this)};var Rb=ab.format,Ab=ab.parse,Ob=ab.URLSearchParams,yb=function(e){if("object"!==vb(e)||!Object.keys(e).length)throw new Error("remark-iframes needs to be passed a configuration object as option");var t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.iframes=function(t,n,r){if(n.startsWith("!(http")){for(var a="",i="",o=["!","(",")"],s=0;s<n.length&&")"!==n[s-1];s++)a+=n[s],o.includes(n[s])||(i+=n[s]);if(r)return!0;var l=function(t){var n=Ab(t).hostname;return e[n]}(i);if(!l||!0===l.disabled||l.match&&l.match instanceof RegExp&&!l.match.test(i))return t(a)({type:"paragraph",children:[{type:"text",value:a}]});var c=function(e,t){var n=t,r=Ab(n);if(e.droppedQueryParameters&&r.search){var a=new Ob(r.search);e.droppedQueryParameters.forEach(function(e){return a.delete(e)}),r.search=a.toString(),n=Rb(r)}return e.replace&&e.replace.length&&(e.replace.forEach(function(e){var t=Nb(e,2),a=t[0],i=t[1];a&&i&&(n=n.replace(a,i)),r=Ab(n)}),n=Rb(r)),e.removeFileName&&(r.pathname=r.pathname.substring(0,r.pathname.lastIndexOf("/")),n=Rb(r)),e.removeAfter&&n.includes(e.removeAfter)&&(n=n.substring(0,n.indexOf(e.removeAfter))),e.append&&(n+=e.append),n}(l,i),d=function(e,t){var n="",r=e.thumbnail;return r&&r.format&&(n=r.format,Object.keys(r).filter(function(e){return"format"!==e}).forEach(function(e){var a=new RegExp("{".concat(e,"}"),"g"),i=new RegExp(r[e]).exec(t);i&&(n=n.replace(a,i[1]))})),n}(l,c);t(a)({type:"iframe",src:i,data:{hName:l.tag,hProperties:{src:c,width:l.width,height:l.height,allowfullscreen:!0,frameborder:"0"},thumbnail:d}})}},r.splice(r.indexOf("blockquote")+1,0,"iframes");var a=this.Compiler;if(a){var i=a.prototype.visitors;if(!i)return;i.iframe=function(e){return"!(".concat(e.src,")")}}};return function(e,t){Jc().use(Af).use(At).use(Lt).use(Dt).use(ht).use(Be).use(Te).use(wf,{information:{classes:"special-box information",title:"optional"},comment:{classes:"special-box comment",title:"optional"},attention:{classes:"special-box attention",title:"optional"},question:{classes:"special-box question",title:"optional"},good:{classes:"special-box good"},secret:{classes:"special-box secret",title:"optional"},bad:{classes:"special-box bad"}}).use(Et).use(yb,{"www.youtube.com":{tag:"IFRAME",width:560,height:315,disabled:!1,replace:[["watch?v=","embed/"],["http://","https://"]],thumbnail:{format:"http://img.youtube.com/vi/{id}/0.jpg",id:".+/(.+)$"},removeAfter:"&"}}).use(me,{allowDangerousHTML:!0}).use(eu).use(fl).use(Bm).process(e,t)}}();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1kLm1pbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LWJ1aWxkZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9jb252ZXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1nZW5lcmF0ZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1kZWZpbml0aW9ucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvYWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGhlbWF0aWMtYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi93cmFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2Zvb3Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2Jsb2NrcXVvdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBlYXQtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RldGFiL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2RlbGV0ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9oZWFkaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9yZXZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29sbGFwc2Utd2hpdGUtc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9saXN0LWl0ZW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJpbS1saW5lcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbmxpbmUtY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2xpbmstcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3BhcmFncmFwaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3Jvb3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9zdHJvbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy90YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy13aGl0ZXNwYWNlLWNoYXJhY3Rlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmsta2JkL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvYmxvY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm9ybWF0L2Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mYXVsdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9saWIvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstaGlnaGxpZ2h0LmpzL3NyYy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcmNhZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJtYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3htbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc2NpaWRvYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc3BlY3RqLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hd2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FwbnByb3RvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb2ZmZWVzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29xLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nvcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcm1zaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcnlzdGFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXJrZG93bi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kYXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RlbHBoaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHNjb25maWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWxtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1YnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9leGNlbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9maXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZmxpeC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2djb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2doZXJraW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ28uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ29sby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFuZGxlYmFycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHNwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5mb3JtNy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXJwZjkwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lzYmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pib3NzLWNsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMva290bGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xhc3NvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xkaWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVhZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpc3AuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZWNvZGVzZXJ2ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFrZWZpbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0bGFiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21heGltYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pemFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9ua2V5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbjFxbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uZ2lueC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2JqZWN0aXZlYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vY2FtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vcGVuc2NhZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9veHlnZW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BhcnNlcjMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGdzcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wb255LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9maWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3RvYnVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cHBldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXJlYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHl0aG9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmVhc29ubWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvYm9jb25mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2FzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjYWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaGVtZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2Nzcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zaGVsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsbHRhbGsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NxZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3Rhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RjbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGhyaWZ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHlwZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZibmV0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmVyaWxvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aGRsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3plcGhpci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbXVsdGlwbGUtY2hvaWNlL2FwcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZC1hdHRyLXBhcnNlci9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1saW5lLWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXNlbGVjdC9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay10ZXh0LWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vdW5pY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvbmFtZWQtZW50aXR5LWRhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi91dGlscy9taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9vcGVuLWVsZW1lbnQtc3RhY2stbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vcGFyc2VyLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9lcnJvci1yZXBvcnRpbmcvbWl4aW4tYmFzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3BhcnNlci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3V0aWxzL21lcmdlLW9wdGlvbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvc2NoZW1hLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL21lcmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL25vcm1hbGl6ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9pbmZvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL3R5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2RlZmluZWQtaW5mby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9jcmVhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3hsaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWxucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvYXJpYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vc3ZnLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXBhcnNlLXNlbGVjdG9yL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NwYWNlLXNlcGFyYXRlZC10b2tlbnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29tbWEtc2VwYXJhdGVkLXRva2Vucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0c2NyaXB0L2ZhY3RvcnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtZnJvbS1wYXJzZTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW5saW5lLXN0eWxlLXBhcnNlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS10by1vYmplY3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC10by1oeXBlcnNjcmlwdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy96d2l0Y2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLXBhcnNlNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1yYXcvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLWlzL2NvbnZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0LXBhcmVudHMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2thdGV4L2Rpc3Qva2F0ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JhaWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbWVzc2FnZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtZ2xvYmFscy9zcmMvZ2xvYmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MtZXM2L2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBsYWNlLWV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvd3JhcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1pcy1lbGVtZW50L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtZmluZC1hZnRlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8tdGV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUta2F0ZXgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXdoaXRlc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvc2libGluZ3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvZmlyc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvcGxhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvd2hpdGUtc3BhY2UtbGVmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb21pc3Npb24vb21pc3Npb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2Nsb3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL29wZW5pbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9hbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtZGVjaW1hbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1hbHBoYWJldGljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5naWZ5LWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi90ZXh0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2VsZW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2RvY3R5cGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2NvbW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL3Jhdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUtc3RyaW5naWZ5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5oZXJpdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdGF0ZS10b2dnbGUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbG9jYXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91bmVzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZS1lbnRpdGllcy9kZWNvZGUtZW50aXR5LmJyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFya2Rvd24tZXNjYXBlcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2Jsb2NrLWVsZW1lbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVmYXVsdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9zZXQtb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvbmV3bGluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibG9ja3F1b3RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9yZW1vdmUtaW5kZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWJsb2NrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9ub3JtYWxpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9mb290bm90ZS1kZWZpbml0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVmaW5pdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdvcmQtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZW1waGFzaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2NvZGUtaW5saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1jdXN0b20tYmxvY2tzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcHVueWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9iYXNlNjQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9pZWVlNzU0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci1lczYvaXNBcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1idWlsdGlucy9zcmMvZXM2L3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1pZnJhbWVzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi90b2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVcblxuZnVuY3Rpb24gdSh0eXBlLCBwcm9wcywgdmFsdWUpIHtcbiAgdmFyIG5vZGVcblxuICBpZiAoXG4gICAgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpICYmXG4gICAgKHR5cGVvZiBwcm9wcyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwcm9wcykpXG4gICkge1xuICAgIHZhbHVlID0gcHJvcHNcbiAgICBwcm9wcyA9IHt9XG4gIH1cblxuICBub2RlID0gYXNzaWduKHt0eXBlOiBTdHJpbmcodHlwZSl9LCBwcm9wcylcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gdmFsdWVcbiAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm9kZS52YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvc2l0aW9uID0gZXhwb3J0c1xuXG5wb3NpdGlvbi5zdGFydCA9IGZhY3RvcnkoJ3N0YXJ0JylcbnBvc2l0aW9uLmVuZCA9IGZhY3RvcnkoJ2VuZCcpXG5cbmZ1bmN0aW9uIGZhY3RvcnkodHlwZSkge1xuICBwb2ludC5kaXNwbGF5TmFtZSA9IHR5cGVcblxuICByZXR1cm4gcG9pbnRcblxuICBmdW5jdGlvbiBwb2ludChub2RlKSB7XG4gICAgdmFyIHBvaW50ID0gKG5vZGUgJiYgbm9kZS5wb3NpdGlvbiAmJiBub2RlLnBvc2l0aW9uW3R5cGVdKSB8fCB7fVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHBvaW50LmxpbmUgfHwgbnVsbCxcbiAgICAgIGNvbHVtbjogcG9pbnQuY29sdW1uIHx8IG51bGwsXG4gICAgICBvZmZzZXQ6IGlzTmFOKHBvaW50Lm9mZnNldCkgPyBudWxsIDogcG9pbnQub2Zmc2V0XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBnZW5lcmF0ZWRcblxuZnVuY3Rpb24gZ2VuZXJhdGVkKG5vZGUpIHtcbiAgdmFyIHBvc2l0aW9uID0gb3B0aW9uYWwob3B0aW9uYWwobm9kZSkucG9zaXRpb24pXG4gIHZhciBzdGFydCA9IG9wdGlvbmFsKHBvc2l0aW9uLnN0YXJ0KVxuICB2YXIgZW5kID0gb3B0aW9uYWwocG9zaXRpb24uZW5kKVxuXG4gIHJldHVybiAhc3RhcnQubGluZSB8fCAhc3RhcnQuY29sdW1uIHx8ICFlbmQubGluZSB8fCAhZW5kLmNvbHVtblxufVxuXG5mdW5jdGlvbiBvcHRpb25hbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDoge31cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSBnZXREZWZpbml0aW9uRmFjdG9yeVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gR2V0IGEgZGVmaW5pdGlvbiBpbiBgbm9kZWAgYnkgYGlkZW50aWZpZXJgLlxuZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbkZhY3Rvcnkobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZ2V0dGVyRmFjdG9yeShnYXRoZXIobm9kZSwgb3B0aW9ucykpXG59XG5cbi8vIEdhdGhlciBhbGwgZGVmaW5pdGlvbnMgaW4gYG5vZGVgXG5mdW5jdGlvbiBnYXRoZXIobm9kZSwgb3B0aW9ucykge1xuICB2YXIgY2FjaGUgPSB7fVxuXG4gIGlmICghbm9kZSB8fCAhbm9kZS50eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZGFzdC11dGlsLWRlZmluaXRpb25zIGV4cGVjdGVkIG5vZGUnKVxuICB9XG5cbiAgdmlzaXQobm9kZSwgJ2RlZmluaXRpb24nLCBvcHRpb25zICYmIG9wdGlvbnMuY29tbW9ubWFyayA/IGNvbW1vbm1hcmsgOiBub3JtYWwpXG5cbiAgcmV0dXJuIGNhY2hlXG5cbiAgZnVuY3Rpb24gY29tbW9ubWFyayhkZWZpbml0aW9uKSB7XG4gICAgdmFyIGlkID0gbm9ybWFsaXNlKGRlZmluaXRpb24uaWRlbnRpZmllcilcbiAgICBpZiAoIW93bi5jYWxsKGNhY2hlLCBpZCkpIHtcbiAgICAgIGNhY2hlW2lkXSA9IGRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWwoZGVmaW5pdGlvbikge1xuICAgIGNhY2hlW25vcm1hbGlzZShkZWZpbml0aW9uLmlkZW50aWZpZXIpXSA9IGRlZmluaXRpb25cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCBhIG5vZGUgZnJvbSB0aGUgZ2l2ZW4gZGVmaW5pdGlvbi1jYWNoZS5cbmZ1bmN0aW9uIGdldHRlckZhY3RvcnkoY2FjaGUpIHtcbiAgcmV0dXJuIGdldHRlclxuXG4gIC8vIEdldCBhIG5vZGUgZnJvbSB0aGUgYm91bmQgZGVmaW5pdGlvbi1jYWNoZS5cbiAgZnVuY3Rpb24gZ2V0dGVyKGlkZW50aWZpZXIpIHtcbiAgICB2YXIgaWQgPSBpZGVudGlmaWVyICYmIG5vcm1hbGlzZShpZGVudGlmaWVyKVxuICAgIHJldHVybiBpZCAmJiBvd24uY2FsbChjYWNoZSwgaWQpID8gY2FjaGVbaWRdIDogbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGlzZShpZGVudGlmaWVyKSB7XG4gIHJldHVybiBpZGVudGlmaWVyLnRvVXBwZXJDYXNlKClcbn1cbiIsIlxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gdHJpbTtcblxuZnVuY3Rpb24gdHJpbShzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cblxuZXhwb3J0cy5sZWZ0ID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzKi8sICcnKTtcbn07XG5cbmV4cG9ydHMucmlnaHQgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyokLywgJycpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcblxuZnVuY3Rpb24gYWxsKGgsIHBhcmVudCkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aFxuICB2YXIgdmFsdWVzID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdFxuICB2YXIgaGVhZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0ID0gb25lKGgsIG5vZGVzW2luZGV4XSwgcGFyZW50KVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKGluZGV4ICYmIG5vZGVzW2luZGV4IC0gMV0udHlwZSA9PT0gJ2JyZWFrJykge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdHJpbS5sZWZ0KHJlc3VsdC52YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGhlYWQgPSByZXN1bHQuY2hpbGRyZW4gJiYgcmVzdWx0LmNoaWxkcmVuWzBdXG5cbiAgICAgICAgaWYgKGhlYWQgJiYgaGVhZC52YWx1ZSkge1xuICAgICAgICAgIGhlYWQudmFsdWUgPSB0cmltLmxlZnQoaGVhZC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHJlc3VsdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWVzXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBUcmFuc2Zvcm0gYW4gdW5rbm93biBub2RlLlxuZnVuY3Rpb24gdW5rbm93bihoLCBub2RlKSB7XG4gIGlmICh0ZXh0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGguYXVnbWVudChub2RlLCB1KCd0ZXh0Jywgbm9kZS52YWx1ZSkpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnZGl2JywgYWxsKGgsIG5vZGUpKVxufVxuXG4vLyBWaXNpdCBhIG5vZGUuXG5mdW5jdGlvbiBvbmUoaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciB0eXBlID0gbm9kZSAmJiBub2RlLnR5cGVcbiAgdmFyIGZuID0gb3duLmNhbGwoaC5oYW5kbGVycywgdHlwZSkgPyBoLmhhbmRsZXJzW3R5cGVdIDogbnVsbFxuXG4gIC8vIEZhaWwgb24gbm9uLW5vZGVzLlxuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIGdvdCBgJyArIG5vZGUgKyAnYCcpXG4gIH1cblxuICByZXR1cm4gKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IGZuIDogdW5rbm93bikoaCwgbm9kZSwgcGFyZW50KVxufVxuXG4vLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgcmVuZGVyZXJlZCBhcyBhIHRleHQgbm9kZS5cbmZ1bmN0aW9uIHRleHQobm9kZSkge1xuICB2YXIgZGF0YSA9IG5vZGUuZGF0YSB8fCB7fVxuXG4gIGlmIChcbiAgICBvd24uY2FsbChkYXRhLCAnaE5hbWUnKSB8fFxuICAgIG93bi5jYWxsKGRhdGEsICdoUHJvcGVydGllcycpIHx8XG4gICAgb3duLmNhbGwoZGF0YSwgJ2hDaGlsZHJlbicpXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuICd2YWx1ZScgaW4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdGhlbWF0aWNCcmVha1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2hyJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuLy8gV3JhcCBgbm9kZXNgIHdpdGggbGluZSBmZWVkcyBiZXR3ZWVuIGVhY2ggZW50cnkuXG4vLyBPcHRpb25hbGx5IGFkZHMgbGluZSBmZWVkcyBhdCB0aGUgc3RhcnQgYW5kIGVuZC5cbmZ1bmN0aW9uIHdyYXAobm9kZXMsIGxvb3NlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmVzdWx0LnB1c2godSgndGV4dCcsICdcXG4nKSlcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGluZGV4KSB7XG4gICAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKG5vZGVzW2luZGV4XSlcbiAgfVxuXG4gIGlmIChsb29zZSAmJiBub2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdFxuXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4uL3dyYXAnKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGxpc3QoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgbmFtZSA9IG5vZGUub3JkZXJlZCA/ICdvbCcgOiAndWwnXG4gIHZhciBpdGVtc1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKHR5cGVvZiBub2RlLnN0YXJ0ID09PSAnbnVtYmVyJyAmJiBub2RlLnN0YXJ0ICE9PSAxKSB7XG4gICAgcHJvcHMuc3RhcnQgPSBub2RlLnN0YXJ0XG4gIH1cblxuICBpdGVtcyA9IGFsbChoLCBub2RlKVxuICBsZW5ndGggPSBpdGVtcy5sZW5ndGhcblxuICAvLyBMaWtlIEdpdEh1YiwgYWRkIGEgY2xhc3MgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIGl0ZW1zW2luZGV4XS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSAmJlxuICAgICAgaXRlbXNbaW5kZXhdLnByb3BlcnRpZXMuY2xhc3NOYW1lLmluZGV4T2YoJ3Rhc2stbGlzdC1pdGVtJykgIT09IC0xXG4gICAgKSB7XG4gICAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ2NvbnRhaW5zLXRhc2stbGlzdCddXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsIG5hbWUsIHByb3BzLCB3cmFwKGl0ZW1zLCB0cnVlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdlbmVyYXRlRm9vdG5vdGVzXG5cbnZhciB0aGVtYXRpY0JyZWFrID0gcmVxdWlyZSgnLi9oYW5kbGVycy90aGVtYXRpYy1icmVhaycpXG52YXIgbGlzdCA9IHJlcXVpcmUoJy4vaGFuZGxlcnMvbGlzdCcpXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4vd3JhcCcpXG5cbmZ1bmN0aW9uIGdlbmVyYXRlRm9vdG5vdGVzKGgpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBsZW5ndGggPSBmb290bm90ZU9yZGVyLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGlzdEl0ZW1zID0gW11cbiAgdmFyIGRlZlxuICB2YXIgYmFja1JlZmVyZW5jZVxuICB2YXIgY29udGVudFxuICB2YXIgdGFpbFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGVmID0gZm9vdG5vdGVCeUlkW2Zvb3Rub3RlT3JkZXJbaW5kZXhdLnRvVXBwZXJDYXNlKCldXG5cbiAgICBpZiAoIWRlZikge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb250ZW50ID0gZGVmLmNoaWxkcmVuLmNvbmNhdCgpXG4gICAgdGFpbCA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXVxuICAgIGJhY2tSZWZlcmVuY2UgPSB7XG4gICAgICB0eXBlOiAnbGluaycsXG4gICAgICB1cmw6ICcjZm5yZWYtJyArIGRlZi5pZGVudGlmaWVyLFxuICAgICAgZGF0YToge2hQcm9wZXJ0aWVzOiB7Y2xhc3NOYW1lOiBbJ2Zvb3Rub3RlLWJhY2tyZWYnXX19LFxuICAgICAgY2hpbGRyZW46IFt7dHlwZTogJ3RleHQnLCB2YWx1ZTogJ+KGqSd9XVxuICAgIH1cblxuICAgIGlmICghdGFpbCB8fCB0YWlsLnR5cGUgIT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICB0YWlsID0ge3R5cGU6ICdwYXJhZ3JhcGgnLCBjaGlsZHJlbjogW119XG4gICAgICBjb250ZW50LnB1c2godGFpbClcbiAgICB9XG5cbiAgICB0YWlsLmNoaWxkcmVuLnB1c2goYmFja1JlZmVyZW5jZSlcblxuICAgIGxpc3RJdGVtcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICBkYXRhOiB7aFByb3BlcnRpZXM6IHtpZDogJ2ZuLScgKyBkZWYuaWRlbnRpZmllcn19LFxuICAgICAgY2hpbGRyZW46IGNvbnRlbnQsXG4gICAgICBwb3NpdGlvbjogZGVmLnBvc2l0aW9uXG4gICAgfSlcbiAgfVxuXG4gIGlmIChsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG51bGwsXG4gICAgJ2RpdicsXG4gICAge2NsYXNzTmFtZTogWydmb290bm90ZXMnXX0sXG4gICAgd3JhcChcbiAgICAgIFtcbiAgICAgICAgdGhlbWF0aWNCcmVhayhoKSxcbiAgICAgICAgbGlzdChoLCB7dHlwZTogJ2xpc3QnLCBvcmRlcmVkOiB0cnVlLCBjaGlsZHJlbjogbGlzdEl0ZW1zfSlcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja3F1b3RlXG5cbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gYmxvY2txdW90ZShoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdibG9ja3F1b3RlJywgd3JhcChhbGwoaCwgbm9kZSksIHRydWUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhoLCBub2RlKSB7XG4gIHJldHVybiBbaChub2RlLCAnYnInKSwgdSgndGV4dCcsICdcXG4nKV1cbn1cbiIsIi8qIVxuICogcmVwZWF0LXN0cmluZyA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvcmVwZWF0LXN0cmluZz5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSwgSm9uIFNjaGxpbmtlcnQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFJlc3VsdHMgY2FjaGVcbiAqL1xuXG52YXIgcmVzID0gJyc7XG52YXIgY2FjaGU7XG5cbi8qKlxuICogRXhwb3NlIGByZXBlYXRgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXBlYXQ7XG5cbi8qKlxuICogUmVwZWF0IHRoZSBnaXZlbiBgc3RyaW5nYCB0aGUgc3BlY2lmaWVkIGBudW1iZXJgXG4gKiBvZiB0aW1lcy5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKTtcbiAqIHJlcGVhdCgnQScsIDUpO1xuICogLy89PiBBQUFBQVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJpbmdgIFRoZSBzdHJpbmcgdG8gcmVwZWF0XG4gKiBAcGFyYW0ge051bWJlcn0gYG51bWJlcmAgVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZ1xuICogQHJldHVybiB7U3RyaW5nfSBSZXBlYXRlZCBzdHJpbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcmVwZWF0KHN0ciwgbnVtKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gIH1cblxuICAvLyBjb3ZlciBjb21tb24sIHF1aWNrIHVzZSBjYXNlc1xuICBpZiAobnVtID09PSAxKSByZXR1cm4gc3RyO1xuICBpZiAobnVtID09PSAyKSByZXR1cm4gc3RyICsgc3RyO1xuXG4gIHZhciBtYXggPSBzdHIubGVuZ3RoICogbnVtO1xuICBpZiAoY2FjaGUgIT09IHN0ciB8fCB0eXBlb2YgY2FjaGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY2FjaGUgPSBzdHI7XG4gICAgcmVzID0gJyc7XG4gIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA+PSBtYXgpIHtcbiAgICByZXR1cm4gcmVzLnN1YnN0cigwLCBtYXgpO1xuICB9XG5cbiAgd2hpbGUgKG1heCA+IHJlcy5sZW5ndGggJiYgbnVtID4gMSkge1xuICAgIGlmIChudW0gJiAxKSB7XG4gICAgICByZXMgKz0gc3RyO1xuICAgIH1cblxuICAgIG51bSA+Pj0gMTtcbiAgICBzdHIgKz0gc3RyO1xuICB9XG5cbiAgcmVzICs9IHN0cjtcbiAgcmVzID0gcmVzLnN1YnN0cigwLCBtYXgpO1xuICByZXR1cm4gcmVzO1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGV0YWJcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxuXG52YXIgdGFiID0gMHgwOVxudmFyIGxpbmVGZWVkID0gMHgwYVxudmFyIGNhcnJpYWdlUmV0dXJuID0gMHgwZFxuXG4vLyBSZXBsYWNlIHRhYnMgd2l0aCBzcGFjZXMsIGJlaW5nIHNtYXJ0IGFib3V0IHdoaWNoIGNvbHVtbiB0aGUgdGFiIGlzIGF0IGFuZFxuLy8gd2hpY2ggc2l6ZSBzaG91bGQgYmUgdXNlZC5cbmZ1bmN0aW9uIGRldGFiKHZhbHVlLCBzaXplKSB7XG4gIHZhciBzdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gIHZhciBsZW5ndGggPSBzdHJpbmcgJiYgdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNvbHVtbiA9IC0xXG4gIHZhciB0YWJTaXplID0gc2l6ZSB8fCA0XG4gIHZhciByZXN1bHRzID0gW11cbiAgdmFyIGNvZGVcbiAgdmFyIGFkZFxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZXRhYiBleHBlY3RlZCBzdHJpbmcnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjb2RlID09PSB0YWIpIHtcbiAgICAgIGFkZCA9IHRhYlNpemUgLSAoKGNvbHVtbiArIDEpICUgdGFiU2l6ZSlcbiAgICAgIGNvbHVtbiArPSBhZGRcbiAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZS5zbGljZShzdGFydCwgaW5kZXgpICsgcmVwZWF0KCcgJywgYWRkKSlcbiAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBsaW5lRmVlZCB8fCBjb2RlID09PSBjYXJyaWFnZVJldHVybikge1xuICAgICAgY29sdW1uID0gLTFcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uKytcbiAgICB9XG4gIH1cblxuICByZXN1bHRzLnB1c2godmFsdWUuc2xpY2Uoc3RhcnQpKVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb2RlXG5cbnZhciBkZXRhYiA9IHJlcXVpcmUoJ2RldGFiJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGNvZGUoaCwgbm9kZSkge1xuICB2YXIgdmFsdWUgPSBub2RlLnZhbHVlID8gZGV0YWIobm9kZS52YWx1ZSArICdcXG4nKSA6ICcnXG4gIHZhciBsYW5nID0gbm9kZS5sYW5nICYmIG5vZGUubGFuZy5tYXRjaCgvXlteIFxcdF0rKD89WyBcXHRdfCQpLylcbiAgdmFyIHByb3BzID0ge31cblxuICBpZiAobGFuZykge1xuICAgIHByb3BzLmNsYXNzTmFtZSA9IFsnbGFuZ3VhZ2UtJyArIGxhbmddXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAncHJlJywgW2gobm9kZSwgJ2NvZGUnLCBwcm9wcywgW3UoJ3RleHQnLCB2YWx1ZSldKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpa2V0aHJvdWdoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2RlbCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGhhc2lzXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBlbXBoYXNpcyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdlbScsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlUmVmZXJlbmNlXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlT3JkZXIgPSBoLmZvb3Rub3RlT3JkZXJcbiAgdmFyIGlkZW50aWZpZXIgPSBTdHJpbmcobm9kZS5pZGVudGlmaWVyKVxuXG4gIGlmIChmb290bm90ZU9yZGVyLmluZGV4T2YoaWRlbnRpZmllcikgPT09IC0xKSB7XG4gICAgZm9vdG5vdGVPcmRlci5wdXNoKGlkZW50aWZpZXIpXG4gIH1cblxuICByZXR1cm4gaChub2RlLnBvc2l0aW9uLCAnc3VwJywge2lkOiAnZm5yZWYtJyArIGlkZW50aWZpZXJ9LCBbXG4gICAgaChub2RlLCAnYScsIHtocmVmOiAnI2ZuLScgKyBpZGVudGlmaWVyLCBjbGFzc05hbWU6IFsnZm9vdG5vdGUtcmVmJ119LCBbXG4gICAgICB1KCd0ZXh0Jywgbm9kZS5sYWJlbCB8fCBpZGVudGlmaWVyKVxuICAgIF0pXG4gIF0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZVxuXG52YXIgZm9vdG5vdGVSZWZlcmVuY2UgPSByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpXG5cbmZ1bmN0aW9uIGZvb3Rub3RlKGgsIG5vZGUpIHtcbiAgdmFyIGZvb3Rub3RlQnlJZCA9IGguZm9vdG5vdGVCeUlkXG4gIHZhciBmb290bm90ZU9yZGVyID0gaC5mb290bm90ZU9yZGVyXG4gIHZhciBpZGVudGlmaWVyID0gMVxuXG4gIHdoaWxlIChpZGVudGlmaWVyIGluIGZvb3Rub3RlQnlJZCkge1xuICAgIGlkZW50aWZpZXIrK1xuICB9XG5cbiAgaWRlbnRpZmllciA9IFN0cmluZyhpZGVudGlmaWVyKVxuXG4gIC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgYGlkZW50aWZpZXJgIGV4aXN0cyBpbiBgZm9vdG5vdGVPcmRlcmAsIGl04oCZcyBndWFyYW50ZWVkXG4gIC8vIHRvIG5vdCBleGlzdCBiZWNhdXNlIHdlIGp1c3QgZ2VuZXJhdGVkIGl0LlxuICBmb290bm90ZU9yZGVyLnB1c2goaWRlbnRpZmllcilcblxuICBmb290bm90ZUJ5SWRbaWRlbnRpZmllcl0gPSB7XG4gICAgdHlwZTogJ2Zvb3Rub3RlRGVmaW5pdGlvbicsXG4gICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICBjaGlsZHJlbjogW3t0eXBlOiAncGFyYWdyYXBoJywgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW59XSxcbiAgICBwb3NpdGlvbjogbm9kZS5wb3NpdGlvblxuICB9XG5cbiAgcmV0dXJuIGZvb3Rub3RlUmVmZXJlbmNlKGgsIHtcbiAgICB0eXBlOiAnZm9vdG5vdGVSZWZlcmVuY2UnLFxuICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgcG9zaXRpb246IG5vZGUucG9zaXRpb25cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhlYWRpbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGhlYWRpbmcoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnaCcgKyBub2RlLmRlcHRoLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBodG1sXG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbi8vIFJldHVybiBlaXRoZXIgYSBgcmF3YCBub2RlIGluIGRhbmdlcm91cyBtb2RlLCBvdGhlcndpc2Ugbm90aGluZy5cbmZ1bmN0aW9uIGh0bWwoaCwgbm9kZSkge1xuICByZXR1cm4gaC5kYW5nZXJvdXMgPyBoLmF1Z21lbnQobm9kZSwgdSgncmF3Jywgbm9kZS52YWx1ZSkpIDogbnVsbFxufVxuIiwiXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGVuY29kZUNhY2hlID0ge307XG5cblxuLy8gQ3JlYXRlIGEgbG9va3VwIGFycmF5IHdoZXJlIGFueXRoaW5nIGJ1dCBjaGFyYWN0ZXJzIGluIGBjaGFyc2Agc3RyaW5nXG4vLyBhbmQgYWxwaGFudW1lcmljIGNoYXJzIGlzIHBlcmNlbnQtZW5jb2RlZC5cbi8vXG5mdW5jdGlvbiBnZXRFbmNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZW5jb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG5cbiAgICBpZiAoL15bMC05YS16XSQvaS50ZXN0KGNoKSkge1xuICAgICAgLy8gYWx3YXlzIGFsbG93IHVuZW5jb2RlZCBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgY2FjaGUucHVzaChjaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlLnB1c2goJyUnICsgKCcwJyArIGkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC0yKSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGUubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZVtleGNsdWRlLmNoYXJDb2RlQXQoaSldID0gZXhjbHVkZVtpXTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn1cblxuXG4vLyBFbmNvZGUgdW5zYWZlIGNoYXJhY3RlcnMgd2l0aCBwZXJjZW50LWVuY29kaW5nLCBza2lwcGluZyBhbHJlYWR5XG4vLyBlbmNvZGVkIHNlcXVlbmNlcy5cbi8vXG4vLyAgLSBzdHJpbmcgICAgICAgLSBzdHJpbmcgdG8gZW5jb2RlXG4vLyAgLSBleGNsdWRlICAgICAgLSBsaXN0IG9mIGNoYXJhY3RlcnMgdG8gaWdub3JlIChpbiBhZGRpdGlvbiB0byBhLXpBLVowLTkpXG4vLyAgLSBrZWVwRXNjYXBlZCAgLSBkb24ndCBlbmNvZGUgJyUnIGluIGEgY29ycmVjdCBlc2NhcGUgc2VxdWVuY2UgKGRlZmF1bHQ6IHRydWUpXG4vL1xuZnVuY3Rpb24gZW5jb2RlKHN0cmluZywgZXhjbHVkZSwga2VlcEVzY2FwZWQpIHtcbiAgdmFyIGksIGwsIGNvZGUsIG5leHRDb2RlLCBjYWNoZSxcbiAgICAgIHJlc3VsdCA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBlbmNvZGUoc3RyaW5nLCBrZWVwRXNjYXBlZClcbiAgICBrZWVwRXNjYXBlZCAgPSBleGNsdWRlO1xuICAgIGV4Y2x1ZGUgPSBlbmNvZGUuZGVmYXVsdENoYXJzO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZWVwRXNjYXBlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBrZWVwRXNjYXBlZCA9IHRydWU7XG4gIH1cblxuICBjYWNoZSA9IGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBzdHJpbmcubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgaWYgKGtlZXBFc2NhcGVkICYmIGNvZGUgPT09IDB4MjUgLyogJSAqLyAmJiBpICsgMiA8IGwpIHtcbiAgICAgIGlmICgvXlswLTlhLWZdezJ9JC9pLnRlc3Qoc3RyaW5nLnNsaWNlKGkgKyAxLCBpICsgMykpKSB7XG4gICAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoaSwgaSArIDMpO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlIDwgMTI4KSB7XG4gICAgICByZXN1bHQgKz0gY2FjaGVbY29kZV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpIHtcbiAgICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REJGRiAmJiBpICsgMSA8IGwpIHtcbiAgICAgICAgbmV4dENvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICAgIGlmIChuZXh0Q29kZSA+PSAweERDMDAgJiYgbmV4dENvZGUgPD0gMHhERkZGKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0gKyBzdHJpbmdbaSArIDFdKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSAnJUVGJUJGJUJEJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc3VsdCArPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmVuY29kZS5kZWZhdWx0Q2hhcnMgICA9IFwiOy8/OkAmPSskLC1fLiF+KicoKSNcIjtcbmVuY29kZS5jb21wb25lbnRDaGFycyA9IFwiLV8uIX4qJygpXCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGU7XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSByZXZlcnRcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG5cbi8vIFJldHVybiB0aGUgY29udGVudCBvZiBhIHJlZmVyZW5jZSB3aXRob3V0IGRlZmluaXRpb24gYXMgTWFya2Rvd24uXG5mdW5jdGlvbiByZXZlcnQoaCwgbm9kZSkge1xuICB2YXIgc3VidHlwZSA9IG5vZGUucmVmZXJlbmNlVHlwZVxuICB2YXIgc3VmZml4ID0gJ10nXG4gIHZhciBjb250ZW50c1xuICB2YXIgaGVhZFxuICB2YXIgdGFpbFxuXG4gIGlmIChzdWJ0eXBlID09PSAnY29sbGFwc2VkJykge1xuICAgIHN1ZmZpeCArPSAnW10nXG4gIH0gZWxzZSBpZiAoc3VidHlwZSA9PT0gJ2Z1bGwnKSB7XG4gICAgc3VmZml4ICs9ICdbJyArIChub2RlLmxhYmVsIHx8IG5vZGUuaWRlbnRpZmllcikgKyAnXSdcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09ICdpbWFnZVJlZmVyZW5jZScpIHtcbiAgICByZXR1cm4gdSgndGV4dCcsICchWycgKyBub2RlLmFsdCArIHN1ZmZpeClcbiAgfVxuXG4gIGNvbnRlbnRzID0gYWxsKGgsIG5vZGUpXG4gIGhlYWQgPSBjb250ZW50c1swXVxuXG4gIGlmIChoZWFkICYmIGhlYWQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgaGVhZC52YWx1ZSA9ICdbJyArIGhlYWQudmFsdWVcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50cy51bnNoaWZ0KHUoJ3RleHQnLCAnWycpKVxuICB9XG5cbiAgdGFpbCA9IGNvbnRlbnRzW2NvbnRlbnRzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKHRhaWwgJiYgdGFpbC50eXBlID09PSAndGV4dCcpIHtcbiAgICB0YWlsLnZhbHVlICs9IHN1ZmZpeFxuICB9IGVsc2Uge1xuICAgIGNvbnRlbnRzLnB1c2godSgndGV4dCcsIHN1ZmZpeCkpXG4gIH1cblxuICByZXR1cm4gY29udGVudHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbGxhcHNlXG5cbi8vIGBjb2xsYXBzZSgnIFxcdFxcbmJhciBcXG5iYXpcXHQnKSAvLyAnIGJhciBiYXogJ2BcbmZ1bmN0aW9uIGNvbGxhcHNlKHZhbHVlKSB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnJlcGxhY2UoL1xccysvZywgJyAnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdEl0ZW1cblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlzdEl0ZW0oaCwgbm9kZSwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGhlYWQgPSBjaGlsZHJlblswXVxuICB2YXIgcmF3ID0gYWxsKGgsIG5vZGUpXG4gIHZhciBsb29zZSA9IHBhcmVudCA/IGxpc3RMb29zZShwYXJlbnQpIDogbGlzdEl0ZW1Mb29zZShub2RlKVxuICB2YXIgcHJvcHMgPSB7fVxuICB2YXIgcmVzdWx0XG4gIHZhciBjb250YWluZXJcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIGNoaWxkXG5cbiAgLy8gVGlnaHQgbGlzdHMgc2hvdWxkIG5vdCByZW5kZXIgYHBhcmFncmFwaGAgbm9kZXMgYXMgYHBgIGVsZW1lbnRzLlxuICBpZiAobG9vc2UpIHtcbiAgICByZXN1bHQgPSByYXdcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBbXVxuICAgIGxlbmd0aCA9IHJhdy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hpbGQgPSByYXdbaW5kZXhdXG5cbiAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAncCcpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjaGlsZC5jaGlsZHJlbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygbm9kZS5jaGVja2VkID09PSAnYm9vbGVhbicpIHtcbiAgICBpZiAobG9vc2UgJiYgKCFoZWFkIHx8IGhlYWQudHlwZSAhPT0gJ3BhcmFncmFwaCcpKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoKG51bGwsICdwJywgW10pKVxuICAgIH1cblxuICAgIGNvbnRhaW5lciA9IGxvb3NlID8gcmVzdWx0WzBdLmNoaWxkcmVuIDogcmVzdWx0XG5cbiAgICBpZiAoY29udGFpbmVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29udGFpbmVyLnVuc2hpZnQodSgndGV4dCcsICcgJykpXG4gICAgfVxuXG4gICAgY29udGFpbmVyLnVuc2hpZnQoXG4gICAgICBoKG51bGwsICdpbnB1dCcsIHtcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgY2hlY2tlZDogbm9kZS5jaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyBBY2NvcmRpbmcgdG8gZ2l0aHViLW1hcmtkb3duLWNzcywgdGhpcyBjbGFzcyBoaWRlcyBidWxsZXQuXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9naXRodWItbWFya2Rvd24tY3NzPi5cbiAgICBwcm9wcy5jbGFzc05hbWUgPSBbJ3Rhc2stbGlzdC1pdGVtJ11cbiAgfVxuXG4gIGlmIChsb29zZSAmJiByZXN1bHQubGVuZ3RoICE9PSAwKSB7XG4gICAgcmVzdWx0ID0gd3JhcChyZXN1bHQsIHRydWUpXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnbGknLCBwcm9wcywgcmVzdWx0KVxufVxuXG5mdW5jdGlvbiBsaXN0TG9vc2Uobm9kZSkge1xuICB2YXIgbG9vc2UgPSBub2RlLnNwcmVhZFxuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcblxuICB3aGlsZSAoIWxvb3NlICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBsb29zZSA9IGxpc3RJdGVtTG9vc2UoY2hpbGRyZW5baW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGxvb3NlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtTG9vc2Uobm9kZSkge1xuICB2YXIgc3ByZWFkID0gbm9kZS5zcHJlYWRcblxuICByZXR1cm4gc3ByZWFkID09PSB1bmRlZmluZWQgfHwgc3ByZWFkID09PSBudWxsXG4gICAgPyBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDFcbiAgICA6IHNwcmVhZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbUxpbmVzXG5cbnZhciB3cyA9IC9bIFxcdF0qXFxuK1sgXFx0XSovZ1xudmFyIG5ld2xpbmUgPSAnXFxuJ1xuXG5mdW5jdGlvbiB0cmltTGluZXModmFsdWUpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSh3cywgbmV3bGluZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYmxvY2txdW90ZTogcmVxdWlyZSgnLi9ibG9ja3F1b3RlJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL2JyZWFrJyksXG4gIGNvZGU6IHJlcXVpcmUoJy4vY29kZScpLFxuICBkZWxldGU6IHJlcXVpcmUoJy4vZGVsZXRlJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL2VtcGhhc2lzJyksXG4gIGZvb3Rub3RlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2Zvb3Rub3RlLXJlZmVyZW5jZScpLFxuICBmb290bm90ZTogcmVxdWlyZSgnLi9mb290bm90ZScpLFxuICBoZWFkaW5nOiByZXF1aXJlKCcuL2hlYWRpbmcnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi9odG1sJyksXG4gIGltYWdlUmVmZXJlbmNlOiByZXF1aXJlKCcuL2ltYWdlLXJlZmVyZW5jZScpLFxuICBpbWFnZTogcmVxdWlyZSgnLi9pbWFnZScpLFxuICBpbmxpbmVDb2RlOiByZXF1aXJlKCcuL2lubGluZS1jb2RlJyksXG4gIGxpbmtSZWZlcmVuY2U6IHJlcXVpcmUoJy4vbGluay1yZWZlcmVuY2UnKSxcbiAgbGluazogcmVxdWlyZSgnLi9saW5rJyksXG4gIGxpc3RJdGVtOiByZXF1aXJlKCcuL2xpc3QtaXRlbScpLFxuICBsaXN0OiByZXF1aXJlKCcuL2xpc3QnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3BhcmFncmFwaCcpLFxuICByb290OiByZXF1aXJlKCcuL3Jvb3QnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3N0cm9uZycpLFxuICB0YWJsZTogcmVxdWlyZSgnLi90YWJsZScpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgdGhlbWF0aWNCcmVhazogcmVxdWlyZSgnLi90aGVtYXRpYy1icmVhaycpLFxuICB0b21sOiBpZ25vcmUsXG4gIHlhbWw6IGlnbm9yZSxcbiAgZGVmaW5pdGlvbjogaWdub3JlLFxuICBmb290bm90ZURlZmluaXRpb246IGlnbm9yZVxufVxuXG4vLyBSZXR1cm4gbm90aGluZyBmb3Igbm9kZXMgdGhhdCBhcmUgaWdub3JlZC5cbmZ1bmN0aW9uIGlnbm9yZSgpIHtcbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGltYWdlUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG5cbmZ1bmN0aW9uIGltYWdlUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGRlZiA9IGguZGVmaW5pdGlvbihub2RlLmlkZW50aWZpZXIpXG4gIHZhciBwcm9wc1xuXG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuIHJldmVydChoLCBub2RlKVxuICB9XG5cbiAgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUoZGVmLnVybCB8fCAnJyksIGFsdDogbm9kZS5hbHR9XG5cbiAgaWYgKGRlZi50aXRsZSAhPT0gbnVsbCAmJiBkZWYudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gZGVmLnRpdGxlXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnaW1nJywgcHJvcHMpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpXG5cbm1vZHVsZS5leHBvcnRzID0gaW1hZ2VcblxuZnVuY3Rpb24gaW1hZ2UoaCwgbm9kZSkge1xuICB2YXIgcHJvcHMgPSB7c3JjOiBub3JtYWxpemUobm9kZS51cmwpLCBhbHQ6IG5vZGUuYWx0fVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2ltZycsIHByb3BzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZVxuXG52YXIgY29sbGFwc2UgPSByZXF1aXJlKCdjb2xsYXBzZS13aGl0ZS1zcGFjZScpXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2NvZGUnLCBbdSgndGV4dCcsIGNvbGxhcHNlKG5vZGUudmFsdWUpKV0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsaW5rUmVmZXJlbmNlXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIHJldmVydCA9IHJlcXVpcmUoJy4uL3JldmVydCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlua1JlZmVyZW5jZShoLCBub2RlKSB7XG4gIHZhciBkZWYgPSBoLmRlZmluaXRpb24obm9kZS5pZGVudGlmaWVyKVxuICB2YXIgcHJvcHNcblxuICBpZiAoIWRlZikge1xuICAgIHJldHVybiByZXZlcnQoaCwgbm9kZSlcbiAgfVxuXG4gIHByb3BzID0ge2hyZWY6IG5vcm1hbGl6ZShkZWYudXJsIHx8ICcnKX1cblxuICBpZiAoZGVmLnRpdGxlICE9PSBudWxsICYmIGRlZi50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBkZWYudGl0bGVcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdhJywgcHJvcHMsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnbWR1cmwvZW5jb2RlJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcblxuZnVuY3Rpb24gbGluayhoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHtocmVmOiBub3JtYWxpemUobm9kZS51cmwpfVxuXG4gIGlmIChub2RlLnRpdGxlICE9PSBudWxsICYmIG5vZGUudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLnRpdGxlID0gbm9kZS50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2EnLCBwcm9wcywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBwYXJhZ3JhcGgoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAncCcsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3RcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gcm9vdChoLCBub2RlKSB7XG4gIHJldHVybiBoLmF1Z21lbnQobm9kZSwgdSgncm9vdCcsIHdyYXAoYWxsKGgsIG5vZGUpKSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIHN0cm9uZyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdzdHJvbmcnLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgcG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gdGFibGUoaCwgbm9kZSkge1xuICB2YXIgcm93cyA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGluZGV4ID0gcm93cy5sZW5ndGhcbiAgdmFyIGFsaWduID0gbm9kZS5hbGlnblxuICB2YXIgYWxpZ25MZW5ndGggPSBhbGlnbi5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBwb3NcbiAgdmFyIHJvd1xuICB2YXIgb3V0XG4gIHZhciBuYW1lXG4gIHZhciBjZWxsXG5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICByb3cgPSByb3dzW2luZGV4XS5jaGlsZHJlblxuICAgIG5hbWUgPSBpbmRleCA9PT0gMCA/ICd0aCcgOiAndGQnXG4gICAgcG9zID0gYWxpZ25MZW5ndGhcbiAgICBvdXQgPSBbXVxuXG4gICAgd2hpbGUgKHBvcy0tKSB7XG4gICAgICBjZWxsID0gcm93W3Bvc11cbiAgICAgIG91dFtwb3NdID0gaChjZWxsLCBuYW1lLCB7YWxpZ246IGFsaWduW3Bvc119LCBjZWxsID8gYWxsKGgsIGNlbGwpIDogW10pXG4gICAgfVxuXG4gICAgcmVzdWx0W2luZGV4XSA9IGgocm93c1tpbmRleF0sICd0cicsIHdyYXAob3V0LCB0cnVlKSlcbiAgfVxuXG4gIHJldHVybiBoKFxuICAgIG5vZGUsXG4gICAgJ3RhYmxlJyxcbiAgICB3cmFwKFxuICAgICAgW1xuICAgICAgICBoKHJlc3VsdFswXS5wb3NpdGlvbiwgJ3RoZWFkJywgd3JhcChbcmVzdWx0WzBdXSwgdHJ1ZSkpLFxuICAgICAgICBoKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChyZXN1bHRbMV0pLFxuICAgICAgICAgICAgZW5kOiBwb3NpdGlvbi5lbmQocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgICd0Ym9keScsXG4gICAgICAgICAgd3JhcChyZXN1bHQuc2xpY2UoMSksIHRydWUpXG4gICAgICAgIClcbiAgICAgIF0sXG4gICAgICB0cnVlXG4gICAgKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0XG5cbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdHJpbUxpbmVzID0gcmVxdWlyZSgndHJpbS1saW5lcycpXG5cbmZ1bmN0aW9uIHRleHQoaCwgbm9kZSkge1xuICByZXR1cm4gaC5hdWdtZW50KG5vZGUsIHUoJ3RleHQnLCB0cmltTGluZXMobm9kZS52YWx1ZSkpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdG9IYXN0XG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKVxudmFyIGdlbmVyYXRlZCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtZ2VuZXJhdGVkJylcbnZhciBkZWZpbml0aW9ucyA9IHJlcXVpcmUoJ21kYXN0LXV0aWwtZGVmaW5pdGlvbnMnKVxudmFyIG9uZSA9IHJlcXVpcmUoJy4vb25lJylcbnZhciBmb290ZXIgPSByZXF1aXJlKCcuL2Zvb3RlcicpXG52YXIgaGFuZGxlcnMgPSByZXF1aXJlKCcuL2hhbmRsZXJzJylcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIEZhY3RvcnkgdG8gdHJhbnNmb3JtLlxuZnVuY3Rpb24gZmFjdG9yeSh0cmVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGRhbmdlcm91cyA9IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTFxuICB2YXIgZm9vdG5vdGVCeUlkID0ge31cblxuICBoLmRhbmdlcm91cyA9IGRhbmdlcm91c1xuICBoLmRlZmluaXRpb24gPSBkZWZpbml0aW9ucyh0cmVlLCBzZXR0aW5ncylcbiAgaC5mb290bm90ZUJ5SWQgPSBmb290bm90ZUJ5SWRcbiAgaC5mb290bm90ZU9yZGVyID0gW11cbiAgaC5hdWdtZW50ID0gYXVnbWVudFxuICBoLmhhbmRsZXJzID0geHRlbmQoaGFuZGxlcnMsIHNldHRpbmdzLmhhbmRsZXJzIHx8IHt9KVxuXG4gIHZpc2l0KHRyZWUsICdmb290bm90ZURlZmluaXRpb24nLCBvbmZvb3Rub3RlZGVmaW5pdGlvbilcblxuICByZXR1cm4gaFxuXG4gIC8vIEZpbmFsaXNlIHRoZSBjcmVhdGVkIGByaWdodGAsIGEgaGFzdCBub2RlLCBmcm9tIGBsZWZ0YCwgYW4gbWRhc3Qgbm9kZS5cbiAgZnVuY3Rpb24gYXVnbWVudChsZWZ0LCByaWdodCkge1xuICAgIHZhciBkYXRhXG4gICAgdmFyIGN0eFxuXG4gICAgLy8gSGFuZGxlIGBkYXRhLmhOYW1lYCwgYGRhdGEuaFByb3BlcnRpZXMsIGBkYXRhLmhDaGlsZHJlbmAuXG4gICAgaWYgKGxlZnQgJiYgJ2RhdGEnIGluIGxlZnQpIHtcbiAgICAgIGRhdGEgPSBsZWZ0LmRhdGFcblxuICAgICAgaWYgKHJpZ2h0LnR5cGUgPT09ICdlbGVtZW50JyAmJiBkYXRhLmhOYW1lKSB7XG4gICAgICAgIHJpZ2h0LnRhZ05hbWUgPSBkYXRhLmhOYW1lXG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodC50eXBlID09PSAnZWxlbWVudCcgJiYgZGF0YS5oUHJvcGVydGllcykge1xuICAgICAgICByaWdodC5wcm9wZXJ0aWVzID0geHRlbmQocmlnaHQucHJvcGVydGllcywgZGF0YS5oUHJvcGVydGllcylcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LmNoaWxkcmVuICYmIGRhdGEuaENoaWxkcmVuKSB7XG4gICAgICAgIHJpZ2h0LmNoaWxkcmVuID0gZGF0YS5oQ2hpbGRyZW5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjdHggPSBsZWZ0ICYmIGxlZnQucG9zaXRpb24gPyBsZWZ0IDoge3Bvc2l0aW9uOiBsZWZ0fVxuXG4gICAgaWYgKCFnZW5lcmF0ZWQoY3R4KSkge1xuICAgICAgcmlnaHQucG9zaXRpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBwb3NpdGlvbi5zdGFydChjdHgpLFxuICAgICAgICBlbmQ6IHBvc2l0aW9uLmVuZChjdHgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJpZ2h0XG4gIH1cblxuICAvLyBDcmVhdGUgYW4gZWxlbWVudCBmb3IgYG5vZGVgLlxuICBmdW5jdGlvbiBoKG5vZGUsIHRhZ05hbWUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIGlmIChcbiAgICAgIChjaGlsZHJlbiA9PT0gdW5kZWZpbmVkIHx8IGNoaWxkcmVuID09PSBudWxsKSAmJlxuICAgICAgdHlwZW9mIHByb3BzID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2xlbmd0aCcgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNoaWxkcmVuID0gcHJvcHNcbiAgICAgIHByb3BzID0ge31cbiAgICB9XG5cbiAgICByZXR1cm4gYXVnbWVudChub2RlLCB7XG4gICAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgICB0YWdOYW1lOiB0YWdOYW1lLFxuICAgICAgcHJvcGVydGllczogcHJvcHMgfHwge30sXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgW11cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25mb290bm90ZWRlZmluaXRpb24oZGVmaW5pdGlvbikge1xuICAgIHZhciBpZCA9IFN0cmluZyhkZWZpbml0aW9uLmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKClcblxuICAgIC8vIE1pbWljayBDTSBiZWhhdmlvciBvZiBsaW5rIGRlZmluaXRpb25zLlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9zeW50YXgtdHJlZS9tZGFzdC11dGlsLWRlZmluaXRpb25zL2Jsb2IvOGQ0OGU1Ny9pbmRleC5qcyNMMjY+LlxuICAgIGlmICghb3duLmNhbGwoZm9vdG5vdGVCeUlkLCBpZCkpIHtcbiAgICAgIGZvb3Rub3RlQnlJZFtpZF0gPSBkZWZpbml0aW9uXG4gICAgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybSBgdHJlZWAsIHdoaWNoIGlzIGFuIG1kYXN0IG5vZGUsIHRvIGEgaGFzdCBub2RlLlxuZnVuY3Rpb24gdG9IYXN0KHRyZWUsIG9wdGlvbnMpIHtcbiAgdmFyIGggPSBmYWN0b3J5KHRyZWUsIG9wdGlvbnMpXG4gIHZhciBub2RlID0gb25lKGgsIHRyZWUpXG4gIHZhciBmb290ID0gZm9vdGVyKGgpXG5cbiAgaWYgKGZvb3QpIHtcbiAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5jb25jYXQodSgndGV4dCcsICdcXG4nKSwgZm9vdClcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWInKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZGFzdDJoYXN0ID0gcmVxdWlyZSgnbWRhc3QtdXRpbC10by1oYXN0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1hcmsycmVoeXBlXG5cbi8vIEF0dGFjaGVyLlxuLy8gSWYgYSBkZXN0aW5hdGlvbiBpcyBnaXZlbiwgcnVucyB0aGUgZGVzdGluYXRpb24gd2l0aCB0aGUgbmV3IGhhc3QgdHJlZVxuLy8gKGJyaWRnZSBtb2RlKS5cbi8vIFdpdGhvdXQgZGVzdGluYXRpb24sIHJldHVybnMgdGhlIHRyZWU6IGZ1cnRoZXIgcGx1Z2lucyBydW4gb24gdGhhdCB0cmVlXG4vLyAobXV0YXRlIG1vZGUpLlxuZnVuY3Rpb24gcmVtYXJrMnJlaHlwZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICBpZiAoZGVzdGluYXRpb24gJiYgIWRlc3RpbmF0aW9uLnByb2Nlc3MpIHtcbiAgICBvcHRpb25zID0gZGVzdGluYXRpb25cbiAgICBkZXN0aW5hdGlvbiA9IG51bGxcbiAgfVxuXG4gIHJldHVybiBkZXN0aW5hdGlvbiA/IGJyaWRnZShkZXN0aW5hdGlvbiwgb3B0aW9ucykgOiBtdXRhdGUob3B0aW9ucylcbn1cblxuLy8gQnJpZGdlIG1vZGUuXG4vLyBSdW5zIHRoZSBkZXN0aW5hdGlvbiB3aXRoIHRoZSBuZXcgaGFzdCB0cmVlLlxuZnVuY3Rpb24gYnJpZGdlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUsIGZpbGUsIG5leHQpIHtcbiAgICBkZXN0aW5hdGlvbi5ydW4obWRhc3QyaGFzdChub2RlLCBvcHRpb25zKSwgZmlsZSwgZG9uZSlcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBuZXh0KGVycilcbiAgICB9XG4gIH1cbn1cblxuLy8gTXV0YXRlLW1vZGUuXG4vLyBGdXJ0aGVyIHRyYW5zZm9ybWVycyBydW4gb24gdGhlIGhhc3QgdHJlZS5cbmZ1bmN0aW9uIG11dGF0ZShvcHRpb25zKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lclxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKG5vZGUpIHtcbiAgICByZXR1cm4gbWRhc3QyaGFzdChub2RlLCBvcHRpb25zKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3aGl0ZXNwYWNlXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHMvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpO1xuXG52YXIgQ19QSVBFID0gJ3wnO1xudmFyIERPVUJMRSA9ICd8fCc7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKERPVUJMRSwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIGlubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgdmFsdWUuc3Vic3RyKDAsIDIpICE9PSBET1VCTEUgfHwgdmFsdWUuc3Vic3RyKDAsIDQpID09PSBET1VCTEUgKyBET1VCTEUgfHwgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoMikpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNoYXJhY3RlciA9ICcnO1xuICAgIHZhciBwcmV2aW91cyA9ICcnO1xuICAgIHZhciBwcmVjZWRpbmcgPSAnJztcbiAgICB2YXIgc3VidmFsdWUgPSAnJztcbiAgICB2YXIgaW5kZXggPSAxO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IENfUElQRSAmJiBwcmV2aW91cyA9PT0gQ19QSVBFICYmICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBlYXQoRE9VQkxFICsgc3VidmFsdWUgKyBET1VCTEUpKHtcbiAgICAgICAgICB0eXBlOiAna2JkJyxcbiAgICAgICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoTmFtZTogJ2tiZCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZSArPSBwcmV2aW91cztcbiAgICAgIHByZWNlZGluZyA9IHByZXZpb3VzO1xuICAgICAgcHJldmlvdXMgPSBjaGFyYWN0ZXI7XG4gICAgfVxuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMua2JkID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ2tiZCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5rYmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwifHxcIi5jb25jYXQodGhpcy5hbGwobm9kZSkuam9pbignJyksIFwifHxcIik7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBsdWdpbjsiLCJleHBvcnRzLmlzUmVtYXJrUGFyc2VyID0gaXNSZW1hcmtQYXJzZXJcbmV4cG9ydHMuaXNSZW1hcmtDb21waWxlciA9IGlzUmVtYXJrQ29tcGlsZXJcblxuZnVuY3Rpb24gaXNSZW1hcmtQYXJzZXIocGFyc2VyKSB7XG4gIHJldHVybiBCb29sZWFuKHBhcnNlciAmJiBwYXJzZXIucHJvdG90eXBlICYmIHBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzKVxufVxuXG5mdW5jdGlvbiBpc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIHJldHVybiBCb29sZWFuKGNvbXBpbGVyICYmIGNvbXBpbGVyLnByb3RvdHlwZSAmJiBjb21waWxlci5wcm90b3R5cGUudmlzaXRvcnMpXG59XG4iLCJ2YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gbWF0aElubGluZVxuXG5jb25zdCB0YWIgPSA5IC8vICdcXHQnXG5jb25zdCBzcGFjZSA9IDMyIC8vICcgJ1xuY29uc3QgZG9sbGFyU2lnbiA9IDM2IC8vICckJ1xuY29uc3QgZGlnaXQwID0gNDggLy8gJzAnXG5jb25zdCBkaWdpdDkgPSA1NyAvLyAnOSdcbmNvbnN0IGJhY2tzbGFzaCA9IDkyIC8vICdcXFxcJ1xuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1pbmxpbmUnXVxuY29uc3QgbWF0aERpc3BsYXkgPSAnbWF0aC1kaXNwbGF5J1xuXG5mdW5jdGlvbiBtYXRoSW5saW5lKG9wdGlvbnMpIHtcbiAgY29uc3QgcGFyc2VyID0gdGhpcy5QYXJzZXJcbiAgY29uc3QgY29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyXG5cbiAgaWYgKHV0aWwuaXNSZW1hcmtQYXJzZXIocGFyc2VyKSkge1xuICAgIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAodXRpbC5pc1JlbWFya0NvbXBpbGVyKGNvbXBpbGVyKSkge1xuICAgIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyLCBvcHRpb25zKVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFBhcnNlcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgY29uc3QgcHJvdG8gPSBwYXJzZXIucHJvdG90eXBlXG4gIGNvbnN0IGlubGluZU1ldGhvZHMgPSBwcm90by5pbmxpbmVNZXRob2RzXG5cbiAgbWF0aElubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvclxuXG4gIHByb3RvLmlubGluZVRva2VuaXplcnMubWF0aCA9IG1hdGhJbmxpbmVUb2tlbml6ZXJcblxuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3RleHQnKSwgMCwgJ21hdGgnKVxuXG4gIGZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCckJywgZnJvbUluZGV4KVxuICB9XG5cbiAgZnVuY3Rpb24gbWF0aElubGluZVRva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgICBsZXQgZG91YmxlID0gZmFsc2VcbiAgICBsZXQgZXNjYXBlZCA9IGZhbHNlXG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBwcmV2XG4gICAgbGV0IGNvZGVcbiAgICBsZXQgbmV4dFxuICAgIGxldCBjb250ZW50U3RhcnRcbiAgICBsZXQgY29udGVudEVuZFxuICAgIGxldCB2YWx1ZUVuZFxuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGJhY2tzbGFzaCkge1xuICAgICAgZXNjYXBlZCA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGRvbGxhclNpZ24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcblxuICAgIC8vIFN1cHBvcnQgZXNjYXBlZCBkb2xsYXJzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgaW5kZXgpKSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogJyQnfSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGRvdWJsZSA9IHRydWVcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIC8vIE9wZW5pbmcgZmVuY2UgY2Fubm90IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIuXG4gICAgaWYgKG5leHQgPT09IHNwYWNlIHx8IG5leHQgPT09IHRhYikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29udGVudFN0YXJ0ID0gaW5kZXhcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29kZSA9IG5leHRcbiAgICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKGNvZGUgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgICAgcHJldiA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggLSAxKVxuXG4gICAgICAgIC8vIENsb3NpbmcgZmVuY2UgY2Fubm90IGJlIHByZWNlZGVkIGJ5IGEgc3BhY2Ugb3IgYSB0YWIsIG9yIGZvbGxvd2VkIGJ5XG4gICAgICAgIC8vIGEgZGlnaXQuXG4gICAgICAgIC8vIElmIGEgZG91YmxlIG1hcmtlciB3YXMgdXNlZCB0byBvcGVuLCB0aGUgY2xvc2luZyBmZW5jZSBtdXN0IGNvbnNpc3RcbiAgICAgICAgLy8gb2YgdHdvIGRvbGxhcnMgYXMgd2VsbC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgIT09IHNwYWNlICYmXG4gICAgICAgICAgcHJldiAhPT0gdGFiICYmXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgICAgIChuZXh0ICE9PSBuZXh0IHx8IG5leHQgPCBkaWdpdDAgfHwgbmV4dCA+IGRpZ2l0OSkgJiZcbiAgICAgICAgICAoIWRvdWJsZSB8fCBuZXh0ID09PSBkb2xsYXJTaWduKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZW50RW5kID0gaW5kZXggLSAxXG5cbiAgICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgICBpZiAoZG91YmxlKSB7XG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWVFbmQgPSBpbmRleFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgIGluZGV4KytcbiAgICAgICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQgKyAxKVxuXG4gICAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCB2YWx1ZUVuZCkpKHtcbiAgICAgIHR5cGU6ICdpbmxpbmVNYXRoJyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ3NwYW4nLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdChcbiAgICAgICAgICAgIGRvdWJsZSAmJiBvcHRpb25zLmlubGluZU1hdGhEb3VibGUgPyBbbWF0aERpc3BsYXldIDogW11cbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhDaGlsZHJlbjogW3t0eXBlOiAndGV4dCcsIHZhbHVlOiBjb250ZW50fV1cbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaENvbXBpbGVyKGNvbXBpbGVyKSB7XG4gIGNvbnN0IHByb3RvID0gY29tcGlsZXIucHJvdG90eXBlXG5cbiAgcHJvdG8udmlzaXRvcnMuaW5saW5lTWF0aCA9IGNvbXBpbGVJbmxpbmVNYXRoXG5cbiAgZnVuY3Rpb24gY29tcGlsZUlubGluZU1hdGgobm9kZSkge1xuICAgIGxldCBmZW5jZSA9ICckJ1xuICAgIGNvbnN0IGNsYXNzZXMgPVxuICAgICAgKG5vZGUuZGF0YSAmJiBub2RlLmRhdGEuaFByb3BlcnRpZXMgJiYgbm9kZS5kYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSkgfHxcbiAgICAgIFtdXG5cbiAgICBpZiAoY2xhc3Nlcy5pbmNsdWRlcyhtYXRoRGlzcGxheSkpIHtcbiAgICAgIGZlbmNlID0gJyQkJ1xuICAgIH1cblxuICAgIHJldHVybiBmZW5jZSArIG5vZGUudmFsdWUgKyBmZW5jZVxuICB9XG59XG4iLCJjb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoQmxvY2tcblxuY29uc3QgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbmNvbnN0IHNwYWNlID0gMzIgLy8gJyAnXG5jb25zdCBkb2xsYXJTaWduID0gMzYgLy8gJyQnXG5cbmNvbnN0IGxpbmVGZWVkQ2hhciA9ICdcXG4nXG5jb25zdCBkb2xsYXJTaWduQ2hhciA9ICckJ1xuXG5jb25zdCBtaW5GZW5jZUNvdW50ID0gMlxuXG5jb25zdCBjbGFzc0xpc3QgPSBbJ21hdGgnLCAnbWF0aC1kaXNwbGF5J11cblxuZnVuY3Rpb24gbWF0aEJsb2NrKCkge1xuICBjb25zdCBwYXJzZXIgPSB0aGlzLlBhcnNlclxuICBjb25zdCBjb21waWxlciA9IHRoaXMuQ29tcGlsZXJcblxuICBpZiAodXRpbC5pc1JlbWFya1BhcnNlcihwYXJzZXIpKSB7XG4gICAgYXR0YWNoUGFyc2VyKHBhcnNlcilcbiAgfVxuXG4gIGlmICh1dGlsLmlzUmVtYXJrQ29tcGlsZXIoY29tcGlsZXIpKSB7XG4gICAgYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoUGFyc2VyKHBhcnNlcikge1xuICBjb25zdCBwcm90byA9IHBhcnNlci5wcm90b3R5cGVcbiAgY29uc3QgYmxvY2tNZXRob2RzID0gcHJvdG8uYmxvY2tNZXRob2RzXG4gIGNvbnN0IGludGVycnVwdFBhcmFncmFwaCA9IHByb3RvLmludGVycnVwdFBhcmFncmFwaFxuICBjb25zdCBpbnRlcnJ1cHRMaXN0ID0gcHJvdG8uaW50ZXJydXB0TGlzdFxuICBjb25zdCBpbnRlcnJ1cHRCbG9ja3F1b3RlID0gcHJvdG8uaW50ZXJydXB0QmxvY2txdW90ZVxuXG4gIHByb3RvLmJsb2NrVG9rZW5pemVycy5tYXRoID0gbWF0aEJsb2NrVG9rZW5pemVyXG5cbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ21hdGgnKVxuXG4gIC8vIEluamVjdCBtYXRoIHRvIGludGVycnVwdCBydWxlc1xuICBpbnRlcnJ1cHRQYXJhZ3JhcGguc3BsaWNlKGludGVycnVwdFBhcmFncmFwaC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbXG4gICAgJ21hdGgnXG4gIF0pXG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydtYXRoJ10pXG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgW1xuICAgICdtYXRoJ1xuICBdKVxuXG4gIGZ1bmN0aW9uIG1hdGhCbG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gMFxuICAgIGxldCBjb2RlXG4gICAgbGV0IGNvbnRlbnRcbiAgICBsZXQgbGluZUVuZFxuICAgIGxldCBsaW5lSW5kZXhcbiAgICBsZXQgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZVxuICAgIGxldCBvcGVuaW5nRmVuY2VTaXplXG4gICAgbGV0IG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydFxuICAgIGxldCBjbG9zaW5nRmVuY2VcbiAgICBsZXQgY2xvc2luZ0ZlbmNlU2l6ZVxuICAgIGxldCBsaW5lQ29udGVudFN0YXJ0XG4gICAgbGV0IGxpbmVDb250ZW50RW5kXG5cbiAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgb3BlbmluZ0ZlbmNlSW5kZW50U2l6ZSA9IGluZGV4XG5cbiAgICAvLyBTa2lwIHRoZSBmZW5jZS5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IGRvbGxhclNpZ24pIHtcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBvcGVuaW5nRmVuY2VTaXplID0gaW5kZXggLSBvcGVuaW5nRmVuY2VJbmRlbnRTaXplXG5cbiAgICAvLyBFeGl0IGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggb2YgYSBmZW5jZS5cbiAgICBpZiAob3BlbmluZ0ZlbmNlU2l6ZSA8IG1pbkZlbmNlQ291bnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNraXAgc3BhY2luZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCA9IGluZGV4XG5cbiAgICAvLyBFYXQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmVuY2UuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgLy8gV2UgZG9u4oCZdCBhbGxvdyBkb2xsYXIgc2lnbnMgaGVyZSwgYXMgdGhhdCBjb3VsZCBpbnRlcmZlcmUgd2l0aCBpbmxpbmVcbiAgICAgIC8vIG1hdGguXG4gICAgICBpZiAoY29kZSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGNvZGUgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGxpbmVGZWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBbXVxuXG4gICAgaWYgKG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCAhPT0gaW5kZXgpIHtcbiAgICAgIGNvbnRlbnQucHVzaCh2YWx1ZS5zbGljZShvcGVuaW5nRmVuY2VDb250ZW50U3RhcnQsIGluZGV4KSlcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBpbmRleCArIDEpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjbG9zaW5nRmVuY2UgPSBmYWxzZVxuICAgICAgbGluZUNvbnRlbnRTdGFydCA9IGluZGV4XG4gICAgICBsaW5lQ29udGVudEVuZCA9IGxpbmVFbmRcbiAgICAgIGxpbmVJbmRleCA9IGxpbmVFbmRcbiAgICAgIGNsb3NpbmdGZW5jZVNpemUgPSAwXG5cbiAgICAgIC8vIEZpcnN0LCBsZXTigJlzIHNlZSBpZiB0aGlzIGlzIGEgdmFsaWQgY2xvc2luZyBmZW5jZS5cbiAgICAgIC8vIFNraXAgdHJhaWxpbmcgd2hpdGUgc3BhY2VcbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUluZGV4ID4gbGluZUNvbnRlbnRTdGFydCAmJlxuICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVJbmRleCAtIDEpID09PSBzcGFjZVxuICAgICAgKSB7XG4gICAgICAgIGxpbmVJbmRleC0tXG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgdGhlIGZlbmNlLlxuICAgICAgd2hpbGUgKFxuICAgICAgICBsaW5lSW5kZXggPiBsaW5lQ29udGVudFN0YXJ0ICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUluZGV4IC0gMSkgPT09IGRvbGxhclNpZ25cbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2VTaXplKytcbiAgICAgICAgbGluZUluZGV4LS1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIGNsb3NpbmcgZmVuY2UgbGluZS5cbiAgICAgIGlmIChcbiAgICAgICAgb3BlbmluZ0ZlbmNlU2l6ZSA8PSBjbG9zaW5nRmVuY2VTaXplICYmXG4gICAgICAgIHZhbHVlLmluZGV4T2YoZG9sbGFyU2lnbkNoYXIsIGxpbmVDb250ZW50U3RhcnQpID09PSBsaW5lSW5kZXhcbiAgICAgICkge1xuICAgICAgICBjbG9zaW5nRmVuY2UgPSB0cnVlXG4gICAgICAgIGxpbmVDb250ZW50RW5kID0gbGluZUluZGV4XG4gICAgICB9XG5cbiAgICAgIC8vIFN3ZWV0LCBuZXh0LCB3ZSBuZWVkIHRvIHRyaW0gdGhlIGxpbmUuXG4gICAgICAvLyBTa2lwIGluaXRpYWwgc3BhY2luZy5cbiAgICAgIHdoaWxlIChcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCA8PSBsaW5lQ29udGVudEVuZCAmJlxuICAgICAgICBsaW5lQ29udGVudFN0YXJ0IC0gaW5kZXggPCBvcGVuaW5nRmVuY2VJbmRlbnRTaXplICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUNvbnRlbnRTdGFydCkgPT09IHNwYWNlXG4gICAgICApIHtcbiAgICAgICAgbGluZUNvbnRlbnRTdGFydCsrXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjbG9zaW5nIGZlbmNlLCBza2lwIGZpbmFsIHNwYWNpbmcuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBsaW5lQ29udGVudEVuZCA+IGxpbmVDb250ZW50U3RhcnQgJiZcbiAgICAgICAgICB2YWx1ZS5jaGFyQ29kZUF0KGxpbmVDb250ZW50RW5kIC0gMSkgPT09IHNwYWNlXG4gICAgICAgICkge1xuICAgICAgICAgIGxpbmVDb250ZW50RW5kLS1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udGVudCBsaW5lLCBvciBpZiB0aGVyZSBpcyBjb250ZW50IGJlZm9yZSB0aGUgZmVuY2U6XG4gICAgICBpZiAoIWNsb3NpbmdGZW5jZSB8fCBsaW5lQ29udGVudFN0YXJ0ICE9PSBsaW5lQ29udGVudEVuZCkge1xuICAgICAgICBjb250ZW50LnB1c2godmFsdWUuc2xpY2UobGluZUNvbnRlbnRTdGFydCwgbGluZUNvbnRlbnRFbmQpKVxuICAgICAgfVxuXG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbGluZUVuZCArIDFcbiAgICAgIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhciwgaW5kZXggKyAxKVxuICAgICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gbGVuZ3RoIDogbGluZUVuZFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LmpvaW4oJ1xcbicpXG5cbiAgICByZXR1cm4gZWF0KHZhbHVlLnNsaWNlKDAsIGxpbmVFbmQpKSh7XG4gICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6ICdkaXYnLFxuICAgICAgICBoUHJvcGVydGllczoge2NsYXNzTmFtZTogY2xhc3NMaXN0LmNvbmNhdCgpfSxcbiAgICAgICAgaENoaWxkcmVuOiBbe3R5cGU6ICd0ZXh0JywgdmFsdWU6IGNvbnRlbnR9XVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpIHtcbiAgY29uc3QgcHJvdG8gPSBjb21waWxlci5wcm90b3R5cGVcblxuICBwcm90by52aXNpdG9ycy5tYXRoID0gY29tcGlsZUJsb2NrTWF0aFxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVCbG9ja01hdGgobm9kZSkge1xuICAgIHJldHVybiAnJCRcXG4nICsgbm9kZS52YWx1ZSArICdcXG4kJCdcbiAgfVxufVxuIiwiY29uc3QgaW5saW5lUGx1Z2luID0gcmVxdWlyZSgnLi9pbmxpbmUnKVxuY29uc3QgYmxvY2tQbHVnaW4gPSByZXF1aXJlKCcuL2Jsb2NrJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoXG5cbmZ1bmN0aW9uIG1hdGgob3B0cykge1xuICBpZiAob3B0cyA9PSBudWxsKSBvcHRzID0ge31cbiAgYmxvY2tQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxuICBpbmxpbmVQbHVnaW4uY2FsbCh0aGlzLCBvcHRzKVxufVxuIiwiLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG4oZnVuY3Rpb24oZmFjdG9yeSkge1xuXG4gIC8vIEZpbmQgdGhlIGdsb2JhbCBvYmplY3QgZm9yIGV4cG9ydCB0byBib3RoIHRoZSBicm93c2VyIGFuZCB3ZWIgd29ya2Vycy5cbiAgdmFyIGdsb2JhbE9iamVjdCA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnICYmIHdpbmRvdyB8fFxuICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnICYmIHNlbGY7XG5cbiAgLy8gU2V0dXAgaGlnaGxpZ2h0LmpzIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiBGaXJzdCBpcyBOb2RlLmpzIG9yXG4gIC8vIENvbW1vbkpTLlxuICAvLyBgbm9kZVR5cGVgIGlzIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgYGV4cG9ydHNgIGlzIG5vdCBhIEhUTUwgZWxlbWVudC5cbiAgaWYodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnICYmICFleHBvcnRzLm5vZGVUeXBlKSB7XG4gICAgZmFjdG9yeShleHBvcnRzKTtcbiAgfSBlbHNlIGlmKGdsb2JhbE9iamVjdCkge1xuICAgIC8vIEV4cG9ydCBobGpzIGdsb2JhbGx5IGV2ZW4gd2hlbiB1c2luZyBBTUQgZm9yIGNhc2VzIHdoZW4gdGhpcyBzY3JpcHRcbiAgICAvLyBpcyBsb2FkZWQgd2l0aCBvdGhlcnMgdGhhdCBtYXkgc3RpbGwgZXhwZWN0IGEgZ2xvYmFsIGhsanMuXG4gICAgZ2xvYmFsT2JqZWN0LmhsanMgPSBmYWN0b3J5KHt9KTtcblxuICAgIC8vIEZpbmFsbHkgcmVnaXN0ZXIgdGhlIGdsb2JhbCBobGpzIHdpdGggQU1ELlxuICAgIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5obGpzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn0oZnVuY3Rpb24oaGxqcykge1xuICAvLyBDb252ZW5pZW5jZSB2YXJpYWJsZXMgZm9yIGJ1aWxkLWluIG9iamVjdHNcbiAgdmFyIEFycmF5UHJvdG8gPSBbXSxcbiAgICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICAvLyBHbG9iYWwgaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBoaWdobGlnaHQuanMgbGlicmFyeS5cbiAgdmFyIGxhbmd1YWdlcyA9IHt9LFxuICAgICAgYWxpYXNlcyAgID0ge307XG5cbiAgLy8gUmVndWxhciBleHByZXNzaW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgbm9IaWdobGlnaHRSZSAgICA9IC9eKG5vLT9oaWdobGlnaHR8cGxhaW58dGV4dCkkL2ksXG4gICAgICBsYW5ndWFnZVByZWZpeFJlID0gL1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksXG4gICAgICBmaXhNYXJrdXBSZSAgICAgID0gLygoXig8W14+XSs+fFxcdHwpK3woPzpcXG4pKSkvZ207XG5cbiAgLy8gVGhlIG9iamVjdCB3aWxsIGJlIGFzc2lnbmVkIGJ5IHRoZSBidWlsZCB0b29sLiBJdCB1c2VkIHRvIHN5bmNocm9uaXplIEFQSVxuICAvLyBvZiBleHRlcm5hbCBsYW5ndWFnZSBmaWxlcyB3aXRoIG1pbmlmaWVkIHZlcnNpb24gb2YgdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgQVBJX1JFUExBQ0VTO1xuXG4gIHZhciBzcGFuRW5kVGFnID0gJzwvc3Bhbj4nO1xuXG4gIC8vIEdsb2JhbCBvcHRpb25zIHVzZWQgd2hlbiB3aXRoaW4gZXh0ZXJuYWwgQVBJcy4gVGhpcyBpcyBtb2RpZmllZCB3aGVuXG4gIC8vIGNhbGxpbmcgdGhlIGBobGpzLmNvbmZpZ3VyZWAgZnVuY3Rpb24uXG4gIHZhciBvcHRpb25zID0ge1xuICAgIGNsYXNzUHJlZml4OiAnaGxqcy0nLFxuICAgIHRhYlJlcGxhY2U6IG51bGwsXG4gICAgdXNlQlI6IGZhbHNlLFxuICAgIGxhbmd1YWdlczogdW5kZWZpbmVkXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgdGhhdCBzaG91bGQgaGF2ZSBubyBkZWZhdWx0IHJlbGV2YW5jZSB2YWx1ZVxuICB2YXIgQ09NTU9OX0tFWVdPUkRTID0gJ29mIGFuZCBmb3IgaW4gbm90IG9yIGlmIHRoZW4nLnNwbGl0KCcgJylcblxuXG4gIC8qIFV0aWxpdHkgZnVuY3Rpb25zICovXG5cbiAgZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRhZyhub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZShyZSwgbGV4ZW1lKSB7XG4gICAgdmFyIG1hdGNoID0gcmUgJiYgcmUuZXhlYyhsZXhlbWUpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm90SGlnaGxpZ2h0ZWQobGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gbm9IaWdobGlnaHRSZS50ZXN0KGxhbmd1YWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrTGFuZ3VhZ2UoYmxvY2spIHtcbiAgICB2YXIgaSwgbWF0Y2gsIGxlbmd0aCwgX2NsYXNzO1xuICAgIHZhciBjbGFzc2VzID0gYmxvY2suY2xhc3NOYW1lICsgJyAnO1xuXG4gICAgY2xhc3NlcyArPSBibG9jay5wYXJlbnROb2RlID8gYmxvY2sucGFyZW50Tm9kZS5jbGFzc05hbWUgOiAnJztcblxuICAgIC8vIGxhbmd1YWdlLSogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5vbi1wcmVmaXhlZCBjbGFzcyBuYW1lcy5cbiAgICBtYXRjaCA9IGxhbmd1YWdlUHJlZml4UmUuZXhlYyhjbGFzc2VzKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBnZXRMYW5ndWFnZShtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICduby1oaWdobGlnaHQnO1xuICAgIH1cblxuICAgIGNsYXNzZXMgPSBjbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBfY2xhc3MgPSBjbGFzc2VzW2ldO1xuXG4gICAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChfY2xhc3MpIHx8IGdldExhbmd1YWdlKF9jbGFzcykpIHtcbiAgICAgICAgcmV0dXJuIF9jbGFzcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbmhlcml0KHBhcmVudCkgeyAgLy8gaW5oZXJpdChwYXJlbnQsIG92ZXJyaWRlX29iaiwgb3ZlcnJpZGVfb2JqLCAuLi4pXG4gICAgdmFyIGtleTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIG9iamVjdHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgZm9yIChrZXkgaW4gcGFyZW50KVxuICAgICAgcmVzdWx0W2tleV0gPSBwYXJlbnRba2V5XTtcbiAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gICAgICBmb3IgKGtleSBpbiBvYmopXG4gICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIFN0cmVhbSBtZXJnaW5nICovXG5cbiAgZnVuY3Rpb24gbm9kZVN0cmVhbShub2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIChmdW5jdGlvbiBfbm9kZVN0cmVhbShub2RlLCBvZmZzZXQpIHtcbiAgICAgIGZvciAodmFyIGNoaWxkID0gbm9kZS5maXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykge1xuICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDMpXG4gICAgICAgICAgb2Zmc2V0ICs9IGNoaWxkLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6ICdzdGFydCcsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIG5vZGU6IGNoaWxkXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb2Zmc2V0ID0gX25vZGVTdHJlYW0oY2hpbGQsIG9mZnNldCk7XG4gICAgICAgICAgLy8gUHJldmVudCB2b2lkIGVsZW1lbnRzIGZyb20gaGF2aW5nIGFuIGVuZCB0YWcgdGhhdCB3b3VsZCBhY3R1YWxseVxuICAgICAgICAgIC8vIGRvdWJsZSB0aGVtIGluIHRoZSBvdXRwdXQuIFRoZXJlIGFyZSBtb3JlIHZvaWQgZWxlbWVudHMgaW4gSFRNTFxuICAgICAgICAgIC8vIGJ1dCB3ZSBsaXN0IG9ubHkgdGhvc2UgcmVhbGlzdGljYWxseSBleHBlY3RlZCBpbiBjb2RlIGRpc3BsYXkuXG4gICAgICAgICAgaWYgKCF0YWcoY2hpbGQpLm1hdGNoKC9icnxocnxpbWd8aW5wdXQvKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogJ3N0b3AnLFxuICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgICAgbm9kZTogY2hpbGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9KShub2RlLCAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTdHJlYW1zKG9yaWdpbmFsLCBoaWdobGlnaHRlZCwgdmFsdWUpIHtcbiAgICB2YXIgcHJvY2Vzc2VkID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG5vZGVTdGFjayA9IFtdO1xuXG4gICAgZnVuY3Rpb24gc2VsZWN0U3RyZWFtKCkge1xuICAgICAgaWYgKCFvcmlnaW5hbC5sZW5ndGggfHwgIWhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWwubGVuZ3RoID8gb3JpZ2luYWwgOiBoaWdobGlnaHRlZDtcbiAgICAgIH1cbiAgICAgIGlmIChvcmlnaW5hbFswXS5vZmZzZXQgIT09IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkge1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsWzBdLm9mZnNldCA8IGhpZ2hsaWdodGVkWzBdLm9mZnNldCkgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgVG8gYXZvaWQgc3RhcnRpbmcgdGhlIHN0cmVhbSBqdXN0IGJlZm9yZSBpdCBzaG91bGQgc3RvcCB0aGUgb3JkZXIgaXNcbiAgICAgIGVuc3VyZWQgdGhhdCBvcmlnaW5hbCBhbHdheXMgc3RhcnRzIGZpcnN0IGFuZCBjbG9zZXMgbGFzdDpcblxuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RhcnQnICYmIGV2ZW50MiA9PSAnc3RhcnQnKVxuICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgICBpZiAoZXZlbnQxID09ICdzdGFydCcgJiYgZXZlbnQyID09ICdzdG9wJylcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RvcCcgJiYgZXZlbnQyID09ICdzdGFydCcpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICAgIGlmIChldmVudDEgPT0gJ3N0b3AnICYmIGV2ZW50MiA9PSAnc3RvcCcpXG4gICAgICAgIHJldHVybiBoaWdobGlnaHRlZDtcblxuICAgICAgLi4uIHdoaWNoIGlzIGNvbGxhcHNlZCB0bzpcbiAgICAgICovXG4gICAgICByZXR1cm4gaGlnaGxpZ2h0ZWRbMF0uZXZlbnQgPT09ICdzdGFydCcgPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9wZW4obm9kZSkge1xuICAgICAgZnVuY3Rpb24gYXR0cl9zdHIoYSkge3JldHVybiAnICcgKyBhLm5vZGVOYW1lICsgJz1cIicgKyBlc2NhcGUoYS52YWx1ZSkucmVwbGFjZSgnXCInLCAnJnF1b3Q7JykgKyAnXCInO31cbiAgICAgIHJlc3VsdCArPSAnPCcgKyB0YWcobm9kZSkgKyBBcnJheVByb3RvLm1hcC5jYWxsKG5vZGUuYXR0cmlidXRlcywgYXR0cl9zdHIpLmpvaW4oJycpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb3NlKG5vZGUpIHtcbiAgICAgIHJlc3VsdCArPSAnPC8nICsgdGFnKG5vZGUpICsgJz4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlcihldmVudCkge1xuICAgICAgKGV2ZW50LmV2ZW50ID09PSAnc3RhcnQnID8gb3BlbiA6IGNsb3NlKShldmVudC5ub2RlKTtcbiAgICB9XG5cbiAgICB3aGlsZSAob3JpZ2luYWwubGVuZ3RoIHx8IGhpZ2hsaWdodGVkLmxlbmd0aCkge1xuICAgICAgdmFyIHN0cmVhbSA9IHNlbGVjdFN0cmVhbSgpO1xuICAgICAgcmVzdWx0ICs9IGVzY2FwZSh2YWx1ZS5zdWJzdHJpbmcocHJvY2Vzc2VkLCBzdHJlYW1bMF0ub2Zmc2V0KSk7XG4gICAgICBwcm9jZXNzZWQgPSBzdHJlYW1bMF0ub2Zmc2V0O1xuICAgICAgaWYgKHN0cmVhbSA9PT0gb3JpZ2luYWwpIHtcbiAgICAgICAgLypcbiAgICAgICAgT24gYW55IG9wZW5pbmcgb3IgY2xvc2luZyB0YWcgb2YgdGhlIG9yaWdpbmFsIG1hcmt1cCB3ZSBmaXJzdCBjbG9zZVxuICAgICAgICB0aGUgZW50aXJlIGhpZ2hsaWdodGVkIG5vZGUgc3RhY2ssIHRoZW4gcmVuZGVyIHRoZSBvcmlnaW5hbCB0YWcgYWxvbmdcbiAgICAgICAgd2l0aCBhbGwgdGhlIGZvbGxvd2luZyBvcmlnaW5hbCB0YWdzIGF0IHRoZSBzYW1lIG9mZnNldCBhbmQgdGhlblxuICAgICAgICByZW9wZW4gYWxsIHRoZSB0YWdzIG9uIHRoZSBoaWdobGlnaHRlZCBzdGFjay5cbiAgICAgICAgKi9cbiAgICAgICAgbm9kZVN0YWNrLnJldmVyc2UoKS5mb3JFYWNoKGNsb3NlKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgICAgICBzdHJlYW0gPSBzZWxlY3RTdHJlYW0oKTtcbiAgICAgICAgfSB3aGlsZSAoc3RyZWFtID09PSBvcmlnaW5hbCAmJiBzdHJlYW0ubGVuZ3RoICYmIHN0cmVhbVswXS5vZmZzZXQgPT09IHByb2Nlc3NlZCk7XG4gICAgICAgIG5vZGVTdGFjay5yZXZlcnNlKCkuZm9yRWFjaChvcGVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdHJlYW1bMF0uZXZlbnQgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICBub2RlU3RhY2sucHVzaChzdHJlYW1bMF0ubm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcihzdHJlYW0uc3BsaWNlKDAsIDEpWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCArIGVzY2FwZSh2YWx1ZS5zdWJzdHIocHJvY2Vzc2VkKSk7XG4gIH1cblxuICAvKiBJbml0aWFsaXphdGlvbiAqL1xuXG4gIGZ1bmN0aW9uIGRlcGVuZGVuY3lPblBhcmVudChtb2RlKSB7XG4gICAgaWYgKCFtb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbW9kZS5lbmRzV2l0aFBhcmVudCB8fCBkZXBlbmRlbmN5T25QYXJlbnQobW9kZS5zdGFydHMpXG4gIH1cblxuICBmdW5jdGlvbiBleHBhbmRfb3JfY2xvbmVfbW9kZShtb2RlKSB7XG4gICAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGUuY2FjaGVkX3ZhcmlhbnRzKSB7XG4gICAgICBtb2RlLmNhY2hlZF92YXJpYW50cyA9IG1vZGUudmFyaWFudHMubWFwKGZ1bmN0aW9uKHZhcmlhbnQpIHtcbiAgICAgICAgcmV0dXJuIGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFWFBBTkRcbiAgICAvLyBpZiB3ZSBoYXZlIHZhcmlhbnRzIHRoZW4gZXNzZW50dWFsbHkgXCJyZXBsYWNlXCIgdGhlIG1vZGUgd2l0aCB0aGUgdmFyaWFudHNcbiAgICAvLyB0aGlzIGhhcHBlbnMgaW4gY29tcGlsZU1vZGUsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb21cbiAgICBpZiAobW9kZS5jYWNoZWRfdmFyaWFudHMpXG4gICAgICByZXR1cm4gbW9kZS5jYWNoZWRfdmFyaWFudHM7XG5cbiAgICAvLyBDTE9ORVxuICAgIC8vIGlmIHdlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHBhcmVudHMgdGhlbiB3ZSBuZWVkIGEgdW5pcXVlXG4gICAgLy8gaW5zdGFuY2Ugb2Ygb3Vyc2VsdmVzLCBzbyB3ZSBjYW4gYmUgcmV1c2VkIHdpdGggbWFueVxuICAgIC8vIGRpZmZlcmVudCBwYXJlbnRzIHdpdGhvdXQgaXNzdWVcbiAgICBpZiAoZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpKVxuICAgICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHsgc3RhcnRzOiBtb2RlLnN0YXJ0cyA/IGluaGVyaXQobW9kZS5zdGFydHMpIDogbnVsbCB9KV1cblxuICAgIC8vIG5vIHNwZWNpYWwgZGVwZW5kZW5jeSBpc3N1ZXMsIGp1c3QgcmV0dXJuIG91cnNlbHZlc1xuICAgIHJldHVybiBbbW9kZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVMYW5ndWFnZUFwaShvYmopIHtcbiAgICBpZihBUElfUkVQTEFDRVMgJiYgIW9iai5sYW5nQXBpUmVzdG9yZWQpIHtcbiAgICAgIG9iai5sYW5nQXBpUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgZm9yKHZhciBrZXkgaW4gQVBJX1JFUExBQ0VTKVxuICAgICAgICBvYmpba2V5XSAmJiAob2JqW0FQSV9SRVBMQUNFU1trZXldXSA9IG9ialtrZXldKTtcbiAgICAgIChvYmouY29udGFpbnMgfHwgW10pLmNvbmNhdChvYmoudmFyaWFudHMgfHwgW10pLmZvckVhY2gocmVzdG9yZUxhbmd1YWdlQXBpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHMsIGNhc2VfaW5zZW5zaXRpdmUpIHtcbiAgICAgIHZhciBjb21waWxlZF9rZXl3b3JkcyA9IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIHJhd0tleXdvcmRzID09PSAnc3RyaW5nJykgeyAvLyBzdHJpbmdcbiAgICAgICAgc3BsaXRBbmRDb21waWxlKCdrZXl3b3JkJywgcmF3S2V5d29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5cyhyYXdLZXl3b3JkcykuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgcmF3S2V5d29yZHNbY2xhc3NOYW1lXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHJldHVybiBjb21waWxlZF9rZXl3b3JkcztcblxuICAgIC8vIC0tLVxuXG4gICAgZnVuY3Rpb24gc3BsaXRBbmRDb21waWxlKGNsYXNzTmFtZSwgc3RyKSB7XG4gICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZSkge1xuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHN0ci5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgICB2YXIgcGFpciA9IGtleXdvcmQuc3BsaXQoJ3wnKTtcbiAgICAgICAgY29tcGlsZWRfa2V5d29yZHNbcGFpclswXV0gPSBbY2xhc3NOYW1lLCBzY29yZUZvcktleXdvcmQocGFpclswXSwgcGFpclsxXSldO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjb3JlRm9yS2V5d29yZChrZXl3b3JkLCBwcm92aWRlZFNjb3JlKSB7XG4gICAgLy8gbWFudWFsIHNjb3JlcyBhbHdheXMgd2luIG92ZXIgY29tbW9uIGtleXdvcmRzXG4gICAgLy8gc28geW91IGNhbiBmb3JjZSBhIHNjb3JlIG9mIDEgaWYgeW91IHJlYWxseSBpbnNpc3RcbiAgICBpZiAocHJvdmlkZWRTY29yZSlcbiAgICAgIHJldHVybiBOdW1iZXIocHJvdmlkZWRTY29yZSlcblxuICAgIHJldHVybiBjb21tb25LZXl3b3JkKGtleXdvcmQpID8gMCA6IDE7XG4gIH1cblxuICBmdW5jdGlvbiBjb21tb25LZXl3b3JkKHdvcmQpIHtcbiAgICByZXR1cm4gQ09NTU9OX0tFWVdPUkRTLmluZGV4T2Yod29yZC50b0xvd2VyQ2FzZSgpKSAhPSAtMVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKSB7XG5cbiAgICBmdW5jdGlvbiByZVN0cihyZSkge1xuICAgICAgICByZXR1cm4gKHJlICYmIHJlLnNvdXJjZSkgfHwgcmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICByZVN0cih2YWx1ZSksXG4gICAgICAgICdtJyArIChsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gJ2knIDogJycpICsgKGdsb2JhbCA/ICdnJyA6ICcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZUNvdW50TWF0Y2hHcm91cHMocmUpIHtcbiAgICAgIHJldHVybiAobmV3IFJlZ0V4cChyZS50b1N0cmluZygpICsgJ3wnKSkuZXhlYygnJykubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvLyBqb2luUmUgbG9naWNhbGx5IGNvbXB1dGVzIHJlZ2V4cHMuam9pbihzZXBhcmF0b3IpLCBidXQgZml4ZXMgdGhlXG4gICAgLy8gYmFja3JlZmVyZW5jZXMgc28gdGhleSBjb250aW51ZSB0byBtYXRjaC5cbiAgICAvLyBpdCBhbHNvIHBsYWNlcyBlYWNoIGluZGl2aWR1YWwgcmVndWxhciBleHByZXNzaW9uIGludG8gaXQncyBvd25cbiAgICAvLyBtYXRjaCBncm91cCwga2VlcGluZyB0cmFjayBvZiB0aGUgc2VxdWVuY2luZyBvZiB0aG9zZSBtYXRjaCBncm91cHNcbiAgICAvLyBpcyBjdXJyZW50bHkgYW4gZXhlcmNpc2UgZm9yIHRoZSBjYWxsZXIuIDotKVxuICAgIGZ1bmN0aW9uIGpvaW5SZShyZWdleHBzLCBzZXBhcmF0b3IpIHtcbiAgICAgIC8vIGJhY2tyZWZlcmVuY2VSZSBtYXRjaGVzIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgYmFja3JlZmVyZW5jZS4gVG8gYXZvaWRcbiAgICAgIC8vIGFuIGluY29ycmVjdCBwYXJzZSwgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgdGhlIGZvbGxvd2luZzpcbiAgICAgIC8vIC0gWy4uLl0gZWxlbWVudHMsIHdoZXJlIHRoZSBtZWFuaW5nIG9mIHBhcmVudGhlc2VzIGFuZCBlc2NhcGVzIGNoYW5nZVxuICAgICAgLy8gLSBvdGhlciBlc2NhcGUgc2VxdWVuY2VzLCBzbyB3ZSBkbyBub3QgbWlzcGFyc2UgZXNjYXBlIHNlcXVlbmNlcyBhc1xuICAgICAgLy8gICBpbnRlcmVzdGluZyBlbGVtZW50c1xuICAgICAgLy8gLSBub24tbWF0Y2hpbmcgb3IgbG9va2FoZWFkIHBhcmVudGhlc2VzLCB3aGljaCBkbyBub3QgY2FwdHVyZS4gVGhlc2VcbiAgICAgIC8vICAgZm9sbG93IHRoZSAnKCcgd2l0aCBhICc/Jy5cbiAgICAgIHZhciBiYWNrcmVmZXJlbmNlUmUgPSAvXFxbKD86W15cXFxcXFxdXXxcXFxcLikqXFxdfFxcKFxcPz98XFxcXChbMS05XVswLTldKil8XFxcXC4vO1xuICAgICAgdmFyIG51bUNhcHR1cmVzID0gMDtcbiAgICAgIHZhciByZXQgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVnZXhwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBudW1DYXB0dXJlcyArPSAxO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gbnVtQ2FwdHVyZXM7XG4gICAgICAgIHZhciByZSA9IHJlU3RyKHJlZ2V4cHNbaV0pO1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICByZXQgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldCArPSBcIihcIjtcbiAgICAgICAgd2hpbGUgKHJlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBiYWNrcmVmZXJlbmNlUmUuZXhlYyhyZSk7XG4gICAgICAgICAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldCArPSByZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXQgKz0gcmUuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgICByZSA9IHJlLnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgICAgaWYgKG1hdGNoWzBdWzBdID09ICdcXFxcJyAmJiBtYXRjaFsxXSkge1xuICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgICAgcmV0ICs9ICdcXFxcJyArIFN0cmluZyhOdW1iZXIobWF0Y2hbMV0pICsgb2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0ICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgaWYgKG1hdGNoWzBdID09ICcoJykge1xuICAgICAgICAgICAgICBudW1DYXB0dXJlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXQgKz0gXCIpXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcblxuICAgICAgdmFyIG1hdGNoSW5kZXhlcyA9IHt9O1xuICAgICAgdmFyIG1hdGNoZXJSZTtcbiAgICAgIHZhciByZWdleGVzID0gW107XG4gICAgICB2YXIgbWF0Y2hlciA9IHt9O1xuICAgICAgdmFyIG1hdGNoQXQgPSAxO1xuXG4gICAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICAgIG1hdGNoSW5kZXhlc1ttYXRjaEF0XSA9IHJ1bGU7XG4gICAgICAgIHJlZ2V4ZXMucHVzaChbcnVsZSwgcmVnZXhdKTtcbiAgICAgICAgbWF0Y2hBdCArPSByZUNvdW50TWF0Y2hHcm91cHMocmVnZXgpICsgMTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRlcm07XG4gICAgICBmb3IgKHZhciBpPTA7IGkgPCBtb2RlLmNvbnRhaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZTtcbiAgICAgICAgdGVybSA9IG1vZGUuY29udGFpbnNbaV07XG4gICAgICAgIGlmICh0ZXJtLmJlZ2luS2V5d29yZHMpIHtcbiAgICAgICAgICByZSA9ICdcXFxcLj8oPzonICsgdGVybS5iZWdpbiArICcpXFxcXC4/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZSA9IHRlcm0uYmVnaW47XG4gICAgICAgIH1cbiAgICAgICAgYWRkUnVsZSh0ZXJtLCByZSk7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS50ZXJtaW5hdG9yX2VuZClcbiAgICAgICAgYWRkUnVsZShcImVuZFwiLCBtb2RlLnRlcm1pbmF0b3JfZW5kKTtcbiAgICAgIGlmIChtb2RlLmlsbGVnYWwpXG4gICAgICAgIGFkZFJ1bGUoXCJpbGxlZ2FsXCIsIG1vZGUuaWxsZWdhbCk7XG5cbiAgICAgIHZhciB0ZXJtaW5hdG9ycyA9IHJlZ2V4ZXMubWFwKGZ1bmN0aW9uKGVsKSB7IHJldHVybiBlbFsxXSB9KTtcbiAgICAgIG1hdGNoZXJSZSA9IGxhbmdSZShqb2luUmUodGVybWluYXRvcnMsICd8JyksIHRydWUpO1xuXG4gICAgICBtYXRjaGVyLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaGVyLmV4ZWMgPSBmdW5jdGlvbihzKSB7XG4gICAgICAgIHZhciBydWxlO1xuXG4gICAgICAgIGlmKCByZWdleGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbWF0Y2hlclJlLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4O1xuICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGVyUmUuZXhlYyhzKTtcbiAgICAgICAgaWYgKCFtYXRjaCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGk8bWF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAobWF0Y2hbaV0gIT0gdW5kZWZpbmVkICYmIG1hdGNoSW5kZXhlc1tcIlwiICtpXSAhPSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICBydWxlID0gbWF0Y2hJbmRleGVzW1wiXCIraV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBtYXRjaC50eXBlID0gcnVsZTtcbiAgICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoLnR5cGUgPSBcImJlZ2luXCI7XG4gICAgICAgICAgbWF0Y2gucnVsZSA9IHJ1bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hlcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICAgIGlmIChtb2RlLmNvbXBpbGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBtb2RlLmNvbXBpbGVkID0gdHJ1ZTtcblxuICAgICAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzO1xuICAgICAgaWYgKG1vZGUua2V5d29yZHMpXG4gICAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSlcblxuICAgICAgbW9kZS5sZXhlbWVzUmUgPSBsYW5nUmUobW9kZS5sZXhlbWVzIHx8IC9cXHcrLywgdHJ1ZSk7XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKG1vZGUuYmVnaW5LZXl3b3Jkcykge1xuICAgICAgICAgIG1vZGUuYmVnaW4gPSAnXFxcXGIoJyArIG1vZGUuYmVnaW5LZXl3b3Jkcy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9kZS5iZWdpbilcbiAgICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvO1xuICAgICAgICBtb2RlLmJlZ2luUmUgPSBsYW5nUmUobW9kZS5iZWdpbik7XG4gICAgICAgIGlmIChtb2RlLmVuZFNhbWVBc0JlZ2luKVxuICAgICAgICAgIG1vZGUuZW5kID0gbW9kZS5iZWdpbjtcbiAgICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudClcbiAgICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgICAgaWYgKG1vZGUuZW5kKVxuICAgICAgICAgIG1vZGUuZW5kUmUgPSBsYW5nUmUobW9kZS5lbmQpO1xuICAgICAgICBtb2RlLnRlcm1pbmF0b3JfZW5kID0gcmVTdHIobW9kZS5lbmQpIHx8ICcnO1xuICAgICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvcl9lbmQpXG4gICAgICAgICAgbW9kZS50ZXJtaW5hdG9yX2VuZCArPSAobW9kZS5lbmQgPyAnfCcgOiAnJykgKyBwYXJlbnQudGVybWluYXRvcl9lbmQ7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5pbGxlZ2FsKVxuICAgICAgICBtb2RlLmlsbGVnYWxSZSA9IGxhbmdSZShtb2RlLmlsbGVnYWwpO1xuICAgICAgaWYgKG1vZGUucmVsZXZhbmNlID09IG51bGwpXG4gICAgICAgIG1vZGUucmVsZXZhbmNlID0gMTtcbiAgICAgIGlmICghbW9kZS5jb250YWlucykge1xuICAgICAgICBtb2RlLmNvbnRhaW5zID0gW107XG4gICAgICB9XG4gICAgICBtb2RlLmNvbnRhaW5zID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgbW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgICByZXR1cm4gZXhwYW5kX29yX2Nsb25lX21vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpO1xuICAgICAgfSkpO1xuICAgICAgbW9kZS5jb250YWlucy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtjb21waWxlTW9kZShjLCBtb2RlKTt9KTtcblxuICAgICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICBtb2RlLnRlcm1pbmF0b3JzID0gYnVpbGRNb2RlUmVnZXgobW9kZSk7XG4gICAgfVxuXG4gICAgY29tcGlsZU1vZGUobGFuZ3VhZ2UpO1xuICB9XG5cbiAgLypcbiAgQ29yZSBoaWdobGlnaHRpbmcgZnVuY3Rpb24uIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGFcbiAgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgcHJvcGVydGllczpcblxuICAtIHJlbGV2YW5jZSAoaW50KVxuICAtIHZhbHVlIChhbiBIVE1MIHN0cmluZyB3aXRoIGhpZ2hsaWdodGluZyBtYXJrdXApXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmVfaWxsZWdhbHMsIGNvbnRpbnVhdGlvbikge1xuXG4gICAgZnVuY3Rpb24gZXNjYXBlUmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpLCAnbScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mTW9kZShtb2RlLCBsZXhlbWUpIHtcbiAgICAgIGlmICh0ZXN0UmUobW9kZS5lbmRSZSwgbGV4ZW1lKSkge1xuICAgICAgICB3aGlsZSAobW9kZS5lbmRzUGFyZW50ICYmIG1vZGUucGFyZW50KSB7XG4gICAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2RlO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGVuZE9mTW9kZShtb2RlLnBhcmVudCwgbGV4ZW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrZXl3b3JkTWF0Y2gobW9kZSwgbWF0Y2gpIHtcbiAgICAgIHZhciBtYXRjaF9zdHIgPSBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IG1hdGNoWzBdO1xuICAgICAgcmV0dXJuIG1vZGUua2V5d29yZHMuaGFzT3duUHJvcGVydHkobWF0Y2hfc3RyKSAmJiBtb2RlLmtleXdvcmRzW21hdGNoX3N0cl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcGFuKGNsYXNzbmFtZSwgaW5zaWRlU3BhbiwgbGVhdmVPcGVuLCBub1ByZWZpeCkge1xuICAgICAgaWYgKCFsZWF2ZU9wZW4gJiYgaW5zaWRlU3BhbiA9PT0gJycpIHJldHVybiAnJztcbiAgICAgIGlmICghY2xhc3NuYW1lKSByZXR1cm4gaW5zaWRlU3BhbjtcblxuICAgICAgdmFyIGNsYXNzUHJlZml4ID0gbm9QcmVmaXggPyAnJyA6IG9wdGlvbnMuY2xhc3NQcmVmaXgsXG4gICAgICAgICAgb3BlblNwYW4gICAgPSAnPHNwYW4gY2xhc3M9XCInICsgY2xhc3NQcmVmaXgsXG4gICAgICAgICAgY2xvc2VTcGFuICAgPSBsZWF2ZU9wZW4gPyAnJyA6IHNwYW5FbmRUYWc7XG5cbiAgICAgIG9wZW5TcGFuICs9IGNsYXNzbmFtZSArICdcIj4nO1xuXG4gICAgICByZXR1cm4gb3BlblNwYW4gKyBpbnNpZGVTcGFuICsgY2xvc2VTcGFuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICAgIHZhciBrZXl3b3JkX21hdGNoLCBsYXN0X2luZGV4LCBtYXRjaCwgcmVzdWx0O1xuXG4gICAgICBpZiAoIXRvcC5rZXl3b3JkcylcbiAgICAgICAgcmV0dXJuIGVzY2FwZShtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgbGFzdF9pbmRleCA9IDA7XG4gICAgICB0b3AubGV4ZW1lc1JlLmxhc3RJbmRleCA9IDA7XG4gICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG5cbiAgICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgICByZXN1bHQgKz0gZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cmluZyhsYXN0X2luZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBrZXl3b3JkX21hdGNoID0ga2V5d29yZE1hdGNoKHRvcCwgbWF0Y2gpO1xuICAgICAgICBpZiAoa2V5d29yZF9tYXRjaCkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSBrZXl3b3JkX21hdGNoWzFdO1xuICAgICAgICAgIHJlc3VsdCArPSBidWlsZFNwYW4oa2V5d29yZF9tYXRjaFswXSwgZXNjYXBlKG1hdGNoWzBdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZShtYXRjaFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdF9pbmRleCA9IHRvcC5sZXhlbWVzUmUubGFzdEluZGV4O1xuICAgICAgICBtYXRjaCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlX2J1ZmZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgZXNjYXBlKG1vZGVfYnVmZmVyLnN1YnN0cihsYXN0X2luZGV4KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgICAgdmFyIGV4cGxpY2l0ID0gdHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZyc7XG4gICAgICBpZiAoZXhwbGljaXQgJiYgIWxhbmd1YWdlc1t0b3Auc3ViTGFuZ3VhZ2VdKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGUobW9kZV9idWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gZXhwbGljaXQgP1xuICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodCh0b3Auc3ViTGFuZ3VhZ2UsIG1vZGVfYnVmZmVyLCB0cnVlLCBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0pIDpcbiAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRBdXRvKG1vZGVfYnVmZmVyLCB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogdW5kZWZpbmVkKTtcblxuICAgICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmUgZGlzYWJsZWRcbiAgICAgIC8vIHdpdGggemVyb2luZyB0aGUgY29udGFpbmluZyBtb2RlIHJlbGV2YW5jZS4gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0XG4gICAgICAvLyBhbGxvd3MgWE1MIGV2ZXJ5d2hlcmUgYW5kIG1ha2VzIGV2ZXJ5IFhNTCBzbmlwcGV0IHRvIGhhdmUgYSBtdWNoIGxhcmdlciBNYXJrZG93blxuICAgICAgLy8gc2NvcmUuXG4gICAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHJlc3VsdC5yZWxldmFuY2U7XG4gICAgICB9XG4gICAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdID0gcmVzdWx0LnRvcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZFNwYW4ocmVzdWx0Lmxhbmd1YWdlLCByZXN1bHQudmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgICAgcmVzdWx0ICs9ICh0b3Auc3ViTGFuZ3VhZ2UgIT0gbnVsbCA/IHByb2Nlc3NTdWJMYW5ndWFnZSgpIDogcHJvY2Vzc0tleXdvcmRzKCkpO1xuICAgICAgbW9kZV9idWZmZXIgPSAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE5ld01vZGUobW9kZSkge1xuICAgICAgcmVzdWx0ICs9IG1vZGUuY2xhc3NOYW1lPyBidWlsZFNwYW4obW9kZS5jbGFzc05hbWUsICcnLCB0cnVlKTogJyc7XG4gICAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHtwYXJlbnQ6IHt2YWx1ZTogdG9wfX0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF07XG4gICAgICB2YXIgbmV3X21vZGUgPSBtYXRjaC5ydWxlO1xuXG4gICAgICBpZiAobmV3X21vZGUgJiYgbmV3X21vZGUuZW5kU2FtZUFzQmVnaW4pIHtcbiAgICAgICAgbmV3X21vZGUuZW5kUmUgPSBlc2NhcGVSZSggbGV4ZW1lICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdfbW9kZS5za2lwKSB7XG4gICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAoIW5ld19tb2RlLnJldHVybkJlZ2luICYmICFuZXdfbW9kZS5leGNsdWRlQmVnaW4pIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhcnROZXdNb2RlKG5ld19tb2RlLCBsZXhlbWUpO1xuICAgICAgcmV0dXJuIG5ld19tb2RlLnJldHVybkJlZ2luID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9FbmRNYXRjaChtYXRjaCkge1xuICAgICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgdmFyIGVuZF9tb2RlID0gZW5kT2ZNb2RlKHRvcCwgbGV4ZW1lKTtcbiAgICAgIGlmICghZW5kX21vZGUpIHsgcmV0dXJuOyB9XG5cbiAgICAgIHZhciBvcmlnaW4gPSB0b3A7XG4gICAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEob3JpZ2luLnJldHVybkVuZCB8fCBvcmlnaW4uZXhjbHVkZUVuZCkpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgICBtb2RlX2J1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG8ge1xuICAgICAgICBpZiAodG9wLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHJlc3VsdCArPSBzcGFuRW5kVGFnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSB0b3AucmVsZXZhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRvcCA9IHRvcC5wYXJlbnQ7XG4gICAgICB9IHdoaWxlICh0b3AgIT09IGVuZF9tb2RlLnBhcmVudCk7XG4gICAgICBpZiAoZW5kX21vZGUuc3RhcnRzKSB7XG4gICAgICAgIGlmIChlbmRfbW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICAgIGVuZF9tb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZF9tb2RlLmVuZFJlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0TmV3TW9kZShlbmRfbW9kZS5zdGFydHMsICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIGxhc3RNYXRjaCA9IHt9O1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dF9iZWZvcmVfbWF0Y2gsIG1hdGNoKSB7XG5cbiAgICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXTtcblxuICAgICAgLy8gYWRkIG5vbi1tYXRjaGVkIHRleHQgdG8gdGhlIGN1cnJlbnQgbW9kZSBidWZmZXJcbiAgICAgIG1vZGVfYnVmZmVyICs9IHRleHRfYmVmb3JlX21hdGNoO1xuXG4gICAgICBpZiAobGV4ZW1lID09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UndmUgZm91bmQgYSAwIHdpZHRoIG1hdGNoIGFuZCB3ZSdyZSBzdHVjaywgc28gd2UgbmVlZCB0byBhZHZhbmNlXG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGJhZGx5IGJlaGF2ZWQgcnVsZXMgdGhhdCBoYXZlIG9wdGlvbmFsIG1hdGNoZXJzIHRvIHRoZSBkZWdyZWUgdGhhdFxuICAgICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMTQwXG4gICAgICBpZiAobGFzdE1hdGNoLnR5cGU9PVwiYmVnaW5cIiAmJiBtYXRjaC50eXBlPT1cImVuZFwiICYmIGxhc3RNYXRjaC5pbmRleCA9PSBtYXRjaC5pbmRleCAmJiBsZXhlbWUgPT09IFwiXCIpIHtcbiAgICAgICAgLy8gc3BpdCB0aGUgXCJza2lwcGVkXCIgY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgICBtb2RlX2J1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXRjaCA9IG1hdGNoO1xuXG4gICAgICBpZiAobWF0Y2gudHlwZT09PVwiYmVnaW5cIikge1xuICAgICAgICByZXR1cm4gZG9CZWdpbk1hdGNoKG1hdGNoKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZT09PVwiaWxsZWdhbFwiICYmICFpZ25vcmVfaWxsZWdhbHMpIHtcbiAgICAgICAgLy8gaWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICsgKHRvcC5jbGFzc05hbWUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJyk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnR5cGU9PT1cImVuZFwiKSB7XG4gICAgICAgIHZhciBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKTtcbiAgICAgICAgaWYgKHByb2Nlc3NlZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlPyAgT25seSBvbmUgb2NjYXNpb24gbm93LiAgQW4gZW5kIG1hdGNoIHRoYXQgd2FzXG4gICAgICB0cmlnZ2VyZWQgYnV0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuICBXaGVuIG1pZ2h0IHRoaXMgaGFwcGVuPyAgV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gXG4gICAgICBydWxlIHNldHMgdGhlIGVuZCBydWxlIHRvIGEgc3BlY2lmaWMgbWF0Y2guICBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdCdzXG4gICAgICBiZWluZyB1c2VkIHRvIHNjYW4gdGhlIHRleHQgaXNuJ3QgcmVjb21waWxlZCB0aGF0IG1lYW5zIHRoYXQgYW55IG1hdGNoIHRoYXQgTE9PS1MgbGlrZVxuICAgICAgdGhlIGVuZCAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbFxuICAgICAgZW5kIHVwIGhlcmUuICBBIGRlZmluaXRlIGVuZCBtYXRjaCwgYnV0IHdoZW4gYGRvRW5kTWF0Y2hgIHRyaWVzIHRvIFwicmVhcHBseVwiXG4gICAgICB0aGUgZW5kIHJ1bGUgYW5kIGZhaWxzIHRvIG1hdGNoLCB3ZSB3aW5kIHVwIGhlcmUsIGFuZCBqdXN0IHNpbGVudGx5IGlnbm9yZSB0aGUgZW5kLlxuXG4gICAgICBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICAgICovXG5cbiAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgIHJldHVybiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBsYW5ndWFnZSA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsYW5ndWFnZTogXCInICsgbmFtZSArICdcIicpO1xuICAgIH1cblxuICAgIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSk7XG4gICAgdmFyIHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBsYW5ndWFnZTtcbiAgICB2YXIgY29udGludWF0aW9ucyA9IHt9OyAvLyBrZWVwIGNvbnRpbnVhdGlvbnMgZm9yIHN1Yi1sYW5ndWFnZXNcbiAgICB2YXIgcmVzdWx0ID0gJycsIGN1cnJlbnQ7XG4gICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQgIT09IGxhbmd1YWdlOyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmNsYXNzTmFtZSkge1xuICAgICAgICByZXN1bHQgPSBidWlsZFNwYW4oY3VycmVudC5jbGFzc05hbWUsICcnLCB0cnVlKSArIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vZGVfYnVmZmVyID0gJyc7XG4gICAgdmFyIHJlbGV2YW5jZSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBtYXRjaCwgY291bnQsIGluZGV4ID0gMDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBpbmRleDtcbiAgICAgICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNvdW50ID0gcHJvY2Vzc0xleGVtZSh2YWx1ZS5zdWJzdHJpbmcoaW5kZXgsIG1hdGNoLmluZGV4KSwgbWF0Y2gpO1xuICAgICAgICBpbmRleCA9IG1hdGNoLmluZGV4ICsgY291bnQ7XG4gICAgICB9XG4gICAgICBwcm9jZXNzTGV4ZW1lKHZhbHVlLnN1YnN0cihpbmRleCkpO1xuICAgICAgZm9yKGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQucGFyZW50OyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHsgLy8gY2xvc2UgZGFuZ2xpbmcgbW9kZXNcbiAgICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHNwYW5FbmRUYWc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlLFxuICAgICAgICB2YWx1ZTogcmVzdWx0LFxuICAgICAgICBpbGxlZ2FsOmZhbHNlLFxuICAgICAgICBsYW5ndWFnZTogbmFtZSxcbiAgICAgICAgdG9wOiB0b3BcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5kZXhPZignSWxsZWdhbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlsbGVnYWw6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIHZhbHVlOiBlc2NhcGUodmFsdWUpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi4gQWNjZXB0cyBhIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvXG4gIGhpZ2hsaWdodC4gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgLSBsYW5ndWFnZSAoZGV0ZWN0ZWQgbGFuZ3VhZ2UpXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcbiAgLSBzZWNvbmRfYmVzdCAob2JqZWN0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGZvciBzZWNvbmQtYmVzdCBoZXVyaXN0aWNhbGx5XG4gICAgZGV0ZWN0ZWQgbGFuZ3VhZ2UsIG1heSBiZSBhYnNlbnQpXG5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0QXV0byh0ZXh0LCBsYW5ndWFnZVN1YnNldCkge1xuICAgIGxhbmd1YWdlU3Vic2V0ID0gbGFuZ3VhZ2VTdWJzZXQgfHwgb3B0aW9ucy5sYW5ndWFnZXMgfHwgb2JqZWN0S2V5cyhsYW5ndWFnZXMpO1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICB2YWx1ZTogZXNjYXBlKHRleHQpXG4gICAgfTtcbiAgICB2YXIgc2Vjb25kX2Jlc3QgPSByZXN1bHQ7XG4gICAgbGFuZ3VhZ2VTdWJzZXQuZmlsdGVyKGdldExhbmd1YWdlKS5maWx0ZXIoYXV0b0RldGVjdGlvbikuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGhpZ2hsaWdodChuYW1lLCB0ZXh0LCBmYWxzZSk7XG4gICAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZTtcbiAgICAgIGlmIChjdXJyZW50LnJlbGV2YW5jZSA+IHNlY29uZF9iZXN0LnJlbGV2YW5jZSkge1xuICAgICAgICBzZWNvbmRfYmVzdCA9IGN1cnJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiByZXN1bHQucmVsZXZhbmNlKSB7XG4gICAgICAgIHNlY29uZF9iZXN0ID0gcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzZWNvbmRfYmVzdC5sYW5ndWFnZSkge1xuICAgICAgcmVzdWx0LnNlY29uZF9iZXN0ID0gc2Vjb25kX2Jlc3Q7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKlxuICBQb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGhpZ2hsaWdodGVkIG1hcmt1cDpcblxuICAtIHJlcGxhY2UgVEFCcyB3aXRoIHNvbWV0aGluZyBtb3JlIHVzZWZ1bFxuICAtIHJlcGxhY2UgcmVhbCBsaW5lLWJyZWFrcyB3aXRoICc8YnI+JyBmb3Igbm9uLXByZSBjb250YWluZXJzXG5cbiAgKi9cbiAgZnVuY3Rpb24gZml4TWFya3VwKHZhbHVlKSB7XG4gICAgcmV0dXJuICEob3B0aW9ucy50YWJSZXBsYWNlIHx8IG9wdGlvbnMudXNlQlIpXG4gICAgICA/IHZhbHVlXG4gICAgICA6IHZhbHVlLnJlcGxhY2UoZml4TWFya3VwUmUsIGZ1bmN0aW9uKG1hdGNoLCBwMSkge1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZUJSICYmIG1hdGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgcmV0dXJuICc8YnI+JztcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGFiUmVwbGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHAxLnJlcGxhY2UoL1xcdC9nLCBvcHRpb25zLnRhYlJlcGxhY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkQ2xhc3NOYW1lKHByZXZDbGFzc05hbWUsIGN1cnJlbnRMYW5nLCByZXN1bHRMYW5nKSB7XG4gICAgdmFyIGxhbmd1YWdlID0gY3VycmVudExhbmcgPyBhbGlhc2VzW2N1cnJlbnRMYW5nXSA6IHJlc3VsdExhbmcsXG4gICAgICAgIHJlc3VsdCAgID0gW3ByZXZDbGFzc05hbWUudHJpbSgpXTtcblxuICAgIGlmICghcHJldkNsYXNzTmFtZS5tYXRjaCgvXFxiaGxqc1xcYi8pKSB7XG4gICAgICByZXN1bHQucHVzaCgnaGxqcycpO1xuICAgIH1cblxuICAgIGlmIChwcmV2Q2xhc3NOYW1lLmluZGV4T2YobGFuZ3VhZ2UpID09PSAtMSkge1xuICAgICAgcmVzdWx0LnB1c2gobGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuam9pbignICcpLnRyaW0oKTtcbiAgfVxuXG4gIC8qXG4gIEFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIGEgRE9NIG5vZGUgY29udGFpbmluZyBjb2RlLiBBY2NlcHRzIGEgRE9NIG5vZGUgYW5kXG4gIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBmaXhNYXJrdXAuXG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEJsb2NrKGJsb2NrKSB7XG4gICAgdmFyIG5vZGUsIG9yaWdpbmFsU3RyZWFtLCByZXN1bHQsIHJlc3VsdE5vZGUsIHRleHQ7XG4gICAgdmFyIGxhbmd1YWdlID0gYmxvY2tMYW5ndWFnZShibG9jayk7XG5cbiAgICBpZiAoaXNOb3RIaWdobGlnaHRlZChsYW5ndWFnZSkpXG4gICAgICAgIHJldHVybjtcblxuICAgIGlmIChvcHRpb25zLnVzZUJSKSB7XG4gICAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgbm9kZS5pbm5lckhUTUwgPSBibG9jay5pbm5lckhUTUwucmVwbGFjZSgvXFxuL2csICcnKS5yZXBsYWNlKC88YnJbIFxcL10qPi9nLCAnXFxuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBibG9jaztcbiAgICB9XG4gICAgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQobGFuZ3VhZ2UsIHRleHQsIHRydWUpIDogaGlnaGxpZ2h0QXV0byh0ZXh0KTtcblxuICAgIG9yaWdpbmFsU3RyZWFtID0gbm9kZVN0cmVhbShub2RlKTtcbiAgICBpZiAob3JpZ2luYWxTdHJlYW0ubGVuZ3RoKSB7XG4gICAgICByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicpO1xuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgICByZXN1bHQudmFsdWUgPSBtZXJnZVN0cmVhbXMob3JpZ2luYWxTdHJlYW0sIG5vZGVTdHJlYW0ocmVzdWx0Tm9kZSksIHRleHQpO1xuICAgIH1cbiAgICByZXN1bHQudmFsdWUgPSBmaXhNYXJrdXAocmVzdWx0LnZhbHVlKTtcblxuICAgIGJsb2NrLmlubmVySFRNTCA9IHJlc3VsdC52YWx1ZTtcbiAgICBibG9jay5jbGFzc05hbWUgPSBidWlsZENsYXNzTmFtZShibG9jay5jbGFzc05hbWUsIGxhbmd1YWdlLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIGJsb2NrLnJlc3VsdCA9IHtcbiAgICAgIGxhbmd1YWdlOiByZXN1bHQubGFuZ3VhZ2UsXG4gICAgICByZTogcmVzdWx0LnJlbGV2YW5jZVxuICAgIH07XG4gICAgaWYgKHJlc3VsdC5zZWNvbmRfYmVzdCkge1xuICAgICAgYmxvY2suc2Vjb25kX2Jlc3QgPSB7XG4gICAgICAgIGxhbmd1YWdlOiByZXN1bHQuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UsXG4gICAgICAgIHJlOiByZXN1bHQuc2Vjb25kX2Jlc3QucmVsZXZhbmNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFVwZGF0ZXMgaGlnaGxpZ2h0LmpzIGdsb2JhbCBvcHRpb25zIHdpdGggdmFsdWVzIHBhc3NlZCBpbiB0aGUgZm9ybSBvZiBhbiBvYmplY3QuXG4gICovXG4gIGZ1bmN0aW9uIGNvbmZpZ3VyZSh1c2VyX29wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gaW5oZXJpdChvcHRpb25zLCB1c2VyX29wdGlvbnMpO1xuICB9XG5cbiAgLypcbiAgQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYWxsIDxwcmU+PGNvZGU+Li48L2NvZGU+PC9wcmU+IGJsb2NrcyBvbiBhIHBhZ2UuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmcoKSB7XG4gICAgaWYgKGluaXRIaWdobGlnaHRpbmcuY2FsbGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGluaXRIaWdobGlnaHRpbmcuY2FsbGVkID0gdHJ1ZTtcblxuICAgIHZhciBibG9ja3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgY29kZScpO1xuICAgIEFycmF5UHJvdG8uZm9yRWFjaC5jYWxsKGJsb2NrcywgaGlnaGxpZ2h0QmxvY2spO1xuICB9XG5cbiAgLypcbiAgQXR0YWNoZXMgaGlnaGxpZ2h0aW5nIHRvIHRoZSBwYWdlIGxvYWQgZXZlbnQuXG4gICovXG4gIGZ1bmN0aW9uIGluaXRIaWdobGlnaHRpbmdPbkxvYWQoKSB7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRIaWdobGlnaHRpbmcsIGZhbHNlKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdsb2FkJywgaW5pdEhpZ2hsaWdodGluZywgZmFsc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXJMYW5ndWFnZShuYW1lLCBsYW5ndWFnZSkge1xuICAgIHZhciBsYW5nID0gbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ3VhZ2UoaGxqcyk7XG4gICAgcmVzdG9yZUxhbmd1YWdlQXBpKGxhbmcpO1xuICAgIGxhbmcucmF3RGVmaW5pdGlvbiA9IGxhbmd1YWdlLmJpbmQobnVsbCxobGpzKTtcblxuICAgIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICAgIGxhbmcuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGFsaWFzKSB7YWxpYXNlc1thbGlhc10gPSBuYW1lO30pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIG9iamVjdEtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICBmdW5jdGlvbiBhdXRvRGV0ZWN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cblxuICBobGpzLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbiAgaGxqcy5oaWdobGlnaHRBdXRvID0gaGlnaGxpZ2h0QXV0bztcbiAgaGxqcy5maXhNYXJrdXAgPSBmaXhNYXJrdXA7XG4gIGhsanMuaGlnaGxpZ2h0QmxvY2sgPSBoaWdobGlnaHRCbG9jaztcbiAgaGxqcy5jb25maWd1cmUgPSBjb25maWd1cmU7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZyA9IGluaXRIaWdobGlnaHRpbmc7XG4gIGhsanMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZCA9IGluaXRIaWdobGlnaHRpbmdPbkxvYWQ7XG4gIGhsanMucmVnaXN0ZXJMYW5ndWFnZSA9IHJlZ2lzdGVyTGFuZ3VhZ2U7XG4gIGhsanMubGlzdExhbmd1YWdlcyA9IGxpc3RMYW5ndWFnZXM7XG4gIGhsanMuZ2V0TGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZTtcbiAgaGxqcy5hdXRvRGV0ZWN0aW9uID0gYXV0b0RldGVjdGlvbjtcbiAgaGxqcy5pbmhlcml0ID0gaW5oZXJpdDtcblxuICAvLyBDb21tb24gcmVnZXhwc1xuICBobGpzLklERU5UX1JFID0gJ1thLXpBLVpdXFxcXHcqJztcbiAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3Kic7XG4gIGhsanMuTlVNQkVSX1JFID0gJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuICBobGpzLkNfTlVNQkVSX1JFID0gJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJzsgLy8gMHguLi4sIDAuLi4sIGRlY2ltYWwsIGZsb2F0XG4gIGhsanMuQklOQVJZX05VTUJFUl9SRSA9ICdcXFxcYigwYlswMV0rKSc7IC8vIDBiLi4uXG4gIGhsanMuUkVfU1RBUlRFUlNfUkUgPSAnIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcXFwqfFxcXFwqPXxcXFxcK3xcXFxcKz18LHwtfC09fC89fC98Onw7fDw8fDw8PXw8PXw8fD09PXw9PXw9fD4+Pj18Pj49fD49fD4+Pnw+Pnw+fFxcXFw/fFxcXFxbfFxcXFx7fFxcXFwofFxcXFxefFxcXFxePXxcXFxcfHxcXFxcfD18XFxcXHxcXFxcfHx+JztcblxuICAvLyBDb21tb24gbW9kZXNcbiAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnXFxcXFxcXFxbXFxcXHNcXFxcU10nLCByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5BUE9TX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUVVPVEVfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIGhsanMuUEhSQVNBTF9XT1JEU19NT0RFID0ge1xuICAgIGJlZ2luOiAvXFxiKGF8YW58dGhlfGFyZXxJJ218aXNuJ3R8ZG9uJ3R8ZG9lc24ndHx3b24ndHxidXR8anVzdHxzaG91bGR8cHJldHR5fHNpbXBseXxlbm91Z2h8Z29ubmF8Z29pbmd8d3RmfHNvfHN1Y2h8d2lsbHx5b3V8eW91cnx0aGV5fGxpa2V8bW9yZSlcXGIvXG4gIH07XG4gIGhsanMuQ09NTUVOVCA9IGZ1bmN0aW9uIChiZWdpbiwgZW5kLCBpbmhlcml0cykge1xuICAgIHZhciBtb2RlID0gaGxqcy5pbmhlcml0KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IGJlZ2luLCBlbmQ6IGVuZCxcbiAgICAgICAgY29udGFpbnM6IFtdXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLlBIUkFTQUxfV09SRFNfTU9ERSk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKHtcbiAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICBiZWdpbjogJyg/OlRPRE98RklYTUV8Tk9URXxCVUd8WFhYKTonLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGU7XG4gIH07XG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpO1xuICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJyk7XG4gIGhsanMuSEFTSF9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJyMnLCAnJCcpO1xuICBobGpzLk5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IGhsanMuTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkNTU19OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJyArXG4gICAgICAnJXxlbXxleHxjaHxyZW0nICArXG4gICAgICAnfHZ3fHZofHZtaW58dm1heCcgK1xuICAgICAgJ3xjbXxtbXxpbnxwdHxwY3xweCcgK1xuICAgICAgJ3xkZWd8Z3JhZHxyYWR8dHVybicgK1xuICAgICAgJ3xzfG1zJyArXG4gICAgICAnfEh6fGtIeicgK1xuICAgICAgJ3xkcGl8ZHBjbXxkcHB4JyArXG4gICAgICAnKT8nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLlJFR0VYUF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgYmVnaW46IC9cXC8vLCBlbmQ6IC9cXC9bZ2ltdXldKi8sXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgaGxqcy5USVRMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogaGxqcy5JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuTUVUSE9EX0dVQVJEID0ge1xuICAgIC8vIGV4Y2x1ZGVzIG1ldGhvZCBuYW1lcyBmcm9tIGtleXdvcmQgcHJvY2Vzc2luZ1xuICAgIGJlZ2luOiAnXFxcXC5cXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiBobGpzO1xufSkpO1xuIiwiLy9cbi8vIGZvcm1hdCAtIHByaW50Zi1saWtlIHN0cmluZyBmb3JtYXR0aW5nIGZvciBKYXZhU2NyaXB0XG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL2Zvcm1hdFxuLy8gQF9zanNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxMCAtIDIwMTMgU2FtaSBTYW1odXJpIDxzYW1pQHNhbWh1cmkubmV0PlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vLyBodHRwOi8vc2pzLm1pdC1saWNlbnNlLm9yZ1xuLy9cblxuOyhmdW5jdGlvbigpIHtcblxuICAvLy8vIEV4cG9ydCB0aGUgQVBJXG4gIHZhciBuYW1lc3BhY2U7XG5cbiAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuYW1lc3BhY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxuXG4gIC8vIEJyb3dzZXJzIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBnbG9iYWwgb2JqZWN0LiBXb3JrcyBpbiBFUzMsIEVTNSwgYW5kIEVTNSBzdHJpY3QgbW9kZS5cbiAgICBuYW1lc3BhY2UgPSAoZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKSB9KCkpO1xuICB9XG5cbiAgbmFtZXNwYWNlLmZvcm1hdCA9IGZvcm1hdDtcbiAgbmFtZXNwYWNlLnZzcHJpbnRmID0gdnNwcmludGY7XG5cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICBuYW1lc3BhY2UucHJpbnRmID0gcHJpbnRmO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRmKC8qIC4uLiAqLykge1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwgcmVwbGFjZW1lbnRzKSB7XG4gICAgcmV0dXJuIGZvcm1hdC5hcHBseShudWxsLCBbZm10XS5jb25jYXQocmVwbGFjZW1lbnRzKSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXQoZm10KSB7XG4gICAgdmFyIGFyZ0luZGV4ID0gMSAvLyBza2lwIGluaXRpYWwgZm9ybWF0IGFyZ3VtZW50XG4gICAgICAsIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICAgICwgaSA9IDBcbiAgICAgICwgbiA9IGZtdC5sZW5ndGhcbiAgICAgICwgcmVzdWx0ID0gJydcbiAgICAgICwgY1xuICAgICAgLCBlc2NhcGVkID0gZmFsc2VcbiAgICAgICwgYXJnXG4gICAgICAsIHRtcFxuICAgICAgLCBsZWFkaW5nWmVybyA9IGZhbHNlXG4gICAgICAsIHByZWNpc2lvblxuICAgICAgLCBuZXh0QXJnID0gZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9XG4gICAgICAsIHNsdXJwTnVtYmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGRpZ2l0cyA9ICcnO1xuICAgICAgICAgIHdoaWxlICgvXFxkLy50ZXN0KGZtdFtpXSkpIHtcbiAgICAgICAgICAgIGRpZ2l0cyArPSBmbXRbaSsrXTtcbiAgICAgICAgICAgIGMgPSBmbXRbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkaWdpdHMubGVuZ3RoID4gMCA/IHBhcnNlSW50KGRpZ2l0cykgOiBudWxsO1xuICAgICAgICB9XG4gICAgICA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGMgPSBmbXRbaV07XG4gICAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChjID09ICcuJykge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gZmFsc2U7XG4gICAgICAgICAgYyA9IGZtdFsrK2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGMgPT0gJzAnICYmIGZtdFtpICsgMV0gPT0gJy4nKSB7XG4gICAgICAgICAgbGVhZGluZ1plcm8gPSB0cnVlO1xuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBjID0gZm10W2ldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxlYWRpbmdaZXJvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwcmVjaXNpb24gPSBzbHVycE51bWJlcigpO1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAnYic6IC8vIG51bWJlciBpbiBiaW5hcnlcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2MnOiAvLyBjaGFyYWN0ZXJcbiAgICAgICAgICBhcmcgPSBuZXh0QXJnKCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IGFyZyBpbnN0YW5jZW9mIFN0cmluZylcbiAgICAgICAgICAgIHJlc3VsdCArPSBhcmc7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxMCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkJzogLy8gbnVtYmVyIGluIGRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQobmV4dEFyZygpLCAxMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2YnOiAvLyBmbG9hdGluZyBwb2ludCBudW1iZXJcbiAgICAgICAgICB0bXAgPSBTdHJpbmcocGFyc2VGbG9hdChuZXh0QXJnKCkpLnRvRml4ZWQocHJlY2lzaW9uIHx8IDYpKTtcbiAgICAgICAgICByZXN1bHQgKz0gbGVhZGluZ1plcm8gPyB0bXAgOiB0bXAucmVwbGFjZSgvXjAvLCAnJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2onOiAvLyBKU09OXG4gICAgICAgICAgcmVzdWx0ICs9IEpTT04uc3RyaW5naWZ5KG5leHRBcmcoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ28nOiAvLyBudW1iZXIgaW4gb2N0YWxcbiAgICAgICAgICByZXN1bHQgKz0gJzAnICsgcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3MnOiAvLyBzdHJpbmdcbiAgICAgICAgICByZXN1bHQgKz0gbmV4dEFyZygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzogLy8gbG93ZXJjYXNlIGhleGFkZWNpbWFsXG4gICAgICAgICAgcmVzdWx0ICs9ICcweCcgKyBwYXJzZUludChuZXh0QXJnKCksIDEwKS50b1N0cmluZygxNik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1gnOiAvLyB1cHBlcmNhc2UgaGV4YWRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gJzB4JyArIHBhcnNlSW50KG5leHRBcmcoKSwgMTApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGMgPT09ICclJykge1xuICAgICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn0oKSk7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZvcm1hdHRlciA9IHJlcXVpcmUoJ2Zvcm1hdCcpXG5cbnZhciBmYXVsdCA9IGNyZWF0ZShFcnJvcilcblxubW9kdWxlLmV4cG9ydHMgPSBmYXVsdFxuXG5mYXVsdC5ldmFsID0gY3JlYXRlKEV2YWxFcnJvcilcbmZhdWx0LnJhbmdlID0gY3JlYXRlKFJhbmdlRXJyb3IpXG5mYXVsdC5yZWZlcmVuY2UgPSBjcmVhdGUoUmVmZXJlbmNlRXJyb3IpXG5mYXVsdC5zeW50YXggPSBjcmVhdGUoU3ludGF4RXJyb3IpXG5mYXVsdC50eXBlID0gY3JlYXRlKFR5cGVFcnJvcilcbmZhdWx0LnVyaSA9IGNyZWF0ZShVUklFcnJvcilcblxuZmF1bHQuY3JlYXRlID0gY3JlYXRlXG5cbi8vIENyZWF0ZSBhIG5ldyBgRUNvbnN0cnVjdG9yYCwgd2l0aCB0aGUgZm9ybWF0dGVkIGBmb3JtYXRgIGFzIGEgZmlyc3QgYXJndW1lbnQuXG5mdW5jdGlvbiBjcmVhdGUoRUNvbnN0cnVjdG9yKSB7XG4gIEZvcm1hdHRlZEVycm9yLmRpc3BsYXlOYW1lID0gRUNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IEVDb25zdHJ1Y3Rvci5uYW1lXG5cbiAgcmV0dXJuIEZvcm1hdHRlZEVycm9yXG5cbiAgZnVuY3Rpb24gRm9ybWF0dGVkRXJyb3IoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0dGVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEVDb25zdHJ1Y3Rvcihmb3JtYXQpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaGlnaCA9IHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvaGlnaGxpZ2h0LmpzJylcbnZhciBmYXVsdCA9IHJlcXVpcmUoJ2ZhdWx0JylcblxuLy8gVGhlIGxvd2xpZ2h0IGludGVyZmFjZSwgd2hpY2ggaGFzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBoaWdobGlnaHQuanMsIGFzXG4vLyB0aGlzIG9iamVjdCBpcyBwYXNzZWQgdG8gaGlnaGxpZ2h0LmpzIHN5bnRheGVzLlxuXG5mdW5jdGlvbiBIaWdoKCkge31cblxuSGlnaC5wcm90b3R5cGUgPSBoaWdoXG5cbi8vIEV4cG9zZS5cbnZhciBsb3cgPSBuZXcgSGlnaCgpIC8vIEhhIVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvd1xuXG5sb3cuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0XG5sb3cuaGlnaGxpZ2h0QXV0byA9IGF1dG9IaWdobGlnaHRcbmxvdy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZVxubG93Lmxpc3RMYW5ndWFnZXMgPSBsaXN0TGFuZ3VhZ2VzXG5sb3cucmVnaXN0ZXJBbGlhcyA9IHJlZ2lzdGVyQWxpYXNcbmxvdy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlXG5cbnZhciBpbmhlcml0ID0gaGlnaC5pbmhlcml0XG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxudmFyIGRlZmF1bHRQcmVmaXggPSAnaGxqcy0nXG52YXIga2V5SW5zZW5zaXRpdmUgPSAnY2FzZV9pbnNlbnNpdGl2ZSdcbnZhciBrZXlDYWNoZWRWYXJpYW50cyA9ICdjYWNoZWRfdmFyaWFudHMnXG52YXIga2V5VGVybWluYXRvckVuZCA9ICd0ZXJtaW5hdG9yX2VuZCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHZlcnRpY2FsQmFyID0gJ3wnXG52YXIgcGFyZW5PcGVuID0gJygnXG52YXIgcGFyZW5DbG9zZSA9ICcpJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGNvbW1vbktleXdvcmRzID0gWydvZicsICdhbmQnLCAnZm9yJywgJ2luJywgJ25vdCcsICdvcicsICdpZicsICd0aGVuJ11cblxuLy8gTWFwcyBvZiBzeW50YXhlcy5cbnZhciBsYW5ndWFnZU5hbWVzID0gW11cbnZhciBsYW5ndWFnZXMgPSB7fVxudmFyIGFsaWFzZXMgPSB7fVxuXG4vLyBIaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBkZXRlY3Rpb24uXG4vLyBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gaGlnaGxpZ2h0LlxuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4vL1xuLy8gKiAgIGBsYW5ndWFnZWAg4oCUIERldGVjdGVkIGxhbmd1YWdlXG4vLyAqICAgYHJlbGV2YW5jZWAg4oCUIEludGVnZXJcbi8vICogICBgdmFsdWVgIOKAlCBIQVNUIHRyZWUgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwXG4vLyAqICAgYHNlY29uZEJlc3RgIOKAlCBPYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0XG4vLyAgICAgaGV1cmlzdGljYWxseSBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudC5cbmZ1bmN0aW9uIGF1dG9IaWdobGlnaHQodmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgc3Vic2V0ID0gc2V0dGluZ3Muc3Vic2V0IHx8IGxhbmd1YWdlTmFtZXNcbiAgdmFyIHByZWZpeCA9IHNldHRpbmdzLnByZWZpeFxuICB2YXIgbGVuZ3RoID0gc3Vic2V0Lmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0XG4gIHZhciBzZWNvbmRCZXN0XG4gIHZhciBjdXJyZW50XG4gIHZhciBuYW1lXG5cbiAgaWYgKHByZWZpeCA9PT0gbnVsbCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeCA9IGRlZmF1bHRQcmVmaXhcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgZmF1bHQoJ0V4cGVjdGVkIGBzdHJpbmdgIGZvciB2YWx1ZSwgZ290IGAlc2AnLCB2YWx1ZSlcbiAgfVxuXG4gIHNlY29uZEJlc3QgPSBub3JtYWxpemUoe30pXG4gIHJlc3VsdCA9IG5vcm1hbGl6ZSh7fSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG5hbWUgPSBzdWJzZXRbaW5kZXhdXG5cbiAgICBpZiAoIWdldExhbmd1YWdlKG5hbWUpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBub3JtYWxpemUoY29yZUhpZ2hsaWdodChuYW1lLCB2YWx1ZSwgZmFsc2UsIHByZWZpeCkpXG5cbiAgICBjdXJyZW50Lmxhbmd1YWdlID0gbmFtZVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gc2Vjb25kQmVzdC5yZWxldmFuY2UpIHtcbiAgICAgIHNlY29uZEJlc3QgPSBjdXJyZW50XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gcmVzdWx0LnJlbGV2YW5jZSkge1xuICAgICAgc2Vjb25kQmVzdCA9IHJlc3VsdFxuICAgICAgcmVzdWx0ID0gY3VycmVudFxuICAgIH1cbiAgfVxuXG4gIGlmIChzZWNvbmRCZXN0Lmxhbmd1YWdlKSB7XG4gICAgcmVzdWx0LnNlY29uZEJlc3QgPSBzZWNvbmRCZXN0XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIEhpZ2hsaWdodGluZyBgdmFsdWVgIGluIHRoZSBsYW5ndWFnZSBgbGFuZ3VhZ2VgLlxuZnVuY3Rpb24gaGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gZGVmYXVsdFByZWZpeFxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb3JlSGlnaGxpZ2h0KGxhbmd1YWdlLCB2YWx1ZSwgdHJ1ZSwgcHJlZml4KSlcbn1cblxuLy8gUmVnaXN0ZXIgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobmFtZSwgc3ludGF4KSB7XG4gIHZhciBsYW5nID0gc3ludGF4KGxvdylcblxuICBsYW5nLnJhd0RlZmluaXRpb24gPSBzeW50YXguYmluZChudWxsLCBsb3cpXG5cbiAgbGFuZ3VhZ2VzW25hbWVdID0gbGFuZ1xuXG4gIGxhbmd1YWdlTmFtZXMucHVzaChuYW1lKVxuXG4gIGlmIChsYW5nLmFsaWFzZXMpIHtcbiAgICByZWdpc3RlckFsaWFzKG5hbWUsIGxhbmcuYWxpYXNlcylcbiAgfVxufVxuXG4vLyBHZXQgYSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGxhbmd1YWdlcy5cbmZ1bmN0aW9uIGxpc3RMYW5ndWFnZXMoKSB7XG4gIHJldHVybiBsYW5ndWFnZU5hbWVzLmNvbmNhdCgpXG59XG5cbi8vIFJlZ2lzdGVyIG1vcmUgYWxpYXNlcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIGxhbmd1YWdlLlxuZnVuY3Rpb24gcmVnaXN0ZXJBbGlhcyhuYW1lLCBhbGlhcykge1xuICB2YXIgbWFwID0gbmFtZVxuICB2YXIga2V5XG4gIHZhciBsaXN0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGFsaWFzKSB7XG4gICAgbWFwID0ge31cbiAgICBtYXBbbmFtZV0gPSBhbGlhc1xuICB9XG5cbiAgZm9yIChrZXkgaW4gbWFwKSB7XG4gICAgbGlzdCA9IG1hcFtrZXldXG4gICAgbGlzdCA9IHR5cGVvZiBsaXN0ID09PSAnc3RyaW5nJyA/IFtsaXN0XSA6IGxpc3RcbiAgICBsZW5ndGggPSBsaXN0Lmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhbGlhc2VzW2xpc3RbaW5kZXhdXSA9IGtleVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi5cbi8vIEFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lLCBvciBhbiBhbGlhcywgYW5kIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbi8vIGhpZ2hsaWdodC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5mdW5jdGlvbiBjb3JlSGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBpZ25vcmUsIHByZWZpeCwgY29udGludWF0aW9uKSB7XG4gIHZhciBsYXN0TWF0Y2ggPSB7fVxuICB2YXIgY29udGludWF0aW9ucyA9IHt9XG4gIHZhciBzdGFjayA9IFtdXG4gIHZhciBtb2RlQnVmZmVyID0gJydcbiAgdmFyIHJlbGV2YW5jZSA9IDBcbiAgdmFyIGxhbmd1YWdlXG4gIHZhciB0b3BcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIGN1cnJlbnRDaGlsZHJlblxuICB2YXIgb2Zmc2V0XG4gIHZhciBjb3VudFxuICB2YXIgbWF0Y2hcbiAgdmFyIGNoaWxkcmVuXG5cbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IGZhdWx0KCdFeHBlY3RlZCBgc3RyaW5nYCBmb3IgbmFtZSwgZ290IGAlc2AnLCBuYW1lKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBmYXVsdCgnRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIHZhbHVlLCBnb3QgYCVzYCcsIHZhbHVlKVxuICB9XG5cbiAgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShuYW1lKVxuICB0b3AgPSBjb250aW51YXRpb24gfHwgbGFuZ3VhZ2VcbiAgY2hpbGRyZW4gPSBbXVxuXG4gIGN1cnJlbnQgPSB0b3BcbiAgY3VycmVudENoaWxkcmVuID0gY2hpbGRyZW5cblxuICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgdGhyb3cgZmF1bHQoJ1Vua25vd24gbGFuZ3VhZ2U6IGAlc2AgaXMgbm90IHJlZ2lzdGVyZWQnLCBuYW1lKVxuICB9XG5cbiAgY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKVxuXG4gIHRyeSB7XG4gICAgdG9wLnRlcm1pbmF0b3JzLmxhc3RJbmRleCA9IDBcbiAgICBvZmZzZXQgPSAwXG4gICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSlcblxuICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgY291bnQgPSBwcm9jZXNzTGV4ZW1lKHZhbHVlLnNsaWNlKG9mZnNldCwgbWF0Y2guaW5kZXgpLCBtYXRjaClcbiAgICAgIG9mZnNldCA9IG1hdGNoLmluZGV4ICsgY291bnRcbiAgICAgIHRvcC50ZXJtaW5hdG9ycy5sYXN0SW5kZXggPSBvZmZzZXRcbiAgICAgIG1hdGNoID0gdG9wLnRlcm1pbmF0b3JzLmV4ZWModmFsdWUpXG4gICAgfVxuXG4gICAgcHJvY2Vzc0xleGVtZSh2YWx1ZS5zbGljZShvZmZzZXQpKVxuICAgIGN1cnJlbnQgPSB0b3BcblxuICAgIHdoaWxlIChjdXJyZW50LnBhcmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWxldmFuY2U6IHJlbGV2YW5jZSxcbiAgICAgIHZhbHVlOiBjdXJyZW50Q2hpbGRyZW4sXG4gICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgIGxhbmd1YWdlOiBuYW1lLFxuICAgICAgdG9wOiB0b3BcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gQ2F0Y2gtYWxsICAqL1xuICAgIGlmIChlcnJvci5tZXNzYWdlLmluZGV4T2YoJ0lsbGVnYWwnKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZWxldmFuY2U6IDAsIGlsbGVnYWw6IHRydWUsIHZhbHVlOiBhZGRUZXh0KHZhbHVlLCBbXSl9XG4gIH1cblxuICBmdW5jdGlvbiBlc2NhcGVSZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLnJlcGxhY2UoL1stL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKSwgJ20nKVxuICB9XG5cbiAgZnVuY3Rpb24gZG9CZWdpbk1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG5ld01vZGUgPSBtYXRjaC5ydWxlXG5cbiAgICBpZiAobmV3TW9kZSAmJiBuZXdNb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICBuZXdNb2RlLmVuZFJlID0gZXNjYXBlUmUobGV4ZW1lKVxuICAgIH1cblxuICAgIGlmIChuZXdNb2RlLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuICAgICAgfVxuXG4gICAgICBhZGRTaWJsaW5ncyhwcm9jZXNzQnVmZmVyKCksIGN1cnJlbnRDaGlsZHJlbilcblxuICAgICAgaWYgKCFuZXdNb2RlLnJldHVybkJlZ2luICYmICFuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICBtb2RlQnVmZmVyID0gbGV4ZW1lXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhcnROZXdNb2RlKG5ld01vZGUpXG5cbiAgICByZXR1cm4gbmV3TW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoWzBdXG4gICAgdmFyIG1hdGNoUGx1c1JlbWFpbmRlciA9IHZhbHVlLnNsaWNlKG1hdGNoLmluZGV4KVxuICAgIHZhciBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbWF0Y2hQbHVzUmVtYWluZGVyKVxuXG4gICAgaWYgKCFlbmRNb2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgb3JpZ2luID0gdG9wXG5cbiAgICBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKG9yaWdpbi5yZXR1cm5FbmQgfHwgb3JpZ2luLmV4Y2x1ZGVFbmQpKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgICB9XG5cbiAgICAgIGFkZFNpYmxpbmdzKHByb2Nlc3NCdWZmZXIoKSwgY3VycmVudENoaWxkcmVuKVxuXG4gICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgbW9kZUJ1ZmZlciA9IGxleGVtZVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgIHBvcCgpXG4gICAgICB9XG5cbiAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICByZWxldmFuY2UgKz0gdG9wLnJlbGV2YW5jZVxuICAgICAgfVxuXG4gICAgICB0b3AgPSB0b3AucGFyZW50XG4gICAgfSB3aGlsZSAodG9wICE9PSBlbmRNb2RlLnBhcmVudClcblxuICAgIGlmIChlbmRNb2RlLnN0YXJ0cykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gaGxqcyA5LjE2IGFkZGVkIHN1cHBvcnQgZm9yIHRoaXMgYnV0IGRpZG7igJl0IHVzZSBpdCB5ZXQuICovXG4gICAgICBpZiAoZW5kTW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBlbmRNb2RlLnN0YXJ0cy5lbmRSZSA9IGVuZE1vZGUuZW5kUmVcbiAgICAgIH1cblxuICAgICAgc3RhcnROZXdNb2RlKGVuZE1vZGUuc3RhcnRzKVxuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dEJlZm9yZU1hdGNoLCBtYXRjaCkge1xuICAgIHZhciBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXVxuICAgIHZhciBwcm9jZXNzZWRcblxuICAgIC8vIEFkZCBub24tbWF0Y2hlZCB0ZXh0IHRvIHRoZSBjdXJyZW50IG1vZGUgYnVmZmVyXG4gICAgbW9kZUJ1ZmZlciArPSB0ZXh0QmVmb3JlTWF0Y2hcblxuICAgIGlmIChsZXhlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pXG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIC8vIFdlJ3ZlIGZvdW5kIGEgMCB3aWR0aCBtYXRjaCBhbmQgd2UncmUgc3R1Y2ssIHNvIHdlIG5lZWQgdG8gYWR2YW5jZVxuICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYmFkbHkgYmVoYXZlZCBydWxlcyB0aGF0IGhhdmUgb3B0aW9uYWwgbWF0Y2hlcnMgdG8gdGhlIGRlZ3JlZSB0aGF0XG4gICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjE0MFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIFVua25vd24gd2hhdCB0aGlzIGZpeGVzIG9yIHdoaWNoIGNhc2UgZml4ZXMgaXQgKi9cbiAgICBpZiAoXG4gICAgICBsYXN0TWF0Y2gudHlwZSA9PT0gJ2JlZ2luJyAmJlxuICAgICAgbWF0Y2gudHlwZSA9PT0gJ2VuZCcgJiZcbiAgICAgIGxhc3RNYXRjaC5pbmRleCA9PT0gbWF0Y2guaW5kZXggJiZcbiAgICAgIGxleGVtZSA9PT0gJydcbiAgICApIHtcbiAgICAgIC8vIFNwaXQgdGhlIOKAnHNraXBwZWTigJ0gY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgbW9kZUJ1ZmZlciArPSB2YWx1ZS5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBsYXN0TWF0Y2ggPSBtYXRjaFxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdiZWdpbicpIHtcbiAgICAgIHJldHVybiBkb0JlZ2luTWF0Y2gobWF0Y2gpXG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdlbmQnKSB7XG4gICAgICBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKVxuXG4gICAgICBpZiAocHJvY2Vzc2VkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXRjaC50eXBlID09PSAnaWxsZWdhbCcgJiYgIWlnbm9yZSkge1xuICAgICAgLy8gSWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgIHRocm93IGZhdWx0KFxuICAgICAgICAnSWxsZWdhbCBsZXhlbWUgXCIlc1wiIGZvciBtb2RlIFwiJXNcIicsXG4gICAgICAgIGxleGVtZSxcbiAgICAgICAgdG9wLmNsYXNzTmFtZSB8fCAnPHVubmFtZWQ+J1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlP1xuICAgIC8vIE9ubHkgb25lIG9jY2FzaW9uIG5vdy5cbiAgICAvLyBBbiBlbmQgbWF0Y2ggdGhhdCB3YXMgdHJpZ2dlcmVkIGJ1dCBjb3VsZCBub3QgYmUgY29tcGxldGVkLlxuICAgIC8vIFdoZW4gbWlnaHQgdGhpcyBoYXBwZW4/XG4gICAgLy8gV2hlbiBhbiBgZW5kU2FtZWFzQmVnaW5gIHJ1bGUgc2V0cyB0aGUgZW5kIHJ1bGUgdG8gYSBzcGVjaWZpYyBtYXRjaC5cbiAgICAvLyBTaW5jZSB0aGUgb3ZlcmFsbCBtb2RlIHRlcm1pbmF0aW9uIHJ1bGUgdGhhdOKAmXMgYmVpbmcgdXNlZCB0byBzY2FuIHRoZVxuICAgIC8vIHRleHQgaXNu4oCZdCByZWNvbXBpbGVkIHRoYXQgbWVhbnMgdGhhdCBhbnkgbWF0Y2ggdGhhdCBMT09LUyBsaWtlIHRoZSBlbmRcbiAgICAvLyAoYnV0IGlzIG5vdCwgYmVjYXVzZSBpdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlIGJlZ2lubmluZykgd2lsbCBlbmRcbiAgICAvLyB1cCBoZXJlLlxuICAgIC8vIEEgZGVmaW5pdGUgZW5kIG1hdGNoLCBidXQgd2hlbiBgZG9FbmRNYXRjaGAgdHJpZXMgdG8g4oCccmVhcHBseeKAnSB0aGUgZW5kXG4gICAgLy8gcnVsZSBhbmQgZmFpbHMgdG8gbWF0Y2gsIHdlIHdpbmQgdXAgaGVyZSwgYW5kIGp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZVxuICAgIC8vIGVuZC5cbiAgICAvLyBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICBtb2RlQnVmZmVyICs9IGxleGVtZVxuXG4gICAgcmV0dXJuIGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IG1vZGUgd2l0aCBhIGBsZXhlbWVgIHRvIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlKSB7XG4gICAgdmFyIG5vZGVcblxuICAgIGlmIChtb2RlLmNsYXNzTmFtZSkge1xuICAgICAgbm9kZSA9IGJ1aWxkKG1vZGUuY2xhc3NOYW1lLCBbXSlcbiAgICB9XG5cbiAgICAvLyBFbnRlciBhIG5ldyBtb2RlLlxuICAgIGlmIChub2RlKSB7XG4gICAgICBjdXJyZW50Q2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgc3RhY2sucHVzaChjdXJyZW50Q2hpbGRyZW4pXG4gICAgICBjdXJyZW50Q2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gICAgfVxuXG4gICAgdG9wID0gT2JqZWN0LmNyZWF0ZShtb2RlLCB7cGFyZW50OiB7dmFsdWU6IHRvcH19KVxuICB9XG5cbiAgLy8gUHJvY2VzcyB0aGUgYnVmZmVyLlxuICBmdW5jdGlvbiBwcm9jZXNzQnVmZmVyKCkge1xuICAgIHZhciByZXN1bHQgPSB0b3Auc3ViTGFuZ3VhZ2UgPyBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSA6IHByb2Nlc3NLZXl3b3JkcygpXG4gICAgbW9kZUJ1ZmZlciA9ICcnXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gUHJvY2VzcyBhIHN1Ymxhbmd1YWdlIChyZXR1cm5zIGEgbGlzdCBvZiBub2RlcykuXG4gIGZ1bmN0aW9uIHByb2Nlc3NTdWJMYW5ndWFnZSgpIHtcbiAgICB2YXIgZXhwbGljaXQgPSB0eXBlb2YgdG9wLnN1Ykxhbmd1YWdlID09PSAnc3RyaW5nJ1xuICAgIHZhciBzdWJ2YWx1ZVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gc3VwcG9ydCBub24tbG9hZGVkIHN1Ymxhbmd1YWdlcyAqL1xuICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIFtdKVxuICAgIH1cblxuICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgc3VidmFsdWUgPSBjb3JlSGlnaGxpZ2h0KFxuICAgICAgICB0b3Auc3ViTGFuZ3VhZ2UsXG4gICAgICAgIG1vZGVCdWZmZXIsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgY29udGludWF0aW9uc1t0b3Auc3ViTGFuZ3VhZ2VdXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnZhbHVlID0gYXV0b0hpZ2hsaWdodChtb2RlQnVmZmVyLCB7XG4gICAgICAgIHN1YnNldDogdG9wLnN1Ykxhbmd1YWdlLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHRvcC5zdWJMYW5ndWFnZSxcbiAgICAgICAgcHJlZml4OiBwcmVmaXhcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgY291bGRu4oCZdCBoaWdobGlnaHQsIGZvciBleGFtcGxlIGJlY2F1c2UgdGhlIHJlcXVlc3RzIHN1YnNldCBpc27igJl0XG4gICAgLy8gbG9hZGVkLCByZXR1cm4gYSB0ZXh0IG5vZGUuXG4gICAgaWYgKCFzdWJ2YWx1ZS5sYW5ndWFnZSkge1xuICAgICAgcmV0dXJuIFtidWlsZFRleHQobW9kZUJ1ZmZlcildXG4gICAgfVxuXG4gICAgLy8gQ291bnRpbmcgZW1iZWRkZWQgbGFuZ3VhZ2Ugc2NvcmUgdG93YXJkcyB0aGUgaG9zdCBsYW5ndWFnZSBtYXkgYmVcbiAgICAvLyBkaXNhYmxlZCB3aXRoIHplcm9pbmcgdGhlIGNvbnRhaW5pbmcgbW9kZSByZWxldmFuY2UuXG4gICAgLy8gVXNlY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0IGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnlcbiAgICAvLyBYTUwgc25pcHBldCB0byBoYXZlIGEgbXVjaCBsYXJnZXIgTWFya2Rvd24gc2NvcmUuXG4gICAgaWYgKHRvcC5yZWxldmFuY2UgPiAwKSB7XG4gICAgICByZWxldmFuY2UgKz0gc3VidmFsdWUucmVsZXZhbmNlXG4gICAgfVxuXG4gICAgaWYgKGV4cGxpY2l0KSB7XG4gICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSBzdWJ2YWx1ZS50b3BcbiAgICB9XG5cbiAgICByZXR1cm4gW2J1aWxkKHN1YnZhbHVlLmxhbmd1YWdlLCBzdWJ2YWx1ZS52YWx1ZSwgdHJ1ZSldXG4gIH1cblxuICAvLyBQcm9jZXNzIGtleXdvcmRzLiBSZXR1cm5zIG5vZGVzLlxuICBmdW5jdGlvbiBwcm9jZXNzS2V5d29yZHMoKSB7XG4gICAgdmFyIG5vZGVzID0gW11cbiAgICB2YXIgbGFzdEluZGV4XG4gICAgdmFyIGtleXdvcmRcbiAgICB2YXIgbm9kZVxuICAgIHZhciBzdWJtYXRjaFxuXG4gICAgaWYgKCF0b3Aua2V5d29yZHMpIHtcbiAgICAgIHJldHVybiBhZGRUZXh0KG1vZGVCdWZmZXIsIG5vZGVzKVxuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IDBcblxuICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMFxuXG4gICAga2V5d29yZCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlQnVmZmVyKVxuXG4gICAgd2hpbGUgKGtleXdvcmQpIHtcbiAgICAgIGFkZFRleHQobW9kZUJ1ZmZlci5zbGljZShsYXN0SW5kZXgsIGtleXdvcmQuaW5kZXgpLCBub2RlcylcblxuICAgICAgc3VibWF0Y2ggPSBrZXl3b3JkTWF0Y2godG9wLCBrZXl3b3JkKVxuXG4gICAgICBpZiAoc3VibWF0Y2gpIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHN1Ym1hdGNoWzFdXG5cbiAgICAgICAgbm9kZSA9IGJ1aWxkKHN1Ym1hdGNoWzBdLCBbXSlcblxuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpXG5cbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlLmNoaWxkcmVuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkVGV4dChrZXl3b3JkWzBdLCBub2RlcylcbiAgICAgIH1cblxuICAgICAgbGFzdEluZGV4ID0gdG9wLmxleGVtZXNSZS5sYXN0SW5kZXhcbiAgICAgIGtleXdvcmQgPSB0b3AubGV4ZW1lc1JlLmV4ZWMobW9kZUJ1ZmZlcilcbiAgICB9XG5cbiAgICBhZGRUZXh0KG1vZGVCdWZmZXIuc2xpY2UobGFzdEluZGV4KSwgbm9kZXMpXG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEFkZCBzaWJsaW5ncy5cbiAgZnVuY3Rpb24gYWRkU2libGluZ3Moc2libGluZ3MsIG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNpYmxpbmdzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHNpYmxpbmdcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzaWJsaW5nID0gc2libGluZ3NbaW5kZXhdXG5cbiAgICAgIGlmIChzaWJsaW5nLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICBhZGRUZXh0KHNpYmxpbmcudmFsdWUsIG5vZGVzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMucHVzaChzaWJsaW5nKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBhIHRleHQuXG4gIGZ1bmN0aW9uIGFkZFRleHQodmFsdWUsIG5vZGVzKSB7XG4gICAgdmFyIHRhaWxcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGFpbCA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdXG5cbiAgICAgIGlmICh0YWlsICYmIHRhaWwudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIHRhaWwudmFsdWUgKz0gdmFsdWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzLnB1c2goYnVpbGRUZXh0KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgdGV4dC5cbiAgZnVuY3Rpb24gYnVpbGRUZXh0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAndGV4dCcsIHZhbHVlOiB2YWx1ZX1cbiAgfVxuXG4gIC8vIEJ1aWxkIGEgc3Bhbi5cbiAgZnVuY3Rpb24gYnVpbGQobmFtZSwgY29udGVudHMsIG5vUHJlZml4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgIHRhZ05hbWU6ICdzcGFuJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiBbKG5vUHJlZml4ID8gJycgOiBwcmVmaXgpICsgbmFtZV1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogY29udGVudHNcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZmlyc3Qgd29yZCBpbiBga2V5d29yZHNgIGlzIGEga2V5d29yZC5cbiAgZnVuY3Rpb24ga2V5d29yZE1hdGNoKG1vZGUsIGtleXdvcmRzKSB7XG4gICAgdmFyIGtleXdvcmQgPSBrZXl3b3Jkc1swXVxuXG4gICAgaWYgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSkge1xuICAgICAga2V5d29yZCA9IGtleXdvcmQudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBvd24uY2FsbChtb2RlLmtleXdvcmRzLCBrZXl3b3JkKSAmJiBtb2RlLmtleXdvcmRzW2tleXdvcmRdXG4gIH1cblxuICAvLyBDaGVjayBpZiBgbGV4ZW1lYCBlbmRzIGBtb2RlYC5cbiAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgIGlmICh0ZXN0KG1vZGUuZW5kUmUsIGxleGVtZSkpIHtcbiAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb2RlXG4gICAgfVxuXG4gICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIGxleGVtZSlcbiAgICB9XG4gIH1cblxuICAvLyBFeGl0IHRoZSBjdXJyZW50IGNvbnRleHQuXG4gIGZ1bmN0aW9uIHBvcCgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHJlbW92ZWQgaW4gaGxqcyA5LjMgKi9cbiAgICBjdXJyZW50Q2hpbGRyZW4gPSBzdGFjay5wb3AoKSB8fCBjaGlsZHJlblxuICB9XG59XG5cbi8vIENvbXBpbGUgYSBsYW5ndWFnZS5cbmZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuICBjb21waWxlTW9kZShsYW5ndWFnZSlcblxuICAvLyBDb21waWxlIGEgbGFuZ3VhZ2UgbW9kZSwgb3B0aW9uYWxseSB3aXRoIGEgcGFyZW50LlxuICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICBpZiAobW9kZS5jb21waWxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbW9kZS5jb21waWxlZCA9IHRydWVcblxuICAgIG1vZGUua2V5d29yZHMgPSBtb2RlLmtleXdvcmRzIHx8IG1vZGUuYmVnaW5LZXl3b3Jkc1xuXG4gICAgaWYgKG1vZGUua2V5d29yZHMpIHtcbiAgICAgIG1vZGUua2V5d29yZHMgPSBjb21waWxlS2V5d29yZHMobW9kZS5rZXl3b3JkcywgbGFuZ3VhZ2Vba2V5SW5zZW5zaXRpdmVdKVxuICAgIH1cblxuICAgIG1vZGUubGV4ZW1lc1JlID0gbGFuZ1JlKG1vZGUubGV4ZW1lcyB8fCAvXFx3Ky8sIHRydWUpXG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPVxuICAgICAgICAgICdcXFxcYignICsgbW9kZS5iZWdpbktleXdvcmRzLnNwbGl0KHNwYWNlKS5qb2luKHZlcnRpY2FsQmFyKSArICcpXFxcXGInXG4gICAgICB9XG5cbiAgICAgIGlmICghbW9kZS5iZWdpbikge1xuICAgICAgICBtb2RlLmJlZ2luID0gL1xcQnxcXGIvXG4gICAgICB9XG5cbiAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKVxuXG4gICAgICBpZiAobW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBtb2RlLmVuZCA9IG1vZGUuYmVnaW5cbiAgICAgIH1cblxuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICBtb2RlLmVuZCA9IC9cXEJ8XFxiL1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZS5lbmQpIHtcbiAgICAgICAgbW9kZS5lbmRSZSA9IGxhbmdSZShtb2RlLmVuZClcbiAgICAgIH1cblxuICAgICAgbW9kZVtrZXlUZXJtaW5hdG9yRW5kXSA9IHNvdXJjZShtb2RlLmVuZCkgfHwgJydcblxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQgJiYgcGFyZW50W2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICAgIG1vZGVba2V5VGVybWluYXRvckVuZF0gKz1cbiAgICAgICAgICAobW9kZS5lbmQgPyB2ZXJ0aWNhbEJhciA6ICcnKSArIHBhcmVudFtrZXlUZXJtaW5hdG9yRW5kXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIG1vZGUuaWxsZWdhbFJlID0gbGFuZ1JlKG1vZGUuaWxsZWdhbClcbiAgICB9XG5cbiAgICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZS5yZWxldmFuY2UgPSAxXG4gICAgfVxuXG4gICAgbW9kZS5jb250YWlucyA9IGNvbXBpbGVDb250YWlucyhtb2RlLmNvbnRhaW5zIHx8IFtdLCBtb2RlKVxuXG4gICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICBjb21waWxlTW9kZShtb2RlLnN0YXJ0cywgcGFyZW50KVxuICAgIH1cblxuICAgIG1vZGUudGVybWluYXRvcnMgPSBidWlsZE1vZGVSZWdleChtb2RlKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZUNvbnRhaW5zKGNvbnRhaW5zLCBtb2RlKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIGxlbmd0aCA9IGNvbnRhaW5zLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGNvbnRhaW5lZFxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvbnRhaW5lZCA9IGNvbnRhaW5zW2luZGV4XVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChcbiAgICAgICAgZXhwYW5kT3JDbG9uZU1vZGUoY29udGFpbmVkID09PSAnc2VsZicgPyBtb2RlIDogY29udGFpbmVkKVxuICAgICAgKVxuICAgIH1cblxuICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29tcGlsZU1vZGUocmVzdWx0W2luZGV4XSwgbW9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZE1vZGVSZWdleChtb2RlKSB7XG4gICAgdmFyIGluZGljZXMgPSB7fVxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIHJlZ2V4ZXMgPSBbXVxuICAgIHZhciBtYXRjaGVyID0ge31cbiAgICB2YXIgbWF0Y2hBdCA9IDFcbiAgICB2YXIgdGVybVxuICAgIHZhciB2YWx1ZXMgPSBtb2RlLmNvbnRhaW5zXG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciB0ZXJtaW5hdG9ycyA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybSA9IHZhbHVlc1tpbmRleF1cblxuICAgICAgYWRkUnVsZShcbiAgICAgICAgdGVybSxcbiAgICAgICAgdGVybS5iZWdpbktleXdvcmRzID8gJ1xcXFwuPyg/OicgKyB0ZXJtLmJlZ2luICsgJylcXFxcLj8nIDogdGVybS5iZWdpblxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChtb2RlW2tleVRlcm1pbmF0b3JFbmRdKSB7XG4gICAgICBhZGRSdWxlKCdlbmQnLCBtb2RlW2tleVRlcm1pbmF0b3JFbmRdKVxuICAgIH1cblxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIGFkZFJ1bGUoJ2lsbGVnYWwnLCBtb2RlLmlsbGVnYWwpXG4gICAgfVxuXG4gICAgbGVuZ3RoID0gcmVnZXhlcy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdGVybWluYXRvcnNbaW5kZXhdID0gcmVnZXhlc1tpbmRleF1bMV1cbiAgICB9XG5cbiAgICBleHByZXNzaW9uID0gbGFuZ1JlKGpvaW5SZSh0ZXJtaW5hdG9ycywgdmVydGljYWxCYXIpLCB0cnVlKVxuXG4gICAgbWF0Y2hlciA9IHtsYXN0SW5kZXg6IDAsIGV4ZWM6IGV4ZWN9XG5cbiAgICByZXR1cm4gbWF0Y2hlclxuXG4gICAgZnVuY3Rpb24gZXhlYyh2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG4gICAgICB2YXIgcnVsZVxuICAgICAgdmFyIG1hdGNoXG4gICAgICB2YXIgc3VibWF0Y2hcblxuICAgICAgaWYgKHJlZ2V4ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgICBleHByZXNzaW9uLmxhc3RJbmRleCA9IG1hdGNoZXIubGFzdEluZGV4XG4gICAgICBtYXRjaCA9IGV4cHJlc3Npb24uZXhlYyh2YWx1ZSlcblxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICBsZW5ndGggPSBtYXRjaC5sZW5ndGhcbiAgICAgIGluZGV4ID0gLTFcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgc3VibWF0Y2ggPSBtYXRjaFtpbmRleF1cblxuICAgICAgICBpZiAoc3VibWF0Y2ggIT09IHVuZGVmaW5lZCAmJiBpbmRpY2VzW2luZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcnVsZSA9IGluZGljZXNbaW5kZXhdXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJbGxlZ2FsIG9yIGVuZCBtYXRjaFxuICAgICAgaWYgKHR5cGVvZiBydWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBtYXRjaC50eXBlID0gcnVsZVxuICAgICAgICBtYXRjaC5leHRyYSA9IFttb2RlLmlsbGVnYWwsIG1vZGUudGVybWluYXRvcl9lbmRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaC50eXBlID0gJ2JlZ2luJ1xuICAgICAgICBtYXRjaC5ydWxlID0gcnVsZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRSdWxlKHJ1bGUsIHJlZ2V4KSB7XG4gICAgICBpbmRpY2VzW21hdGNoQXRdID0gcnVsZVxuICAgICAgcmVnZXhlcy5wdXNoKFtydWxlLCByZWdleF0pXG4gICAgICBtYXRjaEF0ICs9IG5ldyBSZWdFeHAocmVnZXgudG9TdHJpbmcoKSArIHZlcnRpY2FsQmFyKS5leGVjKCcnKS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBqb2luUmUocmVnZXhlcywgc2VwYXJhdG9yKSB7XG4gICAgdmFyIGJhY2tyZWZlcmVuY2VSZSA9IC9cXFsoPzpbXlxcXFxcXF1dfFxcXFwuKSpcXF18XFwoXFw/P3xcXFxcKFsxLTldXFxkKil8XFxcXC4vXG4gICAgdmFyIGNhcHR1cmVzID0gMFxuICAgIHZhciByZXN1bHQgPSAnJ1xuICAgIHZhciBsZW5ndGggPSByZWdleGVzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHJlZ2V4XG4gICAgdmFyIG9mZnNldFxuICAgIHZhciBleHByZXNzaW9uXG4gICAgdmFyIG1hdGNoXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVnZXggPSByZWdleGVzW2luZGV4XVxuICAgICAgZXhwcmVzc2lvbiA9IHNvdXJjZShyZWdleClcbiAgICAgIGNhcHR1cmVzICs9IDFcbiAgICAgIG9mZnNldCA9IGNhcHR1cmVzXG5cbiAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yXG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbk9wZW5cblxuICAgICAgd2hpbGUgKGV4cHJlc3Npb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXRjaCA9IGJhY2tyZWZlcmVuY2VSZS5leGVjKGV4cHJlc3Npb24pXG5cbiAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb25cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ICs9IGV4cHJlc3Npb24uc2xpY2UoMCwgbWF0Y2guaW5kZXgpXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnNsaWNlKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKVxuXG4gICAgICAgIGlmIChtYXRjaFswXVswXSA9PT0gYmFja3NsYXNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICAgIHJlc3VsdCArPSBiYWNrc2xhc2ggKyBTdHJpbmcoTnVtYmVyKG1hdGNoWzFdKSArIG9mZnNldClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gbWF0Y2hbMF1cblxuICAgICAgICAgIGlmIChtYXRjaFswXSA9PT0gcGFyZW5PcGVuKSB7XG4gICAgICAgICAgICBjYXB0dXJlcysrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBwYXJlbkNsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgcmVnZXggZm9yIGB2YWx1ZWAuXG4gIGZ1bmN0aW9uIGxhbmdSZSh2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICBzb3VyY2UodmFsdWUpLFxuICAgICAgJ20nICsgKGxhbmd1YWdlW2tleUluc2Vuc2l0aXZlXSA/ICdpJyA6ICcnKSArIChnbG9iYWwgPyAnZycgOiAnJylcbiAgICApXG4gIH1cblxuICAvLyBHZXQgdGhlIHNvdXJjZSBvZiBhbiBleHByZXNzaW9uIG9yIHN0cmluZy5cbiAgZnVuY3Rpb24gc291cmNlKHJlKSB7XG4gICAgcmV0dXJuIChyZSAmJiByZS5zb3VyY2UpIHx8IHJlXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZUtleXdvcmRzKHZhbHVlcywgY2FzZUluc2Vuc2l0aXZlKSB7XG4gIHZhciBjb21waWxlZCA9IHt9XG4gIHZhciBrZXlcblxuICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gJ3N0cmluZycpIHtcbiAgICBmbGF0dGVuKCdrZXl3b3JkJywgdmFsdWVzKVxuICB9IGVsc2Uge1xuICAgIGZvciAoa2V5IGluIHZhbHVlcykge1xuICAgICAgZmxhdHRlbihrZXksIHZhbHVlc1trZXldKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21waWxlZFxuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oa2V5LCB2YWx1ZSkge1xuICAgIHZhciB2YWwgPSBjYXNlSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWVcbiAgICBhbGwoa2V5LCB2YWwuc3BsaXQoc3BhY2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gYWxsKGtleSwgdmFsdWVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBwYWlyXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcGFpciA9IHZhbHVlc1tpbmRleF0uc3BsaXQodmVydGljYWxCYXIpXG4gICAgICBjb21waWxlZFtwYWlyWzBdXSA9IFtrZXksIE51bWJlcihwYWlyWzFdKSB8fCBjb21tb24ocGFpclswXSkgPyAwIDogMV1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbW9uKHZhbHVlKSB7XG4gIHJldHVybiBjb21tb25LZXl3b3Jkcy5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBleHBhbmRPckNsb25lTW9kZShtb2RlKSB7XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciB2YXJpYW50c1xuICB2YXIgcmVzdWx0XG5cbiAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGVba2V5Q2FjaGVkVmFyaWFudHNdKSB7XG4gICAgdmFyaWFudHMgPSBtb2RlLnZhcmlhbnRzXG4gICAgbGVuZ3RoID0gdmFyaWFudHMubGVuZ3RoXG4gICAgaW5kZXggPSAtMVxuICAgIHJlc3VsdCA9IFtdXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGluaGVyaXQobW9kZSwge3ZhcmlhbnRzOiBudWxsfSwgdmFyaWFudHNbaW5kZXhdKVxuICAgIH1cblxuICAgIG1vZGVba2V5Q2FjaGVkVmFyaWFudHNdID0gcmVzdWx0XG4gIH1cblxuICAvLyBFeHBhbmQuXG4gIGlmIChtb2RlLmNhY2hlZF92YXJpYW50cykgcmV0dXJuIG1vZGUuY2FjaGVkX3ZhcmlhbnRzXG5cbiAgLy8gQ2xvbmUuXG4gIGlmIChkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkpXG4gICAgcmV0dXJuIFtpbmhlcml0KG1vZGUsIHtzdGFydHM6IG1vZGUuc3RhcnRzID8gaW5oZXJpdChtb2RlLnN0YXJ0cykgOiBudWxsfSldXG5cbiAgcmV0dXJuIFttb2RlXVxufVxuXG5mdW5jdGlvbiBkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkge1xuICByZXR1cm4gbW9kZSA/IG1vZGUuZW5kc1dpdGhQYXJlbnQgfHwgZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUuc3RhcnRzKSA6IGZhbHNlXG59XG5cbi8vIE5vcm1hbGl6ZSBhIHN5bnRheCByZXN1bHQuXG5mdW5jdGlvbiBub3JtYWxpemUocmVzdWx0KSB7XG4gIHJldHVybiB7XG4gICAgcmVsZXZhbmNlOiByZXN1bHQucmVsZXZhbmNlIHx8IDAsXG4gICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSB8fCBudWxsLFxuICAgIHZhbHVlOiByZXN1bHQudmFsdWUgfHwgW11cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgZXhwcmVzc2lvbmAgbWF0Y2hlcyBgbGV4ZW1lYC5cbmZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwgbGV4ZW1lKSB7XG4gIHZhciBtYXRjaCA9IGV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi5leGVjKGxleGVtZSlcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoLmluZGV4ID09PSAwXG59XG5cbi8vIEdldCBhIGxhbmd1YWdlIGJ5IGBuYW1lYC5cbmZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXG4gIHJldHVybiBsYW5ndWFnZXNbbmFtZV0gfHwgbGFuZ3VhZ2VzW2FsaWFzZXNbbmFtZV1dXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuXG4gIC8vINC+0LHRidC40Lkg0L/QsNGC0YLQtdGA0L0g0LTQu9GPINC+0L/RgNC10LTQtdC70LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQvtCyXG4gIHZhciBVTkRFUlNDT1JFX0lERU5UX1JFID0gJ1tBLVphLXrQkC3Qr9CwLdGP0ZHQgV9dW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0rJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGtleXdvcmRcbiAgdmFyIHY3X2tleXdvcmRzID1cbiAgJ9C00LDQu9C10LUgJztcblxuICAvLyB2OCDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAgPT0+IGtleXdvcmRcbiAgdmFyIHY4X2tleXdvcmRzID1cbiAgJ9Cy0L7Qt9Cy0YDQsNGCINCy0YvQt9Cy0LDRgtGM0LjRgdC60LvRjtGH0LXQvdC40LUg0LLRi9C/0L7Qu9C90LjRgtGMINC00LvRjyDQtdGB0LvQuCDQuCDQuNC3INC40LvQuCDQuNC90LDRh9C1INC40L3QsNGH0LXQtdGB0LvQuCDQuNGB0LrQu9GO0YfQtdC90LjQtSDQutCw0LbQtNC+0LPQviDQutC+0L3QtdGG0LXRgdC70LggJyArXG4gICfQutC+0L3QtdGG0L/QvtC/0YvRgtC60Lgg0LrQvtC90LXRhtGG0LjQutC70LAg0L3QtSDQvdC+0LLRi9C5INC/0LXRgNC10LnRgtC4INC/0LXRgNC10Lwg0L/QviDQv9C+0LrQsCDQv9C+0L/Ri9GC0LrQsCDQv9GA0LXRgNCy0LDRgtGMINC/0YDQvtC00L7Qu9C20LjRgtGMINGC0L7Qs9C00LAg0YbQuNC60Lsg0Y3QutGB0L/QvtGA0YIgJztcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID0gdjdfa2V5d29yZHMgKyB2OF9rZXl3b3JkcztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC00LjRgNC10LrRgtC40LLRiywg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjdfbWV0YV9rZXl3b3JkcyA9XG4gICfQt9Cw0LPRgNGD0LfQuNGC0YzQuNC30YTQsNC50LvQsCAnO1xuXG4gIC8vIHY4INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDQsiDQuNC90YHRgtGA0YPQutGG0LjRj9GFINC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0LDRhSDQutC+0LzQv9C40LvRj9GG0LjQuCwg0LDQvdC90L7RgtCw0YbQuNGP0YUgPT0+IG1ldGEta2V5d29yZFxuICB2YXIgdjhfbWV0YV9rZXl3b3JkcyA9XG4gICfQstC10LHQutC70LjQtdC90YIg0LLQvNC10YHRgtC+INCy0L3QtdGI0L3QtdC10YHQvtC10LTQuNC90LXQvdC40LUg0LrQu9C40LXQvdGCINC60L7QvdC10YbQvtCx0LvQsNGB0YLQuCDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdC60LvQuNC10L3RgiDQvNC+0LHQuNC70YzQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtdGB0LXRgNCy0LXRgCAnICtcbiAgJ9C90LDQutC70LjQtdC90YLQtSDQvdCw0LrQu9C40LXQvdGC0LXQvdCw0YHQtdGA0LLQtdGA0LUg0L3QsNC60LvQuNC10L3RgtC10L3QsNGB0LXRgNCy0LXRgNC10LHQtdC30LrQvtC90YLQtdC60YHRgtCwINC90LDRgdC10YDQstC10YDQtSDQvdCw0YHQtdGA0LLQtdGA0LXQsdC10LfQutC+0L3RgtC10LrRgdGC0LAg0L7QsdC70LDRgdGC0Ywg0L/QtdGA0LXQtCAnICtcbiAgJ9C/0L7RgdC70LUg0YHQtdGA0LLQtdGAINGC0L7Qu9GB0YLRi9C50LrQu9C40LXQvdGC0L7QsdGL0YfQvdC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0LvRgdGC0YvQudC60LvQuNC10L3RgtGD0L/RgNCw0LLQu9GP0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC+0L3QutC40LnQutC70LjQtdC90YIgJztcblxuICAvLyBtZXRhLWtleXdvcmQgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0LIg0LjQvdGB0YLRgNGD0LrRhtC40Y/RhSDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCwg0LTQuNGA0LXQutGC0LjQstCw0YUg0LrQvtC80L/QuNC70Y/RhtC40LgsINCw0L3QvdC+0YLQsNGG0LjRj9GFXG4gIHZhciBNRVRBS0VZV09SRCA9IHY3X21ldGFfa2V5d29yZHMgKyB2OF9tZXRhX2tleXdvcmRzO1xuXG4gIC8vIHY3INGB0LjRgdGC0LXQvNC90YvQtSDQutC+0L3RgdGC0LDQvdGC0YsgPT0+IGJ1aWx0X2luXG4gIHZhciB2N19zeXN0ZW1fY29uc3RhbnRzID1cbiAgJ9GA0LDQt9C00LXQu9C40YLQtdC70YzRgdGC0YDQsNC90LjRhiDRgNCw0LfQtNC10LvQuNGC0LXQu9GM0YHRgtGA0L7QuiDRgdC40LzQstC+0LvRgtCw0LHRg9C70Y/RhtC40LggJztcbiAgXG4gIC8vIHY3INGD0L3QuNC60LDQu9GM0L3Ri9C1INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCwg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0LIgdjggPT0+IGJ1aWx0X2luXG4gIHZhciB2N19nbG9iYWxfY29udGV4dF9tZXRob2RzID1cbiAgJ2Fuc2l0b29lbSBvZW10b2Fuc2kg0LLQstC10YHRgtC40LLQuNC00YHRg9Cx0LrQvtC90YLQviDQstCy0LXRgdGC0LjQv9C10YDQtdGH0LjRgdC70LXQvdC40LUg0LLQstC10YHRgtC40L/QtdGA0LjQvtC0INCy0LLQtdGB0YLQuNC/0LvQsNC90YHRh9C10YLQvtCyINCy0YvQsdGA0LDQvdC90YvQudC/0LvQsNC90YHRh9C10YLQvtCyICcgK1xuICAn0LTQsNGC0LDQs9C+0LQg0LTQsNGC0LDQvNC10YHRj9GGINC00LDRgtCw0YfQuNGB0LvQviDQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQt9C90LDRh9C10L3QuNC10LLRgdGC0YDQvtC60YMg0LfQvdCw0YfQtdC90LjQtdC40LfRgdGC0YDQvtC60Lgg0LrQsNGC0LDQu9C+0LPQuNCxINC60LDRgtCw0LvQvtCz0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0LrQvtC00YHQuNC80LIg0LrQvtC90LPQvtC00LAg0LrQvtC90LXRhtC/0LXRgNC40L7QtNCw0LHQuCDQutC+0L3QtdGG0YDQsNGB0YHRh9C40YLQsNC90L3QvtCz0L7Qv9C10YDQuNC+0LTQsNCx0Lgg0LrQvtC90LXRhtGB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC40L3RgtC10YDQstCw0LvQsCDQutC+0L3QutCy0LDRgNGC0LDQu9CwINC60L7QvdC80LXRgdGP0YbQsCAnICtcbiAgJ9C60L7QvdC90LXQtNC10LvQuCDQu9C+0LMg0LvQvtCzMTAg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC10LrQvtC70LjRh9C10YHRgtCy0L7RgdGD0LHQutC+0L3RgtC+INC90LDQt9Cy0LDQvdC40LXQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCw0LfQstCw0L3QuNC10L3QsNCx0L7RgNCw0L/RgNCw0LIg0L3QsNC30L3QsNGH0LjRgtGM0LLQuNC0ICcgK1xuICAn0L3QsNC30L3QsNGH0LjRgtGM0YHRh9C10YIg0L3QsNC50YLQuNGB0YHRi9C70LrQuCDQvdCw0YfQsNC70L7Qv9C10YDQuNC+0LTQsNCx0Lgg0L3QsNGH0LDQu9C+0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNCy0LDQu9CwINC90LDRh9Cz0L7QtNCwINC90LDRh9C60LLQsNGA0YLQsNC70LAg0L3QsNGH0LzQtdGB0Y/RhtCwICcgK1xuICAn0L3QsNGH0L3QtdC00LXQu9C4INC90L7QvNC10YDQtNC90Y/Qs9C+0LTQsCDQvdC+0LzQtdGA0LTQvdGP0L3QtdC00LXQu9C4INC90L7QvNC10YDQvdC10LTQtdC70LjQs9C+0LTQsCDQvtCx0YDQsNCx0L7RgtC60LDQvtC20LjQtNCw0L3QuNGPINC+0YHQvdC+0LLQvdC+0LnQttGD0YDQvdCw0LvRgNCw0YHRh9C10YLQvtCyICcgK1xuICAn0L7RgdC90L7QstC90L7QudC/0LvQsNC90YHRh9C10YLQvtCyINC+0YHQvdC+0LLQvdC+0LnRj9C30YvQuiDQvtGH0LjRgdGC0LjRgtGM0L7QutC90L7RgdC+0L7QsdGJ0LXQvdC40Lkg0L/QtdGA0LjQvtC00YHRgtGAINC/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0YLQsCDQv9C+0LvRg9GH0LjRgtGM0LTQsNGC0YPRgtCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7QutGD0LzQtdC90YLRgtCwINC/0L7Qu9GD0YfQuNGC0YzQt9C90LDRh9C10L3QuNGP0L7RgtCx0L7RgNCwINC/0L7Qu9GD0YfQuNGC0YzQv9C+0LfQuNGG0LjRjtGC0LAg0L/QvtC70YPRh9C40YLRjNC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0L/QvtC70YPRh9C40YLRjNGC0LAgJyArXG4gICfQv9GA0LXRhNC40LrRgdCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC4INC/0YDQvtC/0LjRgdGMINC/0YPRgdGC0L7QtdC30L3QsNGH0LXQvdC40LUg0YDQsNC30Lwg0YDQsNC30L7QsdGA0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAg0YDQsNGB0YHRh9C40YLQsNGC0YzRgNC10LPQuNGB0YLRgNGL0L3QsCAnICtcbiAgJ9GA0LDRgdGB0YfQuNGC0LDRgtGM0YDQtdCz0LjRgdGC0YDRi9C/0L4g0YHQuNC80LIg0YHQvtC30LTQsNGC0YzQvtCx0YrQtdC60YIg0YHRgtCw0YLRg9GB0LLQvtC30LLRgNCw0YLQsCDRgdGC0YDQutC+0LvQuNGH0LXRgdGC0LLQvtGB0YLRgNC+0Log0YHRhNC+0YDQvNC40YDQvtCy0LDRgtGM0L/QvtC30LjRhtC40Y7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdGH0LXRgtC/0L7QutC+0LTRgyDRgtC10LrRg9GJ0LXQtdCy0YDQtdC80Y8g0YLQuNC/0LfQvdCw0YfQtdC90LjRjyDRgtC40L/Qt9C90LDRh9C10L3QuNGP0YHRgtGAINGD0YHRgtCw0L3QvtCy0LjRgtGM0YLQsNC90LAg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgtCw0L/QviDRhNC40LrRgdGI0LDQsdC70L7QvSDRiNCw0LHQu9C+0L0gJztcbiAgXG4gIC8vIHY4INC80LXRgtC+0LTRiyDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgPVxuICAnYWNvcyBhc2luIGF0YW4gYmFzZTY00LfQvdCw0YfQtdC90LjQtSBiYXNlNjTRgdGC0YDQvtC60LAgY29zIGV4cCBsb2cgbG9nMTAgcG93IHNpbiBzcXJ0IHRhbiB4bWzQt9C90LDRh9C10L3QuNC1IHhtbNGB0YLRgNC+0LrQsCAnICtcbiAgJ3htbNGC0LjQvyB4bWzRgtC40L/Qt9C90Ycg0LDQutGC0LjQstC90L7QtdC+0LrQvdC+INCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvCDQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDQsdGD0LvQtdCy0L4g0LLQstC10YHRgtC40LTQsNGC0YMg0LLQstC10YHRgtC40LfQvdCw0YfQtdC90LjQtSAnICtcbiAgJ9Cy0LLQtdGB0YLQuNGB0YLRgNC+0LrRgyDQstCy0LXRgdGC0LjRh9C40YHQu9C+INCy0L7Qt9C80L7QttC90L7RgdGC0YzRh9GC0LXQvdC40Y94bWwg0LLQvtC/0YDQvtGBINCy0L7RgdGB0YLQsNC90L7QstC40YLRjNC30L3QsNGH0LXQvdC40LUg0LLRgNC10LMg0LLRi9Cz0YDRg9C30LjRgtGM0LbRg9GA0L3QsNC70YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9Cy0YvQv9C+0LvQvdC40YLRjNC+0LHRgNCw0LHQvtGC0LrRg9C+0L/QvtCy0LXRidC10L3QuNGPINCy0YvQv9C+0LvQvdC40YLRjNC/0YDQvtCy0LXRgNC60YPQv9GA0LDQstC00L7RgdGC0YPQv9CwINCy0YvRh9C40YHQu9C40YLRjCDQs9C+0LQg0LTQsNC90L3Ri9C10YTQvtGA0LzRi9Cy0LfQvdCw0YfQtdC90LjQtSDQtNCw0YLQsCDQtNC10L3RjCDQtNC10L3RjNCz0L7QtNCwICcgK1xuICAn0LTQtdC90YzQvdC10LTQtdC70Lgg0LTQvtCx0LDQstC40YLRjNC80LXRgdGP0YYg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC30LDQsdC70L7QutC40YDQvtCy0LDRgtGM0YDQsNCx0L7RgtGD0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC30LDQstC10YDRiNC40YLRjNGA0LDQsdC+0YLRg9GB0LjRgdGC0LXQvNGLICcgK1xuICAn0LfQsNCz0YDRg9C30LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyDQt9Cw0LrRgNGL0YLRjNGB0L/RgNCw0LLQutGDINC30LDQv9C40YHQsNGC0Yxqc29uINC30LDQv9C40YHQsNGC0Yx4bWwg0LfQsNC/0LjRgdCw0YLRjNC00LDRgtGDanNvbiDQt9Cw0L/QuNGB0YzQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQt9Cw0L/QvtC70L3QuNGC0YzQt9C90LDRh9C10L3QuNGP0YHQstC+0LnRgdGC0LIg0LfQsNC/0YDQvtGB0LjRgtGM0YDQsNC30YDQtdGI0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LfQsNC/0YPRgdGC0LjRgtGM0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRgdGC0LjRgtGM0YHQuNGB0YLQtdC80YMg0LfQsNGE0LjQutGB0LjRgNC+0LLQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiAnICtcbiAgJ9C30L3QsNGH0LXQvdC40LXQstC00LDQvdC90YvQtdGE0L7RgNC80Ysg0LfQvdCw0YfQtdC90LjQtdCy0YHRgtGA0L7QutGD0LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LLRhNCw0LnQuyDQt9C90LDRh9C10L3QuNC10LfQsNC/0L7Qu9C90LXQvdC+INC30L3QsNGH0LXQvdC40LXQuNC30YHRgtGA0L7QutC40LLQvdGD0YLRgCDQt9C90LDRh9C10L3QuNC10LjQt9GE0LDQudC70LAgJyArXG4gICfQuNC3eG1s0YLQuNC/0LAg0LjQvNC/0L7RgNGC0LzQvtC00LXQu9C4eGR0byDQuNC80Y/QutC+0LzQv9GM0Y7RgtC10YDQsCDQuNC80Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNGC0YzQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvQtdC00LDQvdC90YvQtSDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQvtGI0LjQsdC60LUgJyArXG4gICfQutCw0YLQsNC70L7Qs9Cx0LjQsdC70LjQvtGC0LXQutC40LzQvtCx0LjQu9GM0L3QvtCz0L7Rg9GB0YLRgNC+0LnRgdGC0LLQsCDQutCw0YLQsNC70L7Qs9Cy0YDQtdC80LXQvdC90YvRhdGE0LDQudC70L7QsiDQutCw0YLQsNC70L7Qs9C00L7QutGD0LzQtdC90YLQvtCyINC60LDRgtCw0LvQvtCz0L/RgNC+0LPRgNCw0LzQvNGLINC60L7QtNC40YDQvtCy0LDRgtGM0YHRgtGA0L7QutGDICcgK1xuICAn0LrQvtC00LvQvtC60LDQu9C40LfQsNGG0LjQuNC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQutC+0LTRgdC40LzQstC+0LvQsCDQutC+0LzQsNC90LTQsNGB0LjRgdGC0LXQvNGLINC60L7QvdC10YbQs9C+0LTQsCDQutC+0L3QtdGG0LTQvdGPINC60L7QvdC10YbQutCy0LDRgNGC0LDQu9CwINC60L7QvdC10YbQvNC10YHRj9GG0LAg0LrQvtC90LXRhtC80LjQvdGD0YLRiyAnICtcbiAgJ9C60L7QvdC10YbQvdC10LTQtdC70Lgg0LrQvtC90LXRhtGH0LDRgdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GF0LjQt9C80LXQvdC10L3QsNC00LjQvdCw0LzQuNGH0LXRgdC60Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0LjQt9C80LXQvdC10L3QsCDQutC+0L/QuNGA0L7QstCw0YLRjNC00LDQvdC90YvQtdGE0L7RgNC80YsgJyArXG4gICfQutC+0L/QuNGA0L7QstCw0YLRjNGE0LDQudC7INC60YDQsNGC0LrQvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60Lgg0LvQtdCyINC80LDQutGBINC80LXRgdGC0L3QvtC10LLRgNC10LzRjyDQvNC10YHRj9GGINC80LjQvSDQvNC40L3Rg9GC0LAg0LzQvtC90L7Qv9C+0LvRjNC90YvQudGA0LXQttC40Lwg0L3QsNC50YLQuCAnICtcbiAgJ9C90LDQudGC0LjQvdC10LTQvtC/0YPRgdGC0LjQvNGL0LXRgdC40LzQstC+0LvRi3htbCDQvdCw0LnRgtC40L7QutC90L7Qv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L3QsNC50YLQuNC/0L7QvNC10YfQtdC90L3Ri9C10L3QsNGD0LTQsNC70LXQvdC40LUg0L3QsNC50YLQuNC/0L7RgdGB0YvQu9C60LDQvCDQvdCw0LnRgtC40YTQsNC50LvRiyAnICtcbiAgJ9C90LDRh9Cw0LvQvtCz0L7QtNCwINC90LDRh9Cw0LvQvtC00L3RjyDQvdCw0YfQsNC70L7QutCy0LDRgNGC0LDQu9CwINC90LDRh9Cw0LvQvtC80LXRgdGP0YbQsCDQvdCw0YfQsNC70L7QvNC40L3Rg9GC0Ysg0L3QsNGH0LDQu9C+0L3QtdC00LXQu9C4INC90LDRh9Cw0LvQvtGH0LDRgdCwINC90LDRh9Cw0YLRjNC30LDQv9GA0L7RgdGA0LDQt9GA0LXRiNC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0LfQsNC/0YPRgdC60L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNGH0LDRgtGM0LrQvtC/0LjRgNC+0LLQsNC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QtdGA0LXQvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC00LrQu9GO0YfQtdC90LjQtdCy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0YsgJyArXG4gICfQvdCw0YfQsNGC0YzQv9C+0LTQutC70Y7Rh9C10L3QuNC10YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5INC90LDRh9Cw0YLRjNC/0L7QtNC60LvRjtGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L3QsNGH0LDRgtGM0L/QvtC40YHQutGE0LDQudC70L7QsiAnICtcbiAgJ9C90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdC60LDRgtCw0LvQvtCz0LDQstGA0LXQvNC10L3QvdGL0YXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10LrQsNGC0LDQu9C+0LPQsNC00L7QutGD0LzQtdC90YLQvtCyINC90LDRh9Cw0YLRjNC/0L7Qu9GD0YfQtdC90LjQtdGA0LDQsdC+0YfQtdCz0L7QutCw0YLQsNC70L7Qs9Cw0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNC/0L7QvNC10YnQtdC90LjQtdGE0LDQudC70LAg0L3QsNGH0LDRgtGM0L/QvtC80LXRidC10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGB0L7Qt9C00LDQvdC40LXQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GF0LjQt9GE0LDQudC70LAg0L3QsNGH0LDRgtGM0YHQvtC30LTQsNC90LjQtdC60LDRgtCw0LvQvtCz0LAgJyArXG4gICfQvdCw0YfQsNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiDQvdCw0YfQsNGC0YzRg9C00LDQu9C10L3QuNC10YTQsNC50LvQvtCyINC90LDRh9Cw0YLRjNGD0YHRgtCw0L3QvtCy0LrRg9Cy0L3QtdGI0L3QtdC50LrQvtC80L/QvtC90LXQvdGC0Ysg0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5ICcgK1xuICAn0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0YDQsNGB0YjQuNGA0LXQvdC40Y/RgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INC90LXQtNC10LvRj9Cz0L7QtNCwINC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtGM0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC+0LXQtNC40L3QtdC90LjRjyDQvdC+0LzQtdGA0YHQtdCw0L3RgdCw0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0L3QvtC80LXRgNGB0L7QtdC00LjQvdC10L3QuNGP0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC90YDQtdCzINC90YHRgtGAINC+0LHQvdC+0LLQuNGC0YzQuNC90YLQtdGA0YTQtdC50YEg0L7QsdC90L7QstC40YLRjNC90YPQvNC10YDQsNGG0LjRjtC+0LHRitC10LrRgtC+0LIg0L7QsdC90L7QstC40YLRjNC/0L7QstGC0L7RgNC90L7QuNGB0L/QvtC70YzQt9GD0LXQvNGL0LXQt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L7QsdGA0LDQsdC+0YLQutCw0L/RgNC10YDRi9Cy0LDQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L7QsdGK0LXQtNC40L3QuNGC0YzRhNCw0LnQu9GLINC+0LrRgCDQvtC/0LjRgdCw0L3QuNC10L7RiNC40LHQutC4INC+0L/QvtCy0LXRgdGC0LjRgtGMINC+0L/QvtCy0LXRgdGC0LjRgtGM0L7QsdC40LfQvNC10L3QtdC90LjQuCAnICtcbiAgJ9C+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60LfQsNC/0YDQvtGB0LDQvdCw0YHRgtGA0L7QtdC60LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7QttC40LTQsNC90LjRjyDQvtGC0LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L7RgtC60YDRi9GC0YzQt9C90LDRh9C10L3QuNC1INC+0YLQutGA0YvRgtGM0LjQvdC00LXQutGB0YHQv9GA0LDQstC60Lgg0L7RgtC60YDRi9GC0YzRgdC+0LTQtdGA0LbQsNC90LjQtdGB0L/RgNCw0LLQutC4INC+0YLQutGA0YvRgtGM0YHQv9GA0LDQstC60YMg0L7RgtC60YDRi9GC0YzRhNC+0YDQvNGDINC+0YLQutGA0YvRgtGM0YTQvtGA0LzRg9C80L7QtNCw0LvRjNC90L4gJyArXG4gICfQvtGC0LzQtdC90LjRgtGM0YLRgNCw0L3Qt9Cw0LrRhtC40Y4g0L7Rh9C40YHRgtC40YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L7Rh9C40YHRgtC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvtGH0LjRgdGC0LjRgtGM0YHQvtC+0LHRidC10L3QuNGPINC/0LDRgNCw0LzQtdGC0YDRi9C00L7RgdGC0YPQv9CwICcgK1xuICAn0L/QtdGA0LXQudGC0LjQv9C+0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0LnRgdGB0YvQu9C60LUg0L/QtdGA0LXQvNC10YHRgtC40YLRjNGE0LDQudC7INC/0L7QtNC60LvRjtGH0LjRgtGM0LLQvdC10YjQvdGO0Y7QutC+0LzQv9C+0L3QtdC90YLRgyAnICtcbiAgJ9C/0L7QtNC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQt9Cw0L/RgNC+0YHQsNC90LDRgdGC0YDQvtC10LrQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0LbQuNC00LDQvdC40Y8g0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC+0L/QvtCy0LXRidC10L3QuNGPICcgK1xuICAn0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10Lkg0L/QvtC00LrQu9GO0YfQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L/QvtC00YDQvtCx0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQvtGI0LjQsdC60LggJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQtNCw0YLRiyDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTQt9C90LDRh9C10L3QuNGPINC/0L7QutCw0LfQsNGC0YzQstCy0L7QtNGB0YLRgNC+0LrQuCDQv9C+0LrQsNC30LDRgtGM0LLQstC+0LTRh9C40YHQu9CwINC/0L7QutCw0LfQsNGC0YzQstC+0L/RgNC+0YEg0L/QvtC60LDQt9Cw0YLRjNC30L3QsNGH0LXQvdC40LUgJyArXG4gICfQv9C+0LrQsNC30LDRgtGM0LjQvdGE0L7RgNC80LDRhtC40Y7QvtCx0L7RiNC40LHQutC1INC/0L7QutCw0LfQsNGC0YzQvdCw0LrQsNGA0YLQtSDQv9C+0LrQsNC30LDRgtGM0L7Qv9C+0LLQtdGJ0LXQvdC40LXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QvtC60LDQt9Cw0YLRjNC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L/QvtC70L3QvtC10LjQvNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjGNvbdC+0LHRitC10LrRgiDQv9C+0LvRg9GH0LjRgtGMeG1s0YLQuNC/INC/0L7Qu9GD0YfQuNGC0YzQsNC00YDQtdGB0L/QvtC80LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40Y4g0L/QvtC70YPRh9C40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0LLQtdGA0YjQtdC90LjRj9GB0L/Rj9GJ0LXQs9C+0YHQtdCw0L3RgdCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9C+0LbQuNC00LDQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0LTQsNC90L3Ri9C10LLRi9Cx0L7RgNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LnQv9Cw0YDQsNC80LXRgtGA0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQtNC+0L/Rg9GB0YLQuNC80YvQtdC60L7QtNGL0LvQvtC60LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LTQvtC/0YPRgdGC0LjQvNGL0LXRh9Cw0YHQvtCy0YvQtdC/0L7Rj9GB0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrRgdC40YHRgtC10LzRiyDQv9C+0LvRg9GH0LjRgtGM0LfQvdCw0YfQtdC90LjRj9C+0YLQsdC+0YDQsNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LjQt9Cy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwINC/0L7Qu9GD0YfQuNGC0YzQuNC80Y/QstGA0LXQvNC10L3QvdC+0LPQvtGE0LDQudC70LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LjQvNGP0LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzQuNC90YTQvtGA0LzQsNGG0LjRjtGN0LrRgNCw0L3QvtCy0LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L/QvtC70YPRh9C40YLRjNC60YDQsNGC0LrQuNC50LfQsNCz0L7Qu9C+0LLQvtC60L/RgNC40LvQvtC20LXQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC80LDQutC10YLQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvNCw0YHQutGD0LLRgdC10YTQsNC50LvRiyDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvQutC70LjQtdC90YLQsCDQv9C+0LvRg9GH0LjRgtGM0LzQsNGB0LrRg9Cy0YHQtdGE0LDQudC70YvRgdC10YDQstC10YDQsCDQv9C+0LvRg9GH0LjRgtGM0LzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QsNC00YDQtdGB0YMgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LzQuNC90LjQvNCw0LvRjNC90YPRjtC00LvQuNC90YPQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzQvdCw0LLQuNCz0LDRhtC40L7QvdC90YPRjtGB0YHRi9C70LrRgyDQv9C+0LvRg9GH0LjRgtGM0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGD0Y7RgdGB0YvQu9C60YPQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQutC+0L3RhNC40LPRg9GA0LDRhtC40LjQsdCw0LfRi9C00LDQvdC90YvRhSDQv9C+0LvRg9GH0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0LjQudC80LDQutC10YIgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L7QsdGJ0YPRjtGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNC+0LrQvdCwINC/0L7Qu9GD0YfQuNGC0YzQvtC/0LXRgNCw0YLQuNCy0L3Rg9GO0L7RgtC80LXRgtC60YPQstGA0LXQvNC10L3QuCDQv9C+0LvRg9GH0LjRgtGM0L7RgtC60LvRjtGH0LXQvdC40LXQsdC10LfQvtC/0LDRgdC90L7Qs9C+0YDQtdC20LjQvNCwICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0LDRgNCw0LzQtdGC0YDRi9GE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YXQvtC/0YbQuNC50LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNC/0L7Qu9C90L7QtdC40LzRj9C/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L7Qt9C90LDRh9C10L3QuNGPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGP0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGL0YXRgdGB0YvQu9C+0Log0L/QvtC70YPRh9C40YLRjNC/0YDQvtCy0LXRgNC60YPRgdC70L7QttC90L7RgdGC0LjQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC/0L7Qu9GD0YfQuNGC0YzRgNCw0LfQtNC10LvQuNGC0LXQu9GM0L/Rg9GC0LggJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YDQsNC30LTQtdC70LjRgtC10LvRjNC/0YPRgtC40LrQu9C40LXQvdGC0LAg0L/QvtC70YPRh9C40YLRjNGA0LDQt9C00LXQu9C40YLQtdC70YzQv9GD0YLQuNGB0LXRgNCy0LXRgNCwINC/0L7Qu9GD0YfQuNGC0YzRgdC10LDQvdGB0YvQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YHQutC+0YDQvtGB0YLRjNC60LvQuNC10L3RgtGB0LrQvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40Y/QuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YPRh9C40YLRjNGB0L7QvtCx0YnQtdC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyDQv9C+0LvRg9GH0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0YPQutGC0YPRgNGD0YXRgNCw0L3QtdC90LjRj9Cx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGC0LXQutGD0YnQuNC50YHQtdCw0L3RgdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0YTQsNC50Lsg0L/QvtC70YPRh9C40YLRjNGE0LDQudC70Ysg0L/QvtC70YPRh9C40YLRjNGE0L7RgNC80YMg0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGOICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGD0Y7QvtC/0YbQuNGO0LjQvdGC0LXRgNGE0LXQudGB0LAg0L/QvtC70YPRh9C40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40L7RgSDQv9C+0LzQtdGB0YLQuNGC0YzQstC+0LLRgNC10LzQtdC90L3QvtC10YXRgNCw0L3QuNC70LjRidC1ICcgK1xuICAn0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50Lsg0L/QvtC80LXRgdGC0LjRgtGM0YTQsNC50LvRiyDQv9GA0LDQsiDQv9GA0LDQstC+0LTQvtGB0YLRg9C/0LAg0L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdC+0LXQt9C90LDRh9C10L3QuNC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LrQvtC00LDQu9C+0LrQsNC70LjQt9Cw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/QtdGA0LjQvtC00LAgJyArXG4gICfQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0YDQsNCy0LAg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9GA0LjQu9C+0LbQtdC90LjRjyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGB0L7QsdGL0YLQuNGP0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YfQsNGB0L7QstC+0LPQvtC/0L7Rj9GB0LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSAnICtcbiAgJ9C/0YDQtdC60YDQsNGC0LjRgtGM0YDQsNCx0L7RgtGD0YHQuNGB0YLQtdC80Ysg0L/RgNC40LLQuNC70LXQs9C40YDQvtCy0LDQvdC90YvQudGA0LXQttC40Lwg0L/RgNC+0LTQvtC70LbQuNGC0YzQstGL0LfQvtCyINC/0YDQvtGH0LjRgtCw0YLRjGpzb24g0L/RgNC+0YfQuNGC0LDRgtGMeG1sINC/0YDQvtGH0LjRgtCw0YLRjNC00LDRgtGDanNvbiDQv9GD0YHRgtCw0Y/RgdGC0YDQvtC60LAgJyArXG4gICfRgNCw0LHQvtGH0LjQudC60LDRgtCw0LvQvtCz0LTQsNC90L3Ri9GF0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGA0LDQt9Cx0LvQvtC60LjRgNC+0LLQsNGC0YzQtNCw0L3QvdGL0LXQtNC70Y/RgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGA0LDQt9C00LXQu9C40YLRjNGE0LDQudC7INGA0LDQt9C+0YDQstCw0YLRjNGB0L7QtdC00LjQvdC10L3QuNC10YHQstC90LXRiNC90LjQvNC40YHRgtC+0YfQvdC40LrQvtC80LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0LrQvtC00LjRgNC+0LLQsNGC0YzRgdGC0YDQvtC60YMg0YDQvtC70YzQtNC+0YHRgtGD0L/QvdCwINGB0LXQutGD0L3QtNCwINGB0LjQs9C90LDQuyDRgdC40LzQstC+0Lsg0YHQutC+0L/QuNGA0L7QstCw0YLRjNC20YPRgNC90LDQu9GA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YHQvNC10YnQtdC90LjQtdC70LXRgtC90LXQs9C+0LLRgNC10LzQtdC90LggJyArXG4gICfRgdC80LXRidC10L3QuNC10YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LLRgNC10LzQtdC90Lgg0YHQvtC10LTQuNC90LjRgtGM0LHRg9GE0LXRgNGL0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDRgdC+0LfQtNCw0YLRjNC60LDRgtCw0LvQvtCzINGB0L7Qt9C00LDRgtGM0YTQsNCx0YDQuNC60YN4ZHRvINGB0L7QutGA0Lsg0YHQvtC60YDQu9C/INGB0L7QutGA0L8g0YHQvtC+0LHRidC40YLRjCAnICtcbiAgJ9GB0L7RgdGC0L7Rj9C90LjQtSDRgdC+0YXRgNCw0L3QuNGC0YzQt9C90LDRh9C10L3QuNC1INGB0L7RhdGA0LDQvdC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgdGA0LXQtCDRgdGC0YDQtNC70LjQvdCwINGB0YLRgNC30LDQutCw0L3Rh9C40LLQsNC10YLRgdGP0L3QsCDRgdGC0YDQt9Cw0LzQtdC90LjRgtGMINGB0YLRgNC90LDQudGC0Lgg0YHRgtGA0L3QsNGH0LjQvdCw0LXRgtGB0Y/RgSAnICtcbiAgJ9GB0YLRgNC+0LrQsCDRgdGC0YDQvtC60LDRgdC+0LXQtNC40L3QtdC90LjRj9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRgdGC0YDQv9C+0LvRg9GH0LjRgtGM0YHRgtGA0L7QutGDINGB0YLRgNGA0LDQt9C00LXQu9C40YLRjCDRgdGC0YDRgdC+0LXQtNC40L3QuNGC0Ywg0YHRgtGA0YHRgNCw0LLQvdC40YLRjCDRgdGC0YDRh9C40YHQu9C+0LLRhdC+0LbQtNC10L3QuNC5ICcrXG4gICfRgdGC0YDRh9C40YHQu9C+0YHRgtGA0L7QuiDRgdGC0YDRiNCw0LHQu9C+0L0g0YLQtdC60YPRidCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9C00LDRgtCw0YHQtdCw0L3RgdCwINGC0LXQutGD0YnQsNGP0YPQvdC40LLQtdGA0YHQsNC70YzQvdCw0Y/QtNCw0YLQsCDRgtC10LrRg9GJ0LDRj9GD0L3QuNCy0LXRgNGB0LDQu9GM0L3QsNGP0LTQsNGC0LDQstC80LjQu9C70LjRgdC10LrRg9C90LTQsNGFICcgK1xuICAn0YLQtdC60YPRidC40LnQstCw0YDQuNCw0L3RgtC40L3RgtC10YDRhNC10LnRgdCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGC0LXQutGD0YnQuNC50LLQsNGA0LjQsNC90YLQvtGB0L3QvtCy0L3QvtCz0L7RiNGA0LjRhNGC0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YLQtdC60YPRidC40LnQutC+0LTQu9C+0LrQsNC70LjQt9Cw0YbQuNC4ICcgK1xuICAn0YLQtdC60YPRidC40LnRgNC10LbQuNC80LfQsNC/0YPRgdC60LAg0YLQtdC60YPRidC40LnRj9C30YvQuiDRgtC10LrRg9GJ0LjQudGP0LfRi9C60YHQuNGB0YLQtdC80Ysg0YLQuNC/INGC0LjQv9C30L3RhyDRgtGA0LDQvdC30LDQutGG0LjRj9Cw0LrRgtC40LLQvdCwINGC0YDQtdCzINGD0LTQsNC70LjRgtGM0LTQsNC90L3Ri9C10LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLICcgK1xuICAn0YPQtNCw0LvQuNGC0YzQuNC30LLRgNC10LzQtdC90L3QvtCz0L7RhdGA0LDQvdC40LvQuNGJ0LAg0YPQtNCw0LvQuNGC0YzQvtCx0YrQtdC60YLRiyDRg9C00LDQu9C40YLRjNGE0LDQudC70Ysg0YPQvdC40LLQtdGA0YHQsNC70YzQvdC+0LXQstGA0LXQvNGPINGD0YHRgtCw0L3QvtCy0LjRgtGM0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LzRgNCw0LfQtNC10LvQtdC90LjRj9C00LDQvdC90YvRhSDRg9GB0YLQsNC90L7QstC40YLRjNCx0LvQvtC60LjRgNC+0LLQutGD0YHQtdCw0L3RgdC+0LIg0YPRgdGC0LDQvdC+0LLQuNGC0YzQstC90LXRiNC90Y7RjtC60L7QvNC/0L7QvdC10L3RgtGDICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQstGA0LXQvNGP0LfQsNCy0LXRgNGI0LXQvdC40Y/RgdC/0Y/RidC10LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/Qt9Cw0YHRi9C/0LDQvdC40Y/Qv9Cw0YHRgdC40LLQvdC+0LPQvtGB0LXQsNC90YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/QvtC20LjQtNCw0L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRg9GB0YLQsNC90L7QstC40YLRjNC30LDQs9C+0LvQvtCy0L7QutGB0LjRgdGC0LXQvNGLINGD0YHRgtCw0L3QvtCy0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0YPRgdGC0LDQvdC+0LLQuNGC0YzQutGA0LDRgtC60LjQudC30LDQs9C+0LvQvtCy0L7QutC/0YDQuNC70L7QttC10L3QuNGPICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC40L3QuNC80LDQu9GM0L3Rg9GO0LTQu9C40L3Rg9C/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0YPRgdGC0LDQvdC+0LLQuNGC0YzQvNC+0L3QvtC/0L7Qu9GM0L3Ri9C50YDQtdC20LjQvCDRg9GB0YLQsNC90L7QstC40YLRjNC90LDRgdGC0YDQvtC50LrQuNC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRg9GB0YLQsNC90L7QstC40YLRjNC+0YLQutC70Y7Rh9C10L3QuNC10LHQtdC30L7Qv9Cw0YHQvdC+0LPQvtGA0LXQttC40LzQsCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0L/QsNGA0LDQvNC10YLRgNGL0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhdC+0L/RhtC40LnQuNC90YLQtdGA0YTQtdC50YHQsCDRg9GB0YLQsNC90L7QstC40YLRjNC/0YDQuNCy0LjQu9C10LPQuNGA0L7QstCw0L3QvdGL0LnRgNC10LbQuNC8ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQv9GA0L7QstC10YDQutGD0YHQu9C+0LbQvdC+0YHRgtC40L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRg9GB0YLQsNC90L7QstC40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdGE0LDQudC70LDQvNC4INGD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtC10LTQuNC90LXQvdC40LXRgdCy0L3QtdGI0L3QuNC80LjRgdGC0L7Rh9C90LjQutC+0LzQtNCw0L3QvdGL0YUg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgdC+0L7RgtCy0LXRgtGB0YLQstC40LXQvtCx0YrQtdC60YLQsNC40YTQvtGA0LzRiyAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0YHQvtGB0YLQsNCy0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNGE0LXQudGB0LBvZGF0YSDRg9GB0YLQsNC90L7QstC40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0YPRgdGC0LDQvdC+0LLQuNGC0YzRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwICcgK1xuICAn0YTQvtGA0LzQsNGCINGG0LXQuyDRh9Cw0YEg0YfQsNGB0L7QstC+0LnQv9C+0Y/RgSDRh9Cw0YHQvtCy0L7QudC/0L7Rj9GB0YHQtdCw0L3RgdCwINGH0LjRgdC70L4g0YfQuNGB0LvQvtC/0YDQvtC/0LjRgdGM0Y4g0Y3RgtC+0LDQtNGA0LXRgdCy0YDQtdC80LXQvdC90L7Qs9C+0YXRgNCw0L3QuNC70LjRidCwICc7XG5cbiAgLy8gdjgg0YHQstC+0LnRgdGC0LLQsCDQs9C70L7QsdCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQutGB0YLQsCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY4X2dsb2JhbF9jb250ZXh0X3Byb3BlcnR5ID1cbiAgJ3dz0YHRgdGL0LvQutC4INCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDQsdC40LHQu9C40L7RgtC10LrQsNC80LDQutC10YLQvtCy0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsdC40LHQu9C40L7RgtC10LrQsNGB0YLQuNC70LXQuSDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdGLICcgK1xuICAn0LLQvdC10YjQvdC40LXQuNGB0YLQvtGH0L3QuNC60LjQtNCw0L3QvdGL0YUg0LLQvdC10YjQvdC40LXQvtCx0YDQsNCx0L7RgtC60Lgg0LLQvdC10YjQvdC40LXQvtGC0YfQtdGC0Ysg0LLRgdGC0YDQvtC10L3QvdGL0LXQv9C+0LrRg9C/0LrQuCDQs9C70LDQstC90YvQudC40L3RgtC10YDRhNC10LnRgSDQs9C70LDQstC90YvQudGB0YLQuNC70YwgJyArXG4gICfQtNC+0LrRg9C80LXQvdGC0Ysg0LTQvtGB0YLQsNCy0LvRj9C10LzRi9C10YPQstC10LTQvtC80LvQtdC90LjRjyDQttGD0YDQvdCw0LvRi9C00L7QutGD0LzQtdC90YLQvtCyINC30LDQtNCw0YfQuCDQuNC90YTQvtGA0LzQsNGG0LjRj9C+0LHQuNC90YLQtdGA0L3QtdGC0YHQvtC10LTQuNC90LXQvdC40Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNCw0LHQvtGH0LXQudC00LDRgtGLICcgK1xuICAn0LjRgdGC0L7RgNC40Y/RgNCw0LHQvtGC0YvQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LrQvtC90YHRgtCw0L3RgtGLINC60YDQuNGC0LXRgNC40LjQvtGC0LHQvtGA0LAg0LzQtdGC0LDQtNCw0L3QvdGL0LUg0L7QsdGA0LDQsdC+0YLQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXRgNC10LrQu9Cw0LzRiyDQvtGC0L/RgNCw0LLQutCw0LTQvtGB0YLQsNCy0LvRj9C10LzRi9GF0YPQstC10LTQvtC80LvQtdC90LjQuSAnICtcbiAgJ9C+0YLRh9C10YLRiyDQv9Cw0L3QtdC70YzQt9Cw0LTQsNGH0L7RgSDQv9Cw0YDQsNC80LXRgtGA0LfQsNC/0YPRgdC60LAg0L/QsNGA0LDQvNC10YLRgNGL0YHQtdCw0L3RgdCwINC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyDQv9C70LDQvdGL0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINC/0LvQsNC90YvQstC40LTQvtCy0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LogJyArXG4gICfQv9C70LDQvdGL0L7QsdC80LXQvdCwINC/0LvQsNC90YvRgdGH0LXRgtC+0LIg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0Log0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C40LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuCDQv9GA0L7QstC10YDQutCw0LLRgdGC0YDQvtC10L3QvdGL0YXQv9C+0LrRg9C/0L7QuiAnICtcbiAgJ9GA0LDQsdC+0YfQsNGP0LTQsNGC0LAg0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YDQtdCz0LjRgdGC0YDRi9Cx0YPRhdCz0LDQu9GC0LXRgNC40Lgg0YDQtdCz0LjRgdGC0YDRi9C90LDQutC+0L/Qu9C10L3QuNGPINGA0LXQs9C40YHRgtGA0YvRgNCw0YHRh9C10YLQsCDRgNC10LPQuNGB0YLRgNGL0YHQstC10LTQtdC90LjQuSAnICtcbiAgJ9GA0LXQs9C70LDQvNC10L3RgtC90YvQtdC30LDQtNCw0L3QuNGPINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8g0YHQv9GA0LDQstC+0YfQvdC40LrQuCDRgdGA0LXQtNGB0YLQstCw0LPQtdC+0L/QvtC30LjRhtC40L7QvdC40YDQvtCy0LDQvdC40Y8g0YHRgNC10LTRgdGC0LLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgdGA0LXQtNGB0YLQstCw0LzRg9C70YzRgtC40LzQtdC00LjQsCAnICtcbiAgJ9GB0YDQtdC00YHRgtCy0LDQvtGC0L7QsdGA0LDQttC10L3QuNGP0YDQtdC60LvQsNC80Ysg0YHRgNC10LTRgdGC0LLQsNC/0L7Rh9GC0Ysg0YHRgNC10LTRgdGC0LLQsNGC0LXQu9C10YTQvtC90LjQuCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50LvQvtCy0YvQtdC/0L7RgtC+0LrQuCDRhNC+0L3QvtCy0YvQtdC30LDQtNCw0L3QuNGPINGF0YDQsNC90LjQu9C40YnQsNC90LDRgdGC0YDQvtC10LogJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQstCw0YDQuNCw0L3RgtC+0LLQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXQvdCw0YHRgtGA0L7QtdC60LTQsNC90L3Ri9GF0YTQvtGA0Lwg0YXRgNCw0L3QuNC70LjRidC10L7QsdGJ0LjRhdC90LDRgdGC0YDQvtC10Log0YXRgNCw0L3QuNC70LjRidC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40YXQvdCw0YHRgtGA0L7QtdC60LTQuNC90LDQvNC40YfQtdGB0LrQuNGF0YHQv9C40YHQutC+0LIgJyArXG4gICfRhdGA0LDQvdC40LvQuNGJ0LXQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhdC90LDRgdGC0YDQvtC10LrQvtGC0YfQtdGC0L7QsiDRhdGA0LDQvdC40LvQuNGJ0LXRgdC40YHRgtC10LzQvdGL0YXQvdCw0YHRgtGA0L7QtdC6ICc7XG5cbiAgLy8gYnVpbHRfaW4gOiDQstGB0YLRgNC+0LXQvdC90YvQtSDQuNC70Lgg0LHQuNCx0LvQuNC+0YLQtdGH0L3Ri9C1INC+0LHRitC10LrRgtGLICjQutC+0L3RgdGC0LDQvdGC0YssINC60LvQsNGB0YHRiywg0YTRg9C90LrRhtC40LgpXG4gIHZhciBCVUlMVElOID1cbiAgdjdfc3lzdGVtX2NvbnN0YW50cyArXG4gIHY3X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgKyB2OF9nbG9iYWxfY29udGV4dF9tZXRob2RzICtcbiAgdjhfZ2xvYmFsX2NvbnRleHRfcHJvcGVydHk7XG4gIFxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L3QsNCx0L7RgNGLINC30L3QsNGH0LXQvdC40LkgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fc2V0c19vZl92YWx1ZXMgPVxuICAnd2Vi0YbQstC10YLQsCB3aW5kb3dz0YbQstC10YLQsCB3aW5kb3dz0YjRgNC40YTRgtGLINCx0LjQsdC70LjQvtGC0LXQutCw0LrQsNGA0YLQuNC90L7QuiDRgNCw0LzQutC40YHRgtC40LvRjyDRgdC40LzQstC+0LvRiyDRhtCy0LXRgtCw0YHRgtC40LvRjyDRiNGA0LjRhNGC0YvRgdGC0LjQu9GPICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC40L3RgtC10YDRhNC10LnRgdC90YvQtSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgPVxuICAn0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QtdGB0L7RhdGA0LDQvdC10L3QuNC10LTQsNC90L3Ri9GF0YTQvtGA0LzRi9Cy0L3QsNGB0YLRgNC+0LnQutCw0YUg0LDQstGC0L7QvdGD0LzQtdGA0LDRhtC40Y/QstGE0L7RgNC80LUg0LDQstGC0L7RgNCw0LfQtNCy0LjQttC10L3QuNC10YHQtdGA0LjQuSAnICtcbiAgJ9Cw0L3QuNC80LDRhtC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0LLQsNGA0LjQsNC90YLQstGL0YDQsNCy0L3QuNCy0LDQvdC40Y/RjdC70LXQvNC10L3RgtC+0LLQuNC30LDQs9C+0LvQvtCy0LrQvtCyINCy0LDRgNC40LDQvdGC0YPQv9GA0LDQstC70LXQvdC40Y/QstGL0YHQvtGC0L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0LLQtdGA0YLQuNC60LDQu9GM0L3QsNGP0L/RgNC+0LrRgNGD0YLQutCw0YTQvtGA0LzRiyDQstC10YDRgtC40LrQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LUg0LLQtdGA0YLQuNC60LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC10Y3Qu9C10LzQtdC90YLQsCDQstC40LTQs9GA0YPQv9C/0YvRhNC+0YDQvNGLICcgK1xuICAn0LLQuNC00LTQtdC60L7RgNCw0YbQuNC40YTQvtGA0LzRiyDQstC40LTQtNC+0L/QvtC70L3QtdC90LjRj9GN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINCy0LjQtNC40LfQvNC10L3QtdC90LjRj9C00LDQvdC90YvRhSDQstC40LTQutC90L7Qv9C60LjRhNC+0YDQvNGLINCy0LjQtNC/0LXRgNC10LrQu9GO0YfQsNGC0LXQu9GPICcgK1xuICAn0LLQuNC00L/QvtC00L/QuNGB0LXQudC60LTQuNCw0LPRgNCw0LzQvNC1INCy0LjQtNC/0L7Qu9GP0YTQvtGA0LzRiyDQstC40LTRhNC70LDQttC60LAg0LLQu9C40Y/QvdC40LXRgNCw0LfQvNC10YDQsNC90LDQv9GD0LfRi9GA0LXQutC00LjQsNCz0YDQsNC80LzRiyDQs9C+0YDQuNC30L7QvdGC0LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC1ICcgK1xuICAn0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtdGN0LvQtdC80LXQvdGC0LAg0LPRgNGD0L/Qv9C40YDQvtCy0LrQsNC60L7Qu9C+0L3QvtC6INCz0YDRg9C/0L/QuNGA0L7QstC60LDQv9C+0LTRh9C40L3QtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YTQvtGA0LzRiyAnICtcbiAgJ9Cz0YDRg9C/0L/Ri9C40Y3Qu9C10LzQtdC90YLRiyDQtNC10LnRgdGC0LLQuNC10L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C50YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LTQvtC/0YPRgdGC0LjQvNGL0LXQtNC10LnRgdGC0LLQuNGP0L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjRjyAnICtcbiAgJ9C40L3RgtC10YDQstCw0LvQvNC10LbQtNGD0Y3Qu9C10LzQtdC90YLQsNC80LjRhNC+0YDQvNGLINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LLRi9Cy0L7QtNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC70L7RgdGL0L/RgNC+0LrRgNGD0YLQutC4ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfRg9C10LzQvtC10LfQvdCw0YfQtdC90LjQtdGC0L7Rh9C60LjQsdC40YDQttC10LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC40YHRgtC+0YDQuNGP0LLRi9Cx0L7RgNCw0L/RgNC40LLQstC+0LTQtSDQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjQudC+0YHQuNGC0L7Rh9C10LrQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQuNGB0YLQvtGH0L3QuNC60LfQvdCw0YfQtdC90LjRj9GA0LDQt9C80LXRgNCw0L/Rg9C30YvRgNGM0LrQsNC00LjQsNCz0YDQsNC80LzRiyDQutCw0YLQtdCz0L7RgNC40Y/Qs9GA0YPQv9C/0YvQutC+0LzQsNC90LQg0LzQsNC60YHQuNC80YPQvNGB0LXRgNC40Lkg0L3QsNGH0LDQu9GM0L3QvtC10L7RgtC+0LHRgNCw0LbQtdC90LjQtdC00LXRgNC10LLQsCAnICtcbiAgJ9C90LDRh9Cw0LvRjNC90L7QtdC+0YLQvtCx0YDQsNC20LXQvdC40LXRgdC/0LjRgdC60LAg0L7QsdC90L7QstC70LXQvdC40LXRgtC10LrRgdGC0LDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQtdC90LTRgNC+0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L7RgNC40LXQvdGC0LDRhtC40Y/QvNC10YLQvtC60LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0LzQtdGC0L7QutGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YDQuNC10L3RgtCw0YbQuNGP0Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LTQuNCw0LPRgNCw0LzQvNC1ICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0LvQtdCz0LXQvdC00LXQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCz0YDRg9C/0L/Ri9C60L3QvtC/0L7QuiDQvtGC0L7QsdGA0LDQttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQt9C90LDRh9C10L3QuNC50YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC30L3QsNGH0LXQvdC40Y/QuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQuNC90YLQtdGA0LLQsNC70LDQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40LXQutC90L7Qv9C60Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC60L3QvtC/0LrQuNCy0YvQsdC+0YDQsCDQvtGC0L7QsdGA0LDQttC10L3QuNC10L7QsdGB0YPQttC00LXQvdC40LnRhNC+0YDQvNGLICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC+0LHRi9GH0L3QvtC50LPRgNGD0L/Qv9GLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQvtGC0YDQuNGG0LDRgtC10LvRjNC90YvRhdC30L3QsNGH0LXQvdC40LnQv9GD0LfRi9GA0YzQutC+0LLQvtC50LTQuNCw0LPRgNCw0LzQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjQv9C+0LjRgdC60LAgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10L/QvtC00YHQutCw0LfQutC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGP0L/RgNC40YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10YDQsNC30LzQtdGC0LrQuNC/0L7Qu9C+0YHRi9GA0LXQs9GD0LvQuNGA0L7QstCw0L3QuNGPICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGB0YLRgNCw0L3QuNGG0YTQvtGA0LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10YLQsNCx0LvQuNGG0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGC0LXQutGB0YLQsNC30L3QsNGH0LXQvdC40Y/QtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGD0L/RgNCw0LLQu9C10L3QuNGP0L7QsdGL0YfQvdC+0LnQs9GA0YPQv9C/0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGE0LjQs9GD0YDRi9C60L3QvtC/0LrQuCDQv9Cw0LvQuNGC0YDQsNGG0LLQtdGC0L7QstC00LjQsNCz0YDQsNC80LzRiyDQv9C+0LLQtdC00LXQvdC40LXQvtCx0YvRh9C90L7QudCz0YDRg9C/0L/RiyAnICtcbiAgJ9C/0L7QtNC00LXRgNC20LrQsNC80LDRgdGI0YLQsNCx0LDQtNC10L3QtNGA0L7Qs9GA0LDQvNC80Ysg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAg0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNGB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L/QvtC40YHQutCy0YLQsNCx0LvQuNGG0LXQv9GA0LjQstCy0L7QtNC1INC/0L7Qu9C+0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60LDRgNGC0LjQvdC60LjQutC90L7Qv9C60LjRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LrQsNGA0YLQuNC90LrQuNGN0LvQtdC80LXQvdGC0LDQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDQv9C+0LvQvtC20LXQvdC40LXQutC+0LzQsNC90LTQvdC+0LnQv9Cw0L3QtdC70LjRhNC+0YDQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60L7QvNCw0L3QtNC90L7QudC/0LDQvdC10LvQuNGN0LvQtdC80LXQvdGC0LDRhNC+0YDQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10L7Qv9C+0YDQvdC+0LnRgtC+0YfQutC40L7RgtGA0LjRgdC+0LLQutC4INC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QtNC/0LjRgdC10LnQutC00LjQsNCz0YDQsNC80LzQtSDQv9C+0LvQvtC20LXQvdC40LXQv9C+0LTQv9C40YHQtdC50YjQutCw0LvRi9C30L3QsNGH0LXQvdC40LnQuNC30LzQtdGA0LjRgtC10LvRjNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGB0L7RgdGC0L7Rj9C90LjRj9C/0YDQvtGB0LzQvtGC0YDQsCDQv9C+0LvQvtC20LXQvdC40LXRgdGC0YDQvtC60LjQv9C+0LjRgdC60LAg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0L/QvtC70L7QttC10L3QuNC10YPQv9GA0LDQstC70LXQvdC40Y/Qv9C+0LjRgdC60L7QvCAnICtcbiAgJ9C/0L7Qu9C+0LbQtdC90LjQtdGI0LrQsNC70YvQstGA0LXQvNC10L3QuCDQv9C+0YDRj9C00L7QutC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgtC+0YfQtdC60LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L7QudCz0LjRgdGC0L7Qs9GA0LDQvNC80Ysg0L/QvtGA0Y/QtNC+0LrRgdC10YDQuNC50LLQu9C10LPQtdC90LTQtdC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GA0LDQt9C80LXRgNC60LDRgNGC0LjQvdC60Lgg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyDRgNCw0YHRgtGP0LPQuNCy0LDQvdC40LXQv9C+0LLQtdGA0YLQuNC60LDQu9C40LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCAnICtcbiAgJ9GA0LXQttC40LzQsNCy0YLQvtC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgdC+0YHRgtC+0Y/QvdC40Y8g0YDQtdC20LjQvNCy0LLQvtC00LDRgdGC0YDQvtC60YLQsNCx0LvQuNGG0Ysg0YDQtdC20LjQvNCy0YvQsdC+0YDQsNC90LXQt9Cw0L/QvtC70L3QtdC90L3QvtCz0L4g0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9C00LDRgtGLICcgK1xuICAn0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9GB0YLRgNC+0LrQuNGC0LDQsdC70LjRhtGLINGA0LXQttC40LzQstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YbRiyDRgNC10LbQuNC80LjQt9C80LXQvdC10L3QuNGP0YDQsNC30LzQtdGA0LAg0YDQtdC20LjQvNC40LfQvNC10L3QtdC90LjRj9GB0LLRj9C30LDQvdC90L7Qs9C+0LfQvdCw0YfQtdC90LjRjyAnICtcbiAgJ9GA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C00LjQsNC70L7Qs9Cw0L/QtdGH0LDRgtC4INGA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C/0LDRgNCw0LzQtdGC0YDQsNC60L7QvNCw0L3QtNGLINGA0LXQttC40LzQvNCw0YHRiNGC0LDQsdC40YDQvtCy0LDQvdC40Y/Qv9GA0L7RgdC80L7RgtGA0LAgJyArXG4gICfRgNC10LbQuNC80L7RgdC90L7QstC90L7Qs9C+0L7QutC90LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/QvtC60L3QsNGE0L7RgNC80Ysg0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0LfQvdCw0YfQtdC90LjQudGB0LXRgNC40Lgg0YDQtdC20LjQvNC+0YLRgNC40YHQvtCy0LrQuNGB0LXRgtC60LjQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyAnICtcbiAgJ9GA0LXQttC40LzQv9C+0LvRg9C/0YDQvtC30YDQsNGH0L3QvtGB0YLQuNC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80L/RgNC+0LHQtdC70L7QstC00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80YDQsNC30LzQtdGJ0LXQvdC40Y/QvdCw0YHRgtGA0LDQvdC40YbQtSDRgNC10LbQuNC80YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9C60L7Qu9C+0L3QutC4ICcgK1xuICAn0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QtNC40LDQs9GA0LDQvNC80Ysg0YDQtdC20LjQvNGB0LPQu9Cw0LbQuNCy0LDQvdC40Y/QuNC90LTQuNC60LDRgtC+0YDQsCDRgNC10LbQuNC80YHQv9C40YHQutCw0LfQsNC00LDRhyDRgdC60LLQvtC30L3QvtC10LLRi9GA0LDQstC90LjQstCw0L3QuNC1ICcgK1xuICAn0YHQvtGF0YDQsNC90LXQvdC40LXQtNCw0L3QvdGL0YXRhNC+0YDQvNGL0LLQvdCw0YHRgtGA0L7QudC60LDRhSDRgdC/0L7RgdC+0LHQt9Cw0L/QvtC70L3QtdC90LjRj9GC0LXQutGB0YLQsNC30LDQs9C+0LvQvtCy0LrQsNGI0LrQsNC70YvQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgdC/0L7RgdC+0LHQvtC/0YDQtdC00LXQu9C10L3QuNGP0L7Qs9GA0LDQvdC40YfQuNCy0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj9C00LjQsNCz0YDQsNC80LzRiyDRgdGC0LDQvdC00LDRgNGC0L3QsNGP0LPRgNGD0L/Qv9Cw0LrQvtC80LDQvdC0INGB0YLQsNC90LTQsNGA0YLQvdC+0LXQvtGE0L7RgNC80LvQtdC90LjQtSAnICtcbiAgJ9GB0YLQsNGC0YPRgdC+0L/QvtCy0LXRidC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGB0YLQuNC70YzRgdGC0YDQtdC70LrQuCDRgtC40L/QsNC/0L/RgNC+0LrRgdC40LzQsNGG0LjQuNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0LXQtNC40L3QuNGG0YvRiNC60LDQu9GL0LLRgNC10LzQtdC90Lgg0YLQuNC/0LjQvNC/0L7RgNGC0LDRgdC10YDQuNC50YHQu9C+0Y/Qs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/Qu9C40L3QuNC40LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LvQuNC90LjQuNC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9C80LDRgNC60LXRgNCw0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0LzQsNGA0LrQtdGA0LDQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0L7QsdC70LDRgdGC0LjQvtGE0L7RgNC80LvQtdC90LjRjyAnICtcbiAgJ9GC0LjQv9C+0YDQs9Cw0L3QuNC30LDRhtC40LjQuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YXQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YHQtdGA0LjQuNGB0LvQvtGP0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80YsgJyArXG4gICfRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YLQvtGH0LXRh9C90L7Qs9C+0L7QsdGK0LXQutGC0LDQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0YjQutCw0LvRi9GN0LvQtdC80LXQvdGC0LDQu9C10LPQtdC90LTRi9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLICcgK1xuICAn0YLQuNC/0L/QvtC40YHQutCw0L7QsdGK0LXQutGC0L7QstCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C/0YDQvtC10LrRhtC40LjQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40LfQvNC10YDQtdC90LjQuSAnICtcbiAgJ9GC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0YDQtdC60LLQuNC30LjRgtC+0LLQuNC30LzQtdGA0LXQvdC40Lkg0YLQuNC/0YDQsNC80LrQuNGN0LvQtdC80LXQvdGC0LDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgtC40L/RgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GC0LjQv9GB0LLRj9C30LjQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwINGC0LjQv9GB0L7QtdC00LjQvdC10L3QuNGP0LfQvdCw0YfQtdC90LjQudC/0L7RgdC10YDQuNGP0LzQtNC40LDQs9GA0LDQvNC80Ysg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgtC+0YfQtdC60LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0YHQvtC10LTQuNC90LjRgtC10LvRjNC90L7QudC70LjQvdC40Lgg0YLQuNC/0YHRgtC+0YDQvtC90YvRjdC70LXQvNC10L3RgtCw0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0YTQvtGA0LzRi9C+0YLRh9C10YLQsCDRgtC40L/RiNC60LDQu9GL0YDQsNC00LDRgNC90L7QudC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GE0LDQutGC0L7RgNC70LjQvdC40LjRgtGA0LXQvdC00LDQtNC40LDQs9GA0LDQvNC80Ysg0YTQuNCz0YPRgNCw0LrQvdC+0L/QutC4INGE0LjQs9GD0YDRi9Cz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGE0LjQutGB0LDRhtC40Y/QstGC0LDQsdC70LjRhtC1INGE0L7RgNC80LDRgtC00L3Rj9GI0LrQsNC70YvQstGA0LXQvNC10L3QuCAnICtcbiAgJ9GE0L7RgNC80LDRgtC60LDRgNGC0LjQvdC60Lgg0YjQuNGA0LjQvdCw0L/QvtC00YfQuNC90LXQvdC90YvRhdGN0LvQtdC80LXQvdGC0L7QstGE0L7RgNC80YsgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQv9GA0LjQutC70LDQtNC90YvRhSDQvtCx0YrQtdC60YLQvtCyID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX29iamVjdHNfcHJvcGVydGllcyA9XG4gICfQstC40LTQtNCy0LjQttC10L3QuNGP0LHRg9GF0LPQsNC70YLQtdGA0LjQuCDQstC40LTQtNCy0LjQttC10L3QuNGP0L3QsNC60L7Qv9C70LXQvdC40Y8g0LLQuNC00L/QtdGA0LjQvtC00LDRgNC10LPQuNGB0YLRgNCw0YDQsNGB0YfQtdGC0LAg0LLQuNC00YHRh9C10YLQsCDQstC40LTRgtC+0YfQutC40LzQsNGA0YjRgNGD0YLQsNCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0LAgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQs9GA0YPQv9C/0LjRjdC70LXQvNC10L3RgtC+0LIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LbQuNC80LDQv9GA0L7QstC10LTQtdC90LjRjyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHRgNC10LfQsCDQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNCw0LPRgNC10LPQsNGC0LDRgNC10LPQuNGB0YLRgNCw0L3QsNC60L7Qv9C70LXQvdC40Y8g0YDQtdC20LjQvNCw0LLRgtC+0LLRgNC10LzRjyDRgNC10LbQuNC80LfQsNC/0LjRgdC40LTQvtC60YPQvNC10L3RgtCwINGA0LXQttC40LzQv9GA0L7QstC10LTQtdC90LjRj9C00L7QutGD0LzQtdC90YLQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdGLINC+0LHQvNC10L3QsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19leGNoYW5nZV9wbGFucyA9XG4gICfQsNCy0YLQvtGA0LXQs9C40YHRgtGA0LDRhtC40Y/QuNC30LzQtdC90LXQvdC40Lkg0LTQvtC/0YPRgdGC0LjQvNGL0LnQvdC+0LzQtdGA0YHQvtC+0LHRidC10L3QuNGPINC+0YLQv9GA0LDQstC60LDRjdC70LXQvNC10L3RgtCw0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjQtdGN0LvQtdC80LXQvdGC0LDQtNCw0L3QvdGL0YUgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YLQsNCx0LvQuNGH0L3Ri9C5INC00L7QutGD0LzQtdC90YIgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfdGFidWxhcl9kb2N1bWVudCA9XG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDQvtGA0LjQtdC90YLQsNGG0LjRj9GB0YLRgNCw0L3QuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0LrQvtC70L7QvdC+0LrRgdCy0L7QtNC90L7QudGC0LDQsdC70LjRhtGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10LjRgtC+0LPQvtCy0YHRgtGA0L7QutGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0Ysg0L/QvtC70L7QttC10L3QuNC10YLQtdC60YHRgtCw0L7RgtC90L7RgdC40YLQtdC70YzQvdC+0LrQsNGA0YLQuNC90LrQuCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDQs9GA0YPQv9C/0LjRgNC+0LLQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgdC/0L7RgdC+0LHRh9GC0LXQvdC40Y/Qt9C90LDRh9C10L3QuNC50YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0LTQstGD0YHRgtC+0YDQvtC90L3QtdC50L/QtdGH0LDRgtC4INGC0LjQv9C30LDQv9C+0LvQvdC10L3QuNGP0L7QsdC70LDRgdGC0LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GC0LjQv9C60YPRgNGB0L7RgNC+0LLRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40YDQuNGB0YPQvdC60LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/Qu9C40L3QuNC40Y/Rh9C10LnQutC40YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgtC40L/QvdCw0L/RgNCw0LLQu9C10L3QuNGP0L/QtdGA0LXRhdC+0LTQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/QstGL0LTQtdC70LXQvdC40Y/RgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvtGC0L7QsdGA0LDQttC10L3QuNGP0LvQuNC90LjQudGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0YsgJyArXG4gICfRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9GC0LXQutGB0YLQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GA0LjRgdGD0L3QutCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0YHQvNC10YnQtdC90LjRj9GC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YLQuNC/0YPQt9C+0YDQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9GE0LDQudC70LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC+0YfQvdC+0YHRgtGM0L/QtdGH0LDRgtC4INGH0LXRgNC10LTQvtCy0LDQvdC40LXRgNCw0YHQv9C+0LvQvtC20LXQvdC40Y/RgdGC0YDQsNC90LjRhiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C70LDQvdC40YDQvtCy0YnQuNC6ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3NoZWR1bGVyID1cbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQstGA0LXQvNC10L3QuNGN0LvQtdC80LXQvdGC0L7QstC/0LvQsNC90LjRgNC+0LLRidC40LrQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdGL0Lkg0LTQvtC60YPQvNC10L3RgiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19mb3JtYXR0ZWRfZG9jdW1lbnQgPVxuICAn0YLQuNC/0YTQsNC50LvQsNGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC30LDQv9GA0L7RgSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19xdWVyeSA9XG4gICfQvtCx0YXQvtC00YDQtdC30YPQu9GM0YLQsNGC0LDQt9Cw0L/RgNC+0YHQsCDRgtC40L/Qt9Cw0L/QuNGB0LjQt9Cw0L/RgNC+0YHQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMINC+0YLRh9C10YLQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19yZXBvcnRfYnVpbGRlciA9XG4gICfQstC40LTQt9Cw0L/QvtC70L3QtdC90LjRj9GA0LDRgdGI0LjRhNGA0L7QstC60LjQv9C+0YHRgtGA0L7QuNGC0LXQu9GP0L7RgtGH0LXRgtCwINGC0LjQv9C00L7QsdCw0LLQu9C10L3QuNGP0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0YLQuNC/0LjQt9C80LXRgNC10L3QuNGP0L/QvtGB0YLRgNC+0LjRgtC10LvRj9C+0YLRh9C10YLQsCDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9C40YLQvtCz0L7QsiAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LHQvtGC0LAg0YEg0YTQsNC50LvQsNC80LggPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZmlsZXMgPVxuICAn0LTQvtGB0YLRg9C/0LrRhNCw0LnQu9GDINGA0LXQttC40LzQtNC40LDQu9C+0LPQsNCy0YvQsdC+0YDQsNGE0LDQudC70LAg0YDQtdC20LjQvNC+0YLQutGA0YvRgtC40Y/RhNCw0LnQu9CwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0L7RgdGC0YDQvtC40YLQtdC70Ywg0LfQsNC/0YDQvtGB0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcXVlcnlfYnVpbGRlciA9XG4gICfRgtC40L/QuNC30LzQtdGA0LXQvdC40Y/Qv9C+0YHRgtGA0L7QuNGC0LXQu9GP0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LDQvdCw0LvQuNC3INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2FuYWx5c2lzID1cbiAgJ9Cy0LjQtNC00LDQvdC90YvRhdCw0L3QsNC70LjQt9CwINC80LXRgtC+0LTQutC70LDRgdGC0LXRgNC40LfQsNGG0LjQuCDRgtC40L/QtdC00LjQvdC40YbRi9C40L3RgtC10YDQstCw0LvQsNCy0YDQtdC80LXQvdC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LfQsNC/0L7Qu9C90LXQvdC40Y/RgtCw0LHQu9C40YbRi9GA0LXQt9GD0LvRjNGC0LDRgtCw0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GH0LjRgdC70L7QstGL0YXQt9C90LDRh9C10L3QuNC50LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GF0L/QvtC40YHQutCw0LDRgdGB0L7RhtC40LDRhtC40Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC00LXRgNC10LLQvtGA0LXRiNC10L3QuNC5ICcgK1xuICAn0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC60LvQsNGB0YLQtdGA0LjQt9Cw0YbQuNGPINGC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQvtCx0YnQsNGP0YHRgtCw0YLQuNGB0YLQuNC60LAg0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC/0L7QuNGB0LrQsNGB0YHQvtGG0LjQsNGG0LjQuSAnICtcbiAgJ9GC0LjQv9C60L7Qu9C+0L3QutC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YXQv9C+0LjRgdC60L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10Lkg0YLQuNC/0LrQvtC70L7QvdC60LjQvNC+0LTQtdC70LjQv9GA0L7Qs9C90L7Qt9CwINGC0LjQv9C80LXRgNGL0YDQsNGB0YHRgtC+0Y/QvdC40Y/QsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C+0YLRgdC10YfQtdC90LjRj9C/0YDQsNCy0LjQu9Cw0YHRgdC+0YbQuNCw0YbQuNC4INGC0LjQv9C/0L7Qu9GP0LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0YHRgtCw0L3QtNCw0YDRgtC40LfQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/QvtGA0Y/QtNC+0YfQuNCy0LDQvdC40Y/Qv9GA0LDQstC40LvQsNGB0YHQvtGG0LjQsNGG0LjQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0YPQv9C+0YDRj9C00L7Rh9C40LLQsNC90LjRj9GI0LDQsdC70L7QvdC+0LLQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQudCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFINGC0LjQv9GD0L/RgNC+0YnQtdC90LjRj9C00LXRgNC10LLQsNGA0LXRiNC10L3QuNC5ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtIHhtbCwganNvbiwgeHMsIGRvbSwgeGR0bywgd2ViLdGB0LXRgNCy0LjRgdGLID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3htbF9qc29uX3hzX2RvbV94ZHRvX3dzID1cbiAgJ3dz0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0LDRgNCw0LzQtdGC0YDQsCDQstCw0YDQuNCw0L3RgnhwYXRoeHMg0LLQsNGA0LjQsNC90YLQt9Cw0L/QuNGB0LjQtNCw0YLRi2pzb24g0LLQsNGA0LjQsNC90YLQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQstC40LTQs9GA0YPQv9C/0YvQvNC+0LTQtdC70Lh4cyDQstC40LTRhNCw0YHQtdGC0LB4ZHRvICcgK1xuICAn0LTQtdC50YHRgtCy0LjQtdC/0L7RgdGC0YDQvtC40YLQtdC70Y9kb20g0LfQsNCy0LXRgNGI0LXQvdC90L7RgdGC0YzQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0L7RgdGC0LDQstC90L7Qs9C+0YLQuNC/0LB4cyDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNGB0YXQtdC80Yt4cyDQt9Cw0L/RgNC10YnQtdC90L3Ri9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzICcgK1xuICAn0LjRgdC60LvRjtGH0LXQvdC40Y/Qs9GA0YPQv9C/0L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC60LDRgtC10LPQvtGA0LjRj9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LDRgtGA0LjQsdGD0YLQsHhzINC60LDRgtC10LPQvtGA0LjRj9C+0LPRgNCw0L3QuNGH0LXQvdC40Y/QuNC00LXQvdGC0LjRh9C90L7RgdGC0Lh4cyDQutCw0YLQtdCz0L7RgNC40Y/QvtCz0YDQsNC90LjRh9C10L3QuNGP0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC40LzQtdC9eHMgJyArXG4gICfQvNC10YLQvtC00L3QsNGB0LvQtdC00L7QstCw0L3QuNGPeHMg0LzQvtC00LXQu9GM0YHQvtC00LXRgNC20LjQvNC+0LPQvnhzINC90LDQt9C90LDRh9C10L3QuNC10YLQuNC/0LB4bWwg0L3QtdC00L7Qv9GD0YHRgtC40LzRi9C10L/QvtC00YHRgtCw0L3QvtCy0LrQuHhzINC+0LHRgNCw0LHQvtGC0LrQsNC/0YDQvtCx0LXQu9GM0L3Ri9GF0YHQuNC80LLQvtC70L7QsnhzINC+0LHRgNCw0LHQvtGC0LrQsNGB0L7QtNC10YDQttC40LzQvtCz0L54cyAnICtcbiAgJ9C+0LPRgNCw0L3QuNGH0LXQvdC40LXQt9C90LDRh9C10L3QuNGPeHMg0L/QsNGA0LDQvNC10YLRgNGL0L7RgtCx0L7RgNCw0YPQt9C70L7QsmRvbSDQv9C10YDQtdC90L7RgdGB0YLRgNC+0Lpqc29uINC/0L7Qt9C40YbQuNGP0LLQtNC+0LrRg9C80LXQvdGC0LVkb20g0L/RgNC+0LHQtdC70YzQvdGL0LXRgdC40LzQstC+0LvRi3htbCDRgtC40L/QsNGC0YDQuNCx0YPRgtCweG1sINGC0LjQv9C30L3QsNGH0LXQvdC40Y9qc29uICcgK1xuICAn0YLQuNC/0LrQsNC90L7QvdC40YfQtdGB0LrQvtCz0L54bWwg0YLQuNC/0LrQvtC80L/QvtC90LXQvdGC0Yt4cyDRgtC40L/Qv9GA0L7QstC10YDQutC4eG1sINGC0LjQv9GA0LXQt9GD0LvRjNGC0LDRgtCwZG9teHBhdGgg0YLQuNC/0YPQt9C70LBkb20g0YLQuNC/0YPQt9C70LB4bWwg0YTQvtGA0LzQsHhtbCDRhNC+0YDQvNCw0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y94cyAnICtcbiAgJ9GE0L7RgNC80LDRgtC00LDRgtGLanNvbiDRjdC60YDQsNC90LjRgNC+0LLQsNC90LjQtdGB0LjQvNCy0L7Qu9C+0LJqc29uICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0LjRgdGC0LXQvNCwINC60L7QvNC/0L7QvdC+0LLQutC4INC00LDQvdC90YvRhSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSA9XG4gICfQstC40LTRgdGA0LDQstC90LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNC10LnRgdGC0LLQuNC10L7QsdGA0LDQsdC+0YLQutC40YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC90LDQv9GA0LDQstC70LXQvdC40LXRgdC+0YDRgtC40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LLQu9C+0LbQtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQuNGC0L7Qs9C+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQv9C+0LvQtdC50LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC/0L7Qu9GP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YDQtdC60LLQuNC30LjRgtC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QsdGD0YXQs9Cw0LvRgtC10YDRgdC60L7Qs9C+0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QstGL0LLQvtC00LDRgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9Cz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/Qs9GA0YPQv9C/0YvRjdC70LXQvNC10L3RgtC+0LLQvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Qt9Cw0LPQvtC70L7QstC60LDQv9C+0LvQtdC50LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LzQsNC60LXRgtCw0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C80LDQutC10YLQsNC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L7RgdGC0LDRgtC60LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C/0LXRgNC40L7QtNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/RgtC10LrRgdGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RgdCy0Y/Qt9C40L3QsNCx0L7RgNC+0LLQtNCw0L3QvdGL0YXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RjdC70LXQvNC10L3RgtCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC70LXQs9C10L3QtNGL0LTQuNCw0LPRgNCw0LzQvNGL0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0L/RgNC40LzQtdC90LXQvdC40Y/QvtGC0LHQvtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9GN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0L7RgdGC0L7Rj9C90LjQtdGN0LvQtdC80LXQvdGC0LDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgdC/0L7RgdC+0LHQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQtdC20LjQvNC60L7QvNC/0L7QvdC+0LLQutC40YDQtdC30YPQu9GM0YLQsNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9Cw0YDQsNC80LXRgtGA0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQsNCy0YLQvtC/0L7Qt9C40YbQuNGP0YDQtdGB0YPRgNGB0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcrXG4gICfQstCw0YDQuNCw0L3RgtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGA0LXRgdGD0YDRgdC+0LLQstC00LjQsNCz0YDQsNC80LzQtdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGE0LjQutGB0LDRhtC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YPRgdC70L7QstC90L7Qs9C+0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQv9C+0YfRgtCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2VtYWlsID1cbiAgJ9Cy0LDQttC90L7RgdGC0YzQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINC+0LHRgNCw0LHQvtGC0LrQsNGC0LXQutGB0YLQsNC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7QstC70L7QttC10L3QuNGPICcgK1xuICAn0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9C90LVhc2NpadGB0LjQvNCy0L7Qu9C+0LLQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINGC0LjQv9GC0LXQutGB0YLQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDQv9GA0L7RgtC+0LrQvtC70LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0YsgJyArXG4gICfRgdGC0LDRgtGD0YHRgNCw0LfQsdC+0YDQsNC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQttGD0YDQvdCw0Lsg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19sb2dib29rID1cbiAgJ9GA0LXQttC40LzRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRgdGC0LDRgtGD0YHRgtGA0LDQvdC30LDQutGG0LjQuNC30LDQv9C40YHQuNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRg9GA0L7QstC10L3RjNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Y8gPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfY3J5cHRvZ3JhcGh5ID1cbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdGF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgNC10LbQuNC80LLQutC70Y7Rh9C10L3QuNGP0YHQtdGA0YLQuNGE0LjQutCw0YLQvtCy0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGA0LXQttC40LzQv9GA0L7QstC10YDQutC40YHQtdGA0YLQuNGE0LjQutCw0YLQsNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnICtcbiAgJ9GC0LjQv9GF0YDQsNC90LjQu9C40YnQsNGB0LXRgNGC0LjRhNC40LrQsNGC0L7QstC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBaSVAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfemlwID1cbiAgJ9C60L7QtNC40YDQvtCy0LrQsNC40LzQtdC90YTQsNC50LvQvtCy0LJ6aXDRhNCw0LnQu9C1INC80LXRgtC+0LTRgdC20LDRgtC40Y96aXAg0LzQtdGC0L7QtNGI0LjRhNGA0L7QstCw0L3QuNGPemlwINGA0LXQttC40LzQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGP0L/Rg9GC0LXQudGE0LDQudC70L7QsnppcCDRgNC10LbQuNC80L7QsdGA0LDQsdC+0YLQutC40L/QvtC00LrQsNGC0LDQu9C+0LPQvtCyemlwICcgK1xuICAn0YDQtdC20LjQvNGB0L7RhdGA0LDQvdC10L3QuNGP0L/Rg9GC0LXQuXppcCDRg9GA0L7QstC10L3RjNGB0LbQsNGC0LjRj3ppcCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSBcbiAgLy8g0JHQu9C+0LrQuNGA0L7QstC60LAg0LTQsNC90L3Ri9GFLCDQpNC+0L3QvtCy0YvQtSDQt9Cw0LTQsNC90LjRjywg0JDQstGC0L7QvNCw0YLQuNC30LjRgNC+0LLQsNC90L3QvtC1INGC0LXRgdGC0LjRgNC+0LLQsNC90LjQtSxcbiAgLy8g0JTQvtGB0YLQsNCy0LvRj9C10LzRi9C1INGD0LLQtdC00L7QvNC70LXQvdC40Y8sINCS0YHRgtGA0L7QtdC90L3Ri9C1INC/0L7QutGD0L/QutC4LCDQmNC90YLQtdGA0L3QtdGCLCDQoNCw0LHQvtGC0LAg0YEg0LTQstC+0LjRh9C90YvQvNC4INC00LDQvdC90YvQvNC4ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX290aGVyID1cbiAgJ9C30LLRg9C60L7QstC+0LXQvtC/0L7QstC10YnQtdC90LjQtSDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXRhdC+0LTQsNC60YHRgtGA0L7QutC1INC/0L7Qt9C40YbQuNGP0LLQv9C+0YLQvtC60LUg0L/QvtGA0Y/QtNC+0LrQsdCw0LnRgtC+0LIg0YDQtdC20LjQvNCx0LvQvtC60LjRgNC+0LLQutC40LTQsNC90L3Ri9GFINGA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YUgJyArXG4gICfRgdC10YDQstC40YHQstGB0YLRgNC+0LXQvdC90YvRhdC/0L7QutGD0L/QvtC6INGB0L7RgdGC0L7Rj9C90LjQtdGE0L7QvdC+0LLQvtCz0L7Qt9Cw0LTQsNC90LjRjyDRgtC40L/Qv9C+0LTQv9C40YHRh9C40LrQsNC00L7RgdGC0LDQstC70Y/QtdC80YvRhdGD0LLQtdC00L7QvNC70LXQvdC40Lkg0YPRgNC+0LLQtdC90YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C30LDRidC40YnQtdC90L3QvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRj2Z0cCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdGF0LXQvNCwINC30LDQv9GA0L7RgdCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3JlcXVlc3Rfc2NoZW1hID1cbiAgJ9C90LDQv9GA0LDQstC70LXQvdC40LXQv9C+0YDRj9C00LrQsNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QtNC+0L/QvtC70L3QtdC90LjRj9C/0LXRgNC40L7QtNCw0LzQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QutC+0L3RgtGA0L7Qu9GM0L3QvtC50YLQvtGH0LrQuNGB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/QvtCx0YrQtdC00LjQvdC10L3QuNGP0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwICcgK1xuICAn0YLQuNC/0L/QsNGA0LDQvNC10YLRgNCw0LTQvtGB0YLRg9C/0L3QvtC50YLQsNCx0LvQuNGG0YvRgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/RgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQstC+0LnRgdGC0LLQsCDQvtCx0YrQtdC60YLQvtCyINC80LXRgtCw0LTQsNC90L3Ri9GFID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3Byb3BlcnRpZXNfb2ZfbWV0YWRhdGFfb2JqZWN0cyA9XG4gICdodHRw0LzQtdGC0L7QtCDQsNCy0YLQvtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINCw0LLRgtC+0L/RgNC10YTQuNC60YHQvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0LLQsNGA0LjQsNC90YLQstGB0YLRgNC+0LXQvdC90L7Qs9C+0Y/Qt9GL0LrQsCDQstC40LTQuNC10YDQsNGA0YXQuNC4INCy0LjQtNGA0LXQs9C40YHRgtGA0LDQvdCw0LrQvtC/0LvQtdC90LjRjyAnICtcbiAgJ9Cy0LjQtNGC0LDQsdC70LjRhtGL0LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDQt9Cw0L/QuNGB0YzQtNCy0LjQttC10L3QuNC50L/RgNC40L/RgNC+0LLQtdC00LXQvdC40Lgg0LfQsNC/0L7Qu9C90LXQvdC40LXQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuSDQuNC90LTQtdC60YHQuNGA0L7QstCw0L3QuNC1ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdCw0LfRi9C/0LvQsNC90LDQstC40LTQvtCy0YDQsNGB0YfQtdGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsdGL0YHRgtGA0L7Qs9C+0LLRi9Cx0L7RgNCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC00YfQuNC90LXQvdC40Y8gJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDQt9C00LXQu9GP0LXQvNGL0YXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgNC10LrQstC40LfQuNGC0LAgJyArXG4gICfQvdCw0LfQvdCw0YfQtdC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsNC30L3QsNGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QtdGA0LXQtNCw0YfQuCDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GFICcgK1xuICAn0L7Qv9C10YDQsNGC0LjQstC90L7QtdC/0YDQvtCy0LXQtNC10L3QuNC1INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdCy0LjQtNCw0YDQsNGB0YfQtdGC0LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LLQuNC00LDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC30LDQtNCw0YfQuCAnICtcbiAgJ9C+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0LvQsNC90LDQvtCx0LzQtdC90LAg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YHQv9GA0LDQstC+0YfQvdC40LrQsCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRgdGH0LXRgtCwINC/0LXRgNC10LzQtdGJ0LXQvdC40LXQs9GA0LDQvdC40YbRi9C/0YDQuNC/0YDQvtCy0LXQtNC10L3QuNC4ICcgK1xuICAn0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzQvdC+0LzQtdGA0LDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0L3QvtC80LXRgNCw0LTQvtC60YPQvNC10L3RgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGA0LDRgdGH0LXRgtCwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0YDQtdCz0LjRgdGC0YDQsNGB0LLQtdC00LXQvdC40LkgJyArXG4gICfQv9C+0LLRgtC+0YDQvdC+0LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCy0L7Qt9Cy0YDQsNGJ0LDQtdC80YvRhdC30L3QsNGH0LXQvdC40Lkg0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQudC/0L7QuNGB0LrQv9GA0LjQstCy0L7QtNC10L/QvtGB0YLRgNC+0LrQtSDQv9GA0LjQvdCw0LTQu9C10LbQvdC+0YHRgtGM0L7QsdGK0LXQutGC0LAg0L/RgNC+0LLQtdC00LXQvdC40LUgJyArXG4gICfRgNCw0LfQtNC10LvQtdC90LjQtdCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LjQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXQtNCw0L3QvdGL0YXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0YDQsNC30LTQtdC70LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCAnK1xuICAn0YDQtdC20LjQvNCw0LLRgtC+0L3Rg9C80LXRgNCw0YbQuNC40L7QsdGK0LXQutGC0L7QsiDRgNC10LbQuNC80LfQsNC/0LjRgdC40YDQtdCz0LjRgdGC0YDQsCDRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/QvNC+0LTQsNC70YzQvdC+0YHRgtC4ICcgK1xuICAn0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQuNC90YXRgNC+0L3QvdGL0YXQstGL0LfQvtCy0L7QstGA0LDRgdGI0LjRgNC10L3QuNC50L/Qu9Cw0YLRhNC+0YDQvNGL0LjQstC90LXRiNC90LjRhdC60L7QvNC/0L7QvdC10L3RgiDRgNC10LbQuNC80L/QvtCy0YLQvtGA0L3QvtCz0L7QuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0LXQsNC90YHQvtCyICcgK1xuICAn0YDQtdC20LjQvNC/0L7Qu9GD0YfQtdC90LjRj9C00LDQvdC90YvRhdCy0YvQsdC+0YDQsNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGA0LXQttC40LzRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuCDRgNC10LbQuNC80YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0LjQuNC90YLQtdGA0YTQtdC50YHQsCAnICtcbiAgJ9GA0LXQttC40LzRg9C/0YDQsNCy0LvQtdC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC+0LnQtNCw0L3QvdGL0YXQv9C+0YPQvNC+0LvRh9Cw0L3QuNGOINGB0LXRgNC40LjQutC+0LTQvtCy0L/Qu9Cw0L3QsNCy0LjQtNC+0LLRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgdC10YDQuNC40LrQvtC00L7QstC/0LvQsNC90LDRgdGH0LXRgtC+0LIgJyArXG4gICfRgdC10YDQuNC40LrQvtC00L7QstGB0L/RgNCw0LLQvtGH0L3QuNC60LAg0YHQvtC30LTQsNC90LjQtdC/0YDQuNCy0LLQvtC00LUg0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCwINGB0L/QvtGB0L7QsdC/0L7QuNGB0LrQsNGB0YLRgNC+0LrQuNC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INGB0L/QvtGB0L7QsdGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8gJyArXG4gICfRgtC40L/QtNCw0L3QvdGL0YXRgtCw0LHQu9C40YbRi9Cy0L3QtdGI0L3QtdCz0L7QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YUg0YLQuNC/0LrQvtC00LDQv9C70LDQvdCw0LLQuNC00L7QstGA0LDRgdGH0LXRgtCwINGC0LjQv9C60L7QtNCw0YHQv9GA0LDQstC+0YfQvdC40LrQsCDRgtC40L/QvNCw0LrQtdGC0LAg0YLQuNC/0L3QvtC80LXRgNCw0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHQsCAnICtcbiAgJ9GC0LjQv9C90L7QvNC10YDQsNC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QvdC+0LzQtdGA0LDQt9Cw0LTQsNGH0Lgg0YLQuNC/0YTQvtGA0LzRiyDRg9C00LDQu9C10L3QuNC10LTQstC40LbQtdC90LjQuSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgNCw0LfQvdGL0LUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZGlmZmVyZW50cyA9XG4gICfQstCw0LbQvdC+0YHRgtGM0L/RgNC+0LHQu9C10LzRi9C/0YDQuNC80LXQvdC10L3QuNGP0YDQsNGB0YjQuNGA0LXQvdC40Y/QutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LLQsNGA0LjQsNC90YLQuNC90YLQtdGA0YTQtdC50YHQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDQstCw0YDQuNCw0L3RgtC80LDRgdGI0YLQsNCx0LDRhNC+0YDQvNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9Cy0LDRgNC40LDQvdGC0L7RgdC90L7QstC90L7Qs9C+0YjRgNC40YTRgtCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINCy0LDRgNC40LDQvdGC0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0L/QtdGA0LjQvtC00LAg0LLQsNGA0LjQsNC90YLRgdGC0LDQvdC00LDRgNGC0L3QvtC50LTQsNGC0YvQvdCw0YfQsNC70LAg0LLQuNC00LPRgNCw0L3QuNGG0Ysg0LLQuNC00LrQsNGA0YLQuNC90LrQuCAnICtcbiAgJ9Cy0LjQtNC+0YLQvtCx0YDQsNC20LXQvdC40Y/Qv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0LLQuNC00YDQsNC80LrQuCDQstC40LTRgdGA0LDQstC90LXQvdC40Y8g0LLQuNC00YbQstC10YLQsCDQstC40LTRh9C40YHQu9C+0LLQvtCz0L7Qt9C90LDRh9C10L3QuNGPINCy0LjQtNGI0YDQuNGE0YLQsCDQtNC+0L/Rg9GB0YLQuNC80LDRj9C00LvQuNC90LAg0LTQvtC/0YPRgdGC0LjQvNGL0LnQt9C90LDQuiAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1Ynl0ZW9yZGVybWFyayDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC80LXRgtCw0LTQsNC90L3Ri9GF0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINC40YHRgtC+0YfQvdC40LrRgNCw0YHRiNC40YDQtdC90LjQudC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQutC70LDQstC40YjQsCDQutC+0LTQstC+0LfQstGA0LDRgtCw0LTQuNCw0LvQvtCz0LAgJyArXG4gICfQutC+0LTQuNGA0L7QstC60LB4YmFzZSDQutC+0LTQuNGA0L7QstC60LDRgtC10LrRgdGC0LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0L7QuNGB0LrQsCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10YHQvtGA0YLQuNGA0L7QstC60Lgg0L7QsdC90L7QstC70LXQvdC40LXQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvRhdC00LDQvdC90YvRhSDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQuNC40LfQvNC10L3QtdC90LjQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQv9Cw0L3QtdC70LjRgNCw0LfQtNC10LvQvtCyINC/0YDQvtCy0LXRgNC60LDQt9Cw0L/QvtC70L3QtdC90LjRjyDRgNC10LbQuNC80LTQuNCw0LvQvtCz0LDQstC+0L/RgNC+0YEg0YDQtdC20LjQvNC30LDQv9GD0YHQutCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGA0LXQttC40LzQvtC60YDRg9Cz0LvQtdC90LjRjyDRgNC10LbQuNC80L7RgtC60YDRi9GC0LjRj9GE0L7RgNC80L/RgNC40LvQvtC20LXQvdC40Y8gJyArXG4gICfRgNC10LbQuNC80L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINGB0LrQvtGA0L7RgdGC0YzQutC70LjQtdC90YLRgdC60L7Qs9C+0YHQvtC10LTQuNC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNC10LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDRgdC+0YHRgtC+0Y/QvdC40LXQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFICcgK1xuICAn0YHQv9C+0YHQvtCx0LLRi9Cx0L7RgNCw0YHQtdGA0YLQuNGE0LjQutCw0YLQsHdpbmRvd3Mg0YHQv9C+0YHQvtCx0LrQvtC00LjRgNC+0LLQsNC90LjRj9GB0YLRgNC+0LrQuCDRgdGC0LDRgtGD0YHRgdC+0L7QsdGJ0LXQvdC40Y8g0YLQuNC/0LLQvdC10YjQvdC10LnQutC+0LzQv9C+0L3QtdC90YLRiyDRgtC40L/Qv9C70LDRgtGE0L7RgNC80Ysg0YLQuNC/0L/QvtCy0LXQtNC10L3QuNGP0LrQu9Cw0LLQuNGI0LhlbnRlciAnICtcbiAgJ9GC0LjQv9GN0LvQtdC80LXQvdGC0LDQuNC90YTQvtGA0LzQsNGG0LjQuNC+0LLRi9C/0L7Qu9C90LXQvdC40LjQvtCx0L3QvtCy0LvQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFINGD0YDQvtCy0LXQvdGM0LjQt9C+0LvRj9GG0LjQuNGC0YDQsNC90LfQsNC60YbQuNC5INGF0LXRiNGE0YPQvdC60YbQuNGPINGH0LDRgdGC0LjQtNCw0YLRiyc7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPICjRgdC+0LTQtdGA0LbQsNGCINC00L7Rh9C10YDQvdC40LUg0LfQvdCw0YfQtdC90LjRjywg0L7QsdGA0LDRidC10L3QuNGPINC6INC60L7RgtC+0YDRi9C8INGH0LXRgNC10Lcg0YDQsNC30YvQvNC10L3QvtCy0LDQvdC40LUpXG4gIHZhciBDTEFTUyA9XG4gIHY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyArXG4gIHY4X3N5c3RlbV9lbnVtc19pbnRlcmZhY2UgK1xuICB2OF9zeXN0ZW1fZW51bXNfb2JqZWN0c19wcm9wZXJ0aWVzICtcbiAgdjhfc3lzdGVtX2VudW1zX2V4Y2hhbmdlX3BsYW5zICtcbiAgdjhfc3lzdGVtX2VudW1zX3RhYnVsYXJfZG9jdW1lbnQgK1xuICB2OF9zeXN0ZW1fZW51bXNfc2hlZHVsZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZm9ybWF0dGVkX2RvY3VtZW50ICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5ICtcbiAgdjhfc3lzdGVtX2VudW1zX3JlcG9ydF9idWlsZGVyICtcbiAgdjhfc3lzdGVtX2VudW1zX2ZpbGVzICtcbiAgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5X2J1aWxkZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZGF0YV9hbmFseXNpcyArXG4gIHY4X3N5c3RlbV9lbnVtc194bWxfanNvbl94c19kb21feGR0b193cyArXG4gIHY4X3N5c3RlbV9lbnVtc19kYXRhX2NvbXBvc2l0aW9uX3N5c3RlbSArXG4gIHY4X3N5c3RlbV9lbnVtc19lbWFpbCArXG4gIHY4X3N5c3RlbV9lbnVtc19sb2dib29rICtcbiAgdjhfc3lzdGVtX2VudW1zX2NyeXB0b2dyYXBoeSArXG4gIHY4X3N5c3RlbV9lbnVtc196aXAgK1xuICB2OF9zeXN0ZW1fZW51bXNfb3RoZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfcmVxdWVzdF9zY2hlbWEgK1xuICB2OF9zeXN0ZW1fZW51bXNfcHJvcGVydGllc19vZl9tZXRhZGF0YV9vYmplY3RzICtcbiAgdjhfc3lzdGVtX2VudW1zX2RpZmZlcmVudHM7XG5cbiAgLy8gdjgg0L7QsdGJ0LjQtSDQvtCx0YrQtdC60YLRiyAo0YMg0L7QsdGK0LXQutGC0L7QsiDQtdGB0YLRjCDQutC+0L3RgdGC0YDRg9C60YLQvtGALCDRjdC60LfQtdC80L/Qu9GP0YDRiyDRgdC+0LfQtNCw0Y7RgtGB0Y8g0LzQtdGC0L7QtNC+0Lwg0J3QntCS0KvQmSkgPT0+IHR5cGVcbiAgdmFyIHY4X3NoYXJlZF9vYmplY3QgPVxuICAnY29t0L7QsdGK0LXQutGCIGZ0cNGB0L7QtdC00LjQvdC10L3QuNC1IGh0dHDQt9Cw0L/RgNC+0YEgaHR0cNGB0LXRgNCy0LjRgdC+0YLQstC10YIgaHR0cNGB0L7QtdC00LjQvdC10L3QuNC1IHdz0L7Qv9GA0LXQtNC10LvQtdC90LjRjyB3c9C/0YDQvtC60YHQuCB4YmFzZSDQsNC90LDQu9C40LfQtNCw0L3QvdGL0YUg0LDQvdC90L7RgtCw0YbQuNGPeHMgJyArXG4gICfQsdC70L7QutC40YDQvtCy0LrQsNC00LDQvdC90YvRhSDQsdGD0YTQtdGA0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDQstC60LvRjtGH0LXQvdC40LV4cyDQstGL0YDQsNC20LXQvdC40LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQs9C10L3QtdGA0LDRgtC+0YDRgdC70YPRh9Cw0LnQvdGL0YXRh9C40YHQtdC7INCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwICcgK1xuICAn0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60LjQtdC60L7QvtGA0LTQuNC90LDRgtGLINCz0YDQsNGE0LjRh9C10YHQutCw0Y/RgdGF0LXQvNCwINCz0YDRg9C/0L/QsNC80L7QtNC10LvQuHhzINC00LDQvdC90YvQtdGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQtNCy0L7QuNGH0L3Ri9C10LTQsNC90L3Ri9C1INC00LXQvdC00YDQvtCz0YDQsNC80LzQsCAnICtcbiAgJ9C00LjQsNCz0YDQsNC80LzQsCDQtNC40LDQs9GA0LDQvNC80LDQs9Cw0L3RgtCwINC00LjQsNC70L7Qs9Cy0YvQsdC+0YDQsNGE0LDQudC70LAg0LTQuNCw0LvQvtCz0LLRi9Cx0L7RgNCw0YbQstC10YLQsCDQtNC40LDQu9C+0LPQstGL0LHQvtGA0LDRiNGA0LjRhNGC0LAg0LTQuNCw0LvQvtCz0YDQsNGB0L/QuNGB0LDQvdC40Y/RgNC10LPQu9Cw0LzQtdC90YLQvdC+0LPQvtC30LDQtNCw0L3QuNGPICcgK1xuICAn0LTQuNCw0LvQvtCz0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRj9GB0YLQsNC90LTQsNGA0YLQvdC+0LPQvtC/0LXRgNC40L7QtNCwINC00LjQsNC/0LDQt9C+0L0g0LTQvtC60YPQvNC10L3RgmRvbSDQtNC+0LrRg9C80LXQvdGCaHRtbCDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y94cyDQtNC+0YHRgtCw0LLQu9GP0LXQvNC+0LXRg9Cy0LXQtNC+0LzQu9C10L3QuNC1ICcgK1xuICAn0LfQsNC/0LjRgdGMZG9tINC30LDQv9C40YHRjGZhc3RpbmZvc2V0INC30LDQv9C40YHRjGh0bWwg0LfQsNC/0LjRgdGManNvbiDQt9Cw0L/QuNGB0Yx4bWwg0LfQsNC/0LjRgdGMemlw0YTQsNC50LvQsCDQt9Cw0L/QuNGB0YzQtNCw0L3QvdGL0YUg0LfQsNC/0LjRgdGM0YLQtdC60YHRgtCwINC30LDQv9C40YHRjNGD0LfQu9C+0LJkb20gJyArXG4gICfQt9Cw0L/RgNC+0YEg0LfQsNGJ0LjRidC10L3QvdC+0LXRgdC+0LXQtNC40L3QtdC90LjQtW9wZW5zc2wg0LfQvdCw0YfQtdC90LjRj9C/0L7Qu9C10LnRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LjQt9Cy0LvQtdGH0LXQvdC40LXRgtC10LrRgdGC0LAg0LjQvNC/0L7RgNGCeHMg0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0LAgJyArXG4gICfQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0L7QtdGB0L7QvtCx0YnQtdC90LjQtSDQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQvtCy0YvQudC/0YDQvtGE0LjQu9GMINC40L3RgtC10YDQvdC10YLQv9GA0L7QutGB0Lgg0LjQvdGC0LXRgNC90LXRgtGB0L7QtdC00LjQvdC10L3QuNC1INC40L3RhNC+0YDQvNCw0YbQuNGP0LTQu9GP0L/RgNC40LvQvtC20LXQvdC40Y94cyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LDRgtGA0LjQsdGD0YLQsHhzINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0LjRgdGC0L7Rh9C90LjQutC00L7RgdGC0YPQv9C90YvRhdC90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C40YLQtdGA0LDRgtC+0YDRg9C30LvQvtCyZG9tINC60LDRgNGC0LjQvdC60LAg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvQtNCw0YLRiyDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9C00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YUg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRgdGC0YDQvtC60Lgg0LrQstCw0LvQuNGE0LjQutCw0YLQvtGA0YvRh9C40YHQu9CwICcgK1xuICAn0LrQvtC80L/QvtC90L7QstGJ0LjQutC80LDQutC10YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvNC/0L7QvdC+0LLRidC40LrQvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LrQvtC90YHRgtGA0YPQutGC0L7RgNC80LDQutC10YLQsNC+0YTQvtGA0LzQu9C10L3QuNGP0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQutC+0L3RgdGC0YDRg9C60YLQvtGA0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC60L7QvdGB0YLRgNGD0LrRgtC+0YDRhNC+0YDQvNCw0YLQvdC+0LnRgdGC0YDQvtC60Lgg0LvQuNC90LjRjyDQvNCw0LrQtdGC0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LzQsNC60LXRgtC+0LHQu9Cw0YHRgtC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvNCw0LrQtdGC0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvNCw0YHQutCweHMg0LzQtdC90LXQtNC20LXRgNC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDQvdCw0LHQvtGA0YHRhdC10Lx4bWwg0L3QsNGB0YLRgNC+0LnQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L3QsNGB0YLRgNC+0LnQutC40YHQtdGA0LjQsNC70LjQt9Cw0YbQuNC4anNvbiAnICtcbiAgJ9C+0LHRgNCw0LHQvtGC0LrQsNC60LDRgNGC0LjQvdC+0Log0L7QsdGA0LDQsdC+0YLQutCw0YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC+0LHRhdC+0LTQtNC10YDQtdCy0LBkb20g0L7QsdGK0Y/QstC70LXQvdC40LXQsNGC0YDQuNCx0YPRgtCweHMg0L7QsdGK0Y/QstC70LXQvdC40LXQvdC+0YLQsNGG0LjQuHhzICcgK1xuICAn0L7QsdGK0Y/QstC70LXQvdC40LXRjdC70LXQvNC10L3RgtCweHMg0L7Qv9C40YHQsNC90LjQtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQvtCx0YvRgtC40Y/QtNC+0YHRgtGD0L/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC+0LHRi9GC0LjRj9C+0YLQutCw0LfQstC00L7RgdGC0YPQv9C10LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC+0L/QuNGB0LDQvdC40LXQvtCx0YDQsNCx0L7RgtC60LjRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQvtC/0LjRgdCw0L3QuNC10L/QtdGA0LXQtNCw0LLQsNC10LzQvtCz0L7RhNCw0LnQu9CwINC+0L/QuNGB0LDQvdC40LXRgtC40L/QvtCyINC+0L/RgNC10LTQtdC70LXQvdC40LXQs9GA0YPQv9C/0YvQsNGC0YDQuNCx0YPRgtC+0LJ4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10LPRgNGD0L/Qv9GL0LzQvtC00LXQu9C4eHMgJyArXG4gICfQvtC/0YDQtdC00LXQu9C10L3QuNC10L7Qs9GA0LDQvdC40YfQtdC90LjRj9C40LTQtdC90YLQuNGH0L3QvtGB0YLQuHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXQv9GA0L7RgdGC0L7Qs9C+0YLQuNC/0LB4cyDQvtC/0YDQtdC00LXQu9C10L3QuNC10YHQvtGB0YLQsNCy0L3QvtCz0L7RgtC40L/QsHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXRgtC40L/QsNC00L7QutGD0LzQtdC90YLQsGRvbSAnICtcbiAgJ9C+0L/RgNC10LTQtdC70LXQvdC40Y94cGF0aHhzINC+0YLQsdC+0YDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9Cw0LrQtdGC0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GF0LTQvtC60YPQvNC10L3RgtC+0LIg0L/QsNGA0LDQvNC10YLRgNCy0YvQsdC+0YDQsCDQv9Cw0YDQsNC80LXRgtGA0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfQv9Cw0YDQsNC80LXRgtGA0YvQt9Cw0L/QuNGB0Lhqc29uINC/0LDRgNCw0LzQtdGC0YDRi9C30LDQv9C40YHQuHhtbCDQv9Cw0YDQsNC80LXRgtGA0YvRh9GC0LXQvdC40Y94bWwg0L/QtdGA0LXQvtC/0YDQtdC00LXQu9C10L3QuNC1eHMg0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQuiDQv9C+0LvQtdCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtC70LXQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQv9C+0YHRgtGA0L7QuNGC0LXQu9GMZG9tINC/0L7RgdGC0YDQvtC40YLQtdC70YzQt9Cw0L/RgNC+0YHQsCDQv9C+0YHRgtGA0L7QuNGC0LXQu9GM0L7RgtGH0LXRgtCwINC/0L7RgdGC0YDQvtC40YLQtdC70YzQvtGC0YfQtdGC0LDQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9C/0L7RgdGC0YDQvtC40YLQtdC70YzRgdGF0LXQvHhtbCDQv9C+0YLQvtC6INC/0L7RgtC+0LrQstC/0LDQvNGP0YLQuCDQv9C+0YfRgtCwINC/0L7Rh9GC0L7QstC+0LXRgdC+0L7QsdGJ0LXQvdC40LUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQtXhzbCDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC10LrQutCw0L3QvtC90LjRh9C10YHQutC+0LzRg3htbCAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNCy0YvQstC+0LTQsNGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YXQstC60L7Qu9C70LXQutGG0LjRjtC30L3QsNGH0LXQvdC40Lkg0L/RgNC+0YbQtdGB0YHQvtGA0LLRi9Cy0L7QtNCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhdCy0YLQsNCx0LvQuNGH0L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9C/0YDQvtGG0LXRgdGB0L7RgNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDQt9GL0LzQtdC90L7QstCw0YLQtdC70YzQv9GA0L7RgdGC0YDQsNC90YHRgtCy0LjQvNC10L1kb20g0YDQsNC80LrQsCDRgNCw0YHQv9C40YHQsNC90LjQtdGA0LXQs9C70LDQvNC10L3RgtC90L7Qs9C+0LfQsNC00LDQvdC40Y8g0YDQsNGB0YjQuNGA0LXQvdC90L7QtdC40LzRj3htbCAnICtcbiAgJ9GA0LXQt9GD0LvRjNGC0LDRgtGH0YLQtdC90LjRj9C00LDQvdC90YvRhSDRgdCy0L7QtNC90LDRj9C00LjQsNCz0YDQsNC80LzQsCDRgdCy0Y/Qt9GM0L/QsNGA0LDQvNC10YLRgNCw0LLRi9Cx0L7RgNCwINGB0LLRj9C30YzQv9C+0YLQuNC/0YMg0YHQstGP0LfRjNC/0L7RgtC40L/Rg9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0LXRgNC40LDQu9C40LfQsNGC0L7RgHhkdG8gJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCwd2luZG93cyDRgdC10YDRgtC40YTQuNC60LDRgtC60LvQuNC10L3RgtCw0YTQsNC50Lsg0YHQtdGA0YLQuNGE0LjQutCw0YLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLRi9GD0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40YXRhtC10L3RgtGA0L7QsndpbmRvd3MgJyArXG4gICfRgdC10YDRgtC40YTQuNC60LDRgtGL0YPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjRhdGG0LXQvdGC0YDQvtCy0YTQsNC50Lsg0YHQttCw0YLQuNC10LTQsNC90L3Ri9GFINGB0LjRgdGC0LXQvNC90LDRj9C40L3RhNC+0YDQvNCw0YbQuNGPINGB0L7QvtCx0YnQtdC90LjQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiDRgdC+0YfQtdGC0LDQvdC40LXQutC70LDQstC40YggJyArXG4gICfRgdGA0LDQstC90LXQvdC40LXQt9C90LDRh9C10L3QuNC5INGB0YLQsNC90LTQsNGA0YLQvdCw0Y/QtNCw0YLQsNC90LDRh9Cw0LvQsCDRgdGC0LDQvdC00LDRgNGC0L3Ri9C50L/QtdGA0LjQvtC0INGB0YXQtdC80LB4bWwg0YHRhdC10LzQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LDQsdC70LjRh9C90YvQudC00L7QutGD0LzQtdC90YIgJyArXG4gICfRgtC10LrRgdGC0L7QstGL0LnQtNC+0LrRg9C80LXQvdGCINGC0LXRgdGC0LjRgNGD0LXQvNC+0LXQv9GA0LjQu9C+0LbQtdC90LjQtSDRgtC40L/QtNCw0L3QvdGL0YV4bWwg0YPQvdC40LrQsNC70YzQvdGL0LnQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNCw0LHRgNC40LrQsHhkdG8g0YTQsNC50Lsg0YTQsNC50LvQvtCy0YvQudC/0L7RgtC+0LogJyArXG4gICfRhNCw0YHQtdGC0LTQu9C40L3Ri3hzINGE0LDRgdC10YLQutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LLQtNGA0L7QsdC90L7QudGH0LDRgdGC0Lh4cyDRhNCw0YHQtdGC0LzQsNC60YHQuNC80LDQu9GM0L3QvtCz0L7QstC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzICcgK1xuICAn0YTQsNGB0LXRgtC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNCw0LrRgdC40LzQsNC70YzQvdC+0LnQtNC70LjQvdGLeHMg0YTQsNGB0LXRgtC80LjQvdC40LzQsNC70YzQvdC+0LPQvtCy0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMgJyArXG4gICfRhNCw0YHQtdGC0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+0LjRgdC60LvRjtGH0LDRjtGJ0LXQs9C+0LfQvdCw0YfQtdC90LjRj3hzINGE0LDRgdC10YLQvNC40L3QuNC80LDQu9GM0L3QvtC50LTQu9C40L3Ri3hzINGE0LDRgdC10YLQvtCx0YDQsNC30YbQsHhzINGE0LDRgdC10YLQvtCx0YnQtdCz0L7QutC+0LvQuNGH0LXRgdGC0LLQsNGA0LDQt9GA0Y/QtNC+0LJ4cyAnICtcbiAgJ9GE0LDRgdC10YLQv9C10YDQtdGH0LjRgdC70LXQvdC40Y94cyDRhNCw0YHQtdGC0L/RgNC+0LHQtdC70YzQvdGL0YXRgdC40LzQstC+0LvQvtCyeHMg0YTQuNC70YzRgtGA0YPQt9C70L7QsmRvbSDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdCw0Y/RgdGC0YDQvtC60LAg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9GE0YDQsNCz0LzQtdC90YJ4cyDRhdC10YjQuNGA0L7QstCw0L3QuNC10LTQsNC90L3Ri9GFINGF0YDQsNC90LjQu9C40YnQtdC30L3QsNGH0LXQvdC40Y8g0YbQstC10YIg0YfRgtC10L3QuNC1ZmFzdGluZm9zZXQg0YfRgtC10L3QuNC1aHRtbCDRh9GC0LXQvdC40LVqc29uINGH0YLQtdC90LjQtXhtbCDRh9GC0LXQvdC40LV6aXDRhNCw0LnQu9CwICcgK1xuICAn0YfRgtC10L3QuNC10LTQsNC90L3Ri9GFINGH0YLQtdC90LjQtdGC0LXQutGB0YLQsCDRh9GC0LXQvdC40LXRg9C30LvQvtCyZG9tINGI0YDQuNGE0YIg0Y3Qu9C10LzQtdC90YLRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICc7XG5cbiAgLy8gdjgg0YPQvdC40LLQtdGA0YHQsNC70YzQvdGL0LUg0LrQvtC70LvQtdC60YbQuNC4INC30L3QsNGH0LXQvdC40LkgPT0+IHR5cGVcbiAgdmFyIHY4X3VuaXZlcnNhbF9jb2xsZWN0aW9uID1cbiAgJ2NvbXNhZmVhcnJheSDQtNC10YDQtdCy0L7Qt9C90LDRh9C10L3QuNC5INC80LDRgdGB0LjQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YHQv9C40YHQvtC60LfQvdCw0YfQtdC90LjQuSDRgdGC0YDRg9C60YLRg9GA0LAg0YLQsNCx0LvQuNGG0LDQt9C90LDRh9C10L3QuNC5INGE0LjQutGB0LjRgNC+0LLQsNC90L3QsNGP0YHRgtGA0YPQutGC0YPRgNCwICcgK1xuICAn0YTQuNC60YHQuNGA0L7QstCw0L3QvdC+0LXRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LnQvNCw0YHRgdC40LIgJztcblxuICAvLyB0eXBlIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0YLQuNC/0YtcbiAgdmFyIFRZUEUgPVxuICB2OF9zaGFyZWRfb2JqZWN0ICtcbiAgdjhfdW5pdmVyc2FsX2NvbGxlY3Rpb247XG5cbiAgLy8gbGl0ZXJhbCA6INC/0YDQuNC80LjRgtC40LLQvdGL0LUg0YLQuNC/0YtcbiAgdmFyIExJVEVSQUwgPSAnbnVsbCDQuNGB0YLQuNC90LAg0LvQvtC20Ywg0L3QtdC+0L/RgNC10LTQtdC70LXQvdC+JztcbiAgXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSk7XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcInxcXFxcfCcsIGVuZDogJ1wifCQnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuXG4gIC8vIG51bWJlciA6INC00LDRgtGLXG4gIHZhciBEQVRFID0ge1xuICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiwgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGR7NH0oW1xcXFwuXFxcXFxcXFwvOi1dP1xcXFxkezJ9KXswLDV9J1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgXG4gIC8vIGNvbW1lbnQgOiDQutC+0LzQvNC10L3RgtCw0YDQuNC4XG4gIHZhciBDT01NRU5UUyA9IGhsanMuaW5oZXJpdChobGpzLkNfTElORV9DT01NRU5UX01PREUpO1xuICBcbiAgLy8gbWV0YSA6INC40L3RgdGC0YDRg9C60YbQuNC4INC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0Ysg0LrQvtC80L/QuNC70Y/RhtC40LhcbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBiZWdpbjogJyN8JicsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6IEtFWVdPUkQgKyBNRVRBS0VZV09SRH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlRTXG4gICAgXVxuICB9O1xuICBcbiAgLy8gc3ltYm9sIDog0LzQtdGC0LrQsCBnb3RvXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ34nLCBlbmQ6ICc7fDonLCBleGNsdWRlRW5kOiB0cnVlXG4gIH07ICBcbiAgXG4gIC8vIGZ1bmN0aW9uIDog0L7QsdGK0Y/QstC70LXQvdC40LUg0L/RgNC+0YbQtdC00YPRgCDQuCDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ9C/0YDQvtGG0LXQtNGD0YDQsHzRhNGD0L3QutGG0LjRjycsIGVuZDogJ1xcXFwpJywga2V5d29yZHM6ICfQv9GA0L7RhtC10LTRg9GA0LAg0YTRg9C90LrRhtC40Y8nfSxcbiAgICAgIHtiZWdpbjogJ9C60L7QvdC10YbQv9GA0L7RhtC10LTRg9GA0Yt80LrQvtC90LXRhtGE0YPQvdC60YbQuNC4Jywga2V5d29yZHM6ICfQutC+0L3QtdGG0L/RgNC+0YbQtdC00YPRgNGLINC60L7QvdC10YbRhNGD0L3QutGG0LjQuCd9XG4gICAgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50IDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIGJlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFLCBlbmQ6ICcsJywgZXhjbHVkZUVuZDogdHJ1ZSwgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBrZXl3b3JkOiAn0LfQvdCw0YcnLFxuICAgICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgREFURVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQ09NTUVOVFNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogVU5ERVJTQ09SRV9JREVOVF9SRX0pXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JELFxuICAgICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgICBjbGFzczogQ0xBU1MsXG4gICAgICB0eXBlOiBUWVBFLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE1FVEEsXG4gICAgICBGVU5DVElPTixcbiAgICAgIENPTU1FTlRTLFxuICAgICAgU1lNQk9MLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBEQVRFXG4gICAgXSAgXG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb3cgPSByZXF1aXJlKCcuL2xpYi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBsb3dcblxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJzFjJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvMWMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWJuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY2Nlc3Nsb2cnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY2Nlc3Nsb2cnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhY3Rpb25zY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FkYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FkYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhbmdlbHNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcGFjaGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcGFjaGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXBwbGVzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJjYWRlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJjYWRlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3BwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXJkdWlubycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcm1hc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94bWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhc2NpaWRvYycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzY2lpZG9jJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXNwZWN0aicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FzcGVjdGonKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnYXV0b2hvdGtleScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXknKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F1dG9pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9pdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F2cmFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F3aycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F3aycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2F4YXB0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F4YXB0YScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2gnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYmFzaWMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9iYXNpYycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2JuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdicmFpbmZ1Y2snLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9icmFpbmZ1Y2snKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NhbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjYXBucHJvdG8nLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYXBucHJvdG8nKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NleWxvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NsZWFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xlYW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjbG9qdXJlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2xvanVyZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjbG9qdXJlLXJlcGwnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NtYWtlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY21ha2UnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnY29mZmVlc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29mZmVlc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3EnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3EnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjb3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcm1zaCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NybXNoJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3J5c3RhbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NyeXN0YWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2QnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXJrZG93bicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hcmtkb3duJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGFydCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RhcnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkZWxwaGknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kZWxwaGknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkaWZmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGlmZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RqYW5nbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RucycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RucycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdkb2NrZXJmaWxlJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZScpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG9zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHNjb25maWcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kc2NvbmZpZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R0cycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R0cycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2R1c3QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kdXN0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZWJuZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VibmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbGl4aXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlbG0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbG0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydWJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVieScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VyYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VyYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdlcmxhbmctcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlcmxhbmcnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lcmxhbmcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdleGNlbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2V4Y2VsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZmxpeCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZsaXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdmb3J0cmFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZm9ydHJhbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZzaGFycCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dhbXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2F1c3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYXVzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2djb2RlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2NvZGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnaGVya2luJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2hlcmtpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dsc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2dvbG8nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nb2xvJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3JhZGxlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3JhZGxlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ3Jvb3Z5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnaGFuZGxlYmFycycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbmRsZWJhcnMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hhc2tlbGwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGF4ZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oc3AnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdodG1sYmFycycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaHR0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoeScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaW5mb3JtNycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luZm9ybTcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpbmknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpcnBmOTAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pcnBmOTAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpc2JsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXNibCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2phdmEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2phdmFzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnamJvc3MtY2xpJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamJvc3MtY2xpJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdqc29uJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanNvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2p1bGlhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnanVsaWEtcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2tvdGxpbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2tvdGxpbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xhc3NvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGFzc28nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZGlmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGRpZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xlYWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZWFmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGVzcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xlc3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsaXNwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGlzcCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdsaXZlY29kZXNlcnZlcicsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVjb2Rlc2VydmVyJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnbGl2ZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpdmVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xsdm0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbHVhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbHVhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWFrZWZpbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYWtlZmlsZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtYXRoZW1hdGljYScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGhlbWF0aWNhJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXRsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXRsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYXhpbWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXhpbWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtZXJjdXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21pcHNhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWl6YXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXphcicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BlcmwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wZXJsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ21vam9saWNpb3VzJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21vbmtleScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vbmtleScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdtb29uc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9vbnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbjFxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL24xcWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduZ2lueCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25naW54JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbmltcm9kJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbmltcm9kJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbml4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbnNpcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnb2JqZWN0aXZlYycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29iamVjdGl2ZWMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29jYW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2NhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdvcGVuc2NhZCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29wZW5zY2FkJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnb3h5Z2VuZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL294eWdlbmUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwYXJzZXIzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGFyc2VyMycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwZ3NxbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bnc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGhwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3BsYWludGV4dCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncG9ueScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BvbnknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncG93ZXJzaGVsbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwcm9jZXNzaW5nJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHJvZmlsZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2ZpbGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9sb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9sb2cnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHJvcGVydGllcycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3BlcnRpZXMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Byb3RvYnVmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvdG9idWYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwdXBwZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXBwZXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncHVyZWJhc2ljJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHVyZWJhc2ljJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdweXRob24nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9weXRob24nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3FtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3FtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3InLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncmVhc29ubWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yZWFzb25tbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JpYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JpYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JvYm9jb25mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm9ib2NvbmYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyb3V0ZXJvcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncnNsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnNsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3J1bGVzbGFuZ3VhZ2UnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdydXN0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcnVzdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NhcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NhcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NjYWxhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NhbGEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2hlbWUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2hlbWUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY2lsYWInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWInKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzY3NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2NzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NoZWxsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2hlbGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzbWFsaScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxpJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3NtYWxsdGFsaycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NtYWxsdGFsaycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc21sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FmJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3FsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RhbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YW4nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGF0YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0YXRhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3RlcDIxJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RlcDIxJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3R5bHVzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc3VidW5pdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzd2lmdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N3aWZ0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3RhZ2dlcnNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhZ2dlcnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneWFtbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0YXAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90YXAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0Y2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90Y2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0ZXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0aHJpZnQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90aHJpZnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0cCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndHdpZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndHlwZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmJuZXQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92Ym5ldCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zic2NyaXB0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJzY3JpcHQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndmJzY3JpcHQtaHRtbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Zlcmlsb2cnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92ZXJpbG9nJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmhkbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZoZGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aW0nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aW0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4ODZhc20nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4bCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3hsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgneHF1ZXJ5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnemVwaGlyJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvemVwaGlyJykpXG4iLCJpbXBvcnQgbG93IGZyb20gJ2xvd2xpZ2h0J1xuaW1wb3J0IHZpc2l0IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF0dGFjaGVyKHtpbmNsdWRlLCBleGNsdWRlfSA9IHt9KSB7XG4gIHJldHVybiBhc3QgPT4gdmlzaXQoYXN0LCAnY29kZScsIHZpc2l0b3IpXG5cbiAgZnVuY3Rpb24gdmlzaXRvcihub2RlKSB7XG4gICAgbGV0IHtsYW5nLCBkYXRhfSA9IG5vZGVcblxuICAgIGlmIChcbiAgICAgICFsYW5nIHx8XG4gICAgICAoaW5jbHVkZSAmJiBpbmNsdWRlLmluZGV4T2YobGFuZykgPT09IC0xKSB8fFxuICAgICAgKGV4Y2x1ZGUgJiYgZXhjbHVkZS5pbmRleE9mKGxhbmcpICE9PSAtMSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZGF0YSkge1xuICAgICAgZGF0YSA9IHt9XG4gICAgICBub2RlLmRhdGEgPSBkYXRhXG4gICAgfVxuXG4gICAgaWYgKCFkYXRhLmhQcm9wZXJ0aWVzKSB7XG4gICAgICBkYXRhLmhQcm9wZXJ0aWVzID0ge31cbiAgICB9XG5cbiAgICBkYXRhLmhDaGlsZHJlbiA9IGxvdy5oaWdobGlnaHQobGFuZywgbm9kZS52YWx1ZSkudmFsdWVcbiAgICBkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSA9IFtcbiAgICAgICdobGpzJyxcbiAgICAgIC4uLihkYXRhLmhQcm9wZXJ0aWVzLmNsYXNzTmFtZSB8fCBbXSksXG4gICAgICAnbGFuZ3VhZ2UtJyArIGxhbmdcbiAgICBdXG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciByZWdleGVzID0ge1xuICAgICAgICBydWxlRGVjbGFyYXRpb246IFwiXlthLXpBLVpdW2EtekEtWjAtOS1dKlwiLFxuICAgICAgICB1bmV4cGVjdGVkQ2hhcnM6IFwiWyFAIyReJicsPyt+YHw6XVwiXG4gICAgfTtcblxuICAgIHZhciBrZXl3b3JkcyA9IFtcbiAgICAgICAgXCJBTFBIQVwiLFxuICAgICAgICBcIkJJVFwiLFxuICAgICAgICBcIkNIQVJcIixcbiAgICAgICAgXCJDUlwiLFxuICAgICAgICBcIkNSTEZcIixcbiAgICAgICAgXCJDVExcIixcbiAgICAgICAgXCJESUdJVFwiLFxuICAgICAgICBcIkRRVU9URVwiLFxuICAgICAgICBcIkhFWERJR1wiLFxuICAgICAgICBcIkhUQUJcIixcbiAgICAgICAgXCJMRlwiLFxuICAgICAgICBcIkxXU1BcIixcbiAgICAgICAgXCJPQ1RFVFwiLFxuICAgICAgICBcIlNQXCIsXG4gICAgICAgIFwiVkNIQVJcIixcbiAgICAgICAgXCJXU1BcIlxuICAgIF07XG5cbiAgICB2YXIgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoXCI7XCIsIFwiJFwiKTtcblxuICAgIHZhciB0ZXJtaW5hbEJpbmFyeU1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lYlswLTFdKygtWzAtMV0rfChcXC5bMC0xXSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsRGVjaW1hbE1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lZFswLTldKygtWzAtOV0rfChcXC5bMC05XSspKyl7MCwxfS9cbiAgICB9O1xuXG4gICAgdmFyIHRlcm1pbmFsSGV4YWRlY2ltYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJXhbMC05QS1GXSsoLVswLTlBLUZdK3woXFwuWzAtOUEtRl0rKSspezAsMX0vLFxuICAgIH07XG5cbiAgICB2YXIgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogLyVbc2ldL1xuICAgIH07XG5cbiAgICB2YXIgcnVsZURlY2xhcmF0aW9uTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICBiZWdpbjogcmVnZXhlcy5ydWxlRGVjbGFyYXRpb24gKyAnKD89XFxcXHMqPSknLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWxsZWdhbDogcmVnZXhlcy51bmV4cGVjdGVkQ2hhcnMsXG4gICAgICBrZXl3b3Jkczoga2V5d29yZHMuam9pbihcIiBcIiksXG4gICAgICBjb250YWluczogW1xuICAgICAgICAgIHJ1bGVEZWNsYXJhdGlvbk1vZGUsXG4gICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgdGVybWluYWxCaW5hcnlNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsRGVjaW1hbE1vZGUsXG4gICAgICAgICAgdGVybWluYWxIZXhhZGVjaW1hbE1vZGUsXG4gICAgICAgICAgY2FzZVNlbnNpdGl2aXR5SW5kaWNhdG9yTW9kZSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9NZXRob2RzXG4gIHZhciBIVFRQX1ZFUkJTID0gW1xuICAgIFwiR0VUXCIsIFwiUE9TVFwiLCBcIkhFQURcIiwgXCJQVVRcIiwgXCJERUxFVEVcIiwgXCJDT05ORUNUXCIsIFwiT1BUSU9OU1wiLCBcIlBBVENIXCIsIFwiVFJBQ0VcIlxuICBdXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM31cXFxcLlxcXFxkezEsM30oOlxcXFxkezEsNX0pP1xcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOjVcbiAgICAgIH0sXG4gICAgICAvLyBPdGhlciBudW1iZXJzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCtcXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFJlcXVlc3RzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCIoJyArIEhUVFBfVkVSQlMuam9pbihcInxcIikgKyAnKScsIGVuZDogJ1wiJyxcbiAgICAgICAga2V5d29yZHM6IEhUVFBfVkVSQlMuam9pbihcIiBcIiksXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46ICdIVFRQL1sxMl1cXFxcLlxcXFxkJyxcbiAgICAgICAgICByZWxldmFuY2U6NVxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIC8vIERhdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIC8vIGRhdGVzIG11c3QgaGF2ZSBhIGNlcnRhaW4gbGVuZ3RoLCB0aGlzIHByZXZlbnRzIG1hdGNoaW5nXG4gICAgICAgIC8vIHNpbXBsZSBhcnJheSBhY2Nlc3NlcyBhWzEyM10gYW5kIFtdIGFuZCBvdGhlciBjb21tb24gcGF0dGVybnNcbiAgICAgICAgLy8gZm91bmQgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIGJlZ2luOiAvXFxbXFxkW15cXF1cXG5dezgsfVxcXS8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBVc2VyIGFnZW50IC8gcmVsZXZhbmNlIGJvb3N0XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJNb3ppbGxhL1xcXFxkXFxcXC5cXFxcZCBcXFxcXFwoJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDNcbiAgICAgIH0sXG4gICAgICAvLyBTdHJpbmdzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aXyRdW2EtekEtWjAtOV8kXSonO1xuICB2YXIgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRSA9ICcoWypdfFthLXpBLVpfJF1bYS16QS1aMC05XyRdKiknO1xuXG4gIHZhciBBUzNfUkVTVF9BUkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdyZXN0X2FyZycsXG4gICAgYmVnaW46ICdbLl17M30nLCBlbmQ6IElERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYXMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2FzIGJyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29uc3QgY29udGludWUgZGVmYXVsdCBkZWxldGUgZG8gZHluYW1pYyBlYWNoICcgK1xuICAgICAgICAnZWxzZSBleHRlbmRzIGZpbmFsIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdldCBpZiBpbXBsZW1lbnRzIGltcG9ydCBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbmFtZXNwYWNlIG5hdGl2ZSBuZXcgb3ZlcnJpZGUgcGFja2FnZSBwcml2YXRlICcgK1xuICAgICAgICAncHJvdGVjdGVkIHB1YmxpYyByZXR1cm4gc2V0IHN0YXRpYyBzdXBlciBzd2l0Y2ggdGhpcyB0aHJvdyB0cnkgdHlwZW9mIHVzZSB2YXIgdm9pZCAnICtcbiAgICAgICAgJ3doaWxlIHdpdGgnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BhY2thZ2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0IGluY2x1ZGUnLCBlbmQ6ICc7JyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2ltcG9ydCBpbmNsdWRlJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnW3s7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEFTM19SRVNUX0FSR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzpcXFxccyonICsgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuTUVUSE9EX0dVQVJEXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBXZSB0cnkgdG8gc3VwcG9ydCBmdWxsIEFkYTIwMTJcbi8vXG4vLyBXZSBoaWdobGlnaHQgYWxsIGFwcGVhcmFuY2VzIG9mIHR5cGVzLCBrZXl3b3JkcywgbGl0ZXJhbHMgKHN0cmluZywgY2hhciwgbnVtYmVyLCBib29sKVxuLy8gYW5kIHRpdGxlcyAodXNlciBkZWZpbmVkIGZ1bmN0aW9uL3Byb2NlZHVyZS9wYWNrYWdlKVxuLy8gQ1NTIGNsYXNzZXMgYXJlIHNldCBhY2NvcmRpbmdseVxuLy9cbi8vIExhbmd1YWdlcyBjYXVzaW5nIHByb2JsZW1zIGZvciBsYW5ndWFnZSBkZXRlY3Rpb246XG4vLyB4bWwgKGJyb2tlbiBieSBGb28gOiBCYXIgdHlwZSksIGVsbSAoYnJva2VuIGJ5IEZvbyA6IEJhciB0eXBlKSwgdmJzY3JpcHQtaHRtbCAoYnJva2VuIGJ5IGJvZHkga2V5d29yZClcbi8vIHNxbCAoYWRhIGRlZmF1bHQudHh0IGhhcyBhIGxvdCBvZiBzcWwga2V5d29yZHMpXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIEFkYSBudW1lcmljIGxpdGVyYWxzLlxuICAgIC8vIHN0b2xlbiBmb3JtIHRoZSBWSERMIGhpZ2hsaWdodGVyXG5cbiAgICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gICAgdmFyIElOVEVHRVJfUkUgPSAnXFxcXGQoX3xcXFxcZCkqJztcbiAgICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gICAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICAgIHZhciBCQVNFRF9MSVRFUkFMX1JFID0gSU5URUdFUl9SRSArICcjJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKFxcXFwuJyArIEJBU0VEX0lOVEVHRVJfUkUgKyAnKT8nICsgJyMnICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuXG4gICAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICAgIC8vIElkZW50aWZpZXIgcmVnZXhcbiAgICB2YXIgSURfUkVHRVggPSAnW0EtWmEtel0oXz9bQS1aYS16MC05Ll0pKic7XG5cbiAgICAvLyBiYWQgY2hhcnMsIG9ubHkgYWxsb3dlZCBpbiBsaXRlcmFsc1xuICAgIHZhciBCQURfQ0hBUlMgPSAnW117fSUjXFwnXFxcIidcblxuICAgIC8vIEFkYSBkb2Vzbid0IGhhdmUgYmxvY2sgY29tbWVudHMsIG9ubHkgbGluZSBjb21tZW50c1xuICAgIHZhciBDT01NRU5UUyA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuXG4gICAgLy8gdmFyaWFibGUgZGVjbGFyYXRpb25zIG9mIHRoZSBmb3JtXG4gICAgLy8gRm9vIDogQmFyIDo9IEJhejtcbiAgICAvLyB3aGVyZSBvbmx5IEJhciB3aWxsIGJlIGhpZ2hsaWdodGVkXG4gICAgdmFyIFZBUl9ERUNMUyA9IHtcbiAgICAgICAgLy8gVE9ETzogVGhlc2Ugc3BhY2VzIGFyZSBub3QgcmVxdWlyZWQgYnkgdGhlIEFkYSBzeW50YXhcbiAgICAgICAgLy8gaG93ZXZlciwgSSBoYXZlIHlldCB0byBzZWUgaGFuZHdyaXR0ZW4gQWRhIGNvZGUgd2hlcmVcbiAgICAgICAgLy8gc29tZW9uZSBkb2VzIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCA6XG4gICAgICAgIGJlZ2luOiAnXFxcXHMrOlxcXFxzKycsIGVuZDogJ1xcXFxzKig6PXw7fFxcXFwpfD0+fCQpJyxcbiAgICAgICAgLy8gZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIC8vIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCB0byBhdm9pZCBoaWdobGlnaHRpbmdcbiAgICAgICAgICAgICAgICAvLyBuYW1lZCBsb29wcyBhbmQgZGVjbGFyZSBibG9ja3NcbiAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnbG9vcCBmb3IgZGVjbGFyZSBvdGhlcnMnLFxuICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IGhpZ2hsaWdodCBhbGwgbW9kaWZpZXJzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vdCBudWxsIGNvbnN0YW50IGFjY2VzcyBmdW5jdGlvbiBwcm9jZWR1cmUgaW4gb3V0IGFsaWFzZWQgZXhjZXB0aW9uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogSURfUkVHRVgsXG4gICAgICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAgICAgJ2Fib3J0IGVsc2UgbmV3IHJldHVybiBhYnMgZWxzaWYgbm90IHJldmVyc2UgYWJzdHJhY3QgZW5kICcgK1xuICAgICAgICAgICAgICAgICdhY2NlcHQgZW50cnkgc2VsZWN0IGFjY2VzcyBleGNlcHRpb24gb2Ygc2VwYXJhdGUgYWxpYXNlZCBleGl0IG9yIHNvbWUgJyArXG4gICAgICAgICAgICAgICAgJ2FsbCBvdGhlcnMgc3VidHlwZSBhbmQgZm9yIG91dCBzeW5jaHJvbml6ZWQgYXJyYXkgZnVuY3Rpb24gb3ZlcnJpZGluZyAnICtcbiAgICAgICAgICAgICAgICAnYXQgdGFnZ2VkIGdlbmVyaWMgcGFja2FnZSB0YXNrIGJlZ2luIGdvdG8gcHJhZ21hIHRlcm1pbmF0ZSAnICtcbiAgICAgICAgICAgICAgICAnYm9keSBwcml2YXRlIHRoZW4gaWYgcHJvY2VkdXJlIHR5cGUgY2FzZSBpbiBwcm90ZWN0ZWQgY29uc3RhbnQgaW50ZXJmYWNlICcgK1xuICAgICAgICAgICAgICAgICdpcyByYWlzZSB1c2UgZGVjbGFyZSByYW5nZSBkZWxheSBsaW1pdGVkIHJlY29yZCB3aGVuIGRlbHRhIGxvb3AgcmVtIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgICdkaWdpdHMgcmVuYW1lcyB3aXRoIGRvIG1vZCByZXF1ZXVlIHhvcicsXG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdUcnVlIEZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgLy8gc3RyaW5ncyBcImZvb2JhclwiXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi8sIHJlbGV2YW5jZTogMH1dXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAnJ1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBsaXRlcmFscyBhbHdheXMgY29udGFpbiBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLicvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG51bWJlciBsaXRlcmFsc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJ1wiICsgSURfUkVHRVgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHBhY2thZ2UgZGVmaW5pdGlvbiwgbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT8oXFxcXGJwcml2YXRlXFxcXHMrKT9cXFxcYnBhY2thZ2VcXFxccysoXFxcXGJib2R5XFxcXHMrKT8nLCBlbmQ6ICcoaXN8JCknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAncGFja2FnZSBib2R5JyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24vcHJvY2VkdXJlIGRlY2xhcmF0aW9uL2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAvLyBtYXliZSBpbnNpZGUgZ2VuZXJpY1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxiKHdpdGh8b3ZlcnJpZGluZylcXFxccyspP1xcXFxiKGZ1bmN0aW9ufHByb2NlZHVyZSlcXFxccysnLCBlbmQ6ICcoXFxcXGJpc3xcXFxcYndpdGh8XFxcXGJyZW5hbWVzfFxcXFwpXFxcXHMqOyknLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAnb3ZlcnJpZGluZyBmdW5jdGlvbiBwcm9jZWR1cmUgd2l0aCBpcyByZW5hbWVzIHJldHVybicsXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZS1tYXRjaCB0aGUgJ2Z1bmN0aW9uJyBrZXl3b3JkLCBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRpdGxlIG1vZGUgYmVsb3cgbWF0Y2hlcyBvbmx5IGV4YWN0bHkgb25jZVxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgQ09NTUVOVFMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2YgdGhlIGZ1bmN0aW9uL3Byb2NlZHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGJ3aXRoXFxcXHMrKT9cXFxcYihmdW5jdGlvbnxwcm9jZWR1cmUpXFxcXHMrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJyhcXFxcKHxcXFxccyt8JCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWw6IEJBRF9DSEFSU1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAnc2VsZidcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gcGFyYW1ldGVyIHR5cGVzXG4gICAgICAgICAgICAgICAgICAgIFZBUl9ERUNMUyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYnJldHVyblxcXFxzKycsIGVuZDogJyhcXFxccyt8O3wkKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgd2l0aCBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gbmV3IHR5cGUgZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgLy8gbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKHN1Yik/dHlwZVxcXFxzKycsIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBzZWUgY29tbWVudCBhYm92ZSB0aGUgZGVmaW5pdGlvblxuICAgICAgICAgICAgVkFSX0RFQ0xTLFxuXG4gICAgICAgICAgICAvLyBubyBtYXJrdXBcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZSBib29zdGVycyBmb3Igc21hbGwgc25pcHBldHNcbiAgICAgICAgICAgIC8vIHtiZWdpbjogJ1xcXFxzKj0+XFxcXHMqJ30sXG4gICAgICAgICAgICAvLyB7YmVnaW46ICdcXFxccyo6PVxcXFxzKid9LFxuICAgICAgICAgICAgLy8ge2JlZ2luOiAnXFxcXHMrOj1cXFxccysnfSxcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgYnVpbHRJblR5cGVNb2RlID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKHZvaWR8Ym9vbHxpbnR8aW50OHxpbnQxNnxpbnQzMnxpbnQ2NHx1aW50fHVpbnQ4fHVpbnQxNnx1aW50MzJ8dWludDY0fHN0cmluZ3xyZWZ8YXJyYXl8ZG91YmxlfGZsb2F0fGF1dG98ZGljdGlvbmFyeSknXG4gIH07XG5cbiAgdmFyIG9iamVjdEhhbmRsZU1vZGUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1thLXpBLVowLTlfXStAJ1xuICB9O1xuXG4gIHZhciBnZW5lcmljTW9kZSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICBjb250YWluczogWyBidWlsdEluVHlwZU1vZGUsIG9iamVjdEhhbmRsZU1vZGUgXVxuICB9O1xuXG4gIGJ1aWx0SW5UeXBlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcbiAgb2JqZWN0SGFuZGxlTW9kZS5jb250YWlucyA9IFsgZ2VuZXJpY01vZGUgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsgJ2FzYycgXSxcblxuICAgIGtleXdvcmRzOlxuICAgICAgJ2ZvciBpbnwwIGJyZWFrIGNvbnRpbnVlIHdoaWxlIGRvfDAgcmV0dXJuIGlmIGVsc2UgY2FzZSBzd2l0Y2ggbmFtZXNwYWNlIGlzIGNhc3QgJyArXG4gICAgICAnb3IgYW5kIHhvciBub3QgZ2V0fDAgaW4gaW5vdXR8MTAgb3V0IG92ZXJyaWRlIHNldHwwIHByaXZhdGUgcHVibGljIGNvbnN0IGRlZmF1bHR8MCAnICtcbiAgICAgICdmaW5hbCBzaGFyZWQgZXh0ZXJuYWwgbWl4aW58MTAgZW51bSB0eXBlZGVmIGZ1bmNkZWYgdGhpcyBzdXBlciBpbXBvcnQgZnJvbSBpbnRlcmZhY2UgJyArXG4gICAgICAnYWJzdHJhY3R8MCB0cnkgY2F0Y2ggcHJvdGVjdGVkIGV4cGxpY2l0IHByb3BlcnR5JyxcblxuICAgIC8vIGF2b2lkIGNsb3NlIGRldGVjdGlvbiB3aXRoIEMjIGFuZCBKU1xuICAgIGlsbGVnYWw6ICcoXnVzaW5nXFxcXHMrW0EtWmEtejAtOV9cXFxcLl0rOyR8XFxcXGJmdW5jdGlvblxccypbXlxcXFwoXSknLFxuXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gJ3N0cmluZ3MnXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAgeyAvLyBcInN0cmluZ3NcIlxuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICAvLyBcIlwiXCJoZXJlZG9jIHN0cmluZ3NcIlwiXCJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsIC8vIHNpbmdsZS1saW5lIGNvbW1lbnRzXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCAvLyBjb21tZW50IGJsb2Nrc1xuXG4gICAgICB7IC8vIGludGVyZmFjZSBvciBuYW1lc3BhY2UgZGVjbGFyYXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JyxcbiAgICAgICAgaWxsZWdhbDogJ1s7LlxcXFwtXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBpbnRlcmZhY2Ugb3IgbmFtZXNwYWNlIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7IC8vIGNsYXNzIGRlY2xhcmF0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ3snLFxuICAgICAgICBpbGxlZ2FsOiAnWzsuXFxcXC1dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIGNsYXNzIG5hbWVcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1thLXpBLVowLTlfXSsnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnWzosXVxcXFxzKicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdbYS16QS1aMC05X10rJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgYnVpbHRJblR5cGVNb2RlLCAvLyBidWlsdC1pbiB0eXBlc1xuICAgICAgb2JqZWN0SGFuZGxlTW9kZSwgLy8gb2JqZWN0IGhhbmRsZXNcblxuICAgICAgeyAvLyBsaXRlcmFsc1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihudWxsfHRydWV8ZmFsc2UpJ1xuICAgICAgfSxcblxuICAgICAgeyAvLyBudW1iZXJzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfChcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKik/Zj98XFxcXC5cXFxcZCtmPykoW2VFXVstK10/XFxcXGQrZj8pPyknXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTUJFUiA9IHtjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1tcXFxcJCVdXFxcXGQrJ307XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhcGFjaGVjb25mJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46ICc8Lz8nLCBlbmQ6ICc+J30sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvXFx3Ky8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgLy8ga2V5d29yZHMgYXJlbuKAmXQgbmVlZGVkIGZvciBoaWdobGlnaHRpbmcgcGVyIHNlLCB0aGV5IG9ubHkgYm9vc3QgcmVsZXZhbmNlXG4gICAgICAgIC8vIGZvciBhIHZlcnkgZ2VuZXJhbGx5IGRlZmluZWQgbW9kZSAoc3RhcnRzIHdpdGggYSB3b3JkLCBlbmRzIHdpdGggbGluZS1lbmRcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBub21hcmt1cDpcbiAgICAgICAgICAgICdvcmRlciBkZW55IGFsbG93IHNldGVudiByZXdyaXRlcnVsZSByZXdyaXRlZW5naW5lIHJld3JpdGVjb25kIGRvY3VtZW50cm9vdCAnICtcbiAgICAgICAgICAgICdzZXRoYW5kbGVyIGVycm9yZG9jdW1lbnQgbG9hZG1vZHVsZSBvcHRpb25zIGhlYWRlciBsaXN0ZW4gc2VydmVycm9vdCAnICtcbiAgICAgICAgICAgICdzZXJ2ZXJuYW1lJ1xuICAgICAgICB9LFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICdvbiBvZmYgYWxsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHNcXFxcWycsIGVuZDogJ1xcXFxdJCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdbXFxcXCQlXVxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgICAgICBjb250YWluczogWydzZWxmJywgTlVNQkVSXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE5VTUJFUixcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXFMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiAnJ30pO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogWydzZWxmJywgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkddXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVfMSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgQ09NTUVOVF9NT0RFXzIgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJywgQ09NTUVOVF9NT0RFXzFdIC8vYWxsb3cgbmVzdGluZ1xuICAgIH1cbiAgKTtcbiAgdmFyIENPTU1FTlRTID0gW1xuICAgIENPTU1FTlRfTU9ERV8xLFxuICAgIENPTU1FTlRfTU9ERV8yLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnb3Nhc2NyaXB0J10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhYm91dCBhYm92ZSBhZnRlciBhZ2FpbnN0IGFuZCBhcm91bmQgYXMgYXQgYmFjayBiZWZvcmUgYmVnaW5uaW5nICcgK1xuICAgICAgICAnYmVoaW5kIGJlbG93IGJlbmVhdGggYmVzaWRlIGJldHdlZW4gYnV0IGJ5IGNvbnNpZGVyaW5nICcgK1xuICAgICAgICAnY29udGFpbiBjb250YWlucyBjb250aW51ZSBjb3B5IGRpdiBkb2VzIGVpZ2h0aCBlbHNlIGVuZCBlcXVhbCAnICtcbiAgICAgICAgJ2VxdWFscyBlcnJvciBldmVyeSBleGl0IGZpZnRoIGZpcnN0IGZvciBmb3VydGggZnJvbSBmcm9udCAnICtcbiAgICAgICAgJ2dldCBnaXZlbiBnbG9iYWwgaWYgaWdub3JpbmcgaW4gaW50byBpcyBpdCBpdHMgbGFzdCBsb2NhbCBtZSAnICtcbiAgICAgICAgJ21pZGRsZSBtb2QgbXkgbmludGggbm90IG9mIG9uIG9udG8gb3Igb3ZlciBwcm9wIHByb3BlcnR5IHB1dCByZWYgJyArXG4gICAgICAgICdyZWZlcmVuY2UgcmVwZWF0IHJldHVybmluZyBzY3JpcHQgc2Vjb25kIHNldCBzZXZlbnRoIHNpbmNlICcgK1xuICAgICAgICAnc2l4dGggc29tZSB0ZWxsIHRlbnRoIHRoYXQgdGhlfDAgdGhlbiB0aGlyZCB0aHJvdWdoIHRocnUgJyArXG4gICAgICAgICd0aW1lb3V0IHRpbWVzIHRvIHRyYW5zYWN0aW9uIHRyeSB1bnRpbCB3aGVyZSB3aGlsZSB3aG9zZSB3aXRoICcgK1xuICAgICAgICAnd2l0aG91dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnQXBwbGVTY3JpcHQgZmFsc2UgbGluZWZlZWQgcmV0dXJuIHBpIHF1b3RlIHJlc3VsdCBzcGFjZSB0YWIgdHJ1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FsaWFzIGFwcGxpY2F0aW9uIGJvb2xlYW4gY2xhc3MgY29uc3RhbnQgZGF0ZSBmaWxlIGludGVnZXIgbGlzdCAnICtcbiAgICAgICAgJ251bWJlciByZWFsIHJlY29yZCBzdHJpbmcgdGV4dCAnICtcbiAgICAgICAgJ2FjdGl2YXRlIGJlZXAgY291bnQgZGVsYXkgbGF1bmNoIGxvZyBvZmZzZXQgcmVhZCByb3VuZCAnICtcbiAgICAgICAgJ3J1biBzYXkgc3VtbWFyaXplIHdyaXRlICcgK1xuICAgICAgICAnY2hhcmFjdGVyIGNoYXJhY3RlcnMgY29udGVudHMgZGF5IGZyb250bW9zdCBpZCBpdGVtIGxlbmd0aCAnICtcbiAgICAgICAgJ21vbnRoIG5hbWUgcGFyYWdyYXBoIHBhcmFncmFwaHMgcmVzdCByZXZlcnNlIHJ1bm5pbmcgdGltZSB2ZXJzaW9uICcgK1xuICAgICAgICAnd2Vla2RheSB3b3JkIHdvcmRzIHllYXInXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYihjbGlwYm9hcmQgaW5mb3x0aGUgY2xpcGJvYXJkfGluZm8gZm9yfGxpc3QgKGRpc2tzfGZvbGRlcil8JyArXG4gICAgICAgICAgJ21vdW50IHZvbHVtZXxwYXRoIHRvfChjbG9zZXxvcGVuIGZvcikgYWNjZXNzfChnZXR8c2V0KSBlb2Z8JyArXG4gICAgICAgICAgJ2N1cnJlbnQgZGF0ZXxkbyBzaGVsbCBzY3JpcHR8Z2V0IHZvbHVtZSBzZXR0aW5nc3xyYW5kb20gbnVtYmVyfCcgK1xuICAgICAgICAgICdzZXQgdm9sdW1lfHN5c3RlbSBhdHRyaWJ1dGV8c3lzdGVtIGluZm98dGltZSB0byBHTVR8JyArXG4gICAgICAgICAgJyhsb2FkfHJ1bnxzdG9yZSkgc2NyaXB0fHNjcmlwdGluZyBjb21wb25lbnRzfCcgK1xuICAgICAgICAgICdBU0NJSSAoY2hhcmFjdGVyfG51bWJlcil8bG9jYWxpemVkIHN0cmluZ3wnICtcbiAgICAgICAgICAnY2hvb3NlIChhcHBsaWNhdGlvbnxjb2xvcnxmaWxlfGZpbGUgbmFtZXwnICtcbiAgICAgICAgICAnZm9sZGVyfGZyb20gbGlzdHxyZW1vdGUgYXBwbGljYXRpb258VVJMKXwnICtcbiAgICAgICAgICAnZGlzcGxheSAoYWxlcnR8ZGlhbG9nKSlcXFxcYnxeXFxcXHMqcmV0dXJuXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKHRleHQgaXRlbSBkZWxpbWl0ZXJzfGN1cnJlbnQgYXBwbGljYXRpb258bWlzc2luZyB2YWx1ZSlcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoYXBhcnQgZnJvbXxhc2lkZSBmcm9tfGluc3RlYWQgb2Z8b3V0IG9mfGdyZWF0ZXIgdGhhbnwnICtcbiAgICAgICAgICBcImlzbid0fChkb2Vzbid0fGRvZXMgbm90KSAoZXF1YWx8Y29tZSBiZWZvcmV8Y29tZSBhZnRlcnxjb250YWluKXxcIiArXG4gICAgICAgICAgJyhncmVhdGVyfGxlc3MpIHRoYW4oIG9yIGVxdWFsKT98KHN0YXJ0cz98ZW5kc3xiZWdpbnM/KSB3aXRofCcgK1xuICAgICAgICAgICdjb250YWluZWQgYnl8Y29tZXMgKGJlZm9yZXxhZnRlcil8YSAocmVmfHJlZmVyZW5jZSl8UE9TSVggZmlsZXwnICtcbiAgICAgICAgICAnUE9TSVggcGF0aHwoZGF0ZXx0aW1lKSBzdHJpbmd8cXVvdGVkIGZvcm0pXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnb24nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PTtcXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9XG4gICAgXS5jb25jYXQoQ09NTUVOVFMpLFxuICAgIGlsbGVnYWw6ICcvL3wtPnw9PnxcXFxcW1xcXFxbJ1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXpfXVswLTlBLVphLXpfXSonO1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdpZiBmb3Igd2hpbGUgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ0JhY2tTbGFzaCBEb3VibGVRdW90ZSBmYWxzZSBGb3J3YXJkU2xhc2ggSW5maW5pdHkgTmFOIE5ld0xpbmUgbnVsbCBQSSBTaW5nbGVRdW90ZSBUYWIgVGV4dEZvcm1hdHRpbmcgdHJ1ZSB1bmRlZmluZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0FicyBBY29zIEFuZ2xlIEF0dGFjaG1lbnRzIEFyZWEgQXJlYUdlb2RldGljIEFzaW4gQXRhbiBBdGFuMiBBdmVyYWdlIEJlYXJpbmcgQm9vbGVhbiBCdWZmZXIgQnVmZmVyR2VvZGV0aWMgJyArXG4gICAgICAnQ2VpbCBDZW50cm9pZCBDbGlwIENvbnNvbGUgQ29uc3RyYWluIENvbnRhaW5zIENvcyBDb3VudCBDcm9zc2VzIEN1dCBEYXRlIERhdGVBZGQgJyArXG4gICAgICAnRGF0ZURpZmYgRGF5IERlY29kZSBEZWZhdWx0VmFsdWUgRGljdGlvbmFyeSBEaWZmZXJlbmNlIERpc2pvaW50IERpc3RhbmNlIERpc3RhbmNlR2VvZGV0aWMgRGlzdGluY3QgJyArXG4gICAgICAnRG9tYWluQ29kZSBEb21haW5OYW1lIEVxdWFscyBFeHAgRXh0ZW50IEZlYXR1cmUgRmVhdHVyZVNldCBGZWF0dXJlU2V0QnlBc3NvY2lhdGlvbiBGZWF0dXJlU2V0QnlJZCBGZWF0dXJlU2V0QnlQb3J0YWxJdGVtICcgK1xuICAgICAgJ0ZlYXR1cmVTZXRCeVJlbGF0aW9uc2hpcE5hbWUgRmVhdHVyZVNldEJ5VGl0bGUgRmVhdHVyZVNldEJ5VXJsIEZpbHRlciBGaXJzdCBGbG9vciBHZW9tZXRyeSBHcm91cEJ5IEd1aWQgSGFzS2V5IEhvdXIgSUlmIEluZGV4T2YgJyArXG4gICAgICAnSW50ZXJzZWN0aW9uIEludGVyc2VjdHMgSXNFbXB0eSBJc05hbiBJc1NlbGZJbnRlcnNlY3RpbmcgTGVuZ3RoIExlbmd0aEdlb2RldGljIExvZyBNYXggTWVhbiBNaWxsaXNlY29uZCBNaW4gTWludXRlIE1vbnRoICcgK1xuICAgICAgJ011bHRpUGFydFRvU2luZ2xlUGFydCBNdWx0aXBvaW50IE5leHRTZXF1ZW5jZVZhbHVlIE5vdyBOdW1iZXIgT3JkZXJCeSBPdmVybGFwcyBQb2ludCBQb2x5Z29uICcgK1xuICAgICAgJ1BvbHlsaW5lIFBvcnRhbCBQb3cgUmFuZG9tIFJlbGF0ZSBSZXZlcnNlIFJpbmdJc0Nsb2NrV2lzZSBSb3VuZCBTZWNvbmQgU2V0R2VvbWV0cnkgU2luIFNvcnQgU3FydCBTdGRldiBTdW0gJyArXG4gICAgICAnU3ltbWV0cmljRGlmZmVyZW5jZSBUYW4gVGV4dCBUaW1lc3RhbXAgVG9kYXkgVG9Mb2NhbCBUb3AgVG91Y2hlcyBUb1VUQyBUcmFja0N1cnJlbnRUaW1lICcgK1xuICAgICAgJ1RyYWNrR2VvbWV0cnlXaW5kb3cgVHJhY2tJbmRleCBUcmFja1N0YXJ0VGltZSBUcmFja1dpbmRvdyBUeXBlT2YgVW5pb24gVXJsRW5jb2RlIFZhcmlhbmNlICcgK1xuICAgICAgJ1dlZWtkYXkgV2hlbiBXaXRoaW4gWWVhciAnXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUztcbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFxcXCRbZGF0YXN0b3JlfGZlYXR1cmV8bGF5ZXJ8bWFwfG1lYXN1cmV8c291cmNlZmVhdHVyZXxzb3VyY2VsYXllcnx0YXJnZXRmZWF0dXJlfHRhcmdldGxheWVyfHZhbHVlfHZpZXddKydcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtvT11bMC03XSspJyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAgLy8gZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcbiAgdmFyIFBBUkFNU19DT05UQUlOUyA9IFNVQlNULmNvbnRhaW5zLmNvbmNhdChbXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREVcbiAgXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2FyY2FkZSddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBTWU1CT0wsXG4gICAgICBOVU1CRVIsXG4gICAgICB7IC8vIG9iamVjdCBhdHRyIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogL1t7LF1cXHMqLywgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRSArICdcXFxccyo6JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdhdHRyJywgYmVnaW46IElERU5UX1JFLCByZWxldmFuY2U6IDB9XVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIocmV0dXJuKVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIElERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IElERU5UX1JFXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dL1xuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDUFBfUFJJTUlUSVZFX1RZUEVTID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAnXFxcXGJbYS16XFxcXGRfXSpfdFxcXFxiJ1xuICB9O1xuXG4gIC8vIGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGVcbiAgLy8gXFxcXCBcXHggXFx4RkYgXFx1MjgzNyBcXHUwMDMyMzc0NyBcXDM3NFxuICB2YXIgQ0hBUkFDVEVSX0VTQ0FQRVMgPSAnXFxcXFxcXFwoeFswLTlBLUZhLWZdezJ9fHVbMC05QS1GYS1mXXs0LDh9fFswLTddezN9fFxcXFxTKSdcbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cXCcoJyArIENIQVJBQ1RFUl9FU0NBUEVTICsgXCJ8LilcIiwgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJy4nXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogLyg/OnU4P3xVfEwpP1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKCg/Oi58XFxuKSo/XFwpXFwxXCIvIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0gICAgICAge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvI1xccypbYS16XStcXGIvLCBlbmQ6IC8kLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJ21ldGEta2V5d29yZCc6XG4gICAgICAgICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSAnICtcbiAgICAgICAgJ3ByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChTVFJJTkdTLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEtc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88W15cXG4+XSo+LywgZW5kOiAvJC8sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fVElUTEUgPSBobGpzLklERU5UX1JFICsgJ1xcXFxzKlxcXFwoJztcblxuICB2YXIgQ1BQX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mICcgK1xuICAgICAgJ2R5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSAnICtcbiAgICAgICd1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgJyArXG4gICAgICAnZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgJyArXG4gICAgICAnc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgY29uc3RldmFsIGNvbnN0aW5pdCBkZWNsdHlwZSAnICtcbiAgICAgICdjb25jZXB0IGNvX2F3YWl0IGNvX3JldHVybiBjb195aWVsZCByZXF1aXJlcyAnICtcbiAgICAgICdub2V4Y2VwdCBzdGF0aWNfYXNzZXJ0IHRocmVhZF9sb2NhbCByZXN0cmljdCBfQm9vbCBjb21wbGV4IF9Db21wbGV4IF9JbWFnaW5hcnkgJyArXG4gICAgICAnYXRvbWljX2Jvb2wgYXRvbWljX2NoYXIgYXRvbWljX3NjaGFyICcgK1xuICAgICAgJ2F0b21pY191Y2hhciBhdG9taWNfc2hvcnQgYXRvbWljX3VzaG9ydCBhdG9taWNfaW50IGF0b21pY191aW50IGF0b21pY19sb25nIGF0b21pY191bG9uZyBhdG9taWNfbGxvbmcgJyArXG4gICAgICAnYXRvbWljX3VsbG9uZyBuZXcgdGhyb3cgcmV0dXJuICcgK1xuICAgICAgJ2FuZCBvciBub3QnLFxuICAgIGJ1aWx0X2luOiAnc3RkIHN0cmluZyB3c3RyaW5nIGNpbiBjb3V0IGNlcnIgY2xvZyBzdGRpbiBzdGRvdXQgc3RkZXJyIHN0cmluZ3N0cmVhbSBpc3RyaW5nc3RyZWFtIG9zdHJpbmdzdHJlYW0gJyArXG4gICAgICAnYXV0b19wdHIgZGVxdWUgbGlzdCBxdWV1ZSBzdGFjayB2ZWN0b3IgbWFwIHNldCBiaXRzZXQgbXVsdGlzZXQgbXVsdGltYXAgdW5vcmRlcmVkX3NldCAnICtcbiAgICAgICd1bm9yZGVyZWRfbWFwIHVub3JkZXJlZF9tdWx0aXNldCB1bm9yZGVyZWRfbXVsdGltYXAgYXJyYXkgc2hhcmVkX3B0ciBhYm9ydCBhYnMgYWNvcyAnICtcbiAgICAgICdhc2luIGF0YW4yIGF0YW4gY2FsbG9jIGNlaWwgY29zaCBjb3MgZXhpdCBleHAgZmFicyBmbG9vciBmbW9kIGZwcmludGYgZnB1dHMgZnJlZSBmcmV4cCAnICtcbiAgICAgICdmc2NhbmYgZnV0dXJlIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgJyArXG4gICAgICAnaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyAnICtcbiAgICAgICdwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgJyArXG4gICAgICAnc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuICcgK1xuICAgICAgJ3ZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHInLFxuICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGxwdHIgTlVMTCdcbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9DT05UQUlOUyA9IFtcbiAgICBDUFBfUFJJTUlUSVZFX1RZUEVTLFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgU1RSSU5HU1xuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjJywgJ2NjJywgJ2gnLCAnYysrJywgJ2grKycsICdocHAnLCAnaGgnLCAnaHh4JywgJ2N4eCddLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8c3RhY2t8dmVjdG9yfG1hcHxzZXR8Yml0c2V0fG11bHRpc2V0fG11bHRpbWFwfHVub3JkZXJlZF9tYXB8dW5vcmRlcmVkX3NldHx1bm9yZGVyZWRfbXVsdGlzZXR8dW5vcmRlcmVkX211bHRpbWFwfGFycmF5KVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIENQUF9QUklNSVRJVkVfVFlQRVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFRoaXMgbW9kZSBjb3ZlcnMgZXhwcmVzc2lvbiBjb250ZXh0IHdoZXJlIHdlIGNhbid0IGV4cGVjdCBhIGZ1bmN0aW9uXG4gICAgICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAgICAgLy8gYHJldHVybiBzb21lKClgLCBgZWxzZSBpZigpYCwgYCh4KnN1bSgxLCAyKSlgXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvPS8sIGVuZDogLzsvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvfSxcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsIGVuZDogLzsvfVxuICAgICAgICBdLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWydzZWxmJ10pLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJ1tcXFxcKiZcXFxcc10rKSsnICsgRlVOQ1RJT05fVElUTEUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcd1xcc1xcKiZdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICAgICAgICAgICAgLy8gQ291bnQgbWF0Y2hpbmcgcGFyZW50aGVzZXMuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVNcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFBSRVBST0NFU1NPUlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBzdHJ1Y3QnLCBlbmQ6IC9bezs6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luOiAvPC8sIGVuZDogLz4vLCBjb250YWluczogWydzZWxmJ119LCAvLyBza2lwIGdlbmVyaWMgc3R1ZmZcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0pLFxuICAgIGV4cG9ydHM6IHtcbiAgICAgIHByZXByb2Nlc3NvcjogUFJFUFJPQ0VTU09SLFxuICAgICAgc3RyaW5nczogU1RSSU5HUyxcbiAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFNcbiAgICB9XG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG5cdHZhciBBUkRVSU5PX0tXID0ge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSB3b3JkIFN0cmluZycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NldHVwIGxvb3AnICtcbiAgICAgICAgJ0tleWJvYXJkQ29udHJvbGxlciBNb3VzZUNvbnRyb2xsZXIgU29mdHdhcmVTZXJpYWwgJyArXG4gICAgICAgICdFdGhlcm5ldFNlcnZlciBFdGhlcm5ldENsaWVudCBMaXF1aWRDcnlzdGFsICcgK1xuICAgICAgICAnUm9ib3RDb250cm9sIEdTTVZvaWNlQ2FsbCBFdGhlcm5ldFVEUCBFc3Bsb3JhVEZUICcgK1xuICAgICAgICAnSHR0cENsaWVudCBSb2JvdE1vdG9yIFdpRmlDbGllbnQgR1NNU2Nhbm5lciAnICtcbiAgICAgICAgJ0ZpbGVTeXN0ZW0gU2NoZWR1bGVyIEdTTVNlcnZlciBZdW5DbGllbnQgWXVuU2VydmVyICcgK1xuICAgICAgICAnSVBBZGRyZXNzIEdTTUNsaWVudCBHU01Nb2RlbSBLZXlib2FyZCBFdGhlcm5ldCAnICtcbiAgICAgICAgJ0NvbnNvbGUgR1NNQmFuZCBFc3Bsb3JhIFN0ZXBwZXIgUHJvY2VzcyAnICtcbiAgICAgICAgJ1dpRmlVRFAgR1NNX1NNUyBNYWlsYm94IFVTQkhvc3QgRmlybWF0YSBQSW1hZ2UgJyArXG4gICAgICAgICdDbGllbnQgU2VydmVyIEdTTVBJTiBGaWxlSU8gQnJpZGdlIFNlcmlhbCAnICtcbiAgICAgICAgJ0VFUFJPTSBTdHJlYW0gTW91c2UgQXVkaW8gU2Vydm8gRmlsZSBUYXNrICcgK1xuICAgICAgICAnR1BSUyBXaUZpIFdpcmUgVEZUIEdTTSBTUEkgU0QgJyArXG4gICAgICAgICdydW5TaGVsbENvbW1hbmRBc3luY2hyb25vdXNseSBhbmFsb2dXcml0ZVJlc29sdXRpb24gJyArXG4gICAgICAgICdyZXRyaWV2ZUNhbGxpbmdOdW1iZXIgcHJpbnRGaXJtd2FyZVZlcnNpb24gJyArXG4gICAgICAgICdhbmFsb2dSZWFkUmVzb2x1dGlvbiBzZW5kRGlnaXRhbFBvcnRQYWlyICcgK1xuICAgICAgICAnbm9MaXN0ZW5PbkxvY2FsaG9zdCByZWFkSm95c3RpY2tCdXR0b24gc2V0RmlybXdhcmVWZXJzaW9uICcgK1xuICAgICAgICAncmVhZEpveXN0aWNrU3dpdGNoIHNjcm9sbERpc3BsYXlSaWdodCBnZXRWb2ljZUNhbGxTdGF0dXMgJyArXG4gICAgICAgICdzY3JvbGxEaXNwbGF5TGVmdCB3cml0ZU1pY3Jvc2Vjb25kcyBkZWxheU1pY3Jvc2Vjb25kcyAnICtcbiAgICAgICAgJ2JlZ2luVHJhbnNtaXNzaW9uIGdldFNpZ25hbFN0cmVuZ3RoIHJ1bkFzeW5jaHJvbm91c2x5ICcgK1xuICAgICAgICAnZ2V0QXN5bmNocm9ub3VzbHkgbGlzdGVuT25Mb2NhbGhvc3QgZ2V0Q3VycmVudENhcnJpZXIgJyArXG4gICAgICAgICdyZWFkQWNjZWxlcm9tZXRlciBtZXNzYWdlQXZhaWxhYmxlIHNlbmREaWdpdGFsUG9ydHMgJyArXG4gICAgICAgICdsaW5lRm9sbG93Q29uZmlnIGNvdW50cnlOYW1lV3JpdGUgcnVuU2hlbGxDb21tYW5kICcgK1xuICAgICAgICAncmVhZFN0cmluZ1VudGlsIHJld2luZERpcmVjdG9yeSByZWFkVGVtcGVyYXR1cmUgJyArXG4gICAgICAgICdzZXRDbG9ja0RpdmlkZXIgcmVhZExpZ2h0U2Vuc29yIGVuZFRyYW5zbWlzc2lvbiAnICtcbiAgICAgICAgJ2FuYWxvZ1JlZmVyZW5jZSBkZXRhY2hJbnRlcnJ1cHQgY291bnRyeU5hbWVSZWFkICcgK1xuICAgICAgICAnYXR0YWNoSW50ZXJydXB0IGVuY3J5cHRpb25UeXBlIHJlYWRCeXRlc1VudGlsICcgK1xuICAgICAgICAncm9ib3ROYW1lV3JpdGUgcmVhZE1pY3JvcGhvbmUgcm9ib3ROYW1lUmVhZCBjaXR5TmFtZVdyaXRlICcgK1xuICAgICAgICAndXNlck5hbWVXcml0ZSByZWFkSm95c3RpY2tZIHJlYWRKb3lzdGlja1ggbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ29wZW5OZXh0RmlsZSBzY2FuTmV0d29ya3Mgbm9JbnRlcnJ1cHRzIGRpZ2l0YWxXcml0ZSAnICtcbiAgICAgICAgJ2JlZ2luU3BlYWtlciBtb3VzZVByZXNzZWQgaXNBY3Rpb25Eb25lIG1vdXNlRHJhZ2dlZCAnICtcbiAgICAgICAgJ2Rpc3BsYXlMb2dvcyBub0F1dG9zY3JvbGwgYWRkUGFyYW1ldGVyIHJlbW90ZU51bWJlciAnICtcbiAgICAgICAgJ2dldE1vZGlmaWVycyBrZXlib2FyZFJlYWQgdXNlck5hbWVSZWFkIHdhaXRDb250aW51ZSAnICtcbiAgICAgICAgJ3Byb2Nlc3NJbnB1dCBwYXJzZUNvbW1hbmQgcHJpbnRWZXJzaW9uIHJlYWROZXR3b3JrcyAnICtcbiAgICAgICAgJ3dyaXRlTWVzc2FnZSBibGlua1ZlcnNpb24gY2l0eU5hbWVSZWFkIHJlYWRNZXNzYWdlICcgK1xuICAgICAgICAnc2V0RGF0YU1vZGUgcGFyc2VQYWNrZXQgaXNMaXN0ZW5pbmcgc2V0Qml0T3JkZXIgJyArXG4gICAgICAgICdiZWdpblBhY2tldCBpc0RpcmVjdG9yeSBtb3RvcnNXcml0ZSBkcmF3Q29tcGFzcyAnICtcbiAgICAgICAgJ2RpZ2l0YWxSZWFkIGNsZWFyU2NyZWVuIHNlcmlhbEV2ZW50IHJpZ2h0VG9MZWZ0ICcgK1xuICAgICAgICAnc2V0VGV4dFNpemUgbGVmdFRvUmlnaHQgcmVxdWVzdEZyb20ga2V5UmVsZWFzZWQgJyArXG4gICAgICAgICdjb21wYXNzUmVhZCBhbmFsb2dXcml0ZSBpbnRlcnJ1cHRzIFdpRmlTZXJ2ZXIgJyArXG4gICAgICAgICdkaXNjb25uZWN0IHBsYXlNZWxvZHkgcGFyc2VGbG9hdCBhdXRvc2Nyb2xsICcgK1xuICAgICAgICAnZ2V0UElOVXNlZCBzZXRQSU5Vc2VkIHNldFRpbWVvdXQgc2VuZEFuYWxvZyAnICtcbiAgICAgICAgJ3JlYWRTbGlkZXIgYW5hbG9nUmVhZCBiZWdpbldyaXRlIGNyZWF0ZUNoYXIgJyArXG4gICAgICAgICdtb3RvcnNTdG9wIGtleVByZXNzZWQgdGVtcG9Xcml0ZSByZWFkQnV0dG9uICcgK1xuICAgICAgICAnc3VibmV0TWFzayBkZWJ1Z1ByaW50IG1hY0FkZHJlc3Mgd3JpdGVHcmVlbiAnICtcbiAgICAgICAgJ3JhbmRvbVNlZWQgYXR0YWNoR1BSUyByZWFkU3RyaW5nIHNlbmRTdHJpbmcgJyArXG4gICAgICAgICdyZW1vdGVQb3J0IHJlbGVhc2VBbGwgbW91c2VNb3ZlZCBiYWNrZ3JvdW5kICcgK1xuICAgICAgICAnZ2V0WENoYW5nZSBnZXRZQ2hhbmdlIGFuc3dlckNhbGwgZ2V0UmVzdWx0ICcgK1xuICAgICAgICAndm9pY2VDYWxsIGVuZFBhY2tldCBjb25zdHJhaW4gZ2V0U29ja2V0IHdyaXRlSlNPTiAnICtcbiAgICAgICAgJ2dldEJ1dHRvbiBhdmFpbGFibGUgY29ubmVjdGVkIGZpbmRVbnRpbCByZWFkQnl0ZXMgJyArXG4gICAgICAgICdleGl0VmFsdWUgcmVhZEdyZWVuIHdyaXRlQmx1ZSBzdGFydExvb3AgSVBBZGRyZXNzICcgK1xuICAgICAgICAnaXNQcmVzc2VkIHNlbmRTeXNleCBwYXVzZU1vZGUgZ2F0ZXdheUlQIHNldEN1cnNvciAnICtcbiAgICAgICAgJ2dldE9lbUtleSB0dW5lV3JpdGUgbm9EaXNwbGF5IGxvYWRJbWFnZSBzd2l0Y2hQSU4gJyArXG4gICAgICAgICdvblJlcXVlc3Qgb25SZWNlaXZlIGNoYW5nZVBJTiBwbGF5RmlsZSBub0J1ZmZlciAnICtcbiAgICAgICAgJ3BhcnNlSW50IG92ZXJmbG93IGNoZWNrUElOIGtub2JSZWFkIGJlZ2luVEZUICcgK1xuICAgICAgICAnYml0Q2xlYXIgdXBkYXRlSVIgYml0V3JpdGUgcG9zaXRpb24gd3JpdGVSR0IgJyArXG4gICAgICAgICdoaWdoQnl0ZSB3cml0ZVJlZCBzZXRTcGVlZCByZWFkQmx1ZSBub1N0cm9rZSAnICtcbiAgICAgICAgJ3JlbW90ZUlQIHRyYW5zZmVyIHNodXRkb3duIGhhbmdDYWxsIGJlZ2luU01TICcgK1xuICAgICAgICAnZW5kV3JpdGUgYXR0YWNoZWQgbWFpbnRhaW4gbm9DdXJzb3IgY2hlY2tSZWcgJyArXG4gICAgICAgICdjaGVja1BVSyBzaGlmdE91dCBpc1ZhbGlkIHNoaWZ0SW4gcHVsc2VJbiAnICtcbiAgICAgICAgJ2Nvbm5lY3QgcHJpbnRsbiBsb2NhbElQIHBpbk1vZGUgZ2V0SU1FSSAnICtcbiAgICAgICAgJ2Rpc3BsYXkgbm9CbGluayBwcm9jZXNzIGdldEJhbmQgcnVubmluZyBiZWdpblNEICcgK1xuICAgICAgICAnZHJhd0JNUCBsb3dCeXRlIHNldEJhbmQgcmVsZWFzZSBiaXRSZWFkIHByZXBhcmUgJyArXG4gICAgICAgICdwb2ludFRvIHJlYWRSZWQgc2V0TW9kZSBub0ZpbGwgcmVtb3ZlIGxpc3RlbiAnICtcbiAgICAgICAgJ3N0cm9rZSBkZXRhY2ggYXR0YWNoIG5vVG9uZSBleGlzdHMgYnVmZmVyICcgK1xuICAgICAgICAnaGVpZ2h0IGJpdFNldCBjaXJjbGUgY29uZmlnIGN1cnNvciByYW5kb20gJyArXG4gICAgICAgICdJUnJlYWQgc2V0RE5TIGVuZFNNUyBnZXRLZXkgbWljcm9zICcgK1xuICAgICAgICAnbWlsbGlzIGJlZ2luIHByaW50IHdyaXRlIHJlYWR5IGZsdXNoIHdpZHRoICcgK1xuICAgICAgICAnaXNQSU4gYmxpbmsgY2xlYXIgcHJlc3MgbWtkaXIgcm1kaXIgY2xvc2UgJyArXG4gICAgICAgICdwb2ludCB5aWVsZCBpbWFnZSBCU1NJRCBjbGljayBkZWxheSAnICtcbiAgICAgICAgJ3JlYWQgdGV4dCBtb3ZlIHBlZWsgYmVlcCByZWN0IGxpbmUgb3BlbiAnICtcbiAgICAgICAgJ3NlZWsgZmlsbCBzaXplIHR1cm4gc3RvcCBob21lIGZpbmQgJyArXG4gICAgICAgICdzdGVwIHRvbmUgc3FydCBSU1NJIFNTSUQgJyArXG4gICAgICAgICdlbmQgYml0IHRhbiBjb3Mgc2luIHBvdyBtYXAgYWJzIG1heCAnICtcbiAgICAgICAgJ21pbiBnZXQgcnVuIHB1dCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnRElHSVRBTF9NRVNTQUdFIEZJUk1BVEFfU1RSSU5HIEFOQUxPR19NRVNTQUdFICcgK1xuICAgICAgICAnUkVQT1JUX0RJR0lUQUwgUkVQT1JUX0FOQUxPRyBJTlBVVF9QVUxMVVAgJyArXG4gICAgICAgICdTRVRfUElOX01PREUgSU5URVJOQUwyVjU2IFNZU1RFTV9SRVNFVCBMRURfQlVJTFRJTiAnICtcbiAgICAgICAgJ0lOVEVSTkFMMVYxIFNZU0VYX1NUQVJUIElOVEVSTkFMIEVYVEVSTkFMICcgK1xuICAgICAgICAnREVGQVVMVCBPVVRQVVQgSU5QVVQgSElHSCBMT1cnXG4gIH07XG5cbiAgdmFyIEFSRFVJTk8gPSBobGpzLmdldExhbmd1YWdlKCdjcHAnKS5yYXdEZWZpbml0aW9uKCk7XG5cbiAgdmFyIGt3cyA9IEFSRFVJTk8ua2V5d29yZHM7XG5cbiAga3dzLmtleXdvcmQgKz0gJyAnICsgQVJEVUlOT19LVy5rZXl3b3JkO1xuICBrd3MubGl0ZXJhbCArPSAnICcgKyBBUkRVSU5PX0tXLmxpdGVyYWw7XG4gIGt3cy5idWlsdF9pbiArPSAnICcgKyBBUkRVSU5PX0tXLmJ1aWx0X2luO1xuXG4gIHJldHVybiBBUkRVSU5PO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICAvL2xvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2FybSddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmFybSAudGh1bWIgLmNvZGUxNiAuY29kZTMyIC5mb3JjZV90aHVtYiAudGh1bWJfZnVuYyAubHRvcmcgJytcbiAgICAgICAgLy9BUk0gZGlyZWN0aXZlc1xuICAgICAgICAnQUxJQVMgQUxJR04gQVJNIEFSRUEgQVNTRVJUIEFUVFIgQ04gQ09ERSBDT0RFMTYgQ09ERTMyIENPTU1PTiBDUCBEQVRBIERDQiBEQ0QgRENEVSBEQ0RPIERDRkQgRENGRFUgRENJIERDUSBEQ1FVIERDVyBEQ1dVIEROIEVMSUYgRUxTRSBFTkQgRU5ERlVOQyBFTkRJRiBFTkRQIEVOVFJZIEVRVSBFWFBPUlQgRVhQT1JUQVMgRVhURVJOIEZJRUxEIEZJTEwgRlVOQ1RJT04gR0JMQSBHQkxMIEdCTFMgR0VUIEdMT0JBTCBJRiBJTVBPUlQgSU5DQklOIElOQ0xVREUgSU5GTyBLRUVQIExDTEEgTENMTCBMQ0xTIExUT1JHIE1BQ1JPIE1BUCBNRU5EIE1FWElUIE5PRlAgT1BUIFBSRVNFUlZFOCBQUk9DIFFOIFJFQURPTkxZIFJFTE9DIFJFUVVJUkUgUkVRVUlSRTggUkxJU1QgRk4gUk9VVCBTRVRBIFNFVEwgU0VUUyBTTiBTUEFDRSBTVUJUIFRIVU1CIFRIVU1CWCBUVEwgV0hJTEUgV0VORCAnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnKyAvL3N0YW5kYXJkIHJlZ2lzdGVyc1xuICAgICAgICAncGMgbHIgc3AgaXAgc2wgc2IgZnAgJysgLy90eXBpY2FsIHJlZ3MgcGx1cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICdhMSBhMiBhMyBhNCB2MSB2MiB2MyB2NCB2NSB2NiB2NyB2OCBmMCBmMSBmMiBmMyBmNCBmNSBmNiBmNyAnKyAvL21vcmUgcmVncyBhbmQgZnBcbiAgICAgICAgJ3AwIHAxIHAyIHAzIHA0IHA1IHA2IHA3IHA4IHA5IHAxMCBwMTEgcDEyIHAxMyBwMTQgcDE1ICcrIC8vY29wcm9jZXNzb3IgcmVnc1xuICAgICAgICAnYzAgYzEgYzIgYzMgYzQgYzUgYzYgYzcgYzggYzkgYzEwIGMxMSBjMTIgYzEzIGMxNCBjMTUgJysgLy9tb3JlIGNvcHJvY1xuICAgICAgICAncTAgcTEgcTIgcTMgcTQgcTUgcTYgcTcgcTggcTkgcTEwIHExMSBxMTIgcTEzIHExNCBxMTUgJysgLy9hZHZhbmNlZCBTSU1EIE5FT04gcmVnc1xuXG4gICAgICAgIC8vcHJvZ3JhbSBzdGF0dXMgcmVnaXN0ZXJzXG4gICAgICAgICdjcHNyX2MgY3Bzcl94IGNwc3JfcyBjcHNyX2YgY3Bzcl9jeCBjcHNyX2N4cyBjcHNyX3hzIGNwc3JfeHNmIGNwc3Jfc2YgY3Bzcl9jeHNmICcrXG4gICAgICAgICdzcHNyX2Mgc3Bzcl94IHNwc3JfcyBzcHNyX2Ygc3Bzcl9jeCBzcHNyX2N4cyBzcHNyX3hzIHNwc3JfeHNmIHNwc3Jfc2Ygc3Bzcl9jeHNmICcrXG5cbiAgICAgICAgLy9ORU9OIGFuZCBWRlAgcmVnaXN0ZXJzXG4gICAgICAgICdzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCBzOSBzMTAgczExIHMxMiBzMTMgczE0IHMxNSAnK1xuICAgICAgICAnczE2IHMxNyBzMTggczE5IHMyMCBzMjEgczIyIHMyMyBzMjQgczI1IHMyNiBzMjcgczI4IHMyOSBzMzAgczMxICcrXG4gICAgICAgICdkMCBkMSBkMiBkMyBkNCBkNSBkNiBkNyBkOCBkOSBkMTAgZDExIGQxMiBkMTMgZDE0IGQxNSAnK1xuICAgICAgICAnZDE2IGQxNyBkMTggZDE5IGQyMCBkMjEgZDIyIGQyMyBkMjQgZDI1IGQyNiBkMjcgZDI4IGQyOSBkMzAgZDMxICcgK1xuXG4gICAgICAgICd7UEN9IHtWQVJ9IHtUUlVFfSB7RkFMU0V9IHtPUFR9IHtDT05GSUd9IHtFTkRJQU59IHtDT0RFU0laRX0ge0NQVX0ge0ZQVX0ge0FSQ0hJVEVDVFVSRX0ge1BDU1RPUkVPRkZTRVR9IHtBUk1BU01fVkVSU0lPTn0ge0lOVEVSfSB7Uk9QSX0ge1JXUEl9IHtTV1NUfSB7Tk9TV1NUfSAuIEAnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignKyAgICAgLy9tbmVtb25pY3NcbiAgICAgICAgICAgICdhZGN8JytcbiAgICAgICAgICAgICcocWQ/fHNoP3x1W3FoXT8pP2FkZCg4fDE2KT98dXNhZGE/OHwocXxzaD98dVtxaF0/KT8oYXN8c2EpeHwnK1xuICAgICAgICAgICAgJ2FuZHxhZHJsP3xzYmN8cnNbYmNdfGFzcnxiW2x4XT98Ymx4fGJ4anxjYm4/enx0YltiaF18YmljfCcrXG4gICAgICAgICAgICAnYmZjfGJmaXxbc3VdYmZ4fGJrcHR8Y2RwMj98Y2x6fGNscmV4fGNtcHxjbW58Y3BzaVtlZF18Y3BzfCcrXG4gICAgICAgICAgICAnc2V0ZW5kfGRiZ3xkbWJ8ZHNifGVvcnxpc2J8aXRbdGVdezAsM318bHNsfGxzcnxyb3J8cnJ4fCcrXG4gICAgICAgICAgICAnbGRtKChbaWRdW2FiXSl8Zltkc10pP3xsZHIoKHN8ZXgpP1tiaGRdKT98bW92dD98bXZufG1yYXxtYXJ8JytcbiAgICAgICAgICAgICdtdWx8W3VzXW11bGx8c211bFtid3RdW2J0XXxzbXVbYXNdZHxzbW11bHxzbW1sYXwnK1xuICAgICAgICAgICAgJ21sYXx1bWxhYWx8c21sYWw/KFt3YnRdW2J0XXxkKXxtbHN8c21sc2w/W2RzXXxzbWN8c3ZjfHNldnwnK1xuICAgICAgICAgICAgJ21pYShbYnRdezJ9fHBoKT98bXJyP2MyP3xtY3JyMj98bXJzfG1zcnxvcnJ8b3JufHBraCh0YnxidCl8cmJpdHwnK1xuICAgICAgICAgICAgJ3JldigxNnxzaCk/fHNlbHxbc3Vdc2F0KDE2KT98bm9wfHBvcHxwdXNofHJmZShbaWRdW2FiXSk/fCcrXG4gICAgICAgICAgICAnc3RtKFtpZF1bYWJdKT98c3RyKGV4KT9bYmhkXT98KHFkPyk/c3VifChzaD98cXx1W3FoXT8pP3N1Yig4fDE2KXwnK1xuICAgICAgICAgICAgJ1tzdV14dChhP2h8YT9iKDE2KT8pfHNycyhbaWRdW2FiXSk/fHN3cGI/fHN3aXxzbWl8dHN0fHRlcXwnK1xuICAgICAgICAgICAgJ3dmZXx3Zml8eWllbGQnK1xuICAgICAgICAnKScrXG4gICAgICAgICcoZXF8bmV8Y3N8Y2N8bWl8cGx8dnN8dmN8aGl8bHN8Z2V8bHR8Z3R8bGV8YWx8aHN8bG8pPycrIC8vY29uZGl0aW9uIGNvZGVzXG4gICAgICAgICdbc3B0cnhdPycgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGVnYWwgcG9zdGZpeGVzXG4gICAgICAgIGVuZDogJ1xcXFxzJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnWztAXScsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnWyMkPV0/MHhbMC05YS1mXSsnfSwgLy9oZXhcbiAgICAgICAgICAgIHtiZWdpbjogJ1sjJD1dPzBiWzAxXSsnfSwgICAgIC8vYmluXG4gICAgICAgICAgICB7YmVnaW46ICdbIyQ9XVxcXFxkKyd9LCAgICAgICAgLy9saXRlcmFsXG4gICAgICAgICAgICB7YmVnaW46ICdcXFxcYlxcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15bYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSsnfSwgLy9BUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rOid9LCAvL0dOVSBBUk0gc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdbPSNdXFxcXHcrJyB9ICAvL2xhYmVsIHJlZmVyZW5jZVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgWE1MX0lERU5UX1JFID0gJ1tBLVphLXowLTlcXFxcLl86LV0rJztcbiAgdmFyIFRBR19JTlRFUk5BTFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgaWxsZWdhbDogLzwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IFhNTF9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz1cXHMqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9bXlxcc1wiJz08PmBdKy99XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHRtbCcsICd4aHRtbCcsICdyc3MnLCAnYXRvbScsICd4amInLCAneHNkJywgJ3hzbCcsICdwbGlzdCcsICd3c2YnLCAnc3ZnJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICc8IURPQ1RZUEUnLCBlbmQ6ICc+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJ31dXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnPCEtLScsXG4gICAgICAgICctLT4nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzxcXFxcIVxcXFxbQ0RBVEFcXFxcWycsIGVuZDogJ1xcXFxdXFxcXF0+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvPFxcP3htbC8sIGVuZDogL1xcPz4vLCByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzxcXD8ocGhwKT8vLCBlbmQ6IC9cXD8+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwaHAnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHBocCBjbG9zaW5nIHRhZyA/PiB0byBjbG9zZSB0aGUgUEhQIGJsb2NrIHdoZW5cbiAgICAgICAgICAvLyBpbnNpZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgYmxvY2tzOlxuICAgICAgICAgIHtiZWdpbjogJy9cXFxcKicsIGVuZDogJ1xcXFwqLycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIHtiZWdpbjogJ2JcIicsIGVuZDogJ1wiJywgc2tpcDogdHJ1ZX0sXG4gICAgICAgICAge2JlZ2luOiAnYlxcJycsIGVuZDogJ1xcJycsIHNraXA6IHRydWV9LFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSksXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsLCBjbGFzc05hbWU6IG51bGwsIGNvbnRhaW5zOiBudWxsLCBza2lwOiB0cnVlfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgLypcbiAgICAgICAgVGhlIGxvb2thaGVhZCBwYXR0ZXJuICg/PS4uLikgZW5zdXJlcyB0aGF0ICdiZWdpbicgb25seSBtYXRjaGVzXG4gICAgICAgICc8c3R5bGUnIGFzIGEgc2luZ2xlIHdvcmQsIGZvbGxvd2VkIGJ5IGEgd2hpdGVzcGFjZSBvciBhblxuICAgICAgICBlbmRpbmcgYnJha2V0LiBUaGUgJyQnIGlzIG5lZWRlZCBmb3IgdGhlIGxleGVtZSB0byBiZSByZWNvZ25pemVkXG4gICAgICAgIGJ5IGhsanMuc3ViTW9kZSgpIHRoYXQgdGVzdHMgbGV4ZW1lcyBvdXRzaWRlIHRoZSBzdHJlYW0uXG4gICAgICAgICovXG4gICAgICAgIGJlZ2luOiAnPHN0eWxlKD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc3R5bGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtUQUdfSU5URVJOQUxTXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnPC9zdHlsZT4nLCByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsnY3NzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgPHN0eWxlIHRhZyBhYm91dCB0aGUgbG9va2FoZWFkIHBhdHRlcm5cbiAgICAgICAgYmVnaW46ICc8c2NyaXB0KD89XFxcXHN8PiknLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAnc2NyaXB0J30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcPFxcL3NjcmlwdFxcPicsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogWydhY3Rpb25zY3JpcHQnLCAnamF2YXNjcmlwdCcsICdoYW5kbGViYXJzJywgJ3htbCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnLz8+JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJywgYmVnaW46IC9bXlxcLz48XFxzXSsvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFRBR19JTlRFUk5BTFNcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhZG9jJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIGJsb2NrIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vezQsfVxcXFxuJyxcbiAgICAgICAgJ1xcXFxuL3s0LH0kJyxcbiAgICAgICAgLy8gY2FuIGFsc28gYmUgZG9uZSBhcy4uLlxuICAgICAgICAvLydeL3s0LH0kJyxcbiAgICAgICAgLy8nXi97NCx9JCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvLyBsaW5lIGNvbW1lbnRcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ14vLycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLy8gdGl0bGVcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcLlxcXFx3LiokJ1xuICAgICAgfSxcbiAgICAgIC8vIGV4YW1wbGUsIGFkbW9uaXRpb24gJiBzaWRlYmFyIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bPVxcXFwqXXs0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXls9XFxcXCpdezQsfSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaGVhZGluZ3NcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXig9ezEsNX0pIC4rPyggXFxcXDEpPyQnfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcW1xcXFxdXFxcXG5dKz9cXFxcbls9XFxcXC1+XFxcXF5cXFxcK117Mix9JCd9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gZG9jdW1lbnQgYXR0cmlidXRlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeOi4rPzonLFxuICAgICAgICBlbmQ6ICdcXFxccycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBibG9jayBhdHRyaWJ1dGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcWy4rP1xcXFxdJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIHF1b3RlYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3F1b3RlJyxcbiAgICAgICAgYmVnaW46ICdeX3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuX3s0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGxpc3RpbmcgYW5kIGxpdGVyYWwgYmxvY2tzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJ15bXFxcXC1cXFxcLl17NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcbltcXFxcLVxcXFwuXXs0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIHBhc3N0aHJvdWdoIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxcK3s0LH1cXFxcbicsXG4gICAgICAgIGVuZDogJ1xcXFxuXFxcXCt7NCx9JCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBsaXN0cyAoY2FuIG9ubHkgY2FwdHVyZSBpbmRpY2F0b3JzKVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXCorfFxcXFwtK3xcXFxcLit8W15cXFxcbl0rPzo6KVxcXFxzKydcbiAgICAgIH0sXG4gICAgICAvLyBhZG1vbml0aW9uXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXihOT1RFfFRJUHxJTVBPUlRBTlR8V0FSTklOR3xDQVVUSU9OKTpcXFxccysnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIHN0cm9uZ1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhbiBhc3RlcmlzayBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFxcXCooPyFbXFxcXCpcXFxcc10pJyxcbiAgICAgICAgZW5kOiAnKFxcXFxuezJ9fFxcXFwqKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgYXN0ZXJpc2sgZm9sbG93ZWQgYnkgd29yZCBjaGFyXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcXFxcXCpcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgZW1waGFzaXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhIHNpbmdsZSBxdW90ZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ1xcXFxCXFwnKD8hW1xcJ1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XFwnKScsXG4gICAgICAgIC8vIGFsbG93IGVzY2FwZWQgc2luZ2xlIHF1b3RlIGZvbGxvd2VkIGJ5IHdvcmQgY2hhclxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXFxcXFxcXCdcXFxcdycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBlbXBoYXNpcyAoYWx0KVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgIC8vIG11c3Qgbm90IGZvbGxvdyBhIHdvcmQgY2hhcmFjdGVyIG9yIGJlIGZvbGxvd2VkIGJ5IGFuIHVuZGVybGluZSBvciBzcGFjZVxuICAgICAgICBiZWdpbjogJ18oPyFbX1xcXFxzXSknLFxuICAgICAgICBlbmQ6ICcoXFxcXG57Mn18XyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgc21hcnQgcXVvdGVzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBcImBgLis/JydcIn0sXG4gICAgICAgICAge2JlZ2luOiBcImAuKz8nXCJ9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgY29kZSBzbmlwcGV0cyAoVE9ETyBzaG91bGQgZ2V0IHNhbWUgdHJlYXRtZW50IGFzIHN0cm9uZyBhbmQgZW1waGFzaXMpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJyhgLis/YHxcXFxcKy4rP1xcXFwrKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGluZGVudGVkIGxpdGVyYWwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIGJlZ2luOiAnXlsgXFxcXHRdJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFwnezMsfVsgXFxcXHRdKiQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gaW1hZ2VzIGFuZCBsaW5rc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyhsaW5rOik/KGh0dHB8aHR0cHN8ZnRwfGZpbGV8aXJjfGltYWdlOj8pOlxcXFxTK1xcXFxbLio/XFxcXF0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJyhsaW5rfGltYWdlOj8pOicsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmsnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcdycsXG4gICAgICAgICAgICBlbmQ6ICdbXlxcXFxbXSsnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2ZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgJyArXG4gICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgdGhyb3cgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCByZXR1cm4gdm9pZCAnICtcbiAgICAnZW51bSBlbHNlIGV4dGVuZHMgaW1wbGVtZW50cyBicmVhayB0cmFuc2llbnQgbmV3IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlICcgK1xuICAgICdhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcml2aWxlZ2VkICcgK1xuICAgICdhc3BlY3RPZiBhZHZpY2VleGVjdXRpb24gcHJvY2VlZCBjZmxvd2JlbG93IGNmbG93IGluaXRpYWxpemF0aW9uIHByZWluaXRpYWxpemF0aW9uICcgK1xuICAgICdzdGF0aWNpbml0aWFsaXphdGlvbiB3aXRoaW5jb2RlIHRhcmdldCB3aXRoaW4gZXhlY3V0aW9uIGdldFdpdGhpblR5cGVOYW1lIGhhbmRsZXIgJyArXG4gICAgJ3RoaXNKb2luUG9pbnQgdGhpc0pvaW5Qb2ludFN0YXRpY1BhcnQgdGhpc0VuY2xvc2luZ0pvaW5Qb2ludFN0YXRpY1BhcnQgZGVjbGFyZSBwYXJlbnRzICcrXG4gICAgJ3dhcm5pbmcgZXJyb3Igc29mdCBwcmVjZWRlbmNlIHRoaXNBc3BlY3RJbnN0YW5jZSc7XG4gIHZhciBTSE9SVEtFWVMgPSAnZ2V0IHNldCBhcmdzIGNhbGwnO1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgaWxsZWdhbCA6IC88XFwvfCMvLFxuICAgIGNvbnRhaW5zIDogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGVhdCB1cCBAJ3MgaW4gZW1haWxzIHRvIHByZXZlbnQgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGRvY3RhZ3NcbiAgICAgICAgICAgICAgYmVnaW46IC9cXHcrQC8sIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lIDogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSA6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAnYXNwZWN0JyxcbiAgICAgICAgZW5kIDogL1t7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IHRydWUsXG4gICAgICAgIGlsbGVnYWwgOiAvWzo7XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMgcGVydHlwZXdpdGhpbiBwZXJ0aGlzIHBlcnRhcmdldCBwZXJjZmxvd2JlbG93IHBlcmNmbG93IGlzc2luZ2xldG9uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiAvXFwoW15cXCldKi8sXG4gICAgICAgICAgICBlbmQgOiAvWyldKy8sXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUgOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGtleXdvcmRzIDogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGlsbGVnYWwgOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkcyA6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBBc3BlY3RKIENvbnN0cnVjdHNcbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdwb2ludGN1dCBhZnRlciBiZWZvcmUgYXJvdW5kIHRocm93aW5nIHJldHVybmluZycsXG4gICAgICAgIGVuZCA6IC9bKV0vLFxuICAgICAgICBleGNsdWRlRW5kIDogZmFsc2UsXG4gICAgICAgIGlsbGVnYWwgOiAvW1wiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zIDogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW4gOiAvWzpdLyxcbiAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICBlbmQgOiAvW3s7XS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlLFxuICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICBpbGxlZ2FsIDogL1tcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTICsgJyAnICsgU0hPUlRLRVlTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgcHJldmVudHMgJ25ldyBOYW1lKC4uLiksIG9yIHRocm93IC4uLicgZnJvbSBiZWluZyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ25ldyB0aHJvdycsXG4gICAgICAgIHJlbGV2YW5jZSA6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoZSBmdW5jdGlvbiBjbGFzcyBpcyBhIGJpdCBkaWZmZXJlbnQgZm9yIEFzcGVjdEogY29tcGFyZWQgdG8gdGhlIEphdmEgbGFuZ3VhZ2VcbiAgICAgICAgY2xhc3NOYW1lIDogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW4gOiAvXFx3KyArXFx3KyhcXC4pP1xcdytcXHMqXFwoW15cXCldKlxcKVxccyooKHRocm93cylbXFx3XFxzLF0rKT9bXFx7O10vLFxuICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGtleXdvcmRzIDogS0VZV09SRFMsXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWlucyA6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW4gOiAvXFwoLywgZW5kIDogL1xcKS8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICAvLyBhbm5vdGF0aW9uIGlzIGFsc28gdXNlZCBpbiB0aGlzIGxhbmd1YWdlXG4gICAgICAgIGNsYXNzTmFtZSA6ICdtZXRhJyxcbiAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiAnYFtcXFxcc1xcXFxTXSdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgYWxpYXNlczogWyAnYWhrJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnQnJlYWsgQ29udGludWUgQ3JpdGljYWwgRXhpdCBFeGl0QXBwIEdvc3ViIEdvdG8gTmV3IE9uRXhpdCBQYXVzZSByZXR1cm4gU2V0QmF0Y2hMaW5lcyBTZXRUaW1lciBTdXNwZW5kIFRocmVhZCBUaHJvdyBVbnRpbCBhaGtfaWQgYWhrX2NsYXNzIGFoa19waWQgYWhrX2V4ZSBhaGtfZ3JvdXAnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgTk9UIEFORCBPUicsXG4gICAgICBidWlsdF9pbjogJ0NvbVNwZWMgQ2xpcGJvYXJkIENsaXBib2FyZEFsbCBFcnJvckxldmVsJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbQkFDS1RJQ0tfRVNDQVBFXX0pLFxuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLCAvL3N1YnN0IHdvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlIGhvd2V2ZXIgZmFpbHMgdGhlIHBvaW50IG9mIGhpZ2hsaWdodGluZy4gdmFyaWFibGUgaXMgY29tcGFyYWJseSB0aGUgbW9zdCBhY2N1cmF0ZSB0aGF0IGFjdHVhbGx5IGhhcyBzb21lIGVmZmVjdFxuICAgICAgICBiZWdpbjogJyVbYS16QS1aMC05I18kQF0rJSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXHcrXFxcXHMqKCx8JSknXG4gICAgICAgIC8vSSBkb24ndCByZWFsbHkga25vdyBpZiB0aGlzIGlzIHRvdGFsbHkgcmVsZXZhbnRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJywgLy9zeW1ib2wgd291bGQgYmUgbW9zdCBhY2N1cmF0ZSBob3dldmVyIGlzIGhpZ2xpZ2h0ZWQganVzdCBsaWtlIGJ1aWx0X2luIGFuZCB0aGF0IG1ha2VzIHVwIGEgbG90IG9mIEF1dG9Ib3RrZXkgY29kZVxuXHRcdCAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVhbmluZyB0aGF0IGl0IHdvdWxkIGZhaWwgdG8gaGlnaGxpZ2h0IGFueXRoaW5nXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXG5cIjtdKzo6KD8hPSknfSxcbiAgICAgICAgICB7YmVnaW46ICdeW15cXFxcblwiO10rOig/IT0pJywgcmVsZXZhbmNlOiAwfSAvLyB6ZXJvIHJlbGV2YW5jZSBhcyBpdCBjYXRjaGVzIGEgbG90IG9mIHRoaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgc2luZ2xlICc6JyBpbiBtYW55IGxhbmd1YWdlc1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiNcXFxcdysnLCBlbmQ6JyQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdBX1thLXpBLVowLTldKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNvbnNlY3V0aXZlIGNvbW1hcywgbm90IGZvciBoaWdobGlnaHRpbmcgYnV0IGp1c3QgZm9yIHJlbGV2YW5jZVxuICAgICAgICBiZWdpbjogJyxcXFxccyosJ1xuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICB2YXIgS0VZV09SRFMgPSAnQnlSZWYgQ2FzZSBDb25zdCBDb250aW51ZUNhc2UgQ29udGludWVMb29wICcgK1xuICAgICAgICAnRGVmYXVsdCBEaW0gRG8gRWxzZSBFbHNlSWYgRW5kRnVuYyBFbmRJZiBFbmRTZWxlY3QgJyArXG4gICAgICAgICdFbmRTd2l0Y2ggRW5kV2l0aCBFbnVtIEV4aXQgRXhpdExvb3AgRm9yIEZ1bmMgJyArXG4gICAgICAgICdHbG9iYWwgSWYgSW4gTG9jYWwgTmV4dCBSZURpbSBSZXR1cm4gU2VsZWN0IFN0YXRpYyAnICtcbiAgICAgICAgJ1N0ZXAgU3dpdGNoIFRoZW4gVG8gVW50aWwgVm9sYXRpbGUgV0VuZCBXaGlsZSBXaXRoJyxcblxuICAgICAgICBMSVRFUkFMID0gJ1RydWUgRmFsc2UgQW5kIE51bGwgTm90IE9yJyxcblxuICAgICAgICBCVUlMVF9JTiA9XG4gICAgICAgICAgJ0FicyBBQ29zIEFkbGliUmVnaXN0ZXIgQWRsaWJVblJlZ2lzdGVyIEFzYyBBc2NXIEFTaW4gQXNzaWduIEFUYW4gQXV0b0l0U2V0T3B0aW9uIEF1dG9JdFdpbkdldFRpdGxlIEF1dG9JdFdpblNldFRpdGxlIEJlZXAgQmluYXJ5IEJpbmFyeUxlbiBCaW5hcnlNaWQgQmluYXJ5VG9TdHJpbmcgQml0QU5EIEJpdE5PVCBCaXRPUiBCaXRSb3RhdGUgQml0U2hpZnQgQml0WE9SIEJsb2NrSW5wdXQgQnJlYWsgQ2FsbCBDRFRyYXkgQ2VpbGluZyBDaHIgQ2hyVyBDbGlwR2V0IENsaXBQdXQgQ29uc29sZVJlYWQgQ29uc29sZVdyaXRlIENvbnNvbGVXcml0ZUVycm9yIENvbnRyb2xDbGljayBDb250cm9sQ29tbWFuZCBDb250cm9sRGlzYWJsZSBDb250cm9sRW5hYmxlIENvbnRyb2xGb2N1cyBDb250cm9sR2V0Rm9jdXMgQ29udHJvbEdldEhhbmRsZSBDb250cm9sR2V0UG9zIENvbnRyb2xHZXRUZXh0IENvbnRyb2xIaWRlIENvbnRyb2xMaXN0VmlldyBDb250cm9sTW92ZSBDb250cm9sU2VuZCBDb250cm9sU2V0VGV4dCBDb250cm9sU2hvdyBDb250cm9sVHJlZVZpZXcgQ29zIERlYyBEaXJDb3B5IERpckNyZWF0ZSBEaXJHZXRTaXplIERpck1vdmUgRGlyUmVtb3ZlIERsbENhbGwgRGxsQ2FsbEFkZHJlc3MgRGxsQ2FsbGJhY2tGcmVlIERsbENhbGxiYWNrR2V0UHRyIERsbENhbGxiYWNrUmVnaXN0ZXIgRGxsQ2xvc2UgRGxsT3BlbiBEbGxTdHJ1Y3RDcmVhdGUgRGxsU3RydWN0R2V0RGF0YSBEbGxTdHJ1Y3RHZXRQdHIgRGxsU3RydWN0R2V0U2l6ZSBEbGxTdHJ1Y3RTZXREYXRhIERyaXZlR2V0RHJpdmUgRHJpdmVHZXRGaWxlU3lzdGVtIERyaXZlR2V0TGFiZWwgRHJpdmVHZXRTZXJpYWwgRHJpdmVHZXRUeXBlIERyaXZlTWFwQWRkIERyaXZlTWFwRGVsIERyaXZlTWFwR2V0IERyaXZlU2V0TGFiZWwgRHJpdmVTcGFjZUZyZWUgRHJpdmVTcGFjZVRvdGFsIERyaXZlU3RhdHVzIEVudkdldCBFbnZTZXQgRW52VXBkYXRlIEV2YWwgRXhlY3V0ZSBFeHAgRmlsZUNoYW5nZURpciBGaWxlQ2xvc2UgRmlsZUNvcHkgRmlsZUNyZWF0ZU5URlNMaW5rIEZpbGVDcmVhdGVTaG9ydGN1dCBGaWxlRGVsZXRlIEZpbGVFeGlzdHMgRmlsZUZpbmRGaXJzdEZpbGUgRmlsZUZpbmROZXh0RmlsZSBGaWxlRmx1c2ggRmlsZUdldEF0dHJpYiBGaWxlR2V0RW5jb2RpbmcgRmlsZUdldExvbmdOYW1lIEZpbGVHZXRQb3MgRmlsZUdldFNob3J0Y3V0IEZpbGVHZXRTaG9ydE5hbWUgRmlsZUdldFNpemUgRmlsZUdldFRpbWUgRmlsZUdldFZlcnNpb24gRmlsZUluc3RhbGwgRmlsZU1vdmUgRmlsZU9wZW4gRmlsZU9wZW5EaWFsb2cgRmlsZVJlYWQgRmlsZVJlYWRMaW5lIEZpbGVSZWFkVG9BcnJheSBGaWxlUmVjeWNsZSBGaWxlUmVjeWNsZUVtcHR5IEZpbGVTYXZlRGlhbG9nIEZpbGVTZWxlY3RGb2xkZXIgRmlsZVNldEF0dHJpYiBGaWxlU2V0RW5kIEZpbGVTZXRQb3MgRmlsZVNldFRpbWUgRmlsZVdyaXRlIEZpbGVXcml0ZUxpbmUgRmxvb3IgRnRwU2V0UHJveHkgRnVuY05hbWUgR1VJQ3JlYXRlIEdVSUN0cmxDcmVhdGVBdmkgR1VJQ3RybENyZWF0ZUJ1dHRvbiBHVUlDdHJsQ3JlYXRlQ2hlY2tib3ggR1VJQ3RybENyZWF0ZUNvbWJvIEdVSUN0cmxDcmVhdGVDb250ZXh0TWVudSBHVUlDdHJsQ3JlYXRlRGF0ZSBHVUlDdHJsQ3JlYXRlRHVtbXkgR1VJQ3RybENyZWF0ZUVkaXQgR1VJQ3RybENyZWF0ZUdyYXBoaWMgR1VJQ3RybENyZWF0ZUdyb3VwIEdVSUN0cmxDcmVhdGVJY29uIEdVSUN0cmxDcmVhdGVJbnB1dCBHVUlDdHJsQ3JlYXRlTGFiZWwgR1VJQ3RybENyZWF0ZUxpc3QgR1VJQ3RybENyZWF0ZUxpc3RWaWV3IEdVSUN0cmxDcmVhdGVMaXN0Vmlld0l0ZW0gR1VJQ3RybENyZWF0ZU1lbnUgR1VJQ3RybENyZWF0ZU1lbnVJdGVtIEdVSUN0cmxDcmVhdGVNb250aENhbCBHVUlDdHJsQ3JlYXRlT2JqIEdVSUN0cmxDcmVhdGVQaWMgR1VJQ3RybENyZWF0ZVByb2dyZXNzIEdVSUN0cmxDcmVhdGVSYWRpbyBHVUlDdHJsQ3JlYXRlU2xpZGVyIEdVSUN0cmxDcmVhdGVUYWIgR1VJQ3RybENyZWF0ZVRhYkl0ZW0gR1VJQ3RybENyZWF0ZVRyZWVWaWV3IEdVSUN0cmxDcmVhdGVUcmVlVmlld0l0ZW0gR1VJQ3RybENyZWF0ZVVwZG93biBHVUlDdHJsRGVsZXRlIEdVSUN0cmxHZXRIYW5kbGUgR1VJQ3RybEdldFN0YXRlIEdVSUN0cmxSZWFkIEdVSUN0cmxSZWN2TXNnIEdVSUN0cmxSZWdpc3Rlckxpc3RWaWV3U29ydCBHVUlDdHJsU2VuZE1zZyBHVUlDdHJsU2VuZFRvRHVtbXkgR1VJQ3RybFNldEJrQ29sb3IgR1VJQ3RybFNldENvbG9yIEdVSUN0cmxTZXRDdXJzb3IgR1VJQ3RybFNldERhdGEgR1VJQ3RybFNldERlZkJrQ29sb3IgR1VJQ3RybFNldERlZkNvbG9yIEdVSUN0cmxTZXRGb250IEdVSUN0cmxTZXRHcmFwaGljIEdVSUN0cmxTZXRJbWFnZSBHVUlDdHJsU2V0TGltaXQgR1VJQ3RybFNldE9uRXZlbnQgR1VJQ3RybFNldFBvcyBHVUlDdHJsU2V0UmVzaXppbmcgR1VJQ3RybFNldFN0YXRlIEdVSUN0cmxTZXRTdHlsZSBHVUlDdHJsU2V0VGlwIEdVSURlbGV0ZSBHVUlHZXRDdXJzb3JJbmZvIEdVSUdldE1zZyBHVUlHZXRTdHlsZSBHVUlSZWdpc3Rlck1zZyBHVUlTZXRBY2NlbGVyYXRvcnMgR1VJU2V0QmtDb2xvciBHVUlTZXRDb29yZCBHVUlTZXRDdXJzb3IgR1VJU2V0Rm9udCBHVUlTZXRIZWxwIEdVSVNldEljb24gR1VJU2V0T25FdmVudCBHVUlTZXRTdGF0ZSBHVUlTZXRTdHlsZSBHVUlTdGFydEdyb3VwIEdVSVN3aXRjaCBIZXggSG90S2V5U2V0IEh0dHBTZXRQcm94eSBIdHRwU2V0VXNlckFnZW50IEhXbmQgSW5ldENsb3NlIEluZXRHZXQgSW5ldEdldEluZm8gSW5ldEdldFNpemUgSW5ldFJlYWQgSW5pRGVsZXRlIEluaVJlYWQgSW5pUmVhZFNlY3Rpb24gSW5pUmVhZFNlY3Rpb25OYW1lcyBJbmlSZW5hbWVTZWN0aW9uIEluaVdyaXRlIEluaVdyaXRlU2VjdGlvbiBJbnB1dEJveCBJbnQgSXNBZG1pbiBJc0FycmF5IElzQmluYXJ5IElzQm9vbCBJc0RlY2xhcmVkIElzRGxsU3RydWN0IElzRmxvYXQgSXNGdW5jIElzSFduZCBJc0ludCBJc0tleXdvcmQgSXNOdW1iZXIgSXNPYmogSXNQdHIgSXNTdHJpbmcgTG9nIE1lbUdldFN0YXRzIE1vZCBNb3VzZUNsaWNrIE1vdXNlQ2xpY2tEcmFnIE1vdXNlRG93biBNb3VzZUdldEN1cnNvciBNb3VzZUdldFBvcyBNb3VzZU1vdmUgTW91c2VVcCBNb3VzZVdoZWVsIE1zZ0JveCBOdW1iZXIgT2JqQ3JlYXRlIE9iakNyZWF0ZUludGVyZmFjZSBPYmpFdmVudCBPYmpHZXQgT2JqTmFtZSBPbkF1dG9JdEV4aXRSZWdpc3RlciBPbkF1dG9JdEV4aXRVblJlZ2lzdGVyIFBpbmcgUGl4ZWxDaGVja3N1bSBQaXhlbEdldENvbG9yIFBpeGVsU2VhcmNoIFByb2Nlc3NDbG9zZSBQcm9jZXNzRXhpc3RzIFByb2Nlc3NHZXRTdGF0cyBQcm9jZXNzTGlzdCBQcm9jZXNzU2V0UHJpb3JpdHkgUHJvY2Vzc1dhaXQgUHJvY2Vzc1dhaXRDbG9zZSBQcm9ncmVzc09mZiBQcm9ncmVzc09uIFByb2dyZXNzU2V0IFB0ciBSYW5kb20gUmVnRGVsZXRlIFJlZ0VudW1LZXkgUmVnRW51bVZhbCBSZWdSZWFkIFJlZ1dyaXRlIFJvdW5kIFJ1biBSdW5BcyBSdW5Bc1dhaXQgUnVuV2FpdCBTZW5kIFNlbmRLZWVwQWN0aXZlIFNldEVycm9yIFNldEV4dGVuZGVkIFNoZWxsRXhlY3V0ZSBTaGVsbEV4ZWN1dGVXYWl0IFNodXRkb3duIFNpbiBTbGVlcCBTb3VuZFBsYXkgU291bmRTZXRXYXZlVm9sdW1lIFNwbGFzaEltYWdlT24gU3BsYXNoT2ZmIFNwbGFzaFRleHRPbiBTcXJ0IFNSYW5kb20gU3RhdHVzYmFyR2V0VGV4dCBTdGRlcnJSZWFkIFN0ZGluV3JpdGUgU3RkaW9DbG9zZSBTdGRvdXRSZWFkIFN0cmluZyBTdHJpbmdBZGRDUiBTdHJpbmdDb21wYXJlIFN0cmluZ0Zvcm1hdCBTdHJpbmdGcm9tQVNDSUlBcnJheSBTdHJpbmdJblN0ciBTdHJpbmdJc0FsTnVtIFN0cmluZ0lzQWxwaGEgU3RyaW5nSXNBU0NJSSBTdHJpbmdJc0RpZ2l0IFN0cmluZ0lzRmxvYXQgU3RyaW5nSXNJbnQgU3RyaW5nSXNMb3dlciBTdHJpbmdJc1NwYWNlIFN0cmluZ0lzVXBwZXIgU3RyaW5nSXNYRGlnaXQgU3RyaW5nTGVmdCBTdHJpbmdMZW4gU3RyaW5nTG93ZXIgU3RyaW5nTWlkIFN0cmluZ1JlZ0V4cCBTdHJpbmdSZWdFeHBSZXBsYWNlIFN0cmluZ1JlcGxhY2UgU3RyaW5nUmV2ZXJzZSBTdHJpbmdSaWdodCBTdHJpbmdTcGxpdCBTdHJpbmdTdHJpcENSIFN0cmluZ1N0cmlwV1MgU3RyaW5nVG9BU0NJSUFycmF5IFN0cmluZ1RvQmluYXJ5IFN0cmluZ1RyaW1MZWZ0IFN0cmluZ1RyaW1SaWdodCBTdHJpbmdVcHBlciBUYW4gVENQQWNjZXB0IFRDUENsb3NlU29ja2V0IFRDUENvbm5lY3QgVENQTGlzdGVuIFRDUE5hbWVUb0lQIFRDUFJlY3YgVENQU2VuZCBUQ1BTaHV0ZG93biwgVURQU2h1dGRvd24gVENQU3RhcnR1cCwgVURQU3RhcnR1cCBUaW1lckRpZmYgVGltZXJJbml0IFRvb2xUaXAgVHJheUNyZWF0ZUl0ZW0gVHJheUNyZWF0ZU1lbnUgVHJheUdldE1zZyBUcmF5SXRlbURlbGV0ZSBUcmF5SXRlbUdldEhhbmRsZSBUcmF5SXRlbUdldFN0YXRlIFRyYXlJdGVtR2V0VGV4dCBUcmF5SXRlbVNldE9uRXZlbnQgVHJheUl0ZW1TZXRTdGF0ZSBUcmF5SXRlbVNldFRleHQgVHJheVNldENsaWNrIFRyYXlTZXRJY29uIFRyYXlTZXRPbkV2ZW50IFRyYXlTZXRQYXVzZUljb24gVHJheVNldFN0YXRlIFRyYXlTZXRUb29sVGlwIFRyYXlUaXAgVUJvdW5kIFVEUEJpbmQgVURQQ2xvc2VTb2NrZXQgVURQT3BlbiBVRFBSZWN2IFVEUFNlbmQgVmFyR2V0VHlwZSBXaW5BY3RpdmF0ZSBXaW5BY3RpdmUgV2luQ2xvc2UgV2luRXhpc3RzIFdpbkZsYXNoIFdpbkdldENhcmV0UG9zIFdpbkdldENsYXNzTGlzdCBXaW5HZXRDbGllbnRTaXplIFdpbkdldEhhbmRsZSBXaW5HZXRQb3MgV2luR2V0UHJvY2VzcyBXaW5HZXRTdGF0ZSBXaW5HZXRUZXh0IFdpbkdldFRpdGxlIFdpbktpbGwgV2luTGlzdCBXaW5NZW51U2VsZWN0SXRlbSBXaW5NaW5pbWl6ZUFsbCBXaW5NaW5pbWl6ZUFsbFVuZG8gV2luTW92ZSBXaW5TZXRPblRvcCBXaW5TZXRTdGF0ZSBXaW5TZXRUaXRsZSBXaW5TZXRUcmFucyBXaW5XYWl0JyxcblxuICAgICAgICBDT01NRU5UID0ge1xuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnI2NzJywgJyNjZScpLFxuICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJyNjb21tZW50cy1zdGFydCcsICcjY29tbWVudHMtZW5kJylcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBWQVJJQUJMRSA9IHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRbQS16MC05X10rJ1xuICAgICAgICB9LFxuXG4gICAgICAgIFNUUklORyA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW3tcbiAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XVxuICAgICAgICB9LFxuXG4gICAgICAgIE5VTUJFUiA9IHtcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV1cbiAgICAgICAgfSxcblxuICAgICAgICBQUkVQUk9DRVNTT1IgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiAnIycsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdjb21tZW50cyBpbmNsdWRlIGluY2x1ZGUtb25jZSBOb1RyYXlJY29uIE9uQXV0b0l0U3RhcnRSZWdpc3RlciBwcmFnbWEgY29tcGlsZSBSZXF1aXJlQWRtaW4nfSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcXFxcXG4vLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudHM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogJz4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogLycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICAgIENPTU1FTlRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICBDT05TVEFOVCA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAvLyBiZWdpbjogJ0AnLFxuICAgICAgICAgICAgLy8gZW5kOiAnJCcsXG4gICAgICAgICAgICAvLyBrZXl3b3JkczogJ0FwcERhdGFDb21tb25EaXIgQXBwRGF0YURpciBBdXRvSXRFeGUgQXV0b0l0UElEIEF1dG9JdFZlcnNpb24gQXV0b0l0WDY0IENPTV9FdmVudE9iaiBDb21tb25GaWxlc0RpciBDb21waWxlZCBDb21wdXRlck5hbWUgQ29tU3BlYyBDUFVBcmNoIENSIENSTEYgRGVza3RvcENvbW1vbkRpciBEZXNrdG9wRGVwdGggRGVza3RvcERpciBEZXNrdG9wSGVpZ2h0IERlc2t0b3BSZWZyZXNoIERlc2t0b3BXaWR0aCBEb2N1bWVudHNDb21tb25EaXIgZXJyb3IgZXhpdENvZGUgZXhpdE1ldGhvZCBleHRlbmRlZCBGYXZvcml0ZXNDb21tb25EaXIgRmF2b3JpdGVzRGlyIEdVSV9DdHJsSGFuZGxlIEdVSV9DdHJsSWQgR1VJX0RyYWdGaWxlIEdVSV9EcmFnSWQgR1VJX0Ryb3BJZCBHVUlfV2luSGFuZGxlIEhvbWVEcml2ZSBIb21lUGF0aCBIb21lU2hhcmUgSG90S2V5UHJlc3NlZCBIT1VSIElQQWRkcmVzczEgSVBBZGRyZXNzMiBJUEFkZHJlc3MzIElQQWRkcmVzczQgS0JMYXlvdXQgTEYgTG9jYWxBcHBEYXRhRGlyIExvZ29uRE5TRG9tYWluIExvZ29uRG9tYWluIExvZ29uU2VydmVyIE1EQVkgTUlOIE1PTiBNU0VDIE1VSUxhbmcgTXlEb2N1bWVudHNEaXIgTnVtUGFyYW1zIE9TQXJjaCBPU0J1aWxkIE9TTGFuZyBPU1NlcnZpY2VQYWNrIE9TVHlwZSBPU1ZlcnNpb24gUHJvZ3JhbUZpbGVzRGlyIFByb2dyYW1zQ29tbW9uRGlyIFByb2dyYW1zRGlyIFNjcmlwdERpciBTY3JpcHRGdWxsUGF0aCBTY3JpcHRMaW5lTnVtYmVyIFNjcmlwdE5hbWUgU0VDIFN0YXJ0TWVudUNvbW1vbkRpciBTdGFydE1lbnVEaXIgU3RhcnR1cENvbW1vbkRpciBTdGFydHVwRGlyIFNXX0RJU0FCTEUgU1dfRU5BQkxFIFNXX0hJREUgU1dfTE9DSyBTV19NQVhJTUlaRSBTV19NSU5JTUlaRSBTV19SRVNUT1JFIFNXX1NIT1cgU1dfU0hPV0RFRkFVTFQgU1dfU0hPV01BWElNSVpFRCBTV19TSE9XTUlOSU1JWkVEIFNXX1NIT1dNSU5OT0FDVElWRSBTV19TSE9XTkEgU1dfU0hPV05PQUNUSVZBVEUgU1dfU0hPV05PUk1BTCBTV19VTkxPQ0sgU3lzdGVtRGlyIFRBQiBUZW1wRGlyIFRSQVlfSUQgVHJheUljb25GbGFzaGluZyBUcmF5SWNvblZpc2libGUgVXNlck5hbWUgVXNlclByb2ZpbGVEaXIgV0RBWSBXaW5kb3dzRGlyIFdvcmtpbmdEaXIgWURBWSBZRUFSJyxcbiAgICAgICAgICAgIC8vIHJlbGV2YW5jZTogNVxuICAgICAgICAgICAgYmVnaW46ICdAW0EtejAtOV9dKydcbiAgICAgICAgfSxcblxuICAgICAgICBGVU5DVElPTiA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdGdW5jJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICAgICAgICBidWlsdF9pbjogQlVJTFRfSU4sXG4gICAgICAgICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDT01NRU5ULFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICAgICAgICBDT05TVEFOVCxcbiAgICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1xcXFwuPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvKiBtbmVtb25pYyAqL1xuICAgICAgICAnYWRjIGFkZCBhZGl3IGFuZCBhbmRpIGFzciBiY2xyIGJsZCBicmJjIGJyYnMgYnJjYyBicmNzIGJyZWFrIGJyZXEgYnJnZSBicmhjIGJyaHMgJyArXG4gICAgICAgICdicmlkIGJyaWUgYnJsbyBicmx0IGJybWkgYnJuZSBicnBsIGJyc2ggYnJ0YyBicnRzIGJydmMgYnJ2cyBic2V0IGJzdCBjYWxsIGNiaSBjYnIgJyArXG4gICAgICAgICdjbGMgY2xoIGNsaSBjbG4gY2xyIGNscyBjbHQgY2x2IGNseiBjb20gY3AgY3BjIGNwaSBjcHNlIGRlYyBlaWNhbGwgZWlqbXAgZWxwbSBlb3IgJyArXG4gICAgICAgICdmbXVsIGZtdWxzIGZtdWxzdSBpY2FsbCBpam1wIGluIGluYyBqbXAgbGQgbGRkIGxkaSBsZHMgbHBtIGxzbCBsc3IgbW92IG1vdncgbXVsICcgK1xuICAgICAgICAnbXVscyBtdWxzdSBuZWcgbm9wIG9yIG9yaSBvdXQgcG9wIHB1c2ggcmNhbGwgcmV0IHJldGkgcmptcCByb2wgcm9yIHNiYyBzYnIgc2JyYyBzYnJzICcgK1xuICAgICAgICAnc2VjIHNlaCBzYmkgc2JjaSBzYmljIHNiaXMgc2JpdyBzZWkgc2VuIHNlciBzZXMgc2V0IHNldiBzZXogc2xlZXAgc3BtIHN0IHN0ZCBzdHMgc3ViICcgK1xuICAgICAgICAnc3ViaSBzd2FwIHRzdCB3ZHInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8qIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgKi9cbiAgICAgICAgJ3IwIHIxIHIyIHIzIHI0IHI1IHI2IHI3IHI4IHI5IHIxMCByMTEgcjEyIHIxMyByMTQgcjE1IHIxNiByMTcgcjE4IHIxOSByMjAgcjIxIHIyMiAnICtcbiAgICAgICAgJ3IyMyByMjQgcjI1IHIyNiByMjcgcjI4IHIyOSByMzAgcjMxIHh8MCB4aCB4bCB5fDAgeWggeWwgenwwIHpoIHpsICcgK1xuICAgICAgICAvKiBJTyBSZWdpc3RlcnMgKEFUTWVnYTEyOCkgKi9cbiAgICAgICAgJ3Vjc3IxYyB1ZHIxIHVjc3IxYSB1Y3NyMWIgdWJycjFsIHVicnIxaCB1Y3NyMGMgdWJycjBoIHRjY3IzYyB0Y2NyM2EgdGNjcjNiIHRjbnQzaCAnICtcbiAgICAgICAgJ3RjbnQzbCBvY3IzYWggb2NyM2FsIG9jcjNiaCBvY3IzYmwgb2NyM2NoIG9jcjNjbCBpY3IzaCBpY3IzbCBldGltc2sgZXRpZnIgdGNjcjFjICcgK1xuICAgICAgICAnb2NyMWNoIG9jcjFjbCB0d2NyIHR3ZHIgdHdhciB0d3NyIHR3YnIgb3NjY2FsIHhtY3JhIHhtY3JiIGVpY3JhIHNwbWNzciBzcG1jciBwb3J0ZyAnICtcbiAgICAgICAgJ2RkcmcgcGluZyBwb3J0ZiBkZHJmIHNyZWcgc3BoIHNwbCB4ZGl2IHJhbXB6IGVpY3JiIGVpbXNrIGdpbXNrIGdpY3IgZWlmciBnaWZyIHRpbXNrICcgK1xuICAgICAgICAndGlmciBtY3VjciBtY3Vjc3IgdGNjcjAgdGNudDAgb2NyMCBhc3NyIHRjY3IxYSB0Y2NyMWIgdGNudDFoIHRjbnQxbCBvY3IxYWggb2NyMWFsICcgK1xuICAgICAgICAnb2NyMWJoIG9jcjFibCBpY3IxaCBpY3IxbCB0Y2NyMiB0Y250MiBvY3IyIG9jZHIgd2R0Y3Igc2Zpb3IgZWVhcmggZWVhcmwgZWVkciBlZWNyICcgK1xuICAgICAgICAncG9ydGEgZGRyYSBwaW5hIHBvcnRiIGRkcmIgcGluYiBwb3J0YyBkZHJjIHBpbmMgcG9ydGQgZGRyZCBwaW5kIHNwZHIgc3BzciBzcGNyIHVkcjAgJyArXG4gICAgICAgICd1Y3NyMGEgdWNzcjBiIHVicnIwbCBhY3NyIGFkbXV4IGFkY3NyIGFkY2ggYWRjbCBwb3J0ZSBkZHJlIHBpbmUgcGluZicsXG4gICAgICBtZXRhOlxuICAgICAgICAnLmJ5dGUgLmNzZWcgLmRiIC5kZWYgLmRldmljZSAuZHNlZyAuZHcgLmVuZG1hY3JvIC5lcXUgLmVzZWcgLmV4aXQgLmluY2x1ZGUgLmxpc3QgJyArXG4gICAgICAgICcubGlzdG1hYyAubWFjcm8gLm5vbGlzdCAub3JnIC5zZXQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSwgLy8gMHguLi4sIGRlY2ltYWwsIGZsb2F0XG4gICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgLy8gMGIuLi5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcJFthLXpBLVowLTldK3wwb1swLTddKyknIC8vICQuLi4sIDBvLi4uXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgIH0sXG4gICAgICB7Y2xhc3NOYW1lOiAnc3ltYm9sJywgIGJlZ2luOiAnXltBLVphLXowLTlfLiRdKzonfSxcbiAgICAgIHtjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICcjJywgZW5kOiAnJCd9LFxuICAgICAgeyAgLy8gc3Vic3RpdHV0aW9uIHdpdGhpbiBhIG1hY3JvXG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICdAWzAtOV0rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL30sXG4gICAgICB7YmVnaW46IC9cXCRcXHsoLio/KX0vfVxuICAgIF1cbiAgfTtcbiAgdmFyIEtFWVdPUkRTID0gJ0JFR0lOIEVORCBpZiBlbHNlIHdoaWxlIGRvIGZvciBpbiBicmVhayBjb250aW51ZSBkZWxldGUgbmV4dCBuZXh0ZmlsZSBmdW5jdGlvbiBmdW5jIGV4aXR8MTAnO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj8nJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/XCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG5cdCBrZXl3b3Jkczoge1xuXHQgICBrZXl3b3JkOiBLRVlXT1JEU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiAnZmFsc2UgaW50IGFic3RyYWN0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGZvciB0cnVlICcgK1xuICAgICAgJ3doaWxlIGxvbmcgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZmluYWwgcmV0dXJuIHZvaWQgZW51bSBlbHNlICcgK1xuICAgICAgJ2JyZWFrIG5ldyBjYXRjaCBieXRlIHN1cGVyIGNhc2Ugc2hvcnQgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCAnICtcbiAgICAgICdjb250aW51ZSByZXZlcnNlIGZpcnN0ZmFzdCBmaXJzdG9ubHkgZm9ydXBkYXRlIG5vZmV0Y2ggc3VtIGF2ZyBtaW5vZiBtYXhvZiBjb3VudCAnICtcbiAgICAgICdvcmRlciBncm91cCBieSBhc2MgZGVzYyBpbmRleCBoaW50IGxpa2UgZGlzcGFseSBlZGl0IGNsaWVudCBzZXJ2ZXIgdHRzYmVnaW4gJyArXG4gICAgICAndHRzY29tbWl0IHN0ciByZWFsIGRhdGUgY29udGFpbmVyIGFueXR5cGUgY29tbW9uIGRpdiBtb2QnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBFU0NBUEVEX1FVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgYmVnaW46IC9cXFxcXCIvXG5cbiAgfTtcbiAgdmFyIEFQT1NfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc2gnLCAnenNoJ10sXG4gICAgbGV4ZW1lczogL1xcYi0/W2EtelxcLl9dK1xcYi8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24nLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIFNoZWxsIGJ1aWx0LWluc1xuICAgICAgICAvLyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9tYW51YWwvaHRtbF9ub2RlL1NoZWxsLUJ1aWx0aW4tQ29tbWFuZHMuaHRtbFxuICAgICAgICAnYnJlYWsgY2QgY29udGludWUgZXZhbCBleGVjIGV4aXQgZXhwb3J0IGdldG9wdHMgaGFzaCBwd2QgcmVhZG9ubHkgcmV0dXJuIHNoaWZ0IHRlc3QgdGltZXMgJyArXG4gICAgICAgICd0cmFwIHVtYXNrIHVuc2V0ICcgK1xuICAgICAgICAvLyBCYXNoIGJ1aWx0LWluc1xuICAgICAgICAnYWxpYXMgYmluZCBidWlsdGluIGNhbGxlciBjb21tYW5kIGRlY2xhcmUgZWNobyBlbmFibGUgaGVscCBsZXQgbG9jYWwgbG9nb3V0IG1hcGZpbGUgcHJpbnRmICcgK1xuICAgICAgICAncmVhZCByZWFkYXJyYXkgc291cmNlIHR5cGUgdHlwZXNldCB1bGltaXQgdW5hbGlhcyAnICtcbiAgICAgICAgLy8gU2hlbGwgbW9kaWZpZXJzXG4gICAgICAgICdzZXQgc2hvcHQgJyArXG4gICAgICAgIC8vIFpzaCBidWlsdC1pbnNcbiAgICAgICAgJ2F1dG9sb2FkIGJnIGJpbmRrZXkgYnllIGNhcCBjaGRpciBjbG9uZSBjb21wYXJndW1lbnRzIGNvbXBjYWxsIGNvbXBjdGwgY29tcGRlc2NyaWJlIGNvbXBmaWxlcyAnICtcbiAgICAgICAgJ2NvbXBncm91cHMgY29tcHF1b3RlIGNvbXB0YWdzIGNvbXB0cnkgY29tcHZhbHVlcyBkaXJzIGRpc2FibGUgZGlzb3duIGVjaG90YyBlY2hvdGkgZW11bGF0ZSAnICtcbiAgICAgICAgJ2ZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgJyArXG4gICAgICAgICdwdXNoZCBwdXNobG4gcmVoYXNoIHNjaGVkIHNldGNhcCBzZXRvcHQgc3RhdCBzdXNwZW5kIHR0eWN0bCB1bmZ1bmN0aW9uIHVuaGFzaCB1bmxpbWl0ICcgK1xuICAgICAgICAndW5zZXRvcHQgdmFyZWQgd2FpdCB3aGVuY2Ugd2hlcmUgd2hpY2ggemNvbXBpbGUgemZvcm1hdCB6ZnRwIHpsZSB6bW9kbG9hZCB6cGFyc2VvcHRzIHpwcm9mICcgK1xuICAgICAgICAnenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwJyxcbiAgICAgIF86XG4gICAgICAgICctbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEnIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eIyFbXlxcbl0rc2hcXHMqJC8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9cXHdbXFx3XFxkX10qXFxzKlxcKFxccypcXClcXHMqXFx7LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvXFx3W1xcd1xcZF9dKi99KV0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBFU0NBUEVEX1FVT1RFLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogJ15cXC4nLFxuICAgIC8vIFN1cHBvcnQgZXhwbGljaXRlbHkgdHlwZWQgdmFyaWFibGVzIHRoYXQgZW5kIHdpdGggJCUhIG9yICMuXG4gICAgbGV4ZW1lczogJ1thLXpBLVpdW2EtekEtWjAtOV9cXCRcXCVcXCFcXCNdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAnQUJTIEFTQyBBTkQgQVROIEFVVE98MCBCRUVQIEJMT0FEfDEwIEJTQVZFfDEwIENBTEwgQ0FMTFMgQ0RCTCBDSEFJTiBDSERJUiBDSFIkfDEwIENJTlQgQ0lSQ0xFICcgK1xuICAgICAgICAgICdDTEVBUiBDTE9TRSBDTFMgQ09MT1IgQ09NIENPTU1PTiBDT05UIENPUyBDU05HIENTUkxJTiBDVkQgQ1ZJIENWUyBEQVRBIERBVEUkICcgK1xuICAgICAgICAgICdERUZEQkwgREVGSU5UIERFRlNORyBERUZTVFIgREVGfDAgU0VHIFVTUiBERUxFVEUgRElNIERSQVcgRURJVCBFTkQgRU5WSVJPTiBFTlZJUk9OJCAnICtcbiAgICAgICAgICAnRU9GIEVRViBFUkFTRSBFUkRFViBFUkRFViQgRVJMIEVSUiBFUlJPUiBFWFAgRklFTEQgRklMRVMgRklYIEZPUnwwIEZSRSBHRVQgR09TVUJ8MTAgR09UTyAnICtcbiAgICAgICAgICAnSEVYJCBJRiBUSEVOIEVMU0V8MCBJTktFWSQgSU5QIElOUFVUIElOUFVUIyBJTlBVVCQgSU5TVFIgSU1QIElOVCBJT0NUTCBJT0NUTCQgS0VZIE9OICcgK1xuICAgICAgICAgICdPRkYgTElTVCBLSUxMIExFRlQkIExFTiBMRVQgTElORSBMTElTVCBMT0FEIExPQyBMT0NBVEUgTE9GIExPRyBMUFJJTlQgVVNJTkcgTFNFVCAnICtcbiAgICAgICAgICAnTUVSR0UgTUlEJCBNS0RJUiBNS0QkIE1LSSQgTUtTJCBNT0QgTkFNRSBORVcgTkVYVCBOT0lTRSBOT1QgT0NUJCBPTiBPUiBQRU4gUExBWSBTVFJJRyBPUEVOIE9QVElPTiAnICtcbiAgICAgICAgICAnQkFTRSBPVVQgUEFJTlQgUEFMRVRURSBQQ09QWSBQRUVLIFBNQVAgUE9JTlQgUE9LRSBQT1MgUFJJTlQgUFJJTlRdIFBTRVQgUFJFU0VUICcgK1xuICAgICAgICAgICdQVVQgUkFORE9NSVpFIFJFQUQgUkVNIFJFTlVNIFJFU0VUfDAgUkVTVE9SRSBSRVNVTUUgUkVUVVJOfDAgUklHSFQkIFJNRElSIFJORCBSU0VUICcgK1xuICAgICAgICAgICdSVU4gU0FWRSBTQ1JFRU4gU0dOIFNIRUxMIFNJTiBTT1VORCBTUEFDRSQgU1BDIFNRUiBTVEVQIFNUSUNLIFNUT1AgU1RSJCBTVFJJTkckIFNXQVAgJyArXG4gICAgICAgICAgJ1NZU1RFTSBUQUIgVEFOIFRJTUUkIFRJTUVSIFRST0ZGIFRST04gVE8gVVNSIFZBTCBWQVJQVFIgVkFSUFRSJCBWSUVXIFdBSVQgV0hJTEUgJyArXG4gICAgICAgICAgJ1dFTkQgV0lEVEggV0lORE9XIFdSSVRFIFhPUidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdSRU0nLCAnJCcsIHtyZWxldmFuY2U6IDEwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcJycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBsaW5lIG51bWJlcnNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeWzAtOV0rXFwgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggdHlwZWQgbnVtZXJpYyBjb25zdGFudHMgKDEwMDAsIDEyLjM0ISwgMS4yZTUsIDEuNSMsIDEuMkQyKVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFswLTldK1swLTllZEVEXFwuXSpbI1xcIV0/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggaGV4YWRlY2ltYWwgbnVtYmVycyAoJkh4eHh4KVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJyhcXCZbaEhdWzAtOWEtZkEtRl17MSw0fSknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBNYXRjaCBvY3RhbCBudW1iZXJzICgmT3h4eHh4eClcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoXFwmW29PXVswLTddezEsNn0pJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgLy8gQXR0cmlidXRlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz4vXG4gICAgICB9LFxuICAgICAgLy8gU3BlY2lmaWNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oj0vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAnW1xcXFwrXFxcXC1dJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JmJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1teXFxcXFtcXFxcXVxcXFwuLFxcXFwrXFxcXC08PiBcXHJcXG5dJyxcbiAgICAgICAgJ1tcXFxcW1xcXFxdXFxcXC4sXFxcXCtcXFxcLTw+IFxcclxcbl0nLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnW1xcXFxbXFxcXF1dJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcLixdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIG1vZGUgd29ya3MgYXMgdGhlIG9ubHkgcmVsZXZhbmNlIGNvdW50ZXJcbiAgICAgICAgYmVnaW46IC8oPzpcXCtcXCt8XFwtXFwtKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbTElURVJBTF1cbiAgICAgIH0sXG4gICAgICBMSVRFUkFMXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZGl2IG1vZCBpbiBhbmQgb3Igbm90IHhvciBhc3NlcnRlcnJvciBiZWdpbiBjYXNlIGRvIGRvd250byBlbHNlIGVuZCBleGl0IGZvciBpZiBvZiByZXBlYXQgdGhlbiB0byAnICtcbiAgICAndW50aWwgd2hpbGUgd2l0aCB2YXInO1xuICB2YXIgTElURVJBTFMgPSAnZmFsc2UgdHJ1ZSc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAvXFx7LyxcbiAgICAgIC9cXH0vLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgIC9cXChcXCovLFxuICAgICAgL1xcKlxcKS8sXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICBjb250YWluczogW3tiZWdpbjogLycnL31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogLygjXFxkKykrL1xuICB9O1xuICB2YXIgREFURSA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oRFR8RHxUKScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIERCTF9RVU9URURfVkFSSUFCTEUgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBub3QgYSBzdHJpbmcgdGVjaG5pY2FsbHkgYnV0IG1ha2VzIHNlbnNlIHRvIGJlIGhpZ2hsaWdodGVkIGluIHRoZSBzYW1lIHN0eWxlXG4gICAgICBiZWdpbjogJ1wiJyxcbiAgICAgIGVuZDogJ1wiJ1xuICB9O1xuXG4gIHZhciBQUk9DRURVUkUgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ3Byb2NlZHVyZXwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklOR11cbiAgICAgIH1cbiAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xuXG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAnT0JKRUNUIChUYWJsZXxGb3JtfFJlcG9ydHxEYXRhcG9ydHxDb2RldW5pdHxYTUxwb3J0fE1lbnVTdWl0ZXxQYWdlfFF1ZXJ5KSAoXFxcXGQrKSAoW15cXFxcclxcXFxuXSspJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6IEtFWVdPUkRTLCBsaXRlcmFsOiBMSVRFUkFMUyB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgREFURSwgREJMX1FVT1RFRF9WQVJJQUJMRSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBPQkpFQ1QsXG4gICAgICBQUk9DRURVUkVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2FwbnAnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3N0cnVjdCBlbnVtIGludGVyZmFjZSB1bmlvbiBncm91cCBpbXBvcnQgdXNpbmcgY29uc3QgYW5ub3RhdGlvbiBleHRlbmRzIGluIG9mIG9uIGFzIHdpdGggZnJvbSBmaXhlZCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ1ZvaWQgQm9vbCBJbnQ4IEludDE2IEludDMyIEludDY0IFVJbnQ4IFVJbnQxNiBVSW50MzIgVUludDY0IEZsb2F0MzIgRmxvYXQ2NCAnICtcbiAgICAgICAgJ1RleHQgRGF0YSBBbnlQb2ludGVyIEFueVN0cnVjdCBDYXBhYmlsaXR5IExpc3QnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9AMHhbXFx3XFxkXXsxNn07LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvQFxcZCtcXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bScsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIDIuMy4gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2Fzc2VtYmx5IG1vZHVsZSBwYWNrYWdlIGltcG9ydCBhbGlhcyBjbGFzcyBpbnRlcmZhY2Ugb2JqZWN0IGdpdmVuIHZhbHVlICcgK1xuICAgICdhc3NpZ24gdm9pZCBmdW5jdGlvbiBuZXcgb2YgZXh0ZW5kcyBzYXRpc2ZpZXMgYWJzdHJhY3RzIGluIG91dCByZXR1cm4gJyArXG4gICAgJ2JyZWFrIGNvbnRpbnVlIHRocm93IGFzc2VydCBkeW5hbWljIGlmIGVsc2Ugc3dpdGNoIGNhc2UgZm9yIHdoaWxlIHRyeSAnICtcbiAgICAnY2F0Y2ggZmluYWxseSB0aGVuIGxldCB0aGlzIG91dGVyIHN1cGVyIGlzIGV4aXN0cyBub25lbXB0eSc7XG4gIC8vIDcuNC4xIERlY2xhcmF0aW9uIE1vZGlmaWVyc1xuICB2YXIgREVDTEFSQVRJT05fTU9ESUZJRVJTID1cbiAgICAnc2hhcmVkIGFic3RyYWN0IGZvcm1hbCBkZWZhdWx0IGFjdHVhbCB2YXJpYWJsZSBsYXRlIG5hdGl2ZSBkZXByZWNhdGVkJyArXG4gICAgJ2ZpbmFsIHNlYWxlZCBhbm5vdGF0aW9uIHN1cHByZXNzV2FybmluZ3Mgc21hbGwnO1xuICAvLyA3LjQuMiBEb2N1bWVudGF0aW9uXG4gIHZhciBET0NVTUVOVEFUSU9OID1cbiAgICAnZG9jIGJ5IGxpY2Vuc2Ugc2VlIHRocm93cyB0YWdnZWQnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLCBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgYmVnaW46IC9gYC8sIGVuZDogL2BgLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAge1xuICAgICAgLy8gdmVyYmF0aW0gc3RyaW5nXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHN0cmluZyBsaXRlcmFsIG9yIHRlbXBsYXRlXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgIGNvbnRhaW5zOiBbU1VCU1RdXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIixcbiAgICAgIGVuZDogXCInXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIG51bWVyaWMgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnI1swLTlhLWZBLUZfXSt8XFxcXCRbMDFfXSt8WzAtOV9dKyg/OlxcXFwuWzAtOV9dKD86W2VFXVsrLV0/XFxcXGQrKT8pP1trTUdUUG11bnBmXT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTICsgJyAnICsgREVDTEFSQVRJT05fTU9ESUZJRVJTLFxuICAgICAgbWV0YTogRE9DVU1FTlRBVElPTlxuICAgIH0sXG4gICAgaWxsZWdhbDogJ1xcXFwkW14wMV18I1teMC05YS1mQS1GXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIHtcbiAgICAgICAgLy8gY29tcGlsZXIgYW5ub3RhdGlvblxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW2Etel1cXFxcdyooPzpcXFxcOlxcXCJbXlxcXCJdKlxcXCIpPydcbiAgICAgIH1cbiAgICBdLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbGVhbicsJ2ljbCcsJ2RjbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgbGV0IGluIHdpdGggd2hlcmUgY2FzZSBvZiBjbGFzcyBpbnN0YW5jZSBvdGhlcndpc2UgJyArXG4gICAgICAgICdpbXBsZW1lbnRhdGlvbiBkZWZpbml0aW9uIHN5c3RlbSBtb2R1bGUgZnJvbSBpbXBvcnQgcXVhbGlmaWVkIGFzICcgK1xuICAgICAgICAnc3BlY2lhbCBjb2RlIGlubGluZSBmb3JlaWduIGV4cG9ydCBjY2FsbCBzdGRjYWxsIGdlbmVyaWMgZGVyaXZlICcgK1xuICAgICAgICAnaW5maXggaW5maXhsIGluZml4cicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ0ludCBSZWFsIENoYXIgQm9vbCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnVHJ1ZSBGYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuXG4gICAgICB7YmVnaW46ICctPnw8LVt8Ol0/fCMhP3w+Pj18XFxcXHtcXFxcfHxcXFxcfFxcXFx9fDo9PXw9Onw8Pid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8gQ2xvanVyZSBrZXl3b3Jkc1xuICAgICAgJ2RlZiBkZWZvbmNlIGNvbmQgYXBwbHkgaWYtbm90IGlmLWxldCBpZiBub3Qgbm90PSA9IDwgPiA8PSA+PSA9PSArIC8gKiAtIHJlbSAnK1xuICAgICAgJ3F1b3QgbmVnPyBwb3M/IGRlbGF5PyBzeW1ib2w/IGtleXdvcmQ/IHRydWU/IGZhbHNlPyBpbnRlZ2VyPyBlbXB0eT8gY29sbD8gbGlzdD8gJytcbiAgICAgICdzZXQ/IGlmbj8gZm4/IGFzc29jaWF0aXZlPyBzZXF1ZW50aWFsPyBzb3J0ZWQ/IGNvdW50ZWQ/IHJldmVyc2libGU/IG51bWJlcj8gZGVjaW1hbD8gJytcbiAgICAgICdjbGFzcz8gZGlzdGluY3Q/IGlzYT8gZmxvYXQ/IHJhdGlvbmFsPyByZWR1Y2VkPyByYXRpbz8gb2RkPyBldmVuPyBjaGFyPyBzZXE/IHZlY3Rvcj8gJytcbiAgICAgICdzdHJpbmc/IG1hcD8gbmlsPyBjb250YWlucz8gemVybz8gaW5zdGFuY2U/IG5vdC1ldmVyeT8gbm90LWFueT8gbGlic3BlYz8gLT4gLT4+IC4uIC4gJytcbiAgICAgICdpbmMgY29tcGFyZSBkbyBkb3RpbWVzIG1hcGNhdCB0YWtlIHJlbW92ZSB0YWtlLXdoaWxlIGRyb3AgbGV0Zm4gZHJvcC1sYXN0IHRha2UtbGFzdCAnK1xuICAgICAgJ2Ryb3Atd2hpbGUgd2hpbGUgaW50ZXJuIGNvbmRwIGNhc2UgcmVkdWNlZCBjeWNsZSBzcGxpdC1hdCBzcGxpdC13aXRoIHJlcGVhdCByZXBsaWNhdGUgJytcbiAgICAgICdpdGVyYXRlIHJhbmdlIG1lcmdlIHppcG1hcCBkZWNsYXJlIGxpbmUtc2VxIHNvcnQgY29tcGFyYXRvciBzb3J0LWJ5IGRvcnVuIGRvYWxsIG50aG5leHQgJytcbiAgICAgICdudGhyZXN0IHBhcnRpdGlvbiBldmFsIGRvc2VxIGF3YWl0IGF3YWl0LWZvciBsZXQgYWdlbnQgYXRvbSBzZW5kIHNlbmQtb2ZmIHJlbGVhc2UtcGVuZGluZy1zZW5kcyAnK1xuICAgICAgJ2FkZC13YXRjaCBtYXB2IGZpbHRlcnYgcmVtb3ZlLXdhdGNoIGFnZW50LWVycm9yIHJlc3RhcnQtYWdlbnQgc2V0LWVycm9yLWhhbmRsZXIgZXJyb3ItaGFuZGxlciAnK1xuICAgICAgJ3NldC1lcnJvci1tb2RlISBlcnJvci1tb2RlIHNodXRkb3duLWFnZW50cyBxdW90ZSB2YXIgZm4gbG9vcCByZWN1ciB0aHJvdyB0cnkgbW9uaXRvci1lbnRlciAnK1xuICAgICAgJ21vbml0b3ItZXhpdCBkZWZtYWNybyBkZWZuIGRlZm4tIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kLTEgZm9yIGRvc3luYyBhbmQgb3IgJytcbiAgICAgICd3aGVuIHdoZW4tbm90IHdoZW4tbGV0IGNvbXAganV4dCBwYXJ0aWFsIHNlcXVlbmNlIG1lbW9pemUgY29uc3RhbnRseSBjb21wbGVtZW50IGlkZW50aXR5IGFzc2VydCAnK1xuICAgICAgJ3BlZWsgcG9wIGRvdG8gcHJveHkgZGVmc3RydWN0IGZpcnN0IHJlc3QgY29ucyBkZWZwcm90b2NvbCBjYXN0IGNvbGwgZGVmdHlwZSBkZWZyZWNvcmQgbGFzdCBidXRsYXN0ICcrXG4gICAgICAnc2lncyByZWlmeSBzZWNvbmQgZmZpcnN0IGZuZXh0IG5maXJzdCBubmV4dCBkZWZtdWx0aSBkZWZtZXRob2QgbWV0YSB3aXRoLW1ldGEgbnMgaW4tbnMgY3JlYXRlLW5zIGltcG9ydCAnK1xuICAgICAgJ3JlZmVyIGtleXMgc2VsZWN0LWtleXMgdmFscyBrZXkgdmFsIHJzZXEgbmFtZSBuYW1lc3BhY2UgcHJvbWlzZSBpbnRvIHRyYW5zaWVudCBwZXJzaXN0ZW50ISBjb25qISAnK1xuICAgICAgJ2Fzc29jISBkaXNzb2MhIHBvcCEgZGlzaiEgdXNlIGNsYXNzIHR5cGUgbnVtIGZsb2F0IGRvdWJsZSBzaG9ydCBieXRlIGJvb2xlYW4gYmlnaW50IGJpZ2ludGVnZXIgJytcbiAgICAgICdiaWdkZWMgcHJpbnQtbWV0aG9kIHByaW50LWR1cCB0aHJvdy1pZiBwcmludGYgZm9ybWF0IGxvYWQgY29tcGlsZSBnZXQtaW4gdXBkYXRlLWluIHByIHByLW9uIG5ld2xpbmUgJytcbiAgICAgICdmbHVzaCByZWFkIHNsdXJwIHJlYWQtbGluZSBzdWJ2ZWMgd2l0aC1vcGVuIG1lbWZuIHRpbWUgcmUtZmluZCByZS1ncm91cHMgcmFuZC1pbnQgcmFuZCBtb2QgbG9ja2luZyAnK1xuICAgICAgJ2Fzc2VydC12YWxpZC1mZGVjbCBhbGlhcyByZXNvbHZlIHJlZiBkZXJlZiByZWZzZXQgc3dhcCEgcmVzZXQhIHNldC12YWxpZGF0b3IhIGNvbXBhcmUtYW5kLXNldCEgYWx0ZXItbWV0YSEgJytcbiAgICAgICdyZXNldC1tZXRhISBjb21tdXRlIGdldC12YWxpZGF0b3IgYWx0ZXIgcmVmLXNldCByZWYtaGlzdG9yeS1jb3VudCByZWYtbWluLWhpc3RvcnkgcmVmLW1heC1oaXN0b3J5IGVuc3VyZSBzeW5jIGlvISAnK1xuICAgICAgJ25ldyBuZXh0IGNvbmogc2V0ISB0by1hcnJheSBmdXR1cmUgZnV0dXJlLWNhbGwgaW50by1hcnJheSBhc2V0IGdlbi1jbGFzcyByZWR1Y2UgbWFwIGZpbHRlciBmaW5kIGVtcHR5ICcrXG4gICAgICAnaGFzaC1tYXAgaGFzaC1zZXQgc29ydGVkLW1hcCBzb3J0ZWQtbWFwLWJ5IHNvcnRlZC1zZXQgc29ydGVkLXNldC1ieSB2ZWMgdmVjdG9yIHNlcSBmbGF0dGVuIHJldmVyc2UgYXNzb2MgZGlzc29jIGxpc3QgJytcbiAgICAgICdkaXNqIGdldCB1bmlvbiBkaWZmZXJlbmNlIGludGVyc2VjdGlvbiBleHRlbmQgZXh0ZW5kLXR5cGUgZXh0ZW5kLXByb3RvY29sIGludCBudGggZGVsYXkgY291bnQgY29uY2F0IGNodW5rIGNodW5rLWJ1ZmZlciAnK1xuICAgICAgJ2NodW5rLWFwcGVuZCBjaHVuay1maXJzdCBjaHVuay1yZXN0IG1heCBtaW4gZGVjIHVuY2hlY2tlZC1pbmMtaW50IHVuY2hlY2tlZC1pbmMgdW5jaGVja2VkLWRlYy1pbmMgdW5jaGVja2VkLWRlYyB1bmNoZWNrZWQtbmVnYXRlICcrXG4gICAgICAndW5jaGVja2VkLWFkZC1pbnQgdW5jaGVja2VkLWFkZCB1bmNoZWNrZWQtc3VidHJhY3QtaW50IHVuY2hlY2tlZC1zdWJ0cmFjdCBjaHVuay1uZXh0IGNodW5rLWNvbnMgY2h1bmtlZC1zZXE/IHBybiB2YXJ5LW1ldGEgJytcbiAgICAgICdsYXp5LXNlcSBzcHJlYWQgbGlzdCogc3RyIGZpbmQta2V5d29yZCBrZXl3b3JkIHN5bWJvbCBnZW5zeW0gZm9yY2UgcmF0aW9uYWxpemUnXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiBTSU1QTEVfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSk7XG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICc7JyxcbiAgICAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogL1xcYih0cnVlfGZhbHNlfG5pbClcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBISU5UX0NPTC5jb250YWlucyA9IFtDT0xMRUNUSU9OXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2xqJ10sXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eKFtcXHcuLV0rfFxccyojXyk/PT4vLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Nsb2p1cmUnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjbWFrZS5pbiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIHNjcmlwdGluZyBjb21tYW5kc1xuICAgICAgICAnYnJlYWsgY21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb24gY21ha2VfbWluaW11bV9yZXF1aXJlZCBjbWFrZV9wYXJzZV9hcmd1bWVudHMgJyArXG4gICAgICAgICdjbWFrZV9wb2xpY3kgY29uZmlndXJlX2ZpbGUgY29udGludWUgZWxzZWlmIGVsc2UgZW5kZm9yZWFjaCBlbmRmdW5jdGlvbiBlbmRpZiBlbmRtYWNybyAnICtcbiAgICAgICAgJ2VuZHdoaWxlIGV4ZWN1dGVfcHJvY2VzcyBmaWxlIGZpbmRfZmlsZSBmaW5kX2xpYnJhcnkgZmluZF9wYWNrYWdlIGZpbmRfcGF0aCAnICtcbiAgICAgICAgJ2ZpbmRfcHJvZ3JhbSBmb3JlYWNoIGZ1bmN0aW9uIGdldF9jbWFrZV9wcm9wZXJ0eSBnZXRfZGlyZWN0b3J5X3Byb3BlcnR5ICcgK1xuICAgICAgICAnZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCBnZXRfcHJvcGVydHkgaWYgaW5jbHVkZSBpbmNsdWRlX2d1YXJkIGxpc3QgbWFjcm8gJyArXG4gICAgICAgICdtYXJrX2FzX2FkdmFuY2VkIG1hdGggbWVzc2FnZSBvcHRpb24gcmV0dXJuIHNlcGFyYXRlX2FyZ3VtZW50cyAnICtcbiAgICAgICAgJ3NldF9kaXJlY3RvcnlfcHJvcGVydGllcyBzZXRfcHJvcGVydHkgc2V0IHNpdGVfbmFtZSBzdHJpbmcgdW5zZXQgdmFyaWFibGVfd2F0Y2ggd2hpbGUgJyArXG4gICAgICAgIC8vIHByb2plY3QgY29tbWFuZHNcbiAgICAgICAgJ2FkZF9jb21waWxlX2RlZmluaXRpb25zIGFkZF9jb21waWxlX29wdGlvbnMgYWRkX2N1c3RvbV9jb21tYW5kIGFkZF9jdXN0b21fdGFyZ2V0ICcgK1xuICAgICAgICAnYWRkX2RlZmluaXRpb25zIGFkZF9kZXBlbmRlbmNpZXMgYWRkX2V4ZWN1dGFibGUgYWRkX2xpYnJhcnkgYWRkX2xpbmtfb3B0aW9ucyAnICtcbiAgICAgICAgJ2FkZF9zdWJkaXJlY3RvcnkgYWRkX3Rlc3QgYXV4X3NvdXJjZV9kaXJlY3RvcnkgYnVpbGRfY29tbWFuZCBjcmVhdGVfdGVzdF9zb3VyY2VsaXN0ICcgK1xuICAgICAgICAnZGVmaW5lX3Byb3BlcnR5IGVuYWJsZV9sYW5ndWFnZSBlbmFibGVfdGVzdGluZyBleHBvcnQgZmx0a193cmFwX3VpICcgK1xuICAgICAgICAnZ2V0X3NvdXJjZV9maWxlX3Byb3BlcnR5IGdldF90YXJnZXRfcHJvcGVydHkgZ2V0X3Rlc3RfcHJvcGVydHkgaW5jbHVkZV9kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2luY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0IGluY2x1ZGVfcmVndWxhcl9leHByZXNzaW9uIGluc3RhbGwgbGlua19kaXJlY3RvcmllcyAnICtcbiAgICAgICAgJ2xpbmtfbGlicmFyaWVzIGxvYWRfY2FjaGUgcHJvamVjdCBxdF93cmFwX2NwcCBxdF93cmFwX3VpIHJlbW92ZV9kZWZpbml0aW9ucyAnICtcbiAgICAgICAgJ3NldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgc2V0X3Rlc3RzX3Byb3BlcnRpZXMgc291cmNlX2dyb3VwICcgK1xuICAgICAgICAndGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMgdGFyZ2V0X2NvbXBpbGVfZmVhdHVyZXMgdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucyAnICtcbiAgICAgICAgJ3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2RpcmVjdG9yaWVzIHRhcmdldF9saW5rX2xpYnJhcmllcyAnICtcbiAgICAgICAgJ3RhcmdldF9saW5rX29wdGlvbnMgdGFyZ2V0X3NvdXJjZXMgdHJ5X2NvbXBpbGUgdHJ5X3J1biAnICtcbiAgICAgICAgLy8gQ1Rlc3QgY29tbWFuZHNcbiAgICAgICAgJ2N0ZXN0X2J1aWxkIGN0ZXN0X2NvbmZpZ3VyZSBjdGVzdF9jb3ZlcmFnZSBjdGVzdF9lbXB0eV9iaW5hcnlfZGlyZWN0b3J5IGN0ZXN0X21lbWNoZWNrICcgK1xuICAgICAgICAnY3Rlc3RfcmVhZF9jdXN0b21fZmlsZXMgY3Rlc3RfcnVuX3NjcmlwdCBjdGVzdF9zbGVlcCBjdGVzdF9zdGFydCBjdGVzdF9zdWJtaXQgJyArXG4gICAgICAgICdjdGVzdF90ZXN0IGN0ZXN0X3VwZGF0ZSBjdGVzdF91cGxvYWQgJyArXG4gICAgICAgIC8vIGRlcHJlY2F0ZWQgY29tbWFuZHNcbiAgICAgICAgJ2J1aWxkX25hbWUgZXhlY19wcm9ncmFtIGV4cG9ydF9saWJyYXJ5X2RlcGVuZGVuY2llcyBpbnN0YWxsX2ZpbGVzIGluc3RhbGxfcHJvZ3JhbXMgJyArXG4gICAgICAgICdpbnN0YWxsX3RhcmdldHMgbG9hZF9jb21tYW5kIG1ha2VfZGlyZWN0b3J5IG91dHB1dF9yZXF1aXJlZF9maWxlcyByZW1vdmUgJyArXG4gICAgICAgICdzdWJkaXJfZGVwZW5kcyBzdWJkaXJzIHVzZV9tYW5nbGVkX21lc2EgdXRpbGl0eV9zb3VyY2UgdmFyaWFibGVfcmVxdWlyZXMgd3JpdGVfZmlsZSAnICtcbiAgICAgICAgJ3F0NV91c2VfbW9kdWxlcyBxdDVfdXNlX3BhY2thZ2UgcXQ1X3dyYXBfY3BwICcgK1xuICAgICAgICAvLyBjb3JlIGtleXdvcmRzXG4gICAgICAgICdvbiBvZmYgdHJ1ZSBmYWxzZSBhbmQgb3Igbm90IGNvbW1hbmQgcG9saWN5IHRhcmdldCB0ZXN0IGV4aXN0cyBpc19uZXdlcl90aGFuICcgK1xuICAgICAgICAnaXNfZGlyZWN0b3J5IGlzX3N5bWxpbmsgaXNfYWJzb2x1dGUgbWF0Y2hlcyBsZXNzIGdyZWF0ZXIgZXF1YWwgbGVzc19lcXVhbCAnICtcbiAgICAgICAgJ2dyZWF0ZXJfZXF1YWwgc3RybGVzcyBzdHJncmVhdGVyIHN0cmVxdWFsIHN0cmxlc3NfZXF1YWwgc3RyZ3JlYXRlcl9lcXVhbCB2ZXJzaW9uX2xlc3MgJyArXG4gICAgICAgICd2ZXJzaW9uX2dyZWF0ZXIgdmVyc2lvbl9lcXVhbCB2ZXJzaW9uX2xlc3NfZXF1YWwgdmVyc2lvbl9ncmVhdGVyX2VxdWFsIGluX2xpc3QgZGVmaW5lZCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J1xuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gSlMga2V5d29yZHNcbiAgICAgICdpbiBpZiBmb3Igd2hpbGUgZmluYWxseSBuZXcgZG8gcmV0dXJuIGVsc2UgYnJlYWsgY2F0Y2ggaW5zdGFuY2VvZiB0aHJvdyB0cnkgdGhpcyAnICtcbiAgICAgICdzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSBkZWJ1Z2dlciBzdXBlciB5aWVsZCBpbXBvcnQgZXhwb3J0IGZyb20gYXMgZGVmYXVsdCBhd2FpdCAnICtcbiAgICAgIC8vIENvZmZlZSBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QnLFxuICAgIGxpdGVyYWw6XG4gICAgICAvLyBKUyBsaXRlcmFsc1xuICAgICAgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgJyArXG4gICAgICAvLyBDb2ZmZWUgbGl0ZXJhbHNcbiAgICAgICd5ZXMgbm8gb24gb2ZmJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfX0pLCAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vLycsIGVuZDogJy8vLycsXG4gICAgICAgICAgY29udGFpbnM6IFtTVUJTVCwgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCBzcGFjZSB0byBwYXJzZSB4IC8gMiAvIDMgYXMgdHdvIGRpdmlzaW9uc1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggKiwgYW5kIGl0IHN1cHBvcnRzIGFuIFwiaWxsZWdhbFwiIGluIHRoZSBtYWluIG1vZGVcbiAgICAgICAgICBiZWdpbjogL1xcLyg/IVsgKl0pKFxcXFxcXC98LikqP1xcL1tnaW1dKig/PVxcVykvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIH0sXG4gICAge1xuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2BgYCcsIGVuZDogJ2BgYCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgVElUTEUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEpTX0lERU5UX1JFfSk7XG4gIHZhciBQQVJBTVNfUkUgPSAnKFxcXFwoLipcXFxcKSk/XFxcXHMqXFxcXEJbLT1dPic7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoW15cXFxcKF0nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW3tcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXS5jb25jYXQoRVhQUkVTU0lPTlMpXG4gICAgfV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY29mZmVlJywgJ2Nzb24nLCAnaWNlZCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnIyMjJywgJyMjIycpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxccyonICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqPVxcXFxzKicgKyBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGFub255bW91cyBmdW5jdGlvbiBzdGFydFxuICAgICAgICBiZWdpbjogL1s6XFwoLD1dXFxzKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ198MCBhcyBhdCBjb2ZpeCBlbHNlIGVuZCBleGlzdHMgZXhpc3RzMiBmaXggZm9yIGZvcmFsbCBmdW4gaWYgSUYgaW4gbGV0ICcgK1xuICAgICAgICAnbWF0Y2ggbW9kIFByb3AgcmV0dXJuIFNldCB0aGVuIFR5cGUgdXNpbmcgd2hlcmUgd2l0aCAnICtcbiAgICAgICAgJ0Fib3J0IEFib3V0IEFkZCBBZG1pdCBBZG1pdHRlZCBBbGwgQXJndW1lbnRzIEFzc3VtcHRpb25zIEF4aW9tIEJhY2sgQmFja1RvICcgK1xuICAgICAgICAnQmFja3RyYWNrIEJpbmQgQmxhY2tsaXN0IENhbm9uaWNhbCBDZCBDaGVjayBDbGFzcyBDbGFzc2VzIENsb3NlIENvZXJjaW9uICcgK1xuICAgICAgICAnQ29lcmNpb25zIENvRml4cG9pbnQgQ29JbmR1Y3RpdmUgQ29sbGVjdGlvbiBDb21iaW5lZCBDb21wdXRlIENvbmplY3R1cmUgJyArXG4gICAgICAgICdDb25qZWN0dXJlcyBDb25zdGFudCBjb25zdHIgQ29uc3RyYWludCBDb25zdHJ1Y3RvcnMgQ29udGV4dCBDb3JvbGxhcnkgJyArXG4gICAgICAgICdDcmVhdGVIaW50RGIgQ3V0IERlY2xhcmUgRGVmaW5lZCBEZWZpbml0aW9uIERlbGltaXQgRGVwZW5kZW5jaWVzIERlcGVuZGVudCcgK1xuICAgICAgICAnRGVyaXZlIERyb3AgZWF1dG8gRW5kIEVxdWFsaXR5IEV2YWwgRXhhbXBsZSBFeGlzdGVudGlhbCBFeGlzdGVudGlhbHMgJyArXG4gICAgICAgICdFeGlzdGluZyBFeHBvcnQgZXhwb3J0aW5nIEV4dGVybiBFeHRyYWN0IEV4dHJhY3Rpb24gRmFjdCBGaWVsZCBGaWVsZHMgRmlsZSAnICtcbiAgICAgICAgJ0ZpeHBvaW50IEZvY3VzIGZvciBGcm9tIEZ1bmN0aW9uIEZ1bmN0aW9uYWwgR2VuZXJhbGl6YWJsZSBHbG9iYWwgR29hbCBHcmFiICcgK1xuICAgICAgICAnR3JhbW1hciBHcmFwaCBHdWFyZGVkIEhlYXAgSGludCBIaW50RGIgSGludHMgSHlwb3RoZXNlcyBIeXBvdGhlc2lzIGlkZW50ICcgK1xuICAgICAgICAnSWRlbnRpdHkgSWYgSW1tZWRpYXRlIEltcGxpY2l0IEltcG9ydCBJbmNsdWRlIEluZHVjdGl2ZSBJbmZpeCBJbmZvIEluaXRpYWwgJyArXG4gICAgICAgICdJbmxpbmUgSW5zcGVjdCBJbnN0YW5jZSBJbnN0YW5jZXMgSW50cm8gSW50cm9zIEludmVyc2lvbiBJbnZlcnNpb25fY2xlYXIgJyArXG4gICAgICAgICdMYW5ndWFnZSBMZWZ0IExlbW1hIExldCBMaWJyYXJpZXMgTGlicmFyeSBMb2FkIExvYWRQYXRoIExvY2FsIExvY2F0ZSBMdGFjIE1MICcgK1xuICAgICAgICAnTW9kZSBNb2R1bGUgTW9kdWxlcyBNb25vbW9ycGhpYyBNb3JwaGlzbSBOZXh0IE5vSW5saW5lIE5vdGF0aW9uIE9ibGlnYXRpb24gJyArXG4gICAgICAgICdPYmxpZ2F0aW9ucyBPcGFxdWUgT3BlbiBPcHRpbWl6ZSBPcHRpb25zIFBhcmFtZXRlciBQYXJhbWV0ZXJzIFBhcmFtZXRyaWMgJyArXG4gICAgICAgICdQYXRoIFBhdGhzIHBhdHRlcm4gUG9seW1vcnBoaWMgUHJldGVybSBQcmludCBQcmludGluZyBQcm9ncmFtIFByb2plY3Rpb25zICcgK1xuICAgICAgICAnUHJvb2YgUHJvcG9zaXRpb24gUHdkIFFlZCBRdWl0IFJlYyBSZWNvcmQgUmVjdXJzaXZlIFJlZGlyZWN0IFJlbGF0aW9uIFJlbWFyayAnICtcbiAgICAgICAgJ1JlbW92ZSBSZXF1aXJlIFJlc2VydmVkIFJlc2V0IFJlc29sdmUgUmVzdGFydCBSZXdyaXRlIFJpZ2h0IFJpbmcgUmluZ3MgU2F2ZSAnICtcbiAgICAgICAgJ1NjaGVtZSBTY29wZSBTY29wZXMgU2NyaXB0IFNlYXJjaCBTZWFyY2hBYm91dCBTZWFyY2hIZWFkIFNlYXJjaFBhdHRlcm4gJyArXG4gICAgICAgICdTZWFyY2hSZXdyaXRlIFNlY3Rpb24gU2VwYXJhdGUgU2V0IFNldG9pZCBTaG93IFNvbHZlIFNvcnRlZCBTdGVwIFN0cmF0ZWdpZXMgJyArXG4gICAgICAgICdTdHJhdGVneSBTdHJ1Y3R1cmUgU3ViQ2xhc3MgVGFibGUgVGFibGVzIFRhY3RpYyBUZXJtIFRlc3QgVGhlb3JlbSBUaW1lICcgK1xuICAgICAgICAnVGltZW91dCBUcmFuc3BhcmVudCBUeXBlIFR5cGVjbGFzc2VzIFR5cGVzIFVuZGVsaW1pdCBVbmRvIFVuZm9jdXMgVW5mb2N1c2VkICcgK1xuICAgICAgICAnVW5mb2xkIFVuaXZlcnNlIFVuaXZlcnNlcyBVbnNldCBVbnNoZWx2ZSB1c2luZyBWYXJpYWJsZSBWYXJpYWJsZXMgVmFyaWFudCAnICtcbiAgICAgICAgJ1ZlcmJvc2UgVmlzaWJpbGl0eSB3aGVyZSB3aXRoJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnYWJzdHJhY3QgYWJzdXJkIGFkbWl0IGFmdGVyIGFwcGx5IGFzIGFzc2VydCBhc3N1bXB0aW9uIGF0IGF1dG8gYXV0b3Jld3JpdGUgJyArXG4gICAgICAgICdhdXRvdW5mb2xkIGJlZm9yZSBib3R0b20gYnRhdXRvIGJ5IGNhc2UgY2FzZV9lcSBjYm4gY2J2IGNoYW5nZSAnICtcbiAgICAgICAgJ2NsYXNzaWNhbF9sZWZ0IGNsYXNzaWNhbF9yaWdodCBjbGVhciBjbGVhcmJvZHkgY29maXggY29tcGFyZSBjb21wdXRlICcgK1xuICAgICAgICAnY29uZ3J1ZW5jZSBjb25zdHJfZXEgY29uc3RydWN0b3IgY29udHJhZGljdCBjb250cmFkaWN0aW9uIGN1dCBjdXRyZXdyaXRlICcgK1xuICAgICAgICAnY3ljbGUgZGVjaWRlIGRlY29tcG9zZSBkZXBlbmRlbnQgZGVzdHJ1Y3QgZGVzdHJ1Y3Rpb24gZGludHVpdGlvbiAnICtcbiAgICAgICAgJ2Rpc2NyaW1pbmF0ZSBkaXNjclIgZG8gZG91YmxlIGR0YXV0byBlYXBwbHkgZWFzc3VtcHRpb24gZWF1dG8gZWNhc2UgJyArXG4gICAgICAgICdlY29uc3RydWN0b3IgZWRlc3RydWN0IGVkaXNjcmltaW5hdGUgZWVsaW0gZWV4YWN0IGVleGlzdHMgZWluZHVjdGlvbiAnICtcbiAgICAgICAgJ2VpbmplY3Rpb24gZWxlZnQgZWxpbSBlbGltdHlwZSBlbm91Z2ggZXF1YWxpdHkgZXJld3JpdGUgZXJpZ2h0ICcgK1xuICAgICAgICAnZXNpbXBsaWZ5X2VxIGVzcGxpdCBldmFyIGV4YWN0IGV4YWN0bHlfb25jZSBleGZhbHNvIGV4aXN0cyBmX2VxdWFsIGZhaWwgJyArXG4gICAgICAgICdmaWVsZCBmaWVsZF9zaW1wbGlmeSBmaWVsZF9zaW1wbGlmeV9lcSBmaXJzdCBmaXJzdG9yZGVyIGZpeCBmb2xkIGZvdXJpZXIgJyArXG4gICAgICAgICdmdW5jdGlvbmFsIGdlbmVyYWxpemUgZ2VuZXJhbGl6aW5nIGdmYWlsIGdpdmVfdXAgaGFzX2V2YXIgaG5mIGlkdGFjIGluICcgK1xuICAgICAgICAnaW5kdWN0aW9uIGluamVjdGlvbiBpbnN0YW50aWF0ZSBpbnRybyBpbnRyb19wYXR0ZXJuIGludHJvcyBpbnR1aXRpb24gJyArXG4gICAgICAgICdpbnZlcnNpb24gaW52ZXJzaW9uX2NsZWFyIGlzX2V2YXIgaXNfdmFyIGxhcHBseSBsYXp5IGxlZnQgbGlhIGxyYSBtb3ZlICcgK1xuICAgICAgICAnbmF0aXZlX2NvbXB1dGUgbmlhIG5zYXR6IG9tZWdhIG9uY2UgcGF0dGVybiBwb3NlIHByb2dyZXNzIHByb29mIHBzYXR6IHF1b3RlICcgK1xuICAgICAgICAncmVjb3JkIHJlZCByZWZpbmUgcmVmbGV4aXZpdHkgcmVtZW1iZXIgcmVuYW1lIHJlcGVhdCByZXBsYWNlIHJldmVydCAnICtcbiAgICAgICAgJ3JldmdvYWxzIHJld3JpdGUgcmV3cml0ZV9zdHJhdCByaWdodCByaW5nIHJpbmdfc2ltcGxpZnkgcnRhdXRvIHNldCAnICtcbiAgICAgICAgJ3NldG9pZF9yZWZsZXhpdml0eSBzZXRvaWRfcmVwbGFjZSBzZXRvaWRfcmV3cml0ZSBzZXRvaWRfc3ltbWV0cnkgJyArXG4gICAgICAgICdzZXRvaWRfdHJhbnNpdGl2aXR5IHNoZWx2ZSBzaGVsdmVfdW5pZmlhYmxlIHNpbXBsIHNpbXBsZSBzaW1wbGlmeV9lcSBzb2x2ZSAnICtcbiAgICAgICAgJ3NwZWNpYWxpemUgc3BsaXQgc3BsaXRfUmFicyBzcGxpdF9SbXVsdCBzdGVwbCBzdGVwciBzdWJzdCBzdW0gc3dhcCAnICtcbiAgICAgICAgJ3N5bW1ldHJ5IHRhY3RpYyB0YXV0byB0aW1lIHRpbWVvdXQgdG9wIHRyYW5zaXRpdml0eSB0cml2aWFsIHRyeSB0cnlpZiAnICtcbiAgICAgICAgJ3VuZm9sZCB1bmlmeSB1bnRpbCB1c2luZyB2bV9jb21wdXRlIHdpdGgnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXChcXFxcKicsICdcXFxcKlxcXFwpJyksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGJlZ2luOiAnXFxcXHxcXFxccyonLFxuICAgICAgICBlbmQ6ICdcXFxcdysnXG4gICAgICB9LFxuICAgICAge2JlZ2luOiAvWy09XT4vfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb3MgKGhsanMpIHtcblxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbeyAvLyBlc2NhcGVkXG4gICAgICAgICAgYmVnaW46IFwiXFxcIlxcXCJcIixcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBcIlxcXFxiKFxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKVwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBDT1NfS0VZV09SRFMgPVxuICAgICdwcm9wZXJ0eSBwYXJhbWV0ZXIgY2xhc3MgY2xhc3NtZXRob2QgY2xpZW50bWV0aG9kIGV4dGVuZHMgYXMgYnJlYWsgJyArXG4gICAgJ2NhdGNoIGNsb3NlIGNvbnRpbnVlIGRvIGR8MCBlbHNlIGVsc2VpZiBmb3IgZ290byBoYWx0IGhhbmcgaHwwIGlmIGpvYiAnICtcbiAgICAnanwwIGtpbGwga3wwIGxvY2sgbHwwIG1lcmdlIG5ldyBvcGVuIHF1aXQgcXwwIHJlYWQgcnwwIHJldHVybiBzZXQgc3wwICcgK1xuICAgICd0Y29tbWl0IHRocm93IHRyb2xsYmFjayB0cnkgdHN0YXJ0IHVzZSB2aWV3IHdoaWxlIHdyaXRlIHd8MCB4ZWN1dGUgeHwwICcgK1xuICAgICd6a2lsbCB6bnNwYWNlIHpuIHp0cmFwIHp3cml0ZSB6dyB6emR1bXAgenp3cml0ZSBwcmludCB6YnJlYWsgemluc2VydCAnICtcbiAgICAnemxvYWQgenByaW50IHpyZW1vdmUgenNhdmUgenpwcmludCBtdiBtdmNhbGwgbXZjcnQgbXZkaW0gbXZwcmludCB6cXVpdCAnICtcbiAgICAnenN5bmMgYXNjaWknO1xuXG4gICAgLy8gcmVnaXN0ZXJlZCBmdW5jdGlvbiAtIG5vIG5lZWQgaW4gdGhlbSBkdWUgdG8gYWxsIGZ1bmN0aW9ucyBhcmUgaGlnaGxpZ2h0ZWQsXG4gICAgLy8gYnV0IEknbGwganVzdCBsZWF2ZSB0aGlzIGhlcmUuXG5cbiAgICAvL1wiJGJpdFwiLCBcIiRiaXRjb3VudFwiLFxuICAgIC8vXCIkYml0ZmluZFwiLCBcIiRiaXRsb2dpY1wiLCBcIiRjYXNlXCIsIFwiJGNoYXJcIiwgXCIkY2xhc3NtZXRob2RcIiwgXCIkY2xhc3NuYW1lXCIsXG4gICAgLy9cIiRjb21waWxlXCIsIFwiJGRhdGFcIiwgXCIkZGVjaW1hbFwiLCBcIiRkb3VibGVcIiwgXCIkZXh0cmFjdFwiLCBcIiRmYWN0b3JcIixcbiAgICAvL1wiJGZpbmRcIiwgXCIkZm51bWJlclwiLCBcIiRnZXRcIiwgXCIkaW5jcmVtZW50XCIsIFwiJGludW1iZXJcIiwgXCIkaXNvYmplY3RcIixcbiAgICAvL1wiJGlzdmFsaWRkb3VibGVcIiwgXCIkaXN2YWxpZG51bVwiLCBcIiRqdXN0aWZ5XCIsIFwiJGxlbmd0aFwiLCBcIiRsaXN0XCIsXG4gICAgLy9cIiRsaXN0YnVpbGRcIiwgXCIkbGlzdGRhdGFcIiwgXCIkbGlzdGZpbmRcIiwgXCIkbGlzdGZyb21zdHJpbmdcIiwgXCIkbGlzdGdldFwiLFxuICAgIC8vXCIkbGlzdGxlbmd0aFwiLCBcIiRsaXN0bmV4dFwiLCBcIiRsaXN0c2FtZVwiLCBcIiRsaXN0dG9zdHJpbmdcIiwgXCIkbGlzdHZhbGlkXCIsXG4gICAgLy9cIiRsb2NhdGVcIiwgXCIkbWF0Y2hcIiwgXCIkbWV0aG9kXCIsIFwiJG5hbWVcIiwgXCIkbmNvbnZlcnRcIiwgXCIkbmV4dFwiLFxuICAgIC8vXCIkbm9ybWFsaXplXCIsIFwiJG5vd1wiLCBcIiRudW1iZXJcIiwgXCIkb3JkZXJcIiwgXCIkcGFyYW1ldGVyXCIsIFwiJHBpZWNlXCIsXG4gICAgLy9cIiRwcmVmZXRjaG9mZlwiLCBcIiRwcmVmZXRjaG9uXCIsIFwiJHByb3BlcnR5XCIsIFwiJHFsZW5ndGhcIiwgXCIkcXN1YnNjcmlwdFwiLFxuICAgIC8vXCIkcXVlcnlcIiwgXCIkcmFuZG9tXCIsIFwiJHJlcGxhY2VcIiwgXCIkcmV2ZXJzZVwiLCBcIiRzY29udmVydFwiLCBcIiRzZWxlY3RcIixcbiAgICAvL1wiJHNvcnRiZWdpblwiLCBcIiRzb3J0ZW5kXCIsIFwiJHN0YWNrXCIsIFwiJHRleHRcIiwgXCIkdHJhbnNsYXRlXCIsIFwiJHZpZXdcIixcbiAgICAvL1wiJHdhc2NpaVwiLCBcIiR3Y2hhclwiLCBcIiR3ZXh0cmFjdFwiLCBcIiR3ZmluZFwiLCBcIiR3aXN3aWRlXCIsIFwiJHdsZW5ndGhcIixcbiAgICAvL1wiJHdyZXZlcnNlXCIsIFwiJHhlY3V0ZVwiLCBcIiR6YWJzXCIsIFwiJHphcmNjb3NcIiwgXCIkemFyY3NpblwiLCBcIiR6YXJjdGFuXCIsXG4gICAgLy9cIiR6Y29zXCIsIFwiJHpjb3RcIiwgXCIkemNzY1wiLCBcIiR6ZGF0ZVwiLCBcIiR6ZGF0ZWhcIiwgXCIkemRhdGV0aW1lXCIsXG4gICAgLy9cIiR6ZGF0ZXRpbWVoXCIsIFwiJHpleHBcIiwgXCIkemhleFwiLCBcIiR6bG5cIiwgXCIkemxvZ1wiLCBcIiR6cG93ZXJcIiwgXCIkenNlY1wiLFxuICAgIC8vXCIkenNpblwiLCBcIiR6c3FyXCIsIFwiJHp0YW5cIiwgXCIkenRpbWVcIiwgXCIkenRpbWVoXCIsIFwiJHpib29sZWFuXCIsXG4gICAgLy9cIiR6Y29udmVydFwiLCBcIiR6Y3JjXCIsIFwiJHpjeWNcIiwgXCIkemRhc2NpaVwiLCBcIiR6ZGNoYXJcIiwgXCIkemZcIixcbiAgICAvL1wiJHppc3dpZGVcIiwgXCIkemxhc2NpaVwiLCBcIiR6bGNoYXJcIiwgXCIkem5hbWVcIiwgXCIkenBvc2l0aW9uXCIsIFwiJHpxYXNjaWlcIixcbiAgICAvL1wiJHpxY2hhclwiLCBcIiR6c2VhcmNoXCIsIFwiJHpzZWVrXCIsIFwiJHpzdHJpcFwiLCBcIiR6d2FzY2lpXCIsIFwiJHp3Y2hhclwiLFxuICAgIC8vXCIkendpZHRoXCIsIFwiJHp3cGFja1wiLCBcIiR6d2JwYWNrXCIsIFwiJHp3dW5wYWNrXCIsIFwiJHp3YnVucGFja1wiLCBcIiR6emVua2FrdVwiLFxuICAgIC8vXCIkY2hhbmdlXCIsIFwiJG12XCIsIFwiJG12YXRcIiwgXCIkbXZmbXRcIiwgXCIkbXZmbXRzXCIsIFwiJG12aWNvbnZcIixcbiAgICAvL1wiJG12aWNvbnZzXCIsIFwiJG12aW5tYXRcIiwgXCIkbXZsb3ZlclwiLCBcIiRtdm9jb252XCIsIFwiJG12b2NvbnZzXCIsIFwiJG12cmFpc2VcIixcbiAgICAvL1wiJG12dHJhbnNcIiwgXCIkbXZ2XCIsIFwiJG12bmFtZVwiLCBcIiR6Yml0YW5kXCIsIFwiJHpiaXRjb3VudFwiLCBcIiR6Yml0ZmluZFwiLFxuICAgIC8vXCIkemJpdGdldFwiLCBcIiR6Yml0bGVuXCIsIFwiJHpiaXRub3RcIiwgXCIkemJpdG9yXCIsIFwiJHpiaXRzZXRcIiwgXCIkemJpdHN0clwiLFxuICAgIC8vXCIkemJpdHhvclwiLCBcIiR6aW5jcmVtZW50XCIsIFwiJHpuZXh0XCIsIFwiJHpvcmRlclwiLCBcIiR6cHJldmlvdXNcIiwgXCIkenNvcnRcIixcbiAgICAvL1wiZGV2aWNlXCIsIFwiJGVjb2RlXCIsIFwiJGVzdGFja1wiLCBcIiRldHJhcFwiLCBcIiRoYWx0XCIsIFwiJGhvcm9sb2dcIixcbiAgICAvL1wiJGlvXCIsIFwiJGpvYlwiLCBcIiRrZXlcIiwgXCIkbmFtZXNwYWNlXCIsIFwiJHByaW5jaXBhbFwiLCBcIiRxdWl0XCIsIFwiJHJvbGVzXCIsXG4gICAgLy9cIiRzdG9yYWdlXCIsIFwiJHN5c3RlbVwiLCBcIiR0ZXN0XCIsIFwiJHRoaXNcIiwgXCIkdGxldmVsXCIsIFwiJHVzZXJuYW1lXCIsXG4gICAgLy9cIiR4XCIsIFwiJHlcIiwgXCIkemFcIiwgXCIkemJcIiwgXCIkemNoaWxkXCIsIFwiJHplb2ZcIiwgXCIkemVvc1wiLCBcIiR6ZXJyb3JcIixcbiAgICAvL1wiJHpob3JvbG9nXCIsIFwiJHppb1wiLCBcIiR6am9iXCIsIFwiJHptb2RlXCIsIFwiJHpuc3BhY2VcIiwgXCIkenBhcmVudFwiLCBcIiR6cGlcIixcbiAgICAvL1wiJHpwb3NcIiwgXCIkenJlZmVyZW5jZVwiLCBcIiR6c3RvcmFnZVwiLCBcIiR6dGltZXN0YW1wXCIsIFwiJHp0aW1lem9uZVwiLFxuICAgIC8vXCIkenRyYXBcIiwgXCIkenZlcnNpb25cIlxuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbXCJjb3NcIiwgXCJjbHNcIl0sXG4gICAga2V5d29yZHM6IENPU19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgICAgICBiZWdpbjogLzsvLCBlbmQ6IFwiJFwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIEZ1bmN0aW9ucyBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczogd3JpdGUgJHp0aW1lKDYwKjYwKjMpLCAkJG15RnVuYygxMCksICQkXlZhbCgxKVxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8oPzpcXCRcXCQ/fFxcLlxcLilcXF4/W2EtekEtWl0rL1xuICAgICAgfSxcbiAgICAgIHsgLy8gTWFjcm8gY29tbWFuZDogcXVpdCAkJCRPS1xuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC9cXCRcXCRcXCRbYS16QS1aXSsvXG4gICAgICB9LFxuICAgICAgeyAvLyBTcGVjaWFsIChnbG9iYWwpIHZhcmlhYmxlczogd3JpdGUgJXJlcXVlc3QuQ29udGVudDsgQnVpbHQtaW4gY2xhc3NlczogJUxpYnJhcnkuSW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgICAgYmVnaW46IC8lW2Etel0rKD86XFwuW2Etel0rKSovXG4gICAgICB9LFxuICAgICAgeyAvLyBHbG9iYWwgdmFyaWFibGU6IHNldCBeZ2xvYmFsTmFtZSA9IDEyIHdyaXRlIF5nbG9iYWxOYW1lXG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC9cXF4lP1thLXpBLVpdW1xcd10qL1xuICAgICAgfSxcbiAgICAgIHsgLy8gU29tZSBjb250cm9sIGNvbnN0cnVjdGlvbnM6IGRvICMjY2xhc3MoUGFja2FnZS5DbGFzc05hbWUpLk1ldGhvZCgpLCAjI3N1cGVyKClcbiAgICAgICAgY2xhc3NOYW1lOiBcImtleXdvcmRcIixcbiAgICAgICAgYmVnaW46IC8jI2NsYXNzfCMjc3VwZXJ8I2RlZmluZXwjZGltL1xuICAgICAgfSxcblxuICAgICAgLy8gc3ViLWxhbmd1YWdlczogYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgaGxqcyBieSAxMS8xNS8yMDE1XG4gICAgICAvLyBsZWZ0IGZvciB0aGUgZnV0dXJlIGltcGxlbWVudGF0aW9uLlxuICAgICAge1xuICAgICAgICBiZWdpbjogLyZzcWxcXCgvLCAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcInNxbFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyYoanN8anNjcmlwdHxqYXZhc2NyaXB0KTwvLCBlbmQ6IC8+LyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJqYXZhc2NyaXB0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgYnJha2VzIGZpcnN0IGFuZCBsYXN0IHRhZywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVtYmVkIGEgdmFsaWQgaHRtbFxuICAgICAgICBiZWdpbjogLyZodG1sPFxccyo8LywgZW5kOiAvPlxccyo+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwieG1sXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUkVTT1VSQ0VTID0gJ3ByaW1pdGl2ZSByc2NfdGVtcGxhdGUnO1xuXG4gIHZhciBDT01NQU5EUyA9ICdncm91cCBjbG9uZSBtcyBtYXN0ZXIgbG9jYXRpb24gY29sb2NhdGlvbiBvcmRlciBmZW5jaW5nX3RvcG9sb2d5ICcgK1xuICAgICAgJ3JzY190aWNrZXQgYWNsX3RhcmdldCBhY2xfZ3JvdXAgdXNlciByb2xlICcgK1xuICAgICAgJ3RhZyB4bWwnO1xuXG4gIHZhciBQUk9QRVJUWV9TRVRTID0gJ3Byb3BlcnR5IHJzY19kZWZhdWx0cyBvcF9kZWZhdWx0cyc7XG5cbiAgdmFyIEtFWVdPUkRTID0gJ3BhcmFtcyBtZXRhIG9wZXJhdGlvbnMgb3AgcnVsZSBhdHRyaWJ1dGVzIHV0aWxpemF0aW9uJztcblxuICB2YXIgT1BFUkFUT1JTID0gJ3JlYWQgd3JpdGUgZGVueSBkZWZpbmVkIG5vdF9kZWZpbmVkIGluX3JhbmdlIGRhdGUgc3BlYyBpbiAnICtcbiAgICAgICdyZWYgcmVmZXJlbmNlIGF0dHJpYnV0ZSB0eXBlIHhwYXRoIHZlcnNpb24gYW5kIG9yIGx0IGd0IHRhZyAnICtcbiAgICAgICdsdGUgZ3RlIGVxIG5lIFxcXFwnO1xuXG4gIHZhciBUWVBFUyA9ICdudW1iZXIgc3RyaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAnTWFzdGVyIFN0YXJ0ZWQgU2xhdmUgU3RvcHBlZCBzdGFydCBwcm9tb3RlIGRlbW90ZSBzdG9wIG1vbml0b3IgdHJ1ZSBmYWxzZSc7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NybScsICdwY21rJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMgKyAnICcgKyBPUEVSQVRPUlMgKyAnICcgKyBUWVBFUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25vZGUnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXFxccyooW1xcXFx3Xy1dKzopPycsXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccypbXFxcXCRcXFxcd19dW1xcXFx3Xy1dKidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6IFJFU09VUkNFUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1xcXFxzKltcXFxcJFxcXFx3X11bXFxcXHdfLV0qJyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKkA/W1xcXFx3X11bXFxcXHdfXFxcXC46LV0qJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxzKycsXG4gICAgICAgIGtleXdvcmRzOiBDT01NQU5EUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1tcXFxcJFxcXFx3X11bXFxcXHdfLV0qJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBQUk9QRVJUWV9TRVRTLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgZW5kOiAnXFxcXHMqKFtcXFxcd18tXSs6KT8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcob2NmfHN5c3RlbWR8c2VydmljZXxsc2IpOltcXFxcd186LV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8obXN8c3xofG0pPycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnWy1dPyhpbmZpbml0eXxpbmYpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IC8oW0EtWmEtelxcJF9cXCNdW1xcd18tXSspPS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICc8Lz8nLFxuICAgICAgICBlbmQ6ICcvPz4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSU5UX1NVRkZJWCA9ICcoXypbdWldKDh8MTZ8MzJ8NjR8MTI4KSk/JztcbiAgdmFyIEZMT0FUX1NVRkZJWCA9ICcoXypmKDMyfDY0KSk/JztcbiAgdmFyIENSWVNUQUxfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqWyE/PV0/JztcbiAgdmFyIENSWVNUQUxfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fFs9IV1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfnxdfC8vfC8vPXwmWy0rKl09P3wmXFxcXCpcXFxcKnxcXFxcW1xcXFxdWz0/XT8nO1xuICB2YXIgQ1JZU1RBTF9QQVRIX1JFID0gJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nO1xuICB2YXIgQ1JZU1RBTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFsaWFzIGFubm90YXRpb24gYXMgYXM/IGFzbSBiZWdpbiBicmVhayBjYXNlIGNsYXNzIGRlZiBkbyBlbHNlIGVsc2lmIGVuZCBlbnN1cmUgZW51bSBleHRlbmQgZm9yIGZ1biBpZiAnICtcbiAgICAgICdpbmNsdWRlIGluc3RhbmNlX3NpemVvZiBpc19hPyBsaWIgbWFjcm8gbW9kdWxlIG5leHQgbmlsPyBvZiBvdXQgcG9pbnRlcm9mIHByaXZhdGUgcHJvdGVjdGVkIHJlc2N1ZSByZXNwb25kc190bz8gJyArXG4gICAgICAncmV0dXJuIHJlcXVpcmUgc2VsZWN0IHNlbGYgc2l6ZW9mIHN0cnVjdCBzdXBlciB0aGVuIHR5cGUgdHlwZW9mIHVuaW9uIHVuaW5pdGlhbGl6ZWQgdW5sZXNzIHVudGlsIHZlcmJhdGltIHdoZW4gd2hpbGUgd2l0aCB5aWVsZCAnICtcbiAgICAgICdfX0RJUl9fIF9fRU5EX0xJTkVfXyBfX0ZJTEVfXyBfX0xJTkVfXycsXG4gICAgbGl0ZXJhbDogJ2ZhbHNlIG5pbCB0cnVlJ1xuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI3snLCBlbmQ6ICd9JyxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQQU5TSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXHtcXFxceycsIGVuZDogJ1xcXFx9XFxcXH0nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFx7JScsIGVuZDogJyVcXFxcfSd9XG4gICAgXSxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEU1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhcmVuKGJlZ2luLCBlbmQpIHtcbiAgICB2YXJcbiAgICBjb250YWlucyA9IFt7YmVnaW46IGJlZ2luLCBlbmQ6IGVuZH1dO1xuICAgIGNvbnRhaW5zWzBdLmNvbnRhaW5zID0gY29udGFpbnM7XG4gICAgcmV0dXJuIGNvbnRhaW5zO1xuICB9XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT9cXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT97JywgZW5kOiAnfScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbigneycsICd9Jyl9LFxuICAgICAge2JlZ2luOiAnJVtRd2ldPzwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICclW1F3aV0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtXFx3KyQvLCBlbmQ6IC9eXFxzKlxcdyskL30sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBRX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclcVxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXFcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVxeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVxPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVxXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge2JlZ2luOiAvPDwtJ1xcdysnJC8sIGVuZDogL15cXHMqXFx3KyQvfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcbiAgdmFyIFJFR0VYUCA9IHtcbiAgICBiZWdpbjogJyg/ISV9KSgnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXG58XFxcXGIoY2FzZXxpZnxzZWxlY3R8dW5sZXNzfHVudGlsfHdoZW58d2hpbGUpXFxcXGIpXFxcXHMqJyxcbiAgICBrZXl3b3JkczogJ2Nhc2UgaWYgc2VsZWN0IHVubGVzcyB1bnRpbCB3aGVuIHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJy8vW2Etel0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICcvKD8hXFxcXC8pJywgZW5kOiAnL1thLXpdKid9LFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFR0VYUDIgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICclclxcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ1xcXFwoJywgJ1xcXFwpJyl9LFxuICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcWycsICdcXFxcXScpfSxcbiAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVyPCcsIGVuZDogJz4nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJzwnLCAnPicpfSxcbiAgICAgIHtiZWdpbjogJyVyXFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBBVFRSSUJVVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSlcbiAgICBdXG4gIH07XG4gIHZhciBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgRVhQQU5TSU9OLFxuICAgIFNUUklORyxcbiAgICBRX1NUUklORyxcbiAgICBSRUdFWFAyLFxuICAgIFJFR0VYUCxcbiAgICBBVFRSSUJVVEUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlIHN0cnVjdCcsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgICB7YmVnaW46ICc8J30gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGluaGVyaXRhbmNlXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnbGliIGVudW0gdW5pb24nLCBlbmQ6ICckfDsnLFxuICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBDUllTVEFMX1BBVEhfUkV9KSxcbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbktleXdvcmRzOiAnYW5ub3RhdGlvbicsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IENSWVNUQUxfUEFUSF9SRX0pLFxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6IC9cXEJcXGIvLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgIGJlZ2luOiBDUllTVEFMX01FVEhPRF9SRSxcbiAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZnVuIG1hY3JvJywgZW5kOiAvXFxCXFxiLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICBiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkUsXG4gICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogNVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKFxcXFwhfFxcXFw/KT86JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOicsXG4gICAgICBjb250YWluczogW1NUUklORywge2JlZ2luOiBDUllTVEFMX01FVEhPRF9SRX1dLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMGIoWzAxX10rKScgKyBJTlRfU1VGRklYIH0sXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYjBvKFswLTdfXSspJyArIElOVF9TVUZGSVggfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgSU5UX1NVRkZJWCB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qWzAtOV18WzAtOV0pKFxcXFwuWzAtOV1bMC05X10qKT8oW2VFXV8qWy0rXT9bMC05X10qKT8nICsgRkxPQVRfU1VGRklYICsgJyg/IV8pJyB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIoWzEtOV1bMC05X10qfDApJyArIElOVF9TVUZGSVggfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlM7XG4gIEVYUEFOU0lPTi5jb250YWlucyA9IENSWVNUQUxfREVGQVVMVF9DT05UQUlOUy5zbGljZSgxKTsgLy8gd2l0aG91dCBFWFBBTlNJT05cblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY3InXSxcbiAgICBsZXhlbWVzOiBDUllTVEFMX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBDUllTVEFMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgLy8gTm9ybWFsIGtleXdvcmRzLlxuICAgICAgJ2Fic3RyYWN0IGFzIGJhc2UgYm9vbCBicmVhayBieXRlIGNhc2UgY2F0Y2ggY2hhciBjaGVja2VkIGNvbnN0IGNvbnRpbnVlIGRlY2ltYWwgJyArXG4gICAgICAnZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb3VibGUgZW51bSBldmVudCBleHBsaWNpdCBleHRlcm4gZmluYWxseSBmaXhlZCBmbG9hdCAnICtcbiAgICAgICdmb3IgZm9yZWFjaCBnb3RvIGlmIGltcGxpY2l0IGluIGludCBpbnRlcmZhY2UgaW50ZXJuYWwgaXMgbG9jayBsb25nICcgK1xuICAgICAgJ29iamVjdCBvcGVyYXRvciBvdXQgb3ZlcnJpZGUgcGFyYW1zIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyByZWFkb25seSByZWYgc2J5dGUgJyArXG4gICAgICAnc2VhbGVkIHNob3J0IHNpemVvZiBzdGFja2FsbG9jIHN0YXRpYyBzdHJpbmcgc3RydWN0IHN3aXRjaCB0aGlzIHRyeSB0eXBlb2YgJyArXG4gICAgICAndWludCB1bG9uZyB1bmNoZWNrZWQgdW5zYWZlIHVzaG9ydCB1c2luZyB2aXJ0dWFsIHZvaWQgdm9sYXRpbGUgd2hpbGUgJyArXG4gICAgICAvLyBDb250ZXh0dWFsIGtleXdvcmRzLlxuICAgICAgJ2FkZCBhbGlhcyBhc2NlbmRpbmcgYXN5bmMgYXdhaXQgYnkgZGVzY2VuZGluZyBkeW5hbWljIGVxdWFscyBmcm9tIGdldCBnbG9iYWwgZ3JvdXAgaW50byBqb2luICcgK1xuICAgICAgJ2xldCBuYW1lb2Ygb24gb3JkZXJieSBwYXJ0aWFsIHJlbW92ZSBzZWxlY3Qgc2V0IHZhbHVlIHZhciB3aGVuIHdoZXJlIHlpZWxkJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwgZmFsc2UgdHJ1ZSdcbiAgfTtcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZFUkJBVElNX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnQFwiJywgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICB9O1xuICB2YXIgVkVSQkFUSU1fU1RSSU5HX05PX0xGID0gaGxqcy5pbmhlcml0KFZFUkJBVElNX1NUUklORywge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBTVUJTVF9OT19MRiA9IGhsanMuaW5oZXJpdChTVUJTVCwge2lsbGVnYWw6IC9cXG4vfSk7XG4gIHZhciBJTlRFUlBPTEFURURfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRcIi8sIGVuZDogJ1wiJyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ3t7J30sIHtiZWdpbjogJ319J30sIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RfTk9fTEZdXG4gIH07XG4gIHZhciBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXCRAXCIvLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUXVxuICB9O1xuICB2YXIgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLCB7XG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCB7YmVnaW46ICdcIlwiJ30sIFNVQlNUX05PX0xGXVxuICB9KTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyxcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklORyxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgXTtcbiAgU1VCU1RfTk9fTEYuY29udGFpbnMgPSBbXG4gICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBJTlRFUlBPTEFURURfU1RSSU5HLFxuICAgIFZFUkJBVElNX1NUUklOR19OT19MRixcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCB7aWxsZWdhbDogL1xcbi99KVxuICBdO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICAgIFZFUkJBVElNX1NUUklORyxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRZUEVfSURFTlRfUkUgPSBobGpzLklERU5UX1JFICsgJyg8JyArIGhsanMuSURFTlRfUkUgKyAnKFxcXFxzKixcXFxccyonICsgaGxqcy5JREVOVF9SRSArICcpKj4pPyhcXFxcW1xcXFxdKT8nO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjc2hhcnAnLCAnYyMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzo6LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJy8vLycsIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46ICc8IS0tfC0tPidcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPidcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJ21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSByZWdpb24gZW5kcmVnaW9uIHByYWdtYSBjaGVja3N1bSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIE5VTUJFUlMsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczosXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLCBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczpdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbYS16QS1aXShcXFxcLj9cXFxcdykqJ30pLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFtBdHRyaWJ1dGVzKFwiXCIpXVxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXFsnLCBleGNsdWRlQmVnaW46IHRydWUsIGVuZDogJ1xcXFxdJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLCBiZWdpbjogL1wiLywgZW5kOiAvXCIvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeHByZXNzaW9uIGtleXdvcmRzIHByZXZlbnQgJ2tleXdvcmQgTmFtZSguLi4pJyBmcm9tIGJlaW5nXG4gICAgICAgIC8vIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduZXcgcmV0dXJuIHRocm93IGF3YWl0IGVsc2UnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcoJyArIFRZUEVfSURFTlRfUkUgKyAnXFxcXHMrKSsnICsgaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6IC9cXHMqW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGxleGVtZXM6ICdbYS16QS1aXVthLXpBLVowLTlfLV0qJyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2Jhc2UtdXJpIGNoaWxkLXNyYyBjb25uZWN0LXNyYyBkZWZhdWx0LXNyYyBmb250LXNyYyBmb3JtLWFjdGlvbicgK1xuICAgICAgICAnIGZyYW1lLWFuY2VzdG9ycyBmcmFtZS1zcmMgaW1nLXNyYyBtZWRpYS1zcmMgb2JqZWN0LXNyYyBwbHVnaW4tdHlwZXMnICtcbiAgICAgICAgJyByZXBvcnQtdXJpIHNhbmRib3ggc2NyaXB0LXNyYyBzdHlsZS1zcmMnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdeQ29udGVudCcsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFJVTEUgPSB7XG4gICAgYmVnaW46IC8oPzpbQS1aXFxfXFwuXFwtXSt8LS1bYS16QS1aMC05Xy1dKylcXHMqOi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc7JywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IC9cXFMvLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rXFwoLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC9bXFx3LV0rL1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICcjWzAtOUEtRmEtZl0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9bPVxcL3wnXFwkXS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46IC8jW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAvXFwuW0EtWmEtejAtOV8tXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1hdHRyJyxcbiAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXBzZXVkbycsXG4gICAgICAgIGJlZ2luOiAvOig6KT9bYS16QS1aMC05XFxfXFwtXFwrXFwoXFwpXCInLl0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAKGZvbnQtZmFjZXxwYWdlKScsXG4gICAgICAgIGxleGVtZXM6ICdbYS16LV0rJyxcbiAgICAgICAga2V5d29yZHM6ICdmb250LWZhY2UgcGFnZSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQCcsIGVuZDogJ1t7O10nLCAvLyBhdF9ydWxlIGVhdGluZyBmaXJzdCBcIntcIiBpcyBhIGdvb2QgdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgZG9lc27igJl0IGxldCBpdCB0byBiZSBwYXJzZWQgYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcnVsZSBzZXQgYnV0IGluc3RlYWQgZHJvcHMgcGFyc2VyIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0IG1vZGUgd2hpY2ggaXMgaG93IGl0IHNob3VsZCBiZS5cbiAgICAgICAgaWxsZWdhbDogLzovLCAvLyBicmVhayBvbiBMZXNzIHZhcmlhYmxlcyBAdmFyOiAuLi5cbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFx3Ky9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxzLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLCBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgUlVMRSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKipcbiAqIEtub3duIGlzc3VlczpcbiAqXG4gKiAtIGludmFsaWQgaGV4IHN0cmluZyBsaXRlcmFscyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBkb3VibGUgcXVvdGVkIHN0cmluZ3NcbiAqICAgYnV0ICd4JyBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0cmluZyB3aWxsIG5vdCBiZSBtYXRjaGVkXG4gKlxuICogLSBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBub3QgY2hlY2tlZCBmb3IgbWF0Y2hpbmcgZW5kIGRlbGltaXRlclxuICogICAobm90IHBvc3NpYmxlIHRvIGRvIHdpdGgganMgcmVnZXhwKVxuICpcbiAqIC0gY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgY29sb3JlZCBhcyBhIHN0cmluZyAoaS5lLiBubyBrZXl3b3JkIGNvbG9yaW5nIGluc2lkZSBhIHRva2VuIHN0cmluZylcbiAqICAgYWxzbywgY29udGVudCBvZiB0b2tlbiBzdHJpbmcgaXMgbm90IHZhbGlkYXRlZCB0byBjb250YWluIG9ubHkgdmFsaWQgRCB0b2tlbnNcbiAqXG4gKiAtIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UgcnVsZSBpcyBub3Qgc3RyaWN0bHkgZm9sbG93aW5nIEQgZ3JhbW1hciAoYW55dGhpbmcgZm9sbG93aW5nICNsaW5lXG4gKiAgIHVwIHRvIHRoZSBlbmQgb2YgbGluZSBpcyBtYXRjaGVkIGFzIHNwZWNpYWwgdG9rZW4gc2VxdWVuY2UpXG4gKi9cblxuZnVuY3Rpb24oaGxqcykge1xuICAvKipcbiAgICogTGFuZ3VhZ2Uga2V5d29yZHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYWxpYXMgYWxpZ24gYXNtIGFzc2VydCBhdXRvIGJvZHkgYnJlYWsgYnl0ZSBjYXNlIGNhc3QgY2F0Y2ggY2xhc3MgJyArXG4gICAgICAnY29uc3QgY29udGludWUgZGVidWcgZGVmYXVsdCBkZWxldGUgZGVwcmVjYXRlZCBkbyBlbHNlIGVudW0gZXhwb3J0IGV4dGVybiBmaW5hbCAnICtcbiAgICAgICdmaW5hbGx5IGZvciBmb3JlYWNoIGZvcmVhY2hfcmV2ZXJzZXwxMCBnb3RvIGlmIGltbXV0YWJsZSBpbXBvcnQgaW4gaW5vdXQgaW50ICcgK1xuICAgICAgJ2ludGVyZmFjZSBpbnZhcmlhbnQgaXMgbGF6eSBtYWNybyBtaXhpbiBtb2R1bGUgbmV3IG5vdGhyb3cgb3V0IG92ZXJyaWRlIHBhY2thZ2UgJyArXG4gICAgICAncHJhZ21hIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyBwdXJlIHJlZiByZXR1cm4gc2NvcGUgc2hhcmVkIHN0YXRpYyBzdHJ1Y3QgJyArXG4gICAgICAnc3VwZXIgc3dpdGNoIHN5bmNocm9uaXplZCB0ZW1wbGF0ZSB0aGlzIHRocm93IHRyeSB0eXBlZGVmIHR5cGVpZCB0eXBlb2YgdW5pb24gJyArXG4gICAgICAndW5pdHRlc3QgdmVyc2lvbiB2b2lkIHZvbGF0aWxlIHdoaWxlIHdpdGggX19GSUxFX18gX19MSU5FX18gX19nc2hhcmVkfDEwICcgK1xuICAgICAgJ19fdGhyZWFkIF9fdHJhaXRzIF9fREFURV9fIF9fRU9GX18gX19USU1FX18gX19USU1FU1RBTVBfXyBfX1ZFTkRPUl9fIF9fVkVSU0lPTl9fJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdib29sIGNkb3VibGUgY2VudCBjZmxvYXQgY2hhciBjcmVhbCBkY2hhciBkZWxlZ2F0ZSBkb3VibGUgZHN0cmluZyBmbG9hdCBmdW5jdGlvbiAnICtcbiAgICAgICdpZG91YmxlIGlmbG9hdCBpcmVhbCBsb25nIHJlYWwgc2hvcnQgc3RyaW5nIHVieXRlIHVjZW50IHVpbnQgdWxvbmcgdXNob3J0IHdjaGFyICcgK1xuICAgICAgJ3dzdHJpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgbnVsbCB0cnVlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgbGl0ZXJhbCByZWdleHBzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZGVjaW1hbF9pbnRlZ2VyX3JlID0gJygwfFsxLTldW1xcXFxkX10qKScsXG4gICAgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlID0gJygwfFsxLTldW1xcXFxkX10qfFxcXFxkW1xcXFxkX10qfFtcXFxcZF9dKz9cXFxcZCknLFxuICAgIGJpbmFyeV9pbnRlZ2VyX3JlID0gJzBbYkJdWzAxX10rJyxcbiAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgPSAnKFtcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSp8X1tcXFxcZGEtZkEtRl1bXFxcXGRhLWZBLUZfXSopJyxcbiAgICBoZXhhZGVjaW1hbF9pbnRlZ2VyX3JlID0gJzBbeFhdJyArIGhleGFkZWNpbWFsX2RpZ2l0c19yZSxcblxuICAgIGRlY2ltYWxfZXhwb25lbnRfcmUgPSAnKFtlRV1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG4gICAgZGVjaW1hbF9mbG9hdF9yZSA9ICcoJyArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArICcoXFxcXC5cXFxcZCp8JyArIGRlY2ltYWxfZXhwb25lbnRfcmUgKyAnKXwnICtcbiAgICAgICAgICAgICAgICAnXFxcXGQrXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJ3wnICtcbiAgICAgICAgICAgICAgICAnXFxcXC4nICsgZGVjaW1hbF9pbnRlZ2VyX3JlICsgZGVjaW1hbF9leHBvbmVudF9yZSArICc/JyArXG4gICAgICAgICAgICAgICcpJyxcbiAgICBoZXhhZGVjaW1hbF9mbG9hdF9yZSA9ICcoMFt4WF0oJyArXG4gICAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgKyAnXFxcXC4nICsgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICsgJ3wnK1xuICAgICAgICAgICAgICAgICAgJ1xcXFwuPycgKyBoZXhhZGVjaW1hbF9kaWdpdHNfcmUgK1xuICAgICAgICAgICAgICAgICAnKVtwUF1bKy1dPycgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKScsXG5cbiAgICBpbnRlZ2VyX3JlID0gJygnICtcbiAgICAgIGRlY2ltYWxfaW50ZWdlcl9yZSArICd8JyArXG4gICAgICBiaW5hcnlfaW50ZWdlcl9yZSAgKyAnfCcgK1xuICAgICAgIGhleGFkZWNpbWFsX2ludGVnZXJfcmUgICArXG4gICAgJyknLFxuXG4gICAgZmxvYXRfcmUgPSAnKCcgK1xuICAgICAgaGV4YWRlY2ltYWxfZmxvYXRfcmUgKyAnfCcgK1xuICAgICAgZGVjaW1hbF9mbG9hdF9yZSAgK1xuICAgICcpJztcblxuICAvKipcbiAgICogRXNjYXBlIHNlcXVlbmNlIHN1cHBvcnRlZCBpbiBEIHN0cmluZyBhbmQgY2hhcmFjdGVyIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICB2YXIgZXNjYXBlX3NlcXVlbmNlX3JlID0gJ1xcXFxcXFxcKCcgK1xuICAgICAgICAgICAgICAnW1xcJ1wiXFxcXD9cXFxcXFxcXGFiZm5ydHZdfCcgKyAgLy8gY29tbW9uIGVzY2FwZXNcbiAgICAgICAgICAgICAgJ3VbXFxcXGRBLUZhLWZdezR9fCcgKyAgICAgLy8gZm91ciBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJ1swLTddezEsM318JyArICAgICAgIC8vIG9uZSB0byB0aHJlZSBvY3RhbCBkaWdpdCBhc2NpaSBjaGFyIGNvZGVcbiAgICAgICAgICAgICAgJ3hbXFxcXGRBLUZhLWZdezJ9fCcgKyAgICAvLyB0d28gaGV4IGRpZ2l0IGFzY2lpIGNoYXIgY29kZVxuICAgICAgICAgICAgICAnVVtcXFxcZEEtRmEtZl17OH0nICsgICAgICAvLyBlaWdodCBoZXggZGlnaXQgdW5pY29kZSBjb2RlcG9pbnRcbiAgICAgICAgICAgICAgJyl8JyArXG4gICAgICAgICAgICAgICcmW2EtekEtWlxcXFxkXXsyLH07JzsgICAgICAvLyBuYW1lZCBjaGFyYWN0ZXIgZW50aXR5XG5cbiAgLyoqXG4gICAqIEQgaW50ZWdlciBudW1iZXIgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0lOVEVHRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYicgKyBpbnRlZ2VyX3JlICsgJyhMfHV8VXxMdXxMVXx1THxVTCk/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBbRF9GTE9BVF9NT0RFIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfRkxPQVRfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnXFxcXGIoJyArXG4gICAgICAgIGZsb2F0X3JlICsgJyhbZkZdfEx8aXxbZkZdaXxMaSk/fCcgK1xuICAgICAgICBpbnRlZ2VyX3JlICsgJyhpfFtmRl1pfExpKScgK1xuICAgICAgJyknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGNoYXJhY3RlciBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9DSEFSQUNURVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnKCcgKyBlc2NhcGVfc2VxdWVuY2VfcmUgKyAnfC4pJywgZW5kOiAnXFwnJyxcbiAgICBpbGxlZ2FsOiAnLidcbiAgfTtcblxuICAvKipcbiAgICogRCBzdHJpbmcgZXNjYXBlIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9FU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgYmVnaW46IGVzY2FwZV9zZXF1ZW5jZV9yZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogRCBkb3VibGUgcXVvdGVkIHN0cmluZyBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbRF9FU0NBUEVfU0VRVUVOQ0VdLFxuICAgIGVuZDogJ1wiW2N3ZF0/J1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIHd5c2l3eWcgYW5kIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbHNcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX1dZU0lXWUdfREVMSU1JVEVEX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbcnFdXCInLFxuICAgIGVuZDogJ1wiW2N3ZF0/JyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhbHRlcm5hdGUgd3lzaXd5ZyBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLFxuICAgIGVuZDogJ2BbY3dkXT8nXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgaGV4YWRlY2ltYWwgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0hFWF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAneFwiW1xcXFxkYS1mQS1GXFxcXHNcXFxcblxcXFxyXSpcIltjd2RdPycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIC8qKlxuICAgKiBEIGRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfVE9LRU5fU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ3FcIlxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfVwiJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYXNoYmFuZyBzdXBwb3J0XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9IQVNIQkFOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBzcGVjaWFsIHRva2VuIHNlcXVlbmNlXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjKGxpbmUpJyxcbiAgICBlbmQ6ICckJyxcbiAgICByZWxldmFuY2U6IDVcbiAgfTtcblxuICAvKipcbiAgICogRCBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9BVFRSSUJVVEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0BbYS16QS1aX11bYS16QS1aX1xcXFxkXSonXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgbmVzdGluZyBjb21tZW50XG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVChcbiAgICAnXFxcXC9cXFxcKycsXG4gICAgJ1xcXFwrXFxcXC8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXSxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IERfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9ORVNUSU5HX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgRF9IRVhfU1RSSU5HX01PREUsXG4gICAgICAgIERfU1RSSU5HX01PREUsXG4gICAgICAgIERfV1lTSVdZR19ERUxJTUlURURfU1RSSU5HX01PREUsXG4gICAgICAgIERfQUxURVJOQVRFX1dZU0lXWUdfU1RSSU5HX01PREUsXG4gICAgICAgIERfVE9LRU5fU1RSSU5HX01PREUsXG4gICAgICAgIERfRkxPQVRfTU9ERSxcbiAgICAgICAgRF9JTlRFR0VSX01PREUsXG4gICAgICAgIERfQ0hBUkFDVEVSX01PREUsXG4gICAgICAgIERfSEFTSEJBTkdfTU9ERSxcbiAgICAgICAgRF9TUEVDSUFMX1RPS0VOX1NFUVVFTkNFX01PREUsXG4gICAgICAgIERfQVRUUklCVVRFX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWQnLCAnbWtkb3duJywgJ21rZCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBoaWdobGlnaHQgaGVhZGVyc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXiN7MSw2fScsIGVuZDogJyQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14uKz9cXFxcbls9LV17Mix9JCcgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGh0bWxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdHMgKGluZGljYXRvcnMgb25seSlcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKFsqKy1dfChcXFxcZCtcXFxcLikpXFxcXHMrJ1xuICAgICAgfSxcbiAgICAgIC8vIHN0cm9uZyBzZWdtZW50c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJvbmcnLFxuICAgICAgICBiZWdpbjogJ1sqX117Mn0uKz9bKl9dezJ9J1xuICAgICAgfSxcbiAgICAgIC8vIGVtcGhhc2lzIHNlZ21lbnRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCouKz9cXFxcKicgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXy4rP18nXG4gICAgICAgICAgLCByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBibG9ja3F1b3Rlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdxdW90ZScsXG4gICAgICAgIGJlZ2luOiAnXj5cXFxccysnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIC8vIGNvZGUgc25pcHBldHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdeYGBgXFxcXHcqXFxcXHMqJCcsIGVuZDogJ15gYGBbIF0qJCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnYC4rP2AnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ14oIHs0fXxcXFxcdCknLCBlbmQ6ICckJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGhvcml6b250YWwgcnVsZXNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeWy1cXFxcKl17Myx9JywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICAvLyB1c2luZyBsaW5rcyAtIHRpdGxlIGFuZCBsaW5rXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsuKz9cXFxcXVtcXFxcKFxcXFxbXS4qP1tcXFxcKVxcXFxdXScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9eXFxbW15cXG5dK1xcXTovLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAvOlxccyovLCBlbmQ6IC8kLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICB9XSxcbiAgfTtcblxuICB2YXIgQlJBQ0VEX1NVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAnXFxcXCR7JyxcbiAgICAgIGVuZDogJ30nXG4gICAgfSwgXSxcbiAgICBrZXl3b3JkczogJ3RydWUgZmFsc2UgbnVsbCB0aGlzIGlzIG5ldyBzdXBlcicsXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICBiZWdpbjogJ3JcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIlwiXCInLFxuICAgICAgICBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3JcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCdcXCdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCdcXCdcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIEJSQUNFRF9TVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgQlJBQ0VEX1NVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBCUkFDRURfU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFLCBTVFJJTkdcbiAgXTtcblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogJ2Fic3RyYWN0IGFzIGFzc2VydCBhc3luYyBhd2FpdCBicmVhayBjYXNlIGNhdGNoIGNsYXNzIGNvbnN0IGNvbnRpbnVlIGNvdmFyaWFudCBkZWZhdWx0IGRlZmVycmVkIGRvICcgK1xuICAgICAgJ2R5bmFtaWMgZWxzZSBlbnVtIGV4cG9ydCBleHRlbmRzIGV4dGVuc2lvbiBleHRlcm5hbCBmYWN0b3J5IGZhbHNlIGZpbmFsIGZpbmFsbHkgZm9yIEZ1bmN0aW9uIGdldCBoaWRlIGlmICcgK1xuICAgICAgJ2ltcGxlbWVudHMgaW1wb3J0IGluIGluZmVyZmFjZSBpcyBsaWJyYXJ5IG1peGluIG5ldyBudWxsIG9uIG9wZXJhdG9yIHBhcnQgcmV0aHJvdyByZXR1cm4gc2V0IHNob3cgc3RhdGljICcgK1xuICAgICAgJ3N1cGVyIHN3aXRjaCBzeW5jIHRoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZWRlZiB2YXIgdm9pZCB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgIC8vIGRhcnQ6Y29yZVxuICAgICAgJ0NvbXBhcmFibGUgRGF0ZVRpbWUgRHVyYXRpb24gRnVuY3Rpb24gSXRlcmFibGUgSXRlcmF0b3IgTGlzdCBNYXAgTWF0Y2ggTnVsbCBPYmplY3QgUGF0dGVybiBSZWdFeHAgU2V0ICcgK1xuICAgICAgJ1N0b3B3YXRjaCBTdHJpbmcgU3RyaW5nQnVmZmVyIFN0cmluZ1NpbmsgU3ltYm9sIFR5cGUgVXJpIGJvb2wgZG91YmxlIGR5bmFtaWMgaW50IG51bSBwcmludCAnICtcbiAgICAgIC8vIGRhcnQ6aHRtbFxuICAgICAgJ0VsZW1lbnQgRWxlbWVudExpc3QgZG9jdW1lbnQgcXVlcnlTZWxlY3RvciBxdWVyeVNlbGVjdG9yQWxsIHdpbmRvdydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgICAnXFxcXCovJywge1xuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnbWFya2Rvd24nXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvLy8rXFxcXHMqJyxcbiAgICAgICAgJyQnLCB7XG4gICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ21hcmtkb3duJyxcbiAgICAgICAgICAgIGJlZ2luOiAnLicsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZXhwb3J0cyByZWdpc3RlciBmaWxlIHNobCBhcnJheSByZWNvcmQgcHJvcGVydHkgZm9yIG1vZCB3aGlsZSBzZXQgYWxseSBsYWJlbCB1c2VzIHJhaXNlIG5vdCAnICtcbiAgICAnc3RvcmVkIGNsYXNzIHNhZmVjYWxsIHZhciBpbnRlcmZhY2Ugb3IgcHJpdmF0ZSBzdGF0aWMgZXhpdCBpbmRleCBpbmhlcml0ZWQgdG8gZWxzZSBzdGRjYWxsICcgK1xuICAgICdvdmVycmlkZSBzaHIgYXNtIGZhciByZXNvdXJjZXN0cmluZyBmaW5hbGl6YXRpb24gcGFja2VkIHZpcnR1YWwgb3V0IGFuZCBwcm90ZWN0ZWQgbGlicmFyeSBkbyAnICtcbiAgICAneG9yd3JpdGUgZ290byBuZWFyIGZ1bmN0aW9uIGVuZCBkaXYgb3ZlcmxvYWQgb2JqZWN0IHVuaXQgYmVnaW4gc3RyaW5nIG9uIGlubGluZSByZXBlYXQgdW50aWwgJyArXG4gICAgJ2Rlc3RydWN0b3Igd3JpdGUgbWVzc2FnZSBwcm9ncmFtIHdpdGggcmVhZCBpbml0aWFsaXphdGlvbiBleGNlcHQgZGVmYXVsdCBuaWwgaWYgY2FzZSBjZGVjbCBpbiAnICtcbiAgICAnZG93bnRvIHRocmVhZHZhciBvZiB0cnkgcGFzY2FsIGNvbnN0IGV4dGVybmFsIGNvbnN0cnVjdG9yIHR5cGUgcHVibGljIHRoZW4gaW1wbGVtZW50YXRpb24gJyArXG4gICAgJ2ZpbmFsbHkgcHVibGlzaGVkIHByb2NlZHVyZSBhYnNvbHV0ZSByZWludHJvZHVjZSBvcGVyYXRvciBhcyBpcyBhYnN0cmFjdCBhbGlhcyBhc3NlbWJsZXIgJyArXG4gICAgJ2JpdHBhY2tlZCBicmVhayBjb250aW51ZSBjcHBkZWNsIGN2YXIgZW51bWVyYXRvciBleHBlcmltZW50YWwgcGxhdGZvcm0gZGVwcmVjYXRlZCAnICtcbiAgICAndW5pbXBsZW1lbnRlZCBkeW5hbWljIGV4cG9ydCBmYXIxNiBmb3J3YXJkIGdlbmVyaWMgaGVscGVyIGltcGxlbWVudHMgaW50ZXJydXB0IGlvY2hlY2tzICcgK1xuICAgICdsb2NhbCBuYW1lIG5vZGVmYXVsdCBub3JldHVybiBub3N0YWNrZnJhbWUgb2xkZnBjY2FsbCBvdGhlcndpc2Ugc2F2ZXJlZ2lzdGVycyBzb2Z0ZmxvYXQgJyArXG4gICAgJ3NwZWNpYWxpemUgc3RyaWN0IHVuYWxpZ25lZCB2YXJhcmdzICc7XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoL1xcey8sIC9cXH0vLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLywge3JlbGV2YW5jZTogMTB9KVxuICBdO1xuICB2YXIgRElSRUNUSVZFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfSxcbiAgICAgIHtiZWdpbjogL1xcKFxcKlxcJC8sIGVuZDogL1xcKlxcKS99XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46IC8nJy99XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC8oI1xcZCspKy9cbiAgfTtcbiAgdmFyIENMQVNTID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKj1cXFxccypjbGFzc1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3IgZGVzdHJ1Y3RvciBwcm9jZWR1cmUnLCBlbmQ6IC9bOjtdLyxcbiAgICBrZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yfDEwIGRlc3RydWN0b3J8MTAgcHJvY2VkdXJlfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HLCBESVJFQ1RJVkVdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgICAgfSxcbiAgICAgIERJUkVDVElWRVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkcHInLCAnZGZtJywgJ3BhcycsICdwYXNjYWwnLCAnZnJlZXBhc2NhbCcsICdsYXphcnVzJywgJ2xwcicsICdsZm0nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXCJ8XFwkW0ctWmctel18XFwvXFwqfDxcXC98XFx8LyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLCBDSEFSX1NUUklORyxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBDTEFTUyxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgRElSRUNUSVZFXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYXRjaCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL15AQCArXFwtXFxkKyxcXGQrICtcXCtcXGQrLFxcZCsgK0BAJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCpcXCpcXCogK1xcZCssXFxkKyArXFwqXFwqXFwqXFwqJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXC1cXC1cXC0gK1xcZCssXFxkKyArXFwtXFwtXFwtXFwtJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL0luZGV4OiAvLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvPXszLH0vLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcLXszfS8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqezN9IC8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwrezN9LywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXCp7MTV9JC8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhZGRpdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwrJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2RlbGV0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXC0nLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxcIScsIGVuZDogJyQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEZJTFRFUiA9IHtcbiAgICBiZWdpbjogL1xcfFtBLVphLXpdKzo/LyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbmFtZTpcbiAgICAgICAgJ3RydW5jYXRld29yZHMgcmVtb3ZldGFncyBsaW5lYnJlYWtzYnIgeWVzbm8gZ2V0X2RpZ2l0IHRpbWVzaW5jZSByYW5kb20gc3RyaXB0YWdzICcgK1xuICAgICAgICAnZmlsZXNpemVmb3JtYXQgZXNjYXBlIGxpbmVicmVha3MgbGVuZ3RoX2lzIGxqdXN0IHJqdXN0IGN1dCB1cmxpemUgZml4X2FtcGVyc2FuZHMgJyArXG4gICAgICAgICd0aXRsZSBmbG9hdGZvcm1hdCBjYXBmaXJzdCBwcHJpbnQgZGl2aXNpYmxlYnkgYWRkIG1ha2VfbGlzdCB1bm9yZGVyZWRfbGlzdCB1cmxlbmNvZGUgJyArXG4gICAgICAgICd0aW1ldW50aWwgdXJsaXpldHJ1bmMgd29yZGNvdW50IHN0cmluZ2Zvcm1hdCBsaW5lbnVtYmVycyBzbGljZSBkYXRlIGRpY3Rzb3J0ICcgK1xuICAgICAgICAnZGljdHNvcnRyZXZlcnNlZCBkZWZhdWx0X2lmX25vbmUgcGx1cmFsaXplIGxvd2VyIGpvaW4gY2VudGVyIGRlZmF1bHQgJyArXG4gICAgICAgICd0cnVuY2F0ZXdvcmRzX2h0bWwgdXBwZXIgbGVuZ3RoIHBob25lMm51bWVyaWMgd29yZHdyYXAgdGltZSBhZGRzbGFzaGVzIHNsdWdpZnkgZmlyc3QgJyArXG4gICAgICAgICdlc2NhcGVqcyBmb3JjZV9lc2NhcGUgaXJpZW5jb2RlIGxhc3Qgc2FmZSBzYWZlc2VxIHRydW5jYXRlY2hhcnMgbG9jYWxpemUgdW5sb2NhbGl6ZSAnICtcbiAgICAgICAgJ2xvY2FsdGltZSB1dGMgdGltZXpvbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnamluamEnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9cXHslXFxzKmNvbW1lbnRcXHMqJX0vLCAvXFx7JVxccyplbmRjb21tZW50XFxzKiV9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgJ2NvbW1lbnQgZW5kY29tbWVudCBsb2FkIHRlbXBsYXRldGFnIGlmY2hhbmdlZCBlbmRpZmNoYW5nZWQgaWYgZW5kaWYgZmlyc3RvZiBmb3IgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZvciBpZm5vdGVxdWFsIGVuZGlmbm90ZXF1YWwgd2lkdGhyYXRpbyBleHRlbmRzIGluY2x1ZGUgc3BhY2VsZXNzICcgK1xuICAgICAgICAgICAgICAgICdlbmRzcGFjZWxlc3MgcmVncm91cCBpZmVxdWFsIGVuZGlmZXF1YWwgc3NpIG5vdyB3aXRoIGN5Y2xlIHVybCBmaWx0ZXIgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGZpbHRlciBkZWJ1ZyBibG9jayBlbmRibG9jayBlbHNlIGF1dG9lc2NhcGUgZW5kYXV0b2VzY2FwZSBjc3JmX3Rva2VuIGVtcHR5IGVsaWYgJyArXG4gICAgICAgICAgICAgICAgJ2VuZHdpdGggc3RhdGljIHRyYW5zIGJsb2NrdHJhbnMgZW5kYmxvY2t0cmFucyBnZXRfc3RhdGljX3ByZWZpeCBnZXRfbWVkaWFfcHJlZml4ICcgK1xuICAgICAgICAgICAgICAgICdwbHVyYWwgZ2V0X2N1cnJlbnRfbGFuZ3VhZ2UgbGFuZ3VhZ2UgZ2V0X2F2YWlsYWJsZV9sYW5ndWFnZXMgJyArXG4gICAgICAgICAgICAgICAgJ2dldF9jdXJyZW50X2xhbmd1YWdlX2JpZGkgZ2V0X2xhbmd1YWdlX2luZm8gZ2V0X2xhbmd1YWdlX2luZm9fbGlzdCBsb2NhbGl6ZSAnICtcbiAgICAgICAgICAgICAgICAnZW5kbG9jYWxpemUgbG9jYWx0aW1lIGVuZGxvY2FsdGltZSB0aW1lem9uZSBlbmR0aW1lem9uZSBnZXRfY3VycmVudF90aW1lem9uZSAnICtcbiAgICAgICAgICAgICAgICAndmVyYmF0aW0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBrZXl3b3JkczogJ2luIGJ5IGFzJyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtGSUxURVJdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbRklMVEVSXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiaW5kJywgJ3pvbmUnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ0lOIEEgQUFBQSBBRlNEQiBBUEwgQ0FBIENETlNLRVkgQ0RTIENFUlQgQ05BTUUgREhDSUQgRExWIEROQU1FIEROU0tFWSBEUyBISVAgSVBTRUNLRVkgS0VZIEtYICcgK1xuICAgICAgICAnTE9DIE1YIE5BUFRSIE5TIE5TRUMgTlNFQzMgTlNFQzNQQVJBTSBQVFIgUlJTSUcgUlAgU0lHIFNPQSBTUlYgU1NIRlAgVEEgVEtFWSBUTFNBIFRTSUcgVFhUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFwkKFRUTHxHRU5FUkFURXxJTkNMVURFfE9SSUdJTilcXGIvXG4gICAgICB9LFxuICAgICAgLy8gSVB2NlxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIElQdjRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSwge2JlZ2luOiAvXFxiXFxkK1tkaHdtXT8vfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZG9ja2VyJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogJ2Zyb20gbWFpbnRhaW5lciBleHBvc2UgZW52IGFyZyB1c2VyIG9uYnVpbGQgc3RvcHNpZ25hbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3J1biBjbWQgZW50cnlwb2ludCB2b2x1bWUgYWRkIGNvcHkgd29ya2RpciBsYWJlbCBoZWFsdGhjaGVjayBzaGVsbCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogL1teXFxcXF0kLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2Jhc2gnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6ICc8LydcbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgL15cXHMqQD9yZW1cXGIvLCAvJC8sXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH1cbiAgKTtcbiAgdmFyIExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW0EtWmEtei5fP11bQS1aYS16MC05XyQjQH4uP10qKDp8XFxcXHMrbGFiZWwpJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2JhdCcsICdjbWQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgZWxzZSBnb3RvIGZvciBpbiBkbyBjYWxsIGV4aXQgbm90IGV4aXN0IGVycm9ybGV2ZWwgZGVmaW5lZCAnICtcbiAgICAgICAgJ2VxdSBuZXEgbHNzIGxlcSBndHIgZ2VxJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncHJuIG51bCBscHQzIGxwdDIgbHB0MSBjb24gY29tNCBjb20zIGNvbTIgY29tMSBhdXggJyArXG4gICAgICAgICdzaGlmdCBjZCBkaXIgZWNobyBzZXRsb2NhbCBlbmRsb2NhbCBzZXQgcGF1c2UgY29weSAnICtcbiAgICAgICAgJ2FwcGVuZCBhc3NvYyBhdCBhdHRyaWIgYnJlYWsgY2FjbHMgY2QgY2hjcCBjaGRpciBjaGtkc2sgY2hrbnRmcyBjbHMgY21kIGNvbG9yICcgK1xuICAgICAgICAnY29tcCBjb21wYWN0IGNvbnZlcnQgZGF0ZSBkaXIgZGlza2NvbXAgZGlza2NvcHkgZG9za2V5IGVyYXNlIGZzICcgK1xuICAgICAgICAnZmluZCBmaW5kc3RyIGZvcm1hdCBmdHlwZSBncmFmdGFibCBoZWxwIGtleWIgbGFiZWwgbWQgbWtkaXIgbW9kZSBtb3JlIG1vdmUgcGF0aCAnICtcbiAgICAgICAgJ3BhdXNlIHByaW50IHBvcGQgcHVzaGQgcHJvbXQgcmQgcmVjb3ZlciByZW0gcmVuYW1lIHJlcGxhY2UgcmVzdG9yZSBybWRpciBzaGlmdCcgK1xuICAgICAgICAnc29ydCBzdGFydCBzdWJzdCB0aW1lIHRpdGxlIHRyZWUgdHlwZSB2ZXIgdmVyaWZ5IHZvbCAnICtcbiAgICAgICAgLy8gd2ludXRpbHNcbiAgICAgICAgJ3BpbmcgbmV0IGlwY29uZmlnIHRhc2traWxsIHhjb3B5IHJlbiBkZWwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAvJSVbXiBdfCVbXiBdKz8lfCFbXiBdKz8hL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogTEFCRUwuYmVnaW4sIGVuZDogJ2dvdG86ZW9mJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICcoW19hLXpBLVpdXFxcXHcqXFxcXC4pKihbX2EtekEtWl1cXFxcdyo6KT9bX2EtekEtWl1cXFxcdyonfSksXG4gICAgICAgICAgQ09NTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1xcXFxiXFxcXGQrJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgQ09NTUVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBRVU9URURfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvXG4gIH07XG4gIHZhciBBUE9TX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcbiAgdmFyIFVOUVVPVEVEX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdbXFxcXHctP10rOlxcXFx3KycsIGVuZDogJ1xcXFxXJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFZBTFVFTEVTU19QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXHcrLT9cXFxcdysnLCBlbmQ6ICdcXFxcVycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogJ2RzY29uZmlnJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdeZHNjb25maWcnLCBlbmQ6ICdcXFxccycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICcobGlzdHxjcmVhdGV8Z2V0fHNldHxkZWxldGUpLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnIUAjJCVeJiooKScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICctLShcXFxcdyspJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgUVVPVEVEX1BST1BFUlRZLFxuICAgICAgQVBPU19QUk9QRVJUWSxcbiAgICAgIFVOUVVPVEVEX1BST1BFUlRZLFxuICAgICAgVkFMVUVMRVNTX1BST1BFUlRZLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IGJlZ2luOiAnKCh1OD98VSl8TCk/XCInIH0pLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VSk/UlwiJywgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnXFxcXFxcXFw/LicsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKScgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiBpZmRlZiBpZm5kZWYnfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkdTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX1JFRkVSRU5DRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJlthLXpcXFxcZF9dKlxcXFxiJ1xuICB9O1xuXG4gIHZhciBEVFNfS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhLWtleXdvcmQnLFxuICAgIGJlZ2luOiAnL1thLXpdW2EtelxcXFxkLV0qLydcbiAgfTtcblxuICB2YXIgRFRTX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdeXFxcXHMqW2EtekEtWl9dW2EtekEtWlxcXFxkX10qOidcbiAgfTtcblxuICB2YXIgRFRTX0NFTExfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJzwnLFxuICAgIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVJTLFxuICAgICAgRFRTX1JFRkVSRU5DRVxuICAgIF1cbiAgfTtcblxuICB2YXIgRFRTX05PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAvW2EtekEtWl9dW2EtekEtWlxcZF9AXSpcXHN7LyxcbiAgICBlbmQ6IC9bezs9XS8sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIHZhciBEVFNfUk9PVF9OT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbjogJy9cXFxccyp7JyxcbiAgICBlbmQ6ICd9OycsXG4gICAgcmVsZXZhbmNlOiAxMCxcbiAgICBjb250YWluczogW1xuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HU1xuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBcIlwiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBEVFNfUk9PVF9OT0RFLFxuICAgICAgRFRTX1JFRkVSRU5DRSxcbiAgICAgIERUU19LRVlXT1JELFxuICAgICAgRFRTX0xBQkVMLFxuICAgICAgRFRTX05PREUsXG4gICAgICBEVFNfQ0VMTF9QUk9QRVJUWSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3JkczogXCJcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFWFBSRVNTSU9OX0tFWVdPUkRTID0gJ2lmIGVxIG5lIGx0IGx0ZSBndCBndGUgc2VsZWN0IGRlZmF1bHQgbWF0aCBzZXAnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZHN0J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtbI1xcL10vLCBlbmQ6IC9cXH0vLCBpbGxlZ2FsOiAvOy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC4tXSsvLFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7LywgZW5kOiAvXFx9LywgaWxsZWdhbDogLzsvLFxuICAgICAgICBrZXl3b3JkczogRVhQUkVTU0lPTl9LRVlXT1JEU1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIGNvbW1lbnRNb2RlID0gaGxqcy5DT01NRU5UKC9cXChcXCovLCAvXFwqXFwpLyk7XG5cbiAgICB2YXIgbm9uVGVybWluYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgIGJlZ2luOiAvXlsgXSpbYS16QS1aXVthLXpBLVotXSooW1xccy1dK1thLXpBLVpdW2EtekEtWl0qKSovXG4gICAgfTtcblxuICAgIHZhciBzcGVjaWFsU2VxdWVuY2VNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwibWV0YVwiLFxuICAgICAgICBiZWdpbjogL1xcPy4qXFw/L1xuICAgIH07XG5cbiAgICB2YXIgcnVsZUJvZHlNb2RlID0ge1xuICAgICAgICBiZWdpbjogLz0vLCBlbmQ6IC87LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgICAgICAgc3BlY2lhbFNlcXVlbmNlTW9kZSxcbiAgICAgICAgICAgIC8vIHRlcm1pbmFsc1xuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLCBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBjb21tZW50TW9kZSxcbiAgICAgICAgICAgIG5vblRlcm1pbmFsTW9kZSxcbiAgICAgICAgICAgIHJ1bGVCb2R5TW9kZVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBFTElYSVJfSURFTlRfUkUgPSAnW2EtekEtWl9dW2EtekEtWjAtOV8uXSooXFxcXCF8XFxcXD8pPyc7XG4gIHZhciBFTElYSVJfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgRUxJWElSX0tFWVdPUkRTID1cbiAgICAnYW5kIGZhbHNlIHRoZW4gZGVmaW5lZCBtb2R1bGUgaW4gcmV0dXJuIHJlZG8gcmV0cnkgZW5kIGZvciB0cnVlIHNlbGYgd2hlbiAnICtcbiAgICAnbmV4dCB1bnRpbCBkbyBiZWdpbiB1bmxlc3MgbmlsIGJyZWFrIG5vdCBjYXNlIGNvbmQgYWxpYXMgd2hpbGUgZW5zdXJlIG9yICcgK1xuICAgICdpbmNsdWRlIHVzZSBhbGlhcyBmbiBxdW90ZSByZXF1aXJlIGltcG9ydCB3aXRofDAnO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnI1xcXFx7JywgZW5kOiAnfScsXG4gICAgbGV4ZW1lczogRUxJWElSX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBFTElYSVJfS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZiBkZWZwIGRlZm1hY3JvJywgZW5kOiAvXFxCXFxiLywgLy8gdGhlIG1vZGUgaXMgZW5kZWQgYnkgdGhlIHRpdGxlXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgYmVnaW46IEVMSVhJUl9JREVOVF9SRSxcbiAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgfSlcbiAgICBdXG4gIH07XG4gIHZhciBDTEFTUyA9IGhsanMuaW5oZXJpdChGVU5DVElPTiwge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmaW1wbCBkZWZtb2R1bGUgZGVmcHJvdG9jb2wgZGVmcmVjb3JkJywgZW5kOiAvXFxiZG9cXGJ8JHw7L1xuICB9KTtcbiAgdmFyIEVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFNUUklORyxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIENMQVNTLFxuICAgIEZVTkNUSU9OLFxuICAgIHtcbiAgICAgIGJlZ2luOiAnOjonXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46ICc6KD8hW1xcXFxzOl0pJyxcbiAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCB7YmVnaW46IEVMSVhJUl9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBFTElYSVJfSURFTlRfUkUgKyAnOig/ITopJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMG9bMC03X10rKXwoXFxcXGIwYlswMV9dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoLT9cXFxcYlsxLTldWzAtOV9dKiguWzAtOV9dKyhbZUVdWy0rXT9bMC05XSspPyk/KScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgIGJlZ2luOiAnKFxcXFwkXFxcXFcpfCgoXFxcXCR8XFxcXEBcXFxcQD8pKFxcXFx3KykpJ1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICctPidcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnKVxcXFxzKicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46ICcvJywgZW5kOiAnL1thLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFTElYSVJfREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIGxleGVtZXM6IEVMSVhJUl9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogRUxJWElSX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBFTElYSVJfREVGQVVMVF9DT05UQUlOU1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIENPTlNUUlVDVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcJ10qJywgLy8gVE9ETzogb3RoZXIgY29uc3RydWN0b3JzIChidWlsdC1pbiwgaW5maXgpLlxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgaWxsZWdhbDogJ1wiJyxcbiAgICBjb250YWluczogW1xuICAgICAge2NsYXNzTmFtZTogJ3R5cGUnLCBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHddKihcXFxcKChcXFxcLlxcXFwufCx8XFxcXHcrKVxcXFwpKT8nfSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHZhciBDSEFSQUNURVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJ1xcXFxcXFxcPy4nLCBlbmQ6ICdcXCcnLFxuICAgIGlsbGVnYWw6ICcuJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnbGV0IGluIGlmIHRoZW4gZWxzZSBjYXNlIG9mIHdoZXJlIG1vZHVsZSBpbXBvcnQgZXhwb3NpbmcgJyArXG4gICAgICAndHlwZSBhbGlhcyBhcyBpbmZpeCBpbmZpeGwgaW5maXhyIHBvcnQgZWZmZWN0IGNvbW1hbmQgc3Vic2NyaXB0aW9uJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBUb3AtbGV2ZWwgY29uc3RydWN0aW9ucy5cblxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAncG9ydCBlZmZlY3QgbW9kdWxlJywgZW5kOiAnZXhwb3NpbmcnLFxuICAgICAgICBrZXl3b3JkczogJ3BvcnQgZWZmZWN0IG1vZHVsZSB3aGVyZSBjb21tYW5kIHN1YnNjcmlwdGlvbiBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBhcyBleHBvc2luZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3R5cGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICd0eXBlIGFsaWFzJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgUkVDT1JELCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luZml4IGluZml4bCBpbmZpeHInLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3BvcnQnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdwb3J0JyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NRU5UXVxuICAgICAgfSxcblxuICAgICAgLy8gTGl0ZXJhbHMgYW5kIG5hbWVzLlxuXG4gICAgICBDSEFSQUNURVIsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQ09OU1RSVUNUT1IsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdeW19hLXpdW1xcXFx3XFwnXSonfSksXG4gICAgICBDT01NRU5ULFxuXG4gICAgICB7YmVnaW46ICctPnw8LSd9IC8vIE5vIG1hcmt1cCwgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdLFxuICAgIGlsbGVnYWw6IC87L1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFJVQllfTUVUSE9EX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dP3xbLSt+XVxcXFxAfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8nO1xuICB2YXIgUlVCWV9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuICcgK1xuICAgICAgJ25leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSAnICtcbiAgICAgICdyZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnXG4gIH07XG4gIHZhciBZQVJET0NUQUcgPSB7XG4gICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gIH07XG4gIHZhciBJUkJfT0JKRUNUID0ge1xuICAgIGJlZ2luOiAnIzwnLCBlbmQ6ICc+J1xuICB9O1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnIycsXG4gICAgICAnJCcsXG4gICAgICB7XG4gICAgICAgIGNvbnRhaW5zOiBbWUFSRE9DVEFHXVxuICAgICAgfVxuICAgICksXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPWJlZ2luJyxcbiAgICAgICdeXFxcXD1lbmQnLFxuICAgICAge1xuICAgICAgICBjb250YWluczogW1lBUkRPQ1RBR10sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnXl9fRU5EX18nLCAnXFxcXG4kJylcbiAgXTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyNcXFxceycsIGVuZDogJ30nLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvYC8sIGVuZDogL2AvfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP3snLCBlbmQ6ICd9J30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT88JywgZW5kOiAnPid9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/LycsIGVuZDogJy8nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPyUnLCBlbmQ6ICclJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT8tJywgZW5kOiAnLSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/XFxcXHwnLCBlbmQ6ICdcXFxcfCd9LFxuICAgICAge1xuICAgICAgICAvLyBcXEIgaW4gdGhlIGJlZ2lubmluZyBzdXBwcmVzc2VzIHJlY29nbml0aW9uIG9mID8tc2VxdWVuY2VzIHdoZXJlID9cbiAgICAgICAgLy8gaXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGEgcHJlY2VkaW5nIGlkZW50aWZpZXIsIGFzIGluOiBgZnVuYz80YFxuICAgICAgICBiZWdpbjogL1xcQlxcPyhcXFxcXFxkezEsM318XFxcXHhbQS1GYS1mMC05XXsxLDJ9fFxcXFx1W0EtRmEtZjAtOV17NH18XFxcXD9cXFMpXFxiL1xuICAgICAgfSxcbiAgICAgIHsgLy8gaGVyZWRvY3NcbiAgICAgICAgYmVnaW46IC88PFstfl0/Jz8oXFx3KykoPzoufFxcbikqP1xcblxccypcXDFcXGIvLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAvPDxbLX5dPyc/LyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGVuZFNhbWVBc0JlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzUGFyZW50OiB0cnVlLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gIH07XG5cbiAgdmFyIFJVQllfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBTVFJJTkcsXG4gICAgSVJCX09CSkVDVCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgbW9kdWxlJywgZW5kOiAnJHw7JyxcbiAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ1tBLVphLXpfXVxcXFx3Kig6OlxcXFx3KykqKFxcXFw/fFxcXFwhKT8nfSksXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJzxcXFxccyonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIGhsanMuSURFTlRfUkUgKyAnOjopPycgKyBobGpzLklERU5UX1JFXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLCBlbmQ6ICckfDsnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBSVUJZX01FVEhPRF9SRX0pLFxuICAgICAgICBQQVJBTVNcbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBzd2FsbG93IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGJlZm9yZSBzeW1ib2xzXG4gICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyhcXFxcIXxcXFxcPyk/OicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzooPyFcXFxccyknLFxuICAgICAgY29udGFpbnM6IFtTVFJJTkcsIHtiZWdpbjogUlVCWV9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJyhcXFxcJFxcXFxXKXwoKFxcXFwkfFxcXFxAXFxcXEA/KShcXFxcdyspKScgLy8gdmFyaWFibGVzXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgYmVnaW46IC9cXHwvLCBlbmQ6IC9cXHwvLFxuICAgICAga2V5d29yZHM6IFJVQllfS0VZV09SRFNcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfHVubGVzcylcXFxccyonLFxuICAgICAga2V5d29yZHM6ICd1bmxlc3MnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgSVJCX09CSkVDVCxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnLycsIGVuZDogJy9bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyeycsIGVuZDogJ31bYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyXFxcXCgnLCBlbmQ6ICdcXFxcKVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXIhJywgZW5kOiAnIVthLXpdKid9LFxuICAgICAgICAgICAge2JlZ2luOiAnJXJcXFxcWycsIGVuZDogJ1xcXFxdW2Etel0qJ31cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICBTVUJTVC5jb250YWlucyA9IFJVQllfREVGQVVMVF9DT05UQUlOUztcbiAgUEFSQU1TLmNvbnRhaW5zID0gUlVCWV9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHZhciBTSU1QTEVfUFJPTVBUID0gXCJbPj9dPlwiO1xuICB2YXIgREVGQVVMVF9QUk9NUFQgPSBcIltcXFxcdyNdK1xcXFwoXFxcXHcrXFxcXCk6XFxcXGQrOlxcXFxkKz5cIjtcbiAgdmFyIFJWTV9QUk9NUFQgPSBcIihcXFxcdystKT9cXFxcZCtcXFxcLlxcXFxkK1xcXFwuXFxcXGQocFxcXFxkKyk/W14+XSs+XCI7XG5cbiAgdmFyIElSQl9ERUZBVUxUID0gW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXlxccyo9Pi8sXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICdeKCcrU0lNUExFX1BST01QVCtcInxcIitERUZBVUxUX1BST01QVCsnfCcrUlZNX1BST01QVCsnKScsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JiJywgJ2dlbXNwZWMnLCAncG9kc3BlYycsICd0aG9yJywgJ2lyYiddLFxuICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBDT01NRU5UX01PREVTLmNvbmNhdChJUkJfREVGQVVMVCkuY29uY2F0KFJVQllfREVGQVVMVF9DT05UQUlOUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzwlIycsICclPicpLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzwlWyU9LV0/JywgZW5kOiAnWyUtXT8lPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnc3Bhd24gc3Bhd25fbGluayBzZWxmJyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhZnRlciBhbmQgYW5kYWxzb3wxMCBiYW5kIGJlZ2luIGJub3QgYm9yIGJzbCBic3IgYnhvciBjYXNlIGNhdGNoIGNvbmQgZGl2IGVuZCBmdW4gaWYgJyArXG4gICAgICAgICdsZXQgbm90IG9mIG9yIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdeWzAtOV0rPiAnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCclJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCsjW2EtZkEtRjAtOV0rfFxcXFxkKyhcXFxcLlxcXFxkKyk/KFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXD8oOjopPyhbQS1aXVxcXFx3Kig6Oik/KSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJy0+J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdvaydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnISdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qOlthLXpcXCddW2EtekEtWjAtOV9cXCddKil8KFxcXFxiW2EtelxcJ11bYS16QS1aMC05X1xcJ10qKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbQS1aXVthLXpBLVowLTlfXFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQkFTSUNfQVRPTV9SRSA9ICdbYS16XFwnXVthLXpBLVowLTlfXFwnXSonO1xuICB2YXIgRlVOQ1RJT05fTkFNRV9SRSA9ICcoJyArIEJBU0lDX0FUT01fUkUgKyAnOicgKyBCQVNJQ19BVE9NX1JFICsgJ3wnICsgQkFTSUNfQVRPTV9SRSArICcpJztcbiAgdmFyIEVSTEFOR19SRVNFUlZFRCA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FmdGVyIGFuZCBhbmRhbHNvfDEwIGJhbmQgYmVnaW4gYm5vdCBib3IgYnNsIGJ6ciBieG9yIGNhc2UgY2F0Y2ggY29uZCBkaXYgZW5kIGZ1biBpZiAnICtcbiAgICAgICdsZXQgbm90IG9mIG9yZWxzZXwxMCBxdWVyeSByZWNlaXZlIHJlbSB0cnkgd2hlbiB4b3InLFxuICAgIGxpdGVyYWw6XG4gICAgICAnZmFsc2UgdHJ1ZSdcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnJScsICckJyk7XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1xcXFxiKFxcXFxkKyNbYS1mQS1GMC05XSt8XFxcXGQrKFxcXFwuXFxcXGQrKT8oW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5BTUVEX0ZVTiA9IHtcbiAgICBiZWdpbjogJ2Z1blxcXFxzKycgKyBCQVNJQ19BVE9NX1JFICsgJy9cXFxcZCsnXG4gIH07XG4gIHZhciBGVU5DVElPTl9DQUxMID0ge1xuICAgIGJlZ2luOiBGVU5DVElPTl9OQU1FX1JFICsgJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogRlVOQ1RJT05fTkFNRV9SRSwgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgLy8gXCJjb250YWluc1wiIGRlZmluZWQgbGF0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBUVVBMRSA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICByZWxldmFuY2U6IDBcbiAgICAvLyBcImNvbnRhaW5zXCIgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSMSA9IHtcbiAgICBiZWdpbjogJ1xcXFxiXyhbQS1aXVtBLVphLXowLTlfXSopPycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWQVIyID0ge1xuICAgIGJlZ2luOiAnW0EtWl1bYS16QS1aMC05X10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFJFQ09SRF9BQ0NFU1MgPSB7XG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIC8vIFwiY29udGFpbnNcIiBkZWZpbmVkIGxhdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBCTE9DS19TVEFURU1FTlRTID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdmdW4gcmVjZWl2ZSBpZiB0cnkgY2FzZScsIGVuZDogJ2VuZCcsXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRFxuICB9O1xuICBCTE9DS19TVEFURU1FTlRTLmNvbnRhaW5zID0gW1xuICAgIENPTU1FTlQsXG4gICAgTkFNRURfRlVOLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICcnfSksXG4gICAgQkxPQ0tfU1RBVEVNRU5UUyxcbiAgICBGVU5DVElPTl9DQUxMLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSLFxuICAgIFRVUExFLFxuICAgIFZBUjEsIFZBUjIsXG4gICAgUkVDT1JEX0FDQ0VTU1xuICBdO1xuXG4gIHZhciBCQVNJQ19NT0RFUyA9IFtcbiAgICBDT01NRU5ULFxuICAgIE5BTUVEX0ZVTixcbiAgICBCTE9DS19TVEFURU1FTlRTLFxuICAgIEZVTkNUSU9OX0NBTEwsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBOVU1CRVIsXG4gICAgVFVQTEUsXG4gICAgVkFSMSwgVkFSMixcbiAgICBSRUNPUkRfQUNDRVNTXG4gIF07XG4gIEZVTkNUSU9OX0NBTEwuY29udGFpbnNbMV0uY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgVFVQTEUuY29udGFpbnMgPSBCQVNJQ19NT0RFUztcbiAgUkVDT1JEX0FDQ0VTUy5jb250YWluc1sxXS5jb250YWlucyA9IEJBU0lDX01PREVTO1xuXG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBCQVNJQ19NT0RFU1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZXJsJ10sXG4gICAga2V5d29yZHM6IEVSTEFOR19SRVNFUlZFRCxcbiAgICBpbGxlZ2FsOiAnKDwvfFxcXFwqPXxcXFxcKz18LT18L1xcXFwqfFxcXFwqL3xcXFxcKFxcXFwqfFxcXFwqXFxcXCkpJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXicgKyBCQVNJQ19BVE9NX1JFICsgJ1xcXFxzKlxcXFwoJywgZW5kOiAnLT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwofCN8Ly98L1xcXFwqfFxcXFxcXFxcfDp8OycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogQkFTSUNfQVRPTV9SRX0pXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJzt8XFxcXC4nLFxuICAgICAgICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRUQsXG4gICAgICAgICAgY29udGFpbnM6IEJBU0lDX01PREVTXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBDT01NRU5ULFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnXFxcXC4nLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBsZXhlbWVzOiAnLScgKyBobGpzLklERU5UX1JFLFxuICAgICAgICBrZXl3b3JkczpcbiAgICAgICAgICAnLW1vZHVsZSAtcmVjb3JkIC11bmRlZiAtZXhwb3J0IC1pZmRlZiAtaWZuZGVmIC1hdXRob3IgLWNvcHlyaWdodCAtZG9jIC12c24gJyArXG4gICAgICAgICAgJy1pbXBvcnQgLWluY2x1ZGUgLWluY2x1ZGVfbGliIC1jb21waWxlIC1kZWZpbmUgLWVsc2UgLWVuZGlmIC1maWxlIC1iZWhhdmlvdXIgJyArXG4gICAgICAgICAgJy1iZWhhdmlvciAtc3BlYycsXG4gICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIE5VTUJFUixcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBSRUNPUkRfQUNDRVNTLFxuICAgICAgVkFSMSwgVkFSMixcbiAgICAgIFRVUExFLFxuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hsc3gnLCAneGxzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvW2EtekEtWl1bXFx3XFwuXSovLFxuICAgIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbXBvcnRlZCBmcm9tIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDUxMzA0MjcxMC9odHRwczovL3N1cHBvcnQub2ZmaWNlLmNvbS9lbi11cy9hcnRpY2xlL0V4Y2VsLWZ1bmN0aW9ucy1hbHBoYWJldGljYWwtYjM5NDQ1NzItMjU1ZC00ZWZiLWJiOTYtYzZkOTAwMzNlMTg4XG4gICAga2V5d29yZHM6IHtcbiAgICAgICAgYnVpbHRfaW46ICdBQlMgQUNDUklOVCBBQ0NSSU5UTSBBQ09TIEFDT1NIIEFDT1QgQUNPVEggQUdHUkVHQVRFIEFERFJFU1MgQU1PUkRFR1JDIEFNT1JMSU5DIEFORCBBUkFCSUMgQVJFQVMgQVNDIEFTSU4gQVNJTkggQVRBTiBBVEFOMiBBVEFOSCBBVkVERVYgQVZFUkFHRSBBVkVSQUdFQSBBVkVSQUdFSUYgQVZFUkFHRUlGUyBCQUhUVEVYVCBCQVNFIEJFU1NFTEkgQkVTU0VMSiBCRVNTRUxLIEJFU1NFTFkgQkVUQURJU1QgQkVUQS5ESVNUIEJFVEFJTlYgQkVUQS5JTlYgQklOMkRFQyBCSU4ySEVYIEJJTjJPQ1QgQklOT01ESVNUIEJJTk9NLkRJU1QgQklOT00uRElTVC5SQU5HRSBCSU5PTS5JTlYgQklUQU5EIEJJVExTSElGVCBCSVRPUiBCSVRSU0hJRlQgQklUWE9SIENBTEwgQ0VJTElORyBDRUlMSU5HLk1BVEggQ0VJTElORy5QUkVDSVNFIENFTEwgQ0hBUiBDSElESVNUIENISUlOViBDSElURVNUIENISVNRLkRJU1QgQ0hJU1EuRElTVC5SVCBDSElTUS5JTlYgQ0hJU1EuSU5WLlJUIENISVNRLlRFU1QgQ0hPT1NFIENMRUFOIENPREUgQ09MVU1OIENPTFVNTlMgQ09NQklOIENPTUJJTkEgQ09NUExFWCBDT05DQVQgQ09OQ0FURU5BVEUgQ09ORklERU5DRSBDT05GSURFTkNFLk5PUk0gQ09ORklERU5DRS5UIENPTlZFUlQgQ09SUkVMIENPUyBDT1NIIENPVCBDT1RIIENPVU5UIENPVU5UQSBDT1VOVEJMQU5LIENPVU5USUYgQ09VTlRJRlMgQ09VUERBWUJTIENPVVBEQVlTIENPVVBEQVlTTkMgQ09VUE5DRCBDT1VQTlVNIENPVVBQQ0QgQ09WQVIgQ09WQVJJQU5DRS5QIENPVkFSSUFOQ0UuUyBDUklUQklOT00gQ1NDIENTQ0ggQ1VCRUtQSU1FTUJFUiBDVUJFTUVNQkVSIENVQkVNRU1CRVJQUk9QRVJUWSBDVUJFUkFOS0VETUVNQkVSIENVQkVTRVQgQ1VCRVNFVENPVU5UIENVQkVWQUxVRSBDVU1JUE1UIENVTVBSSU5DIERBVEUgREFURURJRiBEQVRFVkFMVUUgREFWRVJBR0UgREFZIERBWVMgREFZUzM2MCBEQiBEQkNTIERDT1VOVCBEQ09VTlRBIEREQiBERUMyQklOIERFQzJIRVggREVDMk9DVCBERUNJTUFMIERFR1JFRVMgREVMVEEgREVWU1EgREdFVCBESVNDIERNQVggRE1JTiBET0xMQVIgRE9MTEFSREUgRE9MTEFSRlIgRFBST0RVQ1QgRFNUREVWIERTVERFVlAgRFNVTSBEVVJBVElPTiBEVkFSIERWQVJQIEVEQVRFIEVGRkVDVCBFTkNPREVVUkwgRU9NT05USCBFUkYgRVJGLlBSRUNJU0UgRVJGQyBFUkZDLlBSRUNJU0UgRVJST1IuVFlQRSBFVVJPQ09OVkVSVCBFVkVOIEVYQUNUIEVYUCBFWFBPTi5ESVNUIEVYUE9ORElTVCBGQUNUIEZBQ1RET1VCTEUgRkFMU0V8MCBGLkRJU1QgRkRJU1QgRi5ESVNULlJUIEZJTFRFUlhNTCBGSU5EIEZJTkRCIEYuSU5WIEYuSU5WLlJUIEZJTlYgRklTSEVSIEZJU0hFUklOViBGSVhFRCBGTE9PUiBGTE9PUi5NQVRIIEZMT09SLlBSRUNJU0UgRk9SRUNBU1QgRk9SRUNBU1QuRVRTIEZPUkVDQVNULkVUUy5DT05GSU5UIEZPUkVDQVNULkVUUy5TRUFTT05BTElUWSBGT1JFQ0FTVC5FVFMuU1RBVCBGT1JFQ0FTVC5MSU5FQVIgRk9STVVMQVRFWFQgRlJFUVVFTkNZIEYuVEVTVCBGVEVTVCBGViBGVlNDSEVEVUxFIEdBTU1BIEdBTU1BLkRJU1QgR0FNTUFESVNUIEdBTU1BLklOViBHQU1NQUlOViBHQU1NQUxOIEdBTU1BTE4uUFJFQ0lTRSBHQVVTUyBHQ0QgR0VPTUVBTiBHRVNURVAgR0VUUElWT1REQVRBIEdST1dUSCBIQVJNRUFOIEhFWDJCSU4gSEVYMkRFQyBIRVgyT0NUIEhMT09LVVAgSE9VUiBIWVBFUkxJTksgSFlQR0VPTS5ESVNUIEhZUEdFT01ESVNUIElGIElGRVJST1IgSUZOQSBJRlMgSU1BQlMgSU1BR0lOQVJZIElNQVJHVU1FTlQgSU1DT05KVUdBVEUgSU1DT1MgSU1DT1NIIElNQ09UIElNQ1NDIElNQ1NDSCBJTURJViBJTUVYUCBJTUxOIElNTE9HMTAgSU1MT0cyIElNUE9XRVIgSU1QUk9EVUNUIElNUkVBTCBJTVNFQyBJTVNFQ0ggSU1TSU4gSU1TSU5IIElNU1FSVCBJTVNVQiBJTVNVTSBJTVRBTiBJTkRFWCBJTkRJUkVDVCBJTkZPIElOVCBJTlRFUkNFUFQgSU5UUkFURSBJUE1UIElSUiBJU0JMQU5LIElTRVJSIElTRVJST1IgSVNFVkVOIElTRk9STVVMQSBJU0xPR0lDQUwgSVNOQSBJU05PTlRFWFQgSVNOVU1CRVIgSVNPREQgSVNSRUYgSVNURVhUIElTTy5DRUlMSU5HIElTT1dFRUtOVU0gSVNQTVQgSklTIEtVUlQgTEFSR0UgTENNIExFRlQgTEVGVEIgTEVOIExFTkIgTElORVNUIExOIExPRyBMT0cxMCBMT0dFU1QgTE9HSU5WIExPR05PUk0uRElTVCBMT0dOT1JNRElTVCBMT0dOT1JNLklOViBMT09LVVAgTE9XRVIgTUFUQ0ggTUFYIE1BWEEgTUFYSUZTIE1ERVRFUk0gTURVUkFUSU9OIE1FRElBTiBNSUQgTUlEQnMgTUlOIE1JTklGUyBNSU5BIE1JTlVURSBNSU5WRVJTRSBNSVJSIE1NVUxUIE1PRCBNT0RFIE1PREUuTVVMVCBNT0RFLlNOR0wgTU9OVEggTVJPVU5EIE1VTFRJTk9NSUFMIE1VTklUIE4gTkEgTkVHQklOT00uRElTVCBORUdCSU5PTURJU1QgTkVUV09SS0RBWVMgTkVUV09SS0RBWVMuSU5UTCBOT01JTkFMIE5PUk0uRElTVCBOT1JNRElTVCBOT1JNSU5WIE5PUk0uSU5WIE5PUk0uUy5ESVNUIE5PUk1TRElTVCBOT1JNLlMuSU5WIE5PUk1TSU5WIE5PVCBOT1cgTlBFUiBOUFYgTlVNQkVSVkFMVUUgT0NUMkJJTiBPQ1QyREVDIE9DVDJIRVggT0REIE9EREZQUklDRSBPRERGWUlFTEQgT0RETFBSSUNFIE9ERExZSUVMRCBPRkZTRVQgT1IgUERVUkFUSU9OIFBFQVJTT04gUEVSQ0VOVElMRS5FWEMgUEVSQ0VOVElMRS5JTkMgUEVSQ0VOVElMRSBQRVJDRU5UUkFOSy5FWEMgUEVSQ0VOVFJBTksuSU5DIFBFUkNFTlRSQU5LIFBFUk1VVCBQRVJNVVRBVElPTkEgUEhJIFBIT05FVElDIFBJIFBNVCBQT0lTU09OLkRJU1QgUE9JU1NPTiBQT1dFUiBQUE1UIFBSSUNFIFBSSUNFRElTQyBQUklDRU1BVCBQUk9CIFBST0RVQ1QgUFJPUEVSIFBWIFFVQVJUSUxFIFFVQVJUSUxFLkVYQyBRVUFSVElMRS5JTkMgUVVPVElFTlQgUkFESUFOUyBSQU5EIFJBTkRCRVRXRUVOIFJBTksuQVZHIFJBTksuRVEgUkFOSyBSQVRFIFJFQ0VJVkVEIFJFR0lTVEVSLklEIFJFUExBQ0UgUkVQTEFDRUIgUkVQVCBSSUdIVCBSSUdIVEIgUk9NQU4gUk9VTkQgUk9VTkRET1dOIFJPVU5EVVAgUk9XIFJPV1MgUlJJIFJTUSBSVEQgU0VBUkNIIFNFQVJDSEIgU0VDIFNFQ0ggU0VDT05EIFNFUklFU1NVTSBTSEVFVCBTSEVFVFMgU0lHTiBTSU4gU0lOSCBTS0VXIFNLRVcuUCBTTE4gU0xPUEUgU01BTEwgU1FMLlJFUVVFU1QgU1FSVCBTUVJUUEkgU1RBTkRBUkRJWkUgU1RERVYgU1RERVYuUCBTVERFVi5TIFNUREVWQSBTVERFVlAgU1RERVZQQSBTVEVZWCBTVUJTVElUVVRFIFNVQlRPVEFMIFNVTSBTVU1JRiBTVU1JRlMgU1VNUFJPRFVDVCBTVU1TUSBTVU1YMk1ZMiBTVU1YMlBZMiBTVU1YTVkyIFNXSVRDSCBTWUQgVCBUQU4gVEFOSCBUQklMTEVRIFRCSUxMUFJJQ0UgVEJJTExZSUVMRCBULkRJU1QgVC5ESVNULjJUIFQuRElTVC5SVCBURElTVCBURVhUIFRFWFRKT0lOIFRJTUUgVElNRVZBTFVFIFQuSU5WIFQuSU5WLjJUIFRJTlYgVE9EQVkgVFJBTlNQT1NFIFRSRU5EIFRSSU0gVFJJTU1FQU4gVFJVRXwwIFRSVU5DIFQuVEVTVCBUVEVTVCBUWVBFIFVOSUNIQVIgVU5JQ09ERSBVUFBFUiBWQUxVRSBWQVIgVkFSLlAgVkFSLlMgVkFSQSBWQVJQIFZBUlBBIFZEQiBWTE9PS1VQIFdFQlNFUlZJQ0UgV0VFS0RBWSBXRUVLTlVNIFdFSUJVTEwgV0VJQlVMTC5ESVNUIFdPUktEQVkgV09SS0RBWS5JTlRMIFhJUlIgWE5QViBYT1IgWUVBUiBZRUFSRlJBQyBZSUVMRCBZSUVMRERJU0MgWUlFTERNQVQgWi5URVNUIFpURVNUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIGJlZ2lubmluZyBlcXVhbCBzaWduIGZvdW5kIGluIEV4Y2VsIGZvcm11bGEgZXhhbXBsZXMgKi9cbiAgICAgICAgYmVnaW46IC9ePS8sXG4gICAgICAgIGVuZDogL1tePV0vLCByZXR1cm5FbmQ6IHRydWUsIGlsbGVnYWw6IC89LywgLyogb25seSBhbGxvdyBzaW5nbGUgZXF1YWwgc2lnbiBhdCBmcm9udCBvZiBsaW5lICovXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvKiB0ZWNobmljYWxseSwgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiAyIGxldHRlcnMgaW4gY29sdW1uIG5hbWVzLCBidXQgdGhpcyBwcmV2ZW50cyBjb25mbGljdCB3aXRoIHNvbWUga2V5d29yZHMgKi9cbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIHJlZmVyZW5jZSB0byBhIHNpbmdsZSBjZWxsICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvXFxiW0EtWl17MSwyfVxcZCtcXGIvLFxuICAgICAgICBlbmQ6IC9bXlxcZF0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSByYW5nZSBvZiBjZWxscyAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1tBLVpdezAsMn1cXGQqOltBLVpdezAsMn1cXGQqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJyglKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvKiBFeGNlbCBmb3JtdWxhIGNvbW1lbnRzIGFyZSBkb25lIGJ5IHB1dHRpbmcgdGhlIGNvbW1lbnQgaW4gYSBmdW5jdGlvbiBjYWxsIHRvIE4oKSAqL1xuICAgICAgaGxqcy5DT01NRU5UKC9cXGJOXFwoLywvXFwpLyxcbiAgICAgIHtcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgfSlcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAge1xuICAgICAgYmVnaW46IC9bXlxcdTI0MDFcXHUwMDAxXSsvLFxuICAgICAgZW5kOiAvW1xcdTI0MDFcXHUwMDAxXS8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW15cXHUyNDAxXFx1MDAwMT1dKykvLFxuICAgICAgICBlbmQ6IC89KFteXFx1MjQwMVxcdTAwMDE9XSspLyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz0vLFxuICAgICAgICBlbmQ6IC8oW1xcdTI0MDFcXHUwMDAxXSkvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZydcbiAgICAgIH1dXG4gICAgfV0sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG5cbiAgICB2YXIgQ0hBUiA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC8nKC58XFxcXFt4WHVVXVthLXpBLVowLTldKyknL1xuICAgIH07XG5cbiAgICB2YXIgU1RSSU5HID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTkFNRSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogL1teMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06O11bXlxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdK3xbXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjs9XS9cbiAgICB9O1xuXG4gICAgdmFyIE1FVEhPRCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICAgICAgZW5kOiAvWzo9e1xcWyhcXG47XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlJyxcbiAgICAgICAgICAgIGtleXdvcmQ6ICdjYXNlIGNsYXNzIGRlZiBlbHNlIGVudW0gaWYgaW1wbCBpbXBvcnQgaW4gbGF0IHJlbCBpbmRleCBsZXQgbWF0Y2ggbmFtZXNwYWNlIHN3aXRjaCB0eXBlIHlpZWxkIHdpdGgnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgQ0hBUixcbiAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgIE1FVEhPRCxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhJyxcbiAgICBidWlsdF9pbjogJ2Fsb2cgYWxvZzEwIGFtYXgwIGFtYXgxIGFtaW4wIGFtaW4xIGFtb2QgY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0IGRhYnMgZGFjb3MgZGFzaW4gZGF0YW4gZGF0YW4yIGRjb3MgZGNvc2ggZGRpbSBkZXhwIGRpbnQgJyArXG4gICAgICAnZGxvZyBkbG9nMTAgZG1heDEgZG1pbjEgZG1vZCBkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4gZHRhbmggZmxvYXQgaWFicyBpZGltIGlkaW50IGlkbmludCBpZml4IGlzaWduIG1heDAgbWF4MSBtaW4wIG1pbjEgc25nbCAnICtcbiAgICAgICdhbGdhbWEgY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0IGNxYWJzIGNxY29zIGNxZXhwIGNxbG9nIGNxc2luIGNxc3FydCBkY21wbHggZGNvbmpnIGRlcmYgZGVyZmMgZGZsb2F0IGRnYW1tYSBkaW1hZyBkbGdhbWEgJyArXG4gICAgICAnaXFpbnQgcWFicyBxYWNvcyBxYXNpbiBxYXRhbiBxYXRhbjIgcWNtcGx4IHFjb25qZyBxY29zIHFjb3NoIHFkaW0gcWVyZiBxZXJmYyBxZXhwIHFnYW1tYSBxaW1hZyBxbGdhbWEgcWxvZyBxbG9nMTAgcW1heDEgcW1pbjEgcW1vZCAnICtcbiAgICAgICdxbmludCBxc2lnbiBxc2luIHFzaW5oIHFzcXJ0IHF0YW4gcXRhbmggYWJzIGFjb3MgYWltYWcgYWludCBhbmludCBhc2luIGF0YW4gYXRhbjIgY2hhciBjbXBseCBjb25qZyBjb3MgY29zaCBleHAgaWNoYXIgaW5kZXggaW50IGxvZyAnICtcbiAgICAgICdsb2cxMCBtYXggbWluIG5pbnQgc2lnbiBzaW4gc2luaCBzcXJ0IHRhbiB0YW5oIHByaW50IHdyaXRlIGRpbSBsZ2UgbGd0IGxsZSBsbHQgbW9kIG51bGxpZnkgYWxsb2NhdGUgZGVhbGxvY2F0ZSAnICtcbiAgICAgICdhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCAnICtcbiAgICAgICdlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsICcgK1xuICAgICAgJ21heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVzZW50IHByb2R1Y3QgJyArXG4gICAgICAncmFkaXggcmFuZG9tX251bWJlciByYW5kb21fc2VlZCByYW5nZSByZXBlYXQgcmVzaGFwZSBycnNwYWNpbmcgc2NhbGUgc2NhbiBzZWxlY3RlZF9pbnRfa2luZCBzZWxlY3RlZF9yZWFsX2tpbmQgJyArXG4gICAgICAnc2V0X2V4cG9uZW50IHNoYXBlIHNpemUgc3BhY2luZyBzcHJlYWQgc3VtIHN5c3RlbV9jbG9jayB0aW55IHRyYW5zcG9zZSB0cmltIHVib3VuZCB1bnBhY2sgdmVyaWZ5IGFjaGFyIGlhY2hhciB0cmFuc2ZlciAnICtcbiAgICAgICdkYmxlIGVudHJ5IGRwcm9kIGNwdV90aW1lIGNvbW1hbmRfYXJndW1lbnRfY291bnQgZ2V0X2NvbW1hbmQgZ2V0X2NvbW1hbmRfYXJndW1lbnQgZ2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlIGlzX2lvc3RhdF9lbmQgJyArXG4gICAgICAnaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSAnICtcbiAgICAgICdpc19pb3N0YXRfZW9yIG1vdmVfYWxsb2MgbmV3X2xpbmUgc2VsZWN0ZWRfY2hhcl9raW5kIHNhbWVfdHlwZV9hcyBleHRlbmRzX3R5cGVfb2YnICArXG4gICAgICAnYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yICcgK1xuICAgICAgJ2F0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgJyArXG4gICAgICAnYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyICcgK1xuICAgICAgJ251bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSdcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnZjkwJywgJ2Y5NSddLFxuICAgIGtleXdvcmRzOiBGX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWJyb3V0aW5lIGZ1bmN0aW9uIHByb2dyYW0nLFxuICAgICAgICBpbGxlZ2FsOiAnWyR7PVxcXFxuXScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJyEnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFlQRVBBUkFNID0ge1xuICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC8nW2EtekEtWjAtOV9dKy99KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZnMnXSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnN0cmFjdCBhbmQgYXMgYXNzZXJ0IGJhc2UgYmVnaW4gY2xhc3MgZGVmYXVsdCBkZWxlZ2F0ZSBkbyBkb25lICcgK1xuICAgICAgJ2Rvd25jYXN0IGRvd250byBlbGlmIGVsc2UgZW5kIGV4Y2VwdGlvbiBleHRlcm4gZmFsc2UgZmluYWxseSBmb3IgJyArXG4gICAgICAnZnVuIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbiBpbmhlcml0IGlubGluZSBpbnRlcmZhY2UgaW50ZXJuYWwgbGF6eSBsZXQgJyArXG4gICAgICAnbWF0Y2ggbWVtYmVyIG1vZHVsZSBtdXRhYmxlIG5hbWVzcGFjZSBuZXcgbnVsbCBvZiBvcGVuIG9yICcgK1xuICAgICAgJ292ZXJyaWRlIHByaXZhdGUgcHVibGljIHJlYyByZXR1cm4gc2lnIHN0YXRpYyBzdHJ1Y3QgdGhlbiB0byAnICtcbiAgICAgICd0cnVlIHRyeSB0eXBlIHVwY2FzdCB1c2UgdmFsIHZvaWQgd2hlbiB3aGlsZSB3aXRoIHlpZWxkJyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICAvLyBtb25hZCBidWlsZGVyIGtleXdvcmRzIChtYXRjaGVzIGJlZm9yZSBub24tYmFuZyBrd3MpXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogL1xcYih5aWVsZHxyZXR1cm58bGV0fGRvKSEvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ0BcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIidcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0eXBlJywgZW5kOiAnXFxcXCh8PXwkJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICBUWVBFUEFSQU1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXFxcXFs8JywgZW5kOiAnPlxcXFxdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdcXFxcQihcXCdbQS1aYS16XSlcXFxcYicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAna2V5d29yZCc6XG4gICAgICAnYWJvcnQgYWNyb255bSBhY3JvbnltcyBhbGlhcyBhbGwgYW5kIGFzc2lnbiBiaW5hcnkgY2FyZCBkaWFnIGRpc3BsYXkgJyArXG4gICAgICAnZWxzZSBlcSBmaWxlIGZpbGVzIGZvciBmcmVlIGdlIGd0IGlmIGludGVnZXIgbGUgbG9vcCBsdCBtYXhpbWl6aW5nICcgK1xuICAgICAgJ21pbmltaXppbmcgbW9kZWwgbW9kZWxzIG5lIG5lZ2F0aXZlIG5vIG5vdCBvcHRpb24gb3B0aW9ucyBvciBvcmQgJyArXG4gICAgICAncG9zaXRpdmUgcHJvZCBwdXQgcHV0cGFnZSBwdXR0bCByZXBlYXQgc2FtZWFzIHNlbWljb250IHNlbWlpbnQgc21heCAnICtcbiAgICAgICdzbWluIHNvbHZlIHNvczEgc29zMiBzdW0gc3lzdGVtIHRhYmxlIHRoZW4gdW50aWwgdXNpbmcgd2hpbGUgeG9yIHllcycsXG4gICAgJ2xpdGVyYWwnOiAnZXBzIGluZiBuYScsXG4gICAgJ2J1aWx0LWluJzpcbiAgICAgICdhYnMgYXJjY29zIGFyY3NpbiBhcmN0YW4gYXJjdGFuMiBCZXRhIGJldGFSZWcgYmlub21pYWwgY2VpbCBjZW50cm9weSAnICtcbiAgICAgICdjb3MgY29zaCBjdlBvd2VyIGRpdiBkaXYwIGVEaXN0IGVudHJvcHkgZXJyb3JmIGV4ZWNTZWVkIGV4cCBmYWN0ICcgK1xuICAgICAgJ2Zsb29yIGZyYWMgZ2FtbWEgZ2FtbWFSZWcgbG9nIGxvZ0JldGEgbG9nR2FtbWEgbG9nMTAgbG9nMiBtYXBWYWwgbWF4ICcgK1xuICAgICAgJ21pbiBtb2QgbmNwQ00gbmNwRiBuY3BWVXBvdyBuY3BWVXNpbiBub3JtYWwgcGkgcG9seSBwb3dlciAnICtcbiAgICAgICdyYW5kQmlub21pYWwgcmFuZExpbmVhciByYW5kVHJpYW5nbGUgcm91bmQgclBvd2VyIHNpZ21vaWQgc2lnbiAnICtcbiAgICAgICdzaWduUG93ZXIgc2luIHNpbmggc2xleHAgc2xsb2cxMCBzbHJlYyBzcWV4cCBzcWxvZzEwIHNxciBzcXJlYyBzcXJ0ICcgK1xuICAgICAgJ3RhbiB0YW5oIHRydW5jIHVuaWZvcm0gdW5pZm9ybUludCB2Y1Bvd2VyIGJvb2xfYW5kIGJvb2xfZXF2IGJvb2xfaW1wICcgK1xuICAgICAgJ2Jvb2xfbm90IGJvb2xfb3IgYm9vbF94b3IgaWZUaGVuIHJlbF9lcSByZWxfZ2UgcmVsX2d0IHJlbF9sZSByZWxfbHQgJyArXG4gICAgICAncmVsX25lIGdkYXkgZ2RvdyBnaG91ciBnbGVhcCBnbWlsbGlzZWMgZ21pbnV0ZSBnbW9udGggZ3NlY29uZCBneWVhciAnICtcbiAgICAgICdqZGF0ZSBqbm93IGpzdGFydCBqdGltZSBlcnJvckxldmVsIGV4ZWNFcnJvciBnYW1zUmVsZWFzZSBnYW1zVmVyc2lvbiAnICtcbiAgICAgICdoYW5kbGVDb2xsZWN0IGhhbmRsZURlbGV0ZSBoYW5kbGVTdGF0dXMgaGFuZGxlU3VibWl0IGhlYXBGcmVlICcgK1xuICAgICAgJ2hlYXBMaW1pdCBoZWFwU2l6ZSBqb2JIYW5kbGUgam9iS2lsbCBqb2JTdGF0dXMgam9iVGVybWluYXRlICcgK1xuICAgICAgJ2xpY2Vuc2VMZXZlbCBsaWNlbnNlU3RhdHVzIG1heEV4ZWNFcnJvciBzbGVlcCB0aW1lQ2xvc2UgdGltZUNvbXAgJyArXG4gICAgICAndGltZUVsYXBzZWQgdGltZUV4ZWMgdGltZVN0YXJ0J1xuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXD1bbGdlbnhjXT0vfSxcbiAgICAgIHtiZWdpbjogL1xcJC99LFxuICAgIF1cbiAgfTtcbiAgdmFyIFFTVFIgPSB7IC8vIE9uZS1saW5lIHF1b3RlZCBjb21tZW50IHN0cmluZ1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnfSxcbiAgICAgIHtiZWdpbjogJ1wiJywgZW5kOiAnXCInfSxcbiAgICBdLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG4gIHZhciBBU1NJR05NRU5UID0ge1xuICAgIGJlZ2luOiAnLycsXG4gICAgZW5kOiAnLycsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBRU1RSLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgXSxcbiAgfTtcbiAgdmFyIERFU0NURVhUID0geyAvLyBQYXJhbWV0ZXIvc2V0L3ZhcmlhYmxlIGRlc2NyaXB0aW9uIHRleHRcbiAgICBiZWdpbjogL1thLXpdW2EtejAtOV9dKihcXChbYS16MC05XywgXSpcXCkpP1sgXFx0XSsvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBlbmQ6ICckJyxcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgUVNUUixcbiAgICAgIEFTU0lHTk1FTlQsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogLyhbIF0qW2EtejAtOSYjKj0/QD5cXFxcPDpcXC0sKCkkXFxbXFxdXy57fSErJV5dKykrLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dtcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL15cXCRvbnRleHQvLCAvXlxcJG9mZnRleHQvKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwkW2EtejAtOV0rJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEta2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJ15cXFxcJFthLXowLTldKycsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAvLyBEZWNsYXJhdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczpcbiAgICAgICAgICAnc2V0IHNldHMgcGFyYW1ldGVyIHBhcmFtZXRlcnMgdmFyaWFibGUgdmFyaWFibGVzICcgK1xuICAgICAgICAgICdzY2FsYXIgc2NhbGFycyBlcXVhdGlvbiBlcXVhdGlvbnMnLFxuICAgICAgICBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgQVNTSUdOTUVOVCxcbiAgICAgICAgICBERVNDVEVYVCxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgLy8gdGFibGUgZW52aXJvbm1lbnRcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgLy8gdGFibGUgaGVhZGVyIHJvd1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ3RhYmxlJyxcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtERVNDVEVYVF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNPTU1FTlQoJ15cXFxcKicsICckJyksXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIFRhYmxlIGRvZXMgbm90IGNvbnRhaW4gREVTQ1RFWFQgb3IgQVNTSUdOTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbnNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogL15bYS16XVthLXowLTlfLFxcLSsnICgpJF0rXFwuezJ9LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgLy8gRnVuY3Rpb24gdGl0bGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eW2EtejAtOV9dKy8sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICAgICAgU1lNQk9MUyxcbiAgICAgICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MUyxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogICdib29sIGJyZWFrIGNhbGwgY2FsbGV4ZSBjaGVja2ludGVycnVwdCBjbGVhciBjbGVhcmcgY2xvc2VhbGwgY2xzIGNvbWxvZyBjb21waWxlICcgK1xuICAgICAgICAgICAgICAnY29udGludWUgY3JlYXRlIGRlYnVnIGRlY2xhcmUgZGVsZXRlIGRpc2FibGUgZGxpYnJhcnkgZGxsY2FsbCBkbyBkb3MgZWQgZWRpdCBlbHNlICcgK1xuICAgICAgICAgICAgICAnZWxzZWlmIGVuYWJsZSBlbmQgZW5kZm9yIGVuZGlmIGVuZHAgZW5kbyBlcnJvcmxvZyBlcnJvcmxvZ2F0IGV4cHIgZXh0ZXJuYWwgZm4gJyArXG4gICAgICAgICAgICAgICdmb3IgZm9ybWF0IGdvdG8gZ29zdWIgZ3JhcGggaWYga2V5d29yZCBsZXQgbGliIGxpYnJhcnkgbGluZSBsb2FkIGxvYWRhcnJheSBsb2FkZXhlICcgK1xuICAgICAgICAgICAgICAnbG9hZGYgbG9hZGsgbG9hZG0gbG9hZHAgbG9hZHMgbG9hZHggbG9jYWwgbG9jYXRlIGxvb3BuZXh0aW5kZXggbHByaW50IGxwd2lkdGggbHNob3cgJyArXG4gICAgICAgICAgICAgICdtYXRyaXggbXN5bSBuZHBjbGV4IG5ldyBvcGVuIG91dHB1dCBvdXR3aWR0aCBwbG90IHBsb3RzeW0gcG9wIHByY3NuIHByaW50ICcgK1xuICAgICAgICAgICAgICAncHJpbnRkb3MgcHJvYyBwdXNoIHJldHAgcmV0dXJuIHJuZGNvbiBybmRtb2Qgcm5kbXVsdCBybmRzZWVkIHJ1biBzYXZlIHNhdmVhbGwgc2NyZWVuICcgK1xuICAgICAgICAgICAgICAnc2Nyb2xsIHNldGFycmF5IHNob3cgc3BhcnNlIHN0b3Agc3RyaW5nIHN0cnVjdCBzeXN0ZW0gdHJhY2UgdHJhcCB0aHJlYWRmb3IgJyArXG4gICAgICAgICAgICAgICd0aHJlYWRlbmRmb3IgdGhyZWFkYmVnaW4gdGhyZWFkam9pbiB0aHJlYWRzdGF0IHRocmVhZGVuZCB1bnRpbCB1c2Ugd2hpbGUgd2lucHJpbnQgJyArXG4gICAgICAgICAgICAgICduZSBnZSBsZSBndCBsdCBhbmQgeG9yIG9yIG5vdCBlcSBlcXYnLFxuICAgIGJ1aWx0X2luOiAnYWJzIGFjZiBhY29uY2F0IGFleWUgYW1heCBhbWVhbiBBbWVyaWNhbkJpbm9tQ2FsbCBBbWVyaWNhbkJpbm9tQ2FsbF9HcmVla3MgQW1lcmljYW5CaW5vbUNhbGxfSW1wVm9sICcgK1xuICAgICAgICAgICAgICAnQW1lcmljYW5CaW5vbVB1dCBBbWVyaWNhbkJpbm9tUHV0X0dyZWVrcyBBbWVyaWNhbkJpbm9tUHV0X0ltcFZvbCBBbWVyaWNhbkJTQ2FsbCBBbWVyaWNhbkJTQ2FsbF9HcmVla3MgJyArXG4gICAgICAgICAgICAgICdBbWVyaWNhbkJTQ2FsbF9JbXBWb2wgQW1lcmljYW5CU1B1dCBBbWVyaWNhbkJTUHV0X0dyZWVrcyBBbWVyaWNhbkJTUHV0X0ltcFZvbCBhbWluIGFtdWx0IGFubm90YXRpb25HZXREZWZhdWx0cyAnICtcbiAgICAgICAgICAgICAgJ2Fubm90YXRpb25TZXRCa2QgYW5ub3RhdGlvblNldEZvbnQgYW5ub3RhdGlvblNldExpbmVDb2xvciBhbm5vdGF0aW9uU2V0TGluZVN0eWxlIGFubm90YXRpb25TZXRMaW5lVGhpY2tuZXNzICcgK1xuICAgICAgICAgICAgICAnYW5udWFsVHJhZGluZ0RheXMgYXJjY29zIGFyY3NpbiBhcmVzaGFwZSBhcnJheWFsbG9jIGFycmF5aW5kZXggYXJyYXlpbml0IGFycmF5dG9tYXQgYXNjaWlsb2FkIGFzY2xhYmVsIGFzdGQgJyArXG4gICAgICAgICAgICAgICdhc3RkcyBhc3VtIGF0YW4gYXRhbjIgYXRyYW5zcG9zZSBheG1hcmdpbiBiYWxhbmNlIGJhbmQgYmFuZGNob2wgYmFuZGNob2xzb2wgYmFuZGx0c29sIGJhbmRydiBiYW5kc29scGQgYmFyICcgK1xuICAgICAgICAgICAgICAnYmFzZTEwIGJlZ3dpbmQgYmVzc2VsaiBiZXNzZWx5IGJldGEgYm94IGJveGNveCBjZGZCZXRhIGNkZkJldGFJbnYgY2RmQmlub21pYWwgY2RmQmlub21pYWxJbnYgY2RmQnZuIGNkZkJ2bjIgJyArXG4gICAgICAgICAgICAgICdjZGZCdm4yZSBjZGZDYXVjaHkgY2RmQ2F1Y2h5SW52IGNkZkNoaWMgY2RmQ2hpaSBjZGZDaGluYyBjZGZDaGluY0ludiBjZGZFeHAgY2RmRXhwSW52IGNkZkZjIGNkZkZuYyBjZGZGbmNJbnYgJyArXG4gICAgICAgICAgICAgICdjZGZHYW0gY2RmR2VuUGFyZXRvIGNkZkh5cGVyR2VvIGNkZkxhcGxhY2UgY2RmTGFwbGFjZUludiBjZGZMb2dpc3RpYyBjZGZMb2dpc3RpY0ludiBjZGZtQ29udHJvbENyZWF0ZSBjZGZNdm4gJyArXG4gICAgICAgICAgICAgICdjZGZNdm4yZSBjZGZNdm5jZSBjZGZNdm5lIGNkZk12dDJlIGNkZk12dGNlIGNkZk12dGUgY2RmTiBjZGZOMiBjZGZOYyBjZGZOZWdCaW5vbWlhbCBjZGZOZWdCaW5vbWlhbEludiBjZGZOaSAnICtcbiAgICAgICAgICAgICAgJ2NkZlBvaXNzb24gY2RmUG9pc3NvbkludiBjZGZSYXlsZWlnaCBjZGZSYXlsZWlnaEludiBjZGZUYyBjZGZUY2kgY2RmVG5jIGNkZlR2biBjZGZXZWlidWxsIGNkZldlaWJ1bGxJbnYgY2RpciAnICtcbiAgICAgICAgICAgICAgJ2NlaWwgQ2hhbmdlRGlyIGNoZGlyIGNoaUJhclNxdWFyZSBjaG9sIGNob2xkbiBjaG9sc29sIGNob2x1cCBjaHJzIGNsb3NlIGNvZGUgY29scyBjb2xzZiBjb21iaW5hdGUgY29tYmluYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2NvbXBsZXggY29uIGNvbmQgY29uaiBjb25zIENvblNjb3JlIGNvbnRvdXIgY29udiBjb252ZXJ0c2F0b3N0ciBjb252ZXJ0c3RydG9zYSBjb3JybSBjb3JybXMgY29ycnZjIGNvcnJ4IGNvcnJ4cyAnICtcbiAgICAgICAgICAgICAgJ2NvcyBjb3NoIGNvdW50cyBjb3VudHd0cyBjcm9zc3ByZCBjcm91dCBjcm91dHAgY3NyY29sIGNzcmxpbiBjc3ZSZWFkTSBjc3ZSZWFkU0EgY3VtcHJvZGMgY3Vtc3VtYyBjdXJ2ZSBjdnRvcyAnICtcbiAgICAgICAgICAgICAgJ2RhdGFjcmVhdGUgZGF0YWNyZWF0ZWNvbXBsZXggZGF0YWxpc3QgZGF0YWxvYWQgZGF0YWxvb3AgZGF0YW9wZW4gZGF0YXNhdmUgZGF0ZSBkYXRlc3RyIGRhdGVzdHJpbmcgZGF0ZXN0cnltZCAnICtcbiAgICAgICAgICAgICAgJ2RheWlueXIgZGF5b2Z3ZWVrIGRiQWRkRGF0YWJhc2UgZGJDbG9zZSBkYkNvbW1pdCBkYkNyZWF0ZVF1ZXJ5IGRiRXhlY1F1ZXJ5IGRiR2V0Q29ubmVjdE9wdGlvbnMgZGJHZXREYXRhYmFzZU5hbWUgJyArXG4gICAgICAgICAgICAgICdkYkdldERyaXZlck5hbWUgZGJHZXREcml2ZXJzIGRiR2V0SG9zdE5hbWUgZGJHZXRMYXN0RXJyb3JOdW0gZGJHZXRMYXN0RXJyb3JUZXh0IGRiR2V0TnVtZXJpY2FsUHJlY1BvbGljeSAnICtcbiAgICAgICAgICAgICAgJ2RiR2V0UGFzc3dvcmQgZGJHZXRQb3J0IGRiR2V0VGFibGVIZWFkZXJzIGRiR2V0VGFibGVzIGRiR2V0VXNlck5hbWUgZGJIYXNGZWF0dXJlIGRiSXNEcml2ZXJBdmFpbGFibGUgZGJJc09wZW4gJyArXG4gICAgICAgICAgICAgICdkYklzT3BlbkVycm9yIGRiT3BlbiBkYlF1ZXJ5QmluZFZhbHVlIGRiUXVlcnlDbGVhciBkYlF1ZXJ5Q29scyBkYlF1ZXJ5RXhlY1ByZXBhcmVkIGRiUXVlcnlGZXRjaEFsbE0gZGJRdWVyeUZldGNoQWxsU0EgJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5RmV0Y2hPbmVNIGRiUXVlcnlGZXRjaE9uZVNBIGRiUXVlcnlGaW5pc2ggZGJRdWVyeUdldEJvdW5kVmFsdWUgZGJRdWVyeUdldEJvdW5kVmFsdWVzIGRiUXVlcnlHZXRGaWVsZCAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlHZXRMYXN0RXJyb3JOdW0gZGJRdWVyeUdldExhc3RFcnJvclRleHQgZGJRdWVyeUdldExhc3RJbnNlcnRJRCBkYlF1ZXJ5R2V0TGFzdFF1ZXJ5IGRiUXVlcnlHZXRQb3NpdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlJc0FjdGl2ZSBkYlF1ZXJ5SXNGb3J3YXJkT25seSBkYlF1ZXJ5SXNOdWxsIGRiUXVlcnlJc1NlbGVjdCBkYlF1ZXJ5SXNWYWxpZCBkYlF1ZXJ5UHJlcGFyZSBkYlF1ZXJ5Um93cyAnICtcbiAgICAgICAgICAgICAgJ2RiUXVlcnlTZWVrIGRiUXVlcnlTZWVrRmlyc3QgZGJRdWVyeVNlZWtMYXN0IGRiUXVlcnlTZWVrTmV4dCBkYlF1ZXJ5U2Vla1ByZXZpb3VzIGRiUXVlcnlTZXRGb3J3YXJkT25seSAnICtcbiAgICAgICAgICAgICAgJ2RiUmVtb3ZlRGF0YWJhc2UgZGJSb2xsYmFjayBkYlNldENvbm5lY3RPcHRpb25zIGRiU2V0RGF0YWJhc2VOYW1lIGRiU2V0SG9zdE5hbWUgZGJTZXROdW1lcmljYWxQcmVjUG9saWN5ICcgK1xuICAgICAgICAgICAgICAnZGJTZXRQb3J0IGRiU2V0VXNlck5hbWUgZGJUcmFuc2FjdGlvbiBEZWxldGVGaWxlIGRlbGlmIGRlbHJvd3MgZGVuc2VUb1NwIGRlbnNlVG9TcFJFIGRlblRvWmVybyBkZXNpZ24gZGV0IGRldGwgJyArXG4gICAgICAgICAgICAgICdkZmZ0IGRmZnRpIGRpYWcgZGlhZ3J2IGRpZ2FtbWEgZG9zd2luIERPU1dpbkNsb3NlYWxsIERPU1dpbk9wZW4gZG90ZmVxIGRvdGZlcW10IGRvdGZnZSBkb3RmZ2VtdCBkb3RmZ3QgZG90Zmd0bXQgJyArXG4gICAgICAgICAgICAgICdkb3RmbGUgZG90ZmxlbXQgZG90Zmx0IGRvdGZsdG10IGRvdGZuZSBkb3RmbmVtdCBkcmF3IGRyb3AgZHNDcmVhdGUgZHN0YXQgZHN0YXRtdCBkc3RhdG10Q29udHJvbENyZWF0ZSBkdGRhdGUgZHRkYXkgJyArXG4gICAgICAgICAgICAgICdkdHRpbWUgZHR0b2R0diBkdHRvc3RyIGR0dG91dGMgZHR2bm9ybWFsIGR0dnRvZHQgZHR2dG91dGMgZHVtbXkgZHVtbXliciBkdW1teWRuIGVpZyBlaWdoIGVpZ2h2IGVpZ3YgZWxhcHNlZFRyYWRpbmdEYXlzICcgK1xuICAgICAgICAgICAgICAnZW5kd2luZCBlbnZnZXQgZW9mIGVxU29sdmUgZXFTb2x2ZW10IGVxU29sdmVtdENvbnRyb2xDcmVhdGUgZXFTb2x2ZW10T3V0Q3JlYXRlIGVxU29sdmVzZXQgZXJmIGVyZmMgZXJmY2NwbHggZXJmY3BseCBlcnJvciAnICtcbiAgICAgICAgICAgICAgJ2V0ZGF5cyBldGhzZWMgZXRzdHIgRXVyb3BlYW5CaW5vbUNhbGwgRXVyb3BlYW5CaW5vbUNhbGxfR3JlZWtzIEV1cm9wZWFuQmlub21DYWxsX0ltcFZvbCBFdXJvcGVhbkJpbm9tUHV0ICcgK1xuICAgICAgICAgICAgICAnRXVyb3BlYW5CaW5vbVB1dF9HcmVla3MgRXVyb3BlYW5CaW5vbVB1dF9JbXBWb2wgRXVyb3BlYW5CU0NhbGwgRXVyb3BlYW5CU0NhbGxfR3JlZWtzIEV1cm9wZWFuQlNDYWxsX0ltcFZvbCAnICtcbiAgICAgICAgICAgICAgJ0V1cm9wZWFuQlNQdXQgRXVyb3BlYW5CU1B1dF9HcmVla3MgRXVyb3BlYW5CU1B1dF9JbXBWb2wgZXhjdHNtcGwgZXhlYyBleGVjYmcgZXhwIGV4dGVybiBleWUgZmNoZWNrZXJyIGZjbGVhcmVyciBmZXEgJyArXG4gICAgICAgICAgICAgICdmZXFtdCBmZmx1c2ggZmZ0IGZmdGkgZmZ0bSBmZnRtaSBmZnRuIGZnZSBmZ2VtdCBmZ2V0cyBmZ2V0c2EgZmdldHNhdCBmZ2V0c3QgZmd0IGZndG10IGZpbGVpbmZvIGZpbGVzYSBmbGUgZmxlbXQgJyArXG4gICAgICAgICAgICAgICdmbG9vciBmbHQgZmx0bXQgZm1vZCBmbmUgZm5lbXQgZm9udHMgZm9wZW4gZm9ybWF0Y3YgZm9ybWF0bnYgZnB1dHMgZnB1dHN0IGZzZWVrIGZzdHJlcnJvciBmdGVsbCBmdG9jdiBmdG9zIGZ0b3N0ckMgJyArXG4gICAgICAgICAgICAgICdnYW1tYSBnYW1tYWNwbHggZ2FtbWFpaSBnYXVzc2V0IGdkYUFwcGVuZCBnZGFDcmVhdGUgZ2RhRFN0YXQgZ2RhRFN0YXRNYXQgZ2RhR2V0SW5kZXggZ2RhR2V0TmFtZSBnZGFHZXROYW1lcyBnZGFHZXRPcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZGFHZXRUeXBlIGdkYUdldFR5cGVzIGdkYUdldFZhckluZm8gZ2RhSXNDcGx4IGdkYUxvYWQgZ2RhUGFjayBnZGFSZWFkIGdkYVJlYWRCeUluZGV4IGdkYVJlYWRTb21lIGdkYVJlYWRTcGFyc2UgJyArXG4gICAgICAgICAgICAgICdnZGFSZWFkU3RydWN0IGdkYVJlcG9ydFZhckluZm8gZ2RhU2F2ZSBnZGFVcGRhdGUgZ2RhVXBkYXRlQW5kUGFjayBnZGFWYXJzIGdkYVdyaXRlIGdkYVdyaXRlMzIgZ2RhV3JpdGVTb21lIGdldGFycmF5ICcgK1xuICAgICAgICAgICAgICAnZ2V0ZGltcyBnZXRmIGdldEdBVVNTaG9tZSBnZXRtYXRyaXggZ2V0bWF0cml4NEQgZ2V0bmFtZSBnZXRuYW1lZiBnZXROZXh0VHJhZGluZ0RheSBnZXROZXh0V2Vla0RheSBnZXRuciBnZXRvcmRlcnMgJyArXG4gICAgICAgICAgICAgICdnZXRwYXRoIGdldFByZXZpb3VzVHJhZGluZ0RheSBnZXRQcmV2aW91c1dlZWtEYXkgZ2V0Um93IGdldHNjYWxhcjNEIGdldHNjYWxhcjREIGdldFRyUm93IGdldHdpbmQgZ2xtIGdyYWRjcGx4IGdyYWRNVCAnICtcbiAgICAgICAgICAgICAgJ2dyYWRNVG0gZ3JhZE1UVCBncmFkTVRUbSBncmFkcCBncmFwaHBydCBncmFwaHNldCBoYXNpbWFnIGhlYWRlciBoZWFkZXJtdCBoZXNzIGhlc3NNVCBoZXNzTVRnIGhlc3NNVGd3IGhlc3NNVG0gJyArXG4gICAgICAgICAgICAgICdoZXNzTVRtdyBoZXNzTVRUIGhlc3NNVFRnIGhlc3NNVFRndyBoZXNzTVRUbSBoZXNzTVR3IGhlc3NwIGhpc3QgaGlzdGYgaGlzdHAgaHNlYyBpbWFnIGluZGN2IGluZGV4Y2F0IGluZGljZXMgaW5kaWNlczIgJyArXG4gICAgICAgICAgICAgICdpbmRpY2VzZiBpbmRpY2VzZm4gaW5kbnYgaW5kc2F2IGludGVncmF0ZTFkIGludGVncmF0ZUNvbnRyb2xDcmVhdGUgaW50Z3JhdDIgaW50Z3JhdDMgaW50aHAxIGludGhwMiBpbnRocDMgaW50aHA0ICcgK1xuICAgICAgICAgICAgICAnaW50aHBDb250cm9sQ3JlYXRlIGludHF1YWQxIGludHF1YWQyIGludHF1YWQzIGludHJsZWF2IGludHJsZWF2c2EgaW50cnNlY3QgaW50c2ltcCBpbnYgaW52cGQgaW52c3dwIGlzY3BseCBpc2NwbHhmICcgK1xuICAgICAgICAgICAgICAnaXNkZW4gaXNpbmZuYW5taXNzIGlzbWlzcyBrZXkga2V5YXYga2V5dyBsYWcgbGFnMSBsYWduIGxhcEVpZ2hiIGxhcEVpZ2hpIGxhcEVpZ2h2YiBsYXBFaWdodmkgbGFwZ0VpZyBsYXBnRWlnaCBsYXBnRWlnaHYgJyArXG4gICAgICAgICAgICAgICdsYXBnRWlndiBsYXBnU2NodXIgbGFwZ1N2ZGNzdCBsYXBnU3ZkcyBsYXBnU3Zkc3QgbGFwU3ZkY3VzdiBsYXBTdmRzIGxhcFN2ZHVzdiBsZGxwIGxkbHNvbCBsaW5Tb2x2ZSBsaXN0d2lzZSBsbiBsbmNkZmJ2biAnICtcbiAgICAgICAgICAgICAgJ2xuY2RmYnZuMiBsbmNkZm12biBsbmNkZm4gbG5jZGZuMiBsbmNkZm5jIGxuZmFjdCBsbmdhbW1hY3BseCBsbnBkZm12biBsbnBkZm12dCBsbnBkZm4gbG5wZGZ0IGxvYWRkIGxvYWRzdHJ1Y3QgbG9hZHdpbmQgJyArXG4gICAgICAgICAgICAgICdsb2VzcyBsb2Vzc210IGxvZXNzbXRDb250cm9sQ3JlYXRlIGxvZyBsb2dsb2cgbG9neCBsb2d5IGxvd2VyIGxvd21hdCBsb3dtYXQxIGx0cmlzb2wgbHUgbHVzb2wgbWFjaEVwc2lsb24gbWFrZSBtYWtldmFycyAnICtcbiAgICAgICAgICAgICAgJ21ha2V3aW5kIG1hcmdpbiBtYXRhbGxvYyBtYXRpbml0IG1hdHRvYXJyYXkgbWF4Ynl0ZXMgbWF4YyBtYXhpbmRjIG1heHYgbWF4dmVjIG1iZXNzZWxlaSBtYmVzc2VsZWkwIG1iZXNzZWxlaTEgbWJlc3NlbGkgJyArXG4gICAgICAgICAgICAgICdtYmVzc2VsaTAgbWJlc3NlbGkxIG1lYW5jIG1lZGlhbiBtZXJnZWJ5IG1lcmdldmFyIG1pbmMgbWluaW5kYyBtaW52IG1pc3MgbWlzc2V4IG1pc3NydiBtb21lbnQgbW9tZW50ZCBtb3ZpbmdhdmUgJyArXG4gICAgICAgICAgICAgICdtb3ZpbmdhdmVFeHB3Z3QgbW92aW5nYXZlV2d0IG5leHRpbmRleCBuZXh0biBuZXh0bmV2biBuZXh0d2luZCBudG9zIG51bGwgbnVsbDEgbnVtQ29tYmluYXRpb25zIG9scyBvbHNtdCBvbHNtdENvbnRyb2xDcmVhdGUgJyArXG4gICAgICAgICAgICAgICdvbHNxciBvbHNxcjIgb2xzcXJtdCBvbmVzIG9wdG4gb3B0bmV2biBvcnRoIG91dHR5cCBwYWNmIHBhY2tlZFRvU3AgcGFja3IgcGFyc2UgcGF1c2UgcGRmQ2F1Y2h5IHBkZkNoaSBwZGZFeHAgcGRmR2VuUGFyZXRvICcgK1xuICAgICAgICAgICAgICAncGRmSHlwZXJHZW8gcGRmTGFwbGFjZSBwZGZMb2dpc3RpYyBwZGZuIHBkZlBvaXNzb24gcGRmUmF5bGVpZ2ggcGRmV2VpYnVsbCBwaSBwaW52IHBpbnZtdCBwbG90QWRkQXJyb3cgcGxvdEFkZEJhciBwbG90QWRkQm94ICcgK1xuICAgICAgICAgICAgICAncGxvdEFkZEhpc3QgcGxvdEFkZEhpc3RGIHBsb3RBZGRIaXN0UCBwbG90QWRkUG9sYXIgcGxvdEFkZFNjYXR0ZXIgcGxvdEFkZFNoYXBlIHBsb3RBZGRUZXh0Ym94IHBsb3RBZGRUUyBwbG90QWRkWFkgcGxvdEFyZWEgJyArXG4gICAgICAgICAgICAgICdwbG90QmFyIHBsb3RCb3ggcGxvdENsZWFyTGF5b3V0IHBsb3RDb250b3VyIHBsb3RDdXN0b21MYXlvdXQgcGxvdEdldERlZmF1bHRzIHBsb3RIaXN0IHBsb3RIaXN0RiBwbG90SGlzdFAgcGxvdExheW91dCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RMb2dMb2cgcGxvdExvZ1ggcGxvdExvZ1kgcGxvdE9wZW5XaW5kb3cgcGxvdFBvbGFyIHBsb3RTYXZlIHBsb3RTY2F0dGVyIHBsb3RTZXRBeGVzUGVuIHBsb3RTZXRCYXIgcGxvdFNldEJhckZpbGwgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0QmFyU3RhY2tlZCBwbG90U2V0QmtkQ29sb3IgcGxvdFNldEZpbGwgcGxvdFNldEdyaWQgcGxvdFNldExlZ2VuZCBwbG90U2V0TGluZUNvbG9yIHBsb3RTZXRMaW5lU3R5bGUgcGxvdFNldExpbmVTeW1ib2wgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0TGluZVRoaWNrbmVzcyBwbG90U2V0TmV3V2luZG93IHBsb3RTZXRUaXRsZSBwbG90U2V0V2hpY2hZQXhpcyBwbG90U2V0WEF4aXNTaG93IHBsb3RTZXRYTGFiZWwgcGxvdFNldFhSYW5nZSAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRYVGljSW50ZXJ2YWwgcGxvdFNldFhUaWNMYWJlbCBwbG90U2V0WUF4aXNTaG93IHBsb3RTZXRZTGFiZWwgcGxvdFNldFlSYW5nZSBwbG90U2V0WkF4aXNTaG93IHBsb3RTZXRaTGFiZWwgJyArXG4gICAgICAgICAgICAgICdwbG90U3VyZmFjZSBwbG90VFMgcGxvdFhZIHBvbGFyIHBvbHljaGFyIHBvbHlldmFsIHBvbHlnYW1tYSBwb2x5aW50IHBvbHltYWtlIHBvbHltYXQgcG9seW1yb290IHBvbHltdWx0IHBvbHlyb290ICcgK1xuICAgICAgICAgICAgICAncHFnd2luIHByZXZpb3VzaW5kZXggcHJpbmNvbXAgcHJpbnRmbSBwcmludGZtdCBwcm9kYyBwc2kgcHV0YXJyYXkgcHV0ZiBwdXR2YWxzIHB2Q3JlYXRlIHB2R2V0SW5kZXggcHZHZXRQYXJOYW1lcyAnICtcbiAgICAgICAgICAgICAgJ3B2R2V0UGFyVmVjdG9yIHB2TGVuZ3RoIHB2TGlzdCBwdlBhY2sgcHZQYWNraSBwdlBhY2ttIHB2UGFja21pIHB2UGFja3MgcHZQYWNrc2kgcHZQYWNrc20gcHZQYWNrc21pIHB2UHV0UGFyVmVjdG9yICcgK1xuICAgICAgICAgICAgICAncHZUZXN0IHB2VW5wYWNrIFFOZXd0b24gUU5ld3Rvbm10IFFOZXd0b25tdENvbnRyb2xDcmVhdGUgUU5ld3Rvbm10T3V0Q3JlYXRlIFFOZXd0b25TZXQgUVByb2cgUVByb2dtdCBRUHJvZ210SW5DcmVhdGUgJyArXG4gICAgICAgICAgICAgICdxcXIgcXFyZSBxcXJlcCBxciBxcmUgcXJlcCBxcnNvbCBxcnRzb2wgcXR5ciBxdHlyZSBxdHlyZXAgcXVhbnRpbGUgcXVhbnRpbGVkIHF5ciBxeXJlIHF5cmVwIHF6IHJhbmsgcmFua2luZHggcmVhZHIgJyArXG4gICAgICAgICAgICAgICdyZWFsIHJlY2xhc3NpZnkgcmVjbGFzc2lmeUN1dHMgcmVjb2RlIHJlY3NlcmFyIHJlY3NlcmNwIHJlY3NlcnJjIHJlcnVuIHJlc2NhbGUgcmVzaGFwZSByZXRzIHJldiByZmZ0IHJmZnRpIHJmZnRpcCByZmZ0biAnICtcbiAgICAgICAgICAgICAgJ3JmZnRucCByZmZ0cCBybmRCZXJub3VsbGkgcm5kQmV0YSBybmRCaW5vbWlhbCBybmRDYXVjaHkgcm5kQ2hpU3F1YXJlIHJuZENvbiBybmRDcmVhdGVTdGF0ZSBybmRFeHAgcm5kR2FtbWEgcm5kR2VvIHJuZEd1bWJlbCAnICtcbiAgICAgICAgICAgICAgJ3JuZEh5cGVyR2VvIHJuZGkgcm5kS01iZXRhIHJuZEtNZ2FtIHJuZEtNaSBybmRLTW4gcm5kS01uYiBybmRLTXAgcm5kS011IHJuZEtNdm0gcm5kTGFwbGFjZSBybmRMQ2JldGEgcm5kTENnYW0gcm5kTENpIHJuZExDbiAnICtcbiAgICAgICAgICAgICAgJ3JuZExDbmIgcm5kTENwIHJuZExDdSBybmRMQ3ZtIHJuZExvZ05vcm0gcm5kTVR1IHJuZE1WbiBybmRNVnQgcm5kbiBybmRuYiBybmROZWdCaW5vbWlhbCBybmRwIHJuZFBvaXNzb24gcm5kUmF5bGVpZ2ggJyArXG4gICAgICAgICAgICAgICdybmRTdGF0ZVNraXAgcm5kdSBybmR2bSBybmRXZWlidWxsIHJuZFdpc2hhcnQgcm90YXRlciByb3VuZCByb3dzIHJvd3NmIHJyZWYgc2FtcGxlRGF0YSBzYXRvc3RyQyBzYXZlZCBzYXZlU3RydWN0IHNhdmV3aW5kICcgK1xuICAgICAgICAgICAgICAnc2NhbGUgc2NhbGUzZCBzY2FsZXJyIHNjYWxpbmZuYW5taXNzIHNjYWxtaXNzIHNjaHRvYyBzY2h1ciBzZWFyY2hzb3VyY2VwYXRoIHNlZWtyIHNlbGVjdCBzZWxpZiBzZXFhIHNlcW0gc2V0ZGlmIHNldGRpZnNhICcgK1xuICAgICAgICAgICAgICAnc2V0dmFycyBzZXR2d3Jtb2RlIHNldHdpbmQgc2hlbGwgc2hpZnRyIHNpbiBzaW5nbGVpbmRleCBzaW5oIHNsZWVwIHNvbHBkIHNvcnRjIHNvcnRjYyBzb3J0ZCBzb3J0aGMgc29ydGhjYyBzb3J0aW5kICcgK1xuICAgICAgICAgICAgICAnc29ydGluZGMgc29ydG1jIHNvcnRyIHNvcnRyYyBzcEJpY29uakdyYWRTb2wgc3BDaG9sIHNwQ29uakdyYWRTb2wgc3BDcmVhdGUgc3BEZW5zZVN1Ym1hdCBzcERpYWdSdk1hdCBzcEVpZ3Ygc3BFeWUgc3BMREwgJyArXG4gICAgICAgICAgICAgICdzcGxpbmUgc3BMVSBzcE51bU5aRSBzcE9uZXMgc3ByZWFkU2hlZXRSZWFkTSBzcHJlYWRTaGVldFJlYWRTQSBzcHJlYWRTaGVldFdyaXRlIHNwU2NhbGUgc3BTdWJtYXQgc3BUb0RlbnNlIHNwVHJURGVuc2UgJyArXG4gICAgICAgICAgICAgICdzcFRTY2FsYXIgc3BaZXJvcyBzcXBTb2x2ZSBzcXBTb2x2ZU1UIHNxcFNvbHZlTVRDb250cm9sQ3JlYXRlIHNxcFNvbHZlTVRsYWdyYW5nZUNyZWF0ZSBzcXBTb2x2ZU1Ub3V0Q3JlYXRlIHNxcFNvbHZlU2V0ICcgK1xuICAgICAgICAgICAgICAnc3FydCBzdGF0ZW1lbnRzIHN0ZGMgc3Rkc2Mgc3RvY3Ygc3RvZiBzdHJjb21iaW5lIHN0cmluZHggc3RybGVuIHN0cnB1dCBzdHJyaW5keCBzdHJzZWN0IHN0cnNwbGl0IHN0cnNwbGl0UGFkIHN0cnRvZHQgJyArXG4gICAgICAgICAgICAgICdzdHJ0b2Ygc3RydG9mY3BseCBzdHJ0cmltbCBzdHJ0cmltciBzdHJ0cnVuYyBzdHJ0cnVuY2wgc3RydHJ1bmNwYWQgc3RydHJ1bmNyIHN1Ym1hdCBzdWJzY2F0IHN1YnN0dXRlIHN1YnZlYyBzdW1jIHN1bXIgJyArXG4gICAgICAgICAgICAgICdzdXJmYWNlIHN2ZCBzdmQxIHN2ZDIgc3ZkY3VzdiBzdmRzIHN2ZHVzdiBzeXNzdGF0ZSB0YWIgdGFuIHRhbmggdGVtcG5hbWUgJyArXG4gICAgICAgICAgICAgICd0aW1lIHRpbWVkdCB0aW1lc3RyIHRpbWV1dGMgdGl0bGUgdGtmMmVwcyB0a2YycHMgdG9jYXJ0IHRvZGF5ZHQgdG9lcGxpdHogdG9rZW4gdG9wb2xhciB0cmFwY2hrICcgK1xuICAgICAgICAgICAgICAndHJpZ2FtbWEgdHJpbXIgdHJ1bmMgdHlwZSB0eXBlY3YgdHlwZWYgdW5pb24gdW5pb25zYSB1bmlxaW5keCB1bmlxaW5keHNhIHVuaXF1ZSB1bmlxdWVzYSB1cG1hdCB1cG1hdDEgdXBwZXIgdXRjdG9kdCAnICtcbiAgICAgICAgICAgICAgJ3V0Y3RvZHR2IHV0cmlzb2wgdmFscyB2YXJDb3ZNUyB2YXJDb3ZYUyB2YXJnZXQgdmFyZ2V0bCB2YXJtYWxsIHZhcm1hcmVzIHZhcnB1dCB2YXJwdXRsIHZhcnR5cGVmIHZjbSB2Y21zIHZjeCB2Y3hzICcgK1xuICAgICAgICAgICAgICAndmVjIHZlY2ggdmVjciB2ZWN0b3IgdmdldCB2aWV3IHZpZXd4eXogdmxpc3Qgdm5hbWVjdiB2b2x1bWUgdnB1dCB2cmVhZCB2dHlwZWN2IHdhaXQgd2FpdGMgd2Fsa2luZGV4IHdoZXJlIHdpbmRvdyAnICtcbiAgICAgICAgICAgICAgJ3dyaXRlciB4bGFiZWwgeGxzR2V0U2hlZXRDb3VudCB4bHNHZXRTaGVldFNpemUgeGxzR2V0U2hlZXRUeXBlcyB4bHNNYWtlUmFuZ2UgeGxzUmVhZE0geGxzUmVhZFNBIHhsc1dyaXRlIHhsc1dyaXRlTSAnICtcbiAgICAgICAgICAgICAgJ3hsc1dyaXRlU0EgeHBuZCB4dGljcyB4eSB4eXogeWxhYmVsIHl0aWNzIHplcm9zIHpldGEgemxhYmVsIHp0aWNzIGNkZkVtcGlyaWNhbCBkb3QgaDVjcmVhdGUgaDVvcGVuIGg1cmVhZCBoNXJlYWRBdHRyaWJ1dGUgJyArXG4gICAgICAgICAgICAgICdoNXdyaXRlIGg1d3JpdGVBdHRyaWJ1dGUgbGRsIHBsb3RBZGRFcnJvckJhciBwbG90QWRkU3VyZmFjZSBwbG90Q0RGRW1waXJpY2FsIHBsb3RTZXRDb2xvcm1hcCBwbG90U2V0Q29udG91ckxhYmVscyAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RTZXRMZWdlbmRGb250IHBsb3RTZXRUZXh0SW50ZXJwcmV0ZXIgcGxvdFNldFhUaWNDb3VudCBwbG90U2V0WVRpY0NvdW50IHBsb3RTZXRaTGV2ZWxzIHBvd2VybSBzdHJqb2luIHN5bHZlc3RlciAnICtcbiAgICAgICAgICAgICAgJ3N0cnRyaW0nLFxuICAgIGxpdGVyYWw6ICdEQl9BRlRFUl9MQVNUX1JPVyBEQl9BTExfVEFCTEVTIERCX0JBVENIX09QRVJBVElPTlMgREJfQkVGT1JFX0ZJUlNUX1JPVyBEQl9CTE9CIERCX0VWRU5UX05PVElGSUNBVElPTlMgJyArXG4gICAgICAgICAgICAgJ0RCX0ZJTklTSF9RVUVSWSBEQl9ISUdIX1BSRUNJU0lPTiBEQl9MQVNUX0lOU0VSVF9JRCBEQl9MT1dfUFJFQ0lTSU9OX0RPVUJMRSBEQl9MT1dfUFJFQ0lTSU9OX0lOVDMyICcgK1xuICAgICAgICAgICAgICdEQl9MT1dfUFJFQ0lTSU9OX0lOVDY0IERCX0xPV19QUkVDSVNJT05fTlVNQkVSUyBEQl9NVUxUSVBMRV9SRVNVTFRfU0VUUyBEQl9OQU1FRF9QTEFDRUhPTERFUlMgJyArXG4gICAgICAgICAgICAgJ0RCX1BPU0lUSU9OQUxfUExBQ0VIT0xERVJTIERCX1BSRVBBUkVEX1FVRVJJRVMgREJfUVVFUllfU0laRSBEQl9TSU1QTEVfTE9DS0lORyBEQl9TWVNURU1fVEFCTEVTIERCX1RBQkxFUyAnICtcbiAgICAgICAgICAgICAnREJfVFJBTlNBQ1RJT05TIERCX1VOSUNPREUgREJfVklFV1MgX19TVERJTiBfX1NURE9VVCBfX1NUREVSUiBfX0ZJTEVfRElSJ1xuICB9O1xuXG5cbiAgdmFyIEFUX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnQCcsICdAJyk7XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9XG4gIHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnZGVmaW5lIGRlZmluZWNzfDEwIHVuZGVmIGlmZGVmIGlmbmRlZiBpZmxpZ2h0IGlmZGxsY2FsbCBpZm1hYyBpZm9zMndpbiBpZnVuaXggZWxzZSBlbmRpZiBsaW5lc29uIGxpbmVzb2ZmIHNyY2ZpbGUgc3JjbGluZSd9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luY2x1ZGUnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUnfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgXVxuICB9O1xuXG4gIHZhciBTVFJVQ1RfVFlQRSA9XG4gIHtcbiAgICBiZWdpbjogL1xcYnN0cnVjdFxccysvLFxuICAgIGVuZDogL1xccy8sXG4gICAga2V5d29yZHM6IFwic3RydWN0XCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInR5cGVcIixcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIG9ubHkgZm9yIGRlZmluaXRpb25zXG4gIHZhciBQQVJTRV9QQVJBTVMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHsgLy8gZG90c1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgIGJlZ2luOiAvXFwuXFwuXFwuLyxcbiAgICAgICAgfSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICAgIFNUUlVDVF9UWVBFLFxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICB2YXIgRlVOQ1RJT05fREVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogXCJ0aXRsZVwiLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBERUZJTklUSU9OID0gZnVuY3Rpb24gKGJlZ2luS2V5d29yZHMsIGVuZCwgaW5oZXJpdHMpIHtcbiAgICB2YXIgbW9kZSA9IGhsanMuaW5oZXJpdChcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6IGJlZ2luS2V5d29yZHMsXG4gICAgICAgIGVuZDogZW5kLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW10uY29uY2F0KFBBUlNFX1BBUkFNUyksXG4gICAgICB9LFxuICAgICAgaW5oZXJpdHMgfHwge31cbiAgICApO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChGVU5DVElPTl9ERUYpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfTlVNQkVSX01PREUpO1xuICAgIG1vZGUuY29udGFpbnMucHVzaChobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goQVRfQ09NTUVOVF9NT0RFKTtcbiAgICByZXR1cm4gbW9kZTtcbiAgfTtcblxuICB2YXIgQlVJTFRfSU5fUkVGID1cbiAgeyAvLyB0aGVzZSBhcmUgZXhwbGljaXRseSBuYW1lZCBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsc1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKCcgKyBLRVlXT1JEUy5idWlsdF9pbi5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICB9O1xuXG4gIHZhciBTVFJJTkdfUkVGID1cbiAge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIHZhciBGVU5DVElPTl9SRUYgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmXCIsXG4gICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBLRVlXT1JEUy5rZXl3b3JkLFxuICAgICAgfSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIHsgLy8gYW1iaWd1b3VzbHkgbmFtZWQgZnVuY3Rpb24gY2FsbHMgZ2V0IGEgcmVsZXZhbmNlIG9mIDBcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX1JFRl9QQVJBTVMgPVxuICB7XG4gICAgLy9jbGFzc05hbWU6IFwiZm5fcmVmX3BhcmFtc1wiLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3JkczogeyBidWlsdF9pbjogS0VZV09SRFMuYnVpbHRfaW4sIGxpdGVyYWw6IEtFWVdPUkRTLmxpdGVyYWwgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgIEJVSUxUX0lOX1JFRixcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUklOR19SRUYsXG4gICAgICAnc2VsZicsXG4gICAgXSxcbiAgfTtcblxuICBGVU5DVElPTl9SRUYuY29udGFpbnMucHVzaChGVU5DVElPTl9SRUZfUEFSQU1TKTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ3NzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSwgLy8gbGFuZ3VhZ2UgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvKFxce1slI118WyUjXVxcfXwgPC0gKS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkdfUkVGLFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46IC9cXGJleHRlcm5hbCAobWF0cml4fHN0cmluZ3xhcnJheXxzcGFyc2UgbWF0cml4fHN0cnVjdHxwcm9jfGtleXdvcmR8Zm4pLyxcbiAgICAgIH0sXG4gICAgICBERUZJTklUSU9OKCdwcm9jIGtleXdvcmQnLCAnOycpLFxuICAgICAgREVGSU5JVElPTignZm4nLCAnPScpLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZm9yIHRocmVhZGZvcicsXG4gICAgICAgIGVuZDogLzsvLFxuICAgICAgICAvL2VuZDogL1xcKC8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEFUX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBGVU5DVElPTl9SRUZfUEFSQU1TLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHsgLy8gY3VzdG9tIG1ldGhvZCBndWFyZFxuICAgICAgICAvLyBleGNsdWRlcyBtZXRob2QgbmFtZXMgZnJvbSBrZXl3b3JkIHByb2Nlc3NpbmdcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXC4nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLCB9LFxuICAgICAgICAgIHsgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccyo9JywgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OX1JFRixcbiAgICAgIFNUUlVDVF9UWVBFLFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEdDT0RFX0lERU5UX1JFID0gJ1tBLVpfXVtBLVowLTlfLl0qJztcbiAgICB2YXIgR0NPREVfQ0xPU0VfUkUgPSAnXFxcXCUnO1xuICAgIHZhciBHQ09ERV9LRVlXT1JEUyA9XG4gICAgICAnSUYgRE8gV0hJTEUgRU5EV0hJTEUgQ0FMTCBFTkRJRiBTVUIgRU5EU1VCIEdPVE8gUkVQRUFUIEVORFJFUEVBVCAnICtcbiAgICAgICdFUSBMVCBHVCBORSBHRSBMRSBPUiBYT1InO1xuICAgIHZhciBHQ09ERV9TVEFSVCA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnKFtPXSkoWzAtOV0rKSdcbiAgICB9O1xuICAgIHZhciBHQ09ERV9DT0RFID0gW1xuICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ09NTUVOVCgvXFwoLywgL1xcKS8pLFxuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7YmVnaW46ICcoWy0rXT8oWzAtOV0qXFxcXC4/WzAtOV0rXFxcXC4/KSl8JyArIGhsanMuQ19OVU1CRVJfUkV9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46ICcoW0ddKShbMC05XStcXFxcLj9bMC05XT8pJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFtNXSkoWzAtOV0rXFxcXC4/WzAtOV0/KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWQ3xWU3wjKScsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXGQrKSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogJyhWWk9GWHxWWk9GWXxWWk9GWiknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKEFUQU58QUJTfEFDT1N8QVNJTnxTSU58Q09TfEVYUHxGSVh8RlVQfFJPVU5EfExOfFRBTikoXFxcXFspJyxcbiAgICAgICAgICAgIGVuZDogJyhbLStdPyhbMC05XSpcXFxcLj9bMC05XStcXFxcLj8pKShcXFxcXSknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdOJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlhc2VzOiBbJ25jJ10sXG4gICAgICAgIC8vIFNvbWUgaW1wbGVtZW50YXRpb25zIChDTkMgY29udHJvbHMpIG9mIEctY29kZSBhcmUgaW50ZXJvcGVyYWJsZSB3aXRoIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMgc2VhbWxlc3NseS5cbiAgICAgICAgLy8gSG93ZXZlciwgbW9zdCBwcmVmZXIgYWxsIHVwcGVyY2FzZSBhbmQgdXBwZXJjYXNlIGlzIGN1c3RvbWFyeS5cbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogR0NPREVfSURFTlRfUkUsXG4gICAgICAgIGtleXdvcmRzOiBHQ09ERV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogR0NPREVfQ0xPU0VfUkVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBHQ09ERV9TVEFSVFxuICAgICAgICBdLmNvbmNhdChHQ09ERV9DT0RFKVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZlYXR1cmUnXSxcbiAgICBrZXl3b3JkczogJ0ZlYXR1cmUgQmFja2dyb3VuZCBBYmlsaXR5IEJ1c2luZXNzXFwgTmVlZCBTY2VuYXJpbyBTY2VuYXJpb3MgU2NlbmFyaW9cXCBPdXRsaW5lIFNjZW5hcmlvXFwgVGVtcGxhdGUgRXhhbXBsZXMgR2l2ZW4gQW5kIFRoZW4gQnV0IFdoZW4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXConLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ0BbXkBcXFxcc10rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8XFxcXHcqJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW158XSsnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFN0YXRlbWVudHNcbiAgICAgICAgJ2JyZWFrIGNvbnRpbnVlIGRpc2NhcmQgZG8gZWxzZSBmb3IgaWYgcmV0dXJuIHdoaWxlIHN3aXRjaCBjYXNlIGRlZmF1bHQgJyArXG4gICAgICAgIC8vIFF1YWxpZmllcnNcbiAgICAgICAgJ2F0dHJpYnV0ZSBiaW5kaW5nIGJ1ZmZlciBjY3cgY2VudHJvaWQgY2VudHJvaWQgdmFyeWluZyBjb2hlcmVudCBjb2x1bW5fbWFqb3IgY29uc3QgY3cgJyArXG4gICAgICAgICdkZXB0aF9hbnkgZGVwdGhfZ3JlYXRlciBkZXB0aF9sZXNzIGRlcHRoX3VuY2hhbmdlZCBlYXJseV9mcmFnbWVudF90ZXN0cyBlcXVhbF9zcGFjaW5nICcgK1xuICAgICAgICAnZmxhdCBmcmFjdGlvbmFsX2V2ZW5fc3BhY2luZyBmcmFjdGlvbmFsX29kZF9zcGFjaW5nIGhpZ2hwIGluIGluZGV4IGlub3V0IGludmFyaWFudCAnICtcbiAgICAgICAgJ2ludm9jYXRpb25zIGlzb2xpbmVzIGxheW91dCBsaW5lX3N0cmlwIGxpbmVzIGxpbmVzX2FkamFjZW5jeSBsb2NhbF9zaXplX3ggbG9jYWxfc2l6ZV95ICcgK1xuICAgICAgICAnbG9jYWxfc2l6ZV96IGxvY2F0aW9uIGxvd3AgbWF4X3ZlcnRpY2VzIG1lZGl1bXAgbm9wZXJzcGVjdGl2ZSBvZmZzZXQgb3JpZ2luX3VwcGVyX2xlZnQgJyArXG4gICAgICAgICdvdXQgcGFja2VkIHBhdGNoIHBpeGVsX2NlbnRlcl9pbnRlZ2VyIHBvaW50X21vZGUgcG9pbnRzIHByZWNpc2UgcHJlY2lzaW9uIHF1YWRzIHIxMWZfZzExZl9iMTBmICcrXG4gICAgICAgICdyMTYgcjE2X3Nub3JtIHIxNmYgcjE2aSByMTZ1aSByMzJmIHIzMmkgcjMydWkgcjggcjhfc25vcm0gcjhpIHI4dWkgcmVhZG9ubHkgcmVzdHJpY3QgJyArXG4gICAgICAgICdyZzE2IHJnMTZfc25vcm0gcmcxNmYgcmcxNmkgcmcxNnVpIHJnMzJmIHJnMzJpIHJnMzJ1aSByZzggcmc4X3Nub3JtIHJnOGkgcmc4dWkgcmdiMTBfYTIgJyArXG4gICAgICAgICdyZ2IxMF9hMnVpIHJnYmExNiByZ2JhMTZfc25vcm0gcmdiYTE2ZiByZ2JhMTZpIHJnYmExNnVpIHJnYmEzMmYgcmdiYTMyaSByZ2JhMzJ1aSByZ2JhOCAnICtcbiAgICAgICAgJ3JnYmE4X3Nub3JtIHJnYmE4aSByZ2JhOHVpIHJvd19tYWpvciBzYW1wbGUgc2hhcmVkIHNtb290aCBzdGQxNDAgc3RkNDMwIHN0cmVhbSB0cmlhbmdsZV9zdHJpcCAnICtcbiAgICAgICAgJ3RyaWFuZ2xlcyB0cmlhbmdsZXNfYWRqYWNlbmN5IHVuaWZvcm0gdmFyeWluZyB2ZXJ0aWNlcyB2b2xhdGlsZSB3cml0ZW9ubHknLFxuICAgICAgdHlwZTpcbiAgICAgICAgJ2F0b21pY191aW50IGJvb2wgYnZlYzIgYnZlYzMgYnZlYzQgZG1hdDIgZG1hdDJ4MiBkbWF0MngzIGRtYXQyeDQgZG1hdDMgZG1hdDN4MiBkbWF0M3gzICcgK1xuICAgICAgICAnZG1hdDN4NCBkbWF0NCBkbWF0NHgyIGRtYXQ0eDMgZG1hdDR4NCBkb3VibGUgZHZlYzIgZHZlYzMgZHZlYzQgZmxvYXQgaWltYWdlMUQgaWltYWdlMURBcnJheSAnICtcbiAgICAgICAgJ2lpbWFnZTJEIGlpbWFnZTJEQXJyYXkgaWltYWdlMkRNUyBpaW1hZ2UyRE1TQXJyYXkgaWltYWdlMkRSZWN0IGlpbWFnZTNEIGlpbWFnZUJ1ZmZlcicgK1xuICAgICAgICAnaWltYWdlQ3ViZSBpaW1hZ2VDdWJlQXJyYXkgaW1hZ2UxRCBpbWFnZTFEQXJyYXkgaW1hZ2UyRCBpbWFnZTJEQXJyYXkgaW1hZ2UyRE1TIGltYWdlMkRNU0FycmF5ICcgK1xuICAgICAgICAnaW1hZ2UyRFJlY3QgaW1hZ2UzRCBpbWFnZUJ1ZmZlciBpbWFnZUN1YmUgaW1hZ2VDdWJlQXJyYXkgaW50IGlzYW1wbGVyMUQgaXNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAnaXNhbXBsZXIyRCBpc2FtcGxlcjJEQXJyYXkgaXNhbXBsZXIyRE1TIGlzYW1wbGVyMkRNU0FycmF5IGlzYW1wbGVyMkRSZWN0IGlzYW1wbGVyM0QgJyArXG4gICAgICAgICdpc2FtcGxlckJ1ZmZlciBpc2FtcGxlckN1YmUgaXNhbXBsZXJDdWJlQXJyYXkgaXZlYzIgaXZlYzMgaXZlYzQgbWF0MiBtYXQyeDIgbWF0MngzICcgK1xuICAgICAgICAnbWF0Mng0IG1hdDMgbWF0M3gyIG1hdDN4MyBtYXQzeDQgbWF0NCBtYXQ0eDIgbWF0NHgzIG1hdDR4NCBzYW1wbGVyMUQgc2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICdzYW1wbGVyMURBcnJheVNoYWRvdyBzYW1wbGVyMURTaGFkb3cgc2FtcGxlcjJEIHNhbXBsZXIyREFycmF5IHNhbXBsZXIyREFycmF5U2hhZG93ICcgK1xuICAgICAgICAnc2FtcGxlcjJETVMgc2FtcGxlcjJETVNBcnJheSBzYW1wbGVyMkRSZWN0IHNhbXBsZXIyRFJlY3RTaGFkb3cgc2FtcGxlcjJEU2hhZG93IHNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgc2FtcGxlckN1YmUgc2FtcGxlckN1YmVBcnJheSBzYW1wbGVyQ3ViZUFycmF5U2hhZG93IHNhbXBsZXJDdWJlU2hhZG93ICcgK1xuICAgICAgICAnaW1hZ2UxRCB1aW1hZ2UxREFycmF5IHVpbWFnZTJEIHVpbWFnZTJEQXJyYXkgdWltYWdlMkRNUyB1aW1hZ2UyRE1TQXJyYXkgdWltYWdlMkRSZWN0ICcgK1xuICAgICAgICAndWltYWdlM0QgdWltYWdlQnVmZmVyIHVpbWFnZUN1YmUgdWltYWdlQ3ViZUFycmF5IHVpbnQgdXNhbXBsZXIxRCB1c2FtcGxlcjFEQXJyYXkgJyArXG4gICAgICAgICd1c2FtcGxlcjJEIHVzYW1wbGVyMkRBcnJheSB1c2FtcGxlcjJETVMgdXNhbXBsZXIyRE1TQXJyYXkgdXNhbXBsZXIyRFJlY3QgdXNhbXBsZXIzRCAnICtcbiAgICAgICAgJ3NhbXBsZXJCdWZmZXIgdXNhbXBsZXJDdWJlIHVzYW1wbGVyQ3ViZUFycmF5IHV2ZWMyIHV2ZWMzIHV2ZWM0IHZlYzIgdmVjMyB2ZWM0IHZvaWQnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIENvbnN0YW50c1xuICAgICAgICAnZ2xfTWF4QXRvbWljQ291bnRlckJpbmRpbmdzIGdsX01heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplIGdsX01heENsaXBEaXN0YW5jZXMgZ2xfTWF4Q2xpcFBsYW5lcyAnICtcbiAgICAgICAgJ2dsX01heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4Q29tYmluZWRBdG9taWNDb3VudGVycyBnbF9NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhDb21iaW5lZEltYWdlVW5pdHNBbmRGcmFnbWVudE91dHB1dHMgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyBnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMgJyArXG4gICAgICAgICdnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgZ2xfTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgZ2xfTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzIGdsX01heENvbXB1dGVXb3JrR3JvdXBDb3VudCBnbF9NYXhDb21wdXRlV29ya0dyb3VwU2l6ZSAnICtcbiAgICAgICAgJ2dsX01heERyYXdCdWZmZXJzIGdsX01heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyBnbF9NYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyBnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyAnICtcbiAgICAgICAgJ2dsX01heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyBnbF9NYXhHZW9tZXRyeUF0b21pY0NvdW50ZXJCdWZmZXJzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlBdG9taWNDb3VudGVycyBnbF9NYXhHZW9tZXRyeUltYWdlVW5pZm9ybXMgZ2xfTWF4R2VvbWV0cnlJbnB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhHZW9tZXRyeU91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlPdXRwdXRWZXJ0aWNlcyBnbF9NYXhHZW9tZXRyeVRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhHZW9tZXRyeVZhcnlpbmdDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4SW1hZ2VTYW1wbGVzIGdsX01heEltYWdlVW5pdHMgZ2xfTWF4TGlnaHRzIGdsX01heFBhdGNoVmVydGljZXMgZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhUZXNzQ29udHJvbEF0b21pY0NvdW50ZXJzIGdsX01heFRlc3NDb250cm9sSW1hZ2VVbmlmb3JtcyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sSW5wdXRDb21wb25lbnRzIGdsX01heFRlc3NDb250cm9sT3V0cHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzQ29udHJvbFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0NvbnRyb2xUb3RhbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0NvbnRyb2xVbmlmb3JtQ29tcG9uZW50cyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VGVzc0V2YWx1YXRpb25BdG9taWNDb3VudGVycyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NFdmFsdWF0aW9uSW1hZ2VVbmlmb3JtcyBnbF9NYXhUZXNzRXZhbHVhdGlvbklucHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzRXZhbHVhdGlvbk91dHB1dENvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvblRleHR1cmVJbWFnZVVuaXRzIGdsX01heFRlc3NFdmFsdWF0aW9uVW5pZm9ybUNvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzR2VuTGV2ZWwgZ2xfTWF4VGVzc1BhdGNoQ29tcG9uZW50cyBnbF9NYXhUZXh0dXJlQ29vcmRzIGdsX01heFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VGV4dHVyZVVuaXRzIGdsX01heFZhcnlpbmdDb21wb25lbnRzIGdsX01heFZhcnlpbmdGbG9hdHMgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycyBnbF9NYXhWZXJ0ZXhBdG9taWNDb3VudGVycyBnbF9NYXhWZXJ0ZXhBdHRyaWJzIGdsX01heFZlcnRleEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIGdsX01heFZlcnRleE91dHB1dFZlY3RvcnMgZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgJyArXG4gICAgICAgICdnbF9NYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyBnbF9NYXhWaWV3cG9ydHMgZ2xfTWluUHJvZ3JhbVRleGVsT2Zmc2V0ICcgK1xuICAgICAgICAvLyBWYXJpYWJsZXNcbiAgICAgICAgJ2dsX0JhY2tDb2xvciBnbF9CYWNrTGlnaHRNb2RlbFByb2R1Y3QgZ2xfQmFja0xpZ2h0UHJvZHVjdCBnbF9CYWNrTWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9CYWNrU2Vjb25kYXJ5Q29sb3IgZ2xfQ2xpcERpc3RhbmNlIGdsX0NsaXBQbGFuZSBnbF9DbGlwVmVydGV4IGdsX0NvbG9yICcgK1xuICAgICAgICAnZ2xfRGVwdGhSYW5nZSBnbF9FeWVQbGFuZVEgZ2xfRXllUGxhbmVSIGdsX0V5ZVBsYW5lUyBnbF9FeWVQbGFuZVQgZ2xfRm9nIGdsX0ZvZ0Nvb3JkICcgK1xuICAgICAgICAnZ2xfRm9nRnJhZ0Nvb3JkIGdsX0ZyYWdDb2xvciBnbF9GcmFnQ29vcmQgZ2xfRnJhZ0RhdGEgZ2xfRnJhZ0RlcHRoIGdsX0Zyb250Q29sb3IgJyArXG4gICAgICAgICdnbF9Gcm9udEZhY2luZyBnbF9Gcm9udExpZ2h0TW9kZWxQcm9kdWN0IGdsX0Zyb250TGlnaHRQcm9kdWN0IGdsX0Zyb250TWF0ZXJpYWwgJyArXG4gICAgICAgICdnbF9Gcm9udFNlY29uZGFyeUNvbG9yIGdsX0dsb2JhbEludm9jYXRpb25JRCBnbF9JbnN0YW5jZUlEIGdsX0ludm9jYXRpb25JRCBnbF9MYXllciBnbF9MaWdodE1vZGVsICcgK1xuICAgICAgICAnZ2xfTGlnaHRTb3VyY2UgZ2xfTG9jYWxJbnZvY2F0aW9uSUQgZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXggZ2xfTW9kZWxWaWV3TWF0cml4ICcgK1xuICAgICAgICAnZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSBnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIGdsX01vZGVsVmlld01hdHJpeFRyYW5zcG9zZSAnICtcbiAgICAgICAgJ2dsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UgZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX011bHRpVGV4Q29vcmQwIGdsX011bHRpVGV4Q29vcmQxIGdsX011bHRpVGV4Q29vcmQyICcgK1xuICAgICAgICAnZ2xfTXVsdGlUZXhDb29yZDMgZ2xfTXVsdGlUZXhDb29yZDQgZ2xfTXVsdGlUZXhDb29yZDUgZ2xfTXVsdGlUZXhDb29yZDYgZ2xfTXVsdGlUZXhDb29yZDcgJyArXG4gICAgICAgICdnbF9Ob3JtYWwgZ2xfTm9ybWFsTWF0cml4IGdsX05vcm1hbFNjYWxlIGdsX051bVNhbXBsZXMgZ2xfTnVtV29ya0dyb3VwcyBnbF9PYmplY3RQbGFuZVEgJyArXG4gICAgICAgICdnbF9PYmplY3RQbGFuZVIgZ2xfT2JqZWN0UGxhbmVTIGdsX09iamVjdFBsYW5lVCBnbF9QYXRjaFZlcnRpY2VzSW4gZ2xfUG9pbnQgZ2xfUG9pbnRDb29yZCAnICtcbiAgICAgICAgJ2dsX1BvaW50U2l6ZSBnbF9Qb3NpdGlvbiBnbF9QcmltaXRpdmVJRCBnbF9QcmltaXRpdmVJREluIGdsX1Byb2plY3Rpb25NYXRyaXggZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2UgJyArXG4gICAgICAgICdnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSBnbF9Qcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIGdsX1NhbXBsZUlEIGdsX1NhbXBsZU1hc2sgJyArXG4gICAgICAgICdnbF9TYW1wbGVNYXNrSW4gZ2xfU2FtcGxlUG9zaXRpb24gZ2xfU2Vjb25kYXJ5Q29sb3IgZ2xfVGVzc0Nvb3JkIGdsX1Rlc3NMZXZlbElubmVyIGdsX1Rlc3NMZXZlbE91dGVyICcgK1xuICAgICAgICAnZ2xfVGV4Q29vcmQgZ2xfVGV4dHVyZUVudkNvbG9yIGdsX1RleHR1cmVNYXRyaXggZ2xfVGV4dHVyZU1hdHJpeEludmVyc2UgZ2xfVGV4dHVyZU1hdHJpeEludmVyc2VUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9UZXh0dXJlTWF0cml4VHJhbnNwb3NlIGdsX1ZlcnRleCBnbF9WZXJ0ZXhJRCBnbF9WaWV3cG9ydEluZGV4IGdsX1dvcmtHcm91cElEIGdsX1dvcmtHcm91cFNpemUgZ2xfaW4gZ2xfb3V0ICcgK1xuICAgICAgICAvLyBGdW5jdGlvbnNcbiAgICAgICAgJ0VtaXRTdHJlYW1WZXJ0ZXggRW1pdFZlcnRleCBFbmRQcmltaXRpdmUgRW5kU3RyZWFtUHJpbWl0aXZlIGFicyBhY29zIGFjb3NoIGFsbCBhbnkgYXNpbiAnICtcbiAgICAgICAgJ2FzaW5oIGF0YW4gYXRhbmggYXRvbWljQWRkIGF0b21pY0FuZCBhdG9taWNDb21wU3dhcCBhdG9taWNDb3VudGVyIGF0b21pY0NvdW50ZXJEZWNyZW1lbnQgJyArXG4gICAgICAgICdhdG9taWNDb3VudGVySW5jcmVtZW50IGF0b21pY0V4Y2hhbmdlIGF0b21pY01heCBhdG9taWNNaW4gYXRvbWljT3IgYXRvbWljWG9yIGJhcnJpZXIgJyArXG4gICAgICAgICdiaXRDb3VudCBiaXRmaWVsZEV4dHJhY3QgYml0ZmllbGRJbnNlcnQgYml0ZmllbGRSZXZlcnNlIGNlaWwgY2xhbXAgY29zIGNvc2ggY3Jvc3MgJyArXG4gICAgICAgICdkRmR4IGRGZHkgZGVncmVlcyBkZXRlcm1pbmFudCBkaXN0YW5jZSBkb3QgZXF1YWwgZXhwIGV4cDIgZmFjZWZvcndhcmQgZmluZExTQiBmaW5kTVNCICcgK1xuICAgICAgICAnZmxvYXRCaXRzVG9JbnQgZmxvYXRCaXRzVG9VaW50IGZsb29yIGZtYSBmcmFjdCBmcmV4cCBmdHJhbnNmb3JtIGZ3aWR0aCBncmVhdGVyVGhhbiAnICtcbiAgICAgICAgJ2dyZWF0ZXJUaGFuRXF1YWwgZ3JvdXBNZW1vcnlCYXJyaWVyIGltYWdlQXRvbWljQWRkIGltYWdlQXRvbWljQW5kIGltYWdlQXRvbWljQ29tcFN3YXAgJyArXG4gICAgICAgICdpbWFnZUF0b21pY0V4Y2hhbmdlIGltYWdlQXRvbWljTWF4IGltYWdlQXRvbWljTWluIGltYWdlQXRvbWljT3IgaW1hZ2VBdG9taWNYb3IgaW1hZ2VMb2FkICcgK1xuICAgICAgICAnaW1hZ2VTaXplIGltYWdlU3RvcmUgaW11bEV4dGVuZGVkIGludEJpdHNUb0Zsb2F0IGludGVycG9sYXRlQXRDZW50cm9pZCBpbnRlcnBvbGF0ZUF0T2Zmc2V0ICcgK1xuICAgICAgICAnaW50ZXJwb2xhdGVBdFNhbXBsZSBpbnZlcnNlIGludmVyc2VzcXJ0IGlzaW5mIGlzbmFuIGxkZXhwIGxlbmd0aCBsZXNzVGhhbiBsZXNzVGhhbkVxdWFsIGxvZyAnICtcbiAgICAgICAgJ2xvZzIgbWF0cml4Q29tcE11bHQgbWF4IG1lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIgbWVtb3J5QmFycmllckJ1ZmZlciAnICtcbiAgICAgICAgJ21lbW9yeUJhcnJpZXJJbWFnZSBtZW1vcnlCYXJyaWVyU2hhcmVkIG1pbiBtaXggbW9kIG1vZGYgbm9pc2UxIG5vaXNlMiBub2lzZTMgbm9pc2U0ICcgK1xuICAgICAgICAnbm9ybWFsaXplIG5vdCBub3RFcXVhbCBvdXRlclByb2R1Y3QgcGFja0RvdWJsZTJ4MzIgcGFja0hhbGYyeDE2IHBhY2tTbm9ybTJ4MTYgcGFja1Nub3JtNHg4ICcgK1xuICAgICAgICAncGFja1Vub3JtMngxNiBwYWNrVW5vcm00eDggcG93IHJhZGlhbnMgcmVmbGVjdCByZWZyYWN0IHJvdW5kIHJvdW5kRXZlbiBzaGFkb3cxRCBzaGFkb3cxRExvZCAnICtcbiAgICAgICAgJ3NoYWRvdzFEUHJvaiBzaGFkb3cxRFByb2pMb2Qgc2hhZG93MkQgc2hhZG93MkRMb2Qgc2hhZG93MkRQcm9qIHNoYWRvdzJEUHJvakxvZCBzaWduIHNpbiBzaW5oICcgK1xuICAgICAgICAnc21vb3Roc3RlcCBzcXJ0IHN0ZXAgdGFuIHRhbmggdGV4ZWxGZXRjaCB0ZXhlbEZldGNoT2Zmc2V0IHRleHR1cmUgdGV4dHVyZTFEIHRleHR1cmUxRExvZCAnICtcbiAgICAgICAgJ3RleHR1cmUxRFByb2ogdGV4dHVyZTFEUHJvakxvZCB0ZXh0dXJlMkQgdGV4dHVyZTJETG9kIHRleHR1cmUyRFByb2ogdGV4dHVyZTJEUHJvakxvZCAnICtcbiAgICAgICAgJ3RleHR1cmUzRCB0ZXh0dXJlM0RMb2QgdGV4dHVyZTNEUHJvaiB0ZXh0dXJlM0RQcm9qTG9kIHRleHR1cmVDdWJlIHRleHR1cmVDdWJlTG9kICcgK1xuICAgICAgICAndGV4dHVyZUdhdGhlciB0ZXh0dXJlR2F0aGVyT2Zmc2V0IHRleHR1cmVHYXRoZXJPZmZzZXRzIHRleHR1cmVHcmFkIHRleHR1cmVHcmFkT2Zmc2V0ICcgK1xuICAgICAgICAndGV4dHVyZUxvZCB0ZXh0dXJlTG9kT2Zmc2V0IHRleHR1cmVPZmZzZXQgdGV4dHVyZVByb2ogdGV4dHVyZVByb2pHcmFkIHRleHR1cmVQcm9qR3JhZE9mZnNldCAnICtcbiAgICAgICAgJ3RleHR1cmVQcm9qTG9kIHRleHR1cmVQcm9qTG9kT2Zmc2V0IHRleHR1cmVQcm9qT2Zmc2V0IHRleHR1cmVRdWVyeUxldmVscyB0ZXh0dXJlUXVlcnlMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlU2l6ZSB0cmFuc3Bvc2UgdHJ1bmMgdWFkZENhcnJ5IHVpbnRCaXRzVG9GbG9hdCB1bXVsRXh0ZW5kZWQgdW5wYWNrRG91YmxlMngzMiAnICtcbiAgICAgICAgJ3VucGFja0hhbGYyeDE2IHVucGFja1Nub3JtMngxNiB1bnBhY2tTbm9ybTR4OCB1bnBhY2tVbm9ybTJ4MTYgdW5wYWNrVW5vcm00eDggdXN1YkJvcnJvdycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHTUxfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZHM6ICdiZWdpbiBlbmQgaWYgdGhlbiBlbHNlIHdoaWxlIGRvIGZvciBicmVhayBjb250aW51ZSB3aXRoIHVudGlsICcgK1xuICAgICAgJ3JlcGVhdCBleGl0IGFuZCBvciB4b3Igbm90IHJldHVybiBtb2QgZGl2IHN3aXRjaCBjYXNlIGRlZmF1bHQgdmFyICcgK1xuICAgICAgJ2dsb2JhbHZhciBlbnVtICNtYWNybyAjcmVnaW9uICNlbmRyZWdpb24nLFxuICAgIGJ1aWx0X2luOiAnaXNfcmVhbCBpc19zdHJpbmcgaXNfYXJyYXkgaXNfdW5kZWZpbmVkIGlzX2ludDMyIGlzX2ludDY0ICcgK1xuICAgICAgJ2lzX3B0ciBpc192ZWMzIGlzX3ZlYzQgaXNfbWF0cml4IGlzX2Jvb2wgdHlwZW9mICcgK1xuICAgICAgJ3ZhcmlhYmxlX2dsb2JhbF9leGlzdHMgdmFyaWFibGVfZ2xvYmFsX2dldCB2YXJpYWJsZV9nbG9iYWxfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2V4aXN0cyB2YXJpYWJsZV9pbnN0YW5jZV9nZXQgdmFyaWFibGVfaW5zdGFuY2Vfc2V0ICcgK1xuICAgICAgJ3ZhcmlhYmxlX2luc3RhbmNlX2dldF9uYW1lcyBhcnJheV9sZW5ndGhfMWQgYXJyYXlfbGVuZ3RoXzJkICcgK1xuICAgICAgJ2FycmF5X2hlaWdodF8yZCBhcnJheV9lcXVhbHMgYXJyYXlfY3JlYXRlIGFycmF5X2NvcHkgcmFuZG9tICcgK1xuICAgICAgJ3JhbmRvbV9yYW5nZSBpcmFuZG9tIGlyYW5kb21fcmFuZ2UgcmFuZG9tX3NldF9zZWVkIHJhbmRvbV9nZXRfc2VlZCAnICtcbiAgICAgICdyYW5kb21pemUgcmFuZG9taXNlIGNob29zZSBhYnMgcm91bmQgZmxvb3IgY2VpbCBzaWduIGZyYWMgc3FydCBzcXIgJyArXG4gICAgICAnZXhwIGxuIGxvZzIgbG9nMTAgc2luIGNvcyB0YW4gYXJjc2luIGFyY2NvcyBhcmN0YW4gYXJjdGFuMiBkc2luIGRjb3MgJyArXG4gICAgICAnZHRhbiBkYXJjc2luIGRhcmNjb3MgZGFyY3RhbiBkYXJjdGFuMiBkZWd0b3JhZCByYWR0b2RlZyBwb3dlciBsb2duICcgK1xuICAgICAgJ21pbiBtYXggbWVhbiBtZWRpYW4gY2xhbXAgbGVycCBkb3RfcHJvZHVjdCBkb3RfcHJvZHVjdF8zZCAnICtcbiAgICAgICdkb3RfcHJvZHVjdF9ub3JtYWxpc2VkIGRvdF9wcm9kdWN0XzNkX25vcm1hbGlzZWQgJyArXG4gICAgICAnZG90X3Byb2R1Y3Rfbm9ybWFsaXplZCBkb3RfcHJvZHVjdF8zZF9ub3JtYWxpemVkIG1hdGhfc2V0X2Vwc2lsb24gJyArXG4gICAgICAnbWF0aF9nZXRfZXBzaWxvbiBhbmdsZV9kaWZmZXJlbmNlIHBvaW50X2Rpc3RhbmNlXzNkIHBvaW50X2Rpc3RhbmNlICcgK1xuICAgICAgJ3BvaW50X2RpcmVjdGlvbiBsZW5ndGhkaXJfeCBsZW5ndGhkaXJfeSByZWFsIHN0cmluZyBpbnQ2NCBwdHIgJyArXG4gICAgICAnc3RyaW5nX2Zvcm1hdCBjaHIgYW5zaV9jaGFyIG9yZCBzdHJpbmdfbGVuZ3RoIHN0cmluZ19ieXRlX2xlbmd0aCAnICtcbiAgICAgICdzdHJpbmdfcG9zIHN0cmluZ19jb3B5IHN0cmluZ19jaGFyX2F0IHN0cmluZ19vcmRfYXQgc3RyaW5nX2J5dGVfYXQgJyArXG4gICAgICAnc3RyaW5nX3NldF9ieXRlX2F0IHN0cmluZ19kZWxldGUgc3RyaW5nX2luc2VydCBzdHJpbmdfbG93ZXIgJyArXG4gICAgICAnc3RyaW5nX3VwcGVyIHN0cmluZ19yZXBlYXQgc3RyaW5nX2xldHRlcnMgc3RyaW5nX2RpZ2l0cyAnICtcbiAgICAgICdzdHJpbmdfbGV0dGVyc2RpZ2l0cyBzdHJpbmdfcmVwbGFjZSBzdHJpbmdfcmVwbGFjZV9hbGwgc3RyaW5nX2NvdW50ICcgK1xuICAgICAgJ3N0cmluZ19oYXNoX3RvX25ld2xpbmUgY2xpcGJvYXJkX2hhc190ZXh0IGNsaXBib2FyZF9zZXRfdGV4dCAnICtcbiAgICAgICdjbGlwYm9hcmRfZ2V0X3RleHQgZGF0ZV9jdXJyZW50X2RhdGV0aW1lIGRhdGVfY3JlYXRlX2RhdGV0aW1lICcgK1xuICAgICAgJ2RhdGVfdmFsaWRfZGF0ZXRpbWUgZGF0ZV9pbmNfeWVhciBkYXRlX2luY19tb250aCBkYXRlX2luY193ZWVrICcgK1xuICAgICAgJ2RhdGVfaW5jX2RheSBkYXRlX2luY19ob3VyIGRhdGVfaW5jX21pbnV0ZSBkYXRlX2luY19zZWNvbmQgJyArXG4gICAgICAnZGF0ZV9nZXRfeWVhciBkYXRlX2dldF9tb250aCBkYXRlX2dldF93ZWVrIGRhdGVfZ2V0X2RheSAnICtcbiAgICAgICdkYXRlX2dldF9ob3VyIGRhdGVfZ2V0X21pbnV0ZSBkYXRlX2dldF9zZWNvbmQgZGF0ZV9nZXRfd2Vla2RheSAnICtcbiAgICAgICdkYXRlX2dldF9kYXlfb2ZfeWVhciBkYXRlX2dldF9ob3VyX29mX3llYXIgZGF0ZV9nZXRfbWludXRlX29mX3llYXIgJyArXG4gICAgICAnZGF0ZV9nZXRfc2Vjb25kX29mX3llYXIgZGF0ZV95ZWFyX3NwYW4gZGF0ZV9tb250aF9zcGFuICcgK1xuICAgICAgJ2RhdGVfd2Vla19zcGFuIGRhdGVfZGF5X3NwYW4gZGF0ZV9ob3VyX3NwYW4gZGF0ZV9taW51dGVfc3BhbiAnICtcbiAgICAgICdkYXRlX3NlY29uZF9zcGFuIGRhdGVfY29tcGFyZV9kYXRldGltZSBkYXRlX2NvbXBhcmVfZGF0ZSAnICtcbiAgICAgICdkYXRlX2NvbXBhcmVfdGltZSBkYXRlX2RhdGVfb2YgZGF0ZV90aW1lX29mIGRhdGVfZGF0ZXRpbWVfc3RyaW5nICcgK1xuICAgICAgJ2RhdGVfZGF0ZV9zdHJpbmcgZGF0ZV90aW1lX3N0cmluZyBkYXRlX2RheXNfaW5fbW9udGggJyArXG4gICAgICAnZGF0ZV9kYXlzX2luX3llYXIgZGF0ZV9sZWFwX3llYXIgZGF0ZV9pc190b2RheSBkYXRlX3NldF90aW1lem9uZSAnICtcbiAgICAgICdkYXRlX2dldF90aW1lem9uZSBnYW1lX3NldF9zcGVlZCBnYW1lX2dldF9zcGVlZCBtb3Rpb25fc2V0ICcgK1xuICAgICAgJ21vdGlvbl9hZGQgcGxhY2VfZnJlZSBwbGFjZV9lbXB0eSBwbGFjZV9tZWV0aW5nIHBsYWNlX3NuYXBwZWQgJyArXG4gICAgICAnbW92ZV9yYW5kb20gbW92ZV9zbmFwIG1vdmVfdG93YXJkc19wb2ludCBtb3ZlX2NvbnRhY3Rfc29saWQgJyArXG4gICAgICAnbW92ZV9jb250YWN0X2FsbCBtb3ZlX291dHNpZGVfc29saWQgbW92ZV9vdXRzaWRlX2FsbCAnICtcbiAgICAgICdtb3ZlX2JvdW5jZV9zb2xpZCBtb3ZlX2JvdW5jZV9hbGwgbW92ZV93cmFwIGRpc3RhbmNlX3RvX3BvaW50ICcgK1xuICAgICAgJ2Rpc3RhbmNlX3RvX29iamVjdCBwb3NpdGlvbl9lbXB0eSBwb3NpdGlvbl9tZWV0aW5nIHBhdGhfc3RhcnQgJyArXG4gICAgICAncGF0aF9lbmQgbXBfbGluZWFyX3N0ZXAgbXBfcG90ZW50aWFsX3N0ZXAgbXBfbGluZWFyX3N0ZXBfb2JqZWN0ICcgK1xuICAgICAgJ21wX3BvdGVudGlhbF9zdGVwX29iamVjdCBtcF9wb3RlbnRpYWxfc2V0dGluZ3MgbXBfbGluZWFyX3BhdGggJyArXG4gICAgICAnbXBfcG90ZW50aWFsX3BhdGggbXBfbGluZWFyX3BhdGhfb2JqZWN0IG1wX3BvdGVudGlhbF9wYXRoX29iamVjdCAnICtcbiAgICAgICdtcF9ncmlkX2NyZWF0ZSBtcF9ncmlkX2Rlc3Ryb3kgbXBfZ3JpZF9jbGVhcl9hbGwgbXBfZ3JpZF9jbGVhcl9jZWxsICcgK1xuICAgICAgJ21wX2dyaWRfY2xlYXJfcmVjdGFuZ2xlIG1wX2dyaWRfYWRkX2NlbGwgbXBfZ3JpZF9nZXRfY2VsbCAnICtcbiAgICAgICdtcF9ncmlkX2FkZF9yZWN0YW5nbGUgbXBfZ3JpZF9hZGRfaW5zdGFuY2VzIG1wX2dyaWRfcGF0aCAnICtcbiAgICAgICdtcF9ncmlkX2RyYXcgbXBfZ3JpZF90b19kc19ncmlkIGNvbGxpc2lvbl9wb2ludCBjb2xsaXNpb25fcmVjdGFuZ2xlICcgK1xuICAgICAgJ2NvbGxpc2lvbl9jaXJjbGUgY29sbGlzaW9uX2VsbGlwc2UgY29sbGlzaW9uX2xpbmUgJyArXG4gICAgICAnY29sbGlzaW9uX3BvaW50X2xpc3QgY29sbGlzaW9uX3JlY3RhbmdsZV9saXN0IGNvbGxpc2lvbl9jaXJjbGVfbGlzdCAnICtcbiAgICAgICdjb2xsaXNpb25fZWxsaXBzZV9saXN0IGNvbGxpc2lvbl9saW5lX2xpc3QgaW5zdGFuY2VfcG9zaXRpb25fbGlzdCAnICtcbiAgICAgICdpbnN0YW5jZV9wbGFjZV9saXN0IHBvaW50X2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdwb2ludF9pbl90cmlhbmdsZSBwb2ludF9pbl9jaXJjbGUgcmVjdGFuZ2xlX2luX3JlY3RhbmdsZSAnICtcbiAgICAgICdyZWN0YW5nbGVfaW5fdHJpYW5nbGUgcmVjdGFuZ2xlX2luX2NpcmNsZSBpbnN0YW5jZV9maW5kICcgK1xuICAgICAgJ2luc3RhbmNlX2V4aXN0cyBpbnN0YW5jZV9udW1iZXIgaW5zdGFuY2VfcG9zaXRpb24gaW5zdGFuY2VfbmVhcmVzdCAnICtcbiAgICAgICdpbnN0YW5jZV9mdXJ0aGVzdCBpbnN0YW5jZV9wbGFjZSBpbnN0YW5jZV9jcmVhdGVfZGVwdGggJyArXG4gICAgICAnaW5zdGFuY2VfY3JlYXRlX2xheWVyIGluc3RhbmNlX2NvcHkgaW5zdGFuY2VfY2hhbmdlIGluc3RhbmNlX2Rlc3Ryb3kgJyArXG4gICAgICAncG9zaXRpb25fZGVzdHJveSBwb3NpdGlvbl9jaGFuZ2UgaW5zdGFuY2VfaWRfZ2V0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfYWxsIGluc3RhbmNlX2RlYWN0aXZhdGVfb2JqZWN0ICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfcmVnaW9uIGluc3RhbmNlX2FjdGl2YXRlX2FsbCAnICtcbiAgICAgICdpbnN0YW5jZV9hY3RpdmF0ZV9vYmplY3QgaW5zdGFuY2VfYWN0aXZhdGVfcmVnaW9uIHJvb21fZ290byAnICtcbiAgICAgICdyb29tX2dvdG9fcHJldmlvdXMgcm9vbV9nb3RvX25leHQgcm9vbV9wcmV2aW91cyByb29tX25leHQgJyArXG4gICAgICAncm9vbV9yZXN0YXJ0IGdhbWVfZW5kIGdhbWVfcmVzdGFydCBnYW1lX2xvYWQgZ2FtZV9zYXZlICcgK1xuICAgICAgJ2dhbWVfc2F2ZV9idWZmZXIgZ2FtZV9sb2FkX2J1ZmZlciBldmVudF9wZXJmb3JtIGV2ZW50X3VzZXIgJyArXG4gICAgICAnZXZlbnRfcGVyZm9ybV9vYmplY3QgZXZlbnRfaW5oZXJpdGVkIHNob3dfZGVidWdfbWVzc2FnZSAnICtcbiAgICAgICdzaG93X2RlYnVnX292ZXJsYXkgZGVidWdfZXZlbnQgZGVidWdfZ2V0X2NhbGxzdGFjayBhbGFybV9nZXQgJyArXG4gICAgICAnYWxhcm1fc2V0IGZvbnRfdGV4dHVyZV9wYWdlX3NpemUga2V5Ym9hcmRfc2V0X21hcCBrZXlib2FyZF9nZXRfbWFwICcgK1xuICAgICAgJ2tleWJvYXJkX3Vuc2V0X21hcCBrZXlib2FyZF9jaGVjayBrZXlib2FyZF9jaGVja19wcmVzc2VkICcgK1xuICAgICAgJ2tleWJvYXJkX2NoZWNrX3JlbGVhc2VkIGtleWJvYXJkX2NoZWNrX2RpcmVjdCBrZXlib2FyZF9nZXRfbnVtbG9jayAnICtcbiAgICAgICdrZXlib2FyZF9zZXRfbnVtbG9jayBrZXlib2FyZF9rZXlfcHJlc3Mga2V5Ym9hcmRfa2V5X3JlbGVhc2UgJyArXG4gICAgICAna2V5Ym9hcmRfY2xlYXIgaW9fY2xlYXIgbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ21vdXNlX2NoZWNrX2J1dHRvbl9wcmVzc2VkIG1vdXNlX2NoZWNrX2J1dHRvbl9yZWxlYXNlZCAnICtcbiAgICAgICdtb3VzZV93aGVlbF91cCBtb3VzZV93aGVlbF9kb3duIG1vdXNlX2NsZWFyIGRyYXdfc2VsZiBkcmF3X3Nwcml0ZSAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wb3MgZHJhd19zcHJpdGVfZXh0IGRyYXdfc3ByaXRlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9zdHJldGNoZWRfZXh0IGRyYXdfc3ByaXRlX3RpbGVkIGRyYXdfc3ByaXRlX3RpbGVkX2V4dCAnICtcbiAgICAgICdkcmF3X3Nwcml0ZV9wYXJ0IGRyYXdfc3ByaXRlX3BhcnRfZXh0IGRyYXdfc3ByaXRlX2dlbmVyYWwgZHJhd19jbGVhciAnICtcbiAgICAgICdkcmF3X2NsZWFyX2FscGhhIGRyYXdfcG9pbnQgZHJhd19saW5lIGRyYXdfbGluZV93aWR0aCBkcmF3X3JlY3RhbmdsZSAnICtcbiAgICAgICdkcmF3X3JvdW5kcmVjdCBkcmF3X3JvdW5kcmVjdF9leHQgZHJhd190cmlhbmdsZSBkcmF3X2NpcmNsZSAnICtcbiAgICAgICdkcmF3X2VsbGlwc2UgZHJhd19zZXRfY2lyY2xlX3ByZWNpc2lvbiBkcmF3X2Fycm93IGRyYXdfYnV0dG9uICcgK1xuICAgICAgJ2RyYXdfcGF0aCBkcmF3X2hlYWx0aGJhciBkcmF3X2dldHBpeGVsIGRyYXdfZ2V0cGl4ZWxfZXh0ICcgK1xuICAgICAgJ2RyYXdfc2V0X2NvbG91ciBkcmF3X3NldF9jb2xvciBkcmF3X3NldF9hbHBoYSBkcmF3X2dldF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19nZXRfY29sb3IgZHJhd19nZXRfYWxwaGEgbWVyZ2VfY29sb3VyIG1ha2VfY29sb3VyX3JnYiAnICtcbiAgICAgICdtYWtlX2NvbG91cl9oc3YgY29sb3VyX2dldF9yZWQgY29sb3VyX2dldF9ncmVlbiBjb2xvdXJfZ2V0X2JsdWUgJyArXG4gICAgICAnY29sb3VyX2dldF9odWUgY29sb3VyX2dldF9zYXR1cmF0aW9uIGNvbG91cl9nZXRfdmFsdWUgbWVyZ2VfY29sb3IgJyArXG4gICAgICAnbWFrZV9jb2xvcl9yZ2IgbWFrZV9jb2xvcl9oc3YgY29sb3JfZ2V0X3JlZCBjb2xvcl9nZXRfZ3JlZW4gJyArXG4gICAgICAnY29sb3JfZ2V0X2JsdWUgY29sb3JfZ2V0X2h1ZSBjb2xvcl9nZXRfc2F0dXJhdGlvbiBjb2xvcl9nZXRfdmFsdWUgJyArXG4gICAgICAnbWVyZ2VfY29sb3Igc2NyZWVuX3NhdmUgc2NyZWVuX3NhdmVfcGFydCBkcmF3X3NldF9mb250ICcgK1xuICAgICAgJ2RyYXdfc2V0X2hhbGlnbiBkcmF3X3NldF92YWxpZ24gZHJhd190ZXh0IGRyYXdfdGV4dF9leHQgc3RyaW5nX3dpZHRoICcgK1xuICAgICAgJ3N0cmluZ19oZWlnaHQgc3RyaW5nX3dpZHRoX2V4dCBzdHJpbmdfaGVpZ2h0X2V4dCAnICtcbiAgICAgICdkcmF3X3RleHRfdHJhbnNmb3JtZWQgZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZCBkcmF3X3RleHRfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfdGV4dF9leHRfY29sb3VyIGRyYXdfdGV4dF90cmFuc2Zvcm1lZF9jb2xvdXIgJyArXG4gICAgICAnZHJhd190ZXh0X2V4dF90cmFuc2Zvcm1lZF9jb2xvdXIgZHJhd190ZXh0X2NvbG9yIGRyYXdfdGV4dF9leHRfY29sb3IgJyArXG4gICAgICAnZHJhd190ZXh0X3RyYW5zZm9ybWVkX2NvbG9yIGRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3IgJyArXG4gICAgICAnZHJhd19wb2ludF9jb2xvdXIgZHJhd19saW5lX2NvbG91ciBkcmF3X2xpbmVfd2lkdGhfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfcmVjdGFuZ2xlX2NvbG91ciBkcmF3X3JvdW5kcmVjdF9jb2xvdXIgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3VyX2V4dCBkcmF3X3RyaWFuZ2xlX2NvbG91ciBkcmF3X2NpcmNsZV9jb2xvdXIgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG91ciBkcmF3X3BvaW50X2NvbG9yIGRyYXdfbGluZV9jb2xvciAnICtcbiAgICAgICdkcmF3X2xpbmVfd2lkdGhfY29sb3IgZHJhd19yZWN0YW5nbGVfY29sb3IgZHJhd19yb3VuZHJlY3RfY29sb3IgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3RfY29sb3JfZXh0IGRyYXdfdHJpYW5nbGVfY29sb3IgZHJhd19jaXJjbGVfY29sb3IgJyArXG4gICAgICAnZHJhd19lbGxpcHNlX2NvbG9yIGRyYXdfcHJpbWl0aXZlX2JlZ2luIGRyYXdfdmVydGV4ICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X2NvbG91ciBkcmF3X3ZlcnRleF9jb2xvciBkcmF3X3ByaW1pdGl2ZV9lbmQgJyArXG4gICAgICAnc3ByaXRlX2dldF91dnMgZm9udF9nZXRfdXZzIHNwcml0ZV9nZXRfdGV4dHVyZSBmb250X2dldF90ZXh0dXJlICcgK1xuICAgICAgJ3RleHR1cmVfZ2V0X3dpZHRoIHRleHR1cmVfZ2V0X2hlaWdodCB0ZXh0dXJlX2dldF91dnMgJyArXG4gICAgICAnZHJhd19wcmltaXRpdmVfYmVnaW5fdGV4dHVyZSBkcmF3X3ZlcnRleF90ZXh0dXJlICcgK1xuICAgICAgJ2RyYXdfdmVydGV4X3RleHR1cmVfY29sb3VyIGRyYXdfdmVydGV4X3RleHR1cmVfY29sb3IgJyArXG4gICAgICAndGV4dHVyZV9nbG9iYWxfc2NhbGUgc3VyZmFjZV9jcmVhdGUgc3VyZmFjZV9jcmVhdGVfZXh0ICcgK1xuICAgICAgJ3N1cmZhY2VfcmVzaXplIHN1cmZhY2VfZnJlZSBzdXJmYWNlX2V4aXN0cyBzdXJmYWNlX2dldF93aWR0aCAnICtcbiAgICAgICdzdXJmYWNlX2dldF9oZWlnaHQgc3VyZmFjZV9nZXRfdGV4dHVyZSBzdXJmYWNlX3NldF90YXJnZXQgJyArXG4gICAgICAnc3VyZmFjZV9zZXRfdGFyZ2V0X2V4dCBzdXJmYWNlX3Jlc2V0X3RhcmdldCBzdXJmYWNlX2RlcHRoX2Rpc2FibGUgJyArXG4gICAgICAnc3VyZmFjZV9nZXRfZGVwdGhfZGlzYWJsZSBkcmF3X3N1cmZhY2UgZHJhd19zdXJmYWNlX3N0cmV0Y2hlZCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2VfdGlsZWQgZHJhd19zdXJmYWNlX3BhcnQgZHJhd19zdXJmYWNlX2V4dCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2Vfc3RyZXRjaGVkX2V4dCBkcmF3X3N1cmZhY2VfdGlsZWRfZXh0ICcgK1xuICAgICAgJ2RyYXdfc3VyZmFjZV9wYXJ0X2V4dCBkcmF3X3N1cmZhY2VfZ2VuZXJhbCBzdXJmYWNlX2dldHBpeGVsICcgK1xuICAgICAgJ3N1cmZhY2VfZ2V0cGl4ZWxfZXh0IHN1cmZhY2Vfc2F2ZSBzdXJmYWNlX3NhdmVfcGFydCBzdXJmYWNlX2NvcHkgJyArXG4gICAgICAnc3VyZmFjZV9jb3B5X3BhcnQgYXBwbGljYXRpb25fc3VyZmFjZV9kcmF3X2VuYWJsZSAnICtcbiAgICAgICdhcHBsaWNhdGlvbl9nZXRfcG9zaXRpb24gYXBwbGljYXRpb25fc3VyZmFjZV9lbmFibGUgJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZV9pc19lbmFibGVkIGRpc3BsYXlfZ2V0X3dpZHRoIGRpc3BsYXlfZ2V0X2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X2dldF9vcmllbnRhdGlvbiBkaXNwbGF5X2dldF9ndWlfd2lkdGggZGlzcGxheV9nZXRfZ3VpX2hlaWdodCAnICtcbiAgICAgICdkaXNwbGF5X3Jlc2V0IGRpc3BsYXlfbW91c2VfZ2V0X3ggZGlzcGxheV9tb3VzZV9nZXRfeSAnICtcbiAgICAgICdkaXNwbGF5X21vdXNlX3NldCBkaXNwbGF5X3NldF91aV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3dpbmRvd19zZXRfZnVsbHNjcmVlbiB3aW5kb3dfZ2V0X2Z1bGxzY3JlZW4gJyArXG4gICAgICAnd2luZG93X3NldF9jYXB0aW9uIHdpbmRvd19zZXRfbWluX3dpZHRoIHdpbmRvd19zZXRfbWF4X3dpZHRoICcgK1xuICAgICAgJ3dpbmRvd19zZXRfbWluX2hlaWdodCB3aW5kb3dfc2V0X21heF9oZWlnaHQgd2luZG93X2dldF92aXNpYmxlX3JlY3RzICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY2FwdGlvbiB3aW5kb3dfc2V0X2N1cnNvciB3aW5kb3dfZ2V0X2N1cnNvciAnICtcbiAgICAgICd3aW5kb3dfc2V0X2NvbG91ciB3aW5kb3dfZ2V0X2NvbG91ciB3aW5kb3dfc2V0X2NvbG9yICcgK1xuICAgICAgJ3dpbmRvd19nZXRfY29sb3Igd2luZG93X3NldF9wb3NpdGlvbiB3aW5kb3dfc2V0X3NpemUgJyArXG4gICAgICAnd2luZG93X3NldF9yZWN0YW5nbGUgd2luZG93X2NlbnRlciB3aW5kb3dfZ2V0X3ggd2luZG93X2dldF95ICcgK1xuICAgICAgJ3dpbmRvd19nZXRfd2lkdGggd2luZG93X2dldF9oZWlnaHQgd2luZG93X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd19tb3VzZV9nZXRfeSB3aW5kb3dfbW91c2Vfc2V0IHdpbmRvd192aWV3X21vdXNlX2dldF94ICcgK1xuICAgICAgJ3dpbmRvd192aWV3X21vdXNlX2dldF95IHdpbmRvd192aWV3c19tb3VzZV9nZXRfeCAnICtcbiAgICAgICd3aW5kb3dfdmlld3NfbW91c2VfZ2V0X3kgYXVkaW9fbGlzdGVuZXJfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fbGlzdGVuZXJfdmVsb2NpdHkgYXVkaW9fbGlzdGVuZXJfb3JpZW50YXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9wb3NpdGlvbiBhdWRpb19lbWl0dGVyX2NyZWF0ZSBhdWRpb19lbWl0dGVyX2ZyZWUgJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9leGlzdHMgYXVkaW9fZW1pdHRlcl9waXRjaCBhdWRpb19lbWl0dGVyX3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZmFsbG9mZiBhdWRpb19lbWl0dGVyX2dhaW4gYXVkaW9fcGxheV9zb3VuZCAnICtcbiAgICAgICdhdWRpb19wbGF5X3NvdW5kX29uIGF1ZGlvX3BsYXlfc291bmRfYXQgYXVkaW9fc3RvcF9zb3VuZCAnICtcbiAgICAgICdhdWRpb19yZXN1bWVfbXVzaWMgYXVkaW9fbXVzaWNfaXNfcGxheWluZyBhdWRpb19yZXN1bWVfc291bmQgJyArXG4gICAgICAnYXVkaW9fcGF1c2Vfc291bmQgYXVkaW9fcGF1c2VfbXVzaWMgYXVkaW9fY2hhbm5lbF9udW0gJyArXG4gICAgICAnYXVkaW9fc291bmRfbGVuZ3RoIGF1ZGlvX2dldF90eXBlIGF1ZGlvX2ZhbGxvZmZfc2V0X21vZGVsICcgK1xuICAgICAgJ2F1ZGlvX3BsYXlfbXVzaWMgYXVkaW9fc3RvcF9tdXNpYyBhdWRpb19tYXN0ZXJfZ2FpbiBhdWRpb19tdXNpY19nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dhaW4gYXVkaW9fc291bmRfcGl0Y2ggYXVkaW9fc3RvcF9hbGwgYXVkaW9fcmVzdW1lX2FsbCAnICtcbiAgICAgICdhdWRpb19wYXVzZV9hbGwgYXVkaW9faXNfcGxheWluZyBhdWRpb19pc19wYXVzZWQgYXVkaW9fZXhpc3RzICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX3NldF90cmFja19wb3NpdGlvbiBhdWRpb19zb3VuZF9nZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9nZXRfZ2FpbiBhdWRpb19lbWl0dGVyX2dldF9waXRjaCBhdWRpb19lbWl0dGVyX2dldF94ICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZ2V0X3kgYXVkaW9fZW1pdHRlcl9nZXRfeiBhdWRpb19lbWl0dGVyX2dldF92eCAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX2dldF92eSBhdWRpb19lbWl0dGVyX2dldF92eiAnICtcbiAgICAgICdhdWRpb19saXN0ZW5lcl9zZXRfcG9zaXRpb24gYXVkaW9fbGlzdGVuZXJfc2V0X3ZlbG9jaXR5ICcgK1xuICAgICAgJ2F1ZGlvX2xpc3RlbmVyX3NldF9vcmllbnRhdGlvbiBhdWRpb19saXN0ZW5lcl9nZXRfZGF0YSAnICtcbiAgICAgICdhdWRpb19zZXRfbWFzdGVyX2dhaW4gYXVkaW9fZ2V0X21hc3Rlcl9nYWluIGF1ZGlvX3NvdW5kX2dldF9nYWluICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dldF9waXRjaCBhdWRpb19nZXRfbmFtZSBhdWRpb19zb3VuZF9zZXRfdHJhY2tfcG9zaXRpb24gJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X3RyYWNrX3Bvc2l0aW9uIGF1ZGlvX2NyZWF0ZV9zdHJlYW0gJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zdHJlYW0gYXVkaW9fY3JlYXRlX3N5bmNfZ3JvdXAgJyArXG4gICAgICAnYXVkaW9fZGVzdHJveV9zeW5jX2dyb3VwIGF1ZGlvX3BsYXlfaW5fc3luY19ncm91cCAnICtcbiAgICAgICdhdWRpb19zdGFydF9zeW5jX2dyb3VwIGF1ZGlvX3N0b3Bfc3luY19ncm91cCBhdWRpb19wYXVzZV9zeW5jX2dyb3VwICcgK1xuICAgICAgJ2F1ZGlvX3Jlc3VtZV9zeW5jX2dyb3VwIGF1ZGlvX3N5bmNfZ3JvdXBfZ2V0X3RyYWNrX3BvcyAnICtcbiAgICAgICdhdWRpb19zeW5jX2dyb3VwX2RlYnVnIGF1ZGlvX3N5bmNfZ3JvdXBfaXNfcGxheWluZyBhdWRpb19kZWJ1ZyAnICtcbiAgICAgICdhdWRpb19ncm91cF9sb2FkIGF1ZGlvX2dyb3VwX3VubG9hZCBhdWRpb19ncm91cF9pc19sb2FkZWQgJyArXG4gICAgICAnYXVkaW9fZ3JvdXBfbG9hZF9wcm9ncmVzcyBhdWRpb19ncm91cF9uYW1lIGF1ZGlvX2dyb3VwX3N0b3BfYWxsICcgK1xuICAgICAgJ2F1ZGlvX2dyb3VwX3NldF9nYWluIGF1ZGlvX2NyZWF0ZV9idWZmZXJfc291bmQgJyArXG4gICAgICAnYXVkaW9fZnJlZV9idWZmZXJfc291bmQgYXVkaW9fY3JlYXRlX3BsYXlfcXVldWUgJyArXG4gICAgICAnYXVkaW9fZnJlZV9wbGF5X3F1ZXVlIGF1ZGlvX3F1ZXVlX3NvdW5kIGF1ZGlvX2dldF9yZWNvcmRlcl9jb3VudCAnICtcbiAgICAgICdhdWRpb19nZXRfcmVjb3JkZXJfaW5mbyBhdWRpb19zdGFydF9yZWNvcmRpbmcgYXVkaW9fc3RvcF9yZWNvcmRpbmcgJyArXG4gICAgICAnYXVkaW9fc291bmRfZ2V0X2xpc3RlbmVyX21hc2sgYXVkaW9fZW1pdHRlcl9nZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19nZXRfbGlzdGVuZXJfbWFzayBhdWRpb19zb3VuZF9zZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX3NldF9saXN0ZW5lcl9tYXNrIGF1ZGlvX3NldF9saXN0ZW5lcl9tYXNrICcgK1xuICAgICAgJ2F1ZGlvX2dldF9saXN0ZW5lcl9jb3VudCBhdWRpb19nZXRfbGlzdGVuZXJfaW5mbyBhdWRpb19zeXN0ZW0gJyArXG4gICAgICAnc2hvd19tZXNzYWdlIHNob3dfbWVzc2FnZV9hc3luYyBjbGlja2FibGVfYWRkIGNsaWNrYWJsZV9hZGRfZXh0ICcgK1xuICAgICAgJ2NsaWNrYWJsZV9jaGFuZ2UgY2xpY2thYmxlX2NoYW5nZV9leHQgY2xpY2thYmxlX2RlbGV0ZSAnICtcbiAgICAgICdjbGlja2FibGVfZXhpc3RzIGNsaWNrYWJsZV9zZXRfc3R5bGUgc2hvd19xdWVzdGlvbiAnICtcbiAgICAgICdzaG93X3F1ZXN0aW9uX2FzeW5jIGdldF9pbnRlZ2VyIGdldF9zdHJpbmcgZ2V0X2ludGVnZXJfYXN5bmMgJyArXG4gICAgICAnZ2V0X3N0cmluZ19hc3luYyBnZXRfbG9naW5fYXN5bmMgZ2V0X29wZW5fZmlsZW5hbWUgZ2V0X3NhdmVfZmlsZW5hbWUgJyArXG4gICAgICAnZ2V0X29wZW5fZmlsZW5hbWVfZXh0IGdldF9zYXZlX2ZpbGVuYW1lX2V4dCBzaG93X2Vycm9yICcgK1xuICAgICAgJ2hpZ2hzY29yZV9jbGVhciBoaWdoc2NvcmVfYWRkIGhpZ2hzY29yZV92YWx1ZSBoaWdoc2NvcmVfbmFtZSAnICtcbiAgICAgICdkcmF3X2hpZ2hzY29yZSBzcHJpdGVfZXhpc3RzIHNwcml0ZV9nZXRfbmFtZSBzcHJpdGVfZ2V0X251bWJlciAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3dpZHRoIHNwcml0ZV9nZXRfaGVpZ2h0IHNwcml0ZV9nZXRfeG9mZnNldCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3lvZmZzZXQgc3ByaXRlX2dldF9iYm94X2xlZnQgc3ByaXRlX2dldF9iYm94X3JpZ2h0ICcgK1xuICAgICAgJ3Nwcml0ZV9nZXRfYmJveF90b3Agc3ByaXRlX2dldF9iYm94X2JvdHRvbSBzcHJpdGVfc2F2ZSAnICtcbiAgICAgICdzcHJpdGVfc2F2ZV9zdHJpcCBzcHJpdGVfc2V0X2NhY2hlX3NpemUgc3ByaXRlX3NldF9jYWNoZV9zaXplX2V4dCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X3RwZSBzcHJpdGVfcHJlZmV0Y2ggc3ByaXRlX3ByZWZldGNoX211bHRpIHNwcml0ZV9mbHVzaCAnICtcbiAgICAgICdzcHJpdGVfZmx1c2hfbXVsdGkgc3ByaXRlX3NldF9zcGVlZCBzcHJpdGVfZ2V0X3NwZWVkX3R5cGUgJyArXG4gICAgICAnc3ByaXRlX2dldF9zcGVlZCBmb250X2V4aXN0cyBmb250X2dldF9uYW1lIGZvbnRfZ2V0X2ZvbnRuYW1lICcgK1xuICAgICAgJ2ZvbnRfZ2V0X2JvbGQgZm9udF9nZXRfaXRhbGljIGZvbnRfZ2V0X2ZpcnN0IGZvbnRfZ2V0X2xhc3QgJyArXG4gICAgICAnZm9udF9nZXRfc2l6ZSBmb250X3NldF9jYWNoZV9zaXplIHBhdGhfZXhpc3RzIHBhdGhfZ2V0X25hbWUgJyArXG4gICAgICAncGF0aF9nZXRfbGVuZ3RoIHBhdGhfZ2V0X3RpbWUgcGF0aF9nZXRfa2luZCBwYXRoX2dldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9nZXRfcHJlY2lzaW9uIHBhdGhfZ2V0X251bWJlciBwYXRoX2dldF9wb2ludF94IHBhdGhfZ2V0X3BvaW50X3kgJyArXG4gICAgICAncGF0aF9nZXRfcG9pbnRfc3BlZWQgcGF0aF9nZXRfeCBwYXRoX2dldF95IHBhdGhfZ2V0X3NwZWVkICcgK1xuICAgICAgJ3NjcmlwdF9leGlzdHMgc2NyaXB0X2dldF9uYW1lIHRpbWVsaW5lX2FkZCB0aW1lbGluZV9kZWxldGUgJyArXG4gICAgICAndGltZWxpbmVfY2xlYXIgdGltZWxpbmVfZXhpc3RzIHRpbWVsaW5lX2dldF9uYW1lICcgK1xuICAgICAgJ3RpbWVsaW5lX21vbWVudF9jbGVhciB0aW1lbGluZV9tb21lbnRfYWRkX3NjcmlwdCB0aW1lbGluZV9zaXplICcgK1xuICAgICAgJ3RpbWVsaW5lX21heF9tb21lbnQgb2JqZWN0X2V4aXN0cyBvYmplY3RfZ2V0X25hbWUgb2JqZWN0X2dldF9zcHJpdGUgJyArXG4gICAgICAnb2JqZWN0X2dldF9zb2xpZCBvYmplY3RfZ2V0X3Zpc2libGUgb2JqZWN0X2dldF9wZXJzaXN0ZW50ICcgK1xuICAgICAgJ29iamVjdF9nZXRfbWFzayBvYmplY3RfZ2V0X3BhcmVudCBvYmplY3RfZ2V0X3BoeXNpY3MgJyArXG4gICAgICAnb2JqZWN0X2lzX2FuY2VzdG9yIHJvb21fZXhpc3RzIHJvb21fZ2V0X25hbWUgc3ByaXRlX3NldF9vZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX2R1cGxpY2F0ZSBzcHJpdGVfYXNzaWduIHNwcml0ZV9tZXJnZSBzcHJpdGVfYWRkICcgK1xuICAgICAgJ3Nwcml0ZV9yZXBsYWNlIHNwcml0ZV9jcmVhdGVfZnJvbV9zdXJmYWNlIHNwcml0ZV9hZGRfZnJvbV9zdXJmYWNlICcgK1xuICAgICAgJ3Nwcml0ZV9kZWxldGUgc3ByaXRlX3NldF9hbHBoYV9mcm9tX3Nwcml0ZSBzcHJpdGVfY29sbGlzaW9uX21hc2sgJyArXG4gICAgICAnZm9udF9hZGRfZW5hYmxlX2FhIGZvbnRfYWRkX2dldF9lbmFibGVfYWEgZm9udF9hZGQgZm9udF9hZGRfc3ByaXRlICcgK1xuICAgICAgJ2ZvbnRfYWRkX3Nwcml0ZV9leHQgZm9udF9yZXBsYWNlIGZvbnRfcmVwbGFjZV9zcHJpdGUgJyArXG4gICAgICAnZm9udF9yZXBsYWNlX3Nwcml0ZV9leHQgZm9udF9kZWxldGUgcGF0aF9zZXRfa2luZCBwYXRoX3NldF9jbG9zZWQgJyArXG4gICAgICAncGF0aF9zZXRfcHJlY2lzaW9uIHBhdGhfYWRkIHBhdGhfYXNzaWduIHBhdGhfZHVwbGljYXRlIHBhdGhfYXBwZW5kICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlIHBhdGhfYWRkX3BvaW50IHBhdGhfaW5zZXJ0X3BvaW50IHBhdGhfY2hhbmdlX3BvaW50ICcgK1xuICAgICAgJ3BhdGhfZGVsZXRlX3BvaW50IHBhdGhfY2xlYXJfcG9pbnRzIHBhdGhfcmV2ZXJzZSBwYXRoX21pcnJvciAnICtcbiAgICAgICdwYXRoX2ZsaXAgcGF0aF9yb3RhdGUgcGF0aF9yZXNjYWxlIHBhdGhfc2hpZnQgc2NyaXB0X2V4ZWN1dGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9zcHJpdGUgb2JqZWN0X3NldF9zb2xpZCBvYmplY3Rfc2V0X3Zpc2libGUgJyArXG4gICAgICAnb2JqZWN0X3NldF9wZXJzaXN0ZW50IG9iamVjdF9zZXRfbWFzayByb29tX3NldF93aWR0aCByb29tX3NldF9oZWlnaHQgJyArXG4gICAgICAncm9vbV9zZXRfcGVyc2lzdGVudCByb29tX3NldF9iYWNrZ3JvdW5kX2NvbG91ciAnICtcbiAgICAgICdyb29tX3NldF9iYWNrZ3JvdW5kX2NvbG9yIHJvb21fc2V0X3ZpZXcgcm9vbV9zZXRfdmlld3BvcnQgJyArXG4gICAgICAncm9vbV9nZXRfdmlld3BvcnQgcm9vbV9zZXRfdmlld19lbmFibGVkIHJvb21fYWRkIHJvb21fZHVwbGljYXRlICcgK1xuICAgICAgJ3Jvb21fYXNzaWduIHJvb21faW5zdGFuY2VfYWRkIHJvb21faW5zdGFuY2VfY2xlYXIgcm9vbV9nZXRfY2FtZXJhICcgK1xuICAgICAgJ3Jvb21fc2V0X2NhbWVyYSBhc3NldF9nZXRfaW5kZXggYXNzZXRfZ2V0X3R5cGUgJyArXG4gICAgICAnZmlsZV90ZXh0X29wZW5fZnJvbV9zdHJpbmcgZmlsZV90ZXh0X29wZW5fcmVhZCBmaWxlX3RleHRfb3Blbl93cml0ZSAnICtcbiAgICAgICdmaWxlX3RleHRfb3Blbl9hcHBlbmQgZmlsZV90ZXh0X2Nsb3NlIGZpbGVfdGV4dF93cml0ZV9zdHJpbmcgJyArXG4gICAgICAnZmlsZV90ZXh0X3dyaXRlX3JlYWwgZmlsZV90ZXh0X3dyaXRlbG4gZmlsZV90ZXh0X3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2ZpbGVfdGV4dF9yZWFkX3JlYWwgZmlsZV90ZXh0X3JlYWRsbiBmaWxlX3RleHRfZW9mIGZpbGVfdGV4dF9lb2xuICcgK1xuICAgICAgJ2ZpbGVfZXhpc3RzIGZpbGVfZGVsZXRlIGZpbGVfcmVuYW1lIGZpbGVfY29weSBkaXJlY3RvcnlfZXhpc3RzICcgK1xuICAgICAgJ2RpcmVjdG9yeV9jcmVhdGUgZGlyZWN0b3J5X2Rlc3Ryb3kgZmlsZV9maW5kX2ZpcnN0IGZpbGVfZmluZF9uZXh0ICcgK1xuICAgICAgJ2ZpbGVfZmluZF9jbG9zZSBmaWxlX2F0dHJpYnV0ZXMgZmlsZW5hbWVfbmFtZSBmaWxlbmFtZV9wYXRoICcgK1xuICAgICAgJ2ZpbGVuYW1lX2RpciBmaWxlbmFtZV9kcml2ZSBmaWxlbmFtZV9leHQgZmlsZW5hbWVfY2hhbmdlX2V4dCAnICtcbiAgICAgICdmaWxlX2Jpbl9vcGVuIGZpbGVfYmluX3Jld3JpdGUgZmlsZV9iaW5fY2xvc2UgZmlsZV9iaW5fcG9zaXRpb24gJyArXG4gICAgICAnZmlsZV9iaW5fc2l6ZSBmaWxlX2Jpbl9zZWVrIGZpbGVfYmluX3dyaXRlX2J5dGUgZmlsZV9iaW5fcmVhZF9ieXRlICcgK1xuICAgICAgJ3BhcmFtZXRlcl9jb3VudCBwYXJhbWV0ZXJfc3RyaW5nIGVudmlyb25tZW50X2dldF92YXJpYWJsZSAnICtcbiAgICAgICdpbmlfb3Blbl9mcm9tX3N0cmluZyBpbmlfb3BlbiBpbmlfY2xvc2UgaW5pX3JlYWRfc3RyaW5nICcgK1xuICAgICAgJ2luaV9yZWFkX3JlYWwgaW5pX3dyaXRlX3N0cmluZyBpbmlfd3JpdGVfcmVhbCBpbmlfa2V5X2V4aXN0cyAnICtcbiAgICAgICdpbmlfc2VjdGlvbl9leGlzdHMgaW5pX2tleV9kZWxldGUgaW5pX3NlY3Rpb25fZGVsZXRlICcgK1xuICAgICAgJ2RzX3NldF9wcmVjaXNpb24gZHNfZXhpc3RzIGRzX3N0YWNrX2NyZWF0ZSBkc19zdGFja19kZXN0cm95ICcgK1xuICAgICAgJ2RzX3N0YWNrX2NsZWFyIGRzX3N0YWNrX2NvcHkgZHNfc3RhY2tfc2l6ZSBkc19zdGFja19lbXB0eSAnICtcbiAgICAgICdkc19zdGFja19wdXNoIGRzX3N0YWNrX3BvcCBkc19zdGFja190b3AgZHNfc3RhY2tfd3JpdGUgZHNfc3RhY2tfcmVhZCAnICtcbiAgICAgICdkc19xdWV1ZV9jcmVhdGUgZHNfcXVldWVfZGVzdHJveSBkc19xdWV1ZV9jbGVhciBkc19xdWV1ZV9jb3B5ICcgK1xuICAgICAgJ2RzX3F1ZXVlX3NpemUgZHNfcXVldWVfZW1wdHkgZHNfcXVldWVfZW5xdWV1ZSBkc19xdWV1ZV9kZXF1ZXVlICcgK1xuICAgICAgJ2RzX3F1ZXVlX2hlYWQgZHNfcXVldWVfdGFpbCBkc19xdWV1ZV93cml0ZSBkc19xdWV1ZV9yZWFkICcgK1xuICAgICAgJ2RzX2xpc3RfY3JlYXRlIGRzX2xpc3RfZGVzdHJveSBkc19saXN0X2NsZWFyIGRzX2xpc3RfY29weSAnICtcbiAgICAgICdkc19saXN0X3NpemUgZHNfbGlzdF9lbXB0eSBkc19saXN0X2FkZCBkc19saXN0X2luc2VydCAnICtcbiAgICAgICdkc19saXN0X3JlcGxhY2UgZHNfbGlzdF9kZWxldGUgZHNfbGlzdF9maW5kX2luZGV4IGRzX2xpc3RfZmluZF92YWx1ZSAnICtcbiAgICAgICdkc19saXN0X21hcmtfYXNfbGlzdCBkc19saXN0X21hcmtfYXNfbWFwIGRzX2xpc3Rfc29ydCAnICtcbiAgICAgICdkc19saXN0X3NodWZmbGUgZHNfbGlzdF93cml0ZSBkc19saXN0X3JlYWQgZHNfbGlzdF9zZXQgZHNfbWFwX2NyZWF0ZSAnICtcbiAgICAgICdkc19tYXBfZGVzdHJveSBkc19tYXBfY2xlYXIgZHNfbWFwX2NvcHkgZHNfbWFwX3NpemUgZHNfbWFwX2VtcHR5ICcgK1xuICAgICAgJ2RzX21hcF9hZGQgZHNfbWFwX2FkZF9saXN0IGRzX21hcF9hZGRfbWFwIGRzX21hcF9yZXBsYWNlICcgK1xuICAgICAgJ2RzX21hcF9yZXBsYWNlX21hcCBkc19tYXBfcmVwbGFjZV9saXN0IGRzX21hcF9kZWxldGUgZHNfbWFwX2V4aXN0cyAnICtcbiAgICAgICdkc19tYXBfZmluZF92YWx1ZSBkc19tYXBfZmluZF9wcmV2aW91cyBkc19tYXBfZmluZF9uZXh0ICcgK1xuICAgICAgJ2RzX21hcF9maW5kX2ZpcnN0IGRzX21hcF9maW5kX2xhc3QgZHNfbWFwX3dyaXRlIGRzX21hcF9yZWFkICcgK1xuICAgICAgJ2RzX21hcF9zZWN1cmVfc2F2ZSBkc19tYXBfc2VjdXJlX2xvYWQgZHNfbWFwX3NlY3VyZV9sb2FkX2J1ZmZlciAnICtcbiAgICAgICdkc19tYXBfc2VjdXJlX3NhdmVfYnVmZmVyIGRzX21hcF9zZXQgZHNfcHJpb3JpdHlfY3JlYXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X2Rlc3Ryb3kgZHNfcHJpb3JpdHlfY2xlYXIgZHNfcHJpb3JpdHlfY29weSAnICtcbiAgICAgICdkc19wcmlvcml0eV9zaXplIGRzX3ByaW9yaXR5X2VtcHR5IGRzX3ByaW9yaXR5X2FkZCAnICtcbiAgICAgICdkc19wcmlvcml0eV9jaGFuZ2VfcHJpb3JpdHkgZHNfcHJpb3JpdHlfZmluZF9wcmlvcml0eSAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfdmFsdWUgZHNfcHJpb3JpdHlfZGVsZXRlX21pbiBkc19wcmlvcml0eV9maW5kX21pbiAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZWxldGVfbWF4IGRzX3ByaW9yaXR5X2ZpbmRfbWF4IGRzX3ByaW9yaXR5X3dyaXRlICcgK1xuICAgICAgJ2RzX3ByaW9yaXR5X3JlYWQgZHNfZ3JpZF9jcmVhdGUgZHNfZ3JpZF9kZXN0cm95IGRzX2dyaWRfY29weSAnICtcbiAgICAgICdkc19ncmlkX3Jlc2l6ZSBkc19ncmlkX3dpZHRoIGRzX2dyaWRfaGVpZ2h0IGRzX2dyaWRfY2xlYXIgJyArXG4gICAgICAnZHNfZ3JpZF9zZXQgZHNfZ3JpZF9hZGQgZHNfZ3JpZF9tdWx0aXBseSBkc19ncmlkX3NldF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfcmVnaW9uIGRzX2dyaWRfbXVsdGlwbHlfcmVnaW9uIGRzX2dyaWRfc2V0X2Rpc2sgJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZGlzayBkc19ncmlkX211bHRpcGx5X2Rpc2sgZHNfZ3JpZF9zZXRfZ3JpZF9yZWdpb24gJyArXG4gICAgICAnZHNfZ3JpZF9hZGRfZ3JpZF9yZWdpb24gZHNfZ3JpZF9tdWx0aXBseV9ncmlkX3JlZ2lvbiBkc19ncmlkX2dldCAnICtcbiAgICAgICdkc19ncmlkX2dldF9zdW0gZHNfZ3JpZF9nZXRfbWF4IGRzX2dyaWRfZ2V0X21pbiBkc19ncmlkX2dldF9tZWFuICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfc3VtIGRzX2dyaWRfZ2V0X2Rpc2tfbWluIGRzX2dyaWRfZ2V0X2Rpc2tfbWF4ICcgK1xuICAgICAgJ2RzX2dyaWRfZ2V0X2Rpc2tfbWVhbiBkc19ncmlkX3ZhbHVlX2V4aXN0cyBkc19ncmlkX3ZhbHVlX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV95IGRzX2dyaWRfdmFsdWVfZGlza19leGlzdHMgZHNfZ3JpZF92YWx1ZV9kaXNrX3ggJyArXG4gICAgICAnZHNfZ3JpZF92YWx1ZV9kaXNrX3kgZHNfZ3JpZF9zaHVmZmxlIGRzX2dyaWRfd3JpdGUgZHNfZ3JpZF9yZWFkICcgK1xuICAgICAgJ2RzX2dyaWRfc29ydCBkc19ncmlkX3NldCBkc19ncmlkX2dldCBlZmZlY3RfY3JlYXRlX2JlbG93ICcgK1xuICAgICAgJ2VmZmVjdF9jcmVhdGVfYWJvdmUgZWZmZWN0X2NsZWFyIHBhcnRfdHlwZV9jcmVhdGUgcGFydF90eXBlX2Rlc3Ryb3kgJyArXG4gICAgICAncGFydF90eXBlX2V4aXN0cyBwYXJ0X3R5cGVfY2xlYXIgcGFydF90eXBlX3NoYXBlIHBhcnRfdHlwZV9zcHJpdGUgJyArXG4gICAgICAncGFydF90eXBlX3NpemUgcGFydF90eXBlX3NjYWxlIHBhcnRfdHlwZV9vcmllbnRhdGlvbiBwYXJ0X3R5cGVfbGlmZSAnICtcbiAgICAgICdwYXJ0X3R5cGVfc3RlcCBwYXJ0X3R5cGVfZGVhdGggcGFydF90eXBlX3NwZWVkIHBhcnRfdHlwZV9kaXJlY3Rpb24gJyArXG4gICAgICAncGFydF90eXBlX2dyYXZpdHkgcGFydF90eXBlX2NvbG91cjEgcGFydF90eXBlX2NvbG91cjIgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cjMgcGFydF90eXBlX2NvbG91cl9taXggcGFydF90eXBlX2NvbG91cl9yZ2IgJyArXG4gICAgICAncGFydF90eXBlX2NvbG91cl9oc3YgcGFydF90eXBlX2NvbG9yMSBwYXJ0X3R5cGVfY29sb3IyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcjMgcGFydF90eXBlX2NvbG9yX21peCBwYXJ0X3R5cGVfY29sb3JfcmdiICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvcl9oc3YgcGFydF90eXBlX2FscGhhMSBwYXJ0X3R5cGVfYWxwaGEyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9hbHBoYTMgcGFydF90eXBlX2JsZW5kIHBhcnRfc3lzdGVtX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9jcmVhdGVfbGF5ZXIgcGFydF9zeXN0ZW1fZGVzdHJveSBwYXJ0X3N5c3RlbV9leGlzdHMgJyArXG4gICAgICAncGFydF9zeXN0ZW1fY2xlYXIgcGFydF9zeXN0ZW1fZHJhd19vcmRlciBwYXJ0X3N5c3RlbV9kZXB0aCAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9wb3NpdGlvbiBwYXJ0X3N5c3RlbV9hdXRvbWF0aWNfdXBkYXRlICcgK1xuICAgICAgJ3BhcnRfc3lzdGVtX2F1dG9tYXRpY19kcmF3IHBhcnRfc3lzdGVtX3VwZGF0ZSBwYXJ0X3N5c3RlbV9kcmF3aXQgJyArXG4gICAgICAncGFydF9zeXN0ZW1fZ2V0X2xheWVyIHBhcnRfc3lzdGVtX2xheWVyIHBhcnRfcGFydGljbGVzX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jcmVhdGVfY29sb3VyIHBhcnRfcGFydGljbGVzX2NyZWF0ZV9jb2xvciAnICtcbiAgICAgICdwYXJ0X3BhcnRpY2xlc19jbGVhciBwYXJ0X3BhcnRpY2xlc19jb3VudCBwYXJ0X2VtaXR0ZXJfY3JlYXRlICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9kZXN0cm95IHBhcnRfZW1pdHRlcl9kZXN0cm95X2FsbCBwYXJ0X2VtaXR0ZXJfZXhpc3RzICcgK1xuICAgICAgJ3BhcnRfZW1pdHRlcl9jbGVhciBwYXJ0X2VtaXR0ZXJfcmVnaW9uIHBhcnRfZW1pdHRlcl9idXJzdCAnICtcbiAgICAgICdwYXJ0X2VtaXR0ZXJfc3RyZWFtIGV4dGVybmFsX2NhbGwgZXh0ZXJuYWxfZGVmaW5lIGV4dGVybmFsX2ZyZWUgJyArXG4gICAgICAnd2luZG93X2hhbmRsZSB3aW5kb3dfZGV2aWNlIG1hdHJpeF9nZXQgbWF0cml4X3NldCAnICtcbiAgICAgICdtYXRyaXhfYnVpbGRfaWRlbnRpdHkgbWF0cml4X2J1aWxkIG1hdHJpeF9idWlsZF9sb29rYXQgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fb3J0aG8gbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmUgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmVfZm92IG1hdHJpeF9tdWx0aXBseSAnICtcbiAgICAgICdtYXRyaXhfdHJhbnNmb3JtX3ZlcnRleCBtYXRyaXhfc3RhY2tfcHVzaCBtYXRyaXhfc3RhY2tfcG9wICcgK1xuICAgICAgJ21hdHJpeF9zdGFja19tdWx0aXBseSBtYXRyaXhfc3RhY2tfc2V0IG1hdHJpeF9zdGFja19jbGVhciAnICtcbiAgICAgICdtYXRyaXhfc3RhY2tfdG9wIG1hdHJpeF9zdGFja19pc19lbXB0eSBicm93c2VyX2lucHV0X2NhcHR1cmUgJyArXG4gICAgICAnb3NfZ2V0X2NvbmZpZyBvc19nZXRfaW5mbyBvc19nZXRfbGFuZ3VhZ2Ugb3NfZ2V0X3JlZ2lvbiAnICtcbiAgICAgICdvc19sb2NrX29yaWVudGF0aW9uIGRpc3BsYXlfZ2V0X2RwaV94IGRpc3BsYXlfZ2V0X2RwaV95ICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X2d1aV9zaXplIGRpc3BsYXlfc2V0X2d1aV9tYXhpbWlzZSAnICtcbiAgICAgICdkaXNwbGF5X3NldF9ndWlfbWF4aW1pemUgZGV2aWNlX21vdXNlX2RiY2xpY2tfZW5hYmxlICcgK1xuICAgICAgJ2Rpc3BsYXlfc2V0X3RpbWluZ19tZXRob2QgZGlzcGxheV9nZXRfdGltaW5nX21ldGhvZCAnICtcbiAgICAgICdkaXNwbGF5X3NldF9zbGVlcF9tYXJnaW4gZGlzcGxheV9nZXRfc2xlZXBfbWFyZ2luIHZpcnR1YWxfa2V5X2FkZCAnICtcbiAgICAgICd2aXJ0dWFsX2tleV9oaWRlIHZpcnR1YWxfa2V5X2RlbGV0ZSB2aXJ0dWFsX2tleV9zaG93ICcgK1xuICAgICAgJ2RyYXdfZW5hYmxlX2RyYXdldmVudCBkcmF3X2VuYWJsZV9zd2ZfYWEgZHJhd19zZXRfc3dmX2FhX2xldmVsICcgK1xuICAgICAgJ2RyYXdfZ2V0X3N3Zl9hYV9sZXZlbCBkcmF3X3RleHR1cmVfZmx1c2ggZHJhd19mbHVzaCAnICtcbiAgICAgICdncHVfc2V0X2JsZW5kZW5hYmxlIGdwdV9zZXRfenRlc3RlbmFibGUgZ3B1X3NldF96ZnVuYyAnICtcbiAgICAgICdncHVfc2V0X3p3cml0ZWVuYWJsZSBncHVfc2V0X2xpZ2h0aW5nZW5hYmxlIGdwdV9zZXRfZm9nICcgK1xuICAgICAgJ2dwdV9zZXRfY3VsbG1vZGUgZ3B1X3NldF9ibGVuZG1vZGUgZ3B1X3NldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfc2V0X2NvbG9yd3JpdGVlbmFibGUgJyArXG4gICAgICAnZ3B1X3NldF9jb2xvdXJ3cml0ZWVuYWJsZSBncHVfc2V0X2FscGhhdGVzdGVuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X2FscGhhdGVzdHJlZiBncHVfc2V0X2FscGhhdGVzdGZ1bmMgZ3B1X3NldF90ZXhmaWx0ZXIgJyArXG4gICAgICAnZ3B1X3NldF90ZXhmaWx0ZXJfZXh0IGdwdV9zZXRfdGV4cmVwZWF0IGdwdV9zZXRfdGV4cmVwZWF0X2V4dCAnICtcbiAgICAgICdncHVfc2V0X3RleF9maWx0ZXIgZ3B1X3NldF90ZXhfZmlsdGVyX2V4dCBncHVfc2V0X3RleF9yZXBlYXQgJyArXG4gICAgICAnZ3B1X3NldF90ZXhfcmVwZWF0X2V4dCBncHVfc2V0X3RleF9taXBfZmlsdGVyICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9maWx0ZXJfZXh0IGdwdV9zZXRfdGV4X21pcF9iaWFzICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21pcF9iaWFzX2V4dCBncHVfc2V0X3RleF9taW5fbWlwIGdwdV9zZXRfdGV4X21pbl9taXBfZXh0ICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9taXAgZ3B1X3NldF90ZXhfbWF4X21pcF9leHQgZ3B1X3NldF90ZXhfbWF4X2FuaXNvICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X21heF9hbmlzb19leHQgZ3B1X3NldF90ZXhfbWlwX2VuYWJsZSAnICtcbiAgICAgICdncHVfc2V0X3RleF9taXBfZW5hYmxlX2V4dCBncHVfZ2V0X2JsZW5kZW5hYmxlIGdwdV9nZXRfenRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF96ZnVuYyBncHVfZ2V0X3p3cml0ZWVuYWJsZSBncHVfZ2V0X2xpZ2h0aW5nZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfZm9nIGdwdV9nZXRfY3VsbG1vZGUgZ3B1X2dldF9ibGVuZG1vZGUgZ3B1X2dldF9ibGVuZG1vZGVfZXh0ICcgK1xuICAgICAgJ2dwdV9nZXRfYmxlbmRtb2RlX2V4dF9zZXBhbHBoYSBncHVfZ2V0X2JsZW5kbW9kZV9zcmMgJyArXG4gICAgICAnZ3B1X2dldF9ibGVuZG1vZGVfZGVzdCBncHVfZ2V0X2JsZW5kbW9kZV9zcmNhbHBoYSAnICtcbiAgICAgICdncHVfZ2V0X2JsZW5kbW9kZV9kZXN0YWxwaGEgZ3B1X2dldF9jb2xvcndyaXRlZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfY29sb3Vyd3JpdGVlbmFibGUgZ3B1X2dldF9hbHBoYXRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF9hbHBoYXRlc3RyZWYgZ3B1X2dldF9hbHBoYXRlc3RmdW5jIGdwdV9nZXRfdGV4ZmlsdGVyICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4ZmlsdGVyX2V4dCBncHVfZ2V0X3RleHJlcGVhdCBncHVfZ2V0X3RleHJlcGVhdF9leHQgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfZmlsdGVyIGdwdV9nZXRfdGV4X2ZpbHRlcl9leHQgZ3B1X2dldF90ZXhfcmVwZWF0ICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4X3JlcGVhdF9leHQgZ3B1X2dldF90ZXhfbWlwX2ZpbHRlciAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfZmlsdGVyX2V4dCBncHVfZ2V0X3RleF9taXBfYmlhcyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9taXBfYmlhc19leHQgZ3B1X2dldF90ZXhfbWluX21pcCBncHVfZ2V0X3RleF9taW5fbWlwX2V4dCAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfbWlwIGdwdV9nZXRfdGV4X21heF9taXBfZXh0IGdwdV9nZXRfdGV4X21heF9hbmlzbyAnICtcbiAgICAgICdncHVfZ2V0X3RleF9tYXhfYW5pc29fZXh0IGdwdV9nZXRfdGV4X21pcF9lbmFibGUgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWlwX2VuYWJsZV9leHQgZ3B1X3B1c2hfc3RhdGUgZ3B1X3BvcF9zdGF0ZSAnICtcbiAgICAgICdncHVfZ2V0X3N0YXRlIGdwdV9zZXRfc3RhdGUgZHJhd19saWdodF9kZWZpbmVfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2RlZmluZV9kaXJlY3Rpb24gZHJhd19saWdodF9kZWZpbmVfcG9pbnQgJyArXG4gICAgICAnZHJhd19saWdodF9lbmFibGUgZHJhd19zZXRfbGlnaHRpbmcgZHJhd19saWdodF9nZXRfYW1iaWVudCAnICtcbiAgICAgICdkcmF3X2xpZ2h0X2dldCBkcmF3X2dldF9saWdodGluZyBzaG9wX2xlYXZlX3JhdGluZyB1cmxfZ2V0X2RvbWFpbiAnICtcbiAgICAgICd1cmxfb3BlbiB1cmxfb3Blbl9leHQgdXJsX29wZW5fZnVsbCBnZXRfdGltZXIgYWNoaWV2ZW1lbnRfbG9naW4gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbG9nb3V0IGFjaGlldmVtZW50X3Bvc3QgYWNoaWV2ZW1lbnRfaW5jcmVtZW50ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Bvc3Rfc2NvcmUgYWNoaWV2ZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnRzIGFjaGlldmVtZW50X3Nob3dfbGVhZGVyYm9hcmRzICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2xvYWRfZnJpZW5kcyBhY2hpZXZlbWVudF9sb2FkX2xlYWRlcmJvYXJkICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3NlbmRfY2hhbGxlbmdlIGFjaGlldmVtZW50X2xvYWRfcHJvZ3Jlc3MgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfcmVzZXQgYWNoaWV2ZW1lbnRfbG9naW5fc3RhdHVzIGFjaGlldmVtZW50X2dldF9waWMgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19jaGFsbGVuZ2Vfbm90aWZpY2F0aW9ucyBhY2hpZXZlbWVudF9nZXRfY2hhbGxlbmdlcyAnICtcbiAgICAgICdhY2hpZXZlbWVudF9ldmVudCBhY2hpZXZlbWVudF9zaG93IGFjaGlldmVtZW50X2dldF9pbmZvICcgK1xuICAgICAgJ2Nsb3VkX2ZpbGVfc2F2ZSBjbG91ZF9zdHJpbmdfc2F2ZSBjbG91ZF9zeW5jaHJvbmlzZSBhZHNfZW5hYmxlICcgK1xuICAgICAgJ2Fkc19kaXNhYmxlIGFkc19zZXR1cCBhZHNfZW5nYWdlbWVudF9sYXVuY2ggYWRzX2VuZ2FnZW1lbnRfYXZhaWxhYmxlICcgK1xuICAgICAgJ2Fkc19lbmdhZ2VtZW50X2FjdGl2ZSBhZHNfZXZlbnQgYWRzX2V2ZW50X3ByZWxvYWQgJyArXG4gICAgICAnYWRzX3NldF9yZXdhcmRfY2FsbGJhY2sgYWRzX2dldF9kaXNwbGF5X2hlaWdodCBhZHNfZ2V0X2Rpc3BsYXlfd2lkdGggJyArXG4gICAgICAnYWRzX21vdmUgYWRzX2ludGVyc3RpdGlhbF9hdmFpbGFibGUgYWRzX2ludGVyc3RpdGlhbF9kaXNwbGF5ICcgK1xuICAgICAgJ2RldmljZV9nZXRfdGlsdF94IGRldmljZV9nZXRfdGlsdF95IGRldmljZV9nZXRfdGlsdF96ICcgK1xuICAgICAgJ2RldmljZV9pc19rZXlwYWRfb3BlbiBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV9jaGVja19idXR0b25fcHJlc3NlZCBkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uX3JlbGVhc2VkICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV94IGRldmljZV9tb3VzZV95IGRldmljZV9tb3VzZV9yYXdfeCBkZXZpY2VfbW91c2VfcmF3X3kgJyArXG4gICAgICAnZGV2aWNlX21vdXNlX3hfdG9fZ3VpIGRldmljZV9tb3VzZV95X3RvX2d1aSBpYXBfYWN0aXZhdGUgaWFwX3N0YXR1cyAnICtcbiAgICAgICdpYXBfZW51bWVyYXRlX3Byb2R1Y3RzIGlhcF9yZXN0b3JlX2FsbCBpYXBfYWNxdWlyZSBpYXBfY29uc3VtZSAnICtcbiAgICAgICdpYXBfcHJvZHVjdF9kZXRhaWxzIGlhcF9wdXJjaGFzZV9kZXRhaWxzIGZhY2Vib29rX2luaXQgJyArXG4gICAgICAnZmFjZWJvb2tfbG9naW4gZmFjZWJvb2tfc3RhdHVzIGZhY2Vib29rX2dyYXBoX3JlcXVlc3QgJyArXG4gICAgICAnZmFjZWJvb2tfZGlhbG9nIGZhY2Vib29rX2xvZ291dCBmYWNlYm9va19sYXVuY2hfb2ZmZXJ3YWxsICcgK1xuICAgICAgJ2ZhY2Vib29rX3Bvc3RfbWVzc2FnZSBmYWNlYm9va19zZW5kX2ludml0ZSBmYWNlYm9va191c2VyX2lkICcgK1xuICAgICAgJ2ZhY2Vib29rX2FjY2Vzc3Rva2VuIGZhY2Vib29rX2NoZWNrX3Blcm1pc3Npb24gJyArXG4gICAgICAnZmFjZWJvb2tfcmVxdWVzdF9yZWFkX3Blcm1pc3Npb25zICcgK1xuICAgICAgJ2ZhY2Vib29rX3JlcXVlc3RfcHVibGlzaF9wZXJtaXNzaW9ucyBnYW1lcGFkX2lzX3N1cHBvcnRlZCAnICtcbiAgICAgICdnYW1lcGFkX2dldF9kZXZpY2VfY291bnQgZ2FtZXBhZF9pc19jb25uZWN0ZWQgJyArXG4gICAgICAnZ2FtZXBhZF9nZXRfZGVzY3JpcHRpb24gZ2FtZXBhZF9nZXRfYnV0dG9uX3RocmVzaG9sZCAnICtcbiAgICAgICdnYW1lcGFkX3NldF9idXR0b25fdGhyZXNob2xkIGdhbWVwYWRfZ2V0X2F4aXNfZGVhZHpvbmUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfYXhpc19kZWFkem9uZSBnYW1lcGFkX2J1dHRvbl9jb3VudCBnYW1lcGFkX2J1dHRvbl9jaGVjayAnICtcbiAgICAgICdnYW1lcGFkX2J1dHRvbl9jaGVja19wcmVzc2VkIGdhbWVwYWRfYnV0dG9uX2NoZWNrX3JlbGVhc2VkICcgK1xuICAgICAgJ2dhbWVwYWRfYnV0dG9uX3ZhbHVlIGdhbWVwYWRfYXhpc19jb3VudCBnYW1lcGFkX2F4aXNfdmFsdWUgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfdmlicmF0aW9uIGdhbWVwYWRfc2V0X2NvbG91ciBnYW1lcGFkX3NldF9jb2xvciAnICtcbiAgICAgICdvc19pc19wYXVzZWQgd2luZG93X2hhc19mb2N1cyBjb2RlX2lzX2NvbXBpbGVkIGh0dHBfZ2V0ICcgK1xuICAgICAgJ2h0dHBfZ2V0X2ZpbGUgaHR0cF9wb3N0X3N0cmluZyBodHRwX3JlcXVlc3QganNvbl9lbmNvZGUganNvbl9kZWNvZGUgJyArXG4gICAgICAnemlwX3VuemlwIGxvYWRfY3N2IGJhc2U2NF9lbmNvZGUgYmFzZTY0X2RlY29kZSBtZDVfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnbWQ1X3N0cmluZ191dGY4IG1kNV9maWxlIG9zX2lzX25ldHdvcmtfY29ubmVjdGVkIHNoYTFfc3RyaW5nX3VuaWNvZGUgJyArXG4gICAgICAnc2hhMV9zdHJpbmdfdXRmOCBzaGExX2ZpbGUgb3NfcG93ZXJzYXZlX2VuYWJsZSBhbmFseXRpY3NfZXZlbnQgJyArXG4gICAgICAnYW5hbHl0aWNzX2V2ZW50X2V4dCB3aW44X2xpdmV0aWxlX3RpbGVfbm90aWZpY2F0aW9uICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfdGlsZV9jbGVhciB3aW44X2xpdmV0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX2JhZGdlX2NsZWFyIHdpbjhfbGl2ZXRpbGVfcXVldWVfZW5hYmxlICcgK1xuICAgICAgJ3dpbjhfc2Vjb25kYXJ5dGlsZV9waW4gd2luOF9zZWNvbmRhcnl0aWxlX2JhZGdlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X3NlY29uZGFyeXRpbGVfZGVsZXRlIHdpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2JlZ2luICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3NlY29uZGFyeV9iZWdpbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9leHBpcnkgd2luOF9saXZldGlsZV9ub3RpZmljYXRpb25fdGFnICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3RleHRfYWRkICcgK1xuICAgICAgJ3dpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2ltYWdlX2FkZCB3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9lbmQgJyArXG4gICAgICAnd2luOF9hcHBiYXJfZW5hYmxlIHdpbjhfYXBwYmFyX2FkZF9lbGVtZW50ICcgK1xuICAgICAgJ3dpbjhfYXBwYmFyX3JlbW92ZV9lbGVtZW50IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfZW50cnkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2FkZF9odG1sX2VudHJ5IHdpbjhfc2V0dGluZ3NjaGFybV9hZGRfeGFtbF9lbnRyeSAnICtcbiAgICAgICd3aW44X3NldHRpbmdzY2hhcm1fc2V0X3hhbWxfcHJvcGVydHkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX2dldF94YW1sX3Byb3BlcnR5IHdpbjhfc2V0dGluZ3NjaGFybV9yZW1vdmVfZW50cnkgJyArXG4gICAgICAnd2luOF9zaGFyZV9pbWFnZSB3aW44X3NoYXJlX3NjcmVlbnNob3Qgd2luOF9zaGFyZV9maWxlICcgK1xuICAgICAgJ3dpbjhfc2hhcmVfdXJsIHdpbjhfc2hhcmVfdGV4dCB3aW44X3NlYXJjaF9lbmFibGUgJyArXG4gICAgICAnd2luOF9zZWFyY2hfZGlzYWJsZSB3aW44X3NlYXJjaF9hZGRfc3VnZ2VzdGlvbnMgJyArXG4gICAgICAnd2luOF9kZXZpY2VfdG91Y2hzY3JlZW5fYXZhaWxhYmxlIHdpbjhfbGljZW5zZV9pbml0aWFsaXplX3NhbmRib3ggJyArXG4gICAgICAnd2luOF9saWNlbnNlX3RyaWFsX3ZlcnNpb24gd2lucGhvbmVfbGljZW5zZV90cmlhbF92ZXJzaW9uICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfdGl0bGUgd2lucGhvbmVfdGlsZV9jb3VudCB3aW5waG9uZV90aWxlX2JhY2tfdGl0bGUgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnQgd2lucGhvbmVfdGlsZV9iYWNrX2NvbnRlbnRfd2lkZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2Zyb250X2ltYWdlIHdpbnBob25lX3RpbGVfZnJvbnRfaW1hZ2Vfc21hbGwgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9mcm9udF9pbWFnZV93aWRlIHdpbnBob25lX3RpbGVfYmFja19pbWFnZSAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2JhY2tfaW1hZ2Vfd2lkZSB3aW5waG9uZV90aWxlX2JhY2tncm91bmRfY29sb3VyICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfYmFja2dyb3VuZF9jb2xvciB3aW5waG9uZV90aWxlX2ljb25faW1hZ2UgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9zbWFsbF9pY29uX2ltYWdlIHdpbnBob25lX3RpbGVfd2lkZV9jb250ZW50ICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfY3ljbGVfaW1hZ2VzIHdpbnBob25lX3RpbGVfc21hbGxfYmFja2dyb3VuZF9pbWFnZSAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2NyZWF0ZSBwaHlzaWNzX3dvcmxkX2dyYXZpdHkgJyArXG4gICAgICAncGh5c2ljc193b3JsZF91cGRhdGVfc3BlZWQgcGh5c2ljc193b3JsZF91cGRhdGVfaXRlcmF0aW9ucyAnICtcbiAgICAgICdwaHlzaWNzX3dvcmxkX2RyYXdfZGVidWcgcGh5c2ljc19wYXVzZV9lbmFibGUgcGh5c2ljc19maXh0dXJlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2tpbmVtYXRpYyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2RlbnNpdHkgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9hd2FrZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X3Jlc3RpdHV0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfZnJpY3Rpb24gcGh5c2ljc19maXh0dXJlX3NldF9jb2xsaXNpb25fZ3JvdXAgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9zZW5zb3IgcGh5c2ljc19maXh0dXJlX3NldF9saW5lYXJfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2FuZ3VsYXJfZGFtcGluZyBwaHlzaWNzX2ZpeHR1cmVfc2V0X2NpcmNsZV9zaGFwZSAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2JveF9zaGFwZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X2VkZ2Vfc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9wb2x5Z29uX3NoYXBlIHBoeXNpY3NfZml4dHVyZV9zZXRfY2hhaW5fc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX2FkZF9wb2ludCBwaHlzaWNzX2ZpeHR1cmVfYmluZCAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfYmluZF9leHQgcGh5c2ljc19maXh0dXJlX2RlbGV0ZSBwaHlzaWNzX2FwcGx5X2ZvcmNlICcgK1xuICAgICAgJ3BoeXNpY3NfYXBwbHlfaW1wdWxzZSBwaHlzaWNzX2FwcGx5X2FuZ3VsYXJfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X2xvY2FsX2ZvcmNlIHBoeXNpY3NfYXBwbHlfbG9jYWxfaW1wdWxzZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X3RvcnF1ZSBwaHlzaWNzX21hc3NfcHJvcGVydGllcyBwaHlzaWNzX2RyYXdfZGVidWcgJyArXG4gICAgICAncGh5c2ljc190ZXN0X292ZXJsYXAgcGh5c2ljc19yZW1vdmVfZml4dHVyZSBwaHlzaWNzX3NldF9mcmljdGlvbiAnICtcbiAgICAgICdwaHlzaWNzX3NldF9kZW5zaXR5IHBoeXNpY3Nfc2V0X3Jlc3RpdHV0aW9uIHBoeXNpY3NfZ2V0X2ZyaWN0aW9uICcgK1xuICAgICAgJ3BoeXNpY3NfZ2V0X2RlbnNpdHkgcGh5c2ljc19nZXRfcmVzdGl0dXRpb24gJyArXG4gICAgICAncGh5c2ljc19qb2ludF9kaXN0YW5jZV9jcmVhdGUgcGh5c2ljc19qb2ludF9yb3BlX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X3Jldm9sdXRlX2NyZWF0ZSBwaHlzaWNzX2pvaW50X3ByaXNtYXRpY19jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9wdWxsZXlfY3JlYXRlIHBoeXNpY3Nfam9pbnRfd2hlZWxfY3JlYXRlICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfd2VsZF9jcmVhdGUgcGh5c2ljc19qb2ludF9mcmljdGlvbl9jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9nZWFyX2NyZWF0ZSBwaHlzaWNzX2pvaW50X2VuYWJsZV9tb3RvciAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X2dldF92YWx1ZSBwaHlzaWNzX2pvaW50X3NldF92YWx1ZSBwaHlzaWNzX2pvaW50X2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2NyZWF0ZSBwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZV9yZWdpb25fY2lyY2xlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9ib3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9kZWxldGVfcmVnaW9uX3BvbHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9zZXRfY2F0ZWdvcnlfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9kcmF3ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZHJhd19leHQgcGh5c2ljc19wYXJ0aWNsZV9jb3VudCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dldF9kYXRhIHBoeXNpY3NfcGFydGljbGVfZ2V0X2RhdGFfcGFydGljbGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9iZWdpbiBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2NpcmNsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2JveCBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX3BvbHlnb24gJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9hZGRfcG9pbnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9lbmQgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9qb2luIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZGVsZXRlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfZGF0YSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9tYXNzIHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2luZXJ0aWEgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3ggJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3kgcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nX3ZlbCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF94IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3kgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfYW5nbGUgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZ3JvdXBfZmxhZ3MgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3JvdXBfZmxhZ3MgcGh5c2ljc19wYXJ0aWNsZV9nZXRfbWF4X2NvdW50ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X3JhZGl1cyBwaHlzaWNzX3BhcnRpY2xlX2dldF9kZW5zaXR5ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X2RhbXBpbmcgcGh5c2ljc19wYXJ0aWNsZV9nZXRfZ3Jhdml0eV9zY2FsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9tYXhfY291bnQgcGh5c2ljc19wYXJ0aWNsZV9zZXRfcmFkaXVzICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfc2V0X2RlbnNpdHkgcGh5c2ljc19wYXJ0aWNsZV9zZXRfZGFtcGluZyAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9ncmF2aXR5X3NjYWxlIG5ldHdvcmtfY3JlYXRlX3NvY2tldCAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zb2NrZXRfZXh0IG5ldHdvcmtfY3JlYXRlX3NlcnZlciAnICtcbiAgICAgICduZXR3b3JrX2NyZWF0ZV9zZXJ2ZXJfcmF3IG5ldHdvcmtfY29ubmVjdCBuZXR3b3JrX2Nvbm5lY3RfcmF3ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF9wYWNrZXQgbmV0d29ya19zZW5kX3JhdyBuZXR3b3JrX3NlbmRfYnJvYWRjYXN0ICcgK1xuICAgICAgJ25ldHdvcmtfc2VuZF91ZHAgbmV0d29ya19zZW5kX3VkcF9yYXcgbmV0d29ya19zZXRfdGltZW91dCAnICtcbiAgICAgICduZXR3b3JrX3NldF9jb25maWcgbmV0d29ya19yZXNvbHZlIG5ldHdvcmtfZGVzdHJveSBidWZmZXJfY3JlYXRlICcgK1xuICAgICAgJ2J1ZmZlcl93cml0ZSBidWZmZXJfcmVhZCBidWZmZXJfc2VlayBidWZmZXJfZ2V0X3N1cmZhY2UgJyArXG4gICAgICAnYnVmZmVyX3NldF9zdXJmYWNlIGJ1ZmZlcl9kZWxldGUgYnVmZmVyX2V4aXN0cyBidWZmZXJfZ2V0X3R5cGUgJyArXG4gICAgICAnYnVmZmVyX2dldF9hbGlnbm1lbnQgYnVmZmVyX3Bva2UgYnVmZmVyX3BlZWsgYnVmZmVyX3NhdmUgJyArXG4gICAgICAnYnVmZmVyX3NhdmVfZXh0IGJ1ZmZlcl9sb2FkIGJ1ZmZlcl9sb2FkX2V4dCBidWZmZXJfbG9hZF9wYXJ0aWFsICcgK1xuICAgICAgJ2J1ZmZlcl9jb3B5IGJ1ZmZlcl9maWxsIGJ1ZmZlcl9nZXRfc2l6ZSBidWZmZXJfdGVsbCBidWZmZXJfcmVzaXplICcgK1xuICAgICAgJ2J1ZmZlcl9tZDUgYnVmZmVyX3NoYTEgYnVmZmVyX2Jhc2U2NF9lbmNvZGUgYnVmZmVyX2Jhc2U2NF9kZWNvZGUgJyArXG4gICAgICAnYnVmZmVyX2Jhc2U2NF9kZWNvZGVfZXh0IGJ1ZmZlcl9zaXplb2YgYnVmZmVyX2dldF9hZGRyZXNzICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyICcgK1xuICAgICAgJ2J1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyX2V4dCBidWZmZXJfY29weV9mcm9tX3ZlcnRleF9idWZmZXIgJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2JlZ2luIGJ1ZmZlcl9hc3luY19ncm91cF9vcHRpb24gJyArXG4gICAgICAnYnVmZmVyX2FzeW5jX2dyb3VwX2VuZCBidWZmZXJfbG9hZF9hc3luYyBidWZmZXJfc2F2ZV9hc3luYyAnICtcbiAgICAgICdnbWxfcmVsZWFzZV9tb2RlIGdtbF9wcmFnbWEgc3RlYW1fYWN0aXZhdGVfb3ZlcmxheSAnICtcbiAgICAgICdzdGVhbV9pc19vdmVybGF5X2VuYWJsZWQgc3RlYW1faXNfb3ZlcmxheV9hY3RpdmF0ZWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3BlcnNvbmFfbmFtZSBzdGVhbV9pbml0aWFsaXNlZCAnICtcbiAgICAgICdzdGVhbV9pc19jbG91ZF9lbmFibGVkX2Zvcl9hcHAgc3RlYW1faXNfY2xvdWRfZW5hYmxlZF9mb3JfYWNjb3VudCAnICtcbiAgICAgICdzdGVhbV9maWxlX3BlcnNpc3RlZCBzdGVhbV9nZXRfcXVvdGFfdG90YWwgc3RlYW1fZ2V0X3F1b3RhX2ZyZWUgJyArXG4gICAgICAnc3RlYW1fZmlsZV93cml0ZSBzdGVhbV9maWxlX3dyaXRlX2ZpbGUgc3RlYW1fZmlsZV9yZWFkICcgK1xuICAgICAgJ3N0ZWFtX2ZpbGVfZGVsZXRlIHN0ZWFtX2ZpbGVfZXhpc3RzIHN0ZWFtX2ZpbGVfc2l6ZSBzdGVhbV9maWxlX3NoYXJlICcgK1xuICAgICAgJ3N0ZWFtX2lzX3NjcmVlbnNob3RfcmVxdWVzdGVkIHN0ZWFtX3NlbmRfc2NyZWVuc2hvdCAnICtcbiAgICAgICdzdGVhbV9pc191c2VyX2xvZ2dlZF9vbiBzdGVhbV9nZXRfdXNlcl9zdGVhbV9pZCBzdGVhbV91c2VyX293bnNfZGxjICcgK1xuICAgICAgJ3N0ZWFtX3VzZXJfaW5zdGFsbGVkX2RsYyBzdGVhbV9zZXRfYWNoaWV2ZW1lbnQgc3RlYW1fZ2V0X2FjaGlldmVtZW50ICcgK1xuICAgICAgJ3N0ZWFtX2NsZWFyX2FjaGlldmVtZW50IHN0ZWFtX3NldF9zdGF0X2ludCBzdGVhbV9zZXRfc3RhdF9mbG9hdCAnICtcbiAgICAgICdzdGVhbV9zZXRfc3RhdF9hdmdfcmF0ZSBzdGVhbV9nZXRfc3RhdF9pbnQgc3RlYW1fZ2V0X3N0YXRfZmxvYXQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3N0YXRfYXZnX3JhdGUgc3RlYW1fcmVzZXRfYWxsX3N0YXRzICcgK1xuICAgICAgJ3N0ZWFtX3Jlc2V0X2FsbF9zdGF0c19hY2hpZXZlbWVudHMgc3RlYW1fc3RhdHNfcmVhZHkgJyArXG4gICAgICAnc3RlYW1fY3JlYXRlX2xlYWRlcmJvYXJkIHN0ZWFtX3VwbG9hZF9zY29yZSBzdGVhbV91cGxvYWRfc2NvcmVfZXh0ICcgK1xuICAgICAgJ3N0ZWFtX2Rvd25sb2FkX3Njb3Jlc19hcm91bmRfdXNlciBzdGVhbV9kb3dubG9hZF9zY29yZXMgJyArXG4gICAgICAnc3RlYW1fZG93bmxvYWRfZnJpZW5kc19zY29yZXMgc3RlYW1fdXBsb2FkX3Njb3JlX2J1ZmZlciAnICtcbiAgICAgICdzdGVhbV91cGxvYWRfc2NvcmVfYnVmZmVyX2V4dCBzdGVhbV9jdXJyZW50X2dhbWVfbGFuZ3VhZ2UgJyArXG4gICAgICAnc3RlYW1fYXZhaWxhYmxlX2xhbmd1YWdlcyBzdGVhbV9hY3RpdmF0ZV9vdmVybGF5X2Jyb3dzZXIgJyArXG4gICAgICAnc3RlYW1fYWN0aXZhdGVfb3ZlcmxheV91c2VyIHN0ZWFtX2FjdGl2YXRlX292ZXJsYXlfc3RvcmUgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfcGVyc29uYV9uYW1lIHN0ZWFtX2dldF9hcHBfaWQgJyArXG4gICAgICAnc3RlYW1fZ2V0X3VzZXJfYWNjb3VudF9pZCBzdGVhbV91Z2NfZG93bmxvYWQgc3RlYW1fdWdjX2NyZWF0ZV9pdGVtICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zdGFydF9pdGVtX3VwZGF0ZSBzdGVhbV91Z2Nfc2V0X2l0ZW1fdGl0bGUgJyArXG4gICAgICAnc3RlYW1fdWdjX3NldF9pdGVtX2Rlc2NyaXB0aW9uIHN0ZWFtX3VnY19zZXRfaXRlbV92aXNpYmlsaXR5ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV90YWdzIHN0ZWFtX3VnY19zZXRfaXRlbV9jb250ZW50ICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV9wcmV2aWV3IHN0ZWFtX3VnY19zdWJtaXRfaXRlbV91cGRhdGUgJyArXG4gICAgICAnc3RlYW1fdWdjX2dldF9pdGVtX3VwZGF0ZV9wcm9ncmVzcyBzdGVhbV91Z2Nfc3Vic2NyaWJlX2l0ZW0gJyArXG4gICAgICAnc3RlYW1fdWdjX3Vuc3Vic2NyaWJlX2l0ZW0gc3RlYW1fdWdjX251bV9zdWJzY3JpYmVkX2l0ZW1zICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfc3Vic2NyaWJlZF9pdGVtcyBzdGVhbV91Z2NfZ2V0X2l0ZW1faW5zdGFsbF9pbmZvICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfaXRlbV91cGRhdGVfaW5mbyBzdGVhbV91Z2NfcmVxdWVzdF9pdGVtX2RldGFpbHMgJyArXG4gICAgICAnc3RlYW1fdWdjX2NyZWF0ZV9xdWVyeV91c2VyIHN0ZWFtX3VnY19jcmVhdGVfcXVlcnlfdXNlcl9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbCBzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X2FsbF9leCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2Nsb3VkX2ZpbGVuYW1lX2ZpbHRlciAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X21hdGNoX2FueV90YWcgc3RlYW1fdWdjX3F1ZXJ5X3NldF9zZWFyY2hfdGV4dCAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X3JhbmtlZF9ieV90cmVuZF9kYXlzICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9hZGRfcmVxdWlyZWRfdGFnIHN0ZWFtX3VnY19xdWVyeV9hZGRfZXhjbHVkZWRfdGFnICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9zZXRfcmV0dXJuX2xvbmdfZGVzY3JpcHRpb24gJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9yZXR1cm5fdG90YWxfb25seSAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X2FsbG93X2NhY2hlZF9yZXNwb25zZSBzdGVhbV91Z2Nfc2VuZF9xdWVyeSAnICtcbiAgICAgICdzaGFkZXJfc2V0IHNoYWRlcl9nZXRfbmFtZSBzaGFkZXJfcmVzZXQgc2hhZGVyX2N1cnJlbnQgJyArXG4gICAgICAnc2hhZGVyX2lzX2NvbXBpbGVkIHNoYWRlcl9nZXRfc2FtcGxlcl9pbmRleCBzaGFkZXJfZ2V0X3VuaWZvcm0gJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2kgc2hhZGVyX3NldF91bmlmb3JtX2lfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX2YgJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX2ZfYXJyYXkgc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeCAnICtcbiAgICAgICdzaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4X2FycmF5IHNoYWRlcl9lbmFibGVfY29ybmVyX2lkICcgK1xuICAgICAgJ3RleHR1cmVfc2V0X3N0YWdlIHRleHR1cmVfZ2V0X3RleGVsX3dpZHRoIHRleHR1cmVfZ2V0X3RleGVsX2hlaWdodCAnICtcbiAgICAgICdzaGFkZXJzX2FyZV9zdXBwb3J0ZWQgdmVydGV4X2Zvcm1hdF9iZWdpbiB2ZXJ0ZXhfZm9ybWF0X2VuZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2RlbGV0ZSB2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbiAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvbl8zZCB2ZXJ0ZXhfZm9ybWF0X2FkZF9jb2xvdXIgJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9hZGRfY29sb3IgdmVydGV4X2Zvcm1hdF9hZGRfbm9ybWFsICcgK1xuICAgICAgJ3ZlcnRleF9mb3JtYXRfYWRkX3RleGNvb3JkIHZlcnRleF9mb3JtYXRfYWRkX3RleHRjb29yZCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF9jdXN0b20gdmVydGV4X2NyZWF0ZV9idWZmZXIgJyArXG4gICAgICAndmVydGV4X2NyZWF0ZV9idWZmZXJfZXh0IHZlcnRleF9kZWxldGVfYnVmZmVyIHZlcnRleF9iZWdpbiAnICtcbiAgICAgICd2ZXJ0ZXhfZW5kIHZlcnRleF9wb3NpdGlvbiB2ZXJ0ZXhfcG9zaXRpb25fM2QgdmVydGV4X2NvbG91ciAnICtcbiAgICAgICd2ZXJ0ZXhfY29sb3IgdmVydGV4X2FyZ2IgdmVydGV4X3RleGNvb3JkIHZlcnRleF9ub3JtYWwgdmVydGV4X2Zsb2F0MSAnICtcbiAgICAgICd2ZXJ0ZXhfZmxvYXQyIHZlcnRleF9mbG9hdDMgdmVydGV4X2Zsb2F0NCB2ZXJ0ZXhfdWJ5dGU0ICcgK1xuICAgICAgJ3ZlcnRleF9zdWJtaXQgdmVydGV4X2ZyZWV6ZSB2ZXJ0ZXhfZ2V0X251bWJlciB2ZXJ0ZXhfZ2V0X2J1ZmZlcl9zaXplICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyX2V4dCBwdXNoX2xvY2FsX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICdwdXNoX2dldF9maXJzdF9sb2NhbF9ub3RpZmljYXRpb24gcHVzaF9nZXRfbmV4dF9sb2NhbF9ub3RpZmljYXRpb24gJyArXG4gICAgICAncHVzaF9jYW5jZWxfbG9jYWxfbm90aWZpY2F0aW9uIHNrZWxldG9uX2FuaW1hdGlvbl9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2dldCBza2VsZXRvbl9hbmltYXRpb25fbWl4ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9zZXRfZXh0IHNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZXh0ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZHVyYXRpb24gc2tlbGV0b25fYW5pbWF0aW9uX2dldF9mcmFtZXMgJyArXG4gICAgICAnc2tlbGV0b25fYW5pbWF0aW9uX2NsZWFyIHNrZWxldG9uX3NraW5fc2V0IHNrZWxldG9uX3NraW5fZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfc2V0IHNrZWxldG9uX2F0dGFjaG1lbnRfZ2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2F0dGFjaG1lbnRfY3JlYXRlIHNrZWxldG9uX2NvbGxpc2lvbl9kcmF3X3NldCAnICtcbiAgICAgICdza2VsZXRvbl9ib25lX2RhdGFfZ2V0IHNrZWxldG9uX2JvbmVfZGF0YV9zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYm9uZV9zdGF0ZV9nZXQgc2tlbGV0b25fYm9uZV9zdGF0ZV9zZXQgc2tlbGV0b25fZ2V0X21pbm1heCAnICtcbiAgICAgICdza2VsZXRvbl9nZXRfbnVtX2JvdW5kcyBza2VsZXRvbl9nZXRfYm91bmRzICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWUgc2tlbGV0b25fYW5pbWF0aW9uX3NldF9mcmFtZSAnICtcbiAgICAgICdkcmF3X3NrZWxldG9uIGRyYXdfc2tlbGV0b25fdGltZSBkcmF3X3NrZWxldG9uX2luc3RhbmNlICcgK1xuICAgICAgJ2RyYXdfc2tlbGV0b25fY29sbGlzaW9uIHNrZWxldG9uX2FuaW1hdGlvbl9saXN0IHNrZWxldG9uX3NraW5fbGlzdCAnICtcbiAgICAgICdza2VsZXRvbl9zbG90X2RhdGEgbGF5ZXJfZ2V0X2lkIGxheWVyX2dldF9pZF9hdF9kZXB0aCAnICtcbiAgICAgICdsYXllcl9nZXRfZGVwdGggbGF5ZXJfY3JlYXRlIGxheWVyX2Rlc3Ryb3kgbGF5ZXJfZGVzdHJveV9pbnN0YW5jZXMgJyArXG4gICAgICAnbGF5ZXJfYWRkX2luc3RhbmNlIGxheWVyX2hhc19pbnN0YW5jZSBsYXllcl9zZXRfdmlzaWJsZSAnICtcbiAgICAgICdsYXllcl9nZXRfdmlzaWJsZSBsYXllcl9leGlzdHMgbGF5ZXJfeCBsYXllcl95IGxheWVyX2dldF94ICcgK1xuICAgICAgJ2xheWVyX2dldF95IGxheWVyX2hzcGVlZCBsYXllcl92c3BlZWQgbGF5ZXJfZ2V0X2hzcGVlZCAnICtcbiAgICAgICdsYXllcl9nZXRfdnNwZWVkIGxheWVyX3NjcmlwdF9iZWdpbiBsYXllcl9zY3JpcHRfZW5kIGxheWVyX3NoYWRlciAnICtcbiAgICAgICdsYXllcl9nZXRfc2NyaXB0X2JlZ2luIGxheWVyX2dldF9zY3JpcHRfZW5kIGxheWVyX2dldF9zaGFkZXIgJyArXG4gICAgICAnbGF5ZXJfc2V0X3RhcmdldF9yb29tIGxheWVyX2dldF90YXJnZXRfcm9vbSBsYXllcl9yZXNldF90YXJnZXRfcm9vbSAnICtcbiAgICAgICdsYXllcl9nZXRfYWxsIGxheWVyX2dldF9hbGxfZWxlbWVudHMgbGF5ZXJfZ2V0X25hbWUgbGF5ZXJfZGVwdGggJyArXG4gICAgICAnbGF5ZXJfZ2V0X2VsZW1lbnRfbGF5ZXIgbGF5ZXJfZ2V0X2VsZW1lbnRfdHlwZSBsYXllcl9lbGVtZW50X21vdmUgJyArXG4gICAgICAnbGF5ZXJfZm9yY2VfZHJhd19kZXB0aCBsYXllcl9pc19kcmF3X2RlcHRoX2ZvcmNlZCAnICtcbiAgICAgICdsYXllcl9nZXRfZm9yY2VkX2RlcHRoIGxheWVyX2JhY2tncm91bmRfZ2V0X2lkICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZXhpc3RzIGxheWVyX2JhY2tncm91bmRfY3JlYXRlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZGVzdHJveSBsYXllcl9iYWNrZ3JvdW5kX3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9jaGFuZ2UgbGF5ZXJfYmFja2dyb3VuZF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9odGlsZWQgbGF5ZXJfYmFja2dyb3VuZF92dGlsZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfeHNjYWxlIGxheWVyX2JhY2tncm91bmRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9hbHBoYSBsYXllcl9iYWNrZ3JvdW5kX2luZGV4IGxheWVyX2JhY2tncm91bmRfc3BlZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfdmlzaWJsZSBsYXllcl9iYWNrZ3JvdW5kX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfaHRpbGVkIGxheWVyX2JhY2tncm91bmRfZ2V0X3Z0aWxlZCAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF9zdHJldGNoIGxheWVyX2JhY2tncm91bmRfZ2V0X3lzY2FsZSAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2dldF94c2NhbGUgbGF5ZXJfYmFja2dyb3VuZF9nZXRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfYWxwaGEgbGF5ZXJfYmFja2dyb3VuZF9nZXRfaW5kZXggJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF9pZCBsYXllcl9zcHJpdGVfZXhpc3RzICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9jcmVhdGUgbGF5ZXJfc3ByaXRlX2Rlc3Ryb3kgbGF5ZXJfc3ByaXRlX2NoYW5nZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfaW5kZXggbGF5ZXJfc3ByaXRlX3NwZWVkIGxheWVyX3Nwcml0ZV94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX3lzY2FsZSBsYXllcl9zcHJpdGVfYW5nbGUgbGF5ZXJfc3ByaXRlX2JsZW5kICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9hbHBoYSBsYXllcl9zcHJpdGVfeCBsYXllcl9zcHJpdGVfeSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X3Nwcml0ZSBsYXllcl9zcHJpdGVfZ2V0X2luZGV4ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfc3BlZWQgbGF5ZXJfc3ByaXRlX2dldF94c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2dldF95c2NhbGUgbGF5ZXJfc3ByaXRlX2dldF9hbmdsZSAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X2JsZW5kIGxheWVyX3Nwcml0ZV9nZXRfYWxwaGEgbGF5ZXJfc3ByaXRlX2dldF94ICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfeSBsYXllcl90aWxlbWFwX2dldF9pZCBsYXllcl90aWxlbWFwX2V4aXN0cyAnICtcbiAgICAgICdsYXllcl90aWxlbWFwX2NyZWF0ZSBsYXllcl90aWxlbWFwX2Rlc3Ryb3kgdGlsZW1hcF90aWxlc2V0IHRpbGVtYXBfeCAnICtcbiAgICAgICd0aWxlbWFwX3kgdGlsZW1hcF9zZXQgdGlsZW1hcF9zZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfdGlsZXNldCAnICtcbiAgICAgICd0aWxlbWFwX2dldF90aWxlX3dpZHRoIHRpbGVtYXBfZ2V0X3RpbGVfaGVpZ2h0IHRpbGVtYXBfZ2V0X3dpZHRoICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2hlaWdodCB0aWxlbWFwX2dldF94IHRpbGVtYXBfZ2V0X3kgdGlsZW1hcF9nZXQgJyArXG4gICAgICAndGlsZW1hcF9nZXRfYXRfcGl4ZWwgdGlsZW1hcF9nZXRfY2VsbF94X2F0X3BpeGVsICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2NlbGxfeV9hdF9waXhlbCB0aWxlbWFwX2NsZWFyIGRyYXdfdGlsZW1hcCBkcmF3X3RpbGUgJyArXG4gICAgICAndGlsZW1hcF9zZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9nZXRfZ2xvYmFsX21hc2sgdGlsZW1hcF9zZXRfbWFzayAnICtcbiAgICAgICd0aWxlbWFwX2dldF9tYXNrIHRpbGVtYXBfZ2V0X2ZyYW1lIHRpbGVfc2V0X2VtcHR5IHRpbGVfc2V0X2luZGV4ICcgK1xuICAgICAgJ3RpbGVfc2V0X2ZsaXAgdGlsZV9zZXRfbWlycm9yIHRpbGVfc2V0X3JvdGF0ZSB0aWxlX2dldF9lbXB0eSAnICtcbiAgICAgICd0aWxlX2dldF9pbmRleCB0aWxlX2dldF9mbGlwIHRpbGVfZ2V0X21pcnJvciB0aWxlX2dldF9yb3RhdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9leGlzdHMgbGF5ZXJfdGlsZV9jcmVhdGUgbGF5ZXJfdGlsZV9kZXN0cm95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfY2hhbmdlIGxheWVyX3RpbGVfeHNjYWxlIGxheWVyX3RpbGVfeXNjYWxlICcgK1xuICAgICAgJ2xheWVyX3RpbGVfYmxlbmQgbGF5ZXJfdGlsZV9hbHBoYSBsYXllcl90aWxlX3ggbGF5ZXJfdGlsZV95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfcmVnaW9uIGxheWVyX3RpbGVfdmlzaWJsZSBsYXllcl90aWxlX2dldF9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfeHNjYWxlIGxheWVyX3RpbGVfZ2V0X3lzY2FsZSBsYXllcl90aWxlX2dldF9ibGVuZCAnICtcbiAgICAgICdsYXllcl90aWxlX2dldF9hbHBoYSBsYXllcl90aWxlX2dldF94IGxheWVyX3RpbGVfZ2V0X3kgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfcmVnaW9uIGxheWVyX3RpbGVfZ2V0X3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfaW5zdGFuY2VfZ2V0X2luc3RhbmNlIGluc3RhbmNlX2FjdGl2YXRlX2xheWVyICcgK1xuICAgICAgJ2luc3RhbmNlX2RlYWN0aXZhdGVfbGF5ZXIgY2FtZXJhX2NyZWF0ZSBjYW1lcmFfY3JlYXRlX3ZpZXcgJyArXG4gICAgICAnY2FtZXJhX2Rlc3Ryb3kgY2FtZXJhX2FwcGx5IGNhbWVyYV9nZXRfYWN0aXZlIGNhbWVyYV9nZXRfZGVmYXVsdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2RlZmF1bHQgY2FtZXJhX3NldF92aWV3X21hdCBjYW1lcmFfc2V0X3Byb2pfbWF0ICcgK1xuICAgICAgJ2NhbWVyYV9zZXRfdXBkYXRlX3NjcmlwdCBjYW1lcmFfc2V0X2JlZ2luX3NjcmlwdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X2VuZF9zY3JpcHQgY2FtZXJhX3NldF92aWV3X3BvcyBjYW1lcmFfc2V0X3ZpZXdfc2l6ZSAnICtcbiAgICAgICdjYW1lcmFfc2V0X3ZpZXdfc3BlZWQgY2FtZXJhX3NldF92aWV3X2JvcmRlciBjYW1lcmFfc2V0X3ZpZXdfYW5nbGUgJyArXG4gICAgICAnY2FtZXJhX3NldF92aWV3X3RhcmdldCBjYW1lcmFfZ2V0X3ZpZXdfbWF0IGNhbWVyYV9nZXRfcHJval9tYXQgJyArXG4gICAgICAnY2FtZXJhX2dldF91cGRhdGVfc2NyaXB0IGNhbWVyYV9nZXRfYmVnaW5fc2NyaXB0ICcgK1xuICAgICAgJ2NhbWVyYV9nZXRfZW5kX3NjcmlwdCBjYW1lcmFfZ2V0X3ZpZXdfeCBjYW1lcmFfZ2V0X3ZpZXdfeSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfd2lkdGggY2FtZXJhX2dldF92aWV3X2hlaWdodCBjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeCAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeSBjYW1lcmFfZ2V0X3ZpZXdfYm9yZGVyX3ggJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X2JvcmRlcl95IGNhbWVyYV9nZXRfdmlld19hbmdsZSAnICtcbiAgICAgICdjYW1lcmFfZ2V0X3ZpZXdfdGFyZ2V0IHZpZXdfZ2V0X2NhbWVyYSB2aWV3X2dldF92aXNpYmxlICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3hwb3J0IHZpZXdfZ2V0X3lwb3J0IHZpZXdfZ2V0X3dwb3J0IHZpZXdfZ2V0X2hwb3J0ICcgK1xuICAgICAgJ3ZpZXdfZ2V0X3N1cmZhY2VfaWQgdmlld19zZXRfY2FtZXJhIHZpZXdfc2V0X3Zpc2libGUgdmlld19zZXRfeHBvcnQgJyArXG4gICAgICAndmlld19zZXRfeXBvcnQgdmlld19zZXRfd3BvcnQgdmlld19zZXRfaHBvcnQgdmlld19zZXRfc3VyZmFjZV9pZCAnICtcbiAgICAgICdnZXN0dXJlX2RyYWdfdGltZSBnZXN0dXJlX2RyYWdfZGlzdGFuY2UgZ2VzdHVyZV9mbGlja19zcGVlZCAnICtcbiAgICAgICdnZXN0dXJlX2RvdWJsZV90YXBfdGltZSBnZXN0dXJlX2RvdWJsZV90YXBfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9kaXN0YW5jZSBnZXN0dXJlX3BpbmNoX2FuZ2xlX3Rvd2FyZHMgJyArXG4gICAgICAnZ2VzdHVyZV9waW5jaF9hbmdsZV9hd2F5IGdlc3R1cmVfcm90YXRlX3RpbWUgZ2VzdHVyZV9yb3RhdGVfYW5nbGUgJyArXG4gICAgICAnZ2VzdHVyZV90YXBfY291bnQgZ2VzdHVyZV9nZXRfZHJhZ190aW1lIGdlc3R1cmVfZ2V0X2RyYWdfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfZmxpY2tfc3BlZWQgZ2VzdHVyZV9nZXRfZG91YmxlX3RhcF90aW1lICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X2RvdWJsZV90YXBfZGlzdGFuY2UgZ2VzdHVyZV9nZXRfcGluY2hfZGlzdGFuY2UgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfcGluY2hfYW5nbGVfdG93YXJkcyBnZXN0dXJlX2dldF9waW5jaF9hbmdsZV9hd2F5ICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X3JvdGF0ZV90aW1lIGdlc3R1cmVfZ2V0X3JvdGF0ZV9hbmdsZSAnICtcbiAgICAgICdnZXN0dXJlX2dldF90YXBfY291bnQga2V5Ym9hcmRfdmlydHVhbF9zaG93IGtleWJvYXJkX3ZpcnR1YWxfaGlkZSAnICtcbiAgICAgICdrZXlib2FyZF92aXJ0dWFsX3N0YXR1cyBrZXlib2FyZF92aXJ0dWFsX2hlaWdodCcsXG4gICAgbGl0ZXJhbDogJ3NlbGYgb3RoZXIgYWxsIG5vb25lIGdsb2JhbCBsb2NhbCB1bmRlZmluZWQgcG9pbnRlcl9pbnZhbGlkICcgK1xuICAgICAgJ3BvaW50ZXJfbnVsbCBwYXRoX2FjdGlvbl9zdG9wIHBhdGhfYWN0aW9uX3Jlc3RhcnQgJyArXG4gICAgICAncGF0aF9hY3Rpb25fY29udGludWUgcGF0aF9hY3Rpb25fcmV2ZXJzZSB0cnVlIGZhbHNlIHBpIEdNX2J1aWxkX2RhdGUgJyArXG4gICAgICAnR01fdmVyc2lvbiBHTV9ydW50aW1lX3ZlcnNpb24gIHRpbWV6b25lX2xvY2FsIHRpbWV6b25lX3V0YyAnICtcbiAgICAgICdnYW1lc3BlZWRfZnBzIGdhbWVzcGVlZF9taWNyb3NlY29uZHMgIGV2X2NyZWF0ZSBldl9kZXN0cm95IGV2X3N0ZXAgJyArXG4gICAgICAnZXZfYWxhcm0gZXZfa2V5Ym9hcmQgZXZfbW91c2UgZXZfY29sbGlzaW9uIGV2X290aGVyIGV2X2RyYXcgJyArXG4gICAgICAnZXZfZHJhd19iZWdpbiBldl9kcmF3X2VuZCBldl9kcmF3X3ByZSBldl9kcmF3X3Bvc3QgZXZfa2V5cHJlc3MgJyArXG4gICAgICAnZXZfa2V5cmVsZWFzZSBldl90cmlnZ2VyIGV2X2xlZnRfYnV0dG9uIGV2X3JpZ2h0X2J1dHRvbiAnICtcbiAgICAgICdldl9taWRkbGVfYnV0dG9uIGV2X25vX2J1dHRvbiBldl9sZWZ0X3ByZXNzIGV2X3JpZ2h0X3ByZXNzICcgK1xuICAgICAgJ2V2X21pZGRsZV9wcmVzcyBldl9sZWZ0X3JlbGVhc2UgZXZfcmlnaHRfcmVsZWFzZSBldl9taWRkbGVfcmVsZWFzZSAnICtcbiAgICAgICdldl9tb3VzZV9lbnRlciBldl9tb3VzZV9sZWF2ZSBldl9tb3VzZV93aGVlbF91cCBldl9tb3VzZV93aGVlbF9kb3duICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X2J1dHRvbiBldl9nbG9iYWxfcmlnaHRfYnV0dG9uIGV2X2dsb2JhbF9taWRkbGVfYnV0dG9uICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3ByZXNzIGV2X2dsb2JhbF9yaWdodF9wcmVzcyBldl9nbG9iYWxfbWlkZGxlX3ByZXNzICcgK1xuICAgICAgJ2V2X2dsb2JhbF9sZWZ0X3JlbGVhc2UgZXZfZ2xvYmFsX3JpZ2h0X3JlbGVhc2UgJyArXG4gICAgICAnZXZfZ2xvYmFsX21pZGRsZV9yZWxlYXNlIGV2X2pveXN0aWNrMV9sZWZ0IGV2X2pveXN0aWNrMV9yaWdodCAnICtcbiAgICAgICdldl9qb3lzdGljazFfdXAgZXZfam95c3RpY2sxX2Rvd24gZXZfam95c3RpY2sxX2J1dHRvbjEgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjIgZXZfam95c3RpY2sxX2J1dHRvbjMgZXZfam95c3RpY2sxX2J1dHRvbjQgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjUgZXZfam95c3RpY2sxX2J1dHRvbjYgZXZfam95c3RpY2sxX2J1dHRvbjcgJyArXG4gICAgICAnZXZfam95c3RpY2sxX2J1dHRvbjggZXZfam95c3RpY2syX2xlZnQgZXZfam95c3RpY2syX3JpZ2h0ICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMl91cCBldl9qb3lzdGljazJfZG93biBldl9qb3lzdGljazJfYnV0dG9uMSAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uMiBldl9qb3lzdGljazJfYnV0dG9uMyBldl9qb3lzdGljazJfYnV0dG9uNCAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uNSBldl9qb3lzdGljazJfYnV0dG9uNiBldl9qb3lzdGljazJfYnV0dG9uNyAnICtcbiAgICAgICdldl9qb3lzdGljazJfYnV0dG9uOCBldl9vdXRzaWRlIGV2X2JvdW5kYXJ5IGV2X2dhbWVfc3RhcnQgJyArXG4gICAgICAnZXZfZ2FtZV9lbmQgZXZfcm9vbV9zdGFydCBldl9yb29tX2VuZCBldl9ub19tb3JlX2xpdmVzICcgK1xuICAgICAgJ2V2X2FuaW1hdGlvbl9lbmQgZXZfZW5kX29mX3BhdGggZXZfbm9fbW9yZV9oZWFsdGggZXZfY2xvc2VfYnV0dG9uICcgK1xuICAgICAgJ2V2X3VzZXIwIGV2X3VzZXIxIGV2X3VzZXIyIGV2X3VzZXIzIGV2X3VzZXI0IGV2X3VzZXI1IGV2X3VzZXI2ICcgK1xuICAgICAgJ2V2X3VzZXI3IGV2X3VzZXI4IGV2X3VzZXI5IGV2X3VzZXIxMCBldl91c2VyMTEgZXZfdXNlcjEyIGV2X3VzZXIxMyAnICtcbiAgICAgICdldl91c2VyMTQgZXZfdXNlcjE1IGV2X3N0ZXBfbm9ybWFsIGV2X3N0ZXBfYmVnaW4gZXZfc3RlcF9lbmQgZXZfZ3VpICcgK1xuICAgICAgJ2V2X2d1aV9iZWdpbiBldl9ndWlfZW5kIGV2X2NsZWFudXAgZXZfZ2VzdHVyZSBldl9nZXN0dXJlX3RhcCAnICtcbiAgICAgICdldl9nZXN0dXJlX2RvdWJsZV90YXAgZXZfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dlc3R1cmVfZHJhZ2dpbmcgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9kcmFnX2VuZCBldl9nZXN0dXJlX2ZsaWNrIGV2X2dlc3R1cmVfcGluY2hfc3RhcnQgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9waW5jaF9pbiBldl9nZXN0dXJlX3BpbmNoX291dCBldl9nZXN0dXJlX3BpbmNoX2VuZCAnICtcbiAgICAgICdldl9nZXN0dXJlX3JvdGF0ZV9zdGFydCBldl9nZXN0dXJlX3JvdGF0aW5nIGV2X2dlc3R1cmVfcm90YXRlX2VuZCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV90YXAgZXZfZ2xvYmFsX2dlc3R1cmVfZG91YmxlX3RhcCAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9kcmFnX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX2RyYWdnaW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX2RyYWdfZW5kIGV2X2dsb2JhbF9nZXN0dXJlX2ZsaWNrICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX2luICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3BpbmNoX291dCBldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9lbmQgJyArXG4gICAgICAnZXZfZ2xvYmFsX2dlc3R1cmVfcm90YXRlX3N0YXJ0IGV2X2dsb2JhbF9nZXN0dXJlX3JvdGF0aW5nICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3JvdGF0ZV9lbmQgdmtfbm9rZXkgdmtfYW55a2V5IHZrX2VudGVyIHZrX3JldHVybiAnICtcbiAgICAgICd2a19zaGlmdCB2a19jb250cm9sIHZrX2FsdCB2a19lc2NhcGUgdmtfc3BhY2UgdmtfYmFja3NwYWNlIHZrX3RhYiAnICtcbiAgICAgICd2a19wYXVzZSB2a19wcmludHNjcmVlbiB2a19sZWZ0IHZrX3JpZ2h0IHZrX3VwIHZrX2Rvd24gdmtfaG9tZSAnICtcbiAgICAgICd2a19lbmQgdmtfZGVsZXRlIHZrX2luc2VydCB2a19wYWdldXAgdmtfcGFnZWRvd24gdmtfZjEgdmtfZjIgdmtfZjMgJyArXG4gICAgICAndmtfZjQgdmtfZjUgdmtfZjYgdmtfZjcgdmtfZjggdmtfZjkgdmtfZjEwIHZrX2YxMSB2a19mMTIgdmtfbnVtcGFkMCAnICtcbiAgICAgICd2a19udW1wYWQxIHZrX251bXBhZDIgdmtfbnVtcGFkMyB2a19udW1wYWQ0IHZrX251bXBhZDUgdmtfbnVtcGFkNiAnICtcbiAgICAgICd2a19udW1wYWQ3IHZrX251bXBhZDggdmtfbnVtcGFkOSB2a19kaXZpZGUgdmtfbXVsdGlwbHkgdmtfc3VidHJhY3QgJyArXG4gICAgICAndmtfYWRkIHZrX2RlY2ltYWwgdmtfbHNoaWZ0IHZrX2xjb250cm9sIHZrX2xhbHQgdmtfcnNoaWZ0ICcgK1xuICAgICAgJ3ZrX3Jjb250cm9sIHZrX3JhbHQgIG1iX2FueSBtYl9ub25lIG1iX2xlZnQgbWJfcmlnaHQgbWJfbWlkZGxlICcgK1xuICAgICAgJ2NfYXF1YSBjX2JsYWNrIGNfYmx1ZSBjX2RrZ3JheSBjX2Z1Y2hzaWEgY19ncmF5IGNfZ3JlZW4gY19saW1lICcgK1xuICAgICAgJ2NfbHRncmF5IGNfbWFyb29uIGNfbmF2eSBjX29saXZlIGNfcHVycGxlIGNfcmVkIGNfc2lsdmVyIGNfdGVhbCAnICtcbiAgICAgICdjX3doaXRlIGNfeWVsbG93IGNfb3JhbmdlIGZhX2xlZnQgZmFfY2VudGVyIGZhX3JpZ2h0IGZhX3RvcCAnICtcbiAgICAgICdmYV9taWRkbGUgZmFfYm90dG9tIHByX3BvaW50bGlzdCBwcl9saW5lbGlzdCBwcl9saW5lc3RyaXAgJyArXG4gICAgICAncHJfdHJpYW5nbGVsaXN0IHByX3RyaWFuZ2xlc3RyaXAgcHJfdHJpYW5nbGVmYW4gYm1fY29tcGxleCBibV9ub3JtYWwgJyArXG4gICAgICAnYm1fYWRkIGJtX21heCBibV9zdWJ0cmFjdCBibV96ZXJvIGJtX29uZSBibV9zcmNfY29sb3VyICcgK1xuICAgICAgJ2JtX2ludl9zcmNfY29sb3VyIGJtX3NyY19jb2xvciBibV9pbnZfc3JjX2NvbG9yIGJtX3NyY19hbHBoYSAnICtcbiAgICAgICdibV9pbnZfc3JjX2FscGhhIGJtX2Rlc3RfYWxwaGEgYm1faW52X2Rlc3RfYWxwaGEgYm1fZGVzdF9jb2xvdXIgJyArXG4gICAgICAnYm1faW52X2Rlc3RfY29sb3VyIGJtX2Rlc3RfY29sb3IgYm1faW52X2Rlc3RfY29sb3IgYm1fc3JjX2FscGhhX3NhdCAnICtcbiAgICAgICd0Zl9wb2ludCB0Zl9saW5lYXIgdGZfYW5pc290cm9waWMgbWlwX29mZiBtaXBfb24gbWlwX21hcmtlZG9ubHkgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9ub25lIGF1ZGlvX2ZhbGxvZmZfaW52ZXJzZV9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2ludmVyc2VfZGlzdGFuY2VfY2xhbXBlZCBhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZSAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2xpbmVhcl9kaXN0YW5jZV9jbGFtcGVkICcgK1xuICAgICAgJ2F1ZGlvX2ZhbGxvZmZfZXhwb25lbnRfZGlzdGFuY2UgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9leHBvbmVudF9kaXN0YW5jZV9jbGFtcGVkIGF1ZGlvX29sZF9zeXN0ZW0gJyArXG4gICAgICAnYXVkaW9fbmV3X3N5c3RlbSBhdWRpb19tb25vIGF1ZGlvX3N0ZXJlbyBhdWRpb18zZCBjcl9kZWZhdWx0IGNyX25vbmUgJyArXG4gICAgICAnY3JfYXJyb3cgY3JfY3Jvc3MgY3JfYmVhbSBjcl9zaXplX25lc3cgY3Jfc2l6ZV9ucyBjcl9zaXplX253c2UgJyArXG4gICAgICAnY3Jfc2l6ZV93ZSBjcl91cGFycm93IGNyX2hvdXJnbGFzcyBjcl9kcmFnIGNyX2FwcHN0YXJ0IGNyX2hhbmRwb2ludCAnICtcbiAgICAgICdjcl9zaXplX2FsbCBzcHJpdGVzcGVlZF9mcmFtZXNwZXJzZWNvbmQgJyArXG4gICAgICAnc3ByaXRlc3BlZWRfZnJhbWVzcGVyZ2FtZWZyYW1lIGFzc2V0X29iamVjdCBhc3NldF91bmtub3duICcgK1xuICAgICAgJ2Fzc2V0X3Nwcml0ZSBhc3NldF9zb3VuZCBhc3NldF9yb29tIGFzc2V0X3BhdGggYXNzZXRfc2NyaXB0ICcgK1xuICAgICAgJ2Fzc2V0X2ZvbnQgYXNzZXRfdGltZWxpbmUgYXNzZXRfdGlsZXMgYXNzZXRfc2hhZGVyIGZhX3JlYWRvbmx5ICcgK1xuICAgICAgJ2ZhX2hpZGRlbiBmYV9zeXNmaWxlIGZhX3ZvbHVtZWlkIGZhX2RpcmVjdG9yeSBmYV9hcmNoaXZlICAnICtcbiAgICAgICdkc190eXBlX21hcCBkc190eXBlX2xpc3QgZHNfdHlwZV9zdGFjayBkc190eXBlX3F1ZXVlIGRzX3R5cGVfZ3JpZCAnICtcbiAgICAgICdkc190eXBlX3ByaW9yaXR5IGVmX2V4cGxvc2lvbiBlZl9yaW5nIGVmX2VsbGlwc2UgZWZfZmlyZXdvcmsgJyArXG4gICAgICAnZWZfc21va2UgZWZfc21va2V1cCBlZl9zdGFyIGVmX3NwYXJrIGVmX2ZsYXJlIGVmX2Nsb3VkIGVmX3JhaW4gJyArXG4gICAgICAnZWZfc25vdyBwdF9zaGFwZV9waXhlbCBwdF9zaGFwZV9kaXNrIHB0X3NoYXBlX3NxdWFyZSBwdF9zaGFwZV9saW5lICcgK1xuICAgICAgJ3B0X3NoYXBlX3N0YXIgcHRfc2hhcGVfY2lyY2xlIHB0X3NoYXBlX3JpbmcgcHRfc2hhcGVfc3BoZXJlICcgK1xuICAgICAgJ3B0X3NoYXBlX2ZsYXJlIHB0X3NoYXBlX3NwYXJrIHB0X3NoYXBlX2V4cGxvc2lvbiBwdF9zaGFwZV9jbG91ZCAnICtcbiAgICAgICdwdF9zaGFwZV9zbW9rZSBwdF9zaGFwZV9zbm93IHBzX2Rpc3RyX2xpbmVhciBwc19kaXN0cl9nYXVzc2lhbiAnICtcbiAgICAgICdwc19kaXN0cl9pbnZnYXVzc2lhbiBwc19zaGFwZV9yZWN0YW5nbGUgcHNfc2hhcGVfZWxsaXBzZSAnICtcbiAgICAgICdwc19zaGFwZV9kaWFtb25kIHBzX3NoYXBlX2xpbmUgdHlfcmVhbCB0eV9zdHJpbmcgZGxsX2NkZWNsICcgK1xuICAgICAgJ2RsbF9zdGRjYWxsIG1hdHJpeF92aWV3IG1hdHJpeF9wcm9qZWN0aW9uIG1hdHJpeF93b3JsZCBvc193aW4zMiAnICtcbiAgICAgICdvc193aW5kb3dzIG9zX21hY29zeCBvc19pb3Mgb3NfYW5kcm9pZCBvc19zeW1iaWFuIG9zX2xpbnV4ICcgK1xuICAgICAgJ29zX3Vua25vd24gb3Nfd2lucGhvbmUgb3NfdGl6ZW4gb3Nfd2luOG5hdGl2ZSAnICtcbiAgICAgICdvc193aWl1IG9zXzNkcyAgb3NfcHN2aXRhIG9zX2JiMTAgb3NfcHM0IG9zX3hib3hvbmUgJyArXG4gICAgICAnb3NfcHMzIG9zX3hib3gzNjAgb3NfdXdwIG9zX3R2b3Mgb3Nfc3dpdGNoICcgK1xuICAgICAgJ2Jyb3dzZXJfbm90X2FfYnJvd3NlciBicm93c2VyX3Vua25vd24gYnJvd3Nlcl9pZSBicm93c2VyX2ZpcmVmb3ggJyArXG4gICAgICAnYnJvd3Nlcl9jaHJvbWUgYnJvd3Nlcl9zYWZhcmkgYnJvd3Nlcl9zYWZhcmlfbW9iaWxlIGJyb3dzZXJfb3BlcmEgJyArXG4gICAgICAnYnJvd3Nlcl90aXplbiBicm93c2VyX2VkZ2UgYnJvd3Nlcl93aW5kb3dzX3N0b3JlIGJyb3dzZXJfaWVfbW9iaWxlICAnICtcbiAgICAgICdkZXZpY2VfaW9zX3Vua25vd24gZGV2aWNlX2lvc19pcGhvbmUgZGV2aWNlX2lvc19pcGhvbmVfcmV0aW5hICcgK1xuICAgICAgJ2RldmljZV9pb3NfaXBhZCBkZXZpY2VfaW9zX2lwYWRfcmV0aW5hIGRldmljZV9pb3NfaXBob25lNSAnICtcbiAgICAgICdkZXZpY2VfaW9zX2lwaG9uZTYgZGV2aWNlX2lvc19pcGhvbmU2cGx1cyBkZXZpY2VfZW11bGF0b3IgJyArXG4gICAgICAnZGV2aWNlX3RhYmxldCBkaXNwbGF5X2xhbmRzY2FwZSBkaXNwbGF5X2xhbmRzY2FwZV9mbGlwcGVkICcgK1xuICAgICAgJ2Rpc3BsYXlfcG9ydHJhaXQgZGlzcGxheV9wb3J0cmFpdF9mbGlwcGVkIHRtX3NsZWVwIHRtX2NvdW50dnN5bmNzICcgK1xuICAgICAgJ29mX2NoYWxsZW5nZV93aW4gb2ZfY2hhbGxlbiBnZV9sb3NlIG9mX2NoYWxsZW5nZV90aWUgJyArXG4gICAgICAnbGVhZGVyYm9hcmRfdHlwZV9udW1iZXIgbGVhZGVyYm9hcmRfdHlwZV90aW1lX21pbnNfc2VjcyAnICtcbiAgICAgICdjbXBmdW5jX25ldmVyIGNtcGZ1bmNfbGVzcyBjbXBmdW5jX2VxdWFsIGNtcGZ1bmNfbGVzc2VxdWFsICcgK1xuICAgICAgJ2NtcGZ1bmNfZ3JlYXRlciBjbXBmdW5jX25vdGVxdWFsIGNtcGZ1bmNfZ3JlYXRlcmVxdWFsIGNtcGZ1bmNfYWx3YXlzICcgK1xuICAgICAgJ2N1bGxfbm9jdWxsaW5nIGN1bGxfY2xvY2t3aXNlIGN1bGxfY291bnRlcmNsb2Nrd2lzZSBsaWdodHR5cGVfZGlyICcgK1xuICAgICAgJ2xpZ2h0dHlwZV9wb2ludCBpYXBfZXZfc3RvcmVsb2FkIGlhcF9ldl9wcm9kdWN0IGlhcF9ldl9wdXJjaGFzZSAnICtcbiAgICAgICdpYXBfZXZfY29uc3VtZSBpYXBfZXZfcmVzdG9yZSBpYXBfc3RvcmVsb2FkX29rIGlhcF9zdG9yZWxvYWRfZmFpbGVkICcgK1xuICAgICAgJ2lhcF9zdGF0dXNfdW5pbml0aWFsaXNlZCBpYXBfc3RhdHVzX3VuYXZhaWxhYmxlIGlhcF9zdGF0dXNfbG9hZGluZyAnICtcbiAgICAgICdpYXBfc3RhdHVzX2F2YWlsYWJsZSBpYXBfc3RhdHVzX3Byb2Nlc3NpbmcgaWFwX3N0YXR1c19yZXN0b3JpbmcgJyArXG4gICAgICAnaWFwX2ZhaWxlZCBpYXBfdW5hdmFpbGFibGUgaWFwX2F2YWlsYWJsZSBpYXBfcHVyY2hhc2VkIGlhcF9jYW5jZWxlZCAnICtcbiAgICAgICdpYXBfcmVmdW5kZWQgZmJfbG9naW5fZGVmYXVsdCBmYl9sb2dpbl9mYWxsYmFja190b193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX25vX2ZhbGxiYWNrX3RvX3dlYnZpZXcgZmJfbG9naW5fZm9yY2luZ193ZWJ2aWV3ICcgK1xuICAgICAgJ2ZiX2xvZ2luX3VzZV9zeXN0ZW1fYWNjb3VudCBmYl9sb2dpbl9mb3JjaW5nX3NhZmFyaSAgJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8xX3ggcGh5X2pvaW50X2FuY2hvcl8xX3kgcGh5X2pvaW50X2FuY2hvcl8yX3ggJyArXG4gICAgICAncGh5X2pvaW50X2FuY2hvcl8yX3kgcGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3ggJyArXG4gICAgICAncGh5X2pvaW50X3JlYWN0aW9uX2ZvcmNlX3kgcGh5X2pvaW50X3JlYWN0aW9uX3RvcnF1ZSAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3Jfc3BlZWQgcGh5X2pvaW50X2FuZ2xlIHBoeV9qb2ludF9tb3Rvcl90b3JxdWUgJyArXG4gICAgICAncGh5X2pvaW50X21heF9tb3Rvcl90b3JxdWUgcGh5X2pvaW50X3RyYW5zbGF0aW9uIHBoeV9qb2ludF9zcGVlZCAnICtcbiAgICAgICdwaHlfam9pbnRfbW90b3JfZm9yY2UgcGh5X2pvaW50X21heF9tb3Rvcl9mb3JjZSBwaHlfam9pbnRfbGVuZ3RoXzEgJyArXG4gICAgICAncGh5X2pvaW50X2xlbmd0aF8yIHBoeV9qb2ludF9kYW1waW5nX3JhdGlvIHBoeV9qb2ludF9mcmVxdWVuY3kgJyArXG4gICAgICAncGh5X2pvaW50X2xvd2VyX2FuZ2xlX2xpbWl0IHBoeV9qb2ludF91cHBlcl9hbmdsZV9saW1pdCAnICtcbiAgICAgICdwaHlfam9pbnRfYW5nbGVfbGltaXRzIHBoeV9qb2ludF9tYXhfbGVuZ3RoIHBoeV9qb2ludF9tYXhfdG9ycXVlICcgK1xuICAgICAgJ3BoeV9qb2ludF9tYXhfZm9yY2UgcGh5X2RlYnVnX3JlbmRlcl9hYWJiICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfY29sbGlzaW9uX3BhaXJzIHBoeV9kZWJ1Z19yZW5kZXJfY29tcyAnICtcbiAgICAgICdwaHlfZGVidWdfcmVuZGVyX2NvcmVfc2hhcGVzIHBoeV9kZWJ1Z19yZW5kZXJfam9pbnRzICcgK1xuICAgICAgJ3BoeV9kZWJ1Z19yZW5kZXJfb2JiIHBoeV9kZWJ1Z19yZW5kZXJfc2hhcGVzICAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZmxhZ193YXRlciBwaHlfcGFydGljbGVfZmxhZ196b21iaWUgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfd2FsbCBwaHlfcGFydGljbGVfZmxhZ19zcHJpbmcgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfZWxhc3RpYyBwaHlfcGFydGljbGVfZmxhZ192aXNjb3VzICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX3Bvd2RlciBwaHlfcGFydGljbGVfZmxhZ190ZW5zaWxlICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX2NvbG91cm1peGluZyBwaHlfcGFydGljbGVfZmxhZ19jb2xvcm1peGluZyAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19zb2xpZCBwaHlfcGFydGljbGVfZ3JvdXBfZmxhZ19yaWdpZCAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZGF0YV9mbGFnX3R5cGVmbGFncyBwaHlfcGFydGljbGVfZGF0YV9mbGFnX3Bvc2l0aW9uICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfdmVsb2NpdHkgcGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvdXIgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvciBwaHlfcGFydGljbGVfZGF0YV9mbGFnX2NhdGVnb3J5ICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9vdXJfaW5mbyBhY2hpZXZlbWVudF9mcmllbmRzX2luZm8gJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfbGVhZGVyYm9hcmRfaW5mbyBhY2hpZXZlbWVudF9hY2hpZXZlbWVudF9pbmZvICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9hbGxfcGxheWVycyBhY2hpZXZlbWVudF9maWx0ZXJfZnJpZW5kc19vbmx5ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2ZpbHRlcl9mYXZvcml0ZXNfb25seSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX2FjaGlldmVtZW50X2NoYWxsZW5nZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF90eXBlX3Njb3JlX2NoYWxsZW5nZSBhY2hpZXZlbWVudF9waWNfbG9hZGVkICAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3VpIGFjaGlldmVtZW50X3Nob3dfcHJvZmlsZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X2xlYWRlcmJvYXJkIGFjaGlldmVtZW50X3Nob3dfYWNoaWV2ZW1lbnQgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19iYW5rIGFjaGlldmVtZW50X3Nob3dfZnJpZW5kX3BpY2tlciAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X3B1cmNoYXNlX3Byb21wdCBuZXR3b3JrX3NvY2tldF90Y3AgJyArXG4gICAgICAnbmV0d29ya19zb2NrZXRfdWRwIG5ldHdvcmtfc29ja2V0X2JsdWV0b290aCBuZXR3b3JrX3R5cGVfY29ubmVjdCAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfZGlzY29ubmVjdCBuZXR3b3JrX3R5cGVfZGF0YSAnICtcbiAgICAgICduZXR3b3JrX3R5cGVfbm9uX2Jsb2NraW5nX2Nvbm5lY3QgbmV0d29ya19jb25maWdfY29ubmVjdF90aW1lb3V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX3VzZV9ub25fYmxvY2tpbmdfc29ja2V0ICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX2VuYWJsZV9yZWxpYWJsZV91ZHAgJyArXG4gICAgICAnbmV0d29ya19jb25maWdfZGlzYWJsZV9yZWxpYWJsZV91ZHAgYnVmZmVyX2ZpeGVkIGJ1ZmZlcl9ncm93ICcgK1xuICAgICAgJ2J1ZmZlcl93cmFwIGJ1ZmZlcl9mYXN0IGJ1ZmZlcl92YnVmZmVyIGJ1ZmZlcl9uZXR3b3JrIGJ1ZmZlcl91OCAnICtcbiAgICAgICdidWZmZXJfczggYnVmZmVyX3UxNiBidWZmZXJfczE2IGJ1ZmZlcl91MzIgYnVmZmVyX3MzMiBidWZmZXJfdTY0ICcgK1xuICAgICAgJ2J1ZmZlcl9mMTYgYnVmZmVyX2YzMiBidWZmZXJfZjY0IGJ1ZmZlcl9ib29sIGJ1ZmZlcl90ZXh0ICcgK1xuICAgICAgJ2J1ZmZlcl9zdHJpbmcgYnVmZmVyX3N1cmZhY2VfY29weSBidWZmZXJfc2Vla19zdGFydCAnICtcbiAgICAgICdidWZmZXJfc2Vla19yZWxhdGl2ZSBidWZmZXJfc2Vla19lbmQgJyArXG4gICAgICAnYnVmZmVyX2dlbmVyYWxlcnJvciBidWZmZXJfb3V0b2ZzcGFjZSBidWZmZXJfb3V0b2Zib3VuZHMgJyArXG4gICAgICAnYnVmZmVyX2ludmFsaWR0eXBlICB0ZXh0X3R5cGUgYnV0dG9uX3R5cGUgaW5wdXRfdHlwZSBBTlNJX0NIQVJTRVQgJyArXG4gICAgICAnREVGQVVMVF9DSEFSU0VUIEVBU1RFVVJPUEVfQ0hBUlNFVCBSVVNTSUFOX0NIQVJTRVQgU1lNQk9MX0NIQVJTRVQgJyArXG4gICAgICAnU0hJRlRKSVNfQ0hBUlNFVCBIQU5HRVVMX0NIQVJTRVQgR0IyMzEyX0NIQVJTRVQgQ0hJTkVTRUJJRzVfQ0hBUlNFVCAnICtcbiAgICAgICdKT0hBQl9DSEFSU0VUIEhFQlJFV19DSEFSU0VUIEFSQUJJQ19DSEFSU0VUIEdSRUVLX0NIQVJTRVQgJyArXG4gICAgICAnVFVSS0lTSF9DSEFSU0VUIFZJRVROQU1FU0VfQ0hBUlNFVCBUSEFJX0NIQVJTRVQgTUFDX0NIQVJTRVQgJyArXG4gICAgICAnQkFMVElDX0NIQVJTRVQgT0VNX0NIQVJTRVQgIGdwX2ZhY2UxIGdwX2ZhY2UyIGdwX2ZhY2UzIGdwX2ZhY2U0ICcgK1xuICAgICAgJ2dwX3Nob3VsZGVybCBncF9zaG91bGRlcnIgZ3Bfc2hvdWxkZXJsYiBncF9zaG91bGRlcnJiIGdwX3NlbGVjdCAnICtcbiAgICAgICdncF9zdGFydCBncF9zdGlja2wgZ3Bfc3RpY2tyIGdwX3BhZHUgZ3BfcGFkZCBncF9wYWRsIGdwX3BhZHIgJyArXG4gICAgICAnZ3BfYXhpc2xoIGdwX2F4aXNsdiBncF9heGlzcmggZ3BfYXhpc3J2IG92X2ZyaWVuZHMgb3ZfY29tbXVuaXR5ICcgK1xuICAgICAgJ292X3BsYXllcnMgb3Zfc2V0dGluZ3Mgb3ZfZ2FtZWdyb3VwIG92X2FjaGlldmVtZW50cyBsYl9zb3J0X25vbmUgJyArXG4gICAgICAnbGJfc29ydF9hc2NlbmRpbmcgbGJfc29ydF9kZXNjZW5kaW5nIGxiX2Rpc3Bfbm9uZSBsYl9kaXNwX251bWVyaWMgJyArXG4gICAgICAnbGJfZGlzcF90aW1lX3NlYyBsYl9kaXNwX3RpbWVfbXMgdWdjX3Jlc3VsdF9zdWNjZXNzICcgK1xuICAgICAgJ3VnY19maWxldHlwZV9jb21tdW5pdHkgdWdjX2ZpbGV0eXBlX21pY3JvdHJhbnMgdWdjX3Zpc2liaWxpdHlfcHVibGljICcgK1xuICAgICAgJ3VnY192aXNpYmlsaXR5X2ZyaWVuZHNfb25seSB1Z2NfdmlzaWJpbGl0eV9wcml2YXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVZvdGUgdWdjX3F1ZXJ5X1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9BY2NlcHRlZEZvckdhbWVSYW5rZWRCeUFjY2VwdGFuY2VEYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeVRyZW5kICcgK1xuICAgICAgJ3VnY19xdWVyeV9GYXZvcml0ZWRCeUZyaWVuZHNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfQ3JlYXRlZEJ5RnJpZW5kc1JhbmtlZEJ5UHVibGljYXRpb25EYXRlICcgK1xuICAgICAgJ3VnY19xdWVyeV9SYW5rZWRCeU51bVRpbWVzUmVwb3J0ZWQgJyArXG4gICAgICAndWdjX3F1ZXJ5X0NyZWF0ZWRCeUZvbGxvd2VkVXNlcnNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfTm90WWV0UmF0ZWQgdWdjX3F1ZXJ5X1JhbmtlZEJ5VG90YWxWb3Rlc0FzYyAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlWb3Rlc1VwIHVnY19xdWVyeV9SYW5rZWRCeVRleHRTZWFyY2ggJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9DcmVhdGlvbk9yZGVyRGVzYyB1Z2Nfc29ydG9yZGVyX0NyZWF0aW9uT3JkZXJBc2MgJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9UaXRsZUFzYyB1Z2Nfc29ydG9yZGVyX0xhc3RVcGRhdGVkRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX1N1YnNjcmlwdGlvbkRhdGVEZXNjIHVnY19zb3J0b3JkZXJfVm90ZVNjb3JlRGVzYyAnICtcbiAgICAgICd1Z2Nfc29ydG9yZGVyX0Zvck1vZGVyYXRpb24gdWdjX2xpc3RfUHVibGlzaGVkIHVnY19saXN0X1ZvdGVkT24gJyArXG4gICAgICAndWdjX2xpc3RfVm90ZWRVcCB1Z2NfbGlzdF9Wb3RlZERvd24gdWdjX2xpc3RfV2lsbFZvdGVMYXRlciAnICtcbiAgICAgICd1Z2NfbGlzdF9GYXZvcml0ZWQgdWdjX2xpc3RfU3Vic2NyaWJlZCB1Z2NfbGlzdF9Vc2VkT3JQbGF5ZWQgJyArXG4gICAgICAndWdjX2xpc3RfRm9sbG93ZWQgdWdjX21hdGNoX0l0ZW1zIHVnY19tYXRjaF9JdGVtc19NdHggJyArXG4gICAgICAndWdjX21hdGNoX0l0ZW1zX1JlYWR5VG9Vc2UgdWdjX21hdGNoX0NvbGxlY3Rpb25zIHVnY19tYXRjaF9BcnR3b3JrICcgK1xuICAgICAgJ3VnY19tYXRjaF9WaWRlb3MgdWdjX21hdGNoX1NjcmVlbnNob3RzIHVnY19tYXRjaF9BbGxHdWlkZXMgJyArXG4gICAgICAndWdjX21hdGNoX1dlYkd1aWRlcyB1Z2NfbWF0Y2hfSW50ZWdyYXRlZEd1aWRlcyAnICtcbiAgICAgICd1Z2NfbWF0Y2hfVXNhYmxlSW5HYW1lIHVnY19tYXRjaF9Db250cm9sbGVyQmluZGluZ3MgICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wb3NpdGlvbiB2ZXJ0ZXhfdXNhZ2VfY29sb3VyIHZlcnRleF91c2FnZV9jb2xvciAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2Vfbm9ybWFsIHZlcnRleF91c2FnZV90ZXhjb29yZCB2ZXJ0ZXhfdXNhZ2VfdGV4dGNvb3JkICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9ibGVuZHdlaWdodCB2ZXJ0ZXhfdXNhZ2VfYmxlbmRpbmRpY2VzICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9wc2l6ZSB2ZXJ0ZXhfdXNhZ2VfdGFuZ2VudCB2ZXJ0ZXhfdXNhZ2VfYmlub3JtYWwgJyArXG4gICAgICAndmVydGV4X3VzYWdlX2ZvZyB2ZXJ0ZXhfdXNhZ2VfZGVwdGggdmVydGV4X3VzYWdlX3NhbXBsZSAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDEgdmVydGV4X3R5cGVfZmxvYXQyIHZlcnRleF90eXBlX2Zsb2F0MyAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV9mbG9hdDQgdmVydGV4X3R5cGVfY29sb3VyIHZlcnRleF90eXBlX2NvbG9yICcgK1xuICAgICAgJ3ZlcnRleF90eXBlX3VieXRlNCBsYXllcmVsZW1lbnR0eXBlX3VuZGVmaW5lZCAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX2JhY2tncm91bmQgbGF5ZXJlbGVtZW50dHlwZV9pbnN0YW5jZSAnICtcbiAgICAgICdsYXllcmVsZW1lbnR0eXBlX29sZHRpbGVtYXAgbGF5ZXJlbGVtZW50dHlwZV9zcHJpdGUgJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlbWFwIGxheWVyZWxlbWVudHR5cGVfcGFydGljbGVzeXN0ZW0gJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV90aWxlIHRpbGVfcm90YXRlIHRpbGVfZmxpcCB0aWxlX21pcnJvciAnICtcbiAgICAgICd0aWxlX2luZGV4X21hc2sga2J2X3R5cGVfZGVmYXVsdCBrYnZfdHlwZV9hc2NpaSBrYnZfdHlwZV91cmwgJyArXG4gICAgICAna2J2X3R5cGVfZW1haWwga2J2X3R5cGVfbnVtYmVycyBrYnZfdHlwZV9waG9uZSBrYnZfdHlwZV9waG9uZV9uYW1lICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfZGVmYXVsdCBrYnZfcmV0dXJua2V5X2dvIGtidl9yZXR1cm5rZXlfZ29vZ2xlICcgK1xuICAgICAgJ2tidl9yZXR1cm5rZXlfam9pbiBrYnZfcmV0dXJua2V5X25leHQga2J2X3JldHVybmtleV9yb3V0ZSAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X3NlYXJjaCBrYnZfcmV0dXJua2V5X3NlbmQga2J2X3JldHVybmtleV95YWhvbyAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X2RvbmUga2J2X3JldHVybmtleV9jb250aW51ZSBrYnZfcmV0dXJua2V5X2VtZXJnZW5jeSAnICtcbiAgICAgICdrYnZfYXV0b2NhcGl0YWxpemVfbm9uZSBrYnZfYXV0b2NhcGl0YWxpemVfd29yZHMgJyArXG4gICAgICAna2J2X2F1dG9jYXBpdGFsaXplX3NlbnRlbmNlcyBrYnZfYXV0b2NhcGl0YWxpemVfY2hhcmFjdGVycycsXG4gICAgc3ltYm9sOiAnYXJndW1lbnRfcmVsYXRpdmUgYXJndW1lbnQgYXJndW1lbnQwIGFyZ3VtZW50MSBhcmd1bWVudDIgJyArXG4gICAgICAnYXJndW1lbnQzIGFyZ3VtZW50NCBhcmd1bWVudDUgYXJndW1lbnQ2IGFyZ3VtZW50NyBhcmd1bWVudDggJyArXG4gICAgICAnYXJndW1lbnQ5IGFyZ3VtZW50MTAgYXJndW1lbnQxMSBhcmd1bWVudDEyIGFyZ3VtZW50MTMgYXJndW1lbnQxNCAnICtcbiAgICAgICdhcmd1bWVudDE1IGFyZ3VtZW50X2NvdW50IHggeSB4cHJldmlvdXMgeXByZXZpb3VzIHhzdGFydCB5c3RhcnQgJyArXG4gICAgICAnaHNwZWVkIHZzcGVlZCBkaXJlY3Rpb24gc3BlZWQgZnJpY3Rpb24gZ3Jhdml0eSBncmF2aXR5X2RpcmVjdGlvbiAnICtcbiAgICAgICdwYXRoX2luZGV4IHBhdGhfcG9zaXRpb24gcGF0aF9wb3NpdGlvbnByZXZpb3VzIHBhdGhfc3BlZWQgJyArXG4gICAgICAncGF0aF9zY2FsZSBwYXRoX29yaWVudGF0aW9uIHBhdGhfZW5kYWN0aW9uIG9iamVjdF9pbmRleCBpZCBzb2xpZCAnICtcbiAgICAgICdwZXJzaXN0ZW50IG1hc2tfaW5kZXggaW5zdGFuY2VfY291bnQgaW5zdGFuY2VfaWQgcm9vbV9zcGVlZCBmcHMgJyArXG4gICAgICAnZnBzX3JlYWwgY3VycmVudF90aW1lIGN1cnJlbnRfeWVhciBjdXJyZW50X21vbnRoIGN1cnJlbnRfZGF5ICcgK1xuICAgICAgJ2N1cnJlbnRfd2Vla2RheSBjdXJyZW50X2hvdXIgY3VycmVudF9taW51dGUgY3VycmVudF9zZWNvbmQgYWxhcm0gJyArXG4gICAgICAndGltZWxpbmVfaW5kZXggdGltZWxpbmVfcG9zaXRpb24gdGltZWxpbmVfc3BlZWQgdGltZWxpbmVfcnVubmluZyAnICtcbiAgICAgICd0aW1lbGluZV9sb29wIHJvb20gcm9vbV9maXJzdCByb29tX2xhc3Qgcm9vbV93aWR0aCByb29tX2hlaWdodCAnICtcbiAgICAgICdyb29tX2NhcHRpb24gcm9vbV9wZXJzaXN0ZW50IHNjb3JlIGxpdmVzIGhlYWx0aCBzaG93X3Njb3JlICcgK1xuICAgICAgJ3Nob3dfbGl2ZXMgc2hvd19oZWFsdGggY2FwdGlvbl9zY29yZSBjYXB0aW9uX2xpdmVzIGNhcHRpb25faGVhbHRoICcgK1xuICAgICAgJ2V2ZW50X3R5cGUgZXZlbnRfbnVtYmVyIGV2ZW50X29iamVjdCBldmVudF9hY3Rpb24gJyArXG4gICAgICAnYXBwbGljYXRpb25fc3VyZmFjZSBnYW1lbWFrZXJfcHJvIGdhbWVtYWtlcl9yZWdpc3RlcmVkICcgK1xuICAgICAgJ2dhbWVtYWtlcl92ZXJzaW9uIGVycm9yX29jY3VycmVkIGVycm9yX2xhc3QgZGVidWdfbW9kZSAnICtcbiAgICAgICdrZXlib2FyZF9rZXkga2V5Ym9hcmRfbGFzdGtleSBrZXlib2FyZF9sYXN0Y2hhciBrZXlib2FyZF9zdHJpbmcgJyArXG4gICAgICAnbW91c2VfeCBtb3VzZV95IG1vdXNlX2J1dHRvbiBtb3VzZV9sYXN0YnV0dG9uIGN1cnNvcl9zcHJpdGUgJyArXG4gICAgICAndmlzaWJsZSBzcHJpdGVfaW5kZXggc3ByaXRlX3dpZHRoIHNwcml0ZV9oZWlnaHQgc3ByaXRlX3hvZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX3lvZmZzZXQgaW1hZ2VfbnVtYmVyIGltYWdlX2luZGV4IGltYWdlX3NwZWVkIGRlcHRoICcgK1xuICAgICAgJ2ltYWdlX3hzY2FsZSBpbWFnZV95c2NhbGUgaW1hZ2VfYW5nbGUgaW1hZ2VfYWxwaGEgaW1hZ2VfYmxlbmQgJyArXG4gICAgICAnYmJveF9sZWZ0IGJib3hfcmlnaHQgYmJveF90b3AgYmJveF9ib3R0b20gbGF5ZXIgYmFja2dyb3VuZF9jb2xvdXIgICcgK1xuICAgICAgJ2JhY2tncm91bmRfc2hvd2NvbG91ciBiYWNrZ3JvdW5kX2NvbG9yIGJhY2tncm91bmRfc2hvd2NvbG9yICcgK1xuICAgICAgJ3ZpZXdfZW5hYmxlZCB2aWV3X2N1cnJlbnQgdmlld192aXNpYmxlIHZpZXdfeHZpZXcgdmlld195dmlldyAnICtcbiAgICAgICd2aWV3X3d2aWV3IHZpZXdfaHZpZXcgdmlld194cG9ydCB2aWV3X3lwb3J0IHZpZXdfd3BvcnQgdmlld19ocG9ydCAnICtcbiAgICAgICd2aWV3X2FuZ2xlIHZpZXdfaGJvcmRlciB2aWV3X3Zib3JkZXIgdmlld19oc3BlZWQgdmlld192c3BlZWQgJyArXG4gICAgICAndmlld19vYmplY3Qgdmlld19zdXJmYWNlX2lkIHZpZXdfY2FtZXJhIGdhbWVfaWQgZ2FtZV9kaXNwbGF5X25hbWUgJyArXG4gICAgICAnZ2FtZV9wcm9qZWN0X25hbWUgZ2FtZV9zYXZlX2lkIHdvcmtpbmdfZGlyZWN0b3J5IHRlbXBfZGlyZWN0b3J5ICcgK1xuICAgICAgJ3Byb2dyYW1fZGlyZWN0b3J5IGJyb3dzZXJfd2lkdGggYnJvd3Nlcl9oZWlnaHQgb3NfdHlwZSBvc19kZXZpY2UgJyArXG4gICAgICAnb3NfYnJvd3NlciBvc192ZXJzaW9uIGRpc3BsYXlfYWEgYXN5bmNfbG9hZCBkZWx0YV90aW1lICcgK1xuICAgICAgJ3dlYmdsX2VuYWJsZWQgZXZlbnRfZGF0YSBpYXBfZGF0YSBwaHlfcm90YXRpb24gcGh5X3Bvc2l0aW9uX3ggJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3kgcGh5X2FuZ3VsYXJfdmVsb2NpdHkgcGh5X2xpbmVhcl92ZWxvY2l0eV94ICcgK1xuICAgICAgJ3BoeV9saW5lYXJfdmVsb2NpdHlfeSBwaHlfc3BlZWRfeCBwaHlfc3BlZWRfeSBwaHlfc3BlZWQgJyArXG4gICAgICAncGh5X2FuZ3VsYXJfZGFtcGluZyBwaHlfbGluZWFyX2RhbXBpbmcgcGh5X2J1bGxldCAnICtcbiAgICAgICdwaHlfZml4ZWRfcm90YXRpb24gcGh5X2FjdGl2ZSBwaHlfbWFzcyBwaHlfaW5lcnRpYSBwaHlfY29tX3ggJyArXG4gICAgICAncGh5X2NvbV95IHBoeV9keW5hbWljIHBoeV9raW5lbWF0aWMgcGh5X3NsZWVwaW5nICcgK1xuICAgICAgJ3BoeV9jb2xsaXNpb25fcG9pbnRzIHBoeV9jb2xsaXNpb25feCBwaHlfY29sbGlzaW9uX3kgJyArXG4gICAgICAncGh5X2NvbF9ub3JtYWxfeCBwaHlfY29sX25vcm1hbF95IHBoeV9wb3NpdGlvbl94cHJldmlvdXMgJyArXG4gICAgICAncGh5X3Bvc2l0aW9uX3lwcmV2aW91cydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ21sJywgJ0dNTCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLCAvLyBsYW5ndWFnZSBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAga2V5d29yZHM6IEdNTF9LRVlXT1JEUyxcblxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBHT19LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2JyZWFrIGRlZmF1bHQgZnVuYyBpbnRlcmZhY2Ugc2VsZWN0IGNhc2UgbWFwIHN0cnVjdCBjaGFuIGVsc2UgZ290byBwYWNrYWdlIHN3aXRjaCAnICtcbiAgICAgICdjb25zdCBmYWxsdGhyb3VnaCBpZiByYW5nZSB0eXBlIGNvbnRpbnVlIGZvciBpbXBvcnQgcmV0dXJuIHZhciBnbyBkZWZlciAnICtcbiAgICAgICdib29sIGJ5dGUgY29tcGxleDY0IGNvbXBsZXgxMjggZmxvYXQzMiBmbG9hdDY0IGludDggaW50MTYgaW50MzIgaW50NjQgc3RyaW5nIHVpbnQ4ICcgK1xuICAgICAgJ3VpbnQxNiB1aW50MzIgdWludDY0IGludCB1aW50IHVpbnRwdHIgcnVuZScsXG4gICAgbGl0ZXJhbDpcbiAgICAgICAndHJ1ZSBmYWxzZSBpb3RhIG5pbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXBwZW5kIGNhcCBjbG9zZSBjb21wbGV4IGNvcHkgaW1hZyBsZW4gbWFrZSBuZXcgcGFuaWMgcHJpbnQgcHJpbnRsbiByZWFsIHJlY292ZXIgZGVsZXRlJ1xuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZ29sYW5nJ10sXG4gICAga2V5d29yZHM6IEdPX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7YmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ2AnLCBlbmQ6ICdgJ30sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1tpXScsIHJlbGV2YW5jZTogMX0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOj0vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAnXFxcXHMqKFxcXFx7fCQpJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlRJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBHT19LRVlXT1JEUyxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICBrZXl3b3Jkczoge1xuICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICdwcmludGxuIHJlYWRsbiBwcmludCBpbXBvcnQgbW9kdWxlIGZ1bmN0aW9uIGxvY2FsIHJldHVybiBsZXQgdmFyICcgK1xuICAgICAgICAgICd3aGlsZSBmb3IgZm9yZWFjaCB0aW1lcyBpbiBjYXNlIHdoZW4gbWF0Y2ggd2l0aCBicmVhayBjb250aW51ZSAnICtcbiAgICAgICAgICAnYXVnbWVudCBhdWdtZW50YXRpb24gZWFjaCBmaW5kIGZpbHRlciByZWR1Y2UgJyArXG4gICAgICAgICAgJ2lmIHRoZW4gZWxzZSBvdGhlcndpc2UgdHJ5IGNhdGNoIGZpbmFsbHkgcmFpc2UgdGhyb3cgb3JJZk51bGwgJyArXG4gICAgICAgICAgJ0R5bmFtaWNPYmplY3R8MTAgRHluYW1pY1ZhcmlhYmxlIHN0cnVjdCBPYnNlcnZhYmxlIG1hcCBzZXQgdmVjdG9yIGxpc3QgYXJyYXknLFxuICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gICAgICB9LFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ3Rhc2sgcHJvamVjdCBhbGxwcm9qZWN0cyBzdWJwcm9qZWN0cyBhcnRpZmFjdHMgYnVpbGRzY3JpcHQgY29uZmlndXJhdGlvbnMgJyArXG4gICAgICAgICdkZXBlbmRlbmNpZXMgcmVwb3NpdG9yaWVzIHNvdXJjZVNldHMgZGVzY3JpcHRpb24gZGVsZXRlIGZyb20gaW50byBpbmNsdWRlICcgK1xuICAgICAgICAnZXhjbHVkZSBzb3VyY2UgY2xhc3NwYXRoIGRlc3RpbmF0aW9uRGlyIGluY2x1ZGVzIG9wdGlvbnMgc291cmNlQ29tcGF0aWJpbGl0eSAnICtcbiAgICAgICAgJ3RhcmdldENvbXBhdGliaWxpdHkgZ3JvdXAgZmxhdERpciBkb0xhc3QgZG9GaXJzdCBmbGF0dGVuIHRvZGlyIGZyb21kaXIgYW50ICcgK1xuICAgICAgICAnZGVmIGFic3RyYWN0IGJyZWFrIGNhc2UgY2F0Y2ggY29udGludWUgZGVmYXVsdCBkbyBlbHNlIGV4dGVuZHMgZmluYWwgZmluYWxseSAnICtcbiAgICAgICAgJ2ZvciBpZiBpbXBsZW1lbnRzIGluc3RhbmNlb2YgbmF0aXZlIG5ldyBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcmV0dXJuIHN0YXRpYyAnICtcbiAgICAgICAgJ3N3aXRjaCBzeW5jaHJvbml6ZWQgdGhyb3cgdGhyb3dzIHRyYW5zaWVudCB0cnkgdm9sYXRpbGUgd2hpbGUgc3RyaWN0ZnAgcGFja2FnZSAnICtcbiAgICAgICAgJ2ltcG9ydCBmYWxzZSBudWxsIHN1cGVyIHRoaXMgdHJ1ZSBhbnRscnRhc2sgY2hlY2tzdHlsZSBjb2RlbmFyYyBjb3B5IGJvb2xlYW4gJyArXG4gICAgICAgICdieXRlIGNoYXIgY2xhc3MgZG91YmxlIGZsb2F0IGludCBpbnRlcmZhY2UgbG9uZyBzaG9ydCB2b2lkIGNvbXBpbGUgcnVuVGltZSAnICtcbiAgICAgICAgJ2ZpbGUgZmlsZVRyZWUgYWJzIGFueSBhcHBlbmQgYXNMaXN0IGFzV3JpdGFibGUgY2FsbCBjb2xsZWN0IGNvbXBhcmVUbyBjb3VudCAnICtcbiAgICAgICAgJ2RpdiBkdW1wIGVhY2ggZWFjaEJ5dGUgZWFjaEZpbGUgZWFjaExpbmUgZXZlcnkgZmluZCBmaW5kQWxsIGZsYXR0ZW4gZ2V0QXQgJyArXG4gICAgICAgICdnZXRFcnIgZ2V0SW4gZ2V0T3V0IGdldFRleHQgZ3JlcCBpbW11dGFibGUgaW5qZWN0IGluc3BlY3QgaW50ZXJzZWN0IGludm9rZU1ldGhvZHMgJyArXG4gICAgICAgICdpc0Nhc2Ugam9pbiBsZWZ0U2hpZnQgbWludXMgbXVsdGlwbHkgbmV3SW5wdXRTdHJlYW0gbmV3T3V0cHV0U3RyZWFtIG5ld1ByaW50V3JpdGVyICcgK1xuICAgICAgICAnbmV3UmVhZGVyIG5ld1dyaXRlciBuZXh0IHBsdXMgcG9wIHBvd2VyIHByZXZpb3VzIHByaW50IHByaW50bG4gcHVzaCBwdXRBdCByZWFkICcgK1xuICAgICAgICAncmVhZEJ5dGVzIHJlYWRMaW5lcyByZXZlcnNlIHJldmVyc2VFYWNoIHJvdW5kIHNpemUgc29ydCBzcGxpdEVhY2hMaW5lIHN0ZXAgc3ViTWFwICcgK1xuICAgICAgICAndGltZXMgdG9JbnRlZ2VyIHRvTGlzdCB0b2tlbml6ZSB1cHRvIHdhaXRGb3JPcktpbGwgd2l0aFByaW50V3JpdGVyIHdpdGhSZWFkZXIgJyArXG4gICAgICAgICd3aXRoU3RyZWFtIHdpdGhXcml0ZXIgd2l0aFdyaXRlckFwcGVuZCB3cml0ZSB3cml0ZUxpbmUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5SRUdFWFBfTU9ERVxuXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsIDogJ3RydWUgZmFsc2UgbnVsbCcsXG4gICAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2J5dGUgc2hvcnQgY2hhciBpbnQgbG9uZyBib29sZWFuIGZsb2F0IGRvdWJsZSB2b2lkICcgK1xuICAgICAgICAgICAgLy8gZ3Jvb3Z5IHNwZWNpZmljIGtleXdvcmRzXG4gICAgICAgICAgICAnZGVmIGFzIGluIGFzc2VydCB0cmFpdCAnICtcbiAgICAgICAgICAgIC8vIGNvbW1vbiBrZXl3b3JkcyB3aXRoIEphdmFcbiAgICAgICAgICAgICdzdXBlciB0aGlzIGFic3RyYWN0IHN0YXRpYyB2b2xhdGlsZSB0cmFuc2llbnQgcHVibGljIHByaXZhdGUgcHJvdGVjdGVkIHN5bmNocm9uaXplZCBmaW5hbCAnICtcbiAgICAgICAgICAgICdjbGFzcyBpbnRlcmZhY2UgZW51bSBpZiBlbHNlIGZvciB3aGlsZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IGNvbnRpbnVlICcgK1xuICAgICAgICAgICAgJ3Rocm93IHRocm93cyB0cnkgY2F0Y2ggZmluYWxseSBpbXBsZW1lbnRzIGV4dGVuZHMgbmV3IGltcG9ydCBwYWNrYWdlIHJldHVybiBpbnN0YW5jZW9mJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgICAgICAgICAnXFxcXCovJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZSA6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcdytALywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiJycnXCIsIGVuZDogXCInJydcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIlxcXFwkL1wiLCBlbmQ6IFwiL1xcXFwkXCIsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvfj9cXC9bXlxcL1xcbl0rXFwvLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJ1xcbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCBlbnVtJywgZW5kOiAneycsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbWFwIGtleXMgYW5kIG5hbWVkIHBhcmFtZXRlcnMgYXMgc3RyaW5nc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIGJlZ2luOiAvW15cXD9dezB9W0EtWmEtejAtOV8kXSsgKjovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGNhdGNoIG1pZGRsZSBlbGVtZW50IG9mIHRoZSB0ZXJuYXJ5IG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaGlnaGxpZ2h0IGl0IGFzIGEgbGFiZWwsIG5hbWVkIHBhcmFtZXRlciwgb3IgbWFwIGtleVxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFw/LywgZW5kOiAvXFw6L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgbGFiZWxlZCBzdGF0ZW1lbnRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46ICdeXFxcXHMqW0EtWmEtejAtOV8kXSs6JyxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLyN8PFxcLy9cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gVE9ETyBzdXBwb3J0IGZpbHRlciB0YWdzIGxpa2UgOmphdmFzY3JpcHQsIHN1cHBvcnQgaW5saW5lIEhUTUxcbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14hISEoICg1fDFcXFxcLjF8U3RyaWN0fEZyYW1lc2V0fEJhc2ljfE1vYmlsZXxSREZhfFhNTFxcXFxiLiopKT8kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIEZJWE1FIHRoZXNlIGNvbW1lbnRzIHNob3VsZCBiZSBhbGxvd2VkIHRvIHNwYW4gaW5kZW50ZWQgbGluZXNcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ15cXFxccyooIT0jfD0jfC0jfC8pLiokJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqKC18PXwhPSkoPyEjKScsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxuJyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKiUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFx3KydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnI1tcXFxcdy1dKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWNsYXNzJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC5bXFxcXHctXSsnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ3tcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqfScsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICc6XFxcXHcrXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIGVuZDogJyxcXFxccysnLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJzpcXFxcdysnXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChcXFxccyonLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqXFxcXCknLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3K1xcXFxzKj0nLFxuICAgICAgICAgICAgICAgIGVuZDogJ1xcXFxzKycsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKls9fl1cXFxccyonXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyN7JyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnfScsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHZhciBCVUlMVF9JTlMgPSB7J2J1aWx0aW4tbmFtZSc6ICdlYWNoIGluIHdpdGggaWYgZWxzZSB1bmxlc3MgYmluZGF0dHIgYWN0aW9uIGNvbGxlY3Rpb24gZGVidWdnZXIgbG9nIG91dGxldCB0ZW1wbGF0ZSB1bmJvdW5kIHZpZXcgeWllbGQgbG9va3VwJ307XG5cbiAgdmFyIElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEID0ge1xuICAgIGJlZ2luOiAvXCIuKj9cInwnLio/J3xcXFsuKj9cXF18XFx3Ky9cbiAgfTtcblxuICB2YXIgRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCA9IGhsanMuaW5oZXJpdChJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCwge1xuICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgc3RhcnRzOiB7XG4gICAgICAvLyBoZWxwZXIgcGFyYW1zXG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5pbmhlcml0KElERU5USUZJRVJfUExBSU5fT1JfUVVPVEVELCB7cmVsZXZhbmNlOiAwfSldXG4gICAgfVxuICB9KTtcblxuICB2YXIgQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFMgPSBobGpzLmluaGVyaXQoRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCwge1xuICAgIGNsYXNzTmFtZTogJ25hbWUnXG4gIH0pO1xuXG4gIHZhciBCQVNJQ19NVVNUQUNIRV9DT05URU5UUyA9IGhsanMuaW5oZXJpdChFWFBSRVNTSU9OX09SX0hFTFBFUl9DQUxMLCB7XG4gICAgLy8gcmVsZXZhbmNlIDAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgY29uY2VybmluZyBhdXRvLWRldGVjdGlvblxuICAgIHJlbGV2YW5jZTogMFxuICB9KTtcblxuICB2YXIgRVNDQVBFX01VU1RBQ0hFX1dJVEhfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFx7XFx7Lywgc2tpcDogdHJ1ZX07XG4gIHZhciBQUkVWRU5UX0VTQ0FQRV9XSVRIX0FOT1RIRVJfUFJFQ0VFRElOR19CQUNLU0xBU0ggPSB7YmVnaW46IC9cXFxcXFxcXCg/PVxce1xceykvLCBza2lwOiB0cnVlfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaGJzJywgJ2h0bWwuaGJzJywgJ2h0bWwuaGFuZGxlYmFycyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBFU0NBUEVfTVVTVEFDSEVfV0lUSF9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIFBSRVZFTlRfRVNDQVBFX1dJVEhfQU5PVEhFUl9QUkVDRUVESU5HX0JBQ0tTTEFTSCxcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7XFx7IS0tLywgLy0tXFx9XFx9LyksXG4gICAgICBobGpzLkNPTU1FTlQoL1xce1xceyEvLCAvXFx9XFx9LyksXG4gICAgICB7XG4gICAgICAgIC8vIG9wZW4gcmF3IGJsb2NrIFwie3t7e3Jhd319fX0gY29udGVudCBub3QgZXZhbHVhdGVkIHt7e3svcmF3fX19fVwiXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXRhZycsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7XFx7XFx7KD8hXFwvKS8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgICBzdGFydHM6IHtlbmQ6IC9cXHtcXHtcXHtcXHtcXC8vLCByZXR1cm5FbmQ6IHRydWUsIHN1Ykxhbmd1YWdlOiAneG1sJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNsb3NlIHJhdyBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1xce1xce1xcLy8sIGVuZDogL1xcfVxcfVxcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBvcGVuIGJsb2NrIHN0YXRlbWVudFxuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbQkxPQ0tfTVVTVEFDSEVfQ09OVEVOVFNdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBOT1QgaHRtbC1lc2NhcGVkXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtcXHsvLCBlbmQ6IC9cXH1cXH1cXH0vLFxuICAgICAgICBrZXl3b3JkczogQlVJTFRfSU5TLFxuICAgICAgICBjb250YWluczogW0JBU0lDX01VU1RBQ0hFX0NPTlRFTlRTXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgdmFyaWFibGUgb3IgaGVscGVyLWNhbGwgdGhhdCBpcyBodG1sLWVzY2FwZWRcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xcey8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTlMsXG4gICAgICAgIGNvbnRhaW5zOiBbQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFNdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAney0nLFxuICAgICAgICAnLX0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBSQUdNQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ3stIycsIGVuZDogJyMtfSdcbiAgfTtcblxuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbGQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBSQUdNQSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbX2Etel1bXFxcXHdcXCddKid9KSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG5cbiAgdmFyIFJFQ09SRCA9IHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JyxcbiAgICBjb250YWluczogTElTVC5jb250YWluc1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydocyddLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBkbyBtb2R1bGUgaW1wb3J0IGhpZGluZyAnICtcbiAgICAgICdxdWFsaWZpZWQgdHlwZSBkYXRhIG5ld3R5cGUgZGVyaXZpbmcgY2xhc3MgaW5zdGFuY2UgYXMgZGVmYXVsdCAnICtcbiAgICAgICdpbmZpeCBpbmZpeGwgaW5maXhyIGZvcmVpZ24gZXhwb3J0IGNjYWxsIHN0ZGNhbGwgY3BsdXNwbHVzICcgK1xuICAgICAgJ2p2bSBkb3RuZXQgc2FmZSB1bnNhZmUgZmFtaWx5IGZvcmFsbCBtZG8gcHJvYyByZWMnLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIFRvcC1sZXZlbCBjb25zdHJ1Y3Rpb25zLlxuXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtb2R1bGUnLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnbW9kdWxlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJpbXBvcnRcXFxcYicsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2ltcG9ydCBxdWFsaWZpZWQgYXMgaGlkaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtMSVNULCBDT01NRU5UXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxXXFxcXC58OydcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ14oXFxcXHMqKT8oY2xhc3N8aW5zdGFuY2UpXFxcXGInLCBlbmQ6ICd3aGVyZScsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgZmFtaWx5IGluc3RhbmNlIHdoZXJlJyxcbiAgICAgICAgY29udGFpbnM6IFtDT05TVFJVQ1RPUiwgTElTVCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihkYXRhfChuZXcpP3R5cGUpXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdkYXRhIGZhbWlseSB0eXBlIG5ld3R5cGUgZGVyaXZpbmcnLFxuICAgICAgICBjb250YWluczogW1BSQUdNQSwgQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZhdWx0JywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5maXggaW5maXhsIGluZml4cicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW2hsanMuQ19OVU1CRVJfTU9ERSwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGJmb3JlaWduXFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdmb3JlaWduIGltcG9ydCBleHBvcnQgY2NhbGwgc3RkY2FsbCBjcGx1c3BsdXMganZtICcgK1xuICAgICAgICAgICAgICAgICAgJ2RvdG5ldCBzYWZlIHVuc2FmZScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIGhsanMuUVVPVEVfU1RSSU5HX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjIVxcXFwvdXNyXFxcXC9iaW5cXFxcL2VudlxcIHJ1bmhhc2tlbGwnLCBlbmQ6ICckJ1xuICAgICAgfSxcblxuICAgICAgLy8gXCJXaGl0ZXNwYWNlc1wiLlxuXG4gICAgICBQUkFHTUEsXG4gICAgICBQUkVQUk9DRVNTT1IsXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgLy8gVE9ETzogY2hhcmFjdGVycy5cbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBDT05TVFJVQ1RPUixcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJ15bX2Etel1bXFxcXHdcXCddKid9KSxcblxuICAgICAgQ09NTUVOVCxcblxuICAgICAge2JlZ2luOiAnLT58PC0nfSAvLyBObyBtYXJrdXAsIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVpfJF1bYS16QS1aMC05XyRdKic7XG4gIHZhciBJREVOVF9GVU5DX1JFVFVSTl9UWVBFX1JFID0gJyhbKl18W2EtekEtWl8kXVthLXpBLVowLTlfJF0qKSc7XG5cbiAgdmFyIEhBWEVfQkFTSUNfVFlQRVMgPSAnSW50IEZsb2F0IFN0cmluZyBCb29sIER5bmFtaWMgVm9pZCBBcnJheSAnO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYnJlYWsgY2FzZSBjYXN0IGNhdGNoIGNvbnRpbnVlIGRlZmF1bHQgZG8gZHluYW1pYyBlbHNlIGVudW0gZXh0ZXJuICcgK1xuICAgICAgICAgICAgICAgJ2ZvciBmdW5jdGlvbiBoZXJlIGlmIGltcG9ydCBpbiBpbmxpbmUgbmV2ZXIgbmV3IG92ZXJyaWRlIHBhY2thZ2UgcHJpdmF0ZSBnZXQgc2V0ICcgK1xuICAgICAgICAgICAgICAgJ3B1YmxpYyByZXR1cm4gc3RhdGljIHN1cGVyIHN3aXRjaCB0aGlzIHRocm93IHRyYWNlIHRyeSB0eXBlZGVmIHVudHlwZWQgdXNpbmcgdmFyIHdoaWxlICcgK1xuICAgICAgICAgICAgICAgSEFYRV9CQVNJQ19UWVBFUyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAndHJhY2UgdGhpcycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIF8nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgeyBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBpbnRlcnBvbGF0ZS1hYmxlIHN0cmluZ3NcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3N1YnN0JywgLy8gaW50ZXJwb2xhdGlvblxuICAgICAgICAgICAgYmVnaW46ICdcXFxcJCcsIGVuZDogJ1xcXFxXfSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnbWV0YScsIC8vIGNvbXBpbGVyIG1ldGFcbiAgICAgICAgYmVnaW46ICdAOicsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdtZXRhJywgLy8gY29tcGlsZXIgY29uZGl0aW9uYWxzXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIGVycm9yJ31cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyBmdW5jdGlvbiB0eXBlc1xuICAgICAgICBiZWdpbjogJzpbIFxcdF0qJywgZW5kOiAnW15BLVphLXowLTlfIFxcdFxcXFwtPl0nLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIHR5cGVzXG4gICAgICAgIGJlZ2luOiAnOlsgXFx0XSonLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsIC8vIGluc3RhbnRpYXRpb25cbiAgICAgICAgYmVnaW46ICduZXcgKicsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGVudW1zXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdlbnVtJywgZW5kOiAnXFxcXHsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGFic3RyYWN0c1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWJzdHJhY3QnLCBlbmQ6ICdbXFxcXHskXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ2Zyb20gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAndG8gKycsIGVuZDogJ1xcXFxXJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF0sXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDogJ2Fic3RyYWN0IGZyb20gdG8nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ2NsYXNzJywgLy8gY2xhc3Nlc1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGNsYXNzfGludGVyZmFjZSkgKycsIGVuZDogJ1tcXFxceyRdJywgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihleHRlbmRzfGltcGxlbWVudHMpICsnLFxuICAgICAgICAgICAga2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC88XFwvL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuX10rLyxcbiAgICBrZXl3b3JkczogJ2dvdG8gZ29zdWIgcmV0dXJuIGJyZWFrIHJlcGVhdCBsb29wIGNvbnRpbnVlIHdhaXQgYXdhaXQgZGltIHNkaW0gZm9yZWFjaCBkaW10eXBlIGR1cCBkdXBwdHIgZW5kIHN0b3AgbmV3bW9kIGRlbG1vZCBtcmVmIHJ1biBleGdvdG8gb24gbWNhbGwgYXNzZXJ0IGxvZ21lcyBuZXdsYWIgcmVzdW1lIHlpZWxkIG9uZXhpdCBvbmVycm9yIG9ua2V5IG9uY2xpY2sgb25jbWQgZXhpc3QgZGVsZXRlIG1rZGlyIGNoZGlyIGRpcmxpc3QgYmxvYWQgYnNhdmUgYmNvcHkgbWVtZmlsZSBpZiBlbHNlIHBva2Ugd3Bva2UgbHBva2UgZ2V0c3RyIGNoZHBtIG1lbWV4cGFuZCBtZW1jcHkgbWVtc2V0IG5vdGVzZWwgbm90ZWFkZCBub3RlZGVsIG5vdGVsb2FkIG5vdGVzYXZlIHJhbmRvbWl6ZSBub3RldW5zZWwgbm90ZWdldCBzcGxpdCBzdHJyZXAgc2V0ZWFzZSBidXR0b24gY2hnZGlzcCBleGVjIGRpYWxvZyBtbWxvYWQgbW1wbGF5IG1tc3RvcCBtY2kgcHNldCBwZ2V0IHN5c2NvbG9yIG1lcyBwcmludCB0aXRsZSBwb3MgY2lyY2xlIGNscyBmb250IHN5c2ZvbnQgb2Jqc2l6ZSBwaWNsb2FkIGNvbG9yIHBhbGNvbG9yIHBhbGV0dGUgcmVkcmF3IHdpZHRoIGdzZWwgZ2NvcHkgZ3pvb20gZ21vZGUgYm1wc2F2ZSBoc3Zjb2xvciBnZXRrZXkgbGlzdGJveCBjaGtib3ggY29tYm94IGlucHV0IG1lc2JveCBidWZmZXIgc2NyZWVuIGJnc2NyIG1vdXNlIG9ianNlbCBncm9sbCBsaW5lIGNscm9iaiBib3hmIG9ianBybSBvYmptb2RlIHN0aWNrIGdyZWN0IGdyb3RhdGUgZ3NxdWFyZSBncmFkZiBvYmppbWFnZSBvYmpza2lwIG9iamVuYWJsZSBjZWxsb2FkIGNlbGRpdiBjZWxwdXQgbmV3Y29tIHF1ZXJ5Y29tIGRlbGNvbSBjbnZzdG93IGNvbXJlcyBheG9iaiB3aW5vYmogc2VuZG1zZyBjb21ldmVudCBjb21ldmFyZyBzYXJyYXljb252IGNhbGxmdW5jIGNudnd0b3MgY29tZXZkaXNwIGxpYnB0ciBzeXN0ZW0gaHNwc3RhdCBoc3B2ZXIgc3RhdCBjbnQgZXJyIHN0cnNpemUgbG9vcGxldiBzdWJsZXYgaXBhcmFtIHdwYXJhbSBscGFyYW0gcmVmc3RyIHJlZmR2YWwgaW50IHJuZCBzdHJsZW4gbGVuZ3RoIGxlbmd0aDIgbGVuZ3RoMyBsZW5ndGg0IHZhcnR5cGUgZ2V0dGltZSBwZWVrIHdwZWVrIGxwZWVrIHZhcnB0ciB2YXJ1c2Ugbm90ZWluZm8gaW5zdHIgYWJzIGxpbWl0IGdldGVhc2Ugc3RyIHN0cm1pZCBzdHJmIGdldHBhdGggc3RydHJpbSBzaW4gY29zIHRhbiBhdGFuIHNxcnQgZG91YmxlIGFic2YgZXhwZiBsb2dmIGxpbWl0ZiBwb3dmIGdldGVhc2VmIG1vdXNleCBtb3VzZXkgbW91c2V3IGh3bmQgaGluc3RhbmNlIGhkYyBnaW5mbyBvYmppbmZvIGRpcmluZm8gc3lzaW5mbyB0aGlzbW9kIF9faHNwdmVyX18gX19oc3AzMF9fIF9fZGF0ZV9fIF9fdGltZV9fIF9fbGluZV9fIF9fZmlsZV9fIF9kZWJ1ZyBfX2hzcGRlZl9fIGFuZCBvciB4b3Igbm90IHNjcmVlbl9ub3JtYWwgc2NyZWVuX3BhbGV0dGUgc2NyZWVuX2hpZGUgc2NyZWVuX2ZpeGVkc2l6ZSBzY3JlZW5fdG9vbCBzY3JlZW5fZnJhbWUgZ21vZGVfZ2RpIGdtb2RlX21lbSBnbW9kZV9yZ2IwIGdtb2RlX2FscGhhIGdtb2RlX3JnYjBhbHBoYSBnbW9kZV9hZGQgZ21vZGVfc3ViIGdtb2RlX3BpeGVsYSBnaW5mb19teCBnaW5mb19teSBnaW5mb19hY3QgZ2luZm9fc2VsIGdpbmZvX3d4MSBnaW5mb193eTEgZ2luZm9fd3gyIGdpbmZvX3d5MiBnaW5mb192eCBnaW5mb192eSBnaW5mb19zaXpleCBnaW5mb19zaXpleSBnaW5mb193aW54IGdpbmZvX3dpbnkgZ2luZm9fbWVzeCBnaW5mb19tZXN5IGdpbmZvX3IgZ2luZm9fZyBnaW5mb19iIGdpbmZvX3BhbHVzZSBnaW5mb19kaXNweCBnaW5mb19kaXNweSBnaW5mb19jeCBnaW5mb19jeSBnaW5mb19pbnRpZCBnaW5mb19uZXdpZCBnaW5mb19zeCBnaW5mb19zeSBvYmppbmZvX21vZGUgb2JqaW5mb19ibXNjciBvYmppbmZvX2h3bmQgbm90ZW1heCBub3Rlc2l6ZSBkaXJfY3VyIGRpcl9leGUgZGlyX3dpbiBkaXJfc3lzIGRpcl9jbWRsaW5lIGRpcl9kZXNrdG9wIGRpcl9teWRvYyBkaXJfdHYgZm9udF9ub3JtYWwgZm9udF9ib2xkIGZvbnRfaXRhbGljIGZvbnRfdW5kZXJsaW5lIGZvbnRfc3RyaWtlb3V0IGZvbnRfYW50aWFsaWFzIG9iam1vZGVfbm9ybWFsIG9iam1vZGVfZ3VpZm9udCBvYmptb2RlX3VzZWZvbnQgZ3NxdWFyZV9ncmFkIG1zZ290aGljIG1zbWluY2hvIGRvIHVudGlsIHdoaWxlIHdlbmQgZm9yIG5leHQgX2JyZWFrIF9jb250aW51ZSBzd2l0Y2ggY2FzZSBkZWZhdWx0IHN3YnJlYWsgc3dlbmQgZGRpbSBsZGltIGFsbG9jIG1fcGkgcmFkMmRlZyBkZWcycmFkIGVhc2VfbGluZWFyIGVhc2VfcXVhZF9pbiBlYXNlX3F1YWRfb3V0IGVhc2VfcXVhZF9pbm91dCBlYXNlX2N1YmljX2luIGVhc2VfY3ViaWNfb3V0IGVhc2VfY3ViaWNfaW5vdXQgZWFzZV9xdWFydGljX2luIGVhc2VfcXVhcnRpY19vdXQgZWFzZV9xdWFydGljX2lub3V0IGVhc2VfYm91bmNlX2luIGVhc2VfYm91bmNlX291dCBlYXNlX2JvdW5jZV9pbm91dCBlYXNlX3NoYWtlX2luIGVhc2Vfc2hha2Vfb3V0IGVhc2Vfc2hha2VfaW5vdXQgZWFzZV9sb29wJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIHtcbiAgICAgICAgLy8gbXVsdGktbGluZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICd7XCInLCBlbmQ6ICdcIn0nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG5cbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7XG4gICAgICAgIC8vIHByZS1wcm9jZXNzb3JcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnYWRkaW9uIGNmdW5jIGNtZCBjbXBvcHQgY29tZnVuYyBjb25zdCBkZWZjZnVuYyBkZWZmdW5jIGRlZmluZSBlbHNlIGVuZGlmIGVudW0gZXBhY2sgZnVuYyBnbG9iYWwgaWYgaWZkZWYgaWZuZGVmIGluY2x1ZGUgbW9kY2Z1bmMgbW9kZnVuYyBtb2Rpbml0IG1vZHRlcm0gbW9kdWxlIHBhY2sgcGFja29wdCByZWdjbWQgcnVudGltZSB1bmRlZiB1c2Vjb20gdXNlbGliJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGxhYmVsXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwqKFxcXFx3K3xAKSdcbiAgICAgIH0sXG5cbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0gJ2FjdGlvbiBjb2xsZWN0aW9uIGNvbXBvbmVudCBjb25jYXQgZGVidWdnZXIgZWFjaCBlYWNoLWluIGVsc2UgZ2V0IGhhc2ggaWYgaW5wdXQgbGluay10byBsb2MgbG9nIG11dCBvdXRsZXQgcGFydGlhbCBxdWVyeS1wYXJhbXMgcmVuZGVyIHRleHRhcmVhIHVuYm91bmQgdW5sZXNzIHdpdGggeWllbGQgdmlldyc7XG5cbiAgdmFyIEFUVFJfQVNTSUdOTUVOVCA9IHtcbiAgICBpbGxlZ2FsOiAvXFx9XFx9LyxcbiAgICBiZWdpbjogL1thLXpBLVowLTlfXSs9LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiAvW2EtekEtWjAtOV9dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNVQl9FWFBSID0ge1xuICAgIGlsbGVnYWw6IC9cXH1cXH0vLFxuICAgIGJlZ2luOiAvXFwpLywgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgIGtleXdvcmRzOiB7YnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBUQUdfSU5OQVJEUyA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiB7a2V5d29yZDogJ2FzJywgYnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBBVFRSX0FTU0lHTk1FTlQsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgne3shKC0tKT8nLCAnKC0tKT99fScpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1sjXFwvXS8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1thLXpBLVpcXC5cXC1dKy8sXG4gICAgICAgICAgICBrZXl3b3JkczogeydidWlsdGluLW5hbWUnOiBCVUlMVF9JTlN9LFxuICAgICAgICAgICAgc3RhcnRzOiBUQUdfSU5OQVJEU1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xce1xce1thLXpBLVpdW2EtekEtWlxcLV0rLywgZW5kOiAvXFx9XFx9LyxcbiAgICAgICAga2V5d29yZHM6IHtrZXl3b3JkOiAnYXMnLCBidWlsdF9pbjogQlVJTFRfSU5TfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkVSU0lPTiA9ICdIVFRQL1swLTlcXFxcLl0rJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2h0dHBzJ10sXG4gICAgaWxsZWdhbDogJ1xcXFxTJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgVkVSU0lPTiwgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnXFxcXGJcXFxcZHszfVxcXFxiJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15bQS1aXSsgKC4qPykgJyArIFZFUlNJT04gKyAnJCcsIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcgJywgZW5kOiAnICcsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBWRVJTSU9OXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW0EtWl0rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHcnLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbnxcXFxcc3w9JyxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXG5cXFxcbicsXG4gICAgICAgIHN0YXJ0czoge3N1Ykxhbmd1YWdlOiBbXSwgZW5kc1dpdGhQYXJlbnQ6IHRydWV9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGtleXdvcmRzID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgLy8ga2V5d29yZHNcbiAgICAgICchPSAlICU9ICYgJj0gKiAqKiAqKj0gKj0gKm1hcCAnICtcbiAgICAgICcrICs9ICwgLS1idWlsZC1jbGFzcy0tIC0taW1wb3J0LS0gLT0gLiAvIC8vIC8vPSAnICtcbiAgICAgICcvPSA8IDw8IDw8PSA8PSA9ID4gPj0gPj4gPj49ICcgK1xuICAgICAgJ0AgQD0gXiBePSBhYnMgYWNjdW11bGF0ZSBhbGwgYW5kIGFueSBhcC1jb21wb3NlICcgK1xuICAgICAgJ2FwLWRvdGltZXMgYXAtZWFjaCBhcC1lYWNoLXdoaWxlIGFwLWZpbHRlciBhcC1maXJzdCBhcC1pZiBhcC1sYXN0IGFwLW1hcCBhcC1tYXAtd2hlbiBhcC1waXBlICcgK1xuICAgICAgJ2FwLXJlZHVjZSBhcC1yZWplY3QgYXBwbHkgYXMtPiBhc2NpaSBhc3NlcnQgYXNzb2MgYmluIGJyZWFrIGJ1dGxhc3QgJyArXG4gICAgICAnY2FsbGFibGUgY2FsbGluZy1tb2R1bGUtbmFtZSBjYXIgY2FzZSBjZHIgY2hhaW4gY2hyIGNvbGw/IGNvbWJpbmF0aW9ucyBjb21waWxlICcgK1xuICAgICAgJ2NvbXByZXNzIGNvbmQgY29ucyBjb25zPyBjb250aW51ZSBjb3VudCBjdXJyeSBjdXQgY3ljbGUgZGVjICcgK1xuICAgICAgJ2RlZiBkZWZhdWx0LW1ldGhvZCBkZWZjbGFzcyBkZWZtYWNybyBkZWZtYWNyby1hbGlhcyBkZWZtYWNyby9nISBkZWZtYWluIGRlZm1ldGhvZCBkZWZtdWx0aSBkZWZuICcgK1xuICAgICAgJ2RlZm4tYWxpYXMgZGVmbmMgZGVmbnIgZGVmcmVhZGVyIGRlZnNlcSBkZWwgZGVsYXR0ciBkZWxldGUtcm91dGUgZGljdC1jb21wIGRpciAnICtcbiAgICAgICdkaXNhc3NlbWJsZSBkaXNwYXRjaC1yZWFkZXItbWFjcm8gZGlzdGluY3QgZGl2bW9kIGRvIGRvdG8gZHJvcCBkcm9wLWxhc3QgZHJvcC13aGlsZSBlbXB0eT8gJyArXG4gICAgICAnZW5kLXNlcXVlbmNlIGV2YWwgZXZhbC1hbmQtY29tcGlsZSBldmFsLXdoZW4tY29tcGlsZSBldmVuPyBldmVyeT8gZXhjZXB0IGV4ZWMgZmlsdGVyIGZpcnN0ICcgK1xuICAgICAgJ2ZsYXR0ZW4gZmxvYXQ/IGZuIGZuYyBmbnIgZm9yIGZvciogZm9ybWF0IGZyYWN0aW9uIGdlbmV4cHIgJyArXG4gICAgICAnZ2Vuc3ltIGdldCBnZXRhdHRyIGdsb2JhbCBnbG9iYWxzIGdyb3VwLWJ5IGhhc2F0dHIgaGFzaCBoZXggaWQgJyArXG4gICAgICAnaWRlbnRpdHkgaWYgaWYqIGlmLW5vdCBpZi1weXRob24yIGltcG9ydCBpbiBpbmMgaW5wdXQgaW5zdGFuY2U/ICcgK1xuICAgICAgJ2ludGVnZXIgaW50ZWdlci1jaGFyPyBpbnRlZ2VyPyBpbnRlcmxlYXZlIGludGVycG9zZSBpcyBpcy1jb2xsIGlzLWNvbnMgaXMtZW1wdHkgaXMtZXZlbiAnICtcbiAgICAgICdpcy1ldmVyeSBpcy1mbG9hdCBpcy1pbnN0YW5jZSBpcy1pbnRlZ2VyIGlzLWludGVnZXItY2hhciBpcy1pdGVyYWJsZSBpcy1pdGVyYXRvciBpcy1rZXl3b3JkIGlzLW5lZyBpcy1ub25lICcgK1xuICAgICAgJ2lzLW5vdCBpcy1udW1lcmljIGlzLW9kZCBpcy1wb3MgaXMtc3RyaW5nIGlzLXN5bWJvbCBpcy16ZXJvIGlzaW5zdGFuY2UgaXNsaWNlIGlzc3ViY2xhc3MgJyArXG4gICAgICAnaXRlciBpdGVyYWJsZT8gaXRlcmF0ZSBpdGVyYXRvcj8ga2V5d29yZCBrZXl3b3JkPyBsYW1iZGEgbGFzdCBsZW4gbGV0ICcgK1xuICAgICAgJ2xpZiBsaWYtbm90IGxpc3QqIGxpc3QtY29tcCBsb2NhbHMgbG9vcCBtYWNyby1lcnJvciBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIG1hY3JvZXhwYW5kLWFsbCAnICtcbiAgICAgICdtYXAgbWF4IG1lcmdlLXdpdGggbWV0aG9kLWRlY29yYXRvciBtaW4gbXVsdGktZGVjb3JhdG9yIG11bHRpY29tYmluYXRpb25zIG5hbWUgbmVnPyBuZXh0ICcgK1xuICAgICAgJ25vbmU/IG5vbmxvY2FsIG5vdCBub3QtaW4gbm90PyBudGggbnVtZXJpYz8gb2N0IG9kZD8gb3BlbiAnICtcbiAgICAgICdvciBvcmQgcGFydGl0aW9uIHBlcm11dGF0aW9ucyBwb3M/IHBvc3Qtcm91dGUgcG9zdHdhbGsgcG93IHByZXdhbGsgcHJpbnQgJyArXG4gICAgICAncHJvZHVjdCBwcm9maWxlL2NhbGxzIHByb2ZpbGUvY3B1IHB1dC1yb3V0ZSBxdWFzaXF1b3RlIHF1b3RlIHJhaXNlIHJhbmdlIHJlYWQgcmVhZC1zdHIgJyArXG4gICAgICAncmVjdXJzaXZlLXJlcGxhY2UgcmVkdWNlIHJlbW92ZSByZXBlYXQgcmVwZWF0ZWRseSByZXByIHJlcXVpcmUgcmVzdCByb3VuZCByb3V0ZSAnICtcbiAgICAgICdyb3V0ZS13aXRoLW1ldGhvZHMgcndtIHNlY29uZCBzZXEgc2V0LWNvbXAgc2V0YXR0ciBzZXR2IHNvbWUgc29ydGVkIHN0cmluZyAnICtcbiAgICAgICdzdHJpbmc/IHN1bSBzd2l0Y2ggc3ltYm9sPyB0YWtlIHRha2UtbnRoIHRha2Utd2hpbGUgdGVlIHRyeSB1bmxlc3MgJyArXG4gICAgICAndW5xdW90ZSB1bnF1b3RlLXNwbGljaW5nIHZhcnMgd2FsayB3aGVuIHdoaWxlIHdpdGggd2l0aCogd2l0aC1kZWNvcmF0b3Igd2l0aC1nZW5zeW1zICcgK1xuICAgICAgJ3hpIHhvciB5aWVsZCB5aWVsZC1mcm9tIHplcm8/IHppcCB6aXAtbG9uZ2VzdCB8IHw9IH4nXG4gICB9O1xuXG4gIHZhciBTWU1CT0xTVEFSVCA9ICdhLXpBLVpfXFxcXC0hLj8rKj08PiYjXFwnJztcbiAgdmFyIFNZTUJPTF9SRSA9ICdbJyArIFNZTUJPTFNUQVJUICsgJ11bJyArIFNZTUJPTFNUQVJUICsgJzAtOS87Ol0qJztcbiAgdmFyIFNJTVBMRV9OVU1CRVJfUkUgPSAnWy0rXT9cXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5cbiAgdmFyIFNIRUJBTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdeIyEnLCBlbmQ6ICckJ1xuICB9O1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIoW1R0XXJ1ZXxbRmZdYWxzZXxuaWx8Tm9uZSlcXGIvXG4gIH07XG4gIHZhciBDT0xMRUNUSU9OID0ge1xuICAgIGJlZ2luOiAnW1xcXFxbXFxcXHtdJywgZW5kOiAnW1xcXFxdXFxcXH1dJ1xuICB9O1xuICB2YXIgSElOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFxeJyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgSElOVF9DT0wgPSBobGpzLkNPTU1FTlQoJ1xcXFxeXFxcXHsnLCAnXFxcXH0nKTtcbiAgdmFyIEtFWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzpdezEsMn0nICsgU1lNQk9MX1JFXG4gIH07XG4gIHZhciBMSVNUID0ge1xuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgdmFyIEJPRFkgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FID0ge1xuICAgIGtleXdvcmRzOiBrZXl3b3JkcyxcbiAgICBsZXhlbWVzOiBTWU1CT0xfUkUsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIHZhciBERUZBVUxUX0NPTlRBSU5TID0gW0xJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMLCBTWU1CT0xdO1xuXG4gIExJU1QuY29udGFpbnMgPSBbaGxqcy5DT01NRU5UKCdjb21tZW50JywgJycpLCBOQU1FLCBCT0RZXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydoeWxhbmcnXSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1NIRUJBTkcsIExJU1QsIFNUUklORywgSElOVCwgSElOVF9DT0wsIENPTU1FTlQsIEtFWSwgQ09MTEVDVElPTiwgTlVNQkVSLCBMSVRFUkFMXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RBUlRfQlJBQ0tFVCA9ICdcXFxcWyc7XG4gIHZhciBFTkRfQlJBQ0tFVCA9ICdcXFxcXSc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydpNyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIFNvbWUga2V5d29yZHMgbW9yZSBvciBsZXNzIHVuaXF1ZSB0byBJNywgZm9yIHJlbGV2YW5jZS5cbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGtpbmQ6XG4gICAgICAgICd0aGluZyByb29tIHBlcnNvbiBtYW4gd29tYW4gYW5pbWFsIGNvbnRhaW5lciAnICtcbiAgICAgICAgJ3N1cHBvcnRlciBiYWNrZHJvcCBkb29yICcgK1xuICAgICAgICAvLyBjaGFyYWN0ZXJpc3RpYzpcbiAgICAgICAgJ3NjZW5lcnkgb3BlbiBjbG9zZWQgbG9ja2VkIGluc2lkZSBnZW5kZXIgJyArXG4gICAgICAgIC8vIHZlcmI6XG4gICAgICAgICdpcyBhcmUgc2F5IHVuZGVyc3RhbmQgJyArXG4gICAgICAgIC8vIG1pc2Mga2V5d29yZDpcbiAgICAgICAgJ2tpbmQgb2YgcnVsZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgICAgICBiZWdpbjogU1RBUlRfQlJBQ0tFVCwgZW5kOiBFTkRfQlJBQ0tFVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXihWb2x1bWV8Qm9va3xQYXJ0fENoYXB0ZXJ8U2VjdGlvbnxUYWJsZSlcXGIvLFxuICAgICAgICBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gUnVsZSBkZWZpbml0aW9uXG4gICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgcmVsZXZhbmNlLlxuICAgICAgICBiZWdpbjogL14oQ2hlY2t8Q2Fycnkgb3V0fFJlcG9ydHxJbnN0ZWFkIG9mfFRvfFJ1bGV8V2hlbnxCZWZvcmV8QWZ0ZXIpXFxiLyxcbiAgICAgICAgZW5kOiAnOicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy9SdWxlIG5hbWVcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXChUaGlzJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IFNUQVJUX0JSQUNLRVQsIGVuZDogRU5EX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCInJydcIiwgZW5kOiBcIicnJ1wiLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICB9LCB7XG4gICAgICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RvbWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXFsrLywgZW5kOiAvXFxdKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlthLXowLTlcXFtcXF1fXFwuLV0rXFxzKj1cXHMqLywgZW5kOiAnJCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16MC05XFxbXFxdX1xcLi1dKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnKSxcbiAgICAgICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXFxib258b2ZmfHRydWV8ZmFsc2V8eWVzfG5vXFxiL1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IC9cXCRbXFx3XFxkXCJdW1xcd1xcZF9dKi99LFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8oW1xcK1xcLV0rKT9bXFxkXStfW1xcZF9dKy9cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG5cbiAgdmFyIEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnICtcbiAgICAgICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJyArXG4gICAgICAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnICtcbiAgICAgICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICcgK1xuICAgICAgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJyArXG4gICAgICAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJyArXG4gICAgICAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJyArXG4gICAgICAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnICtcbiAgICAgICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICcgK1xuICAgICAgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICcgK1xuICAgICAgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnICtcbiAgICAgICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnICtcbiAgICAgICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICcgK1xuICAgICAgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJyArXG4gICAgICAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJyArXG4gICAgICAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnICtcbiAgICAgICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICcgK1xuICAgICAgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJyArXG4gICAgICAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnICtcbiAgICAgICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhICcgK1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwga2V5d29yZHNcbiAgICAgICdiZWdpbl9wcm92aWRlciAmYmVnaW5fcHJvdmlkZXIgZW5kX3Byb3ZpZGVyIGJlZ2luX3NoZWxsIGVuZF9zaGVsbCBiZWdpbl90ZW1wbGF0ZSBlbmRfdGVtcGxhdGUgc3Vic3QgYXNzZXJ0IHRvdWNoICcgK1xuICAgICAgJ3NvZnRfdG91Y2ggcHJvdmlkZSBub19kZXAgZnJlZSBpcnBfaWYgaXJwX2Vsc2UgaXJwX2VuZGlmIGlycF93cml0ZSBpcnBfcmVhZCcsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UgJyArXG4gICAgICAvLyBJUlBGOTAgc3BlY2lhbCBidWlsdF9pbnNcbiAgICAgICdJUlBfQUxJR04gaXJwX2hlcmUnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLkNPTU1FTlQoJ2JlZ2luX2RvYycsICdlbmRfZG9jJywge3JlbGV2YW5jZTogMTB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoPz1cXFxcYnxcXFxcK3xcXFxcLXxcXFxcLikoPz1cXFxcLlxcXFxkfFxcXFxkKSg/OlxcXFxkKyk/KD86XFxcXC4/XFxcXGQqKSg/OltkZV1bKy1dP1xcXFxkKyk/XFxcXGJcXFxcLj8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyDQntC/0YDQtdC00LXQu9C10L3QuNC1INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QslxuICB2YXIgVU5ERVJTQ09SRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBXyFdW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0qXCI7XG5cbiAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQuNC80LXQvSDRhNGD0L3QutGG0LjQuVxuICB2YXIgRlVOQ1RJT05fTkFNRV9JREVOVF9SRSA9IFwiW0EtWmEtetCQLdCv0LAt0Y/RkdCBX11bQS1aYS160JAt0K/QsC3Rj9GR0IFfMC05XSpcIjtcblxuICAvLyBrZXl3b3JkIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEID1cbiAgICBcImFuZCDQuCBlbHNlINC40L3QsNGH0LUgZW5kZXhjZXB0IGVuZGZpbmFsbHkgZW5kZm9yZWFjaCDQutC+0L3QtdGG0LLRgdC1IGVuZGlmINC60L7QvdC10YbQtdGB0LvQuCBlbmR3aGlsZSDQutC+0L3QtdGG0L/QvtC60LAgXCIgK1xuICAgIFwiZXhjZXB0IGV4aXRmb3IgZmluYWxseSBmb3JlYWNoINCy0YHQtSBpZiDQtdGB0LvQuCBpbiDQsiBub3Qg0L3QtSBvciDQuNC70LggdHJ5IHdoaWxlINC/0L7QutCwIFwiO1xuXG4gIC8vIFNZU1JFUyBDb25zdGFudHNcbiAgdmFyIHN5c3Jlc19jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTX1JJR0hUX1RZUEVfRURJVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNfUklHSFRfVFlQRV9GVUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU19SSUdIVF9UWVBFX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19NT0RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfTk9fQUNDRVNTX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19OT19BQ0NFU1NfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0FERF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19BRERfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0NIQU5HRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19DSEFOR0VfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0RFTEVURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19ERUxFVEVfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0VYRUNVVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfRVhFQ1VURV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfTk9fQUNDRVNTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX05PX0FDQ0VTU19SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkFUSUZZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1JBVElGWV9SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFV19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19WSUVXX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfQ0hBTkdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9DSEFOR0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9FWElTVFNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRlVMTF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfVFlQRV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FCT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BQ0NFUFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0FERF9BVFRBQ0hNRU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DSEFOR0VfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ0hBTkdFX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NIQU5HRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DT05USU5VRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ1JFQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DUkVBVEVfVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9ERUxFVEVfQVRUQUNITUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0RJU0FCTEVfREVMRUdBVEVfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRU5BQkxFX0RFTEVHQVRFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQ1JZUFRJT05fQllfQ0VSVElGSUNBVEVfQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FTkNSWVBUSU9OX0JZX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FWFBPUlRfV0lUSE9VVF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9JTVBPUlRfV0lUSF9VTkxPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0lNUE9SVF9XSVRIT1VUX1VOTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTElGRV9DWUNMRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DS19GT1JfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9MT0NLX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTUFSS19BU19SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01BUktfQVNfVU5SRUFERUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTU9ESUZZX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PVkVfVE9fQVJDSElWRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfT0ZGX0VOQ1JZUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUEVSRk9STSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUkVDT1ZFUl9GUk9NX0xPQ0FMX0NPUFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFU1RPUkVfRlJPTV9BUkNISVZFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9SRVZJU0lPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfU0VORF9CWV9NQUlMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TSUdOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9TVEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVU5MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9VTkxPQ0tfRlJPTV9TRVJWRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZFUlNJT05fVklTSUJJTElUWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVklFV19TSEFET1dfQ09QWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfV09SS0ZMT1dfREVTQ1JJUFRJT05fTU9ESUZZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9XUklURV9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJVkVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRERfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURESVRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FERElUSU9OQUxfUEFSQU1TX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX0VORF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX1JFQURfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FESVRJT05BTF9KT0JfU1RBUlRfREFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURJVElPTkFMX0pPQl9TVEFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9BRERJTkdfVVNFUl9UT19HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQURESU5HX1VTRVJfVE9fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9DUkVBVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9EQVRBQkFTRV9VU0VSX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfQ1JFQVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfREVMRVRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREFUQUJBU0VfVVNFUl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fQ09NUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9VU0VSX0ZST01fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX1VTRVJfRlJPTV9HUk9VUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19GSUxURVJFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX0ZJTFRFUkVSX1JFU1RSSUNUSU9OX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1BSSVZJTEVHRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUFJJVklMRUdFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1JJR0hUU19BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX01BSU5fU0VSVkVSX0NIQU5HRURfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfSVNfUFVCTElDX0NIQU5HRURfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX1BVQkxJQ19DSEFOR0VEX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX0ZJTFRFUkVSX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9SRVNUUklDVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUFJJVklMRUdFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19QUklWSUxFR0VfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUklHSFRTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19SSUdIVFNfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0NSRUFUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9DUkVBVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfU0VSVkVSX0xPR0lOX0RFTEVUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9ERUxFVElPTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfQ0FURUdPUllfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NBVEVHT1JZX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NPTVBfVElUTEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfRlVMTF9OQU1FX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19GVUxMX05BTUVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1BBUkVOVF9HUk9VUF9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfUEFSRU5UX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfQVVUSF9UWVBFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0FVVEhfVFlQRV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0xPR0lOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1VTRVJfU1RBVFVTX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX1NUQVRVU19BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VU0VSX1BBU1NXT1JEX0NIQU5HRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTF9BQ0NFUFRfQ09ORElUSU9OX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExfVVNFUlNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX1NFUlZFUl9HUk9VUF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExPV0VEX0FDQ0VTU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTE9XRURfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVBQX1ZJRVdFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BUFBST1ZJTkdfU0lHTkFUVVJFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FQUFJPVklOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FTU0lTVEFOVF9TVUJTVElUVUVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVNTSVNUQU5UX1NVQlNUSVRVRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0NPTVBPTkVOVF9UT0tFTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9GT0xERVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0pPQiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9UQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX0VOQ09ERURfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhfRU5DT0RFRF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX05PVkVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9QQVNTV09SRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX1dJTkRPV1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhFTlRJQ0FUSU5HX1NJR05BVFVSRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIRU5USUNBVElOR19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT19OVU1FUkFUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fU1RST05HX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX0FMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfQUxMX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1NJR05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNBR0VfV09SS19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0VfQU5ZV0hFUkVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1NJR05JTkdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX09OX1dPUktfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkVHSU5fREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkxBQ0tfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9CTFVFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQlROX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTENVTEFURURfUk9MRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9CVVRUT05fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBTExfVFlQRV9WQVJJQUJMRV9QUk9HUkFNX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQU5DRUxfTUVTU0FHRV9GVU5DVElPTl9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBUkRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0FSRF9SRUZFUkVOQ0VfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX0FORF9FTkNSWVBUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DRVJUSUZJQ0FURV9UWVBFX1JFUVVJU0lURV9TSUdOX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9EQVRFX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0ZMT0FUX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX0lOVEVHRVJfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0hFQ0tfUEFSQU1fVkFMVUVfUElDS19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9SRUVGUkVOQ0VfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0xPU0VEX1JFQ09SRF9GTEFHX1ZBTFVFX0ZFTUlOSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DTE9TRURfUkVDT1JEX0ZMQUdfVkFMVUVfTUFTQ1VMSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0FETUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0RFVkVMT1BFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9ET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfRVhURVJOQUxfRVhFQ1VUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfUkVQT1JUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX1NDUklQVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0FDQ0VTUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX1JFUVVJU0lURV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfRVhDTFVERV9DT01QT05FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX1JFQ09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTUVOVF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NTU9OX1NFVFRJTkdTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QX0NPREVfR1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfR1JPVVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfQURNSU5fQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfREVWRUxPUEVSX0NPTVBPTkVOVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0RPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0VET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9FWFRFUk5BTF9FWEVDVVRBQkxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9PVEhFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfUkVGRVJFTkNFX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRUZFUkVOQ0VTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9SRVBPUlRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9VUkwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVFNfUkVNT1RFX1NFUlZFUlNfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05ESVRJT05fQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX0ZJUk1fU1RBVFVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfRklSTV9TVEFUVVNfSU5ESVZJRFVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX0RPTlRfUkVQTElDQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9TRVJWRVJfU1RBVFVTX1JFUExJQ0FURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OVEVOVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9CT09MRUFOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfREFURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX0ZMT0FUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfSU5URUdFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX1BJQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9TVFJJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9URVhUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfVkFSSUFOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9DTE9TRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9GT1JNQVRfREFURV9PTkxZX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfT1BFTl9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFVElNRV9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFQV9BQ0NFU1NfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVNDUklQVElPTl9MT0NBTElaRV9JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVTQ1JJUFRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDFfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUMl9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQzX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDRfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUNV9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQ2X1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9EQVRBU0VUX0tFWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUQUlMX1BJQ0tfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9fTk9UX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPX05PVF9VU0VfT05fVklFV19BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX09OX1ZJRVdfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfU1RPUkFHRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9DVU1FTlRfVEVNUExBVEVTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9VQkxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfRklMRV9PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfQ0xPU0VfUFJPQ0VTU19PQlNFUlZfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19BUFBMSUNBVElPTl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX0NSRUFURV9TRVZFUkFMX1BST0NFU1NFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19FWFRFTlNJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfT0JTRVJWRVJfQllfUFJPQ0VTU19UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX1JFUExBQ0VfU1BFQ19DSEFSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19VU0VfUExVR0lOU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19WSUVXX0RPQ1VNRU5UX09QRU5FRF9UT19FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0FSRF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0NBUkRfVFlQRVNfTElOS19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19DRVJUSUZJQ0FURV9BTkRfUEFTU1dPUkRfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0VSVElGSUNBVEVfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19LSU5EX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0tJTkRTX0JZX1RFTVBMQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX01BTkFHRV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19OT05FX0VOQ09ERV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX05VTUJFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19QQVNTV09SRF9FTkNPREVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19SRUFET05MWV9BQ0NFU1NfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSEVMTF9MSUZFX1RZUEVfVklFV19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TSVpFX1JFU1RSSUNUSU9OX1BSSU9SSVRZX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfQ0hFQ0tfQUNDRVNTX1JJR0hUU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0NPTVBVVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU1RPUkFHRV9EQVRBQkFTRV9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfRURJVF9JTl9TVE9SQUdFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfTE9DQUxfUEFUSF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX1NIQVJFRF9TT1VSQ0VfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19URU1QTEFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19UWVBFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1ZFUlNJT05fREVTSUdOX1NUQUdFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVkVSU0lPTl9PQlNPTEVURV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1dSSVRFX0FDQ0VTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVNfUkVGRVJFTkNFX0NPREVfU0VMRUNURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkNPREVfQ0VSVElGSUNBVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FTkRfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRU5VTUVSQVRJT05fVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VURV9BQ0NFU1NfUklHSFRTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhFQ1VUSVZFX0ZJTEVfU1RPUkFHRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWElTVF9DT05TVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhJU1RfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9MT0NLX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfTE9DS19UWVBFX1dJVEhfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhQT1JUX0xPQ0tfVFlQRV9XSVRIT1VUX0xPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfVkVSU0lPTl9UWVBFX0xBU1QgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9WRVJTSU9OX1RZUEVfTEFTVF9BQ1RJVkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYVEVOU0lPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1RZUEVfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX0NPTU1PTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfVFlQRV9VU0VSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX1VTRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1ZBTFVFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GTE9BVF9OVU1CRVJfRk9STUFUX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZMT0FUX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfQVVUSE9SX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfS0lORF9BTllfT0JKRUNUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfRURPQ1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX0pPQlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX1RBU0tTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9DT01NT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfRkFWT1JJVEVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9JTkJPWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfT1VUQk9YIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9RVUlDS19MQVVOQ0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX1NFQVJDSCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfU0hPUlRDVVRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9VU0VSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GUk9NX0RJQ1RJT05BUllfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVMTF9TVUJTVElUVVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTExfU1VCU1RJVFVURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBTkNFTF9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBVEVHT1JZX1NZU1RFTSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fQ0FURUdPUllfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlVOQ1RJT05fRkFJTFVSRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX1NBVkVfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HRU5FUkFURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUkVFTl9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0FDQ09VTlRfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DQVRFR09SWV9OT1JNQUxfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfTk9STUFMX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0NBVEVHT1JZX1NFUlZJQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfU0VSVklDRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DT01NT05fQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZFUl9DT0RFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZJQ0VfQ0FURUdPUllfRklFTERfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1VTRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISURERU5fTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISUdIX0xWTF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElTVE9SWV9BQ1RJT05fQ1JFQVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hJU1RPUllfQUNUSU9OX0RFTEVURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISVNUT1JZX0FDVElPTl9FRElUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hPVVJfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lEU1BTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTUFHRV9NT0RFX0dSRVlTQ0FMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1BR0VfTU9ERV9NT05PQ0hST01FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX0hJR0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lNUE9SVEFOQ0VfTE9XIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX05PUk1BTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5fREVTSUdOX1ZFUlNJT05fU1RBVEVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5DT01JTkdfV09SS19SVUxFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5UX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTlRFR0VSX05VTUJFUl9GT1JNQVRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5URUdFUl9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX0dFTkVSQVRFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1BVQkxJQ19ST0xFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19SRU1PVEVfVVNFUl9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSVNfUkVNT1RFX1VTRVJfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1NUT1JFRF9SRVFVSVNJVEVfU1RPUkVEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JVEFMSUNfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX0NPTlRST0xfSk9CIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9LSU5EX05PVElDRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX0FCT1JURUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9TVEFURV9DT01QTEVURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX1NUQVRFX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0NSRUFURV9TSEFET1dfQ09QSUVTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19ERUZBVUxUX0VET0NfTElGRV9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExfVEVQTEFURVNfQUxMT1dFRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExPV19MSUZFX0NZQ0xFX1NUQUdFX0NIQU5HSU5HX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX0FMTE9XX01VTFRJUExFX0FDVElWRV9WRVJTSU9OU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19TSEFSRV9BQ0NFU19SSUdIVFNfQllfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19FRE9DX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX1NJR05FUlNfUkVRVUlTSVRFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LT0RfSU5QVVRfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTEFTVF9VUERBVEVfREFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElGRV9DWUNMRV9TVEFSVF9TVEFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElMQUNfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9ET0NVTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9FRE9DIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX0ZPTERFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX1RBU0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJU1RfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUllfTUFJTl9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BSU5fVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NQU5VQUxfRU5VTV9NRVRIT0RfRkxBRyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX0NPTVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFTVEVSX1RBQkxFX1JFQ19JRF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFYSU1JWkVEX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQVRURU5USU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfQ09ORklSTUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfRVJST1JfQ0FQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUVTU0FHRV9JTkZPUk1BVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5JTUlaRURfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NSU5VVEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTU9EVUxFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05JVE9SSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NT05USF9GT1JNQVRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfTE9DQUxJWkVfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVfU0lOR1VMQVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05BTUVBTl9JTlBVVF9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ORUdBVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk8gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1BJQ0tfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1NJR05BVFVSRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTkVfQUNDRVNTX1JJR0hUU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTk9QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX01BU0NVTElORSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9STUFMX0FDQ0VTU19SSUdIVFNfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1JNQUxfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT1RJQ0VfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTV9TVFJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTUVSQVRJT05fQVVUT19OT1RfU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0FVVE9fU1RST05HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0ZST01fRElDVE9OQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJJQ19UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTVJFUV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT0JTT0xFVEVfVkVSU0lPTl9TVEFURV9QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUVfRkVNSU5JTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9NQVNDVUxJTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09QVElPTkFMX0ZPUk1fQ09NUF9SRVFDT0RFX1BSRUZJWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JBTkdFX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1JJR0lOQUxSRUZfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVGX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09VUkZJUk1fVkFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVRHT0lOR19XT1JLX1JVTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX05FR0FUSVZFX1JFU1VMVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19QT1NJVElWRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BJQ0tfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExBTl9TVEFUVVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BMQVRGT1JNX1ZFUlNJT05fQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUExVR0lOU19TRVRUSU5HU19ERVNDUklQVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9TSVRJVkVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9XRVJfVE9fQ1JFQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QT1dFUl9UT19TSUdOX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QUklPUklUWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUVVBTElGSUVEX1RBU0tfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUNTVEFUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRURfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfSURfVF9SRUZfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZfUkVRVUlTSVRFU19SRUZFUkVOQ0VfQ09ERV9TRUxFQ1RFRF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9DUkVBVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9ERUxFVEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9SRUNPUkRfSElTVE9SWV9NT0RJRllfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRV9UWVBFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VTX0FERF9QQVJBTVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRkVSRU5DRVNfRElTUExBWV9SRVFVSVNJVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfU1RBVFVTX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFTU9URV9TRVJWRVJfVFlQRV9NQUlOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfU0VSVkVSX1RZUEVfU0VDT05EQVJZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfVVNFUl9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9BUFBfRURJVE9SX0lOVEVSTkFMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfQkFTRV9SRVBPUlRfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9CQVNFX1JFUE9SVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1NDUklQVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1RFTVBMQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfVklFV0VSX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9BTExPV19DT01QT05FTlRfREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX0FMTE9XX1JFQ09SRF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfQUxMT1dfU0VSVkVSX0NPTVBPTkVOVF9ERUZBVUxUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9BVkFJTEFCTEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfRURJVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9ISURERU5fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfTk9UX0FWQUlMQUJMRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTU9ERV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9TRUNUSU9OX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfVFlQRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9CWV9VTklUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfRk9STUFUX0RBVEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9EQVRFX1RJTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfTEVGVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9SSUdIVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9XSVRIT1VUX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0FDVElPTlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0JVVFRPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQlVUVE9OUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fQ0FSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTEgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTYgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMTkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyMyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUyNCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEUzIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFNSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU2IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFOCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU5IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVTX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfTlVNQkVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SSUdIVF9BTElHTk1FTlRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9MRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1NURVBfQUZURVJfUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX0FORF9DT05ESVRJT05fUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX09SX0NPTkRJVElPTl9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1RZUEVfQ09NUExFWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9QQVJBTExFTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfVFlQRV9TRVJJQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCREFUQVNFVERFU0NfUE9TSVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NCVklFV1NERVNDX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQ1JJUFRfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSF9CWV9URVhUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19DT01QT05FTlRfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfQ1JJVEVSSUFfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0VET0NfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfRk9MREVSX0NPTlRFTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0pPQl9DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfVEFTS19DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNPTkRfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQUNUSU9OU19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ0FSRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzFfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF8yX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfM19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF81X1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfNl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1JFRkVSRU5DRV9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEVfT05MWV9DSElMRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1RZUEVfU0VMRUNUQUJMRV9XSVRIX0NISUxEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUxFQ1RfVFlQRV9VTlNMRUNUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVkVSX1RZUEVfTUFJTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VSVklDRV9VU0VSX0NBVEVHT1JZX0ZJRUxEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRVRUSU5HU19VU0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TSUdOQVRVUkVfQU5EX0VOQ09ERV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJR05BVFVSRV9DRVJUSUZJQ0FURV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NJTkdVTEFSX1RJVExFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0FVVEhFTlRJRklDQVRJT05fRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TUUxfU0VSVkVSX0VOQ09ERV9BVVRIRU5USUZJQ0FUSU9OX0ZMQUdfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBTkRBUlRfUk9VVEVfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQU5EQVJUX1JPVVRFX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFOREFSVF9ST1VURVNfR1JPVVBTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFURV9SRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0FDVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NMT1NFRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1BMQU5fREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0FVVE9DTEVBTklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0JMVUVfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfQ09NUExFVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9HUkVFTl9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9PUkFOR0VfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfUFVSUExFX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX1JFRF9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9TVVNQRU5EIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfWUVMTE9XX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1REUk9VVEVfU0hPV19UT19VU0VSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RPUkFHRV9UWVBFX0ZJTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUT1JBR0VfVFlQRV9TUUxfU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJS0VPVVRfTElGRV9DWUNMRV9TVEFHRV9EUkFXX1NUWUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfRk9STUFUX0xFRlRfQUxJR05fQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX0ZPUk1BVF9SSUdIVF9BTElHTl9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUUklOR19SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NVQlRBU0tfQkxPQ0tfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9TRVRUSU5HX0NVUlJFTlRfVVNFUl9QQVJBTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1lTVEVNX1NFVFRJTkdfRU1QVFlfVkFMVUVfUEFSQU1fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9WRVJTSU9OX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfQUNDRVNTX1RZUEVfQUxMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX0FMTF9NRU1CRVJTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX01BTlVBTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19FTkNPREVfVFlQRV9DRVJUSUZJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX0NFUlRJRklDQVRJT05fQU5EX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX05PTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfRU5DT0RFX1RZUEVfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfUk9VVEVfQUxMX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19ST1VURV9BTkRfQ09ORElUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1JPVVRFX09SX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9BQk9SVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTVBMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0NPTlRJTlVFRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9DT05UUk9MIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX0lOSVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfU1RBVEVfV09SS0lORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19USVRMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19UWVBFU19HUk9VUFNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfVFlQRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFTVBMQVRFU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9EQVRBQkFTRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0RFVl9TWVNURU1fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX0RBVEFCQVNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19NQUlOX0RCX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfU1lTVEVNX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfTlVNRVJJQ19SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVYVF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UWVBFX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOREVGSU5FRF9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOSVRTX1NFQ1RJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VOU1RPUkVEX0RBVEFfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRV9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BQ0NPVU5UX1RZUEVfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BRERJVElPTkFMX0lORk9STUFUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0FORF9HUk9VUF9JRF9GUk9NX1BTRVVET1JFRkVSRU5DRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9DQVRFR09SWV9OT1JNQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ09NTU9OX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NPTU1PTl9DQVRFR09SWV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0ZVTExfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9HUk9VUF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0xPR0lOX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JFTU9URV9TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfUklHSFRTX1RfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVkVSX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVklDRV9DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TRVJWSUNFX0NBVEVHT1JZX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0FETUlOSVNUUkFUT1JfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfQURNSU5JU1RSQVRPUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfREVWRUxPUEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RJU0FCTEVEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1NZU1RFTV9ERVZFTE9QRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfVVNFUl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1VTRVJfTkFNRV9ERVBSRUNBVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1RZUEVfRklFTERfVkFMVUVfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19DT05UUk9MTEVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19JU19NQUlOX1NFUlZFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFR0lTVFJBVElPTl9DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19TWVNURU1fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1VTRVJfQUNDRVNTX1JJR0hUU19UWVBSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0FVVEhFTlRJQ0FUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0NPTVBPTkVOVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVVNFUl9HUk9VUF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVklFV19DRVJUSUZJQ0FURVNfQUNUSU9OX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1ZJRVdfREVGQVVMVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9WSUVXX0RFRkFVTFRfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVklFV0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XQUlUSU5HX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XSVpBUkRfRk9STV9MQUJFTF9URVNUX1NUUklORyAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dJWkFSRF9RVUVSWV9QQVJBTV9IRUlHSFRfRVRBTE9OX1NUUklORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV0laQVJEX1JFRkVSRU5DRV9DT01NRU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1JVTEVTX0RFU0NSSVBUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1RJTUVfQ0FMRU5EQVJfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktfV09SS0ZMT1dfSEFSRF9ST1VURV9UWVBFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRV9DT0RFX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19XT1JLRkxPV19TT0ZUX1JPVVRFX1RZUEVfVkFMVUVfQ09ERV9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktGTE9XX1JPVVRFX1RZUFJfSEFSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS0ZMT1dfUk9VVEVfVFlQUl9TT0ZUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9YTUxfRU5DT0RJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1hSRUNfU1RBVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWFJFQ0lEX0ZJRUxEX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PXzJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19OT19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX05PX1RfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVNfVkFMVUUgXCI7XG5cbiAgLy8gQmFzZSBjb25zdGFudFxuICB2YXIgYmFzZV9jb25zdGFudHMgPSBcIkNSIEZBTFNFIG5pbCBOT19WQUxVRSBOVUxMIFRBQiBUUlVFIFlFU19WQUxVRSBcIjtcblxuICAvLyBCYXNlIGdyb3VwIG5hbWVcbiAgdmFyIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgPVxuICAgIFwiQURNSU5JU1RSQVRPUlNfR1JPVVBfTkFNRSBDVVNUT01JWkVSU19HUk9VUF9OQU1FIERFVkVMT1BFUlNfR1JPVVBfTkFNRSBTRVJWSUNFX1VTRVJTX0dST1VQX05BTUUgXCI7XG5cbiAgLy8gRGVjaXNpb24gYmxvY2sgcHJvcGVydGllc1xuICB2YXIgZGVjaXNpb25fYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiREVDSVNJT05fQkxPQ0tfRklSU1RfT1BFUkFORF9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19OQU1FX1BST1BFUlRZIERFQ0lTSU9OX0JMT0NLX09QRVJBVElPTl9QUk9QRVJUWSBcIiArXG4gICAgXCJERUNJU0lPTl9CTE9DS19SRVNVTFRfVFlQRV9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19TRUNPTkRfT1BFUkFORF9QUk9QRVJUWSBcIjtcblxuICAvLyBGaWxlIGV4dGVuc2lvblxuICB2YXIgZmlsZV9leHRlbnNpb25fY29uc3RhbnRzID1cbiAgICBcIkFOWV9GSUxFX0VYVEVOVElPTiBDT01QUkVTU0VEX0RPQ1VNRU5UX0VYVEVOU0lPTiBFWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT04gXCIgK1xuICAgIFwiU0hPUlRfQ09NUFJFU1NFRF9ET0NVTUVOVF9FWFRFTlNJT04gU0hPUlRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OIFwiO1xuXG4gIC8vIEpvYiBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBqb2JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiSk9CX0JMT0NLX0FCT1JUX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FGVEVSX1FVRVJZX1BBUkFNRVRFUlNfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0JFRk9SRV9RVUVSWV9QQVJBTUVURVJTX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0NSRUFURURfSk9CU19QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0VYRUNVVElPTl9SRVNVTFRTX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19JU19QQVJBTExFTF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfSVNfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19KT0JfVEVYVF9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfTkVFRF9TSUdOX09OX1BFUkZPUk1fUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBMYW5ndWFnZSBjb2RlXG4gIHZhciBsYW5ndWFnZV9jb2RlX2NvbnN0YW50cyA9IFwiRU5HTElTSF9MQU5HVUFHRV9DT0RFIFJVU1NJQU5fTEFOR1VBR0VfQ09ERSBcIjtcblxuICAvLyBMYXVuY2hpbmcgZXh0ZXJuYWwgYXBwbGljYXRpb25zXG4gIHZhciBsYXVuY2hpbmdfZXh0ZXJuYWxfYXBwbGljYXRpb25zX2NvbnN0YW50cyA9XG4gICAgXCJzbUhpZGRlbiBzbU1heGltaXplZCBzbU1pbmltaXplZCBzbU5vcm1hbCB3bU5vIHdtWWVzIFwiO1xuXG4gIC8vIExpbmsga2luZFxuICB2YXIgbGlua19raW5kX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTElOS19LSU5EIFwiICtcbiAgICBcIkRPQ1VNRU5UX0xJTktfS0lORCBcIiArXG4gICAgXCJFRE9DVU1FTlRfTElOS19LSU5EIFwiICtcbiAgICBcIkZPTERFUl9MSU5LX0tJTkQgXCIgK1xuICAgIFwiSk9CX0xJTktfS0lORCBcIiArXG4gICAgXCJSRUZFUkVOQ0VfTElOS19LSU5EIFwiICtcbiAgICBcIlRBU0tfTElOS19LSU5EIFwiO1xuXG4gIC8vIExvY2sgdHlwZVxuICB2YXIgbG9ja190eXBlX2NvbnN0YW50cyA9XG4gICAgXCJDT01QT05FTlRfVE9LRU5fTE9DS19UWVBFIEVET0NVTUVOVF9WRVJTSU9OX0xPQ0tfVFlQRSBcIjtcblxuICAvLyBNb25pdG9yIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIG1vbml0b3JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTU9OSVRPUl9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lOVEVSVkFMX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfSU5URVJWQUxfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19TRUFSQ0hfU0NSSVBUX1BST1BFUlRZIFwiO1xuXG4gIC8vIE5vdGljZSBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiTk9USUNFX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVF9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX0dST1VQX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19DUkVBVEVEX05PVElDRVNfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfTk9USUNFX1RFWFRfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX1BFUkZPUk1FUl9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfU1VCSkVDVF9QUk9QRVJUWSBcIjtcblxuICAvLyBPYmplY3QgZXZlbnRzXG4gIHZhciBvYmplY3RfZXZlbnRzX2NvbnN0YW50cyA9XG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlck9wZW4gXCIgK1xuICAgIFwiZHNlQWZ0ZXJTY3JvbGwgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGUgXCIgK1xuICAgIFwiZHNlQWZ0ZXJVcGRhdGVPdXRPZlRyYW5zYWN0aW9uIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VCZWZvcmVEZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZU9uRGVsZXRlRXJyb3IgXCIgK1xuICAgIFwiZHNlT25PcGVuUmVjb3JkIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZU9uVXBkYXRlUmF0aWZpZWRSZWNvcmQgXCIgK1xuICAgIFwiZHNlT25WYWxpZERlbGV0ZSBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcInJlT25DaGFuZ2UgXCIgK1xuICAgIFwicmVPbkNoYW5nZVZhbHVlcyBcIiArXG4gICAgXCJTRUxFQ1RJT05fQkVHSU5fUk9VVEVfRVZFTlQgXCIgK1xuICAgIFwiU0VMRUNUSU9OX0VORF9ST1VURV9FVkVOVCBcIjtcblxuICAvLyBPYmplY3QgcGFyYW1zXG4gIHZhciBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyA9XG4gICAgXCJDVVJSRU5UX1BFUklPRF9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJQUkVWSU9VU19DQVJEX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTSE9XX1JFQ09SRF9QUk9QRVJUSUVTX0ZPUk0gXCI7XG5cbiAgLy8gT3RoZXJcbiAgdmFyIG90aGVyX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfUklHSFRTX1NFVFRJTkdfRElBTE9HX0NPREUgXCIgK1xuICAgIFwiQURNSU5JU1RSQVRPUl9VU0VSX0NPREUgXCIgK1xuICAgIFwiQU5BTFlUSUNfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiYXNydEhpZGVMb2NhbCBcIiArXG4gICAgXCJhc3J0SGlkZVJlbW90ZSBcIiArXG4gICAgXCJDQUxDVUxBVEVEX1JPTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIkNPTVBPTkVOVFNfUkVGRVJFTkNFX0RFVkVMT1BFUl9WSUVXX0NPREUgXCIgK1xuICAgIFwiRENUU19URVNUX1BST1RPQ09MU19GT0xERVJfUEFUSCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRCBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFQURZX0FQUFJPVklOR0xZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVfRURPQ19WRVJTSU9OX0FMUkVEWV9TSUdORUQgXCIgK1xuICAgIFwiRV9FRE9DX1ZFUlNJT05fQUxSRURZX1NJR05FRF9CWV9VU0VSIFwiICtcbiAgICBcIkVET0NfVFlQRVNfQ09ERV9SRVFVSVNJVEVfRklFTERfTkFNRSBcIiArXG4gICAgXCJFRE9DVU1FTlRTX0FMSUFTX05BTUUgXCIgK1xuICAgIFwiRklMRVNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRklMVEVSX09QRVJBTkRTX0RFTElNSVRFUiBcIiArXG4gICAgXCJGSUxURVJfT1BFUkFUSU9OU19ERUxJTUlURVIgXCIgK1xuICAgIFwiRk9STUNBUkRfTkFNRSBcIiArXG4gICAgXCJGT1JNTElTVF9OQU1FIFwiICtcbiAgICBcIkdFVF9FWFRFTkRFRF9ET0NVTUVOVF9FWFRFTlNJT05fQ1JFQVRJT05fTU9ERSBcIiArXG4gICAgXCJHRVRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OX0lNUE9SVF9NT0RFIFwiICtcbiAgICBcIklOVEVHUkFURURfUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9BUFBMSUNBVElPTl9ST0xFIFwiICtcbiAgICBcIklTX0JVSUxERVJfQVBQTElDQVRJT05fUk9MRTIgXCIgK1xuICAgIFwiSVNfQlVJTERFUl9VU0VSUyBcIiArXG4gICAgXCJJU0JTWVNERVYgXCIgK1xuICAgIFwiTE9HX0ZPTERFUl9QQVRIIFwiICtcbiAgICBcIm1iQ2FuY2VsIFwiICtcbiAgICBcIm1iTm8gXCIgK1xuICAgIFwibWJOb1RvQWxsIFwiICtcbiAgICBcIm1iT0sgXCIgK1xuICAgIFwibWJZZXMgXCIgK1xuICAgIFwibWJZZXNUb0FsbCBcIiArXG4gICAgXCJNRU1PUllfREFUQVNFVF9ERVNSSVBUSU9OU19GSUxFTkFNRSBcIiArXG4gICAgXCJtck5vIFwiICtcbiAgICBcIm1yTm9Ub0FsbCBcIiArXG4gICAgXCJtclllcyBcIiArXG4gICAgXCJtclllc1RvQWxsIFwiICtcbiAgICBcIk1VTFRJUExFX1NFTEVDVF9ESUFMT0dfQ09ERSBcIiArXG4gICAgXCJOT05PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJPUEVSQVRJTkdfUkVDT1JEX0ZMQUdfRkVNSU5JTkUgXCIgK1xuICAgIFwiT1BFUkFUSU5HX1JFQ09SRF9GTEFHX01BU0NVTElORSBcIiArXG4gICAgXCJQUk9GSUxJTkdfU0VUVElOR1NfQ09NTU9OX1NFVFRJTkdTX0NPREVfVkFMVUUgXCIgK1xuICAgIFwiUFJPR1JBTV9JTklUSUFURURfTE9PS1VQX0FDVElPTiBcIiArXG4gICAgXCJyYXREZWxldGUgXCIgK1xuICAgIFwicmF0RWRpdCBcIiArXG4gICAgXCJyYXRJbnNlcnQgXCIgK1xuICAgIFwiUkVQT1JUX1RZUEUgXCIgK1xuICAgIFwiUkVRVUlSRURfUElDS19WQUxVRVNfVkFSSUFCTEUgXCIgK1xuICAgIFwicm1DYXJkIFwiICtcbiAgICBcInJtTGlzdCBcIiArXG4gICAgXCJTQlJURV9QUk9HSURfREVWIFwiICtcbiAgICBcIlNCUlRFX1BST0dJRF9SRUxFQVNFIFwiICtcbiAgICBcIlNUQVRJQ19ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTVVBQUkVTU19FTVBUWV9URU1QTEFURV9DUkVBVElPTiBcIiArXG4gICAgXCJTWVNURU1fVVNFUl9DT0RFIFwiICtcbiAgICBcIlVQREFURV9ESUFMT0dfREFUQVNFVCBcIiArXG4gICAgXCJVU0VEX0lOX09CSkVDVF9ISU5UX1BBUkFNIFwiICtcbiAgICBcIlVTRVJfSU5JVElBVEVEX0xPT0tVUF9BQ1RJT04gXCIgK1xuICAgIFwiVVNFUl9OQU1FX0ZPUk1BVCBcIiArXG4gICAgXCJVU0VSX1NFTEVDVElPTl9SRVNUUklDVElPTlMgXCIgK1xuICAgIFwiV09SS0ZMT1dfVEVTVF9QUk9UT0NPTFNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRUxTX1NVQlRZUEVfQ09OVFJPTF9OQU1FIFwiICtcbiAgICBcIkVMU19GT0xERVJfS0lORF9DT05UUk9MX05BTUUgXCIgK1xuICAgIFwiUkVQRUFUX1BST0NFU1NfQ1VSUkVOVF9PQkpFQ1RfRVhDRVBUSU9OX05BTUUgXCI7XG5cbiAgLy8gUHJpdmlsZWdlc1xuICB2YXIgcHJpdmlsZWdlc19jb25zdGFudHMgPVxuICAgIFwiUFJJVklMRUdFX0NPTVBPTkVOVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfREVWRUxPUE1FTlRfRVhQT1JUIFwiICtcbiAgICBcIlBSSVZJTEVHRV9ERVZFTE9QTUVOVF9JTVBPUlQgXCIgK1xuICAgIFwiUFJJVklMRUdFX0RPQ1VNRU5UX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfRVNEIFwiICtcbiAgICBcIlBSSVZJTEVHRV9GT0xERVJfREVMRVRFIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJQUklWSUxFR0VfTUFOQUdFX1JFUExJQ0FUSU9OIFwiICtcbiAgICBcIlBSSVZJTEVHRV9NQU5BR0VfU0VTU0lPTl9TRVJWRVIgXCIgK1xuICAgIFwiUFJJVklMRUdFX09CSkVDVF9GVUxMX0FDQ0VTUyBcIiArXG4gICAgXCJQUklWSUxFR0VfT0JKRUNUX1ZJRVcgXCIgK1xuICAgIFwiUFJJVklMRUdFX1JFU0VSVkVfTElDRU5TRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0NVU1RPTUlaRSBcIiArXG4gICAgXCJQUklWSUxFR0VfU1lTVEVNX0RFVkVMT1AgXCIgK1xuICAgIFwiUFJJVklMRUdFX1NZU1RFTV9JTlNUQUxMIFwiICtcbiAgICBcIlBSSVZJTEVHRV9UQVNLX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfVVNFUl9QTFVHSU5fU0VUVElOR1NfQ1VTVE9NSVpFIFwiICtcbiAgICBcIlBSSVZJTEVHRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUHNldWRvcmVmZXJlbmNlIGNvZGVcbiAgdmFyIHBzZXVkb3JlZmVyZW5jZV9jb2RlX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfVFlQRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkFMTF9BVkFJTEFCTEVfUFJJVklMRUdFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJBTExfUkVQTElDQVRFX0NPTVBPTkVOVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQVZBSUxBQkxFX0RFVkVMT1BFUlNfQ09NUE9ORU5UU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJDT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkZJTFRSQVRFUl9TRVRUSU5HU19DT05GTElDVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiR1JPVVBTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlJFQ0VJVkVfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVGRVJFTkNFX1JFUVVJU0lURV9QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZFUkVOQ0VfUkVRVUlTSVRFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUZUWVBFU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRVBMSUNBVElPTl9TRUFOQ0VTX0RJQVJZX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNFTkRfUFJPVE9DT0xfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1VCU1RJVFVURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTVEVNX1NFVFRJTkdTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVOSVRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlVTRVJTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlZJRVdFUlNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIElTQkNlcnRpZmljYXRlVHlwZSB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9JU0JDZXJ0aWZpY2F0ZVR5cGVfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDRVJUSUZJQ0FURV9UWVBFX0VOQ1JZUFQgXCIgK1xuICAgIFwiQ0VSVElGSUNBVEVfVFlQRV9TSUdOIFwiICtcbiAgICBcIkNFUlRJRklDQVRFX1RZUEVfU0lHTl9BTkRfRU5DUllQVCBcIjtcblxuICAvLyBSZXF1aXNpdGUgSVNCRURvY1N0b3JhZ2VUeXBlIHZhbHVlc1xuICB2YXIgcmVxdWlzaXRlX0lTQkVEb2NTdG9yYWdlVHlwZV92YWx1ZXNfY29uc3RhbnRzID1cbiAgICBcIlNUT1JBR0VfVFlQRV9GSUxFIFwiICtcbiAgICBcIlNUT1JBR0VfVFlQRV9OQVNfQ0lGUyBcIiArXG4gICAgXCJTVE9SQUdFX1RZUEVfU0FQRVJJT04gXCIgK1xuICAgIFwiU1RPUkFHRV9UWVBFX1NRTF9TRVJWRVIgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIENvbXBUeXBlMiB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9jb21wVHlwZTJfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX0RPQ1VNRU5UU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1RBU0tTX1ZBTFVFIFwiICtcbiAgICBcIkNPTVBUWVBFMl9SRVFVSVNJVEVfRk9MREVSU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX1JFRkVSRU5DRVNfVkFMVUUgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIG5hbWVcbiAgdmFyIHJlcXVpc2l0ZV9uYW1lX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfQ09NUFRZUEUyIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9BVkFJTEFCTEVfRk9SX1dFQiBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfQ09NTU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0NPTU1PTl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9GSVJNX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfU0VSVkVSX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfQ09OVEVOVFMgXCIgK1xuICAgIFwiU1lTUkVRX0RBVEVfT1BFTiBcIiArXG4gICAgXCJTWVNSRVFfREFURV9DTE9TRSBcIiArXG4gICAgXCJTWVNSRVFfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9ET1VCTEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQUNDRVNTX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfQVVUSE9SIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0NSRUFURUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfREVMRUdBVEVfUklHSFRTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VESVRPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNPREVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNSWVBUSU9OX1BMVUdJTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VOQ1JZUFRJT05fUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JUX0RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRVhQT1JURVIgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19MSUZFX1NUQUdFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTE9DS0VEX0ZPUl9TRVJWRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19NT0RJRklFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX05PVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfUVVBTElGSUVEX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZX0VOQ1JZUFRJT05fUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU0VTU0lPTl9LRVlfRU5DUllQVElPTl9QTFVHSU5fVkVSU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdOQVRVUkVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TSUdORUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19BUkNISVZFX1NUT1JBR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfQ0hFQ0tfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0NPTVBVVEVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfRURJVF9JTl9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0VYRUNVVElWRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0ZVTkNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0lOSVRJQUxJWkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0xPQ0FMX1BBVEggXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0FQRVJJT05fREFUQUJBU0VfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRUFSQ0hfQllfVEVYVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TRVJWRVJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19TSEFSRURfU09VUkNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19URVhUX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfREVTQ1JJUFRJT05fTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9PTl9FWEVDVVRFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9TRUNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTkFNRV9JTl9TSU5HVUxBUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX05BTUVfSU5fU0lOR1VMQVJfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTlVNRVJBVElPTl9NRVRIT0QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9QU0VVRE9fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9JU19MRUFESU5HIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX0lTX1JFUVVJUkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fQ0hBTkdFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fU0VMRUNUX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1ZJRVdfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0FVVEhPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0NSQyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0RBVEEgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FRElUT1IgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FWFBPUlRfREFURSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0VYUE9SVEVSIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fSElEREVOIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTElGRV9TVEFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fTk9URSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NJR05BVFVSRV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0lHTkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fU0laRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NPVVJDRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1RFWFRfTU9ESUZJRUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NLSU5EX0RFRkFVTFRfVkVSU0lPTl9TVEFURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9GT0xERVJfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfR1JPVVBfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0hFTFAgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfUEFSQU1fREVGX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX0lERU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1RFWFQgXCIgK1xuICAgIFwiU1lTUkVRX0dST1VQX0NBVEVHT1JZIFwiICtcbiAgICBcIlNZU1JFUV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTEFTVF9VUERBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0xFQURFUl9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX0xJTkVfTlVNQkVSIFwiICtcbiAgICBcIlNZU1JFUV9NQUlOX1JFQ09SRF9JRCBcIiArXG4gICAgXCJTWVNSRVFfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfTk9URSBcIiArXG4gICAgXCJTWVNSRVFfT1JJR0lOQUxfUkVDT1JEIFwiICtcbiAgICBcIlNZU1JFUV9PVVJfRklSTSBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX0xPR0lORyBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX0JBVENIX1NJWkUgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NRTF9QUk9GSUxJTkdfRU5BQkxFRCBcIiArXG4gICAgXCJTWVNSRVFfUFJPRklMSU5HX1NFVFRJTkdTX1NUQVJUX0xPR0dFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVDT1JEX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9GSUVMRF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX0ZPUk1BVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9HRU5FUkFURUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfTEVOR1RIIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1BSRUNJU0lPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9TVE9SRUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfVklFVyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfT05fRVhFQ1VURSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX09OX0VYRUNVVEVfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUREX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQ09NTU9OX1NFVFRJTkdTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9ESVNQTEFZX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9FVkVOVF9URVhUIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9NQUlOX0xFQURJTkdfUkVGIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0lOX1NJTkdVTEFSX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9OVU1FUkFUSU9OX01FVEhPRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfSVNfQ09OVFJPTCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0ZJTFRFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0xFQURJTkcgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX09OX0NIQU5HRV9FWElTVFMgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9TRUxFQ1RfS0lORCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfQ0FSRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfSVNfTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX05BTUVfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRkVSRU5DRV9UWVBFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9TVEFURSBcIiArXG4gICAgXCJTWVNSRVFfU1RBVNCVIFwiICtcbiAgICBcIlNZU1JFUV9TWVNURU1fU0VUVElOR1NfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVRX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVQgXCIgK1xuICAgIFwiU1lTUkVRX1VOSVRfSUQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJfR1JPVVBTX0dST1VQX0ZVTExfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUl9HUk9VUFNfR1JPVVBfU0VSVkVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0FVVEhFTlRJQ0FUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19DT01QT05FTlRfVVNFUl9JU19QVUJMSUMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0RPTUFJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfRlVMTF9VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0dST1VQIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19JU19NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfTE9HSU4gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1JFRkVSRU5DRV9VU0VSX0lTX1BVQkxJQyBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfU1RBVFVTIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX0lORk8gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfQ0VSVElGSUNBVEVfU1VCSkVDVF9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1RIVU1CUFJJTlQgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfREVGQVVMVF9DRVJUSUZJQ0FURSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9HTE9CQUxfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9MT0dJTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9NQUlOX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9XT1JLX1JVTEVTX0ZPTERFUl9JRCBcIjtcblxuICAvLyBSZXN1bHRcbiAgdmFyIHJlc3VsdF9jb25zdGFudHMgPSBcIlJFU1VMVF9WQVJfTkFNRSBSRVNVTFRfVkFSX05BTUVfRU5HIFwiO1xuXG4gIC8vIFJ1bGUgaWRlbnRpZmljYXRpb25cbiAgdmFyIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzID1cbiAgICBcIkFVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX0lEX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNBTlRfQ0hBTkdFX09VUkZJUk1fUkVRVUlTSVRFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfQ0hBTkdJTkdfUkVGRVJFTkNFX1JFQ09SRF9VU0VfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19DT0RFX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX0RFTEVUSU5HX1JFRkVSRU5DRV9SRUNPUkRfVVNFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfRklMVFJBVEVSX0NIQU5HRVNfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUNPUkRfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRUZFUkVOQ0VfSU5URVJWQUxfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19SRVFVSVJFRF9EQVRBX0ZVTExORVNTX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVRVUlSRURfUkVRVUlTSVRFU19GVUxMTkVTU19SVUxFX0lEIFwiICtcbiAgICBcIk1BS0VfUkVDT1JEX1VOUkFUSUZJRURfUlVMRV9JRCBcIiArXG4gICAgXCJSRVNUT1JFX0FVVE9fTlVNRVJBVElPTl9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9GSVJNX0NPTlRFWFRfRlJPTV9SRUNPUkRfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfRklSU1RfUkVDT1JEX0lOX0xJU1RfRk9STV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9JRFNQU19WQUxVRV9SVUxFX0lEIFwiICtcbiAgICBcIlNFVF9ORVhUX0NPREVfVkFMVUVfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9CT1VORFNfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfT1VSRklSTV9SRVFVSVNJVEVfUlVMRV9JRCBcIjtcblxuICAvLyBTY3JpcHQgYmxvY2sgcHJvcGVydGllc1xuICB2YXIgc2NyaXB0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIlNDUklQVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX0JFRk9SRV9TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTQ1JJUFRfQkxPQ0tfRVhFQ1VUSU9OX1JFU1VMVFNfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX1NDUklQVF9QUk9QRVJUWSBcIjtcblxuICAvLyBTdWJ0YXNrIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiU1VCVEFTS19CTE9DS19BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FGVEVSX0ZJTklTSF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FTU0lHTl9QQVJBTVNfRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BVFRBQ0hNRU5UU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRFRF9UQVNLX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQ1JFQVRJT05fRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lNUE9SVEFOQ0VfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JTklUSUFUT1JfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JU19SRUxBVElWRV9BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfSk9CU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1BBUkFMTEVMX1JPVVRFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUEVSRk9STUVSU19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1JFTEFUSVZFX0FCT1JUX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19SRUxBVElWRV9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUkVRVUlSRV9TSUdOX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NURVBfQ09OVFJPTF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NVQkpFQ1RfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19UQVNLX0NPTlRST0xfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19URVhUX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVU5MT0NLX0FUVEFDSE1FTlRTX09OX1NUT1BfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19VU0VfU1RBTkRBUkRfUk9VVEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19XQUlUX0ZPUl9UQVNLX0NPTVBMRVRFX1BST1BFUlRZIFwiO1xuXG4gIC8vIFN5c3RlbSBjb21wb25lbnRcbiAgdmFyIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzID1cbiAgICBcIlNZU0NPTVBfQ09OVFJPTF9KT0JTIFwiICtcbiAgICBcIlNZU0NPTVBfRk9MREVSUyBcIiArXG4gICAgXCJTWVNDT01QX0pPQlMgXCIgK1xuICAgIFwiU1lTQ09NUF9OT1RJQ0VTIFwiICtcbiAgICBcIlNZU0NPTVBfVEFTS1MgXCI7XG5cbiAgLy8gU3lzdGVtIGRpYWxvZ3NcbiAgdmFyIHN5c3RlbV9kaWFsb2dzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVCBcIiArXG4gICAgXCJTWVNETEdfQ1JFQVRFX0VET0NVTUVOVF9WRVJTSU9OIFwiICtcbiAgICBcIlNZU0RMR19DVVJSRU5UX1BFUklPRCBcIiArXG4gICAgXCJTWVNETEdfRURJVF9GVU5DVElPTl9IRUxQIFwiICtcbiAgICBcIlNZU0RMR19FRE9DVU1FTlRfS0lORFNfRk9SX1RFTVBMQVRFIFwiICtcbiAgICBcIlNZU0RMR19FWFBPUlRfTVVMVElQTEVfRURPQ1VNRU5UUyBcIiArXG4gICAgXCJTWVNETEdfRVhQT1JUX1NJTkdMRV9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX0lNUE9SVF9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX01VTFRJUExFX1NFTEVDVCBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfQUNDRVNTX1JJR0hUUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfREVGQVVMVF9SSUdIVFMgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX0ZJTFRFUl9DT05ESVRJT04gXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX1NJR05fUklHSFRTIFwiICtcbiAgICBcIlNZU0RMR19TRVRVUF9UQVNLX09CU0VSVkVSUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVEFTS19ST1VURSBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVVNFUlNfTElTVCBcIiArXG4gICAgXCJTWVNETEdfU0lHTl9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX1NJR05fTVVMVElQTEVfRURPQ1VNRU5UUyBcIjtcblxuICAvLyBTeXN0ZW0gcmVmZXJlbmNlIG5hbWVzXG4gIHZhciBzeXN0ZW1fcmVmZXJlbmNlX25hbWVzX2NvbnN0YW50cyA9XG4gICAgXCJTWVNSRUZfQUNDRVNTX1JJR0hUU19UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfQURNSU5JU1RSQVRJT05fSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfQUxMX0FWQUlMQUJMRV9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BTExfQVZBSUxBQkxFX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX0FMTF9SRVBMSUNBVElOR19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9BVkFJTEFCTEVfREVWRUxPUEVSU19DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DQUxFTkRBUl9FVkVOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0NPTVBPTkVOVF9UT0tFTl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRfVE9LRU5TIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DT05TVEFOVFMgXCIgK1xuICAgIFwiU1lTUkVGX0RBVEFfUkVDRUlWRV9QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfREFUQV9TRU5EX1BST1RPQ09MIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTIFwiICtcbiAgICBcIlNZU1JFRl9ESUFMT0dTX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VESVRPUlMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NfVFlQRVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRF9UWVBFU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9DQVJEUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9LSU5EUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVNUExBVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfVEVYVF9TVE9SQUdFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1ZJRVdTIFwiICtcbiAgICBcIlNZU1JFRl9GSUxURVJFUl9TRVRVUF9DT05GTElDVFMgXCIgK1xuICAgIFwiU1lTUkVGX0ZJTFRSQVRFUl9TRVRUSU5HX0NPTkZMSUNUUyBcIiArXG4gICAgXCJTWVNSRUZfRk9MREVSX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0ZPTERFUlMgXCIgK1xuICAgIFwiU1lTUkVGX0ZVTkNUSU9OX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfRlVOQ1RJT05fUEFSQU1TIFwiICtcbiAgICBcIlNZU1JFRl9GVU5DVElPTlMgXCIgK1xuICAgIFwiU1lTUkVGX0pPQl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9MSU5LUyBcIiArXG4gICAgXCJTWVNSRUZfTE9DQUxJWkFUSU9OX0RJQ1RJT05BUlkgXCIgK1xuICAgIFwiU1lTUkVGX0xPQ0FMSVpBVElPTl9MQU5HVUFHRVMgXCIgK1xuICAgIFwiU1lTUkVGX01PRFVMRVMgXCIgK1xuICAgIFwiU1lTUkVGX1BSSVZJTEVHRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFQ09SRF9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9SRUZFUkVOQ0VfUkVRVUlTSVRFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFX1RZUEVfVklFV1MgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRV9UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFU19SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9SRU1PVEVfU0VSVkVSUyBcIiArXG4gICAgXCJTWVNSRUZfUkVQTElDQVRJT05fU0VTU0lPTlNfTE9HIFwiICtcbiAgICBcIlNZU1JFRl9SRVBMSUNBVElPTl9TRVNTSU9OU19QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfUkVQT1JUUyBcIiArXG4gICAgXCJTWVNSRUZfUk9MRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JPVVRFX0JMT0NLX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfUk9VVEVfQkxPQ0tTIFwiICtcbiAgICBcIlNZU1JFRl9TQ1JJUFRTIFwiICtcbiAgICBcIlNZU1JFRl9TRUFSQ0hFUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UUyBcIiArXG4gICAgXCJTWVNSRUZfU0VSVkVSX0VWRU5UU19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9TVEFOREFSRF9ST1VURV9HUk9VUFMgXCIgK1xuICAgIFwiU1lTUkVGX1NUQU5EQVJEX1JPVVRFUyBcIiArXG4gICAgXCJTWVNSRUZfU1RBVFVTRVMgXCIgK1xuICAgIFwiU1lTUkVGX1NZU1RFTV9TRVRUSU5HUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX0tJTkRTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19TSUdOQVRVUkVTIFwiICtcbiAgICBcIlNZU1JFRl9UQVNLUyBcIiArXG4gICAgXCJTWVNSRUZfVU5JVFMgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSX0dST1VQU19SRUZFUkVOQ0UgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJfU1VCU1RJVFVUSU9OIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSUyBcIiArXG4gICAgXCJTWVNSRUZfVVNFUlNfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFRl9WSUVXRVJTIFwiICtcbiAgICBcIlNZU1JFRl9XT1JLSU5HX1RJTUVfQ0FMRU5EQVJTIFwiO1xuXG4gIC8vIFRhYmxlIG5hbWVcbiAgdmFyIHRhYmxlX25hbWVfY29uc3RhbnRzID1cbiAgICBcIkFDQ0VTU19SSUdIVFNfVEFCTEVfTkFNRSBcIiArXG4gICAgXCJFRE1TX0FDQ0VTU19UQUJMRV9OQU1FIFwiICtcbiAgICBcIkVET0NfVFlQRVNfVEFCTEVfTkFNRSBcIjtcblxuICAvLyBUZXN0XG4gIHZhciB0ZXN0X2NvbnN0YW50cyA9XG4gICAgXCJURVNUX0RFVl9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfREVWX1NZU1RFTV9DT0RFIFwiICtcbiAgICBcIlRFU1RfRURNU19EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19NQUlOX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX01BSU5fREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0VETVNfU0VDT05EX0NPREUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX1NFQ09ORF9EQl9OQU1FIFwiICtcbiAgICBcIlRFU1RfRURNU19TWVNURU1fQ09ERSBcIiArXG4gICAgXCJURVNUX0lTQjVfTUFJTl9DT0RFIFwiICtcbiAgICBcIlRFU1RfSVNCNV9TRUNPTkRfQ09ERSBcIiArXG4gICAgXCJURVNUX1NRTF9TRVJWRVJfMjAwNV9OQU1FIFwiICtcbiAgICBcIlRFU1RfU1FMX1NFUlZFUl9OQU1FIFwiO1xuXG4gIC8vIFVzaW5nIHRoZSBkaWFsb2cgd2luZG93c1xuICB2YXIgdXNpbmdfdGhlX2RpYWxvZ193aW5kb3dzX2NvbnN0YW50cyA9XG4gICAgXCJBVFRFTlRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJjYnNDb21tYW5kTGlua3MgXCIgK1xuICAgIFwiY2JzRGVmYXVsdCBcIiArXG4gICAgXCJDT05GSVJNQVRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJFUlJPUl9DQVBUSU9OIFwiICtcbiAgICBcIklORk9STUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwibXJDYW5jZWwgXCIgK1xuICAgIFwibXJPayBcIjtcblxuICAvLyBVc2luZyB0aGUgZG9jdW1lbnRcbiAgdmFyIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgPVxuICAgIFwiRURPQ19WRVJTSU9OX0FDVElWRV9TVEFHRV9DT0RFIFwiICtcbiAgICBcIkVET0NfVkVSU0lPTl9ERVNJR05fU1RBR0VfQ09ERSBcIiArXG4gICAgXCJFRE9DX1ZFUlNJT05fT0JTT0xFVEVfU1RBR0VfQ09ERSBcIjtcblxuICAvLyBVc2luZyB0aGUgRUEgYW5kIGVuY3J5cHRpb25cbiAgdmFyIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgPVxuICAgIFwiY3BEYXRhRW5jaXBoZXJtZW50RW5hYmxlZCBcIiArXG4gICAgXCJjcERpZ2l0YWxTaWduYXR1cmVFbmFibGVkIFwiICtcbiAgICBcImNwSUQgXCIgK1xuICAgIFwiY3BJc3N1ZXIgXCIgK1xuICAgIFwiY3BQbHVnaW5WZXJzaW9uIFwiICtcbiAgICBcImNwU2VyaWFsIFwiICtcbiAgICBcImNwU3ViamVjdE5hbWUgXCIgK1xuICAgIFwiY3BTdWJqU2ltcGxlTmFtZSBcIiArXG4gICAgXCJjcFZhbGlkRnJvbURhdGUgXCIgK1xuICAgIFwiY3BWYWxpZFRvRGF0ZSBcIjtcblxuICAvLyBVc2luZyB0aGUgSVNCTC1lZGl0b3JcbiAgdmFyIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgPVxuICAgIFwiSVNCTF9TWU5UQVggXCIgKyBcIk5PX1NZTlRBWCBcIiArIFwiWE1MX1NZTlRBWCBcIjtcblxuICAvLyBXYWl0IGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgPVxuICAgIFwiV0FJVF9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX0lTX1JFTEFUSVZFX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIldBSVRfQkxPQ0tfTkFNRV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCI7XG5cbiAgLy8gU1lTUkVTIENvbW1vblxuICB2YXIgc3lzcmVzX2NvbW1vbl9jb25zdGFudHMgPVxuICAgIFwiU1lTUkVTX0NPTU1PTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1QgXCIgK1xuICAgIFwiU1lTUkVTX01CRlVOQyBcIiArXG4gICAgXCJTWVNSRVNfU0JEQVRBIFwiICtcbiAgICBcIlNZU1JFU19TQkdVSSBcIiArXG4gICAgXCJTWVNSRVNfU0JJTlRGIFwiICtcbiAgICBcIlNZU1JFU19TQlJFRkRTQyBcIiArXG4gICAgXCJTWVNSRVNfU1FMRVJST1JTIFwiICtcbiAgICBcIlNZU1JFU19TWVNDT01QIFwiO1xuXG4gIC8vINCa0L7QvdGB0YLQsNC90YLRiyA9PT4gYnVpbHRfaW5cbiAgdmFyIENPTlNUQU5UUyA9XG4gICAgc3lzcmVzX2NvbnN0YW50cyArXG4gICAgYmFzZV9jb25zdGFudHMgK1xuICAgIGJhc2VfZ3JvdXBfbmFtZV9jb25zdGFudHMgK1xuICAgIGRlY2lzaW9uX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBmaWxlX2V4dGVuc2lvbl9jb25zdGFudHMgK1xuICAgIGpvYl9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyArXG4gICAgbGFuZ3VhZ2VfY29kZV9jb25zdGFudHMgK1xuICAgIGxhdW5jaGluZ19leHRlcm5hbF9hcHBsaWNhdGlvbnNfY29uc3RhbnRzICtcbiAgICBsaW5rX2tpbmRfY29uc3RhbnRzICtcbiAgICBsb2NrX3R5cGVfY29uc3RhbnRzICtcbiAgICBtb25pdG9yX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBub3RpY2VfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIG9iamVjdF9ldmVudHNfY29uc3RhbnRzICtcbiAgICBvYmplY3RfcGFyYW1zX2NvbnN0YW50cyArXG4gICAgb3RoZXJfY29uc3RhbnRzICtcbiAgICBwcml2aWxlZ2VzX2NvbnN0YW50cyArXG4gICAgcHNldWRvcmVmZXJlbmNlX2NvZGVfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfSVNCQ2VydGlmaWNhdGVUeXBlX3ZhbHVlc19jb25zdGFudHMgK1xuICAgIHJlcXVpc2l0ZV9JU0JFRG9jU3RvcmFnZVR5cGVfdmFsdWVzX2NvbnN0YW50cyArXG4gICAgcmVxdWlzaXRlX2NvbXBUeXBlMl92YWx1ZXNfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfbmFtZV9jb25zdGFudHMgK1xuICAgIHJlc3VsdF9jb25zdGFudHMgK1xuICAgIHJ1bGVfaWRlbnRpZmljYXRpb25fY29uc3RhbnRzICtcbiAgICBzY3JpcHRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN1YnRhc2tfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9jb21wb25lbnRfY29uc3RhbnRzICtcbiAgICBzeXN0ZW1fZGlhbG9nc19jb25zdGFudHMgK1xuICAgIHN5c3RlbV9yZWZlcmVuY2VfbmFtZXNfY29uc3RhbnRzICtcbiAgICB0YWJsZV9uYW1lX2NvbnN0YW50cyArXG4gICAgdGVzdF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kaWFsb2dfd2luZG93c19jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9kb2N1bWVudF9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9FQV9hbmRfZW5jcnlwdGlvbl9jb25zdGFudHMgK1xuICAgIHVzaW5nX3RoZV9JU0JMX2VkaXRvcl9jb25zdGFudHMgK1xuICAgIHdhaXRfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIHN5c3Jlc19jb21tb25fY29uc3RhbnRzO1xuXG4gIC8vIGVudW0gVEFjY291bnRUeXBlXG4gIHZhciBUQWNjb3VudFR5cGUgPSBcImF0VXNlciBhdEdyb3VwIGF0Um9sZSBcIjtcblxuICAvLyBlbnVtIFRBY3Rpb25FbmFibGVkTW9kZVxuICB2YXIgVEFjdGlvbkVuYWJsZWRNb2RlID1cbiAgICBcImFlbUVuYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRBbHdheXMgXCIgK1xuICAgIFwiYWVtRW5hYmxlZE9uQnJvd3NlIFwiICtcbiAgICBcImFlbUVuYWJsZWRPbkVkaXQgXCIgK1xuICAgIFwiYWVtRGlzYWJsZWRPbkJyb3dzZUVtcHR5IFwiO1xuXG4gIC8vIGVudW0gVEFkZFBvc2l0aW9uXG4gIHZhciBUQWRkUG9zaXRpb24gPSBcImFwQmVnaW4gYXBFbmQgXCI7XG5cbiAgLy8gZW51bSBUQWxpZ25tZW50XG4gIHZhciBUQWxpZ25tZW50ID0gXCJhbExlZnQgYWxSaWdodCBcIjtcblxuICAvLyBlbnVtIFRBcmVhU2hvd01vZGVcbiAgdmFyIFRBcmVhU2hvd01vZGUgPVxuICAgIFwiYXNtTmV2ZXIgXCIgK1xuICAgIFwiYXNtTm9CdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQXNMYXN0VGltZSBcIiArXG4gICAgXCJhc21ZZXNCdXRDdXN0b21pemUgXCIgK1xuICAgIFwiYXNtQWx3YXlzIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlSW52YWxpZGF0aW9uUmVhc29uXG4gIHZhciBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gPSBcImNpckNvbW1vbiBjaXJSZXZva2VkIFwiO1xuXG4gIC8vIGVudW0gVENlcnRpZmljYXRlVHlwZVxuICB2YXIgVENlcnRpZmljYXRlVHlwZSA9IFwiY3RTaWduYXR1cmUgY3RFbmNvZGUgY3RTaWduYXR1cmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlXG4gIHZhciBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlID0gXCJjbGJVbmNoZWNrZWQgY2xiQ2hlY2tlZCBjbGJHcmF5ZWQgXCI7XG5cbiAgLy8gZW51bSBUQ2xvc2VPbkVzY1xuICB2YXIgVENsb3NlT25Fc2MgPSBcImNlSVNCIGNlQWx3YXlzIGNlTmV2ZXIgXCI7XG5cbiAgLy8gZW51bSBUQ29tcFR5cGVcbiAgdmFyIFRDb21wVHlwZSA9XG4gICAgXCJjdERvY3VtZW50IFwiICtcbiAgICBcImN0UmVmZXJlbmNlIFwiICtcbiAgICBcImN0U2NyaXB0IFwiICtcbiAgICBcImN0VW5rbm93biBcIiArXG4gICAgXCJjdFJlcG9ydCBcIiArXG4gICAgXCJjdERpYWxvZyBcIiArXG4gICAgXCJjdEZ1bmN0aW9uIFwiICtcbiAgICBcImN0Rm9sZGVyIFwiICtcbiAgICBcImN0RURvY3VtZW50IFwiICtcbiAgICBcImN0VGFzayBcIiArXG4gICAgXCJjdEpvYiBcIiArXG4gICAgXCJjdE5vdGljZSBcIiArXG4gICAgXCJjdENvbnRyb2xKb2IgXCI7XG5cbiAgLy8gZW51bSBUQ29uZGl0aW9uRm9ybWF0XG4gIHZhciBUQ29uZGl0aW9uRm9ybWF0ID0gXCJjZkludGVybmFsIGNmRGlzcGxheSBcIjtcblxuICAvLyBlbnVtIFRDb25uZWN0aW9uSW50ZW50XG4gIHZhciBUQ29ubmVjdGlvbkludGVudCA9IFwiY2lVbnNwZWNpZmllZCBjaVdyaXRlIGNpUmVhZCBcIjtcblxuICAvLyBlbnVtIFRDb250ZW50S2luZFxuICB2YXIgVENvbnRlbnRLaW5kID1cbiAgICBcImNrRm9sZGVyIFwiICtcbiAgICBcImNrRURvY3VtZW50IFwiICtcbiAgICBcImNrVGFzayBcIiArXG4gICAgXCJja0pvYiBcIiArXG4gICAgXCJja0NvbXBvbmVudFRva2VuIFwiICtcbiAgICBcImNrQW55IFwiICtcbiAgICBcImNrUmVmZXJlbmNlIFwiICtcbiAgICBcImNrU2NyaXB0IFwiICtcbiAgICBcImNrUmVwb3J0IFwiICtcbiAgICBcImNrRGlhbG9nIFwiO1xuXG4gIC8vIGVudW0gVENvbnRyb2xUeXBlXG4gIHZhciBUQ29udHJvbFR5cGUgPVxuICAgIFwiY3RJU0JMRWRpdG9yIFwiICtcbiAgICBcImN0QmV2ZWwgXCIgK1xuICAgIFwiY3RCdXR0b24gXCIgK1xuICAgIFwiY3RDaGVja0xpc3RCb3ggXCIgK1xuICAgIFwiY3RDb21ib0JveCBcIiArXG4gICAgXCJjdENvbWJvRWRpdCBcIiArXG4gICAgXCJjdEdyaWQgXCIgK1xuICAgIFwiY3REQkNoZWNrQm94IFwiICtcbiAgICBcImN0REJDb21ib0JveCBcIiArXG4gICAgXCJjdERCRWRpdCBcIiArXG4gICAgXCJjdERCRWxsaXBzaXMgXCIgK1xuICAgIFwiY3REQk1lbW8gXCIgK1xuICAgIFwiY3REQk5hdmlnYXRvciBcIiArXG4gICAgXCJjdERCUmFkaW9Hcm91cCBcIiArXG4gICAgXCJjdERCU3RhdHVzTGFiZWwgXCIgK1xuICAgIFwiY3RFZGl0IFwiICtcbiAgICBcImN0R3JvdXBCb3ggXCIgK1xuICAgIFwiY3RJbnBsYWNlSGludCBcIiArXG4gICAgXCJjdE1lbW8gXCIgK1xuICAgIFwiY3RQYW5lbCBcIiArXG4gICAgXCJjdExpc3RCb3ggXCIgK1xuICAgIFwiY3RSYWRpb0J1dHRvbiBcIiArXG4gICAgXCJjdFJpY2hFZGl0IFwiICtcbiAgICBcImN0VGFiU2hlZXQgXCIgK1xuICAgIFwiY3RXZWJCcm93c2VyIFwiICtcbiAgICBcImN0SW1hZ2UgXCIgK1xuICAgIFwiY3RIeXBlckxpbmsgXCIgK1xuICAgIFwiY3RMYWJlbCBcIiArXG4gICAgXCJjdERCTXVsdGlFbGxpcHNpcyBcIiArXG4gICAgXCJjdFJpYmJvbiBcIiArXG4gICAgXCJjdFJpY2hWaWV3IFwiICtcbiAgICBcImN0SW5uZXJQYW5lbCBcIiArXG4gICAgXCJjdFBhbmVsR3JvdXAgXCIgK1xuICAgIFwiY3RCaXRCdXR0b24gXCI7XG5cbiAgLy8gZW51bSBUQ3JpdGVyaW9uQ29udGVudFR5cGVcbiAgdmFyIFRDcml0ZXJpb25Db250ZW50VHlwZSA9XG4gICAgXCJjY3REYXRlIFwiICtcbiAgICBcImNjdEludGVnZXIgXCIgK1xuICAgIFwiY2N0TnVtZXJpYyBcIiArXG4gICAgXCJjY3RQaWNrIFwiICtcbiAgICBcImNjdFJlZmVyZW5jZSBcIiArXG4gICAgXCJjY3RTdHJpbmcgXCIgK1xuICAgIFwiY2N0VGV4dCBcIjtcblxuICAvLyBlbnVtIFRDdWx0dXJlVHlwZVxuICB2YXIgVEN1bHR1cmVUeXBlID0gXCJjbHRJbnRlcm5hbCBjbHRQcmltYXJ5IGNsdEdVSSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0RXZlbnRUeXBlXG4gIHZhciBURGF0YVNldEV2ZW50VHlwZSA9XG4gICAgXCJkc2VCZWZvcmVPcGVuIFwiICtcbiAgICBcImRzZUFmdGVyT3BlbiBcIiArXG4gICAgXCJkc2VCZWZvcmVDbG9zZSBcIiArXG4gICAgXCJkc2VBZnRlckNsb3NlIFwiICtcbiAgICBcImRzZU9uVmFsaWREZWxldGUgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlIFwiICtcbiAgICBcImRzZUFmdGVyRGVsZXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPbkRlbGV0ZUVycm9yIFwiICtcbiAgICBcImRzZUJlZm9yZUluc2VydCBcIiArXG4gICAgXCJkc2VBZnRlckluc2VydCBcIiArXG4gICAgXCJkc2VPblZhbGlkVXBkYXRlIFwiICtcbiAgICBcImRzZUJlZm9yZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblVwZGF0ZVJhdGlmaWVkUmVjb3JkIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VPblVwZGF0ZUVycm9yIFwiICtcbiAgICBcImRzZUFmdGVyU2Nyb2xsIFwiICtcbiAgICBcImRzZU9uT3BlblJlY29yZCBcIiArXG4gICAgXCJkc2VPbkNsb3NlUmVjb3JkIFwiICtcbiAgICBcImRzZUJlZm9yZUNhbmNlbCBcIiArXG4gICAgXCJkc2VBZnRlckNhbmNlbCBcIiArXG4gICAgXCJkc2VPblVwZGF0ZURlYWRsb2NrRXJyb3IgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGV0YWlsVXBkYXRlIFwiICtcbiAgICBcImRzZU9uUHJlcGFyZVVwZGF0ZSBcIiArXG4gICAgXCJkc2VPbkFueVJlcXVpc2l0ZUNoYW5nZSBcIjtcblxuICAvLyBlbnVtIFREYXRhU2V0U3RhdGVcbiAgdmFyIFREYXRhU2V0U3RhdGUgPSBcImRzc0VkaXQgZHNzSW5zZXJ0IGRzc0Jyb3dzZSBkc3NJbkFjdGl2ZSBcIjtcblxuICAvLyBlbnVtIFREYXRlRm9ybWF0VHlwZVxuICB2YXIgVERhdGVGb3JtYXRUeXBlID0gXCJkZnREYXRlIGRmdFNob3J0RGF0ZSBkZnREYXRlVGltZSBkZnRUaW1lU3RhbXAgXCI7XG5cbiAgLy8gZW51bSBURGF0ZU9mZnNldFR5cGVcbiAgdmFyIFREYXRlT2Zmc2V0VHlwZSA9IFwiZG90RGF5cyBkb3RIb3VycyBkb3RNaW51dGVzIGRvdFNlY29uZHMgXCI7XG5cbiAgLy8gZW51bSBURGF0ZVRpbWVLaW5kXG4gIHZhciBURGF0ZVRpbWVLaW5kID0gXCJkdGtuZExvY2FsIGR0a25kVVRDIFwiO1xuXG4gIC8vIGVudW0gVERlYUFjY2Vzc1JpZ2h0c1xuICB2YXIgVERlYUFjY2Vzc1JpZ2h0cyA9IFwiYXJOb25lIGFyVmlldyBhckVkaXQgYXJGdWxsIFwiO1xuXG4gIC8vIGVudW0gVERvY3VtZW50RGVmYXVsdEFjdGlvblxuICB2YXIgVERvY3VtZW50RGVmYXVsdEFjdGlvbiA9IFwiZGRhVmlldyBkZGFFZGl0IFwiO1xuXG4gIC8vIGVudW0gVEVkaXRNb2RlXG4gIHZhciBURWRpdE1vZGUgPVxuICAgIFwiZW1Mb2NrIFwiICtcbiAgICBcImVtRWRpdCBcIiArXG4gICAgXCJlbVNpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnRXaXRoTG9jayBcIiArXG4gICAgXCJlbUltcG9ydFdpdGhVbmxvY2sgXCIgK1xuICAgIFwiZW1DaGFuZ2VWZXJzaW9uTm90ZSBcIiArXG4gICAgXCJlbU9wZW5Gb3JNb2RpZnkgXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlU3RhZ2UgXCIgK1xuICAgIFwiZW1EZWxldGUgXCIgK1xuICAgIFwiZW1DcmVhdGVWZXJzaW9uIFwiICtcbiAgICBcImVtSW1wb3J0IFwiICtcbiAgICBcImVtVW5sb2NrRXhwb3J0ZWRXaXRoTG9jayBcIiArXG4gICAgXCJlbVN0YXJ0IFwiICtcbiAgICBcImVtQWJvcnQgXCIgK1xuICAgIFwiZW1SZUluaXQgXCIgK1xuICAgIFwiZW1NYXJrQXNSZWFkZWQgXCIgK1xuICAgIFwiZW1NYXJrQXNVbnJlYWRlZCBcIiArXG4gICAgXCJlbVBlcmZvcm0gXCIgK1xuICAgIFwiZW1BY2NlcHQgXCIgK1xuICAgIFwiZW1SZXN1bWUgXCIgK1xuICAgIFwiZW1DaGFuZ2VSaWdodHMgXCIgK1xuICAgIFwiZW1FZGl0Um91dGUgXCIgK1xuICAgIFwiZW1FZGl0T2JzZXJ2ZXIgXCIgK1xuICAgIFwiZW1SZWNvdmVyeUZyb21Mb2NhbENvcHkgXCIgK1xuICAgIFwiZW1DaGFuZ2VXb3JrQWNjZXNzVHlwZSBcIiArXG4gICAgXCJlbUNoYW5nZUVuY29kZVR5cGVUb0NlcnRpZmljYXRlIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvUGFzc3dvcmQgXCIgK1xuICAgIFwiZW1DaGFuZ2VFbmNvZGVUeXBlVG9Ob25lIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvQ2VydGlmaWNhdGVQYXNzd29yZCBcIiArXG4gICAgXCJlbUNoYW5nZVN0YW5kYXJkUm91dGUgXCIgK1xuICAgIFwiZW1HZXRUZXh0IFwiICtcbiAgICBcImVtT3BlbkZvclZpZXcgXCIgK1xuICAgIFwiZW1Nb3ZlVG9TdG9yYWdlIFwiICtcbiAgICBcImVtQ3JlYXRlT2JqZWN0IFwiICtcbiAgICBcImVtQ2hhbmdlVmVyc2lvbkhpZGRlbiBcIiArXG4gICAgXCJlbURlbGV0ZVZlcnNpb24gXCIgK1xuICAgIFwiZW1DaGFuZ2VMaWZlQ3ljbGVTdGFnZSBcIiArXG4gICAgXCJlbUFwcHJvdmluZ1NpZ24gXCIgK1xuICAgIFwiZW1FeHBvcnQgXCIgK1xuICAgIFwiZW1Db250aW51ZSBcIiArXG4gICAgXCJlbUxvY2tGcm9tRWRpdCBcIiArXG4gICAgXCJlbVVuTG9ja0ZvckVkaXQgXCIgK1xuICAgIFwiZW1Mb2NrRm9yU2VydmVyIFwiICtcbiAgICBcImVtVW5sb2NrRnJvbVNlcnZlciBcIiArXG4gICAgXCJlbURlbGVnYXRlQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcImVtUmVFbmNvZGUgXCI7XG5cbiAgLy8gZW51bSBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlXG4gIHZhciBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlID0gXCJlY290RmlsZSBlY290UHJvY2VzcyBcIjtcblxuICAvLyBlbnVtIFRFZG1zQXBwbGljYXRpb25BY3Rpb25cbiAgdmFyIFRFZG1zQXBwbGljYXRpb25BY3Rpb24gPSBcImVhR2V0IGVhQ29weSBlYUNyZWF0ZSBlYUNyZWF0ZVN0YW5kYXJkUm91dGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50TG9ja1R5cGVcbiAgdmFyIFRFRG9jdW1lbnRMb2NrVHlwZSA9IFwiZWRsdEFsbCBlZGx0Tm90aGluZyBlZGx0UXVlcnkgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RlcFNob3dNb2RlXG4gIHZhciBURURvY3VtZW50U3RlcFNob3dNb2RlID0gXCJlc3NtVGV4dCBlc3NtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGVcbiAgdmFyIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgPSBcImVzdnRMYXN0IGVzdnRMYXN0QWN0aXZlIGVzdnRTcGVjaWZpZWQgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uXG4gIHZhciBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uID0gXCJlZHNmRXhlY3V0aXZlIGVkc2ZBcmNoaXZlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFN0b3JhZ2VUeXBlXG4gIHZhciBURURvY3VtZW50U3RvcmFnZVR5cGUgPSBcImVkc3RTUUxTZXJ2ZXIgZWRzdEZpbGUgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50VmVyc2lvblNvdXJjZVR5cGVcbiAgdmFyIFRFRG9jdW1lbnRWZXJzaW9uU291cmNlVHlwZSA9XG4gICAgXCJlZHZzdE5vbmUgZWR2c3RFRG9jdW1lbnRWZXJzaW9uQ29weSBlZHZzdEZpbGUgZWR2c3RUZW1wbGF0ZSBlZHZzdFNjYW5uZWRGaWxlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFZlcnNpb25TdGF0ZVxuICB2YXIgVEVEb2N1bWVudFZlcnNpb25TdGF0ZSA9IFwidnNEZWZhdWx0IHZzRGVzaWduIHZzQWN0aXZlIHZzT2Jzb2xldGUgXCI7XG5cbiAgLy8gZW51bSBURW5jb2RlVHlwZVxuICB2YXIgVEVuY29kZVR5cGUgPSBcImV0Tm9uZSBldENlcnRpZmljYXRlIGV0UGFzc3dvcmQgZXRDZXJ0aWZpY2F0ZVBhc3N3b3JkIFwiO1xuXG4gIC8vIGVudW0gVEV4Y2VwdGlvbkNhdGVnb3J5XG4gIHZhciBURXhjZXB0aW9uQ2F0ZWdvcnkgPSBcImVjRXhjZXB0aW9uIGVjV2FybmluZyBlY0luZm9ybWF0aW9uIFwiO1xuXG4gIC8vIGVudW0gVEV4cG9ydGVkU2lnbmF0dXJlc1R5cGVcbiAgdmFyIFRFeHBvcnRlZFNpZ25hdHVyZXNUeXBlID0gXCJlc3RBbGwgZXN0QXBwcm92aW5nT25seSBcIjtcblxuICAvLyBlbnVtIFRFeHBvcnRlZFZlcnNpb25UeXBlXG4gIHZhciBURXhwb3J0ZWRWZXJzaW9uVHlwZSA9IFwiZXZ0TGFzdCBldnRMYXN0QWN0aXZlIGV2dFF1ZXJ5IFwiO1xuXG4gIC8vIGVudW0gVEZpZWxkRGF0YVR5cGVcbiAgdmFyIFRGaWVsZERhdGFUeXBlID1cbiAgICBcImZkdFN0cmluZyBcIiArXG4gICAgXCJmZHROdW1lcmljIFwiICtcbiAgICBcImZkdEludGVnZXIgXCIgK1xuICAgIFwiZmR0RGF0ZSBcIiArXG4gICAgXCJmZHRUZXh0IFwiICtcbiAgICBcImZkdFVua25vd24gXCIgK1xuICAgIFwiZmR0V2lkZVN0cmluZyBcIiArXG4gICAgXCJmZHRMYXJnZUludGVnZXIgXCI7XG5cbiAgLy8gZW51bSBURm9sZGVyVHlwZVxuICB2YXIgVEZvbGRlclR5cGUgPVxuICAgIFwiZnRJbmJveCBcIiArXG4gICAgXCJmdE91dGJveCBcIiArXG4gICAgXCJmdEZhdm9yaXRlcyBcIiArXG4gICAgXCJmdENvbW1vbkZvbGRlciBcIiArXG4gICAgXCJmdFVzZXJGb2xkZXIgXCIgK1xuICAgIFwiZnRDb21wb25lbnRzIFwiICtcbiAgICBcImZ0UXVpY2tMYXVuY2ggXCIgK1xuICAgIFwiZnRTaG9ydGN1dHMgXCIgK1xuICAgIFwiZnRTZWFyY2ggXCI7XG5cbiAgLy8gZW51bSBUR3JpZFJvd0hlaWdodFxuICB2YXIgVEdyaWRSb3dIZWlnaHQgPSBcImdyaEF1dG8gXCIgKyBcImdyaFgxIFwiICsgXCJncmhYMiBcIiArIFwiZ3JoWDMgXCI7XG5cbiAgLy8gZW51bSBUSHlwZXJsaW5rVHlwZVxuICB2YXIgVEh5cGVybGlua1R5cGUgPSBcImhsdFRleHQgXCIgKyBcImhsdFJURiBcIiArIFwiaGx0SFRNTCBcIjtcblxuICAvLyBlbnVtIFRJbWFnZUZpbGVGb3JtYXRcbiAgdmFyIFRJbWFnZUZpbGVGb3JtYXQgPVxuICAgIFwiaWZmQk1QIFwiICtcbiAgICBcImlmZkpQRUcgXCIgK1xuICAgIFwiaWZmTXVsdGlQYWdlVElGRiBcIiArXG4gICAgXCJpZmZTaW5nbGVQYWdlVElGRiBcIiArXG4gICAgXCJpZmZUSUZGIFwiICtcbiAgICBcImlmZlBORyBcIjtcblxuICAvLyBlbnVtIFRJbWFnZU1vZGVcbiAgdmFyIFRJbWFnZU1vZGUgPSBcImltOGJHcmF5c2NhbGUgXCIgKyBcImltMjRiUkdCIFwiICsgXCJpbTFiTW9ub2Nocm9tZSBcIjtcblxuICAvLyBlbnVtIFRJbWFnZVR5cGVcbiAgdmFyIFRJbWFnZVR5cGUgPSBcIml0Qk1QIFwiICsgXCJpdEpQRUcgXCIgKyBcIml0V01GIFwiICsgXCJpdFBORyBcIjtcblxuICAvLyBlbnVtIFRJbnBsYWNlSGludEtpbmRcbiAgdmFyIFRJbnBsYWNlSGludEtpbmQgPVxuICAgIFwiaWtoSW5mb3JtYXRpb24gXCIgKyBcImlraFdhcm5pbmcgXCIgKyBcImlraEVycm9yIFwiICsgXCJpa2hOb0ljb24gXCI7XG5cbiAgLy8gZW51bSBUSVNCTENvbnRleHRcbiAgdmFyIFRJU0JMQ29udGV4dCA9XG4gICAgXCJpY1Vua25vd24gXCIgK1xuICAgIFwiaWNTY3JpcHQgXCIgK1xuICAgIFwiaWNGdW5jdGlvbiBcIiArXG4gICAgXCJpY0ludGVncmF0ZWRSZXBvcnQgXCIgK1xuICAgIFwiaWNBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJpY0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0xvb2tVcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0JlZm9yZVNlYXJjaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JvbGVDYWxjdWxhdGlvbiBcIiArXG4gICAgXCJpY1NlbGVjdFJvdXRlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQmxvY2tQcm9wZXJ0eUNhbGN1bGF0aW9uIFwiICtcbiAgICBcImljQmxvY2tRdWVyeVBhcmFtc0V2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0NoYW5nZVNlYXJjaFJlc3VsdEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0Jsb2NrRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljU3ViVGFza0luaXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jRGF0YVNldEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NGb3JtRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRURvY1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uUnVsZSBcIiArXG4gICAgXCJpY1N0cnVjdHVyZWRDb252ZXJzaW9uRXZlbnRCZWZvcmUgXCIgK1xuICAgIFwiaWNTdHJ1Y3R1cmVkQ29udmVyc2lvbkV2ZW50QWZ0ZXIgXCIgK1xuICAgIFwiaWNXaXphcmRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRGaW5pc2hFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRTdGVwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV2l6YXJkU3RlcEZpbmlzaEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkVuYWJsZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZEFjdGlvbkV4ZWN1dGVFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNDcmVhdGVKb2JzSGFuZGxlciBcIiArXG4gICAgXCJpY0NyZWF0ZU5vdGljZXNIYW5kbGVyIFwiICtcbiAgICBcImljQmVmb3JlTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQWZ0ZXJMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrQWJvcnRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXb3JrZmxvd0Jsb2NrQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNEaWFsb2dBY3Rpb25IYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nUmVxdWlzaXRlQ2hhbmdlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ1ZhbGlkQ2xvc2VFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNCbG9ja0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNUYXNrRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1JlZmVyZW5jZU1ldGhvZCBcIiArXG4gICAgXCJpY0VEb2NNZXRob2QgXCIgK1xuICAgIFwiaWNEaWFsb2dNZXRob2QgXCIgK1xuICAgIFwiaWNQcm9jZXNzTWVzc2FnZUhhbmRsZXIgXCI7XG5cbiAgLy8gZW51bSBUSXRlbVNob3dcbiAgdmFyIFRJdGVtU2hvdyA9IFwiaXNTaG93IFwiICsgXCJpc0hpZGUgXCIgKyBcImlzQnlVc2VyU2V0dGluZ3MgXCI7XG5cbiAgLy8gZW51bSBUSm9iS2luZFxuICB2YXIgVEpvYktpbmQgPSBcImprSm9iIFwiICsgXCJqa05vdGljZSBcIiArIFwiamtDb250cm9sSm9iIFwiO1xuXG4gIC8vIGVudW0gVEpvaW5UeXBlXG4gIHZhciBUSm9pblR5cGUgPSBcImp0SW5uZXIgXCIgKyBcImp0TGVmdCBcIiArIFwianRSaWdodCBcIiArIFwianRGdWxsIFwiICsgXCJqdENyb3NzIFwiO1xuXG4gIC8vIGVudW0gVExhYmVsUG9zXG4gIHZhciBUTGFiZWxQb3MgPSBcImxicEFib3ZlIFwiICsgXCJsYnBCZWxvdyBcIiArIFwibGJwTGVmdCBcIiArIFwibGJwUmlnaHQgXCI7XG5cbiAgLy8gZW51bSBUTGljZW5zaW5nVHlwZVxuICB2YXIgVExpY2Vuc2luZ1R5cGUgPSBcImVsdFBlckNvbm5lY3Rpb24gXCIgKyBcImVsdFBlclVzZXIgXCI7XG5cbiAgLy8gZW51bSBUTGlmZUN5Y2xlU3RhZ2VGb250Q29sb3JcbiAgdmFyIFRMaWZlQ3ljbGVTdGFnZUZvbnRDb2xvciA9XG4gICAgXCJzZmNVbmRlZmluZWQgXCIgK1xuICAgIFwic2ZjQmxhY2sgXCIgK1xuICAgIFwic2ZjR3JlZW4gXCIgK1xuICAgIFwic2ZjUmVkIFwiICtcbiAgICBcInNmY0JsdWUgXCIgK1xuICAgIFwic2ZjT3JhbmdlIFwiICtcbiAgICBcInNmY0xpbGFjIFwiO1xuXG4gIC8vIGVudW0gVExpZmVDeWNsZVN0YWdlRm9udFN0eWxlXG4gIHZhciBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgPSBcInNmc0l0YWxpYyBcIiArIFwic2ZzU3RyaWtlb3V0IFwiICsgXCJzZnNOb3JtYWwgXCI7XG5cbiAgLy8gZW51bSBUTG9ja2FibGVEZXZlbG9wbWVudENvbXBvbmVudFR5cGVcbiAgdmFyIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSA9XG4gICAgXCJsZGN0U3RhbmRhcmRSb3V0ZSBcIiArXG4gICAgXCJsZGN0V2l6YXJkIFwiICtcbiAgICBcImxkY3RTY3JpcHQgXCIgK1xuICAgIFwibGRjdEZ1bmN0aW9uIFwiICtcbiAgICBcImxkY3RSb3V0ZUJsb2NrIFwiICtcbiAgICBcImxkY3RJbnRlZ3JhdGVkUmVwb3J0IFwiICtcbiAgICBcImxkY3RBbmFseXRpY1JlcG9ydCBcIiArXG4gICAgXCJsZGN0UmVmZXJlbmNlVHlwZSBcIiArXG4gICAgXCJsZGN0RURvY3VtZW50VHlwZSBcIiArXG4gICAgXCJsZGN0RGlhbG9nIFwiICtcbiAgICBcImxkY3RTZXJ2ZXJFdmVudHMgXCI7XG5cbiAgLy8gZW51bSBUTWF4UmVjb3JkQ291bnRSZXN0cmljdGlvblR5cGVcbiAgdmFyIFRNYXhSZWNvcmRDb3VudFJlc3RyaWN0aW9uVHlwZSA9XG4gICAgXCJtcmNydE5vbmUgXCIgKyBcIm1yY3J0VXNlciBcIiArIFwibXJjcnRNYXhpbWFsIFwiICsgXCJtcmNydEN1c3RvbSBcIjtcblxuICAvLyBlbnVtIFRSYW5nZVZhbHVlVHlwZVxuICB2YXIgVFJhbmdlVmFsdWVUeXBlID1cbiAgICBcInZ0RXF1YWwgXCIgKyBcInZ0R3JlYXRlck9yRXF1YWwgXCIgKyBcInZ0TGVzc09yRXF1YWwgXCIgKyBcInZ0UmFuZ2UgXCI7XG5cbiAgLy8gZW51bSBUUmVsYXRpdmVEYXRlXG4gIHZhciBUUmVsYXRpdmVEYXRlID1cbiAgICBcInJkWWVzdGVyZGF5IFwiICtcbiAgICBcInJkVG9kYXkgXCIgK1xuICAgIFwicmRUb21vcnJvdyBcIiArXG4gICAgXCJyZFRoaXNXZWVrIFwiICtcbiAgICBcInJkVGhpc01vbnRoIFwiICtcbiAgICBcInJkVGhpc1llYXIgXCIgK1xuICAgIFwicmROZXh0TW9udGggXCIgK1xuICAgIFwicmROZXh0V2VlayBcIiArXG4gICAgXCJyZExhc3RXZWVrIFwiICtcbiAgICBcInJkTGFzdE1vbnRoIFwiO1xuXG4gIC8vIGVudW0gVFJlcG9ydERlc3RpbmF0aW9uXG4gIHZhciBUUmVwb3J0RGVzdGluYXRpb24gPSBcInJkV2luZG93IFwiICsgXCJyZEZpbGUgXCIgKyBcInJkUHJpbnRlciBcIjtcblxuICAvLyBlbnVtIFRSZXFEYXRhVHlwZVxuICB2YXIgVFJlcURhdGFUeXBlID1cbiAgICBcInJkdFN0cmluZyBcIiArXG4gICAgXCJyZHROdW1lcmljIFwiICtcbiAgICBcInJkdEludGVnZXIgXCIgK1xuICAgIFwicmR0RGF0ZSBcIiArXG4gICAgXCJyZHRSZWZlcmVuY2UgXCIgK1xuICAgIFwicmR0QWNjb3VudCBcIiArXG4gICAgXCJyZHRUZXh0IFwiICtcbiAgICBcInJkdFBpY2sgXCIgK1xuICAgIFwicmR0VW5rbm93biBcIiArXG4gICAgXCJyZHRMYXJnZUludGVnZXIgXCIgK1xuICAgIFwicmR0RG9jdW1lbnQgXCI7XG5cbiAgLy8gZW51bSBUUmVxdWlzaXRlRXZlbnRUeXBlXG4gIHZhciBUUmVxdWlzaXRlRXZlbnRUeXBlID0gXCJyZU9uQ2hhbmdlIFwiICsgXCJyZU9uQ2hhbmdlVmFsdWVzIFwiO1xuXG4gIC8vIGVudW0gVFNCVGltZVR5cGVcbiAgdmFyIFRTQlRpbWVUeXBlID0gXCJ0dEdsb2JhbCBcIiArIFwidHRMb2NhbCBcIiArIFwidHRVc2VyIFwiICsgXCJ0dFN5c3RlbSBcIjtcblxuICAvLyBlbnVtIFRTZWFyY2hTaG93TW9kZVxuICB2YXIgVFNlYXJjaFNob3dNb2RlID1cbiAgICBcInNzbUJyb3dzZSBcIiArIFwic3NtU2VsZWN0IFwiICsgXCJzc21NdWx0aVNlbGVjdCBcIiArIFwic3NtQnJvd3NlTW9kYWwgXCI7XG5cbiAgLy8gZW51bSBUU2VsZWN0TW9kZVxuICB2YXIgVFNlbGVjdE1vZGUgPSBcInNtU2VsZWN0IFwiICsgXCJzbUxpa2UgXCIgKyBcInNtQ2FyZCBcIjtcblxuICAvLyBlbnVtIFRTaWduYXR1cmVUeXBlXG4gIHZhciBUU2lnbmF0dXJlVHlwZSA9IFwic3ROb25lIFwiICsgXCJzdEF1dGhlbnRpY2F0aW5nIFwiICsgXCJzdEFwcHJvdmluZyBcIjtcblxuICAvLyBlbnVtIFRTaWduZXJDb250ZW50VHlwZVxuICB2YXIgVFNpZ25lckNvbnRlbnRUeXBlID0gXCJzY3RTdHJpbmcgXCIgKyBcInNjdFN0cmVhbSBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdzU29ydFR5cGVcbiAgdmFyIFRTdHJpbmdzU29ydFR5cGUgPSBcInNzdEFuc2lTb3J0IFwiICsgXCJzc3ROYXR1cmFsU29ydCBcIjtcblxuICAvLyBlbnVtIFRTdHJpbmdWYWx1ZVR5cGVcbiAgdmFyIFRTdHJpbmdWYWx1ZVR5cGUgPSBcInN2dEVxdWFsIFwiICsgXCJzdnRDb250YWluIFwiO1xuXG4gIC8vIGVudW0gVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlXG4gIHZhciBUU3RydWN0dXJlZE9iamVjdEF0dHJpYnV0ZVR5cGUgPVxuICAgIFwic29hdFN0cmluZyBcIiArXG4gICAgXCJzb2F0TnVtZXJpYyBcIiArXG4gICAgXCJzb2F0SW50ZWdlciBcIiArXG4gICAgXCJzb2F0RGF0ZXRpbWUgXCIgK1xuICAgIFwic29hdFJlZmVyZW5jZVJlY29yZCBcIiArXG4gICAgXCJzb2F0VGV4dCBcIiArXG4gICAgXCJzb2F0UGljayBcIiArXG4gICAgXCJzb2F0Qm9vbGVhbiBcIiArXG4gICAgXCJzb2F0RURvY3VtZW50IFwiICtcbiAgICBcInNvYXRBY2NvdW50IFwiICtcbiAgICBcInNvYXRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0TnVtZXJpY0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFN0cmluZ0NvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdFBpY2tDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXREYXRldGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdEJvb2xlYW5Db2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRSZWZlcmVuY2VSZWNvcmRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRFRG9jdW1lbnRDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRBY2NvdW50Q29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0Q29udGVudHMgXCIgK1xuICAgIFwic29hdFVua25vd24gXCI7XG5cbiAgLy8gZW51bSBUVGFza0Fib3J0UmVhc29uXG4gIHZhciBUVGFza0Fib3J0UmVhc29uID0gXCJ0YXJBYm9ydEJ5VXNlciBcIiArIFwidGFyQWJvcnRCeVdvcmtmbG93RXhjZXB0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFRleHRWYWx1ZVR5cGVcbiAgdmFyIFRUZXh0VmFsdWVUeXBlID0gXCJ0dnRBbGxXb3JkcyBcIiArIFwidHZ0RXhhY3RQaHJhc2UgXCIgKyBcInR2dEFueVdvcmQgXCI7XG5cbiAgLy8gZW51bSBUVXNlck9iamVjdFN0YXR1c1xuICB2YXIgVFVzZXJPYmplY3RTdGF0dXMgPVxuICAgIFwidXNOb25lIFwiICtcbiAgICBcInVzQ29tcGxldGVkIFwiICtcbiAgICBcInVzUmVkU3F1YXJlIFwiICtcbiAgICBcInVzQmx1ZVNxdWFyZSBcIiArXG4gICAgXCJ1c1llbGxvd1NxdWFyZSBcIiArXG4gICAgXCJ1c0dyZWVuU3F1YXJlIFwiICtcbiAgICBcInVzT3JhbmdlU3F1YXJlIFwiICtcbiAgICBcInVzUHVycGxlU3F1YXJlIFwiICtcbiAgICBcInVzRm9sbG93VXAgXCI7XG5cbiAgLy8gZW51bSBUVXNlclR5cGVcbiAgdmFyIFRVc2VyVHlwZSA9XG4gICAgXCJ1dFVua25vd24gXCIgK1xuICAgIFwidXRVc2VyIFwiICtcbiAgICBcInV0RGV2ZWxvcGVyIFwiICtcbiAgICBcInV0QWRtaW5pc3RyYXRvciBcIiArXG4gICAgXCJ1dFN5c3RlbURldmVsb3BlciBcIiArXG4gICAgXCJ1dERpc2Nvbm5lY3RlZCBcIjtcblxuICAvLyBlbnVtIFRWYWx1ZXNCdWlsZFR5cGVcbiAgdmFyIFRWYWx1ZXNCdWlsZFR5cGUgPVxuICAgIFwiYnRBbmQgXCIgKyBcImJ0RGV0YWlsQW5kIFwiICsgXCJidE9yIFwiICsgXCJidE5vdE9yIFwiICsgXCJidE9ubHkgXCI7XG5cbiAgLy8gZW51bSBUVmlld01vZGVcbiAgdmFyIFRWaWV3TW9kZSA9IFwidm1WaWV3IFwiICsgXCJ2bVNlbGVjdCBcIiArIFwidm1OYXZpZ2F0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFZpZXdTZWxlY3Rpb25Nb2RlXG4gIHZhciBUVmlld1NlbGVjdGlvbk1vZGUgPVxuICAgIFwidnNtU2luZ2xlIFwiICsgXCJ2c21NdWx0aXBsZSBcIiArIFwidnNtTXVsdGlwbGVDaGVjayBcIiArIFwidnNtTm9TZWxlY3Rpb24gXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkQWN0aW9uVHlwZVxuICB2YXIgVFdpemFyZEFjdGlvblR5cGUgPVxuICAgIFwid2ZhdFByZXZpb3VzIFwiICsgXCJ3ZmF0TmV4dCBcIiArIFwid2ZhdENhbmNlbCBcIiArIFwid2ZhdEZpbmlzaCBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFByb3BlcnR5XG4gIHZhciBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSA9XG4gICAgXCJ3ZmVwVW5kZWZpbmVkIFwiICtcbiAgICBcIndmZXBUZXh0MyBcIiArXG4gICAgXCJ3ZmVwVGV4dDYgXCIgK1xuICAgIFwid2ZlcFRleHQ5IFwiICtcbiAgICBcIndmZXBTcGluRWRpdCBcIiArXG4gICAgXCJ3ZmVwRHJvcERvd24gXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXAgXCIgK1xuICAgIFwid2ZlcEZsYWcgXCIgK1xuICAgIFwid2ZlcFRleHQxMiBcIiArXG4gICAgXCJ3ZmVwVGV4dDE1IFwiICtcbiAgICBcIndmZXBUZXh0MTggXCIgK1xuICAgIFwid2ZlcFRleHQyMSBcIiArXG4gICAgXCJ3ZmVwVGV4dDI0IFwiICtcbiAgICBcIndmZXBUZXh0MjcgXCIgK1xuICAgIFwid2ZlcFRleHQzMCBcIiArXG4gICAgXCJ3ZmVwUmFkaW9Hcm91cENvbHVtbjEgXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXBDb2x1bW4yIFwiICtcbiAgICBcIndmZXBSYWRpb0dyb3VwQ29sdW1uMyBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRGb3JtRWxlbWVudFR5cGVcbiAgdmFyIFRXaXphcmRGb3JtRWxlbWVudFR5cGUgPVxuICAgIFwid2ZldFF1ZXJ5UGFyYW1ldGVyIFwiICsgXCJ3ZmV0VGV4dCBcIiArIFwid2ZldERlbGltaXRlciBcIiArIFwid2ZldExhYmVsIFwiO1xuXG4gIC8vIGVudW0gVFdpemFyZFBhcmFtVHlwZVxuICB2YXIgVFdpemFyZFBhcmFtVHlwZSA9XG4gICAgXCJ3cHRTdHJpbmcgXCIgK1xuICAgIFwid3B0SW50ZWdlciBcIiArXG4gICAgXCJ3cHROdW1lcmljIFwiICtcbiAgICBcIndwdEJvb2xlYW4gXCIgK1xuICAgIFwid3B0RGF0ZVRpbWUgXCIgK1xuICAgIFwid3B0UGljayBcIiArXG4gICAgXCJ3cHRUZXh0IFwiICtcbiAgICBcIndwdFVzZXIgXCIgK1xuICAgIFwid3B0VXNlckxpc3QgXCIgK1xuICAgIFwid3B0RURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJ3cHRFRG9jdW1lbnRJbmZvTGlzdCBcIiArXG4gICAgXCJ3cHRSZWZlcmVuY2VSZWNvcmRJbmZvIFwiICtcbiAgICBcIndwdFJlZmVyZW5jZVJlY29yZEluZm9MaXN0IFwiICtcbiAgICBcIndwdEZvbGRlckluZm8gXCIgK1xuICAgIFwid3B0VGFza0luZm8gXCIgK1xuICAgIFwid3B0Q29udGVudHMgXCIgK1xuICAgIFwid3B0RmlsZU5hbWUgXCIgK1xuICAgIFwid3B0RGF0ZSBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRTdGVwUmVzdWx0XG4gIHZhciBUV2l6YXJkU3RlcFJlc3VsdCA9XG4gICAgXCJ3c3JDb21wbGV0ZSBcIiArXG4gICAgXCJ3c3JHb05leHQgXCIgK1xuICAgIFwid3NyR29QcmV2aW91cyBcIiArXG4gICAgXCJ3c3JDdXN0b20gXCIgK1xuICAgIFwid3NyQ2FuY2VsIFwiICtcbiAgICBcIndzckdvRmluYWwgXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkU3RlcFR5cGVcbiAgdmFyIFRXaXphcmRTdGVwVHlwZSA9XG4gICAgXCJ3c3RGb3JtIFwiICtcbiAgICBcIndzdEVEb2N1bWVudCBcIiArXG4gICAgXCJ3c3RUYXNrQ2FyZCBcIiArXG4gICAgXCJ3c3RSZWZlcmVuY2VSZWNvcmRDYXJkIFwiICtcbiAgICBcIndzdEZpbmFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtBY2Nlc3NUeXBlXG4gIHZhciBUV29ya0FjY2Vzc1R5cGUgPSBcIndhQWxsIFwiICsgXCJ3YVBlcmZvcm1lcnMgXCIgKyBcIndhTWFudWFsIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtmbG93QmxvY2tUeXBlXG4gIHZhciBUV29ya2Zsb3dCbG9ja1R5cGUgPVxuICAgIFwid3NiU3RhcnQgXCIgK1xuICAgIFwid3NiRmluaXNoIFwiICtcbiAgICBcIndzYk5vdGljZSBcIiArXG4gICAgXCJ3c2JTdGVwIFwiICtcbiAgICBcIndzYkRlY2lzaW9uIFwiICtcbiAgICBcIndzYldhaXQgXCIgK1xuICAgIFwid3NiTW9uaXRvciBcIiArXG4gICAgXCJ3c2JTY3JpcHQgXCIgK1xuICAgIFwid3NiQ29ubmVjdG9yIFwiICtcbiAgICBcIndzYlN1YlRhc2sgXCIgK1xuICAgIFwid3NiTGlmZUN5Y2xlU3RhZ2UgXCIgK1xuICAgIFwid3NiUGF1c2UgXCI7XG5cbiAgLy8gZW51bSBUV29ya2Zsb3dEYXRhVHlwZVxuICB2YXIgVFdvcmtmbG93RGF0YVR5cGUgPVxuICAgIFwid2R0SW50ZWdlciBcIiArXG4gICAgXCJ3ZHRGbG9hdCBcIiArXG4gICAgXCJ3ZHRTdHJpbmcgXCIgK1xuICAgIFwid2R0UGljayBcIiArXG4gICAgXCJ3ZHREYXRlVGltZSBcIiArXG4gICAgXCJ3ZHRCb29sZWFuIFwiICtcbiAgICBcIndkdFRhc2sgXCIgK1xuICAgIFwid2R0Sm9iIFwiICtcbiAgICBcIndkdEZvbGRlciBcIiArXG4gICAgXCJ3ZHRFRG9jdW1lbnQgXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkIFwiICtcbiAgICBcIndkdFVzZXIgXCIgK1xuICAgIFwid2R0R3JvdXAgXCIgK1xuICAgIFwid2R0Um9sZSBcIiArXG4gICAgXCJ3ZHRJbnRlZ2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGbG9hdENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0U3RyaW5nQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRQaWNrQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHREYXRlVGltZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Qm9vbGVhbkNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0VGFza0NvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Sm9iQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRGb2xkZXJDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdEVEb2N1bWVudENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0UmVmZXJlbmNlUmVjb3JkQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRVc2VyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRHcm91cENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Um9sZUNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Q29udGVudHMgXCIgK1xuICAgIFwid2R0VXNlckxpc3QgXCIgK1xuICAgIFwid2R0U2VhcmNoRGVzY3JpcHRpb24gXCIgK1xuICAgIFwid2R0RGVhZExpbmUgXCIgK1xuICAgIFwid2R0UGlja1NldCBcIiArXG4gICAgXCJ3ZHRBY2NvdW50Q29sbGVjdGlvbiBcIjtcblxuICAvLyBlbnVtIFRXb3JrSW1wb3J0YW5jZVxuICB2YXIgVFdvcmtJbXBvcnRhbmNlID0gXCJ3aUxvdyBcIiArIFwid2lOb3JtYWwgXCIgKyBcIndpSGlnaCBcIjtcblxuICAvLyBlbnVtIFRXb3JrUm91dGVUeXBlXG4gIHZhciBUV29ya1JvdXRlVHlwZSA9IFwid3J0U29mdCBcIiArIFwid3J0SGFyZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrU3RhdGVcbiAgdmFyIFRXb3JrU3RhdGUgPVxuICAgIFwid3NJbml0IFwiICtcbiAgICBcIndzUnVubmluZyBcIiArXG4gICAgXCJ3c0RvbmUgXCIgK1xuICAgIFwid3NDb250cm9sbGVkIFwiICtcbiAgICBcIndzQWJvcnRlZCBcIiArXG4gICAgXCJ3c0NvbnRpbnVlZCBcIjtcblxuICAvLyBlbnVtIFRXb3JrVGV4dEJ1aWxkaW5nTW9kZVxuICB2YXIgVFdvcmtUZXh0QnVpbGRpbmdNb2RlID1cbiAgICBcInd0bUZ1bGwgXCIgKyBcInd0bUZyb21DdXJyZW50IFwiICsgXCJ3dG1Pbmx5Q3VycmVudCBcIjtcblxuICAvLyDQn9C10YDQtdGH0LjRgdC70LXQvdC40Y9cbiAgdmFyIEVOVU1TID1cbiAgICBUQWNjb3VudFR5cGUgK1xuICAgIFRBY3Rpb25FbmFibGVkTW9kZSArXG4gICAgVEFkZFBvc2l0aW9uICtcbiAgICBUQWxpZ25tZW50ICtcbiAgICBUQXJlYVNob3dNb2RlICtcbiAgICBUQ2VydGlmaWNhdGVJbnZhbGlkYXRpb25SZWFzb24gK1xuICAgIFRDZXJ0aWZpY2F0ZVR5cGUgK1xuICAgIFRDaGVja0xpc3RCb3hJdGVtU3RhdGUgK1xuICAgIFRDbG9zZU9uRXNjICtcbiAgICBUQ29tcFR5cGUgK1xuICAgIFRDb25kaXRpb25Gb3JtYXQgK1xuICAgIFRDb25uZWN0aW9uSW50ZW50ICtcbiAgICBUQ29udGVudEtpbmQgK1xuICAgIFRDb250cm9sVHlwZSArXG4gICAgVENyaXRlcmlvbkNvbnRlbnRUeXBlICtcbiAgICBUQ3VsdHVyZVR5cGUgK1xuICAgIFREYXRhU2V0RXZlbnRUeXBlICtcbiAgICBURGF0YVNldFN0YXRlICtcbiAgICBURGF0ZUZvcm1hdFR5cGUgK1xuICAgIFREYXRlT2Zmc2V0VHlwZSArXG4gICAgVERhdGVUaW1lS2luZCArXG4gICAgVERlYUFjY2Vzc1JpZ2h0cyArXG4gICAgVERvY3VtZW50RGVmYXVsdEFjdGlvbiArXG4gICAgVEVkaXRNb2RlICtcbiAgICBURWRpdG9yQ2xvc2VPYnNlcnZUeXBlICtcbiAgICBURWRtc0FwcGxpY2F0aW9uQWN0aW9uICtcbiAgICBURURvY3VtZW50TG9ja1R5cGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwU2hvd01vZGUgK1xuICAgIFRFRG9jdW1lbnRTdGVwVmVyc2lvblR5cGUgK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlRnVuY3Rpb24gK1xuICAgIFRFRG9jdW1lbnRTdG9yYWdlVHlwZSArXG4gICAgVEVEb2N1bWVudFZlcnNpb25Tb3VyY2VUeXBlICtcbiAgICBURURvY3VtZW50VmVyc2lvblN0YXRlICtcbiAgICBURW5jb2RlVHlwZSArXG4gICAgVEV4Y2VwdGlvbkNhdGVnb3J5ICtcbiAgICBURXhwb3J0ZWRTaWduYXR1cmVzVHlwZSArXG4gICAgVEV4cG9ydGVkVmVyc2lvblR5cGUgK1xuICAgIFRGaWVsZERhdGFUeXBlICtcbiAgICBURm9sZGVyVHlwZSArXG4gICAgVEdyaWRSb3dIZWlnaHQgK1xuICAgIFRIeXBlcmxpbmtUeXBlICtcbiAgICBUSW1hZ2VGaWxlRm9ybWF0ICtcbiAgICBUSW1hZ2VNb2RlICtcbiAgICBUSW1hZ2VUeXBlICtcbiAgICBUSW5wbGFjZUhpbnRLaW5kICtcbiAgICBUSVNCTENvbnRleHQgK1xuICAgIFRJdGVtU2hvdyArXG4gICAgVEpvYktpbmQgK1xuICAgIFRKb2luVHlwZSArXG4gICAgVExhYmVsUG9zICtcbiAgICBUTGljZW5zaW5nVHlwZSArXG4gICAgVExpZmVDeWNsZVN0YWdlRm9udENvbG9yICtcbiAgICBUTGlmZUN5Y2xlU3RhZ2VGb250U3R5bGUgK1xuICAgIFRMb2NrYWJsZURldmVsb3BtZW50Q29tcG9uZW50VHlwZSArXG4gICAgVE1heFJlY29yZENvdW50UmVzdHJpY3Rpb25UeXBlICtcbiAgICBUUmFuZ2VWYWx1ZVR5cGUgK1xuICAgIFRSZWxhdGl2ZURhdGUgK1xuICAgIFRSZXBvcnREZXN0aW5hdGlvbiArXG4gICAgVFJlcURhdGFUeXBlICtcbiAgICBUUmVxdWlzaXRlRXZlbnRUeXBlICtcbiAgICBUU0JUaW1lVHlwZSArXG4gICAgVFNlYXJjaFNob3dNb2RlICtcbiAgICBUU2VsZWN0TW9kZSArXG4gICAgVFNpZ25hdHVyZVR5cGUgK1xuICAgIFRTaWduZXJDb250ZW50VHlwZSArXG4gICAgVFN0cmluZ3NTb3J0VHlwZSArXG4gICAgVFN0cmluZ1ZhbHVlVHlwZSArXG4gICAgVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlICtcbiAgICBUVGFza0Fib3J0UmVhc29uICtcbiAgICBUVGV4dFZhbHVlVHlwZSArXG4gICAgVFVzZXJPYmplY3RTdGF0dXMgK1xuICAgIFRVc2VyVHlwZSArXG4gICAgVFZhbHVlc0J1aWxkVHlwZSArXG4gICAgVFZpZXdNb2RlICtcbiAgICBUVmlld1NlbGVjdGlvbk1vZGUgK1xuICAgIFRXaXphcmRBY3Rpb25UeXBlICtcbiAgICBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eSArXG4gICAgVFdpemFyZEZvcm1FbGVtZW50VHlwZSArXG4gICAgVFdpemFyZFBhcmFtVHlwZSArXG4gICAgVFdpemFyZFN0ZXBSZXN1bHQgK1xuICAgIFRXaXphcmRTdGVwVHlwZSArXG4gICAgVFdvcmtBY2Nlc3NUeXBlICtcbiAgICBUV29ya2Zsb3dCbG9ja1R5cGUgK1xuICAgIFRXb3JrZmxvd0RhdGFUeXBlICtcbiAgICBUV29ya0ltcG9ydGFuY2UgK1xuICAgIFRXb3JrUm91dGVUeXBlICtcbiAgICBUV29ya1N0YXRlICtcbiAgICBUV29ya1RleHRCdWlsZGluZ01vZGU7XG5cbiAgLy8g0KHQuNGB0YLQtdC80L3Ri9C1INGE0YPQvdC60YbQuNC4ID09PiBTWVNGVU5DVElPTlNcbiAgdmFyIHN5c3RlbV9mdW5jdGlvbnMgPVxuICAgIFwiQWRkU3ViU3RyaW5nIFwiICtcbiAgICBcIkFkanVzdExpbmVCcmVha3MgXCIgK1xuICAgIFwiQW1vdW50SW5Xb3JkcyBcIiArXG4gICAgXCJBbmFseXNpcyBcIiArXG4gICAgXCJBcnJheURpbUNvdW50IFwiICtcbiAgICBcIkFycmF5SGlnaEJvdW5kIFwiICtcbiAgICBcIkFycmF5TG93Qm91bmQgXCIgK1xuICAgIFwiQXJyYXlPZiBcIiArXG4gICAgXCJBcnJheVJlRGltIFwiICtcbiAgICBcIkFzc2VydCBcIiArXG4gICAgXCJBc3NpZ25lZCBcIiArXG4gICAgXCJCZWdpbk9mTW9udGggXCIgK1xuICAgIFwiQmVnaW5PZlBlcmlvZCBcIiArXG4gICAgXCJCdWlsZFByb2ZpbGluZ09wZXJhdGlvbkFuYWx5c2lzIFwiICtcbiAgICBcIkNhbGxQcm9jZWR1cmUgXCIgK1xuICAgIFwiQ2FuUmVhZEZpbGUgXCIgK1xuICAgIFwiQ0FycmF5RWxlbWVudCBcIiArXG4gICAgXCJDRGF0YVNldFJlcXVpc2l0ZSBcIiArXG4gICAgXCJDaGFuZ2VEYXRlIFwiICtcbiAgICBcIkNoYW5nZVJlZmVyZW5jZURhdGFzZXQgXCIgK1xuICAgIFwiQ2hhciBcIiArXG4gICAgXCJDaGFyUG9zIFwiICtcbiAgICBcIkNoZWNrUGFyYW0gXCIgK1xuICAgIFwiQ2hlY2tQYXJhbVZhbHVlIFwiICtcbiAgICBcIkNvbXBhcmVTdHJpbmdzIFwiICtcbiAgICBcIkNvbnN0YW50RXhpc3RzIFwiICtcbiAgICBcIkNvbnRyb2xTdGF0ZSBcIiArXG4gICAgXCJDb252ZXJ0RGF0ZVN0ciBcIiArXG4gICAgXCJDb3B5IFwiICtcbiAgICBcIkNvcHlGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUFycmF5IFwiICtcbiAgICBcIkNyZWF0ZUNhY2hlZFJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVDb25uZWN0aW9uIFwiICtcbiAgICBcIkNyZWF0ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVEdWFsTGlzdERpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVFZGl0b3IgXCIgK1xuICAgIFwiQ3JlYXRlRXhjZXB0aW9uIFwiICtcbiAgICBcIkNyZWF0ZUZpbGUgXCIgK1xuICAgIFwiQ3JlYXRlRm9sZGVyRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUlucHV0RGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZUxpbmtGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUxpc3QgXCIgK1xuICAgIFwiQ3JlYXRlTG9jayBcIiArXG4gICAgXCJDcmVhdGVNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIkNyZWF0ZU9iamVjdCBcIiArXG4gICAgXCJDcmVhdGVPcGVuRGlhbG9nIFwiICtcbiAgICBcIkNyZWF0ZVByb2dyZXNzIFwiICtcbiAgICBcIkNyZWF0ZVF1ZXJ5IFwiICtcbiAgICBcIkNyZWF0ZVJlZmVyZW5jZSBcIiArXG4gICAgXCJDcmVhdGVSZXBvcnQgXCIgK1xuICAgIFwiQ3JlYXRlU2F2ZURpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVTY3JpcHQgXCIgK1xuICAgIFwiQ3JlYXRlU1FMUGl2b3RGdW5jdGlvbiBcIiArXG4gICAgXCJDcmVhdGVTdHJpbmdMaXN0IFwiICtcbiAgICBcIkNyZWF0ZVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIkNTZWxlY3RTUUwgXCIgK1xuICAgIFwiQ1NRTCBcIiArXG4gICAgXCJDU3ViU3RyaW5nIFwiICtcbiAgICBcIkN1cnJlbnRVc2VySUQgXCIgK1xuICAgIFwiQ3VycmVudFVzZXJOYW1lIFwiICtcbiAgICBcIkN1cnJlbnRWZXJzaW9uIFwiICtcbiAgICBcIkRhdGFTZXRMb2NhdGVFeCBcIiArXG4gICAgXCJEYXRlRGlmZiBcIiArXG4gICAgXCJEYXRlVGltZURpZmYgXCIgK1xuICAgIFwiRGF0ZVRvU3RyIFwiICtcbiAgICBcIkRheU9mV2VlayBcIiArXG4gICAgXCJEZWxldGVGaWxlIFwiICtcbiAgICBcIkRpcmVjdG9yeUV4aXN0cyBcIiArXG4gICAgXCJEaXNhYmxlQ2hlY2tBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiRGlzYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJEaXNhYmxlTWFzc1Rhc2tTZW5kaW5nUmVzdHJpY3Rpb25zIFwiICtcbiAgICBcIkRyb3BUYWJsZSBcIiArXG4gICAgXCJEdXBlU3RyaW5nIFwiICtcbiAgICBcIkVkaXRUZXh0IFwiICtcbiAgICBcIkVuYWJsZUNoZWNrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIkVuYWJsZUNoZWNrRnVsbFNob3dpbmdSZXN0cmljdGlvbiBcIiArXG4gICAgXCJFbmFibGVNYXNzVGFza1NlbmRpbmdSZXN0cmljdGlvbnMgXCIgK1xuICAgIFwiRW5kT2ZNb250aCBcIiArXG4gICAgXCJFbmRPZlBlcmlvZCBcIiArXG4gICAgXCJFeGNlcHRpb25FeGlzdHMgXCIgK1xuICAgIFwiRXhjZXB0aW9uc09mZiBcIiArXG4gICAgXCJFeGNlcHRpb25zT24gXCIgK1xuICAgIFwiRXhlY3V0ZSBcIiArXG4gICAgXCJFeGVjdXRlUHJvY2VzcyBcIiArXG4gICAgXCJFeGl0IFwiICtcbiAgICBcIkV4cGFuZEVudmlyb25tZW50VmFyaWFibGVzIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlRHJpdmUgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVFeHQgXCIgK1xuICAgIFwiRXh0cmFjdEZpbGVOYW1lIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlUGF0aCBcIiArXG4gICAgXCJFeHRyYWN0UGFyYW1zIFwiICtcbiAgICBcIkZpbGVFeGlzdHMgXCIgK1xuICAgIFwiRmlsZVNpemUgXCIgK1xuICAgIFwiRmluZEZpbGUgXCIgK1xuICAgIFwiRmluZFN1YlN0cmluZyBcIiArXG4gICAgXCJGaXJtQ29udGV4dCBcIiArXG4gICAgXCJGb3JjZURpcmVjdG9yaWVzIFwiICtcbiAgICBcIkZvcm1hdCBcIiArXG4gICAgXCJGb3JtYXREYXRlIFwiICtcbiAgICBcIkZvcm1hdE51bWVyaWMgXCIgK1xuICAgIFwiRm9ybWF0U1FMRGF0ZSBcIiArXG4gICAgXCJGb3JtYXRTdHJpbmcgXCIgK1xuICAgIFwiRnJlZUV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRDb21wb25lbnQgXCIgK1xuICAgIFwiR2V0Q29tcG9uZW50TGF1bmNoUGFyYW0gXCIgK1xuICAgIFwiR2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiR2V0TGFzdEV4Y2VwdGlvbiBcIiArXG4gICAgXCJHZXRSZWZlcmVuY2VSZWNvcmQgXCIgK1xuICAgIFwiR2V0UmVmVHlwZUJ5UmVmSUQgXCIgK1xuICAgIFwiR2V0VGFibGVJRCBcIiArXG4gICAgXCJHZXRUZW1wRm9sZGVyIFwiICtcbiAgICBcIklmVGhlbiBcIiArXG4gICAgXCJJbiBcIiArXG4gICAgXCJJbmRleE9mIFwiICtcbiAgICBcIklucHV0RGlhbG9nIFwiICtcbiAgICBcIklucHV0RGlhbG9nRXggXCIgK1xuICAgIFwiSW50ZXJhY3RpdmVNb2RlIFwiICtcbiAgICBcIklzRmlsZUxvY2tlZCBcIiArXG4gICAgXCJJc0dyYXBoaWNGaWxlIFwiICtcbiAgICBcIklzTnVtZXJpYyBcIiArXG4gICAgXCJMZW5ndGggXCIgK1xuICAgIFwiTG9hZFN0cmluZyBcIiArXG4gICAgXCJMb2FkU3RyaW5nRm10IFwiICtcbiAgICBcIkxvY2FsVGltZVRvVVRDIFwiICtcbiAgICBcIkxvd2VyQ2FzZSBcIiArXG4gICAgXCJNYXggXCIgK1xuICAgIFwiTWVzc2FnZUJveCBcIiArXG4gICAgXCJNZXNzYWdlQm94RXggXCIgK1xuICAgIFwiTWltZURlY29kZUJpbmFyeSBcIiArXG4gICAgXCJNaW1lRGVjb2RlU3RyaW5nIFwiICtcbiAgICBcIk1pbWVFbmNvZGVCaW5hcnkgXCIgK1xuICAgIFwiTWltZUVuY29kZVN0cmluZyBcIiArXG4gICAgXCJNaW4gXCIgK1xuICAgIFwiTW9uZXlJbldvcmRzIFwiICtcbiAgICBcIk1vdmVGaWxlIFwiICtcbiAgICBcIk5ld0lEIFwiICtcbiAgICBcIk5vdyBcIiArXG4gICAgXCJPcGVuRmlsZSBcIiArXG4gICAgXCJPcmQgXCIgK1xuICAgIFwiUHJlY2lzaW9uIFwiICtcbiAgICBcIlJhaXNlIFwiICtcbiAgICBcIlJlYWRDZXJ0aWZpY2F0ZUZyb21GaWxlIFwiICtcbiAgICBcIlJlYWRGaWxlIFwiICtcbiAgICBcIlJlZmVyZW5jZUNvZGVCeUlEIFwiICtcbiAgICBcIlJlZmVyZW5jZU51bWJlciBcIiArXG4gICAgXCJSZWZlcmVuY2VSZXF1aXNpdGVNb2RlIFwiICtcbiAgICBcIlJlZmVyZW5jZVJlcXVpc2l0ZVZhbHVlIFwiICtcbiAgICBcIlJlZ2lvbkRhdGVTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25OdW1iZXJTZXR0aW5ncyBcIiArXG4gICAgXCJSZWdpb25UaW1lU2V0dGluZ3MgXCIgK1xuICAgIFwiUmVnUmVhZCBcIiArXG4gICAgXCJSZWdXcml0ZSBcIiArXG4gICAgXCJSZW5hbWVGaWxlIFwiICtcbiAgICBcIlJlcGxhY2UgXCIgK1xuICAgIFwiUm91bmQgXCIgK1xuICAgIFwiU2VsZWN0U2VydmVyQ29kZSBcIiArXG4gICAgXCJTZWxlY3RTUUwgXCIgK1xuICAgIFwiU2VydmVyRGF0ZVRpbWUgXCIgK1xuICAgIFwiU2V0Q29uc3RhbnQgXCIgK1xuICAgIFwiU2V0TWFuYWdlZEZvbGRlckZpZWxkc1N0YXRlIFwiICtcbiAgICBcIlNob3dDb25zdGFudHNJbnB1dERpYWxvZyBcIiArXG4gICAgXCJTaG93TWVzc2FnZSBcIiArXG4gICAgXCJTbGVlcCBcIiArXG4gICAgXCJTcGxpdCBcIiArXG4gICAgXCJTUUwgXCIgK1xuICAgIFwiU1FMMlhMU1RBQiBcIiArXG4gICAgXCJTUUxQcm9maWxpbmdTZW5kUmVwb3J0IFwiICtcbiAgICBcIlN0clRvRGF0ZSBcIiArXG4gICAgXCJTdWJTdHJpbmcgXCIgK1xuICAgIFwiU3ViU3RyaW5nQ291bnQgXCIgK1xuICAgIFwiU3lzdGVtU2V0dGluZyBcIiArXG4gICAgXCJUaW1lIFwiICtcbiAgICBcIlRpbWVEaWZmIFwiICtcbiAgICBcIlRvZGF5IFwiICtcbiAgICBcIlRyYW5zbGl0ZXJhdGUgXCIgK1xuICAgIFwiVHJpbSBcIiArXG4gICAgXCJVcHBlckNhc2UgXCIgK1xuICAgIFwiVXNlclN0YXR1cyBcIiArXG4gICAgXCJVVENUb0xvY2FsVGltZSBcIiArXG4gICAgXCJWYWxpZGF0ZVhNTCBcIiArXG4gICAgXCJWYXJJc0NsZWFyIFwiICtcbiAgICBcIlZhcklzRW1wdHkgXCIgK1xuICAgIFwiVmFySXNOdWxsIFwiICtcbiAgICBcIldvcmtUaW1lRGlmZiBcIiArXG4gICAgXCJXcml0ZUZpbGUgXCIgK1xuICAgIFwiV3JpdGVGaWxlRXggXCIgK1xuICAgIFwiV3JpdGVPYmplY3RIaXN0b3J5IFwiICtcbiAgICBcItCQ0L3QsNC70LjQtyBcIiArXG4gICAgXCLQkdCw0LfQsNCU0LDQvdC90YvRhSBcIiArXG4gICAgXCLQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCR0LvQvtC60JXRgdGC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCY0L3RhNC+IFwiICtcbiAgICBcItCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCS0LLQvtC0IFwiICtcbiAgICBcItCS0LLQvtC00JzQtdC90Y4gXCIgK1xuICAgIFwi0JLQtdC00KEgXCIgK1xuICAgIFwi0JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCS0LXRgNGF0L3Rj9GP0JPRgNCw0L3QuNGG0LDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQktC90LXRiNCf0YDQvtCz0YAgXCIgK1xuICAgIFwi0JLQvtGB0YHRgiBcIiArXG4gICAgXCLQktGA0LXQvNC10L3QvdCw0Y/Qn9Cw0L/QutCwIFwiICtcbiAgICBcItCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0JLRi9Cx0L7RgFNRTCBcIiArXG4gICAgXCLQktGL0LHRgNCw0YLRjNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQktGL0LTQtdC70LjRgtGM0KHRgtGAIFwiICtcbiAgICBcItCS0YvQt9Cy0LDRgtGMIFwiICtcbiAgICBcItCS0YvQv9C+0LvQvdC40YLRjCBcIiArXG4gICAgXCLQktGL0L/Qn9GA0L7Qs9GAIFwiICtcbiAgICBcItCT0YDQsNGE0LjRh9C10YHQutC40LnQpNCw0LnQuyBcIiArXG4gICAgXCLQk9GA0YPQv9C/0LDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QviBcIiArXG4gICAgXCLQlNCw0YLQsNCS0YDQtdC80Y/QodC10YDQsiBcIiArXG4gICAgXCLQlNC10L3RjNCd0LXQtNC10LvQuCBcIiArXG4gICAgXCLQlNC40LDQu9C+0LPQlNCw0J3QtdGCIFwiICtcbiAgICBcItCU0LvQuNC90LDQodGC0YAgXCIgK1xuICAgIFwi0JTQvtCx0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCV0J/Rg9GB0YLQviBcIiArXG4gICAgXCLQldGB0LvQuNCi0L4gXCIgK1xuICAgIFwi0JXQp9C40YHQu9C+IFwiICtcbiAgICBcItCX0LDQvNCf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQl9Cw0L/QuNGB0YzQodC/0YDQsNCy0L7Rh9C90LjQutCwIFwiICtcbiAgICBcItCX0L3QsNGH0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQlNCi0LjQv9Ch0L/RgCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCU0LjRgdC6IFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0JjQvNGP0KTQsNC50LvQsCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCf0YPRgtGMIFwiICtcbiAgICBcItCY0LfQstC70LXRh9GM0KDQsNGB0YjQuNGA0LXQvdC40LUgXCIgK1xuICAgIFwi0JjQt9C80JTQsNGCIFwiICtcbiAgICBcItCY0LfQvNC10L3QuNGC0YzQoNCw0LfQvNC10YDQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC30LzQtdGA0LXQvdC40LnQnNCw0YHRgdC40LLQsCBcIiArXG4gICAgXCLQmNC80Y/QntGA0LMgXCIgK1xuICAgIFwi0JjQvNGP0J/QvtC70Y/QodC/0YAgXCIgK1xuICAgIFwi0JjQvdC00LXQutGBIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCX0LDQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCY0L3QtNC40LrQsNGC0L7RgNCo0LDQsyBcIiArXG4gICAgXCLQmNC90YLQtdGA0LDQutGC0LjQstC90YvQudCg0LXQttC40LwgXCIgK1xuICAgIFwi0JjRgtC+0LPQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0JrQvtC00JLQuNC00JLQtdC00KHQv9GAIFwiICtcbiAgICBcItCa0L7QtNCS0LjQtNCh0L/RgNCf0L7QmNCUIFwiICtcbiAgICBcItCa0L7QtNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0JrQvtC00KHQuNC80LLQvtC70LAgXCIgK1xuICAgIFwi0JrQvtC00KHQv9GAIFwiICtcbiAgICBcItCa0L7Qu9Cf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQmtC+0LvQn9GA0L7QvyBcIiArXG4gICAgXCLQmtC+0L3QnNC10YEgXCIgK1xuICAgIFwi0JrQvtC90YHRgiBcIiArXG4gICAgXCLQmtC+0L3RgdGC0JXRgdGC0YwgXCIgK1xuICAgIFwi0JrQvtC90YHRgtCX0L3QsNGHIFwiICtcbiAgICBcItCa0L7QvdCi0YDQsNC9IFwiICtcbiAgICBcItCa0L7Qv9C40YDQvtCy0LDRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0JrQvtC/0LjRj9Ch0YLRgCBcIiArXG4gICAgXCLQmtCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQmtCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0LrRgSBcIiArXG4gICAgXCLQnNCw0LrRgdCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQnNCw0YHRgdC40LIgXCIgK1xuICAgIFwi0JzQtdC90Y4gXCIgK1xuICAgIFwi0JzQtdC90Y7QoNCw0YHRiCBcIiArXG4gICAgXCLQnNC40L0gXCIgK1xuICAgIFwi0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCd0LDQudGC0LjQoNCw0YHRiCBcIiArXG4gICAgXCLQndCw0LjQvNCS0LjQtNCh0L/RgCBcIiArXG4gICAgXCLQndCw0LjQvNCf0L5BbmFsaXQgXCIgK1xuICAgIFwi0J3QsNC40LzQodC/0YAgXCIgK1xuICAgIFwi0J3QsNGB0YLRgNC+0LjRgtGM0J/QtdGA0LXQstC+0LTRi9Ch0YLRgNC+0LogXCIgK1xuICAgIFwi0J3QsNGH0JzQtdGBIFwiICtcbiAgICBcItCd0LDRh9Ci0YDQsNC9IFwiICtcbiAgICBcItCd0LjQttC90Y/Rj9CT0YDQsNC90LjRhtCw0JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0J3QvtC80LXRgNCh0L/RgCBcIiArXG4gICAgXCLQndCf0LXRgNC40L7QtCBcIiArXG4gICAgXCLQntC60L3QviBcIiArXG4gICAgXCLQntC60YAgXCIgK1xuICAgIFwi0J7QutGA0YPQttC10L3QuNC1IFwiICtcbiAgICBcItCe0YLQu9CY0L3RhNCU0L7QsdCw0LLQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtC70JjQvdGE0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0J7RgtGH0LXRgiBcIiArXG4gICAgXCLQntGC0YfQtdGC0JDQvdCw0LsgXCIgK1xuICAgIFwi0J7RgtGH0LXRgtCY0L3RgiBcIiArXG4gICAgXCLQn9Cw0L/QutCw0KHRg9GJ0LXRgdGC0LLRg9C10YIgXCIgK1xuICAgIFwi0J/QsNGD0LfQsCBcIiArXG4gICAgXCLQn9CS0YvQsdC+0YBTUUwgXCIgK1xuICAgIFwi0J/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQn9C10YDQtdC80LXQvdC90YvQtSBcIiArXG4gICAgXCLQn9C10YDQtdC80LXRgdGC0LjRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCf0L7QuNGB0LrQn9C+0LTRgdGC0YAgXCIgK1xuICAgIFwi0J/QvtC40YHQutCh0YLRgCBcIiArXG4gICAgXCLQn9C+0LvRg9GH0LjRgtGM0JjQlNCi0LDQsdC70LjRhtGLIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+IFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCY0JQgXCIgK1xuICAgIFwi0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0JjQvNGPIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCh0YLQsNGC0YPRgSBcIiArXG4gICAgXCLQn9GA0LXRgNCy0LDRgtGMIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCf0LDRgNCw0LzQtdGC0YAgXCIgK1xuICAgIFwi0J/RgNC+0LLQtdGA0LjRgtGM0J/QsNGA0LDQvNC10YLRgNCX0L3QsNGHIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCj0YHQu9C+0LLQuNC1IFwiICtcbiAgICBcItCg0LDQt9Cx0KHRgtGAIFwiICtcbiAgICBcItCg0LDQt9C90JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgiBcIiArXG4gICAgXCLQoNCw0LfQvdCU0LDRgtCw0JLRgNC10LzRjyBcIiArXG4gICAgXCLQoNCw0LfQvdCg0LDQsdCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JLRgNC10LwgXCIgK1xuICAgIFwi0KDQtdCz0KPRgdGC0JTQsNGCIFwiICtcbiAgICBcItCg0LXQs9Cj0YHRgtCn0YHQuyBcIiArXG4gICAgXCLQoNC10LTQotC10LrRgdGCIFwiICtcbiAgICBcItCg0LXQtdGB0YLRgNCX0LDQv9C40YHRjCBcIiArXG4gICAgXCLQoNC10LXRgdGC0YDQodC/0LjRgdC+0LrQmNC80LXQvdCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KDQtdC10YHRgtGA0KfRgtC10L3QuNC1IFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GAIFwiICtcbiAgICBcItCg0LXQutCy0KHQv9GA0J/RgCBcIiArXG4gICAgXCLQodC10LPQvtC00L3RjyBcIiArXG4gICAgXCLQodC10LnRh9Cw0YEgXCIgK1xuICAgIFwi0KHQtdGA0LLQtdGAIFwiICtcbiAgICBcItCh0LXRgNCy0LXRgNCf0YDQvtGG0LXRgdGB0JjQlCBcIiArXG4gICAgXCLQodC10YDRgtC40YTQuNC60LDRgtCk0LDQudC70KHRh9C40YLQsNGC0YwgXCIgK1xuICAgIFwi0KHQttCf0YDQvtCxIFwiICtcbiAgICBcItCh0LjQvNCy0L7QuyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCU0LjRgNC10LrRgtGD0LzQmtC+0LQgXCIgK1xuICAgIFwi0KHQuNGB0YLQtdC80LDQmNC90YTQvtGA0LzQsNGG0LjRjyBcIiArXG4gICAgXCLQodC40YHRgtC10LzQsNCa0L7QtCBcIiArXG4gICAgXCLQodC+0LTQtdGA0LbQuNGCIFwiICtcbiAgICBcItCh0L7QtdC00LjQvdC10L3QuNC10JfQsNC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KHQvtC10LTQuNC90LXQvdC40LXQntGC0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7QsyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9CS0YvQsdC+0YDQsNCY0LfQlNCy0YPRhdCh0L/QuNGB0LrQvtCyIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0JLRi9Cx0L7RgNCw0J/QsNC/0LrQuCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9Ce0YLQutGA0YvRgtC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JTQuNCw0LvQvtCz0KHQvtGF0YDQsNC90LXQvdC40Y/QpNCw0LnQu9CwIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JfQsNC/0YDQvtGBIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjQvdC00LjQutCw0YLQvtGAIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JjRgdC60LvRjtGH0LXQvdC40LUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQmtGN0YjQuNGA0L7QstCw0L3QvdGL0LnQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCc0LDRgdGB0LjQsiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCd0LDQsdC+0YDQlNCw0L3QvdGL0YUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntCx0YrQtdC60YIgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQntGC0YfQtdGCIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0J/QsNC/0LrRgyBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCg0LXQtNCw0LrRgtC+0YAgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC+0LXQtNC40L3QtdC90LjQtSBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0L/QuNGB0L7QutCh0YLRgNC+0LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHQvtC30LTQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGB0YLQodC/0YAgXCIgK1xuICAgIFwi0KHQvtGF0YAgXCIgK1xuICAgIFwi0KHQvtGF0YDQodC/0YAgXCIgK1xuICAgIFwi0KHQv9C40YHQvtC60KHQuNGB0YLQtdC8IFwiICtcbiAgICBcItCh0L/RgCBcIiArXG4gICAgXCLQodC/0YDQsNCy0L7Rh9C90LjQuiBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCV0YHRgtGMIFwiICtcbiAgICBcItCh0L/RgNCR0LvQvtC60KHQvdGP0YLRjCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCh0L3Rj9GC0YzQoNCw0YHRiCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCY0LfQvNCd0LDQsdCU0LDQvSBcIiArXG4gICAgXCLQodC/0YDQmtC+0LQgXCIgK1xuICAgIFwi0KHQv9GA0J3QvtC80LXRgCBcIiArXG4gICAgXCLQodC/0YDQntCx0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCh0L/RgNCe0YLQvNC10L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0J/QsNGA0LDQvCBcIiArXG4gICAgXCLQodC/0YDQn9C+0LvQtdCX0L3QsNGHIFwiICtcbiAgICBcItCh0L/RgNCf0L7Qu9C10JjQvNGPIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCyIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0JLQstC10LTQl9C9IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0J3QvtCy0YvQtSBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCf0YAgXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQn9GA0LXQtNCX0L0gXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQoNC10LbQuNC8IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0KLQuNC/0KLQtdC60YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0LfQtNCw0YLRjCBcIiArXG4gICAgXCLQodC/0YDQodC+0YHRgiBcIiArXG4gICAgXCLQodC/0YDQodC+0YXRgNCw0L3QuNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70JjRgtC+0LMgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGAIFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCa0L7QuyBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNCw0LrRgSBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQnNC40L0gXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0J/RgNC10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQu9C10LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KHQvtC30LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0KPQtCBcIiArXG4gICAgXCLQodC/0YDQotC10LrQn9GA0LXQtNGB0YIgXCIgK1xuICAgIFwi0KHQv9GA0KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KHRgNCw0LLQvdC40YLRjNCh0YLRgCBcIiArXG4gICAgXCLQodGC0YDQktC10YDRhdCg0LXQs9C40YHRgtGAIFwiICtcbiAgICBcItCh0YLRgNCd0LjQttC90KDQtdCz0LjRgdGC0YAgXCIgK1xuICAgIFwi0KHRgtGA0KLQsdC70KHQv9GAIFwiICtcbiAgICBcItCh0YPQvNCf0YDQvtC/IFwiICtcbiAgICBcItCh0YbQtdC90LDRgNC40LkgXCIgK1xuICAgIFwi0KHRhtC10L3QsNGA0LjQudCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KLQtdC60JLQtdGA0YHQuNGPIFwiICtcbiAgICBcItCi0LXQutCe0YDQsyBcIiArXG4gICAgXCLQotC+0YfQvSBcIiArXG4gICAgXCLQotGA0LDQvSBcIiArXG4gICAgXCLQotGA0LDQvdGB0LvQuNGC0LXRgNCw0YbQuNGPIFwiICtcbiAgICBcItCj0LTQsNC70LjRgtGM0KLQsNCx0LvQuNGG0YMgXCIgK1xuICAgIFwi0KPQtNCw0LvQuNGC0YzQpNCw0LnQuyBcIiArXG4gICAgXCLQo9C00KHQv9GAIFwiICtcbiAgICBcItCj0LTQodGC0YDQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0KPRgdGCIFwiICtcbiAgICBcItCj0YHRgtCw0L3QvtCy0LrQuNCa0L7QvdGB0YLQsNC90YIgXCIgK1xuICAgIFwi0KTQsNC50LvQkNGC0YDQuNCx0YPRgtCh0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JDRgtGA0LjQsdGD0YLQo9GB0YLQsNC90L7QstC40YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KTQsNC50LvQktGA0LXQvNGP0KPRgdGC0LDQvdC+0LLQuNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQktGL0LHRgNCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CX0LDQvdGP0YIgXCIgK1xuICAgIFwi0KTQsNC50LvQl9Cw0L/QuNGB0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JjRgdC60LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JrQvtC/0LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQnNC+0LbQvdC+0KfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J7RgtC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC40LzQtdC90L7QstCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cf0LXRgNC10LrQvtC00LjRgNC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC80LXRgdGC0LjRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J/RgNC+0YHQvNC+0YLRgNC10YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cg0LDQt9C80LXRgCBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0L7Qt9C00LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KHRgdGL0LvQutCw0KHQvtC30LTQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQodGD0YnQtdGB0YLQstGD0LXRgiBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KPQtNCw0LvQuNGC0YwgXCIgK1xuICAgIFwi0KTQvNGCU1FM0JTQsNGCIFwiICtcbiAgICBcItCk0LzRgtCU0LDRgiBcIiArXG4gICAgXCLQpNC80YLQodGC0YAgXCIgK1xuICAgIFwi0KTQvNGC0KfRgdC7IFwiICtcbiAgICBcItCk0L7RgNC80LDRgiBcIiArXG4gICAgXCLQptCc0LDRgdGB0LjQstCt0LvQtdC80LXQvdGCIFwiICtcbiAgICBcItCm0J3QsNCx0L7RgNCU0LDQvdC90YvRhdCg0LXQutCy0LjQt9C40YIgXCIgK1xuICAgIFwi0KbQn9C+0LTRgdGC0YAgXCI7XG5cbiAgLy8g0J/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0LUg0L/QtdGA0LXQvNC10L3QvdGL0LUgPT0+IGJ1aWx0X2luXG4gIHZhciBwcmVkZWZpbmVkX3ZhcmlhYmxlcyA9XG4gICAgXCJBbHRTdGF0ZSBcIiArXG4gICAgXCJBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJDYWxsVHlwZSBcIiArXG4gICAgXCJDb21wb25lbnRUb2tlbnMgXCIgK1xuICAgIFwiQ3JlYXRlZEpvYnMgXCIgK1xuICAgIFwiQ3JlYXRlZE5vdGljZXMgXCIgK1xuICAgIFwiQ29udHJvbFN0YXRlIFwiICtcbiAgICBcIkRpYWxvZ1Jlc3VsdCBcIiArXG4gICAgXCJEaWFsb2dzIFwiICtcbiAgICBcIkVEb2N1bWVudHMgXCIgK1xuICAgIFwiRURvY3VtZW50VmVyc2lvblNvdXJjZSBcIiArXG4gICAgXCJGb2xkZXJzIFwiICtcbiAgICBcIkdsb2JhbElEcyBcIiArXG4gICAgXCJKb2IgXCIgK1xuICAgIFwiSm9icyBcIiArXG4gICAgXCJJbnB1dFZhbHVlIFwiICtcbiAgICBcIkxvb2tVcFJlZmVyZW5jZSBcIiArXG4gICAgXCJMb29rVXBSZXF1aXNpdGVOYW1lcyBcIiArXG4gICAgXCJMb29rVXBTZWFyY2ggXCIgK1xuICAgIFwiT2JqZWN0IFwiICtcbiAgICBcIlBhcmVudENvbXBvbmVudCBcIiArXG4gICAgXCJQcm9jZXNzZXMgXCIgK1xuICAgIFwiUmVmZXJlbmNlcyBcIiArXG4gICAgXCJSZXF1aXNpdGUgXCIgK1xuICAgIFwiUmVwb3J0TmFtZSBcIiArXG4gICAgXCJSZXBvcnRzIFwiICtcbiAgICBcIlJlc3VsdCBcIiArXG4gICAgXCJTY3JpcHRzIFwiICtcbiAgICBcIlNlYXJjaGVzIFwiICtcbiAgICBcIlNlbGVjdGVkQXR0YWNobWVudHMgXCIgK1xuICAgIFwiU2VsZWN0ZWRJdGVtcyBcIiArXG4gICAgXCJTZWxlY3RNb2RlIFwiICtcbiAgICBcIlNlbmRlciBcIiArXG4gICAgXCJTZXJ2ZXJFdmVudHMgXCIgK1xuICAgIFwiU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiU2hpZnRTdGF0ZSBcIiArXG4gICAgXCJTdWJUYXNrIFwiICtcbiAgICBcIlN5c3RlbURpYWxvZ3MgXCIgK1xuICAgIFwiVGFza3MgXCIgK1xuICAgIFwiV2l6YXJkIFwiICtcbiAgICBcIldpemFyZHMgXCIgK1xuICAgIFwiV29yayBcIiArXG4gICAgXCLQktGL0LfQvtCy0KHQv9C+0YHQvtCxIFwiICtcbiAgICBcItCY0LzRj9Ce0YLRh9C10YLQsCBcIiArXG4gICAgXCLQoNC10LrQstCX0L3QsNGHIFwiO1xuXG4gIC8vINCY0L3RgtC10YDRhNC10LnRgdGLID09PiB0eXBlXG4gIHZhciBpbnRlcmZhY2VzID1cbiAgICBcIklBcHBsaWNhdGlvbiBcIiArXG4gICAgXCJJQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklBY2NvdW50UmVwb3NpdG9yeSBcIiArXG4gICAgXCJJQWNjb3VudFNlbGVjdGlvblJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJQWN0aW9uIFwiICtcbiAgICBcIklBY3Rpb25MaXN0IFwiICtcbiAgICBcIklBZG1pbmlzdHJhdGlvbkhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJQW5jaG9ycyBcIiArXG4gICAgXCJJQXBwbGljYXRpb24gXCIgK1xuICAgIFwiSUFyY2hpdmVJbmZvIFwiICtcbiAgICBcIklBdHRhY2htZW50IFwiICtcbiAgICBcIklBdHRhY2htZW50TGlzdCBcIiArXG4gICAgXCJJQ2hlY2tMaXN0Qm94IFwiICtcbiAgICBcIklDaGVja1BvaW50ZWRMaXN0IFwiICtcbiAgICBcIklDb2x1bW4gXCIgK1xuICAgIFwiSUNvbXBvbmVudCBcIiArXG4gICAgXCJJQ29tcG9uZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuIFwiICtcbiAgICBcIklDb21wb25lbnRUb2tlbkZhY3RvcnkgXCIgK1xuICAgIFwiSUNvbXBvbmVudFRva2VuSW5mbyBcIiArXG4gICAgXCJJQ29tcFJlY29yZEluZm8gXCIgK1xuICAgIFwiSUNvbm5lY3Rpb24gXCIgK1xuICAgIFwiSUNvbnRlbnRzIFwiICtcbiAgICBcIklDb250cm9sIFwiICtcbiAgICBcIklDb250cm9sSm9iIFwiICtcbiAgICBcIklDb250cm9sSm9iSW5mbyBcIiArXG4gICAgXCJJQ29udHJvbExpc3QgXCIgK1xuICAgIFwiSUNyeXB0byBcIiArXG4gICAgXCJJQ3J5cHRvMiBcIiArXG4gICAgXCJJQ3VzdG9tSm9iIFwiICtcbiAgICBcIklDdXN0b21Kb2JJbmZvIFwiICtcbiAgICBcIklDdXN0b21MaXN0Qm94IFwiICtcbiAgICBcIklDdXN0b21PYmplY3RXaXphcmRTdGVwIFwiICtcbiAgICBcIklDdXN0b21Xb3JrIFwiICtcbiAgICBcIklDdXN0b21Xb3JrSW5mbyBcIiArXG4gICAgXCJJRGF0YVNldCBcIiArXG4gICAgXCJJRGF0YVNldEFjY2Vzc0luZm8gXCIgK1xuICAgIFwiSURhdGFTaWduZXIgXCIgK1xuICAgIFwiSURhdGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGUgXCIgK1xuICAgIFwiSURhdGVSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRGF0ZVZhbHVlIFwiICtcbiAgICBcIklEZWFBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiSURlYU9iamVjdEluZm8gXCIgK1xuICAgIFwiSURldmVsb3BtZW50Q29tcG9uZW50TG9jayBcIiArXG4gICAgXCJJRGlhbG9nIFwiICtcbiAgICBcIklEaWFsb2dGYWN0b3J5IFwiICtcbiAgICBcIklEaWFsb2dQaWNrUmVxdWlzaXRlSXRlbXMgXCIgK1xuICAgIFwiSURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklESUNTRmFjdG9yeSBcIiArXG4gICAgXCJJRG9jUmVxdWlzaXRlIFwiICtcbiAgICBcIklEb2N1bWVudEluZm8gXCIgK1xuICAgIFwiSUR1YWxMaXN0RGlhbG9nIFwiICtcbiAgICBcIklFQ2VydGlmaWNhdGUgXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZUluZm8gXCIgK1xuICAgIFwiSUVDZXJ0aWZpY2F0ZXMgXCIgK1xuICAgIFwiSUVkaXRDb250cm9sIFwiICtcbiAgICBcIklFZGl0b3JGb3JtIFwiICtcbiAgICBcIklFZG1zRXhwbG9yZXIgXCIgK1xuICAgIFwiSUVkbXNPYmplY3QgXCIgK1xuICAgIFwiSUVkbXNPYmplY3REZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRWRtc09iamVjdEZhY3RvcnkgXCIgK1xuICAgIFwiSUVkbXNPYmplY3RJbmZvIFwiICtcbiAgICBcIklFRG9jdW1lbnQgXCIgK1xuICAgIFwiSUVEb2N1bWVudEFjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJJRURvY3VtZW50RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUVEb2N1bWVudEVkaXRvciBcIiArXG4gICAgXCJJRURvY3VtZW50RmFjdG9yeSBcIiArXG4gICAgXCJJRURvY3VtZW50SW5mbyBcIiArXG4gICAgXCJJRURvY3VtZW50U3RvcmFnZSBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbiBcIiArXG4gICAgXCJJRURvY3VtZW50VmVyc2lvbkxpc3REaWFsb2cgXCIgK1xuICAgIFwiSUVEb2N1bWVudFZlcnNpb25Tb3VyY2UgXCIgK1xuICAgIFwiSUVEb2N1bWVudFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUVEb2NWZXJTaWduYXR1cmUgXCIgK1xuICAgIFwiSUVEb2NWZXJzaW9uU3RhdGUgXCIgK1xuICAgIFwiSUVuYWJsZWRNb2RlIFwiICtcbiAgICBcIklFbmNvZGVQcm92aWRlciBcIiArXG4gICAgXCJJRW5jcnlwdGVyIFwiICtcbiAgICBcIklFdmVudCBcIiArXG4gICAgXCJJRXZlbnRMaXN0IFwiICtcbiAgICBcIklFeGNlcHRpb24gXCIgK1xuICAgIFwiSUV4dGVybmFsRXZlbnRzIFwiICtcbiAgICBcIklFeHRlcm5hbEhhbmRsZXIgXCIgK1xuICAgIFwiSUZhY3RvcnkgXCIgK1xuICAgIFwiSUZpZWxkIFwiICtcbiAgICBcIklGaWxlRGlhbG9nIFwiICtcbiAgICBcIklGb2xkZXIgXCIgK1xuICAgIFwiSUZvbGRlckRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklGb2xkZXJEaWFsb2cgXCIgK1xuICAgIFwiSUZvbGRlckZhY3RvcnkgXCIgK1xuICAgIFwiSUZvbGRlckluZm8gXCIgK1xuICAgIFwiSUZvckVhY2ggXCIgK1xuICAgIFwiSUZvcm0gXCIgK1xuICAgIFwiSUZvcm1UaXRsZSBcIiArXG4gICAgXCJJRm9ybVdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSUdsb2JhbElERmFjdG9yeSBcIiArXG4gICAgXCJJR2xvYmFsSURJbmZvIFwiICtcbiAgICBcIklHcmlkIFwiICtcbiAgICBcIklIYXNoZXIgXCIgK1xuICAgIFwiSUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJSHlwZXJMaW5rQ29udHJvbCBcIiArXG4gICAgXCJJSW1hZ2VCdXR0b24gXCIgK1xuICAgIFwiSUltYWdlQ29udHJvbCBcIiArXG4gICAgXCJJSW5uZXJQYW5lbCBcIiArXG4gICAgXCJJSW5wbGFjZUhpbnQgXCIgK1xuICAgIFwiSUludGVnZXJDcml0ZXJpb24gXCIgK1xuICAgIFwiSUludGVnZXJMaXN0IFwiICtcbiAgICBcIklJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklJbnRlZ2VyVmFsdWUgXCIgK1xuICAgIFwiSUlTQkxFZGl0b3JGb3JtIFwiICtcbiAgICBcIklKb2IgXCIgK1xuICAgIFwiSUpvYkRlc2NyaXB0aW9uIFwiICtcbiAgICBcIklKb2JGYWN0b3J5IFwiICtcbiAgICBcIklKb2JGb3JtIFwiICtcbiAgICBcIklKb2JJbmZvIFwiICtcbiAgICBcIklMYWJlbENvbnRyb2wgXCIgK1xuICAgIFwiSUxhcmdlSW50ZWdlckNyaXRlcmlvbiBcIiArXG4gICAgXCJJTGFyZ2VJbnRlZ2VyUmVxdWlzaXRlIFwiICtcbiAgICBcIklMYXJnZUludGVnZXJWYWx1ZSBcIiArXG4gICAgXCJJTGljZW5zZUluZm8gXCIgK1xuICAgIFwiSUxpZmVDeWNsZVN0YWdlIFwiICtcbiAgICBcIklMaXN0IFwiICtcbiAgICBcIklMaXN0Qm94IFwiICtcbiAgICBcIklMb2NhbElESW5mbyBcIiArXG4gICAgXCJJTG9jYWxpemF0aW9uIFwiICtcbiAgICBcIklMb2NrIFwiICtcbiAgICBcIklNZW1vcnlEYXRhU2V0IFwiICtcbiAgICBcIklNZXNzYWdpbmdGYWN0b3J5IFwiICtcbiAgICBcIklNZXRhZGF0YVJlcG9zaXRvcnkgXCIgK1xuICAgIFwiSU5vdGljZSBcIiArXG4gICAgXCJJTm90aWNlSW5mbyBcIiArXG4gICAgXCJJTnVtZXJpY0NyaXRlcmlvbiBcIiArXG4gICAgXCJJTnVtZXJpY1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJTnVtZXJpY1ZhbHVlIFwiICtcbiAgICBcIklPYmplY3QgXCIgK1xuICAgIFwiSU9iamVjdERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklPYmplY3RJbXBvcnRlciBcIiArXG4gICAgXCJJT2JqZWN0SW5mbyBcIiArXG4gICAgXCJJT2JzZXJ2ZXIgXCIgK1xuICAgIFwiSVBhbmVsR3JvdXAgXCIgK1xuICAgIFwiSVBpY2tDcml0ZXJpb24gXCIgK1xuICAgIFwiSVBpY2tQcm9wZXJ0eSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklQaWNrUmVxdWlzaXRlSXRlbSBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZUl0ZW1zIFwiICtcbiAgICBcIklQaWNrVmFsdWUgXCIgK1xuICAgIFwiSVByaXZpbGVnZSBcIiArXG4gICAgXCJJUHJpdmlsZWdlTGlzdCBcIiArXG4gICAgXCJJUHJvY2VzcyBcIiArXG4gICAgXCJJUHJvY2Vzc0ZhY3RvcnkgXCIgK1xuICAgIFwiSVByb2Nlc3NNZXNzYWdlIFwiICtcbiAgICBcIklQcm9ncmVzcyBcIiArXG4gICAgXCJJUHJvcGVydHkgXCIgK1xuICAgIFwiSVByb3BlcnR5Q2hhbmdlRXZlbnQgXCIgK1xuICAgIFwiSVF1ZXJ5IFwiICtcbiAgICBcIklSZWZlcmVuY2UgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUNyaXRlcmlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlRW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJlZmVyZW5jZUhpc3RvcnlEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlSW5mbyBcIiArXG4gICAgXCJJUmVmZXJlbmNlUmVjb3JkQ2FyZFdpemFyZFN0ZXAgXCIgK1xuICAgIFwiSVJlZmVyZW5jZVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZWZlcmVuY2VzRmFjdG9yeSBcIiArXG4gICAgXCJJUmVmZXJlbmNlVmFsdWUgXCIgK1xuICAgIFwiSVJlZlJlcXVpc2l0ZSBcIiArXG4gICAgXCJJUmVwb3J0IFwiICtcbiAgICBcIklSZXBvcnRGYWN0b3J5IFwiICtcbiAgICBcIklSZXF1aXNpdGUgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZURlc2NyaXB0aW9uIFwiICtcbiAgICBcIklSZXF1aXNpdGVEZXNjcmlwdGlvbkxpc3QgXCIgK1xuICAgIFwiSVJlcXVpc2l0ZUZhY3RvcnkgXCIgK1xuICAgIFwiSVJpY2hFZGl0IFwiICtcbiAgICBcIklSb3V0ZVN0ZXAgXCIgK1xuICAgIFwiSVJ1bGUgXCIgK1xuICAgIFwiSVJ1bGVMaXN0IFwiICtcbiAgICBcIklTY2hlbWVCbG9jayBcIiArXG4gICAgXCJJU2NyaXB0IFwiICtcbiAgICBcIklTY3JpcHRGYWN0b3J5IFwiICtcbiAgICBcIklTZWFyY2hDcml0ZXJpYSBcIiArXG4gICAgXCJJU2VhcmNoQ3JpdGVyaW9uIFwiICtcbiAgICBcIklTZWFyY2hEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU2VhcmNoRmFjdG9yeSBcIiArXG4gICAgXCJJU2VhcmNoRm9sZGVySW5mbyBcIiArXG4gICAgXCJJU2VhcmNoRm9yT2JqZWN0RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVNlYXJjaFJlc3VsdFJlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJJU2VjdXJlZENvbnRleHQgXCIgK1xuICAgIFwiSVNlbGVjdERpYWxvZyBcIiArXG4gICAgXCJJU2VydmVyRXZlbnQgXCIgK1xuICAgIFwiSVNlcnZlckV2ZW50RmFjdG9yeSBcIiArXG4gICAgXCJJU2VydmljZURpYWxvZyBcIiArXG4gICAgXCJJU2VydmljZUZhY3RvcnkgXCIgK1xuICAgIFwiSVNpZ25hdHVyZSBcIiArXG4gICAgXCJJU2lnblByb3ZpZGVyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIyIFwiICtcbiAgICBcIklTaWduUHJvdmlkZXIzIFwiICtcbiAgICBcIklTaW1wbGVDcml0ZXJpb24gXCIgK1xuICAgIFwiSVN0cmluZ0NyaXRlcmlvbiBcIiArXG4gICAgXCJJU3RyaW5nTGlzdCBcIiArXG4gICAgXCJJU3RyaW5nUmVxdWlzaXRlIFwiICtcbiAgICBcIklTdHJpbmdSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJU3RyaW5nVmFsdWUgXCIgK1xuICAgIFwiSVN5c3RlbURpYWxvZ3NGYWN0b3J5IFwiICtcbiAgICBcIklTeXN0ZW1JbmZvIFwiICtcbiAgICBcIklUYWJTaGVldCBcIiArXG4gICAgXCJJVGFzayBcIiArXG4gICAgXCJJVGFza0Fib3J0UmVhc29uSW5mbyBcIiArXG4gICAgXCJJVGFza0NhcmRXaXphcmRTdGVwIFwiICtcbiAgICBcIklUYXNrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVRhc2tGYWN0b3J5IFwiICtcbiAgICBcIklUYXNrSW5mbyBcIiArXG4gICAgXCJJVGFza1JvdXRlIFwiICtcbiAgICBcIklUZXh0Q3JpdGVyaW9uIFwiICtcbiAgICBcIklUZXh0UmVxdWlzaXRlIFwiICtcbiAgICBcIklUZXh0VmFsdWUgXCIgK1xuICAgIFwiSVRyZWVMaXN0U2VsZWN0RGlhbG9nIFwiICtcbiAgICBcIklVc2VyIFwiICtcbiAgICBcIklVc2VyTGlzdCBcIiArXG4gICAgXCJJVmFsdWUgXCIgK1xuICAgIFwiSVZpZXcgXCIgK1xuICAgIFwiSVdlYkJyb3dzZXJDb250cm9sIFwiICtcbiAgICBcIklXaXphcmQgXCIgK1xuICAgIFwiSVdpemFyZEFjdGlvbiBcIiArXG4gICAgXCJJV2l6YXJkRmFjdG9yeSBcIiArXG4gICAgXCJJV2l6YXJkRm9ybUVsZW1lbnQgXCIgK1xuICAgIFwiSVdpemFyZFBhcmFtIFwiICtcbiAgICBcIklXaXphcmRQaWNrUGFyYW0gXCIgK1xuICAgIFwiSVdpemFyZFJlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXaXphcmRTdGVwIFwiICtcbiAgICBcIklXb3JrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklXb3JrRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVdvcmtmbG93QXNrYWJsZVBhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd0Fza2FibGVQYXJhbXMgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2sgXCIgK1xuICAgIFwiSVdvcmtmbG93QmxvY2tSZXN1bHQgXCIgK1xuICAgIFwiSVdvcmtmbG93RW5hYmxlZE1vZGUgXCIgK1xuICAgIFwiSVdvcmtmbG93UGFyYW0gXCIgK1xuICAgIFwiSVdvcmtmbG93UGlja1BhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd1JlZmVyZW5jZVBhcmFtIFwiICtcbiAgICBcIklXb3JrU3RhdGUgXCIgK1xuICAgIFwiSVdvcmtUcmVlQ3VzdG9tTm9kZSBcIiArXG4gICAgXCJJV29ya1RyZWVKb2JOb2RlIFwiICtcbiAgICBcIklXb3JrVHJlZVRhc2tOb2RlIFwiICtcbiAgICBcIklYTUxFZGl0b3JGb3JtIFwiICtcbiAgICBcIlNCQ3J5cHRvIFwiO1xuXG4gIC8vIGJ1aWx0X2luIDog0LLRgdGC0YDQvtC10L3QvdGL0LUg0LjQu9C4INCx0LjQsdC70LjQvtGC0LXRh9C90YvQtSDQvtCx0YrQtdC60YLRiyAo0LrQvtC90YHRgtCw0L3RgtGLLCDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8pXG4gIHZhciBCVUlMVElOID0gQ09OU1RBTlRTICsgRU5VTVM7XG5cbiAgLy8gY2xhc3M6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC90LDQsdC+0YDRiyDQt9C90LDRh9C10L3QuNC5LCDRgdC40YHRgtC10LzQvdGL0LUg0L7QsdGK0LXQutGC0YssINGE0LDQsdGA0LjQutC4XG4gIHZhciBDTEFTUyA9IHByZWRlZmluZWRfdmFyaWFibGVzO1xuXG4gIC8vIGxpdGVyYWwgOiDQv9GA0LjQvNC40YLQuNCy0L3Ri9C1INGC0LjQv9GLXG4gIHZhciBMSVRFUkFMID0gXCJudWxsIHRydWUgZmFsc2UgbmlsIFwiO1xuXG4gIC8vIG51bWJlciA6INGH0LjRgdC70LBcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gc3RyaW5nIDog0YHRgtGA0L7QutC4XG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJzdHJpbmdcIixcbiAgICB2YXJpYW50czogW3sgYmVnaW46ICdcIicsIGVuZDogJ1wiJyB9LCB7IGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIiB9XSxcbiAgfTtcblxuICAvLyDQotC+0LrQtdC90YtcbiAgdmFyIERPQ1RBR1MgPSB7XG4gICAgY2xhc3NOYW1lOiBcImRvY3RhZ1wiLFxuICAgIGJlZ2luOiBcIlxcXFxiKD86VE9ET3xET05FfEJFR0lOfEVORHxTVFVCfENIR3xGSVhNRXxOT1RFfEJVR3xYWFgpXFxcXGJcIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8g0J7QtNC90L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfTElORV9DT01NRU5UX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICBiZWdpbjogXCIvL1wiLFxuICAgIGVuZDogXCIkXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREUsIERPQ1RBR1NdLFxuICB9O1xuXG4gIC8vINCc0L3QvtCz0L7RgdGC0YDQvtGH0L3Ri9C5INC60L7QvNC80LXQvdGC0LDRgNC40LlcbiAgdmFyIElTQkxfQkxPQ0tfQ09NTUVOVF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgYmVnaW46IFwiL1xcXFwqXCIsXG4gICAgZW5kOiBcIlxcXFwqL1wiLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFLCBET0NUQUdTXSxcbiAgfTtcblxuICAvLyBjb21tZW50IDog0LrQvtC80LzQtdC90YLQsNGA0LjQuFxuICB2YXIgQ09NTUVOVFMgPSB7XG4gICAgdmFyaWFudHM6IFtJU0JMX0xJTkVfQ09NTUVOVF9NT0RFLCBJU0JMX0JMT0NLX0NPTU1FTlRfTU9ERV0sXG4gIH07XG5cbiAgLy8ga2V5d29yZHMgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LBcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IEtFWVdPUkQsXG4gICAgYnVpbHRfaW46IEJVSUxUSU4sXG4gICAgY2xhc3M6IENMQVNTLFxuICAgIGxpdGVyYWw6IExJVEVSQUwsXG4gIH07XG5cbiAgLy8gbWV0aG9kcyA6INC80LXRgtC+0LTRi1xuICB2YXIgTUVUSE9EUyA9IHtcbiAgICBiZWdpbjogXCJcXFxcLlxcXFxzKlwiICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgLy8gdHlwZSA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INGC0LjQv9GLXG4gIHZhciBUWVBFUyA9IHtcbiAgICBjbGFzc05hbWU6IFwidHlwZVwiLFxuICAgIGJlZ2luOiBcIjpbIFxcXFx0XSooXCIgKyBpbnRlcmZhY2VzLnRyaW0oKS5yZXBsYWNlKC9cXHMvZywgXCJ8XCIpICsgXCIpXCIsXG4gICAgZW5kOiBcIlsgXFxcXHRdKj1cIixcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIHZhcmlhYmxlcyA6INC/0LXRgNC10LzQtdC90L3Ri9C1XG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgYmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbVFlQRVMsIE1FVEhPRFNdLFxuICB9O1xuXG4gIC8vINCY0LzQtdC90LAg0YTRg9C90LrRhtC40LlcbiAgdmFyIEZVTkNUSU9OX1RJVExFID0gRlVOQ1RJT05fTkFNRV9JREVOVF9SRSArIFwiXFxcXChcIjtcblxuICB2YXIgVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6IFwidGl0bGVcIixcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogc3lzdGVtX2Z1bmN0aW9ucyxcbiAgICB9LFxuICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSxcbiAgICBlbmQ6IFwiXFxcXChcIixcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICB9O1xuXG4gIC8vIGZ1bmN0aW9uIDog0YTRg9C90LrRhtC40LhcbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZnVuY3Rpb25cIixcbiAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsXG4gICAgZW5kOiBcIlxcXFwpJFwiLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiW1xcXFxbXFxcXF1cXFxcfFxcXFwkXFxcXD8lLH4jQF1cIixcbiAgICBjb250YWluczogW1RJVExFX01PREUsIE1FVEhPRFMsIFZBUklBQkxFUywgU1RSSU5HUywgTlVNQkVSUywgQ09NTUVOVFNdLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wiaXNibFwiXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IFwiXFxcXCR8XFxcXD98JXwsfDskfH58I3xAfDwvXCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEZVTkNUSU9OUyxcbiAgICAgIFRZUEVTLFxuICAgICAgTUVUSE9EUyxcbiAgICAgIFZBUklBQkxFUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBOVU1CRVJTLFxuICAgICAgQ09NTUVOVFMsXG4gICAgXSxcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBKQVZBX0lERU5UX1JFID0gJ1tcXHUwMEMwLVxcdTAyQjhhLXpBLVpfJF1bXFx1MDBDMC1cXHUwMkI4YS16QS1aXyQwLTldKic7XG4gIHZhciBHRU5FUklDX0lERU5UX1JFID0gSkFWQV9JREVOVF9SRSArICcoPCcgKyBKQVZBX0lERU5UX1JFICsgJyhcXFxccyosXFxcXHMqJyArIEpBVkFfSURFTlRfUkUgKyAnKSo+KT8nO1xuICB2YXIgS0VZV09SRFMgPVxuICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHZhciBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgJyArXG4gICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICdwYWNrYWdlIGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdGhyb3dzIHByb3RlY3RlZCBwdWJsaWMgcHJpdmF0ZSAnICtcbiAgICAnbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8nO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvdGVjaG5vdGVzL2d1aWRlcy9sYW5ndWFnZS91bmRlcnNjb3Jlcy1saXRlcmFscy5odG1sXG4gIHZhciBKQVZBX05VTUJFUl9SRSA9ICdcXFxcYicgK1xuICAgICcoJyArXG4gICAgICAnMFtiQl0oWzAxXStbMDFfXStbMDFdK3xbMDFdKyknICsgLy8gMGIuLi5cbiAgICAgICd8JyArXG4gICAgICAnMFt4WF0oW2EtZkEtRjAtOV0rW2EtZkEtRjAtOV9dK1thLWZBLUYwLTldK3xbYS1mQS1GMC05XSspJyArIC8vIDB4Li4uXG4gICAgICAnfCcgK1xuICAgICAgJygnICtcbiAgICAgICAgJyhbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKShcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKSk/JyArXG4gICAgICAgICd8JyArXG4gICAgICAgICdcXFxcLihbXFxcXGRdK1tcXFxcZF9dK1tcXFxcZF0rfFtcXFxcZF0rKScgK1xuICAgICAgJyknICtcbiAgICAgICcoW2VFXVstK10/XFxcXGQrKT8nICsgLy8gb2N0YWwsIGRlY2ltYWwsIGZsb2F0XG4gICAgJyknICtcbiAgICAnW2xMZkZdPyc7XG4gIHZhciBKQVZBX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEpBVkFfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqc3AnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzxcXC98Iy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6IC9bezs9XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgaWxsZWdhbDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEV4cHJlc3Npb24ga2V5d29yZHMgcHJldmVudCAna2V5d29yZCBOYW1lKC4uLiknIGZyb20gYmVpbmdcbiAgICAgICAgLy8gcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJygnICsgR0VORVJJQ19JREVOVF9SRSArICdcXFxccyspKycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEpBVkFfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIG9mIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgc3RhdGljICcgK1xuICAgICAgLy8gRUNNQVNjcmlwdCA2IG1vZHVsZXMgaW1wb3J0XG4gICAgICAnaW1wb3J0IGZyb20gYXMnXG4gICAgLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAnUHJvbWlzZSdcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyluPycgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyluPycgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnbj8nIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdICAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBIVE1MX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnaHRtbGAnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIH1cbiAgfTtcbiAgdmFyIENTU19URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2Nzc2AnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdjc3MnLFxuICAgIH1cbiAgfTtcbiAgdmFyIFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgSFRNTF9URU1QTEFURSxcbiAgICBDU1NfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIHZhciBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVC5jb250YWlucy5jb25jYXQoW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gIF0pO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydqcycsICdqc3gnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL14jIS8sIGVuZDogLyQvXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBvYmplY3QgYXR0ciBjb250YWluZXJcbiAgICAgICAgYmVnaW46IC9beyxcXG5dXFxzKi8sIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7Y2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiBJREVOVF9SRSwgcmVsZXZhbmNlOiAwfV1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46ICcoXFxcXCguKj9cXFxcKXwnICsgSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogSURFTlRfUkVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHMvLFxuICAgICAgICAgICAgZW5kOiAvXFxzKi8sXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBFNFggLyBKU1hcbiAgICAgICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLyhcXC9bQS1aYS16MC05XFxcXC5fOi1dK3xbQS1aYS16MC05XFxcXC5fOi1dK1xcLyk+LyxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IC88W0EtWmEtejAtOVxcXFwuXzotXStcXHMqXFwvPi8sIHNraXA6IHRydWUgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rLywgZW5kOiAvKFxcL1tBLVphLXowLTlcXFxcLl86LV0rfFtBLVphLXowLTlcXFxcLl86LV0rXFwvKT4vLCBza2lwOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7IGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rXFxzKlxcLz4vLCBza2lwOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAnc2VsZidcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSURFTlRfUkV9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkWyguXS8gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGEgcGF0dGVybiBjb21tb24gdG8gSlMgbGliczogYCQoc29tZXRoaW5nKWAgYW5kIGAkLnNvbWV0aGluZ2BcbiAgICAgIH0sXG4gICAgICBobGpzLk1FVEhPRF9HVUFSRCxcbiAgICAgIHsgLy8gRVM2IGNsYXNzXG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJywgZW5kOiAvW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb25zdHJ1Y3RvciBnZXQgc2V0JywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMoPyEhKS9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgUEFSQU0gPSB7XG4gICAgYmVnaW46IC9bXFx3LV0rICo9LywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogL1tcXHctXSsvfV1cbiAgfTtcbiAgdmFyIFBBUkFNU0JMT0NLID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFtQQVJBTV0sXG4gICAgcmVsZXZhbmNlIDogMFxuICB9O1xuICB2YXIgT1BFUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogLzpbXFx3XFwtLl0rLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFBBVEggPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcQigoW1xcLy5dKVtcXHdcXC0uXFwvPV0rKSsvLFxuICB9O1xuICB2YXIgQ09NTUFORF9QQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogLy0tW1xcd1xcLT1cXC9dKy8sXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd3aWxkZmx5LWNsaSddLFxuICAgIGxleGVtZXM6ICdbYS16XFwtXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWxpYXMgYmF0Y2ggY2QgY2xlYXIgY29tbWFuZCBjb25uZWN0IGNvbm5lY3Rpb24tZmFjdG9yeSBjb25uZWN0aW9uLWluZm8gZGF0YS1zb3VyY2UgZGVwbG95ICcgK1xuICAgICAgJ2RlcGxveW1lbnQtaW5mbyBkZXBsb3ltZW50LW92ZXJsYXkgZWNobyBlY2hvLWRtciBoZWxwIGhpc3RvcnkgaWYgamRiYy1kcml2ZXItaW5mbyBqbXMtcXVldWV8MjAgam1zLXRvcGljfDIwIGxzICcgK1xuICAgICAgJ3BhdGNoIHB3ZCBxdWl0IHJlYWQtYXR0cmlidXRlIHJlYWQtb3BlcmF0aW9uIHJlbG9hZCByb2xsb3V0LXBsYW4gcnVuLWJhdGNoIHNldCBzaHV0ZG93biB0cnkgdW5hbGlhcyAnICtcbiAgICAgICd1bmRlcGxveSB1bnNldCB2ZXJzaW9uIHhhLWRhdGEtc291cmNlJywgLy8gbW9kdWxlXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIENPTU1BTkRfUEFSQU1TLFxuICAgICAgT1BFUkFUSU9OLFxuICAgICAgUEFUSCxcbiAgICAgIFBBUkFNU0JMT0NLXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTElURVJBTFMgPSB7bGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCd9O1xuICB2YXIgQUxMT1dFRF9DT01NRU5UUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICBdXG4gIHZhciBUWVBFUyA9IFtcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuICB2YXIgVkFMVUVfQ09OVEFJTkVSID0ge1xuICAgIGVuZDogJywnLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTXG4gIH07XG4gIHZhciBPQkpFQ1QgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoVkFMVUVfQ09OVEFJTkVSLCB7YmVnaW46IC86L30pXG4gICAgXS5jb25jYXQoQUxMT1dFRF9DT01NRU5UUyksXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICB2YXIgQVJSQVkgPSB7XG4gICAgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW2hsanMuaW5oZXJpdChWQUxVRV9DT05UQUlORVIpXSwgLy8gaW5oZXJpdCBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIHRoYXQgbWFrZXMgc2hhcmVkIG1vZGVzIHdpdGggZW5kc1dpdGhQYXJlbnQgY29tcGlsZSBvbmx5IHRoZSBlbmRpbmcgb2Ygb25lIG9mIHRoZSBwYXJlbnRzXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xuICBUWVBFUy5wdXNoKE9CSkVDVCwgQVJSQVkpO1xuICBBTExPV0VEX0NPTU1FTlRTLmZvckVhY2goZnVuY3Rpb24ocnVsZSkge1xuICAgIFRZUEVTLnB1c2gocnVsZSlcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogVFlQRVMsXG4gICAga2V5d29yZHM6IExJVEVSQUxTLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIFNpbmNlIHRoZXJlIGFyZSBudW1lcm91cyBzcGVjaWFsIG5hbWVzIGluIEp1bGlhLCBpdCBpcyB0b28gbXVjaCB0cm91YmxlXG4gIC8vIHRvIG1haW50YWluIHRoZW0gYnkgaGFuZC4gSGVuY2UgdGhlc2UgbmFtZXMgKGkuZS4ga2V5d29yZHMsIGxpdGVyYWxzIGFuZFxuICAvLyBidWlsdC1pbnMpIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEp1bGlhIHYwLjYgaXRzZWxmIHRocm91Z2hcbiAgLy8gdGhlIGZvbGxvd2luZyBzY3JpcHRzIGZvciBlYWNoLlxuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICAvLyAjIGtleXdvcmQgZ2VuZXJhdG9yLCBtdWx0aS13b3JkIGtleXdvcmRzIGhhbmRsZWQgbWFudWFsbHkgYmVsb3dcbiAgICAvLyBmb3JlYWNoKHByaW50bG4sIFtcImluXCIsIFwiaXNhXCIsIFwid2hlcmVcIl0pXG4gICAgLy8gZm9yIGt3IGluIEJhc2UuUkVQTENvbXBsZXRpb25zLmNvbXBsZXRlX2tleXdvcmQoXCJcIilcbiAgICAvLyAgICAgaWYgIShjb250YWlucyhrdywgXCIgXCIpIHx8IGt3ID09IFwic3RydWN0XCIpXG4gICAgLy8gICAgICAgICBwcmludGxuKGt3KVxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIGlzYSB3aGVyZSAnICtcbiAgICAgICdiYXJlbW9kdWxlIGJlZ2luIGJyZWFrIGNhdGNoIGNjYWxsIGNvbnN0IGNvbnRpbnVlIGRvIGVsc2UgZWxzZWlmIGVuZCBleHBvcnQgZmFsc2UgZmluYWxseSBmb3IgZnVuY3Rpb24gJyArXG4gICAgICAnZ2xvYmFsIGlmIGltcG9ydCBpbXBvcnRhbGwgbGV0IGxvY2FsIG1hY3JvIG1vZHVsZSBxdW90ZSByZXR1cm4gdHJ1ZSB0cnkgdXNpbmcgd2hpbGUgJyArXG4gICAgICAvLyBsZWdhY3ksIHRvIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgcmVsZWFzZVxuICAgICAgJ3R5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAnLFxuXG4gICAgLy8gIyBsaXRlcmFsIGdlbmVyYXRvclxuICAgIC8vIHByaW50bG4oXCJ0cnVlXCIpXG4gICAgLy8gcHJpbnRsbihcImZhbHNlXCIpXG4gICAgLy8gZm9yIG5hbWUgaW4gQmFzZS5SRVBMQ29tcGxldGlvbnMuY29tcGxldGlvbnMoXCJcIiwgMClbMV1cbiAgICAvLyAgICAgdHJ5XG4gICAgLy8gICAgICAgICB2ID0gZXZhbChTeW1ib2wobmFtZSkpXG4gICAgLy8gICAgICAgICBpZiAhKHYgaXNhIEZ1bmN0aW9uIHx8IHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhciB8fCB2IGlzYSBNb2R1bGUgfHwgdiBpc2EgQ29sb24pXG4gICAgLy8gICAgICAgICAgICAgcHJpbnRsbihuYW1lKVxuICAgIC8vICAgICAgICAgZW5kXG4gICAgLy8gICAgIGVuZFxuICAgIC8vIGVuZFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSAnICtcbiAgICAgICdBUkdTIENfTlVMTCBEZXZOdWxsIEVORElBTl9CT00gRU5WIEkgSW5mIEluZjE2IEluZjMyIEluZjY0IEluc2VydGlvblNvcnQgSlVMSUFfSE9NRSBMT0FEX1BBVEggTWVyZ2VTb3J0ICcgK1xuICAgICAgJ05hTiBOYU4xNiBOYU4zMiBOYU42NCBQUk9HUkFNX0ZJTEUgUXVpY2tTb3J0IFJvdW5kRG93biBSb3VuZEZyb21aZXJvIFJvdW5kTmVhcmVzdCBSb3VuZE5lYXJlc3RUaWVzQXdheSAnICtcbiAgICAgICdSb3VuZE5lYXJlc3RUaWVzVXAgUm91bmRUb1plcm8gUm91bmRVcCBTVERFUlIgU1RESU4gU1RET1VUIFZFUlNJT04gY2F0YWxhbiBlfDAgZXV8MCBldWxlcmdhbW1hIGdvbGRlbiBpbSAnICtcbiAgICAgICdub3RoaW5nIHBpIM6zIM+AIM+GICcsXG5cbiAgICAvLyAjIGJ1aWx0X2luIGdlbmVyYXRvcjpcbiAgICAvLyBmb3IgbmFtZSBpbiBCYXNlLlJFUExDb21wbGV0aW9ucy5jb21wbGV0aW9ucyhcIlwiLCAwKVsxXVxuICAgIC8vICAgICB0cnlcbiAgICAvLyAgICAgICAgIHYgPSBldmFsKFN5bWJvbChuYW1lKSlcbiAgICAvLyAgICAgICAgIGlmIHYgaXNhIFR5cGUgfHwgdiBpc2EgVHlwZVZhclxuICAgIC8vICAgICAgICAgICAgIHByaW50bG4obmFtZSlcbiAgICAvLyAgICAgICAgIGVuZFxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBidWlsdF9pbjpcbiAgICAgICdBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgJyArXG4gICAgICAnQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0ICcgK1xuICAgICAgJ0Fic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsICcrXG4gICAgICAnQmlnRmxvYXQgQmlnSW50IEJpdEFycmF5IEJpdE1hdHJpeCBCaXRWZWN0b3IgQm9vbCBCb3VuZHNFcnJvciBCdWZmZXJTdHJlYW0gQ2FjaGluZ1Bvb2wgQ2FwdHVyZWRFeGNlcHRpb24gJyArXG4gICAgICAnQ2FydGVzaWFuSW5kZXggQ2FydGVzaWFuUmFuZ2UgQ2NoYXIgQ2RvdWJsZSBDZmxvYXQgQ2hhbm5lbCBDaGFyIENpbnQgQ2ludG1heF90IENsb25nIENsb25nbG9uZyBDbHVzdGVyTWFuYWdlciAnICtcbiAgICAgICdDbWQgQ29kZUluZm8gQ29sb24gQ29tcGxleCBDb21wbGV4MTI4IENvbXBsZXgzMiBDb21wbGV4NjQgQ29tcG9zaXRlRXhjZXB0aW9uIENvbmRpdGlvbiBDb25qQXJyYXkgQ29uak1hdHJpeCAnICtcbiAgICAgICdDb25qVmVjdG9yIENwdHJkaWZmX3QgQ3Nob3J0IENzaXplX3QgQ3NzaXplX3QgQ3N0cmluZyBDdWNoYXIgQ3VpbnQgQ3VpbnRtYXhfdCBDdWxvbmcgQ3Vsb25nbG9uZyBDdXNob3J0IEN3Y2hhcl90ICcgK1xuICAgICAgJ0N3c3RyaW5nIERhdGFUeXBlIERhdGUgRGF0ZUZvcm1hdCBEYXRlVGltZSBEZW5zZUFycmF5IERlbnNlTWF0cml4IERlbnNlVmVjT3JNYXQgRGVuc2VWZWN0b3IgRGlhZ29uYWwgRGljdCAnICtcbiAgICAgICdEaW1lbnNpb25NaXNtYXRjaCBEaW1zIERpcmVjdEluZGV4U3RyaW5nIERpc3BsYXkgRGl2aWRlRXJyb3IgRG9tYWluRXJyb3IgRU9GRXJyb3IgRWFjaExpbmUgRW51bSBFbnVtZXJhdGUgJyArXG4gICAgICAnRXJyb3JFeGNlcHRpb24gRXhjZXB0aW9uIEV4cG9uZW50aWFsQmFja09mZiBFeHByIEZhY3Rvcml6YXRpb24gRmlsZU1vbml0b3IgRmxvYXQxNiBGbG9hdDMyIEZsb2F0NjQgRnVuY3Rpb24gJyArXG4gICAgICAnRnV0dXJlIEdsb2JhbFJlZiBHb3RvTm9kZSBIVE1MIEhlcm1pdGlhbiBJTyBJT0J1ZmZlciBJT0NvbnRleHQgSU9TdHJlYW0gSVBBZGRyIElQdjQgSVB2NiBJbmRleENhcnRlc2lhbiBJbmRleExpbmVhciAnICtcbiAgICAgICdJbmRleFN0eWxlIEluZXhhY3RFcnJvciBJbml0RXJyb3IgSW50IEludDEyOCBJbnQxNiBJbnQzMiBJbnQ2NCBJbnQ4IEludFNldCBJbnRlZ2VyIEludGVycnVwdEV4Y2VwdGlvbiAnICtcbiAgICAgICdJbnZhbGlkU3RhdGVFeGNlcHRpb24gSXJyYXRpb25hbCBLZXlFcnJvciBMYWJlbE5vZGUgTGluU3BhY2UgTGluZU51bWJlck5vZGUgTG9hZEVycm9yIExvd2VyVHJpYW5ndWxhciBNSU1FIE1hdHJpeCAnICtcbiAgICAgICdNZXJzZW5uZVR3aXN0ZXIgTWV0aG9kIE1ldGhvZEVycm9yIE1ldGhvZFRhYmxlIE1vZHVsZSBOVHVwbGUgTmV3dmFyTm9kZSBOdWxsRXhjZXB0aW9uIE51bGxhYmxlIE51bWJlciBPYmplY3RJZERpY3QgJyArXG4gICAgICAnT3JkaW5hbFJhbmdlIE91dE9mTWVtb3J5RXJyb3IgT3ZlcmZsb3dFcnJvciBQYWlyIFBhcnNlRXJyb3IgUGFydGlhbFF1aWNrU29ydCBQZXJtdXRlZERpbXNBcnJheSBQaXBlICcgK1xuICAgICAgJ1BvbGxpbmdGaWxlV2F0Y2hlciBQcm9jZXNzRXhpdGVkRXhjZXB0aW9uIFB0ciBRdW90ZU5vZGUgUmFuZG9tRGV2aWNlIFJhbmdlIFJhbmdlSW5kZXggUmF0aW9uYWwgUmF3RkQgJyArXG4gICAgICAnUmVhZE9ubHlNZW1vcnlFcnJvciBSZWFsIFJlZW50cmFudExvY2sgUmVmIFJlZ2V4IFJlZ2V4TWF0Y2ggUmVtb3RlQ2hhbm5lbCBSZW1vdGVFeGNlcHRpb24gUmV2U3RyaW5nIFJvdW5kaW5nTW9kZSAnICtcbiAgICAgICdSb3dWZWN0b3IgU1NBVmFsdWUgU2VnbWVudGF0aW9uRmF1bHQgU2VyaWFsaXphdGlvblN0YXRlIFNldCBTaGFyZWRBcnJheSBTaGFyZWRNYXRyaXggU2hhcmVkVmVjdG9yIFNpZ25lZCAnICtcbiAgICAgICdTaW1wbGVWZWN0b3IgU2xvdCBTbG90TnVtYmVyIFNwYXJzZU1hdHJpeENTQyBTcGFyc2VWZWN0b3IgU3RhY2tGcmFtZSBTdGFja092ZXJmbG93RXJyb3IgU3RhY2tUcmFjZSBTdGVwUmFuZ2UgJyArXG4gICAgICAnU3RlcFJhbmdlTGVuIFN0cmlkZWRBcnJheSBTdHJpZGVkTWF0cml4IFN0cmlkZWRWZWNPck1hdCBTdHJpZGVkVmVjdG9yIFN0cmluZyBTdWJBcnJheSBTdWJTdHJpbmcgU3ltVHJpZGlhZ29uYWwgJyArXG4gICAgICAnU3ltYm9sIFN5bW1ldHJpYyBTeXN0ZW1FcnJvciBUQ1BTb2NrZXQgVGFzayBUZXh0IFRleHREaXNwbGF5IFRpbWVyIFRyaWRpYWdvbmFsIFR1cGxlIFR5cGUgVHlwZUVycm9yIFR5cGVNYXBFbnRyeSAnICtcbiAgICAgICdUeXBlTWFwTGV2ZWwgVHlwZU5hbWUgVHlwZVZhciBUeXBlZFNsb3QgVURQU29ja2V0IFVJbnQgVUludDEyOCBVSW50MTYgVUludDMyIFVJbnQ2NCBVSW50OCBVbmRlZlJlZkVycm9yIFVuZGVmVmFyRXJyb3IgJyArXG4gICAgICAnVW5pY29kZUVycm9yIFVuaWZvcm1TY2FsaW5nIFVuaW9uIFVuaW9uQWxsIFVuaXRSYW5nZSBVbnNpZ25lZCBVcHBlclRyaWFuZ3VsYXIgVmFsIFZhcmFyZyBWZWNFbGVtZW50IFZlY09yTWF0IFZlY3RvciAnICtcbiAgICAgICdWZXJzaW9uTnVtYmVyIFZvaWQgV2Vha0tleURpY3QgV2Vha1JlZiBXb3JrZXJDb25maWcgV29ya2VyUG9vbCAnXG4gIH07XG5cbiAgLy8gcmVmOiBodHRwOi8vanVsaWEucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9tYW51YWwvdmFyaWFibGVzLyNhbGxvd2VkLXZhcmlhYmxlLW5hbWVzXG4gIHZhciBWQVJJQUJMRV9OQU1FX1JFID0gJ1tBLVphLXpfXFxcXHUwMEExLVxcXFx1RkZGRl1bQS1aYS16XzAtOVxcXFx1MDBBMS1cXFxcdUZGRkZdKic7XG5cbiAgLy8gcGxhY2Vob2xkZXIgZm9yIHJlY3Vyc2l2ZSBzZWxmLXJlZmVyZW5jZVxuICB2YXIgREVGQVVMVCA9IHtcbiAgICBsZXhlbWVzOiBWQVJJQUJMRV9OQU1FX1JFLCBrZXl3b3JkczogS0VZV09SRFMsIGlsbGVnYWw6IC88XFwvL1xuICB9O1xuXG4gIC8vIHJlZjogaHR0cDovL2p1bGlhLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvbWFudWFsL2ludGVnZXJzLWFuZC1mbG9hdGluZy1wb2ludC1udW1iZXJzL1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgLy8gc3VwcG9ydGVkIG51bWVyaWMgbGl0ZXJhbHM6XG4gICAgLy8gICogYmluYXJ5IGxpdGVyYWwgKGUuZy4gMHgxMClcbiAgICAvLyAgKiBvY3RhbCBsaXRlcmFsIChlLmcuIDBvNzY1NDMyMTApXG4gICAgLy8gICogaGV4YWRlY2ltYWwgbGl0ZXJhbCAoZS5nLiAweGZlZGNiYTg3NjU0MzIxMClcbiAgICAvLyAgKiBoZXhhZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIChlLmcuIDB4MXAwLCAweDEuMnAyKVxuICAgIC8vICAqIGRlY2ltYWwgbGl0ZXJhbCAoZS5nLiA5ODc2NTQzMjEwLCAxMDBfMDAwXzAwMClcbiAgICAvLyAgKiBmbG9hdGluZyBwb2ludGUgbGl0ZXJhbCAoZS5nLiAxLjIsIDEuMmYsIC4yLCAxLiwgMS4yZTEwLCAxLjJlLTEwKVxuICAgIGJlZ2luOiAvKFxcYjB4W1xcZF9dKihcXC5bXFxkX10qKT98MHhcXC5cXGRbXFxkX10qKXBbLStdP1xcZCt8XFxiMFtib3hdW2EtZkEtRjAtOV1bYS1mQS1GMC05X10qfChcXGJcXGRbXFxkX10qKFxcLltcXGRfXSopP3xcXC5cXGRbXFxkX10qKShbZUVmRl1bLStdP1xcZCspPy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENIQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycoLnxcXFxcW3hYdVVdW2EtekEtWjAtOV0rKScvXG4gIH07XG5cbiAgdmFyIElOVEVSUE9MQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcblxuICB2YXIgSU5URVJQT0xBVEVEX1ZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJ1xcXFwkJyArIFZBUklBQkxFX05BTUVfUkVcbiAgfTtcblxuICAvLyBUT0RPOiBuZWF0bHkgZXNjYXBlIG5vcm1hbCBjb2RlIGluIHN0cmluZyBsaXRlcmFsXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgSU5URVJQT0xBVElPTiwgSU5URVJQT0xBVEVEX1ZBUklBQkxFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcdypcIlwiXCIvLCBlbmQ6IC9cIlwiXCJcXHcqLywgcmVsZXZhbmNlOiAxMCB9LFxuICAgICAgeyBiZWdpbjogL1xcdypcIi8sIGVuZDogL1wiXFx3Ki8gfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQ09NTUFORCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBJTlRFUlBPTEFUSU9OLCBJTlRFUlBPTEFURURfVkFSSUFCTEVdLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gIH07XG5cbiAgdmFyIE1BQ1JPQ0FMTCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgVkFSSUFCTEVfTkFNRV9SRVxuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnIz0nLCBlbmQ6ICc9IycsIHJlbGV2YW5jZTogMTAgfSxcbiAgICAgIHsgYmVnaW46ICcjJywgZW5kOiAnJCcgfVxuICAgIF1cbiAgfTtcblxuICBERUZBVUxULmNvbnRhaW5zID0gW1xuICAgIE5VTUJFUixcbiAgICBDSEFSLFxuICAgIFNUUklORyxcbiAgICBDT01NQU5ELFxuICAgIE1BQ1JPQ0FMTCxcbiAgICBDT01NRU5ULFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjpcbiAgICAgICAgJ1xcXFxiKCgoYWJzdHJhY3R8cHJpbWl0aXZlKVxcXFxzKyl0eXBlfChtdXRhYmxlXFxcXHMrKT9zdHJ1Y3QpXFxcXGInXG4gICAgfSxcbiAgICB7YmVnaW46IC88Oi99ICAvLyByZWxldmFuY2UgYm9vc3RlclxuICBdO1xuICBJTlRFUlBPTEFUSU9OLmNvbnRhaW5zID0gREVGQVVMVC5jb250YWlucztcblxuICByZXR1cm4gREVGQVVMVDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXmp1bGlhPi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGVuZCB0aGUgaGlnaGxpZ2h0aW5nIGlmIHdlIGFyZSBvbiBhIG5ldyBsaW5lIGFuZCB0aGUgbGluZSBkb2VzIG5vdCBoYXZlIGF0XG4gICAgICAgICAgLy8gbGVhc3Qgc2l4IHNwYWNlcyBpbiB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgZW5kOiAvXig/IVsgXXs2fSkvLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnanVsaWEnXG4gICAgICB9LFxuICAgICAgLy8gamxkb2N0ZXN0IE1hcmtkb3duIGJsb2NrcyBhcmUgdXNlZCBpbiB0aGUgSnVsaWEgbWFudWFsIGFuZCBwYWNrYWdlIGRvY3MgaW5kaWNhdGVcbiAgICAgIC8vIGNvZGUgc25pcHBldHMgdGhhdCBzaG91bGQgYmUgdmVyaWZpZWQgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsdC4gVGhleSBjYW4gYmVcbiAgICAgIC8vIGVpdGhlciBSRVBMLWxpa2Ugb3Igc2NyaXB0LWxpa2UsIGJ1dCBhcmUgdXN1YWxseSBSRVBMLWxpa2UgYW5kIHRoZXJlZm9yZSB3ZSBhcHBseVxuICAgICAgLy8ganVsaWEtcmVwbCBoaWdobGlnaHRpbmcgdG8gdGhlbS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRlcidzXG4gICAgICAvLyBtYW51YWw6IGh0dHBzOi8vanVsaWFkb2NzLmdpdGh1Yi5pby9Eb2N1bWVudGVyLmpsL2xhdGVzdC9tYW4vZG9jdGVzdHMuaHRtbFxuICAgICAgYWxpYXNlczogWydqbGRvY3Rlc3QnXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWJzdHJhY3QgYXMgdmFsIHZhciB2YXJhcmcgZ2V0IHNldCBjbGFzcyBvYmplY3Qgb3BlbiBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgbm9pbmxpbmUgJyArXG4gICAgICAnY3Jvc3NpbmxpbmUgZHluYW1pYyBmaW5hbCBlbnVtIGlmIGVsc2UgZG8gd2hpbGUgZm9yIHdoZW4gdGhyb3cgdHJ5IGNhdGNoIGZpbmFsbHkgJyArXG4gICAgICAnaW1wb3J0IHBhY2thZ2UgaXMgaW4gZnVuIG92ZXJyaWRlIGNvbXBhbmlvbiByZWlmaWVkIGlubGluZSBsYXRlaW5pdCBpbml0ICcgK1xuICAgICAgJ2ludGVyZmFjZSBhbm5vdGF0aW9uIGRhdGEgc2VhbGVkIGludGVybmFsIGluZml4IG9wZXJhdG9yIG91dCBieSBjb25zdHJ1Y3RvciBzdXBlciAnICtcbiAgICAgICd0YWlscmVjIHdoZXJlIGNvbnN0IGlubmVyIHN1c3BlbmQgdHlwZWFsaWFzIGV4dGVybmFsIGV4cGVjdCBhY3R1YWwgJyArXG4gICAgICAvLyB0byBiZSBkZWxldGVkIHNvb25cbiAgICAgICd0cmFpdCB2b2xhdGlsZSB0cmFuc2llbnQgbmF0aXZlIGRlZmF1bHQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0J5dGUgU2hvcnQgQ2hhciBJbnQgTG9uZyBCb29sZWFuIEZsb2F0IERvdWJsZSBWb2lkIFVuaXQgTm90aGluZycsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwnXG4gIH07XG4gIHZhciBLRVlXT1JEU19XSVRIX0xBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFxiKGJyZWFrfGNvbnRpbnVlfHJldHVybnx0aGlzKVxcYi8sXG4gICAgc3RhcnRzOiB7XG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICBiZWdpbjogL0BcXHcrL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuICB2YXIgTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJywgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdAJ1xuICB9O1xuXG4gIC8vIGZvciBzdHJpbmcgdGVtcGxhdGVzXG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9JywgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdXG4gIH07XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIC8vIENhbid0IHVzZSBidWlsdC1pbiBtb2RlcyBlYXNpbHksIGFzIHdlIHdhbnQgdG8gdXNlIFNUUklORyBpbiB0aGUgbWV0YVxuICAgICAgLy8gY29udGV4dCBhcyAnbWV0YS1zdHJpbmcnIGFuZCB0aGVyZSdzIG5vIHN5bnRheCB0byByZW1vdmUgZXhwbGljaXRseSBzZXRcbiAgICAgIC8vIGNsYXNzTmFtZXMgaW4gYnVpbHQtaW4gbW9kZXMuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJJQUJMRSwgU1VCU1RdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucy5wdXNoKFNUUklORylcblxuICB2YXIgQU5OT1RBVElPTl9VU0VfU0lURSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAKD86ZmlsZXxwcm9wZXJ0eXxmaWVsZHxnZXR8c2V0fHJlY2VpdmVyfHBhcmFtfHNldHBhcmFtfGRlbGVnYXRlKVxcXFxzKjooPzpcXFxccyonICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyk/J1xuICB9O1xuICB2YXIgQU5OT1RBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklORywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS93aGF0c25ldzExLmh0bWwjdW5kZXJzY29yZXMtaW4tbnVtZXJpYy1saXRlcmFsc1xuICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRvYyBhYm92ZSwgdGhlIG51bWJlciBtb2RlIG9mIGtvdGxpbiBpcyB0aGUgc2FtZSBhcyBqYXZhIDgsXG4gIC8vIHNvIHRoZSBjb2RlIGJlbG93IGlzIGNvcGllZCBmcm9tIGphdmEuanNcbiAgdmFyIEtPVExJTl9OVU1CRVJfUkUgPSAnXFxcXGInICtcbiAgICAnKCcgK1xuICAgICAgJzBbYkJdKFswMV0rWzAxX10rWzAxXSt8WzAxXSspJyArIC8vIDBiLi4uXG4gICAgICAnfCcgK1xuICAgICAgJzBbeFhdKFthLWZBLUYwLTldK1thLWZBLUYwLTlfXStbYS1mQS1GMC05XSt8W2EtZkEtRjAtOV0rKScgKyAvLyAweC4uLlxuICAgICAgJ3wnICtcbiAgICAgICcoJyArXG4gICAgICAgICcoW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykoXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykpPycgK1xuICAgICAgICAnfCcgK1xuICAgICAgICAnXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKyknICtcbiAgICAgICcpJyArXG4gICAgICAnKFtlRV1bLStdP1xcXFxkKyk/JyArIC8vIG9jdGFsLCBkZWNpbWFsLCBmbG9hdFxuICAgICcpJyArXG4gICAgJ1tsTGZGXT8nO1xuICB2YXIgS09UTElOX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IEtPVExJTl9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBLT1RMSU5fTkVTVEVEX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJy9cXFxcKicsICdcXFxcKi8nLFxuICAgIHsgY29udGFpbnM6IFsgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSBdIH1cbiAgKTtcbiAgdmFyIEtPVExJTl9QQVJFTl9UWVBFID0ge1xuICAgIHZhcmlhbnRzOiBbXG5cdCAgeyBjbGFzc05hbWU6ICd0eXBlJyxcblx0ICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcblx0ICB9LFxuXHQgIHsgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuXHQgICAgY29udGFpbnM6IFtdIC8vZGVmaW5lZCBsYXRlclxuXHQgIH1cblx0XVxuICB9O1xuICB2YXIgS09UTElOX1BBUkVOX1RZUEUyID0gS09UTElOX1BBUkVOX1RZUEU7XG4gIEtPVExJTl9QQVJFTl9UWVBFMi52YXJpYW50c1sxXS5jb250YWlucyA9IFsgS09UTElOX1BBUkVOX1RZUEUgXTtcbiAgS09UTElOX1BBUkVOX1RZUEUudmFyaWFudHNbMV0uY29udGFpbnMgPSBbIEtPVExJTl9QQVJFTl9UWVBFMiBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydrdCddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWlucyA6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW3tcbiAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgS0VZV09SRFNfV0lUSF9MQUJFTCxcbiAgICAgIExBQkVMLFxuICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgIEFOTk9UQVRJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bicsIGVuZDogJ1soXXwkJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgaWxsZWdhbDogL2Z1blxccysoPC4qPik/W15cXHNcXChdKyhcXHMrW15cXHNcXChdKylcXHMqPS8sXG4gICAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+Lywga2V5d29yZHM6ICdyZWlmaWVkJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC86LywgZW5kOiAvWz0sXFwvXS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICBLT1RMSU5fUEFSRU5fVFlQRSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5ULFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OX1VTRV9TSVRFLFxuICAgICAgICAgICAgICBBTk5PVEFUSU9OLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5UXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSB0cmFpdCcsIGVuZDogL1s6XFx7KF18JC8sIC8vIHJlbW92ZSAndHJhaXQnIHdoZW4gcmVtb3ZlZCBmcm9tIEtFWVdPUkRTXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdleHRlbmRzIGltcGxlbWVudHMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAncHVibGljIHByb3RlY3RlZCBpbnRlcm5hbCBwcml2YXRlIGNvbnN0cnVjdG9yJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+LywgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvWyw6XVxccyovLCBlbmQ6IC9bPFxcKCxdfCQvLCBleGNsdWRlQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgICAgICBBTk5PVEFUSU9OXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogXCJeIyEvdXNyL2Jpbi9lbnZcIiwgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXG4nXG4gICAgICB9LFxuICAgICAgS09UTElOX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExBU1NPX0lERU5UX1JFID0gJ1thLXpBLVpfXVtcXFxcdy5dKic7XG4gIHZhciBMQVNTT19BTkdMRV9SRSA9ICc8XFxcXD8obGFzc28oc2NyaXB0KT98PSknO1xuICB2YXIgTEFTU09fQ0xPU0VfUkUgPSAnXFxcXF18XFxcXD8+JztcbiAgdmFyIExBU1NPX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBub25lIG1pbmltYWwgZnVsbCBhbGwgdm9pZCBhbmQgb3Igbm90ICcgK1xuICAgICAgJ2J3IG5idyBldyBuZXcgY24gbmNuIGx0IGx0ZSBndCBndGUgZXEgbmVxIHJ4IG5yeCBmdCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXJyYXkgZGF0ZSBkZWNpbWFsIGR1cmF0aW9uIGludGVnZXIgbWFwIHBhaXIgc3RyaW5nIHRhZyB4bWwgbnVsbCAnICtcbiAgICAgICdib29sZWFuIGJ5dGVzIGtleXdvcmQgbGlzdCBsb2NhbGUgcXVldWUgc2V0IHN0YWNrIHN0YXRpY2FycmF5ICcgK1xuICAgICAgJ2xvY2FsIHZhciB2YXJpYWJsZSBnbG9iYWwgZGF0YSBzZWxmIGluaGVyaXRlZCBjdXJyZW50Y2FwdHVyZSBnaXZlbmJsb2NrJyxcbiAgICBrZXl3b3JkOlxuICAgICAgJ2NhY2hlIGRhdGFiYXNlX25hbWVzIGRhdGFiYXNlX3NjaGVtYW5hbWVzIGRhdGFiYXNlX3RhYmxlbmFtZXMgJyArXG4gICAgICAnZGVmaW5lX3RhZyBkZWZpbmVfdHlwZSBlbWFpbF9iYXRjaCBlbmNvZGVfc2V0IGh0bWxfY29tbWVudCBoYW5kbGUgJyArXG4gICAgICAnaGFuZGxlX2Vycm9yIGhlYWRlciBpZiBpbmxpbmUgaXRlcmF0ZSBsamF4X3RhcmdldCBsaW5rICcgK1xuICAgICAgJ2xpbmtfY3VycmVudGFjdGlvbiBsaW5rX2N1cnJlbnRncm91cCBsaW5rX2N1cnJlbnRyZWNvcmQgbGlua19kZXRhaWwgJyArXG4gICAgICAnbGlua19maXJzdGdyb3VwIGxpbmtfZmlyc3RyZWNvcmQgbGlua19sYXN0Z3JvdXAgbGlua19sYXN0cmVjb3JkICcgK1xuICAgICAgJ2xpbmtfbmV4dGdyb3VwIGxpbmtfbmV4dHJlY29yZCBsaW5rX3ByZXZncm91cCBsaW5rX3ByZXZyZWNvcmQgbG9nICcgK1xuICAgICAgJ2xvb3AgbmFtZXNwYWNlX3VzaW5nIG91dHB1dF9ub25lIHBvcnRhbCBwcml2YXRlIHByb3RlY3QgcmVjb3JkcyAnICtcbiAgICAgICdyZWZlcmVyIHJlZmVycmVyIHJlcGVhdGluZyByZXN1bHRzZXQgcm93cyBzZWFyY2hfYXJncyAnICtcbiAgICAgICdzZWFyY2hfYXJndW1lbnRzIHNlbGVjdCBzb3J0X2FyZ3Mgc29ydF9hcmd1bWVudHMgdGhyZWFkX2F0b21pYyAnICtcbiAgICAgICd2YWx1ZV9saXN0IHdoaWxlIGFib3J0IGNhc2UgZWxzZSBmYWlsX2lmIGZhaWxfaWZub3QgZmFpbCBpZl9lbXB0eSAnICtcbiAgICAgICdpZl9mYWxzZSBpZl9udWxsIGlmX3RydWUgbG9vcF9hYm9ydCBsb29wX2NvbnRpbnVlIGxvb3BfY291bnQgcGFyYW1zICcgK1xuICAgICAgJ3BhcmFtc191cCByZXR1cm4gcmV0dXJuX3ZhbHVlIHJ1bl9jaGlsZHJlbiBzb2FwX2RlZmluZXRhZyAnICtcbiAgICAgICdzb2FwX2xhc3RyZXF1ZXN0IHNvYXBfbGFzdHJlc3BvbnNlIHRhZ19uYW1lIGFzY2VuZGluZyBhdmVyYWdlIGJ5ICcgK1xuICAgICAgJ2RlZmluZSBkZXNjZW5kaW5nIGRvIGVxdWFscyBmcm96ZW4gZ3JvdXAgaGFuZGxlX2ZhaWx1cmUgaW1wb3J0IGluICcgK1xuICAgICAgJ2ludG8gam9pbiBsZXQgbWF0Y2ggbWF4IG1pbiBvbiBvcmRlciBwYXJlbnQgcHJvdGVjdGVkIHByb3ZpZGUgcHVibGljICcgK1xuICAgICAgJ3JlcXVpcmUgcmV0dXJuaG9tZSBza2lwIHNwbGl0X3RocmVhZCBzdW0gdGFrZSB0aHJlYWQgdG8gdHJhaXQgdHlwZSAnICtcbiAgICAgICd3aGVyZSB3aXRoIHlpZWxkIHlpZWxkaG9tZSdcbiAgfTtcbiAgdmFyIEhUTUxfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnPCEtLScsXG4gICAgJy0tPicsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgTEFTU09fTk9QUk9DRVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXFxcXFtub3Byb2Nlc3NcXFxcXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdcXFxcWy9ub3Byb2Nlc3NcXFxcXScsXG4gICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICB9XG4gIH07XG4gIHZhciBMQVNTT19TVEFSVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ1xcXFxbL25vcHJvY2Vzc3wnICsgTEFTU09fQU5HTEVfUkVcbiAgfTtcbiAgdmFyIExBU1NPX0RBVEFNRU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJycgKyBMQVNTT19JREVOVF9SRSArICdcXCcnXG4gIH07XG4gIHZhciBMQVNTT19DT0RFID0gW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkNfTlVNQkVSX01PREUsIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICd8KC0/aW5maW5pdHl8TmFOKVxcXFxiJ30pLFxuICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gICAgfSxcbiAgICB7IC8vIHZhcmlhYmxlc1xuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnWyMkXScgKyBMQVNTT19JREVOVF9SRVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICc6OlxcXFxzKicsIGVuZDogTEFTU09fSURFTlRfUkUsXG4gICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLSg/IWluZmluaXR5KScgKyBMQVNTT19JREVOVF9SRSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnKFxcXFwuXFxcXC5cXFxcLiknXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvKC0+fFxcLilcXHMqLyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbTEFTU09fREFUQU1FTUJFUl1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdkZWZpbmUnLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLCBlbmQ6ICdcXFxcKHw9PicsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IExBU1NPX0lERU5UX1JFICsgJyg9KD8hPikpP3xbLSsqLyVdKD8hPiknfSlcbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscycsICdsYXNzb3NjcmlwdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogTEFTU09fSURFTlRfUkUgKyAnfCZbbGdddDsnLFxuICAgIGtleXdvcmRzOiBMQVNTT19LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IExBU1NPX0NMT1NFX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogeyAvLyBtYXJrdXBcbiAgICAgICAgICBlbmQ6ICdcXFxcW3wnICsgTEFTU09fQU5HTEVfUkUsXG4gICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW0hUTUxfQ09NTUVOVF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIExBU1NPX05PUFJPQ0VTUyxcbiAgICAgIExBU1NPX1NUQVJULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcW25vX3NxdWFyZV9icmFja2V0cycsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ1xcXFxbL25vX3NxdWFyZV9icmFja2V0c1xcXFxdJywgLy8gbm90IGltcGxlbWVudGVkIGluIHRoZSBsYW5ndWFnZVxuICAgICAgICAgIGxleGVtZXM6IExBU1NPX0lERU5UX1JFICsgJ3wmW2xnXXQ7JyxcbiAgICAgICAgICBrZXl3b3JkczogTEFTU09fS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgIGJlZ2luOiBMQVNTT19DTE9TRV9SRSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgICBlbmQ6ICdcXFxcW25vcHJvY2Vzc1xcXFxdfCcgKyBMQVNTT19BTkdMRV9SRSxcbiAgICAgICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMQVNTT19OT1BST0NFU1MsXG4gICAgICAgICAgICBMQVNTT19TVEFSVFxuICAgICAgICAgIF0uY29uY2F0KExBU1NPX0NPREUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIyEnLCBlbmQ6J2xhc3NvOSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXS5jb25jYXQoTEFTU09fQ09ERSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeZG4nLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ15cXFxcdycsIGVuZDogJzogJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAnJCcsIHJlbGV2YW5jZTogMH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ14tJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJyMrJyArICdbQS1aYS16XzAtOV0qJyArICdcXFxcKCcsXG4gICAgICAgIGVuZDonIHsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyMrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgICAgICAgICAgZW5kOiAnXCInXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdbQS1aYS16X11bQS1aYS16XzAtOV0qJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFICAgICAgICA9ICdbXFxcXHctXSsnOyAvLyB5ZXMsIExlc3MgaWRlbnRpZmllcnMgbWF5IGJlZ2luIHdpdGggYSBkaWdpdFxuICB2YXIgSU5URVJQX0lERU5UX1JFID0gJygnICsgSURFTlRfUkUgKyAnfEB7JyArIElERU5UX1JFICsgJ30pJztcblxuICAvKiBHZW5lcmljIE1vZGVzICovXG5cbiAgdmFyIFJVTEVTID0gW10sIFZBTFVFID0gW107IC8vIGZvcndhcmQgZGVmLiBmb3IgcmVjdXJzaXZlIG1vZGVzXG5cbiAgdmFyIFNUUklOR19NT0RFID0gZnVuY3Rpb24oYykgeyByZXR1cm4ge1xuICAgIC8vIExlc3Mgc3RyaW5ncyBhcmUgbm90IG11bHRpbGluZSAoYWxzbyBpbmNsdWRlICd+JyBmb3IgbW9yZSBjb25zaXN0ZW50IGNvbG9yaW5nIG9mIFwiZXNjYXBlZFwiIHN0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46ICd+PycgKyBjICsgJy4qPycgKyBjXG4gIH07fTtcblxuICB2YXIgSURFTlRfTU9ERSA9IGZ1bmN0aW9uKG5hbWUsIGJlZ2luLCByZWxldmFuY2UpIHsgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IG5hbWUsIGJlZ2luOiBiZWdpbiwgcmVsZXZhbmNlOiByZWxldmFuY2VcbiAgfTt9O1xuXG4gIHZhciBQQVJFTlNfTU9ERSA9IHtcbiAgICAvLyB1c2VkIG9ubHkgdG8gcHJvcGVybHkgYmFsYW5jZSBuZXN0ZWQgcGFyZW5zIGluc2lkZSBtaXhpbiBjYWxsLCBkZWYuIGFyZyBsaXN0XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IFZBTFVFLCByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvLyBnZW5lcmljIExlc3MgaGlnaGxpZ2h0ZXIgKHVzZWQgYWxtb3N0IGV2ZXJ5d2hlcmUgZXhjZXB0IHNlbGVjdG9ycyk6XG4gIFZBTFVFLnB1c2goXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HX01PREUoXCInXCIpLFxuICAgIFNUUklOR19NT0RFKCdcIicpLFxuICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLCAvLyBmaXhtZTogaXQgZG9lcyBub3QgaW5jbHVkZSBkb3QgZm9yIG51bWJlcnMgbGlrZSAuNWVtIDooXG4gICAge1xuICAgICAgYmVnaW46ICcodXJsfGRhdGEtdXJpKVxcXFwoJyxcbiAgICAgIHN0YXJ0czoge2NsYXNzTmFtZTogJ3N0cmluZycsIGVuZDogJ1tcXFxcKVxcXFxuXScsIGV4Y2x1ZGVFbmQ6IHRydWV9XG4gICAgfSxcbiAgICBJREVOVF9NT0RFKCdudW1iZXInLCAnI1swLTlBLUZhLWZdK1xcXFxiJyksXG4gICAgUEFSRU5TX01PREUsXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQEA/JyArIElERU5UX1JFLCAxMCksXG4gICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSxcbiAgICBJREVOVF9NT0RFKCdidWlsdF9pbicsICd+P2BbXmBdKj9gJyksIC8vIGlubGluZSBqYXZhc2NyaXB0IChvciB3aGF0ZXZlciBob3N0IGxhbmd1YWdlKSAqbXVsdGlsaW5lKiBzdHJpbmdcbiAgICB7IC8vIEBtZWRpYSBmZWF0dXJlcyAoaXTigJlzIGhlcmUgdG8gbm90IGR1cGxpY2F0ZSB0aGluZ3MgaW4gQVRfUlVMRV9NT0RFIHdpdGggZXh0cmEgUEFSRU5TX01PREUgb3ZlcnJpZGluZyk6XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLCBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIGVuZDogJzonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgfVxuICApO1xuXG4gIHZhciBWQUxVRV9XSVRIX1JVTEVTRVRTID0gVkFMVUUuY29uY2F0KHtcbiAgICBiZWdpbjogJ3snLCBlbmQ6ICd9JywgY29udGFpbnM6IFJVTEVTXG4gIH0pO1xuXG4gIHZhciBNSVhJTl9HVUFSRF9NT0RFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICd3aGVuJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFt7YmVnaW5LZXl3b3JkczogJ2FuZCBub3QnfV0uY29uY2F0KFZBTFVFKSAvLyB1c2luZyB0aGlzIGZvcm0gdG8gb3ZlcnJpZGUgVkFMVUXigJlzICdmdW5jdGlvbicgbWF0Y2hcbiAgfTtcblxuICAvKiBSdWxlLUxldmVsIE1vZGVzICovXG5cbiAgdmFyIFJVTEVfTU9ERSA9IHtcbiAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFICsgJ1xcXFxzKjonLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnWzt9XScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJzonLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgaWxsZWdhbDogJ1s8PSRdJyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFZBTFVFXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFUX1JVTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0AoaW1wb3J0fG1lZGlhfGNoYXJzZXR8Zm9udC1mYWNlfCgtW2Etel0rLSk/a2V5ZnJhbWVzfHN1cHBvcnRzfGRvY3VtZW50fG5hbWVzcGFjZXxwYWdlfHZpZXdwb3J0fGhvc3QpXFxcXGInLFxuICAgIHN0YXJ0czoge2VuZDogJ1s7e31dJywgcmV0dXJuRW5kOiB0cnVlLCBjb250YWluczogVkFMVUUsIHJlbGV2YW5jZTogMH1cbiAgfTtcblxuICAvLyB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgY2FsbHNcbiAgdmFyIFZBUl9SVUxFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyB1c2luZyBtb3JlIHN0cmljdCBwYXR0ZXJuIGZvciBoaWdoZXIgcmVsZXZhbmNlIHRvIGluY3JlYXNlIGNoYW5jZXMgb2YgTGVzcyBkZXRlY3Rpb24uXG4gICAgICAvLyB0aGlzIGlzICp0aGUgb25seSogTGVzcyBzcGVjaWZpYyBzdGF0ZW1lbnQgdXNlZCBpbiBtb3N0IG9mIHRoZSBzb3VyY2VzLCBzby4uLlxuICAgICAgLy8gKHdl4oCZbGwgc3RpbGwgb2Z0ZW4gbG9vc2UgdG8gdGhlIGNzcy1wYXJzZXIgdW5sZXNzIHRoZXJlJ3MgJy8vJyBjb21tZW50LFxuICAgICAgLy8gc2ltcGx5IGJlY2F1c2UgMSB2YXJpYWJsZSBqdXN0IGNhbid0IGJlYXQgOTkgcHJvcGVydGllcyA6KVxuICAgICAge2JlZ2luOiAnQCcgKyBJREVOVF9SRSArICdcXFxccyo6JywgcmVsZXZhbmNlOiAxNX0sXG4gICAgICB7YmVnaW46ICdAJyArIElERU5UX1JFfVxuICAgIF0sXG4gICAgc3RhcnRzOiB7ZW5kOiAnWzt9XScsIHJldHVybkVuZDogdHJ1ZSwgY29udGFpbnM6IFZBTFVFX1dJVEhfUlVMRVNFVFN9XG4gIH07XG5cbiAgdmFyIFNFTEVDVE9SX01PREUgPSB7XG4gICAgLy8gZmlyc3QgcGFyc2UgdW5hbWJpZ3VvdXMgc2VsZWN0b3JzIChpLmUuIHRob3NlIG5vdCBzdGFydGluZyB3aXRoIHRhZylcbiAgICAvLyB0aGVuIGZhbGwgaW50byB0aGUgc2NhcnkgbG9va2FoZWFkLWRpc2NyaW1pbmF0b3IgdmFyaWFudC5cbiAgICAvLyB0aGlzIG1vZGUgYWxzbyBoYW5kbGVzIG1peGluIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgYmVnaW46ICdbXFxcXC4jOiZcXFxcWz5dJywgZW5kOiAnWzt7fV0nICAvLyBtaXhpbiBjYWxscyBlbmQgd2l0aCAnOydcbiAgICAgIH0sIHtcbiAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsIGVuZDogJ3snXG4gICAgfV0sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmV0dXJuRW5kOiAgIHRydWUsXG4gICAgaWxsZWdhbDogJ1s8PVxcJyRcIl0nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE1JWElOX0dVQVJEX01PREUsXG4gICAgICBJREVOVF9NT0RFKCdrZXl3b3JkJywgICdhbGxcXFxcYicpLFxuICAgICAgSURFTlRfTU9ERSgndmFyaWFibGUnLCAnQHsnICArIElERU5UX1JFICsgJ30nKSwgICAgIC8vIG90aGVyd2lzZSBpdOKAmXMgaWRlbnRpZmllZCBhcyB0YWdcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICBJTlRFUlBfSURFTlRfUkUgKyAnJT8nLCAwKSwgLy8gJyUnIGZvciBtb3JlIGNvbnNpc3RlbnQgY29sb3Jpbmcgb2YgQGtleWZyYW1lcyBcInRhZ3NcIlxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItaWQnLCAnIycgKyBJTlRFUlBfSURFTlRfUkUpLFxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItY2xhc3MnLCAnXFxcXC4nICsgSU5URVJQX0lERU5UX1JFLCAwKSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsICAnJicsIDApLFxuICAgICAge2NsYXNzTmFtZTogJ3NlbGVjdG9yLWF0dHInLCBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLCBiZWdpbjogLzooOik/W2EtekEtWjAtOVxcX1xcLVxcK1xcKFxcKVwiJy5dKy99LFxuICAgICAge2JlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTfSwgLy8gYXJndW1lbnQgbGlzdCBvZiBwYXJhbWV0cmljIG1peGluc1xuICAgICAge2JlZ2luOiAnIWltcG9ydGFudCd9IC8vIGVhdCAhaW1wb3J0YW50IGFmdGVyIG1peGluIGNhbGwgb3IgaXQgd2lsbCBiZSBjb2xvcmVkIGFzIHRhZ1xuICAgIF1cbiAgfTtcblxuICBSVUxFUy5wdXNoKFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIEFUX1JVTEVfTU9ERSxcbiAgICBWQVJfUlVMRV9NT0RFLFxuICAgIFJVTEVfTU9ERSxcbiAgICBTRUxFQ1RPUl9NT0RFXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPT5cXCcvPCgkXCJdJyxcbiAgICBjb250YWluczogUlVMRVNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMSVNQX0lERU5UX1JFID0gJ1thLXpBLVpfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjXVthLXpBLVowLTlfXFxcXC1cXFxcK1xcXFwqXFxcXC9cXFxcPFxcXFw9XFxcXD5cXFxcJlxcXFwjIV0qJztcbiAgdmFyIE1FQ19SRSA9ICdcXFxcfFteXSo/XFxcXHwnO1xuICB2YXIgTElTUF9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFxcXFwuXFxcXGQrfFxcXFwvXFxcXGQrKT8oKGR8ZXxmfGx8c3xEfEV8RnxMfFMpKFxcXFwrfFxcXFwtKT9cXFxcZCspPyc7XG4gIHZhciBTSEVCQU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJywgZW5kOiAnJCdcbiAgfTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICdcXFxcYih0ezF9fG5pbClcXFxcYidcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IExJU1BfU0lNUExFX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJyMoYnxCKVswLTFdKygvWzAtMV0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMob3xPKVswLTddKygvWzAtN10rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoeHxYKVswLTlhLWZBLUZdKygvWzAtOWEtZkEtRl0rKT8nfSxcbiAgICAgIHtiZWdpbjogJyMoY3xDKVxcXFwoJyArIExJU1BfU0lNUExFX05VTUJFUl9SRSArICcgKycgKyBMSVNQX1NJTVBMRV9OVU1CRVJfUkUsIGVuZDogJ1xcXFwpJ31cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KTtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzsnLCAnJCcsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICApO1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgYmVnaW46ICdcXFxcKicsIGVuZDogJ1xcXFwqJ1xuICB9O1xuICB2YXIgS0VZV09SRCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnWzomXScgKyBMSVNQX0lERU5UX1JFXG4gIH07XG4gIHZhciBJREVOVCA9IHtcbiAgICBiZWdpbjogTElTUF9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE1FQyA9IHtcbiAgICBiZWdpbjogTUVDX1JFXG4gIH07XG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBMSVRFUkFMLCBTVFJJTkcsIE5VTUJFUiwgSURFTlRdXG4gIH07XG4gIHZhciBRVU9URUQgPSB7XG4gICAgY29udGFpbnM6IFtOVU1CRVIsIFNUUklORywgVkFSSUFCTEUsIEtFWVdPUkQsIFFVT1RFRF9MSVNULCBJREVOVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbXFwnYF1cXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKHF1b3RlICcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAga2V5d29yZHM6IHtuYW1lOiAncXVvdGUnfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnICsgTUVDX1JFXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVEX0FUT00gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcJycgKyBMSVNQX0lERU5UX1JFfSxcbiAgICAgIHtiZWdpbjogJyNcXCcnICsgTElTUF9JREVOVF9SRSArICcoOjonICsgTElTUF9JREVOVF9SRSArICcpKid9XG4gICAgXVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoXFxcXHMqJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBMSVNULmNvbnRhaW5zID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge2JlZ2luOiBMSVNQX0lERU5UX1JFfSxcbiAgICAgICAge2JlZ2luOiBNRUNfUkV9XG4gICAgICBdXG4gICAgfSxcbiAgICBCT0RZXG4gIF07XG4gIEJPRFkuY29udGFpbnMgPSBbUVVPVEVELCBRVU9URURfQVRPTSwgTElTVCwgTElURVJBTCwgTlVNQkVSLCBTVFJJTkcsIENPTU1FTlQsIFZBUklBQkxFLCBLRVlXT1JELCBNRUMsIElERU5UXTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVIsXG4gICAgICBTSEVCQU5HLFxuICAgICAgTElURVJBTCxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBRVU9URUQsXG4gICAgICBRVU9URURfQVRPTSxcbiAgICAgIExJU1QsXG4gICAgICBJREVOVFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFxiKFtndHBzXVtBLVpdezF9W2EtekEtWjAtOV0qKShcXFxcWy4rXFxcXF0pPyg/OlxcXFxzKj8pJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJF9bQS1aXSsnfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoJ1teOl0vLycsICckJylcbiAgXTtcbiAgdmFyIFRJVExFMSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXGJfKnJpZ1tBLVpdK1tBLVphLXowLTlfXFxcXC1dKid9LFxuICAgICAge2JlZ2luOiAnXFxcXGJfW2EtejAtOVxcXFwtXSsnfVxuICAgIF1cbiAgfSk7XG4gIHZhciBUSVRMRTIgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdcXFxcYihbQS1aYS16MC05X1xcXFwtXSspXFxcXGInfSk7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICckX0NPT0tJRSAkX0ZJTEVTICRfR0VUICRfR0VUX0JJTkFSWSAkX0dFVF9SQVcgJF9QT1NUICRfUE9TVF9CSU5BUlkgJF9QT1NUX1JBVyAkX1NFU1NJT04gJF9TRVJWRVIgJyArXG4gICAgICAgICdjb2RlcG9pbnQgY29kZXBvaW50cyBzZWdtZW50IHNlZ21lbnRzIGNvZGV1bml0IGNvZGV1bml0cyBzZW50ZW5jZSBzZW50ZW5jZXMgdHJ1ZVdvcmQgdHJ1ZVdvcmRzIHBhcmFncmFwaCAnICtcbiAgICAgICAgJ2FmdGVyIGJ5dGUgYnl0ZXMgZW5nbGlzaCB0aGUgdW50aWwgaHR0cCBmb3JldmVyIGRlc2NlbmRpbmcgdXNpbmcgbGluZSByZWFsOCB3aXRoIHNldmVudGggJyArXG4gICAgICAgICdmb3Igc3Rkb3V0IGZpbmFsbHkgZWxlbWVudCB3b3JkIHdvcmRzIGZvdXJ0aCBiZWZvcmUgYmxhY2sgbmludGggc2l4dGggY2hhcmFjdGVycyBjaGFycyBzdGRlcnIgJyArXG4gICAgICAgICd1SW50MSB1SW50MXMgdUludDIgdUludDJzIHN0ZGluIHN0cmluZyBsaW5lcyByZWxhdGl2ZSByZWwgYW55IGZpZnRoIGl0ZW1zIGZyb20gbWlkZGxlIG1pZCAnICtcbiAgICAgICAgJ2F0IGVsc2Ugb2YgY2F0Y2ggdGhlbiB0aGlyZCBpdCBmaWxlIG1pbGxpc2Vjb25kcyBzZWNvbmRzIHNlY29uZCBzZWNzIHNlYyBpbnQxIGludDFzIGludDQgJyArXG4gICAgICAgICdpbnQ0cyBpbnRlcm5ldCBpbnQyIGludDJzIG5vcm1hbCB0ZXh0IGl0ZW0gbGFzdCBsb25nIGRldGFpbGVkIGVmZmVjdGl2ZSB1SW50NCB1SW50NHMgcmVwZWF0ICcgK1xuICAgICAgICAnZW5kIHJlcGVhdCBVUkwgaW4gdHJ5IGludG8gc3dpdGNoIHRvIHdvcmRzIGh0dHBzIHRva2VuIGJpbmZpbGUgZWFjaCB0ZW50aCBhcyB0aWNrcyB0aWNrICcgK1xuICAgICAgICAnc3lzdGVtIHJlYWw0IGJ5IGRhdGVJdGVtcyB3aXRob3V0IGNoYXIgY2hhcmFjdGVyIGFzY2VuZGluZyBlaWdodGggd2hvbGUgZGF0ZVRpbWUgbnVtZXJpYyBzaG9ydCAnICtcbiAgICAgICAgJ2ZpcnN0IGZ0cCBpbnRlZ2VyIGFiYnJldmlhdGVkIGFiYnIgYWJicmV2IHByaXZhdGUgY2FzZSB3aGlsZSBpZiAnICtcbiAgICAgICAgJ2RpdiBtb2Qgd3JhcCBhbmQgb3IgYml0QW5kIGJpdE5vdCBiaXRPciBiaXRYb3IgYW1vbmcgbm90IGluIGEgYW4gd2l0aGluICcgK1xuICAgICAgICAnY29udGFpbnMgZW5kcyB3aXRoIGJlZ2lucyB0aGUga2V5cyBvZiBrZXlzJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdTSVggVEVOIEZPUk1GRUVEIE5JTkUgWkVSTyBOT05FIFNQQUNFIEZPVVIgRkFMU0UgQ09MT04gQ1JMRiBQSSBDT01NQSBFTkRPRkZJTEUgRU9GIEVJR0hUIEZJVkUgJyArXG4gICAgICAgICdRVU9URSBFTVBUWSBPTkUgVFJVRSBSRVRVUk4gQ1IgTElORUZFRUQgUklHSFQgQkFDS1NMQVNIIE5VTEwgU0VWRU4gVEFCIFRIUkVFIFRXTyAnICtcbiAgICAgICAgJ3NpeCB0ZW4gZm9ybWZlZWQgbmluZSB6ZXJvIG5vbmUgc3BhY2UgZm91ciBmYWxzZSBjb2xvbiBjcmxmIHBpIGNvbW1hIGVuZG9mZmlsZSBlb2YgZWlnaHQgZml2ZSAnICtcbiAgICAgICAgJ3F1b3RlIGVtcHR5IG9uZSB0cnVlIHJldHVybiBjciBsaW5lZmVlZCByaWdodCBiYWNrc2xhc2ggbnVsbCBzZXZlbiB0YWIgdGhyZWUgdHdvICcgK1xuICAgICAgICAnUklWRVJTSU9OIFJJU1RBVEUgRklMRV9SRUFEX01PREUgRklMRV9XUklURV9NT0RFIEZJTEVfV1JJVEVfTU9ERSBESVJfV1JJVEVfTU9ERSBGSUxFX1JFQURfVU1BU0sgJyArXG4gICAgICAgICdGSUxFX1dSSVRFX1VNQVNLIERJUl9SRUFEX1VNQVNLIERJUl9XUklURV9VTUFTSycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3B1dCBhYnMgYWNvcyBhbGlhc1JlZmVyZW5jZSBhbm51aXR5IGFycmF5RGVjb2RlIGFycmF5RW5jb2RlIGFzaW4gYXRhbiBhdGFuMiBhdmVyYWdlIGF2ZyBhdmdEZXYgYmFzZTY0RGVjb2RlICcgK1xuICAgICAgICAnYmFzZTY0RW5jb2RlIGJhc2VDb252ZXJ0IGJpbmFyeURlY29kZSBiaW5hcnlFbmNvZGUgYnl0ZU9mZnNldCBieXRlVG9OdW0gY2FjaGVkVVJMIGNhY2hlZFVSTHMgY2hhclRvTnVtICcgK1xuICAgICAgICAnY2lwaGVyTmFtZXMgY29kZXBvaW50T2Zmc2V0IGNvZGVwb2ludFByb3BlcnR5IGNvZGVwb2ludFRvTnVtIGNvZGV1bml0T2Zmc2V0IGNvbW1hbmROYW1lcyBjb21wb3VuZCBjb21wcmVzcyAnICtcbiAgICAgICAgJ2NvbnN0YW50TmFtZXMgY29zIGRhdGUgZGF0ZUZvcm1hdCBkZWNvbXByZXNzIGRpZmZlcmVuY2UgZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdkaXNrU3BhY2UgRE5TU2VydmVycyBleHAgZXhwMSBleHAyIGV4cDEwIGV4dGVudHMgZmlsZXMgZmx1c2hFdmVudHMgZm9sZGVycyBmb3JtYXQgZnVuY3Rpb25OYW1lcyBnZW9tZXRyaWNNZWFuIGdsb2JhbCAnICtcbiAgICAgICAgJ2dsb2JhbHMgaGFzTWVtb3J5IGhhcm1vbmljTWVhbiBob3N0QWRkcmVzcyBob3N0QWRkcmVzc1RvTmFtZSBob3N0TmFtZSBob3N0TmFtZVRvQWRkcmVzcyBpc051bWJlciBJU09Ub01hYyBpdGVtT2Zmc2V0ICcgK1xuICAgICAgICAna2V5cyBsZW4gbGVuZ3RoIGxpYlVSTEVycm9yRGF0YSBsaWJVcmxGb3JtRGF0YSBsaWJVUkxmdHBDb21tYW5kIGxpYlVSTExhc3RIVFRQSGVhZGVycyBsaWJVUkxMYXN0UkhIZWFkZXJzICcgK1xuICAgICAgICAnbGliVXJsTXVsdGlwYXJ0Rm9ybUFkZFBhcnQgbGliVXJsTXVsdGlwYXJ0Rm9ybURhdGEgbGliVVJMVmVyc2lvbiBsaW5lT2Zmc2V0IGxuIGxuMSBsb2NhbE5hbWVzIGxvZyBsb2cyIGxvZzEwICcgK1xuICAgICAgICAnbG9uZ0ZpbGVQYXRoIGxvd2VyIG1hY1RvSVNPIG1hdGNoQ2h1bmsgbWF0Y2hUZXh0IG1hdHJpeE11bHRpcGx5IG1heCBtZDVEaWdlc3QgbWVkaWFuIG1lcmdlIG1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUgbWVzc2FnZURpZ2VzdCBtaWxsaXNlYyAnICtcbiAgICAgICAgJ21pbGxpc2VjcyBtaWxsaXNlY29uZCBtaWxsaXNlY29uZHMgbWluIG1vbnRoTmFtZXMgbmF0aXZlQ2hhclRvTnVtIG5vcm1hbGl6ZVRleHQgbnVtIG51bWJlciBudW1Ub0J5dGUgbnVtVG9DaGFyICcgK1xuICAgICAgICAnbnVtVG9Db2RlcG9pbnQgbnVtVG9OYXRpdmVDaGFyIG9mZnNldCBvcGVuIG9wZW5maWxlcyBvcGVuUHJvY2Vzc2VzIG9wZW5Qcm9jZXNzSURzIG9wZW5Tb2NrZXRzICcgK1xuICAgICAgICAncGFyYWdyYXBoT2Zmc2V0IHBhcmFtQ291bnQgcGFyYW0gcGFyYW1zIHBlZXJBZGRyZXNzIHBlbmRpbmdNZXNzYWdlcyBwbGF0Zm9ybSBwb3BTdGREZXYgcG9wdWxhdGlvblN0YW5kYXJkRGV2aWF0aW9uICcgK1xuICAgICAgICAncG9wdWxhdGlvblZhcmlhbmNlIHBvcFZhcmlhbmNlIHByb2Nlc3NJRCByYW5kb20gcmFuZG9tQnl0ZXMgcmVwbGFjZVRleHQgcmVzdWx0IHJldkNyZWF0ZVhNTFRyZWUgcmV2Q3JlYXRlWE1MVHJlZUZyb21GaWxlICcgK1xuICAgICAgICAncmV2Q3VycmVudFJlY29yZCByZXZDdXJyZW50UmVjb3JkSXNGaXJzdCByZXZDdXJyZW50UmVjb3JkSXNMYXN0IHJldkRhdGFiYXNlQ29sdW1uQ291bnQgcmV2RGF0YWJhc2VDb2x1bW5Jc051bGwgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtbkxlbmd0aHMgcmV2RGF0YWJhc2VDb2x1bW5OYW1lcyByZXZEYXRhYmFzZUNvbHVtbk5hbWVkIHJldkRhdGFiYXNlQ29sdW1uTnVtYmVyZWQgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZUNvbHVtblR5cGVzIHJldkRhdGFiYXNlQ29ubmVjdFJlc3VsdCByZXZEYXRhYmFzZUN1cnNvcnMgcmV2RGF0YWJhc2VJRCByZXZEYXRhYmFzZVRhYmxlTmFtZXMgJyArXG4gICAgICAgICdyZXZEYXRhYmFzZVR5cGUgcmV2RGF0YUZyb21RdWVyeSByZXZkYl9jbG9zZUN1cnNvciByZXZkYl9jb2x1bW5ieW51bWJlciByZXZkYl9jb2x1bW5jb3VudCByZXZkYl9jb2x1bW5pc251bGwgJyArXG4gICAgICAgICdyZXZkYl9jb2x1bW5sZW5ndGhzIHJldmRiX2NvbHVtbm5hbWVzIHJldmRiX2NvbHVtbnR5cGVzIHJldmRiX2NvbW1pdCByZXZkYl9jb25uZWN0IHJldmRiX2Nvbm5lY3Rpb25zICcgK1xuICAgICAgICAncmV2ZGJfY29ubmVjdGlvbmVyciByZXZkYl9jdXJyZW50cmVjb3JkIHJldmRiX2N1cnNvcmNvbm5lY3Rpb24gcmV2ZGJfY3Vyc29yZXJyIHJldmRiX2N1cnNvcnMgcmV2ZGJfZGJ0eXBlICcgK1xuICAgICAgICAncmV2ZGJfZGlzY29ubmVjdCByZXZkYl9leGVjdXRlIHJldmRiX2lzZW9mIHJldmRiX2lzYm9mIHJldmRiX21vdmVmaXJzdCByZXZkYl9tb3ZlbGFzdCByZXZkYl9tb3ZlbmV4dCAnICtcbiAgICAgICAgJ3JldmRiX21vdmVwcmV2IHJldmRiX3F1ZXJ5IHJldmRiX3F1ZXJ5bGlzdCByZXZkYl9yZWNvcmRjb3VudCByZXZkYl9yb2xsYmFjayByZXZkYl90YWJsZW5hbWVzICcgK1xuICAgICAgICAncmV2R2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldk51bWJlck9mUmVjb3JkcyByZXZPcGVuRGF0YWJhc2UgcmV2T3BlbkRhdGFiYXNlcyByZXZRdWVyeURhdGFiYXNlICcgK1xuICAgICAgICAncmV2UXVlcnlEYXRhYmFzZUJsb2IgcmV2UXVlcnlSZXN1bHQgcmV2UXVlcnlJc0F0U3RhcnQgcmV2UXVlcnlJc0F0RW5kIHJldlVuaXhGcm9tTWFjUGF0aCByZXZYTUxBdHRyaWJ1dGUgJyArXG4gICAgICAgICdyZXZYTUxBdHRyaWJ1dGVzIHJldlhNTEF0dHJpYnV0ZVZhbHVlcyByZXZYTUxDaGlsZENvbnRlbnRzIHJldlhNTENoaWxkTmFtZXMgcmV2WE1MQ3JlYXRlVHJlZUZyb21GaWxlV2l0aE5hbWVzcGFjZXMgJyArXG4gICAgICAgICdyZXZYTUxDcmVhdGVUcmVlV2l0aE5hbWVzcGFjZXMgcmV2WE1MRGF0YUZyb21YUGF0aFF1ZXJ5IHJldlhNTEV2YWx1YXRlWFBhdGggcmV2WE1MRmlyc3RDaGlsZCByZXZYTUxNYXRjaGluZ05vZGUgJyArXG4gICAgICAgICdyZXZYTUxOZXh0U2libGluZyByZXZYTUxOb2RlQ29udGVudHMgcmV2WE1MTnVtYmVyT2ZDaGlsZHJlbiByZXZYTUxQYXJlbnQgcmV2WE1MUHJldmlvdXNTaWJsaW5nICcgK1xuICAgICAgICAncmV2WE1MUm9vdE5vZGUgcmV2WE1MUlBDX0NyZWF0ZVJlcXVlc3QgcmV2WE1MUlBDX0RvY3VtZW50cyByZXZYTUxSUENfRXJyb3IgJyArXG4gICAgICAgICdyZXZYTUxSUENfR2V0SG9zdCByZXZYTUxSUENfR2V0TWV0aG9kIHJldlhNTFJQQ19HZXRQYXJhbSByZXZYTUxUZXh0IHJldlhNTFJQQ19FeGVjdXRlICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFBhcmFtQ291bnQgcmV2WE1MUlBDX0dldFBhcmFtTm9kZSByZXZYTUxSUENfR2V0UGFyYW1UeXBlIHJldlhNTFJQQ19HZXRQYXRoIHJldlhNTFJQQ19HZXRQb3J0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldFByb3RvY29sIHJldlhNTFJQQ19HZXRSZXF1ZXN0IHJldlhNTFJQQ19HZXRSZXNwb25zZSByZXZYTUxSUENfR2V0U29ja2V0IHJldlhNTFRyZWUgJyArXG4gICAgICAgICdyZXZYTUxUcmVlcyByZXZYTUxWYWxpZGF0ZURURCByZXZaaXBEZXNjcmliZUl0ZW0gcmV2WmlwRW51bWVyYXRlSXRlbXMgcmV2WmlwT3BlbkFyY2hpdmVzIHJvdW5kIHNhbXBWYXJpYW5jZSAnICtcbiAgICAgICAgJ3NlYyBzZWNzIHNlY29uZHMgc2VudGVuY2VPZmZzZXQgc2hhMURpZ2VzdCBzaGVsbCBzaG9ydEZpbGVQYXRoIHNpbiBzcGVjaWFsRm9sZGVyUGF0aCBzcXJ0IHN0YW5kYXJkRGV2aWF0aW9uIHN0YXRSb3VuZCAnICtcbiAgICAgICAgJ3N0ZERldiBzdW0gc3lzRXJyb3Igc3lzdGVtVmVyc2lvbiB0YW4gdGVtcE5hbWUgdGV4dERlY29kZSB0ZXh0RW5jb2RlIHRpY2sgdGlja3MgdGltZSB0byB0b2tlbk9mZnNldCB0b0xvd2VyIHRvVXBwZXIgJyArXG4gICAgICAgICd0cmFuc3Bvc2UgdHJ1ZXdvcmRPZmZzZXQgdHJ1bmMgdW5pRGVjb2RlIHVuaUVuY29kZSB1cHBlciBVUkxEZWNvZGUgVVJMRW5jb2RlIFVSTFN0YXR1cyB1dWlkIHZhbHVlIHZhcmlhYmxlTmFtZXMgJyArXG4gICAgICAgICd2YXJpYW5jZSB2ZXJzaW9uIHdhaXREZXB0aCB3ZWVrZGF5TmFtZXMgd29yZE9mZnNldCB4c2x0QXBwbHlTdHlsZXNoZWV0IHhzbHRBcHBseVN0eWxlc2hlZXRGcm9tRmlsZSB4c2x0TG9hZFN0eWxlc2hlZXQgJyArXG4gICAgICAgICd4c2x0TG9hZFN0eWxlc2hlZXRGcm9tRmlsZSBhZGQgYnJlYWtwb2ludCBjYW5jZWwgY2xlYXIgbG9jYWwgdmFyaWFibGUgZmlsZSB3b3JkIGxpbmUgZm9sZGVyIGRpcmVjdG9yeSBVUkwgY2xvc2Ugc29ja2V0IHByb2Nlc3MgJyArXG4gICAgICAgICdjb21iaW5lIGNvbnN0YW50IGNvbnZlcnQgY3JlYXRlIG5ldyBhbGlhcyBmb2xkZXIgZGlyZWN0b3J5IGRlY3J5cHQgZGVsZXRlIHZhcmlhYmxlIHdvcmQgbGluZSBmb2xkZXIgJyArXG4gICAgICAgICdkaXJlY3RvcnkgVVJMIGRpc3BhdGNoIGRpdmlkZSBkbyBlbmNyeXB0IGZpbHRlciBnZXQgaW5jbHVkZSBpbnRlcnNlY3Qga2lsbCBsaWJVUkxEb3dubG9hZFRvRmlsZSAnICtcbiAgICAgICAgJ2xpYlVSTEZvbGxvd0h0dHBSZWRpcmVjdHMgbGliVVJMZnRwVXBsb2FkIGxpYlVSTGZ0cFVwbG9hZEZpbGUgbGliVVJMcmVzZXRBbGwgbGliVXJsU2V0QXV0aENhbGxiYWNrIGxpYlVSTFNldERyaXZlciAnICtcbiAgICAgICAgJ2xpYlVSTFNldEN1c3RvbUhUVFBIZWFkZXJzIGxpYlVybFNldEV4cGVjdDEwMCBsaWJVUkxTZXRGVFBMaXN0Q29tbWFuZCBsaWJVUkxTZXRGVFBNb2RlIGxpYlVSTFNldEZUUFN0b3BUaW1lICcgK1xuICAgICAgICAnbGliVVJMU2V0U3RhdHVzQ2FsbGJhY2sgbG9hZCBleHRlbnNpb24gbG9hZGVkRXh0ZW5zaW9ucyBtdWx0aXBseSBzb2NrZXQgcHJlcGFyZSBwcm9jZXNzIHBvc3Qgc2VlayByZWwgcmVsYXRpdmUgcmVhZCBmcm9tIHByb2Nlc3MgcmVuYW1lICcgK1xuICAgICAgICAncmVwbGFjZSByZXF1aXJlIHJlc2V0QWxsIHJlc29sdmUgcmV2QWRkWE1MTm9kZSByZXZBcHBlbmRYTUwgcmV2Q2xvc2VDdXJzb3IgcmV2Q2xvc2VEYXRhYmFzZSByZXZDb21taXREYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldkNvcHlGaWxlIHJldkNvcHlGb2xkZXIgcmV2Q29weVhNTE5vZGUgcmV2RGVsZXRlRm9sZGVyIHJldkRlbGV0ZVhNTE5vZGUgcmV2RGVsZXRlQWxsWE1MVHJlZXMgJyArXG4gICAgICAgICdyZXZEZWxldGVYTUxUcmVlIHJldkV4ZWN1dGVTUUwgcmV2R29VUkwgcmV2SW5zZXJ0WE1MTm9kZSByZXZNb3ZlRm9sZGVyIHJldk1vdmVUb0ZpcnN0UmVjb3JkIHJldk1vdmVUb0xhc3RSZWNvcmQgJyArXG4gICAgICAgICdyZXZNb3ZlVG9OZXh0UmVjb3JkIHJldk1vdmVUb1ByZXZpb3VzUmVjb3JkIHJldk1vdmVUb1JlY29yZCByZXZNb3ZlWE1MTm9kZSByZXZQdXRJbnRvWE1MTm9kZSByZXZSb2xsQmFja0RhdGFiYXNlICcgK1xuICAgICAgICAncmV2U2V0RGF0YWJhc2VEcml2ZXJQYXRoIHJldlNldFhNTEF0dHJpYnV0ZSByZXZYTUxSUENfQWRkUGFyYW0gcmV2WE1MUlBDX0RlbGV0ZUFsbERvY3VtZW50cyByZXZYTUxBZGREVEQgJyArXG4gICAgICAgICdyZXZYTUxSUENfRnJlZSByZXZYTUxSUENfRnJlZUFsbCByZXZYTUxSUENfRGVsZXRlRG9jdW1lbnQgcmV2WE1MUlBDX0RlbGV0ZVBhcmFtIHJldlhNTFJQQ19TZXRIb3N0ICcgK1xuICAgICAgICAncmV2WE1MUlBDX1NldE1ldGhvZCByZXZYTUxSUENfU2V0UG9ydCByZXZYTUxSUENfU2V0UHJvdG9jb2wgcmV2WE1MUlBDX1NldFNvY2tldCByZXZaaXBBZGRJdGVtV2l0aERhdGEgJyArXG4gICAgICAgICdyZXZaaXBBZGRJdGVtV2l0aEZpbGUgcmV2WmlwQWRkVW5jb21wcmVzc2VkSXRlbVdpdGhEYXRhIHJldlppcEFkZFVuY29tcHJlc3NlZEl0ZW1XaXRoRmlsZSByZXZaaXBDYW5jZWwgJyArXG4gICAgICAgICdyZXZaaXBDbG9zZUFyY2hpdmUgcmV2WmlwRGVsZXRlSXRlbSByZXZaaXBFeHRyYWN0SXRlbVRvRmlsZSByZXZaaXBFeHRyYWN0SXRlbVRvVmFyaWFibGUgcmV2WmlwU2V0UHJvZ3Jlc3NDYWxsYmFjayAnICtcbiAgICAgICAgJ3JldlppcFJlbmFtZUl0ZW0gcmV2WmlwUmVwbGFjZUl0ZW1XaXRoRGF0YSByZXZaaXBSZXBsYWNlSXRlbVdpdGhGaWxlIHJldlppcE9wZW5BcmNoaXZlIHNlbmQgc2V0IHNvcnQgc3BsaXQgc3RhcnQgc3RvcCAnICtcbiAgICAgICAgJ3N1YnRyYWN0IHN5bW1ldHJpYyB1bmlvbiB1bmxvYWQgdmVjdG9yRG90UHJvZHVjdCB3YWl0IHdyaXRlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYmVuZFxcXFxzaWZcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBUSVRMRTFcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiZW5kXFxcXHMrJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnZW5kJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgVElUTEUxXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbW1hbmQgb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBUSVRMRTIsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFRJVExFMVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJzxcXFxcPyhyZXZ8bGN8bGl2ZWNvZGUpJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgYmVnaW46ICc8XFxcXD8nIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFw/PicgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgVElUTEUxXG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUyksXG4gICAgaWxsZWdhbDogJzskfF5cXFxcW3xePXwmfHsnXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIEpTIGtleXdvcmRzXG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgbmV3IGRvIHJldHVybiBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2YgdGhyb3cgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgZGVidWdnZXIgY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB3aXRoICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBrZXl3b3Jkc1xuICAgICAgJ3RoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QgaXQgdGhhdCBvdGhlcndpc2UgZnJvbSB0byB0aWwgZmFsbHRocm91Z2ggc3VwZXIgJyArXG4gICAgICAnY2FzZSBkZWZhdWx0IGZ1bmN0aW9uIHZhciB2b2lkIGNvbnN0IGxldCBlbnVtIGV4cG9ydCBpbXBvcnQgbmF0aXZlIGxpc3QgbWFwICcgK1xuICAgICAgJ19faGFzUHJvcCBfX2V4dGVuZHMgX19zbGljZSBfX2JpbmQgX19pbmRleE9mJyxcbiAgICBsaXRlcmFsOlxuICAgICAgLy8gSlMgbGl0ZXJhbHNcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkICcgK1xuICAgICAgLy8gTGl2ZVNjcmlwdCBsaXRlcmFsc1xuICAgICAgJ3llcyBubyBvbiBvZmYgaXQgdGhhdCB2b2lkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICducG0gcmVxdWlyZSBjb25zb2xlIHByaW50IG1vZHVsZSBnbG9iYWwgd2luZG93IGRvY3VtZW50J1xuICB9O1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXSg/OlxcLVswLTlBLVphLXokX118WzAtOUEtWmEteiRfXSkqJztcbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgU1VCU1RfU0lNUExFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNbQS1aYS16JF9dLywgZW5kOiAvKD86XFwtWzAtOUEtWmEteiRfXXxbMC05QS1aYS16JF9dKSovLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFt4WF1bYS1mQS1GMC05X10rKXwoXFxcXGJcXFxcZChcXFxcZHxfXFxcXGQpKihcXFxcLihcXFxcZChcXFxcZHxfXFxcXGQpKik/KT8oXypbZUVdKFstK11cXFxcZChfXFxcXGR8XFxcXGQpKik/KT9bX2Etel0qKScsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfSAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgU1VCU1RfU0lNUExFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFNVQlNUX1NJTVBMRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXFxcXC8sIGVuZDogLyhcXHN8JCkvLFxuICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vJywgZW5kOiAnLy9bZ2ltXSonLFxuICAgICAgICAgIGNvbnRhaW5zOiBbU1VCU1QsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyByZWdleCBjYW4ndCBzdGFydCB3aXRoIHNwYWNlIHRvIHBhcnNlIHggLyAyIC8gMyBhcyB0d28gZGl2aXNpb25zXG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCAqLCBhbmQgaXQgc3VwcG9ydHMgYW4gXCJpbGxlZ2FsXCIgaW4gdGhlIG1haW4gbW9kZVxuICAgICAgICAgIGJlZ2luOiAvXFwvKD8hWyAqXSkoXFxcXFxcL3wuKSo/XFwvW2dpbV0qKD89XFxXKS9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdAJyArIEpTX0lERU5UX1JFXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ2BgJywgZW5kOiAnYGAnLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdqYXZhc2NyaXB0J1xuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIC8qIFdlIG5lZWQgYW5vdGhlciBjb250YWluZWQgbmFtZWxlc3MgbW9kZSB0byBub3QgaGF2ZSBldmVyeSBuZXN0ZWRcbiAgICBwYWlyIG9mIHBhcmVucyB0byBiZSBjYWxsZWQgXCJwYXJhbXNcIiAqL1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgU1lNQk9MUyA9IHtcbiAgICBiZWdpbjogJygjPT58PT58XFxcXHw+PnwtPy0+fFxcXFwhLT4pJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydscyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXFxcXC9cXFxcKicsICdcXFxcKlxcXFwvJyksXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgU1lNQk9MUywgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCXFxcXC0+XFxcXCo/JywgZW5kOiAnXFxcXC0+XFxcXCo/J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8hPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy1+XXsxLDJ9PlxcXFwqPycsIGVuZDogJ1stfl17MSwyfT5cXFxcKj8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJygnICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqKD86PXw6PSlcXFxccyopPyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCIT9bLX5dezEsMn0+XFxcXCo/JywgZW5kOiAnIT9bLX5dezEsMn0+XFxcXCo/J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGlkZW50aWZpZXIgPSAnKFstYS16QS1aJC5fXVtcXFxcd1xcXFwtJC5dKiknO1xuICByZXR1cm4ge1xuICAgIC8vbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYmVnaW4gZW5kIHRydWUgZmFsc2UgZGVjbGFyZSBkZWZpbmUgZ2xvYmFsICcgK1xuICAgICAgJ2NvbnN0YW50IHByaXZhdGUgbGlua2VyX3ByaXZhdGUgaW50ZXJuYWwgJyArXG4gICAgICAnYXZhaWxhYmxlX2V4dGVybmFsbHkgbGlua29uY2UgbGlua29uY2Vfb2RyIHdlYWsgJyArXG4gICAgICAnd2Vha19vZHIgYXBwZW5kaW5nIGRsbGltcG9ydCBkbGxleHBvcnQgY29tbW9uICcgK1xuICAgICAgJ2RlZmF1bHQgaGlkZGVuIHByb3RlY3RlZCBleHRlcm5fd2VhayBleHRlcm5hbCAnICtcbiAgICAgICd0aHJlYWRfbG9jYWwgemVyb2luaXRpYWxpemVyIHVuZGVmIG51bGwgdG8gdGFpbCAnICtcbiAgICAgICd0YXJnZXQgdHJpcGxlIGRhdGFsYXlvdXQgdm9sYXRpbGUgbnV3IG5zdyBubmFuICcgK1xuICAgICAgJ25pbmYgbnN6IGFyY3AgZmFzdCBleGFjdCBpbmJvdW5kcyBhbGlnbiAnICtcbiAgICAgICdhZGRyc3BhY2Ugc2VjdGlvbiBhbGlhcyBtb2R1bGUgYXNtIHNpZGVlZmZlY3QgJyArXG4gICAgICAnZ2MgZGJnIGxpbmtlcl9wcml2YXRlX3dlYWsgYXR0cmlidXRlcyBibG9ja2FkZHJlc3MgJyArXG4gICAgICAnaW5pdGlhbGV4ZWMgbG9jYWxkeW5hbWljIGxvY2FsZXhlYyBwcmVmaXggdW5uYW1lZF9hZGRyICcgK1xuICAgICAgJ2NjYyBmYXN0Y2MgY29sZGNjIHg4Nl9zdGRjYWxsY2MgeDg2X2Zhc3RjYWxsY2MgJyArXG4gICAgICAnYXJtX2FwY3NjYyBhcm1fYWFwY3NjYyBhcm1fYWFwY3NfdmZwY2MgcHR4X2RldmljZSAnICtcbiAgICAgICdwdHhfa2VybmVsIGludGVsX29jbF9iaWNjIG1zcDQzMF9pbnRyY2Mgc3Bpcl9mdW5jICcgK1xuICAgICAgJ3NwaXJfa2VybmVsIHg4Nl82NF9zeXN2Y2MgeDg2XzY0X3dpbjY0Y2MgeDg2X3RoaXNjYWxsY2MgJyArXG4gICAgICAnY2MgYyBzaWduZXh0IHplcm9leHQgaW5yZWcgc3JldCBub3Vud2luZCAnICtcbiAgICAgICdub3JldHVybiBub2FsaWFzIG5vY2FwdHVyZSBieXZhbCBuZXN0IHJlYWRub25lICcgK1xuICAgICAgJ3JlYWRvbmx5IGlubGluZWhpbnQgbm9pbmxpbmUgYWx3YXlzaW5saW5lIG9wdHNpemUgc3NwICcgK1xuICAgICAgJ3NzcHJlcSBub3JlZHpvbmUgbm9pbXBsaWNpdGZsb2F0IG5ha2VkIGJ1aWx0aW4gY29sZCAnICtcbiAgICAgICdub2J1aWx0aW4gbm9kdXBsaWNhdGUgbm9ubGF6eWJpbmQgb3B0bm9uZSByZXR1cm5zX3R3aWNlICcgK1xuICAgICAgJ3Nhbml0aXplX2FkZHJlc3Mgc2FuaXRpemVfbWVtb3J5IHNhbml0aXplX3RocmVhZCBzc3BzdHJvbmcgJyArXG4gICAgICAndXd0YWJsZSByZXR1cm5lZCB0eXBlIG9wYXF1ZSBlcSBuZSBzbHQgc2d0ICcgK1xuICAgICAgJ3NsZSBzZ2UgdWx0IHVndCB1bGUgdWdlIG9lcSBvbmUgb2x0IG9ndCAnICtcbiAgICAgICdvbGUgb2dlIG9yZCB1bm8gdWVxIHVuZSB4IGFjcV9yZWwgYWNxdWlyZSAnICtcbiAgICAgICdhbGlnbnN0YWNrIGF0b21pYyBjYXRjaCBjbGVhbnVwIGZpbHRlciBpbnRlbGRpYWxlY3QgJyArXG4gICAgICAnbWF4IG1pbiBtb25vdG9uaWMgbmFuZCBwZXJzb25hbGl0eSByZWxlYXNlIHNlcV9jc3QgJyArXG4gICAgICAnc2luZ2xldGhyZWFkIHVtYXggdW1pbiB1bm9yZGVyZWQgeGNoZyBhZGQgZmFkZCAnICtcbiAgICAgICdzdWIgZnN1YiBtdWwgZm11bCB1ZGl2IHNkaXYgZmRpdiB1cmVtIHNyZW0gJyArXG4gICAgICAnZnJlbSBzaGwgbHNociBhc2hyIGFuZCBvciB4b3IgaWNtcCBmY21wICcgK1xuICAgICAgJ3BoaSBjYWxsIHRydW5jIHpleHQgc2V4dCBmcHRydW5jIGZwZXh0IHVpdG9mcCAnICtcbiAgICAgICdzaXRvZnAgZnB0b3VpIGZwdG9zaSBpbnR0b3B0ciBwdHJ0b2ludCBiaXRjYXN0ICcgK1xuICAgICAgJ2FkZHJzcGFjZWNhc3Qgc2VsZWN0IHZhX2FyZyByZXQgYnIgc3dpdGNoIGludm9rZSAnICtcbiAgICAgICd1bndpbmQgdW5yZWFjaGFibGUgaW5kaXJlY3RiciBsYW5kaW5ncGFkIHJlc3VtZSAnICtcbiAgICAgICdtYWxsb2MgYWxsb2NhIGZyZWUgbG9hZCBzdG9yZSBnZXRlbGVtZW50cHRyICcgK1xuICAgICAgJ2V4dHJhY3RlbGVtZW50IGluc2VydGVsZW1lbnQgc2h1ZmZsZXZlY3RvciBnZXRyZXN1bHQgJyArXG4gICAgICAnZXh0cmFjdHZhbHVlIGluc2VydHZhbHVlIGF0b21pY3JtdyBjbXB4Y2hnIGZlbmNlICcgK1xuICAgICAgJ2FyZ21lbW9ubHkgZG91YmxlJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdpXFxcXGQrJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLCAnXFxcXG4nLCB7cmVsZXZhbmNlOiAwfVxuICAgICAgKSxcbiAgICAgIC8vIERvdWJsZSBxdW90ZSBzdHJpbmdcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRG91YmxlLXF1b3RlZCBzdHJpbmdcbiAgICAgICAgICB7IGJlZ2luOiAnXCInLCBlbmQ6ICdbXlxcXFxcXFxcXVwiJyB9LFxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnQCcgKyBpZGVudGlmaWVyIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ0BcXFxcZCsnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyEnICsgaWRlbnRpZmllciB9LFxuICAgICAgICAgIHsgYmVnaW46ICchXFxcXGQrJyArIGlkZW50aWZpZXIgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICclJyArIGlkZW50aWZpZXIgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnJVxcXFxkKycgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnI1xcXFxkKycgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHsgYmVnaW46ICcwW3hYXVthLWZBLUYwLTldKycgfSxcbiAgICAgICAgICAgIHsgYmVnaW46ICctP1xcXFxkKyg/OlsuXVxcXFxkKyk/KD86W2VFXVstK10/XFxcXGQrKD86Wy5dXFxcXGQrKT8pPycgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIHZhciBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogL1xcXFxbdG5cIlxcXFxdL1xuICAgIH07XG5cbiAgICB2YXIgTFNMX1NUUklOR1MgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBMU0xfU1RSSU5HX0VTQ0FQRV9DSEFSU1xuICAgICAgICBdXG4gICAgfTtcblxuICAgIHZhciBMU0xfTlVNQkVSUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkVcbiAgICB9O1xuXG4gICAgdmFyIExTTF9DT05TVEFOVFMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpQSXxUV09fUEl8UElfQllfVFdPfERFR19UT19SQUR8UkFEX1RPX0RFR3xTUVJUMilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlhQX0VSUk9SXyg/OkVYUEVSSUVOQ0VTX0RJU0FCTEVEfEVYUEVSSUVOQ0VfKD86RElTQUJMRUR8U1VTUEVOREVEKXxJTlZBTElEXyg/OkVYUEVSSUVOQ0V8UEFSQU1FVEVSUyl8S0VZX05PVF9GT1VORHxNQVRVUklUWV9FWENFRURFRHxOT05FfE5PVF8oPzpGT1VORHxQRVJNSVRURUQoPzpfTEFORCk/KXxOT19FWFBFUklFTkNFfFFVT1RBX0VYQ0VFREVEfFJFVFJZX1VQREFURXxTVE9SQUdFX0VYQ0VQVElPTnxTVE9SRV9ESVNBQkxFRHxUSFJPVFRMRUR8VU5LTk9XTl9FUlJPUil8SlNPTl9BUFBFTkR8U1RBVFVTXyg/OlBIWVNJQ1N8Uk9UQVRFX1tYWVpdfFBIQU5UT018U0FOREJPWHxCTE9DS19HUkFCKD86X09CSkVDVCk/fCg/OkRJRXxSRVRVUk4pX0FUX0VER0V8Q0FTVF9TSEFET1dTfE9LfE1BTEZPUk1FRF9QQVJBTVN8VFlQRV9NSVNNQVRDSHxCT1VORFNfRVJST1J8Tk9UXyg/OkZPVU5EfFNVUFBPUlRFRCl8SU5URVJOQUxfRVJST1J8V0hJVEVMSVNUX0ZBSUxFRCl8QUdFTlQoPzpfKD86QllfKD86TEVHQUNZX3xVU0VSKU5BTUV8RkxZSU5HfEFUVEFDSE1FTlRTfFNDUklQVEVEfE1PVVNFTE9PS3xTSVRUSU5HfE9OX09CSkVDVHxBV0FZfFdBTEtJTkd8SU5fQUlSfFRZUElOR3xDUk9VQ0hJTkd8QlVTWXxBTFdBWVNfUlVOfEFVVE9QSUxPVHxMSVNUXyg/OlBBUkNFTCg/Ol9PV05FUik/fFJFR0lPTikpKT98Q0FNRVJBXyg/OlBJVENIfERJU1RBTkNFfEJFSElORE5FU1NfKD86QU5HTEV8TEFHKXwoPzpGT0NVU3xQT1NJVElPTikoPzpfKD86VEhSRVNIT0xEfExPQ0tFRHxMQUcpKT98Rk9DVVNfT0ZGU0VUfEFDVElWRSl8QU5JTV9PTnxMT09QfFJFVkVSU0V8UElOR19QT05HfFNNT09USHxST1RBVEV8U0NBTEV8QUxMX1NJREVTfExJTktfKD86Uk9PVHxTRVR8QUxMXyg/Ok9USEVSU3xDSElMRFJFTil8VEhJUyl8QUNUSVZFfFBBU1MoPzpJVkV8Xyg/OkFMV0FZU3xJRl9OT1RfSEFORExFRHxORVZFUikpfFNDUklQVEVEfENPTlRST0xfKD86RldEfEJBQ0t8KD86Uk9UXyk/KD86TEVGVHxSSUdIVCl8VVB8RE9XTnwoPzpNTF8pP0xCVVRUT04pfFBFUk1JU1NJT05fKD86UkVUVVJOX09CSkVDVFN8REVCSVR8T1ZFUlJJREVfQU5JTUFUSU9OU3xTSUxFTlRfRVNUQVRFX01BTkFHRU1FTlR8VEFLRV9DT05UUk9MU3xUUklHR0VSX0FOSU1BVElPTnxBVFRBQ0h8Q0hBTkdFX0xJTktTfCg/OkNPTlRST0x8VFJBQ0spX0NBTUVSQXxURUxFUE9SVCl8SU5WRU5UT1JZXyg/OlRFWFRVUkV8U09VTkR8T0JKRUNUfFNDUklQVHxMQU5ETUFSS3xDTE9USElOR3xOT1RFQ0FSRHxCT0RZUEFSVHxBTklNQVRJT058R0VTVFVSRXxBTEx8Tk9ORSl8Q0hBTkdFRF8oPzpJTlZFTlRPUll8Q09MT1J8U0hBUEV8U0NBTEV8VEVYVFVSRXxMSU5LfEFMTE9XRURfRFJPUHxPV05FUnxSRUdJT04oPzpfU1RBUlQpP3xURUxFUE9SVHxNRURJQSl8T0JKRUNUXyg/OkNMSUNLX0FDVElPTnxIT1ZFUl9IRUlHSFR8TEFTVF9PV05FUl9JRHwoPzpQSFlTSUNTfFNFUlZFUnxTVFJFQU1JTkcpX0NPU1R8VU5LTk9XTl9ERVRBSUx8Q0hBUkFDVEVSX1RJTUV8UEhBTlRPTXxQSFlTSUNTfFRFTVBfKD86QVRUQUNIRUR8T05fUkVaKXxOQU1FfERFU0N8UE9TfFBSSU1fKD86Q09VTlR8RVFVSVZBTEVOQ0UpfFJFVFVSTl8oPzpQQVJDRUwoPzpfT1dORVIpP3xSRUdJT04pfFJFWlpFUl9LRVl8Uk9PP1R8VkVMT0NJVFl8T01FR0F8T1dORVJ8R1JPVVAoPzpfVEFHKT98Q1JFQVRPUnxBVFRBQ0hFRF8oPzpQT0lOVHxTTE9UU19BVkFJTEFCTEUpfFJFTkRFUl9XRUlHSFR8KD86Qk9EWV9TSEFQRXxQQVRIRklORElORylfVFlQRXwoPzpSVU5OSU5HfFRPVEFMKV9TQ1JJUFRfQ09VTlR8VE9UQUxfSU5WRU5UT1JZX0NPVU5UfFNDUklQVF8oPzpNRU1PUll8VElNRSkpfFRZUEVfKD86SU5URUdFUnxGTE9BVHxTVFJJTkd8S0VZfFZFQ1RPUnxST1RBVElPTnxJTlZBTElEKXwoPzpERUJVR3xQVUJMSUMpX0NIQU5ORUx8QVRUQUNIXyg/OkFWQVRBUl9DRU5URVJ8Q0hFU1R8SEVBRHxCQUNLfFBFTFZJU3xNT1VUSHxDSElOfE5FQ0t8Tk9TRXxCRUxMWXxbTFJdKD86U0hPVUxERVJ8SEFORHxGT09UfEVBUnxFWUV8W1VMXSg/OkFSTXxMRUcpfEhJUCl8KD86TEVGVHxSSUdIVClfUEVDfEhVRF8oPzpDRU5URVJfWzEyXXxUT1BfKD86UklHSFR8Q0VOVEVSfExFRlQpfEJPVFRPTSg/Ol8oPzpSSUdIVHxMRUZUKSk/KXxbTFJdSEFORF9SSU5HMXxUQUlMXyg/OkJBU0V8VElQKXxbTFJdV0lOR3xGQUNFXyg/OkpBV3xbTFJdRUFSfFtMUl1FWUV8VE9VTkdFKXxHUk9JTnxISU5EX1tMUl1GT09UKXxMQU5EXyg/OkxFVkVMfFJBSVNFfExPV0VSfFNNT09USHxOT0lTRXxSRVZFUlQpfERBVEFfKD86T05MSU5FfE5BTUV8Qk9STnxTSU1fKD86UE9TfFNUQVRVU3xSQVRJTkcpfFBBWUlORk8pfFBBWU1FTlRfSU5GT18oPzpPTl9GSUxFfFVTRUQpfFJFTU9URV9EQVRBXyg/OkNIQU5ORUx8UkVRVUVTVHxSRVBMWSl8UFNZU18oPzpQQVJUXyg/OkJGXyg/OlpFUk98T05FKD86X01JTlVTXyg/OkRFU1RfQ09MT1J8U09VUkNFXyhBTFBIQXxDT0xPUikpKT98REVTVF9DT0xPUnxTT1VSQ0VfKEFMUEhBfENPTE9SKSl8QkxFTkRfRlVOQ18oREVTVHxTT1VSQ0UpfEZMQUdTfCg/OlNUQVJUfEVORClfKD86Q09MT1J8QUxQSEF8U0NBTEV8R0xPVyl8TUFYX0FHRXwoPzpSSUJCT058V0lORHxJTlRFUlBfKD86Q09MT1J8U0NBTEUpfEJPVU5DRXxGT0xMT1dfKD86U1JDfFZFTE9DSVRZKXxUQVJHRVRfKD86UE9TfExJTkVBUil8RU1JU1NJVkUpX01BU0spfFNSQ18oPzpNQVhfQUdFfFBBVFRFUk58QU5HTEVfKD86QkVHSU58RU5EKXxCVVJTVF8oPzpSQVRFfFBBUlRfQ09VTlR8UkFESVVTfFNQRUVEXyg/Ok1JTnxNQVgpKXxBQ0NFTHxURVhUVVJFfFRBUkdFVF9LRVl8T01FR0F8UEFUVEVSTl8oPzpEUk9QfEVYUExPREV8QU5HTEUoPzpfQ09ORSg/Ol9FTVBUWSk/KT8pKSl8VkVISUNMRV8oPzpSRUZFUkVOQ0VfRlJBTUV8VFlQRV8oPzpOT05FfFNMRUR8Q0FSfEJPQVR8QUlSUExBTkV8QkFMTE9PTil8KD86TElORUFSfEFOR1VMQVIpXyg/OkZSSUNUSU9OX1RJTUVTQ0FMRXxNT1RPUl9ESVJFQ1RJT04pfExJTkVBUl9NT1RPUl9PRkZTRVR8SE9WRVJfKD86SEVJR0hUfEVGRklDSUVOQ1l8VElNRVNDQUxFKXxCVU9ZQU5DWXwoPzpMSU5FQVJ8QU5HVUxBUilfKD86REVGTEVDVElPTl8oPzpFRkZJQ0lFTkNZfFRJTUVTQ0FMRSl8TU9UT1JfKD86REVDQVlfKT9USU1FU0NBTEUpfFZFUlRJQ0FMX0FUVFJBQ1RJT05fKD86RUZGSUNJRU5DWXxUSU1FU0NBTEUpfEJBTktJTkdfKD86RUZGSUNJRU5DWXxNSVh8VElNRVNDQUxFKXxGTEFHXyg/Ok5PX0RFRkxFQ1RJT05fVVB8TElNSVRfKD86Uk9MTF9PTkxZfE1PVE9SX1VQKXxIT1ZFUl8oPzooPzpXQVRFUnxURVJSQUlOfFVQKV9PTkxZfEdMT0JBTF9IRUlHSFQpfE1PVVNFTE9PS18oPzpTVEVFUnxCQU5LKXxDQU1FUkFfREVDT1VQTEVEKSl8UFJJTV8oPzpBTExPV19VTlNJVHxBTFBIQV9NT0RFKD86Xyg/OkJMRU5EfEVNSVNTSVZFfE1BU0t8Tk9ORSkpP3xOT1JNQUx8U1BFQ1VMQVJ8VFlQRSg/Ol8oPzpCT1h8Q1lMSU5ERVJ8UFJJU018U1BIRVJFfFRPUlVTfFRVQkV8UklOR3xTQ1VMUFQpKT98SE9MRV8oPzpERUZBVUxUfENJUkNMRXxTUVVBUkV8VFJJQU5HTEUpfE1BVEVSSUFMKD86Xyg/OlNUT05FfE1FVEFMfEdMQVNTfFdPT0R8RkxFU0h8UExBU1RJQ3xSVUJCRVIpKT98U0hJTllfKD86Tk9ORXxMT1d8TUVESVVNfEhJR0gpfEJVTVBfKD86Tk9ORXxCUklHSFR8REFSS3xXT09EfEJBUkt8QlJJQ0tTfENIRUNLRVJ8Q09OQ1JFVEV8VElMRXxTVE9ORXxESVNLU3xHUkFWRUx8QkxPQlN8U0lESU5HfExBUkdFVElMRXxTVFVDQ098U1VDVElPTnxXRUFWRSl8VEVYR0VOXyg/OkRFRkFVTFR8UExBTkFSKXxTQ1JJUFRFRF9TSVRfT05MWXxTQ1VMUFRfKD86VFlQRV8oPzpTUEhFUkV8VE9SVVN8UExBTkV8Q1lMSU5ERVJ8TUFTSyl8RkxBR18oPzpNSVJST1J8SU5WRVJUKSl8UEhZU0lDUyg/Ol8oPzpTSEFQRV8oPzpDT05WRVh8Tk9ORXxQUklNfFRZUEUpKSk/fCg/OlBPU3xST1QpX0xPQ0FMfFNMSUNFfFRFWFR8RkxFWElCTEV8UE9JTlRfTElHSFR8VEVNUF9PTl9SRVp8UEhBTlRPTXxQT1NJVElPTnxTSVRfVEFSR0VUfFNJWkV8Uk9UQVRJT058VEVYVFVSRXxOQU1FfE9NRUdBfERFU0N8TElOS19UQVJHRVR8Q09MT1J8QlVNUF9TSElOWXxGVUxMQlJJR0hUfFRFWEdFTnxHTE9XfE1FRElBXyg/OkFMVF9JTUFHRV9FTkFCTEV8Q09OVFJPTFN8KD86Q1VSUkVOVHxIT01FKV9VUkx8QVVUT18oPzpMT09QfFBMQVl8U0NBTEV8Wk9PTSl8RklSU1RfQ0xJQ0tfSU5URVJBQ1R8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFN8V0hJVEVMSVNUKD86X0VOQUJMRSk/fFBFUk1TXyg/OklOVEVSQUNUfENPTlRST0wpfFBBUkFNX01BWHxDT05UUk9MU18oPzpTVEFOREFSRHxNSU5JKXxQRVJNXyg/Ok5PTkV8T1dORVJ8R1JPVVB8QU5ZT05FKXxNQVhfKD86VVJMX0xFTkdUSHxXSElURUxJU1RfKD86U0laRXxDT1VOVCl8KD86V0lEVEh8SEVJR0hUKV9QSVhFTFMpKSl8TUFTS18oPzpCQVNFfE9XTkVSfEdST1VQfEVWRVJZT05FfE5FWFQpfFBFUk1fKD86VFJBTlNGRVJ8TU9ESUZZfENPUFl8TU9WRXxBTEwpfFBBUkNFTF8oPzpNRURJQV9DT01NQU5EXyg/OlNUT1B8UEFVU0V8UExBWXxMT09QfFRFWFRVUkV8VVJMfFRJTUV8QUdFTlR8VU5MT0FEfEFVVE9fQUxJR058VFlQRXxTSVpFfERFU0N8TE9PUF9TRVQpfEZMQUdfKD86QUxMT1dfKD86RkxZfCg/OkdST1VQXyk/U0NSSVBUU3xMQU5ETUFSS3xURVJSQUZPUk18REFNQUdFfENSRUFURV8oPzpHUk9VUF8pP09CSkVDVFMpfFVTRV8oPzpBQ0NFU1NfKD86R1JPVVB8TElTVCl8QkFOX0xJU1R8TEFORF9QQVNTX0xJU1QpfExPQ0FMX1NPVU5EX09OTFl8UkVTVFJJQ1RfUFVTSE9CSkVDVHxBTExPV18oPzpHUk9VUHxBTEwpX09CSkVDVF9FTlRSWSl8Q09VTlRfKD86VE9UQUx8T1dORVJ8R1JPVVB8T1RIRVJ8U0VMRUNURUR8VEVNUCl8REVUQUlMU18oPzpOQU1FfERFU0N8T1dORVJ8R1JPVVB8QVJFQXxJRHxTRUVfQVZBVEFSUykpfExJU1RfU1RBVF8oPzpNQVh8TUlOfE1FQU58TUVESUFOfFNURF9ERVZ8U1VNKD86X1NRVUFSRVMpP3xOVU1fQ09VTlR8R0VPTUVUUklDX01FQU58UkFOR0UpfFBBWV8oPzpISURFfERFRkFVTFQpfFJFR0lPTl9GTEFHXyg/OkFMTE9XX0RBTUFHRXxGSVhFRF9TVU58QkxPQ0tfVEVSUkFGT1JNfFNBTkRCT1h8RElTQUJMRV8oPzpDT0xMSVNJT05TfFBIWVNJQ1MpfEJMT0NLX0ZMWXxBTExPV19ESVJFQ1RfVEVMRVBPUlR8UkVTVFJJQ1RfUFVTSE9CSkVDVCl8SFRUUF8oPzpNRVRIT0R8TUlNRVRZUEV8Qk9EWV8oPzpNQVhMRU5HVEh8VFJVTkNBVEVEKXxDVVNUT01fSEVBREVSfFBSQUdNQV9OT19DQUNIRXxWRVJCT1NFX1RIUk9UVExFfFZFUklGWV9DRVJUKXxTSVRfKD86SU5WQUxJRF8oPzpBR0VOVHxMSU5LX09CSkVDVCl8Tk8oPzpUX0VYUEVSSUVOQ0V8Xyg/OkFDQ0VTU3xFWFBFUklFTkNFX1BFUk1JU1NJT058U0lUX1RBUkdFVCkpKXxTVFJJTkdfKD86VFJJTSg/Ol8oPzpIRUFEfFRBSUwpKT8pfENMSUNLX0FDVElPTl8oPzpOT05FfFRPVUNIfFNJVHxCVVl8UEFZfE9QRU4oPzpfTUVESUEpP3xQTEFZfFpPT00pfFRPVUNIX0lOVkFMSURfRkFDRXxQUk9GSUxFXyg/Ok5PTkV8U0NSSVBUX01FTU9SWSl8UkNfKD86REFUQV9GTEFHU3xERVRFQ1RfUEhBTlRPTXxHRVRfKD86TElOS19OVU18Tk9STUFMfFJPT1RfS0VZKXxNQVhfSElUU3xSRUpFQ1RfKD86VFlQRVN8QUdFTlRTfCg/Ok5PTik/UEhZU0lDQUx8TEFORCkpfFJDRVJSXyg/OkNBU1RfVElNRV9FWENFRURFRHxTSU1fUEVSRl9MT1d8VU5LTk9XTil8RVNUQVRFX0FDQ0VTU18oPzpBTExPV0VEXyg/OkFHRU5UfEdST1VQKV8oPzpBRER8UkVNT1ZFKXxCQU5ORURfQUdFTlRfKD86QUREfFJFTU9WRSkpfERFTlNJVFl8RlJJQ1RJT058UkVTVElUVVRJT058R1JBVklUWV9NVUxUSVBMSUVSfEtGTV8oPzpDT01NQU5EfENNRF8oPzpQTEFZfFNUT1B8UEFVU0UpfE1PREV8Rk9SV0FSRHxMT09QfFBJTkdfUE9OR3xSRVZFUlNFfERBVEF8Uk9UQVRJT058VFJBTlNMQVRJT04pfEVSUl8oPzpHRU5FUklDfFBBUkNFTF9QRVJNSVNTSU9OU3xNQUxGT1JNRURfUEFSQU1TfFJVTlRJTUVfUEVSTUlTU0lPTlN8VEhST1RUTEVEKXxDSEFSQUNURVJfKD86Q01EXyg/Oig/OlNNT09USF8pP1NUT1B8SlVNUCl8REVTSVJFRF8oPzpUVVJOXyk/U1BFRUR8UkFESVVTfFNUQVlfV0lUSElOX1BBUkNFTHxMRU5HVEh8T1JJRU5UQVRJT058QUNDT1VOVF9GT1JfU0tJUFBFRF9GUkFNRVN8QVZPSURBTkNFX01PREV8VFlQRSg/Ol8oPzpbQUJDRF18Tk9ORSkpP3xNQVhfKD86REVDRUx8VFVSTl9SQURJVVN8KD86QUNDRUx8U1BFRUQpKSl8UFVSU1VJVF8oPzpPRkZTRVR8RlVaWl9GQUNUT1J8R09BTF9UT0xFUkFOQ0V8SU5URVJDRVBUKXxSRVFVSVJFX0xJTkVfT0ZfU0lHSFR8Rk9SQ0VfRElSRUNUX1BBVEh8VkVSVElDQUx8SE9SSVpPTlRBTHxBVk9JRF8oPzpDSEFSQUNURVJTfERZTkFNSUNfT0JTVEFDTEVTfE5PTkUpfFBVXyg/OkVWQURFXyg/OkhJRERFTnxTUE9UVEVEKXxGQUlMVVJFXyg/OkRZTkFNSUNfUEFUSEZJTkRJTkdfRElTQUJMRUR8SU5WQUxJRF8oPzpHT0FMfFNUQVJUKXxOT18oPzpOQVZNRVNIfFZBTElEX0RFU1RJTkFUSU9OKXxPVEhFUnxUQVJHRVRfR09ORXwoPzpQQVJDRUxfKT9VTlJFQUNIQUJMRSl8KD86R09BTHxTTE9XRE9XTl9ESVNUQU5DRSlfUkVBQ0hFRCl8VFJBVkVSU0FMX1RZUEUoPzpfKD86RkFTVHxOT05FfFNMT1cpKT98Q09OVEVOVF9UWVBFXyg/OkFUT018Rk9STXxIVE1MfEpTT058TExTRHxSU1N8VEVYVHxYSFRNTHxYTUwpfEdDTlBfKD86UkFESVVTfFNUQVRJQyl8KD86UEFUUk9MfFdBTkRFUilfUEFVU0VfQVRfV0FZUE9JTlRTfE9QVF8oPzpBVkFUQVJ8Q0hBUkFDVEVSfEVYQ0xVU0lPTl9WT0xVTUV8TEVHQUNZX0xJTktTRVR8TUFURVJJQUxfVk9MVU1FfE9USEVSfFNUQVRJQ19PQlNUQUNMRXxXQUxLQUJMRSl8U0lNX1NUQVRfUENUX0NIQVJTX1NURVBQRUQpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpGQUxTRXxUUlVFKVxcXFxiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86WkVST19ST1RBVElPTilcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OkVPRnxKU09OXyg/OkFSUkFZfERFTEVURXxGQUxTRXxJTlZBTElEfE5VTEx8TlVNQkVSfE9CSkVDVHxTVFJJTkd8VFJVRSl8TlVMTF9LRVl8VEVYVFVSRV8oPzpCTEFOS3xERUZBVUxUfE1FRElBfFBMWVdPT0R8VFJBTlNQQVJFTlQpfFVSTF9SRVFVRVNUXyg/OkdSQU5URUR8REVOSUVEKSlcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlpFUk9fVkVDVE9SfFRPVUNIX0lOVkFMSURfKD86VEVYQ09PUkR8VkVDVE9SKSlcXFxcYidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTFNMX0ZVTkNUSU9OUyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKD86bGwoPzpBZ2VudEluRXhwZXJpZW5jZXwoPzpDcmVhdGV8RGF0YVNpemV8RGVsZXRlfEtleUNvdW50fEtleXN8UmVhZHxVcGRhdGUpS2V5VmFsdWV8R2V0RXhwZXJpZW5jZSg/OkRldGFpbHN8RXJyb3JNZXNzYWdlKXxSZXR1cm5PYmplY3RzQnkoPzpJRHxPd25lcil8SnNvbig/OjJMaXN0fFtHU11ldFZhbHVlfFZhbHVlVHlwZSl8U2lufENvc3xUYW58QXRhbjJ8U3FydHxQb3d8QWJzfEZhYnN8RnJhbmR8Rmxvb3J8Q2VpbHxSb3VuZHxWZWMoPzpNYWd8Tm9ybXxEaXN0KXxSb3QoPzpCZXR3ZWVufDIoPzpFdWxlcnxGd2R8TGVmdHxVcCkpfCg/OkV1bGVyfEF4ZXMpMlJvdHxXaGlzcGVyfCg/OlJlZ2lvbnxPd25lcik/U2F5fFNob3V0fExpc3Rlbig/OkNvbnRyb2x8UmVtb3ZlKT98U2Vuc29yKD86UmVwZWF0fFJlbW92ZSk/fERldGVjdGVkKD86TmFtZXxLZXl8T3duZXJ8VHlwZXxQb3N8VmVsfEdyYWJ8Um90fEdyb3VwfExpbmtOdW1iZXIpfERpZXxHcm91bmR8V2luZHwoPzpbR1NdZXQpKD86QW5pbWF0aW9uT3ZlcnJpZGV8TWVtb3J5TGltaXR8UHJpbU1lZGlhUGFyYW1zfFBhcmNlbE11c2ljVVJMfE9iamVjdCg/OkRlc2N8TmFtZSl8UGh5c2ljc01hdGVyaWFsfFN0YXR1c3xTY2FsZXxDb2xvcnxBbHBoYXxUZXh0dXJlfFBvc3xSb3R8Rm9yY2V8VG9ycXVlKXxSZXNldEFuaW1hdGlvbk92ZXJyaWRlfCg/OlNjYWxlfE9mZnNldHxSb3RhdGUpVGV4dHVyZXwoPzpSb3QpP1RhcmdldCg/OlJlbW92ZSk/fCg/OlN0b3ApP01vdmVUb1RhcmdldHxBcHBseSg/OlJvdGF0aW9uYWwpP0ltcHVsc2V8U2V0KD86S2V5ZnJhbWVkTW90aW9ufENvbnRlbnRUeXBlfFJlZ2lvblBvc3woPzpBbmd1bGFyKT9WZWxvY2l0eXxCdW95YW5jeXxIb3ZlckhlaWdodHxGb3JjZUFuZFRvcnF1ZXxUaW1lckV2ZW50fFNjcmlwdFN0YXRlfERhbWFnZXxUZXh0dXJlQW5pbXxTb3VuZCg/OlF1ZXVlaW5nfFJhZGl1cyl8VmVoaWNsZSg/OlR5cGV8KD86RmxvYXR8VmVjdG9yfFJvdGF0aW9uKVBhcmFtKXwoPzpUb3VjaHxTaXQpP1RleHR8Q2FtZXJhKD86RXllfEF0KU9mZnNldHxQcmltaXRpdmVQYXJhbXN8Q2xpY2tBY3Rpb258TGluayg/OkFscGhhfENvbG9yfFByaW1pdGl2ZVBhcmFtcyg/OkZhc3QpP3xUZXh0dXJlKD86QW5pbSk/fENhbWVyYXxNZWRpYSl8UmVtb3RlU2NyaXB0QWNjZXNzUGlufFBheVByaWNlfExvY2FsUm90KXxTY2FsZUJ5RmFjdG9yfEdldCg/Oig/Ok1heHxNaW4pU2NhbGVGYWN0b3J8Q2xvc2VzdE5hdlBvaW50fFN0YXRpY1BhdGh8U2ltU3RhdHN8RW52fFByaW1pdGl2ZVBhcmFtc3xMaW5rKD86UHJpbWl0aXZlUGFyYW1zfE51bWJlcig/Ok9mU2lkZXMpP3xLZXl8TmFtZXxNZWRpYSl8SFRUUEhlYWRlcnxGcmVlVVJMc3xPYmplY3QoPzpEZXRhaWxzfFBlcm1NYXNrfFByaW1Db3VudCl8UGFyY2VsKD86TWF4UHJpbXN8RGV0YWlsc3xQcmltKD86Q291bnR8T3duZXJzKSl8QXR0YWNoZWQoPzpMaXN0KT98KD86U1BNYXh8RnJlZXxVc2VkKU1lbW9yeXxSZWdpb24oPzpOYW1lfFRpbWVEaWxhdGlvbnxGUFN8Q29ybmVyfEFnZW50Q291bnQpfFJvb3QoPzpQb3NpdGlvbnxSb3RhdGlvbil8VW5peFRpbWV8KD86UGFyY2VsfFJlZ2lvbilGbGFnc3woPzpXYWxsfEdNVCljbG9ja3xTaW11bGF0b3JIb3N0bmFtZXxCb3VuZGluZ0JveHxHZW9tZXRyaWNDZW50ZXJ8Q3JlYXRvcnxOdW1iZXJPZig/OlByaW1zfE5vdGVjYXJkTGluZXN8U2lkZXMpfEFuaW1hdGlvbig/Okxpc3QpP3woPzpDYW1lcmF8TG9jYWwpKD86UG9zfFJvdCl8VmVsfEFjY2VsfE9tZWdhfFRpbWUoPzpzdGFtcHxPZkRheSl8KD86T2JqZWN0fENlbnRlck9mKT9NYXNzfE1hc3NNS1N8RW5lcmd5fE93bmVyfCg/Ok93bmVyKT9LZXl8U3VuRGlyZWN0aW9ufFRleHR1cmUoPzpPZmZzZXR8U2NhbGV8Um90KXxJbnZlbnRvcnkoPzpOdW1iZXJ8TmFtZXxLZXl8VHlwZXxDcmVhdG9yfFBlcm1NYXNrKXxQZXJtaXNzaW9ucyg/OktleSk/fFN0YXJ0UGFyYW1ldGVyfExpc3QoPzpMZW5ndGh8RW50cnlUeXBlKXxEYXRlfEFnZW50KD86U2l6ZXxJbmZvfExhbmd1YWdlfExpc3QpfExhbmRPd25lckF0fE5vdGVjYXJkTGluZXxTY3JpcHQoPzpOYW1lfFN0YXRlKSl8KD86R2V0fFJlc2V0fEdldEFuZFJlc2V0KVRpbWV8UGxheVNvdW5kKD86U2xhdmUpP3xMb29wU291bmQoPzpNYXN0ZXJ8U2xhdmUpP3woPzpUcmlnZ2VyfFN0b3B8UHJlbG9hZClTb3VuZHwoPzooPzpHZXR8RGVsZXRlKVN1YnxJbnNlcnQpU3RyaW5nfFRvKD86VXBwZXJ8TG93ZXIpfEdpdmUoPzpJbnZlbnRvcnlMaXN0fE1vbmV5KXxSZXpPYmplY3R8KD86U3RvcCk/TG9va0F0fFNsZWVwfENvbGxpc2lvbkZpbHRlcnwoPzpUYWtlfFJlbGVhc2UpQ29udHJvbHN8RGV0YWNoRnJvbUF2YXRhcnxBdHRhY2hUb0F2YXRhcig/OlRlbXApP3xJbnN0YW50TWVzc2FnZXwoPzpHZXROZXh0KT9FbWFpbHxTdG9wSG92ZXJ8TWluRXZlbnREZWxheXxSb3RMb29rQXR8U3RyaW5nKD86TGVuZ3RofFRyaW0pfCg/OlN0YXJ0fFN0b3ApQW5pbWF0aW9ufFRhcmdldE9tZWdhfFJlcXVlc3QoPzpFeHBlcmllbmNlKT9QZXJtaXNzaW9uc3woPzpDcmVhdGV8QnJlYWspTGlua3xCcmVha0FsbExpbmtzfCg/OkdpdmV8UmVtb3ZlKUludmVudG9yeXxXYXRlcnxQYXNzVG91Y2hlc3xSZXF1ZXN0KD86QWdlbnR8SW52ZW50b3J5KURhdGF8VGVsZXBvcnRBZ2VudCg/OkhvbWV8R2xvYmFsQ29vcmRzKT98TW9kaWZ5TGFuZHxDb2xsaXNpb25Tb3VuZHxSZXNldFNjcmlwdHxNZXNzYWdlTGlua2VkfFB1c2hPYmplY3R8UGFzc0NvbGxpc2lvbnN8QXhpc0FuZ2xlMlJvdHxSb3QyKD86QXhpc3xBbmdsZSl8QSg/OmNvc3xzaW4pfEFuZ2xlQmV0d2VlbnxBbGxvd0ludmVudG9yeURyb3B8U3ViU3RyaW5nSW5kZXh8TGlzdDIoPzpDU1Z8SW50ZWdlcnxKc29ufEZsb2F0fFN0cmluZ3xLZXl8VmVjdG9yfFJvdHxMaXN0KD86U3RyaWRlZCk/KXxEZWxldGVTdWJMaXN0fExpc3QoPzpTdGF0aXN0aWNzfFNvcnR8UmFuZG9taXplfCg/Okluc2VydHxGaW5kfFJlcGxhY2UpTGlzdCl8RWRnZU9mV29ybGR8QWRqdXN0U291bmRWb2x1bWV8S2V5Mk5hbWV8VHJpZ2dlclNvdW5kTGltaXRlZHxFamVjdEZyb21MYW5kfCg/OkNTVnxQYXJzZVN0cmluZykyTGlzdHxPdmVyTXlMYW5kfFNhbWVHcm91cHxVblNpdHxHcm91bmQoPzpTbG9wZXxOb3JtYWx8Q29udG91cil8R3JvdW5kUmVwZWx8KD86U2V0fFJlbW92ZSlWZWhpY2xlRmxhZ3N8U2l0T25MaW5rfCg/OkF2YXRhck9uKT8oPzpMaW5rKT9TaXRUYXJnZXR8U2NyaXB0KD86RGFuZ2VyfFByb2ZpbGVyKXxEaWFsb2d8Vm9sdW1lRGV0ZWN0fFJlc2V0T3RoZXJTY3JpcHR8UmVtb3RlTG9hZFNjcmlwdFBpbnwoPzpPcGVufENsb3NlKVJlbW90ZURhdGFDaGFubmVsfFNlbmRSZW1vdGVEYXRhfFJlbW90ZURhdGFSZXBseXwoPzpJbnRlZ2VyfFN0cmluZylUb0Jhc2U2NHxYb3JCYXNlNjR8TG9nKD86MTApP3xCYXNlNjRUbyg/OlN0cmluZ3xJbnRlZ2VyKXxQYXJzZVN0cmluZ0tlZXBOdWxsc3xSZXpBdFJvb3R8UmVxdWVzdFNpbXVsYXRvckRhdGF8Rm9yY2VNb3VzZWxvb2t8KD86TG9hZHxSZWxlYXNlfCg/OkV8VW5lKXNjYXBlKVVSTHxQYXJjZWxNZWRpYSg/OkNvbW1hbmRMaXN0fFF1ZXJ5KXxNb2RQb3d8TWFwRGVzdGluYXRpb258KD86UmVtb3ZlRnJvbXxBZGRUb3xSZXNldClMYW5kKD86UGFzc3xCYW4pTGlzdHwoPzpTZXR8Q2xlYXIpQ2FtZXJhUGFyYW1zfEhUVFAoPzpSZXF1ZXN0fFJlc3BvbnNlKXxUZXh0Qm94fERldGVjdGVkVG91Y2goPzpVVnxGYWNlfFBvc3woPzpOfEJpbilvcm1hbHxTVCl8KD86TUQ1fFNIQTF8RHVtcExpc3QyKVN0cmluZ3xSZXF1ZXN0KD86U2VjdXJlKT9VUkx8Q2xlYXIoPzpQcmltfExpbmspTWVkaWF8KD86TGluayk/UGFydGljbGVTeXN0ZW18KD86R2V0fFJlcXVlc3QpKD86VXNlcm5hbWV8RGlzcGxheU5hbWUpfFJlZ2lvblNheVRvfENhc3RSYXl8R2VuZXJhdGVLZXl8VHJhbnNmZXJMaW5kZW5Eb2xsYXJzfE1hbmFnZUVzdGF0ZUFjY2Vzc3woPzpDcmVhdGV8RGVsZXRlKUNoYXJhY3RlcnxFeGVjQ2hhcmFjdGVyQ21kfEV2YWRlfEZsZWVGcm9tfE5hdmlnYXRlVG98UGF0cm9sUG9pbnRzfFB1cnN1ZXxVcGRhdGVDaGFyYWN0ZXJ8V2FuZGVyV2l0aGluKSlcXFxcYidcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWxsZWdhbDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgTFNMX1NUUklOR1MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMU0xfTlVNQkVSUyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86c3RhdGV8ZGVmYXVsdClcXFxcYidcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OnN0YXRlXyg/OmVudHJ5fGV4aXQpfHRvdWNoKD86Xyg/OnN0YXJ0fGVuZCkpP3woPzpsYW5kXyk/Y29sbGlzaW9uKD86Xyg/OnN0YXJ0fGVuZCkpP3x0aW1lcnxsaXN0ZW58KD86bm9fKT9zZW5zb3J8Y29udHJvbHwoPzpub3RfKT9hdF8oPzpyb3RfKT90YXJnZXR8bW9uZXl8ZW1haWx8ZXhwZXJpZW5jZV9wZXJtaXNzaW9ucyg/Ol9kZW5pZWQpP3xydW5fdGltZV9wZXJtaXNzaW9uc3xjaGFuZ2VkfGF0dGFjaHxkYXRhc2VydmVyfG1vdmluZ18oPzpzdGFydHxlbmQpfGxpbmtfbWVzc2FnZXwoPzpvbnxvYmplY3QpX3JlenxyZW1vdGVfZGF0YXxodHRwX3JlKD86c3BvbnNlfHF1ZXN0KXxwYXRoX3VwZGF0ZXx0cmFuc2FjdGlvbl9yZXN1bHQpXFxcXGInXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTFNMX0ZVTkNUSU9OUyxcbiAgICAgICAgICAgIExTTF9DT05TVEFOVFMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OmludGVnZXJ8ZmxvYXR8c3RyaW5nfGtleXx2ZWN0b3J8cXVhdGVybmlvbnxyb3RhdGlvbnxsaXN0KVxcXFxiJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBPUEVOSU5HX0xPTkdfQlJBQ0tFVCA9ICdcXFxcWz0qXFxcXFsnO1xuICB2YXIgQ0xPU0lOR19MT05HX0JSQUNLRVQgPSAnXFxcXF09KlxcXFxdJztcbiAgdmFyIExPTkdfQlJBQ0tFVFMgPSB7XG4gICAgYmVnaW46IE9QRU5JTkdfTE9OR19CUkFDS0VULCBlbmQ6IENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICB9O1xuICB2YXIgQ09NTUVOVFMgPSBbXG4gICAgaGxqcy5DT01NRU5UKCctLSg/IScgKyBPUEVOSU5HX0xPTkdfQlJBQ0tFVCArICcpJywgJyQnKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnLS0nICsgT1BFTklOR19MT05HX0JSQUNLRVQsXG4gICAgICBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIClcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6IFwidHJ1ZSBmYWxzZSBuaWxcIixcbiAgICAgIGtleXdvcmQ6IFwiYW5kIGJyZWFrIGRvIGVsc2UgZWxzZWlmIGVuZCBmb3IgZ290byBpZiBpbiBsb2NhbCBub3Qgb3IgcmVwZWF0IHJldHVybiB0aGVuIHVudGlsIHdoaWxlXCIsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy9NZXRhdGFncyBhbmQgZ2xvYmFsczpcbiAgICAgICAgJ19HIF9FTlYgX1ZFUlNJT04gX19pbmRleCBfX25ld2luZGV4IF9fbW9kZSBfX2NhbGwgX19tZXRhdGFibGUgX190b3N0cmluZyBfX2xlbiAnICtcbiAgICAgICAgJ19fZ2MgX19hZGQgX19zdWIgX19tdWwgX19kaXYgX19tb2QgX19wb3cgX19jb25jYXQgX191bm0gX19lcSBfX2x0IF9fbGUgYXNzZXJ0ICcgK1xuICAgICAgICAvL1N0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRpZXM6XG4gICAgICAgICdjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgbG9hZGZpbGUgbG9hZHN0cmluZycgK1xuICAgICAgICAnbW9kdWxlIG5leHQgcGFpcnMgcGNhbGwgcHJpbnQgcmF3ZXF1YWwgcmF3Z2V0IHJhd3NldCByZXF1aXJlIHNlbGVjdCBzZXRmZW52JyArXG4gICAgICAgICdzZXRtZXRhdGFibGUgdG9udW1iZXIgdG9zdHJpbmcgdHlwZSB1bnBhY2sgeHBjYWxsIGFyZyBzZWxmJyArXG4gICAgICAgIC8vTGlicmFyeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIChvbmUgbGluZSBwZXIgbGlicmFyeSk6XG4gICAgICAgICdjb3JvdXRpbmUgcmVzdW1lIHlpZWxkIHN0YXR1cyB3cmFwIGNyZWF0ZSBydW5uaW5nIGRlYnVnIGdldHVwdmFsdWUgJyArXG4gICAgICAgICdkZWJ1ZyBzZXRob29rIGdldG1ldGF0YWJsZSBnZXRob29rIHNldG1ldGF0YWJsZSBzZXRsb2NhbCB0cmFjZWJhY2sgc2V0ZmVudiBnZXRpbmZvIHNldHVwdmFsdWUgZ2V0bG9jYWwgZ2V0cmVnaXN0cnkgZ2V0ZmVudiAnICtcbiAgICAgICAgJ2lvIGxpbmVzIHdyaXRlIGNsb3NlIGZsdXNoIG9wZW4gb3V0cHV0IHR5cGUgcmVhZCBzdGRlcnIgc3RkaW4gaW5wdXQgc3Rkb3V0IHBvcGVuIHRtcGZpbGUgJyArXG4gICAgICAgICdtYXRoIGxvZyBtYXggYWNvcyBodWdlIGxkZXhwIHBpIGNvcyB0YW5oIHBvdyBkZWcgdGFuIGNvc2ggc2luaCByYW5kb20gcmFuZG9tc2VlZCBmcmV4cCBjZWlsIGZsb29yIHJhZCBhYnMgc3FydCBtb2RmIGFzaW4gbWluIG1vZCBmbW9kIGxvZzEwIGF0YW4yIGV4cCBzaW4gYXRhbiAnICtcbiAgICAgICAgJ29zIGV4aXQgc2V0bG9jYWxlIGRhdGUgZ2V0ZW52IGRpZmZ0aW1lIHJlbW92ZSB0aW1lIGNsb2NrIHRtcG5hbWUgcmVuYW1lIGV4ZWN1dGUgcGFja2FnZSBwcmVsb2FkIGxvYWRsaWIgbG9hZGVkIGxvYWRlcnMgY3BhdGggY29uZmlnIHBhdGggc2VlYWxsICcgK1xuICAgICAgICAnc3RyaW5nIHN1YiB1cHBlciBsZW4gZ2ZpbmQgcmVwIGZpbmQgbWF0Y2ggY2hhciBkdW1wIGdtYXRjaCByZXZlcnNlIGJ5dGUgZm9ybWF0IGdzdWIgbG93ZXIgJyArXG4gICAgICAgICd0YWJsZSBzZXRuIGluc2VydCBnZXRuIGZvcmVhY2hpIG1heG4gZm9yZWFjaCBjb25jYXQgc29ydCByZW1vdmUnXG4gICAgfSxcbiAgICBjb250YWluczogQ09NTUVOVFMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnKFtfYS16QS1aXVxcXFx3KlxcXFwuKSooW19hLXpBLVpdXFxcXHcqOik/W19hLXpBLVpdXFxcXHcqJ30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogQ09NTUVOVFNcbiAgICAgICAgICB9XG4gICAgICAgIF0uY29uY2F0KENPTU1FTlRTKVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiBPUEVOSU5HX0xPTkdfQlJBQ0tFVCwgZW5kOiBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgICAgY29udGFpbnM6IFtMT05HX0JSQUNLRVRTXSxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8qIFZhcmlhYmxlczogc2ltcGxlIChlZyAkKHZhcikpIGFuZCBzcGVjaWFsIChlZyAkQCkgKi9cbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXCgnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbQCU8P1xcXlxcK1xcKl0vXG4gICAgICB9LFxuICAgIF1cbiAgfTtcbiAgLyogUXVvdGVkIHN0cmluZyB3aXRoIHZhcmlhYmxlcyBpbnNpZGUgKi9cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUklBQkxFLFxuICAgIF1cbiAgfTtcbiAgLyogRnVuY3Rpb246ICQoZnVuYyBhcmcsLi4uKSAqL1xuICB2YXIgRlVOQyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCRcXChbXFx3LV0rXFxzLywgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgJyArXG4gICAgICAgICd3b3JkIHdvcmRsaXN0IGZpcnN0d29yZCBsYXN0d29yZCBkaXIgbm90ZGlyIHN1ZmZpeCBiYXNlbmFtZSAnICtcbiAgICAgICAgJ2FkZHN1ZmZpeCBhZGRwcmVmaXggam9pbiB3aWxkY2FyZCByZWFscGF0aCBhYnNwYXRoIGVycm9yIHdhcm5pbmcgJyArXG4gICAgICAgICdzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICBdXG4gIH07XG4gIC8qIFZhcmlhYmxlIGFzc2lnbm1lbnQgKi9cbiAgdmFyIFZBUl9BU1NJRyA9IHtcbiAgICBiZWdpbjogJ14nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKls6Kz9dPz0nLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSwgZW5kOiAnWzorP10/PScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICB9XG4gICAgXVxuICB9O1xuICAvKiBNZXRhIHRhcmdldHMgKC5QSE9OWSkgKi9cbiAgdmFyIE1FVEEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC9eXFwuUEhPTlk6LywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJy5QSE9OWSd9LFxuICAgIGxleGVtZXM6IC9bXFwuXFx3XSsvXG4gIH07XG4gIC8qIFRhcmdldHMgKi9cbiAgdmFyIFRBUkdFVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICBiZWdpbjogL15bXlxcc10rOi8sIGVuZDogLyQvLFxuICAgIGNvbnRhaW5zOiBbVkFSSUFCTEUsXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbWsnLCAnbWFrJ10sXG4gICAga2V5d29yZHM6XG4gICAgICAnZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgJyArXG4gICAgICAnaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCcsXG4gICAgbGV4ZW1lczogL1tcXHctXSsvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBGVU5DLFxuICAgICAgVkFSX0FTU0lHLFxuICAgICAgTUVUQSxcbiAgICAgIFRBUkdFVCxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW1hJywgJ3dsJ10sXG4gICAgbGV4ZW1lczogJyhcXFxcJHxcXFxcYiknICsgaGxqcy5JREVOVF9SRSArICdcXFxcYicsXG4gICAgLy9cbiAgICAvLyBUaGUgbGlzdCBvZiBcImtleXdvcmRzXCIgKFN5c3RlbWAgc3ltYm9scykgd2FzIGRldGVybWluZWQgYnkgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5nIFdvbGZyYW0gTGFuZ3VhZ2UgY29kZSBpbiBNYXRoZW1hdGljYSAxMi4wOlxuICAgIC8vXG4gICAgLy8gU3RyaW5nUmlmZmxlW1xuICAgIC8vICAgXCInXCIgPD4gU3RyaW5nUmlmZmxlWyMsIFwiIFwiXSA8PiBcIidcIiAmIC9AXG4gICAgLy8gICAgIFZhbHVlc1tHcm91cEJ5W1xuICAgIC8vICAgICAgIFNlbGVjdFtOYW1lc1tcIlN5c3RlbWAqXCJdLFxuICAgIC8vICAgICAgIFN0cmluZ1N0YXJ0c1FbIywgQ2hhcmFjdGVyUmFuZ2VbXCJBXCIsIFwiWlwiXSB8IFwiJFwiXSAmXSxcbiAgICAvLyAgICAgICBGaXJzdFtDaGFyYWN0ZXJzWyNdXSAmXV0sIFwiICtcXG5cIl1cbiAgICAvL1xuICAgIGtleXdvcmRzOiAnQUFTVHJpYW5nbGUgQWJlbGlhbkdyb3VwIEFib3J0IEFib3J0S2VybmVscyBBYm9ydFByb3RlY3QgQWJvcnRTY2hlZHVsZWRUYXNrIEFib3ZlIEFicyBBYnNBcmcgQWJzQXJnUGxvdCBBYnNvbHV0ZSBBYnNvbHV0ZUNvcnJlbGF0aW9uIEFic29sdXRlQ29ycmVsYXRpb25GdW5jdGlvbiBBYnNvbHV0ZUN1cnJlbnRWYWx1ZSBBYnNvbHV0ZURhc2hpbmcgQWJzb2x1dGVGaWxlTmFtZSBBYnNvbHV0ZU9wdGlvbnMgQWJzb2x1dGVQb2ludFNpemUgQWJzb2x1dGVUaGlja25lc3MgQWJzb2x1dGVUaW1lIEFic29sdXRlVGltaW5nIEFjY2VwdGFuY2VUaHJlc2hvbGQgQWNjb3VudGluZ0Zvcm0gQWNjdW11bGF0ZSBBY2N1cmFjeSBBY2N1cmFjeUdvYWwgQWN0aW9uRGVsYXkgQWN0aW9uTWVudSBBY3Rpb25NZW51Qm94IEFjdGlvbk1lbnVCb3hPcHRpb25zIEFjdGl2YXRlIEFjdGl2ZSBBY3RpdmVDbGFzc2lmaWNhdGlvbiBBY3RpdmVDbGFzc2lmaWNhdGlvbk9iamVjdCBBY3RpdmVJdGVtIEFjdGl2ZVByZWRpY3Rpb24gQWN0aXZlUHJlZGljdGlvbk9iamVjdCBBY3RpdmVTdHlsZSBBY3ljbGljR3JhcGhRIEFkZE9uSGVscFBhdGggQWRkU2lkZXMgQWRkVG8gQWRkVG9TZWFyY2hJbmRleCBBZGRVc2VycyBBZGphY2VuY3lHcmFwaCBBZGphY2VuY3lMaXN0IEFkamFjZW5jeU1hdHJpeCBBZGp1c3RtZW50Qm94IEFkanVzdG1lbnRCb3hPcHRpb25zIEFkanVzdFRpbWVTZXJpZXNGb3JlY2FzdCBBZG1pbmlzdHJhdGl2ZURpdmlzaW9uRGF0YSBBZmZpbmVIYWxmU3BhY2UgQWZmaW5lU3BhY2UgQWZmaW5lU3RhdGVTcGFjZU1vZGVsIEFmZmluZVRyYW5zZm9ybSBBZnRlciBBZ2dyZWdhdGVkRW50aXR5Q2xhc3MgQWdncmVnYXRpb25MYXllciBBaXJjcmFmdERhdGEgQWlycG9ydERhdGEgQWlyUHJlc3N1cmVEYXRhIEFpclRlbXBlcmF0dXJlRGF0YSBBaXJ5QWkgQWlyeUFpUHJpbWUgQWlyeUFpWmVybyBBaXJ5QmkgQWlyeUJpUHJpbWUgQWlyeUJpWmVybyBBbGdlYnJhaWNJbnRlZ2VyUSBBbGdlYnJhaWNOdW1iZXIgQWxnZWJyYWljTnVtYmVyRGVub21pbmF0b3IgQWxnZWJyYWljTnVtYmVyTm9ybSBBbGdlYnJhaWNOdW1iZXJQb2x5bm9taWFsIEFsZ2VicmFpY051bWJlclRyYWNlIEFsZ2VicmFpY1J1bGVzIEFsZ2VicmFpY1J1bGVzRGF0YSBBbGdlYnJhaWNzIEFsZ2VicmFpY1VuaXRRIEFsaWdubWVudCBBbGlnbm1lbnRNYXJrZXIgQWxpZ25tZW50UG9pbnQgQWxsIEFsbG93QWR1bHRDb250ZW50IEFsbG93ZWRDbG91ZEV4dHJhUGFyYW1ldGVycyBBbGxvd2VkQ2xvdWRQYXJhbWV0ZXJFeHRlbnNpb25zIEFsbG93ZWREaW1lbnNpb25zIEFsbG93ZWRGcmVxdWVuY3lSYW5nZSBBbGxvd2VkSGVhZHMgQWxsb3dHcm91cENsb3NlIEFsbG93SW5jb21wbGV0ZSBBbGxvd0lubGluZUNlbGxzIEFsbG93S2VybmVsSW5pdGlhbGl6YXRpb24gQWxsb3dMb29zZUdyYW1tYXIgQWxsb3dSZXZlcnNlR3JvdXBDbG9zZSBBbGxvd1NjcmlwdExldmVsQ2hhbmdlIEFsbFRydWUgQWxwaGFiZXQgQWxwaGFiZXRpY09yZGVyIEFscGhhYmV0aWNTb3J0IEFscGhhQ2hhbm5lbCBBbHRlcm5hdGVJbWFnZSBBbHRlcm5hdGluZ0ZhY3RvcmlhbCBBbHRlcm5hdGluZ0dyb3VwIEFsdGVybmF0aXZlSHlwb3RoZXNpcyBBbHRlcm5hdGl2ZXMgQWx0aXR1ZGVNZXRob2QgQW1iaWVudExpZ2h0IEFtYmlndWl0eUZ1bmN0aW9uIEFtYmlndWl0eUxpc3QgQW5hbHl0aWMgQW5hdG9teURhdGEgQW5hdG9teUZvcm0gQW5hdG9teVBsb3QzRCBBbmF0b215U2tpblN0eWxlIEFuYXRvbXlTdHlsaW5nIEFuY2hvcmVkU2VhcmNoIEFuZCBBbmRlcnNvbkRhcmxpbmdUZXN0IEFuZ2VySiBBbmdsZUJpc2VjdG9yIEFuZ2xlQnJhY2tldCBBbmdsZVBhdGggQW5nbGVQYXRoM0QgQW5nbGVWZWN0b3IgQW5ndWxhckdhdWdlIEFuaW1hdGUgQW5pbWF0aW9uQ3ljbGVPZmZzZXQgQW5pbWF0aW9uQ3ljbGVSZXBldGl0aW9ucyBBbmltYXRpb25EaXJlY3Rpb24gQW5pbWF0aW9uRGlzcGxheVRpbWUgQW5pbWF0aW9uUmF0ZSBBbmltYXRpb25SZXBldGl0aW9ucyBBbmltYXRpb25SdW5uaW5nIEFuaW1hdGlvblJ1blRpbWUgQW5pbWF0aW9uVGltZUluZGV4IEFuaW1hdG9yIEFuaW1hdG9yQm94IEFuaW1hdG9yQm94T3B0aW9ucyBBbmltYXRvckVsZW1lbnRzIEFubm90YXRlIEFubm90YXRpb24gQW5ub3RhdGlvbkRlbGV0ZSBBbm5vdGF0aW9uTmFtZXMgQW5ub3RhdGlvblJ1bGVzIEFubm90YXRpb25WYWx1ZSBBbm51aXR5IEFubnVpdHlEdWUgQW5udWx1cyBBbm9tYWx5RGV0ZWN0aW9uIEFub21hbHlEZXRlY3RvckZ1bmN0aW9uIEFub255bW91cyBBbnRpYWxpYXNpbmcgQW50aWhlcm1pdGlhbk1hdHJpeFEgQW50aXN5bW1ldHJpYyBBbnRpc3ltbWV0cmljTWF0cml4USBBbnRvbnltcyBBbnlPcmRlciBBbnlTdWJzZXQgQW55VHJ1ZSBBcGFydCBBcGFydFNxdWFyZUZyZWUgQVBJRnVuY3Rpb24gQXBwZWFyYW5jZSBBcHBlYXJhbmNlRWxlbWVudHMgQXBwZWFyYW5jZVJ1bGVzIEFwcGVsbEYxIEFwcGVuZCBBcHBlbmRDaGVjayBBcHBlbmRMYXllciBBcHBlbmRUbyBBcHBsaWNhdGlvbklkZW50aWZpY2F0aW9uS2V5IEFwcGx5IEFwcGx5U2lkZXMgQXJjQ29zIEFyY0Nvc2ggQXJjQ290IEFyY0NvdGggQXJjQ3NjIEFyY0NzY2ggQXJjQ3VydmF0dXJlIEFSQ0hQcm9jZXNzIEFyY0xlbmd0aCBBcmNTZWMgQXJjU2VjaCBBcmNTaW4gQXJjU2luRGlzdHJpYnV0aW9uIEFyY1NpbmggQXJjVGFuIEFyY1RhbmggQXJlYSBBcmcgQXJnTWF4IEFyZ01pbiBBcmd1bWVudENvdW50USBBUklNQVByb2Nlc3MgQXJpdGhtZXRpY0dlb21ldHJpY01lYW4gQVJNQVByb2Nlc3MgQXJvdW5kIEFyb3VuZFJlcGxhY2UgQVJQcm9jZXNzIEFycmF5IEFycmF5Q29tcG9uZW50cyBBcnJheURlcHRoIEFycmF5RmlsdGVyIEFycmF5RmxhdHRlbiBBcnJheU1lc2ggQXJyYXlQYWQgQXJyYXlQbG90IEFycmF5USBBcnJheVJlc2FtcGxlIEFycmF5UmVzaGFwZSBBcnJheVJ1bGVzIEFycmF5cyBBcnJvdyBBcnJvdzNEQm94IEFycm93Qm94IEFycm93aGVhZHMgQVNBVHJpYW5nbGUgQXNrIEFza0FwcGVuZCBBc2tDb25maXJtIEFza0Rpc3BsYXkgQXNrZWRRIEFza2VkVmFsdWUgQXNrRnVuY3Rpb24gQXNrU3RhdGUgQXNrVGVtcGxhdGVEaXNwbGF5IEFzcGVjdFJhdGlvIEFzcGVjdFJhdGlvRml4ZWQgQXNzZXJ0IEFzc29jaWF0ZVRvIEFzc29jaWF0aW9uIEFzc29jaWF0aW9uRm9ybWF0IEFzc29jaWF0aW9uTWFwIEFzc29jaWF0aW9uUSBBc3NvY2lhdGlvblRocmVhZCBBc3N1bWVEZXRlcm1pbmlzdGljIEFzc3VtaW5nIEFzc3VtcHRpb25zIEFzdHJvbm9taWNhbERhdGEgQXN5bXB0b3RpY0RTb2x2ZVZhbHVlIEFzeW1wdG90aWNFcXVhbCBBc3ltcHRvdGljRXF1aXZhbGVudCBBc3ltcHRvdGljR3JlYXRlciBBc3ltcHRvdGljR3JlYXRlckVxdWFsIEFzeW1wdG90aWNJbnRlZ3JhdGUgQXN5bXB0b3RpY0xlc3MgQXN5bXB0b3RpY0xlc3NFcXVhbCBBc3ltcHRvdGljT3V0cHV0VHJhY2tlciBBc3ltcHRvdGljUlNvbHZlVmFsdWUgQXN5bXB0b3RpY1NvbHZlIEFzeW1wdG90aWNTdW0gQXN5bmNocm9ub3VzIEFzeW5jaHJvbm91c1Rhc2tPYmplY3QgQXN5bmNocm9ub3VzVGFza3MgQXRvbSBBdG9tQ29vcmRpbmF0ZXMgQXRvbUNvdW50IEF0b21EaWFncmFtQ29vcmRpbmF0ZXMgQXRvbUxpc3QgQXRvbVEgQXR0ZW50aW9uTGF5ZXIgQXR0cmlidXRlcyBBdWRpbyBBdWRpb0FtcGxpZnkgQXVkaW9Bbm5vdGF0ZSBBdWRpb0Fubm90YXRpb25Mb29rdXAgQXVkaW9CbG9ja01hcCBBdWRpb0NhcHR1cmUgQXVkaW9DaGFubmVsQXNzaWdubWVudCBBdWRpb0NoYW5uZWxDb21iaW5lIEF1ZGlvQ2hhbm5lbE1peCBBdWRpb0NoYW5uZWxzIEF1ZGlvQ2hhbm5lbFNlcGFyYXRlIEF1ZGlvRGF0YSBBdWRpb0RlbGF5IEF1ZGlvRGVsZXRlIEF1ZGlvRGV2aWNlIEF1ZGlvRGlzdGFuY2UgQXVkaW9GYWRlIEF1ZGlvRnJlcXVlbmN5U2hpZnQgQXVkaW9HZW5lcmF0b3IgQXVkaW9JZGVudGlmeSBBdWRpb0lucHV0RGV2aWNlIEF1ZGlvSW5zZXJ0IEF1ZGlvSW50ZXJ2YWxzIEF1ZGlvSm9pbiBBdWRpb0xhYmVsIEF1ZGlvTGVuZ3RoIEF1ZGlvTG9jYWxNZWFzdXJlbWVudHMgQXVkaW9Mb29waW5nIEF1ZGlvTG91ZG5lc3MgQXVkaW9NZWFzdXJlbWVudHMgQXVkaW9Ob3JtYWxpemUgQXVkaW9PdXRwdXREZXZpY2UgQXVkaW9PdmVybGF5IEF1ZGlvUGFkIEF1ZGlvUGFuIEF1ZGlvUGFydGl0aW9uIEF1ZGlvUGF1c2UgQXVkaW9QaXRjaFNoaWZ0IEF1ZGlvUGxheSBBdWRpb1Bsb3QgQXVkaW9RIEF1ZGlvUmVjb3JkIEF1ZGlvUmVwbGFjZSBBdWRpb1Jlc2FtcGxlIEF1ZGlvUmV2ZXJiIEF1ZGlvU2FtcGxlUmF0ZSBBdWRpb1NwZWN0cmFsTWFwIEF1ZGlvU3BlY3RyYWxUcmFuc2Zvcm1hdGlvbiBBdWRpb1NwbGl0IEF1ZGlvU3RvcCBBdWRpb1N0cmVhbSBBdWRpb1N0cmVhbXMgQXVkaW9UaW1lU3RyZXRjaCBBdWRpb1RyaW0gQXVkaW9UeXBlIEF1Z21lbnRlZFBvbHloZWRyb24gQXVnbWVudGVkU3ltbWV0cmljUG9seW5vbWlhbCBBdXRoZW50aWNhdGUgQXV0aGVudGljYXRpb24gQXV0aGVudGljYXRpb25EaWFsb2cgQXV0b0FjdGlvbiBBdXRvY29tcGxldGUgQXV0b2NvbXBsZXRpb25GdW5jdGlvbiBBdXRvQ29weSBBdXRvY29ycmVsYXRpb25UZXN0IEF1dG9EZWxldGUgQXV0b0V2YWx1YXRlRXZlbnRzIEF1dG9HZW5lcmF0ZWRQYWNrYWdlIEF1dG9JbmRlbnQgQXV0b0luZGVudFNwYWNpbmdzIEF1dG9JdGFsaWNXb3JkcyBBdXRvbG9hZFBhdGggQXV0b01hdGNoIEF1dG9tYXRpYyBBdXRvbWF0aWNJbWFnZVNpemUgQXV0b011bHRpcGxpY2F0aW9uU3ltYm9sIEF1dG9OdW1iZXJGb3JtYXR0aW5nIEF1dG9PcGVuTm90ZWJvb2tzIEF1dG9PcGVuUGFsZXR0ZXMgQXV0b1F1b3RlQ2hhcmFjdGVycyBBdXRvUmVmcmVzaGVkIEF1dG9SZW1vdmUgQXV0b3J1blNlcXVlbmNpbmcgQXV0b1NjYWxpbmcgQXV0b1Njcm9sbCBBdXRvU3BhY2luZyBBdXRvU3R5bGVPcHRpb25zIEF1dG9TdHlsZVdvcmRzIEF1dG9TdWJtaXR0aW5nIEF4ZXMgQXhlc0VkZ2UgQXhlc0xhYmVsIEF4ZXNPcmlnaW4gQXhlc1N0eWxlIEF4aW9tYXRpY1RoZW9yeSBBeGlzJyArXG4gICAgICAnQmFieU1vbnN0ZXJHcm91cEIgQmFjayBCYWNrZ3JvdW5kIEJhY2tncm91bmRBcHBlYXJhbmNlIEJhY2tncm91bmRUYXNrc1NldHRpbmdzIEJhY2tzbGFzaCBCYWNrc3Vic3RpdHV0aW9uIEJhY2t3YXJkIEJhbGwgQmFuZCBCYW5kcGFzc0ZpbHRlciBCYW5kc3RvcEZpbHRlciBCYXJhYmFzaUFsYmVydEdyYXBoRGlzdHJpYnV0aW9uIEJhckNoYXJ0IEJhckNoYXJ0M0QgQmFyY29kZUltYWdlIEJhcmNvZGVSZWNvZ25pemUgQmFyaW5naGF1c0hlbnplVGVzdCBCYXJMZWdlbmQgQmFybG93UHJvc2NoYW5JbXBvcnRhbmNlIEJhcm5lc0cgQmFyT3JpZ2luIEJhclNwYWNpbmcgQmFydGxldHRIYW5uV2luZG93IEJhcnRsZXR0V2luZG93IEJhc2VEZWNvZGUgQmFzZUVuY29kZSBCYXNlRm9ybSBCYXNlbGluZSBCYXNlbGluZVBvc2l0aW9uIEJhc2VTdHlsZSBCYXNpY1JlY3VycmVudExheWVyIEJhdGNoTm9ybWFsaXphdGlvbkxheWVyIEJhdGNoU2l6ZSBCYXRlc0Rpc3RyaWJ1dGlvbiBCYXR0bGVMZW1hcmllV2F2ZWxldCBCYXllc2lhbk1heGltaXphdGlvbiBCYXllc2lhbk1heGltaXphdGlvbk9iamVjdCBCYXllc2lhbk1pbmltaXphdGlvbiBCYXllc2lhbk1pbmltaXphdGlvbk9iamVjdCBCZWNhdXNlIEJlY2ttYW5uRGlzdHJpYnV0aW9uIEJlZXAgQmVmb3JlIEJlZ2luIEJlZ2luRGlhbG9nUGFja2V0IEJlZ2luRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBCZWdpblBhY2thZ2UgQmVsbEIgQmVsbFkgQmVsb3cgQmVuZm9yZERpc3RyaWJ1dGlvbiBCZW5pbmlEaXN0cmlidXRpb24gQmVua3RhbmRlckdpYnJhdERpc3RyaWJ1dGlvbiBCZW5rdGFuZGVyV2VpYnVsbERpc3RyaWJ1dGlvbiBCZXJub3VsbGlCIEJlcm5vdWxsaURpc3RyaWJ1dGlvbiBCZXJub3VsbGlHcmFwaERpc3RyaWJ1dGlvbiBCZXJub3VsbGlQcm9jZXNzIEJlcm5zdGVpbkJhc2lzIEJlc3NlbEZpbHRlck1vZGVsIEJlc3NlbEkgQmVzc2VsSiBCZXNzZWxKWmVybyBCZXNzZWxLIEJlc3NlbFkgQmVzc2VsWVplcm8gQmV0YSBCZXRhQmlub21pYWxEaXN0cmlidXRpb24gQmV0YURpc3RyaWJ1dGlvbiBCZXRhTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvbiBCZXRhUHJpbWVEaXN0cmlidXRpb24gQmV0YVJlZ3VsYXJpemVkIEJldHdlZW4gQmV0d2Vlbm5lc3NDZW50cmFsaXR5IEJldmVsZWRQb2x5aGVkcm9uIEJlemllckN1cnZlIEJlemllckN1cnZlM0RCb3ggQmV6aWVyQ3VydmUzREJveE9wdGlvbnMgQmV6aWVyQ3VydmVCb3ggQmV6aWVyQ3VydmVCb3hPcHRpb25zIEJlemllckZ1bmN0aW9uIEJpbGF0ZXJhbEZpbHRlciBCaW5hcml6ZSBCaW5hcnlEZXNlcmlhbGl6ZSBCaW5hcnlEaXN0YW5jZSBCaW5hcnlGb3JtYXQgQmluYXJ5SW1hZ2VRIEJpbmFyeVJlYWQgQmluYXJ5UmVhZExpc3QgQmluYXJ5U2VyaWFsaXplIEJpbmFyeVdyaXRlIEJpbkNvdW50cyBCaW5MaXN0cyBCaW5vbWlhbCBCaW5vbWlhbERpc3RyaWJ1dGlvbiBCaW5vbWlhbFByb2Nlc3MgQmlub3JtYWxEaXN0cmlidXRpb24gQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBCaXBhcnRpdGVHcmFwaFEgQmlxdWFkcmF0aWNGaWx0ZXJNb2RlbCBCaXJuYmF1bUltcG9ydGFuY2UgQmlybmJhdW1TYXVuZGVyc0Rpc3RyaWJ1dGlvbiBCaXRBbmQgQml0Q2xlYXIgQml0R2V0IEJpdExlbmd0aCBCaXROb3QgQml0T3IgQml0U2V0IEJpdFNoaWZ0TGVmdCBCaXRTaGlmdFJpZ2h0IEJpdFhvciBCaXdlaWdodExvY2F0aW9uIEJpd2VpZ2h0TWlkdmFyaWFuY2UgQmxhY2sgQmxhY2ttYW5IYXJyaXNXaW5kb3cgQmxhY2ttYW5OdXR0YWxsV2luZG93IEJsYWNrbWFuV2luZG93IEJsYW5rIEJsYW5rRm9ybSBCbGFua051bGxTZXF1ZW5jZSBCbGFua1NlcXVlbmNlIEJsZW5kIEJsb2NrIEJsb2NrY2hhaW5BZGRyZXNzRGF0YSBCbG9ja2NoYWluQmFzZSBCbG9ja2NoYWluQmxvY2tEYXRhIEJsb2NrY2hhaW5Db250cmFjdFZhbHVlIEJsb2NrY2hhaW5EYXRhIEJsb2NrY2hhaW5HZXQgQmxvY2tjaGFpbktleUVuY29kZSBCbG9ja2NoYWluUHV0IEJsb2NrY2hhaW5Ub2tlbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uIEJsb2NrY2hhaW5UcmFuc2FjdGlvbkRhdGEgQmxvY2tjaGFpblRyYW5zYWN0aW9uU2lnbiBCbG9ja2NoYWluVHJhbnNhY3Rpb25TdWJtaXQgQmxvY2tNYXAgQmxvY2tSYW5kb20gQmxvbXF2aXN0QmV0YSBCbG9tcXZpc3RCZXRhVGVzdCBCbHVlIEJsdXIgQm9kZVBsb3QgQm9obWFuV2luZG93IEJvbGQgQm9uZCBCb25kQ291bnQgQm9uZExpc3QgQm9uZFEgQm9va21hcmtzIEJvb2xlIEJvb2xlYW5Db25zZWN1dGl2ZUZ1bmN0aW9uIEJvb2xlYW5Db252ZXJ0IEJvb2xlYW5Db3VudGluZ0Z1bmN0aW9uIEJvb2xlYW5GdW5jdGlvbiBCb29sZWFuR3JhcGggQm9vbGVhbk1heHRlcm1zIEJvb2xlYW5NaW5pbWl6ZSBCb29sZWFuTWludGVybXMgQm9vbGVhblEgQm9vbGVhblJlZ2lvbiBCb29sZWFucyBCb29sZWFuU3RyaW5ncyBCb29sZWFuVGFibGUgQm9vbGVhblZhcmlhYmxlcyBCb3JkZXJEaW1lbnNpb25zIEJvcmVsVGFubmVyRGlzdHJpYnV0aW9uIEJvdHRvbSBCb3R0b21IYXRUcmFuc2Zvcm0gQm91bmRhcnlEaXNjcmV0aXplR3JhcGhpY3MgQm91bmRhcnlEaXNjcmV0aXplUmVnaW9uIEJvdW5kYXJ5TWVzaCBCb3VuZGFyeU1lc2hSZWdpb24gQm91bmRhcnlNZXNoUmVnaW9uUSBCb3VuZGFyeVN0eWxlIEJvdW5kZWRSZWdpb25RIEJvdW5kaW5nUmVnaW9uIEJvdW5kcyBCb3ggQm94QmFzZWxpbmVTaGlmdCBCb3hEYXRhIEJveERpbWVuc2lvbnMgQm94ZWQgQm94ZXMgQm94Rm9ybSBCb3hGb3JtRm9ybWF0VHlwZXMgQm94RnJhbWUgQm94SUQgQm94TWFyZ2lucyBCb3hNYXRyaXggQm94T2JqZWN0IEJveFJhdGlvcyBCb3hSb3RhdGlvbiBCb3hSb3RhdGlvblBvaW50IEJveFN0eWxlIEJveFdoaXNrZXJDaGFydCBCcmEgQnJhY2tldGluZ0JhciBCcmFLZXQgQnJheUN1cnRpc0Rpc3RhbmNlIEJyZWFkdGhGaXJzdFNjYW4gQnJlYWsgQnJpZGdlRGF0YSBCcmlnaHRuZXNzRXF1YWxpemUgQnJvYWRjYXN0U3RhdGlvbkRhdGEgQnJvd24gQnJvd25Gb3JzeXRoZVRlc3QgQnJvd25pYW5CcmlkZ2VQcm9jZXNzIEJyb3dzZXJDYXRlZ29yeSBCU3BsaW5lQmFzaXMgQlNwbGluZUN1cnZlIEJTcGxpbmVDdXJ2ZTNEQm94IEJTcGxpbmVDdXJ2ZTNEQm94T3B0aW9ucyBCU3BsaW5lQ3VydmVCb3ggQlNwbGluZUN1cnZlQm94T3B0aW9ucyBCU3BsaW5lRnVuY3Rpb24gQlNwbGluZVN1cmZhY2UgQlNwbGluZVN1cmZhY2UzREJveCBCU3BsaW5lU3VyZmFjZTNEQm94T3B0aW9ucyBCdWJibGVDaGFydCBCdWJibGVDaGFydDNEIEJ1YmJsZVNjYWxlIEJ1YmJsZVNpemVzIEJ1aWxkaW5nRGF0YSBCdWxsZXRHYXVnZSBCdXNpbmVzc0RheVEgQnV0dGVyZmx5R3JhcGggQnV0dGVyd29ydGhGaWx0ZXJNb2RlbCBCdXR0b24gQnV0dG9uQmFyIEJ1dHRvbkJveCBCdXR0b25Cb3hPcHRpb25zIEJ1dHRvbkNlbGwgQnV0dG9uQ29udGVudHMgQnV0dG9uRGF0YSBCdXR0b25FdmFsdWF0b3IgQnV0dG9uRXhwYW5kYWJsZSBCdXR0b25GcmFtZSBCdXR0b25GdW5jdGlvbiBCdXR0b25NYXJnaW5zIEJ1dHRvbk1pbkhlaWdodCBCdXR0b25Ob3RlIEJ1dHRvbk5vdGVib29rIEJ1dHRvblNvdXJjZSBCdXR0b25TdHlsZSBCdXR0b25TdHlsZU1lbnVMaXN0aW5nIEJ5dGUgQnl0ZUFycmF5IEJ5dGVBcnJheUZvcm1hdCBCeXRlQXJyYXlRIEJ5dGVBcnJheVRvU3RyaW5nIEJ5dGVDb3VudCBCeXRlT3JkZXJpbmcnICtcbiAgICAgICdDIENhY2hlZFZhbHVlIENhY2hlR3JhcGhpY3MgQ2FjaGVQZXJzaXN0ZW5jZSBDYWxlbmRhckNvbnZlcnQgQ2FsZW5kYXJEYXRhIENhbGVuZGFyVHlwZSBDYWxsb3V0IENhbGxvdXRNYXJrZXIgQ2FsbG91dFN0eWxlIENhbGxQYWNrZXQgQ2FuYmVycmFEaXN0YW5jZSBDYW5jZWwgQ2FuY2VsQnV0dG9uIENhbmRsZXN0aWNrQ2hhcnQgQ2Fub25pY2FsR3JhcGggQ2Fub25pY2FsaXplUG9seWdvbiBDYW5vbmljYWxpemVQb2x5aGVkcm9uIENhbm9uaWNhbE5hbWUgQ2Fub25pY2FsV2FycGluZ0NvcnJlc3BvbmRlbmNlIENhbm9uaWNhbFdhcnBpbmdEaXN0YW5jZSBDYW50b3JNZXNoIENhbnRvclN0YWlyY2FzZSBDYXAgQ2FwRm9ybSBDYXBpdGFsRGlmZmVyZW50aWFsRCBDYXBpdGFsaXplIENhcHN1bGVTaGFwZSBDYXB0dXJlUnVubmluZyBDYXJkaW5hbEJTcGxpbmVCYXNpcyBDYXJsZW1hbkxpbmVhcml6ZSBDYXJtaWNoYWVsTGFtYmRhIENhc2VPcmRlcmluZyBDYXNlcyBDYXNlU2Vuc2l0aXZlIENhc2hmbG93IENhc29yYXRpYW4gQ2F0YWxhbiBDYXRhbGFuTnVtYmVyIENhdGNoIENhdGVuYXRlIENhdGVuYXRlTGF5ZXIgQ2F1Y2h5RGlzdHJpYnV0aW9uIENhdWNoeVdpbmRvdyBDYXlsZXlHcmFwaCBDREYgQ0RGRGVwbG95IENERkluZm9ybWF0aW9uIENERldhdmVsZXQgQ2VpbGluZyBDZWxlc3RpYWxTeXN0ZW0gQ2VsbCBDZWxsQXV0b092ZXJ3cml0ZSBDZWxsQmFzZWxpbmUgQ2VsbEJvdW5kaW5nQm94IENlbGxCcmFja2V0T3B0aW9ucyBDZWxsQ2hhbmdlVGltZXMgQ2VsbENvbnRlbnRzIENlbGxDb250ZXh0IENlbGxEaW5nYmF0IENlbGxEeW5hbWljRXhwcmVzc2lvbiBDZWxsRWRpdER1cGxpY2F0ZSBDZWxsRWxlbWVudHNCb3VuZGluZ0JveCBDZWxsRWxlbWVudFNwYWNpbmdzIENlbGxFcGlsb2cgQ2VsbEV2YWx1YXRpb25EdXBsaWNhdGUgQ2VsbEV2YWx1YXRpb25GdW5jdGlvbiBDZWxsRXZhbHVhdGlvbkxhbmd1YWdlIENlbGxFdmVudEFjdGlvbnMgQ2VsbEZyYW1lIENlbGxGcmFtZUNvbG9yIENlbGxGcmFtZUxhYmVsTWFyZ2lucyBDZWxsRnJhbWVMYWJlbHMgQ2VsbEZyYW1lTWFyZ2lucyBDZWxsR3JvdXAgQ2VsbEdyb3VwRGF0YSBDZWxsR3JvdXBpbmcgQ2VsbEdyb3VwaW5nUnVsZXMgQ2VsbEhvcml6b250YWxTY3JvbGxpbmcgQ2VsbElEIENlbGxMYWJlbCBDZWxsTGFiZWxBdXRvRGVsZXRlIENlbGxMYWJlbE1hcmdpbnMgQ2VsbExhYmVsUG9zaXRpb25pbmcgQ2VsbExhYmVsU3R5bGUgQ2VsbExhYmVsVGVtcGxhdGUgQ2VsbE1hcmdpbnMgQ2VsbE9iamVjdCBDZWxsT3BlbiBDZWxsUHJpbnQgQ2VsbFByb2xvZyBDZWxscyBDZWxsU2l6ZSBDZWxsU3R5bGUgQ2VsbFRhZ3MgQ2VsbHVsYXJBdXRvbWF0b24gQ2Vuc29yZWREaXN0cmlidXRpb24gQ2Vuc29yaW5nIENlbnRlciBDZW50ZXJBcnJheSBDZW50ZXJEb3QgQ2VudHJhbEZlYXR1cmUgQ2VudHJhbE1vbWVudCBDZW50cmFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIENlcHN0cm9ncmFtIENlcHN0cm9ncmFtQXJyYXkgQ2Vwc3RydW1BcnJheSBDRm9ybSBDaGFtcGVybm93bmVOdW1iZXIgQ2hhbmdlT3B0aW9ucyBDaGFubmVsQmFzZSBDaGFubmVsQnJva2VyQWN0aW9uIENoYW5uZWxEYXRhYmluIENoYW5uZWxIaXN0b3J5TGVuZ3RoIENoYW5uZWxMaXN0ZW4gQ2hhbm5lbExpc3RlbmVyIENoYW5uZWxMaXN0ZW5lcnMgQ2hhbm5lbExpc3RlbmVyV2FpdCBDaGFubmVsT2JqZWN0IENoYW5uZWxQcmVTZW5kRnVuY3Rpb24gQ2hhbm5lbFJlY2VpdmVyRnVuY3Rpb24gQ2hhbm5lbFNlbmQgQ2hhbm5lbFN1YnNjcmliZXJzIENoYW5WZXNlQmluYXJpemUgQ2hhcmFjdGVyIENoYXJhY3RlckNvdW50cyBDaGFyYWN0ZXJFbmNvZGluZyBDaGFyYWN0ZXJFbmNvZGluZ3NQYXRoIENoYXJhY3RlcmlzdGljRnVuY3Rpb24gQ2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsIENoYXJhY3Rlck5hbWUgQ2hhcmFjdGVyUmFuZ2UgQ2hhcmFjdGVycyBDaGFydEJhc2VTdHlsZSBDaGFydEVsZW1lbnREYXRhIENoYXJ0RWxlbWVudERhdGFGdW5jdGlvbiBDaGFydEVsZW1lbnRGdW5jdGlvbiBDaGFydEVsZW1lbnRzIENoYXJ0TGFiZWxzIENoYXJ0TGF5b3V0IENoYXJ0TGVnZW5kcyBDaGFydFN0eWxlIENoZWJ5c2hldjFGaWx0ZXJNb2RlbCBDaGVieXNoZXYyRmlsdGVyTW9kZWwgQ2hlYnlzaGV2RGlzdGFuY2UgQ2hlYnlzaGV2VCBDaGVieXNoZXZVIENoZWNrIENoZWNrQWJvcnQgQ2hlY2tBbGwgQ2hlY2tib3ggQ2hlY2tib3hCYXIgQ2hlY2tib3hCb3ggQ2hlY2tib3hCb3hPcHRpb25zIENoZW1pY2FsRGF0YSBDaGVzc2JvYXJkRGlzdGFuY2UgQ2hpRGlzdHJpYnV0aW9uIENoaW5lc2VSZW1haW5kZXIgQ2hpU3F1YXJlRGlzdHJpYnV0aW9uIENob2ljZUJ1dHRvbnMgQ2hvaWNlRGlhbG9nIENob2xlc2t5RGVjb21wb3NpdGlvbiBDaG9wIENocm9tYXRpY2l0eVBsb3QgQ2hyb21hdGljaXR5UGxvdDNEIENocm9tYXRpY1BvbHlub21pYWwgQ2lyY2xlIENpcmNsZUJveCBDaXJjbGVEb3QgQ2lyY2xlTWludXMgQ2lyY2xlUGx1cyBDaXJjbGVQb2ludHMgQ2lyY2xlVGhyb3VnaCBDaXJjbGVUaW1lcyBDaXJjdWxhbnRHcmFwaCBDaXJjdWxhck9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJRdWF0ZXJuaW9uTWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bGFyUmVhbE1hdHJpeERpc3RyaWJ1dGlvbiBDaXJjdWxhclN5bXBsZWN0aWNNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJVbml0YXJ5TWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bXNwaGVyZSBDaXR5RGF0YSBDbGFzc2lmaWVyRnVuY3Rpb24gQ2xhc3NpZmllckluZm9ybWF0aW9uIENsYXNzaWZpZXJNZWFzdXJlbWVudHMgQ2xhc3NpZmllck1lYXN1cmVtZW50c09iamVjdCBDbGFzc2lmeSBDbGFzc1ByaW9ycyBDbGVhciBDbGVhckFsbCBDbGVhckF0dHJpYnV0ZXMgQ2xlYXJDb29raWVzIENsZWFyUGVybWlzc2lvbnMgQ2xlYXJTeXN0ZW1DYWNoZSBDbGVic2NoR29yZGFuIENsaWNrUGFuZSBDbGlwIENsaXBib2FyZE5vdGVib29rIENsaXBGaWxsIENsaXBwaW5nU3R5bGUgQ2xpcFBsYW5lcyBDbGlwUGxhbmVzU3R5bGUgQ2xpcFJhbmdlIENsb2NrIENsb2NrR2F1Z2UgQ2xvY2t3aXNlQ29udG91ckludGVncmFsIENsb3NlIENsb3NlZCBDbG9zZUtlcm5lbHMgQ2xvc2VuZXNzQ2VudHJhbGl0eSBDbG9zaW5nIENsb3NpbmdBdXRvU2F2ZSBDbG9zaW5nRXZlbnQgQ2xvdWRBY2NvdW50RGF0YSBDbG91ZEJhc2UgQ2xvdWRDb25uZWN0IENsb3VkRGVwbG95IENsb3VkRGlyZWN0b3J5IENsb3VkRGlzY29ubmVjdCBDbG91ZEV2YWx1YXRlIENsb3VkRXhwb3J0IENsb3VkRXhwcmVzc2lvbiBDbG91ZEV4cHJlc3Npb25zIENsb3VkRnVuY3Rpb24gQ2xvdWRHZXQgQ2xvdWRJbXBvcnQgQ2xvdWRMb2dnaW5nRGF0YSBDbG91ZE9iamVjdCBDbG91ZE9iamVjdEluZm9ybWF0aW9uIENsb3VkT2JqZWN0SW5mb3JtYXRpb25EYXRhIENsb3VkT2JqZWN0TmFtZUZvcm1hdCBDbG91ZE9iamVjdHMgQ2xvdWRPYmplY3RVUkxUeXBlIENsb3VkUHVibGlzaCBDbG91ZFB1dCBDbG91ZFJlbmRlcmluZ01ldGhvZCBDbG91ZFNhdmUgQ2xvdWRTaGFyZSBDbG91ZFN1Ym1pdCBDbG91ZFN5bWJvbCBDbG91ZFVuc2hhcmUgQ2x1c3RlckNsYXNzaWZ5IENsdXN0ZXJEaXNzaW1pbGFyaXR5RnVuY3Rpb24gQ2x1c3RlcmluZ0NvbXBvbmVudHMgQ2x1c3RlcmluZ1RyZWUgQ01ZS0NvbG9yIENvYXJzZSBDb2RlQXNzaXN0T3B0aW9ucyBDb2VmZmljaWVudCBDb2VmZmljaWVudEFycmF5cyBDb2VmZmljaWVudERvbWFpbiBDb2VmZmljaWVudExpc3QgQ29lZmZpY2llbnRSdWxlcyBDb2lmbGV0V2F2ZWxldCBDb2xsZWN0IENvbG9uIENvbG9uRm9ybSBDb2xvckJhbGFuY2UgQ29sb3JDb21iaW5lIENvbG9yQ29udmVydCBDb2xvckNvdmVyYWdlIENvbG9yRGF0YSBDb2xvckRhdGFGdW5jdGlvbiBDb2xvckRldGVjdCBDb2xvckRpc3RhbmNlIENvbG9yRnVuY3Rpb24gQ29sb3JGdW5jdGlvblNjYWxpbmcgQ29sb3JpemUgQ29sb3JOZWdhdGUgQ29sb3JPdXRwdXQgQ29sb3JQcm9maWxlRGF0YSBDb2xvclEgQ29sb3JRdWFudGl6ZSBDb2xvclJlcGxhY2UgQ29sb3JSdWxlcyBDb2xvclNlbGVjdG9yU2V0dGluZ3MgQ29sb3JTZXBhcmF0ZSBDb2xvclNldHRlciBDb2xvclNldHRlckJveCBDb2xvclNldHRlckJveE9wdGlvbnMgQ29sb3JTbGlkZXIgQ29sb3JzTmVhciBDb2xvclNwYWNlIENvbG9yVG9uZU1hcHBpbmcgQ29sdW1uIENvbHVtbkFsaWdubWVudHMgQ29sdW1uQmFja2dyb3VuZHMgQ29sdW1uRm9ybSBDb2x1bW5MaW5lcyBDb2x1bW5zRXF1YWwgQ29sdW1uU3BhY2luZ3MgQ29sdW1uV2lkdGhzIENvbWJpbmVkRW50aXR5Q2xhc3MgQ29tYmluZXJGdW5jdGlvbiBDb21ldERhdGEgQ29tbW9uRGVmYXVsdEZvcm1hdFR5cGVzIENvbW1vbmVzdCBDb21tb25lc3RGaWx0ZXIgQ29tbW9uTmFtZSBDb21tb25Vbml0cyBDb21tdW5pdHlCb3VuZGFyeVN0eWxlIENvbW11bml0eUdyYXBoUGxvdCBDb21tdW5pdHlMYWJlbHMgQ29tbXVuaXR5UmVnaW9uU3R5bGUgQ29tcGFueURhdGEgQ29tcGF0aWJsZVVuaXRRIENvbXBpbGF0aW9uT3B0aW9ucyBDb21waWxhdGlvblRhcmdldCBDb21waWxlIENvbXBpbGVkIENvbXBpbGVkQ29kZUZ1bmN0aW9uIENvbXBpbGVkRnVuY3Rpb24gQ29tcGlsZXJPcHRpb25zIENvbXBsZW1lbnQgQ29tcGxldGVHcmFwaCBDb21wbGV0ZUdyYXBoUSBDb21wbGV0ZUthcnlUcmVlIENvbXBsZXRpb25zTGlzdFBhY2tldCBDb21wbGV4IENvbXBsZXhlcyBDb21wbGV4RXhwYW5kIENvbXBsZXhJbmZpbml0eSBDb21wbGV4aXR5RnVuY3Rpb24gQ29tcGxleExpc3RQbG90IENvbXBsZXhQbG90IENvbXBsZXhQbG90M0QgQ29tcG9uZW50TWVhc3VyZW1lbnRzIENvbXBvbmVudHdpc2VDb250ZXh0TWVudSBDb21wb3NlIENvbXBvc2VMaXN0IENvbXBvc2VTZXJpZXMgQ29tcG9zaXRlUSBDb21wb3NpdGlvbiBDb21wb3VuZEVsZW1lbnQgQ29tcG91bmRFeHByZXNzaW9uIENvbXBvdW5kUG9pc3NvbkRpc3RyaWJ1dGlvbiBDb21wb3VuZFBvaXNzb25Qcm9jZXNzIENvbXBvdW5kUmVuZXdhbFByb2Nlc3MgQ29tcHJlc3MgQ29tcHJlc3NlZERhdGEgQ29tcHV0ZVVuY2VydGFpbnR5IENvbmRpdGlvbiBDb25kaXRpb25hbEV4cHJlc3Npb24gQ29uZGl0aW9uZWQgQ29uZSBDb25lQm94IENvbmZpZGVuY2VMZXZlbCBDb25maWRlbmNlUmFuZ2UgQ29uZmlkZW5jZVRyYW5zZm9ybSBDb25maWd1cmF0aW9uUGF0aCBDb25mb3JtQXVkaW8gQ29uZm9ybUltYWdlcyBDb25ncnVlbnQgQ29uaWNIdWxsUmVnaW9uIENvbmljSHVsbFJlZ2lvbjNEQm94IENvbmljSHVsbFJlZ2lvbkJveCBDb25pY09wdGltaXphdGlvbiBDb25qdWdhdGUgQ29uanVnYXRlVHJhbnNwb3NlIENvbmp1bmN0aW9uIENvbm5lY3QgQ29ubmVjdGVkQ29tcG9uZW50cyBDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgQ29ubmVjdGVkR3JhcGhRIENvbm5lY3RlZE1lc2hDb21wb25lbnRzIENvbm5lY3RlZE1vbGVjdWxlQ29tcG9uZW50cyBDb25uZWN0ZWRNb2xlY3VsZVEgQ29ubmVjdGlvblNldHRpbmdzIENvbm5lY3RMaWJyYXJ5Q2FsbGJhY2tGdW5jdGlvbiBDb25uZWN0U3lzdGVtTW9kZWxDb21wb25lbnRzIENvbm5lc1dpbmRvdyBDb25vdmVyVGVzdCBDb25zb2xlTWVzc2FnZSBDb25zb2xlTWVzc2FnZVBhY2tldCBDb25zb2xlUHJpbnQgQ29uc3RhbnQgQ29uc3RhbnRBcnJheSBDb25zdGFudEFycmF5TGF5ZXIgQ29uc3RhbnRJbWFnZSBDb25zdGFudFBsdXNMYXllciBDb25zdGFudFJlZ2lvblEgQ29uc3RhbnRzIENvbnN0YW50VGltZXNMYXllciBDb25zdGVsbGF0aW9uRGF0YSBDb25zdHJhaW5lZE1heCBDb25zdHJhaW5lZE1pbiBDb25zdHJ1Y3QgQ29udGFpbmluZyBDb250YWluc0FsbCBDb250YWluc0FueSBDb250YWluc0V4YWN0bHkgQ29udGFpbnNOb25lIENvbnRhaW5zT25seSBDb250ZW50RmllbGRPcHRpb25zIENvbnRlbnRMb2NhdGlvbkZ1bmN0aW9uIENvbnRlbnRPYmplY3QgQ29udGVudFBhZGRpbmcgQ29udGVudHNCb3VuZGluZ0JveCBDb250ZW50U2VsZWN0YWJsZSBDb250ZW50U2l6ZSBDb250ZXh0IENvbnRleHRNZW51IENvbnRleHRzIENvbnRleHRUb0ZpbGVOYW1lIENvbnRpbnVhdGlvbiBDb250aW51ZSBDb250aW51ZWRGcmFjdGlvbiBDb250aW51ZWRGcmFjdGlvbksgQ29udGludW91c0FjdGlvbiBDb250aW51b3VzTWFya292UHJvY2VzcyBDb250aW51b3VzVGFzayBDb250aW51b3VzVGltZU1vZGVsUSBDb250aW51b3VzV2F2ZWxldERhdGEgQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gQ29udG91ckRldGVjdCBDb250b3VyR3JhcGhpY3MgQ29udG91ckludGVncmFsIENvbnRvdXJMYWJlbHMgQ29udG91ckxpbmVzIENvbnRvdXJQbG90IENvbnRvdXJQbG90M0QgQ29udG91cnMgQ29udG91clNoYWRpbmcgQ29udG91clNtb290aGluZyBDb250b3VyU3R5bGUgQ29udHJhaGFybW9uaWNNZWFuIENvbnRyYXN0aXZlTG9zc0xheWVyIENvbnRyb2wgQ29udHJvbEFjdGl2ZSBDb250cm9sQWxpZ25tZW50IENvbnRyb2xHcm91cENvbnRlbnRzQm94IENvbnRyb2xsYWJpbGl0eUdyYW1pYW4gQ29udHJvbGxhYmlsaXR5TWF0cml4IENvbnRyb2xsYWJsZURlY29tcG9zaXRpb24gQ29udHJvbGxhYmxlTW9kZWxRIENvbnRyb2xsZXJEdXJhdGlvbiBDb250cm9sbGVySW5mb3JtYXRpb24gQ29udHJvbGxlckluZm9ybWF0aW9uRGF0YSBDb250cm9sbGVyTGlua2luZyBDb250cm9sbGVyTWFuaXB1bGF0ZSBDb250cm9sbGVyTWV0aG9kIENvbnRyb2xsZXJQYXRoIENvbnRyb2xsZXJTdGF0ZSBDb250cm9sUGxhY2VtZW50IENvbnRyb2xzUmVuZGVyaW5nIENvbnRyb2xUeXBlIENvbnZlcmdlbnRzIENvbnZlcnNpb25PcHRpb25zIENvbnZlcnNpb25SdWxlcyBDb252ZXJ0VG9CaXRtYXBQYWNrZXQgQ29udmVydFRvUG9zdFNjcmlwdCBDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IENvbnZleEh1bGxNZXNoIENvbnZleFBvbHlnb25RIENvbnZleFBvbHloZWRyb25RIENvbnZvbHV0aW9uTGF5ZXIgQ29udm9sdmUgQ29ud2F5R3JvdXBDbzEgQ29ud2F5R3JvdXBDbzIgQ29ud2F5R3JvdXBDbzMgQ29va2llRnVuY3Rpb24gQ29va2llcyBDb29yZGluYXRlQm91bmRpbmdCb3ggQ29vcmRpbmF0ZUJvdW5kaW5nQm94QXJyYXkgQ29vcmRpbmF0ZUJvdW5kcyBDb29yZGluYXRlQm91bmRzQXJyYXkgQ29vcmRpbmF0ZUNoYXJ0RGF0YSBDb29yZGluYXRlc1Rvb2xPcHRpb25zIENvb3JkaW5hdGVUcmFuc2Zvcm0gQ29vcmRpbmF0ZVRyYW5zZm9ybURhdGEgQ29wcmltZVEgQ29wcm9kdWN0IENvcHVsYURpc3RyaWJ1dGlvbiBDb3B5YWJsZSBDb3B5RGF0YWJpbiBDb3B5RGlyZWN0b3J5IENvcHlGaWxlIENvcHlUYWcgQ29weVRvQ2xpcGJvYXJkIENvcm5lckZpbHRlciBDb3JuZXJOZWlnaGJvcnMgQ29ycmVsYXRpb24gQ29ycmVsYXRpb25EaXN0YW5jZSBDb3JyZWxhdGlvbkZ1bmN0aW9uIENvcnJlbGF0aW9uVGVzdCBDb3MgQ29zaCBDb3NoSW50ZWdyYWwgQ29zaW5lRGlzdGFuY2UgQ29zaW5lV2luZG93IENvc0ludGVncmFsIENvdCBDb3RoIENvdW50IENvdW50RGlzdGluY3QgQ291bnREaXN0aW5jdEJ5IENvdW50ZXJBc3NpZ25tZW50cyBDb3VudGVyQm94IENvdW50ZXJCb3hPcHRpb25zIENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgQ291bnRlckV2YWx1YXRvciBDb3VudGVyRnVuY3Rpb24gQ291bnRlckluY3JlbWVudHMgQ291bnRlclN0eWxlIENvdW50ZXJTdHlsZU1lbnVMaXN0aW5nIENvdW50Um9vdHMgQ291bnRyeURhdGEgQ291bnRzIENvdW50c0J5IENvdmFyaWFuY2UgQ292YXJpYW5jZUVzdGltYXRvckZ1bmN0aW9uIENvdmFyaWFuY2VGdW5jdGlvbiBDb3hpYW5EaXN0cmlidXRpb24gQ294SW5nZXJzb2xsUm9zc1Byb2Nlc3MgQ294TW9kZWwgQ294TW9kZWxGaXQgQ3JhbWVyVm9uTWlzZXNUZXN0IENyZWF0ZUFyY2hpdmUgQ3JlYXRlQ2VsbElEIENyZWF0ZUNoYW5uZWwgQ3JlYXRlQ2xvdWRFeHByZXNzaW9uIENyZWF0ZURhdGFiaW4gQ3JlYXRlRGF0YVN5c3RlbU1vZGVsIENyZWF0ZURpYWxvZyBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRG9jdW1lbnQgQ3JlYXRlRmlsZSBDcmVhdGVJbnRlcm1lZGlhdGVEaXJlY3RvcmllcyBDcmVhdGVNYW5hZ2VkTGlicmFyeUV4cHJlc3Npb24gQ3JlYXRlTm90ZWJvb2sgQ3JlYXRlUGFsZXR0ZSBDcmVhdGVQYWxldHRlUGFja2V0IENyZWF0ZVBlcm1pc3Npb25zR3JvdXAgQ3JlYXRlU2NoZWR1bGVkVGFzayBDcmVhdGVTZWFyY2hJbmRleCBDcmVhdGVTeXN0ZW1Nb2RlbCBDcmVhdGVUZW1wb3JhcnkgQ3JlYXRlVVVJRCBDcmVhdGVXaW5kb3cgQ3JpdGVyaW9uRnVuY3Rpb24gQ3JpdGljYWxpdHlGYWlsdXJlSW1wb3J0YW5jZSBDcml0aWNhbGl0eVN1Y2Nlc3NJbXBvcnRhbmNlIENyaXRpY2FsU2VjdGlvbiBDcm9zcyBDcm9zc0VudHJvcHlMb3NzTGF5ZXIgQ3Jvc3NpbmdDb3VudCBDcm9zc2luZ0RldGVjdCBDcm9zc2luZ1BvbHlnb24gQ3Jvc3NNYXRyaXggQ3NjIENzY2ggQ1RDTG9zc0xheWVyIEN1YmUgQ3ViZVJvb3QgQ3ViaWNzIEN1Ym9pZCBDdWJvaWRCb3ggQ3VtdWxhbnQgQ3VtdWxhbnRHZW5lcmF0aW5nRnVuY3Rpb24gQ3VwIEN1cENhcCBDdXJsIEN1cmx5RG91YmxlUXVvdGUgQ3VybHlRdW90ZSBDdXJyZW5jeUNvbnZlcnQgQ3VycmVudERhdGUgQ3VycmVudEltYWdlIEN1cnJlbnRseVNwZWFraW5nUGFja2V0IEN1cnJlbnROb3RlYm9va0ltYWdlIEN1cnJlbnRTY3JlZW5JbWFnZSBDdXJyZW50VmFsdWUgQ3VycnkgQ3VydmF0dXJlRmxvd0ZpbHRlciBDdXJ2ZUNsb3NlZCBDeWFuIEN5Y2xlR3JhcGggQ3ljbGVJbmRleFBvbHlub21pYWwgQ3ljbGVzIEN5Y2xpY0dyb3VwIEN5Y2xvdG9taWMgQ3lsaW5kZXIgQ3lsaW5kZXJCb3ggQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uJyArXG4gICAgICAnRCBEYWd1bURpc3RyaWJ1dGlvbiBEYW1EYXRhIERhbWVyYXVMZXZlbnNodGVpbkRpc3RhbmNlIERhbXBpbmdGYWN0b3IgRGFya2VyIERhc2hlZCBEYXNoaW5nIERhdGFiYXNlQ29ubmVjdCBEYXRhYmFzZURpc2Nvbm5lY3QgRGF0YWJhc2VSZWZlcmVuY2UgRGF0YWJpbiBEYXRhYmluQWRkIERhdGFiaW5SZW1vdmUgRGF0YWJpbnMgRGF0YWJpblVwbG9hZCBEYXRhQ29tcHJlc3Npb24gRGF0YURpc3RyaWJ1dGlvbiBEYXRhUmFuZ2UgRGF0YVJldmVyc2VkIERhdGFzZXQgRGF0ZSBEYXRlQm91bmRzIERhdGVkIERhdGVEZWxpbWl0ZXJzIERhdGVEaWZmZXJlbmNlIERhdGVkVW5pdCBEYXRlRm9ybWF0IERhdGVGdW5jdGlvbiBEYXRlSGlzdG9ncmFtIERhdGVMaXN0IERhdGVMaXN0TG9nUGxvdCBEYXRlTGlzdFBsb3QgRGF0ZUxpc3RTdGVwUGxvdCBEYXRlT2JqZWN0IERhdGVPYmplY3RRIERhdGVPdmVybGFwc1EgRGF0ZVBhdHRlcm4gRGF0ZVBsdXMgRGF0ZVJhbmdlIERhdGVSZWR1Y3Rpb24gRGF0ZVN0cmluZyBEYXRlVGlja3NGb3JtYXQgRGF0ZVZhbHVlIERhdGVXaXRoaW5RIERhdWJlY2hpZXNXYXZlbGV0IERhdmlzRGlzdHJpYnV0aW9uIERhd3NvbkYgRGF5Q291bnQgRGF5Q291bnRDb252ZW50aW9uIERheUhlbWlzcGhlcmUgRGF5bGlnaHRRIERheU1hdGNoUSBEYXlOYW1lIERheU5pZ2h0VGVybWluYXRvciBEYXlQbHVzIERheVJhbmdlIERheVJvdW5kIERlQnJ1aWpuR3JhcGggRGVCcnVpam5TZXF1ZW5jZSBEZWJ1ZyBEZWJ1Z1RhZyBEZWNhcGl0YWxpemUgRGVjaW1hbCBEZWNpbWFsRm9ybSBEZWNsYXJlS25vd25TeW1ib2xzIERlY2xhcmVQYWNrYWdlIERlY29tcG9zZSBEZWNvbnZvbHV0aW9uTGF5ZXIgRGVjcmVtZW50IERlY3J5cHQgRGVjcnlwdEZpbGUgRGVkZWtpbmRFdGEgRGVlcFNwYWNlUHJvYmVEYXRhIERlZmF1bHQgRGVmYXVsdEF4ZXNTdHlsZSBEZWZhdWx0QmFzZVN0eWxlIERlZmF1bHRCb3hTdHlsZSBEZWZhdWx0QnV0dG9uIERlZmF1bHRDb2xvciBEZWZhdWx0Q29udHJvbFBsYWNlbWVudCBEZWZhdWx0RHVwbGljYXRlQ2VsbFN0eWxlIERlZmF1bHREdXJhdGlvbiBEZWZhdWx0RWxlbWVudCBEZWZhdWx0RmFjZUdyaWRzU3R5bGUgRGVmYXVsdEZpZWxkSGludFN0eWxlIERlZmF1bHRGb250IERlZmF1bHRGb250UHJvcGVydGllcyBEZWZhdWx0Rm9ybWF0VHlwZSBEZWZhdWx0Rm9ybWF0VHlwZUZvclN0eWxlIERlZmF1bHRGcmFtZVN0eWxlIERlZmF1bHRGcmFtZVRpY2tzU3R5bGUgRGVmYXVsdEdyaWRMaW5lc1N0eWxlIERlZmF1bHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRJbnB1dEZvcm1hdFR5cGUgRGVmYXVsdExhYmVsU3R5bGUgRGVmYXVsdE1lbnVTdHlsZSBEZWZhdWx0TmF0dXJhbExhbmd1YWdlIERlZmF1bHROZXdDZWxsU3R5bGUgRGVmYXVsdE5ld0lubGluZUNlbGxTdHlsZSBEZWZhdWx0Tm90ZWJvb2sgRGVmYXVsdE9wdGlvbnMgRGVmYXVsdE91dHB1dEZvcm1hdFR5cGUgRGVmYXVsdFByaW50UHJlY2lzaW9uIERlZmF1bHRTdHlsZSBEZWZhdWx0U3R5bGVEZWZpbml0aW9ucyBEZWZhdWx0VGV4dEZvcm1hdFR5cGUgRGVmYXVsdFRleHRJbmxpbmVGb3JtYXRUeXBlIERlZmF1bHRUaWNrc1N0eWxlIERlZmF1bHRUb29sdGlwU3R5bGUgRGVmYXVsdFZhbHVlIERlZmF1bHRWYWx1ZXMgRGVmZXIgRGVmaW5lRXh0ZXJuYWwgRGVmaW5lSW5wdXRTdHJlYW1NZXRob2QgRGVmaW5lT3V0cHV0U3RyZWFtTWV0aG9kIERlZmluZVJlc291cmNlRnVuY3Rpb24gRGVmaW5pdGlvbiBEZWdyZWUgRGVncmVlQ2VudHJhbGl0eSBEZWdyZWVHcmFwaERpc3RyaWJ1dGlvbiBEZWdyZWVMZXhpY29ncmFwaGljIERlZ3JlZVJldmVyc2VMZXhpY29ncmFwaGljIERFaWdlbnN5c3RlbSBERWlnZW52YWx1ZXMgRGVpbml0aWFsaXphdGlvbiBEZWwgRGVsYXVuYXlNZXNoIERlbGF5ZWQgRGVsZXRhYmxlIERlbGV0ZSBEZWxldGVBbm9tYWxpZXMgRGVsZXRlQm9yZGVyQ29tcG9uZW50cyBEZWxldGVDYXNlcyBEZWxldGVDaGFubmVsIERlbGV0ZUNsb3VkRXhwcmVzc2lvbiBEZWxldGVDb250ZW50cyBEZWxldGVEaXJlY3RvcnkgRGVsZXRlRHVwbGljYXRlcyBEZWxldGVEdXBsaWNhdGVzQnkgRGVsZXRlRmlsZSBEZWxldGVNaXNzaW5nIERlbGV0ZU9iamVjdCBEZWxldGVQZXJtaXNzaW9uc0tleSBEZWxldGVTZWFyY2hJbmRleCBEZWxldGVTbWFsbENvbXBvbmVudHMgRGVsZXRlU3RvcHdvcmRzIERlbGV0ZVdpdGhDb250ZW50cyBEZWxldGlvbldhcm5pbmcgRGVsaW1pdGVkQXJyYXkgRGVsaW1pdGVkU2VxdWVuY2UgRGVsaW1pdGVyIERlbGltaXRlckZsYXNoVGltZSBEZWxpbWl0ZXJNYXRjaGluZyBEZWxpbWl0ZXJzIERlbGl2ZXJ5RnVuY3Rpb24gRGVuZHJvZ3JhbSBEZW5vbWluYXRvciBEZW5zaXR5R3JhcGhpY3MgRGVuc2l0eUhpc3RvZ3JhbSBEZW5zaXR5UGxvdCBEZW5zaXR5UGxvdDNEIERlcGVuZGVudFZhcmlhYmxlcyBEZXBsb3kgRGVwbG95ZWQgRGVwdGggRGVwdGhGaXJzdFNjYW4gRGVyaXZhdGl2ZSBEZXJpdmF0aXZlRmlsdGVyIERlcml2ZWRLZXkgRGVzY3JpcHRvclN0YXRlU3BhY2UgRGVzaWduTWF0cml4IERlc3Ryb3lBZnRlckV2YWx1YXRpb24gRGV0IERldmljZUNsb3NlIERldmljZUNvbmZpZ3VyZSBEZXZpY2VFeGVjdXRlIERldmljZUV4ZWN1dGVBc3luY2hyb25vdXMgRGV2aWNlT2JqZWN0IERldmljZU9wZW4gRGV2aWNlT3BlblEgRGV2aWNlUmVhZCBEZXZpY2VSZWFkQnVmZmVyIERldmljZVJlYWRMYXRlc3QgRGV2aWNlUmVhZExpc3QgRGV2aWNlUmVhZFRpbWVTZXJpZXMgRGV2aWNlcyBEZXZpY2VTdHJlYW1zIERldmljZVdyaXRlIERldmljZVdyaXRlQnVmZmVyIERHYXVzc2lhbldhdmVsZXQgRGlhY3JpdGljYWxQb3NpdGlvbmluZyBEaWFnb25hbCBEaWFnb25hbGl6YWJsZU1hdHJpeFEgRGlhZ29uYWxNYXRyaXggRGlhZ29uYWxNYXRyaXhRIERpYWxvZyBEaWFsb2dJbmRlbnQgRGlhbG9nSW5wdXQgRGlhbG9nTGV2ZWwgRGlhbG9nTm90ZWJvb2sgRGlhbG9nUHJvbG9nIERpYWxvZ1JldHVybiBEaWFsb2dTeW1ib2xzIERpYW1vbmQgRGlhbW9uZE1hdHJpeCBEaWNlRGlzc2ltaWxhcml0eSBEaWN0aW9uYXJ5TG9va3VwIERpY3Rpb25hcnlXb3JkUSBEaWZmZXJlbmNlRGVsdGEgRGlmZmVyZW5jZU9yZGVyIERpZmZlcmVuY2VRdW90aWVudCBEaWZmZXJlbmNlUm9vdCBEaWZmZXJlbmNlUm9vdFJlZHVjZSBEaWZmZXJlbmNlcyBEaWZmZXJlbnRpYWxEIERpZmZlcmVudGlhbFJvb3QgRGlmZmVyZW50aWFsUm9vdFJlZHVjZSBEaWZmZXJlbnRpYXRvckZpbHRlciBEaWdpdGFsU2lnbmF0dXJlIERpZ2l0QmxvY2sgRGlnaXRCbG9ja01pbmltdW0gRGlnaXRDaGFyYWN0ZXIgRGlnaXRDb3VudCBEaWdpdFEgRGloZWRyYWxBbmdsZSBEaWhlZHJhbEdyb3VwIERpbGF0aW9uIERpbWVuc2lvbmFsQ29tYmluYXRpb25zIERpbWVuc2lvbmFsTWVzaENvbXBvbmVudHMgRGltZW5zaW9uUmVkdWNlIERpbWVuc2lvblJlZHVjZXJGdW5jdGlvbiBEaW1lbnNpb25SZWR1Y3Rpb24gRGltZW5zaW9ucyBEaXJhY0NvbWIgRGlyYWNEZWx0YSBEaXJlY3RlZEVkZ2UgRGlyZWN0ZWRFZGdlcyBEaXJlY3RlZEdyYXBoIERpcmVjdGVkR3JhcGhRIERpcmVjdGVkSW5maW5pdHkgRGlyZWN0aW9uIERpcmVjdGl2ZSBEaXJlY3RvcnkgRGlyZWN0b3J5TmFtZSBEaXJlY3RvcnlRIERpcmVjdG9yeVN0YWNrIERpcmljaGxldEJldGEgRGlyaWNobGV0Q2hhcmFjdGVyIERpcmljaGxldENvbmRpdGlvbiBEaXJpY2hsZXRDb252b2x2ZSBEaXJpY2hsZXREaXN0cmlidXRpb24gRGlyaWNobGV0RXRhIERpcmljaGxldEwgRGlyaWNobGV0TGFtYmRhIERpcmljaGxldFRyYW5zZm9ybSBEaXJpY2hsZXRXaW5kb3cgRGlzYWJsZUNvbnNvbGVQcmludFBhY2tldCBEaXNhYmxlRm9ybWF0dGluZyBEaXNjcmV0ZUNoaXJwWlRyYW5zZm9ybSBEaXNjcmV0ZUNvbnZvbHZlIERpc2NyZXRlRGVsdGEgRGlzY3JldGVIYWRhbWFyZFRyYW5zZm9ybSBEaXNjcmV0ZUluZGljYXRvciBEaXNjcmV0ZUxpbWl0IERpc2NyZXRlTFFFc3RpbWF0b3JHYWlucyBEaXNjcmV0ZUxRUmVndWxhdG9yR2FpbnMgRGlzY3JldGVMeWFwdW5vdlNvbHZlIERpc2NyZXRlTWFya292UHJvY2VzcyBEaXNjcmV0ZU1heExpbWl0IERpc2NyZXRlTWluTGltaXQgRGlzY3JldGVQbG90IERpc2NyZXRlUGxvdDNEIERpc2NyZXRlUmF0aW8gRGlzY3JldGVSaWNjYXRpU29sdmUgRGlzY3JldGVTaGlmdCBEaXNjcmV0ZVRpbWVNb2RlbFEgRGlzY3JldGVVbmlmb3JtRGlzdHJpYnV0aW9uIERpc2NyZXRlVmFyaWFibGVzIERpc2NyZXRlV2F2ZWxldERhdGEgRGlzY3JldGVXYXZlbGV0UGFja2V0VHJhbnNmb3JtIERpc2NyZXRlV2F2ZWxldFRyYW5zZm9ybSBEaXNjcmV0aXplR3JhcGhpY3MgRGlzY3JldGl6ZVJlZ2lvbiBEaXNjcmltaW5hbnQgRGlzam9pbnRRIERpc2p1bmN0aW9uIERpc2sgRGlza0JveCBEaXNrTWF0cml4IERpc2tTZWdtZW50IERpc3BhdGNoIERpc3BhdGNoUSBEaXNwZXJzaW9uRXN0aW1hdG9yRnVuY3Rpb24gRGlzcGxheSBEaXNwbGF5QWxsU3RlcHMgRGlzcGxheUVuZFBhY2tldCBEaXNwbGF5Rmx1c2hJbWFnZVBhY2tldCBEaXNwbGF5Rm9ybSBEaXNwbGF5RnVuY3Rpb24gRGlzcGxheVBhY2tldCBEaXNwbGF5UnVsZXMgRGlzcGxheVNldFNpemVQYWNrZXQgRGlzcGxheVN0cmluZyBEaXNwbGF5VGVtcG9yYXJ5IERpc3BsYXlXaXRoIERpc3BsYXlXaXRoUmVmIERpc3BsYXlXaXRoVmFyaWFibGUgRGlzdGFuY2VGdW5jdGlvbiBEaXN0YW5jZU1hdHJpeCBEaXN0YW5jZVRyYW5zZm9ybSBEaXN0cmlidXRlIERpc3RyaWJ1dGVkIERpc3RyaWJ1dGVkQ29udGV4dHMgRGlzdHJpYnV0ZURlZmluaXRpb25zIERpc3RyaWJ1dGlvbkNoYXJ0IERpc3RyaWJ1dGlvbkRvbWFpbiBEaXN0cmlidXRpb25GaXRUZXN0IERpc3RyaWJ1dGlvblBhcmFtZXRlckFzc3VtcHRpb25zIERpc3RyaWJ1dGlvblBhcmFtZXRlclEgRGl0aGVyaW5nIERpdiBEaXZlcmdlbmNlIERpdmlkZSBEaXZpZGVCeSBEaXZpZGVycyBEaXZpZGVTaWRlcyBEaXZpc2libGUgRGl2aXNvcnMgRGl2aXNvclNpZ21hIERpdmlzb3JTdW0gRE1TTGlzdCBETVNTdHJpbmcgRG8gRG9ja2VkQ2VsbHMgRG9jdW1lbnRHZW5lcmF0b3IgRG9jdW1lbnRHZW5lcmF0b3JJbmZvcm1hdGlvbiBEb2N1bWVudEdlbmVyYXRvckluZm9ybWF0aW9uRGF0YSBEb2N1bWVudEdlbmVyYXRvcnMgRG9jdW1lbnROb3RlYm9vayBEb2N1bWVudFdlaWdodGluZ1J1bGVzIERvZGVjYWhlZHJvbiBEb21haW5SZWdpc3RyYXRpb25JbmZvcm1hdGlvbiBEb21pbmFudENvbG9ycyBET1NUZXh0Rm9ybWF0IERvdCBEb3REYXNoZWQgRG90RXF1YWwgRG90TGF5ZXIgRG90UGx1c0xheWVyIERvdHRlZCBEb3VibGVCcmFja2V0aW5nQmFyIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCBEb3VibGVEb3duQXJyb3cgRG91YmxlTGVmdEFycm93IERvdWJsZUxlZnRSaWdodEFycm93IERvdWJsZUxlZnRUZWUgRG91YmxlTG9uZ0xlZnRBcnJvdyBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgRG91YmxlUmlnaHRBcnJvdyBEb3VibGVSaWdodFRlZSBEb3VibGVVcEFycm93IERvdWJsZVVwRG93bkFycm93IERvdWJsZVZlcnRpY2FsQmFyIERvdWJseUluZmluaXRlIERvd24gRG93bkFycm93IERvd25BcnJvd0JhciBEb3duQXJyb3dVcEFycm93IERvd25MZWZ0UmlnaHRWZWN0b3IgRG93bkxlZnRUZWVWZWN0b3IgRG93bkxlZnRWZWN0b3IgRG93bkxlZnRWZWN0b3JCYXIgRG93blJpZ2h0VGVlVmVjdG9yIERvd25SaWdodFZlY3RvciBEb3duUmlnaHRWZWN0b3JCYXIgRG93bnNhbXBsZSBEb3duVGVlIERvd25UZWVBcnJvdyBEb3duVmFsdWVzIERyYWdBbmREcm9wIERyYXdFZGdlcyBEcmF3RnJvbnRGYWNlcyBEcmF3SGlnaGxpZ2h0ZWQgRHJvcCBEcm9wb3V0TGF5ZXIgRFNvbHZlIERTb2x2ZVZhbHVlIER0IER1YWxMaW5lYXJQcm9ncmFtbWluZyBEdWFsUG9seWhlZHJvbiBEdWFsU3lzdGVtc01vZGVsIER1bXBHZXQgRHVtcFNhdmUgRHVwbGljYXRlRnJlZVEgRHVyYXRpb24gRHluYW1pYyBEeW5hbWljQm94IER5bmFtaWNCb3hPcHRpb25zIER5bmFtaWNFdmFsdWF0aW9uVGltZW91dCBEeW5hbWljR2VvR3JhcGhpY3MgRHluYW1pY0ltYWdlIER5bmFtaWNMb2NhdGlvbiBEeW5hbWljTW9kdWxlIER5bmFtaWNNb2R1bGVCb3ggRHluYW1pY01vZHVsZUJveE9wdGlvbnMgRHluYW1pY01vZHVsZVBhcmVudCBEeW5hbWljTW9kdWxlVmFsdWVzIER5bmFtaWNOYW1lIER5bmFtaWNOYW1lc3BhY2UgRHluYW1pY1JlZmVyZW5jZSBEeW5hbWljU2V0dGluZyBEeW5hbWljVXBkYXRpbmcgRHluYW1pY1dyYXBwZXIgRHluYW1pY1dyYXBwZXJCb3ggRHluYW1pY1dyYXBwZXJCb3hPcHRpb25zJyArXG4gICAgICAnRSBFYXJ0aEltcGFjdERhdGEgRWFydGhxdWFrZURhdGEgRWNjZW50cmljaXR5Q2VudHJhbGl0eSBFY2hvIEVjaG9GdW5jdGlvbiBFY2xpcHNlVHlwZSBFZGdlQWRkIEVkZ2VCZXR3ZWVubmVzc0NlbnRyYWxpdHkgRWRnZUNhcGFjaXR5IEVkZ2VDYXBGb3JtIEVkZ2VDb2xvciBFZGdlQ29ubmVjdGl2aXR5IEVkZ2VDb250cmFjdCBFZGdlQ29zdCBFZGdlQ291bnQgRWRnZUNvdmVyUSBFZGdlQ3ljbGVNYXRyaXggRWRnZURhc2hpbmcgRWRnZURlbGV0ZSBFZGdlRGV0ZWN0IEVkZ2VGb3JtIEVkZ2VJbmRleCBFZGdlSm9pbkZvcm0gRWRnZUxhYmVsaW5nIEVkZ2VMYWJlbHMgRWRnZUxhYmVsU3R5bGUgRWRnZUxpc3QgRWRnZU9wYWNpdHkgRWRnZVEgRWRnZVJlbmRlcmluZ0Z1bmN0aW9uIEVkZ2VSdWxlcyBFZGdlU2hhcGVGdW5jdGlvbiBFZGdlU3R5bGUgRWRnZVRoaWNrbmVzcyBFZGdlV2VpZ2h0IEVkZ2VXZWlnaHRlZEdyYXBoUSBFZGl0YWJsZSBFZGl0QnV0dG9uU2V0dGluZ3MgRWRpdENlbGxUYWdzU2V0dGluZ3MgRWRpdERpc3RhbmNlIEVmZmVjdGl2ZUludGVyZXN0IEVpZ2Vuc3lzdGVtIEVpZ2VudmFsdWVzIEVpZ2VudmVjdG9yQ2VudHJhbGl0eSBFaWdlbnZlY3RvcnMgRWxlbWVudCBFbGVtZW50RGF0YSBFbGVtZW50d2lzZUxheWVyIEVsaWRlZEZvcm1zIEVsaW1pbmF0ZSBFbGltaW5hdGlvbk9yZGVyIEVsbGlwc29pZCBFbGxpcHRpY0UgRWxsaXB0aWNFeHAgRWxsaXB0aWNFeHBQcmltZSBFbGxpcHRpY0YgRWxsaXB0aWNGaWx0ZXJNb2RlbCBFbGxpcHRpY0sgRWxsaXB0aWNMb2cgRWxsaXB0aWNOb21lUSBFbGxpcHRpY1BpIEVsbGlwdGljUmVkdWNlZEhhbGZQZXJpb2RzIEVsbGlwdGljVGhldGEgRWxsaXB0aWNUaGV0YVByaW1lIEVtYmVkQ29kZSBFbWJlZGRlZEhUTUwgRW1iZWRkZWRTZXJ2aWNlIEVtYmVkZGluZ0xheWVyIEVtYmVkZGluZ09iamVjdCBFbWl0U291bmQgRW1waGFzaXplU3ludGF4RXJyb3JzIEVtcGlyaWNhbERpc3RyaWJ1dGlvbiBFbXB0eSBFbXB0eUdyYXBoUSBFbXB0eVJlZ2lvbiBFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRW5hYmxlZCBFbmNvZGUgRW5jcnlwdCBFbmNyeXB0ZWRPYmplY3QgRW5jcnlwdEZpbGUgRW5kIEVuZEFkZCBFbmREaWFsb2dQYWNrZXQgRW5kRnJvbnRFbmRJbnRlcmFjdGlvblBhY2tldCBFbmRPZkJ1ZmZlciBFbmRPZkZpbGUgRW5kT2ZMaW5lIEVuZE9mU3RyaW5nIEVuZFBhY2thZ2UgRW5naW5lRW52aXJvbm1lbnQgRW5naW5lZXJpbmdGb3JtIEVudGVyIEVudGVyRXhwcmVzc2lvblBhY2tldCBFbnRlclRleHRQYWNrZXQgRW50aXR5IEVudGl0eUNsYXNzIEVudGl0eUNsYXNzTGlzdCBFbnRpdHlDb3BpZXMgRW50aXR5RnVuY3Rpb24gRW50aXR5R3JvdXAgRW50aXR5SW5zdGFuY2UgRW50aXR5TGlzdCBFbnRpdHlQcmVmZXRjaCBFbnRpdHlQcm9wZXJ0aWVzIEVudGl0eVByb3BlcnR5IEVudGl0eVByb3BlcnR5Q2xhc3MgRW50aXR5UmVnaXN0ZXIgRW50aXR5U3RvcmUgRW50aXR5U3RvcmVzIEVudGl0eVR5cGVOYW1lIEVudGl0eVVucmVnaXN0ZXIgRW50aXR5VmFsdWUgRW50cm9weSBFbnRyb3B5RmlsdGVyIEVudmlyb25tZW50IEVwaWxvZyBFcGlsb2dGdW5jdGlvbiBFcXVhbCBFcXVhbENvbHVtbnMgRXF1YWxSb3dzIEVxdWFsVGlsZGUgRXF1YWxUbyBFcXVhdGVkVG8gRXF1aWxpYnJpdW0gRXF1aXJpcHBsZUZpbHRlcktlcm5lbCBFcXVpdmFsZW50IEVyZiBFcmZjIEVyZmkgRXJsYW5nQiBFcmxhbmdDIEVybGFuZ0Rpc3RyaWJ1dGlvbiBFcm9zaW9uIEVycm9yQm94IEVycm9yQm94T3B0aW9ucyBFcnJvck5vcm0gRXJyb3JQYWNrZXQgRXJyb3JzRGlhbG9nU2V0dGluZ3MgRXNjYXBlUmFkaXVzIEVzdGltYXRlZEJhY2tncm91bmQgRXN0aW1hdGVkRGlzdHJpYnV0aW9uIEVzdGltYXRlZFByb2Nlc3MgRXN0aW1hdG9yR2FpbnMgRXN0aW1hdG9yUmVndWxhdG9yIEV1Y2xpZGVhbkRpc3RhbmNlIEV1bGVyQW5nbGVzIEV1bGVyQ2hhcmFjdGVyaXN0aWMgRXVsZXJFIEV1bGVyR2FtbWEgRXVsZXJpYW5HcmFwaFEgRXVsZXJNYXRyaXggRXVsZXJQaGkgRXZhbHVhdGFibGUgRXZhbHVhdGUgRXZhbHVhdGVkIEV2YWx1YXRlUGFja2V0IEV2YWx1YXRlU2NoZWR1bGVkVGFzayBFdmFsdWF0aW9uQm94IEV2YWx1YXRpb25DZWxsIEV2YWx1YXRpb25Db21wbGV0aW9uQWN0aW9uIEV2YWx1YXRpb25EYXRhIEV2YWx1YXRpb25FbGVtZW50cyBFdmFsdWF0aW9uRW52aXJvbm1lbnQgRXZhbHVhdGlvbk1vZGUgRXZhbHVhdGlvbk1vbml0b3IgRXZhbHVhdGlvbk5vdGVib29rIEV2YWx1YXRpb25PYmplY3QgRXZhbHVhdGlvbk9yZGVyIEV2YWx1YXRvciBFdmFsdWF0b3JOYW1lcyBFdmVuUSBFdmVudERhdGEgRXZlbnRFdmFsdWF0b3IgRXZlbnRIYW5kbGVyIEV2ZW50SGFuZGxlclRhZyBFdmVudExhYmVscyBFdmVudFNlcmllcyBFeGFjdEJsYWNrbWFuV2luZG93IEV4YWN0TnVtYmVyUSBFeGFjdFJvb3RJc29sYXRpb24gRXhhbXBsZURhdGEgRXhjZXB0IEV4Y2x1ZGVkRm9ybXMgRXhjbHVkZWRMaW5lcyBFeGNsdWRlZFBoeXNpY2FsUXVhbnRpdGllcyBFeGNsdWRlUG9kcyBFeGNsdXNpb25zIEV4Y2x1c2lvbnNTdHlsZSBFeGlzdHMgRXhpdCBFeGl0RGlhbG9nIEV4b3BsYW5ldERhdGEgRXhwIEV4cGFuZCBFeHBhbmRBbGwgRXhwYW5kRGVub21pbmF0b3IgRXhwYW5kRmlsZU5hbWUgRXhwYW5kTnVtZXJhdG9yIEV4cGVjdGF0aW9uIEV4cGVjdGF0aW9uRSBFeHBlY3RlZFZhbHVlIEV4cEdhbW1hRGlzdHJpYnV0aW9uIEV4cEludGVncmFsRSBFeHBJbnRlZ3JhbEVpIEV4cGlyYXRpb25EYXRlIEV4cG9uZW50IEV4cG9uZW50RnVuY3Rpb24gRXhwb25lbnRpYWxEaXN0cmlidXRpb24gRXhwb25lbnRpYWxGYW1pbHkgRXhwb25lbnRpYWxHZW5lcmF0aW5nRnVuY3Rpb24gRXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlIEV4cG9uZW50aWFsUG93ZXJEaXN0cmlidXRpb24gRXhwb25lbnRQb3NpdGlvbiBFeHBvbmVudFN0ZXAgRXhwb3J0IEV4cG9ydEF1dG9SZXBsYWNlbWVudHMgRXhwb3J0Qnl0ZUFycmF5IEV4cG9ydEZvcm0gRXhwb3J0UGFja2V0IEV4cG9ydFN0cmluZyBFeHByZXNzaW9uIEV4cHJlc3Npb25DZWxsIEV4cHJlc3Npb25QYWNrZXQgRXhwcmVzc2lvblVVSUQgRXhwVG9UcmlnIEV4dGVuZGVkRW50aXR5Q2xhc3MgRXh0ZW5kZWRHQ0QgRXh0ZW5zaW9uIEV4dGVudEVsZW1lbnRGdW5jdGlvbiBFeHRlbnRNYXJrZXJzIEV4dGVudFNpemUgRXh0ZXJuYWxCdW5kbGUgRXh0ZXJuYWxDYWxsIEV4dGVybmFsRGF0YUNoYXJhY3RlckVuY29kaW5nIEV4dGVybmFsRXZhbHVhdGUgRXh0ZXJuYWxGdW5jdGlvbiBFeHRlcm5hbEZ1bmN0aW9uTmFtZSBFeHRlcm5hbE9iamVjdCBFeHRlcm5hbE9wdGlvbnMgRXh0ZXJuYWxTZXNzaW9uT2JqZWN0IEV4dGVybmFsU2Vzc2lvbnMgRXh0ZXJuYWxUeXBlU2lnbmF0dXJlIEV4dGVybmFsVmFsdWUgRXh0cmFjdCBFeHRyYWN0QXJjaGl2ZSBFeHRyYWN0TGF5ZXIgRXh0cmVtZVZhbHVlRGlzdHJpYnV0aW9uJyArXG4gICAgICAnRmFjZUZvcm0gRmFjZUdyaWRzIEZhY2VHcmlkc1N0eWxlIEZhY2lhbEZlYXR1cmVzIEZhY3RvciBGYWN0b3JDb21wbGV0ZSBGYWN0b3JpYWwgRmFjdG9yaWFsMiBGYWN0b3JpYWxNb21lbnQgRmFjdG9yaWFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uIEZhY3RvcmlhbFBvd2VyIEZhY3RvckludGVnZXIgRmFjdG9yTGlzdCBGYWN0b3JTcXVhcmVGcmVlIEZhY3RvclNxdWFyZUZyZWVMaXN0IEZhY3RvclRlcm1zIEZhY3RvclRlcm1zTGlzdCBGYWlsIEZhaWx1cmUgRmFpbHVyZUFjdGlvbiBGYWlsdXJlRGlzdHJpYnV0aW9uIEZhaWx1cmVRIEZhbHNlIEZhcmV5U2VxdWVuY2UgRkFSSU1BUHJvY2VzcyBGZWF0dXJlRGlzdGFuY2UgRmVhdHVyZUV4dHJhY3QgRmVhdHVyZUV4dHJhY3Rpb24gRmVhdHVyZUV4dHJhY3RvciBGZWF0dXJlRXh0cmFjdG9yRnVuY3Rpb24gRmVhdHVyZU5hbWVzIEZlYXR1cmVOZWFyZXN0IEZlYXR1cmVTcGFjZVBsb3QgRmVhdHVyZVNwYWNlUGxvdDNEIEZlYXR1cmVUeXBlcyBGRURpc2FibGVDb25zb2xlUHJpbnRQYWNrZXQgRmVlZGJhY2tMaW5lYXJpemUgRmVlZGJhY2tTZWN0b3IgRmVlZGJhY2tTZWN0b3JTdHlsZSBGZWVkYmFja1R5cGUgRkVFbmFibGVDb25zb2xlUHJpbnRQYWNrZXQgRmV0YWxHcm93dGhEYXRhIEZpYm9uYWNjaSBGaWJvbm9yaWFsIEZpZWxkQ29tcGxldGlvbkZ1bmN0aW9uIEZpZWxkSGludCBGaWVsZEhpbnRTdHlsZSBGaWVsZE1hc2tlZCBGaWVsZFNpemUgRmlsZSBGaWxlQmFzZU5hbWUgRmlsZUJ5dGVDb3VudCBGaWxlQ29udmVydCBGaWxlRGF0ZSBGaWxlRXhpc3RzUSBGaWxlRXh0ZW5zaW9uIEZpbGVGb3JtYXQgRmlsZUhhbmRsZXIgRmlsZUhhc2ggRmlsZUluZm9ybWF0aW9uIEZpbGVOYW1lIEZpbGVOYW1lRGVwdGggRmlsZU5hbWVEaWFsb2dTZXR0aW5ncyBGaWxlTmFtZURyb3AgRmlsZU5hbWVGb3JtcyBGaWxlTmFtZUpvaW4gRmlsZU5hbWVzIEZpbGVOYW1lU2V0dGVyIEZpbGVOYW1lU3BsaXQgRmlsZU5hbWVUYWtlIEZpbGVQcmludCBGaWxlU2l6ZSBGaWxlU3lzdGVtTWFwIEZpbGVTeXN0ZW1TY2FuIEZpbGVUZW1wbGF0ZSBGaWxlVGVtcGxhdGVBcHBseSBGaWxlVHlwZSBGaWxsZWRDdXJ2ZSBGaWxsZWRDdXJ2ZUJveCBGaWxsZWRDdXJ2ZUJveE9wdGlvbnMgRmlsbGluZyBGaWxsaW5nU3R5bGUgRmlsbGluZ1RyYW5zZm9ybSBGaWx0ZXJlZEVudGl0eUNsYXNzIEZpbHRlclJ1bGVzIEZpbmFuY2lhbEJvbmQgRmluYW5jaWFsRGF0YSBGaW5hbmNpYWxEZXJpdmF0aXZlIEZpbmFuY2lhbEluZGljYXRvciBGaW5kIEZpbmRBbm9tYWxpZXMgRmluZEFyZ01heCBGaW5kQXJnTWluIEZpbmRDaGFubmVscyBGaW5kQ2xpcXVlIEZpbmRDbHVzdGVycyBGaW5kQ29va2llcyBGaW5kQ3VydmVQYXRoIEZpbmRDeWNsZSBGaW5kRGV2aWNlcyBGaW5kRGlzdHJpYnV0aW9uIEZpbmREaXN0cmlidXRpb25QYXJhbWV0ZXJzIEZpbmREaXZpc2lvbnMgRmluZEVkZ2VDb3ZlciBGaW5kRWRnZUN1dCBGaW5kRWRnZUluZGVwZW5kZW50UGF0aHMgRmluZEVxdWF0aW9uYWxQcm9vZiBGaW5kRXVsZXJpYW5DeWNsZSBGaW5kRXh0ZXJuYWxFdmFsdWF0b3JzIEZpbmRGYWNlcyBGaW5kRmlsZSBGaW5kRml0IEZpbmRGb3JtdWxhIEZpbmRGdW5kYW1lbnRhbEN5Y2xlcyBGaW5kR2VuZXJhdGluZ0Z1bmN0aW9uIEZpbmRHZW9Mb2NhdGlvbiBGaW5kR2VvbWV0cmljQ29uamVjdHVyZXMgRmluZEdlb21ldHJpY1RyYW5zZm9ybSBGaW5kR3JhcGhDb21tdW5pdGllcyBGaW5kR3JhcGhJc29tb3JwaGlzbSBGaW5kR3JhcGhQYXJ0aXRpb24gRmluZEhhbWlsdG9uaWFuQ3ljbGUgRmluZEhhbWlsdG9uaWFuUGF0aCBGaW5kSGlkZGVuTWFya292U3RhdGVzIEZpbmRJbmRlcGVuZGVudEVkZ2VTZXQgRmluZEluZGVwZW5kZW50VmVydGV4U2V0IEZpbmRJbnN0YW5jZSBGaW5kSW50ZWdlck51bGxWZWN0b3IgRmluZEtDbGFuIEZpbmRLQ2xpcXVlIEZpbmRLQ2x1YiBGaW5kS1BsZXggRmluZExpYnJhcnkgRmluZExpbmVhclJlY3VycmVuY2UgRmluZExpc3QgRmluZE1hdGNoaW5nQ29sb3IgRmluZE1heGltdW0gRmluZE1heGltdW1GbG93IEZpbmRNYXhWYWx1ZSBGaW5kTWVzaERlZmVjdHMgRmluZE1pbmltdW0gRmluZE1pbmltdW1Db3N0RmxvdyBGaW5kTWluaW11bUN1dCBGaW5kTWluVmFsdWUgRmluZE1vbGVjdWxlU3Vic3RydWN0dXJlIEZpbmRQYXRoIEZpbmRQZWFrcyBGaW5kUGVybXV0YXRpb24gRmluZFBvc3RtYW5Ub3VyIEZpbmRQcm9jZXNzUGFyYW1ldGVycyBGaW5kUmVwZWF0IEZpbmRSb290IEZpbmRTZXF1ZW5jZUZ1bmN0aW9uIEZpbmRTZXR0aW5ncyBGaW5kU2hvcnRlc3RQYXRoIEZpbmRTaG9ydGVzdFRvdXIgRmluZFNwYW5uaW5nVHJlZSBGaW5kU3lzdGVtTW9kZWxFcXVpbGlicml1bSBGaW5kVGV4dHVhbEFuc3dlciBGaW5kVGhyZXNob2xkIEZpbmRUcmFuc2llbnRSZXBlYXQgRmluZFZlcnRleENvdmVyIEZpbmRWZXJ0ZXhDdXQgRmluZFZlcnRleEluZGVwZW5kZW50UGF0aHMgRmluZSBGaW5pc2hEeW5hbWljIEZpbml0ZUFiZWxpYW5Hcm91cENvdW50IEZpbml0ZUdyb3VwQ291bnQgRmluaXRlR3JvdXBEYXRhIEZpcnN0IEZpcnN0Q2FzZSBGaXJzdFBhc3NhZ2VUaW1lRGlzdHJpYnV0aW9uIEZpcnN0UG9zaXRpb24gRmlzY2hlckdyb3VwRmkyMiBGaXNjaGVyR3JvdXBGaTIzIEZpc2NoZXJHcm91cEZpMjRQcmltZSBGaXNoZXJIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBGaXNoZXJSYXRpb1Rlc3QgRmlzaGVyWkRpc3RyaWJ1dGlvbiBGaXQgRml0QWxsIEZpdFJlZ3VsYXJpemF0aW9uIEZpdHRlZE1vZGVsIEZpeGVkT3JkZXIgRml4ZWRQb2ludCBGaXhlZFBvaW50TGlzdCBGbGFzaFNlbGVjdGlvbiBGbGF0IEZsYXR0ZW4gRmxhdHRlbkF0IEZsYXR0ZW5MYXllciBGbGF0VG9wV2luZG93IEZsaXBWaWV3IEZsb29yIEZsb3dQb2x5bm9taWFsIEZsdXNoUHJpbnRPdXRwdXRQYWNrZXQgRm9sZCBGb2xkTGlzdCBGb2xkUGFpciBGb2xkUGFpckxpc3QgRm9sbG93UmVkaXJlY3RzIEZvbnQgRm9udENvbG9yIEZvbnRGYW1pbHkgRm9udEZvcm0gRm9udE5hbWUgRm9udE9wYWNpdHkgRm9udFBvc3RTY3JpcHROYW1lIEZvbnRQcm9wZXJ0aWVzIEZvbnRSZWVuY29kaW5nIEZvbnRTaXplIEZvbnRTbGFudCBGb250U3Vic3RpdHV0aW9ucyBGb250VHJhY2tpbmcgRm9udFZhcmlhdGlvbnMgRm9udFdlaWdodCBGb3IgRm9yQWxsIEZvcm1hdCBGb3JtYXRSdWxlcyBGb3JtYXRUeXBlIEZvcm1hdFR5cGVBdXRvQ29udmVydCBGb3JtYXRWYWx1ZXMgRm9ybUJveCBGb3JtQm94T3B0aW9ucyBGb3JtQ29udHJvbCBGb3JtRnVuY3Rpb24gRm9ybUxheW91dEZ1bmN0aW9uIEZvcm1PYmplY3QgRm9ybVBhZ2UgRm9ybVRoZW1lIEZvcm11bGFEYXRhIEZvcm11bGFMb29rdXAgRm9ydHJhbkZvcm0gRm9yd2FyZCBGb3J3YXJkQmFja3dhcmQgRm91cmllciBGb3VyaWVyQ29lZmZpY2llbnQgRm91cmllckNvc0NvZWZmaWNpZW50IEZvdXJpZXJDb3NTZXJpZXMgRm91cmllckNvc1RyYW5zZm9ybSBGb3VyaWVyRENUIEZvdXJpZXJEQ1RGaWx0ZXIgRm91cmllckRDVE1hdHJpeCBGb3VyaWVyRFNUIEZvdXJpZXJEU1RNYXRyaXggRm91cmllck1hdHJpeCBGb3VyaWVyUGFyYW1ldGVycyBGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gRm91cmllclNlcmllcyBGb3VyaWVyU2luQ29lZmZpY2llbnQgRm91cmllclNpblNlcmllcyBGb3VyaWVyU2luVHJhbnNmb3JtIEZvdXJpZXJUcmFuc2Zvcm0gRm91cmllclRyaWdTZXJpZXMgRnJhY3Rpb25hbEJyb3duaWFuTW90aW9uUHJvY2VzcyBGcmFjdGlvbmFsR2F1c3NpYW5Ob2lzZVByb2Nlc3MgRnJhY3Rpb25hbFBhcnQgRnJhY3Rpb25Cb3ggRnJhY3Rpb25Cb3hPcHRpb25zIEZyYWN0aW9uTGluZSBGcmFtZSBGcmFtZUJveCBGcmFtZUJveE9wdGlvbnMgRnJhbWVkIEZyYW1lSW5zZXQgRnJhbWVMYWJlbCBGcmFtZWxlc3MgRnJhbWVNYXJnaW5zIEZyYW1lUmF0ZSBGcmFtZVN0eWxlIEZyYW1lVGlja3MgRnJhbWVUaWNrc1N0eWxlIEZSYXRpb0Rpc3RyaWJ1dGlvbiBGcmVjaGV0RGlzdHJpYnV0aW9uIEZyZWVRIEZyZW5ldFNlcnJldFN5c3RlbSBGcmVxdWVuY3lTYW1wbGluZ0ZpbHRlcktlcm5lbCBGcmVzbmVsQyBGcmVzbmVsRiBGcmVzbmVsRyBGcmVzbmVsUyBGcmlkYXkgRnJvYmVuaXVzTnVtYmVyIEZyb2Jlbml1c1NvbHZlIEZyb21BYnNvbHV0ZVRpbWUgRnJvbUNoYXJhY3RlckNvZGUgRnJvbUNvZWZmaWNpZW50UnVsZXMgRnJvbUNvbnRpbnVlZEZyYWN0aW9uIEZyb21EYXRlIEZyb21EaWdpdHMgRnJvbURNUyBGcm9tRW50aXR5IEZyb21KdWxpYW5EYXRlIEZyb21MZXR0ZXJOdW1iZXIgRnJvbVBvbGFyQ29vcmRpbmF0ZXMgRnJvbVJvbWFuTnVtZXJhbCBGcm9tU3BoZXJpY2FsQ29vcmRpbmF0ZXMgRnJvbVVuaXhUaW1lIEZyb250IEZyb250RW5kRHluYW1pY0V4cHJlc3Npb24gRnJvbnRFbmRFdmVudEFjdGlvbnMgRnJvbnRFbmRFeGVjdXRlIEZyb250RW5kT2JqZWN0IEZyb250RW5kUmVzb3VyY2UgRnJvbnRFbmRSZXNvdXJjZVN0cmluZyBGcm9udEVuZFN0YWNrU2l6ZSBGcm9udEVuZFRva2VuIEZyb250RW5kVG9rZW5FeGVjdXRlIEZyb250RW5kVmFsdWVDYWNoZSBGcm9udEVuZFZlcnNpb24gRnJvbnRGYWNlQ29sb3IgRnJvbnRGYWNlT3BhY2l0eSBGdWxsIEZ1bGxBeGVzIEZ1bGxEZWZpbml0aW9uIEZ1bGxGb3JtIEZ1bGxHcmFwaGljcyBGdWxsSW5mb3JtYXRpb25PdXRwdXRSZWd1bGF0b3IgRnVsbE9wdGlvbnMgRnVsbFJlZ2lvbiBGdWxsU2ltcGxpZnkgRnVuY3Rpb24gRnVuY3Rpb25Db21waWxlIEZ1bmN0aW9uQ29tcGlsZUV4cG9ydCBGdW5jdGlvbkNvbXBpbGVFeHBvcnRCeXRlQXJyYXkgRnVuY3Rpb25Db21waWxlRXhwb3J0TGlicmFyeSBGdW5jdGlvbkNvbXBpbGVFeHBvcnRTdHJpbmcgRnVuY3Rpb25Eb21haW4gRnVuY3Rpb25FeHBhbmQgRnVuY3Rpb25JbnRlcnBvbGF0aW9uIEZ1bmN0aW9uUGVyaW9kIEZ1bmN0aW9uUmFuZ2UgRnVuY3Rpb25TcGFjZSBGdXNzZWxsVmVzZWx5SW1wb3J0YW5jZScgK1xuICAgICAgJ0dhYm9yRmlsdGVyIEdhYm9yTWF0cml4IEdhYm9yV2F2ZWxldCBHYWluTWFyZ2lucyBHYWluUGhhc2VNYXJnaW5zIEdhbGF4eURhdGEgR2FsbGVyeVZpZXcgR2FtbWEgR2FtbWFEaXN0cmlidXRpb24gR2FtbWFSZWd1bGFyaXplZCBHYXBQZW5hbHR5IEdBUkNIUHJvY2VzcyBHYXRlZFJlY3VycmVudExheWVyIEdhdGhlciBHYXRoZXJCeSBHYXVnZUZhY2VFbGVtZW50RnVuY3Rpb24gR2F1Z2VGYWNlU3R5bGUgR2F1Z2VGcmFtZUVsZW1lbnRGdW5jdGlvbiBHYXVnZUZyYW1lU2l6ZSBHYXVnZUZyYW1lU3R5bGUgR2F1Z2VMYWJlbHMgR2F1Z2VNYXJrZXJzIEdhdWdlU3R5bGUgR2F1c3NpYW5GaWx0ZXIgR2F1c3NpYW5JbnRlZ2VycyBHYXVzc2lhbk1hdHJpeCBHYXVzc2lhbk9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb24gR2F1c3NpYW5TeW1wbGVjdGljTWF0cml4RGlzdHJpYnV0aW9uIEdhdXNzaWFuVW5pdGFyeU1hdHJpeERpc3RyaWJ1dGlvbiBHYXVzc2lhbldpbmRvdyBHQ0QgR2VnZW5iYXVlckMgR2VuZXJhbCBHZW5lcmFsaXplZExpbmVhck1vZGVsRml0IEdlbmVyYXRlQXN5bW1ldHJpY0tleVBhaXIgR2VuZXJhdGVDb25kaXRpb25zIEdlbmVyYXRlZENlbGwgR2VuZXJhdGVkRG9jdW1lbnRCaW5kaW5nIEdlbmVyYXRlRGVyaXZlZEtleSBHZW5lcmF0ZURpZ2l0YWxTaWduYXR1cmUgR2VuZXJhdGVEb2N1bWVudCBHZW5lcmF0ZWRQYXJhbWV0ZXJzIEdlbmVyYXRlZFF1YW50aXR5TWFnbml0dWRlcyBHZW5lcmF0ZUhUVFBSZXNwb25zZSBHZW5lcmF0ZVNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBHZW5lcmF0ZVN5bW1ldHJpY0tleSBHZW5lcmF0aW5nRnVuY3Rpb24gR2VuZXJhdG9yRGVzY3JpcHRpb24gR2VuZXJhdG9ySGlzdG9yeUxlbmd0aCBHZW5lcmF0b3JPdXRwdXRUeXBlIEdlbmVyaWMgR2VuZXJpY0N5bGluZHJpY2FsRGVjb21wb3NpdGlvbiBHZW5vbWVEYXRhIEdlbm9tZUxvb2t1cCBHZW9BbnRpcG9kZSBHZW9BcmVhIEdlb0FycmF5U2l6ZSBHZW9CYWNrZ3JvdW5kIEdlb0JvdW5kaW5nQm94IEdlb0JvdW5kcyBHZW9Cb3VuZHNSZWdpb24gR2VvQnViYmxlQ2hhcnQgR2VvQ2VudGVyIEdlb0NpcmNsZSBHZW9kZXNpY0Nsb3NpbmcgR2VvZGVzaWNEaWxhdGlvbiBHZW9kZXNpY0Vyb3Npb24gR2VvZGVzaWNPcGVuaW5nIEdlb0Rlc3RpbmF0aW9uIEdlb2Rlc3lEYXRhIEdlb0RpcmVjdGlvbiBHZW9EaXNrIEdlb0Rpc3BsYWNlbWVudCBHZW9EaXN0YW5jZSBHZW9EaXN0YW5jZUxpc3QgR2VvRWxldmF0aW9uRGF0YSBHZW9FbnRpdGllcyBHZW9HcmFwaGljcyBHZW9ncmF2aXR5TW9kZWxEYXRhIEdlb0dyaWREaXJlY3Rpb25EaWZmZXJlbmNlIEdlb0dyaWRMaW5lcyBHZW9HcmlkTGluZXNTdHlsZSBHZW9HcmlkUG9zaXRpb24gR2VvR3JpZFJhbmdlIEdlb0dyaWRSYW5nZVBhZGRpbmcgR2VvR3JpZFVuaXRBcmVhIEdlb0dyaWRVbml0RGlzdGFuY2UgR2VvR3JpZFZlY3RvciBHZW9Hcm91cCBHZW9IZW1pc3BoZXJlIEdlb0hlbWlzcGhlcmVCb3VuZGFyeSBHZW9IaXN0b2dyYW0gR2VvSWRlbnRpZnkgR2VvSW1hZ2UgR2VvTGFiZWxzIEdlb0xlbmd0aCBHZW9MaXN0UGxvdCBHZW9Mb2NhdGlvbiBHZW9sb2dpY2FsUGVyaW9kRGF0YSBHZW9tYWduZXRpY01vZGVsRGF0YSBHZW9NYXJrZXIgR2VvbWV0cmljQXNzZXJ0aW9uIEdlb21ldHJpY0Jyb3duaWFuTW90aW9uUHJvY2VzcyBHZW9tZXRyaWNEaXN0cmlidXRpb24gR2VvbWV0cmljTWVhbiBHZW9tZXRyaWNNZWFuRmlsdGVyIEdlb21ldHJpY1NjZW5lIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb24zREJveE9wdGlvbnMgR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3ggR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3hPcHRpb25zIEdlb01vZGVsIEdlb05lYXJlc3QgR2VvUGF0aCBHZW9Qb3NpdGlvbiBHZW9Qb3NpdGlvbkVOVSBHZW9Qb3NpdGlvblhZWiBHZW9Qcm9qZWN0aW9uIEdlb1Byb2plY3Rpb25EYXRhIEdlb1JhbmdlIEdlb1JhbmdlUGFkZGluZyBHZW9SZWdpb25WYWx1ZVBsb3QgR2VvUmVzb2x1dGlvbiBHZW9TY2FsZUJhciBHZW9TZXJ2ZXIgR2VvU21vb3RoSGlzdG9ncmFtIEdlb1N0cmVhbVBsb3QgR2VvU3R5bGluZyBHZW9TdHlsaW5nSW1hZ2VGdW5jdGlvbiBHZW9WYXJpYW50IEdlb1ZlY3RvciBHZW9WZWN0b3JFTlUgR2VvVmVjdG9yUGxvdCBHZW9WZWN0b3JYWVogR2VvVmlzaWJsZVJlZ2lvbiBHZW9WaXNpYmxlUmVnaW9uQm91bmRhcnkgR2VvV2l0aGluUSBHZW9ab29tTGV2ZWwgR2VzdHVyZUhhbmRsZXIgR2VzdHVyZUhhbmRsZXJUYWcgR2V0IEdldEJvdW5kaW5nQm94U2l6ZVBhY2tldCBHZXRDb250ZXh0IEdldEVudmlyb25tZW50IEdldEZpbGVOYW1lIEdldEZyb250RW5kT3B0aW9uc0RhdGFQYWNrZXQgR2V0TGluZWJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2V0TWVudXNQYWNrZXQgR2V0UGFnZUJyZWFrSW5mb3JtYXRpb25QYWNrZXQgR2xhaXNoZXIgR2xvYmFsQ2x1c3RlcmluZ0NvZWZmaWNpZW50IEdsb2JhbFByZWZlcmVuY2VzIEdsb2JhbFNlc3Npb24gR2xvdyBHb2xkZW5BbmdsZSBHb2xkZW5SYXRpbyBHb21wZXJ0ek1ha2VoYW1EaXN0cmlidXRpb24gR29vZG1hbktydXNrYWxHYW1tYSBHb29kbWFuS3J1c2thbEdhbW1hVGVzdCBHb3RvIEdyYWQgR3JhZGllbnQgR3JhZGllbnRGaWx0ZXIgR3JhZGllbnRPcmllbnRhdGlvbkZpbHRlciBHcmFtbWFyQXBwbHkgR3JhbW1hclJ1bGVzIEdyYW1tYXJUb2tlbiBHcmFwaCBHcmFwaDNEIEdyYXBoQXNzb3J0YXRpdml0eSBHcmFwaEF1dG9tb3JwaGlzbUdyb3VwIEdyYXBoQ2VudGVyIEdyYXBoQ29tcGxlbWVudCBHcmFwaERhdGEgR3JhcGhEZW5zaXR5IEdyYXBoRGlhbWV0ZXIgR3JhcGhEaWZmZXJlbmNlIEdyYXBoRGlzam9pbnRVbmlvbiBHcmFwaERpc3RhbmNlIEdyYXBoRGlzdGFuY2VNYXRyaXggR3JhcGhFbGVtZW50RGF0YSBHcmFwaEVtYmVkZGluZyBHcmFwaEhpZ2hsaWdodCBHcmFwaEhpZ2hsaWdodFN0eWxlIEdyYXBoSHViIEdyYXBoaWNzIEdyYXBoaWNzM0QgR3JhcGhpY3MzREJveCBHcmFwaGljczNEQm94T3B0aW9ucyBHcmFwaGljc0FycmF5IEdyYXBoaWNzQmFzZWxpbmUgR3JhcGhpY3NCb3ggR3JhcGhpY3NCb3hPcHRpb25zIEdyYXBoaWNzQ29sb3IgR3JhcGhpY3NDb2x1bW4gR3JhcGhpY3NDb21wbGV4IEdyYXBoaWNzQ29tcGxleDNEQm94IEdyYXBoaWNzQ29tcGxleDNEQm94T3B0aW9ucyBHcmFwaGljc0NvbXBsZXhCb3ggR3JhcGhpY3NDb21wbGV4Qm94T3B0aW9ucyBHcmFwaGljc0NvbnRlbnRzIEdyYXBoaWNzRGF0YSBHcmFwaGljc0dyaWQgR3JhcGhpY3NHcmlkQm94IEdyYXBoaWNzR3JvdXAgR3JhcGhpY3NHcm91cDNEQm94IEdyYXBoaWNzR3JvdXAzREJveE9wdGlvbnMgR3JhcGhpY3NHcm91cEJveCBHcmFwaGljc0dyb3VwQm94T3B0aW9ucyBHcmFwaGljc0dyb3VwaW5nIEdyYXBoaWNzSGlnaGxpZ2h0Q29sb3IgR3JhcGhpY3NSb3cgR3JhcGhpY3NTcGFjaW5nIEdyYXBoaWNzU3R5bGUgR3JhcGhJbnRlcnNlY3Rpb24gR3JhcGhMYXlvdXQgR3JhcGhMaW5rRWZmaWNpZW5jeSBHcmFwaFBlcmlwaGVyeSBHcmFwaFBsb3QgR3JhcGhQbG90M0QgR3JhcGhQb3dlciBHcmFwaFByb3BlcnR5RGlzdHJpYnV0aW9uIEdyYXBoUSBHcmFwaFJhZGl1cyBHcmFwaFJlY2lwcm9jaXR5IEdyYXBoUm9vdCBHcmFwaFN0eWxlIEdyYXBoVW5pb24gR3JheSBHcmF5TGV2ZWwgR3JlYXRlciBHcmVhdGVyRXF1YWwgR3JlYXRlckVxdWFsTGVzcyBHcmVhdGVyRXF1YWxUaGFuIEdyZWF0ZXJGdWxsRXF1YWwgR3JlYXRlckdyZWF0ZXIgR3JlYXRlckxlc3MgR3JlYXRlclNsYW50RXF1YWwgR3JlYXRlclRoYW4gR3JlYXRlclRpbGRlIEdyZWVuIEdyZWVuRnVuY3Rpb24gR3JpZCBHcmlkQmFzZWxpbmUgR3JpZEJveCBHcmlkQm94QWxpZ25tZW50IEdyaWRCb3hCYWNrZ3JvdW5kIEdyaWRCb3hEaXZpZGVycyBHcmlkQm94RnJhbWUgR3JpZEJveEl0ZW1TaXplIEdyaWRCb3hJdGVtU3R5bGUgR3JpZEJveE9wdGlvbnMgR3JpZEJveFNwYWNpbmdzIEdyaWRDcmVhdGlvblNldHRpbmdzIEdyaWREZWZhdWx0RWxlbWVudCBHcmlkRWxlbWVudFN0eWxlT3B0aW9ucyBHcmlkRnJhbWUgR3JpZEZyYW1lTWFyZ2lucyBHcmlkR3JhcGggR3JpZExpbmVzIEdyaWRMaW5lc1N0eWxlIEdyb2VibmVyQmFzaXMgR3JvdXBBY3Rpb25CYXNlIEdyb3VwQnkgR3JvdXBDZW50cmFsaXplciBHcm91cEVsZW1lbnRGcm9tV29yZCBHcm91cEVsZW1lbnRQb3NpdGlvbiBHcm91cEVsZW1lbnRRIEdyb3VwRWxlbWVudHMgR3JvdXBFbGVtZW50VG9Xb3JkIEdyb3VwR2VuZXJhdG9ycyBHcm91cGluZ3MgR3JvdXBNdWx0aXBsaWNhdGlvblRhYmxlIEdyb3VwT3JiaXRzIEdyb3VwT3JkZXIgR3JvdXBQYWdlQnJlYWtXaXRoaW4gR3JvdXBTZXR3aXNlU3RhYmlsaXplciBHcm91cFN0YWJpbGl6ZXIgR3JvdXBTdGFiaWxpemVyQ2hhaW4gR3JvdXBUb2dldGhlckdyb3VwaW5nIEdyb3VwVG9nZXRoZXJOZXN0ZWRHcm91cGluZyBHcm93Q3V0Q29tcG9uZW50cyBHdWRlcm1hbm5pYW4gR3VpZGVkRmlsdGVyIEd1bWJlbERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ0hhYXJXYXZlbGV0IEhhZGFtYXJkTWF0cml4IEhhbGZMaW5lIEhhbGZOb3JtYWxEaXN0cmlidXRpb24gSGFsZlBsYW5lIEhhbGZTcGFjZSBIYW1pbHRvbmlhbkdyYXBoUSBIYW1taW5nRGlzdGFuY2UgSGFtbWluZ1dpbmRvdyBIYW5kbGVyRnVuY3Rpb25zIEhhbmRsZXJGdW5jdGlvbnNLZXlzIEhhbmtlbEgxIEhhbmtlbEgyIEhhbmtlbE1hdHJpeCBIYW5rZWxUcmFuc2Zvcm0gSGFublBvaXNzb25XaW5kb3cgSGFubldpbmRvdyBIYXJhZGFOb3J0b25Hcm91cEhOIEhhcmFyeUdyYXBoIEhhcm1vbmljTWVhbiBIYXJtb25pY01lYW5GaWx0ZXIgSGFybW9uaWNOdW1iZXIgSGFzaCBIYXZlcnNpbmUgSGF6YXJkRnVuY3Rpb24gSGVhZCBIZWFkQ29tcG9zZSBIZWFkZXJMaW5lcyBIZWFkcyBIZWF2aXNpZGVMYW1iZGEgSGVhdmlzaWRlUGkgSGVhdmlzaWRlVGhldGEgSGVsZEdyb3VwSGUgSGVsZFBhcnQgSGVscEJyb3dzZXJMb29rdXAgSGVscEJyb3dzZXJOb3RlYm9vayBIZWxwQnJvd3NlclNldHRpbmdzIEhlcmUgSGVybWl0ZURlY29tcG9zaXRpb24gSGVybWl0ZUggSGVybWl0aWFuTWF0cml4USBIZXNzZW5iZXJnRGVjb21wb3NpdGlvbiBIZXNzaWFuIEhleGFkZWNpbWFsQ2hhcmFjdGVyIEhleGFoZWRyb24gSGV4YWhlZHJvbkJveCBIZXhhaGVkcm9uQm94T3B0aW9ucyBIaWRkZW5NYXJrb3ZQcm9jZXNzIEhpZGRlblN1cmZhY2UgSGlnaGxpZ2h0ZWQgSGlnaGxpZ2h0R3JhcGggSGlnaGxpZ2h0SW1hZ2UgSGlnaGxpZ2h0TWVzaCBIaWdocGFzc0ZpbHRlciBIaWdtYW5TaW1zR3JvdXBIUyBIaWxiZXJ0Q3VydmUgSGlsYmVydEZpbHRlciBIaWxiZXJ0TWF0cml4IEhpc3RvZ3JhbSBIaXN0b2dyYW0zRCBIaXN0b2dyYW1EaXN0cmlidXRpb24gSGlzdG9ncmFtTGlzdCBIaXN0b2dyYW1UcmFuc2Zvcm0gSGlzdG9ncmFtVHJhbnNmb3JtSW50ZXJwb2xhdGlvbiBIaXN0b3JpY2FsUGVyaW9kRGF0YSBIaXRNaXNzVHJhbnNmb3JtIEhJVFNDZW50cmFsaXR5IEhqb3J0aERpc3RyaWJ1dGlvbiBIb2RnZUR1YWwgSG9lZmZkaW5nRCBIb2VmZmRpbmdEVGVzdCBIb2xkIEhvbGRBbGwgSG9sZEFsbENvbXBsZXRlIEhvbGRDb21wbGV0ZSBIb2xkRmlyc3QgSG9sZEZvcm0gSG9sZFBhdHRlcm4gSG9sZFJlc3QgSG9saWRheUNhbGVuZGFyIEhvbWVEaXJlY3RvcnkgSG9tZVBhZ2UgSG9yaXpvbnRhbCBIb3Jpem9udGFsRm9ybSBIb3Jpem9udGFsR2F1Z2UgSG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uIEhvcm5lckZvcm0gSG9zdExvb2t1cCBIb3RlbGxpbmdUU3F1YXJlRGlzdHJpYnV0aW9uIEhveXREaXN0cmlidXRpb24gSFRNTFNhdmUgSFRUUEVycm9yUmVzcG9uc2UgSFRUUFJlZGlyZWN0IEhUVFBSZXF1ZXN0IEhUVFBSZXF1ZXN0RGF0YSBIVFRQUmVzcG9uc2UgSHVlIEh1bWFuR3Jvd3RoRGF0YSBIdW1wRG93bkh1bXAgSHVtcEVxdWFsIEh1cndpdHpMZXJjaFBoaSBIdXJ3aXR6WmV0YSBIeXBlcmJvbGljRGlzdHJpYnV0aW9uIEh5cGVyY3ViZUdyYXBoIEh5cGVyZXhwb25lbnRpYWxEaXN0cmlidXRpb24gSHlwZXJmYWN0b3JpYWwgSHlwZXJnZW9tZXRyaWMwRjEgSHlwZXJnZW9tZXRyaWMwRjFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpYzFGMSBIeXBlcmdlb21ldHJpYzFGMVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljMkYxIEh5cGVyZ2VvbWV0cmljMkYxUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb24gSHlwZXJnZW9tZXRyaWNQRlEgSHlwZXJnZW9tZXRyaWNQRlFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpY1UgSHlwZXJsaW5rIEh5cGVybGlua0NyZWF0aW9uU2V0dGluZ3MgSHlwZXJwbGFuZSBIeXBoZW5hdGlvbiBIeXBoZW5hdGlvbk9wdGlvbnMgSHlwb2V4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEh5cG90aGVzaXNUZXN0RGF0YScgK1xuICAgICAgJ0kgSWNvbkRhdGEgSWNvbml6ZSBJY29uaXplZE9iamVjdCBJY29uUnVsZXMgSWNvc2FoZWRyb24gSWRlbnRpdHkgSWRlbnRpdHlNYXRyaXggSWYgSWdub3JlQ2FzZSBJZ25vcmVEaWFjcml0aWNzIElnbm9yZVB1bmN0dWF0aW9uIElnbm9yZVNwZWxsQ2hlY2sgSWdub3JpbmdJbmFjdGl2ZSBJbSBJbWFnZSBJbWFnZTNEIEltYWdlM0RQcm9qZWN0aW9uIEltYWdlM0RTbGljZXMgSW1hZ2VBY2N1bXVsYXRlIEltYWdlQWRkIEltYWdlQWRqdXN0IEltYWdlQWxpZ24gSW1hZ2VBcHBseSBJbWFnZUFwcGx5SW5kZXhlZCBJbWFnZUFzcGVjdFJhdGlvIEltYWdlQXNzZW1ibGUgSW1hZ2VBdWdtZW50YXRpb25MYXllciBJbWFnZUJvdW5kaW5nQm94ZXMgSW1hZ2VDYWNoZSBJbWFnZUNhY2hlVmFsaWQgSW1hZ2VDYXB0dXJlIEltYWdlQ2FwdHVyZUZ1bmN0aW9uIEltYWdlQ2FzZXMgSW1hZ2VDaGFubmVscyBJbWFnZUNsaXAgSW1hZ2VDb2xsYWdlIEltYWdlQ29sb3JTcGFjZSBJbWFnZUNvbXBvc2UgSW1hZ2VDb250YWluc1EgSW1hZ2VDb250ZW50cyBJbWFnZUNvbnZvbHZlIEltYWdlQ29vY2N1cnJlbmNlIEltYWdlQ29ybmVycyBJbWFnZUNvcnJlbGF0ZSBJbWFnZUNvcnJlc3BvbmRpbmdQb2ludHMgSW1hZ2VDcm9wIEltYWdlRGF0YSBJbWFnZURlY29udm9sdmUgSW1hZ2VEZW1vc2FpYyBJbWFnZURpZmZlcmVuY2UgSW1hZ2VEaW1lbnNpb25zIEltYWdlRGlzcGxhY2VtZW50cyBJbWFnZURpc3RhbmNlIEltYWdlRWZmZWN0IEltYWdlRXhwb3N1cmVDb21iaW5lIEltYWdlRmVhdHVyZVRyYWNrIEltYWdlRmlsZUFwcGx5IEltYWdlRmlsZUZpbHRlciBJbWFnZUZpbGVTY2FuIEltYWdlRmlsdGVyIEltYWdlRm9jdXNDb21iaW5lIEltYWdlRm9yZXN0aW5nQ29tcG9uZW50cyBJbWFnZUZvcm1hdHRpbmdXaWR0aCBJbWFnZUZvcndhcmRUcmFuc2Zvcm1hdGlvbiBJbWFnZUdyYXBoaWNzIEltYWdlSGlzdG9ncmFtIEltYWdlSWRlbnRpZnkgSW1hZ2VJbnN0YW5jZVEgSW1hZ2VLZXlwb2ludHMgSW1hZ2VMZXZlbHMgSW1hZ2VMaW5lcyBJbWFnZU1hcmdpbnMgSW1hZ2VNYXJrZXIgSW1hZ2VNYXJrZXJzIEltYWdlTWVhc3VyZW1lbnRzIEltYWdlTWVzaCBJbWFnZU11bHRpcGx5IEltYWdlT2Zmc2V0IEltYWdlUGFkIEltYWdlUGFkZGluZyBJbWFnZVBhcnRpdGlvbiBJbWFnZVBlcmlvZG9ncmFtIEltYWdlUGVyc3BlY3RpdmVUcmFuc2Zvcm1hdGlvbiBJbWFnZVBvc2l0aW9uIEltYWdlUHJldmlld0Z1bmN0aW9uIEltYWdlUHlyYW1pZCBJbWFnZVB5cmFtaWRBcHBseSBJbWFnZVEgSW1hZ2VSYW5nZUNhY2hlIEltYWdlUmVjb2xvciBJbWFnZVJlZmxlY3QgSW1hZ2VSZWdpb24gSW1hZ2VSZXNpemUgSW1hZ2VSZXNvbHV0aW9uIEltYWdlUmVzdHlsZSBJbWFnZVJvdGF0ZSBJbWFnZVJvdGF0ZWQgSW1hZ2VTYWxpZW5jeUZpbHRlciBJbWFnZVNjYWxlZCBJbWFnZVNjYW4gSW1hZ2VTaXplIEltYWdlU2l6ZUFjdGlvbiBJbWFnZVNpemVDYWNoZSBJbWFnZVNpemVNdWx0aXBsaWVycyBJbWFnZVNpemVSYXcgSW1hZ2VTdWJ0cmFjdCBJbWFnZVRha2UgSW1hZ2VUcmFuc2Zvcm1hdGlvbiBJbWFnZVRyaW0gSW1hZ2VUeXBlIEltYWdlVmFsdWUgSW1hZ2VWYWx1ZVBvc2l0aW9ucyBJbWFnaW5nRGV2aWNlIEltcGxpY2l0UmVnaW9uIEltcGxpZXMgSW1wb3J0IEltcG9ydEF1dG9SZXBsYWNlbWVudHMgSW1wb3J0Qnl0ZUFycmF5IEltcG9ydE9wdGlvbnMgSW1wb3J0U3RyaW5nIEltcHJvdmVtZW50SW1wb3J0YW5jZSBJbiBJbmFjdGl2YXRlIEluYWN0aXZlIEluY2lkZW5jZUdyYXBoIEluY2lkZW5jZUxpc3QgSW5jaWRlbmNlTWF0cml4IEluY2x1ZGVBcm9tYXRpY0JvbmRzIEluY2x1ZGVDb25zdGFudEJhc2lzIEluY2x1ZGVEZWZpbml0aW9ucyBJbmNsdWRlRGlyZWN0b3JpZXMgSW5jbHVkZUZpbGVFeHRlbnNpb24gSW5jbHVkZUdlbmVyYXRvclRhc2tzIEluY2x1ZGVIeWRyb2dlbnMgSW5jbHVkZUluZmxlY3Rpb25zIEluY2x1ZGVNZXRhSW5mb3JtYXRpb24gSW5jbHVkZVBvZHMgSW5jbHVkZVF1YW50aXRpZXMgSW5jbHVkZVJlbGF0ZWRUYWJsZXMgSW5jbHVkZVNpbmd1bGFyVGVybSBJbmNsdWRlV2luZG93VGltZXMgSW5jcmVtZW50IEluZGVmaW5pdGVNYXRyaXhRIEluZGVudCBJbmRlbnRpbmdOZXdsaW5lU3BhY2luZ3MgSW5kZW50TWF4RnJhY3Rpb24gSW5kZXBlbmRlbmNlVGVzdCBJbmRlcGVuZGVudEVkZ2VTZXRRIEluZGVwZW5kZW50UGh5c2ljYWxRdWFudGl0eSBJbmRlcGVuZGVudFVuaXQgSW5kZXBlbmRlbnRVbml0RGltZW5zaW9uIEluZGVwZW5kZW50VmVydGV4U2V0USBJbmRldGVybWluYXRlIEluZGV0ZXJtaW5hdGVUaHJlc2hvbGQgSW5kZXhDcmVhdGlvbk9wdGlvbnMgSW5kZXhlZCBJbmRleEdyYXBoIEluZGV4VGFnIEluZXF1YWxpdHkgSW5leGFjdE51bWJlclEgSW5leGFjdE51bWJlcnMgSW5maW5pdGVMaW5lIEluZmluaXRlUGxhbmUgSW5maW5pdHkgSW5maXggSW5mbGF0aW9uQWRqdXN0IEluZmxhdGlvbk1ldGhvZCBJbmZvcm1hdGlvbiBJbmZvcm1hdGlvbkRhdGEgSW5mb3JtYXRpb25EYXRhR3JpZCBJbmhlcml0ZWQgSW5oZXJpdFNjb3BlIEluaG9tb2dlbmVvdXNQb2lzc29uUHJvY2VzcyBJbml0aWFsRXZhbHVhdGlvbkhpc3RvcnkgSW5pdGlhbGl6YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsIEluaXRpYWxpemF0aW9uQ2VsbEV2YWx1YXRpb24gSW5pdGlhbGl6YXRpb25DZWxsV2FybmluZyBJbml0aWFsaXphdGlvbk9iamVjdHMgSW5pdGlhbGl6YXRpb25WYWx1ZSBJbml0aWFsaXplIEluaXRpYWxTZWVkaW5nIElubGluZUNvdW50ZXJBc3NpZ25tZW50cyBJbmxpbmVDb3VudGVySW5jcmVtZW50cyBJbmxpbmVSdWxlcyBJbm5lciBJbm5lclBvbHlnb24gSW5uZXJQb2x5aGVkcm9uIElucGFpbnQgSW5wdXQgSW5wdXRBbGlhc2VzIElucHV0QXNzdW1wdGlvbnMgSW5wdXRBdXRvUmVwbGFjZW1lbnRzIElucHV0RmllbGQgSW5wdXRGaWVsZEJveCBJbnB1dEZpZWxkQm94T3B0aW9ucyBJbnB1dEZvcm0gSW5wdXRHcm91cGluZyBJbnB1dE5hbWVQYWNrZXQgSW5wdXROb3RlYm9vayBJbnB1dFBhY2tldCBJbnB1dFNldHRpbmdzIElucHV0U3RyZWFtIElucHV0U3RyaW5nIElucHV0U3RyaW5nUGFja2V0IElucHV0VG9Cb3hGb3JtUGFja2V0IEluc2VydCBJbnNlcnRpb25GdW5jdGlvbiBJbnNlcnRpb25Qb2ludE9iamVjdCBJbnNlcnRMaW5lYnJlYWtzIEluc2VydFJlc3VsdHMgSW5zZXQgSW5zZXQzREJveCBJbnNldDNEQm94T3B0aW9ucyBJbnNldEJveCBJbnNldEJveE9wdGlvbnMgSW5zcGhlcmUgSW5zdGFsbCBJbnN0YWxsU2VydmljZSBJbnN0YW5jZU5vcm1hbGl6YXRpb25MYXllciBJblN0cmluZyBJbnRlZ2VyIEludGVnZXJEaWdpdHMgSW50ZWdlckV4cG9uZW50IEludGVnZXJMZW5ndGggSW50ZWdlck5hbWUgSW50ZWdlclBhcnQgSW50ZWdlclBhcnRpdGlvbnMgSW50ZWdlclEgSW50ZWdlclJldmVyc2UgSW50ZWdlcnMgSW50ZWdlclN0cmluZyBJbnRlZ3JhbCBJbnRlZ3JhdGUgSW50ZXJhY3RpdmUgSW50ZXJhY3RpdmVUcmFkaW5nQ2hhcnQgSW50ZXJsYWNlZCBJbnRlcmxlYXZpbmcgSW50ZXJuYWxseUJhbGFuY2VkRGVjb21wb3NpdGlvbiBJbnRlcnBvbGF0aW5nRnVuY3Rpb24gSW50ZXJwb2xhdGluZ1BvbHlub21pYWwgSW50ZXJwb2xhdGlvbiBJbnRlcnBvbGF0aW9uT3JkZXIgSW50ZXJwb2xhdGlvblBvaW50cyBJbnRlcnBvbGF0aW9uUHJlY2lzaW9uIEludGVycHJldGF0aW9uIEludGVycHJldGF0aW9uQm94IEludGVycHJldGF0aW9uQm94T3B0aW9ucyBJbnRlcnByZXRhdGlvbkZ1bmN0aW9uIEludGVycHJldGVyIEludGVycHJldFRlbXBsYXRlIEludGVycXVhcnRpbGVSYW5nZSBJbnRlcnJ1cHQgSW50ZXJydXB0U2V0dGluZ3MgSW50ZXJzZWN0aW5nUSBJbnRlcnNlY3Rpb24gSW50ZXJ2YWwgSW50ZXJ2YWxJbnRlcnNlY3Rpb24gSW50ZXJ2YWxNYXJrZXJzIEludGVydmFsTWFya2Vyc1N0eWxlIEludGVydmFsTWVtYmVyUSBJbnRlcnZhbFNsaWRlciBJbnRlcnZhbFVuaW9uIEludG8gSW52ZXJzZSBJbnZlcnNlQmV0YVJlZ3VsYXJpemVkIEludmVyc2VDREYgSW52ZXJzZUNoaVNxdWFyZURpc3RyaWJ1dGlvbiBJbnZlcnNlQ29udGludW91c1dhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZURpc3RhbmNlVHJhbnNmb3JtIEludmVyc2VFbGxpcHRpY05vbWVRIEludmVyc2VFcmYgSW52ZXJzZUVyZmMgSW52ZXJzZUZvdXJpZXIgSW52ZXJzZUZvdXJpZXJDb3NUcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybSBJbnZlcnNlRm91cmllclNpblRyYW5zZm9ybSBJbnZlcnNlRm91cmllclRyYW5zZm9ybSBJbnZlcnNlRnVuY3Rpb24gSW52ZXJzZUZ1bmN0aW9ucyBJbnZlcnNlR2FtbWFEaXN0cmlidXRpb24gSW52ZXJzZUdhbW1hUmVndWxhcml6ZWQgSW52ZXJzZUdhdXNzaWFuRGlzdHJpYnV0aW9uIEludmVyc2VHdWRlcm1hbm5pYW4gSW52ZXJzZUhhbmtlbFRyYW5zZm9ybSBJbnZlcnNlSGF2ZXJzaW5lIEludmVyc2VJbWFnZVB5cmFtaWQgSW52ZXJzZUphY29iaUNEIEludmVyc2VKYWNvYmlDTiBJbnZlcnNlSmFjb2JpQ1MgSW52ZXJzZUphY29iaURDIEludmVyc2VKYWNvYmlETiBJbnZlcnNlSmFjb2JpRFMgSW52ZXJzZUphY29iaU5DIEludmVyc2VKYWNvYmlORCBJbnZlcnNlSmFjb2JpTlMgSW52ZXJzZUphY29iaVNDIEludmVyc2VKYWNvYmlTRCBJbnZlcnNlSmFjb2JpU04gSW52ZXJzZUxhcGxhY2VUcmFuc2Zvcm0gSW52ZXJzZU1lbGxpblRyYW5zZm9ybSBJbnZlcnNlUGVybXV0YXRpb24gSW52ZXJzZVJhZG9uIEludmVyc2VSYWRvblRyYW5zZm9ybSBJbnZlcnNlU2VyaWVzIEludmVyc2VTaG9ydFRpbWVGb3VyaWVyIEludmVyc2VTcGVjdHJvZ3JhbSBJbnZlcnNlU3Vydml2YWxGdW5jdGlvbiBJbnZlcnNlVHJhbnNmb3JtZWRSZWdpb24gSW52ZXJzZVdhdmVsZXRUcmFuc2Zvcm0gSW52ZXJzZVdlaWVyc3RyYXNzUCBJbnZlcnNlV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvbiBJbnZlcnNlWlRyYW5zZm9ybSBJbnZpc2libGUgSW52aXNpYmxlQXBwbGljYXRpb24gSW52aXNpYmxlVGltZXMgSVBBZGRyZXNzIElycmVkdWNpYmxlUG9seW5vbWlhbFEgSXNsYW5kRGF0YSBJc29sYXRpbmdJbnRlcnZhbCBJc29tb3JwaGljR3JhcGhRIElzb3RvcGVEYXRhIEl0YWxpYyBJdGVtIEl0ZW1Bc3BlY3RSYXRpbyBJdGVtQm94IEl0ZW1Cb3hPcHRpb25zIEl0ZW1TaXplIEl0ZW1TdHlsZSBJdG9Qcm9jZXNzJyArXG4gICAgICAnSmFjY2FyZERpc3NpbWlsYXJpdHkgSmFjb2JpQW1wbGl0dWRlIEphY29iaWFuIEphY29iaUNEIEphY29iaUNOIEphY29iaUNTIEphY29iaURDIEphY29iaUROIEphY29iaURTIEphY29iaU5DIEphY29iaU5EIEphY29iaU5TIEphY29iaVAgSmFjb2JpU0MgSmFjb2JpU0QgSmFjb2JpU04gSmFjb2JpU3ltYm9sIEphY29iaVpldGEgSmFua29Hcm91cEoxIEphbmtvR3JvdXBKMiBKYW5rb0dyb3VwSjMgSmFua29Hcm91cEo0IEphcnF1ZUJlcmFBTE1UZXN0IEpvaG5zb25EaXN0cmlidXRpb24gSm9pbiBKb2luQWNyb3NzIEpvaW5lZCBKb2luZWRDdXJ2ZSBKb2luZWRDdXJ2ZUJveCBKb2luZWRDdXJ2ZUJveE9wdGlvbnMgSm9pbkZvcm0gSm9yZGFuRGVjb21wb3NpdGlvbiBKb3JkYW5Nb2RlbERlY29tcG9zaXRpb24gSnVsaWFuRGF0ZSBKdWxpYVNldEJvZXR0Y2hlciBKdWxpYVNldEl0ZXJhdGlvbkNvdW50IEp1bGlhU2V0UGxvdCBKdWxpYVNldFBvaW50cycgK1xuICAgICAgJ0sgS2FnaUNoYXJ0IEthaXNlckJlc3NlbFdpbmRvdyBLYWlzZXJXaW5kb3cgS2FsbWFuRXN0aW1hdG9yIEthbG1hbkZpbHRlciBLYXJodW5lbkxvZXZlRGVjb21wb3NpdGlvbiBLYXJ5VHJlZSBLYXR6Q2VudHJhbGl0eSBLQ29yZUNvbXBvbmVudHMgS0Rpc3RyaWJ1dGlvbiBLRWRnZUNvbm5lY3RlZENvbXBvbmVudHMgS0VkZ2VDb25uZWN0ZWRHcmFwaFEgS2VsdmluQmVpIEtlbHZpbkJlciBLZWx2aW5LZWkgS2VsdmluS2VyIEtlbmRhbGxUYXUgS2VuZGFsbFRhdVRlc3QgS2VybmVsRXhlY3V0ZSBLZXJuZWxGdW5jdGlvbiBLZXJuZWxNaXh0dXJlRGlzdHJpYnV0aW9uIEtlcm5lbHMgS2V0IEtleSBLZXlDb2xsaXNpb25GdW5jdGlvbiBLZXlDb21wbGVtZW50IEtleURyb3AgS2V5RHJvcEZyb20gS2V5RXhpc3RzUSBLZXlGcmVlUSBLZXlJbnRlcnNlY3Rpb24gS2V5TWFwIEtleU1lbWJlclEgS2V5cG9pbnRTdHJlbmd0aCBLZXlzIEtleVNlbGVjdCBLZXlTb3J0IEtleVNvcnRCeSBLZXlUYWtlIEtleVVuaW9uIEtleVZhbHVlTWFwIEtleVZhbHVlUGF0dGVybiBLaGluY2hpbiBLaWxsUHJvY2VzcyBLaXJjaGhvZmZHcmFwaCBLaXJjaGhvZmZNYXRyaXggS2xlaW5JbnZhcmlhbnRKIEtuYXBzYWNrU29sdmUgS25pZ2h0VG91ckdyYXBoIEtub3REYXRhIEtub3duVW5pdFEgS29jaEN1cnZlIEtvbG1vZ29yb3ZTbWlybm92VGVzdCBLcm9uZWNrZXJEZWx0YSBLcm9uZWNrZXJNb2RlbERlY29tcG9zaXRpb24gS3JvbmVja2VyUHJvZHVjdCBLcm9uZWNrZXJTeW1ib2wgS3VpcGVyVGVzdCBLdW1hcmFzd2FteURpc3RyaWJ1dGlvbiBLdXJ0b3NpcyBLdXdhaGFyYUZpbHRlciBLVmVydGV4Q29ubmVjdGVkQ29tcG9uZW50cyBLVmVydGV4Q29ubmVjdGVkR3JhcGhRJyArXG4gICAgICAnTEFCQ29sb3IgTGFiZWwgTGFiZWxlZCBMYWJlbGVkU2xpZGVyIExhYmVsaW5nRnVuY3Rpb24gTGFiZWxpbmdTaXplIExhYmVsU3R5bGUgTGFiZWxWaXNpYmlsaXR5IExhZ3VlcnJlTCBMYWtlRGF0YSBMYW1iZGFDb21wb25lbnRzIExhbWJlcnRXIExhbWluYURhdGEgTGFuY3pvc1dpbmRvdyBMYW5kYXVEaXN0cmlidXRpb24gTGFuZ3VhZ2UgTGFuZ3VhZ2VDYXRlZ29yeSBMYW5ndWFnZURhdGEgTGFuZ3VhZ2VJZGVudGlmeSBMYW5ndWFnZU9wdGlvbnMgTGFwbGFjZURpc3RyaWJ1dGlvbiBMYXBsYWNlVHJhbnNmb3JtIExhcGxhY2lhbiBMYXBsYWNpYW5GaWx0ZXIgTGFwbGFjaWFuR2F1c3NpYW5GaWx0ZXIgTGFyZ2UgTGFyZ2VyIExhc3QgTGF0aXR1ZGUgTGF0aXR1ZGVMb25naXR1ZGUgTGF0dGljZURhdGEgTGF0dGljZVJlZHVjZSBMYXVuY2ggTGF1bmNoS2VybmVscyBMYXllcmVkR3JhcGhQbG90IExheWVyU2l6ZUZ1bmN0aW9uIExheW91dEluZm9ybWF0aW9uIExDSENvbG9yIExDTSBMZWFkZXJTaXplIExlYWZDb3VudCBMZWFwWWVhclEgTGVhcm5EaXN0cmlidXRpb24gTGVhcm5lZERpc3RyaWJ1dGlvbiBMZWFybmluZ1JhdGUgTGVhcm5pbmdSYXRlTXVsdGlwbGllcnMgTGVhc3RTcXVhcmVzIExlYXN0U3F1YXJlc0ZpbHRlcktlcm5lbCBMZWZ0IExlZnRBcnJvdyBMZWZ0QXJyb3dCYXIgTGVmdEFycm93UmlnaHRBcnJvdyBMZWZ0RG93blRlZVZlY3RvciBMZWZ0RG93blZlY3RvciBMZWZ0RG93blZlY3RvckJhciBMZWZ0UmlnaHRBcnJvdyBMZWZ0UmlnaHRWZWN0b3IgTGVmdFRlZSBMZWZ0VGVlQXJyb3cgTGVmdFRlZVZlY3RvciBMZWZ0VHJpYW5nbGUgTGVmdFRyaWFuZ2xlQmFyIExlZnRUcmlhbmdsZUVxdWFsIExlZnRVcERvd25WZWN0b3IgTGVmdFVwVGVlVmVjdG9yIExlZnRVcFZlY3RvciBMZWZ0VXBWZWN0b3JCYXIgTGVmdFZlY3RvciBMZWZ0VmVjdG9yQmFyIExlZ2VuZEFwcGVhcmFuY2UgTGVnZW5kZWQgTGVnZW5kRnVuY3Rpb24gTGVnZW5kTGFiZWwgTGVnZW5kTGF5b3V0IExlZ2VuZE1hcmdpbnMgTGVnZW5kTWFya2VycyBMZWdlbmRNYXJrZXJTaXplIExlZ2VuZHJlUCBMZWdlbmRyZVEgTGVnZW5kcmVUeXBlIExlbmd0aCBMZW5ndGhXaGlsZSBMZXJjaFBoaSBMZXNzIExlc3NFcXVhbCBMZXNzRXF1YWxHcmVhdGVyIExlc3NFcXVhbFRoYW4gTGVzc0Z1bGxFcXVhbCBMZXNzR3JlYXRlciBMZXNzTGVzcyBMZXNzU2xhbnRFcXVhbCBMZXNzVGhhbiBMZXNzVGlsZGUgTGV0dGVyQ2hhcmFjdGVyIExldHRlckNvdW50cyBMZXR0ZXJOdW1iZXIgTGV0dGVyUSBMZXZlbCBMZXZlbmVUZXN0IExldmlDaXZpdGFUZW5zb3IgTGV2eURpc3RyaWJ1dGlvbiBMZXhpY29ncmFwaGljIExpYnJhcnlEYXRhVHlwZSBMaWJyYXJ5RnVuY3Rpb24gTGlicmFyeUZ1bmN0aW9uRXJyb3IgTGlicmFyeUZ1bmN0aW9uSW5mb3JtYXRpb24gTGlicmFyeUZ1bmN0aW9uTG9hZCBMaWJyYXJ5RnVuY3Rpb25VbmxvYWQgTGlicmFyeUxvYWQgTGlicmFyeVVubG9hZCBMaWNlbnNlSUQgTGlmdGluZ0ZpbHRlckRhdGEgTGlmdGluZ1dhdmVsZXRUcmFuc2Zvcm0gTGlnaHRCbHVlIExpZ2h0QnJvd24gTGlnaHRDeWFuIExpZ2h0ZXIgTGlnaHRHcmF5IExpZ2h0R3JlZW4gTGlnaHRpbmcgTGlnaHRpbmdBbmdsZSBMaWdodE1hZ2VudGEgTGlnaHRPcmFuZ2UgTGlnaHRQaW5rIExpZ2h0UHVycGxlIExpZ2h0UmVkIExpZ2h0U291cmNlcyBMaWdodFllbGxvdyBMaWtlbGlob29kIExpbWl0IExpbWl0c1Bvc2l0aW9uaW5nIExpbWl0c1Bvc2l0aW9uaW5nVG9rZW5zIExpbmRsZXlEaXN0cmlidXRpb24gTGluZSBMaW5lM0RCb3ggTGluZTNEQm94T3B0aW9ucyBMaW5lYXJGaWx0ZXIgTGluZWFyRnJhY3Rpb25hbE9wdGltaXphdGlvbiBMaW5lYXJGcmFjdGlvbmFsVHJhbnNmb3JtIExpbmVhckdyYWRpZW50SW1hZ2UgTGluZWFyaXppbmdUcmFuc2Zvcm1hdGlvbkRhdGEgTGluZWFyTGF5ZXIgTGluZWFyTW9kZWxGaXQgTGluZWFyT2Zmc2V0RnVuY3Rpb24gTGluZWFyT3B0aW1pemF0aW9uIExpbmVhclByb2dyYW1taW5nIExpbmVhclJlY3VycmVuY2UgTGluZWFyU29sdmUgTGluZWFyU29sdmVGdW5jdGlvbiBMaW5lQm94IExpbmVCb3hPcHRpb25zIExpbmVCcmVhayBMaW5lYnJlYWtBZGp1c3RtZW50cyBMaW5lQnJlYWtDaGFydCBMaW5lYnJlYWtTZW1pY29sb25XZWlnaHRpbmcgTGluZUJyZWFrV2l0aGluIExpbmVDb2xvciBMaW5lR3JhcGggTGluZUluZGVudCBMaW5lSW5kZW50TWF4RnJhY3Rpb24gTGluZUludGVncmFsQ29udm9sdXRpb25QbG90IExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uU2NhbGUgTGluZUxlZ2VuZCBMaW5lT3BhY2l0eSBMaW5lU3BhY2luZyBMaW5lV3JhcFBhcnRzIExpbmtBY3RpdmF0ZSBMaW5rQ2xvc2UgTGlua0Nvbm5lY3QgTGlua0Nvbm5lY3RlZFEgTGlua0NyZWF0ZSBMaW5rRXJyb3IgTGlua0ZsdXNoIExpbmtGdW5jdGlvbiBMaW5rSG9zdCBMaW5rSW50ZXJydXB0IExpbmtMYXVuY2ggTGlua01vZGUgTGlua09iamVjdCBMaW5rT3BlbiBMaW5rT3B0aW9ucyBMaW5rUGF0dGVybnMgTGlua1Byb3RvY29sIExpbmtSYW5rQ2VudHJhbGl0eSBMaW5rUmVhZCBMaW5rUmVhZEhlbGQgTGlua1JlYWR5USBMaW5rcyBMaW5rU2VydmljZSBMaW5rV3JpdGUgTGlua1dyaXRlSGVsZCBMaW91dmlsbGVMYW1iZGEgTGlzdCBMaXN0YWJsZSBMaXN0QW5pbWF0ZSBMaXN0Q29udG91clBsb3QgTGlzdENvbnRvdXJQbG90M0QgTGlzdENvbnZvbHZlIExpc3RDb3JyZWxhdGUgTGlzdEN1cnZlUGF0aFBsb3QgTGlzdERlY29udm9sdmUgTGlzdERlbnNpdHlQbG90IExpc3REZW5zaXR5UGxvdDNEIExpc3RlbiBMaXN0Rm9ybWF0IExpc3RGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gTGlzdEludGVycG9sYXRpb24gTGlzdExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uUGxvdCBMaXN0TGluZVBsb3QgTGlzdExvZ0xpbmVhclBsb3QgTGlzdExvZ0xvZ1Bsb3QgTGlzdExvZ1Bsb3QgTGlzdFBpY2tlciBMaXN0UGlja2VyQm94IExpc3RQaWNrZXJCb3hCYWNrZ3JvdW5kIExpc3RQaWNrZXJCb3hPcHRpb25zIExpc3RQbGF5IExpc3RQbG90IExpc3RQbG90M0QgTGlzdFBvaW50UGxvdDNEIExpc3RQb2xhclBsb3QgTGlzdFEgTGlzdFNsaWNlQ29udG91clBsb3QzRCBMaXN0U2xpY2VEZW5zaXR5UGxvdDNEIExpc3RTbGljZVZlY3RvclBsb3QzRCBMaXN0U3RlcFBsb3QgTGlzdFN0cmVhbURlbnNpdHlQbG90IExpc3RTdHJlYW1QbG90IExpc3RTdXJmYWNlUGxvdDNEIExpc3RWZWN0b3JEZW5zaXR5UGxvdCBMaXN0VmVjdG9yUGxvdCBMaXN0VmVjdG9yUGxvdDNEIExpc3RaVHJhbnNmb3JtIExpdGVyYWwgTGl0ZXJhbFNlYXJjaCBMb2NhbEFkYXB0aXZlQmluYXJpemUgTG9jYWxDYWNoZSBMb2NhbENsdXN0ZXJpbmdDb2VmZmljaWVudCBMb2NhbGl6ZURlZmluaXRpb25zIExvY2FsaXplVmFyaWFibGVzIExvY2FsT2JqZWN0IExvY2FsT2JqZWN0cyBMb2NhbFJlc3BvbnNlTm9ybWFsaXphdGlvbkxheWVyIExvY2FsU3VibWl0IExvY2FsU3ltYm9sIExvY2FsVGltZSBMb2NhbFRpbWVab25lIExvY2F0aW9uRXF1aXZhbGVuY2VUZXN0IExvY2F0aW9uVGVzdCBMb2NhdG9yIExvY2F0b3JBdXRvQ3JlYXRlIExvY2F0b3JCb3ggTG9jYXRvckJveE9wdGlvbnMgTG9jYXRvckNlbnRlcmluZyBMb2NhdG9yUGFuZSBMb2NhdG9yUGFuZUJveCBMb2NhdG9yUGFuZUJveE9wdGlvbnMgTG9jYXRvclJlZ2lvbiBMb2NrZWQgTG9nIExvZzEwIExvZzIgTG9nQmFybmVzRyBMb2dHYW1tYSBMb2dHYW1tYURpc3RyaWJ1dGlvbiBMb2dpY2FsRXhwYW5kIExvZ0ludGVncmFsIExvZ2lzdGljRGlzdHJpYnV0aW9uIExvZ2lzdGljU2lnbW9pZCBMb2dpdE1vZGVsRml0IExvZ0xpa2VsaWhvb2QgTG9nTGluZWFyUGxvdCBMb2dMb2dpc3RpY0Rpc3RyaWJ1dGlvbiBMb2dMb2dQbG90IExvZ011bHRpbm9ybWFsRGlzdHJpYnV0aW9uIExvZ05vcm1hbERpc3RyaWJ1dGlvbiBMb2dQbG90IExvZ1JhbmtUZXN0IExvZ1Nlcmllc0Rpc3RyaWJ1dGlvbiBMb25nRXF1YWwgTG9uZ2VzdCBMb25nZXN0Q29tbW9uU2VxdWVuY2UgTG9uZ2VzdENvbW1vblNlcXVlbmNlUG9zaXRpb25zIExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2VQb3NpdGlvbnMgTG9uZ2VzdE1hdGNoIExvbmdlc3RPcmRlcmVkU2VxdWVuY2UgTG9uZ0Zvcm0gTG9uZ2l0dWRlIExvbmdMZWZ0QXJyb3cgTG9uZ0xlZnRSaWdodEFycm93IExvbmdSaWdodEFycm93IExvbmdTaG9ydFRlcm1NZW1vcnlMYXllciBMb29rdXAgTG9vcGJhY2sgTG9vcEZyZWVHcmFwaFEgTG9zc0Z1bmN0aW9uIExvd2VyQ2FzZVEgTG93ZXJMZWZ0QXJyb3cgTG93ZXJSaWdodEFycm93IExvd2VyVHJpYW5ndWxhcml6ZSBMb3dlclRyaWFuZ3VsYXJNYXRyaXhRIExvd3Bhc3NGaWx0ZXIgTFFFc3RpbWF0b3JHYWlucyBMUUdSZWd1bGF0b3IgTFFPdXRwdXRSZWd1bGF0b3JHYWlucyBMUVJlZ3VsYXRvckdhaW5zIExVQmFja1N1YnN0aXR1dGlvbiBMdWNhc0wgTHVjY2lvU2FtaUNvbXBvbmVudHMgTFVEZWNvbXBvc2l0aW9uIEx1bmFyRWNsaXBzZSBMVVZDb2xvciBMeWFwdW5vdlNvbHZlIEx5b25zR3JvdXBMeScgK1xuICAgICAgJ01hY2hpbmVJRCBNYWNoaW5lTmFtZSBNYWNoaW5lTnVtYmVyUSBNYWNoaW5lUHJlY2lzaW9uIE1hY2ludG9zaFN5c3RlbVBhZ2VTZXR1cCBNYWdlbnRhIE1hZ25pZmljYXRpb24gTWFnbmlmeSBNYWlsQWRkcmVzc1ZhbGlkYXRpb24gTWFpbEV4ZWN1dGUgTWFpbEZvbGRlciBNYWlsSXRlbSBNYWlsUmVjZWl2ZXJGdW5jdGlvbiBNYWlsUmVzcG9uc2VGdW5jdGlvbiBNYWlsU2VhcmNoIE1haWxTZXJ2ZXJDb25uZWN0IE1haWxTZXJ2ZXJDb25uZWN0aW9uIE1haWxTZXR0aW5ncyBNYWluU29sdmUgTWFpbnRhaW5EeW5hbWljQ2FjaGVzIE1ham9yaXR5IE1ha2VCb3hlcyBNYWtlRXhwcmVzc2lvbiBNYWtlUnVsZXMgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uSUQgTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uUSBNYW5kZWxicm90U2V0Qm9ldHRjaGVyIE1hbmRlbGJyb3RTZXREaXN0YW5jZSBNYW5kZWxicm90U2V0SXRlcmF0aW9uQ291bnQgTWFuZGVsYnJvdFNldE1lbWJlclEgTWFuZGVsYnJvdFNldFBsb3QgTWFuZ29sZHRMYW1iZGEgTWFuaGF0dGFuRGlzdGFuY2UgTWFuaXB1bGF0ZSBNYW5pcHVsYXRvciBNYW5uZWRTcGFjZU1pc3Npb25EYXRhIE1hbm5XaGl0bmV5VGVzdCBNYW50aXNzYUV4cG9uZW50IE1hbnVhbCBNYXAgTWFwQWxsIE1hcEF0IE1hcEluZGV4ZWQgTUFQcm9jZXNzIE1hcFRocmVhZCBNYXJjaGVua29QYXN0dXJEaXN0cmlidXRpb24gTWFyY3VtUSBNYXJkaWFDb21iaW5lZFRlc3QgTWFyZGlhS3VydG9zaXNUZXN0IE1hcmRpYVNrZXduZXNzVGVzdCBNYXJnaW5hbERpc3RyaWJ1dGlvbiBNYXJrb3ZQcm9jZXNzUHJvcGVydGllcyBNYXNraW5nIE1hdGNoaW5nRGlzc2ltaWxhcml0eSBNYXRjaExvY2FsTmFtZVEgTWF0Y2hMb2NhbE5hbWVzIE1hdGNoUSBNYXRlcmlhbCBNYXRoZW1hdGljYWxGdW5jdGlvbkRhdGEgTWF0aGVtYXRpY2FOb3RhdGlvbiBNYXRoaWV1QyBNYXRoaWV1Q2hhcmFjdGVyaXN0aWNBIE1hdGhpZXVDaGFyYWN0ZXJpc3RpY0IgTWF0aGlldUNoYXJhY3RlcmlzdGljRXhwb25lbnQgTWF0aGlldUNQcmltZSBNYXRoaWV1R3JvdXBNMTEgTWF0aGlldUdyb3VwTTEyIE1hdGhpZXVHcm91cE0yMiBNYXRoaWV1R3JvdXBNMjMgTWF0aGlldUdyb3VwTTI0IE1hdGhpZXVTIE1hdGhpZXVTUHJpbWUgTWF0aE1MRm9ybSBNYXRoTUxUZXh0IE1hdHJpY2VzIE1hdHJpeEV4cCBNYXRyaXhGb3JtIE1hdHJpeEZ1bmN0aW9uIE1hdHJpeExvZyBNYXRyaXhOb3JtYWxEaXN0cmlidXRpb24gTWF0cml4UGxvdCBNYXRyaXhQb3dlciBNYXRyaXhQcm9wZXJ0eURpc3RyaWJ1dGlvbiBNYXRyaXhRIE1hdHJpeFJhbmsgTWF0cml4VERpc3RyaWJ1dGlvbiBNYXggTWF4QmVuZCBNYXhDZWxsTWVhc3VyZSBNYXhDb2xvckRpc3RhbmNlIE1heERldGVjdCBNYXhEdXJhdGlvbiBNYXhFeHRyYUJhbmR3aWR0aHMgTWF4RXh0cmFDb25kaXRpb25zIE1heEZlYXR1cmVEaXNwbGFjZW1lbnQgTWF4RmVhdHVyZXMgTWF4RmlsdGVyIE1heGltYWxCeSBNYXhpbWl6ZSBNYXhJdGVtcyBNYXhJdGVyYXRpb25zIE1heExpbWl0IE1heE1lbW9yeVVzZWQgTWF4TWl4dHVyZUtlcm5lbHMgTWF4T3ZlcmxhcEZyYWN0aW9uIE1heFBsb3RQb2ludHMgTWF4UG9pbnRzIE1heFJlY3Vyc2lvbiBNYXhTdGFibGVEaXN0cmlidXRpb24gTWF4U3RlcEZyYWN0aW9uIE1heFN0ZXBzIE1heFN0ZXBTaXplIE1heFRyYWluaW5nUm91bmRzIE1heFZhbHVlIE1heHdlbGxEaXN0cmlidXRpb24gTWF4V29yZEdhcCBNY0xhdWdobGluR3JvdXBNY0wgTWVhbiBNZWFuQWJzb2x1dGVMb3NzTGF5ZXIgTWVhbkFyb3VuZCBNZWFuQ2x1c3RlcmluZ0NvZWZmaWNpZW50IE1lYW5EZWdyZWVDb25uZWN0aXZpdHkgTWVhbkRldmlhdGlvbiBNZWFuRmlsdGVyIE1lYW5HcmFwaERpc3RhbmNlIE1lYW5OZWlnaGJvckRlZ3JlZSBNZWFuU2hpZnQgTWVhblNoaWZ0RmlsdGVyIE1lYW5TcXVhcmVkTG9zc0xheWVyIE1lZGlhbiBNZWRpYW5EZXZpYXRpb24gTWVkaWFuRmlsdGVyIE1lZGljYWxUZXN0RGF0YSBNZWRpdW0gTWVpamVyRyBNZWlqZXJHUmVkdWNlIE1laXhuZXJEaXN0cmlidXRpb24gTWVsbGluQ29udm9sdmUgTWVsbGluVHJhbnNmb3JtIE1lbWJlclEgTWVtb3J5QXZhaWxhYmxlIE1lbW9yeUNvbnN0cmFpbmVkIE1lbW9yeUNvbnN0cmFpbnQgTWVtb3J5SW5Vc2UgTWVuZ2VyTWVzaCBNZW51IE1lbnVBcHBlYXJhbmNlIE1lbnVDb21tYW5kS2V5IE1lbnVFdmFsdWF0b3IgTWVudUl0ZW0gTWVudUxpc3QgTWVudVBhY2tldCBNZW51U29ydGluZ1ZhbHVlIE1lbnVTdHlsZSBNZW51VmlldyBNZXJnZSBNZXJnZURpZmZlcmVuY2VzIE1lcmdpbmdGdW5jdGlvbiBNZXJzZW5uZVByaW1lRXhwb25lbnQgTWVyc2VubmVQcmltZUV4cG9uZW50USBNZXNoIE1lc2hDZWxsQ2VudHJvaWQgTWVzaENlbGxDb3VudCBNZXNoQ2VsbEhpZ2hsaWdodCBNZXNoQ2VsbEluZGV4IE1lc2hDZWxsTGFiZWwgTWVzaENlbGxNYXJrZXIgTWVzaENlbGxNZWFzdXJlIE1lc2hDZWxsUXVhbGl0eSBNZXNoQ2VsbHMgTWVzaENlbGxTaGFwZUZ1bmN0aW9uIE1lc2hDZWxsU3R5bGUgTWVzaENvb3JkaW5hdGVzIE1lc2hGdW5jdGlvbnMgTWVzaFByaW1pdGl2ZXMgTWVzaFF1YWxpdHlHb2FsIE1lc2hSYW5nZSBNZXNoUmVmaW5lbWVudEZ1bmN0aW9uIE1lc2hSZWdpb24gTWVzaFJlZ2lvblEgTWVzaFNoYWRpbmcgTWVzaFN0eWxlIE1lc3NhZ2UgTWVzc2FnZURpYWxvZyBNZXNzYWdlTGlzdCBNZXNzYWdlTmFtZSBNZXNzYWdlT2JqZWN0IE1lc3NhZ2VPcHRpb25zIE1lc3NhZ2VQYWNrZXQgTWVzc2FnZXMgTWVzc2FnZXNOb3RlYm9vayBNZXRhQ2hhcmFjdGVycyBNZXRhSW5mb3JtYXRpb24gTWV0ZW9yU2hvd2VyRGF0YSBNZXRob2QgTWV0aG9kT3B0aW9ucyBNZXhpY2FuSGF0V2F2ZWxldCBNZXllcldhdmVsZXQgTWlkcG9pbnQgTWluIE1pbkNvbG9yRGlzdGFuY2UgTWluRGV0ZWN0IE1pbmVyYWxEYXRhIE1pbkZpbHRlciBNaW5pbWFsQnkgTWluaW1hbFBvbHlub21pYWwgTWluaW1hbFN0YXRlU3BhY2VNb2RlbCBNaW5pbWl6ZSBNaW5pbXVtVGltZUluY3JlbWVudCBNaW5JbnRlcnZhbFNpemUgTWlua293c2tpUXVlc3Rpb25NYXJrIE1pbkxpbWl0IE1pbk1heCBNaW5vclBsYW5ldERhdGEgTWlub3JzIE1pblJlY3Vyc2lvbiBNaW5TaXplIE1pblN0YWJsZURpc3RyaWJ1dGlvbiBNaW51cyBNaW51c1BsdXMgTWluVmFsdWUgTWlzc2luZyBNaXNzaW5nQmVoYXZpb3IgTWlzc2luZ0RhdGFNZXRob2QgTWlzc2luZ0RhdGFSdWxlcyBNaXNzaW5nUSBNaXNzaW5nU3RyaW5nIE1pc3NpbmdTdHlsZSBNaXNzaW5nVmFsdWVQYXR0ZXJuIE1pdHRhZ0xlZmZsZXJFIE1peGVkRnJhY3Rpb25QYXJ0cyBNaXhlZEdyYXBoUSBNaXhlZE1hZ25pdHVkZSBNaXhlZFJhZGl4IE1peGVkUmFkaXhRdWFudGl0eSBNaXhlZFVuaXQgTWl4dHVyZURpc3RyaWJ1dGlvbiBNb2QgTW9kYWwgTW9kZSBNb2R1bGFyIE1vZHVsYXJJbnZlcnNlIE1vZHVsYXJMYW1iZGEgTW9kdWxlIE1vZHVsdXMgTW9lYml1c011IE1vbGVjdWxlIE1vbGVjdWxlQ29udGFpbnNRIE1vbGVjdWxlRXF1aXZhbGVudFEgTW9sZWN1bGVHcmFwaCBNb2xlY3VsZU1vZGlmeSBNb2xlY3VsZVBhdHRlcm4gTW9sZWN1bGVQbG90IE1vbGVjdWxlUGxvdDNEIE1vbGVjdWxlUHJvcGVydHkgTW9sZWN1bGVRIE1vbGVjdWxlVmFsdWUgTW9tZW50IE1vbWVudGFyeSBNb21lbnRDb252ZXJ0IE1vbWVudEV2YWx1YXRlIE1vbWVudEdlbmVyYXRpbmdGdW5jdGlvbiBNb21lbnRPZkluZXJ0aWEgTW9uZGF5IE1vbml0b3IgTW9ub21pYWxMaXN0IE1vbm9taWFsT3JkZXIgTW9uc3Rlckdyb3VwTSBNb29uUGhhc2UgTW9vblBvc2l0aW9uIE1vcmxldFdhdmVsZXQgTW9ycGhvbG9naWNhbEJpbmFyaXplIE1vcnBob2xvZ2ljYWxCcmFuY2hQb2ludHMgTW9ycGhvbG9naWNhbENvbXBvbmVudHMgTW9ycGhvbG9naWNhbEV1bGVyTnVtYmVyIE1vcnBob2xvZ2ljYWxHcmFwaCBNb3JwaG9sb2dpY2FsUGVyaW1ldGVyIE1vcnBob2xvZ2ljYWxUcmFuc2Zvcm0gTW9ydGFsaXR5RGF0YSBNb3N0IE1vdW50YWluRGF0YSBNb3VzZUFubm90YXRpb24gTW91c2VBcHBlYXJhbmNlIE1vdXNlQXBwZWFyYW5jZVRhZyBNb3VzZUJ1dHRvbnMgTW91c2VvdmVyIE1vdXNlUG9pbnRlck5vdGUgTW91c2VQb3NpdGlvbiBNb3ZpZURhdGEgTW92aW5nQXZlcmFnZSBNb3ZpbmdNYXAgTW92aW5nTWVkaWFuIE1veWFsRGlzdHJpYnV0aW9uIE11bHRpY29sdW1uIE11bHRpZWRnZVN0eWxlIE11bHRpZ3JhcGhRIE11bHRpbGF1bmNoV2FybmluZyBNdWx0aUxldHRlckl0YWxpY3MgTXVsdGlMZXR0ZXJTdHlsZSBNdWx0aWxpbmVGdW5jdGlvbiBNdWx0aW5vbWlhbCBNdWx0aW5vbWlhbERpc3RyaWJ1dGlvbiBNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBNdWx0aXBsaWNhdGl2ZU9yZGVyIE11bHRpcGxpY2l0eSBNdWx0aXBseVNpZGVzIE11bHRpc2VsZWN0aW9uIE11bHRpdmFyaWF0ZUh5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIE11bHRpdmFyaWF0ZVBvaXNzb25EaXN0cmlidXRpb24gTXVsdGl2YXJpYXRlVERpc3RyaWJ1dGlvbicgK1xuICAgICAgJ04gTmFrYWdhbWlEaXN0cmlidXRpb24gTmFtZVEgTmFtZXMgTmFtZXNwYWNlQm94IE5hbWVzcGFjZUJveE9wdGlvbnMgTmFuZCBOQXJnTWF4IE5BcmdNaW4gTkJlcm5vdWxsaUIgTkJvZHlTaW11bGF0aW9uIE5Cb2R5U2ltdWxhdGlvbkRhdGEgTkNhY2hlIE5ERWlnZW5zeXN0ZW0gTkRFaWdlbnZhbHVlcyBORFNvbHZlIE5EU29sdmVWYWx1ZSBOZWFyZXN0IE5lYXJlc3RGdW5jdGlvbiBOZWFyZXN0TmVpZ2hib3JHcmFwaCBOZWFyZXN0VG8gTmVidWxhRGF0YSBOZWVkQ3VycmVudEZyb250RW5kUGFja2FnZVBhY2tldCBOZWVkQ3VycmVudEZyb250RW5kU3ltYm9sc1BhY2tldCBOZWVkbGVtYW5XdW5zY2hTaW1pbGFyaXR5IE5lZWRzIE5lZ2F0aXZlIE5lZ2F0aXZlQmlub21pYWxEaXN0cmlidXRpb24gTmVnYXRpdmVEZWZpbml0ZU1hdHJpeFEgTmVnYXRpdmVJbnRlZ2VycyBOZWdhdGl2ZU11bHRpbm9taWFsRGlzdHJpYnV0aW9uIE5lZ2F0aXZlUmF0aW9uYWxzIE5lZ2F0aXZlUmVhbHMgTmVnYXRpdmVTZW1pZGVmaW5pdGVNYXRyaXhRIE5laWdoYm9yaG9vZERhdGEgTmVpZ2hib3Job29kR3JhcGggTmVzdCBOZXN0ZWRHcmVhdGVyR3JlYXRlciBOZXN0ZWRMZXNzTGVzcyBOZXN0ZWRTY3JpcHRSdWxlcyBOZXN0R3JhcGggTmVzdExpc3QgTmVzdFdoaWxlIE5lc3RXaGlsZUxpc3QgTmV0QXBwZW5kIE5ldEJpZGlyZWN0aW9uYWxPcGVyYXRvciBOZXRDaGFpbiBOZXREZWNvZGVyIE5ldERlbGV0ZSBOZXREcm9wIE5ldEVuY29kZXIgTmV0RXZhbHVhdGlvbk1vZGUgTmV0RXh0cmFjdCBOZXRGbGF0dGVuIE5ldEZvbGRPcGVyYXRvciBOZXRHcmFwaCBOZXRJbmZvcm1hdGlvbiBOZXRJbml0aWFsaXplIE5ldEluc2VydCBOZXRJbnNlcnRTaGFyZWRBcnJheXMgTmV0Sm9pbiBOZXRNYXBPcGVyYXRvciBOZXRNYXBUaHJlYWRPcGVyYXRvciBOZXRNZWFzdXJlbWVudHMgTmV0TW9kZWwgTmV0TmVzdE9wZXJhdG9yIE5ldFBhaXJFbWJlZGRpbmdPcGVyYXRvciBOZXRQb3J0IE5ldFBvcnRHcmFkaWVudCBOZXRQcmVwZW5kIE5ldFJlbmFtZSBOZXRSZXBsYWNlIE5ldFJlcGxhY2VQYXJ0IE5ldFNoYXJlZEFycmF5IE5ldFN0YXRlT2JqZWN0IE5ldFRha2UgTmV0VHJhaW4gTmV0VHJhaW5SZXN1bHRzT2JqZWN0IE5ldHdvcmtQYWNrZXRDYXB0dXJlIE5ldHdvcmtQYWNrZXRSZWNvcmRpbmcgTmV0d29ya1BhY2tldFJlY29yZGluZ0R1cmluZyBOZXR3b3JrUGFja2V0VHJhY2UgTmV1bWFublZhbHVlIE5ldmlsbGVUaGV0YUMgTmV2aWxsZVRoZXRhRCBOZXZpbGxlVGhldGFOIE5ldmlsbGVUaGV0YVMgTmV3UHJpbWl0aXZlU3R5bGUgTkV4cGVjdGF0aW9uIE5leHQgTmV4dENlbGwgTmV4dERhdGUgTmV4dFByaW1lIE5leHRTY2hlZHVsZWRUYXNrVGltZSBOSG9sZEFsbCBOSG9sZEZpcnN0IE5Ib2xkUmVzdCBOaWNob2xzR3JpZExpbmVzIE5pY2hvbHNQbG90IE5pZ2h0SGVtaXNwaGVyZSBOSW50ZWdyYXRlIE5NYXhpbWl6ZSBOTWF4VmFsdWUgTk1pbmltaXplIE5NaW5WYWx1ZSBOb21pbmFsVmFyaWFibGVzIE5vbkFzc29jaWF0aXZlIE5vbmNlbnRyYWxCZXRhRGlzdHJpYnV0aW9uIE5vbmNlbnRyYWxDaGlTcXVhcmVEaXN0cmlidXRpb24gTm9uY2VudHJhbEZSYXRpb0Rpc3RyaWJ1dGlvbiBOb25jZW50cmFsU3R1ZGVudFREaXN0cmlidXRpb24gTm9uQ29tbXV0YXRpdmVNdWx0aXBseSBOb25Db25zdGFudHMgTm9uZGltZW5zaW9uYWxpemF0aW9uVHJhbnNmb3JtIE5vbmUgTm9uZVRydWUgTm9ubGluZWFyTW9kZWxGaXQgTm9ubGluZWFyU3RhdGVTcGFjZU1vZGVsIE5vbmxvY2FsTWVhbnNGaWx0ZXIgTm9uTmVnYXRpdmUgTm9uTmVnYXRpdmVJbnRlZ2VycyBOb25OZWdhdGl2ZVJhdGlvbmFscyBOb25OZWdhdGl2ZVJlYWxzIE5vblBvc2l0aXZlIE5vblBvc2l0aXZlSW50ZWdlcnMgTm9uUG9zaXRpdmVSYXRpb25hbHMgTm9uUG9zaXRpdmVSZWFscyBOb3IgTm9ybHVuZEIgTm9ybSBOb3JtYWwgTm9ybWFsRGlzdHJpYnV0aW9uIE5vcm1hbEdyb3VwaW5nIE5vcm1hbGl6YXRpb25MYXllciBOb3JtYWxpemUgTm9ybWFsaXplZCBOb3JtYWxpemVkU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIE5vcm1hbE1hdHJpeFEgTm9ybWFsc0Z1bmN0aW9uIE5vcm1GdW5jdGlvbiBOb3QgTm90Q29uZ3J1ZW50IE5vdEN1cENhcCBOb3REb3VibGVWZXJ0aWNhbEJhciBOb3RlYm9vayBOb3RlYm9va0FwcGx5IE5vdGVib29rQXV0b1NhdmUgTm90ZWJvb2tDbG9zZSBOb3RlYm9va0NvbnZlcnRTZXR0aW5ncyBOb3RlYm9va0NyZWF0ZSBOb3RlYm9va0NyZWF0ZVJldHVybk9iamVjdCBOb3RlYm9va0RlZmF1bHQgTm90ZWJvb2tEZWxldGUgTm90ZWJvb2tEaXJlY3RvcnkgTm90ZWJvb2tEeW5hbWljRXhwcmVzc2lvbiBOb3RlYm9va0V2YWx1YXRlIE5vdGVib29rRXZlbnRBY3Rpb25zIE5vdGVib29rRmlsZU5hbWUgTm90ZWJvb2tGaW5kIE5vdGVib29rRmluZFJldHVybk9iamVjdCBOb3RlYm9va0dldCBOb3RlYm9va0dldExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rR2V0TWlzc3BlbGxpbmdzUGFja2V0IE5vdGVib29rSW1wb3J0IE5vdGVib29rSW5mb3JtYXRpb24gTm90ZWJvb2tJbnRlcmZhY2VPYmplY3QgTm90ZWJvb2tMb2NhdGUgTm90ZWJvb2tPYmplY3QgTm90ZWJvb2tPcGVuIE5vdGVib29rT3BlblJldHVybk9iamVjdCBOb3RlYm9va1BhdGggTm90ZWJvb2tQcmludCBOb3RlYm9va1B1dCBOb3RlYm9va1B1dFJldHVybk9iamVjdCBOb3RlYm9va1JlYWQgTm90ZWJvb2tSZXNldEdlbmVyYXRlZENlbGxzIE5vdGVib29rcyBOb3RlYm9va1NhdmUgTm90ZWJvb2tTYXZlQXMgTm90ZWJvb2tTZWxlY3Rpb24gTm90ZWJvb2tTZXR1cExheW91dEluZm9ybWF0aW9uUGFja2V0IE5vdGVib29rc01lbnUgTm90ZWJvb2tUZW1wbGF0ZSBOb3RlYm9va1dyaXRlIE5vdEVsZW1lbnQgTm90RXF1YWxUaWxkZSBOb3RFeGlzdHMgTm90R3JlYXRlciBOb3RHcmVhdGVyRXF1YWwgTm90R3JlYXRlckZ1bGxFcXVhbCBOb3RHcmVhdGVyR3JlYXRlciBOb3RHcmVhdGVyTGVzcyBOb3RHcmVhdGVyU2xhbnRFcXVhbCBOb3RHcmVhdGVyVGlsZGUgTm90aGluZyBOb3RIdW1wRG93bkh1bXAgTm90SHVtcEVxdWFsIE5vdGlmaWNhdGlvbkZ1bmN0aW9uIE5vdExlZnRUcmlhbmdsZSBOb3RMZWZ0VHJpYW5nbGVCYXIgTm90TGVmdFRyaWFuZ2xlRXF1YWwgTm90TGVzcyBOb3RMZXNzRXF1YWwgTm90TGVzc0Z1bGxFcXVhbCBOb3RMZXNzR3JlYXRlciBOb3RMZXNzTGVzcyBOb3RMZXNzU2xhbnRFcXVhbCBOb3RMZXNzVGlsZGUgTm90TmVzdGVkR3JlYXRlckdyZWF0ZXIgTm90TmVzdGVkTGVzc0xlc3MgTm90UHJlY2VkZXMgTm90UHJlY2VkZXNFcXVhbCBOb3RQcmVjZWRlc1NsYW50RXF1YWwgTm90UHJlY2VkZXNUaWxkZSBOb3RSZXZlcnNlRWxlbWVudCBOb3RSaWdodFRyaWFuZ2xlIE5vdFJpZ2h0VHJpYW5nbGVCYXIgTm90UmlnaHRUcmlhbmdsZUVxdWFsIE5vdFNxdWFyZVN1YnNldCBOb3RTcXVhcmVTdWJzZXRFcXVhbCBOb3RTcXVhcmVTdXBlcnNldCBOb3RTcXVhcmVTdXBlcnNldEVxdWFsIE5vdFN1YnNldCBOb3RTdWJzZXRFcXVhbCBOb3RTdWNjZWVkcyBOb3RTdWNjZWVkc0VxdWFsIE5vdFN1Y2NlZWRzU2xhbnRFcXVhbCBOb3RTdWNjZWVkc1RpbGRlIE5vdFN1cGVyc2V0IE5vdFN1cGVyc2V0RXF1YWwgTm90VGlsZGUgTm90VGlsZGVFcXVhbCBOb3RUaWxkZUZ1bGxFcXVhbCBOb3RUaWxkZVRpbGRlIE5vdFZlcnRpY2FsQmFyIE5vdyBOb1doaXRlc3BhY2UgTlByb2JhYmlsaXR5IE5Qcm9kdWN0IE5Qcm9kdWN0RmFjdG9ycyBOUm9vdHMgTlNvbHZlIE5TdW0gTlN1bVRlcm1zIE51Y2xlYXJFeHBsb3Npb25EYXRhIE51Y2xlYXJSZWFjdG9yRGF0YSBOdWxsIE51bGxSZWNvcmRzIE51bGxTcGFjZSBOdWxsV29yZHMgTnVtYmVyIE51bWJlckNvbXBvc2UgTnVtYmVyRGVjb21wb3NlIE51bWJlckV4cGFuZCBOdW1iZXJGaWVsZENsYXNzTnVtYmVyIE51bWJlckZpZWxkRGlzY3JpbWluYW50IE51bWJlckZpZWxkRnVuZGFtZW50YWxVbml0cyBOdW1iZXJGaWVsZEludGVncmFsQmFzaXMgTnVtYmVyRmllbGROb3JtUmVwcmVzZW50YXRpdmVzIE51bWJlckZpZWxkUmVndWxhdG9yIE51bWJlckZpZWxkUm9vdHNPZlVuaXR5IE51bWJlckZpZWxkU2lnbmF0dXJlIE51bWJlckZvcm0gTnVtYmVyRm9ybWF0IE51bWJlckxpbmVQbG90IE51bWJlck1hcmtzIE51bWJlck11bHRpcGxpZXIgTnVtYmVyUGFkZGluZyBOdW1iZXJQb2ludCBOdW1iZXJRIE51bWJlclNlcGFyYXRvciBOdW1iZXJTaWducyBOdW1iZXJTdHJpbmcgTnVtZXJhdG9yIE51bWVyYXRvckRlbm9taW5hdG9yIE51bWVyaWNhbE9yZGVyIE51bWVyaWNhbFNvcnQgTnVtZXJpY0FycmF5IE51bWVyaWNBcnJheVEgTnVtZXJpY0FycmF5VHlwZSBOdW1lcmljRnVuY3Rpb24gTnVtZXJpY1EgTnV0dGFsbFdpbmRvdyBOVmFsdWVzIE55cXVpc3RHcmlkTGluZXMgTnlxdWlzdFBsb3QnICtcbiAgICAgICdPIE9ic2VydmFiaWxpdHlHcmFtaWFuIE9ic2VydmFiaWxpdHlNYXRyaXggT2JzZXJ2YWJsZURlY29tcG9zaXRpb24gT2JzZXJ2YWJsZU1vZGVsUSBPY2VhbkRhdGEgT2N0YWhlZHJvbiBPZGRRIE9mZiBPZmZzZXQgT0xFRGF0YSBPbiBPTmFuR3JvdXBPTiBPbmNlIE9uZUlkZW50aXR5IE9wYWNpdHkgT3BhY2l0eUZ1bmN0aW9uIE9wYWNpdHlGdW5jdGlvblNjYWxpbmcgT3BlbiBPcGVuQXBwZW5kIE9wZW5lciBPcGVuZXJCb3ggT3BlbmVyQm94T3B0aW9ucyBPcGVuZXJWaWV3IE9wZW5GdW5jdGlvbkluc3BlY3RvclBhY2tldCBPcGVuaW5nIE9wZW5SZWFkIE9wZW5TcGVjaWFsT3B0aW9ucyBPcGVuVGVtcG9yYXJ5IE9wZW5Xcml0ZSBPcGVyYXRlIE9wZXJhdGluZ1N5c3RlbSBPcHRpbXVtRmxvd0RhdGEgT3B0aW9uYWwgT3B0aW9uYWxFbGVtZW50IE9wdGlvbkluc3BlY3RvclNldHRpbmdzIE9wdGlvblEgT3B0aW9ucyBPcHRpb25zUGFja2V0IE9wdGlvbnNQYXR0ZXJuIE9wdGlvblZhbHVlIE9wdGlvblZhbHVlQm94IE9wdGlvblZhbHVlQm94T3B0aW9ucyBPciBPcmFuZ2UgT3JkZXIgT3JkZXJEaXN0cmlidXRpb24gT3JkZXJlZFEgT3JkZXJpbmcgT3JkZXJpbmdCeSBPcmRlcmluZ0xheWVyIE9yZGVybGVzcyBPcmRlcmxlc3NQYXR0ZXJuU2VxdWVuY2UgT3Juc3RlaW5VaGxlbmJlY2tQcm9jZXNzIE9ydGhvZ29uYWxpemUgT3J0aG9nb25hbE1hdHJpeFEgT3V0IE91dGVyIE91dGVyUG9seWdvbiBPdXRlclBvbHloZWRyb24gT3V0cHV0QXV0b092ZXJ3cml0ZSBPdXRwdXRDb250cm9sbGFiaWxpdHlNYXRyaXggT3V0cHV0Q29udHJvbGxhYmxlTW9kZWxRIE91dHB1dEZvcm0gT3V0cHV0Rm9ybURhdGEgT3V0cHV0R3JvdXBpbmcgT3V0cHV0TWF0aEVkaXRFeHByZXNzaW9uIE91dHB1dE5hbWVQYWNrZXQgT3V0cHV0UmVzcG9uc2UgT3V0cHV0U2l6ZUxpbWl0IE91dHB1dFN0cmVhbSBPdmVyIE92ZXJCYXIgT3ZlckRvdCBPdmVyZmxvdyBPdmVySGF0IE92ZXJsYXBzIE92ZXJsYXkgT3ZlcmxheUJveCBPdmVybGF5Qm94T3B0aW9ucyBPdmVyc2NyaXB0IE92ZXJzY3JpcHRCb3ggT3ZlcnNjcmlwdEJveE9wdGlvbnMgT3ZlclRpbGRlIE92ZXJWZWN0b3IgT3ZlcndyaXRlVGFyZ2V0IE93ZW5UIE93blZhbHVlcycgK1xuICAgICAgJ1BhY2thZ2UgUGFja2luZ01ldGhvZCBQYWRkZWRGb3JtIFBhZGRpbmcgUGFkZGluZ0xheWVyIFBhZGRpbmdTaXplIFBhZGVBcHByb3hpbWFudCBQYWRMZWZ0IFBhZFJpZ2h0IFBhZ2VCcmVha0Fib3ZlIFBhZ2VCcmVha0JlbG93IFBhZ2VCcmVha1dpdGhpbiBQYWdlRm9vdGVyTGluZXMgUGFnZUZvb3RlcnMgUGFnZUhlYWRlckxpbmVzIFBhZ2VIZWFkZXJzIFBhZ2VIZWlnaHQgUGFnZVJhbmtDZW50cmFsaXR5IFBhZ2VUaGVtZSBQYWdlV2lkdGggUGFnaW5hdGlvbiBQYWlyZWRCYXJDaGFydCBQYWlyZWRIaXN0b2dyYW0gUGFpcmVkU21vb3RoSGlzdG9ncmFtIFBhaXJlZFRUZXN0IFBhaXJlZFpUZXN0IFBhbGV0dGVOb3RlYm9vayBQYWxldHRlUGF0aCBQYWxpbmRyb21lUSBQYW5lIFBhbmVCb3ggUGFuZUJveE9wdGlvbnMgUGFuZWwgUGFuZWxCb3ggUGFuZWxCb3hPcHRpb25zIFBhbmVsZWQgUGFuZVNlbGVjdG9yIFBhbmVTZWxlY3RvckJveCBQYW5lU2VsZWN0b3JCb3hPcHRpb25zIFBhcGVyV2lkdGggUGFyYWJvbGljQ3lsaW5kZXJEIFBhcmFncmFwaEluZGVudCBQYXJhZ3JhcGhTcGFjaW5nIFBhcmFsbGVsQXJyYXkgUGFyYWxsZWxDb21iaW5lIFBhcmFsbGVsRG8gUGFyYWxsZWxlcGlwZWQgUGFyYWxsZWxFdmFsdWF0ZSBQYXJhbGxlbGl6YXRpb24gUGFyYWxsZWxpemUgUGFyYWxsZWxNYXAgUGFyYWxsZWxOZWVkcyBQYXJhbGxlbG9ncmFtIFBhcmFsbGVsUHJvZHVjdCBQYXJhbGxlbFN1Ym1pdCBQYXJhbGxlbFN1bSBQYXJhbGxlbFRhYmxlIFBhcmFsbGVsVHJ5IFBhcmFtZXRlciBQYXJhbWV0ZXJFc3RpbWF0b3IgUGFyYW1ldGVyTWl4dHVyZURpc3RyaWJ1dGlvbiBQYXJhbWV0ZXJWYXJpYWJsZXMgUGFyYW1ldHJpY0Z1bmN0aW9uIFBhcmFtZXRyaWNORFNvbHZlIFBhcmFtZXRyaWNORFNvbHZlVmFsdWUgUGFyYW1ldHJpY1Bsb3QgUGFyYW1ldHJpY1Bsb3QzRCBQYXJhbWV0cmljUmVnaW9uIFBhcmVudEJveCBQYXJlbnRDZWxsIFBhcmVudENvbm5lY3QgUGFyZW50RGlyZWN0b3J5IFBhcmVudEZvcm0gUGFyZW50aGVzaXplIFBhcmVudExpc3QgUGFyZW50Tm90ZWJvb2sgUGFyZXRvRGlzdHJpYnV0aW9uIFBhcmV0b1BpY2thbmRzRGlzdHJpYnV0aW9uIFBhcmtEYXRhIFBhcnQgUGFydEJlaGF2aW9yIFBhcnRpYWxDb3JyZWxhdGlvbkZ1bmN0aW9uIFBhcnRpYWxEIFBhcnRpY2xlQWNjZWxlcmF0b3JEYXRhIFBhcnRpY2xlRGF0YSBQYXJ0aXRpb24gUGFydGl0aW9uR3JhbnVsYXJpdHkgUGFydGl0aW9uc1AgUGFydGl0aW9uc1EgUGFydExheWVyIFBhcnRPZlNwZWVjaCBQYXJ0UHJvdGVjdGlvbiBQYXJ6ZW5XaW5kb3cgUGFzY2FsRGlzdHJpYnV0aW9uIFBhc3NFdmVudHNEb3duIFBhc3NFdmVudHNVcCBQYXN0ZSBQYXN0ZUF1dG9RdW90ZUNoYXJhY3RlcnMgUGFzdGVCb3hGb3JtSW5saW5lQ2VsbHMgUGFzdGVCdXR0b24gUGF0aCBQYXRoR3JhcGggUGF0aEdyYXBoUSBQYXR0ZXJuIFBhdHRlcm5TZXF1ZW5jZSBQYXR0ZXJuVGVzdCBQYXVsaU1hdHJpeCBQYXVsV2F2ZWxldCBQYXVzZSBQYXVzZWRUaW1lIFBERiBQZWFrRGV0ZWN0IFBlYW5vQ3VydmUgUGVhcnNvbkNoaVNxdWFyZVRlc3QgUGVhcnNvbkNvcnJlbGF0aW9uVGVzdCBQZWFyc29uRGlzdHJpYnV0aW9uIFBlcmNlbnRGb3JtIFBlcmZlY3ROdW1iZXIgUGVyZmVjdE51bWJlclEgUGVyZm9ybWFuY2VHb2FsIFBlcmltZXRlciBQZXJpb2RpY0JvdW5kYXJ5Q29uZGl0aW9uIFBlcmlvZGljSW50ZXJwb2xhdGlvbiBQZXJpb2RvZ3JhbSBQZXJpb2RvZ3JhbUFycmF5IFBlcm1hbmVudCBQZXJtaXNzaW9ucyBQZXJtaXNzaW9uc0dyb3VwIFBlcm1pc3Npb25zR3JvdXBNZW1iZXJRIFBlcm1pc3Npb25zR3JvdXBzIFBlcm1pc3Npb25zS2V5IFBlcm1pc3Npb25zS2V5cyBQZXJtdXRhdGlvbkN5Y2xlcyBQZXJtdXRhdGlvbkN5Y2xlc1EgUGVybXV0YXRpb25Hcm91cCBQZXJtdXRhdGlvbkxlbmd0aCBQZXJtdXRhdGlvbkxpc3QgUGVybXV0YXRpb25MaXN0USBQZXJtdXRhdGlvbk1heCBQZXJtdXRhdGlvbk1pbiBQZXJtdXRhdGlvbk9yZGVyIFBlcm11dGF0aW9uUG93ZXIgUGVybXV0YXRpb25Qcm9kdWN0IFBlcm11dGF0aW9uUmVwbGFjZSBQZXJtdXRhdGlvbnMgUGVybXV0YXRpb25TdXBwb3J0IFBlcm11dGUgUGVyb25hTWFsaWtGaWx0ZXIgUGVycGVuZGljdWxhciBQZXJwZW5kaWN1bGFyQmlzZWN0b3IgUGVyc2lzdGVuY2VMb2NhdGlvbiBQZXJzaXN0ZW5jZVRpbWUgUGVyc2lzdGVudE9iamVjdCBQZXJzaXN0ZW50T2JqZWN0cyBQZXJzaXN0ZW50VmFsdWUgUGVyc29uRGF0YSBQRVJURGlzdHJpYnV0aW9uIFBldGVyc2VuR3JhcGggUGhhc2VNYXJnaW5zIFBoYXNlUmFuZ2UgUGh5c2ljYWxTeXN0ZW1EYXRhIFBpIFBpY2sgUElERGF0YSBQSUREZXJpdmF0aXZlRmlsdGVyIFBJREZlZWRmb3J3YXJkIFBJRFR1bmUgUGllY2V3aXNlIFBpZWNld2lzZUV4cGFuZCBQaWVDaGFydCBQaWVDaGFydDNEIFBpbGxhaVRyYWNlIFBpbGxhaVRyYWNlVGVzdCBQaW5nVGltZSBQaW5rIFBpdGNoUmVjb2duaXplIFBpdm90aW5nIFBpeGVsQ29uc3RyYWluZWQgUGl4ZWxWYWx1ZSBQaXhlbFZhbHVlUG9zaXRpb25zIFBsYWNlZCBQbGFjZWhvbGRlciBQbGFjZWhvbGRlclJlcGxhY2UgUGxhaW4gUGxhbmFyQW5nbGUgUGxhbmFyR3JhcGggUGxhbmFyR3JhcGhRIFBsYW5ja1JhZGlhdGlvbkxhdyBQbGFuZUN1cnZlRGF0YSBQbGFuZXRhcnlNb29uRGF0YSBQbGFuZXREYXRhIFBsYW50RGF0YSBQbGF5IFBsYXlSYW5nZSBQbG90IFBsb3QzRCBQbG90M01hdHJpeCBQbG90RGl2aXNpb24gUGxvdEpvaW5lZCBQbG90TGFiZWwgUGxvdExhYmVscyBQbG90TGF5b3V0IFBsb3RMZWdlbmRzIFBsb3RNYXJrZXJzIFBsb3RQb2ludHMgUGxvdFJhbmdlIFBsb3RSYW5nZUNsaXBwaW5nIFBsb3RSYW5nZUNsaXBQbGFuZXNTdHlsZSBQbG90UmFuZ2VQYWRkaW5nIFBsb3RSZWdpb24gUGxvdFN0eWxlIFBsb3RUaGVtZSBQbHVyYWxpemUgUGx1cyBQbHVzTWludXMgUG9jaGhhbW1lciBQb2RTdGF0ZXMgUG9kV2lkdGggUG9pbnQgUG9pbnQzREJveCBQb2ludDNEQm94T3B0aW9ucyBQb2ludEJveCBQb2ludEJveE9wdGlvbnMgUG9pbnRGaWd1cmVDaGFydCBQb2ludExlZ2VuZCBQb2ludFNpemUgUG9pc3NvbkNvbnN1bERpc3RyaWJ1dGlvbiBQb2lzc29uRGlzdHJpYnV0aW9uIFBvaXNzb25Qcm9jZXNzIFBvaXNzb25XaW5kb3cgUG9sYXJBeGVzIFBvbGFyQXhlc09yaWdpbiBQb2xhckdyaWRMaW5lcyBQb2xhclBsb3QgUG9sYXJUaWNrcyBQb2xlWmVyb01hcmtlcnMgUG9seWFBZXBwbGlEaXN0cmlidXRpb24gUG9seUdhbW1hIFBvbHlnb24gUG9seWdvbjNEQm94IFBvbHlnb24zREJveE9wdGlvbnMgUG9seWdvbmFsTnVtYmVyIFBvbHlnb25BbmdsZSBQb2x5Z29uQm94IFBvbHlnb25Cb3hPcHRpb25zIFBvbHlnb25Db29yZGluYXRlcyBQb2x5Z29uRGVjb21wb3NpdGlvbiBQb2x5Z29uSG9sZVNjYWxlIFBvbHlnb25JbnRlcnNlY3Rpb25zIFBvbHlnb25TY2FsZSBQb2x5aGVkcm9uIFBvbHloZWRyb25BbmdsZSBQb2x5aGVkcm9uQ29vcmRpbmF0ZXMgUG9seWhlZHJvbkRhdGEgUG9seWhlZHJvbkRlY29tcG9zaXRpb24gUG9seWhlZHJvbkdlbnVzIFBvbHlMb2cgUG9seW5vbWlhbEV4dGVuZGVkR0NEIFBvbHlub21pYWxGb3JtIFBvbHlub21pYWxHQ0QgUG9seW5vbWlhbExDTSBQb2x5bm9taWFsTW9kIFBvbHlub21pYWxRIFBvbHlub21pYWxRdW90aWVudCBQb2x5bm9taWFsUXVvdGllbnRSZW1haW5kZXIgUG9seW5vbWlhbFJlZHVjZSBQb2x5bm9taWFsUmVtYWluZGVyIFBvbHlub21pYWxzIFBvb2xpbmdMYXllciBQb3B1cE1lbnUgUG9wdXBNZW51Qm94IFBvcHVwTWVudUJveE9wdGlvbnMgUG9wdXBWaWV3IFBvcHVwV2luZG93IFBvc2l0aW9uIFBvc2l0aW9uSW5kZXggUG9zaXRpdmUgUG9zaXRpdmVEZWZpbml0ZU1hdHJpeFEgUG9zaXRpdmVJbnRlZ2VycyBQb3NpdGl2ZVJhdGlvbmFscyBQb3NpdGl2ZVJlYWxzIFBvc2l0aXZlU2VtaWRlZmluaXRlTWF0cml4USBQb3NzaWJsZVplcm9RIFBvc3RmaXggUG9zdFNjcmlwdCBQb3dlciBQb3dlckRpc3RyaWJ1dGlvbiBQb3dlckV4cGFuZCBQb3dlck1vZCBQb3dlck1vZExpc3QgUG93ZXJSYW5nZSBQb3dlclNwZWN0cmFsRGVuc2l0eSBQb3dlcnNSZXByZXNlbnRhdGlvbnMgUG93ZXJTeW1tZXRyaWNQb2x5bm9taWFsIFByZWNlZGVuY2UgUHJlY2VkZW5jZUZvcm0gUHJlY2VkZXMgUHJlY2VkZXNFcXVhbCBQcmVjZWRlc1NsYW50RXF1YWwgUHJlY2VkZXNUaWxkZSBQcmVjaXNpb24gUHJlY2lzaW9uR29hbCBQcmVEZWNyZW1lbnQgUHJlZGljdCBQcmVkaWN0aW9uUm9vdCBQcmVkaWN0b3JGdW5jdGlvbiBQcmVkaWN0b3JJbmZvcm1hdGlvbiBQcmVkaWN0b3JNZWFzdXJlbWVudHMgUHJlZGljdG9yTWVhc3VyZW1lbnRzT2JqZWN0IFByZWVtcHRQcm90ZWN0IFByZWZlcmVuY2VzUGF0aCBQcmVmaXggUHJlSW5jcmVtZW50IFByZXBlbmQgUHJlcGVuZExheWVyIFByZXBlbmRUbyBQcmVwcm9jZXNzaW5nUnVsZXMgUHJlc2VydmVDb2xvciBQcmVzZXJ2ZUltYWdlT3B0aW9ucyBQcmV2aW91cyBQcmV2aW91c0NlbGwgUHJldmlvdXNEYXRlIFByaWNlR3JhcGhEaXN0cmlidXRpb24gUHJpbWFyeVBsYWNlaG9sZGVyIFByaW1lIFByaW1lTnUgUHJpbWVPbWVnYSBQcmltZVBpIFByaW1lUG93ZXJRIFByaW1lUSBQcmltZXMgUHJpbWVaZXRhUCBQcmltaXRpdmVQb2x5bm9taWFsUSBQcmltaXRpdmVSb290IFByaW1pdGl2ZVJvb3RMaXN0IFByaW5jaXBhbENvbXBvbmVudHMgUHJpbmNpcGFsVmFsdWUgUHJpbnQgUHJpbnRhYmxlQVNDSUlRIFByaW50QWN0aW9uIFByaW50Rm9ybSBQcmludGluZ0NvcGllcyBQcmludGluZ09wdGlvbnMgUHJpbnRpbmdQYWdlUmFuZ2UgUHJpbnRpbmdTdGFydGluZ1BhZ2VOdW1iZXIgUHJpbnRpbmdTdHlsZUVudmlyb25tZW50IFByaW50b3V0M0QgUHJpbnRvdXQzRFByZXZpZXdlciBQcmludFByZWNpc2lvbiBQcmludFRlbXBvcmFyeSBQcmlzbSBQcmlzbUJveCBQcmlzbUJveE9wdGlvbnMgUHJpdmF0ZUNlbGxPcHRpb25zIFByaXZhdGVFdmFsdWF0aW9uT3B0aW9ucyBQcml2YXRlRm9udE9wdGlvbnMgUHJpdmF0ZUZyb250RW5kT3B0aW9ucyBQcml2YXRlS2V5IFByaXZhdGVOb3RlYm9va09wdGlvbnMgUHJpdmF0ZVBhdGhzIFByb2JhYmlsaXR5IFByb2JhYmlsaXR5RGlzdHJpYnV0aW9uIFByb2JhYmlsaXR5UGxvdCBQcm9iYWJpbGl0eVByIFByb2JhYmlsaXR5U2NhbGVQbG90IFByb2JpdE1vZGVsRml0IFByb2Nlc3NDb25uZWN0aW9uIFByb2Nlc3NEaXJlY3RvcnkgUHJvY2Vzc0Vudmlyb25tZW50IFByb2Nlc3NlcyBQcm9jZXNzRXN0aW1hdG9yIFByb2Nlc3NJbmZvcm1hdGlvbiBQcm9jZXNzT2JqZWN0IFByb2Nlc3NQYXJhbWV0ZXJBc3N1bXB0aW9ucyBQcm9jZXNzUGFyYW1ldGVyUSBQcm9jZXNzU3RhdGVEb21haW4gUHJvY2Vzc1N0YXR1cyBQcm9jZXNzVGltZURvbWFpbiBQcm9kdWN0IFByb2R1Y3REaXN0cmlidXRpb24gUHJvZHVjdExvZyBQcm9ncmVzc0luZGljYXRvciBQcm9ncmVzc0luZGljYXRvckJveCBQcm9ncmVzc0luZGljYXRvckJveE9wdGlvbnMgUHJvamVjdGlvbiBQcm9sb2cgUHJvbXB0Rm9ybSBQcm9vZk9iamVjdCBQcm9wZXJ0aWVzIFByb3BlcnR5IFByb3BlcnR5TGlzdCBQcm9wZXJ0eVZhbHVlIFByb3BvcnRpb24gUHJvcG9ydGlvbmFsIFByb3RlY3QgUHJvdGVjdGVkIFByb3RlaW5EYXRhIFBydW5pbmcgUHNldWRvSW52ZXJzZSBQc3ljaHJvbWV0cmljUHJvcGVydHlEYXRhIFB1YmxpY0tleSBQdWJsaXNoZXJJRCBQdWxzYXJEYXRhIFB1bmN0dWF0aW9uQ2hhcmFjdGVyIFB1cnBsZSBQdXQgUHV0QXBwZW5kIFB5cmFtaWQgUHlyYW1pZEJveCBQeXJhbWlkQm94T3B0aW9ucycgK1xuICAgICAgJ1FCaW5vbWlhbCBRRmFjdG9yaWFsIFFHYW1tYSBRSHlwZXJnZW9tZXRyaWNQRlEgUW5EaXNwZXJzaW9uIFFQb2NoaGFtbWVyIFFQb2x5R2FtbWEgUVJEZWNvbXBvc2l0aW9uIFF1YWRyYXRpY0lycmF0aW9uYWxRIFF1YWRyYXRpY09wdGltaXphdGlvbiBRdWFudGlsZSBRdWFudGlsZVBsb3QgUXVhbnRpdHkgUXVhbnRpdHlBcnJheSBRdWFudGl0eURpc3RyaWJ1dGlvbiBRdWFudGl0eUZvcm0gUXVhbnRpdHlNYWduaXR1ZGUgUXVhbnRpdHlRIFF1YW50aXR5VW5pdCBRdWFudGl0eVZhcmlhYmxlIFF1YW50aXR5VmFyaWFibGVDYW5vbmljYWxVbml0IFF1YW50aXR5VmFyaWFibGVEaW1lbnNpb25zIFF1YW50aXR5VmFyaWFibGVJZGVudGlmaWVyIFF1YW50aXR5VmFyaWFibGVQaHlzaWNhbFF1YW50aXR5IFF1YXJ0aWNzIFF1YXJ0aWxlRGV2aWF0aW9uIFF1YXJ0aWxlcyBRdWFydGlsZVNrZXduZXNzIFF1ZXJ5IFF1ZXVlaW5nTmV0d29ya1Byb2Nlc3MgUXVldWVpbmdQcm9jZXNzIFF1ZXVlUHJvcGVydGllcyBRdWlldCBRdWl0IFF1b3RpZW50IFF1b3RpZW50UmVtYWluZGVyJyArXG4gICAgICAnUmFkaWFsR3JhZGllbnRJbWFnZSBSYWRpYWxpdHlDZW50cmFsaXR5IFJhZGljYWxCb3ggUmFkaWNhbEJveE9wdGlvbnMgUmFkaW9CdXR0b24gUmFkaW9CdXR0b25CYXIgUmFkaW9CdXR0b25Cb3ggUmFkaW9CdXR0b25Cb3hPcHRpb25zIFJhZG9uIFJhZG9uVHJhbnNmb3JtIFJhbWFudWphblRhdSBSYW1hbnVqYW5UYXVMIFJhbWFudWphblRhdVRoZXRhIFJhbWFudWphblRhdVogUmFtcCBSYW5kb20gUmFuZG9tQ2hvaWNlIFJhbmRvbUNvbG9yIFJhbmRvbUNvbXBsZXggUmFuZG9tRW50aXR5IFJhbmRvbUZ1bmN0aW9uIFJhbmRvbUdlb1Bvc2l0aW9uIFJhbmRvbUdyYXBoIFJhbmRvbUltYWdlIFJhbmRvbUluc3RhbmNlIFJhbmRvbUludGVnZXIgUmFuZG9tUGVybXV0YXRpb24gUmFuZG9tUG9pbnQgUmFuZG9tUG9seWdvbiBSYW5kb21Qb2x5aGVkcm9uIFJhbmRvbVByaW1lIFJhbmRvbVJlYWwgUmFuZG9tU2FtcGxlIFJhbmRvbVNlZWQgUmFuZG9tU2VlZGluZyBSYW5kb21WYXJpYXRlIFJhbmRvbVdhbGtQcm9jZXNzIFJhbmRvbVdvcmQgUmFuZ2UgUmFuZ2VGaWx0ZXIgUmFuZ2VTcGVjaWZpY2F0aW9uIFJhbmtlZE1heCBSYW5rZWRNaW4gUmFyZXJQcm9iYWJpbGl0eSBSYXN0ZXIgUmFzdGVyM0QgUmFzdGVyM0RCb3ggUmFzdGVyM0RCb3hPcHRpb25zIFJhc3RlckFycmF5IFJhc3RlckJveCBSYXN0ZXJCb3hPcHRpb25zIFJhc3Rlcml6ZSBSYXN0ZXJTaXplIFJhdGlvbmFsIFJhdGlvbmFsRnVuY3Rpb25zIFJhdGlvbmFsaXplIFJhdGlvbmFscyBSYXRpb3MgUmF3QXJyYXkgUmF3Qm94ZXMgUmF3RGF0YSBSYXdNZWRpdW0gUmF5bGVpZ2hEaXN0cmlidXRpb24gUmUgUmVhZCBSZWFkQnl0ZUFycmF5IFJlYWRMaW5lIFJlYWRMaXN0IFJlYWRQcm90ZWN0ZWQgUmVhZFN0cmluZyBSZWFsIFJlYWxBYnMgUmVhbEJsb2NrRGlhZ29uYWxGb3JtIFJlYWxEaWdpdHMgUmVhbEV4cG9uZW50IFJlYWxzIFJlYWxTaWduIFJlYXAgUmVjb2duaXRpb25QcmlvciBSZWNvZ25pdGlvblRocmVzaG9sZCBSZWNvcmQgUmVjb3JkTGlzdHMgUmVjb3JkU2VwYXJhdG9ycyBSZWN0YW5nbGUgUmVjdGFuZ2xlQm94IFJlY3RhbmdsZUJveE9wdGlvbnMgUmVjdGFuZ2xlQ2hhcnQgUmVjdGFuZ2xlQ2hhcnQzRCBSZWN0YW5ndWxhclJlcGVhdGluZ0VsZW1lbnQgUmVjdXJyZW5jZUZpbHRlciBSZWN1cnJlbmNlVGFibGUgUmVjdXJyaW5nRGlnaXRzRm9ybSBSZWQgUmVkdWNlIFJlZkJveCBSZWZlcmVuY2VMaW5lU3R5bGUgUmVmZXJlbmNlTWFya2VycyBSZWZlcmVuY2VNYXJrZXJTdHlsZSBSZWZpbmUgUmVmbGVjdGlvbk1hdHJpeCBSZWZsZWN0aW9uVHJhbnNmb3JtIFJlZnJlc2ggUmVmcmVzaFJhdGUgUmVnaW9uIFJlZ2lvbkJpbmFyaXplIFJlZ2lvbkJvdW5kYXJ5IFJlZ2lvbkJvdW5kcyBSZWdpb25DZW50cm9pZCBSZWdpb25EaWZmZXJlbmNlIFJlZ2lvbkRpbWVuc2lvbiBSZWdpb25EaXNqb2ludCBSZWdpb25EaXN0YW5jZSBSZWdpb25EaXN0YW5jZUZ1bmN0aW9uIFJlZ2lvbkVtYmVkZGluZ0RpbWVuc2lvbiBSZWdpb25FcXVhbCBSZWdpb25GdW5jdGlvbiBSZWdpb25JbWFnZSBSZWdpb25JbnRlcnNlY3Rpb24gUmVnaW9uTWVhc3VyZSBSZWdpb25NZW1iZXIgUmVnaW9uTWVtYmVyRnVuY3Rpb24gUmVnaW9uTW9tZW50IFJlZ2lvbk5lYXJlc3QgUmVnaW9uTmVhcmVzdEZ1bmN0aW9uIFJlZ2lvblBsb3QgUmVnaW9uUGxvdDNEIFJlZ2lvblByb2R1Y3QgUmVnaW9uUSBSZWdpb25SZXNpemUgUmVnaW9uU2l6ZSBSZWdpb25TeW1tZXRyaWNEaWZmZXJlbmNlIFJlZ2lvblVuaW9uIFJlZ2lvbldpdGhpbiBSZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFJlZ3VsYXJFeHByZXNzaW9uIFJlZ3VsYXJpemF0aW9uIFJlZ3VsYXJseVNhbXBsZWRRIFJlZ3VsYXJQb2x5Z29uIFJlSW0gUmVJbUxhYmVscyBSZUltUGxvdCBSZUltU3R5bGUgUmVpbnN0YWxsIFJlbGF0aW9uYWxEYXRhYmFzZSBSZWxhdGlvbkdyYXBoIFJlbGVhc2UgUmVsZWFzZUhvbGQgUmVsaWFiaWxpdHlEaXN0cmlidXRpb24gUmVsaWVmSW1hZ2UgUmVsaWVmUGxvdCBSZW1vdGVBdXRob3JpemF0aW9uQ2FjaGluZyBSZW1vdGVDb25uZWN0IFJlbW90ZUNvbm5lY3Rpb25PYmplY3QgUmVtb3RlRmlsZSBSZW1vdGVSdW4gUmVtb3RlUnVuUHJvY2VzcyBSZW1vdmUgUmVtb3ZlQWxwaGFDaGFubmVsIFJlbW92ZUFzeW5jaHJvbm91c1Rhc2sgUmVtb3ZlQXVkaW9TdHJlYW0gUmVtb3ZlQmFja2dyb3VuZCBSZW1vdmVDaGFubmVsTGlzdGVuZXIgUmVtb3ZlQ2hhbm5lbFN1YnNjcmliZXJzIFJlbW92ZWQgUmVtb3ZlRGlhY3JpdGljcyBSZW1vdmVJbnB1dFN0cmVhbU1ldGhvZCBSZW1vdmVPdXRwdXRTdHJlYW1NZXRob2QgUmVtb3ZlUHJvcGVydHkgUmVtb3ZlU2NoZWR1bGVkVGFzayBSZW1vdmVVc2VycyBSZW5hbWVEaXJlY3RvcnkgUmVuYW1lRmlsZSBSZW5kZXJBbGwgUmVuZGVyaW5nT3B0aW9ucyBSZW5ld2FsUHJvY2VzcyBSZW5rb0NoYXJ0IFJlcGFpck1lc2ggUmVwZWF0ZWQgUmVwZWF0ZWROdWxsIFJlcGVhdGVkU3RyaW5nIFJlcGVhdGVkVGltaW5nIFJlcGVhdGluZ0VsZW1lbnQgUmVwbGFjZSBSZXBsYWNlQWxsIFJlcGxhY2VIZWxkUGFydCBSZXBsYWNlSW1hZ2VWYWx1ZSBSZXBsYWNlTGlzdCBSZXBsYWNlUGFydCBSZXBsYWNlUGl4ZWxWYWx1ZSBSZXBsYWNlUmVwZWF0ZWQgUmVwbGljYXRlTGF5ZXIgUmVxdWlyZWRQaHlzaWNhbFF1YW50aXRpZXMgUmVzYW1wbGluZyBSZXNhbXBsaW5nQWxnb3JpdGhtRGF0YSBSZXNhbXBsaW5nTWV0aG9kIFJlc2NhbGUgUmVzY2FsaW5nVHJhbnNmb3JtIFJlc2V0RGlyZWN0b3J5IFJlc2V0TWVudXNQYWNrZXQgUmVzZXRTY2hlZHVsZWRUYXNrIFJlc2hhcGVMYXllciBSZXNpZHVlIFJlc2l6ZUxheWVyIFJlc29sdmUgUmVzb3VyY2VBY3F1aXJlIFJlc291cmNlRGF0YSBSZXNvdXJjZUZ1bmN0aW9uIFJlc291cmNlT2JqZWN0IFJlc291cmNlUmVnaXN0ZXIgUmVzb3VyY2VSZW1vdmUgUmVzb3VyY2VTZWFyY2ggUmVzb3VyY2VTdWJtaXNzaW9uT2JqZWN0IFJlc291cmNlU3VibWl0IFJlc291cmNlU3lzdGVtQmFzZSBSZXNvdXJjZVVwZGF0ZSBSZXNwb25zZUZvcm0gUmVzdCBSZXN0YXJ0SW50ZXJ2YWwgUmVzdHJpY3RlZCBSZXN1bHRhbnQgUmVzdW1lUGFja2V0IFJldHVybiBSZXR1cm5FbnRlcnNJbnB1dCBSZXR1cm5FeHByZXNzaW9uUGFja2V0IFJldHVybklucHV0Rm9ybVBhY2tldCBSZXR1cm5QYWNrZXQgUmV0dXJuUmVjZWlwdEZ1bmN0aW9uIFJldHVyblRleHRQYWNrZXQgUmV2ZXJzZSBSZXZlcnNlQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldCBSZXZlcnNlRWxlbWVudCBSZXZlcnNlRXF1aWxpYnJpdW0gUmV2ZXJzZUdyYXBoIFJldmVyc2VTb3J0IFJldmVyc2VTb3J0QnkgUmV2ZXJzZVVwRXF1aWxpYnJpdW0gUmV2b2x1dGlvbkF4aXMgUmV2b2x1dGlvblBsb3QzRCBSR0JDb2xvciBSaWNjYXRpU29sdmUgUmljZURpc3RyaWJ1dGlvbiBSaWRnZUZpbHRlciBSaWVtYW5uUiBSaWVtYW5uU2llZ2VsVGhldGEgUmllbWFublNpZWdlbFogUmllbWFublhpIFJpZmZsZSBSaWdodCBSaWdodEFycm93IFJpZ2h0QXJyb3dCYXIgUmlnaHRBcnJvd0xlZnRBcnJvdyBSaWdodENvbXBvc2l0aW9uIFJpZ2h0Q29zZXRSZXByZXNlbnRhdGl2ZSBSaWdodERvd25UZWVWZWN0b3IgUmlnaHREb3duVmVjdG9yIFJpZ2h0RG93blZlY3RvckJhciBSaWdodFRlZSBSaWdodFRlZUFycm93IFJpZ2h0VGVlVmVjdG9yIFJpZ2h0VHJpYW5nbGUgUmlnaHRUcmlhbmdsZUJhciBSaWdodFRyaWFuZ2xlRXF1YWwgUmlnaHRVcERvd25WZWN0b3IgUmlnaHRVcFRlZVZlY3RvciBSaWdodFVwVmVjdG9yIFJpZ2h0VXBWZWN0b3JCYXIgUmlnaHRWZWN0b3IgUmlnaHRWZWN0b3JCYXIgUmlza0FjaGlldmVtZW50SW1wb3J0YW5jZSBSaXNrUmVkdWN0aW9uSW1wb3J0YW5jZSBSb2dlcnNUYW5pbW90b0Rpc3NpbWlsYXJpdHkgUm9sbFBpdGNoWWF3QW5nbGVzIFJvbGxQaXRjaFlhd01hdHJpeCBSb21hbk51bWVyYWwgUm9vdCBSb290QXBwcm94aW1hbnQgUm9vdEludGVydmFscyBSb290TG9jdXNQbG90IFJvb3RNZWFuU3F1YXJlIFJvb3RPZlVuaXR5USBSb290UmVkdWNlIFJvb3RzIFJvb3RTdW0gUm90YXRlIFJvdGF0ZUxhYmVsIFJvdGF0ZUxlZnQgUm90YXRlUmlnaHQgUm90YXRpb25BY3Rpb24gUm90YXRpb25Cb3ggUm90YXRpb25Cb3hPcHRpb25zIFJvdGF0aW9uTWF0cml4IFJvdGF0aW9uVHJhbnNmb3JtIFJvdW5kIFJvdW5kSW1wbGllcyBSb3VuZGluZ1JhZGl1cyBSb3cgUm93QWxpZ25tZW50cyBSb3dCYWNrZ3JvdW5kcyBSb3dCb3ggUm93SGVpZ2h0cyBSb3dMaW5lcyBSb3dNaW5IZWlnaHQgUm93UmVkdWNlIFJvd3NFcXVhbCBSb3dTcGFjaW5ncyBSU29sdmUgUlNvbHZlVmFsdWUgUnVkaW5TaGFwaXJvIFJ1ZHZhbGlzR3JvdXBSdSBSdWxlIFJ1bGVDb25kaXRpb24gUnVsZURlbGF5ZWQgUnVsZUZvcm0gUnVsZVBsb3QgUnVsZXJVbml0cyBSdW4gUnVuUHJvY2VzcyBSdW5TY2hlZHVsZWRUYXNrIFJ1blRocm91Z2ggUnVudGltZUF0dHJpYnV0ZXMgUnVudGltZU9wdGlvbnMgUnVzc2VsbFJhb0Rpc3NpbWlsYXJpdHknICtcbiAgICAgICdTYW1lUSBTYW1lVGVzdCBTYW1wbGVkRW50aXR5Q2xhc3MgU2FtcGxlRGVwdGggU2FtcGxlZFNvdW5kRnVuY3Rpb24gU2FtcGxlZFNvdW5kTGlzdCBTYW1wbGVSYXRlIFNhbXBsaW5nUGVyaW9kIFNBUklNQVByb2Nlc3MgU0FSTUFQcm9jZXNzIFNBU1RyaWFuZ2xlIFNhdGVsbGl0ZURhdGEgU2F0aXNmaWFiaWxpdHlDb3VudCBTYXRpc2ZpYWJpbGl0eUluc3RhbmNlcyBTYXRpc2ZpYWJsZVEgU2F0dXJkYXkgU2F2ZSBTYXZlYWJsZSBTYXZlQXV0b0RlbGV0ZSBTYXZlQ29ubmVjdGlvbiBTYXZlRGVmaW5pdGlvbnMgU2F2aXR6a3lHb2xheU1hdHJpeCBTYXd0b290aFdhdmUgU2NhbGUgU2NhbGVkIFNjYWxlRGl2aXNpb25zIFNjYWxlZE1vdXNlUG9zaXRpb24gU2NhbGVPcmlnaW4gU2NhbGVQYWRkaW5nIFNjYWxlUmFuZ2VzIFNjYWxlUmFuZ2VTdHlsZSBTY2FsaW5nRnVuY3Rpb25zIFNjYWxpbmdNYXRyaXggU2NhbGluZ1RyYW5zZm9ybSBTY2FuIFNjaGVkdWxlZFRhc2sgU2NoZWR1bGVkVGFza0FjdGl2ZVEgU2NoZWR1bGVkVGFza0luZm9ybWF0aW9uIFNjaGVkdWxlZFRhc2tJbmZvcm1hdGlvbkRhdGEgU2NoZWR1bGVkVGFza09iamVjdCBTY2hlZHVsZWRUYXNrcyBTY2h1ckRlY29tcG9zaXRpb24gU2NpZW50aWZpY0Zvcm0gU2NpZW50aWZpY05vdGF0aW9uVGhyZXNob2xkIFNjb3JlckdpIFNjb3JlckdpUHJpbWUgU2NvcmVySGkgU2NvcmVySGlQcmltZSBTY3JlZW5SZWN0YW5nbGUgU2NyZWVuU3R5bGVFbnZpcm9ubWVudCBTY3JpcHRCYXNlbGluZVNoaWZ0cyBTY3JpcHRGb3JtIFNjcmlwdExldmVsIFNjcmlwdE1pblNpemUgU2NyaXB0UnVsZXMgU2NyaXB0U2l6ZU11bHRpcGxpZXJzIFNjcm9sbGJhcnMgU2Nyb2xsaW5nT3B0aW9ucyBTY3JvbGxQb3NpdGlvbiBTZWFyY2hBZGp1c3RtZW50IFNlYXJjaEluZGV4T2JqZWN0IFNlYXJjaEluZGljZXMgU2VhcmNoUXVlcnlTdHJpbmcgU2VhcmNoUmVzdWx0T2JqZWN0IFNlYyBTZWNoIFNlY2hEaXN0cmlidXRpb24gU2Vjb25kT3JkZXJDb25lT3B0aW1pemF0aW9uIFNlY3Rpb25Hcm91cGluZyBTZWN0b3JDaGFydCBTZWN0b3JDaGFydDNEIFNlY3Rvck9yaWdpbiBTZWN0b3JTcGFjaW5nIFNlY3VyZWRBdXRoZW50aWNhdGlvbktleSBTZWN1cmVkQXV0aGVudGljYXRpb25LZXlzIFNlZWRSYW5kb20gU2VsZWN0IFNlbGVjdGFibGUgU2VsZWN0Q29tcG9uZW50cyBTZWxlY3RlZENlbGxzIFNlbGVjdGVkTm90ZWJvb2sgU2VsZWN0Rmlyc3QgU2VsZWN0aW9uIFNlbGVjdGlvbkFuaW1hdGUgU2VsZWN0aW9uQ2VsbCBTZWxlY3Rpb25DZWxsQ3JlYXRlQ2VsbCBTZWxlY3Rpb25DZWxsRGVmYXVsdFN0eWxlIFNlbGVjdGlvbkNlbGxQYXJlbnRTdHlsZSBTZWxlY3Rpb25DcmVhdGVDZWxsIFNlbGVjdGlvbkRlYnVnZ2VyVGFnIFNlbGVjdGlvbkR1cGxpY2F0ZUNlbGwgU2VsZWN0aW9uRXZhbHVhdGUgU2VsZWN0aW9uRXZhbHVhdGVDcmVhdGVDZWxsIFNlbGVjdGlvbk1vdmUgU2VsZWN0aW9uUGxhY2Vob2xkZXIgU2VsZWN0aW9uU2V0U3R5bGUgU2VsZWN0V2l0aENvbnRlbnRzIFNlbGZMb29wcyBTZWxmTG9vcFN0eWxlIFNlbWFudGljSW1wb3J0IFNlbWFudGljSW1wb3J0U3RyaW5nIFNlbWFudGljSW50ZXJwcmV0YXRpb24gU2VtaWFsZ2VicmFpY0NvbXBvbmVudEluc3RhbmNlcyBTZW1pZGVmaW5pdGVPcHRpbWl6YXRpb24gU2VuZE1haWwgU2VuZE1lc3NhZ2UgU2VxdWVuY2UgU2VxdWVuY2VBbGlnbm1lbnQgU2VxdWVuY2VBdHRlbnRpb25MYXllciBTZXF1ZW5jZUNhc2VzIFNlcXVlbmNlQ291bnQgU2VxdWVuY2VGb2xkIFNlcXVlbmNlRm9sZExpc3QgU2VxdWVuY2VGb3JtIFNlcXVlbmNlSG9sZCBTZXF1ZW5jZUxhc3RMYXllciBTZXF1ZW5jZU1vc3RMYXllciBTZXF1ZW5jZVBvc2l0aW9uIFNlcXVlbmNlUHJlZGljdCBTZXF1ZW5jZVByZWRpY3RvckZ1bmN0aW9uIFNlcXVlbmNlUmVwbGFjZSBTZXF1ZW5jZVJlc3RMYXllciBTZXF1ZW5jZVJldmVyc2VMYXllciBTZXF1ZW5jZVNwbGl0IFNlcmllcyBTZXJpZXNDb2VmZmljaWVudCBTZXJpZXNEYXRhIFNlcnZpY2VDb25uZWN0IFNlcnZpY2VEaXNjb25uZWN0IFNlcnZpY2VFeGVjdXRlIFNlcnZpY2VPYmplY3QgU2VydmljZVJlcXVlc3QgU2VydmljZVJlc3BvbnNlIFNlcnZpY2VTdWJtaXQgU2Vzc2lvblN1Ym1pdCBTZXNzaW9uVGltZSBTZXQgU2V0QWNjdXJhY3kgU2V0QWxwaGFDaGFubmVsIFNldEF0dHJpYnV0ZXMgU2V0YmFja3MgU2V0Qm94Rm9ybU5hbWVzUGFja2V0IFNldENsb3VkRGlyZWN0b3J5IFNldENvb2tpZXMgU2V0RGVsYXllZCBTZXREaXJlY3RvcnkgU2V0RW52aXJvbm1lbnQgU2V0RXZhbHVhdGlvbk5vdGVib29rIFNldEZpbGVEYXRlIFNldEZpbGVMb2FkaW5nQ29udGV4dCBTZXROb3RlYm9va1N0YXR1c0xpbmUgU2V0T3B0aW9ucyBTZXRPcHRpb25zUGFja2V0IFNldFBlcm1pc3Npb25zIFNldFByZWNpc2lvbiBTZXRQcm9wZXJ0eSBTZXRTZWN1cmVkQXV0aGVudGljYXRpb25LZXkgU2V0U2VsZWN0ZWROb3RlYm9vayBTZXRTaGFyZWRGdW5jdGlvbiBTZXRTaGFyZWRWYXJpYWJsZSBTZXRTcGVlY2hQYXJhbWV0ZXJzUGFja2V0IFNldFN0cmVhbVBvc2l0aW9uIFNldFN5c3RlbU1vZGVsIFNldFN5c3RlbU9wdGlvbnMgU2V0dGVyIFNldHRlckJhciBTZXR0ZXJCb3ggU2V0dGVyQm94T3B0aW9ucyBTZXR0aW5nIFNldFVzZXJzIFNldFZhbHVlIFNoYWRpbmcgU2hhbGxvdyBTaGFubm9uV2F2ZWxldCBTaGFwaXJvV2lsa1Rlc3QgU2hhcmUgU2hhcmluZ0xpc3QgU2hhcnBlbiBTaGVhcmluZ01hdHJpeCBTaGVhcmluZ1RyYW5zZm9ybSBTaGVsbFJlZ2lvbiBTaGVuQ2FzdGFuTWF0cml4IFNoaWZ0ZWRHb21wZXJ0ekRpc3RyaWJ1dGlvbiBTaGlmdFJlZ2lzdGVyU2VxdWVuY2UgU2hvcnQgU2hvcnREb3duQXJyb3cgU2hvcnRlc3QgU2hvcnRlc3RNYXRjaCBTaG9ydGVzdFBhdGhGdW5jdGlvbiBTaG9ydExlZnRBcnJvdyBTaG9ydFJpZ2h0QXJyb3cgU2hvcnRUaW1lRm91cmllciBTaG9ydFRpbWVGb3VyaWVyRGF0YSBTaG9ydFVwQXJyb3cgU2hvdyBTaG93QXV0b0NvbnZlcnQgU2hvd0F1dG9TcGVsbENoZWNrIFNob3dBdXRvU3R5bGVzIFNob3dDZWxsQnJhY2tldCBTaG93Q2VsbExhYmVsIFNob3dDZWxsVGFncyBTaG93Q2xvc2VkQ2VsbEFyZWEgU2hvd0NvZGVBc3Npc3QgU2hvd0NvbnRlbnRzIFNob3dDb250cm9scyBTaG93Q3Vyc29yVHJhY2tlciBTaG93R3JvdXBPcGVuQ2xvc2VJY29uIFNob3dHcm91cE9wZW5lciBTaG93SW52aXNpYmxlQ2hhcmFjdGVycyBTaG93UGFnZUJyZWFrcyBTaG93UHJlZGljdGl2ZUludGVyZmFjZSBTaG93U2VsZWN0aW9uIFNob3dTaG9ydEJveEZvcm0gU2hvd1NwZWNpYWxDaGFyYWN0ZXJzIFNob3dTdHJpbmdDaGFyYWN0ZXJzIFNob3dTeW50YXhTdHlsZXMgU2hyaW5raW5nRGVsYXkgU2hyaW5rV3JhcEJvdW5kaW5nQm94IFNpZGVyZWFsVGltZSBTaWVnZWxUaGV0YSBTaWVnZWxUdWtleVRlc3QgU2llcnBpbnNraUN1cnZlIFNpZXJwaW5za2lNZXNoIFNpZ24gU2lnbmF0dXJlIFNpZ25lZFJhbmtUZXN0IFNpZ25lZFJlZ2lvbkRpc3RhbmNlIFNpZ25pZmljYW5jZUxldmVsIFNpZ25QYWRkaW5nIFNpZ25UZXN0IFNpbWlsYXJpdHlSdWxlcyBTaW1wbGVHcmFwaCBTaW1wbGVHcmFwaFEgU2ltcGxlUG9seWdvblEgU2ltcGxlUG9seWhlZHJvblEgU2ltcGxleCBTaW1wbGlmeSBTaW4gU2luYyBTaW5naE1hZGRhbGFEaXN0cmlidXRpb24gU2luZ2xlRXZhbHVhdGlvbiBTaW5nbGVMZXR0ZXJJdGFsaWNzIFNpbmdsZUxldHRlclN0eWxlIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIFNpbmd1bGFyVmFsdWVMaXN0IFNpbmd1bGFyVmFsdWVQbG90IFNpbmd1bGFyVmFsdWVzIFNpbmggU2luaEludGVncmFsIFNpbkludGVncmFsIFNpeEpTeW1ib2wgU2tlbGV0b24gU2tlbGV0b25UcmFuc2Zvcm0gU2tlbGxhbURpc3RyaWJ1dGlvbiBTa2V3bmVzcyBTa2V3Tm9ybWFsRGlzdHJpYnV0aW9uIFNraW5TdHlsZSBTa2lwIFNsaWNlQ29udG91clBsb3QzRCBTbGljZURlbnNpdHlQbG90M0QgU2xpY2VEaXN0cmlidXRpb24gU2xpY2VWZWN0b3JQbG90M0QgU2xpZGVyIFNsaWRlcjJEIFNsaWRlcjJEQm94IFNsaWRlcjJEQm94T3B0aW9ucyBTbGlkZXJCb3ggU2xpZGVyQm94T3B0aW9ucyBTbGlkZVZpZXcgU2xvdCBTbG90U2VxdWVuY2UgU21hbGwgU21hbGxDaXJjbGUgU21hbGxlciBTbWl0aERlY29tcG9zaXRpb24gU21pdGhEZWxheUNvbXBlbnNhdG9yIFNtaXRoV2F0ZXJtYW5TaW1pbGFyaXR5IFNtb290aERlbnNpdHlIaXN0b2dyYW0gU21vb3RoSGlzdG9ncmFtIFNtb290aEhpc3RvZ3JhbTNEIFNtb290aEtlcm5lbERpc3RyaWJ1dGlvbiBTbkRpc3BlcnNpb24gU25pcHBldCBTbnViUG9seWhlZHJvbiBTb2NpYWxNZWRpYURhdGEgU29ja2V0IFNvY2tldENvbm5lY3QgU29ja2V0TGlzdGVuIFNvY2tldExpc3RlbmVyIFNvY2tldE9iamVjdCBTb2NrZXRPcGVuIFNvY2tldFJlYWRNZXNzYWdlIFNvY2tldFJlYWR5USBTb2NrZXRzIFNvY2tldFdhaXRBbGwgU29ja2V0V2FpdE5leHQgU29mdG1heExheWVyIFNva2FsU25lYXRoRGlzc2ltaWxhcml0eSBTb2xhckVjbGlwc2UgU29sYXJTeXN0ZW1GZWF0dXJlRGF0YSBTb2xpZEFuZ2xlIFNvbGlkRGF0YSBTb2xpZFJlZ2lvblEgU29sdmUgU29sdmVBbHdheXMgU29sdmVEZWxheWVkIFNvcnQgU29ydEJ5IFNvcnRlZEJ5IFNvcnRlZEVudGl0eUNsYXNzIFNvdW5kIFNvdW5kQW5kR3JhcGhpY3MgU291bmROb3RlIFNvdW5kVm9sdW1lIFNvdXJjZUxpbmsgU293IFNwYWNlIFNwYWNlQ3VydmVEYXRhIFNwYWNlRm9ybSBTcGFjZXIgU3BhY2luZ3MgU3BhbiBTcGFuQWRqdXN0bWVudHMgU3BhbkNoYXJhY3RlclJvdW5kaW5nIFNwYW5Gcm9tQWJvdmUgU3BhbkZyb21Cb3RoIFNwYW5Gcm9tTGVmdCBTcGFuTGluZVRoaWNrbmVzcyBTcGFuTWF4U2l6ZSBTcGFuTWluU2l6ZSBTcGFubmluZ0NoYXJhY3RlcnMgU3BhblN5bW1ldHJpYyBTcGFyc2VBcnJheSBTcGF0aWFsR3JhcGhEaXN0cmlidXRpb24gU3BhdGlhbE1lZGlhbiBTcGF0aWFsVHJhbnNmb3JtYXRpb25MYXllciBTcGVhayBTcGVha1RleHRQYWNrZXQgU3BlYXJtYW5SYW5rVGVzdCBTcGVhcm1hblJobyBTcGVjaWVzRGF0YSBTcGVjaWZpY2l0eUdvYWwgU3BlY3RyYWxMaW5lRGF0YSBTcGVjdHJvZ3JhbSBTcGVjdHJvZ3JhbUFycmF5IFNwZWN1bGFyaXR5IFNwZWVjaFJlY29nbml6ZSBTcGVlY2hTeW50aGVzaXplIFNwZWxsaW5nQ29ycmVjdGlvbiBTcGVsbGluZ0NvcnJlY3Rpb25MaXN0IFNwZWxsaW5nRGljdGlvbmFyaWVzIFNwZWxsaW5nRGljdGlvbmFyaWVzUGF0aCBTcGVsbGluZ09wdGlvbnMgU3BlbGxpbmdTdWdnZXN0aW9uc1BhY2tldCBTcGhlcmUgU3BoZXJlQm94IFNwaGVyZVBvaW50cyBTcGhlcmljYWxCZXNzZWxKIFNwaGVyaWNhbEJlc3NlbFkgU3BoZXJpY2FsSGFua2VsSDEgU3BoZXJpY2FsSGFua2VsSDIgU3BoZXJpY2FsSGFybW9uaWNZIFNwaGVyaWNhbFBsb3QzRCBTcGhlcmljYWxSZWdpb24gU3BoZXJpY2FsU2hlbGwgU3BoZXJvaWRhbEVpZ2VudmFsdWUgU3BoZXJvaWRhbEpvaW5pbmdGYWN0b3IgU3BoZXJvaWRhbFBTIFNwaGVyb2lkYWxQU1ByaW1lIFNwaGVyb2lkYWxRUyBTcGhlcm9pZGFsUVNQcmltZSBTcGhlcm9pZGFsUmFkaWFsRmFjdG9yIFNwaGVyb2lkYWxTMSBTcGhlcm9pZGFsUzFQcmltZSBTcGhlcm9pZGFsUzIgU3BoZXJvaWRhbFMyUHJpbWUgU3BsaWNlIFNwbGljZWREaXN0cmlidXRpb24gU3BsaW5lQ2xvc2VkIFNwbGluZURlZ3JlZSBTcGxpbmVLbm90cyBTcGxpbmVXZWlnaHRzIFNwbGl0IFNwbGl0QnkgU3Bva2VuU3RyaW5nIFNxcnQgU3FydEJveCBTcXJ0Qm94T3B0aW9ucyBTcXVhcmUgU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlIFNxdWFyZUZyZWVRIFNxdWFyZUludGVyc2VjdGlvbiBTcXVhcmVNYXRyaXhRIFNxdWFyZVJlcGVhdGluZ0VsZW1lbnQgU3F1YXJlc1IgU3F1YXJlU3Vic2V0IFNxdWFyZVN1YnNldEVxdWFsIFNxdWFyZVN1cGVyc2V0IFNxdWFyZVN1cGVyc2V0RXF1YWwgU3F1YXJlVW5pb24gU3F1YXJlV2F2ZSBTU1NUcmlhbmdsZSBTdGFiaWxpdHlNYXJnaW5zIFN0YWJpbGl0eU1hcmdpbnNTdHlsZSBTdGFibGVEaXN0cmlidXRpb24gU3RhY2sgU3RhY2tCZWdpbiBTdGFja0NvbXBsZXRlIFN0YWNrZWREYXRlTGlzdFBsb3QgU3RhY2tlZExpc3RQbG90IFN0YWNrSW5oaWJpdCBTdGFkaXVtU2hhcGUgU3RhbmRhcmRBdG1vc3BoZXJlRGF0YSBTdGFuZGFyZERldmlhdGlvbiBTdGFuZGFyZERldmlhdGlvbkZpbHRlciBTdGFuZGFyZEZvcm0gU3RhbmRhcmRpemUgU3RhbmRhcmRpemVkIFN0YW5kYXJkT2NlYW5EYXRhIFN0YW5kYnlEaXN0cmlidXRpb24gU3RhciBTdGFyQ2x1c3RlckRhdGEgU3RhckRhdGEgU3RhckdyYXBoIFN0YXJ0QXN5bmNocm9ub3VzVGFzayBTdGFydEV4dGVybmFsU2Vzc2lvbiBTdGFydGluZ1N0ZXBTaXplIFN0YXJ0T2ZMaW5lIFN0YXJ0T2ZTdHJpbmcgU3RhcnRQcm9jZXNzIFN0YXJ0U2NoZWR1bGVkVGFzayBTdGFydHVwU291bmQgU3RhcnRXZWJTZXNzaW9uIFN0YXRlRGltZW5zaW9ucyBTdGF0ZUZlZWRiYWNrR2FpbnMgU3RhdGVPdXRwdXRFc3RpbWF0b3IgU3RhdGVSZXNwb25zZSBTdGF0ZVNwYWNlTW9kZWwgU3RhdGVTcGFjZVJlYWxpemF0aW9uIFN0YXRlU3BhY2VUcmFuc2Zvcm0gU3RhdGVUcmFuc2Zvcm1hdGlvbkxpbmVhcml6ZSBTdGF0aW9uYXJ5RGlzdHJpYnV0aW9uIFN0YXRpb25hcnlXYXZlbGV0UGFja2V0VHJhbnNmb3JtIFN0YXRpb25hcnlXYXZlbGV0VHJhbnNmb3JtIFN0YXR1c0FyZWEgU3RhdHVzQ2VudHJhbGl0eSBTdGVwTW9uaXRvciBTdGVyZW9jaGVtaXN0cnlFbGVtZW50cyBTdGllbHRqZXNHYW1tYSBTdGlybGluZ1MxIFN0aXJsaW5nUzIgU3RvcEFzeW5jaHJvbm91c1Rhc2sgU3RvcHBpbmdQb3dlckRhdGEgU3RvcFNjaGVkdWxlZFRhc2sgU3RyYXRhVmFyaWFibGVzIFN0cmF0b25vdmljaFByb2Nlc3MgU3RyZWFtQ29sb3JGdW5jdGlvbiBTdHJlYW1Db2xvckZ1bmN0aW9uU2NhbGluZyBTdHJlYW1EZW5zaXR5UGxvdCBTdHJlYW1NYXJrZXJzIFN0cmVhbVBsb3QgU3RyZWFtUG9pbnRzIFN0cmVhbVBvc2l0aW9uIFN0cmVhbXMgU3RyZWFtU2NhbGUgU3RyZWFtU3R5bGUgU3RyaW5nIFN0cmluZ0JyZWFrIFN0cmluZ0J5dGVDb3VudCBTdHJpbmdDYXNlcyBTdHJpbmdDb250YWluc1EgU3RyaW5nQ291bnQgU3RyaW5nRGVsZXRlIFN0cmluZ0Ryb3AgU3RyaW5nRW5kc1EgU3RyaW5nRXhwcmVzc2lvbiBTdHJpbmdFeHRyYWN0IFN0cmluZ0Zvcm0gU3RyaW5nRm9ybWF0IFN0cmluZ0ZyZWVRIFN0cmluZ0luc2VydCBTdHJpbmdKb2luIFN0cmluZ0xlbmd0aCBTdHJpbmdNYXRjaFEgU3RyaW5nUGFkTGVmdCBTdHJpbmdQYWRSaWdodCBTdHJpbmdQYXJ0IFN0cmluZ1BhcnRpdGlvbiBTdHJpbmdQb3NpdGlvbiBTdHJpbmdRIFN0cmluZ1JlcGVhdCBTdHJpbmdSZXBsYWNlIFN0cmluZ1JlcGxhY2VMaXN0IFN0cmluZ1JlcGxhY2VQYXJ0IFN0cmluZ1JldmVyc2UgU3RyaW5nUmlmZmxlIFN0cmluZ1JvdGF0ZUxlZnQgU3RyaW5nUm90YXRlUmlnaHQgU3RyaW5nU2tlbGV0b24gU3RyaW5nU3BsaXQgU3RyaW5nU3RhcnRzUSBTdHJpbmdUYWtlIFN0cmluZ1RlbXBsYXRlIFN0cmluZ1RvQnl0ZUFycmF5IFN0cmluZ1RvU3RyZWFtIFN0cmluZ1RyaW0gU3RyaXBCb3hlcyBTdHJpcE9uSW5wdXQgU3RyaXBXcmFwcGVyQm94ZXMgU3Ryb2tlRm9ybSBTdHJ1Y3R1cmFsSW1wb3J0YW5jZSBTdHJ1Y3R1cmVkQXJyYXkgU3RydWN0dXJlZFNlbGVjdGlvbiBTdHJ1dmVIIFN0cnV2ZUwgU3R1YiBTdHVkZW50VERpc3RyaWJ1dGlvbiBTdHlsZSBTdHlsZUJveCBTdHlsZUJveEF1dG9EZWxldGUgU3R5bGVEYXRhIFN0eWxlRGVmaW5pdGlvbnMgU3R5bGVGb3JtIFN0eWxlSGludHMgU3R5bGVLZXlNYXBwaW5nIFN0eWxlTWVudUxpc3RpbmcgU3R5bGVOYW1lRGlhbG9nU2V0dGluZ3MgU3R5bGVOYW1lcyBTdHlsZVByaW50IFN0eWxlU2hlZXRQYXRoIFN1YmRpdmlkZSBTdWJmYWN0b3JpYWwgU3ViZ3JhcGggU3ViTWludXMgU3ViUGx1cyBTdWJyZXN1bHRhbnRQb2x5bm9taWFsUmVtYWluZGVycyBTdWJyZXN1bHRhbnRQb2x5bm9taWFscyBTdWJyZXN1bHRhbnRzIFN1YnNjcmlwdCBTdWJzY3JpcHRCb3ggU3Vic2NyaXB0Qm94T3B0aW9ucyBTdWJzY3JpcHRlZCBTdWJzZXF1ZW5jZXMgU3Vic2V0IFN1YnNldEVxdWFsIFN1YnNldE1hcCBTdWJzZXRRIFN1YnNldHMgU3ViU3RhciBTdWJzdGl0dXRpb25TeXN0ZW0gU3Vic3VwZXJzY3JpcHQgU3Vic3VwZXJzY3JpcHRCb3ggU3Vic3VwZXJzY3JpcHRCb3hPcHRpb25zIFN1YnRyYWN0IFN1YnRyYWN0RnJvbSBTdWJ0cmFjdFNpZGVzIFN1YlZhbHVlcyBTdWNjZWVkcyBTdWNjZWVkc0VxdWFsIFN1Y2NlZWRzU2xhbnRFcXVhbCBTdWNjZWVkc1RpbGRlIFN1Y2Nlc3MgU3VjaFRoYXQgU3VtIFN1bUNvbnZlcmdlbmNlIFN1bW1hdGlvbkxheWVyIFN1bmRheSBTdW5Qb3NpdGlvbiBTdW5yaXNlIFN1bnNldCBTdXBlckRhZ2dlciBTdXBlck1pbnVzIFN1cGVybm92YURhdGEgU3VwZXJQbHVzIFN1cGVyc2NyaXB0IFN1cGVyc2NyaXB0Qm94IFN1cGVyc2NyaXB0Qm94T3B0aW9ucyBTdXBlcnNldCBTdXBlcnNldEVxdWFsIFN1cGVyU3RhciBTdXJkIFN1cmRGb3JtIFN1cmZhY2VBcmVhIFN1cmZhY2VDb2xvciBTdXJmYWNlRGF0YSBTdXJmYWNlR3JhcGhpY3MgU3Vydml2YWxEaXN0cmlidXRpb24gU3Vydml2YWxGdW5jdGlvbiBTdXJ2aXZhbE1vZGVsIFN1cnZpdmFsTW9kZWxGaXQgU3VzcGVuZFBhY2tldCBTdXp1a2lEaXN0cmlidXRpb24gU3V6dWtpR3JvdXBTdXogU3dhdGNoTGVnZW5kIFN3aXRjaCBTeW1ib2wgU3ltYm9sTmFtZSBTeW1sZXRXYXZlbGV0IFN5bW1ldHJpYyBTeW1tZXRyaWNHcm91cCBTeW1tZXRyaWNLZXkgU3ltbWV0cmljTWF0cml4USBTeW1tZXRyaWNQb2x5bm9taWFsIFN5bW1ldHJpY1JlZHVjdGlvbiBTeW1tZXRyaXplIFN5bW1ldHJpemVkQXJyYXkgU3ltbWV0cml6ZWRBcnJheVJ1bGVzIFN5bW1ldHJpemVkRGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZEluZGVwZW5kZW50Q29tcG9uZW50cyBTeW1tZXRyaXplZFJlcGxhY2VQYXJ0IFN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gU3luY2hyb25vdXNVcGRhdGluZyBTeW5vbnltcyBTeW50YXggU3ludGF4Rm9ybSBTeW50YXhJbmZvcm1hdGlvbiBTeW50YXhMZW5ndGggU3ludGF4UGFja2V0IFN5bnRheFEgU3ludGhlc2l6ZU1pc3NpbmdWYWx1ZXMgU3lzdGVtRGlhbG9nSW5wdXQgU3lzdGVtRXhjZXB0aW9uIFN5c3RlbUdldCBTeXN0ZW1IZWxwUGF0aCBTeXN0ZW1JbmZvcm1hdGlvbiBTeXN0ZW1JbmZvcm1hdGlvbkRhdGEgU3lzdGVtSW5zdGFsbCBTeXN0ZW1Nb2RlbCBTeXN0ZW1Nb2RlbGVyIFN5c3RlbU1vZGVsRXhhbXBsZXMgU3lzdGVtTW9kZWxMaW5lYXJpemUgU3lzdGVtTW9kZWxQYXJhbWV0cmljU2ltdWxhdGUgU3lzdGVtTW9kZWxQbG90IFN5c3RlbU1vZGVsUHJvZ3Jlc3NSZXBvcnRpbmcgU3lzdGVtTW9kZWxSZWxpYWJpbGl0eSBTeXN0ZW1Nb2RlbHMgU3lzdGVtTW9kZWxTaW11bGF0ZSBTeXN0ZW1Nb2RlbFNpbXVsYXRlU2Vuc2l0aXZpdHkgU3lzdGVtTW9kZWxTaW11bGF0aW9uRGF0YSBTeXN0ZW1PcGVuIFN5c3RlbU9wdGlvbnMgU3lzdGVtUHJvY2Vzc0RhdGEgU3lzdGVtUHJvY2Vzc2VzIFN5c3RlbXNDb25uZWN0aW9uc01vZGVsIFN5c3RlbXNNb2RlbERlbGF5IFN5c3RlbXNNb2RlbERlbGF5QXBwcm94aW1hdGUgU3lzdGVtc01vZGVsRGVsZXRlIFN5c3RlbXNNb2RlbERpbWVuc2lvbnMgU3lzdGVtc01vZGVsRXh0cmFjdCBTeXN0ZW1zTW9kZWxGZWVkYmFja0Nvbm5lY3QgU3lzdGVtc01vZGVsTGFiZWxzIFN5c3RlbXNNb2RlbExpbmVhcml0eSBTeXN0ZW1zTW9kZWxNZXJnZSBTeXN0ZW1zTW9kZWxPcmRlciBTeXN0ZW1zTW9kZWxQYXJhbGxlbENvbm5lY3QgU3lzdGVtc01vZGVsU2VyaWVzQ29ubmVjdCBTeXN0ZW1zTW9kZWxTdGF0ZUZlZWRiYWNrQ29ubmVjdCBTeXN0ZW1zTW9kZWxWZWN0b3JSZWxhdGl2ZU9yZGVycyBTeXN0ZW1TdHViIFN5c3RlbVRlc3QnICtcbiAgICAgICdUYWIgVGFiRmlsbGluZyBUYWJsZSBUYWJsZUFsaWdubWVudHMgVGFibGVEZXB0aCBUYWJsZURpcmVjdGlvbnMgVGFibGVGb3JtIFRhYmxlSGVhZGluZ3MgVGFibGVTcGFjaW5nIFRhYmxlVmlldyBUYWJsZVZpZXdCb3ggVGFibGVWaWV3Qm94QmFja2dyb3VuZCBUYWJsZVZpZXdCb3hPcHRpb25zIFRhYlNwYWNpbmdzIFRhYlZpZXcgVGFiVmlld0JveCBUYWJWaWV3Qm94T3B0aW9ucyBUYWdCb3ggVGFnQm94Tm90ZSBUYWdCb3hPcHRpb25zIFRhZ2dpbmdSdWxlcyBUYWdTZXQgVGFnU2V0RGVsYXllZCBUYWdTdHlsZSBUYWdVbnNldCBUYWtlIFRha2VEcm9wIFRha2VMYXJnZXN0IFRha2VMYXJnZXN0QnkgVGFrZUxpc3QgVGFrZVNtYWxsZXN0IFRha2VTbWFsbGVzdEJ5IFRha2VXaGlsZSBUYWxseSBUYW4gVGFuaCBUYXJnZXREZXZpY2UgVGFyZ2V0RnVuY3Rpb25zIFRhcmdldFN5c3RlbSBUYXJnZXRVbml0cyBUYXNrQWJvcnQgVGFza0V4ZWN1dGUgVGFza09iamVjdCBUYXNrUmVtb3ZlIFRhc2tSZXN1bWUgVGFza3MgVGFza1N1c3BlbmQgVGFza1dhaXQgVGF1dG9sb2d5USBUZWxlZ3JhcGhQcm9jZXNzIFRlbXBsYXRlQXBwbHkgVGVtcGxhdGVBcmdCb3ggVGVtcGxhdGVCb3ggVGVtcGxhdGVCb3hPcHRpb25zIFRlbXBsYXRlRXZhbHVhdGUgVGVtcGxhdGVFeHByZXNzaW9uIFRlbXBsYXRlSWYgVGVtcGxhdGVPYmplY3QgVGVtcGxhdGVTZXF1ZW5jZSBUZW1wbGF0ZVNsb3QgVGVtcGxhdGVTbG90U2VxdWVuY2UgVGVtcGxhdGVVbmV2YWx1YXRlZCBUZW1wbGF0ZVZlcmJhdGltIFRlbXBsYXRlV2l0aCBUZW1wb3JhbERhdGEgVGVtcG9yYWxSZWd1bGFyaXR5IFRlbXBvcmFyeSBUZW1wb3JhcnlWYXJpYWJsZSBUZW5zb3JDb250cmFjdCBUZW5zb3JEaW1lbnNpb25zIFRlbnNvckV4cGFuZCBUZW5zb3JQcm9kdWN0IFRlbnNvclEgVGVuc29yUmFuayBUZW5zb3JSZWR1Y2UgVGVuc29yU3ltbWV0cnkgVGVuc29yVHJhbnNwb3NlIFRlbnNvcldlZGdlIFRlc3RJRCBUZXN0UmVwb3J0IFRlc3RSZXBvcnRPYmplY3QgVGVzdFJlc3VsdE9iamVjdCBUZXRyYWhlZHJvbiBUZXRyYWhlZHJvbkJveCBUZXRyYWhlZHJvbkJveE9wdGlvbnMgVGVYRm9ybSBUZVhTYXZlIFRleHQgVGV4dDNEQm94IFRleHQzREJveE9wdGlvbnMgVGV4dEFsaWdubWVudCBUZXh0QmFuZCBUZXh0Qm91bmRpbmdCb3ggVGV4dEJveCBUZXh0Q2FzZXMgVGV4dENlbGwgVGV4dENsaXBib2FyZFR5cGUgVGV4dENvbnRlbnRzIFRleHREYXRhIFRleHRFbGVtZW50IFRleHRGb3JtIFRleHRHcmlkIFRleHRKdXN0aWZpY2F0aW9uIFRleHRMaW5lIFRleHRQYWNrZXQgVGV4dFBhcmFncmFwaCBUZXh0UG9zaXRpb24gVGV4dFJlY29nbml6ZSBUZXh0U2VhcmNoIFRleHRTZWFyY2hSZXBvcnQgVGV4dFNlbnRlbmNlcyBUZXh0U3RyaW5nIFRleHRTdHJ1Y3R1cmUgVGV4dFN0eWxlIFRleHRUcmFuc2xhdGlvbiBUZXh0dXJlIFRleHR1cmVDb29yZGluYXRlRnVuY3Rpb24gVGV4dHVyZUNvb3JkaW5hdGVTY2FsaW5nIFRleHRXb3JkcyBUaGVyZWZvcmUgVGhlcm1vZHluYW1pY0RhdGEgVGhlcm1vbWV0ZXJHYXVnZSBUaGljayBUaGlja25lc3MgVGhpbiBUaGlubmluZyBUaGlzTGluayBUaG9tcHNvbkdyb3VwVGggVGhyZWFkIFRocmVhZGluZ0xheWVyIFRocmVlSlN5bWJvbCBUaHJlc2hvbGQgVGhyb3VnaCBUaHJvdyBUaHVlTW9yc2UgVGh1bWJuYWlsIFRodXJzZGF5IFRpY2tzIFRpY2tzU3R5bGUgVGlkZURhdGEgVGlsZGUgVGlsZGVFcXVhbCBUaWxkZUZ1bGxFcXVhbCBUaWxkZVRpbGRlIFRpbWVDb25zdHJhaW5lZCBUaW1lQ29uc3RyYWludCBUaW1lRGlyZWN0aW9uIFRpbWVGb3JtYXQgVGltZUdvYWwgVGltZWxpbmVQbG90IFRpbWVPYmplY3QgVGltZU9iamVjdFEgVGltZXMgVGltZXNCeSBUaW1lU2VyaWVzIFRpbWVTZXJpZXNBZ2dyZWdhdGUgVGltZVNlcmllc0ZvcmVjYXN0IFRpbWVTZXJpZXNJbnNlcnQgVGltZVNlcmllc0ludmVydGliaWxpdHkgVGltZVNlcmllc01hcCBUaW1lU2VyaWVzTWFwVGhyZWFkIFRpbWVTZXJpZXNNb2RlbCBUaW1lU2VyaWVzTW9kZWxGaXQgVGltZVNlcmllc1Jlc2FtcGxlIFRpbWVTZXJpZXNSZXNjYWxlIFRpbWVTZXJpZXNTaGlmdCBUaW1lU2VyaWVzVGhyZWFkIFRpbWVTZXJpZXNXaW5kb3cgVGltZVVzZWQgVGltZVZhbHVlIFRpbWVXYXJwaW5nQ29ycmVzcG9uZGVuY2UgVGltZVdhcnBpbmdEaXN0YW5jZSBUaW1lWm9uZSBUaW1lWm9uZUNvbnZlcnQgVGltZVpvbmVPZmZzZXQgVGltaW5nIFRpbnkgVGl0bGVHcm91cGluZyBUaXRzR3JvdXBUIFRvQm94ZXMgVG9DaGFyYWN0ZXJDb2RlIFRvQ29sb3IgVG9Db250aW51b3VzVGltZU1vZGVsIFRvRGF0ZSBUb2RheSBUb0Rpc2NyZXRlVGltZU1vZGVsIFRvRW50aXR5IFRvZXBsaXR6TWF0cml4IFRvRXhwcmVzc2lvbiBUb0ZpbGVOYW1lIFRvZ2V0aGVyIFRvZ2dsZSBUb2dnbGVGYWxzZSBUb2dnbGVyIFRvZ2dsZXJCYXIgVG9nZ2xlckJveCBUb2dnbGVyQm94T3B0aW9ucyBUb0hlbGRFeHByZXNzaW9uIFRvSW52ZXJ0aWJsZVRpbWVTZXJpZXMgVG9rZW5Xb3JkcyBUb2xlcmFuY2UgVG9Mb3dlckNhc2UgVG9tb3Jyb3cgVG9OdW1iZXJGaWVsZCBUb29CaWcgVG9vbHRpcCBUb29sdGlwQm94IFRvb2x0aXBCb3hPcHRpb25zIFRvb2x0aXBEZWxheSBUb29sdGlwU3R5bGUgVG9wIFRvcEhhdFRyYW5zZm9ybSBUb1BvbGFyQ29vcmRpbmF0ZXMgVG9wb2xvZ2ljYWxTb3J0IFRvUmFkaWNhbHMgVG9SdWxlcyBUb1NwaGVyaWNhbENvb3JkaW5hdGVzIFRvU3RyaW5nIFRvdGFsIFRvdGFsSGVpZ2h0IFRvdGFsTGF5ZXIgVG90YWxWYXJpYXRpb25GaWx0ZXIgVG90YWxXaWR0aCBUb3VjaFBvc2l0aW9uIFRvdWNoc2NyZWVuQXV0b1pvb20gVG91Y2hzY3JlZW5Db250cm9sUGxhY2VtZW50IFRvVXBwZXJDYXNlIFRyIFRyYWNlIFRyYWNlQWJvdmUgVHJhY2VBY3Rpb24gVHJhY2VCYWNrd2FyZCBUcmFjZURlcHRoIFRyYWNlRGlhbG9nIFRyYWNlRm9yd2FyZCBUcmFjZUludGVybmFsIFRyYWNlTGV2ZWwgVHJhY2VPZmYgVHJhY2VPbiBUcmFjZU9yaWdpbmFsIFRyYWNlUHJpbnQgVHJhY2VTY2FuIFRyYWNrZWRTeW1ib2xzIFRyYWNraW5nRnVuY3Rpb24gVHJhY3lXaWRvbURpc3RyaWJ1dGlvbiBUcmFkaW5nQ2hhcnQgVHJhZGl0aW9uYWxGb3JtIFRyYWRpdGlvbmFsRnVuY3Rpb25Ob3RhdGlvbiBUcmFkaXRpb25hbE5vdGF0aW9uIFRyYWRpdGlvbmFsT3JkZXIgVHJhaW5pbmdQcm9ncmVzc0NoZWNrcG9pbnRpbmcgVHJhaW5pbmdQcm9ncmVzc0Z1bmN0aW9uIFRyYWluaW5nUHJvZ3Jlc3NNZWFzdXJlbWVudHMgVHJhaW5pbmdQcm9ncmVzc1JlcG9ydGluZyBUcmFpbmluZ1N0b3BwaW5nQ3JpdGVyaW9uIFRyYW5zZmVyRnVuY3Rpb25DYW5jZWwgVHJhbnNmZXJGdW5jdGlvbkV4cGFuZCBUcmFuc2ZlckZ1bmN0aW9uRmFjdG9yIFRyYW5zZmVyRnVuY3Rpb25Nb2RlbCBUcmFuc2ZlckZ1bmN0aW9uUG9sZXMgVHJhbnNmZXJGdW5jdGlvblRyYW5zZm9ybSBUcmFuc2ZlckZ1bmN0aW9uWmVyb3MgVHJhbnNmb3JtYXRpb25DbGFzcyBUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9uIFRyYW5zZm9ybWF0aW9uRnVuY3Rpb25zIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWVkRGlzdHJpYnV0aW9uIFRyYW5zZm9ybWVkRmllbGQgVHJhbnNmb3JtZWRQcm9jZXNzIFRyYW5zZm9ybWVkUmVnaW9uIFRyYW5zaXRpb25EaXJlY3Rpb24gVHJhbnNpdGlvbkR1cmF0aW9uIFRyYW5zaXRpb25FZmZlY3QgVHJhbnNpdGl2ZUNsb3N1cmVHcmFwaCBUcmFuc2l0aXZlUmVkdWN0aW9uR3JhcGggVHJhbnNsYXRlIFRyYW5zbGF0aW9uT3B0aW9ucyBUcmFuc2xhdGlvblRyYW5zZm9ybSBUcmFuc2xpdGVyYXRlIFRyYW5zcGFyZW50IFRyYW5zcGFyZW50Q29sb3IgVHJhbnNwb3NlIFRyYW5zcG9zZUxheWVyIFRyYXBTZWxlY3Rpb24gVHJhdmVsRGlyZWN0aW9ucyBUcmF2ZWxEaXJlY3Rpb25zRGF0YSBUcmF2ZWxEaXN0YW5jZSBUcmF2ZWxEaXN0YW5jZUxpc3QgVHJhdmVsTWV0aG9kIFRyYXZlbFRpbWUgVHJlZUZvcm0gVHJlZUdyYXBoIFRyZWVHcmFwaFEgVHJlZVBsb3QgVHJlbmRTdHlsZSBUcmlhbmdsZSBUcmlhbmdsZUNlbnRlciBUcmlhbmdsZUNvbnN0cnVjdCBUcmlhbmdsZU1lYXN1cmVtZW50IFRyaWFuZ2xlV2F2ZSBUcmlhbmd1bGFyRGlzdHJpYnV0aW9uIFRyaWFuZ3VsYXRlTWVzaCBUcmlnIFRyaWdFeHBhbmQgVHJpZ0ZhY3RvciBUcmlnRmFjdG9yTGlzdCBUcmlnZ2VyIFRyaWdSZWR1Y2UgVHJpZ1RvRXhwIFRyaW1tZWRNZWFuIFRyaW1tZWRWYXJpYW5jZSBUcm9waWNhbFN0b3JtRGF0YSBUcnVlIFRydWVRIFRydW5jYXRlZERpc3RyaWJ1dGlvbiBUcnVuY2F0ZWRQb2x5aGVkcm9uIFRzYWxsaXNRRXhwb25lbnRpYWxEaXN0cmlidXRpb24gVHNhbGxpc1FHYXVzc2lhbkRpc3RyaWJ1dGlvbiBUVGVzdCBUdWJlIFR1YmVCZXppZXJDdXJ2ZUJveCBUdWJlQmV6aWVyQ3VydmVCb3hPcHRpb25zIFR1YmVCb3ggVHViZUJveE9wdGlvbnMgVHViZUJTcGxpbmVDdXJ2ZUJveCBUdWJlQlNwbGluZUN1cnZlQm94T3B0aW9ucyBUdWVzZGF5IFR1a2V5TGFtYmRhRGlzdHJpYnV0aW9uIFR1a2V5V2luZG93IFR1bm5lbERhdGEgVHVwbGVzIFR1cmFuR3JhcGggVHVyaW5nTWFjaGluZSBUdXR0ZVBvbHlub21pYWwgVHdvV2F5UnVsZSBUeXBlZCBUeXBlU3BlY2lmaWVyJyArXG4gICAgICAnVW5hdGVRIFVuY29tcHJlc3MgVW5jb25zdHJhaW5lZFBhcmFtZXRlcnMgVW5kZWZpbmVkIFVuZGVyQmFyIFVuZGVyZmxvdyBVbmRlcmxpbmVkIFVuZGVyb3ZlcnNjcmlwdCBVbmRlcm92ZXJzY3JpcHRCb3ggVW5kZXJvdmVyc2NyaXB0Qm94T3B0aW9ucyBVbmRlcnNjcmlwdCBVbmRlcnNjcmlwdEJveCBVbmRlcnNjcmlwdEJveE9wdGlvbnMgVW5kZXJzZWFGZWF0dXJlRGF0YSBVbmRpcmVjdGVkRWRnZSBVbmRpcmVjdGVkR3JhcGggVW5kaXJlY3RlZEdyYXBoUSBVbmRvT3B0aW9ucyBVbmRvVHJhY2tlZFZhcmlhYmxlcyBVbmVxdWFsIFVuZXF1YWxUbyBVbmV2YWx1YXRlZCBVbmlmb3JtRGlzdHJpYnV0aW9uIFVuaWZvcm1HcmFwaERpc3RyaWJ1dGlvbiBVbmlmb3JtUG9seWhlZHJvbiBVbmlmb3JtU3VtRGlzdHJpYnV0aW9uIFVuaW5zdGFsbCBVbmlvbiBVbmlvblBsdXMgVW5pcXVlIFVuaXRhcnlNYXRyaXhRIFVuaXRCb3ggVW5pdENvbnZlcnQgVW5pdERpbWVuc2lvbnMgVW5pdGl6ZSBVbml0Um9vdFRlc3QgVW5pdFNpbXBsaWZ5IFVuaXRTdGVwIFVuaXRTeXN0ZW0gVW5pdFRyaWFuZ2xlIFVuaXRWZWN0b3IgVW5pdFZlY3RvckxheWVyIFVuaXR5RGltZW5zaW9ucyBVbml2ZXJzZU1vZGVsRGF0YSBVbml2ZXJzaXR5RGF0YSBVbml4VGltZSBVbnByb3RlY3QgVW5yZWdpc3RlckV4dGVybmFsRXZhbHVhdG9yIFVuc2FtZVEgVW5zYXZlZFZhcmlhYmxlcyBVbnNldCBVbnNldFNoYXJlZCBVbnRyYWNrZWRWYXJpYWJsZXMgVXAgVXBBcnJvdyBVcEFycm93QmFyIFVwQXJyb3dEb3duQXJyb3cgVXBkYXRlIFVwZGF0ZUR5bmFtaWNPYmplY3RzIFVwZGF0ZUR5bmFtaWNPYmplY3RzU3luY2hyb25vdXMgVXBkYXRlSW50ZXJ2YWwgVXBkYXRlU2VhcmNoSW5kZXggVXBEb3duQXJyb3cgVXBFcXVpbGlicml1bSBVcHBlckNhc2VRIFVwcGVyTGVmdEFycm93IFVwcGVyUmlnaHRBcnJvdyBVcHBlclRyaWFuZ3VsYXJpemUgVXBwZXJUcmlhbmd1bGFyTWF0cml4USBVcHNhbXBsZSBVcFNldCBVcFNldERlbGF5ZWQgVXBUZWUgVXBUZWVBcnJvdyBVcFRvIFVwVmFsdWVzIFVSTCBVUkxCdWlsZCBVUkxEZWNvZGUgVVJMRGlzcGF0Y2hlciBVUkxEb3dubG9hZCBVUkxEb3dubG9hZFN1Ym1pdCBVUkxFbmNvZGUgVVJMRXhlY3V0ZSBVUkxFeHBhbmQgVVJMRmV0Y2ggVVJMRmV0Y2hBc3luY2hyb25vdXMgVVJMUGFyc2UgVVJMUXVlcnlEZWNvZGUgVVJMUXVlcnlFbmNvZGUgVVJMUmVhZCBVUkxSZXNwb25zZVRpbWUgVVJMU2F2ZSBVUkxTYXZlQXN5bmNocm9ub3VzIFVSTFNob3J0ZW4gVVJMU3VibWl0IFVzZUdyYXBoaWNzUmFuZ2UgVXNlckRlZmluZWRXYXZlbGV0IFVzaW5nIFVzaW5nRnJvbnRFbmQgVXRpbGl0eUZ1bmN0aW9uJyArXG4gICAgICAnVjJHZXQgVmFsZW5jZUVycm9ySGFuZGxpbmcgVmFsaWRhdGlvbkxlbmd0aCBWYWxpZGF0aW9uU2V0IFZhbHVlIFZhbHVlQm94IFZhbHVlQm94T3B0aW9ucyBWYWx1ZURpbWVuc2lvbnMgVmFsdWVGb3JtIFZhbHVlUHJlcHJvY2Vzc2luZ0Z1bmN0aW9uIFZhbHVlUSBWYWx1ZXMgVmFsdWVzRGF0YSBWYXJpYWJsZXMgVmFyaWFuY2UgVmFyaWFuY2VFcXVpdmFsZW5jZVRlc3QgVmFyaWFuY2VFc3RpbWF0b3JGdW5jdGlvbiBWYXJpYW5jZUdhbW1hRGlzdHJpYnV0aW9uIFZhcmlhbmNlVGVzdCBWZWN0b3JBbmdsZSBWZWN0b3JBcm91bmQgVmVjdG9yQ29sb3JGdW5jdGlvbiBWZWN0b3JDb2xvckZ1bmN0aW9uU2NhbGluZyBWZWN0b3JEZW5zaXR5UGxvdCBWZWN0b3JHbHlwaERhdGEgVmVjdG9yR3JlYXRlciBWZWN0b3JHcmVhdGVyRXF1YWwgVmVjdG9yTGVzcyBWZWN0b3JMZXNzRXF1YWwgVmVjdG9yTWFya2VycyBWZWN0b3JQbG90IFZlY3RvclBsb3QzRCBWZWN0b3JQb2ludHMgVmVjdG9yUSBWZWN0b3JzIFZlY3RvclNjYWxlIFZlY3RvclN0eWxlIFZlZSBWZXJiYXRpbSBWZXJib3NlIFZlcmJvc2VDb252ZXJ0VG9Qb3N0U2NyaXB0UGFja2V0IFZlcmlmaWNhdGlvblRlc3QgVmVyaWZ5Q29udmVyZ2VuY2UgVmVyaWZ5RGVyaXZlZEtleSBWZXJpZnlEaWdpdGFsU2lnbmF0dXJlIFZlcmlmeUludGVycHJldGF0aW9uIFZlcmlmeVNlY3VyaXR5Q2VydGlmaWNhdGVzIFZlcmlmeVNvbHV0aW9ucyBWZXJpZnlUZXN0QXNzdW1wdGlvbnMgVmVyc2lvbiBWZXJzaW9uTnVtYmVyIFZlcnRleEFkZCBWZXJ0ZXhDYXBhY2l0eSBWZXJ0ZXhDb2xvcnMgVmVydGV4Q29tcG9uZW50IFZlcnRleENvbm5lY3Rpdml0eSBWZXJ0ZXhDb250cmFjdCBWZXJ0ZXhDb29yZGluYXRlUnVsZXMgVmVydGV4Q29vcmRpbmF0ZXMgVmVydGV4Q29ycmVsYXRpb25TaW1pbGFyaXR5IFZlcnRleENvc2luZVNpbWlsYXJpdHkgVmVydGV4Q291bnQgVmVydGV4Q292ZXJRIFZlcnRleERhdGFDb29yZGluYXRlcyBWZXJ0ZXhEZWdyZWUgVmVydGV4RGVsZXRlIFZlcnRleERpY2VTaW1pbGFyaXR5IFZlcnRleEVjY2VudHJpY2l0eSBWZXJ0ZXhJbkNvbXBvbmVudCBWZXJ0ZXhJbkRlZ3JlZSBWZXJ0ZXhJbmRleCBWZXJ0ZXhKYWNjYXJkU2ltaWxhcml0eSBWZXJ0ZXhMYWJlbGluZyBWZXJ0ZXhMYWJlbHMgVmVydGV4TGFiZWxTdHlsZSBWZXJ0ZXhMaXN0IFZlcnRleE5vcm1hbHMgVmVydGV4T3V0Q29tcG9uZW50IFZlcnRleE91dERlZ3JlZSBWZXJ0ZXhRIFZlcnRleFJlbmRlcmluZ0Z1bmN0aW9uIFZlcnRleFJlcGxhY2UgVmVydGV4U2hhcGUgVmVydGV4U2hhcGVGdW5jdGlvbiBWZXJ0ZXhTaXplIFZlcnRleFN0eWxlIFZlcnRleFRleHR1cmVDb29yZGluYXRlcyBWZXJ0ZXhXZWlnaHQgVmVydGV4V2VpZ2h0ZWRHcmFwaFEgVmVydGljYWwgVmVydGljYWxCYXIgVmVydGljYWxGb3JtIFZlcnRpY2FsR2F1Z2UgVmVydGljYWxTZXBhcmF0b3IgVmVydGljYWxTbGlkZXIgVmVydGljYWxUaWxkZSBWaWV3QW5nbGUgVmlld0NlbnRlciBWaWV3TWF0cml4IFZpZXdQb2ludCBWaWV3UG9pbnRTZWxlY3RvclNldHRpbmdzIFZpZXdQb3J0IFZpZXdQcm9qZWN0aW9uIFZpZXdSYW5nZSBWaWV3VmVjdG9yIFZpZXdWZXJ0aWNhbCBWaXJ0dWFsR3JvdXBEYXRhIFZpc2libGUgVmlzaWJsZUNlbGwgVm9pY2VTdHlsZURhdGEgVm9pZ3REaXN0cmlidXRpb24gVm9sY2Fub0RhdGEgVm9sdW1lIFZvbk1pc2VzRGlzdHJpYnV0aW9uIFZvcm9ub2lNZXNoJyArXG4gICAgICAnV2FpdEFsbCBXYWl0QXN5bmNocm9ub3VzVGFzayBXYWl0TmV4dCBXYWl0VW50aWwgV2FrZWJ5RGlzdHJpYnV0aW9uIFdhbGxlbml1c0h5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIFdhcmluZ1l1bGVEaXN0cmlidXRpb24gV2FycGluZ0NvcnJlc3BvbmRlbmNlIFdhcnBpbmdEaXN0YW5jZSBXYXRlcnNoZWRDb21wb25lbnRzIFdhdHNvblVTcXVhcmVUZXN0IFdhdHRzU3Ryb2dhdHpHcmFwaERpc3RyaWJ1dGlvbiBXYXZlbGV0QmVzdEJhc2lzIFdhdmVsZXRGaWx0ZXJDb2VmZmljaWVudHMgV2F2ZWxldEltYWdlUGxvdCBXYXZlbGV0TGlzdFBsb3QgV2F2ZWxldE1hcEluZGV4ZWQgV2F2ZWxldE1hdHJpeFBsb3QgV2F2ZWxldFBoaSBXYXZlbGV0UHNpIFdhdmVsZXRTY2FsZSBXYXZlbGV0U2NhbG9ncmFtIFdhdmVsZXRUaHJlc2hvbGQgV2Vha2x5Q29ubmVjdGVkQ29tcG9uZW50cyBXZWFrbHlDb25uZWN0ZWRHcmFwaENvbXBvbmVudHMgV2Vha2x5Q29ubmVjdGVkR3JhcGhRIFdlYWtTdGF0aW9uYXJpdHkgV2VhdGhlckRhdGEgV2VhdGhlckZvcmVjYXN0RGF0YSBXZWJBdWRpb1NlYXJjaCBXZWJFbGVtZW50T2JqZWN0IFdlYmVyRSBXZWJFeGVjdXRlIFdlYkltYWdlIFdlYkltYWdlU2VhcmNoIFdlYlNlYXJjaCBXZWJTZXNzaW9uT2JqZWN0IFdlYlNlc3Npb25zIFdlYldpbmRvd09iamVjdCBXZWRnZSBXZWRuZXNkYXkgV2VpYnVsbERpc3RyaWJ1dGlvbiBXZWllcnN0cmFzc0UxIFdlaWVyc3RyYXNzRTIgV2VpZXJzdHJhc3NFMyBXZWllcnN0cmFzc0V0YTEgV2VpZXJzdHJhc3NFdGEyIFdlaWVyc3RyYXNzRXRhMyBXZWllcnN0cmFzc0hhbGZQZXJpb2RzIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcxIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFcyIFdlaWVyc3RyYXNzSGFsZlBlcmlvZFczIFdlaWVyc3RyYXNzSW52YXJpYW50RzIgV2VpZXJzdHJhc3NJbnZhcmlhbnRHMyBXZWllcnN0cmFzc0ludmFyaWFudHMgV2VpZXJzdHJhc3NQIFdlaWVyc3RyYXNzUFByaW1lIFdlaWVyc3RyYXNzU2lnbWEgV2VpZXJzdHJhc3NaZXRhIFdlaWdodGVkQWRqYWNlbmN5R3JhcGggV2VpZ2h0ZWRBZGphY2VuY3lNYXRyaXggV2VpZ2h0ZWREYXRhIFdlaWdodGVkR3JhcGhRIFdlaWdodHMgV2VsY2hXaW5kb3cgV2hlZWxHcmFwaCBXaGVuRXZlbnQgV2hpY2ggV2hpbGUgV2hpdGUgV2hpdGVOb2lzZVByb2Nlc3MgV2hpdGVQb2ludCBXaGl0ZXNwYWNlIFdoaXRlc3BhY2VDaGFyYWN0ZXIgV2hpdHRha2VyTSBXaGl0dGFrZXJXIFdpZW5lckZpbHRlciBXaWVuZXJQcm9jZXNzIFdpZ25lckQgV2lnbmVyU2VtaWNpcmNsZURpc3RyaWJ1dGlvbiBXaWtpcGVkaWFEYXRhIFdpa2lwZWRpYVNlYXJjaCBXaWxrc1cgV2lsa3NXVGVzdCBXaW5kRGlyZWN0aW9uRGF0YSBXaW5kaW5nQ291bnQgV2luZGluZ1BvbHlnb24gV2luZG93Q2xpY2tTZWxlY3QgV2luZG93RWxlbWVudHMgV2luZG93RmxvYXRpbmcgV2luZG93RnJhbWUgV2luZG93RnJhbWVFbGVtZW50cyBXaW5kb3dNYXJnaW5zIFdpbmRvd01vdmFibGUgV2luZG93T3BhY2l0eSBXaW5kb3dQZXJzaXN0ZW50U3R5bGVzIFdpbmRvd1NlbGVjdGVkIFdpbmRvd1NpemUgV2luZG93U3RhdHVzQXJlYSBXaW5kb3dUaXRsZSBXaW5kb3dUb29sYmFycyBXaW5kb3dXaWR0aCBXaW5kU3BlZWREYXRhIFdpbmRWZWN0b3JEYXRhIFdpbnNvcml6ZWRNZWFuIFdpbnNvcml6ZWRWYXJpYW5jZSBXaXNoYXJ0TWF0cml4RGlzdHJpYnV0aW9uIFdpdGggV29sZnJhbUFscGhhIFdvbGZyYW1BbHBoYURhdGUgV29sZnJhbUFscGhhUXVhbnRpdHkgV29sZnJhbUFscGhhUmVzdWx0IFdvbGZyYW1MYW5ndWFnZURhdGEgV29yZCBXb3JkQm91bmRhcnkgV29yZENoYXJhY3RlciBXb3JkQ2xvdWQgV29yZENvdW50IFdvcmRDb3VudHMgV29yZERhdGEgV29yZERlZmluaXRpb24gV29yZEZyZXF1ZW5jeSBXb3JkRnJlcXVlbmN5RGF0YSBXb3JkTGlzdCBXb3JkT3JpZW50YXRpb24gV29yZFNlYXJjaCBXb3JkU2VsZWN0aW9uRnVuY3Rpb24gV29yZFNlcGFyYXRvcnMgV29yZFNwYWNpbmdzIFdvcmRTdGVtIFdvcmRUcmFuc2xhdGlvbiBXb3JraW5nUHJlY2lzaW9uIFdyYXBBcm91bmQgV3JpdGUgV3JpdGVMaW5lIFdyaXRlU3RyaW5nIFdyb25za2lhbicgK1xuICAgICAgJ1hNTEVsZW1lbnQgWE1MT2JqZWN0IFhNTFRlbXBsYXRlIFhub3IgWG9yIFhZWkNvbG9yJyArXG4gICAgICAnWWVsbG93IFllc3RlcmRheSBZdWxlRGlzc2ltaWxhcml0eScgK1xuICAgICAgJ1plcm5pa2VSIFplcm9TeW1tZXRyaWMgWmVyb1Rlc3QgWmVyb1dpZHRoVGltZXMgWmV0YSBaZXRhWmVybyBaSVBDb2RlRGF0YSBaaXBmRGlzdHJpYnV0aW9uIFpvb21DZW50ZXIgWm9vbUZhY3RvciBaVGVzdCBaVHJhbnNmb3JtJyArXG4gICAgICAnJEFib3J0ZWQgJEFjdGl2YXRpb25Hcm91cElEICRBY3RpdmF0aW9uS2V5ICRBY3RpdmF0aW9uVXNlclJlZ2lzdGVyZWQgJEFkZE9uc0RpcmVjdG9yeSAkQWxsb3dFeHRlcm5hbENoYW5uZWxGdW5jdGlvbnMgJEFzc2VydEZ1bmN0aW9uICRBc3N1bXB0aW9ucyAkQXN5bmNocm9ub3VzVGFzayAkQXVkaW9JbnB1dERldmljZXMgJEF1ZGlvT3V0cHV0RGV2aWNlcyAkQmFzZURpcmVjdG9yeSAkQmF0Y2hJbnB1dCAkQmF0Y2hPdXRwdXQgJEJsb2NrY2hhaW5CYXNlICRCb3hGb3JtcyAkQnl0ZU9yZGVyaW5nICRDYWNoZUJhc2VEaXJlY3RvcnkgJENhbmNlbGVkICRDaGFubmVsQmFzZSAkQ2hhcmFjdGVyRW5jb2RpbmcgJENoYXJhY3RlckVuY29kaW5ncyAkQ2xvdWRCYXNlICRDbG91ZENvbm5lY3RlZCAkQ2xvdWRDcmVkaXRzQXZhaWxhYmxlICRDbG91ZEV2YWx1YXRpb24gJENsb3VkRXhwcmVzc2lvbkJhc2UgJENsb3VkT2JqZWN0TmFtZUZvcm1hdCAkQ2xvdWRPYmplY3RVUkxUeXBlICRDbG91ZFJvb3REaXJlY3RvcnkgJENsb3VkU3ltYm9sQmFzZSAkQ2xvdWRVc2VySUQgJENsb3VkVXNlclVVSUQgJENsb3VkVmVyc2lvbiAkQ2xvdWRWZXJzaW9uTnVtYmVyICRDbG91ZFdvbGZyYW1FbmdpbmVWZXJzaW9uTnVtYmVyICRDb21tYW5kTGluZSAkQ29tcGlsYXRpb25UYXJnZXQgJENvbmRpdGlvbkhvbGQgJENvbmZpZ3VyZWRLZXJuZWxzICRDb250ZXh0ICRDb250ZXh0UGF0aCAkQ29udHJvbEFjdGl2ZVNldHRpbmcgJENvb2tpZXMgJENvb2tpZVN0b3JlICRDcmVhdGlvbkRhdGUgJEN1cnJlbnRMaW5rICRDdXJyZW50VGFzayAkQ3VycmVudFdlYlNlc3Npb24gJERhdGVTdHJpbmdGb3JtYXQgJERlZmF1bHRBdWRpb0lucHV0RGV2aWNlICREZWZhdWx0QXVkaW9PdXRwdXREZXZpY2UgJERlZmF1bHRGb250ICREZWZhdWx0RnJvbnRFbmQgJERlZmF1bHRJbWFnaW5nRGV2aWNlICREZWZhdWx0TG9jYWxCYXNlICREZWZhdWx0TWFpbGJveCAkRGVmYXVsdE5ldHdvcmtJbnRlcmZhY2UgJERlZmF1bHRQYXRoICREaXNwbGF5ICREaXNwbGF5RnVuY3Rpb24gJERpc3RyaWJ1dGVkQ29udGV4dHMgJER5bmFtaWNFdmFsdWF0aW9uICRFY2hvICRFbWJlZENvZGVFbnZpcm9ubWVudHMgJEVtYmVkZGFibGVTZXJ2aWNlcyAkRW50aXR5U3RvcmVzICRFcGlsb2cgJEV2YWx1YXRpb25DbG91ZEJhc2UgJEV2YWx1YXRpb25DbG91ZE9iamVjdCAkRXZhbHVhdGlvbkVudmlyb25tZW50ICRFeHBvcnRGb3JtYXRzICRGYWlsZWQgJEZpbmFuY2lhbERhdGFTb3VyY2UgJEZvbnRGYW1pbGllcyAkRm9ybWF0VHlwZSAkRnJvbnRFbmQgJEZyb250RW5kU2Vzc2lvbiAkR2VvRW50aXR5VHlwZXMgJEdlb0xvY2F0aW9uICRHZW9Mb2NhdGlvbkNpdHkgJEdlb0xvY2F0aW9uQ291bnRyeSAkR2VvTG9jYXRpb25QcmVjaXNpb24gJEdlb0xvY2F0aW9uU291cmNlICRIaXN0b3J5TGVuZ3RoICRIb21lRGlyZWN0b3J5ICRIVE1MRXhwb3J0UnVsZXMgJEhUVFBDb29raWVzICRIVFRQUmVxdWVzdCAkSWdub3JlRU9GICRJbWFnZUZvcm1hdHRpbmdXaWR0aCAkSW1hZ2luZ0RldmljZSAkSW1hZ2luZ0RldmljZXMgJEltcG9ydEZvcm1hdHMgJEluY29taW5nTWFpbFNldHRpbmdzICRJbml0aWFsRGlyZWN0b3J5ICRJbml0aWFsaXphdGlvbiAkSW5pdGlhbGl6YXRpb25Db250ZXh0cyAkSW5wdXQgJElucHV0RmlsZU5hbWUgJElucHV0U3RyZWFtTWV0aG9kcyAkSW5zcGVjdG9yICRJbnN0YWxsYXRpb25EYXRlICRJbnN0YWxsYXRpb25EaXJlY3RvcnkgJEludGVyZmFjZUVudmlyb25tZW50ICRJbnRlcnByZXRlclR5cGVzICRJdGVyYXRpb25MaW1pdCAkS2VybmVsQ291bnQgJEtlcm5lbElEICRMYW5ndWFnZSAkTGF1bmNoRGlyZWN0b3J5ICRMaWJyYXJ5UGF0aCAkTGljZW5zZUV4cGlyYXRpb25EYXRlICRMaWNlbnNlSUQgJExpY2Vuc2VQcm9jZXNzZXMgJExpY2Vuc2VTZXJ2ZXIgJExpY2Vuc2VTdWJwcm9jZXNzZXMgJExpY2Vuc2VUeXBlICRMaW5lICRMaW5rZWQgJExpbmtTdXBwb3J0ZWQgJExvYWRlZEZpbGVzICRMb2NhbEJhc2UgJExvY2FsU3ltYm9sQmFzZSAkTWFjaGluZUFkZHJlc3NlcyAkTWFjaGluZURvbWFpbiAkTWFjaGluZURvbWFpbnMgJE1hY2hpbmVFcHNpbG9uICRNYWNoaW5lSUQgJE1hY2hpbmVOYW1lICRNYWNoaW5lUHJlY2lzaW9uICRNYWNoaW5lVHlwZSAkTWF4RXh0cmFQcmVjaXNpb24gJE1heExpY2Vuc2VQcm9jZXNzZXMgJE1heExpY2Vuc2VTdWJwcm9jZXNzZXMgJE1heE1hY2hpbmVOdW1iZXIgJE1heE51bWJlciAkTWF4UGllY2V3aXNlQ2FzZXMgJE1heFByZWNpc2lvbiAkTWF4Um9vdERlZ3JlZSAkTWVzc2FnZUdyb3VwcyAkTWVzc2FnZUxpc3QgJE1lc3NhZ2VQcmVQcmludCAkTWVzc2FnZXMgJE1pbk1hY2hpbmVOdW1iZXIgJE1pbk51bWJlciAkTWlub3JSZWxlYXNlTnVtYmVyICRNaW5QcmVjaXNpb24gJE1vYmlsZVBob25lICRNb2R1bGVOdW1iZXIgJE5ldHdvcmtDb25uZWN0ZWQgJE5ldHdvcmtJbnRlcmZhY2VzICROZXR3b3JrTGljZW5zZSAkTmV3TWVzc2FnZSAkTmV3U3ltYm9sICROb3RlYm9va3MgJE5vVmFsdWUgJE51bWJlck1hcmtzICRPZmYgJE9wZXJhdGluZ1N5c3RlbSAkT3V0cHV0ICRPdXRwdXRGb3JtcyAkT3V0cHV0U2l6ZUxpbWl0ICRPdXRwdXRTdHJlYW1NZXRob2RzICRQYWNrYWdlcyAkUGFyZW50TGluayAkUGFyZW50UHJvY2Vzc0lEICRQYXNzd29yZEZpbGUgJFBhdGNoTGV2ZWxJRCAkUGF0aCAkUGF0aG5hbWVTZXBhcmF0b3IgJFBlcmZvcm1hbmNlR29hbCAkUGVybWlzc2lvbnMgJFBlcm1pc3Npb25zR3JvdXBCYXNlICRQZXJzaXN0ZW5jZUJhc2UgJFBlcnNpc3RlbmNlUGF0aCAkUGlwZVN1cHBvcnRlZCAkUGxvdFRoZW1lICRQb3N0ICRQcmUgJFByZWZlcmVuY2VzRGlyZWN0b3J5ICRQcmVJbml0aWFsaXphdGlvbiAkUHJlUHJpbnQgJFByZVJlYWQgJFByaW50Rm9ybXMgJFByaW50TGl0ZXJhbCAkUHJpbnRvdXQzRFByZXZpZXdlciAkUHJvY2Vzc0lEICRQcm9jZXNzb3JDb3VudCAkUHJvY2Vzc29yVHlwZSAkUHJvZHVjdEluZm9ybWF0aW9uICRQcm9ncmFtTmFtZSAkUHVibGlzaGVySUQgJFJhbmRvbVN0YXRlICRSZWN1cnNpb25MaW1pdCAkUmVnaXN0ZXJlZERldmljZUNsYXNzZXMgJFJlZ2lzdGVyZWRVc2VyTmFtZSAkUmVsZWFzZU51bWJlciAkUmVxdWVzdGVyQWRkcmVzcyAkUmVxdWVzdGVyV29sZnJhbUlEICRSZXF1ZXN0ZXJXb2xmcmFtVVVJRCAkUmVzb3VyY2VTeXN0ZW1CYXNlICRSb290RGlyZWN0b3J5ICRTY2hlZHVsZWRUYXNrICRTY3JpcHRDb21tYW5kTGluZSAkU2NyaXB0SW5wdXRTdHJpbmcgJFNlY3VyZWRBdXRoZW50aWNhdGlvbktleVRva2VucyAkU2VydmljZUNyZWRpdHNBdmFpbGFibGUgJFNlcnZpY2VzICRTZXNzaW9uSUQgJFNldFBhcmVudExpbmsgJFNoYXJlZEZ1bmN0aW9ucyAkU2hhcmVkVmFyaWFibGVzICRTb3VuZERpc3BsYXkgJFNvdW5kRGlzcGxheUZ1bmN0aW9uICRTb3VyY2VMaW5rICRTU0hBdXRoZW50aWNhdGlvbiAkU3VtbWFyeUJveERhdGFTaXplTGltaXQgJFN1cHByZXNzSW5wdXRGb3JtSGVhZHMgJFN5bmNocm9ub3VzRXZhbHVhdGlvbiAkU3ludGF4SGFuZGxlciAkU3lzdGVtICRTeXN0ZW1DaGFyYWN0ZXJFbmNvZGluZyAkU3lzdGVtSUQgJFN5c3RlbU1lbW9yeSAkU3lzdGVtU2hlbGwgJFN5c3RlbVRpbWVab25lICRTeXN0ZW1Xb3JkTGVuZ3RoICRUZW1wbGF0ZVBhdGggJFRlbXBvcmFyeURpcmVjdG9yeSAkVGVtcG9yYXJ5UHJlZml4ICRUZXN0RmlsZU5hbWUgJFRleHRTdHlsZSAkVGltZWRPdXQgJFRpbWVVbml0ICRUaW1lWm9uZSAkVGltZVpvbmVFbnRpdHkgJFRvcERpcmVjdG9yeSAkVHJhY2VPZmYgJFRyYWNlT24gJFRyYWNlUGF0dGVybiAkVHJhY2VQb3N0QWN0aW9uICRUcmFjZVByZUFjdGlvbiAkVW5pdFN5c3RlbSAkVXJnZW50ICRVc2VyQWRkT25zRGlyZWN0b3J5ICRVc2VyQWdlbnRMYW5ndWFnZXMgJFVzZXJBZ2VudE1hY2hpbmUgJFVzZXJBZ2VudE5hbWUgJFVzZXJBZ2VudE9wZXJhdGluZ1N5c3RlbSAkVXNlckFnZW50U3RyaW5nICRVc2VyQWdlbnRWZXJzaW9uICRVc2VyQmFzZURpcmVjdG9yeSAkVXNlckRvY3VtZW50c0RpcmVjdG9yeSAkVXNlcm5hbWUgJFVzZXJOYW1lICRVc2VyVVJMQmFzZSAkVmVyc2lvbiAkVmVyc2lvbk51bWJlciAkVm9pY2VTdHlsZXMgJFdvbGZyYW1JRCAkV29sZnJhbVVVSUQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLypcbiAgRm9ybWFsIHN5bnRheCBpcyBub3QgcHVibGlzaGVkLCBoZWxwZnVsIGxpbms6XG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9rb3JuaWxvdmEtbC9tYXRsYWItSW50ZWxsaUotcGx1Z2luL2Jsb2IvbWFzdGVyL3NyYy9tYWluL2dyYW1tYXIvTWF0bGFiLmJuZlxuKi9cbmZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgVFJBTlNQT1NFX1JFID0gJyhcXCd8XFxcXC5cXCcpKyc7XG4gIHZhciBUUkFOU1BPU0UgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luOiBUUkFOU1BPU0VfUkUgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYnJlYWsgY2FzZSBjYXRjaCBjbGFzc2RlZiBjb250aW51ZSBlbHNlIGVsc2VpZiBlbmQgZW51bWVyYXRlZCBldmVudHMgZm9yIGZ1bmN0aW9uICcgK1xuICAgICAgICAnZ2xvYmFsIGlmIG1ldGhvZHMgb3RoZXJ3aXNlIHBhcmZvciBwZXJzaXN0ZW50IHByb3BlcnRpZXMgcmV0dXJuIHNwbWQgc3dpdGNoIHRyeSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NpbiBzaW5kIHNpbmggYXNpbiBhc2luZCBhc2luaCBjb3MgY29zZCBjb3NoIGFjb3MgYWNvc2QgYWNvc2ggdGFuIHRhbmQgdGFuaCBhdGFuICcgK1xuICAgICAgICAnYXRhbmQgYXRhbjIgYXRhbmggc2VjIHNlY2Qgc2VjaCBhc2VjIGFzZWNkIGFzZWNoIGNzYyBjc2NkIGNzY2ggYWNzYyBhY3NjZCBhY3NjaCBjb3QgJyArXG4gICAgICAgICdjb3RkIGNvdGggYWNvdCBhY290ZCBhY290aCBoeXBvdCBleHAgZXhwbTEgbG9nIGxvZzFwIGxvZzEwIGxvZzIgcG93MiByZWFscG93IHJlYWxsb2cgJyArXG4gICAgICAgICdyZWFsc3FydCBzcXJ0IG50aHJvb3QgbmV4dHBvdzIgYWJzIGFuZ2xlIGNvbXBsZXggY29uaiBpbWFnIHJlYWwgdW53cmFwIGlzcmVhbCAnICtcbiAgICAgICAgJ2NwbHhwYWlyIGZpeCBmbG9vciBjZWlsIHJvdW5kIG1vZCByZW0gc2lnbiBhaXJ5IGJlc3NlbGogYmVzc2VseSBiZXNzZWxoIGJlc3NlbGkgJyArXG4gICAgICAgICdiZXNzZWxrIGJldGEgYmV0YWluYyBiZXRhbG4gZWxsaXBqIGVsbGlwa2UgZXJmIGVyZmMgZXJmY3ggZXJmaW52IGV4cGludCBnYW1tYSAnICtcbiAgICAgICAgJ2dhbW1haW5jIGdhbW1hbG4gcHNpIGxlZ2VuZHJlIGNyb3NzIGRvdCBmYWN0b3IgaXNwcmltZSBwcmltZXMgZ2NkIGxjbSByYXQgcmF0cyBwZXJtcyAnICtcbiAgICAgICAgJ25jaG9vc2VrIGZhY3RvcmlhbCBjYXJ0MnNwaCBjYXJ0MnBvbCBwb2wyY2FydCBzcGgyY2FydCBoc3YycmdiIHJnYjJoc3YgemVyb3Mgb25lcyAnICtcbiAgICAgICAgJ2V5ZSByZXBtYXQgcmFuZCByYW5kbiBsaW5zcGFjZSBsb2dzcGFjZSBmcmVxc3BhY2UgbWVzaGdyaWQgYWNjdW1hcnJheSBzaXplIGxlbmd0aCAnICtcbiAgICAgICAgJ25kaW1zIG51bWVsIGRpc3AgaXNlbXB0eSBpc2VxdWFsIGlzZXF1YWx3aXRoZXF1YWxuYW5zIGNhdCByZXNoYXBlIGRpYWcgYmxrZGlhZyB0cmlsICcgK1xuICAgICAgICAndHJpdSBmbGlwbHIgZmxpcHVkIGZsaXBkaW0gcm90OTAgZmluZCBzdWIyaW5kIGluZDJzdWIgYnN4ZnVuIG5kZ3JpZCBwZXJtdXRlIGlwZXJtdXRlICcgK1xuICAgICAgICAnc2hpZnRkaW0gY2lyY3NoaWZ0IHNxdWVlemUgaXNzY2FsYXIgaXN2ZWN0b3IgYW5zIGVwcyByZWFsbWF4IHJlYWxtaW4gcGkgaSBpbmYgbmFuICcgK1xuICAgICAgICAnaXNuYW4gaXNpbmYgaXNmaW5pdGUgaiB3aHkgY29tcGFuIGdhbGxlcnkgaGFkYW1hcmQgaGFua2VsIGhpbGIgaW52aGlsYiBtYWdpYyBwYXNjYWwgJyArXG4gICAgICAgICdyb3NzZXIgdG9lcGxpdHogdmFuZGVyIHdpbGtpbnNvbiBtYXggbWluIG5hbm1heCBuYW5taW4gbWVhbiBuYW5tZWFuIHR5cGUgdGFibGUgJyArXG4gICAgICAgICdyZWFkdGFibGUgd3JpdGV0YWJsZSBzb3J0cm93cyBzb3J0IGZpZ3VyZSBwbG90IHBsb3QzIHNjYXR0ZXIgc2NhdHRlcjMgY2VsbGZ1biAnICtcbiAgICAgICAgJ2xlZ2VuZCBpbnRlcnNlY3QgaXNtZW1iZXIgcHJvY3J1c3RlcyBob2xkIG51bTJjZWxsICdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICcoLy98XCJ8I3wvXFxcXCp8XFxcXHMrL1xcXFx3KyknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXSd9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAvdHJ1ZXxmYWxzZS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl1bYS16QS1aXzAtOV0qJyArIFRSQU5TUE9TRV9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxdfH18XFwpLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge2JlZ2luOiAnXCJcIid9XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqXFxcXCVcXFxce1xcXFxzKiQnLCAnXlxcXFxzKlxcXFwlXFxcXH1cXFxccyokJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwlJywgJyQnKVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9ICdpZiB0aGVuIGVsc2UgZWxzZWlmIGZvciB0aHJ1IGRvIHdoaWxlIHVubGVzcyBzdGVwIGluIGFuZCBvciBub3QnO1xuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB1bmtub3duIGluZiBtaW5mIGluZCB1bmQgJWUgJWkgJXBpICVwaGkgJWdhbW1hJztcbiAgdmFyIEJVSUxUSU5fRlVOQ1RJT05TID1cbiAgICAgICAgJyBhYmFzZXAgYWJzIGFic2ludCBhYnNvbHV0ZV9yZWFsX3RpbWUgYWNvcyBhY29zaCBhY290IGFjb3RoIGFjc2MgYWNzY2ggYWN0aXZhdGUnXG4gICAgICArICcgYWRkY29sIGFkZF9lZGdlIGFkZF9lZGdlcyBhZGRtYXRyaWNlcyBhZGRyb3cgYWRkX3ZlcnRleCBhZGRfdmVydGljZXMgYWRqYWNlbmN5X21hdHJpeCdcbiAgICAgICsgJyBhZGpvaW4gYWRqb2ludCBhZiBhZ2QgYWlyeSBhaXJ5X2FpIGFpcnlfYmkgYWlyeV9kYWkgYWlyeV9kYmkgYWxnc3lzIGFsZ190eXBlJ1xuICAgICAgKyAnIGFsaWFzIGFsbHJvb3RzIGFscGhhY2hhcnAgYWxwaGFudW1lcmljcCBhbW9ydGl6YXRpb24gJWFuZCBhbm51aXR5X2Z2J1xuICAgICAgKyAnIGFubnVpdHlfcHYgYW50aWQgYW50aWRpZmYgQW50aURpZmZlcmVuY2UgYXBwZW5kIGFwcGVuZGZpbGUgYXBwbHkgYXBwbHkxIGFwcGx5MidcbiAgICAgICsgJyBhcHBseWIxIGFwcm9wb3MgYXJncyBhcml0X2Ftb3J0aXphdGlvbiBhcml0aG1ldGljIGFyaXRoc3VtIGFycmF5IGFycmF5YXBwbHknXG4gICAgICArICcgYXJyYXlpbmZvIGFycmF5bWFrZSBhcnJheXNldGFwcGx5IGFzY2lpIGFzZWMgYXNlY2ggYXNpbiBhc2luaCBhc2tpbnRlZ2VyJ1xuICAgICAgKyAnIGFza3NpZ24gYXNzb2MgYXNzb2NfbGVnZW5kcmVfcCBhc3NvY19sZWdlbmRyZV9xIGFzc3VtZSBhc3N1bWVfZXh0ZXJuYWxfYnl0ZV9vcmRlcidcbiAgICAgICsgJyBhc3ltcGEgYXQgYXRhbiBhdGFuMiBhdGFuaCBhdGVuc2ltcCBhdG9tIGF0dmFsdWUgYXVnY29lZm1hdHJpeCBhdWdtZW50ZWRfbGFncmFuZ2lhbl9tZXRob2QnXG4gICAgICArICcgYXYgYXZlcmFnZV9kZWdyZWUgYmFja3RyYWNlIGJhcnMgYmFyc3Bsb3QgYmFyc3Bsb3RfZGVzY3JpcHRpb24gYmFzZTY0IGJhc2U2NF9kZWNvZGUnXG4gICAgICArICcgYmFzaGluZGljZXMgYmF0Y2ggYmF0Y2hsb2FkIGJjMiBiZHZhYyBiZWxsbiBiZW5lZml0X2Nvc3QgYmVybiBiZXJucG9seSBiZXJuc3RlaW5fYXBwcm94J1xuICAgICAgKyAnIGJlcm5zdGVpbl9leHBhbmQgYmVybnN0ZWluX3BvbHkgYmVzc2VsIGJlc3NlbF9pIGJlc3NlbF9qIGJlc3NlbF9rIGJlc3NlbF9zaW1wbGlmeSdcbiAgICAgICsgJyBiZXNzZWxfeSBiZXRhIGJldGFfaW5jb21wbGV0ZSBiZXRhX2luY29tcGxldGVfZ2VuZXJhbGl6ZWQgYmV0YV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkJ1xuICAgICAgKyAnIGJlem91dCBiZmFsbHJvb3RzIGJmZmFjIGJmX2ZpbmRfcm9vdCBiZl9mbWluX2NvYnlsYSBiZmh6ZXRhIGJmbG9hdCBiZmxvYXRwJ1xuICAgICAgKyAnIGJmcHNpIGJmcHNpMCBiZnpldGEgYmljb25uZWN0ZWRfY29tcG9uZW50cyBiaW1ldHJpYyBiaW5vbWlhbCBiaXBhcnRpdGlvbidcbiAgICAgICsgJyBibG9jayBibG9ja21hdHJpeHAgYm9kZV9nYWluIGJvZGVfcGhhc2UgYm90aGNvZWYgYm94IGJveHBsb3QgYm94cGxvdF9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBicmVhayBidWdfcmVwb3J0IGJ1aWxkX2luZm98MTAgYnVpbGRxIGJ1aWxkX3NhbXBsZSBidXJuIGNhYnMgY2FuZm9ybSBjYW50ZW4nXG4gICAgICArICcgY2FyZGluYWxpdHkgY2FyZyBjYXJ0YW4gY2FydGVzaWFuX3Byb2R1Y3QgY2F0Y2ggY2F1Y2h5X21hdHJpeCBjYmZmYWMgY2RmX2Jlcm5vdWxsaSdcbiAgICAgICsgJyBjZGZfYmV0YSBjZGZfYmlub21pYWwgY2RmX2NhdWNoeSBjZGZfY2hpMiBjZGZfY29udGludW91c191bmlmb3JtIGNkZl9kaXNjcmV0ZV91bmlmb3JtJ1xuICAgICAgKyAnIGNkZl9leHAgY2RmX2YgY2RmX2dhbW1hIGNkZl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBjZGZfZ2VvbWV0cmljIGNkZl9ndW1iZWwnXG4gICAgICArICcgY2RmX2h5cGVyZ2VvbWV0cmljIGNkZl9sYXBsYWNlIGNkZl9sb2dpc3RpYyBjZGZfbG9nbm9ybWFsIGNkZl9uZWdhdGl2ZV9iaW5vbWlhbCdcbiAgICAgICsgJyBjZGZfbm9uY2VudHJhbF9jaGkyIGNkZl9ub25jZW50cmFsX3N0dWRlbnRfdCBjZGZfbm9ybWFsIGNkZl9wYXJldG8gY2RmX3BvaXNzb24nXG4gICAgICArICcgY2RmX3Jhbmtfc3VtIGNkZl9yYXlsZWlnaCBjZGZfc2lnbmVkX3JhbmsgY2RmX3N0dWRlbnRfdCBjZGZfd2VpYnVsbCBjZGlzcGxheSdcbiAgICAgICsgJyBjZWlsaW5nIGNlbnRyYWxfbW9tZW50IGNlcXVhbCBjZXF1YWxpZ25vcmUgY2YgY2ZkaXNyZXAgY2ZleHBhbmQgY2dlb2Rlc2ljJ1xuICAgICAgKyAnIGNncmVhdGVycCBjZ3JlYXRlcnBpZ25vcmUgY2hhbmdlbmFtZSBjaGFuZ2V2YXIgY2hhb3NnYW1lIGNoYXJhdCBjaGFyZnVuIGNoYXJmdW4yJ1xuICAgICAgKyAnIGNoYXJsaXN0IGNoYXJwIGNoYXJwb2x5IGNoZGlyIGNoZWJ5c2hldl90IGNoZWJ5c2hldl91IGNoZWNrZGl2IGNoZWNrX292ZXJsYXBzJ1xuICAgICAgKyAnIGNoaW5lc2UgY2hvbGVza3kgY2hyaXN0b2YgY2hyb21hdGljX2luZGV4IGNocm9tYXRpY19udW1iZXIgY2ludCBjaXJjdWxhbnRfZ3JhcGgnXG4gICAgICArICcgY2xlYXJfZWRnZV93ZWlnaHQgY2xlYXJfcnVsZXMgY2xlYXJfdmVydGV4X2xhYmVsIGNsZWJzY2hfZ29yZGFuIGNsZWJzY2hfZ3JhcGgnXG4gICAgICArICcgY2xlc3NwIGNsZXNzcGlnbm9yZSBjbG9zZSBjbG9zZWZpbGUgY21ldHJpYyBjb2VmZiBjb2VmbWF0cml4IGNvZ3JhZCBjb2wgY29sbGFwc2UnXG4gICAgICArICcgY29sbGVjdHRlcm1zIGNvbHVtbm9wIGNvbHVtbnNwYWNlIGNvbHVtbnN3YXAgY29sdW1udmVjdG9yIGNvbWJpbmF0aW9uIGNvbWJpbmUnXG4gICAgICArICcgY29tcDJwdWkgY29tcGFyZSBjb21wZmlsZSBjb21waWxlIGNvbXBpbGVfZmlsZSBjb21wbGVtZW50X2dyYXBoIGNvbXBsZXRlX2JpcGFydGl0ZV9ncmFwaCdcbiAgICAgICsgJyBjb21wbGV0ZV9ncmFwaCBjb21wbGV4X251bWJlcl9wIGNvbXBvbmVudHMgY29tcG9zZV9mdW5jdGlvbnMgY29uY2FuIGNvbmNhdCdcbiAgICAgICsgJyBjb25qdWdhdGUgY29ubWV0ZGVyaXYgY29ubmVjdGVkX2NvbXBvbmVudHMgY29ubmVjdF92ZXJ0aWNlcyBjb25zIGNvbnN0YW50J1xuICAgICAgKyAnIGNvbnN0YW50cCBjb25zdGl0dWVudCBjb25zdHZhbHVlIGNvbnQycGFydCBjb250ZW50IGNvbnRpbnVvdXNfZnJlcSBjb250b3J0aW9uJ1xuICAgICAgKyAnIGNvbnRvdXJfcGxvdCBjb250cmFjdCBjb250cmFjdF9lZGdlIGNvbnRyYWdyYWQgY29udHJpYl9vZGUgY29udmVydCBjb29yZCdcbiAgICAgICsgJyBjb3B5IGNvcHlfZmlsZSBjb3B5X2dyYXBoIGNvcHlsaXN0IGNvcHltYXRyaXggY29yIGNvcyBjb3NoIGNvdCBjb3RoIGNvdiBjb3YxJ1xuICAgICAgKyAnIGNvdmRpZmYgY292ZWN0IGNvdmVycyBjcmMyNHN1bSBjcmVhdGVfZ3JhcGggY3JlYXRlX2xpc3QgY3NjIGNzY2ggY3NldHVwIGNzcGxpbmUnXG4gICAgICArICcgY3RheWxvciBjdF9jb29yZHN5cyBjdHJhbnNmb3JtIGN0cmFuc3Bvc2UgY3ViZV9ncmFwaCBjdWJvY3RhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGN1bmxpc3AgY3YgY3ljbGVfZGlncmFwaCBjeWNsZV9ncmFwaCBjeWxpbmRyaWNhbCBkYXlzMzYwIGRibGludCBkZWFjdGl2YXRlJ1xuICAgICAgKyAnIGRlY2xhcmUgZGVjbGFyZV9jb25zdHZhbHVlIGRlY2xhcmVfZGltZW5zaW9ucyBkZWNsYXJlX2Z1bmRhbWVudGFsX2RpbWVuc2lvbnMnXG4gICAgICArICcgZGVjbGFyZV9mdW5kYW1lbnRhbF91bml0cyBkZWNsYXJlX3F0eSBkZWNsYXJlX3RyYW5zbGF0ZWQgZGVjbGFyZV91bml0X2NvbnZlcnNpb24nXG4gICAgICArICcgZGVjbGFyZV91bml0cyBkZWNsYXJlX3dlaWdodHMgZGVjc3ltIGRlZmNvbiBkZWZpbmUgZGVmaW5lX2FsdF9kaXNwbGF5IGRlZmluZV92YXJpYWJsZSdcbiAgICAgICsgJyBkZWZpbnQgZGVmbWF0Y2ggZGVmcnVsZSBkZWZzdHJ1Y3QgZGVmdGF5bG9yIGRlZ3JlZV9zZXF1ZW5jZSBkZWwgZGVsZXRlIGRlbGV0ZW4nXG4gICAgICArICcgZGVsdGEgZGVtbyBkZW1vaXZyZSBkZW5vbSBkZXBlbmRzIGRlcml2ZGVncmVlIGRlcml2bGlzdCBkZXNjcmliZSBkZXNvbHZlJ1xuICAgICAgKyAnIGRldGVybWluYW50IGRmbG9hdCBkZ2F1c3NfYSBkZ2F1c3NfYiBkZ2VldiBkZ2VtbSBkZ2VxcmYgZGdlc3YgZGdlc3ZkIGRpYWcnXG4gICAgICArICcgZGlhZ21hdHJpeCBkaWFnX21hdHJpeCBkaWFnbWF0cml4cCBkaWFtZXRlciBkaWZmIGRpZ2l0Y2hhcnAgZGltYWNzX2V4cG9ydCdcbiAgICAgICsgJyBkaW1hY3NfaW1wb3J0IGRpbWVuc2lvbiBkaW1lbnNpb25sZXNzIGRpbWVuc2lvbnMgZGltZW5zaW9uc19hc19saXN0IGRpcmVjdCdcbiAgICAgICsgJyBkaXJlY3RvcnkgZGlzY3JldGVfZnJlcSBkaXNqb2luIGRpc2pvaW50cCBkaXNvbGF0ZSBkaXNwIGRpc3Bjb24gZGlzcGZvcm0nXG4gICAgICArICcgZGlzcGZ1biBkaXNwSm9yZGFuIGRpc3BsYXkgZGlzcHJ1bGUgZGlzcHRlcm1zIGRpc3RyaWIgZGl2aWRlIGRpdmlzb3JzIGRpdnN1bSdcbiAgICAgICsgJyBka3VtbWVyX20gZGt1bW1lcl91IGRsYW5nZSBkb2RlY2FoZWRyb25fZ3JhcGggZG90cHJvZHVjdCBkb3RzaW1wIGRwYXJ0J1xuICAgICAgKyAnIGRyYXcgZHJhdzJkIGRyYXczZCBkcmF3ZGYgZHJhd19maWxlIGRyYXdfZ3JhcGggZHNjYWxhciBlY2hlbG9uIGVkZ2VfY29sb3JpbmcnXG4gICAgICArICcgZWRnZV9jb25uZWN0aXZpdHkgZWRnZXMgZWlnZW5zX2J5X2phY29iaSBlaWdlbnZhbHVlcyBlaWdlbnZlY3RvcnMgZWlnaHRoJ1xuICAgICAgKyAnIGVpbnN0ZWluIGVpdmFscyBlaXZlY3RzIGVsYXBzZWRfcmVhbF90aW1lIGVsYXBzZWRfcnVuX3RpbWUgZWxlMmNvbXAgZWxlMnBvbHlub21lJ1xuICAgICAgKyAnIGVsZTJwdWkgZWxlbSBlbGVtZW50cCBlbGV2YXRpb25fZ3JpZCBlbGltIGVsaW1fYWxsYnV0IGVsaW1pbmF0ZSBlbGltaW5hdGVfdXNpbmcnXG4gICAgICArICcgZWxsaXBzZSBlbGxpcHRpY19lIGVsbGlwdGljX2VjIGVsbGlwdGljX2V1IGVsbGlwdGljX2YgZWxsaXB0aWNfa2MgZWxsaXB0aWNfcGknXG4gICAgICArICcgZW1hdHJpeCBlbXB0eV9ncmFwaCBlbXB0eXAgZW5kY29ucyBlbnRlcm1hdHJpeCBlbnRlcnRlbnNvciBlbnRpZXIgZXF1YWwgZXF1YWxwJ1xuICAgICAgKyAnIGVxdWl2X2NsYXNzZXMgZXJmIGVyZmMgZXJmX2dlbmVyYWxpemVkIGVyZmkgZXJyY2F0Y2ggZXJyb3IgZXJyb3Jtc2cgZXJyb3JzJ1xuICAgICAgKyAnIGV1bGVyIGV2IGV2YWxfc3RyaW5nIGV2ZW5wIGV2ZXJ5IGV2b2x1dGlvbiBldm9sdXRpb24yZCBldnVuZGlmZiBleGFtcGxlIGV4cCdcbiAgICAgICsgJyBleHBhbmQgZXhwYW5kd3J0IGV4cGFuZHdydF9mYWN0b3JlZCBleHBpbnQgZXhwaW50ZWdyYWxfY2hpIGV4cGludGVncmFsX2NpJ1xuICAgICAgKyAnIGV4cGludGVncmFsX2UgZXhwaW50ZWdyYWxfZTEgZXhwaW50ZWdyYWxfZWkgZXhwaW50ZWdyYWxfZV9zaW1wbGlmeSBleHBpbnRlZ3JhbF9saSdcbiAgICAgICsgJyBleHBpbnRlZ3JhbF9zaGkgZXhwaW50ZWdyYWxfc2kgZXhwbGljaXQgZXhwbG9zZSBleHBvbmVudGlhbGl6ZSBleHByZXNzIGV4cHQnXG4gICAgICArICcgZXhzZWMgZXh0ZGlmZiBleHRyYWN0X2xpbmVhcl9lcXVhdGlvbnMgZXh0cmVtYWxfc3Vic2V0IGV6Z2NkICVmIGY5MCBmYWNzdW0nXG4gICAgICArICcgZmFjdGNvbWIgZmFjdG9yIGZhY3RvcmZhY3N1bSBmYWN0b3JpYWwgZmFjdG9yb3V0IGZhY3RvcnN1bSBmYWN0cyBmYXN0X2NlbnRyYWxfZWxlbWVudHMnXG4gICAgICArICcgZmFzdF9saW5zb2x2ZSBmYXN0dGltZXMgZmVhdHVyZXAgZmVybmZhbGUgZmZ0IGZpYiBmaWJ0b3BoaSBmaWZ0aCBmaWxlbmFtZV9tZXJnZSdcbiAgICAgICsgJyBmaWxlX3NlYXJjaCBmaWxlX3R5cGUgZmlsbGFycmF5IGZpbmRkZSBmaW5kX3Jvb3QgZmluZF9yb290X2FicyBmaW5kX3Jvb3RfZXJyb3InXG4gICAgICArICcgZmluZF9yb290X3JlbCBmaXJzdCBmaXggZmxhdHRlbiBmbGVuZ3RoIGZsb2F0IGZsb2F0bnVtcCBmbG9vciBmbG93ZXJfc25hcmsnXG4gICAgICArICcgZmx1c2ggZmx1c2gxZGVyaXYgZmx1c2hkIGZsdXNobmQgZmx1c2hfb3V0cHV0IGZtaW5fY29ieWxhIGZvcmdldCBmb3J0cmFuJ1xuICAgICAgKyAnIGZvdXJjb3MgZm91cmV4cGFuZCBmb3VyaWVyIGZvdXJpZXJfZWxpbSBmb3VyaW50IGZvdXJpbnRjb3MgZm91cmludHNpbiBmb3Vyc2ltcCdcbiAgICAgICsgJyBmb3Vyc2luIGZvdXJ0aCBmcG9zaXRpb24gZnJhbWVfYnJhY2tldCBmcmVlb2YgZnJlc2hsaW5lIGZyZXNuZWxfYyBmcmVzbmVsX3MnXG4gICAgICArICcgZnJvbV9hZGphY2VuY3lfbWF0cml4IGZydWNodF9ncmFwaCBmdWxsX2xpc3RpZnkgZnVsbG1hcCBmdWxsbWFwbCBmdWxscmF0c2ltcCdcbiAgICAgICsgJyBmdWxscmF0c3Vic3QgZnVsbHNldGlmeSBmdW5jc29sdmUgZnVuZGFtZW50YWxfZGltZW5zaW9ucyBmdW5kYW1lbnRhbF91bml0cydcbiAgICAgICsgJyBmdW5kZWYgZnVubWFrZSBmdW5wIGZ2IGcwIGcxIGdhbW1hIGdhbW1hX2dyZWVrIGdhbW1hX2luY29tcGxldGUgZ2FtbWFfaW5jb21wbGV0ZV9nZW5lcmFsaXplZCdcbiAgICAgICsgJyBnYW1tYV9pbmNvbXBsZXRlX3JlZ3VsYXJpemVkIGdhdXNzIGdhdXNzX2EgZ2F1c3NfYiBnYXVzc3Byb2IgZ2NkIGdjZGV4IGdjZGl2aWRlJ1xuICAgICAgKyAnIGdjZmFjIGdjZmFjdG9yIGdkIGdlbmVyYWxpemVkX2xhbWJlcnRfdyBnZW5mYWN0IGdlbl9sYWd1ZXJyZSBnZW5tYXRyaXggZ2Vuc3ltJ1xuICAgICAgKyAnIGdlb19hbW9ydGl6YXRpb24gZ2VvX2FubnVpdHlfZnYgZ2VvX2FubnVpdHlfcHYgZ2VvbWFwIGdlb21ldHJpYyBnZW9tZXRyaWNfbWVhbidcbiAgICAgICsgJyBnZW9zdW0gZ2V0IGdldGN1cnJlbnRkaXJlY3RvcnkgZ2V0X2VkZ2Vfd2VpZ2h0IGdldGVudiBnZXRfbHVfZmFjdG9ycyBnZXRfb3V0cHV0X3N0cmVhbV9zdHJpbmcnXG4gICAgICArICcgZ2V0X3BpeGVsIGdldF9wbG90X29wdGlvbiBnZXRfdGV4X2Vudmlyb25tZW50IGdldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCdcbiAgICAgICsgJyBnZXRfdmVydGV4X2xhYmVsIGdmYWN0b3IgZ2ZhY3RvcnN1bSBnZ2YgZ2lydGggZ2xvYmFsX3ZhcmlhbmNlcyBnbiBnbnVwbG90X2Nsb3NlJ1xuICAgICAgKyAnIGdudXBsb3RfcmVwbG90IGdudXBsb3RfcmVzZXQgZ251cGxvdF9yZXN0YXJ0IGdudXBsb3Rfc3RhcnQgZ28gR29zcGVyIEdvc3BlclN1bSdcbiAgICAgICsgJyBncjJkIGdyM2QgZ3JhZGVmIGdyYW1zY2htaWR0IGdyYXBoNl9kZWNvZGUgZ3JhcGg2X2VuY29kZSBncmFwaDZfZXhwb3J0IGdyYXBoNl9pbXBvcnQnXG4gICAgICArICcgZ3JhcGhfY2VudGVyIGdyYXBoX2NoYXJwb2x5IGdyYXBoX2VpZ2VudmFsdWVzIGdyYXBoX2Zsb3cgZ3JhcGhfb3JkZXIgZ3JhcGhfcGVyaXBoZXJ5J1xuICAgICAgKyAnIGdyYXBoX3Byb2R1Y3QgZ3JhcGhfc2l6ZSBncmFwaF91bmlvbiBncmVhdF9yaG9tYmljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGdyZWF0X3Job21iaWN1Ym9jdGFoZWRyb25fZ3JhcGgnXG4gICAgICArICcgZ3JpZF9ncmFwaCBncmluZCBncm9ibmVyX2Jhc2lzIGdyb3R6Y2hfZ3JhcGggaGFtaWx0b25fY3ljbGUgaGFtaWx0b25fcGF0aCdcbiAgICAgICsgJyBoYW5rZWwgaGFua2VsXzEgaGFua2VsXzIgaGFybW9uaWMgaGFybW9uaWNfbWVhbiBoYXYgaGVhd29vZF9ncmFwaCBoZXJtaXRlJ1xuICAgICAgKyAnIGhlc3NpYW4gaGdmcmVkIGhpbGJlcnRtYXAgaGlsYmVydF9tYXRyaXggaGlwb3cgaGlzdG9ncmFtIGhpc3RvZ3JhbV9kZXNjcmlwdGlvbidcbiAgICAgICsgJyBob2RnZSBob3JuZXIgaHlwZXJnZW9tZXRyaWMgaTAgaTEgJWliZXMgaWMxIGljMiBpY19jb252ZXJ0IGljaHIxIGljaHIyIGljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIGljdXJ2YXR1cmUgaWRlbnQgaWRlbnRmb3IgaWRlbnRpdHkgaWRpZmYgaWRpbSBpZHVtbXknXG4gICAgICArICcgaWVxbiAlaWYgaWZhY3RvcnMgaWZyYW1lcyBpZnMgaWdjZGV4IGlnZW9kZXNpY19jb29yZHMgaWx0IGltYWdlIGltYWdwYXJ0J1xuICAgICAgKyAnIGltZXRyaWMgaW1wbGljaXQgaW1wbGljaXRfZGVyaXZhdGl2ZSBpbXBsaWNpdF9wbG90IGluZGV4ZWRfdGVuc29yIGluZGljZXMnXG4gICAgICArICcgaW5kdWNlZF9zdWJncmFwaCBpbmZlcmVuY2VwIGluZmVyZW5jZV9yZXN1bHQgaW5maXggaW5mb19kaXNwbGF5IGluaXRfYXRlbnNvcidcbiAgICAgICsgJyBpbml0X2N0ZW5zb3IgaW5fbmVpZ2hib3JzIGlubmVycHJvZHVjdCBpbnBhcnQgaW5wcm9kIGlucnQgaW50ZWdlcnAgaW50ZWdlcl9wYXJ0aXRpb25zJ1xuICAgICAgKyAnIGludGVncmF0ZSBpbnRlcnNlY3QgaW50ZXJzZWN0aW9uIGludGVydmFscCBpbnRvcG9pcyBpbnRvc3VtIGludmFyaWFudDEgaW52YXJpYW50MidcbiAgICAgICsgJyBpbnZlcnNlX2ZmdCBpbnZlcnNlX2phY29iaV9jZCBpbnZlcnNlX2phY29iaV9jbiBpbnZlcnNlX2phY29iaV9jcyBpbnZlcnNlX2phY29iaV9kYydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9kbiBpbnZlcnNlX2phY29iaV9kcyBpbnZlcnNlX2phY29iaV9uYyBpbnZlcnNlX2phY29iaV9uZCBpbnZlcnNlX2phY29iaV9ucydcbiAgICAgICsgJyBpbnZlcnNlX2phY29iaV9zYyBpbnZlcnNlX2phY29iaV9zZCBpbnZlcnNlX2phY29iaV9zbiBpbnZlcnQgaW52ZXJ0X2J5X2Fkam9pbnQnXG4gICAgICArICcgaW52ZXJ0X2J5X2x1IGludl9tb2QgaXJyIGlzIGlzX2JpY29ubmVjdGVkIGlzX2JpcGFydGl0ZSBpc19jb25uZWN0ZWQgaXNfZGlncmFwaCdcbiAgICAgICsgJyBpc19lZGdlX2luX2dyYXBoIGlzX2dyYXBoIGlzX2dyYXBoX29yX2RpZ3JhcGggaXNob3cgaXNfaXNvbW9ycGhpYyBpc29sYXRlJ1xuICAgICAgKyAnIGlzb21vcnBoaXNtIGlzX3BsYW5hciBpc3FydCBpc3JlYWxfcCBpc19zY29ubmVjdGVkIGlzX3RyZWUgaXNfdmVydGV4X2luX2dyYXBoJ1xuICAgICAgKyAnIGl0ZW1zX2luZmVyZW5jZSAlaiBqMCBqMSBqYWNvYmkgamFjb2JpYW4gamFjb2JpX2NkIGphY29iaV9jbiBqYWNvYmlfY3MgamFjb2JpX2RjJ1xuICAgICAgKyAnIGphY29iaV9kbiBqYWNvYmlfZHMgamFjb2JpX25jIGphY29iaV9uZCBqYWNvYmlfbnMgamFjb2JpX3AgamFjb2JpX3NjIGphY29iaV9zZCdcbiAgICAgICsgJyBqYWNvYmlfc24gSkYgam4gam9pbiBqb3JkYW4ganVsaWEganVsaWFfc2V0IGp1bGlhX3NpbiAlayBrZGVscyBrZGVsdGEga2lsbCdcbiAgICAgICsgJyBraWxsY29udGV4dCBrb3N0a2Ega3Jvbl9kZWx0YSBrcm9uZWNrZXJfcHJvZHVjdCBrdW1tZXJfbSBrdW1tZXJfdSBrdXJ0b3NpcydcbiAgICAgICsgJyBrdXJ0b3Npc19iZXJub3VsbGkga3VydG9zaXNfYmV0YSBrdXJ0b3Npc19iaW5vbWlhbCBrdXJ0b3Npc19jaGkyIGt1cnRvc2lzX2NvbnRpbnVvdXNfdW5pZm9ybSdcbiAgICAgICsgJyBrdXJ0b3Npc19kaXNjcmV0ZV91bmlmb3JtIGt1cnRvc2lzX2V4cCBrdXJ0b3Npc19mIGt1cnRvc2lzX2dhbW1hIGt1cnRvc2lzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIGt1cnRvc2lzX2dlb21ldHJpYyBrdXJ0b3Npc19ndW1iZWwga3VydG9zaXNfaHlwZXJnZW9tZXRyaWMga3VydG9zaXNfbGFwbGFjZSdcbiAgICAgICsgJyBrdXJ0b3Npc19sb2dpc3RpYyBrdXJ0b3Npc19sb2dub3JtYWwga3VydG9zaXNfbmVnYXRpdmVfYmlub21pYWwga3VydG9zaXNfbm9uY2VudHJhbF9jaGkyJ1xuICAgICAgKyAnIGt1cnRvc2lzX25vbmNlbnRyYWxfc3R1ZGVudF90IGt1cnRvc2lzX25vcm1hbCBrdXJ0b3Npc19wYXJldG8ga3VydG9zaXNfcG9pc3NvbidcbiAgICAgICsgJyBrdXJ0b3Npc19yYXlsZWlnaCBrdXJ0b3Npc19zdHVkZW50X3Qga3VydG9zaXNfd2VpYnVsbCBsYWJlbCBsYWJlbHMgbGFncmFuZ2UnXG4gICAgICArICcgbGFndWVycmUgbGFtYmRhIGxhbWJlcnRfdyBsYXBsYWNlIGxhcGxhY2lhbl9tYXRyaXggbGFzdCBsYmZncyBsYzJrZHQgbGNoYXJwJ1xuICAgICAgKyAnIGxjX2wgbGNtIGxjX3UgbGRlZmludCBsZGlzcCBsZGlzcGxheSBsZWdlbmRyZV9wIGxlZ2VuZHJlX3EgbGVpbnN0ZWluIGxlbmd0aCdcbiAgICAgICsgJyBsZXQgbGV0cnVsZXMgbGV0c2ltcCBsZXZpX2Npdml0YSBsZnJlZW9mIGxndHJlaWxsaXMgbGhzIGxpIGxpZWRpZmYgbGltaXQnXG4gICAgICArICcgTGluZHN0ZWR0IGxpbmVhciBsaW5lYXJpbnRlcnBvbCBsaW5lYXJfcHJvZ3JhbSBsaW5lYXJfcmVncmVzc2lvbiBsaW5lX2dyYXBoJ1xuICAgICAgKyAnIGxpbnNvbHZlIGxpc3RhcnJheSBsaXN0X2NvcnJlbGF0aW9ucyBsaXN0aWZ5IGxpc3RfbWF0cml4X2VudHJpZXMgbGlzdF9uY19tb25vbWlhbHMnXG4gICAgICArICcgbGlzdG9mdGVucyBsaXN0b2Z2YXJzIGxpc3RwIGxtYXggbG1pbiBsb2FkIGxvYWRmaWxlIGxvY2FsIGxvY2F0ZV9tYXRyaXhfZW50cnknXG4gICAgICArICcgbG9nIGxvZ2NvbnRyYWN0IGxvZ19nYW1tYSBsb3BvdyBsb3JlbnR6X2dhdWdlIGxvd2VyY2FzZXAgbHBhcnQgbHJhdHN1YnN0J1xuICAgICAgKyAnIGxyZWR1Y2UgbHJpZW1hbm4gbHNxdWFyZXNfZXN0aW1hdGVzIGxzcXVhcmVzX2VzdGltYXRlc19hcHByb3hpbWF0ZSBsc3F1YXJlc19lc3RpbWF0ZXNfZXhhY3QnXG4gICAgICArICcgbHNxdWFyZXNfbXNlIGxzcXVhcmVzX3Jlc2lkdWFsX21zZSBsc3F1YXJlc19yZXNpZHVhbHMgbHN1bSBsdHJlaWxsaXMgbHVfYmFja3N1YidcbiAgICAgICsgJyBsdWNhcyBsdV9mYWN0b3IgJW0gbWFjcm9leHBhbmQgbWFjcm9leHBhbmQxIG1ha2VfYXJyYXkgbWFrZWJveCBtYWtlZmFjdCBtYWtlZ2FtbWEnXG4gICAgICArICcgbWFrZV9ncmFwaCBtYWtlX2xldmVsX3BpY3R1cmUgbWFrZWxpc3QgbWFrZU9yZGVycyBtYWtlX3BvbHlfY29udGluZW50IG1ha2VfcG9seV9jb3VudHJ5J1xuICAgICAgKyAnIG1ha2VfcG9seWdvbiBtYWtlX3JhbmRvbV9zdGF0ZSBtYWtlX3JnYl9waWN0dXJlIG1ha2VzZXQgbWFrZV9zdHJpbmdfaW5wdXRfc3RyZWFtJ1xuICAgICAgKyAnIG1ha2Vfc3RyaW5nX291dHB1dF9zdHJlYW0gbWFrZV90cmFuc2Zvcm0gbWFuZGVsYnJvdCBtYW5kZWxicm90X3NldCBtYXAgbWFwYXRvbSdcbiAgICAgICsgJyBtYXBsaXN0IG1hdGNoZGVjbGFyZSBtYXRjaGZpeCBtYXRfY29uZCBtYXRfZnVsbHVuYmxvY2tlciBtYXRfZnVuY3Rpb24gbWF0aG1sX2Rpc3BsYXknXG4gICAgICArICcgbWF0X25vcm0gbWF0cml4IG1hdHJpeG1hcCBtYXRyaXhwIG1hdHJpeF9zaXplIG1hdHRyYWNlIG1hdF90cmFjZSBtYXRfdW5ibG9ja2VyJ1xuICAgICAgKyAnIG1heCBtYXhfY2xpcXVlIG1heF9kZWdyZWUgbWF4X2Zsb3cgbWF4aW1pemVfbHAgbWF4X2luZGVwZW5kZW50X3NldCBtYXhfbWF0Y2hpbmcnXG4gICAgICArICcgbWF5YmUgbWQ1c3VtIG1lYW4gbWVhbl9iZXJub3VsbGkgbWVhbl9iZXRhIG1lYW5fYmlub21pYWwgbWVhbl9jaGkyIG1lYW5fY29udGludW91c191bmlmb3JtJ1xuICAgICAgKyAnIG1lYW5fZGV2aWF0aW9uIG1lYW5fZGlzY3JldGVfdW5pZm9ybSBtZWFuX2V4cCBtZWFuX2YgbWVhbl9nYW1tYSBtZWFuX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIG1lYW5fZ2VvbWV0cmljIG1lYW5fZ3VtYmVsIG1lYW5faHlwZXJnZW9tZXRyaWMgbWVhbl9sYXBsYWNlIG1lYW5fbG9naXN0aWMnXG4gICAgICArICcgbWVhbl9sb2dub3JtYWwgbWVhbl9uZWdhdGl2ZV9iaW5vbWlhbCBtZWFuX25vbmNlbnRyYWxfY2hpMiBtZWFuX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIG1lYW5fbm9ybWFsIG1lYW5fcGFyZXRvIG1lYW5fcG9pc3NvbiBtZWFuX3JheWxlaWdoIG1lYW5fc3R1ZGVudF90IG1lYW5fd2VpYnVsbCdcbiAgICAgICsgJyBtZWRpYW4gbWVkaWFuX2RldmlhdGlvbiBtZW1iZXIgbWVzaCBtZXRyaWNleHBhbmRhbGwgbWdmMV9zaGExIG1pbiBtaW5fZGVncmVlJ1xuICAgICAgKyAnIG1pbl9lZGdlX2N1dCBtaW5mYWN0b3JpYWwgbWluaW1hbFBvbHkgbWluaW1pemVfbHAgbWluaW11bV9zcGFubmluZ190cmVlIG1pbm9yJ1xuICAgICAgKyAnIG1pbnBhY2tfbHNxdWFyZXMgbWlucGFja19zb2x2ZSBtaW5fdmVydGV4X2NvdmVyIG1pbl92ZXJ0ZXhfY3V0IG1rZGlyIG1uZXd0b24nXG4gICAgICArICcgbW9kIG1vZGVfZGVjbGFyZSBtb2RlX2lkZW50aXR5IE1vZGVNYXRyaXggbW9lYml1cyBtb24yc2NodXIgbW9ubyBtb25vbWlhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIG11bHRpYmVybnN0ZWluX3BvbHkgbXVsdGlfZGlzcGxheV9mb3JfdGV4aW5mbyBtdWx0aV9lbGVtIG11bHRpbm9taWFsIG11bHRpbm9taWFsX2NvZWZmJ1xuICAgICAgKyAnIG11bHRpX29yYml0IG11bHRpcGxvdF9tb2RlIG11bHRpX3B1aSBtdWx0c3ltIG11bHR0aHJ1IG15Y2llbHNraV9ncmFwaCBuYXJ5J1xuICAgICAgKyAnIG5hdHVyYWxfdW5pdCBuY19kZWdyZWUgbmNleHB0IG5jaGFycG9seSBuZWdhdGl2ZV9waWN0dXJlIG5laWdoYm9ycyBuZXcgbmV3Y29udGV4dCdcbiAgICAgICsgJyBuZXdkZXQgbmV3X2dyYXBoIG5ld2xpbmUgbmV3dG9uIG5ld192YXJpYWJsZSBuZXh0X3ByaW1lIG5pY2VkdW1taWVzIG5pY2VpbmRpY2VzJ1xuICAgICAgKyAnIG5pbnRoIG5vZml4IG5vbmFycmF5IG5vbmNlbnRyYWxfbW9tZW50IG5vbm1ldHJpY2l0eSBub25uZWdpbnRlZ2VycCBub25zY2FsYXJwJ1xuICAgICAgKyAnIG5vbnplcm9hbmRmcmVlb2Ygbm90ZXF1YWwgbm91bmlmeSBucHRldHJhZCBucHYgbnJvb3RzIG50ZXJtcyBudGVybXN0J1xuICAgICAgKyAnIG50aHJvb3QgbnVsbGl0eSBudWxsc3BhY2UgbnVtIG51bWJlcmVkX2JvdW5kYXJpZXMgbnVtYmVycCBudW1iZXJfdG9fb2N0ZXRzJ1xuICAgICAgKyAnIG51bV9kaXN0aW5jdF9wYXJ0aXRpb25zIG51bWVydmFsIG51bWZhY3RvciBudW1fcGFydGl0aW9ucyBudXN1bSBuemV0YSBuemV0YWknXG4gICAgICArICcgbnpldGFyIG9jdGV0c190b19udW1iZXIgb2N0ZXRzX3RvX29pZCBvZGRfZ2lydGggb2RkcCBvZGUyIG9kZV9jaGVjayBvZGVsaW4nXG4gICAgICArICcgb2lkX3RvX29jdGV0cyBvcCBvcGVuYSBvcGVuYV9iaW5hcnkgb3BlbnIgb3BlbnJfYmluYXJ5IG9wZW53IG9wZW53X2JpbmFyeSdcbiAgICAgICsgJyBvcGVyYXRvcnAgb3BzdWJzdCBvcHRpbWl6ZSAlb3Igb3JiaXQgb3JiaXRzIG9yZGVyZ3JlYXQgb3JkZXJncmVhdHAgb3JkZXJsZXNzJ1xuICAgICAgKyAnIG9yZGVybGVzc3Agb3J0aG9nb25hbF9jb21wbGVtZW50IG9ydGhvcG9seV9yZWN1ciBvcnRob3BvbHlfd2VpZ2h0IG91dGVybWFwJ1xuICAgICAgKyAnIG91dF9uZWlnaGJvcnMgb3V0b2Zwb2lzIHBhZGUgcGFyYWJvbGljX2N5bGluZGVyX2QgcGFyYW1ldHJpYyBwYXJhbWV0cmljX3N1cmZhY2UnXG4gICAgICArICcgcGFyZyBwYXJHb3NwZXIgcGFyc2Vfc3RyaW5nIHBhcnNlX3RpbWVkYXRlIHBhcnQgcGFydDJjb250IHBhcnRmcmFjIHBhcnRpdGlvbidcbiAgICAgICsgJyBwYXJ0aXRpb25fc2V0IHBhcnRwb2wgcGF0aF9kaWdyYXBoIHBhdGhfZ3JhcGggcGF0aG5hbWVfZGlyZWN0b3J5IHBhdGhuYW1lX25hbWUnXG4gICAgICArICcgcGF0aG5hbWVfdHlwZSBwZGZfYmVybm91bGxpIHBkZl9iZXRhIHBkZl9iaW5vbWlhbCBwZGZfY2F1Y2h5IHBkZl9jaGkyIHBkZl9jb250aW51b3VzX3VuaWZvcm0nXG4gICAgICArICcgcGRmX2Rpc2NyZXRlX3VuaWZvcm0gcGRmX2V4cCBwZGZfZiBwZGZfZ2FtbWEgcGRmX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlJ1xuICAgICAgKyAnIHBkZl9nZW9tZXRyaWMgcGRmX2d1bWJlbCBwZGZfaHlwZXJnZW9tZXRyaWMgcGRmX2xhcGxhY2UgcGRmX2xvZ2lzdGljIHBkZl9sb2dub3JtYWwnXG4gICAgICArICcgcGRmX25lZ2F0aXZlX2Jpbm9taWFsIHBkZl9ub25jZW50cmFsX2NoaTIgcGRmX25vbmNlbnRyYWxfc3R1ZGVudF90IHBkZl9ub3JtYWwnXG4gICAgICArICcgcGRmX3BhcmV0byBwZGZfcG9pc3NvbiBwZGZfcmFua19zdW0gcGRmX3JheWxlaWdoIHBkZl9zaWduZWRfcmFuayBwZGZfc3R1ZGVudF90J1xuICAgICAgKyAnIHBkZl93ZWlidWxsIHBlYXJzb25fc2tld25lc3MgcGVybWFuZW50IHBlcm11dCBwZXJtdXRhdGlvbiBwZXJtdXRhdGlvbnMgcGV0ZXJzZW5fZ3JhcGgnXG4gICAgICArICcgcGV0cm92IHBpY2thcGFydCBwaWN0dXJlX2VxdWFscCBwaWN0dXJlcCBwaWVjaGFydCBwaWVjaGFydF9kZXNjcmlwdGlvbiBwbGFuYXJfZW1iZWRkaW5nJ1xuICAgICAgKyAnIHBsYXliYWNrIHBsb2cgcGxvdDJkIHBsb3QzZCBwbG90ZGYgcGxvdGVxIHBsc3F1YXJlcyBwb2NoaGFtbWVyIHBvaW50cyBwb2lzZGlmZidcbiAgICAgICsgJyBwb2lzZXhwdCBwb2lzaW50IHBvaXNtYXAgcG9pc3BsdXMgcG9pc3NpbXAgcG9pc3N1YnN0IHBvaXN0aW1lcyBwb2lzdHJpbSBwb2xhcidcbiAgICAgICsgJyBwb2xhcmZvcm0gcG9sYXJ0b3JlY3QgcG9sYXJfdG9feHkgcG9seV9hZGQgcG9seV9idWNoYmVyZ2VyIHBvbHlfYnVjaGJlcmdlcl9jcml0ZXJpb24nXG4gICAgICArICcgcG9seV9jb2xvbl9pZGVhbCBwb2x5X2NvbnRlbnQgcG9seWRlY29tcCBwb2x5X2RlcGVuZHNfcCBwb2x5X2VsaW1pbmF0aW9uX2lkZWFsJ1xuICAgICAgKyAnIHBvbHlfZXhhY3RfZGl2aWRlIHBvbHlfZXhwYW5kIHBvbHlfZXhwdCBwb2x5X2djZCBwb2x5Z29uIHBvbHlfZ3JvYm5lciBwb2x5X2dyb2JuZXJfZXF1YWwnXG4gICAgICArICcgcG9seV9ncm9ibmVyX21lbWJlciBwb2x5X2dyb2JuZXJfc3Vic2V0cCBwb2x5X2lkZWFsX2ludGVyc2VjdGlvbiBwb2x5X2lkZWFsX3BvbHlzYXR1cmF0aW9uJ1xuICAgICAgKyAnIHBvbHlfaWRlYWxfcG9seXNhdHVyYXRpb24xIHBvbHlfaWRlYWxfc2F0dXJhdGlvbiBwb2x5X2lkZWFsX3NhdHVyYXRpb24xIHBvbHlfbGNtJ1xuICAgICAgKyAnIHBvbHlfbWluaW1pemF0aW9uIHBvbHltb2QgcG9seV9tdWx0aXBseSBwb2x5bm9tZTJlbGUgcG9seW5vbWlhbHAgcG9seV9ub3JtYWxfZm9ybSdcbiAgICAgICsgJyBwb2x5X25vcm1hbGl6ZSBwb2x5X25vcm1hbGl6ZV9saXN0IHBvbHlfcG9seXNhdHVyYXRpb25fZXh0ZW5zaW9uIHBvbHlfcHJpbWl0aXZlX3BhcnQnXG4gICAgICArICcgcG9seV9wc2V1ZG9fZGl2aWRlIHBvbHlfcmVkdWNlZF9ncm9ibmVyIHBvbHlfcmVkdWN0aW9uIHBvbHlfc2F0dXJhdGlvbl9leHRlbnNpb24nXG4gICAgICArICcgcG9seV9zX3BvbHlub21pYWwgcG9seV9zdWJ0cmFjdCBwb2x5dG9jb21wYW5pb24gcG9wIHBvc3RmaXggcG90ZW50aWFsIHBvd2VyX21vZCdcbiAgICAgICsgJyBwb3dlcnNlcmllcyBwb3dlcnNldCBwcmVmaXggcHJldl9wcmltZSBwcmltZXAgcHJpbWVzIHByaW5jaXBhbF9jb21wb25lbnRzJ1xuICAgICAgKyAnIHByaW50IHByaW50ZiBwcmludGZpbGUgcHJpbnRfZ3JhcGggcHJpbnRwb2lzIHByaW50cHJvcHMgcHJvZHJhYyBwcm9kdWN0IHByb3BlcnRpZXMnXG4gICAgICArICcgcHJvcHZhcnMgcHNpIHBzdWJzdCBwdHJpYW5ndWxhcml6ZSBwdWkgcHVpMmNvbXAgcHVpMmVsZSBwdWkycG9seW5vbWUgcHVpX2RpcmVjdCdcbiAgICAgICsgJyBwdWlyZWR1YyBwdXNoIHB1dCBwdiBxcHV0IHFyYW5nZSBxdHkgcXVhZF9jb250cm9sIHF1YWRfcWFnIHF1YWRfcWFnaSBxdWFkX3FhZ3AnXG4gICAgICArICcgcXVhZF9xYWdzIHF1YWRfcWF3YyBxdWFkX3Fhd2YgcXVhZF9xYXdvIHF1YWRfcWF3cyBxdWFkcmlsYXRlcmFsIHF1YW50aWxlJ1xuICAgICAgKyAnIHF1YW50aWxlX2Jlcm5vdWxsaSBxdWFudGlsZV9iZXRhIHF1YW50aWxlX2Jpbm9taWFsIHF1YW50aWxlX2NhdWNoeSBxdWFudGlsZV9jaGkyJ1xuICAgICAgKyAnIHF1YW50aWxlX2NvbnRpbnVvdXNfdW5pZm9ybSBxdWFudGlsZV9kaXNjcmV0ZV91bmlmb3JtIHF1YW50aWxlX2V4cCBxdWFudGlsZV9mJ1xuICAgICAgKyAnIHF1YW50aWxlX2dhbW1hIHF1YW50aWxlX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHF1YW50aWxlX2dlb21ldHJpYyBxdWFudGlsZV9ndW1iZWwnXG4gICAgICArICcgcXVhbnRpbGVfaHlwZXJnZW9tZXRyaWMgcXVhbnRpbGVfbGFwbGFjZSBxdWFudGlsZV9sb2dpc3RpYyBxdWFudGlsZV9sb2dub3JtYWwnXG4gICAgICArICcgcXVhbnRpbGVfbmVnYXRpdmVfYmlub21pYWwgcXVhbnRpbGVfbm9uY2VudHJhbF9jaGkyIHF1YW50aWxlX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHF1YW50aWxlX25vcm1hbCBxdWFudGlsZV9wYXJldG8gcXVhbnRpbGVfcG9pc3NvbiBxdWFudGlsZV9yYXlsZWlnaCBxdWFudGlsZV9zdHVkZW50X3QnXG4gICAgICArICcgcXVhbnRpbGVfd2VpYnVsbCBxdWFydGlsZV9za2V3bmVzcyBxdWl0IHF1bml0IHF1b3RpZW50IHJhY2FoX3YgcmFjYWhfdyByYWRjYW4nXG4gICAgICArICcgcmFkaXVzIHJhbmRvbSByYW5kb21fYmVybm91bGxpIHJhbmRvbV9iZXRhIHJhbmRvbV9iaW5vbWlhbCByYW5kb21fYmlwYXJ0aXRlX2dyYXBoJ1xuICAgICAgKyAnIHJhbmRvbV9jYXVjaHkgcmFuZG9tX2NoaTIgcmFuZG9tX2NvbnRpbnVvdXNfdW5pZm9ybSByYW5kb21fZGlncmFwaCByYW5kb21fZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyByYW5kb21fZXhwIHJhbmRvbV9mIHJhbmRvbV9nYW1tYSByYW5kb21fZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgcmFuZG9tX2dlb21ldHJpYydcbiAgICAgICsgJyByYW5kb21fZ3JhcGggcmFuZG9tX2dyYXBoMSByYW5kb21fZ3VtYmVsIHJhbmRvbV9oeXBlcmdlb21ldHJpYyByYW5kb21fbGFwbGFjZSdcbiAgICAgICsgJyByYW5kb21fbG9naXN0aWMgcmFuZG9tX2xvZ25vcm1hbCByYW5kb21fbmVnYXRpdmVfYmlub21pYWwgcmFuZG9tX25ldHdvcmsnXG4gICAgICArICcgcmFuZG9tX25vbmNlbnRyYWxfY2hpMiByYW5kb21fbm9uY2VudHJhbF9zdHVkZW50X3QgcmFuZG9tX25vcm1hbCByYW5kb21fcGFyZXRvJ1xuICAgICAgKyAnIHJhbmRvbV9wZXJtdXRhdGlvbiByYW5kb21fcG9pc3NvbiByYW5kb21fcmF5bGVpZ2ggcmFuZG9tX3JlZ3VsYXJfZ3JhcGggcmFuZG9tX3N0dWRlbnRfdCdcbiAgICAgICsgJyByYW5kb21fdG91cm5hbWVudCByYW5kb21fdHJlZSByYW5kb21fd2VpYnVsbCByYW5nZSByYW5rIHJhdCByYXRjb2VmIHJhdGRlbm9tJ1xuICAgICAgKyAnIHJhdGRpZmYgcmF0ZGlzcmVwIHJhdGV4cGFuZCByYXRpbnRlcnBvbCByYXRpb25hbCByYXRpb25hbGl6ZSByYXRudW1lciByYXRudW1wJ1xuICAgICAgKyAnIHJhdHAgcmF0c2ltcCByYXRzdWJzdCByYXR2YXJzIHJhdHdlaWdodCByZWFkIHJlYWRfYXJyYXkgcmVhZF9iaW5hcnlfYXJyYXknXG4gICAgICArICcgcmVhZF9iaW5hcnlfbGlzdCByZWFkX2JpbmFyeV9tYXRyaXggcmVhZGJ5dGUgcmVhZGNoYXIgcmVhZF9oYXNoZWRfYXJyYXkgcmVhZGxpbmUnXG4gICAgICArICcgcmVhZF9saXN0IHJlYWRfbWF0cml4IHJlYWRfbmVzdGVkX2xpc3QgcmVhZG9ubHkgcmVhZF94cG0gcmVhbF9pbWFncGFydF90b19jb25qdWdhdGUnXG4gICAgICArICcgcmVhbHBhcnQgcmVhbHJvb3RzIHJlYXJyYXkgcmVjdGFuZ2xlIHJlY3Rmb3JtIHJlY3Rmb3JtX2xvZ19pZl9jb25zdGFudCByZWN0dG9wb2xhcidcbiAgICAgICsgJyByZWRpZmYgcmVkdWNlX2NvbnN0cyByZWR1Y2Vfb3JkZXIgcmVnaW9uIHJlZ2lvbl9ib3VuZGFyaWVzIHJlZ2lvbl9ib3VuZGFyaWVzX3BsdXMnXG4gICAgICArICcgcmVtIHJlbWFpbmRlciByZW1hcnJheSByZW1ib3ggcmVtY29tcHMgcmVtY29uIHJlbWNvb3JkIHJlbWZ1biByZW1mdW5jdGlvbidcbiAgICAgICsgJyByZW1sZXQgcmVtb3ZlIHJlbW92ZV9jb25zdHZhbHVlIHJlbW92ZV9kaW1lbnNpb25zIHJlbW92ZV9lZGdlIHJlbW92ZV9mdW5kYW1lbnRhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIHJlbW92ZV9mdW5kYW1lbnRhbF91bml0cyByZW1vdmVfcGxvdF9vcHRpb24gcmVtb3ZlX3ZlcnRleCByZW1wYXJ0IHJlbXJ1bGUnXG4gICAgICArICcgcmVtc3ltIHJlbXZhbHVlIHJlbmFtZSByZW5hbWVfZmlsZSByZXNldCByZXNldF9kaXNwbGF5cyByZXNpZHVlIHJlc29sdmFudGUnXG4gICAgICArICcgcmVzb2x2YW50ZV9hbHRlcm5lZTEgcmVzb2x2YW50ZV9iaXBhcnRpdGUgcmVzb2x2YW50ZV9kaWVkcmFsZSByZXNvbHZhbnRlX2tsZWluJ1xuICAgICAgKyAnIHJlc29sdmFudGVfa2xlaW4zIHJlc29sdmFudGVfcHJvZHVpdF9zeW0gcmVzb2x2YW50ZV91bml0YWlyZSByZXNvbHZhbnRlX3ZpZXJlcidcbiAgICAgICsgJyByZXN0IHJlc3VsdGFudCByZXR1cm4gcmV2ZWFsIHJldmVyc2UgcmV2ZXJ0IHJldmVydDIgcmdiMmxldmVsIHJocyByaWNjaSByaWVtYW5uJ1xuICAgICAgKyAnIHJpbnZhcmlhbnQgcmlzY2ggcmsgcm1kaXIgcm5jb21iaW5lIHJvbWJlcmcgcm9vbSByb290c2NvbnRyYWN0IHJvdW5kIHJvdydcbiAgICAgICsgJyByb3dvcCByb3dzd2FwIHJyZWR1Y2UgcnVuX3Rlc3RzdWl0ZSAlcyBzYXZlIHNhdmluZyBzY2FsYXJwIHNjYWxlZF9iZXNzZWxfaSdcbiAgICAgICsgJyBzY2FsZWRfYmVzc2VsX2kwIHNjYWxlZF9iZXNzZWxfaTEgc2NhbGVmYWN0b3JzIHNjYW5tYXAgc2NhdHRlcnBsb3Qgc2NhdHRlcnBsb3RfZGVzY3JpcHRpb24nXG4gICAgICArICcgc2NlbmUgc2NodXIyY29tcCBzY29uY2F0IHNjb3B5IHNjc2ltcCBzY3VydmF0dXJlIHNkb3duY2FzZSBzZWMgc2VjaCBzZWNvbmQnXG4gICAgICArICcgc2VxdWFsIHNlcXVhbGlnbm9yZSBzZXRfYWx0X2Rpc3BsYXkgc2V0ZGlmZmVyZW5jZSBzZXRfZHJhd19kZWZhdWx0cyBzZXRfZWRnZV93ZWlnaHQnXG4gICAgICArICcgc2V0ZWxteCBzZXRlcXVhbHAgc2V0aWZ5IHNldHAgc2V0X3BhcnRpdGlvbnMgc2V0X3Bsb3Rfb3B0aW9uIHNldF9wcm9tcHQgc2V0X3JhbmRvbV9zdGF0ZSdcbiAgICAgICsgJyBzZXRfdGV4X2Vudmlyb25tZW50IHNldF90ZXhfZW52aXJvbm1lbnRfZGVmYXVsdCBzZXR1bml0cyBzZXR1cF9hdXRvbG9hZCBzZXRfdXBfZG90X3NpbXBsaWZpY2F0aW9ucydcbiAgICAgICsgJyBzZXRfdmVydGV4X2xhYmVsIHNldmVudGggc2V4cGxvZGUgc2Ygc2hhMXN1bSBzaGEyNTZzdW0gc2hvcnRlc3RfcGF0aCBzaG9ydGVzdF93ZWlnaHRlZF9wYXRoJ1xuICAgICAgKyAnIHNob3cgc2hvd2NvbXBzIHNob3dyYXR2YXJzIHNpZXJwaW5za2lhbGUgc2llcnBpbnNraW1hcCBzaWduIHNpZ251bSBzaW1pbGFyaXR5dHJhbnNmb3JtJ1xuICAgICAgKyAnIHNpbXBfaW5lcXVhbGl0eSBzaW1wbGlmeV9zdW0gc2ltcGxvZGUgc2ltcG1ldGRlcml2IHNpbXRyYW4gc2luIHNpbmggc2luc2VydCdcbiAgICAgICsgJyBzaW52ZXJ0Y2FzZSBzaXh0aCBza2V3bmVzcyBza2V3bmVzc19iZXJub3VsbGkgc2tld25lc3NfYmV0YSBza2V3bmVzc19iaW5vbWlhbCdcbiAgICAgICsgJyBza2V3bmVzc19jaGkyIHNrZXduZXNzX2NvbnRpbnVvdXNfdW5pZm9ybSBza2V3bmVzc19kaXNjcmV0ZV91bmlmb3JtIHNrZXduZXNzX2V4cCdcbiAgICAgICsgJyBza2V3bmVzc19mIHNrZXduZXNzX2dhbW1hIHNrZXduZXNzX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHNrZXduZXNzX2dlb21ldHJpYydcbiAgICAgICsgJyBza2V3bmVzc19ndW1iZWwgc2tld25lc3NfaHlwZXJnZW9tZXRyaWMgc2tld25lc3NfbGFwbGFjZSBza2V3bmVzc19sb2dpc3RpYydcbiAgICAgICsgJyBza2V3bmVzc19sb2dub3JtYWwgc2tld25lc3NfbmVnYXRpdmVfYmlub21pYWwgc2tld25lc3Nfbm9uY2VudHJhbF9jaGkyIHNrZXduZXNzX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHNrZXduZXNzX25vcm1hbCBza2V3bmVzc19wYXJldG8gc2tld25lc3NfcG9pc3NvbiBza2V3bmVzc19yYXlsZWlnaCBza2V3bmVzc19zdHVkZW50X3QnXG4gICAgICArICcgc2tld25lc3Nfd2VpYnVsbCBzbGVuZ3RoIHNtYWtlIHNtYWxsX3Job21iaWNvc2lkb2RlY2FoZWRyb25fZ3JhcGggc21hbGxfcmhvbWJpY3Vib2N0YWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBzbWF4IHNtaW4gc21pc21hdGNoIHNub3dtYXAgc251Yl9jdWJlX2dyYXBoIHNudWJfZG9kZWNhaGVkcm9uX2dyYXBoIHNvbHZlJ1xuICAgICAgKyAnIHNvbHZlX3JlYyBzb2x2ZV9yZWNfcmF0IHNvbWUgc29tcmFjIHNvcnQgc3BhcnNlNl9kZWNvZGUgc3BhcnNlNl9lbmNvZGUgc3BhcnNlNl9leHBvcnQnXG4gICAgICArICcgc3BhcnNlNl9pbXBvcnQgc3BlY2ludCBzcGhlcmljYWwgc3BoZXJpY2FsX2Jlc3NlbF9qIHNwaGVyaWNhbF9iZXNzZWxfeSBzcGhlcmljYWxfaGFua2VsMSdcbiAgICAgICsgJyBzcGhlcmljYWxfaGFua2VsMiBzcGhlcmljYWxfaGFybW9uaWMgc3BoZXJpY2FsX3RvX3h5eiBzcGxpY2Ugc3BsaXQgc3Bvc2l0aW9uJ1xuICAgICAgKyAnIHNwcmludCBzcWZyIHNxcnQgc3FydGRlbmVzdCBzcmVtb3ZlIHNyZW1vdmVmaXJzdCBzcmV2ZXJzZSBzc2VhcmNoIHNzb3J0IHNzdGF0dXMnXG4gICAgICArICcgc3N1YnN0IHNzdWJzdGZpcnN0IHN0YWlyY2FzZSBzdGFuZGFyZGl6ZSBzdGFuZGFyZGl6ZV9pbnZlcnNlX3RyaWcgc3RhcnBsb3QnXG4gICAgICArICcgc3RhcnBsb3RfZGVzY3JpcHRpb24gc3RhdHVzIHN0ZCBzdGQxIHN0ZF9iZXJub3VsbGkgc3RkX2JldGEgc3RkX2Jpbm9taWFsJ1xuICAgICAgKyAnIHN0ZF9jaGkyIHN0ZF9jb250aW51b3VzX3VuaWZvcm0gc3RkX2Rpc2NyZXRlX3VuaWZvcm0gc3RkX2V4cCBzdGRfZiBzdGRfZ2FtbWEnXG4gICAgICArICcgc3RkX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHN0ZF9nZW9tZXRyaWMgc3RkX2d1bWJlbCBzdGRfaHlwZXJnZW9tZXRyaWMgc3RkX2xhcGxhY2UnXG4gICAgICArICcgc3RkX2xvZ2lzdGljIHN0ZF9sb2dub3JtYWwgc3RkX25lZ2F0aXZlX2Jpbm9taWFsIHN0ZF9ub25jZW50cmFsX2NoaTIgc3RkX25vbmNlbnRyYWxfc3R1ZGVudF90J1xuICAgICAgKyAnIHN0ZF9ub3JtYWwgc3RkX3BhcmV0byBzdGRfcG9pc3NvbiBzdGRfcmF5bGVpZ2ggc3RkX3N0dWRlbnRfdCBzdGRfd2VpYnVsbCdcbiAgICAgICsgJyBzdGVtcGxvdCBzdGlybGluZyBzdGlybGluZzEgc3RpcmxpbmcyIHN0cmltIHN0cmltbCBzdHJpbXIgc3RyaW5nIHN0cmluZ291dCdcbiAgICAgICsgJyBzdHJpbmdwIHN0cm9uZ19jb21wb25lbnRzIHN0cnV2ZV9oIHN0cnV2ZV9sIHN1YmxpcyBzdWJsaXN0IHN1Ymxpc3RfaW5kaWNlcydcbiAgICAgICsgJyBzdWJtYXRyaXggc3Vic2FtcGxlIHN1YnNldCBzdWJzZXRwIHN1YnN0IHN1YnN0aW5wYXJ0IHN1YnN0X3BhcmFsbGVsIHN1YnN0cGFydCdcbiAgICAgICsgJyBzdWJzdHJpbmcgc3VidmFyIHN1YnZhcnAgc3VtIHN1bWNvbnRyYWN0IHN1bW1hbmRfdG9fcmVjIHN1cGNhc2Ugc3VwY29udGV4dCdcbiAgICAgICsgJyBzeW1ib2xwIHN5bW1kaWZmZXJlbmNlIHN5bW1ldHJpY3Agc3lzdGVtIHRha2VfY2hhbm5lbCB0YWtlX2luZmVyZW5jZSB0YW4nXG4gICAgICArICcgdGFuaCB0YXlsb3IgdGF5bG9yaW5mbyB0YXlsb3JwIHRheWxvcl9zaW1wbGlmaWVyIHRheXRvcmF0IHRjbF9vdXRwdXQgdGNvbnRyYWN0J1xuICAgICAgKyAnIHRlbGxyYXQgdGVsbHNpbXAgdGVsbHNpbXBhZnRlciB0ZW50ZXggdGVudGggdGVzdF9tZWFuIHRlc3RfbWVhbnNfZGlmZmVyZW5jZSdcbiAgICAgICsgJyB0ZXN0X25vcm1hbGl0eSB0ZXN0X3Byb3BvcnRpb24gdGVzdF9wcm9wb3J0aW9uc19kaWZmZXJlbmNlIHRlc3RfcmFua19zdW0nXG4gICAgICArICcgdGVzdF9zaWduIHRlc3Rfc2lnbmVkX3JhbmsgdGVzdF92YXJpYW5jZSB0ZXN0X3ZhcmlhbmNlX3JhdGlvIHRleCB0ZXgxIHRleF9kaXNwbGF5J1xuICAgICAgKyAnIHRleHB1dCAldGggdGhpcmQgdGhyb3cgdGltZSB0aW1lZGF0ZSB0aW1lciB0aW1lcl9pbmZvIHRsZGVmaW50IHRsaW1pdCB0b2RkX2NveGV0ZXInXG4gICAgICArICcgdG9lcGxpdHogdG9rZW5zIHRvX2xpc3AgdG9wb2xvZ2ljYWxfc29ydCB0b19wb2x5IHRvX3BvbHlfc29sdmUgdG90YWxkaXNyZXAnXG4gICAgICArICcgdG90YWxmb3VyaWVyIHRvdGllbnQgdHBhcnRwb2wgdHJhY2UgdHJhY2VtYXRyaXggdHJhY2Vfb3B0aW9ucyB0cmFuc2Zvcm1fc2FtcGxlJ1xuICAgICAgKyAnIHRyYW5zbGF0ZSB0cmFuc2xhdGVfZmlsZSB0cmFuc3Bvc2UgdHJlZWZhbGUgdHJlZV9yZWR1Y2UgdHJlaWxsaXMgdHJlaW5hdCdcbiAgICAgICsgJyB0cmlhbmdsZSB0cmlhbmd1bGFyaXplIHRyaWdleHBhbmQgdHJpZ3JhdCB0cmlncmVkdWNlIHRyaWdzaW1wIHRydW5jIHRydW5jYXRlJ1xuICAgICAgKyAnIHRydW5jYXRlZF9jdWJlX2dyYXBoIHRydW5jYXRlZF9kb2RlY2FoZWRyb25fZ3JhcGggdHJ1bmNhdGVkX2ljb3NhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIHRydW5jYXRlZF90ZXRyYWhlZHJvbl9ncmFwaCB0cl93YXJuaW5nc19nZXQgdHViZSB0dXR0ZV9ncmFwaCB1ZWl2ZWN0cyB1Zm9yZ2V0J1xuICAgICAgKyAnIHVsdHJhc3BoZXJpY2FsIHVuZGVybHlpbmdfZ3JhcGggdW5kaWZmIHVuaW9uIHVuaXF1ZSB1bml0ZWlnZW52ZWN0b3JzIHVuaXRwJ1xuICAgICAgKyAnIHVuaXRzIHVuaXRfc3RlcCB1bml0dmVjdG9yIHVub3JkZXIgdW5zdW0gdW50ZWxscmF0IHVudGltZXInXG4gICAgICArICcgdW50cmFjZSB1cHBlcmNhc2VwIHVyaWNjaSB1cmllbWFubiB1dmVjdCB2YW5kZXJtb25kZV9tYXRyaXggdmFyIHZhcjEgdmFyX2Jlcm5vdWxsaSdcbiAgICAgICsgJyB2YXJfYmV0YSB2YXJfYmlub21pYWwgdmFyX2NoaTIgdmFyX2NvbnRpbnVvdXNfdW5pZm9ybSB2YXJfZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyB2YXJfZXhwIHZhcl9mIHZhcl9nYW1tYSB2YXJfZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgdmFyX2dlb21ldHJpYyB2YXJfZ3VtYmVsJ1xuICAgICAgKyAnIHZhcl9oeXBlcmdlb21ldHJpYyB2YXJfbGFwbGFjZSB2YXJfbG9naXN0aWMgdmFyX2xvZ25vcm1hbCB2YXJfbmVnYXRpdmVfYmlub21pYWwnXG4gICAgICArICcgdmFyX25vbmNlbnRyYWxfY2hpMiB2YXJfbm9uY2VudHJhbF9zdHVkZW50X3QgdmFyX25vcm1hbCB2YXJfcGFyZXRvIHZhcl9wb2lzc29uJ1xuICAgICAgKyAnIHZhcl9yYXlsZWlnaCB2YXJfc3R1ZGVudF90IHZhcl93ZWlidWxsIHZlY3RvciB2ZWN0b3Jwb3RlbnRpYWwgdmVjdG9yc2ltcCdcbiAgICAgICsgJyB2ZXJiaWZ5IHZlcnMgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9jb25uZWN0aXZpdHkgdmVydGV4X2RlZ3JlZSB2ZXJ0ZXhfZGlzdGFuY2UnXG4gICAgICArICcgdmVydGV4X2VjY2VudHJpY2l0eSB2ZXJ0ZXhfaW5fZGVncmVlIHZlcnRleF9vdXRfZGVncmVlIHZlcnRpY2VzIHZlcnRpY2VzX3RvX2N5Y2xlJ1xuICAgICAgKyAnIHZlcnRpY2VzX3RvX3BhdGggJXcgd2V5bCB3aGVlbF9ncmFwaCB3aWVuZXJfaW5kZXggd2lnbmVyXzNqIHdpZ25lcl82aidcbiAgICAgICsgJyB3aWduZXJfOWogd2l0aF9zdGRvdXQgd3JpdGVfYmluYXJ5X2RhdGEgd3JpdGVieXRlIHdyaXRlX2RhdGEgd3JpdGVmaWxlIHdyb25za2lhbidcbiAgICAgICsgJyB4cmVkdWNlIHh0aHJ1ICV5IFplaWxiZXJnZXIgemVyb2VxdWl2IHplcm9mb3IgemVyb21hdHJpeCB6ZXJvbWF0cml4cCB6ZXRhJ1xuICAgICAgKyAnIHpnZWV2IHpoZWV2IHpsYW5nZSB6bl9hZGRfdGFibGUgem5fY2FybWljaGFlbF9sYW1iZGEgem5fY2hhcmFjdGVyaXN0aWNfZmFjdG9ycydcbiAgICAgICsgJyB6bl9kZXRlcm1pbmFudCB6bl9mYWN0b3JfZ2VuZXJhdG9ycyB6bl9pbnZlcnRfYnlfbHUgem5fbG9nIHpuX211bHRfdGFibGUnXG4gICAgICArICcgYWJzYm94Y2hhciBhY3RpdmVjb250ZXh0cyBhZGFwdF9kZXB0aCBhZGRpdGl2ZSBhZGltIGFmb3JtIGFsZ2VicmFpYydcbiAgICAgICsgJyBhbGdlcHNpbG9uIGFsZ2V4YWN0IGFsaWFzZXMgYWxsYnV0IGFsbF9kb3RzaW1wX2Rlbm9tcyBhbGxvY2F0aW9uIGFsbHN5bSBhbHBoYWJldGljJ1xuICAgICAgKyAnIGFuaW1hdGlvbiBhbnRpc3ltbWV0cmljIGFycmF5cyBhc2tleHAgYXNzdW1lX3BvcyBhc3N1bWVfcG9zX3ByZWQgYXNzdW1lc2NhbGFyJ1xuICAgICAgKyAnIGFzeW1ib2wgYXRvbWdyYWQgYXRyaWcxIGF4ZXMgYXhpc18zZCBheGlzX2JvdHRvbSBheGlzX2xlZnQgYXhpc19yaWdodCBheGlzX3RvcCdcbiAgICAgICsgJyBhemltdXRoIGJhY2tncm91bmQgYmFja2dyb3VuZF9jb2xvciBiYWNrc3Vic3QgYmVybGVmYWN0IGJlcm5zdGVpbl9leHBsaWNpdCdcbiAgICAgICsgJyBiZXNzZWxleHBhbmQgYmV0YV9hcmdzX3N1bV90b19pbnRlZ2VyIGJldGFfZXhwYW5kIGJmdG9yYXQgYmZ0cnVuYyBiaW5kdGVzdCdcbiAgICAgICsgJyBib3JkZXIgYm91bmRhcmllc19hcnJheSBib3ggYm94Y2hhciBicmVha3VwICVjIGNhcHBpbmcgY2F1Y2h5c3VtIGNicmFuZ2UnXG4gICAgICArICcgY2J0aWNzIGNlbnRlciBjZmxlbmd0aCBjZnJhbWVfZmxhZyBjbm9ubWV0X2ZsYWcgY29sb3IgY29sb3JfYmFyIGNvbG9yX2Jhcl90aWNzJ1xuICAgICAgKyAnIGNvbG9yYm94IGNvbHVtbnMgY29tbXV0YXRpdmUgY29tcGxleCBjb25lIGNvbnRleHQgY29udGV4dHMgY29udG91ciBjb250b3VyX2xldmVscydcbiAgICAgICsgJyBjb3NucGlmbGFnIGN0YXlwb3YgY3RheXB0IGN0YXlzd2l0Y2ggY3RheXZhciBjdF9jb29yZHMgY3RvcnNpb25fZmxhZyBjdHJnc2ltcCdcbiAgICAgICsgJyBjdWJlIGN1cnJlbnRfbGV0X3J1bGVfcGFja2FnZSBjeWxpbmRlciBkYXRhX2ZpbGVfbmFtZSBkZWJ1Z21vZGUgZGVjcmVhc2luZydcbiAgICAgICsgJyBkZWZhdWx0X2xldF9ydWxlX3BhY2thZ2UgZGVsYXkgZGVwZW5kZW5jaWVzIGRlcml2YWJicmV2IGRlcml2c3Vic3QgZGV0b3V0J1xuICAgICAgKyAnIGRpYWdtZXRyaWMgZGlmZiBkaW0gZGltZW5zaW9ucyBkaXNwZmxhZyBkaXNwbGF5MmR8MTAgZGlzcGxheV9mb3JtYXRfaW50ZXJuYWwnXG4gICAgICArICcgZGlzdHJpYnV0ZV9vdmVyIGRvYWxsbXhvcHMgZG9tYWluIGRvbXhleHB0IGRvbXhteG9wcyBkb214bmN0aW1lcyBkb250ZmFjdG9yJ1xuICAgICAgKyAnIGRvc2NteG9wcyBkb3NjbXhwbHVzIGRvdDBuc2NzaW1wIGRvdDBzaW1wIGRvdDFzaW1wIGRvdGFzc29jIGRvdGNvbnN0cnVsZXMnXG4gICAgICArICcgZG90ZGlzdHJpYiBkb3RleHB0c2ltcCBkb3RpZGVudCBkb3RzY3J1bGVzIGRyYXdfZ3JhcGhfcHJvZ3JhbSBkcmF3X3JlYWxwYXJ0J1xuICAgICAgKyAnIGVkZ2VfY29sb3IgZWRnZV9jb2xvcmluZyBlZGdlX3BhcnRpdGlvbiBlZGdlX3R5cGUgZWRnZV93aWR0aCAlZWRpc3BmbGFnJ1xuICAgICAgKyAnIGVsZXZhdGlvbiAlZW1vZGUgZW5kcGhpIGVuZHRoZXRhIGVuZ2luZWVyaW5nX2Zvcm1hdF9mbG9hdHMgZW5oYW5jZWQzZCAlZW51bWVyJ1xuICAgICAgKyAnIGVwc2lsb25fbHAgZXJmZmxhZyBlcmZfcmVwcmVzZW50YXRpb24gZXJyb3Jtc2cgZXJyb3Jfc2l6ZSBlcnJvcl9zeW1zIGVycm9yX3R5cGUnXG4gICAgICArICcgJWVfdG9fbnVtbG9nIGV2YWwgZXZlbiBldmVuZnVuIGV2ZmxhZyBldmZ1biBldl9wb2ludCBleHBhbmR3cnRfZGVub20gZXhwaW50ZXhwYW5kJ1xuICAgICAgKyAnIGV4cGludHJlcCBleHBvbiBleHBvcCBleHB0ZGlzcGZsYWcgZXhwdGlzb2xhdGUgZXhwdHN1YnN0IGZhY2V4cGFuZCBmYWNzdW1fY29tYmluZSdcbiAgICAgICsgJyBmYWN0bGltIGZhY3RvcmZsYWcgZmFjdG9yaWFsX2V4cGFuZCBmYWN0b3JzX29ubHkgZmIgZmVhdHVyZSBmZWF0dXJlcydcbiAgICAgICsgJyBmaWxlX25hbWUgZmlsZV9vdXRwdXRfYXBwZW5kIGZpbGVfc2VhcmNoX2RlbW8gZmlsZV9zZWFyY2hfbGlzcCBmaWxlX3NlYXJjaF9tYXhpbWF8MTAnXG4gICAgICArICcgZmlsZV9zZWFyY2hfdGVzdHMgZmlsZV9zZWFyY2hfdXNhZ2UgZmlsZV90eXBlX2xpc3AgZmlsZV90eXBlX21heGltYXwxMCBmaWxsX2NvbG9yJ1xuICAgICAgKyAnIGZpbGxfZGVuc2l0eSBmaWxsZWRfZnVuYyBmaXhlZF92ZXJ0aWNlcyBmbGlwZmxhZyBmbG9hdDJiZiBmb250IGZvbnRfc2l6ZSdcbiAgICAgICsgJyBmb3J0aW5kZW50IGZvcnRzcGFjZXMgZnBwcmVjIGZwcHJpbnRwcmVjIGZ1bmN0aW9ucyBnYW1tYV9leHBhbmQgZ2FtbWFsaW0nXG4gICAgICArICcgZ2RldCBnZW5pbmRleCBnZW5zdW1udW0gR0dGQ0ZNQVggR0dGSU5GSU5JVFkgZ2xvYmFsc29sdmUgZ251cGxvdF9jb21tYW5kJ1xuICAgICAgKyAnIGdudXBsb3RfY3VydmVfc3R5bGVzIGdudXBsb3RfY3VydmVfdGl0bGVzIGdudXBsb3RfZGVmYXVsdF90ZXJtX2NvbW1hbmQgZ251cGxvdF9kdW1iX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X2ZpbGVfYXJncyBnbnVwbG90X2ZpbGVfbmFtZSBnbnVwbG90X291dF9maWxlIGdudXBsb3RfcGRmX3Rlcm1fY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X3BtM2QgZ251cGxvdF9wbmdfdGVybV9jb21tYW5kIGdudXBsb3RfcG9zdGFtYmxlIGdudXBsb3RfcHJlYW1ibGUnXG4gICAgICArICcgZ251cGxvdF9wc190ZXJtX2NvbW1hbmQgZ251cGxvdF9zdmdfdGVybV9jb21tYW5kIGdudXBsb3RfdGVybSBnbnVwbG90X3ZpZXdfYXJncydcbiAgICAgICsgJyBHb3NwZXJfaW5fWmVpbGJlcmdlciBncmFkZWZzIGdyaWQgZ3JpZDJkIGdyaW5kIGhhbGZhbmdsZXMgaGVhZF9hbmdsZSBoZWFkX2JvdGgnXG4gICAgICArICcgaGVhZF9sZW5ndGggaGVhZF90eXBlIGhlaWdodCBoeXBlcmdlb21ldHJpY19yZXByZXNlbnRhdGlvbiAlaWFyZ3MgaWJhc2UnXG4gICAgICArICcgaWNjMSBpY2MyIGljb3VudGVyIGlkdW1teXggaWVxbnByaW50IGlmYiBpZmMxIGlmYzIgaWZnIGlmZ2kgaWZyIGlmcmFtZV9icmFja2V0X2Zvcm0nXG4gICAgICArICcgaWZyaSBpZ2Vvd2VkZ2VfZmxhZyBpa3QxIGlrdDIgaW1hZ2luYXJ5IGluY2hhciBpbmNyZWFzaW5nIGluZmV2YWwnXG4gICAgICArICcgaW5maW5pdHkgaW5mbGFnIGluZm9saXN0cyBpbm0gaW5tYzEgaW5tYzIgaW50YW5hbHlzaXMgaW50ZWdlciBpbnRlZ2VydmFsdWVkJ1xuICAgICAgKyAnIGludGVncmF0ZV91c2Vfcm9vdHNvZiBpbnRlZ3JhdGlvbl9jb25zdGFudCBpbnRlZ3JhdGlvbl9jb25zdGFudF9jb3VudGVyIGludGVycG9sYXRlX2NvbG9yJ1xuICAgICAgKyAnIGludGZhY2xpbSBpcF9ncmlkIGlwX2dyaWRfaW4gaXJyYXRpb25hbCBpc29sYXRlX3dydF90aW1lcyBpdGVyYXRpb25zIGl0cidcbiAgICAgICsgJyBqdWxpYV9wYXJhbWV0ZXIgJWsxICVrMiBrZWVwZmxvYXQga2V5IGtleV9wb3Mga2ludmFyaWFudCBrdCBsYWJlbCBsYWJlbF9hbGlnbm1lbnQnXG4gICAgICArICcgbGFiZWxfb3JpZW50YXRpb24gbGFiZWxzIGxhc3NvY2lhdGl2ZSBsYmZnc19uY29ycmVjdGlvbnMgbGJmZ3NfbmZldmFsX21heCdcbiAgICAgICsgJyBsZWZ0anVzdCBsZWdlbmQgbGV0cmF0IGxldF9ydWxlX3BhY2thZ2VzIGxmZyBsZyBsaG9zcGl0YWxsaW0gbGltc3Vic3QgbGluZWFyJ1xuICAgICAgKyAnIGxpbmVhcl9zb2x2ZXIgbGluZWNoYXIgbGluZWx8MTAgbGluZW51bSBsaW5lX3R5cGUgbGluZXdpZHRoIGxpbmVfd2lkdGggbGluc29sdmVfcGFyYW1zJ1xuICAgICAgKyAnIGxpbnNvbHZld2FybiBsaXNwZGlzcCBsaXN0YXJpdGggbGlzdGNvbnN0dmFycyBsaXN0ZHVtbXl2YXJzIGxteGNoYXIgbG9hZF9wYXRobmFtZSdcbiAgICAgICsgJyBsb2FkcHJpbnQgbG9nYWJzIGxvZ2FyYyBsb2djYiBsb2djb25jb2VmZnAgbG9nZXhwYW5kIGxvZ25lZ2ludCBsb2dzaW1wIGxvZ3gnXG4gICAgICArICcgbG9neF9zZWNvbmRhcnkgbG9neSBsb2d5X3NlY29uZGFyeSBsb2d6IGxyaWVtIG0xcGJyYW5jaCBtYWNyb2V4cGFuc2lvbiBtYWNyb3MnXG4gICAgICArICcgbWFpbnZhciBtYW51YWxfZGVtbyBtYXBlcnJvciBtYXBwcmludCBtYXRyaXhfZWxlbWVudF9hZGQgbWF0cml4X2VsZW1lbnRfbXVsdCdcbiAgICAgICsgJyBtYXRyaXhfZWxlbWVudF90cmFuc3Bvc2UgbWF4YXBwbHlkZXB0aCBtYXhhcHBseWhlaWdodCBtYXhpbWFfdGVtcGRpcnwxMCBtYXhpbWFfdXNlcmRpcnwxMCdcbiAgICAgICsgJyBtYXhuZWdleCBNQVhfT1JEIG1heHBvc2V4IG1heHBzaWZyYWNkZW5vbSBtYXhwc2lmcmFjbnVtIG1heHBzaW5lZ2ludCBtYXhwc2lwb3NpbnQnXG4gICAgICArICcgbWF4dGF5b3JkZXIgbWVzaF9saW5lc19jb2xvciBtZXRob2QgbW9kX2JpZ19wcmltZSBtb2RlX2NoZWNrX2Vycm9ycCdcbiAgICAgICsgJyBtb2RlX2NoZWNrcCBtb2RlX2NoZWNrX3dhcm5wIG1vZF90ZXN0IG1vZF90aHJlc2hvbGQgbW9kdWxhcl9saW5lYXJfc29sdmVyJ1xuICAgICAgKyAnIG1vZHVsdXMgbXVsdGlwbGljYXRpdmUgbXVsdGlwbGljaXRpZXMgbXlvcHRpb25zIG5hcnkgbmVnZGlzdHJpYiBuZWdzdW1kaXNwZmxhZydcbiAgICAgICsgJyBuZXdsaW5lIG5ld3RvbmVwc2lsb24gbmV3dG9ubWF4aXRlciBuZXh0bGF5ZXJmYWN0b3IgbmljZWluZGljZXNwcmVmIG5tIG5tYydcbiAgICAgICsgJyBub2V2YWwgbm9sYWJlbHMgbm9uZWdhdGl2ZV9scCBub25pbnRlZ2VyIG5vbnNjYWxhciBub3VuIG5vdW5kaXNwIG5vdW5zIG5wJ1xuICAgICAgKyAnIG5waSBudGlja3MgbnRyaWcgbnVtZXIgbnVtZXJfcGJyYW5jaCBvYmFzZSBvZGQgb2RkZnVuIG9wYWNpdHkgb3Bwcm9wZXJ0aWVzJ1xuICAgICAgKyAnIG9wc3Vic3Qgb3B0aW1wcmVmaXggb3B0aW9uc2V0IG9yaWVudGF0aW9uIG9yaWdpbiBvcnRob3BvbHlfcmV0dXJuc19pbnRlcnZhbHMnXG4gICAgICArICcgb3V0YXRpdmUgb3V0Y2hhciBwYWNrYWdlZmlsZSBwYWxldHRlIHBhcnRzd2l0Y2ggcGRmX2ZpbGUgcGZlZm9ybWF0IHBoaXJlc29sdXRpb24nXG4gICAgICArICcgJXBpYXJncyBwaWVjZSBwaXZvdF9jb3VudF9zeCBwaXZvdF9tYXhfc3ggcGxvdF9mb3JtYXQgcGxvdF9vcHRpb25zIHBsb3RfcmVhbHBhcnQnXG4gICAgICArICcgcG5nX2ZpbGUgcG9jaGhhbW1lcl9tYXhfaW5kZXggcG9pbnRzIHBvaW50c2l6ZSBwb2ludF9zaXplIHBvaW50c19qb2luZWQgcG9pbnRfdHlwZSdcbiAgICAgICsgJyBwb2lzbGltIHBvaXNzb24gcG9seV9jb2VmZmljaWVudF9yaW5nIHBvbHlfZWxpbWluYXRpb25fb3JkZXIgcG9seWZhY3RvciBwb2x5X2dyb2JuZXJfYWxnb3JpdGhtJ1xuICAgICAgKyAnIHBvbHlfZ3JvYm5lcl9kZWJ1ZyBwb2x5X21vbm9taWFsX29yZGVyIHBvbHlfcHJpbWFyeV9lbGltaW5hdGlvbl9vcmRlciBwb2x5X3JldHVybl90ZXJtX2xpc3QnXG4gICAgICArICcgcG9seV9zZWNvbmRhcnlfZWxpbWluYXRpb25fb3JkZXIgcG9seV90b3BfcmVkdWN0aW9uX29ubHkgcG9zZnVuIHBvc2l0aW9uJ1xuICAgICAgKyAnIHBvd2VyZGlzcCBwcmVkIHByZWRlcnJvciBwcmltZXBfbnVtYmVyX29mX3Rlc3RzIHByb2R1Y3RfdXNlX2dhbW1hIHByb2dyYW0nXG4gICAgICArICcgcHJvZ3JhbW1vZGUgcHJvbW90ZV9mbG9hdF90b19iaWdmbG9hdCBwcm9tcHQgcHJvcG9ydGlvbmFsX2F4ZXMgcHJvcHMgcHNleHBhbmQnXG4gICAgICArICcgcHNfZmlsZSByYWRleHBhbmQgcmFkaXVzIHJhZHN1YnN0ZmxhZyByYXNzb2NpYXRpdmUgcmF0YWxnZGVub20gcmF0Y2hyaXN0b2YnXG4gICAgICArICcgcmF0ZGVub21kaXZpZGUgcmF0ZWluc3RlaW4gcmF0ZXBzaWxvbiByYXRmYWMgcmF0aW9uYWwgcmF0bXggcmF0cHJpbnQgcmF0cmllbWFubidcbiAgICAgICsgJyByYXRzaW1wZXhwb25zIHJhdHZhcnN3aXRjaCByYXR3ZWlnaHRzIHJhdHdleWwgcmF0d3RsdmwgcmVhbCByZWFsb25seSByZWRyYXcnXG4gICAgICArICcgcmVmY2hlY2sgcmVzb2x1dGlvbiByZXN0YXJ0IHJlc3VsdGFudCByaWMgcmllbSBybXhjaGFyICVybnVtX2xpc3Qgcm9tYmVyZ2FicydcbiAgICAgICsgJyByb21iZXJnaXQgcm9tYmVyZ21pbiByb21iZXJndG9sIHJvb3RzY29ubW9kZSByb290c2Vwc2lsb24gcnVuX3ZpZXdlciBzYW1lX3h5J1xuICAgICAgKyAnIHNhbWVfeHl6IHNhdmVkZWYgc2F2ZWZhY3RvcnMgc2NhbGFyIHNjYWxhcm1hdHJpeHAgc2NhbGUgc2NhbGVfbHAgc2V0Y2hlY2snXG4gICAgICArICcgc2V0Y2hlY2ticmVhayBzZXR2YWwgc2hvd19lZGdlX2NvbG9yIHNob3dfZWRnZXMgc2hvd19lZGdlX3R5cGUgc2hvd19lZGdlX3dpZHRoJ1xuICAgICAgKyAnIHNob3dfaWQgc2hvd19sYWJlbCBzaG93dGltZSBzaG93X3ZlcnRleF9jb2xvciBzaG93X3ZlcnRleF9zaXplIHNob3dfdmVydGV4X3R5cGUnXG4gICAgICArICcgc2hvd192ZXJ0aWNlcyBzaG93X3dlaWdodCBzaW1wIHNpbXBsaWZpZWRfb3V0cHV0IHNpbXBsaWZ5X3Byb2R1Y3RzIHNpbXBwcm9kdWN0J1xuICAgICAgKyAnIHNpbXBzdW0gc2lubnBpZmxhZyBzb2x2ZWRlY29tcG9zZXMgc29sdmVleHBsaWNpdCBzb2x2ZWZhY3RvcnMgc29sdmVudWxsd2FybidcbiAgICAgICsgJyBzb2x2ZXJhZGNhbiBzb2x2ZXRyaWd3YXJuIHNwYWNlIHNwYXJzZSBzcGhlcmUgc3ByaW5nX2VtYmVkZGluZ19kZXB0aCBzcXJ0ZGlzcGZsYWcnXG4gICAgICArICcgc3RhcmRpc3Agc3RhcnRwaGkgc3RhcnR0aGV0YSBzdGF0c19udW1lciBzdHJpbmdkaXNwIHN0cnVjdHVyZXMgc3R5bGUgc3VibGlzX2FwcGx5X2xhbWJkYSdcbiAgICAgICsgJyBzdWJudW1zaW1wIHN1bWV4cGFuZCBzdW1zcGxpdGZhY3Qgc3VyZmFjZSBzdXJmYWNlX2hpZGUgc3ZnX2ZpbGUgc3ltbWV0cmljJ1xuICAgICAgKyAnIHRhYiB0YXlsb3JkZXB0aCB0YXlsb3JfbG9nZXhwYW5kIHRheWxvcl9vcmRlcl9jb2VmZmljaWVudHMgdGF5bG9yX3RydW5jYXRlX3BvbHlub21pYWxzJ1xuICAgICAgKyAnIHRlbnNvcmtpbGwgdGVybWluYWwgdGVzdHN1aXRlX2ZpbGVzIHRoZXRhcmVzb2x1dGlvbiB0aW1lcl9kZXZhbHVlIHRpdGxlIHRsaW1zd2l0Y2gnXG4gICAgICArICcgdHIgdHJhY2sgdHJhbnNjb21waWxlIHRyYW5zZm9ybSB0cmFuc2Zvcm1feHkgdHJhbnNsYXRlX2Zhc3RfYXJyYXlzIHRyYW5zcGFyZW50J1xuICAgICAgKyAnIHRyYW5zcnVuIHRyX2FycmF5X2FzX3JlZiB0cl9ib3VuZF9mdW5jdGlvbl9hcHBseXAgdHJfZmlsZV90dHlfbWVzc2FnZXNwIHRyX2Zsb2F0X2Nhbl9icmFuY2hfY29tcGxleCdcbiAgICAgICsgJyB0cl9mdW5jdGlvbl9jYWxsX2RlZmF1bHQgdHJpZ2V4cGFuZHBsdXMgdHJpZ2V4cGFuZHRpbWVzIHRyaWdpbnZlcnNlcyB0cmlnc2lnbidcbiAgICAgICsgJyB0cml2aWFsX3NvbHV0aW9ucyB0cl9udW1lciB0cl9vcHRpbWl6ZV9tYXhfbG9vcCB0cl9zZW1pY29tcGlsZSB0cl9zdGF0ZV92YXJzJ1xuICAgICAgKyAnIHRyX3dhcm5fYmFkX2Z1bmN0aW9uX2NhbGxzIHRyX3dhcm5fZmV4cHIgdHJfd2Fybl9tZXZhbCB0cl93YXJuX21vZGUnXG4gICAgICArICcgdHJfd2Fybl91bmRlY2xhcmVkIHRyX3dhcm5fdW5kZWZpbmVkX3ZhcmlhYmxlIHRzdGVwIHR0eW9mZiB0dWJlX2V4dHJlbWVzJ1xuICAgICAgKyAnIHVmZyB1ZyAldW5pdGV4cGFuZCB1bml0X3ZlY3RvcnMgdXJpYyB1cmllbSB1c2VfZmFzdF9hcnJheXMgdXNlcl9wcmVhbWJsZSdcbiAgICAgICsgJyB1c2Vyc2V0dW5pdHMgdmFsdWVzIHZlY3RfY3Jvc3MgdmVyYm9zZSB2ZXJ0ZXhfY29sb3IgdmVydGV4X2NvbG9yaW5nIHZlcnRleF9wYXJ0aXRpb24nXG4gICAgICArICcgdmVydGV4X3NpemUgdmVydGV4X3R5cGUgdmlldyB3YXJuaW5ncyB3ZXlsIHdpZHRoIHdpbmRvd25hbWUgd2luZG93dGl0bGUgd2lyZWRfc3VyZmFjZSdcbiAgICAgICsgJyB3aXJlZnJhbWUgeGF4aXMgeGF4aXNfY29sb3IgeGF4aXNfc2Vjb25kYXJ5IHhheGlzX3R5cGUgeGF4aXNfd2lkdGggeGxhYmVsJ1xuICAgICAgKyAnIHhsYWJlbF9zZWNvbmRhcnkgeGxlbmd0aCB4cmFuZ2UgeHJhbmdlX3NlY29uZGFyeSB4dGljcyB4dGljc19heGlzIHh0aWNzX3JvdGF0ZSdcbiAgICAgICsgJyB4dGljc19yb3RhdGVfc2Vjb25kYXJ5IHh0aWNzX3NlY29uZGFyeSB4dGljc19zZWNvbmRhcnlfYXhpcyB4dV9ncmlkIHhfdm94ZWwnXG4gICAgICArICcgeHlfZmlsZSB4eXBsYW5lIHh5X3NjYWxlIHlheGlzIHlheGlzX2NvbG9yIHlheGlzX3NlY29uZGFyeSB5YXhpc190eXBlIHlheGlzX3dpZHRoJ1xuICAgICAgKyAnIHlsYWJlbCB5bGFiZWxfc2Vjb25kYXJ5IHlsZW5ndGggeXJhbmdlIHlyYW5nZV9zZWNvbmRhcnkgeXRpY3MgeXRpY3NfYXhpcydcbiAgICAgICsgJyB5dGljc19yb3RhdGUgeXRpY3Nfcm90YXRlX3NlY29uZGFyeSB5dGljc19zZWNvbmRhcnkgeXRpY3Nfc2Vjb25kYXJ5X2F4aXMnXG4gICAgICArICcgeXZfZ3JpZCB5X3ZveGVsIHl4X3JhdGlvIHpheGlzIHpheGlzX2NvbG9yIHpheGlzX3R5cGUgemF4aXNfd2lkdGggemVyb2EgemVyb2InXG4gICAgICArICcgemVyb2Jlcm4gemV0YSVwaSB6bGFiZWwgemxhYmVsX3JvdGF0ZSB6bGVuZ3RoIHptaW4gem5fcHJpbXJvb3RfbGltaXQgem5fcHJpbXJvb3RfcHJldGVzdCc7XG4gIHZhciBTWU1CT0xTID0gJ18gX18gJXwwICUlfDAnO1xuXG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogJ1tBLVphLXpfJV1bMC05QS1aYS16XyVdKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTl9GVU5DVElPTlMsXG4gICAgICBzeW1ib2w6IFNZTUJPTFMsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46ICcvXFxcXConLFxuICAgICAgICBlbmQ6ICdcXFxcKi8nLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvIGV4cG9uZW50XG4gICAgICAgICAgICAvLyBobW0sIEkgd29uZGVyIGlmIHdlIG91Z2h0IHRvIGluY2x1ZGUgb3RoZXIgZXhwb25lbnQgbWFya2Vycz9cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrfFxcXFxkK1xcXFwufFxcXFwuXFxcXGQrfFxcXFxkK1xcXFwuXFxcXGQrKVtFZV1bLStdP1xcXFxkK1xcXFxiJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGJpZ2Zsb2F0IG51bWJlclxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCt8XFxcXGQrXFxcXC58XFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCspW0JiXVstK10/XFxcXGQrXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZmxvYXQgbnVtYmVyIHcvb3V0IGV4cG9uZW50XG4gICAgICAgICAgICAvLyBEb2Vzbid0IHNlZW0gdG8gcmVjb2duaXplIGZsb2F0cyB3aGljaCBzdGFydCB3aXRoICcuJ1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcLlxcXFxkK3xcXFxcZCtcXFxcLlxcXFxkKylcXFxcYicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBpbnRlZ2VyIGluIGJhc2UgdXAgdG8gMzZcbiAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2VlbSB0byByZWNvZ25pemUgaW50ZWdlcnMgd2hpY2ggZW5kIHdpdGggJy4nXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKFxcXFxkK3wwWzAtOUEtWmEtel0rKVxcXFwuP1xcXFxiJyxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9AL1xuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2ludCBmbG9hdCBzdHJpbmcgdmVjdG9yIG1hdHJpeCBpZiBlbHNlIHN3aXRjaCBjYXNlIGRlZmF1bHQgd2hpbGUgZG8gZm9yIGluIGJyZWFrICcgK1xuICAgICAgJ2NvbnRpbnVlIGdsb2JhbCBwcm9jIHJldHVybiBhYm91dCBhYnMgYWRkQXR0ciBhZGRBdHRyaWJ1dGVFZGl0b3JOb2RlSGVscCBhZGREeW5hbWljICcgK1xuICAgICAgJ2FkZE5ld1NoZWxmVGFiIGFkZFBQIGFkZFBhbmVsQ2F0ZWdvcnkgYWRkUHJlZml4VG9OYW1lIGFkdmFuY2VUb05leHREcml2ZW5LZXkgJyArXG4gICAgICAnYWZmZWN0ZWROZXQgYWZmZWN0cyBhaW1Db25zdHJhaW50IGFpciBhbGlhcyBhbGlhc0F0dHIgYWxpZ24gYWxpZ25DdHggYWxpZ25DdXJ2ZSAnICtcbiAgICAgICdhbGlnblN1cmZhY2UgYWxsVmlld0ZpdCBhbWJpZW50TGlnaHQgYW5nbGUgYW5nbGVCZXR3ZWVuIGFuaW1Db25lIGFuaW1DdXJ2ZUVkaXRvciAnICtcbiAgICAgICdhbmltRGlzcGxheSBhbmltVmlldyBhbm5vdGF0ZSBhcHBlbmRTdHJpbmdBcnJheSBhcHBsaWNhdGlvbk5hbWUgYXBwbHlBdHRyUHJlc2V0ICcgK1xuICAgICAgJ2FwcGx5VGFrZSBhcmNMZW5EaW1Db250ZXh0IGFyY0xlbmd0aERpbWVuc2lvbiBhcmNsZW4gYXJyYXlNYXBwZXIgYXJ0M2RQYWludEN0eCAnICtcbiAgICAgICdhcnRBdHRyQ3R4IGFydEF0dHJQYWludFZlcnRleEN0eCBhcnRBdHRyU2tpblBhaW50Q3R4IGFydEF0dHJUb29sIGFydEJ1aWxkUGFpbnRNZW51ICcgK1xuICAgICAgJ2FydEZsdWlkQXR0ckN0eCBhcnRQdXR0eUN0eCBhcnRTZWxlY3RDdHggYXJ0U2V0UGFpbnRDdHggYXJ0VXNlclBhaW50Q3R4IGFzc2lnbkNvbW1hbmQgJyArXG4gICAgICAnYXNzaWduSW5wdXREZXZpY2UgYXNzaWduVmlld3BvcnRGYWN0b3JpZXMgYXR0YWNoQ3VydmUgYXR0YWNoRGV2aWNlQXR0ciBhdHRhY2hTdXJmYWNlICcgK1xuICAgICAgJ2F0dHJDb2xvclNsaWRlckdycCBhdHRyQ29tcGF0aWJpbGl0eSBhdHRyQ29udHJvbEdycCBhdHRyRW51bU9wdGlvbk1lbnUgJyArXG4gICAgICAnYXR0ckVudW1PcHRpb25NZW51R3JwIGF0dHJGaWVsZEdycCBhdHRyRmllbGRTbGlkZXJHcnAgYXR0ck5hdmlnYXRpb25Db250cm9sR3JwICcgK1xuICAgICAgJ2F0dHJQcmVzZXRFZGl0V2luIGF0dHJpYnV0ZUV4aXN0cyBhdHRyaWJ1dGVJbmZvIGF0dHJpYnV0ZU1lbnUgYXR0cmlidXRlUXVlcnkgJyArXG4gICAgICAnYXV0b0tleWZyYW1lIGF1dG9QbGFjZSBiYWtlQ2xpcCBiYWtlRmx1aWRTaGFkaW5nIGJha2VQYXJ0aWFsSGlzdG9yeSBiYWtlUmVzdWx0cyAnICtcbiAgICAgICdiYWtlU2ltdWxhdGlvbiBiYXNlbmFtZSBiYXNlbmFtZUV4IGJhdGNoUmVuZGVyIGJlc3NlbCBiZXZlbCBiZXZlbFBsdXMgYmluTWVtYmVyc2hpcCAnICtcbiAgICAgICdiaW5kU2tpbiBibGVuZDIgYmxlbmRTaGFwZSBibGVuZFNoYXBlRWRpdG9yIGJsZW5kU2hhcGVQYW5lbCBibGVuZFR3b0F0dHIgYmxpbmREYXRhVHlwZSAnICtcbiAgICAgICdib25lTGF0dGljZSBib3VuZGFyeSBib3hEb2xseUN0eCBib3hab29tQ3R4IGJ1ZmZlckN1cnZlIGJ1aWxkQm9va21hcmtNZW51ICcgK1xuICAgICAgJ2J1aWxkS2V5ZnJhbWVNZW51IGJ1dHRvbiBidXR0b25NYW5pcCBDQkcgY2FjaGVGaWxlIGNhY2hlRmlsZUNvbWJpbmUgY2FjaGVGaWxlTWVyZ2UgJyArXG4gICAgICAnY2FjaGVGaWxlVHJhY2sgY2FtZXJhIGNhbWVyYVZpZXcgY2FuQ3JlYXRlTWFuaXAgY2FudmFzIGNhcGl0YWxpemVTdHJpbmcgY2F0Y2ggJyArXG4gICAgICAnY2F0Y2hRdWlldCBjZWlsIGNoYW5nZVN1YmRpdkNvbXBvbmVudERpc3BsYXlMZXZlbCBjaGFuZ2VTdWJkaXZSZWdpb24gY2hhbm5lbEJveCAnICtcbiAgICAgICdjaGFyYWN0ZXIgY2hhcmFjdGVyTWFwIGNoYXJhY3Rlck91dGxpbmVFZGl0b3IgY2hhcmFjdGVyaXplIGNoZGlyIGNoZWNrQm94IGNoZWNrQm94R3JwICcgK1xuICAgICAgJ2NoZWNrRGVmYXVsdFJlbmRlckdsb2JhbHMgY2hvaWNlIGNpcmNsZSBjaXJjdWxhckZpbGxldCBjbGFtcCBjbGVhciBjbGVhckNhY2hlIGNsaXAgJyArXG4gICAgICAnY2xpcEVkaXRvciBjbGlwRWRpdG9yQ3VycmVudFRpbWVDdHggY2xpcFNjaGVkdWxlIGNsaXBTY2hlZHVsZXJPdXRsaW5lciBjbGlwVHJpbUJlZm9yZSAnICtcbiAgICAgICdjbG9zZUN1cnZlIGNsb3NlU3VyZmFjZSBjbHVzdGVyIGNtZEZpbGVPdXRwdXQgY21kU2Nyb2xsRmllbGRFeGVjdXRlciAnICtcbiAgICAgICdjbWRTY3JvbGxGaWVsZFJlcG9ydGVyIGNtZFNoZWxsIGNvYXJzZW5TdWJkaXZTZWxlY3Rpb25MaXN0IGNvbGxpc2lvbiBjb2xvciAnICtcbiAgICAgICdjb2xvckF0UG9pbnQgY29sb3JFZGl0b3IgY29sb3JJbmRleCBjb2xvckluZGV4U2xpZGVyR3JwIGNvbG9yU2xpZGVyQnV0dG9uR3JwICcgK1xuICAgICAgJ2NvbG9yU2xpZGVyR3JwIGNvbHVtbkxheW91dCBjb21tYW5kRWNobyBjb21tYW5kTGluZSBjb21tYW5kUG9ydCBjb21wYWN0SGFpclN5c3RlbSAnICtcbiAgICAgICdjb21wb25lbnRFZGl0b3IgY29tcG9zaXRpbmdJbnRlcm9wIGNvbXB1dGVQb2x5c2V0Vm9sdW1lIGNvbmRpdGlvbiBjb25lIGNvbmZpcm1EaWFsb2cgJyArXG4gICAgICAnY29ubmVjdEF0dHIgY29ubmVjdENvbnRyb2wgY29ubmVjdER5bmFtaWMgY29ubmVjdEpvaW50IGNvbm5lY3Rpb25JbmZvIGNvbnN0cmFpbiAnICtcbiAgICAgICdjb25zdHJhaW5WYWx1ZSBjb25zdHJ1Y3Rpb25IaXN0b3J5IGNvbnRhaW5lciBjb250YWluc011bHRpYnl0ZSBjb250ZXh0SW5mbyBjb250cm9sICcgK1xuICAgICAgJ2NvbnZlcnRGcm9tT2xkTGF5ZXJzIGNvbnZlcnRJZmZUb1BzZCBjb252ZXJ0TGlnaHRtYXAgY29udmVydFNvbGlkVHggY29udmVydFRlc3NlbGxhdGlvbiAnICtcbiAgICAgICdjb252ZXJ0VW5pdCBjb3B5QXJyYXkgY29weUZsZXhvciBjb3B5S2V5IGNvcHlTa2luV2VpZ2h0cyBjb3MgY3BCdXR0b24gY3BDYWNoZSAnICtcbiAgICAgICdjcENsb3RoU2V0IGNwQ29sbGlzaW9uIGNwQ29uc3RyYWludCBjcENvbnZDbG90aFRvTWVzaCBjcEZvcmNlcyBjcEdldFNvbHZlckF0dHIgY3BQYW5lbCAnICtcbiAgICAgICdjcFByb3BlcnR5IGNwUmlnaWRDb2xsaXNpb25GaWx0ZXIgY3BTZWFtIGNwU2V0RWRpdCBjcFNldFNvbHZlckF0dHIgY3BTb2x2ZXIgJyArXG4gICAgICAnY3BTb2x2ZXJUeXBlcyBjcFRvb2wgY3BVcGRhdGVDbG90aFVWcyBjcmVhdGVEaXNwbGF5TGF5ZXIgY3JlYXRlRHJhd0N0eCBjcmVhdGVFZGl0b3IgJyArXG4gICAgICAnY3JlYXRlTGF5ZXJlZFBzZEZpbGUgY3JlYXRlTW90aW9uRmllbGQgY3JlYXRlTmV3U2hlbGYgY3JlYXRlTm9kZSBjcmVhdGVSZW5kZXJMYXllciAnICtcbiAgICAgICdjcmVhdGVTdWJkaXZSZWdpb24gY3Jvc3MgY3Jvc3NQcm9kdWN0IGN0eEFib3J0IGN0eENvbXBsZXRpb24gY3R4RWRpdE1vZGUgY3R4VHJhdmVyc2UgJyArXG4gICAgICAnY3VycmVudEN0eCBjdXJyZW50VGltZSBjdXJyZW50VGltZUN0eCBjdXJyZW50VW5pdCBjdXJ2ZSBjdXJ2ZUFkZFB0Q3R4ICcgK1xuICAgICAgJ2N1cnZlQ1ZDdHggY3VydmVFUEN0eCBjdXJ2ZUVkaXRvckN0eCBjdXJ2ZUludGVyc2VjdCBjdXJ2ZU1vdmVFUEN0eCBjdXJ2ZU9uU3VyZmFjZSAnICtcbiAgICAgICdjdXJ2ZVNrZXRjaEN0eCBjdXRLZXkgY3ljbGVDaGVjayBjeWxpbmRlciBkYWdQb3NlIGRhdGUgZGVmYXVsdExpZ2h0TGlzdENoZWNrQm94ICcgK1xuICAgICAgJ2RlZmF1bHROYXZpZ2F0aW9uIGRlZmluZURhdGFTZXJ2ZXIgZGVmaW5lVmlydHVhbERldmljZSBkZWZvcm1lciBkZWdfdG9fcmFkIGRlbGV0ZSAnICtcbiAgICAgICdkZWxldGVBdHRyIGRlbGV0ZVNoYWRpbmdHcm91cHNBbmRNYXRlcmlhbHMgZGVsZXRlU2hlbGZUYWIgZGVsZXRlVUkgZGVsZXRlVW51c2VkQnJ1c2hlcyAnICtcbiAgICAgICdkZWxyYW5kc3RyIGRldGFjaEN1cnZlIGRldGFjaERldmljZUF0dHIgZGV0YWNoU3VyZmFjZSBkZXZpY2VFZGl0b3IgZGV2aWNlUGFuZWwgZGdJbmZvICcgK1xuICAgICAgJ2RnZGlydHkgZGdldmFsIGRndGltZXIgZGltV2hlbiBkaXJlY3RLZXlDdHggZGlyZWN0aW9uYWxMaWdodCBkaXJtYXAgZGlybmFtZSBkaXNhYmxlICcgK1xuICAgICAgJ2Rpc2Nvbm5lY3RBdHRyIGRpc2Nvbm5lY3RKb2ludCBkaXNrQ2FjaGUgZGlzcGxhY2VtZW50VG9Qb2x5IGRpc3BsYXlBZmZlY3RlZCAnICtcbiAgICAgICdkaXNwbGF5Q29sb3IgZGlzcGxheUN1bGwgZGlzcGxheUxldmVsT2ZEZXRhaWwgZGlzcGxheVByZWYgZGlzcGxheVJHQkNvbG9yICcgK1xuICAgICAgJ2Rpc3BsYXlTbW9vdGhuZXNzIGRpc3BsYXlTdGF0cyBkaXNwbGF5U3RyaW5nIGRpc3BsYXlTdXJmYWNlIGRpc3RhbmNlRGltQ29udGV4dCAnICtcbiAgICAgICdkaXN0YW5jZURpbWVuc2lvbiBkb0JsdXIgZG9sbHkgZG9sbHlDdHggZG9wZVNoZWV0RWRpdG9yIGRvdCBkb3RQcm9kdWN0ICcgK1xuICAgICAgJ2RvdWJsZVByb2ZpbGVCaXJhaWxTdXJmYWNlIGRyYWcgZHJhZ0F0dHJDb250ZXh0IGRyYWdnZXJDb250ZXh0IGRyb3BvZmZMb2NhdG9yICcgK1xuICAgICAgJ2R1cGxpY2F0ZSBkdXBsaWNhdGVDdXJ2ZSBkdXBsaWNhdGVTdXJmYWNlIGR5bkNhY2hlIGR5bkNvbnRyb2wgZHluRXhwb3J0IGR5bkV4cHJlc3Npb24gJyArXG4gICAgICAnZHluR2xvYmFscyBkeW5QYWludEVkaXRvciBkeW5QYXJ0aWNsZUN0eCBkeW5QcmVmIGR5blJlbEVkUGFuZWwgZHluUmVsRWRpdG9yICcgK1xuICAgICAgJ2R5bmFtaWNMb2FkIGVkaXRBdHRyTGltaXRzIGVkaXREaXNwbGF5TGF5ZXJHbG9iYWxzIGVkaXREaXNwbGF5TGF5ZXJNZW1iZXJzICcgK1xuICAgICAgJ2VkaXRSZW5kZXJMYXllckFkanVzdG1lbnQgZWRpdFJlbmRlckxheWVyR2xvYmFscyBlZGl0UmVuZGVyTGF5ZXJNZW1iZXJzIGVkaXRvciAnICtcbiAgICAgICdlZGl0b3JUZW1wbGF0ZSBlZmZlY3RvciBlbWl0IGVtaXR0ZXIgZW5hYmxlRGV2aWNlIGVuY29kZVN0cmluZyBlbmRTdHJpbmcgZW5kc1dpdGggZW52ICcgK1xuICAgICAgJ2VxdWl2YWxlbnQgZXF1aXZhbGVudFRvbCBlcmYgZXJyb3IgZXZhbCBldmFsRGVmZXJyZWQgZXZhbEVjaG8gZXZlbnQgJyArXG4gICAgICAnZXhhY3RXb3JsZEJvdW5kaW5nQm94IGV4Y2x1c2l2ZUxpZ2h0Q2hlY2tCb3ggZXhlYyBleGVjdXRlRm9yRWFjaE9iamVjdCBleGlzdHMgZXhwICcgK1xuICAgICAgJ2V4cHJlc3Npb24gZXhwcmVzc2lvbkVkaXRvckxpc3RlbiBleHRlbmRDdXJ2ZSBleHRlbmRTdXJmYWNlIGV4dHJ1ZGUgZmNoZWNrIGZjbG9zZSBmZW9mICcgK1xuICAgICAgJ2ZmbHVzaCBmZ2V0bGluZSBmZ2V0d29yZCBmaWxlIGZpbGVCcm93c2VyRGlhbG9nIGZpbGVEaWFsb2cgZmlsZUV4dGVuc2lvbiBmaWxlSW5mbyAnICtcbiAgICAgICdmaWxldGVzdCBmaWxsZXRDdXJ2ZSBmaWx0ZXIgZmlsdGVyQ3VydmUgZmlsdGVyRXhwYW5kIGZpbHRlclN0dWRpb0ltcG9ydCAnICtcbiAgICAgICdmaW5kQWxsSW50ZXJzZWN0aW9ucyBmaW5kQW5pbUN1cnZlcyBmaW5kS2V5ZnJhbWUgZmluZE1lbnVJdGVtIGZpbmRSZWxhdGVkU2tpbkNsdXN0ZXIgJyArXG4gICAgICAnZmluZGVyIGZpcnN0UGFyZW50T2YgZml0QnNwbGluZSBmbGV4b3IgZmxvYXRFcSBmbG9hdEZpZWxkIGZsb2F0RmllbGRHcnAgZmxvYXRTY3JvbGxCYXIgJyArXG4gICAgICAnZmxvYXRTbGlkZXIgZmxvYXRTbGlkZXIyIGZsb2F0U2xpZGVyQnV0dG9uR3JwIGZsb2F0U2xpZGVyR3JwIGZsb29yIGZsb3cgZmx1aWRDYWNoZUluZm8gJyArXG4gICAgICAnZmx1aWRFbWl0dGVyIGZsdWlkVm94ZWxJbmZvIGZsdXNoVW5kbyBmbW9kIGZvbnREaWFsb2cgZm9wZW4gZm9ybUxheW91dCBmb3JtYXQgZnByaW50ICcgK1xuICAgICAgJ2ZyYW1lTGF5b3V0IGZyZWFkIGZyZWVGb3JtRmlsbGV0IGZyZXdpbmQgZnJvbU5hdGl2ZVBhdGggZndyaXRlIGdhbW1hIGdhdXNzICcgK1xuICAgICAgJ2dlb21ldHJ5Q29uc3RyYWludCBnZXRBcHBsaWNhdGlvblZlcnNpb25Bc0Zsb2F0IGdldEF0dHIgZ2V0Q2xhc3NpZmljYXRpb24gJyArXG4gICAgICAnZ2V0RGVmYXVsdEJydXNoIGdldEZpbGVMaXN0IGdldEZsdWlkQXR0ciBnZXRJbnB1dERldmljZVJhbmdlIGdldE1heWFQYW5lbFR5cGVzICcgK1xuICAgICAgJ2dldE1vZGlmaWVycyBnZXRQYW5lbCBnZXRQYXJ0aWNsZUF0dHIgZ2V0UGx1Z2luUmVzb3VyY2UgZ2V0ZW52IGdldHBpZCBnbFJlbmRlciAnICtcbiAgICAgICdnbFJlbmRlckVkaXRvciBnbG9iYWxTdGl0Y2ggZ21hdGNoIGdvYWwgZ290b0JpbmRQb3NlIGdyYWJDb2xvciBncmFkaWVudENvbnRyb2wgJyArXG4gICAgICAnZ3JhZGllbnRDb250cm9sTm9BdHRyIGdyYXBoRG9sbHlDdHggZ3JhcGhTZWxlY3RDb250ZXh0IGdyYXBoVHJhY2tDdHggZ3Jhdml0eSBncmlkICcgK1xuICAgICAgJ2dyaWRMYXlvdXQgZ3JvdXAgZ3JvdXBPYmplY3RzQnlOYW1lIEhmQWRkQXR0cmFjdG9yVG9BUyBIZkFzc2lnbkFTIEhmQnVpbGRFcXVhbE1hcCAnICtcbiAgICAgICdIZkJ1aWxkRnVyRmlsZXMgSGZCdWlsZEZ1ckltYWdlcyBIZkNhbmNlbEFGUiBIZkNvbm5lY3RBU1RvSEYgSGZDcmVhdGVBdHRyYWN0b3IgJyArXG4gICAgICAnSGZEZWxldGVBUyBIZkVkaXRBUyBIZlBlcmZvcm1DcmVhdGVBUyBIZlJlbW92ZUF0dHJhY3RvckZyb21BUyBIZlNlbGVjdEF0dGFjaGVkICcgK1xuICAgICAgJ0hmU2VsZWN0QXR0cmFjdG9ycyBIZlVuQXNzaWduQVMgaGFyZGVuUG9pbnRDdXJ2ZSBoYXJkd2FyZSBoYXJkd2FyZVJlbmRlclBhbmVsICcgK1xuICAgICAgJ2hlYWRzVXBEaXNwbGF5IGhlYWRzVXBNZXNzYWdlIGhlbHAgaGVscExpbmUgaGVybWl0ZSBoaWRlIGhpbGl0ZSBoaXRUZXN0IGhvdEJveCBob3RrZXkgJyArXG4gICAgICAnaG90a2V5Q2hlY2sgaHN2X3RvX3JnYiBodWRCdXR0b24gaHVkU2xpZGVyIGh1ZFNsaWRlckJ1dHRvbiBod1JlZmxlY3Rpb25NYXAgaHdSZW5kZXIgJyArXG4gICAgICAnaHdSZW5kZXJMb2FkIGh5cGVyR3JhcGggaHlwZXJQYW5lbCBoeXBlclNoYWRlIGh5cG90IGljb25UZXh0QnV0dG9uIGljb25UZXh0Q2hlY2tCb3ggJyArXG4gICAgICAnaWNvblRleHRSYWRpb0J1dHRvbiBpY29uVGV4dFJhZGlvQ29sbGVjdGlvbiBpY29uVGV4dFNjcm9sbExpc3QgaWNvblRleHRTdGF0aWNMYWJlbCAnICtcbiAgICAgICdpa0hhbmRsZSBpa0hhbmRsZUN0eCBpa0hhbmRsZURpc3BsYXlTY2FsZSBpa1NvbHZlciBpa1NwbGluZUhhbmRsZUN0eCBpa1N5c3RlbSAnICtcbiAgICAgICdpa1N5c3RlbUluZm8gaWtma0Rpc3BsYXlNZXRob2QgaWxsdXN0cmF0b3JDdXJ2ZXMgaW1hZ2UgaW1mUGx1Z2lucyBpbmhlcml0VHJhbnNmb3JtICcgK1xuICAgICAgJ2luc2VydEpvaW50IGluc2VydEpvaW50Q3R4IGluc2VydEtleUN0eCBpbnNlcnRLbm90Q3VydmUgaW5zZXJ0S25vdFN1cmZhY2UgaW5zdGFuY2UgJyArXG4gICAgICAnaW5zdGFuY2VhYmxlIGluc3RhbmNlciBpbnRGaWVsZCBpbnRGaWVsZEdycCBpbnRTY3JvbGxCYXIgaW50U2xpZGVyIGludFNsaWRlckdycCAnICtcbiAgICAgICdpbnRlclRvVUkgaW50ZXJuYWxWYXIgaW50ZXJzZWN0IGlwckVuZ2luZSBpc0FuaW1DdXJ2ZSBpc0Nvbm5lY3RlZCBpc0RpcnR5IGlzUGFyZW50T2YgJyArXG4gICAgICAnaXNTYW1lT2JqZWN0IGlzVHJ1ZSBpc1ZhbGlkT2JqZWN0TmFtZSBpc1ZhbGlkU3RyaW5nIGlzVmFsaWRVaU5hbWUgaXNvbGF0ZVNlbGVjdCAnICtcbiAgICAgICdpdGVtRmlsdGVyIGl0ZW1GaWx0ZXJBdHRyIGl0ZW1GaWx0ZXJSZW5kZXIgaXRlbUZpbHRlclR5cGUgam9pbnQgam9pbnRDbHVzdGVyIGpvaW50Q3R4ICcgK1xuICAgICAgJ2pvaW50RGlzcGxheVNjYWxlIGpvaW50TGF0dGljZSBrZXlUYW5nZW50IGtleWZyYW1lIGtleWZyYW1lT3V0bGluZXIgJyArXG4gICAgICAna2V5ZnJhbWVSZWdpb25DdXJyZW50VGltZUN0eCBrZXlmcmFtZVJlZ2lvbkRpcmVjdEtleUN0eCBrZXlmcmFtZVJlZ2lvbkRvbGx5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uSW5zZXJ0S2V5Q3R4IGtleWZyYW1lUmVnaW9uTW92ZUtleUN0eCBrZXlmcmFtZVJlZ2lvblNjYWxlS2V5Q3R4ICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uU2VsZWN0S2V5Q3R4IGtleWZyYW1lUmVnaW9uU2V0S2V5Q3R4IGtleWZyYW1lUmVnaW9uVHJhY2tDdHggJyArXG4gICAgICAna2V5ZnJhbWVTdGF0cyBsYXNzb0NvbnRleHQgbGF0dGljZSBsYXR0aWNlRGVmb3JtS2V5Q3R4IGxhdW5jaCBsYXVuY2hJbWFnZUVkaXRvciAnICtcbiAgICAgICdsYXllckJ1dHRvbiBsYXllcmVkU2hhZGVyUG9ydCBsYXllcmVkVGV4dHVyZVBvcnQgbGF5b3V0IGxheW91dERpYWxvZyBsaWdodExpc3QgJyArXG4gICAgICAnbGlnaHRMaXN0RWRpdG9yIGxpZ2h0TGlzdFBhbmVsIGxpZ2h0bGluayBsaW5lSW50ZXJzZWN0aW9uIGxpbmVhclByZWNpc2lvbiBsaW5zdGVwICcgK1xuICAgICAgJ2xpc3RBbmltYXRhYmxlIGxpc3RBdHRyIGxpc3RDYW1lcmFzIGxpc3RDb25uZWN0aW9ucyBsaXN0RGV2aWNlQXR0YWNobWVudHMgbGlzdEhpc3RvcnkgJyArXG4gICAgICAnbGlzdElucHV0RGV2aWNlQXhlcyBsaXN0SW5wdXREZXZpY2VCdXR0b25zIGxpc3RJbnB1dERldmljZXMgbGlzdE1lbnVBbm5vdGF0aW9uICcgK1xuICAgICAgJ2xpc3ROb2RlVHlwZXMgbGlzdFBhbmVsQ2F0ZWdvcmllcyBsaXN0UmVsYXRpdmVzIGxpc3RTZXRzIGxpc3RUcmFuc2Zvcm1zICcgK1xuICAgICAgJ2xpc3RVbnNlbGVjdGVkIGxpc3RlckVkaXRvciBsb2FkRmx1aWQgbG9hZE5ld1NoZWxmIGxvYWRQbHVnaW4gJyArXG4gICAgICAnbG9hZFBsdWdpbkxhbmd1YWdlUmVzb3VyY2VzIGxvYWRQcmVmT2JqZWN0cyBsb2NhbGl6ZWRQYW5lbExhYmVsIGxvY2tOb2RlIGxvZnQgbG9nICcgK1xuICAgICAgJ2xvbmdOYW1lT2YgbG9va1RocnUgbHMgbHNUaHJvdWdoRmlsdGVyIGxzVHlwZSBsc1VJIE1heWF0b21yIG1hZyBtYWtlSWRlbnRpdHkgbWFrZUxpdmUgJyArXG4gICAgICAnbWFrZVBhaW50YWJsZSBtYWtlUm9sbCBtYWtlU2luZ2xlU3VyZmFjZSBtYWtlVHViZU9uIG1ha2Vib3QgbWFuaXBNb3ZlQ29udGV4dCAnICtcbiAgICAgICdtYW5pcE1vdmVMaW1pdHNDdHggbWFuaXBPcHRpb25zIG1hbmlwUm90YXRlQ29udGV4dCBtYW5pcFJvdGF0ZUxpbWl0c0N0eCAnICtcbiAgICAgICdtYW5pcFNjYWxlQ29udGV4dCBtYW5pcFNjYWxlTGltaXRzQ3R4IG1hcmtlciBtYXRjaCBtYXggbWVtb3J5IG1lbnUgbWVudUJhckxheW91dCAnICtcbiAgICAgICdtZW51RWRpdG9yIG1lbnVJdGVtIG1lbnVJdGVtVG9TaGVsZiBtZW51U2V0IG1lbnVTZXRQcmVmIG1lc3NhZ2VMaW5lIG1pbiBtaW5pbWl6ZUFwcCAnICtcbiAgICAgICdtaXJyb3JKb2ludCBtb2RlbEN1cnJlbnRUaW1lQ3R4IG1vZGVsRWRpdG9yIG1vZGVsUGFuZWwgbW91c2UgbW92SW4gbW92T3V0IG1vdmUgJyArXG4gICAgICAnbW92ZUlLdG9GSyBtb3ZlS2V5Q3R4IG1vdmVWZXJ0ZXhBbG9uZ0RpcmVjdGlvbiBtdWx0aVByb2ZpbGVCaXJhaWxTdXJmYWNlIG11dGUgJyArXG4gICAgICAnblBhcnRpY2xlIG5hbWVDb21tYW5kIG5hbWVGaWVsZCBuYW1lc3BhY2UgbmFtZXNwYWNlSW5mbyBuZXdQYW5lbEl0ZW1zIG5ld3RvbiBub2RlQ2FzdCAnICtcbiAgICAgICdub2RlSWNvbkJ1dHRvbiBub2RlT3V0bGluZXIgbm9kZVByZXNldCBub2RlVHlwZSBub2lzZSBub25MaW5lYXIgbm9ybWFsQ29uc3RyYWludCAnICtcbiAgICAgICdub3JtYWxpemUgbnVyYnNCb29sZWFuIG51cmJzQ29weVVWU2V0IG51cmJzQ3ViZSBudXJic0VkaXRVViBudXJic1BsYW5lIG51cmJzU2VsZWN0ICcgK1xuICAgICAgJ251cmJzU3F1YXJlIG51cmJzVG9Qb2x5IG51cmJzVG9Qb2x5Z29uc1ByZWYgbnVyYnNUb1N1YmRpdiBudXJic1RvU3ViZGl2UHJlZiAnICtcbiAgICAgICdudXJic1VWU2V0IG51cmJzVmlld0RpcmVjdGlvblZlY3RvciBvYmpFeGlzdHMgb2JqZWN0Q2VudGVyIG9iamVjdExheWVyIG9iamVjdFR5cGUgJyArXG4gICAgICAnb2JqZWN0VHlwZVVJIG9ic29sZXRlUHJvYyBvY2Vhbk51cmJzUHJldmlld1BsYW5lIG9mZnNldEN1cnZlIG9mZnNldEN1cnZlT25TdXJmYWNlICcgK1xuICAgICAgJ29mZnNldFN1cmZhY2Ugb3BlbkdMRXh0ZW5zaW9uIG9wZW5NYXlhUHJlZiBvcHRpb25NZW51IG9wdGlvbk1lbnVHcnAgb3B0aW9uVmFyIG9yYml0ICcgK1xuICAgICAgJ29yYml0Q3R4IG9yaWVudENvbnN0cmFpbnQgb3V0bGluZXJFZGl0b3Igb3V0bGluZXJQYW5lbCBvdmVycmlkZU1vZGlmaWVyICcgK1xuICAgICAgJ3BhaW50RWZmZWN0c0Rpc3BsYXkgcGFpckJsZW5kIHBhbGV0dGVQb3J0IHBhbmVMYXlvdXQgcGFuZWwgcGFuZWxDb25maWd1cmF0aW9uICcgK1xuICAgICAgJ3BhbmVsSGlzdG9yeSBwYXJhbURpbUNvbnRleHQgcGFyYW1EaW1lbnNpb24gcGFyYW1Mb2NhdG9yIHBhcmVudCBwYXJlbnRDb25zdHJhaW50ICcgK1xuICAgICAgJ3BhcnRpY2xlIHBhcnRpY2xlRXhpc3RzIHBhcnRpY2xlSW5zdGFuY2VyIHBhcnRpY2xlUmVuZGVySW5mbyBwYXJ0aXRpb24gcGFzdGVLZXkgJyArXG4gICAgICAncGF0aEFuaW1hdGlvbiBwYXVzZSBwY2xvc2UgcGVyY2VudCBwZXJmb3JtYW5jZU9wdGlvbnMgcGZ4c3Ryb2tlcyBwaWNrV2FsayBwaWN0dXJlICcgK1xuICAgICAgJ3BpeGVsTW92ZSBwbGFuYXJTcmYgcGxhbmUgcGxheSBwbGF5YmFja09wdGlvbnMgcGxheWJsYXN0IHBsdWdBdHRyIHBsdWdOb2RlIHBsdWdpbkluZm8gJyArXG4gICAgICAncGx1Z2luUmVzb3VyY2VVdGlsIHBvaW50Q29uc3RyYWludCBwb2ludEN1cnZlQ29uc3RyYWludCBwb2ludExpZ2h0IHBvaW50TWF0cml4TXVsdCAnICtcbiAgICAgICdwb2ludE9uQ3VydmUgcG9pbnRPblN1cmZhY2UgcG9pbnRQb3NpdGlvbiBwb2xlVmVjdG9yQ29uc3RyYWludCBwb2x5QXBwZW5kICcgK1xuICAgICAgJ3BvbHlBcHBlbmRGYWNldEN0eCBwb2x5QXBwZW5kVmVydGV4IHBvbHlBdXRvUHJvamVjdGlvbiBwb2x5QXZlcmFnZU5vcm1hbCAnICtcbiAgICAgICdwb2x5QXZlcmFnZVZlcnRleCBwb2x5QmV2ZWwgcG9seUJsZW5kQ29sb3IgcG9seUJsaW5kRGF0YSBwb2x5Qm9vbE9wIHBvbHlCcmlkZ2VFZGdlICcgK1xuICAgICAgJ3BvbHlDYWNoZU1vbml0b3IgcG9seUNoZWNrIHBvbHlDaGlwT2ZmIHBvbHlDbGlwYm9hcmQgcG9seUNsb3NlQm9yZGVyIHBvbHlDb2xsYXBzZUVkZ2UgJyArXG4gICAgICAncG9seUNvbGxhcHNlRmFjZXQgcG9seUNvbG9yQmxpbmREYXRhIHBvbHlDb2xvckRlbCBwb2x5Q29sb3JQZXJWZXJ0ZXggcG9seUNvbG9yU2V0ICcgK1xuICAgICAgJ3BvbHlDb21wYXJlIHBvbHlDb25lIHBvbHlDb3B5VVYgcG9seUNyZWFzZSBwb2x5Q3JlYXNlQ3R4IHBvbHlDcmVhdGVGYWNldCAnICtcbiAgICAgICdwb2x5Q3JlYXRlRmFjZXRDdHggcG9seUN1YmUgcG9seUN1dCBwb2x5Q3V0Q3R4IHBvbHlDeWxpbmRlciBwb2x5Q3lsaW5kcmljYWxQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlEZWxFZGdlIHBvbHlEZWxGYWNldCBwb2x5RGVsVmVydGV4IHBvbHlEdXBsaWNhdGVBbmRDb25uZWN0IHBvbHlEdXBsaWNhdGVFZGdlICcgK1xuICAgICAgJ3BvbHlFZGl0VVYgcG9seUVkaXRVVlNoZWxsIHBvbHlFdmFsdWF0ZSBwb2x5RXh0cnVkZUVkZ2UgcG9seUV4dHJ1ZGVGYWNldCAnICtcbiAgICAgICdwb2x5RXh0cnVkZVZlcnRleCBwb2x5RmxpcEVkZ2UgcG9seUZsaXBVViBwb2x5Rm9yY2VVViBwb2x5R2VvU2FtcGxlciBwb2x5SGVsaXggJyArXG4gICAgICAncG9seUluZm8gcG9seUluc3RhbGxBY3Rpb24gcG9seUxheW91dFVWIHBvbHlMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBwb2x5TWFwQ3V0ICcgK1xuICAgICAgJ3BvbHlNYXBEZWwgcG9seU1hcFNldyBwb2x5TWFwU2V3TW92ZSBwb2x5TWVyZ2VFZGdlIHBvbHlNZXJnZUVkZ2VDdHggcG9seU1lcmdlRmFjZXQgJyArXG4gICAgICAncG9seU1lcmdlRmFjZXRDdHggcG9seU1lcmdlVVYgcG9seU1lcmdlVmVydGV4IHBvbHlNaXJyb3JGYWNlIHBvbHlNb3ZlRWRnZSAnICtcbiAgICAgICdwb2x5TW92ZUZhY2V0IHBvbHlNb3ZlRmFjZXRVViBwb2x5TW92ZVVWIHBvbHlNb3ZlVmVydGV4IHBvbHlOb3JtYWwgcG9seU5vcm1hbFBlclZlcnRleCAnICtcbiAgICAgICdwb2x5Tm9ybWFsaXplVVYgcG9seU9wdFV2cyBwb2x5T3B0aW9ucyBwb2x5T3V0cHV0IHBvbHlQaXBlIHBvbHlQbGFuYXJQcm9qZWN0aW9uICcgK1xuICAgICAgJ3BvbHlQbGFuZSBwb2x5UGxhdG9uaWNTb2xpZCBwb2x5UG9rZSBwb2x5UHJpbWl0aXZlIHBvbHlQcmlzbSBwb2x5UHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5UHlyYW1pZCBwb2x5UXVhZCBwb2x5UXVlcnlCbGluZERhdGEgcG9seVJlZHVjZSBwb2x5U2VsZWN0IHBvbHlTZWxlY3RDb25zdHJhaW50ICcgK1xuICAgICAgJ3BvbHlTZWxlY3RDb25zdHJhaW50TW9uaXRvciBwb2x5U2VsZWN0Q3R4IHBvbHlTZWxlY3RFZGl0Q3R4IHBvbHlTZXBhcmF0ZSAnICtcbiAgICAgICdwb2x5U2V0VG9GYWNlTm9ybWFsIHBvbHlTZXdFZGdlIHBvbHlTaG9ydGVzdFBhdGhDdHggcG9seVNtb290aCBwb2x5U29mdEVkZ2UgJyArXG4gICAgICAncG9seVNwaGVyZSBwb2x5U3BoZXJpY2FsUHJvamVjdGlvbiBwb2x5U3BsaXQgcG9seVNwbGl0Q3R4IHBvbHlTcGxpdEVkZ2UgcG9seVNwbGl0UmluZyAnICtcbiAgICAgICdwb2x5U3BsaXRWZXJ0ZXggcG9seVN0cmFpZ2h0ZW5VVkJvcmRlciBwb2x5U3ViZGl2aWRlRWRnZSBwb2x5U3ViZGl2aWRlRmFjZXQgJyArXG4gICAgICAncG9seVRvU3ViZGl2IHBvbHlUb3J1cyBwb2x5VHJhbnNmZXIgcG9seVRyaWFuZ3VsYXRlIHBvbHlVVlNldCBwb2x5VW5pdGUgcG9seVdlZGdlRmFjZSAnICtcbiAgICAgICdwb3BlbiBwb3B1cE1lbnUgcG9zZSBwb3cgcHJlbG9hZFJlZkVkIHByaW50IHByb2dyZXNzQmFyIHByb2dyZXNzV2luZG93IHByb2pGaWxlVmlld2VyICcgK1xuICAgICAgJ3Byb2plY3RDdXJ2ZSBwcm9qZWN0VGFuZ2VudCBwcm9qZWN0aW9uQ29udGV4dCBwcm9qZWN0aW9uTWFuaXAgcHJvbXB0RGlhbG9nIHByb3BNb2RDdHggJyArXG4gICAgICAncHJvcE1vdmUgcHNkQ2hhbm5lbE91dGxpbmVyIHBzZEVkaXRUZXh0dXJlRmlsZSBwc2RFeHBvcnQgcHNkVGV4dHVyZUZpbGUgcHV0ZW52IHB3ZCAnICtcbiAgICAgICdweXRob24gcXVlcnlTdWJkaXYgcXVpdCByYWRfdG9fZGVnIHJhZGlhbCByYWRpb0J1dHRvbiByYWRpb0J1dHRvbkdycCByYWRpb0NvbGxlY3Rpb24gJyArXG4gICAgICAncmFkaW9NZW51SXRlbUNvbGxlY3Rpb24gcmFtcENvbG9yUG9ydCByYW5kIHJhbmRvbWl6ZUZvbGxpY2xlcyByYW5kc3RhdGUgcmFuZ2VDb250cm9sICcgK1xuICAgICAgJ3JlYWRUYWtlIHJlYnVpbGRDdXJ2ZSByZWJ1aWxkU3VyZmFjZSByZWNvcmRBdHRyIHJlY29yZERldmljZSByZWRvIHJlZmVyZW5jZSAnICtcbiAgICAgICdyZWZlcmVuY2VFZGl0IHJlZmVyZW5jZVF1ZXJ5IHJlZmluZVN1YmRpdlNlbGVjdGlvbkxpc3QgcmVmcmVzaCByZWZyZXNoQUUgJyArXG4gICAgICAncmVnaXN0ZXJQbHVnaW5SZXNvdXJjZSByZWhhc2ggcmVsb2FkSW1hZ2UgcmVtb3ZlSm9pbnQgcmVtb3ZlTXVsdGlJbnN0YW5jZSAnICtcbiAgICAgICdyZW1vdmVQYW5lbENhdGVnb3J5IHJlbmFtZSByZW5hbWVBdHRyIHJlbmFtZVNlbGVjdGlvbkxpc3QgcmVuYW1lVUkgcmVuZGVyICcgK1xuICAgICAgJ3JlbmRlckdsb2JhbHNOb2RlIHJlbmRlckluZm8gcmVuZGVyTGF5ZXJCdXR0b24gcmVuZGVyTGF5ZXJQYXJlbnQgJyArXG4gICAgICAncmVuZGVyTGF5ZXJQb3N0UHJvY2VzcyByZW5kZXJMYXllclVucGFyZW50IHJlbmRlck1hbmlwIHJlbmRlclBhcnRpdGlvbiAnICtcbiAgICAgICdyZW5kZXJRdWFsaXR5Tm9kZSByZW5kZXJTZXR0aW5ncyByZW5kZXJUaHVtYm5haWxVcGRhdGUgcmVuZGVyV2luZG93RWRpdG9yICcgK1xuICAgICAgJ3JlbmRlcldpbmRvd1NlbGVjdENvbnRleHQgcmVuZGVyZXIgcmVvcmRlciByZW9yZGVyRGVmb3JtZXJzIHJlcXVpcmVzIHJlcm9vdCAnICtcbiAgICAgICdyZXNhbXBsZUZsdWlkIHJlc2V0QUUgcmVzZXRQZnhUb1BvbHlDYW1lcmEgcmVzZXRUb29sIHJlc29sdXRpb25Ob2RlIHJldGFyZ2V0ICcgK1xuICAgICAgJ3JldmVyc2VDdXJ2ZSByZXZlcnNlU3VyZmFjZSByZXZvbHZlIHJnYl90b19oc3YgcmlnaWRCb2R5IHJpZ2lkU29sdmVyIHJvbGwgcm9sbEN0eCAnICtcbiAgICAgICdyb290T2Ygcm90IHJvdGF0ZSByb3RhdGlvbkludGVycG9sYXRpb24gcm91bmRDb25zdGFudFJhZGl1cyByb3dDb2x1bW5MYXlvdXQgcm93TGF5b3V0ICcgK1xuICAgICAgJ3J1blRpbWVDb21tYW5kIHJ1bnVwIHNhbXBsZUltYWdlIHNhdmVBbGxTaGVsdmVzIHNhdmVBdHRyUHJlc2V0IHNhdmVGbHVpZCBzYXZlSW1hZ2UgJyArXG4gICAgICAnc2F2ZUluaXRpYWxTdGF0ZSBzYXZlTWVudSBzYXZlUHJlZk9iamVjdHMgc2F2ZVByZWZzIHNhdmVTaGVsZiBzYXZlVG9vbFNldHRpbmdzIHNjYWxlICcgK1xuICAgICAgJ3NjYWxlQnJ1c2hCcmlnaHRuZXNzIHNjYWxlQ29tcG9uZW50cyBzY2FsZUNvbnN0cmFpbnQgc2NhbGVLZXkgc2NhbGVLZXlDdHggc2NlbmVFZGl0b3IgJyArXG4gICAgICAnc2NlbmVVSVJlcGxhY2VtZW50IHNjbWggc2NyaXB0Q3R4IHNjcmlwdEVkaXRvckluZm8gc2NyaXB0Sm9iIHNjcmlwdE5vZGUgc2NyaXB0VGFibGUgJyArXG4gICAgICAnc2NyaXB0VG9TaGVsZiBzY3JpcHRlZFBhbmVsIHNjcmlwdGVkUGFuZWxUeXBlIHNjcm9sbEZpZWxkIHNjcm9sbExheW91dCBzY3VscHQgJyArXG4gICAgICAnc2VhcmNoUGF0aEFycmF5IHNlZWQgc2VsTG9hZFNldHRpbmdzIHNlbGVjdCBzZWxlY3RDb250ZXh0IHNlbGVjdEN1cnZlQ1Ygc2VsZWN0S2V5ICcgK1xuICAgICAgJ3NlbGVjdEtleUN0eCBzZWxlY3RLZXlmcmFtZVJlZ2lvbkN0eCBzZWxlY3RNb2RlIHNlbGVjdFByZWYgc2VsZWN0UHJpb3JpdHkgc2VsZWN0VHlwZSAnICtcbiAgICAgICdzZWxlY3RlZE5vZGVzIHNlbGVjdGlvbkNvbm5lY3Rpb24gc2VwYXJhdG9yIHNldEF0dHIgc2V0QXR0ckVudW1SZXNvdXJjZSAnICtcbiAgICAgICdzZXRBdHRyTWFwcGluZyBzZXRBdHRyTmljZU5hbWVSZXNvdXJjZSBzZXRDb25zdHJhaW50UmVzdFBvc2l0aW9uICcgK1xuICAgICAgJ3NldERlZmF1bHRTaGFkaW5nR3JvdXAgc2V0RHJpdmVuS2V5ZnJhbWUgc2V0RHluYW1pYyBzZXRFZGl0Q3R4IHNldEVkaXRvciBzZXRGbHVpZEF0dHIgJyArXG4gICAgICAnc2V0Rm9jdXMgc2V0SW5maW5pdHkgc2V0SW5wdXREZXZpY2VNYXBwaW5nIHNldEtleUN0eCBzZXRLZXlQYXRoIHNldEtleWZyYW1lICcgK1xuICAgICAgJ3NldEtleWZyYW1lQmxlbmRzaGFwZVRhcmdldFd0cyBzZXRNZW51TW9kZSBzZXROb2RlTmljZU5hbWVSZXNvdXJjZSBzZXROb2RlVHlwZUZsYWcgJyArXG4gICAgICAnc2V0UGFyZW50IHNldFBhcnRpY2xlQXR0ciBzZXRQZnhUb1BvbHlDYW1lcmEgc2V0UGx1Z2luUmVzb3VyY2Ugc2V0UHJvamVjdCAnICtcbiAgICAgICdzZXRTdGFtcERlbnNpdHkgc2V0U3RhcnR1cE1lc3NhZ2Ugc2V0U3RhdGUgc2V0VG9vbFRvIHNldFVJVGVtcGxhdGUgc2V0WGZvcm1NYW5pcCBzZXRzICcgK1xuICAgICAgJ3NoYWRpbmdDb25uZWN0aW9uIHNoYWRpbmdHZW9tZXRyeVJlbEN0eCBzaGFkaW5nTGlnaHRSZWxDdHggc2hhZGluZ05ldHdvcmtDb21wYXJlICcgK1xuICAgICAgJ3NoYWRpbmdOb2RlIHNoYXBlQ29tcGFyZSBzaGVsZkJ1dHRvbiBzaGVsZkxheW91dCBzaGVsZlRhYkxheW91dCBzaGVsbEZpZWxkICcgK1xuICAgICAgJ3Nob3J0TmFtZU9mIHNob3dIZWxwIHNob3dIaWRkZW4gc2hvd01hbmlwQ3R4IHNob3dTZWxlY3Rpb25JblRpdGxlICcgK1xuICAgICAgJ3Nob3dTaGFkaW5nR3JvdXBBdHRyRWRpdG9yIHNob3dXaW5kb3cgc2lnbiBzaW1wbGlmeSBzaW4gc2luZ2xlUHJvZmlsZUJpcmFpbFN1cmZhY2UgJyArXG4gICAgICAnc2l6ZSBzaXplQnl0ZXMgc2tpbkNsdXN0ZXIgc2tpblBlcmNlbnQgc21vb3RoQ3VydmUgc21vb3RoVGFuZ2VudFN1cmZhY2Ugc21vb3Roc3RlcCAnICtcbiAgICAgICdzbmFwMnRvMiBzbmFwS2V5IHNuYXBNb2RlIHNuYXBUb2dldGhlckN0eCBzbmFwc2hvdCBzb2Z0IHNvZnRNb2Qgc29mdE1vZEN0eCBzb3J0IHNvdW5kICcgK1xuICAgICAgJ3NvdW5kQ29udHJvbCBzb3VyY2Ugc3BhY2VMb2NhdG9yIHNwaGVyZSBzcGhyYW5kIHNwb3RMaWdodCBzcG90TGlnaHRQcmV2aWV3UG9ydCAnICtcbiAgICAgICdzcHJlYWRTaGVldEVkaXRvciBzcHJpbmcgc3FydCBzcXVhcmVTdXJmYWNlIHNydENvbnRleHQgc3RhY2tUcmFjZSBzdGFydFN0cmluZyAnICtcbiAgICAgICdzdGFydHNXaXRoIHN0aXRjaEFuZEV4cGxvZGVTaGVsbCBzdGl0Y2hTdXJmYWNlIHN0aXRjaFN1cmZhY2VQb2ludHMgc3RyY21wICcgK1xuICAgICAgJ3N0cmluZ0FycmF5Q2F0ZW5hdGUgc3RyaW5nQXJyYXlDb250YWlucyBzdHJpbmdBcnJheUNvdW50IHN0cmluZ0FycmF5SW5zZXJ0QXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheUludGVyc2VjdG9yIHN0cmluZ0FycmF5UmVtb3ZlIHN0cmluZ0FycmF5UmVtb3ZlQXRJbmRleCAnICtcbiAgICAgICdzdHJpbmdBcnJheVJlbW92ZUR1cGxpY2F0ZXMgc3RyaW5nQXJyYXlSZW1vdmVFeGFjdCBzdHJpbmdBcnJheVRvU3RyaW5nICcgK1xuICAgICAgJ3N0cmluZ1RvU3RyaW5nQXJyYXkgc3RyaXAgc3RyaXBQcmVmaXhGcm9tTmFtZSBzdHJva2Ugc3ViZEF1dG9Qcm9qZWN0aW9uICcgK1xuICAgICAgJ3N1YmRDbGVhblRvcG9sb2d5IHN1YmRDb2xsYXBzZSBzdWJkRHVwbGljYXRlQW5kQ29ubmVjdCBzdWJkRWRpdFVWICcgK1xuICAgICAgJ3N1YmRMaXN0Q29tcG9uZW50Q29udmVyc2lvbiBzdWJkTWFwQ3V0IHN1YmRNYXBTZXdNb3ZlIHN1YmRNYXRjaFRvcG9sb2d5IHN1YmRNaXJyb3IgJyArXG4gICAgICAnc3ViZFRvQmxpbmQgc3ViZFRvUG9seSBzdWJkVHJhbnNmZXJVVnNUb0NhY2hlIHN1YmRpdiBzdWJkaXZDcmVhc2UgJyArXG4gICAgICAnc3ViZGl2RGlzcGxheVNtb290aG5lc3Mgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlQWxsU3RyaW5nIHN1YnN0aXR1dGVHZW9tZXRyeSBzdWJzdHJpbmcgJyArXG4gICAgICAnc3VyZmFjZSBzdXJmYWNlU2FtcGxlciBzdXJmYWNlU2hhZGVyTGlzdCBzd2F0Y2hEaXNwbGF5UG9ydCBzd2l0Y2hUYWJsZSBzeW1ib2xCdXR0b24gJyArXG4gICAgICAnc3ltYm9sQ2hlY2tCb3ggc3lzRmlsZSBzeXN0ZW0gdGFiTGF5b3V0IHRhbiB0YW5nZW50Q29uc3RyYWludCB0ZXhMYXR0aWNlRGVmb3JtQ29udGV4dCAnICtcbiAgICAgICd0ZXhNYW5pcENvbnRleHQgdGV4TW92ZUNvbnRleHQgdGV4TW92ZVVWU2hlbGxDb250ZXh0IHRleFJvdGF0ZUNvbnRleHQgdGV4U2NhbGVDb250ZXh0ICcgK1xuICAgICAgJ3RleFNlbGVjdENvbnRleHQgdGV4U2VsZWN0U2hvcnRlc3RQYXRoQ3R4IHRleFNtdWRnZVVWQ29udGV4dCB0ZXhXaW5Ub29sQ3R4IHRleHQgJyArXG4gICAgICAndGV4dEN1cnZlcyB0ZXh0RmllbGQgdGV4dEZpZWxkQnV0dG9uR3JwIHRleHRGaWVsZEdycCB0ZXh0TWFuaXAgdGV4dFNjcm9sbExpc3QgJyArXG4gICAgICAndGV4dFRvU2hlbGYgdGV4dHVyZURpc3BsYWNlUGxhbmUgdGV4dHVyZUhhaXJDb2xvciB0ZXh0dXJlUGxhY2VtZW50Q29udGV4dCAnICtcbiAgICAgICd0ZXh0dXJlV2luZG93IHRocmVhZENvdW50IHRocmVlUG9pbnRBcmNDdHggdGltZUNvbnRyb2wgdGltZVBvcnQgdGltZXJYIHRvTmF0aXZlUGF0aCAnICtcbiAgICAgICd0b2dnbGUgdG9nZ2xlQXhpcyB0b2dnbGVXaW5kb3dWaXNpYmlsaXR5IHRva2VuaXplIHRva2VuaXplTGlzdCB0b2xlcmFuY2UgdG9sb3dlciAnICtcbiAgICAgICd0b29sQnV0dG9uIHRvb2xDb2xsZWN0aW9uIHRvb2xEcm9wcGVkIHRvb2xIYXNPcHRpb25zIHRvb2xQcm9wZXJ0eVdpbmRvdyB0b3J1cyB0b3VwcGVyICcgK1xuICAgICAgJ3RyYWNlIHRyYWNrIHRyYWNrQ3R4IHRyYW5zZmVyQXR0cmlidXRlcyB0cmFuc2Zvcm1Db21wYXJlIHRyYW5zZm9ybUxpbWl0cyB0cmFuc2xhdG9yICcgK1xuICAgICAgJ3RyaW0gdHJ1bmMgdHJ1bmNhdGVGbHVpZENhY2hlIHRydW5jYXRlSGFpckNhY2hlIHR1bWJsZSB0dW1ibGVDdHggdHVyYnVsZW5jZSAnICtcbiAgICAgICd0d29Qb2ludEFyY0N0eCB1aVJlcyB1aVRlbXBsYXRlIHVuYXNzaWduSW5wdXREZXZpY2UgdW5kbyB1bmRvSW5mbyB1bmdyb3VwIHVuaWZvcm0gdW5pdCAnICtcbiAgICAgICd1bmxvYWRQbHVnaW4gdW50YW5nbGVVViB1bnRpdGxlZEZpbGVOYW1lIHVudHJpbSB1cEF4aXMgdXBkYXRlQUUgdXNlckN0eCB1dkxpbmsgJyArXG4gICAgICAndXZTbmFwc2hvdCB2YWxpZGF0ZVNoZWxmTmFtZSB2ZWN0b3JpemUgdmlldzJkVG9vbEN0eCB2aWV3Q2FtZXJhIHZpZXdDbGlwUGxhbmUgJyArXG4gICAgICAndmlld0ZpdCB2aWV3SGVhZE9uIHZpZXdMb29rQXQgdmlld01hbmlwIHZpZXdQbGFjZSB2aWV3U2V0IHZpc29yIHZvbHVtZUF4aXMgdm9ydGV4ICcgK1xuICAgICAgJ3dhaXRDdXJzb3Igd2FybmluZyB3ZWJCcm93c2VyIHdlYkJyb3dzZXJQcmVmcyB3aGF0SXMgd2luZG93IHdpbmRvd1ByZWYgd2lyZSAnICtcbiAgICAgICd3aXJlQ29udGV4dCB3b3Jrc3BhY2Ugd3JpbmtsZSB3cmlua2xlQ29udGV4dCB3cml0ZVRha2UgeGJtTGFuZ1BhdGhMaXN0IHhmb3JtJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAgeyAvLyBlYXRzIHZhcmlhYmxlc1xuICAgICAgICBiZWdpbjogJ1tcXFxcJFxcXFwlXFxcXEBdKFxcXFxeXFxcXHdcXFxcYnwjXFxcXHcrfFteXFxcXHNcXFxcd3tdfHtcXFxcdyt9fFxcXFx3KyknXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ21vZHVsZSB1c2VfbW9kdWxlIGltcG9ydF9tb2R1bGUgaW5jbHVkZV9tb2R1bGUgZW5kX21vZHVsZSBpbml0aWFsaXNlICcgK1xuICAgICAgJ211dGFibGUgaW5pdGlhbGl6ZSBmaW5hbGl6ZSBmaW5hbGlzZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gcHJlZCAnICtcbiAgICAgICdtb2RlIGZ1bmMgdHlwZSBpbnN0IHNvbHZlciBhbnlfcHJlZCBhbnlfZnVuYyBpcyBzZW1pZGV0IGRldCBub25kZXQgJyArXG4gICAgICAnbXVsdGkgZXJyb25lb3VzIGZhaWx1cmUgY2Nfbm9uZGV0IGNjX211bHRpIHR5cGVjbGFzcyBpbnN0YW5jZSB3aGVyZSAnICtcbiAgICAgICdwcmFnbWEgcHJvbWlzZSBleHRlcm5hbCB0cmFjZSBhdG9taWMgb3JfZWxzZSByZXF1aXJlX2NvbXBsZXRlX3N3aXRjaCAnICtcbiAgICAgICdyZXF1aXJlX2RldCByZXF1aXJlX3NlbWlkZXQgcmVxdWlyZV9tdWx0aSByZXF1aXJlX25vbmRldCAnICtcbiAgICAgICdyZXF1aXJlX2NjX211bHRpIHJlcXVpcmVfY2Nfbm9uZGV0IHJlcXVpcmVfZXJyb25lb3VzIHJlcXVpcmVfZmFpbHVyZScsXG4gICAgbWV0YTpcbiAgICAgIC8vIHByYWdtYVxuICAgICAgJ2lubGluZSBub19pbmxpbmUgdHlwZV9zcGVjIHNvdXJjZV9maWxlIGZhY3RfdGFibGUgb2Jzb2xldGUgbWVtbyAnICtcbiAgICAgICdsb29wX2NoZWNrIG1pbmltYWxfbW9kZWwgdGVybWluYXRlcyBkb2VzX25vdF90ZXJtaW5hdGUgJyArXG4gICAgICAnY2hlY2tfdGVybWluYXRpb24gcHJvbWlzZV9lcXVpdmFsZW50X2NsYXVzZXMgJyArXG4gICAgICAvLyBwcmVwcm9jZXNzb3JcbiAgICAgICdmb3JlaWduX3Byb2MgZm9yZWlnbl9kZWNsIGZvcmVpZ25fY29kZSBmb3JlaWduX3R5cGUgJyArXG4gICAgICAnZm9yZWlnbl9pbXBvcnRfbW9kdWxlIGZvcmVpZ25fZXhwb3J0X2VudW0gZm9yZWlnbl9leHBvcnQgJyArXG4gICAgICAnZm9yZWlnbl9lbnVtIG1heV9jYWxsX21lcmN1cnkgd2lsbF9ub3RfY2FsbF9tZXJjdXJ5IHRocmVhZF9zYWZlICcgK1xuICAgICAgJ25vdF90aHJlYWRfc2FmZSBtYXliZV90aHJlYWRfc2FmZSBwcm9taXNlX3B1cmUgcHJvbWlzZV9zZW1pcHVyZSAnICtcbiAgICAgICd0YWJsZWRfZm9yX2lvIGxvY2FsIHVudHJhaWxlZCB0cmFpbGVkIGF0dGFjaF90b19pb19zdGF0ZSAnICtcbiAgICAgICdjYW5fcGFzc19hc19tZXJjdXJ5X3R5cGUgc3RhYmxlIHdpbGxfbm90X3Rocm93X2V4Y2VwdGlvbiAnICtcbiAgICAgICdtYXlfbW9kaWZ5X3RyYWlsIHdpbGxfbm90X21vZGlmeV90cmFpbCBtYXlfZHVwbGljYXRlICcgK1xuICAgICAgJ21heV9ub3RfZHVwbGljYXRlIGFmZmVjdHNfbGl2ZW5lc3MgZG9lc19ub3RfYWZmZWN0X2xpdmVuZXNzICcgK1xuICAgICAgJ2RvZXNudF9hZmZlY3RfbGl2ZW5lc3Mgbm9fc2hhcmluZyB1bmtub3duX3NoYXJpbmcgc2hhcmluZycsXG4gICAgYnVpbHRfaW46XG4gICAgICAnc29tZSBhbGwgbm90IGlmIHRoZW4gZWxzZSB0cnVlIGZhaWwgZmFsc2UgdHJ5IGNhdGNoIGNhdGNoX2FueSAnICtcbiAgICAgICdzZW1pZGV0X3RydWUgc2VtaWRldF9mYWxzZSBzZW1pZGV0X2ZhaWwgaW1wdXJlX3RydWUgaW1wdXJlIHNlbWlwdXJlJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCclJywgJyQnKTtcblxuICB2YXIgTlVNQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBcIjAnLlxcXFx8MFtib3hdWzAtOWEtZkEtRl0qXCJcbiAgfTtcblxuICB2YXIgQVRPTSA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtyZWxldmFuY2U6IDB9KTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7cmVsZXZhbmNlOiAwfSk7XG4gIHZhciBTVFJJTkdfRk1UID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFxcXFxcW2FiZm5ydHZdXFxcXHxcXFxcXFxcXHhbMC05YS1mQS1GXSpcXFxcXFxcXFxcXFx8JVstKyMgKi4wLTldKltkaW94WHVjc2ZlRWdHcF0nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBTVFJJTkcuY29udGFpbnMucHVzaChTVFJJTkdfRk1UKTtcblxuICB2YXIgSU1QTElDQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICc8PT4nfSxcbiAgICAgIHtiZWdpbjogJzw9JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJz0+JywgcmVsZXZhbmNlOiAwfSxcbiAgICAgIHtiZWdpbjogJy9cXFxcXFxcXCd9LFxuICAgICAge2JlZ2luOiAnXFxcXFxcXFwvJ31cbiAgICBdXG4gIH07XG5cbiAgdmFyIEhFQURfQk9EWV9DT05KVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJzotXFxcXHwtLT4nfSxcbiAgICAgIHtiZWdpbjogJz0nLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtJywgJ21vbyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgSU1QTElDQVRJT04sXG4gICAgICBIRUFEX0JPRFlfQ09OSlVOQ1RJT04sXG4gICAgICBDT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUNPREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQVRPTSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtiZWdpbjogLzotL30sIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIC8vbG9jYWwgbGFiZWxzOiAlP1tGQl0/W0FUXT9cXGR7MSwyfVxcdytcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsnbWlwcyddLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbWV0YTpcbiAgICAgICAgLy9HTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmx0b3JnICcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJyQwICQxICQyICQzICQ0ICQ1ICQ2ICQ3ICQ4ICQ5ICQxMCAkMTEgJDEyICQxMyAkMTQgJDE1ICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnJDE2ICQxNyAkMTggJDE5ICQyMCAkMjEgJDIyICQyMyAkMjQgJDI1ICQyNiAkMjcgJDI4ICQyOSAkMzAgJDMxICcgKyAvLyBpbnRlZ2VyIHJlZ2lzdGVyc1xuICAgICAgICAnemVybyBhdCB2MCB2MSBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICd0MCB0MSB0MiB0MyB0NCB0NSB0NiB0NyB0OCB0OSBzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICdrMCBrMSBncCBzcCBmcCByYSAnICsgLy8gaW50ZWdlciByZWdpc3RlciBhbGlhc2VzXG4gICAgICAgICckZjAgJGYxICRmMiAkZjIgJGY0ICRmNSAkZjYgJGY3ICRmOCAkZjkgJGYxMCAkZjExICRmMTIgJGYxMyAkZjE0ICRmMTUgJyArIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICAnJGYxNiAkZjE3ICRmMTggJGYxOSAkZjIwICRmMjEgJGYyMiAkZjIzICRmMjQgJGYyNSAkZjI2ICRmMjcgJGYyOCAkZjI5ICRmMzAgJGYzMSAnICsgLy8gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzXG4gICAgICAgICdDb250ZXh0IFJhbmRvbSBFbnRyeUxvMCBFbnRyeUxvMSBDb250ZXh0IFBhZ2VNYXNrIFdpcmVkIEVudHJ5SGkgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdIV1JFbmEgQmFkVkFkZHIgQ291bnQgQ29tcGFyZSBTUiBJbnRDdGwgU1JTQ3RsIFNSU01hcCBDYXVzZSBFUEMgUFJJZCAnICsgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICAgICAgJ0VCYXNlIENvbmZpZyBDb25maWcxIENvbmZpZzIgQ29uZmlnMyBMTEFkZHIgRGVidWcgREVQQyBERVNBVkUgQ2FjaGVFcnIgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdFQ0MgRXJyb3JFUEMgVGFnTG8gRGF0YUxvIFRhZ0hpIERhdGFIaSBXYXRjaExvIFdhdGNoSGkgUGVyZkN0bCBQZXJmQ250ICcgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcrICAgICAvL21uZW1vbmljc1xuICAgICAgICAgICAgLy8gMzItYml0IGludGVnZXIgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWRkaT91P3xhbmRpP3xiKGFsKT98YmVxbD98YmdleihhbCk/bD98Ymd0emw/fGJsZXpsP3xibHR6KGFsKT9sP3wnICtcbiAgICAgICAgICAgICdibmVsP3xjbFtvel18ZGl2dT98ZXh0fGluc3xqKGFsKT98amFscihcXC5oYik/fGpyKFxcLmhiKT98bGJ1P3xsaHU/fCcgK1xuICAgICAgICAgICAgJ2xsfGx1aXxsd1tscl0/fG1hZGR1P3xtZmhpfG1mbG98bW92bnxtb3Z6fG1vdmV8bXN1YnU/fG10aGl8bXRsb3xtdWx8JyArXG4gICAgICAgICAgICAnbXVsdHU/fG5vcHxub3J8b3JpP3xyb3Rydj98c2J8c2N8c2VbYmhdfHNofHNsbHY/fHNsdGk/dT98c3Jhdj98JyArXG4gICAgICAgICAgICAnc3Jsdj98c3VidT98c3dbbHJdP3x4b3JpP3x3c2JofCcgK1xuICAgICAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYWJzXFwuW3NkXXxhZGRcXC5bc2RdfGFsbnYucHN8YmMxW2Z0XWw/fCcgK1xuICAgICAgICAgICAgJ2NcXC4ocz9mfHVufHU/ZXF8W291XWx0fFtvdV1sZXxuZ2xlP3xzZXF8bFtldF18bmdbZXRdKVxcLltzZF18JyArXG4gICAgICAgICAgICAnKGNlaWx8Zmxvb3J8cm91bmR8dHJ1bmMpXFwuW2x3XVxcLltzZF18Y2ZjMXxjdnRcXC5kXFwuW2xzd118JyArXG4gICAgICAgICAgICAnY3Z0XFwubFxcLltkc3ddfGN2dFxcLnBzXFwuc3xjdnRcXC5zXFwuW2Rsd118Y3Z0XFwuc1xcLnBbbHVdfGN2dFxcLndcXC5bZGxzXXwnICtcbiAgICAgICAgICAgICdkaXZcXC5bZHNdfGxkeD9jMXxsdXhjMXxsd3g/YzF8bWFkZFxcLltzZF18bWZjMXxtb3ZbZm50el0/XFwuW2RzXXwnICtcbiAgICAgICAgICAgICdtc3ViXFwuW3NkXXxtdGg/YzF8bXVsXFwuW2RzXXxuZWdcXC5bZHNdfG5tYWRkXFwuW2RzXXxubXN1YlxcLltkc118JyArXG4gICAgICAgICAgICAncFtsdV1bbHVdXFwucHN8cmVjaXBcXC5mbXR8cj9zcXJ0XFwuW2RzXXxzZHg/YzF8c3ViXFwuW2RzXXxzdXhjMXwnICtcbiAgICAgICAgICAgICdzd3g/YzF8JyArXG4gICAgICAgICAgICAvLyBzeXN0ZW0gY29udHJvbCBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICdicmVha3xjYWNoZXxkP2VyZXR8W2RlXWl8ZWhifG1mYzB8bXRjMHxwYXVzZXxwcmVmeD98cmRod3J8JyArXG4gICAgICAgICAgICAncmRwZ3ByfHNkYmJwfHNzbm9wfHN5bmNpP3xzeXNjYWxsfHRlcWk/fHRnZWk/dT98dGxiKHB8cnx3W2lyXSl8JyArXG4gICAgICAgICAgICAndGx0aT91P3x0bmVpP3x3YWl0fHdycGdwcicrXG4gICAgICAgICcpJyxcbiAgICAgICAgZW5kOiAnXFxcXHMnXG4gICAgICB9LFxuICAgICAgLy8gbGluZXMgZW5kaW5nIHdpdGggOyBvciAjIGFyZW4ndCByZWFsbHkgY29tbWVudHMsIHByb2JhYmx5IGF1dG8tZGV0ZWN0IGZhaWxcbiAgICAgIGhsanMuQ09NTUVOVCgnWzsjXSg/IVxccyokKScsICckJyksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7YmVnaW46ICcweFswLTlhLWZdKyd9LCAvL2hleFxuICAgICAgICAgICAge2JlZ2luOiAnXFxcXGItP1xcXFxkKyd9ICAgICAgICAgICAvL2JhcmUgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ15cXFxccypbYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSs6J30sIC8vR05VIE1JUFMgc3ludGF4XG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqWzAtOV0rOid9LCAvLyBudW1iZXJlZCBsb2NhbCBsYWJlbHNcbiAgICAgICAgICAgIHtiZWdpbjogJ1swLTldK1tiZl0nIH0gIC8vIG51bWJlciBsb2NhbCBsYWJlbCByZWZlcmVuY2UgKGJhY2t3YXJkcywgZm9yd2FyZHMpXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1xcLydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6XG4gICAgICAnZW52aXJvbiB2b2NhYnVsYXJpZXMgbm90YXRpb25zIGNvbnN0cnVjdG9ycyBkZWZpbml0aW9ucyAnICtcbiAgICAgICdyZWdpc3RyYXRpb25zIHRoZW9yZW1zIHNjaGVtZXMgcmVxdWlyZW1lbnRzIGJlZ2luIGVuZCBkZWZpbml0aW9uICcgK1xuICAgICAgJ3JlZ2lzdHJhdGlvbiBjbHVzdGVyIGV4aXN0ZW5jZSBwcmVkIGZ1bmMgZGVmcHJlZCBkZWZmdW5jIHRoZW9yZW0gJyArXG4gICAgICAncHJvb2YgbGV0IHRha2UgYXNzdW1lIHRoZW4gdGh1cyBoZW5jZSBleCBmb3Igc3QgaG9sZHMgY29uc2lkZXIgJyArXG4gICAgICAncmVjb25zaWRlciBzdWNoIHRoYXQgYW5kIGluIHByb3ZpZGVkIG9mIGFzIGZyb20gYmUgYmVpbmcgYnkgbWVhbnMgJyArXG4gICAgICAnZXF1YWxzIGltcGxpZXMgaWZmIHJlZGVmaW5lIGRlZmluZSBub3cgbm90IG9yIGF0dHIgaXMgbW9kZSAnICtcbiAgICAgICdzdXBwb3NlIHBlciBjYXNlcyBzZXQgdGhlc2lzIGNvbnRyYWRpY3Rpb24gc2NoZW1lIHJlc2VydmUgc3RydWN0ICcgK1xuICAgICAgJ2NvcnJlY3RuZXNzIGNvbXBhdGliaWxpdHkgY29oZXJlbmNlIHN5bW1ldHJ5IGFzc3ltZXRyeSAnICtcbiAgICAgICdyZWZsZXhpdml0eSBpcnJlZmxleGl2aXR5IGNvbm5lY3RlZG5lc3MgdW5pcXVlbmVzcyBjb21tdXRhdGl2aXR5ICcgK1xuICAgICAgJ2lkZW1wb3RlbmNlIGludm9sdXRpdmVuZXNzIHByb2plY3Rpdml0eScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnOjonLCAnJCcpXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFBFUkxfS0VZV09SRFMgPSAnZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjICcgK1xuICAgICdtYSBzeXN3cml0ZSB0ciBzZW5kIHVtYXNrIHN5c29wZW4gc2htd3JpdGUgdmVjIHF4IHV0aW1lIGxvY2FsIG9jdCBzZW1jdGwgbG9jYWx0aW1lICcgK1xuICAgICdyZWFkcGlwZSBkbyByZXR1cm4gZm9ybWF0IHJlYWQgc3ByaW50ZiBkYm1vcGVuIHBvcCBnZXRwZ3JwIG5vdCBnZXRwd25hbSByZXdpbmRkaXIgcXEnICtcbiAgICAnZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50ICcgK1xuICAgICdzaHV0ZG93biBkdW1wIGNob21wIGNvbm5lY3QgZ2V0c29ja25hbWUgZGllIHNvY2tldHBhaXIgY2xvc2UgZmxvY2sgZXhpc3RzIGluZGV4IHNobWdldCcgK1xuICAgICdzdWIgZm9yIGVuZHB3ZW50IHJlZG8gbHN0YXQgbXNnY3RsIHNldHBncnAgYWJzIGV4aXQgc2VsZWN0IHByaW50IHJlZiBnZXRob3N0YnlhZGRyICcgK1xuICAgICd1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCAnICtcbiAgICAnZ2V0cGVlcm5hbWUgcmVjdiBsb2cgc2V0c29ja29wdCBjb3MgbGFzdCByZXZlcnNlIGdldGhvc3RieW5hbWUgZ2V0Z3JuYW0gc3R1ZHkgZm9ybWxpbmUgJyArXG4gICAgJ2VuZGhvc3RlbnQgdGltZXMgY2hvcCBsZW5ndGggZ2V0aG9zdGVudCBnZXRuZXRlbnQgcGFjayBnZXRwcm90b2VudCBnZXRzZXJ2YnluYW1lIHJhbmQgJyArXG4gICAgJ21rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgJyArXG4gICAgJ2dldHNvY2tvcHQgZ2V0cHJpb3JpdHkgcmluZGV4IHdhbnRhcnJheSBoZXggc3lzdGVtIGdldHNlcnZieXBvcnQgZW5kc2VydmVudCBpbnQgY2hyICcgK1xuICAgICd1bnRpZSBybWRpciBwcm90b3R5cGUgdGVsbCBsaXN0ZW4gZm9yayBzaG1yZWFkIHVjZmlyc3Qgc2V0cHJvdG9lbnQgZWxzZSBzeXNzZWVrIGxpbmsgJyArXG4gICAgJ2dldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciAnICtcbiAgICAnbGNmaXJzdCB1bnRpbCB3YXJuIHdoaWxlIHZhbHVlcyBzaGlmdCB0ZWxsZGlyIGdldHB3dWlkIG15IGdldHByb3RvYnludW1iZXIgZGVsZXRlIGFuZCAnICtcbiAgICAnc29ydCB1YyBkZWZpbmVkIHNyYW5kIGFjY2VwdCBwYWNrYWdlIHNlZWtkaXIgZ2V0cHJvdG9ieW5hbWUgc2Vtb3Agb3VyIHJlbmFtZSBzZWVrIGlmIHF8MCAnICtcbiAgICAnY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoICcgK1xuICAgICd0aWUgc2luIG1zZ2dldCBtYXAgc3RhdCBnZXRsb2dpbiB1bmxlc3MgZWxzaWYgdHJ1bmNhdGUgZXhlYyBrZXlzIGdsb2IgdGllZCBjbG9zZWRpcicgK1xuICAgICdpb2N0bCBzb2NrZXQgcmVhZGxpbmsgZXZhbCB4b3IgcmVhZGxpbmUgYmlubW9kZSBzZXRzZXJ2ZW50IGVvZiBvcmQgYmluZCBhbGFybSBwaXBlICcgK1xuICAgICdhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdbJEBdXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IFBFUkxfS0VZV09SRFNcbiAgfTtcbiAgdmFyIE1FVEhPRCA9IHtcbiAgICBiZWdpbjogJy0+eycsIGVuZDogJ30nXG4gICAgLy8gY29udGFpbnMgZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgVkFSID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRcXGQvfSxcbiAgICAgIHtiZWdpbjogL1tcXCQlQF0oXFxeXFx3XFxifCNcXHcrKDo6XFx3KykqfHtcXHcrfXxcXHcrKDo6XFx3KikqKS99LFxuICAgICAge2JlZ2luOiAvW1xcJCVAXVteXFxzXFx3e10vLCByZWxldmFuY2U6IDB9XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HX0NPTlRBSU5TID0gW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFZBUl07XG4gIHZhciBQRVJMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgVkFSLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJ15cXFxcPVxcXFx3JyxcbiAgICAgICdcXFxcPWN1dCcsXG4gICAgICB7XG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlXG4gICAgICB9XG4gICAgKSxcbiAgICBNRVRIT0QsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGNvbnRhaW5zOiBTVFJJTkdfQ09OVEFJTlMsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFx8JywgZW5kOiAnXFxcXHwnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFw8JywgZW5kOiAnXFxcXD4nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxd1xcXFxzK3EnLCBlbmQ6ICdxJyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICd7XFxcXHcrfScsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXC0/XFxcXHcrXFxcXHMqXFxcXD1cXFxcPicsXG4gICAgICAgICAgY29udGFpbnM6IFtdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHsgLy8gcmVnZXhwIGNvbnRhaW5lclxuICAgICAgYmVnaW46ICcoXFxcXC9cXFxcL3wnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXFxcYilcXFxccyonLFxuICAgICAga2V5d29yZHM6ICdzcGxpdCByZXR1cm4gcHJpbnQgcmV2ZXJzZSBncmVwJyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKHN8dHJ8eSkvKFxcXFxcXFxcLnxbXi9dKSovKFxcXFxcXFxcLnxbXi9dKSovW2Etel0qJyxcbiAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGJlZ2luOiAnKG18cXIpPy8nLCBlbmQ6ICcvW2Etel0qJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwIC8vIGFsbG93cyBlbXB0eSBcIi8vXCIgd2hpY2ggaXMgYSBjb21tb24gY29tbWVudCBkZWxpbWl0ZXIgaW4gb3RoZXIgbGFuZ3VhZ2VzXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWInLCBlbmQ6ICcoXFxcXHMqXFxcXCguKj9cXFxcKSk/Wzt7XScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDUsXG4gICAgICBjb250YWluczogW2hsanMuVElUTEVfTU9ERV1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLVxcXFx3XFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogXCJeX19EQVRBX18kXCIsXG4gICAgICBlbmQ6IFwiXl9fRU5EX18kXCIsXG4gICAgICBzdWJMYW5ndWFnZTogJ21vam9saWNpb3VzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBcIl5AQC4qXCIsXG4gICAgICAgICAgICBlbmQ6IFwiJFwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IFBFUkxfREVGQVVMVF9DT05UQUlOUztcbiAgTUVUSE9ELmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwbCcsICdwbSddLFxuICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgIGtleXdvcmRzOiBQRVJMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBQRVJMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15fXyhFTkR8REFUQSlfXyQnXG4gICAgICB9LFxuICAgIC8vIG1vam9saWNpb3VzIGxpbmVcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXlxcXFxzKiV7MSwyfT17MCwyfVwiLCBlbmQ6ICckJyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwZXJsJ1xuICAgICAgfSxcbiAgICAvLyBtb2pvbGljaW91cyBibG9ja1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCI8JXsxLDJ9PXswLDJ9XCIsXG4gICAgICAgIGVuZDogXCI9ezAsMX0lPlwiLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BlcmwnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1skXVthLWZBLUYwLTldKydcbiAgICAgIH0sXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ3B1YmxpYyBwcml2YXRlIHByb3BlcnR5IGNvbnRpbnVlIGV4aXQgZXh0ZXJuIG5ldyB0cnkgY2F0Y2ggJyArXG4gICAgICAgICdlYWNoaW4gbm90IGFic3RyYWN0IGZpbmFsIHNlbGVjdCBjYXNlIGRlZmF1bHQgY29uc3QgbG9jYWwgZ2xvYmFsIGZpZWxkICcgK1xuICAgICAgICAnZW5kIGlmIHRoZW4gZWxzZSBlbHNlaWYgZW5kaWYgd2hpbGUgd2VuZCByZXBlYXQgdW50aWwgZm9yZXZlciBmb3IgJyArXG4gICAgICAgICd0byBzdGVwIG5leHQgcmV0dXJuIG1vZHVsZSBpbmxpbmUgdGhyb3cgaW1wb3J0JyxcblxuICAgICAgYnVpbHRfaW46ICdEZWJ1Z0xvZyBEZWJ1Z1N0b3AgRXJyb3IgUHJpbnQgQUNvcyBBQ29zciBBU2luIEFTaW5yIEFUYW4gQVRhbjIgQVRhbjJyIEFUYW5yIEFicyBBYnMgQ2VpbCAnICtcbiAgICAgICAgJ0NsYW1wIENsYW1wIENvcyBDb3NyIEV4cCBGbG9vciBMb2cgTWF4IE1heCBNaW4gTWluIFBvdyBTZ24gU2duIFNpbiBTaW5yIFNxcnQgVGFuIFRhbnIgU2VlZCBQSSBIQUxGUEkgVFdPUEknLFxuXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsIGFuZCBvciBzaGwgc2hyIG1vZCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJyNyZW0nLCAnI2VuZCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICBcIidcIixcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIG1ldGhvZCcsIGVuZDogJ1soPTpdfCQnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKHNlbGZ8c3VwZXIpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxccyojJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmRpZiBlbmQgdGhlbid9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqc3RyaWN0XFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnYWxpYXMnLCBlbmQ6ICc9JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIE1vb25zY3JpcHQga2V5d29yZHNcbiAgICAgICdpZiB0aGVuIG5vdCBmb3IgaW4gd2hpbGUgZG8gcmV0dXJuIGVsc2UgZWxzZWlmIGJyZWFrIGNvbnRpbnVlIHN3aXRjaCBhbmQgb3IgJyArXG4gICAgICAndW5sZXNzIHdoZW4gY2xhc3MgZXh0ZW5kcyBzdXBlciBsb2NhbCBpbXBvcnQgZXhwb3J0IGZyb20gdXNpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ19HIF9WRVJTSU9OIGFzc2VydCBjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgJyArXG4gICAgICAnbG9hZGZpbGUgbG9hZHN0cmluZyBtb2R1bGUgbmV4dCBwYWlycyBwY2FsbCBwcmludCByYXdlcXVhbCByYXdnZXQgcmF3c2V0IHJlcXVpcmUgJyArXG4gICAgICAnc2VsZWN0IHNldGZlbnYgc2V0bWV0YXRhYmxlIHRvbnVtYmVyIHRvc3RyaW5nIHR5cGUgdW5wYWNrIHhwY2FsbCBjb3JvdXRpbmUgZGVidWcgJyArXG4gICAgICAnaW8gbWF0aCBvcyBwYWNrYWdlIHN0cmluZyB0YWJsZSdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jXFx7LywgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge3N0YXJ0czoge2VuZDogJyhcXFxccyovKT8nLCByZWxldmFuY2U6IDB9fSksIC8vIGEgbnVtYmVyIHRyaWVzIHRvIGVhdCB0aGUgZm9sbG93aW5nIHNsYXNoIHRvIHByZXZlbnQgdHJlYXRpbmcgaXQgYXMgYSByZWdleHBcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgIGJlZ2luOiAnQF9fJyArIGhsanMuSURFTlRfUkVcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBobGpzLklERU5UX1JFIC8vIHJlbGV2YW5jZSBib29zdGVyIG9uIHBhciB3aXRoIENvZmZlZVNjcmlwdFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXFxcXFwnICsgaGxqcy5JREVOVF9SRSAvLyBpbnN0XFxtZXRob2RcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgUEFSQU1TX1JFID0gJyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy09XT4nO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgLyogV2UgbmVlZCBhbm90aGVyIGNvbnRhaW5lZCBuYW1lbGVzcyBtb2RlIHRvIG5vdCBoYXZlIGV2ZXJ5IG5lc3RlZFxuICAgIHBhaXIgb2YgcGFyZW5zIHRvIGJlIGNhbGxlZCBcInBhcmFtc1wiICovXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgIH1dXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21vb24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLCAgLy8gZnVuY3Rpb246IC0+ID0+XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKicgKyBKU19JREVOVF9SRSArICdcXFxccyo9XFxcXHMqJyArIFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtUSVRMRSwgUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bXFwoLDo9XVxccyovLCAvLyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RhcnRcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtQQVJBTVNdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcycsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICAgICAgY29udGFpbnM6IFtUSVRMRV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFRJVExFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLCAgICAvLyB0YWJsZVxuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2J1aWxkIGNyZWF0ZSBpbmRleCBkZWxldGUgZHJvcCBleHBsYWluIGluZmVyfDEwIGluc2VydCBtZXJnZSBwcmVwYXJlIHNlbGVjdCB1cGRhdGUgdXBzZXJ0fDEwJyxcbiAgICAgICAgZW5kOiAvOy8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5jb3VjaGJhc2UuY29tL2RvY3VtZW50YXRpb24vc2VydmVyL2N1cnJlbnQvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9yZXNlcnZlZHdvcmRzLmh0bWxcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2FsbCBhbHRlciBhbmFseXplIGFuZCBhbnkgYXJyYXkgYXMgYXNjIGJlZ2luIGJldHdlZW4gYmluYXJ5IGJvb2xlYW4gYnJlYWsgYnVja2V0IGJ1aWxkIGJ5IGNhbGwgJyArXG4gICAgICAgICAgICAnY2FzZSBjYXN0IGNsdXN0ZXIgY29sbGF0ZSBjb2xsZWN0aW9uIGNvbW1pdCBjb25uZWN0IGNvbnRpbnVlIGNvcnJlbGF0ZSBjb3ZlciBjcmVhdGUgZGF0YWJhc2UgJyArXG4gICAgICAgICAgICAnZGF0YXNldCBkYXRhc3RvcmUgZGVjbGFyZSBkZWNyZW1lbnQgZGVsZXRlIGRlcml2ZWQgZGVzYyBkZXNjcmliZSBkaXN0aW5jdCBkbyBkcm9wIGVhY2ggZWxlbWVudCAnICtcbiAgICAgICAgICAgICdlbHNlIGVuZCBldmVyeSBleGNlcHQgZXhjbHVkZSBleGVjdXRlIGV4aXN0cyBleHBsYWluIGZldGNoIGZpcnN0IGZsYXR0ZW4gZm9yIGZvcmNlIGZyb20gJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gZ3JhbnQgZ3JvdXAgZ3NpIGhhdmluZyBpZiBpZ25vcmUgaWxpa2UgaW4gaW5jbHVkZSBpbmNyZW1lbnQgaW5kZXggaW5mZXIgaW5saW5lIGlubmVyICcgK1xuICAgICAgICAgICAgJ2luc2VydCBpbnRlcnNlY3QgaW50byBpcyBqb2luIGtleSBrZXlzIGtleXNwYWNlIGtub3duIGxhc3QgbGVmdCBsZXQgbGV0dGluZyBsaWtlIGxpbWl0IGxzbSBtYXAgJyArXG4gICAgICAgICAgICAnbWFwcGluZyBtYXRjaGVkIG1hdGVyaWFsaXplZCBtZXJnZSBtaW51cyBuYW1lc3BhY2UgbmVzdCBub3QgbnVtYmVyIG9iamVjdCBvZmZzZXQgb24gJyArXG4gICAgICAgICAgICAnb3B0aW9uIG9yIG9yZGVyIG91dGVyIG92ZXIgcGFyc2UgcGFydGl0aW9uIHBhc3N3b3JkIHBhdGggcG9vbCBwcmVwYXJlIHByaW1hcnkgcHJpdmF0ZSBwcml2aWxlZ2UgJyArXG4gICAgICAgICAgICAncHJvY2VkdXJlIHB1YmxpYyByYXcgcmVhbG0gcmVkdWNlIHJlbmFtZSByZXR1cm4gcmV0dXJuaW5nIHJldm9rZSByaWdodCByb2xlIHJvbGxiYWNrIHNhdGlzZmllcyAnICtcbiAgICAgICAgICAgICdzY2hlbWEgc2VsZWN0IHNlbGYgc2VtaSBzZXQgc2hvdyBzb21lIHN0YXJ0IHN0YXRpc3RpY3Mgc3RyaW5nIHN5c3RlbSB0aGVuIHRvIHRyYW5zYWN0aW9uIHRyaWdnZXIgJyArXG4gICAgICAgICAgICAndHJ1bmNhdGUgdW5kZXIgdW5pb24gdW5pcXVlIHVua25vd24gdW5uZXN0IHVuc2V0IHVwZGF0ZSB1cHNlcnQgdXNlIHVzZXIgdXNpbmcgdmFsaWRhdGUgdmFsdWUgJyArXG4gICAgICAgICAgICAndmFsdWVkIHZhbHVlcyB2aWEgdmlldyB3aGVuIHdoZXJlIHdoaWxlIHdpdGggd2l0aGluIHdvcmsgeG9yJyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9saXRlcmFscy5odG1sXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgbWlzc2luZ3w1JyxcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci80LjUvbjFxbC9uMXFsLWxhbmd1YWdlLXJlZmVyZW5jZS9mdW5jdGlvbnMuaHRtbFxuICAgICAgICAgIGJ1aWx0X2luOlxuICAgICAgICAgICAgJ2FycmF5X2FnZyBhcnJheV9hcHBlbmQgYXJyYXlfY29uY2F0IGFycmF5X2NvbnRhaW5zIGFycmF5X2NvdW50IGFycmF5X2Rpc3RpbmN0IGFycmF5X2lmbnVsbCBhcnJheV9sZW5ndGggJyArXG4gICAgICAgICAgICAnYXJyYXlfbWF4IGFycmF5X21pbiBhcnJheV9wb3NpdGlvbiBhcnJheV9wcmVwZW5kIGFycmF5X3B1dCBhcnJheV9yYW5nZSBhcnJheV9yZW1vdmUgYXJyYXlfcmVwZWF0IGFycmF5X3JlcGxhY2UgJyArXG4gICAgICAgICAgICAnYXJyYXlfcmV2ZXJzZSBhcnJheV9zb3J0IGFycmF5X3N1bSBhdmcgY291bnQgbWF4IG1pbiBzdW0gZ3JlYXRlc3QgbGVhc3QgaWZtaXNzaW5nIGlmbWlzc2luZ29ybnVsbCBpZm51bGwgJyArXG4gICAgICAgICAgICAnbWlzc2luZ2lmIG51bGxpZiBpZmluZiBpZm5hbiBpZm5hbm9yaW5mIG5hbmluZiBuZWdpbmZpZiBwb3NpbmZpZiBjbG9ja19taWxsaXMgY2xvY2tfc3RyIGRhdGVfYWRkX21pbGxpcyAnICtcbiAgICAgICAgICAgICdkYXRlX2FkZF9zdHIgZGF0ZV9kaWZmX21pbGxpcyBkYXRlX2RpZmZfc3RyIGRhdGVfcGFydF9taWxsaXMgZGF0ZV9wYXJ0X3N0ciBkYXRlX3RydW5jX21pbGxpcyBkYXRlX3RydW5jX3N0ciAnICtcbiAgICAgICAgICAgICdkdXJhdGlvbl90b19zdHIgbWlsbGlzIHN0cl90b19taWxsaXMgbWlsbGlzX3RvX3N0ciBtaWxsaXNfdG9fdXRjIG1pbGxpc190b196b25lX25hbWUgbm93X21pbGxpcyBub3dfc3RyICcgK1xuICAgICAgICAgICAgJ3N0cl90b19kdXJhdGlvbiBzdHJfdG9fdXRjIHN0cl90b196b25lX25hbWUgZGVjb2RlX2pzb24gZW5jb2RlX2pzb24gZW5jb2RlZF9zaXplIHBvbHlfbGVuZ3RoIGJhc2U2NCBiYXNlNjRfZW5jb2RlICcgK1xuICAgICAgICAgICAgJ2Jhc2U2NF9kZWNvZGUgbWV0YSB1dWlkIGFicyBhY29zIGFzaW4gYXRhbiBhdGFuMiBjZWlsIGNvcyBkZWdyZWVzIGUgZXhwIGxuIGxvZyBmbG9vciBwaSBwb3dlciByYWRpYW5zIHJhbmRvbSAnICtcbiAgICAgICAgICAgICdyb3VuZCBzaWduIHNpbiBzcXJ0IHRhbiB0cnVuYyBvYmplY3RfbGVuZ3RoIG9iamVjdF9uYW1lcyBvYmplY3RfcGFpcnMgb2JqZWN0X2lubmVyX3BhaXJzIG9iamVjdF92YWx1ZXMgJyArXG4gICAgICAgICAgICAnb2JqZWN0X2lubmVyX3ZhbHVlcyBvYmplY3RfYWRkIG9iamVjdF9wdXQgb2JqZWN0X3JlbW92ZSBvYmplY3RfdW53cmFwIHJlZ2V4cF9jb250YWlucyByZWdleHBfbGlrZSByZWdleHBfcG9zaXRpb24gJyArXG4gICAgICAgICAgICAncmVnZXhwX3JlcGxhY2UgY29udGFpbnMgaW5pdGNhcCBsZW5ndGggbG93ZXIgbHRyaW0gcG9zaXRpb24gcmVwZWF0IHJlcGxhY2UgcnRyaW0gc3BsaXQgc3Vic3RyIHRpdGxlIHRyaW0gdXBwZXIgJyArXG4gICAgICAgICAgICAnaXNhcnJheSBpc2F0b20gaXNib29sZWFuIGlzbnVtYmVyIGlzb2JqZWN0IGlzc3RyaW5nIHR5cGUgdG9hcnJheSB0b2F0b20gdG9ib29sZWFuIHRvbnVtYmVyIHRvb2JqZWN0IHRvc3RyaW5nJ1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1xcJFxcZCsvfSxcbiAgICAgIHtiZWdpbjogL1xcJFxcey8sIGVuZDogL30vfSxcbiAgICAgIHtiZWdpbjogJ1tcXFxcJFxcXFxAXScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkV9XG4gICAgXVxuICB9O1xuICB2YXIgREVGQVVMVCA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICBsZXhlbWVzOiAnW2Etei9fXSsnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnb24gb2ZmIHllcyBubyB0cnVlIGZhbHNlIG5vbmUgYmxvY2tlZCBkZWJ1ZyBpbmZvIG5vdGljZSB3YXJuIGVycm9yIGNyaXQgJyArXG4gICAgICAgICdzZWxlY3QgYnJlYWsgbGFzdCBwZXJtYW5lbnQgcmVkaXJlY3Qga3F1ZXVlIHJ0c2lnIGVwb2xsIHBvbGwgL2Rldi9wb2xsJ1xuICAgIH0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGlsbGVnYWw6ICc9PicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyB0aGlzIHN3YWxsb3dzIGVudGlyZSBVUkxzIHRvIGF2b2lkIGRldGVjdGluZyBudW1iZXJzIHdpdGhpblxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhbYS16XSspOi8nLCBlbmQ6ICdcXFxccycsIGVuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1ZBUl1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBWQVJdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogXCJcXFxcc1xcXFxeXCIsIGVuZDogXCJcXFxcc3x7fDtcIiwgcmV0dXJuRW5kOiB0cnVlfSxcbiAgICAgICAgICAvLyByZWdleHAgbG9jYXRpb25zICh+LCB+KilcbiAgICAgICAgICB7YmVnaW46IFwiflxcXFwqP1xcXFxzK1wiLCBlbmQ6IFwiXFxcXHN8e3w7XCIsIHJldHVybkVuZDogdHJ1ZX0sXG4gICAgICAgICAgLy8gKi5leGFtcGxlLmNvbVxuICAgICAgICAgIHtiZWdpbjogXCJcXFxcKihcXFxcLlthLXpcXFxcLV0rKStcIn0sXG4gICAgICAgICAgLy8gc3ViLmV4YW1wbGUuKlxuICAgICAgICAgIHtiZWdpbjogXCIoW2EtelxcXFwtXStcXFxcLikrXFxcXCpcIn1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIElQXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9KDpcXFxcZHsxLDV9KT9cXFxcYidcbiAgICAgIH0sXG4gICAgICAvLyB1bml0c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrW2tLbU1nR2RzaGR3eV0qXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ25naW54Y29uZiddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzK3snLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAneycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMnLCBlbmQ6ICc7fHsnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgIHN0YXJ0czogREVGQVVMVFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnW15cXFxcc1xcXFx9XSdcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyduaW0nXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FkZHIgYW5kIGFzIGFzbSBiaW5kIGJsb2NrIGJyZWFrIGNhc2UgY2FzdCBjb25zdCBjb250aW51ZSBjb252ZXJ0ZXIgJyArXG4gICAgICAgICdkaXNjYXJkIGRpc3RpbmN0IGRpdiBkbyBlbGlmIGVsc2UgZW5kIGVudW0gZXhjZXB0IGV4cG9ydCBmaW5hbGx5ICcgK1xuICAgICAgICAnZm9yIGZyb20gZ2VuZXJpYyBpZiBpbXBvcnQgaW4gaW5jbHVkZSBpbnRlcmZhY2UgaXMgaXNub3QgaXRlcmF0b3IgJyArXG4gICAgICAgICdsZXQgbWFjcm8gbWV0aG9kIG1peGluIG1vZCBuaWwgbm90IG5vdGluIG9iamVjdCBvZiBvciBvdXQgcHJvYyBwdHIgJyArXG4gICAgICAgICdyYWlzZSByZWYgcmV0dXJuIHNobCBzaHIgc3RhdGljIHRlbXBsYXRlIHRyeSB0dXBsZSB0eXBlIHVzaW5nIHZhciAnICtcbiAgICAgICAgJ3doZW4gd2hpbGUgd2l0aCB3aXRob3V0IHhvciB5aWVsZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnc2hhcmVkIGd1YXJkZWQgc3RkaW4gc3Rkb3V0IHN0ZGVyciByZXN1bHQgdHJ1ZSBmYWxzZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2ludCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQgdWludDggdWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgJyArXG4gICAgICAgICdmbG9hdDMyIGZsb2F0NjQgYm9vbCBjaGFyIHN0cmluZyBjc3RyaW5nIHBvaW50ZXIgZXhwciBzdG10IHZvaWQgJyArXG4gICAgICAgICdhdXRvIGFueSByYW5nZSBhcnJheSBvcGVuYXJyYXkgdmFyYXJncyBzZXEgc2V0IGNsb25nIGN1bG9uZyBjY2hhciAnICtcbiAgICAgICAgJ2NzY2hhciBjc2hvcnQgY2ludCBjc2l6ZSBjbG9uZ2xvbmcgY2Zsb2F0IGNkb3VibGUgY2xvbmdkb3VibGUgJyArXG4gICAgICAgICdjdWNoYXIgY3VzaG9ydCBjdWludCBjdWxvbmdsb25nIGNzdHJpbmdhcnJheSBzZW1pc3RhdGljJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFsge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgLy8gQWN0dWFsbHkgcHJhZ21hXG4gICAgICAgIGJlZ2luOiAve1xcLi8sXG4gICAgICAgIGVuZDogL1xcLn0vLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvW2EtekEtWl1cXHcqXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvXCJcIi99XVxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogLyhbYS16QS1aXVxcdyopP1wiXCJcIi8sXG4gICAgICAgIGVuZDogL1wiXCJcIi9cbiAgICAgIH0sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46IC9cXGJbQS1aXVxcdytcXGIvLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcYigwW3hYXVswLTlhLWZBLUZdW18wLTlhLWZBLUZdKikoJz9baUl1VV0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYigwb1swLTddW18wLTddKikoJz9baUl1VWZGXSg4fDE2fDMyfDY0KSk/L30sXG4gICAgICAgICAge2JlZ2luOiAvXFxiKDAoYnxCKVswMV1bXzAxXSopKCc/W2lJdVVmRl0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYihcXGRbX1xcZF0qKSgnP1tpSXVVZkZdKDh8MTZ8MzJ8NjQpKT8vfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5JWF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ3JlYyB3aXRoIGxldCBpbiBpbmhlcml0IGFzc2VydCBpZiBlbHNlIHRoZW4nLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBvciBhbmQgbnVsbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnaW1wb3J0IGFib3J0IGJhc2VOYW1lT2YgZGlyT2YgaXNOdWxsIGJ1aWx0aW5zIG1hcCByZW1vdmVBdHRycyB0aHJvdyAnICtcbiAgICAgICd0b1N0cmluZyBkZXJpdmF0aW9uJ1xuICB9O1xuICB2YXIgQU5USVFVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJFxcey8sXG4gICAgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEU1xuICB9O1xuICB2YXIgQVRUUlMgPSB7XG4gICAgYmVnaW46IC9bYS16QS1aMC05LV9dKyhcXHMqPSkvLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXFxTKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW0FOVElRVU9URV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogXCInJ1wiLCBlbmQ6IFwiJydcIn0sXG4gICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ31cbiAgICBdXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBTVFJJTkcsXG4gICAgQVRUUlNcbiAgXTtcbiAgQU5USVFVT1RFLmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogW1wibml4b3NcIl0sXG4gICAga2V5d29yZHM6IE5JWF9LRVlXT1JEUyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT05TVEFOVFMgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkKEFETUlOVE9PTFN8QVBQREFUQXxDREJVUk5fQVJFQXxDTURMSU5FfENPTU1PTkZJTEVTMzJ8Q09NTU9ORklMRVM2NHxDT01NT05GSUxFU3xDT09LSUVTfERFU0tUT1B8RE9DVU1FTlRTfEVYRURJUnxFWEVGSUxFfEVYRVBBVEh8RkFWT1JJVEVTfEZPTlRTfEhJU1RPUll8SFdORFBBUkVOVHxJTlNURElSfElOVEVSTkVUX0NBQ0hFfExBTkdVQUdFfExPQ0FMQVBQREFUQXxNVVNJQ3xORVRIT09EfE9VVERJUnxQSUNUVVJFU3xQTFVHSU5TRElSfFBSSU5USE9PRHxQUk9GSUxFfFBST0dSQU1GSUxFUzMyfFBST0dSQU1GSUxFUzY0fFBST0dSQU1GSUxFU3xRVUlDS0xBVU5DSHxSRUNFTlR8UkVTT1VSQ0VTX0xPQ0FMSVpFRHxSRVNPVVJDRVN8U0VORFRPfFNNUFJPR1JBTVN8U01TVEFSVFVQfFNUQVJUTUVOVXxTWVNESVJ8VEVNUHxURU1QTEFURVN8VklERU9TfFdJTkRJUikvXG4gIH07XG5cbiAgdmFyIERFRklORVMgPSB7XG4gICAgLy8gJHtkZWZpbmVzfVxuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCt7W1xcd1xcLjotXSt9L1xuICB9O1xuXG4gIHZhciBWQVJJQUJMRVMgPSB7XG4gICAgLy8gJHZhcmlhYmxlc1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCtcXHcrLyxcbiAgICBpbGxlZ2FsOiAvXFwoXFwpe30vXG4gIH07XG5cbiAgdmFyIExBTkdVQUdFUyA9IHtcbiAgICAvLyAkKGxhbmd1YWdlX3N0cmluZ3MpXG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK1xcKFtcXHdcXF5cXC46LV0rXFwpL1xuICB9O1xuXG4gIHZhciBQQVJBTUVURVJTID0ge1xuICAgIC8vIGNvbW1hbmQgcGFyYW1ldGVyc1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICcoQVJDSElWRXxGSUxFX0FUVFJJQlVURV9BUkNISVZFfEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0FUVFJJQlVURV9PRkZMSU5FfEZJTEVfQVRUUklCVVRFX1JFQURPTkxZfEZJTEVfQVRUUklCVVRFX1NZU1RFTXxGSUxFX0FUVFJJQlVURV9URU1QT1JBUll8SEtDUnxIS0NVfEhLRER8SEtFWV9DTEFTU0VTX1JPT1R8SEtFWV9DVVJSRU5UX0NPTkZJR3xIS0VZX0NVUlJFTlRfVVNFUnxIS0VZX0RZTl9EQVRBfEhLRVlfTE9DQUxfTUFDSElORXxIS0VZX1BFUkZPUk1BTkNFX0RBVEF8SEtFWV9VU0VSU3xIS0xNfEhLUER8SEtVfElEQUJPUlR8SURDQU5DRUx8SURJR05PUkV8SUROT3xJRE9LfElEUkVUUll8SURZRVN8TUJfQUJPUlRSRVRSWUlHTk9SRXxNQl9ERUZCVVRUT04xfE1CX0RFRkJVVFRPTjJ8TUJfREVGQlVUVE9OM3xNQl9ERUZCVVRUT040fE1CX0lDT05FWENMQU1BVElPTnxNQl9JQ09OSU5GT1JNQVRJT058TUJfSUNPTlFVRVNUSU9OfE1CX0lDT05TVE9QfE1CX09LfE1CX09LQ0FOQ0VMfE1CX1JFVFJZQ0FOQ0VMfE1CX1JJR0hUfE1CX1JUTFJFQURJTkd8TUJfU0VURk9SRUdST1VORHxNQl9UT1BNT1NUfE1CX1VTRVJJQ09OfE1CX1lFU05PfE5PUk1BTHxPRkZMSU5FfFJFQURPTkxZfFNIQ1RYfFNIRUxMX0NPTlRFWFR8U1lTVEVNfFRFTVBPUkFSWSknXG4gIH07XG5cbiAgdmFyIENPTVBJTEVSID0ge1xuICAgIC8vICFjb21waWxlcl9mbGFnc1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAvXFwhKGFkZGluY2x1ZGVkaXJ8YWRkcGx1Z2luZGlyfGFwcGVuZGZpbGV8Y2R8ZGVmaW5lfGRlbGZpbGV8ZWNob3xlbHNlfGVuZGlmfGVycm9yfGV4ZWN1dGV8ZmluYWxpemV8Z2V0ZGxsdmVyc2lvbnxnZXR0bGJ2ZXJzaW9ufGlmfGlmZGVmfGlmbWFjcm9kZWZ8aWZtYWNyb25kZWZ8aWZuZGVmfGluY2x1ZGV8aW5zZXJ0bWFjcm98bWFjcm98bWFjcm9lbmR8bWFrZW5zaXN8cGFja2hkcnxzZWFyY2hwYXJzZXxzZWFyY2hyZXBsYWNlfHN5c3RlbXx0ZW1wZmlsZXx1bmRlZnx2ZXJib3NlfHdhcm5pbmcpL1xuICB9O1xuXG4gIHZhciBNRVRBQ0hBUlMgPSB7XG4gICAgLy8gJFxcbiwgJFxcciwgJFxcdCwgJCRcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogL1xcJChcXFxcW25ydF18XFwkKS9cbiAgfTtcblxuICB2YXIgUExVR0lOUyA9IHtcbiAgICAvLyBwbHVnOjppbnNcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46IC9cXHcrXFw6XFw6XFx3Ky9cbiAgfTtcblxuICAgIHZhciBTVFJJTkcgPSB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgTUVUQUNIQVJTLFxuICAgICAgICBDT05TVEFOVFMsXG4gICAgICAgIERFRklORVMsXG4gICAgICAgIFZBUklBQkxFUyxcbiAgICAgICAgTEFOR1VBR0VTXG4gICAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICdBYm9ydCBBZGRCcmFuZGluZ0ltYWdlIEFkZFNpemUgQWxsb3dSb290RGlySW5zdGFsbCBBbGxvd1NraXBGaWxlcyBBdXRvQ2xvc2VXaW5kb3cgQkdGb250IEJHR3JhZGllbnQgQnJhbmRpbmdUZXh0IEJyaW5nVG9Gcm9udCBDYWxsIENhbGxJbnN0RExMIENhcHRpb24gQ2hhbmdlVUkgQ2hlY2tCaXRtYXAgQ2xlYXJFcnJvcnMgQ29tcGxldGVkVGV4dCBDb21wb25lbnRUZXh0IENvcHlGaWxlcyBDUkNDaGVjayBDcmVhdGVEaXJlY3RvcnkgQ3JlYXRlRm9udCBDcmVhdGVTaG9ydEN1dCBEZWxldGUgRGVsZXRlSU5JU2VjIERlbGV0ZUlOSVN0ciBEZWxldGVSZWdLZXkgRGVsZXRlUmVnVmFsdWUgRGV0YWlsUHJpbnQgRGV0YWlsc0J1dHRvblRleHQgRGlyVGV4dCBEaXJWYXIgRGlyVmVyaWZ5IEVuYWJsZVdpbmRvdyBFbnVtUmVnS2V5IEVudW1SZWdWYWx1ZSBFeGNoIEV4ZWMgRXhlY1NoZWxsIEV4ZWNTaGVsbFdhaXQgRXhlY1dhaXQgRXhwYW5kRW52U3RyaW5ncyBGaWxlIEZpbGVCdWZTaXplIEZpbGVDbG9zZSBGaWxlRXJyb3JUZXh0IEZpbGVPcGVuIEZpbGVSZWFkIEZpbGVSZWFkQnl0ZSBGaWxlUmVhZFVURjE2TEUgRmlsZVJlYWRXb3JkIEZpbGVTZWVrIEZpbGVXcml0ZSBGaWxlV3JpdGVCeXRlIEZpbGVXcml0ZVVURjE2TEUgRmlsZVdyaXRlV29yZCBGaW5kQ2xvc2UgRmluZEZpcnN0IEZpbmROZXh0IEZpbmRXaW5kb3cgRmx1c2hJTkkgRnVuY3Rpb25FbmQgR2V0Q3VySW5zdFR5cGUgR2V0Q3VycmVudEFkZHJlc3MgR2V0RGxnSXRlbSBHZXRETExWZXJzaW9uIEdldERMTFZlcnNpb25Mb2NhbCBHZXRFcnJvckxldmVsIEdldEZpbGVUaW1lIEdldEZpbGVUaW1lTG9jYWwgR2V0RnVsbFBhdGhOYW1lIEdldEZ1bmN0aW9uQWRkcmVzcyBHZXRJbnN0RGlyRXJyb3IgR2V0TGFiZWxBZGRyZXNzIEdldFRlbXBGaWxlTmFtZSBHb3RvIEhpZGVXaW5kb3cgSWNvbiBJZkFib3J0IElmRXJyb3JzIElmRmlsZUV4aXN0cyBJZlJlYm9vdEZsYWcgSWZTaWxlbnQgSW5pdFBsdWdpbnNEaXIgSW5zdGFsbEJ1dHRvblRleHQgSW5zdGFsbENvbG9ycyBJbnN0YWxsRGlyIEluc3RhbGxEaXJSZWdLZXkgSW5zdFByb2dyZXNzRmxhZ3MgSW5zdFR5cGUgSW5zdFR5cGVHZXRUZXh0IEluc3RUeXBlU2V0VGV4dCBJbnQ2NENtcCBJbnQ2NENtcFUgSW50NjRGbXQgSW50Q21wIEludENtcFUgSW50Rm10IEludE9wIEludFB0ckNtcCBJbnRQdHJDbXBVIEludFB0ck9wIElzV2luZG93IExhbmdTdHJpbmcgTGljZW5zZUJrQ29sb3IgTGljZW5zZURhdGEgTGljZW5zZUZvcmNlU2VsZWN0aW9uIExpY2Vuc2VMYW5nU3RyaW5nIExpY2Vuc2VUZXh0IExvYWRMYW5ndWFnZUZpbGUgTG9ja1dpbmRvdyBMb2dTZXQgTG9nVGV4dCBNYW5pZmVzdERQSUF3YXJlIE1hbmlmZXN0U3VwcG9ydGVkT1MgTWVzc2FnZUJveCBNaXNjQnV0dG9uVGV4dCBOYW1lIE5vcCBPdXRGaWxlIFBhZ2UgUGFnZUNhbGxiYWNrcyBQYWdlRXhFbmQgUG9wIFB1c2ggUXVpdCBSZWFkRW52U3RyIFJlYWRJTklTdHIgUmVhZFJlZ0RXT1JEIFJlYWRSZWdTdHIgUmVib290IFJlZ0RMTCBSZW5hbWUgUmVxdWVzdEV4ZWN1dGlvbkxldmVsIFJlc2VydmVGaWxlIFJldHVybiBSTURpciBTZWFyY2hQYXRoIFNlY3Rpb25FbmQgU2VjdGlvbkdldEZsYWdzIFNlY3Rpb25HZXRJbnN0VHlwZXMgU2VjdGlvbkdldFNpemUgU2VjdGlvbkdldFRleHQgU2VjdGlvbkdyb3VwRW5kIFNlY3Rpb25JbiBTZWN0aW9uU2V0RmxhZ3MgU2VjdGlvblNldEluc3RUeXBlcyBTZWN0aW9uU2V0U2l6ZSBTZWN0aW9uU2V0VGV4dCBTZW5kTWVzc2FnZSBTZXRBdXRvQ2xvc2UgU2V0QnJhbmRpbmdJbWFnZSBTZXRDb21wcmVzcyBTZXRDb21wcmVzc29yIFNldENvbXByZXNzb3JEaWN0U2l6ZSBTZXRDdGxDb2xvcnMgU2V0Q3VySW5zdFR5cGUgU2V0RGF0YWJsb2NrT3B0aW1pemUgU2V0RGF0ZVNhdmUgU2V0RGV0YWlsc1ByaW50IFNldERldGFpbHNWaWV3IFNldEVycm9yTGV2ZWwgU2V0RXJyb3JzIFNldEZpbGVBdHRyaWJ1dGVzIFNldEZvbnQgU2V0T3V0UGF0aCBTZXRPdmVyd3JpdGUgU2V0UmVib290RmxhZyBTZXRSZWdWaWV3IFNldFNoZWxsVmFyQ29udGV4dCBTZXRTaWxlbnQgU2hvd0luc3REZXRhaWxzIFNob3dVbmluc3REZXRhaWxzIFNob3dXaW5kb3cgU2lsZW50SW5zdGFsbCBTaWxlbnRVbkluc3RhbGwgU2xlZXAgU3BhY2VUZXh0cyBTdHJDbXAgU3RyQ21wUyBTdHJDcHkgU3RyTGVuIFN1YkNhcHRpb24gVW5pY29kZSBVbmluc3RhbGxCdXR0b25UZXh0IFVuaW5zdGFsbENhcHRpb24gVW5pbnN0YWxsSWNvbiBVbmluc3RhbGxTdWJDYXB0aW9uIFVuaW5zdGFsbFRleHQgVW5pbnN0UGFnZSBVblJlZ0RMTCBWYXIgVklBZGRWZXJzaW9uS2V5IFZJRmlsZVZlcnNpb24gVklQcm9kdWN0VmVyc2lvbiBXaW5kb3dJY29uIFdyaXRlSU5JU3RyIFdyaXRlUmVnQmluIFdyaXRlUmVnRFdPUkQgV3JpdGVSZWdFeHBhbmRTdHIgV3JpdGVSZWdNdWx0aVN0ciBXcml0ZVJlZ05vbmUgV3JpdGVSZWdTdHIgV3JpdGVVbmluc3RhbGxlciBYUFN0eWxlJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAnYWRtaW4gYWxsIGF1dG8gYm90aCBib3R0b20gYnppcDIgY29sb3JlZCBjb21wb25lbnRzIGN1cnJlbnQgY3VzdG9tIGRpcmVjdG9yeSBmYWxzZSBmb3JjZSBoaWRlIGhpZ2hlc3QgaWZkaWZmIGlmbmV3ZXIgaW5zdGZpbGVzIGxhc3R1c2VkIGxlYXZlIGxlZnQgbGljZW5zZSBsaXN0b25seSBsem1hIG5ldmVyc2hvdyBub25lIG5vcm1hbCBub3RzZXQgb2ZmIG9uIG9wZW4gcHJpbnQgcmlnaHQgc2hvdyBzaWxlbnQgc2lsZW50bG9nIHNtb290aCB0ZXh0b25seSB0b3AgdHJ1ZSB0cnkgdW4uY29tcG9uZW50cyB1bi5jdXN0b20gdW4uZGlyZWN0b3J5IHVuLmluc3RmaWxlcyB1bi5saWNlbnNlIHVuaW5zdENvbmZpcm0gdXNlciBXaW4xMCBXaW43IFdpbjggV2luVmlzdGEgemxpYidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzsnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuY3Rpb24gUGFnZUV4IFNlY3Rpb24gU2VjdGlvbkdyb3VwJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01QSUxFUixcbiAgICAgIERFRklORVMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBMQU5HVUFHRVMsXG4gICAgICBQQVJBTUVURVJTLFxuICAgICAgUExVR0lOUyxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQVBJX0NMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKEFWfENBfENGfENHfENJfENMfENNfENOfENUfE1LfE1QfE1US3xNVEx8TlN8U0NOfFNLfFVJfFdLfFhDKVxcXFx3KycsXG4gIH07XG4gIHZhciBPQkpDX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW50IGZsb2F0IHdoaWxlIGNoYXIgZXhwb3J0IHNpemVvZiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBmb3IgdW5pb24gJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgYm9vbCBtdXRhYmxlIGlmIGRvIHJldHVybiBnb3RvIHZvaWQgJyArXG4gICAgICAnZW51bSBlbHNlIGJyZWFrIGV4dGVybiBhc20gY2FzZSBzaG9ydCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCAnICtcbiAgICAgICdzaWduZWQgdHlwZW5hbWUgdGhpcyBzd2l0Y2ggY29udGludWUgd2NoYXJfdCBpbmxpbmUgcmVhZG9ubHkgYXNzaWduICcgK1xuICAgICAgJ3JlYWR3cml0ZSBzZWxmIEBzeW5jaHJvbml6ZWQgaWQgdHlwZW9mICcgK1xuICAgICAgJ25vbmF0b21pYyBzdXBlciB1bmljaGFyIElCT3V0bGV0IElCQWN0aW9uIHN0cm9uZyB3ZWFrIGNvcHkgJyArXG4gICAgICAnaW4gb3V0IGlub3V0IGJ5Y29weSBieXJlZiBvbmV3YXkgX19zdHJvbmcgX193ZWFrIF9fYmxvY2sgX19hdXRvcmVsZWFzaW5nICcgK1xuICAgICAgJ0Bwcml2YXRlIEBwcm90ZWN0ZWQgQHB1YmxpYyBAdHJ5IEBwcm9wZXJ0eSBAZW5kIEB0aHJvdyBAY2F0Y2ggQGZpbmFsbHkgJyArXG4gICAgICAnQGF1dG9yZWxlYXNlcG9vbCBAc3ludGhlc2l6ZSBAZHluYW1pYyBAc2VsZWN0b3IgQG9wdGlvbmFsIEByZXF1aXJlZCAnICtcbiAgICAgICdAZW5jb2RlIEBwYWNrYWdlIEBpbXBvcnQgQGRlZnMgQGNvbXBhdGliaWxpdHlfYWxpYXMgJyArXG4gICAgICAnX19icmlkZ2UgX19icmlkZ2VfdHJhbnNmZXIgX19icmlkZ2VfcmV0YWluZWQgX19icmlkZ2VfcmV0YWluICcgK1xuICAgICAgJ19fY292YXJpYW50IF9fY29udHJhdmFyaWFudCBfX2tpbmRvZiAnICtcbiAgICAgICdfTm9ubnVsbCBfTnVsbGFibGUgX051bGxfdW5zcGVjaWZpZWQgJyArXG4gICAgICAnX19GVU5DVElPTl9fIF9fUFJFVFRZX0ZVTkNUSU9OX18gX19hdHRyaWJ1dGVfXyAnICtcbiAgICAgICdnZXR0ZXIgc2V0dGVyIHJldGFpbiB1bnNhZmVfdW5yZXRhaW5lZCAnICtcbiAgICAgICdub25udWxsIG51bGxhYmxlIG51bGxfdW5zcGVjaWZpZWQgbnVsbF9yZXNldHRhYmxlIGNsYXNzIGluc3RhbmNldHlwZSAnICtcbiAgICAgICdOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSIE5TX1VOQVZBSUxBQkxFIE5TX1JFUVVJUkVTX1NVUEVSICcgK1xuICAgICAgJ05TX1JFVFVSTlNfSU5ORVJfUE9JTlRFUiBOU19JTkxJTkUgTlNfQVZBSUxBQkxFIE5TX0RFUFJFQ0FURUQgJyArXG4gICAgICAnTlNfRU5VTSBOU19PUFRJT05TIE5TX1NXSUZUX1VOQVZBSUxBQkxFICcgK1xuICAgICAgJ05TX0FTU1VNRV9OT05OVUxMX0JFR0lOIE5TX0FTU1VNRV9OT05OVUxMX0VORCAnICtcbiAgICAgICdOU19SRUZJTkVEX0ZPUl9TV0lGVCBOU19TV0lGVF9OQU1FIE5TX1NXSUZUX05PVEhST1cgJyArXG4gICAgICAnTlNfRFVSSU5HIE5TX0hBTkRMRVIgTlNfRU5ESEFORExFUiBOU19WQUxVRVJFVFVSTiBOU19WT0lEUkVUVVJOJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUgRkFMU0UgVFJVRSBuaWwgWUVTIE5PIE5VTEwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0JPT0wgZGlzcGF0Y2hfb25jZV90IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hfc3luYyBkaXNwYXRjaF9hc3luYyBkaXNwYXRjaF9vbmNlJ1xuICB9O1xuICB2YXIgTEVYRU1FUyA9IC9bYS16QS1aQF1bYS16QS1aMC05X10qLztcbiAgdmFyIENMQVNTX0tFWVdPUkRTID0gJ0BpbnRlcmZhY2UgQGNsYXNzIEBwcm90b2NvbCBAaW1wbGVtZW50YXRpb24nO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbW0nLCAnb2JqYycsICdvYmotYyddLFxuICAgIGtleXdvcmRzOiBPQkpDX0tFWVdPUkRTLFxuICAgIGxleGVtZXM6IExFWEVNRVMsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgQVBJX0NMQVNTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdbXlxcXFxcXFxcXVteXFwnXSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAnXFxcIicsIGVuZDogJ1xcXCInIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46ICc8JywgZW5kOiAnPicgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJygnICsgQ0xBU1NfS0VZV09SRFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxiJywgZW5kOiAnKHt8JCknLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ0xBU1NfS0VZV09SRFMsIGxleGVtZXM6IExFWEVNRVMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicraGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvKiBtaXNzaW5nIHN1cHBvcnQgZm9yIGhlcmVkb2MtbGlrZSBzdHJpbmcgKE9DYW1sIDQuMC4yKykgKi9cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhbmQgYXMgYXNzZXJ0IGFzciBiZWdpbiBjbGFzcyBjb25zdHJhaW50IGRvIGRvbmUgZG93bnRvIGVsc2UgZW5kICcgK1xuICAgICAgICAnZXhjZXB0aW9uIGV4dGVybmFsIGZvciBmdW4gZnVuY3Rpb24gZnVuY3RvciBpZiBpbiBpbmNsdWRlICcgK1xuICAgICAgICAnaW5oZXJpdCEgaW5oZXJpdCBpbml0aWFsaXplciBsYW5kIGxhenkgbGV0IGxvciBsc2wgbHNyIGx4b3IgbWF0Y2ggbWV0aG9kIXwxMCBtZXRob2QgJyArXG4gICAgICAgICdtb2QgbW9kdWxlIG11dGFibGUgbmV3IG9iamVjdCBvZiBvcGVuISBvcGVuIG9yIHByaXZhdGUgcmVjIHNpZyBzdHJ1Y3QgJyArXG4gICAgICAgICd0aGVuIHRvIHRyeSB0eXBlIHZhbCEgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoICcgK1xuICAgICAgICAvKiBjYW1scDQgKi9cbiAgICAgICAgJ3BhcnNlciB2YWx1ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgYnl0ZXMgY2hhciBleG58NSBmbG9hdCBpbnQgaW50MzIgaW50NjQgbGlzdCBsYXp5X3R8NSBuYXRpdmVpbnR8NSBzdHJpbmcgdW5pdCAnICtcbiAgICAgICAgLyogKHNvbWUpIHR5cGVzIGluIFBlcnZhc2l2ZXMgKi9cbiAgICAgICAgJ2luX2NoYW5uZWwgb3V0X2NoYW5uZWwgcmVmJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogL1xcL1xcL3w+Pi8sXG4gICAgbGV4ZW1lczogJ1thLXpfXVxcXFx3KiE/JyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdcXFxcWyhcXFxcfFxcXFx8KT9cXFxcXXxcXFxcKFxcXFwpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXFxcXChcXFxcKicsXG4gICAgICAgICdcXFxcKlxcXFwpJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgeyAvKiB0eXBlIHZhcmlhYmxlICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel9dKD8hXFwnKVtcXFxcd1xcJ10qJ1xuICAgICAgICAvKiB0aGUgZ3JhbW1hciBpcyBhbWJpZ3VvdXMgb24gaG93ICdhJ2Igc2hvdWxkIGJlIGludGVycHJldGVkIGJ1dCBub3QgdGhlIGNvbXBpbGVyICovXG4gICAgICB9LFxuICAgICAgeyAvKiBwb2x5bW9ycGhpYyB2YXJpYW50ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ2BbQS1aXVtcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIHsgLyogbW9kdWxlIG9yIGNvbnN0cnVjdG9yICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLyogZG9uJ3QgY29sb3IgaWRlbnRpZmllcnMsIGJ1dCBzYWZlbHkgY2F0Y2ggYWxsIGlkZW50aWZpZXJzIHdpdGggJyovXG4gICAgICAgIGJlZ2luOiAnW2Etel9dXFxcXHcqXFwnW1xcXFx3XFwnXSonLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvWy09XT4vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXHR2YXIgU1BFQ0lBTF9WQVJTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuXHRcdGJlZ2luOiAnXFxcXCQoZlthc25dfHR8dnBbcnRkXXxjaGlsZHJlbiknXG5cdH0sXG5cdExJVEVSQUxTID0ge1xuXHRcdGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuXHRcdGJlZ2luOiAnZmFsc2V8dHJ1ZXxQSXx1bmRlZidcblx0fSxcblx0TlVNQkVSUyA9IHtcblx0XHRjbGFzc05hbWU6ICdudW1iZXInLFxuXHRcdGJlZ2luOiAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyhlLT9cXFxcZCspPycsIC8vYWRkcyAxZTUsIDFlLTEwXG5cdFx0cmVsZXZhbmNlOiAwXG5cdH0sXG5cdFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLHtpbGxlZ2FsOiBudWxsfSksXG5cdFBSRVBSTyA9IHtcblx0XHRjbGFzc05hbWU6ICdtZXRhJyxcblx0XHRrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaW5jbHVkZSB1c2UnfSxcblx0XHRiZWdpbjogJ2luY2x1ZGV8dXNlIDwnLFxuXHRcdGVuZDogJz4nXG5cdH0sXG5cdFBBUkFNUyA9IHtcblx0XHRjbGFzc05hbWU6ICdwYXJhbXMnLFxuXHRcdGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG5cdFx0Y29udGFpbnM6IFsnc2VsZicsIE5VTUJFUlMsIFNUUklORywgU1BFQ0lBTF9WQVJTLCBMSVRFUkFMU11cblx0fSxcblx0TU9ESUZJRVJTID0ge1xuXHRcdGJlZ2luOiAnWyohIyVdJyxcblx0XHRyZWxldmFuY2U6IDBcblx0fSxcblx0RlVOQ1RJT05TID0ge1xuXHRcdGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcblx0XHRiZWdpbktleXdvcmRzOiAnbW9kdWxlIGZ1bmN0aW9uJyxcblx0XHRlbmQ6ICdcXFxcPXxcXFxceycsXG5cdFx0Y29udGFpbnM6IFtQQVJBTVMsIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuXHR9O1xuXG5cdHJldHVybiB7XG5cdFx0YWxpYXNlczogWydzY2FkJ10sXG5cdFx0a2V5d29yZHM6IHtcblx0XHRcdGtleXdvcmQ6ICdmdW5jdGlvbiBtb2R1bGUgaW5jbHVkZSB1c2UgZm9yIGludGVyc2VjdGlvbl9mb3IgaWYgZWxzZSBcXFxcJScsXG5cdFx0XHRsaXRlcmFsOiAnZmFsc2UgdHJ1ZSBQSSB1bmRlZicsXG5cdFx0XHRidWlsdF9pbjogJ2NpcmNsZSBzcXVhcmUgcG9seWdvbiB0ZXh0IHNwaGVyZSBjdWJlIGN5bGluZGVyIHBvbHloZWRyb24gdHJhbnNsYXRlIHJvdGF0ZSBzY2FsZSByZXNpemUgbWlycm9yIG11bHRtYXRyaXggY29sb3Igb2Zmc2V0IGh1bGwgbWlua293c2tpIHVuaW9uIGRpZmZlcmVuY2UgaW50ZXJzZWN0aW9uIGFicyBzaWduIHNpbiBjb3MgdGFuIGFjb3MgYXNpbiBhdGFuIGF0YW4yIGZsb29yIHJvdW5kIGNlaWwgbG4gbG9nIHBvdyBzcXJ0IGV4cCByYW5kcyBtaW4gbWF4IGNvbmNhdCBsb29rdXAgc3RyIGNociBzZWFyY2ggdmVyc2lvbiB2ZXJzaW9uX251bSBub3JtIGNyb3NzIHBhcmVudF9tb2R1bGUgZWNobyBpbXBvcnQgaW1wb3J0X2R4ZiBkeGZfbGluZWFyX2V4dHJ1ZGUgbGluZWFyX2V4dHJ1ZGUgcm90YXRlX2V4dHJ1ZGUgc3VyZmFjZSBwcm9qZWN0aW9uIHJlbmRlciBjaGlsZHJlbiBkeGZfY3Jvc3MgZHhmX2RpbSBsZXQgYXNzaWduJ1xuXHRcdH0sXG5cdFx0Y29udGFpbnM6IFtcblx0XHRcdGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcblx0XHRcdGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG5cdFx0XHROVU1CRVJTLFxuXHRcdFx0UFJFUFJPLFxuXHRcdFx0U1RSSU5HLFxuXHRcdFx0U1BFQ0lBTF9WQVJTLFxuXHRcdFx0TU9ESUZJRVJTLFxuXHRcdFx0RlVOQ1RJT05TXG5cdFx0XVxuXHR9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgT1hZR0VORV9LRVlXT1JEUyA9ICdhYnN0cmFjdCBhZGQgYW5kIGFycmF5IGFzIGFzYyBhc3BlY3QgYXNzZW1ibHkgYXN5bmMgYmVnaW4gYnJlYWsgYmxvY2sgYnkgY2FzZSBjbGFzcyBjb25jYXQgY29uc3QgY29weSBjb25zdHJ1Y3RvciBjb250aW51ZSAnK1xuICAgICdjcmVhdGUgZGVmYXVsdCBkZWxlZ2F0ZSBkZXNjIGRpc3RpbmN0IGRpdiBkbyBkb3dudG8gZHluYW1pYyBlYWNoIGVsc2UgZW1wdHkgZW5kIGVuc3VyZSBlbnVtIGVxdWFscyBldmVudCBleGNlcHQgZXhpdCBleHRlbnNpb24gZXh0ZXJuYWwgZmFsc2UgJytcbiAgICAnZmluYWwgZmluYWxpemUgZmluYWxpemVyIGZpbmFsbHkgZmxhZ3MgZm9yIGZvcndhcmQgZnJvbSBmdW5jdGlvbiBmdXR1cmUgZ2xvYmFsIGdyb3VwIGhhcyBpZiBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIGltcGxpZXMgaW4gaW5kZXggaW5oZXJpdGVkICcrXG4gICAgJ2lubGluZSBpbnRlcmZhY2UgaW50byBpbnZhcmlhbnRzIGlzIGl0ZXJhdG9yIGpvaW4gbG9ja2VkIGxvY2tpbmcgbG9vcCBtYXRjaGluZyBtZXRob2QgbW9kIG1vZHVsZSBuYW1lc3BhY2UgbmVzdGVkIG5ldyBuaWwgbm90IG5vdGlmeSBudWxsYWJsZSBvZiAnK1xuICAgICdvbGQgb24gb3BlcmF0b3Igb3Igb3JkZXIgb3V0IG92ZXJyaWRlIHBhcmFsbGVsIHBhcmFtcyBwYXJ0aWFsIHBpbm5lZCBwcml2YXRlIHByb2NlZHVyZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljIHF1ZXJ5YWJsZSByYWlzZSByZWFkIHJlYWRvbmx5ICcrXG4gICAgJ3JlY29yZCByZWludHJvZHVjZSByZW1vdmUgcmVwZWF0IHJlcXVpcmUgcmVzdWx0IHJldmVyc2Ugc2VhbGVkIHNlbGVjdCBzZWxmIHNlcXVlbmNlIHNldCBzaGwgc2hyIHNraXAgc3RhdGljIHN0ZXAgc29mdCB0YWtlIHRoZW4gdG8gdHJ1ZSB0cnkgdHVwbGUgJytcbiAgICAndHlwZSB1bmlvbiB1bml0IHVuc2FmZSB1bnRpbCB1c2VzIHVzaW5nIHZhciB2aXJ0dWFsIHJhaXNlcyB2b2xhdGlsZSB3aGVyZSB3aGlsZSB3aXRoIHdyaXRlIHhvciB5aWVsZCBhd2FpdCBtYXBwZWQgZGVwcmVjYXRlZCBzdGRjYWxsIGNkZWNsIHBhc2NhbCAnK1xuICAgICdyZWdpc3RlciBzYWZlY2FsbCBvdmVybG9hZCBsaWJyYXJ5IHBsYXRmb3JtIHJlZmVyZW5jZSBwYWNrZWQgc3RyaWN0IHB1Ymxpc2hlZCBhdXRvcmVsZWFzZXBvb2wgc2VsZWN0b3Igc3Ryb25nIHdlYWsgdW5yZXRhaW5lZCc7XG4gIHZhciBDVVJMWV9DT01NRU5UID0gIGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIFBBUkVOX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gIH07XG4gIHZhciBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogJygjXFxcXGQrKSsnXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yIGRlc3RydWN0b3IgcHJvY2VkdXJlIG1ldGhvZCcsIGVuZDogJ1s6O10nLFxuICAgIGtleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3J8MTAgZGVzdHJ1Y3RvcnwxMCBwcm9jZWR1cmV8MTAgbWV0aG9kfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtTVFJJTkcsIENIQVJfU1RSSU5HXVxuICAgICAgfSxcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlRcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvXFwuP1xcdysvLFxuICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoXCJ8XFxcXCRbRy1aZy16XXxcXFxcL1xcXFwqfDwvfD0+fC0+KScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlQsIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICc9XFxcXGJjbGFzc1xcXFxiJywgZW5kOiAnZW5kOycsXG4gICAgICAgIGtleXdvcmRzOiBPWFlHRU5FX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICAgICAgQ1VSTFlfQ09NTUVOVCwgUEFSRU5fQ09NTUVOVCwgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIEZVTkNUSU9OXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1VSTFlfU1VCQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAneycsXG4gICAgJ30nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXFxcXnJlbXsnLFxuICAgICAgICAnfScsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDVVJMWV9TVUJDT01NRU5UXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeQCg/OkJBU0V8VVNFfENMQVNTfE9QVElPTlMpJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdAW1xcXFx3XFxcXC1dK1xcXFxbW1xcXFx3XjtcXFxcLV0qXFxcXF0oPzpcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKT8oPzouKikkJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXHs/W1xcXFx3XFxcXC1cXFxcLlxcXFw6XStcXFxcfT8nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXltcXFxcd1xcXFwtXFxcXC5cXFxcOl0rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcXiNbMC05YS1mQS1GXSsnXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE1BQ1JPID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qL1xuICB9O1xuICB2YXIgVEFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvPCg/IVxcLykvLCBlbmQ6IC8+L1xuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwZi5jb25mJ10sXG4gICAgbGV4ZW1lczogL1thLXowLTlfPD4tXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjogLyogYmxvY2sgbWF0Y2ggcGFzcyBhcmUgXCJhY3Rpb25zXCIgaW4gcGYuY29uZig1KSwgdGhlIHJlc3QgYXJlXG4gICAgICAgICAgICAgICAgICogbGV4aWNhbGx5IHNpbWlsYXIgdG9wLWxldmVsIGNvbW1hbmRzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAnYmxvY2sgbWF0Y2ggcGFzcyBsb2FkIGFuY2hvcnw1IGFudGlzcG9vZnwxMCBzZXQgdGFibGUnLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2luIG91dCBsb2cgcXVpY2sgb24gcmRvbWFpbiBpbmV0IGluZXQ2IHByb3RvIGZyb20gcG9ydCBvcyB0byByb3V0ZScgK1xuICAgICAgICAnYWxsb3ctb3B0cyBkaXZlcnQtcGFja2V0IGRpdmVydC1yZXBseSBkaXZlcnQtdG8gZmxhZ3MgZ3JvdXAgaWNtcC10eXBlJyArXG4gICAgICAgICdpY21wNi10eXBlIGxhYmVsIG9uY2UgcHJvYmFiaWxpdHkgcmVjaWV2ZWQtb24gcnRhYmxlIHByaW8gcXVldWUnICtcbiAgICAgICAgJ3RvcyB0YWcgdGFnZ2VkIHVzZXIga2VlcCBmcmFnbWVudCBmb3Igb3MgZHJvcCcgK1xuICAgICAgICAnYWYtdG98MTAgYmluYXQtdG98MTAgbmF0LXRvfDEwIHJkci10b3wxMCBiaXRtYXNrIGxlYXN0LXN0YXRzIHJhbmRvbSByb3VuZC1yb2JpbicgK1xuICAgICAgICAnc291cmNlLWhhc2ggc3RhdGljLXBvcnQnICtcbiAgICAgICAgJ2R1cC10byByZXBseS10byByb3V0ZS10bycgK1xuICAgICAgICAncGFyZW50IGJhbmR3aWR0aCBkZWZhdWx0IG1pbiBtYXggcWxpbWl0JyArXG4gICAgICAgICdibG9jay1wb2xpY3kgZGVidWcgZmluZ2VycHJpbnRzIGhvc3RpZCBsaW1pdCBsb2dpbnRlcmZhY2Ugb3B0aW1pemF0aW9uJyArXG4gICAgICAgICdyZWFzc2VtYmxlIHJ1bGVzZXQtb3B0aW1pemF0aW9uIGJhc2ljIG5vbmUgcHJvZmlsZSBza2lwIHN0YXRlLWRlZmF1bHRzJyArXG4gICAgICAgICdzdGF0ZS1wb2xpY3kgdGltZW91dCcgK1xuICAgICAgICAnY29uc3QgY291bnRlcnMgcGVyc2lzdCcgK1xuICAgICAgICAnbm8gbW9kdWxhdGUgc3lucHJveHkgc3RhdGV8NSBmbG9hdGluZyBpZi1ib3VuZCBuby1zeW5jIHBmbG93fDEwIHNsb3BweScgK1xuICAgICAgICAnc291cmNlLXRyYWNrIGdsb2JhbCBydWxlIG1heC1zcmMtbm9kZXMgbWF4LXNyYy1zdGF0ZXMgbWF4LXNyYy1jb25uJyArXG4gICAgICAgICdtYXgtc3JjLWNvbm4tcmF0ZSBvdmVybG9hZCBmbHVzaCcgK1xuICAgICAgICAnc2NydWJ8NSBtYXgtbXNzIG1pbi10dGwgbm8tZGZ8MTAgcmFuZG9tLWlkJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdhbGwgYW55IG5vLXJvdXRlIHNlbGYgdXJwZi1mYWlsZWQgZWdyZXNzfDUgdW5rbm93bidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBNQUNSTyxcbiAgICAgIFRBQkxFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICB2YXIgVU5RVU9URURfSURFTlQgPSAnW2EtekEtWl9dW2EtekEtWl8wLTkkXSonO1xuICB2YXIgRE9MTEFSX1NUUklORyA9ICdcXFxcJChbYS16QS1aX10/fFthLXpBLVpfXVthLXpBLVpfMC05XSopXFxcXCQnO1xuICB2YXIgTEFCRUwgPSAnPDxcXFxccyonICsgVU5RVU9URURfSURFTlQgKyAnXFxcXHMqPj4nO1xuXG4gIHZhciBTUUxfS1cgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1rZXl3b3Jkcy1hcHBlbmRpeC5odG1sXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvc3FsLWNvbW1hbmRzLmh0bWxcbiAgICAvLyBTUUwgY29tbWFuZHMgKHN0YXJ0aW5nIHdvcmRzKVxuICAgICdBQk9SVCBBTFRFUiBBTkFMWVpFIEJFR0lOIENBTEwgQ0hFQ0tQT0lOVHwxMCBDTE9TRSBDTFVTVEVSIENPTU1FTlQgQ09NTUlUIENPUFkgQ1JFQVRFIERFQUxMT0NBVEUgREVDTEFSRSAnICtcbiAgICAnREVMRVRFIERJU0NBUkQgRE8gRFJPUCBFTkQgRVhFQ1VURSBFWFBMQUlOIEZFVENIIEdSQU5UIElNUE9SVCBJTlNFUlQgTElTVEVOIExPQUQgTE9DSyBNT1ZFIE5PVElGWSAnICtcbiAgICAnUFJFUEFSRSBSRUFTU0lHTnwxMCBSRUZSRVNIIFJFSU5ERVggUkVMRUFTRSBSRVNFVCBSRVZPS0UgUk9MTEJBQ0sgU0FWRVBPSU5UIFNFQ1VSSVRZIFNFTEVDVCBTRVQgU0hPVyAnICtcbiAgICAnU1RBUlQgVFJVTkNBVEUgVU5MSVNURU58MTAgVVBEQVRFIFZBQ1VVTXwxMCBWQUxVRVMgJyArXG4gICAgLy8gU1FMIGNvbW1hbmRzIChvdGhlcnMpXG4gICAgJ0FHR1JFR0FURSBDT0xMQVRJT04gQ09OVkVSU0lPTnwxMCBEQVRBQkFTRSBERUZBVUxUIFBSSVZJTEVHRVMgRE9NQUlOIFRSSUdHRVIgRVhURU5TSU9OIEZPUkVJR04gJyArXG4gICAgJ1dSQVBQRVJ8MTAgVEFCTEUgRlVOQ1RJT04gR1JPVVAgTEFOR1VBR0UgTEFSR0UgT0JKRUNUIE1BVEVSSUFMSVpFRCBWSUVXIE9QRVJBVE9SIENMQVNTICcgK1xuICAgICdGQU1JTFkgUE9MSUNZIFBVQkxJQ0FUSU9OfDEwIFJPTEUgUlVMRSBTQ0hFTUEgU0VRVUVOQ0UgU0VSVkVSIFNUQVRJU1RJQ1MgU1VCU0NSSVBUSU9OIFNZU1RFTSAnICtcbiAgICAnVEFCTEVTUEFDRSBDT05GSUdVUkFUSU9OIERJQ1RJT05BUlkgUEFSU0VSIFRFTVBMQVRFIFRZUEUgVVNFUiBNQVBQSU5HIFBSRVBBUkVEIEFDQ0VTUyAnICtcbiAgICAnTUVUSE9EIENBU1QgQVMgVFJBTlNGT1JNIFRSQU5TQUNUSU9OIE9XTkVEIFRPIElOVE8gU0VTU0lPTiBBVVRIT1JJWkFUSU9OICcgK1xuICAgICdJTkRFWCBQUk9DRURVUkUgQVNTRVJUSU9OICcgK1xuICAgIC8vIGFkZGl0aW9uYWwgcmVzZXJ2ZWQga2V5IHdvcmRzXG4gICAgJ0FMTCBBTkFMWVNFIEFORCBBTlkgQVJSQVkgQVNDIEFTWU1NRVRSSUN8MTAgQk9USCBDQVNFIENIRUNLICcgK1xuICAgICdDT0xMQVRFIENPTFVNTiBDT05DVVJSRU5UTFl8MTAgQ09OU1RSQUlOVCBDUk9TUyAnICtcbiAgICAnREVGRVJSQUJMRSBSQU5HRSAnICtcbiAgICAnREVTQyBESVNUSU5DVCBFTFNFIEVYQ0VQVCBGT1IgRlJFRVpFfDEwIEZST00gRlVMTCBIQVZJTkcgJyArXG4gICAgJ0lMSUtFIElOIElOSVRJQUxMWSBJTk5FUiBJTlRFUlNFQ1QgSVMgSVNOVUxMIEpPSU4gTEFURVJBTCBMRUFESU5HIExJS0UgTElNSVQgJyArXG4gICAgJ05BVFVSQUwgTk9UIE5PVE5VTEwgTlVMTCBPRkZTRVQgT04gT05MWSBPUiBPUkRFUiBPVVRFUiBPVkVSTEFQUyBQTEFDSU5HIFBSSU1BUlkgJyArXG4gICAgJ1JFRkVSRU5DRVMgUkVUVVJOSU5HIFNJTUlMQVIgU09NRSBTWU1NRVRSSUMgVEFCTEVTQU1QTEUgVEhFTiAnICtcbiAgICAnVFJBSUxJTkcgVU5JT04gVU5JUVVFIFVTSU5HIFZBUklBRElDfDEwIFZFUkJPU0UgV0hFTiBXSEVSRSBXSU5ET1cgV0lUSCAnICtcbiAgICAvLyBzb21lIG9mIG5vbi1yZXNlcnZlZCAod2hpY2ggYXJlIHVzZWQgaW4gY2xhdXNlcyBvciBhcyBQTC9wZ1NRTCBrZXl3b3JkKVxuICAgICdCWSBSRVRVUk5TIElOT1VUIE9VVCBTRVRPRnwxMCBJRiBTVFJJQ1QgQ1VSUkVOVCBDT05USU5VRSBPV05FUiBMT0NBVElPTiBPVkVSIFBBUlRJVElPTiBXSVRISU4gJyArXG4gICAgJ0JFVFdFRU4gRVNDQVBFIEVYVEVSTkFMIElOVk9LRVIgREVGSU5FUiBXT1JLIFJFTkFNRSBWRVJTSU9OIENPTk5FQ1RJT04gQ09OTkVDVCAnICtcbiAgICAnVEFCTEVTIFRFTVAgVEVNUE9SQVJZIEZVTkNUSU9OUyBTRVFVRU5DRVMgVFlQRVMgU0NIRU1BUyBPUFRJT04gQ0FTQ0FERSBSRVNUUklDVCBBREQgQURNSU4gJyArXG4gICAgJ0VYSVNUUyBWQUxJRCBWQUxJREFURSBFTkFCTEUgRElTQUJMRSBSRVBMSUNBfDEwIEFMV0FZUyBQQVNTSU5HIENPTFVNTlMgUEFUSCAnICtcbiAgICAnUkVGIFZBTFVFIE9WRVJSSURJTkcgSU1NVVRBQkxFIFNUQUJMRSBWT0xBVElMRSBCRUZPUkUgQUZURVIgRUFDSCBST1cgUFJPQ0VEVVJBTCAnICtcbiAgICAnUk9VVElORSBOTyBIQU5ETEVSIFZBTElEQVRPUiBPUFRJT05TIFNUT1JBR0UgT0lEU3wxMCBXSVRIT1VUIElOSEVSSVQgREVQRU5EUyBDQUxMRUQgJyArXG4gICAgJ0lOUFVUIExFQUtQUk9PRnwxMCBDT1NUIFJPV1MgTk9XQUlUIFNFQVJDSCBVTlRJTCBFTkNSWVBURUR8MTAgUEFTU1dPUkQgQ09ORkxJQ1R8MTAgJyArXG4gICAgJ0lOU1RFQUQgSU5IRVJJVFMgQ0hBUkFDVEVSSVNUSUNTIFdSSVRFIENVUlNPUiBBTFNPIFNUQVRFTUVOVCBTSEFSRSBFWENMVVNJVkUgSU5MSU5FICcgK1xuICAgICdJU09MQVRJT04gUkVQRUFUQUJMRSBSRUFEIENPTU1JVFRFRCBTRVJJQUxJWkFCTEUgVU5DT01NSVRURUQgTE9DQUwgR0xPQkFMIFNRTCBQUk9DRURVUkVTICcgK1xuICAgICdSRUNVUlNJVkUgU05BUFNIT1QgUk9MTFVQIENVQkUgVFJVU1RFRHwxMCBJTkNMVURFIEZPTExPV0lORyBQUkVDRURJTkcgVU5CT1VOREVEIFJBTkdFIEdST1VQUyAnICtcbiAgICAnVU5FTkNSWVBURUR8MTAgU1lTSUQgRk9STUFUIERFTElNSVRFUiBIRUFERVIgUVVPVEUgRU5DT0RJTkcgRklMVEVSIE9GRiAnICtcbiAgICAvLyBzb21lIHBhcmFtZXRlcnMgb2YgVkFDVVVNL0FOQUxZWkUvRVhQTEFJTlxuICAgICdGT1JDRV9RVU9URSBGT1JDRV9OT1RfTlVMTCBGT1JDRV9OVUxMIENPU1RTIEJVRkZFUlMgVElNSU5HIFNVTU1BUlkgRElTQUJMRV9QQUdFX1NLSVBQSU5HICcgK1xuICAgIC8vXG4gICAgJ1JFU1RBUlQgQ1lDTEUgR0VORVJBVEVEIElERU5USVRZIERFRkVSUkVEIElNTUVESUFURSBMRVZFTCBMT0dHRUQgVU5MT0dHRUQgJyArXG4gICAgJ09GIE5PVEhJTkcgTk9ORSBFWENMVURFIEFUVFJJQlVURSAnICtcbiAgICAvLyBmcm9tIEdSQU5UIChub3Qga2V5d29yZHMgYWN0dWFsbHkpXG4gICAgJ1VTQUdFIFJPVVRJTkVTICcgK1xuICAgIC8vIGFjdHVhbGx5IGxpdGVyYWxzLCBidXQgbG9vayBiZXR0ZXIgdGhpcyB3YXkgKGR1ZSB0byBJUyBUUlVFLCBJUyBGQUxTRSwgSVNOVUxMIGV0YylcbiAgICAnVFJVRSBGQUxTRSBOQU4gSU5GSU5JVFkgJztcblxuICB2YXIgUk9MRV9BVFRSUyA9IC8vIG9ubHkgdGhvc2Ugbm90IGluIGtleXdyb2RzIGFscmVhZHlcbiAgICAnU1VQRVJVU0VSIE5PU1VQRVJVU0VSIENSRUFURURCIE5PQ1JFQVRFREIgQ1JFQVRFUk9MRSBOT0NSRUFURVJPTEUgSU5IRVJJVCBOT0lOSEVSSVQgJyArXG4gICAgJ0xPR0lOIE5PTE9HSU4gUkVQTElDQVRJT04gTk9SRVBMSUNBVElPTiBCWVBBU1NSTFMgTk9CWVBBU1NSTFMgJztcblxuICB2YXIgUExQR1NRTF9LVyA9XG4gICAgJ0FMSUFTIEJFR0lOIENPTlNUQU5UIERFQ0xBUkUgRU5EIEVYQ0VQVElPTiBSRVRVUk4gUEVSRk9STXwxMCBSQUlTRSBHRVQgRElBR05PU1RJQ1MgJyArXG4gICAgJ1NUQUNLRUR8MTAgRk9SRUFDSCBMT09QIEVMU0lGIEVYSVQgV0hJTEUgUkVWRVJTRSBTTElDRSBERUJVRyBMT0cgSU5GTyBOT1RJQ0UgV0FSTklORyBBU1NFUlQgJyArXG4gICAgJ09QRU4gJztcblxuICB2YXIgVFlQRVMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2RhdGF0eXBlLmh0bWxcbiAgICAnQklHSU5UIElOVDggQklHU0VSSUFMIFNFUklBTDggQklUIFZBUllJTkcgVkFSQklUIEJPT0xFQU4gQk9PTCBCT1ggQllURUEgQ0hBUkFDVEVSIENIQVIgVkFSQ0hBUiAnICtcbiAgICAnQ0lEUiBDSVJDTEUgREFURSBET1VCTEUgUFJFQ0lTSU9OIEZMT0FUOCBGTE9BVCBJTkVUIElOVEVHRVIgSU5UIElOVDQgSU5URVJWQUwgSlNPTiBKU09OQiBMSU5FIExTRUd8MTAgJyArXG4gICAgJ01BQ0FERFIgTUFDQUREUjggTU9ORVkgTlVNRVJJQyBERUMgREVDSU1BTCBQQVRIIFBPSU5UIFBPTFlHT04gUkVBTCBGTE9BVDQgU01BTExJTlQgSU5UMiAnICtcbiAgICAnU01BTExTRVJJQUx8MTAgU0VSSUFMMnwxMCBTRVJJQUx8MTAgU0VSSUFMNHwxMCBURVhUIFRJTUUgWk9ORSBUSU1FVFp8MTAgVElNRVNUQU1QIFRJTUVTVEFNUFRafDEwIFRTUVVFUll8MTAgVFNWRUNUT1J8MTAgJyArXG4gICAgJ1RYSURfU05BUFNIT1R8MTAgVVVJRCBYTUwgTkFUSU9OQUwgTkNIQVIgJyArXG4gICAgJ0lOVDRSQU5HRXwxMCBJTlQ4UkFOR0V8MTAgTlVNUkFOR0V8MTAgVFNSQU5HRXwxMCBUU1RaUkFOR0V8MTAgREFURVJBTkdFfDEwICcgK1xuICAgIC8vIHBzZXVkb3R5cGVzXG4gICAgJ0FOWUVMRU1FTlQgQU5ZQVJSQVkgQU5ZTk9OQVJSQVkgQU5ZRU5VTSBBTllSQU5HRSBDU1RSSU5HIElOVEVSTkFMICcgK1xuICAgICdSRUNPUkQgUEdfRERMX0NPTU1BTkQgVk9JRCBVTktOT1dOIE9QQVFVRSBSRUZDVVJTT1IgJyArXG4gICAgLy8gc3BlYy4gdHlwZVxuICAgICdOQU1FICcgK1xuICAgIC8vIE9JRC10eXBlc1xuICAgICdPSUQgUkVHUFJPQ3wxMCBSRUdQUk9DRURVUkV8MTAgUkVHT1BFUnwxMCBSRUdPUEVSQVRPUnwxMCBSRUdDTEFTU3wxMCBSRUdUWVBFfDEwIFJFR1JPTEV8MTAgJyArXG4gICAgJ1JFR05BTUVTUEFDRXwxMCBSRUdDT05GSUd8MTAgUkVHRElDVElPTkFSWXwxMCAnOy8vICtcbiAgICAvLyBzb21lIHR5cGVzIGZyb20gc3RhbmRhcmQgZXh0ZW5zaW9uc1xuICAgICdIU1RPUkV8MTAgTE8gTFRSRUV8MTAgJztcblxuICB2YXIgVFlQRVNfUkUgPVxuICAgIFRZUEVTLnRyaW0oKVxuICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgIC5tYXAoIGZ1bmN0aW9uKHZhbCkgeyByZXR1cm4gdmFsLnNwbGl0KCd8JylbMF07IH0gKVxuICAgICAgICAgLmpvaW4oJ3wnKTtcblxuICB2YXIgU1FMX0JJID1cbiAgICAnQ1VSUkVOVF9USU1FIENVUlJFTlRfVElNRVNUQU1QIENVUlJFTlRfVVNFUiBDVVJSRU5UX0NBVEFMT0d8MTAgQ1VSUkVOVF9EQVRFIExPQ0FMVElNRSBMT0NBTFRJTUVTVEFNUCAnICtcbiAgICAnQ1VSUkVOVF9ST0xFfDEwIENVUlJFTlRfU0NIRU1BfDEwIFNFU1NJT05fVVNFUiBQVUJMSUMgJztcblxuICB2YXIgUExQR1NRTF9CSSA9XG4gICAgJ0ZPVU5EIE5FVyBPTEQgVEdfTkFNRXwxMCBUR19XSEVOfDEwIFRHX0xFVkVMfDEwIFRHX09QfDEwIFRHX1JFTElEfDEwIFRHX1JFTE5BTUV8MTAgJyArXG4gICAgJ1RHX1RBQkxFX05BTUV8MTAgVEdfVEFCTEVfU0NIRU1BfDEwIFRHX05BUkdTfDEwIFRHX0FSR1Z8MTAgVEdfRVZFTlR8MTAgVEdfVEFHfDEwICcgK1xuICAgIC8vIGdldCBkaWFnbm9zdGljc1xuICAgICdST1dfQ09VTlQgUkVTVUxUX09JRHwxMCBQR19DT05URVhUfDEwIFJFVFVSTkVEX1NRTFNUQVRFIENPTFVNTl9OQU1FIENPTlNUUkFJTlRfTkFNRSAnICtcbiAgICAnUEdfREFUQVRZUEVfTkFNRXwxMCBNRVNTQUdFX1RFWFQgVEFCTEVfTkFNRSBTQ0hFTUFfTkFNRSBQR19FWENFUFRJT05fREVUQUlMfDEwICcgK1xuICAgICdQR19FWENFUFRJT05fSElOVHwxMCBQR19FWENFUFRJT05fQ09OVEVYVHwxMCAnO1xuXG4gIHZhciBQTFBHU1FMX0VYQ0VQVElPTlMgPVxuICAgIC8vIGV4Y2VwdGlvbnMgaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L3N0YXRpYy9lcnJjb2Rlcy1hcHBlbmRpeC5odG1sXG4gICAgJ1NRTFNUQVRFIFNRTEVSUk18MTAgJyArXG4gICAgJ1NVQ0NFU1NGVUxfQ09NUExFVElPTiBXQVJOSU5HIERZTkFNSUNfUkVTVUxUX1NFVFNfUkVUVVJORUQgSU1QTElDSVRfWkVST19CSVRfUEFERElORyAnICtcbiAgICAnTlVMTF9WQUxVRV9FTElNSU5BVEVEX0lOX1NFVF9GVU5DVElPTiBQUklWSUxFR0VfTk9UX0dSQU5URUQgUFJJVklMRUdFX05PVF9SRVZPS0VEICcgK1xuICAgICdTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OIERFUFJFQ0FURURfRkVBVFVSRSBOT19EQVRBIE5PX0FERElUSU9OQUxfRFlOQU1JQ19SRVNVTFRfU0VUU19SRVRVUk5FRCAnICtcbiAgICAnU1FMX1NUQVRFTUVOVF9OT1RfWUVUX0NPTVBMRVRFIENPTk5FQ1RJT05fRVhDRVBUSU9OIENPTk5FQ1RJT05fRE9FU19OT1RfRVhJU1QgQ09OTkVDVElPTl9GQUlMVVJFICcgK1xuICAgICdTUUxDTElFTlRfVU5BQkxFX1RPX0VTVEFCTElTSF9TUUxDT05ORUNUSU9OIFNRTFNFUlZFUl9SRUpFQ1RFRF9FU1RBQkxJU0hNRU5UX09GX1NRTENPTk5FQ1RJT04gJyArXG4gICAgJ1RSQU5TQUNUSU9OX1JFU09MVVRJT05fVU5LTk9XTiBQUk9UT0NPTF9WSU9MQVRJT04gVFJJR0dFUkVEX0FDVElPTl9FWENFUFRJT04gRkVBVFVSRV9OT1RfU1VQUE9SVEVEICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX0lOSVRJQVRJT04gTE9DQVRPUl9FWENFUFRJT04gSU5WQUxJRF9MT0NBVE9SX1NQRUNJRklDQVRJT04gSU5WQUxJRF9HUkFOVE9SICcgK1xuICAgICdJTlZBTElEX0dSQU5UX09QRVJBVElPTiBJTlZBTElEX1JPTEVfU1BFQ0lGSUNBVElPTiBESUFHTk9TVElDU19FWENFUFRJT04gJyArXG4gICAgJ1NUQUNLRURfRElBR05PU1RJQ1NfQUNDRVNTRURfV0lUSE9VVF9BQ1RJVkVfSEFORExFUiBDQVNFX05PVF9GT1VORCBDQVJESU5BTElUWV9WSU9MQVRJT04gJyArXG4gICAgJ0RBVEFfRVhDRVBUSU9OIEFSUkFZX1NVQlNDUklQVF9FUlJPUiBDSEFSQUNURVJfTk9UX0lOX1JFUEVSVE9JUkUgREFURVRJTUVfRklFTERfT1ZFUkZMT1cgJyArXG4gICAgJ0RJVklTSU9OX0JZX1pFUk8gRVJST1JfSU5fQVNTSUdOTUVOVCBFU0NBUEVfQ0hBUkFDVEVSX0NPTkZMSUNUIElORElDQVRPUl9PVkVSRkxPVyAnICtcbiAgICAnSU5URVJWQUxfRklFTERfT1ZFUkZMT1cgSU5WQUxJRF9BUkdVTUVOVF9GT1JfTE9HQVJJVEhNIElOVkFMSURfQVJHVU1FTlRfRk9SX05USUxFX0ZVTkNUSU9OICcgK1xuICAgICdJTlZBTElEX0FSR1VNRU5UX0ZPUl9OVEhfVkFMVUVfRlVOQ1RJT04gSU5WQUxJRF9BUkdVTUVOVF9GT1JfUE9XRVJfRlVOQ1RJT04gJyArXG4gICAgJ0lOVkFMSURfQVJHVU1FTlRfRk9SX1dJRFRIX0JVQ0tFVF9GVU5DVElPTiBJTlZBTElEX0NIQVJBQ1RFUl9WQUxVRV9GT1JfQ0FTVCAnICtcbiAgICAnSU5WQUxJRF9EQVRFVElNRV9GT1JNQVQgSU5WQUxJRF9FU0NBUEVfQ0hBUkFDVEVSIElOVkFMSURfRVNDQVBFX09DVEVUIElOVkFMSURfRVNDQVBFX1NFUVVFTkNFICcgK1xuICAgICdOT05TVEFOREFSRF9VU0VfT0ZfRVNDQVBFX0NIQVJBQ1RFUiBJTlZBTElEX0lORElDQVRPUl9QQVJBTUVURVJfVkFMVUUgSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUgJyArXG4gICAgJ0lOVkFMSURfUkVHVUxBUl9FWFBSRVNTSU9OIElOVkFMSURfUk9XX0NPVU5UX0lOX0xJTUlUX0NMQVVTRSAnICtcbiAgICAnSU5WQUxJRF9ST1dfQ09VTlRfSU5fUkVTVUxUX09GRlNFVF9DTEFVU0UgSU5WQUxJRF9UQUJMRVNBTVBMRV9BUkdVTUVOVCBJTlZBTElEX1RBQkxFU0FNUExFX1JFUEVBVCAnICtcbiAgICAnSU5WQUxJRF9USU1FX1pPTkVfRElTUExBQ0VNRU5UX1ZBTFVFIElOVkFMSURfVVNFX09GX0VTQ0FQRV9DSEFSQUNURVIgTU9TVF9TUEVDSUZJQ19UWVBFX01JU01BVENIICcgK1xuICAgICdOVUxMX1ZBTFVFX05PVF9BTExPV0VEIE5VTExfVkFMVUVfTk9fSU5ESUNBVE9SX1BBUkFNRVRFUiBOVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSAnICtcbiAgICAnU0VRVUVOQ0VfR0VORVJBVE9SX0xJTUlUX0VYQ0VFREVEIFNUUklOR19EQVRBX0xFTkdUSF9NSVNNQVRDSCBTVFJJTkdfREFUQV9SSUdIVF9UUlVOQ0FUSU9OICcgK1xuICAgICdTVUJTVFJJTkdfRVJST1IgVFJJTV9FUlJPUiBVTlRFUk1JTkFURURfQ19TVFJJTkcgWkVST19MRU5HVEhfQ0hBUkFDVEVSX1NUUklORyAnICtcbiAgICAnRkxPQVRJTkdfUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiBJTlZBTElEX0JJTkFSWV9SRVBSRVNFTlRBVElPTiAnICtcbiAgICAnQkFEX0NPUFlfRklMRV9GT1JNQVQgVU5UUkFOU0xBVEFCTEVfQ0hBUkFDVEVSIE5PVF9BTl9YTUxfRE9DVU1FTlQgSU5WQUxJRF9YTUxfRE9DVU1FTlQgJyArXG4gICAgJ0lOVkFMSURfWE1MX0NPTlRFTlQgSU5WQUxJRF9YTUxfQ09NTUVOVCBJTlZBTElEX1hNTF9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OICcgK1xuICAgICdJTlRFR1JJVFlfQ09OU1RSQUlOVF9WSU9MQVRJT04gUkVTVFJJQ1RfVklPTEFUSU9OIE5PVF9OVUxMX1ZJT0xBVElPTiBGT1JFSUdOX0tFWV9WSU9MQVRJT04gJyArXG4gICAgJ1VOSVFVRV9WSU9MQVRJT04gQ0hFQ0tfVklPTEFUSU9OIEVYQ0xVU0lPTl9WSU9MQVRJT04gSU5WQUxJRF9DVVJTT1JfU1RBVEUgJyArXG4gICAgJ0lOVkFMSURfVFJBTlNBQ1RJT05fU1RBVEUgQUNUSVZFX1NRTF9UUkFOU0FDVElPTiBCUkFOQ0hfVFJBTlNBQ1RJT05fQUxSRUFEWV9BQ1RJVkUgJyArXG4gICAgJ0hFTERfQ1VSU09SX1JFUVVJUkVTX1NBTUVfSVNPTEFUSU9OX0xFVkVMIElOQVBQUk9QUklBVEVfQUNDRVNTX01PREVfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5BUFBST1BSSUFURV9JU09MQVRJT05fTEVWRUxfRk9SX0JSQU5DSF9UUkFOU0FDVElPTiAnICtcbiAgICAnTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTl9GT1JfQlJBTkNIX1RSQU5TQUNUSU9OIFJFQURfT05MWV9TUUxfVFJBTlNBQ1RJT04gJyArXG4gICAgJ1NDSEVNQV9BTkRfREFUQV9TVEFURU1FTlRfTUlYSU5HX05PVF9TVVBQT1JURUQgTk9fQUNUSVZFX1NRTF9UUkFOU0FDVElPTiAnICtcbiAgICAnSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiBJRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCBJTlZBTElEX1NRTF9TVEFURU1FTlRfTkFNRSAnICtcbiAgICAnVFJJR0dFUkVEX0RBVEFfQ0hBTkdFX1ZJT0xBVElPTiBJTlZBTElEX0FVVEhPUklaQVRJT05fU1BFQ0lGSUNBVElPTiBJTlZBTElEX1BBU1NXT1JEICcgK1xuICAgICdERVBFTkRFTlRfUFJJVklMRUdFX0RFU0NSSVBUT1JTX1NUSUxMX0VYSVNUIERFUEVOREVOVF9PQkpFQ1RTX1NUSUxMX0VYSVNUICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX1RFUk1JTkFUSU9OIFNRTF9ST1VUSU5FX0VYQ0VQVElPTiBGVU5DVElPTl9FWEVDVVRFRF9OT19SRVRVUk5fU1RBVEVNRU5UICcgK1xuICAgICdNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCBQUk9ISUJJVEVEX1NRTF9TVEFURU1FTlRfQVRURU1QVEVEICcgK1xuICAgICdSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgSU5WQUxJRF9DVVJTT1JfTkFNRSBFWFRFUk5BTF9ST1VUSU5FX0VYQ0VQVElPTiAnICtcbiAgICAnQ09OVEFJTklOR19TUUxfTk9UX1BFUk1JVFRFRCBNT0RJRllJTkdfU1FMX0RBVEFfTk9UX1BFUk1JVFRFRCAnICtcbiAgICAnUFJPSElCSVRFRF9TUUxfU1RBVEVNRU5UX0FUVEVNUFRFRCBSRUFESU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgJyArXG4gICAgJ0VYVEVSTkFMX1JPVVRJTkVfSU5WT0NBVElPTl9FWENFUFRJT04gSU5WQUxJRF9TUUxTVEFURV9SRVRVUk5FRCBOVUxMX1ZBTFVFX05PVF9BTExPV0VEICcgK1xuICAgICdUUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEIFNSRl9QUk9UT0NPTF9WSU9MQVRFRCBFVkVOVF9UUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEICcgK1xuICAgICdTQVZFUE9JTlRfRVhDRVBUSU9OIElOVkFMSURfU0FWRVBPSU5UX1NQRUNJRklDQVRJT04gSU5WQUxJRF9DQVRBTE9HX05BTUUgJyArXG4gICAgJ0lOVkFMSURfU0NIRU1BX05BTUUgVFJBTlNBQ1RJT05fUk9MTEJBQ0sgVFJBTlNBQ1RJT05fSU5URUdSSVRZX0NPTlNUUkFJTlRfVklPTEFUSU9OICcgK1xuICAgICdTRVJJQUxJWkFUSU9OX0ZBSUxVUkUgU1RBVEVNRU5UX0NPTVBMRVRJT05fVU5LTk9XTiBERUFETE9DS19ERVRFQ1RFRCAnICtcbiAgICAnU1lOVEFYX0VSUk9SX09SX0FDQ0VTU19SVUxFX1ZJT0xBVElPTiBTWU5UQVhfRVJST1IgSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSBDQU5OT1RfQ09FUkNFICcgK1xuICAgICdHUk9VUElOR19FUlJPUiBXSU5ET1dJTkdfRVJST1IgSU5WQUxJRF9SRUNVUlNJT04gSU5WQUxJRF9GT1JFSUdOX0tFWSBJTlZBTElEX05BTUUgJyArXG4gICAgJ05BTUVfVE9PX0xPTkcgUkVTRVJWRURfTkFNRSBEQVRBVFlQRV9NSVNNQVRDSCBJTkRFVEVSTUlOQVRFX0RBVEFUWVBFIENPTExBVElPTl9NSVNNQVRDSCAnICtcbiAgICAnSU5ERVRFUk1JTkFURV9DT0xMQVRJT04gV1JPTkdfT0JKRUNUX1RZUEUgR0VORVJBVEVEX0FMV0FZUyBVTkRFRklORURfQ09MVU1OICcgK1xuICAgICdVTkRFRklORURfRlVOQ1RJT04gVU5ERUZJTkVEX1RBQkxFIFVOREVGSU5FRF9QQVJBTUVURVIgVU5ERUZJTkVEX09CSkVDVCAnICtcbiAgICAnRFVQTElDQVRFX0NPTFVNTiBEVVBMSUNBVEVfQ1VSU09SIERVUExJQ0FURV9EQVRBQkFTRSBEVVBMSUNBVEVfRlVOQ1RJT04gJyArXG4gICAgJ0RVUExJQ0FURV9QUkVQQVJFRF9TVEFURU1FTlQgRFVQTElDQVRFX1NDSEVNQSBEVVBMSUNBVEVfVEFCTEUgRFVQTElDQVRFX0FMSUFTICcgK1xuICAgICdEVVBMSUNBVEVfT0JKRUNUIEFNQklHVU9VU19DT0xVTU4gQU1CSUdVT1VTX0ZVTkNUSU9OIEFNQklHVU9VU19QQVJBTUVURVIgQU1CSUdVT1VTX0FMSUFTICcgK1xuICAgICdJTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UgSU5WQUxJRF9DT0xVTU5fREVGSU5JVElPTiBJTlZBTElEX0NVUlNPUl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX0RBVEFCQVNFX0RFRklOSVRJT04gSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX1BSRVBBUkVEX1NUQVRFTUVOVF9ERUZJTklUSU9OIElOVkFMSURfU0NIRU1BX0RFRklOSVRJT04gSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OICcgK1xuICAgICdJTlZBTElEX09CSkVDVF9ERUZJTklUSU9OIFdJVEhfQ0hFQ0tfT1BUSU9OX1ZJT0xBVElPTiBJTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTIERJU0tfRlVMTCAnICtcbiAgICAnT1VUX09GX01FTU9SWSBUT09fTUFOWV9DT05ORUNUSU9OUyBDT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEIFBST0dSQU1fTElNSVRfRVhDRUVERUQgJyArXG4gICAgJ1NUQVRFTUVOVF9UT09fQ09NUExFWCBUT09fTUFOWV9DT0xVTU5TIFRPT19NQU5ZX0FSR1VNRU5UUyBPQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSAnICtcbiAgICAnT0JKRUNUX0lOX1VTRSBDQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFNIExPQ0tfTk9UX0FWQUlMQUJMRSBPUEVSQVRPUl9JTlRFUlZFTlRJT04gJyArXG4gICAgJ1FVRVJZX0NBTkNFTEVEIEFETUlOX1NIVVRET1dOIENSQVNIX1NIVVRET1dOIENBTk5PVF9DT05ORUNUX05PVyBEQVRBQkFTRV9EUk9QUEVEICcgK1xuICAgICdTWVNURU1fRVJST1IgSU9fRVJST1IgVU5ERUZJTkVEX0ZJTEUgRFVQTElDQVRFX0ZJTEUgU05BUFNIT1RfVE9PX09MRCBDT05GSUdfRklMRV9FUlJPUiAnICtcbiAgICAnTE9DS19GSUxFX0VYSVNUUyBGRFdfRVJST1IgRkRXX0NPTFVNTl9OQU1FX05PVF9GT1VORCBGRFdfRFlOQU1JQ19QQVJBTUVURVJfVkFMVUVfTkVFREVEICcgK1xuICAgICdGRFdfRlVOQ1RJT05fU0VRVUVOQ0VfRVJST1IgRkRXX0lOQ09OU0lTVEVOVF9ERVNDUklQVE9SX0lORk9STUFUSU9OICcgK1xuICAgICdGRFdfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUgRkRXX0lOVkFMSURfQ09MVU1OX05BTUUgRkRXX0lOVkFMSURfQ09MVU1OX05VTUJFUiAnICtcbiAgICAnRkRXX0lOVkFMSURfREFUQV9UWVBFIEZEV19JTlZBTElEX0RBVEFfVFlQRV9ERVNDUklQVE9SUyAnICtcbiAgICAnRkRXX0lOVkFMSURfREVTQ1JJUFRPUl9GSUVMRF9JREVOVElGSUVSIEZEV19JTlZBTElEX0hBTkRMRSBGRFdfSU5WQUxJRF9PUFRJT05fSU5ERVggJyArXG4gICAgJ0ZEV19JTlZBTElEX09QVElPTl9OQU1FIEZEV19JTlZBTElEX1NUUklOR19MRU5HVEhfT1JfQlVGRkVSX0xFTkdUSCAnICtcbiAgICAnRkRXX0lOVkFMSURfU1RSSU5HX0ZPUk1BVCBGRFdfSU5WQUxJRF9VU0VfT0ZfTlVMTF9QT0lOVEVSIEZEV19UT09fTUFOWV9IQU5ETEVTICcgK1xuICAgICdGRFdfT1VUX09GX01FTU9SWSBGRFdfTk9fU0NIRU1BUyBGRFdfT1BUSU9OX05BTUVfTk9UX0ZPVU5EIEZEV19SRVBMWV9IQU5ETEUgJyArXG4gICAgJ0ZEV19TQ0hFTUFfTk9UX0ZPVU5EIEZEV19UQUJMRV9OT1RfRk9VTkQgRkRXX1VOQUJMRV9UT19DUkVBVEVfRVhFQ1VUSU9OICcgK1xuICAgICdGRFdfVU5BQkxFX1RPX0NSRUFURV9SRVBMWSBGRFdfVU5BQkxFX1RPX0VTVEFCTElTSF9DT05ORUNUSU9OIFBMUEdTUUxfRVJST1IgJyArXG4gICAgJ1JBSVNFX0VYQ0VQVElPTiBOT19EQVRBX0ZPVU5EIFRPT19NQU5ZX1JPV1MgQVNTRVJUX0ZBSUxVUkUgSU5URVJOQUxfRVJST1IgREFUQV9DT1JSVVBURUQgJyArXG4gICAgJ0lOREVYX0NPUlJVUFRFRCAnO1xuXG4gIHZhciBGVU5DVElPTlMgPVxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1hZ2dyZWdhdGUuaHRtbFxuICAgICdBUlJBWV9BR0cgQVZHIEJJVF9BTkQgQklUX09SIEJPT0xfQU5EIEJPT0xfT1IgQ09VTlQgRVZFUlkgSlNPTl9BR0cgSlNPTkJfQUdHIEpTT05fT0JKRUNUX0FHRyAnICtcbiAgICAnSlNPTkJfT0JKRUNUX0FHRyBNQVggTUlOIE1PREUgU1RSSU5HX0FHRyBTVU0gWE1MQUdHICcgK1xuICAgICdDT1JSIENPVkFSX1BPUCBDT1ZBUl9TQU1QIFJFR1JfQVZHWCBSRUdSX0FWR1kgUkVHUl9DT1VOVCBSRUdSX0lOVEVSQ0VQVCBSRUdSX1IyIFJFR1JfU0xPUEUgJyArXG4gICAgJ1JFR1JfU1hYIFJFR1JfU1hZIFJFR1JfU1lZIFNURERFViBTVERERVZfUE9QIFNURERFVl9TQU1QIFZBUklBTkNFIFZBUl9QT1AgVkFSX1NBTVAgJyArXG4gICAgJ1BFUkNFTlRJTEVfQ09OVCBQRVJDRU5USUxFX0RJU0MgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXdpbmRvdy5odG1sXG4gICAgJ1JPV19OVU1CRVIgUkFOSyBERU5TRV9SQU5LIFBFUkNFTlRfUkFOSyBDVU1FX0RJU1QgTlRJTEUgTEFHIExFQUQgRklSU1RfVkFMVUUgTEFTVF9WQUxVRSBOVEhfVkFMVUUgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWNvbXBhcmlzb24uaHRtbFxuICAgICdOVU1fTk9OTlVMTFMgTlVNX05VTExTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1tYXRoLmh0bWxcbiAgICAnQUJTIENCUlQgQ0VJTCBDRUlMSU5HIERFR1JFRVMgRElWIEVYUCBGTE9PUiBMTiBMT0cgTU9EIFBJIFBPV0VSIFJBRElBTlMgUk9VTkQgU0NBTEUgU0lHTiBTUVJUICcgK1xuICAgICdUUlVOQyBXSURUSF9CVUNLRVQgJyArXG4gICAgJ1JBTkRPTSBTRVRTRUVEICcgK1xuICAgICdBQ09TIEFDT1NEIEFTSU4gQVNJTkQgQVRBTiBBVEFORCBBVEFOMiBBVEFOMkQgQ09TIENPU0QgQ09UIENPVEQgU0lOIFNJTkQgVEFOIFRBTkQgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXN0cmluZy5odG1sXG4gICAgJ0JJVF9MRU5HVEggQ0hBUl9MRU5HVEggQ0hBUkFDVEVSX0xFTkdUSCBMT1dFUiBPQ1RFVF9MRU5HVEggT1ZFUkxBWSBQT1NJVElPTiBTVUJTVFJJTkcgVFJFQVQgVFJJTSBVUFBFUiAnICtcbiAgICAnQVNDSUkgQlRSSU0gQ0hSIENPTkNBVCBDT05DQVRfV1MgQ09OVkVSVCBDT05WRVJUX0ZST00gQ09OVkVSVF9UTyBERUNPREUgRU5DT0RFIElOSVRDQVAnICtcbiAgICAnTEVGVCBMRU5HVEggTFBBRCBMVFJJTSBNRDUgUEFSU0VfSURFTlQgUEdfQ0xJRU5UX0VOQ09ESU5HIFFVT1RFX0lERU5UfDEwIFFVT1RFX0xJVEVSQUx8MTAgJyArXG4gICAgJ1FVT1RFX05VTExBQkxFfDEwIFJFR0VYUF9NQVRDSCBSRUdFWFBfTUFUQ0hFUyBSRUdFWFBfUkVQTEFDRSBSRUdFWFBfU1BMSVRfVE9fQVJSQVkgJyArXG4gICAgJ1JFR0VYUF9TUExJVF9UT19UQUJMRSBSRVBFQVQgUkVQTEFDRSBSRVZFUlNFIFJJR0hUIFJQQUQgUlRSSU0gU1BMSVRfUEFSVCBTVFJQT1MgU1VCU1RSICcgK1xuICAgICdUT19BU0NJSSBUT19IRVggVFJBTlNMQVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1iaW5hcnlzdHJpbmcuaHRtbFxuICAgICdPQ1RFVF9MRU5HVEggR0VUX0JJVCBHRVRfQllURSBTRVRfQklUIFNFVF9CWVRFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1mb3JtYXR0aW5nLmh0bWxcbiAgICAnVE9fQ0hBUiBUT19EQVRFIFRPX05VTUJFUiBUT19USU1FU1RBTVAgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWRhdGV0aW1lLmh0bWxcbiAgICAnQUdFIENMT0NLX1RJTUVTVEFNUHwxMCBEQVRFX1BBUlQgREFURV9UUlVOQyBJU0ZJTklURSBKVVNUSUZZX0RBWVMgSlVTVElGWV9IT1VSUyBKVVNUSUZZX0lOVEVSVkFMICcgK1xuICAgICdNQUtFX0RBVEUgTUFLRV9JTlRFUlZBTHwxMCBNQUtFX1RJTUUgTUFLRV9USU1FU1RBTVB8MTAgTUFLRV9USU1FU1RBTVBUWnwxMCBOT1cgU1RBVEVNRU5UX1RJTUVTVEFNUHwxMCAnICtcbiAgICAnVElNRU9GREFZIFRSQU5TQUNUSU9OX1RJTUVTVEFNUHwxMCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtZW51bS5odG1sXG4gICAgJ0VOVU1fRklSU1QgRU5VTV9MQVNUIEVOVU1fUkFOR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWdlb21ldHJ5Lmh0bWxcbiAgICAnQVJFQSBDRU5URVIgRElBTUVURVIgSEVJR0hUIElTQ0xPU0VEIElTT1BFTiBOUE9JTlRTIFBDTE9TRSBQT1BFTiBSQURJVVMgV0lEVEggJyArXG4gICAgJ0JPWCBCT1VORF9CT1ggQ0lSQ0xFIExJTkUgTFNFRyBQQVRIIFBPTFlHT04gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLW5ldC5odG1sXG4gICAgJ0FCQlJFViBCUk9BRENBU1QgSE9TVCBIT1NUTUFTSyBNQVNLTEVOIE5FVE1BU0sgTkVUV09SSyBTRVRfTUFTS0xFTiBURVhUIElORVRfU0FNRV9GQU1JTFknICtcbiAgICAnSU5FVF9NRVJHRSBNQUNBRERSOF9TRVQ3QklUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy10ZXh0c2VhcmNoLmh0bWxcbiAgICAnQVJSQVlfVE9fVFNWRUNUT1IgR0VUX0NVUlJFTlRfVFNfQ09ORklHIE5VTU5PREUgUExBSU5UT19UU1FVRVJZIFBIUkFTRVRPX1RTUVVFUlkgV0VCU0VBUkNIX1RPX1RTUVVFUlkgJyArXG4gICAgJ1FVRVJZVFJFRSBTRVRXRUlHSFQgU1RSSVAgVE9fVFNRVUVSWSBUT19UU1ZFQ1RPUiBKU09OX1RPX1RTVkVDVE9SIEpTT05CX1RPX1RTVkVDVE9SIFRTX0RFTEVURSAnICtcbiAgICAnVFNfRklMVEVSIFRTX0hFQURMSU5FIFRTX1JBTksgVFNfUkFOS19DRCBUU19SRVdSSVRFIFRTUVVFUllfUEhSQVNFIFRTVkVDVE9SX1RPX0FSUkFZICcgK1xuICAgICdUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUiBUU1ZFQ1RPUl9VUERBVEVfVFJJR0dFUl9DT0xVTU4gJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXhtbC5odG1sXG4gICAgJ1hNTENPTU1FTlQgWE1MQ09OQ0FUIFhNTEVMRU1FTlQgWE1MRk9SRVNUIFhNTFBJIFhNTFJPT1QgJyArXG4gICAgJ1hNTEVYSVNUUyBYTUxfSVNfV0VMTF9GT1JNRUQgWE1MX0lTX1dFTExfRk9STUVEX0RPQ1VNRU5UIFhNTF9JU19XRUxMX0ZPUk1FRF9DT05URU5UICcgK1xuICAgICdYUEFUSCBYUEFUSF9FWElTVFMgWE1MVEFCTEUgWE1MTkFNRVNQQUNFUyAnICtcbiAgICAnVEFCTEVfVE9fWE1MIFRBQkxFX1RPX1hNTFNDSEVNQSBUQUJMRV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnUVVFUllfVE9fWE1MIFFVRVJZX1RPX1hNTFNDSEVNQSBRVUVSWV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnQ1VSU09SX1RPX1hNTCBDVVJTT1JfVE9fWE1MU0NIRU1BICcgK1xuICAgICdTQ0hFTUFfVE9fWE1MIFNDSEVNQV9UT19YTUxTQ0hFTUEgU0NIRU1BX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdEQVRBQkFTRV9UT19YTUwgREFUQUJBU0VfVE9fWE1MU0NIRU1BIERBVEFCQVNFX1RPX1hNTF9BTkRfWE1MU0NIRU1BICcgK1xuICAgICdYTUxBVFRSSUJVVEVTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1qc29uLmh0bWxcbiAgICAnVE9fSlNPTiBUT19KU09OQiBBUlJBWV9UT19KU09OIFJPV19UT19KU09OIEpTT05fQlVJTERfQVJSQVkgSlNPTkJfQlVJTERfQVJSQVkgSlNPTl9CVUlMRF9PQkpFQ1QgJyArXG4gICAgJ0pTT05CX0JVSUxEX09CSkVDVCBKU09OX09CSkVDVCBKU09OQl9PQkpFQ1QgSlNPTl9BUlJBWV9MRU5HVEggSlNPTkJfQVJSQVlfTEVOR1RIIEpTT05fRUFDSCAnICtcbiAgICAnSlNPTkJfRUFDSCBKU09OX0VBQ0hfVEVYVCBKU09OQl9FQUNIX1RFWFQgSlNPTl9FWFRSQUNUX1BBVEggSlNPTkJfRVhUUkFDVF9QQVRIICcgK1xuICAgICdKU09OX09CSkVDVF9LRVlTIEpTT05CX09CSkVDVF9LRVlTIEpTT05fUE9QVUxBVEVfUkVDT1JEIEpTT05CX1BPUFVMQVRFX1JFQ09SRCBKU09OX1BPUFVMQVRFX1JFQ09SRFNFVCAnICtcbiAgICAnSlNPTkJfUE9QVUxBVEVfUkVDT1JEU0VUIEpTT05fQVJSQVlfRUxFTUVOVFMgSlNPTkJfQVJSQVlfRUxFTUVOVFMgSlNPTl9BUlJBWV9FTEVNRU5UU19URVhUICcgK1xuICAgICdKU09OQl9BUlJBWV9FTEVNRU5UU19URVhUIEpTT05fVFlQRU9GIEpTT05CX1RZUEVPRiBKU09OX1RPX1JFQ09SRCBKU09OQl9UT19SRUNPUkQgSlNPTl9UT19SRUNPUkRTRVQgJyArXG4gICAgJ0pTT05CX1RPX1JFQ09SRFNFVCBKU09OX1NUUklQX05VTExTIEpTT05CX1NUUklQX05VTExTIEpTT05CX1NFVCBKU09OQl9JTlNFUlQgSlNPTkJfUFJFVFRZICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1zZXF1ZW5jZS5odG1sXG4gICAgJ0NVUlJWQUwgTEFTVFZBTCBORVhUVkFMIFNFVFZBTCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtY29uZGl0aW9uYWwuaHRtbFxuICAgICdDT0FMRVNDRSBOVUxMSUYgR1JFQVRFU1QgTEVBU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWFycmF5Lmh0bWxcbiAgICAnQVJSQVlfQVBQRU5EIEFSUkFZX0NBVCBBUlJBWV9ORElNUyBBUlJBWV9ESU1TIEFSUkFZX0ZJTEwgQVJSQVlfTEVOR1RIIEFSUkFZX0xPV0VSIEFSUkFZX1BPU0lUSU9OICcgK1xuICAgICdBUlJBWV9QT1NJVElPTlMgQVJSQVlfUFJFUEVORCBBUlJBWV9SRU1PVkUgQVJSQVlfUkVQTEFDRSBBUlJBWV9UT19TVFJJTkcgQVJSQVlfVVBQRVIgQ0FSRElOQUxJVFkgJyArXG4gICAgJ1NUUklOR19UT19BUlJBWSBVTk5FU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXJhbmdlLmh0bWxcbiAgICAnSVNFTVBUWSBMT1dFUl9JTkMgVVBQRVJfSU5DIExPV0VSX0lORiBVUFBFUl9JTkYgUkFOR0VfTUVSR0UgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXNyZi5odG1sXG4gICAgJ0dFTkVSQVRFX1NFUklFUyBHRU5FUkFURV9TVUJTQ1JJUFRTICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1pbmZvLmh0bWxcbiAgICAnQ1VSUkVOVF9EQVRBQkFTRSBDVVJSRU5UX1FVRVJZIENVUlJFTlRfU0NIRU1BfDEwIENVUlJFTlRfU0NIRU1BU3wxMCBJTkVUX0NMSUVOVF9BRERSIElORVRfQ0xJRU5UX1BPUlQgJyArXG4gICAgJ0lORVRfU0VSVkVSX0FERFIgSU5FVF9TRVJWRVJfUE9SVCBST1dfU0VDVVJJVFlfQUNUSVZFIEZPUk1BVF9UWVBFICcgK1xuICAgICdUT19SRUdDTEFTUyBUT19SRUdQUk9DIFRPX1JFR1BST0NFRFVSRSBUT19SRUdPUEVSIFRPX1JFR09QRVJBVE9SIFRPX1JFR1RZUEUgVE9fUkVHTkFNRVNQQUNFIFRPX1JFR1JPTEUgJyArXG4gICAgJ0NPTF9ERVNDUklQVElPTiBPQkpfREVTQ1JJUFRJT04gU0hPQkpfREVTQ1JJUFRJT04gJyArXG4gICAgJ1RYSURfQ1VSUkVOVCBUWElEX0NVUlJFTlRfSUZfQVNTSUdORUQgVFhJRF9DVVJSRU5UX1NOQVBTSE9UIFRYSURfU05BUFNIT1RfWElQIFRYSURfU05BUFNIT1RfWE1BWCAnICtcbiAgICAnVFhJRF9TTkFQU0hPVF9YTUlOIFRYSURfVklTSUJMRV9JTl9TTkFQU0hPVCBUWElEX1NUQVRVUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtYWRtaW4uaHRtbFxuICAgICdDVVJSRU5UX1NFVFRJTkcgU0VUX0NPTkZJRyBCUklOX1NVTU1BUklaRV9ORVdfVkFMVUVTIEJSSU5fU1VNTUFSSVpFX1JBTkdFIEJSSU5fREVTVU1NQVJJWkVfUkFOR0UgJyArXG4gICAgJ0dJTl9DTEVBTl9QRU5ESU5HX0xJU1QgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLXRyaWdnZXIuaHRtbFxuICAgICdTVVBQUkVTU19SRURVTkRBTlRfVVBEQVRFU19UUklHR0VSICcgK1xuICAgIC8vIGlodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2RldmVsL3N0YXRpYy9sby1mdW5jcy5odG1sXG4gICAgJ0xPX0ZST01fQllURUEgTE9fUFVUIExPX0dFVCBMT19DUkVBVCBMT19DUkVBVEUgTE9fVU5MSU5LIExPX0lNUE9SVCBMT19FWFBPUlQgTE9SRUFEIExPV1JJVEUgJyArXG4gICAgLy9cbiAgICAnR1JPVVBJTkcgQ0FTVCAnO1xuXG4gICAgdmFyIEZVTkNUSU9OU19SRSA9XG4gICAgICBGVU5DVElPTlMudHJpbSgpXG4gICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgLm1hcCggZnVuY3Rpb24odmFsKSB7IHJldHVybiB2YWwuc3BsaXQoJ3wnKVswXTsgfSApXG4gICAgICAgICAgICAgICAuam9pbignfCcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydwb3N0Z3JlcycsJ3Bvc3RncmVzcWwnXSxcbiAgICAgICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgU1FMX0tXICsgUExQR1NRTF9LVyArIFJPTEVfQVRUUlMsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICBTUUxfQkkgKyBQTFBHU1FMX0JJICsgUExQR1NRTF9FWENFUFRJT05TLFxuICAgICAgICB9LFxuICAgICAgICAvLyBGb3JiaWQgc29tZSBjdW5zdHJ1Y3RzIGZyb20gb3RoZXIgbGFuZ3VhZ2VzIHRvIGltcHJvdmUgYXV0b2RldGVjdC4gSW4gZmFjdFxuICAgICAgICAvLyBcIlthLXpdOlwiIGlzIGxlZ2FsIChhcyBwYXJ0IG9mIGFycmF5IHNsaWNlKSwgYnV0IGltcHJvYmFiYWwuXG4gICAgICAgIGlsbGVnYWw6IC86PT18XFxXXFxzKlxcKFxcKnwoXnxcXHMpXFwkW2Etel18e3t8W2Etel06XFxzKiR8XFwuXFwuXFwufFRPOnxETzovLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgb2Ygc29tZSB3b3Jkcywgd2hpY2ggYXJlIHJlc2VydmVkIG9ubHkgaW4gc29tZSBjb250ZXh0c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlRFWFRcXHMqU0VBUkNIXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFBSSU1BUll8Rk9SRUlHTnxGT1IoXFxzK05PKT8pXFxzK0tFWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBBUkFMTEVMXFxzKyhVTlNBRkV8UkVTVFJJQ1RFRHxTQUZFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNUT1JBR0VcXHMrKFBMQUlOfEVYVEVSTkFMfEVYVEVOREVEfE1BSU4pXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTUFUQ0hcXHMrKEZVTEx8UEFSVElBTHxTSU1QTEUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiTlVMTFNcXHMrKEZJUlNUfExBU1QpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRVZFTlRcXHMrVFJJR0dFUlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihNQVBQSU5HfE9SKVxccytSRVBMQUNFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEZST018VE8pXFxzKyhQUk9HUkFNfFNURElOfFNURE9VVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoU0hBUkV8RVhDTFVTSVZFKVxccytNT0RFXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKExFRlR8UklHSFQpXFxzKyhPVVRFUlxccyspP0pPSU5cXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoRkVUQ0h8TU9WRSlcXHMrKE5FWFR8UFJJT1J8RklSU1R8TEFTVHxBQlNPTFVURXxSRUxBVElWRXxGT1JXQVJEfEJBQ0tXQVJEKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBSRVNFUlZFXFxzK1JPV1NcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJESVNDQVJEXFxzK1BMQU5TXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUkVGRVJFTkNJTkdcXHMrKE9MRHxORVcpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU0tJUFxccytMT0NLRURcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJHUk9VUElOR1xccytTRVRTXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEJJTkFSWXxJTlNFTlNJVElWRXxTQ1JPTEx8Tk9cXHMrU0NST0xMKVxccysoQ1VSU09SfEZPUilcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxXSVRIT1VUKVxccytIT0xEXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiV0lUSFxccysoQ0FTQ0FERUR8TE9DQUwpXFxzK0NIRUNLXFxzK09QVElPTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkVYQ0xVREVcXHMrKFRJRVN8Tk9cXHMrT1RIRVJTKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkZPUk1BVFxccysoVEVYVHxYTUx8SlNPTnxZQU1MKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoKFNFU1NJT058TE9DQUwpXFxzKyk/TkFNRVNcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/VU5LTk9XTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFQ1VSSVRZXFxzK0xBQkVMXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiU1RBTkRBTE9ORVxccysoWUVTfE5PfE5PXFxzK1ZBTFVFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYldJVEhcXHMrKE5PXFxzKyk/REFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihGT1JFSUdOfFNFVClcXHMrREFUQVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNFVFxccysoQ0FUQUxPR3xDT05TVFJBSU5UUylcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoV0lUSHxGT1IpXFxzK09SRElOQUxJVFlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJJU1xccysoTk9UXFxzKyk/RE9DVU1FTlRcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJYTUxcXHMrT1BUSU9OXFxzKyhET0NVTUVOVHxDT05URU5UKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihTVFJJUHxQUkVTRVJWRSlcXHMrV0hJVEVTUEFDRVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYk5PXFxzKyhBQ1RJT058TUFYVkFMVUV8TUlOVkFMVUUpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiUEFSVElUSU9OXFxzK0JZXFxzKyhSQU5HRXxMSVNUfEhBU0gpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVRcXHMrVElNRVxccytaT05FXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiR1JBTlRFRFxccytCWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlJFVFVSTlxccysoUVVFUll8TkVYVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoQVRUQUNIfERFVEFDSClcXHMrUEFSVElUSU9OXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRk9SQ0VcXHMrUk9XXFxzK0xFVkVMXFxzK1NFQ1VSSVRZXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKElOQ0xVRElOR3xFWENMVURJTkcpXFxzKyhDT01NRU5UU3xDT05TVFJBSU5UU3xERUZBVUxUU3xJREVOVElUWXxJTkRFWEVTfFNUQVRJU1RJQ1N8U1RPUkFHRXxBTEwpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiQVNcXHMrKEFTU0lHTk1FTlR8SU1QTElDSVR8UEVSTUlTU0lWRXxSRVNUUklDVElWRXxFTlVNfFJBTkdFKVxcYi8gfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZnVuY3Rpb25zIG5hbWVkIGFzIGtleXdvcmRzLCBmb2xsb3dlZCBieSAnKCdcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYihGT1JNQVR8RkFNSUxZfFZFUlNJT04pXFxzKlxcKC8sXG4gICAgICAgICAgICAvL2tleXdvcmRzOiB7IGJ1aWx0X2luOiAnRk9STUFUIEZBTUlMWSBWRVJTSU9OJyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBJTkNMVURFICggLi4uICkgaW4gaW5kZXhfcGFyYW1ldGVycyBpbiBDUkVBVEUgVEFCTEVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYklOQ0xVREVcXHMqXFwoLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnSU5DTFVERSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIG5vdCBoaWdobGlnaHQgUkFOR0UgaWYgbm90IGluIGZyYW1lX2NsYXVzZSAobm90IDEwMCUgY29ycmVjdCwgYnV0IHNlZW1zIHNhdGlzZmFjdG9yeSlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJBTkdFKD8hXFxzKihCRVRXRUVOfFVOQk9VTkRFRHxDVVJSRU5UfFstMC05XSspKS9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGRpc2FibGUgaGlnaGxpZ2h0aW5nIGluIGNvbW1hbmRzIENSRUFURSBBR0dSRUdBVEUvQ09MTEFUSU9OL0RBVEFCQVNFL09QRVJUT1IvVEVYVCBTRUFSQ0ggLi4uL1RZUEVcbiAgICAgICAgICAvLyBhbmQgaW4gUEwvcGdTUUwgUkFJU0UgLi4uIFVTSU5HXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoVkVSU0lPTnxPV05FUnxURU1QTEFURXxUQUJMRVNQQUNFfENPTk5FQ1RJT05cXHMrTElNSVR8UFJPQ0VEVVJFfFJFU1RSSUNUfEpPSU58UEFSU0VSfENPUFl8U1RBUlR8RU5EfENPTExBVElPTnxJTlBVVHxBTkFMWVpFfFNUT1JBR0V8TElLRXxERUZBVUxUfERFTElNSVRFUnxFTkNPRElOR3xDT0xVTU58Q09OU1RSQUlOVHxUQUJMRXxTQ0hFTUEpXFxzKj0vXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQR19zbXRoOyBIQVNfc29tZV9QUklWSUxFR0VcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvL2NsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFBHX1xcdys/fEhBU19bQS1aX10rX1BSSVZJTEVHRSlcXGIvLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZXh0cmFjdFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiRVhUUkFDVFxccypcXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFxiRlJPTVxcYi8sXG4gICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICAvL2J1aWx0X2luOiAnRVhUUkFDVCcsXG4gICAgICAgICAgICAgIHR5cGU6ICAgICAnQ0VOVFVSWSBEQVkgREVDQURFIERPVyBET1kgRVBPQ0ggSE9VUiBJU09ET1cgSVNPWUVBUiBNSUNST1NFQ09ORFMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnTUlMTEVOTklVTSBNSUxMSVNFQ09ORFMgTUlOVVRFIE1PTlRIIFFVQVJURVIgU0VDT05EIFRJTUVaT05FIFRJTUVaT05FX0hPVVIgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnVElNRVpPTkVfTUlOVVRFIFdFRUsgWUVBUidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIHhtbGVsZW1lbnQsIHhtbHBpIC0gc3BlY2lhbCBOQU1FXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MRUxFTUVOVHxYTUxQSSlcXHMqXFwoXFxzKk5BTUUvLFxuICAgICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgICAgLy9idWlsdF9pbjogJ1hNTEVMRU1FTlQgWE1MUEknLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ05BTUUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyB4bWxwYXJzZSwgeG1sc2VyaWFsaXplXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoWE1MUEFSU0V8WE1MU0VSSUFMSVpFKVxccypcXChcXHMqKERPQ1VNRU5UfENPTlRFTlQpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIC8vYnVpbHRfaW46ICdYTUxQQVJTRSBYTUxTRVJJQUxJWkUnLFxuICAgICAgICAgICAgICBrZXl3b3JkOiAgJ0RPQ1VNRU5UIENPTlRFTlQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBTZXF1ZW5jZXMuIFdlIGFjdHVhbGx5IHNraXAgZXZlcnl0aGluZyBiZXR3ZWVuIENBQ0hFfElOQ1JFTUVOVHxNQVhWQUxVRXxNSU5WQUxVRSBhbmRcbiAgICAgICAgICAvLyBuZWFyZXN0IGZvbGxvd2luZyBudW1lcmljIGNvbnN0YW50LiBXaXRob3V0IHdpdGggdHJpY2sgd2UgZmluZCBhIGxvdCBvZiBcImtleXdvcmRzXCJcbiAgICAgICAgICAvLyBpbiAnYXZyYXNtJyBhdXRvZGV0ZWN0aW9uIHRlc3QuLi5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJyxcbiAgICAgICAgICAgIGVuZDogaGxqcy5DX05VTUJFUl9SRSxcbiAgICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnQlkgQ0FDSEUgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gV0lUSHxXSVRIT1VUIFRJTUUgWk9ORSBhcyBwYXJ0IG9mIGRhdGF0eXBlXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcYihXSVRIfFdJVEhPVVQpXFxzK1RJTUVcXHMrWk9ORVxcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIElOVEVSVkFMIG9wdGlvbmFsIGZpZWxkc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXGJJTlRFUlZBTFxccysoWUVBUnxNT05USHxEQVl8SE9VUnxNSU5VVEV8U0VDT05EKShcXHMrVE9cXHMrKE1PTlRIfEhPVVJ8TUlOVVRFfFNFQ09ORCkpP1xcYi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFBzZXVkby10eXBlcyB3aGljaCBhbGxvd2VkIG9ubHkgYXMgcmV0dXJuIHR5cGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYlJFVFVSTlNcXHMrKExBTkdVQUdFX0hBTkRMRVJ8VFJJR0dFUnxFVkVOVF9UUklHR0VSfEZEV19IQU5ETEVSfElOREVYX0FNX0hBTkRMRVJ8VFNNX0hBTkRMRVIpXFxiLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdSRVRVUk5TJyxcbiAgICAgICAgICAgICAgdHlwZTogJ0xBTkdVQUdFX0hBTkRMRVIgVFJJR0dFUiBFVkVOVF9UUklHR0VSIEZEV19IQU5ETEVSIElOREVYX0FNX0hBTkRMRVIgVFNNX0hBTkRMRVInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBLbm93biBmdW5jdGlvbnMgLSBvbmx5IHdoZW4gZm9sbG93ZWQgYnkgJygnXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgRlVOQ1RJT05TX1JFICsgJylcXFxccypcXFxcKCdcbiAgICAgICAgICAgIC8va2V5d29yZHM6IHsgYnVpbHRfaW46IEZVTkNUSU9OUyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBUeXBlc1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXC4oJyArIFRZUEVTX1JFICsgJylcXFxcYicgLy8gcHJldmVudCBoaWdobGlnaHQgYXMgdHlwZSwgc2F5LCAnb2lkJyBpbiAncGdjbGFzcy5vaWQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUWVBFU19SRSArICcpXFxcXHMrUEFUSFxcXFxiJywgLy8gaW4gWE1MVEFCTEVcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICdQQVRIJywgLy8gaG9wZWZ1bGx5IG5vIG9uZSB3b3VsZCB1c2UgUEFUSCB0eXBlIGluIFhNTFRBQkxFLi4uXG4gICAgICAgICAgICAgIHR5cGU6IFRZUEVTLnJlcGxhY2UoJ1BBVEggJywnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgVFlQRVNfUkUgKyAnKVxcXFxiJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU3RyaW5ncywgc2VlIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1zeW50YXgtbGV4aWNhbC5odG1sI1NRTC1TWU5UQVgtQ09OU1RBTlRTXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICcoZXxFfHUmfFUmKVxcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1xcXFxcXFxcLid9XSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBET0xMQVJfU1RSSU5HLFxuICAgICAgICAgICAgZW5kU2FtZUFzQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgd2Ugd2FudCB0aGVtIGFsbCBleGNlcHQgU1FMOyBsaXN0ZWQgYXJlIHRob3NlIHdpdGgga25vd24gaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAgICAgLy8gYW5kIFhNTCArIEpTT04ganVzdCBpbiBjYXNlXG4gICAgICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsncGdzcWwnLCdwZXJsJywncHl0aG9uJywndGNsJywncicsJ2x1YScsJ2phdmEnLCdwaHAnLCdydWJ5JywnYmFzaCcsJ3NjaGVtZScsJ3htbCcsJ2pzb24nXSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBpZGVudGlmaWVycyBpbiBxdW90ZXNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIC8vIGNvbW1lbnRzXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgLy8gUEwvcGdTUUwgc3RhZmZcbiAgICAgICAgICAvLyAlUk9XVFlQRSwgJVRZUEUsICRuXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7YmVnaW46ICclKFJPVyk/VFlQRScsIHJlbGV2YW5jZTogMTB9LCAvLyAlVFlQRSwgJVJPV1RZUEVcbiAgICAgICAgICAgICAge2JlZ2luOiAnXFxcXCRcXFxcZCsnfSwgICAgICAgICAgICAgICAgICAgIC8vICRuXG4gICAgICAgICAgICAgIHtiZWdpbjogJ14jXFxcXHcnLCBlbmQ6ICckJ30gICAgICAgICAgICAgLy8gI2NvbXBpbGVyIG9wdGlvblxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gPDxsYWJlbGVzPj5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46IExBQkVMLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGJlZ2luOiAnXFxcXCQrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSonXG4gIH07XG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAvPFxcPyhwaHApP3xcXD8+L1xuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBSRVBST0NFU1NPUl0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwaHAnLCAncGhwMycsICdwaHA0JywgJ3BocDUnLCAncGhwNicsICdwaHA3J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhbmQgaW5jbHVkZV9vbmNlIGxpc3QgYWJzdHJhY3QgZ2xvYmFsIHByaXZhdGUgZWNobyBpbnRlcmZhY2UgYXMgc3RhdGljIGVuZHN3aXRjaCAnICtcbiAgICAgICdhcnJheSBudWxsIGlmIGVuZHdoaWxlIG9yIGNvbnN0IGZvciBlbmRmb3JlYWNoIHNlbGYgdmFyIHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcsIHtjb250YWluczogW1BSRVBST0NFU1NPUl19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ19faGFsdF9jb21waWxlci4rPzsnLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGtleXdvcmRzOiAnX19oYWx0X2NvbXBpbGVyJyxcbiAgICAgICAgICBsZXhlbWVzOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88PDxbJ1wiXT9cXHcrWydcIl0/JC8sIGVuZDogL15cXHcrOz8kLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAvXFwkXFx3Ky99LFxuICAgICAgICAgICAgICB7YmVnaW46IC9cXHtcXCQvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsIGJlZ2luOiAvXFwkdGhpc1xcYi9cbiAgICAgIH0sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcXChcXCRcIl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvW1xcLiddLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPT4nIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlQXV0b2RldGVjdDogdHJ1ZVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY3RvciBhZGRyZXNzb2YgYW5kIGFzIGJlIGJyZWFrIGNsYXNzIGNvbXBpbGVfZXJyb3IgY29tcGlsZV9pbnRyaW5zaWMgJyArXG4gICAgICAnY29uc3VtZSBjb250aW51ZSBkZWxlZ2F0ZSBkaWdlc3RvZiBkbyBlbHNlIGVsc2VpZiBlbWJlZCBlbmQgZXJyb3IgJyArXG4gICAgICAnZm9yIGZ1biBpZiBpZmRlZiBpbiBpbnRlcmZhY2UgaXMgaXNudCBsYW1iZGEgbGV0IG1hdGNoIG5ldyBub3Qgb2JqZWN0ICcgK1xuICAgICAgJ29yIHByaW1pdGl2ZSByZWNvdmVyIHJlcGVhdCByZXR1cm4gc3RydWN0IHRoZW4gdHJhaXQgdHJ5IHR5cGUgdW50aWwgJyArXG4gICAgICAndXNlIHZhciB3aGVyZSB3aGlsZSB3aXRoIHhvcicsXG4gICAgbWV0YTpcbiAgICAgICdpc28gdmFsIHRhZyB0cm4gYm94IHJlZicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0aGlzIGZhbHNlIHRydWUnXG4gIH07XG5cbiAgdmFyIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcblxuICB2YXIgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFRZUEVfTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiXz9bQS1aXVtcXFxcd10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUFJJTUVEX05BTUUgPSB7XG4gICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFwnJywgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XSt8XFxcXGIwW2JCXVswMV0rfChcXFxcYlxcXFxkKyhfXFxcXGQrKT8oXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGBGVU5DVElPTmAgYW5kIGBDTEFTU2AgbW9kZXMgd2VyZSBpbnRlbnRpb25hbGx5IHJlbW92ZWQgdG8gc2ltcGxpZnlcbiAgICogaGlnaGxpZ2h0aW5nIGFuZCBmaXggY2FzZXMgbGlrZVxuICAgKiBgYGBcbiAgICogaW50ZXJmYWNlIEl0ZXJhdG9yW0E6IEFdXG4gICAqICAgZnVuIGhhc19uZXh0KCk6IEJvb2xcbiAgICogICBmdW4gbmV4dCgpOiBBP1xuICAgKiBgYGBcbiAgICogd2hlcmUgaXQgaXMgdmFsaWQgdG8gaGF2ZSBhIGZ1bmN0aW9uIGhlYWQgd2l0aG91dCBhIGJvZHlcbiAgICovXG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFRZUEVfTkFNRSxcbiAgICAgIFRSSVBMRV9RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgU0lOR0xFX1FVT1RFX0NIQVJfTU9ERSxcbiAgICAgIFBSSU1FRF9OQU1FLFxuICAgICAgTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuICB2YXIgQkFDS1RJQ0tfRVNDQVBFID0ge1xuICAgIGJlZ2luOiBcImBbXFxcXHNcXFxcU11cIixcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvXFwkW1xcd1xcZF1bXFx3XFxkXzpdKi8gfV0sXG4gIH07XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogXCJsaXRlcmFsXCIsXG4gICAgYmVnaW46IC9cXCQobnVsbHx0cnVlfGZhbHNlKVxcYi8sXG4gIH07XG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIHZhcmlhbnRzOiBbeyBiZWdpbjogL1wiLywgZW5kOiAvXCIvIH0sIHsgYmVnaW46IC9AXCIvLCBlbmQ6IC9eXCJALyB9XSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwidmFyaWFibGVcIixcbiAgICAgICAgYmVnaW46IC9cXCRbQS16XS8sXG4gICAgICAgIGVuZDogL1teQS16XS8sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIHZhciBBUE9TX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAvJy8sIGVuZDogLycvIH0sIHsgYmVnaW46IC9AJy8sIGVuZDogL14nQC8gfV0sXG4gIH07XG5cbiAgdmFyIFBTX0hFTFBUQUdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJkb2N0YWdcIixcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogbm8gcGFyYW1hdGVyIGhlbHAgdGFncyAqL1xuXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwuKHN5bm9wc2lzfGRlc2NyaXB0aW9ufGV4YW1wbGV8aW5wdXRzfG91dHB1dHN8bm90ZXN8bGlua3xjb21wb25lbnR8cm9sZXxmdW5jdGlvbmFsaXR5KS8sXG4gICAgICB9LFxuICAgICAgLyogb25lIHBhcmFtZXRlciBoZWxwIHRhZ3MgKi9cbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXC4ocGFyYW1ldGVyfGZvcndhcmRoZWxwdGFyZ2V0bmFtZXxmb3J3YXJkaGVscGNhdGVnb3J5fHJlbW90ZWhlbHBydW5zcGFjZXxleHRlcm5hbGhlbHApXFxzK1xcUysvLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICB2YXIgUFNfQ09NTUVOVCA9IGhsanMuaW5oZXJpdChobGpzLkNPTU1FTlQobnVsbCwgbnVsbCksIHtcbiAgICB2YXJpYW50czogW1xuICAgICAgLyogc2luZ2xlLWxpbmUgY29tbWVudCAqL1xuICAgICAgeyBiZWdpbjogLyMvLCBlbmQ6IC8kLyB9LFxuICAgICAgLyogbXVsdGktbGluZSBjb21tZW50ICovXG4gICAgICB7IGJlZ2luOiAvPCMvLCBlbmQ6IC8jPi8gfSxcbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbUFNfSEVMUFRBR1NdLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFtcInBzXCIsIFwicHMxXCJdLFxuICAgIGxleGVtZXM6IC8tP1tBLXpcXC5cXC1dKy8sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgXCJpZiBlbHNlIGZvcmVhY2ggcmV0dXJuIGZ1bmN0aW9uIGRvIHdoaWxlIHVudGlsIGVsc2VpZiBiZWdpbiBmb3IgdHJhcCBkYXRhIGR5bmFtaWNwYXJhbSBlbmQgYnJlYWsgdGhyb3cgcGFyYW0gY29udGludWUgZmluYWxseSBpbiBzd2l0Y2ggZXhpdCBmaWx0ZXIgdHJ5IHByb2Nlc3MgY2F0Y2hcIiArXG4gICAgICAgIFwiVmFsaWRhdGVOb0NpcmNsZUluTm9kZVJlc291cmNlcyBWYWxpZGF0ZU5vZGVFeGNsdXNpdmVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlTWFuYWdlciBWYWxpZGF0ZU5vZGVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlUmVzb3VyY2VTb3VyY2UgVmFsaWRhdGVOb05hbWVOb2RlUmVzb3VyY2VzIFRocm93RXJyb3IgSXNIaWRkZW5SZXNvdXJjZVwiICtcbiAgICAgICAgXCJJc1BhdHRlcm5NYXRjaGVkIFwiLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIFwiQWRkLUNvbXB1dGVyIEFkZC1Db250ZW50IEFkZC1IaXN0b3J5IEFkZC1Kb2JUcmlnZ2VyIEFkZC1NZW1iZXIgQWRkLVBTU25hcGluIEFkZC1UeXBlIENoZWNrcG9pbnQtQ29tcHV0ZXIgQ2xlYXItQ29udGVudCBcIiArXG4gICAgICAgIFwiQ2xlYXItRXZlbnRMb2cgQ2xlYXItSGlzdG9yeSBDbGVhci1Ib3N0IENsZWFyLUl0ZW0gQ2xlYXItSXRlbVByb3BlcnR5IENsZWFyLVZhcmlhYmxlIENvbXBhcmUtT2JqZWN0IENvbXBsZXRlLVRyYW5zYWN0aW9uIENvbm5lY3QtUFNTZXNzaW9uIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVdTTWFuIENvbnZlcnQtUGF0aCBDb252ZXJ0RnJvbS1Dc3YgQ29udmVydEZyb20tSnNvbiBDb252ZXJ0RnJvbS1TZWN1cmVTdHJpbmcgQ29udmVydEZyb20tU3RyaW5nRGF0YSBDb252ZXJ0VG8tQ3N2IENvbnZlcnRUby1IdG1sIFwiICtcbiAgICAgICAgXCJDb252ZXJ0VG8tSnNvbiBDb252ZXJ0VG8tU2VjdXJlU3RyaW5nIENvbnZlcnRUby1YbWwgQ29weS1JdGVtIENvcHktSXRlbVByb3BlcnR5IERlYnVnLVByb2Nlc3MgRGlzYWJsZS1Db21wdXRlclJlc3RvcmUgRGlzYWJsZS1Kb2JUcmlnZ2VyIFwiICtcbiAgICAgICAgXCJEaXNhYmxlLVBTQnJlYWtwb2ludCBEaXNhYmxlLVBTUmVtb3RpbmcgRGlzYWJsZS1QU1Nlc3Npb25Db25maWd1cmF0aW9uIERpc2FibGUtV1NNYW5DcmVkU1NQIERpc2Nvbm5lY3QtUFNTZXNzaW9uIERpc2Nvbm5lY3QtV1NNYW4gXCIgK1xuICAgICAgICBcIkRpc2FibGUtU2NoZWR1bGVkSm9iIEVuYWJsZS1Db21wdXRlclJlc3RvcmUgRW5hYmxlLUpvYlRyaWdnZXIgRW5hYmxlLVBTQnJlYWtwb2ludCBFbmFibGUtUFNSZW1vdGluZyBFbmFibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBcIiArXG4gICAgICAgIFwiRW5hYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtV1NNYW5DcmVkU1NQIEVudGVyLVBTU2Vzc2lvbiBFeGl0LVBTU2Vzc2lvbiBFeHBvcnQtQWxpYXMgRXhwb3J0LUNsaXhtbCBFeHBvcnQtQ29uc29sZSBFeHBvcnQtQ291bnRlciBFeHBvcnQtQ3N2IFwiICtcbiAgICAgICAgXCJFeHBvcnQtRm9ybWF0RGF0YSBFeHBvcnQtTW9kdWxlTWVtYmVyIEV4cG9ydC1QU1Nlc3Npb24gRm9yRWFjaC1PYmplY3QgRm9ybWF0LUN1c3RvbSBGb3JtYXQtTGlzdCBGb3JtYXQtVGFibGUgRm9ybWF0LVdpZGUgR2V0LUFjbCBHZXQtQWxpYXMgXCIgK1xuICAgICAgICBcIkdldC1BdXRoZW50aWNvZGVTaWduYXR1cmUgR2V0LUNoaWxkSXRlbSBHZXQtQ29tbWFuZCBHZXQtQ29tcHV0ZXJSZXN0b3JlUG9pbnQgR2V0LUNvbnRlbnQgR2V0LUNvbnRyb2xQYW5lbEl0ZW0gR2V0LUNvdW50ZXIgR2V0LUNyZWRlbnRpYWwgXCIgK1xuICAgICAgICBcIkdldC1DdWx0dXJlIEdldC1EYXRlIEdldC1FdmVudCBHZXQtRXZlbnRMb2cgR2V0LUV2ZW50U3Vic2NyaWJlciBHZXQtRXhlY3V0aW9uUG9saWN5IEdldC1Gb3JtYXREYXRhIEdldC1Ib3N0IEdldC1Ib3RGaXggR2V0LUhlbHAgR2V0LUhpc3RvcnkgXCIgK1xuICAgICAgICBcIkdldC1Jc2VTbmlwcGV0IEdldC1JdGVtIEdldC1JdGVtUHJvcGVydHkgR2V0LUpvYiBHZXQtSm9iVHJpZ2dlciBHZXQtTG9jYXRpb24gR2V0LU1lbWJlciBHZXQtTW9kdWxlIEdldC1QZnhDZXJ0aWZpY2F0ZSBHZXQtUHJvY2VzcyBcIiArXG4gICAgICAgIFwiR2V0LVBTQnJlYWtwb2ludCBHZXQtUFNDYWxsU3RhY2sgR2V0LVBTRHJpdmUgR2V0LVBTUHJvdmlkZXIgR2V0LVBTU2Vzc2lvbiBHZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBHZXQtUFNTbmFwaW4gR2V0LVJhbmRvbSBHZXQtU2NoZWR1bGVkSm9iIFwiICtcbiAgICAgICAgXCJHZXQtU2NoZWR1bGVkSm9iT3B0aW9uIEdldC1TZXJ2aWNlIEdldC1UcmFjZVNvdXJjZSBHZXQtVHJhbnNhY3Rpb24gR2V0LVR5cGVEYXRhIEdldC1VSUN1bHR1cmUgR2V0LVVuaXF1ZSBHZXQtVmFyaWFibGUgR2V0LVZlcmIgR2V0LVdpbkV2ZW50IFwiICtcbiAgICAgICAgXCJHZXQtV21pT2JqZWN0IEdldC1XU01hbkNyZWRTU1AgR2V0LVdTTWFuSW5zdGFuY2UgR3JvdXAtT2JqZWN0IEltcG9ydC1BbGlhcyBJbXBvcnQtQ2xpeG1sIEltcG9ydC1Db3VudGVyIEltcG9ydC1Dc3YgSW1wb3J0LUlzZVNuaXBwZXQgXCIgK1xuICAgICAgICBcIkltcG9ydC1Mb2NhbGl6ZWREYXRhIEltcG9ydC1QU1Nlc3Npb24gSW1wb3J0LU1vZHVsZSBJbnZva2UtQXNXb3JrZmxvdyBJbnZva2UtQ29tbWFuZCBJbnZva2UtRXhwcmVzc2lvbiBJbnZva2UtSGlzdG9yeSBJbnZva2UtSXRlbSBcIiArXG4gICAgICAgIFwiSW52b2tlLVJlc3RNZXRob2QgSW52b2tlLVdlYlJlcXVlc3QgSW52b2tlLVdtaU1ldGhvZCBJbnZva2UtV1NNYW5BY3Rpb24gSm9pbi1QYXRoIExpbWl0LUV2ZW50TG9nIE1lYXN1cmUtQ29tbWFuZCBNZWFzdXJlLU9iamVjdCBNb3ZlLUl0ZW0gXCIgK1xuICAgICAgICBcIk1vdmUtSXRlbVByb3BlcnR5IE5ldy1BbGlhcyBOZXctRXZlbnQgTmV3LUV2ZW50TG9nIE5ldy1Jc2VTbmlwcGV0IE5ldy1JdGVtIE5ldy1JdGVtUHJvcGVydHkgTmV3LUpvYlRyaWdnZXIgTmV3LU9iamVjdCBOZXctTW9kdWxlIFwiICtcbiAgICAgICAgXCJOZXctTW9kdWxlTWFuaWZlc3QgTmV3LVBTRHJpdmUgTmV3LVBTU2Vzc2lvbiBOZXctUFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUgTmV3LVBTU2Vzc2lvbk9wdGlvbiBOZXctUFNUcmFuc3BvcnRPcHRpb24gXCIgK1xuICAgICAgICBcIk5ldy1QU1dvcmtmbG93RXhlY3V0aW9uT3B0aW9uIE5ldy1QU1dvcmtmbG93U2Vzc2lvbiBOZXctU2NoZWR1bGVkSm9iT3B0aW9uIE5ldy1TZXJ2aWNlIE5ldy1UaW1lU3BhbiBOZXctVmFyaWFibGUgTmV3LVdlYlNlcnZpY2VQcm94eSBcIiArXG4gICAgICAgIFwiTmV3LVdpbkV2ZW50IE5ldy1XU01hbkluc3RhbmNlIE5ldy1XU01hblNlc3Npb25PcHRpb24gT3V0LURlZmF1bHQgT3V0LUZpbGUgT3V0LUdyaWRWaWV3IE91dC1Ib3N0IE91dC1OdWxsIE91dC1QcmludGVyIE91dC1TdHJpbmcgUG9wLUxvY2F0aW9uIFwiICtcbiAgICAgICAgXCJQdXNoLUxvY2F0aW9uIFJlYWQtSG9zdCBSZWNlaXZlLUpvYiBSZWdpc3Rlci1FbmdpbmVFdmVudCBSZWdpc3Rlci1PYmplY3RFdmVudCBSZWdpc3Rlci1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBcIiArXG4gICAgICAgIFwiUmVnaXN0ZXItV21pRXZlbnQgUmVtb3ZlLUNvbXB1dGVyIFJlbW92ZS1FdmVudCBSZW1vdmUtRXZlbnRMb2cgUmVtb3ZlLUl0ZW0gUmVtb3ZlLUl0ZW1Qcm9wZXJ0eSBSZW1vdmUtSm9iIFJlbW92ZS1Kb2JUcmlnZ2VyIFJlbW92ZS1Nb2R1bGUgXCIgK1xuICAgICAgICBcIlJlbW92ZS1QU0JyZWFrcG9pbnQgUmVtb3ZlLVBTRHJpdmUgUmVtb3ZlLVBTU2Vzc2lvbiBSZW1vdmUtUFNTbmFwaW4gUmVtb3ZlLVR5cGVEYXRhIFJlbW92ZS1WYXJpYWJsZSBSZW1vdmUtV21pT2JqZWN0IFJlbW92ZS1XU01hbkluc3RhbmNlIFwiICtcbiAgICAgICAgXCJSZW5hbWUtQ29tcHV0ZXIgUmVuYW1lLUl0ZW0gUmVuYW1lLUl0ZW1Qcm9wZXJ0eSBSZXNldC1Db21wdXRlck1hY2hpbmVQYXNzd29yZCBSZXNvbHZlLVBhdGggUmVzdGFydC1Db21wdXRlciBSZXN0YXJ0LVNlcnZpY2UgUmVzdG9yZS1Db21wdXRlciBcIiArXG4gICAgICAgIFwiUmVzdW1lLUpvYiBSZXN1bWUtU2VydmljZSBTYXZlLUhlbHAgU2VsZWN0LU9iamVjdCBTZWxlY3QtU3RyaW5nIFNlbGVjdC1YbWwgU2VuZC1NYWlsTWVzc2FnZSBTZXQtQWNsIFNldC1BbGlhcyBTZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIFwiICtcbiAgICAgICAgXCJTZXQtQ29udGVudCBTZXQtRGF0ZSBTZXQtRXhlY3V0aW9uUG9saWN5IFNldC1JdGVtIFNldC1JdGVtUHJvcGVydHkgU2V0LUpvYlRyaWdnZXIgU2V0LUxvY2F0aW9uIFNldC1QU0JyZWFrcG9pbnQgU2V0LVBTRGVidWcgXCIgK1xuICAgICAgICBcIlNldC1QU1Nlc3Npb25Db25maWd1cmF0aW9uIFNldC1TY2hlZHVsZWRKb2IgU2V0LVNjaGVkdWxlZEpvYk9wdGlvbiBTZXQtU2VydmljZSBTZXQtU3RyaWN0TW9kZSBTZXQtVHJhY2VTb3VyY2UgU2V0LVZhcmlhYmxlIFNldC1XbWlJbnN0YW5jZSBcIiArXG4gICAgICAgIFwiU2V0LVdTTWFuSW5zdGFuY2UgU2V0LVdTTWFuUXVpY2tDb25maWcgU2hvdy1Db21tYW5kIFNob3ctQ29udHJvbFBhbmVsSXRlbSBTaG93LUV2ZW50TG9nIFNvcnQtT2JqZWN0IFNwbGl0LVBhdGggU3RhcnQtSm9iIFN0YXJ0LVByb2Nlc3MgXCIgK1xuICAgICAgICBcIlN0YXJ0LVNlcnZpY2UgU3RhcnQtU2xlZXAgU3RhcnQtVHJhbnNhY3Rpb24gU3RhcnQtVHJhbnNjcmlwdCBTdG9wLUNvbXB1dGVyIFN0b3AtSm9iIFN0b3AtUHJvY2VzcyBTdG9wLVNlcnZpY2UgU3RvcC1UcmFuc2NyaXB0IFN1c3BlbmQtSm9iIFwiICtcbiAgICAgICAgXCJTdXNwZW5kLVNlcnZpY2UgVGVlLU9iamVjdCBUZXN0LUNvbXB1dGVyU2VjdXJlQ2hhbm5lbCBUZXN0LUNvbm5lY3Rpb24gVGVzdC1Nb2R1bGVNYW5pZmVzdCBUZXN0LVBhdGggVGVzdC1QU1Nlc3Npb25Db25maWd1cmF0aW9uRmlsZSBcIiArXG4gICAgICAgIFwiVHJhY2UtQ29tbWFuZCBVbmJsb2NrLUZpbGUgVW5kby1UcmFuc2FjdGlvbiBVbnJlZ2lzdGVyLUV2ZW50IFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBVbnJlZ2lzdGVyLVNjaGVkdWxlZEpvYiBVcGRhdGUtRm9ybWF0RGF0YSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUhlbHAgVXBkYXRlLUxpc3QgVXBkYXRlLVR5cGVEYXRhIFVzZS1UcmFuc2FjdGlvbiBXYWl0LUV2ZW50IFdhaXQtSm9iIFdhaXQtUHJvY2VzcyBXaGVyZS1PYmplY3QgV3JpdGUtRGVidWcgV3JpdGUtRXJyb3IgV3JpdGUtRXZlbnRMb2cgXCIgK1xuICAgICAgICBcIldyaXRlLUhvc3QgV3JpdGUtT3V0cHV0IFdyaXRlLVByb2dyZXNzIFdyaXRlLVZlcmJvc2UgV3JpdGUtV2FybmluZyBBZGQtTURUUGVyc2lzdGVudERyaXZlIERpc2FibGUtTURUTW9uaXRvclNlcnZpY2UgRW5hYmxlLU1EVE1vbml0b3JTZXJ2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtTURURGVwbG95bWVudFNoYXJlU3RhdGlzdGljcyBHZXQtTURUTW9uaXRvckRhdGEgR2V0LU1EVE9wZXJhdGluZ1N5c3RlbUNhdGFsb2cgR2V0LU1EVFBlcnNpc3RlbnREcml2ZSBJbXBvcnQtTURUQXBwbGljYXRpb24gXCIgK1xuICAgICAgICBcIkltcG9ydC1NRFREcml2ZXIgSW1wb3J0LU1EVE9wZXJhdGluZ1N5c3RlbSBJbXBvcnQtTURUUGFja2FnZSBJbXBvcnQtTURUVGFza1NlcXVlbmNlIE5ldy1NRFREYXRhYmFzZSBSZW1vdmUtTURUTW9uaXRvckRhdGEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1NRFRQZXJzaXN0ZW50RHJpdmUgUmVzdG9yZS1NRFRQZXJzaXN0ZW50RHJpdmUgU2V0LU1EVE1vbml0b3JEYXRhIFRlc3QtTURURGVwbG95bWVudFNoYXJlIFRlc3QtTURUTW9uaXRvckRhdGEgVXBkYXRlLU1EVERhdGFiYXNlU2NoZW1hIFwiICtcbiAgICAgICAgXCJVcGRhdGUtTURURGVwbG95bWVudFNoYXJlIFVwZGF0ZS1NRFRMaW5rZWREUyBVcGRhdGUtTURUTWVkaWEgQWRkLVZhbXRQcm9kdWN0S2V5IEV4cG9ydC1WYW10RGF0YSBGaW5kLVZhbXRNYW5hZ2VkTWFjaGluZSBcIiArXG4gICAgICAgIFwiR2V0LVZhbXRDb25maXJtYXRpb25JZCBHZXQtVmFtdFByb2R1Y3QgR2V0LVZhbXRQcm9kdWN0S2V5IEltcG9ydC1WYW10RGF0YSBJbml0aWFsaXplLVZhbXREYXRhIEluc3RhbGwtVmFtdENvbmZpcm1hdGlvbklkIFwiICtcbiAgICAgICAgXCJJbnN0YWxsLVZhbXRQcm9kdWN0QWN0aXZhdGlvbiBJbnN0YWxsLVZhbXRQcm9kdWN0S2V5IFVwZGF0ZS1WYW10UHJvZHVjdCBBZGQtQ0lEYXRhc3RvcmUgQWRkLUtleU1hbmFnZW1lbnRTZXJ2ZXIgQWRkLU5vZGVLZXlzIFwiICtcbiAgICAgICAgXCJBZGQtTnN4RHluYW1pY0NyaXRlcmlhIEFkZC1Oc3hEeW5hbWljTWVtYmVyU2V0IEFkZC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBBZGQtTnN4RmlyZXdhbGxFeGNsdXNpb25MaXN0TWVtYmVyIEFkZC1Oc3hGaXJld2FsbFJ1bGVNZW1iZXIgXCIgK1xuICAgICAgICBcIkFkZC1Oc3hJcFNldE1lbWJlciBBZGQtTnN4TGljZW5zZSBBZGQtTnN4TG9hZEJhbGFuY2VyUG9vbE1lbWJlciBBZGQtTnN4TG9hZEJhbGFuY2VyVmlwIEFkZC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEFkZC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEFkZC1Oc3hTZWN1cml0eVBvbGljeVJ1bGVHcm91cCBBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlU2VydmljZSBBZGQtTnN4U2VydmljZUdyb3VwTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4VHJhbnNwb3J0Wm9uZU1lbWJlciBBZGQtUGFzc3Rocm91Z2hEZXZpY2UgQWRkLVZEU3dpdGNoUGh5c2ljYWxOZXR3b3JrQWRhcHRlciBBZGQtVkRTd2l0Y2hWTUhvc3QgQWRkLVZNSG9zdCBBZGQtVk1Ib3N0TnRwU2VydmVyIFwiICtcbiAgICAgICAgXCJBZGQtVmlydHVhbFN3aXRjaFBoeXNpY2FsTmV0d29ya0FkYXB0ZXIgQWRkLVhtbEVsZW1lbnQgQWRkLXZSQUN1c3RvbUZvcm0gQWRkLXZSQVByaW5jaXBhbFRvVGVuYW50Um9sZSBBZGQtdlJBUmVzZXJ2YXRpb25OZXR3b3JrIFwiICtcbiAgICAgICAgXCJBZGQtdlJBUmVzZXJ2YXRpb25TdG9yYWdlIENsZWFyLU5zeEVkZ2VJbnRlcmZhY2UgQ2xlYXItTnN4TWFuYWdlclRpbWVTZXR0aW5ncyBDb21wcmVzcy1BcmNoaXZlIENvbm5lY3QtQ0lTZXJ2ZXIgQ29ubmVjdC1DaXNTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkNvbm5lY3QtSENYU2VydmVyIENvbm5lY3QtTklTZXJ2ZXIgQ29ubmVjdC1Oc3hMb2dpY2FsU3dpdGNoIENvbm5lY3QtTnN4U2VydmVyIENvbm5lY3QtTnN4dFNlcnZlciBDb25uZWN0LVNybVNlcnZlciBDb25uZWN0LVZJU2VydmVyIFwiICtcbiAgICAgICAgXCJDb25uZWN0LVZtYyBDb25uZWN0LXZSQVNlcnZlciBDb25uZWN0LXZSTklTZXJ2ZXIgQ29udmVydEZyb20tTWFya2Rvd24gQ29udmVydFRvLU1PRkluc3RhbmNlIENvcHktRGF0YXN0b3JlSXRlbSBDb3B5LUhhcmREaXNrIENvcHktTnN4RWRnZSBcIiArXG4gICAgICAgIFwiQ29weS1WRGlzayBDb3B5LVZNR3Vlc3RGaWxlIERlYnVnLVJ1bnNwYWNlIERpc2FibGUtTnN4RWRnZVNzaCBEaXNhYmxlLVJ1bnNwYWNlRGVidWcgRGlzYWJsZS12Uk5JRGF0YVNvdXJjZSBEaXNjb25uZWN0LUNJU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LUNpc1NlcnZlciBEaXNjb25uZWN0LUhDWFNlcnZlciBEaXNjb25uZWN0LU5zeExvZ2ljYWxTd2l0Y2ggRGlzY29ubmVjdC1Oc3hTZXJ2ZXIgRGlzY29ubmVjdC1Oc3h0U2VydmVyIERpc2Nvbm5lY3QtU3JtU2VydmVyIFwiICtcbiAgICAgICAgXCJEaXNjb25uZWN0LVZJU2VydmVyIERpc2Nvbm5lY3QtVm1jIERpc2Nvbm5lY3QtdlJBU2VydmVyIERpc2Nvbm5lY3QtdlJOSVNlcnZlciBEaXNtb3VudC1Ub29scyBFbmFibGUtTnN4RWRnZVNzaCBFbmFibGUtUnVuc3BhY2VEZWJ1ZyBcIiArXG4gICAgICAgIFwiRW5hYmxlLXZSTklEYXRhU291cmNlIEV4cGFuZC1BcmNoaXZlIEV4cG9ydC1Oc3hPYmplY3QgRXhwb3J0LVNwYm1TdG9yYWdlUG9saWN5IEV4cG9ydC1WQXBwIEV4cG9ydC1WRFBvcnRHcm91cCBFeHBvcnQtVkRTd2l0Y2ggXCIgK1xuICAgICAgICBcIkV4cG9ydC1WTUhvc3RQcm9maWxlIEV4cG9ydC12UkFJY29uIEV4cG9ydC12UkFQYWNrYWdlIEZpbmQtQ29tbWFuZCBGaW5kLURzY1Jlc291cmNlIEZpbmQtTW9kdWxlIEZpbmQtTnN4V2hlcmVWTVVzZWQgRmluZC1QYWNrYWdlIFwiICtcbiAgICAgICAgXCJGaW5kLVBhY2thZ2VQcm92aWRlciBGaW5kLVJvbGVDYXBhYmlsaXR5IEZpbmQtU2NyaXB0IEZvcm1hdC1IZXggRm9ybWF0LVZNSG9zdERpc2tQYXJ0aXRpb24gRm9ybWF0LVhNTCBHZW5lcmF0ZS1WZXJzaW9uSW5mbyBcIiArXG4gICAgICAgIFwiR2V0LUFkdmFuY2VkU2V0dGluZyBHZXQtQWxhcm1BY3Rpb24gR2V0LUFsYXJtQWN0aW9uVHJpZ2dlciBHZXQtQWxhcm1EZWZpbml0aW9uIEdldC1Bbm5vdGF0aW9uIEdldC1DRERyaXZlIEdldC1DSUFjY2Vzc0NvbnRyb2xSdWxlIFwiICtcbiAgICAgICAgXCJHZXQtQ0lEYXRhc3RvcmUgR2V0LUNJTmV0d29ya0FkYXB0ZXIgR2V0LUNJUm9sZSBHZXQtQ0lVc2VyIEdldC1DSVZBcHAgR2V0LUNJVkFwcE5ldHdvcmsgR2V0LUNJVkFwcFN0YXJ0UnVsZSBHZXQtQ0lWQXBwVGVtcGxhdGUgR2V0LUNJVk0gXCIgK1xuICAgICAgICBcIkdldC1DSVZNVGVtcGxhdGUgR2V0LUNJVmlldyBHZXQtQ2F0YWxvZyBHZXQtQ2lzQ29tbWFuZCBHZXQtQ2lzU2VydmljZSBHZXQtQ2xvdWRDb21tYW5kIEdldC1DbHVzdGVyIEdldC1Db21wYXRpYmxlVmVyc2lvbkFkZHRpb25hUHJvcGVydGllc1N0ciBcIiArXG4gICAgICAgIFwiR2V0LUNvbXBsZXhSZXNvdXJjZVF1YWxpZmllciBHZXQtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgR2V0LUNvbnRlbnRMaWJyYXJ5SXRlbSBHZXQtQ3VzdG9tQXR0cmlidXRlIEdldC1EU0NSZXNvdXJjZU1vZHVsZXMgR2V0LURhdGFjZW50ZXIgXCIgK1xuICAgICAgICBcIkdldC1EYXRhc3RvcmUgR2V0LURhdGFzdG9yZUNsdXN0ZXIgR2V0LURyc0NsdXN0ZXJHcm91cCBHZXQtRHJzUmVjb21tZW5kYXRpb24gR2V0LURyc1J1bGUgR2V0LURyc1ZNSG9zdFJ1bGUgR2V0LURzY1Jlc291cmNlIEdldC1FZGdlR2F0ZXdheSBcIiArXG4gICAgICAgIFwiR2V0LUVuY3J5cHRlZFBhc3N3b3JkIEdldC1FcnJvclJlcG9ydCBHZXQtRXN4Q2xpIEdldC1Fc3hUb3AgR2V0LUV4dGVybmFsTmV0d29yayBHZXQtRmlsZUhhc2ggR2V0LUZsb3BweURyaXZlIEdldC1Gb2xkZXIgR2V0LUhBUHJpbWFyeVZNSG9zdCBcIiArXG4gICAgICAgIFwiR2V0LUhDWEFwcGxpYW5jZSBHZXQtSENYQXBwbGlhbmNlQ29tcHV0ZSBHZXQtSENYQXBwbGlhbmNlRFZTIEdldC1IQ1hBcHBsaWFuY2VEYXRhc3RvcmUgR2V0LUhDWEFwcGxpYW5jZU5ldHdvcmsgR2V0LUhDWENvbnRhaW5lciBcIiArXG4gICAgICAgIFwiR2V0LUhDWERhdGFzdG9yZSBHZXQtSENYR2F0ZXdheSBHZXQtSENYSW50ZXJjb25uZWN0U3RhdHVzIEdldC1IQ1hKb2IgR2V0LUhDWE1pZ3JhdGlvbiBHZXQtSENYTmV0d29yayBHZXQtSENYTmV0d29ya0V4dGVuc2lvbiBcIiArXG4gICAgICAgIFwiR2V0LUhDWFJlcGxpY2F0aW9uIEdldC1IQ1hSZXBsaWNhdGlvblNuYXBzaG90IEdldC1IQ1hTZXJ2aWNlIEdldC1IQ1hTaXRlIEdldC1IQ1hTaXRlUGFpcmluZyBHZXQtSENYVk0gR2V0LUhhcmREaXNrIEdldC1JU2NzaUhiYVRhcmdldCBcIiArXG4gICAgICAgIFwiR2V0LUlubmVyTW9zdEVycm9yUmVjb3JkIEdldC1JbnN0YWxsUGF0aCBHZXQtSW5zdGFsbGVkTW9kdWxlIEdldC1JbnN0YWxsZWRTY3JpcHQgR2V0LUludmVudG9yeSBHZXQtSXRlbVByb3BlcnR5VmFsdWUgR2V0LUtleU1hbmFnZW1lbnRTZXJ2ZXIgXCIgK1xuICAgICAgICBcIkdldC1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgR2V0LUttc0NsdXN0ZXIgR2V0LUxvZyBHZXQtTG9nVHlwZSBHZXQtTWFya2Rvd25PcHRpb24gR2V0LU1lZGlhIEdldC1Nb2ZJbnN0YW5jZU5hbWUgR2V0LU1vZkluc3RhbmNlVGV4dCBHZXQtTmV0d29ya0FkYXB0ZXIgR2V0LU5ldHdvcmtQb29sIFwiICtcbiAgICAgICAgXCJHZXQtTmZzVXNlciBHZXQtTmljVGVhbWluZ1BvbGljeSBHZXQtTnN4QXBwbGljYWJsZU1lbWJlciBHZXQtTnN4QXBwbGljYWJsZVNlY3VyaXR5QWN0aW9uIEdldC1Oc3hCYWNraW5nRFZTd2l0Y2ggR2V0LU5zeEJhY2tpbmdQb3J0R3JvdXAgR2V0LU5zeENsaURmd0FkZHJTZXQgXCIgK1xuICAgICAgICBcIkdldC1Oc3hDbGlEZndGaWx0ZXIgR2V0LU5zeENsaURmd1J1bGUgR2V0LU5zeENsdXN0ZXJTdGF0dXMgR2V0LU5zeENvbnRyb2xsZXIgR2V0LU5zeER5bmFtaWNDcml0ZXJpYSBHZXQtTnN4RHluYW1pY01lbWJlclNldCBHZXQtTnN4RWRnZSBHZXQtTnN4RWRnZUJncCBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VCZ3BOZWlnaGJvdXIgR2V0LU5zeEVkZ2VDZXJ0aWZpY2F0ZSBHZXQtTnN4RWRnZUNzciBHZXQtTnN4RWRnZUZpcmV3YWxsIEdldC1Oc3hFZGdlRmlyZXdhbGxSdWxlIEdldC1Oc3hFZGdlSW50ZXJmYWNlIEdldC1Oc3hFZGdlSW50ZXJmYWNlQWRkcmVzcyBcIiArXG4gICAgICAgIFwiR2V0LU5zeEVkZ2VOYXQgR2V0LU5zeEVkZ2VOYXRSdWxlIEdldC1Oc3hFZGdlT3NwZiBHZXQtTnN4RWRnZU9zcGZBcmVhIEdldC1Oc3hFZGdlT3NwZkludGVyZmFjZSBHZXQtTnN4RWRnZVByZWZpeCBHZXQtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBHZXQtTnN4RWRnZVJvdXRpbmcgXCIgK1xuICAgICAgICBcIkdldC1Oc3hFZGdlU3RhdGljUm91dGUgR2V0LU5zeEVkZ2VTdWJJbnRlcmZhY2UgR2V0LU5zeEZpcmV3YWxsRXhjbHVzaW9uTGlzdE1lbWJlciBHZXQtTnN4RmlyZXdhbGxHbG9iYWxDb25maWd1cmF0aW9uIEdldC1Oc3hGaXJld2FsbFB1Ymxpc2hTdGF0dXMgR2V0LU5zeEZpcmV3YWxsUnVsZSBcIiArXG4gICAgICAgIFwiR2V0LU5zeEZpcmV3YWxsUnVsZU1lbWJlciBHZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gR2V0LU5zeEZpcmV3YWxsU2VjdGlvbiBHZXQtTnN4RmlyZXdhbGxUaHJlc2hvbGQgR2V0LU5zeElwUG9vbCBHZXQtTnN4SXBTZXQgR2V0LU5zeExpY2Vuc2UgR2V0LU5zeExvYWRCYWxhbmNlciBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBHZXQtTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIEdldC1Oc3hMb2FkQmFsYW5jZXJNb25pdG9yIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sIEdldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIEdldC1Oc3hMb2FkQmFsYW5jZXJTdGF0cyBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvYWRCYWxhbmNlclZpcCBHZXQtTnN4TG9naWNhbFJvdXRlciBHZXQtTnN4TG9naWNhbFJvdXRlckJncCBHZXQtTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnZSBHZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnaW5nIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGYgR2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBHZXQtTnN4TG9naWNhbFJvdXRlck9zcGZJbnRlcmZhY2UgR2V0LU5zeExvZ2ljYWxSb3V0ZXJQcmVmaXggXCIgK1xuICAgICAgICBcIkdldC1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIEdldC1Oc3hMb2dpY2FsUm91dGVyUm91dGluZyBHZXQtTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIEdldC1Oc3hMb2dpY2FsU3dpdGNoIEdldC1Oc3hNYWNTZXQgR2V0LU5zeE1hbmFnZXJCYWNrdXAgXCIgK1xuICAgICAgICBcIkdldC1Oc3hNYW5hZ2VyQ2VydGlmaWNhdGUgR2V0LU5zeE1hbmFnZXJDb21wb25lbnRTdW1tYXJ5IEdldC1Oc3hNYW5hZ2VyTmV0d29yayBHZXQtTnN4TWFuYWdlclJvbGUgR2V0LU5zeE1hbmFnZXJTc29Db25maWcgR2V0LU5zeE1hbmFnZXJTeW5jU3RhdHVzIEdldC1Oc3hNYW5hZ2VyU3lzbG9nU2VydmVyIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TWFuYWdlclN5c3RlbVN1bW1hcnkgR2V0LU5zeE1hbmFnZXJUaW1lU2V0dGluZ3MgR2V0LU5zeE1hbmFnZXJWY2VudGVyQ29uZmlnIEdldC1Oc3hTZWNvbmRhcnlNYW5hZ2VyIEdldC1Oc3hTZWN1cml0eUdyb3VwIEdldC1Oc3hTZWN1cml0eUdyb3VwRWZmZWN0aXZlSXBBZGRyZXNzIFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZU1hY0FkZHJlc3MgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVNZW1iZXIgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVWaXJ0dWFsTWFjaGluZSBHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZVZuaWMgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyVHlwZXMgR2V0LU5zeFNlY3VyaXR5UG9saWN5IEdldC1Oc3hTZWN1cml0eVBvbGljeUhpZ2hlc3RVc2VkUHJlY2VkZW5jZSBHZXQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIEdldC1Oc3hTZWN1cml0eVRhZyBHZXQtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VnbWVudElkUmFuZ2UgR2V0LU5zeFNlcnZpY2UgR2V0LU5zeFNlcnZpY2VEZWZpbml0aW9uIEdldC1Oc3hTZXJ2aWNlR3JvdXAgR2V0LU5zeFNlcnZpY2VHcm91cE1lbWJlciBHZXQtTnN4U2VydmljZVByb2ZpbGUgR2V0LU5zeFNwb29mZ3VhcmROaWMgR2V0LU5zeFNwb29mZ3VhcmRQb2xpY3kgXCIgK1xuICAgICAgICBcIkdldC1Oc3hTc2xWcG4gR2V0LU5zeFNzbFZwbkF1dGhTZXJ2ZXIgR2V0LU5zeFNzbFZwbkNsaWVudEluc3RhbGxhdGlvblBhY2thZ2UgR2V0LU5zeFNzbFZwbklwUG9vbCBHZXQtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgR2V0LU5zeFNzbFZwblVzZXIgR2V0LU5zeFRyYW5zcG9ydFpvbmUgXCIgK1xuICAgICAgICBcIkdldC1Oc3hVc2VyUm9sZSBHZXQtTnN4VmRzQ29udGV4dCBHZXQtTnN4dFBvbGljeVNlcnZpY2UgR2V0LU5zeHRTZXJ2aWNlIEdldC1PU0N1c3RvbWl6YXRpb25OaWNNYXBwaW5nIEdldC1PU0N1c3RvbWl6YXRpb25TcGVjIEdldC1PcmcgR2V0LU9yZ05ldHdvcmsgR2V0LU9yZ1ZkYyBcIiArXG4gICAgICAgIFwiR2V0LU9yZ1ZkY05ldHdvcmsgR2V0LU92ZkNvbmZpZ3VyYXRpb24gR2V0LVBTQ3VycmVudENvbmZpZ3VyYXRpb25Ob2RlIEdldC1QU0RlZmF1bHRDb25maWd1cmF0aW9uRG9jdW1lbnQgR2V0LVBTTWV0YUNvbmZpZ0RvY3VtZW50SW5zdFZlcnNpb25JbmZvIEdldC1QU01ldGFDb25maWd1cmF0aW9uUHJvY2Vzc2VkIFwiICtcbiAgICAgICAgXCJHZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgR2V0LVBTUmVhZExpbmVPcHRpb24gR2V0LVBTUmVwb3NpdG9yeSBHZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBHZXQtUFNWZXJzaW9uIEdldC1QYWNrYWdlIEdldC1QYWNrYWdlUHJvdmlkZXIgR2V0LVBhY2thZ2VTb3VyY2UgR2V0LVBhc3N0aHJvdWdoRGV2aWNlIFwiICtcbiAgICAgICAgXCJHZXQtUG9zaXRpb25JbmZvIEdldC1Qb3dlckNMSUNvbW11bml0eSBHZXQtUG93ZXJDTElDb25maWd1cmF0aW9uIEdldC1Qb3dlckNMSUhlbHAgR2V0LVBvd2VyQ0xJVmVyc2lvbiBHZXQtUG93ZXJOc3hWZXJzaW9uIEdldC1Qcm92aWRlclZkYyBHZXQtUHVibGljS2V5RnJvbUZpbGUgXCIgK1xuICAgICAgICBcIkdldC1QdWJsaWNLZXlGcm9tU3RvcmUgR2V0LVJlc291cmNlUG9vbCBHZXQtUnVuc3BhY2UgR2V0LVJ1bnNwYWNlRGVidWcgR2V0LVNjc2lDb250cm9sbGVyIEdldC1TY3NpTHVuIEdldC1TY3NpTHVuUGF0aCBHZXQtU2VjdXJpdHlJbmZvIEdldC1TZWN1cml0eVBvbGljeSBHZXQtU25hcHNob3QgXCIgK1xuICAgICAgICBcIkdldC1TcGJtQ2FwYWJpbGl0eSBHZXQtU3BibUNvbXBhdGlibGVTdG9yYWdlIEdldC1TcGJtRW50aXR5Q29uZmlndXJhdGlvbiBHZXQtU3BibUZhdWx0RG9tYWluIEdldC1TcGJtUG9pbnRJblRpbWVSZXBsaWNhIEdldC1TcGJtUmVwbGljYXRpb25Hcm91cCBHZXQtU3BibVJlcGxpY2F0aW9uUGFpciBcIiArXG4gICAgICAgIFwiR2V0LVNwYm1TdG9yYWdlUG9saWN5IEdldC1TdGF0IEdldC1TdGF0SW50ZXJ2YWwgR2V0LVN0YXRUeXBlIEdldC1UYWcgR2V0LVRhZ0Fzc2lnbm1lbnQgR2V0LVRhZ0NhdGVnb3J5IEdldC1UYXNrIEdldC1UZW1wbGF0ZSBHZXQtVGltZVpvbmUgR2V0LVVwdGltZSBHZXQtVXNiRGV2aWNlIEdldC1WQUlPRmlsdGVyIFwiICtcbiAgICAgICAgXCJHZXQtVkFwcCBHZXQtVkRCbG9ja2VkUG9saWN5IEdldC1WRFBvcnQgR2V0LVZEUG9ydGdyb3VwIEdldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IEdldC1WRFNlY3VyaXR5UG9saWN5IEdldC1WRFN3aXRjaCBHZXQtVkRTd2l0Y2hQcml2YXRlVmxhbiBHZXQtVkRUcmFmZmljU2hhcGluZ1BvbGljeSBcIiArXG4gICAgICAgIFwiR2V0LVZEVXBsaW5rTGFjcFBvbGljeSBHZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IEdldC1WRGlzayBHZXQtVklBY2NvdW50IEdldC1WSUNvbW1hbmQgR2V0LVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBHZXQtVklFdmVudCBHZXQtVklPYmplY3RCeVZJVmlldyBHZXQtVklQZXJtaXNzaW9uIEdldC1WSVByaXZpbGVnZSBcIiArXG4gICAgICAgIFwiR2V0LVZJUHJvcGVydHkgR2V0LVZJUm9sZSBHZXQtVk0gR2V0LVZNR3Vlc3QgR2V0LVZNSG9zdCBHZXQtVk1Ib3N0QWNjb3VudCBHZXQtVk1Ib3N0QWR2YW5jZWRDb25maWd1cmF0aW9uIEdldC1WTUhvc3RBdXRoZW50aWNhdGlvbiBHZXQtVk1Ib3N0QXZhaWxhYmxlVGltZVpvbmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIEdldC1WTUhvc3REaXNrIEdldC1WTUhvc3REaXNrUGFydGl0aW9uIEdldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgR2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIEdldC1WTUhvc3RGaXJtd2FyZSBHZXQtVk1Ib3N0SGFyZHdhcmUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3RIYmEgR2V0LVZNSG9zdE1vZHVsZSBHZXQtVk1Ib3N0TmV0d29yayBHZXQtVk1Ib3N0TmV0d29ya0FkYXB0ZXIgR2V0LVZNSG9zdE50cFNlcnZlciBHZXQtVk1Ib3N0UGF0Y2ggR2V0LVZNSG9zdFBjaURldmljZSBHZXQtVk1Ib3N0UHJvZmlsZSBcIiArXG4gICAgICAgIFwiR2V0LVZNSG9zdFByb2ZpbGVJbWFnZUNhY2hlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVJlcXVpcmVkSW5wdXQgR2V0LVZNSG9zdFByb2ZpbGVTdG9yYWdlRGV2aWNlQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0UHJvZmlsZVVzZXJDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0Um91dGUgR2V0LVZNSG9zdFNlcnZpY2UgR2V0LVZNSG9zdFNubXAgR2V0LVZNSG9zdFN0YXJ0UG9saWN5IEdldC1WTUhvc3RTdG9yYWdlIEdldC1WTUhvc3RTeXNMb2dTZXJ2ZXIgR2V0LVZNUXVlc3Rpb24gXCIgK1xuICAgICAgICBcIkdldC1WTVJlc291cmNlQ29uZmlndXJhdGlvbiBHZXQtVk1TdGFydFBvbGljeSBHZXQtVlRwbSBHZXQtVlRwbUNTUiBHZXQtVlRwbUNlcnRpZmljYXRlIEdldC1WYXNhUHJvdmlkZXIgR2V0LVZhc2FTdG9yYWdlQXJyYXkgR2V0LVZpZXcgR2V0LVZpcnR1YWxQb3J0R3JvdXAgR2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIkdldC1WbWNTZGRjTmV0d29ya1NlcnZpY2UgR2V0LVZtY1NlcnZpY2UgR2V0LVZzYW5DbHVzdGVyQ29uZmlndXJhdGlvbiBHZXQtVnNhbkNvbXBvbmVudCBHZXQtVnNhbkRpc2sgR2V0LVZzYW5EaXNrR3JvdXAgR2V0LVZzYW5FdmFjdWF0aW9uUGxhbiBHZXQtVnNhbkZhdWx0RG9tYWluIFwiICtcbiAgICAgICAgXCJHZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgR2V0LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gR2V0LVZzYW5Jc2NzaUx1biBHZXQtVnNhbklzY3NpVGFyZ2V0IEdldC1Wc2FuT2JqZWN0IEdldC1Wc2FuUmVzeW5jaW5nQ29tcG9uZW50IEdldC1Wc2FuUnVudGltZUluZm8gXCIgK1xuICAgICAgICBcIkdldC1Wc2FuU3BhY2VVc2FnZSBHZXQtVnNhblN0YXQgR2V0LVZzYW5WaWV3IEdldC12UkFBcHBsaWFuY2VTZXJ2aWNlU3RhdHVzIEdldC12UkFBdXRob3JpemF0aW9uUm9sZSBHZXQtdlJBQmx1ZXByaW50IEdldC12UkFCdXNpbmVzc0dyb3VwIEdldC12UkFDYXRhbG9nSXRlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSQUNhdGFsb2dJdGVtUmVxdWVzdFRlbXBsYXRlIEdldC12UkFDYXRhbG9nUHJpbmNpcGFsIEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2UgR2V0LXZSQUNvbXBvbmVudFJlZ2lzdHJ5U2VydmljZUVuZHBvaW50IEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2VTdGF0dXMgXCIgK1xuICAgICAgICBcIkdldC12UkFDb250ZW50IEdldC12UkFDb250ZW50RGF0YSBHZXQtdlJBQ29udGVudFR5cGUgR2V0LXZSQUN1c3RvbUZvcm0gR2V0LXZSQUVudGl0bGVkQ2F0YWxvZ0l0ZW0gR2V0LXZSQUVudGl0bGVkU2VydmljZSBHZXQtdlJBRW50aXRsZW1lbnQgR2V0LXZSQUV4dGVybmFsTmV0d29ya1Byb2ZpbGUgXCIgK1xuICAgICAgICBcIkdldC12UkFHcm91cFByaW5jaXBhbCBHZXQtdlJBSWNvbiBHZXQtdlJBTkFUTmV0d29ya1Byb2ZpbGUgR2V0LXZSQU5ldHdvcmtQcm9maWxlSVBBZGRyZXNzTGlzdCBHZXQtdlJBTmV0d29ya1Byb2ZpbGVJUFJhbmdlU3VtbWFyeSBHZXQtdlJBUGFja2FnZSBHZXQtdlJBUGFja2FnZUNvbnRlbnQgXCIgK1xuICAgICAgICBcIkdldC12UkFQcm9wZXJ0eURlZmluaXRpb24gR2V0LXZSQVByb3BlcnR5R3JvdXAgR2V0LXZSQVJlcXVlc3QgR2V0LXZSQVJlcXVlc3REZXRhaWwgR2V0LXZSQVJlc2VydmF0aW9uIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZSBHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2VNZW1vcnkgXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZU5ldHdvcmsgR2V0LXZSQVJlc2VydmF0aW9uQ29tcHV0ZVJlc291cmNlUmVzb3VyY2VQb29sIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZVN0b3JhZ2UgR2V0LXZSQVJlc2VydmF0aW9uUG9saWN5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBUmVzZXJ2YXRpb25UZW1wbGF0ZSBHZXQtdlJBUmVzZXJ2YXRpb25UeXBlIEdldC12UkFSZXNvdXJjZSBHZXQtdlJBUmVzb3VyY2VBY3Rpb24gR2V0LXZSQVJlc291cmNlQWN0aW9uUmVxdWVzdFRlbXBsYXRlIEdldC12UkFSZXNvdXJjZU1ldHJpYyBHZXQtdlJBUmVzb3VyY2VPcGVyYXRpb24gXCIgK1xuICAgICAgICBcIkdldC12UkFSZXNvdXJjZVR5cGUgR2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIEdldC12UkFTZXJ2aWNlIEdldC12UkFTZXJ2aWNlQmx1ZXByaW50IEdldC12UkFTb3VyY2VNYWNoaW5lIEdldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgR2V0LXZSQVRlbmFudCBHZXQtdlJBVGVuYW50RGlyZWN0b3J5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBVGVuYW50RGlyZWN0b3J5U3RhdHVzIEdldC12UkFUZW5hbnRSb2xlIEdldC12UkFVc2VyUHJpbmNpcGFsIEdldC12UkFVc2VyUHJpbmNpcGFsR3JvdXBNZW1iZXJzaGlwIEdldC12UkFWZXJzaW9uIEdldC12Uk5JQVBJVmVyc2lvbiBHZXQtdlJOSUFwcGxpY2F0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtdlJOSUFwcGxpY2F0aW9uVGllciBHZXQtdlJOSURhdGFTb3VyY2UgR2V0LXZSTklEYXRhU291cmNlU05NUENvbmZpZyBHZXQtdlJOSURhdGFzdG9yZSBHZXQtdlJOSURpc3RyaWJ1dGVkU3dpdGNoIEdldC12Uk5JRGlzdHJpYnV0ZWRTd2l0Y2hQb3J0R3JvdXAgR2V0LXZSTklFbnRpdHkgXCIgK1xuICAgICAgICBcIkdldC12Uk5JRW50aXR5TmFtZSBHZXQtdlJOSUZpcmV3YWxsUnVsZSBHZXQtdlJOSUZsb3cgR2V0LXZSTklIb3N0IEdldC12Uk5JSG9zdFZNS05pYyBHZXQtdlJOSUlQU2V0IEdldC12Uk5JTDJOZXR3b3JrIEdldC12Uk5JTlNYTWFuYWdlciBHZXQtdlJOSU5vZGVzIEdldC12Uk5JUHJvYmxlbSBcIiArXG4gICAgICAgIFwiR2V0LXZSTklSZWNvbW1lbmRlZFJ1bGVzIEdldC12Uk5JUmVjb21tZW5kZWRSdWxlc05zeEJ1bmRsZSBHZXQtdlJOSVNlY3VyaXR5R3JvdXAgR2V0LXZSTklTZWN1cml0eVRhZyBHZXQtdlJOSVNlcnZpY2UgR2V0LXZSTklTZXJ2aWNlR3JvdXAgR2V0LXZSTklWTSBHZXQtdlJOSVZNdk5JQyBcIiArXG4gICAgICAgIFwiR2V0LXZSTkl2Q2VudGVyIEdldC12Uk5JdkNlbnRlckNsdXN0ZXIgR2V0LXZSTkl2Q2VudGVyRGF0YWNlbnRlciBHZXQtdlJOSXZDZW50ZXJGb2xkZXIgR3JhbnQtTnN4U3Bvb2ZndWFyZE5pY0FwcHJvdmFsIEltcG9ydC1DSVZBcHAgSW1wb3J0LUNJVkFwcFRlbXBsYXRlIEltcG9ydC1Oc3hPYmplY3QgXCIgK1xuICAgICAgICBcIkltcG9ydC1QYWNrYWdlUHJvdmlkZXIgSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSBJbXBvcnQtU3BibVN0b3JhZ2VQb2xpY3kgSW1wb3J0LVZBcHAgSW1wb3J0LVZNSG9zdFByb2ZpbGUgSW1wb3J0LXZSQUNvbnRlbnREYXRhIEltcG9ydC12UkFJY29uIEltcG9ydC12UkFQYWNrYWdlIFwiICtcbiAgICAgICAgXCJJbml0aWFsaXplLUNvbmZpZ3VyYXRpb25SdW50aW1lU3RhdGUgSW5zdGFsbC1Nb2R1bGUgSW5zdGFsbC1Oc3hDbHVzdGVyIEluc3RhbGwtUGFja2FnZSBJbnN0YWxsLVBhY2thZ2VQcm92aWRlciBJbnN0YWxsLVNjcmlwdCBJbnN0YWxsLVZNSG9zdFBhdGNoIEludm9rZS1EcnNSZWNvbW1lbmRhdGlvbiBcIiArXG4gICAgICAgIFwiSW52b2tlLU5zeENsaSBJbnZva2UtTnN4Q2x1c3RlclJlc29sdmVBbGwgSW52b2tlLU5zeE1hbmFnZXJTeW5jIEludm9rZS1Oc3hSZXN0TWV0aG9kIEludm9rZS1Oc3hXZWJSZXF1ZXN0IEludm9rZS1WTUhvc3RQcm9maWxlIEludm9rZS1WTVNjcmlwdCBJbnZva2UtWHBhdGhRdWVyeSBcIiArXG4gICAgICAgIFwiSW52b2tlLXZSQURhdGFDb2xsZWN0aW9uIEludm9rZS12UkFSZXN0TWV0aG9kIEludm9rZS12UkFUZW5hbnREaXJlY3RvcnlTeW5jIEludm9rZS12Uk5JUmVzdE1ldGhvZCBKb2luLVN0cmluZyBNb3VudC1Ub29scyBNb3ZlLUNsdXN0ZXIgTW92ZS1EYXRhY2VudGVyIE1vdmUtRGF0YXN0b3JlIE1vdmUtRm9sZGVyIFwiICtcbiAgICAgICAgXCJNb3ZlLUhhcmREaXNrIE1vdmUtSW52ZW50b3J5IE1vdmUtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIE1vdmUtUmVzb3VyY2VQb29sIE1vdmUtVGVtcGxhdGUgTW92ZS1WQXBwIE1vdmUtVkRpc2sgTW92ZS1WTSBNb3ZlLVZNSG9zdCBOZXctQWR2YW5jZWRTZXR0aW5nIE5ldy1BbGFybUFjdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LUFsYXJtQWN0aW9uVHJpZ2dlciBOZXctQ0REcml2ZSBOZXctQ0lBY2Nlc3NDb250cm9sUnVsZSBOZXctQ0lWQXBwIE5ldy1DSVZBcHBOZXR3b3JrIE5ldy1DSVZBcHBUZW1wbGF0ZSBOZXctQ0lWTSBOZXctQ2x1c3RlciBOZXctQ3VzdG9tQXR0cmlidXRlIE5ldy1EYXRhY2VudGVyIE5ldy1EYXRhc3RvcmUgXCIgK1xuICAgICAgICBcIk5ldy1EYXRhc3RvcmVDbHVzdGVyIE5ldy1EYXRhc3RvcmVEcml2ZSBOZXctRHJzQ2x1c3Rlckdyb3VwIE5ldy1EcnNSdWxlIE5ldy1EcnNWTUhvc3RSdWxlIE5ldy1Ec2NDaGVja3N1bSBOZXctRmxvcHB5RHJpdmUgTmV3LUZvbGRlciBOZXctR3VpZCBOZXctSENYQXBwbGlhbmNlIE5ldy1IQ1hNaWdyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1IQ1hOZXR3b3JrRXh0ZW5zaW9uIE5ldy1IQ1hOZXR3b3JrTWFwcGluZyBOZXctSENYUmVwbGljYXRpb24gTmV3LUhDWFNpdGVQYWlyaW5nIE5ldy1IQ1hTdGF0aWNSb3V0ZSBOZXctSGFyZERpc2sgTmV3LUlTY3NpSGJhVGFyZ2V0IE5ldy1LbWlwQ2xpZW50Q2VydGlmaWNhdGUgXCIgK1xuICAgICAgICBcIk5ldy1OZXR3b3JrQWRhcHRlciBOZXctTmZzVXNlciBOZXctTnN4QWRkcmVzc1NwZWMgTmV3LU5zeENsdXN0ZXJWeGxhbkNvbmZpZyBOZXctTnN4Q29udHJvbGxlciBOZXctTnN4RHluYW1pY0NyaXRlcmlhU3BlYyBOZXctTnN4RWRnZSBOZXctTnN4RWRnZUJncE5laWdoYm91ciBOZXctTnN4RWRnZUNzciBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VGaXJld2FsbFJ1bGUgTmV3LU5zeEVkZ2VJbnRlcmZhY2VTcGVjIE5ldy1Oc3hFZGdlTmF0UnVsZSBOZXctTnN4RWRnZU9zcGZBcmVhIE5ldy1Oc3hFZGdlT3NwZkludGVyZmFjZSBOZXctTnN4RWRnZVByZWZpeCBOZXctTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeEVkZ2VTZWxmU2lnbmVkQ2VydGlmaWNhdGUgTmV3LU5zeEVkZ2VTdGF0aWNSb3V0ZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZSBOZXctTnN4RWRnZVN1YkludGVyZmFjZVNwZWMgTmV3LU5zeEZpcmV3YWxsUnVsZSBOZXctTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIk5ldy1Oc3hGaXJld2FsbFNlY3Rpb24gTmV3LU5zeElwUG9vbCBOZXctTnN4SXBTZXQgTmV3LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUHJvZmlsZSBOZXctTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25SdWxlIE5ldy1Oc3hMb2FkQmFsYW5jZXJNZW1iZXJTcGVjIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9hZEJhbGFuY2VyTW9uaXRvciBOZXctTnN4TG9hZEJhbGFuY2VyUG9vbCBOZXctTnN4TG9naWNhbFJvdXRlciBOZXctTnN4TG9naWNhbFJvdXRlckJncE5laWdoYm91ciBOZXctTnN4TG9naWNhbFJvdXRlckJyaWRnZSBOZXctTnN4TG9naWNhbFJvdXRlckludGVyZmFjZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2VTcGVjIE5ldy1Oc3hMb2dpY2FsUm91dGVyT3NwZkFyZWEgTmV3LU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIE5ldy1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IE5ldy1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFwiICtcbiAgICAgICAgXCJOZXctTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIE5ldy1Oc3hMb2dpY2FsU3dpdGNoIE5ldy1Oc3hNYWNTZXQgTmV3LU5zeE1hbmFnZXIgTmV3LU5zeFNlY3VyaXR5R3JvdXAgTmV3LU5zeFNlY3VyaXR5UG9saWN5IE5ldy1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWN1cml0eVBvbGljeUZpcmV3YWxsUnVsZVNwZWMgTmV3LU5zeFNlY3VyaXR5UG9saWN5R3Vlc3RJbnRyb3NwZWN0aW9uU3BlYyBOZXctTnN4U2VjdXJpdHlQb2xpY3lOZXR3b3JrSW50cm9zcGVjdGlvblNwZWMgTmV3LU5zeFNlY3VyaXR5VGFnIE5ldy1Oc3hTZWN1cml0eVRhZ0Fzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTZWdtZW50SWRSYW5nZSBOZXctTnN4U2VydmljZSBOZXctTnN4U2VydmljZUdyb3VwIE5ldy1Oc3hTcG9vZmd1YXJkUG9saWN5IE5ldy1Oc3hTc2xWcG5BdXRoU2VydmVyIE5ldy1Oc3hTc2xWcG5DbGllbnRJbnN0YWxsYXRpb25QYWNrYWdlIE5ldy1Oc3hTc2xWcG5JcFBvb2wgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hTc2xWcG5Qcml2YXRlTmV0d29yayBOZXctTnN4U3NsVnBuVXNlciBOZXctTnN4VHJhbnNwb3J0Wm9uZSBOZXctTnN4VmRzQ29udGV4dCBOZXctT1NDdXN0b21pemF0aW9uTmljTWFwcGluZyBOZXctT1NDdXN0b21pemF0aW9uU3BlYyBOZXctT3JnIE5ldy1PcmdOZXR3b3JrIE5ldy1PcmdWZGMgXCIgK1xuICAgICAgICBcIk5ldy1PcmdWZGNOZXR3b3JrIE5ldy1SZXNvdXJjZVBvb2wgTmV3LVNjcmlwdEZpbGVJbmZvIE5ldy1TY3NpQ29udHJvbGxlciBOZXctU25hcHNob3QgTmV3LVNwYm1SdWxlIE5ldy1TcGJtUnVsZVNldCBOZXctU3BibVN0b3JhZ2VQb2xpY3kgTmV3LVN0YXRJbnRlcnZhbCBOZXctVGFnIFwiICtcbiAgICAgICAgXCJOZXctVGFnQXNzaWdubWVudCBOZXctVGFnQ2F0ZWdvcnkgTmV3LVRlbXBsYXRlIE5ldy1UZW1wb3JhcnlGaWxlIE5ldy1WQUlPRmlsdGVyIE5ldy1WQXBwIE5ldy1WRFBvcnRncm91cCBOZXctVkRTd2l0Y2ggTmV3LVZEU3dpdGNoUHJpdmF0ZVZsYW4gTmV3LVZEaXNrIFwiICtcbiAgICAgICAgXCJOZXctVklDcmVkZW50aWFsU3RvcmVJdGVtIE5ldy1WSUludmVudG9yeURyaXZlIE5ldy1WSVBlcm1pc3Npb24gTmV3LVZJUHJvcGVydHkgTmV3LVZJUm9sZSBOZXctVklTYW1sU2VjdXJpdHlDb250ZXh0IE5ldy1WTSBOZXctVk1Ib3N0QWNjb3VudCBOZXctVk1Ib3N0TmV0d29ya0FkYXB0ZXIgXCIgK1xuICAgICAgICBcIk5ldy1WTUhvc3RQcm9maWxlIE5ldy1WTUhvc3RQcm9maWxlVm1Qb3J0R3JvdXBDb25maWd1cmF0aW9uIE5ldy1WTUhvc3RSb3V0ZSBOZXctVlRwbSBOZXctVmFzYVByb3ZpZGVyIE5ldy1WY3NPQXV0aFNlY3VyaXR5Q29udGV4dCBOZXctVmlydHVhbFBvcnRHcm91cCBOZXctVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiTmV3LVZzYW5EaXNrIE5ldy1Wc2FuRGlza0dyb3VwIE5ldy1Wc2FuRmF1bHREb21haW4gTmV3LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwIE5ldy1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cFRhcmdldEFzc29jaWF0aW9uIE5ldy1Wc2FuSXNjc2lMdW4gTmV3LVZzYW5Jc2NzaVRhcmdldCBcIiArXG4gICAgICAgIFwiTmV3LXZSQUJ1c2luZXNzR3JvdXAgTmV3LXZSQUVudGl0bGVtZW50IE5ldy12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIE5ldy12UkFHcm91cFByaW5jaXBhbCBOZXctdlJBTkFUTmV0d29ya1Byb2ZpbGUgTmV3LXZSQU5ldHdvcmtQcm9maWxlSVBSYW5nZURlZmluaXRpb24gTmV3LXZSQVBhY2thZ2UgXCIgK1xuICAgICAgICBcIk5ldy12UkFQcm9wZXJ0eURlZmluaXRpb24gTmV3LXZSQVByb3BlcnR5R3JvdXAgTmV3LXZSQVJlc2VydmF0aW9uIE5ldy12UkFSZXNlcnZhdGlvbk5ldHdvcmtEZWZpbml0aW9uIE5ldy12UkFSZXNlcnZhdGlvblBvbGljeSBOZXctdlJBUmVzZXJ2YXRpb25TdG9yYWdlRGVmaW5pdGlvbiBcIiArXG4gICAgICAgIFwiTmV3LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIE5ldy12UkFTZXJ2aWNlIE5ldy12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgTmV3LXZSQVRlbmFudCBOZXctdlJBVGVuYW50RGlyZWN0b3J5IE5ldy12UkFVc2VyUHJpbmNpcGFsIE5ldy12Uk5JQXBwbGljYXRpb24gTmV3LXZSTklBcHBsaWNhdGlvblRpZXIgXCIgK1xuICAgICAgICBcIk5ldy12Uk5JRGF0YVNvdXJjZSBPcGVuLVZNQ29uc29sZVdpbmRvdyBQdWJsaXNoLU1vZHVsZSBQdWJsaXNoLU5zeFNwb29mZ3VhcmRQb2xpY3kgUHVibGlzaC1TY3JpcHQgUmVnaXN0ZXItUFNSZXBvc2l0b3J5IFJlZ2lzdGVyLVBhY2thZ2VTb3VyY2UgUmVtb3ZlLUFkdmFuY2VkU2V0dGluZyBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUFsYXJtQWN0aW9uIFJlbW92ZS1BbGFybUFjdGlvblRyaWdnZXIgUmVtb3ZlLUFsaWFzIFJlbW92ZS1DRERyaXZlIFJlbW92ZS1DSUFjY2Vzc0NvbnRyb2xSdWxlIFJlbW92ZS1DSVZBcHAgUmVtb3ZlLUNJVkFwcE5ldHdvcmsgUmVtb3ZlLUNJVkFwcFRlbXBsYXRlIFJlbW92ZS1DbHVzdGVyIFwiICtcbiAgICAgICAgXCJSZW1vdmUtQ3VzdG9tQXR0cmlidXRlIFJlbW92ZS1EYXRhY2VudGVyIFJlbW92ZS1EYXRhc3RvcmUgUmVtb3ZlLURhdGFzdG9yZUNsdXN0ZXIgUmVtb3ZlLURyc0NsdXN0ZXJHcm91cCBSZW1vdmUtRHJzUnVsZSBSZW1vdmUtRHJzVk1Ib3N0UnVsZSBSZW1vdmUtRmxvcHB5RHJpdmUgUmVtb3ZlLUZvbGRlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUhDWEFwcGxpYW5jZSBSZW1vdmUtSENYTmV0d29ya0V4dGVuc2lvbiBSZW1vdmUtSENYUmVwbGljYXRpb24gUmVtb3ZlLUhDWFNpdGVQYWlyaW5nIFJlbW92ZS1IYXJkRGlzayBSZW1vdmUtSVNjc2lIYmFUYXJnZXQgUmVtb3ZlLUludmVudG9yeSBSZW1vdmUtS2V5TWFuYWdlbWVudFNlcnZlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5ldHdvcmtBZGFwdGVyIFJlbW92ZS1OZnNVc2VyIFJlbW92ZS1Oc3hDbHVzdGVyIFJlbW92ZS1Oc3hDbHVzdGVyVnhsYW5Db25maWcgUmVtb3ZlLU5zeENvbnRyb2xsZXIgUmVtb3ZlLU5zeER5bmFtaWNDcml0ZXJpYSBSZW1vdmUtTnN4RHluYW1pY01lbWJlclNldCBSZW1vdmUtTnN4RWRnZSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeEVkZ2VCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeEVkZ2VDZXJ0aWZpY2F0ZSBSZW1vdmUtTnN4RWRnZUNzciBSZW1vdmUtTnN4RWRnZUZpcmV3YWxsUnVsZSBSZW1vdmUtTnN4RWRnZUludGVyZmFjZUFkZHJlc3MgUmVtb3ZlLU5zeEVkZ2VOYXRSdWxlIFJlbW92ZS1Oc3hFZGdlT3NwZkFyZWEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hFZGdlT3NwZkludGVyZmFjZSBSZW1vdmUtTnN4RWRnZVByZWZpeCBSZW1vdmUtTnN4RWRnZVJlZGlzdHJpYnV0aW9uUnVsZSBSZW1vdmUtTnN4RWRnZVN0YXRpY1JvdXRlIFJlbW92ZS1Oc3hFZGdlU3ViSW50ZXJmYWNlIFJlbW92ZS1Oc3hGaXJld2FsbEV4Y2x1c2lvbkxpc3RNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hGaXJld2FsbFJ1bGUgUmVtb3ZlLU5zeEZpcmV3YWxsUnVsZU1lbWJlciBSZW1vdmUtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gUmVtb3ZlLU5zeEZpcmV3YWxsU2VjdGlvbiBSZW1vdmUtTnN4SXBQb29sIFJlbW92ZS1Oc3hJcFNldCBSZW1vdmUtTnN4SXBTZXRNZW1iZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJBcHBsaWNhdGlvblByb2ZpbGUgUmVtb3ZlLU5zeExvYWRCYWxhbmNlck1vbml0b3IgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2wgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclBvb2xNZW1iZXIgUmVtb3ZlLU5zeExvYWRCYWxhbmNlclZpcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCZ3BOZWlnaGJvdXIgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmQXJlYSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyUmVkaXN0cmlidXRpb25SdWxlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyU3RhdGljUm91dGUgUmVtb3ZlLU5zeExvZ2ljYWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hNYWNTZXQgUmVtb3ZlLU5zeFNlY29uZGFyeU1hbmFnZXIgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXAgUmVtb3ZlLU5zeFNlY3VyaXR5R3JvdXBNZW1iZXIgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5IFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeUFzc2lnbm1lbnQgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGUgUmVtb3ZlLU5zeFNlY3VyaXR5UG9saWN5UnVsZUdyb3VwIFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGVTZXJ2aWNlIFJlbW92ZS1Oc3hTZWN1cml0eVRhZyBSZW1vdmUtTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U2VnbWVudElkUmFuZ2UgUmVtb3ZlLU5zeFNlcnZpY2UgUmVtb3ZlLU5zeFNlcnZpY2VHcm91cCBSZW1vdmUtTnN4U3Bvb2ZndWFyZFBvbGljeSBSZW1vdmUtTnN4U3NsVnBuQ2xpZW50SW5zdGFsbGF0aW9uUGFja2FnZSBSZW1vdmUtTnN4U3NsVnBuSXBQb29sIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgUmVtb3ZlLU5zeFNzbFZwblVzZXIgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmUgUmVtb3ZlLU5zeFRyYW5zcG9ydFpvbmVNZW1iZXIgUmVtb3ZlLU5zeFZkc0NvbnRleHQgUmVtb3ZlLU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgXCIgK1xuICAgICAgICBcIlJlbW92ZS1PU0N1c3RvbWl6YXRpb25TcGVjIFJlbW92ZS1PcmcgUmVtb3ZlLU9yZ05ldHdvcmsgUmVtb3ZlLU9yZ1ZkYyBSZW1vdmUtT3JnVmRjTmV0d29yayBSZW1vdmUtUFNSZWFkTGluZUtleUhhbmRsZXIgUmVtb3ZlLVBhc3N0aHJvdWdoRGV2aWNlIFJlbW92ZS1SZXNvdXJjZVBvb2wgXCIgK1xuICAgICAgICBcIlJlbW92ZS1TbmFwc2hvdCBSZW1vdmUtU3BibVN0b3JhZ2VQb2xpY3kgUmVtb3ZlLVN0YXRJbnRlcnZhbCBSZW1vdmUtVGFnIFJlbW92ZS1UYWdBc3NpZ25tZW50IFJlbW92ZS1UYWdDYXRlZ29yeSBSZW1vdmUtVGVtcGxhdGUgUmVtb3ZlLVVzYkRldmljZSBSZW1vdmUtVkFJT0ZpbHRlciBSZW1vdmUtVkFwcCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZEUG9ydEdyb3VwIFJlbW92ZS1WRFN3aXRjaCBSZW1vdmUtVkRTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1WRFN3aXRjaFByaXZhdGVWbGFuIFJlbW92ZS1WRFN3aXRjaFZNSG9zdCBSZW1vdmUtVkRpc2sgUmVtb3ZlLVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZJUGVybWlzc2lvbiBSZW1vdmUtVklQcm9wZXJ0eSBSZW1vdmUtVklSb2xlIFJlbW92ZS1WTSBSZW1vdmUtVk1Ib3N0IFJlbW92ZS1WTUhvc3RBY2NvdW50IFJlbW92ZS1WTUhvc3ROZXR3b3JrQWRhcHRlciBSZW1vdmUtVk1Ib3N0TnRwU2VydmVyIFJlbW92ZS1WTUhvc3RQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBSZW1vdmUtVk1Ib3N0Um91dGUgUmVtb3ZlLVZUcG0gUmVtb3ZlLVZhc2FQcm92aWRlciBSZW1vdmUtVmlydHVhbFBvcnRHcm91cCBSZW1vdmUtVmlydHVhbFN3aXRjaCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZpcnR1YWxTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIFJlbW92ZS1Wc2FuRGlzayBSZW1vdmUtVnNhbkRpc2tHcm91cCBSZW1vdmUtVnNhbkZhdWx0RG9tYWluIFJlbW92ZS1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwVGFyZ2V0QXNzb2NpYXRpb24gUmVtb3ZlLVZzYW5Jc2NzaUx1biBSZW1vdmUtVnNhbklzY3NpVGFyZ2V0IFJlbW92ZS12UkFCdXNpbmVzc0dyb3VwIFJlbW92ZS12UkFDdXN0b21Gb3JtIFJlbW92ZS12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBR3JvdXBQcmluY2lwYWwgUmVtb3ZlLXZSQUljb24gUmVtb3ZlLXZSQU5BVE5ldHdvcmtQcm9maWxlIFJlbW92ZS12UkFQYWNrYWdlIFJlbW92ZS12UkFQcmluY2lwYWxGcm9tVGVuYW50Um9sZSBSZW1vdmUtdlJBUHJvcGVydHlEZWZpbml0aW9uIFJlbW92ZS12UkFQcm9wZXJ0eUdyb3VwIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBUmVzZXJ2YXRpb24gUmVtb3ZlLXZSQVJlc2VydmF0aW9uTmV0d29yayBSZW1vdmUtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVJlc2VydmF0aW9uU3RvcmFnZSBSZW1vdmUtdlJBUm91dGVkTmV0d29ya1Byb2ZpbGUgUmVtb3ZlLXZSQVNlcnZpY2UgXCIgK1xuICAgICAgICBcIlJlbW92ZS12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgUmVtb3ZlLXZSQVRlbmFudCBSZW1vdmUtdlJBVGVuYW50RGlyZWN0b3J5IFJlbW92ZS12UkFVc2VyUHJpbmNpcGFsIFJlbW92ZS12Uk5JQXBwbGljYXRpb24gUmVtb3ZlLXZSTklBcHBsaWNhdGlvblRpZXIgUmVtb3ZlLXZSTklEYXRhU291cmNlIFwiICtcbiAgICAgICAgXCJSZXBhaXItTnN4RWRnZSBSZXBhaXItVnNhbk9iamVjdCBSZXF1ZXN0LXZSQUNhdGFsb2dJdGVtIFJlcXVlc3QtdlJBUmVzb3VyY2VBY3Rpb24gUmVzdGFydC1DSVZBcHAgUmVzdGFydC1DSVZBcHBHdWVzdCBSZXN0YXJ0LUNJVk0gUmVzdGFydC1DSVZNR3Vlc3QgUmVzdGFydC1WTSBSZXN0YXJ0LVZNR3Vlc3QgXCIgK1xuICAgICAgICBcIlJlc3RhcnQtVk1Ib3N0IFJlc3RhcnQtVk1Ib3N0U2VydmljZSBSZXN1bWUtSENYUmVwbGljYXRpb24gUmV2b2tlLU5zeFNwb29mZ3VhcmROaWNBcHByb3ZhbCBTYXZlLU1vZHVsZSBTYXZlLVBhY2thZ2UgU2F2ZS1TY3JpcHQgU2VhcmNoLUNsb3VkIFNldC1BZHZhbmNlZFNldHRpbmcgXCIgK1xuICAgICAgICBcIlNldC1BbGFybURlZmluaXRpb24gU2V0LUFubm90YXRpb24gU2V0LUNERHJpdmUgU2V0LUNJQWNjZXNzQ29udHJvbFJ1bGUgU2V0LUNJTmV0d29ya0FkYXB0ZXIgU2V0LUNJVkFwcCBTZXQtQ0lWQXBwTmV0d29yayBTZXQtQ0lWQXBwU3RhcnRSdWxlIFNldC1DSVZBcHBUZW1wbGF0ZSBTZXQtQ2x1c3RlciBcIiArXG4gICAgICAgIFwiU2V0LUN1c3RvbUF0dHJpYnV0ZSBTZXQtRGF0YWNlbnRlciBTZXQtRGF0YXN0b3JlIFNldC1EYXRhc3RvcmVDbHVzdGVyIFNldC1EcnNDbHVzdGVyR3JvdXAgU2V0LURyc1J1bGUgU2V0LURyc1ZNSG9zdFJ1bGUgU2V0LUZsb3BweURyaXZlIFNldC1Gb2xkZXIgU2V0LUhDWEFwcGxpYW5jZSBcIiArXG4gICAgICAgIFwiU2V0LUhDWE1pZ3JhdGlvbiBTZXQtSENYUmVwbGljYXRpb24gU2V0LUhhcmREaXNrIFNldC1JU2NzaUhiYVRhcmdldCBTZXQtS2V5TWFuYWdlbWVudFNlcnZlciBTZXQtS21zQ2x1c3RlciBTZXQtTWFya2Rvd25PcHRpb24gU2V0LU5ldHdvcmtBZGFwdGVyIFNldC1OZnNVc2VyIFNldC1OaWNUZWFtaW5nUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtTm9kZUV4Y2x1c2l2ZVJlc291cmNlcyBTZXQtTm9kZU1hbmFnZXIgU2V0LU5vZGVSZXNvdXJjZVNvdXJjZSBTZXQtTm9kZVJlc291cmNlcyBTZXQtTnN4RWRnZSBTZXQtTnN4RWRnZUJncCBTZXQtTnN4RWRnZUZpcmV3YWxsIFNldC1Oc3hFZGdlSW50ZXJmYWNlIFNldC1Oc3hFZGdlTmF0IFwiICtcbiAgICAgICAgXCJTZXQtTnN4RWRnZU9zcGYgU2V0LU5zeEVkZ2VSb3V0aW5nIFNldC1Oc3hGaXJld2FsbEdsb2JhbENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsUnVsZSBTZXQtTnN4RmlyZXdhbGxTYXZlZENvbmZpZ3VyYXRpb24gU2V0LU5zeEZpcmV3YWxsVGhyZXNob2xkIFNldC1Oc3hMb2FkQmFsYW5jZXIgXCIgK1xuICAgICAgICBcIlNldC1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIFNldC1Oc3hMb2dpY2FsUm91dGVyIFNldC1Oc3hMb2dpY2FsUm91dGVyQmdwIFNldC1Oc3hMb2dpY2FsUm91dGVyQnJpZGdpbmcgU2V0LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgU2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmIFwiICtcbiAgICAgICAgXCJTZXQtTnN4TG9naWNhbFJvdXRlclJvdXRpbmcgU2V0LU5zeE1hbmFnZXIgU2V0LU5zeE1hbmFnZXJSb2xlIFNldC1Oc3hNYW5hZ2VyVGltZVNldHRpbmdzIFNldC1Oc3hTZWN1cml0eVBvbGljeSBTZXQtTnN4U2VjdXJpdHlQb2xpY3lGaXJld2FsbFJ1bGUgU2V0LU5zeFNzbFZwbiBcIiArXG4gICAgICAgIFwiU2V0LU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgU2V0LU9TQ3VzdG9taXphdGlvblNwZWMgU2V0LU9yZyBTZXQtT3JnTmV0d29yayBTZXQtT3JnVmRjIFNldC1PcmdWZGNOZXR3b3JrIFNldC1QU0N1cnJlbnRDb25maWd1cmF0aW9uTm9kZSBTZXQtUFNEZWZhdWx0Q29uZmlndXJhdGlvbkRvY3VtZW50IFwiICtcbiAgICAgICAgXCJTZXQtUFNNZXRhQ29uZmlnRG9jSW5zUHJvY2Vzc2VkQmVmb3JlTWV0YSBTZXQtUFNNZXRhQ29uZmlnVmVyc2lvbkluZm9WMiBTZXQtUFNSZWFkTGluZUtleUhhbmRsZXIgU2V0LVBTUmVhZExpbmVPcHRpb24gU2V0LVBTUmVwb3NpdG9yeSBTZXQtUFNUb3BDb25maWd1cmF0aW9uTmFtZSBcIiArXG4gICAgICAgIFwiU2V0LVBhY2thZ2VTb3VyY2UgU2V0LVBvd2VyQ0xJQ29uZmlndXJhdGlvbiBTZXQtUmVzb3VyY2VQb29sIFNldC1TY3NpQ29udHJvbGxlciBTZXQtU2NzaUx1biBTZXQtU2NzaUx1blBhdGggU2V0LVNlY3VyaXR5UG9saWN5IFNldC1TbmFwc2hvdCBTZXQtU3BibUVudGl0eUNvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIlNldC1TcGJtU3RvcmFnZVBvbGljeSBTZXQtU3RhdEludGVydmFsIFNldC1UYWcgU2V0LVRhZ0NhdGVnb3J5IFNldC1UZW1wbGF0ZSBTZXQtVkFJT0ZpbHRlciBTZXQtVkFwcCBTZXQtVkRCbG9ja2VkUG9saWN5IFNldC1WRFBvcnQgU2V0LVZEUG9ydGdyb3VwIFNldC1WRFBvcnRncm91cE92ZXJyaWRlUG9saWN5IFwiICtcbiAgICAgICAgXCJTZXQtVkRTZWN1cml0eVBvbGljeSBTZXQtVkRTd2l0Y2ggU2V0LVZEVHJhZmZpY1NoYXBpbmdQb2xpY3kgU2V0LVZEVXBsaW5rTGFjcFBvbGljeSBTZXQtVkRVcGxpbmtUZWFtaW5nUG9saWN5IFNldC1WRFZsYW5Db25maWd1cmF0aW9uIFNldC1WRGlzayBTZXQtVklQZXJtaXNzaW9uIFNldC1WSVJvbGUgU2V0LVZNIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0IFNldC1WTUhvc3RBY2NvdW50IFNldC1WTUhvc3RBZHZhbmNlZENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdEF1dGhlbnRpY2F0aW9uIFNldC1WTUhvc3REaWFnbm9zdGljUGFydGl0aW9uIFNldC1WTUhvc3RGaXJld2FsbERlZmF1bHRQb2xpY3kgU2V0LVZNSG9zdEZpcmV3YWxsRXhjZXB0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0RmlybXdhcmUgU2V0LVZNSG9zdEhiYSBTZXQtVk1Ib3N0TW9kdWxlIFNldC1WTUhvc3ROZXR3b3JrIFNldC1WTUhvc3ROZXR3b3JrQWRhcHRlciBTZXQtVk1Ib3N0UHJvZmlsZSBTZXQtVk1Ib3N0UHJvZmlsZUltYWdlQ2FjaGVDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0UHJvZmlsZVN0b3JhZ2VEZXZpY2VDb25maWd1cmF0aW9uIFNldC1WTUhvc3RQcm9maWxlVXNlckNvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFByb2ZpbGVWbVBvcnRHcm91cENvbmZpZ3VyYXRpb24gU2V0LVZNSG9zdFJvdXRlIFNldC1WTUhvc3RTZXJ2aWNlIFNldC1WTUhvc3RTbm1wIFwiICtcbiAgICAgICAgXCJTZXQtVk1Ib3N0U3RhcnRQb2xpY3kgU2V0LVZNSG9zdFN0b3JhZ2UgU2V0LVZNSG9zdFN5c0xvZ1NlcnZlciBTZXQtVk1RdWVzdGlvbiBTZXQtVk1SZXNvdXJjZUNvbmZpZ3VyYXRpb24gU2V0LVZNU3RhcnRQb2xpY3kgU2V0LVZUcG0gU2V0LVZpcnR1YWxQb3J0R3JvdXAgU2V0LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlNldC1Wc2FuQ2x1c3RlckNvbmZpZ3VyYXRpb24gU2V0LVZzYW5GYXVsdERvbWFpbiBTZXQtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgU2V0LVZzYW5Jc2NzaUx1biBTZXQtVnNhbklzY3NpVGFyZ2V0IFNldC12UkFCdXNpbmVzc0dyb3VwIFNldC12UkFDYXRhbG9nSXRlbSBTZXQtdlJBQ3VzdG9tRm9ybSBcIiArXG4gICAgICAgIFwiU2V0LXZSQUVudGl0bGVtZW50IFNldC12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFNldC12UkFOQVROZXR3b3JrUHJvZmlsZSBTZXQtdlJBUmVzZXJ2YXRpb24gU2V0LXZSQVJlc2VydmF0aW9uTmV0d29yayBTZXQtdlJBUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVJlc2VydmF0aW9uU3RvcmFnZSBcIiArXG4gICAgICAgIFwiU2V0LXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIFNldC12UkFTZXJ2aWNlIFNldC12UkFTdG9yYWdlUmVzZXJ2YXRpb25Qb2xpY3kgU2V0LXZSQVRlbmFudCBTZXQtdlJBVGVuYW50RGlyZWN0b3J5IFNldC12UkFVc2VyUHJpbmNpcGFsIFNldC12Uk5JRGF0YVNvdXJjZVNOTVBDb25maWcgU2hvdy1NYXJrZG93biBcIiArXG4gICAgICAgIFwiU3RhcnQtQ0lWQXBwIFN0YXJ0LUNJVk0gU3RhcnQtSENYTWlncmF0aW9uIFN0YXJ0LUhDWFJlcGxpY2F0aW9uIFN0YXJ0LVNwYm1SZXBsaWNhdGlvbkZhaWxvdmVyIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblByZXBhcmVGYWlsb3ZlciBTdGFydC1TcGJtUmVwbGljYXRpb25Qcm9tb3RlIFwiICtcbiAgICAgICAgXCJTdGFydC1TcGJtUmVwbGljYXRpb25SZXZlcnNlIFN0YXJ0LVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdGFydC1UaHJlYWRKb2IgU3RhcnQtVkFwcCBTdGFydC1WTSBTdGFydC1WTUhvc3QgU3RhcnQtVk1Ib3N0U2VydmljZSBTdGFydC1Wc2FuQ2x1c3RlckRpc2tVcGRhdGUgXCIgK1xuICAgICAgICBcIlN0YXJ0LVZzYW5DbHVzdGVyUmViYWxhbmNlIFN0YXJ0LVZzYW5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbiBTdG9wLUNJVkFwcCBTdG9wLUNJVkFwcEd1ZXN0IFN0b3AtQ0lWTSBTdG9wLUNJVk1HdWVzdCBTdG9wLVNwYm1SZXBsaWNhdGlvblRlc3RGYWlsb3ZlciBTdG9wLVRhc2sgU3RvcC1WQXBwIFN0b3AtVk0gXCIgK1xuICAgICAgICBcIlN0b3AtVk1HdWVzdCBTdG9wLVZNSG9zdCBTdG9wLVZNSG9zdFNlcnZpY2UgU3RvcC1Wc2FuQ2x1c3RlclJlYmFsYW5jZSBTdXNwZW5kLUNJVkFwcCBTdXNwZW5kLUNJVk0gU3VzcGVuZC1IQ1hSZXBsaWNhdGlvbiBTdXNwZW5kLVZNIFN1c3BlbmQtVk1HdWVzdCBTdXNwZW5kLVZNSG9zdCBcIiArXG4gICAgICAgIFwiU3luYy1TcGJtUmVwbGljYXRpb25Hcm91cCBUZXN0LUNvbmZsaWN0aW5nUmVzb3VyY2VzIFRlc3QtSENYTWlncmF0aW9uIFRlc3QtSENYUmVwbGljYXRpb24gVGVzdC1Kc29uIFRlc3QtTW9kdWxlUmVsb2FkUmVxdWlyZWQgVGVzdC1Nb2ZJbnN0YW5jZVRleHQgVGVzdC1Ob2RlTWFuYWdlciBcIiArXG4gICAgICAgIFwiVGVzdC1Ob2RlUmVzb3VyY2VTb3VyY2UgVGVzdC1Ob2RlUmVzb3VyY2VzIFRlc3QtU2NyaXB0RmlsZUluZm8gVGVzdC1WTUhvc3RQcm9maWxlQ29tcGxpYW5jZSBUZXN0LVZNSG9zdFNubXAgVGVzdC1Wc2FuQ2x1c3RlckhlYWx0aCBUZXN0LVZzYW5OZXR3b3JrUGVyZm9ybWFuY2UgXCIgK1xuICAgICAgICBcIlRlc3QtVnNhblN0b3JhZ2VQZXJmb3JtYW5jZSBUZXN0LVZzYW5WTUNyZWF0aW9uIFRlc3QtdlJBUGFja2FnZSBVbmluc3RhbGwtTW9kdWxlIFVuaW5zdGFsbC1QYWNrYWdlIFVuaW5zdGFsbC1TY3JpcHQgVW5sb2NrLVZNIFVucmVnaXN0ZXItUFNSZXBvc2l0b3J5IFVucmVnaXN0ZXItUGFja2FnZVNvdXJjZSBcIiArXG4gICAgICAgIFwiVXBkYXRlLUNvbmZpZ3VyYXRpb25Eb2N1bWVudFJlZiBVcGRhdGUtQ29uZmlndXJhdGlvbkVycm9yQ291bnQgVXBkYXRlLURlcGVuZHNPbiBVcGRhdGUtTG9jYWxDb25maWdNYW5hZ2VyIFVwZGF0ZS1Nb2R1bGUgVXBkYXRlLU1vZHVsZU1hbmlmZXN0IFVwZGF0ZS1Nb2R1bGVWZXJzaW9uIFVwZGF0ZS1Qb3dlck5zeCBcIiArXG4gICAgICAgIFwiVXBkYXRlLVNjcmlwdCBVcGRhdGUtU2NyaXB0RmlsZUluZm8gVXBkYXRlLVRvb2xzIFVwZGF0ZS1Wc2FuSGNsRGF0YWJhc2UgVmFsaWRhdGVVcGRhdGUtQ29uZmlndXJhdGlvbkRhdGEgV2FpdC1EZWJ1Z2dlciBXYWl0LU5zeENvbnRyb2xsZXJKb2IgV2FpdC1Oc3hHZW5lcmljSm9iIFdhaXQtTnN4Sm9iIFwiICtcbiAgICAgICAgXCJXYWl0LVRhc2sgV2FpdC1Ub29scyBXcml0ZS1JbmZvcm1hdGlvbiBXcml0ZS1Mb2cgV3JpdGUtTWV0YUNvbmZpZ0ZpbGUgV3JpdGUtTm9kZU1PRkZpbGVcIixcbiAgICAgIG5vbWFya3VwOlxuICAgICAgICBcIi1uZSAtZXEgLWx0IC1ndCAtZ2UgLWxlIC1ub3QgLWxpa2UgLW5vdGxpa2UgLW1hdGNoIC1ub3RtYXRjaCAtY29udGFpbnMgLW5vdGNvbnRhaW5zIC1pbiAtbm90aW4gLXJlcGxhY2VcIixcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBCQUNLVElDS19FU0NBUEUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBMSVRFUkFMLFxuICAgICAgVkFSLFxuICAgICAgUFNfQ09NTUVOVCxcbiAgICBdLFxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ0J1ZmZlcmVkUmVhZGVyIFBWZWN0b3IgUEZvbnQgUEltYWdlIFBHcmFwaGljcyBIYXNoTWFwIGJvb2xlYW4gYnl0ZSBjaGFyIGNvbG9yICcgK1xuICAgICAgICAnZG91YmxlIGZsb2F0IGludCBsb25nIFN0cmluZyBBcnJheSBGbG9hdERpY3QgRmxvYXRMaXN0IEludERpY3QgSW50TGlzdCBKU09OQXJyYXkgSlNPTk9iamVjdCAnICtcbiAgICAgICAgJ09iamVjdCBTdHJpbmdEaWN0IFN0cmluZ0xpc3QgVGFibGUgVGFibGVSb3cgWE1MICcgK1xuICAgICAgICAvLyBKYXZhIGtleXdvcmRzXG4gICAgICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGNvbnN0ICcgK1xuICAgICAgICAnZm9yIHRydWUgd2hpbGUgbG9uZyB0aHJvdyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHJldHVybiB2b2lkICcgK1xuICAgICAgICAnZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBuZXcgY2F0Y2ggaW5zdGFuY2VvZiBieXRlIHN1cGVyIHZvbGF0aWxlIGNhc2UgYXNzZXJ0IHNob3J0ICcgK1xuICAgICAgICAncGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUnLFxuICAgICAgbGl0ZXJhbDogJ1AyRCBQM0QgSEFMRl9QSSBQSSBRVUFSVEVSX1BJIFRBVSBUV09fUEknLFxuICAgICAgdGl0bGU6ICdzZXR1cCBkcmF3JyxcbiAgICAgIGJ1aWx0X2luOiAnZGlzcGxheUhlaWdodCBkaXNwbGF5V2lkdGggbW91c2VZIG1vdXNlWCBtb3VzZVByZXNzZWQgcG1vdXNlWCBwbW91c2VZIGtleSAnICtcbiAgICAgICAgJ2tleUNvZGUgcGl4ZWxzIGZvY3VzZWQgZnJhbWVDb3VudCBmcmFtZVJhdGUgaGVpZ2h0IHdpZHRoICcgK1xuICAgICAgICAnc2l6ZSBjcmVhdGVHcmFwaGljcyBiZWdpbkRyYXcgY3JlYXRlU2hhcGUgbG9hZFNoYXBlIFBTaGFwZSBhcmMgZWxsaXBzZSBsaW5lIHBvaW50ICcgK1xuICAgICAgICAncXVhZCByZWN0IHRyaWFuZ2xlIGJlemllciBiZXppZXJEZXRhaWwgYmV6aWVyUG9pbnQgYmV6aWVyVGFuZ2VudCBjdXJ2ZSBjdXJ2ZURldGFpbCBjdXJ2ZVBvaW50ICcgK1xuICAgICAgICAnY3VydmVUYW5nZW50IGN1cnZlVGlnaHRuZXNzIHNoYXBlIHNoYXBlTW9kZSBiZWdpbkNvbnRvdXIgYmVnaW5TaGFwZSBiZXppZXJWZXJ0ZXggY3VydmVWZXJ0ZXggJyArXG4gICAgICAgICdlbmRDb250b3VyIGVuZFNoYXBlIHF1YWRyYXRpY1ZlcnRleCB2ZXJ0ZXggZWxsaXBzZU1vZGUgbm9TbW9vdGggcmVjdE1vZGUgc21vb3RoIHN0cm9rZUNhcCAnICtcbiAgICAgICAgJ3N0cm9rZUpvaW4gc3Ryb2tlV2VpZ2h0IG1vdXNlQ2xpY2tlZCBtb3VzZURyYWdnZWQgbW91c2VNb3ZlZCBtb3VzZVByZXNzZWQgbW91c2VSZWxlYXNlZCAnICtcbiAgICAgICAgJ21vdXNlV2hlZWwga2V5UHJlc3NlZCBrZXlQcmVzc2Vka2V5UmVsZWFzZWQga2V5VHlwZWQgcHJpbnQgcHJpbnRsbiBzYXZlIHNhdmVGcmFtZSBkYXkgaG91ciAnICtcbiAgICAgICAgJ21pbGxpcyBtaW51dGUgbW9udGggc2Vjb25kIHllYXIgYmFja2dyb3VuZCBjbGVhciBjb2xvck1vZGUgZmlsbCBub0ZpbGwgbm9TdHJva2Ugc3Ryb2tlIGFscGhhICcgK1xuICAgICAgICAnYmx1ZSBicmlnaHRuZXNzIGNvbG9yIGdyZWVuIGh1ZSBsZXJwQ29sb3IgcmVkIHNhdHVyYXRpb24gbW9kZWxYIG1vZGVsWSBtb2RlbFogc2NyZWVuWCBzY3JlZW5ZICcgK1xuICAgICAgICAnc2NyZWVuWiBhbWJpZW50IGVtaXNzaXZlIHNoaW5pbmVzcyBzcGVjdWxhciBhZGQgY3JlYXRlSW1hZ2UgYmVnaW5DYW1lcmEgY2FtZXJhIGVuZENhbWVyYSBmcnVzdHVtICcgK1xuICAgICAgICAnb3J0aG8gcGVyc3BlY3RpdmUgcHJpbnRDYW1lcmEgcHJpbnRQcm9qZWN0aW9uIGN1cnNvciBmcmFtZVJhdGUgbm9DdXJzb3IgZXhpdCBsb29wIG5vTG9vcCBwb3BTdHlsZSAnICtcbiAgICAgICAgJ3B1c2hTdHlsZSByZWRyYXcgYmluYXJ5IGJvb2xlYW4gYnl0ZSBjaGFyIGZsb2F0IGhleCBpbnQgc3RyIHVuYmluYXJ5IHVuaGV4IGpvaW4gbWF0Y2ggbWF0Y2hBbGwgbmYgJyArXG4gICAgICAgICduZmMgbmZwIG5mcyBzcGxpdCBzcGxpdFRva2VucyB0cmltIGFwcGVuZCBhcnJheUNvcHkgY29uY2F0IGV4cGFuZCByZXZlcnNlIHNob3J0ZW4gc29ydCBzcGxpY2Ugc3Vic2V0ICcgK1xuICAgICAgICAnYm94IHNwaGVyZSBzcGhlcmVEZXRhaWwgY3JlYXRlSW5wdXQgY3JlYXRlUmVhZGVyIGxvYWRCeXRlcyBsb2FkSlNPTkFycmF5IGxvYWRKU09OT2JqZWN0IGxvYWRTdHJpbmdzICcgK1xuICAgICAgICAnbG9hZFRhYmxlIGxvYWRYTUwgb3BlbiBwYXJzZVhNTCBzYXZlVGFibGUgc2VsZWN0Rm9sZGVyIHNlbGVjdElucHV0IGJlZ2luUmF3IGJlZ2luUmVjb3JkIGNyZWF0ZU91dHB1dCAnICtcbiAgICAgICAgJ2NyZWF0ZVdyaXRlciBlbmRSYXcgZW5kUmVjb3JkIFByaW50V3JpdGVyc2F2ZUJ5dGVzIHNhdmVKU09OQXJyYXkgc2F2ZUpTT05PYmplY3Qgc2F2ZVN0cmVhbSBzYXZlU3RyaW5ncyAnICtcbiAgICAgICAgJ3NhdmVYTUwgc2VsZWN0T3V0cHV0IHBvcE1hdHJpeCBwcmludE1hdHJpeCBwdXNoTWF0cml4IHJlc2V0TWF0cml4IHJvdGF0ZSByb3RhdGVYIHJvdGF0ZVkgcm90YXRlWiBzY2FsZSAnICtcbiAgICAgICAgJ3NoZWFyWCBzaGVhclkgdHJhbnNsYXRlIGFtYmllbnRMaWdodCBkaXJlY3Rpb25hbExpZ2h0IGxpZ2h0RmFsbG9mZiBsaWdodHMgbGlnaHRTcGVjdWxhciBub0xpZ2h0cyBub3JtYWwgJyArXG4gICAgICAgICdwb2ludExpZ2h0IHNwb3RMaWdodCBpbWFnZSBpbWFnZU1vZGUgbG9hZEltYWdlIG5vVGludCByZXF1ZXN0SW1hZ2UgdGludCB0ZXh0dXJlIHRleHR1cmVNb2RlIHRleHR1cmVXcmFwICcgK1xuICAgICAgICAnYmxlbmQgY29weSBmaWx0ZXIgZ2V0IGxvYWRQaXhlbHMgc2V0IHVwZGF0ZVBpeGVscyBibGVuZE1vZGUgbG9hZFNoYWRlciBQU2hhZGVycmVzZXRTaGFkZXIgc2hhZGVyIGNyZWF0ZUZvbnQgJyArXG4gICAgICAgICdsb2FkRm9udCB0ZXh0IHRleHRGb250IHRleHRBbGlnbiB0ZXh0TGVhZGluZyB0ZXh0TW9kZSB0ZXh0U2l6ZSB0ZXh0V2lkdGggdGV4dEFzY2VudCB0ZXh0RGVzY2VudCBhYnMgY2VpbCAnICtcbiAgICAgICAgJ2NvbnN0cmFpbiBkaXN0IGV4cCBmbG9vciBsZXJwIGxvZyBtYWcgbWFwIG1heCBtaW4gbm9ybSBwb3cgcm91bmQgc3Egc3FydCBhY29zIGFzaW4gYXRhbiBhdGFuMiBjb3MgZGVncmVlcyAnICtcbiAgICAgICAgJ3JhZGlhbnMgc2luIHRhbiBub2lzZSBub2lzZURldGFpbCBub2lzZVNlZWQgcmFuZG9tIHJhbmRvbUdhdXNzaWFuIHJhbmRvbVNlZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl9dW1xcXFxkYS16QS1aX10rXFxcXC5bXFxcXGRhLXpBLVpfXXsxLDN9JywgZW5kOiAnOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKG5jYWxsc3x0b3R0aW1lfGN1bXRpbWUpJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnbmNhbGxzIHRvdHRpbWV8MTAgY3VtdGltZXwxMCBmaWxlbmFtZScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnZnVuY3Rpb24gY2FsbHMnLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREVdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJCcsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQVRPTSA9IHtcblxuICAgIGJlZ2luOiAvW2Etel1bQS1aYS16MC05X10qLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgVkFSID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvW0EtWl1bYS16QS1aMC05X10qL30sXG4gICAgICB7YmVnaW46IC9fW0EtWmEtejAtOV9dKi99LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBBUkVOVEVEID0ge1xuXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIExJU1QgPSB7XG5cbiAgICBiZWdpbjogL1xcWy8sXG4gICAgZW5kOiAvXFxdL1xuICB9O1xuXG4gIHZhciBMSU5FX0NPTU1FTlQgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogLyUvLCBlbmQ6IC8kLyxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFXVxuICB9O1xuXG4gIHZhciBCQUNLVElDS19TVFJJTkcgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvYC8sIGVuZDogL2AvLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICB9O1xuXG4gIHZhciBDSEFSX0NPREUgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyAwJ2EgZXRjLlxuICAgIGJlZ2luOiAvMFxcJyhcXFxcXFwnfC4pL1xuICB9O1xuXG4gIHZhciBTUEFDRV9DT0RFID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLzBcXCdcXFxccy8gLy8gMCdcXHNcbiAgfTtcblxuICB2YXIgUFJFRF9PUCA9IHsgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBiZWdpbjogLzotL1xuICB9O1xuXG4gIHZhciBpbm5lciA9IFtcblxuICAgIEFUT00sXG4gICAgVkFSLFxuICAgIFBBUkVOVEVELFxuICAgIFBSRURfT1AsXG4gICAgTElTVCxcbiAgICBMSU5FX0NPTU1FTlQsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBCQUNLVElDS19TVFJJTkcsXG4gICAgQ0hBUl9DT0RFLFxuICAgIFNQQUNFX0NPREUsXG4gICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gIF07XG5cbiAgUEFSRU5URUQuY29udGFpbnMgPSBpbm5lcjtcbiAgTElTVC5jb250YWlucyA9IGlubmVyO1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IGlubmVyLmNvbmNhdChbXG4gICAgICB7YmVnaW46IC9cXC4kL30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAvLyB3aGl0ZXNwYWNlczogc3BhY2UsIHRhYiwgZm9ybWZlZWRcbiAgdmFyIFdTMCA9ICdbIFxcXFx0XFxcXGZdKic7XG4gIHZhciBXUzEgPSAnWyBcXFxcdFxcXFxmXSsnO1xuICAvLyBkZWxpbWl0ZXJcbiAgdmFyIERFTElNID0gJygnICsgV1MwKydbOj1dJytXUzArICd8JyArIFdTMSArICcpJztcbiAgdmFyIEtFWV9BTFBIQU5VTSA9ICcoW15cXFxcXFxcXFxcXFxXOj0gXFxcXHRcXFxcZlxcXFxuXXxcXFxcXFxcXC4pKyc7XG4gIHZhciBLRVlfT1RIRVIgPSAnKFteXFxcXFxcXFw6PSBcXFxcdFxcXFxmXFxcXG5dfFxcXFxcXFxcLikrJztcblxuICB2YXIgREVMSU1fQU5EX1ZBTFVFID0ge1xuICAgICAgICAgIC8vIHNraXAgREVMSU1cbiAgICAgICAgICBlbmQ6IERFTElNLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIC8vIHZhbHVlOiBldmVyeXRoaW5nIHVudGlsIGVuZCBvZiBsaW5lIChhZ2FpbiwgdGFraW5nIGludG8gYWNjb3VudCBiYWNrc2xhc2hlcylcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46ICdcXFxcXFxcXFxcXFxuJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqWyEjXScsICckJyksXG4gICAgICAvLyBrZXk6IGV2ZXJ5dGhpbmcgdW50aWwgd2hpdGVzcGFjZSBvciA9IG9yIDogKHRha2luZyBpbnRvIGFjY291bnQgYmFja3NsYXNoZXMpXG4gICAgICAvLyBjYXNlIG9mIGEgXCJub3JtYWxcIiBrZXlcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEtFWV9BTFBIQU5VTSArIERFTElNLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfQUxQSEFOVU0sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2Yga2V5IGNvbnRhaW5pbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFycyA9PiByZWxldmFuY2UgPSAwXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBERUxJTSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgIGJlZ2luOiBLRVlfT1RIRVIsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IERFTElNX0FORF9WQUxVRVxuICAgICAgfSxcbiAgICAgIC8vIGNhc2Ugb2YgYW4gZW1wdHkga2V5XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGJlZ2luOiBLRVlfT1RIRVIgKyBXUzAgKyAnJCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAncGFja2FnZSBpbXBvcnQgb3B0aW9uIG9wdGlvbmFsIHJlcXVpcmVkIHJlcGVhdGVkIGdyb3VwIG9uZW9mJyxcbiAgICAgIGJ1aWx0X2luOiAnZG91YmxlIGZsb2F0IGludDMyIGludDY0IHVpbnQzMiB1aW50NjQgc2ludDMyIHNpbnQ2NCAnICtcbiAgICAgICAgJ2ZpeGVkMzIgZml4ZWQ2NCBzZml4ZWQzMiBzZml4ZWQ2NCBib29sIHN0cmluZyBieXRlcycsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbWVzc2FnZSBlbnVtIHNlcnZpY2UnLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAncnBjJyxcbiAgICAgICAgZW5kOiAvOy8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiAncnBjIHJldHVybnMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL15cXHMqW0EtWl9dKy8sXG4gICAgICAgIGVuZDogL1xccyo9LywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFBVUFBFVF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgIC8qIGxhbmd1YWdlIGtleXdvcmRzICovXG4gICAgICAnYW5kIGNhc2UgZGVmYXVsdCBlbHNlIGVsc2lmIGZhbHNlIGlmIGluIGltcG9ydCBlbmhlcml0cyBub2RlIG9yIHRydWUgdW5kZWYgdW5sZXNzIG1haW4gc2V0dGluZ3MgJHN0cmluZyAnLFxuICAgIGxpdGVyYWw6XG4gICAgLyogbWV0YXBhcmFtZXRlcnMgKi9cbiAgICAgICdhbGlhcyBhdWRpdCBiZWZvcmUgbG9nbGV2ZWwgbm9vcCByZXF1aXJlIHN1YnNjcmliZSB0YWcgJyArXG4gICAgLyogbm9ybWFsIGF0dHJpYnV0ZXMgKi9cbiAgICAgICdvd25lciBlbnN1cmUgZ3JvdXAgbW9kZSBuYW1lfDAgY2hhbmdlcyBjb250ZXh0IGZvcmNlIGluY2wgbGVucyBsb2FkX3BhdGggb25seWlmIHByb3ZpZGVyIHJldHVybnMgcm9vdCBzaG93X2RpZmYgdHlwZV9jaGVjayAnICtcbiAgICAgICdlbl9hZGRyZXNzIGlwX2FkZHJlc3MgcmVhbG5hbWUgY29tbWFuZCBlbnZpcm9ubWVudCBob3VyIG1vbnV0ZSBtb250aCBtb250aGRheSBzcGVjaWFsIHRhcmdldCB3ZWVrZGF5ICcrXG4gICAgICAnY3JlYXRlcyBjd2Qgb2dvdXRwdXQgcmVmcmVzaCByZWZyZXNob25seSB0cmllcyB0cnlfc2xlZXAgdW1hc2sgYmFja3VwIGNoZWNrc3VtIGNvbnRlbnQgY3RpbWUgZm9yY2UgaWdub3JlICcgK1xuICAgICAgJ2xpbmtzIG10aW1lIHB1cmdlIHJlY3Vyc2UgcmVjdXJzZWxpbWl0IHJlcGxhY2Ugc2VsaW51eF9pZ25vcmVfZGVmYXVsdHMgc2VscmFuZ2Ugc2Vscm9sZSBzZWx0eXBlIHNlbHVzZXIgc291cmNlICcgK1xuICAgICAgJ3NvdWlyY2VfcGVybWlzc2lvbnMgc291cmNlc2VsZWN0IHZhbGlkYXRlX2NtZCB2YWxpZGF0ZV9yZXBsYWNlbWVudCBhbGxvd2R1cGUgYXR0cmlidXRlX21lbWJlcnNoaXAgYXV0aF9tZW1iZXJzaGlwIGZvcmNlbG9jYWwgZ2lkICcrXG4gICAgICAnaWFfbG9hZF9tb2R1bGUgbWVtYmVycyBzeXN0ZW0gaG9zdF9hbGlhc2VzIGlwIGFsbG93ZWRfdHJ1bmtfdmxhbnMgZGVzY3JpcHRpb24gZGV2aWNlX3VybCBkdXBsZXggZW5jYXBzdWxhdGlvbiBldGhlcmNoYW5uZWwgJyArXG4gICAgICAnbmF0aXZlX3ZsYW4gc3BlZWQgcHJpbmNpcGFscyBhbGxvd19yb290IGF1dGhfY2xhc3MgYXV0aF90eXBlIGF1dGhlbnRpY2F0ZV91c2VyIGtfb2ZfbiBtZWNoYW5pc21zIHJ1bGUgc2Vzc2lvbl9vd25lciBzaGFyZWQgb3B0aW9ucyAnICtcbiAgICAgICdkZXZpY2UgZnN0eXBlIGVuYWJsZSBoYXNyZXN0YXJ0IGRpcmVjdG9yeSBwcmVzZW50IGFic2VudCBsaW5rIGF0Ym9vdCBibG9ja2RldmljZSBkZXZpY2UgZHVtcCBwYXNzIHJlbW91bnRzIHBvbGxlcl90YWcgdXNlICcgK1xuICAgICAgJ21lc3NhZ2Ugd2l0aHBhdGggYWRtaW5maWxlIGFsbG93X3ZpcnR1YWwgYWxsb3djZHJvbSBjYXRlZ29yeSBjb25maWdmaWxlcyBmbGF2b3IgaW5zdGFsbF9vcHRpb25zIGluc3RhbmNlIHBhY2thZ2Vfc2V0dGluZ3MgcGxhdGZvcm0gJyArXG4gICAgICAncmVzcG9uc2VmaWxlIHN0YXR1cyB1bmluc3RhbGxfb3B0aW9ucyB2ZW5kb3IgdW5sZXNzX3N5c3RlbV91c2VyIHVubGVzc191aWQgYmluYXJ5IGNvbnRyb2wgZmxhZ3MgaGFzc3RhdHVzIG1hbmlmZXN0IHBhdHRlcm4gcmVzdGFydCBydW5uaW5nICcgK1xuICAgICAgJ3N0YXJ0IHN0b3AgYWxsb3dkdXBlIGF1dGhzIGV4cGlyeSBnaWQgZ3JvdXBzIGhvbWUgaXRlcmF0aW9ucyBrZXlfbWVtYmVyc2hpcCBrZXlzIG1hbmFnZWhvbWUgbWVtYmVyc2hpcCBwYXNzd29yZCBwYXNzd29yZF9tYXhfYWdlICcgK1xuICAgICAgJ3Bhc3N3b3JkX21pbl9hZ2UgcHJvZmlsZV9tZW1iZXJzaGlwIHByb2ZpbGVzIHByb2plY3QgcHVyZ2Vfc3NoX2tleXMgcm9sZV9tZW1iZXJzaGlwIHJvbGVzIHNhbHQgc2hlbGwgdWlkIGJhc2V1cmwgY29zdCBkZXNjciBlbmFibGVkICcgK1xuICAgICAgJ2VuYWJsZWdyb3VwcyBleGNsdWRlIGZhaWxvdmVybWV0aG9kIGdwZ2NoZWNrIGdwZ2tleSBodHRwX2NhY2hpbmcgaW5jbHVkZSBpbmNsdWRlcGtncyBrZWVwYWxpdmUgbWV0YWRhdGFfZXhwaXJlIG1ldGFsaW5rIG1pcnJvcmxpc3QgJyArXG4gICAgICAncHJpb3JpdHkgcHJvdGVjdCBwcm94eSBwcm94eV9wYXNzd29yZCBwcm94eV91c2VybmFtZSByZXBvX2dwZ2NoZWNrIHMzX2VuYWJsZWQgc2tpcF9pZl91bmF2YWlsYWJsZSBzc2xjYWNlcnQgc3NsY2xpZW50Y2VydCBzc2xjbGllbnRrZXkgJyArXG4gICAgICAnc3NsdmVyaWZ5IG1vdW50ZWQnLFxuICAgIGJ1aWx0X2luOlxuICAgIC8qIGNvcmUgZmFjdHMgKi9cbiAgICAgICdhcmNoaXRlY3R1cmUgYXVnZWFzdmVyc2lvbiBibG9ja2RldmljZXMgYm9hcmRtYW51ZmFjdHVyZXIgYm9hcmRwcm9kdWN0bmFtZSBib2FyZHNlcmlhbG51bWJlciBjZmtleSBkaGNwX3NlcnZlcnMgJyArXG4gICAgICAnZG9tYWluIGVjMl8gZWMyX3VzZXJkYXRhIGZhY3RlcnZlcnNpb24gZmlsZXN5c3RlbXMgbGRvbSBmcWRuIGdpZCBoYXJkd2FyZWlzYSBoYXJkd2FyZW1vZGVsIGhvc3RuYW1lIGlkfDAgaW50ZXJmYWNlcyAnK1xuICAgICAgJ2lwYWRkcmVzcyBpcGFkZHJlc3NfIGlwYWRkcmVzczYgaXBhZGRyZXNzNl8gaXBob3N0bnVtYmVyIGlzX3ZpcnR1YWwga2VybmVsIGtlcm5lbG1hanZlcnNpb24ga2VybmVscmVsZWFzZSBrZXJuZWx2ZXJzaW9uICcgK1xuICAgICAgJ2tlcm5lbHJlbGVhc2Uga2VybmVsdmVyc2lvbiBsc2JkaXN0Y29kZW5hbWUgbHNiZGlzdGRlc2NyaXB0aW9uIGxzYmRpc3RpZCBsc2JkaXN0cmVsZWFzZSBsc2JtYWpkaXN0cmVsZWFzZSBsc2JtaW5vcmRpc3RyZWxlYXNlICcgK1xuICAgICAgJ2xzYnJlbGVhc2UgbWFjYWRkcmVzcyBtYWNhZGRyZXNzXyBtYWNvc3hfYnVpbGR2ZXJzaW9uIG1hY29zeF9wcm9kdWN0bmFtZSBtYWNvc3hfcHJvZHVjdHZlcnNpb24gbWFjb3N4X3Byb2R1Y3R2ZXJzb25fbWFqb3IgJyArXG4gICAgICAnbWFjb3N4X3Byb2R1Y3R2ZXJzaW9uX21pbm9yIG1hbnVmYWN0dXJlciBtZW1vcnlmcmVlIG1lbW9yeXNpemUgbmV0bWFzayBtZXRtYXNrXyBuZXR3b3JrXyBvcGVyYXRpbmdzeXN0ZW0gb3BlcmF0aW5nc3lzdGVtbWFqcmVsZWFzZSAnK1xuICAgICAgJ29wZXJhdGluZ3N5c3RlbXJlbGVhc2Ugb3NmYW1pbHkgcGFydGl0aW9ucyBwYXRoIHBoeXNpY2FscHJvY2Vzc29yY291bnQgcHJvY2Vzc29yIHByb2Nlc3NvcmNvdW50IHByb2R1Y3RuYW1lIHBzIHB1cHBldHZlcnNpb24gJytcbiAgICAgICdydWJ5c2l0ZWRpciBydWJ5dmVyc2lvbiBzZWxpbnV4IHNlbGludXhfY29uZmlnX21vZGUgc2VsaW51eF9jb25maWdfcG9saWN5IHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfY3VycmVudF9tb2RlIHNlbGludXhfZW5mb3JjZWQgJytcbiAgICAgICdzZWxpbnV4X3BvbGljeXZlcnNpb24gc2VyaWFsbnVtYmVyIHNwXyBzc2hkc2FrZXkgc3NoZWNkc2FrZXkgc3NocnNha2V5IHN3YXBlbmNyeXB0ZWQgc3dhcGZyZWUgc3dhcHNpemUgdGltZXpvbmUgdHlwZSB1bmlxdWVpZCB1cHRpbWUgJytcbiAgICAgICd1cHRpbWVfZGF5cyB1cHRpbWVfaG91cnMgdXB0aW1lX3NlY29uZHMgdXVpZCB2aXJ0dWFsIHZsYW5zIHhlbmRvbWFpbnMgemZzX3ZlcnNpb24gem9uZW5hZSB6b25lcyB6cG9vbF92ZXJzaW9uJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKCcjJywgJyQnKTtcblxuICB2YXIgSURFTlRfUkUgPSAnKFtBLVphLXpfXXw6OikoXFxcXHd8OjopKic7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBJREVOVF9SRX0pO1xuXG4gIHZhciBWQVJJQUJMRSA9IHtjbGFzc05hbWU6ICd2YXJpYWJsZScsIGJlZ2luOiAnXFxcXCQnICsgSURFTlRfUkV9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSSUFCTEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwcCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5ULFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBTVFJJTkcsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogJ1xcXFx7fDsnLFxuICAgICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmaW5lJywgZW5kOiAvXFx7LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJywgYmVnaW46IGhsanMuSURFTlRfUkUsIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzK1xcXFx7JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgICAgICAgICAga2V5d29yZHM6IFBVUFBFVF9LRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOidbYS16QS1aX10rXFxcXHMqPT4nLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6ICc9PicsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFZBUklBQkxFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBCYXNlIGRlYWZ1bHQgY29sb3JzIGluIFBCIElERTogYmFja2dyb3VuZDogI0ZGRkZERjsgZm9yZWdyb3VuZDogIzAwMDAwMDtcblxuZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjMDA4MEZGIChBenVyZSBSYWRpYW5jZSlcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnKH4pP1wiJywgZW5kOiAnXCInLFxuICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIENPTlNUQU5UUyA9IHsgLy8gUEIgSURFIGNvbG9yOiAjOTI0QjcyIChDYW5ub24gUGluaylcbiAgICAvLyAgXCIjXCIgKyBhIGxldHRlciBvciB1bmRlcnNjb3JlICsgbGV0dGVycywgZGlnaXRzIG9yIHVuZGVyc2NvcmVzICsgKG9wdGlvbmFsKSBcIiRcIlxuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjW2EtekEtWl9dXFxcXHcqXFxcXCQ/J1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwYicsICdwYmknXSxcbiAgICBrZXl3b3JkczogLy8gUEIgSURFIGNvbG9yOiAjMDA2NjY2IChCbHVlIFN0b25lKSArIEJvbGRcbiAgICAgIC8vIEtleXdvcmRzIGZyb20gYWxsIHZlcnNpb24gb2YgUHVyZUJBU0lDIDUuMDAgdXB3YXJkIC4uLlxuICAgICAgJ0FsaWduIEFuZCBBcnJheSBBcyBCcmVhayBDYWxsRGVidWdnZXIgQ2FzZSBDb21waWxlckNhc2UgQ29tcGlsZXJEZWZhdWx0ICcgK1xuICAgICAgJ0NvbXBpbGVyRWxzZSBDb21waWxlckVsc2VJZiBDb21waWxlckVuZElmIENvbXBpbGVyRW5kU2VsZWN0IENvbXBpbGVyRXJyb3IgJyArXG4gICAgICAnQ29tcGlsZXJJZiBDb21waWxlclNlbGVjdCBDb21waWxlcldhcm5pbmcgQ29udGludWUgRGF0YSBEYXRhU2VjdGlvbiBEZWJ1ZyAnICtcbiAgICAgICdEZWJ1Z0xldmVsIERlY2xhcmUgRGVjbGFyZUMgRGVjbGFyZUNETEwgRGVjbGFyZURMTCBEZWNsYXJlTW9kdWxlIERlZmF1bHQgJyArXG4gICAgICAnRGVmaW5lIERpbSBEaXNhYmxlQVNNIERpc2FibGVEZWJ1Z2dlciBEaXNhYmxlRXhwbGljaXQgRWxzZSBFbHNlSWYgRW5hYmxlQVNNICcgK1xuICAgICAgJ0VuYWJsZURlYnVnZ2VyIEVuYWJsZUV4cGxpY2l0IEVuZCBFbmREYXRhU2VjdGlvbiBFbmREZWNsYXJlTW9kdWxlIEVuZEVudW1lcmF0aW9uICcgK1xuICAgICAgJ0VuZElmIEVuZEltcG9ydCBFbmRJbnRlcmZhY2UgRW5kTWFjcm8gRW5kTW9kdWxlIEVuZFByb2NlZHVyZSBFbmRTZWxlY3QgJyArXG4gICAgICAnRW5kU3RydWN0dXJlIEVuZFN0cnVjdHVyZVVuaW9uIEVuZFdpdGggRW51bWVyYXRpb24gRW51bWVyYXRpb25CaW5hcnkgRXh0ZW5kcyAnICtcbiAgICAgICdGYWtlUmV0dXJuIEZvciBGb3JFYWNoIEZvckV2ZXIgR2xvYmFsIEdvc3ViIEdvdG8gSWYgSW1wb3J0IEltcG9ydEMgJyArXG4gICAgICAnSW5jbHVkZUJpbmFyeSBJbmNsdWRlRmlsZSBJbmNsdWRlUGF0aCBJbnRlcmZhY2UgTGlzdCBNYWNybyBNYWNyb0V4cGFuZGVkQ291bnQgJyArXG4gICAgICAnTWFwIE1vZHVsZSBOZXdMaXN0IE5ld01hcCBOZXh0IE5vdCBPciBQcm9jZWR1cmUgUHJvY2VkdXJlQyAnICtcbiAgICAgICdQcm9jZWR1cmVDRExMIFByb2NlZHVyZURMTCBQcm9jZWR1cmVSZXR1cm4gUHJvdGVjdGVkIFByb3RvdHlwZSBQcm90b3R5cGVDIFJlRGltICcgK1xuICAgICAgJ1JlYWQgUmVwZWF0IFJlc3RvcmUgUmV0dXJuIFJ1bnRpbWUgU2VsZWN0IFNoYXJlZCBTdGF0aWMgU3RlcCBTdHJ1Y3R1cmUgJyArXG4gICAgICAnU3RydWN0dXJlVW5pb24gU3dhcCBUaHJlYWRlZCBUbyBVbmRlZmluZU1hY3JvIFVudGlsIFVudGlsICBVbnVzZU1vZHVsZSAnICtcbiAgICAgICdVc2VNb2R1bGUgV2VuZCBXaGlsZSBXaXRoIFhJbmNsdWRlRmlsZSBYT3InLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBDT01NRU5UUyB8IFBCIElERSBjb2xvcjogIzAwQUFBQSAoUGVyc2lhbiBHcmVlbilcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuXG4gICAgICB7IC8vIFBST0NFRFVSRVMgREVGSU5JVElPTlNcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKFByb2NlZHVyZXxEZWNsYXJlKShDfENETEx8RExMKT9cXFxcYicsXG4gICAgICAgIGVuZDogJ1xcXFwoJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBQUk9DRURVUkUgS0VZV09SRFMgfCBQQiBJREUgY29sb3I6ICMwMDY2NjYgKEJsdWUgU3RvbmUpICsgQm9sZFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJyhQcm9jZWR1cmV8RGVjbGFyZSkoQ3xDRExMfERMTCk/JyxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gUFJPQ0VEVVJFIFJFVFVSTiBUWVBFIFNFVFRJTkcgfCBQQiBJREUgY29sb3I6ICMwMDAwMDAgKEJsYWNrKVxuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwuXFxcXHcqJ1xuICAgICAgICAgICAgLy8gZW5kOiAnICcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSAvLyBQUk9DRURVUkUgTkFNRSB8IFBCIElERSBjb2xvcjogIzAwNjY2NiAoQmx1ZSBTdG9uZSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklOR1MsXG4gICAgICBDT05TVEFOVFNcbiAgICBdXG4gIH07XG59XG5cbi8qICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBTkdFTE9HXG4gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLSB2LjEuMiAoMjAxNy0wNS0xMilcbiAgICAgICAgLS0gQlVHLUZJWDogU29tZSBrZXl3b3JkcyB3ZXJlIGFjY2lkZW50YWxseSBqb3luZWQgdG9nZXRoZXIuIE5vdyBmaXhlZC5cbiAgICAtIHYuMS4xICgyMDE3LTA0LTMwKVxuICAgICAgICAtLSBVcGRhdGVkIHRvIFB1cmVCQVNJQyA1LjYwLlxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IG5vdyBidWlsdCBieSBleHRyYWN0aW5nIHRoZW0gZnJvbSB0aGUgUHVyZUJBU0lDIFNESydzXG4gICAgICAgICAgIFwiU3ludGF4SGlsaWdodGluZy5kbGxcIiAoZnJvbSBlYWNoIFB1cmVCQVNJQyB2ZXJzaW9uKS4gVG9rZW5zIGZyb20gZWFjaFxuICAgICAgICAgICB2ZXJzaW9uIGFyZSBhZGRlZCB0byB0aGUgbGlzdCwgYW5kIHJlbmFtZWQgb3IgcmVtb3ZlZCB0b2tlbnMgYXJlIGtlcHRcbiAgICAgICAgICAgZm9yIHRoZSBzYWtlIG9mIGNvdmVyaW5nIGFsbCB2ZXJzaW9ucyBvZiB0aGUgbGFuZ3VhZ2UgZnJvbSBQdXJlQkFTSUNcbiAgICAgICAgICAgdjUuMDAgdXB3YXJkLiAoTk9URTogY3VycmVudGx5LCB0aGVyZSBhcmUgbm8gcmVuYW1lZCBvciBkZXByZWNhdGVkXG4gICAgICAgICAgIHRva2VucyBpbiB0aGUga2V5d29yZHMgbGlzdCkuIEZvciBtb3JlIGluZm8sIHNlZTpcbiAgICAgICAgICAgLS0gaHR0cDovL3d3dy5wdXJlYmFzaWMuZnIvZW5nbGlzaC92aWV3dG9waWMucGhwPyZwPTUwNjI2OVxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vdGFqbW9uZS9wdXJlYmFzaWMtYXJjaGl2ZXMvdHJlZS9tYXN0ZXIvc3ludGF4LWhpZ2hsaWdodGluZy9ndWlkZWxpbmVzXG4gICAgLSB2LjEuMCAoQXByaWwgMjAxNilcbiAgICAgICAgLS0gRmlyc3QgcmVsZWFzZVxuICAgICAgICAtLSBLZXl3b3JkcyBsaXN0IHRha2VuIGFuZCBhZGFwdGVkIGZyb20gR3VTaEgncyAoR3VzdGF2byBKdWxpbyBGaW9yZW56YSlcbiAgICAgICAgICAgUHVyZUJhc2ljIGxhbmd1YWdlIGZpbGUgZm9yIEdlU0hpOlxuICAgICAgICAgICAtLSBodHRwczovL2dpdGh1Yi5jb20vZWFzeWJvb2svZ2VzaGkvYmxvYi9tYXN0ZXIvZ2VzaGkvcHVyZWJhc2ljLnBocFxuKi87IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBlbGlmIGlzIGdsb2JhbCBhcyBpbiBpZiBmcm9tIHJhaXNlIGZvciBleGNlcHQgZmluYWxseSBwcmludCBpbXBvcnQgcGFzcyByZXR1cm4gJyArXG4gICAgICAnZXhlYyBlbHNlIGJyZWFrIG5vdCB3aXRoIGNsYXNzIGFzc2VydCB5aWVsZCB0cnkgd2hpbGUgY29udGludWUgZGVsIG9yIGRlZiBsYW1iZGEgJyArXG4gICAgICAnYXN5bmMgYXdhaXQgbm9ubG9jYWx8MTAnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ0VsbGlwc2lzIE5vdEltcGxlbWVudGVkJyxcbiAgICBsaXRlcmFsOiAnRmFsc2UgTm9uZSBUcnVlJ1xuICB9O1xuICB2YXIgUFJPTVBUID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCAgYmVnaW46IC9eKD4+PnxcXC5cXC5cXC4pIC9cbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcey8sIGVuZDogL1xcfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8jL1xuICB9O1xuICB2YXIgTElURVJBTF9CUkFDS0VUID0ge1xuICAgIGJlZ2luOiAvXFx7XFx7LyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8Yik/cj9cIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBUXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIlwiXCIvLCBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgUFJPTVBULCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKScvLCBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxyfHVyKVwiLywgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhifGJyKScvLCBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxicilcIi8sIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZiknLywgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oZnJ8cmZ8ZilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIExJVEVSQUxfQlJBQ0tFVCwgU1VCU1RdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogaGxqcy5CSU5BUllfTlVNQkVSX1JFICsgJ1tsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogJ1xcXFxiKDBvWzAtN10rKVtsTGpKXT8nfSxcbiAgICAgIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICdbbExqSl0/J31cbiAgICBdXG4gIH07XG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFsnc2VsZicsIFBST01QVCwgTlVNQkVSLCBTVFJJTkcsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1NUUklORywgTlVNQkVSLCBQUk9NUFRdO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncHknLCAnZ3lwJywgJ2lweXRob24nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyg8XFwvfC0+fFxcPyl8PT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQUk9NUFQsXG4gICAgICBOVU1CRVIsXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtjbGFzc05hbWU6ICdmdW5jdGlvbicsIGJlZ2luS2V5d29yZHM6ICdkZWYnfSxcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnY2xhc3MnLCBiZWdpbktleXdvcmRzOiAnY2xhc3MnfVxuICAgICAgICBdLFxuICAgICAgICBlbmQ6IC86LyxcbiAgICAgICAgaWxsZWdhbDogL1skez07XFxuLF0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLy0+LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogJ05vbmUnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eW1xcdCBdKkAvLCBlbmQ6IC8kL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXGIocHJpbnR8ZXhlYylcXCgvIC8vIGRvbuKAmXQgaGlnaGxpZ2h0IGtleXdvcmRzLXR1cm5lZC1mdW5jdGlvbnMgaW4gUHl0aG9uIDNcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUV9LRVlXT1JEUyA9IHtcbiAga2V5d29yZDpcbiAgICAnZG8gd2hpbGUgc2VsZWN0IGRlbGV0ZSBieSB1cGRhdGUgZnJvbScsXG4gIGxpdGVyYWw6XG4gICAgJzBiIDFiJyxcbiAgYnVpbHRfaW46XG4gICAgJ25lZyBub3QgbnVsbCBzdHJpbmcgcmVjaXByb2NhbCBmbG9vciBjZWlsaW5nIHNpZ251bSBtb2QgeGJhciB4bG9nIGFuZCBvciBlYWNoIHNjYW4gb3ZlciBwcmlvciBtbXUgbHNxIGludiBtZDUgbHRpbWUgZ3RpbWUgY291bnQgZmlyc3QgdmFyIGRldiBtZWQgY292IGNvciBhbGwgYW55IHJhbmQgc3VtcyBwcmRzIG1pbnMgbWF4cyBmaWxscyBkZWx0YXMgcmF0aW9zIGF2Z3MgZGlmZmVyIHByZXYgbmV4dCByYW5rIHJldmVyc2UgaWFzYyBpZGVzYyBhc2MgZGVzYyBtc3VtIG1jb3VudCBtYXZnIG1kZXYgeHJhbmsgbW1pbiBtbWF4IHhwcmV2IHJvdGF0ZSBkaXN0aW5jdCBncm91cCB3aGVyZSBmbGlwIHR5cGUga2V5IHRpbCBnZXQgdmFsdWUgYXR0ciBjdXQgc2V0IHVwc2VydCByYXplIHVuaW9uIGludGVyIGV4Y2VwdCBjcm9zcyBzdiB2cyBzdWJsaXN0IGVubGlzdCByZWFkMCByZWFkMSBob3BlbiBoY2xvc2UgaGRlbCBoc3ltIGhjb3VudCBwZWFjaCBzeXN0ZW0gbHRyaW0gcnRyaW0gdHJpbSBsb3dlciB1cHBlciBzc3IgdmlldyB0YWJsZXMgdmlld3MgY29scyB4Y29scyBrZXlzIHhrZXkgeGNvbCB4YXNjIHhkZXNjIGZrZXlzIG1ldGEgbGogYWogYWowIGlqIHBqIGFzb2YgdWogd3cgd2ogd2oxIGZieSB4Z3JvdXAgdW5ncm91cCBlaiBzYXZlIGxvYWQgcnNhdmUgcmxvYWQgc2hvdyBjc3YgcGFyc2UgZXZhbCBtaW4gbWF4IGF2ZyB3YXZnIHdzdW0gc2luIGNvcyB0YW4gc3VtJyxcbiAgdHlwZTpcbiAgICAnYGZsb2F0IGBkb3VibGUgaW50IGB0aW1lc3RhbXAgYHRpbWVzcGFuIGBkYXRldGltZSBgdGltZSBgYm9vbGVhbiBgc3ltYm9sIGBjaGFyIGBieXRlIGBzaG9ydCBgbG9uZyBgcmVhbCBgbW9udGggYGRhdGUgYG1pbnV0ZSBgc2Vjb25kIGBndWlkJ1xuICB9O1xuICByZXR1cm4ge1xuICBhbGlhc2VzOlsnaycsICdrZGInXSxcbiAga2V5d29yZHM6IFFfS0VZV09SRFMsXG4gIGxleGVtZXM6IC8oYD8pW0EtWmEtejAtOV9dK1xcYi8sXG4gIGNvbnRhaW5zOiBbXG4gIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaW4gb2Ygb24gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgICAnaW5zdGFuY2VvZiB3aXRoIHRocm93IGNhc2UgZGVmYXVsdCB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSAnICtcbiAgICAgICAgJ2xldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgaW1wb3J0JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAgICdFdmFsRXJyb3IgSW50ZXJuYWxFcnJvciBSYW5nZUVycm9yIFJlZmVyZW5jZUVycm9yIFN0b3BJdGVyYXRpb24gU3ludGF4RXJyb3IgJyArXG4gICAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgICAnVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBBcnJheUJ1ZmZlciBEYXRhVmlldyBKU09OIEludGwgYXJndW1lbnRzIHJlcXVpcmUgJyArXG4gICAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgU3ltYm9sIFNldCBNYXAgV2Vha1NldCBXZWFrTWFwIFByb3h5IFJlZmxlY3QgJyArXG4gICAgICAgICdCZWhhdmlvciBib29sIGNvbG9yIGNvb3JkaW5hdGUgZGF0ZSBkb3VibGUgZW51bWVyYXRpb24gZm9udCBnZW9jaXJjbGUgZ2VvcmVjdGFuZ2xlICcgK1xuICAgICAgICAnZ2Vvc2hhcGUgaW50IGxpc3QgbWF0cml4NHg0IHBhcmVudCBwb2ludCBxdWF0ZXJuaW9uIHJlYWwgcmVjdCAnICtcbiAgICAgICAgJ3NpemUgc3RyaW5nIHVybCB2YXJpYW50IHZlY3RvcjJkIHZlY3RvcjNkIHZlY3RvcjRkJyArXG4gICAgICAgICdQcm9taXNlJ1xuICAgIH07XG5cbiAgdmFyIFFNTF9JREVOVF9SRSA9ICdbYS16QS1aX11bYS16QS1aMC05XFxcXC5fXSonO1xuXG4gIC8vIElzb2xhdGUgcHJvcGVydHkgc3RhdGVtZW50cy4gRW5kcyBhdCBhIDosID0sIDssICwsIGEgY29tbWVudCBvciBlbmQgb2YgbGluZS5cbiAgLy8gVXNlIHByb3BlcnR5IGNsYXNzLlxuICB2YXIgUFJPUEVSVFkgPSB7XG4gICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgIGJlZ2luOiAnXFxcXGJwcm9wZXJ0eVxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoOnw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBJc29sYXRlIHNpZ25hbCBzdGF0ZW1lbnRzLiBFbmRzIGF0IGEgKSBhIGNvbW1lbnQgb3IgZW5kIG9mIGxpbmUuXG4gIC8vIFVzZSBwcm9wZXJ0eSBjbGFzcy5cbiAgdmFyIFNJR05BTCA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgYmVnaW46ICdcXFxcYnNpZ25hbFxcXFxiJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICcoXFxcXCh8Onw9fDt8LHwvL3wvXFxcXCp8JCknLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH1cbiAgfTtcblxuICAvLyBpZDogaXMgc3BlY2lhbCBpbiBRTUwuIFdoZW4gd2Ugc2VlIGlkOiB3ZSB3YW50IHRvIG1hcmsgdGhlIGlkOiBhcyBhdHRyaWJ1dGUgYW5kXG4gIC8vIGVtcGhhc2l6ZSB0aGUgdG9rZW4gZm9sbG93aW5nLlxuICB2YXIgSURfSUQgPSB7XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46ICdcXFxcYmlkXFxcXHMqOicsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgZW5kOiBRTUxfSURFTlRfUkUsXG4gICAgICAgIHJldHVybkVuZDogZmFsc2VcbiAgICAgIH1cbiAgfTtcblxuICAvLyBGaW5kIFFNTCBvYmplY3QgYXR0cmlidXRlLiBBbiBhdHRyaWJ1dGUgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSA6LlxuICAvLyBVbmZvcnR1bmF0ZWx5IGl0J3MgaGFyZCB0byBrbm93IHdoZXJlIGl0IGVuZHMsIGFzIGl0IG1heSBjb250YWluIHNjYWxhcnMsXG4gIC8vIG9iamVjdHMsIG9iamVjdCBkZWZpbml0aW9ucywgb3IgamF2YXNjcmlwdC4gVGhlIHRydWUgZW5kIGlzIGVpdGhlciB3aGVuIHRoZSBwYXJlbnRcbiAgLy8gZW5kcyBvciB0aGUgbmV4dCBhdHRyaWJ1dGUgaXMgZGV0ZWN0ZWQuXG4gIHZhciBRTUxfQVRUUklCVVRFID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqOicsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46IFFNTF9JREVOVF9SRSxcbiAgICAgICAgZW5kOiAnXFxcXHMqOicsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLy8gRmluZCBRTUwgb2JqZWN0LiBBIFFNTCBvYmplY3QgaXMgYSBRTUwgaWRlbnRpZmllciBmb2xsb3dlZCBieSB7IGFuZCBlbmRzIGF0IHRoZSBtYXRjaGluZyB9LlxuICAvLyBBbGwgd2UgcmVhbGx5IGNhcmUgYWJvdXQgaXMgZmluZGluZyBJREVOVCBmb2xsb3dlZCBieSB7IGFuZCBqdXN0IG1hcmsgdXAgdGhlIElERU5UIGFuZCBpZ25vcmUgdGhlIHsuXG4gIHZhciBRTUxfT0JKRUNUID0ge1xuICAgIGJlZ2luOiBRTUxfSURFTlRfUkUgKyAnXFxcXHMqeycsIGVuZDogJ3snLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBRTUxfSURFTlRfUkV9KVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncXQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgeyAvLyB0ZW1wbGF0ZSBzdHJpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyknIH0sXG4gICAgICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7IC8vIEU0WCAvIEpTWFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPlxccypbKTtcXF1dLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgU0lHTkFMLFxuICAgICAgUFJPUEVSVFksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgaGxqcy5JREVOVF9SRSwgcmVsZXZhbmNlOiAwIC8vIGhhY2s6IHByZXZlbnRzIGRldGVjdGlvbiBvZiBrZXl3b3JkcyBhZnRlciBkb3RzXG4gICAgICB9LFxuICAgICAgSURfSUQsXG4gICAgICBRTUxfQVRUUklCVVRFLFxuICAgICAgUU1MX09CSkVDVFxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRfUkUgPSAnKFthLXpBLVpdfFxcXFwuW2EtekEtWi5dKVthLXpBLVowLTkuX10qJztcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogSURFTlRfUkUsXG4gICAgICAgIGxleGVtZXM6IElERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnZnVuY3Rpb24gaWYgaW4gYnJlYWsgbmV4dCByZXBlYXQgZWxzZSBmb3IgcmV0dXJuIHN3aXRjaCB3aGlsZSB0cnkgdHJ5Q2F0Y2ggJyArXG4gICAgICAgICAgICAnc3RvcCB3YXJuaW5nIHJlcXVpcmUgbGlicmFyeSBhdHRhY2ggZGV0YWNoIHNvdXJjZSBzZXRNZXRob2Qgc2V0R2VuZXJpYyAnICtcbiAgICAgICAgICAgICdzZXRHcm91cEdlbmVyaWMgc2V0Q2xhc3MgLi4uJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ05VTEwgTkEgVFJVRSBGQUxTRSBUIEYgSW5mIE5hTiBOQV9pbnRlZ2VyX3wxMCBOQV9yZWFsX3wxMCBOQV9jaGFyYWN0ZXJffDEwICcgK1xuICAgICAgICAgICAgJ05BX2NvbXBsZXhffDEwJ1xuICAgICAgICB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBleHBsaWNpdCBpbnRlZ2VyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP0xcXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIHRyYWlsaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrXFxcXC4oPyFcXFxcZCkoPzppXFxcXGIpP1wiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpcXFxcLlxcXFxkKik/KD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIG51bWJlciB3aXRoIGxlYWRpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcLlxcXFxkKyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIGVzY2FwZWQgaWRlbnRpZmllclxuICAgICAgICBiZWdpbjogJ2AnLFxuICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ30sXG4gICAgICAgICAge2JlZ2luOiBcIidcIiwgZW5kOiBcIidcIn1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIGZ1bmN0aW9uIG9yUmVWYWx1ZXMob3BzKXtcbiAgICByZXR1cm4gb3BzXG4gICAgLm1hcChmdW5jdGlvbihvcCkge1xuICAgICAgcmV0dXJuIG9wXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcChmdW5jdGlvbihjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuICdcXFxcJyArIGNoYXI7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICB9KVxuICAgIC5qb2luKCd8Jyk7XG4gIH1cblxuICB2YXIgUkVfSURFTlQgPSAnfj9bYS16JF9dWzAtOWEtekEtWiRfXSonO1xuICB2YXIgUkVfTU9EVUxFX0lERU5UID0gJ2A/W0EtWiRfXVswLTlhLXpBLVokX10qJztcblxuICB2YXIgUkVfUEFSQU1fVFlQRVBBUkFNID0gJ1xcJz9bYS16JF9dWzAtOWEteiRfXSonO1xuICB2YXIgUkVfUEFSQU1fVFlQRSA9ICdcXHMqOlxccypbYS16JF9dWzAtOWEteiRfXSooXFwoXFxzKignICsgUkVfUEFSQU1fVFlQRVBBUkFNICsgJ1xccyooLCcgKyBSRV9QQVJBTV9UWVBFUEFSQU0gKyAnKSopP1xccypcXCkpPyc7XG4gIHZhciBSRV9QQVJBTSA9IFJFX0lERU5UICsgJygnICsgUkVfUEFSQU1fVFlQRSArICcpPygnICsgUkVfUEFSQU1fVFlQRSArICcpPyc7XG4gIHZhciBSRV9PUEVSQVRPUiA9IFwiKFwiICsgb3JSZVZhbHVlcyhbJ3x8JywgJyYmJywgJysrJywgJyoqJywgJysuJywgJyonLCAnLycsICcqLicsICcvLicsICcuLi4nLCAnfD4nXSkgKyBcInw9PXw9PT0pXCI7XG4gIHZhciBSRV9PUEVSQVRPUl9TUEFDRUQgPSBcIlxcXFxzK1wiICsgUkVfT1BFUkFUT1IgKyBcIlxcXFxzK1wiO1xuXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2FuZCBhcyBhc3IgYXNzZXJ0IGJlZ2luIGNsYXNzIGNvbnN0cmFpbnQgZG8gZG9uZSBkb3dudG8gZWxzZSBlbmQgZXhjZXB0aW9uIGV4dGVybmFsJyArXG4gICAgICAnZm9yIGZ1biBmdW5jdGlvbiBmdW5jdG9yIGlmIGluIGluY2x1ZGUgaW5oZXJpdCBpbml0aWFsaXplcicgK1xuICAgICAgJ2xhbmQgbGF6eSBsZXQgbG9yIGxzbCBsc3IgbHhvciBtYXRjaCBtZXRob2QgbW9kIG1vZHVsZSBtdXRhYmxlIG5ldyBub25yZWMnICtcbiAgICAgICdvYmplY3Qgb2Ygb3BlbiBvciBwcml2YXRlIHJlYyBzaWcgc3RydWN0IHRoZW4gdG8gdHJ5IHR5cGUgdmFsIHZpcnR1YWwgd2hlbiB3aGlsZSB3aXRoJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdhcnJheSBib29sIGJ5dGVzIGNoYXIgZXhufDUgZmxvYXQgaW50IGludDMyIGludDY0IGxpc3QgbGF6eV90fDUgbmF0aXZlaW50fDUgcmVmIHN0cmluZyB1bml0ICcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlJ1xuICB9O1xuXG4gIHZhciBSRV9OVU1CRVIgPSAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KSc7XG5cbiAgdmFyIE5VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBSRV9OVU1CRVJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcLScgKyBSRV9OVU1CRVIgKyAnXFxcXCknXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBPUEVSQVRPUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ29wZXJhdG9yJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IFJFX09QRVJBVE9SXG4gIH07XG4gIHZhciBMSVNUX0NPTlRFTlRTX01PREVTID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgYmVnaW46IFJFX0lERU5UXG4gICAgfSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIE5VTUJFUl9NT0RFXG4gIF07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMgPSBbXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBPUEVSQVRPUl9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21vZHVsZScsXG4gICAgICBiZWdpbjogXCJcXFxcYlwiICsgUkVfTU9EVUxFX0lERU5ULCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgIGVuZDogXCJcXC5cIixcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICBiZWdpbjogUkVfTU9EVUxFX0lERU5ULFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuXG4gIHZhciBQQVJBTVNfQ09OVEVOVFMgPSBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlJyxcbiAgICAgIGJlZ2luOiBcIlxcXFxiXCIgKyBSRV9NT0RVTEVfSURFTlQsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgZW5kOiBcIlxcLlwiLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlQsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG5cbiAgdmFyIFBBUkFNU19NT0RFID0ge1xuICAgIGJlZ2luOiBSRV9JREVOVCxcbiAgICBlbmQ6ICcoLHxcXFxcbnxcXFxcKSknLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwaW5nJyxcbiAgICAgICAgYmVnaW46ICc6JyxcbiAgICAgICAgZW5kOiAnKCx8XFxcXG4pJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05URU5UU1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fQkxPQ0tfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzKFxcXFwoXFxcXC4/Lio/XFxcXCl8JyArIFJFX0lERU5UICsgJylcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzKj0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBSRV9JREVOVFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IFJFX1BBUkFNXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxzXFxcXChcXFxcLj9bXjtcXFxcfF0qXFxcXClcXFxccyo9PicsXG4gICAgICAgIGVuZDogJ1xcXFxzPT4nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICBQQVJBTVNfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKFxcXFwuXFxcXHMnICsgUkVfSURFTlQgKyAnXFxcXClcXFxccyo9PidcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMucHVzaChGVU5DVElPTl9CTE9DS19NT0RFKTtcblxuICB2YXIgQ09OU1RSVUNUT1JfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgYmVnaW46IFJFX01PRFVMRV9JREVOVCArICdcXFxcKCcsXG4gICAgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYicgKyBSRV9JREVOVFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhdHRlcm4tbWF0Y2gnLFxuICAgIGJlZ2luOiAnXFxcXHwnLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBlbmQ6ICc9PicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAgT1BFUkFUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjbGFzc05hbWU6ICdjb25zdHJ1Y3RvcicsXG4gICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlRcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE1PRFVMRV9BQ0NFU1NfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdtb2R1bGUtYWNjZXNzJyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXFxcXGIoXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFwuKStcIiArIFJFX0lERU5UXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogXCJcXFxcYihcIiArIFJFX01PRFVMRV9JREVOVCArIFwiXFxcXC4pK1xcXFwoXCIsXG4gICAgICAgIGVuZDogXCJcXFxcKVwiLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBGVU5DVElPTl9CTE9DS19NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIlxcXFxiKFwiICsgUkVfTU9EVUxFX0lERU5UICsgXCJcXFxcLikre1wiLFxuICAgICAgICBlbmQ6IFwifVwiXG4gICAgICB9XG4gICAgXSxcbiAgICBjb250YWluczogTU9EVUxFX0FDQ0VTU19DT05URU5UU1xuICB9O1xuXG4gIFBBUkFNU19DT05URU5UUy5wdXNoKE1PRFVMRV9BQ0NFU1NfTU9ERSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JlJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICcoOlxcXFwtfDo9fFxcXFwke3xcXFxcKz0pJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywgeyBpbGxlZ2FsOiAnXihcXFxcIyxcXFxcL1xcXFwvKScgfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NoYXJhY3RlcicsXG4gICAgICAgIGJlZ2luOiAnXFwnKFxcXFxcXFxcW15cXCddK3xbXlxcJ10pXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFtcXFxcfCcsXG4gICAgICAgIGVuZDogJ1xcXFx8XFxcXF0nLFxuICAgICAgICByZWxldmFuY2U6ICAwLFxuICAgICAgICBjb250YWluczogTElTVF9DT05URU5UU19NT0RFU1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLFxuICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IExJU1RfQ09OVEVOVFNfTU9ERVNcbiAgICAgIH0sXG4gICAgICBDT05TVFJVQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdvcGVyYXRvcicsXG4gICAgICAgIGJlZ2luOiBSRV9PUEVSQVRPUl9TUEFDRUQsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcLVxcXFwtPicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIE5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFLFxuICAgICAgRlVOQ1RJT05fQkxPQ0tfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlLWRlZicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxibW9kdWxlXFxcXHMrXCIgKyBSRV9JREVOVCArIFwiXFxcXHMrXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFxzKz1cXFxccyt7XCIsXG4gICAgICAgIGVuZDogXCJ9XCIsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgYmVnaW46IFJFX01PRFVMRV9JREVOVFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICd7JyxcbiAgICAgICAgICAgIGVuZDogJ30nLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXS5jb25jYXQoTU9EVUxFX0FDQ0VTU19DT05URU5UUylcbiAgICAgIH0sXG4gICAgICBNT0RVTEVfQUNDRVNTX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ0FyY2hpdmVSZWNvcmQgQXJlYUxpZ2h0U291cmNlIEF0bW9zcGhlcmUgQXR0cmlidXRlIEF0dHJpYnV0ZUJlZ2luIEF0dHJpYnV0ZUVuZCBCYXNpcyAnICtcbiAgICAgICdCZWdpbiBCbG9iYnkgQm91bmQgQ2xpcHBpbmcgQ2xpcHBpbmdQbGFuZSBDb2xvciBDb2xvclNhbXBsZXMgQ29uY2F0VHJhbnNmb3JtIENvbmUgJyArXG4gICAgICAnQ29vcmRpbmF0ZVN5c3RlbSBDb29yZFN5c1RyYW5zZm9ybSBDcm9wV2luZG93IEN1cnZlcyBDeWxpbmRlciBEZXB0aE9mRmllbGQgRGV0YWlsICcgK1xuICAgICAgJ0RldGFpbFJhbmdlIERpc2sgRGlzcGxhY2VtZW50IERpc3BsYXkgRW5kIEVycm9ySGFuZGxlciBFeHBvc3VyZSBFeHRlcmlvciBGb3JtYXQgJyArXG4gICAgICAnRnJhbWVBc3BlY3RSYXRpbyBGcmFtZUJlZ2luIEZyYW1lRW5kIEdlbmVyYWxQb2x5Z29uIEdlb21ldHJpY0FwcHJveGltYXRpb24gR2VvbWV0cnkgJyArXG4gICAgICAnSGlkZXIgSHlwZXJib2xvaWQgSWRlbnRpdHkgSWxsdW1pbmF0ZSBJbWFnZXIgSW50ZXJpb3IgTGlnaHRTb3VyY2UgJyArXG4gICAgICAnTWFrZUN1YmVGYWNlRW52aXJvbm1lbnQgTWFrZUxhdExvbmdFbnZpcm9ubWVudCBNYWtlU2hhZG93IE1ha2VUZXh0dXJlIE1hdHRlICcgK1xuICAgICAgJ01vdGlvbkJlZ2luIE1vdGlvbkVuZCBOdVBhdGNoIE9iamVjdEJlZ2luIE9iamVjdEVuZCBPYmplY3RJbnN0YW5jZSBPcGFjaXR5IE9wdGlvbiAnICtcbiAgICAgICdPcmllbnRhdGlvbiBQYXJhYm9sb2lkIFBhdGNoIFBhdGNoTWVzaCBQZXJzcGVjdGl2ZSBQaXhlbEZpbHRlciBQaXhlbFNhbXBsZXMgJyArXG4gICAgICAnUGl4ZWxWYXJpYW5jZSBQb2ludHMgUG9pbnRzR2VuZXJhbFBvbHlnb25zIFBvaW50c1BvbHlnb25zIFBvbHlnb24gUHJvY2VkdXJhbCBQcm9qZWN0aW9uICcgK1xuICAgICAgJ1F1YW50aXplIFJlYWRBcmNoaXZlIFJlbGF0aXZlRGV0YWlsIFJldmVyc2VPcmllbnRhdGlvbiBSb3RhdGUgU2NhbGUgU2NyZWVuV2luZG93ICcgK1xuICAgICAgJ1NoYWRpbmdJbnRlcnBvbGF0aW9uIFNoYWRpbmdSYXRlIFNodXR0ZXIgU2lkZXMgU2tldyBTb2xpZEJlZ2luIFNvbGlkRW5kIFNwaGVyZSAnICtcbiAgICAgICdTdWJkaXZpc2lvbk1lc2ggU3VyZmFjZSBUZXh0dXJlQ29vcmRpbmF0ZXMgVG9ydXMgVHJhbnNmb3JtIFRyYW5zZm9ybUJlZ2luIFRyYW5zZm9ybUVuZCAnICtcbiAgICAgICdUcmFuc2Zvcm1Qb2ludHMgVHJhbnNsYXRlIFRyaW1DdXJ2ZSBXb3JsZEJlZ2luIFdvcmxkRW5kJyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVElGSUVSID0gJ1thLXpBLVotX11bXlxcXFxue10rXFxcXHsnO1xuXG4gIHZhciBQUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWi1fXSsvLCBlbmQ6IC9cXHMqOi8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICc7JyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgYmVnaW46IC9cXC5bYS16QS1aLV9dKy9cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIGJlZ2luOiAvXFwob3B0aW9uYWxcXCkvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dyYXBoJywgJ2luc3RhbmNlcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpbXBvcnQnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBGYWNldCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ15mYWNldCAnICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGtleXdvcmRzOiAnZmFjZXQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBST1BFUlRZLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gSW5zdGFuY2Ugc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqaW5zdGFuY2Ugb2YgJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBrZXl3b3JkczogJ25hbWUgY291bnQgY2hhbm5lbHMgaW5zdGFuY2UtZGF0YSBpbnN0YW5jZS1zdGF0ZSBpbnN0YW5jZSBvZicsXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICBQUk9QRVJUWSxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIENvbXBvbmVudCBzZWN0aW9uc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14nICsgSURFTlRJRklFUixcbiAgICAgICAgZW5kOiAnfScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUFJPUEVSVFksXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBDb21tZW50c1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvLyBDb2xvcnMgZnJvbSBSb3V0ZXJPUyB0ZXJtaW5hbDpcbi8vICAgZ3JlZW4gICAgICAgIC0gIzBFOUEwMFxuLy8gICB0ZWFsICAgICAgICAgLSAjMEM5QTlBXG4vLyAgIHB1cnBsZSAgICAgICAtICM5OTA2OUFcbi8vICAgbGlnaHQtYnJvd24gIC0gIzlBOTkwMFxuXG5mdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFNUQVRFTUVOVFMgPSAnZm9yZWFjaCBkbyB3aGlsZSBmb3IgaWYgZnJvbSB0byBzdGVwIGVsc2Ugb24tZXJyb3IgYW5kIG9yIG5vdCBpbic7XG5cbiAgLy8gR2xvYmFsIGNvbW1hbmRzOiBFdmVyeSBnbG9iYWwgY29tbWFuZCBzaG91bGQgc3RhcnQgd2l0aCBcIjpcIiB0b2tlbiwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyB2YXJpYWJsZS5cbiAgdmFyIEdMT0JBTF9DT01NQU5EUyA9ICdnbG9iYWwgbG9jYWwgYmVlcCBkZWxheSBwdXQgbGVuIHR5cGVvZiBwaWNrIGxvZyB0aW1lIHNldCBmaW5kIGVudmlyb25tZW50IHRlcm1pbmFsIGVycm9yIGV4ZWN1dGUgcGFyc2UgcmVzb2x2ZSB0b2FycmF5IHRvYm9vbCB0b2lkIHRvaXAgdG9pcDYgdG9udW0gdG9zdHIgdG90aW1lJztcblxuICAvLyBDb21tb24gY29tbWFuZHM6IEZvbGxvd2luZyBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBtb3N0IHN1Yi1tZW51czpcbiAgdmFyIENPTU1PTl9DT01NQU5EUyA9ICdhZGQgcmVtb3ZlIGVuYWJsZSBkaXNhYmxlIHNldCBnZXQgcHJpbnQgZXhwb3J0IGVkaXQgZmluZCBydW4gZGVidWcgZXJyb3IgaW5mbyB3YXJuaW5nJztcblxuICB2YXIgTElURVJBTFMgPSAndHJ1ZSBmYWxzZSB5ZXMgbm8gbm90aGluZyBuaWwgbnVsbCc7XG5cbiAgdmFyIE9CSkVDVFMgPSAndHJhZmZpYy1mbG93IHRyYWZmaWMtZ2VuZXJhdG9yIGZpcmV3YWxsIHNjaGVkdWxlciBhYWEgYWNjb3VudGluZyBhZGRyZXNzLWxpc3QgYWRkcmVzcyBhbGlnbiBhcmVhIGJhbmR3aWR0aC1zZXJ2ZXIgYmZkIGJncCBicmlkZ2UgY2xpZW50IGNsb2NrIGNvbW11bml0eSBjb25maWcgY29ubmVjdGlvbiBjb25zb2xlIGN1c3RvbWVyIGRlZmF1bHQgZGhjcC1jbGllbnQgZGhjcC1zZXJ2ZXIgZGlzY292ZXJ5IGRucyBlLW1haWwgZXRoZXJuZXQgZmlsdGVyIGZpcmV3YWxsIGZpcm13YXJlIGdwcyBncmFwaGluZyBncm91cCBoYXJkd2FyZSBoZWFsdGggaG90c3BvdCBpZGVudGl0eSBpZ21wLXByb3h5IGluY29taW5nIGluc3RhbmNlIGludGVyZmFjZSBpcCBpcHNlYyBpcHY2IGlycSBsMnRwLXNlcnZlciBsY2QgbGRwIGxvZ2dpbmcgbWFjLXNlcnZlciBtYWMtd2luYm94IG1hbmdsZSBtYW51YWwgbWlycm9yIG1tZSBtcGxzIG5hdCBuZCBuZWlnaGJvciBuZXR3b3JrIG5vdGUgbnRwIG9zcGYgb3NwZi12MyBvdnBuLXNlcnZlciBwYWdlIHBlZXIgcGltIHBpbmcgcG9saWN5IHBvb2wgcG9ydCBwcHAgcHBwb2UtY2xpZW50IHBwdHAtc2VydmVyIHByZWZpeCBwcm9maWxlIHByb3Bvc2FsIHByb3h5IHF1ZXVlIHJhZGl1cyByZXNvdXJjZSByaXAgcmlwbmcgcm91dGUgcm91dGluZyBzY3JlZW4gc2NyaXB0IHNlY3VyaXR5LXByb2ZpbGVzIHNlcnZlciBzZXJ2aWNlIHNlcnZpY2UtcG9ydCBzZXR0aW5ncyBzaGFyZXMgc21iIHNtcyBzbmlmZmVyIHNubXAgc25vb3BlciBzb2NrcyBzc3RwLXNlcnZlciBzeXN0ZW0gdG9vbCB0cmFja2luZyB0eXBlIHVwZ3JhZGUgdXBucCB1c2VyLW1hbmFnZXIgdXNlcnMgdXNlciB2bGFuIHNlY3JldCB2cnJwIHdhdGNoZG9nIHdlYi1hY2Nlc3Mgd2lyZWxlc3MgcHB0cCBwcHBvZSBsYW4gd2FuIGxheWVyNy1wcm90b2NvbCBsZWFzZSBzaW1wbGUgcmF3JztcblxuICAvLyBwcmludCBwYXJhbWV0ZXJzXG4gIC8vIFNldmVyYWwgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIGZvciBwcmludCBjb21tYW5kOlxuICAvLyBUb0RvOiB2YXIgUEFSQU1FVEVSU19QUklOVCA9ICdhcHBlbmQgYXMtdmFsdWUgYnJpZWYgZGV0YWlsIGNvdW50LW9ubHkgZmlsZSBmb2xsb3cgZm9sbG93LW9ubHkgZnJvbSBpbnRlcnZhbCB0ZXJzZSB2YWx1ZS1saXN0IHdpdGhvdXQtcGFnaW5nIHdoZXJlIGluZm8nO1xuICAvLyBUb0RvOiB2YXIgT1BFUkFUT1JTID0gJyYmIGFuZCAhIG5vdCB8fCBvciBpbiB+IF4gJiA8PCA+PiArIC0gKiAvJztcbiAgLy8gVG9EbzogdmFyIFRZUEVTID0gJ251bSBudW1iZXIgYm9vbCBib29sZWFuIHN0ciBzdHJpbmcgaXAgaXA2LXByZWZpeCBpZCB0aW1lIGFycmF5JztcbiAgLy8gVG9EbzogVGhlIGZvbGxvd2luZyB0b2tlbnMgc2VydmUgYXMgZGVsaW1pdGVycyBpbiB0aGUgZ3JhbW1hcjogKCkgIFtdICB7fSAgOiAgIDsgICAkICAgL1xuXG4gIHZhciBWQVJfUFJFRklYID0gJ2dsb2JhbCBsb2NhbCBzZXQgZm9yIGZvcmVhY2gnO1xuXG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLCBlbmQ6IC8nL1xuICB9O1xuXG4gIHZhciBJUEFERFIgPSAnKCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcXFxiJztcbiAgdmFyIElQQUREUl93QklUTUFTSyA9ICBJUEFERFIrJy8oM1swLTJdfFsxLTJdWzAtOV18XFxcXGQpJztcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncm91dGVyb3MnLCAnbWlrcm90aWsnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IC86P1tcXHctXSsvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmQ6IFNUQVRFTUVOVFMgKyAnIDonICsgU1RBVEVNRU5UUy5zcGxpdCgnICcpLmpvaW4oJyA6JykgKyAnIDonICsgR0xPQkFMX0NPTU1BTkRTLnNwbGl0KCcgJykuam9pbignIDonKSxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vINC90LXQtNC+0L/Rg9GB0YLQuNC80YvQtSDQutC+0L3RgdGC0YDRg9C60YbQuNC4XG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogL15ALywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gZG5zXG4gICAgICAgICAgeyBiZWdpbjogL1xcL1xcKi8sIGVuZDogL1xcKlxcLy8sIH0sICAgICAgICAgIC8vIC0tIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvJSUvLCBlbmQ6IC8kLywgfSwgICAgICAgICAgICAgICAvLyAtLSBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogL14nLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gTW9ua2V5IG9uZSBsaW5lIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvXlxccypcXC9bXFx3LV0rPS8sIGVuZDogLyQvLCB9LCAgICAvLyBqYm9zcy1jbGlcbiAgICAgICAgICB7IGJlZ2luOiAvXFwvXFwvLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgIC8vIFN0YW4gY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC9eXFxbXFw8LywgZW5kOiAvXFw+XFxdJC8sIH0sICAgICAgICAvLyBGIyBjbGFzcyBkZWNsYXJhdGlvbj9cbiAgICAgICAgICB7IGJlZ2luOiAvPFxcLy8sIGVuZDogLz4vLCB9LCAgICAgICAgICAgICAgLy8gSFRNTCB0YWdzXG4gICAgICAgICAgeyBiZWdpbjogL15mYWNldCAvLCBlbmQ6IC9cXH0vLCB9LCAgICAgICAgIC8vIHJvYm9jb25mIC0g0LvRjtGC0YvQuSDQutC+0YHRgtGL0LvRjCApKSlcbiAgICAgICAgICB7IGJlZ2luOiAnXjFcXFxcLlxcXFwuKFxcXFxkKykkJywgZW5kOiAvJC8sIH0sICAvLyB0YXBcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLy4vLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXiMnLCAnJCcpLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVIsXG4gICAgICB7IC8vIGF0dHJpYnV0ZT12YWx1ZVxuICAgICAgICBiZWdpbjogL1tcXHctXStcXD0oW15cXHNcXHtcXH1cXFtcXF1cXChcXCldKykvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgICAgICBiZWdpbjogL1tePV0rL1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiAgdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgICAgICAgICAgQVBPU19TVFJJTkcsXG4gICAgICAgICAgICAgIFZBUixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIExJVEVSQUxTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8qe1xuICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzc2VzIGFuZCBzdWJuZXRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFJfd0JJVE1BU0srJygsJytJUEFERFJfd0JJVE1BU0srJykqJ30sIC8vMTkyLjE2OC4wLjAvMjQsMS4yLjMuMC8yNFxuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFIrJy0nK0lQQUREUn0sICAgICAgIC8vIDE5Mi4xNjguMC4xLTE5Mi4xNjguMC4zXG4gICAgICAgICAgICAgICAgICB7YmVnaW46IElQQUREUisnKCwnK0lQQUREUisnKSonfSwgLy8gMTkyLjE2OC4wLjEsMTkyLjE2OC4wLjM0LDE5Mi4xNjguMjQuMSwxOTIuMTY4LjAuMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSwgLy8gKi9cbiAgICAgICAgICAgICAgLyp7XG4gICAgICAgICAgICAgICAgLy8gTUFDIGFkZHJlc3NlcyBhbmQgREhDUCBDbGllbnQgSURzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcYigxOik/KFswLTlBLUZhLWZdezEsMn1bOi1dKXs1fShbMC05QS1GYS1mXSl7MSwyfVxcYi8sXG4gICAgICAgICAgICAgIH0sIC8vKi9cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vINCd0LUg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNGC0Ywg0L3QtSDQutC70LDRgdGB0LjRhNC40YbQuNGA0L7QstCw0L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjy4g0J3QtdC+0LHRhdC+0LTQuNC80L4g0LTQu9GPINC40YHQutC70Y7Rh9C10L3QuNGPINC/0L7QtNGB0LLQtdGC0LrQuCDQt9C90LDRh9C10L3QuNC5INC60LDQuiBidWlsdF9pbi5cbiAgICAgICAgICAgICAgICAvLyBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvKFwiW15cIl0qXCJ8W15cXHNcXHtcXH1cXFtcXF1dKykvLFxuICAgICAgICAgICAgICB9LCAvLyovXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSAvLyovXG4gICAgICAgIF1cbiAgICAgIH0sLy8qL1xuICAgICAge1xuICAgICAgICAvLyBIRVggdmFsdWVzXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAvXFwqWzAtOWEtZkEtRl0rLyxcbiAgICAgIH0sIC8vKi9cblxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBDT01NT05fQ09NTUFORFMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKShbXFxcXHNcXFtcXChdfFxcXSknLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdGluLW5hbWUnLCAvLydmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcoXFxcXC5cXFxcLi98L3xcXFxccykoKCcgKyBPQkpFQ1RTLnNwbGl0KCcgJykuam9pbignfCcpICsgJyk7P1xcXFxzKSsnLHJlbGV2YW5jZTogMTAsfSxcbiAgICAgICAgICB7YmVnaW46IC9cXC5cXC4vLH0sXG4gICAgICAgIF0sXG4gICAgICB9LC8vKi9cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnZmxvYXQgY29sb3IgcG9pbnQgbm9ybWFsIHZlY3RvciBtYXRyaXggd2hpbGUgZm9yIGlmIGRvIHJldHVybiBlbHNlIGJyZWFrIGV4dGVybiBjb250aW51ZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY29zIGFtYmllbnQgYXJlYSBhc2luIGF0YW4gYXRtb3NwaGVyZSBhdHRyaWJ1dGUgY2FsY3VsYXRlbm9ybWFsIGNlaWwgY2VsbG5vaXNlICcgK1xuICAgICAgICAnY2xhbXAgY29tcCBjb25jYXQgY29zIGRlZ3JlZXMgZGVwdGggRGVyaXYgZGlmZnVzZSBkaXN0YW5jZSBEdSBEdiBlbnZpcm9ubWVudCBleHAgJyArXG4gICAgICAgICdmYWNlZm9yd2FyZCBmaWx0ZXJzdGVwIGZsb29yIGZvcm1hdCBmcmVzbmVsIGluY2lkZW50IGxlbmd0aCBsaWdodHNvdXJjZSBsb2cgbWF0Y2ggJyArXG4gICAgICAgICdtYXggbWluIG1vZCBub2lzZSBub3JtYWxpemUgbnRyYW5zZm9ybSBvcHBvc2l0ZSBvcHRpb24gcGhvbmcgcG5vaXNlIHBvdyBwcmludGYgJyArXG4gICAgICAgICdwdGxpbmVkIHJhZGlhbnMgcmFuZG9tIHJlZmxlY3QgcmVmcmFjdCByZW5kZXJpbmZvIHJvdW5kIHNldGNvbXAgc2V0eGNvbXAgc2V0eWNvbXAgJyArXG4gICAgICAgICdzZXR6Y29tcCBzaGFkb3cgc2lnbiBzaW4gc21vb3Roc3RlcCBzcGVjdWxhciBzcGVjdWxhcmJyZGYgc3BsaW5lIHNxcnQgc3RlcCB0YW4gJyArXG4gICAgICAgICd0ZXh0dXJlIHRleHR1cmVpbmZvIHRyYWNlIHRyYW5zZm9ybSB2dHJhbnNmb3JtIHhjb21wIHljb21wIHpjb21wJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3VyZmFjZSBkaXNwbGFjZW1lbnQgbGlnaHQgdm9sdW1lIGltYWdlcicsIGVuZDogJ1xcXFwoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2lsbHVtaW5hdGUgaWxsdW1pbmFuY2UgZ2F0aGVyJywgZW5kOiAnXFxcXCgnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAgIGtleXdvcmQ6ICdCSUxMX1BFUklPRCBCSUxMX1NUQVJUIEJJTExfU1RPUCBSU19FRkZFQ1RJVkVfU1RBUlQgUlNfRUZGRUNUSVZFX1NUT1AgUlNfSlVSSVNfQ09ERSBSU19PUENPX0NPREUgJyArXG4gICAgICAgICAnSU5UREFEREFUVFJJQlVURXw1IElOVERBRERWTVNHfDUgSU5UREJMT0NLT1B8NSBJTlREQkxPQ0tPUE5BfDUgSU5URENMT1NFfDUgSU5URENPVU5UfDUgJyArXG4gICAgICAgICAnSU5URENPVU5UU1RBVFVTQ09ERXw1IElOVERDUkVBVEVNQVNLfDUgSU5URENSRUFURURBWU1BU0t8NSBJTlREQ1JFQVRFRkFDVE9STUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVIQU5ETEV8NSBJTlREQ1JFQVRFT1ZFUlJJREVEQVlNQVNLfDUgSU5URENSRUFURU9WRVJSSURFTUFTS3w1ICcgK1xuICAgICAgICAgJ0lOVERDUkVBVEVTVEFUVVNDT0RFTUFTS3w1IElOVERDUkVBVEVUT1VQRVJJT0R8NSBJTlREREVMRVRFfDUgSU5URERJUFRFU1R8NSBJTlRERVhQT1JUfDUgJyArXG4gICAgICAgICAnSU5UREdFVEVSUk9SQ09ERXw1IElOVERHRVRFUlJPUk1FU1NBR0V8NSBJTlRESVNFUVVBTHw1IElOVERKT0lOfDUgSU5URExPQUR8NSBJTlRETE9BREFDVFVBTENVVHw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FEREFURVN8NSBJTlRETE9BREhJU1R8NSBJTlRETE9BRExJU1R8NSBJTlRETE9BRExJU1REQVRFU3w1IElOVERMT0FETElTVEVORVJHWXw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FETElTVEhJU1R8NSBJTlRETE9BRFJFTEFURURDSEFOTkVMfDUgSU5URExPQURTUHw1IElOVERMT0FEU1RBR0lOR3w1IElOVERMT0FEVU9NfDUgJyArXG4gICAgICAgICAnSU5URExPQURVT01EQVRFU3w1IElOVERMT0FEVU9NSElTVHw1IElOVERMT0FEVkVSU0lPTnw1IElOVERPUEVOfDUgSU5URFJFQURGSVJTVHw1IElOVERSRUFETkVYVHw1ICcgK1xuICAgICAgICAgJ0lOVERSRUNDT1VOVHw1IElOVERSRUxFQVNFfDUgSU5URFJFUExBQ0V8NSBJTlREUk9MTEFWR3w1IElOVERST0xMUEVBS3w1IElOVERTQ0FMQVJPUHw1IElOVERTQ0FMRXw1ICcgK1xuICAgICAgICAgJ0lOVERTRVRBVFRSSUJVVEV8NSBJTlREU0VURFNUUEFSVElDSVBBTlR8NSBJTlREU0VUU1RSSU5HfDUgSU5URFNFVFZBTFVFfDUgSU5URFNFVFZBTFVFU1RBVFVTfDUgJyArXG4gICAgICAgICAnSU5URFNISUZUU1RBUlRUSU1FfDUgSU5URFNNT09USHw1IElOVERTT1JUfDUgSU5URFNQSUtFVEVTVHw1IElOVERTVUJTRVR8NSBJTlREVE9VfDUgJyArXG4gICAgICAgICAnSU5URFRPVVJFTEVBU0V8NSBJTlREVE9VVkFMVUV8NSBJTlREVVBEQVRFU1RBVFN8NSBJTlREVkFMVUV8NSBTVERFViBJTlREREVMRVRFRVh8NSAnICtcbiAgICAgICAgICdJTlRETE9BREVYQUNUVUFMfDUgSU5URExPQURFWENVVHw1IElOVERMT0FERVhEQVRFU3w1IElOVERMT0FERVh8NSBJTlRETE9BREVYUkVMQVRFRENIQU5ORUx8NSAnICtcbiAgICAgICAgICdJTlREU0FWRUVYfDUgTVZMT0FEfDUgTVZMT0FEQUNDVHw1IE1WTE9BREFDQ1REQVRFU3w1IE1WTE9BREFDQ1RISVNUfDUgTVZMT0FEREFURVN8NSBNVkxPQURISVNUfDUgJyArXG4gICAgICAgICAnTVZMT0FETElTVHw1IE1WTE9BRExJU1REQVRFU3w1IE1WTE9BRExJU1RISVNUfDUgSUYgRk9SIE5FWFQgRE9ORSBTRUxFQ1QgRU5EIENBTEwgQUJPUlQgQ0xFQVIgQ0hBTk5FTCBGQUNUT1IgTElTVCBOVU1CRVIgJyArXG4gICAgICAgICAnT1ZFUlJJREUgU0VUIFdFRUsgRElTVFJJQlVUSU9OTk9ERSBFTFNFIFdIRU4gVEhFTiBPVEhFUldJU0UgSUVOVU0gQ1NWIElOQ0xVREUgTEVBVkUgUklERVIgU0FWRSBERUxFVEUgJyArXG4gICAgICAgICAnTk9WQUxVRSBTRUNUSU9OIFdBUk4gU0FWRV9VUERBVEUgREVURVJNSU5BTlQgTEFCRUwgUkVQT1JUIFJFVkVOVUUgRUFDSCAnICtcbiAgICAgICAgICdJTiBGUk9NIFRPVEFMIENIQVJHRSBCTE9DSyBBTkQgT1IgQ1NWX0ZJTEUgUkFURV9DT0RFIEFVWElMSUFSWV9ERU1BTkQgJyArXG4gICAgICAgICAnVUlEQUNDT1VOVCBSUyBCSUxMX1BFUklPRF9TRUxFQ1QgSE9VUlNfUEVSX01PTlRIIElOVERfRVJST1JfU1RPUCBTRUFTT05fU0NIRURVTEVfTkFNRSAnICtcbiAgICAgICAgICdBQ0NPVU5URkFDVE9SIEFSUkFZVVBQRVJCT1VORCBDQUxMU1RPUkVEUFJPQyBHRVRBRE9DT05ORUNUSU9OIEdFVENPTk5FQ1QgR0VUREFUQVNPVVJDRSAnICtcbiAgICAgICAgICdHRVRRVUFMSUZJRVIgR0VUVVNFUklEIEhBU1ZBTFVFIExJU1RDT1VOVCBMSVNUT1AgTElTVFVQREFURSBMSVNUVkFMVUUgUFJPUkFURUZBQ1RPUiBSU1BST1JBVEUgJyArXG4gICAgICAgICAnU0VUQklOUEFUSCBTRVREQk1PTklUT1IgV1FfT1BFTiBCSUxMSU5HSE9VUlMgREFURSBEQVRFRlJPTUZMT0FUIERBVEVUSU1FRlJPTVNUUklORyAnICtcbiAgICAgICAgICdEQVRFVElNRVRPU1RSSU5HIERBVEVUT0ZMT0FUIERBWSBEQVlESUZGIERBWU5BTUUgREJEQVRFVElNRSBIT1VSIE1JTlVURSBNT05USCBNT05USERJRkYgJyArXG4gICAgICAgICAnTU9OVEhIT1VSUyBNT05USE5BTUUgUk9VTkREQVRFIFNBTUVXRUVLREFZTEFTVFlFQVIgU0VDT05EIFdFRUtEQVkgV0VFS0RJRkYgWUVBUiBZRUFSREFZICcgK1xuICAgICAgICAgJ1lFQVJTVFIgQ09NUFNVTSBISVNUQ09VTlQgSElTVE1BWCBISVNUTUlOIEhJU1RNSU5OWiBISVNUVkFMVUUgTUFYTlJBTkdFIE1BWFJBTkdFIE1JTlJBTkdFICcgK1xuICAgICAgICAgJ0NPTVBJS1ZBIENPTVBLVkEgQ09NUEtWQVJGUk9NS1FLVyBDT01QTEYgSURBVFRSIEZMQUcgTEYyS1cgTEYyS1dIIE1BWEtXIFBPV0VSRkFDVE9SICcgK1xuICAgICAgICAgJ1JFQURJTkcyVVNBR0UgQVZHU0VBU09OIE1BWFNFQVNPTiBNT05USExZTUVSR0UgU0VBU09OVkFMVUUgU1VNU0VBU09OIEFDQ1RSRUFEREFURVMgJyArXG4gICAgICAgICAnQUNDVFRBQkxFTE9BRCBDT05GSUdBREQgQ09ORklHR0VUIENSRUFURU9CSkVDVCBDUkVBVEVSRVBPUlQgRU1BSUxDTElFTlQgRVhQQkxLTURNVVNBR0UgJyArXG4gICAgICAgICAnRVhQTURNVVNBR0UgRVhQT1JUX1VTQUdFIEZBQ1RPUklORUZGRUNUIEdFVFVTRVJTUEVDSUZJRURTVE9QIElORUZGRUNUIElTSE9MSURBWSBSVU5SQVRFICcgK1xuICAgICAgICAgJ1NBVkVfUFJPRklMRSBTRVRSRVBPUlRUSVRMRSBVU0VSRVhJVCBXQVRGT1JSVU5SQVRFIFRPIFRBQkxFIEFDT1MgQVNJTiBBVEFOIEFUQU4yIEJJVEFORCBDRUlMICcgK1xuICAgICAgICAgJ0NPUyBDT1NFQ0FOVCBDT1NIIENPVEFOR0VOVCBESVZRVU9UIERJVlJFTSBFWFAgRkFCUyBGTE9PUiBGTU9EIEZSRVBNIEZSRVhQTiBMT0cgTE9HMTAgTUFYIE1BWE4gJyArXG4gICAgICAgICAnTUlOIE1JTk5aIE1PREYgUE9XIFJPVU5EIFJPVU5EMlZBTFVFIFJPVU5ESU5UIFNFQ0FOVCBTSU4gU0lOSCBTUVJPT1QgVEFOIFRBTkggRkxPQVQyU1RSSU5HICcgK1xuICAgICAgICAgJ0ZMT0FUMlNUUklOR05DIElOU1RSIExFRlQgTEVOIExUUklNIE1JRCBSSUdIVCBSVFJJTSBTVFJJTkcgU1RSSU5HTkMgVE9MT1dFUiBUT1VQUEVSIFRSSU0gJyArXG4gICAgICAgICAnTlVNREFZUyBSRUFEX0RBVEUgU1RBR0lORycsXG4gICAgICAgYnVpbHRfaW46ICdJREVOVElGSUVSIE9QVElPTlMgWE1MX0VMRU1FTlQgWE1MX09QIFhNTF9FTEVNRU5UX09GIERPTURPQ0NSRUFURSBET01ET0NMT0FERklMRSBET01ET0NMT0FEWE1MICcgK1xuICAgICAgICAgJ0RPTURPQ1NBVkVGSUxFIERPTURPQ0dFVFJPT1QgRE9NRE9DQUREUEkgRE9NTk9ERUdFVE5BTUUgRE9NTk9ERUdFVFRZUEUgRE9NTk9ERUdFVFZBTFVFIERPTU5PREVHRVRDSElMRENUICcgK1xuICAgICAgICAgJ0RPTU5PREVHRVRGSVJTVENISUxEIERPTU5PREVHRVRTSUJMSU5HIERPTU5PREVDUkVBVEVDSElMREVMRU1FTlQgRE9NTk9ERVNFVEFUVFJJQlVURSAnICtcbiAgICAgICAgICdET01OT0RFR0VUQ0hJTERFTEVNRU5UQ1QgRE9NTk9ERUdFVEZJUlNUQ0hJTERFTEVNRU5UIERPTU5PREVHRVRTSUJMSU5HRUxFTUVOVCBET01OT0RFR0VUQVRUUklCVVRFQ1QgJyArXG4gICAgICAgICAnRE9NTk9ERUdFVEFUVFJJQlVURUkgRE9NTk9ERUdFVEFUVFJJQlVURUJZTkFNRSBET01OT0RFR0VUQllOQU1FJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXHMrW2EtekEtWlxcXFwgXFxcXC5dKicsIHJlbGV2YW5jZTogMH0sIC8vIGxvb2tzIGxpa2UgIy1jb21tZW50XG4gICAgICAgICAge2JlZ2luOiAnI1thLXpBLVpcXFxcIFxcXFwuXSsnfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTV9TVUZGSVggPSAnKFt1aV0oOHwxNnwzMnw2NHwxMjh8c2l6ZSl8ZigzMnw2NCkpXFw/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnYWJzdHJhY3QgYXMgYXN5bmMgYXdhaXQgYmVjb21lIGJveCBicmVhayBjb25zdCBjb250aW51ZSBjcmF0ZSBkbyBkeW4gJyArXG4gICAgJ2Vsc2UgZW51bSBleHRlcm4gZmFsc2UgZmluYWwgZm4gZm9yIGlmIGltcGwgaW4gbGV0IGxvb3AgbWFjcm8gbWF0Y2ggbW9kICcgK1xuICAgICdtb3ZlIG11dCBvdmVycmlkZSBwcml2IHB1YiByZWYgcmV0dXJuIHNlbGYgU2VsZiBzdGF0aWMgc3RydWN0IHN1cGVyICcgK1xuICAgICd0cmFpdCB0cnVlIHRyeSB0eXBlIHR5cGVvZiB1bnNhZmUgdW5zaXplZCB1c2UgdmlydHVhbCB3aGVyZSB3aGlsZSB5aWVsZCc7XG4gIHZhciBCVUlMVElOUyA9XG4gICAgLy8gZnVuY3Rpb25zXG4gICAgJ2Ryb3AgJyArXG4gICAgLy8gdHlwZXNcbiAgICAnaTggaTE2IGkzMiBpNjQgaTEyOCBpc2l6ZSAnICtcbiAgICAndTggdTE2IHUzMiB1NjQgdTEyOCB1c2l6ZSAnICtcbiAgICAnZjMyIGY2NCAnICtcbiAgICAnc3RyIGNoYXIgYm9vbCAnICtcbiAgICAnQm94IE9wdGlvbiBSZXN1bHQgU3RyaW5nIFZlYyAnICtcbiAgICAvLyB0cmFpdHNcbiAgICAnQ29weSBTZW5kIFNpemVkIFN5bmMgRHJvcCBGbiBGbk11dCBGbk9uY2UgVG9Pd25lZCBDbG9uZSBEZWJ1ZyAnICtcbiAgICAnUGFydGlhbEVxIFBhcnRpYWxPcmQgRXEgT3JkIEFzUmVmIEFzTXV0IEludG8gRnJvbSBEZWZhdWx0IEl0ZXJhdG9yICcgK1xuICAgICdFeHRlbmQgSW50b0l0ZXJhdG9yIERvdWJsZUVuZGVkSXRlcmF0b3IgRXhhY3RTaXplSXRlcmF0b3IgJyArXG4gICAgJ1NsaWNlQ29uY2F0RXh0IFRvU3RyaW5nICcgK1xuICAgIC8vIG1hY3Jvc1xuICAgICdhc3NlcnQhIGFzc2VydF9lcSEgYml0ZmxhZ3MhIGJ5dGVzISBjZmchIGNvbCEgY29uY2F0ISBjb25jYXRfaWRlbnRzISAnICtcbiAgICAnZGVidWdfYXNzZXJ0ISBkZWJ1Z19hc3NlcnRfZXEhIGVudiEgcGFuaWMhIGZpbGUhIGZvcm1hdCEgZm9ybWF0X2FyZ3MhICcgK1xuICAgICdpbmNsdWRlX2JpbiEgaW5jbHVkZV9zdHIhIGxpbmUhIGxvY2FsX2RhdGFfa2V5ISBtb2R1bGVfcGF0aCEgJyArXG4gICAgJ29wdGlvbl9lbnYhIHByaW50ISBwcmludGxuISBzZWxlY3QhIHN0cmluZ2lmeSEgdHJ5ISB1bmltcGxlbWVudGVkISAnICtcbiAgICAndW5yZWFjaGFibGUhIHZlYyEgd3JpdGUhIHdyaXRlbG4hIG1hY3JvX3J1bGVzISBhc3NlcnRfbmUhIGRlYnVnX2Fzc2VydF9uZSEnO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncnMnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgS0VZV09SRFMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBTb21lIE5vbmUgT2sgRXJyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICBCVUlMVElOU1xuICAgIH0sXG4gICAgbGV4ZW1lczogaGxqcy5JREVOVF9SRSArICchPycsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXConLCAnXFxcXCovJywge2NvbnRhaW5zOiBbJ3NlbGYnXX0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtiZWdpbjogL2I/XCIvLCBpbGxlZ2FsOiBudWxsfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgIHsgYmVnaW46IC9yKCMqKVwiKC58XFxuKSo/XCJcXDEoPyEjKS8gfSxcbiAgICAgICAgICAgeyBiZWdpbjogL2I/J1xcXFw/KHhcXHd7Mn18dVxcd3s0fXxVXFx3ezh9fC4pJy8gfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLydbYS16QS1aX11bYS16QS1aMC05X10qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwYihbMDFfXSspJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIwbyhbMC03X10rKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiMHgoW0EtRmEtZjAtOV9dKyknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYihcXFxcZFtcXFxcZF9dKihcXFxcLlswLTlfXSspPyhbZUVdWystXT9bMC05X10rKT8pJyArXG4gICAgICAgICAgICAgICAgICAgTlVNX1NVRkZJWFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmbicsIGVuZDogJyhcXFxcKHw8KScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjXFxcXCE/XFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHlwZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFMnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0cmFpdCBlbnVtIHN0cnVjdCB1bmlvbicsIGVuZDogJ3snLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwge2VuZHNQYXJlbnQ6IHRydWV9KVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAnW1xcXFx3XFxcXGRdJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3Jkczoge2J1aWx0X2luOiBCVUlMVElOU31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnLT4nXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICAgIC8vIERhdGEgc3RlcCBhbmQgUFJPQyBTUUwgc3RhdGVtZW50c1xuICAgIHZhciBTQVNfS0VZV09SRFMgPSAnJytcbiAgICAgICAgJ2RvIGlmIHRoZW4gZWxzZSBlbmQgdW50aWwgd2hpbGUgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhYm9ydCBhcnJheSBhdHRyaWIgYnkgY2FsbCBjYXJkcyBjYXJkczQgY2F0bmFtZSBjb250aW51ZSAnK1xuICAgICAgICAnZGF0YWxpbmVzIGRhdGFsaW5lczQgZGVsZXRlIGRlbGltIGRlbGltaXRlciBkaXNwbGF5IGRtIGRyb3AgJytcbiAgICAgICAgJ2VuZHNhcyBlcnJvciBmaWxlIGZpbGVuYW1lIGZvb3Rub3RlIGZvcm1hdCBnb3RvIGluIGluZmlsZSAnK1xuICAgICAgICAnaW5mb3JtYXQgaW5wdXQga2VlcCBsYWJlbCBsZWF2ZSBsZW5ndGggbGlibmFtZSBsaW5rIGxpc3QgJytcbiAgICAgICAgJ2xvc3RjYXJkIG1lcmdlIG1pc3NpbmcgbW9kaWZ5IG9wdGlvbnMgb3V0cHV0IG91dCBwYWdlIHB1dCAnK1xuICAgICAgICAncmVkaXJlY3QgcmVtb3ZlIHJlbmFtZSByZXBsYWNlIHJldGFpbiByZXR1cm4gc2VsZWN0IHNldCBza2lwICcrXG4gICAgICAgICdzdGFydHNhcyBzdG9wIHRpdGxlIHVwZGF0ZSB3YWl0c2FzIHdoZXJlIHdpbmRvdyB4IHN5c3Rhc2sgJytcbiAgICAgICAgJycrXG4gICAgICAgICdhZGQgYW5kIGFsdGVyIGFzIGNhc2NhZGUgY2hlY2sgY3JlYXRlIGRlbGV0ZSBkZXNjcmliZSAnK1xuICAgICAgICAnZGlzdGluY3QgZHJvcCBmb3JlaWduIGZyb20gZ3JvdXAgaGF2aW5nIGluZGV4IGluc2VydCBpbnRvIGluICcrXG4gICAgICAgICdrZXkgbGlrZSBtZXNzYWdlIG1vZGlmeSBtc2d0eXBlIG5vdCBudWxsIG9uIG9yIG9yZGVyIHByaW1hcnkgJytcbiAgICAgICAgJ3JlZmVyZW5jZXMgcmVzZXQgcmVzdHJpY3Qgc2VsZWN0IHNldCB0YWJsZSB1bmlxdWUgdXBkYXRlICcrXG4gICAgICAgICd2YWxpZGF0ZSB2aWV3IHdoZXJlJztcblxuICAgIC8vIEJ1aWx0LWluIFNBUyBmdW5jdGlvbnNcbiAgICB2YXIgU0FTX0ZVTiA9ICcnK1xuICAgICAgICAnYWJzfGFkZHJ8YWlyeXxhcmNvc3xhcnNpbnxhdGFufGF0dHJjfGF0dHJufGJhbmR8JytcbiAgICAgICAgJ2JldGFpbnZ8YmxzaGlmdHxibm90fGJvcnxicnNoaWZ0fGJ4b3J8Ynl0ZXxjZGZ8Y2VpbHwnK1xuICAgICAgICAnY2V4aXN0fGNpbnZ8Y2xvc2V8Y25vbmN0fGNvbGxhdGV8Y29tcGJsfGNvbXBvdW5kfCcrXG4gICAgICAgICdjb21wcmVzc3xjb3N8Y29zaHxjc3N8Y3Vyb2JzfGN2fGRhY2NkYnxkYWNjZGJzbHwnK1xuICAgICAgICAnZGFjY3NsfGRhY2NzeWR8ZGFjY3RhYnxkYWlyeXxkYXRlfGRhdGVqdWx8ZGF0ZXBhcnR8JytcbiAgICAgICAgJ2RhdGV0aW1lfGRheXxkY2xvc2V8ZGVwZGJ8ZGVwZGJzbHxkZXBkYnNsfGRlcHNsfCcrXG4gICAgICAgICdkZXBzbHxkZXBzeWR8ZGVwc3lkfGRlcHRhYnxkZXB0YWJ8ZGVxdW90ZXxkaG1zfGRpZnwnK1xuICAgICAgICAnZGlnYW1tYXxkaW18ZGluZm98ZG51bXxkb3Blbnxkb3B0bmFtZXxkb3B0bnVtfGRyZWFkfCcrXG4gICAgICAgICdkcm9wbm90ZXxkc25hbWV8ZXJmfGVyZmN8ZXhpc3R8ZXhwfGZhcHBlbmR8ZmNsb3NlfCcrXG4gICAgICAgICdmY29sfGZkZWxldGV8ZmV0Y2h8ZmV0Y2hvYnN8ZmV4aXN0fGZnZXR8ZmlsZWV4aXN0fCcrXG4gICAgICAgICdmaWxlbmFtZXxmaWxlcmVmfGZpbmZvfGZpbnZ8ZmlwbmFtZXxmaXBuYW1lbHwnK1xuICAgICAgICAnZmlwc3RhdGV8Zmxvb3J8Zm5vbmN0fGZub3RlfGZvcGVufGZvcHRuYW1lfGZvcHRudW18JytcbiAgICAgICAgJ2Zwb2ludHxmcG9zfGZwdXR8ZnJlYWR8ZnJld2luZHxmcmxlbnxmc2VwfGZ1enp8JytcbiAgICAgICAgJ2Z3cml0ZXxnYW1pbnZ8Z2FtbWF8Z2V0b3B0aW9ufGdldHZhcmN8Z2V0dmFybnxoYm91bmR8JytcbiAgICAgICAgJ2htc3xob3N0aGVscHxob3VyfGliZXNzZWx8aW5kZXh8aW5kZXhjfGluZGV4d3xpbnB1dHwnK1xuICAgICAgICAnaW5wdXRjfGlucHV0bnxpbnR8aW50Y2t8aW50bnh8aW50cnJ8aXJyfGpiZXNzZWx8JytcbiAgICAgICAgJ2p1bGRhdGV8a3VydG9zaXN8bGFnfGxib3VuZHxsZWZ0fGxlbmd0aHxsZ2FtbWF8JytcbiAgICAgICAgJ2xpYm5hbWV8bGlicmVmfGxvZ3xsb2cxMHxsb2cyfGxvZ3BkZnxsb2dwbWZ8bG9nc2RmfCcrXG4gICAgICAgICdsb3djYXNlfG1heHxtZHl8bWVhbnxtaW58bWludXRlfG1vZHxtb250aHxtb3BlbnwnK1xuICAgICAgICAnbW9ydHxufG5ldHB2fG5taXNzfG5vcm1hbHxub3RlfG5wdnxvcGVufG9yZGluYWx8JytcbiAgICAgICAgJ3BhdGhuYW1lfHBkZnxwZWVrfHBlZWtjfHBtZnxwb2ludHxwb2lzc29ufHBva2V8JytcbiAgICAgICAgJ3Byb2JiZXRhfHByb2Jibm1sfHByb2JjaGl8cHJvYmZ8cHJvYmdhbXxwcm9iaHlwcnwnK1xuICAgICAgICAncHJvYml0fHByb2JuZWdifHByb2Jub3JtfHByb2J0fHB1dHxwdXRjfHB1dG58cXRyfCcrXG4gICAgICAgICdxdW90ZXxyYW5iaW58cmFuY2F1fHJhbmV4cHxyYW5nYW18cmFuZ2V8cmFua3xyYW5ub3J8JytcbiAgICAgICAgJ3JhbnBvaXxyYW50Ymx8cmFudHJpfHJhbnVuaXxyZXBlYXR8cmVzb2x2ZXxyZXZlcnNlfCcrXG4gICAgICAgICdyZXdpbmR8cmlnaHR8cm91bmR8c2F2aW5nfHNjYW58c2RmfHNlY29uZHxzaWdufCcrXG4gICAgICAgICdzaW58c2luaHxza2V3bmVzc3xzb3VuZGV4fHNwZWRpc3xzcXJ0fHN0ZHxzdGRlcnJ8JytcbiAgICAgICAgJ3N0Zmlwc3xzdG5hbWV8c3RuYW1lbHxzdWJzdHJ8c3VtfHN5bWdldHxzeXNnZXR8JytcbiAgICAgICAgJ3N5c21zZ3xzeXNwcm9kfHN5c3JjfHN5c3RlbXx0YW58dGFuaHx0aW1lfHRpbWVwYXJ0fCcrXG4gICAgICAgICd0aW52fHRub25jdHx0b2RheXx0cmFuc2xhdGV8dHJhbndyZHx0cmlnYW1tYXwnK1xuICAgICAgICAndHJpbXx0cmltbnx0cnVuY3x1bmlmb3JtfHVwY2FzZXx1c3N8dmFyfHZhcmZtdHwnK1xuICAgICAgICAndmFyaW5mbXR8dmFybGFiZWx8dmFybGVufHZhcm5hbWV8dmFybnVtfHZhcnJheXwnK1xuICAgICAgICAndmFycmF5eHx2YXJ0eXBlfHZlcmlmeXx2Zm9ybWF0fHZmb3JtYXRkfHZmb3JtYXRkeHwnK1xuICAgICAgICAndmZvcm1hdG58dmZvcm1hdG54fHZmb3JtYXR3fHZmb3JtYXR3eHx2Zm9ybWF0eHwnK1xuICAgICAgICAndmluYXJyYXl8dmluYXJyYXl4fHZpbmZvcm1hdHx2aW5mb3JtYXRkfHZpbmZvcm1hdGR4fCcrXG4gICAgICAgICd2aW5mb3JtYXRufHZpbmZvcm1hdG54fHZpbmZvcm1hdHd8dmluZm9ybWF0d3h8JytcbiAgICAgICAgJ3ZpbmZvcm1hdHh8dmxhYmVsfHZsYWJlbHh8dmxlbmd0aHx2bGVuZ3RoeHx2bmFtZXwnK1xuICAgICAgICAndm5hbWV4fHZ0eXBlfHZ0eXBleHx3ZWVrZGF5fHllYXJ8eXlxfHppcGZpcHN8emlwbmFtZXwnK1xuICAgICAgICAnemlwbmFtZWx8emlwc3RhdGUnO1xuXG4gICAgLy8gQnVpbHQtaW4gbWFjcm8gZnVuY3Rpb25zXG4gICAgdmFyIFNBU19NQUNST19GVU4gPSAnYnF1b3RlfG5yYnF1b3RlfGNtcHJlc3xxY21wcmVzfGNvbXBzdG9yfCcrXG4gICAgICAgICdkYXRhdHlwfGRpc3BsYXl8ZG98ZWxzZXxlbmR8ZXZhbHxnbG9iYWx8Z290b3wnK1xuICAgICAgICAnaWZ8aW5kZXh8aW5wdXR8a2V5ZGVmfGxhYmVsfGxlZnR8bGVuZ3RofGxldHwnK1xuICAgICAgICAnbG9jYWx8bG93Y2FzZXxtYWNyb3xtZW5kfG5yYnF1b3RlfG5ycXVvdGV8JytcbiAgICAgICAgJ25yc3RyfHB1dHxxY21wcmVzfHFsZWZ0fHFsb3djYXNlfHFzY2FufCcrXG4gICAgICAgICdxc3Vic3RyfHFzeXNmdW5jfHF0cmltfHF1b3RlfHF1cGNhc2V8c2NhbnxzdHJ8JytcbiAgICAgICAgJ3N1YnN0cnxzdXBlcnF8c3lzY2FsbHxzeXNldmFsZnxzeXNleGVjfHN5c2Z1bmN8JytcbiAgICAgICAgJ3N5c2dldHxzeXNscHV0fHN5c3Byb2R8c3lzcmN8c3lzcnB1dHx0aGVufHRvfCcrXG4gICAgICAgICd0cmltfHVucXVvdGV8dW50aWx8dXBjYXNlfHZlcmlmeXx3aGlsZXx3aW5kb3cnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWydzYXMnLCAnU0FTJ10sXG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsIC8vIFNBUyBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgICAgICdudWxsIG1pc3NpbmcgX2FsbF8gX2F1dG9tYXRpY18gX2NoYXJhY3Rlcl8gX2luZmlsZV8gJytcbiAgICAgICAgICAgICAgICAnX25fIF9uYW1lXyBfbnVsbF8gX251bWVyaWNfIF91c2VyXyBfd2Vib3V0XycsXG4gICAgICAgICAgICBtZXRhOlxuICAgICAgICAgICAgICAgIFNBU19LRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIERpc3RpbmN0IGhpZ2hsaWdodCBmb3IgcHJvYyA8cHJvYz4sIGRhdGEsIHJ1biwgcXVpdFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlxccyoocHJvYyBbXFx3XFxkX10rfGRhdGF8cnVufHF1aXQpW1xcc1xcO10vXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIE1hY3JvIHZhcmlhYmxlc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcJlthLXpBLVpfXFwmXVthLXpBLVowLTlfXSpcXC4/L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGVtcGhhc2lzIGZvciBkYXRhbGluZXN8Y2FyZHNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9eXFxzKmRhdGFsaW5lc3xjYXJkcy4qOy8sXG4gICAgICAgICAgICAgICAgZW5kOiAvXlxccyo7XFxzKiQvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyAgIC8vIEJ1aWx0LWluIG1hY3JvIHZhcmlhYmxlcyB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgICAgICAgICAgYmVnaW46ICclKCcgKyBTQVNfTUFDUk9fRlVOICsgJyknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFVzZXItZGVmaW5lZCBtYWNybyBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQgYWZ0ZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogLyVbYS16QS1aX11bYS16QS1aXzAtOV0qL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1teJV0oJyArIFNBU19GVU4gKyAnKVtcXChdJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkNPTU1FTlQoJ1xcXFwqJywgJzsnKSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBBTk5PVEFUSU9OID0geyBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJyB9O1xuXG4gIC8vIHVzZWQgaW4gc3RyaW5ncyBmb3IgZXNjYXBpbmcvaW50ZXJwb2xhdGlvbi9zdWJzdGl0dXRpb25cbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFxcXCRbQS1aYS16MC05X10rJ30sXG4gICAgICB7YmVnaW46ICdcXFxcJHsnLCBlbmQ6ICd9J31cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpdK1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1thLXpdK1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbU1VCU1RdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgXVxuXG4gIH07XG5cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnXFxcXHdbXFxcXHdcXFxcZF9dKig/IVxcJyknXG4gIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XVteXFxuXFx0IFwiJygpLC5ge31cXFtcXF06O10rfFteMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06Oz1dLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgQ0xBU1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBvYmplY3QgdHJhaXQgdHlwZScsXG4gICAgZW5kOiAvWzo9e1xcW1xcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIHdpdGgnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sXG4gICAgICAgIGVuZDogL1xcXS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1RZUEVdXG4gICAgICB9LFxuICAgICAgTkFNRVxuICAgIF1cbiAgfTtcblxuICB2YXIgTUVUSE9EID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmJyxcbiAgICBlbmQ6IC9bOj17XFxbKFxcbjtdLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbTkFNRV1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgIGtleXdvcmQ6ICd0eXBlIHlpZWxkIGxhenkgb3ZlcnJpZGUgZGVmIHdpdGggdmFsIHZhciBzZWFsZWQgYWJzdHJhY3QgcHJpdmF0ZSB0cmFpdCBvYmplY3QgaWYgZm9yU29tZSBmb3Igd2hpbGUgdGhyb3cgZmluYWxseSBwcm90ZWN0ZWQgZXh0ZW5kcyBpbXBvcnQgZmluYWwgcmV0dXJuIGVsc2UgYnJlYWsgbmV3IGNhdGNoIHN1cGVyIGNsYXNzIGNhc2UgcGFja2FnZSBkZWZhdWx0IHRyeSB0aGlzIG1hdGNoIGNvbnRpbnVlIHRocm93cyBpbXBsaWNpdCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HLFxuICAgICAgU1lNQk9MLFxuICAgICAgVFlQRSxcbiAgICAgIE1FVEhPRCxcbiAgICAgIENMQVNTLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQU5OT1RBVElPTlxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTQ0hFTUVfSURFTlRfUkUgPSAnW15cXFxcKFxcXFwpXFxcXFtcXFxcXVxcXFx7XFxcXH1cIixcXCdgOyN8XFxcXFxcXFxcXFxcc10rJztcbiAgdmFyIFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFID0gJyhcXFxcLXxcXFxcKyk/XFxcXGQrKFsuL11cXFxcZCspPyc7XG4gIHZhciBTQ0hFTUVfQ09NUExFWF9OVU1CRVJfUkUgPSBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdbK1xcXFwtXScgKyBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSArICdpJztcbiAgdmFyIEJVSUxUSU5TID0ge1xuICAgICdidWlsdGluLW5hbWUnOlxuICAgICAgJ2Nhc2UtbGFtYmRhIGNhbGwvY2MgY2xhc3MgZGVmaW5lLWNsYXNzIGV4aXQtaGFuZGxlciBmaWVsZCBpbXBvcnQgJyArXG4gICAgICAnaW5oZXJpdCBpbml0LWZpZWxkIGludGVyZmFjZSBsZXQqLXZhbHVlcyBsZXQtdmFsdWVzIGxldC9lYyBtaXhpbiAnICtcbiAgICAgICdvcHQtbGFtYmRhIG92ZXJyaWRlIHByb3RlY3QgcHJvdmlkZSBwdWJsaWMgcmVuYW1lIHJlcXVpcmUgJyArXG4gICAgICAncmVxdWlyZS1mb3Itc3ludGF4IHN5bnRheCBzeW50YXgtY2FzZSBzeW50YXgtZXJyb3IgdW5pdC9zaWcgdW5sZXNzICcgK1xuICAgICAgJ3doZW4gd2l0aC1zeW50YXggYW5kIGJlZ2luIGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbiAnICtcbiAgICAgICdjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgY2FzZSBjb25kIGRlZmluZSAnICtcbiAgICAgICdkZWZpbmUtc3ludGF4IGRlbGF5IGRvIGR5bmFtaWMtd2luZCBlbHNlIGZvci1lYWNoIGlmIGxhbWJkYSBsZXQgbGV0KiAnICtcbiAgICAgICdsZXQtc3ludGF4IGxldHJlYyBsZXRyZWMtc3ludGF4IG1hcCBvciBzeW50YXgtcnVsZXMgXFwnICogKyAsICxAIC0gLi4uIC8gJyArXG4gICAgICAnOyA8IDw9ID0gPT4gPiA+PSBgIGFicyBhY29zIGFuZ2xlIGFwcGVuZCBhcHBseSBhc2luIGFzc29jIGFzc3EgYXNzdiBhdGFuICcgK1xuICAgICAgJ2Jvb2xlYW4/IGNhYXIgY2FkciBjYWxsLXdpdGgtaW5wdXQtZmlsZSBjYWxsLXdpdGgtb3V0cHV0LWZpbGUgJyArXG4gICAgICAnY2FsbC13aXRoLXZhbHVlcyBjYXIgY2RkZGFyIGNkZGRkciBjZHIgY2VpbGluZyBjaGFyLT5pbnRlZ2VyICcgK1xuICAgICAgJ2NoYXItYWxwaGFiZXRpYz8gY2hhci1jaTw9PyBjaGFyLWNpPD8gY2hhci1jaT0/IGNoYXItY2k+PT8gY2hhci1jaT4/ICcgK1xuICAgICAgJ2NoYXItZG93bmNhc2UgY2hhci1sb3dlci1jYXNlPyBjaGFyLW51bWVyaWM/IGNoYXItcmVhZHk/IGNoYXItdXBjYXNlICcgK1xuICAgICAgJ2NoYXItdXBwZXItY2FzZT8gY2hhci13aGl0ZXNwYWNlPyBjaGFyPD0/IGNoYXI8PyBjaGFyPT8gY2hhcj49PyBjaGFyPj8gJyArXG4gICAgICAnY2hhcj8gY2xvc2UtaW5wdXQtcG9ydCBjbG9zZS1vdXRwdXQtcG9ydCBjb21wbGV4PyBjb25zIGNvcyAnICtcbiAgICAgICdjdXJyZW50LWlucHV0LXBvcnQgY3VycmVudC1vdXRwdXQtcG9ydCBkZW5vbWluYXRvciBkaXNwbGF5IGVvZi1vYmplY3Q/ICcgK1xuICAgICAgJ2VxPyBlcXVhbD8gZXF2PyBldmFsIGV2ZW4/IGV4YWN0LT5pbmV4YWN0IGV4YWN0PyBleHAgZXhwdCBmbG9vciAnICtcbiAgICAgICdmb3JjZSBnY2QgaW1hZy1wYXJ0IGluZXhhY3QtPmV4YWN0IGluZXhhY3Q/IGlucHV0LXBvcnQ/IGludGVnZXItPmNoYXIgJyArXG4gICAgICAnaW50ZWdlcj8gaW50ZXJhY3Rpb24tZW52aXJvbm1lbnQgbGNtIGxlbmd0aCBsaXN0IGxpc3QtPnN0cmluZyAnICtcbiAgICAgICdsaXN0LT52ZWN0b3IgbGlzdC1yZWYgbGlzdC10YWlsIGxpc3Q/IGxvYWQgbG9nIG1hZ25pdHVkZSBtYWtlLXBvbGFyICcgK1xuICAgICAgJ21ha2UtcmVjdGFuZ3VsYXIgbWFrZS1zdHJpbmcgbWFrZS12ZWN0b3IgbWF4IG1lbWJlciBtZW1xIG1lbXYgbWluICcgK1xuICAgICAgJ21vZHVsbyBuZWdhdGl2ZT8gbmV3bGluZSBub3QgbnVsbC1lbnZpcm9ubWVudCBudWxsPyBudW1iZXItPnN0cmluZyAnICtcbiAgICAgICdudW1iZXI/IG51bWVyYXRvciBvZGQ/IG9wZW4taW5wdXQtZmlsZSBvcGVuLW91dHB1dC1maWxlIG91dHB1dC1wb3J0PyAnICtcbiAgICAgICdwYWlyPyBwZWVrLWNoYXIgcG9ydD8gcG9zaXRpdmU/IHByb2NlZHVyZT8gcXVhc2lxdW90ZSBxdW90ZSBxdW90aWVudCAnICtcbiAgICAgICdyYXRpb25hbD8gcmF0aW9uYWxpemUgcmVhZCByZWFkLWNoYXIgcmVhbC1wYXJ0IHJlYWw/IHJlbWFpbmRlciByZXZlcnNlICcgK1xuICAgICAgJ3JvdW5kIHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgc2V0ISBzZXQtY2FyISBzZXQtY2RyISBzaW4gc3FydCBzdHJpbmcgJyArXG4gICAgICAnc3RyaW5nLT5saXN0IHN0cmluZy0+bnVtYmVyIHN0cmluZy0+c3ltYm9sIHN0cmluZy1hcHBlbmQgc3RyaW5nLWNpPD0/ICcgK1xuICAgICAgJ3N0cmluZy1jaTw/IHN0cmluZy1jaT0/IHN0cmluZy1jaT49PyBzdHJpbmctY2k+PyBzdHJpbmctY29weSAnICtcbiAgICAgICdzdHJpbmctZmlsbCEgc3RyaW5nLWxlbmd0aCBzdHJpbmctcmVmIHN0cmluZy1zZXQhIHN0cmluZzw9PyBzdHJpbmc8PyAnICtcbiAgICAgICdzdHJpbmc9PyBzdHJpbmc+PT8gc3RyaW5nPj8gc3RyaW5nPyBzdWJzdHJpbmcgc3ltYm9sLT5zdHJpbmcgc3ltYm9sPyAnICtcbiAgICAgICd0YW4gdHJhbnNjcmlwdC1vZmYgdHJhbnNjcmlwdC1vbiB0cnVuY2F0ZSB2YWx1ZXMgdmVjdG9yICcgK1xuICAgICAgJ3ZlY3Rvci0+bGlzdCB2ZWN0b3ItZmlsbCEgdmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmIHZlY3Rvci1zZXQhICcgK1xuICAgICAgJ3dpdGgtaW5wdXQtZnJvbS1maWxlIHdpdGgtb3V0cHV0LXRvLWZpbGUgd3JpdGUgd3JpdGUtY2hhciB6ZXJvPydcbiAgfTtcblxuICB2YXIgU0hFQkFORyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsXG4gICAgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogJygjdHwjZnwjXFxcXFxcXFwnICsgU0NIRU1FX0lERU5UX1JFICsgJ3wjXFxcXFxcXFwuKSdcbiAgfTtcblxuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFLCByZWxldmFuY2U6IDAgfSxcbiAgICAgIHsgYmVnaW46IFNDSEVNRV9DT01QTEVYX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwIH0sXG4gICAgICB7IGJlZ2luOiAnI2JbMC0xXSsoL1swLTFdKyk/JyB9LFxuICAgICAgeyBiZWdpbjogJyNvWzAtN10rKC9bMC03XSspPycgfSxcbiAgICAgIHsgYmVnaW46ICcjeFswLTlhLWZdKygvWzAtOWEtZl0rKT8nIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IGhsanMuUVVPVEVfU1RSSU5HX01PREU7XG5cbiAgdmFyIFJFR1VMQVJfRVhQUkVTU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgIGJlZ2luOiAnI1twcl14XCInLFxuICAgIGVuZDogJ1teXFxcXFxcXFxdXCInXG4gIH07XG5cbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJzsnLFxuICAgICAgJyQnLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVCgnI1xcXFx8JywgJ1xcXFx8IycpXG4gIF07XG5cbiAgdmFyIElERU5UID0ge1xuICAgIGJlZ2luOiBTQ0hFTUVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFFVT1RFRF9JREVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXFwnJyArIFNDSEVNRV9JREVOVF9SRVxuICB9O1xuXG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBRVU9URURfTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLycvIH0sXG4gICAgICB7IGJlZ2luOiAnYCcgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIExJVEVSQUwsIFNUUklORywgTlVNQkVSLCBJREVOVCwgUVVPVEVEX0lERU5UXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICBiZWdpbjogU0NIRU1FX0lERU5UX1JFLFxuICAgIGxleGVtZXM6IFNDSEVNRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogQlVJTFRJTlNcbiAgfTtcblxuICB2YXIgTEFNQkRBID0ge1xuICAgIGJlZ2luOiAvbGFtYmRhLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOQU1FLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbSURFTlRdLFxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtMQU1CREEsIE5BTUUsIEJPRFldXG4gIH07XG5cbiAgQk9EWS5jb250YWlucyA9IFtMSVRFUkFMLCBOVU1CRVIsIFNUUklORywgSURFTlQsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKTtcblxuICByZXR1cm4ge1xuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbU0hFQkFORywgTlVNQkVSLCBTVFJJTkcsIFFVT1RFRF9JREVOVCwgUVVPVEVEX0xJU1QsIExJU1RdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTU9OX0NPTlRBSU5TID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcXCd8XFxcIicsIGVuZDogJ1xcJ3xcXFwiJyxcbiAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICB9XG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NjaSddLFxuICAgIGxleGVtZXM6IC8lP1xcdysvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnYWJvcnQgYnJlYWsgY2FzZSBjbGVhciBjYXRjaCBjb250aW51ZSBkbyBlbHNlaWYgZWxzZSBlbmRmdW5jdGlvbiBlbmQgZm9yIGZ1bmN0aW9uICcrXG4gICAgICAgICdnbG9iYWwgaWYgcGF1c2UgcmV0dXJuIHJlc3VtZSBzZWxlY3QgdHJ5IHRoZW4gd2hpbGUnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJyVmICVGICV0ICVUICVwaSAlZXBzICVpbmYgJW5hbiAlZSAlaSAleiAlcycsXG4gICAgICBidWlsdF9pbjogLy8gU2NpbGFiIGhhcyBtb3JlIHRoYW4gMjAwMCBmdW5jdGlvbnMuIEp1c3QgbGlzdCB0aGUgbW9zdCBjb21tb25zXG4gICAgICAgJ2FicyBhbmQgYWNvcyBhc2luIGF0YW4gY2VpbCBjZCBjaGRpciBjbGVhcmdsb2JhbCBjb3NoIGNvcyBjdW1wcm9kIGRlZmYgZGlzcCBlcnJvciAnK1xuICAgICAgICdleGVjIGV4ZWNzdHIgZXhpc3RzIGV4cCBleWUgZ2V0dGV4dCBmbG9vciBmcHJpbnRmIGZyZWFkIGZzb2x2ZSBpbWFnIGlzZGVmIGlzZW1wdHkgJytcbiAgICAgICAnaXNpbmZpc25hbiBpc3ZlY3RvciBsYXN0ZXJyb3IgbGVuZ3RoIGxvYWQgbGluc3BhY2UgbGlzdCBsaXN0ZmlsZXMgbG9nMTAgbG9nMiBsb2cgJytcbiAgICAgICAnbWF4IG1pbiBtc3ByaW50ZiBtY2xvc2UgbW9wZW4gb25lcyBvciBwYXRoY29udmVydCBwb2x5IHByaW50ZiBwcm9kIHB3ZCByYW5kIHJlYWwgJytcbiAgICAgICAncm91bmQgc2luaCBzaW4gc2l6ZSBnc29ydCBzcHJpbnRmIHNxcnQgc3RyY2F0IHN0cmNtcHMgdHJpbmcgc3VtIHN5c3RlbSB0YW5oIHRhbiAnK1xuICAgICAgICd0eXBlIHR5cGVuYW1lIHdhcm5pbmcgemVyb3MgbWF0cml4J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJyhcInwjfC9cXFxcKnxcXFxccysvXFxcXHcrKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16QS1aX11bYS16QS1aXzAtOV0qKFxcJytbXFxcXC5cXCddKnxbXFxcXC5cXCddKyknLCBlbmQ6ICcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXVxcJypbXFxcXC5cXCddKicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IENPTU1PTl9DT05UQUlOU1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpXG4gICAgXS5jb25jYXQoQ09NTU9OX0NPTlRBSU5TKVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogJyhcXFxcJCcgKyBJREVOVF9SRSArICcpXFxcXGInXG4gIH07XG4gIHZhciBIRVhDT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJyNbMC05QS1GYS1mXSsnXG4gIH07XG4gIHZhciBERUZfSU5URVJOQUxTID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgYmVnaW46ICdbQS1aXFxcXF9cXFxcLlxcXFwtXSsnLCBlbmQ6ICc6JyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbXlxcXFxzXScsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIEhFWENPTE9SLFxuICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPS98XFwnXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJywgYmVnaW46ICdcXFxcI1tBLVphLXowLTlfLV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsIGJlZ2luOiAnXFxcXC5bQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItYXR0cicsIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGlsbGVnYWw6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJywgLy8gYmVnaW46IElERU5UX1JFLCBlbmQ6ICdbLHxcXFxcc10nXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcmVhfGFydGljbGV8YXNpZGV8YXVkaW98YnxiYXNlfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGl2fGRsfGR0fGVtfGVtYmVkfGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fChoWzEtNl0pfGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2JkfGtleWdlbnxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c2FtcHxzY3JpcHR8c2VjdGlvbnxzZWxlY3R8c21hbGx8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdXB8dGFibGV8dGJvZHl8dGR8dGV4dGFyZWF8dGZvb3R8dGh8dGhlYWR8dGltZXx0aXRsZXx0cnx0dHx1bHx2YXJ8dmlkZW8pXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOih2aXNpdGVkfHZhbGlkfHJvb3R8cmlnaHR8cmVxdWlyZWR8cmVhZC13cml0ZXxyZWFkLW9ubHl8b3V0LXJhbmdlfG9wdGlvbmFsfG9ubHktb2YtdHlwZXxvbmx5LWNoaWxkfG50aC1vZi10eXBlfG50aC1sYXN0LW9mLXR5cGV8bnRoLWxhc3QtY2hpbGR8bnRoLWNoaWxkfG5vdHxsaW5rfGxlZnR8bGFzdC1vZi10eXBlfGxhc3QtY2hpbGR8bGFuZ3xpbnZhbGlkfGluZGV0ZXJtaW5hdGV8aW4tcmFuZ2V8aG92ZXJ8Zm9jdXN8Zmlyc3Qtb2YtdHlwZXxmaXJzdC1saW5lfGZpcnN0LWxldHRlcnxmaXJzdC1jaGlsZHxmaXJzdHxlbmFibGVkfGVtcHR5fGRpc2FibGVkfGRlZmF1bHR8Y2hlY2tlZHxiZWZvcmV8YWZ0ZXJ8YWN0aXZlKSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnOjooYWZ0ZXJ8YmVmb3JlfGNob2ljZXN8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8cmVwZWF0LWluZGV4fHJlcGVhdC1pdGVtfHNlbGVjdGlvbnx2YWx1ZSknXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoei1pbmRleHx3b3JkLXdyYXB8d29yZC1zcGFjaW5nfHdvcmQtYnJlYWt8d2lkdGh8d2lkb3dzfHdoaXRlLXNwYWNlfHZpc2liaWxpdHl8dmVydGljYWwtYWxpZ258dW5pY29kZS1iaWRpfHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb258dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtfHRvcHx0ZXh0LXVuZGVybGluZS1wb3NpdGlvbnx0ZXh0LXRyYW5zZm9ybXx0ZXh0LXNoYWRvd3x0ZXh0LXJlbmRlcmluZ3x0ZXh0LW92ZXJmbG93fHRleHQtaW5kZW50fHRleHQtZGVjb3JhdGlvbi1zdHlsZXx0ZXh0LWRlY29yYXRpb24tbGluZXx0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9ufHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRhYi1zaXplfHRhYmxlLWxheW91dHxyaWdodHxyZXNpemV8cXVvdGVzfHBvc2l0aW9ufHBvaW50ZXItZXZlbnRzfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWFmdGVyfHBhZGRpbmctdG9wfHBhZGRpbmctcmlnaHR8cGFkZGluZy1sZWZ0fHBhZGRpbmctYm90dG9tfHBhZGRpbmd8b3ZlcmZsb3cteXxvdmVyZmxvdy14fG92ZXJmbG93LXdyYXB8b3ZlcmZsb3d8b3V0bGluZS13aWR0aHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtY29sb3J8b3V0bGluZXxvcnBoYW5zfG9yZGVyfG9wYWNpdHl8b2JqZWN0LXBvc2l0aW9ufG9iamVjdC1maXR8bm9ybWFsfG5vbmV8bmF2LXVwfG5hdi1yaWdodHxuYXYtbGVmdHxuYXYtaW5kZXh8bmF2LWRvd258bWluLXdpZHRofG1pbi1oZWlnaHR8bWF4LXdpZHRofG1heC1oZWlnaHR8bWFza3xtYXJrc3xtYXJnaW4tdG9wfG1hcmdpbi1yaWdodHxtYXJnaW4tbGVmdHxtYXJnaW4tYm90dG9tfG1hcmdpbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGV8bGluZS1oZWlnaHR8bGV0dGVyLXNwYWNpbmd8bGVmdHxqdXN0aWZ5LWNvbnRlbnR8aW5pdGlhbHxpbmhlcml0fGltZS1tb2RlfGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlc29sdXRpb258aW1hZ2UtcmVuZGVyaW5nfGljb258aHlwaGVuc3xoZWlnaHR8Zm9udC13ZWlnaHR8Zm9udC12YXJpYW50LWxpZ2F0dXJlc3xmb250LXZhcmlhbnR8Zm9udC1zdHlsZXxmb250LXN0cmV0Y2h8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1sYW5ndWFnZS1vdmVycmlkZXxmb250LWtlcm5pbmd8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtZmFtaWx5fGZvbnR8ZmxvYXR8ZmxleC13cmFwfGZsZXgtc2hyaW5rfGZsZXgtZ3Jvd3xmbGV4LWZsb3d8ZmxleC1kaXJlY3Rpb258ZmxleC1iYXNpc3xmbGV4fGZpbHRlcnxlbXB0eS1jZWxsc3xkaXNwbGF5fGRpcmVjdGlvbnxjdXJzb3J8Y291bnRlci1yZXNldHxjb3VudGVyLWluY3JlbWVudHxjb250ZW50fGNvbHVtbi13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZXxjb2x1bW4tZ2FwfGNvbHVtbi1maWxsfGNvbHVtbi1jb3VudHxjb2x1bW5zfGNvbG9yfGNsaXAtcGF0aHxjbGlwfGNsZWFyfGNhcHRpb24tc2lkZXxicmVhay1pbnNpZGV8YnJlYWstYmVmb3JlfGJyZWFrLWFmdGVyfGJveC1zaXppbmd8Ym94LXNoYWRvd3xib3gtZGVjb3JhdGlvbi1icmVha3xib3R0b218Ym9yZGVyLXdpZHRofGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcHxib3JkZXItc3R5bGV8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yYWRpdXN8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnR8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1jb2xsYXBzZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b218Ym9yZGVyfGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYmxlbmQtbW9kZXxiYWNrZ3JvdW5kfGJhY2tmYWNlLXZpc2liaWxpdHl8YXV0b3xhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLWZpbGwtbW9kZXxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9ufGFsaWduLXNlbGZ8YWxpZ24taXRlbXN8YWxpZ24tY29udGVudClcXFxcYicsXG4gICAgICAgIGlsbGVnYWw6ICdbXlxcXFxzXSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIod2hpdGVzcGFjZXx3YWl0fHctcmVzaXplfHZpc2libGV8dmVydGljYWwtdGV4dHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x1cHBlcmNhc2V8dXBwZXItcm9tYW58dXBwZXItYWxwaGF8dW5kZXJsaW5lfHRyYW5zcGFyZW50fHRvcHx0aGlufHRoaWNrfHRleHR8dGV4dC10b3B8dGV4dC1ib3R0b218dGItcmx8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLWZvb3Rlci1ncm91cHxzdy1yZXNpemV8c3VwZXJ8c3RyaWN0fHN0YXRpY3xzcXVhcmV8c29saWR8c21hbGwtY2Fwc3xzZXBhcmF0ZXxzZS1yZXNpemV8c2Nyb2xsfHMtcmVzaXplfHJ0bHxyb3ctcmVzaXplfHJpZGdlfHJpZ2h0fHJlcGVhdHxyZXBlYXQteXxyZXBlYXQteHxyZWxhdGl2ZXxwcm9ncmVzc3xwb2ludGVyfG92ZXJsaW5lfG91dHNpZGV8b3V0c2V0fG9ibGlxdWV8bm93cmFwfG5vdC1hbGxvd2VkfG5vcm1hbHxub25lfG53LXJlc2l6ZXxuby1yZXBlYXR8bm8tZHJvcHxuZXdzcGFwZXJ8bmUtcmVzaXplfG4tcmVzaXplfG1vdmV8bWlkZGxlfG1lZGl1bXxsdHJ8bHItdGJ8bG93ZXJjYXNlfGxvd2VyLXJvbWFufGxvd2VyLWFscGhhfGxvb3NlfGxpc3QtaXRlbXxsaW5lfGxpbmUtdGhyb3VnaHxsaW5lLWVkZ2V8bGlnaHRlcnxsZWZ0fGtlZXAtYWxsfGp1c3RpZnl8aXRhbGljfGludGVyLXdvcmR8aW50ZXItaWRlb2dyYXBofGluc2lkZXxpbnNldHxpbmxpbmV8aW5saW5lLWJsb2NrfGluaGVyaXR8aW5hY3RpdmV8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtYWxwaGF8aG9yaXpvbnRhbHxoaWRkZW58aGVscHxoYW5kfGdyb292ZXxmaXhlZHxlbGxpcHNpc3xlLXJlc2l6ZXxkb3VibGV8ZG90dGVkfGRpc3RyaWJ1dGV8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLWFsbC1saW5lc3xkaXNjfGRpc2FibGVkfGRlZmF1bHR8ZGVjaW1hbHxkYXNoZWR8Y3Jvc3NoYWlyfGNvbGxhcHNlfGNvbC1yZXNpemV8Y2lyY2xlfGNoYXJ8Y2VudGVyfGNhcGl0YWxpemV8YnJlYWstd29yZHxicmVhay1hbGx8Ym90dG9tfGJvdGh8Ym9sZGVyfGJvbGR8YmxvY2t8YmlkaS1vdmVycmlkZXxiZWxvd3xiYXNlbGluZXxhdXRvfGFsd2F5c3xhbGwtc2Nyb2xsfGFic29sdXRlfHRhYmxlfHRhYmxlLWNlbGwpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzonLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICchaW1wb3J0YW50J1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJywgZW5kOiAnW3s7XScsXG4gICAgICAgIGtleXdvcmRzOiAnbWl4aW4gaW5jbHVkZSBleHRlbmQgZm9yIGlmIGVsc2UgZWFjaCB3aGlsZSBjaGFyc2V0IGltcG9ydCBkZWJ1ZyBtZWRpYSBwYWdlIGNvbnRlbnQgZm9udC1mYWNlIG5hbWVzcGFjZSB3YXJuJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzW0EtWmEtejAtOV8uLV0rJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjb25zb2xlJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzezAsM31bL1xcXFx3XFxcXGRcXFxcW1xcXFxdKClALV0qWz4lJCNdJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnJCcsIHN1Ykxhbmd1YWdlOiAnYmFzaCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIHNtYWxpX2luc3RyX2xvd19wcmlvID0gWydhZGQnLCAnYW5kJywgJ2NtcCcsICdjbXBnJywgJ2NtcGwnLCAnY29uc3QnLCAnZGl2JywgJ2RvdWJsZScsICdmbG9hdCcsICdnb3RvJywgJ2lmJywgJ2ludCcsICdsb25nJywgJ21vdmUnLCAnbXVsJywgJ25lZycsICduZXcnLCAnbm9wJywgJ25vdCcsICdvcicsICdyZW0nLCAncmV0dXJuJywgJ3NobCcsICdzaHInLCAnc3B1dCcsICdzdWInLCAndGhyb3cnLCAndXNocicsICd4b3InXTtcbiAgdmFyIHNtYWxpX2luc3RyX2hpZ2hfcHJpbyA9IFsnYWdldCcsICdhcHV0JywgJ2FycmF5JywgJ2NoZWNrJywgJ2V4ZWN1dGUnLCAnZmlsbCcsICdmaWxsZWQnLCAnZ290by8xNicsICdnb3RvLzMyJywgJ2lnZXQnLCAnaW5zdGFuY2UnLCAnaW52b2tlJywgJ2lwdXQnLCAnbW9uaXRvcicsICdwYWNrZWQnLCAnc2dldCcsICdzcGFyc2UnXTtcbiAgdmFyIHNtYWxpX2tleXdvcmRzID0gWyd0cmFuc2llbnQnLCAnY29uc3RydWN0b3InLCAnYWJzdHJhY3QnLCAnZmluYWwnLCAnc3ludGhldGljJywgJ3B1YmxpYycsICdwcml2YXRlJywgJ3Byb3RlY3RlZCcsICdzdGF0aWMnLCAnYnJpZGdlJywgJ3N5c3RlbSddO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc21hbGknXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcjJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ1xcXFxzKlxcXFwuZW5kXFxcXHNbYS16QS1aMC05XSonfSxcbiAgICAgICAgICB7YmVnaW46ICdeWyBdKlxcXFwuW2EtekEtWl0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcczpbYS16QS1aXzAtOV0qJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxccygnICsgc21hbGlfa2V5d29yZHMuam9pbignfCcpICsgJyknfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJylcXFxccydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHMoJytzbWFsaV9pbnN0cl9sb3dfcHJpby5qb2luKCd8JykrJykoKFxcXFwtfC8pW2EtekEtWjAtOV0rKStcXFxccycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfaGlnaF9wcmlvLmpvaW4oJ3wnKSsnKSgoXFxcXC18LylbYS16QS1aMC05XSspKlxcXFxzJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnTFteXFwoOzpcXG5dKjsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW3ZwXVswLTldKycsXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZBUl9JREVOVF9SRSA9ICdbYS16XVthLXpBLVowLTlfXSonO1xuICB2YXIgQ0hBUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXCQuezF9J1xuICB9O1xuICB2YXIgU1lNQk9MID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICcjJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3QnXSxcbiAgICBrZXl3b3JkczogJ3NlbGYgc3VwZXIgbmlsIHRydWUgZmFsc2UgdGhpc0NvbnRleHQnLCAvLyBvbmx5IDZcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICdcIicpLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFZBUl9JREVOVF9SRSArICc6JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1lNQk9MLFxuICAgICAgQ0hBUixcbiAgICAgIHtcbiAgICAgICAgLy8gVGhpcyBsb29rcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gbmVlZGVkIHRvIGF2b2lkIGNvbWJpbmF0b3JpYWxcbiAgICAgICAgLy8gZXhwbG9zaW9uIHVuZGVyIFY4LiBJdCBlZmZlY3RpdmVseSBtZWFucyBgfCB2YXIxIHZhcjIgLi4uIHxgIHdpdGhcbiAgICAgICAgLy8gd2hpdGVzcGFjZSBhZGphY2VudCB0byBgfGAgYmVpbmcgb3B0aW9uYWwuXG4gICAgICAgIGJlZ2luOiAnXFxcXHxbIF0qJyArIFZBUl9JREVOVF9SRSArICcoWyBdKycgKyBWQVJfSURFTlRfUkUgKyAnKSpbIF0qXFxcXHwnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvXFx8LyxcbiAgICAgICAgaWxsZWdhbDogL1xcUy8sXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnKFxcXFx8WyBdKik/JyArIFZBUl9JREVOVF9SRX1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwjXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIENIQVIsXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIFNZTUJPTFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21sJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8qIGFjY29yZGluZyB0byBEZWZpbml0aW9uIG9mIFN0YW5kYXJkIE1MIDk3ICAqL1xuICAgICAgICAnYWJzdHlwZSBhbmQgYW5kYWxzbyBhcyBjYXNlIGRhdGF0eXBlIGRvIGVsc2UgZW5kIGVxdHlwZSAnICtcbiAgICAgICAgJ2V4Y2VwdGlvbiBmbiBmdW4gZnVuY3RvciBoYW5kbGUgaWYgaW4gaW5jbHVkZSBpbmZpeCBpbmZpeHIgJyArXG4gICAgICAgICdsZXQgbG9jYWwgbm9uZml4IG9mIG9wIG9wZW4gb3JlbHNlIHJhaXNlIHJlYyBzaGFyaW5nIHNpZyAnICtcbiAgICAgICAgJ3NpZ25hdHVyZSBzdHJ1Y3Qgc3RydWN0dXJlIHRoZW4gdHlwZSB2YWwgd2l0aCB3aXRodHlwZSB3aGVyZSB3aGlsZScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLyogYnVpbHQtaW4gdHlwZXMgYWNjb3JkaW5nIHRvIGJhc2lzIGxpYnJhcnkgKi9cbiAgICAgICAgJ2FycmF5IGJvb2wgY2hhciBleG4gaW50IGxpc3Qgb3B0aW9uIG9yZGVyIHJlYWwgcmVmIHN0cmluZyBzdWJzdHJpbmcgdmVjdG9yIHVuaXQgd29yZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBOT05FIFNPTUUgTEVTUyBFUVVBTCBHUkVBVEVSIG5pbCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXC98Pj4vLFxuICAgIGxleGVtZXM6ICdbYS16X11cXFxcdyohPycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAvXFxbKFxcfFxcfCk/XFxdfFxcKFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcXFwoXFxcXConLFxuICAgICAgICAnXFxcXCpcXFxcKScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHsgLyogdHlwZSB2YXJpYWJsZSAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpfXSg/IVxcJylbXFxcXHdcXCddKidcbiAgICAgICAgLyogdGhlIGdyYW1tYXIgaXMgYW1iaWd1b3VzIG9uIGhvdyAnYSdiIHNob3VsZCBiZSBpbnRlcnByZXRlZCBidXQgbm90IHRoZSBjb21waWxlciAqL1xuICAgICAgfSxcbiAgICAgIHsgLyogcG9seW1vcnBoaWMgdmFyaWFudCAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdgW0EtWl1bXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICB7IC8qIG1vZHVsZSBvciBjb25zdHJ1Y3RvciAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8qIGRvbid0IGNvbG9yIGlkZW50aWZpZXJzLCBidXQgc2FmZWx5IGNhdGNoIGFsbCBpZGVudGlmaWVycyB3aXRoICcqL1xuICAgICAgICBiZWdpbjogJ1thLXpfXVxcXFx3KlxcJ1tcXFxcd1xcJ10qJ1xuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoMFt4WF1bYS1mQS1GMC05X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW29PXVswLTdfXStbTGxuXT98JyArXG4gICAgICAgICAgJzBbYkJdWzAxX10rW0xsbl0/fCcgK1xuICAgICAgICAgICdbMC05XVswLTlfXSooW0xsbl18KFxcXFwuWzAtOV9dKik/KFtlRV1bLStdP1swLTlfXSspPyk/KScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bLT1dPi8gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBJbiBTUUYsIGEgdmFyaWFibGUgc3RhcnQgd2l0aCBfXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXGJfK1thLXpBLVpfXVxcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGLCBhIGZ1bmN0aW9uIHNob3VsZCBmaXQgbXlUYWdfZm5jX215RnVuY3Rpb24gcGF0dGVyblxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9GdW5jdGlvbnNfTGlicmFyeV8oQXJtYV8zKSNBZGRpbmdfYV9GdW5jdGlvblxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvW2EtekEtWl1bYS16QS1aMC05XStfZm5jX1xcdyovXG4gIH07XG5cbiAgLy8gSW4gU1FGIHN0cmluZ3MsIHF1b3RlcyBtYXRjaGluZyB0aGUgc3RhcnQgYXJlIGVzY2FwZWQgYnkgYWRkaW5nIGEgY29uc2VjdXRpdmUuXG4gIC8vIEV4YW1wbGUgb2Ygc2luZ2xlIGVzY2FwZWQgcXVvdGVzOiBcIiBcIlwiIFwiIGFuZCAgJyAnJyAnLlxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIicsIHJlbGV2YW5jZTogMH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFwnXFwnJywgcmVsZXZhbmNlOiAwfV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gbGlzdCBvZiBrZXl3b3JkcyBmcm9tOlxuICAvLyBodHRwczovL2NvbW11bml0eS5iaXN0dWRpby5jb20vd2lraS9QcmVQcm9jZXNzb3JfQ29tbWFuZHNcbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyNcXHMqW2Etel0rXFxiLywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICdtZXRhLWtleXdvcmQnOlxuICAgICAgICAnZGVmaW5lIHVuZGVmIGlmZGVmIGlmbmRlZiBlbHNlIGVuZGlmIGluY2x1ZGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPFteXFxuPl0qPi8sIGVuZDogLyQvLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NxZiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYXNlIGNhdGNoIGRlZmF1bHQgZG8gZWxzZSBleGl0IGV4aXRXaXRoIGZvciBmb3JFYWNoIGZyb20gaWYgJyArXG4gICAgICAgICdwcml2YXRlIHN3aXRjaCB0aGVuIHRocm93IHRvIHRyeSB3YWl0VW50aWwgd2hpbGUgd2l0aCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2FicyBhY2NUaW1lIGFjb3MgYWN0aW9uIGFjdGlvbklEcyBhY3Rpb25LZXlzIGFjdGlvbktleXNJbWFnZXMgYWN0aW9uS2V5c05hbWVzICcgK1xuICAgICAgICAnYWN0aW9uS2V5c05hbWVzQXJyYXkgYWN0aW9uTmFtZSBhY3Rpb25QYXJhbXMgYWN0aXZhdGVBZGRvbnMgYWN0aXZhdGVkQWRkb25zIGFjdGl2YXRlS2V5ICcgK1xuICAgICAgICAnYWRkM0RFTkNvbm5lY3Rpb24gYWRkM0RFTkV2ZW50SGFuZGxlciBhZGQzREVOTGF5ZXIgYWRkQWN0aW9uIGFkZEJhY2twYWNrIGFkZEJhY2twYWNrQ2FyZ28gJyArXG4gICAgICAgICdhZGRCYWNrcGFja0NhcmdvR2xvYmFsIGFkZEJhY2twYWNrR2xvYmFsIGFkZENhbVNoYWtlIGFkZEN1cmF0b3JBZGRvbnMgYWRkQ3VyYXRvckNhbWVyYUFyZWEgJyArXG4gICAgICAgICdhZGRDdXJhdG9yRWRpdGFibGVPYmplY3RzIGFkZEN1cmF0b3JFZGl0aW5nQXJlYSBhZGRDdXJhdG9yUG9pbnRzIGFkZEVkaXRvck9iamVjdCBhZGRFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRGb3JjZSBhZGRHb2dnbGVzIGFkZEdyb3VwSWNvbiBhZGRIYW5kZ3VuSXRlbSBhZGRIZWFkZ2VhciBhZGRJdGVtIGFkZEl0ZW1DYXJnbyAnICtcbiAgICAgICAgJ2FkZEl0ZW1DYXJnb0dsb2JhbCBhZGRJdGVtUG9vbCBhZGRJdGVtVG9CYWNrcGFjayBhZGRJdGVtVG9Vbmlmb3JtIGFkZEl0ZW1Ub1Zlc3QgYWRkTGl2ZVN0YXRzICcgK1xuICAgICAgICAnYWRkTWFnYXppbmUgYWRkTWFnYXppbmVBbW1vQ2FyZ28gYWRkTWFnYXppbmVDYXJnbyBhZGRNYWdhemluZUNhcmdvR2xvYmFsIGFkZE1hZ2F6aW5lR2xvYmFsICcgK1xuICAgICAgICAnYWRkTWFnYXppbmVQb29sIGFkZE1hZ2F6aW5lcyBhZGRNYWdhemluZVR1cnJldCBhZGRNZW51IGFkZE1lbnVJdGVtIGFkZE1pc3Npb25FdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdhZGRNUEV2ZW50SGFuZGxlciBhZGRNdXNpY0V2ZW50SGFuZGxlciBhZGRPd25lZE1pbmUgYWRkUGxheWVyU2NvcmVzIGFkZFByaW1hcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAnYWRkUHVibGljVmFyaWFibGVFdmVudEhhbmRsZXIgYWRkUmF0aW5nIGFkZFJlc291cmNlcyBhZGRTY29yZSBhZGRTY29yZVNpZGUgYWRkU2Vjb25kYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFN3aXRjaGFibGVVbml0IGFkZFRlYW1NZW1iZXIgYWRkVG9SZW1haW5zQ29sbGVjdG9yIGFkZFRvcnF1ZSBhZGRVbmlmb3JtIGFkZFZlaGljbGUgYWRkVmVzdCAnICtcbiAgICAgICAgJ2FkZFdheXBvaW50IGFkZFdlYXBvbiBhZGRXZWFwb25DYXJnbyBhZGRXZWFwb25DYXJnb0dsb2JhbCBhZGRXZWFwb25HbG9iYWwgYWRkV2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFdlYXBvblBvb2wgYWRkV2VhcG9uVHVycmV0IGFkbWluIGFnZW50IGFnZW50cyBBR0xUb0FTTCBhaW1lZEF0VGFyZ2V0IGFpbVBvcyBhaXJEZW5zaXR5UlREICcgK1xuICAgICAgICAnYWlycGxhbmVUaHJvdHRsZSBhaXJwb3J0U2lkZSBBSVNGaW5pc2hIZWFsIGFsaXZlIGFsbDNERU5FbnRpdGllcyBhbGxBaXJwb3J0cyBhbGxDb250cm9scyAnICtcbiAgICAgICAgJ2FsbEN1cmF0b3JzIGFsbEN1dExheWVycyBhbGxEZWFkIGFsbERlYWRNZW4gYWxsRGlzcGxheXMgYWxsR3JvdXBzIGFsbE1hcE1hcmtlcnMgYWxsTWluZXMgJyArXG4gICAgICAgICdhbGxNaXNzaW9uT2JqZWN0cyBhbGxvdzNETW9kZSBhbGxvd0NyZXdJbkltbW9iaWxlIGFsbG93Q3VyYXRvckxvZ2ljSWdub3JlQXJlYXMgYWxsb3dEYW1hZ2UgJyArXG4gICAgICAgICdhbGxvd0RhbW1hZ2UgYWxsb3dGaWxlT3BlcmF0aW9ucyBhbGxvd0ZsZWVpbmcgYWxsb3dHZXRJbiBhbGxvd1NwcmludCBhbGxQbGF5ZXJzIGFsbFNpbXBsZU9iamVjdHMgJyArXG4gICAgICAgICdhbGxTaXRlcyBhbGxUdXJyZXRzIGFsbFVuaXRzIGFsbFVuaXRzVUFWIGFsbFZhcmlhYmxlcyBhbW1vIGFtbW9PblB5bG9uIGFuZCBhbmltYXRlIGFuaW1hdGVCYXkgJyArXG4gICAgICAgICdhbmltYXRlRG9vciBhbmltYXRlUHlsb24gYW5pbWF0ZVNvdXJjZSBhbmltYXRpb25OYW1lcyBhbmltYXRpb25QaGFzZSBhbmltYXRpb25Tb3VyY2VQaGFzZSAnICtcbiAgICAgICAgJ2FuaW1hdGlvblN0YXRlIGFwcGVuZCBhcHBseSBhcm1vcnlQb2ludHMgYXJyYXlJbnRlcnNlY3QgYXNpbiBBU0xUb0FHTCBBU0xUb0FUTCBhc3NlcnQgJyArXG4gICAgICAgICdhc3NpZ25Bc0NhcmdvIGFzc2lnbkFzQ2FyZ29JbmRleCBhc3NpZ25Bc0NvbW1hbmRlciBhc3NpZ25Bc0RyaXZlciBhc3NpZ25Bc0d1bm5lciBhc3NpZ25Bc1R1cnJldCAnICtcbiAgICAgICAgJ2Fzc2lnbkN1cmF0b3IgYXNzaWduZWRDYXJnbyBhc3NpZ25lZENvbW1hbmRlciBhc3NpZ25lZERyaXZlciBhc3NpZ25lZEd1bm5lciBhc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAnYXNzaWduZWRUYXJnZXQgYXNzaWduZWRUZWFtIGFzc2lnbmVkVmVoaWNsZSBhc3NpZ25lZFZlaGljbGVSb2xlIGFzc2lnbkl0ZW0gYXNzaWduVGVhbSAnICtcbiAgICAgICAgJ2Fzc2lnblRvQWlycG9ydCBhdGFuIGF0YW4yIGF0ZyBBVExUb0FTTCBhdHRhY2hlZE9iamVjdCBhdHRhY2hlZE9iamVjdHMgYXR0YWNoZWRUbyBhdHRhY2hPYmplY3QgJyArXG4gICAgICAgICdhdHRhY2hUbyBhdHRhY2tFbmFibGVkIGJhY2twYWNrIGJhY2twYWNrQ2FyZ28gYmFja3BhY2tDb250YWluZXIgYmFja3BhY2tJdGVtcyBiYWNrcGFja01hZ2F6aW5lcyAnICtcbiAgICAgICAgJ2JhY2twYWNrU3BhY2VGb3IgYmVoYXZpb3VyIGJlbmNobWFyayBiaW5vY3VsYXIgYm91bmRpbmdCb3ggYm91bmRpbmdCb3hSZWFsIGJvdW5kaW5nQ2VudGVyICcgK1xuICAgICAgICAnYnJlYWtPdXQgYnJlYWtUbyBicmllZmluZ05hbWUgYnVpbGRpbmdFeGl0IGJ1aWxkaW5nUG9zIGJ1dHRvbkFjdGlvbiBidXR0b25TZXRBY3Rpb24gY2FkZXRNb2RlICcgK1xuICAgICAgICAnY2FsbCBjYWxsRXh0ZW5zaW9uIGNhbUNvbW1hbmQgY2FtQ29tbWl0IGNhbUNvbW1pdFByZXBhcmVkIGNhbUNvbW1pdHRlZCBjYW1Db25zdHVjdGlvblNldFBhcmFtcyAnICtcbiAgICAgICAgJ2NhbUNyZWF0ZSBjYW1EZXN0cm95IGNhbWVyYUVmZmVjdCBjYW1lcmFFZmZlY3RFbmFibGVIVUQgY2FtZXJhSW50ZXJlc3QgY2FtZXJhT24gY2FtZXJhVmlldyAnICtcbiAgICAgICAgJ2NhbXBhaWduQ29uZmlnRmlsZSBjYW1QcmVsb2FkIGNhbVByZWxvYWRlZCBjYW1QcmVwYXJlQmFuayBjYW1QcmVwYXJlRGlyIGNhbVByZXBhcmVEaXZlICcgK1xuICAgICAgICAnY2FtUHJlcGFyZUZvY3VzIGNhbVByZXBhcmVGb3YgY2FtUHJlcGFyZUZvdlJhbmdlIGNhbVByZXBhcmVQb3MgY2FtUHJlcGFyZVJlbFBvcyBjYW1QcmVwYXJlVGFyZ2V0ICcgK1xuICAgICAgICAnY2FtU2V0QmFuayBjYW1TZXREaXIgY2FtU2V0RGl2ZSBjYW1TZXRGb2N1cyBjYW1TZXRGb3YgY2FtU2V0Rm92UmFuZ2UgY2FtU2V0UG9zIGNhbVNldFJlbFBvcyAnICtcbiAgICAgICAgJ2NhbVNldFRhcmdldCBjYW1UYXJnZXQgY2FtVXNlTlZHIGNhbkFkZCBjYW5BZGRJdGVtVG9CYWNrcGFjayBjYW5BZGRJdGVtVG9Vbmlmb3JtIGNhbkFkZEl0ZW1Ub1Zlc3QgJyArXG4gICAgICAgICdjYW5jZWxTaW1wbGVUYXNrRGVzdGluYXRpb24gY2FuRmlyZSBjYW5Nb3ZlIGNhblNsaW5nTG9hZCBjYW5TdGFuZCBjYW5TdXNwZW5kICcgK1xuICAgICAgICAnY2FuVHJpZ2dlckR5bmFtaWNTaW11bGF0aW9uIGNhblVubG9hZEluQ29tYmF0IGNhblZlaGljbGVDYXJnbyBjYXB0aXZlIGNhcHRpdmVOdW0gY2JDaGVja2VkICcgK1xuICAgICAgICAnY2JTZXRDaGVja2VkIGNlaWwgY2hhbm5lbEVuYWJsZWQgY2hlYXRzRW5hYmxlZCBjaGVja0FJRmVhdHVyZSBjaGVja1Zpc2liaWxpdHkgY2xhc3NOYW1lICcgK1xuICAgICAgICAnY2xlYXJBbGxJdGVtc0Zyb21CYWNrcGFjayBjbGVhckJhY2twYWNrQ2FyZ28gY2xlYXJCYWNrcGFja0NhcmdvR2xvYmFsIGNsZWFyR3JvdXBJY29ucyAnICtcbiAgICAgICAgJ2NsZWFySXRlbUNhcmdvIGNsZWFySXRlbUNhcmdvR2xvYmFsIGNsZWFySXRlbVBvb2wgY2xlYXJNYWdhemluZUNhcmdvIGNsZWFyTWFnYXppbmVDYXJnb0dsb2JhbCAnICtcbiAgICAgICAgJ2NsZWFyTWFnYXppbmVQb29sIGNsZWFyT3ZlcmxheSBjbGVhclJhZGlvIGNsZWFyV2VhcG9uQ2FyZ28gY2xlYXJXZWFwb25DYXJnb0dsb2JhbCBjbGVhcldlYXBvblBvb2wgJyArXG4gICAgICAgICdjbGllbnRPd25lciBjbG9zZURpYWxvZyBjbG9zZURpc3BsYXkgY2xvc2VPdmVybGF5IGNvbGxhcHNlT2JqZWN0VHJlZSBjb2xsZWN0M0RFTkhpc3RvcnkgJyArXG4gICAgICAgICdjb2xsZWN0aXZlUlREIGNvbWJhdE1vZGUgY29tbWFuZEFydGlsbGVyeUZpcmUgY29tbWFuZENoYXQgY29tbWFuZGVyIGNvbW1hbmRGaXJlIGNvbW1hbmRGb2xsb3cgJyArXG4gICAgICAgICdjb21tYW5kRlNNIGNvbW1hbmRHZXRPdXQgY29tbWFuZGluZ01lbnUgY29tbWFuZE1vdmUgY29tbWFuZFJhZGlvIGNvbW1hbmRTdG9wICcgK1xuICAgICAgICAnY29tbWFuZFN1cHByZXNzaXZlRmlyZSBjb21tYW5kVGFyZ2V0IGNvbW1hbmRXYXRjaCBjb21tZW50IGNvbW1pdE92ZXJsYXkgY29tcGlsZSBjb21waWxlRmluYWwgJyArXG4gICAgICAgICdjb21wbGV0ZWRGU00gY29tcG9zZVRleHQgY29uZmlnQ2xhc3NlcyBjb25maWdGaWxlIGNvbmZpZ0hpZXJhcmNoeSBjb25maWdOYW1lIGNvbmZpZ1Byb3BlcnRpZXMgJyArXG4gICAgICAgICdjb25maWdTb3VyY2VBZGRvbkxpc3QgY29uZmlnU291cmNlTW9kIGNvbmZpZ1NvdXJjZU1vZExpc3QgY29uZmlybVNlbnNvclRhcmdldCAnICtcbiAgICAgICAgJ2Nvbm5lY3RUZXJtaW5hbFRvVUFWIGNvbnRyb2xzR3JvdXBDdHJsIGNvcHlGcm9tQ2xpcGJvYXJkIGNvcHlUb0NsaXBib2FyZCBjb3B5V2F5cG9pbnRzIGNvcyBjb3VudCAnICtcbiAgICAgICAgJ2NvdW50RW5lbXkgY291bnRGcmllbmRseSBjb3VudFNpZGUgY291bnRUeXBlIGNvdW50VW5rbm93biBjcmVhdGUzREVOQ29tcG9zaXRpb24gY3JlYXRlM0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2NyZWF0ZUFnZW50IGNyZWF0ZUNlbnRlciBjcmVhdGVEaWFsb2cgY3JlYXRlRGlhcnlMaW5rIGNyZWF0ZURpYXJ5UmVjb3JkIGNyZWF0ZURpYXJ5U3ViamVjdCAnICtcbiAgICAgICAgJ2NyZWF0ZURpc3BsYXkgY3JlYXRlR2VhckRpYWxvZyBjcmVhdGVHcm91cCBjcmVhdGVHdWFyZGVkUG9pbnQgY3JlYXRlTG9jYXRpb24gY3JlYXRlTWFya2VyICcgK1xuICAgICAgICAnY3JlYXRlTWFya2VyTG9jYWwgY3JlYXRlTWVudSBjcmVhdGVNaW5lIGNyZWF0ZU1pc3Npb25EaXNwbGF5IGNyZWF0ZU1QQ2FtcGFpZ25EaXNwbGF5ICcgK1xuICAgICAgICAnY3JlYXRlU2ltcGxlT2JqZWN0IGNyZWF0ZVNpbXBsZVRhc2sgY3JlYXRlU2l0ZSBjcmVhdGVTb3VuZFNvdXJjZSBjcmVhdGVUYXNrIGNyZWF0ZVRlYW0gJyArXG4gICAgICAgICdjcmVhdGVUcmlnZ2VyIGNyZWF0ZVVuaXQgY3JlYXRlVmVoaWNsZSBjcmVhdGVWZWhpY2xlQ3JldyBjcmVhdGVWZWhpY2xlTG9jYWwgY3JldyBjdEFkZEhlYWRlciAnICtcbiAgICAgICAgJ2N0QWRkUm93IGN0Q2xlYXIgY3RDdXJTZWwgY3REYXRhIGN0RmluZEhlYWRlclJvd3MgY3RGaW5kUm93SGVhZGVyIGN0SGVhZGVyQ29udHJvbHMgY3RIZWFkZXJDb3VudCAnICtcbiAgICAgICAgJ2N0UmVtb3ZlSGVhZGVycyBjdFJlbW92ZVJvd3MgY3RybEFjdGl2YXRlIGN0cmxBZGRFdmVudEhhbmRsZXIgY3RybEFuZ2xlIGN0cmxBdXRvU2Nyb2xsRGVsYXkgJyArXG4gICAgICAgICdjdHJsQXV0b1Njcm9sbFJld2luZCBjdHJsQXV0b1Njcm9sbFNwZWVkIGN0cmxDaGVja2VkIGN0cmxDbGFzc05hbWUgY3RybENvbW1pdCBjdHJsQ29tbWl0dGVkICcgK1xuICAgICAgICAnY3RybENyZWF0ZSBjdHJsRGVsZXRlIGN0cmxFbmFibGUgY3RybEVuYWJsZWQgY3RybEZhZGUgY3RybEhUTUxMb2FkZWQgY3RybElEQyBjdHJsSUREICcgK1xuICAgICAgICAnY3RybE1hcEFuaW1BZGQgY3RybE1hcEFuaW1DbGVhciBjdHJsTWFwQW5pbUNvbW1pdCBjdHJsTWFwQW5pbURvbmUgY3RybE1hcEN1cnNvciBjdHJsTWFwTW91c2VPdmVyICcgK1xuICAgICAgICAnY3RybE1hcFNjYWxlIGN0cmxNYXBTY3JlZW5Ub1dvcmxkIGN0cmxNYXBXb3JsZFRvU2NyZWVuIGN0cmxNb2RlbCBjdHJsTW9kZWxEaXJBbmRVcCBjdHJsTW9kZWxTY2FsZSAnICtcbiAgICAgICAgJ2N0cmxQYXJlbnQgY3RybFBhcmVudENvbnRyb2xzR3JvdXAgY3RybFBvc2l0aW9uIGN0cmxSZW1vdmVBbGxFdmVudEhhbmRsZXJzIGN0cmxSZW1vdmVFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdjdHJsU2NhbGUgY3RybFNldEFjdGl2ZUNvbG9yIGN0cmxTZXRBbmdsZSBjdHJsU2V0QXV0b1Njcm9sbERlbGF5IGN0cmxTZXRBdXRvU2Nyb2xsUmV3aW5kICcgK1xuICAgICAgICAnY3RybFNldEF1dG9TY3JvbGxTcGVlZCBjdHJsU2V0QmFja2dyb3VuZENvbG9yIGN0cmxTZXRDaGVja2VkIGN0cmxTZXRFdmVudEhhbmRsZXIgY3RybFNldEZhZGUgJyArXG4gICAgICAgICdjdHJsU2V0Rm9jdXMgY3RybFNldEZvbnQgY3RybFNldEZvbnRIMSBjdHJsU2V0Rm9udEgxQiBjdHJsU2V0Rm9udEgyIGN0cmxTZXRGb250SDJCIGN0cmxTZXRGb250SDMgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udEgzQiBjdHJsU2V0Rm9udEg0IGN0cmxTZXRGb250SDRCIGN0cmxTZXRGb250SDUgY3RybFNldEZvbnRINUIgY3RybFNldEZvbnRINiAnICtcbiAgICAgICAgJ2N0cmxTZXRGb250SDZCIGN0cmxTZXRGb250SGVpZ2h0IGN0cmxTZXRGb250SGVpZ2h0SDEgY3RybFNldEZvbnRIZWlnaHRIMiBjdHJsU2V0Rm9udEhlaWdodEgzICcgK1xuICAgICAgICAnY3RybFNldEZvbnRIZWlnaHRINCBjdHJsU2V0Rm9udEhlaWdodEg1IGN0cmxTZXRGb250SGVpZ2h0SDYgY3RybFNldEZvbnRIZWlnaHRTZWNvbmRhcnkgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udFAgY3RybFNldEZvbnRQQiBjdHJsU2V0Rm9udFNlY29uZGFyeSBjdHJsU2V0Rm9yZWdyb3VuZENvbG9yIGN0cmxTZXRNb2RlbCAnICtcbiAgICAgICAgJ2N0cmxTZXRNb2RlbERpckFuZFVwIGN0cmxTZXRNb2RlbFNjYWxlIGN0cmxTZXRQaXhlbFByZWNpc2lvbiBjdHJsU2V0UG9zaXRpb24gY3RybFNldFNjYWxlICcgK1xuICAgICAgICAnY3RybFNldFN0cnVjdHVyZWRUZXh0IGN0cmxTZXRUZXh0IGN0cmxTZXRUZXh0Q29sb3IgY3RybFNldFRvb2x0aXAgY3RybFNldFRvb2x0aXBDb2xvckJveCAnICtcbiAgICAgICAgJ2N0cmxTZXRUb29sdGlwQ29sb3JTaGFkZSBjdHJsU2V0VG9vbHRpcENvbG9yVGV4dCBjdHJsU2hvdyBjdHJsU2hvd24gY3RybFRleHQgY3RybFRleHRIZWlnaHQgJyArXG4gICAgICAgICdjdHJsVGV4dFdpZHRoIGN0cmxUeXBlIGN0cmxWaXNpYmxlIGN0Um93Q29udHJvbHMgY3RSb3dDb3VudCBjdFNldEN1clNlbCBjdFNldERhdGEgJyArXG4gICAgICAgICdjdFNldEhlYWRlclRlbXBsYXRlIGN0U2V0Um93VGVtcGxhdGUgY3RTZXRWYWx1ZSBjdFZhbHVlIGN1cmF0b3JBZGRvbnMgY3VyYXRvckNhbWVyYSAnICtcbiAgICAgICAgJ2N1cmF0b3JDYW1lcmFBcmVhIGN1cmF0b3JDYW1lcmFBcmVhQ2VpbGluZyBjdXJhdG9yQ29lZiBjdXJhdG9yRWRpdGFibGVPYmplY3RzIGN1cmF0b3JFZGl0aW5nQXJlYSAnICtcbiAgICAgICAgJ2N1cmF0b3JFZGl0aW5nQXJlYVR5cGUgY3VyYXRvck1vdXNlT3ZlciBjdXJhdG9yUG9pbnRzIGN1cmF0b3JSZWdpc3RlcmVkT2JqZWN0cyBjdXJhdG9yU2VsZWN0ZWQgJyArXG4gICAgICAgICdjdXJhdG9yV2F5cG9pbnRDb3N0IGN1cnJlbnQzREVOT3BlcmF0aW9uIGN1cnJlbnRDaGFubmVsIGN1cnJlbnRDb21tYW5kIGN1cnJlbnRNYWdhemluZSAnICtcbiAgICAgICAgJ2N1cnJlbnRNYWdhemluZURldGFpbCBjdXJyZW50TWFnYXppbmVEZXRhaWxUdXJyZXQgY3VycmVudE1hZ2F6aW5lVHVycmV0IGN1cnJlbnRNdXp6bGUgJyArXG4gICAgICAgICdjdXJyZW50TmFtZXNwYWNlIGN1cnJlbnRUYXNrIGN1cnJlbnRUYXNrcyBjdXJyZW50VGhyb3dhYmxlIGN1cnJlbnRWaXNpb25Nb2RlIGN1cnJlbnRXYXlwb2ludCAnICtcbiAgICAgICAgJ2N1cnJlbnRXZWFwb24gY3VycmVudFdlYXBvbk1vZGUgY3VycmVudFdlYXBvblR1cnJldCBjdXJyZW50WmVyb2luZyBjdXJzb3JPYmplY3QgY3Vyc29yVGFyZ2V0ICcgK1xuICAgICAgICAnY3VzdG9tQ2hhdCBjdXN0b21SYWRpbyBjdXRGYWRlT3V0IGN1dE9iaiBjdXRSc2MgY3V0VGV4dCBkYW1hZ2UgZGF0ZSBkYXRlVG9OdW1iZXIgZGF5dGltZSAnICtcbiAgICAgICAgJ2RlQWN0aXZhdGVLZXkgZGVicmllZmluZ1RleHQgZGVidWdGU00gZGVidWdMb2cgZGVnIGRlbGV0ZTNERU5FbnRpdGllcyBkZWxldGVBdCBkZWxldGVDZW50ZXIgJyArXG4gICAgICAgICdkZWxldGVDb2xsZWN0aW9uIGRlbGV0ZUVkaXRvck9iamVjdCBkZWxldGVHcm91cCBkZWxldGVHcm91cFdoZW5FbXB0eSBkZWxldGVJZGVudGl0eSAnICtcbiAgICAgICAgJ2RlbGV0ZUxvY2F0aW9uIGRlbGV0ZU1hcmtlciBkZWxldGVNYXJrZXJMb2NhbCBkZWxldGVSYW5nZSBkZWxldGVSZXNvdXJjZXMgZGVsZXRlU2l0ZSBkZWxldGVTdGF0dXMgJyArXG4gICAgICAgICdkZWxldGVUZWFtIGRlbGV0ZVZlaGljbGUgZGVsZXRlVmVoaWNsZUNyZXcgZGVsZXRlV2F5cG9pbnQgZGV0YWNoIGRldGVjdGVkTWluZXMgJyArXG4gICAgICAgICdkaWFnX2FjdGl2ZU1pc3Npb25GU01zIGRpYWdfYWN0aXZlU2NyaXB0cyBkaWFnX2FjdGl2ZVNRRlNjcmlwdHMgZGlhZ19hY3RpdmVTUVNTY3JpcHRzICcgK1xuICAgICAgICAnZGlhZ19jYXB0dXJlRnJhbWUgZGlhZ19jYXB0dXJlRnJhbWVUb0ZpbGUgZGlhZ19jYXB0dXJlU2xvd0ZyYW1lIGRpYWdfY29kZVBlcmZvcm1hbmNlICcgK1xuICAgICAgICAnZGlhZ19kcmF3TW9kZSBkaWFnX2VuYWJsZSBkaWFnX2VuYWJsZWQgZGlhZ19mcHMgZGlhZ19mcHNNaW4gZGlhZ19mcmFtZU5vIGRpYWdfbGlnaHROZXdMb2FkICcgK1xuICAgICAgICAnZGlhZ19saXN0IGRpYWdfbG9nIGRpYWdfbG9nU2xvd0ZyYW1lIGRpYWdfbWVyZ2VDb25maWdGaWxlIGRpYWdfcmVjb3JkVHVycmV0TGltaXRzICcgK1xuICAgICAgICAnZGlhZ19zZXRMaWdodE5ldyBkaWFnX3RpY2tUaW1lIGRpYWdfdG9nZ2xlIGRpYWxvZyBkaWFyeVN1YmplY3RFeGlzdHMgZGlkSklQIGRpZEpJUE93bmVyICcgK1xuICAgICAgICAnZGlmZmljdWx0eSBkaWZmaWN1bHR5RW5hYmxlZCBkaWZmaWN1bHR5RW5hYmxlZFJURCBkaWZmaWN1bHR5T3B0aW9uIGRpcmVjdGlvbiBkaXJlY3RTYXkgZGlzYWJsZUFJICcgK1xuICAgICAgICAnZGlzYWJsZUNvbGxpc2lvbldpdGggZGlzYWJsZUNvbnZlcnNhdGlvbiBkaXNhYmxlRGVicmllZmluZ1N0YXRzIGRpc2FibGVNYXBJbmRpY2F0b3JzICcgK1xuICAgICAgICAnZGlzYWJsZU5WR0VxdWlwbWVudCBkaXNhYmxlUmVtb3RlU2Vuc29ycyBkaXNhYmxlU2VyaWFsaXphdGlvbiBkaXNhYmxlVElFcXVpcG1lbnQgJyArXG4gICAgICAgICdkaXNhYmxlVUFWQ29ubmVjdGFiaWxpdHkgZGlzYWJsZVVzZXJJbnB1dCBkaXNwbGF5QWRkRXZlbnRIYW5kbGVyIGRpc3BsYXlDdHJsIGRpc3BsYXlQYXJlbnQgJyArXG4gICAgICAgICdkaXNwbGF5UmVtb3ZlQWxsRXZlbnRIYW5kbGVycyBkaXNwbGF5UmVtb3ZlRXZlbnRIYW5kbGVyIGRpc3BsYXlTZXRFdmVudEhhbmRsZXIgZGlzc29sdmVUZWFtICcgK1xuICAgICAgICAnZGlzdGFuY2UgZGlzdGFuY2UyRCBkaXN0YW5jZVNxciBkaXN0cmlidXRpb25SZWdpb24gZG8zREVOQWN0aW9uIGRvQXJ0aWxsZXJ5RmlyZSBkb0ZpcmUgZG9Gb2xsb3cgJyArXG4gICAgICAgICdkb0ZTTSBkb0dldE91dCBkb01vdmUgZG9vclBoYXNlIGRvU3RvcCBkb1N1cHByZXNzaXZlRmlyZSBkb1RhcmdldCBkb1dhdGNoIGRyYXdBcnJvdyBkcmF3RWxsaXBzZSAnICtcbiAgICAgICAgJ2RyYXdJY29uIGRyYXdJY29uM0QgZHJhd0xpbmUgZHJhd0xpbmUzRCBkcmF3TGluayBkcmF3TG9jYXRpb24gZHJhd1BvbHlnb24gZHJhd1JlY3RhbmdsZSAnICtcbiAgICAgICAgJ2RyYXdUcmlhbmdsZSBkcml2ZXIgZHJvcCBkeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlIGR5bmFtaWNTaW11bGF0aW9uRGlzdGFuY2VDb2VmICcgK1xuICAgICAgICAnZHluYW1pY1NpbXVsYXRpb25FbmFibGVkIGR5bmFtaWNTaW11bGF0aW9uU3lzdGVtRW5hYmxlZCBlY2hvIGVkaXQzREVOTWlzc2lvbkF0dHJpYnV0ZXMgZWRpdE9iamVjdCAnICtcbiAgICAgICAgJ2VkaXRvclNldEV2ZW50SGFuZGxlciBlZmZlY3RpdmVDb21tYW5kZXIgZW1wdHlQb3NpdGlvbnMgZW5hYmxlQUkgZW5hYmxlQUlGZWF0dXJlICcgK1xuICAgICAgICAnZW5hYmxlQWltUHJlY2lzaW9uIGVuYWJsZUF0dGFjayBlbmFibGVBdWRpb0ZlYXR1cmUgZW5hYmxlQXV0b1N0YXJ0VXBSVEQgZW5hYmxlQXV0b1RyaW1SVEQgJyArXG4gICAgICAgICdlbmFibGVDYW1TaGFrZSBlbmFibGVDYXVzdGljcyBlbmFibGVDaGFubmVsIGVuYWJsZUNvbGxpc2lvbldpdGggZW5hYmxlQ29waWxvdCAnICtcbiAgICAgICAgJ2VuYWJsZURlYnJpZWZpbmdTdGF0cyBlbmFibGVEaWFnTGVnZW5kIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uIGVuYWJsZUR5bmFtaWNTaW11bGF0aW9uU3lzdGVtICcgK1xuICAgICAgICAnZW5hYmxlRW5kRGlhbG9nIGVuYWJsZUVuZ2luZUFydGlsbGVyeSBlbmFibGVFbnZpcm9ubWVudCBlbmFibGVGYXRpZ3VlIGVuYWJsZUd1bkxpZ2h0cyAnICtcbiAgICAgICAgJ2VuYWJsZUluZm9QYW5lbENvbXBvbmVudCBlbmFibGVJUkxhc2VycyBlbmFibGVNaW1pY3MgZW5hYmxlUGVyc29uVHVycmV0IGVuYWJsZVJhZGlvIGVuYWJsZVJlbG9hZCAnICtcbiAgICAgICAgJ2VuYWJsZVJvcGVBdHRhY2ggZW5hYmxlU2F0Tm9ybWFsT25EZXRhaWwgZW5hYmxlU2F2aW5nIGVuYWJsZVNlbnRlbmNlcyBlbmFibGVTaW11bGF0aW9uICcgK1xuICAgICAgICAnZW5hYmxlU2ltdWxhdGlvbkdsb2JhbCBlbmFibGVTdGFtaW5hIGVuYWJsZVRlYW1Td2l0Y2ggZW5hYmxlVHJhZmZpYyBlbmFibGVVQVZDb25uZWN0YWJpbGl0eSAnICtcbiAgICAgICAgJ2VuYWJsZVVBVldheXBvaW50cyBlbmFibGVWZWhpY2xlQ2FyZ28gZW5hYmxlVmVoaWNsZVNlbnNvciBlbmFibGVXZWFwb25EaXNhc3NlbWJseSAnICtcbiAgICAgICAgJ2VuZExvYWRpbmdTY3JlZW4gZW5kTWlzc2lvbiBlbmdpbmVPbiBlbmdpbmVzSXNPblJURCBlbmdpbmVzUnBtUlREIGVuZ2luZXNUb3JxdWVSVEQgZW50aXRpZXMgJyArXG4gICAgICAgICdlbnZpcm9ubWVudEVuYWJsZWQgZXN0aW1hdGVkRW5kU2VydmVyVGltZSBlc3RpbWF0ZWRUaW1lTGVmdCBldmFsT2JqZWN0QXJndW1lbnQgZXZlcnlCYWNrcGFjayAnICtcbiAgICAgICAgJ2V2ZXJ5Q29udGFpbmVyIGV4ZWMgZXhlY0VkaXRvclNjcmlwdCBleGVjRlNNIGV4ZWNWTSBleHAgZXhwZWN0ZWREZXN0aW5hdGlvbiBleHBvcnRKSVBNZXNzYWdlcyAnICtcbiAgICAgICAgJ2V5ZURpcmVjdGlvbiBleWVQb3MgZmFjZSBmYWN0aW9uIGZhZGVNdXNpYyBmYWRlUmFkaW8gZmFkZVNvdW5kIGZhZGVTcGVlY2ggZmFpbE1pc3Npb24gJyArXG4gICAgICAgICdmaWxsV2VhcG9uc0Zyb21Qb29sIGZpbmQgZmluZENvdmVyIGZpbmREaXNwbGF5IGZpbmRFZGl0b3JPYmplY3QgZmluZEVtcHR5UG9zaXRpb24gJyArXG4gICAgICAgICdmaW5kRW1wdHlQb3NpdGlvblJlYWR5IGZpbmRJZiBmaW5kTmVhcmVzdEVuZW15IGZpbmlzaE1pc3Npb25Jbml0IGZpbml0ZSBmaXJlIGZpcmVBdFRhcmdldCAnICtcbiAgICAgICAgJ2ZpcnN0QmFja3BhY2sgZmxhZyBmbGFnQW5pbWF0aW9uUGhhc2UgZmxhZ093bmVyIGZsYWdTaWRlIGZsYWdUZXh0dXJlIGZsZWVpbmcgZmxvb3IgZmx5SW5IZWlnaHQgJyArXG4gICAgICAgICdmbHlJbkhlaWdodEFTTCBmb2cgZm9nRm9yZWNhc3QgZm9nUGFyYW1zIGZvcmNlQWRkVW5pZm9ybSBmb3JjZWRNYXAgZm9yY2VFbmQgZm9yY2VGbGFnVGV4dHVyZSAnICtcbiAgICAgICAgJ2ZvcmNlRm9sbG93Um9hZCBmb3JjZU1hcCBmb3JjZVJlc3Bhd24gZm9yY2VTcGVlZCBmb3JjZVdhbGsgZm9yY2VXZWFwb25GaXJlIGZvcmNlV2VhdGhlckNoYW5nZSAnICtcbiAgICAgICAgJ2ZvckVhY2hNZW1iZXIgZm9yRWFjaE1lbWJlckFnZW50IGZvckVhY2hNZW1iZXJUZWFtIGZvcmdldFRhcmdldCBmb3JtYXQgZm9ybWF0aW9uICcgK1xuICAgICAgICAnZm9ybWF0aW9uRGlyZWN0aW9uIGZvcm1hdGlvbkxlYWRlciBmb3JtYXRpb25NZW1iZXJzIGZvcm1hdGlvblBvc2l0aW9uIGZvcm1hdGlvblRhc2sgZm9ybWF0VGV4dCAnICtcbiAgICAgICAgJ2Zvcm1MZWFkZXIgZnJlZUxvb2sgZnJvbUVkaXRvciBmdWVsIGZ1bGxDcmV3IGdlYXJJRENBbW1vQ291bnQgZ2VhclNsb3RBbW1vQ291bnQgZ2VhclNsb3REYXRhICcgK1xuICAgICAgICAnZ2V0M0RFTkFjdGlvblN0YXRlIGdldDNERU5BdHRyaWJ1dGUgZ2V0M0RFTkNhbWVyYSBnZXQzREVOQ29ubmVjdGlvbnMgZ2V0M0RFTkVudGl0eSAnICtcbiAgICAgICAgJ2dldDNERU5FbnRpdHlJRCBnZXQzREVOR3JpZCBnZXQzREVOSWNvbnNWaXNpYmxlIGdldDNERU5MYXllckVudGl0aWVzIGdldDNERU5MaW5lc1Zpc2libGUgJyArXG4gICAgICAgICdnZXQzREVOTWlzc2lvbkF0dHJpYnV0ZSBnZXQzREVOTW91c2VPdmVyIGdldDNERU5TZWxlY3RlZCBnZXRBaW1pbmdDb2VmIGdldEFsbEVudlNvdW5kQ29udHJvbGxlcnMgJyArXG4gICAgICAgICdnZXRBbGxIaXRQb2ludHNEYW1hZ2UgZ2V0QWxsT3duZWRNaW5lcyBnZXRBbGxTb3VuZENvbnRyb2xsZXJzIGdldEFtbW9DYXJnbyBnZXRBbmltQWltUHJlY2lzaW9uICcgK1xuICAgICAgICAnZ2V0QW5pbVNwZWVkQ29lZiBnZXRBcnJheSBnZXRBcnRpbGxlcnlBbW1vIGdldEFydGlsbGVyeUNvbXB1dGVyU2V0dGluZ3MgZ2V0QXJ0aWxsZXJ5RVRBICcgK1xuICAgICAgICAnZ2V0QXNzaWduZWRDdXJhdG9yTG9naWMgZ2V0QXNzaWduZWRDdXJhdG9yVW5pdCBnZXRCYWNrcGFja0NhcmdvIGdldEJsZWVkaW5nUmVtYWluaW5nICcgK1xuICAgICAgICAnZ2V0QnVybmluZ1ZhbHVlIGdldENhbWVyYVZpZXdEaXJlY3Rpb24gZ2V0Q2FyZ29JbmRleCBnZXRDZW50ZXJPZk1hc3MgZ2V0Q2xpZW50U3RhdGUgJyArXG4gICAgICAgICdnZXRDbGllbnRTdGF0ZU51bWJlciBnZXRDb21wYXRpYmxlUHlsb25NYWdhemluZXMgZ2V0Q29ubmVjdGVkVUFWIGdldENvbnRhaW5lck1heExvYWQgJyArXG4gICAgICAgICdnZXRDdXJzb3JPYmplY3RQYXJhbXMgZ2V0Q3VzdG9tQWltQ29lZiBnZXREYW1tYWdlIGdldERlc2NyaXB0aW9uIGdldERpciBnZXREaXJWaXN1YWwgJyArXG4gICAgICAgICdnZXRETENBc3NldHNVc2FnZSBnZXRETENBc3NldHNVc2FnZUJ5TmFtZSBnZXRETENzIGdldEVkaXRvckNhbWVyYSBnZXRFZGl0b3JNb2RlICcgK1xuICAgICAgICAnZ2V0RWRpdG9yT2JqZWN0U2NvcGUgZ2V0RWxldmF0aW9uT2Zmc2V0IGdldEVudlNvdW5kQ29udHJvbGxlciBnZXRGYXRpZ3VlIGdldEZvcmNlZEZsYWdUZXh0dXJlICcgK1xuICAgICAgICAnZ2V0RnJpZW5kIGdldEZTTVZhcmlhYmxlIGdldEZ1ZWxDYXJnbyBnZXRHcm91cEljb24gZ2V0R3JvdXBJY29uUGFyYW1zIGdldEdyb3VwSWNvbnMgZ2V0SGlkZUZyb20gJyArXG4gICAgICAgICdnZXRIaXQgZ2V0SGl0SW5kZXggZ2V0SGl0UG9pbnREYW1hZ2UgZ2V0SXRlbUNhcmdvIGdldE1hZ2F6aW5lQ2FyZ28gZ2V0TWFya2VyQ29sb3IgZ2V0TWFya2VyUG9zICcgK1xuICAgICAgICAnZ2V0TWFya2VyU2l6ZSBnZXRNYXJrZXJUeXBlIGdldE1hc3MgZ2V0TWlzc2lvbkNvbmZpZyBnZXRNaXNzaW9uQ29uZmlnVmFsdWUgZ2V0TWlzc2lvbkRMQ3MgJyArXG4gICAgICAgICdnZXRNaXNzaW9uTGF5ZXJFbnRpdGllcyBnZXRNb2RlbEluZm8gZ2V0TW91c2VQb3NpdGlvbiBnZXRNdXNpY1BsYXllZFRpbWUgZ2V0TnVtYmVyICcgK1xuICAgICAgICAnZ2V0T2JqZWN0QXJndW1lbnQgZ2V0T2JqZWN0Q2hpbGRyZW4gZ2V0T2JqZWN0RExDIGdldE9iamVjdE1hdGVyaWFscyBnZXRPYmplY3RQcm94eSAnICtcbiAgICAgICAgJ2dldE9iamVjdFRleHR1cmVzIGdldE9iamVjdFR5cGUgZ2V0T2JqZWN0Vmlld0Rpc3RhbmNlIGdldE94eWdlblJlbWFpbmluZyBnZXRQZXJzb25Vc2VkRExDcyAnICtcbiAgICAgICAgJ2dldFBpbG90Q2FtZXJhRGlyZWN0aW9uIGdldFBpbG90Q2FtZXJhUG9zaXRpb24gZ2V0UGlsb3RDYW1lcmFSb3RhdGlvbiBnZXRQaWxvdENhbWVyYVRhcmdldCAnICtcbiAgICAgICAgJ2dldFBsYXRlTnVtYmVyIGdldFBsYXllckNoYW5uZWwgZ2V0UGxheWVyU2NvcmVzIGdldFBsYXllclVJRCBnZXRQb3MgZ2V0UG9zQVNMIGdldFBvc0FTTFZpc3VhbCAnICtcbiAgICAgICAgJ2dldFBvc0FTTFcgZ2V0UG9zQVRMIGdldFBvc0FUTFZpc3VhbCBnZXRQb3NWaXN1YWwgZ2V0UG9zV29ybGQgZ2V0UHlsb25NYWdhemluZXMgZ2V0UmVsRGlyICcgK1xuICAgICAgICAnZ2V0UmVsUG9zIGdldFJlbW90ZVNlbnNvcnNEaXNhYmxlZCBnZXRSZXBhaXJDYXJnbyBnZXRSZXNvbHV0aW9uIGdldFNoYWRvd0Rpc3RhbmNlIGdldFNob3RQYXJlbnRzICcgK1xuICAgICAgICAnZ2V0U2xpbmdMb2FkIGdldFNvdW5kQ29udHJvbGxlciBnZXRTb3VuZENvbnRyb2xsZXJSZXN1bHQgZ2V0U3BlZWQgZ2V0U3RhbWluYSBnZXRTdGF0VmFsdWUgJyArXG4gICAgICAgICdnZXRTdXBwcmVzc2lvbiBnZXRUZXJyYWluR3JpZCBnZXRUZXJyYWluSGVpZ2h0QVNMIGdldFRleHQgZ2V0VG90YWxETENVc2FnZVRpbWUgZ2V0VW5pdExvYWRvdXQgJyArXG4gICAgICAgICdnZXRVbml0VHJhaXQgZ2V0VXNlck1GRFRleHQgZ2V0VXNlck1GRHZhbHVlIGdldFZhcmlhYmxlIGdldFZlaGljbGVDYXJnbyBnZXRXZWFwb25DYXJnbyAnICtcbiAgICAgICAgJ2dldFdlYXBvblN3YXkgZ2V0V2luZ3NPcmllbnRhdGlvblJURCBnZXRXaW5nc1Bvc2l0aW9uUlREIGdldFdQUG9zIGdsYW5jZUF0IGdsb2JhbENoYXQgZ2xvYmFsUmFkaW8gJyArXG4gICAgICAgICdnb2dnbGVzIGdvdG8gZ3JvdXAgZ3JvdXBDaGF0IGdyb3VwRnJvbU5ldElkIGdyb3VwSWNvblNlbGVjdGFibGUgZ3JvdXBJY29uc1Zpc2libGUgZ3JvdXBJZCAnICtcbiAgICAgICAgJ2dyb3VwT3duZXIgZ3JvdXBSYWRpbyBncm91cFNlbGVjdGVkVW5pdHMgZ3JvdXBTZWxlY3RVbml0IGd1bm5lciBndXN0cyBoYWx0IGhhbmRndW5JdGVtcyAnICtcbiAgICAgICAgJ2hhbmRndW5NYWdhemluZSBoYW5kZ3VuV2VhcG9uIGhhbmRzSGl0IGhhc0ludGVyZmFjZSBoYXNQaWxvdENhbWVyYSBoYXNXZWFwb24gaGNBbGxHcm91cHMgJyArXG4gICAgICAgICdoY0dyb3VwUGFyYW1zIGhjTGVhZGVyIGhjUmVtb3ZlQWxsR3JvdXBzIGhjUmVtb3ZlR3JvdXAgaGNTZWxlY3RlZCBoY1NlbGVjdEdyb3VwIGhjU2V0R3JvdXAgJyArXG4gICAgICAgICdoY1Nob3dCYXIgaGNTaG93bkJhciBoZWFkZ2VhciBoaWRlQm9keSBoaWRlT2JqZWN0IGhpZGVPYmplY3RHbG9iYWwgaGlkZVNlbGVjdGlvbiBoaW50IGhpbnRDICcgK1xuICAgICAgICAnaGludENhZGV0IGhpbnRTaWxlbnQgaG1kIGhvc3RNaXNzaW9uIGh0bWxMb2FkIEhVRE1vdmVtZW50TGV2ZWxzIGh1bWlkaXR5IGltYWdlIGltcG9ydEFsbEdyb3VwcyAnICtcbiAgICAgICAgJ2ltcG9ydGFuY2UgaW4gaW5BcmVhIGluQXJlYUFycmF5IGluY2FwYWNpdGF0ZWRTdGF0ZSBpbmZsYW1lIGluZmxhbWVkIGluZm9QYW5lbCAnICtcbiAgICAgICAgJ2luZm9QYW5lbENvbXBvbmVudEVuYWJsZWQgaW5mb1BhbmVsQ29tcG9uZW50cyBpbmZvUGFuZWxzIGluR2FtZVVJU2V0RXZlbnRIYW5kbGVyIGluaGVyaXRzRnJvbSAnICtcbiAgICAgICAgJ2luaXRBbWJpZW50TGlmZSBpblBvbHlnb24gaW5wdXRBY3Rpb24gaW5SYW5nZU9mQXJ0aWxsZXJ5IGluc2VydEVkaXRvck9iamVjdCBpbnRlcnNlY3QgaXMzREVOICcgK1xuICAgICAgICAnaXMzREVOTXVsdGlwbGF5ZXIgaXNBYmxlVG9CcmVhdGhlIGlzQWdlbnQgaXNBcnJheSBpc0F1dG9Ib3Zlck9uIGlzQXV0b25vbW91cyBpc0F1dG90ZXN0ICcgK1xuICAgICAgICAnaXNCbGVlZGluZyBpc0J1cm5pbmcgaXNDbGFzcyBpc0NvbGxpc2lvbkxpZ2h0T24gaXNDb3BpbG90RW5hYmxlZCBpc0RhbWFnZUFsbG93ZWQgaXNEZWRpY2F0ZWQgJyArXG4gICAgICAgICdpc0RMQ0F2YWlsYWJsZSBpc0VuZ2luZU9uIGlzRXF1YWxUbyBpc0VxdWFsVHlwZSBpc0VxdWFsVHlwZUFsbCBpc0VxdWFsVHlwZUFueSBpc0VxdWFsVHlwZUFycmF5ICcgK1xuICAgICAgICAnaXNFcXVhbFR5cGVQYXJhbXMgaXNGaWxlUGF0Y2hpbmdFbmFibGVkIGlzRmxhc2hsaWdodE9uIGlzRmxhdEVtcHR5IGlzRm9yY2VkV2FsayBpc0Zvcm1hdGlvbkxlYWRlciAnICtcbiAgICAgICAgJ2lzR3JvdXBEZWxldGVkV2hlbkVtcHR5IGlzSGlkZGVuIGlzSW5SZW1haW5zQ29sbGVjdG9yIGlzSW5zdHJ1Y3RvckZpZ3VyZUVuYWJsZWQgaXNJUkxhc2VyT24gJyArXG4gICAgICAgICdpc0tleUFjdGl2ZSBpc0tpbmRPZiBpc0xhc2VyT24gaXNMaWdodE9uIGlzTG9jYWxpemVkIGlzTWFudWFsRmlyZSBpc01hcmtlZEZvckNvbGxlY3Rpb24gJyArXG4gICAgICAgICdpc011bHRpcGxheWVyIGlzTXVsdGlwbGF5ZXJTb2xvIGlzTmlsIGlzTnVsbCBpc051bWJlciBpc09iamVjdEhpZGRlbiBpc09iamVjdFJURCBpc09uUm9hZCAnICtcbiAgICAgICAgJ2lzUGlwRW5hYmxlZCBpc1BsYXllciBpc1JlYWxUaW1lIGlzUmVtb3RlRXhlY3V0ZWQgaXNSZW1vdGVFeGVjdXRlZEpJUCBpc1NlcnZlciBpc1Nob3dpbmczREljb25zICcgK1xuICAgICAgICAnaXNTaW1wbGVPYmplY3QgaXNTcHJpbnRBbGxvd2VkIGlzU3RhbWluYUVuYWJsZWQgaXNTdGVhbU1pc3Npb24gaXNTdHJlYW1GcmllbmRseVVJRW5hYmxlZCBpc1RleHQgJyArXG4gICAgICAgICdpc1RvdWNoaW5nR3JvdW5kIGlzVHVybmVkT3V0IGlzVHV0SGludHNFbmFibGVkIGlzVUFWQ29ubmVjdGFibGUgaXNVQVZDb25uZWN0ZWQgaXNVSUNvbnRleHQgJyArXG4gICAgICAgICdpc1VuaWZvcm1BbGxvd2VkIGlzVmVoaWNsZUNhcmdvIGlzVmVoaWNsZVJhZGFyT24gaXNWZWhpY2xlU2Vuc29yRW5hYmxlZCBpc1dhbGtpbmcgJyArXG4gICAgICAgICdpc1dlYXBvbkRlcGxveWVkIGlzV2VhcG9uUmVzdGVkIGl0ZW1DYXJnbyBpdGVtcyBpdGVtc1dpdGhNYWdhemluZXMgam9pbiBqb2luQXMgam9pbkFzU2lsZW50ICcgK1xuICAgICAgICAnam9pblNpbGVudCBqb2luU3RyaW5nIGtiQWRkRGF0YWJhc2Uga2JBZGREYXRhYmFzZVRhcmdldHMga2JBZGRUb3BpYyBrYkhhc1RvcGljIGtiUmVhY3QgJyArXG4gICAgICAgICdrYlJlbW92ZVRvcGljIGtiVGVsbCBrYldhc1NhaWQga2V5SW1hZ2Uga2V5TmFtZSBrbm93c0Fib3V0IGxhbmQgbGFuZEF0IGxhbmRSZXN1bHQgbGFuZ3VhZ2UgJyArXG4gICAgICAgICdsYXNlclRhcmdldCBsYkFkZCBsYkNsZWFyIGxiQ29sb3IgbGJDb2xvclJpZ2h0IGxiQ3VyU2VsIGxiRGF0YSBsYkRlbGV0ZSBsYklzU2VsZWN0ZWQgbGJQaWN0dXJlICcgK1xuICAgICAgICAnbGJQaWN0dXJlUmlnaHQgbGJTZWxlY3Rpb24gbGJTZXRDb2xvciBsYlNldENvbG9yUmlnaHQgbGJTZXRDdXJTZWwgbGJTZXREYXRhIGxiU2V0UGljdHVyZSAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZUNvbG9yIGxiU2V0UGljdHVyZUNvbG9yRGlzYWJsZWQgbGJTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCBsYlNldFBpY3R1cmVSaWdodCAnICtcbiAgICAgICAgJ2xiU2V0UGljdHVyZVJpZ2h0Q29sb3IgbGJTZXRQaWN0dXJlUmlnaHRDb2xvckRpc2FibGVkIGxiU2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCAnICtcbiAgICAgICAgJ2xiU2V0U2VsZWN0Q29sb3IgbGJTZXRTZWxlY3RDb2xvclJpZ2h0IGxiU2V0U2VsZWN0ZWQgbGJTZXRUZXh0IGxiU2V0VGV4dFJpZ2h0IGxiU2V0VG9vbHRpcCAnICtcbiAgICAgICAgJ2xiU2V0VmFsdWUgbGJTaXplIGxiU29ydCBsYlNvcnRCeVZhbHVlIGxiVGV4dCBsYlRleHRSaWdodCBsYlZhbHVlIGxlYWRlciBsZWFkZXJib2FyZERlSW5pdCAnICtcbiAgICAgICAgJ2xlYWRlcmJvYXJkR2V0Um93cyBsZWFkZXJib2FyZEluaXQgbGVhZGVyYm9hcmRSZXF1ZXN0Um93c0ZyaWVuZHMgbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlICcgK1xuICAgICAgICAnbGVhZGVyYm9hcmRzUmVxdWVzdFVwbG9hZFNjb3JlS2VlcEJlc3QgbGVhZGVyYm9hcmRTdGF0ZSBsZWF2ZVZlaGljbGUgbGlicmFyeUNyZWRpdHMgJyArXG4gICAgICAgICdsaWJyYXJ5RGlzY2xhaW1lcnMgbGlmZVN0YXRlIGxpZ2h0QXR0YWNoT2JqZWN0IGxpZ2h0RGV0YWNoT2JqZWN0IGxpZ2h0SXNPbiBsaWdodG5pbmdzIGxpbWl0U3BlZWQgJyArXG4gICAgICAgICdsaW5lYXJDb252ZXJzaW9uIGxpbmVJbnRlcnNlY3RzIGxpbmVJbnRlcnNlY3RzT2JqcyBsaW5lSW50ZXJzZWN0c1N1cmZhY2VzIGxpbmVJbnRlcnNlY3RzV2l0aCAnICtcbiAgICAgICAgJ2xpbmtJdGVtIGxpc3QgbGlzdE9iamVjdHMgbGlzdFJlbW90ZVRhcmdldHMgbGlzdFZlaGljbGVTZW5zb3JzIGxuIGxuYkFkZEFycmF5IGxuYkFkZENvbHVtbiAnICtcbiAgICAgICAgJ2xuYkFkZFJvdyBsbmJDbGVhciBsbmJDb2xvciBsbmJDdXJTZWxSb3cgbG5iRGF0YSBsbmJEZWxldGVDb2x1bW4gbG5iRGVsZXRlUm93ICcgK1xuICAgICAgICAnbG5iR2V0Q29sdW1uc1Bvc2l0aW9uIGxuYlBpY3R1cmUgbG5iU2V0Q29sb3IgbG5iU2V0Q29sdW1uc1BvcyBsbmJTZXRDdXJTZWxSb3cgbG5iU2V0RGF0YSAnICtcbiAgICAgICAgJ2xuYlNldFBpY3R1cmUgbG5iU2V0VGV4dCBsbmJTZXRWYWx1ZSBsbmJTaXplIGxuYlNvcnQgbG5iU29ydEJ5VmFsdWUgbG5iVGV4dCBsbmJWYWx1ZSBsb2FkIGxvYWRBYnMgJyArXG4gICAgICAgICdsb2FkQmFja3BhY2sgbG9hZEZpbGUgbG9hZEdhbWUgbG9hZElkZW50aXR5IGxvYWRNYWdhemluZSBsb2FkT3ZlcmxheSBsb2FkU3RhdHVzIGxvYWRVbmlmb3JtICcgK1xuICAgICAgICAnbG9hZFZlc3QgbG9jYWwgbG9jYWxpemUgbG9jYXRpb25Qb3NpdGlvbiBsb2NrIGxvY2tDYW1lcmFUbyBsb2NrQ2FyZ28gbG9ja0RyaXZlciBsb2NrZWQgJyArXG4gICAgICAgICdsb2NrZWRDYXJnbyBsb2NrZWREcml2ZXIgbG9ja2VkVHVycmV0IGxvY2tJZGVudGl0eSBsb2NrVHVycmV0IGxvY2tXUCBsb2cgbG9nRW50aXRpZXMgbG9nTmV0d29yayAnICtcbiAgICAgICAgJ2xvZ05ldHdvcmtUZXJtaW5hdGUgbG9va0F0IGxvb2tBdFBvcyBtYWdhemluZUNhcmdvIG1hZ2F6aW5lcyBtYWdhemluZXNBbGxUdXJyZXRzIG1hZ2F6aW5lc0FtbW8gJyArXG4gICAgICAgICdtYWdhemluZXNBbW1vQ2FyZ28gbWFnYXppbmVzQW1tb0Z1bGwgbWFnYXppbmVzRGV0YWlsIG1hZ2F6aW5lc0RldGFpbEJhY2twYWNrICcgK1xuICAgICAgICAnbWFnYXppbmVzRGV0YWlsVW5pZm9ybSBtYWdhemluZXNEZXRhaWxWZXN0IG1hZ2F6aW5lc1R1cnJldCBtYWdhemluZVR1cnJldEFtbW8gbWFwQW5pbUFkZCAnICtcbiAgICAgICAgJ21hcEFuaW1DbGVhciBtYXBBbmltQ29tbWl0IG1hcEFuaW1Eb25lIG1hcENlbnRlck9uQ2FtZXJhIG1hcEdyaWRQb3NpdGlvbiBtYXJrQXNGaW5pc2hlZE9uU3RlYW0gJyArXG4gICAgICAgICdtYXJrZXJBbHBoYSBtYXJrZXJCcnVzaCBtYXJrZXJDb2xvciBtYXJrZXJEaXIgbWFya2VyUG9zIG1hcmtlclNoYXBlIG1hcmtlclNpemUgbWFya2VyVGV4dCAnICtcbiAgICAgICAgJ21hcmtlclR5cGUgbWF4IG1lbWJlcnMgbWVudUFjdGlvbiBtZW51QWRkIG1lbnVDaGVja2VkIG1lbnVDbGVhciBtZW51Q29sbGFwc2UgbWVudURhdGEgbWVudURlbGV0ZSAnICtcbiAgICAgICAgJ21lbnVFbmFibGUgbWVudUVuYWJsZWQgbWVudUV4cGFuZCBtZW51SG92ZXIgbWVudVBpY3R1cmUgbWVudVNldEFjdGlvbiBtZW51U2V0Q2hlY2sgbWVudVNldERhdGEgJyArXG4gICAgICAgICdtZW51U2V0UGljdHVyZSBtZW51U2V0VmFsdWUgbWVudVNob3J0Y3V0IG1lbnVTaG9ydGN1dFRleHQgbWVudVNpemUgbWVudVNvcnQgbWVudVRleHQgbWVudVVSTCAnICtcbiAgICAgICAgJ21lbnVWYWx1ZSBtaW4gbWluZUFjdGl2ZSBtaW5lRGV0ZWN0ZWRCeSBtaXNzaW9uQ29uZmlnRmlsZSBtaXNzaW9uRGlmZmljdWx0eSBtaXNzaW9uTmFtZSAnICtcbiAgICAgICAgJ21pc3Npb25OYW1lc3BhY2UgbWlzc2lvblN0YXJ0IG1pc3Npb25WZXJzaW9uIG1vZCBtb2RlbFRvV29ybGQgbW9kZWxUb1dvcmxkVmlzdWFsICcgK1xuICAgICAgICAnbW9kZWxUb1dvcmxkVmlzdWFsV29ybGQgbW9kZWxUb1dvcmxkV29ybGQgbW9kUGFyYW1zIG1vb25JbnRlbnNpdHkgbW9vblBoYXNlIG1vcmFsZSBtb3ZlICcgK1xuICAgICAgICAnbW92ZTNERU5DYW1lcmEgbW92ZUluQW55IG1vdmVJbkNhcmdvIG1vdmVJbkNvbW1hbmRlciBtb3ZlSW5Ecml2ZXIgbW92ZUluR3VubmVyIG1vdmVJblR1cnJldCAnICtcbiAgICAgICAgJ21vdmVPYmplY3RUb0VuZCBtb3ZlT3V0IG1vdmVUaW1lIG1vdmVUbyBtb3ZlVG9Db21wbGV0ZWQgbW92ZVRvRmFpbGVkIG11c2ljVm9sdW1lIG5hbWUgbmFtZVNvdW5kICcgK1xuICAgICAgICAnbmVhckVudGl0aWVzIG5lYXJlc3RCdWlsZGluZyBuZWFyZXN0TG9jYXRpb24gbmVhcmVzdExvY2F0aW9ucyBuZWFyZXN0TG9jYXRpb25XaXRoRHViYmluZyAnICtcbiAgICAgICAgJ25lYXJlc3RPYmplY3QgbmVhcmVzdE9iamVjdHMgbmVhcmVzdFRlcnJhaW5PYmplY3RzIG5lYXJPYmplY3RzIG5lYXJPYmplY3RzUmVhZHkgbmVhclJvYWRzICcgK1xuICAgICAgICAnbmVhclN1cHBsaWVzIG5lYXJUYXJnZXRzIG5lZWRSZWxvYWQgbmV0SWQgbmV0T2JqTnVsbCBuZXdPdmVybGF5IG5leHRNZW51SXRlbUluZGV4ICcgK1xuICAgICAgICAnbmV4dFdlYXRoZXJDaGFuZ2Ugbk1lbnVJdGVtcyBub3QgbnVtYmVyT2ZFbmdpbmVzUlREIG51bWJlclRvRGF0ZSBvYmplY3RDdXJhdG9ycyBvYmplY3RGcm9tTmV0SWQgJyArXG4gICAgICAgICdvYmplY3RQYXJlbnQgb2JqU3RhdHVzIG9uQnJpZWZpbmdHcm91cCBvbkJyaWVmaW5nTm90ZXMgb25CcmllZmluZ1BsYW4gb25CcmllZmluZ1RlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvbkNvbW1hbmRNb2RlQ2hhbmdlZCBvbkRvdWJsZUNsaWNrIG9uRWFjaEZyYW1lIG9uR3JvdXBJY29uQ2xpY2sgb25Hcm91cEljb25PdmVyRW50ZXIgJyArXG4gICAgICAgICdvbkdyb3VwSWNvbk92ZXJMZWF2ZSBvbkhDR3JvdXBTZWxlY3Rpb25DaGFuZ2VkIG9uTWFwU2luZ2xlQ2xpY2sgb25QbGF5ZXJDb25uZWN0ZWQgJyArXG4gICAgICAgICdvblBsYXllckRpc2Nvbm5lY3RlZCBvblByZWxvYWRGaW5pc2hlZCBvblByZWxvYWRTdGFydGVkIG9uU2hvd05ld09iamVjdCBvblRlYW1Td2l0Y2ggJyArXG4gICAgICAgICdvcGVuQ3VyYXRvckludGVyZmFjZSBvcGVuRExDUGFnZSBvcGVuTWFwIG9wZW5TdGVhbUFwcCBvcGVuWW91dHViZVZpZGVvIG9yIG9yZGVyR2V0SW4gb3ZlcmNhc3QgJyArXG4gICAgICAgICdvdmVyY2FzdEZvcmVjYXN0IG93bmVyIHBhcmFtIHBhcmFtcyBwYXJzZU51bWJlciBwYXJzZVNpbXBsZUFycmF5IHBhcnNlVGV4dCBwYXJzaW5nTmFtZXNwYWNlICcgK1xuICAgICAgICAncGFydGljbGVzUXVhbGl0eSBwaWNrV2VhcG9uUG9vbCBwaXRjaCBwaXhlbEdyaWQgcGl4ZWxHcmlkQmFzZSBwaXhlbEdyaWROb1VJU2NhbGUgcGl4ZWxIIHBpeGVsVyAnICtcbiAgICAgICAgJ3BsYXlhYmxlU2xvdHNOdW1iZXIgcGxheWFibGVVbml0cyBwbGF5QWN0aW9uIHBsYXlBY3Rpb25Ob3cgcGxheWVyIHBsYXllclJlc3Bhd25UaW1lIHBsYXllclNpZGUgJyArXG4gICAgICAgICdwbGF5ZXJzTnVtYmVyIHBsYXlHZXN0dXJlIHBsYXlNaXNzaW9uIHBsYXlNb3ZlIHBsYXlNb3ZlTm93IHBsYXlNdXNpYyBwbGF5U2NyaXB0ZWRNaXNzaW9uICcgK1xuICAgICAgICAncGxheVNvdW5kIHBsYXlTb3VuZDNEIHBvc2l0aW9uIHBvc2l0aW9uQ2FtZXJhVG9Xb3JsZCBwb3NTY3JlZW5Ub1dvcmxkIHBvc1dvcmxkVG9TY3JlZW4gJyArXG4gICAgICAgICdwcEVmZmVjdEFkanVzdCBwcEVmZmVjdENvbW1pdCBwcEVmZmVjdENvbW1pdHRlZCBwcEVmZmVjdENyZWF0ZSBwcEVmZmVjdERlc3Ryb3kgcHBFZmZlY3RFbmFibGUgJyArXG4gICAgICAgICdwcEVmZmVjdEVuYWJsZWQgcHBFZmZlY3RGb3JjZUluTlZHIHByZWNpc2lvbiBwcmVsb2FkQ2FtZXJhIHByZWxvYWRPYmplY3QgcHJlbG9hZFNvdW5kICcgK1xuICAgICAgICAncHJlbG9hZFRpdGxlT2JqIHByZWxvYWRUaXRsZVJzYyBwcmVwcm9jZXNzRmlsZSBwcmVwcm9jZXNzRmlsZUxpbmVOdW1iZXJzIHByaW1hcnlXZWFwb24gJyArXG4gICAgICAgICdwcmltYXJ5V2VhcG9uSXRlbXMgcHJpbWFyeVdlYXBvbk1hZ2F6aW5lIHByaW9yaXR5IHByb2Nlc3NEaWFyeUxpbmsgcHJvZHVjdFZlcnNpb24gcHJvZmlsZU5hbWUgJyArXG4gICAgICAgICdwcm9maWxlTmFtZXNwYWNlIHByb2ZpbGVOYW1lU3RlYW0gcHJvZ3Jlc3NMb2FkaW5nU2NyZWVuIHByb2dyZXNzUG9zaXRpb24gcHJvZ3Jlc3NTZXRQb3NpdGlvbiAnICtcbiAgICAgICAgJ3B1YmxpY1ZhcmlhYmxlIHB1YmxpY1ZhcmlhYmxlQ2xpZW50IHB1YmxpY1ZhcmlhYmxlU2VydmVyIHB1c2hCYWNrIHB1c2hCYWNrVW5pcXVlIHB1dFdlYXBvblBvb2wgJyArXG4gICAgICAgICdxdWVyeUl0ZW1zUG9vbCBxdWVyeU1hZ2F6aW5lUG9vbCBxdWVyeVdlYXBvblBvb2wgcmFkIHJhZGlvQ2hhbm5lbEFkZCByYWRpb0NoYW5uZWxDcmVhdGUgJyArXG4gICAgICAgICdyYWRpb0NoYW5uZWxSZW1vdmUgcmFkaW9DaGFubmVsU2V0Q2FsbFNpZ24gcmFkaW9DaGFubmVsU2V0TGFiZWwgcmFkaW9Wb2x1bWUgcmFpbiByYWluYm93IHJhbmRvbSAnICtcbiAgICAgICAgJ3JhbmsgcmFua0lkIHJhdGluZyByZWN0YW5ndWxhciByZWdpc3RlcmVkVGFza3MgcmVnaXN0ZXJUYXNrIHJlbG9hZCByZWxvYWRFbmFibGVkIHJlbW90ZUNvbnRyb2wgJyArXG4gICAgICAgICdyZW1vdGVFeGVjIHJlbW90ZUV4ZWNDYWxsIHJlbW90ZUV4ZWN1dGVkT3duZXIgcmVtb3ZlM0RFTkNvbm5lY3Rpb24gcmVtb3ZlM0RFTkV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZTNERU5MYXllciByZW1vdmVBY3Rpb24gcmVtb3ZlQWxsM0RFTkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsQWN0aW9ucyByZW1vdmVBbGxBc3NpZ25lZEl0ZW1zICcgK1xuICAgICAgICAncmVtb3ZlQWxsQ29udGFpbmVycyByZW1vdmVBbGxDdXJhdG9yQWRkb25zIHJlbW92ZUFsbEN1cmF0b3JDYW1lcmFBcmVhcyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbEN1cmF0b3JFZGl0aW5nQXJlYXMgcmVtb3ZlQWxsRXZlbnRIYW5kbGVycyByZW1vdmVBbGxIYW5kZ3VuSXRlbXMgcmVtb3ZlQWxsSXRlbXMgJyArXG4gICAgICAgICdyZW1vdmVBbGxJdGVtc1dpdGhNYWdhemluZXMgcmVtb3ZlQWxsTWlzc2lvbkV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsTVBFdmVudEhhbmRsZXJzICcgK1xuICAgICAgICAncmVtb3ZlQWxsTXVzaWNFdmVudEhhbmRsZXJzIHJlbW92ZUFsbE93bmVkTWluZXMgcmVtb3ZlQWxsUHJpbWFyeVdlYXBvbkl0ZW1zIHJlbW92ZUFsbFdlYXBvbnMgJyArXG4gICAgICAgICdyZW1vdmVCYWNrcGFjayByZW1vdmVCYWNrcGFja0dsb2JhbCByZW1vdmVDdXJhdG9yQWRkb25zIHJlbW92ZUN1cmF0b3JDYW1lcmFBcmVhICcgK1xuICAgICAgICAncmVtb3ZlQ3VyYXRvckVkaXRhYmxlT2JqZWN0cyByZW1vdmVDdXJhdG9yRWRpdGluZ0FyZWEgcmVtb3ZlRHJhd0ljb24gcmVtb3ZlRHJhd0xpbmtzICcgK1xuICAgICAgICAncmVtb3ZlRXZlbnRIYW5kbGVyIHJlbW92ZUZyb21SZW1haW5zQ29sbGVjdG9yIHJlbW92ZUdvZ2dsZXMgcmVtb3ZlR3JvdXBJY29uIHJlbW92ZUhhbmRndW5JdGVtICcgK1xuICAgICAgICAncmVtb3ZlSGVhZGdlYXIgcmVtb3ZlSXRlbSByZW1vdmVJdGVtRnJvbUJhY2twYWNrIHJlbW92ZUl0ZW1Gcm9tVW5pZm9ybSByZW1vdmVJdGVtRnJvbVZlc3QgJyArXG4gICAgICAgICdyZW1vdmVJdGVtcyByZW1vdmVNYWdhemluZSByZW1vdmVNYWdhemluZUdsb2JhbCByZW1vdmVNYWdhemluZXMgcmVtb3ZlTWFnYXppbmVzVHVycmV0ICcgK1xuICAgICAgICAncmVtb3ZlTWFnYXppbmVUdXJyZXQgcmVtb3ZlTWVudUl0ZW0gcmVtb3ZlTWlzc2lvbkV2ZW50SGFuZGxlciByZW1vdmVNUEV2ZW50SGFuZGxlciAnICtcbiAgICAgICAgJ3JlbW92ZU11c2ljRXZlbnRIYW5kbGVyIHJlbW92ZU93bmVkTWluZSByZW1vdmVQcmltYXJ5V2VhcG9uSXRlbSByZW1vdmVTZWNvbmRhcnlXZWFwb25JdGVtICcgK1xuICAgICAgICAncmVtb3ZlU2ltcGxlVGFzayByZW1vdmVTd2l0Y2hhYmxlVW5pdCByZW1vdmVUZWFtTWVtYmVyIHJlbW92ZVVuaWZvcm0gcmVtb3ZlVmVzdCByZW1vdmVXZWFwb24gJyArXG4gICAgICAgICdyZW1vdmVXZWFwb25BdHRhY2htZW50Q2FyZ28gcmVtb3ZlV2VhcG9uQ2FyZ28gcmVtb3ZlV2VhcG9uR2xvYmFsIHJlbW92ZVdlYXBvblR1cnJldCAnICtcbiAgICAgICAgJ3JlcG9ydFJlbW90ZVRhcmdldCByZXF1aXJlZFZlcnNpb24gcmVzZXRDYW1TaGFrZSByZXNldFN1Ymdyb3VwRGlyZWN0aW9uIHJlc2l6ZSByZXNvdXJjZXMgJyArXG4gICAgICAgICdyZXNwYXduVmVoaWNsZSByZXN0YXJ0RWRpdG9yQ2FtZXJhIHJldmVhbCByZXZlYWxNaW5lIHJldmVyc2UgcmV2ZXJzZWRNb3VzZVkgcm9hZEF0ICcgK1xuICAgICAgICAncm9hZHNDb25uZWN0ZWRUbyByb2xlRGVzY3JpcHRpb24gcm9wZUF0dGFjaGVkT2JqZWN0cyByb3BlQXR0YWNoZWRUbyByb3BlQXR0YWNoRW5hYmxlZCAnICtcbiAgICAgICAgJ3JvcGVBdHRhY2hUbyByb3BlQ3JlYXRlIHJvcGVDdXQgcm9wZURlc3Ryb3kgcm9wZURldGFjaCByb3BlRW5kUG9zaXRpb24gcm9wZUxlbmd0aCByb3BlcyAnICtcbiAgICAgICAgJ3JvcGVVbndpbmQgcm9wZVVud291bmQgcm90b3JzRm9yY2VzUlREIHJvdG9yc1JwbVJURCByb3VuZCBydW5Jbml0U2NyaXB0IHNhZmVab25lSCBzYWZlWm9uZVcgJyArXG4gICAgICAgICdzYWZlWm9uZVdBYnMgc2FmZVpvbmVYIHNhZmVab25lWEFicyBzYWZlWm9uZVkgc2F2ZTNERU5JbnZlbnRvcnkgc2F2ZUdhbWUgc2F2ZUlkZW50aXR5ICcgK1xuICAgICAgICAnc2F2ZUpveXN0aWNrcyBzYXZlT3ZlcmxheSBzYXZlUHJvZmlsZU5hbWVzcGFjZSBzYXZlU3RhdHVzIHNhdmVWYXIgc2F2aW5nRW5hYmxlZCBzYXkgc2F5MkQgc2F5M0QgJyArXG4gICAgICAgICdzY29wZU5hbWUgc2NvcmUgc2NvcmVTaWRlIHNjcmVlbnNob3Qgc2NyZWVuVG9Xb3JsZCBzY3JpcHREb25lIHNjcmlwdE5hbWUgc2N1ZFN0YXRlICcgK1xuICAgICAgICAnc2Vjb25kYXJ5V2VhcG9uIHNlY29uZGFyeVdlYXBvbkl0ZW1zIHNlY29uZGFyeVdlYXBvbk1hZ2F6aW5lIHNlbGVjdCBzZWxlY3RCZXN0UGxhY2VzICcgK1xuICAgICAgICAnc2VsZWN0RGlhcnlTdWJqZWN0IHNlbGVjdGVkRWRpdG9yT2JqZWN0cyBzZWxlY3RFZGl0b3JPYmplY3Qgc2VsZWN0aW9uTmFtZXMgc2VsZWN0aW9uUG9zaXRpb24gJyArXG4gICAgICAgICdzZWxlY3RMZWFkZXIgc2VsZWN0TWF4IHNlbGVjdE1pbiBzZWxlY3ROb1BsYXllciBzZWxlY3RQbGF5ZXIgc2VsZWN0UmFuZG9tIHNlbGVjdFJhbmRvbVdlaWdodGVkICcgK1xuICAgICAgICAnc2VsZWN0V2VhcG9uIHNlbGVjdFdlYXBvblR1cnJldCBzZW5kQVVNZXNzYWdlIHNlbmRTaW1wbGVDb21tYW5kIHNlbmRUYXNrIHNlbmRUYXNrUmVzdWx0ICcgK1xuICAgICAgICAnc2VuZFVEUE1lc3NhZ2Ugc2VydmVyQ29tbWFuZCBzZXJ2ZXJDb21tYW5kQXZhaWxhYmxlIHNlcnZlckNvbW1hbmRFeGVjdXRhYmxlIHNlcnZlck5hbWUgc2VydmVyVGltZSAnICtcbiAgICAgICAgJ3NldCBzZXQzREVOQXR0cmlidXRlIHNldDNERU5BdHRyaWJ1dGVzIHNldDNERU5HcmlkIHNldDNERU5JY29uc1Zpc2libGUgc2V0M0RFTkxheWVyICcgK1xuICAgICAgICAnc2V0M0RFTkxpbmVzVmlzaWJsZSBzZXQzREVOTG9naWNUeXBlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlIHNldDNERU5NaXNzaW9uQXR0cmlidXRlcyAnICtcbiAgICAgICAgJ3NldDNERU5Nb2RlbHNWaXNpYmxlIHNldDNERU5PYmplY3RUeXBlIHNldDNERU5TZWxlY3RlZCBzZXRBY2NUaW1lIHNldEFjdHVhbENvbGxlY3RpdmVSVEQgJyArXG4gICAgICAgICdzZXRBaXJwbGFuZVRocm90dGxlIHNldEFpcnBvcnRTaWRlIHNldEFtbW8gc2V0QW1tb0NhcmdvIHNldEFtbW9PblB5bG9uIHNldEFuaW1TcGVlZENvZWYgJyArXG4gICAgICAgICdzZXRBcGVydHVyZSBzZXRBcGVydHVyZU5ldyBzZXRBcm1vcnlQb2ludHMgc2V0QXR0cmlidXRlcyBzZXRBdXRvbm9tb3VzIHNldEJlaGF2aW91ciAnICtcbiAgICAgICAgJ3NldEJsZWVkaW5nUmVtYWluaW5nIHNldEJyYWtlc1JURCBzZXRDYW1lcmFJbnRlcmVzdCBzZXRDYW1TaGFrZURlZlBhcmFtcyBzZXRDYW1TaGFrZVBhcmFtcyAnICtcbiAgICAgICAgJ3NldENhbVVzZVRJIHNldENhcHRpdmUgc2V0Q2VudGVyT2ZNYXNzIHNldENvbGxpc2lvbkxpZ2h0IHNldENvbWJhdE1vZGUgc2V0Q29tcGFzc09zY2lsbGF0aW9uICcgK1xuICAgICAgICAnc2V0Q29udm95U2VwYXJhdGlvbiBzZXRDdXJhdG9yQ2FtZXJhQXJlYUNlaWxpbmcgc2V0Q3VyYXRvckNvZWYgc2V0Q3VyYXRvckVkaXRpbmdBcmVhVHlwZSAnICtcbiAgICAgICAgJ3NldEN1cmF0b3JXYXlwb2ludENvc3Qgc2V0Q3VycmVudENoYW5uZWwgc2V0Q3VycmVudFRhc2sgc2V0Q3VycmVudFdheXBvaW50IHNldEN1c3RvbUFpbUNvZWYgJyArXG4gICAgICAgICdzZXRDdXN0b21XZWlnaHRSVEQgc2V0RGFtYWdlIHNldERhbW1hZ2Ugc2V0RGF0ZSBzZXREZWJyaWVmaW5nVGV4dCBzZXREZWZhdWx0Q2FtZXJhIHNldERlc3RpbmF0aW9uICcgK1xuICAgICAgICAnc2V0RGV0YWlsTWFwQmxlbmRQYXJzIHNldERpciBzZXREaXJlY3Rpb24gc2V0RHJhd0ljb24gc2V0RHJpdmVPblBhdGggc2V0RHJvcEludGVydmFsICcgK1xuICAgICAgICAnc2V0RHluYW1pY1NpbXVsYXRpb25EaXN0YW5jZSBzZXREeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlQ29lZiBzZXRFZGl0b3JNb2RlIHNldEVkaXRvck9iamVjdFNjb3BlICcgK1xuICAgICAgICAnc2V0RWZmZWN0Q29uZGl0aW9uIHNldEVuZ2luZVJQTVJURCBzZXRGYWNlIHNldEZhY2VBbmltYXRpb24gc2V0RmF0aWd1ZSBzZXRGZWF0dXJlVHlwZSAnICtcbiAgICAgICAgJ3NldEZsYWdBbmltYXRpb25QaGFzZSBzZXRGbGFnT3duZXIgc2V0RmxhZ1NpZGUgc2V0RmxhZ1RleHR1cmUgc2V0Rm9nIHNldEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldEZvcm1hdGlvblRhc2sgc2V0Rm9ybURpciBzZXRGcmllbmQgc2V0RnJvbUVkaXRvciBzZXRGU01WYXJpYWJsZSBzZXRGdWVsIHNldEZ1ZWxDYXJnbyAnICtcbiAgICAgICAgJ3NldEdyb3VwSWNvbiBzZXRHcm91cEljb25QYXJhbXMgc2V0R3JvdXBJY29uc1NlbGVjdGFibGUgc2V0R3JvdXBJY29uc1Zpc2libGUgc2V0R3JvdXBJZCAnICtcbiAgICAgICAgJ3NldEdyb3VwSWRHbG9iYWwgc2V0R3JvdXBPd25lciBzZXRHdXN0cyBzZXRIaWRlQmVoaW5kIHNldEhpdCBzZXRIaXRJbmRleCBzZXRIaXRQb2ludERhbWFnZSAnICtcbiAgICAgICAgJ3NldEhvcml6b25QYXJhbGxheENvZWYgc2V0SFVETW92ZW1lbnRMZXZlbHMgc2V0SWRlbnRpdHkgc2V0SW1wb3J0YW5jZSBzZXRJbmZvUGFuZWwgc2V0TGVhZGVyICcgK1xuICAgICAgICAnc2V0TGlnaHRBbWJpZW50IHNldExpZ2h0QXR0ZW51YXRpb24gc2V0TGlnaHRCcmlnaHRuZXNzIHNldExpZ2h0Q29sb3Igc2V0TGlnaHREYXlMaWdodCAnICtcbiAgICAgICAgJ3NldExpZ2h0RmxhcmVNYXhEaXN0YW5jZSBzZXRMaWdodEZsYXJlU2l6ZSBzZXRMaWdodEludGVuc2l0eSBzZXRMaWdodG5pbmdzIHNldExpZ2h0VXNlRmxhcmUgJyArXG4gICAgICAgICdzZXRMb2NhbFdpbmRQYXJhbXMgc2V0TWFnYXppbmVUdXJyZXRBbW1vIHNldE1hcmtlckFscGhhIHNldE1hcmtlckFscGhhTG9jYWwgc2V0TWFya2VyQnJ1c2ggJyArXG4gICAgICAgICdzZXRNYXJrZXJCcnVzaExvY2FsIHNldE1hcmtlckNvbG9yIHNldE1hcmtlckNvbG9yTG9jYWwgc2V0TWFya2VyRGlyIHNldE1hcmtlckRpckxvY2FsICcgK1xuICAgICAgICAnc2V0TWFya2VyUG9zIHNldE1hcmtlclBvc0xvY2FsIHNldE1hcmtlclNoYXBlIHNldE1hcmtlclNoYXBlTG9jYWwgc2V0TWFya2VyU2l6ZSAnICtcbiAgICAgICAgJ3NldE1hcmtlclNpemVMb2NhbCBzZXRNYXJrZXJUZXh0IHNldE1hcmtlclRleHRMb2NhbCBzZXRNYXJrZXJUeXBlIHNldE1hcmtlclR5cGVMb2NhbCBzZXRNYXNzICcgK1xuICAgICAgICAnc2V0TWltaWMgc2V0TW91c2VQb3NpdGlvbiBzZXRNdXNpY0VmZmVjdCBzZXRNdXNpY0V2ZW50SGFuZGxlciBzZXROYW1lIHNldE5hbWVTb3VuZCAnICtcbiAgICAgICAgJ3NldE9iamVjdEFyZ3VtZW50cyBzZXRPYmplY3RNYXRlcmlhbCBzZXRPYmplY3RNYXRlcmlhbEdsb2JhbCBzZXRPYmplY3RQcm94eSBzZXRPYmplY3RUZXh0dXJlICcgK1xuICAgICAgICAnc2V0T2JqZWN0VGV4dHVyZUdsb2JhbCBzZXRPYmplY3RWaWV3RGlzdGFuY2Ugc2V0T3ZlcmNhc3Qgc2V0T3duZXIgc2V0T3h5Z2VuUmVtYWluaW5nICcgK1xuICAgICAgICAnc2V0UGFydGljbGVDaXJjbGUgc2V0UGFydGljbGVDbGFzcyBzZXRQYXJ0aWNsZUZpcmUgc2V0UGFydGljbGVQYXJhbXMgc2V0UGFydGljbGVSYW5kb20gJyArXG4gICAgICAgICdzZXRQaWxvdENhbWVyYURpcmVjdGlvbiBzZXRQaWxvdENhbWVyYVJvdGF0aW9uIHNldFBpbG90Q2FtZXJhVGFyZ2V0IHNldFBpbG90TGlnaHQgc2V0UGlQRWZmZWN0ICcgK1xuICAgICAgICAnc2V0UGl0Y2ggc2V0UGxhdGVOdW1iZXIgc2V0UGxheWFibGUgc2V0UGxheWVyUmVzcGF3blRpbWUgc2V0UG9zIHNldFBvc0FTTCBzZXRQb3NBU0wyIHNldFBvc0FTTFcgJyArXG4gICAgICAgICdzZXRQb3NBVEwgc2V0UG9zaXRpb24gc2V0UG9zV29ybGQgc2V0UHlsb25Mb2FkT3V0IHNldFB5bG9uc1ByaW9yaXR5IHNldFJhZGlvTXNnIHNldFJhaW4gJyArXG4gICAgICAgICdzZXRSYWluYm93IHNldFJhbmRvbUxpcCBzZXRSYW5rIHNldFJlY3Rhbmd1bGFyIHNldFJlcGFpckNhcmdvIHNldFJvdG9yQnJha2VSVEQgc2V0U2hhZG93RGlzdGFuY2UgJyArXG4gICAgICAgICdzZXRTaG90UGFyZW50cyBzZXRTaWRlIHNldFNpbXBsZVRhc2tBbHdheXNWaXNpYmxlIHNldFNpbXBsZVRhc2tDdXN0b21EYXRhICcgK1xuICAgICAgICAnc2V0U2ltcGxlVGFza0Rlc2NyaXB0aW9uIHNldFNpbXBsZVRhc2tEZXN0aW5hdGlvbiBzZXRTaW1wbGVUYXNrVGFyZ2V0IHNldFNpbXBsZVRhc2tUeXBlICcgK1xuICAgICAgICAnc2V0U2ltdWxXZWF0aGVyTGF5ZXJzIHNldFNpemUgc2V0U2tpbGwgc2V0U2xpbmdMb2FkIHNldFNvdW5kRWZmZWN0IHNldFNwZWFrZXIgc2V0U3BlZWNoICcgK1xuICAgICAgICAnc2V0U3BlZWRNb2RlIHNldFN0YW1pbmEgc2V0U3RhbWluYVNjaGVtZSBzZXRTdGF0VmFsdWUgc2V0U3VwcHJlc3Npb24gc2V0U3lzdGVtT2ZVbml0cyAnICtcbiAgICAgICAgJ3NldFRhcmdldEFnZSBzZXRUYXNrTWFya2VyT2Zmc2V0IHNldFRhc2tSZXN1bHQgc2V0VGFza1N0YXRlIHNldFRlcnJhaW5HcmlkIHNldFRleHQgJyArXG4gICAgICAgICdzZXRUaW1lTXVsdGlwbGllciBzZXRUaXRsZUVmZmVjdCBzZXRUcmFmZmljRGVuc2l0eSBzZXRUcmFmZmljRGlzdGFuY2Ugc2V0VHJhZmZpY0dhcCAnICtcbiAgICAgICAgJ3NldFRyYWZmaWNTcGVlZCBzZXRUcmlnZ2VyQWN0aXZhdGlvbiBzZXRUcmlnZ2VyQXJlYSBzZXRUcmlnZ2VyU3RhdGVtZW50cyBzZXRUcmlnZ2VyVGV4dCAnICtcbiAgICAgICAgJ3NldFRyaWdnZXJUaW1lb3V0IHNldFRyaWdnZXJUeXBlIHNldFR5cGUgc2V0VW5jb25zY2lvdXMgc2V0VW5pdEFiaWxpdHkgc2V0VW5pdExvYWRvdXQgc2V0VW5pdFBvcyAnICtcbiAgICAgICAgJ3NldFVuaXRQb3NXZWFrIHNldFVuaXRSYW5rIHNldFVuaXRSZWNvaWxDb2VmZmljaWVudCBzZXRVbml0VHJhaXQgc2V0VW5sb2FkSW5Db21iYXQgJyArXG4gICAgICAgICdzZXRVc2VyQWN0aW9uVGV4dCBzZXRVc2VyTUZEVGV4dCBzZXRVc2VyTUZEdmFsdWUgc2V0VmFyaWFibGUgc2V0VmVjdG9yRGlyIHNldFZlY3RvckRpckFuZFVwICcgK1xuICAgICAgICAnc2V0VmVjdG9yVXAgc2V0VmVoaWNsZUFtbW8gc2V0VmVoaWNsZUFtbW9EZWYgc2V0VmVoaWNsZUFybW9yIHNldFZlaGljbGVDYXJnbyBzZXRWZWhpY2xlSWQgJyArXG4gICAgICAgICdzZXRWZWhpY2xlTG9jayBzZXRWZWhpY2xlUG9zaXRpb24gc2V0VmVoaWNsZVJhZGFyIHNldFZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyAnICtcbiAgICAgICAgJ3NldFZlaGljbGVSZXBvcnRPd25Qb3NpdGlvbiBzZXRWZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyBzZXRWZWhpY2xlVElQYXJzIHNldFZlaGljbGVWYXJOYW1lICcgK1xuICAgICAgICAnc2V0VmVsb2NpdHkgc2V0VmVsb2NpdHlNb2RlbFNwYWNlIHNldFZlbG9jaXR5VHJhbnNmb3JtYXRpb24gc2V0Vmlld0Rpc3RhbmNlICcgK1xuICAgICAgICAnc2V0VmlzaWJsZUlmVHJlZUNvbGxhcHNlZCBzZXRXYW50ZWRSUE1SVEQgc2V0V2F2ZXMgc2V0V2F5cG9pbnRCZWhhdmlvdXIgc2V0V2F5cG9pbnRDb21iYXRNb2RlICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRDb21wbGV0aW9uUmFkaXVzIHNldFdheXBvaW50RGVzY3JpcHRpb24gc2V0V2F5cG9pbnRGb3JjZUJlaGF2aW91ciBzZXRXYXlwb2ludEZvcm1hdGlvbiAnICtcbiAgICAgICAgJ3NldFdheXBvaW50SG91c2VQb3NpdGlvbiBzZXRXYXlwb2ludExvaXRlclJhZGl1cyBzZXRXYXlwb2ludExvaXRlclR5cGUgc2V0V2F5cG9pbnROYW1lICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRQb3NpdGlvbiBzZXRXYXlwb2ludFNjcmlwdCBzZXRXYXlwb2ludFNwZWVkIHNldFdheXBvaW50U3RhdGVtZW50cyBzZXRXYXlwb2ludFRpbWVvdXQgJyArXG4gICAgICAgICdzZXRXYXlwb2ludFR5cGUgc2V0V2F5cG9pbnRWaXNpYmxlIHNldFdlYXBvblJlbG9hZGluZ1RpbWUgc2V0V2luZCBzZXRXaW5kRGlyIHNldFdpbmRGb3JjZSAnICtcbiAgICAgICAgJ3NldFdpbmRTdHIgc2V0V2luZ0ZvcmNlU2NhbGVSVEQgc2V0V1BQb3Mgc2hvdzNESWNvbnMgc2hvd0NoYXQgc2hvd0NpbmVtYUJvcmRlciBzaG93Q29tbWFuZGluZ01lbnUgJyArXG4gICAgICAgICdzaG93Q29tcGFzcyBzaG93Q3VyYXRvckNvbXBhc3Mgc2hvd0dQUyBzaG93SFVEIHNob3dMZWdlbmQgc2hvd01hcCBzaG93bkFydGlsbGVyeUNvbXB1dGVyICcgK1xuICAgICAgICAnc2hvd25DaGF0IHNob3duQ29tcGFzcyBzaG93bkN1cmF0b3JDb21wYXNzIHNob3dOZXdFZGl0b3JPYmplY3Qgc2hvd25HUFMgc2hvd25IVUQgc2hvd25NYXAgJyArXG4gICAgICAgICdzaG93blBhZCBzaG93blJhZGlvIHNob3duU2NvcmV0YWJsZSBzaG93blVBVkZlZWQgc2hvd25XYXJyYW50IHNob3duV2F0Y2ggc2hvd1BhZCBzaG93UmFkaW8gJyArXG4gICAgICAgICdzaG93U2NvcmV0YWJsZSBzaG93U3VidGl0bGVzIHNob3dVQVZGZWVkIHNob3dXYXJyYW50IHNob3dXYXRjaCBzaG93V2F5cG9pbnQgc2hvd1dheXBvaW50cyBzaWRlICcgK1xuICAgICAgICAnc2lkZUNoYXQgc2lkZUVuZW15IHNpZGVGcmllbmRseSBzaWRlUmFkaW8gc2ltcGxlVGFza3Mgc2ltdWxhdGlvbkVuYWJsZWQgc2ltdWxDbG91ZERlbnNpdHkgJyArXG4gICAgICAgICdzaW11bENsb3VkT2NjbHVzaW9uIHNpbXVsSW5DbG91ZHMgc2ltdWxXZWF0aGVyU3luYyBzaW4gc2l6ZSBzaXplT2Ygc2tpbGwgc2tpbGxGaW5hbCBza2lwVGltZSAnICtcbiAgICAgICAgJ3NsZWVwIHNsaWRlclBvc2l0aW9uIHNsaWRlclJhbmdlIHNsaWRlclNldFBvc2l0aW9uIHNsaWRlclNldFJhbmdlIHNsaWRlclNldFNwZWVkIHNsaWRlclNwZWVkICcgK1xuICAgICAgICAnc2xpbmdMb2FkQXNzaXN0YW50U2hvd24gc29sZGllck1hZ2F6aW5lcyBzb21lQW1tbyBzb3J0IHNvdW5kVm9sdW1lIHNwYXduIHNwZWFrZXIgc3BlZWQgc3BlZWRNb2RlICcgK1xuICAgICAgICAnc3BsaXRTdHJpbmcgc3FydCBzcXVhZFBhcmFtcyBzdGFuY2Ugc3RhcnRMb2FkaW5nU2NyZWVuIHN0ZXAgc3RvcCBzdG9wRW5naW5lUlREIHN0b3BwZWQgc3RyICcgK1xuICAgICAgICAnc3VuT3JNb29uIHN1cHBvcnRJbmZvIHN1cHByZXNzRm9yIHN1cmZhY2VJc1dhdGVyIHN1cmZhY2VOb3JtYWwgc3VyZmFjZVR5cGUgc3dpbUluRGVwdGggJyArXG4gICAgICAgICdzd2l0Y2hhYmxlVW5pdHMgc3dpdGNoQWN0aW9uIHN3aXRjaENhbWVyYSBzd2l0Y2hHZXN0dXJlIHN3aXRjaExpZ2h0IHN3aXRjaE1vdmUgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZWRPYmplY3RzIHN5bmNocm9uaXplZFRyaWdnZXJzIHN5bmNocm9uaXplZFdheXBvaW50cyBzeW5jaHJvbml6ZU9iamVjdHNBZGQgJyArXG4gICAgICAgICdzeW5jaHJvbml6ZU9iamVjdHNSZW1vdmUgc3luY2hyb25pemVUcmlnZ2VyIHN5bmNocm9uaXplV2F5cG9pbnQgc3lzdGVtQ2hhdCBzeXN0ZW1PZlVuaXRzIHRhbiAnICtcbiAgICAgICAgJ3RhcmdldEtub3dsZWRnZSB0YXJnZXRzIHRhcmdldHNBZ2dyZWdhdGUgdGFyZ2V0c1F1ZXJ5IHRhc2tBbHdheXNWaXNpYmxlIHRhc2tDaGlsZHJlbiAnICtcbiAgICAgICAgJ3Rhc2tDb21wbGV0ZWQgdGFza0N1c3RvbURhdGEgdGFza0Rlc2NyaXB0aW9uIHRhc2tEZXN0aW5hdGlvbiB0YXNrSGludCB0YXNrTWFya2VyT2Zmc2V0IHRhc2tQYXJlbnQgJyArXG4gICAgICAgICd0YXNrUmVzdWx0IHRhc2tTdGF0ZSB0YXNrVHlwZSB0ZWFtTWVtYmVyIHRlYW1OYW1lIHRlYW1zIHRlYW1Td2l0Y2ggdGVhbVN3aXRjaEVuYWJsZWQgdGVhbVR5cGUgJyArXG4gICAgICAgICd0ZXJtaW5hdGUgdGVycmFpbkludGVyc2VjdCB0ZXJyYWluSW50ZXJzZWN0QVNMIHRlcnJhaW5JbnRlcnNlY3RBdEFTTCB0ZXh0IHRleHRMb2cgdGV4dExvZ0Zvcm1hdCAnICtcbiAgICAgICAgJ3RnIHRpbWUgdGltZU11bHRpcGxpZXIgdGl0bGVDdXQgdGl0bGVGYWRlT3V0IHRpdGxlT2JqIHRpdGxlUnNjIHRpdGxlVGV4dCB0b0FycmF5IHRvRml4ZWQgdG9Mb3dlciAnICtcbiAgICAgICAgJ3RvU3RyaW5nIHRvVXBwZXIgdHJpZ2dlckFjdGl2YXRlZCB0cmlnZ2VyQWN0aXZhdGlvbiB0cmlnZ2VyQXJlYSB0cmlnZ2VyQXR0YWNoZWRWZWhpY2xlICcgK1xuICAgICAgICAndHJpZ2dlckF0dGFjaE9iamVjdCB0cmlnZ2VyQXR0YWNoVmVoaWNsZSB0cmlnZ2VyRHluYW1pY1NpbXVsYXRpb24gdHJpZ2dlclN0YXRlbWVudHMgdHJpZ2dlclRleHQgJyArXG4gICAgICAgICd0cmlnZ2VyVGltZW91dCB0cmlnZ2VyVGltZW91dEN1cnJlbnQgdHJpZ2dlclR5cGUgdHVycmV0TG9jYWwgdHVycmV0T3duZXIgdHVycmV0VW5pdCB0dkFkZCB0dkNsZWFyICcgK1xuICAgICAgICAndHZDb2xsYXBzZSB0dkNvbGxhcHNlQWxsIHR2Q291bnQgdHZDdXJTZWwgdHZEYXRhIHR2RGVsZXRlIHR2RXhwYW5kIHR2RXhwYW5kQWxsIHR2UGljdHVyZSAnICtcbiAgICAgICAgJ3R2U2V0Q29sb3IgdHZTZXRDdXJTZWwgdHZTZXREYXRhIHR2U2V0UGljdHVyZSB0dlNldFBpY3R1cmVDb2xvciB0dlNldFBpY3R1cmVDb2xvckRpc2FibGVkICcgK1xuICAgICAgICAndHZTZXRQaWN0dXJlQ29sb3JTZWxlY3RlZCB0dlNldFBpY3R1cmVSaWdodCB0dlNldFBpY3R1cmVSaWdodENvbG9yIHR2U2V0UGljdHVyZVJpZ2h0Q29sb3JEaXNhYmxlZCAnICtcbiAgICAgICAgJ3R2U2V0UGljdHVyZVJpZ2h0Q29sb3JTZWxlY3RlZCB0dlNldFRleHQgdHZTZXRUb29sdGlwIHR2U2V0VmFsdWUgdHZTb3J0IHR2U29ydEJ5VmFsdWUgdHZUZXh0ICcgK1xuICAgICAgICAndHZUb29sdGlwIHR2VmFsdWUgdHlwZSB0eXBlTmFtZSB0eXBlT2YgVUFWQ29udHJvbCB1aU5hbWVzcGFjZSB1aVNsZWVwIHVuYXNzaWduQ3VyYXRvciAnICtcbiAgICAgICAgJ3VuYXNzaWduSXRlbSB1bmFzc2lnblRlYW0gdW5hc3NpZ25WZWhpY2xlIHVuZGVyd2F0ZXIgdW5pZm9ybSB1bmlmb3JtQ29udGFpbmVyIHVuaWZvcm1JdGVtcyAnICtcbiAgICAgICAgJ3VuaWZvcm1NYWdhemluZXMgdW5pdEFkZG9ucyB1bml0QWltUG9zaXRpb24gdW5pdEFpbVBvc2l0aW9uVmlzdWFsIHVuaXRCYWNrcGFjayB1bml0SXNVQVYgdW5pdFBvcyAnICtcbiAgICAgICAgJ3VuaXRSZWFkeSB1bml0UmVjb2lsQ29lZmZpY2llbnQgdW5pdHMgdW5pdHNCZWxvd0hlaWdodCB1bmxpbmtJdGVtIHVubG9ja0FjaGlldmVtZW50ICcgK1xuICAgICAgICAndW5yZWdpc3RlclRhc2sgdXBkYXRlRHJhd0ljb24gdXBkYXRlTWVudUl0ZW0gdXBkYXRlT2JqZWN0VHJlZSB1c2VBSVN0ZWVyaW5nQ29tcG9uZW50ICcgK1xuICAgICAgICAndXNlQXVkaW9UaW1lRm9yTW92ZXMgdXNlcklucHV0RGlzYWJsZWQgdmVjdG9yQWRkIHZlY3RvckNvcyB2ZWN0b3JDcm9zc1Byb2R1Y3QgdmVjdG9yRGlmZiAnICtcbiAgICAgICAgJ3ZlY3RvckRpciB2ZWN0b3JEaXJWaXN1YWwgdmVjdG9yRGlzdGFuY2UgdmVjdG9yRGlzdGFuY2VTcXIgdmVjdG9yRG90UHJvZHVjdCB2ZWN0b3JGcm9tVG8gJyArXG4gICAgICAgICd2ZWN0b3JNYWduaXR1ZGUgdmVjdG9yTWFnbml0dWRlU3FyIHZlY3Rvck1vZGVsVG9Xb3JsZCB2ZWN0b3JNb2RlbFRvV29ybGRWaXN1YWwgdmVjdG9yTXVsdGlwbHkgJyArXG4gICAgICAgICd2ZWN0b3JOb3JtYWxpemVkIHZlY3RvclVwIHZlY3RvclVwVmlzdWFsIHZlY3RvcldvcmxkVG9Nb2RlbCB2ZWN0b3JXb3JsZFRvTW9kZWxWaXN1YWwgdmVoaWNsZSAnICtcbiAgICAgICAgJ3ZlaGljbGVDYXJnb0VuYWJsZWQgdmVoaWNsZUNoYXQgdmVoaWNsZVJhZGlvIHZlaGljbGVSZWNlaXZlUmVtb3RlVGFyZ2V0cyB2ZWhpY2xlUmVwb3J0T3duUG9zaXRpb24gJyArXG4gICAgICAgICd2ZWhpY2xlUmVwb3J0UmVtb3RlVGFyZ2V0cyB2ZWhpY2xlcyB2ZWhpY2xlVmFyTmFtZSB2ZWxvY2l0eSB2ZWxvY2l0eU1vZGVsU3BhY2UgdmVyaWZ5U2lnbmF0dXJlICcgK1xuICAgICAgICAndmVzdCB2ZXN0Q29udGFpbmVyIHZlc3RJdGVtcyB2ZXN0TWFnYXppbmVzIHZpZXdEaXN0YW5jZSB2aXNpYmxlQ29tcGFzcyB2aXNpYmxlR1BTIHZpc2libGVNYXAgJyArXG4gICAgICAgICd2aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQVNMIHZpc2libGVTY29yZXRhYmxlIHZpc2libGVXYXRjaCB3YXZlcyB3YXlwb2ludEF0dGFjaGVkT2JqZWN0ICcgK1xuICAgICAgICAnd2F5cG9pbnRBdHRhY2hlZFZlaGljbGUgd2F5cG9pbnRBdHRhY2hPYmplY3Qgd2F5cG9pbnRBdHRhY2hWZWhpY2xlIHdheXBvaW50QmVoYXZpb3VyICcgK1xuICAgICAgICAnd2F5cG9pbnRDb21iYXRNb2RlIHdheXBvaW50Q29tcGxldGlvblJhZGl1cyB3YXlwb2ludERlc2NyaXB0aW9uIHdheXBvaW50Rm9yY2VCZWhhdmlvdXIgJyArXG4gICAgICAgICd3YXlwb2ludEZvcm1hdGlvbiB3YXlwb2ludEhvdXNlUG9zaXRpb24gd2F5cG9pbnRMb2l0ZXJSYWRpdXMgd2F5cG9pbnRMb2l0ZXJUeXBlIHdheXBvaW50TmFtZSAnICtcbiAgICAgICAgJ3dheXBvaW50UG9zaXRpb24gd2F5cG9pbnRzIHdheXBvaW50U2NyaXB0IHdheXBvaW50c0VuYWJsZWRVQVYgd2F5cG9pbnRTaG93IHdheXBvaW50U3BlZWQgJyArXG4gICAgICAgICd3YXlwb2ludFN0YXRlbWVudHMgd2F5cG9pbnRUaW1lb3V0IHdheXBvaW50VGltZW91dEN1cnJlbnQgd2F5cG9pbnRUeXBlIHdheXBvaW50VmlzaWJsZSAnICtcbiAgICAgICAgJ3dlYXBvbkFjY2Vzc29yaWVzIHdlYXBvbkFjY2Vzc29yaWVzQ2FyZ28gd2VhcG9uQ2FyZ28gd2VhcG9uRGlyZWN0aW9uIHdlYXBvbkluZXJ0aWEgd2VhcG9uTG93ZXJlZCAnICtcbiAgICAgICAgJ3dlYXBvbnMgd2VhcG9uc0l0ZW1zIHdlYXBvbnNJdGVtc0NhcmdvIHdlYXBvblN0YXRlIHdlYXBvbnNUdXJyZXQgd2VpZ2h0UlREIFdGU2lkZVRleHQgd2luZCAnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2JsdWZvciBjaXZpbGlhbiBjb25maWdOdWxsIGNvbnRyb2xOdWxsIGRpc3BsYXlOdWxsIGVhc3QgZW5kbCBmYWxzZSBncnBOdWxsIGluZGVwZW5kZW50IGxpbmVCcmVhayAnICtcbiAgICAgICAgJ2xvY2F0aW9uTnVsbCBuaWwgb2JqTnVsbCBvcGZvciBwaSByZXNpc3RhbmNlIHNjcmlwdE51bGwgc2lkZUFtYmllbnRMaWZlIHNpZGVFbXB0eSBzaWRlTG9naWMgJyArXG4gICAgICAgICdzaWRlVW5rbm93biB0YXNrTnVsbCB0ZWFtTWVtYmVyTnVsbCB0cnVlIHdlc3QnLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFNUUklOR1MsXG4gICAgICBQUkVQUk9DRVNTT1JcbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jfF5cXCQgL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpO1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1s8Pnt9Kl0vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ2JlZ2luIGVuZCBzdGFydCBjb21taXQgcm9sbGJhY2sgc2F2ZXBvaW50IGxvY2sgYWx0ZXIgY3JlYXRlIGRyb3AgcmVuYW1lIGNhbGwgJyArXG4gICAgICAgICAgJ2RlbGV0ZSBkbyBoYW5kbGVyIGluc2VydCBsb2FkIHJlcGxhY2Ugc2VsZWN0IHRydW5jYXRlIHVwZGF0ZSBzZXQgc2hvdyBwcmFnbWEgZ3JhbnQgJyArXG4gICAgICAgICAgJ21lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlICcgK1xuICAgICAgICAgICd1bmxvY2sgcHVyZ2UgcmVzZXQgY2hhbmdlIHN0b3AgYW5hbHl6ZSBjYWNoZSBmbHVzaCBvcHRpbWl6ZSByZXBhaXIga2lsbCAnICtcbiAgICAgICAgICAnaW5zdGFsbCB1bmluc3RhbGwgY2hlY2tzdW0gcmVzdG9yZSBjaGVjayBiYWNrdXAgcmV2b2tlIGNvbW1lbnQgdmFsdWVzIHdpdGgnLFxuICAgICAgICBlbmQ6IC87LywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGxleGVtZXM6IC9bXFx3XFwuXSsvLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgICAnYXMgYWJvcnQgYWJzIGFic29sdXRlIGFjYyBhY2NlIGFjY2VwIGFjY2VwdCBhY2Nlc3MgYWNjZXNzZWQgYWNjZXNzaWJsZSBhY2NvdW50IGFjb3MgYWN0aW9uIGFjdGl2YXRlIGFkZCAnICtcbiAgICAgICAgICAgICdhZGR0aW1lIGFkbWluIGFkbWluaXN0ZXIgYWR2YW5jZWQgYWR2aXNlIGFlc19kZWNyeXB0IGFlc19lbmNyeXB0IGFmdGVyIGFnZW50IGFnZ3JlZ2F0ZSBhbGkgYWxpYSBhbGlhcyAnICtcbiAgICAgICAgICAgICdhbGwgYWxsb2NhdGUgYWxsb3cgYWx0ZXIgYWx3YXlzIGFuYWx5emUgYW5jaWxsYXJ5IGFuZCBhbnRpIGFueSBhbnlkYXRhIGFueWRhdGFzZXQgYW55c2NoZW1hIGFueXR5cGUgYXBwbHkgJyArXG4gICAgICAgICAgICAnYXJjaGl2ZSBhcmNoaXZlZCBhcmNoaXZlbG9nIGFyZSBhcyBhc2MgYXNjaWkgYXNpbiBhc3NlbWJseSBhc3NlcnRpb24gYXNzb2NpYXRlIGFzeW5jaHJvbm91cyBhdCBhdGFuICcgK1xuICAgICAgICAgICAgJ2F0bjIgYXR0ciBhdHRyaSBhdHRyaWIgYXR0cmlidSBhdHRyaWJ1dCBhdHRyaWJ1dGUgYXR0cmlidXRlcyBhdWRpdCBhdXRoZW50aWNhdGVkIGF1dGhlbnRpY2F0aW9uIGF1dGhpZCAnICtcbiAgICAgICAgICAgICdhdXRob3JzIGF1dG8gYXV0b2FsbG9jYXRlIGF1dG9kYmxpbmsgYXV0b2V4dGVuZCBhdXRvbWF0aWMgYXZhaWxhYmlsaXR5IGF2ZyBiYWNrdXAgYmFkZmlsZSBiYXNpY2ZpbGUgJyArXG4gICAgICAgICAgICAnYmVmb3JlIGJlZ2luIGJlZ2lubmluZyBiZW5jaG1hcmsgYmV0d2VlbiBiZmlsZSBiZmlsZV9iYXNlIGJpZyBiaWdmaWxlIGJpbiBiaW5hcnlfZG91YmxlIGJpbmFyeV9mbG9hdCAnICtcbiAgICAgICAgICAgICdiaW5sb2cgYml0X2FuZCBiaXRfY291bnQgYml0X2xlbmd0aCBiaXRfb3IgYml0X3hvciBiaXRtYXAgYmxvYl9iYXNlIGJsb2NrIGJsb2Nrc2l6ZSBib2R5IGJvdGggYm91bmQgJyArXG4gICAgICAgICAgICAnYnVja2V0IGJ1ZmZlcl9jYWNoZSBidWZmZXJfcG9vbCBidWlsZCBidWxrIGJ5IGJ5dGUgYnl0ZW9yZGVybWFyayBieXRlcyBjYWNoZSBjYWNoaW5nIGNhbGwgY2FsbGluZyBjYW5jZWwgJyArXG4gICAgICAgICAgICAnY2FwYWNpdHkgY2FzY2FkZSBjYXNjYWRlZCBjYXNlIGNhc3QgY2F0YWxvZyBjYXRlZ29yeSBjZWlsIGNlaWxpbmcgY2hhaW4gY2hhbmdlIGNoYW5nZWQgY2hhcl9iYXNlICcgK1xuICAgICAgICAgICAgJ2NoYXJfbGVuZ3RoIGNoYXJhY3Rlcl9sZW5ndGggY2hhcmFjdGVycyBjaGFyYWN0ZXJzZXQgY2hhcmluZGV4IGNoYXJzZXQgY2hhcnNldGZvcm0gY2hhcnNldGlkIGNoZWNrICcgK1xuICAgICAgICAgICAgJ2NoZWNrc3VtIGNoZWNrc3VtX2FnZyBjaGlsZCBjaG9vc2UgY2hyIGNodW5rIGNsYXNzIGNsZWFudXAgY2xlYXIgY2xpZW50IGNsb2IgY2xvYl9iYXNlIGNsb25lIGNsb3NlICcgK1xuICAgICAgICAgICAgJ2NsdXN0ZXJfaWQgY2x1c3Rlcl9wcm9iYWJpbGl0eSBjbHVzdGVyX3NldCBjbHVzdGVyaW5nIGNvYWxlc2NlIGNvZXJjaWJpbGl0eSBjb2wgY29sbGF0ZSBjb2xsYXRpb24gJyArXG4gICAgICAgICAgICAnY29sbGVjdCBjb2x1IGNvbHVtIGNvbHVtbiBjb2x1bW5fdmFsdWUgY29sdW1ucyBjb2x1bW5zX3VwZGF0ZWQgY29tbWVudCBjb21taXQgY29tcGFjdCBjb21wYXRpYmlsaXR5ICcgK1xuICAgICAgICAgICAgJ2NvbXBpbGVkIGNvbXBsZXRlIGNvbXBvc2l0ZV9saW1pdCBjb21wb3VuZCBjb21wcmVzcyBjb21wdXRlIGNvbmNhdCBjb25jYXRfd3MgY29uY3VycmVudCBjb25maXJtIGNvbm4gJyArXG4gICAgICAgICAgICAnY29ubmVjIGNvbm5lY3QgY29ubmVjdF9ieV9pc2N5Y2xlIGNvbm5lY3RfYnlfaXNsZWFmIGNvbm5lY3RfYnlfcm9vdCBjb25uZWN0X3RpbWUgY29ubmVjdGlvbiAnICtcbiAgICAgICAgICAgICdjb25zaWRlciBjb25zaXN0ZW50IGNvbnN0YW50IGNvbnN0cmFpbnQgY29uc3RyYWludHMgY29uc3RydWN0b3IgY29udGFpbmVyIGNvbnRlbnQgY29udGVudHMgY29udGV4dCAnICtcbiAgICAgICAgICAgICdjb250cmlidXRvcnMgY29udHJvbGZpbGUgY29udiBjb252ZXJ0IGNvbnZlcnRfdHogY29yciBjb3JyX2sgY29ycl9zIGNvcnJlc3BvbmRpbmcgY29ycnVwdGlvbiBjb3MgY29zdCAnICtcbiAgICAgICAgICAgICdjb3VudCBjb3VudF9iaWcgY291bnRlZCBjb3Zhcl9wb3AgY292YXJfc2FtcCBjcHVfcGVyX2NhbGwgY3B1X3Blcl9zZXNzaW9uIGNyYzMyIGNyZWF0ZSBjcmVhdGlvbiAnICtcbiAgICAgICAgICAgICdjcml0aWNhbCBjcm9zcyBjdWJlIGN1bWVfZGlzdCBjdXJkYXRlIGN1cnJlbnQgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgJyArXG4gICAgICAgICAgICAnY3Vyc29yIGN1cnRpbWUgY3VzdG9tZGF0dW0gY3ljbGUgZGF0YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF0YWZpbGUgZGF0YWZpbGVzIGRhdGFsZW5ndGggZGF0ZV9hZGQgJyArXG4gICAgICAgICAgICAnZGF0ZV9jYWNoZSBkYXRlX2Zvcm1hdCBkYXRlX3N1YiBkYXRlYWRkIGRhdGVkaWZmIGRhdGVmcm9tcGFydHMgZGF0ZW5hbWUgZGF0ZXBhcnQgZGF0ZXRpbWUyZnJvbXBhcnRzICcgK1xuICAgICAgICAgICAgJ2RheSBkYXlfdG9fc2Vjb25kIGRheW5hbWUgZGF5b2Ztb250aCBkYXlvZndlZWsgZGF5b2Z5ZWFyIGRheXMgZGJfcm9sZV9jaGFuZ2UgZGJ0aW1lem9uZSBkZGwgZGVhbGxvY2F0ZSAnICtcbiAgICAgICAgICAgICdkZWNsYXJlIGRlY29kZSBkZWNvbXBvc2UgZGVjcmVtZW50IGRlY3J5cHQgZGVkdXBsaWNhdGUgZGVmIGRlZmEgZGVmYXUgZGVmYXVsIGRlZmF1bHQgZGVmYXVsdHMgJyArXG4gICAgICAgICAgICAnZGVmZXJyZWQgZGVmaSBkZWZpbiBkZWZpbmUgZGVncmVlcyBkZWxheWVkIGRlbGVnYXRlIGRlbGV0ZSBkZWxldGVfYWxsIGRlbGltaXRlZCBkZW1hbmQgZGVuc2VfcmFuayAnICtcbiAgICAgICAgICAgICdkZXB0aCBkZXF1ZXVlIGRlc19kZWNyeXB0IGRlc19lbmNyeXB0IGRlc19rZXlfZmlsZSBkZXNjIGRlc2NyIGRlc2NyaSBkZXNjcmliIGRlc2NyaWJlIGRlc2NyaXB0b3IgJyArXG4gICAgICAgICAgICAnZGV0ZXJtaW5pc3RpYyBkaWFnbm9zdGljcyBkaWZmZXJlbmNlIGRpbWVuc2lvbiBkaXJlY3RfbG9hZCBkaXJlY3RvcnkgZGlzYWJsZSBkaXNhYmxlX2FsbCAnICtcbiAgICAgICAgICAgICdkaXNhbGxvdyBkaXNhc3NvY2lhdGUgZGlzY2FyZGZpbGUgZGlzY29ubmVjdCBkaXNrZ3JvdXAgZGlzdGluY3QgZGlzdGluY3Ryb3cgZGlzdHJpYnV0ZSBkaXN0cmlidXRlZCBkaXYgJyArXG4gICAgICAgICAgICAnZG8gZG9jdW1lbnQgZG9tYWluIGRvdG5ldCBkb3VibGUgZG93bmdyYWRlIGRyb3AgZHVtcGZpbGUgZHVwbGljYXRlIGR1cmF0aW9uIGVhY2ggZWRpdGlvbiBlZGl0aW9uYWJsZSAnICtcbiAgICAgICAgICAgICdlZGl0aW9ucyBlbGVtZW50IGVsbGlwc2lzIGVsc2UgZWxzaWYgZWx0IGVtcHR5IGVuYWJsZSBlbmFibGVfYWxsIGVuY2xvc2VkIGVuY29kZSBlbmNvZGluZyBlbmNyeXB0ICcgK1xuICAgICAgICAgICAgJ2VuZCBlbmQtZXhlYyBlbmRpYW4gZW5mb3JjZWQgZW5naW5lIGVuZ2luZXMgZW5xdWV1ZSBlbnRlcnByaXNlIGVudGl0eWVzY2FwaW5nIGVvbW9udGggZXJyb3IgZXJyb3JzICcgK1xuICAgICAgICAgICAgJ2VzY2FwZWQgZXZhbG5hbWUgZXZhbHVhdGUgZXZlbnQgZXZlbnRkYXRhIGV2ZW50cyBleGNlcHQgZXhjZXB0aW9uIGV4Y2VwdGlvbnMgZXhjaGFuZ2UgZXhjbHVkZSBleGNsdWRpbmcgJyArXG4gICAgICAgICAgICAnZXhlY3UgZXhlY3V0IGV4ZWN1dGUgZXhlbXB0IGV4aXN0cyBleGl0IGV4cCBleHBpcmUgZXhwbGFpbiBleHBsb2RlIGV4cG9ydCBleHBvcnRfc2V0IGV4dGVuZGVkIGV4dGVudCBleHRlcm5hbCAnICtcbiAgICAgICAgICAgICdleHRlcm5hbF8xIGV4dGVybmFsXzIgZXh0ZXJuYWxseSBleHRyYWN0IGZhaWxlZCBmYWlsZWRfbG9naW5fYXR0ZW1wdHMgZmFpbG92ZXIgZmFpbHVyZSBmYXIgZmFzdCAnICtcbiAgICAgICAgICAgICdmZWF0dXJlX3NldCBmZWF0dXJlX3ZhbHVlIGZldGNoIGZpZWxkIGZpZWxkcyBmaWxlIGZpbGVfbmFtZV9jb252ZXJ0IGZpbGVzeXN0ZW1fbGlrZV9sb2dnaW5nIGZpbmFsICcgK1xuICAgICAgICAgICAgJ2ZpbmlzaCBmaXJzdCBmaXJzdF92YWx1ZSBmaXhlZCBmbGFzaF9jYWNoZSBmbGFzaGJhY2sgZmxvb3IgZmx1c2ggZm9sbG93aW5nIGZvbGxvd3MgZm9yIGZvcmFsbCBmb3JjZSBmb3JlaWduICcgK1xuICAgICAgICAgICAgJ2Zvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyAnICtcbiAgICAgICAgICAgICdmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lICcgK1xuICAgICAgICAgICAgJ2dsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgJyArXG4gICAgICAgICAgICAnZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4ICcgK1xuICAgICAgICAgICAgJ2hpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBob3VycyBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgJyArXG4gICAgICAgICAgICAnaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCAnICtcbiAgICAgICAgICAgICdpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgJyArXG4gICAgICAgICAgICAnaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSAnICtcbiAgICAgICAgICAgICdpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgJyArXG4gICAgICAgICAgICAnaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzICcgK1xuICAgICAgICAgICAgJ2tlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxhdGVyYWwgbGF4IGxjYXNlICcgK1xuICAgICAgICAgICAgJ2xlYWQgbGVhZGluZyBsZWFzdCBsZWF2ZXMgbGVmdCBsZW4gbGVuZ2h0IGxlbmd0aCBsZXNzIGxldmVsIGxldmVscyBsaWJyYXJ5IGxpa2UgbGlrZTIgbGlrZTQgbGlrZWMgbGltaXQgJyArXG4gICAgICAgICAgICAnbGluZXMgbGluayBsaXN0IGxpc3RhZ2cgbGl0dGxlIGxuIGxvYWQgbG9hZF9maWxlIGxvYiBsb2JzIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFtcCBsb2NhdGUgJyArXG4gICAgICAgICAgICAnbG9jYXRvciBsb2NrIGxvY2tlZCBsb2cgbG9nMTAgbG9nMiBsb2dmaWxlIGxvZ2ZpbGVzIGxvZ2dpbmcgbG9naWNhbCBsb2dpY2FsX3JlYWRzX3Blcl9jYWxsICcgK1xuICAgICAgICAgICAgJ2xvZ29mZiBsb2dvbiBsb2dzIGxvbmcgbG9vcCBsb3cgbG93X3ByaW9yaXR5IGxvd2VyIGxwYWQgbHJ0cmltIGx0cmltIG1haW4gbWFrZV9zZXQgbWFrZWRhdGUgbWFrZXRpbWUgJyArXG4gICAgICAgICAgICAnbWFuYWdlZCBtYW5hZ2VtZW50IG1hbnVhbCBtYXAgbWFwcGluZyBtYXNrIG1hc3RlciBtYXN0ZXJfcG9zX3dhaXQgbWF0Y2ggbWF0Y2hlZCBtYXRlcmlhbGl6ZWQgbWF4ICcgK1xuICAgICAgICAgICAgJ21heGV4dGVudHMgbWF4aW1pemUgbWF4aW5zdGFuY2VzIG1heGxlbiBtYXhsb2dmaWxlcyBtYXhsb2doaXN0b3J5IG1heGxvZ21lbWJlcnMgbWF4c2l6ZSBtYXh0cmFucyAnICtcbiAgICAgICAgICAgICdtZDUgbWVhc3VyZXMgbWVkaWFuIG1lZGl1bSBtZW1iZXIgbWVtY29tcHJlc3MgbWVtb3J5IG1lcmdlIG1pY3Jvc2Vjb25kIG1pZCBtaWdyYXRpb24gbWluIG1pbmV4dGVudHMgJyArXG4gICAgICAgICAgICAnbWluaW11bSBtaW5pbmcgbWludXMgbWludXRlIG1pbnV0ZXMgbWludmFsdWUgbWlzc2luZyBtb2QgbW9kZSBtb2RlbCBtb2RpZmljYXRpb24gbW9kaWZ5IG1vZHVsZSBtb25pdG9yaW5nIG1vbnRoICcgK1xuICAgICAgICAgICAgJ21vbnRocyBtb3VudCBtb3ZlIG1vdmVtZW50IG11bHRpc2V0IG11dGV4IG5hbWUgbmFtZV9jb25zdCBuYW1lcyBuYW4gbmF0aW9uYWwgbmF0aXZlIG5hdHVyYWwgbmF2IG5jaGFyICcgK1xuICAgICAgICAgICAgJ25jbG9iIG5lc3RlZCBuZXZlciBuZXcgbmV3bGluZSBuZXh0IG5leHR2YWwgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG5vYXJjaGl2ZWxvZyBub2F1ZGl0IG5vYmFkZmlsZSAnICtcbiAgICAgICAgICAgICdub2NoZWNrIG5vY29tcHJlc3Mgbm9jb3B5IG5vY3ljbGUgbm9kZWxheSBub2Rpc2NhcmRmaWxlIG5vZW50aXR5ZXNjYXBpbmcgbm9ndWFyYW50ZWUgbm9rZWVwIG5vbG9nZmlsZSAnICtcbiAgICAgICAgICAgICdub21hcHBpbmcgbm9tYXh2YWx1ZSBub21pbmltaXplIG5vbWludmFsdWUgbm9tb25pdG9yaW5nIG5vbmUgbm9uZWRpdGlvbmFibGUgbm9uc2NoZW1hIG5vb3JkZXIgJyArXG4gICAgICAgICAgICAnbm9wciBub3BybyBub3Byb20gbm9wcm9tcCBub3Byb21wdCBub3JlbHkgbm9yZXNldGxvZ3Mgbm9yZXZlcnNlIG5vcm1hbCBub3Jvd2RlcGVuZGVuY2llcyBub3NjaGVtYWNoZWNrICcgK1xuICAgICAgICAgICAgJ25vc3dpdGNoIG5vdCBub3RoaW5nIG5vdGljZSBub3RudWxsIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSAnICtcbiAgICAgICAgICAgICdudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciAnICtcbiAgICAgICAgICAgICdvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgJyArXG4gICAgICAgICAgICAnb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSAnICtcbiAgICAgICAgICAgICdvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgJyArXG4gICAgICAgICAgICAnb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSAnICtcbiAgICAgICAgICAgICdwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgJyArXG4gICAgICAgICAgICAncGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4ICcgK1xuICAgICAgICAgICAgJ3BjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyAnICtcbiAgICAgICAgICAgICdwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiAnICtcbiAgICAgICAgICAgICdwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiAnICtcbiAgICAgICAgICAgICdwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlICcgK1xuICAgICAgICAgICAgJ3ByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCAnICtcbiAgICAgICAgICAgICdwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgJyArXG4gICAgICAgICAgICAncXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgJyArXG4gICAgICAgICAgICAncmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCAnICtcbiAgICAgICAgICAgICdyZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5ICcgK1xuICAgICAgICAgICAgJ3JlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lICcgK1xuICAgICAgICAgICAgJ3JlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgJyArXG4gICAgICAgICAgICAncmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSAnICtcbiAgICAgICAgICAgICdyaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzICcgK1xuICAgICAgICAgICAgJ3J0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCAnICtcbiAgICAgICAgICAgICdzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2Vjb25kcyBzZWN0aW9uIHNlY3VyZWZpbGUgc2VjdXJpdHkgc2VlZCBzZWdtZW50IHNlbGVjdCAnICtcbiAgICAgICAgICAgICdzZWxmIHNlbWkgc2VxdWVuY2Ugc2VxdWVudGlhbCBzZXJpYWxpemFibGUgc2VydmVyIHNlcnZlcmVycm9yIHNlc3Npb24gc2Vzc2lvbl91c2VyIHNlc3Npb25zX3Blcl91c2VyIHNldCAnICtcbiAgICAgICAgICAgICdzZXRzIHNldHRpbmdzIHNoYSBzaGExIHNoYTIgc2hhcmUgc2hhcmVkIHNoYXJlZF9wb29sIHNob3J0IHNob3cgc2hyaW5rIHNodXRkb3duIHNpX2F2ZXJhZ2Vjb2xvciAnICtcbiAgICAgICAgICAgICdzaV9jb2xvcmhpc3RvZ3JhbSBzaV9mZWF0dXJlbGlzdCBzaV9wb3NpdGlvbmFsY29sb3Igc2lfc3RpbGxpbWFnZSBzaV90ZXh0dXJlIHNpYmxpbmdzIHNpZCBzaWduIHNpbiAnICtcbiAgICAgICAgICAgICdzaXplIHNpemVfdCBzaXplcyBza2lwIHNsYXZlIHNsZWVwIHNtYWxsZGF0ZXRpbWVmcm9tcGFydHMgc21hbGxmaWxlIHNuYXBzaG90IHNvbWUgc29uYW1lIHNvcnQgc291bmRleCAnICtcbiAgICAgICAgICAgICdzb3VyY2Ugc3BhY2Ugc3BhcnNlIHNwZmlsZSBzcGxpdCBzcWwgc3FsX2JpZ19yZXN1bHQgc3FsX2J1ZmZlcl9yZXN1bHQgc3FsX2NhY2hlIHNxbF9jYWxjX2ZvdW5kX3Jvd3MgJyArXG4gICAgICAgICAgICAnc3FsX3NtYWxsX3Jlc3VsdCBzcWxfdmFyaWFudF9wcm9wZXJ0eSBzcWxjb2RlIHNxbGRhdGEgc3FsZXJyb3Igc3FsbmFtZSBzcWxzdGF0ZSBzcXJ0IHNxdWFyZSBzdGFuZGFsb25lICcgK1xuICAgICAgICAgICAgJ3N0YW5kYnkgc3RhcnQgc3RhcnRpbmcgc3RhcnR1cCBzdGF0ZW1lbnQgc3RhdGljIHN0YXRpc3RpY3Mgc3RhdHNfYmlub21pYWxfdGVzdCBzdGF0c19jcm9zc3RhYiAnICtcbiAgICAgICAgICAgICdzdGF0c19rc190ZXN0IHN0YXRzX21vZGUgc3RhdHNfbXdfdGVzdCBzdGF0c19vbmVfd2F5X2Fub3ZhIHN0YXRzX3RfdGVzdF8gc3RhdHNfdF90ZXN0X2luZGVwICcgK1xuICAgICAgICAgICAgJ3N0YXRzX3RfdGVzdF9vbmUgc3RhdHNfdF90ZXN0X3BhaXJlZCBzdGF0c193c3JfdGVzdCBzdGF0dXMgc3RkIHN0ZGRldiBzdGRkZXZfcG9wIHN0ZGRldl9zYW1wIHN0ZGV2ICcgK1xuICAgICAgICAgICAgJ3N0b3Agc3RvcmFnZSBzdG9yZSBzdG9yZWQgc3RyIHN0cl90b19kYXRlIHN0cmFpZ2h0X2pvaW4gc3RyY21wIHN0cmljdCBzdHJpbmcgc3RydWN0IHN0dWZmIHN0eWxlIHN1YmRhdGUgJyArXG4gICAgICAgICAgICAnc3VicGFydGl0aW9uIHN1YnBhcnRpdGlvbnMgc3Vic3RpdHV0YWJsZSBzdWJzdHIgc3Vic3RyaW5nIHN1YnRpbWUgc3VidHJpbmdfaW5kZXggc3VidHlwZSBzdWNjZXNzIHN1bSAnICtcbiAgICAgICAgICAgICdzdXNwZW5kIHN3aXRjaCBzd2l0Y2hvZmZzZXQgc3dpdGNob3ZlciBzeW5jIHN5bmNocm9ub3VzIHN5bm9ueW0gc3lzIHN5c194bWxhZ2cgc3lzYXNtIHN5c2F1eCBzeXNkYXRlICcgK1xuICAgICAgICAgICAgJ3N5c2RhdGV0aW1lb2Zmc2V0IHN5c2RiYSBzeXNvcGVyIHN5c3RlbSBzeXN0ZW1fdXNlciBzeXN1dGNkYXRldGltZSB0YWJsZSB0YWJsZXMgdGFibGVzcGFjZSB0YWJsZXNhbXBsZSB0YW4gdGRvICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRlIHRlbXBvcmFyeSB0ZXJtaW5hdGVkIHRlcnRpYXJ5X3dlaWdodHMgdGVzdCB0aGFuIHRoZW4gdGhyZWFkIHRocm91Z2ggdGllciB0aWVzIHRpbWUgdGltZV9mb3JtYXQgJyArXG4gICAgICAgICAgICAndGltZV96b25lIHRpbWVkaWZmIHRpbWVmcm9tcGFydHMgdGltZW91dCB0aW1lc3RhbXAgdGltZXN0YW1wYWRkIHRpbWVzdGFtcGRpZmYgdGltZXpvbmVfYWJiciAnICtcbiAgICAgICAgICAgICd0aW1lem9uZV9taW51dGUgdGltZXpvbmVfcmVnaW9uIHRvIHRvX2Jhc2U2NCB0b19kYXRlIHRvX2RheXMgdG9fc2Vjb25kcyB0b2RhdGV0aW1lb2Zmc2V0IHRyYWNlIHRyYWNraW5nICcgK1xuICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uYWwgdHJhbnNsYXRlIHRyYW5zbGF0aW9uIHRyZWF0IHRyaWdnZXIgdHJpZ2dlcl9uZXN0bGV2ZWwgdHJpZ2dlcnMgdHJpbSB0cnVuY2F0ZSAnICtcbiAgICAgICAgICAgICd0cnlfY2FzdCB0cnlfY29udmVydCB0cnlfcGFyc2UgdHlwZSB1YjEgdWIyIHViNCB1Y2FzZSB1bmFyY2hpdmVkIHVuYm91bmRlZCB1bmNvbXByZXNzICcgK1xuICAgICAgICAgICAgJ3VuZGVyIHVuZG8gdW5oZXggdW5pY29kZSB1bmlmb3JtIHVuaW5zdGFsbCB1bmlvbiB1bmlxdWUgdW5peF90aW1lc3RhbXAgdW5rbm93biB1bmxpbWl0ZWQgdW5sb2NrIHVubmVzdCB1bnBpdm90ICcgK1xuICAgICAgICAgICAgJ3VucmVjb3ZlcmFibGUgdW5zYWZlIHVuc2lnbmVkIHVudGlsIHVudHJ1c3RlZCB1bnVzYWJsZSB1bnVzZWQgdXBkYXRlIHVwZGF0ZWQgdXBncmFkZSB1cHBlZCB1cHBlciB1cHNlcnQgJyArXG4gICAgICAgICAgICAndXJsIHVyb3dpZCB1c2FibGUgdXNhZ2UgdXNlIHVzZV9zdG9yZWRfb3V0bGluZXMgdXNlciB1c2VyX2RhdGEgdXNlcl9yZXNvdXJjZXMgdXNlcnMgdXNpbmcgdXRjX2RhdGUgJyArXG4gICAgICAgICAgICAndXRjX3RpbWVzdGFtcCB1dWlkIHV1aWRfc2hvcnQgdmFsaWRhdGUgdmFsaWRhdGVfcGFzc3dvcmRfc3RyZW5ndGggdmFsaWRhdGlvbiB2YWxpc3QgdmFsdWUgdmFsdWVzIHZhciAnICtcbiAgICAgICAgICAgICd2YXJfc2FtcCB2YXJjaGFyYyB2YXJpIHZhcmlhIHZhcmlhYiB2YXJpYWJsIHZhcmlhYmxlIHZhcmlhYmxlcyB2YXJpYW5jZSB2YXJwIHZhcnJhdyB2YXJyYXdjIHZhcnJheSAnICtcbiAgICAgICAgICAgICd2ZXJpZnkgdmVyc2lvbiB2ZXJzaW9ucyB2aWV3IHZpcnR1YWwgdmlzaWJsZSB2b2lkIHdhaXQgd2FsbGV0IHdhcm5pbmcgd2FybmluZ3Mgd2VlayB3ZWVrZGF5IHdlZWtvZnllYXIgJyArXG4gICAgICAgICAgICAnd2VsbGZvcm1lZCB3aGVuIHdoZW5lIHdoZW5ldiB3aGVuZXZlIHdoZW5ldmVyIHdoZXJlIHdoaWxlIHdoaXRlc3BhY2Ugd2luZG93IHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkICcgK1xuICAgICAgICAgICAgJ3hkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgJyArXG4gICAgICAgICAgICAneG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlaycsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5rbm93bicsXG4gICAgICAgICAgYnVpbHRfaW46XG4gICAgICAgICAgICAnYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sIGJvb2xlYW4gY2hhciBjaGFyYWN0ZXIgZGF0ZSBkZWMgZGVjaW1hbCBmbG9hdCBpbnQgaW50OCBpbnRlZ2VyIGludGVydmFsIG51bWJlciAnICtcbiAgICAgICAgICAgICdudW1lcmljIHJlYWwgcmVjb3JkIHNlcmlhbCBzZXJpYWw4IHNtYWxsaW50IHRleHQgdGltZSB0aW1lc3RhbXAgdGlueWludCB2YXJjaGFyIHZhcmNoYXIyIHZhcnlpbmcgdm9pZCdcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1xcJ1xcJyd9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwge2JlZ2luOiAnXCJcIid9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBDT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIENPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIC8vIFN0YW4ncyBrZXl3b3Jkc1xuICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAnZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UnLFxuICAgICAgICAgIC8vIFN0YW4ncyBwcm9iYWJsaXR5IGRpc3RyaWJ1dGlvbnMgKGxlc3MgYmV0YSBhbmQgZ2FtbWEsIGFzIGNvbW1vbmx5XG4gICAgICAgICAgLy8gdXNlZCBmb3IgcGFyYW1ldGVyIG5hbWVzKS4gU28gZmFyLCBfbG9nIGFuZCBfcm5nIHZhcmlhbnRzIGFyZSBub3RcbiAgICAgICAgICAvLyBpbmNsdWRlZFxuICAgICAgICAgIHN5bWJvbDpcbiAgICAgICAgICAgICdiZXJub3VsbGkgYmVybm91bGxpX2xvZ2l0IGJpbm9taWFsIGJpbm9taWFsX2xvZ2l0ICcgICAgICAgICAgICAgICArXG4gICAgICAgICAgICAnYmV0YV9iaW5vbWlhbCBoeXBlcmdlb21ldHJpYyBjYXRlZ29yaWNhbCBjYXRlZ29yaWNhbF9sb2dpdCAnICAgICAgK1xuICAgICAgICAgICAgJ29yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yICcgICAgICAgICAgICAgICAgICAgICtcbiAgICAgICAgICAgICduZWdfYmlub21pYWxfMl9sb2cgcG9pc3NvbiBwb2lzc29uX2xvZyBtdWx0aW5vbWlhbCBub3JtYWwgJyAgICAgICArXG4gICAgICAgICAgICAnZXhwX21vZF9ub3JtYWwgc2tld19ub3JtYWwgc3R1ZGVudF90IGNhdWNoeSBkb3VibGVfZXhwb25lbnRpYWwgJyAgK1xuICAgICAgICAgICAgJ2xvZ2lzdGljIGd1bWJlbCBsb2dub3JtYWwgY2hpX3NxdWFyZSBpbnZfY2hpX3NxdWFyZSAnICAgICAgICAgICAgICtcbiAgICAgICAgICAgICdzY2FsZWRfaW52X2NoaV9zcXVhcmUgZXhwb25lbnRpYWwgaW52X2dhbW1hIHdlaWJ1bGwgZnJlY2hldCAnICAgICArXG4gICAgICAgICAgICAncmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtICcgICAgICAgICAgK1xuICAgICAgICAgICAgJ211bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgJyAgICtcbiAgICAgICAgICAgICdtdWx0aV9ncF9jaG9sZXNreSBtdWx0aV9zdHVkZW50X3QgZ2F1c3NpYW5fZGxtX29icyBkaXJpY2hsZXQgJyAgICArXG4gICAgICAgICAgICAnbGtqX2NvcnIgbGtqX2NvcnJfY2hvbGVza3kgd2lzaGFydCBpbnZfd2lzaGFydCcsXG4gICAgICAgICAgLy8gU3RhbidzIGRhdGEgdHlwZXNcbiAgICAgICAgICAnc2VsZWN0b3ItdGFnJzpcbiAgICAgICAgICAgICdpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgJyAgICArXG4gICAgICAgICAgICAncm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiAnICAgICAgK1xuICAgICAgICAgICAgJ2NvcnJfbWF0cml4IGNvdl9tYXRyaXgnLFxuICAgICAgICAgIC8vIFN0YW4ncyBtb2RlbCBibG9ja3NcbiAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICdmdW5jdGlvbnMgbW9kZWwgZGF0YSBwYXJhbWV0ZXJzIHF1YW50aXRpZXMgdHJhbnNmb3JtZWQgJyAgICAgICAgICArXG4gICAgICAgICAgICAnZ2VuZXJhdGVkJyxcbiAgICAgICAgICBsaXRlcmFsOlxuICAgICAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIFRoZSBiZWxvdyBpcyBhbGwgdGFrZW4gZnJvbSB0aGUgUiBsYW5ndWFnZSBkZWZpbml0aW9uXG4gICAgICB7XG4gICAgICAgIC8vIGhleCB2YWx1ZVxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gZXhwbGljaXQgaW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9MXFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCB0cmFpbGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkK1xcXFwuKD8hXFxcXGQpKD86aVxcXFxiKT9cIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86XFxcXC5cXFxcZCopPyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCBsZWFkaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXC5cXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSAvKlxuICBUaGlzIGlzIGEgZm9yayBhbmQgbW9kaWZpY2F0aW9uIG9mIERyZXcgTWNEb25hbGQncyBmaWxlIChodHRwczovL2dpdGh1Yi5jb20vZHJld21jZG9uYWxkL3N0YXRhLWhpZ2hsaWdodGluZykuIEkgaGF2ZSBhbHNvIGluY2x1ZGVkIGEgbGlzdCBvZiBidWlsdGluIGNvbW1hbmRzIGZyb20gaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTY0Ni5cbiovXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2RvJywgJ2FkbyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdpZiBlbHNlIGluIGZvcmVhY2ggZm9yIGZvcnYgZm9ydmEgZm9ydmFsIGZvcnZhbHUgZm9ydmFsdWUgZm9ydmFsdWVzIGJ5IGJ5cyBieXNvcnQgeGkgcXVpZXRseSBxdWkgY2FwdHVyZSBhYm91dCBhYyBhY183IGFjcHJwbG90IGFjcHJwbG90XzcgYWRqdXN0IGFkbyBhZG9wYXRoIGFkb3VwZGF0ZSBhbHBoYSBhbWVhbnMgYW4gYW5vIGFub3YgYW5vdmEgYW5vdmFfZXN0YXQgYW5vdmFfdGVybXMgYW5vdmFkZWYgYW9yZGVyIGFwIGFwcCBhcHBlIGFwcGVuIGFwcGVuZCBhcmNoIGFyY2hfZHIgYXJjaF9lc3RhdCBhcmNoX3AgYXJjaGxtIGFyZWcgYXJlZ19wIGFyZ3MgYXJpbWEgYXJpbWFfZHIgYXJpbWFfZXN0YXQgYXJpbWFfcCBhcyBhc21wcm9iaXQgYXNtcHJvYml0X2VzdGF0IGFzbXByb2JpdF9sZiBhc21wcm9iaXRfbWZ4X19kbGcgYXNtcHJvYml0X3AgYXNzIGFzc2UgYXNzZXIgYXNzZXJ0IGF2cGxvdCBhdnBsb3RfNyBhdnBsb3RzIGF2cGxvdHNfNyBiY3NrZXcwIGJnb2RmcmV5IGJpYXMgYmlucmVnIGJpcDBfbGYgYmlwbG90IGJpcHBfbGYgYmlwcl9sZiBiaXByX3AgYmlwcm9iaXQgYml0ZXN0IGJpdGVzdGkgYml0b3d0IGJsb2dpdCBibWVtc2l6ZSBib290IGJvb3RzYW1wIGJvb3RzdHJhcCBib290c3RyYXBfOCBib3hjb19sIGJveGNvX3AgYm94Y294IGJveGNveF82IGJveGNveF9wIGJwcm9iaXQgYnIgYnJlYWsgYnJpZXIgYnJvIGJyb3cgYnJvd3MgYnJvd3NlIGJyciBicnJzdGF0IGJzIGJzXzcgYnNhbXBsX3cgYnNhbXBsZSBic2FtcGxlXzcgYnNxcmVnIGJzdGF0IGJzdGF0XzcgYnN0YXRfOCBic3RyYXAgYnN0cmFwXzcgYnViYmxlIGJ1YmJsZXBsb3QgY2EgY2FfZXN0YXQgY2FfcCBjYWJpcGxvdCBjYW1hdCBjYW5vbiBjYW5vbl84IGNhbm9uXzhfcCBjYW5vbl9lc3RhdCBjYW5vbl9wIGNhcCBjYXByb2plY3Rpb24gY2FwdCBjYXB0dSBjYXB0dXIgY2FwdHVyZSBjYXQgY2MgY2NoYXJ0IGNjaGFydF83IGNjaSBjZCBjZW5zb2JzX3RhYmxlIGNlbnRpbGUgY2YgY2hhciBjaGRpciBjaGVja2RsZ2ZpbGVzIGNoZWNrZXN0aW1hdGlvbnNhbXBsZSBjaGVja2hscGZpbGVzIGNoZWNrc3VtIGNoZWxwIGNpIGNpaSBjbCBjbGFzcyBjbGFzc3V0aWwgY2xlYXIgY2xpIGNsaXMgY2xpc3QgY2xvIGNsb2cgY2xvZ19sZiBjbG9nX3AgY2xvZ2kgY2xvZ2lfc3cgY2xvZ2l0IGNsb2dpdF9sZiBjbG9naXRfcCBjbG9naXRwIGNsb2dsX3N3IGNsb2dsb2cgY2xvbmV2YXIgY2xzbGlzdGFycmF5IGNsdXN0ZXIgY2x1c3Rlcl9tZWFzdXJlcyBjbHVzdGVyX3N0b3AgY2x1c3Rlcl90cmVlIGNsdXN0ZXJfdHJlZV84IGNsdXN0ZXJtYXQgY21kbG9nIGNuciBjbnJlIGNucmVnIGNucmVnX3AgY25yZWdfc3cgY25zcmVnIGNvZGVib29rIGNvbGxhcHM0IGNvbGxhcHNlIGNvbG9ybXVsdF9uYiBjb2xvcm11bHRfbncgY29tcGFyZSBjb21wcmVzcyBjb25mIGNvbmZpIGNvbmZpciBjb25maXJtIGNvbnJlbiBjb25zIGNvbnN0IGNvbnN0ciBjb25zdHJhIGNvbnN0cmFpIGNvbnN0cmFpbiBjb25zdHJhaW50IGNvbnRpbnVlIGNvbnRyYWN0IGNvcHkgY29weXJpZ2h0IGNvcHlzb3VyY2UgY29yIGNvcmMgY29yciBjb3JyMmRhdGEgY29ycl9hbnRpIGNvcnJfa21vIGNvcnJfc21jIGNvcnJlIGNvcnJlbCBjb3JyZWxhIGNvcnJlbGF0IGNvcnJlbGF0ZSBjb3JyZ3JhbSBjb3UgY291biBjb3VudCBjb3ggY294X3AgY294X3N3IGNveGJhc2UgY294aGF6IGNveHZhciBjcHJwbG90IGNwcnBsb3RfNyBjcmMgY3JldCBjcmV0dSBjcmV0dXIgY3JldHVybiBjcm9zcyBjcyBjc2NyaXB0IGNzY3JpcHRfbG9nIGNzaSBjdCBjdF9pcyBjdHNldCBjdHN0XzUgY3RzdF9zdCBjdHRvc3QgY3Vtc3AgY3Vtc3BfNyBjdW11bCBjdXN1bSBjdXN1bV83IGN1dGlsIGR8MCBkYXRhc2lnIGRhdGFzaWduIGRhdGFzaWduYSBkYXRhc2lnbmF0IGRhdGFzaWduYXR1IGRhdGFzaWduYXR1ciBkYXRhc2lnbmF0dXJlIGRhdGV0b2YgZGIgZGJldGEgZGUgZGVjIGRlY28gZGVjb2QgZGVjb2RlIGRlZmYgZGVzIGRlc2MgZGVzY3IgZGVzY3JpIGRlc2NyaWIgZGVzY3JpYmUgZGVzdHJpbmcgZGZiZXRhIGRmZ2xzIGRmdWxsZXIgZGkgZGlfZyBkaXIgZGlyc3RhdHMgZGlzIGRpc2NhcmQgZGlzcCBkaXNwX3JlcyBkaXNwX3MgZGlzcGwgZGlzcGxhIGRpc3BsYXkgZGlzdGluY3QgZG8gZG9lIGRvZWQgZG9lZGkgZG9lZGl0IGRvdHBsb3QgZG90cGxvdF83IGRwcm9iaXQgZHJhd25vcm0gZHJvcCBkcyBkc191dGlsIGRzdGRpemUgZHVwbGljYXRlcyBkdXJiaW5hIGR3c3RhdCBkeWR4IGV8MCBlZCBlZGkgZWRpdCBlZ2VuIGVpdnJlZyBlbWRlZiBlbiBlbmMgZW5jbyBlbmNvZCBlbmNvZGUgZXEgZXJhc2UgZXJlZyBlcmVnX2xmIGVyZWdfcCBlcmVnX3N3IGVyZWdoZXQgZXJlZ2hldF9nbGYgZXJlZ2hldF9nbGZfc2ggZXJlZ2hldF9ncCBlcmVnaGV0X2lsZiBlcmVnaGV0X2lsZl9zaCBlcmVnaGV0X2lwIGVyZXQgZXJldHUgZXJldHVyIGVyZXR1cm4gZXJyIGVycm8gZXJyb3IgZXNpemUgZXN0IGVzdF9jZmV4aXN0IGVzdF9jZm5hbWUgZXN0X2NsaWNrYWJsZSBlc3RfZXhwYW5kIGVzdF9ob2xkIGVzdF90YWJsZSBlc3RfdW5ob2xkIGVzdF91bmhvbGRvayBlc3RhdCBlc3RhdF9kZWZhdWx0IGVzdGF0X3N1bW0gZXN0YXRfdmNlX29ubHkgZXN0aSBlc3RpbWF0ZXMgZXRvZG93IGV0b2YgZXRvbWR5IGV4IGV4aSBleGl0IGV4cGFuZCBleHBhbmRjbCBmYWMgZmFjdCBmYWN0byBmYWN0b3IgZmFjdG9yX2VzdGF0IGZhY3Rvcl9wIGZhY3Rvcl9wY2Ffcm90YXRlZCBmYWN0b3Jfcm90YXRlIGZhY3Rvcm1hdCBmY2FzdCBmY2FzdF9jb21wdXRlIGZjYXN0X2dyYXBoIGZkYWRlcyBmZGFkZXNjIGZkYWRlc2NyIGZkYWRlc2NyaSBmZGFkZXNjcmliIGZkYWRlc2NyaWJlIGZkYXNhdiBmZGFzYXZlIGZkYXVzZSBmaF9zdCBmaWxlIG9wZW4gZmlsZSByZWFkIGZpbGUgY2xvc2UgZmlsZSBmaWxlZmlsdGVyIGZpbGxpbiBmaW5kX2hscF9maWxlIGZpbmRmaWxlIGZpbmRpdCBmaW5kaXRfNyBmaXQgZmwgZmxpIGZsaXMgZmxpc3QgZm9yNV8wIGZvcmVzdCBmb3Jlc3RwbG90IGZvcm0gZm9ybWEgZm9ybWF0IGZwcmVkaWN0IGZyYWNfMTU0IGZyYWNfYWRqIGZyYWNfY2hrIGZyYWNfY294IGZyYWNfZGRwIGZyYWNfZGlzIGZyYWNfZHYgZnJhY19pbiBmcmFjX211biBmcmFjX3BwIGZyYWNfcHEgZnJhY19wdiBmcmFjX3dndCBmcmFjX3hvIGZyYWNnZW4gZnJhY3Bsb3QgZnJhY3Bsb3RfNyBmcmFjcG9seSBmcmFjcHJlZCBmcm9uX2V4IGZyb25faG4gZnJvbl9wIGZyb25fdG4gZnJvbl90bjIgZnJvbnRpZXIgZnRvZGF0ZSBmdG9lIGZ0b21keSBmdG93ZGF0ZSBmdW5uZWwgZnVubmVscGxvdCBnfDAgZ2FtaGV0X2dsZiBnYW1oZXRfZ3AgZ2FtaGV0X2lsZiBnYW1oZXRfaXAgZ2FtbWEgZ2FtbWFfZDIgZ2FtbWFfcCBnYW1tYV9zdyBnYW1tYWhldCBnZGlfaGV4YWdvbiBnZGlfc3Bva2VzIGdlIGdlbiBnZW5lIGdlbmVyIGdlbmVyYSBnZW5lcmF0IGdlbmVyYXRlIGdlbnJhbmsgZ2Vuc3RkIGdlbnZtZWFuIGdldHRva2VuIGdsIGdsYWRkZXIgZ2xhZGRlcl83IGdsaW1fbDAxIGdsaW1fbDAyIGdsaW1fbDAzIGdsaW1fbDA0IGdsaW1fbDA1IGdsaW1fbDA2IGdsaW1fbDA3IGdsaW1fbDA4IGdsaW1fbDA5IGdsaW1fbDEwIGdsaW1fbDExIGdsaW1fbDEyIGdsaW1fbGYgZ2xpbV9tdSBnbGltX253MSBnbGltX253MiBnbGltX253MyBnbGltX3AgZ2xpbV92MSBnbGltX3YyIGdsaW1fdjMgZ2xpbV92NCBnbGltX3Y1IGdsaW1fdjYgZ2xpbV92NyBnbG0gZ2xtXzYgZ2xtX3AgZ2xtX3N3IGdsbXByZWQgZ2xvIGdsb2IgZ2xvYmEgZ2xvYmFsIGdsb2dpdCBnbG9naXRfOCBnbG9naXRfcCBnbWVhbnMgZ25icmVfbGYgZ25icmVnIGduYnJlZ181IGduYnJlZ19wIGdvbXBfbGYgZ29tcGVfc3cgZ29tcGVyX3AgZ29tcGVydHogZ29tcGVydHpoZXQgZ29tcGhldF9nbGYgZ29tcGhldF9nbGZfc2ggZ29tcGhldF9ncCBnb21waGV0X2lsZiBnb21waGV0X2lsZl9zaCBnb21waGV0X2lwIGdwaGRvdCBncGhwZW4gZ3BocHJpbnQgZ3ByZWZzIGdwcm9iaV9wIGdwcm9iaXQgZ3Byb2JpdF84IGdyIGdyNyBncl9jb3B5IGdyX2N1cnJlbnQgZ3JfZGIgZ3JfZGVzY3JpYmUgZ3JfZGlyIGdyX2RyYXcgZ3JfZHJhd19yZXBsYXkgZ3JfZHJvcCBncl9lZGl0IGdyX2VkaXR2aWV3b3B0cyBncl9leGFtcGxlIGdyX2V4YW1wbGUyIGdyX2V4cG9ydCBncl9wcmludCBncl9xc2NoZW1lIGdyX3F1ZXJ5IGdyX3JlYWQgZ3JfcmVuYW1lIGdyX3JlcGxheSBncl9zYXZlIGdyX3NldCBncl9zZXRzY2hlbWUgZ3JfdGFibGUgZ3JfdW5kbyBncl91c2UgZ3JhcGggZ3JhcGg3IGdyZWJhciBncmVpZ2VuIGdyZWlnZW5fNyBncmVpZ2VuXzggZ3JtZWFuYnkgZ3JtZWFuYnlfNyBnc19maWxlaW5mbyBnc19maWxldHlwZSBnc19ncmFwaGluZm8gZ3Nfc3RhdCBnc29ydCBnd29vZCBofDAgaGFkaW12byBoYXJlZyBoYXVzbWFuIGhhdmVyIGhlIGhlY2tfZDIgaGVja21hX3AgaGVja21hbiBoZWNrcF9sZiBoZWNrcHJfcCBoZWNrcHJvYiBoZWwgaGVscCBoZXJlZyBoZXRwcl9sZiBoZXRwcl9wIGhldHByb2IgaGV0dGVzdCBoZXhkdW1wIGhpbGl0ZSBoaXN0IGhpc3RfNyBoaXN0b2dyYW0gaGxvZ2l0IGhsdSBobWVhbnMgaG90ZWwgaG90ZWxsaW5nIGhwcm9iaXQgaHJlZyBoc2VhcmNoIGljZDkgaWNkOV9mZiBpY2Q5cCBpaXMgaW1wdXRlIGltdGVzdCBpbmJhc2UgaW5jbHVkZSBpbmYgaW5maSBpbmZpbCBpbmZpbGUgaW5maXggaW5wIGlucHUgaW5wdXQgaW5zIGluc2hlZXQgaW5zcCBpbnNwZSBpbnNwZWMgaW5zcGVjdCBpbnRlZyBpbnRlbiBpbnRyZWcgaW50cmVnXzcgaW50cmVnX3AgaW50cmcyX2xsIGludHJnX2xsIGludHJnX2xsMiBpcG9sYXRlIGlxcmVnIGlyIGlyZiBpcmZfY3JlYXRlIGlyZm0gaXJpIGlzX3N2eSBpc19zdnlzdW0gaXNpZCBpc3RkaXplIGl2cHJvYl8xX2xmIGl2cHJvYl9sZiBpdnByb2JpdCBpdnByb2JpdF9wIGl2cmVnIGl2cmVnX2Zvb3Rub3RlIGl2dG9iXzFfbGYgaXZ0b2JfbGYgaXZ0b2JpdCBpdnRvYml0X3AgamFja2tuaWZlIGphY2tuaWZlIGprbmlmZSBqa25pZmVfNiBqa25pZmVfOCBqa3N0YXQgam9pbmJ5IGthbGFybWExIGthcCBrYXBfMyBrYXBtZWllciBrYXBwYSBrYXB3Z3Qga2RlbnNpdHkga2RlbnNpdHlfNyBrZWVwIGtzbSBrc21pcm5vdiBrdGF1IGt3YWxsaXMgbHwwIGxhIGxhYiBsYWJiZSBsYWJiZXBsb3QgbGFiZSBsYWJlbCBsYWJlbGJvb2sgbGFkZGVyIGxldmVscyBsZXZlbHNvZiBsZXZlcmFnZSBsZml0IGxmaXRfcCBsaSBsaW5jb20gbGluZSBsaW5rdGVzdCBsaXMgbGlzdCBsbG9naGV0X2dsZiBsbG9naGV0X2dsZl9zaCBsbG9naGV0X2dwIGxsb2doZXRfaWxmIGxsb2doZXRfaWxmX3NoIGxsb2doZXRfaXAgbGxvZ2lfc3cgbGxvZ2lzX3AgbGxvZ2lzdCBsbG9naXN0aWMgbGxvZ2lzdGljaGV0IGxub3JtX2xmIGxub3JtX3N3IGxub3JtYV9wIGxub3JtYWwgbG5vcm1hbGhldCBsbm9ybWhldF9nbGYgbG5vcm1oZXRfZ2xmX3NoIGxub3JtaGV0X2dwIGxub3JtaGV0X2lsZiBsbm9ybWhldF9pbGZfc2ggbG5vcm1oZXRfaXAgbG5za2V3MCBsb2FkaW5ncGxvdCBsb2MgbG9jYSBsb2NhbCBsb2cgbG9naSBsb2dpc19sZiBsb2dpc3RpYyBsb2dpc3RpY19wIGxvZ2l0IGxvZ2l0X2VzdGF0IGxvZ2l0X3AgbG9nbG9ncyBsb2dyYW5rIGxvbmV3YXkgbG9va2ZvciBsb29rdXAgbG93ZXNzIGxvd2Vzc183IGxwcmVkaWN0IGxyZWNvbXAgbHJvYyBscm9jXzcgbHJ0ZXN0IGxzIGxzZW5zIGxzZW5zXzcgbHNlbnNfeCBsc3RhdCBsdGFibGUgbHRhYmxlXzcgbHRyaWFuZyBsdiBsdnIycGxvdCBsdnIycGxvdF83IG18MCBtYSBtYWMgbWFjciBtYWNybyBtYWtlY25zIG1hbiBtYW5vdmEgbWFub3ZhX2VzdGF0IG1hbm92YV9wIG1hbm92YXRlc3QgbWFudGVsIG1hcmsgbWFya2luIG1hcmtvdXQgbWFya3NhbXBsZSBtYXQgbWF0X2NhcHAgbWF0X29yZGVyIG1hdF9wdXRfcnIgbWF0X3JhcHAgbWF0YSBtYXRhX2NsZWFyIG1hdGFfZGVzY3JpYmUgbWF0YV9kcm9wIG1hdGFfbWF0ZGVzY3JpYmUgbWF0YV9tYXRzYXZlIG1hdGFfbWF0dXNlIG1hdGFfbWVtb3J5IG1hdGFfbWxpYiBtYXRhX21vc2F2ZSBtYXRhX3JlbmFtZSBtYXRhX3doaWNoIG1hdGFsYWJlbCBtYXRjcHJvYyBtYXRsaXN0IG1hdG5hbWUgbWF0ciBtYXRyaSBtYXRyaXggbWF0cml4X2lucHV0X19kbGcgbWF0c3RyaWsgbWNjIG1jY2kgbWQwXyBtZDFfIG1kMWRlYnVnXyBtZDJfIG1kMmRlYnVnXyBtZHMgbWRzX2VzdGF0IG1kc19wIG1kc2NvbmZpZyBtZHNsb25nIG1kc21hdCBtZHNzaGVwYXJkIG1keXRvZSBtZHl0b2YgbWVfZGVyZCBtZWFuIG1lYW5zIG1lZGlhbiBtZW1vcnkgbWVtc2l6ZSBtZW5sIG1lcXBhcnNlIG1lciBtZXJnIG1lcmdlIG1ldGEgbWZwIG1meCBtaGVscCBtaG9kZHMgbWluYm91bmQgbWl4ZWRfbGwgbWl4ZWRfbGxfcmVwYXJtIG1rYXNzZXJ0IG1rZGlyIG1rbWF0IG1rc3BsaW5lIG1sIG1sXzUgbWxfYWRqcyBtbF9iaGhocyBtbF9jX2QgbWxfY2hlY2sgbWxfY2xlYXIgbWxfY250IG1sX2RlYnVnIG1sX2RlZmQgbWxfZTAgbWxfZTBfYmZncyBtbF9lMF9jeWNsZSBtbF9lMF9kZnAgbWxfZTBpIG1sX2UxIG1sX2UxX2JmZ3MgbWxfZTFfYmhoaCBtbF9lMV9jeWNsZSBtbF9lMV9kZnAgbWxfZTIgbWxfZTJfY3ljbGUgbWxfZWJmZzAgbWxfZWJmcjAgbWxfZWJmcjEgbWxfZWJoMHEgbWxfZWJoaDAgbWxfZWJocjAgbWxfZWJyMGkgbWxfZWNyMGkgbWxfZWRmcDAgbWxfZWRmcjAgbWxfZWRmcjEgbWxfZWRyMGkgbWxfZWRzIG1sX2VlcjBpIG1sX2VncjBpIG1sX2VsZiBtbF9lbGZfYmZncyBtbF9lbGZfYmhoaCBtbF9lbGZfY3ljbGUgbWxfZWxmX2RmcCBtbF9lbGZpIG1sX2VsZnMgbWxfZW5yMGkgbWxfZW5ycjAgbWxfZXJkdTAgbWxfZXJkdTBfYmZncyBtbF9lcmR1MF9iaGhoIG1sX2VyZHUwX2JoaGhxIG1sX2VyZHUwX2N5Y2xlIG1sX2VyZHUwX2RmcCBtbF9lcmR1MF9ucmJmZ3MgbWxfZXhkZSBtbF9mb290bm90ZSBtbF9nZXFuciBtbF9ncmFkMCBtbF9ncmFwaCBtbF9oYmhoaCBtbF9oZDAgbWxfaG9sZCBtbF9pbml0IG1sX2ludiBtbF9sb2cgbWxfbWF4IG1sX21sb3V0IG1sX21sb3V0XzggbWxfbW9kZWwgbWxfbmIwIG1sX29wdCBtbF9wIG1sX3Bsb3QgbWxfcXVlcnkgbWxfcmRncmQgbWxfcmVwb3IgbWxfc19lIG1sX3Njb3JlIG1sX3NlYXJjIG1sX3RlY2huaXF1ZSBtbF91bmhvbGQgbWxldmFsIG1sZl8gbWxtYXRieXN1bSBtbG1hdHN1bSBtbG9nIG1sb2dpIG1sb2dpdCBtbG9naXRfZm9vdG5vdGUgbWxvZ2l0X3AgbWxvcHRzIG1sc3VtIG1sdmVjc3VtIG1ubDBfIG1vciBtb3JlIG1vdiBtb3ZlIG1wcm9iaXQgbXByb2JpdF9sZiBtcHJvYml0X3AgbXJkdTBfIG1yZHUxXyBtdmRlY29kZSBtdmVuY29kZSBtdnJlZyBtdnJlZ19lc3RhdCBufDAgbmJyZWcgbmJyZWdfYWwgbmJyZWdfbGYgbmJyZWdfcCBuYnJlZ19zdyBuZXN0cmVnIG5ldCBuZXdleSBuZXdleV83IG5ld2V5X3AgbmV3cyBubCBubF83IG5sXzkgbmxfOV9wIG5sX3AgbmxfcF83IG5sY29tIG5sY29tX3AgbmxleHAyIG5sZXhwMl83IG5sZXhwMmEgbmxleHAyYV83IG5sZXhwMyBubGV4cDNfNyBubGdvbTMgbmxnb20zXzcgbmxnb200IG5sZ29tNF83IG5saW5pdCBubGxvZzMgbmxsb2czXzcgbmxsb2c0IG5sbG9nNF83IG5sb2dfcmQgbmxvZ2l0IG5sb2dpdF9wIG5sb2dpdGdlbiBubG9naXR0cmVlIG5scHJlZCBubyBub2JyZWFrIG5vaSBub2lzIG5vaXNpIG5vaXNpbCBub2lzaWx5IG5vdGUgbm90ZXMgbm90ZXNfZGxnIG5wdHJlbmQgbnVtbGFiZWwgbnVtbGlzdCBvZGJjIG9sZF92ZXIgb2xvIG9sb2cgb2xvZ2kgb2xvZ2lfc3cgb2xvZ2l0IG9sb2dpdF9wIG9sb2dpdHAgb24gb25lIG9uZXcgb25ld2Egb25ld2F5IG9wX2NvbG5tIG9wX2NvbXAgb3BfZGlmZiBvcF9pbnYgb3Bfc3RyIG9wciBvcHJvIG9wcm9iIG9wcm9iX3N3IG9wcm9iaSBvcHJvYmlfcCBvcHJvYml0IG9wcm9iaXRwIG9wdHNfZXhjbHVzaXZlIG9yZGVyIG9ydGhvZyBvcnRocG9seSBvdSBvdXQgb3V0ZiBvdXRmaSBvdXRmaWwgb3V0ZmlsZSBvdXRzIG91dHNoIG91dHNoZSBvdXRzaGVlIG91dHNoZWV0IG92dGVzdCBwYWMgcGFjXzcgcGFsZXR0ZSBwYXJzZSBwYXJzZV9kaXNzaW0gcGF1c2UgcGNhIHBjYV84IHBjYV9kaXNwbGF5IHBjYV9lc3RhdCBwY2FfcCBwY2Ffcm90YXRlIHBjYW1hdCBwY2hhcnQgcGNoYXJ0XzcgcGNoaSBwY2hpXzcgcGNvcnIgcGN0aWxlIHBlbnRpdW0gcGVyZ3JhbSBwZXJncmFtXzcgcGVybXV0ZSBwZXJtdXRlXzggcGVyc29uYWwgcGV0b19zdCBwa2NvbGxhcHNlIHBrY3Jvc3MgcGtlcXVpdiBwa2V4YW1pbmUgcGtleGFtaW5lXzcgcGtzaGFwZSBwa3N1bW0gcGtzdW1tXzcgcGwgcGxvIHBsb3QgcGx1Z2luIHBub3JtIHBub3JtXzcgcG9pc2dvZiBwb2lzc19sZiBwb2lzc19zdyBwb2lzc29fcCBwb2lzc29uIHBvaXNzb25fZXN0YXQgcG9zdCBwb3N0Y2xvc2UgcG9zdGZpbGUgcG9zdHV0aWwgcHBlcnJvbiBwciBwcmFpcyBwcmFpc19lIHByYWlzX2UyIHByYWlzX3AgcHJlZGljdCBwcmVkaWN0bmwgcHJlc2VydmUgcHJpbnQgcHJvIHByb2IgcHJvYmkgcHJvYml0IHByb2JpdF9lc3RhdCBwcm9iaXRfcCBwcm9jX3RpbWUgcHJvY292ZXJsYXkgcHJvY3J1c3RlcyBwcm9jcnVzdGVzX2VzdGF0IHByb2NydXN0ZXNfcCBwcm9maWxlciBwcm9nIHByb2dyIHByb2dyYSBwcm9ncmFtIHByb3AgcHJvcG9ydGlvbiBwcnRlc3QgcHJ0ZXN0aSBwd2NvcnIgcHdkIHFcXFxccyBxYnkgcWJ5cyBxY2hpIHFjaGlfNyBxbGFkZGVyIHFsYWRkZXJfNyBxbm9ybSBxbm9ybV83IHFxcGxvdCBxcXBsb3RfNyBxcmVnIHFyZWdfYyBxcmVnX3AgcXJlZ19zdyBxdSBxdWFkY2hrIHF1YW50aWxlIHF1YW50aWxlXzcgcXVlIHF1ZXIgcXVlcnkgcmFuZ2UgcmFua3N1bSByYXRpbyByY2hhcnQgcmNoYXJ0XzcgcmNvZiByZWNhc3QgcmVjbGluayByZWNvZGUgcmVnIHJlZzMgcmVnM19wIHJlZ2R3IHJlZ3IgcmVncmUgcmVncmVfcDIgcmVncmVzIHJlZ3Jlc19wIHJlZ3Jlc3MgcmVncmVzc19lc3RhdCByZWdyaXZfcCByZW1hcCByZW4gcmVuYSByZW5hbSByZW5hbWUgcmVucGZpeCByZXBlYXQgcmVwbGFjZSByZXBvcnQgcmVzaGFwZSByZXN0b3JlIHJldCByZXR1IHJldHVyIHJldHVybiBybSBybWRpciByb2J2YXIgcm9jY29tcCByb2Njb21wXzcgcm9jY29tcF84IHJvY2ZfbGYgcm9jZml0IHJvY2ZpdF84IHJvY2dvbGQgcm9jcGxvdCByb2NwbG90Xzcgcm9jdGFiIHJvY3RhYl83IHJvbGxpbmcgcm9sb2dpdCByb2xvZ2l0X3Agcm90IHJvdGEgcm90YXQgcm90YXRlIHJvdGF0ZW1hdCBycmVnIHJyZWdfcCBydSBydW4gcnVudGVzdCBydmZwbG90IHJ2ZnBsb3RfNyBydnBwbG90IHJ2cHBsb3RfNyBzYSBzYWZlc3VtIHNhbXBsZSBzYW1wc2kgc2F2IHNhdmUgc2F2ZWRyZXN1bHRzIHNhdmVvbGQgc2Mgc2NhIHNjYWwgc2NhbGEgc2NhbGFyIHNjYXR0ZXIgc2NtX21pbmUgc2NvIHNjb2JfbGYgc2NvYl9wIHNjb2JpX3N3IHNjb2JpdCBzY29yIHNjb3JlIHNjb3JlcGxvdCBzY29yZXBsb3RfaGVscCBzY3JlZSBzY3JlZXBsb3Qgc2NyZWVwbG90X2hlbHAgc2R0ZXN0IHNkdGVzdGkgc2Ugc2VhcmNoIHNlcGFyYXRlIHNlcGVyYXRlIHNlcnJiYXIgc2VycmJhcl83IHNlcnNldCBzZXQgc2V0X2RlZmF1bHRzIHNmcmFuY2lhIHNoIHNoZSBzaGVsIHNoZWxsIHNoZXdoYXJ0IHNoZXdoYXJ0Xzcgc2lnbmVzdGltYXRpb25zYW1wbGUgc2lnbnJhbmsgc2lnbnRlc3Qgc2ltdWwgc2ltdWxfNyBzaW11bGF0ZSBzaW11bGF0ZV84IHNrdGVzdCBzbGVlcCBzbG9naXQgc2xvZ2l0X2QyIHNsb2dpdF9wIHNtb290aCBzbmFwc3BhbiBzbyBzb3Igc29ydCBzcGVhcm1hbiBzcGlrZXBsb3Qgc3Bpa2VwbG90Xzcgc3Bpa2VwbHQgc3BsaW5lX3ggc3BsaXQgc3FyZWcgc3FyZWdfcCBzcmV0IHNyZXR1IHNyZXR1ciBzcmV0dXJuIHNzYyBzdCBzdF9jdCBzdF9oYyBzdF9oY2Qgc3RfaGNkX3NoIHN0X2lzIHN0X2lzc3lzIHN0X25vdGUgc3RfcHJvbW8gc3Rfc2V0IHN0X3Nob3cgc3Rfc21wbCBzdF9zdWJpZCBzdGFjayBzdGF0c2J5IHN0YXRzYnlfOCBzdGJhc2Ugc3RjaSBzdGNpXzcgc3Rjb3ggc3Rjb3hfZXN0YXQgc3Rjb3hfZnIgc3Rjb3hfZnJfbGwgc3Rjb3hfcCBzdGNveF9zdyBzdGNveGttIHN0Y294a21fNyBzdGNzdGF0IHN0Y3VydiBzdGN1cnZlIHN0Y3VydmVfNyBzdGRlcyBzdGVtIHN0ZXB3aXNlIHN0ZXJlZyBzdGZpbGwgc3RnZW4gc3RpciBzdGpvaW4gc3RtYyBzdG1oIHN0cGhwbG90IHN0cGhwbG90Xzcgc3RwaHRlc3Qgc3RwaHRlc3RfNyBzdHB0aW1lIHN0cmF0ZSBzdHJhdGVfNyBzdHJlZyBzdHJlZ19zdyBzdHJlc2V0IHN0cyBzdHNfNyBzdHNldCBzdHNwbGl0IHN0c3VtIHN0dG9jYyBzdHRvY3Qgc3R2YXJ5IHN0d2VpYiBzdSBzdWVzdCBzdWVzdF84IHN1bSBzdW1tIHN1bW1hIHN1bW1hciBzdW1tYXJpIHN1bW1hcml6IHN1bW1hcml6ZSBzdW5mbG93ZXIgc3VyZWcgc3VydmN1cnYgc3VydnN1bSBzdmFyIHN2YXJfcCBzdm1hdCBzdnkgc3Z5X2Rpc3Agc3Z5X2RyZWcgc3Z5X2VzdCBzdnlfZXN0Xzcgc3Z5X2VzdGF0IHN2eV9nZXQgc3Z5X2duYnJlZ19wIHN2eV9oZWFkIHN2eV9oZWFkZXIgc3Z5X2hlY2ttYW5fcCBzdnlfaGVja3Byb2JfcCBzdnlfaW50cmVnX3Agc3Z5X2l2cmVnX3Agc3Z5X2xvZ2lzdGljX3Agc3Z5X2xvZ2l0X3Agc3Z5X21sb2dpdF9wIHN2eV9uYnJlZ19wIHN2eV9vbG9naXRfcCBzdnlfb3Byb2JpdF9wIHN2eV9wb2lzc29uX3Agc3Z5X3Byb2JpdF9wIHN2eV9yZWdyZXNzX3Agc3Z5X3N1YiBzdnlfc3ViXzcgc3Z5X3ggc3Z5X3hfNyBzdnlfeF9wIHN2eWRlcyBzdnlkZXNfOCBzdnlnZW4gc3Z5Z25icmVnIHN2eWhlY2ttYW4gc3Z5aGVja3Byb2Igc3Z5aW50cmVnIHN2eWludHJlZ183IHN2eWludHJnIHN2eWl2cmVnIHN2eWxjIHN2eWxvZ19wIHN2eWxvZ2l0IHN2eW1hcmtvdXQgc3Z5bWFya291dF84IHN2eW1lYW4gc3Z5bWxvZyBzdnltbG9naXQgc3Z5bmJyZWcgc3Z5b2xvZyBzdnlvbG9naXQgc3Z5b3Byb2Igc3Z5b3Byb2JpdCBzdnlvcHRzIHN2eXBvaXMgc3Z5cG9pc183IHN2eXBvaXNzb24gc3Z5cHJvYml0IHN2eXByb2J0IHN2eXByb3Agc3Z5cHJvcF83IHN2eXJhdGlvIHN2eXJlZyBzdnlyZWdfcCBzdnlyZWdyZXNzIHN2eXNldCBzdnlzZXRfNyBzdnlzZXRfOCBzdnl0YWIgc3Z5dGFiXzcgc3Z5dGVzdCBzdnl0b3RhbCBzdyBzd184IHN3Y25yZWcgc3djb3ggc3dlcmVnIHN3aWxrIHN3bG9naXMgc3dsb2dpdCBzd29sb2dpdCBzd29wcmJ0IHN3cG9pcyBzd3Byb2JpdCBzd3FyZWcgc3d0b2JpdCBzd3dlaWIgc3ltbWV0cnkgc3ltbWkgc3ltcGxvdCBzeW1wbG90Xzcgc3ludGF4IHN5c2Rlc2NyaWJlIHN5c2RpciBzeXN1c2Ugc3pyb2V0ZXIgdGEgdGFiIHRhYjEgdGFiMiB0YWJfb3IgdGFiZCB0YWJkaSB0YWJkaXMgdGFiZGlzcCB0YWJpIHRhYmxlIHRhYm9kZHMgdGFib2Rkc183IHRhYnN0YXQgdGFidSB0YWJ1bCB0YWJ1bGEgdGFidWxhdCB0YWJ1bGF0ZSB0ZSB0ZW1wZmlsZSB0ZW1wbmFtZSB0ZW1wdmFyIHRlcyB0ZXN0IHRlc3RubCB0ZXN0cGFybSB0ZXN0c3RkIHRldHJhY2hvcmljIHRpbWVfaXQgdGltZXIgdGlzIHRvYiB0b2JpIHRvYml0IHRvYml0X3AgdG9iaXRfc3cgdG9rZW4gdG9rZW5pIHRva2VuaXogdG9rZW5pemUgdG9zdHJpbmcgdG90YWwgdHJhbnNsYXRlIHRyYW5zbGF0b3IgdHJhbnNtYXAgdHJlYXRfbGwgdHJlYXRyX3AgdHJlYXRyZWcgdHJpbSB0cmltZmlsbCB0cm5iX2NvbnMgdHJuYl9tZWFuIHRycG9pc3NfZDIgdHJ1bmNfbGwgdHJ1bmNyX3AgdHJ1bmNyZWcgdHNhcHBlbmQgdHNldCB0c2ZpbGwgdHNsaW5lIHRzbGluZV9leCB0c3JlcG9ydCB0c3JldmFyIHRzcmxpbmUgdHNzZXQgdHNzbW9vdGggdHN1bmFiIHR0ZXN0IHR0ZXN0aSB0dXRfY2hrIHR1dF93YWl0IHR1dG9yaWFsIHR3IHR3YXJlX3N0IHR3byB0d293YXkgdHdvd2F5X19mcGZpdF9zZXJzZXQgdHdvd2F5X19mdW5jdGlvbl9nZW4gdHdvd2F5X19oaXN0b2dyYW1fZ2VuIHR3b3dheV9faXBvaW50X3NlcnNldCB0d293YXlfX2lwb2ludHNfc2Vyc2V0IHR3b3dheV9fa2RlbnNpdHlfZ2VuIHR3b3dheV9fbGZpdF9zZXJzZXQgdHdvd2F5X19ub3JtZ2VuX2dlbiB0d293YXlfX3BjaV9zZXJzZXQgdHdvd2F5X19xZml0X3NlcnNldCB0d293YXlfX3NjYXR0ZXJpX3NlcnNldCB0d293YXlfX3N1bmZsb3dlcl9nZW4gdHdvd2F5X2tzbV9zZXJzZXQgdHkgdHlwIHR5cGUgdHlwZW9mIHV8MCB1bmFiIHVuYWJicmV2IHVuYWJjbWQgdXBkYXRlIHVzIHVzZSB1c2VsYWJlbCB2YXIgdmFyX21rY29tcGFuaW9uIHZhcl9wIHZhcmJhc2ljIHZhcmZjYXN0IHZhcmdyYW5nZXIgdmFyaXJmIHZhcmlyZl9hZGQgdmFyaXJmX2NncmFwaCB2YXJpcmZfY3JlYXRlIHZhcmlyZl9jdGFibGUgdmFyaXJmX2Rlc2NyaWJlIHZhcmlyZl9kaXIgdmFyaXJmX2Ryb3AgdmFyaXJmX2VyYXNlIHZhcmlyZl9ncmFwaCB2YXJpcmZfb2dyYXBoIHZhcmlyZl9yZW5hbWUgdmFyaXJmX3NldCB2YXJpcmZfdGFibGUgdmFybGlzdCB2YXJsbWFyIHZhcm5vcm0gdmFyc29jIHZhcnN0YWJsZSB2YXJzdGFibGVfdyB2YXJzdGFibGVfdzIgdmFyd2xlIHZjZSB2ZWMgdmVjX2ZldmQgdmVjX21rcGhpIHZlY19wIHZlY19wX3cgdmVjaXJmX2NyZWF0ZSB2ZWNsbWFyIHZlY2xtYXJfdyB2ZWNub3JtIHZlY25vcm1fdyB2ZWNyYW5rIHZlY3N0YWJsZSB2ZXJpbnN0IHZlcnMgdmVyc2kgdmVyc2lvIHZlcnNpb24gdmlldyB2aWV3c291cmNlIHZpZiB2d2xzIHdkYXRldG9mIHdlYmRlc2NyaWJlIHdlYnNlZWsgd2VidXNlIHdlaWIxX2xmIHdlaWIyX2xmIHdlaWJfbGYgd2VpYl9sZjAgd2VpYmhldF9nbGYgd2VpYmhldF9nbGZfc2ggd2VpYmhldF9nbGZhIHdlaWJoZXRfZ2xmYV9zaCB3ZWliaGV0X2dwIHdlaWJoZXRfaWxmIHdlaWJoZXRfaWxmX3NoIHdlaWJoZXRfaWxmYSB3ZWliaGV0X2lsZmFfc2ggd2VpYmhldF9pcCB3ZWlidV9zdyB3ZWlidWxfcCB3ZWlidWxsIHdlaWJ1bGxfYyB3ZWlidWxsX3Mgd2VpYnVsbGhldCB3aCB3aGVscCB3aGkgd2hpY2ggd2hpbCB3aGlsZSB3aWxjX3N0IHdpbGNveG9uIHdpbiB3aW5kIHdpbmRvIHdpbmRvdyB3aW5leGVjIHdudGVzdGIgd250ZXN0Yl83IHdudGVzdHEgeGNoYXJ0IHhjaGFydF83IHhjb3JyIHhjb3JyXzcgeGkgeGlfNiB4bWxzYXYgeG1sc2F2ZSB4bWx1c2UgeHBvc2UgeHNoIHhzaGUgeHNoZWwgeHNoZWxsIHh0X2lpcyB4dF90aXMgeHRhYl9wIHh0YWJvbmQgeHRiaW5fcCB4dGNsb2cgeHRjbG9nbG9nIHh0Y2xvZ2xvZ184IHh0Y2xvZ2xvZ19kMiB4dGNsb2dsb2dfcGFfcCB4dGNsb2dsb2dfcmVfcCB4dGNudF9wIHh0Y29yciB4dGRhdGEgeHRkZXMgeHRmcm9udF9wIHh0ZnJvbnRpZXIgeHRnZWUgeHRnZWVfZWxpbmsgeHRnZWVfZXN0YXQgeHRnZWVfbWFrZWl2YXIgeHRnZWVfcCB4dGdlZV9wbGluayB4dGdscyB4dGdsc19wIHh0aGF1cyB4dGhhdXNtYW4geHRodF9wIHh0aHRheWxvciB4dGlsZSB4dGludF9wIHh0aW50cmVnIHh0aW50cmVnXzggeHRpbnRyZWdfZDIgeHRpbnRyZWdfcCB4dGl2cF8xIHh0aXZwXzIgeHRpdnJlZyB4dGxpbmUgeHRsaW5lX2V4IHh0bG9naXQgeHRsb2dpdF84IHh0bG9naXRfZDIgeHRsb2dpdF9mZV9wIHh0bG9naXRfcGFfcCB4dGxvZ2l0X3JlX3AgeHRtaXhlZCB4dG1peGVkX2VzdGF0IHh0bWl4ZWRfcCB4dG5iX2ZlIHh0bmJfbGYgeHRuYnJlZyB4dG5icmVnX3BhX3AgeHRuYnJlZ19yZWZlX3AgeHRwY3NlIHh0cGNzZV9wIHh0cG9pcyB4dHBvaXNzb24geHRwb2lzc29uX2QyIHh0cG9pc3Nvbl9wYV9wIHh0cG9pc3Nvbl9yZWZlX3AgeHRwcmVkIHh0cHJvYml0IHh0cHJvYml0XzggeHRwcm9iaXRfZDIgeHRwcm9iaXRfcmVfcCB4dHBzX2ZlIHh0cHNfbGYgeHRwc19yZW4geHRwc19yZW5fOCB4dHJhcl9wIHh0cmMgeHRyY19wIHh0cmNoaCB4dHJlZmVfcCB4dHJlZyB4dHJlZ19iZSB4dHJlZ19mZSB4dHJlZ19tbCB4dHJlZ19wYV9wIHh0cmVnX3JlIHh0cmVnYXIgeHRyZXJlX3AgeHRzZXQgeHRzZl9sbCB4dHNmX2xsdGkgeHRzdW0geHR0YWIgeHR0ZXN0MCB4dHRvYml0IHh0dG9iaXRfOCB4dHRvYml0X3AgeHR0cmFucyB5eCB5eHZpZXdfX2Jhcmxpa2VfZHJhdyB5eHZpZXdfYXJlYV9kcmF3IHl4dmlld19iYXJfZHJhdyB5eHZpZXdfZG90X2RyYXcgeXh2aWV3X2Ryb3BsaW5lX2RyYXcgeXh2aWV3X2Z1bmN0aW9uX2RyYXcgeXh2aWV3X2lhcnJvd19kcmF3IHl4dmlld19pbGFiZWxzX2RyYXcgeXh2aWV3X25vcm1hbF9kcmF3IHl4dmlld19wY2Fycm93X2RyYXcgeXh2aWV3X3BjYmFycm93X2RyYXcgeXh2aWV3X3BjY2Fwc3ltX2RyYXcgeXh2aWV3X3Bjc2NhdHRlcl9kcmF3IHl4dmlld19wY3NwaWtlX2RyYXcgeXh2aWV3X3JhcmVhX2RyYXcgeXh2aWV3X3JiYXJfZHJhdyB5eHZpZXdfcmJhcm1fZHJhdyB5eHZpZXdfcmNhcF9kcmF3IHl4dmlld19yY2Fwc3ltX2RyYXcgeXh2aWV3X3Jjb25uZWN0ZWRfZHJhdyB5eHZpZXdfcmxpbmVfZHJhdyB5eHZpZXdfcnNjYXR0ZXJfZHJhdyB5eHZpZXdfcnNwaWtlX2RyYXcgeXh2aWV3X3NwaWtlX2RyYXcgeXh2aWV3X3N1bmZsb3dlcl9kcmF3IHphcF9zIHppbmIgemluYl9sbGYgemluYl9wbGYgemlwIHppcF9sbGYgemlwX3AgemlwX3BsZiB6dF9jdF81IHp0X2hjXzUgenRfaGNkXzUgenRfaXNfNSB6dF9pc3NfNSB6dF9zaG9fNSB6dF9zbXBfNSB6dGJhc2VfNSB6dGNveF81IHp0ZGVzXzUgenRlcmVnXzUgenRmaWxsXzUgenRnZW5fNSB6dGlyXzUgenRqb2luXzUgenRuYiB6dG5iX3AgenRwIHp0cF9wIHp0c181IHp0c2V0XzUgenRzcGxpXzUgenRzdW1fNSB6dHRvY3RfNSB6dHZhcnlfNSB6dHdlaWJfNScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvYFthLXpBLVowLTlfXSsnL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcJFxcez9bYS16QS1aMC05X10rXFx9Py9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnYFwiW15cXHJcXG5dKj9cIlxcJyd9LFxuICAgICAgICAgIHtiZWdpbjogJ1wiW15cXHJcXG5cIl0qXCInfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKGFic3xhY29zfGFzaW58YXRhbnxhdGFuMnxhdGFuaHxjZWlsfGNsb2dsb2d8Y29tYnxjb3N8ZGlnYW1tYXxleHB8Zmxvb3J8aW52Y2xvZ2xvZ3xpbnZsb2dpdHxsbnxsbmZhY3R8bG5mYWN0b3JpYWx8bG5nYW1tYXxsb2d8bG9nMTB8bWF4fG1pbnxtb2R8cmVsZGlmfHJvdW5kfHNpZ258c2lufHNxcnR8c3VtfHRhbnx0YW5ofHRyaWdhbW1hfHRydW5jfGJldGFkZW58Qmlub21pYWx8Ymlub3JtfGJpbm9ybWFsfGNoaTJ8Y2hpMnRhaWx8ZGdhbW1hcGRhfGRnYW1tYXBkYWRhfGRnYW1tYXBkYWR4fGRnYW1tYXBkeHxkZ2FtbWFwZHhkeHxGfEZkZW58RnRhaWx8Z2FtbWFkZW58Z2FtbWFwfGliZXRhfGludmJpbm9taWFsfGludmNoaTJ8aW52Y2hpMnRhaWx8aW52RnxpbnZGdGFpbHxpbnZnYW1tYXB8aW52aWJldGF8aW52bmNoaTJ8aW52bkZ0YWlsfGludm5pYmV0YXxpbnZub3JtfGludm5vcm1hbHxpbnZ0dGFpbHxuYmV0YWRlbnxuY2hpMnxuRmRlbnxuRnRhaWx8bmliZXRhfG5vcm18bm9ybWFsfG5vcm1hbGRlbnxub3JtZHxucG5jaGkyfHRkZW58dHRhaWx8dW5pZm9ybXxhYmJyZXZ8Y2hhcnxpbmRleHxpbmRleG5vdHxsZW5ndGh8bG93ZXJ8bHRyaW18bWF0Y2h8cGx1cmFsfHByb3BlcnxyZWFsfHJlZ2V4bXxyZWdleHJ8cmVnZXhzfHJldmVyc2V8cnRyaW18c3RyaW5nfHN0cmxlbnxzdHJsb3dlcnxzdHJsdHJpbXxzdHJtYXRjaHxzdHJvZnJlYWx8c3RycG9zfHN0cnByb3BlcnxzdHJyZXZlcnNlfHN0cnJ0cmltfHN0cnRyaW18c3RydXBwZXJ8c3ViaW5zdHJ8c3ViaW53b3JkfHN1YnN0cnx0cmltfHVwcGVyfHdvcmR8d29yZGNvdW50fF9jYWxsZXJ8YXV0b2NvZGV8Ynl0ZW9yZGVyfGNob3B8Y2xpcHxjb25kfGV8ZXBzZG91YmxlfGVwc2Zsb2F0fGdyb3VwfGlubGlzdHxpbnJhbmdlfGlyZWNvZGV8bWF0cml4fG1heGJ5dGV8bWF4ZG91YmxlfG1heGZsb2F0fG1heGludHxtYXhsb25nfG1pfG1pbmJ5dGV8bWluZG91YmxlfG1pbmZsb2F0fG1pbmludHxtaW5sb25nfG1pc3Npbmd8cnxyZWNvZGV8cmVwbGF5fHJldHVybnxzfHNjYWxhcnxkfGRhdGV8ZGF5fGRvd3xkb3l8aGFsZnllYXJ8bWR5fG1vbnRofHF1YXJ0ZXJ8d2Vla3x5ZWFyfGR8ZGFpbHl8ZG9mZHxkb2ZofGRvZm18ZG9mcXxkb2Z3fGRvZnl8aHxoYWxmeWVhcmx5fGhvZmR8bXxtb2ZkfG1vbnRobHl8cXxxb2ZkfHF1YXJ0ZXJseXx0aW58dHdpdGhpbnx3fHdlZWtseXx3b2ZkfHl8eWVhcmx5fHlofHltfHlvZmR8eXF8eXd8Y2hvbGVza3l8Y29sbnVtYnxjb2xzb2Z8Y29ycnxkZXR8ZGlhZ3xkaWFnMGNudHxlbHxnZXR8aGFkYW1hcmR8SXxpbnZ8aW52c3ltfGlzc3ltfGlzc3ltbWV0cmljfEp8bWF0bWlzc2luZ3xtYXR1bmlmb3JtfG1yZWxkaWZ8bnVsbG1hdHxyb3dudW1ifHJvd3NvZnxzd2VlcHxzeW1pbnZ8dHJhY2V8dmVjfHZlY2RpYWcpKD89XFxcXCgpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgaGxqcy5DT01NRU5UKCdeWyBcXHRdKlxcXFwqLiokJywgZmFsc2UpLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVEVQMjFfSURFTlRfUkUgPSAnW0EtWl9dW0EtWjAtOV8uXSonO1xuICB2YXIgU1RFUDIxX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdIRUFERVIgRU5EU0VDIERBVEEnXG4gIH07XG4gIHZhciBTVEVQMjFfU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdJU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG4gIHZhciBTVEVQMjFfQ0xPU0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdFTkQtSVNPLTEwMzAzLTIxOycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydwMjEnLCAnc3RlcCcsICdzdHAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTVEVQIDIxIGlzIGNhc2UgaW5zZW5zaXRpdmUgaW4gdGhlb3J5LCBpbiBwcmFjdGljZSBhbGwgbm9uLWNvbW1lbnRzIGFyZSBjYXBpdGFsaXplZC5cbiAgICBsZXhlbWVzOiBTVEVQMjFfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IFNURVAyMV9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RFUDIxX1NUQVJULFxuICAgICAgU1RFUDIxX0NMT1NFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqXFxcXCohJywgJ1xcXFwqLycpLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnXFxcXGQrJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcVydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJCcgKyBobGpzLklERU5UX1JFXG4gIH07XG5cbiAgdmFyIEhFWF9DT0xPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnIyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSknXG4gIH07XG5cbiAgdmFyIEFUX0tFWVdPUkRTID0gW1xuICAgICdjaGFyc2V0JyxcbiAgICAnY3NzJyxcbiAgICAnZGVidWcnLFxuICAgICdleHRlbmQnLFxuICAgICdmb250LWZhY2UnLFxuICAgICdmb3InLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmNsdWRlJyxcbiAgICAnbWVkaWEnLFxuICAgICdtaXhpbicsXG4gICAgJ3BhZ2UnLFxuICAgICd3YXJuJyxcbiAgICAnd2hpbGUnXG4gIF07XG5cbiAgdmFyIFBTRVVET19TRUxFQ1RPUlMgPSBbXG4gICAgJ2FmdGVyJyxcbiAgICAnYmVmb3JlJyxcbiAgICAnZmlyc3QtbGV0dGVyJyxcbiAgICAnZmlyc3QtbGluZScsXG4gICAgJ2FjdGl2ZScsXG4gICAgJ2ZpcnN0LWNoaWxkJyxcbiAgICAnZm9jdXMnLFxuICAgICdob3ZlcicsXG4gICAgJ2xhbmcnLFxuICAgICdsaW5rJyxcbiAgICAndmlzaXRlZCdcbiAgXTtcblxuICB2YXIgVEFHUyA9IFtcbiAgICAnYScsXG4gICAgJ2FiYnInLFxuICAgICdhZGRyZXNzJyxcbiAgICAnYXJ0aWNsZScsXG4gICAgJ2FzaWRlJyxcbiAgICAnYXVkaW8nLFxuICAgICdiJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2JvZHknLFxuICAgICdidXR0b24nLFxuICAgICdjYW52YXMnLFxuICAgICdjYXB0aW9uJyxcbiAgICAnY2l0ZScsXG4gICAgJ2NvZGUnLFxuICAgICdkZCcsXG4gICAgJ2RlbCcsXG4gICAgJ2RldGFpbHMnLFxuICAgICdkZm4nLFxuICAgICdkaXYnLFxuICAgICdkbCcsXG4gICAgJ2R0JyxcbiAgICAnZW0nLFxuICAgICdmaWVsZHNldCcsXG4gICAgJ2ZpZ2NhcHRpb24nLFxuICAgICdmaWd1cmUnLFxuICAgICdmb290ZXInLFxuICAgICdmb3JtJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaGVhZGVyJyxcbiAgICAnaGdyb3VwJyxcbiAgICAnaHRtbCcsXG4gICAgJ2knLFxuICAgICdpZnJhbWUnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2lucycsXG4gICAgJ2tiZCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGVnZW5kJyxcbiAgICAnbGknLFxuICAgICdtYXJrJyxcbiAgICAnbWVudScsXG4gICAgJ25hdicsXG4gICAgJ29iamVjdCcsXG4gICAgJ29sJyxcbiAgICAncCcsXG4gICAgJ3EnLFxuICAgICdxdW90ZScsXG4gICAgJ3NhbXAnLFxuICAgICdzZWN0aW9uJyxcbiAgICAnc3BhbicsXG4gICAgJ3N0cm9uZycsXG4gICAgJ3N1bW1hcnknLFxuICAgICdzdXAnLFxuICAgICd0YWJsZScsXG4gICAgJ3Rib2R5JyxcbiAgICAndGQnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3Rmb290JyxcbiAgICAndGgnLFxuICAgICd0aGVhZCcsXG4gICAgJ3RpbWUnLFxuICAgICd0cicsXG4gICAgJ3VsJyxcbiAgICAndmFyJyxcbiAgICAndmlkZW8nXG4gIF07XG5cbiAgdmFyIExPT0tBSEVBRF9UQUdfRU5EID0gJyg/PVtcXFxcLlxcXFxzXFxcXG5cXFxcW1xcXFw6LF0pJztcblxuICB2YXIgQVRUUklCVVRFUyA9IFtcbiAgICAnYWxpZ24tY29udGVudCcsXG4gICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAnYWxpZ24tc2VsZicsXG4gICAgJ2FuaW1hdGlvbicsXG4gICAgJ2FuaW1hdGlvbi1kZWxheScsXG4gICAgJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLFxuICAgICdhbmltYXRpb24tZHVyYXRpb24nLFxuICAgICdhbmltYXRpb24tZmlsbC1tb2RlJyxcbiAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsXG4gICAgJ2FuaW1hdGlvbi1uYW1lJyxcbiAgICAnYW5pbWF0aW9uLXBsYXktc3RhdGUnLFxuICAgICdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICAnYXV0bycsXG4gICAgJ2JhY2tmYWNlLXZpc2liaWxpdHknLFxuICAgICdiYWNrZ3JvdW5kJyxcbiAgICAnYmFja2dyb3VuZC1hdHRhY2htZW50JyxcbiAgICAnYmFja2dyb3VuZC1jbGlwJyxcbiAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2UnLFxuICAgICdiYWNrZ3JvdW5kLW9yaWdpbicsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24nLFxuICAgICdiYWNrZ3JvdW5kLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtc2l6ZScsXG4gICAgJ2JvcmRlcicsXG4gICAgJ2JvcmRlci1ib3R0b20nLFxuICAgICdib3JkZXItYm90dG9tLWNvbG9yJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1zdHlsZScsXG4gICAgJ2JvcmRlci1ib3R0b20td2lkdGgnLFxuICAgICdib3JkZXItY29sbGFwc2UnLFxuICAgICdib3JkZXItY29sb3InLFxuICAgICdib3JkZXItaW1hZ2UnLFxuICAgICdib3JkZXItaW1hZ2Utb3V0c2V0JyxcbiAgICAnYm9yZGVyLWltYWdlLXJlcGVhdCcsXG4gICAgJ2JvcmRlci1pbWFnZS1zbGljZScsXG4gICAgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLFxuICAgICdib3JkZXItaW1hZ2Utd2lkdGgnLFxuICAgICdib3JkZXItbGVmdCcsXG4gICAgJ2JvcmRlci1sZWZ0LWNvbG9yJyxcbiAgICAnYm9yZGVyLWxlZnQtc3R5bGUnLFxuICAgICdib3JkZXItbGVmdC13aWR0aCcsXG4gICAgJ2JvcmRlci1yYWRpdXMnLFxuICAgICdib3JkZXItcmlnaHQnLFxuICAgICdib3JkZXItcmlnaHQtY29sb3InLFxuICAgICdib3JkZXItcmlnaHQtc3R5bGUnLFxuICAgICdib3JkZXItcmlnaHQtd2lkdGgnLFxuICAgICdib3JkZXItc3BhY2luZycsXG4gICAgJ2JvcmRlci1zdHlsZScsXG4gICAgJ2JvcmRlci10b3AnLFxuICAgICdib3JkZXItdG9wLWNvbG9yJyxcbiAgICAnYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cycsXG4gICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAnYm9yZGVyLXRvcC1zdHlsZScsXG4gICAgJ2JvcmRlci10b3Atd2lkdGgnLFxuICAgICdib3JkZXItd2lkdGgnLFxuICAgICdib3R0b20nLFxuICAgICdib3gtZGVjb3JhdGlvbi1icmVhaycsXG4gICAgJ2JveC1zaGFkb3cnLFxuICAgICdib3gtc2l6aW5nJyxcbiAgICAnYnJlYWstYWZ0ZXInLFxuICAgICdicmVhay1iZWZvcmUnLFxuICAgICdicmVhay1pbnNpZGUnLFxuICAgICdjYXB0aW9uLXNpZGUnLFxuICAgICdjbGVhcicsXG4gICAgJ2NsaXAnLFxuICAgICdjbGlwLXBhdGgnLFxuICAgICdjb2xvcicsXG4gICAgJ2NvbHVtbi1jb3VudCcsXG4gICAgJ2NvbHVtbi1maWxsJyxcbiAgICAnY29sdW1uLWdhcCcsXG4gICAgJ2NvbHVtbi1ydWxlJyxcbiAgICAnY29sdW1uLXJ1bGUtY29sb3InLFxuICAgICdjb2x1bW4tcnVsZS1zdHlsZScsXG4gICAgJ2NvbHVtbi1ydWxlLXdpZHRoJyxcbiAgICAnY29sdW1uLXNwYW4nLFxuICAgICdjb2x1bW4td2lkdGgnLFxuICAgICdjb2x1bW5zJyxcbiAgICAnY29udGVudCcsXG4gICAgJ2NvdW50ZXItaW5jcmVtZW50JyxcbiAgICAnY291bnRlci1yZXNldCcsXG4gICAgJ2N1cnNvcicsXG4gICAgJ2RpcmVjdGlvbicsXG4gICAgJ2Rpc3BsYXknLFxuICAgICdlbXB0eS1jZWxscycsXG4gICAgJ2ZpbHRlcicsXG4gICAgJ2ZsZXgnLFxuICAgICdmbGV4LWJhc2lzJyxcbiAgICAnZmxleC1kaXJlY3Rpb24nLFxuICAgICdmbGV4LWZsb3cnLFxuICAgICdmbGV4LWdyb3cnLFxuICAgICdmbGV4LXNocmluaycsXG4gICAgJ2ZsZXgtd3JhcCcsXG4gICAgJ2Zsb2F0JyxcbiAgICAnZm9udCcsXG4gICAgJ2ZvbnQtZmFtaWx5JyxcbiAgICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgICAnZm9udC1rZXJuaW5nJyxcbiAgICAnZm9udC1sYW5ndWFnZS1vdmVycmlkZScsXG4gICAgJ2ZvbnQtc2l6ZScsXG4gICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICAgICdmb250LXN0cmV0Y2gnLFxuICAgICdmb250LXN0eWxlJyxcbiAgICAnZm9udC12YXJpYW50JyxcbiAgICAnZm9udC12YXJpYW50LWxpZ2F0dXJlcycsXG4gICAgJ2ZvbnQtd2VpZ2h0JyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnaHlwaGVucycsXG4gICAgJ2ljb24nLFxuICAgICdpbWFnZS1vcmllbnRhdGlvbicsXG4gICAgJ2ltYWdlLXJlbmRlcmluZycsXG4gICAgJ2ltYWdlLXJlc29sdXRpb24nLFxuICAgICdpbWUtbW9kZScsXG4gICAgJ2luaGVyaXQnLFxuICAgICdpbml0aWFsJyxcbiAgICAnanVzdGlmeS1jb250ZW50JyxcbiAgICAnbGVmdCcsXG4gICAgJ2xldHRlci1zcGFjaW5nJyxcbiAgICAnbGluZS1oZWlnaHQnLFxuICAgICdsaXN0LXN0eWxlJyxcbiAgICAnbGlzdC1zdHlsZS1pbWFnZScsXG4gICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLFxuICAgICdsaXN0LXN0eWxlLXR5cGUnLFxuICAgICdtYXJnaW4nLFxuICAgICdtYXJnaW4tYm90dG9tJyxcbiAgICAnbWFyZ2luLWxlZnQnLFxuICAgICdtYXJnaW4tcmlnaHQnLFxuICAgICdtYXJnaW4tdG9wJyxcbiAgICAnbWFya3MnLFxuICAgICdtYXNrJyxcbiAgICAnbWF4LWhlaWdodCcsXG4gICAgJ21heC13aWR0aCcsXG4gICAgJ21pbi1oZWlnaHQnLFxuICAgICdtaW4td2lkdGgnLFxuICAgICduYXYtZG93bicsXG4gICAgJ25hdi1pbmRleCcsXG4gICAgJ25hdi1sZWZ0JyxcbiAgICAnbmF2LXJpZ2h0JyxcbiAgICAnbmF2LXVwJyxcbiAgICAnbm9uZScsXG4gICAgJ25vcm1hbCcsXG4gICAgJ29iamVjdC1maXQnLFxuICAgICdvYmplY3QtcG9zaXRpb24nLFxuICAgICdvcGFjaXR5JyxcbiAgICAnb3JkZXInLFxuICAgICdvcnBoYW5zJyxcbiAgICAnb3V0bGluZScsXG4gICAgJ291dGxpbmUtY29sb3InLFxuICAgICdvdXRsaW5lLW9mZnNldCcsXG4gICAgJ291dGxpbmUtc3R5bGUnLFxuICAgICdvdXRsaW5lLXdpZHRoJyxcbiAgICAnb3ZlcmZsb3cnLFxuICAgICdvdmVyZmxvdy13cmFwJyxcbiAgICAnb3ZlcmZsb3cteCcsXG4gICAgJ292ZXJmbG93LXknLFxuICAgICdwYWRkaW5nJyxcbiAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAncGFkZGluZy10b3AnLFxuICAgICdwYWdlLWJyZWFrLWFmdGVyJyxcbiAgICAncGFnZS1icmVhay1iZWZvcmUnLFxuICAgICdwYWdlLWJyZWFrLWluc2lkZScsXG4gICAgJ3BlcnNwZWN0aXZlJyxcbiAgICAncGVyc3BlY3RpdmUtb3JpZ2luJyxcbiAgICAncG9pbnRlci1ldmVudHMnLFxuICAgICdwb3NpdGlvbicsXG4gICAgJ3F1b3RlcycsXG4gICAgJ3Jlc2l6ZScsXG4gICAgJ3JpZ2h0JyxcbiAgICAndGFiLXNpemUnLFxuICAgICd0YWJsZS1sYXlvdXQnLFxuICAgICd0ZXh0LWFsaWduJyxcbiAgICAndGV4dC1hbGlnbi1sYXN0JyxcbiAgICAndGV4dC1kZWNvcmF0aW9uJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLWxpbmUnLFxuICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnLFxuICAgICd0ZXh0LWluZGVudCcsXG4gICAgJ3RleHQtb3ZlcmZsb3cnLFxuICAgICd0ZXh0LXJlbmRlcmluZycsXG4gICAgJ3RleHQtc2hhZG93JyxcbiAgICAndGV4dC10cmFuc2Zvcm0nLFxuICAgICd0ZXh0LXVuZGVybGluZS1wb3NpdGlvbicsXG4gICAgJ3RvcCcsXG4gICAgJ3RyYW5zZm9ybScsXG4gICAgJ3RyYW5zZm9ybS1vcmlnaW4nLFxuICAgICd0cmFuc2Zvcm0tc3R5bGUnLFxuICAgICd0cmFuc2l0aW9uJyxcbiAgICAndHJhbnNpdGlvbi1kZWxheScsXG4gICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JyxcbiAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAgICd1bmljb2RlLWJpZGknLFxuICAgICd2ZXJ0aWNhbC1hbGlnbicsXG4gICAgJ3Zpc2liaWxpdHknLFxuICAgICd3aGl0ZS1zcGFjZScsXG4gICAgJ3dpZG93cycsXG4gICAgJ3dpZHRoJyxcbiAgICAnd29yZC1icmVhaycsXG4gICAgJ3dvcmQtc3BhY2luZycsXG4gICAgJ3dvcmQtd3JhcCcsXG4gICAgJ3otaW5kZXgnXG4gIF07XG5cbiAgLy8gaWxsZWdhbHNcbiAgdmFyIElMTEVHQUwgPSBbXG4gICAgJ1xcXFw/JyxcbiAgICAnKFxcXFxiUmV0dXJuXFxcXGIpJywgLy8gbW9ua2V5XG4gICAgJyhcXFxcYkVuZFxcXFxiKScsIC8vIG1vbmtleVxuICAgICcoXFxcXGJlbmRcXFxcYiknLCAvLyB2YnNjcmlwdFxuICAgICcoXFxcXGJkZWZcXFxcYiknLCAvLyBncmFkbGVcbiAgICAnOycsIC8vIGEgd2hvbGUgbG90IG9mIGxhbmd1YWdlc1xuICAgICcjXFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcKlxcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnPT09XFxcXHMnLCAvLyBtYXJrZG93blxuICAgICdcXFxcfCcsXG4gICAgJyUnLCAvLyBwcm9sb2dcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnc3R5bCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiAnaWYgZWxzZSBmb3IgaW4nLFxuICAgIGlsbGVnYWw6ICcoJyArIElMTEVHQUwuam9pbignfCcpICsgJyknLFxuICAgIGNvbnRhaW5zOiBbXG5cbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG5cbiAgICAgIC8vIGNvbW1lbnRzXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuXG4gICAgICAvLyBoZXggY29sb3JzXG4gICAgICBIRVhfQ09MT1IsXG5cbiAgICAgIC8vIGNsYXNzIHRhZ1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwuW2EtekEtWl1bYS16QS1aMC05Xy1dKicgKyBMT09LQUhFQURfVEFHX0VORCxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnXG4gICAgICB9LFxuXG4gICAgICAvLyBpZCB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcI1thLXpBLVpdW2EtekEtWjAtOV8tXSonICsgTE9PS0FIRUFEX1RBR19FTkQsXG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWlkJ1xuICAgICAgfSxcblxuICAgICAgLy8gdGFnc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUQUdTLmpvaW4oJ3wnKSArICcpJyArIExPT0tBSEVBRF9UQUdfRU5ELFxuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnXG4gICAgICB9LFxuXG4gICAgICAvLyBwc3VlZG8gc2VsZWN0b3JzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnJj86PzpcXFxcYignICsgUFNFVURPX1NFTEVDVE9SUy5qb2luKCd8JykgKyAnKScgKyBMT09LQUhFQURfVEFHX0VORFxuICAgICAgfSxcblxuICAgICAgLy8gQCBrZXl3b3Jkc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcQCgnICsgQVRfS0VZV09SRFMuam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH0sXG5cbiAgICAgIC8vIHZhcmlhYmxlc1xuICAgICAgVkFSSUFCTEUsXG5cbiAgICAgIC8vIGRpbWVuc2lvblxuICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG5cbiAgICAgIC8vIG51bWJlclxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcblxuICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeW2EtekEtWl1bYS16QS1aMC05X1xcLV0qXFxcXCguKlxcXFwpJyxcbiAgICAgICAgaWxsZWdhbDogJ1tcXFxcbl0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAndGl0bGUnLCBiZWdpbjogJ1xcXFxiW2EtekEtWl1bYS16QS1aMC05X1xcLV0qJ30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBIRVhfQ09MT1IsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBhdHRyaWJ1dGVzXG4gICAgICAvLyAgLSBvbmx5IGZyb20gYmVnaW5uaW5nIG9mIGxpbmUgKyB3aGl0ZXNwYWNlXG4gICAgICAvLyAgLSBtdXN0IGhhdmUgd2hpdGVzcGFjZSBhZnRlciBpdFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLnJldmVyc2UoKS5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgLy8gdmFsdWUgY29udGFpbmVyXG4gICAgICAgICAgZW5kOiAvO3wkLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgSEVYX0NPTE9SLFxuICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgIF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcLi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgREVUQUlMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFxcXFtcXG4obXVsdGlwYXJ0KT8nLCBlbmQ6ICdcXFxcXVxcbidcbiAgfTtcbiAgdmFyIFRJTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9KFxcXFxzKylcXFxcZHsyfTpcXFxcZHsyfTpcXFxcZHsyfVxcLlxcXFxkK1onXG4gIH07XG4gIHZhciBQUk9HUkVTU1ZBTFVFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICcoXFxcXCt8LSlcXFxcZCsnXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXih0ZXN0fHRlc3Rpbmd8c3VjY2Vzc3xzdWNjZXNzZnVsfGZhaWx1cmV8ZXJyb3J8c2tpcHx4ZmFpbHx1eHN1Y2Nlc3MpKDo/KVxcXFxzKyh0ZXN0KT8nIH0sXG4gICAgICB7IGJlZ2luOiAnXnByb2dyZXNzKDo/KShcXFxccyspPyhwb3B8cHVzaCk/JyB9LFxuICAgICAgeyBiZWdpbjogJ150YWdzOicgfSxcbiAgICAgIHsgYmVnaW46ICdedGltZTonIH1cbiAgICBdLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERFVEFJTFMsXG4gICAgICBUSU1FLFxuICAgICAgUFJPR1JFU1NWQUxVRSxcbiAgICAgIEtFWVdPUkRTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNXSUZUX0tFWVdPUkRTID0ge1xuICAgICAga2V5d29yZDogJyNhdmFpbGFibGUgI2NvbG9yTGl0ZXJhbCAjY29sdW1uICNlbHNlICNlbHNlaWYgI2VuZGlmICNmaWxlICcgK1xuICAgICAgICAnI2ZpbGVMaXRlcmFsICNmdW5jdGlvbiAjaWYgI2ltYWdlTGl0ZXJhbCAjbGluZSAjc2VsZWN0b3IgI3NvdXJjZUxvY2F0aW9uICcgK1xuICAgICAgICAnXyBfX0NPTFVNTl9fIF9fRklMRV9fIF9fRlVOQ1RJT05fXyBfX0xJTkVfXyBBbnkgYXMgYXMhIGFzPyBhc3NvY2lhdGVkdHlwZSAnICtcbiAgICAgICAgJ2Fzc29jaWF0aXZpdHkgYnJlYWsgY2FzZSBjYXRjaCBjbGFzcyBjb250aW51ZSBjb252ZW5pZW5jZSBkZWZhdWx0IGRlZmVyIGRlaW5pdCBkaWRTZXQgZG8gJyArXG4gICAgICAgICdkeW5hbWljIGR5bmFtaWNUeXBlIGVsc2UgZW51bSBleHRlbnNpb24gZmFsbHRocm91Z2ggZmFsc2UgZmlsZXByaXZhdGUgZmluYWwgZm9yIGZ1bmMgJyArXG4gICAgICAgICdnZXQgZ3VhcmQgaWYgaW1wb3J0IGluIGluZGlyZWN0IGluZml4IGluaXQgaW5vdXQgaW50ZXJuYWwgaXMgbGF6eSBsZWZ0IGxldCAnICtcbiAgICAgICAgJ211dGF0aW5nIG5pbCBub25lIG5vbm11dGF0aW5nIG9wZW4gb3BlcmF0b3Igb3B0aW9uYWwgb3ZlcnJpZGUgcG9zdGZpeCBwcmVjZWRlbmNlICcgK1xuICAgICAgICAncHJlZml4IHByaXZhdGUgcHJvdG9jb2wgUHJvdG9jb2wgcHVibGljIHJlcGVhdCByZXF1aXJlZCByZXRocm93cyByZXR1cm4gJyArXG4gICAgICAgICdyaWdodCBzZWxmIFNlbGYgc2V0IHN0YXRpYyBzdHJ1Y3Qgc3Vic2NyaXB0IHN1cGVyIHN3aXRjaCB0aHJvdyB0aHJvd3MgdHJ1ZSAnICtcbiAgICAgICAgJ3RyeSB0cnkhIHRyeT8gVHlwZSB0eXBlYWxpYXMgdW5vd25lZCB2YXIgd2VhayB3aGVyZSB3aGlsZSB3aWxsU2V0JyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG5pbCcsXG4gICAgICBidWlsdF9pbjogJ2FicyBhZHZhbmNlIGFsaWdub2YgYWxpZ25vZlZhbHVlIGFueUdlbmVyYXRvciBhc3NlcnQgYXNzZXJ0aW9uRmFpbHVyZSAnICtcbiAgICAgICAgJ2JyaWRnZUZyb21PYmplY3RpdmVDIGJyaWRnZUZyb21PYmplY3RpdmVDVW5jb25kaXRpb25hbCBicmlkZ2VUb09iamVjdGl2ZUMgJyArXG4gICAgICAgICdicmlkZ2VUb09iamVjdGl2ZUNVbmNvbmRpdGlvbmFsIGMgY29udGFpbnMgY291bnQgY291bnRFbGVtZW50cyBjb3VudExlYWRpbmdaZXJvcyAnICtcbiAgICAgICAgJ2RlYnVnUHJpbnQgZGVidWdQcmludGxuIGRpc3RhbmNlIGRyb3BGaXJzdCBkcm9wTGFzdCBkdW1wIGVuY29kZUJpdHNBc1dvcmRzICcgK1xuICAgICAgICAnZW51bWVyYXRlIGVxdWFsIGZhdGFsRXJyb3IgZmlsdGVyIGZpbmQgZ2V0QnJpZGdlZE9iamVjdGl2ZUNUeXBlIGdldFZhTGlzdCAnICtcbiAgICAgICAgJ2luZGljZXMgaW5zZXJ0aW9uU29ydCBpc0JyaWRnZWRUb09iamVjdGl2ZUMgaXNCcmlkZ2VkVmVyYmF0aW1Ub09iamVjdGl2ZUMgJyArXG4gICAgICAgICdpc1VuaXF1ZWx5UmVmZXJlbmNlZCBpc1VuaXF1ZWx5UmVmZXJlbmNlZE5vbk9iakMgam9pbiBsYXp5IGxleGljb2dyYXBoaWNhbENvbXBhcmUgJyArXG4gICAgICAgICdtYXAgbWF4IG1heEVsZW1lbnQgbWluIG1pbkVsZW1lbnQgbnVtZXJpY0Nhc3Qgb3ZlcmxhcHMgcGFydGl0aW9uIHBvc2l4ICcgK1xuICAgICAgICAncHJlY29uZGl0aW9uIHByZWNvbmRpdGlvbkZhaWx1cmUgcHJpbnQgcHJpbnRsbiBxdWlja1NvcnQgcmVhZExpbmUgcmVkdWNlIHJlZmxlY3QgJyArXG4gICAgICAgICdyZWludGVycHJldENhc3QgcmV2ZXJzZSByb3VuZFVwVG9BbGlnbm1lbnQgc2l6ZW9mIHNpemVvZlZhbHVlIHNvcnQgc3BsaXQgJyArXG4gICAgICAgICdzdGFydHNXaXRoIHN0cmlkZSBzdHJpZGVvZiBzdHJpZGVvZlZhbHVlIHN3YXAgdG9TdHJpbmcgdHJhbnNjb2RlICcgK1xuICAgICAgICAndW5kZXJlc3RpbWF0ZUNvdW50IHVuc2FmZUFkZHJlc3NPZiB1bnNhZmVCaXRDYXN0IHVuc2FmZURvd25jYXN0IHVuc2FmZVVud3JhcCAnICtcbiAgICAgICAgJ3Vuc2FmZVJlZmxlY3Qgd2l0aEV4dGVuZGVkTGlmZXRpbWUgd2l0aE9iamVjdEF0UGx1c1plcm8gd2l0aFVuc2FmZVBvaW50ZXIgJyArXG4gICAgICAgICd3aXRoVW5zYWZlUG9pbnRlclRvT2JqZWN0IHdpdGhVbnNhZmVNdXRhYmxlUG9pbnRlciB3aXRoVW5zYWZlTXV0YWJsZVBvaW50ZXJzICcgK1xuICAgICAgICAnd2l0aFVuc2FmZVBvaW50ZXIgd2l0aFVuc2FmZVBvaW50ZXJzIHdpdGhWYUxpc3QgemlwJ1xuICAgIH07XG5cbiAgdmFyIFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSonLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBzbGlnaHRseSBtb3JlIHNwZWNpYWwgdG8gc3dpZnRcbiAgdmFyIE9QVElPTkFMX1VTSU5HX1RZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFx1MDBDMC1cXHUwMkI4XFwnXSpbIT9dJ1xuICB9XG4gIHZhciBCTE9DS19DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLFxuICAgICdcXFxcKi8nLFxuICAgIHtcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgIH1cbiAgKTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcXFxcXCgvLCBlbmQ6ICdcXFxcKScsXG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAvLyBhc3NpZ25lZCBsYXRlclxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSUyA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJ1xcXFxiKFtcXFxcZF9dKyhcXFxcLltcXFxcZGVFX10rKT98MHhbYS1mQS1GMC05X10rKFxcXFwuW2EtZkEtRjAtOXBfXSspP3wwYlswMV9dK3wwb1swLTdfXSspXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW05VTUJFUlNdO1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBCTE9DS19DT01NRU5ULFxuICAgICAgT1BUSU9OQUxfVVNJTkdfVFlQRSxcbiAgICAgIFRZUEUsXG4gICAgICBOVU1CRVJTLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgYmVnaW46IC9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovXG4gICAgICAgICAgfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogU1dJRlRfS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAge2JlZ2luOiAnOid9IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaWxsZWdhbDogL1tcIiddL1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogL1xcW3wlL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3RydWN0IHByb3RvY29sIGNsYXNzIGV4dGVuc2lvbiBlbnVtJyxcbiAgICAgICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgICAgICBlbmQ6ICdcXFxceycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvW0EtWmEteiRfXVtcXHUwMEMwLVxcdTAyQjgwLTlBLVphLXokX10qL30pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCAvLyBAYXR0cmlidXRlc1xuICAgICAgICBiZWdpbjogJyhAZGlzY2FyZGFibGVSZXN1bHR8QHdhcm5fdW51c2VkX3Jlc3VsdHxAZXhwb3J0ZWR8QGxhenl8QG5vZXNjYXBlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0BOU0NvcHlpbmd8QE5TTWFuYWdlZHxAb2JqY3xAb2JqY01lbWJlcnN8QGNvbnZlbnRpb258QHJlcXVpcmVkfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub3JldHVybnxASUJBY3Rpb258QElCRGVzaWduYWJsZXxASUJJbnNwZWN0YWJsZXxASUJPdXRsZXR8JyArXG4gICAgICAgICAgICAgICAgICAnQGluZml4fEBwcmVmaXh8QHBvc3RmaXh8QGF1dG9jbG9zdXJlfEB0ZXN0YWJsZXxAYXZhaWxhYmxlfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bub25vYmpjfEBOU0FwcGxpY2F0aW9uTWFpbnxAVUlBcHBsaWNhdGlvbk1haW58QGR5bmFtaWNNZW1iZXJMb29rdXB8JyArXG4gICAgICAgICAgICAgICAgICAnQHByb3BlcnR5V3JhcHBlciknXG5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6IC8kLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTElORV9DT01NRU5UX01PREUsIEJMT0NLX0NPTU1FTlRdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogL1xcJG5vb3BcXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAgY29udGFpbnM6IFsnc2VsZicsIHtcbiAgICAgICAgYmVnaW46IC9cXFxcLi9cbiAgICAgIH1dXG4gICAgfV0sXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcJCg/IW5vb3ApW2EtekEtWl1bX2EtekEtWjAtOV0qLyxcbiAgICBlbmQ6IC9cXCgvLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvJVtfYS16QS1aMC05Ol0qLyxcbiAgICBlbmQ6ICclJ1xuICB9O1xuXG4gIHZhciBFU0NBUEVfU0VRVUVOQ0UgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogL1xcXFwuL1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlQsXG4gICAgICBGVU5DVElPTixcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRVNDQVBFX1NFUVVFTkNFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG51bGwnO1xuXG4gIC8vIERlZmluZSBrZXlzIGFzIHN0YXJ0aW5nIHdpdGggYSB3b3JkIGNoYXJhY3RlclxuICAvLyAuLi5jb250YWluaW5nIHdvcmQgY2hhcnMsIHNwYWNlcywgY29sb25zLCBmb3J3YXJkLXNsYXNoZXMsIGh5cGhlbnMgYW5kIHBlcmlvZHNcbiAgLy8gLi4uYW5kIGVuZGluZyB3aXRoIGEgY29sb24gZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYSBzcGFjZSwgdGFiIG9yIG5ld2xpbmUuXG4gIC8vIFRoZSBZQU1MIHNwZWMgYWxsb3dzIGZvciBtdWNoIG1vcmUgdGhhbiB0aGlzLCBidXQgdGhpcyBjb3ZlcnMgbW9zdCB1c2UtY2FzZXMuXG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcd1tcXFxcdyA6XFxcXC8uLV0qOig/PVsgXFx0XXwkKScgfSxcbiAgICAgIHsgYmVnaW46ICdcIlxcXFx3W1xcXFx3IDpcXFxcLy4tXSpcIjooPz1bIFxcdF18JCknIH0sIC8vZG91YmxlIHF1b3RlZCBrZXlzXG4gICAgICB7IGJlZ2luOiAnXFwnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKlxcJzooPz1bIFxcdF18JCknIH0gLy9zaW5nbGUgcXVvdGVkIGtleXNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRFTVBMQVRFX1ZBUklBQkxFUyA9IHtcbiAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXHtcXHsnLCBlbmQ6ICdcXH1cXH0nIH0sIC8vIGppbmphIHRlbXBsYXRlcyBBbnNpYmxlXG4gICAgICB7IGJlZ2luOiAnJVxceycsIGVuZDogJ1xcfScgfSAvLyBSdWJ5IGkxOG5cbiAgICBdXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogLycvLCBlbmQ6IC8nL30sXG4gICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgICB7YmVnaW46IC9cXFMrL31cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBURU1QTEFURV9WQVJJQUJMRVNcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsneW1sJywgJ1lBTUwnLCAneWFtbCddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBLRVksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ14tLS1cXHMqJCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7IC8vIG11bHRpIGxpbmUgc3RyaW5nXG4gICAgICAgIC8vIEJsb2NrcyBzdGFydCB3aXRoIGEgfCBvciA+IGZvbGxvd2VkIGJ5IGEgbmV3bGluZVxuICAgICAgICAvL1xuICAgICAgICAvLyBJbmRlbnRhdGlvbiBvZiBzdWJzZXF1ZW50IGxpbmVzIG11c3QgYmUgdGhlIHNhbWUgdG9cbiAgICAgICAgLy8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBibG9ja1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcfD5dKFswLTldP1srLV0pP1sgXSpcXFxcbiggKilbXFxcXFMgXStcXFxcbihcXFxcMltcXFxcUyBdK1xcXFxuPykqJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIFJ1YnkvUmFpbHMgZXJiXG4gICAgICAgIGJlZ2luOiAnPCVbJT0tXT8nLCBlbmQ6ICdbJS1dPyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5JyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIGxvY2FsIHRhZ3NcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnIScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICB9LFxuICAgICAgeyAvLyBkYXRhIHR5cGVcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnISEnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgfSxcbiAgICAgIHsgLy8gZnJhZ21lbnQgaWQgJnJlZlxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcmJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJyxcbiAgICAgIH0sXG4gICAgICB7IC8vIGZyYWdtZW50IHJlZmVyZW5jZSAqcmVmXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFwqJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICckJ1xuICAgICAgfSxcbiAgICAgIHsgLy8gYXJyYXkgbGlzdGluZ1xuICAgICAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgICAgLy8gVE9ETzogcmVtb3ZlIHwkIGhhY2sgd2hlbiB3ZSBoYXZlIHByb3BlciBsb29rLWFoZWFkIHN1cHBvcnRcbiAgICAgIGJlZ2luOiAnXFxcXC0oPz1bIF18JCknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBMSVRFUkFMUyxcbiAgICAgICAga2V5d29yZHM6IHtsaXRlcmFsOiBMSVRFUkFMU31cbiAgICAgIH0sXG4gICAgICAvLyBudW1iZXJzIGFyZSBhbnkgdmFsaWQgQy1zdHlsZSBudW1iZXIgdGhhdFxuICAgICAgLy8gc2l0IGlzb2xhdGVkIGZyb20gb3RoZXIgd29yZHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnXFxcXGInXG4gICAgICB9LFxuICAgICAgU1RSSU5HXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgLy8gdmVyc2lvbiBvZiBmb3JtYXQgYW5kIHRvdGFsIGFtb3VudCBvZiB0ZXN0Y2FzZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ15UQVAgdmVyc2lvbiAoXFxcXGQrKSQnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ14xXFxcXC5cXFxcLihcXFxcZCspJCcgfVxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIC8vIFlBTUwgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcoXFxzKyk/LS0tJCcsIGVuZDogJ1xcXFwuXFxcXC5cXFxcLiQnLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3lhbWwnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2UgbnVtYmVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnIChcXFxcZCspICdcbiAgICAgIH0sXG5cdCAgLy8gdGVzdGNhc2Ugc3RhdHVzIGFuZCBkZXNjcmlwdGlvblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeb2snIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ15ub3Qgb2snIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RrJ10sXG4gICAga2V5d29yZHM6ICdhZnRlciBhcHBlbmQgYXBwbHkgYXJyYXkgYXV0b19leGVjb2sgYXV0b19pbXBvcnQgYXV0b19sb2FkIGF1dG9fbWtpbmRleCAnICtcbiAgICAgICdhdXRvX21raW5kZXhfb2xkIGF1dG9fcXVhbGlmeSBhdXRvX3Jlc2V0IGJnZXJyb3IgYmluYXJ5IGJyZWFrIGNhdGNoIGNkIGNoYW4gY2xvY2sgJyArXG4gICAgICAnY2xvc2UgY29uY2F0IGNvbnRpbnVlIGRkZSBkaWN0IGVuY29kaW5nIGVvZiBlcnJvciBldmFsIGV4ZWMgZXhpdCBleHByIGZibG9ja2VkICcgK1xuICAgICAgJ2Zjb25maWd1cmUgZmNvcHkgZmlsZSBmaWxlZXZlbnQgZmlsZW5hbWUgZmx1c2ggZm9yIGZvcmVhY2ggZm9ybWF0IGdldHMgZ2xvYiBnbG9iYWwgJyArXG4gICAgICAnaGlzdG9yeSBodHRwIGlmIGluY3IgaW5mbyBpbnRlcnAgam9pbiBsYXBwZW5kfDEwIGxhc3NpZ258MTAgbGluZGV4fDEwIGxpbnNlcnR8MTAgbGlzdCAnICtcbiAgICAgICdsbGVuZ3RofDEwIGxvYWQgbHJhbmdlfDEwIGxyZXBlYXR8MTAgbHJlcGxhY2V8MTAgbHJldmVyc2V8MTAgbHNlYXJjaHwxMCBsc2V0fDEwIGxzb3J0fDEwICcrXG4gICAgICAnbWF0aGZ1bmMgbWF0aG9wIG1lbW9yeSBtc2djYXQgbmFtZXNwYWNlIG9wZW4gcGFja2FnZSBwYXJyYXkgcGlkIHBrZzo6Y3JlYXRlIHBrZ19ta0luZGV4ICcrXG4gICAgICAncGxhdGZvcm0gcGxhdGZvcm06OnNoZWxsIHByb2MgcHV0cyBwd2QgcmVhZCByZWZjaGFuIHJlZ2V4cCByZWdpc3RyeSByZWdzdWJ8MTAgcmVuYW1lICcrXG4gICAgICAncmV0dXJuIHNhZmUgc2NhbiBzZWVrIHNldCBzb2NrZXQgc291cmNlIHNwbGl0IHN0cmluZyBzdWJzdCBzd2l0Y2ggdGNsX2VuZE9mV29yZCAnK1xuICAgICAgJ3RjbF9maW5kTGlicmFyeSB0Y2xfc3RhcnRPZk5leHRXb3JkIHRjbF9zdGFydE9mUHJldmlvdXNXb3JkIHRjbF93b3JkQnJlYWtBZnRlciAnK1xuICAgICAgJ3RjbF93b3JkQnJlYWtCZWZvcmUgdGNsdGVzdCB0Y2x2YXJzIHRlbGwgdGltZSB0bSB0cmFjZSB1bmtub3duIHVubG9hZCB1bnNldCB1cGRhdGUgJytcbiAgICAgICd1cGxldmVsIHVwdmFyIHZhcmlhYmxlIHZ3YWl0IHdoaWxlJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc7WyBcXFxcdF0qIycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoJ15bIFxcXFx0XSojJywgJyQnKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3Byb2MnLFxuICAgICAgICBlbmQ6ICdbXFxcXHtdJyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICBiZWdpbjogJ1sgXFxcXHRcXFxcblxcXFxyXSsoOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJ1sgXFxcXHRcXFxcblxcXFxyXScsXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcJChcXFxceyk/KDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKlxcXFwoKFthLXpBLVowLTlfXSkqXFxcXCknLFxuICAgICAgICAgICAgZW5kOiAnW15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkKFxcXFx7KT8oOjopP1thLXpBLVpfXSgoOjopP1thLXpBLVowLTlfXSkqJyxcbiAgICAgICAgICAgIGVuZDogJyhcXFxcKSk/W15hLXpBLVowLTlfXFxcXH1cXFxcJF0nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXVxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENPTU1BTkQgPSB7XG4gICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICBiZWdpbjogL1xcXFwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9bYS16QS1aXFx1MDQzMC1cXHUwNDRmXFx1MDQxMC1cXHUwNDJmXStbKl0/L30sXG4gICAgICAgICAge2JlZ2luOiAvW15hLXpBLVpcXHUwNDMwLVxcdTA0NGZcXHUwNDEwLVxcdTA0MmYwLTldL31cbiAgICAgICAgXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIC8vIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBhdHRyaWJ1dGVzIGluIEhUTUwgdGFnc1xuICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcWy8sIGVuZDogL1xcXS99LFxuICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcey8sIGVuZDogL1xcfS99XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvXFxzKj1cXHMqLywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgICAgYmVnaW46IC8tP1xcZCpcXC4/XFxkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NQU5ELFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmb3JtdWxhJyxcbiAgICAgICAgY29udGFpbnM6IFtDT01NQU5EXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogL1xcJFxcJC8sIGVuZDogL1xcJFxcJC99LFxuICAgICAgICAgIHtiZWdpbjogL1xcJC8sIGVuZDogL1xcJC99XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICclJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIClcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRfSU5fVFlQRVMgPSAnYm9vbCBieXRlIGkxNiBpMzIgaTY0IGRvdWJsZSBzdHJpbmcgYmluYXJ5JztcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ25hbWVzcGFjZSBjb25zdCB0eXBlZGVmIHN0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uIHZvaWQgb25ld2F5IHNldCBsaXN0IG1hcCByZXF1aXJlZCBvcHRpb25hbCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgQlVJTFRfSU5fVFlQRVMsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N0cnVjdCBlbnVtIHNlcnZpY2UgZXhjZXB0aW9uJywgZW5kOiAvXFx7LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgc3RhcnRzOiB7ZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWV9IC8vIGhhY2s6IGVhdGluZyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCB0aXRsZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIoc2V0fGxpc3R8bWFwKVxcXFxzKjwnLCBlbmQ6ICc+JyxcbiAgICAgICAga2V5d29yZHM6IEJVSUxUX0lOX1RZUEVTLFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVFBJRCA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzEtOV1bMC05XSonLCAvKiBubyBsZWFkaW5nIHplcm9zICovXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBUUExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICc6W15cXFxcXV0rJ1xuICB9O1xuICB2YXIgVFBEQVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBUnxQfFBBWUxPQUR8UFJ8UnxTUnxSU1J8TEJMfFZSfFVBTE18TUVTU0FHRXxVVE9PTHxVRlJBTUV8VElNRVJ8JyArXG4gICAgJ1RJTUVSX09WRVJGTE9XfEpPSU5UX01BWF9TUEVFRHxSRVNVTUVfUFJPR3xESUFHX1JFQylcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgVFBJRCxcbiAgICAgIFRQTEFCRUxcbiAgICBdXG4gIH07XG4gIHZhciBUUElPID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJyhBSXxBT3xESXxET3xGfFJJfFJPfFVJfFVPfEdJfEdPfFNJfFNPKVxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAnc2VsZicsXG4gICAgICBUUElELFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgLyogZm9yIHBvcyBzZWN0aW9uIGF0IGJvdHRvbSAqL1xuICAgICAgVFBMQUJFTFxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnQUJPUlQgQUNDIEFESlVTVCBBTkQgQVBfTEQgQlJFQUsgQ0FMTCBDTlQgQ09MIENPTkRJVElPTiBDT05GSUcgREEgREIgJyArXG4gICAgICAgICdESVYgREVURUNUIEVMU0UgRU5EIEVOREZPUiBFUlJfTlVNIEVSUk9SX1BST0cgRklORSBGT1IgR1AgR1VBUkQgSU5DICcgK1xuICAgICAgICAnSUYgSk1QIExJTkVBUl9NQVhfU1BFRUQgTE9DSyBNT0QgTU9OSVRPUiBPRkZTRVQgT2Zmc2V0IE9SIE9WRVJSSURFICcgK1xuICAgICAgICAnUEFVU0UgUFJFRyBQVEggUlRfTEQgUlVOIFNFTEVDVCBTS0lQIFNraXAgVEEgVEIgVE8gVE9PTF9PRkZTRVQgJyArXG4gICAgICAgICdUb29sX09mZnNldCBVRiBVVCBVRlJBTUVfTlVNIFVUT09MX05VTSBVTkxPQ0sgV0FJVCBYIFkgWiBXIFAgUiBTVFJMRU4gJyArXG4gICAgICAgICdTVUJTVFIgRklORFNUUiBWT0ZGU0VUIFBST0cgQVRUUiBNTiBQT1MnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ09OIE9GRiBtYXhfc3BlZWQgTFBPUyBKUE9TIEVOQUJMRSBESVNBQkxFIFNUQVJUIFNUT1AgUkVTRVQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgVFBEQVRBLFxuICAgICAgVFBJTyxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnLyhQUk9HfEFUVFJ8TU58UE9TfEVORClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgLENBTEwgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnKENBTEx8UlVOfFBPSU5UX0xPR0lDfExCTClcXFxcYidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIHRoaXMgaXMgZm9yIGNhc2VzIGxpa2UgQ05UMTAwIHdoZXJlIHRoZSBkZWZhdWx0IGxleGVtZXMgZG8gbm90XG4gICAgICAgICAqIHNlcGFyYXRlIHRoZSBrZXl3b3JkIGFuZCB0aGUgbnVtYmVyICovXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKEFDQ3xDTlR8U2tpcHxPZmZzZXR8UFNQRHxSVF9MRHxBUF9MRHxUb29sX09mZnNldCknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiB0byBjYXRjaCBudW1iZXJzIHRoYXQgZG8gbm90IGhhdmUgYSB3b3JkIGJvdW5kYXJ5IG9uIHRoZSBsZWZ0ICovXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGQrKHNlY3xtc2VjfG1tL3NlY3xjbS9taW58aW5jaC9taW58ZGVnL3NlY3xtbXxpbnxjbSk/XFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJy8vJywgJ1s7JF0nKSxcbiAgICAgIGhsanMuQ09NTUVOVCgnIScsICdbOyRdJyksXG4gICAgICBobGpzLkNPTU1FTlQoJy0tZWc6JywgJyQnKSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGVU5DVElPTl9OQU1FUyA9ICdhdHRyaWJ1dGUgYmxvY2sgY29uc3RhbnQgY3ljbGUgZGF0ZSBkdW1wIGluY2x1ZGUgJyArXG4gICAgICAgICAgICAgICAgICAnbWF4IG1pbiBwYXJlbnQgcmFuZG9tIHJhbmdlIHNvdXJjZSB0ZW1wbGF0ZV9mcm9tX3N0cmluZyc7XG5cbiAgdmFyIEZVTkNUSU9OUyA9IHtcbiAgICBiZWdpbktleXdvcmRzOiBGVU5DVElPTl9OQU1FUyxcbiAgICBrZXl3b3Jkczoge25hbWU6IEZVTkNUSU9OX05BTUVTfSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBBUkFNU1xuICAgIF1cbiAgfTtcblxuICB2YXIgRklMVEVSID0ge1xuICAgIGJlZ2luOiAvXFx8W0EtWmEtel9dKzo/LyxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhYnMgYmF0Y2ggY2FwaXRhbGl6ZSBjb2x1bW4gY29udmVydF9lbmNvZGluZyBkYXRlIGRhdGVfbW9kaWZ5IGRlZmF1bHQgJyArXG4gICAgICAnZXNjYXBlIGZpbHRlciBmaXJzdCBmb3JtYXQgaW5reV90b19odG1sIGlubGluZV9jc3Mgam9pbiBqc29uX2VuY29kZSBrZXlzIGxhc3QgJyArXG4gICAgICAnbGVuZ3RoIGxvd2VyIG1hcCBtYXJrZG93biBtZXJnZSBubDJiciBudW1iZXJfZm9ybWF0IHJhdyByZWR1Y2UgcmVwbGFjZSAnICtcbiAgICAgICdyZXZlcnNlIHJvdW5kIHNsaWNlIHNvcnQgc3BhY2VsZXNzIHNwbGl0IHN0cmlwdGFncyB0aXRsZSB0cmltIHVwcGVyIHVybF9lbmNvZGUnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBGVU5DVElPTlNcbiAgICBdXG4gIH07XG5cbiAgdmFyIFRBR1MgPSAnYXBwbHkgYXV0b2VzY2FwZSBibG9jayBkZXByZWNhdGVkIGRvIGVtYmVkIGV4dGVuZHMgZmlsdGVyIGZsdXNoIGZvciBmcm9tICcgK1xuICAgICdpZiBpbXBvcnQgaW5jbHVkZSBtYWNybyBzYW5kYm94IHNldCB1c2UgdmVyYmF0aW0gd2l0aCc7XG5cbiAgVEFHUyA9IFRBR1MgKyAnICcgKyBUQUdTLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiAnZW5kJyArIHR9KS5qb2luKCcgJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NyYWZ0Y21zJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7Iy8sIC8jfS8pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xceyUvLCBlbmQ6IC8lfS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICAgICAga2V5d29yZHM6IFRBR1MsXG4gICAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbRklMVEVSLCBGVU5DVElPTlNdLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC99fS8sXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBGSUxURVIsIEZVTkNUSU9OU11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoICcgK1xuICAgICAgJ2luc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgJyArXG4gICAgICAnbGV0IHlpZWxkIGNvbnN0IGNsYXNzIHB1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBnZXQgc2V0IHN1cGVyICcgK1xuICAgICAgJ3N0YXRpYyBpbXBsZW1lbnRzIGVudW0gZXhwb3J0IGltcG9ydCBkZWNsYXJlIHR5cGUgbmFtZXNwYWNlIGFic3RyYWN0ICcgK1xuICAgICAgJ2FzIGZyb20gZXh0ZW5kcyBhc3luYyBhd2FpdCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkIE5hTiBJbmZpbml0eScsXG4gICAgYnVpbHRfaW46XG4gICAgICAnZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgJyArXG4gICAgICAnZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgJyArXG4gICAgICAnRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yICcgK1xuICAgICAgJ1R5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5ICcgK1xuICAgICAgJ0Zsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5ICcgK1xuICAgICAgJ1VpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlICcgK1xuICAgICAgJ21vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBhbnkgbnVtYmVyIGJvb2xlYW4gc3RyaW5nIHZvaWQgUHJvbWlzZSdcbiAgfTtcblxuICB2YXIgREVDT1JBVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRSxcbiAgfTtcblxuICB2YXIgQVJHUyA9XG4gIHtcbiAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW2JCXVswMV0rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbb09dWzAtN10rKW4/JyB9LFxuICAgICAgeyBiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICduPycgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW10gIC8vIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIEhUTUxfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdodG1sYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgfVxuICB9O1xuICB2YXIgQ1NTX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnY3NzYCcsIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJywgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2NzcycsXG4gICAgfVxuICB9O1xuICB2YXIgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBIVE1MX1RFTVBMQVRFLFxuICAgIENTU19URU1QTEFURSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIGhsanMuUkVHRVhQX01PREVcbiAgXTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RzJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqWydcIl11c2Ugc3RyaWN0WydcIl0vXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIGhsanMuSURFTlRfUkUgKyAnKVxcXFxzKj0+JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bXFx7O10vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHsgYmVnaW46IEpTX0lERU5UX1JFIH0pLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvJS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCAvLyAoKSA9PiB7fSBpcyBtb3JlIHR5cGljYWwgaW4gVHlwZVNjcmlwdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NvbnN0cnVjdG9yJywgZW5kOiAvW1xceztdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUEFSQU1TXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIHByZXZlbnQgcmVmZXJlbmNlcyBsaWtlIG1vZHVsZS5pZCBmcm9tIGJlaW5nIGhpZ2xpZ2h0ZWQgYXMgbW9kdWxlIGRlZmluaXRpb25zXG4gICAgICAgIGJlZ2luOiAvbW9kdWxlXFwuLyxcbiAgICAgICAga2V5d29yZHM6IHsgYnVpbHRfaW46ICdtb2R1bGUnIH0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ21vZHVsZScsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2ludGVyZmFjZSBleHRlbmRzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLicgKyBobGpzLklERU5UX1JFLCByZWxldmFuY2U6IDAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGFmdGVyIGRvdHNcbiAgICAgIH0sXG4gICAgICBERUNPUkFUT1IsXG4gICAgICBBUkdTXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gVmFsdWUgdHlwZXNcbiAgICAgICAgJ2NoYXIgdWNoYXIgdW5pY2hhciBpbnQgdWludCBsb25nIHVsb25nIHNob3J0IHVzaG9ydCBpbnQ4IGludDE2IGludDMyIGludDY0IHVpbnQ4ICcgK1xuICAgICAgICAndWludDE2IHVpbnQzMiB1aW50NjQgZmxvYXQgZG91YmxlIGJvb2wgc3RydWN0IGVudW0gc3RyaW5nIHZvaWQgJyArXG4gICAgICAgIC8vIFJlZmVyZW5jZSB0eXBlc1xuICAgICAgICAnd2VhayB1bm93bmVkIG93bmVkICcgK1xuICAgICAgICAvLyBNb2RpZmllcnNcbiAgICAgICAgJ2FzeW5jIHNpZ25hbCBzdGF0aWMgYWJzdHJhY3QgaW50ZXJmYWNlIG92ZXJyaWRlIHZpcnR1YWwgZGVsZWdhdGUgJyArXG4gICAgICAgIC8vIENvbnRyb2wgU3RydWN0dXJlc1xuICAgICAgICAnaWYgd2hpbGUgZG8gZm9yIGZvcmVhY2ggZWxzZSBzd2l0Y2ggY2FzZSBicmVhayBkZWZhdWx0IHJldHVybiB0cnkgY2F0Y2ggJyArXG4gICAgICAgIC8vIFZpc2liaWxpdHlcbiAgICAgICAgJ3B1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBpbnRlcm5hbCAnICtcbiAgICAgICAgLy8gT3RoZXJcbiAgICAgICAgJ3VzaW5nIG5ldyB0aGlzIGdldCBzZXQgY29uc3Qgc3Rkb3V0IHN0ZGluIHN0ZGVyciB2YXInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdEQnVzIEdMaWIgQ0NvZGUgR2VlIE9iamVjdCBHdGsgUG9zaXgnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ2ZhbHNlIHRydWUgbnVsbCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZSBuYW1lc3BhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1teLDpcXFxcblxcXFxzXFxcXC5dJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeIycsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmInXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWRkaGFuZGxlciBhZGRyZXNzb2YgYWxpYXMgYW5kIGFuZGFsc28gYWdncmVnYXRlIGFuc2kgYXMgYXN5bmMgYXNzZW1ibHkgYXV0byBhd2FpdCBiaW5hcnkgYnkgYnlyZWYgYnl2YWwgJyArIC8qIGEtYiAqL1xuICAgICAgICAnY2FsbCBjYXNlIGNhdGNoIGNsYXNzIGNvbXBhcmUgY29uc3QgY29udGludWUgY3VzdG9tIGRlY2xhcmUgZGVmYXVsdCBkZWxlZ2F0ZSBkaW0gZGlzdGluY3QgZG8gJyArIC8qIGMtZCAqL1xuICAgICAgICAnZWFjaCBlcXVhbHMgZWxzZSBlbHNlaWYgZW5kIGVudW0gZXJhc2UgZXJyb3IgZXZlbnQgZXhpdCBleHBsaWNpdCBmaW5hbGx5IGZvciBmcmllbmQgZnJvbSBmdW5jdGlvbiAnICsgLyogZS1mICovXG4gICAgICAgICdnZXQgZ2xvYmFsIGdvdG8gZ3JvdXAgaGFuZGxlcyBpZiBpbXBsZW1lbnRzIGltcG9ydHMgaW4gaW5oZXJpdHMgaW50ZXJmYWNlIGludG8gaXMgaXNmYWxzZSBpc25vdCBpc3RydWUgaXRlcmF0b3IgJyArIC8qIGctaSAqL1xuICAgICAgICAnam9pbiBrZXkgbGV0IGxpYiBsaWtlIGxvb3AgbWUgbWlkIG1vZCBtb2R1bGUgbXVzdGluaGVyaXQgbXVzdG92ZXJyaWRlIG15YmFzZSBteWNsYXNzICcgKyAvKiBqLW0gKi9cbiAgICAgICAgJ25hbWVzcGFjZSBuYXJyb3dpbmcgbmV3IG5leHQgbm90IG5vdGluaGVyaXRhYmxlIG5vdG92ZXJyaWRhYmxlICcgKyAvKiBuICovXG4gICAgICAgICdvZiBvZmYgb24gb3BlcmF0b3Igb3B0aW9uIG9wdGlvbmFsIG9yIG9yZGVyIG9yZWxzZSBvdmVybG9hZHMgb3ZlcnJpZGFibGUgb3ZlcnJpZGVzICcgKyAvKiBvICovXG4gICAgICAgICdwYXJhbWFycmF5IHBhcnRpYWwgcHJlc2VydmUgcHJpdmF0ZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljICcgKyAvKiBwICovXG4gICAgICAgICdyYWlzZWV2ZW50IHJlYWRvbmx5IHJlZGltIHJlbSByZW1vdmVoYW5kbGVyIHJlc3VtZSByZXR1cm4gJyArIC8qIHIgKi9cbiAgICAgICAgJ3NlbGVjdCBzZXQgc2hhZG93cyBzaGFyZWQgc2tpcCBzdGF0aWMgc3RlcCBzdG9wIHN0cnVjdHVyZSBzdHJpY3Qgc3ViIHN5bmNsb2NrICcgKyAvKiBzICovXG4gICAgICAgICd0YWtlIHRleHQgdGhlbiB0aHJvdyB0byB0cnkgdW5pY29kZSB1bnRpbCB1c2luZyB3aGVuIHdoZXJlIHdoaWxlIHdpZGVuaW5nIHdpdGggd2l0aGV2ZW50cyB3cml0ZW9ubHkgeG9yIHlpZWxkJywgLyogdC15ICovXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSBjYm9vbCBjYnl0ZSBjY2hhciBjZGF0ZSBjZGVjIGNkYmwgY2hhciBjaW50IGNsbmcgY29iaiBjc2J5dGUgY3Nob3J0IGNzbmcgY3N0ciBjdHlwZSAnICsgIC8qIGItYyAqL1xuICAgICAgICAnZGF0ZSBkZWNpbWFsIGRpcmVjdGNhc3QgZG91YmxlIGdldHR5cGUgZ2V0eG1sbmFtZXNwYWNlIGlpZiBpbnRlZ2VyIGxvbmcgb2JqZWN0ICcgKyAvKiBkLW8gKi9cbiAgICAgICAgJ3NieXRlIHNob3J0IHNpbmdsZSBzdHJpbmcgdHJ5Y2FzdCB0eXBlb2YgdWludGVnZXIgdWxvbmcgdXNob3J0JywgLyogcy11ICovXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBub3RoaW5nJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vfHt8fXxlbmRpZnxnb3N1Ynx2YXJpYW50fHdlbmR8XlxcXFwkICcsIC8qIHJlc2VydmVkIGRlcHJlY2F0ZWQga2V5d29yZHMgKi9cbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW3tiZWdpbjogJ1wiXCInfV19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcJycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFwnXFwnXFwnfDwhLS18LS0+JyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnPC8/JywgZW5kOiAnPicsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREVdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpZiBlbHNlIGVsc2VpZiBlbmQgcmVnaW9uIGV4dGVybmFsc291cmNlJ31cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndmJzJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2NhbGwgY2xhc3MgY29uc3QgZGltIGRvIGxvb3AgZXJhc2UgZXhlY3V0ZSBleGVjdXRlZ2xvYmFsIGV4aXQgZm9yIGVhY2ggbmV4dCBmdW5jdGlvbiAnICtcbiAgICAgICAgJ2lmIHRoZW4gZWxzZSBvbiBlcnJvciBvcHRpb24gZXhwbGljaXQgbmV3IHByaXZhdGUgcHJvcGVydHkgbGV0IGdldCBwdWJsaWMgcmFuZG9taXplICcgK1xuICAgICAgICAncmVkaW0gcmVtIHNlbGVjdCBjYXNlIHNldCBzdG9wIHN1YiB3aGlsZSB3ZW5kIHdpdGggZW5kIHRvIGVsc2VpZiBpcyBvciB4b3IgYW5kIG5vdCAnICtcbiAgICAgICAgJ2NsYXNzX2luaXRpYWxpemUgY2xhc3NfdGVybWluYXRlIGRlZmF1bHQgcHJlc2VydmUgaW4gbWUgYnl2YWwgYnlyZWYgc3RlcCByZXN1bWUgZ290bycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2xjYXNlIG1vbnRoIHZhcnR5cGUgaW5zdHJyZXYgdWJvdW5kIHNldGxvY2FsZSBnZXRvYmplY3QgcmdiIGdldHJlZiBzdHJpbmcgJyArXG4gICAgICAgICd3ZWVrZGF5bmFtZSBybmQgZGF0ZWFkZCBtb250aG5hbWUgbm93IGRheSBtaW51dGUgaXNhcnJheSBjYm9vbCByb3VuZCBmb3JtYXRjdXJyZW5jeSAnICtcbiAgICAgICAgJ2NvbnZlcnNpb25zIGNzbmcgdGltZXZhbHVlIHNlY29uZCB5ZWFyIHNwYWNlIGFicyBjbG5nIHRpbWVzZXJpYWwgZml4cyBsZW4gYXNjICcgK1xuICAgICAgICAnaXNlbXB0eSBtYXRocyBkYXRlc2VyaWFsIGF0biB0aW1lciBpc29iamVjdCBmaWx0ZXIgd2Vla2RheSBkYXRldmFsdWUgY2N1ciBpc2RhdGUgJyArXG4gICAgICAgICdpbnN0ciBkYXRlZGlmZiBmb3JtYXRkYXRldGltZSByZXBsYWNlIGlzbnVsbCByaWdodCBzZ24gYXJyYXkgc251bWVyaWMgbG9nIGNkYmwgaGV4ICcgK1xuICAgICAgICAnY2hyIGxib3VuZCBtc2dib3ggdWNhc2UgZ2V0bG9jYWxlIGNvcyBjZGF0ZSBjYnl0ZSBydHJpbSBqb2luIGhvdXIgb2N0IHR5cGVuYW1lIHRyaW0gJyArXG4gICAgICAgICdzdHJjb21wIGludCBjcmVhdGVvYmplY3QgbG9hZHBpY3R1cmUgdGFuIGZvcm1hdG51bWJlciBtaWQgc2NyaXB0ZW5naW5lYnVpbGR2ZXJzaW9uICcgK1xuICAgICAgICAnc2NyaXB0ZW5naW5lIHNwbGl0IHNjcmlwdGVuZ2luZW1pbm9ydmVyc2lvbiBjaW50IHNpbiBkYXRlcGFydCBsdHJpbSBzcXIgJyArXG4gICAgICAgICdzY3JpcHRlbmdpbmVtYWpvcnZlcnNpb24gdGltZSBkZXJpdmVkIGV2YWwgZGF0ZSBmb3JtYXRwZXJjZW50IGV4cCBpbnB1dGJveCBsZWZ0IGFzY3cgJyArXG4gICAgICAgICdjaHJ3IHJlZ2V4cCBzZXJ2ZXIgcmVzcG9uc2UgcmVxdWVzdCBjc3RyIGVycicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIG5vdGhpbmcgZW1wdHknXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnLy8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XX0pLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAvJy8sXG4gICAgICAgIC8kLyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JScsIGVuZDogJyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICd2YnNjcmlwdCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1ZfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhY2NlcHRfb24gYWxpYXMgYWx3YXlzIGFsd2F5c19jb21iIGFsd2F5c19mZiBhbHdheXNfbGF0Y2ggYW5kIGFzc2VydCBhc3NpZ24gJyArXG4gICAgICAnYXNzdW1lIGF1dG9tYXRpYyBiZWZvcmUgYmVnaW4gYmluZCBiaW5zIGJpbnNvZiBiaXQgYnJlYWsgYnVmfDAgYnVmaWYwIGJ1ZmlmMSAnICtcbiAgICAgICdieXRlIGNhc2UgY2FzZXggY2FzZXogY2VsbCBjaGFuZGxlIGNoZWNrZXIgY2xhc3MgY2xvY2tpbmcgY21vcyBjb25maWcgY29uc3QgJyArXG4gICAgICAnY29uc3RyYWludCBjb250ZXh0IGNvbnRpbnVlIGNvdmVyIGNvdmVyZ3JvdXAgY292ZXJwb2ludCBjcm9zcyBkZWFzc2lnbiBkZWZhdWx0ICcgK1xuICAgICAgJ2RlZnBhcmFtIGRlc2lnbiBkaXNhYmxlIGRpc3QgZG8gZWRnZSBlbHNlIGVuZCBlbmRjYXNlIGVuZGNoZWNrZXIgZW5kY2xhc3MgJyArXG4gICAgICAnZW5kY2xvY2tpbmcgZW5kY29uZmlnIGVuZGZ1bmN0aW9uIGVuZGdlbmVyYXRlIGVuZGdyb3VwIGVuZGludGVyZmFjZSBlbmRtb2R1bGUgJyArXG4gICAgICAnZW5kcGFja2FnZSBlbmRwcmltaXRpdmUgZW5kcHJvZ3JhbSBlbmRwcm9wZXJ0eSBlbmRzcGVjaWZ5IGVuZHNlcXVlbmNlIGVuZHRhYmxlICcgK1xuICAgICAgJ2VuZHRhc2sgZW51bSBldmVudCBldmVudHVhbGx5IGV4cGVjdCBleHBvcnQgZXh0ZW5kcyBleHRlcm4gZmluYWwgZmlyc3RfbWF0Y2ggZm9yICcgK1xuICAgICAgJ2ZvcmNlIGZvcmVhY2ggZm9yZXZlciBmb3JrIGZvcmtqb2luIGZ1bmN0aW9uIGdlbmVyYXRlfDUgZ2VudmFyIGdsb2JhbCBoaWdoejAgaGlnaHoxICcgK1xuICAgICAgJ2lmIGlmZiBpZm5vbmUgaWdub3JlX2JpbnMgaWxsZWdhbF9iaW5zIGltcGxlbWVudHMgaW1wbGllcyBpbXBvcnQgaW5jZGlyIGluY2x1ZGUgJyArXG4gICAgICAnaW5pdGlhbCBpbm91dCBpbnB1dCBpbnNpZGUgaW5zdGFuY2UgaW50IGludGVnZXIgaW50ZXJjb25uZWN0IGludGVyZmFjZSBpbnRlcnNlY3QgJyArXG4gICAgICAnam9pbiBqb2luX2FueSBqb2luX25vbmUgbGFyZ2UgbGV0IGxpYmxpc3QgbGlicmFyeSBsb2NhbCBsb2NhbHBhcmFtIGxvZ2ljIGxvbmdpbnQgJyArXG4gICAgICAnbWFjcm9tb2R1bGUgbWF0Y2hlcyBtZWRpdW0gbW9kcG9ydCBtb2R1bGUgbmFuZCBuZWdlZGdlIG5ldHR5cGUgbmV3IG5leHR0aW1lIG5tb3MgJyArXG4gICAgICAnbm9yIG5vc2hvd2NhbmNlbGxlZCBub3Qgbm90aWYwIG5vdGlmMSBvciBvdXRwdXQgcGFja2FnZSBwYWNrZWQgcGFyYW1ldGVyIHBtb3MgJyArXG4gICAgICAncG9zZWRnZSBwcmltaXRpdmUgcHJpb3JpdHkgcHJvZ3JhbSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVsbDAgcHVsbDEgcHVsbGRvd24gcHVsbHVwICcgK1xuICAgICAgJ3B1bHNlc3R5bGVfb25kZXRlY3QgcHVsc2VzdHlsZV9vbmV2ZW50IHB1cmUgcmFuZCByYW5kYyByYW5kY2FzZSByYW5kc2VxdWVuY2UgcmNtb3MgJyArXG4gICAgICAncmVhbCByZWFsdGltZSByZWYgcmVnIHJlamVjdF9vbiByZWxlYXNlIHJlcGVhdCByZXN0cmljdCByZXR1cm4gcm5tb3MgcnBtb3MgcnRyYW4gJyArXG4gICAgICAncnRyYW5pZjAgcnRyYW5pZjEgc19hbHdheXMgc19ldmVudHVhbGx5IHNfbmV4dHRpbWUgc191bnRpbCBzX3VudGlsX3dpdGggc2NhbGFyZWQgJyArXG4gICAgICAnc2VxdWVuY2Ugc2hvcnRpbnQgc2hvcnRyZWFsIHNob3djYW5jZWxsZWQgc2lnbmVkIHNtYWxsIHNvZnQgc29sdmUgc3BlY2lmeSBzcGVjcGFyYW0gJyArXG4gICAgICAnc3RhdGljIHN0cmluZyBzdHJvbmcgc3Ryb25nMCBzdHJvbmcxIHN0cnVjdCBzdXBlciBzdXBwbHkwIHN1cHBseTEgc3luY19hY2NlcHRfb24gJyArXG4gICAgICAnc3luY19yZWplY3Rfb24gdGFibGUgdGFnZ2VkIHRhc2sgdGhpcyB0aHJvdWdob3V0IHRpbWUgdGltZXByZWNpc2lvbiB0aW1ldW5pdCB0cmFuICcgK1xuICAgICAgJ3RyYW5pZjAgdHJhbmlmMSB0cmkgdHJpMCB0cmkxIHRyaWFuZCB0cmlvciB0cmlyZWcgdHlwZSB0eXBlZGVmIHVuaW9uIHVuaXF1ZSB1bmlxdWUwICcgK1xuICAgICAgJ3Vuc2lnbmVkIHVudGlsIHVudGlsX3dpdGggdW50eXBlZCB1c2UgdXdpcmUgdmFyIHZlY3RvcmVkIHZpcnR1YWwgdm9pZCB3YWl0IHdhaXRfb3JkZXIgJyArXG4gICAgICAnd2FuZCB3ZWFrIHdlYWswIHdlYWsxIHdoaWxlIHdpbGRjYXJkIHdpcmUgd2l0aCB3aXRoaW4gd29yIHhub3IgeG9yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ251bGwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJyRmaW5pc2ggJHN0b3AgJGV4aXQgJGZhdGFsICRlcnJvciAkd2FybmluZyAkaW5mbyAkcmVhbHRpbWUgJHRpbWUgJHByaW50dGltZXNjYWxlICcgK1xuICAgICAgJyRiaXRzdG9yZWFsICRiaXRzdG9zaG9ydHJlYWwgJGl0b3IgJHNpZ25lZCAkY2FzdCAkYml0cyAkc3RpbWUgJHRpbWVmb3JtYXQgJyArXG4gICAgICAnJHJlYWx0b2JpdHMgJHNob3J0cmVhbHRvYml0cyAkcnRvaSAkdW5zaWduZWQgJGFzc2VydG9uICRhc3NlcnRraWxsICRhc3NlcnRwYXNzb24gJyArXG4gICAgICAnJGFzc2VydGZhaWxvbiAkYXNzZXJ0bm9udmFjdW91c29uICRhc3NlcnRvZmYgJGFzc2VydGNvbnRyb2wgJGFzc2VydHBhc3NvZmYgJyArXG4gICAgICAnJGFzc2VydGZhaWxvZmYgJGFzc2VydHZhY3VvdXNvZmYgJGlzdW5ib3VuZGVkICRzYW1wbGVkICRmZWxsICRjaGFuZ2VkICRwYXN0X2djbGsgJyArXG4gICAgICAnJGZlbGxfZ2NsayAkY2hhbmdlZF9nY2xrICRyaXNpbmdfZ2NsayAkc3RlYWR5X2djbGsgJGNvdmVyYWdlX2NvbnRyb2wgJyArXG4gICAgICAnJGNvdmVyYWdlX2dldCAkY292ZXJhZ2Vfc2F2ZSAkc2V0X2NvdmVyYWdlX2RiX25hbWUgJHJvc2UgJHN0YWJsZSAkcGFzdCAnICtcbiAgICAgICckcm9zZV9nY2xrICRzdGFibGVfZ2NsayAkZnV0dXJlX2djbGsgJGZhbGxpbmdfZ2NsayAkY2hhbmdpbmdfZ2NsayAkZGlzcGxheSAnICtcbiAgICAgICckY292ZXJhZ2VfZ2V0X21heCAkY292ZXJhZ2VfbWVyZ2UgJGdldF9jb3ZlcmFnZSAkbG9hZF9jb3ZlcmFnZV9kYiAkdHlwZW5hbWUgJyArXG4gICAgICAnJHVucGFja2VkX2RpbWVuc2lvbnMgJGxlZnQgJGxvdyAkaW5jcmVtZW50ICRjbG9nMiAkbG4gJGxvZzEwICRleHAgJHNxcnQgJHBvdyAnICtcbiAgICAgICckZmxvb3IgJGNlaWwgJHNpbiAkY29zICR0YW4gJGNvdW50Yml0cyAkb25laG90ICRpc3Vua25vd24gJGZhdGFsICR3YXJuaW5nICcgK1xuICAgICAgJyRkaW1lbnNpb25zICRyaWdodCAkaGlnaCAkc2l6ZSAkYXNpbiAkYWNvcyAkYXRhbiAkYXRhbjIgJGh5cG90ICRzaW5oICRjb3NoICcgK1xuICAgICAgJyR0YW5oICRhc2luaCAkYWNvc2ggJGF0YW5oICRjb3VudG9uZXMgJG9uZWhvdDAgJGVycm9yICRpbmZvICRyYW5kb20gJyArXG4gICAgICAnJGRpc3RfY2hpX3NxdWFyZSAkZGlzdF9lcmxhbmcgJGRpc3RfZXhwb25lbnRpYWwgJGRpc3Rfbm9ybWFsICRkaXN0X3BvaXNzb24gJyArXG4gICAgICAnJGRpc3RfdCAkZGlzdF91bmlmb3JtICRxX2luaXRpYWxpemUgJHFfcmVtb3ZlICRxX2V4YW0gJGFzeW5jJGFuZCRhcnJheSAnICtcbiAgICAgICckYXN5bmMkbmFuZCRhcnJheSAkYXN5bmMkb3IkYXJyYXkgJGFzeW5jJG5vciRhcnJheSAkc3luYyRhbmQkYXJyYXkgJyArXG4gICAgICAnJHN5bmMkbmFuZCRhcnJheSAkc3luYyRvciRhcnJheSAkc3luYyRub3IkYXJyYXkgJHFfYWRkICRxX2Z1bGwgJHBzcHJpbnRmICcgK1xuICAgICAgJyRhc3luYyRhbmQkcGxhbmUgJGFzeW5jJG5hbmQkcGxhbmUgJGFzeW5jJG9yJHBsYW5lICRhc3luYyRub3IkcGxhbmUgJyArXG4gICAgICAnJHN5bmMkYW5kJHBsYW5lICRzeW5jJG5hbmQkcGxhbmUgJHN5bmMkb3IkcGxhbmUgJHN5bmMkbm9yJHBsYW5lICRzeXN0ZW0gJyArXG4gICAgICAnJGRpc3BsYXkgJGRpc3BsYXliICRkaXNwbGF5aCAkZGlzcGxheW8gJHN0cm9iZSAkc3Ryb2JlYiAkc3Ryb2JlaCAkc3Ryb2JlbyAnICtcbiAgICAgICckd3JpdGUgJHJlYWRtZW1iICRyZWFkbWVtaCAkd3JpdGVtZW1oICR2YWx1ZSRwbHVzYXJncyAnICtcbiAgICAgICckZHVtcHZhcnMgJGR1bXBvbiAkZHVtcGxpbWl0ICRkdW1wcG9ydHMgJGR1bXBwb3J0c29uICRkdW1wcG9ydHNsaW1pdCAnICtcbiAgICAgICckd3JpdGViICR3cml0ZWggJHdyaXRlbyAkbW9uaXRvciAkbW9uaXRvcmIgJG1vbml0b3JoICRtb25pdG9ybyAkd3JpdGVtZW1iICcgK1xuICAgICAgJyRkdW1wZmlsZSAkZHVtcG9mZiAkZHVtcGFsbCAkZHVtcGZsdXNoICRkdW1wcG9ydHNvZmYgJGR1bXBwb3J0c2FsbCAnICtcbiAgICAgICckZHVtcHBvcnRzZmx1c2ggJGZjbG9zZSAkZmRpc3BsYXkgJGZkaXNwbGF5YiAkZmRpc3BsYXloICRmZGlzcGxheW8gJyArXG4gICAgICAnJGZzdHJvYmUgJGZzdHJvYmViICRmc3Ryb2JlaCAkZnN0cm9iZW8gJHN3cml0ZSAkc3dyaXRlYiAkc3dyaXRlaCAnICtcbiAgICAgICckc3dyaXRlbyAkZnNjYW5mICRmcmVhZCAkZnNlZWsgJGZmbHVzaCAkZmVvZiAkZm9wZW4gJGZ3cml0ZSAkZndyaXRlYiAnICtcbiAgICAgICckZndyaXRlaCAkZndyaXRlbyAkZm1vbml0b3IgJGZtb25pdG9yYiAkZm1vbml0b3JoICRmbW9uaXRvcm8gJHNmb3JtYXQgJyArXG4gICAgICAnJHNmb3JtYXRmICRmZ2V0YyAkdW5nZXRjICRmZ2V0cyAkc3NjYW5mICRyZXdpbmQgJGZ0ZWxsICRmZXJyb3InXG4gICAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3YnLCAnc3YnLCAnc3ZoJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IFNWX0tFWVdPUkRTLCBsZXhlbWVzOiAvW1xcd1xcJF0rLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcXFxcYigoXFxcXGQrXFwnKGJ8aHxvfGR8QnxIfE98RCkpWzAtOXh6WFphLWZBLUZfXSspJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXEIoKFxcJyhifGh8b3xkfEJ8SHxPfEQpKVswLTl4elhaYS1mQS1GX10rKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFxiKFswLTlfXSkrJywgcmVsZXZhbmNlOiAwfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLyogcGFyYW1ldGVycyB0byBpbnN0YW5jZXMgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJyNcXFxcKCg/IXBhcmFtZXRlcikuK1xcXFwpJ30sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXC5cXFxcdysnLCByZWxldmFuY2U6IDB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdkZWZpbmUgX19GSUxFX18gJyArXG4gICAgICAgICAgJ19fTElORV9fIGJlZ2luX2tleXdvcmRzIGNlbGxkZWZpbmUgZGVmYXVsdF9uZXR0eXBlIGRlZmluZSAnICtcbiAgICAgICAgICAnZWxzZSBlbHNpZiBlbmRfa2V5d29yZHMgZW5kY2VsbGRlZmluZSBlbmRpZiBpZmRlZiBpZm5kZWYgJyArXG4gICAgICAgICAgJ2luY2x1ZGUgbGluZSBub3VuY29ubmVjdGVkX2RyaXZlIHByYWdtYSByZXNldGFsbCB0aW1lc2NhbGUgJyArXG4gICAgICAgICAgJ3VuY29ubmVjdGVkX2RyaXZlIHVuZGVmIHVuZGVmaW5lYWxsJ30sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTsgLy8gcmV0dXJuXG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIFZIREwgbnVtZXJpYyBsaXRlcmFscy5cblxuICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gIHZhciBJTlRFR0VSX1JFID0gJ1xcXFxkKF98XFxcXGQpKic7XG4gIHZhciBFWFBPTkVOVF9SRSA9ICdbZUVdWy0rXT8nICsgSU5URUdFUl9SRTtcbiAgdmFyIERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuICAvLyBCYXNlZCBsaXRlcmFsOlxuICB2YXIgQkFTRURfSU5URUdFUl9SRSA9ICdcXFxcdysnO1xuICB2YXIgQkFTRURfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnIycgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyhcXFxcLicgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyk/JyArICcjJyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcblxuICB2YXIgTlVNQkVSX1JFID0gJ1xcXFxiKCcgKyBCQVNFRF9MSVRFUkFMX1JFICsgJ3wnICsgREVDSU1BTF9MSVRFUkFMX1JFICsgJyknO1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FicyBhY2Nlc3MgYWZ0ZXIgYWxpYXMgYWxsIGFuZCBhcmNoaXRlY3R1cmUgYXJyYXkgYXNzZXJ0IGFzc3VtZSBhc3N1bWVfZ3VhcmFudGVlIGF0dHJpYnV0ZSAnICtcbiAgICAgICAgJ2JlZ2luIGJsb2NrIGJvZHkgYnVmZmVyIGJ1cyBjYXNlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGNvbnN0YW50IGNvbnRleHQgY292ZXIgZGlzY29ubmVjdCAnICtcbiAgICAgICAgJ2Rvd250byBkZWZhdWx0IGVsc2UgZWxzaWYgZW5kIGVudGl0eSBleGl0IGZhaXJuZXNzIGZpbGUgZm9yIGZvcmNlIGZ1bmN0aW9uIGdlbmVyYXRlICcgK1xuICAgICAgICAnZ2VuZXJpYyBncm91cCBndWFyZGVkIGlmIGltcHVyZSBpbiBpbmVydGlhbCBpbm91dCBpcyBsYWJlbCBsaWJyYXJ5IGxpbmthZ2UgbGl0ZXJhbCAnICtcbiAgICAgICAgJ2xvb3AgbWFwIG1vZCBuYW5kIG5ldyBuZXh0IG5vciBub3QgbnVsbCBvZiBvbiBvcGVuIG9yIG90aGVycyBvdXQgcGFja2FnZSBwYXJhbWV0ZXIgcG9ydCAnICtcbiAgICAgICAgJ3Bvc3Rwb25lZCBwcm9jZWR1cmUgcHJvY2VzcyBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVyZSByYW5nZSByZWNvcmQgcmVnaXN0ZXIgcmVqZWN0ICcgK1xuICAgICAgICAncmVsZWFzZSByZW0gcmVwb3J0IHJlc3RyaWN0IHJlc3RyaWN0X2d1YXJhbnRlZSByZXR1cm4gcm9sIHJvciBzZWxlY3Qgc2VxdWVuY2UgJyArXG4gICAgICAgICdzZXZlcml0eSBzaGFyZWQgc2lnbmFsIHNsYSBzbGwgc3JhIHNybCBzdHJvbmcgc3VidHlwZSB0aGVuIHRvIHRyYW5zcG9ydCB0eXBlICcgK1xuICAgICAgICAndW5hZmZlY3RlZCB1bml0cyB1bnRpbCB1c2UgdmFyaWFibGUgdmlldyB2bW9kZSB2cHJvcCB2dW5pdCB3YWl0IHdoZW4gd2hpbGUgd2l0aCB4bm9yIHhvcicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Jvb2xlYW4gYml0IGNoYXJhY3RlciAnICtcbiAgICAgICAgJ2ludGVnZXIgdGltZSBkZWxheV9sZW5ndGggbmF0dXJhbCBwb3NpdGl2ZSAnICtcbiAgICAgICAgJ3N0cmluZyBiaXRfdmVjdG9yIGZpbGVfb3Blbl9raW5kIGZpbGVfb3Blbl9zdGF0dXMgJyArXG4gICAgICAgICdzdGRfbG9naWMgc3RkX2xvZ2ljX3ZlY3RvciB1bnNpZ25lZCBzaWduZWQgYm9vbGVhbl92ZWN0b3IgaW50ZWdlcl92ZWN0b3IgJyArXG4gICAgICAgICdzdGRfdWxvZ2ljIHN0ZF91bG9naWNfdmVjdG9yIHVucmVzb2x2ZWRfdW5zaWduZWQgdV91bnNpZ25lZCB1bnJlc29sdmVkX3NpZ25lZCB1X3NpZ25lZCAnICtcbiAgICAgICAgJ3JlYWxfdmVjdG9yIHRpbWVfdmVjdG9yJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG5vdGUgd2FybmluZyBlcnJvciBmYWlsdXJlICcgKyAgLy8gc2V2ZXJpdHlfbGV2ZWxcbiAgICAgICAgJ2xpbmUgdGV4dCBzaWRlIHdpZHRoJyAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0aW9cbiAgICB9LFxuICAgIGlsbGVnYWw6ICd7JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgICAgICAvLyBWSERMLTIwMDggYmxvY2sgY29tbWVudGluZy5cbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJyhVfFh8MHwxfFp8V3xMfEh8LSlcXCcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFwnW0EtWmEtel0oXz9bQS1aYS16MC05XSkqJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiAvWyEjQFxcd10rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLy8gZXhwcmVzcyB2ZXJzaW9uIGV4Y2VwdDogISAmICogPCA9ID4gISEgIyBAIEBAXG4gICAgICAgICdOfDAgUHwwIFh8MCBhfDAgYWIgYWJjIGFibyBhbCBhbSBhbnwwIGFyIGFyZ2EgYXJnZCBhcmdlIGFyZ2RvIGFyZ2cgYXJnbCBhcmd1IGFzIGF1IGF1ZyBhdW4gYnwwIGJOIGJhIGJhZCBiZCBiZSBiZWwgYmYgYmwgYm0gYm4gYm8gYnAgYnIgYnJlYSBicmVha2EgYnJlYWtkIGJyZWFrbCBicm8gYnVmZG8gYnVmZmVycyBidW4gYncgY3wwIGNOIGNOZiBjYSBjYWJjIGNhZGRiIGNhZCBjYWRkZiBjYWwgY2F0IGNiIGNjIGNjbCBjZCBjZSBjZXggY2YgY2ZpciBjZ2V0YiBjZ2V0ZSBjZyBjaGFuZ2VzIGNoZCBjaGUgY2hlY2t0IGNsIGNsYSBjbG8gY20gY21hcGMgY21lIGNuIGNuZXcgY25mIGNubyBjbm9yZWEgY25vcmVtZSBjbyBjb2wgY29sbyBjb20gY29tYyBjb21wIGNvbiBjb25mIGNvcGUgJytcbiAgICAgICAgJ2NwIGNwZiBjcSBjciBjcyBjc3QgY3UgY3VuYSBjdW5tZSBjdyBkZWxtIGRlYiBkZWJ1Z2cgZGVsYyBkZWxmIGRpZiBkaWZmZyBkaWZmbyBkaWZmcCBkaWZmcHUgZGlmZnMgZGlmZnRoaXMgZGlnIGRpIGRsIGRlbGwgZGogZGxpIGRvIGRvYXV0b2EgZHAgZHIgZHMgZHNwIGV8MCBlYSBlYyBlY2hvZSBlY2hvaCBlY2hvbSBlY2hvbiBlbCBlbHNlaSBlbSBlbiBlbmRmbyBlbmRmIGVuZHQgZW5kdyBlbmUgZXggZXhlIGV4aSBleHUgZnwwIGZpbGVzIGZpbGV0IGZpbiBmaW5hIGZpbmkgZmlyIGZpeCBmbyBmb2xkYyBmb2xkZCBmb2xkZG9jIGZvbGRvIGZvciBmdSBnbyBnciBncmVwYSBndSBndiBoYSBoZWxwZiBoZWxwZyBoZWxwdCBoaSBoaWQgaGlzIGlhIGlhYmMgaWYgaWogaWwgaW0gaW1hcGMgJytcbiAgICAgICAgJ2ltZSBpbm8gaW5vcmVhIGlub3JlbWUgaW50IGlzIGlzcCBpdSBpdW5hIGl1bm1lIGp8MCBqdSBrfDAga2VlcGEga2VlIGtlZXBqIGxOIGxOZiBsfDAgbGFkIGxhZGRiIGxhZGRmIGxhIGxhbiBsYXQgbGIgbGMgbGNoIGxjbCBsY3MgbGUgbGVmdGEgbGV0IGxleCBsZiBsZmlyIGxnZXRiIGxnZXRlIGxnIGxnciBsZ3JlcGEgbGggbGwgbGxhIGxsaSBsbWFrIGxtIGxtYXBjIGxuZSBsbmV3IGxuZiBsbiBsb2FkayBsbyBsb2MgbG9ja3YgbG9sIGxvcGUgbHAgbHBmIGxyIGxzIGx0IGx1IGx1YSBsdWFkIGx1YWYgbHYgbHZpbWdyZXBhIGx3IG18MCBtYSBtYWsgbWFwIG1hcGMgbWFya3MgbWF0IG1lIG1lbnV0IG1lcyBtayBta3MgbWtzcCBta3YgbWt2aWUgbW9kIG16IG16ZiBuYmMgbmIgbmJzIG5ldyBubSBubWFwYyBubWUgbm4gbm5vcmVtZSBub2Egbm8gbm9oIG5vcmVhIG5vcmVtZSBub3JtIG51IG51biBudW5tZSBvbCBvfDAgb20gb21hcGMgb21lIG9uIG9ubyBvbm9yZW1lIG9wdCBvdSBvdW5tZSBvdyBwfDAgJytcbiAgICAgICAgJ3Byb2ZkIHByb2YgcHJvIHByb21wdHIgcGMgcGVkIHBlIHBlcmxkIHBvIHBvcHUgcHAgcHJlIHByZXYgcHMgcHQgcHROIHB0ZiBwdGogcHRsIHB0biBwdHAgcHRyIHB0cyBwdSBwdyBweTMgcHl0aG9uMyBweTNkIHB5M2YgcHkgcHlkIHB5ZiBxdWl0YSBxYSByZWMgcmVkIHJlZGkgcmVkciByZWRyYXdzIHJlZyByZXMgcmV0IHJldHUgcmV3IHJpIHJpZ2h0YiBydWIgcnVieWQgcnVieWYgcnVuZCBydSBydiBzTiBzYW4gc2Egc2FsIHNhdiBzYiBzYk4gc2JhIHNiZiBzYmwgc2JtIHNibiBzYnAgc2JyIHNjcmlwIHNjcmlwdGUgc2NzIHNlIHNldGYgc2V0ZyBzZXRsIHNmIHNmaXIgc2ggc2ltIHNpZyBzaWwgc2wgc2xhIHNtIHNtYXAgc21hcGMgc21lIHNuIHNuaSBzbm8gc25vciBzbm9yZW1lIHNvciAnK1xuICAgICAgICAnc28gc3BlbGxkIHNwZSBzcGVsbGkgc3BlbGxyIHNwZWxsdSBzcGVsbHcgc3Agc3ByIHNyZSBzdCBzdGEgc3RhcnRnIHN0YXJ0ciBzdGFyIHN0b3BpIHN0aiBzdHMgc3VuIHN1bm0gc3VubWUgc3VzIHN2IHN3IHN5IHN5bnRpIHN5bmMgdE4gdGFiTiB0YWJjIHRhYmRvIHRhYmUgdGFiZiB0YWJmaXIgdGFibCB0YWJtIHRhYm5ldyAnK1xuICAgICAgICAndGFibiB0YWJvIHRhYnAgdGFiciB0YWJzIHRhYiB0YSB0YWdzIHRjIHRjbGQgdGNsZiB0ZSB0ZiB0aCB0aiB0bCB0bSB0biB0byB0cCB0ciB0cnkgdHMgdHUgdXwwIHVuZG9qIHVuZG9sIHVuYSB1bmggdW5sIHVubG8gdW5tIHVubWUgdW5zIHVwIHZlIHZlcmIgdmVydCB2aW0gdmltZ3JlcGEgdmkgdml1IHZpZSB2bSB2bWFwYyB2bWUgdm5lIHZuIHZub3JlbWUgdnMgdnUgdnVubWUgd2luZG8gd3wwIHdOIHdhIHdoIHdpIHdpbmMgd2lucCB3biB3cCB3cSB3cWEgd3Mgd3Ugd3YgeHwwIHhhIHhtYXBjIHhtIHhtZSB4biB4bm9yZW1lIHh1IHh1bm1lIHl8MCB6fDAgfiAnK1xuICAgICAgICAvLyBmdWxsIHZlcnNpb25cbiAgICAgICAgJ05leHQgUHJpbnQgYXBwZW5kIGFiYnJldmlhdGUgYWJjbGVhciBhYm92ZWxlZnQgYWxsIGFtZW51IGFub3JlbWVudSBhcmdzIGFyZ2FkZCBhcmdkZWxldGUgYXJnZWRpdCBhcmdnbG9iYWwgYXJnbG9jYWwgYXJndW1lbnQgYXNjaWkgYXV0b2NtZCBhdWdyb3VwIGF1bm1lbnUgYnVmZmVyIGJOZXh0IGJhbGwgYmFkZCBiZGVsZXRlIGJlaGF2ZSBiZWxvd3JpZ2h0IGJmaXJzdCBibGFzdCBibW9kaWZpZWQgYm5leHQgYm90cmlnaHQgYnByZXZpb3VzIGJyZXdpbmQgYnJlYWsgYnJlYWthZGQgYnJlYWtkZWwgYnJlYWtsaXN0IGJyb3dzZSBidW5sb2FkICcrXG4gICAgICAgICdid2lwZW91dCBjaGFuZ2UgY05leHQgY05maWxlIGNhYmJyZXYgY2FiY2xlYXIgY2FkZGJ1ZmZlciBjYWRkZXhwciBjYWRkZmlsZSBjYWxsIGNhdGNoIGNidWZmZXIgY2Nsb3NlIGNlbnRlciBjZXhwciBjZmlsZSBjZmlyc3QgY2dldGJ1ZmZlciBjZ2V0ZXhwciBjZ2V0ZmlsZSBjaGRpciBjaGVja3BhdGggY2hlY2t0aW1lIGNsaXN0IGNsYXN0IGNsb3NlIGNtYXAgY21hcGNsZWFyIGNtZW51IGNuZXh0IGNuZXdlciBjbmZpbGUgY25vcmVtYXAgY25vcmVhYmJyZXYgY25vcmVtZW51IGNvcHkgY29sZGVyIGNvbG9yc2NoZW1lIGNvbW1hbmQgY29tY2xlYXIgY29tcGlsZXIgY29udGludWUgY29uZmlybSBjb3BlbiBjcHJldmlvdXMgY3BmaWxlIGNxdWl0IGNyZXdpbmQgY3Njb3BlIGNzdGFnIGN1bm1hcCAnK1xuICAgICAgICAnY3VuYWJicmV2IGN1bm1lbnUgY3dpbmRvdyBkZWxldGUgZGVsbWFya3MgZGVidWcgZGVidWdncmVlZHkgZGVsY29tbWFuZCBkZWxmdW5jdGlvbiBkaWZmdXBkYXRlIGRpZmZnZXQgZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1dCBkaWZmc3BsaXQgZGlncmFwaHMgZGlzcGxheSBkZWxldGVsIGRqdW1wIGRsaXN0IGRvYXV0b2NtZCBkb2F1dG9hbGwgZGVsZXRlcCBkcm9wIGRzZWFyY2ggZHNwbGl0IGVkaXQgZWFybGllciBlY2hvIGVjaG9lcnIgZWNob2hsIGVjaG9tc2cgZWxzZSBlbHNlaWYgZW1lbnUgZW5kaWYgZW5kZm9yICcrXG4gICAgICAgICdlbmRmdW5jdGlvbiBlbmR0cnkgZW5kd2hpbGUgZW5ldyBleGVjdXRlIGV4aXQgZXh1c2FnZSBmaWxlIGZpbGV0eXBlIGZpbmQgZmluYWxseSBmaW5pc2ggZmlyc3QgZml4ZGVsIGZvbGQgZm9sZGNsb3NlIGZvbGRkb29wZW4gZm9sZGRvY2xvc2VkIGZvbGRvcGVuIGZ1bmN0aW9uIGdsb2JhbCBnb3RvIGdyZXAgZ3JlcGFkZCBndWkgZ3ZpbSBoYXJkY29weSBoZWxwIGhlbHBmaW5kIGhlbHBncmVwIGhlbHB0YWdzIGhpZ2hsaWdodCBoaWRlIGhpc3RvcnkgaW5zZXJ0IGlhYmJyZXYgaWFiY2xlYXIgaWp1bXAgaWxpc3QgaW1hcCAnK1xuICAgICAgICAnaW1hcGNsZWFyIGltZW51IGlub3JlbWFwIGlub3JlYWJicmV2IGlub3JlbWVudSBpbnRybyBpc2VhcmNoIGlzcGxpdCBpdW5tYXAgaXVuYWJicmV2IGl1bm1lbnUgam9pbiBqdW1wcyBrZWVwYWx0IGtlZXBtYXJrcyBrZWVwanVtcHMgbE5leHQgbE5maWxlIGxpc3QgbGFkZGV4cHIgbGFkZGJ1ZmZlciBsYWRkZmlsZSBsYXN0IGxhbmd1YWdlIGxhdGVyIGxidWZmZXIgbGNkIGxjaGRpciBsY2xvc2UgbGNzY29wZSBsZWZ0IGxlZnRhYm92ZSBsZXhwciBsZmlsZSBsZmlyc3QgbGdldGJ1ZmZlciBsZ2V0ZXhwciBsZ2V0ZmlsZSBsZ3JlcCBsZ3JlcGFkZCBsaGVscGdyZXAgbGxhc3QgbGxpc3QgbG1ha2UgbG1hcCBsbWFwY2xlYXIgbG5leHQgbG5ld2VyIGxuZmlsZSBsbm9yZW1hcCBsb2Fka2V5bWFwIGxvYWR2aWV3ICcrXG4gICAgICAgICdsb2NrbWFya3MgbG9ja3ZhciBsb2xkZXIgbG9wZW4gbHByZXZpb3VzIGxwZmlsZSBscmV3aW5kIGx0YWcgbHVubWFwIGx1YWRvIGx1YWZpbGUgbHZpbWdyZXAgbHZpbWdyZXBhZGQgbHdpbmRvdyBtb3ZlIG1hcmsgbWFrZSBtYXBjbGVhciBtYXRjaCBtZW51IG1lbnV0cmFuc2xhdGUgbWVzc2FnZXMgbWtleHJjIG1rc2Vzc2lvbiBta3NwZWxsIG1rdmltcmMgbWt2aWV3IG1vZGUgbXpzY2hlbWUgbXpmaWxlIG5iY2xvc2UgbmJrZXkgbmJzYXJ0IG5leHQgbm1hcCBubWFwY2xlYXIgbm1lbnUgbm5vcmVtYXAgJytcbiAgICAgICAgJ25ub3JlbWVudSBub2F1dG9jbWQgbm9yZW1hcCBub2hsc2VhcmNoIG5vcmVhYmJyZXYgbm9yZW1lbnUgbm9ybWFsIG51bWJlciBudW5tYXAgbnVubWVudSBvbGRmaWxlcyBvcGVuIG9tYXAgb21hcGNsZWFyIG9tZW51IG9ubHkgb25vcmVtYXAgb25vcmVtZW51IG9wdGlvbnMgb3VubWFwIG91bm1lbnUgb3duc3ludGF4IHByaW50IHByb2ZkZWwgcHJvZmlsZSBwcm9tcHRmaW5kIHByb21wdHJlcGwgcGNsb3NlIHBlZGl0IHBlcmwgcGVybGRvIHBvcCBwb3B1cCBwcG9wIHByZXNlcnZlIHByZXZpb3VzIHBzZWFyY2ggcHRhZyBwdE5leHQgJytcbiAgICAgICAgJ3B0Zmlyc3QgcHRqdW1wIHB0bGFzdCBwdG5leHQgcHRwcmV2aW91cyBwdHJld2luZCBwdHNlbGVjdCBwdXQgcHdkIHB5M2RvIHB5M2ZpbGUgcHl0aG9uIHB5ZG8gcHlmaWxlIHF1aXQgcXVpdGFsbCBxYWxsIHJlYWQgcmVjb3ZlciByZWRvIHJlZGlyIHJlZHJhdyByZWRyYXdzdGF0dXMgcmVnaXN0ZXJzIHJlc2l6ZSByZXRhYiByZXR1cm4gcmV3aW5kIHJpZ2h0IHJpZ2h0YmVsb3cgcnVieSBydWJ5ZG8gcnVieWZpbGUgcnVuZG8gcnVudGltZSBydmltaW5mbyBzdWJzdGl0dXRlIHNOZXh0IHNhbmRib3ggc2FyZ3VtZW50IHNhbGwgc2F2ZWFzIHNidWZmZXIgc2JOZXh0IHNiYWxsIHNiZmlyc3Qgc2JsYXN0IHNibW9kaWZpZWQgc2JuZXh0IHNicHJldmlvdXMgc2JyZXdpbmQgc2NyaXB0bmFtZXMgc2NyaXB0ZW5jb2RpbmcgJytcbiAgICAgICAgJ3Njc2NvcGUgc2V0IHNldGZpbGV0eXBlIHNldGdsb2JhbCBzZXRsb2NhbCBzZmluZCBzZmlyc3Qgc2hlbGwgc2ltYWx0IHNpZ24gc2lsZW50IHNsZWVwIHNsYXN0IHNtYWdpYyBzbWFwY2xlYXIgc21lbnUgc25leHQgc25pZmYgc25vbWFnaWMgc25vcmVtYXAgc25vcmVtZW51IHNvcnQgc291cmNlIHNwZWxsZHVtcCBzcGVsbGdvb2Qgc3BlbGxpbmZvIHNwZWxscmVwYWxsIHNwZWxsdW5kbyBzcGVsbHdyb25nIHNwbGl0IHNwcmV2aW91cyBzcmV3aW5kIHN0b3Agc3RhZyBzdGFydGdyZXBsYWNlIHN0YXJ0cmVwbGFjZSAnK1xuICAgICAgICAnc3RhcnRpbnNlcnQgc3RvcGluc2VydCBzdGp1bXAgc3RzZWxlY3Qgc3VuaGlkZSBzdW5tYXAgc3VubWVudSBzdXNwZW5kIHN2aWV3IHN3YXBuYW1lIHN5bnRheCBzeW50aW1lIHN5bmNiaW5kIHROZXh0IHRhYk5leHQgdGFiY2xvc2UgdGFiZWRpdCB0YWJmaW5kIHRhYmZpcnN0IHRhYmxhc3QgdGFibW92ZSB0YWJuZXh0IHRhYm9ubHkgdGFicHJldmlvdXMgdGFicmV3aW5kIHRhZyB0Y2wgdGNsZG8gdGNsZmlsZSB0ZWFyb2ZmIHRmaXJzdCB0aHJvdyB0anVtcCB0bGFzdCB0bWVudSB0bmV4dCB0b3BsZWZ0IHRwcmV2aW91cyAnKyd0cmV3aW5kIHRzZWxlY3QgdHVubWVudSB1bmRvIHVuZG9qb2luIHVuZG9saXN0IHVuYWJicmV2aWF0ZSB1bmhpZGUgdW5sZXQgdW5sb2NrdmFyIHVubWFwIHVubWVudSB1bnNpbGVudCB1cGRhdGUgdmdsb2JhbCB2ZXJzaW9uIHZlcmJvc2UgdmVydGljYWwgdmltZ3JlcCB2aW1ncmVwYWRkIHZpc3VhbCB2aXVzYWdlIHZpZXcgdm1hcCB2bWFwY2xlYXIgdm1lbnUgdm5ldyAnK1xuICAgICAgICAndm5vcmVtYXAgdm5vcmVtZW51IHZzcGxpdCB2dW5tYXAgdnVubWVudSB3cml0ZSB3TmV4dCB3YWxsIHdoaWxlIHdpbnNpemUgd2luY21kIHdpbnBvcyB3bmV4dCB3cHJldmlvdXMgd3FhbGwgd3N2ZXJiIHd1bmRvIHd2aW1pbmZvIHhpdCB4YWxsIHhtYXBjbGVhciB4bWFwIHhtZW51IHhub3JlbWFwIHhub3JlbWVudSB4dW5tYXAgeHVubWVudSB5YW5rJyxcbiAgICAgIGJ1aWx0X2luOiAvL2J1aWx0IGluIGZ1bmNcbiAgICAgICAgJ3N5bklEdHJhbnMgYXRhbjIgcmFuZ2UgbWF0Y2hhcmcgZGlkX2ZpbGV0eXBlIGFzaW4gZmVlZGtleXMgeG9yIGFyZ3YgJyArXG4gICAgICAgICdjb21wbGV0ZV9jaGVjayBhZGQgZ2V0d2lucG9zeCBnZXRxZmxpc3QgZ2V0d2lucG9zeSBzY3JlZW5jb2wgJyArXG4gICAgICAgICdjbGVhcm1hdGNoZXMgZW1wdHkgZXh0ZW5kIGdldGNtZHBvcyBtemV2YWwgZ2FyYmFnZWNvbGxlY3Qgc2V0cmVnICcgK1xuICAgICAgICAnY2VpbCBzcXJ0IGRpZmZfaGxJRCBpbnB1dHNlY3JldCBnZXQgZ2V0ZnBlcm0gZ2V0cGlkIGZpbGV3cml0YWJsZSAnICtcbiAgICAgICAgJ3NoaWZ0d2lkdGggbWF4IHNpbmggaXNkaXJlY3Rvcnkgc3luSUQgc3lzdGVtIGlucHV0cmVzdG9yZSB3aW5saW5lICcgK1xuICAgICAgICAnYXRhbiB2aXN1YWxtb2RlIGlucHV0bGlzdCB0YWJwYWdld2lubnIgcm91bmQgZ2V0cmVndHlwZSBtYXBjaGVjayAnICtcbiAgICAgICAgJ2hhc21hcHRvIGhpc3RkZWwgYXJnaWR4IGZpbmRmaWxlIHNoYTI1NiBleGlzdHMgdG91cHBlciBnZXRjbWRsaW5lICcgK1xuICAgICAgICAndGFnbGlzdCBzdHJpbmcgZ2V0bWF0Y2hlcyBidWZuciBzdHJmdGltZSB3aW53aWR0aCBidWZleGlzdHMgJyArXG4gICAgICAgICdzdHJ0cmFucyB0YWJwYWdlYnVmbGlzdCBzZXRjbWRwb3MgcmVtb3RlX3JlYWQgcHJpbnRmIHNldGxvY2xpc3QgJyArXG4gICAgICAgICdnZXRwb3MgZ2V0bGluZSBidWZ3aW5uciBmbG9hdDJuciBsZW4gZ2V0Y21kdHlwZSBkaWZmX2ZpbGxlciBsdWFldmFsICcgK1xuICAgICAgICAncmVzb2x2ZSBsaWJjYWxsbnIgZm9sZGNsb3NlZGVuZCByZXZlcnNlIGZpbHRlciBoYXNfa2V5IGJ1Zm5hbWUgJyArXG4gICAgICAgICdzdHIyZmxvYXQgc3RybGVuIHNldGxpbmUgZ2V0Y2hhcm1vZCBzZXRidWZ2YXIgaW5kZXggc2VhcmNocG9zICcgK1xuICAgICAgICAnc2hlbGxlc2NhcGUgdW5kb2ZpbGUgZm9sZGNsb3NlZCBzZXRxZmxpc3QgYnVmbGlzdGVkIHN0cmNoYXJzIHN0cjJuciAnICtcbiAgICAgICAgJ3ZpcnRjb2wgZmxvb3IgcmVtb3ZlIHVuZG90cmVlIHJlbW90ZV9leHByIHdpbmhlaWdodCBnZXR0YWJ3aW52YXIgJyArXG4gICAgICAgICdyZWx0aW1lIGN1cnNvciB0YWJwYWdlbnIgZmluZGRpciBsb2NhbHRpbWUgYWNvcyBnZXRsb2NsaXN0IHNlYXJjaCAnICtcbiAgICAgICAgJ3RhbmggbWF0Y2hlbmQgcmVuYW1lIGdldHRhYnZhciBzdHJkaXNwbGF5d2lkdGggdHlwZSBhYnMgcHkzZXZhbCAnICtcbiAgICAgICAgJ3NldHdpbnZhciB0b2xvd2VyIHdpbGRtZW51bW9kZSBsb2cxMCBzcGVsbHN1Z2dlc3QgYnVmbG9hZGVkICcgK1xuICAgICAgICAnc3luY29uY2VhbGVkIG5leHRub25ibGFuayBzZXJ2ZXIyY2xpZW50IGNvbXBsZXRlIHNldHRhYndpbnZhciAnICtcbiAgICAgICAgJ2V4ZWN1dGFibGUgaW5wdXQgd2luY29sIHNldG1hdGNoZXMgZ2V0ZnR5cGUgaGxJRCBpbnB1dHNhdmUgJyArXG4gICAgICAgICdzZWFyY2hwYWlyIG9yIHNjcmVlbnJvdyBsaW5lIHNldHRhYnZhciBoaXN0YWRkIGRlZXBjb3B5IHN0cnBhcnQgJyArXG4gICAgICAgICdyZW1vdGVfcGVlayBhbmQgZXZhbCBnZXRmdGltZSBzdWJtYXRjaCBzY3JlZW5jaGFyIHdpbnNhdmV2aWV3ICcgK1xuICAgICAgICAnbWF0Y2hhZGQgbWtkaXIgc2NyZWVuYXR0ciBnZXRmb250bmFtZSBsaWJjYWxsIHJlbHRpbWVzdHIgZ2V0ZnNpemUgJyArXG4gICAgICAgICd3aW5uciBpbnZlcnQgcG93IGdldGJ1ZmxpbmUgYnl0ZTJsaW5lIHNvdW5kZm9sZCByZXBlYXQgZm5hbWVlc2NhcGUgJyArXG4gICAgICAgICd0YWdmaWxlcyBzaW4gc3Ryd2lkdGggc3BlbGxiYWR3b3JkIHRydW5jIG1hcGFyZyBsb2cgbGlzcGluZGVudCAnICtcbiAgICAgICAgJ2hvc3RuYW1lIHNldHBvcyBnbG9icGF0aCByZW1vdGVfZm9yZWdyb3VuZCBnZXRjaGFyIHN5bklEYXR0ciAnICtcbiAgICAgICAgJ2ZuYW1lbW9kaWZ5IGNzY29wZV9jb25uZWN0aW9uIHN0cmlkeCB3aW5idWZuciBpbmRlbnQgbWluICcgK1xuICAgICAgICAnY29tcGxldGVfYWRkIG5yMmNoYXIgc2VhcmNocGFpcnBvcyBpbnB1dGRpYWxvZyB2YWx1ZXMgbWF0Y2hsaXN0ICcgK1xuICAgICAgICAnaXRlbXMgaGxleGlzdHMgc3RycmlkeCBicm93c2VkaXIgZXhwYW5kIGZtb2QgcGF0aHNob3J0ZW4gbGluZTJieXRlICcgK1xuICAgICAgICAnYXJnYyBjb3VudCBnZXR3aW52YXIgZ2xvYiBmb2xkdGV4dHJlc3VsdCBnZXRyZWcgZm9yZWdyb3VuZCBjb3NoICcgK1xuICAgICAgICAnbWF0Y2hkZWxldGUgaGFzIGNoYXIybnIgc2ltcGxpZnkgaGlzdGdldCBzZWFyY2hkZWNsIGljb252ICcgK1xuICAgICAgICAnd2lucmVzdGNtZCBwdW12aXNpYmxlIHdyaXRlZmlsZSBmb2xkbGV2ZWwgaGFzbG9jYWxkaXIga2V5cyBjb3MgJyArXG4gICAgICAgICdtYXRjaHN0ciBmb2xkdGV4dCBoaXN0bnIgdGFuIHRlbXBuYW1lIGdldGN3ZCBieXRlaWR4IGdldGJ1ZnZhciAnICtcbiAgICAgICAgJ2lzbG9ja2VkIGVzY2FwZSBldmVudGhhbmRsZXIgcmVtb3RlX3NlbmQgc2VydmVybGlzdCB3aW5yZXN0dmlldyAnICtcbiAgICAgICAgJ3N5bnN0YWNrIHB5ZXZhbCBwcmV2bm9uYmxhbmsgcmVhZGZpbGUgY2luZGVudCBmaWxlcmVhZGFibGUgY2hhbmdlbnIgJyArXG4gICAgICAgICdleHAnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvOy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcblxuICAgICAgLypcbiAgICAgIEEgZG91YmxlIHF1b3RlIGNhbiBzdGFydCBlaXRoZXIgYSBzdHJpbmcgb3IgYSBsaW5lIGNvbW1lbnQuIFN0cmluZ3MgYXJlXG4gICAgICBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiBhIGxpbmUgYnkgYW5vdGhlciBkb3VibGUgcXVvdGUgYW5kIGNhbiBjb250YWluXG4gICAgICBlc2NhcGVkIGRvdWJsZS1xdW90ZXMgYW5kIHBvc3QtZXNjYXBlZCBsaW5lIGJyZWFrcy5cblxuICAgICAgQWxzbywgYW55IGRvdWJsZSBxdW90ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpcyBhIGNvbW1lbnQgYnV0IHdlXG4gICAgICBkb24ndCBoYW5kbGUgdGhhdCBwcm9wZXJseSBhdCB0aGUgbW9tZW50OiBhbnkgZG91YmxlIHF1b3RlIGluc2lkZSB3aWxsXG4gICAgICB0dXJuIHRoZW0gaW50byBhIHN0cmluZy4gSGFuZGxpbmcgaXQgcHJvcGVybHkgd2lsbCByZXF1aXJlIGEgc21hcnRlclxuICAgICAgcGFyc2VyLlxuICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC9cIihcXFxcXCJ8XFxuXFxcXHxbXlwiXFxuXSkqXCIvXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcIicsICckJyksXG5cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1tid3RnbHNhdl06W1xcd1xcZF9dKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGZ1bmN0aW9uIScsIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLzxbXFx3LV0rPi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogJ1suJV0/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdsb2NrIHJlcCByZXBlIHJlcHogcmVwbmUgcmVwbnogeGFxdWlyZSB4cmVsZWFzZSBibmQgbm9ibmQgJyArXG4gICAgICAgICdhYWEgYWFkIGFhbSBhYXMgYWRjIGFkZCBhbmQgYXJwbCBiYjBfcmVzZXQgYmIxX3Jlc2V0IGJvdW5kIGJzZiBic3IgYnN3YXAgYnQgYnRjIGJ0ciBidHMgY2FsbCBjYncgY2RxIGNkcWUgY2xjIGNsZCBjbGkgY2x0cyBjbWMgY21wIGNtcHNiIGNtcHNkIGNtcHNxIGNtcHN3IGNtcHhjaGcgY21weGNoZzQ4NiBjbXB4Y2hnOGIgY21weGNoZzE2YiBjcHVpZCBjcHVfcmVhZCBjcHVfd3JpdGUgY3FvIGN3ZCBjd2RlIGRhYSBkYXMgZGVjIGRpdiBkbWludCBlbW1zIGVudGVyIGVxdSBmMnhtMSBmYWJzIGZhZGQgZmFkZHAgZmJsZCBmYnN0cCBmY2hzIGZjbGV4IGZjbW92YiBmY21vdmJlIGZjbW92ZSBmY21vdm5iIGZjbW92bmJlIGZjbW92bmUgZmNtb3ZudSBmY21vdnUgZmNvbSBmY29taSBmY29taXAgZmNvbXAgZmNvbXBwIGZjb3MgZmRlY3N0cCBmZGlzaSBmZGl2IGZkaXZwIGZkaXZyIGZkaXZycCBmZW1tcyBmZW5pIGZmcmVlIGZmcmVlcCBmaWFkZCBmaWNvbSBmaWNvbXAgZmlkaXYgZmlkaXZyIGZpbGQgZmltdWwgZmluY3N0cCBmaW5pdCBmaXN0IGZpc3RwIGZpc3R0cCBmaXN1YiBmaXN1YnIgZmxkIGZsZDEgZmxkY3cgZmxkZW52IGZsZGwyZSBmbGRsMnQgZmxkbGcyIGZsZGxuMiBmbGRwaSBmbGR6IGZtdWwgZm11bHAgZm5jbGV4IGZuZGlzaSBmbmVuaSBmbmluaXQgZm5vcCBmbnNhdmUgZm5zdGN3IGZuc3RlbnYgZm5zdHN3IGZwYXRhbiBmcHJlbSBmcHJlbTEgZnB0YW4gZnJuZGludCBmcnN0b3IgZnNhdmUgZnNjYWxlIGZzZXRwbSBmc2luIGZzaW5jb3MgZnNxcnQgZnN0IGZzdGN3IGZzdGVudiBmc3RwIGZzdHN3IGZzdWIgZnN1YnAgZnN1YnIgZnN1YnJwIGZ0c3QgZnVjb20gZnVjb21pIGZ1Y29taXAgZnVjb21wIGZ1Y29tcHAgZnhhbSBmeGNoIGZ4dHJhY3QgZnlsMnggZnlsMnhwMSBobHQgaWJ0cyBpY2VicCBpZGl2IGltdWwgaW4gaW5jIGluY2JpbiBpbnNiIGluc2QgaW5zdyBpbnQgaW50MDEgaW50MSBpbnQwMyBpbnQzIGludG8gaW52ZCBpbnZwY2lkIGludmxwZyBpbnZscGdhIGlyZXQgaXJldGQgaXJldHEgaXJldHcgamN4eiBqZWN4eiBqcmN4eiBqbXAgam1wZSBsYWhmIGxhciBsZHMgbGVhIGxlYXZlIGxlcyBsZmVuY2UgbGZzIGxnZHQgbGdzIGxpZHQgbGxkdCBsbXN3IGxvYWRhbGwgbG9hZGFsbDI4NiBsb2RzYiBsb2RzZCBsb2RzcSBsb2RzdyBsb29wIGxvb3BlIGxvb3BuZSBsb29wbnogbG9vcHogbHNsIGxzcyBsdHIgbWZlbmNlIG1vbml0b3IgbW92IG1vdmQgbW92cSBtb3ZzYiBtb3ZzZCBtb3ZzcSBtb3ZzdyBtb3ZzeCBtb3ZzeGQgbW92enggbXVsIG13YWl0IG5lZyBub3Agbm90IG9yIG91dCBvdXRzYiBvdXRzZCBvdXRzdyBwYWNrc3NkdyBwYWNrc3N3YiBwYWNrdXN3YiBwYWRkYiBwYWRkZCBwYWRkc2IgcGFkZHNpdyBwYWRkc3cgcGFkZHVzYiBwYWRkdXN3IHBhZGR3IHBhbmQgcGFuZG4gcGF1c2UgcGF2ZWIgcGF2Z3VzYiBwY21wZXFiIHBjbXBlcWQgcGNtcGVxdyBwY21wZ3RiIHBjbXBndGQgcGNtcGd0dyBwZGlzdGliIHBmMmlkIHBmYWNjIHBmYWRkIHBmY21wZXEgcGZjbXBnZSBwZmNtcGd0IHBmbWF4IHBmbWluIHBmbXVsIHBmcmNwIHBmcmNwaXQxIHBmcmNwaXQyIHBmcnNxaXQxIHBmcnNxcnQgcGZzdWIgcGZzdWJyIHBpMmZkIHBtYWNocml3IHBtYWRkd2QgcG1hZ3cgcG11bGhyaXcgcG11bGhyd2EgcG11bGhyd2MgcG11bGh3IHBtdWxsdyBwbXZnZXpiIHBtdmx6YiBwbXZuemIgcG12emIgcG9wIHBvcGEgcG9wYWQgcG9wYXcgcG9wZiBwb3BmZCBwb3BmcSBwb3BmdyBwb3IgcHJlZmV0Y2ggcHJlZmV0Y2h3IHBzbGxkIHBzbGxxIHBzbGx3IHBzcmFkIHBzcmF3IHBzcmxkIHBzcmxxIHBzcmx3IHBzdWJiIHBzdWJkIHBzdWJzYiBwc3Vic2l3IHBzdWJzdyBwc3VidXNiIHBzdWJ1c3cgcHN1YncgcHVucGNraGJ3IHB1bnBja2hkcSBwdW5wY2tod2QgcHVucGNrbGJ3IHB1bnBja2xkcSBwdW5wY2tsd2QgcHVzaCBwdXNoYSBwdXNoYWQgcHVzaGF3IHB1c2hmIHB1c2hmZCBwdXNoZnEgcHVzaGZ3IHB4b3IgcmNsIHJjciByZHNociByZG1zciByZHBtYyByZHRzYyByZHRzY3AgcmV0IHJldGYgcmV0biByb2wgcm9yIHJkbSByc2RjIHJzbGR0IHJzbSByc3RzIHNhaGYgc2FsIHNhbGMgc2FyIHNiYiBzY2FzYiBzY2FzZCBzY2FzcSBzY2FzdyBzZmVuY2Ugc2dkdCBzaGwgc2hsZCBzaHIgc2hyZCBzaWR0IHNsZHQgc2tpbml0IHNtaSBzbWludCBzbWludG9sZCBzbXN3IHN0YyBzdGQgc3RpIHN0b3NiIHN0b3NkIHN0b3NxIHN0b3N3IHN0ciBzdWIgc3ZkYyBzdmxkdCBzdnRzIHN3YXBncyBzeXNjYWxsIHN5c2VudGVyIHN5c2V4aXQgc3lzcmV0IHRlc3QgdWQwIHVkMSB1ZDJiIHVkMiB1ZDJhIHVtb3YgdmVyciB2ZXJ3IGZ3YWl0IHdiaW52ZCB3cnNociB3cm1zciB4YWRkIHhidHMgeGNoZyB4bGF0YiB4bGF0IHhvciBjbW92ZSBjbW92eiBjbW92bmUgY21vdm56IGNtb3ZhIGNtb3ZuYmUgY21vdmFlIGNtb3ZuYiBjbW92YiBjbW92bmFlIGNtb3ZiZSBjbW92bmEgY21vdmcgY21vdm5sZSBjbW92Z2UgY21vdm5sIGNtb3ZsIGNtb3ZuZ2UgY21vdmxlIGNtb3ZuZyBjbW92YyBjbW92bmMgY21vdm8gY21vdm5vIGNtb3ZzIGNtb3ZucyBjbW92cCBjbW92cGUgY21vdm5wIGNtb3ZwbyBqZSBqeiBqbmUgam56IGphIGpuYmUgamFlIGpuYiBqYiBqbmFlIGpiZSBqbmEgamcgam5sZSBqZ2Ugam5sIGpsIGpuZ2UgamxlIGpuZyBqYyBqbmMgam8gam5vIGpzIGpucyBqcG8gam5wIGpwZSBqcCBzZXRlIHNldHogc2V0bmUgc2V0bnogc2V0YSBzZXRuYmUgc2V0YWUgc2V0bmIgc2V0bmMgc2V0YiBzZXRuYWUgc2V0Y3NldCBzZXRiZSBzZXRuYSBzZXRnIHNldG5sZSBzZXRnZSBzZXRubCBzZXRsIHNldG5nZSBzZXRsZSBzZXRuZyBzZXRzIHNldG5zIHNldG8gc2V0bm8gc2V0cGUgc2V0cCBzZXRwbyBzZXRucCBhZGRwcyBhZGRzcyBhbmRucHMgYW5kcHMgY21wZXFwcyBjbXBlcXNzIGNtcGxlcHMgY21wbGVzcyBjbXBsdHBzIGNtcGx0c3MgY21wbmVxcHMgY21wbmVxc3MgY21wbmxlcHMgY21wbmxlc3MgY21wbmx0cHMgY21wbmx0c3MgY21wb3JkcHMgY21wb3Jkc3MgY21wdW5vcmRwcyBjbXB1bm9yZHNzIGNtcHBzIGNtcHNzIGNvbWlzcyBjdnRwaTJwcyBjdnRwczJwaSBjdnRzaTJzcyBjdnRzczJzaSBjdnR0cHMycGkgY3Z0dHNzMnNpIGRpdnBzIGRpdnNzIGxkbXhjc3IgbWF4cHMgbWF4c3MgbWlucHMgbWluc3MgbW92YXBzIG1vdmhwcyBtb3ZsaHBzIG1vdmxwcyBtb3ZobHBzIG1vdm1za3BzIG1vdm50cHMgbW92c3MgbW92dXBzIG11bHBzIG11bHNzIG9ycHMgcmNwcHMgcmNwc3MgcnNxcnRwcyByc3FydHNzIHNodWZwcyBzcXJ0cHMgc3FydHNzIHN0bXhjc3Igc3VicHMgc3Vic3MgdWNvbWlzcyB1bnBja2hwcyB1bnBja2xwcyB4b3JwcyBmeHJzdG9yIGZ4cnN0b3I2NCBmeHNhdmUgZnhzYXZlNjQgeGdldGJ2IHhzZXRidiB4c2F2ZSB4c2F2ZTY0IHhzYXZlb3B0IHhzYXZlb3B0NjQgeHJzdG9yIHhyc3RvcjY0IHByZWZldGNobnRhIHByZWZldGNodDAgcHJlZmV0Y2h0MSBwcmVmZXRjaHQyIG1hc2ttb3ZxIG1vdm50cSBwYXZnYiBwYXZndyBwZXh0cncgcGluc3J3IHBtYXhzdyBwbWF4dWIgcG1pbnN3IHBtaW51YiBwbW92bXNrYiBwbXVsaHV3IHBzYWRidyBwc2h1ZncgcGYyaXcgcGZuYWNjIHBmcG5hY2MgcGkyZncgcHN3YXBkIG1hc2ttb3ZkcXUgY2xmbHVzaCBtb3ZudGRxIG1vdm50aSBtb3ZudHBkIG1vdmRxYSBtb3ZkcXUgbW92ZHEycSBtb3ZxMmRxIHBhZGRxIHBtdWx1ZHEgcHNodWZkIHBzaHVmaHcgcHNodWZsdyBwc2xsZHEgcHNybGRxIHBzdWJxIHB1bnBja2hxZHEgcHVucGNrbHFkcSBhZGRwZCBhZGRzZCBhbmRucGQgYW5kcGQgY21wZXFwZCBjbXBlcXNkIGNtcGxlcGQgY21wbGVzZCBjbXBsdHBkIGNtcGx0c2QgY21wbmVxcGQgY21wbmVxc2QgY21wbmxlcGQgY21wbmxlc2QgY21wbmx0cGQgY21wbmx0c2QgY21wb3JkcGQgY21wb3Jkc2QgY21wdW5vcmRwZCBjbXB1bm9yZHNkIGNtcHBkIGNvbWlzZCBjdnRkcTJwZCBjdnRkcTJwcyBjdnRwZDJkcSBjdnRwZDJwaSBjdnRwZDJwcyBjdnRwaTJwZCBjdnRwczJkcSBjdnRwczJwZCBjdnRzZDJzaSBjdnRzZDJzcyBjdnRzaTJzZCBjdnRzczJzZCBjdnR0cGQycGkgY3Z0dHBkMmRxIGN2dHRwczJkcSBjdnR0c2Qyc2kgZGl2cGQgZGl2c2QgbWF4cGQgbWF4c2QgbWlucGQgbWluc2QgbW92YXBkIG1vdmhwZCBtb3ZscGQgbW92bXNrcGQgbW92dXBkIG11bHBkIG11bHNkIG9ycGQgc2h1ZnBkIHNxcnRwZCBzcXJ0c2Qgc3VicGQgc3Vic2QgdWNvbWlzZCB1bnBja2hwZCB1bnBja2xwZCB4b3JwZCBhZGRzdWJwZCBhZGRzdWJwcyBoYWRkcGQgaGFkZHBzIGhzdWJwZCBoc3VicHMgbGRkcXUgbW92ZGR1cCBtb3ZzaGR1cCBtb3ZzbGR1cCBjbGdpIHN0Z2kgdm1jYWxsIHZtY2xlYXIgdm1mdW5jIHZtbGF1bmNoIHZtbG9hZCB2bW1jYWxsIHZtcHRybGQgdm1wdHJzdCB2bXJlYWQgdm1yZXN1bWUgdm1ydW4gdm1zYXZlIHZtd3JpdGUgdm14b2ZmIHZteG9uIGludmVwdCBpbnZ2cGlkIHBhYnNiIHBhYnN3IHBhYnNkIHBhbGlnbnIgcGhhZGR3IHBoYWRkZCBwaGFkZHN3IHBoc3VidyBwaHN1YmQgcGhzdWJzdyBwbWFkZHVic3cgcG11bGhyc3cgcHNodWZiIHBzaWduYiBwc2lnbncgcHNpZ25kIGV4dHJxIGluc2VydHEgbW92bnRzZCBtb3ZudHNzIGx6Y250IGJsZW5kcGQgYmxlbmRwcyBibGVuZHZwZCBibGVuZHZwcyBkcHBkIGRwcHMgZXh0cmFjdHBzIGluc2VydHBzIG1vdm50ZHFhIG1wc2FkYncgcGFja3VzZHcgcGJsZW5kdmIgcGJsZW5kdyBwY21wZXFxIHBleHRyYiBwZXh0cmQgcGV4dHJxIHBobWlucG9zdXcgcGluc3JiIHBpbnNyZCBwaW5zcnEgcG1heHNiIHBtYXhzZCBwbWF4dWQgcG1heHV3IHBtaW5zYiBwbWluc2QgcG1pbnVkIHBtaW51dyBwbW92c3hidyBwbW92c3hiZCBwbW92c3hicSBwbW92c3h3ZCBwbW92c3h3cSBwbW92c3hkcSBwbW92enhidyBwbW92enhiZCBwbW92enhicSBwbW92enh3ZCBwbW92enh3cSBwbW92enhkcSBwbXVsZHEgcG11bGxkIHB0ZXN0IHJvdW5kcGQgcm91bmRwcyByb3VuZHNkIHJvdW5kc3MgY3JjMzIgcGNtcGVzdHJpIHBjbXBlc3RybSBwY21waXN0cmkgcGNtcGlzdHJtIHBjbXBndHEgcG9wY250IGdldHNlYyBwZnJjcHYgcGZyc3FydHYgbW92YmUgYWVzZW5jIGFlc2VuY2xhc3QgYWVzZGVjIGFlc2RlY2xhc3QgYWVzaW1jIGFlc2tleWdlbmFzc2lzdCB2YWVzZW5jIHZhZXNlbmNsYXN0IHZhZXNkZWMgdmFlc2RlY2xhc3QgdmFlc2ltYyB2YWVza2V5Z2VuYXNzaXN0IHZhZGRwZCB2YWRkcHMgdmFkZHNkIHZhZGRzcyB2YWRkc3VicGQgdmFkZHN1YnBzIHZhbmRwZCB2YW5kcHMgdmFuZG5wZCB2YW5kbnBzIHZibGVuZHBkIHZibGVuZHBzIHZibGVuZHZwZCB2YmxlbmR2cHMgdmJyb2FkY2FzdHNzIHZicm9hZGNhc3RzZCB2YnJvYWRjYXN0ZjEyOCB2Y21wZXFfb3NwZCB2Y21wZXFwZCB2Y21wbHRfb3NwZCB2Y21wbHRwZCB2Y21wbGVfb3NwZCB2Y21wbGVwZCB2Y21wdW5vcmRfcXBkIHZjbXB1bm9yZHBkIHZjbXBuZXFfdXFwZCB2Y21wbmVxcGQgdmNtcG5sdF91c3BkIHZjbXBubHRwZCB2Y21wbmxlX3VzcGQgdmNtcG5sZXBkIHZjbXBvcmRfcXBkIHZjbXBvcmRwZCB2Y21wZXFfdXFwZCB2Y21wbmdlX3VzcGQgdmNtcG5nZXBkIHZjbXBuZ3RfdXNwZCB2Y21wbmd0cGQgdmNtcGZhbHNlX29xcGQgdmNtcGZhbHNlcGQgdmNtcG5lcV9vcXBkIHZjbXBnZV9vc3BkIHZjbXBnZXBkIHZjbXBndF9vc3BkIHZjbXBndHBkIHZjbXB0cnVlX3VxcGQgdmNtcHRydWVwZCB2Y21wbHRfb3FwZCB2Y21wbGVfb3FwZCB2Y21wdW5vcmRfc3BkIHZjbXBuZXFfdXNwZCB2Y21wbmx0X3VxcGQgdmNtcG5sZV91cXBkIHZjbXBvcmRfc3BkIHZjbXBlcV91c3BkIHZjbXBuZ2VfdXFwZCB2Y21wbmd0X3VxcGQgdmNtcGZhbHNlX29zcGQgdmNtcG5lcV9vc3BkIHZjbXBnZV9vcXBkIHZjbXBndF9vcXBkIHZjbXB0cnVlX3VzcGQgdmNtcHBkIHZjbXBlcV9vc3BzIHZjbXBlcXBzIHZjbXBsdF9vc3BzIHZjbXBsdHBzIHZjbXBsZV9vc3BzIHZjbXBsZXBzIHZjbXB1bm9yZF9xcHMgdmNtcHVub3JkcHMgdmNtcG5lcV91cXBzIHZjbXBuZXFwcyB2Y21wbmx0X3VzcHMgdmNtcG5sdHBzIHZjbXBubGVfdXNwcyB2Y21wbmxlcHMgdmNtcG9yZF9xcHMgdmNtcG9yZHBzIHZjbXBlcV91cXBzIHZjbXBuZ2VfdXNwcyB2Y21wbmdlcHMgdmNtcG5ndF91c3BzIHZjbXBuZ3RwcyB2Y21wZmFsc2Vfb3FwcyB2Y21wZmFsc2VwcyB2Y21wbmVxX29xcHMgdmNtcGdlX29zcHMgdmNtcGdlcHMgdmNtcGd0X29zcHMgdmNtcGd0cHMgdmNtcHRydWVfdXFwcyB2Y21wdHJ1ZXBzIHZjbXBsdF9vcXBzIHZjbXBsZV9vcXBzIHZjbXB1bm9yZF9zcHMgdmNtcG5lcV91c3BzIHZjbXBubHRfdXFwcyB2Y21wbmxlX3VxcHMgdmNtcG9yZF9zcHMgdmNtcGVxX3VzcHMgdmNtcG5nZV91cXBzIHZjbXBuZ3RfdXFwcyB2Y21wZmFsc2Vfb3NwcyB2Y21wbmVxX29zcHMgdmNtcGdlX29xcHMgdmNtcGd0X29xcHMgdmNtcHRydWVfdXNwcyB2Y21wcHMgdmNtcGVxX29zc2QgdmNtcGVxc2QgdmNtcGx0X29zc2QgdmNtcGx0c2QgdmNtcGxlX29zc2QgdmNtcGxlc2QgdmNtcHVub3JkX3FzZCB2Y21wdW5vcmRzZCB2Y21wbmVxX3Vxc2QgdmNtcG5lcXNkIHZjbXBubHRfdXNzZCB2Y21wbmx0c2QgdmNtcG5sZV91c3NkIHZjbXBubGVzZCB2Y21wb3JkX3FzZCB2Y21wb3Jkc2QgdmNtcGVxX3Vxc2QgdmNtcG5nZV91c3NkIHZjbXBuZ2VzZCB2Y21wbmd0X3Vzc2QgdmNtcG5ndHNkIHZjbXBmYWxzZV9vcXNkIHZjbXBmYWxzZXNkIHZjbXBuZXFfb3FzZCB2Y21wZ2Vfb3NzZCB2Y21wZ2VzZCB2Y21wZ3Rfb3NzZCB2Y21wZ3RzZCB2Y21wdHJ1ZV91cXNkIHZjbXB0cnVlc2QgdmNtcGx0X29xc2QgdmNtcGxlX29xc2QgdmNtcHVub3JkX3NzZCB2Y21wbmVxX3Vzc2QgdmNtcG5sdF91cXNkIHZjbXBubGVfdXFzZCB2Y21wb3JkX3NzZCB2Y21wZXFfdXNzZCB2Y21wbmdlX3Vxc2QgdmNtcG5ndF91cXNkIHZjbXBmYWxzZV9vc3NkIHZjbXBuZXFfb3NzZCB2Y21wZ2Vfb3FzZCB2Y21wZ3Rfb3FzZCB2Y21wdHJ1ZV91c3NkIHZjbXBzZCB2Y21wZXFfb3NzcyB2Y21wZXFzcyB2Y21wbHRfb3NzcyB2Y21wbHRzcyB2Y21wbGVfb3NzcyB2Y21wbGVzcyB2Y21wdW5vcmRfcXNzIHZjbXB1bm9yZHNzIHZjbXBuZXFfdXFzcyB2Y21wbmVxc3MgdmNtcG5sdF91c3NzIHZjbXBubHRzcyB2Y21wbmxlX3Vzc3MgdmNtcG5sZXNzIHZjbXBvcmRfcXNzIHZjbXBvcmRzcyB2Y21wZXFfdXFzcyB2Y21wbmdlX3Vzc3MgdmNtcG5nZXNzIHZjbXBuZ3RfdXNzcyB2Y21wbmd0c3MgdmNtcGZhbHNlX29xc3MgdmNtcGZhbHNlc3MgdmNtcG5lcV9vcXNzIHZjbXBnZV9vc3NzIHZjbXBnZXNzIHZjbXBndF9vc3NzIHZjbXBndHNzIHZjbXB0cnVlX3Vxc3MgdmNtcHRydWVzcyB2Y21wbHRfb3FzcyB2Y21wbGVfb3FzcyB2Y21wdW5vcmRfc3NzIHZjbXBuZXFfdXNzcyB2Y21wbmx0X3Vxc3MgdmNtcG5sZV91cXNzIHZjbXBvcmRfc3NzIHZjbXBlcV91c3NzIHZjbXBuZ2VfdXFzcyB2Y21wbmd0X3Vxc3MgdmNtcGZhbHNlX29zc3MgdmNtcG5lcV9vc3NzIHZjbXBnZV9vcXNzIHZjbXBndF9vcXNzIHZjbXB0cnVlX3Vzc3MgdmNtcHNzIHZjb21pc2QgdmNvbWlzcyB2Y3Z0ZHEycGQgdmN2dGRxMnBzIHZjdnRwZDJkcSB2Y3Z0cGQycHMgdmN2dHBzMmRxIHZjdnRwczJwZCB2Y3Z0c2Qyc2kgdmN2dHNkMnNzIHZjdnRzaTJzZCB2Y3Z0c2kyc3MgdmN2dHNzMnNkIHZjdnRzczJzaSB2Y3Z0dHBkMmRxIHZjdnR0cHMyZHEgdmN2dHRzZDJzaSB2Y3Z0dHNzMnNpIHZkaXZwZCB2ZGl2cHMgdmRpdnNkIHZkaXZzcyB2ZHBwZCB2ZHBwcyB2ZXh0cmFjdGYxMjggdmV4dHJhY3RwcyB2aGFkZHBkIHZoYWRkcHMgdmhzdWJwZCB2aHN1YnBzIHZpbnNlcnRmMTI4IHZpbnNlcnRwcyB2bGRkcXUgdmxkcXF1IHZsZG14Y3NyIHZtYXNrbW92ZHF1IHZtYXNrbW92cHMgdm1hc2ttb3ZwZCB2bWF4cGQgdm1heHBzIHZtYXhzZCB2bWF4c3Mgdm1pbnBkIHZtaW5wcyB2bWluc2Qgdm1pbnNzIHZtb3ZhcGQgdm1vdmFwcyB2bW92ZCB2bW92cSB2bW92ZGR1cCB2bW92ZHFhIHZtb3ZxcWEgdm1vdmRxdSB2bW92cXF1IHZtb3ZobHBzIHZtb3ZocGQgdm1vdmhwcyB2bW92bGhwcyB2bW92bHBkIHZtb3ZscHMgdm1vdm1za3BkIHZtb3Ztc2twcyB2bW92bnRkcSB2bW92bnRxcSB2bW92bnRkcWEgdm1vdm50cGQgdm1vdm50cHMgdm1vdnNkIHZtb3ZzaGR1cCB2bW92c2xkdXAgdm1vdnNzIHZtb3Z1cGQgdm1vdnVwcyB2bXBzYWRidyB2bXVscGQgdm11bHBzIHZtdWxzZCB2bXVsc3Mgdm9ycGQgdm9ycHMgdnBhYnNiIHZwYWJzdyB2cGFic2QgdnBhY2tzc3diIHZwYWNrc3NkdyB2cGFja3Vzd2IgdnBhY2t1c2R3IHZwYWRkYiB2cGFkZHcgdnBhZGRkIHZwYWRkcSB2cGFkZHNiIHZwYWRkc3cgdnBhZGR1c2IgdnBhZGR1c3cgdnBhbGlnbnIgdnBhbmQgdnBhbmRuIHZwYXZnYiB2cGF2Z3cgdnBibGVuZHZiIHZwYmxlbmR3IHZwY21wZXN0cmkgdnBjbXBlc3RybSB2cGNtcGlzdHJpIHZwY21waXN0cm0gdnBjbXBlcWIgdnBjbXBlcXcgdnBjbXBlcWQgdnBjbXBlcXEgdnBjbXBndGIgdnBjbXBndHcgdnBjbXBndGQgdnBjbXBndHEgdnBlcm1pbHBkIHZwZXJtaWxwcyB2cGVybTJmMTI4IHZwZXh0cmIgdnBleHRydyB2cGV4dHJkIHZwZXh0cnEgdnBoYWRkdyB2cGhhZGRkIHZwaGFkZHN3IHZwaG1pbnBvc3V3IHZwaHN1YncgdnBoc3ViZCB2cGhzdWJzdyB2cGluc3JiIHZwaW5zcncgdnBpbnNyZCB2cGluc3JxIHZwbWFkZHdkIHZwbWFkZHVic3cgdnBtYXhzYiB2cG1heHN3IHZwbWF4c2QgdnBtYXh1YiB2cG1heHV3IHZwbWF4dWQgdnBtaW5zYiB2cG1pbnN3IHZwbWluc2QgdnBtaW51YiB2cG1pbnV3IHZwbWludWQgdnBtb3Ztc2tiIHZwbW92c3hidyB2cG1vdnN4YmQgdnBtb3ZzeGJxIHZwbW92c3h3ZCB2cG1vdnN4d3EgdnBtb3ZzeGRxIHZwbW92enhidyB2cG1vdnp4YmQgdnBtb3Z6eGJxIHZwbW92enh3ZCB2cG1vdnp4d3EgdnBtb3Z6eGRxIHZwbXVsaHV3IHZwbXVsaHJzdyB2cG11bGh3IHZwbXVsbHcgdnBtdWxsZCB2cG11bHVkcSB2cG11bGRxIHZwb3IgdnBzYWRidyB2cHNodWZiIHZwc2h1ZmQgdnBzaHVmaHcgdnBzaHVmbHcgdnBzaWduYiB2cHNpZ253IHZwc2lnbmQgdnBzbGxkcSB2cHNybGRxIHZwc2xsdyB2cHNsbGQgdnBzbGxxIHZwc3JhdyB2cHNyYWQgdnBzcmx3IHZwc3JsZCB2cHNybHEgdnB0ZXN0IHZwc3ViYiB2cHN1YncgdnBzdWJkIHZwc3VicSB2cHN1YnNiIHZwc3Vic3cgdnBzdWJ1c2IgdnBzdWJ1c3cgdnB1bnBja2hidyB2cHVucGNraHdkIHZwdW5wY2toZHEgdnB1bnBja2hxZHEgdnB1bnBja2xidyB2cHVucGNrbHdkIHZwdW5wY2tsZHEgdnB1bnBja2xxZHEgdnB4b3IgdnJjcHBzIHZyY3BzcyB2cnNxcnRwcyB2cnNxcnRzcyB2cm91bmRwZCB2cm91bmRwcyB2cm91bmRzZCB2cm91bmRzcyB2c2h1ZnBkIHZzaHVmcHMgdnNxcnRwZCB2c3FydHBzIHZzcXJ0c2QgdnNxcnRzcyB2c3RteGNzciB2c3VicGQgdnN1YnBzIHZzdWJzZCB2c3Vic3MgdnRlc3RwcyB2dGVzdHBkIHZ1Y29taXNkIHZ1Y29taXNzIHZ1bnBja2hwZCB2dW5wY2tocHMgdnVucGNrbHBkIHZ1bnBja2xwcyB2eG9ycGQgdnhvcnBzIHZ6ZXJvYWxsIHZ6ZXJvdXBwZXIgcGNsbXVsbHFscWRxIHBjbG11bGhxbHFkcSBwY2xtdWxscWhxZHEgcGNsbXVsaHFocWRxIHBjbG11bHFkcSB2cGNsbXVsbHFscWRxIHZwY2xtdWxocWxxZHEgdnBjbG11bGxxaHFkcSB2cGNsbXVsaHFocWRxIHZwY2xtdWxxZHEgdmZtYWRkMTMycHMgdmZtYWRkMTMycGQgdmZtYWRkMzEycHMgdmZtYWRkMzEycGQgdmZtYWRkMjEzcHMgdmZtYWRkMjEzcGQgdmZtYWRkMTIzcHMgdmZtYWRkMTIzcGQgdmZtYWRkMjMxcHMgdmZtYWRkMjMxcGQgdmZtYWRkMzIxcHMgdmZtYWRkMzIxcGQgdmZtYWRkc3ViMTMycHMgdmZtYWRkc3ViMTMycGQgdmZtYWRkc3ViMzEycHMgdmZtYWRkc3ViMzEycGQgdmZtYWRkc3ViMjEzcHMgdmZtYWRkc3ViMjEzcGQgdmZtYWRkc3ViMTIzcHMgdmZtYWRkc3ViMTIzcGQgdmZtYWRkc3ViMjMxcHMgdmZtYWRkc3ViMjMxcGQgdmZtYWRkc3ViMzIxcHMgdmZtYWRkc3ViMzIxcGQgdmZtc3ViMTMycHMgdmZtc3ViMTMycGQgdmZtc3ViMzEycHMgdmZtc3ViMzEycGQgdmZtc3ViMjEzcHMgdmZtc3ViMjEzcGQgdmZtc3ViMTIzcHMgdmZtc3ViMTIzcGQgdmZtc3ViMjMxcHMgdmZtc3ViMjMxcGQgdmZtc3ViMzIxcHMgdmZtc3ViMzIxcGQgdmZtc3ViYWRkMTMycHMgdmZtc3ViYWRkMTMycGQgdmZtc3ViYWRkMzEycHMgdmZtc3ViYWRkMzEycGQgdmZtc3ViYWRkMjEzcHMgdmZtc3ViYWRkMjEzcGQgdmZtc3ViYWRkMTIzcHMgdmZtc3ViYWRkMTIzcGQgdmZtc3ViYWRkMjMxcHMgdmZtc3ViYWRkMjMxcGQgdmZtc3ViYWRkMzIxcHMgdmZtc3ViYWRkMzIxcGQgdmZubWFkZDEzMnBzIHZmbm1hZGQxMzJwZCB2Zm5tYWRkMzEycHMgdmZubWFkZDMxMnBkIHZmbm1hZGQyMTNwcyB2Zm5tYWRkMjEzcGQgdmZubWFkZDEyM3BzIHZmbm1hZGQxMjNwZCB2Zm5tYWRkMjMxcHMgdmZubWFkZDIzMXBkIHZmbm1hZGQzMjFwcyB2Zm5tYWRkMzIxcGQgdmZubXN1YjEzMnBzIHZmbm1zdWIxMzJwZCB2Zm5tc3ViMzEycHMgdmZubXN1YjMxMnBkIHZmbm1zdWIyMTNwcyB2Zm5tc3ViMjEzcGQgdmZubXN1YjEyM3BzIHZmbm1zdWIxMjNwZCB2Zm5tc3ViMjMxcHMgdmZubXN1YjIzMXBkIHZmbm1zdWIzMjFwcyB2Zm5tc3ViMzIxcGQgdmZtYWRkMTMyc3MgdmZtYWRkMTMyc2QgdmZtYWRkMzEyc3MgdmZtYWRkMzEyc2QgdmZtYWRkMjEzc3MgdmZtYWRkMjEzc2QgdmZtYWRkMTIzc3MgdmZtYWRkMTIzc2QgdmZtYWRkMjMxc3MgdmZtYWRkMjMxc2QgdmZtYWRkMzIxc3MgdmZtYWRkMzIxc2QgdmZtc3ViMTMyc3MgdmZtc3ViMTMyc2QgdmZtc3ViMzEyc3MgdmZtc3ViMzEyc2QgdmZtc3ViMjEzc3MgdmZtc3ViMjEzc2QgdmZtc3ViMTIzc3MgdmZtc3ViMTIzc2QgdmZtc3ViMjMxc3MgdmZtc3ViMjMxc2QgdmZtc3ViMzIxc3MgdmZtc3ViMzIxc2QgdmZubWFkZDEzMnNzIHZmbm1hZGQxMzJzZCB2Zm5tYWRkMzEyc3MgdmZubWFkZDMxMnNkIHZmbm1hZGQyMTNzcyB2Zm5tYWRkMjEzc2QgdmZubWFkZDEyM3NzIHZmbm1hZGQxMjNzZCB2Zm5tYWRkMjMxc3MgdmZubWFkZDIzMXNkIHZmbm1hZGQzMjFzcyB2Zm5tYWRkMzIxc2QgdmZubXN1YjEzMnNzIHZmbm1zdWIxMzJzZCB2Zm5tc3ViMzEyc3MgdmZubXN1YjMxMnNkIHZmbm1zdWIyMTNzcyB2Zm5tc3ViMjEzc2QgdmZubXN1YjEyM3NzIHZmbm1zdWIxMjNzZCB2Zm5tc3ViMjMxc3MgdmZubXN1YjIzMXNkIHZmbm1zdWIzMjFzcyB2Zm5tc3ViMzIxc2QgcmRmc2Jhc2UgcmRnc2Jhc2UgcmRyYW5kIHdyZnNiYXNlIHdyZ3NiYXNlIHZjdnRwaDJwcyB2Y3Z0cHMycGggYWRjeCBhZG94IHJkc2VlZCBjbGFjIHN0YWMgeHN0b3JlIHhjcnlwdGVjYiB4Y3J5cHRjYmMgeGNyeXB0Y3RyIHhjcnlwdGNmYiB4Y3J5cHRvZmIgbW9udG11bCB4c2hhMSB4c2hhMjU2IGxsd3BjYiBzbHdwY2IgbHdwdmFsIGx3cGlucyB2Zm1hZGRwZCB2Zm1hZGRwcyB2Zm1hZGRzZCB2Zm1hZGRzcyB2Zm1hZGRzdWJwZCB2Zm1hZGRzdWJwcyB2Zm1zdWJhZGRwZCB2Zm1zdWJhZGRwcyB2Zm1zdWJwZCB2Zm1zdWJwcyB2Zm1zdWJzZCB2Zm1zdWJzcyB2Zm5tYWRkcGQgdmZubWFkZHBzIHZmbm1hZGRzZCB2Zm5tYWRkc3MgdmZubXN1YnBkIHZmbm1zdWJwcyB2Zm5tc3Vic2QgdmZubXN1YnNzIHZmcmN6cGQgdmZyY3pwcyB2ZnJjenNkIHZmcmN6c3MgdnBjbW92IHZwY29tYiB2cGNvbWQgdnBjb21xIHZwY29tdWIgdnBjb211ZCB2cGNvbXVxIHZwY29tdXcgdnBjb213IHZwaGFkZGJkIHZwaGFkZGJxIHZwaGFkZGJ3IHZwaGFkZGRxIHZwaGFkZHViZCB2cGhhZGR1YnEgdnBoYWRkdWJ3IHZwaGFkZHVkcSB2cGhhZGR1d2QgdnBoYWRkdXdxIHZwaGFkZHdkIHZwaGFkZHdxIHZwaHN1YmJ3IHZwaHN1YmRxIHZwaHN1YndkIHZwbWFjc2RkIHZwbWFjc2RxaCB2cG1hY3NkcWwgdnBtYWNzc2RkIHZwbWFjc3NkcWggdnBtYWNzc2RxbCB2cG1hY3Nzd2QgdnBtYWNzc3d3IHZwbWFjc3dkIHZwbWFjc3d3IHZwbWFkY3Nzd2QgdnBtYWRjc3dkIHZwcGVybSB2cHJvdGIgdnByb3RkIHZwcm90cSB2cHJvdHcgdnBzaGFiIHZwc2hhZCB2cHNoYXEgdnBzaGF3IHZwc2hsYiB2cHNobGQgdnBzaGxxIHZwc2hsdyB2YnJvYWRjYXN0aTEyOCB2cGJsZW5kZCB2cGJyb2FkY2FzdGIgdnBicm9hZGNhc3R3IHZwYnJvYWRjYXN0ZCB2cGJyb2FkY2FzdHEgdnBlcm1kIHZwZXJtcGQgdnBlcm1wcyB2cGVybXEgdnBlcm0yaTEyOCB2ZXh0cmFjdGkxMjggdmluc2VydGkxMjggdnBtYXNrbW92ZCB2cG1hc2ttb3ZxIHZwc2xsdmQgdnBzbGx2cSB2cHNyYXZkIHZwc3JsdmQgdnBzcmx2cSB2Z2F0aGVyZHBkIHZnYXRoZXJxcGQgdmdhdGhlcmRwcyB2Z2F0aGVycXBzIHZwZ2F0aGVyZGQgdnBnYXRoZXJxZCB2cGdhdGhlcmRxIHZwZ2F0aGVycXEgeGFib3J0IHhiZWdpbiB4ZW5kIHh0ZXN0IGFuZG4gYmV4dHIgYmxjaSBibGNpYyBibHNpIGJsc2ljIGJsY2ZpbGwgYmxzZmlsbCBibGNtc2sgYmxzbXNrIGJsc3IgYmxjcyBiemhpIG11bHggcGRlcCBwZXh0IHJvcnggc2FyeCBzaGx4IHNocnggdHpjbnQgdHptc2sgdDFtc2tjIHZhbGlnbmQgdmFsaWducSB2YmxlbmRtcGQgdmJsZW5kbXBzIHZicm9hZGNhc3RmMzJ4NCB2YnJvYWRjYXN0ZjY0eDQgdmJyb2FkY2FzdGkzMng0IHZicm9hZGNhc3RpNjR4NCB2Y29tcHJlc3NwZCB2Y29tcHJlc3NwcyB2Y3Z0cGQydWRxIHZjdnRwczJ1ZHEgdmN2dHNkMnVzaSB2Y3Z0c3MydXNpIHZjdnR0cGQydWRxIHZjdnR0cHMydWRxIHZjdnR0c2QydXNpIHZjdnR0c3MydXNpIHZjdnR1ZHEycGQgdmN2dHVkcTJwcyB2Y3Z0dXNpMnNkIHZjdnR1c2kyc3MgdmV4cGFuZHBkIHZleHBhbmRwcyB2ZXh0cmFjdGYzMng0IHZleHRyYWN0ZjY0eDQgdmV4dHJhY3RpMzJ4NCB2ZXh0cmFjdGk2NHg0IHZmaXh1cGltbXBkIHZmaXh1cGltbXBzIHZmaXh1cGltbXNkIHZmaXh1cGltbXNzIHZnZXRleHBwZCB2Z2V0ZXhwcHMgdmdldGV4cHNkIHZnZXRleHBzcyB2Z2V0bWFudHBkIHZnZXRtYW50cHMgdmdldG1hbnRzZCB2Z2V0bWFudHNzIHZpbnNlcnRmMzJ4NCB2aW5zZXJ0ZjY0eDQgdmluc2VydGkzMng0IHZpbnNlcnRpNjR4NCB2bW92ZHFhMzIgdm1vdmRxYTY0IHZtb3ZkcXUzMiB2bW92ZHF1NjQgdnBhYnNxIHZwYW5kZCB2cGFuZG5kIHZwYW5kbnEgdnBhbmRxIHZwYmxlbmRtZCB2cGJsZW5kbXEgdnBjbXBsdGQgdnBjbXBsZWQgdnBjbXBuZXFkIHZwY21wbmx0ZCB2cGNtcG5sZWQgdnBjbXBkIHZwY21wbHRxIHZwY21wbGVxIHZwY21wbmVxcSB2cGNtcG5sdHEgdnBjbXBubGVxIHZwY21wcSB2cGNtcGVxdWQgdnBjbXBsdHVkIHZwY21wbGV1ZCB2cGNtcG5lcXVkIHZwY21wbmx0dWQgdnBjbXBubGV1ZCB2cGNtcHVkIHZwY21wZXF1cSB2cGNtcGx0dXEgdnBjbXBsZXVxIHZwY21wbmVxdXEgdnBjbXBubHR1cSB2cGNtcG5sZXVxIHZwY21wdXEgdnBjb21wcmVzc2QgdnBjb21wcmVzc3EgdnBlcm1pMmQgdnBlcm1pMnBkIHZwZXJtaTJwcyB2cGVybWkycSB2cGVybXQyZCB2cGVybXQycGQgdnBlcm10MnBzIHZwZXJtdDJxIHZwZXhwYW5kZCB2cGV4cGFuZHEgdnBtYXhzcSB2cG1heHVxIHZwbWluc3EgdnBtaW51cSB2cG1vdmRiIHZwbW92ZHcgdnBtb3ZxYiB2cG1vdnFkIHZwbW92cXcgdnBtb3ZzZGIgdnBtb3ZzZHcgdnBtb3ZzcWIgdnBtb3ZzcWQgdnBtb3ZzcXcgdnBtb3Z1c2RiIHZwbW92dXNkdyB2cG1vdnVzcWIgdnBtb3Z1c3FkIHZwbW92dXNxdyB2cG9yZCB2cG9ycSB2cHJvbGQgdnByb2xxIHZwcm9sdmQgdnByb2x2cSB2cHJvcmQgdnByb3JxIHZwcm9ydmQgdnByb3J2cSB2cHNjYXR0ZXJkZCB2cHNjYXR0ZXJkcSB2cHNjYXR0ZXJxZCB2cHNjYXR0ZXJxcSB2cHNyYXEgdnBzcmF2cSB2cHRlcm5sb2dkIHZwdGVybmxvZ3EgdnB0ZXN0bWQgdnB0ZXN0bXEgdnB0ZXN0bm1kIHZwdGVzdG5tcSB2cHhvcmQgdnB4b3JxIHZyY3AxNHBkIHZyY3AxNHBzIHZyY3AxNHNkIHZyY3AxNHNzIHZybmRzY2FsZXBkIHZybmRzY2FsZXBzIHZybmRzY2FsZXNkIHZybmRzY2FsZXNzIHZyc3FydDE0cGQgdnJzcXJ0MTRwcyB2cnNxcnQxNHNkIHZyc3FydDE0c3MgdnNjYWxlZnBkIHZzY2FsZWZwcyB2c2NhbGVmc2QgdnNjYWxlZnNzIHZzY2F0dGVyZHBkIHZzY2F0dGVyZHBzIHZzY2F0dGVycXBkIHZzY2F0dGVycXBzIHZzaHVmZjMyeDQgdnNodWZmNjR4MiB2c2h1ZmkzMng0IHZzaHVmaTY0eDIga2FuZG53IGthbmR3IGttb3Z3IGtub3R3IGtvcnRlc3R3IGtvcncga3NoaWZ0bHcga3NoaWZ0cncga3VucGNrYncga3hub3J3IGt4b3J3IHZwYnJvYWRjYXN0bWIycSB2cGJyb2FkY2FzdG13MmQgdnBjb25mbGljdGQgdnBjb25mbGljdHEgdnBsemNudGQgdnBsemNudHEgdmV4cDJwZCB2ZXhwMnBzIHZyY3AyOHBkIHZyY3AyOHBzIHZyY3AyOHNkIHZyY3AyOHNzIHZyc3FydDI4cGQgdnJzcXJ0MjhwcyB2cnNxcnQyOHNkIHZyc3FydDI4c3MgdmdhdGhlcnBmMGRwZCB2Z2F0aGVycGYwZHBzIHZnYXRoZXJwZjBxcGQgdmdhdGhlcnBmMHFwcyB2Z2F0aGVycGYxZHBkIHZnYXRoZXJwZjFkcHMgdmdhdGhlcnBmMXFwZCB2Z2F0aGVycGYxcXBzIHZzY2F0dGVycGYwZHBkIHZzY2F0dGVycGYwZHBzIHZzY2F0dGVycGYwcXBkIHZzY2F0dGVycGYwcXBzIHZzY2F0dGVycGYxZHBkIHZzY2F0dGVycGYxZHBzIHZzY2F0dGVycGYxcXBkIHZzY2F0dGVycGYxcXBzIHByZWZldGNod3QxIGJuZG1rIGJuZGNsIGJuZGN1IGJuZGNuIGJuZG1vdiBibmRsZHggYm5kc3R4IHNoYTFybmRzNCBzaGExbmV4dGUgc2hhMW1zZzEgc2hhMW1zZzIgc2hhMjU2cm5kczIgc2hhMjU2bXNnMSBzaGEyNTZtc2cyIGhpbnRfbm9wMCBoaW50X25vcDEgaGludF9ub3AyIGhpbnRfbm9wMyBoaW50X25vcDQgaGludF9ub3A1IGhpbnRfbm9wNiBoaW50X25vcDcgaGludF9ub3A4IGhpbnRfbm9wOSBoaW50X25vcDEwIGhpbnRfbm9wMTEgaGludF9ub3AxMiBoaW50X25vcDEzIGhpbnRfbm9wMTQgaGludF9ub3AxNSBoaW50X25vcDE2IGhpbnRfbm9wMTcgaGludF9ub3AxOCBoaW50X25vcDE5IGhpbnRfbm9wMjAgaGludF9ub3AyMSBoaW50X25vcDIyIGhpbnRfbm9wMjMgaGludF9ub3AyNCBoaW50X25vcDI1IGhpbnRfbm9wMjYgaGludF9ub3AyNyBoaW50X25vcDI4IGhpbnRfbm9wMjkgaGludF9ub3AzMCBoaW50X25vcDMxIGhpbnRfbm9wMzIgaGludF9ub3AzMyBoaW50X25vcDM0IGhpbnRfbm9wMzUgaGludF9ub3AzNiBoaW50X25vcDM3IGhpbnRfbm9wMzggaGludF9ub3AzOSBoaW50X25vcDQwIGhpbnRfbm9wNDEgaGludF9ub3A0MiBoaW50X25vcDQzIGhpbnRfbm9wNDQgaGludF9ub3A0NSBoaW50X25vcDQ2IGhpbnRfbm9wNDcgaGludF9ub3A0OCBoaW50X25vcDQ5IGhpbnRfbm9wNTAgaGludF9ub3A1MSBoaW50X25vcDUyIGhpbnRfbm9wNTMgaGludF9ub3A1NCBoaW50X25vcDU1IGhpbnRfbm9wNTYgaGludF9ub3A1NyBoaW50X25vcDU4IGhpbnRfbm9wNTkgaGludF9ub3A2MCBoaW50X25vcDYxIGhpbnRfbm9wNjIgaGludF9ub3A2MycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gcG9pbnRlclxuICAgICAgICAnaXAgZWlwIHJpcCAnICtcbiAgICAgICAgLy8gOC1iaXQgcmVnaXN0ZXJzXG4gICAgICAgICdhbCBhaCBibCBiaCBjbCBjaCBkbCBkaCBzaWwgZGlsIGJwbCBzcGwgcjhiIHI5YiByMTBiIHIxMWIgcjEyYiByMTNiIHIxNGIgcjE1YiAnICtcbiAgICAgICAgLy8gMTYtYml0IHJlZ2lzdGVyc1xuICAgICAgICAnYXggYnggY3ggZHggc2kgZGkgYnAgc3Agcjh3IHI5dyByMTB3IHIxMXcgcjEydyByMTN3IHIxNHcgcjE1dyAnICtcbiAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyc1xuICAgICAgICAnZWF4IGVieCBlY3ggZWR4IGVzaSBlZGkgZWJwIGVzcCBlaXAgcjhkIHI5ZCByMTBkIHIxMWQgcjEyZCByMTNkIHIxNGQgcjE1ZCAnICtcbiAgICAgICAgLy8gNjQtYml0IHJlZ2lzdGVyc1xuICAgICAgICAncmF4IHJieCByY3ggcmR4IHJzaSByZGkgcmJwIHJzcCByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnICtcbiAgICAgICAgLy8gU2VnbWVudCByZWdpc3RlcnNcbiAgICAgICAgJ2NzIGRzIGVzIGZzIGdzIHNzICcgK1xuICAgICAgICAvLyBGbG9hdGluZyBwb2ludCBzdGFjayByZWdpc3RlcnNcbiAgICAgICAgJ3N0IHN0MCBzdDEgc3QyIHN0MyBzdDQgc3Q1IHN0NiBzdDcgJyArXG4gICAgICAgIC8vIE1NWCBSZWdpc3RlcnNcbiAgICAgICAgJ21tMCBtbTEgbW0yIG1tMyBtbTQgbW01IG1tNiBtbTcgJyArXG4gICAgICAgIC8vIFNTRSByZWdpc3RlcnNcbiAgICAgICAgJ3htbTAgIHhtbTEgIHhtbTIgIHhtbTMgIHhtbTQgIHhtbTUgIHhtbTYgIHhtbTcgIHhtbTggIHhtbTkgeG1tMTAgIHhtbTExIHhtbTEyIHhtbTEzIHhtbTE0IHhtbTE1ICcgK1xuICAgICAgICAneG1tMTYgeG1tMTcgeG1tMTggeG1tMTkgeG1tMjAgeG1tMjEgeG1tMjIgeG1tMjMgeG1tMjQgeG1tMjUgeG1tMjYgeG1tMjcgeG1tMjggeG1tMjkgeG1tMzAgeG1tMzEgJyArXG4gICAgICAgIC8vIEFWWCByZWdpc3RlcnNcbiAgICAgICAgJ3ltbTAgIHltbTEgIHltbTIgIHltbTMgIHltbTQgIHltbTUgIHltbTYgIHltbTcgIHltbTggIHltbTkgeW1tMTAgIHltbTExIHltbTEyIHltbTEzIHltbTE0IHltbTE1ICcgK1xuICAgICAgICAneW1tMTYgeW1tMTcgeW1tMTggeW1tMTkgeW1tMjAgeW1tMjEgeW1tMjIgeW1tMjMgeW1tMjQgeW1tMjUgeW1tMjYgeW1tMjcgeW1tMjggeW1tMjkgeW1tMzAgeW1tMzEgJyArXG4gICAgICAgIC8vIEFWWC01MTJGIHJlZ2lzdGVyc1xuICAgICAgICAnem1tMCAgem1tMSAgem1tMiAgem1tMyAgem1tNCAgem1tNSAgem1tNiAgem1tNyAgem1tOCAgem1tOSB6bW0xMCAgem1tMTEgem1tMTIgem1tMTMgem1tMTQgem1tMTUgJyArXG4gICAgICAgICd6bW0xNiB6bW0xNyB6bW0xOCB6bW0xOSB6bW0yMCB6bW0yMSB6bW0yMiB6bW0yMyB6bW0yNCB6bW0yNSB6bW0yNiB6bW0yNyB6bW0yOCB6bW0yOSB6bW0zMCB6bW0zMSAnICtcbiAgICAgICAgLy8gQVZYLTUxMkYgbWFzayByZWdpc3RlcnNcbiAgICAgICAgJ2swIGsxIGsyIGszIGs0IGs1IGs2IGs3ICcgK1xuICAgICAgICAvLyBCb3VuZCAoTVBYKSByZWdpc3RlclxuICAgICAgICAnYm5kMCBibmQxIGJuZDIgYm5kMyAnICtcbiAgICAgICAgLy8gU3BlY2lhbCByZWdpc3RlclxuICAgICAgICAnY3IwIGNyMSBjcjIgY3IzIGNyNCBjcjggZHIwIGRyMSBkcjIgZHIzIGRyOCB0cjMgdHI0IHRyNSB0cjYgdHI3ICcgK1xuICAgICAgICAvLyBOQVNNIGFsdHJlZyBwYWNrYWdlXG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByMGIgcjFiIHIyYiByM2IgcjRiIHI1YiByNmIgcjdiICcgK1xuICAgICAgICAncjB3IHIxdyByMncgcjN3IHI0dyByNXcgcjZ3IHI3dyByMGQgcjFkIHIyZCByM2QgcjRkIHI1ZCByNmQgcjdkICcgK1xuICAgICAgICAncjBoIHIxaCByMmggcjNoICcgK1xuICAgICAgICAncjBsIHIxbCByMmwgcjNsIHI0bCByNWwgcjZsIHI3bCByOGwgcjlsIHIxMGwgcjExbCByMTJsIHIxM2wgcjE0bCByMTVsICcgK1xuXG4gICAgICAgICdkYiBkdyBkZCBkcSBkdCBkZHEgZG8gZHkgZHogJyArXG4gICAgICAgICdyZXNiIHJlc3cgcmVzZCByZXNxIHJlc3QgcmVzZHEgcmVzbyByZXN5IHJlc3ogJyArXG4gICAgICAgICdpbmNiaW4gZXF1IHRpbWVzICcgK1xuICAgICAgICAnYnl0ZSB3b3JkIGR3b3JkIHF3b3JkIG5vc3BsaXQgcmVsIGFicyBzZWcgd3J0IHN0cmljdCBuZWFyIGZhciBhMzIgcHRyJyxcblxuICAgICAgbWV0YTpcbiAgICAgICAgJyVkZWZpbmUgJXhkZWZpbmUgJSsgJXVuZGVmICVkZWZzdHIgJWRlZnRvayAlYXNzaWduICVzdHJjYXQgJXN0cmxlbiAlc3Vic3RyICVyb3RhdGUgJWVsaWYgJWVsc2UgJWVuZGlmICcgK1xuICAgICAgICAnJWlmICVpZm1hY3JvICVpZmN0eCAlaWZpZG4gJWlmaWRuaSAlaWZpZCAlaWZudW0gJWlmc3RyICVpZnRva2VuICVpZmVtcHR5ICVpZmVudiAlZXJyb3IgJXdhcm5pbmcgJWZhdGFsICVyZXAgJyArXG4gICAgICAgICclZW5kcmVwICVpbmNsdWRlICVwdXNoICVwb3AgJXJlcGwgJXBhdGhzZWFyY2ggJWRlcGVuZCAldXNlICVhcmcgJXN0YWNrc2l6ZSAlbG9jYWwgJWxpbmUgJWNvbW1lbnQgJWVuZGNvbW1lbnQgJyArXG4gICAgICAgICcubm9saXN0ICcgK1xuICAgICAgICAnX19GSUxFX18gX19MSU5FX18gX19TRUNUX18gIF9fQklUU19fIF9fT1VUUFVUX0ZPUk1BVF9fIF9fREFURV9fIF9fVElNRV9fIF9fREFURV9OVU1fXyBfX1RJTUVfTlVNX18gJyArXG4gICAgICAgICdfX1VUQ19EQVRFX18gX19VVENfVElNRV9fIF9fVVRDX0RBVEVfTlVNX18gX19VVENfVElNRV9OVU1fXyAgX19QQVNTX18gc3RydWMgZW5kc3RydWMgaXN0cnVjIGF0IGllbmQgJyArXG4gICAgICAgICdhbGlnbiBhbGlnbmIgc2VjdGFsaWduIGRheiBub2RheiB1cCBkb3duIHplcm8gZGVmYXVsdCBvcHRpb24gYXNzdW1lIHB1YmxpYyAnICtcblxuICAgICAgICAnYml0cyB1c2UxNiB1c2UzMiB1c2U2NCBkZWZhdWx0IHNlY3Rpb24gc2VnbWVudCBhYnNvbHV0ZSBleHRlcm4gZ2xvYmFsIGNvbW1vbiBjcHUgZmxvYXQgJyArXG4gICAgICAgICdfX3V0ZjE2X18gX191dGYxNmxlX18gX191dGYxNmJlX18gX191dGYzMl9fIF9fdXRmMzJsZV9fIF9fdXRmMzJiZV9fICcgK1xuICAgICAgICAnX19mbG9hdDhfXyBfX2Zsb2F0MTZfXyBfX2Zsb2F0MzJfXyBfX2Zsb2F0NjRfXyBfX2Zsb2F0ODBtX18gX19mbG9hdDgwZV9fIF9fZmxvYXQxMjhsX18gX19mbG9hdDEyOGhfXyAnICtcbiAgICAgICAgJ19fSW5maW5pdHlfXyBfX1FOYU5fXyBfX1NOYU5fXyBJbmYgTmFOIFFOYU4gU05hTiBmbG9hdDggZmxvYXQxNiBmbG9hdDMyIGZsb2F0NjQgZmxvYXQ4MG0gZmxvYXQ4MGUgJyArXG4gICAgICAgICdmbG9hdDEyOGwgZmxvYXQxMjhoIF9fRkxPQVRfREFaX18gX19GTE9BVF9ST1VORF9fIF9fRkxPQVRfXydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gRmxvYXQgbnVtYmVyIGFuZCB4ODcgQkNEXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OihbMC05XVswLTlfXSopP1xcXFwuWzAtOV9dKig/OltlRV1bKy1dP1swLTlfXSspP3wnICtcbiAgICAgICAgICAgICAgICAgICAnKDBbWHhdKT9bMC05XVswLTlfXSpcXFxcLj9bMC05X10qKD86W3BQXSg/OlsrLV0/WzAtOV9dKyk/KT8pXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIC8vIEhleCBudW1iZXIgaW4gJFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcJFswLTldWzAtOUEtRmEtZl0qJywgcmVsZXZhbmNlOiAwIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gSCxELFQsUSxPLEIsWSBzdWZmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzpbMC05QS1GYS1mXVswLTlBLUZhLWZfXSpbSGhdfFswLTldWzAtOV9dKltEZFR0XT98WzAtN11bMC03X10qW1FxT29dfFswLTFdWzAtMV9dKltCYll5XSlcXFxcYicgfSxcblxuICAgICAgICAgIC8vIE51bWJlciBpbiBYLEQsVCxRLE8sQixZIHByZWZpeFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYig/OjBbWHhdWzAtOUEtRmEtZl9dK3wwW0RkVHRdWzAtOV9dK3wwW1FxT29dWzAtN19dK3wwW0JiWXldWzAtMV9dKylcXFxcYid9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBEb3VibGUgcXVvdGUgc3RyaW5nXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIFNpbmdsZS1xdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ1xcJycsIGVuZDogJ1teXFxcXFxcXFxdXFwnJyB9LFxuICAgICAgICAgIC8vIEJhY2txdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ2AnLCBlbmQ6ICdbXlxcXFxcXFxcXWAnIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEdsb2JhbCBsYWJlbCBhbmQgbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKltBLVphLXouXz9dW0EtWmEtejAtOV8kI0B+Lj9dKig6fFxcXFxzK2xhYmVsKScgfSxcbiAgICAgICAgICAvLyBNYWNyby1sb2NhbCBsYWJlbFxuICAgICAgICAgIHsgYmVnaW46ICdeXFxcXHMqJSVbQS1aYS16MC05XyQjQH4uP10qOicgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyVbMC05XSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBNYWNybyBwYXJhbWV0ZXJcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICBiZWdpbjogJyUhXFxTKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxccypcXC5bXFx3Xy1dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQlVJTFRJTl9NT0RVTEVTID1cbiAgICAnT2JqZWN0TG9hZGVyIEFuaW1hdGUgTW92aWVDcmVkaXRzIFNsaWRlcyBGaWx0ZXJzIFNoYWRpbmcgTWF0ZXJpYWxzIExlbnNGbGFyZSBNYXBwaW5nIFZMQ0F1ZGlvVmlkZW8gJyArXG4gICAgJ1N0ZXJlb0RlY29kZXIgUG9pbnRDbG91ZCBOZXR3b3JrQWNjZXNzIFJlbW90ZUNvbnRyb2wgUmVnRXhwIENocm9tYUtleSBTbm93ZmFsbCBOb2RlSlMgU3BlZWNoIENoYXJ0cyc7XG5cbiAgdmFyIFhMX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaWYgdGhlbiBlbHNlIGRvIHdoaWxlIHVudGlsIGZvciBsb29wIGltcG9ydCB3aXRoIGlzIGFzIHdoZXJlIHdoZW4gYnkgZGF0YSBjb25zdGFudCAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgdGV4dCBuYW1lIGJvb2xlYW4gc3ltYm9sIGluZml4IHByZWZpeCBwb3N0Zml4IGJsb2NrIHRyZWUnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2luIG1vZCByZW0gYW5kIG9yIHhvciBub3QgYWJzIHNpZ24gZmxvb3IgY2VpbCBzcXJ0IHNpbiBjb3MgdGFuIGFzaW4gJyArXG4gICAgICAnYWNvcyBhdGFuIGV4cCBleHBtMSBsb2cgbG9nMiBsb2cxMCBsb2cxcCBwaSBhdCB0ZXh0X2xlbmd0aCB0ZXh0X3JhbmdlICcgK1xuICAgICAgJ3RleHRfZmluZCB0ZXh0X3JlcGxhY2UgY29udGFpbnMgcGFnZSBzbGlkZSBiYXNpY19zbGlkZSB0aXRsZV9zbGlkZSAnICtcbiAgICAgICd0aXRsZSBzdWJ0aXRsZSBmYWRlX2luIGZhZGVfb3V0IGZhZGVfYXQgY2xlYXJfY29sb3IgY29sb3IgbGluZV9jb2xvciAnICtcbiAgICAgICdsaW5lX3dpZHRoIHRleHR1cmVfd3JhcCB0ZXh0dXJlX3RyYW5zZm9ybSB0ZXh0dXJlIHNjYWxlXz94IHNjYWxlXz95ICcgK1xuICAgICAgJ3NjYWxlXz96PyB0cmFuc2xhdGVfP3ggdHJhbnNsYXRlXz95IHRyYW5zbGF0ZV8/ej8gcm90YXRlXz94IHJvdGF0ZV8/eSAnICtcbiAgICAgICdyb3RhdGVfP3o/IHJlY3RhbmdsZSBjaXJjbGUgZWxsaXBzZSBzcGhlcmUgcGF0aCBsaW5lX3RvIG1vdmVfdG8gJyArXG4gICAgICAncXVhZF90byBjdXJ2ZV90byB0aGVtZSBiYWNrZ3JvdW5kIGNvbnRlbnRzIGxvY2FsbHkgdGltZSBtb3VzZV8/eCAnICtcbiAgICAgICdtb3VzZV8/eSBtb3VzZV9idXR0b25zICcgK1xuICAgICAgQlVJTFRJTl9NT0RVTEVTXG4gIH07XG5cbiAgdmFyIERPVUJMRV9RVU9URV9URVhUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJywgaWxsZWdhbDogJ1xcXFxuJ1xuICB9O1xuICB2YXIgU0lOR0xFX1FVT1RFX1RFWFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIExPTkdfVEVYVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnPDwnLCBlbmQ6ICc+PidcbiAgfTtcbiAgdmFyIEJBU0VEX05VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnWzAtOV0rI1swLTlBLVpfXSsoXFxcXC5bMC05LUEtWl9dKyk/Iz8oW0VlXVsrLV0/WzAtOV0rKT8nXG4gIH07XG4gIHZhciBJTVBPUlQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2ltcG9ydCcsIGVuZDogJyQnLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW0RPVUJMRV9RVU9URV9URVhUXVxuICB9O1xuICB2YXIgRlVOQ1RJT05fREVGSU5JVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW46IC9bYS16XVteXFxuXSotPi8sIHJldHVybkJlZ2luOiB0cnVlLCBlbmQ6IC8tPi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtzdGFydHM6IHtcbiAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEU1xuICAgICAgfX0pXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsndGFvJ10sXG4gICAgbGV4ZW1lczogL1thLXpBLVpdW2EtekEtWjAtOV8/XSovLFxuICAgIGtleXdvcmRzOiBYTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIERPVUJMRV9RVU9URV9URVhULFxuICAgIFNJTkdMRV9RVU9URV9URVhULFxuICAgIExPTkdfVEVYVCxcbiAgICBGVU5DVElPTl9ERUZJTklUSU9OLFxuICAgIElNUE9SVCxcbiAgICBCQVNFRF9OVU1CRVIsXG4gICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIHNlZSBodHRwczovL3d3dy53My5vcmcvVFIveHF1ZXJ5LyNpZC10ZXJtaW5hbC1kZWxpbWl0YXRpb25cbiAgdmFyIEtFWVdPUkRTID0gJ21vZHVsZSBzY2hlbWEgbmFtZXNwYWNlIGJvdW5kYXJ5LXNwYWNlIHByZXNlcnZlIG5vLXByZXNlcnZlIHN0cmlwIGRlZmF1bHQgY29sbGF0aW9uIGJhc2UtdXJpIG9yZGVyaW5nIGNvbnRleHQgZGVjaW1hbC1mb3JtYXQgZGVjaW1hbC1zZXBhcmF0b3IgY29weS1uYW1lc3BhY2VzIGVtcHR5LXNlcXVlbmNlIGV4Y2VwdCBleHBvbmVudC1zZXBhcmF0b3IgZXh0ZXJuYWwgZ3JvdXBpbmctc2VwYXJhdG9yIGluaGVyaXQgbm8taW5oZXJpdCBsYXggbWludXMtc2lnbiBwZXItbWlsbGUgcGVyY2VudCBzY2hlbWEtYXR0cmlidXRlIHNjaGVtYS1lbGVtZW50IHN0cmljdCB1bm9yZGVyZWQgemVyby1kaWdpdCAnICtcbiAgJ2RlY2xhcmUgaW1wb3J0IG9wdGlvbiBmdW5jdGlvbiB2YWxpZGF0ZSB2YXJpYWJsZSAnICtcbiAgJ2ZvciBhdCBpbiBsZXQgd2hlcmUgb3JkZXIgZ3JvdXAgYnkgcmV0dXJuIGlmIHRoZW4gZWxzZSAnICtcbiAgJ3R1bWJsaW5nIHNsaWRpbmcgd2luZG93IHN0YXJ0IHdoZW4gb25seSBlbmQgcHJldmlvdXMgbmV4dCBzdGFibGUgJyArXG4gICdhc2NlbmRpbmcgZGVzY2VuZGluZyBhbGxvd2luZyBlbXB0eSBncmVhdGVzdCBsZWFzdCBzb21lIGV2ZXJ5IHNhdGlzZmllcyBzd2l0Y2ggY2FzZSB0eXBlc3dpdGNoIHRyeSBjYXRjaCAnICtcbiAgJ2FuZCBvciB0byB1bmlvbiBpbnRlcnNlY3QgaW5zdGFuY2Ugb2YgdHJlYXQgYXMgY2FzdGFibGUgY2FzdCBtYXAgYXJyYXkgJyArXG4gICdkZWxldGUgaW5zZXJ0IGludG8gcmVwbGFjZSB2YWx1ZSByZW5hbWUgY29weSBtb2RpZnkgdXBkYXRlJztcblxuICAvLyBOb2RlIFR5cGVzIChzb3J0ZWQgYnkgaW5oZXJpdGFuY2UpXG4gIC8vIGF0b21pYyB0eXBlcyAoc29ydGVkIGJ5IGluaGVyaXRhbmNlKVxuICB2YXIgVFlQRSA9ICdpdGVtIGRvY3VtZW50LW5vZGUgbm9kZSBhdHRyaWJ1dGUgZG9jdW1lbnQgZWxlbWVudCBjb21tZW50IG5hbWVzcGFjZSBuYW1lc3BhY2Utbm9kZSBwcm9jZXNzaW5nLWluc3RydWN0aW9uIHRleHQgY29uc3RydWN0aW9uICcgK1xuICAneHM6YW55QXRvbWljVHlwZSB4czp1bnR5cGVkQXRvbWljIHhzOmR1cmF0aW9uIHhzOnRpbWUgeHM6ZGVjaW1hbCB4czpmbG9hdCB4czpkb3VibGUgeHM6Z1llYXJNb250aCB4czpnWWVhciB4czpnTW9udGhEYXkgeHM6Z01vbnRoIHhzOmdEYXkgeHM6Ym9vbGVhbiB4czpiYXNlNjRCaW5hcnkgeHM6aGV4QmluYXJ5IHhzOmFueVVSSSB4czpRTmFtZSB4czpOT1RBVElPTiB4czpkYXRlVGltZSB4czpkYXRlVGltZVN0YW1wIHhzOmRhdGUgeHM6c3RyaW5nIHhzOm5vcm1hbGl6ZWRTdHJpbmcgeHM6dG9rZW4geHM6bGFuZ3VhZ2UgeHM6Tk1UT0tFTiB4czpOYW1lIHhzOk5DTmFtZSB4czpJRCB4czpJRFJFRiB4czpFTlRJVFkgeHM6aW50ZWdlciB4czpub25Qb3NpdGl2ZUludGVnZXIgeHM6bmVnYXRpdmVJbnRlZ2VyIHhzOmxvbmcgeHM6aW50IHhzOnNob3J0IHhzOmJ5dGUgeHM6bm9uTmVnYXRpdmVJbnRlZ2VyIHhzOnVuaXNpZ25lZExvbmcgeHM6dW5zaWduZWRJbnQgeHM6dW5zaWduZWRTaG9ydCB4czp1bnNpZ25lZEJ5dGUgeHM6cG9zaXRpdmVJbnRlZ2VyIHhzOnllYXJNb250aER1cmF0aW9uIHhzOmRheVRpbWVEdXJhdGlvbic7XG5cbiAgdmFyIExJVEVSQUwgPSAnZXEgbmUgbHQgbGUgZ3QgZ2UgaXMgJyArXG4gICAgJ3NlbGY6OiBjaGlsZDo6IGRlc2NlbmRhbnQ6OiBkZXNjZW5kYW50LW9yLXNlbGY6OiBhdHRyaWJ1dGU6OiBmb2xsb3dpbmc6OiBmb2xsb3dpbmctc2libGluZzo6IHBhcmVudDo6IGFuY2VzdG9yOjogYW5jZXN0b3Itb3Itc2VsZjo6IHByZWNlZGluZzo6IHByZWNlZGluZy1zaWJsaW5nOjogJyArXG4gICAgJ05hTic7XG5cbiAgLy8gZnVuY3Rpb25zIChUT0RPOiBmaW5kIHJlZ2V4IGZvciBvcDogd2l0aG91dCBicmVha2luZyBidWlsZClcbiAgdmFyIEJVSUxUX0lOID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAvXFxiYXJyYXlcXDovLFxuICAgICAgZW5kOiAvKD86YXBwZW5kfGZpbHRlcnxmbGF0dGVufGZvbGRcXC0oPzpsZWZ0fHJpZ2h0KXxmb3ItZWFjaCg/OlxcLXBhaXIpP3xnZXR8aGVhZHxpbnNlcnRcXC1iZWZvcmV8am9pbnxwdXR8cmVtb3ZlfHJldmVyc2V8c2l6ZXxzb3J0fHN1YmFycmF5fHRhaWwpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWFwXFw6LyxcbiAgICAgIGVuZDogLyg/OmNvbnRhaW5zfGVudHJ5fGZpbmR8Zm9yXFwtZWFjaHxnZXR8a2V5c3xtZXJnZXxwdXR8cmVtb3ZlfHNpemUpXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxibWF0aFxcOi8sXG4gICAgICBlbmQ6IC8oPzphKD86Y29zfHNpbnx0YW5bMl0/KXxjb3N8ZXhwKD86MTApP3xsb2coPzoxMCk/fHBpfHBvd3xzaW58c3FydHx0YW4pXFxiL1xuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxib3BcXDovLFxuICAgICAgZW5kOiAvXFwoLyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmZuXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSxcbi8vIGRvIG5vdCBoaWdobGlnaHQgaW5idWlsdCBzdHJpbmdzIGFzIHZhcmlhYmxlIG9yIHhtbCBlbGVtZW50IG5hbWVzXG4gICAge1xuICAgICAgYmVnaW46IC9bXjxcXC9cXCRcXDonXCItXVxcYig/OmFic3xhY2N1bXVsYXRvclxcLSg/OmFmdGVyfGJlZm9yZSl8YWRqdXN0XFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKVxcLXRvXFwtdGltZXpvbmV8YW5hbHl6ZVxcLXN0cmluZ3xhcHBseXxhdmFpbGFibGVcXC0oPzplbnZpcm9ubWVudFxcLXZhcmlhYmxlc3xzeXN0ZW1cXC1wcm9wZXJ0aWVzKXxhdmd8YmFzZVxcLXVyaXxib29sZWFufGNlaWxpbmd8Y29kZXBvaW50cz9cXC0oPzplcXVhbHx0b1xcLXN0cmluZyl8Y29sbGF0aW9uXFwta2V5fGNvbGxlY3Rpb258Y29tcGFyZXxjb25jYXR8Y29udGFpbnMoPzpcXC10b2tlbik/fGNvcHlcXC1vZnxjb3VudHxjdXJyZW50KD86XFwtKT8oPzpkYXRlKD86VGltZSk/fHRpbWV8Z3JvdXAoPzppbmdcXC1rZXkpP3xvdXRwdXRcXC11cml8bWVyZ2VcXC0oPzpncm91cHxrZXkpKT9kYXRhfGRhdGVUaW1lfGRheXM/XFwtZnJvbVxcLSg/OmRhdGUoPzpUaW1lKT98ZHVyYXRpb24pfGRlZXBcXC1lcXVhbHxkZWZhdWx0XFwtKD86Y29sbGF0aW9ufGxhbmd1YWdlKXxkaXN0aW5jdFxcLXZhbHVlc3xkb2N1bWVudCg/OlxcLXVyaSk/fGRvYyg/OlxcLWF2YWlsYWJsZSk/fGVsZW1lbnRcXC0oPzphdmFpbGFibGV8d2l0aFxcLWlkKXxlbXB0eXxlbmNvZGVcXC1mb3JcXC11cml8ZW5kc1xcLXdpdGh8ZW52aXJvbm1lbnRcXC12YXJpYWJsZXxlcnJvcnxlc2NhcGVcXC1odG1sXFwtdXJpfGV4YWN0bHlcXC1vbmV8ZXhpc3RzfGZhbHNlfGZpbHRlcnxmbG9vcnxmb2xkXFwtKD86bGVmdHxyaWdodCl8Zm9yXFwtZWFjaCg/OlxcLXBhaXIpP3xmb3JtYXRcXC0oPzpkYXRlKD86VGltZSk/fHRpbWV8aW50ZWdlcnxudW1iZXIpfGZ1bmN0aW9uXFwtKD86YXJpdHl8YXZhaWxhYmxlfGxvb2t1cHxuYW1lKXxnZW5lcmF0ZVxcLWlkfGhhc1xcLWNoaWxkcmVufGhlYWR8aG91cnNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8aWQoPzpyZWYpP3xpbXBsaWNpdFxcLXRpbWV6b25lfGluXFwtc2NvcGVcXC1wcmVmaXhlc3xpbmRleFxcLW9mfGlubmVybW9zdHxpbnNlcnRcXC1iZWZvcmV8aXJpXFwtdG9cXC11cml8anNvblxcLSg/OmRvY3x0b1xcLXhtbCl8a2V5fGxhbmd8bGFzdHxsb2FkXFwteHF1ZXJ5XFwtbW9kdWxlfGxvY2FsXFwtbmFtZSg/OlxcLWZyb21cXC1RTmFtZSk/fCg/Omxvd2VyfHVwcGVyKVxcLWNhc2V8bWF0Y2hlc3xtYXh8bWludXRlc1xcLWZyb21cXC0oPzpkYXRlVGltZXxkdXJhdGlvbnx0aW1lKXxtaW58bW9udGhzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXxuYW1lKD86c3BhY2VcXC11cmlcXC0/KD86Zm9yXFwtcHJlZml4fGZyb21cXC1RTmFtZSk/KT98bmlsbGVkfG5vZGVcXC1uYW1lfG5vcm1hbGl6ZVxcLSg/OnNwYWNlfHVuaWNvZGUpfG5vdHxudW1iZXJ8b25lXFwtb3JcXC1tb3JlfG91dGVybW9zdHxwYXJzZVxcLSg/OmlldGZcXC1kYXRlfGpzb24pfHBhdGh8cG9zaXRpb258KD86cHJlZml4XFwtZnJvbVxcLSk/UU5hbWV8cmFuZG9tXFwtbnVtYmVyXFwtZ2VuZXJhdG9yfHJlZ2V4XFwtZ3JvdXB8cmVtb3ZlfHJlcGxhY2V8cmVzb2x2ZVxcLSg/OlFOYW1lfHVyaSl8cmV2ZXJzZXxyb290fHJvdW5kKD86XFwtaGFsZlxcLXRvXFwtZXZlbik/fHNlY29uZHNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8c25hcHNob3R8c29ydHxzdGFydHNcXC13aXRofHN0YXRpY1xcLWJhc2VcXC11cml8c3RyZWFtXFwtYXZhaWxhYmxlfHN0cmluZ1xcLT8oPzpqb2lufGxlbmd0aHx0b1xcLWNvZGVwb2ludHMpP3xzdWJzZXF1ZW5jZXxzdWJzdHJpbmdcXC0/KD86YWZ0ZXJ8YmVmb3JlKT98c3VtfHN5c3RlbVxcLXByb3BlcnR5fHRhaWx8dGltZXpvbmVcXC1mcm9tXFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lKXx0b2tlbml6ZXx0cmFjZXx0cmFucyg/OmZvcm18bGF0ZSl8dHJ1ZXx0eXBlXFwtYXZhaWxhYmxlfHVub3JkZXJlZHx1bnBhcnNlZFxcLSg/OmVudGl0eXx0ZXh0KT9cXC0/KD86cHVibGljXFwtaWR8dXJpfGF2YWlsYWJsZXxsaW5lcyk/fHVyaVxcLWNvbGxlY3Rpb258eG1sXFwtdG9cXC1qc29ufHllYXJzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXx6ZXJvXFwtb3JcXC1vbmUpXFxiLyxcbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYmxvY2FsXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGJ6aXBcXDovLFxuICAgICAgZW5kOiAvKD86emlwXFwtZmlsZXwoPzp4bWx8aHRtbHx0ZXh0fGJpbmFyeSlcXC1lbnRyeXwgKD86dXBkYXRlXFwtKT9lbnRyaWVzKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYig/OnV0aWx8ZGJ8ZnVuY3R4fGFwcHx4ZG1wfHhtbGRiKVxcOi8sXG4gICAgICBlbmQ6IC9cXCgvLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH1cbiAgXVxuICB9O1xuXG4gIHZhciBUSVRMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IC9cXGJ4cXVlcnkgdmVyc2lvbiBcIlsxM11cXC5bMDFdXCJcXHM/KD86ZW5jb2RpbmcgXCIuK1wiKT8vLFxuICAgIGVuZDogLzsvXG4gIH07XG5cbiAgdmFyIFZBUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9bXFwkXVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgIGJlZ2luOiAvXCJcIi8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLycvLFxuICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgYmVnaW46IC8nJy8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBBTk5PVEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvJVtcXHctOl0rL1xuICB9O1xuXG4gIHZhciBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIGJlZ2luOiAnXFxcXCg6JyxcbiAgICBlbmQ6ICc6XFxcXCknLFxuICAgIHJlbGV2YW5jZTogMTAsXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgYmVnaW46ICdAXFxcXHcrJ1xuICAgIH1dXG4gIH07XG5cbiAgLy8gc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi94cXVlcnkvI2lkLWNvbXB1dGVkQ29uc3RydWN0b3JzXG4gIC8vIG1vY2hhOiBjb21wdXRlZF9pbmJ1aWx0XG4gIC8vIHNlZSBodHRwczovL3d3dy5yZWdleHBhbC5jb20vP2ZhbT05OTc0OVxuICB2YXIgQ09NUFVURUQgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2VsZW1lbnQgYXR0cmlidXRlIGNvbW1lbnQgZG9jdW1lbnQgcHJvY2Vzc2luZy1pbnN0cnVjdGlvbicsXG4gICAgZW5kOiAneycsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZVxuICB9O1xuXG4gIC8vIG1vY2hhOiBkaXJlY3RfbWV0aG9kXG4gICAgdmFyIERJUkVDVCA9IHtcbiAgICAgIGJlZ2luOiAvPChbXFx3XFwuXzpcXC1dKykoKFxccyouKik9KCd8XCIpLiooJ3xcIikpPz4vLFxuICAgICAgZW5kOiAvKFxcL1tcXHdcXC5fOlxcLV0rPikvLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgIGJlZ2luOiAneycsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3hxdWVyeSdcbiAgICAgIH0sICdzZWxmJ11cbiAgICB9O1xuXG5cbiAgdmFyIENPTlRBSU5TID0gW1xuICAgIFZBUixcbiAgICBCVUlMVF9JTixcbiAgICBTVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIENPTU1FTlQsXG4gICAgQU5OT1RBVElPTixcbiAgICBUSVRMRSxcbiAgICBDT01QVVRFRCxcbiAgICBESVJFQ1RcbiAgXTtcblxuXG5cbiAgICB2YXIgTUVUSE9EID0ge1xuICAgICAgYmVnaW46ICd7JyxcbiAgICAgIGVuZDogJ30nLFxuICAgICAgY29udGFpbnM6IENPTlRBSU5TXG4gICAgfTtcblxuXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3hwYXRoJywgJ3hxJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAgbGV4ZW1lczogL1thLXpBLVpcXCRdW2EtekEtWjAtOV86XFwtXSovLFxuICAgIGlsbGVnYWw6IC8ocHJvYyl8KGFic3RyYWN0KXwoZXh0ZW5kcyl8KHVudGlsKXwoIykvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIHR5cGU6IFRZUEUsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgfSxcbiAgICBjb250YWluczogQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdiXCInLCBlbmQ6ICdcIidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlxcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSlcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7dmFyaWFudHM6IFtobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSwgaGxqcy5DX05VTUJFUl9NT0RFXX07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd6ZXAnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2FuZCBpbmNsdWRlX29uY2UgbGlzdCBhYnN0cmFjdCBnbG9iYWwgcHJpdmF0ZSBlY2hvIGludGVyZmFjZSBhcyBzdGF0aWMgZW5kc3dpdGNoICcgK1xuICAgICAgJ2FycmF5IG51bGwgaWYgZW5kd2hpbGUgb3IgY29uc3QgZm9yIGVuZGZvcmVhY2ggc2VsZiB2YXIgbGV0IHdoaWxlIGlzc2V0IHB1YmxpYyAnICtcbiAgICAgICdwcm90ZWN0ZWQgZXhpdCBmb3JlYWNoIHRocm93IGVsc2VpZiBpbmNsdWRlIF9fRklMRV9fIGVtcHR5IHJlcXVpcmVfb25jZSBkbyB4b3IgJyArXG4gICAgICAncmV0dXJuIHBhcmVudCBjbG9uZSB1c2UgX19DTEFTU19fIF9fTElORV9fIGVsc2UgYnJlYWsgcHJpbnQgZXZhbCBuZXcgJyArXG4gICAgICAnY2F0Y2ggX19NRVRIT0RfXyBjYXNlIGV4Y2VwdGlvbiBkZWZhdWx0IGRpZSByZXF1aXJlIF9fRlVOQ1RJT05fXyAnICtcbiAgICAgICdlbmRkZWNsYXJlIGZpbmFsIHRyeSBzd2l0Y2ggY29udGludWUgZW5kZm9yIGVuZGlmIGRlY2xhcmUgdW5zZXQgdHJ1ZSBmYWxzZSAnICtcbiAgICAgICd0cmFpdCBnb3RvIGluc3RhbmNlb2YgaW5zdGVhZG9mIF9fRElSX18gX19OQU1FU1BBQ0VfXyAnICtcbiAgICAgICd5aWVsZCBmaW5hbGx5IGludCB1aW50IGxvbmcgdWxvbmcgY2hhciB1Y2hhciBkb3VibGUgZmxvYXQgYm9vbCBib29sZWFuIHN0cmluZycgK1xuICAgICAgJ2xpa2VseSB1bmxpa2VseScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdfX2hhbHRfY29tcGlsZXIuKz87JyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICBrZXl3b3JkczogJ19faGFsdF9jb21waWxlcicsXG4gICAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnPDw8W1xcJ1wiXT9cXFxcdytbXFwnXCJdPyQnLCBlbmQ6ICdeXFxcXHcrOycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gc3dhbGxvdyBjb21wb3NlZCBpZGVudGlmaWVycyB0byBhdm9pZCBwYXJzaW5nIHRoZW0gYXMga2V5d29yZHNcbiAgICAgICAgYmVnaW46IC8oOjp8LT4pK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9bO3tdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFwkfFxcXFxbfCUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9bOlxcKFxcJFwiXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJywgZW5kOiAnOycsXG4gICAgICAgIGlsbGVnYWw6IC9bXFwuJ10vLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3VzZScsIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc9PicgLy8gTm8gbWFya3VwLCBqdXN0IGEgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59OyIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpO1xuXG5mdW5jdGlvbiBkZWFsTGFiZWxDaGlsZHJlbihsaXN0Q2hpbGQpIHtcbiAgbGV0IHQgPSBbXTtcbiAgaWYgKGxpc3RDaGlsZFswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgIHQgPSBsaXN0Q2hpbGRbMF0uY2hpbGRyZW47XG4gIH1cbiAgdFswXS52YWx1ZSA9IHRbMF0udmFsdWUudHJpbSgpO1xuICBpZiAobGlzdENoaWxkW2xpc3RDaGlsZC5sZW5ndGggLSAxXS50eXBlID09PSAnYmxvY2txdW90ZScpIHtcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLnR5cGUgPSAnZGl2JztcbiAgICBsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLmRhdGEgPSB7XG4gICAgICBoTmFtZTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnaGlkZW5fYmxvY2tfcXVvdGUnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHQgPSB0LmNvbmNhdChsaXN0Q2hpbGQuc2xpY2UoMSkpO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gdmlzaXRMaXN0KGFzdCkge1xuICBsZXQgbmJNQyA9IDA7XG4gIHJldHVybiB2aXNpdChhc3QsICdsaXN0Jywgbm9kZSA9PiB7XG4gICAgbGV0IGlzTXVsdGlwbGVDaG9pc2UgPSB0cnVlO1xuICAgIGxldCBuYlEgPSAwO1xuICAgIGNvbnN0IHRhYiA9IFtdO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKS5mb3JFYWNoKG5vZGVDID0+IHtcbiAgICAgIGlmIChub2RlQy5jaGlsZHJlbiAmJiBub2RlQy5jaGlsZHJlblswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUpIHtcbiAgICAgICAgICBpZiAoJ34hPScuaW5kZXhPZihub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZVswXSkgPCAwKSB7XG4gICAgICAgICAgICBpc011bHRpcGxlQ2hvaXNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzTXVsdGlwbGVDaG9pc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNNdWx0aXBsZUNob2lzZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChpc011bHRpcGxlQ2hvaXNlKSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pLmZvckVhY2gobm9kZUMgPT4ge1xuICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgICBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWVbMF0gPT09ICd+Jykge1xuICAgICAgICAgICAgdGFiLnB1c2goMC41KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlWzBdID09PSAnIScpIHtcbiAgICAgICAgICAgIHRhYi5wdXNoKDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YWIucHVzaCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWUgPSBgJHtub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZS5zbGljZSgxKX1cXHJgO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5vZGUudHlwZSA9ICdtYyc7XG4gICAgICBub2RlLmRhdGEgPSB7XG4gICAgICAgIGhOYW1lOiAnZmllbGRzZXQnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ21jIGNoZWNrJyxcbiAgICAgICAgICBpZDogYG1jXyR7bmJNQ31gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbe1xuICAgICAgICB0eXBlOiAnbGlzdC1pdGVtLW1jJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAndWwnLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlbi5tYXAoeCA9PiAoe3R5cGU6ICdpbnB1dC1saXN0LWl0ZW0nLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhOYW1lOiAnbGknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHt0eXBlOiAnaW5wdXQtbGlzdC1pbnB1dCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogeC5jaGVja2VkLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgICAgIGlkOiBgbWNfJHtuYk1DfV8ke25iUX1gLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnIX49J1t0YWJbbmJRXSAqIDJdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQtbGlzdC1sYWJlbCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBoTmFtZTogJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgZm9yOiBgbWNfJHtuYk1DfV8ke25iUSsrfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGRlYWxMYWJlbENoaWxkcmVuKHguY2hpbGRyZW4pLFxuICAgICAgICAgICAgfV0sXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmaWVsZC1idXR0b24nLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdpbnB1dCcsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG9uY2xpY2s6IGBjaGVjaygnbWNfJHtuYk1DfScsWyR7U3RyaW5nKHRhYil9XSlgLFxuICAgICAgICAgICAgdmFsdWU6ICdWYWxpZGF0ZScsXG4gICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIG5iTUMrKztcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zZm9ybWVyIHdoaWNoIGFjc3Qgb24gdGhlIE1EQVNUIHRyZWUgYW5kIGdpdmVuIFZGaWxlLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlmaWVkanMvdW5pZmllZCNmdW5jdGlvbi10cmFuc2Zvcm1lcm5vZGUtZmlsZS1uZXh0XG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvbWRhc3RcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS92ZmlsZS92ZmlsZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG11bHRpcGxlQ2hvaXNlKCkge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFzdCBNREFTVFxuICAgKiBAcGFyYW0ge3ZGaWxlfSB2RmlsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiAoYXN0LCB2RmlsZSwgbmV4dCkgeyAvLyBUcmFuc2Zvcm1lclxuICAgIHZpc2l0TGlzdChhc3QpO1xuXG4gICAgaWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmV4dChudWxsLCBhc3QsIHZGaWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG11bHRpcGxlQ2hvaXNlO1xuIiwiJ3VzZSBzdHJpY3QnOyAvLyBBIHZhbGlkIG91dHB1dCB3aGljaCBtZWFucyBub3RoaW5nIGhhcyBiZWVuIHBhcnNlZC5cbi8vIFVzZWQgYXMgZXJyb3IgcmV0dXJuIC8gaW52YWxpZCBvdXRwdXRcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIG5vdGhpbmdIYXBwZW5kID0ge1xuICBwcm9wOiB7fSxcbiAgZWF0ZW46ICcnXG59O1xudmFyIGRlZmF1bHRDb25maWcgPSB7XG4gIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gSXRzIGEgZnVuY3Rpb25cblxufTtcblxuZnVuY3Rpb24gcGFyc2UodmFsdWUsIGluZGV4TmV4dCwgdXNlckNvbmZpZykge1xuICAvLyBNYWluIGZ1bmN0aW9uXG4gIHZhciBsZXRzRWF0ID0gJyc7XG4gIHZhciBzdG9wT25CcmFjZSA9IGZhbHNlO1xuICB2YXIgZXJyb3JEZXRlY3RlZCA9IGZhbHNlO1xuXG4gIHZhciBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0Q29uZmlnLCB7fSwgdXNlckNvbmZpZyk7IC8vIE1ha2UgZGVmYXVsdFZhbHVlIGEgZnVuY3Rpb24gaWYgaXQgaXNuJ3RcblxuXG4gIGlmICh0eXBlb2YgY29uZmlnLmRlZmF1bHRWYWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBjb25maWcuZGVmYXVsdFZhbHVlO1xuXG4gICAgY29uZmlnLmRlZmF1bHRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBwcm9wID0ge307XG4gIC8qIFRoZXkgYXJlIGF0IGxlYXN0IG9uZSBsYWJlbCBhbmQgYXQgYmVzdCB0d28gKi9cblxuICAvKiBla3FzZGYgPC0gb25lIGxhYmVsXG4gICAqIHFzZGZxc2ZkPXFzZGZxc2RmIDwtIHR3byAqL1xuXG4gIHZhciBsYWJlbEZpcnN0ID0gJyc7XG4gIHZhciBsYWJlbFNlY29uZDtcblxuICBpZiAoaW5kZXhOZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBpbmRleE5leHQgPSAwO1xuICB9XG4gIC8qIDMgdHlwZXMgOlxuICAgKiAuYXpjdiA8LSBjbGFzc1xuICAgKiAjcG9pIDwtIGlkXG4gICAqIGRmZ2g9emVydCA8LSBrZXlcbiAgICogamtqIDwtIHRoaXMgaXMgYWxzbyBhIGtleSBidXQgd2l0aCBhIHVzZXIgZGVmaW5lZCB2YWx1ZSAoZGVmYXVsdCBpcyB1bmRlZmluZWQpXG4gICAqIGpraj0gPC0gdGhpcyBpcyBhbHNvIGEga2V5IGJ1dCB3aXRoIGEgZW1wdHkgdmFsdWVcbiAgICovXG5cblxuICB2YXIgdHlwZTtcbiAgdmFyIGZvcmJpZGVuQ2hhcmFjdGVycyA9ICdcXG5cXHJ7fSc7IC8vIEEgZnVuY3Rpb24gdGhhdCBkZXRlY3QgaWYgaXQncyB0aW1lIHRvIGVuZCB0aGUgcGFyc2luZ1xuXG4gIHZhciBzaG91bGRTdG9wID0gZnVuY3Rpb24gc2hvdWxkU3RvcCgpIHtcbiAgICBpZiAoaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCB8fCBmb3JiaWRlbkNoYXJhY3RlcnMuaW5kZXhPZih2YWx1ZVtpbmRleE5leHRdKSA+IC0xKSB7XG4gICAgICBpZiAoc3RvcE9uQnJhY2UgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ30nKSB7XG4gICAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ30nICYmIHN0b3BPbkJyYWNlO1xuICB9O1xuXG4gIHZhciBlYXRlbiA9ICcnOyAvLyBDb3VwbGUgb2YgZnVuY3Rpb25zIHRoYXQgcGFyc2Ugc2FtZSBraW5kcyBvZiBjaGFyYWN0ZXJzXG4gIC8vIFVzZWQgdG8gcGFyc2Ugc3BhY2VzIG9yIGlkZW50aWZpZXJzXG5cbiAgdmFyIGVhdCA9IGZ1bmN0aW9uIGVhdChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPj0gMCkge1xuICAgICAgbGV0c0VhdCArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGVhdGVuICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgaW5kZXhOZXh0Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTtcblxuICB2YXIgZWF0VW50aWwgPSBmdW5jdGlvbiBlYXRVbnRpbChjaGFycykge1xuICAgIGVhdGVuID0gJyc7XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDAgJiYgY2hhcnMuaW5kZXhPZih2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSkgPCAwKSB7XG4gICAgICBsZXRzRWF0ICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgZWF0ZW4gKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBpbmRleE5leHQrKztcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuICAgIC8vIFNldCB0aGUgbGFiZWwgaXQgc2hvdWxkIHNldFxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFiZWxGaXJzdCA9IGVhdGVuO1xuICAgIH1cblxuICAgIHJldHVybiBzaG91bGRTdG9wKCk7XG4gIH07IC8vIEluIHF1b3RlLCBldmVyeSBjaGFyYWN0ZXIgaXMgdmFsaWQgZXhjZXB0IHRoZSB1bmVzY2FwZWQgcXVvdGVzIGFuZCBDUiBvciBMRlxuICAvLyBTYW1lIGZ1bmN0aW9uIGZvciBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZVxuXG5cbiAgdmFyIGVhdEluUXVvdGUgPSBmdW5jdGlvbiBlYXRJblF1b3RlKHF1b3RlKSB7XG4gICAgZWF0ZW4gPSAnJzsgLy8gRmlyc3QgY2hlY2sgc28gdmFsdWVbaW5kZXhOZXh0LTFdIHdpbGwgYWx3YXlzIGJlIHZhbGlkXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gcXVvdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmICEocXVvdGUgPT09IHZhbHVlW2luZGV4TmV4dF0gJiYgdmFsdWVbaW5kZXhOZXh0IC0gMV0gIT09ICdcXFxcJykgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xcbicgJiYgdmFsdWVbaW5kZXhOZXh0XSAhPT0gJ1xccicpIHtcbiAgICAgIGxldHNFYXQgKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBlYXRlbiArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGluZGV4TmV4dCsrO1xuICAgIH0gLy8gSWYgd2UgZW5jb3VudGVyIGFuIEVPTCwgdGhlcmUgaXMgYW4gZXJyb3JcbiAgICAvLyBXZSBhcmUgd2FpdGluZyBmb3IgYSBxdW90ZVxuXG5cbiAgICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xcbicgfHwgdmFsdWVbaW5kZXhOZXh0XSA9PT0gJ1xccicgfHwgaW5kZXhOZXh0ID49IHZhbHVlLmxlbmd0aCkge1xuICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFVnbHkgYnV0IGtlZXAgdGhlIG1haW4gbG9vcCByZWFkYWJsZVxuXG5cbiAgICBpZiAobGFiZWxGaXJzdCkge1xuICAgICAgbGFiZWxTZWNvbmQgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsRmlyc3QgPSBlYXRlbi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gSXQncyByZWFsbHkgY29tbW9uIHRvIGVhdCBvbmx5IG9uZSBjaGFyYWN0ZXIgc28gbGV0J3MgbWFrZSBpdCBhIGZ1bmN0aW9uXG5cblxuICB2YXIgZWF0T25lID0gZnVuY3Rpb24gZWF0T25lKGMsIHNraXBTdG9wQ2hlY2spIHtcbiAgICAvLyBNaWFtICFcbiAgICBsZXRzRWF0ICs9IGM7XG4gICAgaW5kZXhOZXh0Kys7XG4gICAgcmV0dXJuIHNraXBTdG9wQ2hlY2sgPyBmYWxzZSA6IHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gQ29tbW9uIHBhcnNpbmcgb2YgcXVvdGVzXG5cblxuICB2YXIgZWF0UXVvdGUgPSBmdW5jdGlvbiBlYXRRdW90ZShxKSB7XG4gICAgZWF0T25lKHEsIHRydWUpO1xuICAgIGVhdEluUXVvdGUocSwgdHJ1ZSk7XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgIT09IHEpIHtcbiAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICB9XG5cbiAgICBpZiAoZWF0T25lKHEpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpZFNldEJ5S2V5ID0gZmFsc2U7XG5cbiAgdmFyIGFkZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZSgpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2lkJzpcbiAgICAgICAgLy8gSURcbiAgICAgICAgaWYgKGlkU2V0QnlLZXkpIHtcbiAgICAgICAgICBwcm9wLmlkID0gbGFiZWxGaXJzdDtcbiAgICAgICAgICBpZFNldEJ5S2V5ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcC5pZCA9IHByb3AuaWQgfHwgbGFiZWxGaXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGlmICghcHJvcFtcImNsYXNzXCJdKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcFtcImNsYXNzXCJdLmluZGV4T2YobGFiZWxGaXJzdCkgPCAwKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdLnB1c2gobGFiZWxGaXJzdCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAna2V5JzpcbiAgICAgICAgaWYgKCFsYWJlbEZpcnN0KSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEobGFiZWxGaXJzdCBpbiBwcm9wKSkge1xuICAgICAgICAgIGlmIChsYWJlbFNlY29uZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBIZXJlLCB3ZSBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlXG4gICAgICAgICAgICAvLyBzbyBpdCdzIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgcHJvcFtsYWJlbEZpcnN0XSA9IGNvbmZpZy5kZWZhdWx0VmFsdWUobGFiZWxGaXJzdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3BbbGFiZWxGaXJzdF0gPSBsYWJlbEZpcnN0ID09PSAnY2xhc3MnID8gW2xhYmVsU2Vjb25kXSA6IGxhYmVsU2Vjb25kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYWJlbEZpcnN0ID09PSAnaWQnKSB7XG4gICAgICAgICAgICBpZFNldEJ5S2V5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWxGaXJzdCA9PT0gJ2NsYXNzJyAmJiBCb29sZWFuKGxhYmVsU2Vjb25kKSkge1xuICAgICAgICAgIHByb3BbXCJjbGFzc1wiXS5wdXNoKGxhYmVsU2Vjb25kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIHR5cGUgPSB1bmRlZmluZWQ7XG4gICAgbGFiZWxGaXJzdCA9ICcnO1xuICAgIGxhYmVsU2Vjb25kID0gdW5kZWZpbmVkO1xuICB9O1xuICAvKiogKioqKioqKioqKioqKioqKioqKioqKiogU3RhcnQgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbiAgLy8gTGV0J3MgY2hlY2sgZm9yIGxlYWRpbmcgc3BhY2VzIGZpcnN0XG5cblxuICBlYXQoJyBcXHRcXHYnKTtcblxuICBpZiAodmFsdWVbaW5kZXhOZXh0XSA9PT0gJ3snKSB7XG4gICAgZWF0T25lKCd7Jyk7XG4gICAgc3RvcE9uQnJhY2UgPSB0cnVlO1xuICB9XG5cbiAgd2hpbGUgKCFzaG91bGRTdG9wKCkpIHtcbiAgICAvLyBNYWluIGxvb3Agd2hpY2ggZXh0cmFjdCBhdHRyaWJ1dGVzXG4gICAgaWYgKGVhdCgnIFxcdFxcdicpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICcuJykge1xuICAgICAgLy8gQ2xhc3Nlc1xuICAgICAgdHlwZSA9ICdjbGFzcyc7XG5cbiAgICAgIGlmIChlYXRPbmUoJy4nKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJyMnKSB7XG4gICAgICAvLyBJRFxuICAgICAgdHlwZSA9ICdpZCc7XG5cbiAgICAgIGlmIChlYXRPbmUoJyMnKSkge1xuICAgICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtleVxuICAgICAgdHlwZSA9ICdrZXknO1xuICAgIH0gLy8gRXh0cmFjdCBuYW1lXG5cblxuICAgIGlmIChlYXRVbnRpbCgnPVxcdFxcYlxcdiDCoCcpIHx8ICFsYWJlbEZpcnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICc9JyAmJiB0eXBlID09PSAna2V5Jykge1xuICAgICAgLy8gU2V0IGxhYmVsU2Vjb25kXG4gICAgICBpZiAoZWF0T25lKCc9JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJ1wiJykge1xuICAgICAgICB2YXIgcmV0ID0gZWF0UXVvdGUoJ1wiJyk7XG5cbiAgICAgICAgaWYgKHJldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChyZXQgPT09IG5vdGhpbmdIYXBwZW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXFwnJykge1xuICAgICAgICB2YXIgX3JldCA9IGVhdFF1b3RlKCdcXCcnKTtcblxuICAgICAgICBpZiAoX3JldCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChfcmV0ID09PSBub3RoaW5nSGFwcGVuZCkge1xuICAgICAgICAgIHJldHVybiBub3RoaW5nSGFwcGVuZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlYXRVbnRpbCgnIFxcdFxcblxcclxcdj19JykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSAvLyBBZGQgdGhlIHBhcnNlZCBhdHRyaWJ1dGUgdG8gdGhlIG91dHB1dCBwcm9wIHdpdGggdGhlIGFkIGhvYyB0eXBlXG5cblxuICAgIGFkZEF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgYWRkQXR0cmlidXRlKCk7XG5cbiAgaWYgKHN0b3BPbkJyYWNlKSB7XG4gICAgaWYgKGluZGV4TmV4dCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZVtpbmRleE5leHRdID09PSAnfScpIHtcbiAgICAgIHN0b3BPbkJyYWNlID0gZmFsc2U7XG4gICAgICBlYXRPbmUoJ30nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvckRldGVjdGVkID8gbm90aGluZ0hhcHBlbmQgOiB7XG4gICAgcHJvcDogcHJvcCxcbiAgICBlYXRlbjogbGV0c0VhdFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbnZhciBTVEFSVCA9ICdbX18nO1xudmFyIEVORCA9ICdfX10nO1xuLyogRnVuY3Rpb24gdXNlZCB0byBsb2NhdGUgdGhlIHN0YXJ0IG9mIGEgbGluZSBpbnB1dCBmaWxlZFxuICogVXNlZCBieSByZW1hcmtcbiAqL1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihTVEFSVCwgZnJvbUluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuLyogRnVudGlvbiB3aGljaCBpcyBleHBvcnRlZCAqL1xuXG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgLyogVmVyaWZpZSBpZiBpdCdzIHRoZSBzeW50YXggb2YgYSBsaW5lIGlucHV0IGFuZCByZXR1cm4gYSBsaW5lIGlucHV0IG5vZGUgKi9cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHN1YnZhbHVlID0gJyc7XG4gICAgdmFyIGluZGV4ID0gU1RBUlQubGVuZ3RoO1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgLyogVHJ5IHRvIGxvY2FsZSB0aGUgZW5kIG9mIHRoZSBsaW5lIGlucHV0ICovXG5cbiAgICB3aGlsZSAoIXZhbHVlLnN0YXJ0c1dpdGgoRU5ELCBpbmRleCkgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHN1YnZhbHVlICs9IHZhbHVlLmNoYXJBdChpbmRleCk7XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSAnXFxuJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICB2YXIgbGV0c0VhdCA9ICcnO1xuICAgIHZhciBwcm9wID0ge1xuICAgICAgLyoga2V5OiB1bmRlZmluZWQge30gIGNsYXNzOiB1bmRlZmluZWQgW10gaWQ6IHVuZGVmaW5lZCAqL1xuICAgIH07XG4gICAgLyogUGFyc2UgdGhlIGF0dHJpYnV0ZXMgaWYgYW55IHdpdGggbWQtYXR0ci1wYXJzZXIgKi9cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyBFTkQubGVuZ3RoKSA9PT0gJ3snKSB7XG4gICAgICB2YXIgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCArIEVORC5sZW5ndGgpO1xuICAgICAgbGV0c0VhdCA9IHJlcy5lYXRlbjtcbiAgICAgIHByb3AgPSByZXMucHJvcDtcbiAgICB9XG4gICAgLyogQWxsb3cgc29tZSBvdGhlciBraW5kIG9mIGlucHV0ICovXG5cblxuICAgIGlmIChwcm9wLnR5cGUgIT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHByb3AudHlwZSA9ICd0ZXh0JztcbiAgICB9XG4gICAgLyogVW5kZXJzY29yZXMgaW4gdGhlIHBsYWNlaG9sZGVyIGJlY29tZSB3aGl0ZXNwYWNlcyAqL1xuXG5cbiAgICBwcm9wLnBsYWNlaG9sZGVyID0gc3VidmFsdWUucmVwbGFjZSgvXl8qL2csICcnKS5yZXBsYWNlKC9fKiQvZywgJycpIHx8IHVuZGVmaW5lZDtcblxuICAgIGlmIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGVhdChTVEFSVCArIHN1YnZhbHVlICsgRU5EICsgbGV0c0VhdCkoe1xuICAgICAgICB0eXBlOiAnbGluZS1pbnB1dCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnaW5wdXQnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yO1xuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICB2YXIgaW5saW5lVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgdmFyIGlubGluZU1ldGhvZHMgPSBQYXJzZXIucHJvdG90eXBlLmlubGluZU1ldGhvZHM7XG4gIGlubGluZVRva2VuaXplcnMuaW5wdXQgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndXJsJyksIDAsICdpbnB1dCcpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG5cbiAgICB2aXNpdG9ycy5saW5laW5wdXQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiW19fXCIuY29uY2F0KHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpLCBcIl9fXVwiKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAnWyc7XG5jb25zdCBFTkRfUkdYID0gLyhcXHwgKlt2Vl0gKl0pKHtbXlxcbl0qfSk/LztcblxuY29uc3QgcGFyc2VBdHRyID0gcmVxdWlyZSgnbWQtYXR0ci1wYXJzZXInKTtcbi8qIFRoZSBmdW5jdGlvbiB0aGF0IGxvY2F0ZSBhIHRleHQgaW5wdXRcbiAqIFVzZWQgYnkgcmVtYXJrXG4gKi9cblxuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG4vKiBUaGUgbWFpbiBwbHVnaW4gZnVuY3Rpb24gKi9cblxuXG5mdW5jdGlvbiBwbHVnaW4oKSB7XG4gIGxldCBFTkQgPSAnfHZdJzsgLy8gVGhlIGRlZmF1bHQgdmFsdWUgaXNuJ3QgaW1wb3J0YW50XG4gIC8vIEZ1bmN0aW9uIHRoYXQgY2hlY2sgdGhlIHN5bnRheCBhbmQgcmV0dXJuIGEgdGV4dCBpbnB1dCBub2RlXG5cbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5nZm0gfHwgIXZhbHVlLnN0YXJ0c1dpdGgoU1RBUlQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1YnZhbHVlID0gJyc7XG4gICAgbGV0IGluZGV4ID0gMTtcbiAgICBjb25zdCB7XG4gICAgICBsZW5ndGhcbiAgICB9ID0gdmFsdWU7XG4gICAgLyogTm90IHN1cmUgYWJvdXQgdGhhdCAuLi4gKi9cblxuICAgIGNvbnN0IG5vdyA9IGVhdC5ub3coKTtcbiAgICBub3cuY29sdW1uICs9IDI7XG4gICAgbm93Lm9mZnNldCArPSAyOyAvLyBFeHRyYWN0IHRoZSBvcHRpb25zXG5cbiAgICBsZXQgcmV0ID0gbnVsbDtcblxuICAgIGlmICgocmV0ID0gdmFsdWUuc3Vic3RyKDEpLm1hdGNoKEVORF9SR1gpKSAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgc3VidmFsdWUgKz0gdmFsdWUuc3Vic3RyKDEsIHJldC5pbmRleCk7XG4gICAgICBFTkQgPSByZXRbMV07XG4gICAgICBpbmRleCArPSByZXQuaW5kZXggKyBFTkQubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBFeHRyYWN0IHRoZSBhdHRyaWJ1dGVzXG5cblxuICAgIGxldCBsZXRzRWF0ID0gJyc7XG4gICAgbGV0IHByb3AgPSB7XG4gICAgICAvKiBjbGFzczogdW5kZWZpbmVkICBbXSAsIGlkOiB1bmRlZmluZWQgKi9cbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09ICd7Jykge1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VBdHRyKHZhbHVlLCBpbmRleCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgaW5kZXggKz0gbGV0c0VhdC5sZW5ndGg7XG4gICAgICBwcm9wID0gcmVzLnByb3A7XG4gICAgfSAvLyBSZXR1cm4gdGhlIHNlbGVjdCBub2RlXG5cblxuICAgIGlmIChpbmRleCA8PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBlYXQoU1RBUlQgKyBzdWJ2YWx1ZSArIEVORCArIGxldHNFYXQpKHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiAnc2VsZWN0JyxcbiAgICAgICAgICBoUHJvcGVydGllczogcHJvcCxcbiAgICAgICAgICBoQ2hpbGRyZW46IHN1YnZhbHVlLnNwbGl0KCd8JykuZmlsdGVyKHggPT4geCkubWFwKHVudHJpbSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gdW50cmltLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgICAgICAgdGFnTmFtZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGV4dFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRleHRcbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmxpbmVUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7IC8vIEluamVjdCBpbmxpbmVUb2tlbml6ZXJcblxuICBjb25zdCB7XG4gICAgaW5saW5lVG9rZW5pemVyc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgY29uc3Qge1xuICAgIGlubGluZU1ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGlubGluZVRva2VuaXplcnMuc2VsZWN0ID0gaW5saW5lVG9rZW5pemVyO1xuICBpbmxpbmVNZXRob2RzLnNwbGljZShpbmxpbmVNZXRob2RzLmluZGV4T2YoJ3VybCcpLCAwLCAnc2VsZWN0Jyk7XG4gIGNvbnN0IHtcbiAgICBDb21waWxlclxuICB9ID0gdGhpczsgLy8gU3RyaW5naWZ5XG5cbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzaXRvcnNcbiAgICB9ID0gQ29tcGlsZXIucHJvdG90eXBlO1xuXG4gICAgdmlzaXRvcnMubGluZXNlbGVjdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gU1RBUlQgKyB0aGlzLmFsbChub2RlKS5qb2luKCcnKSArIEVORDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgU1RBUlQgPSAvXihcXFtfK1xcbikvZztcbmNvbnN0IEVORCA9IC8oXytdKS9nO1xuXG5jb25zdCBwYXJzZUF0dHIgPSByZXF1aXJlKCdtZC1hdHRyLXBhcnNlcicpO1xuXG5mdW5jdGlvbiBsb2NhdG9yKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgY29uc3QgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIoZWF0LCB2YWx1ZSkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmdmbSB8fCB2YWx1ZS5zZWFyY2goU1RBUlQpICE9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHByb3AgPSB7XG4gICAgICBjbGFzczogdW5kZWZpbmVkXG4gICAgICAvKiBbXSAqL1xuICAgICAgLFxuICAgICAgaWQ6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgbGV0IGVhdGVuID0gJyc7XG5cbiAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgPiAwKSB7XG4gICAgICBpZiAodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCA8IHZhbHVlLmxlbmd0aCAmJiB2YWx1ZS5jaGFyQXQodmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgPT09ICd7Jykge1xuICAgICAgICBjb25zdCByZXMgPSBwYXJzZUF0dHIodmFsdWUsIHZhbHVlLnNlYXJjaChFTkQpICsgdmFsdWUubWF0Y2goRU5EKVswXS5sZW5ndGgpO1xuICAgICAgICBlYXRlbiA9IHJlcy5lYXRlbjtcbiAgICAgICAgcHJvcCA9IHJlcy5wcm9wO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kID0gdmFsdWUuc2VhcmNoKEVORCk7XG5cbiAgICAgIGlmIChlbmQgIT09IHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgpIHtcbiAgICAgICAgZW5kIC09IDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHQgPSBlYXQodmFsdWUuc2xpY2UoMCwgdmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCkgKyBlYXRlbikoe1xuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdURVhUQVJFQScsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHByb3AsXG4gICAgICAgICAgaENoaWxkcmVuOiBbe1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnNsaWNlKHZhbHVlLm1hdGNoKFNUQVJUKVswXS5sZW5ndGgsIGVuZClcbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYmxvY2tUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIGNvbnN0IHtcbiAgICBQYXJzZXJcbiAgfSA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBibG9ja1Rva2VuaXplcnNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGNvbnN0IHtcbiAgICBibG9ja01ldGhvZHNcbiAgfSA9IFBhcnNlci5wcm90b3R5cGU7XG4gIGJsb2NrVG9rZW5pemVycy50ZXh0aW5wdXQgPSBibG9ja1Rva2VuaXplcjtcbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ3RleHRpbnB1dCcpO1xuICBjb25zdCB7XG4gICAgQ29tcGlsZXJcbiAgfSA9IHRoaXM7IC8vIFN0cmluZ2lmeVxuXG4gIGlmIChDb21waWxlcikge1xuICAgIGNvbnN0IHtcbiAgICAgIHZpc2l0b3JzXG4gICAgfSA9IENvbXBpbGVyLnByb3RvdHlwZTtcblxuICAgIHZpc2l0b3JzLnRleHRpbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gYFtfXyR7dGhpcy5hbGwobm9kZSkuam9pbignJyl9X19dYDtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVU5ERUZJTkVEX0NPREVfUE9JTlRTID0gW1xuICAgIDB4ZmZmZSxcbiAgICAweGZmZmYsXG4gICAgMHgxZmZmZSxcbiAgICAweDFmZmZmLFxuICAgIDB4MmZmZmUsXG4gICAgMHgyZmZmZixcbiAgICAweDNmZmZlLFxuICAgIDB4M2ZmZmYsXG4gICAgMHg0ZmZmZSxcbiAgICAweDRmZmZmLFxuICAgIDB4NWZmZmUsXG4gICAgMHg1ZmZmZixcbiAgICAweDZmZmZlLFxuICAgIDB4NmZmZmYsXG4gICAgMHg3ZmZmZSxcbiAgICAweDdmZmZmLFxuICAgIDB4OGZmZmUsXG4gICAgMHg4ZmZmZixcbiAgICAweDlmZmZlLFxuICAgIDB4OWZmZmYsXG4gICAgMHhhZmZmZSxcbiAgICAweGFmZmZmLFxuICAgIDB4YmZmZmUsXG4gICAgMHhiZmZmZixcbiAgICAweGNmZmZlLFxuICAgIDB4Y2ZmZmYsXG4gICAgMHhkZmZmZSxcbiAgICAweGRmZmZmLFxuICAgIDB4ZWZmZmUsXG4gICAgMHhlZmZmZixcbiAgICAweGZmZmZlLFxuICAgIDB4ZmZmZmYsXG4gICAgMHgxMGZmZmUsXG4gICAgMHgxMGZmZmZcbl07XG5cbmV4cG9ydHMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSID0gJ1xcdUZGRkQnO1xuXG5leHBvcnRzLkNPREVfUE9JTlRTID0ge1xuICAgIEVPRjogLTEsXG4gICAgTlVMTDogMHgwMCxcbiAgICBUQUJVTEFUSU9OOiAweDA5LFxuICAgIENBUlJJQUdFX1JFVFVSTjogMHgwZCxcbiAgICBMSU5FX0ZFRUQ6IDB4MGEsXG4gICAgRk9STV9GRUVEOiAweDBjLFxuICAgIFNQQUNFOiAweDIwLFxuICAgIEVYQ0xBTUFUSU9OX01BUks6IDB4MjEsXG4gICAgUVVPVEFUSU9OX01BUks6IDB4MjIsXG4gICAgTlVNQkVSX1NJR046IDB4MjMsXG4gICAgQU1QRVJTQU5EOiAweDI2LFxuICAgIEFQT1NUUk9QSEU6IDB4MjcsXG4gICAgSFlQSEVOX01JTlVTOiAweDJkLFxuICAgIFNPTElEVVM6IDB4MmYsXG4gICAgRElHSVRfMDogMHgzMCxcbiAgICBESUdJVF85OiAweDM5LFxuICAgIFNFTUlDT0xPTjogMHgzYixcbiAgICBMRVNTX1RIQU5fU0lHTjogMHgzYyxcbiAgICBFUVVBTFNfU0lHTjogMHgzZCxcbiAgICBHUkVBVEVSX1RIQU5fU0lHTjogMHgzZSxcbiAgICBRVUVTVElPTl9NQVJLOiAweDNmLFxuICAgIExBVElOX0NBUElUQUxfQTogMHg0MSxcbiAgICBMQVRJTl9DQVBJVEFMX0Y6IDB4NDYsXG4gICAgTEFUSU5fQ0FQSVRBTF9YOiAweDU4LFxuICAgIExBVElOX0NBUElUQUxfWjogMHg1YSxcbiAgICBSSUdIVF9TUVVBUkVfQlJBQ0tFVDogMHg1ZCxcbiAgICBHUkFWRV9BQ0NFTlQ6IDB4NjAsXG4gICAgTEFUSU5fU01BTExfQTogMHg2MSxcbiAgICBMQVRJTl9TTUFMTF9GOiAweDY2LFxuICAgIExBVElOX1NNQUxMX1g6IDB4NzgsXG4gICAgTEFUSU5fU01BTExfWjogMHg3YSxcbiAgICBSRVBMQUNFTUVOVF9DSEFSQUNURVI6IDB4ZmZmZFxufTtcblxuZXhwb3J0cy5DT0RFX1BPSU5UX1NFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0hfU1RSSU5HOiBbMHgyZCwgMHgyZF0sIC8vLS1cbiAgICBET0NUWVBFX1NUUklORzogWzB4NDQsIDB4NGYsIDB4NDMsIDB4NTQsIDB4NTksIDB4NTAsIDB4NDVdLCAvL0RPQ1RZUEVcbiAgICBDREFUQV9TVEFSVF9TVFJJTkc6IFsweDViLCAweDQzLCAweDQ0LCAweDQxLCAweDU0LCAweDQxLCAweDViXSwgLy9bQ0RBVEFbXG4gICAgU0NSSVBUX1NUUklORzogWzB4NzMsIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzRdLCAvL3NjcmlwdFxuICAgIFBVQkxJQ19TVFJJTkc6IFsweDUwLCAweDU1LCAweDQyLCAweDRjLCAweDQ5LCAweDQzXSwgLy9QVUJMSUNcbiAgICBTWVNURU1fU1RSSU5HOiBbMHg1MywgMHg1OSwgMHg1MywgMHg1NCwgMHg0NSwgMHg0ZF0gLy9TWVNURU1cbn07XG5cbi8vU3Vycm9nYXRlc1xuZXhwb3J0cy5pc1N1cnJvZ2F0ZSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZDgwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmlzU3Vycm9nYXRlUGFpciA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDB4ZGMwMCAmJiBjcCA8PSAweGRmZmY7XG59O1xuXG5leHBvcnRzLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQgPSBmdW5jdGlvbihjcDEsIGNwMikge1xuICAgIHJldHVybiAoY3AxIC0gMHhkODAwKSAqIDB4NDAwICsgMHgyNDAwICsgY3AyO1xufTtcblxuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZXhwb3J0cy5pc0NvbnRyb2xDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIChjcCAhPT0gMHgyMCAmJiBjcCAhPT0gMHgwYSAmJiBjcCAhPT0gMHgwZCAmJiBjcCAhPT0gMHgwOSAmJiBjcCAhPT0gMHgwYyAmJiBjcCA+PSAweDAxICYmIGNwIDw9IDB4MWYpIHx8XG4gICAgICAgIChjcCA+PSAweDdmICYmIGNwIDw9IDB4OWYpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuaXNVbmRlZmluZWRDb2RlUG9pbnQgPSBmdW5jdGlvbihjcCkge1xuICAgIHJldHVybiAoY3AgPj0gMHhmZGQwICYmIGNwIDw9IDB4ZmRlZikgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmluZGV4T2YoY3ApID4gLTE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ2NvbnRyb2wtY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbScsXG4gICAgbm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbTogJ25vbmNoYXJhY3Rlci1pbi1pbnB1dC1zdHJlYW0nLFxuICAgIHN1cnJvZ2F0ZUluSW5wdXRTdHJlYW06ICdzdXJyb2dhdGUtaW4taW5wdXQtc3RyZWFtJyxcbiAgICBub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXM6ICdub24tdm9pZC1odG1sLWVsZW1lbnQtc3RhcnQtdGFnLXdpdGgtdHJhaWxpbmctc29saWR1cycsXG4gICAgZW5kVGFnV2l0aEF0dHJpYnV0ZXM6ICdlbmQtdGFnLXdpdGgtYXR0cmlidXRlcycsXG4gICAgZW5kVGFnV2l0aFRyYWlsaW5nU29saWR1czogJ2VuZC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzJyxcbiAgICB1bmV4cGVjdGVkU29saWR1c0luVGFnOiAndW5leHBlY3RlZC1zb2xpZHVzLWluLXRhZycsXG4gICAgdW5leHBlY3RlZE51bGxDaGFyYWN0ZXI6ICd1bmV4cGVjdGVkLW51bGwtY2hhcmFjdGVyJyxcbiAgICB1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZTogJ3VuZXhwZWN0ZWQtcXVlc3Rpb24tbWFyay1pbnN0ZWFkLW9mLXRhZy1uYW1lJyxcbiAgICBpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWU6ICdpbnZhbGlkLWZpcnN0LWNoYXJhY3Rlci1vZi10YWctbmFtZScsXG4gICAgdW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lOiAndW5leHBlY3RlZC1lcXVhbHMtc2lnbi1iZWZvcmUtYXR0cmlidXRlLW5hbWUnLFxuICAgIG1pc3NpbmdFbmRUYWdOYW1lOiAnbWlzc2luZy1lbmQtdGFnLW5hbWUnLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi1hdHRyaWJ1dGUtbmFtZScsXG4gICAgdW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlOiAndW5rbm93bi1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2U6ICdtaXNzaW5nLXNlbWljb2xvbi1hZnRlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICB1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcjogJ3VuZXhwZWN0ZWQtY2hhcmFjdGVyLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWU6ICd1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi11bnF1b3RlZC1hdHRyaWJ1dGUtdmFsdWUnLFxuICAgIGVvZkJlZm9yZVRhZ05hbWU6ICdlb2YtYmVmb3JlLXRhZy1uYW1lJyxcbiAgICBlb2ZJblRhZzogJ2VvZi1pbi10YWcnLFxuICAgIG1pc3NpbmdBdHRyaWJ1dGVWYWx1ZTogJ21pc3NpbmctYXR0cmlidXRlLXZhbHVlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tYXR0cmlidXRlcycsXG4gICAgbWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkOiAnbWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtcHVibGljLWtleXdvcmQnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyczpcbiAgICAgICAgJ21pc3Npbmctd2hpdGVzcGFjZS1iZXR3ZWVuLWRvY3R5cGUtcHVibGljLWFuZC1zeXN0ZW0taWRlbnRpZmllcnMnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZDogJ21pc3Npbmctd2hpdGVzcGFjZS1hZnRlci1kb2N0eXBlLXN5c3RlbS1rZXl3b3JkJyxcbiAgICBtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcjogJ21pc3NpbmctcXVvdGUtYmVmb3JlLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIG1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnbWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgbWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnbWlzc2luZy1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyJyxcbiAgICBtaXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXI6ICdtaXNzaW5nLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIGFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAnYWJydXB0LWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXInLFxuICAgIGNkYXRhSW5IdG1sQ29udGVudDogJ2NkYXRhLWluLWh0bWwtY29udGVudCcsXG4gICAgaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50OiAnaW5jb3JyZWN0bHktb3BlbmVkLWNvbW1lbnQnLFxuICAgIGVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dDogJ2VvZi1pbi1zY3JpcHQtaHRtbC1jb21tZW50LWxpa2UtdGV4dCcsXG4gICAgZW9mSW5Eb2N0eXBlOiAnZW9mLWluLWRvY3R5cGUnLFxuICAgIG5lc3RlZENvbW1lbnQ6ICduZXN0ZWQtY29tbWVudCcsXG4gICAgYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50OiAnYWJydXB0LWNsb3Npbmctb2YtZW1wdHktY29tbWVudCcsXG4gICAgZW9mSW5Db21tZW50OiAnZW9mLWluLWNvbW1lbnQnLFxuICAgIGluY29ycmVjdGx5Q2xvc2VkQ29tbWVudDogJ2luY29ycmVjdGx5LWNsb3NlZC1jb21tZW50JyxcbiAgICBlb2ZJbkNkYXRhOiAnZW9mLWluLWNkYXRhJyxcbiAgICBhYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2U6ICdhYnNlbmNlLW9mLWRpZ2l0cy1pbi1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG51bGxDaGFyYWN0ZXJSZWZlcmVuY2U6ICdudWxsLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIHN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZTogJ3N1cnJvZ2F0ZS1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlOiAnY2hhcmFjdGVyLXJlZmVyZW5jZS1vdXRzaWRlLXVuaWNvZGUtcmFuZ2UnLFxuICAgIGNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2U6ICdjb250cm9sLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZTogJ25vbmNoYXJhY3Rlci1jaGFyYWN0ZXItcmVmZXJlbmNlJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lOiAnbWlzc2luZy13aGl0ZXNwYWNlLWJlZm9yZS1kb2N0eXBlLW5hbWUnLFxuICAgIG1pc3NpbmdEb2N0eXBlTmFtZTogJ21pc3NpbmctZG9jdHlwZS1uYW1lJyxcbiAgICBpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lOiAnaW52YWxpZC1jaGFyYWN0ZXItc2VxdWVuY2UtYWZ0ZXItZG9jdHlwZS1uYW1lJyxcbiAgICBkdXBsaWNhdGVBdHRyaWJ1dGU6ICdkdXBsaWNhdGUtYXR0cmlidXRlJyxcbiAgICBub25Db25mb3JtaW5nRG9jdHlwZTogJ25vbi1jb25mb3JtaW5nLWRvY3R5cGUnLFxuICAgIG1pc3NpbmdEb2N0eXBlOiAnbWlzc2luZy1kb2N0eXBlJyxcbiAgICBtaXNwbGFjZWREb2N0eXBlOiAnbWlzcGxhY2VkLWRvY3R5cGUnLFxuICAgIGVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50OiAnZW5kLXRhZy13aXRob3V0LW1hdGNoaW5nLW9wZW4tZWxlbWVudCcsXG4gICAgY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50czogJ2Nsb3Npbmctb2YtZWxlbWVudC13aXRoLW9wZW4tY2hpbGQtZWxlbWVudHMnLFxuICAgIGRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZDogJ2Rpc2FsbG93ZWQtY29udGVudC1pbi1ub3NjcmlwdC1pbi1oZWFkJyxcbiAgICBvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2Y6ICdvcGVuLWVsZW1lbnRzLWxlZnQtYWZ0ZXItZW9mJyxcbiAgICBhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkOiAnYWJhbmRvbmVkLWhlYWQtZWxlbWVudC1jaGlsZCcsXG4gICAgbWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudDogJ21pc3BsYWNlZC1zdGFydC10YWctZm9yLWhlYWQtZWxlbWVudCcsXG4gICAgbmVzdGVkTm9zY3JpcHRJbkhlYWQ6ICduZXN0ZWQtbm9zY3JpcHQtaW4taGVhZCcsXG4gICAgZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dDogJ2VvZi1pbi1lbGVtZW50LXRoYXQtY2FuLWNvbnRhaW4tb25seS10ZXh0J1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBFUlIgPSByZXF1aXJlKCcuLi9jb21tb24vZXJyb3ItY29kZXMnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gdW5pY29kZS5DT0RFX1BPSU5UUztcblxuLy9Db25zdFxuY29uc3QgREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FID0gMSA8PCAxNjtcblxuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG5jbGFzcyBQcmVwcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmh0bWwgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucG9zID0gLTE7XG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0xO1xuICAgICAgICB0aGlzLmxhc3RDaGFyUG9zID0gLTE7XG5cbiAgICAgICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuXG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbiAgICB9XG5cbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfYWRkR2FwKCkge1xuICAgICAgICB0aGlzLmdhcFN0YWNrLnB1c2godGhpcy5sYXN0R2FwUG9zKTtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5wb3M7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5sYXN0Q2hhclBvcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dENwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKTtcblxuICAgICAgICAgICAgaWYgKHVuaWNvZGUuaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBhZGQgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB1bmljb2RlLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQoY3AsIG5leHRDcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciBzdXJyb2dhdGUgcGFpciB5ZXQuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmxhc3RDaHVua1dyaXR0ZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGlzb2xhdGVkIHN1cnJvZ2F0ZVxuICAgICAgICB0aGlzLl9lcnIoRVJSLnN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0pO1xuXG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG5cbiAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMuYnVmZmVyV2F0ZXJsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RDaGFyUG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSAtMTtcbiAgICAgICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgKz0gY2h1bms7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBjaHVuaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdENoYXJQb3MgPSB0aGlzLmh0bWwubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGlzTGFzdENodW5rO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZygwLCB0aGlzLnBvcyArIDEpICsgY2h1bmsgKyB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zICsgMSwgdGhpcy5odG1sLmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhZHZhbmNlKCkge1xuICAgICAgICB0aGlzLnBvcysrO1xuXG4gICAgICAgIGlmICh0aGlzLnBvcyA+IHRoaXMubGFzdENoYXJQb3MpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG5cbiAgICAgICAgLy9OT1RFOiBhbnkgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlcnMgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3cgYSBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVyXG4gICAgICAgIC8vbXVzdCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUgJiYgY3AgPT09ICQuTElORV9GRUVEKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fYWRkR2FwKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gJC5MSU5FX0ZFRUQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh1bmljb2RlLmlzU3Vycm9nYXRlKGNwKSkge1xuICAgICAgICAgICAgY3AgPSB0aGlzLl9wcm9jZXNzU3Vycm9nYXRlKGNwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID1cbiAgICAgICAgICAgIChjcCA+IDB4MWYgJiYgY3AgPCAweDdmKSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOIHx8IChjcCA+IDB4OWYgJiYgY3AgPCAweGZkZDApO1xuXG4gICAgICAgIGlmICghaXNDb21tb25WYWxpZFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuXG4gICAgX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKSB7XG4gICAgICAgIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY29udHJvbENoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0cmVhdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmxhc3RHYXBQb3MpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IHRoaXMuZ2FwU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnBvcy0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MtLTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJlcHJvY2Vzc29yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL05PVEU6IHRoaXMgZmlsZSBjb250YWlucyBhdXRvLWdlbmVyYXRlZCBhcnJheSBtYXBwZWQgcmFkaXggdHJlZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBuYW1lZCBlbnRpdHkgcmVmZXJlbmNlcyBjb25zdW1wdGlvblxuLy8oZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS90cmVlL21hc3Rlci9zY3JpcHRzL2dlbmVyYXRlLW5hbWVkLWVudGl0eS1kYXRhL1JFQURNRS5tZClcbm1vZHVsZS5leHBvcnRzID0gbmV3IFVpbnQxNkFycmF5KFs0LDUyLDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTA2LDMwMyw0MTIsODEwLDE0MzIsMTcwMSwxNzk2LDE5ODcsMjExNCwyMzYwLDI0MjAsMjQ4NCwzMTcwLDMyNTEsNDE0MCw0MzkzLDQ1NzUsNDYxMCw1MTA2LDU1MTIsNTcyOCw2MTE3LDYyNzQsNjMxNSw2MzQ1LDY0MjcsNjUxNiw3MDAyLDc5MTAsODczMyw5MzIzLDk4NzAsMTAxNzAsMTA2MzEsMTA4OTMsMTEzMTgsMTEzODYsMTE0NjcsMTI3NzMsMTMwOTIsMTQ0NzQsMTQ5MjIsMTU0NDgsMTU1NDIsMTY0MTksMTc2NjYsMTgxNjYsMTg2MTEsMTkwMDQsMTkwOTUsMTkyOTgsMTkzOTcsNCwxNiw2OSw3Nyw5Nyw5OCw5OSwxMDIsMTAzLDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDE0MCwxNTAsMTU4LDE2OSwxNzYsMTk0LDE5OSwyMTAsMjE2LDIyMiwyMjYsMjQyLDI1NiwyNjYsMjgzLDI5NCwxMDgsMTA1LDEwMyw1LDE5OCwxLDU5LDE0OCwxLDE5OCw4MCw1LDM4LDEsNTksMTU2LDEsMzgsOTksMTE3LDExNiwxMDEsNSwxOTMsMSw1OSwxNjcsMSwxOTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU4LDQsMiwxMDUsMTIxLDE4MiwxOTEsMTE0LDk5LDUsMTk0LDEsNTksMTg5LDEsMTk0LDU5LDEsMTA0MCwxMTQsNTksMyw1NTM0OSw1NjU4MCwxMTQsOTcsMTE4LDEwMSw1LDE5MiwxLDU5LDIwOCwxLDE5MiwxMTIsMTA0LDk3LDU5LDEsOTEzLDk3LDk5LDExNCw1OSwxLDI1NiwxMDAsNTksMSwxMDgzNSw0LDIsMTAzLDExMiwyMzIsMjM3LDExMSwxMTAsNTksMSwyNjAsMTAyLDU5LDMsNTUzNDksNTY2MzIsMTEyLDEwOCwxMjEsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4Mjg5LDEwNSwxMTAsMTAzLDUsMTk3LDEsNTksMjY0LDEsMTk3LDQsMiw5OSwxMTUsMjcyLDI3NywxMTQsNTksMyw1NTM0OSw1NjQ3NiwxMDUsMTAzLDExMCw1OSwxLDg3ODgsMTA1LDEwOCwxMDAsMTAxLDUsMTk1LDEsNTksMjkyLDEsMTk1LDEwOSwxMDgsNSwxOTYsMSw1OSwzMDEsMSwxOTYsNCw4LDk3LDk5LDEwMSwxMDIsMTExLDExNCwxMTUsMTE3LDMyMSwzNTAsMzU0LDM4MywzODgsMzk0LDQwMCw0MDUsNCwyLDk5LDExNCwzMjcsMzM2LDEwNywxMTUsMTA4LDk3LDExNSwxMDQsNTksMSw4NzI2LDQsMiwxMTgsMTE5LDM0MiwzNDUsNTksMSwxMDk4MywxMDEsMTAwLDU5LDEsODk2NiwxMjEsNTksMSwxMDQxLDQsMyw5OSwxMTQsMTE2LDM2MiwzNjksMzc5LDk3LDExNywxMTUsMTAxLDU5LDEsODc1NywxMTAsMTExLDExNywxMDgsMTA4LDEwNSwxMTUsNTksMSw4NDkyLDk3LDU5LDEsOTE0LDExNCw1OSwzLDU1MzQ5LDU2NTgxLDExMiwxMDIsNTksMyw1NTM0OSw1NjYzMywxMDEsMTE4LDEwMSw1OSwxLDcyOCw5OSwxMTQsNTksMSw4NDkyLDEwOSwxMTIsMTAxLDExMyw1OSwxLDg3ODIsNCwxNCw3Miw3OSw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSwxMTcsNDQyLDQ0Nyw0NTYsNTA0LDU0Miw1NDcsNTY5LDU3Myw1NzcsNjE2LDY3OCw3ODQsNzkwLDc5Niw5OSwxMjEsNTksMSwxMDYzLDgwLDg5LDUsMTY5LDEsNTksNDU0LDEsMTY5LDQsMyw5OSwxMTIsMTIxLDQ2NCw0NzAsNDk3LDExNywxMTYsMTAxLDU5LDEsMjYyLDQsMiw1OSwxMDUsNDc2LDQ3OCwxLDg5MTQsMTE2LDk3LDEwOCw2OCwxMDUsMTAyLDEwMiwxMDEsMTE0LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NTE3LDEwOCwxMDEsMTIxLDExNSw1OSwxLDg0OTMsNCw0LDk3LDEwMSwxMDUsMTExLDUxNCw1MjAsNTMwLDUzNSwxMTQsMTExLDExMCw1OSwxLDI2OCwxMDAsMTA1LDEwOCw1LDE5OSwxLDU5LDUyOCwxLDE5OSwxMTQsOTksNTksMSwyNjQsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1MiwxMTEsMTE2LDU5LDEsMjY2LDQsMiwxMDAsMTEwLDU1Myw1NjAsMTA1LDEwOCwxMDgsOTcsNTksMSwxODQsMTE2LDEwMSwxMTQsNjgsMTExLDExNiw1OSwxLDE4MywxMTQsNTksMSw4NDkzLDEwNSw1OSwxLDkzNSwxMTQsOTksMTA4LDEwMSw0LDQsNjgsNzcsODAsODQsNTkxLDU5Niw2MDMsNjA5LDExMSwxMTYsNTksMSw4ODU3LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NTQsMTA4LDExNywxMTUsNTksMSw4ODUzLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NTUsMTExLDQsMiw5OSwxMTUsNjIzLDY0NiwxMDcsMTE5LDEwNSwxMTUsMTAxLDY3LDExMSwxMTAsMTE2LDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1NCwxMDEsNjcsMTE3LDExNCwxMDgsMTIxLDQsMiw2OCw4MSw2NTgsNjcxLDExMSwxMTcsOTgsMTA4LDEwMSw4MSwxMTcsMTExLDExNiwxMDEsNTksMSw4MjIxLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMTcsNCw0LDEwOCwxMTAsMTEyLDExNyw2ODgsNzAxLDczNiw3NTMsMTExLDExMCw0LDIsNTksMTAxLDY5Niw2OTgsMSw4NzU5LDU5LDEsMTA4NjgsNCwzLDEwMywxMDUsMTE2LDcwOSw3MTcsNzIyLDExNCwxMTcsMTAxLDExMCwxMTYsNTksMSw4ODAxLDExMCwxMTYsNTksMSw4NzUxLDExMSwxMTcsMTE0LDczLDExMCwxMTYsMTAxLDEwMywxMTQsOTcsMTA4LDU5LDEsODc1MCw0LDIsMTAyLDExNCw3NDIsNzQ1LDU5LDEsODQ1MCwxMTEsMTAwLDExNyw5OSwxMTYsNTksMSw4NzIwLDExMCwxMTYsMTAxLDExNCw2NywxMDgsMTExLDk5LDEwNywxMTksMTA1LDExNSwxMDEsNjcsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzU1LDExMSwxMTUsMTE1LDU5LDEsMTA3OTksOTksMTE0LDU5LDMsNTUzNDksNTY0NzgsMTEyLDQsMiw1OSw2Nyw4MDMsODA1LDEsODkxNSw5NywxMTIsNTksMSw4NzgxLDQsMTEsNjgsNzQsODMsOTAsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSw4MzQsODUwLDg1NSw4NjAsODY1LDg4OCw5MDMsOTE2LDkyMSwxMDExLDE0MTUsNCwyLDU5LDExMSw4NDAsODQyLDEsODUxNywxMTYsMTE0LDk3LDEwNCwxMDAsNTksMSwxMDUxMyw5OSwxMjEsNTksMSwxMDI2LDk5LDEyMSw1OSwxLDEwMjksOTksMTIxLDU5LDEsMTAzOSw0LDMsMTAzLDExNCwxMTUsODczLDg3OSw4ODMsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2MDksMTA0LDExOCw1OSwxLDEwOTgwLDQsMiw5NywxMjEsODk0LDkwMCwxMTQsMTExLDExMCw1OSwxLDI3MCw1OSwxLDEwNDQsMTA4LDQsMiw1OSwxMTYsOTEwLDkxMiwxLDg3MTEsOTcsNTksMSw5MTYsMTE0LDU5LDMsNTUzNDksNTY1ODMsNCwyLDk3LDEwMiw5MjcsOTk4LDQsMiw5OSwxMDksOTMzLDk5MiwxMTQsMTA1LDExNiwxMDUsOTksOTcsMTA4LDQsNCw2NSw2OCw3MSw4NCw5NTAsOTU3LDk3OCw5ODUsOTksMTE3LDExNiwxMDEsNTksMSwxODAsMTExLDQsMiwxMTYsMTE3LDk2NCw5NjcsNTksMSw3MjksOTgsMTA4LDEwMSw2NSw5OSwxMTcsMTE2LDEwMSw1OSwxLDczMywxMTQsOTcsMTE4LDEwMSw1OSwxLDk2LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDczMiwxMTEsMTEwLDEwMCw1OSwxLDg5MDAsMTAyLDEwMSwxMTQsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCw2OCw1OSwxLDg1MTgsNCw0LDExMiwxMTYsMTE3LDExOSwxMDIxLDEwMjYsMTA0OCwxMjQ5LDEwMiw1OSwzLDU1MzQ5LDU2NjM1LDQsMyw1OSw2OCw2OSwxMDM0LDEwMzYsMTA0MSwxLDE2OCwxMTEsMTE2LDU5LDEsODQxMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3ODQsOTgsMTA4LDEwMSw0LDYsNjcsNjgsNzYsODIsODUsODYsMTA2NSwxMDgyLDExMDEsMTE4OSwxMjExLDEyMzYsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzUxLDExMSw0LDIsMTE2LDExOSwxMDg5LDEwOTIsNTksMSwxNjgsMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDEwMSwxMTEsMTEwNywxMTQxLDEwMiwxMTYsNCwzLDY1LDgyLDg0LDExMTcsMTEyNCwxMTM2LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTAxLDEwMSw1OSwxLDEwOTgwLDExMCwxMDMsNCwyLDc2LDgyLDExNDksMTE3NywxMDEsMTAyLDExNiw0LDIsNjUsODIsMTE1OCwxMTY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMyLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzNCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzMsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NCwxMTk5LDEyMDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OCwxMDEsMTAxLDU5LDEsODg3MiwxMTIsNCwyLDY1LDY4LDEyMTgsMTIyNSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU3LDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjEsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQxLDExMCw0LDYsNjUsNjYsNzYsODIsODQsOTcsMTI2NCwxMjkyLDEyOTksMTM1MiwxMzkxLDE0MDgsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4NSwxMjc2LDEyNzgsMTI4MywxLDg1OTUsOTcsMTE0LDU5LDEsMTA1MTUsMTEyLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2OTMsMTE0LDEwMSwxMTgsMTAxLDU5LDEsNzg1LDEwMSwxMDIsMTE2LDQsMyw4Miw4NCw4NiwxMzEwLDEzMjMsMTMzNCwxMDUsMTAzLDEwNCwxMTYsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzYsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzNDUsMTM0NywxLDg2MzcsOTcsMTE0LDU5LDEsMTA1ODIsMTA1LDEwMywxMDQsMTE2LDQsMiw4NCw4NiwxMzYyLDEzNzMsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDEzODQsMTM4NiwxLDg2NDEsOTcsMTE0LDU5LDEsMTA1ODMsMTAxLDEwMSw0LDIsNTksNjUsMTM5OSwxNDAxLDEsODg2OCwxMTQsMTE0LDExMSwxMTksNTksMSw4NjE1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTksNCwyLDk5LDExNiwxNDIxLDE0MjYsMTE0LDU5LDMsNTUzNDksNTY0NzksMTE0LDExMSwxMDcsNTksMSwyNzIsNCwxNiw3OCw4NCw5Nyw5OSwxMDAsMTAyLDEwMywxMDgsMTA5LDExMSwxMTIsMTEzLDExNSwxMTYsMTE3LDEyMCwxNDY2LDE0NzAsMTQ3OCwxNDg5LDE1MTUsMTUyMCwxNTI1LDE1MzYsMTU0NCwxNTkzLDE2MDksMTYxNywxNjUwLDE2NjQsMTY2OCwxNjc3LDcxLDU5LDEsMzMwLDcyLDUsMjA4LDEsNTksMTQ3NiwxLDIwOCw5OSwxMTcsMTE2LDEwMSw1LDIwMSwxLDU5LDE0ODcsMSwyMDEsNCwzLDk3LDEwNSwxMjEsMTQ5NywxNTAzLDE1MTIsMTE0LDExMSwxMTAsNTksMSwyODIsMTE0LDk5LDUsMjAyLDEsNTksMTUxMCwxLDIwMiw1OSwxLDEwNjksMTExLDExNiw1OSwxLDI3OCwxMTQsNTksMyw1NTM0OSw1NjU4NCwxMTQsOTcsMTE4LDEwMSw1LDIwMCwxLDU5LDE1MzQsMSwyMDAsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTIsNCwyLDk3LDExMiwxNTUwLDE1NTUsOTksMTE0LDU5LDEsMjc0LDExNiwxMjEsNCwyLDgzLDg2LDE1NjMsMTU3NiwxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NzIzLDEwMSwxMTQsMTIxLDgzLDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDMsNCwyLDEwMywxMTIsMTU5OSwxNjA0LDExMSwxMTAsNTksMSwyODAsMTAyLDU5LDMsNTUzNDksNTY2MzYsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDkxNywxMTcsNCwyLDk3LDEwNSwxNjI0LDE2NDAsMTA4LDQsMiw1OSw4NCwxNjMxLDE2MzMsMSwxMDg2OSwxMDUsMTA4LDEwMCwxMDEsNTksMSw4NzcwLDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsODY1Miw0LDIsOTksMTA1LDE2NTYsMTY2MCwxMTQsNTksMSw4NDk2LDEwOSw1OSwxLDEwODY3LDk3LDU5LDEsOTE5LDEwOSwxMDgsNSwyMDMsMSw1OSwxNjc1LDEsMjAzLDQsMiwxMDUsMTEyLDE2ODMsMTY4OSwxMTUsMTE2LDExNSw1OSwxLDg3MDcsMTExLDExMCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDY5LDU5LDEsODUxOSw0LDUsOTksMTAyLDEwNSwxMTEsMTE1LDE3MTMsMTcxNywxNzIyLDE3NjIsMTc5MSwxMjEsNTksMSwxMDYwLDExNCw1OSwzLDU1MzQ5LDU2NTg1LDEwOCwxMDgsMTAxLDEwMCw0LDIsODMsODYsMTczMiwxNzQ1LDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk3MjQsMTAxLDExNCwxMjEsODMsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTY0Miw0LDMsMTEyLDExNCwxMTcsMTc3MCwxNzc1LDE3ODEsMTAyLDU5LDMsNTUzNDksNTY2MzcsNjUsMTA4LDEwOCw1OSwxLDg3MDQsMTE0LDEwNSwxMDEsMTE0LDExNiwxMTQsMTAyLDU5LDEsODQ5Nyw5OSwxMTQsNTksMSw4NDk3LDQsMTIsNzQsODQsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTExLDExNCwxMTUsMTE2LDE4MjIsMTgyNywxODM0LDE4NDgsMTg1NSwxODc3LDE4ODIsMTg4NywxODkwLDE4OTYsMTk3OCwxOTg0LDk5LDEyMSw1OSwxLDEwMjcsNSw2MiwxLDU5LDE4MzIsMSw2MiwxMDksMTA5LDk3LDQsMiw1OSwxMDAsMTg0MywxODQ1LDEsOTE1LDU5LDEsOTg4LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Niw0LDMsMTAxLDEwNSwxMjEsMTg2MywxODY5LDE4NzQsMTAwLDEwNSwxMDgsNTksMSwyOTAsMTE0LDk5LDU5LDEsMjg0LDU5LDEsMTA0MywxMTEsMTE2LDU5LDEsMjg4LDExNCw1OSwzLDU1MzQ5LDU2NTg2LDU5LDEsODkyMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2MzgsMTAxLDk3LDExNiwxMDEsMTE0LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwxOTE1LDE5MzMsMTk0NCwxOTUzLDE5NTksMTk3MSwxMTMsMTE3LDk3LDEwOCw0LDIsNTksNzYsMTkyNSwxOTI3LDEsODgwNSwxMDEsMTE1LDExNSw1OSwxLDg5MjMsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODA3LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSwxMDkxNCwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSwxMDg3OCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODE5LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDgyLDU5LDEsODgxMSw0LDgsNjUsOTcsOTksMTAyLDEwNSwxMTEsMTE1LDExNywyMDA1LDIwMTIsMjAyNiwyMDMyLDIwMzYsMjA0OSwyMDczLDIwODksODIsNjgsOTksMTIxLDU5LDEsMTA2Niw0LDIsOTksMTE2LDIwMTgsMjAyMywxMDEsMTA3LDU5LDEsNzExLDU5LDEsOTQsMTA1LDExNCw5OSw1OSwxLDI5MiwxMTQsNTksMSw4NDYwLDEwOCw5OCwxMDEsMTE0LDExNiw4MywxMTIsOTcsOTksMTAxLDU5LDEsODQ1OSw0LDIsMTEyLDExNCwyMDU1LDIwNTksMTAyLDU5LDEsODQ2MSwxMDUsMTIyLDExMSwxMTAsMTE2LDk3LDEwOCw3NiwxMDUsMTEwLDEwMSw1OSwxLDk0NzIsNCwyLDk5LDExNiwyMDc5LDIwODMsMTE0LDU5LDEsODQ1OSwxMTQsMTExLDEwNyw1OSwxLDI5NCwxMDksMTEyLDQsMiw2OCw2OSwyMDk3LDIxMDcsMTExLDExOSwxMTAsNzIsMTE3LDEwOSwxMTIsNTksMSw4NzgyLDExMywxMTcsOTcsMTA4LDU5LDEsODc4Myw0LDE0LDY5LDc0LDc5LDk3LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExNSwxMTYsMTE3LDIxNDQsMjE0OSwyMTU1LDIxNjAsMjE3MSwyMTg5LDIxOTQsMjE5OCwyMjA5LDIyNDUsMjMwNywyMzI5LDIzMzQsMjM0MSw5OSwxMjEsNTksMSwxMDQ1LDEwOCwxMDUsMTAzLDU5LDEsMzA2LDk5LDEyMSw1OSwxLDEwMjUsOTksMTE3LDExNiwxMDEsNSwyMDUsMSw1OSwyMTY5LDEsMjA1LDQsMiwxMDUsMTIxLDIxNzcsMjE4NiwxMTQsOTksNSwyMDYsMSw1OSwyMTg0LDEsMjA2LDU5LDEsMTA0OCwxMTEsMTE2LDU5LDEsMzA0LDExNCw1OSwxLDg0NjUsMTE0LDk3LDExOCwxMDEsNSwyMDQsMSw1OSwyMjA3LDEsMjA0LDQsMyw1OSw5NywxMTIsMjIxNywyMjE5LDIyMzgsMSw4NDY1LDQsMiw5OSwxMDMsMjIyNSwyMjI5LDExNCw1OSwxLDI5OCwxMDUsMTEwLDk3LDExNCwxMjEsNzMsNTksMSw4NTIwLDEwOCwxMDUsMTAxLDExNSw1OSwxLDg2NTgsNCwyLDExNiwxMTgsMjI1MSwyMjgxLDQsMiw1OSwxMDEsMjI1NywyMjU5LDEsODc0OCw0LDIsMTAzLDExNCwyMjY1LDIyNzEsMTE0LDk3LDEwOCw1OSwxLDg3NDcsMTE1LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4ODk4LDEwNSwxMTUsMTA1LDk4LDEwOCwxMDEsNCwyLDY3LDg0LDIyOTMsMjMwMCwxMTEsMTA5LDEwOSw5Nyw1OSwxLDgyOTEsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODI5MCw0LDMsMTAzLDExMiwxMTYsMjMxNSwyMzIwLDIzMjUsMTExLDExMCw1OSwxLDMwMiwxMDIsNTksMyw1NTM0OSw1NjY0MCw5Nyw1OSwxLDkyMSw5OSwxMTQsNTksMSw4NDY0LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDI5Niw0LDIsMTA3LDEwOSwyMzQ3LDIzNTIsOTksMTIxLDU5LDEsMTAzMCwxMDgsNSwyMDcsMSw1OSwyMzU4LDEsMjA3LDQsNSw5OSwxMDIsMTExLDExNSwxMTcsMjM3MiwyMzg2LDIzOTEsMjM5NywyNDE0LDQsMiwxMDUsMTIxLDIzNzgsMjM4MywxMTQsOTksNTksMSwzMDgsNTksMSwxMDQ5LDExNCw1OSwzLDU1MzQ5LDU2NTg5LDExMiwxMDIsNTksMyw1NTM0OSw1NjY0MSw0LDIsOTksMTAxLDI0MDMsMjQwOCwxMTQsNTksMyw1NTM0OSw1NjQ4NSwxMTQsOTksMTIxLDU5LDEsMTAzMiwxMDcsOTksMTIxLDU5LDEsMTAyOCw0LDcsNzIsNzQsOTcsOTksMTAyLDExMSwxMTUsMjQzNiwyNDQxLDI0NDYsMjQ1MiwyNDY3LDI0NzIsMjQ3OCw5OSwxMjEsNTksMSwxMDYxLDk5LDEyMSw1OSwxLDEwMzYsMTEyLDExMiw5Nyw1OSwxLDkyMiw0LDIsMTAxLDEyMSwyNDU4LDI0NjQsMTAwLDEwNSwxMDgsNTksMSwzMTAsNTksMSwxMDUwLDExNCw1OSwzLDU1MzQ5LDU2NTkwLDExMiwxMDIsNTksMyw1NTM0OSw1NjY0Miw5OSwxMTQsNTksMyw1NTM0OSw1NjQ4Niw0LDExLDc0LDg0LDk3LDk5LDEwMSwxMDIsMTA4LDEwOSwxMTEsMTE1LDExNiwyNTA4LDI1MTMsMjUyMCwyNTYyLDI1ODUsMjk4MSwyOTg2LDMwMDQsMzAxMSwzMTQ2LDMxNjcsOTksMTIxLDU5LDEsMTAzMyw1LDYwLDEsNTksMjUxOCwxLDYwLDQsNSw5OSwxMDksMTEwLDExMiwxMTQsMjUzMiwyNTM4LDI1NDQsMjU0OCwyNTU4LDExNywxMTYsMTAxLDU5LDEsMzEzLDk4LDEwMCw5Nyw1OSwxLDkyMywxMDMsNTksMSwxMDIxOCwxMDgsOTcsOTksMTAxLDExNiwxMTQsMTAyLDU5LDEsODQ2NiwxMTQsNTksMSw4NjA2LDQsMyw5NywxMDEsMTIxLDI1NzAsMjU3NiwyNTgyLDExNCwxMTEsMTEwLDU5LDEsMzE3LDEwMCwxMDUsMTA4LDU5LDEsMzE1LDU5LDEsMTA1MSw0LDIsMTAyLDExNSwyNTkxLDI5MDcsMTE2LDQsMTAsNjUsNjcsNjgsNzAsODIsODQsODUsODYsOTcsMTE0LDI2MTQsMjY2MywyNjcyLDI3MjgsMjczNSwyNzYwLDI4MjAsMjg3MCwyODg4LDI4OTUsNCwyLDExMCwxMTQsMjYyMCwyNjMzLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE2LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw4MiwyNjQ0LDI2NDYsMjY1MSwxLDg1OTIsOTcsMTE0LDU5LDEsODY3NiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NiwxMDEsMTA1LDEwOCwxMDUsMTEwLDEwMyw1OSwxLDg5NjgsMTExLDQsMiwxMTcsMTE5LDI2NzksMjY5Miw5OCwxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE0LDExMCw0LDIsODQsODYsMjY5OSwyNzEwLDEwMSwxMDEsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1OTMsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyNzIxLDI3MjMsMSw4NjQzLDk3LDExNCw1OSwxLDEwNTg1LDEwOCwxMTEsMTExLDExNCw1OSwxLDg5NzAsMTA1LDEwMywxMDQsMTE2LDQsMiw2NSw4NiwyNzQ1LDI3NTIsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NCw0LDIsMTAxLDExNCwyNzY2LDI3OTIsMTAxLDQsMyw1OSw2NSw4NiwyNzc1LDI3NzcsMjc4NCwxLDg4NjcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxMiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NiwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSwyODA2LDI4MDgsMjgxMywxLDg4ODIsOTcsMTE0LDU5LDEsMTA3MDMsMTEzLDExNyw5NywxMDgsNTksMSw4ODg0LDExMiw0LDMsNjgsODQsODYsMjgyOSwyODQxLDI4NTIsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MiwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDI4NjMsMjg2NSwxLDg2MzksOTcsMTE0LDU5LDEsMTA1ODQsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2NiwyODgxLDI4ODMsMSw4NjM2LDk3LDExNCw1OSwxLDEwNTc4LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTYsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjAsMTE1LDQsNiw2OSw3MCw3MSw3Niw4Myw4NCwyOTIyLDI5MzYsMjk0NywyOTU2LDI5NjIsMjk3NCwxMTMsMTE3LDk3LDEwOCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODkyMiwxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MDYsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg4MjIsMTAxLDExNSwxMTUsNTksMSwxMDkxMywxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDEwODc3LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MTgsMTE0LDU5LDMsNTUzNDksNTY1OTEsNCwyLDU5LDEwMSwyOTkyLDI5OTQsMSw4OTIwLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2NiwxMDUsMTAwLDExMSwxMTYsNTksMSwzMTksNCwzLDExMCwxMTIsMTE5LDMwMTksMzExMCwzMTE1LDEwMyw0LDQsNzYsODIsMTA4LDExNCwzMDMwLDMwNTgsMzA3MCwzMDk4LDEwMSwxMDIsMTE2LDQsMiw2NSw4MiwzMDM5LDMwNDYsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMDEsMTAyLDExNiw0LDIsOTcsMTE0LDMwNzksMzA4NiwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzQsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMzLDEwMiw1OSwzLDU1MzQ5LDU2NjQzLDEwMSwxMTQsNCwyLDc2LDgyLDMxMjMsMzEzNCwxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAxLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAwLDQsMyw5OSwxMDQsMTE2LDMxNTQsMzE1OCwzMTYxLDExNCw1OSwxLDg0NjYsNTksMSw4NjI0LDExNCwxMTEsMTA3LDU5LDEsMzIxLDU5LDEsODgxMCw0LDgsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSwxMTcsMzE4OCwzMTkyLDMxOTYsMzIyMiwzMjI3LDMyMzcsMzI0MywzMjQ4LDExMiw1OSwxLDEwNTAxLDEyMSw1OSwxLDEwNTIsNCwyLDEwMCwxMDgsMzIwMiwzMjEzLDEwNSwxMTcsMTA5LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4Mjg3LDEwOCwxMDUsMTEwLDExNiwxMTQsMTAyLDU5LDEsODQ5OSwxMTQsNTksMyw1NTM0OSw1NjU5MiwxMTAsMTE3LDExNSw4MCwxMDgsMTE3LDExNSw1OSwxLDg3MjMsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQ0LDk5LDExNCw1OSwxLDg0OTksNTksMSw5MjQsNCw5LDc0LDk3LDk5LDEwMSwxMDIsMTExLDExNSwxMTYsMTE3LDMyNzEsMzI3NiwzMjgzLDMzMDYsMzQyMiwzNDI3LDQxMjAsNDEyNiw0MTM3LDk5LDEyMSw1OSwxLDEwMzQsOTksMTE3LDExNiwxMDEsNTksMSwzMjMsNCwzLDk3LDEwMSwxMjEsMzI5MSwzMjk3LDMzMDMsMTE0LDExMSwxMTAsNTksMSwzMjcsMTAwLDEwNSwxMDgsNTksMSwzMjUsNTksMSwxMDUzLDQsMywxMDMsMTE1LDExOSwzMzE0LDMzODAsMzQxNSw5NywxMTYsMTA1LDExOCwxMDEsNCwzLDc3LDg0LDg2LDMzMjcsMzM0MCwzMzY1LDEwMSwxMDAsMTA1LDExNywxMDksODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTA0LDEwNSw0LDIsOTksMTEwLDMzNDgsMzM1NywxMDcsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTAxLDExNCwxMjEsODQsMTA0LDEwNSwxMTAsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsMTE2LDEwMSwxMDAsNCwyLDcxLDc2LDMzODksMzQwNSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDcxLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODExLDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDEsODgxMCw3NiwxMDUsMTEwLDEwMSw1OSwxLDEwLDExNCw1OSwzLDU1MzQ5LDU2NTkzLDQsNCw2NiwxMTAsMTEyLDExNiwzNDM3LDM0NDQsMzQ2MCwzNDY0LDExNCwxMDEsOTcsMTA3LDU5LDEsODI4OCw2NiwxMTQsMTAxLDk3LDEwNywxMDUsMTEwLDEwMyw4MywxMTIsOTcsOTksMTAxLDU5LDEsMTYwLDEwMiw1OSwxLDg0NjksNCwxMyw1OSw2Nyw2OCw2OSw3MSw3Miw3Niw3OCw4MCw4Miw4Myw4NCw4NiwzNDkyLDM0OTQsMzUxNywzNTM2LDM1NzgsMzY1NywzNjg1LDM3ODQsMzgyMywzODYwLDM5MTUsNDA2Niw0MTA3LDEsMTA5ODgsNCwyLDExMSwxMTcsMzUwMCwzNTEwLDExMCwxMDMsMTE0LDExNywxMDEsMTEwLDExNiw1OSwxLDg4MDIsMTEyLDY3LDk3LDExMiw1OSwxLDg4MTMsMTExLDExNyw5OCwxMDgsMTAxLDg2LDEwMSwxMTQsMTE2LDEwNSw5OSw5NywxMDgsNjYsOTcsMTE0LDU5LDEsODc0Miw0LDMsMTA4LDExMywxMjAsMzU0NCwzNTUyLDM1NzEsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTMsMTE3LDk3LDEwOCw0LDIsNTksODQsMzU2MSwzNTYzLDEsODgwMCwxMDUsMTA4LDEwMCwxMDEsNTksMyw4NzcwLDgyNCwxMDUsMTE1LDExNiwxMTUsNTksMSw4NzA4LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNCw3LDU5LDY5LDcwLDcxLDc2LDgzLDg0LDM2MDAsMzYwMiwzNjA5LDM2MjEsMzYzMSwzNjM3LDM2NTAsMSw4ODE1LDExMywxMTcsOTcsMTA4LDU5LDEsODgxNywxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwzLDg4MDcsODI0LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMyw4ODExLDgyNCwxMDEsMTE1LDExNSw1OSwxLDg4MjUsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3OCw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMSwxMTcsMTA5LDExMiw0LDIsNjgsNjksMzY2NiwzNjc3LDExMSwxMTksMTEwLDcyLDExNywxMDksMTEyLDU5LDMsODc4Miw4MjQsMTEzLDExNyw5NywxMDgsNTksMyw4NzgzLDgyNCwxMDEsNCwyLDEwMiwxMTUsMzY5MiwzNzI0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzcwOSwzNzExLDM3MTcsMSw4OTM4LDk3LDExNCw1OSwzLDEwNzAzLDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDAsMTE1LDQsNiw1OSw2OSw3MSw3Niw4Myw4NCwzNzM5LDM3NDEsMzc0OCwzNzU3LDM3NjQsMzc3NywxLDg4MTQsMTEzLDExNyw5NywxMDgsNTksMSw4ODE2LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4ODI0LDEwMSwxMTUsMTE1LDU5LDMsODgxMCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMywxMDg3Nyw4MjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgyMCwxMDEsMTE1LDExNiwxMDEsMTAwLDQsMiw3MSw3NiwzNzk1LDM4MTIsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw3MSwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDMsMTA5MTQsODI0LDEwMSwxMTUsMTE1LDc2LDEwMSwxMTUsMTE1LDU5LDMsMTA5MTMsODI0LDExNCwxMDEsOTksMTAxLDEwMCwxMDEsMTE1LDQsMyw1OSw2OSw4MywzODM4LDM4NDAsMzg0OCwxLDg4MzIsMTEzLDExNyw5NywxMDgsNTksMywxMDkyNyw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI4LDQsMiwxMDEsMTA1LDM4NjYsMzg4MSwxMTgsMTAxLDExNCwxMTUsMTAxLDY5LDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxNiwxMDMsMTA0LDExNiw4NCwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDMsNTksNjYsNjksMzkwMCwzOTAyLDM5MDgsMSw4OTM5LDk3LDExNCw1OSwzLDEwNzA0LDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5NDEsNCwyLDExMywxMTcsMzkyMSwzOTczLDExNyw5NywxMTQsMTAxLDgzLDExNyw0LDIsOTgsMTEyLDM5MzMsMzk1MiwxMTUsMTAxLDExNiw0LDIsNTksNjksMzk0MiwzOTQ1LDMsODg0Nyw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTMwLDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDM5NjMsMzk2NiwzLDg4NDgsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODkzMSw0LDMsOTgsOTksMTEyLDM5ODEsNDAwMCw0MDQ1LDExNSwxMDEsMTE2LDQsMiw1OSw2OSwzOTkwLDM5OTMsMyw4ODM0LDg0MDIsMTEzLDExNyw5NywxMDgsNTksMSw4ODQwLDk5LDEwMSwxMDEsMTAwLDExNSw0LDQsNTksNjksODMsODQsNDAxNSw0MDE3LDQwMjUsNDAzNywxLDg4MzMsMTEzLDExNyw5NywxMDgsNTksMywxMDkyOCw4MjQsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4OTI5LDEwNSwxMDgsMTAwLDEwMSw1OSwzLDg4MzEsODI0LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDQwNTYsNDA1OSwzLDg4MzUsODQwMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NDEsMTA1LDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw0MDgwLDQwODIsNDA4OSw0MTAwLDEsODc2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzIsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4Nzc1LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzcsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQwLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDg5LDEwNSwxMDgsMTAwLDEwMSw1LDIwOSwxLDU5LDQxMzUsMSwyMDksNTksMSw5MjUsNCwxNCw2OSw5Nyw5OSwxMDAsMTAyLDEwMywxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDQxNzAsNDE3Niw0MTg3LDQyMDUsNDIxMiw0MjE3LDQyMjgsNDI1Myw0MjU5LDQyOTIsNDI5NSw0MzE2LDQzMzcsNDM0NiwxMDgsMTA1LDEwMyw1OSwxLDMzOCw5OSwxMTcsMTE2LDEwMSw1LDIxMSwxLDU5LDQxODUsMSwyMTEsNCwyLDEwNSwxMjEsNDE5Myw0MjAyLDExNCw5OSw1LDIxMiwxLDU5LDQyMDAsMSwyMTIsNTksMSwxMDU0LDk4LDEwOCw5Nyw5OSw1OSwxLDMzNiwxMTQsNTksMyw1NTM0OSw1NjU5NCwxMTQsOTcsMTE4LDEwMSw1LDIxMCwxLDU5LDQyMjYsMSwyMTAsNCwzLDk3LDEwMSwxMDUsNDIzNiw0MjQxLDQyNDYsOTksMTE0LDU5LDEsMzMyLDEwMyw5Nyw1OSwxLDkzNyw5OSwxMTQsMTExLDExMCw1OSwxLDkyNywxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDYsMTAxLDExMCw2NywxMTcsMTE0LDEwOCwxMjEsNCwyLDY4LDgxLDQyNzIsNDI4NSwxMTEsMTE3LDk4LDEwOCwxMDEsODEsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIyMCwxMTcsMTExLDExNiwxMDEsNTksMSw4MjE2LDU5LDEsMTA4MzYsNCwyLDk5LDEwOCw0MzAxLDQzMDYsMTE0LDU5LDMsNTUzNDksNTY0OTAsOTcsMTE1LDEwNCw1LDIxNiwxLDU5LDQzMTQsMSwyMTYsMTA1LDQsMiwxMDgsMTA5LDQzMjMsNDMzMiwxMDAsMTAxLDUsMjEzLDEsNTksNDMzMCwxLDIxMywxMDEsMTE1LDU5LDEsMTA4MDcsMTA5LDEwOCw1LDIxNCwxLDU5LDQzNDQsMSwyMTQsMTAxLDExNCw0LDIsNjYsODAsNDM1NCw0MzgwLDQsMiw5NywxMTQsNDM2MCw0MzY0LDExNCw1OSwxLDgyNTQsOTcsOTksNCwyLDEwMSwxMDcsNDM3Miw0Mzc1LDU5LDEsOTE4MiwxMDEsMTE2LDU5LDEsOTE0MCw5NywxMTQsMTAxLDExMCwxMTYsMTA0LDEwMSwxMTUsMTA1LDExNSw1OSwxLDkxODAsNCw5LDk3LDk5LDEwMiwxMDQsMTA1LDEwOCwxMTEsMTE0LDExNSw0NDEzLDQ0MjIsNDQyNiw0NDMxLDQ0MzUsNDQzOCw0NDQ4LDQ0NzEsNDU2MSwxMTQsMTE2LDEwNSw5NywxMDgsNjgsNTksMSw4NzA2LDEyMSw1OSwxLDEwNTUsMTE0LDU5LDMsNTUzNDksNTY1OTUsMTA1LDU5LDEsOTM0LDU5LDEsOTI4LDExNywxMTUsNzcsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTc3LDQsMiwxMDUsMTEyLDQ0NTQsNDQ2NywxMTAsOTksOTcsMTE0LDEwMSwxMTIsMTA4LDk3LDExMCwxMDEsNTksMSw4NDYwLDEwMiw1OSwxLDg0NzMsNCw0LDU5LDEwMSwxMDUsMTExLDQ0ODEsNDQ4Myw0NTI2LDQ1MzEsMSwxMDkzOSw5OSwxMDEsMTAwLDEwMSwxMTUsNCw0LDU5LDY5LDgzLDg0LDQ0OTgsNDUwMCw0NTA3LDQ1MTksMSw4ODI2LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjcsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI4LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzAsMTA5LDEwMSw1OSwxLDgyNDMsNCwyLDEwMCwxMTIsNDUzNyw0NTQzLDExNyw5OSwxMTYsNTksMSw4NzE5LDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDQsMiw1OSw5Nyw0NTU1LDQ1NTcsMSw4NzU5LDEwOCw1OSwxLDg3MzMsNCwyLDk5LDEwNSw0NTY3LDQ1NzIsMTE0LDU5LDMsNTUzNDksNTY0OTEsNTksMSw5MzYsNCw0LDg1LDEwMiwxMTEsMTE1LDQ1ODUsNDU5NCw0NTk5LDQ2MDQsNzksODQsNSwzNCwxLDU5LDQ1OTIsMSwzNCwxMTQsNTksMyw1NTM0OSw1NjU5NiwxMTIsMTAyLDU5LDEsODQ3NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5Miw0LDEyLDY2LDY5LDk3LDk5LDEwMSwxMDIsMTA0LDEwNSwxMTEsMTE0LDExNSwxMTcsNDYzNiw0NjQyLDQ2NTAsNDY4MSw0NzA0LDQ3NjMsNDc2Nyw0NzcxLDUwNDcsNTA2OSw1MDgxLDUwOTQsOTcsMTE0LDExNCw1OSwxLDEwNTEyLDcxLDUsMTc0LDEsNTksNDY0OCwxLDE3NCw0LDMsOTksMTEwLDExNCw0NjU4LDQ2NjQsNDY2OCwxMTcsMTE2LDEwMSw1OSwxLDM0MCwxMDMsNTksMSwxMDIxOSwxMTQsNCwyLDU5LDExNiw0Njc1LDQ2NzcsMSw4NjA4LDEwOCw1OSwxLDEwNTE4LDQsMyw5NywxMDEsMTIxLDQ2ODksNDY5NSw0NzAxLDExNCwxMTEsMTEwLDU5LDEsMzQ0LDEwMCwxMDUsMTA4LDU5LDEsMzQyLDU5LDEsMTA1Niw0LDIsNTksMTE4LDQ3MTAsNDcxMiwxLDg0NzYsMTAxLDExNCwxMTUsMTAxLDQsMiw2OSw4NSw0NzIyLDQ3NDgsNCwyLDEwOCwxMTMsNDcyOCw0NzM2LDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzE1LDExNywxMDUsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSw4NjUxLDExMiw2OSwxMTMsMTE3LDEwNSwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDEwNjA3LDExNCw1OSwxLDg0NzYsMTExLDU5LDEsOTI5LDEwMywxMDQsMTE2LDQsOCw2NSw2Nyw2OCw3MCw4NCw4NSw4Niw5Nyw0NzkyLDQ4NDAsNDg0OSw0OTA1LDQ5MTIsNDk3Miw1MDIyLDUwNDAsNCwyLDExMCwxMTQsNDc5OCw0ODExLDEwMywxMDgsMTAxLDY2LDExNCw5Nyw5OSwxMDcsMTAxLDExNiw1OSwxLDEwMjE3LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw3Niw0ODIyLDQ4MjQsNDgyOSwxLDg1OTQsOTcsMTE0LDU5LDEsODY3NywxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjQ0LDEwMSwxMDUsMTA4LDEwNSwxMTAsMTAzLDU5LDEsODk2OSwxMTEsNCwyLDExNywxMTksNDg1Niw0ODY5LDk4LDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTUsMTEwLDQsMiw4NCw4Niw0ODc2LDQ4ODcsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OSwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDQ4OTgsNDkwMCwxLDg2NDIsOTcsMTE0LDU5LDEsMTA1ODEsMTA4LDExMSwxMTEsMTE0LDU5LDEsODk3MSw0LDIsMTAxLDExNCw0OTE4LDQ5NDQsMTAxLDQsMyw1OSw2NSw4Niw0OTI3LDQ5MjksNDkzNiwxLDg4NjYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNCwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4NywxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSw0OTU4LDQ5NjAsNDk2NSwxLDg4ODMsOTcsMTE0LDU5LDEsMTA3MDQsMTEzLDExNyw5NywxMDgsNTksMSw4ODg1LDExMiw0LDMsNjgsODQsODYsNDk4MSw0OTkzLDUwMDQsMTExLDExOSwxMTAsODYsMTAxLDk5LDExNiwxMTEsMTE0LDU5LDEsMTA1NzUsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU4OCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDUwMTUsNTAxNywxLDg2MzgsOTcsMTE0LDU5LDEsMTA1ODAsMTAxLDk5LDExNiwxMTEsMTE0LDQsMiw1OSw2Niw1MDMzLDUwMzUsMSw4NjQwLDk3LDExNCw1OSwxLDEwNTc5LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTgsNCwyLDExMiwxMTcsNTA1Myw1MDU3LDEwMiw1OSwxLDg0NzcsMTEwLDEwMCw3MywxMDksMTEyLDEwOCwxMDUsMTAxLDExNSw1OSwxLDEwNjA4LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjY3LDQsMiw5OSwxMDQsNTA4Nyw1MDkxLDExNCw1OSwxLDg0NzUsNTksMSw4NjI1LDEwOCwxMDEsNjgsMTAxLDEwOCw5NywxMjEsMTAxLDEwMCw1OSwxLDEwNzQwLDQsMTMsNzIsNzksOTcsOTksMTAyLDEwNCwxMDUsMTA5LDExMSwxMTMsMTE1LDExNiwxMTcsNTEzNCw1MTUwLDUxNTcsNTE2NCw1MTk4LDUyMDMsNTI1OSw1MjY1LDUyNzcsNTI4Myw1Mzc0LDUzODAsNTM4NSw0LDIsNjcsOTksNTE0MCw1MTQ2LDcyLDk5LDEyMSw1OSwxLDEwNjUsMTIxLDU5LDEsMTA2NCw3MCw4NCw5OSwxMjEsNTksMSwxMDY4LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ2LDQsNSw1OSw5NywxMDEsMTA1LDEyMSw1MTc2LDUxNzgsNTE4NCw1MTkwLDUxOTUsMSwxMDk0MCwxMTQsMTExLDExMCw1OSwxLDM1MiwxMDAsMTA1LDEwOCw1OSwxLDM1MCwxMTQsOTksNTksMSwzNDgsNTksMSwxMDU3LDExNCw1OSwzLDU1MzQ5LDU2NTk4LDExMSwxMTQsMTE2LDQsNCw2OCw3Niw4Miw4NSw1MjE2LDUyMjcsNTIzOCw1MjUwLDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTUsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NCwxMTIsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5MywxMDMsMTA5LDk3LDU5LDEsOTMxLDk3LDEwOCwxMDgsNjcsMTA1LDExNCw5OSwxMDgsMTAxLDU5LDEsODcyOCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTAsNCwyLDExNCwxMTcsNTI4OSw1MjkzLDExNiw1OSwxLDg3MzAsOTcsMTE0LDEwMSw0LDQsNTksNzMsODMsODUsNTMwNiw1MzA4LDUzMjIsNTM2NywxLDk2MzMsMTEwLDExNiwxMDEsMTE0LDExNSwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDU5LDEsODg1MSwxMTcsNCwyLDk4LDExMiw1MzI5LDUzNDcsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzMzgsNTM0MCwxLDg4NDcsMTEzLDExNyw5NywxMDgsNTksMSw4ODQ5LDEwMSwxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDUzNTgsNTM2MCwxLDg4NDgsMTEzLDExNyw5NywxMDgsNTksMSw4ODUwLDExMCwxMDUsMTExLDExMCw1OSwxLDg4NTIsOTksMTE0LDU5LDMsNTUzNDksNTY0OTQsOTcsMTE0LDU5LDEsODkwMiw0LDQsOTgsOTksMTA5LDExMiw1Mzk1LDU0MjAsNTQ3NSw1NDc4LDQsMiw1OSwxMTUsNTQwMSw1NDAzLDEsODkxMiwxMDEsMTE2LDQsMiw1OSw2OSw1NDExLDU0MTMsMSw4OTEyLDExMywxMTcsOTcsMTA4LDU5LDEsODgzOCw0LDIsOTksMTA0LDU0MjYsNTQ2OCwxMDEsMTAxLDEwMCwxMTUsNCw0LDU5LDY5LDgzLDg0LDU0NDAsNTQ0Miw1NDQ5LDU0NjEsMSw4ODI3LDExMywxMTcsOTcsMTA4LDU5LDEsMTA5MjgsMTA4LDk3LDExMCwxMTYsNjksMTEzLDExNyw5NywxMDgsNTksMSw4ODI5LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MzEsODQsMTA0LDk3LDExNiw1OSwxLDg3MTUsNTksMSw4NzIxLDQsMyw1OSwxMDEsMTE1LDU0ODYsNTQ4OCw1NTA3LDEsODkxMywxMTQsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDU0OTgsNTUwMCwxLDg4MzUsMTEzLDExNyw5NywxMDgsNTksMSw4ODM5LDEwMSwxMTYsNTksMSw4OTEzLDQsMTEsNzIsODIsODMsOTcsOTksMTAyLDEwNCwxMDUsMTExLDExNCwxMTUsNTUzNiw1NTQ2LDU1NTIsNTU2Nyw1NTc5LDU2MDIsNTYwNyw1NjU1LDU2OTUsNTcwMSw1NzExLDc5LDgyLDc4LDUsMjIyLDEsNTksNTU0NCwxLDIyMiw2NSw2OCw2OSw1OSwxLDg0ODIsNCwyLDcyLDk5LDU1NTgsNTU2Myw5OSwxMjEsNTksMSwxMDM1LDEyMSw1OSwxLDEwNjIsNCwyLDk4LDExNyw1NTczLDU1NzYsNTksMSw5LDU5LDEsOTMyLDQsMyw5NywxMDEsMTIxLDU1ODcsNTU5Myw1NTk5LDExNCwxMTEsMTEwLDU5LDEsMzU2LDEwMCwxMDUsMTA4LDU5LDEsMzU0LDU5LDEsMTA1OCwxMTQsNTksMyw1NTM0OSw1NjU5OSw0LDIsMTAxLDEwNSw1NjEzLDU2MzEsNCwyLDExNCwxMTYsNTYxOSw1NjI3LDEwMSwxMDIsMTExLDExNCwxMDEsNTksMSw4NzU2LDk3LDU5LDEsOTIwLDQsMiw5OSwxMTAsNTYzNyw1NjQ3LDEwNyw4MywxMTIsOTcsOTksMTAxLDU5LDMsODI4Nyw4MjAyLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAxLDEwOCwxMDAsMTAxLDQsNCw1OSw2OSw3MCw4NCw1NjY4LDU2NzAsNTY3Nyw1Njg4LDEsODc2NCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzEsMTE3LDEwOCwxMDgsNjksMTEzLDExNyw5NywxMDgsNTksMSw4NzczLDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjUxLDEwNSwxMTIsMTA4LDEwMSw2OCwxMTEsMTE2LDU5LDEsODQxMSw0LDIsOTksMTE2LDU3MTcsNTcyMiwxMTQsNTksMyw1NTM0OSw1NjQ5NSwxMTQsMTExLDEwNyw1OSwxLDM1OCw0LDE0LDk3LDk4LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsNTc1OCw1Nzg5LDU4MDUsNTgyMyw1ODMwLDU4MzUsNTg0Niw1ODUyLDU5MjEsNTkzNyw2MDg5LDYwOTUsNjEwMSw2MTA4LDQsMiw5OSwxMTQsNTc2NCw1Nzc0LDExNywxMTYsMTAxLDUsMjE4LDEsNTksNTc3MiwxLDIxOCwxMTQsNCwyLDU5LDExMSw1NzgxLDU3ODMsMSw4NjA3LDk5LDEwNSwxMTQsNTksMSwxMDU2OSwxMTQsNCwyLDk5LDEwMSw1Nzk2LDU4MDAsMTIxLDU5LDEsMTAzOCwxMTgsMTAxLDU5LDEsMzY0LDQsMiwxMDUsMTIxLDU4MTEsNTgyMCwxMTQsOTksNSwyMTksMSw1OSw1ODE4LDEsMjE5LDU5LDEsMTA1OSw5OCwxMDgsOTcsOTksNTksMSwzNjgsMTE0LDU5LDMsNTUzNDksNTY2MDAsMTE0LDk3LDExOCwxMDEsNSwyMTcsMSw1OSw1ODQ0LDEsMjE3LDk3LDk5LDExNCw1OSwxLDM2Miw0LDIsMTAwLDEwNSw1ODU4LDU5MDUsMTAxLDExNCw0LDIsNjYsODAsNTg2Niw1ODkyLDQsMiw5NywxMTQsNTg3Miw1ODc2LDExNCw1OSwxLDk1LDk3LDk5LDQsMiwxMDEsMTA3LDU4ODQsNTg4Nyw1OSwxLDkxODMsMTAxLDExNiw1OSwxLDkxNDEsOTcsMTE0LDEwMSwxMTAsMTE2LDEwNCwxMDEsMTE1LDEwNSwxMTUsNTksMSw5MTgxLDExMSwxMTAsNCwyLDU5LDgwLDU5MTMsNTkxNSwxLDg4OTksMTA4LDExNywxMTUsNTksMSw4ODQ2LDQsMiwxMDMsMTEyLDU5MjcsNTkzMiwxMTEsMTEwLDU5LDEsMzcwLDEwMiw1OSwzLDU1MzQ5LDU2NjUyLDQsOCw2NSw2OCw2OSw4NCw5NywxMDAsMTEyLDExNSw1OTU1LDU5ODUsNTk5Niw2MDA5LDYwMjYsNjAzMyw2MDQ0LDYwNzUsMTE0LDExNCwxMTEsMTE5LDQsMyw1OSw2Niw2OCw1OTY3LDU5NjksNTk3NCwxLDg1OTMsOTcsMTE0LDU5LDEsMTA1MTQsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY0NSwxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk3LDExMywxMTcsMTA1LDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsMTA2MDYsMTAxLDEwMSw0LDIsNTksNjUsNjAxNyw2MDE5LDEsODg2OSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjEzLDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTcsMTExLDExOSwxMTAsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MSwxMDEsMTE0LDQsMiw3Niw4Miw2MDUyLDYwNjMsMTAxLDEwMiwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OCwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5OSwxMDUsNCwyLDU5LDEwOCw2MDgyLDYwODQsMSw5NzgsMTExLDExMCw1OSwxLDkzMywxMDUsMTEwLDEwMyw1OSwxLDM2Niw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5NiwxMDUsMTA4LDEwMCwxMDEsNTksMSwzNjAsMTA5LDEwOCw1LDIyMCwxLDU5LDYxMTUsMSwyMjAsNCw5LDY4LDk4LDk5LDEwMCwxMDEsMTAyLDExMSwxMTUsMTE4LDYxMzcsNjE0Myw2MTQ4LDYxNTIsNjE2Niw2MjUwLDYyNTUsNjI2MSw2MjY3LDk3LDExNSwxMDQsNTksMSw4ODc1LDk3LDExNCw1OSwxLDEwOTg3LDEyMSw1OSwxLDEwNDIsOTcsMTE1LDEwNCw0LDIsNTksMTA4LDYxNjEsNjE2MywxLDg4NzMsNTksMSwxMDk4Miw0LDIsMTAxLDExNCw2MTcyLDYxNzUsNTksMSw4ODk3LDQsMyw5OCwxMTYsMTIxLDYxODMsNjE4OCw2MjM4LDk3LDExNCw1OSwxLDgyMTQsNCwyLDU5LDEwNSw2MTk0LDYxOTYsMSw4MjE0LDk5LDk3LDEwOCw0LDQsNjYsNzYsODMsODQsNjIwOSw2MjE0LDYyMjAsNjIzMSw5NywxMTQsNTksMSw4NzM5LDEwNSwxMTAsMTAxLDU5LDEsMTI0LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDU5LDEsMTAwNzIsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc2OCw4NCwxMDQsMTA1LDExMCw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMiwxMTQsNTksMyw1NTM0OSw1NjYwMSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTMsOTksMTE0LDU5LDMsNTUzNDksNTY0OTcsMTAwLDk3LDExNSwxMDQsNTksMSw4ODc0LDQsNSw5OSwxMDEsMTAyLDExMSwxMTUsNjI4Niw2MjkyLDYyOTgsNjMwMyw2MzA5LDEwNSwxMTQsOTksNTksMSwzNzIsMTAwLDEwMywxMDEsNTksMSw4ODk2LDExNCw1OSwzLDU1MzQ5LDU2NjAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY1NCw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5OCw0LDQsMTAyLDEwNSwxMTEsMTE1LDYzMjUsNjMzMCw2MzMzLDYzMzksMTE0LDU5LDMsNTUzNDksNTY2MDMsNTksMSw5MjYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjU1LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk5LDQsOSw2NSw3Myw4NSw5Nyw5OSwxMDIsMTExLDExNSwxMTcsNjM2NSw2MzcwLDYzNzUsNjM4MCw2MzkxLDY0MDUsNjQxMCw2NDE2LDY0MjIsOTksMTIxLDU5LDEsMTA3MSw5OSwxMjEsNTksMSwxMDMxLDk5LDEyMSw1OSwxLDEwNzAsOTksMTE3LDExNiwxMDEsNSwyMjEsMSw1OSw2Mzg5LDEsMjIxLDQsMiwxMDUsMTIxLDYzOTcsNjQwMiwxMTQsOTksNTksMSwzNzQsNTksMSwxMDY3LDExNCw1OSwzLDU1MzQ5LDU2NjA0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1Niw5OSwxMTQsNTksMyw1NTM0OSw1NjUwMCwxMDksMTA4LDU5LDEsMzc2LDQsOCw3Miw5Nyw5OSwxMDAsMTAxLDEwMiwxMTEsMTE1LDY0NDUsNjQ1MCw2NDU3LDY0NzIsNjQ3Nyw2NTAxLDY1MDUsNjUxMCw5OSwxMjEsNTksMSwxMDQ2LDk5LDExNywxMTYsMTAxLDU5LDEsMzc3LDQsMiw5NywxMjEsNjQ2Myw2NDY5LDExNCwxMTEsMTEwLDU5LDEsMzgxLDU5LDEsMTA0NywxMTEsMTE2LDU5LDEsMzc5LDQsMiwxMTQsMTE2LDY0ODMsNjQ5NywxMTEsODcsMTA1LDEwMCwxMTYsMTA0LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAzLDk3LDU5LDEsOTE4LDExNCw1OSwxLDg0ODgsMTEyLDEwMiw1OSwxLDg0ODQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDEsNCwxNiw5Nyw5OCw5OSwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTksNjU1MCw2NTYxLDY1NjgsNjYxMiw2NjIyLDY2MzQsNjY0NSw2NjcyLDY2OTksNjg1NCw2ODcwLDY5MjMsNjkzMyw2OTYzLDY5NzQsNjk4Myw5OSwxMTcsMTE2LDEwMSw1LDIyNSwxLDU5LDY1NTksMSwyMjUsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjU5LDQsNiw1OSw2OSwxMDAsMTA1LDExNywxMjEsNjU4Miw2NTg0LDY1ODgsNjU5MSw2NjAwLDY2MDksMSw4NzY2LDU5LDMsODc2Niw4MTksNTksMSw4NzY3LDExNCw5OSw1LDIyNiwxLDU5LDY1OTgsMSwyMjYsMTE2LDEwMSw1LDE4MCwxLDU5LDY2MDcsMSwxODAsNTksMSwxMDcyLDEwOCwxMDUsMTAzLDUsMjMwLDEsNTksNjYyMCwxLDIzMCw0LDIsNTksMTE0LDY2MjgsNjYzMCwxLDgyODksNTksMyw1NTM0OSw1NjYwNiwxMTQsOTcsMTE4LDEwMSw1LDIyNCwxLDU5LDY2NDMsMSwyMjQsNCwyLDEwMSwxMTIsNjY1MSw2NjY3LDQsMiwxMDIsMTEyLDY2NTcsNjY2MywxMTUsMTIxLDEwOSw1OSwxLDg1MDEsMTA0LDU5LDEsODUwMSwxMDQsOTcsNTksMSw5NDUsNCwyLDk3LDExMiw2Njc4LDY2OTIsNCwyLDk5LDEwOCw2Njg0LDY2ODgsMTE0LDU5LDEsMjU3LDEwMyw1OSwxLDEwODE1LDUsMzgsMSw1OSw2Njk3LDEsMzgsNCwyLDEwMCwxMDMsNjcwNSw2NzM3LDQsNSw1OSw5NywxMDAsMTE1LDExOCw2NzE3LDY3MTksNjcyNCw2NzI3LDY3MzQsMSw4NzQzLDExMCwxMDAsNTksMSwxMDgzNyw1OSwxLDEwODQ0LDEwOCwxMTEsMTEyLDEwMSw1OSwxLDEwODQwLDU5LDEsMTA4NDIsNCw3LDU5LDEwMSwxMDgsMTA5LDExNCwxMTUsMTIyLDY3NTMsNjc1NSw2NzU4LDY3NjIsNjgxNCw2ODM1LDY4NDgsMSw4NzM2LDU5LDEsMTA2NjAsMTAxLDU5LDEsODczNiwxMTUsMTAwLDQsMiw1OSw5Nyw2NzcwLDY3NzIsMSw4NzM3LDQsOCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDY3OTAsNjc5Myw2Nzk2LDY3OTksNjgwMiw2ODA1LDY4MDgsNjgxMSw1OSwxLDEwNjY0LDU5LDEsMTA2NjUsNTksMSwxMDY2Niw1OSwxLDEwNjY3LDU5LDEsMTA2NjgsNTksMSwxMDY2OSw1OSwxLDEwNjcwLDU5LDEsMTA2NzEsMTE2LDQsMiw1OSwxMTgsNjgyMSw2ODIzLDEsODczNSw5OCw0LDIsNTksMTAwLDY4MzAsNjgzMiwxLDg4OTQsNTksMSwxMDY1Myw0LDIsMTEyLDExNiw2ODQxLDY4NDUsMTA0LDU5LDEsODczOCw1OSwxLDE5Nyw5NywxMTQsMTE0LDU5LDEsOTA4NCw0LDIsMTAzLDExMiw2ODYwLDY4NjUsMTExLDExMCw1OSwxLDI2MSwxMDIsNTksMyw1NTM0OSw1NjY1OCw0LDcsNTksNjksOTcsMTAxLDEwNSwxMTEsMTEyLDY4ODYsNjg4OCw2ODkxLDY4OTcsNjkwMCw2OTA0LDY5MDgsMSw4Nzc2LDU5LDEsMTA4NjQsOTksMTA1LDExNCw1OSwxLDEwODYzLDU5LDEsODc3OCwxMDAsNTksMSw4Nzc5LDExNSw1OSwxLDM5LDExNCwxMTEsMTIwLDQsMiw1OSwxMDEsNjkxNyw2OTE5LDEsODc3NiwxMTMsNTksMSw4Nzc4LDEwNSwxMTAsMTAzLDUsMjI5LDEsNTksNjkzMSwxLDIyOSw0LDMsOTksMTE2LDEyMSw2OTQxLDY5NDYsNjk0OSwxMTQsNTksMyw1NTM0OSw1NjUwMiw1OSwxLDQyLDEwOSwxMTIsNCwyLDU5LDEwMSw2OTU3LDY5NTksMSw4Nzc2LDExMyw1OSwxLDg3ODEsMTA1LDEwOCwxMDAsMTAxLDUsMjI3LDEsNTksNjk3MiwxLDIyNywxMDksMTA4LDUsMjI4LDEsNTksNjk4MSwxLDIyOCw0LDIsOTksMTA1LDY5ODksNjk5NywxMTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsODc1NSwxMTAsMTE2LDU5LDEsMTA3NjksNCwxNiw3OCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDUsMTA3LDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDExNyw3MDM2LDcwNDEsNzExOSw3MTM1LDcxNDksNzE1NSw3MjE5LDcyMjQsNzM0Nyw3MzU0LDc0NjMsNzQ4OSw3Nzg2LDc3OTMsNzgxNCw3ODY2LDExMSwxMTYsNTksMSwxMDk4OSw0LDIsOTksMTE0LDcwNDcsNzA5NCwxMDcsNCw0LDk5LDEwMSwxMTIsMTE1LDcwNTgsNzA2NCw3MDczLDcwODAsMTExLDExMCwxMDMsNTksMSw4NzgwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxNCwxMTQsMTA1LDEwOSwxMDEsNTksMSw4MjQ1LDEwNSwxMDksNCwyLDU5LDEwMSw3MDg4LDcwOTAsMSw4NzY1LDExMyw1OSwxLDg5MDksNCwyLDExOCwxMTksNzEwMCw3MTA1LDEwMSwxMDEsNTksMSw4ODkzLDEwMSwxMDAsNCwyLDU5LDEwMyw3MTEzLDcxMTUsMSw4OTY1LDEwMSw1OSwxLDg5NjUsMTE0LDEwNyw0LDIsNTksMTE2LDcxMjcsNzEyOSwxLDkxNDEsOTgsMTE0LDEwNyw1OSwxLDkxNDIsNCwyLDExMSwxMjEsNzE0MSw3MTQ2LDExMCwxMDMsNTksMSw4NzgwLDU5LDEsMTA3MywxMTMsMTE3LDExMSw1OSwxLDgyMjIsNCw1LDk5LDEwOSwxMTIsMTE0LDExNiw3MTY3LDcxODEsNzE4OCw3MTkzLDcxOTksOTcsMTE3LDExNSw0LDIsNTksMTAxLDcxNzYsNzE3OCwxLDg3NTcsNTksMSw4NzU3LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjcyLDExNSwxMDUsNTksMSwxMDE0LDExMCwxMTEsMTE3LDU5LDEsODQ5Miw0LDMsOTcsMTA0LDExOSw3MjA3LDcyMTAsNzIxMyw1OSwxLDk0Niw1OSwxLDg1MDIsMTAxLDEwMSwxMTAsNTksMSw4ODEyLDExNCw1OSwzLDU1MzQ5LDU2NjA3LDEwMyw0LDcsOTksMTExLDExNSwxMTYsMTE3LDExOCwxMTksNzI0MSw3MjYyLDcyODgsNzMwNSw3MzI4LDczMzUsNzM0MCw0LDMsOTcsMTA1LDExNyw3MjQ5LDcyNTMsNzI1OCwxMTIsNTksMSw4ODk4LDExNCw5OSw1OSwxLDk3MTEsMTEyLDU5LDEsODg5OSw0LDMsMTAwLDExMiwxMTYsNzI3MCw3Mjc1LDcyODEsMTExLDExNiw1OSwxLDEwNzUyLDEwOCwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsMTE1LDU5LDEsMTA3NTQsNCwyLDExMywxMTYsNzI5NCw3MzAwLDk5LDExNywxMTIsNTksMSwxMDc1OCw5NywxMTQsNTksMSw5NzMzLDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMiwxMDAsMTE3LDczMTgsNzMyNCwxMTEsMTE5LDExMCw1OSwxLDk2NjEsMTEyLDU5LDEsOTY1MSwxMTIsMTA4LDExNywxMTUsNTksMSwxMDc1NiwxMDEsMTAxLDU5LDEsODg5NywxMDEsMTAwLDEwMywxMDEsNTksMSw4ODk2LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MDksNCwzLDk3LDEwNywxMTEsNzM2Miw3NDM2LDc0NTgsNCwyLDk5LDExMCw3MzY4LDc0MzIsMTA3LDQsMywxMDgsMTE1LDExNiw3Mzc3LDczODYsNzM5NCwxMTEsMTIyLDEwMSwxMTAsMTAzLDEwMSw1OSwxLDEwNzMxLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk2NDIsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCw0LDU5LDEwMCwxMDgsMTE0LDc0MTEsNzQxMyw3NDE5LDc0MjUsMSw5NjUyLDExMSwxMTksMTEwLDU5LDEsOTY2MiwxMDEsMTAyLDExNiw1OSwxLDk2NjYsMTA1LDEwMywxMDQsMTE2LDU5LDEsOTY1NiwxMDcsNTksMSw5MjUxLDQsMiw0OSw1MSw3NDQyLDc0NTQsNCwyLDUwLDUyLDc0NDgsNzQ1MSw1OSwxLDk2MTgsNTksMSw5NjE3LDUyLDU5LDEsOTYxOSw5OSwxMDcsNTksMSw5NjA4LDQsMiwxMDEsMTExLDc0NjksNzQ4NSw0LDIsNTksMTEzLDc0NzUsNzQ3OCwzLDYxLDg0MjEsMTE3LDEwNSwxMTgsNTksMyw4ODAxLDg0MjEsMTE2LDU5LDEsODk3Niw0LDQsMTEyLDExNiwxMTksMTIwLDc0OTksNzUwNCw3NTE3LDc1MjMsMTAyLDU5LDMsNTUzNDksNTY2NTksNCwyLDU5LDExNiw3NTEwLDc1MTIsMSw4ODY5LDExMSwxMDksNTksMSw4ODY5LDExNiwxMDUsMTAxLDU5LDEsODkwNCw0LDEyLDY4LDcyLDg1LDg2LDk4LDEwMCwxMDQsMTA5LDExMiwxMTYsMTE3LDExOCw3NTQ5LDc1NzEsNzU5Nyw3NjE5LDc2NTUsNzY2MCw3NjgyLDc3MDgsNzcxNSw3NzIxLDc3MjgsNzc1MCw0LDQsNzYsODIsMTA4LDExNCw3NTU5LDc1NjIsNzU2NSw3NTY4LDU5LDEsOTU1OSw1OSwxLDk1NTYsNTksMSw5NTU4LDU5LDEsOTU1NSw0LDUsNTksNjgsODUsMTAwLDExNyw3NTgzLDc1ODUsNzU4OCw3NTkxLDc1OTQsMSw5NTUyLDU5LDEsOTU3NCw1OSwxLDk1NzcsNTksMSw5NTcyLDU5LDEsOTU3NSw0LDQsNzYsODIsMTA4LDExNCw3NjA3LDc2MTAsNzYxMyw3NjE2LDU5LDEsOTU2NSw1OSwxLDk1NjIsNTksMSw5NTY0LDU5LDEsOTU2MSw0LDcsNTksNzIsNzYsODIsMTA0LDEwOCwxMTQsNzYzNSw3NjM3LDc2NDAsNzY0Myw3NjQ2LDc2NDksNzY1MiwxLDk1NTMsNTksMSw5NTgwLDU5LDEsOTU3MSw1OSwxLDk1NjgsNTksMSw5NTc5LDU5LDEsOTU3MCw1OSwxLDk1NjcsMTExLDEyMCw1OSwxLDEwNjk3LDQsNCw3Niw4MiwxMDgsMTE0LDc2NzAsNzY3Myw3Njc2LDc2NzksNTksMSw5NTU3LDU5LDEsOTU1NCw1OSwxLDk0ODgsNTksMSw5NDg0LDQsNSw1OSw2OCw4NSwxMDAsMTE3LDc2OTQsNzY5Niw3Njk5LDc3MDIsNzcwNSwxLDk0NzIsNTksMSw5NTczLDU5LDEsOTU3Niw1OSwxLDk1MTYsNTksMSw5NTI0LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg4NjMsMTA4LDExNywxMTUsNTksMSw4ODYyLDEwNSwxMDksMTAxLDExNSw1OSwxLDg4NjQsNCw0LDc2LDgyLDEwOCwxMTQsNzczOCw3NzQxLDc3NDQsNzc0Nyw1OSwxLDk1NjMsNTksMSw5NTYwLDU5LDEsOTQ5Niw1OSwxLDk0OTIsNCw3LDU5LDcyLDc2LDgyLDEwNCwxMDgsMTE0LDc3NjYsNzc2OCw3NzcxLDc3NzQsNzc3Nyw3NzgwLDc3ODMsMSw5NDc0LDU5LDEsOTU3OCw1OSwxLDk1NjksNTksMSw5NTY2LDU5LDEsOTUzMiw1OSwxLDk1MDgsNTksMSw5NTAwLDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNDUsNCwyLDEwMSwxMTgsNzc5OSw3ODA0LDExOCwxMDEsNTksMSw3MjgsOTgsOTcsMTE0LDUsMTY2LDEsNTksNzgxMiwxLDE2Niw0LDQsOTksMTAxLDEwNSwxMTEsNzgyNCw3ODI5LDc4MzQsNzg0NiwxMTQsNTksMyw1NTM0OSw1NjUwMywxMDksMTA1LDU5LDEsODI3MSwxMDksNCwyLDU5LDEwMSw3ODQxLDc4NDMsMSw4NzY1LDU5LDEsODkwOSwxMDgsNCwzLDU5LDk4LDEwNCw3ODU1LDc4NTcsNzg2MCwxLDkyLDU5LDEsMTA2OTMsMTE1LDExNyw5OCw1OSwxLDEwMTg0LDQsMiwxMDgsMTA5LDc4NzIsNzg4NSwxMDgsNCwyLDU5LDEwMSw3ODc5LDc4ODEsMSw4MjI2LDExNiw1OSwxLDgyMjYsMTEyLDQsMyw1OSw2OSwxMDEsNzg5NCw3ODk2LDc4OTksMSw4NzgyLDU5LDEsMTA5MjYsNCwyLDU5LDExMyw3OTA1LDc5MDcsMSw4NzgzLDU5LDEsODc4Myw0LDE1LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMSwxMTQsMTE1LDExNiwxMTcsMTE5LDEyMSw3OTQyLDgwMjEsODA3NSw4MDgwLDgxMjEsODEyNiw4MTU3LDgyNzksODI5NSw4NDMwLDg0NDYsODQ4NSw4NDkxLDg3MDcsODcyNiw0LDMsOTksMTEyLDExNCw3OTUwLDc5NTYsODAwNywxMTcsMTE2LDEwMSw1OSwxLDI2Myw0LDYsNTksOTcsOTgsOTksMTAwLDExNSw3OTcwLDc5NzIsNzk3Nyw3OTg0LDc5OTgsODAwMywxLDg3NDUsMTEwLDEwMCw1OSwxLDEwODIwLDExNCw5OSwxMTcsMTEyLDU5LDEsMTA4MjUsNCwyLDk3LDExNyw3OTkwLDc5OTQsMTEyLDU5LDEsMTA4MjcsMTEyLDU5LDEsMTA4MjMsMTExLDExNiw1OSwxLDEwODE2LDU5LDMsODc0NSw2NTAyNCw0LDIsMTAxLDExMSw4MDEzLDgwMTcsMTE2LDU5LDEsODI1NywxMTAsNTksMSw3MTEsNCw0LDk3LDEwMSwxMDUsMTE3LDgwMzEsODA0Niw4MDU2LDgwNjEsNCwyLDExMiwxMTQsODAzNyw4MDQxLDExNSw1OSwxLDEwODI5LDExMSwxMTAsNTksMSwyNjksMTAwLDEwNSwxMDgsNSwyMzEsMSw1OSw4MDU0LDEsMjMxLDExNCw5OSw1OSwxLDI2NSwxMTIsMTE1LDQsMiw1OSwxMTUsODA2OSw4MDcxLDEsMTA4MjgsMTA5LDU5LDEsMTA4MzIsMTExLDExNiw1OSwxLDI2Nyw0LDMsMTAwLDEwOSwxMTAsODA4OCw4MDk3LDgxMDQsMTA1LDEwOCw1LDE4NCwxLDU5LDgwOTUsMSwxODQsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzQsMTE2LDUsMTYyLDIsNTksMTAxLDgxMTIsODExNCwxLDE2MiwxMTQsMTAwLDExMSwxMTYsNTksMSwxODMsMTE0LDU5LDMsNTUzNDksNTY2MDgsNCwzLDk5LDEwMSwxMDUsODEzNCw4MTM4LDgxNTQsMTIxLDU5LDEsMTA5NSw5OSwxMDcsNCwyLDU5LDEwOSw4MTQ2LDgxNDgsMSwxMDAwMyw5NywxMTQsMTA3LDU5LDEsMTAwMDMsNTksMSw5NjcsMTE0LDQsNyw1OSw2OSw5OSwxMDEsMTAyLDEwOSwxMTUsODE3NCw4MTc2LDgxNzksODI1OCw4MjYxLDgyNjgsODI3MywxLDk2NzUsNTksMSwxMDY5MSw0LDMsNTksMTAxLDEwOCw4MTg3LDgxODksODE5MywxLDcxMCwxMTMsNTksMSw4NzkxLDEwMSw0LDIsOTcsMTAwLDgyMDAsODIyMywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODIxMCw4MjE2LDEwMSwxMDIsMTE2LDU5LDEsODYzNCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjM1LDQsNSw4Miw4Myw5Nyw5OSwxMDAsODIzNSw4MjM4LDgyNDEsODI0Niw4MjUyLDU5LDEsMTc0LDU5LDEsOTQxNiwxMTUsMTE2LDU5LDEsODg1OSwxMDUsMTE0LDk5LDU5LDEsODg1OCw5NywxMTUsMTA0LDU5LDEsODg2MSw1OSwxLDg3OTEsMTEwLDEwNSwxMTAsMTE2LDU5LDEsMTA3NjgsMTA1LDEwMCw1OSwxLDEwOTkxLDk5LDEwNSwxMTQsNTksMSwxMDY5MCwxMTcsOTgsMTE1LDQsMiw1OSwxMTcsODI4OCw4MjkwLDEsOTgyNywxMDUsMTE2LDU5LDEsOTgyNyw0LDQsMTA4LDEwOSwxMTAsMTEyLDgzMDUsODMyNiw4Mzc2LDg0MDAsMTExLDExMCw0LDIsNTksMTAxLDgzMTMsODMxNSwxLDU4LDQsMiw1OSwxMTMsODMyMSw4MzIzLDEsODc4OCw1OSwxLDg3ODgsNCwyLDEwOSwxMTIsODMzMiw4MzQ0LDk3LDQsMiw1OSwxMTYsODMzOSw4MzQxLDEsNDQsNTksMSw2NCw0LDMsNTksMTAyLDEwOCw4MzUyLDgzNTQsODM1OCwxLDg3MDUsMTEwLDU5LDEsODcyOCwxMDEsNCwyLDEwOSwxMjAsODM2NSw4MzcxLDEwMSwxMTAsMTE2LDU5LDEsODcwNSwxMDEsMTE1LDU5LDEsODQ1MCw0LDIsMTAzLDEwNSw4MzgyLDgzOTUsNCwyLDU5LDEwMCw4Mzg4LDgzOTAsMSw4NzczLDExMSwxMTYsNTksMSwxMDg2MSwxMTAsMTE2LDU5LDEsODc1MCw0LDMsMTAyLDExNCwxMjEsODQwOCw4NDEyLDg0MTcsNTksMyw1NTM0OSw1NjY2MCwxMTEsMTAwLDU5LDEsODcyMCw1LDE2OSwyLDU5LDExNSw4NDI0LDg0MjYsMSwxNjksMTE0LDU5LDEsODQ3MSw0LDIsOTcsMTExLDg0MzYsODQ0MSwxMTQsMTE0LDU5LDEsODYyOSwxMTUsMTE1LDU5LDEsMTAwMDcsNCwyLDk5LDExNyw4NDUyLDg0NTcsMTE0LDU5LDMsNTUzNDksNTY1MDQsNCwyLDk4LDExMiw4NDYzLDg0NzQsNCwyLDU5LDEwMSw4NDY5LDg0NzEsMSwxMDk1OSw1OSwxLDEwOTYxLDQsMiw1OSwxMDEsODQ4MCw4NDgyLDEsMTA5NjAsNTksMSwxMDk2MiwxMDAsMTExLDExNiw1OSwxLDg5NDMsNCw3LDEwMCwxMDEsMTA4LDExMiwxMTQsMTE4LDExOSw4NTA3LDg1MjIsODUzNiw4NTUwLDg2MDAsODY5Nyw4NzAyLDk3LDExNCwxMTQsNCwyLDEwOCwxMTQsODUxNiw4NTE5LDU5LDEsMTA1NTIsNTksMSwxMDU0OSw0LDIsMTEyLDExNSw4NTI4LDg1MzIsMTE0LDU5LDEsODkyNiw5OSw1OSwxLDg5MjcsOTcsMTE0LDExNCw0LDIsNTksMTEyLDg1NDUsODU0NywxLDg2MzAsNTksMSwxMDU1Nyw0LDYsNTksOTgsOTksMTAwLDExMSwxMTUsODU2NCw4NTY2LDg1NzMsODU4Nyw4NTkyLDg1OTYsMSw4NzQ2LDExNCw5OSw5NywxMTIsNTksMSwxMDgyNCw0LDIsOTcsMTE3LDg1NzksODU4MywxMTIsNTksMSwxMDgyMiwxMTIsNTksMSwxMDgyNiwxMTEsMTE2LDU5LDEsODg0NSwxMTQsNTksMSwxMDgyMSw1OSwzLDg3NDYsNjUwMjQsNCw0LDk3LDEwOCwxMTQsMTE4LDg2MTAsODYyMyw4NjYzLDg2NzIsMTE0LDExNCw0LDIsNTksMTA5LDg2MTgsODYyMCwxLDg2MzEsNTksMSwxMDU1NiwxMjEsNCwzLDEwMSwxMTgsMTE5LDg2MzIsODY1MSw4NjU2LDExMyw0LDIsMTEyLDExNSw4NjM5LDg2NDUsMTE0LDEwMSw5OSw1OSwxLDg5MjYsMTE3LDk5LDk5LDU5LDEsODkyNywxMDEsMTAxLDU5LDEsODkxMCwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTExLDEwMSwxMTAsNSwxNjQsMSw1OSw4NjcwLDEsMTY0LDEwMSw5NywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsODY4NCw4NjkwLDEwMSwxMDIsMTE2LDU5LDEsODYzMCwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjMxLDEwMSwxMDEsNTksMSw4OTEwLDEwMSwxMDAsNTksMSw4OTExLDQsMiw5OSwxMDUsODcxMyw4NzIxLDExMSwxMTAsMTA1LDExMCwxMTYsNTksMSw4NzU0LDExMCwxMTYsNTksMSw4NzUzLDEwOCw5OSwxMTYsMTIxLDU5LDEsOTAwNSw0LDE5LDY1LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA2LDEwOCwxMTEsMTE0LDExNSwxMTYsMTE3LDExOSwxMjIsODc3Myw4Nzc4LDg3ODMsODgyMSw4ODM5LDg4NTQsODg4Nyw4OTE0LDg5MzAsODk0NCw5MDM2LDkwNDEsOTA1OCw5MTk3LDkyMjcsOTI1OCw5MjgxLDkyOTcsOTMwNSwxMTQsMTE0LDU5LDEsODY1OSw5NywxMTQsNTksMSwxMDU5Nyw0LDQsMTAzLDEwOCwxMTQsMTE1LDg3OTMsODc5OSw4ODA1LDg4MDksMTAzLDEwMSwxMTQsNTksMSw4MjI0LDEwMSwxMTYsMTA0LDU5LDEsODUwNCwxMTQsNTksMSw4NTk1LDEwNCw0LDIsNTksMTE4LDg4MTYsODgxOCwxLDgyMDgsNTksMSw4ODY3LDQsMiwxMDcsMTA4LDg4MjcsODgzNCw5NywxMTQsMTExLDExOSw1OSwxLDEwNTExLDk3LDk5LDU5LDEsNzMzLDQsMiw5NywxMjEsODg0NSw4ODUxLDExNCwxMTEsMTEwLDU5LDEsMjcxLDU5LDEsMTA3Niw0LDMsNTksOTcsMTExLDg4NjIsODg2NCw4ODgwLDEsODUxOCw0LDIsMTAzLDExNCw4ODcwLDg4NzYsMTAzLDEwMSwxMTQsNTksMSw4MjI1LDExNCw1OSwxLDg2NTAsMTE2LDExNSwxMDEsMTEzLDU5LDEsMTA4NzEsNCwzLDEwMywxMDgsMTA5LDg4OTUsODkwMiw4OTA3LDUsMTc2LDEsNTksODkwMCwxLDE3NiwxMTYsOTcsNTksMSw5NDgsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzMsNCwyLDEwNSwxMTQsODkyMCw4OTI2LDExNSwxMDQsMTE2LDU5LDEsMTA2MjMsNTksMyw1NTM0OSw1NjYwOSw5NywxMTQsNCwyLDEwOCwxMTQsODkzOCw4OTQxLDU5LDEsODY0Myw1OSwxLDg2NDIsNCw1LDk3LDEwMSwxMDMsMTE1LDExOCw4OTU2LDg5ODYsODk4OSw4OTk2LDkwMDEsMTA5LDQsMyw1OSwxMTEsMTE1LDg5NjUsODk2Nyw4OTgzLDEsODkwMCwxMTAsMTAwLDQsMiw1OSwxMTUsODk3NSw4OTc3LDEsODkwMCwxMTcsMTA1LDExNiw1OSwxLDk4MzAsNTksMSw5ODMwLDU5LDEsMTY4LDk3LDEwOSwxMDksOTcsNTksMSw5ODksMTA1LDExMCw1OSwxLDg5NDYsNCwzLDU5LDEwNSwxMTEsOTAwOSw5MDExLDkwMzEsMSwyNDcsMTAwLDEwMSw1LDI0NywyLDU5LDExMSw5MDIwLDkwMjIsMSwyNDcsMTEwLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTAzLDExMCwxMjAsNTksMSw4OTAzLDk5LDEyMSw1OSwxLDExMDYsOTksNCwyLDExMSwxMTQsOTA0OCw5MDUzLDExNCwxMTAsNTksMSw4OTkwLDExMSwxMTIsNTksMSw4OTczLDQsNSwxMDgsMTEyLDExNiwxMTcsMTE5LDkwNzAsOTA3Niw5MDgxLDkxMzAsOTE0NCwxMDgsOTcsMTE0LDU5LDEsMzYsMTAyLDU5LDMsNTUzNDksNTY2NjEsNCw1LDU5LDEwMSwxMDksMTEyLDExNSw5MDkzLDkwOTUsOTEwOSw5MTE2LDkxMjIsMSw3MjksMTEzLDQsMiw1OSwxMDAsOTEwMiw5MTA0LDEsODc4NCwxMTEsMTE2LDU5LDEsODc4NSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzYwLDEwOCwxMTcsMTE1LDU5LDEsODcyNCwxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw4ODY1LDk4LDEwOCwxMDEsOTgsOTcsMTE0LDExOSwxMDEsMTAwLDEwMywxMDEsNTksMSw4OTY2LDExMCw0LDMsOTcsMTAwLDEwNCw5MTUzLDkxNjAsOTE3MiwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk1LDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjUwLDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwOCwxMTQsOTE4NCw5MTkwLDEwMSwxMDIsMTE2LDU5LDEsODY0MywxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjQyLDQsMiw5OCw5OSw5MjAzLDkyMTEsMTA3LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MTIsNCwyLDExMSwxMTQsOTIxNyw5MjIyLDExNCwxMTAsNTksMSw4OTkxLDExMSwxMTIsNTksMSw4OTcyLDQsMyw5OSwxMTEsMTE2LDkyMzUsOTI0OCw5MjUyLDQsMiwxMTQsMTIxLDkyNDEsOTI0NSw1OSwzLDU1MzQ5LDU2NTA1LDU5LDEsMTEwOSwxMDgsNTksMSwxMDc0MiwxMTQsMTExLDEwNyw1OSwxLDI3Myw0LDIsMTAwLDExNCw5MjY0LDkyNjksMTExLDExNiw1OSwxLDg5NDUsMTA1LDQsMiw1OSwxMDIsOTI3Niw5Mjc4LDEsOTY2Myw1OSwxLDk2NjIsNCwyLDk3LDEwNCw5Mjg3LDkyOTIsMTE0LDExNCw1OSwxLDg2OTMsOTcsMTE0LDU5LDEsMTA2MDcsOTcsMTEwLDEwMywxMDgsMTAxLDU5LDEsMTA2NjIsNCwyLDk5LDEwNSw5MzExLDkzMTUsMTIxLDU5LDEsMTExOSwxMDMsMTE0LDk3LDExNCwxMTQsNTksMSwxMDIzOSw0LDE4LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTIwLDkzNjEsOTM3Niw5Mzk4LDk0MzksOTQ0NCw5NDQ3LDk0NjIsOTQ5NSw5NTMxLDk1ODUsOTU5OCw5NjE0LDk2NTksOTc1NSw5NzcxLDk3OTIsOTgwOCw5ODI2LDQsMiw2OCwxMTEsOTM2Nyw5MzcyLDExMSwxMTYsNTksMSwxMDg3MSwxMTYsNTksMSw4Nzg1LDQsMiw5OSwxMTUsOTM4Miw5MzkyLDExNywxMTYsMTAxLDUsMjMzLDEsNTksOTM5MCwxLDIzMywxMTYsMTAxLDExNCw1OSwxLDEwODYyLDQsNCw5NywxMDUsMTExLDEyMSw5NDA4LDk0MTQsOTQzMCw5NDM2LDExNCwxMTEsMTEwLDU5LDEsMjgzLDExNCw0LDIsNTksOTksOTQyMSw5NDIzLDEsODc5MCw1LDIzNCwxLDU5LDk0MjgsMSwyMzQsMTA4LDExMSwxMTAsNTksMSw4Nzg5LDU5LDEsMTEwMSwxMTEsMTE2LDU5LDEsMjc5LDU5LDEsODUxOSw0LDIsNjgsMTE0LDk0NTMsOTQ1OCwxMTEsMTE2LDU5LDEsODc4Niw1OSwzLDU1MzQ5LDU2NjEwLDQsMyw1OSwxMTQsMTE1LDk0NzAsOTQ3Miw5NDgyLDEsMTA5MDYsOTcsMTE4LDEwMSw1LDIzMiwxLDU5LDk0ODAsMSwyMzIsNCwyLDU5LDEwMCw5NDg4LDk0OTAsMSwxMDkwMiwxMTEsMTE2LDU5LDEsMTA5MDQsNCw0LDU5LDEwNSwxMDgsMTE1LDk1MDUsOTUwNyw5NTE1LDk1MTgsMSwxMDkwNSwxMTAsMTE2LDEwMSwxMTQsMTE1LDU5LDEsOTE5MSw1OSwxLDg0NjcsNCwyLDU5LDEwMCw5NTI0LDk1MjYsMSwxMDkwMSwxMTEsMTE2LDU5LDEsMTA5MDMsNCwzLDk3LDExMiwxMTUsOTUzOSw5NTQ0LDk1NjQsOTksMTE0LDU5LDEsMjc1LDExNiwxMjEsNCwzLDU5LDExNSwxMTgsOTU1NCw5NTU2LDk1NjEsMSw4NzA5LDEwMSwxMTYsNTksMSw4NzA5LDU5LDEsODcwOSwxMTIsNCwyLDQ5LDU5LDk1NzEsOTU4Myw0LDIsNTEsNTIsOTU3Nyw5NTgwLDU5LDEsODE5Niw1OSwxLDgxOTcsMSw4MTk1LDQsMiwxMDMsMTE1LDk1OTEsOTU5NCw1OSwxLDMzMSwxMTIsNTksMSw4MTk0LDQsMiwxMDMsMTEyLDk2MDQsOTYwOSwxMTEsMTEwLDU5LDEsMjgxLDEwMiw1OSwzLDU1MzQ5LDU2NjYyLDQsMyw5NywxMDgsMTE1LDk2MjIsOTYzNSw5NjQwLDExNCw0LDIsNTksMTE1LDk2MjksOTYzMSwxLDg5MTcsMTA4LDU5LDEsMTA3MjMsMTE3LDExNSw1OSwxLDEwODY1LDEwNSw0LDMsNTksMTA4LDExOCw5NjQ5LDk2NTEsOTY1NiwxLDk0OSwxMTEsMTEwLDU5LDEsOTQ5LDU5LDEsMTAxMyw0LDQsOTksMTE1LDExNywxMTgsOTY2OSw5Njg2LDk3MTYsOTc0Nyw0LDIsMTA1LDExMSw5Njc1LDk2ODAsMTE0LDk5LDU5LDEsODc5MCwxMDgsMTExLDExMCw1OSwxLDg3ODksNCwyLDEwNSwxMDgsOTY5Miw5Njk2LDEwOSw1OSwxLDg3NzAsOTcsMTEwLDExNiw0LDIsMTAzLDEwOCw5NzA1LDk3MTAsMTE2LDExNCw1OSwxLDEwOTAyLDEwMSwxMTUsMTE1LDU5LDEsMTA5MDEsNCwzLDk3LDEwMSwxMDUsOTcyNCw5NzI5LDk3MzQsMTA4LDExNSw1OSwxLDYxLDExNSwxMTYsNTksMSw4Nzk5LDExOCw0LDIsNTksNjgsOTc0MSw5NzQzLDEsODgwMSw2OCw1OSwxLDEwODcyLDExMiw5NywxMTQsMTE1LDEwOCw1OSwxLDEwNzI1LDQsMiw2OCw5Nyw5NzYxLDk3NjYsMTExLDExNiw1OSwxLDg3ODcsMTE0LDExNCw1OSwxLDEwNjA5LDQsMyw5OSwxMDAsMTA1LDk3NzksOTc4Myw5Nzg4LDExNCw1OSwxLDg0OTUsMTExLDExNiw1OSwxLDg3ODQsMTA5LDU5LDEsODc3MCw0LDIsOTcsMTA0LDk3OTgsOTgwMSw1OSwxLDk1MSw1LDI0MCwxLDU5LDk4MDYsMSwyNDAsNCwyLDEwOSwxMTQsOTgxNCw5ODIyLDEwOCw1LDIzNSwxLDU5LDk4MjAsMSwyMzUsMTExLDU5LDEsODM2NCw0LDMsOTksMTA1LDExMiw5ODM0LDk4MzgsOTg0MywxMDgsNTksMSwzMywxMTUsMTE2LDU5LDEsODcwNyw0LDIsMTAxLDExMSw5ODQ5LDk4NTksOTksMTE2LDk3LDExNiwxMDUsMTExLDExMCw1OSwxLDg0OTYsMTEwLDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMTAxLDU5LDEsODUxOSw0LDEyLDk3LDk5LDEwMSwxMDIsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTIsMTE0LDExNSw5ODk2LDk5MTAsOTkxNCw5OTIxLDk5NTQsOTk2MCw5OTY3LDk5ODksOTk5NCwxMDAyNywxMDAzNiwxMDE2NCwxMDgsMTA4LDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4NiwxMjEsNTksMSwxMDkyLDEwOSw5NywxMDgsMTAxLDU5LDEsOTc5Miw0LDMsMTA1LDEwOCwxMTQsOTkyOSw5OTM1LDk5NTAsMTA4LDEwNSwxMDMsNTksMSw2NDI1OSw0LDIsMTA1LDEwOCw5OTQxLDk5NDUsMTAzLDU5LDEsNjQyNTYsMTA1LDEwMyw1OSwxLDY0MjYwLDU5LDMsNTUzNDksNTY2MTEsMTA4LDEwNSwxMDMsNTksMSw2NDI1NywxMDgsMTA1LDEwMyw1OSwzLDEwMiwxMDYsNCwzLDk3LDEwOCwxMTYsOTk3NSw5OTc5LDk5ODQsMTE2LDU5LDEsOTgzNywxMDUsMTAzLDU5LDEsNjQyNTgsMTEwLDExNSw1OSwxLDk2NDksMTExLDEwMiw1OSwxLDQwMiw0LDIsMTEyLDExNCwxMDAwMCwxMDAwNSwxMDIsNTksMyw1NTM0OSw1NjY2Myw0LDIsOTcsMTA3LDEwMDExLDEwMDE2LDEwOCwxMDgsNTksMSw4NzA0LDQsMiw1OSwxMTgsMTAwMjIsMTAwMjQsMSw4OTE2LDU5LDEsMTA5NjksOTcsMTE0LDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzY1LDQsMiw5NywxMTEsMTAwNDIsMTAxNTksNCwyLDk5LDExNSwxMDA0OCwxMDE1NSw0LDYsNDksNTAsNTEsNTIsNTMsNTUsMTAwNjIsMTAxMDIsMTAxMTQsMTAxMzUsMTAxMzksMTAxNTEsNCw2LDUwLDUxLDUyLDUzLDU0LDU2LDEwMDc2LDEwMDgzLDEwMDg2LDEwMDkzLDEwMDk2LDEwMDk5LDUsMTg5LDEsNTksMTAwODEsMSwxODksNTksMSw4NTMxLDUsMTg4LDEsNTksMTAwOTEsMSwxODgsNTksMSw4NTMzLDU5LDEsODUzNyw1OSwxLDg1MzksNCwyLDUxLDUzLDEwMTA4LDEwMTExLDU5LDEsODUzMiw1OSwxLDg1MzQsNCwzLDUyLDUzLDU2LDEwMTIyLDEwMTI5LDEwMTMyLDUsMTkwLDEsNTksMTAxMjcsMSwxOTAsNTksMSw4NTM1LDU5LDEsODU0MCw1Myw1OSwxLDg1MzYsNCwyLDU0LDU2LDEwMTQ1LDEwMTQ4LDU5LDEsODUzOCw1OSwxLDg1NDEsNTYsNTksMSw4NTQyLDEwOCw1OSwxLDgyNjAsMTE5LDExMCw1OSwxLDg5OTQsOTksMTE0LDU5LDMsNTUzNDksNTY1MDcsNCwxNyw2OSw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDgsMTEwLDExMSwxMTQsMTE1LDExNiwxMTgsMTAyMDYsMTAyMTcsMTAyNDcsMTAyNTQsMTAyNjgsMTAyNzMsMTAzNTgsMTAzNjMsMTAzNzQsMTAzODAsMTAzODUsMTA0MDYsMTA0NTgsMTA0NjQsMTA0NzAsMTA0OTcsMTA2MTAsNCwyLDU5LDEwOCwxMDIxMiwxMDIxNCwxLDg4MDcsNTksMSwxMDg5Miw0LDMsOTksMTA5LDExMiwxMDIyNSwxMDIzMSwxMDI0NCwxMTcsMTE2LDEwMSw1OSwxLDUwMSwxMDksOTcsNCwyLDU5LDEwMCwxMDIzOSwxMDI0MSwxLDk0Nyw1OSwxLDk4OSw1OSwxLDEwODg2LDExNCwxMDEsMTE4LDEwMSw1OSwxLDI4Nyw0LDIsMTA1LDEyMSwxMDI2MCwxMDI2NSwxMTQsOTksNTksMSwyODUsNTksMSwxMDc1LDExMSwxMTYsNTksMSwyODksNCw0LDU5LDEwOCwxMTMsMTE1LDEwMjgzLDEwMjg1LDEwMjg4LDEwMzA4LDEsODgwNSw1OSwxLDg5MjMsNCwzLDU5LDExMywxMTUsMTAyOTYsMTAyOTgsMTAzMDEsMSw4ODA1LDU5LDEsODgwNywxMDgsOTcsMTEwLDExNiw1OSwxLDEwODc4LDQsNCw1OSw5OSwxMDAsMTA4LDEwMzE4LDEwMzIwLDEwMzI0LDEwMzQ1LDEsMTA4NzgsOTksNTksMSwxMDkyMSwxMTEsMTE2LDQsMiw1OSwxMTEsMTAzMzIsMTAzMzQsMSwxMDg4MCw0LDIsNTksMTA4LDEwMzQwLDEwMzQyLDEsMTA4ODIsNTksMSwxMDg4NCw0LDIsNTksMTAxLDEwMzUxLDEwMzU0LDMsODkyMyw2NTAyNCwxMTUsNTksMSwxMDkwMCwxMTQsNTksMyw1NTM0OSw1NjYxMiw0LDIsNTksMTAzLDEwMzY5LDEwMzcxLDEsODgxMSw1OSwxLDg5MjEsMTA5LDEwMSwxMDgsNTksMSw4NTAzLDk5LDEyMSw1OSwxLDExMDcsNCw0LDU5LDY5LDk3LDEwNiwxMDM5NSwxMDM5NywxMDQwMCwxMDQwMywxLDg4MjMsNTksMSwxMDg5OCw1OSwxLDEwOTE3LDU5LDEsMTA5MTYsNCw0LDY5LDk3LDEwMSwxMTUsMTA0MTYsMTA0MTksMTA0MzQsMTA0NTMsNTksMSw4ODA5LDExMiw0LDIsNTksMTEyLDEwNDI2LDEwNDI4LDEsMTA4OTAsMTE0LDExMSwxMjAsNTksMSwxMDg5MCw0LDIsNTksMTEzLDEwNDQwLDEwNDQyLDEsMTA4ODgsNCwyLDU5LDExMywxMDQ0OCwxMDQ1MCwxLDEwODg4LDU5LDEsODgwOSwxMDUsMTA5LDU5LDEsODkzNSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NjQsOTcsMTE4LDEwMSw1OSwxLDk2LDQsMiw5OSwxMDUsMTA0NzYsMTA0ODAsMTE0LDU5LDEsODQ1OCwxMDksNCwzLDU5LDEwMSwxMDgsMTA0ODksMTA0OTEsMTA0OTQsMSw4ODE5LDU5LDEsMTA4OTQsNTksMSwxMDg5Niw1LDYyLDYsNTksOTksMTAwLDEwOCwxMTMsMTE0LDEwNTEyLDEwNTE0LDEwNTI3LDEwNTMyLDEwNTM4LDEwNTQ1LDEsNjIsNCwyLDk5LDEwNSwxMDUyMCwxMDUyMyw1OSwxLDEwOTE5LDExNCw1OSwxLDEwODc0LDExMSwxMTYsNTksMSw4OTE5LDgwLDk3LDExNCw1OSwxLDEwNjQ1LDExNywxMDEsMTE1LDExNiw1OSwxLDEwODc2LDQsNSw5NywxMDAsMTAxLDEwOCwxMTUsMTA1NTcsMTA1NzQsMTA1NzksMTA1OTksMTA2MDUsNCwyLDExMiwxMTQsMTA1NjMsMTA1NzAsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA4ODYsMTE0LDU5LDEsMTA2MTYsMTExLDExNiw1OSwxLDg5MTksMTEzLDQsMiwxMDgsMTEzLDEwNTg2LDEwNTkyLDEwMSwxMTUsMTE1LDU5LDEsODkyMywxMDgsMTAxLDExNSwxMTUsNTksMSwxMDg5MiwxMDEsMTE1LDExNSw1OSwxLDg4MjMsMTA1LDEwOSw1OSwxLDg4MTksNCwyLDEwMSwxMTAsMTA2MTYsMTA2MjYsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA5LDY1MDI0LDY5LDU5LDMsODgwOSw2NTAyNCw0LDEwLDY1LDk3LDk4LDk5LDEwMSwxMDIsMTA3LDExMSwxMTUsMTIxLDEwNjUzLDEwNjU4LDEwNzEzLDEwNzE4LDEwNzI0LDEwNzYwLDEwNzY1LDEwNzg2LDEwODUwLDEwODc1LDExNCwxMTQsNTksMSw4NjYwLDQsNCwxMDUsMTA4LDEwOSwxMTQsMTA2NjgsMTA2NzQsMTA2NzgsMTA2ODQsMTE0LDExNSwxMTIsNTksMSw4MjAyLDEwMiw1OSwxLDE4OSwxMDUsMTA4LDExNiw1OSwxLDg0NTksNCwyLDEwMCwxMTQsMTA2OTAsMTA2OTUsOTksMTIxLDU5LDEsMTA5OCw0LDMsNTksOTksMTE5LDEwNzAzLDEwNzA1LDEwNzEwLDEsODU5NiwxMDUsMTE0LDU5LDEsMTA1NjgsNTksMSw4NjIxLDk3LDExNCw1OSwxLDg0NjMsMTA1LDExNCw5OSw1OSwxLDI5Myw0LDMsOTcsMTA4LDExNCwxMDczMiwxMDc0OCwxMDc1NCwxMTQsMTE2LDExNSw0LDIsNTksMTE3LDEwNzQxLDEwNzQzLDEsOTgyOSwxMDUsMTE2LDU5LDEsOTgyOSwxMDgsMTA1LDExMiw1OSwxLDgyMzAsOTksMTExLDExMCw1OSwxLDg4ODksMTE0LDU5LDMsNTUzNDksNTY2MTMsMTE1LDQsMiwxMDEsMTE5LDEwNzcyLDEwNzc5LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MzMsOTcsMTE0LDExMSwxMTksNTksMSwxMDUzNCw0LDUsOTcsMTA5LDExMSwxMTIsMTE0LDEwNzk4LDEwODAzLDEwODA5LDEwODM5LDEwODQ0LDExNCwxMTQsNTksMSw4NzAzLDExNiwxMDQsMTE2LDU5LDEsODc2MywxMDcsNCwyLDEwOCwxMTQsMTA4MTYsMTA4MjcsMTAxLDEwMiwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxNywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYxOCwxMDIsNTksMyw1NTM0OSw1NjY2NSw5OCw5NywxMTQsNTksMSw4MjEzLDQsMyw5OSwxMDgsMTE2LDEwODU4LDEwODYzLDEwODY5LDExNCw1OSwzLDU1MzQ5LDU2NTA5LDk3LDExNSwxMDQsNTksMSw4NDYzLDExNCwxMTEsMTA3LDU5LDEsMjk1LDQsMiw5OCwxMTIsMTA4ODEsMTA4ODcsMTE3LDEwOCwxMDgsNTksMSw4MjU5LDEwNCwxMDEsMTEwLDU5LDEsODIwOCw0LDE1LDk3LDk5LDEwMSwxMDIsMTAzLDEwNSwxMDYsMTA5LDExMCwxMTEsMTEyLDExMywxMTUsMTE2LDExNywxMDkyNSwxMDkzNiwxMDk1OCwxMDk3NywxMDk5MCwxMTAwMSwxMTAzOSwxMTA0NSwxMTEwMSwxMTE5MiwxMTIyMCwxMTIyNiwxMTIzNywxMTI4NSwxMTI5OSw5OSwxMTcsMTE2LDEwMSw1LDIzNywxLDU5LDEwOTM0LDEsMjM3LDQsMyw1OSwxMDUsMTIxLDEwOTQ0LDEwOTQ2LDEwOTU1LDEsODI5MSwxMTQsOTksNSwyMzgsMSw1OSwxMDk1MywxLDIzOCw1OSwxLDEwODAsNCwyLDk5LDEyMCwxMDk2NCwxMDk2OCwxMjEsNTksMSwxMDc3LDk5LDEwOCw1LDE2MSwxLDU5LDEwOTc1LDEsMTYxLDQsMiwxMDIsMTE0LDEwOTgzLDEwOTg2LDU5LDEsODY2MCw1OSwzLDU1MzQ5LDU2NjE0LDExNCw5NywxMTgsMTAxLDUsMjM2LDEsNTksMTA5OTksMSwyMzYsNCw0LDU5LDEwNSwxMTAsMTExLDExMDExLDExMDEzLDExMDI4LDExMDM0LDEsODUyMCw0LDIsMTA1LDExMCwxMTAxOSwxMTAyNCwxMTAsMTE2LDU5LDEsMTA3NjQsMTE2LDU5LDEsODc0OSwxMDIsMTA1LDExMCw1OSwxLDEwNzE2LDExNiw5Nyw1OSwxLDg0ODksMTA4LDEwNSwxMDMsNTksMSwzMDcsNCwzLDk3LDExMSwxMTIsMTEwNTMsMTEwOTIsMTEwOTYsNCwzLDk5LDEwMywxMTYsMTEwNjEsMTEwNjUsMTEwODgsMTE0LDU5LDEsMjk5LDQsMywxMDEsMTA4LDExMiwxMTA3MywxMTA3NiwxMTA4Miw1OSwxLDg0NjUsMTA1LDExMCwxMDEsNTksMSw4NDY0LDk3LDExNCwxMTYsNTksMSw4NDY1LDEwNCw1OSwxLDMwNSwxMDIsNTksMSw4ODg3LDEwMSwxMDAsNTksMSw0MzcsNCw1LDU5LDk5LDEwMiwxMTEsMTE2LDExMTEzLDExMTE1LDExMTIxLDExMTM2LDExMTQyLDEsODcxMiw5NywxMTQsMTAxLDU5LDEsODQ1MywxMDUsMTEwLDQsMiw1OSwxMTYsMTExMjksMTExMzEsMSw4NzM0LDEwNSwxMDEsNTksMSwxMDcxNywxMDAsMTExLDExNiw1OSwxLDMwNSw0LDUsNTksOTksMTAxLDEwOCwxMTIsMTExNTQsMTExNTYsMTExNjEsMTExNzksMTExODYsMSw4NzQ3LDk3LDEwOCw1OSwxLDg4OTAsNCwyLDEwMywxMTQsMTExNjcsMTExNzMsMTAxLDExNCwxMTUsNTksMSw4NDg0LDk5LDk3LDEwOCw1OSwxLDg4OTAsOTcsMTE0LDEwNCwxMDcsNTksMSwxMDc3NSwxMTQsMTExLDEwMCw1OSwxLDEwODEyLDQsNCw5OSwxMDMsMTEyLDExNiwxMTIwMiwxMTIwNiwxMTIxMSwxMTIxNiwxMjEsNTksMSwxMTA1LDExMSwxMTAsNTksMSwzMDMsMTAyLDU5LDMsNTUzNDksNTY2NjYsOTcsNTksMSw5NTMsMTE0LDExMSwxMDAsNTksMSwxMDgxMiwxMTcsMTAxLDExNSwxMTYsNSwxOTEsMSw1OSwxMTIzNSwxLDE5MSw0LDIsOTksMTA1LDExMjQzLDExMjQ4LDExNCw1OSwzLDU1MzQ5LDU2NTEwLDExMCw0LDUsNTksNjksMTAwLDExNSwxMTgsMTEyNjEsMTEyNjMsMTEyNjYsMTEyNzEsMTEyODIsMSw4NzEyLDU5LDEsODk1MywxMTEsMTE2LDU5LDEsODk0OSw0LDIsNTksMTE4LDExMjc3LDExMjc5LDEsODk0OCw1OSwxLDg5NDcsNTksMSw4NzEyLDQsMiw1OSwxMDUsMTEyOTEsMTEyOTMsMSw4MjkwLDEwOCwxMDAsMTAxLDU5LDEsMjk3LDQsMiwxMDcsMTA5LDExMzA1LDExMzEwLDk5LDEyMSw1OSwxLDExMTAsMTA4LDUsMjM5LDEsNTksMTEzMTYsMSwyMzksNCw2LDk5LDEwMiwxMDksMTExLDExNSwxMTcsMTEzMzIsMTEzNDYsMTEzNTEsMTEzNTcsMTEzNjMsMTEzODAsNCwyLDEwNSwxMjEsMTEzMzgsMTEzNDMsMTE0LDk5LDU5LDEsMzA5LDU5LDEsMTA4MSwxMTQsNTksMyw1NTM0OSw1NjYxNSw5NywxMTYsMTA0LDU5LDEsNTY3LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2Nyw0LDIsOTksMTAxLDExMzY5LDExMzc0LDExNCw1OSwzLDU1MzQ5LDU2NTExLDExNCw5OSwxMjEsNTksMSwxMTEyLDEwNyw5OSwxMjEsNTksMSwxMTA4LDQsOCw5Nyw5OSwxMDIsMTAzLDEwNCwxMDYsMTExLDExNSwxMTQwNCwxMTQxOCwxMTQzMywxMTQzOCwxMTQ0NSwxMTQ1MCwxMTQ1NSwxMTQ2MSwxMTIsMTEyLDk3LDQsMiw1OSwxMTgsMTE0MTMsMTE0MTUsMSw5NTQsNTksMSwxMDA4LDQsMiwxMDEsMTIxLDExNDI0LDExNDMwLDEwMCwxMDUsMTA4LDU5LDEsMzExLDU5LDEsMTA4MiwxMTQsNTksMyw1NTM0OSw1NjYxNiwxMTQsMTAxLDEwMSwxMTAsNTksMSwzMTIsOTksMTIxLDU5LDEsMTA5Myw5OSwxMjEsNTksMSwxMTE2LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2OCw5OSwxMTQsNTksMyw1NTM0OSw1NjUxMiw0LDIzLDY1LDY2LDY5LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA2LDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCwxMTUxNSwxMTUzOCwxMTU0NCwxMTU1NSwxMTU2MCwxMTcyMSwxMTc4MCwxMTgxOCwxMTg2OCwxMjEzNiwxMjE2MCwxMjE3MSwxMjIwMywxMjIwOCwxMjI0NiwxMjI3NSwxMjMyNywxMjUwOSwxMjUyMywxMjU2OSwxMjY0MSwxMjczMiwxMjc1Miw0LDMsOTcsMTE0LDExNiwxMTUyMywxMTUyOCwxMTUzMiwxMTQsMTE0LDU5LDEsODY2NiwxMTQsNTksMSw4NjU2LDk3LDEwNSwxMDgsNTksMSwxMDUyMyw5NywxMTQsMTE0LDU5LDEsMTA1MTAsNCwyLDU5LDEwMywxMTU1MCwxMTU1MiwxLDg4MDYsNTksMSwxMDg5MSw5NywxMTQsNTksMSwxMDU5NCw0LDksOTksMTAxLDEwMywxMDksMTEwLDExMiwxMTMsMTE0LDExNiwxMTU4MCwxMTU4NiwxMTU5NCwxMTYwMCwxMTYwNiwxMTYyNCwxMTYyNywxMTYzNiwxMTY5NCwxMTcsMTE2LDEwMSw1OSwxLDMxNCwxMDksMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzYsMTE0LDk3LDExMCw1OSwxLDg0NjYsOTgsMTAwLDk3LDU5LDEsOTU1LDEwMyw0LDMsNTksMTAwLDEwOCwxMTYxNSwxMTYxNywxMTYyMCwxLDEwMjE2LDU5LDEsMTA2NDEsMTAxLDU5LDEsMTAyMTYsNTksMSwxMDg4NSwxMTcsMTExLDUsMTcxLDEsNTksMTE2MzQsMSwxNzEsMTE0LDQsOCw1OSw5OCwxMDIsMTA0LDEwOCwxMTIsMTE1LDExNiwxMTY1NSwxMTY1NywxMTY2OSwxMTY3MywxMTY3NywxMTY4MSwxMTY4NSwxMTY5MCwxLDg1OTIsNCwyLDU5LDEwMiwxMTY2MywxMTY2NSwxLDg2NzYsMTE1LDU5LDEsMTA1MjcsMTE1LDU5LDEsMTA1MjUsMTA3LDU5LDEsODYxNywxMTIsNTksMSw4NjE5LDEwOCw1OSwxLDEwNTUzLDEwNSwxMDksNTksMSwxMDYxMSwxMDgsNTksMSw4NjEwLDQsMyw1OSw5NywxMDEsMTE3MDIsMTE3MDQsMTE3MDksMSwxMDkyMywxMDUsMTA4LDU5LDEsMTA1MjEsNCwyLDU5LDExNSwxMTcxNSwxMTcxNywxLDEwOTI1LDU5LDMsMTA5MjUsNjUwMjQsNCwzLDk3LDk4LDExNCwxMTcyOSwxMTczNCwxMTczOSwxMTQsMTE0LDU5LDEsMTA1MDgsMTE0LDEwNyw1OSwxLDEwMDk4LDQsMiw5NywxMDcsMTE3NDUsMTE3NTgsOTksNCwyLDEwMSwxMDcsMTE3NTIsMTE3NTUsNTksMSwxMjMsNTksMSw5MSw0LDIsMTAxLDExNSwxMTc2NCwxMTc2Nyw1OSwxLDEwNjM1LDEwOCw0LDIsMTAwLDExNywxMTc3NCwxMTc3Nyw1OSwxLDEwNjM5LDU5LDEsMTA2MzcsNCw0LDk3LDEwMSwxMTcsMTIxLDExNzkwLDExNzk2LDExODExLDExODE1LDExNCwxMTEsMTEwLDU5LDEsMzE4LDQsMiwxMDAsMTA1LDExODAyLDExODA3LDEwNSwxMDgsNTksMSwzMTYsMTA4LDU5LDEsODk2OCw5OCw1OSwxLDEyMyw1OSwxLDEwODMsNCw0LDk5LDExMywxMTQsMTE1LDExODI4LDExODMyLDExODQ1LDExODY0LDk3LDU5LDEsMTA1NTAsMTE3LDExMSw0LDIsNTksMTE0LDExODQwLDExODQyLDEsODIyMCw1OSwxLDgyMjIsNCwyLDEwMCwxMTcsMTE4NTEsMTE4NTcsMTA0LDk3LDExNCw1OSwxLDEwNTk5LDExNSwxMDQsOTcsMTE0LDU5LDEsMTA1NzEsMTA0LDU5LDEsODYyNiw0LDUsNTksMTAyLDEwMywxMTMsMTE1LDExODgwLDExODgyLDEyMDA4LDEyMDExLDEyMDMxLDEsODgwNCwxMTYsNCw1LDk3LDEwNCwxMDgsMTE0LDExNiwxMTg5NSwxMTkxMywxMTkzNSwxMTk0NywxMTk5NiwxMTQsMTE0LDExMSwxMTksNCwyLDU5LDExNiwxMTkwNSwxMTkwNywxLDg1OTIsOTcsMTA1LDEwOCw1OSwxLDg2MTAsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTAwLDExNywxMTkyNSwxMTkzMSwxMTEsMTE5LDExMCw1OSwxLDg2MzcsMTEyLDU5LDEsODYzNiwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0NywxMDUsMTAzLDEwNCwxMTYsNCwzLDk3LDEwNCwxMTUsMTE5NTksMTE5NzQsMTE5ODQsMTE0LDExNCwxMTEsMTE5LDQsMiw1OSwxMTUsMTE5NjksMTE5NzEsMSw4NTk2LDU5LDEsODY0Niw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDExNSw1OSwxLDg2NTEsMTEzLDExNywxMDUsMTAzLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MjEsMTA0LDExNCwxMDEsMTAxLDExNiwxMDUsMTA5LDEwMSwxMTUsNTksMSw4OTA3LDU5LDEsODkyMiw0LDMsNTksMTEzLDExNSwxMjAxOSwxMjAyMSwxMjAyNCwxLDg4MDQsNTksMSw4ODA2LDEwOCw5NywxMTAsMTE2LDU5LDEsMTA4NzcsNCw1LDU5LDk5LDEwMCwxMDMsMTE1LDEyMDQzLDEyMDQ1LDEyMDQ5LDEyMDcwLDEyMDgzLDEsMTA4NzcsOTksNTksMSwxMDkyMCwxMTEsMTE2LDQsMiw1OSwxMTEsMTIwNTcsMTIwNTksMSwxMDg3OSw0LDIsNTksMTE0LDEyMDY1LDEyMDY3LDEsMTA4ODEsNTksMSwxMDg4Myw0LDIsNTksMTAxLDEyMDc2LDEyMDc5LDMsODkyMiw2NTAyNCwxMTUsNTksMSwxMDg5OSw0LDUsOTcsMTAwLDEwMSwxMDMsMTE1LDEyMDk1LDEyMTAzLDEyMTA4LDEyMTI2LDEyMTMxLDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDg4NSwxMTEsMTE2LDU5LDEsODkxOCwxMTMsNCwyLDEwMywxMTMsMTIxMTUsMTIxMjAsMTE2LDExNCw1OSwxLDg5MjIsMTAzLDExNiwxMTQsNTksMSwxMDg5MSwxMTYsMTE0LDU5LDEsODgyMiwxMDUsMTA5LDU5LDEsODgxOCw0LDMsMTA1LDEwOCwxMTQsMTIxNDQsMTIxNTAsMTIxNTYsMTE1LDEwNCwxMTYsNTksMSwxMDYyMCwxMTEsMTExLDExNCw1OSwxLDg5NzAsNTksMyw1NTM0OSw1NjYxNyw0LDIsNTksNjksMTIxNjYsMTIxNjgsMSw4ODIyLDU5LDEsMTA4OTcsNCwyLDk3LDk4LDEyMTc3LDEyMTk4LDExNCw0LDIsMTAwLDExNywxMjE4NCwxMjE4Nyw1OSwxLDg2MzcsNCwyLDU5LDEwOCwxMjE5MywxMjE5NSwxLDg2MzYsNTksMSwxMDYwMiwxMDgsMTA3LDU5LDEsOTYwNCw5OSwxMjEsNTksMSwxMTEzLDQsNSw1OSw5Nyw5OSwxMDQsMTE2LDEyMjIwLDEyMjIyLDEyMjI3LDEyMjM1LDEyMjQxLDEsODgxMCwxMTQsMTE0LDU5LDEsODY0NywxMTEsMTE0LDExMCwxMDEsMTE0LDU5LDEsODk5MCw5NywxMTQsMTAwLDU5LDEsMTA2MDMsMTE0LDEwNSw1OSwxLDk3MjIsNCwyLDEwNSwxMTEsMTIyNTIsMTIyNTgsMTAwLDExMSwxMTYsNTksMSwzMjAsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDEyMjY3LDEyMjY5LDEsOTEzNiw5OSwxMDQsMTAxLDU5LDEsOTEzNiw0LDQsNjksOTcsMTAxLDExNSwxMjI4NSwxMjI4OCwxMjMwMywxMjMyMiw1OSwxLDg4MDgsMTEyLDQsMiw1OSwxMTIsMTIyOTUsMTIyOTcsMSwxMDg4OSwxMTQsMTExLDEyMCw1OSwxLDEwODg5LDQsMiw1OSwxMTMsMTIzMDksMTIzMTEsMSwxMDg4Nyw0LDIsNTksMTEzLDEyMzE3LDEyMzE5LDEsMTA4ODcsNTksMSw4ODA4LDEwNSwxMDksNTksMSw4OTM0LDQsOCw5Nyw5OCwxMTAsMTExLDExMiwxMTYsMTE5LDEyMiwxMjM0NSwxMjM1OSwxMjM2NCwxMjQyMSwxMjQ0NiwxMjQ2NywxMjQ3NCwxMjQ5MCw0LDIsMTEwLDExNCwxMjM1MSwxMjM1NSwxMDMsNTksMSwxMDIyMCwxMTQsNTksMSw4NzAxLDExNCwxMDcsNTksMSwxMDIxNCwxMDMsNCwzLDEwOCwxMDksMTE0LDEyMzczLDEyNDAxLDEyNDA5LDEwMSwxMDIsMTE2LDQsMiw5NywxMTQsMTIzODIsMTIzODksMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMjksMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMxLDk3LDExMiwxMTUsMTE2LDExMSw1OSwxLDEwMjM2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMCwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDQsMiwxMDgsMTE0LDEyNDMzLDEyNDM5LDEwMSwxMDIsMTE2LDU5LDEsODYxOSwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjIwLDQsMyw5NywxMDIsMTA4LDEyNDU0LDEyNDU4LDEyNDYyLDExNCw1OSwxLDEwNjI5LDU5LDMsNTUzNDksNTY2NjksMTE3LDExNSw1OSwxLDEwNzk3LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA0LDQsMiw5Nyw5OCwxMjQ4MCwxMjQ4NSwxMTUsMTE2LDU5LDEsODcyNyw5NywxMTQsNTksMSw5NSw0LDMsNTksMTAxLDEwMiwxMjQ5OCwxMjUwMCwxMjUwNiwxLDk2NzQsMTEwLDEwMywxMDEsNTksMSw5Njc0LDU5LDEsMTA3MzEsOTcsMTE0LDQsMiw1OSwxMDgsMTI1MTcsMTI1MTksMSw0MCwxMTYsNTksMSwxMDY0Myw0LDUsOTcsOTksMTA0LDEwOSwxMTYsMTI1MzUsMTI1NDAsMTI1NDgsMTI1NjEsMTI1NjQsMTE0LDExNCw1OSwxLDg2NDYsMTExLDExNCwxMTAsMTAxLDExNCw1OSwxLDg5OTEsOTcsMTE0LDQsMiw1OSwxMDAsMTI1NTYsMTI1NTgsMSw4NjUxLDU5LDEsMTA2MDUsNTksMSw4MjA2LDExNCwxMDUsNTksMSw4ODk1LDQsNiw5Nyw5OSwxMDQsMTA1LDExMywxMTYsMTI1ODMsMTI1ODksMTI1OTQsMTI1OTcsMTI2MTQsMTI2MzUsMTEzLDExNywxMTEsNTksMSw4MjQ5LDExNCw1OSwzLDU1MzQ5LDU2NTEzLDU5LDEsODYyNCwxMDksNCwzLDU5LDEwMSwxMDMsMTI2MDYsMTI2MDgsMTI2MTEsMSw4ODE4LDU5LDEsMTA4OTMsNTksMSwxMDg5NSw0LDIsOTgsMTE3LDEyNjIwLDEyNjIzLDU5LDEsOTEsMTExLDQsMiw1OSwxMTQsMTI2MzAsMTI2MzIsMSw4MjE2LDU5LDEsODIxOCwxMTQsMTExLDEwNyw1OSwxLDMyMiw1LDYwLDgsNTksOTksMTAwLDEwNCwxMDUsMTA4LDExMywxMTQsMTI2NjAsMTI2NjIsMTI2NzUsMTI2ODAsMTI2ODYsMTI2OTIsMTI2OTgsMTI3MDUsMSw2MCw0LDIsOTksMTA1LDEyNjY4LDEyNjcxLDU5LDEsMTA5MTgsMTE0LDU5LDEsMTA4NzMsMTExLDExNiw1OSwxLDg5MTgsMTE0LDEwMSwxMDEsNTksMSw4OTA3LDEwOSwxMDEsMTE1LDU5LDEsODkwNSw5NywxMTQsMTE0LDU5LDEsMTA2MTQsMTE3LDEwMSwxMTUsMTE2LDU5LDEsMTA4NzUsNCwyLDgwLDEwNSwxMjcxMSwxMjcxNiw5NywxMTQsNTksMSwxMDY0Niw0LDMsNTksMTAxLDEwMiwxMjcyNCwxMjcyNiwxMjcyOSwxLDk2NjcsNTksMSw4ODg0LDU5LDEsOTY2NiwxMTQsNCwyLDEwMCwxMTcsMTI3MzksMTI3NDYsMTE1LDEwNCw5NywxMTQsNTksMSwxMDU3MCwxMDQsOTcsMTE0LDU5LDEsMTA1OTgsNCwyLDEwMSwxMTAsMTI3NTgsMTI3NjgsMTE0LDExNiwxMTAsMTAxLDExMywxMTMsNTksMyw4ODA4LDY1MDI0LDY5LDU5LDMsODgwOCw2NTAyNCw0LDE0LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMCwxMTEsMTEyLDExNSwxMTcsMTI4MDMsMTI4MDksMTI4OTMsMTI5MDgsMTI5MTQsMTI5MjgsMTI5MzMsMTI5MzcsMTMwMTEsMTMwMjUsMTMwMzIsMTMwNDksMTMwNTIsMTMwNjksNjgsMTExLDExNiw1OSwxLDg3NjIsNCw0LDk5LDEwOCwxMTIsMTE0LDEyODE5LDEyODI3LDEyODQ5LDEyODg3LDExNCw1LDE3NSwxLDU5LDEyODI1LDEsMTc1LDQsMiwxMDEsMTE2LDEyODMzLDEyODM2LDU5LDEsOTc5NCw0LDIsNTksMTAxLDEyODQyLDEyODQ0LDEsMTAwMTYsMTE1LDEwMSw1OSwxLDEwMDE2LDQsMiw1OSwxMTUsMTI4NTUsMTI4NTcsMSw4NjE0LDExNiwxMTEsNCw0LDU5LDEwMCwxMDgsMTE3LDEyODY5LDEyODcxLDEyODc3LDEyODgzLDEsODYxNCwxMTEsMTE5LDExMCw1OSwxLDg2MTUsMTAxLDEwMiwxMTYsNTksMSw4NjEyLDExMiw1OSwxLDg2MTMsMTA3LDEwMSwxMTQsNTksMSw5NjQ2LDQsMiwxMTEsMTIxLDEyODk5LDEyOTA1LDEwOSwxMDksOTcsNTksMSwxMDc5Myw1OSwxLDEwODQsOTcsMTE1LDEwNCw1OSwxLDgyMTIsOTcsMTE1LDExNywxMTQsMTAxLDEwMCw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSw4NzM3LDExNCw1OSwzLDU1MzQ5LDU2NjE4LDExMSw1OSwxLDg0ODcsNCwzLDk5LDEwMCwxMTAsMTI5NDUsMTI5NTQsMTI5ODUsMTE0LDExMSw1LDE4MSwxLDU5LDEyOTUyLDEsMTgxLDQsNCw1OSw5Nyw5OSwxMDAsMTI5NjQsMTI5NjYsMTI5NzEsMTI5NzYsMSw4NzM5LDExNSwxMTYsNTksMSw0MiwxMDUsMTE0LDU5LDEsMTA5OTIsMTExLDExNiw1LDE4MywxLDU5LDEyOTgzLDEsMTgzLDExNywxMTUsNCwzLDU5LDk4LDEwMCwxMjk5NSwxMjk5NywxMzAwMCwxLDg3MjIsNTksMSw4ODYzLDQsMiw1OSwxMTcsMTMwMDYsMTMwMDgsMSw4NzYwLDU5LDEsMTA3OTQsNCwyLDk5LDEwMCwxMzAxNywxMzAyMSwxMTIsNTksMSwxMDk3MSwxMTQsNTksMSw4MjMwLDExMiwxMDgsMTE3LDExNSw1OSwxLDg3MjMsNCwyLDEwMCwxMTIsMTMwMzgsMTMwNDQsMTAxLDEwOCwxMTUsNTksMSw4ODcxLDEwMiw1OSwzLDU1MzQ5LDU2NjcwLDU5LDEsODcyMyw0LDIsOTksMTE2LDEzMDU4LDEzMDYzLDExNCw1OSwzLDU1MzQ5LDU2NTE0LDExMiwxMTEsMTE1LDU5LDEsODc2Niw0LDMsNTksMTA4LDEwOSwxMzA3NywxMzA3OSwxMzA4NywxLDk1NiwxMTYsMTA1LDEwOSw5NywxMTIsNTksMSw4ODg4LDk3LDExMiw1OSwxLDg4ODgsNCwyNCw3MSw3Niw4Miw4Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA4LDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEzMTQyLDEzMTY1LDEzMjE3LDEzMjI5LDEzMjQ3LDEzMzMwLDEzMzU5LDEzNDE0LDEzNDIwLDEzNTA4LDEzNTEzLDEzNTc5LDEzNjAyLDEzNjI2LDEzNjMxLDEzNzYyLDEzNzY3LDEzODU1LDEzOTM2LDEzOTk1LDE0MjE0LDE0Mjg1LDE0MzEyLDE0NDMyLDQsMiwxMDMsMTE2LDEzMTQ4LDEzMTUyLDU5LDMsODkyMSw4MjQsNCwyLDU5LDExOCwxMzE1OCwxMzE2MSwzLDg4MTEsODQwMiw1OSwzLDg4MTEsODI0LDQsMywxMDEsMTA4LDExNiwxMzE3MywxMzIwMCwxMzIwNCwxMDIsMTE2LDQsMiw5NywxMTQsMTMxODEsMTMxODgsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1MywxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NCw1OSwzLDg5MjAsODI0LDQsMiw1OSwxMTgsMTMyMTAsMTMyMTMsMyw4ODEwLDg0MDIsNTksMyw4ODEwLDgyNCwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NSw0LDIsNjgsMTAwLDEzMjM1LDEzMjQxLDk3LDExNSwxMDQsNTksMSw4ODc5LDk3LDExNSwxMDQsNTksMSw4ODc4LDQsNSw5OCw5OSwxMTAsMTEyLDExNiwxMzI1OSwxMzI2NCwxMzI3MCwxMzI3NSwxMzMwOCwxMDgsOTcsNTksMSw4NzExLDExNywxMTYsMTAxLDU5LDEsMzI0LDEwMyw1OSwzLDg3MzYsODQwMiw0LDUsNTksNjksMTA1LDExMSwxMTIsMTMyODcsMTMyODksMTMyOTMsMTMyOTgsMTMzMDIsMSw4Nzc3LDU5LDMsMTA4NjQsODI0LDEwMCw1OSwzLDg3NzksODI0LDExNSw1OSwxLDMyOSwxMTQsMTExLDEyMCw1OSwxLDg3NzcsMTE3LDExNCw0LDIsNTksOTcsMTMzMTYsMTMzMTgsMSw5ODM4LDEwOCw0LDIsNTksMTE1LDEzMzI1LDEzMzI3LDEsOTgzOCw1OSwxLDg0NjksNCwyLDExNSwxMTcsMTMzMzYsMTMzNDQsMTEyLDUsMTYwLDEsNTksMTMzNDIsMSwxNjAsMTA5LDExMiw0LDIsNTksMTAxLDEzMzUyLDEzMzU1LDMsODc4Miw4MjQsNTksMyw4NzgzLDgyNCw0LDUsOTcsMTAxLDExMSwxMTcsMTIxLDEzMzcxLDEzMzg1LDEzMzkxLDEzNDA3LDEzNDExLDQsMiwxMTIsMTE0LDEzMzc3LDEzMzgwLDU5LDEsMTA4MTksMTExLDExMCw1OSwxLDMyOCwxMDAsMTA1LDEwOCw1OSwxLDMyNiwxMTAsMTAzLDQsMiw1OSwxMDAsMTMzOTksMTM0MDEsMSw4Nzc1LDExMSwxMTYsNTksMywxMDg2MSw4MjQsMTEyLDU5LDEsMTA4MTgsNTksMSwxMDg1LDk3LDExNSwxMDQsNTksMSw4MjExLDQsNyw1OSw2NSw5NywxMDAsMTEzLDExNSwxMjAsMTM0MzYsMTM0MzgsMTM0NDMsMTM0NjYsMTM0NzIsMTM0NzgsMTM0OTQsMSw4ODAwLDExNCwxMTQsNTksMSw4NjYzLDExNCw0LDIsMTA0LDExNCwxMzQ1MCwxMzQ1NCwxMDcsNTksMSwxMDUzMiw0LDIsNTksMTExLDEzNDYwLDEzNDYyLDEsODU5OSwxMTksNTksMSw4NTk5LDExMSwxMTYsNTksMyw4Nzg0LDgyNCwxMTcsMTA1LDExOCw1OSwxLDg4MDIsNCwyLDEwMSwxMDUsMTM0ODQsMTM0ODksOTcsMTE0LDU5LDEsMTA1MzYsMTA5LDU5LDMsODc3MCw4MjQsMTA1LDExNSwxMTYsNCwyLDU5LDExNSwxMzUwMywxMzUwNSwxLDg3MDgsNTksMSw4NzA4LDExNCw1OSwzLDU1MzQ5LDU2NjE5LDQsNCw2OSwxMDEsMTE1LDExNiwxMzUyMywxMzUyNywxMzU2MywxMzU2OCw1OSwzLDg4MDcsODI0LDQsMyw1OSwxMTMsMTE1LDEzNTM1LDEzNTM3LDEzNTU5LDEsODgxNyw0LDMsNTksMTEzLDExNSwxMzU0NSwxMzU0NywxMzU1MSwxLDg4MTcsNTksMyw4ODA3LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc4LDgyNCw1OSwzLDEwODc4LDgyNCwxMDUsMTA5LDU5LDEsODgyMSw0LDIsNTksMTE0LDEzNTc0LDEzNTc2LDEsODgxNSw1OSwxLDg4MTUsNCwzLDY1LDk3LDExMiwxMzU4NywxMzU5MiwxMzU5NywxMTQsMTE0LDU5LDEsODY1NCwxMTQsMTE0LDU5LDEsODYyMiw5NywxMTQsNTksMSwxMDk5NCw0LDMsNTksMTE1LDExOCwxMzYxMCwxMzYxMiwxMzYyMywxLDg3MTUsNCwyLDU5LDEwMCwxMzYxOCwxMzYyMCwxLDg5NTYsNTksMSw4OTU0LDU5LDEsODcxNSw5OSwxMjEsNTksMSwxMTE0LDQsNyw2NSw2OSw5NywxMDAsMTAxLDExNSwxMTYsMTM2NDcsMTM2NTIsMTM2NTYsMTM2NjEsMTM2NjUsMTM3MzcsMTM3NDIsMTE0LDExNCw1OSwxLDg2NTMsNTksMyw4ODA2LDgyNCwxMTQsMTE0LDU5LDEsODYwMiwxMTQsNTksMSw4MjI5LDQsNCw1OSwxMDIsMTEzLDExNSwxMzY3NSwxMzY3NywxMzcwMywxMzcyNSwxLDg4MTYsMTE2LDQsMiw5NywxMTQsMTM2ODQsMTM2OTEsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYyMiw0LDMsNTksMTEzLDExNSwxMzcxMSwxMzcxMywxMzcxNywxLDg4MTYsNTksMyw4ODA2LDgyNCwxMDgsOTcsMTEwLDExNiw1OSwzLDEwODc3LDgyNCw0LDIsNTksMTE1LDEzNzMxLDEzNzM0LDMsMTA4NzcsODI0LDU5LDEsODgxNCwxMDUsMTA5LDU5LDEsODgyMCw0LDIsNTksMTE0LDEzNzQ4LDEzNzUwLDEsODgxNCwxMDUsNCwyLDU5LDEwMSwxMzc1NywxMzc1OSwxLDg5MzgsNTksMSw4OTQwLDEwNSwxMDAsNTksMSw4NzQwLDQsMiwxMTIsMTE2LDEzNzczLDEzNzc4LDEwMiw1OSwzLDU1MzQ5LDU2NjcxLDUsMTcyLDMsNTksMTA1LDExMCwxMzc4NywxMzc4OSwxMzgyOSwxLDE3MiwxMTAsNCw0LDU5LDY5LDEwMCwxMTgsMTM4MDAsMTM4MDIsMTM4MDYsMTM4MTIsMSw4NzEzLDU5LDMsODk1Myw4MjQsMTExLDExNiw1OSwzLDg5NDksODI0LDQsMyw5Nyw5OCw5OSwxMzgyMCwxMzgyMywxMzgyNiw1OSwxLDg3MTMsNTksMSw4OTUxLDU5LDEsODk1MCwxMDUsNCwyLDU5LDExOCwxMzgzNiwxMzgzOCwxLDg3MTYsNCwzLDk3LDk4LDk5LDEzODQ2LDEzODQ5LDEzODUyLDU5LDEsODcxNiw1OSwxLDg5NTgsNTksMSw4OTU3LDQsMyw5NywxMTEsMTE0LDEzODYzLDEzODkyLDEzODk5LDExNCw0LDQsNTksOTcsMTE1LDExNiwxMzg3NCwxMzg3NiwxMzg4MywxMzg4OCwxLDg3NDIsMTA4LDEwOCwxMDEsMTA4LDU5LDEsODc0MiwxMDgsNTksMywxMTAwNSw4NDIxLDU5LDMsODcwNiw4MjQsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzIsNCwzLDU5LDk5LDEwMSwxMzkwNywxMzkwOSwxMzkxNCwxLDg4MzIsMTE3LDEwMSw1OSwxLDg5MjgsNCwyLDU5LDk5LDEzOTIwLDEzOTIzLDMsMTA5MjcsODI0LDQsMiw1OSwxMDEsMTM5MjksMTM5MzEsMSw4ODMyLDExMyw1OSwzLDEwOTI3LDgyNCw0LDQsNjUsOTcsMTA1LDExNiwxMzk0NiwxMzk1MSwxMzk3MSwxMzk4MiwxMTQsMTE0LDU5LDEsODY1NSwxMTQsMTE0LDQsMyw1OSw5OSwxMTksMTM5NjEsMTM5NjMsMTM5NjcsMSw4NjAzLDU5LDMsMTA1NDcsODI0LDU5LDMsODYwNSw4MjQsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwMywxMTQsMTA1LDQsMiw1OSwxMDEsMTM5OTAsMTM5OTIsMSw4OTM5LDU5LDEsODk0MSw0LDcsOTksMTA0LDEwNSwxMDksMTEyLDExMywxMTcsMTQwMTEsMTQwMzYsMTQwNjAsMTQwODAsMTQwODUsMTQwOTAsMTQxMDYsNCw0LDU5LDk5LDEwMSwxMTQsMTQwMjEsMTQwMjMsMTQwMjgsMTQwMzIsMSw4ODMzLDExNywxMDEsNTksMSw4OTI5LDU5LDMsMTA5MjgsODI0LDU5LDMsNTUzNDksNTY1MTUsMTExLDExNCwxMTYsNCwyLDEwOSwxMTIsMTQwNDUsMTQwNTAsMTA1LDEwMCw1OSwxLDg3NDAsOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDIsMTA5LDQsMiw1OSwxMDEsMTQwNjcsMTQwNjksMSw4NzY5LDQsMiw1OSwxMTMsMTQwNzUsMTQwNzcsMSw4NzcyLDU5LDEsODc3MiwxMDUsMTAwLDU5LDEsODc0MCw5NywxMTQsNTksMSw4NzQyLDExNSwxMTcsNCwyLDk4LDExMiwxNDA5OCwxNDEwMiwxMDEsNTksMSw4OTMwLDEwMSw1OSwxLDg5MzEsNCwzLDk4LDk5LDExMiwxNDExNCwxNDE1NywxNDE3MSw0LDQsNTksNjksMTAxLDExNSwxNDEyNCwxNDEyNiwxNDEzMCwxNDEzMywxLDg4MzYsNTksMywxMDk0OSw4MjQsNTksMSw4ODQwLDEwMSwxMTYsNCwyLDU5LDEwMSwxNDE0MSwxNDE0NCwzLDg4MzQsODQwMiwxMTMsNCwyLDU5LDExMywxNDE1MSwxNDE1MywxLDg4NDAsNTksMywxMDk0OSw4MjQsOTksNCwyLDU5LDEwMSwxNDE2NCwxNDE2NiwxLDg4MzMsMTEzLDU5LDMsMTA5MjgsODI0LDQsNCw1OSw2OSwxMDEsMTE1LDE0MTgxLDE0MTgzLDE0MTg3LDE0MTkwLDEsODgzNyw1OSwzLDEwOTUwLDgyNCw1OSwxLDg4NDEsMTAxLDExNiw0LDIsNTksMTAxLDE0MTk4LDE0MjAxLDMsODgzNSw4NDAyLDExMyw0LDIsNTksMTEzLDE0MjA4LDE0MjEwLDEsODg0MSw1OSwzLDEwOTUwLDgyNCw0LDQsMTAzLDEwNSwxMDgsMTE0LDE0MjI0LDE0MjI4LDE0MjM4LDE0MjQyLDEwOCw1OSwxLDg4MjUsMTA4LDEwMCwxMDEsNSwyNDEsMSw1OSwxNDIzNiwxLDI0MSwxMDMsNTksMSw4ODI0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTQyNTQsMTQyNjksMTAxLDEwMiwxMTYsNCwyLDU5LDEwMSwxNDI2MywxNDI2NSwxLDg5MzgsMTEzLDU5LDEsODk0MCwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxNDI3OSwxNDI4MSwxLDg5MzksMTEzLDU5LDEsODk0MSw0LDIsNTksMTA5LDE0MjkxLDE0MjkzLDEsOTU3LDQsMyw1OSwxMDEsMTE1LDE0MzAxLDE0MzAzLDE0MzA4LDEsMzUsMTE0LDExMSw1OSwxLDg0NzAsMTEyLDU5LDEsODE5OSw0LDksNjgsNzIsOTcsMTAwLDEwMywxMDUsMTA4LDExNCwxMTUsMTQzMzIsMTQzMzgsMTQzNDQsMTQzNDksMTQzNTUsMTQzNjksMTQzNzYsMTQ0MDgsMTQ0MjYsOTcsMTE1LDEwNCw1OSwxLDg4NzcsOTcsMTE0LDExNCw1OSwxLDEwNTAwLDExMiw1OSwzLDg3ODEsODQwMiw5NywxMTUsMTA0LDU5LDEsODg3Niw0LDIsMTAxLDExNiwxNDM2MSwxNDM2NSw1OSwzLDg4MDUsODQwMiw1OSwzLDYyLDg0MDIsMTEwLDEwMiwxMDUsMTEwLDU5LDEsMTA3MTgsNCwzLDY1LDEwMSwxMTYsMTQzODQsMTQzODksMTQzOTMsMTE0LDExNCw1OSwxLDEwNDk4LDU5LDMsODgwNCw4NDAyLDQsMiw1OSwxMTQsMTQzOTksMTQ0MDIsMyw2MCw4NDAyLDEwNSwxMDEsNTksMyw4ODg0LDg0MDIsNCwyLDY1LDExNiwxNDQxNCwxNDQxOSwxMTQsMTE0LDU5LDEsMTA0OTksMTE0LDEwNSwxMDEsNTksMyw4ODg1LDg0MDIsMTA1LDEwOSw1OSwzLDg3NjQsODQwMiw0LDMsNjUsOTcsMTEwLDE0NDQwLDE0NDQ1LDE0NDY4LDExNCwxMTQsNTksMSw4NjYyLDExNCw0LDIsMTA0LDExNCwxNDQ1MiwxNDQ1NiwxMDcsNTksMSwxMDUzMSw0LDIsNTksMTExLDE0NDYyLDE0NDY0LDEsODU5OCwxMTksNTksMSw4NTk4LDEwMSw5NywxMTQsNTksMSwxMDUzNSw0LDE4LDgzLDk3LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDE0NTEyLDE0NTE1LDE0NTM1LDE0NTYwLDE0NTk3LDE0NjAzLDE0NjE4LDE0NjQzLDE0NjU3LDE0NjYyLDE0NzAxLDE0NzQxLDE0NzQ3LDE0NzY5LDE0ODUxLDE0ODc3LDE0OTA3LDE0OTE2LDU5LDEsOTQxNiw0LDIsOTksMTE1LDE0NTIxLDE0NTMxLDExNywxMTYsMTAxLDUsMjQzLDEsNTksMTQ1MjksMSwyNDMsMTE2LDU5LDEsODg1OSw0LDIsMTA1LDEyMSwxNDU0MSwxNDU1NywxMTQsNCwyLDU5LDk5LDE0NTQ4LDE0NTUwLDEsODg1OCw1LDI0NCwxLDU5LDE0NTU1LDEsMjQ0LDU5LDEsMTA4Niw0LDUsOTcsOTgsMTA1LDExMSwxMTUsMTQ1NzIsMTQ1NzcsMTQ1ODMsMTQ1ODcsMTQ1OTEsMTE1LDEwNCw1OSwxLDg4NjEsMTA4LDk3LDk5LDU5LDEsMzM3LDExOCw1OSwxLDEwODA4LDExNiw1OSwxLDg4NTcsMTExLDEwOCwxMDAsNTksMSwxMDY4NCwxMDgsMTA1LDEwMyw1OSwxLDMzOSw0LDIsOTksMTE0LDE0NjA5LDE0NjE0LDEwNSwxMTQsNTksMSwxMDY4Nyw1OSwzLDU1MzQ5LDU2NjIwLDQsMywxMTEsMTE0LDExNiwxNDYyNiwxNDYzMCwxNDY0MCwxMTAsNTksMSw3MzEsOTcsMTE4LDEwMSw1LDI0MiwxLDU5LDE0NjM4LDEsMjQyLDU5LDEsMTA2ODksNCwyLDk4LDEwOSwxNDY0OSwxNDY1NCw5NywxMTQsNTksMSwxMDY3Nyw1OSwxLDkzNywxMTAsMTE2LDU5LDEsODc1MCw0LDQsOTcsOTksMTA1LDExNiwxNDY3MiwxNDY3NywxNDY5MywxNDY5OCwxMTQsMTE0LDU5LDEsODYzNCw0LDIsMTA1LDExNCwxNDY4MywxNDY4NywxMTQsNTksMSwxMDY4NiwxMTEsMTE1LDExNSw1OSwxLDEwNjgzLDExMCwxMDEsNTksMSw4MjU0LDU5LDEsMTA2ODgsNCwzLDk3LDEwMSwxMDUsMTQ3MDksMTQ3MTQsMTQ3MTksOTksMTE0LDU5LDEsMzMzLDEwMyw5Nyw1OSwxLDk2OSw0LDMsOTksMTAwLDExMCwxNDcyNywxNDczMywxNDczNiwxMTQsMTExLDExMCw1OSwxLDk1OSw1OSwxLDEwNjc4LDExNywxMTUsNTksMSw4ODU0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY3Miw0LDMsOTcsMTAxLDEwOCwxNDc1NSwxNDc1OSwxNDc2NCwxMTQsNTksMSwxMDY3OSwxMTQsMTEyLDU5LDEsMTA2ODEsMTE3LDExNSw1OSwxLDg4NTMsNCw3LDU5LDk3LDEwMCwxMDUsMTExLDExNSwxMTgsMTQ3ODUsMTQ3ODcsMTQ3OTIsMTQ4MzEsMTQ4MzcsMTQ4NDEsMTQ4NDgsMSw4NzQ0LDExNCwxMTQsNTksMSw4NjM1LDQsNCw1OSwxMDEsMTAyLDEwOSwxNDgwMiwxNDgwNCwxNDgxNywxNDgyNCwxLDEwODQ1LDExNCw0LDIsNTksMTExLDE0ODExLDE0ODEzLDEsODUwMCwxMDIsNTksMSw4NTAwLDUsMTcwLDEsNTksMTQ4MjIsMSwxNzAsNSwxODYsMSw1OSwxNDgyOSwxLDE4NiwxMDMsMTExLDEwMiw1OSwxLDg4ODYsMTE0LDU5LDEsMTA4MzgsMTA4LDExMSwxMTIsMTAxLDU5LDEsMTA4MzksNTksMSwxMDg0Myw0LDMsOTksMTA4LDExMSwxNDg1OSwxNDg2MywxNDg3MywxMTQsNTksMSw4NTAwLDk3LDExNSwxMDQsNSwyNDgsMSw1OSwxNDg3MSwxLDI0OCwxMDgsNTksMSw4ODU2LDEwNSw0LDIsMTA4LDEwOSwxNDg4NCwxNDg5MywxMDAsMTAxLDUsMjQ1LDEsNTksMTQ4OTEsMSwyNDUsMTAxLDExNSw0LDIsNTksOTcsMTQ5MDEsMTQ5MDMsMSw4ODU1LDExNSw1OSwxLDEwODA2LDEwOSwxMDgsNSwyNDYsMSw1OSwxNDkxNCwxLDI0Niw5OCw5NywxMTQsNTksMSw5MDIxLDQsMTIsOTcsOTksMTAxLDEwMiwxMDQsMTA1LDEwOCwxMDksMTExLDExNCwxMTUsMTE3LDE0OTQ4LDE0OTkyLDE0OTk2LDE1MDMzLDE1MDM4LDE1MDY4LDE1MDkwLDE1MTg5LDE1MTkyLDE1MjIyLDE1NDI3LDE1NDQxLDExNCw0LDQsNTksOTcsMTE1LDExNiwxNDk1OSwxNDk2MSwxNDk3NiwxNDk4OSwxLDg3NDEsNSwxODIsMiw1OSwxMDgsMTQ5NjgsMTQ5NzAsMSwxODIsMTA4LDEwMSwxMDgsNTksMSw4NzQxLDQsMiwxMDUsMTA4LDE0OTgyLDE0OTg2LDEwOSw1OSwxLDEwOTk1LDU5LDEsMTEwMDUsNTksMSw4NzA2LDEyMSw1OSwxLDEwODcsMTE0LDQsNSw5OSwxMDUsMTA5LDExMiwxMTYsMTUwMDksMTUwMTQsMTUwMTksMTUwMjQsMTUwMjcsMTEwLDExNiw1OSwxLDM3LDExMSwxMDAsNTksMSw0NiwxMDUsMTA4LDU5LDEsODI0MCw1OSwxLDg4NjksMTAxLDExMCwxMDcsNTksMSw4MjQxLDExNCw1OSwzLDU1MzQ5LDU2NjIxLDQsMywxMDUsMTA5LDExMSwxNTA0NiwxNTA1NywxNTA2Myw0LDIsNTksMTE4LDE1MDUyLDE1MDU0LDEsOTY2LDU5LDEsOTgxLDEwOSw5NywxMTYsNTksMSw4NDk5LDExMCwxMDEsNTksMSw5NzQyLDQsMyw1OSwxMTYsMTE4LDE1MDc2LDE1MDc4LDE1MDg3LDEsOTYwLDk5LDEwNCwxMDIsMTExLDExNCwxMDcsNTksMSw4OTE2LDU5LDEsOTgyLDQsMiw5NywxMTcsMTUwOTYsMTUxMTksMTEwLDQsMiw5OSwxMDcsMTUxMDMsMTUxMTUsMTA3LDQsMiw1OSwxMDQsMTUxMTAsMTUxMTIsMSw4NDYzLDU5LDEsODQ2MiwxMTgsNTksMSw4NDYzLDExNSw0LDksNTksOTcsOTgsOTksMTAwLDEwMSwxMDksMTE1LDExNiwxNTE0MCwxNTE0MiwxNTE0OCwxNTE1MSwxNTE1NiwxNTE2OCwxNTE3MSwxNTE3OSwxNTE4NCwxLDQzLDk5LDEwNSwxMTQsNTksMSwxMDc4Nyw1OSwxLDg4NjIsMTA1LDExNCw1OSwxLDEwNzg2LDQsMiwxMTEsMTE3LDE1MTYyLDE1MTY1LDU5LDEsODcyNCw1OSwxLDEwNzg5LDU5LDEsMTA4NjYsMTEwLDUsMTc3LDEsNTksMTUxNzcsMSwxNzcsMTA1LDEwOSw1OSwxLDEwNzkwLDExOSwxMTEsNTksMSwxMDc5MSw1OSwxLDE3Nyw0LDMsMTA1LDExMiwxMTcsMTUyMDAsMTUyMDgsMTUyMTMsMTEwLDExNiwxMDUsMTEwLDExNiw1OSwxLDEwNzczLDEwMiw1OSwzLDU1MzQ5LDU2NjczLDExMCwxMDAsNSwxNjMsMSw1OSwxNTIyMCwxLDE2Myw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMSwxMTUsMTE3LDE1MjQ0LDE1MjQ2LDE1MjQ5LDE1MjUzLDE1MjU4LDE1MzM0LDE1MzQ3LDE1MzY3LDE1NDE2LDE1NDIxLDEsODgyNiw1OSwxLDEwOTMxLDExMiw1OSwxLDEwOTM1LDExNywxMDEsNTksMSw4ODI4LDQsMiw1OSw5OSwxNTI2NCwxNTI2NiwxLDEwOTI3LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNTI4MCwxNTI4MiwxNTI5MCwxNTI5OSwxNTMwMywxNTMyOSwxLDg4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM1LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOCwxMTMsNTksMSwxMDkyNyw0LDMsOTcsMTAxLDExNSwxNTMxMSwxNTMxOSwxNTMyNCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzcsMTEzLDExMyw1OSwxLDEwOTMzLDEwNSwxMDksNTksMSw4OTM2LDEwNSwxMDksNTksMSw4ODMwLDEwOSwxMDEsNCwyLDU5LDExNSwxNTM0MiwxNTM0NCwxLDgyNDIsNTksMSw4NDczLDQsMyw2OSw5NywxMTUsMTUzNTUsMTUzNTgsMTUzNjIsNTksMSwxMDkzMywxMTIsNTksMSwxMDkzNywxMDUsMTA5LDU5LDEsODkzNiw0LDMsMTAwLDEwMiwxMTIsMTUzNzUsMTUzNzgsMTU0MDQsNTksMSw4NzE5LDQsMyw5NywxMDgsMTE1LDE1Mzg2LDE1MzkyLDE1Mzk4LDEwOCw5NywxMTQsNTksMSw5MDA2LDEwNSwxMTAsMTAxLDU5LDEsODk3OCwxMTcsMTE0LDEwMiw1OSwxLDg5NzksNCwyLDU5LDExNiwxNTQxMCwxNTQxMiwxLDg3MzMsMTExLDU5LDEsODczMywxMDUsMTA5LDU5LDEsODgzMCwxMTQsMTAxLDEwOCw1OSwxLDg4ODAsNCwyLDk5LDEwNSwxNTQzMywxNTQzOCwxMTQsNTksMyw1NTM0OSw1NjUxNyw1OSwxLDk2OCwxMTAsOTksMTE1LDExMiw1OSwxLDgyMDAsNCw2LDEwMiwxMDUsMTExLDExMiwxMTUsMTE3LDE1NDYyLDE1NDY3LDE1NDcyLDE1NDc4LDE1NDg1LDE1NDkxLDExNCw1OSwzLDU1MzQ5LDU2NjIyLDExMCwxMTYsNTksMSwxMDc2NCwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NzQsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI3OSw5OSwxMTQsNTksMyw1NTM0OSw1NjUxOCw0LDMsOTcsMTAxLDExMSwxNTQ5OSwxNTUyMCwxNTUzNCwxMTYsNCwyLDEwMSwxMDUsMTU1MDYsMTU1MTUsMTE0LDExMCwxMDUsMTExLDExMCwxMTUsNTksMSw4NDYxLDExMCwxMTYsNTksMSwxMDc3NCwxMTUsMTE2LDQsMiw1OSwxMDEsMTU1MjgsMTU1MzAsMSw2MywxMTMsNTksMSw4Nzk5LDExNiw1LDM0LDEsNTksMTU1NDAsMSwzNCw0LDIxLDY1LDY2LDcyLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTIwLDE1NTg2LDE1NjA5LDE1NjE1LDE1NjIwLDE1Nzk2LDE1ODU1LDE1ODkzLDE1OTMxLDE1OTc3LDE2MDAxLDE2MDM5LDE2MTgzLDE2MjA0LDE2MjIyLDE2MjI4LDE2Mjg1LDE2MzEyLDE2MzE4LDE2MzYzLDE2NDA4LDE2NDE2LDQsMyw5NywxMTQsMTE2LDE1NTk0LDE1NTk5LDE1NjAzLDExNCwxMTQsNTksMSw4NjY3LDExNCw1OSwxLDg2NTgsOTcsMTA1LDEwOCw1OSwxLDEwNTI0LDk3LDExNCwxMTQsNTksMSwxMDUxMSw5NywxMTQsNTksMSwxMDU5Niw0LDcsOTksMTAwLDEwMSwxMTAsMTEzLDExNCwxMTYsMTU2MzYsMTU2NTEsMTU2NTYsMTU2NjQsMTU2ODcsMTU2OTYsMTU3NzAsNCwyLDEwMSwxMTcsMTU2NDIsMTU2NDYsNTksMyw4NzY1LDgxNywxMTYsMTAxLDU5LDEsMzQxLDEwNSw5OSw1OSwxLDg3MzAsMTA5LDExMiwxMTYsMTIxLDExOCw1OSwxLDEwNjc1LDEwMyw0LDQsNTksMTAwLDEwMSwxMDgsMTU2NzUsMTU2NzcsMTU2ODAsMTU2ODMsMSwxMDIxNyw1OSwxLDEwNjQyLDU5LDEsMTA2NjEsMTAxLDU5LDEsMTAyMTcsMTE3LDExMSw1LDE4NywxLDU5LDE1Njk0LDEsMTg3LDExNCw0LDExLDU5LDk3LDk4LDk5LDEwMiwxMDQsMTA4LDExMiwxMTUsMTE2LDExOSwxNTcyMSwxNTcyMywxNTcyNywxNTczOSwxNTc0MiwxNTc0NiwxNTc1MCwxNTc1NCwxNTc1OCwxNTc2MywxNTc2NywxLDg1OTQsMTEyLDU5LDEsMTA2MTMsNCwyLDU5LDEwMiwxNTczMywxNTczNSwxLDg2NzcsMTE1LDU5LDEsMTA1MjgsNTksMSwxMDU0NywxMTUsNTksMSwxMDUyNiwxMDcsNTksMSw4NjE4LDExMiw1OSwxLDg2MjAsMTA4LDU5LDEsMTA1NjUsMTA1LDEwOSw1OSwxLDEwNjEyLDEwOCw1OSwxLDg2MTEsNTksMSw4NjA1LDQsMiw5NywxMDUsMTU3NzYsMTU3ODEsMTA1LDEwOCw1OSwxLDEwNTIyLDExMSw0LDIsNTksMTEwLDE1Nzg4LDE1NzkwLDEsODc1OCw5NywxMDgsMTE1LDU5LDEsODQ3NCw0LDMsOTcsOTgsMTE0LDE1ODA0LDE1ODA5LDE1ODE0LDExNCwxMTQsNTksMSwxMDUwOSwxMTQsMTA3LDU5LDEsMTAwOTksNCwyLDk3LDEwNywxNTgyMCwxNTgzMyw5OSw0LDIsMTAxLDEwNywxNTgyNywxNTgzMCw1OSwxLDEyNSw1OSwxLDkzLDQsMiwxMDEsMTE1LDE1ODM5LDE1ODQyLDU5LDEsMTA2MzYsMTA4LDQsMiwxMDAsMTE3LDE1ODQ5LDE1ODUyLDU5LDEsMTA2MzgsNTksMSwxMDY0MCw0LDQsOTcsMTAxLDExNywxMjEsMTU4NjUsMTU4NzEsMTU4ODYsMTU4OTAsMTE0LDExMSwxMTAsNTksMSwzNDUsNCwyLDEwMCwxMDUsMTU4NzcsMTU4ODIsMTA1LDEwOCw1OSwxLDM0MywxMDgsNTksMSw4OTY5LDk4LDU5LDEsMTI1LDU5LDEsMTA4OCw0LDQsOTksMTA4LDExMywxMTUsMTU5MDMsMTU5MDcsMTU5MTQsMTU5MjcsOTcsNTksMSwxMDU1MSwxMDAsMTA0LDk3LDExNCw1OSwxLDEwNjAxLDExNywxMTEsNCwyLDU5LDExNCwxNTkyMiwxNTkyNCwxLDgyMjEsNTksMSw4MjIxLDEwNCw1OSwxLDg2MjcsNCwzLDk3LDk5LDEwMywxNTkzOSwxNTk2NiwxNTk3MCwxMDgsNCw0LDU5LDEwNSwxMTIsMTE1LDE1OTUwLDE1OTUyLDE1OTU3LDE1OTYzLDEsODQ3NiwxMTAsMTAxLDU5LDEsODQ3NSw5NywxMTQsMTE2LDU5LDEsODQ3Niw1OSwxLDg0NzcsMTE2LDU5LDEsOTY0NSw1LDE3NCwxLDU5LDE1OTc1LDEsMTc0LDQsMywxMDUsMTA4LDExNCwxNTk4NSwxNTk5MSwxNTk5NywxMTUsMTA0LDExNiw1OSwxLDEwNjIxLDExMSwxMTEsMTE0LDU5LDEsODk3MSw1OSwzLDU1MzQ5LDU2NjIzLDQsMiw5NywxMTEsMTYwMDcsMTYwMjgsMTE0LDQsMiwxMDAsMTE3LDE2MDE0LDE2MDE3LDU5LDEsODY0MSw0LDIsNTksMTA4LDE2MDIzLDE2MDI1LDEsODY0MCw1OSwxLDEwNjA0LDQsMiw1OSwxMTgsMTYwMzQsMTYwMzYsMSw5NjEsNTksMSwxMDA5LDQsMywxMDMsMTEwLDExNSwxNjA0NywxNjE2NywxNjE3MSwxMDQsMTE2LDQsNiw5NywxMDQsMTA4LDExNCwxMTUsMTE2LDE2MDYzLDE2MDgxLDE2MTAzLDE2MTMwLDE2MTQzLDE2MTU1LDExNCwxMTQsMTExLDExOSw0LDIsNTksMTE2LDE2MDczLDE2MDc1LDEsODU5NCw5NywxMDUsMTA4LDU5LDEsODYxMSw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDAsMTE3LDE2MDkzLDE2MDk5LDExMSwxMTksMTEwLDU5LDEsODY0MSwxMTIsNTksMSw4NjQwLDEwMSwxMDIsMTE2LDQsMiw5NywxMDQsMTYxMTIsMTYxMjAsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDQsOTcsMTE0LDExMiwxMTEsMTExLDExMCwxMTUsNTksMSw4NjUyLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0OSwxMTMsMTE3LDEwNSwxMDMsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYwNSwxMDQsMTE0LDEwMSwxMDEsMTE2LDEwNSwxMDksMTAxLDExNSw1OSwxLDg5MDgsMTAzLDU5LDEsNzMwLDEwNSwxMTAsMTAzLDEwMCwxMTEsMTE2LDExNSwxMDEsMTEzLDU5LDEsODc4Nyw0LDMsOTcsMTA0LDEwOSwxNjE5MSwxNjE5NiwxNjIwMSwxMTQsMTE0LDU5LDEsODY0NCw5NywxMTQsNTksMSw4NjUyLDU5LDEsODIwNywxMTEsMTE3LDExNSwxMTYsNCwyLDU5LDk3LDE2MjE0LDE2MjE2LDEsOTEzNyw5OSwxMDQsMTAxLDU5LDEsOTEzNywxMDksMTA1LDEwMCw1OSwxLDEwOTkwLDQsNCw5Nyw5OCwxMTIsMTE2LDE2MjM4LDE2MjUyLDE2MjU3LDE2Mjc4LDQsMiwxMTAsMTE0LDE2MjQ0LDE2MjQ4LDEwMyw1OSwxLDEwMjIxLDExNCw1OSwxLDg3MDIsMTE0LDEwNyw1OSwxLDEwMjE1LDQsMyw5NywxMDIsMTA4LDE2MjY1LDE2MjY5LDE2MjczLDExNCw1OSwxLDEwNjMwLDU5LDMsNTUzNDksNTY2NzUsMTE3LDExNSw1OSwxLDEwNzk4LDEwNSwxMDksMTAxLDExNSw1OSwxLDEwODA1LDQsMiw5NywxMTIsMTYyOTEsMTYzMDQsMTE0LDQsMiw1OSwxMDMsMTYyOTgsMTYzMDAsMSw0MSwxMTYsNTksMSwxMDY0NCwxMTEsMTA4LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzAsOTcsMTE0LDExNCw1OSwxLDg2NDksNCw0LDk3LDk5LDEwNCwxMTMsMTYzMjgsMTYzMzQsMTYzMzksMTYzNDIsMTEzLDExNywxMTEsNTksMSw4MjUwLDExNCw1OSwzLDU1MzQ5LDU2NTE5LDU5LDEsODYyNSw0LDIsOTgsMTE3LDE2MzQ4LDE2MzUxLDU5LDEsOTMsMTExLDQsMiw1OSwxMTQsMTYzNTgsMTYzNjAsMSw4MjE3LDU5LDEsODIxNyw0LDMsMTA0LDEwNSwxMTQsMTYzNzEsMTYzNzcsMTYzODMsMTE0LDEwMSwxMDEsNTksMSw4OTA4LDEwOSwxMDEsMTE1LDU5LDEsODkwNiwxMDUsNCw0LDU5LDEwMSwxMDIsMTA4LDE2Mzk0LDE2Mzk2LDE2Mzk5LDE2NDAyLDEsOTY1Nyw1OSwxLDg4ODUsNTksMSw5NjU2LDExNiwxMTQsMTA1LDU5LDEsMTA3MDIsMTA4LDExNywxMDQsOTcsMTE0LDU5LDEsMTA2MDAsNTksMSw4NDc4LDQsMTksOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTksMTIyLDE2NDU5LDE2NDY2LDE2NDcyLDE2NTcyLDE2NTkwLDE2NjcyLDE2Njg3LDE2NzQ2LDE2ODQ0LDE2ODUwLDE2OTI0LDE2OTYzLDE2OTg4LDE3MTE1LDE3MTIxLDE3MTU0LDE3MjA2LDE3NjE0LDE3NjU2LDk5LDExNywxMTYsMTAxLDU5LDEsMzQ3LDExMywxMTcsMTExLDU5LDEsODIxOCw0LDEwLDU5LDY5LDk3LDk5LDEwMSwxMDUsMTEwLDExMiwxMTUsMTIxLDE2NDk0LDE2NDk2LDE2NDk5LDE2NTEzLDE2NTE4LDE2NTMxLDE2NTM2LDE2NTU2LDE2NTY0LDE2NTY5LDEsODgyNyw1OSwxLDEwOTMyLDQsMiwxMTIsMTE0LDE2NTA1LDE2NTA4LDU5LDEsMTA5MzYsMTExLDExMCw1OSwxLDM1MywxMTcsMTAxLDU5LDEsODgyOSw0LDIsNTksMTAwLDE2NTI0LDE2NTI2LDEsMTA5MjgsMTA1LDEwOCw1OSwxLDM1MSwxMTQsOTksNTksMSwzNDksNCwzLDY5LDk3LDExNSwxNjU0NCwxNjU0NywxNjU1MSw1OSwxLDEwOTM0LDExMiw1OSwxLDEwOTM4LDEwNSwxMDksNTksMSw4OTM3LDExMSwxMDgsMTA1LDExMCwxMTYsNTksMSwxMDc3MSwxMDUsMTA5LDU5LDEsODgzMSw1OSwxLDEwODksMTExLDExNiw0LDMsNTksOTgsMTAxLDE2NTgyLDE2NTg0LDE2NTg3LDEsODkwMSw1OSwxLDg4NjUsNTksMSwxMDg1NCw0LDcsNjUsOTcsOTksMTA5LDExNSwxMTYsMTIwLDE2NjA2LDE2NjExLDE2NjM0LDE2NjQyLDE2NjQ2LDE2NjUyLDE2NjY4LDExNCwxMTQsNTksMSw4NjY0LDExNCw0LDIsMTA0LDExNCwxNjYxOCwxNjYyMiwxMDcsNTksMSwxMDUzMyw0LDIsNTksMTExLDE2NjI4LDE2NjMwLDEsODYwMCwxMTksNTksMSw4NjAwLDExNiw1LDE2NywxLDU5LDE2NjQwLDEsMTY3LDEwNSw1OSwxLDU5LDExOSw5NywxMTQsNTksMSwxMDUzNywxMDksNCwyLDEwNSwxMTAsMTY2NTksMTY2NjUsMTEwLDExNywxMTUsNTksMSw4NzI2LDU5LDEsODcyNiwxMTYsNTksMSwxMDAzOCwxMTQsNCwyLDU5LDExMSwxNjY3OSwxNjY4MiwzLDU1MzQ5LDU2NjI0LDExOSwxMTAsNTksMSw4OTk0LDQsNCw5Nyw5OSwxMTEsMTIxLDE2Njk3LDE2NzAyLDE2NzE2LDE2NzM5LDExNCwxMTIsNTksMSw5ODM5LDQsMiwxMDQsMTIxLDE2NzA4LDE2NzEzLDk5LDEyMSw1OSwxLDEwOTcsNTksMSwxMDk2LDExNCwxMTYsNCwyLDEwOSwxMTIsMTY3MjQsMTY3MjksMTA1LDEwMCw1OSwxLDg3MzksOTcsMTE0LDk3LDEwOCwxMDgsMTAxLDEwOCw1OSwxLDg3NDEsNSwxNzMsMSw1OSwxNjc0NCwxLDE3Myw0LDIsMTAzLDEwOSwxNjc1MiwxNjc3MCwxMDksOTcsNCwzLDU5LDEwMiwxMTgsMTY3NjIsMTY3NjQsMTY3NjcsMSw5NjMsNTksMSw5NjIsNTksMSw5NjIsNCw4LDU5LDEwMCwxMDEsMTAzLDEwOCwxMTAsMTEyLDExNCwxNjc4OCwxNjc5MCwxNjc5NSwxNjgwNiwxNjgxNywxNjgyOCwxNjgzMiwxNjgzOCwxLDg3NjQsMTExLDExNiw1OSwxLDEwODU4LDQsMiw1OSwxMTMsMTY4MDEsMTY4MDMsMSw4NzcxLDU5LDEsODc3MSw0LDIsNTksNjksMTY4MTIsMTY4MTQsMSwxMDkxMCw1OSwxLDEwOTEyLDQsMiw1OSw2OSwxNjgyMywxNjgyNSwxLDEwOTA5LDU5LDEsMTA5MTEsMTAxLDU5LDEsODc3NCwxMDgsMTE3LDExNSw1OSwxLDEwNzg4LDk3LDExNCwxMTQsNTksMSwxMDYxMCw5NywxMTQsMTE0LDU5LDEsODU5Miw0LDQsOTcsMTAxLDEwNSwxMTYsMTY4NjAsMTY4ODMsMTY4OTEsMTY5MDQsNCwyLDEwOCwxMTUsMTY4NjYsMTY4NzgsMTA4LDExNSwxMDEsMTE2LDEwOSwxMDUsMTEwLDExNywxMTUsNTksMSw4NzI2LDEwNCwxMTIsNTksMSwxMDgwMywxMTIsOTcsMTE0LDExNSwxMDgsNTksMSwxMDcyNCw0LDIsMTAwLDEwOCwxNjg5NywxNjkwMCw1OSwxLDg3MzksMTAxLDU5LDEsODk5NSw0LDIsNTksMTAxLDE2OTEwLDE2OTEyLDEsMTA5MjIsNCwyLDU5LDExNSwxNjkxOCwxNjkyMCwxLDEwOTI0LDU5LDMsMTA5MjQsNjUwMjQsNCwzLDEwMiwxMDgsMTEyLDE2OTMyLDE2OTM4LDE2OTU4LDExNiw5OSwxMjEsNTksMSwxMTAwLDQsMiw1OSw5OCwxNjk0NCwxNjk0NiwxLDQ3LDQsMiw1OSw5NywxNjk1MiwxNjk1NCwxLDEwNjkyLDExNCw1OSwxLDkwMjMsMTAyLDU5LDMsNTUzNDksNTY2NzYsOTcsNCwyLDEwMCwxMTQsMTY5NzAsMTY5ODUsMTAxLDExNSw0LDIsNTksMTE3LDE2OTc4LDE2OTgwLDEsOTgyNCwxMDUsMTE2LDU5LDEsOTgyNCw1OSwxLDg3NDEsNCwzLDk5LDExNSwxMTcsMTY5OTYsMTcwMjgsMTcwODksNCwyLDk3LDExNywxNzAwMiwxNzAxNSwxMTIsNCwyLDU5LDExNSwxNzAwOSwxNzAxMSwxLDg4NTEsNTksMyw4ODUxLDY1MDI0LDExMiw0LDIsNTksMTE1LDE3MDIyLDE3MDI0LDEsODg1Miw1OSwzLDg4NTIsNjUwMjQsMTE3LDQsMiw5OCwxMTIsMTcwMzUsMTcwNjIsNCwzLDU5LDEwMSwxMTUsMTcwNDMsMTcwNDUsMTcwNDgsMSw4ODQ3LDU5LDEsODg0OSwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwNTYsMTcwNTgsMSw4ODQ3LDExMyw1OSwxLDg4NDksNCwzLDU5LDEwMSwxMTUsMTcwNzAsMTcwNzIsMTcwNzUsMSw4ODQ4LDU5LDEsODg1MCwxMDEsMTE2LDQsMiw1OSwxMDEsMTcwODMsMTcwODUsMSw4ODQ4LDExMyw1OSwxLDg4NTAsNCwzLDU5LDk3LDEwMiwxNzA5NywxNzA5OSwxNzExMiwxLDk2MzMsMTE0LDQsMiwxMDEsMTAyLDE3MTA2LDE3MTA5LDU5LDEsOTYzMyw1OSwxLDk2NDIsNTksMSw5NjQyLDk3LDExNCwxMTQsNTksMSw4NTk0LDQsNCw5OSwxMDEsMTA5LDExNiwxNzEzMSwxNzEzNiwxNzE0MiwxNzE0OCwxMTQsNTksMyw1NTM0OSw1NjUyMCwxMTYsMTA5LDExMCw1OSwxLDg3MjYsMTA1LDEwOCwxMDEsNTksMSw4OTk1LDk3LDExNCwxMDIsNTksMSw4OTAyLDQsMiw5NywxMTQsMTcxNjAsMTcxNzIsMTE0LDQsMiw1OSwxMDIsMTcxNjcsMTcxNjksMSw5NzM0LDU5LDEsOTczMyw0LDIsOTcsMTEwLDE3MTc4LDE3MjAyLDEwNSwxMDMsMTA0LDExNiw0LDIsMTAxLDExMiwxNzE4OCwxNzE5NywxMTIsMTE1LDEwNSwxMDgsMTExLDExMCw1OSwxLDEwMTMsMTA0LDEwNSw1OSwxLDk4MSwxMTUsNTksMSwxNzUsNCw1LDk4LDk5LDEwOSwxMTAsMTEyLDE3MjE4LDE3MzUxLDE3NDIwLDE3NDIzLDE3NDI3LDQsOSw1OSw2OSwxMDAsMTAxLDEwOSwxMTAsMTEyLDExNCwxMTUsMTcyMzgsMTcyNDAsMTcyNDMsMTcyNDgsMTcyNjEsMTcyNjcsMTcyNzksMTcyODUsMTcyOTEsMSw4ODM0LDU5LDEsMTA5NDksMTExLDExNiw1OSwxLDEwOTQxLDQsMiw1OSwxMDAsMTcyNTQsMTcyNTYsMSw4ODM4LDExMSwxMTYsNTksMSwxMDk0NywxMTcsMTA4LDExNiw1OSwxLDEwOTQ1LDQsMiw2OSwxMDEsMTcyNzMsMTcyNzYsNTksMSwxMDk1NSw1OSwxLDg4NDIsMTA4LDExNywxMTUsNTksMSwxMDk0Myw5NywxMTQsMTE0LDU5LDEsMTA2MTcsNCwzLDEwMSwxMDUsMTE3LDE3Mjk5LDE3MzM1LDE3MzM5LDExNiw0LDMsNTksMTAxLDExMCwxNzMwOCwxNzMxMCwxNzMyMiwxLDg4MzQsMTEzLDQsMiw1OSwxMTMsMTczMTcsMTczMTksMSw4ODM4LDU5LDEsMTA5NDksMTAxLDExMyw0LDIsNTksMTEzLDE3MzMwLDE3MzMyLDEsODg0Miw1OSwxLDEwOTU1LDEwOSw1OSwxLDEwOTUxLDQsMiw5OCwxMTIsMTczNDUsMTczNDgsNTksMSwxMDk2NSw1OSwxLDEwOTYzLDk5LDQsNiw1OSw5Nyw5OSwxMDEsMTEwLDExNSwxNzM2NiwxNzM2OCwxNzM3NiwxNzM4NSwxNzM4OSwxNzQxNSwxLDg4MjcsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwOTM2LDExNywxMTQsMTA4LDEyMSwxMDEsMTEzLDU5LDEsODgyOSwxMTMsNTksMSwxMDkyOCw0LDMsOTcsMTAxLDExNSwxNzM5NywxNzQwNSwxNzQxMCwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzgsMTEzLDExMyw1OSwxLDEwOTM0LDEwNSwxMDksNTksMSw4OTM3LDEwNSwxMDksNTksMSw4ODMxLDU5LDEsODcyMSwxMDMsNTksMSw5ODM0LDQsMTMsNDksNTAsNTEsNTksNjksMTAwLDEwMSwxMDQsMTA4LDEwOSwxMTAsMTEyLDExNSwxNzQ1NSwxNzQ2MiwxNzQ2OSwxNzQ3NiwxNzQ3OCwxNzQ4MSwxNzQ5NiwxNzUwOSwxNzUyNCwxNzUzMCwxNzUzNiwxNzU0OCwxNzU1NCw1LDE4NSwxLDU5LDE3NDYwLDEsMTg1LDUsMTc4LDEsNTksMTc0NjcsMSwxNzgsNSwxNzksMSw1OSwxNzQ3NCwxLDE3OSwxLDg4MzUsNTksMSwxMDk1MCw0LDIsMTExLDExNSwxNzQ4NywxNzQ5MSwxMTYsNTksMSwxMDk0MiwxMTcsOTgsNTksMSwxMDk2OCw0LDIsNTksMTAwLDE3NTAyLDE3NTA0LDEsODgzOSwxMTEsMTE2LDU5LDEsMTA5NDgsMTE1LDQsMiwxMTEsMTE3LDE3NTE2LDE3NTIwLDEwOCw1OSwxLDEwMTg1LDk4LDU5LDEsMTA5NjcsOTcsMTE0LDExNCw1OSwxLDEwNjE5LDExNywxMDgsMTE2LDU5LDEsMTA5NDYsNCwyLDY5LDEwMSwxNzU0MiwxNzU0NSw1OSwxLDEwOTU2LDU5LDEsODg0MywxMDgsMTE3LDExNSw1OSwxLDEwOTQ0LDQsMywxMDEsMTA1LDExNywxNzU2MiwxNzU5OCwxNzYwMiwxMTYsNCwzLDU5LDEwMSwxMTAsMTc1NzEsMTc1NzMsMTc1ODUsMSw4ODM1LDExMyw0LDIsNTksMTEzLDE3NTgwLDE3NTgyLDEsODgzOSw1OSwxLDEwOTUwLDEwMSwxMTMsNCwyLDU5LDExMywxNzU5MywxNzU5NSwxLDg4NDMsNTksMSwxMDk1NiwxMDksNTksMSwxMDk1Miw0LDIsOTgsMTEyLDE3NjA4LDE3NjExLDU5LDEsMTA5NjQsNTksMSwxMDk2Niw0LDMsNjUsOTcsMTEwLDE3NjIyLDE3NjI3LDE3NjUwLDExNCwxMTQsNTksMSw4NjY1LDExNCw0LDIsMTA0LDExNCwxNzYzNCwxNzYzOCwxMDcsNTksMSwxMDUzNCw0LDIsNTksMTExLDE3NjQ0LDE3NjQ2LDEsODYwMSwxMTksNTksMSw4NjAxLDExOSw5NywxMTQsNTksMSwxMDUzOCwxMDgsMTA1LDEwMyw1LDIyMywxLDU5LDE3NjY0LDEsMjIzLDQsMTMsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMTEsMTEyLDExNCwxMTUsMTE5LDE3Njk0LDE3NzA5LDE3NzE0LDE3NzM3LDE3NzQyLDE3NzQ5LDE3NzU0LDE3ODYwLDE3OTA1LDE3OTU3LDE3OTY0LDE4MDkwLDE4MTIyLDQsMiwxMTQsMTE3LDE3NzAwLDE3NzA2LDEwMywxMDEsMTE2LDU5LDEsODk4Miw1OSwxLDk2NCwxMTQsMTA3LDU5LDEsOTE0MCw0LDMsOTcsMTAxLDEyMSwxNzcyMiwxNzcyOCwxNzczNCwxMTQsMTExLDExMCw1OSwxLDM1NywxMDAsMTA1LDEwOCw1OSwxLDM1NSw1OSwxLDEwOTAsMTExLDExNiw1OSwxLDg0MTEsMTA4LDExNCwxMDEsOTksNTksMSw4OTgxLDExNCw1OSwzLDU1MzQ5LDU2NjI1LDQsNCwxMDEsMTA1LDEwNywxMTEsMTc3NjQsMTc4MDUsMTc4MzYsMTc4NTEsNCwyLDExNCwxMTYsMTc3NzAsMTc3ODYsMTAxLDQsMiw1MiwxMDIsMTc3NzcsMTc3ODAsNTksMSw4NzU2LDExMSwxMTQsMTAxLDU5LDEsODc1Niw5Nyw0LDMsNTksMTE1LDExOCwxNzc5NSwxNzc5NywxNzgwMiwxLDk1MiwxMjEsMTA5LDU5LDEsOTc3LDU5LDEsOTc3LDQsMiw5OSwxMTAsMTc4MTEsMTc4MzEsMTA3LDQsMiw5NywxMTUsMTc4MTgsMTc4MjYsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDg3NzYsMTA1LDEwOSw1OSwxLDg3NjQsMTE1LDExMiw1OSwxLDgyMDEsNCwyLDk3LDExNSwxNzg0MiwxNzg0NiwxMTIsNTksMSw4Nzc2LDEwNSwxMDksNTksMSw4NzY0LDExNCwxMTAsNSwyNTQsMSw1OSwxNzg1OCwxLDI1NCw0LDMsMTA4LDEwOSwxMTAsMTc4NjgsMTc4NzMsMTc5MDEsMTAwLDEwMSw1OSwxLDczMiwxMDEsMTE1LDUsMjE1LDMsNTksOTgsMTAwLDE3ODg0LDE3ODg2LDE3ODk4LDEsMjE1LDQsMiw1OSw5NywxNzg5MiwxNzg5NCwxLDg4NjQsMTE0LDU5LDEsMTA4MDEsNTksMSwxMDgwMCwxMTYsNTksMSw4NzQ5LDQsMywxMDEsMTEyLDExNSwxNzkxMywxNzkxNywxNzk1Myw5Nyw1OSwxLDEwNTM2LDQsNCw1OSw5OCw5OSwxMDIsMTc5MjcsMTc5MjksMTc5MzQsMTc5MzksMSw4ODY4LDExMSwxMTYsNTksMSw5MDE0LDEwNSwxMTQsNTksMSwxMDk5Myw0LDIsNTksMTExLDE3OTQ1LDE3OTQ4LDMsNTUzNDksNTY2NzcsMTE0LDEwNyw1OSwxLDEwOTcwLDk3LDU5LDEsMTA1MzcsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI0NCw0LDMsOTcsMTA1LDExMiwxNzk3MiwxNzk3NywxODA4MiwxMDAsMTAxLDU5LDEsODQ4Miw0LDcsOTcsMTAwLDEwMSwxMDksMTEyLDExNSwxMTYsMTc5OTMsMTgwNTEsMTgwNTYsMTgwNTksMTgwNjYsMTgwNzIsMTgwNzYsMTEwLDEwMywxMDgsMTAxLDQsNSw1OSwxMDAsMTA4LDExMywxMTQsMTgwMDksMTgwMTEsMTgwMTcsMTgwMzIsMTgwMzUsMSw5NjUzLDExMSwxMTksMTEwLDU5LDEsOTY2MywxMDEsMTAyLDExNiw0LDIsNTksMTAxLDE4MDI2LDE4MDI4LDEsOTY2NywxMTMsNTksMSw4ODg0LDU5LDEsODc5NiwxMDUsMTAzLDEwNCwxMTYsNCwyLDU5LDEwMSwxODA0NSwxODA0NywxLDk2NTcsMTEzLDU5LDEsODg4NSwxMTEsMTE2LDU5LDEsOTcwOCw1OSwxLDg3OTYsMTA1LDExMCwxMTcsMTE1LDU5LDEsMTA4MTAsMTA4LDExNywxMTUsNTksMSwxMDgwOSw5OCw1OSwxLDEwNzAxLDEwNSwxMDksMTAxLDU5LDEsMTA4MTEsMTAxLDEyMiwxMDUsMTE3LDEwOSw1OSwxLDkxODYsNCwzLDk5LDEwNCwxMTYsMTgwOTgsMTgxMTEsMTgxMTYsNCwyLDExNCwxMjEsMTgxMDQsMTgxMDgsNTksMyw1NTM0OSw1NjUyMSw1OSwxLDEwOTQsOTksMTIxLDU5LDEsMTExNSwxMTQsMTExLDEwNyw1OSwxLDM1OSw0LDIsMTA1LDExMSwxODEyOCwxODEzMywxMjAsMTE2LDU5LDEsODgxMiwxMDQsMTAxLDk3LDEwMCw0LDIsMTA4LDExNCwxODE0MywxODE1NCwxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA2LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA4LDQsMTgsNjUsNzIsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTA0LDEwOCwxMDksMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE5LDE4MjA0LDE4MjA5LDE4MjE0LDE4MjM0LDE4MjUwLDE4MjY4LDE4MjkyLDE4MzA4LDE4MzE5LDE4MzQzLDE4Mzc5LDE4Mzk3LDE4NDEzLDE4NTA0LDE4NTQ3LDE4NTUzLDE4NTg0LDE4NjAzLDExNCwxMTQsNTksMSw4NjU3LDk3LDExNCw1OSwxLDEwNTk1LDQsMiw5OSwxMTQsMTgyMjAsMTgyMzAsMTE3LDExNiwxMDEsNSwyNTAsMSw1OSwxODIyOCwxLDI1MCwxMTQsNTksMSw4NTkzLDExNCw0LDIsOTksMTAxLDE4MjQxLDE4MjQ1LDEyMSw1OSwxLDExMTgsMTE4LDEwMSw1OSwxLDM2NSw0LDIsMTA1LDEyMSwxODI1NiwxODI2NSwxMTQsOTksNSwyNTEsMSw1OSwxODI2MywxLDI1MSw1OSwxLDEwOTEsNCwzLDk3LDk4LDEwNCwxODI3NiwxODI4MSwxODI4NywxMTQsMTE0LDU5LDEsODY0NSwxMDgsOTcsOTksNTksMSwzNjksOTcsMTE0LDU5LDEsMTA2MDYsNCwyLDEwNSwxMTQsMTgyOTgsMTgzMDQsMTE1LDEwNCwxMTYsNTksMSwxMDYyMiw1OSwzLDU1MzQ5LDU2NjI2LDExNCw5NywxMTgsMTAxLDUsMjQ5LDEsNTksMTgzMTcsMSwyNDksNCwyLDk3LDk4LDE4MzI1LDE4MzM4LDExNCw0LDIsMTA4LDExNCwxODMzMiwxODMzNSw1OSwxLDg2MzksNTksMSw4NjM4LDEwOCwxMDcsNTksMSw5NjAwLDQsMiw5OSwxMTYsMTgzNDksMTgzNzQsNCwyLDExMSwxMTQsMTgzNTUsMTgzNjksMTE0LDExMCw0LDIsNTksMTAxLDE4MzYzLDE4MzY1LDEsODk4OCwxMTQsNTksMSw4OTg4LDExMSwxMTIsNTksMSw4OTc1LDExNCwxMDUsNTksMSw5NzIwLDQsMiw5NywxMDgsMTgzODUsMTgzOTAsOTksMTE0LDU5LDEsMzYzLDUsMTY4LDEsNTksMTgzOTUsMSwxNjgsNCwyLDEwMywxMTIsMTg0MDMsMTg0MDgsMTExLDExMCw1OSwxLDM3MSwxMDIsNTksMyw1NTM0OSw1NjY3OCw0LDYsOTcsMTAwLDEwNCwxMDgsMTE1LDExNywxODQyNywxODQzNCwxODQ0NSwxODQ3MCwxODQ3NSwxODQ5NCwxMTQsMTE0LDExMSwxMTksNTksMSw4NTkzLDExMSwxMTksMTEwLDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTcsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTA4LDExNCwxODQ1NywxODQ2MywxMDEsMTAyLDExNiw1OSwxLDg2MzksMTA1LDEwMywxMDQsMTE2LDU5LDEsODYzOCwxMTcsMTE1LDU5LDEsODg0NiwxMDUsNCwzLDU5LDEwNCwxMDgsMTg0ODQsMTg0ODYsMTg0ODksMSw5NjUsNTksMSw5NzgsMTExLDExMCw1OSwxLDk2NSwxMTIsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NDgsNCwzLDk5LDEwNSwxMTYsMTg1MTIsMTg1MzcsMTg1NDIsNCwyLDExMSwxMTQsMTg1MTgsMTg1MzIsMTE0LDExMCw0LDIsNTksMTAxLDE4NTI2LDE4NTI4LDEsODk4OSwxMTQsNTksMSw4OTg5LDExMSwxMTIsNTksMSw4OTc0LDExMCwxMDMsNTksMSwzNjcsMTE0LDEwNSw1OSwxLDk3MjEsOTksMTE0LDU5LDMsNTUzNDksNTY1MjIsNCwzLDEwMCwxMDUsMTE0LDE4NTYxLDE4NTY2LDE4NTcyLDExMSwxMTYsNTksMSw4OTQ0LDEwOCwxMDAsMTAxLDU5LDEsMzYxLDEwNSw0LDIsNTksMTAyLDE4NTc5LDE4NTgxLDEsOTY1Myw1OSwxLDk2NTIsNCwyLDk3LDEwOSwxODU5MCwxODU5NSwxMTQsMTE0LDU5LDEsODY0OCwxMDgsNSwyNTIsMSw1OSwxODYwMSwxLDI1Miw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSwxMDY2Myw0LDE1LDY1LDY2LDY4LDk3LDk5LDEwMCwxMDEsMTAyLDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDEyMiwxODY0MywxODY0OCwxODY2MSwxODY2NywxODg0NywxODg1MSwxODg1NywxODkwNCwxODkwOSwxODkxNSwxODkzMSwxODkzNywxODk0MywxODk0OSwxODk5NiwxMTQsMTE0LDU5LDEsODY2MSw5NywxMTQsNCwyLDU5LDExOCwxODY1NiwxODY1OCwxLDEwOTg0LDU5LDEsMTA5ODUsOTcsMTE1LDEwNCw1OSwxLDg4NzIsNCwyLDExMCwxMTQsMTg2NzMsMTg2NzksMTAzLDExNCwxMTYsNTksMSwxMDY1Miw0LDcsMTAxLDEwNywxMTAsMTEyLDExNCwxMTUsMTE2LDE4Njk1LDE4NzA0LDE4NzExLDE4NzIwLDE4NzQyLDE4NzU0LDE4ODEwLDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxMyw5NywxMTIsMTEyLDk3LDU5LDEsMTAwOCwxMTEsMTE2LDEwNCwxMDUsMTEwLDEwMyw1OSwxLDg3MDksNCwzLDEwNCwxMDUsMTE0LDE4NzI4LDE4NzMyLDE4NzM1LDEwNSw1OSwxLDk4MSw1OSwxLDk4MiwxMTEsMTEyLDExNiwxMTEsNTksMSw4NzMzLDQsMiw1OSwxMDQsMTg3NDgsMTg3NTAsMSw4NTk3LDExMSw1OSwxLDEwMDksNCwyLDEwNSwxMTcsMTg3NjAsMTg3NjYsMTAzLDEwOSw5Nyw1OSwxLDk2Miw0LDIsOTgsMTEyLDE4NzcyLDE4NzkxLDExNSwxMDEsMTE2LDExMCwxMDEsMTEzLDQsMiw1OSwxMTMsMTg3ODQsMTg3ODcsMyw4ODQyLDY1MDI0LDU5LDMsMTA5NTUsNjUwMjQsMTE1LDEwMSwxMTYsMTEwLDEwMSwxMTMsNCwyLDU5LDExMywxODgwMywxODgwNiwzLDg4NDMsNjUwMjQsNTksMywxMDk1Niw2NTAyNCw0LDIsMTA0LDExNCwxODgxNiwxODgyMiwxMDEsMTE2LDk3LDU5LDEsOTc3LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwOCwxMTQsMTg4MzQsMTg4NDAsMTAxLDEwMiwxMTYsNTksMSw4ODgyLDEwNSwxMDMsMTA0LDExNiw1OSwxLDg4ODMsMTIxLDU5LDEsMTA3NCw5NywxMTUsMTA0LDU5LDEsODg2Niw0LDMsMTAxLDEwOCwxMTQsMTg4NjUsMTg4ODQsMTg4OTAsNCwzLDU5LDk4LDEwMSwxODg3MywxODg3NSwxODg4MCwxLDg3NDQsOTcsMTE0LDU5LDEsODg5MSwxMTMsNTksMSw4Nzk0LDEwOCwxMDUsMTEyLDU5LDEsODk0Miw0LDIsOTgsMTE2LDE4ODk2LDE4OTAxLDk3LDExNCw1OSwxLDEyNCw1OSwxLDEyNCwxMTQsNTksMyw1NTM0OSw1NjYyNywxMTYsMTE0LDEwNSw1OSwxLDg4ODIsMTE1LDExNyw0LDIsOTgsMTEyLDE4OTIzLDE4OTI3LDU5LDMsODgzNCw4NDAyLDU5LDMsODgzNSw4NDAyLDExMiwxMDIsNTksMyw1NTM0OSw1NjY3OSwxMTQsMTExLDExMiw1OSwxLDg3MzMsMTE2LDExNCwxMDUsNTksMSw4ODgzLDQsMiw5OSwxMTcsMTg5NTUsMTg5NjAsMTE0LDU5LDMsNTUzNDksNTY1MjMsNCwyLDk4LDExMiwxODk2NiwxODk4MSwxMTAsNCwyLDY5LDEwMSwxODk3MywxODk3Nyw1OSwzLDEwOTU1LDY1MDI0LDU5LDMsODg0Miw2NTAyNCwxMTAsNCwyLDY5LDEwMSwxODk4OCwxODk5Miw1OSwzLDEwOTU2LDY1MDI0LDU5LDMsODg0Myw2NTAyNCwxMDUsMTAzLDEyMiw5NywxMDMsNTksMSwxMDY1MCw0LDcsOTksMTAxLDEwMiwxMTEsMTEyLDExNCwxMTUsMTkwMjAsMTkwMjYsMTkwNjEsMTkwNjYsMTkwNzIsMTkwNzUsMTkwODksMTA1LDExNCw5OSw1OSwxLDM3Myw0LDIsMTAwLDEwNSwxOTAzMiwxOTA1NSw0LDIsOTgsMTAzLDE5MDM4LDE5MDQzLDk3LDExNCw1OSwxLDEwODQ3LDEwMSw0LDIsNTksMTEzLDE5MDUwLDE5MDUyLDEsODc0Myw1OSwxLDg3OTMsMTAxLDExNCwxMTIsNTksMSw4NDcyLDExNCw1OSwzLDU1MzQ5LDU2NjI4LDExMiwxMDIsNTksMyw1NTM0OSw1NjY4MCw1OSwxLDg0NzIsNCwyLDU5LDEwMSwxOTA4MSwxOTA4MywxLDg3NjgsOTcsMTE2LDEwNCw1OSwxLDg3NjgsOTksMTE0LDU5LDMsNTUzNDksNTY1MjQsNCwxNCw5OSwxMDAsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTAsMTExLDExNCwxMTUsMTE3LDExOCwxMTksMTkxMjUsMTkxNDYsMTkxNTIsMTkxNTcsMTkxNzMsMTkxNzYsMTkxOTIsMTkxOTcsMTkyMDIsMTkyMzYsMTkyNTIsMTkyNjksMTkyODYsMTkyOTEsNCwzLDk3LDEwNSwxMTcsMTkxMzMsMTkxMzcsMTkxNDIsMTEyLDU5LDEsODg5OCwxMTQsOTksNTksMSw5NzExLDExMiw1OSwxLDg4OTksMTE2LDExNCwxMDUsNTksMSw5NjYxLDExNCw1OSwzLDU1MzQ5LDU2NjI5LDQsMiw2NSw5NywxOTE2MywxOTE2OCwxMTQsMTE0LDU5LDEsMTAyMzQsMTE0LDExNCw1OSwxLDEwMjMxLDU5LDEsOTU4LDQsMiw2NSw5NywxOTE4MiwxOTE4NywxMTQsMTE0LDU5LDEsMTAyMzIsMTE0LDExNCw1OSwxLDEwMjI5LDk3LDExMiw1OSwxLDEwMjM2LDEwNSwxMTUsNTksMSw4OTU1LDQsMywxMDAsMTEyLDExNiwxOTIxMCwxOTIxNSwxOTIzMCwxMTEsMTE2LDU5LDEsMTA3NTIsNCwyLDEwMiwxMDgsMTkyMjEsMTkyMjUsNTksMyw1NTM0OSw1NjY4MSwxMTcsMTE1LDU5LDEsMTA3NTMsMTA1LDEwOSwxMDEsNTksMSwxMDc1NCw0LDIsNjUsOTcsMTkyNDIsMTkyNDcsMTE0LDExNCw1OSwxLDEwMjMzLDExNCwxMTQsNTksMSwxMDIzMCw0LDIsOTksMTEzLDE5MjU4LDE5MjYzLDExNCw1OSwzLDU1MzQ5LDU2NTI1LDk5LDExNywxMTIsNTksMSwxMDc1OCw0LDIsMTEyLDExNiwxOTI3NSwxOTI4MSwxMDgsMTE3LDExNSw1OSwxLDEwNzU2LDExNCwxMDUsNTksMSw5NjUxLDEwMSwxMDEsNTksMSw4ODk3LDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg4OTYsNCw4LDk3LDk5LDEwMSwxMDIsMTA1LDExMSwxMTUsMTE3LDE5MzE2LDE5MzM1LDE5MzQ5LDE5MzU3LDE5MzYyLDE5MzY3LDE5MzczLDE5Mzc5LDk5LDQsMiwxMTcsMTIxLDE5MzIzLDE5MzMyLDExNiwxMDEsNSwyNTMsMSw1OSwxOTMzMCwxLDI1Myw1OSwxLDExMDMsNCwyLDEwNSwxMjEsMTkzNDEsMTkzNDYsMTE0LDk5LDU5LDEsMzc1LDU5LDEsMTA5OSwxMTAsNSwxNjUsMSw1OSwxOTM1NSwxLDE2NSwxMTQsNTksMyw1NTM0OSw1NjYzMCw5OSwxMjEsNTksMSwxMTExLDExMiwxMDIsNTksMyw1NTM0OSw1NjY4Miw5OSwxMTQsNTksMyw1NTM0OSw1NjUyNiw0LDIsOTksMTA5LDE5Mzg1LDE5Mzg5LDEyMSw1OSwxLDExMDIsMTA4LDUsMjU1LDEsNTksMTkzOTUsMSwyNTUsNCwxMCw5Nyw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDExMSwxMTUsMTE5LDE5NDE5LDE5NDI2LDE5NDQxLDE5NDQ2LDE5NDYyLDE5NDY3LDE5NDcyLDE5NDgwLDE5NDg2LDE5NDkyLDk5LDExNywxMTYsMTAxLDU5LDEsMzc4LDQsMiw5NywxMjEsMTk0MzIsMTk0MzgsMTE0LDExMSwxMTAsNTksMSwzODIsNTksMSwxMDc5LDExMSwxMTYsNTksMSwzODAsNCwyLDEwMSwxMTYsMTk0NTIsMTk0NTgsMTE2LDExNCwxMDIsNTksMSw4NDg4LDk3LDU5LDEsOTUwLDExNCw1OSwzLDU1MzQ5LDU2NjMxLDk5LDEyMSw1OSwxLDEwNzgsMTAzLDExNCw5NywxMTQsMTE0LDU5LDEsODY2OSwxMTIsMTAyLDU5LDMsNTUzNDksNTY2ODMsOTksMTE0LDU5LDMsNTUzNDksNTY1MjcsNCwyLDEwNiwxMTAsMTk0OTgsMTk1MDEsNTksMSw4MjA1LDEwNiw1OSwxLDgyMDRdKTsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFByZXByb2Nlc3NvciA9IHJlcXVpcmUoJy4vcHJlcHJvY2Vzc29yJyk7XG5jb25zdCB1bmljb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcbmNvbnN0IG5lVHJlZSA9IHJlcXVpcmUoJy4vbmFtZWQtZW50aXR5LWRhdGEnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSB1bmljb2RlLkNPREVfUE9JTlRTO1xuY29uc3QgJCQgPSB1bmljb2RlLkNPREVfUE9JTlRfU0VRVUVOQ0VTO1xuXG4vL0MxIFVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHJlcGxhY2VtZW50c1xuY29uc3QgQzFfQ09OVFJPTFNfUkVGRVJFTkNFX1JFUExBQ0VNRU5UUyA9IHtcbiAgICAweDgwOiAweDIwYWMsXG4gICAgMHg4MjogMHgyMDFhLFxuICAgIDB4ODM6IDB4MDE5MixcbiAgICAweDg0OiAweDIwMWUsXG4gICAgMHg4NTogMHgyMDI2LFxuICAgIDB4ODY6IDB4MjAyMCxcbiAgICAweDg3OiAweDIwMjEsXG4gICAgMHg4ODogMHgwMmM2LFxuICAgIDB4ODk6IDB4MjAzMCxcbiAgICAweDhhOiAweDAxNjAsXG4gICAgMHg4YjogMHgyMDM5LFxuICAgIDB4OGM6IDB4MDE1MixcbiAgICAweDhlOiAweDAxN2QsXG4gICAgMHg5MTogMHgyMDE4LFxuICAgIDB4OTI6IDB4MjAxOSxcbiAgICAweDkzOiAweDIwMWMsXG4gICAgMHg5NDogMHgyMDFkLFxuICAgIDB4OTU6IDB4MjAyMixcbiAgICAweDk2OiAweDIwMTMsXG4gICAgMHg5NzogMHgyMDE0LFxuICAgIDB4OTg6IDB4MDJkYyxcbiAgICAweDk5OiAweDIxMjIsXG4gICAgMHg5YTogMHgwMTYxLFxuICAgIDB4OWI6IDB4MjAzYSxcbiAgICAweDljOiAweDAxNTMsXG4gICAgMHg5ZTogMHgwMTdlLFxuICAgIDB4OWY6IDB4MDE3OFxufTtcblxuLy8gTmFtZWQgZW50aXR5IHRyZWUgZmxhZ3NcbmNvbnN0IEhBU19EQVRBX0ZMQUcgPSAxIDw8IDA7XG5jb25zdCBEQVRBX0RVUExFVF9GTEFHID0gMSA8PCAxO1xuY29uc3QgSEFTX0JSQU5DSEVTX0ZMQUcgPSAxIDw8IDI7XG5jb25zdCBNQVhfQlJBTkNIX01BUktFUl9WQUxVRSA9IEhBU19EQVRBX0ZMQUcgfCBEQVRBX0RVUExFVF9GTEFHIHwgSEFTX0JSQU5DSEVTX0ZMQUc7XG5cbi8vU3RhdGVzXG5jb25zdCBEQVRBX1NUQVRFID0gJ0RBVEFfU1RBVEUnO1xuY29uc3QgUkNEQVRBX1NUQVRFID0gJ1JDREFUQV9TVEFURSc7XG5jb25zdCBSQVdURVhUX1NUQVRFID0gJ1JBV1RFWFRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfU1RBVEUgPSAnU0NSSVBUX0RBVEFfU1RBVEUnO1xuY29uc3QgUExBSU5URVhUX1NUQVRFID0gJ1BMQUlOVEVYVF9TVEFURSc7XG5jb25zdCBUQUdfT1BFTl9TVEFURSA9ICdUQUdfT1BFTl9TVEFURSc7XG5jb25zdCBFTkRfVEFHX09QRU5fU1RBVEUgPSAnRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFRBR19OQU1FX1NUQVRFID0gJ1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFJDREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSc7XG5jb25zdCBSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1JBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSc7XG5jb25zdCBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFID0gJ0FGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFJztcbmNvbnN0IEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUgPSAnQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUgPSAnQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFID0gJ1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUnO1xuY29uc3QgQk9HVVNfQ09NTUVOVF9TVEFURSA9ICdCT0dVU19DT01NRU5UX1NUQVRFJztcbmNvbnN0IE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFID0gJ01BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBUlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUgPSAnQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBVEUgPSAnQ09NTUVOVF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSA9ICdDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9FTkRfREFTSF9TVEFURSA9ICdDT01NRU5UX0VORF9EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX1NUQVRFID0gJ0NPTU1FTlRfRU5EX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfRU5EX0JBTkdfU1RBVEUgPSAnQ09NTUVOVF9FTkRfQkFOR19TVEFURSc7XG5jb25zdCBET0NUWVBFX1NUQVRFID0gJ0RPQ1RZUEVfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfTkFNRV9TVEFURSA9ICdET0NUWVBFX05BTUVfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSc7XG5jb25zdCBBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUnO1xuY29uc3QgRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUgPSAnQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURSc7XG5jb25zdCBCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJztcbmNvbnN0IEJPR1VTX0RPQ1RZUEVfU1RBVEUgPSAnQk9HVVNfRE9DVFlQRV9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fU1RBVEUnO1xuY29uc3QgQ0RBVEFfU0VDVElPTl9CUkFDS0VUX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX0VORF9TVEFURSA9ICdDREFUQV9TRUNUSU9OX0VORF9TVEFURSc7XG5jb25zdCBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEUgPSAnQU1CSUdVT1NfQU1QRVJTQU5EX1NUQVRFJztcbmNvbnN0IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUnO1xuY29uc3QgSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFJztcbmNvbnN0IERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSA9ICdERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURSA9ICdOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFJztcblxuLy9VdGlsc1xuXG4vL09QVElNSVpBVElPTjogdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBtb3ZlZCBvdXQgb2YgdGhpcyBtb2R1bGUuIFY4IENyYW5rc2hhZnQgd2lsbCBub3QgaW5saW5lXG4vL3RoaXMgZnVuY3Rpb25zIGlmIHRoZXkgd2lsbCBiZSBzaXR1YXRlZCBpbiBhbm90aGVyIG1vZHVsZSBkdWUgdG8gY29udGV4dCBzd2l0Y2guXG4vL0Fsd2F5cyBwZXJmb3JtIGlubGluaW5nIGNoZWNrIGJlZm9yZSBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbnMgKCdub2RlIC0tdHJhY2UtaW5saW5pbmcnKS5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gJC5TUEFDRSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuVEFCVUxBVElPTiB8fCBjcCA9PT0gJC5GT1JNX0ZFRUQ7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkRJR0lUXzAgJiYgY3AgPD0gJC5ESUdJVF85O1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX1o7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlMb3dlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX1NNQUxMX0EgJiYgY3AgPD0gJC5MQVRJTl9TTUFMTF9aO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTGV0dGVyKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMb3dlcihjcCkgfHwgaXNBc2NpaVVwcGVyKGNwKTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTGV0dGVyKGNwKSB8fCBpc0FzY2lpRGlnaXQoY3ApO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSAkLkxBVElOX0NBUElUQUxfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUhleERpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlEaWdpdChjcCkgfHwgaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApIHx8IGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIGNwICsgMHgwMDIwO1xufVxuXG4vL05PVEU6IFN0cmluZy5mcm9tQ2hhckNvZGUoKSBmdW5jdGlvbiBjYW4gaGFuZGxlIG9ubHkgY2hhcmFjdGVycyBmcm9tIEJNUCBzdWJzZXQuXG4vL1NvLCB3ZSBuZWVkIHRvIHdvcmthcm91bmQgdGhpcyBtYW51YWxseS5cbi8vKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZnJvbUNoYXJDb2RlI0dldHRpbmdfaXRfdG9fd29ya193aXRoX2hpZ2hlcl92YWx1ZXMpXG5mdW5jdGlvbiB0b0NoYXIoY3ApIHtcbiAgICBpZiAoY3AgPD0gMHhmZmZmKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICB9XG5cbiAgICBjcCAtPSAweDEwMDAwO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY3AgPj4+IDEwKSAmIDB4M2ZmKSB8IDB4ZDgwMCkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZGMwMCB8IChjcCAmIDB4M2ZmKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXNjaWlMb3dlckNoYXIoY3ApIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbn1cblxuZnVuY3Rpb24gZmluZE5hbWVkRW50aXR5VHJlZUJyYW5jaChub2RlSXgsIGNwKSB7XG4gICAgY29uc3QgYnJhbmNoQ291bnQgPSBuZVRyZWVbKytub2RlSXhdO1xuICAgIGxldCBsbyA9ICsrbm9kZUl4O1xuICAgIGxldCBoaSA9IGxvICsgYnJhbmNoQ291bnQgLSAxO1xuXG4gICAgd2hpbGUgKGxvIDw9IGhpKSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgICAgY29uc3QgbWlkQ3AgPSBuZVRyZWVbbWlkXTtcblxuICAgICAgICBpZiAobWlkQ3AgPCBjcCkge1xuICAgICAgICAgICAgbG8gPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2UgaWYgKG1pZENwID4gY3ApIHtcbiAgICAgICAgICAgIGhpID0gbWlkIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZVRyZWVbbWlkICsgYnJhbmNoQ291bnRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xufVxuXG4vL1Rva2VuaXplclxuY2xhc3MgVG9rZW5pemVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBuZXcgUHJlcHJvY2Vzc29yKCk7XG5cbiAgICAgICAgdGhpcy50b2tlblF1ZXVlID0gW107XG5cbiAgICAgICAgdGhpcy5hbGxvd0NEQVRBID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSAnJztcblxuICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gLTE7XG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gJyc7XG5cbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9FcnJvcnNcbiAgICBfZXJyKCkge1xuICAgICAgICAvLyBOT1RFOiBlcnIgcmVwb3J0aW5nIGlzIG5vb3AgYnkgZGVmYXVsdC4gRW5hYmxlZCBieSBtaXhpbi5cbiAgICB9XG5cbiAgICBfZXJyT25OZXh0Q29kZVBvaW50KGVycikge1xuICAgICAgICB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuX2VycihlcnIpO1xuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICAvL0FQSVxuICAgIGdldE5leHRUb2tlbigpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnRva2VuUXVldWUubGVuZ3RoICYmIHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IDA7XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW3RoaXMuc3RhdGVdKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRva2VuUXVldWUuc2hpZnQoKTtcbiAgICB9XG5cbiAgICB3cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci53cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgIH1cblxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbiAgICB9XG5cbiAgICAvL0hpYmVybmF0aW9uXG4gICAgX2Vuc3VyZUhpYmVybmF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCkge1xuICAgICAgICAgICAgZm9yICg7IHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID4gMDsgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKHsgdHlwZTogVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0NvbnN1bXB0aW9uXG4gICAgX2NvbnN1bWUoKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgfVxuXG4gICAgX3VuY29uc3VtZSgpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QtLTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucmV0cmVhdCgpO1xuICAgIH1cblxuICAgIF9yZWNvbnN1bWVJblN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2gocGF0dGVybiwgc3RhcnRDcCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBsZXQgY29uc3VtZWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBpc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGF0dGVybkxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoO1xuICAgICAgICBsZXQgcGF0dGVyblBvcyA9IDA7XG4gICAgICAgIGxldCBjcCA9IHN0YXJ0Q3A7XG4gICAgICAgIGxldCBwYXR0ZXJuQ3AgPSB2b2lkIDA7XG5cbiAgICAgICAgZm9yICg7IHBhdHRlcm5Qb3MgPCBwYXR0ZXJuTGVuZ3RoOyBwYXR0ZXJuUG9zKyspIHtcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuUG9zID4gMCkge1xuICAgICAgICAgICAgICAgIGNwID0gdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVkQ291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0dGVybkNwID0gcGF0dGVybltwYXR0ZXJuUG9zXTtcblxuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuQ3AgJiYgKGNhc2VTZW5zaXRpdmUgfHwgY3AgIT09IHRvQXNjaWlMb3dlckNvZGVQb2ludChwYXR0ZXJuQ3ApKSkge1xuICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNNYXRjaCkge1xuICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWVkQ291bnQtLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTWF0Y2g7XG4gICAgfVxuXG4gICAgLy9UZW1wIGJ1ZmZlclxuICAgIF9pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wQnVmZi5sZW5ndGggIT09ICQkLlNDUklQVF9TVFJJTkcubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGVtcEJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlbXBCdWZmW2ldICE9PSAkJC5TQ1JJUFRfU1RSSU5HW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBjcmVhdGlvblxuICAgIF9jcmVhdGVTdGFydFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4sXG4gICAgICAgICAgICB0YWdOYW1lOiAnJyxcbiAgICAgICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFja1NlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJzOiBbXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFbmRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTixcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNvbW1lbnRUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTixcbiAgICAgICAgICAgIGRhdGE6ICcnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5ET0NUWVBFX1RPS0VOLFxuICAgICAgICAgICAgbmFtZTogaW5pdGlhbE5hbWUsXG4gICAgICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGNoYXJzOiBjaFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9jcmVhdGVFT0ZUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7IHR5cGU6IFRva2VuaXplci5FT0ZfVE9LRU4gfTtcbiAgICB9XG5cbiAgICAvL1RhZyBhdHRyaWJ1dGVzXG4gICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIgPSB7XG4gICAgICAgICAgICBuYW1lOiBhdHRyTmFtZUZpcnN0Q2gsXG4gICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfbGVhdmVBdHRyTmFtZSh0b1N0YXRlKSB7XG4gICAgICAgIGlmIChUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRoaXMuY3VycmVudFRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5kdXBsaWNhdGVBdHRyaWJ1dGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgX2xlYXZlQXR0clZhbHVlKHRvU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRvU3RhdGU7XG4gICAgfVxuXG4gICAgLy9Ub2tlbiBlbWlzc2lvblxuICAgIF9lbWl0Q3VycmVudFRva2VuKCkge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG5cbiAgICAgICAgY29uc3QgY3QgPSB0aGlzLmN1cnJlbnRUb2tlbjtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG5cbiAgICAgICAgLy9OT1RFOiBzdG9yZSBlbWl0ZWQgc3RhcnQgdGFnJ3MgdGFnTmFtZSB0byBkZXRlcm1pbmUgaXMgdGhlIGZvbGxvd2luZyBlbmQgdGFnIHRva2VuIGlzIGFwcHJvcHJpYXRlLlxuICAgICAgICBpZiAoY3QudHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTikge1xuICAgICAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gY3QudGFnTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdC50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTikge1xuICAgICAgICAgICAgaWYgKGN0LmF0dHJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVuZFRhZ1dpdGhBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKGN0KTtcbiAgICB9XG5cbiAgICBfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnRva2VuUXVldWUucHVzaCh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZW1pdEVPRlRva2VuKCkge1xuICAgICAgICB0aGlzLl9jcmVhdGVFT0ZUb2tlbigpO1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgfVxuXG4gICAgLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG5cbiAgICAvL09QVElNSVpBVElPTjogc3BlY2lmaWNhdGlvbiB1c2VzIG9ubHkgb25lIHR5cGUgb2YgY2hhcmFjdGVyIHRva2VucyAob25lIHRva2VuIHBlciBjaGFyYWN0ZXIpLlxuICAgIC8vVGhpcyBjYXVzZXMgYSBodWdlIG1lbW9yeSBvdmVyaGVhZCBhbmQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgcGFyc2VyIGxvb3BzLiBwYXJzZTUgdXNlcyAzIGdyb3VwcyBvZiBjaGFyYWN0ZXJzLlxuICAgIC8vSWYgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgZ3JvdXAsIHBhcnNlciBjYW4gcHJvY2VzcyBpdFxuICAgIC8vYXMgYSBzaW5nbGUgc29saWQgY2hhcmFjdGVyIHRva2VuLlxuICAgIC8vU28sIHRoZXJlIGFyZSAzIHR5cGVzIG9mIGNoYXJhY3RlciB0b2tlbnMgaW4gcGFyc2U1OlxuICAgIC8vMSlOVUxMX0NIQVJBQ1RFUl9UT0tFTiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbiAgICAvLzIpV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gLSBhbnkgd2hpdGVzcGFjZS9uZXctbGluZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXG4gIFxcclxcdCAgIFxcZicpXG4gICAgLy8zKUNIQVJBQ1RFUl9UT0tFTiAtIGFueSBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9uJ3QgYmVsb25nIHRvIGdyb3VwcyAxIGFuZCAyIChlLmcuICdhYmNkZWYxMjM0QEAjJCVeJylcbiAgICBfYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmNoYXJzICs9IGNoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2VtaXRDb2RlUG9pbnQoY3ApIHtcbiAgICAgICAgbGV0IHR5cGUgPSBUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOO1xuXG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgdG9DaGFyKGNwKSk7XG4gICAgfVxuXG4gICAgX2VtaXRTZXZlcmFsQ29kZVBvaW50cyhjb2RlUG9pbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjb2RlUG9pbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTk9URTogdXNlZCB0aGVuIHdlIGVtaXQgY2hhcmFjdGVyIGV4cGxpY2l0bHkuIFRoaXMgaXMgYWx3YXlzIGEgbm9uLXdoaXRlc3BhY2UgYW5kIGEgbm9uLW51bGwgY2hhcmFjdGVyLlxuICAgIC8vU28gd2UgY2FuIGF2b2lkIGFkZGl0aW9uYWwgY2hlY2tzIGhlcmUuXG4gICAgX2VtaXRDaGFycyhjaCkge1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4oVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiwgY2gpO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2UgaGVscGVyc1xuICAgIF9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKHN0YXJ0Q3ApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIGxldCBleGNlc3MgPSAxO1xuICAgICAgICBsZXQgaSA9IGZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2goMCwgc3RhcnRDcCk7XG5cbiAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKHN0YXJ0Q3ApO1xuXG4gICAgICAgIHdoaWxlIChpID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBuZVRyZWVbaV07XG4gICAgICAgICAgICBjb25zdCBpbk5vZGUgPSBjdXJyZW50IDwgTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUU7XG4gICAgICAgICAgICBjb25zdCBub2RlV2l0aERhdGEgPSBpbk5vZGUgJiYgY3VycmVudCAmIEhBU19EQVRBX0ZMQUc7XG5cbiAgICAgICAgICAgIGlmIChub2RlV2l0aERhdGEpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIHVzZSBncmVlZHkgc2VhcmNoLCBzbyB3ZSBjb250aW51ZSBsb29rdXAgYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgJiBEQVRBX0RVUExFVF9GTEFHID8gW25lVHJlZVsrK2ldLCBuZVRyZWVbKytpXV0gOiBbbmVUcmVlWysraV1dO1xuICAgICAgICAgICAgICAgIGV4Y2VzcyA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuXG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgZXhjZXNzKys7XG5cbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluTm9kZSkge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50ICYgSEFTX0JSQU5DSEVTX0ZMQUcgPyBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKGksIGNwKSA6IC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpID0gY3AgPT09IGN1cnJlbnQgPyArK2kgOiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChleGNlc3MtLSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPT09IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsod2l0aFNlbWljb2xvbikge1xuICAgICAgICBpZiAoIXdpdGhTZW1pY29sb24gJiYgdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Q3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV4dENwID09PSAkLkVRVUFMU19TSUdOIHx8IGlzQXNjaWlBbHBoYU51bWVyaWMobmV4dENwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBfZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRlbXBCdWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIodGhpcy50ZW1wQnVmZltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0U2V2ZXJhbENvZGVQb2ludHModGhpcy50ZW1wQnVmZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgfVxuXG4gICAgLy8gU3RhdGUgbWFjaGluZVxuXG4gICAgLy8gRGF0YSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFRBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICBSQ0RBVEEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBSQ0RBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtQTEFJTlRFWFRfU1RBVEVdKGNwKSB7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuXG4gICAgICAgIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtUQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkVYQ0xBTUFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBNQVJLVVBfREVDTEFSQVRJT05fT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVTdGFydFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVUVTVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFRBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRW5kVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJBV1RFWFQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9PT0gdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEVcbiAgICAgICAgICAgICAgICA6IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2godG9Bc2NpaUxvd2VyQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpTG93ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgID8gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURVxuICAgICAgICAgICAgICAgIDogU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG5cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04gfHwgY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSyB8fCBjcCA9PT0gJC5BUE9TVFJPUEhFIHx8IGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVFVQUxTX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0F0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIHZhbHVlIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BTVBFUlNBTkQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY3AgPT09ICQuUVVPVEFUSU9OX01BUksgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkFQT1NUUk9QSEUgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkxFU1NfVEhBTl9TSUdOIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5FUVVBTFNfU0lHTiB8fFxuICAgICAgICAgICAgY3AgPT09ICQuR1JBVkVfQUNDRU5UXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoREFUQV9TVEFURSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbGYtY2xvc2luZyBzdGFydCB0YWcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFNvbGlkdXNJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb2d1cyBjb21tZW50IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQk9HVVNfQ09NTUVOVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcmt1cCBkZWNsYXJhdGlvbiBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRBU0hfREFTSF9TVFJJTkcsIGNwLCB0cnVlKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRPQ1RZUEVfU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkNEQVRBX1NUQVJUX1NUUklORywgY3AsIHRydWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0NEQVRBKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENEQVRBX1NFQ1RJT05fU1RBVEU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2RhdGFJbkh0bWxDb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhID0gJ1tDREFUQVsnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCT0dVU19DT01NRU5UX1NUQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9OT1RFOiBzZXF1ZW5jZSBsb29rdXAgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbG9va3VwXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19DT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9TVEFSVF9EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnPCc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnISc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICchJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfREFTSF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSAkLkdSRUFURVJfVEhBTl9TSUdOICYmIGNwICE9PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ09NTUVOVF9FTkRfU1RBVEUpO1xuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9FTkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0JBTkdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLS0nO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgZW5kIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9CQU5HX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX0RBU0hfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKHRvQXNjaWlMb3dlckNoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4odW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbih0b0NoYXIoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuUFVCTElDX1NUUklORywgY3AsIGZhbHNlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5TWVNURU1fU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURTtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHNlcXVlbmNlIGxvb2t1cCBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSBsb29rdXBcbiAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0JPR1VTX0RPQ1RZUEVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDREFUQV9TRUNUSU9OX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDREFUQV9TRUNUSU9OX0JSQUNLRVRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ2RhdGEpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gYnJhY2tldCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0RBVEFfU0VDVElPTl9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDREFUQSBzZWN0aW9uIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fRU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXV0nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQ0RBVEFfU0VDVElPTl9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFskLkFNUEVSU0FORF07XG5cbiAgICAgICAgaWYgKGNwID09PSAkLk5VTUJFUl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0aGlzLl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcblxuICAgICAgICAvL05PVEU6IG1hdGNoaW5nIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlIG1hdGNoXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgaWYgKHRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbJC5BTVBFUlNBTkRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoUmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRoU2VtaWNvbG9uID0gdGhpcy50ZW1wQnVmZlt0aGlzLnRlbXBCdWZmLmxlbmd0aCAtIDFdID09PSAkLlNFTUlDT0xPTjtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUF0dHJpYnV0ZVF1aXJrKHdpdGhTZW1pY29sb24pKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aXRoU2VtaWNvbG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vyck9uTmV4dENvZGVQb2ludChFUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gbWF0Y2hSZXN1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFNQklHVU9VU19BTVBFUlNBTkRfU1RBVEU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbWJpZ3VvcyBhbXBlcnNhbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcihjcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IDA7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxBVElOX1NNQUxMX1ggfHwgY3AgPT09ICQuTEFUSU5fQ0FQSVRBTF9YKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZXhhZGVtaWNhbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDM3O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHg1NztcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDMwO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxMCArIGNwIC0gMHgzMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFXSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhclJlZkNvZGUgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5udWxsQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAkLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXJSZWZDb2RlID4gMHgxMGZmZmYpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2hhcmFjdGVyUmVmZXJlbmNlT3V0c2lkZVVuaWNvZGVSYW5nZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gJC5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pY29kZS5pc1N1cnJvZ2F0ZSh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5zdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNVbmRlZmluZWRDb2RlUG9pbnQodGhpcy5jaGFyUmVmQ29kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmljb2RlLmlzQ29udHJvbENvZGVQb2ludCh0aGlzLmNoYXJSZWZDb2RlKSB8fCB0aGlzLmNoYXJSZWZDb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBCdWZmID0gW3RoaXMuY2hhclJlZkNvZGVdO1xuXG4gICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICB9XG59XG5cbi8vVG9rZW4gdHlwZXNcblRva2VuaXplci5DSEFSQUNURVJfVE9LRU4gPSAnQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTiA9ICdOVUxMX0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gPSAnV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiA9ICdTVEFSVF9UQUdfVE9LRU4nO1xuVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gPSAnRU5EX1RBR19UT0tFTic7XG5Ub2tlbml6ZXIuQ09NTUVOVF9UT0tFTiA9ICdDT01NRU5UX1RPS0VOJztcblRva2VuaXplci5ET0NUWVBFX1RPS0VOID0gJ0RPQ1RZUEVfVE9LRU4nO1xuVG9rZW5pemVyLkVPRl9UT0tFTiA9ICdFT0ZfVE9LRU4nO1xuVG9rZW5pemVyLkhJQkVSTkFUSU9OX1RPS0VOID0gJ0hJQkVSTkFUSU9OX1RPS0VOJztcblxuLy9Ub2tlbml6ZXIgaW5pdGlhbCBzdGF0ZXMgZm9yIGRpZmZlcmVudCBtb2Rlc1xuVG9rZW5pemVyLk1PREUgPSB7XG4gICAgREFUQTogREFUQV9TVEFURSxcbiAgICBSQ0RBVEE6IFJDREFUQV9TVEFURSxcbiAgICBSQVdURVhUOiBSQVdURVhUX1NUQVRFLFxuICAgIFNDUklQVF9EQVRBOiBTQ1JJUFRfREFUQV9TVEFURSxcbiAgICBQTEFJTlRFWFQ6IFBMQUlOVEVYVF9TVEFURVxufTtcblxuLy9TdGF0aWNcblRva2VuaXplci5nZXRUb2tlbkF0dHIgPSBmdW5jdGlvbih0b2tlbiwgYXR0ck5hbWUpIHtcbiAgICBmb3IgKGxldCBpID0gdG9rZW4uYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4uYXR0cnNbaV0udmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVG9rZW5pemVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBOUyA9IChleHBvcnRzLk5BTUVTUEFDRVMgPSB7XG4gICAgSFRNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLFxuICAgIE1BVEhNTDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICAgIFNWRzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgICBYTElOSzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICAgIFhNTDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsXG4gICAgWE1MTlM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLydcbn0pO1xuXG5leHBvcnRzLkFUVFJTID0ge1xuICAgIFRZUEU6ICd0eXBlJyxcbiAgICBBQ1RJT046ICdhY3Rpb24nLFxuICAgIEVOQ09ESU5HOiAnZW5jb2RpbmcnLFxuICAgIFBST01QVDogJ3Byb21wdCcsXG4gICAgTkFNRTogJ25hbWUnLFxuICAgIENPTE9SOiAnY29sb3InLFxuICAgIEZBQ0U6ICdmYWNlJyxcbiAgICBTSVpFOiAnc2l6ZSdcbn07XG5cbmV4cG9ydHMuRE9DVU1FTlRfTU9ERSA9IHtcbiAgICBOT19RVUlSS1M6ICduby1xdWlya3MnLFxuICAgIFFVSVJLUzogJ3F1aXJrcycsXG4gICAgTElNSVRFRF9RVUlSS1M6ICdsaW1pdGVkLXF1aXJrcydcbn07XG5cbmNvbnN0ICQgPSAoZXhwb3J0cy5UQUdfTkFNRVMgPSB7XG4gICAgQTogJ2EnLFxuICAgIEFERFJFU1M6ICdhZGRyZXNzJyxcbiAgICBBTk5PVEFUSU9OX1hNTDogJ2Fubm90YXRpb24teG1sJyxcbiAgICBBUFBMRVQ6ICdhcHBsZXQnLFxuICAgIEFSRUE6ICdhcmVhJyxcbiAgICBBUlRJQ0xFOiAnYXJ0aWNsZScsXG4gICAgQVNJREU6ICdhc2lkZScsXG5cbiAgICBCOiAnYicsXG4gICAgQkFTRTogJ2Jhc2UnLFxuICAgIEJBU0VGT05UOiAnYmFzZWZvbnQnLFxuICAgIEJHU09VTkQ6ICdiZ3NvdW5kJyxcbiAgICBCSUc6ICdiaWcnLFxuICAgIEJMT0NLUVVPVEU6ICdibG9ja3F1b3RlJyxcbiAgICBCT0RZOiAnYm9keScsXG4gICAgQlI6ICdicicsXG4gICAgQlVUVE9OOiAnYnV0dG9uJyxcblxuICAgIENBUFRJT046ICdjYXB0aW9uJyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIENPREU6ICdjb2RlJyxcbiAgICBDT0w6ICdjb2wnLFxuICAgIENPTEdST1VQOiAnY29sZ3JvdXAnLFxuXG4gICAgREQ6ICdkZCcsXG4gICAgREVTQzogJ2Rlc2MnLFxuICAgIERFVEFJTFM6ICdkZXRhaWxzJyxcbiAgICBESUFMT0c6ICdkaWFsb2cnLFxuICAgIERJUjogJ2RpcicsXG4gICAgRElWOiAnZGl2JyxcbiAgICBETDogJ2RsJyxcbiAgICBEVDogJ2R0JyxcblxuICAgIEVNOiAnZW0nLFxuICAgIEVNQkVEOiAnZW1iZWQnLFxuXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCcsXG4gICAgRklHQ0FQVElPTjogJ2ZpZ2NhcHRpb24nLFxuICAgIEZJR1VSRTogJ2ZpZ3VyZScsXG4gICAgRk9OVDogJ2ZvbnQnLFxuICAgIEZPT1RFUjogJ2Zvb3RlcicsXG4gICAgRk9SRUlHTl9PQkpFQ1Q6ICdmb3JlaWduT2JqZWN0JyxcbiAgICBGT1JNOiAnZm9ybScsXG4gICAgRlJBTUU6ICdmcmFtZScsXG4gICAgRlJBTUVTRVQ6ICdmcmFtZXNldCcsXG5cbiAgICBIMTogJ2gxJyxcbiAgICBIMjogJ2gyJyxcbiAgICBIMzogJ2gzJyxcbiAgICBINDogJ2g0JyxcbiAgICBINTogJ2g1JyxcbiAgICBINjogJ2g2JyxcbiAgICBIRUFEOiAnaGVhZCcsXG4gICAgSEVBREVSOiAnaGVhZGVyJyxcbiAgICBIR1JPVVA6ICdoZ3JvdXAnLFxuICAgIEhSOiAnaHInLFxuICAgIEhUTUw6ICdodG1sJyxcblxuICAgIEk6ICdpJyxcbiAgICBJTUc6ICdpbWcnLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICAgIElOUFVUOiAnaW5wdXQnLFxuICAgIElGUkFNRTogJ2lmcmFtZScsXG5cbiAgICBLRVlHRU46ICdrZXlnZW4nLFxuXG4gICAgTEFCRUw6ICdsYWJlbCcsXG4gICAgTEk6ICdsaScsXG4gICAgTElOSzogJ2xpbmsnLFxuICAgIExJU1RJTkc6ICdsaXN0aW5nJyxcblxuICAgIE1BSU46ICdtYWluJyxcbiAgICBNQUxJR05NQVJLOiAnbWFsaWdubWFyaycsXG4gICAgTUFSUVVFRTogJ21hcnF1ZWUnLFxuICAgIE1BVEg6ICdtYXRoJyxcbiAgICBNRU5VOiAnbWVudScsXG4gICAgTUVUQTogJ21ldGEnLFxuICAgIE1HTFlQSDogJ21nbHlwaCcsXG4gICAgTUk6ICdtaScsXG4gICAgTU86ICdtbycsXG4gICAgTU46ICdtbicsXG4gICAgTVM6ICdtcycsXG4gICAgTVRFWFQ6ICdtdGV4dCcsXG5cbiAgICBOQVY6ICduYXYnLFxuICAgIE5PQlI6ICdub2JyJyxcbiAgICBOT0ZSQU1FUzogJ25vZnJhbWVzJyxcbiAgICBOT0VNQkVEOiAnbm9lbWJlZCcsXG4gICAgTk9TQ1JJUFQ6ICdub3NjcmlwdCcsXG5cbiAgICBPQkpFQ1Q6ICdvYmplY3QnLFxuICAgIE9MOiAnb2wnLFxuICAgIE9QVEdST1VQOiAnb3B0Z3JvdXAnLFxuICAgIE9QVElPTjogJ29wdGlvbicsXG5cbiAgICBQOiAncCcsXG4gICAgUEFSQU06ICdwYXJhbScsXG4gICAgUExBSU5URVhUOiAncGxhaW50ZXh0JyxcbiAgICBQUkU6ICdwcmUnLFxuXG4gICAgUkI6ICdyYicsXG4gICAgUlA6ICdycCcsXG4gICAgUlQ6ICdydCcsXG4gICAgUlRDOiAncnRjJyxcbiAgICBSVUJZOiAncnVieScsXG5cbiAgICBTOiAncycsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBTRUNUSU9OOiAnc2VjdGlvbicsXG4gICAgU0VMRUNUOiAnc2VsZWN0JyxcbiAgICBTT1VSQ0U6ICdzb3VyY2UnLFxuICAgIFNNQUxMOiAnc21hbGwnLFxuICAgIFNQQU46ICdzcGFuJyxcbiAgICBTVFJJS0U6ICdzdHJpa2UnLFxuICAgIFNUUk9ORzogJ3N0cm9uZycsXG4gICAgU1RZTEU6ICdzdHlsZScsXG4gICAgU1VCOiAnc3ViJyxcbiAgICBTVU1NQVJZOiAnc3VtbWFyeScsXG4gICAgU1VQOiAnc3VwJyxcblxuICAgIFRBQkxFOiAndGFibGUnLFxuICAgIFRCT0RZOiAndGJvZHknLFxuICAgIFRFTVBMQVRFOiAndGVtcGxhdGUnLFxuICAgIFRFWFRBUkVBOiAndGV4dGFyZWEnLFxuICAgIFRGT09UOiAndGZvb3QnLFxuICAgIFREOiAndGQnLFxuICAgIFRIOiAndGgnLFxuICAgIFRIRUFEOiAndGhlYWQnLFxuICAgIFRJVExFOiAndGl0bGUnLFxuICAgIFRSOiAndHInLFxuICAgIFRSQUNLOiAndHJhY2snLFxuICAgIFRUOiAndHQnLFxuXG4gICAgVTogJ3UnLFxuICAgIFVMOiAndWwnLFxuXG4gICAgU1ZHOiAnc3ZnJyxcblxuICAgIFZBUjogJ3ZhcicsXG5cbiAgICBXQlI6ICd3YnInLFxuXG4gICAgWE1QOiAneG1wJ1xufSk7XG5cbmV4cG9ydHMuU1BFQ0lBTF9FTEVNRU5UUyA9IHtcbiAgICBbTlMuSFRNTF06IHtcbiAgICAgICAgWyQuQUREUkVTU106IHRydWUsXG4gICAgICAgIFskLkFQUExFVF06IHRydWUsXG4gICAgICAgIFskLkFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5BUlRJQ0xFXTogdHJ1ZSxcbiAgICAgICAgWyQuQVNJREVdOiB0cnVlLFxuICAgICAgICBbJC5CQVNFXTogdHJ1ZSxcbiAgICAgICAgWyQuQkFTRUZPTlRdOiB0cnVlLFxuICAgICAgICBbJC5CR1NPVU5EXTogdHJ1ZSxcbiAgICAgICAgWyQuQkxPQ0tRVU9URV06IHRydWUsXG4gICAgICAgIFskLkJPRFldOiB0cnVlLFxuICAgICAgICBbJC5CUl06IHRydWUsXG4gICAgICAgIFskLkJVVFRPTl06IHRydWUsXG4gICAgICAgIFskLkNBUFRJT05dOiB0cnVlLFxuICAgICAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgICAgICBbJC5DT0xdOiB0cnVlLFxuICAgICAgICBbJC5DT0xHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkREXTogdHJ1ZSxcbiAgICAgICAgWyQuREVUQUlMU106IHRydWUsXG4gICAgICAgIFskLkRJUl06IHRydWUsXG4gICAgICAgIFskLkRJVl06IHRydWUsXG4gICAgICAgIFskLkRMXTogdHJ1ZSxcbiAgICAgICAgWyQuRFRdOiB0cnVlLFxuICAgICAgICBbJC5FTUJFRF06IHRydWUsXG4gICAgICAgIFskLkZJRUxEU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuRklHQ0FQVElPTl06IHRydWUsXG4gICAgICAgIFskLkZJR1VSRV06IHRydWUsXG4gICAgICAgIFskLkZPT1RFUl06IHRydWUsXG4gICAgICAgIFskLkZPUk1dOiB0cnVlLFxuICAgICAgICBbJC5GUkFNRV06IHRydWUsXG4gICAgICAgIFskLkZSQU1FU0VUXTogdHJ1ZSxcbiAgICAgICAgWyQuSDFdOiB0cnVlLFxuICAgICAgICBbJC5IMl06IHRydWUsXG4gICAgICAgIFskLkgzXTogdHJ1ZSxcbiAgICAgICAgWyQuSDRdOiB0cnVlLFxuICAgICAgICBbJC5INV06IHRydWUsXG4gICAgICAgIFskLkg2XTogdHJ1ZSxcbiAgICAgICAgWyQuSEVBRF06IHRydWUsXG4gICAgICAgIFskLkhFQURFUl06IHRydWUsXG4gICAgICAgIFskLkhHUk9VUF06IHRydWUsXG4gICAgICAgIFskLkhSXTogdHJ1ZSxcbiAgICAgICAgWyQuSFRNTF06IHRydWUsXG4gICAgICAgIFskLklGUkFNRV06IHRydWUsXG4gICAgICAgIFskLklNR106IHRydWUsXG4gICAgICAgIFskLklOUFVUXTogdHJ1ZSxcbiAgICAgICAgWyQuTEldOiB0cnVlLFxuICAgICAgICBbJC5MSU5LXTogdHJ1ZSxcbiAgICAgICAgWyQuTElTVElOR106IHRydWUsXG4gICAgICAgIFskLk1BSU5dOiB0cnVlLFxuICAgICAgICBbJC5NQVJRVUVFXTogdHJ1ZSxcbiAgICAgICAgWyQuTUVOVV06IHRydWUsXG4gICAgICAgIFskLk1FVEFdOiB0cnVlLFxuICAgICAgICBbJC5OQVZdOiB0cnVlLFxuICAgICAgICBbJC5OT0VNQkVEXTogdHJ1ZSxcbiAgICAgICAgWyQuTk9GUkFNRVNdOiB0cnVlLFxuICAgICAgICBbJC5OT1NDUklQVF06IHRydWUsXG4gICAgICAgIFskLk9CSkVDVF06IHRydWUsXG4gICAgICAgIFskLk9MXTogdHJ1ZSxcbiAgICAgICAgWyQuUF06IHRydWUsXG4gICAgICAgIFskLlBBUkFNXTogdHJ1ZSxcbiAgICAgICAgWyQuUExBSU5URVhUXTogdHJ1ZSxcbiAgICAgICAgWyQuUFJFXTogdHJ1ZSxcbiAgICAgICAgWyQuU0NSSVBUXTogdHJ1ZSxcbiAgICAgICAgWyQuU0VDVElPTl06IHRydWUsXG4gICAgICAgIFskLlNFTEVDVF06IHRydWUsXG4gICAgICAgIFskLlNPVVJDRV06IHRydWUsXG4gICAgICAgIFskLlNUWUxFXTogdHJ1ZSxcbiAgICAgICAgWyQuU1VNTUFSWV06IHRydWUsXG4gICAgICAgIFskLlRBQkxFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEJPRFldOiB0cnVlLFxuICAgICAgICBbJC5URF06IHRydWUsXG4gICAgICAgIFskLlRFTVBMQVRFXTogdHJ1ZSxcbiAgICAgICAgWyQuVEVYVEFSRUFdOiB0cnVlLFxuICAgICAgICBbJC5URk9PVF06IHRydWUsXG4gICAgICAgIFskLlRIXTogdHJ1ZSxcbiAgICAgICAgWyQuVEhFQURdOiB0cnVlLFxuICAgICAgICBbJC5USVRMRV06IHRydWUsXG4gICAgICAgIFskLlRSXTogdHJ1ZSxcbiAgICAgICAgWyQuVFJBQ0tdOiB0cnVlLFxuICAgICAgICBbJC5VTF06IHRydWUsXG4gICAgICAgIFskLldCUl06IHRydWUsXG4gICAgICAgIFskLlhNUF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5NQVRITUxdOiB7XG4gICAgICAgIFskLk1JXTogdHJ1ZSxcbiAgICAgICAgWyQuTU9dOiB0cnVlLFxuICAgICAgICBbJC5NTl06IHRydWUsXG4gICAgICAgIFskLk1TXTogdHJ1ZSxcbiAgICAgICAgWyQuTVRFWFRdOiB0cnVlLFxuICAgICAgICBbJC5BTk5PVEFUSU9OX1hNTF06IHRydWVcbiAgICB9LFxuICAgIFtOUy5TVkddOiB7XG4gICAgICAgIFskLlRJVExFXTogdHJ1ZSxcbiAgICAgICAgWyQuRk9SRUlHTl9PQkpFQ1RdOiB0cnVlLFxuICAgICAgICBbJC5ERVNDXTogdHJ1ZVxuICAgIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSBIVE1MLlRBR19OQU1FUztcbmNvbnN0IE5TID0gSFRNTC5OQU1FU1BBQ0VTO1xuXG4vL0VsZW1lbnQgdXRpbHNcblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0bikge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5QO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SQiB8fCB0biA9PT0gJC5SUCB8fCB0biA9PT0gJC5SVCB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCB8fCB0biA9PT0gJC5MSTtcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUlRDO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5PUFRJT047XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVEdST1VQO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRuKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlA7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5SQiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlJQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuUlQgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ERCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkRUIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTEkgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuVFJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlJUQztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQ7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVElPTjtcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQ0FQVElPTjtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUR1JPVVAgfHwgdG4gPT09ICQuQ09MR1JPVVA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykge1xuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuSFRNTDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkRFU0MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLlNWRztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5IVE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NVEVYVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5USVRMRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuU1ZHO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICByZXR1cm4gKHRuID09PSAkLkFQUExFVCB8fCB0biA9PT0gJC5PQkpFQ1QpICYmIG5zID09PSBOUy5IVE1MO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5NQVJRVUVFKSAmJiBucyA9PT0gTlMuSFRNTDtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5GT1JFSUdOX09CSkVDVCAmJiBucyA9PT0gTlMuU1ZHO1xuXG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuQU5OT1RBVElPTl9YTUwgJiYgbnMgPT09IE5TLk1BVEhNTDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vU3RhY2sgb2Ygb3BlbiBlbGVtZW50c1xuY2xhc3MgT3BlbkVsZW1lbnRTdGFjayB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQsIHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRtcGxDb250ZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgfVxuXG4gICAgLy9JbmRleCBvZiBlbGVtZW50XG4gICAgX2luZGV4T2YoZWxlbWVudCkge1xuICAgICAgICBsZXQgaWR4ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlkeCA9IGk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG5cbiAgICAvL1VwZGF0ZSBjdXJyZW50IGVsZW1lbnRcbiAgICBfaXNJblRlbXBsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnTmFtZSA9PT0gJC5URU1QTEFURSAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpID09PSBOUy5IVE1MO1xuICAgIH1cblxuICAgIF91cGRhdGVDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSA9IHRoaXMuY3VycmVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5jdXJyZW50KTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsQ29udGVudCA9IHRoaXMuX2lzSW5UZW1wbGF0ZSgpID8gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5jdXJyZW50KSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy9NdXRhdGlvbnNcbiAgICBwdXNoKGVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pdGVtc1srK3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcblxuICAgICAgICBpZiAodGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3AoKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcblxuICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcblxuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSBuZXdFbGVtZW50O1xuXG4gICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRBZnRlcihyZWZlcmVuY2VFbGVtZW50LCBuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHRoaXMuX2luZGV4T2YocmVmZXJlbmNlRWxlbWVudCkgKyAxO1xuXG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGluc2VydGlvbklkeCA9PT0gKyt0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wVW50aWxUYWdOYW1lUG9wcGVkKHRhZ05hbWUpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcHBlZEVsZW1lbnQgPSB0aGlzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChwb3BwZWRFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMuY3VycmVudFRhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IMSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkgyIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSDMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5INCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkg1IHx8XG4gICAgICAgICAgICAgICAgKHRuID09PSAkLkg2ICYmIG5zID09PSBOUy5IVE1MKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLmN1cnJlbnRUYWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgKHRuID09PSAkLlRIICYmIG5zID09PSBOUy5IVE1MKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAvL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgcm9vdCA8aHRtbD4gZWxlbWVudCBpcyBhbHdheXMgZmlyc3QgaW4gdGhlIG9wZW4gZWxlbWVudCBzdGFjaywgc29cbiAgICAgICAgLy93ZSBwZXJmb3JtIHRoaXMgZmFzdCBzdGFjayBjbGVhbiB1cC5cbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IDA7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRBQkxFICYmIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRCT0RZICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URk9PVCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEhFQUQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5IVE1MKSB8fFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSAhPT0gTlMuSFRNTFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVFIgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwpIHx8XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNbaV0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vU2VhcmNoXG4gICAgdHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKSB7XG4gICAgICAgIC8vUHJvcGVybHkgbmVzdGVkIDxib2R5PiBlbGVtZW50IChzaG91bGQgYmUgc2Vjb25kIGVsZW1lbnQgaW4gc3RhY2spLlxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtc1sxXTtcblxuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09ICQuQk9EWSA/IGVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50KSB7XG4gICAgICAgIGxldCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gLS1lbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuY3VycmVudFRhZ05hbWUgPT09ICQuSFRNTDtcbiAgICB9XG5cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikgJiZcbiAgICAgICAgICAgICAgICBucyA9PT0gTlMuSFRNTFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJbkxpc3RJdGVtU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgoKHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSAmJiBucyA9PT0gTlMuSFRNTCkgfHwgaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzSW5CdXR0b25TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0biA9PT0gJC5CVVRUT04gJiYgbnMgPT09IE5TLkhUTUwpIHx8IGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhhc0luVGFibGVTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5URU1QTEFURSB8fCB0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVEZPT1QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJblNlbGVjdFNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuICE9PSAkLk9QVElPTiAmJiB0biAhPT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3NUaG9yb3VnaGx5KCkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5KHRoaXMuY3VycmVudFRhZ05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICB3aGlsZSAoaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWQodGhpcy5jdXJyZW50VGFnTmFtZSkgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gZXhjbHVzaW9uVGFnTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBPcGVuRWxlbWVudFN0YWNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL0NvbnN0XG5jb25zdCBOT0FIX0FSS19DQVBBQ0lUWSA9IDM7XG5cbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXG5jbGFzcyBGb3JtYXR0aW5nRWxlbWVudExpc3Qge1xuICAgIGNvbnN0cnVjdG9yKHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICAgICAgdGhpcy5ib29rbWFyayA9IG51bGw7XG4gICAgfVxuXG4gICAgLy9Ob2FoIEFyaydzIGNvbmRpdGlvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbiAgICAvL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxuICAgIF9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPj0gTk9BSF9BUktfQ0FQQUNJVFkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnNMZW5ndGggPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG5lVGFnTmFtZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5lTmFtZXNwYWNlVVJJID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobmV3RWxlbWVudCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZW50cnkuZWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDYW5kaWRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IG5lVGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSA9PT0gbmVOYW1lc3BhY2VVUkkgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEF0dHJzLmxlbmd0aCA9PT0gbmVBdHRyc0xlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0NhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goeyBpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkgPyBbXSA6IGNhbmRpZGF0ZXM7XG4gICAgfVxuXG4gICAgX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24obmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCk7XG4gICAgICAgIGxldCBjTGVuZ3RoID0gY2FuZGlkYXRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGNMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgICAgIC8vTk9URTogYnVpbGQgYXR0cnMgbWFwIGZvciB0aGUgbmV3IGVsZW1lbnQgc28gd2UgY2FuIHBlcmZvcm0gZmFzdCBsb29rdXBzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lQXR0ciA9IG5lQXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICBuZUF0dHJzTWFwW25lQXR0ci5uYW1lXSA9IG5lQXR0ci52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZUF0dHJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjQXR0ciA9IGNhbmRpZGF0ZXNbal0uYXR0cnNbaV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lQXR0cnNNYXBbY0F0dHIubmFtZV0gIT09IGNBdHRyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNMZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vTk9URTogcmVtb3ZlIGJvdHRvbW1vc3QgY2FuZGlkYXRlcyB1bnRpbCBOb2FoJ3MgQXJrIGNvbmRpdGlvbiB3aWxsIG5vdCBiZSBtZXRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjTGVuZ3RoIC0gMTsgaSA+PSBOT0FIX0FSS19DQVBBQ0lUWSAtIDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoY2FuZGlkYXRlc1tpXS5pZHgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL011dGF0aW9uc1xuICAgIGluc2VydE1hcmtlcigpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goeyB0eXBlOiBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZIH0pO1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHB1c2hFbGVtZW50KGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlksXG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW46IHRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgaW5zZXJ0RWxlbWVudEFmdGVyQm9va21hcmsoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgbGV0IGJvb2ttYXJrSWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGZvciAoOyBib29rbWFya0lkeCA+PSAwOyBib29rbWFya0lkeC0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2Jvb2ttYXJrSWR4XSA9PT0gdGhpcy5ib29rbWFyaykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShib29rbWFya0lkeCArIDEsIDAsIHtcbiAgICAgICAgICAgIHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZLFxuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuOiB0b2tlblxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJlbW92ZUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyaWVzW2ldID09PSBlbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVG9MYXN0TWFya2VyKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnBvcCgpO1xuXG4gICAgICAgICAgICB0aGlzLmxlbmd0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9TZWFyY2hcbiAgICBnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50RW50cnkoZWxlbWVudCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4vL0VudHJ5IHR5cGVzXG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZID0gJ01BUktFUl9FTlRSWSc7XG5Gb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSA9ICdFTEVNRU5UX0VOVFJZJztcblxubW9kdWxlLmV4cG9ydHMgPSBGb3JtYXR0aW5nRWxlbWVudExpc3Q7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNsYXNzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0KSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kcyA9IHt9O1xuICAgICAgICBjb25zdCBvdmVycmlkZGVuTWV0aG9kcyA9IHRoaXMuX2dldE92ZXJyaWRkZW5NZXRob2RzKHRoaXMsIG9yaWdpbmFsTWV0aG9kcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3ZlcnJpZGRlbk1ldGhvZHMpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG92ZXJyaWRkZW5NZXRob2RzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbE1ldGhvZHNba2V5XSA9IGhvc3Rba2V5XTtcbiAgICAgICAgICAgICAgICBob3N0W2tleV0gPSBvdmVycmlkZGVuTWV0aG9kc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbn1cblxuTWl4aW4uaW5zdGFsbCA9IGZ1bmN0aW9uKGhvc3QsIEN0b3IsIG9wdHMpIHtcbiAgICBpZiAoIWhvc3QuX19taXhpbnMpIHtcbiAgICAgICAgaG9zdC5fX21peGlucyA9IFtdO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaG9zdC5fX21peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaG9zdC5fX21peGluc1tpXS5jb25zdHJ1Y3RvciA9PT0gQ3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvc3QuX19taXhpbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtaXhpbiA9IG5ldyBDdG9yKGhvc3QsIG9wdHMpO1xuXG4gICAgaG9zdC5fX21peGlucy5wdXNoKG1peGluKTtcblxuICAgIHJldHVybiBtaXhpbjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHByZXByb2Nlc3Nvcikge1xuICAgICAgICBzdXBlcihwcmVwcm9jZXNzb3IpO1xuXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yID0gcHJlcHJvY2Vzc29yO1xuICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gMDtcbiAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSA9IDA7XG5cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICB0aGlzLmNvbCA9IDA7XG4gICAgICAgIHRoaXMubGluZSA9IDE7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR2YW5jZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvcyArIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSB0aGlzLmh0bWxbcG9zXTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogTEYgc2hvdWxkIGJlIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgbGluZVxuICAgICAgICAgICAgICAgIGlmIChteG4uaXNFb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgPSBwb3M7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJyB8fCAoY2ggPT09ICdcXHInICYmIHRoaXMuaHRtbFtwb3MgKyAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5pc0VvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHBvcyAtIG14bi5saW5lU3RhcnRQb3MgKyAxO1xuICAgICAgICAgICAgICAgIG14bi5vZmZzZXQgPSBteG4uZHJvcHBlZEJ1ZmZlclNpemUgKyBwb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZy5hZHZhbmNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXRyZWF0KCkge1xuICAgICAgICAgICAgICAgIG9yaWcucmV0cmVhdC5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbXhuLmNvbCA9IHRoaXMucG9zIC0gbXhuLmxpbmVTdGFydFBvcyArIDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlBvcyA9IHRoaXMucG9zO1xuXG4gICAgICAgICAgICAgICAgb3JpZy5kcm9wUGFyc2VkQ2h1bmsuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZHVjdGlvbiA9IHByZXZQb3MgLSB0aGlzLnBvcztcblxuICAgICAgICAgICAgICAgIG14bi5saW5lU3RhcnRQb3MgLT0gcmVkdWN0aW9uO1xuICAgICAgICAgICAgICAgIG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArPSByZWR1Y3Rpb247XG4gICAgICAgICAgICAgICAgbXhuLm9mZnNldCA9IG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArIHRoaXMucG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uLy4uL3Rva2VuaXplcicpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5cbmNsYXNzIExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHRva2VuaXplcikge1xuICAgICAgICBzdXBlcih0b2tlbml6ZXIpO1xuXG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBNaXhpbi5pbnN0YWxsKHRva2VuaXplci5wcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgIH1cblxuICAgIF9nZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydExpbmU6IHRoaXMucG9zVHJhY2tlci5saW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IHRoaXMucG9zVHJhY2tlci5jb2wsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdGhpcy5wb3NUcmFja2VyLm9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IC0xLFxuICAgICAgICAgICAgZW5kQ29sOiAtMSxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRMaW5lID0gdGhpcy5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnBvc1RyYWNrZXIuY29sO1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wb3NUcmFja2VyLm9mZnNldDtcblxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0aGlzLnRva2VuaXplci5jdXJyZW50VG9rZW47XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBdHRyID0gdGhpcy50b2tlbml6ZXIuY3VycmVudEF0dHI7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4ubG9jYXRpb24uYXR0cnNbY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRBdHRyTG9jYXRpb247XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICBjb25zdCBtZXRob2RzID0ge1xuICAgICAgICAgICAgX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlU3RhcnRUYWdUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVuZFRhZ1Rva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVuZFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlQ29tbWVudFRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNvbW1lbnRUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZURvY3R5cGVUb2tlbi5jYWxsKHRoaXMsIGluaXRpYWxOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdExvYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUNoYXJhY3RlclRva2VuLmNhbGwodGhpcywgdHlwZSwgY2gpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUVPRlRva2VuKCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2NyZWF0ZUVPRlRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUF0dHIoYXR0ck5hbWVGaXJzdENoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlQXR0ci5jYWxsKHRoaXMsIGF0dHJOYW1lRmlyc3RDaCk7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRBdHRyTG9jYXRpb24gPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2xlYXZlQXR0ck5hbWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0ck5hbWUuY2FsbCh0aGlzLCB0b1N0YXRlKTtcbiAgICAgICAgICAgICAgICBteG4uX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfbGVhdmVBdHRyVmFsdWUodG9TdGF0ZSkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2xlYXZlQXR0clZhbHVlLmNhbGwodGhpcywgdG9TdGF0ZSk7XG4gICAgICAgICAgICAgICAgbXhuLl9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2VtaXRDdXJyZW50VG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RMb2MgPSB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbjtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgICAgIC8vY3VycmVudCB0b2tlbidzIHN0YXJ0IGxvY2F0aW9uLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gY3RMb2Muc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRva2VuLnR5cGUgPT09IFRva2VuaXplci5FT0ZfVE9LRU4pIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IGN0TG9jLnN0YXJ0TGluZTtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kQ29sID0gY3RMb2Muc3RhcnRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZExpbmUgPSBteG4ucG9zVHJhY2tlci5saW5lO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRDb2wgPSBteG4ucG9zVHJhY2tlci5jb2wgKyAxO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRPZmZzZXQgPSBteG4ucG9zVHJhY2tlci5vZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50VG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gJiYgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgY2hhcmFjdGVyIHRva2VuIGFuZCBpdCdzIGxvY2F0aW9uIHdhc24ndCBzZXQgaW4gdGhlIF9lbWl0Q3VycmVudFRva2VuKCksXG4gICAgICAgICAgICAgICAgLy90aGVuIHNldCBpdCdzIGxvY2F0aW9uIGF0IHRoZSBjdXJyZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICAvL1dlIGRvbid0IG5lZWQgdG8gaW5jcmVtZW50IHByZXByb2Nlc3NvciBwb3NpdGlvbiwgc2luY2UgY2hhcmFjdGVyIHRva2VuXG4gICAgICAgICAgICAgICAgLy9lbWlzc2lvbiBpcyBhbHdheXMgZm9yY2VkIGJ5IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9rZW4gaGVyZS5cbiAgICAgICAgICAgICAgICAvL1NvLCB3ZSBhbHJlYWR5IGhhdmUgYWR2YW5jZWQgcG9zaXRpb24uXG4gICAgICAgICAgICAgICAgaWYgKGN0TG9jICYmIGN0TG9jLmVuZE9mZnNldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IG14bi5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZENvbCA9IG14bi5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kT2Zmc2V0ID0gbXhuLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9yaWcuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvL05PVEU6IHBhdGNoIGluaXRpYWwgc3RhdGVzIGZvciBlYWNoIG1vZGUgdG8gb2J0YWluIHRva2VuIHN0YXJ0IHBvc2l0aW9uXG4gICAgICAgIE9iamVjdC5rZXlzKFRva2VuaXplci5NT0RFKS5mb3JFYWNoKG1vZGVOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gVG9rZW5pemVyLk1PREVbbW9kZU5hbWVdO1xuXG4gICAgICAgICAgICBtZXRob2RzW3N0YXRlXSA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gbXhuLl9nZXRDdXJyZW50TG9jYXRpb24oKTtcbiAgICAgICAgICAgICAgICBvcmlnW3N0YXRlXS5jYWxsKHRoaXMsIGNwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gZXh0ZW5kcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIG9wdHMpIHtcbiAgICAgICAgc3VwZXIoc3RhY2spO1xuXG4gICAgICAgIHRoaXMub25JdGVtUG9wID0gb3B0cy5vbkl0ZW1Qb3A7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcG9wKCkge1xuICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBvcmlnLnBvcC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5vbkl0ZW1Qb3AodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3JpZy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIG9yaWcucmVtb3ZlLmNhbGwodGhpcywgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyJyk7XG5jb25zdCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4vdG9rZW5pemVyLW1peGluJyk7XG5jb25zdCBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4gPSByZXF1aXJlKCcuL29wZW4tZWxlbWVudC1zdGFjay1taXhpbicpO1xuY29uc3QgSFRNTCA9IHJlcXVpcmUoJy4uLy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuXG5jbGFzcyBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIpIHtcbiAgICAgICAgc3VwZXIocGFyc2VyKTtcblxuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRoaXMucGFyc2VyLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgfVxuXG4gICAgX3NldFN0YXJ0TG9jYXRpb24oZWxlbWVudCkge1xuICAgICAgICBsZXQgbG9jID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdUb2tlbikge1xuICAgICAgICAgICAgbG9jID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5sYXN0U3RhcnRUYWdUb2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICBsb2Muc3RhcnRUYWcgPSB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGxvYyk7XG4gICAgfVxuXG4gICAgX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIGNsb3NpbmdUb2tlbikge1xuICAgICAgICBjb25zdCBsb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGxvYykge1xuICAgICAgICAgICAgaWYgKGNsb3NpbmdUb2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogRm9yIGNhc2VzIGxpa2UgPHA+IDxwPiA8L3A+IC0gRmlyc3QgJ3AnIGNsb3NlcyB3aXRob3V0IGEgY2xvc2luZ1xuICAgICAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Nsb3NpbmdFbmRUYWcgPSBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4gJiYgdG4gPT09IGNsb3NpbmdUb2tlbi50YWdOYW1lO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2xvc2luZ0VuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kVGFnID0gT2JqZWN0LmFzc2lnbih7fSwgY3RMb2MpO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kTGluZSA9IGN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5lbmRDb2w7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRPZmZzZXQgPSBjdExvYy5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZExpbmUgPSBjdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZE9mZnNldCA9IGN0TG9jLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4sIG9yaWcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2Jvb3RzdHJhcC5jYWxsKHRoaXMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuaXplck1peGluID0gTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuXG4gICAgICAgICAgICAgICAgbXhuLnBvc1RyYWNrZXIgPSB0b2tlbml6ZXJNaXhpbi5wb3NUcmFja2VyO1xuXG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLm9wZW5FbGVtZW50cywgTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluLCB7XG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbVBvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXhuLl9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9ydW5QYXJzaW5nTG9vcC5jYWxsKHRoaXMsIHNjcmlwdEhhbmRsZXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gTk9URTogZ2VuZXJhdGUgbG9jYXRpb24gaW5mbyBmb3IgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAvLyB0aGF0IHJlbWFpbnMgb24gb3BlbiBlbGVtZW50IHN0YWNrXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldLCBteG4uY3VycmVudFRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICAgICAgICAgIF9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQuY2FsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfcHJvY2Vzc1Rva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogPGJvZHk+IGFuZCA8aHRtbD4gYXJlIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgICAgICAgICAgLy90aGVpciBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlRXhwbGljaXRVcGRhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTiAmJlxuICAgICAgICAgICAgICAgICAgICAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MIHx8ICh0b2tlbi50YWdOYW1lID09PSAkLkJPRFkgJiYgdGhpcy5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZUV4cGxpY2l0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14bi5fc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Eb2N0eXBlXG4gICAgICAgICAgICBfc2V0RG9jdW1lbnRUeXBlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fc2V0RG9jdW1lbnRUeXBlLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjbkxlbmd0aCA9IGRvY3VtZW50Q2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudENoaWxkcmVuW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9FbGVtZW50c1xuICAgICAgICAgICAgX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vTk9URTogX2F0dGFjaEVsZW1lbnRUb1RyZWUgaXMgY2FsbGVkIGZyb20gX2FwcGVuZEVsZW1lbnQsIF9pbnNlcnRFbGVtZW50IGFuZCBfaW5zZXJ0VGVtcGxhdGUgbWV0aG9kcy5cbiAgICAgICAgICAgICAgICAvL1NvIHdlIHdpbGwgdXNlIHRva2VuIGxvY2F0aW9uIHN0b3JlZCBpbiB0aGlzIG1ldGhvZHMgZm9yIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgICAgIG14bi5fc2V0U3RhcnRMb2NhdGlvbihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIG9yaWcuX2F0dGFjaEVsZW1lbnRUb1RyZWUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RWxlbWVudC5jYWxsKHRoaXMsIHRva2VuLCBuYW1lc3BhY2VVUkkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxhc3RTdGFydFRhZ1Rva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0VGVtcGxhdGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0bXBsQ29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRtcGxDb250ZW50LCBudWxsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5faW5zZXJ0RmFrZVJvb3RFbGVtZW50LmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIG51bGwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9Db21tZW50c1xuICAgICAgICAgICAgX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9hcHBlbmRDb21tZW50Tm9kZS5jYWxsKHRoaXMsIHRva2VuLCBwYXJlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGNvbW1lbnROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL1RleHRcbiAgICAgICAgICAgIF9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSB7XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBzdG9yZSBsYXN0IGZvc3RlciBwYXJlbnRpbmcgbG9jYXRpb24sIHNvIHdlIHdpbGwgYmUgYWJsZSB0byBmaW5kIGluc2VydGVkIHRleHRcbiAgICAgICAgICAgICAgICAvL2luIGNhc2Ugb2YgZm9zdGVyIHBhcmVudGluZ1xuICAgICAgICAgICAgICAgIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBvcmlnLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24uY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydENoYXJhY3RlcnModG9rZW4pIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRDaGFyYWN0ZXJzLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRm9zdGVyUGFyZW50ID0gdGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9XG4gICAgICAgICAgICAgICAgICAgIChoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5wYXJlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHROb2RlSWR4ID1cbiAgICAgICAgICAgICAgICAgICAgaGFzRm9zdGVyUGFyZW50ICYmIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaWJsaW5ncy5pbmRleE9mKG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24uYmVmb3JlRWxlbWVudCkgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNpYmxpbmdzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IHNpYmxpbmdzW3RleHROb2RlSWR4XTtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBsb2NhdGlvbiBhc3NpZ25lZCBieSBhbm90aGVyIHRva2VuLCB0aGVuIGp1c3QgdXBkYXRlIGVuZCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHRuTG9jID0gdGhpcy50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0bkxvYykge1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRMaW5lID0gdG9rZW4ubG9jYXRpb24uZW5kTGluZTtcbiAgICAgICAgICAgICAgICAgICAgdG5Mb2MuZW5kQ29sID0gdG9rZW4ubG9jYXRpb24uZW5kQ29sO1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRPZmZzZXQgPSB0b2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3Rvcihob3N0LCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKGhvc3QpO1xuXG4gICAgICAgIHRoaXMucG9zVHJhY2tlciA9IG51bGw7XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yID0gb3B0cy5vblBhcnNlRXJyb3I7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGVyci5zdGFydExpbmUgPSBlcnIuZW5kTGluZSA9IHRoaXMucG9zVHJhY2tlci5saW5lO1xuICAgICAgICBlcnIuc3RhcnRDb2wgPSBlcnIuZW5kQ29sID0gdGhpcy5wb3NUcmFja2VyLmNvbDtcbiAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gZXJyLmVuZE9mZnNldCA9IHRoaXMucG9zVHJhY2tlci5vZmZzZXQ7XG4gICAgfVxuXG4gICAgX3JlcG9ydEVycm9yKGNvZGUpIHtcbiAgICAgICAgY29uc3QgZXJyID0ge1xuICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogLTEsXG4gICAgICAgICAgICBzdGFydENvbDogLTEsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogLTEsXG4gICAgICAgICAgICBlbmRMaW5lOiAtMSxcbiAgICAgICAgICAgIGVuZENvbDogLTEsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fc2V0RXJyb3JMb2NhdGlvbihlcnIpO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvcihlcnIpO1xuICAgIH1cblxuICAgIF9nZXRPdmVycmlkZGVuTWV0aG9kcyhteG4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF9lcnIoY29kZSkge1xuICAgICAgICAgICAgICAgIG14bi5fcmVwb3J0RXJyb3IoY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBFcnJvclJlcG9ydGluZ01peGluQmFzZSA9IHJlcXVpcmUoJy4vbWl4aW4tYmFzZScpO1xuY29uc3QgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi4vcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluJyk7XG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW4gZXh0ZW5kcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHJlcHJvY2Vzc29yLCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKHByZXByb2Nlc3Nvciwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gTWl4aW4uaW5zdGFsbChwcmVwcm9jZXNzb3IsIFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbik7XG4gICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IC0xO1xuICAgIH1cblxuICAgIF9yZXBvcnRFcnJvcihjb2RlKSB7XG4gICAgICAgIC8vTk9URTogYXZvaWQgcmVwb3J0aW5nIGVycm9yIHR3aWNlIG9uIGFkdmFuY2UvcmV0cmVhdFxuICAgICAgICBpZiAodGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RFcnJPZmZzZXQgPSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0O1xuICAgICAgICAgICAgc3VwZXIuX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlID0gcmVxdWlyZSgnLi9taXhpbi1iYXNlJyk7XG5jb25zdCBFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluID0gcmVxdWlyZSgnLi9wcmVwcm9jZXNzb3ItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbiBleHRlbmRzIEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0b2tlbml6ZXIsIG9wdHMpIHtcbiAgICAgICAgc3VwZXIodG9rZW5pemVyLCBvcHRzKTtcblxuICAgICAgICBjb25zdCBwcmVwcm9jZXNzb3JNaXhpbiA9IE1peGluLmluc3RhbGwodG9rZW5pemVyLnByZXByb2Nlc3NvciwgRXJyb3JSZXBvcnRpbmdQcmVwcm9jZXNzb3JNaXhpbiwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gcHJlcHJvY2Vzc29yTWl4aW4ucG9zVHJhY2tlcjtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UgPSByZXF1aXJlKCcuL21peGluLWJhc2UnKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4gPSByZXF1aXJlKCcuLi9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbicpO1xuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluIGV4dGVuZHMgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0cykge1xuICAgICAgICBzdXBlcihwYXJzZXIsIG9wdHMpO1xuXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIHRoaXMuY3RMb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmxvY0JlZm9yZVRva2VuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgX3NldEVycm9yTG9jYXRpb24oZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmN0TG9jKSB7XG4gICAgICAgICAgICBlcnIuc3RhcnRMaW5lID0gdGhpcy5jdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICBlcnIuc3RhcnRDb2wgPSB0aGlzLmN0TG9jLnN0YXJ0Q29sO1xuICAgICAgICAgICAgZXJyLnN0YXJ0T2Zmc2V0ID0gdGhpcy5jdExvYy5zdGFydE9mZnNldDtcblxuICAgICAgICAgICAgZXJyLmVuZExpbmUgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydExpbmUgOiB0aGlzLmN0TG9jLmVuZExpbmU7XG4gICAgICAgICAgICBlcnIuZW5kQ29sID0gdGhpcy5sb2NCZWZvcmVUb2tlbiA/IHRoaXMuY3RMb2Muc3RhcnRDb2wgOiB0aGlzLmN0TG9jLmVuZENvbDtcbiAgICAgICAgICAgIGVyci5lbmRPZmZzZXQgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydE9mZnNldCA6IHRoaXMuY3RMb2MuZW5kT2Zmc2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2Jvb3RzdHJhcChkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fYm9vdHN0cmFwLmNhbGwodGhpcywgZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMudG9rZW5pemVyLCBFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluLCBteG4ub3B0cyk7XG4gICAgICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLnRva2VuaXplciwgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgbXhuLmN0TG9jID0gdG9rZW4ubG9jYXRpb247XG5cbiAgICAgICAgICAgICAgICBvcmlnLl9wcm9jZXNzSW5wdXRUb2tlbi5jYWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9lcnIoY29kZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG14bi5sb2NCZWZvcmVUb2tlbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iZWZvcmVUb2tlbjtcbiAgICAgICAgICAgICAgICBteG4uX3JlcG9ydEVycm9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7IERPQ1VNRU5UX01PREUgfSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vTm9kZSBjb25zdHJ1Y3Rpb25cbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXG4gICAgICAgIG1vZGU6IERPQ1VNRU5UX01PREUuTk9fUVVJUktTLFxuICAgICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH07XG59O1xuXG5leHBvcnRzLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCcsXG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcbiAgICAgICAgdGFnTmFtZTogdGFnTmFtZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBuYW1lc3BhY2VVUkk6IG5hbWVzcGFjZVVSSSxcbiAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGxcbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb21tZW50Tm9kZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyNjb21tZW50JyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG5jb25zdCBjcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG4vL1RyZWUgbXV0YXRpb25cbmNvbnN0IGFwcGVuZENoaWxkID0gKGV4cG9ydHMuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5jb25zdCBpbnNlcnRCZWZvcmUgPSAoZXhwb3J0cy5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSk7XG5cbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3Tm9kZSk7XG4gICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbn0pO1xuXG5leHBvcnRzLnNldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uKHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudCA9IGNvbnRlbnRFbGVtZW50O1xufTtcblxuZXhwb3J0cy5nZXRUZW1wbGF0ZUNvbnRlbnQgPSBmdW5jdGlvbih0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQ7XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50VHlwZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgZG9jdHlwZU5vZGUgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb2N1bWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZScpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlID0gZG9jdW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIGRvY3R5cGVOb2RlLm5hbWUgPSBuYW1lO1xuICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICBkb2N0eXBlTm9kZS5zeXN0ZW1JZCA9IHN5c3RlbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFwcGVuZENoaWxkKGRvY3VtZW50LCB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBwdWJsaWNJZCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBzeXN0ZW1JZFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnRzLnNldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgZG9jdW1lbnQubW9kZSA9IG1vZGU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50TW9kZSA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG59O1xuXG5leHBvcnRzLmRldGFjaE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKG5vZGUpO1xuXG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuaW5zZXJ0VGV4dCA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1twYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgaWYgKHByZXZOb2RlLm5vZGVOYW1lID09PSAnI3RleHQnKSB7XG4gICAgICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xufTtcblxuZXhwb3J0cy5pbnNlcnRUZXh0QmVmb3JlID0gZnVuY3Rpb24ocGFyZW50Tm9kZSwgdGV4dCwgcmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XG5cbiAgICBpZiAocHJldk5vZGUgJiYgcHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRvcHRBdHRyaWJ1dGVzID0gZnVuY3Rpb24ocmVjaXBpZW50LCBhdHRycykge1xuICAgIGNvbnN0IHJlY2lwaWVudEF0dHJzTWFwID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY2lwaWVudC5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZWNpcGllbnRBdHRyc01hcC5wdXNoKHJlY2lwaWVudC5hdHRyc1tpXS5uYW1lKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWNpcGllbnRBdHRyc01hcC5pbmRleE9mKGF0dHJzW2pdLm5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgcmVjaXBpZW50LmF0dHJzLnB1c2goYXR0cnNbal0pO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy9UcmVlIHRyYXZlcnNpbmdcbmV4cG9ydHMuZ2V0Rmlyc3RDaGlsZCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xufTtcblxuZXhwb3J0cy5nZXRDaGlsZE5vZGVzID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XG59O1xuXG5leHBvcnRzLmdldFBhcmVudE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcbn07XG5cbmV4cG9ydHMuZ2V0QXR0ckxpc3QgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG59O1xuXG4vL05vZGUgZGF0YVxuZXhwb3J0cy5nZXRUYWdOYW1lID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWU7XG59O1xuXG5leHBvcnRzLmdldE5hbWVzcGFjZVVSSSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5uYW1lc3BhY2VVUkk7XG59O1xuXG5leHBvcnRzLmdldFRleHROb2RlQ29udGVudCA9IGZ1bmN0aW9uKHRleHROb2RlKSB7XG4gICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xufTtcblxuZXhwb3J0cy5nZXRDb21tZW50Tm9kZUNvbnRlbnQgPSBmdW5jdGlvbihjb21tZW50Tm9kZSkge1xuICAgIHJldHVybiBjb21tZW50Tm9kZS5kYXRhO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlTmFtZSA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLm5hbWU7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZCA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQgPSBmdW5jdGlvbihkb2N0eXBlTm9kZSkge1xuICAgIHJldHVybiBkb2N0eXBlTm9kZS5zeXN0ZW1JZDtcbn07XG5cbi8vTm9kZSB0eXBlc1xuZXhwb3J0cy5pc1RleHROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI3RleHQnO1xufTtcblxuZXhwb3J0cy5pc0NvbW1lbnROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xufTtcblxuZXhwb3J0cy5pc0RvY3VtZW50VHlwZU5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJztcbn07XG5cbmV4cG9ydHMuaXNFbGVtZW50Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gISFub2RlLnRhZ05hbWU7XG59O1xuXG4vLyBTb3VyY2UgY29kZSBsb2NhdGlvblxuZXhwb3J0cy5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSwgbG9jYXRpb24pIHtcbiAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uO1xufTtcblxuZXhwb3J0cy5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHJldHVybiBbZGVmYXVsdHMsIG9wdGlvbnNdLnJlZHVjZSgobWVyZ2VkLCBvcHRPYmopID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMob3B0T2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBtZXJnZWRba2V5XSA9IG9wdE9ialtrZXldO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBET0NVTUVOVF9NT0RFIH0gPSByZXF1aXJlKCcuL2h0bWwnKTtcblxuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuXG5jb25zdCBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgJysvL3NpbG1hcmlsLy9kdGQgaHRtbCBwcm8gdjByMTEgMTk5NzAxMDEvLycsXG4gICAgJy0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL2FkdmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMWUvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yIGZpbmFsLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sLy8nLFxuICAgICctLy9tZXRyaXVzLy9kdGQgbWV0cml1cyBwcmVzZW50YXRpb25hbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIHRhYmxlcy8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBodG1sLy8nLFxuICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIHN0cmljdCBodG1sLy8nLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIDIuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgMS4wLy9cIixcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCByZWxheGVkIDEuMC8vXCIsXG4gICAgJy0vL3NxLy9kdGQgaHRtbCAyLjAgaG90bWV0YWwgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9zb2Z0cXVhZCBzb2Z0d2FyZS8vZHRkIGhvdG1ldGFsIHBybyA2LjA6OjE5OTkwNjAxOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zb2Z0cXVhZC8vZHRkIGhvdG1ldGFsIHBybyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8nLFxuICAgICctLy9zcHlnbGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy8nLFxuICAgICctLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBzdHJpY3QgaHRtbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzIDE5OTUtMDMtMjQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDk3MDQyMS8vJyxcbiAgICAnLS8vdzNjLy9kdGQgdzMgaHRtbC8vJyxcbiAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sIDIuMC8vJyxcbiAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvLydcbl07XG5cbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMuY29uY2F0KFtcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nXG5dKTtcblxuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IFsnLS8vdzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vJywgJy0vdzNjL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvZW4nLCAnaHRtbCddO1xuY29uc3QgTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTID0gWyctLy93M2MvL2R0ZCB4aHRtbCAxLjAgZnJhbWVzZXQvLycsICctLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8nXTtcblxuY29uc3QgTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLmNvbmNhdChbXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vJ1xuXSk7XG5cbi8vVXRpbHNcbmZ1bmN0aW9uIGVucXVvdGVEb2N0eXBlSWQoaWQpIHtcbiAgICBjb25zdCBxdW90ZSA9IGlkLmluZGV4T2YoJ1wiJykgIT09IC0xID8gXCInXCIgOiAnXCInO1xuXG4gICAgcmV0dXJuIHF1b3RlICsgaWQgKyBxdW90ZTtcbn1cblxuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHB1YmxpY0lkLmluZGV4T2YocHJlZml4ZXNbaV0pID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy9BUElcbmV4cG9ydHMuaXNDb25mb3JtaW5nID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgICB0b2tlbi5uYW1lID09PSBWQUxJRF9ET0NUWVBFX05BTUUgJiZcbiAgICAgICAgdG9rZW4ucHVibGljSWQgPT09IG51bGwgJiZcbiAgICAgICAgKHRva2VuLnN5c3RlbUlkID09PSBudWxsIHx8IHRva2VuLnN5c3RlbUlkID09PSBWQUxJRF9TWVNURU1fSUQpXG4gICAgKTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBpZiAodG9rZW4ubmFtZSAhPT0gVkFMSURfRE9DVFlQRV9OQU1FKSB7XG4gICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICB9XG5cbiAgICBjb25zdCBzeXN0ZW1JZCA9IHRva2VuLnN5c3RlbUlkO1xuXG4gICAgaWYgKHN5c3RlbUlkICYmIHN5c3RlbUlkLnRvTG93ZXJDYXNlKCkgPT09IFFVSVJLU19NT0RFX1NZU1RFTV9JRCkge1xuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuXG4gICAgbGV0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQ7XG5cbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpIHtcbiAgICAgICAgcHVibGljSWQgPSBwdWJsaWNJZC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChRVUlSS1NfTU9ERV9QVUJMSUNfSURTLmluZGV4T2YocHVibGljSWQpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcblxuICAgICAgICBpZiAoaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuXG4gICAgICAgIHByZWZpeGVzID1cbiAgICAgICAgICAgIHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTElNSVRFRF9RVUlSS1M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5OT19RVUlSS1M7XG59O1xuXG5leHBvcnRzLnNlcmlhbGl6ZUNvbnRlbnQgPSBmdW5jdGlvbihuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICBsZXQgc3RyID0gJyFET0NUWVBFICc7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgICBzdHIgKz0gbmFtZTtcbiAgICB9XG5cbiAgICBpZiAocHVibGljSWQpIHtcbiAgICAgICAgc3RyICs9ICcgUFVCTElDICcgKyBlbnF1b3RlRG9jdHlwZUlkKHB1YmxpY0lkKTtcbiAgICB9IGVsc2UgaWYgKHN5c3RlbUlkKSB7XG4gICAgICAgIHN0ciArPSAnIFNZU1RFTSc7XG4gICAgfVxuXG4gICAgaWYgKHN5c3RlbUlkICE9PSBudWxsKSB7XG4gICAgICAgIHN0ciArPSAnICcgKyBlbnF1b3RlRG9jdHlwZUlkKHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuY29uc3QgTlMgPSBIVE1MLk5BTUVTUEFDRVM7XG5jb25zdCBBVFRSUyA9IEhUTUwuQVRUUlM7XG5cbi8vTUlNRSB0eXBlc1xuY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCdcbn07XG5cbi8vQXR0cmlidXRlc1xuY29uc3QgREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9udXJsJztcbmNvbnN0IEFESlVTVEVEX0RFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvblVSTCc7XG5jb25zdCBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYXR0cmlidXRlbmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICAgIGF0dHJpYnV0ZXR5cGU6ICdhdHRyaWJ1dGVUeXBlJyxcbiAgICBiYXNlZnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG4gICAgYmFzZXByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG4gICAgY2FsY21vZGU6ICdjYWxjTW9kZScsXG4gICAgY2xpcHBhdGh1bml0czogJ2NsaXBQYXRoVW5pdHMnLFxuICAgIGRpZmZ1c2Vjb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgZWRnZW1vZGU6ICdlZGdlTW9kZScsXG4gICAgZmlsdGVydW5pdHM6ICdmaWx0ZXJVbml0cycsXG4gICAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gICAgZ3JhZGllbnR0cmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG4gICAgZ3JhZGllbnR1bml0czogJ2dyYWRpZW50VW5pdHMnLFxuICAgIGtlcm5lbG1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gICAga2VybmVsdW5pdGxlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgIGtleXBvaW50czogJ2tleVBvaW50cycsXG4gICAga2V5c3BsaW5lczogJ2tleVNwbGluZXMnLFxuICAgIGtleXRpbWVzOiAna2V5VGltZXMnLFxuICAgIGxlbmd0aGFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG4gICAgbGltaXRpbmdjb25lYW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgbWFya2VyaGVpZ2h0OiAnbWFya2VySGVpZ2h0JyxcbiAgICBtYXJrZXJ1bml0czogJ21hcmtlclVuaXRzJyxcbiAgICBtYXJrZXJ3aWR0aDogJ21hcmtlcldpZHRoJyxcbiAgICBtYXNrY29udGVudHVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsXG4gICAgbWFza3VuaXRzOiAnbWFza1VuaXRzJyxcbiAgICBudW1vY3RhdmVzOiAnbnVtT2N0YXZlcycsXG4gICAgcGF0aGxlbmd0aDogJ3BhdGhMZW5ndGgnLFxuICAgIHBhdHRlcm5jb250ZW50dW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICBwYXR0ZXJudHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgcGF0dGVybnVuaXRzOiAncGF0dGVyblVuaXRzJyxcbiAgICBwb2ludHNhdHg6ICdwb2ludHNBdFgnLFxuICAgIHBvaW50c2F0eTogJ3BvaW50c0F0WScsXG4gICAgcG9pbnRzYXR6OiAncG9pbnRzQXRaJyxcbiAgICBwcmVzZXJ2ZWFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gICAgcHJlc2VydmVhc3BlY3RyYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgIHByaW1pdGl2ZXVuaXRzOiAncHJpbWl0aXZlVW5pdHMnLFxuICAgIHJlZng6ICdyZWZYJyxcbiAgICByZWZ5OiAncmVmWScsXG4gICAgcmVwZWF0Y291bnQ6ICdyZXBlYXRDb3VudCcsXG4gICAgcmVwZWF0ZHVyOiAncmVwZWF0RHVyJyxcbiAgICByZXF1aXJlZGV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgIHJlcXVpcmVkZmVhdHVyZXM6ICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICBzcGVjdWxhcmNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgc3BlY3VsYXJleHBvbmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgIHNwcmVhZG1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gICAgc3RhcnRvZmZzZXQ6ICdzdGFydE9mZnNldCcsXG4gICAgc3RkZGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgICBzdGl0Y2h0aWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgICBzdXJmYWNlc2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuICAgIHN5c3RlbWxhbmd1YWdlOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgIHRhYmxldmFsdWVzOiAndGFibGVWYWx1ZXMnLFxuICAgIHRhcmdldHg6ICd0YXJnZXRYJyxcbiAgICB0YXJnZXR5OiAndGFyZ2V0WScsXG4gICAgdGV4dGxlbmd0aDogJ3RleHRMZW5ndGgnLFxuICAgIHZpZXdib3g6ICd2aWV3Qm94JyxcbiAgICB2aWV3dGFyZ2V0OiAndmlld1RhcmdldCcsXG4gICAgeGNoYW5uZWxzZWxlY3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgIHljaGFubmVsc2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICB6b29tYW5kcGFuOiAnem9vbUFuZFBhbidcbn07XG5cbmNvbnN0IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICAneGxpbms6YWN0dWF0ZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6YXJjcm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYXJjcm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6aHJlZic6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnaHJlZicsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6cm9sZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6c2hvdyc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnc2hvdycsIG5hbWVzcGFjZTogTlMuWExJTksgfSxcbiAgICAneGxpbms6dGl0bGUnOiB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3RpdGxlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazp0eXBlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bWw6YmFzZSc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2Jhc2UnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6bGFuZyc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2xhbmcnLCBuYW1lc3BhY2U6IE5TLlhNTCB9LFxuICAgICd4bWw6c3BhY2UnOiB7IHByZWZpeDogJ3htbCcsIG5hbWU6ICdzcGFjZScsIG5hbWVzcGFjZTogTlMuWE1MIH0sXG4gICAgeG1sbnM6IHsgcHJlZml4OiAnJywgbmFtZTogJ3htbG5zJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9LFxuICAgICd4bWxuczp4bGluayc6IHsgcHJlZml4OiAneG1sbnMnLCBuYW1lOiAneGxpbmsnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH1cbn07XG5cbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxuY29uc3QgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IChleHBvcnRzLlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSB7XG4gICAgYWx0Z2x5cGg6ICdhbHRHbHlwaCcsXG4gICAgYWx0Z2x5cGhkZWY6ICdhbHRHbHlwaERlZicsXG4gICAgYWx0Z2x5cGhpdGVtOiAnYWx0R2x5cGhJdGVtJyxcbiAgICBhbmltYXRlY29sb3I6ICdhbmltYXRlQ29sb3InLFxuICAgIGFuaW1hdGVtb3Rpb246ICdhbmltYXRlTW90aW9uJyxcbiAgICBhbmltYXRldHJhbnNmb3JtOiAnYW5pbWF0ZVRyYW5zZm9ybScsXG4gICAgY2xpcHBhdGg6ICdjbGlwUGF0aCcsXG4gICAgZmVibGVuZDogJ2ZlQmxlbmQnLFxuICAgIGZlY29sb3JtYXRyaXg6ICdmZUNvbG9yTWF0cml4JyxcbiAgICBmZWNvbXBvbmVudHRyYW5zZmVyOiAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICAgZmVjb21wb3NpdGU6ICdmZUNvbXBvc2l0ZScsXG4gICAgZmVjb252b2x2ZW1hdHJpeDogJ2ZlQ29udm9sdmVNYXRyaXgnLFxuICAgIGZlZGlmZnVzZWxpZ2h0aW5nOiAnZmVEaWZmdXNlTGlnaHRpbmcnLFxuICAgIGZlZGlzcGxhY2VtZW50bWFwOiAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgIGZlZGlzdGFudGxpZ2h0OiAnZmVEaXN0YW50TGlnaHQnLFxuICAgIGZlZmxvb2Q6ICdmZUZsb29kJyxcbiAgICBmZWZ1bmNhOiAnZmVGdW5jQScsXG4gICAgZmVmdW5jYjogJ2ZlRnVuY0InLFxuICAgIGZlZnVuY2c6ICdmZUZ1bmNHJyxcbiAgICBmZWZ1bmNyOiAnZmVGdW5jUicsXG4gICAgZmVnYXVzc2lhbmJsdXI6ICdmZUdhdXNzaWFuQmx1cicsXG4gICAgZmVpbWFnZTogJ2ZlSW1hZ2UnLFxuICAgIGZlbWVyZ2U6ICdmZU1lcmdlJyxcbiAgICBmZW1lcmdlbm9kZTogJ2ZlTWVyZ2VOb2RlJyxcbiAgICBmZW1vcnBob2xvZ3k6ICdmZU1vcnBob2xvZ3knLFxuICAgIGZlb2Zmc2V0OiAnZmVPZmZzZXQnLFxuICAgIGZlcG9pbnRsaWdodDogJ2ZlUG9pbnRMaWdodCcsXG4gICAgZmVzcGVjdWxhcmxpZ2h0aW5nOiAnZmVTcGVjdWxhckxpZ2h0aW5nJyxcbiAgICBmZXNwb3RsaWdodDogJ2ZlU3BvdExpZ2h0JyxcbiAgICBmZXRpbGU6ICdmZVRpbGUnLFxuICAgIGZldHVyYnVsZW5jZTogJ2ZlVHVyYnVsZW5jZScsXG4gICAgZm9yZWlnbm9iamVjdDogJ2ZvcmVpZ25PYmplY3QnLFxuICAgIGdseXBocmVmOiAnZ2x5cGhSZWYnLFxuICAgIGxpbmVhcmdyYWRpZW50OiAnbGluZWFyR3JhZGllbnQnLFxuICAgIHJhZGlhbGdyYWRpZW50OiAncmFkaWFsR3JhZGllbnQnLFxuICAgIHRleHRwYXRoOiAndGV4dFBhdGgnXG59KTtcblxuLy9UYWdzIHRoYXQgY2F1c2VzIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmNvbnN0IEVYSVRTX0ZPUkVJR05fQ09OVEVOVCA9IHtcbiAgICBbJC5CXTogdHJ1ZSxcbiAgICBbJC5CSUddOiB0cnVlLFxuICAgIFskLkJMT0NLUVVPVEVdOiB0cnVlLFxuICAgIFskLkJPRFldOiB0cnVlLFxuICAgIFskLkJSXTogdHJ1ZSxcbiAgICBbJC5DRU5URVJdOiB0cnVlLFxuICAgIFskLkNPREVdOiB0cnVlLFxuICAgIFskLkREXTogdHJ1ZSxcbiAgICBbJC5ESVZdOiB0cnVlLFxuICAgIFskLkRMXTogdHJ1ZSxcbiAgICBbJC5EVF06IHRydWUsXG4gICAgWyQuRU1dOiB0cnVlLFxuICAgIFskLkVNQkVEXTogdHJ1ZSxcbiAgICBbJC5IMV06IHRydWUsXG4gICAgWyQuSDJdOiB0cnVlLFxuICAgIFskLkgzXTogdHJ1ZSxcbiAgICBbJC5INF06IHRydWUsXG4gICAgWyQuSDVdOiB0cnVlLFxuICAgIFskLkg2XTogdHJ1ZSxcbiAgICBbJC5IRUFEXTogdHJ1ZSxcbiAgICBbJC5IUl06IHRydWUsXG4gICAgWyQuSV06IHRydWUsXG4gICAgWyQuSU1HXTogdHJ1ZSxcbiAgICBbJC5MSV06IHRydWUsXG4gICAgWyQuTElTVElOR106IHRydWUsXG4gICAgWyQuTUVOVV06IHRydWUsXG4gICAgWyQuTUVUQV06IHRydWUsXG4gICAgWyQuTk9CUl06IHRydWUsXG4gICAgWyQuT0xdOiB0cnVlLFxuICAgIFskLlBdOiB0cnVlLFxuICAgIFskLlBSRV06IHRydWUsXG4gICAgWyQuUlVCWV06IHRydWUsXG4gICAgWyQuU106IHRydWUsXG4gICAgWyQuU01BTExdOiB0cnVlLFxuICAgIFskLlNQQU5dOiB0cnVlLFxuICAgIFskLlNUUk9OR106IHRydWUsXG4gICAgWyQuU1RSSUtFXTogdHJ1ZSxcbiAgICBbJC5TVUJdOiB0cnVlLFxuICAgIFskLlNVUF06IHRydWUsXG4gICAgWyQuVEFCTEVdOiB0cnVlLFxuICAgIFskLlRUXTogdHJ1ZSxcbiAgICBbJC5VXTogdHJ1ZSxcbiAgICBbJC5VTF06IHRydWUsXG4gICAgWyQuVkFSXTogdHJ1ZVxufTtcblxuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnRzLmNhdXNlc0V4aXQgPSBmdW5jdGlvbihzdGFydFRhZ1Rva2VuKSB7XG4gICAgY29uc3QgdG4gPSBzdGFydFRhZ1Rva2VuLnRhZ05hbWU7XG4gICAgY29uc3QgaXNGb250V2l0aEF0dHJzID1cbiAgICAgICAgdG4gPT09ICQuRk9OVCAmJlxuICAgICAgICAoVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5DT0xPUikgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuU0laRSkgIT09IG51bGwgfHxcbiAgICAgICAgICAgIFRva2VuaXplci5nZXRUb2tlbkF0dHIoc3RhcnRUYWdUb2tlbiwgQVRUUlMuRkFDRSkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGlzRm9udFdpdGhBdHRycyA/IHRydWUgOiBFWElUU19GT1JFSUdOX0NPTlRFTlRbdG5dO1xufTtcblxuLy9Ub2tlbiBhZGp1c3RtZW50c1xuZXhwb3J0cy5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBERUZJTklUSU9OX1VSTF9BVFRSKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblNWR0F0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ck5hbWUgPSBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBhZGp1c3RlZEF0dHJOYW1lO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZGp1c3RUb2tlblhNTEF0dHJzID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ckVudHJ5ID0gWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQW3Rva2VuLmF0dHJzW2ldLm5hbWVdO1xuXG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJFbnRyeSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ucHJlZml4ID0gYWRqdXN0ZWRBdHRyRW50cnkucHJlZml4O1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWU7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lc3BhY2UgPSBhZGp1c3RlZEF0dHJFbnRyeS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHVGFnTmFtZSA9IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgY29uc3QgYWRqdXN0ZWRUYWdOYW1lID0gU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUFt0b2tlbi50YWdOYW1lXTtcblxuICAgIGlmIChhZGp1c3RlZFRhZ05hbWUpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICB9XG59O1xuXG4vL0ludGVncmF0aW9uIHBvaW50c1xuZnVuY3Rpb24gaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpIHtcbiAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTCAmJiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMgfHwgdG4gPT09ICQuTVRFWFQpO1xufVxuXG5mdW5jdGlvbiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpIHtcbiAgICBpZiAobnMgPT09IE5TLk1BVEhNTCAmJiB0biA9PT0gJC5BTk5PVEFUSU9OX1hNTCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXR0cnNbaV0ubmFtZSA9PT0gQVRUUlMuRU5DT0RJTkcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IE1JTUVfVFlQRVMuVEVYVF9IVE1MIHx8IHZhbHVlID09PSBNSU1FX1RZUEVTLkFQUExJQ0FUSU9OX1hNTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBucyA9PT0gTlMuU1ZHICYmICh0biA9PT0gJC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gJC5ERVNDIHx8IHRuID09PSAkLlRJVExFKTtcbn1cblxuZXhwb3J0cy5pc0ludGVncmF0aW9uUG9pbnQgPSBmdW5jdGlvbih0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICBpZiAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLk1BVEhNTCkgJiYgaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFRva2VuaXplciA9IHJlcXVpcmUoJy4uL3Rva2VuaXplcicpO1xuY29uc3QgT3BlbkVsZW1lbnRTdGFjayA9IHJlcXVpcmUoJy4vb3Blbi1lbGVtZW50LXN0YWNrJyk7XG5jb25zdCBGb3JtYXR0aW5nRWxlbWVudExpc3QgPSByZXF1aXJlKCcuL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0Jyk7XG5jb25zdCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiA9IHJlcXVpcmUoJy4uL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4gPSByZXF1aXJlKCcuLi9leHRlbnNpb25zL2Vycm9yLXJlcG9ydGluZy9wYXJzZXItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vdXRpbHMvbWl4aW4nKTtcbmNvbnN0IGRlZmF1bHRUcmVlQWRhcHRlciA9IHJlcXVpcmUoJy4uL3RyZWUtYWRhcHRlcnMvZGVmYXVsdCcpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnLi4vdXRpbHMvbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgZG9jdHlwZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9kb2N0eXBlJyk7XG5jb25zdCBmb3JlaWduQ29udGVudCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91bmljb2RlJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWwnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gSFRNTC5UQUdfTkFNRVM7XG5jb25zdCBOUyA9IEhUTUwuTkFNRVNQQUNFUztcbmNvbnN0IEFUVFJTID0gSFRNTC5BVFRSUztcblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgb25QYXJzZUVycm9yOiBudWxsLFxuICAgIHRyZWVBZGFwdGVyOiBkZWZhdWx0VHJlZUFkYXB0ZXJcbn07XG5cbi8vTWlzYyBjb25zdGFudHNcbmNvbnN0IEhJRERFTl9JTlBVVF9UWVBFID0gJ2hpZGRlbic7XG5cbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG5cbi8vSW5zZXJ0aW9uIG1vZGVzXG5jb25zdCBJTklUSUFMX01PREUgPSAnSU5JVElBTF9NT0RFJztcbmNvbnN0IEJFRk9SRV9IVE1MX01PREUgPSAnQkVGT1JFX0hUTUxfTU9ERSc7XG5jb25zdCBCRUZPUkVfSEVBRF9NT0RFID0gJ0JFRk9SRV9IRUFEX01PREUnO1xuY29uc3QgSU5fSEVBRF9NT0RFID0gJ0lOX0hFQURfTU9ERSc7XG5jb25zdCBJTl9IRUFEX05PX1NDUklQVF9NT0RFID0gJ0lOX0hFQURfTk9fU0NSSVBUX01PREUnO1xuY29uc3QgQUZURVJfSEVBRF9NT0RFID0gJ0FGVEVSX0hFQURfTU9ERSc7XG5jb25zdCBJTl9CT0RZX01PREUgPSAnSU5fQk9EWV9NT0RFJztcbmNvbnN0IFRFWFRfTU9ERSA9ICdURVhUX01PREUnO1xuY29uc3QgSU5fVEFCTEVfTU9ERSA9ICdJTl9UQUJMRV9NT0RFJztcbmNvbnN0IElOX1RBQkxFX1RFWFRfTU9ERSA9ICdJTl9UQUJMRV9URVhUX01PREUnO1xuY29uc3QgSU5fQ0FQVElPTl9NT0RFID0gJ0lOX0NBUFRJT05fTU9ERSc7XG5jb25zdCBJTl9DT0xVTU5fR1JPVVBfTU9ERSA9ICdJTl9DT0xVTU5fR1JPVVBfTU9ERSc7XG5jb25zdCBJTl9UQUJMRV9CT0RZX01PREUgPSAnSU5fVEFCTEVfQk9EWV9NT0RFJztcbmNvbnN0IElOX1JPV19NT0RFID0gJ0lOX1JPV19NT0RFJztcbmNvbnN0IElOX0NFTExfTU9ERSA9ICdJTl9DRUxMX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX01PREUgPSAnSU5fU0VMRUNUX01PREUnO1xuY29uc3QgSU5fU0VMRUNUX0lOX1RBQkxFX01PREUgPSAnSU5fU0VMRUNUX0lOX1RBQkxFX01PREUnO1xuY29uc3QgSU5fVEVNUExBVEVfTU9ERSA9ICdJTl9URU1QTEFURV9NT0RFJztcbmNvbnN0IEFGVEVSX0JPRFlfTU9ERSA9ICdBRlRFUl9CT0RZX01PREUnO1xuY29uc3QgSU5fRlJBTUVTRVRfTU9ERSA9ICdJTl9GUkFNRVNFVF9NT0RFJztcbmNvbnN0IEFGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5jb25zdCBBRlRFUl9BRlRFUl9CT0RZX01PREUgPSAnQUZURVJfQUZURVJfQk9EWV9NT0RFJztcbmNvbnN0IEFGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREUgPSAnQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSc7XG5cbi8vSW5zZXJ0aW9uIG1vZGUgcmVzZXQgbWFwXG5jb25zdCBJTlNFUlRJT05fTU9ERV9SRVNFVF9NQVAgPSB7XG4gICAgWyQuVFJdOiBJTl9ST1dfTU9ERSxcbiAgICBbJC5UQk9EWV06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5USEVBRF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX0JPRFlfTU9ERSxcbiAgICBbJC5DQVBUSU9OXTogSU5fQ0FQVElPTl9NT0RFLFxuICAgIFskLkNPTEdST1VQXTogSU5fQ09MVU1OX0dST1VQX01PREUsXG4gICAgWyQuVEFCTEVdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkJPRFldOiBJTl9CT0RZX01PREUsXG4gICAgWyQuRlJBTUVTRVRdOiBJTl9GUkFNRVNFVF9NT0RFXG59O1xuXG4vL1RlbXBsYXRlIGluc2VydGlvbiBtb2RlIHN3aXRjaCBtYXBcbmNvbnN0IFRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAgPSB7XG4gICAgWyQuQ0FQVElPTl06IElOX1RBQkxFX01PREUsXG4gICAgWyQuQ09MR1JPVVBdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLlRCT0RZXTogSU5fVEFCTEVfTU9ERSxcbiAgICBbJC5URk9PVF06IElOX1RBQkxFX01PREUsXG4gICAgWyQuVEhFQURdOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLkNPTF06IElOX0NPTFVNTl9HUk9VUF9NT0RFLFxuICAgIFskLlRSXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLlREXTogSU5fUk9XX01PREUsXG4gICAgWyQuVEhdOiBJTl9ST1dfTU9ERVxufTtcblxuLy9Ub2tlbiBoYW5kbGVycyBtYXAgZm9yIGluc2VydGlvbiBtb2Rlc1xuY29uc3QgVE9LRU5fSEFORExFUlMgPSB7XG4gICAgW0lOSVRJQUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogZG9jdHlwZUluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkluaXRpYWxNb2RlXG4gICAgfSxcbiAgICBbQkVGT1JFX0hUTUxfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIdG1sLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSHRtbFxuICAgIH0sXG4gICAgW0JFRk9SRV9IRUFEX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdCZWZvcmVIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQmVmb3JlSGVhZFxuICAgIH0sXG4gICAgW0lOX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luSGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuSW5IZWFkXG4gICAgfSxcbiAgICBbSU5fSEVBRF9OT19TQ1JJUFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZE5vU2NyaXB0LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IG1pc3BsYWNlZERvY3R5cGUsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5IZWFkTm9TY3JpcHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkhlYWROb1NjcmlwdFxuICAgIH0sXG4gICAgW0FGVEVSX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVySGVhZCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkXG4gICAgfSxcbiAgICBbSU5fQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtURVhUX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJblRleHRcbiAgICB9LFxuICAgIFtJTl9UQUJMRV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX1RFWFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JblRhYmxlVGV4dFxuICAgIH0sXG4gICAgW0lOX0NBUFRJT05fTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5DYXB0aW9uLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNhcHRpb24sXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ09MVU1OX0dST1VQX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkNvbHVtbkdyb3VwLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RBQkxFX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5UYWJsZUJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGFibGVCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1JPV19NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblJvdyxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5Sb3csXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fQ0VMTF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNlbGwsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQ2VsbCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblNlbGVjdCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5TZWxlY3RJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1RFTVBMQVRFX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGVtcGxhdGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5UZW1wbGF0ZVxuICAgIH0sXG4gICAgW0FGVEVSX0JPRFlfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbSU5fRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfRlJBTUVTRVRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdBZnRlckZyYW1lc2V0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfSxcbiAgICBbQUZURVJfQUZURVJfQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkFmdGVyQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IHN0b3BQYXJzaW5nXG4gICAgfVxufTtcblxuLy9QYXJzZXJcbmNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLnBlbmRpbmdTY3JpcHQgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBMb2NhdGlvbkluZm9QYXJzZXJNaXhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvcikge1xuICAgICAgICAgICAgTWl4aW4uaW5zdGFsbCh0aGlzLCBFcnJvclJlcG9ydGluZ1BhcnNlck1peGluLCB7IG9uUGFyc2VFcnJvcjogdGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvciB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHBhcnNlKGh0bWwpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fYm9vdHN0cmFwKGRvY3VtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIud3JpdGUoaHRtbCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9XG5cbiAgICBwYXJzZUZyYWdtZW50KGh0bWwsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAvL05PVEU6IHVzZSA8dGVtcGxhdGU+IGVsZW1lbnQgYXMgYSBmcmFnbWVudCBjb250ZXh0IGlmIGNvbnRleHQgZWxlbWVudCB3YXMgbm90IHByb3ZpZGVkLFxuICAgICAgICAvL3NvIHdlIHdpbGwgcGFyc2UgaW4gXCJmb3JnaXZpbmdcIiBtYW5uZXJcbiAgICAgICAgaWYgKCFmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIGZyYWdtZW50Q29udGV4dCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLlRFTVBMQVRFLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IGNyZWF0ZSBmYWtlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIGFzICdkb2N1bWVudCcgZm9yIGZyYWdtZW50IHBhcnNpbmcuXG4gICAgICAgIC8vVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGpzZG9tIHRoZXJlICdkb2N1bWVudCcgY2FuJ3QgYmUgcmVjcmVhdGVkLCB0aGVyZWZvcmVcbiAgICAgICAgLy9mcmFnbWVudCBwYXJzaW5nIGNhdXNlcyBtZXNzaW5nIG9mIHRoZSBtYWluIGBkb2N1bWVudGAuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50TW9jayA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgnZG9jdW1lbnRtb2NrJywgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2Jvb3RzdHJhcChkb2N1bWVudE1vY2ssIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShmcmFnbWVudENvbnRleHQpID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICB0aGlzLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCk7XG4gICAgICAgIHRoaXMuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgdGhpcy5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AobnVsbCk7XG5cbiAgICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9jdW1lbnRNb2NrKTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgICAgICB0aGlzLl9hZG9wdE5vZGVzKHJvb3RFbGVtZW50LCBmcmFnbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgIH1cblxuICAgIC8vQm9vdHN0cmFwIHBhcnNlclxuICAgIF9ib290c3RyYXAoZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zKTtcblxuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTklUSUFMX01PREU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gJyc7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcblxuICAgICAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMgPSBuZXcgT3BlbkVsZW1lbnRTdGFjayh0aGlzLmRvY3VtZW50LCB0aGlzLnRyZWVBZGFwdGVyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuXG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjayA9IFtdO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0NoYXJhY3RlclRva2VucyA9IFtdO1xuICAgICAgICB0aGlzLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoKSB7XG4gICAgICAgIC8vIE5PVEU6IGVyciByZXBvcnRpbmcgaXMgbm9vcCBieSBkZWZhdWx0LiBFbmFibGVkIGJ5IG1peGluLlxuICAgIH1cblxuICAgIC8vUGFyc2luZyBsb29wXG4gICAgX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbml6ZXIuZ2V0TmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4gJiYgdG9rZW4uY2hhcnNbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uY2hhcnMgPSB0b2tlbi5jaGFycy5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzSW5wdXRUb2tlbih0b2tlbik7XG5cbiAgICAgICAgICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVuUGFyc2luZ0xvb3BGb3JDdXJyZW50Q2h1bmsod3JpdGVDYWxsYmFjaywgc2NyaXB0SGFuZGxlcikge1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcChzY3JpcHRIYW5kbGVyKTtcblxuICAgICAgICBpZiAoc2NyaXB0SGFuZGxlciAmJiB0aGlzLnBlbmRpbmdTY3JpcHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucGVuZGluZ1NjcmlwdDtcblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nU2NyaXB0ID0gbnVsbDtcblxuICAgICAgICAgICAgc2NyaXB0SGFuZGxlcihzY3JpcHQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod3JpdGVDYWxsYmFjaykge1xuICAgICAgICAgICAgd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UZXh0IHBhcnNpbmdcbiAgICBfc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYWxsb3dDREFUQSA9XG4gICAgICAgICAgICBjdXJyZW50ICYmXG4gICAgICAgICAgICBjdXJyZW50ICE9PSB0aGlzLmRvY3VtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSAhPT0gTlMuSFRNTCAmJlxuICAgICAgICAgICAgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50KTtcbiAgICB9XG5cbiAgICBfc3dpdGNoVG9UZXh0UGFyc2luZyhjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGN1cnJlbnRUb2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gbmV4dFRva2VuaXplclN0YXRlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHRoaXMuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgIH1cblxuICAgIHN3aXRjaFRvUGxhaW50ZXh0UGFyc2luZygpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gVEVYVF9NT0RFO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5QTEFJTlRFWFQ7XG4gICAgfVxuXG4gICAgLy9GcmFnbWVudCBwYXJzaW5nXG4gICAgX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgPyB0aGlzLmZyYWdtZW50Q29udGV4dFxuICAgICAgICAgICAgOiB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIF9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCkge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkgPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9IHdoaWxlIChub2RlKTtcbiAgICB9XG5cbiAgICBfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuZnJhZ21lbnRDb250ZXh0KSA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5mcmFnbWVudENvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVElUTEUgfHwgdG4gPT09ICQuVEVYVEFSRUEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5YTVAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5JRlJBTUUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT0VNQkVEIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT1NDUklQVFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXIuTU9ERS5SQVdURVhUO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vVHJlZSBtdXRhdGlvblxuICAgIF9zZXREb2N1bWVudFR5cGUodG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRva2VuLm5hbWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN5c3RlbUlkID0gdG9rZW4uc3lzdGVtSWQgfHwgJyc7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXREb2N1bWVudFR5cGUodGhpcy5kb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTtcbiAgICB9XG5cbiAgICBfYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9hcHBlbmRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBuYW1lc3BhY2VVUkksIHRva2VuLmF0dHJzKTtcblxuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9pbnNlcnRGYWtlRWxlbWVudCh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IHRtcGwgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgTlMuSFRNTCwgdG9rZW4uYXR0cnMpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXRUZW1wbGF0ZUNvbnRlbnQodG1wbCwgY29udGVudCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUodG1wbCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2godG1wbCk7XG4gICAgfVxuXG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgkLkhUTUwsIE5TLkhUTUwsIFtdKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudCwgY29tbWVudE5vZGUpO1xuICAgIH1cblxuICAgIF9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3N0ZXJQYXJlbnRUZXh0KHRva2VuLmNoYXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQocGFyZW50LCB0b2tlbi5jaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfYWRvcHROb2Rlcyhkb25vciwgcmVjaXBpZW50KSB7XG4gICAgICAgIGZvciAobGV0IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKTsgY2hpbGQ7IGNoaWxkID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKGRvbm9yKSkge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGNoaWxkKTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocmVjaXBpZW50LCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICBfc2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGN1cnJlbnQpID09PSAkLkFOTk9UQVRJT05fWE1MICYmXG4gICAgICAgICAgICBucyA9PT0gTlMuTUFUSE1MICYmXG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOICYmXG4gICAgICAgICAgICB0b2tlbi50YWdOYW1lID09PSAkLlNWR1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyVG9rZW4gPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU47XG5cbiAgICAgICAgY29uc3QgaXNNYXRoTUxUZXh0U3RhcnRUYWcgPVxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1HTFlQSCAmJiB0b2tlbi50YWdOYW1lICE9PSAkLk1BTElHTk1BUks7XG5cbiAgICAgICAgaWYgKChpc01hdGhNTFRleHRTdGFydFRhZyB8fCBpc0NoYXJhY3RlclRva2VuKSAmJiB0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudCwgTlMuTUFUSE1MKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gfHwgaXNDaGFyYWN0ZXJUb2tlbikgJiZcbiAgICAgICAgICAgIHRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50LCBOUy5IVE1MKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2tlbi50eXBlICE9PSBUb2tlbml6ZXIuRU9GX1RPS0VOO1xuICAgIH1cblxuICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbdGhpcy5pbnNlcnRpb25Nb2RlXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pIHtcbiAgICAgICAgVE9LRU5fSEFORExFUlNbSU5fQk9EWV9NT0RFXVt0b2tlbi50eXBlXSh0aGlzLCB0b2tlbik7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU4pIHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgaW5zZXJ0Q2hhcmFjdGVycyh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNPTU1FTlRfVE9LRU4pIHtcbiAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVORF9UQUdfVE9LRU4pIHtcbiAgICAgICAgICAgIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQodGhpcywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiYgdG9rZW4uc2VsZkNsb3NpbmcgJiYgIXRva2VuLmFja1NlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQoZWxlbWVudCwgZm9yZWlnbk5TKSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBhdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcmVpZ25Db250ZW50LmlzSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cblxuICAgIC8vQWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgcmVjb25zdHJ1Y3Rpb25cbiAgICBfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGxpc3RMZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCB1bm9wZW5JZHggPSBsaXN0TGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gbnVsbDtcblxuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHVub3BlbklkeC0tO1xuICAgICAgICAgICAgICAgIGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1t1bm9wZW5JZHhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgfHwgdGhpcy5vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5vcGVuSWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHVub3BlbklkeCA+IDApO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdW5vcGVuSWR4OyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZW50cnkgPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoZW50cnkudG9rZW4sIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2xvc2UgZWxlbWVudHNcbiAgICBfY2xvc2VUYWJsZUNlbGwoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWJsZUNlbGxQb3BwZWQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG4gICAgfVxuXG4gICAgX2Nsb3NlUEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlApO1xuICAgIH1cblxuICAgIC8vSW5zZXJ0aW9uIG1vZGVzXG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wLCBsYXN0ID0gZmFsc2U7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmV3SW5zZXJ0aW9uTW9kZSA9IElOU0VSVElPTl9NT0RFX1JFU0VUX01BUFt0bl07XG5cbiAgICAgICAgICAgIGlmIChuZXdJbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gbmV3SW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0NFTExfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxhc3QgJiYgdG4gPT09ICQuSEVBRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KGkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMuY3VycmVudFRtcGxJbnNlcnRpb25Nb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5oZWFkRWxlbWVudCA/IEFGVEVSX0hFQURfTU9ERSA6IEJFRk9SRV9IRUFEX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KHNlbGVjdElkeCkge1xuICAgICAgICBpZiAoc2VsZWN0SWR4ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdElkeCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNlc3RvciA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGFuY2VzdG9yKTtcblxuICAgICAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX01PREU7XG4gICAgfVxuXG4gICAgX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShtb2RlKSB7XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjay5wdXNoKG1vZGUpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3ArKztcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSBtb2RlO1xuICAgIH1cblxuICAgIF9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnBvcCgpO1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AtLTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGUgPSB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wXTtcbiAgICB9XG5cbiAgICAvL0Zvc3RlciBwYXJlbnRpbmdcbiAgICBfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEIHx8IHRuID09PSAkLlRSO1xuICAgIH1cblxuICAgIF9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCAmJiB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBiZWZvcmVFbGVtZW50OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG9wZW5FbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChvcGVuRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG9wZW5FbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uYmVmb3JlRWxlbWVudCA9IG9wZW5FbGVtZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYXRpb24ucGFyZW50KSB7XG4gICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZm9zdGVyUGFyZW50VGV4dChjaGFycykge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpO1xuXG4gICAgICAgIGlmIChsb2NhdGlvbi5iZWZvcmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHRCZWZvcmUobG9jYXRpb24ucGFyZW50LCBjaGFycywgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQobG9jYXRpb24ucGFyZW50LCBjaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1NwZWNpYWwgZWxlbWVudHNcbiAgICBfaXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBIVE1MLlNQRUNJQUxfRUxFTUVOVFNbbnNdW3RuXTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuXG4vL0Fkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG1cbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNhZG9wdGlvbkFnZW5jeSlcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vU3RlcHMgNS04IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbikge1xuICAgIGxldCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xuXG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ05hbWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0aW5nRWxlbWVudEVudHJ5O1xufVxuXG4vL1N0ZXBzIDkgYW5kIDEwIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgbGV0IGZ1cnRoZXN0QmxvY2sgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHJldHVybiBmdXJ0aGVzdEJsb2NrO1xufVxuXG4vL1N0ZXAgMTMgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnQpIHtcbiAgICBsZXQgbGFzdEVsZW1lbnQgPSBmdXJ0aGVzdEJsb2NrO1xuICAgIGxldCBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZ1cnRoZXN0QmxvY2spO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGVsZW1lbnQgPSBuZXh0RWxlbWVudDsgZWxlbWVudCAhPT0gZm9ybWF0dGluZ0VsZW1lbnQ7IGkrKywgZWxlbWVudCA9IG5leHRFbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogc3RvcmUgbmV4dCBlbGVtZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiAoaXQgbWF5IGJlIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2sgYnkgc3RlcCA5LjUpXG4gICAgICAgIG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCk7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb3VudGVyT3ZlcmZsb3cgPSBlbGVtZW50RW50cnkgJiYgaSA+PSBBQV9JTk5FUl9MT09QX0lURVI7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMgPSAhZWxlbWVudEVudHJ5IHx8IGNvdW50ZXJPdmVyZmxvdztcblxuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXJPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpO1xuXG4gICAgICAgICAgICBpZiAobGFzdEVsZW1lbnQgPT09IGZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGVsZW1lbnRFbnRyeTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCwgbGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTMuNyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGVsZW1lbnRFbnRyeS50b2tlbi50YWdOYW1lLCBucywgZWxlbWVudEVudHJ5LnRva2VuLmF0dHJzKTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlcGxhY2UoZWxlbWVudEVudHJ5LmVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgIGVsZW1lbnRFbnRyeS5lbGVtZW50ID0gbmV3RWxlbWVudDtcblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG4vL1N0ZXAgMTQgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KSB7XG4gICAgaWYgKHAuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyhjb21tb25BbmNlc3RvcikpIHtcbiAgICAgICAgcC5fZm9zdGVyUGFyZW50RWxlbWVudChsYXN0RWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGNvbW1vbkFuY2VzdG9yKTtcblxuICAgICAgICBpZiAodG4gPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gcC50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgIH1cbn1cblxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IHRva2VuID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS50b2tlbjtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG5cbiAgICBwLl9hZG9wdE5vZGVzKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG5cbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcblxuICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIHAub3BlbkVsZW1lbnRzLmluc2VydEFmdGVyKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xufVxuXG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFBX09VVEVSX0xPT1BfSVRFUjsgaSsrKSB7XG4gICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkocCwgdG9rZW4sIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgICAgIGlmICghZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG5cbiAgICAgICAgY29uc3QgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG5cbiAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcbiAgICAgICAgYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgfVxufVxuXG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBpZ25vcmVUb2tlbigpIHtcbiAgICAvL05PVEU6IGRvIG5vdGhpbmcgPSlcbn1cblxuZnVuY3Rpb24gbWlzcGxhY2VkRG9jdHlwZShwKSB7XG4gICAgcC5fZXJyKEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHwgcC5vcGVuRWxlbWVudHMuY3VycmVudCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAuZG9jdW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRDaGFyYWN0ZXJzKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHApIHtcbiAgICBwLnN0b3BwZWQgPSB0cnVlO1xufVxuXG4vLyBUaGUgXCJpbml0aWFsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBkb2N0eXBlSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX3NldERvY3VtZW50VHlwZSh0b2tlbik7XG5cbiAgICBjb25zdCBtb2RlID0gdG9rZW4uZm9yY2VRdWlya3MgPyBIVE1MLkRPQ1VNRU5UX01PREUuUVVJUktTIDogZG9jdHlwZS5nZXREb2N1bWVudE1vZGUodG9rZW4pO1xuXG4gICAgaWYgKCFkb2N0eXBlLmlzQ29uZm9ybWluZyh0b2tlbikpIHtcbiAgICAgICAgcC5fZXJyKEVSUi5ub25Db25mb3JtaW5nRG9jdHlwZSk7XG4gICAgfVxuXG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG5cbiAgICBwLmluc2VydGlvbk1vZGUgPSBCRUZPUkVfSFRNTF9NT0RFO1xufVxuXG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlLCB7IGJlZm9yZVRva2VuOiB0cnVlIH0pO1xuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IVE1MX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSEVBRCB8fCB0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuSEVBRCk7XG4gICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5CQVNFRk9OVCB8fCB0biA9PT0gJC5CR1NPVU5EIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkNEQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTk9fU0NSSVBUX01PREU7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTIHx8IHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUKSB7XG4gICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlNDUklQVF9EQVRBKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHAuX2luc2VydFRlbXBsYXRlKHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9URU1QTEFURV9NT0RFO1xuICAgICAgICBwLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoSU5fVEVNUExBVEVfTU9ERSk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5IRUFEKSB7XG4gICAgICAgIHAuX2VycihFUlIubWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIgfHwgdG4gPT09ICQuSFRNTCkge1xuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKTtcblxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgcC5fZXJyKEVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5fZXJyKEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJpbiBoZWFkIG5vIHNjcmlwdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuTElOSyB8fFxuICAgICAgICB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFXG4gICAgKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgIHAuX2VycihFUlIubmVzdGVkTm9zY3JpcHRJbkhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuTk9TQ1JJUFQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IGVyckNvZGUgPVxuICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU9GX1RPS0VOID8gRVJSLm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiA6IEVSUi5kaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQ7XG5cbiAgICBwLl9lcnIoZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImFmdGVyIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9GUkFNRVNFVF9NT0RFO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkJBU0UgfHxcbiAgICAgICAgdG4gPT09ICQuQkFTRUZPTlQgfHxcbiAgICAgICAgdG4gPT09ICQuQkdTT1VORCB8fFxuICAgICAgICB0biA9PT0gJC5MSU5LIHx8XG4gICAgICAgIHRuID09PSAkLk1FVEEgfHxcbiAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgdG4gPT09ICQuU0NSSVBUIHx8XG4gICAgICAgIHRuID09PSAkLlNUWUxFIHx8XG4gICAgICAgIHRuID09PSAkLlRFTVBMQVRFIHx8XG4gICAgICAgIHRuID09PSAkLlRJVExFXG4gICAgKSB7XG4gICAgICAgIHAuX2VycihFUlIuYWJhbmRvbmVkSGVhZEVsZW1lbnRDaGlsZCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnB1c2gocC5oZWFkRWxlbWVudCk7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLl9lcnIoRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcblxuICAgIGlmIChib2R5RWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoYm9keUVsZW1lbnQpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRuID0gcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiBwcmUgYmxvY2tzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcblxuICAgIGlmICghcC5mb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuXG4gICAgICAgIGlmICghaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCBlbGVtZW50VG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGxldCBjbG9zZVRuID0gbnVsbDtcblxuICAgICAgICBpZiAodG4gPT09ICQuTEkgJiYgZWxlbWVudFRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICBjbG9zZVRuID0gJC5MSTtcbiAgICAgICAgfSBlbHNlIGlmICgodG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpICYmIChlbGVtZW50VG4gPT09ICQuREQgfHwgZWxlbWVudFRuID09PSAkLkRUKSkge1xuICAgICAgICAgICAgY2xvc2VUbiA9IGVsZW1lbnRUbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZVRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihjbG9zZVRuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChjbG9zZVRuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRUbiAhPT0gJC5BRERSRVNTICYmIGVsZW1lbnRUbiAhPT0gJC5ESVYgJiYgZWxlbWVudFRuICE9PSAkLlAgJiYgcC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbn1cblxuZnVuY3Rpb24gYnV0dG9uU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJVVFRPTikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5CVVRUT04pO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSgkLkEpO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cblxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChcbiAgICAgICAgcC50cmVlQWRhcHRlci5nZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCkgIT09IEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiZcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApXG4gICAgKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xufVxuXG5mdW5jdGlvbiBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG5cbiAgICBjb25zdCBpbnB1dFR5cGUgPSBUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHRva2VuLCBBVFRSUy5UWVBFKTtcblxuICAgIGlmICghaW5wdXRUeXBlIHx8IGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpICE9PSBISURERU5fSU5QVVRfVFlQRSkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHRva2VuLnRhZ05hbWUgPSAkLklNRztcbiAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJDREFUQTtcbiAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG59XG5cbmZ1bmN0aW9uIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuZnVuY3Rpb24gaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbn1cblxuLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBhY3QgYXMgYW4gdXNlciBhZ2VudCB3aXRoIGVuYWJsZWQgcGx1Z2lucywgc28gd2UgcGFyc2Vcbi8vPG5vZW1iZWQ+IGFzIGEgcmF3dGV4dC5cbmZ1bmN0aW9uIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fVEFCTEVfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX0NBUFRJT05fTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1RBQkxFX0JPRFlfTU9ERSB8fFxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IElOX1JPV19NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fQ0VMTF9NT0RFXG4gICAgKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9JTl9UQUJMRV9NT0RFO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1NFTEVDVF9NT0RFO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlJUQyk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5TVkcpO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5JIHx8IHRuID09PSAkLlMgfHwgdG4gPT09ICQuQiB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkEpIHtcbiAgICAgICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuT0wgfHwgdG4gPT09ICQuVUwpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikge1xuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5MSSB8fCB0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSFIpIHtcbiAgICAgICAgICAgICAgICBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUkIpIHtcbiAgICAgICAgICAgICAgICByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlQgfHwgdG4gPT09ICQuUlApIHtcbiAgICAgICAgICAgICAgICBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuVEggJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRElWIHx8IHRuID09PSAkLkRJUiB8fCB0biA9PT0gJC5OQVYpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QUkUpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJJRykge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNRyB8fCB0biA9PT0gJC5XQlIpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5YTVApIHtcbiAgICAgICAgICAgICAgICB4bXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNWRykge1xuICAgICAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUlRDKSB7XG4gICAgICAgICAgICAgICAgcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQkFTRSB8fCB0biA9PT0gJC5MSU5LIHx8IHRuID09PSAkLk1FVEEpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJPRFkpIHtcbiAgICAgICAgICAgICAgICBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GT1JNKSB7XG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9CUikge1xuICAgICAgICAgICAgICAgIG5vYnJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFSRUEpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQVRIKSB7XG4gICAgICAgICAgICAgICAgbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUVOVSkge1xuICAgICAgICAgICAgICAgIG1lbnVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkhFQUQpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU1RZTEUgfHwgdG4gPT09ICQuVElUTEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFTSURFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU01BTEwpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTUJFRCkge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklOUFVUKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlBBUkFNIHx8IHRuID09PSAkLlRSQUNLKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLklNQUdFKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkZSQU1FICYmIHRuICE9PSAkLlRCT0RZICYmIHRuICE9PSAkLlRGT09UICYmIHRuICE9PSAkLlRIRUFEKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlNDUklQVCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5CVVRUT04pIHtcbiAgICAgICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKSB7XG4gICAgICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5LRVlHRU4pIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TT1VSQ0UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSUZSQU1FKSB7XG4gICAgICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkdTT1VORCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU0VDVElPTiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNVTU1BUllcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJU1RJTkcpIHtcbiAgICAgICAgICAgICAgICBwcmVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRU1CRUQpIHtcbiAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkJBU0VGT05UKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgICAgIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5GSUVMRFNFVCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFWFRBUkVBKSB7XG4gICAgICAgICAgICAgICAgdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT1NDUklQVCkge1xuICAgICAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5QTEFJTlRFWFQpIHtcbiAgICAgICAgICAgICAgICBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib2R5RW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGh0bWxFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSBwLmZvcm1FbGVtZW50O1xuXG4gICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgoZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkZPUk0pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcblxuICAgICAgICBpZiAoaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuRk9STSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlApO1xuICAgIH1cblxuICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbn1cblxuZnVuY3Rpb24gbGlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkxpc3RJdGVtU2NvcGUoJC5MSSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5MSSk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkxJKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYnJFbmRUYWdJbkJvZHkocCkge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5CUik7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRuKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy9PUFRJTUlaQVRJT046IEludGVnZXIgY29tcGFyaXNvbnMgYXJlIGxvdy1jb3N0LCBzbyB3ZSBjYW4gdXNlIHZlcnkgZmFzdCB0YWcgbmFtZSBsZW5ndGggZmlsdGVycyBoZXJlLlxuLy9JdCdzIGZhc3RlciB0aGFuIHVzaW5nIGRpY3Rpb25hcnkuXG5mdW5jdGlvbiBlbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQSB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5VKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUCkge1xuICAgICAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkRMIHx8IHRuID09PSAkLlVMIHx8IHRuID09PSAkLk9MKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJKSB7XG4gICAgICAgICAgICAgICAgbGlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkge1xuICAgICAgICAgICAgICAgIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDYpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJSKSB7XG4gICAgICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5FTSB8fCB0biA9PT0gJC5UVCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQklHKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRElSIHx8IHRuID09PSAkLkRJViB8fCB0biA9PT0gJC5OQVYgfHwgdG4gPT09ICQuUFJFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICAgICAgICAgIGJvZHlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZPUk0pIHtcbiAgICAgICAgICAgICAgICBmb3JtRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQ09ERSB8fCB0biA9PT0gJC5GT05UIHx8IHRuID09PSAkLk5PQlIpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NQUlOIHx8IHRuID09PSAkLk1FTlUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BU0lERSkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TTUFMTCkge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQ0VOVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRklHVVJFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRk9PVEVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEVBREVSIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSEdST1VQIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRElBTE9HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVCkge1xuICAgICAgICAgICAgICAgIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUUklLRSB8fCB0biA9PT0gJC5TVFJPTkcpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFERFJFU1MgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5BUlRJQ0xFIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuREVUQUlMUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNFQ1RJT04gfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5TVU1NQVJZIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuTElTVElOR1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BUlFVRUUpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkZJRUxEU0VUKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkxPQ0tRVU9URSB8fCB0biA9PT0gJC5GSUdDQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgZW9mSW5UZW1wbGF0ZShwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5zdG9wcGVkID0gdHJ1ZTtcbiAgICB9XG59XG5cbi8vIFRoZSBcInRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlNDUklQVCkge1xuICAgICAgICBwLnBlbmRpbmdTY3JpcHQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cblxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xufVxuXG5mdW5jdGlvbiBlb2ZJblRleHQocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIoRVJSLmVvZkluRWxlbWVudFRoYXRDYW5Db250YWluT25seVRleHQpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgY3VyVG4gPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZTtcblxuICAgIGlmIChjdXJUbiA9PT0gJC5UQUJMRSB8fCBjdXJUbiA9PT0gJC5UQk9EWSB8fCBjdXJUbiA9PT0gJC5URk9PVCB8fCBjdXJUbiA9PT0gJC5USEVBRCB8fCBjdXJUbiA9PT0gJC5UUikge1xuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMgPSBbXTtcbiAgICAgICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9URVhUX01PREU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NBUFRJT05fTU9ERTtcbn1cblxuZnVuY3Rpb24gY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xufVxuXG5mdW5jdGlvbiBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuQ09MR1JPVVApO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NPTFVNTl9HUk9VUF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG59XG5cbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLlRCT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKGlucHV0VHlwZSAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEUpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG5cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEggfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgICAgICAgICB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNUWUxFKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICAgICAgICAgIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU5QVVQpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DQVBUSU9OKSB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biAhPT0gJC5CT0RZICYmXG4gICAgICAgIHRuICE9PSAkLkNBUFRJT04gJiZcbiAgICAgICAgdG4gIT09ICQuQ09MICYmXG4gICAgICAgIHRuICE9PSAkLkNPTEdST1VQICYmXG4gICAgICAgIHRuICE9PSAkLkhUTUwgJiZcbiAgICAgICAgdG4gIT09ICQuVEJPRFkgJiZcbiAgICAgICAgdG4gIT09ICQuVEQgJiZcbiAgICAgICAgdG4gIT09ICQuVEZPT1QgJiZcbiAgICAgICAgdG4gIT09ICQuVEggJiZcbiAgICAgICAgdG4gIT09ICQuVEhFQUQgJiZcbiAgICAgICAgdG4gIT09ICQuVFJcbiAgICApIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUgPSBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQ7XG5cbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUodG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG5cbi8vIFRoZSBcImluIHRhYmxlIHRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9rZW5JblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIGxldCBpID0gMDtcblxuICAgIGlmIChwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHAuX2luc2VydENoYXJhY3RlcnMocC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGNhcHRpb25cIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5UUlxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHwgdG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgdG4gIT09ICQuQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5DT0wgJiZcbiAgICAgICAgdG4gIT09ICQuQ09MR1JPVVAgJiZcbiAgICAgICAgdG4gIT09ICQuSFRNTCAmJlxuICAgICAgICB0biAhPT0gJC5UQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5URCAmJlxuICAgICAgICB0biAhPT0gJC5URk9PVCAmJlxuICAgICAgICB0biAhPT0gJC5USCAmJlxuICAgICAgICB0biAhPT0gJC5USEVBRCAmJlxuICAgICAgICB0biAhPT0gJC5UUlxuICAgICkge1xuICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY29sdW1uIGdyb3VwXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5DT0wpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTCkge1xuICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGFibGUgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UUikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuVFIpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLkNPTCB8fFxuICAgICAgICB0biA9PT0gJC5DT0xHUk9VUCB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRFxuICAgICkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEggJiYgdG4gIT09ICQuVFIpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gcm93XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luUm93KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRIIHx8IHRuID09PSAkLlREKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9DRUxMX01PREU7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodG4gIT09ICQuQk9EWSAmJiB0biAhPT0gJC5DQVBUSU9OICYmIHRuICE9PSAkLkNPTCAmJiB0biAhPT0gJC5DT0xHUk9VUCkgfHxcbiAgICAgICAgKHRuICE9PSAkLkhUTUwgJiYgdG4gIT09ICQuVEQgJiYgdG4gIT09ICQuVEgpXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gY2VsbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNlbGwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5URCkgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEgpKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFIpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQICYmIHRuICE9PSAkLkhUTUwpIHtcbiAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbi8vIFRoZSBcImluIHNlbGVjdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVElPTikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5JTlBVVCB8fCB0biA9PT0gJC5LRVlHRU4gfHwgdG4gPT09ICQuVEVYVEFSRUEgfHwgdG4gPT09ICQuU0VMRUNUKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuXG4gICAgICAgICAgICBpZiAodG4gIT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU0NSSVBUIHx8IHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW3Aub3BlbkVsZW1lbnRzLnN0YWNrVG9wIC0gMV07XG4gICAgICAgIGNvbnN0IHByZXZPcGVuRWxlbWVudFRuID0gcHJldk9wZW5FbGVtZW50ICYmIHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwcmV2T3BlbkVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04gJiYgcHJldk9wZW5FbGVtZW50VG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZSgkLlNFTEVDVCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8xMi4yLjUuNC4xNyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gdGVtcGxhdGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChcbiAgICAgICAgdG4gPT09ICQuQkFTRSB8fFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkxJTksgfHxcbiAgICAgICAgdG4gPT09ICQuTUVUQSB8fFxuICAgICAgICB0biA9PT0gJC5OT0ZSQU1FUyB8fFxuICAgICAgICB0biA9PT0gJC5TQ1JJUFQgfHxcbiAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEVNUExBVEUgfHxcbiAgICAgICAgdG4gPT09ICQuVElUTEVcbiAgICApIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld0luc2VydGlvbk1vZGUgPSBURU1QTEFURV9JTlNFUlRJT05fTU9ERV9TV0lUQ0hfTUFQW3RuXSB8fCBJTl9CT0RZX01PREU7XG5cbiAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKG5ld0luc2VydGlvbk1vZGUpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0FGVEVSX0JPRFlfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5GUkFNRVNFVCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuRlJBTUVTRVQgJiYgIXAub3BlbkVsZW1lbnRzLmlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgIT09ICQuRlJBTUVTRVQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0ZSQU1FU0VUX01PREU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJhZnRlciBhZnRlciBmcmFtZXNldFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0ZSQU1FUykge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgcnVsZXMgZm9yIHBhcnNpbmcgdG9rZW5zIGluIGZvcmVpZ24gY29udGVudFxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG51bGxDaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgdG9rZW4uY2hhcnMgPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAoZm9yZWlnbkNvbnRlbnQuY2F1c2VzRXhpdCh0b2tlbikgJiYgIXAuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpICE9PSBOUy5IVE1MICYmXG4gICAgICAgICAgICAhcC5faXNJbnRlZ3JhdGlvblBvaW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROcyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TnMgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuXG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkudG9Mb3dlckNhc2UoKSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWFcblxudmFyIHByb3RvID0gU2NoZW1hLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLm5vcm1hbCA9IHt9XG5wcm90by5wcm9wZXJ0eSA9IHt9XG5cbmZ1bmN0aW9uIFNjaGVtYShwcm9wZXJ0eSwgbm9ybWFsLCBzcGFjZSkge1xuICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHlcbiAgdGhpcy5ub3JtYWwgPSBub3JtYWxcblxuICBpZiAoc3BhY2UpIHtcbiAgICB0aGlzLnNwYWNlID0gc3BhY2VcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuL3NjaGVtYScpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VcblxuZnVuY3Rpb24gbWVyZ2UoZGVmaW5pdGlvbnMpIHtcbiAgdmFyIGxlbmd0aCA9IGRlZmluaXRpb25zLmxlbmd0aFxuICB2YXIgcHJvcGVydHkgPSBbXVxuICB2YXIgbm9ybWFsID0gW11cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGluZm9cbiAgdmFyIHNwYWNlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpbmZvID0gZGVmaW5pdGlvbnNbaW5kZXhdXG4gICAgcHJvcGVydHkucHVzaChpbmZvLnByb3BlcnR5KVxuICAgIG5vcm1hbC5wdXNoKGluZm8ubm9ybWFsKVxuICAgIHNwYWNlID0gaW5mby5zcGFjZVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEoXG4gICAgeHRlbmQuYXBwbHkobnVsbCwgcHJvcGVydHkpLFxuICAgIHh0ZW5kLmFwcGx5KG51bGwsIG5vcm1hbCksXG4gICAgc3BhY2VcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gSW5mb1xuXG52YXIgcHJvdG8gPSBJbmZvLnByb3RvdHlwZVxuXG5wcm90by5zcGFjZSA9IG51bGxcbnByb3RvLmF0dHJpYnV0ZSA9IG51bGxcbnByb3RvLnByb3BlcnR5ID0gbnVsbFxucHJvdG8uYm9vbGVhbiA9IGZhbHNlXG5wcm90by5ib29sZWFuaXNoID0gZmFsc2VcbnByb3RvLm92ZXJsb2FkZWRCb29sZWFuID0gZmFsc2VcbnByb3RvLm51bWJlciA9IGZhbHNlXG5wcm90by5jb21tYVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5zcGFjZVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5jb21tYU9yU3BhY2VTZXBhcmF0ZWQgPSBmYWxzZVxucHJvdG8ubXVzdFVzZVByb3BlcnR5ID0gZmFsc2VcbnByb3RvLmRlZmluZWQgPSBmYWxzZVxuXG5mdW5jdGlvbiBJbmZvKHByb3BlcnR5LCBhdHRyaWJ1dGUpIHtcbiAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5XG4gIHRoaXMuYXR0cmlidXRlID0gYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHBvd2VycyA9IDBcblxuZXhwb3J0cy5ib29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMuYm9vbGVhbmlzaCA9IGluY3JlbWVudCgpXG5leHBvcnRzLm92ZXJsb2FkZWRCb29sZWFuID0gaW5jcmVtZW50KClcbmV4cG9ydHMubnVtYmVyID0gaW5jcmVtZW50KClcbmV4cG9ydHMuc3BhY2VTZXBhcmF0ZWQgPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5jb21tYVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5leHBvcnRzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5cbmZ1bmN0aW9uIGluY3JlbWVudCgpIHtcbiAgcmV0dXJuIE1hdGgucG93KDIsICsrcG93ZXJzKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBJbmZvID0gcmVxdWlyZSgnLi9pbmZvJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmluZWRJbmZvXG5cbkRlZmluZWRJbmZvLnByb3RvdHlwZSA9IG5ldyBJbmZvKClcbkRlZmluZWRJbmZvLnByb3RvdHlwZS5kZWZpbmVkID0gdHJ1ZVxuXG52YXIgY2hlY2tzID0gW1xuICAnYm9vbGVhbicsXG4gICdib29sZWFuaXNoJyxcbiAgJ292ZXJsb2FkZWRCb29sZWFuJyxcbiAgJ251bWJlcicsXG4gICdjb21tYVNlcGFyYXRlZCcsXG4gICdzcGFjZVNlcGFyYXRlZCcsXG4gICdjb21tYU9yU3BhY2VTZXBhcmF0ZWQnXG5dXG52YXIgY2hlY2tzTGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG5mdW5jdGlvbiBEZWZpbmVkSW5mbyhwcm9wZXJ0eSwgYXR0cmlidXRlLCBtYXNrLCBzcGFjZSkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgY2hlY2tcblxuICBtYXJrKHRoaXMsICdzcGFjZScsIHNwYWNlKVxuXG4gIEluZm8uY2FsbCh0aGlzLCBwcm9wZXJ0eSwgYXR0cmlidXRlKVxuXG4gIHdoaWxlICgrK2luZGV4IDwgY2hlY2tzTGVuZ3RoKSB7XG4gICAgY2hlY2sgPSBjaGVja3NbaW5kZXhdXG4gICAgbWFyayh0aGlzLCBjaGVjaywgKG1hc2sgJiB0eXBlc1tjaGVja10pID09PSB0eXBlc1tjaGVja10pXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFyayh2YWx1ZXMsIGtleSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgdmFsdWVzW2tleV0gPSB2YWx1ZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uLy4uL25vcm1hbGl6ZScpXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi9zY2hlbWEnKVxudmFyIERlZmluZWRJbmZvID0gcmVxdWlyZSgnLi9kZWZpbmVkLWluZm8nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG5mdW5jdGlvbiBjcmVhdGUoZGVmaW5pdGlvbikge1xuICB2YXIgc3BhY2UgPSBkZWZpbml0aW9uLnNwYWNlXG4gIHZhciBtdXN0VXNlUHJvcGVydHkgPSBkZWZpbml0aW9uLm11c3RVc2VQcm9wZXJ0eSB8fCBbXVxuICB2YXIgYXR0cmlidXRlcyA9IGRlZmluaXRpb24uYXR0cmlidXRlcyB8fCB7fVxuICB2YXIgcHJvcHMgPSBkZWZpbml0aW9uLnByb3BlcnRpZXNcbiAgdmFyIHRyYW5zZm9ybSA9IGRlZmluaXRpb24udHJhbnNmb3JtXG4gIHZhciBwcm9wZXJ0eSA9IHt9XG4gIHZhciBub3JtYWwgPSB7fVxuICB2YXIgcHJvcFxuICB2YXIgaW5mb1xuXG4gIGZvciAocHJvcCBpbiBwcm9wcykge1xuICAgIGluZm8gPSBuZXcgRGVmaW5lZEluZm8oXG4gICAgICBwcm9wLFxuICAgICAgdHJhbnNmb3JtKGF0dHJpYnV0ZXMsIHByb3ApLFxuICAgICAgcHJvcHNbcHJvcF0sXG4gICAgICBzcGFjZVxuICAgIClcblxuICAgIGlmIChtdXN0VXNlUHJvcGVydHkuaW5kZXhPZihwcm9wKSAhPT0gLTEpIHtcbiAgICAgIGluZm8ubXVzdFVzZVByb3BlcnR5ID0gdHJ1ZVxuICAgIH1cblxuICAgIHByb3BlcnR5W3Byb3BdID0gaW5mb1xuXG4gICAgbm9ybWFsW25vcm1hbGl6ZShwcm9wKV0gPSBwcm9wXG4gICAgbm9ybWFsW25vcm1hbGl6ZShpbmZvLmF0dHJpYnV0ZSldID0gcHJvcFxuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEocHJvcGVydHksIG5vcm1hbCwgc3BhY2UpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneGxpbmsnLFxuICB0cmFuc2Zvcm06IHhsaW5rVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeExpbmtBY3R1YXRlOiBudWxsLFxuICAgIHhMaW5rQXJjUm9sZTogbnVsbCxcbiAgICB4TGlua0hyZWY6IG51bGwsXG4gICAgeExpbmtSb2xlOiBudWxsLFxuICAgIHhMaW5rU2hvdzogbnVsbCxcbiAgICB4TGlua1RpdGxlOiBudWxsLFxuICAgIHhMaW5rVHlwZTogbnVsbFxuICB9XG59KVxuXG5mdW5jdGlvbiB4bGlua1RyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneGxpbms6JyArIHByb3Auc2xpY2UoNSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ3htbCcsXG4gIHRyYW5zZm9ybTogeG1sVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeG1sTGFuZzogbnVsbCxcbiAgICB4bWxCYXNlOiBudWxsLFxuICAgIHhtbFNwYWNlOiBudWxsXG4gIH1cbn0pXG5cbmZ1bmN0aW9uIHhtbFRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiAneG1sOicgKyBwcm9wLnNsaWNlKDMpLnRvTG93ZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm1cblxuZnVuY3Rpb24gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBhdHRyaWJ1dGUpIHtcbiAgcmV0dXJuIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzID8gYXR0cmlidXRlc1thdHRyaWJ1dGVdIDogYXR0cmlidXRlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2Nhc2Utc2Vuc2l0aXZlLXRyYW5zZm9ybScpXG5cbm1vZHVsZS5leHBvcnRzID0gY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtXG5cbmZ1bmN0aW9uIGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eSkge1xuICByZXR1cm4gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybShhdHRyaWJ1dGVzLCBwcm9wZXJ0eS50b0xvd2VyQ2FzZSgpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcbnZhciBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL3V0aWwvY2FzZS1pbnNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneG1sbnMnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgeG1sbnN4bGluazogJ3htbG5zOnhsaW5rJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgcHJvcGVydGllczoge1xuICAgIHhtbG5zOiBudWxsLFxuICAgIHhtbG5zWExpbms6IG51bGxcbiAgfVxufSlcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3V0aWwvdHlwZXMnKVxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG52YXIgYm9vbGVhbmlzaCA9IHR5cGVzLmJvb2xlYW5pc2hcbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgdHJhbnNmb3JtOiBhcmlhVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYXJpYUFjdGl2ZURlc2NlbmRhbnQ6IG51bGwsXG4gICAgYXJpYUF0b21pYzogYm9vbGVhbmlzaCxcbiAgICBhcmlhQXV0b0NvbXBsZXRlOiBudWxsLFxuICAgIGFyaWFCdXN5OiBib29sZWFuaXNoLFxuICAgIGFyaWFDaGVja2VkOiBib29sZWFuaXNoLFxuICAgIGFyaWFDb2xDb3VudDogbnVtYmVyLFxuICAgIGFyaWFDb2xJbmRleDogbnVtYmVyLFxuICAgIGFyaWFDb2xTcGFuOiBudW1iZXIsXG4gICAgYXJpYUNvbnRyb2xzOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhQ3VycmVudDogbnVsbCxcbiAgICBhcmlhRGVzY3JpYmVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFEZXRhaWxzOiBudWxsLFxuICAgIGFyaWFEaXNhYmxlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhRHJvcEVmZmVjdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUVycm9yTWVzc2FnZTogbnVsbCxcbiAgICBhcmlhRXhwYW5kZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUZsb3dUbzogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUdyYWJiZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUhhc1BvcHVwOiBudWxsLFxuICAgIGFyaWFIaWRkZW46IGJvb2xlYW5pc2gsXG4gICAgYXJpYUludmFsaWQ6IG51bGwsXG4gICAgYXJpYUtleVNob3J0Y3V0czogbnVsbCxcbiAgICBhcmlhTGFiZWw6IG51bGwsXG4gICAgYXJpYUxhYmVsbGVkQnk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFMZXZlbDogbnVtYmVyLFxuICAgIGFyaWFMaXZlOiBudWxsLFxuICAgIGFyaWFNb2RhbDogYm9vbGVhbmlzaCxcbiAgICBhcmlhTXVsdGlMaW5lOiBib29sZWFuaXNoLFxuICAgIGFyaWFNdWx0aVNlbGVjdGFibGU6IGJvb2xlYW5pc2gsXG4gICAgYXJpYU9yaWVudGF0aW9uOiBudWxsLFxuICAgIGFyaWFPd25zOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhUGxhY2Vob2xkZXI6IG51bGwsXG4gICAgYXJpYVBvc0luU2V0OiBudW1iZXIsXG4gICAgYXJpYVByZXNzZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJlYWRPbmx5OiBib29sZWFuaXNoLFxuICAgIGFyaWFSZWxldmFudDogbnVsbCxcbiAgICBhcmlhUmVxdWlyZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJvbGVEZXNjcmlwdGlvbjogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYVJvd0NvdW50OiBudW1iZXIsXG4gICAgYXJpYVJvd0luZGV4OiBudW1iZXIsXG4gICAgYXJpYVJvd1NwYW46IG51bWJlcixcbiAgICBhcmlhU2VsZWN0ZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVNldFNpemU6IG51bWJlcixcbiAgICBhcmlhU29ydDogbnVsbCxcbiAgICBhcmlhVmFsdWVNYXg6IG51bWJlcixcbiAgICBhcmlhVmFsdWVNaW46IG51bWJlcixcbiAgICBhcmlhVmFsdWVOb3c6IG51bWJlcixcbiAgICBhcmlhVmFsdWVUZXh0OiBudWxsLFxuICAgIHJvbGU6IG51bGxcbiAgfVxufSlcblxuZnVuY3Rpb24gYXJpYVRyYW5zZm9ybShfLCBwcm9wKSB7XG4gIHJldHVybiBwcm9wID09PSAncm9sZScgPyBwcm9wIDogJ2FyaWEtJyArIHByb3Auc2xpY2UoNCkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtID0gcmVxdWlyZSgnLi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtJylcblxudmFyIGJvb2xlYW4gPSB0eXBlcy5ib29sZWFuXG52YXIgb3ZlcmxvYWRlZEJvb2xlYW4gPSB0eXBlcy5vdmVybG9hZGVkQm9vbGVhblxudmFyIGJvb2xlYW5pc2ggPSB0eXBlcy5ib29sZWFuaXNoXG52YXIgbnVtYmVyID0gdHlwZXMubnVtYmVyXG52YXIgc3BhY2VTZXBhcmF0ZWQgPSB0eXBlcy5zcGFjZVNlcGFyYXRlZFxudmFyIGNvbW1hU2VwYXJhdGVkID0gdHlwZXMuY29tbWFTZXBhcmF0ZWRcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICBzcGFjZTogJ2h0bWwnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYWNjZXB0Y2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc25hbWU6ICdjbGFzcycsXG4gICAgaHRtbGZvcjogJ2ZvcicsXG4gICAgaHR0cGVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgdHJhbnNmb3JtOiBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIG11c3RVc2VQcm9wZXJ0eTogWydjaGVja2VkJywgJ211bHRpcGxlJywgJ211dGVkJywgJ3NlbGVjdGVkJ10sXG4gIHByb3BlcnRpZXM6IHtcbiAgICAvLyBTdGFuZGFyZCBQcm9wZXJ0aWVzLlxuICAgIGFiYnI6IG51bGwsXG4gICAgYWNjZXB0OiBjb21tYVNlcGFyYXRlZCxcbiAgICBhY2NlcHRDaGFyc2V0OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhY2Nlc3NLZXk6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFjdGlvbjogbnVsbCxcbiAgICBhbGxvdzogbnVsbCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IGJvb2xlYW4sXG4gICAgYWxsb3dQYXltZW50UmVxdWVzdDogYm9vbGVhbixcbiAgICBhbGxvd1VzZXJNZWRpYTogYm9vbGVhbixcbiAgICBhbHQ6IG51bGwsXG4gICAgYXM6IG51bGwsXG4gICAgYXN5bmM6IGJvb2xlYW4sXG4gICAgYXV0b0NhcGl0YWxpemU6IG51bGwsXG4gICAgYXV0b0NvbXBsZXRlOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhdXRvRm9jdXM6IGJvb2xlYW4sXG4gICAgYXV0b1BsYXk6IGJvb2xlYW4sXG4gICAgY2FwdHVyZTogYm9vbGVhbixcbiAgICBjaGFyU2V0OiBudWxsLFxuICAgIGNoZWNrZWQ6IGJvb2xlYW4sXG4gICAgY2l0ZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGNvbHM6IG51bWJlcixcbiAgICBjb2xTcGFuOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudEVkaXRhYmxlOiBib29sZWFuaXNoLFxuICAgIGNvbnRyb2xzOiBib29sZWFuLFxuICAgIGNvbnRyb2xzTGlzdDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY29vcmRzOiBudW1iZXIgfCBjb21tYVNlcGFyYXRlZCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBkYXRhOiBudWxsLFxuICAgIGRhdGVUaW1lOiBudWxsLFxuICAgIGRlY29kaW5nOiBudWxsLFxuICAgIGRlZmF1bHQ6IGJvb2xlYW4sXG4gICAgZGVmZXI6IGJvb2xlYW4sXG4gICAgZGlyOiBudWxsLFxuICAgIGRpck5hbWU6IG51bGwsXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgZG93bmxvYWQ6IG92ZXJsb2FkZWRCb29sZWFuLFxuICAgIGRyYWdnYWJsZTogYm9vbGVhbmlzaCxcbiAgICBlbmNUeXBlOiBudWxsLFxuICAgIGVudGVyS2V5SGludDogbnVsbCxcbiAgICBmb3JtOiBudWxsLFxuICAgIGZvcm1BY3Rpb246IG51bGwsXG4gICAgZm9ybUVuY1R5cGU6IG51bGwsXG4gICAgZm9ybU1ldGhvZDogbnVsbCxcbiAgICBmb3JtTm9WYWxpZGF0ZTogYm9vbGVhbixcbiAgICBmb3JtVGFyZ2V0OiBudWxsLFxuICAgIGhlYWRlcnM6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGhpZGRlbjogYm9vbGVhbixcbiAgICBoaWdoOiBudW1iZXIsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBodG1sRm9yOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBodHRwRXF1aXY6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGlkOiBudWxsLFxuICAgIGltYWdlU2l6ZXM6IG51bGwsXG4gICAgaW1hZ2VTcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGlucHV0TW9kZTogbnVsbCxcbiAgICBpbnRlZ3JpdHk6IG51bGwsXG4gICAgaXM6IG51bGwsXG4gICAgaXNNYXA6IGJvb2xlYW4sXG4gICAgaXRlbUlkOiBudWxsLFxuICAgIGl0ZW1Qcm9wOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtUmVmOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBpdGVtU2NvcGU6IGJvb2xlYW4sXG4gICAgaXRlbVR5cGU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGtpbmQ6IG51bGwsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsYW5ndWFnZTogbnVsbCxcbiAgICBsaXN0OiBudWxsLFxuICAgIGxvb3A6IGJvb2xlYW4sXG4gICAgbG93OiBudW1iZXIsXG4gICAgbWFuaWZlc3Q6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbWluTGVuZ3RoOiBudW1iZXIsXG4gICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgbXV0ZWQ6IGJvb2xlYW4sXG4gICAgbmFtZTogbnVsbCxcbiAgICBub25jZTogbnVsbCxcbiAgICBub01vZHVsZTogYm9vbGVhbixcbiAgICBub1ZhbGlkYXRlOiBib29sZWFuLFxuICAgIG9uQWJvcnQ6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQXV4Q2xpY2s6IG51bGwsXG4gICAgb25CZWZvcmVQcmludDogbnVsbCxcbiAgICBvbkJlZm9yZVVubG9hZDogbnVsbCxcbiAgICBvbkJsdXI6IG51bGwsXG4gICAgb25DYW5jZWw6IG51bGwsXG4gICAgb25DYW5QbGF5OiBudWxsLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6IG51bGwsXG4gICAgb25DaGFuZ2U6IG51bGwsXG4gICAgb25DbGljazogbnVsbCxcbiAgICBvbkNsb3NlOiBudWxsLFxuICAgIG9uQ29udGV4dE1lbnU6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9ybURhdGE6IG51bGwsXG4gICAgb25IYXNoQ2hhbmdlOiBudWxsLFxuICAgIG9uSW5wdXQ6IG51bGwsXG4gICAgb25JbnZhbGlkOiBudWxsLFxuICAgIG9uS2V5RG93bjogbnVsbCxcbiAgICBvbktleVByZXNzOiBudWxsLFxuICAgIG9uS2V5VXA6IG51bGwsXG4gICAgb25MYW5ndWFnZUNoYW5nZTogbnVsbCxcbiAgICBvbkxvYWQ6IG51bGwsXG4gICAgb25Mb2FkZWREYXRhOiBudWxsLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6IG51bGwsXG4gICAgb25Mb2FkRW5kOiBudWxsLFxuICAgIG9uTG9hZFN0YXJ0OiBudWxsLFxuICAgIG9uTWVzc2FnZTogbnVsbCxcbiAgICBvbk1lc3NhZ2VFcnJvcjogbnVsbCxcbiAgICBvbk1vdXNlRG93bjogbnVsbCxcbiAgICBvbk1vdXNlRW50ZXI6IG51bGwsXG4gICAgb25Nb3VzZUxlYXZlOiBudWxsLFxuICAgIG9uTW91c2VNb3ZlOiBudWxsLFxuICAgIG9uTW91c2VPdXQ6IG51bGwsXG4gICAgb25Nb3VzZU92ZXI6IG51bGwsXG4gICAgb25Nb3VzZVVwOiBudWxsLFxuICAgIG9uT2ZmbGluZTogbnVsbCxcbiAgICBvbk9ubGluZTogbnVsbCxcbiAgICBvblBhZ2VIaWRlOiBudWxsLFxuICAgIG9uUGFnZVNob3c6IG51bGwsXG4gICAgb25QYXN0ZTogbnVsbCxcbiAgICBvblBhdXNlOiBudWxsLFxuICAgIG9uUGxheTogbnVsbCxcbiAgICBvblBsYXlpbmc6IG51bGwsXG4gICAgb25Qb3BTdGF0ZTogbnVsbCxcbiAgICBvblByb2dyZXNzOiBudWxsLFxuICAgIG9uUmF0ZUNoYW5nZTogbnVsbCxcbiAgICBvblJlamVjdGlvbkhhbmRsZWQ6IG51bGwsXG4gICAgb25SZXNldDogbnVsbCxcbiAgICBvblJlc2l6ZTogbnVsbCxcbiAgICBvblNjcm9sbDogbnVsbCxcbiAgICBvblNlY3VyaXR5UG9saWN5VmlvbGF0aW9uOiBudWxsLFxuICAgIG9uU2Vla2VkOiBudWxsLFxuICAgIG9uU2Vla2luZzogbnVsbCxcbiAgICBvblNlbGVjdDogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmhhbmRsZWRSZWplY3Rpb246IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uV2hlZWw6IG51bGwsXG4gICAgb3BlbjogYm9vbGVhbixcbiAgICBvcHRpbXVtOiBudW1iZXIsXG4gICAgcGF0dGVybjogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwbGFjZWhvbGRlcjogbnVsbCxcbiAgICBwbGF5c0lubGluZTogYm9vbGVhbixcbiAgICBwb3N0ZXI6IG51bGwsXG4gICAgcHJlbG9hZDogbnVsbCxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWw6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkOiBib29sZWFuLFxuICAgIHJldmVyc2VkOiBib29sZWFuLFxuICAgIHJvd3M6IG51bWJlcixcbiAgICByb3dTcGFuOiBudW1iZXIsXG4gICAgc2FuZGJveDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgc2NvcGVkOiBib29sZWFuLFxuICAgIHNlYW1sZXNzOiBib29sZWFuLFxuICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgIHNoYXBlOiBudWxsLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzaXplczogbnVsbCxcbiAgICBzbG90OiBudWxsLFxuICAgIHNwYW46IG51bWJlcixcbiAgICBzcGVsbENoZWNrOiBib29sZWFuaXNoLFxuICAgIHNyYzogbnVsbCxcbiAgICBzcmNEb2M6IG51bGwsXG4gICAgc3JjTGFuZzogbnVsbCxcbiAgICBzcmNTZXQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2xhdGU6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlTXVzdE1hdGNoOiBib29sZWFuLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogYm9vbGVhbmlzaCxcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHdyYXA6IG51bGwsXG5cbiAgICAvLyBMZWdhY3kuXG4gICAgLy8gU2VlOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNvdGhlci1lbGVtZW50cywtYXR0cmlidXRlcy1hbmQtYXBpc1xuICAgIGFsaWduOiBudWxsLCAvLyBTZXZlcmFsLiBVc2UgQ1NTIGB0ZXh0LWFsaWduYCBpbnN0ZWFkLFxuICAgIGFMaW5rOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYTphY3RpdmUge2NvbG9yfWAgaW5zdGVhZFxuICAgIGFyY2hpdmU6IHNwYWNlU2VwYXJhdGVkLCAvLyBgPG9iamVjdD5gLiBMaXN0IG9mIFVSSXMgdG8gYXJjaGl2ZXNcbiAgICBheGlzOiBudWxsLCAvLyBgPHRkPmAgYW5kIGA8dGg+YC4gVXNlIGBzY29wZWAgb24gYDx0aD5gXG4gICAgYmFja2dyb3VuZDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGJhY2tncm91bmQtaW1hZ2VgIGluc3RlYWRcbiAgICBiZ0NvbG9yOiBudWxsLCAvLyBgPGJvZHk+YCBhbmQgdGFibGUgZWxlbWVudHMuIFVzZSBDU1MgYGJhY2tncm91bmQtY29sb3JgIGluc3RlYWRcbiAgICBib3JkZXI6IG51bWJlciwgLy8gYDx0YWJsZT5gLiBVc2UgQ1NTIGBib3JkZXItd2lkdGhgIGluc3RlYWQsXG4gICAgYm9yZGVyQ29sb3I6IG51bGwsIC8vIGA8dGFibGU+YC4gVXNlIENTUyBgYm9yZGVyLWNvbG9yYCBpbnN0ZWFkLFxuICAgIGJvdHRvbU1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIGNlbGxQYWRkaW5nOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBjZWxsU3BhY2luZzogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgY2hhcjogbnVsbCwgLy8gU2V2ZXJhbCB0YWJsZSBlbGVtZW50cy4gV2hlbiBgYWxpZ249Y2hhcmAsIHNldHMgdGhlIGNoYXJhY3RlciB0byBhbGlnbiBvblxuICAgIGNoYXJPZmY6IG51bGwsIC8vIFNldmVyYWwgdGFibGUgZWxlbWVudHMuIFdoZW4gYGNoYXJgLCBvZmZzZXRzIHRoZSBhbGlnbm1lbnRcbiAgICBjbGFzc0lkOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY2xlYXI6IG51bGwsIC8vIGA8YnI+YC4gVXNlIENTUyBgY2xlYXJgIGluc3RlYWRcbiAgICBjb2RlOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY29kZUJhc2U6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjb2RlVHlwZTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNvbG9yOiBudWxsLCAvLyBgPGZvbnQ+YCBhbmQgYDxocj5gLiBVc2UgQ1NTIGluc3RlYWRcbiAgICBjb21wYWN0OiBib29sZWFuLCAvLyBMaXN0cy4gVXNlIENTUyB0byByZWR1Y2Ugc3BhY2UgYmV0d2VlbiBpdGVtcyBpbnN0ZWFkXG4gICAgZGVjbGFyZTogYm9vbGVhbiwgLy8gYDxvYmplY3Q+YFxuICAgIGV2ZW50OiBudWxsLCAvLyBgPHNjcmlwdD5gXG4gICAgZmFjZTogbnVsbCwgLy8gYDxmb250PmAuIFVzZSBDU1MgaW5zdGVhZFxuICAgIGZyYW1lOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBmcmFtZUJvcmRlcjogbnVsbCwgLy8gYDxpZnJhbWU+YC4gVXNlIENTUyBgYm9yZGVyYCBpbnN0ZWFkXG4gICAgaFNwYWNlOiBudW1iZXIsIC8vIGA8aW1nPmAgYW5kIGA8b2JqZWN0PmBcbiAgICBsZWZ0TWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgbGluazogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGE6bGluayB7Y29sb3I6ICp9YCBpbnN0ZWFkXG4gICAgbG9uZ0Rlc2M6IG51bGwsIC8vIGA8ZnJhbWU+YCwgYDxpZnJhbWU+YCwgYW5kIGA8aW1nPmAuIFVzZSBhbiBgPGE+YFxuICAgIGxvd1NyYzogbnVsbCwgLy8gYDxpbWc+YC4gVXNlIGEgYDxwaWN0dXJlPmBcbiAgICBtYXJnaW5IZWlnaHQ6IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBtYXJnaW5XaWR0aDogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIG5vUmVzaXplOiBib29sZWFuLCAvLyBgPGZyYW1lPmBcbiAgICBub0hyZWY6IGJvb2xlYW4sIC8vIGA8YXJlYT5gLiBVc2Ugbm8gaHJlZiBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGBub2hyZWZgXG4gICAgbm9TaGFkZTogYm9vbGVhbiwgLy8gYDxocj5gLiBVc2UgYmFja2dyb3VuZC1jb2xvciBhbmQgaGVpZ2h0IGluc3RlYWQgb2YgYm9yZGVyc1xuICAgIG5vV3JhcDogYm9vbGVhbiwgLy8gYDx0ZD5gIGFuZCBgPHRoPmBcbiAgICBvYmplY3Q6IG51bGwsIC8vIGA8YXBwbGV0PmBcbiAgICBwcm9maWxlOiBudWxsLCAvLyBgPGhlYWQ+YFxuICAgIHByb21wdDogbnVsbCwgLy8gYDxpc2luZGV4PmBcbiAgICByZXY6IG51bGwsIC8vIGA8bGluaz5gXG4gICAgcmlnaHRNYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBydWxlczogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgc2NoZW1lOiBudWxsLCAvLyBgPG1ldGE+YFxuICAgIHNjcm9sbGluZzogYm9vbGVhbmlzaCwgLy8gYDxmcmFtZT5gLiBVc2Ugb3ZlcmZsb3cgaW4gdGhlIGNoaWxkIGNvbnRleHRcbiAgICBzdGFuZGJ5OiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgc3VtbWFyeTogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgdGV4dDogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGNvbG9yYCBpbnN0ZWFkXG4gICAgdG9wTWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgdmFsdWVUeXBlOiBudWxsLCAvLyBgPHBhcmFtPmBcbiAgICB2ZXJzaW9uOiBudWxsLCAvLyBgPGh0bWw+YC4gVXNlIGEgZG9jdHlwZS5cbiAgICB2QWxpZ246IG51bGwsIC8vIFNldmVyYWwuIFVzZSBDU1MgYHZlcnRpY2FsLWFsaWduYCBpbnN0ZWFkXG4gICAgdkxpbms6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBhOnZpc2l0ZWQge2NvbG9yfWAgaW5zdGVhZFxuICAgIHZTcGFjZTogbnVtYmVyLCAvLyBgPGltZz5gIGFuZCBgPG9iamVjdD5gXG5cbiAgICAvLyBOb24tc3RhbmRhcmQgUHJvcGVydGllcy5cbiAgICBhbGxvd1RyYW5zcGFyZW5jeTogbnVsbCxcbiAgICBhdXRvQ29ycmVjdDogbnVsbCxcbiAgICBhdXRvU2F2ZTogbnVsbCxcbiAgICBkaXNhYmxlUGljdHVyZUluUGljdHVyZTogYm9vbGVhbixcbiAgICBwcmVmaXg6IG51bGwsXG4gICAgcHJvcGVydHk6IG51bGwsXG4gICAgcmVzdWx0czogbnVtYmVyLFxuICAgIHNlY3VyaXR5OiBudWxsLFxuICAgIHVuc2VsZWN0YWJsZTogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIGh0bWwgPSByZXF1aXJlKCcuL2xpYi9odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZShbeG1sLCB4bGluaywgeG1sbnMsIGFyaWEsIGh0bWxdKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG52YXIgY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vdXRpbC9jYXNlLXNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG52YXIgYm9vbGVhbiA9IHR5cGVzLmJvb2xlYW5cbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG52YXIgY29tbWFTZXBhcmF0ZWQgPSB0eXBlcy5jb21tYVNlcGFyYXRlZFxudmFyIGNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IHR5cGVzLmNvbW1hT3JTcGFjZVNlcGFyYXRlZFxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAnc3ZnJyxcbiAgYXR0cmlidXRlczoge1xuICAgIGFjY2VudEhlaWdodDogJ2FjY2VudC1oZWlnaHQnLFxuICAgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJyxcbiAgICBhcmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLFxuICAgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gICAgY2FwSGVpZ2h0OiAnY2FwLWhlaWdodCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJyxcbiAgICBjbGlwUnVsZTogJ2NsaXAtcnVsZScsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29sb3ItaW50ZXJwb2xhdGlvbicsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycsXG4gICAgY29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsXG4gICAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuICAgIGNyb3NzT3JpZ2luOiAnY3Jvc3NvcmlnaW4nLFxuICAgIGRhdGFUeXBlOiAnZGF0YXR5cGUnLFxuICAgIGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsXG4gICAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgZmlsbFJ1bGU6ICdmaWxsLXJ1bGUnLFxuICAgIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsXG4gICAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0JyxcbiAgICBmb250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gICAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gICAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuICAgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4gICAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJyxcbiAgICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gICAgaHJlZkxhbmc6ICdocmVmbGFuZycsXG4gICAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLFxuICAgIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14JyxcbiAgICBob3Jpek9yaWdpblk6ICdob3Jpei1vcmlnaW4teScsXG4gICAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG4gICAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcbiAgICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcbiAgICBtYXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG4gICAgbmF2RG93bjogJ25hdi1kb3duJyxcbiAgICBuYXZEb3duTGVmdDogJ25hdi1kb3duLWxlZnQnLFxuICAgIG5hdkRvd25SaWdodDogJ25hdi1kb3duLXJpZ2h0JyxcbiAgICBuYXZMZWZ0OiAnbmF2LWxlZnQnLFxuICAgIG5hdk5leHQ6ICduYXYtbmV4dCcsXG4gICAgbmF2UHJldjogJ25hdi1wcmV2JyxcbiAgICBuYXZSaWdodDogJ25hdi1yaWdodCcsXG4gICAgbmF2VXA6ICduYXYtdXAnLFxuICAgIG5hdlVwTGVmdDogJ25hdi11cC1sZWZ0JyxcbiAgICBuYXZVcFJpZ2h0OiAnbmF2LXVwLXJpZ2h0JyxcbiAgICBvbkFib3J0OiAnb25hYm9ydCcsXG4gICAgb25BY3RpdmF0ZTogJ29uYWN0aXZhdGUnLFxuICAgIG9uQWZ0ZXJQcmludDogJ29uYWZ0ZXJwcmludCcsXG4gICAgb25CZWZvcmVQcmludDogJ29uYmVmb3JlcHJpbnQnLFxuICAgIG9uQmVnaW46ICdvbmJlZ2luJyxcbiAgICBvbkNhbmNlbDogJ29uY2FuY2VsJyxcbiAgICBvbkNhblBsYXk6ICdvbmNhbnBsYXknLFxuICAgIG9uQ2FuUGxheVRocm91Z2g6ICdvbmNhbnBsYXl0aHJvdWdoJyxcbiAgICBvbkNoYW5nZTogJ29uY2hhbmdlJyxcbiAgICBvbkNsaWNrOiAnb25jbGljaycsXG4gICAgb25DbG9zZTogJ29uY2xvc2UnLFxuICAgIG9uQ29weTogJ29uY29weScsXG4gICAgb25DdWVDaGFuZ2U6ICdvbmN1ZWNoYW5nZScsXG4gICAgb25DdXQ6ICdvbmN1dCcsXG4gICAgb25EYmxDbGljazogJ29uZGJsY2xpY2snLFxuICAgIG9uRHJhZzogJ29uZHJhZycsXG4gICAgb25EcmFnRW5kOiAnb25kcmFnZW5kJyxcbiAgICBvbkRyYWdFbnRlcjogJ29uZHJhZ2VudGVyJyxcbiAgICBvbkRyYWdFeGl0OiAnb25kcmFnZXhpdCcsXG4gICAgb25EcmFnTGVhdmU6ICdvbmRyYWdsZWF2ZScsXG4gICAgb25EcmFnT3ZlcjogJ29uZHJhZ292ZXInLFxuICAgIG9uRHJhZ1N0YXJ0OiAnb25kcmFnc3RhcnQnLFxuICAgIG9uRHJvcDogJ29uZHJvcCcsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogJ29uZHVyYXRpb25jaGFuZ2UnLFxuICAgIG9uRW1wdGllZDogJ29uZW1wdGllZCcsXG4gICAgb25FbmQ6ICdvbmVuZCcsXG4gICAgb25FbmRlZDogJ29uZW5kZWQnLFxuICAgIG9uRXJyb3I6ICdvbmVycm9yJyxcbiAgICBvbkZvY3VzOiAnb25mb2N1cycsXG4gICAgb25Gb2N1c0luOiAnb25mb2N1c2luJyxcbiAgICBvbkZvY3VzT3V0OiAnb25mb2N1c291dCcsXG4gICAgb25IYXNoQ2hhbmdlOiAnb25oYXNoY2hhbmdlJyxcbiAgICBvbklucHV0OiAnb25pbnB1dCcsXG4gICAgb25JbnZhbGlkOiAnb25pbnZhbGlkJyxcbiAgICBvbktleURvd246ICdvbmtleWRvd24nLFxuICAgIG9uS2V5UHJlc3M6ICdvbmtleXByZXNzJyxcbiAgICBvbktleVVwOiAnb25rZXl1cCcsXG4gICAgb25Mb2FkOiAnb25sb2FkJyxcbiAgICBvbkxvYWRlZERhdGE6ICdvbmxvYWRlZGRhdGEnLFxuICAgIG9uTG9hZGVkTWV0YWRhdGE6ICdvbmxvYWRlZG1ldGFkYXRhJyxcbiAgICBvbkxvYWRTdGFydDogJ29ubG9hZHN0YXJ0JyxcbiAgICBvbk1lc3NhZ2U6ICdvbm1lc3NhZ2UnLFxuICAgIG9uTW91c2VEb3duOiAnb25tb3VzZWRvd24nLFxuICAgIG9uTW91c2VFbnRlcjogJ29ubW91c2VlbnRlcicsXG4gICAgb25Nb3VzZUxlYXZlOiAnb25tb3VzZWxlYXZlJyxcbiAgICBvbk1vdXNlTW92ZTogJ29ubW91c2Vtb3ZlJyxcbiAgICBvbk1vdXNlT3V0OiAnb25tb3VzZW91dCcsXG4gICAgb25Nb3VzZU92ZXI6ICdvbm1vdXNlb3ZlcicsXG4gICAgb25Nb3VzZVVwOiAnb25tb3VzZXVwJyxcbiAgICBvbk1vdXNlV2hlZWw6ICdvbm1vdXNld2hlZWwnLFxuICAgIG9uT2ZmbGluZTogJ29ub2ZmbGluZScsXG4gICAgb25PbmxpbmU6ICdvbm9ubGluZScsXG4gICAgb25QYWdlSGlkZTogJ29ucGFnZWhpZGUnLFxuICAgIG9uUGFnZVNob3c6ICdvbnBhZ2VzaG93JyxcbiAgICBvblBhc3RlOiAnb25wYXN0ZScsXG4gICAgb25QYXVzZTogJ29ucGF1c2UnLFxuICAgIG9uUGxheTogJ29ucGxheScsXG4gICAgb25QbGF5aW5nOiAnb25wbGF5aW5nJyxcbiAgICBvblBvcFN0YXRlOiAnb25wb3BzdGF0ZScsXG4gICAgb25Qcm9ncmVzczogJ29ucHJvZ3Jlc3MnLFxuICAgIG9uUmF0ZUNoYW5nZTogJ29ucmF0ZWNoYW5nZScsXG4gICAgb25SZXBlYXQ6ICdvbnJlcGVhdCcsXG4gICAgb25SZXNldDogJ29ucmVzZXQnLFxuICAgIG9uUmVzaXplOiAnb25yZXNpemUnLFxuICAgIG9uU2Nyb2xsOiAnb25zY3JvbGwnLFxuICAgIG9uU2Vla2VkOiAnb25zZWVrZWQnLFxuICAgIG9uU2Vla2luZzogJ29uc2Vla2luZycsXG4gICAgb25TZWxlY3Q6ICdvbnNlbGVjdCcsXG4gICAgb25TaG93OiAnb25zaG93JyxcbiAgICBvblN0YWxsZWQ6ICdvbnN0YWxsZWQnLFxuICAgIG9uU3RvcmFnZTogJ29uc3RvcmFnZScsXG4gICAgb25TdWJtaXQ6ICdvbnN1Ym1pdCcsXG4gICAgb25TdXNwZW5kOiAnb25zdXNwZW5kJyxcbiAgICBvblRpbWVVcGRhdGU6ICdvbnRpbWV1cGRhdGUnLFxuICAgIG9uVG9nZ2xlOiAnb250b2dnbGUnLFxuICAgIG9uVW5sb2FkOiAnb251bmxvYWQnLFxuICAgIG9uVm9sdW1lQ2hhbmdlOiAnb252b2x1bWVjaGFuZ2UnLFxuICAgIG9uV2FpdGluZzogJ29ud2FpdGluZycsXG4gICAgb25ab29tOiAnb256b29tJyxcbiAgICBvdmVybGluZVBvc2l0aW9uOiAnb3ZlcmxpbmUtcG9zaXRpb24nLFxuICAgIG92ZXJsaW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAgICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICAgIHBhbm9zZTE6ICdwYW5vc2UtMScsXG4gICAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcbiAgICByZWZlcnJlclBvbGljeTogJ3JlZmVycmVycG9saWN5JyxcbiAgICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JyxcbiAgICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gICAgc3RvcENvbG9yOiAnc3RvcC1jb2xvcicsXG4gICAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nLFxuICAgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcycsXG4gICAgc3Ryb2tlRGFzaEFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG4gICAgc3Ryb2tlRGFzaE9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgICBzdHJva2VMaW5lQ2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuICAgIHN0cm9rZUxpbmVKb2luOiAnc3Ryb2tlLWxpbmVqb2luJyxcbiAgICBzdHJva2VNaXRlckxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuICAgIHRhYkluZGV4OiAndGFiaW5kZXgnLFxuICAgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicsXG4gICAgdGV4dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuICAgIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsXG4gICAgdHlwZU9mOiAndHlwZW9mJyxcbiAgICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbicsXG4gICAgdW5kZXJsaW5lVGhpY2tuZXNzOiAndW5kZXJsaW5lLXRoaWNrbmVzcycsXG4gICAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICAgIHVuaWNvZGVSYW5nZTogJ3VuaWNvZGUtcmFuZ2UnLFxuICAgIHVuaXRzUGVyRW06ICd1bml0cy1wZXItZW0nLFxuICAgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsXG4gICAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG4gICAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJyxcbiAgICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0JyxcbiAgICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLFxuICAgIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4gICAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAgICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsXG4gICAgd3JpdGluZ01vZGU6ICd3cml0aW5nLW1vZGUnLFxuICAgIHhIZWlnaHQ6ICd4LWhlaWdodCcsXG4gICAgLy8gVGhlc2Ugd2VyZSBjYW1lbGNhc2VkIGluIFRpbnkuIE5vdyBsb3dlcmNhc2VkIGluIFNWRyAyXG4gICAgcGxheWJhY2tPcmRlcjogJ3BsYXliYWNrb3JkZXInLFxuICAgIHRpbWVsaW5lQmVnaW46ICd0aW1lbGluZWJlZ2luJ1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VTZW5zaXRpdmVUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBhYm91dDogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIGFjY2VudEhlaWdodDogbnVtYmVyLFxuICAgIGFjY3VtdWxhdGU6IG51bGwsXG4gICAgYWRkaXRpdmU6IG51bGwsXG4gICAgYWxpZ25tZW50QmFzZWxpbmU6IG51bGwsXG4gICAgYWxwaGFiZXRpYzogbnVtYmVyLFxuICAgIGFtcGxpdHVkZTogbnVtYmVyLFxuICAgIGFyYWJpY0Zvcm06IG51bGwsXG4gICAgYXNjZW50OiBudW1iZXIsXG4gICAgYXR0cmlidXRlTmFtZTogbnVsbCxcbiAgICBhdHRyaWJ1dGVUeXBlOiBudWxsLFxuICAgIGF6aW11dGg6IG51bWJlcixcbiAgICBiYW5kd2lkdGg6IG51bGwsXG4gICAgYmFzZWxpbmVTaGlmdDogbnVsbCxcbiAgICBiYXNlRnJlcXVlbmN5OiBudWxsLFxuICAgIGJhc2VQcm9maWxlOiBudWxsLFxuICAgIGJib3g6IG51bGwsXG4gICAgYmVnaW46IG51bGwsXG4gICAgYmlhczogbnVtYmVyLFxuICAgIGJ5OiBudWxsLFxuICAgIGNhbGNNb2RlOiBudWxsLFxuICAgIGNhcEhlaWdodDogbnVtYmVyLFxuICAgIGNsYXNzTmFtZTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY2xpcDogbnVsbCxcbiAgICBjbGlwUGF0aDogbnVsbCxcbiAgICBjbGlwUGF0aFVuaXRzOiBudWxsLFxuICAgIGNsaXBSdWxlOiBudWxsLFxuICAgIGNvbG9yOiBudWxsLFxuICAgIGNvbG9ySW50ZXJwb2xhdGlvbjogbnVsbCxcbiAgICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiBudWxsLFxuICAgIGNvbG9yUHJvZmlsZTogbnVsbCxcbiAgICBjb2xvclJlbmRlcmluZzogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGNvbnRlbnRTY3JpcHRUeXBlOiBudWxsLFxuICAgIGNvbnRlbnRTdHlsZVR5cGU6IG51bGwsXG4gICAgY3Jvc3NPcmlnaW46IG51bGwsXG4gICAgY3Vyc29yOiBudWxsLFxuICAgIGN4OiBudWxsLFxuICAgIGN5OiBudWxsLFxuICAgIGQ6IG51bGwsXG4gICAgZGF0YVR5cGU6IG51bGwsXG4gICAgZGVmYXVsdEFjdGlvbjogbnVsbCxcbiAgICBkZXNjZW50OiBudW1iZXIsXG4gICAgZGlmZnVzZUNvbnN0YW50OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiBudWxsLFxuICAgIGRpc3BsYXk6IG51bGwsXG4gICAgZHVyOiBudWxsLFxuICAgIGRpdmlzb3I6IG51bWJlcixcbiAgICBkb21pbmFudEJhc2VsaW5lOiBudWxsLFxuICAgIGRvd25sb2FkOiBib29sZWFuLFxuICAgIGR4OiBudWxsLFxuICAgIGR5OiBudWxsLFxuICAgIGVkZ2VNb2RlOiBudWxsLFxuICAgIGVkaXRhYmxlOiBudWxsLFxuICAgIGVsZXZhdGlvbjogbnVtYmVyLFxuICAgIGVuYWJsZUJhY2tncm91bmQ6IG51bGwsXG4gICAgZW5kOiBudWxsLFxuICAgIGV2ZW50OiBudWxsLFxuICAgIGV4cG9uZW50OiBudW1iZXIsXG4gICAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogbnVsbCxcbiAgICBmaWxsOiBudWxsLFxuICAgIGZpbGxPcGFjaXR5OiBudW1iZXIsXG4gICAgZmlsbFJ1bGU6IG51bGwsXG4gICAgZmlsdGVyOiBudWxsLFxuICAgIGZpbHRlclJlczogbnVsbCxcbiAgICBmaWx0ZXJVbml0czogbnVsbCxcbiAgICBmbG9vZENvbG9yOiBudWxsLFxuICAgIGZsb29kT3BhY2l0eTogbnVsbCxcbiAgICBmb2N1c2FibGU6IG51bGwsXG4gICAgZm9jdXNIaWdobGlnaHQ6IG51bGwsXG4gICAgZm9udEZhbWlseTogbnVsbCxcbiAgICBmb250U2l6ZTogbnVsbCxcbiAgICBmb250U2l6ZUFkanVzdDogbnVsbCxcbiAgICBmb250U3RyZXRjaDogbnVsbCxcbiAgICBmb250U3R5bGU6IG51bGwsXG4gICAgZm9udFZhcmlhbnQ6IG51bGwsXG4gICAgZm9udFdlaWdodDogbnVsbCxcbiAgICBmb3JtYXQ6IG51bGwsXG4gICAgZnI6IG51bGwsXG4gICAgZnJvbTogbnVsbCxcbiAgICBmeDogbnVsbCxcbiAgICBmeTogbnVsbCxcbiAgICBnMTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZzI6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGdseXBoTmFtZTogY29tbWFTZXBhcmF0ZWQsXG4gICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6IG51bGwsXG4gICAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiBudWxsLFxuICAgIGdseXBoUmVmOiBudWxsLFxuICAgIGdyYWRpZW50VHJhbnNmb3JtOiBudWxsLFxuICAgIGdyYWRpZW50VW5pdHM6IG51bGwsXG4gICAgaGFuZGxlcjogbnVsbCxcbiAgICBoYW5naW5nOiBudW1iZXIsXG4gICAgaGF0Y2hDb250ZW50VW5pdHM6IG51bGwsXG4gICAgaGF0Y2hVbml0czogbnVsbCxcbiAgICBoZWlnaHQ6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBob3JpekFkdlg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblg6IG51bWJlcixcbiAgICBob3Jpek9yaWdpblk6IG51bWJlcixcbiAgICBpZDogbnVsbCxcbiAgICBpZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIGltYWdlUmVuZGVyaW5nOiBudWxsLFxuICAgIGluaXRpYWxWaXNpYmlsaXR5OiBudWxsLFxuICAgIGluOiBudWxsLFxuICAgIGluMjogbnVsbCxcbiAgICBpbnRlcmNlcHQ6IG51bWJlcixcbiAgICBrOiBudW1iZXIsXG4gICAgazE6IG51bWJlcixcbiAgICBrMjogbnVtYmVyLFxuICAgIGszOiBudW1iZXIsXG4gICAgazQ6IG51bWJlcixcbiAgICBrZXJuZWxNYXRyaXg6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBrZXJuZWxVbml0TGVuZ3RoOiBudWxsLFxuICAgIGtleVBvaW50czogbnVsbCwgLy8gU0VNSV9DT0xPTl9TRVBBUkFURURcbiAgICBrZXlTcGxpbmVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtleVRpbWVzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtlcm5pbmc6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsZW5ndGhBZGp1c3Q6IG51bGwsXG4gICAgbGV0dGVyU3BhY2luZzogbnVsbCxcbiAgICBsaWdodGluZ0NvbG9yOiBudWxsLFxuICAgIGxpbWl0aW5nQ29uZUFuZ2xlOiBudW1iZXIsXG4gICAgbG9jYWw6IG51bGwsXG4gICAgbWFya2VyRW5kOiBudWxsLFxuICAgIG1hcmtlck1pZDogbnVsbCxcbiAgICBtYXJrZXJTdGFydDogbnVsbCxcbiAgICBtYXJrZXJIZWlnaHQ6IG51bGwsXG4gICAgbWFya2VyVW5pdHM6IG51bGwsXG4gICAgbWFya2VyV2lkdGg6IG51bGwsXG4gICAgbWFzazogbnVsbCxcbiAgICBtYXNrQ29udGVudFVuaXRzOiBudWxsLFxuICAgIG1hc2tVbml0czogbnVsbCxcbiAgICBtYXRoZW1hdGljYWw6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1lZGlhOiBudWxsLFxuICAgIG1lZGlhQ2hhcmFjdGVyRW5jb2Rpbmc6IG51bGwsXG4gICAgbWVkaWFDb250ZW50RW5jb2RpbmdzOiBudWxsLFxuICAgIG1lZGlhU2l6ZTogbnVtYmVyLFxuICAgIG1lZGlhVGltZTogbnVsbCxcbiAgICBtZXRob2Q6IG51bGwsXG4gICAgbWluOiBudWxsLFxuICAgIG1vZGU6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBuYXZEb3duOiBudWxsLFxuICAgIG5hdkRvd25MZWZ0OiBudWxsLFxuICAgIG5hdkRvd25SaWdodDogbnVsbCxcbiAgICBuYXZMZWZ0OiBudWxsLFxuICAgIG5hdk5leHQ6IG51bGwsXG4gICAgbmF2UHJldjogbnVsbCxcbiAgICBuYXZSaWdodDogbnVsbCxcbiAgICBuYXZVcDogbnVsbCxcbiAgICBuYXZVcExlZnQ6IG51bGwsXG4gICAgbmF2VXBSaWdodDogbnVsbCxcbiAgICBudW1PY3RhdmVzOiBudWxsLFxuICAgIG9ic2VydmVyOiBudWxsLFxuICAgIG9mZnNldDogbnVsbCxcbiAgICBvbkFib3J0OiBudWxsLFxuICAgIG9uQWN0aXZhdGU6IG51bGwsXG4gICAgb25BZnRlclByaW50OiBudWxsLFxuICAgIG9uQmVmb3JlUHJpbnQ6IG51bGwsXG4gICAgb25CZWdpbjogbnVsbCxcbiAgICBvbkNhbmNlbDogbnVsbCxcbiAgICBvbkNhblBsYXk6IG51bGwsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogbnVsbCxcbiAgICBvbkNoYW5nZTogbnVsbCxcbiAgICBvbkNsaWNrOiBudWxsLFxuICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgb25Db3B5OiBudWxsLFxuICAgIG9uQ3VlQ2hhbmdlOiBudWxsLFxuICAgIG9uQ3V0OiBudWxsLFxuICAgIG9uRGJsQ2xpY2s6IG51bGwsXG4gICAgb25EcmFnOiBudWxsLFxuICAgIG9uRHJhZ0VuZDogbnVsbCxcbiAgICBvbkRyYWdFbnRlcjogbnVsbCxcbiAgICBvbkRyYWdFeGl0OiBudWxsLFxuICAgIG9uRHJhZ0xlYXZlOiBudWxsLFxuICAgIG9uRHJhZ092ZXI6IG51bGwsXG4gICAgb25EcmFnU3RhcnQ6IG51bGwsXG4gICAgb25Ecm9wOiBudWxsLFxuICAgIG9uRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gICAgb25FbXB0aWVkOiBudWxsLFxuICAgIG9uRW5kOiBudWxsLFxuICAgIG9uRW5kZWQ6IG51bGwsXG4gICAgb25FcnJvcjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9uRm9jdXNJbjogbnVsbCxcbiAgICBvbkZvY3VzT3V0OiBudWxsLFxuICAgIG9uSGFzaENoYW5nZTogbnVsbCxcbiAgICBvbklucHV0OiBudWxsLFxuICAgIG9uSW52YWxpZDogbnVsbCxcbiAgICBvbktleURvd246IG51bGwsXG4gICAgb25LZXlQcmVzczogbnVsbCxcbiAgICBvbktleVVwOiBudWxsLFxuICAgIG9uTG9hZDogbnVsbCxcbiAgICBvbkxvYWRlZERhdGE6IG51bGwsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogbnVsbCxcbiAgICBvbkxvYWRTdGFydDogbnVsbCxcbiAgICBvbk1lc3NhZ2U6IG51bGwsXG4gICAgb25Nb3VzZURvd246IG51bGwsXG4gICAgb25Nb3VzZUVudGVyOiBudWxsLFxuICAgIG9uTW91c2VMZWF2ZTogbnVsbCxcbiAgICBvbk1vdXNlTW92ZTogbnVsbCxcbiAgICBvbk1vdXNlT3V0OiBudWxsLFxuICAgIG9uTW91c2VPdmVyOiBudWxsLFxuICAgIG9uTW91c2VVcDogbnVsbCxcbiAgICBvbk1vdXNlV2hlZWw6IG51bGwsXG4gICAgb25PZmZsaW5lOiBudWxsLFxuICAgIG9uT25saW5lOiBudWxsLFxuICAgIG9uUGFnZUhpZGU6IG51bGwsXG4gICAgb25QYWdlU2hvdzogbnVsbCxcbiAgICBvblBhc3RlOiBudWxsLFxuICAgIG9uUGF1c2U6IG51bGwsXG4gICAgb25QbGF5OiBudWxsLFxuICAgIG9uUGxheWluZzogbnVsbCxcbiAgICBvblBvcFN0YXRlOiBudWxsLFxuICAgIG9uUHJvZ3Jlc3M6IG51bGwsXG4gICAgb25SYXRlQ2hhbmdlOiBudWxsLFxuICAgIG9uUmVwZWF0OiBudWxsLFxuICAgIG9uUmVzZXQ6IG51bGwsXG4gICAgb25SZXNpemU6IG51bGwsXG4gICAgb25TY3JvbGw6IG51bGwsXG4gICAgb25TZWVrZWQ6IG51bGwsXG4gICAgb25TZWVraW5nOiBudWxsLFxuICAgIG9uU2VsZWN0OiBudWxsLFxuICAgIG9uU2hvdzogbnVsbCxcbiAgICBvblN0YWxsZWQ6IG51bGwsXG4gICAgb25TdG9yYWdlOiBudWxsLFxuICAgIG9uU3VibWl0OiBudWxsLFxuICAgIG9uU3VzcGVuZDogbnVsbCxcbiAgICBvblRpbWVVcGRhdGU6IG51bGwsXG4gICAgb25Ub2dnbGU6IG51bGwsXG4gICAgb25VbmxvYWQ6IG51bGwsXG4gICAgb25Wb2x1bWVDaGFuZ2U6IG51bGwsXG4gICAgb25XYWl0aW5nOiBudWxsLFxuICAgIG9uWm9vbTogbnVsbCxcbiAgICBvcGFjaXR5OiBudWxsLFxuICAgIG9wZXJhdG9yOiBudWxsLFxuICAgIG9yZGVyOiBudWxsLFxuICAgIG9yaWVudDogbnVsbCxcbiAgICBvcmllbnRhdGlvbjogbnVsbCxcbiAgICBvcmlnaW46IG51bGwsXG4gICAgb3ZlcmZsb3c6IG51bGwsXG4gICAgb3ZlcmxheTogbnVsbCxcbiAgICBvdmVybGluZVBvc2l0aW9uOiBudW1iZXIsXG4gICAgb3ZlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICBwYWludE9yZGVyOiBudWxsLFxuICAgIHBhbm9zZTE6IG51bGwsXG4gICAgcGF0aDogbnVsbCxcbiAgICBwYXRoTGVuZ3RoOiBudW1iZXIsXG4gICAgcGF0dGVybkNvbnRlbnRVbml0czogbnVsbCxcbiAgICBwYXR0ZXJuVHJhbnNmb3JtOiBudWxsLFxuICAgIHBhdHRlcm5Vbml0czogbnVsbCxcbiAgICBwaGFzZTogbnVsbCxcbiAgICBwaW5nOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBwaXRjaDogbnVsbCxcbiAgICBwbGF5YmFja09yZGVyOiBudWxsLFxuICAgIHBvaW50ZXJFdmVudHM6IG51bGwsXG4gICAgcG9pbnRzOiBudWxsLFxuICAgIHBvaW50c0F0WDogbnVtYmVyLFxuICAgIHBvaW50c0F0WTogbnVtYmVyLFxuICAgIHBvaW50c0F0WjogbnVtYmVyLFxuICAgIHByZXNlcnZlQWxwaGE6IG51bGwsXG4gICAgcHJlc2VydmVBc3BlY3RSYXRpbzogbnVsbCxcbiAgICBwcmltaXRpdmVVbml0czogbnVsbCxcbiAgICBwcm9wYWdhdGU6IG51bGwsXG4gICAgcHJvcGVydHk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByOiBudWxsLFxuICAgIHJhZGl1czogbnVsbCxcbiAgICByZWZlcnJlclBvbGljeTogbnVsbCxcbiAgICByZWZYOiBudWxsLFxuICAgIHJlZlk6IG51bGwsXG4gICAgcmVsOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmV2OiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVuZGVyaW5nSW50ZW50OiBudWxsLFxuICAgIHJlcGVhdENvdW50OiBudWxsLFxuICAgIHJlcGVhdER1cjogbnVsbCxcbiAgICByZXF1aXJlZEV4dGVuc2lvbnM6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXF1aXJlZEZlYXR1cmVzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWRGb250czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkRm9ybWF0czogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlc291cmNlOiBudWxsLFxuICAgIHJlc3RhcnQ6IG51bGwsXG4gICAgcmVzdWx0OiBudWxsLFxuICAgIHJvdGF0ZTogbnVsbCxcbiAgICByeDogbnVsbCxcbiAgICByeTogbnVsbCxcbiAgICBzY2FsZTogbnVsbCxcbiAgICBzZWVkOiBudWxsLFxuICAgIHNoYXBlUmVuZGVyaW5nOiBudWxsLFxuICAgIHNpZGU6IG51bGwsXG4gICAgc2xvcGU6IG51bGwsXG4gICAgc25hcHNob3RUaW1lOiBudWxsLFxuICAgIHNwZWN1bGFyQ29uc3RhbnQ6IG51bWJlcixcbiAgICBzcGVjdWxhckV4cG9uZW50OiBudW1iZXIsXG4gICAgc3ByZWFkTWV0aG9kOiBudWxsLFxuICAgIHNwYWNpbmc6IG51bGwsXG4gICAgc3RhcnRPZmZzZXQ6IG51bGwsXG4gICAgc3RkRGV2aWF0aW9uOiBudWxsLFxuICAgIHN0ZW1oOiBudWxsLFxuICAgIHN0ZW12OiBudWxsLFxuICAgIHN0aXRjaFRpbGVzOiBudWxsLFxuICAgIHN0b3BDb2xvcjogbnVsbCxcbiAgICBzdG9wT3BhY2l0eTogbnVsbCxcbiAgICBzdHJpa2V0aHJvdWdoUG9zaXRpb246IG51bWJlcixcbiAgICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiBudW1iZXIsXG4gICAgc3RyaW5nOiBudWxsLFxuICAgIHN0cm9rZTogbnVsbCxcbiAgICBzdHJva2VEYXNoQXJyYXk6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICBzdHJva2VEYXNoT2Zmc2V0OiBudWxsLFxuICAgIHN0cm9rZUxpbmVDYXA6IG51bGwsXG4gICAgc3Ryb2tlTGluZUpvaW46IG51bGwsXG4gICAgc3Ryb2tlTWl0ZXJMaW1pdDogbnVtYmVyLFxuICAgIHN0cm9rZU9wYWNpdHk6IG51bWJlcixcbiAgICBzdHJva2VXaWR0aDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICBzdXJmYWNlU2NhbGU6IG51bWJlcixcbiAgICBzeW5jQmVoYXZpb3I6IG51bGwsXG4gICAgc3luY0JlaGF2aW9yRGVmYXVsdDogbnVsbCxcbiAgICBzeW5jTWFzdGVyOiBudWxsLFxuICAgIHN5bmNUb2xlcmFuY2U6IG51bGwsXG4gICAgc3luY1RvbGVyYW5jZURlZmF1bHQ6IG51bGwsXG4gICAgc3lzdGVtTGFuZ3VhZ2U6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhYmxlVmFsdWVzOiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0YXJnZXRYOiBudW1iZXIsXG4gICAgdGFyZ2V0WTogbnVtYmVyLFxuICAgIHRleHRBbmNob3I6IG51bGwsXG4gICAgdGV4dERlY29yYXRpb246IG51bGwsXG4gICAgdGV4dFJlbmRlcmluZzogbnVsbCxcbiAgICB0ZXh0TGVuZ3RoOiBudWxsLFxuICAgIHRpbWVsaW5lQmVnaW46IG51bGwsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdHJhbnNmb3JtQmVoYXZpb3I6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlT2Y6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICB0bzogbnVsbCxcbiAgICB0cmFuc2Zvcm06IG51bGwsXG4gICAgdTE6IG51bGwsXG4gICAgdTI6IG51bGwsXG4gICAgdW5kZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICB1bmljb2RlOiBudWxsLFxuICAgIHVuaWNvZGVCaWRpOiBudWxsLFxuICAgIHVuaWNvZGVSYW5nZTogbnVsbCxcbiAgICB1bml0c1BlckVtOiBudW1iZXIsXG4gICAgdmFsdWVzOiBudWxsLFxuICAgIHZBbHBoYWJldGljOiBudW1iZXIsXG4gICAgdk1hdGhlbWF0aWNhbDogbnVtYmVyLFxuICAgIHZlY3RvckVmZmVjdDogbnVsbCxcbiAgICB2SGFuZ2luZzogbnVtYmVyLFxuICAgIHZJZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIHZlcnNpb246IG51bGwsXG4gICAgdmVydEFkdlk6IG51bWJlcixcbiAgICB2ZXJ0T3JpZ2luWDogbnVtYmVyLFxuICAgIHZlcnRPcmlnaW5ZOiBudW1iZXIsXG4gICAgdmlld0JveDogbnVsbCxcbiAgICB2aWV3VGFyZ2V0OiBudWxsLFxuICAgIHZpc2liaWxpdHk6IG51bGwsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgd2lkdGhzOiBudWxsLFxuICAgIHdvcmRTcGFjaW5nOiBudWxsLFxuICAgIHdyaXRpbmdNb2RlOiBudWxsLFxuICAgIHg6IG51bGwsXG4gICAgeDE6IG51bGwsXG4gICAgeDI6IG51bGwsXG4gICAgeENoYW5uZWxTZWxlY3RvcjogbnVsbCxcbiAgICB4SGVpZ2h0OiBudW1iZXIsXG4gICAgeTogbnVsbCxcbiAgICB5MTogbnVsbCxcbiAgICB5MjogbnVsbCxcbiAgICB5Q2hhbm5lbFNlbGVjdG9yOiBudWxsLFxuICAgIHo6IG51bGwsXG4gICAgem9vbUFuZFBhbjogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBtZXJnZSA9IHJlcXVpcmUoJy4vbGliL3V0aWwvbWVyZ2UnKVxudmFyIHhsaW5rID0gcmVxdWlyZSgnLi9saWIveGxpbmsnKVxudmFyIHhtbCA9IHJlcXVpcmUoJy4vbGliL3htbCcpXG52YXIgeG1sbnMgPSByZXF1aXJlKCcuL2xpYi94bWxucycpXG52YXIgYXJpYSA9IHJlcXVpcmUoJy4vbGliL2FyaWEnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJy4vbGliL3N2ZycpXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2UoW3htbCwgeGxpbmssIHhtbG5zLCBhcmlhLCBzdmddKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuL25vcm1hbGl6ZScpXG52YXIgRGVmaW5lZEluZm8gPSByZXF1aXJlKCcuL2xpYi91dGlsL2RlZmluZWQtaW5mbycpXG52YXIgSW5mbyA9IHJlcXVpcmUoJy4vbGliL3V0aWwvaW5mbycpXG5cbnZhciBkYXRhID0gJ2RhdGEnXG5cbm1vZHVsZS5leHBvcnRzID0gZmluZFxuXG52YXIgdmFsaWQgPSAvXmRhdGFbLWEtejAtOS46X10rJC9pXG52YXIgZGFzaCA9IC8tW2Etel0vZ1xudmFyIGNhcCA9IC9bQS1aXS9nXG5cbmZ1bmN0aW9uIGZpbmQoc2NoZW1hLCB2YWx1ZSkge1xuICB2YXIgbm9ybWFsID0gbm9ybWFsaXplKHZhbHVlKVxuICB2YXIgcHJvcCA9IHZhbHVlXG4gIHZhciBUeXBlID0gSW5mb1xuXG4gIGlmIChub3JtYWwgaW4gc2NoZW1hLm5vcm1hbCkge1xuICAgIHJldHVybiBzY2hlbWEucHJvcGVydHlbc2NoZW1hLm5vcm1hbFtub3JtYWxdXVxuICB9XG5cbiAgaWYgKG5vcm1hbC5sZW5ndGggPiA0ICYmIG5vcm1hbC5zbGljZSgwLCA0KSA9PT0gZGF0YSAmJiB2YWxpZC50ZXN0KHZhbHVlKSkge1xuICAgIC8vIEF0dHJpYnV0ZSBvciBwcm9wZXJ0eS5cbiAgICBpZiAodmFsdWUuY2hhckF0KDQpID09PSAnLScpIHtcbiAgICAgIHByb3AgPSBkYXRhc2V0VG9Qcm9wZXJ0eSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBkYXRhc2V0VG9BdHRyaWJ1dGUodmFsdWUpXG4gICAgfVxuXG4gICAgVHlwZSA9IERlZmluZWRJbmZvXG4gIH1cblxuICByZXR1cm4gbmV3IFR5cGUocHJvcCwgdmFsdWUpXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRUb1Byb3BlcnR5KGF0dHJpYnV0ZSkge1xuICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGUuc2xpY2UoNSkucmVwbGFjZShkYXNoLCBjYW1lbGNhc2UpXG4gIHJldHVybiBkYXRhICsgdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKVxufVxuXG5mdW5jdGlvbiBkYXRhc2V0VG9BdHRyaWJ1dGUocHJvcGVydHkpIHtcbiAgdmFyIHZhbHVlID0gcHJvcGVydHkuc2xpY2UoNClcblxuICBpZiAoZGFzaC50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBwcm9wZXJ0eVxuICB9XG5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGNhcCwga2ViYWIpXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gJy0nKSB7XG4gICAgdmFsdWUgPSAnLScgKyB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIGRhdGEgKyB2YWx1ZVxufVxuXG5mdW5jdGlvbiBrZWJhYigkMCkge1xuICByZXR1cm4gJy0nICsgJDAudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBjYW1lbGNhc2UoJDApIHtcbiAgcmV0dXJuICQwLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciBkb3QgPSA0NiAvLyAgJy4nXG5cbi8vIENyZWF0ZSBhIGhhc3QgZWxlbWVudCBmcm9tIGEgc2ltcGxlIENTUyBzZWxlY3Rvci5cbmZ1bmN0aW9uIHBhcnNlKHNlbGVjdG9yLCBkZWZhdWx0VGFnTmFtZSkge1xuICB2YXIgdmFsdWUgPSBzZWxlY3RvciB8fCAnJ1xuICB2YXIgbmFtZSA9IGRlZmF1bHRUYWdOYW1lIHx8ICdkaXYnXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGNsYXNzTmFtZVxuICB2YXIgdHlwZVxuICB2YXIgY29kZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxhc3RJbmRleFxuXG4gIHdoaWxlICgrK2luZGV4IDw9IGxlbmd0aCkge1xuICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKCFjb2RlIHx8IGNvZGUgPT09IGRvdCB8fCBjb2RlID09PSBudW1iZXJTaWduKSB7XG4gICAgICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpXG5cbiAgICAgIGlmIChzdWJ2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gZG90KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKHN1YnZhbHVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGFzc05hbWUgPSBbc3VidmFsdWVdXG4gICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAgIHByb3BzLmlkID0gc3VidmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuYW1lID0gc3VidmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICAgIHR5cGUgPSBjb2RlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZWxlbWVudCcsXG4gICAgdGFnTmFtZTogbmFtZSxcbiAgICBwcm9wZXJ0aWVzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjogW11cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxudmFyIGVtcHR5ID0gJydcbnZhciBzcGFjZSA9ICcgJ1xudmFyIHdoaXRlU3BhY2UgPSAvWyBcXHRcXG5cXHJcXGZdKy9nXG5cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlKSB7XG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSkudHJpbSgpXG4gIHJldHVybiBpbnB1dCA9PT0gZW1wdHkgPyBbXSA6IGlucHV0LnNwbGl0KHdoaXRlU3BhY2UpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMpIHtcbiAgcmV0dXJuIHZhbHVlcy5qb2luKHNwYWNlKS50cmltKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VcbmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG5cbnZhciBjb21tYSA9ICcsJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgZW1wdHkgPSAnJ1xuXG4vLyBQYXJzZSBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGFuIGFycmF5LlxuZnVuY3Rpb24gcGFyc2UodmFsdWUpIHtcbiAgdmFyIHZhbHVlcyA9IFtdXG4gIHZhciBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCBlbXB0eSlcbiAgdmFyIGluZGV4ID0gaW5wdXQuaW5kZXhPZihjb21tYSlcbiAgdmFyIGxhc3RJbmRleCA9IDBcbiAgdmFyIGVuZCA9IGZhbHNlXG4gIHZhciB2YWxcblxuICB3aGlsZSAoIWVuZCkge1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGluZGV4ID0gaW5wdXQubGVuZ3RoXG4gICAgICBlbmQgPSB0cnVlXG4gICAgfVxuXG4gICAgdmFsID0gaW5wdXQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkudHJpbSgpXG5cbiAgICBpZiAodmFsIHx8ICFlbmQpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbClcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDFcbiAgICBpbmRleCA9IGlucHV0LmluZGV4T2YoY29tbWEsIGxhc3RJbmRleClcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXNcbn1cblxuLy8gQ29tcGlsZSBhbiBhcnJheSB0byBjb21tYS1zZXBhcmF0ZWQgdG9rZW5zLlxuLy8gYG9wdGlvbnMucGFkTGVmdGAgKGRlZmF1bHQ6IGB0cnVlYCkgcGFkcyBhIHNwYWNlIGxlZnQgb2YgZWFjaCB0b2tlbiwgYW5kXG4vLyBgb3B0aW9ucy5wYWRSaWdodGAgKGRlZmF1bHQ6IGBmYWxzZWApIHBhZHMgYSBzcGFjZSB0byB0aGUgcmlnaHQgb2YgZWFjaCB0b2tlbi5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgbGVmdCA9IHNldHRpbmdzLnBhZExlZnQgPT09IGZhbHNlID8gZW1wdHkgOiBzcGFjZVxuICB2YXIgcmlnaHQgPSBzZXR0aW5ncy5wYWRSaWdodCA/IHNwYWNlIDogZW1wdHlcblxuICAvLyBFbnN1cmUgdGhlIGxhc3QgZW1wdHkgZW50cnkgaXMgc2Vlbi5cbiAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gPT09IGVtcHR5KSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChlbXB0eSlcbiAgfVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihyaWdodCArIGNvbW1hICsgbGVmdCkudHJpbSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9ub3JtYWxpemUnKVxudmFyIHBhcnNlU2VsZWN0b3IgPSByZXF1aXJlKCdoYXN0LXV0aWwtcGFyc2Utc2VsZWN0b3InKVxudmFyIHNwYWNlcyA9IHJlcXVpcmUoJ3NwYWNlLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5wYXJzZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbmZ1bmN0aW9uIGZhY3Rvcnkoc2NoZW1hLCBkZWZhdWx0VGFnTmFtZSwgY2FzZVNlbnNpdGl2ZSkge1xuICB2YXIgYWRqdXN0ID0gY2FzZVNlbnNpdGl2ZSA/IGNyZWF0ZUFkanVzdE1hcChjYXNlU2Vuc2l0aXZlKSA6IG51bGxcblxuICByZXR1cm4gaFxuXG4gIC8vIEh5cGVyc2NyaXB0IGNvbXBhdGlibGUgRFNMIGZvciBjcmVhdGluZyB2aXJ0dWFsIGhhc3QgdHJlZXMuXG4gIGZ1bmN0aW9uIGgoc2VsZWN0b3IsIHByb3BlcnRpZXMpIHtcbiAgICB2YXIgbm9kZSA9IHBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRlZmF1bHRUYWdOYW1lKVxuICAgIHZhciBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMilcbiAgICB2YXIgbmFtZSA9IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIHByb3BlcnR5XG5cbiAgICBub2RlLnRhZ05hbWUgPSBhZGp1c3QgJiYgb3duLmNhbGwoYWRqdXN0LCBuYW1lKSA/IGFkanVzdFtuYW1lXSA6IG5hbWVcblxuICAgIGlmIChwcm9wZXJ0aWVzICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcywgbm9kZSkpIHtcbiAgICAgIGNoaWxkcmVuLnVuc2hpZnQocHJvcGVydGllcylcbiAgICAgIHByb3BlcnRpZXMgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAocHJvcGVydHkgaW4gcHJvcGVydGllcykge1xuICAgICAgICBhZGRQcm9wZXJ0eShub2RlLnByb3BlcnRpZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRDaGlsZChub2RlLmNoaWxkcmVuLCBjaGlsZHJlbilcblxuICAgIGlmIChub2RlLnRhZ05hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIG5vZGUuY29udGVudCA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVufVxuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFByb3BlcnR5KHByb3BlcnRpZXMsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwcm9wZXJ0eVxuICAgIHZhciByZXN1bHRcblxuICAgIC8vIElnbm9yZSBudWxseSBhbmQgTmFOIHZhbHVlcy5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICAgIHByb3BlcnR5ID0gaW5mby5wcm9wZXJ0eVxuICAgIHJlc3VsdCA9IHZhbHVlXG5cbiAgICAvLyBIYW5kbGUgbGlzdCB2YWx1ZXMuXG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaW5mby5zcGFjZVNlcGFyYXRlZCkge1xuICAgICAgICByZXN1bHQgPSBzcGFjZXMocmVzdWx0KVxuICAgICAgfSBlbHNlIGlmIChpbmZvLmNvbW1hU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbW1hcyhyZXN1bHQpXG4gICAgICB9IGVsc2UgaWYgKGluZm8uY29tbWFPclNwYWNlU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHNwYWNlcyhjb21tYXMocmVzdWx0KS5qb2luKCcgJykpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWNjZXB0IGBvYmplY3RgIG9uIHN0eWxlLlxuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3N0eWxlJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSBzdHlsZShyZXN1bHQpXG4gICAgfVxuXG4gICAgLy8gQ2xhc3MtbmFtZXMgKHdoaWNoIGNhbiBiZSBhZGRlZCBib3RoIG9uIHRoZSBgc2VsZWN0b3JgIGFuZCBoZXJlKS5cbiAgICBpZiAocHJvcGVydHkgPT09ICdjbGFzc05hbWUnICYmIHByb3BlcnRpZXMuY2xhc3NOYW1lKSB7XG4gICAgICByZXN1bHQgPSBwcm9wZXJ0aWVzLmNsYXNzTmFtZS5jb25jYXQocmVzdWx0KVxuICAgIH1cblxuICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gcGFyc2VQcmltaXRpdmVzKGluZm8sIHByb3BlcnR5LCByZXN1bHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih2YWx1ZSwgbm9kZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICAnbGVuZ3RoJyBpbiB2YWx1ZSB8fFxuICAgIGlzTm9kZShub2RlLnRhZ05hbWUsIHZhbHVlKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh0YWdOYW1lLCB2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHZhbHVlLnR5cGVcblxuICBpZiAodGFnTmFtZSA9PT0gJ2lucHV0JyB8fCAhdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUuY2hpbGRyZW4gPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKClcblxuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZSAhPT0gJ21lbnUnICYmXG4gICAgICB0eXBlICE9PSAnc3VibWl0JyAmJlxuICAgICAgdHlwZSAhPT0gJ3Jlc2V0JyAmJlxuICAgICAgdHlwZSAhPT0gJ2J1dHRvbidcbiAgICApXG4gIH1cblxuICByZXR1cm4gJ3ZhbHVlJyBpbiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChub2RlcywgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgbm9kZXMucHVzaCh7dHlwZTogJ3RleHQnLCB2YWx1ZTogU3RyaW5nKHZhbHVlKX0pXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIGluZGV4ID0gLTFcbiAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhZGRDaGlsZChub2RlcywgdmFsdWVbaW5kZXhdKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgndHlwZScgaW4gdmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub2Rlcywgb3Igc3RyaW5nLCBnb3QgYCcgKyB2YWx1ZSArICdgJylcbiAgfVxuXG4gIG5vZGVzLnB1c2godmFsdWUpXG59XG5cbi8vIFBhcnNlIGEgKGxpc3Qgb2YpIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZXMoaW5mbywgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHJlc3VsdFxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8ICEoJ2xlbmd0aCcgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIHBhcnNlUHJpbWl0aXZlKGluZm8sIG5hbWUsIHZhbHVlKVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4ID0gLTFcbiAgcmVzdWx0ID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZVtpbmRleF0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIFBhcnNlIGEgc2luZ2xlIHByaW1pdGl2ZXMuXG5mdW5jdGlvbiBwYXJzZVByaW1pdGl2ZShpbmZvLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdmFsdWVcblxuICBpZiAoaW5mby5udW1iZXIgfHwgaW5mby5wb3NpdGl2ZU51bWJlcikge1xuICAgIGlmICghaXNOYU4ocmVzdWx0KSAmJiByZXN1bHQgIT09ICcnKSB7XG4gICAgICByZXN1bHQgPSBOdW1iZXIocmVzdWx0KVxuICAgIH1cbiAgfSBlbHNlIGlmIChpbmZvLmJvb2xlYW4gfHwgaW5mby5vdmVybG9hZGVkQm9vbGVhbikge1xuICAgIC8vIEFjY2VwdCBgYm9vbGVhbmAgYW5kIGBzdHJpbmdgLlxuICAgIGlmIChcbiAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnICYmXG4gICAgICAocmVzdWx0ID09PSAnJyB8fCBub3JtYWxpemUodmFsdWUpID09PSBub3JtYWxpemUobmFtZSkpXG4gICAgKSB7XG4gICAgICByZXN1bHQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBzdHlsZSh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goW2tleSwgdmFsdWVba2V5XV0uam9pbignOiAnKSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignOyAnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGp1c3RNYXAodmFsdWVzKSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciByZXN1bHQgPSB7fVxuICB2YXIgdmFsdWVcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XVxuICAgIHJlc3VsdFt2YWx1ZS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHNjaGVtYSA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgY2FzZVNlbnNpdGl2ZSA9IHJlcXVpcmUoJy4vc3ZnLWNhc2Utc2Vuc2l0aXZlLXRhZy1uYW1lcy5qc29uJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIHN2ZyA9IGZhY3Rvcnkoc2NoZW1hLCAnZycsIGNhc2VTZW5zaXRpdmUpXG5zdmcuZGlzcGxheU5hbWUgPSAnc3ZnJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2Z1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzY2hlbWEgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5JylcblxudmFyIGh0bWwgPSBmYWN0b3J5KHNjaGVtYSwgJ2RpdicpXG5odG1sLmRpc3BsYXlOYW1lID0gJ2h0bWwnXG5cbm1vZHVsZS5leHBvcnRzID0gaHRtbFxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2NvdW50XG5cbmZ1bmN0aW9uIGNjb3VudCh2YWx1ZSwgY2hhcmFjdGVyKSB7XG4gIHZhciBjb3VudCA9IDBcbiAgdmFyIGluZGV4XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHR5cGVvZiBjaGFyYWN0ZXIgIT09ICdzdHJpbmcnIHx8IGNoYXJhY3Rlci5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGNoYXJhY3RlcicpXG4gIH1cblxuICBpbmRleCA9IHZhbHVlLmluZGV4T2YoY2hhcmFjdGVyKVxuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICBjb3VudCsrXG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGNoYXJhY3RlciwgaW5kZXggKyAxKVxuICB9XG5cbiAgcmV0dXJuIGNvdW50XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciBzID0gcmVxdWlyZSgnaGFzdHNjcmlwdC9zdmcnKVxudmFyIGggPSByZXF1aXJlKCdoYXN0c2NyaXB0JylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBjb3VudCA9IHJlcXVpcmUoJ2Njb3VudCcpXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlclxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlcnMuXG52YXIgbWFwID0ge1xuICAnI2RvY3VtZW50Jzogcm9vdCxcbiAgJyNkb2N1bWVudC1mcmFnbWVudCc6IHJvb3QsXG4gICcjdGV4dCc6IHRleHQsXG4gICcjY29tbWVudCc6IGNvbW1lbnQsXG4gICcjZG9jdW1lbnRUeXBlJzogZG9jdHlwZVxufVxuXG4vLyBXcmFwcGVyIHRvIG5vcm1hbGlzZSBvcHRpb25zLlxuZnVuY3Rpb24gd3JhcHBlcihhc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZmlsZVxuXG4gIGlmIChzZXR0aW5ncy5tZXNzYWdlcykge1xuICAgIGZpbGUgPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBmaWxlID0gc2V0dGluZ3MuZmlsZVxuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybShhc3QsIHtcbiAgICBzY2hlbWE6IHNldHRpbmdzLnNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwsXG4gICAgZmlsZTogZmlsZSxcbiAgICB2ZXJib3NlOiBzZXR0aW5ncy52ZXJib3NlLFxuICAgIGxvY2F0aW9uOiBmYWxzZVxuICB9KVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBub2RlLlxuZnVuY3Rpb24gdHJhbnNmb3JtKGFzdCwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciBmbiA9IG93bi5jYWxsKG1hcCwgYXN0Lm5vZGVOYW1lKSA/IG1hcFthc3Qubm9kZU5hbWVdIDogZWxlbWVudFxuICB2YXIgY2hpbGRyZW5cbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuXG4gIGlmIChmbiA9PT0gZWxlbWVudCkge1xuICAgIGNvbmZpZy5zY2hlbWEgPSBhc3QubmFtZXNwYWNlVVJJID09PSBucy5zdmcgPyBzdmcgOiBodG1sXG4gIH1cblxuICBpZiAoYXN0LmNoaWxkTm9kZXMpIHtcbiAgICBjaGlsZHJlbiA9IG5vZGVzKGFzdC5jaGlsZE5vZGVzLCBjb25maWcpXG4gIH1cblxuICBub2RlID0gZm4oYXN0LCBjaGlsZHJlbiwgY29uZmlnKVxuXG4gIGlmIChhc3Quc291cmNlQ29kZUxvY2F0aW9uICYmIGNvbmZpZy5maWxlKSB7XG4gICAgcG9zID0gbG9jYXRpb24obm9kZSwgYXN0LnNvdXJjZUNvZGVMb2NhdGlvbiwgY29uZmlnKVxuXG4gICAgaWYgKHBvcykge1xuICAgICAgY29uZmlnLmxvY2F0aW9uID0gdHJ1ZVxuICAgICAgbm9kZS5wb3NpdGlvbiA9IHBvc1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZy5zY2hlbWEgPSBzY2hlbWFcblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gY2hpbGRyZW4uXG5mdW5jdGlvbiBub2RlcyhjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdCA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gdHJhbnNmb3JtKGNoaWxkcmVuW2luZGV4XSwgY29uZmlnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N1bWVudC5cbi8vIFN0b3JlcyBgYXN0LnF1aXJrc01vZGVgIGluIGBub2RlLmRhdGEucXVpcmtzTW9kZWAuXG5mdW5jdGlvbiByb290KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgbm9kZSA9IHt0eXBlOiAncm9vdCcsIGNoaWxkcmVuOiBjaGlsZHJlbiwgZGF0YToge319XG4gIHZhciBkb2NcblxuICBub2RlLmRhdGEucXVpcmtzTW9kZSA9IGFzdC5tb2RlID09PSAncXVpcmtzJyB8fCBhc3QubW9kZSA9PT0gJ2xpbWl0ZWQtcXVpcmtzJ1xuXG4gIGlmIChjb25maWcuZmlsZSAmJiBjb25maWcubG9jYXRpb24pIHtcbiAgICBkb2MgPSBTdHJpbmcoY29uZmlnLmZpbGUpXG5cbiAgICBub2RlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogY291bnQoZG9jLCAnXFxuJykgKyAxLFxuICAgICAgICBjb2x1bW46IGRvYy5sZW5ndGggLSBkb2MubGFzdEluZGV4T2YoJ1xcbicpLFxuICAgICAgICBvZmZzZXQ6IGRvYy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBkb2N0eXBlLlxuZnVuY3Rpb24gZG9jdHlwZShhc3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZG9jdHlwZScsXG4gICAgbmFtZTogYXN0Lm5hbWUgfHwgJycsXG4gICAgcHVibGljOiBhc3QucHVibGljSWQgfHwgbnVsbCxcbiAgICBzeXN0ZW06IGFzdC5zeXN0ZW1JZCB8fCBudWxsXG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtIGEgdGV4dC5cbmZ1bmN0aW9uIHRleHQoYXN0KSB7XG4gIHJldHVybiB7dHlwZTogJ3RleHQnLCB2YWx1ZTogYXN0LnZhbHVlfVxufVxuXG4vLyBUcmFuc2Zvcm0gYSBjb21tZW50LlxuZnVuY3Rpb24gY29tbWVudChhc3QpIHtcbiAgcmV0dXJuIHt0eXBlOiAnY29tbWVudCcsIHZhbHVlOiBhc3QuZGF0YX1cbn1cblxuLy8gVHJhbnNmb3JtIGFuIGVsZW1lbnQuXG5mdW5jdGlvbiBlbGVtZW50KGFzdCwgY2hpbGRyZW4sIGNvbmZpZykge1xuICB2YXIgZm4gPSBjb25maWcuc2NoZW1hLnNwYWNlID09PSAnc3ZnJyA/IHMgOiBoXG4gIHZhciBuYW1lID0gYXN0LnRhZ05hbWVcbiAgdmFyIGF0dHJpYnV0ZXMgPSBhc3QuYXR0cnNcbiAgdmFyIGxlbmd0aCA9IGF0dHJpYnV0ZXMubGVuZ3RoXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BcbiAgdmFyIG5vZGVcbiAgdmFyIHBvc1xuICB2YXIgc3RhcnRcbiAgdmFyIGVuZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleF1cbiAgICBwcm9wID0gKGF0dHJpYnV0ZS5wcmVmaXggPyBhdHRyaWJ1dGUucHJlZml4ICsgJzonIDogJycpICsgYXR0cmlidXRlLm5hbWVcbiAgICBwcm9wc1twcm9wXSA9IGF0dHJpYnV0ZS52YWx1ZVxuICB9XG5cbiAgbm9kZSA9IGZuKG5hbWUsIHByb3BzLCBjaGlsZHJlbilcblxuICBpZiAobmFtZSA9PT0gJ3RlbXBsYXRlJyAmJiAnY29udGVudCcgaW4gYXN0KSB7XG4gICAgcG9zID0gYXN0LnNvdXJjZUNvZGVMb2NhdGlvblxuICAgIHN0YXJ0ID0gcG9zICYmIHBvcy5zdGFydFRhZyAmJiBwb3NpdGlvbihwb3Muc3RhcnRUYWcpLmVuZFxuICAgIGVuZCA9IHBvcyAmJiBwb3MuZW5kVGFnICYmIHBvc2l0aW9uKHBvcy5lbmRUYWcpLnN0YXJ0XG5cbiAgICBub2RlLmNvbnRlbnQgPSB0cmFuc2Zvcm0oYXN0LmNvbnRlbnQsIGNvbmZpZylcblxuICAgIGlmICgoc3RhcnQgfHwgZW5kKSAmJiBjb25maWcuZmlsZSkge1xuICAgICAgbm9kZS5jb250ZW50LnBvc2l0aW9uID0ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVcbn1cblxuLy8gQ3JlYXRlIGNsZWFuIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG5mdW5jdGlvbiBsb2NhdGlvbihub2RlLCBsb2NhdGlvbiwgY29uZmlnKSB7XG4gIHZhciBzY2hlbWEgPSBjb25maWcuc2NoZW1hXG4gIHZhciB2ZXJib3NlID0gY29uZmlnLnZlcmJvc2VcbiAgdmFyIHBvcyA9IHBvc2l0aW9uKGxvY2F0aW9uKVxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBhdHRyaWJ1dGVzXG4gIHZhciBhdHRyaWJ1dGVcbiAgdmFyIHByb3BzXG4gIHZhciBwcm9wXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmVmZXJlbmNlID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG5cbiAgICAvLyBCdWcgZm9yIHVuY2xvc2VkIHdpdGggY2hpbGRyZW4uXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9pc3N1ZXMvMTA5Pi5cbiAgICBpZiAoXG4gICAgICAhbG9jYXRpb24uZW5kVGFnICYmXG4gICAgICByZWZlcmVuY2UgJiZcbiAgICAgIHJlZmVyZW5jZS5wb3NpdGlvbiAmJlxuICAgICAgcmVmZXJlbmNlLnBvc2l0aW9uLmVuZFxuICAgICkge1xuICAgICAgcG9zLmVuZCA9IHh0ZW5kKHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQpXG4gICAgfVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMgPSBsb2NhdGlvbi5hdHRyc1xuICAgICAgcHJvcHMgPSB7fVxuXG4gICAgICBmb3IgKGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHByb3AgPSBmaW5kKHNjaGVtYSwgYXR0cmlidXRlKS5wcm9wZXJ0eVxuICAgICAgICBwcm9wc1twcm9wXSA9IHBvc2l0aW9uKGF0dHJpYnV0ZXNbYXR0cmlidXRlXSlcbiAgICAgIH1cblxuICAgICAgbm9kZS5kYXRhID0ge1xuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIG9wZW5pbmc6IHBvc2l0aW9uKGxvY2F0aW9uLnN0YXJ0VGFnKSxcbiAgICAgICAgICBjbG9zaW5nOiBsb2NhdGlvbi5lbmRUYWcgPyBwb3NpdGlvbihsb2NhdGlvbi5lbmRUYWcpIDogbnVsbCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvc1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvbihsb2MpIHtcbiAgdmFyIHN0YXJ0ID0gcG9pbnQoe1xuICAgIGxpbmU6IGxvYy5zdGFydExpbmUsXG4gICAgY29sdW1uOiBsb2Muc3RhcnRDb2wsXG4gICAgb2Zmc2V0OiBsb2Muc3RhcnRPZmZzZXRcbiAgfSlcbiAgdmFyIGVuZCA9IHBvaW50KHtcbiAgICBsaW5lOiBsb2MuZW5kTGluZSxcbiAgICBjb2x1bW46IGxvYy5lbmRDb2wsXG4gICAgb2Zmc2V0OiBsb2MuZW5kT2Zmc2V0XG4gIH0pXG4gIHJldHVybiBzdGFydCB8fCBlbmQgPyB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0gOiBudWxsXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIHJldHVybiBwb2ludC5saW5lICYmIHBvaW50LmNvbHVtbiA/IHBvaW50IDogbnVsbFxufVxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvZ3JhbW1hci5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdmlzaW9ubWVkaWEvY3NzLXBhcnNlL3B1bGwvNDkjaXNzdWVjb21tZW50LTMwMDg4MDI3XG52YXIgQ09NTUVOVF9SRUdFWCA9IC9cXC9cXCpbXipdKlxcKisoW14vKl1bXipdKlxcKispKlxcLy9nO1xuXG52YXIgTkVXTElORV9SRUdFWCA9IC9cXG4vZztcbnZhciBXSElURVNQQUNFX1JFR0VYID0gL15cXHMqLztcblxuLy8gZGVjbGFyYXRpb25cbnZhciBQUk9QRVJUWV9SRUdFWCA9IC9eKFxcKj9bLSMvKlxcXFxcXHddKyhcXFtbMC05YS16Xy1dK1xcXSk/KVxccyovO1xudmFyIENPTE9OX1JFR0VYID0gL146XFxzKi87XG52YXIgVkFMVUVfUkVHRVggPSAvXigoPzonKD86XFxcXCd8LikqPyd8XCIoPzpcXFxcXCJ8LikqP1wifFxcKFteKV0qP1xcKXxbXn07XSkrKS87XG52YXIgU0VNSUNPTE9OX1JFR0VYID0gL15bO1xcc10qLztcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL1RyaW0jUG9seWZpbGxcbnZhciBUUklNX1JFR0VYID0gL15cXHMrfFxccyskL2c7XG5cbi8vIHN0cmluZ3NcbnZhciBORVdMSU5FID0gJ1xcbic7XG52YXIgRk9SV0FSRF9TTEFTSCA9ICcvJztcbnZhciBBU1RFUklTSyA9ICcqJztcbnZhciBFTVBUWV9TVFJJTkcgPSAnJztcblxuLy8gdHlwZXNcbnZhciBUWVBFX0NPTU1FTlQgPSAnY29tbWVudCc7XG52YXIgVFlQRV9ERUNMQVJBVElPTiA9ICdkZWNsYXJhdGlvbic7XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0eWxlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN0eWxlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG5cbiAgaWYgKCFzdHlsZSkgcmV0dXJuIFtdO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbmFsLlxuICAgKi9cbiAgdmFyIGxpbmVubyA9IDE7XG4gIHZhciBjb2x1bW4gPSAxO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGluZW5vIGFuZCBjb2x1bW4gYmFzZWQgb24gYHN0cmAuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHN0cikge1xuICAgIHZhciBsaW5lcyA9IHN0ci5tYXRjaChORVdMSU5FX1JFR0VYKTtcbiAgICBpZiAobGluZXMpIGxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgdmFyIGkgPSBzdHIubGFzdEluZGV4T2YoTkVXTElORSk7XG4gICAgY29sdW1uID0gfmkgPyBzdHIubGVuZ3RoIC0gaSA6IGNvbHVtbiArIHN0ci5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogTWFyayBwb3NpdGlvbiBhbmQgcGF0Y2ggYG5vZGUucG9zaXRpb25gLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIHBvc2l0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KTtcbiAgICAgIHdoaXRlc3BhY2UoKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzdGFydFxuICAgKiBAcHJvcGVydHkge09iamVjdH0gZW5kXG4gICAqIEBwcm9wZXJ0eSB7dW5kZWZpbmVkfFN0cmluZ30gc291cmNlXG4gICAqL1xuICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IHsgbGluZTogbGluZW5vLCBjb2x1bW46IGNvbHVtbiB9O1xuICAgIHRoaXMuc291cmNlID0gb3B0aW9ucy5zb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogTm9uLWVudW1lcmFibGUgc291cmNlIHN0cmluZy5cbiAgICovXG4gIFBvc2l0aW9uLnByb3RvdHlwZS5jb250ZW50ID0gc3R5bGU7XG5cbiAgdmFyIGVycm9yc0xpc3QgPSBbXTtcblxuICAvKipcbiAgICogRXJyb3IgYG1zZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtc2dcbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgb3B0aW9ucy5zb3VyY2UgKyAnOicgKyBsaW5lbm8gKyAnOicgKyBjb2x1bW4gKyAnOiAnICsgbXNnXG4gICAgKTtcbiAgICBlcnIucmVhc29uID0gbXNnO1xuICAgIGVyci5maWxlbmFtZSA9IG9wdGlvbnMuc291cmNlO1xuICAgIGVyci5saW5lID0gbGluZW5vO1xuICAgIGVyci5jb2x1bW4gPSBjb2x1bW47XG4gICAgZXJyLnNvdXJjZSA9IHN0eWxlO1xuXG4gICAgaWYgKG9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBlcnJvcnNMaXN0LnB1c2goZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBgcmVgIGFuZCByZXR1cm4gY2FwdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVnRXhwfSByZVxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR8QXJyYXl9XG4gICAqL1xuICBmdW5jdGlvbiBtYXRjaChyZSkge1xuICAgIHZhciBtID0gcmUuZXhlYyhzdHlsZSk7XG4gICAgaWYgKCFtKSByZXR1cm47XG4gICAgdmFyIHN0ciA9IG1bMF07XG4gICAgdXBkYXRlUG9zaXRpb24oc3RyKTtcbiAgICBzdHlsZSA9IHN0eWxlLnNsaWNlKHN0ci5sZW5ndGgpO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHdoaXRlc3BhY2UuXG4gICAqL1xuICBmdW5jdGlvbiB3aGl0ZXNwYWNlKCkge1xuICAgIG1hdGNoKFdISVRFU1BBQ0VfUkVHRVgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBbcnVsZXNdXG4gICAqIEByZXR1cm4ge09iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudHMocnVsZXMpIHtcbiAgICB2YXIgYztcbiAgICBydWxlcyA9IHJ1bGVzIHx8IFtdO1xuICAgIHdoaWxlICgoYyA9IGNvbW1lbnQoKSkpIHtcbiAgICAgIGlmIChjICE9PSBmYWxzZSkge1xuICAgICAgICBydWxlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgY29tbWVudC5cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnQoKSB7XG4gICAgdmFyIHBvcyA9IHBvc2l0aW9uKCk7XG4gICAgaWYgKEZPUldBUkRfU0xBU0ggIT0gc3R5bGUuY2hhckF0KDApIHx8IEFTVEVSSVNLICE9IHN0eWxlLmNoYXJBdCgxKSkgcmV0dXJuO1xuXG4gICAgdmFyIGkgPSAyO1xuICAgIHdoaWxlIChcbiAgICAgIEVNUFRZX1NUUklORyAhPSBzdHlsZS5jaGFyQXQoaSkgJiZcbiAgICAgIChBU1RFUklTSyAhPSBzdHlsZS5jaGFyQXQoaSkgfHwgRk9SV0FSRF9TTEFTSCAhPSBzdHlsZS5jaGFyQXQoaSArIDEpKVxuICAgICkge1xuICAgICAgKytpO1xuICAgIH1cbiAgICBpICs9IDI7XG5cbiAgICBpZiAoRU1QVFlfU1RSSU5HID09PSBzdHlsZS5jaGFyQXQoaSAtIDEpKSB7XG4gICAgICByZXR1cm4gZXJyb3IoJ0VuZCBvZiBjb21tZW50IG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICB2YXIgc3RyID0gc3R5bGUuc2xpY2UoMiwgaSAtIDIpO1xuICAgIGNvbHVtbiArPSAyO1xuICAgIHVwZGF0ZVBvc2l0aW9uKHN0cik7XG4gICAgc3R5bGUgPSBzdHlsZS5zbGljZShpKTtcbiAgICBjb2x1bW4gKz0gMjtcblxuICAgIHJldHVybiBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9DT01NRU5ULFxuICAgICAgY29tbWVudDogc3RyXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbigpIHtcbiAgICB2YXIgcG9zID0gcG9zaXRpb24oKTtcblxuICAgIC8vIHByb3BcbiAgICB2YXIgcHJvcCA9IG1hdGNoKFBST1BFUlRZX1JFR0VYKTtcbiAgICBpZiAoIXByb3ApIHJldHVybjtcbiAgICBjb21tZW50KCk7XG5cbiAgICAvLyA6XG4gICAgaWYgKCFtYXRjaChDT0xPTl9SRUdFWCkpIHJldHVybiBlcnJvcihcInByb3BlcnR5IG1pc3NpbmcgJzonXCIpO1xuXG4gICAgLy8gdmFsXG4gICAgdmFyIHZhbCA9IG1hdGNoKFZBTFVFX1JFR0VYKTtcblxuICAgIHZhciByZXQgPSBwb3Moe1xuICAgICAgdHlwZTogVFlQRV9ERUNMQVJBVElPTixcbiAgICAgIHByb3BlcnR5OiB0cmltKHByb3BbMF0ucmVwbGFjZShDT01NRU5UX1JFR0VYLCBFTVBUWV9TVFJJTkcpKSxcbiAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgPyB0cmltKHZhbFswXS5yZXBsYWNlKENPTU1FTlRfUkVHRVgsIEVNUFRZX1NUUklORykpXG4gICAgICAgIDogRU1QVFlfU1RSSU5HXG4gICAgfSk7XG5cbiAgICAvLyA7XG4gICAgbWF0Y2goU0VNSUNPTE9OX1JFR0VYKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGVjbGFyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucygpIHtcbiAgICB2YXIgZGVjbHMgPSBbXTtcblxuICAgIGNvbW1lbnRzKGRlY2xzKTtcblxuICAgIC8vIGRlY2xhcmF0aW9uc1xuICAgIHZhciBkZWNsO1xuICAgIHdoaWxlICgoZGVjbCA9IGRlY2xhcmF0aW9uKCkpKSB7XG4gICAgICBpZiAoZGVjbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGVjbHMucHVzaChkZWNsKTtcbiAgICAgICAgY29tbWVudHMoZGVjbHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWNscztcbiAgfVxuXG4gIHdoaXRlc3BhY2UoKTtcbiAgcmV0dXJuIGRlY2xhcmF0aW9ucygpO1xufTtcblxuLyoqXG4gKiBUcmltIGBzdHJgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0ci5yZXBsYWNlKFRSSU1fUkVHRVgsIEVNUFRZX1NUUklORykgOiBFTVBUWV9TVFJJTkc7XG59XG4iLCJ2YXIgcGFyc2UgPSByZXF1aXJlKCdpbmxpbmUtc3R5bGUtcGFyc2VyJyk7XG5cbi8qKlxuICogUGFyc2VzIGlubGluZSBzdHlsZSB0byBvYmplY3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIHJldHVybnMgeyAnbGluZS1oZWlnaHQnOiAnNDInIH1cbiAqIFN0eWxlVG9PYmplY3QoJ2xpbmUtaGVpZ2h0OiA0MjsnKTtcbiAqXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgc3R5bGUgICAgICAtIFRoZSBpbmxpbmUgc3R5bGUuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gICAgW2l0ZXJhdG9yXSAtIFRoZSBpdGVyYXRvciBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge251bGx8T2JqZWN0fVxuICovXG5mdW5jdGlvbiBTdHlsZVRvT2JqZWN0KHN0eWxlLCBpdGVyYXRvcikge1xuICB2YXIgb3V0cHV0ID0gbnVsbDtcbiAgaWYgKCFzdHlsZSB8fCB0eXBlb2Ygc3R5bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHZhciBkZWNsYXJhdGlvbjtcbiAgdmFyIGRlY2xhcmF0aW9ucyA9IHBhcnNlKHN0eWxlKTtcbiAgdmFyIGhhc0l0ZXJhdG9yID0gdHlwZW9mIGl0ZXJhdG9yID09PSAnZnVuY3Rpb24nO1xuICB2YXIgcHJvcGVydHk7XG4gIHZhciB2YWx1ZTtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGVjbGFyYXRpb25zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbaV07XG4gICAgcHJvcGVydHkgPSBkZWNsYXJhdGlvbi5wcm9wZXJ0eTtcbiAgICB2YWx1ZSA9IGRlY2xhcmF0aW9uLnZhbHVlO1xuXG4gICAgaWYgKGhhc0l0ZXJhdG9yKSB7XG4gICAgICBpdGVyYXRvcihwcm9wZXJ0eSwgdmFsdWUsIGRlY2xhcmF0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICBvdXRwdXQgfHwgKG91dHB1dCA9IHt9KTtcbiAgICAgIG91dHB1dFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0eWxlVG9PYmplY3Q7XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGh0bWwgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBoYXN0VG9SZWFjdCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2hhc3QtdG8tcmVhY3QuanNvbicpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpXG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpXG52YXIgc3R5bGUgPSByZXF1aXJlKCdzdHlsZS10by1vYmplY3QnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgcm9vdCA9IGNvbnZlcnQoJ3Jvb3QnKVxudmFyIGVsZW1lbnQgPSBjb252ZXJ0KCdlbGVtZW50JylcbnZhciB0ZXh0ID0gY29udmVydCgndGV4dCcpXG5cbnZhciBkYXNoZXMgPSAvLShbYS16XSkvZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBwZXJcblxuZnVuY3Rpb24gd3JhcHBlcihoLCBub2RlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHByZWZpeFxuICB2YXIgclxuICB2YXIgdlxuICB2YXIgdmRcblxuICBpZiAodHlwZW9mIGggIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ggaXMgbm90IGEgZnVuY3Rpb24nKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHNldHRpbmdzID09PSAnYm9vbGVhbicpIHtcbiAgICBwcmVmaXggPSBzZXR0aW5nc1xuICAgIHNldHRpbmdzID0ge31cbiAgfSBlbHNlIHtcbiAgICBwcmVmaXggPSBzZXR0aW5ncy5wcmVmaXhcbiAgfVxuXG4gIHIgPSByZWFjdChoKVxuICB2ID0gdnVlKGgpXG4gIHZkID0gdmRvbShoKVxuXG4gIGlmIChwcmVmaXggPT09IG51bGwgfHwgcHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXggPSByID09PSB0cnVlIHx8IHYgPT09IHRydWUgfHwgdmQgPT09IHRydWUgPyAnaC0nIDogZmFsc2VcbiAgfVxuXG4gIGlmIChyb290KG5vZGUpKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGVsZW1lbnQobm9kZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuWzBdXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgICAgdGFnTmFtZTogJ2RpdicsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlblxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghZWxlbWVudChub2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdFeHBlY3RlZCByb290IG9yIGVsZW1lbnQsIG5vdCBgJyArICgobm9kZSAmJiBub2RlLnR5cGUpIHx8IG5vZGUpICsgJ2AnXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHRvSChoLCBub2RlLCB7XG4gICAgc2NoZW1hOiBzZXR0aW5ncy5zcGFjZSA9PT0gJ3N2ZycgPyBzdmcgOiBodG1sLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIGtleTogMCxcbiAgICByZWFjdDogcixcbiAgICB2dWU6IHYsXG4gICAgdmRvbTogdmQsXG4gICAgaHlwZXJzY3JpcHQ6IGh5cGVyc2NyaXB0KGgpXG4gIH0pXG59XG5cbi8vIFRyYW5zZm9ybSBhIGhhc3Qgbm9kZSB0aHJvdWdoIGEgaHlwZXJzY3JpcHQgaW50ZXJmYWNlIHRvICphbnl0aGluZyohXG5mdW5jdGlvbiB0b0goaCwgbm9kZSwgY3R4KSB7XG4gIHZhciBwYXJlbnRTY2hlbWEgPSBjdHguc2NoZW1hXG4gIHZhciBzY2hlbWEgPSBwYXJlbnRTY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHByb3BlcnRpZXNcbiAgdmFyIGF0dHJpYnV0ZXNcbiAgdmFyIGNoaWxkcmVuXG4gIHZhciBwcm9wZXJ0eVxuICB2YXIgZWxlbWVudHNcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcbiAgdmFyIHZhbHVlXG4gIHZhciByZXN1bHRcblxuICBpZiAocGFyZW50U2NoZW1hLnNwYWNlID09PSAnaHRtbCcgJiYgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIHNjaGVtYSA9IHN2Z1xuICAgIGN0eC5zY2hlbWEgPSBzY2hlbWFcbiAgfVxuXG4gIGlmIChjdHgudmRvbSA9PT0gdHJ1ZSAmJiBzY2hlbWEuc3BhY2UgPT09ICdodG1sJykge1xuICAgIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIHByb3BlcnRpZXMgPSBub2RlLnByb3BlcnRpZXNcbiAgYXR0cmlidXRlcyA9IHt9XG5cbiAgZm9yIChwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZXMsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSwgY3R4KVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnN0eWxlID09PSAnc3RyaW5nJyAmJlxuICAgIChjdHgudmRvbSA9PT0gdHJ1ZSB8fCBjdHgudnVlID09PSB0cnVlIHx8IGN0eC5yZWFjdCA9PT0gdHJ1ZSlcbiAgKSB7XG4gICAgLy8gVkRPTSwgVnVlLCBhbmQgUmVhY3QgYWNjZXB0IGBzdHlsZWAgYXMgb2JqZWN0LlxuICAgIGF0dHJpYnV0ZXMuc3R5bGUgPSBwYXJzZVN0eWxlKGF0dHJpYnV0ZXMuc3R5bGUsIG5hbWUpXG4gIH1cblxuICBpZiAoY3R4LnByZWZpeCkge1xuICAgIGN0eC5rZXkrK1xuICAgIGF0dHJpYnV0ZXMua2V5ID0gY3R4LnByZWZpeCArIGN0eC5rZXlcbiAgfVxuXG4gIGlmIChjdHgudmRvbSAmJiBzY2hlbWEuc3BhY2UgIT09ICdodG1sJykge1xuICAgIGF0dHJpYnV0ZXMubmFtZXNwYWNlID0gbnNbc2NoZW1hLnNwYWNlXVxuICB9XG5cbiAgZWxlbWVudHMgPSBbXVxuICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgbGVuZ3RoID0gY2hpbGRyZW4gPyBjaGlsZHJlbi5sZW5ndGggOiAwXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gY2hpbGRyZW5baW5kZXhdXG5cbiAgICBpZiAoZWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godG9IKGgsIHZhbHVlLCBjdHgpKVxuICAgIH0gZWxzZSBpZiAodGV4dCh2YWx1ZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2godmFsdWUudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIG5vIFJlYWN0IHdhcm5pbmdzIGFyZSB0cmlnZ2VyZWQgZm9yIHZvaWQgZWxlbWVudHMgaGF2aW5nIGNoaWxkcmVuXG4gIC8vIHBhc3NlZCBpbi5cbiAgcmVzdWx0ID1cbiAgICBlbGVtZW50cy5sZW5ndGggPT09IDAgPyBoKG5hbWUsIGF0dHJpYnV0ZXMpIDogaChuYW1lLCBhdHRyaWJ1dGVzLCBlbGVtZW50cylcblxuICAvLyBSZXN0b3JlIHBhcmVudCBzY2hlbWEuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHJpYnV0ZShwcm9wcywgcHJvcCwgdmFsdWUsIGN0eCkge1xuICB2YXIgaHlwZXJsaWtlID0gY3R4Lmh5cGVyc2NyaXB0IHx8IGN0eC52ZG9tIHx8IGN0eC52dWVcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwgcHJvcClcbiAgdmFyIHN1YnByb3BcblxuICAvLyBJZ25vcmUgbnVsbHkgYW5kIGBOYU5gIHZhbHVlcy5cbiAgLy8gSWdub3JlIGBmYWxzZWAgYW5kIGZhbHNleSBrbm93biBib29sZWFucyBmb3IgaHlwZXJsaWtlIERTTHMuXG4gIGlmIChcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSAhPT0gdmFsdWUgfHxcbiAgICAoaHlwZXJsaWtlICYmIHZhbHVlID09PSBmYWxzZSkgfHxcbiAgICAoaHlwZXJsaWtlICYmIGluZm8uYm9vbGVhbiAmJiAhdmFsdWUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAvLyBBY2NlcHQgYGFycmF5YC5cbiAgICAvLyBNb3N0IHByb3BzIGFyZSBzcGFjZS1zZXBhcmF0ZWQuXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykuc3RyaW5naWZ5KHZhbHVlKVxuICB9XG5cbiAgLy8gVHJlYXQgYHRydWVgIGFuZCB0cnV0aHkga25vd24gYm9vbGVhbnMuXG4gIGlmIChpbmZvLmJvb2xlYW4gJiYgY3R4Lmh5cGVyc2NyaXB0ID09PSB0cnVlKSB7XG4gICAgdmFsdWUgPSAnJ1xuICB9XG5cbiAgaWYgKGN0eC52dWUpIHtcbiAgICBpZiAocHJvcCAhPT0gJ3N0eWxlJykge1xuICAgICAgc3VicHJvcCA9ICdhdHRycydcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAgaWYgKGN0eC52ZG9tID09PSB0cnVlKSB7XG4gICAgICBzdWJwcm9wID0gJ2F0dHJpYnV0ZXMnXG4gICAgfSBlbHNlIGlmIChjdHguaHlwZXJzY3JpcHQgPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cnMnXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1YnByb3ApIHtcbiAgICBpZiAocHJvcHNbc3VicHJvcF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcHNbc3VicHJvcF0gPSB7fVxuICAgIH1cblxuICAgIHByb3BzW3N1YnByb3BdW2luZm8uYXR0cmlidXRlXSA9IHZhbHVlXG4gIH0gZWxzZSBpZiAoY3R4LnJlYWN0ICYmIGluZm8uc3BhY2UpIHtcbiAgICBwcm9wc1toYXN0VG9SZWFjdFtpbmZvLnByb3BlcnR5XSB8fCBpbmZvLnByb3BlcnR5XSA9IHZhbHVlXG4gIH0gZWxzZSB7XG4gICAgcHJvcHNbaW5mby5hdHRyaWJ1dGVdID0gdmFsdWVcbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgaGAgaXMgYHJlYWN0LmNyZWF0ZUVsZW1lbnRgLlxuZnVuY3Rpb24gcmVhY3QoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgbm9kZSAmJiAoJ19vd25lcicgaW4gbm9kZSB8fCAnX3N0b3JlJyBpbiBub2RlKSAmJiBub2RlLmtleSA9PT0gbnVsbFxuICApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgaHlwZXJzY3JpcHRgLlxuZnVuY3Rpb24gaHlwZXJzY3JpcHQoaCkge1xuICByZXR1cm4gQm9vbGVhbihoICYmIGguY29udGV4dCAmJiBoLmNsZWFudXApXG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgdmlydHVhbC1kb20vaGAuXG5mdW5jdGlvbiB2ZG9tKGgpIHtcbiAgcmV0dXJuIGggJiYgaCgnZGl2JykudHlwZSA9PT0gJ1ZpcnR1YWxOb2RlJ1xufVxuXG5mdW5jdGlvbiB2dWUoaCkge1xuICB2YXIgbm9kZSA9IGggJiYgaCgnZGl2JylcbiAgcmV0dXJuIEJvb2xlYW4obm9kZSAmJiBub2RlLmNvbnRleHQgJiYgbm9kZS5jb250ZXh0Ll9pc1Z1ZSlcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHlsZSh2YWx1ZSwgdGFnTmFtZSkge1xuICB2YXIgcmVzdWx0ID0ge31cblxuICB0cnkge1xuICAgIHN0eWxlKHZhbHVlLCBpdGVyYXRvcilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlcnJvci5tZXNzYWdlID1cbiAgICAgIHRhZ05hbWUgKyAnW3N0eWxlXScgKyBlcnJvci5tZXNzYWdlLnNsaWNlKCd1bmRlZmluZWQnLmxlbmd0aClcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxuXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yKG5hbWUsIHZhbHVlKSB7XG4gICAgcmVzdWx0W3N0eWxlQ2FzZShuYW1lKV0gPSB2YWx1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ2FzZSh2YWwpIHtcbiAgaWYgKHZhbC5zbGljZSgwLCA0KSA9PT0gJy1tcy0nKSB7XG4gICAgdmFsID0gJ21zLScgKyB2YWwuc2xpY2UoNClcbiAgfVxuXG4gIHJldHVybiB2YWwucmVwbGFjZShkYXNoZXMsIHN0eWxlUmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHN0eWxlUmVwbGFjZXIoJDAsICQxKSB7XG4gIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBub29wID0gRnVuY3Rpb24ucHJvdG90eXBlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gSGFuZGxlIHZhbHVlcyBiYXNlZCBvbiBhIHByb3BlcnR5LlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuXG4gIGZ1bmN0aW9uIG9uZSh2YWx1ZSkge1xuICAgIHZhciBmbiA9IG9uZS5pbnZhbGlkXG4gICAgdmFyIGhhbmRsZXJzID0gb25lLmhhbmRsZXJzXG5cbiAgICBpZiAodmFsdWUgJiYgb3duLmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIHZhbHVlW2tleV0pID8gaGFuZGxlcnNbdmFsdWVba2V5XV0gOiBvbmUudW5rbm93blxuICAgIH1cblxuICAgIHJldHVybiAoZm4gfHwgbm9vcCkuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG5cbiAgb25lLmhhbmRsZXJzID0gc2V0dGluZ3MuaGFuZGxlcnMgfHwge31cbiAgb25lLmludmFsaWQgPSBzZXR0aW5ncy5pbnZhbGlkXG4gIG9uZS51bmtub3duID0gc2V0dGluZ3MudW5rbm93blxuXG4gIHJldHVybiBvbmVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIHRvSCA9IHJlcXVpcmUoJ2hhc3QtdG8taHlwZXJzY3JpcHQnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIHp3aXRjaCA9IHJlcXVpcmUoJ3p3aXRjaCcpXG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtXG5cbnZhciBpZ25vcmVkU3BhY2VzID0gWydzdmcnLCAnaHRtbCddXG5cbnZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuXG5vbmUuaGFuZGxlcnMucm9vdCA9IHJvb3Rcbm9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxub25lLmhhbmRsZXJzLnRleHQgPSB0ZXh0XG5vbmUuaGFuZGxlcnMuY29tbWVudCA9IGNvbW1lbnRcbm9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuXG4vLyBUcmFuc2Zvcm0gYSB0cmVlIGZyb20gaGFzdCB0byBQYXJzZTXigJlzIEFTVC5cbmZ1bmN0aW9uIHRyYW5zZm9ybSh0cmVlLCBzcGFjZSkge1xuICByZXR1cm4gb25lKHRyZWUsIHNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwpXG59XG5cbmZ1bmN0aW9uIHJvb3Qobm9kZSwgc2NoZW1hKSB7XG4gIHZhciBkYXRhID0gbm9kZS5kYXRhIHx8IHt9XG4gIHZhciBtb2RlID0gZGF0YS5xdWlya3NNb2RlID8gJ3F1aXJrcycgOiAnbm8tcXVpcmtzJ1xuXG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjZG9jdW1lbnQnLCBtb2RlOiBtb2RlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBmcmFnbWVudChub2RlLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHBhdGNoKG5vZGUsIHtub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCd9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGRvY3R5cGUobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChcbiAgICBub2RlLFxuICAgIHtcbiAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50VHlwZScsXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBwdWJsaWNJZDogbm9kZS5wdWJsaWMgfHwgJycsXG4gICAgICBzeXN0ZW1JZDogbm9kZS5zeXN0ZW0gfHwgJydcbiAgICB9LFxuICAgIHNjaGVtYVxuICApXG59XG5cbmZ1bmN0aW9uIHRleHQobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjdGV4dCcsIHZhbHVlOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBjb21tZW50KG5vZGUsIHNjaGVtYSkge1xuICByZXR1cm4gcGF0Y2gobm9kZSwge25vZGVOYW1lOiAnI2NvbW1lbnQnLCBkYXRhOiBub2RlLnZhbHVlfSwgc2NoZW1hKVxufVxuXG5mdW5jdGlvbiBlbGVtZW50KG5vZGUsIHNjaGVtYSkge1xuICB2YXIgc3BhY2UgPSBzY2hlbWEuc3BhY2VcbiAgdmFyIHNoYWxsb3cgPSB4dGVuZChub2RlLCB7Y2hpbGRyZW46IFtdfSlcblxuICByZXR1cm4gdG9IKGgsIHNoYWxsb3csIHtzcGFjZTogc3BhY2V9KVxuXG4gIGZ1bmN0aW9uIGgobmFtZSwgYXR0cnMpIHtcbiAgICB2YXIgdmFsdWVzID0gW11cbiAgICB2YXIgcDVcbiAgICB2YXIgYXR0clxuICAgIHZhciB2YWx1ZVxuICAgIHZhciBrZXlcbiAgICB2YXIgaW5mb1xuICAgIHZhciBwb3NcblxuICAgIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgICBpbmZvID0gZmluZChzY2hlbWEsIGtleSlcbiAgICAgIGF0dHIgPSBhdHRyc1trZXldXG5cbiAgICAgIGlmIChhdHRyID09PSBmYWxzZSB8fCAoaW5mby5ib29sZWFuICYmICFhdHRyKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IHtuYW1lOiBrZXksIHZhbHVlOiBhdHRyID09PSB0cnVlID8gJycgOiBTdHJpbmcoYXR0cil9XG5cbiAgICAgIGlmIChpbmZvLnNwYWNlICYmIGlnbm9yZWRTcGFjZXMuaW5kZXhPZihpbmZvLnNwYWNlKSA9PT0gLTEpIHtcbiAgICAgICAgcG9zID0ga2V5LmluZGV4T2YoJzonKVxuXG4gICAgICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUucHJlZml4ID0gJydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZS5uYW1lID0ga2V5LnNsaWNlKHBvcyArIDEpXG4gICAgICAgICAgdmFsdWUucHJlZml4ID0ga2V5LnNsaWNlKDAsIHBvcylcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlLm5hbWVzcGFjZSA9IG5zW2luZm8uc3BhY2VdXG4gICAgICB9XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKVxuICAgIH1cblxuICAgIHA1ID0gcGF0Y2gobm9kZSwge25vZGVOYW1lOiBuYW1lLCB0YWdOYW1lOiBuYW1lLCBhdHRyczogdmFsdWVzfSwgc2NoZW1hKVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHA1LmNvbnRlbnQgPSBmcmFnbWVudChzaGFsbG93LmNvbnRlbnQsIHNjaGVtYSlcbiAgICB9XG5cbiAgICByZXR1cm4gcDVcbiAgfVxufVxuXG4vLyBQYXRjaCBzcGVjaWZpYyBwcm9wZXJ0aWVzLlxuZnVuY3Rpb24gcGF0Y2gobm9kZSwgcDUsIHBhcmVudFNjaGVtYSkge1xuICB2YXIgc2NoZW1hID0gcGFyZW50U2NoZW1hXG4gIHZhciBwb3NpdGlvbiA9IG5vZGUucG9zaXRpb25cbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICB2YXIgY2hpbGROb2RlcyA9IFtdXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDBcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNoaWxkXG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgaWYgKHNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5vZGUudGFnTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgIHNjaGVtYSA9IHN2Z1xuICAgIH1cblxuICAgIHA1Lm5hbWVzcGFjZVVSSSA9IG5zW3NjaGVtYS5zcGFjZV1cbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBvbmUoY2hpbGRyZW5baW5kZXhdLCBzY2hlbWEpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHA1XG4gICAgY2hpbGROb2Rlc1tpbmRleF0gPSBjaGlsZFxuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgcDUuY2hpbGROb2RlcyA9IGNoaWxkTm9kZXNcbiAgfVxuXG4gIGlmIChwb3NpdGlvbiAmJiBwb3NpdGlvbi5zdGFydCAmJiBwb3NpdGlvbi5lbmQpIHtcbiAgICBwNS5zb3VyY2VDb2RlTG9jYXRpb24gPSB7XG4gICAgICBzdGFydExpbmU6IHBvc2l0aW9uLnN0YXJ0LmxpbmUsXG4gICAgICBzdGFydENvbDogcG9zaXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRPZmZzZXQ6IHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxcbiAgICAgIGVuZExpbmU6IHBvc2l0aW9uLmVuZC5saW5lLFxuICAgICAgZW5kQ29sOiBwb3NpdGlvbi5lbmQuY29sdW1uLFxuICAgICAgZW5kT2Zmc2V0OiBwb3NpdGlvbi5lbmQub2Zmc2V0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHA1XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIFBhcnNlciA9IHJlcXVpcmUoJ3BhcnNlNS9saWIvcGFyc2VyJylcbnZhciBwb3MgPSByZXF1aXJlKCd1bmlzdC11dGlsLXBvc2l0aW9uJylcbnZhciBmcm9tUGFyc2U1ID0gcmVxdWlyZSgnaGFzdC11dGlsLWZyb20tcGFyc2U1JylcbnZhciB0b1BhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1wYXJzZTUnKVxudmFyIHZvaWRzID0gcmVxdWlyZSgnaHRtbC12b2lkLWVsZW1lbnRzJylcbnZhciBucyA9IHJlcXVpcmUoJ3dlYi1uYW1lc3BhY2VzJylcbnZhciB6d2l0Y2ggPSByZXF1aXJlKCd6d2l0Y2gnKVxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBcblxudmFyIGluVGVtcGxhdGVNb2RlID0gJ0lOX1RFTVBMQVRFX01PREUnXG52YXIgZGF0YVN0YXRlID0gJ0RBVEFfU1RBVEUnXG52YXIgY2hhcmFjdGVyVG9rZW4gPSAnQ0hBUkFDVEVSX1RPS0VOJ1xudmFyIHN0YXJ0VGFnVG9rZW4gPSAnU1RBUlRfVEFHX1RPS0VOJ1xudmFyIGVuZFRhZ1Rva2VuID0gJ0VORF9UQUdfVE9LRU4nXG52YXIgY29tbWVudFRva2VuID0gJ0NPTU1FTlRfVE9LRU4nXG52YXIgZG9jdHlwZVRva2VuID0gJ0RPQ1RZUEVfVE9LRU4nXG5cbnZhciBwYXJzZU9wdGlvbnMgPSB7XG4gIHNvdXJjZUNvZGVMb2NhdGlvbkluZm86IHRydWUsXG4gIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG59XG5cbmZ1bmN0aW9uIHdyYXAodHJlZSwgZmlsZSkge1xuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihwYXJzZU9wdGlvbnMpXG4gIHZhciBvbmUgPSB6d2l0Y2goJ3R5cGUnKVxuICB2YXIgdG9rZW5pemVyXG4gIHZhciBwcmVwcm9jZXNzb3JcbiAgdmFyIHBvc1RyYWNrZXJcbiAgdmFyIGxvY2F0aW9uVHJhY2tlclxuICB2YXIgcmVzdWx0XG5cbiAgb25lLmhhbmRsZXJzLnJvb3QgPSByb290XG4gIG9uZS5oYW5kbGVycy5lbGVtZW50ID0gZWxlbWVudFxuICBvbmUuaGFuZGxlcnMudGV4dCA9IHRleHRcbiAgb25lLmhhbmRsZXJzLmNvbW1lbnQgPSBjb21tZW50XG4gIG9uZS5oYW5kbGVycy5kb2N0eXBlID0gZG9jdHlwZVxuICBvbmUuaGFuZGxlcnMucmF3ID0gcmF3XG4gIG9uZS51bmtub3duID0gdW5rbm93blxuXG4gIHJlc3VsdCA9IGZyb21QYXJzZTUoZG9jdW1lbnRNb2RlKHRyZWUpID8gZG9jdW1lbnQoKSA6IGZyYWdtZW50KCksIGZpbGUpXG5cbiAgLy8gVW5wYWNrIGlmIHBvc3NpYmxlIGFuZCB3aGVuIG5vdCBnaXZlbiBhIGByb290YC5cbiAgaWYgKHRyZWUudHlwZSAhPT0gJ3Jvb3QnICYmIHJlc3VsdC5jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcmVzdWx0LmNoaWxkcmVuWzBdXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG5cbiAgZnVuY3Rpb24gZnJhZ21lbnQoKSB7XG4gICAgdmFyIGNvbnRleHRcbiAgICB2YXIgbW9ja1xuICAgIHZhciBkb2NcblxuICAgIGNvbnRleHQgPSB7XG4gICAgICBub2RlTmFtZTogJ3RlbXBsYXRlJyxcbiAgICAgIHRhZ05hbWU6ICd0ZW1wbGF0ZScsXG4gICAgICBhdHRyczogW10sXG4gICAgICBuYW1lc3BhY2VVUkk6IG5zLmh0bWwsXG4gICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH1cblxuICAgIG1vY2sgPSB7XG4gICAgICBub2RlTmFtZTogJ2RvY3VtZW50bW9jaycsXG4gICAgICB0YWdOYW1lOiAnZG9jdW1lbnRtb2NrJyxcbiAgICAgIGF0dHJzOiBbXSxcbiAgICAgIG5hbWVzcGFjZVVSSTogbnMuaHRtbCxcbiAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfVxuXG4gICAgZG9jID0ge1xuICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9XG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChtb2NrLCBjb250ZXh0KVxuICAgIHBhcnNlci5fcHVzaFRtcGxJbnNlcnRpb25Nb2RlKGluVGVtcGxhdGVNb2RlKVxuICAgIHBhcnNlci5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpXG4gICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKVxuICAgIHBhcnNlci5fcmVzZXRJbnNlcnRpb25Nb2RlKClcbiAgICBwYXJzZXIuX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKVxuXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcGFyc2VyLl9hZG9wdE5vZGVzKG1vY2suY2hpbGROb2Rlc1swXSwgZG9jKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gZG9jdW1lbnQoKSB7XG4gICAgdmFyIGRvYyA9IHBhcnNlci50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpXG5cbiAgICBwYXJzZXIuX2Jvb3RzdHJhcChkb2MsIG51bGwpXG4gICAgdG9rZW5pemVyID0gcGFyc2VyLnRva2VuaXplclxuICAgIHByZXByb2Nlc3NvciA9IHRva2VuaXplci5wcmVwcm9jZXNzb3JcbiAgICBsb2NhdGlvblRyYWNrZXIgPSB0b2tlbml6ZXIuX19taXhpbnNbMF1cbiAgICBwb3NUcmFja2VyID0gbG9jYXRpb25UcmFja2VyLnBvc1RyYWNrZXJcblxuICAgIG9uZSh0cmVlKVxuXG4gICAgcmV0dXJuIGRvY1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsKG5vZGVzKSB7XG4gICAgdmFyIGxlbmd0aCA9IDBcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgLSBpbnZhbGlkIG5vZGVzLCBzZWUgcmVoeXBlanMvcmVoeXBlLXJhdyM3LiAqL1xuICAgIGlmIChub2Rlcykge1xuICAgICAgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIG9uZShub2Rlc1tpbmRleF0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm9vdChub2RlKSB7XG4gICAgYWxsKG5vZGUuY2hpbGRyZW4pXG4gIH1cblxuICBmdW5jdGlvbiBlbGVtZW50KG5vZGUpIHtcbiAgICB2YXIgZW1wdHkgPSB2b2lkcy5pbmRleE9mKG5vZGUudGFnTmFtZSkgIT09IC0xXG5cbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbihzdGFydFRhZyhub2RlKSwgbnMuaHRtbClcblxuICAgIGFsbChub2RlLmNoaWxkcmVuKVxuXG4gICAgaWYgKCFlbXB0eSkge1xuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oZW5kVGFnKG5vZGUpKVxuXG4gICAgICAvLyBQdXQgdGhlIHBhcnNlciBiYWNrIGluIHRoZSBkYXRhIHN0YXRlOiBzb21lIGVsZW1lbnRzLCBsaWtlIHRleHRhcmVhc1xuICAgICAgLy8gYW5kIGlmcmFtZXMsIGNoYW5nZSB0aGUgc3RhdGUuXG4gICAgICAvLyBTZWUgPHN5bnRheC10cmVlL2hhc3QtdXRpbC1yYXcjNz4uXG4gICAgICAvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8yNTI4MTk2L3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMjI+LlxuICAgICAgdG9rZW5pemVyLnN0YXRlID0gZGF0YVN0YXRlXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGV4dChub2RlKSB7XG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogY2hhcmFjdGVyVG9rZW4sXG4gICAgICBjaGFyczogbm9kZS52YWx1ZSxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBkb2N0eXBlKG5vZGUpIHtcbiAgICB2YXIgcDUgPSB0b1BhcnNlNShub2RlKVxuXG4gICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4oe1xuICAgICAgdHlwZTogZG9jdHlwZVRva2VuLFxuICAgICAgbmFtZTogcDUubmFtZSxcbiAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgIHB1YmxpY0lkOiBwNS5wdWJsaWNJZCxcbiAgICAgIHN5c3RlbUlkOiBwNS5zeXN0ZW1JZCxcbiAgICAgIGxvY2F0aW9uOiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb21tZW50KG5vZGUpIHtcbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBjb21tZW50VG9rZW4sXG4gICAgICBkYXRhOiBub2RlLnZhbHVlLFxuICAgICAgbG9jYXRpb246IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhdyhub2RlKSB7XG4gICAgdmFyIHN0YXJ0ID0gcG9zLnN0YXJ0KG5vZGUpXG4gICAgdmFyIHRva2VuXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3I6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzPi5cbiAgICBwcmVwcm9jZXNzb3IuaHRtbCA9IG51bGxcbiAgICBwcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCA9IGZhbHNlXG4gICAgcHJlcHJvY2Vzc29yLmxhc3RDaHVua1dyaXR0ZW4gPSBmYWxzZVxuICAgIHByZXByb2Nlc3Nvci5sYXN0Q2hhclBvcyA9IC0xXG4gICAgcHJlcHJvY2Vzc29yLnBvcyA9IC0xXG5cbiAgICAvLyBSZXNldCBwcmVwcm9jZXNzb3IgbWl4aW46XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL3Bvc2l0aW9uLXRyYWNraW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcz4uXG4gICAgcG9zVHJhY2tlci5kcm9wcGVkQnVmZmVyU2l6ZSA9IDBcbiAgICBwb3NUcmFja2VyLmxpbmUgPSBzdGFydC5saW5lXG4gICAgcG9zVHJhY2tlci5jb2wgPSAxXG4gICAgcG9zVHJhY2tlci5vZmZzZXQgPSAwXG4gICAgcG9zVHJhY2tlci5saW5lU3RhcnRQb3MgPSAtc3RhcnQuY29sdW1uICsgMVxuICAgIHBvc1RyYWNrZXIuZHJvcHBlZEJ1ZmZlclNpemUgPSBzdGFydC5vZmZzZXRcblxuICAgIC8vIFJlc2V0IGxvY2F0aW9uIHRyYWNrZXI6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vdG9rZW5pemVyLW1peGluLmpzPi5cbiAgICBsb2NhdGlvblRyYWNrZXIuY3VycmVudEF0dHJMb2NhdGlvbiA9IG51bGxcbiAgICBsb2NhdGlvblRyYWNrZXIuY3RMb2MgPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gICAgLy8gU2VlIHRoZSBjb2RlIGZvciBgcGFyc2VgIGFuZCBgcGFyc2VGcmFnbWVudGA6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzA0OTE5MDIvcGFja2FnZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMjTDM3MT4uXG4gICAgdG9rZW5pemVyLndyaXRlKG5vZGUudmFsdWUpXG4gICAgcGFyc2VyLl9ydW5QYXJzaW5nTG9vcChudWxsKVxuXG4gICAgLy8gUHJvY2VzcyBmaW5hbCBjaGFyYWN0ZXJzIGlmIHRoZXnigJlyZSBzdGlsbCB0aGVyZSBhZnRlciBoaWJlcm5hdGluZy5cbiAgICAvLyBTaW1pbGFyIHRvOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi8zYmZhN2Q5L3BhY2thZ2VzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyNMOTU+LlxuICAgIHRva2VuID0gdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlblxuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRMaW5lID0gcG9zVHJhY2tlci5saW5lXG4gICAgICB0b2tlbi5sb2NhdGlvbi5lbmRDb2wgPSBwb3NUcmFja2VyLmNvbCArIDFcbiAgICAgIHRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IHBvc1RyYWNrZXIub2Zmc2V0ICsgMVxuICAgICAgcGFyc2VyLl9wcm9jZXNzVG9rZW4odG9rZW4pXG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdG9rZW5pemVyOlxuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9pbmlrdWxpbi9wYXJzZTUvYmxvYi84YjAwNDhlL3BhY2thZ2VzL3BhcnNlNS9saWIvdG9rZW5pemVyL2luZGV4LmpzI0wyMTU+LlxuICAgIHRva2VuaXplci5jdXJyZW50VG9rZW4gPSBudWxsXG4gICAgdG9rZW5pemVyLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGxcbiAgICB0b2tlbml6ZXIuY3VycmVudEF0dHIgPSBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRUYWcobm9kZSkge1xuICB2YXIgbG9jYXRpb24gPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gIGxvY2F0aW9uLnN0YXJ0VGFnID0geHRlbmQobG9jYXRpb24pXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBzdGFydFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgYXR0cnM6IGF0dHJpYnV0ZXMobm9kZSksXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0cmlidXRlcyhub2RlKSB7XG4gIHJldHVybiB0b1BhcnNlNSh7XG4gICAgdGFnTmFtZTogbm9kZS50YWdOYW1lLFxuICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICBwcm9wZXJ0aWVzOiBub2RlLnByb3BlcnRpZXNcbiAgfSkuYXR0cnNcbn1cblxuZnVuY3Rpb24gZW5kVGFnKG5vZGUpIHtcbiAgdmFyIGxvY2F0aW9uID0gY3JlYXRlUGFyc2U1TG9jYXRpb24obm9kZSlcblxuICBsb2NhdGlvbi5lbmRUYWcgPSB4dGVuZChsb2NhdGlvbilcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGVuZFRhZ1Rva2VuLFxuICAgIHRhZ05hbWU6IG5vZGUudGFnTmFtZSxcbiAgICBhdHRyczogW10sXG4gICAgbG9jYXRpb246IGxvY2F0aW9uXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5rbm93bihub2RlKSB7XG4gIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbXBpbGUgYCcgKyBub2RlLnR5cGUgKyAnYCBub2RlJylcbn1cblxuZnVuY3Rpb24gZG9jdW1lbnRNb2RlKG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBub2RlLnR5cGUgPT09ICdyb290JyA/IG5vZGUuY2hpbGRyZW5bMF0gOiBub2RlXG5cbiAgcmV0dXJuIGhlYWQgJiYgKGhlYWQudHlwZSA9PT0gJ2RvY3R5cGUnIHx8IGhlYWQudGFnTmFtZSA9PT0gJ2h0bWwnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKSB7XG4gIHZhciBzdGFydCA9IHBvcy5zdGFydChub2RlKVxuICB2YXIgZW5kID0gcG9zLmVuZChub2RlKVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnRMaW5lOiBzdGFydC5saW5lLFxuICAgIHN0YXJ0Q29sOiBzdGFydC5jb2x1bW4sXG4gICAgc3RhcnRPZmZzZXQ6IHN0YXJ0Lm9mZnNldCxcbiAgICBlbmRMaW5lOiBlbmQubGluZSxcbiAgICBlbmRDb2w6IGVuZC5jb2x1bW4sXG4gICAgZW5kT2Zmc2V0OiBlbmQub2Zmc2V0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1yYXcnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhd1xuXG5mdW5jdGlvbiByYXcoKSB7XG4gIHJldHVybiB1dGlsXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0XG5cbmZ1bmN0aW9uIGNvbnZlcnQodGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gIH1cblxuICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gb2tcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gKCdsZW5ndGgnIGluIHRlc3QgPyBhbnlGYWN0b3J5IDogbWF0Y2hlc0ZhY3RvcnkpKHRlc3QpXG4gIH1cblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVzdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbGwodGVzdHMpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgbGVuZ3RoID0gdGVzdHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuLy8gVXRpbGl0eSBhc3NlcnQgZWFjaCBwcm9wZXJ0eSBpbiBgdGVzdGAgaXMgcmVwcmVzZW50ZWQgaW4gYG5vZGVgLCBhbmQgZWFjaFxuLy8gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbC5cbmZ1bmN0aW9uIG1hdGNoZXNGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKG5vZGUpIHtcbiAgICB2YXIga2V5XG5cbiAgICBmb3IgKGtleSBpbiB0ZXN0KSB7XG4gICAgICBpZiAobm9kZVtrZXldICE9PSB0ZXN0W2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIHZhciBjaGVja3MgPSBjb252ZXJ0QWxsKHRlc3RzKVxuICB2YXIgbGVuZ3RoID0gY2hlY2tzLmxlbmd0aFxuXG4gIHJldHVybiBtYXRjaGVzXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcygpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGdpdmVuIG5vZGXigJlzIHR5cGVcbi8vIGZvciBzYWlkIHN0cmluZy5cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KHRlc3QpIHtcbiAgcmV0dXJuIHR5cGVcblxuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUudHlwZSA9PT0gdGVzdClcbiAgfVxufVxuXG4vLyBVdGlsaXR5IHRvIHJldHVybiB0cnVlLlxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB2aXNpdFBhcmVudHNcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG52YXIgQ09OVElOVUUgPSB0cnVlXG52YXIgU0tJUCA9ICdza2lwJ1xudmFyIEVYSVQgPSBmYWxzZVxuXG52aXNpdFBhcmVudHMuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXRQYXJlbnRzLlNLSVAgPSBTS0lQXG52aXNpdFBhcmVudHMuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgdmFyIGlzXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICBpcyA9IGNvbnZlcnQodGVzdClcblxuICBvbmUodHJlZSwgbnVsbCwgW10pXG5cbiAgLy8gVmlzaXQgYSBzaW5nbGUgbm9kZS5cbiAgZnVuY3Rpb24gb25lKG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgdmFyIHN1YnJlc3VsdFxuXG4gICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgc3VicmVzdWx0ID0gdG9SZXN1bHQoYWxsKG5vZGUuY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5vZGUpKSlcbiAgICAgIHJldHVybiBzdWJyZXN1bHRbMF0gPT09IEVYSVQgPyBzdWJyZXN1bHQgOiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBWaXNpdCBjaGlsZHJlbiBpbiBgcGFyZW50YC5cbiAgZnVuY3Rpb24gYWxsKGNoaWxkcmVuLCBwYXJlbnRzKSB7XG4gICAgdmFyIG1pbiA9IC0xXG4gICAgdmFyIHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG4gICAgdmFyIGluZGV4ID0gKHJldmVyc2UgPyBjaGlsZHJlbi5sZW5ndGggOiBtaW4pICsgc3RlcFxuICAgIHZhciByZXN1bHRcblxuICAgIHdoaWxlIChpbmRleCA+IG1pbiAmJiBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gb25lKGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudHMpXG5cbiAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHR5cGVvZiByZXN1bHRbMV0gPT09ICdudW1iZXInID8gcmVzdWx0WzFdIDogaW5kZXggKyBzdGVwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0XG5cbnZhciB2aXNpdFBhcmVudHMgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKVxuXG52YXIgQ09OVElOVUUgPSB2aXNpdFBhcmVudHMuQ09OVElOVUVcbnZhciBTS0lQID0gdmlzaXRQYXJlbnRzLlNLSVBcbnZhciBFWElUID0gdmlzaXRQYXJlbnRzLkVYSVRcblxudmlzaXQuQ09OVElOVUUgPSBDT05USU5VRVxudmlzaXQuU0tJUCA9IFNLSVBcbnZpc2l0LkVYSVQgPSBFWElUXG5cbmZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICB2aXNpdG9yID0gdGVzdFxuICAgIHRlc3QgPSBudWxsXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICB2YXIgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IG51bGxcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJrYXRleFwiXSA9IGZhY3RvcnkoKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9zcmMva2F0ZXgubGVzc1xudmFyIGthdGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU291cmNlTG9jYXRpb24uanNcbi8qKlxuICogTGV4aW5nIG9yIHBhcnNpbmcgcG9zaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nLlxuICogVGhpcyBvYmplY3QgaXMgaW1tdXRhYmxlLlxuICovXG52YXIgU291cmNlTG9jYXRpb24gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvLyBUaGUgKyBwcmVmaXggaW5kaWNhdGVzIHRoYXQgdGhlc2UgZmllbGRzIGFyZW4ndCB3cml0ZWFibGVcbiAgLy8gTGV4ZXIgaG9sZGluZyB0aGUgaW5wdXQgc3RyaW5nLlxuICAvLyBTdGFydCBvZmZzZXQsIHplcm8tYmFzZWQgaW5jbHVzaXZlLlxuICAvLyBFbmQgb2Zmc2V0LCB6ZXJvLWJhc2VkIGV4Y2x1c2l2ZS5cbiAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24obGV4ZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhcnQgPSB2b2lkIDA7XG4gICAgdGhpcy5lbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5sZXhlciA9IGxleGVyO1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgfVxuICAvKipcbiAgICogTWVyZ2VzIHR3byBgU291cmNlTG9jYXRpb25gcyBmcm9tIGxvY2F0aW9uIHByb3ZpZGVycywgZ2l2ZW4gdGhleSBhcmVcbiAgICogcHJvdmlkZWQgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZS5cbiAgICogLSBSZXR1cm5zIHRoZSBmaXJzdCBvbmUncyBsb2NhdGlvbiBpZiBvbmx5IHRoZSBmaXJzdCBpcyBwcm92aWRlZC5cbiAgICogLSBSZXR1cm5zIGEgbWVyZ2VkIHJhbmdlIG9mIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaWYgYm90aCBhcmUgcHJvdmlkZWRcbiAgICogICBhbmQgdGhlaXIgbGV4ZXJzIG1hdGNoLlxuICAgKiAtIE90aGVyd2lzZSwgcmV0dXJucyBudWxsLlxuICAgKi9cblxuXG4gIFNvdXJjZUxvY2F0aW9uLnJhbmdlID0gZnVuY3Rpb24gcmFuZ2UoZmlyc3QsIHNlY29uZCkge1xuICAgIGlmICghc2Vjb25kKSB7XG4gICAgICByZXR1cm4gZmlyc3QgJiYgZmlyc3QubG9jO1xuICAgIH0gZWxzZSBpZiAoIWZpcnN0IHx8ICFmaXJzdC5sb2MgfHwgIXNlY29uZC5sb2MgfHwgZmlyc3QubG9jLmxleGVyICE9PSBzZWNvbmQubG9jLmxleGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTb3VyY2VMb2NhdGlvbihmaXJzdC5sb2MubGV4ZXIsIGZpcnN0LmxvYy5zdGFydCwgc2Vjb25kLmxvYy5lbmQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU291cmNlTG9jYXRpb247XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvVG9rZW4uanNcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVxdWlyZWQgdG8gYnJlYWsgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFRva2VuLCBMZXhlciwgYW5kXG4gKiBQYXJzZUVycm9yLlxuICovXG5cbi8qKlxuICogVGhlIHJlc3VsdGluZyB0b2tlbiByZXR1cm5lZCBmcm9tIGBsZXhgLlxuICpcbiAqIEl0IGNvbnNpc3RzIG9mIHRoZSB0b2tlbiB0ZXh0IHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqIFRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWxseSBhIHJhbmdlIGluIGFuIGlucHV0IHN0cmluZyxcbiAqIGJ1dCBpbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIHRoZSBiYXJlIGlucHV0IHN0cmluZywgd2UgcmVmZXIgdG8gdGhlIGxleGVyLlxuICogVGhhdCB3YXkgaXQgaXMgcG9zc2libGUgdG8gYXR0YWNoIGV4dHJhIG1ldGFkYXRhIHRvIHRoZSBpbnB1dCBzdHJpbmcsXG4gKiBsaWtlIGZvciBleGFtcGxlIGEgZmlsZSBuYW1lIG9yIHNpbWlsYXIuXG4gKlxuICogVGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIG9wdGlvbmFsLCBzbyBpdCBpcyBPSyB0byBjb25zdHJ1Y3Qgc3ludGhldGljXG4gKiB0b2tlbnMgaWYgYXBwcm9wcmlhdGUuIE5vdCBwcm92aWRpbmcgYXZhaWxhYmxlIHBvc2l0aW9uIGluZm9ybWF0aW9uIG1heVxuICogbGVhZCB0byBkZWdyYWRlZCBlcnJvciByZXBvcnRpbmcsIHRob3VnaC5cbiAqL1xudmFyIFRva2VuX1Rva2VuID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVG9rZW4odGV4dCwgLy8gdGhlIHRleHQgb2YgdGhpcyB0b2tlblxuICBsb2MpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy5sb2MgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLmxvYyA9IGxvYztcbiAgfVxuICAvKipcbiAgICogR2l2ZW4gYSBwYWlyIG9mIHRva2VucyAodGhpcyBhbmQgZW5kVG9rZW4pLCBjb21wdXRlIGEgYFRva2VuYCBlbmNvbXBhc3NpbmdcbiAgICogdGhlIHdob2xlIGlucHV0IHJhbmdlIGVuY2xvc2VkIGJ5IHRoZXNlIHR3by5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gVG9rZW4ucHJvdG90eXBlO1xuXG4gIF9wcm90by5yYW5nZSA9IGZ1bmN0aW9uIHJhbmdlKGVuZFRva2VuLCAvLyBsYXN0IHRva2VuIG9mIHRoZSByYW5nZSwgaW5jbHVzaXZlXG4gIHRleHQpIC8vIHRoZSB0ZXh0IG9mIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCB0b2tlblxuICB7XG4gICAgcmV0dXJuIG5ldyBUb2tlbih0ZXh0LCBTb3VyY2VMb2NhdGlvbi5yYW5nZSh0aGlzLCBlbmRUb2tlbikpO1xuICB9O1xuXG4gIHJldHVybiBUb2tlbjtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL1BhcnNlRXJyb3IuanNcblxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIFBhcnNlRXJyb3IgY2xhc3MsIHdoaWNoIGlzIHRoZSBtYWluIGVycm9yIHRocm93biBieSBLYVRlWFxuICogZnVuY3Rpb25zIHdoZW4gc29tZXRoaW5nIGhhcyBnb25lIHdyb25nLiBUaGlzIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggaW50ZXJuYWxcbiAqIGVycm9ycyBmcm9tIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiB0aGF0IHRoZSB1c2VyIHByb3ZpZGVkLlxuICpcbiAqIElmIHBvc3NpYmxlLCBhIGNhbGxlciBzaG91bGQgcHJvdmlkZSBhIFRva2VuIG9yIFBhcnNlTm9kZSB3aXRoIGluZm9ybWF0aW9uXG4gKiBhYm91dCB3aGVyZSBpbiB0aGUgc291cmNlIHN0cmluZyB0aGUgcHJvYmxlbSBvY2N1cnJlZC5cbiAqL1xudmFyIFBhcnNlRXJyb3IgPSAvLyBFcnJvciBwb3NpdGlvbiBiYXNlZCBvbiBwYXNzZWQtaW4gVG9rZW4gb3IgUGFyc2VOb2RlLlxuZnVuY3Rpb24gUGFyc2VFcnJvcihtZXNzYWdlLCAvLyBUaGUgZXJyb3IgbWVzc2FnZVxudG9rZW4pIC8vIEFuIG9iamVjdCBwcm92aWRpbmcgcG9zaXRpb24gaW5mb3JtYXRpb25cbntcbiAgdGhpcy5wb3NpdGlvbiA9IHZvaWQgMDtcbiAgdmFyIGVycm9yID0gXCJLYVRlWCBwYXJzZSBlcnJvcjogXCIgKyBtZXNzYWdlO1xuICB2YXIgc3RhcnQ7XG4gIHZhciBsb2MgPSB0b2tlbiAmJiB0b2tlbi5sb2M7XG5cbiAgaWYgKGxvYyAmJiBsb2Muc3RhcnQgPD0gbG9jLmVuZCkge1xuICAgIC8vIElmIHdlIGhhdmUgdGhlIGlucHV0IGFuZCBhIHBvc2l0aW9uLCBtYWtlIHRoZSBlcnJvciBhIGJpdCBmYW5jaWVyXG4gICAgLy8gR2V0IHRoZSBpbnB1dFxuICAgIHZhciBpbnB1dCA9IGxvYy5sZXhlci5pbnB1dDsgLy8gUHJlcGVuZCBzb21lIGluZm9ybWF0aW9uXG5cbiAgICBzdGFydCA9IGxvYy5zdGFydDtcbiAgICB2YXIgZW5kID0gbG9jLmVuZDtcblxuICAgIGlmIChzdGFydCA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBlbmQgb2YgaW5wdXQ6IFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvciArPSBcIiBhdCBwb3NpdGlvbiBcIiArIChzdGFydCArIDEpICsgXCI6IFwiO1xuICAgIH0gLy8gVW5kZXJsaW5lIHRva2VuIGluIHF1ZXN0aW9uIHVzaW5nIGNvbWJpbmluZyB1bmRlcnNjb3Jlc1xuXG5cbiAgICB2YXIgdW5kZXJsaW5lZCA9IGlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpLnJlcGxhY2UoL1teXS9nLCBcIiQmXFx1MDMzMlwiKTsgLy8gRXh0cmFjdCBzb21lIGNvbnRleHQgZnJvbSB0aGUgaW5wdXQgYW5kIGFkZCBpdCB0byB0aGUgZXJyb3JcblxuICAgIHZhciBsZWZ0O1xuXG4gICAgaWYgKHN0YXJ0ID4gMTUpIHtcbiAgICAgIGxlZnQgPSBcIuKAplwiICsgaW5wdXQuc2xpY2Uoc3RhcnQgLSAxNSwgc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gaW5wdXQuc2xpY2UoMCwgc3RhcnQpO1xuICAgIH1cblxuICAgIHZhciByaWdodDtcblxuICAgIGlmIChlbmQgKyAxNSA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcmlnaHQgPSBpbnB1dC5zbGljZShlbmQsIGVuZCArIDE1KSArIFwi4oCmXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJpZ2h0ID0gaW5wdXQuc2xpY2UoZW5kKTtcbiAgICB9XG5cbiAgICBlcnJvciArPSBsZWZ0ICsgdW5kZXJsaW5lZCArIHJpZ2h0O1xuICB9IC8vIFNvbWUgaGFja2VyeSB0byBtYWtlIFBhcnNlRXJyb3IgYSBwcm90b3R5cGUgb2YgRXJyb3JcbiAgLy8gU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzg0NjA3NTNcblxuXG4gIHZhciBzZWxmID0gbmV3IEVycm9yKGVycm9yKTtcbiAgc2VsZi5uYW1lID0gXCJQYXJzZUVycm9yXCI7IC8vICRGbG93Rml4TWVcblxuICBzZWxmLl9fcHJvdG9fXyA9IFBhcnNlRXJyb3IucHJvdG90eXBlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgc2VsZi5wb3NpdGlvbiA9IHN0YXJ0O1xuICByZXR1cm4gc2VsZjtcbn07IC8vICRGbG93Rml4TWUgTW9yZSBoYWNrZXJ5XG5cblxuUGFyc2VFcnJvci5wcm90b3R5cGUuX19wcm90b19fID0gRXJyb3IucHJvdG90eXBlO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1BhcnNlRXJyb3IgPSAoUGFyc2VFcnJvcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIHdoaWNoIGFyZSB1c2VmdWwgaW4gb3RoZXJcbiAqIGZpbGVzLlxuICovXG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBjb250YWluZWQgaW4gYSBsaXN0XG4gKi9cbnZhciBjb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGxpc3QsIGVsZW0pIHtcbiAgcmV0dXJuIGxpc3QuaW5kZXhPZihlbGVtKSAhPT0gLTE7XG59O1xuLyoqXG4gKiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBpZiBhIHNldHRpbmcgaXMgdW5kZWZpbmVkXG4gKiBOT1RFOiBDb3VsZG4ndCB1c2UgYFRgIGFzIHRoZSBvdXRwdXQgdHlwZSBkdWUgdG8gZmFjZWJvb2svZmxvdyM1MDIyLlxuICovXG5cblxudmFyIGRlZmx0ID0gZnVuY3Rpb24gZGVmbHQoc2V0dGluZywgZGVmYXVsdElmVW5kZWZpbmVkKSB7XG4gIHJldHVybiBzZXR0aW5nID09PSB1bmRlZmluZWQgPyBkZWZhdWx0SWZVbmRlZmluZWQgOiBzZXR0aW5nO1xufTsgLy8gaHlwaGVuYXRlIGFuZCBlc2NhcGUgYWRhcHRlZCBmcm9tIEZhY2Vib29rJ3MgUmVhY3QgdW5kZXIgQXBhY2hlIDIgbGljZW5zZVxuXG5cbnZhciB1cHBlcmNhc2UgPSAvKFtBLVpdKS9nO1xuXG52YXIgaHlwaGVuYXRlID0gZnVuY3Rpb24gaHlwaGVuYXRlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UodXBwZXJjYXNlLCBcIi0kMVwiKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIEVTQ0FQRV9MT09LVVAgPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPlwiOiBcIiZndDtcIixcbiAgXCI8XCI6IFwiJmx0O1wiLFxuICBcIlxcXCJcIjogXCImcXVvdDtcIixcbiAgXCInXCI6IFwiJiN4Mjc7XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYID0gL1smPjxcIiddL2c7XG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICovXG5cbmZ1bmN0aW9uIHV0aWxzX2VzY2FwZSh0ZXh0KSB7XG4gIHJldHVybiBTdHJpbmcodGV4dCkucmVwbGFjZShFU0NBUEVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBFU0NBUEVfTE9PS1VQW21hdGNoXTtcbiAgfSk7XG59XG4vKipcbiAqIFNvbWV0aW1lcyB3ZSB3YW50IHRvIHB1bGwgb3V0IHRoZSBpbm5lcm1vc3QgZWxlbWVudCBvZiBhIGdyb3VwLiBJbiBtb3N0XG4gKiBjYXNlcywgdGhpcyB3aWxsIGp1c3QgYmUgdGhlIGdyb3VwIGl0c2VsZiwgYnV0IHdoZW4gb3JkZ3JvdXBzIGFuZCBjb2xvcnMgaGF2ZVxuICogYSBzaW5nbGUgZWxlbWVudCwgd2Ugd2FudCB0byBwdWxsIHRoYXQgb3V0LlxuICovXG5cblxudmFyIGdldEJhc2VFbGVtID0gZnVuY3Rpb24gZ2V0QmFzZUVsZW0oZ3JvdXApIHtcbiAgaWYgKGdyb3VwLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiY29sb3JcIikge1xuICAgIGlmIChncm91cC5ib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLnR5cGUgPT09IFwiZm9udFwiKSB7XG4gICAgcmV0dXJuIGdldEJhc2VFbGVtKGdyb3VwLmJvZHkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBncm91cDtcbiAgfVxufTtcbi8qKlxuICogVGVYYm9vayBhbGdvcml0aG1zIG9mdGVuIHJlZmVyZW5jZSBcImNoYXJhY3RlciBib3hlc1wiLCB3aGljaCBhcmUgc2ltcGx5IGdyb3Vwc1xuICogd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlbS4gVG8gZGVjaWRlIGlmIHNvbWV0aGluZyBpcyBhIGNoYXJhY3RlciBib3gsXG4gKiB3ZSBmaW5kIGl0cyBpbm5lcm1vc3QgZ3JvdXAsIGFuZCBzZWUgaWYgaXQgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLlxuICovXG5cblxudmFyIHV0aWxzX2lzQ2hhcmFjdGVyQm94ID0gZnVuY3Rpb24gaXNDaGFyYWN0ZXJCb3goZ3JvdXApIHtcbiAgdmFyIGJhc2VFbGVtID0gZ2V0QmFzZUVsZW0oZ3JvdXApOyAvLyBUaGVzZSBhcmUgYWxsIHRoZXkgdHlwZXMgb2YgZ3JvdXBzIHdoaWNoIGhvbGQgc2luZ2xlIGNoYXJhY3RlcnNcblxuICByZXR1cm4gYmFzZUVsZW0udHlwZSA9PT0gXCJtYXRob3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJ0ZXh0b3JkXCIgfHwgYmFzZUVsZW0udHlwZSA9PT0gXCJhdG9tXCI7XG59O1xuXG52YXIgYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vbi1udWxsLCBidXQgZ290ICcgKyBTdHJpbmcodmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG4vKipcbiAqIFJldHVybiB0aGUgcHJvdG9jb2wgb2YgYSBVUkwsIG9yIFwiX3JlbGF0aXZlXCIgaWYgdGhlIFVSTCBkb2VzIG5vdCBzcGVjaWZ5IGFcbiAqIHByb3RvY29sIChhbmQgdGh1cyBpcyByZWxhdGl2ZSkuXG4gKi9cblxudmFyIHByb3RvY29sRnJvbVVybCA9IGZ1bmN0aW9uIHByb3RvY29sRnJvbVVybCh1cmwpIHtcbiAgdmFyIHByb3RvY29sID0gL15cXHMqKFteXFxcXC8jXSo/KSg/Ojp8JiMwKjU4fCYjeDAqM2EpL2kuZXhlYyh1cmwpO1xuICByZXR1cm4gcHJvdG9jb2wgIT0gbnVsbCA/IHByb3RvY29sWzFdIDogXCJfcmVsYXRpdmVcIjtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1dGlscyA9ICh7XG4gIGNvbnRhaW5zOiBjb250YWlucyxcbiAgZGVmbHQ6IGRlZmx0LFxuICBlc2NhcGU6IHV0aWxzX2VzY2FwZSxcbiAgaHlwaGVuYXRlOiBoeXBoZW5hdGUsXG4gIGdldEJhc2VFbGVtOiBnZXRCYXNlRWxlbSxcbiAgaXNDaGFyYWN0ZXJCb3g6IHV0aWxzX2lzQ2hhcmFjdGVyQm94LFxuICBwcm90b2NvbEZyb21Vcmw6IHByb3RvY29sRnJvbVVybFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9TZXR0aW5ncy5qc1xuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBtb2R1bGUgZm9yIHN0b3Jpbmcgc2V0dGluZ3MgcGFzc2VkIGludG8gS2FUZVguIEl0IGNvcnJlY3RseSBoYW5kbGVzXG4gKiBkZWZhdWx0IHNldHRpbmdzLlxuICovXG5cblxuXG5cbi8qKlxuICogVGhlIG1haW4gU2V0dGluZ3Mgb2JqZWN0XG4gKlxuICogVGhlIGN1cnJlbnQgb3B0aW9ucyBzdG9yZWQgYXJlOlxuICogIC0gZGlzcGxheU1vZGU6IFdoZXRoZXIgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIHR5cGVzZXQgYXMgaW5saW5lIG1hdGhcbiAqICAgICAgICAgICAgICAgICAoZmFsc2UsIHRoZSBkZWZhdWx0KSwgbWVhbmluZyB0aGF0IHRoZSBtYXRoIHN0YXJ0cyBpblxuICogICAgICAgICAgICAgICAgIFxcdGV4dHN0eWxlIGFuZCBpcyBwbGFjZWQgaW4gYW4gaW5saW5lLWJsb2NrKTsgb3IgYXMgZGlzcGxheVxuICogICAgICAgICAgICAgICAgIG1hdGggKHRydWUpLCBtZWFuaW5nIHRoYXQgdGhlIG1hdGggc3RhcnRzIGluIFxcZGlzcGxheXN0eWxlXG4gKiAgICAgICAgICAgICAgICAgYW5kIGlzIHBsYWNlZCBpbiBhIGJsb2NrIHdpdGggdmVydGljYWwgbWFyZ2luLlxuICovXG52YXIgU2V0dGluZ3NfU2V0dGluZ3MgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTZXR0aW5ncyhvcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHZvaWQgMDtcbiAgICB0aGlzLm91dHB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLmxlcW5vID0gdm9pZCAwO1xuICAgIHRoaXMuZmxlcW4gPSB2b2lkIDA7XG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5lcnJvckNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9ySXNUZXh0Q29sb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHJpY3QgPSB2b2lkIDA7XG4gICAgdGhpcy50cnVzdCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heFNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhFeHBhbmQgPSB2b2lkIDA7XG4gICAgLy8gYWxsb3cgbnVsbCBvcHRpb25zXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZGlzcGxheU1vZGUsIGZhbHNlKTtcbiAgICB0aGlzLm91dHB1dCA9IHV0aWxzLmRlZmx0KG9wdGlvbnMub3V0cHV0LCBcImh0bWxBbmRNYXRobWxcIik7XG4gICAgdGhpcy5sZXFubyA9IHV0aWxzLmRlZmx0KG9wdGlvbnMubGVxbm8sIGZhbHNlKTtcbiAgICB0aGlzLmZsZXFuID0gdXRpbHMuZGVmbHQob3B0aW9ucy5mbGVxbiwgZmFsc2UpO1xuICAgIHRoaXMudGhyb3dPbkVycm9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy50aHJvd09uRXJyb3IsIHRydWUpO1xuICAgIHRoaXMuZXJyb3JDb2xvciA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuZXJyb3JDb2xvciwgXCIjY2MwMDAwXCIpO1xuICAgIHRoaXMubWFjcm9zID0gb3B0aW9ucy5tYWNyb3MgfHwge307XG4gICAgdGhpcy5taW5SdWxlVGhpY2tuZXNzID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzLCAwKSk7XG4gICAgdGhpcy5jb2xvcklzVGV4dENvbG9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy5jb2xvcklzVGV4dENvbG9yLCBmYWxzZSk7XG4gICAgdGhpcy5zdHJpY3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnN0cmljdCwgXCJ3YXJuXCIpO1xuICAgIHRoaXMudHJ1c3QgPSB1dGlscy5kZWZsdChvcHRpb25zLnRydXN0LCBmYWxzZSk7XG4gICAgdGhpcy5tYXhTaXplID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhTaXplLCBJbmZpbml0eSkpO1xuICAgIHRoaXMubWF4RXhwYW5kID0gTWF0aC5tYXgoMCwgdXRpbHMuZGVmbHQob3B0aW9ucy5tYXhFeHBhbmQsIDEwMDApKTtcbiAgfVxuICAvKipcbiAgICogUmVwb3J0IG5vbnN0cmljdCAobm9uLUxhVGVYLWNvbXBhdGlibGUpIGlucHV0LlxuICAgKiBDYW4gc2FmZWx5IG5vdCBiZSBjYWxsZWQgaWYgYHRoaXMuc3RyaWN0YCBpcyBmYWxzZSBpbiBKYXZhU2NyaXB0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBTZXR0aW5ncy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnJlcG9ydE5vbnN0cmljdCA9IGZ1bmN0aW9uIHJlcG9ydE5vbnN0cmljdChlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgc3RyaWN0ID0gc3RyaWN0KGVycm9yQ29kZSwgZXJyb3JNc2csIHRva2VuKTtcbiAgICB9XG5cbiAgICBpZiAoIXN0cmljdCB8fCBzdHJpY3QgPT09IFwiaWdub3JlXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gdHJ1ZSB8fCBzdHJpY3QgPT09IFwiZXJyb3JcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gJ2Vycm9yJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIGFwcGx5IHN0cmljdCAoTGFUZVgtYWRoZXJpbmcpIGJlaGF2aW9yIGZvciB1bnVzdWFsXG4gICAqIGlucHV0IChsaWtlIGBcXFxcYCkuICBVbmxpa2UgYG5vbnN0cmljdGAsIHdpbGwgbm90IHRocm93IGFuIGVycm9yO1xuICAgKiBpbnN0ZWFkLCBcImVycm9yXCIgdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAsIHdoaWxlIFwiaWdub3JlXCJcbiAgICogdHJhbnNsYXRlcyB0byBhIHJldHVybiB2YWx1ZSBvZiBgZmFsc2VgLiAgTWF5IHN0aWxsIHByaW50IGEgd2FybmluZzpcbiAgICogXCJ3YXJuXCIgcHJpbnRzIGEgd2FybmluZyBhbmQgcmV0dXJucyBgZmFsc2VgLlxuICAgKiBUaGlzIGlzIGZvciB0aGUgc2Vjb25kIGNhdGVnb3J5IG9mIGBlcnJvckNvZGVgcyBsaXN0ZWQgaW4gdGhlIFJFQURNRS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8udXNlU3RyaWN0QmVoYXZpb3IgPSBmdW5jdGlvbiB1c2VTdHJpY3RCZWhhdmlvcihlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbikge1xuICAgIHZhciBzdHJpY3QgPSB0aGlzLnN0cmljdDtcblxuICAgIGlmICh0eXBlb2Ygc3RyaWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIC8vIEFsbG93IHJldHVybiB2YWx1ZSBvZiBzdHJpY3QgZnVuY3Rpb24gdG8gYmUgYm9vbGVhbiBvciBzdHJpbmdcbiAgICAgIC8vIChvciBudWxsL3VuZGVmaW5lZCwgbWVhbmluZyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcpLlxuICAgICAgLy8gQnV0IGNhdGNoIGFueSBleGNlcHRpb25zIHRocm93biBieSBmdW5jdGlvbiwgdHJlYXRpbmcgdGhlbVxuICAgICAgLy8gbGlrZSBcImVycm9yXCIuXG4gICAgICB0cnkge1xuICAgICAgICBzdHJpY3QgPSBzdHJpY3QoZXJyb3JDb2RlLCBlcnJvck1zZywgdG9rZW4pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3RyaWN0ID0gXCJlcnJvclwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc3RyaWN0IHx8IHN0cmljdCA9PT0gXCJpZ25vcmVcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSB0cnVlIHx8IHN0cmljdCA9PT0gXCJlcnJvclwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdCA9PT0gXCJ3YXJuXCIpIHtcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvICd3YXJuJzogXCIgKyAoZXJyb3JNc2cgKyBcIiBbXCIgKyBlcnJvckNvZGUgKyBcIl1cIikpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3b24ndCBoYXBwZW4gaW4gdHlwZS1zYWZlIGNvZGVcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIkxhVGVYLWluY29tcGF0aWJsZSBpbnB1dCBhbmQgc3RyaWN0IG1vZGUgaXMgc2V0IHRvIFwiICsgKFwidW5yZWNvZ25pemVkICdcIiArIHN0cmljdCArIFwiJzogXCIgKyBlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRvIHRlc3QgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGlucHV0LCBhbmQgcmV0dXJuXG4gICAqIGB0cnVlYCAodHJ1c3RlZCkgb3IgYGZhbHNlYCAodW50cnVzdGVkKS4gIFRoZSBzb2xlIGFyZ3VtZW50IGBjb250ZXh0YFxuICAgKiBzaG91bGQgYmUgYW4gb2JqZWN0IHdpdGggYGNvbW1hbmRgIGZpZWxkIHNwZWNpZnlpbmcgdGhlIHJlbGV2YW50IExhVGVYXG4gICAqIGNvbW1hbmQgKGFzIGEgc3RyaW5nIHN0YXJ0aW5nIHdpdGggYFxcYCksIGFuZCBhbnkgb3RoZXIgYXJndW1lbnRzLCBldGMuXG4gICAqIElmIGBjb250ZXh0YCBoYXMgYSBgdXJsYCBmaWVsZCwgYSBgcHJvdG9jb2xgIGZpZWxkIHdpbGwgYXV0b21hdGljYWxseVxuICAgKiBnZXQgYWRkZWQgYnkgdGhpcyBmdW5jdGlvbiAoY2hhbmdpbmcgdGhlIHNwZWNpZmllZCBvYmplY3QpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5pc1RydXN0ZWQgPSBmdW5jdGlvbiBpc1RydXN0ZWQoY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LnVybCAmJiAhY29udGV4dC5wcm90b2NvbCkge1xuICAgICAgY29udGV4dC5wcm90b2NvbCA9IHV0aWxzLnByb3RvY29sRnJvbVVybChjb250ZXh0LnVybCk7XG4gICAgfVxuXG4gICAgdmFyIHRydXN0ID0gdHlwZW9mIHRoaXMudHJ1c3QgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMudHJ1c3QoY29udGV4dCkgOiB0aGlzLnRydXN0O1xuICAgIHJldHVybiBCb29sZWFuKHRydXN0KTtcbiAgfTtcblxuICByZXR1cm4gU2V0dGluZ3M7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvU3R5bGUuanNcbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFuZCBjbGFzc2VzIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBzdHlsZXNcbiAqIHVzZWQgaW4gVGVYLiBJdCBwcm92aWRlcyBhIGdlbmVyaWMgYFN0eWxlYCBjbGFzcywgd2hpY2ggaG9sZHMgaW5mb3JtYXRpb25cbiAqIGFib3V0IGEgc3BlY2lmaWMgc3R5bGUuIEl0IHRoZW4gcHJvdmlkZXMgaW5zdGFuY2VzIG9mIGFsbCB0aGUgZGlmZmVyZW50IGtpbmRzXG4gKiBvZiBzdHlsZXMgcG9zc2libGUsIGFuZCBwcm92aWRlcyBmdW5jdGlvbnMgdG8gbW92ZSBiZXR3ZWVuIHRoZW0gYW5kIGdldFxuICogaW5mb3JtYXRpb24gYWJvdXQgdGhlbS5cbiAqL1xuXG4vKipcbiAqIFRoZSBtYWluIHN0eWxlIGNsYXNzLiBDb250YWlucyBhIHVuaXF1ZSBpZCBmb3IgdGhlIHN0eWxlLCBhIHNpemUgKHdoaWNoIGlzXG4gKiB0aGUgc2FtZSBmb3IgY3JhbXBlZCBhbmQgdW5jcmFtcGVkIHZlcnNpb24gb2YgYSBzdHlsZSksIGFuZCBhIGNyYW1wZWQgZmxhZy5cbiAqL1xudmFyIFN0eWxlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIHNpemUsIGNyYW1wZWQpIHtcbiAgICB0aGlzLmlkID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNyYW1wZWQgPSB2b2lkIDA7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgdGhpcy5jcmFtcGVkID0gY3JhbXBlZDtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1cGVyc2NyaXB0IGdpdmVuIGEgYmFzZSBpbiB0aGUgY3VycmVudCBzdHlsZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3R5bGUucHJvdG90eXBlO1xuXG4gIF9wcm90by5zdXAgPSBmdW5jdGlvbiBzdXAoKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfc3VwW3RoaXMuaWRdXTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIHN1YnNjcmlwdCBnaXZlbiBhIGJhc2UgaW4gdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN1YiA9IGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19zdWJbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgZnJhY3Rpb24gbnVtZXJhdG9yIGdpdmVuIHRoZSBmcmFjdGlvbiBpbiB0aGUgY3VycmVudFxuICAgKiBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZnJhY051bSA9IGZ1bmN0aW9uIGZyYWNOdW0oKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfZnJhY051bVt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgc3R5bGUgb2YgYSBmcmFjdGlvbiBkZW5vbWluYXRvciBnaXZlbiB0aGUgZnJhY3Rpb24gaW4gdGhlIGN1cnJlbnRcbiAgICogc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZyYWNEZW4gPSBmdW5jdGlvbiBmcmFjRGVuKCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX2ZyYWNEZW5bdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlIChpbiBwYXJ0aWN1bGFyLCBjcmFtcGluZyBhIGNyYW1wZWQgc3R5bGVcbiAgICogZG9lc24ndCBjaGFuZ2UgdGhlIHN0eWxlKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY3JhbXAgPSBmdW5jdGlvbiBjcmFtcCgpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19jcmFtcFt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgb3IgZGlzcGxheSB2ZXJzaW9uIG9mIHRoaXMgc3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRleHQgPSBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX3RleHRbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0eWxlIGlzIHRpZ2h0bHkgc3BhY2VkIChzY3JpcHRzdHlsZS9zY3JpcHRzY3JpcHRzdHlsZSlcbiAgICovXG4gIDtcblxuICBfcHJvdG8uaXNUaWdodCA9IGZ1bmN0aW9uIGlzVGlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA+PSAyO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZTtcbn0oKTsgLy8gRXhwb3J0IGFuIGludGVyZmFjZSBmb3IgdHlwZSBjaGVja2luZywgYnV0IGRvbid0IGV4cG9zZSB0aGUgaW1wbGVtZW50YXRpb24uXG4vLyBUaGlzIHdheSwgbm8gbW9yZSBzdHlsZXMgY2FuIGJlIGdlbmVyYXRlZC5cblxuXG4vLyBJRHMgb2YgdGhlIGRpZmZlcmVudCBzdHlsZXNcbnZhciBEID0gMDtcbnZhciBEYyA9IDE7XG52YXIgVCA9IDI7XG52YXIgVGMgPSAzO1xudmFyIFMgPSA0O1xudmFyIFNjID0gNTtcbnZhciBTUyA9IDY7XG52YXIgU1NjID0gNzsgLy8gSW5zdGFuY2VzIG9mIHRoZSBkaWZmZXJlbnQgc3R5bGVzXG5cbnZhciBTdHlsZV9zdHlsZXMgPSBbbmV3IFN0eWxlKEQsIDAsIGZhbHNlKSwgbmV3IFN0eWxlKERjLCAwLCB0cnVlKSwgbmV3IFN0eWxlKFQsIDEsIGZhbHNlKSwgbmV3IFN0eWxlKFRjLCAxLCB0cnVlKSwgbmV3IFN0eWxlKFMsIDIsIGZhbHNlKSwgbmV3IFN0eWxlKFNjLCAyLCB0cnVlKSwgbmV3IFN0eWxlKFNTLCAzLCBmYWxzZSksIG5ldyBTdHlsZShTU2MsIDMsIHRydWUpXTsgLy8gTG9va3VwIHRhYmxlcyBmb3Igc3dpdGNoaW5nIGZyb20gb25lIHN0eWxlIHRvIGFub3RoZXJcblxudmFyIF9zdXAgPSBbUywgU2MsIFMsIFNjLCBTUywgU1NjLCBTUywgU1NjXTtcbnZhciBfc3ViID0gW1NjLCBTYywgU2MsIFNjLCBTU2MsIFNTYywgU1NjLCBTU2NdO1xudmFyIF9mcmFjTnVtID0gW1QsIFRjLCBTLCBTYywgU1MsIFNTYywgU1MsIFNTY107XG52YXIgX2ZyYWNEZW4gPSBbVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjLCBTU2MsIFNTY107XG52YXIgX2NyYW1wID0gW0RjLCBEYywgVGMsIFRjLCBTYywgU2MsIFNTYywgU1NjXTtcbnZhciBfdGV4dCA9IFtELCBEYywgVCwgVGMsIFQsIFRjLCBULCBUY107IC8vIFdlIG9ubHkgZXhwb3J0IHNvbWUgb2YgdGhlIHN0eWxlcy5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX1N0eWxlID0gKHtcbiAgRElTUExBWTogU3R5bGVfc3R5bGVzW0RdLFxuICBURVhUOiBTdHlsZV9zdHlsZXNbVF0sXG4gIFNDUklQVDogU3R5bGVfc3R5bGVzW1NdLFxuICBTQ1JJUFRTQ1JJUFQ6IFN0eWxlX3N0eWxlc1tTU11cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pY29kZVNjcmlwdHMuanNcbi8qXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgVW5pY29kZSBzY3JpcHRzIGFuZCBzY3JpcHQgZmFtaWxpZXMgdGhhdCB3ZVxuICogc3VwcG9ydC4gVG8gYWRkIG5ldyBzY3JpcHRzIG9yIGZhbWlsaWVzLCBqdXN0IGFkZCBhIG5ldyBlbnRyeSB0byB0aGVcbiAqIHNjcmlwdERhdGEgYXJyYXkgYmVsb3cuIEFkZGluZyBzY3JpcHRzIHRvIHRoZSBzY3JpcHREYXRhIGFycmF5IGFsbG93c1xuICogY2hhcmFjdGVycyBmcm9tIHRoYXQgc2NyaXB0IHRvIGFwcGVhciBpbiBcXHRleHR7fSBlbnZpcm9ubWVudHMuXG4gKi9cblxuLyoqXG4gKiBFYWNoIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5IGhhcyBhIG5hbWUgYW5kIGFuIGFycmF5IG9mIGJsb2Nrcy5cbiAqIEVhY2ggYmxvY2sgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgd2hpY2ggc3BlY2lmeSB0aGUgc3RhcnQgYW5kXG4gKiBlbmQgcG9pbnRzIChpbmNsdXNpdmUpIG9mIGEgYmxvY2sgb2YgVW5pY29kZSBjb2RlcG9pbnRzLlxuICovXG5cbi8qKlxuICogVW5pY29kZSBibG9jayBkYXRhIGZvciB0aGUgZmFtaWxpZXMgb2Ygc2NyaXB0cyB3ZSBzdXBwb3J0IGluIFxcdGV4dHt9LlxuICogU2NyaXB0cyBvbmx5IG5lZWQgdG8gYXBwZWFyIGhlcmUgaWYgdGhleSBkbyBub3QgaGF2ZSBmb250IG1ldHJpY3MuXG4gKi9cbnZhciBzY3JpcHREYXRhID0gW3tcbiAgLy8gTGF0aW4gY2hhcmFjdGVycyBiZXlvbmQgdGhlIExhdGluLTEgY2hhcmFjdGVycyB3ZSBoYXZlIG1ldHJpY3MgZm9yLlxuICAvLyBOZWVkZWQgZm9yIEN6ZWNoLCBIdW5nYXJpYW4gYW5kIFR1cmtpc2ggdGV4dCwgZm9yIGV4YW1wbGUuXG4gIG5hbWU6ICdsYXRpbicsXG4gIGJsb2NrczogW1sweDAxMDAsIDB4MDI0Zl0sIC8vIExhdGluIEV4dGVuZGVkLUEgYW5kIExhdGluIEV4dGVuZGVkLUJcbiAgWzB4MDMwMCwgMHgwMzZmXV1cbn0sIHtcbiAgLy8gVGhlIEN5cmlsbGljIHNjcmlwdCB1c2VkIGJ5IFJ1c3NpYW4gYW5kIHJlbGF0ZWQgbGFuZ3VhZ2VzLlxuICAvLyBBIEN5cmlsbGljIHN1YnNldCB1c2VkIHRvIGJlIHN1cHBvcnRlZCBhcyBleHBsaWNpdGx5IGRlZmluZWRcbiAgLy8gc3ltYm9scyBpbiBzeW1ib2xzLmpzXG4gIG5hbWU6ICdjeXJpbGxpYycsXG4gIGJsb2NrczogW1sweDA0MDAsIDB4MDRmZl1dXG59LCB7XG4gIC8vIFRoZSBCcmFobWljIHNjcmlwdHMgb2YgU291dGggYW5kIFNvdXRoZWFzdCBBc2lhXG4gIC8vIERldmFuYWdhcmkgKDA5MDDigJMwOTdGKVxuICAvLyBCZW5nYWxpICgwOTgw4oCTMDlGRilcbiAgLy8gR3VybXVraGkgKDBBMDDigJMwQTdGKVxuICAvLyBHdWphcmF0aSAoMEE4MOKAkzBBRkYpXG4gIC8vIE9yaXlhICgwQjAw4oCTMEI3RilcbiAgLy8gVGFtaWwgKDBCODDigJMwQkZGKVxuICAvLyBUZWx1Z3UgKDBDMDDigJMwQzdGKVxuICAvLyBLYW5uYWRhICgwQzgw4oCTMENGRilcbiAgLy8gTWFsYXlhbGFtICgwRDAw4oCTMEQ3RilcbiAgLy8gU2luaGFsYSAoMEQ4MOKAkzBERkYpXG4gIC8vIFRoYWkgKDBFMDDigJMwRTdGKVxuICAvLyBMYW8gKDBFODDigJMwRUZGKVxuICAvLyBUaWJldGFuICgwRjAw4oCTMEZGRilcbiAgLy8gTXlhbm1hciAoMTAwMOKAkzEwOUYpXG4gIG5hbWU6ICdicmFobWljJyxcbiAgYmxvY2tzOiBbWzB4MDkwMCwgMHgxMDlGXV1cbn0sIHtcbiAgbmFtZTogJ2dlb3JnaWFuJyxcbiAgYmxvY2tzOiBbWzB4MTBBMCwgMHgxMGZmXV1cbn0sIHtcbiAgLy8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuXG4gIC8vIFRoZSBcImtcIiBpbiBjamsgaXMgZm9yIEtvcmVhbiwgYnV0IHdlJ3ZlIHNlcGFyYXRlZCBLb3JlYW4gb3V0XG4gIG5hbWU6IFwiY2prXCIsXG4gIGJsb2NrczogW1sweDMwMDAsIDB4MzBGRl0sIC8vIENKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiwgSGlyYWdhbmEsIEthdGFrYW5hXG4gIFsweDRFMDAsIDB4OUZBRl0sIC8vIENKSyBpZGVvZ3JhbXNcbiAgWzB4RkYwMCwgMHhGRjYwXV1cbn0sIHtcbiAgLy8gS29yZWFuXG4gIG5hbWU6ICdoYW5ndWwnLFxuICBibG9ja3M6IFtbMHhBQzAwLCAweEQ3QUZdXVxufV07XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBvciBzY3JpcHQgZmFtaWx5XG4gKiBpdCBpcyBmcm9tLCBvciBudWxsIGlmIGl0IGlzIG5vdCBwYXJ0IG9mIGEga25vd24gYmxvY2tcbiAqL1xuXG5mdW5jdGlvbiBzY3JpcHRGcm9tQ29kZXBvaW50KGNvZGVwb2ludCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2NyaXB0ID0gc2NyaXB0RGF0YVtpXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBzY3JpcHQuYmxvY2tzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGJsb2NrID0gc2NyaXB0LmJsb2Nrc1tfaV07XG5cbiAgICAgIGlmIChjb2RlcG9pbnQgPj0gYmxvY2tbMF0gJiYgY29kZXBvaW50IDw9IGJsb2NrWzFdKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHQubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogQSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBhbGwgdGhlIHN1cHBvcnRlZCBibG9ja3MgaW4gYSBzaW5nbGUgYXJyYXkuXG4gKiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIHN1cHBvcnRlZENvZGVwb2ludCgpIGZhc3QuXG4gKi9cblxudmFyIGFsbEJsb2NrcyA9IFtdO1xuc2NyaXB0RGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gIHJldHVybiBzLmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7XG4gICAgcmV0dXJuIGFsbEJsb2Nrcy5wdXNoLmFwcGx5KGFsbEJsb2NrcywgYik7XG4gIH0pO1xufSk7XG4vKipcbiAqIEdpdmVuIGEgY29kZXBvaW50LCByZXR1cm4gdHJ1ZSBpZiBpdCBmYWxscyB3aXRoaW4gb25lIG9mIHRoZVxuICogc2NyaXB0cyBvciBzY3JpcHQgZmFtaWxpZXMgZGVmaW5lZCBhYm92ZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIE1pY3JvIGJlbmNobWFya3Mgc2hvd3MgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuXG4gKiAvW1xcdTMwMDAtXFx1MzBGRlxcdTRFMDAtXFx1OUZBRlxcdUZGMDAtXFx1RkY2MFxcdUFDMDAtXFx1RDdBRlxcdTA5MDAtXFx1MTA5Rl0vLnRlc3QoKVxuICogaW4gRmlyZWZveCwgQ2hyb21lIGFuZCBOb2RlLlxuICovXG5cbmZ1bmN0aW9uIHN1cHBvcnRlZENvZGVwb2ludChjb2RlcG9pbnQpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBpZiAoY29kZXBvaW50ID49IGFsbEJsb2Nrc1tpXSAmJiBjb2RlcG9pbnQgPD0gYWxsQmxvY2tzW2kgKyAxXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3ZnR2VvbWV0cnkuanNcbi8qKlxuICogVGhpcyBmaWxlIHByb3ZpZGVzIHN1cHBvcnQgdG8gZG9tVHJlZS5qcyBhbmQgZGVsaW1pdGVyLmpzLlxuICogSXQncyBhIHN0b3JlaG91c2Ugb2YgcGF0aCBnZW9tZXRyeSBmb3IgU1ZHIGltYWdlcy5cbiAqL1xuLy8gSW4gYWxsIHBhdGhzIGJlbG93LCB0aGUgdmlld0JveC10by1lbSBzY2FsZSBpcyAxMDAwOjEuXG52YXIgaExpbmVQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSBhIHNxcnQgdmluaWN1bHVtLiBQcmV2ZW50cyBpbWFnZSBjcm9wcGluZy5cbi8vIFRoZSB2aW5pY3VsdW0gb2YgYSBcXHNxcnQgY2FuIGJlIG1hZGUgdGhpY2tlciBieSBhIEthVGVYIHJlbmRlcmluZyBvcHRpb24uXG4vLyBUaGluayBvZiB2YXJpYWJsZSBleHRyYVZpbmljdWx1bSBhcyB0d28gZGV0b3VycyBpbiB0aGUgU1ZHIHBhdGguXG4vLyBUaGUgZGV0b3VyIGJlZ2lucyBhdCB0aGUgbG93ZXIgbGVmdCBvZiB0aGUgYXJlYSBsYWJlbGVkIGV4dHJhVmluaWN1bHVtIGJlbG93LlxuLy8gVGhlIGRldG91ciBwcm9jZWVkcyBvbmUgZXh0cmFWaW5pY3VsdW0gZGlzdGFuY2UgdXAgYW5kIHNsaWdodGx5IHRvIHRoZSByaWdodCxcbi8vIGRpc3BsYWNpbmcgdGhlIHJhZGl1c2VkIGNvcm5lciBiZXR3ZWVuIHN1cmQgYW5kIHZpbmljdWx1bS4gVGhlIHJhZGl1cyBpc1xuLy8gdHJhdmVyc2VkIGFzIHVzdWFsLCB0aGVuIHRoZSBkZXRvdXIgcmVzdW1lcy4gSXQgZ29lcyByaWdodCwgdG8gdGhlIGVuZCBvZlxuLy8gdGhlIHZlcnkgbG9uZyB2aW5pY3VsdW1uLCB0aGVuIGRvd24gb25lIGV4dHJhVmluaWN1bHVtIGRpc3RhbmNlLFxuLy8gYWZ0ZXIgd2hpY2ggaXQgcmVzdW1lcyByZWd1bGFyIHBhdGggZ2VvbWV0cnkgZm9yIHRoZSByYWRpY2FsLlxuXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmluaWN1bHVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXG4gICAgICAgICAv4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4paS4oaQZXh0cmFWaW5pY3VsdW1cbiAgICAgICAgLyDilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojihpAwLjA0ZW0gKDQwIHVuaXQpIHN0ZCB2aW5pY3VsdW0gdGhpY2tuZXNzXG4gICAgICAgLyAvXG4gICAgICAvIC9cbiAgICAgLyAvXFxcbiAgICAvIC8gc3VyZFxuKi9cblxudmFyIHNxcnRNYWluID0gZnVuY3Rpb24gc3FydE1haW4oZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNxcnRNYWluIHBhdGggZ2VvbWV0cnkgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWCBNYWluXG4gIHJldHVybiBcIk05NSxcIiArICg2MjIgKyBleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiXFxuYy0yLjcsMCwtNy4xNywtMi43LC0xMy41LC04Yy01LjgsLTUuMywtOS41LC0xMCwtOS41LC0xNFxcbmMwLC0yLDAuMywtMy4zLDEsLTRjMS4zLC0yLjcsMjMuODMsLTIwLjcsNjcuNSwtNTRcXG5jNDQuMiwtMzMuMyw2NS44LC01MC4zLDY2LjUsLTUxYzEuMywtMS4zLDMsLTIsNSwtMmM0LjcsMCw4LjcsMy4zLDEyLDEwXFxuczE3MywzNzgsMTczLDM3OGMwLjcsMCwzNS4zLC03MSwxMDQsLTIxM2M2OC43LC0xNDIsMTM3LjUsLTI4NSwyMDYuNSwtNDI5XFxuYzY5LC0xNDQsMTA0LjUsLTIxNy43LDEwNi41LC0yMjFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDc1ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM1LjMsLTkuMywxMiwtMTQsMjAsLTE0XFxuSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDg0NS4yNzI0XFxucy0yMjUuMjcyLDQ2NywtMjI1LjI3Miw0NjdzLTIzNSw0ODYsLTIzNSw0ODZjLTIuNyw0LjcsLTksNywtMTksN1xcbmMtNiwwLC0xMCwtMSwtMTIsLTNzLTE5NCwtNDIyLC0xOTQsLTQyMnMtNjUsNDcsLTY1LDQ3elxcbk1cIiArICg4MzQgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJoLTQwMDAwMHpcIjtcbn07XG5cbnZhciBzcXJ0U2l6ZTEgPSBmdW5jdGlvbiBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNpemUxIGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTEtUmVndWxhclxuICByZXR1cm4gXCJNMjYzLFwiICsgKDYwMSArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJjMC43LDAsMTgsMzkuNyw1MiwxMTlcXG5jMzQsNzkuMyw2OC4xNjcsMTU4LjcsMTAyLjUsMjM4YzM0LjMsNzkuMyw1MS44LDExOS4zLDUyLjUsMTIwXFxuYzM0MCwtNzA0LjcsNTEwLjcsLTEwNjAuMyw1MTIsLTEwNjdcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDIuMDg0ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmM0LjcsLTcuMywxMSwtMTEsMTksLTExXFxuSDQwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxMi4zXFxucy0yNzEuMyw1NjcsLTI3MS4zLDU2N2MtMzguNyw4MC43LC04NCwxNzUsLTEzNiwyODNjLTUyLDEwOCwtODkuMTY3LDE4NS4zLC0xMTEuNSwyMzJcXG5jLTIyLjMsNDYuNywtMzMuOCw3MC4zLC0zNC41LDcxYy00LjcsNC43LC0xMi4zLDcsLTIzLDdzLTEyLC0xLC0xMiwtMVxcbnMtMTA5LC0yNTMsLTEwOSwtMjUzYy03Mi43LC0xNjgsLTEwOS4zLC0yNTIsLTExMCwtMjUyYy0xMC43LDgsLTIyLDE2LjcsLTM0LDI2XFxuYy0yMiwxNy4zLC0zMy4zLDI2LC0zNCwyNnMtMjYsLTI2LC0yNiwtMjZzNzYsLTU5LDc2LC01OXM3NiwtNjAsNzYsLTYwelxcbk1cIiArICgxMDAxICsgZXh0cmFWaW5pY3VsdW0pICsgXCIgXCIgKyBoTGluZVBhZCArIFwiaDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiaC00MDAwMDB6XCI7XG59O1xuXG52YXIgc3FydFNpemUyID0gZnVuY3Rpb24gc3FydFNpemUyKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCkge1xuICAvLyBzaXplMiBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUyLVJlZ3VsYXJcbiAgcmV0dXJuIFwiTTk4MyBcIiArICgxMCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDMuMTMgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiXFxuYzQsLTYuNywxMCwtMTAsMTgsLTEwIEg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIlxcbkgxMDEzLjFzLTgzLjQsMjY4LC0yNjQuMSw4NDBjLTE4MC43LDU3MiwtMjc3LDg3Ni4zLC0yODksOTEzYy00LjcsNC43LC0xMi43LDcsLTI0LDdcXG5zLTEyLDAsLTEyLDBjLTEuMywtMy4zLC0zLjcsLTExLjcsLTcsLTI1Yy0zNS4zLC0xMjUuMywtMTA2LjcsLTM3My4zLC0yMTQsLTc0NFxcbmMtMTAsMTIsLTIxLDI1LC0zMywzOXMtMzIsMzksLTMyLDM5Yy02LC01LjMsLTE1LC0xNCwtMjcsLTI2czI1LC0zMCwyNSwtMzBcXG5jMjYuNywtMzIuNyw1MiwtNjMsNzYsLTkxczUyLC02MCw1MiwtNjBzMjA4LDcyMiwyMDgsNzIyXFxuYzU2LC0xNzUuMywxMjYuMywtMzk3LjMsMjExLC02NjZjODQuNywtMjY4LjcsMTUzLjgsLTQ4OC4yLDIwNy41LC02NTguNVxcbmM1My43LC0xNzAuMyw4NC41LC0yNjYuOCw5Mi41LC0yODkuNXpcXG5NXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcImg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplMyA9IGZ1bmN0aW9uIHNxcnRTaXplMyhleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTMgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplMy1SZWd1bGFyXG4gIHJldHVybiBcIk00MjQsXCIgKyAoMjM5OCArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jLTEuMywtMC43LC0zOC41LC0xNzIsLTExMS41LC01MTRjLTczLC0zNDIsLTEwOS44LC01MTMuMywtMTEwLjUsLTUxNFxcbmMwLC0yLC0xMC43LDE0LjMsLTMyLDQ5Yy00LjcsNy4zLC05LjgsMTUuNywtMTUuNSwyNWMtNS43LDkuMywtOS44LDE2LC0xMi41LDIwXFxucy01LDcsLTUsN2MtNCwtMy4zLC04LjMsLTcuNywtMTMsLTEzcy0xMywtMTMsLTEzLC0xM3M3NiwtMTIyLDc2LC0xMjJzNzcsLTEyMSw3NywtMTIxXFxuczIwOSw5NjgsMjA5LDk2OGMwLC0yLDg0LjcsLTM2MS43LDI1NCwtMTA3OWMxNjkuMywtNzE3LjMsMjU0LjcsLTEwNzcuNywyNTYsLTEwODFcXG5sXCIgKyBleHRyYVZpbmljdWx1bSAvIDQuMjIzICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcImM0LC02LjcsMTAsLTEwLDE4LC0xMCBINDAwMDAwXFxudlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNC42XFxucy04Ny4zLDM3OC43LC0yNzIuNiwxMTY2Yy0xODUuMyw3ODcuMywtMjc5LjMsMTE4Mi4zLC0yODIsMTE4NVxcbmMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yeiBNXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcIlxcbmg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplNCA9IGZ1bmN0aW9uIHNxcnRTaXplNChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTQgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplNC1SZWd1bGFyXG4gIHJldHVybiBcIk00NzMsXCIgKyAoMjcxMyArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jMzM5LjMsLTE3OTkuMyw1MDkuMywtMjcwMCw1MTAsLTI3MDIgbFwiICsgZXh0cmFWaW5pY3VsdW0gLyA1LjI5OCArIFwiIC1cIiArIGV4dHJhVmluaWN1bHVtICsgXCJcXG5jMy4zLC03LjMsOS4zLC0xMSwxOCwtMTEgSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDEwMTcuN1xcbnMtOTAuNSw0NzgsLTI3Ni4yLDE0NjZjLTE4NS43LDk4OCwtMjc5LjUsMTQ4MywtMjgxLjUsMTQ4NWMtMiw2LC0xMCw5LC0yNCw5XFxuYy04LDAsLTEyLC0wLjcsLTEyLC0yYzAsLTEuMywtNS4zLC0zMiwtMTYsLTkyYy01MC43LC0yOTMuMywtMTE5LjcsLTY5My4zLC0yMDcsLTEyMDBcXG5jMCwtMS4zLC01LjMsOC43LC0xNiwzMGMtMTAuNywyMS4zLC0yMS4zLDQyLjcsLTMyLDY0cy0xNiwzMywtMTYsMzNzLTI2LC0yNiwtMjYsLTI2XFxuczc2LC0xNTMsNzYsLTE1M3M3NywtMTUxLDc3LC0xNTFjMC43LDAuNywzNS43LDIwMiwxMDUsNjA0YzY3LjMsNDAwLjcsMTAyLDYwMi43LDEwNCxcXG42MDZ6TVwiICsgKDEwMDEgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNy43elwiO1xufTtcblxudmFyIHNxcnRUYWxsID0gZnVuY3Rpb24gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIC8vIHNxcnRUYWxsIGlzIGZyb20gZ2x5cGggVTIzQjcgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICAvLyBPbmUgcGF0aCBlZGdlIGhhcyBhIHZhcmlhYmxlIGxlbmd0aC4gSXQgcnVucyB2ZXJ0aWNhbGx5IGZyb20gdGhlIHZpbmljdWx1bW5cbiAgLy8gdG8gYSBwb2ludCBuZWFyICgxNCB1bml0cykgdGhlIGJvdHRvbSBvZiB0aGUgc3VyZC4gVGhlIHZpbmljdWx1bVxuICAvLyBpcyBub3JtYWxseSA0MCB1bml0cyB0aGljay4gU28gdGhlIGxlbmd0aCBvZiB0aGUgbGluZSBpbiBxdWVzdGlvbiBpczpcbiAgdmFyIHZlcnRTZWdtZW50ID0gdmlld0JveEhlaWdodCAtIDU0IC0gaExpbmVQYWQgLSBleHRyYVZpbmljdWx1bTtcbiAgcmV0dXJuIFwiTTcwMiBcIiArIChleHRyYVZpbmljdWx1bSArIGhMaW5lUGFkKSArIFwiSDQwMDAwMFwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJcXG5INzQydlwiICsgdmVydFNlZ21lbnQgKyBcImwtNCA0LTQgNGMtLjY2Ny43IC0yIDEuNS00IDIuNXMtNC4xNjcgMS44MzMtNi41IDIuNS01LjUgMS05LjUgMVxcbmgtMTJsLTI4LTg0Yy0xNi42NjctNTItOTYuNjY3IC0yOTQuMzMzLTI0MC03MjdsLTIxMiAtNjQzIC04NSAxNzBcXG5jLTQtMy4zMzMtOC4zMzMtNy42NjctMTMgLTEzbC0xMy0xM2w3Ny0xNTUgNzctMTU2YzY2IDE5OS4zMzMgMTM5IDQxOS42NjdcXG4yMTkgNjYxIGwyMTggNjYxek03MDIgXCIgKyBoTGluZVBhZCArIFwiSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiSDc0MnpcIjtcbn07XG5cbnZhciBzcXJ0UGF0aCA9IGZ1bmN0aW9uIHNxcnRQYXRoKHNpemUsIGV4dHJhVmluaWN1bHVtLCB2aWV3Qm94SGVpZ2h0KSB7XG4gIGV4dHJhVmluaWN1bHVtID0gMTAwMCAqIGV4dHJhVmluaWN1bHVtOyAvLyBDb252ZXJ0IGZyb20gZG9jdW1lbnQgZW1zIHRvIHZpZXdCb3guXG5cbiAgdmFyIHBhdGggPSBcIlwiO1xuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgXCJzcXJ0TWFpblwiOlxuICAgICAgcGF0aCA9IHNxcnRNYWluKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTFcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTEoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRTaXplMlwiOlxuICAgICAgcGF0aCA9IHNxcnRTaXplMihleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwic3FydFNpemUzXCI6XG4gICAgICBwYXRoID0gc3FydFNpemUzKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTRcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTQoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRUYWxsXCI6XG4gICAgICBwYXRoID0gc3FydFRhbGwoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkLCB2aWV3Qm94SGVpZ2h0KTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBzdmdHZW9tZXRyeV9wYXRoID0ge1xuICAvLyBUaGUgZG91YmxlbGVmdGFycm93IGdlb21ldHJ5IGlzIGZyb20gZ2x5cGggVSsyMUQwIGluIHRoZSBmb250IEthVGVYIE1haW5cbiAgZG91YmxlbGVmdGFycm93OiBcIk0yNjIgMTU3XFxubDEwLTEwYzM0LTM2IDYyLjctNzcgODYtMTIzIDMuMy04IDUtMTMuMyA1LTE2IDAtNS4zLTYuNy04LTIwLTgtNy4zXFxuIDAtMTIuMi41LTE0LjUgMS41LTIuMyAxLTQuOCA0LjUtNy41IDEwLjUtNDkuMyA5Ny4zLTEyMS43IDE2OS4zLTIxNyAyMTYtMjhcXG4gMTQtNTcuMyAyNS04OCAzMy02LjcgMi0xMSAzLjgtMTMgNS41LTIgMS43LTMgNC4yLTMgNy41czEgNS44IDMgNy41XFxuYzIgMS43IDYuMyAzLjUgMTMgNS41IDY4IDE3LjMgMTI4LjIgNDcuOCAxODAuNSA5MS41IDUyLjMgNDMuNyA5My44IDk2LjIgMTI0LjVcXG4gMTU3LjUgOS4zIDggMTUuMyAxMi4zIDE4IDEzaDZjMTItLjcgMTgtNCAxOC0xMCAwLTItMS43LTctNS0xNS0yMy4zLTQ2LTUyLTg3XFxuLTg2LTEyM2wtMTAtMTBoMzk5NzM4di00MEgyMThjMzI4IDAgMCAwIDAgMGwtMTAtOGMtMjYuNy0yMC02NS43LTQzLTExNy02OSAyLjdcXG4tMiA2LTMuNyAxMC01IDM2LjctMTYgNzIuMy0zNy4zIDEwNy02NGwxMC04aDM5OTc4MnYtNDB6XFxubTggMHY0MGgzOTk3MzB2LTQwem0wIDE5NHY0MGgzOTk3MzB2LTQwelwiLFxuICAvLyBkb3VibGVyaWdodGFycm93IGlzIGZyb20gZ2x5cGggVSsyMUQyIGluIGZvbnQgS2FUZVggTWFpblxuICBkb3VibGVyaWdodGFycm93OiBcIk0zOTk3MzggMzkybFxcbi0xMCAxMGMtMzQgMzYtNjIuNyA3Ny04NiAxMjMtMy4zIDgtNSAxMy4zLTUgMTYgMCA1LjMgNi43IDggMjAgOCA3LjMgMCAxMi4yLS41XFxuIDE0LjUtMS41IDIuMy0xIDQuOC00LjUgNy41LTEwLjUgNDkuMy05Ny4zIDEyMS43LTE2OS4zIDIxNy0yMTYgMjgtMTQgNTcuMy0yNSA4OFxcbi0zMyA2LjctMiAxMS0zLjggMTMtNS41IDItMS43IDMtNC4yIDMtNy41cy0xLTUuOC0zLTcuNWMtMi0xLjctNi4zLTMuNS0xMy01LjUtNjhcXG4tMTcuMy0xMjguMi00Ny44LTE4MC41LTkxLjUtNTIuMy00My43LTkzLjgtOTYuMi0xMjQuNS0xNTcuNS05LjMtOC0xNS4zLTEyLjMtMThcXG4tMTNoLTZjLTEyIC43LTE4IDQtMTggMTAgMCAyIDEuNyA3IDUgMTUgMjMuMyA0NiA1MiA4NyA4NiAxMjNsMTAgMTBIMHY0MGgzOTk3ODJcXG5jLTMyOCAwIDAgMCAwIDBsMTAgOGMyNi43IDIwIDY1LjcgNDMgMTE3IDY5LTIuNyAyLTYgMy43LTEwIDUtMzYuNyAxNi03Mi4zIDM3LjNcXG4tMTA3IDY0bC0xMCA4SDB2NDB6TTAgMTU3djQwaDM5OTczMHYtNDB6bTAgMTk0djQwaDM5OTczMHYtNDB6XCIsXG4gIC8vIGxlZnRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGFycm93OiBcIk00MDAwMDAgMjQxSDExMGwzLTNjNjguNy01Mi43IDExMy43LTEyMFxcbiAxMzUtMjAyIDQtMTQuNyA2LTIzIDYtMjUgMC03LjMtNy0xMS0yMS0xMS04IDAtMTMuMi44LTE1LjUgMi41LTIuMyAxLjctNC4yIDUuOFxcbi01LjUgMTIuNS0xLjMgNC43LTIuNyAxMC4zLTQgMTctMTIgNDguNy0zNC44IDkyLTY4LjUgMTMwUzY1LjMgMjI4LjMgMTggMjQ3XFxuYy0xMCA0LTE2IDcuNy0xOCAxMSAwIDguNyA2IDE0LjMgMTggMTcgNDcuMyAxOC43IDg3LjggNDcgMTIxLjUgODVTMTk2IDQ0MS4zIDIwOFxcbiA0OTBjLjcgMiAxLjMgNSAyIDlzMS4yIDYuNyAxLjUgOGMuMyAxLjMgMSAzLjMgMiA2czIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjNcXG4gMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEtMy43IDIxLTExIDAtMi0yLTEwLjMtNi0yNS0yMC03OS4zLTY1LTE0Ni43LTEzNS0yMDJcXG4gbC0zLTNoMzk5ODkwek0xMDAgMjQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIG92ZXJicmFjZSBpcyBmcm9tIGdseXBocyBVKzIzQTkvMjNBOC8yM0E3IGluIGZvbnQgS2FUZVhfU2l6ZTQtUmVndWxhclxuICBsZWZ0YnJhY2U6IFwiTTYgNTQ4bC02LTZ2LTM1bDYtMTFjNTYtMTA0IDEzNS4zLTE4MS4zIDIzOC0yMzIgNTcuMy0yOC43IDExN1xcbi00NSAxNzktNTBoMzk5NTc3djEyMEg0MDNjLTQzLjMgNy04MSAxNS0xMTMgMjYtMTAwLjcgMzMtMTc5LjcgOTEtMjM3IDE3NC0yLjdcXG4gNS02IDktMTAgMTMtLjcgMS03LjMgMS0yMCAxSDZ6XCIsXG4gIGxlZnRicmFjZXVuZGVyOiBcIk0wIDZsNi02aDE3YzEyLjY4OCAwIDE5LjMxMy4zIDIwIDEgNCA0IDcuMzEzIDguMyAxMCAxM1xcbiAzNS4zMTMgNTEuMyA4MC44MTMgOTMuOCAxMzYuNSAxMjcuNSA1NS42ODggMzMuNyAxMTcuMTg4IDU1LjggMTg0LjUgNjYuNS42ODhcXG4gMCAyIC4zIDQgMSAxOC42ODggMi43IDc2IDQuMyAxNzIgNWgzOTk0NTB2MTIwSDQyOWwtNi0xYy0xMjQuNjg4LTgtMjM1LTYxLjdcXG4tMzMxLTE2MUM2MC42ODcgMTM4LjcgMzIuMzEyIDk5LjMgNyA1NEwwIDQxVjZ6XCIsXG4gIC8vIG92ZXJncm91cCBpcyBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlIChwdWJsaWMgZG9tYWluKVxuICBsZWZ0Z3JvdXA6IFwiTTQwMDAwMCA4MFxcbkg0MzVDNjQgODAgMTY4LjMgMjI5LjQgMjEgMjYwYy01LjkgMS4yLTE4IDAtMTggMC0yIDAtMy0xLTMtM3YtMzhDNzYgNjEgMjU3IDBcXG4gNDM1IDBoMzk5NTY1elwiLFxuICBsZWZ0Z3JvdXB1bmRlcjogXCJNNDAwMDAwIDI2Mlxcbkg0MzVDNjQgMjYyIDE2OC4zIDExMi42IDIxIDgyYy01LjktMS4yLTE4IDAtMTggMC0yIDAtMyAxLTMgM3YzOGM3NiAxNTggMjU3IDIxOVxcbiA0MzUgMjE5aDM5OTU2NXpcIixcbiAgLy8gSGFycG9vbnMgYXJlIGZyb20gZ2x5cGggVSsyMUJEIGluIGZvbnQgS2FUZVggTWFpblxuICBsZWZ0aGFycG9vbjogXCJNMCAyNjdjLjcgNS4zIDMgMTAgNyAxNGgzOTk5OTN2LTQwSDkzYzMuM1xcbi0zLjMgMTAuMi05LjUgMjAuNS0xOC41czE3LjgtMTUuOCAyMi41LTIwLjVjNTAuNy01MiA4OC0xMTAuMyAxMTItMTc1IDQtMTEuMyA1XFxuLTE4LjMgMy0yMS0xLjMtNC03LjMtNi0xOC02LTggMC0xMyAuNy0xNSAycy00LjcgNi43LTggMTZjLTQyIDk4LjctMTA3LjMgMTc0LjdcXG4tMTk2IDIyOC02LjcgNC43LTEwLjcgOC0xMiAxMC0xLjMgMi0yIDUuNy0yIDExem0xMDAtMjZ2NDBoMzk5OTAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25wbHVzOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zLTMuMyAxMC4yLTkuNVxcbiAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDUtMTguMyAzLTIxLTEuM1xcbi00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuNy0xOTYgMjI4LTYuNyA0LjdcXG4tMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwek0wIDQzNXY0MGg0MDAwMDB2LTQwelxcbm0wIDB2NDBoNDAwMDAwdi00MHpcIixcbiAgbGVmdGhhcnBvb25kb3duOiBcIk03IDI0MWMtNCA0LTYuMzMzIDguNjY3LTcgMTQgMCA1LjMzMy42NjcgOSAyIDExczUuMzMzXFxuIDUuMzMzIDEyIDEwYzkwLjY2NyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zMzMgMTAuNjY3IDYuMzMzIDE2LjMzMyA5IDE3IDIgLjY2NyA1XFxuIDEgOSAxaDVjMTAuNjY3IDAgMTYuNjY3LTIgMTgtNiAyLTIuNjY3IDEtOS42NjctMy0yMS0zMi04Ny4zMzMtODIuNjY3LTE1Ny42NjdcXG4tMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDB6TTkzIDI4MSBINDAwMDAwIHYtNDBMNyAyNDF6XCIsXG4gIGxlZnRoYXJwb29uZG93bnBsdXM6IFwiTTcgNDM1Yy00IDQtNi4zIDguNy03IDE0IDAgNS4zLjcgOSAyIDExczUuMyA1LjMgMTJcXG4gMTBjOTAuNyA1NCAxNTYgMTMwIDE5NiAyMjggMy4zIDEwLjcgNi4zIDE2LjMgOSAxNyAyIC43IDUgMSA5IDFoNWMxMC43IDAgMTYuN1xcbi0yIDE4LTYgMi0yLjcgMS05LjctMy0yMS0zMi04Ny4zLTgyLjctMTU3LjctMTUyLTIxMWwtMy0zaDM5OTkwN3YtNDBIN3ptOTMgMFxcbnY0MGgzOTk5MDB2LTQwek0wIDI0MXY0MGgzOTk5MDB2LTQwem0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gaG9vayBpcyBmcm9tIGdseXBoIFUrMjFBOSBpbiBmb250IEthVGVYIE1haW5cbiAgbGVmdGhvb2s6IFwiTTQwMDAwMCAyODEgSDEwM3MtMzMtMTEuMi02MS0zMy41UzAgMTk3LjMgMCAxNjRzMTQuMi02MS4yIDQyLjVcXG4tODMuNUM3MC44IDU4LjIgMTA0IDQ3IDE0MiA0NyBjMTYuNyAwIDI1IDYuNyAyNSAyMCAwIDEyLTguNyAxOC43LTI2IDIwLTQwIDMuM1xcbi02OC43IDE1LjctODYgMzctMTAgMTItMTUgMjUuMy0xNSA0MCAwIDIyLjcgOS44IDQwLjcgMjkuNSA1NCAxOS43IDEzLjMgNDMuNSAyMVxcbiA3MS41IDIzaDM5OTg1OXpNMTAzIDI4MXYtNDBoMzk5ODk3djQwelwiLFxuICBsZWZ0bGluZXNlZ21lbnQ6IFwiTTQwIDI4MSBWNDI4IEgwIFY5NCBINDAgVjI0MSBINDAwMDAwIHY0MHpcXG5NNDAgMjgxIFY0MjggSDAgVjk0IEg0MCBWMjQxIEg0MDAwMDAgdjQwelwiLFxuICBsZWZ0bWFwc3RvOiBcIk00MCAyODEgVjQ0OEgwVjc0SDQwVjI0MUg0MDAwMDB2NDB6XFxuTTQwIDI4MSBWNDQ4SDBWNzRINDBWMjQxSDQwMDAwMHY0MHpcIixcbiAgLy8gdG9mcm9tIGlzIGZyb20gZ2x5cGggVSsyMUM0IGluIGZvbnQgS2FUZVggQU1TIFJlZ3VsYXJcbiAgbGVmdFRvRnJvbTogXCJNMCAxNDdoNDAwMDAwdjQwSDB6bTAgMjE0YzY4IDQwIDExNS43IDk1LjcgMTQzIDE2N2gyMmMxNS4zIDAgMjNcXG4tLjMgMjMtMSAwLTEuMy01LjMtMTMuNy0xNi0zNy0xOC0zNS4zLTQxLjMtNjktNzAtMTAxbC03LThoMzk5OTA1di00MEg5NWw3LThcXG5jMjguNy0zMiA1Mi02NS43IDcwLTEwMSAxMC43LTIzLjMgMTYtMzUuNyAxNi0zNyAwLS43LTcuNy0xLTIzLTFoLTIyQzExNS43IDI2NS4zXFxuIDY4IDMyMSAwIDM2MXptMC0xNzR2LTQwaDM5OTkwMHY0MHptMTAwIDE1NHY0MGgzOTk5MDB2LTQwelwiLFxuICBsb25nZXF1YWw6IFwiTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XFxuTTAgNTAgaDQwMDAwMCB2NDBIMHogbTAgMTk0aDQwMDAwdjQwSDB6XCIsXG4gIG1pZGJyYWNlOiBcIk0yMDA0MjggMzM0XFxuYy0xMDAuNy04LjMtMTk1LjMtNDQtMjgwLTEwOC01NS4zLTQyLTEwMS43LTkzLTEzOS0xNTNsLTktMTRjLTIuNyA0LTUuNyA4LjctOSAxNFxcbi01My4zIDg2LjctMTIzLjcgMTUzLTIxMSAxOTktNjYuNyAzNi0xMzcuMyA1Ni4zLTIxMiA2MkgwVjIxNGgxOTk1NjhjMTc4LjMtMTEuN1xcbiAzMTEuNy03OC4zIDQwMy0yMDEgNi04IDkuNy0xMiAxMS0xMiAuNy0uNyA2LjctMSAxOC0xczE3LjMuMyAxOCAxYzEuMyAwIDUgNCAxMVxcbiAxMiA0NC43IDU5LjMgMTAxLjMgMTA2LjMgMTcwIDE0MXMxNDUuMyA1NC4zIDIyOSA2MGgxOTk1NzJ2MTIwelwiLFxuICBtaWRicmFjZXVuZGVyOiBcIk0xOTk1NzIgMjE0XFxuYzEwMC43IDguMyAxOTUuMyA0NCAyODAgMTA4IDU1LjMgNDIgMTAxLjcgOTMgMTM5IDE1M2w5IDE0YzIuNy00IDUuNy04LjcgOS0xNFxcbiA1My4zLTg2LjcgMTIzLjctMTUzIDIxMS0xOTkgNjYuNy0zNiAxMzcuMy01Ni4zIDIxMi02MmgxOTk1Njh2MTIwSDIwMDQzMmMtMTc4LjNcXG4gMTEuNy0zMTEuNyA3OC4zLTQwMyAyMDEtNiA4LTkuNyAxMi0xMSAxMi0uNy43LTYuNyAxLTE4IDFzLTE3LjMtLjMtMTgtMWMtMS4zIDBcXG4tNS00LTExLTEyLTQ0LjctNTkuMy0xMDEuMy0xMDYuMy0xNzAtMTQxcy0xNDUuMy01NC4zLTIyOS02MEgwVjIxNHpcIixcbiAgb2lpbnRTaXplMTogXCJNNTEyLjYgNzEuNmMyNzIuNiAwIDMyMC4zIDEwNi44IDMyMC4zIDE3OC4yIDAgNzAuOC00Ny43IDE3Ny42XFxuLTMyMC4zIDE3Ny42UzE5My4xIDMyMC42IDE5My4xIDI0OS44YzAtNzEuNCA0Ni45LTE3OC4yIDMxOS41LTE3OC4yelxcbm0zNjguMSAxNzguMmMwLTg2LjQtNjAuOS0yMTUuNC0zNjguMS0yMTUuNC0zMDYuNCAwLTM2Ny4zIDEyOS0zNjcuMyAyMTUuNCAwIDg1LjhcXG42MC45IDIxNC44IDM2Ny4zIDIxNC44IDMwNy4yIDAgMzY4LjEtMTI5IDM2OC4xLTIxNC44elwiLFxuICBvaWludFNpemUyOiBcIk03NTcuOCAxMDAuMWMzODQuNyAwIDQ1MS4xIDEzNy42IDQ1MS4xIDIzMCAwIDkxLjMtNjYuNCAyMjguOFxcbi00NTEuMSAyMjguOC0zODYuMyAwLTQ1Mi43LTEzNy41LTQ1Mi43LTIyOC44IDAtOTIuNCA2Ni40LTIzMCA0NTIuNy0yMzB6XFxubTUwMi40IDIzMGMwLTExMS4yLTgyLjQtMjc3LjItNTAyLjQtMjc3LjJzLTUwNCAxNjYtNTA0IDI3Ny4yXFxuYzAgMTEwIDg0IDI3NiA1MDQgMjc2czUwMi40LTE2NiA1MDIuNC0yNzZ6XCIsXG4gIG9paWludFNpemUxOiBcIk02ODEuNCA3MS42YzQwOC45IDAgNDgwLjUgMTA2LjggNDgwLjUgMTc4LjIgMCA3MC44LTcxLjYgMTc3LjZcXG4tNDgwLjUgMTc3LjZTMjAyLjEgMzIwLjYgMjAyLjEgMjQ5LjhjMC03MS40IDcwLjUtMTc4LjIgNDc5LjMtMTc4LjJ6XFxubTUyNS44IDE3OC4yYzAtODYuNC04Ni44LTIxNS40LTUyNS43LTIxNS40LTQzNy45IDAtNTI0LjcgMTI5LTUyNC43IDIxNS40IDBcXG44NS44IDg2LjggMjE0LjggNTI0LjcgMjE0LjggNDM4LjkgMCA1MjUuNy0xMjkgNTI1LjctMjE0Ljh6XCIsXG4gIG9paWludFNpemUyOiBcIk0xMDIxLjIgNTNjNjAzLjYgMCA3MDcuOCAxNjUuOCA3MDcuOCAyNzcuMiAwIDExMC0xMDQuMiAyNzUuOFxcbi03MDcuOCAyNzUuOC02MDYgMC03MTAuMi0xNjUuOC03MTAuMi0yNzUuOEMzMTEgMjE4LjggNDE1LjIgNTMgMTAyMS4yIDUzelxcbm03NzAuNCAyNzcuMWMwLTEzMS4yLTEyNi40LTMyNy42LTc3MC41LTMyNy42UzI0OC40IDE5OC45IDI0OC40IDMzMC4xXFxuYzAgMTMwIDEyOC44IDMyNi40IDc3Mi43IDMyNi40czc3MC41LTE5Ni40IDc3MC41LTMyNi40elwiLFxuICByaWdodGFycm93OiBcIk0wIDI0MXY0MGgzOTk4OTFjLTQ3LjMgMzUuMy04NCA3OC0xMTAgMTI4XFxuLTE2LjcgMzItMjcuNyA2My43LTMzIDk1IDAgMS4zLS4yIDIuNy0uNSA0LS4zIDEuMy0uNSAyLjMtLjUgMyAwIDcuMyA2LjcgMTEgMjBcXG4gMTEgOCAwIDEzLjItLjggMTUuNS0yLjUgMi4zLTEuNyA0LjItNS41IDUuNS0xMS41IDItMTMuMyA1LjctMjcgMTEtNDEgMTQuNy00NC43XFxuIDM5LTg0LjUgNzMtMTE5LjVzNzMuNy02MC4yIDExOS03NS41YzYtMiA5LTUuNyA5LTExcy0zLTktOS0xMWMtNDUuMy0xNS4zLTg1XFxuLTQwLjUtMTE5LTc1LjVzLTU4LjMtNzQuOC03My0xMTkuNWMtNC43LTE0LTguMy0yNy4zLTExLTQwLTEuMy02LjctMy4yLTEwLjgtNS41XFxuLTEyLjUtMi4zLTEuNy03LjUtMi41LTE1LjUtMi41LTE0IDAtMjEgMy43LTIxIDExIDAgMiAyIDEwLjMgNiAyNSAyMC43IDgzLjMgNjdcXG4gMTUxLjcgMTM5IDIwNXptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0YnJhY2U6IFwiTTQwMDAwMCA1NDJsXFxuLTYgNmgtMTdjLTEyLjcgMC0xOS4zLS4zLTIwLTEtNC00LTcuMy04LjMtMTAtMTMtMzUuMy01MS4zLTgwLjgtOTMuOC0xMzYuNS0xMjcuNVxcbnMtMTE3LjItNTUuOC0xODQuNS02Ni41Yy0uNyAwLTItLjMtNC0xLTE4LjctMi43LTc2LTQuMy0xNzItNUgwVjIxNGgzOTk1NzFsNiAxXFxuYzEyNC43IDggMjM1IDYxLjcgMzMxIDE2MSAzMS4zIDMzLjMgNTkuNyA3Mi43IDg1IDExOGw3IDEzdjM1elwiLFxuICByaWdodGJyYWNldW5kZXI6IFwiTTM5OTk5NCAwbDYgNnYzNWwtNiAxMWMtNTYgMTA0LTEzNS4zIDE4MS4zLTIzOCAyMzItNTcuM1xcbiAyOC43LTExNyA0NS0xNzkgNTBILTMwMFYyMTRoMzk5ODk3YzQzLjMtNyA4MS0xNSAxMTMtMjYgMTAwLjctMzMgMTc5LjctOTEgMjM3XFxuLTE3NCAyLjctNSA2LTkgMTAtMTMgLjctMSA3LjMtMSAyMC0xaDE3elwiLFxuICByaWdodGdyb3VwOiBcIk0wIDgwaDM5OTU2NWMzNzEgMCAyNjYuNyAxNDkuNCA0MTQgMTgwIDUuOSAxLjIgMTggMCAxOCAwIDIgMFxcbiAzLTEgMy0zdi0zOGMtNzYtMTU4LTI1Ny0yMTktNDM1LTIxOUgwelwiLFxuICByaWdodGdyb3VwdW5kZXI6IFwiTTAgMjYyaDM5OTU2NWMzNzEgMCAyNjYuNy0xNDkuNCA0MTQtMTgwIDUuOS0xLjIgMTggMCAxOFxcbiAwIDIgMCAzIDEgMyAzdjM4Yy03NiAxNTgtMjU3IDIxOS00MzUgMjE5SDB6XCIsXG4gIHJpZ2h0aGFycG9vbjogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuM1xcbi0zLjctMTUuMy0xMS0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMlxcbi0xMC43IDAtMTYuNyAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNThcXG4gNjkuMiA5MiA5NC41em0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29ucGx1czogXCJNMCAyNDF2NDBoMzk5OTkzYzQuNy00LjcgNy05LjMgNy0xNCAwLTkuMy0zLjctMTUuMy0xMVxcbi0xOC05Mi43LTU2LjctMTU5LTEzMy43LTE5OS0yMzEtMy4zLTkuMy02LTE0LjctOC0xNi0yLTEuMy03LTItMTUtMi0xMC43IDAtMTYuN1xcbiAyLTE4IDYtMiAyLjctMSA5LjcgMyAyMSAxNS4zIDQyIDM2LjcgODEuOCA2NCAxMTkuNSAyNy4zIDM3LjcgNTggNjkuMiA5MiA5NC41elxcbm0wIDB2NDBoMzk5OTAwdi00MHogbTEwMCAxOTR2NDBoMzk5OTAwdi00MHptMCAwdjQwaDM5OTkwMHYtNDB6XCIsXG4gIHJpZ2h0aGFycG9vbmRvd246IFwiTTM5OTc0NyA1MTFjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOCAxNS0yLjVzNC43LTYuOFxcbiA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuMyA4LjUtNS44IDkuNVxcbi03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuMy02NC43IDU3LTkyIDk1XFxuLTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29uZG93bnBsdXM6IFwiTTM5OTc0NyA3MDVjMCA3LjMgNi43IDExIDIwIDExIDggMCAxMy0uOFxcbiAxNS0yLjVzNC43LTYuOCA4LTE1LjVjNDAtOTQgOTkuMy0xNjYuMyAxNzgtMjE3IDEzLjMtOCAyMC4zLTEyLjMgMjEtMTMgNS4zLTMuM1xcbiA4LjUtNS44IDkuNS03LjUgMS0xLjcgMS41LTUuMiAxLjUtMTAuNXMtMi4zLTEwLjMtNy0xNUgwdjQwaDM5OTkwOGMtMzQgMjUuM1xcbi02NC43IDU3LTkyIDk1LTI3LjMgMzgtNDguNyA3Ny43LTY0IDExOS0zLjMgOC43LTUgMTQtNSAxNnpNMCA0MzV2NDBoMzk5OTAwdi00MHpcXG5tMC0xOTR2NDBoNDAwMDAwdi00MHptMCAwdjQwaDQwMDAwMHYtNDB6XCIsXG4gIHJpZ2h0aG9vazogXCJNMzk5ODU5IDI0MWMtNzY0IDAgMCAwIDAgMCA0MC0zLjMgNjguNy0xNS43IDg2LTM3IDEwLTEyIDE1LTI1LjNcXG4gMTUtNDAgMC0yMi43LTkuOC00MC43LTI5LjUtNTQtMTkuNy0xMy4zLTQzLjUtMjEtNzEuNS0yMy0xNy4zLTEuMy0yNi04LTI2LTIwIDBcXG4tMTMuMyA4LjctMjAgMjYtMjAgMzggMCA3MSAxMS4yIDk5IDMzLjUgMCAwIDcgNS42IDIxIDE2LjcgMTQgMTEuMiAyMSAzMy41IDIxXFxuIDY2LjhzLTE0IDYxLjItNDIgODMuNWMtMjggMjIuMy02MSAzMy41LTk5IDMzLjVMMCAyNDF6IE0wIDI4MXYtNDBoMzk5ODU5djQwelwiLFxuICByaWdodGxpbmVzZWdtZW50OiBcIk0zOTk5NjAgMjQxIFY5NCBoNDAgVjQyOCBoLTQwIFYyODEgSDAgdi00MHpcXG5NMzk5OTYwIDI0MSBWOTQgaDQwIFY0MjggaC00MCBWMjgxIEgwIHYtNDB6XCIsXG4gIHJpZ2h0VG9Gcm9tOiBcIk00MDAwMDAgMTY3Yy03MC43LTQyLTExOC05Ny43LTE0Mi0xNjdoLTIzYy0xNS4zIDAtMjMgLjMtMjNcXG4gMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zIDQxLjMgNjkgNzAgMTAxbDcgOEgwdjQwaDM5OTkwNWwtNyA4Yy0yOC43IDMyXFxuLTUyIDY1LjctNzAgMTAxLTEwLjcgMjMuMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyM2MyNC02OS4zIDcxLjMtMTI1IDE0Mlxcbi0xNjd6IE0xMDAgMTQ3djQwaDM5OTkwMHYtNDB6TTAgMzQxdjQwaDM5OTkwMHYtNDB6XCIsXG4gIC8vIHR3b2hlYWRsZWZ0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxOUUgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICB0d29oZWFkbGVmdGFycm93OiBcIk0wIDE2N2M2OCA0MFxcbiAxMTUuNyA5NS43IDE0MyAxNjdoMjJjMTUuMyAwIDIzLS4zIDIzLTEgMC0xLjMtNS4zLTEzLjctMTYtMzctMTgtMzUuMy00MS4zLTY5XFxuLTcwLTEwMWwtNy04aDEyNWw5IDdjNTAuNyAzOS4zIDg1IDg2IDEwMyAxNDBoNDZjMC00LjctNi4zLTE4LjctMTktNDItMTgtMzUuM1xcbi00MC02Ny4zLTY2LTk2bC05LTloMzk5NzE2di00MEgyODRsOS05YzI2LTI4LjcgNDgtNjAuNyA2Ni05NiAxMi43LTIzLjMzMyAxOVxcbi0zNy4zMzMgMTktNDJoLTQ2Yy0xOCA1NC01Mi4zIDEwMC43LTEwMyAxNDBsLTkgN0g5NWw3LThjMjguNy0zMiA1Mi02NS43IDcwLTEwMVxcbiAxMC43LTIzLjMzMyAxNi0zNS43IDE2LTM3IDAtLjctNy43LTEtMjMtMWgtMjJDMTE1LjcgNzEuMyA2OCAxMjcgMCAxNjd6XCIsXG4gIHR3b2hlYWRyaWdodGFycm93OiBcIk00MDAwMDAgMTY3XFxuYy02OC00MC0xMTUuNy05NS43LTE0My0xNjdoLTIyYy0xNS4zIDAtMjMgLjMtMjMgMSAwIDEuMyA1LjMgMTMuNyAxNiAzNyAxOCAzNS4zXFxuIDQxLjMgNjkgNzAgMTAxbDcgOGgtMTI1bC05LTdjLTUwLjctMzkuMy04NS04Ni0xMDMtMTQwaC00NmMwIDQuNyA2LjMgMTguNyAxOSA0MlxcbiAxOCAzNS4zIDQwIDY3LjMgNjYgOTZsOSA5SDB2NDBoMzk5NzE2bC05IDljLTI2IDI4LjctNDggNjAuNy02NiA5Ni0xMi43IDIzLjMzM1xcbi0xOSAzNy4zMzMtMTkgNDJoNDZjMTgtNTQgNTIuMy0xMDAuNyAxMDMtMTQwbDktN2gxMjVsLTcgOGMtMjguNyAzMi01MiA2NS43LTcwXFxuIDEwMS0xMC43IDIzLjMzMy0xNiAzNS43LTE2IDM3IDAgLjcgNy43IDEgMjMgMWgyMmMyNy4zLTcxLjMgNzUtMTI3IDE0My0xNjd6XCIsXG4gIC8vIHRpbGRlMSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHRpbGRlMTogXCJNMjAwIDU1LjUzOGMtNzcgMC0xNjggNzMuOTUzLTE3NyA3My45NTMtMyAwLTdcXG4tMi4xNzUtOS01LjQzN0wyIDk3Yy0xLTItMi00LTItNiAwLTQgMi03IDUtOWwyMC0xMkMxMTYgMTIgMTcxIDAgMjA3IDBjODYgMFxcbiAxMTQgNjggMTkxIDY4IDc4IDAgMTY4LTY4IDE3Ny02OCA0IDAgNyAyIDkgNWwxMiAxOWMxIDIuMTc1IDIgNC4zNSAyIDYuNTI1IDBcXG4gNC4zNS0yIDcuNjEzLTUgOS43ODhsLTE5IDEzLjA1Yy05MiA2My4wNzctMTE2LjkzNyA3NS4zMDgtMTgzIDc2LjEyOFxcbi02OC4yNjcuODQ3LTExMy03My45NTItMTkxLTczLjk1MnpcIixcbiAgLy8gZGl0dG8gdGlsZGUyLCB0aWxkZTMsICYgdGlsZGU0XG4gIHRpbGRlMjogXCJNMzQ0IDU1LjI2NmMtMTQyIDAtMzAwLjYzOCA4MS4zMTYtMzExLjUgODYuNDE4XFxuLTguMDEgMy43NjItMjIuNSAxMC45MS0yMy41IDUuNTYyTDEgMTIwYy0xLTItMS0zLTEtNCAwLTUgMy05IDgtMTBsMTguNC05QzE2MC45XFxuIDMxLjkgMjgzIDAgMzU4IDBjMTQ4IDAgMTg4IDEyMiAzMzEgMTIyczMxNC05NyAzMjYtOTdjNCAwIDggMiAxMCA3bDcgMjEuMTE0XFxuYzEgMi4xNCAxIDMuMjEgMSA0LjI4IDAgNS4zNDctMyA5LjYyNi03IDEwLjY5NmwtMjIuMyAxMi42MjJDODUyLjYgMTU4LjM3MiA3NTFcXG4gMTgxLjQ3NiA2NzYgMTgxLjQ3NmMtMTQ5IDAtMTg5LTEyNi4yMS0zMzItMTI2LjIxelwiLFxuICB0aWxkZTM6IFwiTTc4NiA1OUM0NTcgNTkgMzIgMTc1LjI0MiAxMyAxNzUuMjQyYy02IDAtMTAtMy40NTdcXG4tMTEtMTAuMzdMLjE1IDEzOGMtMS03IDMtMTIgMTAtMTNsMTkuMi02LjRDMzc4LjQgNDAuNyA2MzQuMyAwIDgwNC4zIDBjMzM3IDBcXG4gNDExLjggMTU3IDc0Ni44IDE1NyAzMjggMCA3NTQtMTEyIDc3My0xMTIgNSAwIDEwIDMgMTEgOWwxIDE0LjA3NWMxIDguMDY2LS42OTdcXG4gMTYuNTk1LTYuNjk3IDE3LjQ5MmwtMjEuMDUyIDcuMzFjLTM2Ny45IDk4LjE0Ni02MDkuMTUgMTIyLjY5Ni03NzguMTUgMTIyLjY5NlxcbiAtMzM4IDAtNDA5LTE1Ni41NzMtNzQ0LTE1Ni41NzN6XCIsXG4gIHRpbGRlNDogXCJNNzg2IDU4QzQ1NyA1OCAzMiAxNzcuNDg3IDEzIDE3Ny40ODdjLTYgMC0xMC0zLjM0NVxcbi0xMS0xMC4wMzVMLjE1IDE0M2MtMS03IDMtMTIgMTAtMTNsMjItNi43QzM4MS4yIDM1IDYzNy4xNSAwIDgwNy4xNSAwYzMzNyAwIDQwOVxcbiAxNzcgNzQ0IDE3NyAzMjggMCA3NTQtMTI3IDc3My0xMjcgNSAwIDEwIDMgMTEgOWwxIDE0Ljc5NGMxIDcuODA1LTMgMTMuMzgtOVxcbiAxNC40OTVsLTIwLjcgNS41NzRjLTM2Ni44NSA5OS43OS02MDcuMyAxMzkuMzcyLTc3Ni4zIDEzOS4zNzItMzM4IDAtNDA5XFxuIC0xNzUuMjM2LTc0NC0xNzUuMjM2elwiLFxuICAvLyB2ZWMgaXMgZnJvbSBnbHlwaCBVKzIwRDcgaW4gZm9udCBLYVRlWCBNYWluXG4gIHZlYzogXCJNMzc3IDIwYzAtNS4zMzMgMS44MzMtMTAgNS41LTE0UzM5MSAwIDM5NyAwYzQuNjY3IDAgOC42NjcgMS42NjcgMTIgNVxcbjMuMzMzIDIuNjY3IDYuNjY3IDkgMTAgMTkgNi42NjcgMjQuNjY3IDIwLjMzMyA0My42NjcgNDEgNTcgNy4zMzMgNC42NjcgMTFcXG4xMC42NjcgMTEgMTggMCA2LTEgMTAtMyAxMnMtNi42NjcgNS0xNCA5Yy0yOC42NjcgMTQuNjY3LTUzLjY2NyAzNS42NjctNzUgNjNcXG4tMS4zMzMgMS4zMzMtMy4xNjcgMy41LTUuNSA2LjVzLTQgNC44MzMtNSA1LjVjLTEgLjY2Ny0yLjUgMS4zMzMtNC41IDJzLTQuMzMzIDFcXG4tNyAxYy00LjY2NyAwLTkuMTY3LTEuODMzLTEzLjUtNS41UzMzNyAxODQgMzM3IDE3OGMwLTEyLjY2NyAxNS42NjctMzIuMzMzIDQ3LTU5XFxuSDIxM2wtMTcxLTFjLTguNjY3LTYtMTMtMTIuMzMzLTEzLTE5IDAtNC42NjcgNC4zMzMtMTEuMzMzIDEzLTIwaDM1OVxcbmMtMTYtMjUuMzMzLTI0LTQ1LTI0LTU5elwiLFxuICAvLyB3aWRlaGF0MSBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBnbHlwaCBmcm9tIHRoZSBNblN5bWJvbCBwYWNrYWdlXG4gIHdpZGVoYXQxOiBcIk01MjkgMGg1bDUxOSAxMTVjNSAxIDkgNSA5IDEwIDAgMS0xIDItMSAzbC00IDIyXFxuYy0xIDUtNSA5LTExIDloLTJMNTMyIDY3IDE5IDE1OWgtMmMtNSAwLTktNC0xMS05bC01LTIyYy0xLTYgMi0xMiA4LTEzelwiLFxuICAvLyBkaXR0byB3aWRlaGF0Miwgd2lkZWhhdDMsICYgd2lkZWhhdDRcbiAgd2lkZWhhdDI6IFwiTTExODEgMGgybDExNzEgMTc2YzYgMCAxMCA1IDEwIDExbC0yIDIzYy0xIDYtNSAxMFxcbi0xMSAxMGgtMUwxMTgyIDY3IDE1IDIyMGgtMWMtNiAwLTEwLTQtMTEtMTBsLTItMjNjLTEtNiA0LTExIDEwLTExelwiLFxuICB3aWRlaGF0MzogXCJNMTE4MSAwaDJsMTE3MSAyMzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjgwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG4gIHdpZGVoYXQ0OiBcIk0xMTgxIDBoMmwxMTcxIDI5NmM2IDAgMTAgNSAxMCAxMWwtMiAyM2MtMSA2LTUgMTBcXG4tMTEgMTBoLTFMMTE4MiA2NyAxNSAzNDBoLTFjLTYgMC0xMC00LTExLTEwbC0yLTIzYy0xLTYgNC0xMSAxMC0xMXpcIixcbiAgLy8gd2lkZWNoZWNrIHBhdGhzIGFyZSBhbGwgaW52ZXJ0ZWQgdmVyc2lvbnMgb2Ygd2lkZWhhdFxuICB3aWRlY2hlY2sxOiBcIk01MjksMTU5aDVsNTE5LC0xMTVjNSwtMSw5LC01LDksLTEwYzAsLTEsLTEsLTIsLTEsLTNsLTQsLTIyYy0xLFxcbi01LC01LC05LC0xMSwtOWgtMmwtNTEyLDkybC01MTMsLTkyaC0yYy01LDAsLTksNCwtMTEsOWwtNSwyMmMtMSw2LDIsMTIsOCwxM3pcIixcbiAgd2lkZWNoZWNrMjogXCJNMTE4MSwyMjBoMmwxMTcxLC0xNzZjNiwwLDEwLC01LDEwLC0xMWwtMiwtMjNjLTEsLTYsLTUsLTEwLFxcbi0xMSwtMTBoLTFsLTExNjgsMTUzbC0xMTY3LC0xNTNoLTFjLTYsMCwtMTAsNCwtMTEsMTBsLTIsMjNjLTEsNiw0LDExLDEwLDExelwiLFxuICB3aWRlY2hlY2szOiBcIk0xMTgxLDI4MGgybDExNzEsLTIzNmM2LDAsMTAsLTUsMTAsLTExbC0yLC0yM2MtMSwtNiwtNSwtMTAsXFxuLTExLC0xMGgtMWwtMTE2OCwyMTNsLTExNjcsLTIxM2gtMWMtNiwwLC0xMCw0LC0xMSwxMGwtMiwyM2MtMSw2LDQsMTEsMTAsMTF6XCIsXG4gIHdpZGVjaGVjazQ6IFwiTTExODEsMzQwaDJsMTE3MSwtMjk2YzYsMCwxMCwtNSwxMCwtMTFsLTIsLTIzYy0xLC02LC01LC0xMCxcXG4tMTEsLTEwaC0xbC0xMTY4LDI3M2wtMTE2NywtMjczaC0xYy02LDAsLTEwLDQsLTExLDEwbC0yLDIzYy0xLDYsNCwxMSwxMCwxMXpcIixcbiAgLy8gVGhlIG5leHQgdGVuIHBhdGhzIHN1cHBvcnQgcmVhY3Rpb24gYXJyb3dzIGZyb20gdGhlIG1oY2hlbSBwYWNrYWdlLlxuICAvLyBBcnJvd3MgZm9yIFxcY2V7PC0tPn0gYXJlIG9mZnNldCBmcm9tIHhBeGlzIGJ5IDAuMjJleCwgcGVyIG1oY2hlbSBpbiBMYVRlWFxuICAvLyBiYXJhYm92ZWxlZnRhcnJvdyBpcyBtb3N0bHkgZnJvbSBmcm9tIGdseXBoIFUrMjE5MCBpbiBmb250IEthVGVYIE1haW5cbiAgYmFyYWJvdmVsZWZ0YXJyb3c6IFwiTTQwMDAwMCA2MjBoLTM5OTg5MGwzIC0zYzY4LjcgLTUyLjcgMTEzLjcgLTEyMCAxMzUgLTIwMlxcbmM0IC0xNC43IDYgLTIzIDYgLTI1YzAgLTcuMyAtNyAtMTEgLTIxIC0xMWMtOCAwIC0xMy4yIDAuOCAtMTUuNSAyLjVcXG5jLTIuMyAxLjcgLTQuMiA1LjggLTUuNSAxMi41Yy0xLjMgNC43IC0yLjcgMTAuMyAtNCAxN2MtMTIgNDguNyAtMzQuOCA5MiAtNjguNSAxMzBcXG5zLTc0LjIgNjYuMyAtMTIxLjUgODVjLTEwIDQgLTE2IDcuNyAtMTggMTFjMCA4LjcgNiAxNC4zIDE4IDE3YzQ3LjMgMTguNyA4Ny44IDQ3XFxuMTIxLjUgODVzNTYuNSA4MS4zIDY4LjUgMTMwYzAuNyAyIDEuMyA1IDIgOXMxLjIgNi43IDEuNSA4YzAuMyAxLjMgMSAzLjMgMiA2XFxuczIuMiA0LjUgMy41IDUuNWMxLjMgMSAzLjMgMS44IDYgMi41czYgMSAxMCAxYzE0IDAgMjEgLTMuNyAyMSAtMTFcXG5jMCAtMiAtMiAtMTAuMyAtNiAtMjVjLTIwIC03OS4zIC02NSAtMTQ2LjcgLTEzNSAtMjAybC0zIC0zaDM5OTg5MHpcXG5NMTAwIDYyMHY0MGgzOTk5MDB2LTQweiBNMCAyNDF2NDBoMzk5OTAwdi00MHpNMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gcmlnaHRhcnJvd2Fib3ZlYmFyIGlzIG1vc3RseSBmcm9tIGdseXBoIFUrMjE5MiwgS2FUZVggTWFpblxuICByaWdodGFycm93YWJvdmViYXI6IFwiTTAgMjQxdjQwaDM5OTg5MWMtNDcuMyAzNS4zLTg0IDc4LTExMCAxMjgtMTYuNyAzMlxcbi0yNy43IDYzLjctMzMgOTUgMCAxLjMtLjIgMi43LS41IDQtLjMgMS4zLS41IDIuMy0uNSAzIDAgNy4zIDYuNyAxMSAyMCAxMSA4IDBcXG4xMy4yLS44IDE1LjUtMi41IDIuMy0xLjcgNC4yLTUuNSA1LjUtMTEuNSAyLTEzLjMgNS43LTI3IDExLTQxIDE0LjctNDQuNyAzOVxcbi04NC41IDczLTExOS41czczLjctNjAuMiAxMTktNzUuNWM2LTIgOS01LjcgOS0xMXMtMy05LTktMTFjLTQ1LjMtMTUuMy04NS00MC41XFxuLTExOS03NS41cy01OC4zLTc0LjgtNzMtMTE5LjVjLTQuNy0xNC04LjMtMjcuMy0xMS00MC0xLjMtNi43LTMuMi0xMC44LTUuNVxcbi0xMi41LTIuMy0xLjctNy41LTIuNS0xNS41LTIuNS0xNCAwLTIxIDMuNy0yMSAxMSAwIDIgMiAxMC4zIDYgMjUgMjAuNyA4My4zIDY3XFxuMTUxLjcgMTM5IDIwNXptOTYgMzc5aDM5OTg5NHY0MEgwem0wIDBoMzk5OTA0djQwSDB6XCIsXG4gIC8vIFRoZSBzaG9ydCBsZWZ0IGhhcnBvb24gaGFzIDAuNWVtIChpLmUuIDUwMCB1bml0cykga2VybiBvbiB0aGUgbGVmdCBlbmQuXG4gIC8vIFJlZiBmcm9tIG1oY2hlbS5zdHk6IFxccmxhcHtcXHJhaXNlYm94ey0uMjJleH17JFxca2VybjAuNWVtXG4gIGJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbjogXCJNNTA3LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3XFxuYzIsMC43LDUsMSw5LDFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFcXG5jLTMyLC04Ny4zLC04Mi43LC0xNTcuNywtMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTM1MSwwbDAsLTQwXFxuYy0zOTg1NzAsMCwtMzk5NDM3LDAsLTM5OTQzNywweiBNNTkzIDQzNSB2NDAgSDM5OTUwMCB2LTQwelxcbk0wIDI4MSB2LTQwIEgzOTk5MDggdjQweiBNMCAyODEgdi00MCBIMzk5OTA4IHY0MHpcIixcbiAgcmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhcjogXCJNMCwyNDEgbDAsNDBjMzk5MTI2LDAsMzk5OTkzLDAsMzk5OTkzLDBcXG5jNC43LC00LjcsNywtOS4zLDcsLTE0YzAsLTkuMywtMy43LC0xNS4zLC0xMSwtMThjLTkyLjcsLTU2LjcsLTE1OSwtMTMzLjcsLTE5OSxcXG4tMjMxYy0zLjMsLTkuMywtNiwtMTQuNywtOCwtMTZjLTIsLTEuMywtNywtMiwtMTUsLTJjLTEwLjcsMCwtMTYuNywyLC0xOCw2XFxuYy0yLDIuNywtMSw5LjcsMywyMWMxNS4zLDQyLDM2LjcsODEuOCw2NCwxMTkuNWMyNy4zLDM3LjcsNTgsNjkuMiw5Miw5NC41elxcbk0wIDI0MSB2NDAgSDM5OTkwOCB2LTQweiBNMCA0NzUgdi00MCBIMzk5NTAwIHY0MHogTTAgNDc1IHYtNDAgSDM5OTUwMCB2NDB6XCIsXG4gIHNob3J0YmFyYWJvdmVsZWZ0aGFycG9vbjogXCJNNyw0MzVjLTQsNCwtNi4zLDguNywtNywxNGMwLDUuMywwLjcsOSwyLDExXFxuYzEuMywyLDUuMyw1LjMsMTIsMTBjOTAuNyw1NCwxNTYsMTMwLDE5NiwyMjhjMy4zLDEwLjcsNi4zLDE2LjMsOSwxN2MyLDAuNyw1LDEsOSxcXG4xYzAsMCw1LDAsNSwwYzEwLjcsMCwxNi43LC0yLDE4LC02YzIsLTIuNywxLC05LjcsLTMsLTIxYy0zMiwtODcuMywtODIuNywtMTU3LjcsXFxuLTE1MiwtMjExYzAsMCwtMywtMywtMywtM2wzOTk5MDcsMGwwLC00MGMtMzk5MTI2LDAsLTM5OTk5MywwLC0zOTk5OTMsMHpcXG5NOTMgNDM1IHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6IE01MDAgMjQxIHY0MCBINDAwMDAwIHYtNDB6XCIsXG4gIHNob3J0cmlnaHRoYXJwb29uYWJvdmViYXI6IFwiTTUzLDI0MWwwLDQwYzM5ODU3MCwwLDM5OTQzNywwLDM5OTQzNywwXFxuYzQuNywtNC43LDcsLTkuMyw3LC0xNGMwLC05LjMsLTMuNywtMTUuMywtMTEsLTE4Yy05Mi43LC01Ni43LC0xNTksLTEzMy43LC0xOTksXFxuLTIzMWMtMy4zLC05LjMsLTYsLTE0LjcsLTgsLTE2Yy0yLC0xLjMsLTcsLTIsLTE1LC0yYy0xMC43LDAsLTE2LjcsMiwtMTgsNlxcbmMtMiwyLjcsLTEsOS43LDMsMjFjMTUuMyw0MiwzNi43LDgxLjgsNjQsMTE5LjVjMjcuMywzNy43LDU4LDY5LjIsOTIsOTQuNXpcXG5NNTAwIDI0MSB2NDAgSDM5OTQwOCB2LTQweiBNNTAwIDQzNSB2NDAgSDQwMDAwMCB2LTQwelwiXG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdHJlZS5qc1xuXG5cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBkb2N1bWVudCBmcmFnbWVudCwgd2hpY2ggY29udGFpbnMgZWxlbWVudHMsIGJ1dCB3aGVuXG4gKiBwbGFjZWQgaW50byB0aGUgRE9NIGRvZXNuJ3QgaGF2ZSBhbnkgcmVwcmVzZW50YXRpb24gaXRzZWxmLiBJdCBvbmx5IGNvbnRhaW5zXG4gKiBjaGlsZHJlbiBhbmQgZG9lc24ndCBoYXZlIGFueSBET00gbm9kZSBwcm9wZXJ0aWVzLlxuICovXG52YXIgdHJlZV9Eb2N1bWVudEZyYWdtZW50ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLy8gSHRtbERvbU5vZGVcbiAgLy8gTmV2ZXIgdXNlZDsgbmVlZGVkIGZvciBzYXRpc2Z5aW5nIGludGVyZmFjZS5cbiAgZnVuY3Rpb24gRG9jdW1lbnRGcmFnbWVudChjaGlsZHJlbikge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmNsYXNzZXMgPSBbXTtcbiAgICB0aGlzLmhlaWdodCA9IDA7XG4gICAgdGhpcy5kZXB0aCA9IDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7XG4gICAgdGhpcy5zdHlsZSA9IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH1cbiAgLyoqIENvbnZlcnQgdGhlIGZyYWdtZW50IGludG8gYSBub2RlLiAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgZnJhZy5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZztcbiAgfVxuICAvKiogQ29udmVydCB0aGUgZnJhZ21lbnQgaW50byBIVE1MIG1hcmt1cC4gKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIlwiOyAvLyBTaW1wbHkgY29uY2F0ZW5hdGUgdGhlIG1hcmt1cCBmb3IgdGhlIGNoaWxkcmVuIHRvZ2V0aGVyLlxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIHN0cmluZywgc2ltaWxhciB0byBpbm5lclRleHQuIEFwcGxpZXMgdG9cbiAgICogTWF0aERvbU5vZGUncyBvbmx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoKSB7XG4gICAgLy8gVG8gYXZvaWQgdGhpcywgd2Ugd291bGQgc3ViY2xhc3MgZG9jdW1lbnRGcmFnbWVudCBzZXBhcmF0ZWx5IGZvclxuICAgIC8vIE1hdGhNTCwgYnV0IHBvbHlmaWxscyBmb3Igc3ViY2xhc3NpbmcgaXMgZXhwZW5zaXZlIHBlciBQUiAxNDY5LlxuICAgIC8vICRGbG93Rml4TWU6IE9ubHkgd29ya3MgZm9yIENoaWxkVHlwZSA9IE1hdGhEb21Ob2RlLlxuICAgIHZhciB0b1RleHQgPSBmdW5jdGlvbiB0b1RleHQoY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZC50b1RleHQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubWFwKHRvVGV4dCkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDtcbn0oKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RvbVRyZWUuanNcbi8qKlxuICogVGhlc2Ugb2JqZWN0cyBzdG9yZSB0aGUgZGF0YSBhYm91dCB0aGUgRE9NIG5vZGVzIHdlIGNyZWF0ZSwgYXMgd2VsbCBhcyBzb21lXG4gKiBleHRyYSBkYXRhLiBUaGV5IGNhbiB0aGVuIGJlIHRyYW5zZm9ybWVkIGludG8gcmVhbCBET00gbm9kZXMgd2l0aCB0aGVcbiAqIGB0b05vZGVgIGZ1bmN0aW9uIG9yIEhUTUwgbWFya3VwIHVzaW5nIGB0b01hcmt1cGAuIFRoZXkgYXJlIHVzZWZ1bCBmb3IgYm90aFxuICogc3RvcmluZyBleHRyYSBwcm9wZXJ0aWVzIG9uIHRoZSBub2RlcywgYXMgd2VsbCBhcyBwcm92aWRpbmcgYSB3YXkgdG8gZWFzaWx5XG4gKiB3b3JrIHdpdGggdGhlIERPTS5cbiAqXG4gKiBTaW1pbGFyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIE1hdGhNTCBub2RlcyBleGlzdCBpbiBtYXRoTUxUcmVlLmpzLlxuICpcbiAqIFRPRE86IHJlZmFjdG9yIGBzcGFuYCBhbmQgYGFuY2hvcmAgaW50byBjb21tb24gc3VwZXJjbGFzcyB3aGVuXG4gKiB0YXJnZXQgZW52aXJvbm1lbnRzIHN1cHBvcnQgY2xhc3MgaW5oZXJpdGFuY2VcbiAqL1xuXG5cblxuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUTUwgY2xhc3NOYW1lIGJhc2VkIG9uIGEgbGlzdCBvZiBjbGFzc2VzLiBJbiBhZGRpdGlvbiB0byBqb2luaW5nXG4gKiB3aXRoIHNwYWNlcywgd2UgYWxzbyByZW1vdmUgZW1wdHkgY2xhc3Nlcy5cbiAqL1xudmFyIGNyZWF0ZUNsYXNzID0gZnVuY3Rpb24gY3JlYXRlQ2xhc3MoY2xhc3Nlcykge1xuICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNscykge1xuICAgIHJldHVybiBjbHM7XG4gIH0pLmpvaW4oXCIgXCIpO1xufTtcblxudmFyIGluaXROb2RlID0gZnVuY3Rpb24gaW5pdE5vZGUoY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpIHtcbiAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gIHRoaXMuaGVpZ2h0ID0gMDtcbiAgdGhpcy5kZXB0aCA9IDA7XG4gIHRoaXMubWF4Rm9udFNpemUgPSAwO1xuICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgdGhpcy5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQ29udmVydCBpbnRvIGFuIEhUTUwgbm9kZVxuICovXG5cblxudmFyIF90b05vZGUgPSBmdW5jdGlvbiB0b05vZGUodGFnTmFtZSkge1xuICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IC8vIEFwcGx5IHRoZSBjbGFzc1xuXG4gIG5vZGUuY2xhc3NOYW1lID0gY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKTsgLy8gQXBwbHkgaW5saW5lIHN0eWxlc1xuXG4gIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWUgRmxvdyBkb2Vzbid0IHNlZW0gdG8gdW5kZXJzdGFuZCBzcGFuLnN0eWxlJ3MgdHlwZS5cbiAgICAgIG5vZGUuc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgfVxuICB9IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuXG4gIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICB9XG4gIH0gLy8gQXBwZW5kIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBIVE1MIG5vZGVzXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuLyoqXG4gKiBDb252ZXJ0IGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nXG4gKi9cblxuXG52YXIgX3RvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAodGFnTmFtZSkge1xuICB2YXIgbWFya3VwID0gXCI8XCIgKyB0YWdOYW1lOyAvLyBBZGQgdGhlIGNsYXNzXG5cbiAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICBtYXJrdXAgKz0gXCIgY2xhc3M9XFxcIlwiICsgdXRpbHMuZXNjYXBlKGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3NlcykpICsgXCJcXFwiXCI7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gXCJcIjsgLy8gQWRkIHRoZSBzdHlsZXMsIGFmdGVyIGh5cGhlbmF0aW9uXG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgc3R5bGVzICs9IHV0aWxzLmh5cGhlbmF0ZShzdHlsZSkgKyBcIjpcIiArIHRoaXMuc3R5bGVbc3R5bGVdICsgXCI7XCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0eWxlcykge1xuICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICB9IC8vIEFkZCB0aGUgYXR0cmlidXRlc1xuXG5cbiAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGF0dHIpKSB7XG4gICAgICBtYXJrdXAgKz0gXCIgXCIgKyBhdHRyICsgXCI9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHRoaXMuYXR0cmlidXRlc1thdHRyXSkgKyBcIlxcXCJcIjtcbiAgICB9XG4gIH1cblxuICBtYXJrdXAgKz0gXCI+XCI7IC8vIEFkZCB0aGUgbWFya3VwIG9mIHRoZSBjaGlsZHJlbiwgYWxzbyBhcyBtYXJrdXBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICB9XG5cbiAgbWFya3VwICs9IFwiPC9cIiArIHRhZ05hbWUgKyBcIj5cIjtcbiAgcmV0dXJuIG1hcmt1cDtcbn07IC8vIE1ha2luZyB0aGUgdHlwZSBiZWxvdyBleGFjdCB3aXRoIGFsbCBvcHRpb25hbCBmaWVsZHMgZG9lc24ndCB3b3JrIGR1ZSB0b1xuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDU4MlxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNTY4OFxuLy8gSG93ZXZlciwgc2luY2UgKmFsbCogZmllbGRzIGFyZSBvcHRpb25hbCwgJFNoYXBlPD4gd29ya3MgYXMgc3VnZ2VzdGVkIGluIDU2ODhcbi8vIGFib3ZlLlxuLy8gVGhpcyB0eXBlIGRvZXMgbm90IGluY2x1ZGUgYWxsIENTUyBwcm9wZXJ0aWVzLiBBZGRpdGlvbmFsIHByb3BlcnRpZXMgc2hvdWxkXG4vLyBiZSBhZGRlZCBhcyBuZWVkZWQuXG5cblxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIHNwYW4gbm9kZSwgd2l0aCBhIGNsYXNzTmFtZSwgYSBsaXN0IG9mIGNoaWxkcmVuLCBhbmRcbiAqIGFuIGlubGluZSBzdHlsZS4gSXQgYWxzbyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgaGVpZ2h0LCBkZXB0aCwgYW5kXG4gKiBtYXhGb250U2l6ZS5cbiAqXG4gKiBSZXByZXNlbnRzIHR3byB0eXBlcyB3aXRoIGRpZmZlcmVudCB1c2VzOiBTdmdTcGFuIHRvIHdyYXAgYW4gU1ZHIGFuZCBEb21TcGFuXG4gKiBvdGhlcndpc2UuIFRoaXMgdHlwZXNhZmV0eSBpcyBpbXBvcnRhbnQgd2hlbiBIVE1MIGJ1aWxkZXJzIGFjY2VzcyBhIHNwYW4nc1xuICogY2hpbGRyZW4uXG4gKi9cbnZhciBkb21UcmVlX1NwYW4gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSkge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuY2xhc3NlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmRlcHRoID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucywgc3R5bGUpO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTtcbiAgfVxuICAvKipcbiAgICogU2V0cyBhbiBhcmJpdHJhcnkgYXR0cmlidXRlIG9uIHRoZSBzcGFuLiBXYXJuaW5nOiB1c2UgdGhpcyB3aXNlbHkuIE5vdFxuICAgKiBhbGwgYnJvd3NlcnMgc3VwcG9ydCBhdHRyaWJ1dGVzIHRoZSBzYW1lLCBhbmQgaGF2aW5nIHRvbyBtYW55IGN1c3RvbVxuICAgKiBhdHRyaWJ1dGVzIGlzIHByb2JhYmx5IGJhZC5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gU3Bhbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBfcHJvdG8uaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9O1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcInNwYW5cIik7XG4gIH07XG5cbiAgX3Byb3RvLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgcmV0dXJuIF90b01hcmt1cC5jYWxsKHRoaXMsIFwic3BhblwiKTtcbiAgfTtcblxuICByZXR1cm4gU3Bhbjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gYW5jaG9yICg8YT4pIGVsZW1lbnQgd2l0aCBhIGh5cGVybGluay4gIFNlZSBgc3BhbmBcbiAqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4gKi9cblxudmFyIGRvbVRyZWVfQW5jaG9yID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIGluaXROb2RlLmNhbGwodGhpcywgY2xhc3Nlcywgb3B0aW9ucyk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gIH1cblxuICB2YXIgX3Byb3RvMiA9IEFuY2hvci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgcmV0dXJuIF90b05vZGUuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgX3Byb3RvMi50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHJldHVybiBfdG9NYXJrdXAuY2FsbCh0aGlzLCBcImFcIik7XG4gIH07XG5cbiAgcmV0dXJuIEFuY2hvcjtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYW4gaW1hZ2UgZW1iZWQgKDxpbWc+KSBlbGVtZW50LlxuICovXG5cbnZhciBkb21UcmVlX0ltZyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEltZyhzcmMsIGFsdCwgc3R5bGUpIHtcbiAgICB0aGlzLnNyYyA9IHZvaWQgMDtcbiAgICB0aGlzLmFsdCA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHQgPSBhbHQ7XG4gICAgdGhpcy5zcmMgPSBzcmM7XG4gICAgdGhpcy5jbGFzc2VzID0gW1wibW9yZFwiXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGU7XG4gIH1cblxuICB2YXIgX3Byb3RvMyA9IEltZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMy5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvMy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgIG5vZGUuc3JjID0gdGhpcy5zcmM7XG4gICAgbm9kZS5hbHQgPSB0aGlzLmFsdDtcbiAgICBub2RlLmNsYXNzTmFtZSA9IFwibW9yZFwiOyAvLyBBcHBseSBpbmxpbmUgc3R5bGVzXG5cbiAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBub2RlLnN0eWxlW3N0eWxlXSA9IHRoaXMuc3R5bGVbc3R5bGVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzMudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICB2YXIgbWFya3VwID0gXCI8aW1nICBzcmM9J1wiICsgdGhpcy5zcmMgKyBcIiAnYWx0PSdcIiArIHRoaXMuYWx0ICsgXCInIFwiOyAvLyBBZGQgdGhlIHN0eWxlcywgYWZ0ZXIgaHlwaGVuYXRpb25cblxuICAgIHZhciBzdHlsZXMgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIicvPlwiO1xuICAgIHJldHVybiBtYXJrdXA7XG4gIH07XG5cbiAgcmV0dXJuIEltZztcbn0oKTtcbnZhciBpQ29tYmluYXRpb25zID0ge1xuICAnw64nOiBcIlxcdTAxMzFcXHUwMzAyXCIsXG4gICfDryc6IFwiXFx1MDEzMVxcdTAzMDhcIixcbiAgJ8OtJzogXCJcXHUwMTMxXFx1MDMwMVwiLFxuICAvLyAnxKsnOiAnXFx1MDEzMVxcdTAzMDQnLCAvLyBlbmFibGUgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgJ8OsJzogXCJcXHUwMTMxXFx1MDMwMFwiXG59O1xuLyoqXG4gKiBBIHN5bWJvbCBub2RlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIHN5bWJvbC4gSXQgZWl0aGVyIHJlbmRlcnNcbiAqIHRvIGEgc2luZ2xlIHRleHQgbm9kZSwgb3IgYSBzcGFuIHdpdGggYSBzaW5nbGUgdGV4dCBub2RlIGluIGl0LCBkZXBlbmRpbmcgb25cbiAqIHdoZXRoZXIgaXQgaGFzIENTUyBjbGFzc2VzLCBzdHlsZXMsIG9yIG5lZWRzIGl0YWxpYyBjb3JyZWN0aW9uLlxuICovXG5cbnZhciBkb21UcmVlX1N5bWJvbE5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTeW1ib2xOb2RlKHRleHQsIGhlaWdodCwgZGVwdGgsIGl0YWxpYywgc2tldywgd2lkdGgsIGNsYXNzZXMsIHN0eWxlKSB7XG4gICAgdGhpcy50ZXh0ID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy5pdGFsaWMgPSB2b2lkIDA7XG4gICAgdGhpcy5za2V3ID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5kZXB0aCA9IGRlcHRoIHx8IDA7XG4gICAgdGhpcy5pdGFsaWMgPSBpdGFsaWMgfHwgMDtcbiAgICB0aGlzLnNrZXcgPSBza2V3IHx8IDA7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7XG4gICAgdGhpcy5jbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICB0aGlzLnN0eWxlID0gc3R5bGUgfHwge307XG4gICAgdGhpcy5tYXhGb250U2l6ZSA9IDA7IC8vIE1hcmsgdGV4dCBmcm9tIG5vbi1MYXRpbiBzY3JpcHRzIHdpdGggc3BlY2lmaWMgY2xhc3NlcyBzbyB0aGF0IHdlXG4gICAgLy8gY2FuIHNwZWNpZnkgd2hpY2ggZm9udHMgdG8gdXNlLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVuZGVyIHRoZXNlXG4gICAgLy8gY2hhcmFjdGVycyB3aXRoIGEgc2VyaWYgZm9udCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBicm93c2VyIHdvdWxkXG4gICAgLy8gZWl0aGVyIGRlZmF1bHQgdG8gYSBzYW5zIHNlcmlmIG9yIHJlbmRlciBhIHBsYWNlaG9sZGVyIGNoYXJhY3Rlci5cbiAgICAvLyBXZSB1c2UgQ1NTIGNsYXNzIG5hbWVzIGxpa2UgY2prX2ZhbGxiYWNrLCBoYW5ndWxfZmFsbGJhY2sgYW5kXG4gICAgLy8gYnJhaG1pY19mYWxsYmFjay4gU2VlIC4vdW5pY29kZVNjcmlwdHMuanMgZm9yIHRoZSBzZXQgb2YgcG9zc2libGVcbiAgICAvLyBzY3JpcHQgbmFtZXNcblxuICAgIHZhciBzY3JpcHQgPSBzY3JpcHRGcm9tQ29kZXBvaW50KHRoaXMudGV4dC5jaGFyQ29kZUF0KDApKTtcblxuICAgIGlmIChzY3JpcHQpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5wdXNoKHNjcmlwdCArIFwiX2ZhbGxiYWNrXCIpO1xuICAgIH1cblxuICAgIGlmICgvW8Ouw6/DrcOsXS8udGVzdCh0aGlzLnRleHQpKSB7XG4gICAgICAvLyBhZGQgxKsgd2hlbiB3ZSBhZGQgRXh0ZW5kZWQgTGF0aW5cbiAgICAgIHRoaXMudGV4dCA9IGlDb21iaW5hdGlvbnNbdGhpcy50ZXh0XTtcbiAgICB9XG4gIH1cblxuICB2YXIgX3Byb3RvNCA9IFN5bWJvbE5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzQuaGFzQ2xhc3MgPSBmdW5jdGlvbiBoYXNDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdXRpbHMuY29udGFpbnModGhpcy5jbGFzc2VzLCBjbGFzc05hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGV4dCBub2RlIG9yIHNwYW4gZnJvbSBhIHN5bWJvbCBub2RlLiBOb3RlIHRoYXQgYSBzcGFuIGlzIG9ubHlcbiAgICogY3JlYXRlZCBpZiBpdCBpcyBuZWVkZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvNC50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnRleHQpO1xuICAgIHZhciBzcGFuID0gbnVsbDtcblxuICAgIGlmICh0aGlzLml0YWxpYyA+IDApIHtcbiAgICAgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgIHNwYW4uc3R5bGUubWFyZ2luUmlnaHQgPSB0aGlzLml0YWxpYyArIFwiZW1cIjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHNwYW4gPSBzcGFuIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgICBzcGFuID0gc3BhbiB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTsgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qgc2VlbSB0byB1bmRlcnN0YW5kIHNwYW4uc3R5bGUncyB0eXBlLlxuXG4gICAgICAgIHNwYW4uc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNwYW4pIHtcbiAgICAgIHNwYW4uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICByZXR1cm4gc3BhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBzeW1ib2wgbm9kZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG80LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgLy8gVE9ETyhhbHBlcnQpOiBNb3JlIGR1cGxpY2F0aW9uIHRoYW4gSSdkIGxpa2UgZnJvbVxuICAgIC8vIHNwYW4ucHJvdG90eXBlLnRvTWFya3VwIGFuZCBzeW1ib2xOb2RlLnByb3RvdHlwZS50b05vZGUuLi5cbiAgICB2YXIgbmVlZHNTcGFuID0gZmFsc2U7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHNwYW5cIjtcblxuICAgIGlmICh0aGlzLmNsYXNzZXMubGVuZ3RoKSB7XG4gICAgICBuZWVkc1NwYW4gPSB0cnVlO1xuICAgICAgbWFya3VwICs9IFwiIGNsYXNzPVxcXCJcIjtcbiAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSk7XG4gICAgICBtYXJrdXAgKz0gXCJcXFwiXCI7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5pdGFsaWMgPiAwKSB7XG4gICAgICBzdHlsZXMgKz0gXCJtYXJnaW4tcmlnaHQ6XCIgKyB0aGlzLml0YWxpYyArIFwiZW07XCI7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHN0eWxlcyArPSB1dGlscy5oeXBoZW5hdGUoc3R5bGUpICsgXCI6XCIgKyB0aGlzLnN0eWxlW3N0eWxlXSArIFwiO1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIG5lZWRzU3BhbiA9IHRydWU7XG4gICAgICBtYXJrdXAgKz0gXCIgc3R5bGU9XFxcIlwiICsgdXRpbHMuZXNjYXBlKHN0eWxlcykgKyBcIlxcXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgZXNjYXBlZCA9IHV0aWxzLmVzY2FwZSh0aGlzLnRleHQpO1xuXG4gICAgaWYgKG5lZWRzU3Bhbikge1xuICAgICAgbWFya3VwICs9IFwiPlwiO1xuICAgICAgbWFya3VwICs9IGVzY2FwZWQ7XG4gICAgICBtYXJrdXAgKz0gXCI8L3NwYW4+XCI7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN5bWJvbE5vZGU7XG59KCk7XG4vKipcbiAqIFNWRyBub2RlcyBhcmUgdXNlZCB0byByZW5kZXIgc3RyZXRjaHkgd2lkZSBlbGVtZW50cy5cbiAqL1xuXG52YXIgU3ZnTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN2Z05vZGUoY2hpbGRyZW4sIGF0dHJpYnV0ZXMpIHtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcbiAgfVxuXG4gIHZhciBfcHJvdG81ID0gU3ZnTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNS50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInN2Z1wiKTsgLy8gQXBwbHkgYXR0cmlidXRlc1xuXG4gICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0aGlzLmNoaWxkcmVuW2ldLnRvTm9kZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG81LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPHN2Z1wiOyAvLyBBcHBseSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj0nXCIgKyB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0gKyBcIidcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI+XCI7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiPC9zdmc+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gU3ZnTm9kZTtcbn0oKTtcbnZhciBkb21UcmVlX1BhdGhOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGF0aE5vZGUocGF0aE5hbWUsIGFsdGVybmF0ZSkge1xuICAgIHRoaXMucGF0aE5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5hbHRlcm5hdGUgPSB2b2lkIDA7XG4gICAgdGhpcy5wYXRoTmFtZSA9IHBhdGhOYW1lO1xuICAgIHRoaXMuYWx0ZXJuYXRlID0gYWx0ZXJuYXRlOyAvLyBVc2VkIG9ubHkgZm9yIFxcc3FydFxuICB9XG5cbiAgdmFyIF9wcm90bzYgPSBQYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNi50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcInBhdGhcIik7XG5cbiAgICBpZiAodGhpcy5hbHRlcm5hdGUpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCB0aGlzLmFsdGVybmF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZFwiLCBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG82LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuYWx0ZXJuYXRlKSB7XG4gICAgICByZXR1cm4gXCI8cGF0aCBkPSdcIiArIHRoaXMuYWx0ZXJuYXRlICsgXCInLz5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPHBhdGggZD0nXCIgKyBzdmdHZW9tZXRyeV9wYXRoW3RoaXMucGF0aE5hbWVdICsgXCInLz5cIjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFBhdGhOb2RlO1xufSgpO1xudmFyIExpbmVOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZU5vZGUoYXR0cmlidXRlcykge1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90bzcgPSBMaW5lTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIHN2Z05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCBcImxpbmVcIik7IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBfcHJvdG83LnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPGxpbmVcIjtcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIi8+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gTGluZU5vZGU7XG59KCk7XG5mdW5jdGlvbiBhc3NlcnRTeW1ib2xEb21Ob2RlKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzeW1ib2xOb2RlIGJ1dCBnb3QgXCIgKyBTdHJpbmcoZ3JvdXApICsgXCIuXCIpO1xuICB9XG59XG5mdW5jdGlvbiBhc3NlcnRTcGFuKGdyb3VwKSB7XG4gIGlmIChncm91cCBpbnN0YW5jZW9mIGRvbVRyZWVfU3Bhbikge1xuICAgIHJldHVybiBncm91cDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBzcGFuPEh0bWxEb21Ob2RlPiBidXQgZ290IFwiICsgU3RyaW5nKGdyb3VwKSArIFwiLlwiKTtcbiAgfVxufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zdWJtb2R1bGVzL2thdGV4LWZvbnRzL2ZvbnRNZXRyaWNzRGF0YS5qc1xuLy8gVGhpcyBmaWxlIGlzIEdFTkVSQVRFRCBieSBidWlsZE1ldHJpY3Muc2guIERPIE5PVCBNT0RJRlkuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb250TWV0cmljc0RhdGEgPSAoe1xuICBcIkFNUy1SZWd1bGFyXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY2XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjczXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjc0XCI6IFswLjE2NjY3LCAwLjY4ODg5LCAwLCAwLCAwLjVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuOTQ0NDVdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNzlcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODFcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDEuMF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTY1XCI6IFswLCAwLjY3NSwgMC4wMjUsIDAsIDAuNzVdLFxuICAgIFwiMTc0XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjk0NjY2XSxcbiAgICBcIjI0MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIyOTVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiNzEwXCI6IFswLCAwLjgyNSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuOSwgMCwgMCwgMi4zMzMzNF0sXG4gICAgXCI3NzBcIjogWzAsIDAuODI1LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjc3MVwiOiBbMCwgMC45LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjk4OVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDA4XCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjgyNDVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuMjc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdLFxuICAgIFwiODQ4N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NDk4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg1MDJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODUwM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4NTA0XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg1MTNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODU5MlwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk0XCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg2MDJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwM1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjA2XCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwOFwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTBcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODYxMVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4NjE5XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MjFcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjM4ODg5XSxcbiAgICBcIjg2MjJcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyNFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICBcIjg2MjVcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI4NjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYzMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzRcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODYzNVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NjM4XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2MzlcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiODY0MlwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC40MTY2N10sXG4gICAgXCI4NjQzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2NDRcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQ2XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0N1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NDhcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY0OVwiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTBcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODY1MVwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMF0sXG4gICAgXCI4NjUzXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTRcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1NVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjY2XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY2N1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NjlcIjogWy0wLjEzMzEzLCAwLjM3Nzg4LCAwLCAwLCAxLjBdLFxuICAgIFwiODY3MlwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODY3NFwiOiBbLTAuMDY0LCAwLjQzNywgMCwgMCwgMS4zMzRdLFxuICAgIFwiODcwNVwiOiBbMCwgMC44MjUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzA4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3MDlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40MjkxN10sXG4gICAgXCI4NzIyXCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjRcIjogWzAuMDgxOTgsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcyNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzMzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczN1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM4XCI6IFswLjAzNTE3LCAwLjUyMjM5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg3MzlcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMjIyMjJdLFxuICAgIFwiODc0MFwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzQxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjg3NDJcIjogWzAuMjUxNDIsIDAuNzQxMTEsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzU2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NTdcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2NVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3MFwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc3NFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc2XCI6IFstMC4wMTY4OCwgMC40ODMxMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc4XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODJcIjogWzAuMDYwNjIsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4M1wiOiBbMC4wNjA2MiwgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzg1XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODZcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4N1wiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzkwXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3OTFcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc5NlwiOiBbMC4wODE5OCwgMC45MTY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDdcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgwOFwiOiBbMC4yNTE0MiwgMC43NTcyNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTJcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNV0sXG4gICAgXCI4ODE0XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTVcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxNlwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODE3XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MThcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxOVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODIyXCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjNcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgyOFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODI5XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzBcIjogWzAuMjI5NTgsIDAuNzI5NTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzMVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODMyXCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzNcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDJcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0M1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ3XCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDhcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1OFwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU5XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjFcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2MlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2M1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NFwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NVwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODczXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg4NzRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiODg3NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODc3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NzhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODg3OVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4ODgyXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODNcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg4NFwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODg1XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODhcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5MFwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4ODkxXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4OTJcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODkwMVwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4OTAzXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDVcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwNlwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTA3XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDhcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwOVwiOiBbLTAuMDM1OTgsIDAuNDY0MDIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxMFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43NjA0Ml0sXG4gICAgXCI4OTExXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICBcIjg5MTJcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkxM1wiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE0XCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5MTVcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODkxNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OTE4XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTE5XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIwXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAxLjMzMzM0XSxcbiAgICBcIjg5MjFcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgIFwiODkyMlwiOiBbMC4zODU2OSwgMC44ODU2OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTIzXCI6IFswLjM4NTY5LCAwLjg4NTY5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjZcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkyN1wiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTI4XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjlcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzNFwiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM1XCI6IFswLjIzMjIyLCAwLjc0MTExLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzZcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzN1wiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM4XCI6IFswLjIwNTc2LCAwLjcwNTc2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzlcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk0MFwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTQxXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5OTRcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk5NVwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NDE2XCI6IFswLjE1NTU5LCAwLjY5MjI0LCAwLCAwLCAwLjkwMjIyXSxcbiAgICBcIjk0ODRcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NDg4XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTQ5MlwiOiBbMCwgMC4zNzc4OCwgMCwgMCwgMC41XSxcbiAgICBcIjk0OTZcIjogWzAsIDAuMzc3ODgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NTg1XCI6IFswLjE5NDQ0LCAwLjY4ODg5LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjk1ODZcIjogWzAuMTk0NDQsIDAuNzQxMTEsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTYzMlwiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTYzM1wiOiBbMCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY1MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjUxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NTRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY2MFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5NjYxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NjRcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTY3NFwiOiBbMC4xMTExMSwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5NzMzXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjEwMDAzXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwMDE2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzMxXCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwODQ2XCI6IFswLjE5NDQ0LCAwLjc1NTgzLCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjEwODc3XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODc4XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg1XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg2XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg3XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg4XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODg5XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkwXCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkxXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwODkyXCI6IFswLjQ4MjU2LCAwLjk4MjU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAxXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTAyXCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTMzXCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM0XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM1XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM2XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM3XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTM4XCI6IFswLjI2MTY3LCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTQ5XCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTUwXCI6IFswLjI1NTgzLCAwLjc1NTgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU1XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTU2XCI6IFswLjI4NDgxLCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUwXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjIyMjIyXSxcbiAgICBcIjU3MzUxXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjU3MzUyXCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzUzXCI6IFswLCAwLjQzMDU2LCAwLjA0MDI4LCAwLCAwLjY2NjY3XSxcbiAgICBcIjU3MzU2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU4XCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzU5XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYwXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzYxXCI6IFswLjQxOTUxLCAwLjkxOTUxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY2XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY3XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY4XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzY5XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcwXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3MzcxXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XVxuICB9LFxuICBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIjoge1xuICAgIFwiNDhcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xOTQ0NSwgMC43OTg0N10sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wMzA0MSwgMC4xMzg4OSwgMC42NTY4MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNTgzNCwgMC4xMzg4OSwgMC41MjY1M10sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wODMzNCwgMC43NzEzOV0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wODk0NCwgMC4xMTExMSwgMC41Mjc3OF0sXG4gICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMC4wOTkzMSwgMC4xMTExMSwgMC43MTg3NV0sXG4gICAgXCI3MVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wNTkzLCAwLjExMTExLCAwLjU5NDg3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjAwOTY1LCAwLjExMTExLCAwLjg0NDUyXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3MzgyLCAwLCAwLjU0NDUyXSxcbiAgICBcIjc0XCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjE4NDcyLCAwLjE2NjY3LCAwLjY3Nzc4XSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjAxNDQ1LCAwLjA1NTU2LCAwLjc2MTk1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAwLjY4OTcyXSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAxLjIwMDldLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTQ3MzYsIDAuMDgzMzQsIDAuODIwNDldLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMTExMTEsIDAuNzk2MTFdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuNjk1NTZdLFxuICAgIFwiODFcIjogWzAuMDk3MjIsIDAuNjgzMzMsIDAsIDAuMTExMTEsIDAuODE2NjddLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuODQ3NV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4wNzUsIDAuMTM4ODksIDAuNjA1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMjU0MTcsIDAsIDAuNTQ0NjRdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMDk5MzEsIDAuMDgzMzQsIDAuNjI1ODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAsIDAuNjEyNzhdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMDgyMjIsIDAuMDgzMzQsIDAuOTg3NzhdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMTQ2NDMsIDAuMTM4ODksIDAuNzEzM10sXG4gICAgXCI4OVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC42NjgzNF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzk0NCwgMC4xMzg4OSwgMC43MjQ3M11cbiAgfSxcbiAgXCJGcmFrdHVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjk1NzRdLFxuICAgIFwiMzRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiMzhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzM3ODZdLFxuICAgIFwiMzlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjEyMDFdLFxuICAgIFwiNDBcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDFcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuMzg4NjVdLFxuICAgIFwiNDJcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDNcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDRcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDVcIjogWzAuMDgzMTksIDAuNTgyODMsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNDZcIjogWzAsIDAuMTA4MDMsIDAsIDAsIDAuMjc3NjRdLFxuICAgIFwiNDdcIjogWzAuMjQ5ODIsIDAuNzQ5NDcsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDhcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNDlcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTJcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTVcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNTdcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAxODFdLFxuICAgIFwiNThcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNTlcIjogWzAuMTI2MDQsIDAuNDc1MzQsIDAsIDAsIDAuMjE2MDZdLFxuICAgIFwiNjFcIjogWy0wLjEzMDk5LCAwLjM2ODY2LCAwLCAwLCAwLjc1NjIzXSxcbiAgICBcIjYzXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjM2MjQ1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjcxNzZdLFxuICAgIFwiNjZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODgzOTddLFxuICAgIFwiNjdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjEyNTRdLFxuICAgIFwiNjhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuODMxNThdLFxuICAgIFwiNjlcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNjYyNzhdLFxuICAgIFwiNzBcIjogWzAuMTI2MDQsIDAuNjkxNDEsIDAsIDAsIDAuNjExMTldLFxuICAgIFwiNzFcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzg1MzldLFxuICAgIFwiNzJcIjogWzAuMDYzMDIsIDAuNjkxNDEsIDAsIDAsIDAuNzIwM10sXG4gICAgXCI3M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41NTQ0OF0sXG4gICAgXCI3NFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC41NTIzMV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg0NV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NjYwMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDk1M10sXG4gICAgXCI3OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzIxMl0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44Mjc1M10sXG4gICAgXCI4MVwiOiBbMC4wMzc4MSwgMC42OTE0MSwgMCwgMCwgMC44MjY5OV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MjgwN10sXG4gICAgXCI4M1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44Mjg2MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42Njg5OV0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NDU3Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzEzMV0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMS4wNDYwMl0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43MTkyMl0sXG4gICAgXCI4OVwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC44MzI5M10sXG4gICAgXCI5MFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC42MDIwMV0sXG4gICAgXCI5MVwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5M1wiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC40OTk2NV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MTMxNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC4zODk0Nl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuNDk4NTddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQwMDUzXSxcbiAgICBcIjEwMlwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC4zMjYyNl0sXG4gICAgXCIxMDNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAzN10sXG4gICAgXCIxMDRcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuNTIxMjZdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3ODk5XSxcbiAgICBcIjEwNlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yODA4OF0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMzg5NDZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI3OTUzXSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC43NjY3Nl0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTI2NjZdLFxuICAgIFwiMTExXCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQ4ODg1XSxcbiAgICBcIjExMlwiOiBbMC4xODkwNiwgMC41MjM5NiwgMCwgMCwgMC41MDA0Nl0sXG4gICAgXCIxMTNcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDg5MTJdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjM4OTE5XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC40NDI2Nl0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMzMzMDFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUxNzJdLFxuICAgIFwiMTE4XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjUxMThdLFxuICAgIFwiMTE5XCI6IFswLCAwLjUyMzk2LCAwLCAwLCAwLjc3MzUxXSxcbiAgICBcIjEyMFwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC4zODg2NV0sXG4gICAgXCIxMjFcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNDk4ODRdLFxuICAgIFwiMTIyXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjM5MDU0XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjE0NzFdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTQ3MV0sXG4gICAgXCI1ODExMlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTc0OV0sXG4gICAgXCI1ODExM1wiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTgzXSxcbiAgICBcIjU4MTE0XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMzMzI4XSxcbiAgICBcIjU4MTE1XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMyOTIzXSxcbiAgICBcIjU4MTE2XCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjUwMzQzXSxcbiAgICBcIjU4MTE3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjMzMzAxXSxcbiAgICBcIjU4MTE4XCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjMzNDA5XSxcbiAgICBcIjU4MTE5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMDczXVxuICB9LFxuICBcIk1haW4tQm9sZFwiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjQzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjQ0XCI6IFswLjE5NDQ0LCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjM4MzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjE1NTU2LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNjBcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MzA1XSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgxODA1XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjY4XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg4MTk0XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc1NTU1XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjcyMzYxXSxcbiAgICBcIjcxXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjkwNDE2XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjldLFxuICAgIFwiNzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNDM2MTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNTk0NDRdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTAxMzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDkxNjZdLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43ODYxMV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44NjM4OF0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44NjI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjhdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODg0NzJdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDAuODY5NDRdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMDE1OTcsIDAsIDEuMTg4ODhdLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMDI4NzUsIDAsIDAuODY5NDRdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiOTJcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTU5MDJdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MjcwOF0sXG4gICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMTA5MDMsIDAsIDAuMzUxMzldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjU3NV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYwNjk0XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NzM2MV0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDUzNjFdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNTk3LCAwLCAwLjgzMDU1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MDY5NF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI0XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiMTc3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCIxOThcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMDQxNjZdLFxuICAgIFwiMjE1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyMjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjI0N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTQxNjcsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDEuMTY5NDRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4zNTEzOV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxMVwiOiBbMCwgMC42MzE5NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NjExLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg2OTQ0XSxcbiAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjkxNjZdLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA1NTVdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41NzVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDI3OF0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYwMjc4XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjM0NDQ0XSxcbiAgICBcIjg0MDdcIjogWzAsIDAuNzI0NDQsIDAuMTU0ODYsIDAsIDAuNTc1XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiODQ2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NDY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MzYxXSxcbiAgICBcIjg0NzJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzQwMjddLFxuICAgIFwiODQ3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4NTAxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg1OTJcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTRcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OTZcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg1OTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg1OThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5OVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2MDFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzNlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYzN1wiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY0MVwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI4NjU4XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjU5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg2NjBcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2NjFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODcwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4NzA2XCI6IFswLCAwLjY5NDQ0LCAwLjA2Mzg5LCAwLCAwLjYyODQ3XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcxMVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI4NzEyXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3MTVcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODcyMlwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzIzXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzI4XCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcyOVwiOiBbLTAuMDI2MzksIDAuNDczNjEsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MzBcIjogWzAuMTgsIDAuODIsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiODczM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg3MzZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczOVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTI3NzgsIDAsIDAuNTY4NzVdLFxuICAgIFwiODc2NFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4NzcxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3NzZcIjogWzAuMDI0NDQsIDAuNTI0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc4MVwiOiBbMC4wMDIyMiwgMC41MDIyMiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODAxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MDRcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgwNVwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODEwXCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg4MTFcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODgyNlwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODI3XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzRcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgzNVwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODM4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzlcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg0NlwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODQ5XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTBcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1MVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4ODUyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg4NTNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1NFwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODU1XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTZcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1N1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg4NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODg2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg5MDBcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4OTAxXCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4OTAyXCI6IFstMC4wMjc3OCwgMC40NzIyMiwgMCwgMCwgMC41NzVdLFxuICAgIFwiODk2OFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTY5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjg5NzBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODk3MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTk0XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4OTk1XCI6IFstMC4xMzg4OSwgMC4zNjExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI5NjUxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NTdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NjYxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjAyMjIyXSxcbiAgICBcIjk2NjdcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjk4MjRcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgyNVwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5ODI2XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjk4MjdcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgzN1wiOiBbMCwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCI5ODM4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjk4MzlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTAyMTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTA4MTVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYWluLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAuMTE0MTcsIDAsIDAuMzg2MTFdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAuMDc5MzksIDAsIDAuNjIwNTVdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDY4MzMsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMTI4NjEsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDg1MjgsIDAsIDAuODg1NTVdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDMzMDYsIDAsIDAuNDczMzNdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTQzMzMsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDNcIjogWzAuMTAzMzMsIDAuNjAzMzMsIDAuMDMzMDYsIDAsIDAuODg1NTVdLFxuICAgIFwiNDRcIjogWzAuMTk0NDQsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDI2MTEsIDAsIDAuNDE0NDRdLFxuICAgIFwiNDZcIjogWzAsIDAuMTQ3MjIsIDAsIDAsIDAuMzU1NTVdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTU4MDYsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDhcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTBcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTFcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTJcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTNcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTVcIjogWzAuMTk0NDQsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNTdcIjogWzAsIDAuNjQ0NDQsIDAuMTMxNjcsIDAsIDAuNTkxMTFdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDY2OTUsIDAsIDAuMzU1NTVdLFxuICAgIFwiNjFcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLjA2ODMzLCAwLCAwLjg4NTU1XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA4LCAwLCAwLjg4NTU1XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2NTU1XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4NjExLCAwLjA5OTIsIDAsIDAuODE2NjZdLFxuICAgIFwiNjdcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODI2NjZdLFxuICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAuMDkwNjIsIDAsIDAuODc1NTVdLFxuICAgIFwiNjlcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDAuNzU2NjZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNzI3MjJdLFxuICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAuMDczNDcsIDAsIDAuODk1MjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4xNTY4MSwgMCwgMC40NzE2Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xNDUsIDAsIDAuNjEwNTVdLFxuICAgIFwiNzVcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuODk0OTldLFxuICAgIFwiNzZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjk3NzddLFxuICAgIFwiNzdcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDEuMDcyNzddLFxuICAgIFwiNzhcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODk2MV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44NTQ5OV0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjc4NzIxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg1NDk5XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4NjExLCAwLjAyNTU5LCAwLCAwLjg1OTQ0XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLjExMjY0LCAwLCAwLjY0OTk5XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLjEyOTAzLCAwLCAwLjc5NjFdLFxuICAgIFwiODVcIjogWzAsIDAuNjg2MTEsIDAuMTcyMDgsIDAsIDAuODgwODNdLFxuICAgIFwiODZcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDAuODY1NTVdLFxuICAgIFwiODdcIjogWzAsIDAuNjg2MTEsIDAuMTg2MjUsIDAsIDEuMTU5OTldLFxuICAgIFwiODhcIjogWzAsIDAuNjg2MTEsIDAuMTU2ODEsIDAsIDAuODY1NTVdLFxuICAgIFwiODlcIjogWzAsIDAuNjg2MTEsIDAuMTk4MDMsIDAsIDAuODY1NTVdLFxuICAgIFwiOTBcIjogWzAsIDAuNjg2MTEsIDAuMTQyMDgsIDAsIDAuNzA4ODhdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAuMTg3NSwgMCwgMC4zNTYxMV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wOTk3MiwgMCwgMC4zNTYxMV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMzQ0NCwgMC4wOTgxMSwgMCwgMC41OTExMV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wNzg2MSwgMCwgMC41MzIyMl0sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wNTIyMiwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMTA4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMjE3NzgsIDAsIDAuNF0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA1LCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQyNiwgMCwgMC41OTExMV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjkzMjYsIDAuMTEzODcsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjE2NzIsIDAsIDAuMzU1NTVdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjExMTExLCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4xMDg2MSwgMCwgMC4yOTY2Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuOTQ0NDRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjY0OTk5XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMC4wNzg2MSwgMCwgMC41OTExMV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDc4NjEsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwNSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNTAxNjddLFxuICAgIFwiMTE1XCI6IFswLCAwLjQ0NDQ0LCAwLjA4MTY3LCAwLCAwLjQ4Njk0XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MzQ5MiwgMC4wOTYzOSwgMCwgMC4zODVdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjYyMDU1XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MzIyMl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTExMTEsIDAsIDAuNzY3NzddLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjEyNTgzLCAwLCAwLjU2MDU1XSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTYxNjZdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLjEzODg5LCAwLCAwLjQ5MDU1XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY4NTNdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY5NDQ0LCAwLjExNDczLCAwLCAwLjU5MTExXSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45NDg4OF0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNTMyMjJdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4NjExLCAwLjExNDMxLCAwLCAxLjAyMjc3XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzQ3MiwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCIyMjNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDk3MzYsIDAsIDAuNjY1XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40NDQ0NCwgMC4wODUsIDAsIDAuODI2NjZdLFxuICAgIFwiMjQ4XCI6IFswLjA5NzIyLCAwLjU0MTY3LCAwLjA5NDU4LCAwLCAwLjU5MTExXSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC4zNTU1NV0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDEuMTQwNTRdLFxuICAgIFwiMzM5XCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDQ2MTEsIDAsIDAuMzg1XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjcwOSwgMCwgMC41OTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAuMDgyNzEsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU5NDQ0LCAwLjEwNDQ0LCAwLCAwLjU5MTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wODUyOCwgMCwgMC41OTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjU5MTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTQ4ODhdLFxuICAgIFwiNzMyXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMTQ3MiwgMCwgMC41OTExMV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNjk3NzddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk0NDQ0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44ODU1NV0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA2NjZdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLjE1MDkyLCAwLCAwLjc2Nzc3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44OTYxXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMC44MjY2Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjg2MTEsIDAuMTA3NzgsIDAsIDAuODg1NTVdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4NjExLCAwLjA1NjMyLCAwLCAwLjgyNjY2XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODYxMSwgMC4xMDc3OCwgMCwgMC44ODU1NV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjg2MTEsIDAuMDk5MiwgMCwgMC44MjY2Nl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjA5ODExLCAwLCAwLjU5MTExXSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDEuMTgyMjFdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY3NzIsIDAsIDAuNjIwNTVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNzkzOSwgMCwgMC42MjA1NV1cbiAgfSxcbiAgXCJNYWluLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNjYxNiwgMCwgMC44MTc3N10sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4xMzYzOSwgMCwgMC44MTc3N10sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMzY5NCwgMCwgMC40MDg4OV0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xNDkxNywgMCwgMC41MTExMV0sXG4gICAgXCI0M1wiOiBbMC4wNTY2NywgMC41NjE2NywgMC4wMzY5NCwgMCwgMC43NjY2Nl0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMC4wMjgyNiwgMCwgMC4zNTc3OF0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4zMDY2N10sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xNjE5NCwgMCwgMC41MTExMV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMC4xMzU1NiwgMCwgMC41MTExMV0sXG4gICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMC4wNTgyLCAwLCAwLjMwNjY3XSxcbiAgICBcIjU5XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA1ODIsIDAsIDAuMzA2NjddLFxuICAgIFwiNjFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLjA2NjE2LCAwLCAwLjc2NjY2XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLjEyMjUsIDAsIDAuNTExMTFdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDk1OTcsIDAsIDAuNzY2NjZdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzQzMzNdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzAzODldLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAuMTQ1MjgsIDAsIDAuNzE1NTVdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAuMDk0MDMsIDAsIDAuNzU1XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjY3ODMzXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjY1Mjc3XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLjA4NzIyLCAwLCAwLjc3MzYxXSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjE1ODA2LCAwLCAwLjM4NTU1XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjE0MDI4LCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC43Njg4OF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjcyMl0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC44OTY2Nl0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI3OVwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODMzMywgMC4xMDI1NywgMCwgMC42NzgzM10sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODMzMywgMC4wMzg2OCwgMCwgMC43Mjk0NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODMzMywgMC4xMTk3MiwgMCwgMC41NjIyMl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC43MTU1NV0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xNjM4OSwgMCwgMC43NDMzM10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC43NDMzM10sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xODM2MSwgMCwgMC45OTg4OF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4xNTgwNiwgMCwgMC43NDMzM10sXG4gICAgXCI4OVwiOiBbMCwgMC42ODMzMywgMC4xOTM4MywgMCwgMC43NDMzM10sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC42MTMzM10sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xODc1LCAwLCAwLjMwNjY3XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjEwNTI4LCAwLCAwLjMwNjY3XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA2NjQ2LCAwLCAwLjUxMTExXSxcbiAgICBcIjk1XCI6IFswLjMxLCAwLjEyMDU2LCAwLjA5MjA4LCAwLCAwLjUxMTExXSxcbiAgICBcIjk3XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjUxMTExXSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjA2MzEyLCAwLCAwLjQ2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLjA1NjUzLCAwLCAwLjQ2XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4xMDMzMywgMCwgMC41MTExMV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNDZdLFxuICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjIxMTk0LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY1NTM2LCAwLjEwMTksIDAsIDAuMzA2NjddLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1NTM2LCAwLjE0NDY3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4xMDc2NCwgMCwgMC40Nl0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMTAzMzMsIDAsIDAuMjU1NTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjgxNzc3XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMC4wNzY3MSwgMCwgMC41NjIyMl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAuMDYzMTIsIDAsIDAuNTExMTFdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA2MzEyLCAwLCAwLjUxMTExXSxcbiAgICBcIjExM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wODg0NywgMCwgMC40Nl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDMwNTYsIDAuMTA3NjQsIDAsIDAuNDIxNjZdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLjA4MjA4LCAwLCAwLjQwODg5XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MTUwOCwgMC4wOTQ4NiwgMCwgMC4zMzIyMl0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuNTM2NjZdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLjEwNzY0LCAwLCAwLjQ2XSxcbiAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMC4xMDc2NCwgMCwgMC42NjQ0NF0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDMwNTYsIDAuMTIwNDIsIDAsIDAuNDYzODldLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ4NTU1XSxcbiAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMC4xMjI5MiwgMCwgMC40MDg4OV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAuMTE1ODUsIDAsIDAuNTExMTFdLFxuICAgIFwiMTYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc2OTA5XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMC4xMDQ3NCwgMCwgMC41MTExMV0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiMTg0XCI6IFswLjE3MDE0LCAwLCAwLCAwLCAwLjQ2XSxcbiAgICBcIjE5OFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC44ODI3N10sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAuMDk0MDMsIDAsIDAuNzY2NjZdLFxuICAgIFwiMjIzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjEwNTE0LCAwLCAwLjUzNjY2XSxcbiAgICBcIjIzMFwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC43MTU1NV0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAuMDkxOTQsIDAsIDAuNTExMTFdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjMyMjQ2XSxcbiAgICBcIjMzOFwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC45ODQ5OV0sXG4gICAgXCIzMzlcIjogWzAsIDAuNDMwNTYsIDAuMDc1MTQsIDAsIDAuNzE1NTVdLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjM4NDAzXSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNjY0NiwgMCwgMC41MTExMV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjI4NDcsIDAuMDgyOTUsIDAsIDAuNTExMTFdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2MTY3LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMC4wOTY5NCwgMCwgMC41MTExMV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODA2LCAwLCAwLjUxMTExXSxcbiAgICBcIjcyOVwiOiBbMCwgMC42Njc4NiwgMC4xMTc1MiwgMCwgMC4zMDY2N10sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMxMjldLFxuICAgIFwiNzMyXCI6IFswLCAwLjY2Nzg2LCAwLjExNTg1LCAwLCAwLjUxMTExXSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4xMjI1LCAwLCAwLjUxMTExXSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzMwNSwgMCwgMC42MjcyMl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODE3NzddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjA5NDAzLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42OTIyMl0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMTUyOTQsIDAsIDAuNjY0NDRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4xMjAyOCwgMCwgMC43MTU1NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTExMTEsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLjA1OTg2LCAwLCAwLjcxNTU1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMTExMSwgMCwgMC43NjY2Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMTAyNTcsIDAsIDAuNzE1NTVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40MzA1NiwgMC4wOTIwOCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQzMDU2LCAwLjA5MjA4LCAwLCAxLjAyMjIyXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAuMTI0MTcsIDAsIDAuMzA2NjddLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLjE2ODUsIDAsIDAuNTE0NDRdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMC4wNjk2MSwgMCwgMC41MTQ0NF0sXG4gICAgXCI4NDYzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU0MDI4XVxuICB9LFxuICBcIk1haW4tUmVndWxhclwiOiB7XG4gICAgXCIzMlwiOiBbMCwgMCwgMCwgMCwgMC4yNV0sXG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0NVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDU1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjBcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI2MlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNjZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzA4MzRdLFxuICAgIFwiNjdcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzYzODldLFxuICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjUyNzhdLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzg0NzJdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuMzYxMTFdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNTEzODldLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY4MDU2XSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAwLjc1XSxcbiAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjAxMzg5LCAwLCAxLjAyNzc4XSxcbiAgICBcIjg4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjAyNSwgMCwgMC43NV0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI5MlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzEsIDAuMTIwNTYsIDAuMDI3NzgsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA3Nzc4LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY2Nzg2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zOTE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMzk0NDVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjcyMjIyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNTI3NzhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEyM1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjEyNFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIxMjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzE3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuMjVdLFxuICAgIFwiMTY3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42Njc4NiwgMCwgMCwgMC41XSxcbiAgICBcIjE3MlwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzVdLFxuICAgIFwiMTc3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjE4MlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjkwMjc4XSxcbiAgICBcIjIxNVwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyMTZcIjogWzAuMDQ4NjEsIDAuNzMxOTQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMjIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjI0N1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTI3NzgsIDAsIDAsIDAuNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiMzM4XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAxLjAxMzg5XSxcbiAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYyODQ3LCAwLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjU2Nzc4LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY2Nzg2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NV0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjI1XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMCwgMS4wXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjRcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODIyNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4MjMwXCI6IFswLCAwLjEyLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4MjQyXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjI3NV0sXG4gICAgXCI4NDA3XCI6IFswLCAwLjcxNDQ0LCAwLjE1MzgyLCAwLCAwLjVdLFxuICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg0NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTExMTEsIDAuNDE2NjddLFxuICAgIFwiODQ3MlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4xMTExMSwgMC42MzY0Nl0sXG4gICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg1MDFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODU5MlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTkzXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5NlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NTk3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODU5OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjAwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiODYwMVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTRcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MTdcIjogWzAuMDExLCAwLjUxMSwgMCwgMCwgMS4xMjZdLFxuICAgIFwiODYxOFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjEyNl0sXG4gICAgXCI4NjM2XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2MzdcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQxXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTJcIjogWzAuMDExLCAwLjY3MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTZcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NjU4XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODY2MFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjYxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg3MDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwNlwiOiBbMCwgMC42OTQ0NCwgMC4wNTU1NiwgMC4wODMzNCwgMC41MzA5XSxcbiAgICBcIjg3MDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwOVwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MTFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODcxMlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcxNVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODcyMlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzIzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MjVcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODcyN1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI4XCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjlcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODczMFwiOiBbMC4yLCAwLjgsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODczM1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzM0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg3NDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzQzXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDRcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc0NVwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTExMTEsIDAsIDAuNDE2NjddLFxuICAgIFwiODc2NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4NzcxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzczXCI6IFstMC4wMjIsIDAuNTg5LCAwLCAwLCAxLjBdLFxuICAgIFwiODc3NlwiOiBbLTAuMDE2ODgsIDAuNDgzMTIsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4MVwiOiBbLTAuMDM2MjUsIDAuNDYzNzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4NFwiOiBbLTAuMTMzLCAwLjY3LCAwLCAwLCAwLjc3OF0sXG4gICAgXCI4ODAxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA0XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDVcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxMFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDEuMF0sXG4gICAgXCI4ODExXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg4MjZcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjdcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzRcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzVcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzhcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzOVwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NDlcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1MFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg4NTJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODg1M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU0XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTVcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1NlwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODg2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg3MlwiOiBbMC4yNDksIDAuNzUsIDAsIDAsIDAuODY3XSxcbiAgICBcIjg5MDBcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODkwMVwiOiBbLTAuMDU1NTUsIDAuNDQ0NDUsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODkwMlwiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI4OTA0XCI6IFswLjAwNSwgMC41MDUsIDAsIDAsIDAuOV0sXG4gICAgXCI4OTQyXCI6IFswLjAzLCAwLjksIDAsIDAsIDAuMjc4XSxcbiAgICBcIjg5NDNcIjogWy0wLjE5LCAwLjMxLCAwLCAwLCAxLjE3Ml0sXG4gICAgXCI4OTQ1XCI6IFstMC4xLCAwLjgyLCAwLCAwLCAxLjI4Ml0sXG4gICAgXCI4OTY4XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5NjlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODk3MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4OTcxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5OTRcIjogWy0wLjE0MjM2LCAwLjM1NzY0LCAwLCAwLCAxLjBdLFxuICAgIFwiODk5NVwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgXCI5MTM2XCI6IFswLjI0NCwgMC43NDQsIDAsIDAsIDAuNDEyXSxcbiAgICBcIjkxMzdcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMC40MTJdLFxuICAgIFwiOTY1MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5NjU3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjk2NjFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTY2N1wiOiBbLTAuMDM0NzIsIDAuNDY1MjgsIDAsIDAsIDAuNV0sXG4gICAgXCI5NzExXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiOTgyNFwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODI1XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTgyN1wiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODM3XCI6IFswLCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiOTgzOVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCIxMDIyMlwiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyM1wiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCIxMDIyOVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzMFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzMVwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjg1OV0sXG4gICAgXCIxMDIzMlwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYwOV0sXG4gICAgXCIxMDIzM1wiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDIzNFwiOiBbMC4wMjQsIDAuNTI1LCAwLCAwLCAxLjg1OF0sXG4gICAgXCIxMDIzNlwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjYzOF0sXG4gICAgXCIxMDgxNVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCIxMDkyN1wiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIxMDkyOFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI1NzM3NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMF1cbiAgfSxcbiAgXCJNYXRoLUJvbGRJdGFsaWNcIjoge1xuICAgIFwiNjVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAuMDQ4MzUsIDAsIDAuODY2NF0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC44MTY5NF0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC45MzgxMl0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODYxMSwgMC4wNTQ1MSwgMCwgMC44MTAwN10sXG4gICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42ODg4OV0sXG4gICAgXCI3MVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44ODY3M10sXG4gICAgXCI3MlwiOiBbMCwgMC42ODYxMSwgMC4wODIyOSwgMCwgMC45ODIyOV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC41MTExMV0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMC4xMDA2OSwgMCwgMC42MzEyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC45NzExOF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43NTU1NV0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMS4xNDIwMV0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC45NTAzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC44MzY2Nl0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC43MjMwOV0sXG4gICAgXCI4MVwiOiBbMC4xOTQ0NCwgMC42ODYxMSwgMCwgMCwgMC44Njg2MV0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODYxMSwgMC4wMDQyMSwgMCwgMC44NzIzNV0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODYxMSwgMC4wNTM4MiwgMCwgMC42OTI3MV0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42MzY2M10sXG4gICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xMTQyNCwgMCwgMC44MDAyN10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42Nzc3OF0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMS4wOTMwNV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4wNzc3OCwgMCwgMC45NDcyMl0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODYxMSwgMC4yNTU1NSwgMCwgMC42NzQ1OF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMC4wNjk3OSwgMCwgMC43NzI1N10sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42MzI4N10sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MjA4M10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTM0Ml0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjA5NzJdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU1MzYxXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMTA0MiwgMCwgMC41NjgwNl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNTQ0OV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5MzI2LCAwLCAwLCAwLjQwNDhdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5MzI2LCAwLjA2MjIsIDAsIDAuNDcwODNdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjAxODUyLCAwLCAwLjYwMzddLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAwODgsIDAsIDAuMzQ4MTVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAxLjAzMjRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjcxMjk2XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjAwOTJdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjU0MjEzXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMzE5NCwgMCwgMC41Mjg3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MzEyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjM0OTIsIDAsIDAsIDAuNDE1MjhdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY4MTAyXSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NjY2Nl0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDAuODMxNDhdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjY1OTAzXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41OTAyOF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDQyMTMsIDAsIDAuNTU1MDldLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjY1Njk0XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI5MjBcIjogWzAsIDAuNjg2MTEsIDAuMDMxOTQsIDAsIDAuODY3MjJdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgwNTU1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODYxMSwgMC4wNzQ1OCwgMCwgMC44NDEyNV0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjg2MTEsIDAuMDgyMjksIDAsIDAuOTgyMjldLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4NjExLCAwLjA1NDUxLCAwLCAwLjg4NTA3XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMC4xNTk3MiwgMCwgMC42NzA4M10sXG4gICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4NjExLCAwLjExNjUzLCAwLCAwLjcxNDAyXSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44Nzg5XSxcbiAgICBcIjk0NVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC43NjA2NF0sXG4gICAgXCI5NDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM0MDMsIDAsIDAuNjU5NzJdLFxuICAgIFwiOTQ3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA2Mzg5LCAwLCAwLjU5MDAzXSxcbiAgICBcIjk0OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzgxOSwgMCwgMC41MjIyMl0sXG4gICAgXCI5NDlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTI4ODJdLFxuICAgIFwiOTUwXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2MjE1LCAwLCAwLjUwODMzXSxcbiAgICBcIjk1MVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42XSxcbiAgICBcIjk1MlwiOiBbMCwgMC42OTQ0NCwgMC4wMzE5NCwgMCwgMC41NjE4XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40MTIwNF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjY3NTldLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MDgzXSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MDc4N10sXG4gICAgXCI5NTdcIjogWzAsIDAuNDQ0NDQsIDAuMDY4OTgsIDAsIDAuNTc2ODVdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzMDIxLCAwLCAwLjUwODMzXSxcbiAgICBcIjk1OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41ODQ3Ml0sXG4gICAgXCI5NjBcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNjgyNDFdLFxuICAgIFwiOTYxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQ0NDQ0LCAwLjA3OTE3LCAwLCAwLjQyMzYxXSxcbiAgICBcIjk2M1wiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42ODU4OF0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDQ0NDQsIDAuMTM0NzIsIDAsIDAuNTIwODNdLFxuICAgIFwiOTY1XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjYzMDU1XSxcbiAgICBcIjk2NlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43NDcyMl0sXG4gICAgXCI5NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNzE4MDVdLFxuICAgIFwiOTY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjAzNzA0LCAwLCAwLjc1ODMzXSxcbiAgICBcIjk2OVwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC43MTc4Ml0sXG4gICAgXCI5NzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjkxNTVdLFxuICAgIFwiOTgxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcxMjVdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjk3NV0sXG4gICAgXCIxMDA5XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjYxMThdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40ODMzM11cbiAgfSxcbiAgXCJNYXRoLUl0YWxpY1wiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIk1hdGgtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMC4xMzg4OSwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NTg1MV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC43MTQ3Ml0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4wNTU1NiwgMC44Mjc5Ml0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43MzgyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MzA2XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc4NjI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjczXCI6IFswLCAwLjY4MzMzLCAwLjA3ODQ3LCAwLjExMTExLCAwLjQzOTU4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4MzMzLCAwLjA5NjE4LCAwLjE2NjY3LCAwLjU1NDUxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA1NTU2LCAwLjg0OTMxXSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLjAyNzc4LCAwLjY4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjk3MDE0XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjEwOTAzLCAwLjA4MzM0LCAwLjgwMzQ3XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjY0MjAxXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjc5MDU2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAwNzczLCAwLjA4MzM0LCAwLjc1OTI5XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjYxMzJdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNTg0MzhdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDI3NzgsIDAuNjgyNzhdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgzMzNdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAsIDAuOTQ0NDVdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMDgzMzQsIDAuODI4NDddLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMjIyMjIsIDAsIDAuNTgwNTZdLFxuICAgIFwiOTBcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDgzMzQsIDAuNjgyNjRdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI4NTldLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDI5MTddLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDMyNzZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLjE2NjY3LCAwLjUyMDQ5XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40NjU2M10sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA3NjQsIDAuMTY2NjcsIDAuNDg5NTldLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjAyNzc4LCAwLjQ3Njk3XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU5NTIsIDAsIDAsIDAuMzQ0NTFdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY1OTUyLCAwLjA1NzI0LCAwLCAwLjQxMTgxXSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wMzE0OCwgMCwgMC41MjA2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4wMTk2OCwgMC4wODMzNCwgMC4yOTgzOF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODc4MDFdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjYwMDIzXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40ODQ3Ml0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTAzMTNdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAzNTg4LCAwLjA4MzM0LCAwLjQ0NjQxXSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4wMjc3OCwgMC4wNTU1NiwgMC40NTExNl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDY4NzVdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLCAwLjA4MzM0LCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzI0Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDg0NzJdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjAyNjkxLCAwLjA4MzM0LCAwLjcxNTkyXSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC41NzE1M10sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDkwMjhdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjA0Mzk4LCAwLjA1NTU2LCAwLjQ2NTA1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC42MTUyOF0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTY2NjcsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc2Mjc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC42OTQ0NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjgzMzMsIDAuMDc1NjksIDAuMDgzMzQsIDAuNzQyMzZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4MzMzLCAwLjA4MTI1LCAwLjA1NTU2LCAwLjgzMTI1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42ODMzMywgMC4wNTc2NCwgMC4wODMzNCwgMC43Nzk4Nl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDU1NTYsIDAuNTgzMzNdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY4MzMzLCAwLCAwLjA4MzM0LCAwLjY2NjY3XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42ODMzMywgMC4xMSwgMC4wNTU1NiwgMC42MTIyMl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjgzMzMsIDAuMDUwMTcsIDAuMDgzMzQsIDAuNzcyNF0sXG4gICAgXCI5NDVcIjogWzAsIDAuNDMwNTYsIDAuMDAzNywgMC4wMjc3OCwgMC42Mzk3XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNTI3OCwgMC4wODMzNCwgMC41NjU2M10sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU1NTYsIDAsIDAuNTE3NzNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzNzg1LCAwLjA1NTU2LCAwLjQ0NDQ0XSxcbiAgICBcIjk0OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC40NjYzMl0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDczNzgsIDAuMDgzMzQsIDAuNDM3NV0sXG4gICAgXCI5NTFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDU1NTYsIDAuNDk2NTNdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAyNzc4LCAwLjA4MzM0LCAwLjQ2OTQ0XSxcbiAgICBcIjk1M1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC4zNTM5NF0sXG4gICAgXCI5NTRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTc2MTZdLFxuICAgIFwiOTU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjk1NlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wMjc3OCwgMC42MDI1NV0sXG4gICAgXCI5NTdcIjogWzAsIDAuNDMwNTYsIDAuMDYzNjYsIDAuMDI3NzgsIDAuNDkzOThdLFxuICAgIFwiOTU4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA0NjAxLCAwLjExMTExLCAwLjQzNzVdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzAwM10sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiOTYyXCI6IFswLjA5NzIyLCAwLjQzMDU2LCAwLjA3OTg2LCAwLjA4MzM0LCAwLjM2Mjg1XSxcbiAgICBcIjk2M1wiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMCwgMC41NzE0MV0sXG4gICAgXCI5NjRcIjogWzAsIDAuNDMwNTYsIDAuMTEzMiwgMC4wMjc3OCwgMC40MzcxNV0sXG4gICAgXCI5NjVcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNTQwMjhdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjY1NDE3XSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC42MjU2OV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM1ODgsIDAuMTExMTEsIDAuNjUxMzldLFxuICAgIFwiOTY5XCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjYyMjQ1XSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTE0NF0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAuMDgzMzQsIDAuNTk1ODNdLFxuICAgIFwiOTgyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAwLjgyODEzXSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNTE3MDJdLFxuICAgIFwiMTAxM1wiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MDU5XVxuICB9LFxuICBcIlNhbnNTZXJpZi1Cb2xkXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjkxNjY3XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAxLjAyOTEyXSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU2XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQyNzc4XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQzXCI6IFswLjExNjY3LCAwLjYxNjY3LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjQ0XCI6IFswLjEwNTU2LCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjM2NjY3XSxcbiAgICBcIjQ2XCI6IFswLCAwLjEzMDU2LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjUzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjU5XCI6IFswLjEwNTU2LCAwLjQ1ODMzLCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjYxXCI6IFstMC4wOTM3NSwgMC40MDYyNSwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDE2N10sXG4gICAgXCI3MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI3MVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMzA1Nl0sXG4gICAgXCI3NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTk0NV0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45Nzc3OF0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4MVwiOiBbMC4xMDU1NiwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3OF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMC43MzMzNF0sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTUyOCwgMCwgMS4wMzg4OV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjc1LCAwLCAwLjczMzM0XSxcbiAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM0MzA2XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjk1XCI6IFswLjM1LCAwLjEwODMzLCAwLjAzMDU2LCAwLCAwLjU1XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4wNzYzOSwgMCwgMC4zMzYxMV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNTVdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjEwNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuMjg2MTFdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUzMDU2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNTU1Nl0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuODY2NjddLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExMVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC4zNzIyMl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNDIxNjddLFxuICAgIFwiMTE2XCI6IFswLCAwLjU4OTI5LCAwLCAwLCAwLjQwNDE3XSxcbiAgICBcIjExN1wiOiBbMCwgMC40NTgzMywgMCwgMCwgMC41NjExMV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNzQ0NDVdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjVdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLjAxNTI4LCAwLCAwLjVdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjQ3NjM5XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zNDQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjE4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDg4ODldLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjI1NTU2XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NTgzMywgMCwgMCwgMC4yODYxMV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzNTQyLCAwLCAwLCAwLjU1XSxcbiAgICBcIjcxM1wiOiBbMCwgMC42Mzc3OCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41ODA1Nl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuOTE2NjddLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NzIyM10sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODU1NTZdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NTgzMywgMC4wMzA1NiwgMCwgMC41NV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ1ODMzLCAwLjAzMDU2LCAwLCAxLjEwMDAxXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1ODM0XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLUl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4wNTczMywgMCwgMC4zMTk0NV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wMDMxNiwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1MDg3LCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAuMDMxMjYsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAuMDMwNTgsIDAsIDAuNzU4MzRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAuMDI1MzYsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAuMTE3NzUsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMC4wMjUzNiwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xMjUsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAuMDE5NDYsIDAsIDAuMzMzMzNdLFxuICAgIFwiNDZcIjogWzAsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAuMTMxNjQsIDAsIDAuNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjUyXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU1XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLjAyNTAyLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjU5XCI6IFswLjEyNSwgMC40NDQ0NCwgMC4wMjUwMiwgMCwgMC4yNzc3OF0sXG4gICAgXCI2MVwiOiBbLTAuMTMsIDAuMzcsIDAuMDUwODcsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTE4MDksIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNjY2NjddLFxuICAgIFwiNjVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjZcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjY2NjddLFxuICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjM4ODldLFxuICAgIFwiNjhcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNzIyMjNdLFxuICAgIFwiNjlcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNTk3MjJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTY5NDVdLFxuICAgIFwiNzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjY2NjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNzA4MzRdLFxuICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzRcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNDcyMjJdLFxuICAgIFwiNzVcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNjk0NDVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQxNjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuODc1XSxcbiAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjczNjExXSxcbiAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjYzODg5XSxcbiAgICBcIjgxXCI6IFswLjEyNSwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MzYxMV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMC4wODI5MywgMCwgMC42NDU4NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMC4wOTIwNSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42ODA1Nl0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC42ODc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjE2MTUsIDAsIDAuNjY2NjddLFxuICAgIFwiODdcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4xNzI2MSwgMCwgMC42NjY2N10sXG4gICAgXCI5MFwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xNTk0MiwgMCwgMC4yODg4OV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMC4wODcxOSwgMCwgMC4yODg4OV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiOTVcIjogWzAuMzUsIDAuMDk0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMC4wMDk4MSwgMCwgMC40ODA1Nl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMC4wMzA1NywgMCwgMC41MTY2N10sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMC4wODMzNiwgMCwgMC40NDQ0NV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAuMDk0ODMsIDAsIDAuNTE2NjddLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLjA2Nzc4LCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4yMTcwNSwgMCwgMC4zMDU1Nl0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTA1XCI6IFswLCAwLjY3OTM3LCAwLjA5NzE4LCAwLCAwLjIzODg5XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42NzkzNywgMC4wOTE2MiwgMCwgMC4yNjY2N10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDgzMzYsIDAsIDAuNDg4ODldLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjIzODg5XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMC4wMTc3OCwgMCwgMC43OTQ0NV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAuMDE3NzgsIDAsIDAuNTE2NjddLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLjA2NjEzLCAwLCAwLjVdLFxuICAgIFwiMTEyXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzODksIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAuMDc3OCwgMCwgMC4zODMzM10sXG4gICAgXCIxMTZcIjogWzAsIDAuNTcxNDMsIDAuMDcyMjUsIDAsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjUxNjY3XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMTA4MzYsIDAsIDAuNjgzMzRdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLjA5MTY5LCAwLCAwLjQ2MTExXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC40NjExMV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMDg3NTIsIDAsIDAuNDM0NzJdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjMyNjU5LCAwLjA4ODI2LCAwLCAwLjVdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY3OTM3LCAwLjA2Mzg1LCAwLCAwLjVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNzUyXSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuMjM4ODldLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjA0MTY5LCAwLCAwLjI2NjY3XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzk5LCAwLCAwLjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLjA4NDMyLCAwLCAwLjVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjYwODg5LCAwLjA4Nzc2LCAwLCAwLjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA1LCAwLCAwLjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNzI4XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDgzLCAwLCAwLjVdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY3OTM3LCAwLjA3Nzc0LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Mzc1Ml0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjc2NTksIDAuMDg4MjYsIDAsIDAuNV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDUsIDAsIDAuNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjk0NDQsIDAuMTMzNzIsIDAsIDAuNTQxNjddLFxuICAgIFwiOTE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY5NDQ0LCAwLjEyODE2LCAwLCAwLjY2NjY3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC43MDgzNF0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjk0NDQsIDAuMTE5ODMsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTMzXCI6IFswLCAwLjY5NDQ0LCAwLjA5MDMxLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNDYwMywgMCwgMC43MjIyMl0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjk0NDQsIDAuMDkwMzEsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM3XCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjcyMjIyXSxcbiAgICBcIjgyMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDg2MTYsIDAsIDAuNV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NjE2LCAwLCAxLjBdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4wNzgxNiwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjA3ODE2LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTQyMDUsIDAsIDAuNV0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLjAwMzE2LCAwLCAwLjVdXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDVdLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCIzNlwiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc1ODM0XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDNcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNDRcIjogWzAuMTI1LCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjMzMzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjA4MzMzLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDhcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI1OVwiOiBbMC4xMjUsIDAuNDQ0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNjFcIjogWy0wLjEzLCAwLjM3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIzXSxcbiAgICBcIjY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU5NzIyXSxcbiAgICBcIjcwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2OTQ1XSxcbiAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjczXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjc1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY5NDQ1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MTY3XSxcbiAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI3OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDgzNF0sXG4gICAgXCI3OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzYxMV0sXG4gICAgXCI4MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4MVwiOiBbMC4xMjUsIDAuNjk0NDQsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiODJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjQ1ODRdLFxuICAgIFwiODNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiODVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjg3NV0sXG4gICAgXCI4NlwiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC42NjY2N10sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4wMTM4OSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OVwiOiBbMCwgMC42OTQ0NCwgMC4wMjUsIDAsIDAuNjY2NjddLFxuICAgIFwiOTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjg4ODldLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NVwiOiBbMC4zNSwgMC4wOTQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ4MDU2XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA2OTQ0LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDVcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLCAwLCAwLjI2NjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMTFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC4zNDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgIFwiMTE2XCI6IFswLCAwLjU3MTQzLCAwLCAwLCAwLjM2MTExXSxcbiAgICBcIjExN1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMThcIjogWzAsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjY4MzM0XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NjExMV0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQzNDcyXSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMjY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC41XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjIzODg5XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4yNjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNjA4ODksIDAsIDAsIDAuNV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjc5MzcsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjczMlwiOiBbMCwgMC42NzY1OSwgMCwgMCwgMC41XSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NDE2N10sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDI3NzgsIDAsIDEuMF0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV1cbiAgfSxcbiAgXCJTY3JpcHQtUmVndWxhclwiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC43LCAwLjIyOTI1LCAwLCAwLjgwMjUzXSxcbiAgICBcIjY2XCI6IFswLCAwLjcsIDAuMDQwODcsIDAsIDAuOTA3NTddLFxuICAgIFwiNjdcIjogWzAsIDAuNywgMC4xNjg5LCAwLCAwLjY2NjE5XSxcbiAgICBcIjY4XCI6IFswLCAwLjcsIDAuMDkzNzEsIDAsIDAuNzc0NDNdLFxuICAgIFwiNjlcIjogWzAsIDAuNywgMC4xODU4MywgMCwgMC41NjE2Ml0sXG4gICAgXCI3MFwiOiBbMCwgMC43LCAwLjEzNjM0LCAwLCAwLjg5NTQ0XSxcbiAgICBcIjcxXCI6IFswLCAwLjcsIDAuMTczMjIsIDAsIDAuNjA5NjFdLFxuICAgIFwiNzJcIjogWzAsIDAuNywgMC4yOTY5NCwgMCwgMC45NjkxOV0sXG4gICAgXCI3M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjgwOTA3XSxcbiAgICBcIjc0XCI6IFswLjI3Nzc4LCAwLjcsIDAuMTkxODksIDAsIDEuMDUxNTldLFxuICAgIFwiNzVcIjogWzAsIDAuNywgMC4zMTI1OSwgMCwgMC45MTM2NF0sXG4gICAgXCI3NlwiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg3MzczXSxcbiAgICBcIjc3XCI6IFswLCAwLjcsIDAuMTU5ODEsIDAsIDEuMDgwMzFdLFxuICAgIFwiNzhcIjogWzAsIDAuNywgMC4zNTI1LCAwLCAwLjkwMTVdLFxuICAgIFwiNzlcIjogWzAsIDAuNywgMC4wODA3OCwgMCwgMC43Mzc4N10sXG4gICAgXCI4MFwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAxLjAxMjYyXSxcbiAgICBcIjgxXCI6IFswLCAwLjcsIDAuMDMzMDUsIDAsIDAuODgyODJdLFxuICAgIFwiODJcIjogWzAsIDAuNywgMC4wNjI1OSwgMCwgMC44NV0sXG4gICAgXCI4M1wiOiBbMCwgMC43LCAwLjE5MTg5LCAwLCAwLjg2NzY3XSxcbiAgICBcIjg0XCI6IFswLCAwLjcsIDAuMjkwODcsIDAsIDAuNzQ2OTddLFxuICAgIFwiODVcIjogWzAsIDAuNywgMC4yNTgxNSwgMCwgMC43OTk5Nl0sXG4gICAgXCI4NlwiOiBbMCwgMC43LCAwLjI3NTIzLCAwLCAwLjYyMjA0XSxcbiAgICBcIjg3XCI6IFswLCAwLjcsIDAuMjc1MjMsIDAsIDAuODA1MzJdLFxuICAgIFwiODhcIjogWzAsIDAuNywgMC4yNjAwNiwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OVwiOiBbMCwgMC43LCAwLjI5MzksIDAsIDAuNzA5NjFdLFxuICAgIFwiOTBcIjogWzAsIDAuNywgMC4yNDAzNywgMCwgMC44MjEyXVxuICB9LFxuICBcIlNpemUxLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDU4MzRdLFxuICAgIFwiNDdcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiOTJcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTc3NzhdLFxuICAgIFwiOTNcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiMTIzXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEyNVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI3MTBcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiNzMyXCI6IFswLCAwLjcyMjIyLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjc3MFwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODIxNFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg1OTNcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODU5NVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NjU3XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg2NTlcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcxOVwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC45NDQ0NV0sXG4gICAgXCI4NzIwXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg3MjFcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiODczMFwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg3MzlcIjogWy0wLjAwNTk5LCAwLjYwNiwgMCwgMCwgMC4zMzMzM10sXG4gICAgXCI4NzQxXCI6IFstMC4wMDU5OSwgMC42MDYsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODc0N1wiOiBbMC4zMDYxMiwgMC44MDUsIDAuMTk0NDUsIDAsIDAuNDcyMjJdLFxuICAgIFwiODc0OFwiOiBbMC4zMDYsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg3NDlcIjogWzAuMzA2LCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4NzUwXCI6IFswLjMwNjEyLCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4ODk2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg4OTdcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODg5OFwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4ODk5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg5NjhcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiODk2OVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI4OTcwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg5NzFcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTE2OFwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwMjE2XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwMjE3XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjEwNzUyXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzUzXCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU0XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU2XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjEwNzU4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XVxuICB9LFxuICBcIlNpemUyLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNDdcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTFcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiOTJcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODExMTFdLFxuICAgIFwiOTNcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiMTIzXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEyNVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI3MTBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NzE5XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjI3Nzc4XSxcbiAgICBcIjg3MjBcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiODcyMVwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI4NzMwXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAxLjBdLFxuICAgIFwiODc0N1wiOiBbMC44NjIyNSwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ4XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ5XCI6IFswLjg2MiwgMS4zNiwgMC40NDQ0NSwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzUwXCI6IFswLjg2MjI1LCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg4OTZcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5N1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4ODk4XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjg4OTlcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODk2OFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCI4OTY5XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjg5NzBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiODk3MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMDIxNlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDIxN1wiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCIxMDc1MlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1M1wiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS41MTExMl0sXG4gICAgXCIxMDc1NlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCIxMDc1OFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV1cbiAgfSxcbiAgXCJTaXplMy1SZWd1bGFyXCI6IHtcbiAgICBcIjQwXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjQ3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjkyXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAxLjA0NDQ1XSxcbiAgICBcIjkzXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEyM1wiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC43NV0sXG4gICAgXCIxMjVcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzEwXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjczMlwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI3NzBcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgIFwiNzcxXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjg3MzBcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDEuMF0sXG4gICAgXCI4OTY4XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjg5NjlcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiODk3MFwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI4OTcxXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjEwMjE2XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XSxcbiAgICBcIjEwMjE3XCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XVxuICB9LFxuICBcIlNpemU0LVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNzkxNjddLFxuICAgIFwiNDdcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiOTJcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiOTNcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiMTIzXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEyNVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC44MDU1Nl0sXG4gICAgXCI3MTBcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiNzMyXCI6IFswLCAwLjgyNSwgMCwgMCwgMS44ODg5XSxcbiAgICBcIjc3MFwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgXCI3NzFcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiODczMFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg5NjhcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODk2OVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4OTcwXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg5NzFcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiOTExNVwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTZcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMTdcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI5MTE4XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTExOVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTEyMFwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMjFcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjJcIjogWy0wLjAwMDk5LCAwLjYwMSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTIzXCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI0XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI1XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyNlwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyN1wiOiBbMWUtMDUsIDAuOSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTI4XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMjlcIjogWzAuOTAwMDEsIDAsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMFwiOiBbMCwgMC4zLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMzFcIjogWzFlLTA1LCAwLjksIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTMzXCI6IFswLjkwMDAxLCAwLCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxNDNcIjogWzAuODg1MDIsIDAuOTE1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICBcIjEwMjE2XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjEwMjE3XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjU3MzQ0XCI6IFstMC4wMDQ5OSwgMC42MDUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiNTczNDVcIjogWy0wLjAwNDk5LCAwLjYwNSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgXCI1NzY4MFwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MVwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4MlwiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV0sXG4gICAgXCI1NzY4M1wiOiBbMCwgMC4xMiwgMCwgMCwgMC40NV1cbiAgfSxcbiAgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIjoge1xuICAgIFwiMzJcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjMzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM2XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzN1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0MFwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQyXCI6IFswLCAwLjUyMDgzLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0M1wiOiBbLTAuMDgwNTYsIDAuNTMwNTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ0XCI6IFswLjEzODg5LCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDVcIjogWy0wLjA4MDU2LCAwLjUzMDU1LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0NlwiOiBbMCwgMC4xMjUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU5XCI6IFswLjEzODg5LCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2MFwiOiBbLTAuMDU1NTYsIDAuNTU1NTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjYxXCI6IFstMC4xOTU0OSwgMC40MTU2MiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjJcIjogWy0wLjA1NTU2LCAwLjU1NTU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2M1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4MVwiOiBbMC4xMzg4OSwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTFcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5M1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk1XCI6IFswLjA5NTE0LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAzXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA2XCI6IFswLjIyMjIyLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTEyXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNTUzNTgsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTIxXCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyM1wiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI0XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjVcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxNjBcIjogWzAsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTg0XCI6IFswLjE5NDQ1LCAwLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU2N1wiOiBbMC4yMjIyMiwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzExXCI6IFswLCAwLjU2NTk3LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTY1NTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjczMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzcwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTIzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgyNDJcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyNTFcIjogWzAuMTExMTEsIDAuMjE5NDQsIDAsIDAsIDAuNTI1XVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2ZvbnRNZXRyaWNzLmpzXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgbWV0cmljcyByZWdhcmRpbmcgZm9udHMgYW5kIGluZGl2aWR1YWwgc3ltYm9scy4gVGhlIHNpZ21hXG4gKiBhbmQgeGkgdmFyaWFibGVzLCBhcyB3ZWxsIGFzIHRoZSBtZXRyaWNNYXAgbWFwIGNvbnRhaW4gZGF0YSBleHRyYWN0ZWQgZnJvbVxuICogVGVYLCBUZVggZm9udCBtZXRyaWNzLCBhbmQgdGhlIFRURiBmaWxlcy4gVGhlc2UgZGF0YSBhcmUgdGhlbiBleHBvc2VkIHZpYSB0aGVcbiAqIGBtZXRyaWNzYCB2YXJpYWJsZSBhbmQgdGhlIGdldENoYXJhY3Rlck1ldHJpY3MgZnVuY3Rpb24uXG4gKi9cbi8vIEluIFRlWCwgdGhlcmUgYXJlIGFjdHVhbGx5IHRocmVlIHNldHMgb2YgZGltZW5zaW9ucywgb25lIGZvciBlYWNoIG9mXG4vLyB0ZXh0c3R5bGUgKHNpemUgaW5kZXggNSBhbmQgaGlnaGVyOiA+PTlwdCksIHNjcmlwdHN0eWxlIChzaXplIGluZGV4IDMgYW5kIDQ6XG4vLyA3LThwdCksIGFuZCBzY3JpcHRzY3JpcHRzdHlsZSAoc2l6ZSBpbmRleCAxIGFuZCAyOiA1LTZwdCkuICBUaGVzZSBhcmVcbi8vIHByb3ZpZGVkIGluIHRoZSB0aGUgYXJyYXlzIGJlbG93LCBpbiB0aGF0IG9yZGVyLlxuLy9cbi8vIFRoZSBmb250IG1ldHJpY3MgYXJlIHN0b3JlZCBpbiBmb250cyBjbXN5MTAsIGNtc3k3LCBhbmQgY21zeTUgcmVzcHNlY3RpdmVseS5cbi8vIFRoaXMgd2FzIGRldGVybWluZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIHNjcmlwdDpcbi8vXG4vLyAgICAgbGF0ZXggLWludGVyYWN0aW9uPW5vbnN0b3Btb2RlIFxcXG4vLyAgICAgJ1xcZG9jdW1lbnRjbGFzc3thcnRpY2xlfVxcdXNlcGFja2FnZXthbXNtYXRofVxcYmVnaW57ZG9jdW1lbnR9JyBcXFxuLy8gICAgICckYSQgXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFx0ZXh0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcZXhwYW5kYWZ0ZXJcXHNob3dcXHRoZVxcc2NyaXB0c2NyaXB0Zm9udDInIFxcXG4vLyAgICAgJ1xcc3RvcCdcbi8vXG4vLyBUaGUgbWV0cmljcyB0aGVtc2VsdmVzIHdlcmUgcmV0cmVpdmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6XG4vL1xuLy8gICAgIHRmdG9wbCBjbXN5MTBcbi8vICAgICB0ZnRvcGwgY21zeTdcbi8vICAgICB0ZnRvcGwgY21zeTVcbi8vXG4vLyBUaGUgb3V0cHV0IG9mIGVhY2ggb2YgdGhlc2UgY29tbWFuZHMgaXMgcXVpdGUgbGVuZ3RoeS4gIFRoZSBvbmx5IHBhcnQgd2Vcbi8vIGNhcmUgYWJvdXQgaXMgdGhlIEZPTlRESU1FTiBzZWN0aW9uLiBFYWNoIHZhbHVlIGlzIG1lYXN1cmVkIGluIEVNcy5cbnZhciBzaWdtYXNBbmRYaXMgPSB7XG4gIHNsYW50OiBbMC4yNTAsIDAuMjUwLCAwLjI1MF0sXG4gIC8vIHNpZ21hMVxuICBzcGFjZTogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTJcbiAgc3RyZXRjaDogWzAuMDAwLCAwLjAwMCwgMC4wMDBdLFxuICAvLyBzaWdtYTNcbiAgc2hyaW5rOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hNFxuICB4SGVpZ2h0OiBbMC40MzEsIDAuNDMxLCAwLjQzMV0sXG4gIC8vIHNpZ21hNVxuICBxdWFkOiBbMS4wMDAsIDEuMTcxLCAxLjQ3Ml0sXG4gIC8vIHNpZ21hNlxuICBleHRyYVNwYWNlOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hN1xuICBudW0xOiBbMC42NzcsIDAuNzMyLCAwLjkyNV0sXG4gIC8vIHNpZ21hOFxuICBudW0yOiBbMC4zOTQsIDAuMzg0LCAwLjM4N10sXG4gIC8vIHNpZ21hOVxuICBudW0zOiBbMC40NDQsIDAuNDcxLCAwLjUwNF0sXG4gIC8vIHNpZ21hMTBcbiAgZGVub20xOiBbMC42ODYsIDAuNzUyLCAxLjAyNV0sXG4gIC8vIHNpZ21hMTFcbiAgZGVub20yOiBbMC4zNDUsIDAuMzQ0LCAwLjUzMl0sXG4gIC8vIHNpZ21hMTJcbiAgc3VwMTogWzAuNDEzLCAwLjUwMywgMC41MDRdLFxuICAvLyBzaWdtYTEzXG4gIHN1cDI6IFswLjM2MywgMC40MzEsIDAuNDA0XSxcbiAgLy8gc2lnbWExNFxuICBzdXAzOiBbMC4yODksIDAuMjg2LCAwLjI5NF0sXG4gIC8vIHNpZ21hMTVcbiAgc3ViMTogWzAuMTUwLCAwLjE0MywgMC4yMDBdLFxuICAvLyBzaWdtYTE2XG4gIHN1YjI6IFswLjI0NywgMC4yODYsIDAuNDAwXSxcbiAgLy8gc2lnbWExN1xuICBzdXBEcm9wOiBbMC4zODYsIDAuMzUzLCAwLjQ5NF0sXG4gIC8vIHNpZ21hMThcbiAgc3ViRHJvcDogWzAuMDUwLCAwLjA3MSwgMC4xMDBdLFxuICAvLyBzaWdtYTE5XG4gIGRlbGltMTogWzIuMzkwLCAxLjcwMCwgMS45ODBdLFxuICAvLyBzaWdtYTIwXG4gIGRlbGltMjogWzEuMDEwLCAxLjE1NywgMS40MjBdLFxuICAvLyBzaWdtYTIxXG4gIGF4aXNIZWlnaHQ6IFswLjI1MCwgMC4yNTAsIDAuMjUwXSxcbiAgLy8gc2lnbWEyMlxuICAvLyBUaGVzZSBmb250IG1ldHJpY3MgYXJlIGV4dHJhY3RlZCBmcm9tIFRlWCBieSB1c2luZyB0ZnRvcGwgb24gY21leDEwLnRmbTtcbiAgLy8gdGhleSBjb3JyZXNwb25kIHRvIHRoZSBmb250IHBhcmFtZXRlcnMgb2YgdGhlIGV4dGVuc2lvbiBmb250cyAoZmFtaWx5IDMpLlxuICAvLyBTZWUgdGhlIFRlWGJvb2ssIHBhZ2UgNDQxLiBJbiBBTVNUZVgsIHRoZSBleHRlbnNpb24gZm9udHMgc2NhbGU7IHRvXG4gIC8vIG1hdGNoIGNtZXg3LCB3ZSdkIHVzZSBjbWV4Ny50Zm0gdmFsdWVzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdFxuICAvLyB2YWx1ZXMuXG4gIGRlZmF1bHRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNDksIDAuMDQ5XSxcbiAgLy8geGk4OyBjbWV4NzogMC4wNDlcbiAgYmlnT3BTcGFjaW5nMTogWzAuMTExLCAwLjExMSwgMC4xMTFdLFxuICAvLyB4aTlcbiAgYmlnT3BTcGFjaW5nMjogWzAuMTY2LCAwLjE2NiwgMC4xNjZdLFxuICAvLyB4aTEwXG4gIGJpZ09wU3BhY2luZzM6IFswLjIsIDAuMiwgMC4yXSxcbiAgLy8geGkxMVxuICBiaWdPcFNwYWNpbmc0OiBbMC42LCAwLjYxMSwgMC42MTFdLFxuICAvLyB4aTEyOyBjbWV4NzogMC42MTFcbiAgYmlnT3BTcGFjaW5nNTogWzAuMSwgMC4xNDMsIDAuMTQzXSxcbiAgLy8geGkxMzsgY21leDc6IDAuMTQzXG4gIC8vIFRoZSBcXHNxcnQgcnVsZSB3aWR0aCBpcyB0YWtlbiBmcm9tIHRoZSBoZWlnaHQgb2YgdGhlIHN1cmQgY2hhcmFjdGVyLlxuICAvLyBTaW5jZSB3ZSB1c2UgdGhlIHNhbWUgZm9udCBhdCBhbGwgc2l6ZXMsIHRoaXMgdGhpY2tuZXNzIGRvZXNuJ3Qgc2NhbGUuXG4gIHNxcnRSdWxlVGhpY2tuZXNzOiBbMC4wNCwgMC4wNCwgMC4wNF0sXG4gIC8vIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgbGFyZ2UgYSBwdCBpcywgZm9yIG1ldHJpY3Mgd2hpY2ggYXJlIGRlZmluZWRcbiAgLy8gaW4gdGVybXMgb2YgcHRzLlxuICAvLyBUaGlzIHZhbHVlIGlzIGFsc28gdXNlZCBpbiBrYXRleC5sZXNzOyBpZiB5b3UgY2hhbmdlIGl0IG1ha2Ugc3VyZSB0aGVcbiAgLy8gdmFsdWVzIG1hdGNoLlxuICBwdFBlckVtOiBbMTAuMCwgMTAuMCwgMTAuMF0sXG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIGFkamFjZW50IGB8YCBjb2x1bW5zIGluIGFuIGFycmF5IGRlZmluaXRpb24uIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcZG91YmxlcnVsZXNlcGAgaW4gTGFUZVguIEVxdWFscyAyLjAgLyBwdFBlckVtLlxuICBkb3VibGVSdWxlU2VwOiBbMC4yLCAwLjIsIDAuMl0sXG4gIC8vIFRoZSB3aWR0aCBvZiBzZXBhcmF0b3IgbGluZXMgaW4ge2FycmF5fSBlbnZpcm9ubWVudHMuIEZyb21cbiAgLy8gYFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGhgIGluIExhVGVYLiBFcXVhbHMgMC40IC8gcHRQZXJFbS5cbiAgYXJyYXlSdWxlV2lkdGg6IFswLjA0LCAwLjA0LCAwLjA0XSxcbiAgLy8gVHdvIHZhbHVlcyBmcm9tIExhVGVYIHNvdXJjZTJlOlxuICBmYm94c2VwOiBbMC4zLCAwLjMsIDAuM10sXG4gIC8vICAgICAgICAzIHB0IC8gcHRQZXJFbVxuICBmYm94cnVsZTogWzAuMDQsIDAuMDQsIDAuMDRdIC8vIDAuNCBwdCAvIHB0UGVyRW1cblxufTsgLy8gVGhpcyBtYXAgY29udGFpbnMgYSBtYXBwaW5nIGZyb20gZm9udCBuYW1lIGFuZCBjaGFyYWN0ZXIgY29kZSB0byBjaGFyYWN0ZXJcbi8vIG1ldHJpY3MsIGluY2x1ZGluZyBoZWlnaHQsIGRlcHRoLCBpdGFsaWMgY29ycmVjdGlvbiwgYW5kIHNrZXcgKGtlcm4gZnJvbSB0aGVcbi8vIGNoYXJhY3RlciB0byB0aGUgY29ycmVzcG9uZGluZyBcXHNrZXdjaGFyKVxuLy8gVGhpcyBtYXAgaXMgZ2VuZXJhdGVkIHZpYSBgbWFrZSBtZXRyaWNzYC4gSXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIG1hbnVhbGx5LlxuXG4gLy8gVGhlc2UgYXJlIHZlcnkgcm91Z2ggYXBwcm94aW1hdGlvbnMuICBXZSBkZWZhdWx0IHRvIFRpbWVzIE5ldyBSb21hbiB3aGljaFxuLy8gc2hvdWxkIGhhdmUgTGF0aW4tMSBhbmQgQ3lyaWxsaWMgY2hhcmFjdGVycywgYnV0IG1heSBub3QgZGVwZW5kaW5nIG9uIHRoZVxuLy8gb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBtZXRyaWNzIGRvIG5vdCBhY2NvdW50IGZvciBleHRyYSBoZWlnaHQgZnJvbSB0aGVcbi8vIGFjY2VudHMuICBJbiB0aGUgY2FzZSBvZiBDeXJpbGxpYyBjaGFyYWN0ZXJzIHdoaWNoIGhhdmUgYm90aCBhc2NlbmRlcnMgYW5kXG4vLyBkZXNjZW5kZXJzIHdlIHByZWZlciBhcHByb3hpbWF0aW9ucyB3aXRoIGFzY2VuZGVycywgcHJpbWFyaWx5IHRvIHByZXZlbnRcbi8vIHRoZSBmcmFjdGlvbiBiYXIgb3Igcm9vdCBsaW5lIGZyb20gaW50ZXJzZWN0aW5nIHRoZSBnbHlwaC5cbi8vIFRPRE8oa2V2aW5iKSBhbGxvdyB1bmlvbiBvZiBtdWx0aXBsZSBnbHlwaCBtZXRyaWNzIGZvciBiZXR0ZXIgYWNjdXJhY3kuXG5cbnZhciBleHRyYUNoYXJhY3Rlck1hcCA9IHtcbiAgLy8gTGF0aW4tMVxuICAnw4UnOiAnQScsXG4gICfDhyc6ICdDJyxcbiAgJ8OQJzogJ0QnLFxuICAnw54nOiAnbycsXG4gICfDpSc6ICdhJyxcbiAgJ8OnJzogJ2MnLFxuICAnw7AnOiAnZCcsXG4gICfDvic6ICdvJyxcbiAgLy8gQ3lyaWxsaWNcbiAgJ9CQJzogJ0EnLFxuICAn0JEnOiAnQicsXG4gICfQkic6ICdCJyxcbiAgJ9CTJzogJ0YnLFxuICAn0JQnOiAnQScsXG4gICfQlSc6ICdFJyxcbiAgJ9CWJzogJ0snLFxuICAn0JcnOiAnMycsXG4gICfQmCc6ICdOJyxcbiAgJ9CZJzogJ04nLFxuICAn0JonOiAnSycsXG4gICfQmyc6ICdOJyxcbiAgJ9CcJzogJ00nLFxuICAn0J0nOiAnSCcsXG4gICfQnic6ICdPJyxcbiAgJ9CfJzogJ04nLFxuICAn0KAnOiAnUCcsXG4gICfQoSc6ICdDJyxcbiAgJ9CiJzogJ1QnLFxuICAn0KMnOiAneScsXG4gICfQpCc6ICdPJyxcbiAgJ9ClJzogJ1gnLFxuICAn0KYnOiAnVScsXG4gICfQpyc6ICdoJyxcbiAgJ9CoJzogJ1cnLFxuICAn0KknOiAnVycsXG4gICfQqic6ICdCJyxcbiAgJ9CrJzogJ1gnLFxuICAn0KwnOiAnQicsXG4gICfQrSc6ICczJyxcbiAgJ9CuJzogJ1gnLFxuICAn0K8nOiAnUicsXG4gICfQsCc6ICdhJyxcbiAgJ9CxJzogJ2InLFxuICAn0LInOiAnYScsXG4gICfQsyc6ICdyJyxcbiAgJ9C0JzogJ3knLFxuICAn0LUnOiAnZScsXG4gICfQtic6ICdtJyxcbiAgJ9C3JzogJ2UnLFxuICAn0LgnOiAnbicsXG4gICfQuSc6ICduJyxcbiAgJ9C6JzogJ24nLFxuICAn0LsnOiAnbicsXG4gICfQvCc6ICdtJyxcbiAgJ9C9JzogJ24nLFxuICAn0L4nOiAnbycsXG4gICfQvyc6ICduJyxcbiAgJ9GAJzogJ3AnLFxuICAn0YEnOiAnYycsXG4gICfRgic6ICdvJyxcbiAgJ9GDJzogJ3knLFxuICAn0YQnOiAnYicsXG4gICfRhSc6ICd4JyxcbiAgJ9GGJzogJ24nLFxuICAn0YcnOiAnbicsXG4gICfRiCc6ICd3JyxcbiAgJ9GJJzogJ3cnLFxuICAn0YonOiAnYScsXG4gICfRiyc6ICdtJyxcbiAgJ9GMJzogJ2EnLFxuICAn0Y0nOiAnZScsXG4gICfRjic6ICdtJyxcbiAgJ9GPJzogJ3InXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBuZXcgZm9udCBtZXRyaWNzIHRvIGRlZmF1bHQgbWV0cmljTWFwXG4gKiBJdCBjYW4gYWxzbyBvdmVycmlkZSBleGlzdGluZyBtZXRyaWNzXG4gKi9cbmZ1bmN0aW9uIHNldEZvbnRNZXRyaWNzKGZvbnROYW1lLCBtZXRyaWNzKSB7XG4gIGZvbnRNZXRyaWNzRGF0YVtmb250TmFtZV0gPSBtZXRyaWNzO1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAgaW5mb3JtYXRpb24gaW4gdGhlXG4gKiBtZXRyaWNNYXAgdGFibGUuIEl0IHRha2VzIGEgY2hhcmFjdGVyIGFzIGEgc3RyaW5nLCBhbmQgYSBmb250LlxuICpcbiAqIE5vdGU6IHRoZSBgd2lkdGhgIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQgaWYgZm9udE1ldHJpY3NEYXRhLmpzIHdhc24ndFxuICogYnVpbHQgdXNpbmcgYE1ha2UgZXh0ZW5kZWRfbWV0cmljc2AuXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyTWV0cmljcyhjaGFyYWN0ZXIsIGZvbnQsIG1vZGUpIHtcbiAgaWYgKCFmb250TWV0cmljc0RhdGFbZm9udF0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb250IG1ldHJpY3Mgbm90IGZvdW5kIGZvciBmb250OiBcIiArIGZvbnQgKyBcIi5cIik7XG4gIH1cblxuICB2YXIgY2ggPSBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKTtcbiAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0RhdGFbZm9udF1bY2hdO1xuXG4gIGlmICghbWV0cmljcyAmJiBjaGFyYWN0ZXJbMF0gaW4gZXh0cmFDaGFyYWN0ZXJNYXApIHtcbiAgICBjaCA9IGV4dHJhQ2hhcmFjdGVyTWFwW2NoYXJhY3RlclswXV0uY2hhckNvZGVBdCgwKTtcbiAgICBtZXRyaWNzID0gZm9udE1ldHJpY3NEYXRhW2ZvbnRdW2NoXTtcbiAgfVxuXG4gIGlmICghbWV0cmljcyAmJiBtb2RlID09PSAndGV4dCcpIHtcbiAgICAvLyBXZSBkb24ndCB0eXBpY2FsbHkgaGF2ZSBmb250IG1ldHJpY3MgZm9yIEFzaWFuIHNjcmlwdHMuXG4gICAgLy8gQnV0IHNpbmNlIHdlIHN1cHBvcnQgdGhlbSBpbiB0ZXh0IG1vZGUsIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gc29tZSBzb3J0IG9mIG1ldHJpY3MuXG4gICAgLy8gU28gaWYgdGhlIGNoYXJhY3RlciBpcyBpbiBhIHNjcmlwdCB3ZSBzdXBwb3J0IGJ1dCB3ZVxuICAgIC8vIGRvbid0IGhhdmUgbWV0cmljcyBmb3IgaXQsIGp1c3QgdXNlIHRoZSBtZXRyaWNzIGZvclxuICAgIC8vIHRoZSBMYXRpbiBjYXBpdGFsIGxldHRlciBNLiBUaGlzIGlzIGNsb3NlIGVub3VnaCBiZWNhdXNlXG4gICAgLy8gd2UgKGN1cnJlbnRseSkgb25seSBjYXJlIGFib3V0IHRoZSBoZWlnaHQgb2YgdGhlIGdscHloXG4gICAgLy8gbm90IGl0cyB3aWR0aC5cbiAgICBpZiAoc3VwcG9ydGVkQ29kZXBvaW50KGNoKSkge1xuICAgICAgbWV0cmljcyA9IGZvbnRNZXRyaWNzRGF0YVtmb250XVs3N107IC8vIDc3IGlzIHRoZSBjaGFyY29kZSBmb3IgJ00nXG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVwdGg6IG1ldHJpY3NbMF0sXG4gICAgICBoZWlnaHQ6IG1ldHJpY3NbMV0sXG4gICAgICBpdGFsaWM6IG1ldHJpY3NbMl0sXG4gICAgICBza2V3OiBtZXRyaWNzWzNdLFxuICAgICAgd2lkdGg6IG1ldHJpY3NbNF1cbiAgICB9O1xuICB9XG59XG52YXIgZm9udE1ldHJpY3NCeVNpemVJbmRleCA9IHt9O1xuLyoqXG4gKiBHZXQgdGhlIGZvbnQgbWV0cmljcyBmb3IgYSBnaXZlbiBzaXplLlxuICovXG5cbmZ1bmN0aW9uIGdldEdsb2JhbE1ldHJpY3Moc2l6ZSkge1xuICB2YXIgc2l6ZUluZGV4O1xuXG4gIGlmIChzaXplID49IDUpIHtcbiAgICBzaXplSW5kZXggPSAwO1xuICB9IGVsc2UgaWYgKHNpemUgPj0gMykge1xuICAgIHNpemVJbmRleCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgc2l6ZUluZGV4ID0gMjtcbiAgfVxuXG4gIGlmICghZm9udE1ldHJpY3NCeVNpemVJbmRleFtzaXplSW5kZXhdKSB7XG4gICAgdmFyIG1ldHJpY3MgPSBmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0gPSB7XG4gICAgICBjc3NFbVBlck11OiBzaWdtYXNBbmRYaXMucXVhZFtzaXplSW5kZXhdIC8gMThcbiAgICB9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNpZ21hc0FuZFhpcykge1xuICAgICAgaWYgKHNpZ21hc0FuZFhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIG1ldHJpY3Nba2V5XSA9IHNpZ21hc0FuZFhpc1trZXldW3NpemVJbmRleF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbnRNZXRyaWNzQnlTaXplSW5kZXhbc2l6ZUluZGV4XTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N5bWJvbHMuanNcbi8qKlxuICogVGhpcyBmaWxlIGhvbGRzIGEgbGlzdCBvZiBhbGwgbm8tYXJndW1lbnQgZnVuY3Rpb25zIGFuZCBzaW5nbGUtY2hhcmFjdGVyXG4gKiBzeW1ib2xzIChsaWtlICdhJyBvciAnOycpLlxuICpcbiAqIEZvciBlYWNoIG9mIHRoZSBzeW1ib2xzLCB0aGVyZSBhcmUgdGhyZWUgcHJvcGVydGllcyB0aGV5IGNhbiBoYXZlOlxuICogLSBmb250IChyZXF1aXJlZCk6IHRoZSBmb250IHRvIGJlIHVzZWQgZm9yIHRoaXMgc3ltYm9sLiBFaXRoZXIgXCJtYWluXCIgKHRoZVxuICAgICBub3JtYWwgZm9udCksIG9yIFwiYW1zXCIgKHRoZSBhbXMgZm9udHMpLlxuICogLSBncm91cCAocmVxdWlyZWQpOiB0aGUgUGFyc2VOb2RlIGdyb3VwIHR5cGUgdGhlIHN5bWJvbCBzaG91bGQgaGF2ZSAoaS5lLlxuICAgICBcInRleHRvcmRcIiwgXCJtYXRob3JkXCIsIGV0YykuXG4gICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgvS2FUZVgvd2lraS9FeGFtaW5pbmctVGVYI2dyb3VwLXR5cGVzXG4gKiAtIHJlcGxhY2U6IHRoZSBjaGFyYWN0ZXIgdGhhdCB0aGlzIHN5bWJvbCBvciBmdW5jdGlvbiBzaG91bGQgYmVcbiAqICAgcmVwbGFjZWQgd2l0aCAoaS5lLiBcIlxccGhpXCIgaGFzIGEgcmVwbGFjZSB2YWx1ZSBvZiBcIlxcdTAzZDVcIiwgdGhlIHBoaVxuICogICBjaGFyYWN0ZXIgaW4gdGhlIG1haW4gZm9udCkuXG4gKlxuICogVGhlIG91dGVybW9zdCBtYXAgaW4gdGhlIHRhYmxlIGluZGljYXRlcyB3aGF0IG1vZGUgdGhlIHN5bWJvbHMgc2hvdWxkIGJlXG4gKiBhY2NlcHRlZCBpbiAoZS5nLiBcIm1hdGhcIiBvciBcInRleHRcIikuXG4gKi9cbi8vIFNvbWUgb2YgdGhlc2UgaGF2ZSBhIFwiLXRva2VuXCIgc3VmZml4IHNpbmNlIHRoZXNlIGFyZSBhbHNvIHVzZWQgYXMgYFBhcnNlTm9kZWBcbi8vIHR5cGVzIGZvciByYXcgdGV4dCB0b2tlbnMsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGhpZ2hlci1sZXZlbFxuLy8gYFBhcnNlTm9kZWAgdHlwZXMuIFRoZXNlIGBQYXJzZU5vZGVgcyBhcmUgY29uc3RydWN0ZWQgd2l0aGluIGBQYXJzZXJgIGJ5XG4vLyBsb29raW5nIHVwIHRoZSBgc3ltYm9sc2AgbWFwLlxudmFyIEFUT01TID0ge1xuICBcImJpblwiOiAxLFxuICBcImNsb3NlXCI6IDEsXG4gIFwiaW5uZXJcIjogMSxcbiAgXCJvcGVuXCI6IDEsXG4gIFwicHVuY3RcIjogMSxcbiAgXCJyZWxcIjogMVxufTtcbnZhciBOT05fQVRPTVMgPSB7XG4gIFwiYWNjZW50LXRva2VuXCI6IDEsXG4gIFwibWF0aG9yZFwiOiAxLFxuICBcIm9wLXRva2VuXCI6IDEsXG4gIFwic3BhY2luZ1wiOiAxLFxuICBcInRleHRvcmRcIjogMVxufTtcbnZhciBzeW1ib2xzID0ge1xuICBcIm1hdGhcIjoge30sXG4gIFwidGV4dFwiOiB7fVxufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zeW1ib2xzID0gKHN5bWJvbHMpO1xuLyoqIGBhY2NlcHRVbmljb2RlQ2hhciA9IHRydWVgIGlzIG9ubHkgYXBwbGljYWJsZSBpZiBgcmVwbGFjZWAgaXMgc2V0LiAqL1xuXG5mdW5jdGlvbiBkZWZpbmVTeW1ib2wobW9kZSwgZm9udCwgZ3JvdXAsIHJlcGxhY2UsIG5hbWUsIGFjY2VwdFVuaWNvZGVDaGFyKSB7XG4gIHN5bWJvbHNbbW9kZV1bbmFtZV0gPSB7XG4gICAgZm9udDogZm9udCxcbiAgICBncm91cDogZ3JvdXAsXG4gICAgcmVwbGFjZTogcmVwbGFjZVxuICB9O1xuXG4gIGlmIChhY2NlcHRVbmljb2RlQ2hhciAmJiByZXBsYWNlKSB7XG4gICAgc3ltYm9sc1ttb2RlXVtyZXBsYWNlXSA9IHN5bWJvbHNbbW9kZV1bbmFtZV07XG4gIH1cbn0gLy8gU29tZSBhYmJyZXZpYXRpb25zIGZvciBjb21tb25seSB1c2VkIHN0cmluZ3MuXG4vLyBUaGlzIGhlbHBzIG1pbmlmeSB0aGUgY29kZSwgYW5kIGFsc28gc3BvdHRpbmcgdHlwb3MgdXNpbmcganNoaW50LlxuLy8gbW9kZXM6XG5cbnZhciBzeW1ib2xzX21hdGggPSBcIm1hdGhcIjtcbnZhciBzeW1ib2xzX3RleHQgPSBcInRleHRcIjsgLy8gZm9udHM6XG5cbnZhciBtYWluID0gXCJtYWluXCI7XG52YXIgYW1zID0gXCJhbXNcIjsgLy8gZ3JvdXBzOlxuXG52YXIgc3ltYm9sc19hY2NlbnQgPSBcImFjY2VudC10b2tlblwiO1xudmFyIGJpbiA9IFwiYmluXCI7XG52YXIgc3ltYm9sc19jbG9zZSA9IFwiY2xvc2VcIjtcbnZhciBzeW1ib2xzX2lubmVyID0gXCJpbm5lclwiO1xudmFyIG1hdGhvcmQgPSBcIm1hdGhvcmRcIjtcbnZhciBvcCA9IFwib3AtdG9rZW5cIjtcbnZhciBzeW1ib2xzX29wZW4gPSBcIm9wZW5cIjtcbnZhciBwdW5jdCA9IFwicHVuY3RcIjtcbnZhciByZWwgPSBcInJlbFwiO1xudmFyIHN5bWJvbHNfc3BhY2luZyA9IFwic3BhY2luZ1wiO1xudmFyIHN5bWJvbHNfdGV4dG9yZCA9IFwidGV4dG9yZFwiOyAvLyBOb3cgY29tZXMgdGhlIHN5bWJvbCB0YWJsZVxuLy8gUmVsYXRpb24gU3ltYm9sc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2MVwiLCBcIlxcXFxlcXVpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjdBXCIsIFwiXFxcXHByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI3QlwiLCBcIlxcXFxzdWNjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTVcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUFGXCIsIFwiXFxcXHByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyQUIwXCIsIFwiXFxcXHN1Y2NlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQzXCIsIFwiXFxcXHNpbWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjNcIiwgXCJcXFxcbWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNkFcIiwgXCJcXFxcbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2QlwiLCBcIlxcXFxnZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjREXCIsIFwiXFxcXGFzeW1wXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMjVcIiwgXCJcXFxccGFyYWxsZWxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJDOFwiLCBcIlxcXFxib3d0aWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyM1wiLCBcIlxcXFxzbWlsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjkxXCIsIFwiXFxcXHNxc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI5MlwiLCBcIlxcXFxzcXN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNTBcIiwgXCJcXFxcZG90ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjMyMlwiLCBcIlxcXFxmcm93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG5pXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMURcIiwgXCJcXFxccHJvcHRvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQTJcIiwgXCJcXFxcdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBM1wiLCBcIlxcXFxkYXNodlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjBCXCIsIFwiXFxcXG93bnNcIik7IC8vIFB1bmN0dWF0aW9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIi5cIiwgXCJcXFxcbGRvdHBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RwXCIpOyAvLyBNaXNjIFN5bWJvbHNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiNcIiwgXCJcXFxcI1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIjXCIsIFwiXFxcXCNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiZcIiwgXCJcXFxcJlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM1XCIsIFwiXFxcXGFsZXBoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDBcIiwgXCJcXFxcZm9yYWxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMEZcIiwgXCJcXFxcaGJhclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAzXCIsIFwiXFxcXGV4aXN0c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA3XCIsIFwiXFxcXG5hYmxhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkRcIiwgXCJcXFxcZmxhdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTEzXCIsIFwiXFxcXGVsbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjZFXCIsIFwiXFxcXG5hdHVyYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2M1wiLCBcIlxcXFxjbHVic3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTE4XCIsIFwiXFxcXHdwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkZcIiwgXCJcXFxcc2hhcnBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MlwiLCBcIlxcXFxkaWFtb25kc3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTFDXCIsIFwiXFxcXFJlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NjFcIiwgXCJcXFxcaGVhcnRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMTFcIiwgXCJcXFxcSW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MFwiLCBcIlxcXFxzcGFkZXN1aXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTdcIiwgXCJcXFxcU1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhCNlwiLCBcIlxcXFxQXCIsIHRydWUpOyAvLyBNYXRoIGFuZCBUZXh0XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIwXCIsIFwiXFxcXHRleHRkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjFcIiwgXCJcXFxcZGRhZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXHRleHRkYWdnZXJkYmxcIik7IC8vIExhcmdlIERlbGltaXRlcnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyM0IxXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjNCMFwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0VGXCIsIFwiXFxcXHJncm91cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0VFXCIsIFwiXFxcXGxncm91cFwiLCB0cnVlKTsgLy8gQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxM1wiLCBcIlxcXFxtcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk2XCIsIFwiXFxcXG9taW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjhFXCIsIFwiXFxcXHVwbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTNcIiwgXCJcXFxcc3FjYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxN1wiLCBcIlxcXFxhc3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5NFwiLCBcIlxcXFxzcWN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUVGXCIsIFwiXFxcXGJpZ2NpcmNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOVwiLCBcIlxcXFxidWxsZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnZ2VyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyNDBcIiwgXCJcXFxcd3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MkEzRlwiLCBcIlxcXFxhbWFsZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCImXCIsIFwiXFxcXEFuZFwiKTsgLy8gZnJvbSBhbXNtYXRoXG4vLyBBcnJvdyBTeW1ib2xzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y1XCIsIFwiXFxcXGxvbmdsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMFwiLCBcIlxcXFxMZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGOFwiLCBcIlxcXFxMb25nbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjZcIiwgXCJcXFxcbG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMlwiLCBcIlxcXFxSaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjlcIiwgXCJcXFxcTG9uZ3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NFwiLCBcIlxcXFxsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y3XCIsIFwiXFxcXGxvbmdsZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQ0XCIsIFwiXFxcXExlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkFcIiwgXCJcXFxcTG9uZ2xlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQTZcIiwgXCJcXFxcbWFwc3RvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RkNcIiwgXCJcXFxcbG9uZ21hcHN0b1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk3XCIsIFwiXFxcXG5lYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBOVwiLCBcIlxcXFxob29rbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQUFcIiwgXCJcXFxcaG9va3JpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5OFwiLCBcIlxcXFxzZWFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQkNcIiwgXCJcXFxcbGVmdGhhcnBvb251cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMwXCIsIFwiXFxcXHJpZ2h0aGFycG9vbnVwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTlcIiwgXCJcXFxcc3dhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUJEXCIsIFwiXFxcXGxlZnRoYXJwb29uZG93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUMxXCIsIFwiXFxcXHJpZ2h0aGFycG9vbmRvd25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NlwiLCBcIlxcXFxud2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQ0NcIiwgXCJcXFxccmlnaHRsZWZ0aGFycG9vbnNcIiwgdHJ1ZSk7IC8vIEFNUyBOZWdhdGVkIEJpbmFyeSBSZWxhdGlvbnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RVwiLCBcIlxcXFxubGVzc1wiLCB0cnVlKTsgLy8gU3ltYm9sIG5hbWVzIHByZWNlZWRlZCBieSBcIkBcIiBlYWNoIGhhdmUgYSBjb3JyZXNwb25kaW5nIG1hY3JvLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDEwXCIsIFwiXFxcXEBubGVxc2xhbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDExXCIsIFwiXFxcXEBubGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBODdcIiwgXCJcXFxcbG5lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjhcIiwgXCJcXFxcbG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBDXCIsIFwiXFxcXEBsdmVydG5lcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU2XCIsIFwiXFxcXGxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4OVwiLCBcIlxcXFxsbmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODBcIiwgXCJcXFxcbnByZWNcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyZTAgdG8gXFxucHJlY2N1cmx5ZXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTBcIiwgXCJcXFxcbnByZWNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRThcIiwgXCJcXFxccHJlY25zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI5XCIsIFwiXFxcXHByZWNuYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MVwiLCBcIlxcXFxuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwNlwiLCBcIlxcXFxAbnNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNFwiLCBcIlxcXFxubWlkXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQ1wiLCBcIlxcXFxudmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFEXCIsIFwiXFxcXG52RGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUFcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUNcIiwgXCJcXFxcbnRyaWFuZ2xlbGVmdGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QVwiLCBcIlxcXFxzdWJzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDFBXCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUNCXCIsIFwiXFxcXHN1YnNldG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE3XCIsIFwiXFxcXEB2YXJzdWJzZXRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2RlwiLCBcIlxcXFxuZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRlwiLCBcIlxcXFxAbmdlcXNsYW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRVwiLCBcIlxcXFxAbmdlcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg4XCIsIFwiXFxcXGduZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjY5XCIsIFwiXFxcXGduZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAwRFwiLCBcIlxcXFxAZ3ZlcnRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFN1wiLCBcIlxcXFxnbnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOEFcIiwgXCJcXFxcZ25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjgxXCIsIFwiXFxcXG5zdWNjXCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMmUxIHRvIFxcbnN1Y2NjdXJseWVxLiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkUxXCIsIFwiXFxcXG5zdWNjZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU5XCIsIFwiXFxcXHN1Y2Nuc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCQVwiLCBcIlxcXFxzdWNjbmFwcHJveFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjI0NiB0byBcXHNpbW5lcXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNDZcIiwgXCJcXFxcbmNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDA3XCIsIFwiXFxcXEBuc2hvcnRwYXJhbGxlbFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjZcIiwgXCJcXFxcbnBhcmFsbGVsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBRlwiLCBcIlxcXFxuVkRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVCXCIsIFwiXFxcXG50cmlhbmdsZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFRFwiLCBcIlxcXFxudHJpYW5nbGVyaWdodGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOFwiLCBcIlxcXFxAbnN1cHNldGVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyOEJcIiwgXCJcXFxcc3Vwc2V0bmVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxQlwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDQ1wiLCBcIlxcXFxzdXBzZXRuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1RTAxOVwiLCBcIlxcXFxAdmFyc3Vwc2V0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQUVcIiwgXCJcXFxcblZkYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCNVwiLCBcIlxcXFxwcmVjbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjZcIiwgXCJcXFxcc3VjY25lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE2XCIsIFwiXFxcXEBuc3Vic2V0ZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCNFwiLCBcIlxcXFx1bmxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjVcIiwgXCJcXFxcdW5yaGRcIik7IC8vIEFNUyBOZWdhdGVkIEFycm93c1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlBXCIsIFwiXFxcXG5sZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMTlCXCIsIFwiXFxcXG5yaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRFwiLCBcIlxcXFxuTGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRlwiLCBcIlxcXFxuUmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUVcIiwgXCJcXFxcbmxlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDRVwiLCBcIlxcXFxuTGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7IC8vIEFNUyBNaXNjXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QjNcIiwgXCJcXFxcdmFydHJpYW5nbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTBGXCIsIFwiXFxcXGhzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QkRcIiwgXCJcXFxcdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVDQVwiLCBcIlxcXFxsb3plbmdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjRDOFwiLCBcIlxcXFxjaXJjbGVkU1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFFXCIsIFwiXFxcXGNpcmNsZWRSXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QUVcIiwgXCJcXFxcY2lyY2xlZFJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIxXCIsIFwiXFxcXG1lYXN1cmVkYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA0XCIsIFwiXFxcXG5leGlzdHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTI3XCIsIFwiXFxcXG1ob1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzJcIiwgXCJcXFxcRmludlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxNDFcIiwgXCJcXFxcR2FtZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMzVcIiwgXCJcXFxcYmFja3ByaW1lXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCMlwiLCBcIlxcXFxibGFja3RyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCQ1wiLCBcIlxcXFxibGFja3RyaWFuZ2xlZG93blwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QTBcIiwgXCJcXFxcYmxhY2tzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyOUVCXCIsIFwiXFxcXGJsYWNrbG96ZW5nZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2MDVcIiwgXCJcXFxcYmlnc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjJcIiwgXCJcXFxcc3BoZXJpY2FsYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjAxXCIsIFwiXFxcXGNvbXBsZW1lbnRcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFUrRjAgKMOwKSB0byBcXG1hdGhldGguIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFxldGhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RjBcIiwgXCJcXFxcZXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjU3MVwiLCBcIlxcXFxkaWFndXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNTcyXCIsIFwiXFxcXGRpYWdkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVBMVwiLCBcIlxcXFxzcXVhcmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUExXCIsIFwiXFxcXEJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1Q0FcIiwgXCJcXFxcRGlhbW9uZFwiKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgVStBNSB0byBcXG1hdGh5ZW4uIFdlIG1hcCB0byBBTVMgZnVuY3Rpb24gXFx5ZW5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QTVcIiwgXCJcXFxceWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcxM1wiLCBcIlxcXFxjaGVja21hcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzEzXCIsIFwiXFxcXGNoZWNrbWFya1wiKTsgLy8gQU1TIEhlYnJld1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM2XCIsIFwiXFxcXGJldGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMTM4XCIsIFwiXFxcXGRhbGV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzdcIiwgXCJcXFxcZ2ltZWxcIiwgdHJ1ZSk7IC8vIEFNUyBHcmVla1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0REXCIsIFwiXFxcXGRpZ2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0YwXCIsIFwiXFxcXHZhcmthcHBhXCIpOyAvLyBBTVMgRGVsaW1pdGVyc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTBDXCIsIFwiXFxcXHVsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MTBcIiwgXCJcXFxcdXJjb3JuZXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfb3BlbiwgXCJcXHUyNTE0XCIsIFwiXFxcXGxsY29ybmVyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI1MThcIiwgXCJcXFxcbHJjb3JuZXJcIiwgdHJ1ZSk7IC8vIEFNUyBCaW5hcnkgUmVsYXRpb25zXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjZcIiwgXCJcXFxcbGVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBN0RcIiwgXCJcXFxcbGVxc2xhbnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTk1XCIsIFwiXFxcXGVxc2xhbnRsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MlwiLCBcIlxcXFxsZXNzc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NVwiLCBcIlxcXFxsZXNzYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0QVwiLCBcIlxcXFxhcHByb3hlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDZcIiwgXCJcXFxcbGVzc2RvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDhcIiwgXCJcXFxcbGxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3NlwiLCBcIlxcXFxsZXNzZ3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQVwiLCBcIlxcXFxsZXNzZXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThCXCIsIFwiXFxcXGxlc3NlcXFndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXGRvdGVxZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1M1wiLCBcIlxcXFxyaXNpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUyXCIsIFwiXFxcXGZhbGxpbmdkb3RzZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNEXCIsIFwiXFxcXGJhY2tzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkNEXCIsIFwiXFxcXGJhY2tzaW1lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzVcIiwgXCJcXFxcc3Vic2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMFwiLCBcIlxcXFxTdWJzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjhGXCIsIFwiXFxcXHNxc3Vic2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3Q1wiLCBcIlxcXFxwcmVjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREVcIiwgXCJcXFxcY3VybHllcXByZWNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdFXCIsIFwiXFxcXHByZWNzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI3XCIsIFwiXFxcXHByZWNhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIyXCIsIFwiXFxcXHZhcnRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjRcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0ZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkE4XCIsIFwiXFxcXHZEYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBQVwiLCBcIlxcXFxWdmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtYWxsc21pbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMzIyXCIsIFwiXFxcXHNtYWxsZnJvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjRGXCIsIFwiXFxcXGJ1bXBlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEVcIiwgXCJcXFxcQnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2N1wiLCBcIlxcXFxnZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE3RVwiLCBcIlxcXFxnZXFzbGFudFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTZcIiwgXCJcXFxcZXFzbGFudGd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzNcIiwgXCJcXFxcZ3Ryc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4NlwiLCBcIlxcXFxndHJhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQ3XCIsIFwiXFxcXGd0cmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dnXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3N1wiLCBcIlxcXFxndHJsZXNzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEQlwiLCBcIlxcXFxndHJlcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQThDXCIsIFwiXFxcXGd0cmVxcWxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjU2XCIsIFwiXFxcXGVxY2lyY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTdcIiwgXCJcXFxcY2lyY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1Q1wiLCBcIlxcXFx0cmlhbmdsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjNDXCIsIFwiXFxcXHRoaWNrc2ltXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0OFwiLCBcIlxcXFx0aGlja2FwcHJveFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQzZcIiwgXCJcXFxcc3Vwc2V0ZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEMVwiLCBcIlxcXFxTdXBzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjkwXCIsIFwiXFxcXHNxc3Vwc2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3RFwiLCBcIlxcXFxzdWNjY3VybHllcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyREZcIiwgXCJcXFxcY3VybHllcXN1Y2NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdGXCIsIFwiXFxcXHN1Y2NzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI4XCIsIFwiXFxcXHN1Y2NhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkIzXCIsIFwiXFxcXHZhcnRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI1XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRlcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQTlcIiwgXCJcXFxcVmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjIzXCIsIFwiXFxcXHNob3J0bWlkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNVwiLCBcIlxcXFxzaG9ydHBhcmFsbGVsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2Q1wiLCBcIlxcXFxiZXR3ZWVuXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJENFwiLCBcIlxcXFxwaXRjaGZvcmtcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjFEXCIsIFwiXFxcXHZhcnByb3B0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QzBcIiwgXCJcXFxcYmxhY2t0cmlhbmdsZWxlZnRcIik7IC8vIHVuaWNvZGUtbWF0aCBzYXlzIHRoYXQgXFx0aGVyZWZvcmUgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM0XCIsIFwiXFxcXHRoZXJlZm9yZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMERcIiwgXCJcXFxcYmFja2Vwc2lsb25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyNUI2XCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVyaWdodFwiKTsgLy8gdW5pY29kZS1tYXRoIHNheXMgdGhhdCBcXGJlY2F1c2UgaXMgYSBtYXRob3JkIGF0b20uXG4vLyBXZSBrZXB0IHRoZSBhbXNzeW1iIGF0b20gdHlwZSwgd2hpY2ggaXMgcmVsLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjM1XCIsIFwiXFxcXGJlY2F1c2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ4XCIsIFwiXFxcXGxsbGVzc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDlcIiwgXCJcXFxcZ2dndHJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkIyXCIsIFwiXFxcXGxoZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjNcIiwgXCJcXFxccmhkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0MlwiLCBcIlxcXFxlcXNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkM4XCIsIFwiXFxcXEpvaW5cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUxXCIsIFwiXFxcXERvdGVxXCIsIHRydWUpOyAvLyBBTVMgQmluYXJ5IE9wZXJhdG9yc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE0XCIsIFwiXFxcXGRvdHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNtYWxsc2V0bWludXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXENhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcQ3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MkE1RVwiLCBcIlxcXFxkb3VibGViYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUZcIiwgXCJcXFxcYm94bWludXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlFXCIsIFwiXFxcXGJveHBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM3XCIsIFwiXFxcXGRpdmlkZW9udGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM5XCIsIFwiXFxcXGx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0FcIiwgXCJcXFxccnRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQlwiLCBcIlxcXFxsZWZ0dGhyZWV0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQ0NcIiwgXCJcXFxccmlnaHR0aHJlZXRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRlwiLCBcIlxcXFxjdXJseXdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDRVwiLCBcIlxcXFxjdXJseXZlZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOURcIiwgXCJcXFxcY2lyY2xlZGRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMjlCXCIsIFwiXFxcXGNpcmNsZWRhc3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNlbnRlcmRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkFcIiwgXCJcXFxcaW50ZXJjYWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkQyXCIsIFwiXFxcXGRvdWJsZWNhcFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDNcIiwgXCJcXFxcZG91YmxlY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJBMFwiLCBcIlxcXFxib3h0aW1lc1wiLCB0cnVlKTsgLy8gQU1TIEFycm93c1xuLy8gTm90ZTogdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMiB0byB0aGVpciBvd24gZnVuY3Rpb24gXFxyaWdodGRhc2hhcnJvdy5cbi8vIFdlJ2xsIG1hcCBpdCB0byBBTVMgZnVuY3Rpb24gXFxkYXNocmlnaHRhcnJvdy4gSXQgcHJvZHVjZXMgdGhlIHNhbWUgYXRvbS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFFMlwiLCBcIlxcXFxkYXNocmlnaHRhcnJvd1wiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFlMCB0byBcXGxlZnRkYXNoYXJyb3cuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxRTBcIiwgXCJcXFxcZGFzaGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzdcIiwgXCJcXFxcbGVmdGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM2XCIsIFwiXFxcXGxlZnRyaWdodGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxREFcIiwgXCJcXFxcTGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUVcIiwgXCJcXFxcdHdvaGVhZGxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTJcIiwgXCJcXFxcbGVmdGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUJcIiwgXCJcXFxcbG9vcGFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0JcIiwgXCJcXFxcbGVmdHJpZ2h0aGFycG9vbnNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI2XCIsIFwiXFxcXGN1cnZlYXJyb3dsZWZ0XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWJhIHRvIFxcYWN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJBXCIsIFwiXFxcXGNpcmNsZWFycm93bGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjBcIiwgXCJcXFxcTHNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOFwiLCBcIlxcXFx1cHVwYXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRlwiLCBcIlxcXFx1cGhhcnBvb25sZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDM1wiLCBcIlxcXFxkb3duaGFycG9vbmxlZnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkI4XCIsIFwiXFxcXG11bHRpbWFwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRFwiLCBcIlxcXFxsZWZ0cmlnaHRzcXVpZ2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDOVwiLCBcIlxcXFxyaWdodHJpZ2h0YXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDNFwiLCBcIlxcXFxyaWdodGxlZnRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUEwXCIsIFwiXFxcXHR3b2hlYWRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBM1wiLCBcIlxcXFxyaWdodGFycm93dGFpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQUNcIiwgXCJcXFxcbG9vcGFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUI3XCIsIFwiXFxcXGN1cnZlYXJyb3dyaWdodFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjFiYiB0byBcXGN3b3BlbmNpcmNsZWFycm93LiBXZSdsbCB1c2UgdGhlIEFNUyBzeW5vbnltLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJCXCIsIFwiXFxcXGNpcmNsZWFycm93cmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUIxXCIsIFwiXFxcXFJzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQ0FcIiwgXCJcXFxcZG93bmRvd25hcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHVwaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDMlwiLCBcIlxcXFxkb3duaGFycG9vbnJpZ2h0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFERFwiLCBcIlxcXFxyaWdodHNxdWlnYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXGxlYWRzdG9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMURCXCIsIFwiXFxcXFJyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCRVwiLCBcIlxcXFxyZXN0cmljdGlvblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE4XCIsIFwiYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIkXCIsIFwiXFxcXCRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJFwiLCBcIlxcXFwkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiRcIiwgXCJcXFxcdGV4dGRvbGxhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIlXCIsIFwiXFxcXCVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJVwiLCBcIlxcXFwlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJfXCIsIFwiXFxcXF9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiX1wiLCBcIlxcXFx0ZXh0dW5kZXJzY29yZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIwXCIsIFwiXFxcXGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUVcIiwgXCJcXFxcaW5mdHlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAzMlwiLCBcIlxcXFxwcmltZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUIzXCIsIFwiXFxcXHRyaWFuZ2xlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOTNcIiwgXCJcXFxcR2FtbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5NFwiLCBcIlxcXFxEZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMzk4XCIsIFwiXFxcXFRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUJcIiwgXCJcXFxcTGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOUVcIiwgXCJcXFxcWGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDNBMFwiLCBcIlxcXFxQaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0EzXCIsIFwiXFxcXFNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTVcIiwgXCJcXFxcVXBzaWxvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E2XCIsIFwiXFxcXFBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E4XCIsIFwiXFxcXFBzaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0E5XCIsIFwiXFxcXE9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkFcIiwgXCJcXHUwMzkxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkJcIiwgXCJcXHUwMzkyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkVcIiwgXCJcXHUwMzk1XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUwMzk2XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUwMzk3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIklcIiwgXCJcXHUwMzk5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIktcIiwgXCJcXHUwMzlBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk1cIiwgXCJcXHUwMzlDXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk5cIiwgXCJcXHUwMzlEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIk9cIiwgXCJcXHUwMzlGXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUwM0ExXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlRcIiwgXCJcXHUwM0E0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlhcIiwgXCJcXHUwM0E3XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXG5lZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBQ1wiLCBcIlxcXFxsbm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTRcIiwgXCJcXFxcdG9wXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyQTVcIiwgXCJcXFxcYm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDVcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjA1XCIsIFwiXFxcXHZhcm5vdGhpbmdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjFcIiwgXCJcXFxcYWxwaGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjJcIiwgXCJcXFxcYmV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCM1wiLCBcIlxcXFxnYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCNFwiLCBcIlxcXFxkZWx0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGNVwiLCBcIlxcXFxlcHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I2XCIsIFwiXFxcXHpldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjdcIiwgXCJcXFxcZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I4XCIsIFwiXFxcXHRoZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I5XCIsIFwiXFxcXGlvdGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkFcIiwgXCJcXFxca2FwcGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkJcIiwgXCJcXFxcbGFtYmRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JDXCIsIFwiXFxcXG11XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JEXCIsIFwiXFxcXG51XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JFXCIsIFwiXFxcXHhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0JGXCIsIFwiXFxcXG9taWNyb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzBcIiwgXCJcXFxccGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzFcIiwgXCJcXFxccmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MzXCIsIFwiXFxcXHNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M0XCIsIFwiXFxcXHRhdVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDNVwiLCBcIlxcXFx1cHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0Q1XCIsIFwiXFxcXHBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDN1wiLCBcIlxcXFxjaGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzhcIiwgXCJcXFxccHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M5XCIsIFwiXFxcXG9tZWdhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I1XCIsIFwiXFxcXHZhcmVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDFcIiwgXCJcXFxcdmFydGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDZcIiwgXCJcXFxcdmFycGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRjFcIiwgXCJcXFxcdmFycmhvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0MyXCIsIFwiXFxcXHZhcnNpZ21hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M2XCIsIFwiXFxcXHZhcnBoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE3XCIsIFwiKlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCIrXCIsIFwiK1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjEyXCIsIFwiLVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMkM1XCIsIFwiXFxcXGNkb3RcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIxOFwiLCBcIlxcXFxjaXJjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxceEY3XCIsIFwiXFxcXGRpdlwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhCMVwiLCBcIlxcXFxwbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHhEN1wiLCBcIlxcXFx0aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI5XCIsIFwiXFxcXGNhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjJBXCIsIFwiXFxcXGN1cFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE2XCIsIFwiXFxcXHNldG1pbnVzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjdcIiwgXCJcXFxcbGFuZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI4XCIsIFwiXFxcXGxvclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjI3XCIsIFwiXFxcXHdlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjhcIiwgXCJcXFxcdmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMUFcIiwgXCJcXFxcc3VyZFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCIoXCIsIFwiKFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJbXCIsIFwiW1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyN0U4XCIsIFwiXFxcXGxhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMjIzXCIsIFwiXFxcXGx2ZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTIyMjVcIiwgXCJcXFxcbFZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIilcIiwgXCIpXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJdXCIsIFwiXVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiP1wiLCBcIj9cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIiFcIiwgXCIhXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyN0U5XCIsIFwiXFxcXHJhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyM1wiLCBcIlxcXFxydmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjIyNVwiLCBcIlxcXFxyVmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI9XCIsIFwiPVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI8XCIsIFwiPFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI+XCIsIFwiPlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI6XCIsIFwiOlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ4XCIsIFwiXFxcXGFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjQ1XCIsIFwiXFxcXGNvbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NVwiLCBcIlxcXFxnZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjY1XCIsIFwiXFxcXGdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkwXCIsIFwiXFxcXGdldHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPlwiLCBcIlxcXFxndFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjA4XCIsIFwiXFxcXGluXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdUUwMjBcIiwgXCJcXFxcQG5vdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgyXCIsIFwiXFxcXHN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjgzXCIsIFwiXFxcXHN1cHNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjg2XCIsIFwiXFxcXHN1YnNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODdcIiwgXCJcXFxcc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjg4XCIsIFwiXFxcXG5zdWJzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODlcIiwgXCJcXFxcbnN1cHNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQThcIiwgXCJcXFxcbW9kZWxzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTBcIiwgXCJcXFxcbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjRcIiwgXCJcXFxcbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiPFwiLCBcIlxcXFxsdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5MlwiLCBcIlxcXFx0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzFcIiwgXCJcXFxcbmdlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNzBcIiwgXCJcXFxcbmxlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTsgLy8gUmVmOiBMYVRlWCBTb3VyY2UgMmU6IFxcRGVjbGFyZVJvYnVzdENvbW1hbmR7XFxub2JyZWFrc3BhY2V9eyVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXG5vYnJlYWtzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFwgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIlxcXFxub2JyZWFrc3BhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXG5vYnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIG51bGwsIFwiXFxcXGFsbG93YnJlYWtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBwdW5jdCwgXCIsXCIsIFwiLFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIjtcIiwgXCI7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQ1wiLCBcIlxcXFxiYXJ3ZWRnZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQkJcIiwgXCJcXFxcdmVlYmFyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTlcIiwgXCJcXFxcb2RvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk1XCIsIFwiXFxcXG9wbHVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTdcIiwgXCJcXFxcb3RpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDJcIiwgXCJcXFxccGFydGlhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk4XCIsIFwiXFxcXG9zbGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUFcIiwgXCJcXFxcY2lyY2xlZGNpcmNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkExXCIsIFwiXFxcXGJveGRvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUIzXCIsIFwiXFxcXGJpZ3RyaWFuZ2xldXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjVCRFwiLCBcIlxcXFxiaWd0cmlhbmdsZWRvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjAyMFwiLCBcIlxcXFxkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjJDNFwiLCBcIlxcXFxkaWFtb25kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyQzZcIiwgXCJcXFxcc3RhclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUMzXCIsIFwiXFxcXHRyaWFuZ2xlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUI5XCIsIFwiXFxcXHRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwie1wiLCBcIlxcXFx7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIntcIiwgXCJcXFxce1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ7XCIsIFwiXFxcXHRleHRicmFjZWxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIn1cIiwgXCJcXFxcfVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ9XCIsIFwiXFxcXH1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifVwiLCBcIlxcXFx0ZXh0YnJhY2VyaWdodFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJ7XCIsIFwiXFxcXGxicmFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwifVwiLCBcIlxcXFxyYnJhY2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiW1wiLCBcIlxcXFxsYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIihcIiwgXCJcXFxcbHBhcmVuXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCIpXCIsIFwiXFxcXHJwYXJlblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI8XCIsIFwiXFxcXHRleHRsZXNzXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMzBBXCIsIFwiXFxcXGxmbG9vclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwQlwiLCBcIlxcXFxyZmxvb3JcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjMwOFwiLCBcIlxcXFxsY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjMwOVwiLCBcIlxcXFxyY2VpbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXFxcXCIsIFwiXFxcXGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwifFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjIzXCIsIFwiXFxcXHZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwifFwiLCBcIlxcXFx0ZXh0YmFyXCIpOyAvLyBpbiBUMSBmb250ZW5jXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjI1XCIsIFwiXFxcXHxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIyNVwiLCBcIlxcXFxWZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcdGV4dGJhcmRibFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ+XCIsIFwiXFxcXHRleHRhc2NpaXRpbGRlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcXFxcIiwgXCJcXFxcdGV4dGJhY2tzbGFzaFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJeXCIsIFwiXFxcXHRleHRhc2NpaWNpcmN1bVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkxXCIsIFwiXFxcXHVwYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEMVwiLCBcIlxcXFxVcGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTNcIiwgXCJcXFxcZG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxRDNcIiwgXCJcXFxcRG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTVcIiwgXCJcXFxcdXBkb3duYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFENVwiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMTBcIiwgXCJcXFxcY29wcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDMVwiLCBcIlxcXFxiaWd2ZWVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMwXCIsIFwiXFxcXGJpZ3dlZGdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwNFwiLCBcIlxcXFxiaWd1cGx1c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyQzJcIiwgXCJcXFxcYmlnY2FwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDM1wiLCBcIlxcXFxiaWdjdXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJCXCIsIFwiXFxcXGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkJcIiwgXCJcXFxcaW50b3BcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJDXCIsIFwiXFxcXGlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJEXCIsIFwiXFxcXGlpaW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIwRlwiLCBcIlxcXFxwcm9kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIxMVwiLCBcIlxcXFxzdW1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAyXCIsIFwiXFxcXGJpZ290aW1lc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDFcIiwgXCJcXFxcYmlnb3BsdXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTAwXCIsIFwiXFxcXGJpZ29kb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJFXCIsIFwiXFxcXG9pbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJGXCIsIFwiXFxcXG9paW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIzMFwiLCBcIlxcXFxvaWlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTA2XCIsIFwiXFxcXGJpZ3NxY3VwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxzbWFsbGludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjAyNlwiLCBcIlxcXFx0ZXh0ZWxsaXBzaXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbWF0aGVsbGlwc2lzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXGxkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMkVGXCIsIFwiXFxcXEBjZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjJGMVwiLCBcIlxcXFxkZG90c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMkVFXCIsIFwiXFxcXHZhcnZkb3RzXCIpOyAvLyBcXHZkb3RzIGlzIGEgbWFjcm9cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQVwiLCBcIlxcXFxhY3V0ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0JcIiwgXCJcXFxcZ3JhdmVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHhBOFwiLCBcIlxcXFxkZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiflwiLCBcIlxcXFx0aWxkZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzlcIiwgXCJcXFxcYmFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOFwiLCBcIlxcXFxicmV2ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzdcIiwgXCJcXFxcY2hlY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJeXCIsIFwiXFxcXGhhdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTIwRDdcIiwgXCJcXFxcdmVjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOVwiLCBcIlxcXFxkb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkRBXCIsIFwiXFxcXG1hdGhyaW5nXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMTMxXCIsIFwiXFxcXGltYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGptYXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxMzFcIiwgXCJcXFxcaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMjM3XCIsIFwiXFxcXGpcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4REZcIiwgXCJcXFxcc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RTZcIiwgXCJcXFxcYWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDE1M1wiLCBcIlxcXFxvZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhGOFwiLCBcIlxcXFxvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEM2XCIsIFwiXFxcXEFFXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAxNTJcIiwgXCJcXFxcT0VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4RDhcIiwgXCJcXFxcT1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQ0FcIiwgXCJcXFxcJ1wiKTsgLy8gYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQlwiLCBcIlxcXFxgXCIpOyAvLyBncmF2ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM2XCIsIFwiXFxcXF5cIik7IC8vIGNpcmN1bWZsZXhcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEQ1wiLCBcIlxcXFx+XCIpOyAvLyB0aWxkZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM5XCIsIFwiXFxcXD1cIik7IC8vIG1hY3JvblxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXHVcIik7IC8vIGJyZXZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyRDlcIiwgXCJcXFxcLlwiKTsgLy8gZG90IGFib3ZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyREFcIiwgXCJcXFxcclwiKTsgLy8gcmluZyBhYm92ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkM3XCIsIFwiXFxcXHZcIik7IC8vIGNhcm9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxceEE4XCIsICdcXFxcXCInKTsgLy8gZGlhcmVzaXNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJERFwiLCBcIlxcXFxIXCIpOyAvLyBkb3VibGUgYWN1dGVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MjVFRlwiLCBcIlxcXFx0ZXh0Y2lyY2xlZFwiKTsgLy8gXFxiaWdjaXJjIGdseXBoXG4vLyBUaGVzZSBsaWdhdHVyZXMgYXJlIGRldGVjdGVkIGFuZCBjcmVhdGVkIGluIFBhcnNlci5qcydzIGBmb3JtTGlnYXR1cmVzYC5cblxudmFyIGxpZ2F0dXJlcyA9IHtcbiAgXCItLVwiOiB0cnVlLFxuICBcIi0tLVwiOiB0cnVlLFxuICBcImBgXCI6IHRydWUsXG4gIFwiJydcIjogdHJ1ZVxufTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwiLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxM1wiLCBcIlxcXFx0ZXh0ZW5kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCItLS1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxNFwiLCBcIlxcXFx0ZXh0ZW1kYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJcXFxcdGV4dHF1b3RlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiJ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwiXFxcXHRleHRxdW90ZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCJgYFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDFDXCIsIFwiXFxcXHRleHRxdW90ZWRibGxlZnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIicnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMURcIiwgXCJcXFxcdGV4dHF1b3RlZGJscmlnaHRcIik7IC8vICBcXGRlZ3JlZSBmcm9tIGdlbnN5bWIgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcZGVncmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEIwXCIsIFwiXFxcXGRlZ3JlZVwiKTsgLy8gXFx0ZXh0ZGVncmVlIGZyb20gaW5wdXRlbmMgcGFja2FnZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcdGV4dGRlZ3JlZVwiLCB0cnVlKTsgLy8gVE9ETzogSW4gTGFUZVgsIFxccG91bmRzIGNhbiBnZW5lcmF0ZSBhIGRpZmZlcmVudCBjaGFyYWN0ZXIgaW4gdGV4dCBhbmQgbWF0aFxuLy8gbW9kZSwgYnV0IGFtb25nIG91ciBmb250cywgb25seSBNYWluLUl0YWxpYyBkZWZpbmVzIHRoaXMgY2hhcmFjdGVyIFwiMTYzXCIuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHhBM1wiLCBcIlxcXFxtYXRoc3RlcmxpbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBtYXRob3JkLCBcIlxceEEzXCIsIFwiXFxcXHBvdW5kc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxcdGV4dHN0ZXJsaW5nXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjcyMFwiLCBcIlxcXFxtYWx0ZXNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCIgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiflwiKTsgLy8gVGhlcmUgYXJlIGxvdHMgb2Ygc3ltYm9scyB3aGljaCBhcmUgdGhlIHNhbWUsIHNvIHdlIGFkZCB0aGVtIGluIGFmdGVyd2FyZHMuXG4vLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIG1hdGggbW9kZVxuXG52YXIgbWF0aFRleHRTeW1ib2xzID0gXCIwMTIzNDU2Nzg5L0AuXFxcIlwiO1xuXG5mb3IgKHZhciBzeW1ib2xzX2kgPSAwOyBzeW1ib2xzX2kgPCBtYXRoVGV4dFN5bWJvbHMubGVuZ3RoOyBzeW1ib2xzX2krKykge1xuICB2YXIgc3ltYm9sc19jaCA9IG1hdGhUZXh0U3ltYm9scy5jaGFyQXQoc3ltYm9sc19pKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBzeW1ib2xzX2NoLCBzeW1ib2xzX2NoKTtcbn0gLy8gQWxsIG9mIHRoZXNlIGFyZSB0ZXh0b3JkcyBpbiB0ZXh0IG1vZGVcblxuXG52YXIgdGV4dFN5bWJvbHMgPSBcIjAxMjM0NTY3ODkhQCooKS09K1tdPD58XFxcIjs6Py8uLFwiO1xuXG5mb3IgKHZhciBzcmNfc3ltYm9sc19pID0gMDsgc3JjX3N5bWJvbHNfaSA8IHRleHRTeW1ib2xzLmxlbmd0aDsgc3JjX3N5bWJvbHNfaSsrKSB7XG4gIHZhciBfY2ggPSB0ZXh0U3ltYm9scy5jaGFyQXQoc3JjX3N5bWJvbHNfaSk7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gsIF9jaCk7XG59IC8vIEFsbCBvZiB0aGVzZSBhcmUgdGV4dG9yZHMgaW4gdGV4dCBtb2RlLCBhbmQgbWF0aG9yZHMgaW4gbWF0aCBtb2RlXG5cblxudmFyIGxldHRlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZm9yICh2YXIgc3ltYm9sc19pMiA9IDA7IHN5bWJvbHNfaTIgPCBsZXR0ZXJzLmxlbmd0aDsgc3ltYm9sc19pMisrKSB7XG4gIHZhciBfY2gyID0gbGV0dGVycy5jaGFyQXQoc3ltYm9sc19pMik7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMiwgX2NoMik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMiwgX2NoMik7XG59IC8vIEJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0IGxldHRlcnMgaW4gVW5pY29kZSByYW5nZVxuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkNcIiwgXCJcXHUyMTAyXCIpOyAvLyBibGFja2JvYXJkIGJvbGRcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiQ1wiLCBcIlxcdTIxMDJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJIXCIsIFwiXFx1MjEwRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUyMTBEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiTlwiLCBcIlxcdTIxMTVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJOXCIsIFwiXFx1MjExNVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlBcIiwgXCJcXHUyMTE5XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUFwiLCBcIlxcdTIxMTlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJRXCIsIFwiXFx1MjExQVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlFcIiwgXCJcXHUyMTFBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUlwiLCBcIlxcdTIxMURcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJSXCIsIFwiXFx1MjExRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlpcIiwgXCJcXHUyMTI0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiWlwiLCBcIlxcdTIxMjRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcImhcIiwgXCJcXHUyMTBFXCIpOyAvLyBpdGFsaWMgaCwgUGxhbmNrIGNvbnN0YW50XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiaFwiLCBcIlxcdTIxMEVcIik7IC8vIFRoZSBuZXh0IGxvb3AgbG9hZHMgd2lkZSAoc3Vycm9nYXRlIHBhaXIpIGNoYXJhY3RlcnMuXG4vLyBXZSBzdXBwb3J0IHNvbWUgbGV0dGVycyBpbiB0aGUgVW5pY29kZSByYW5nZSBVKzFENDAwIHRvIFUrMUQ3RkYsXG4vLyBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMuXG4vLyBTb21lIGVkaXRvcnMgZG8gbm90IGRlYWwgd2VsbCB3aXRoIHdpZGUgY2hhcmFjdGVycy4gU28gZG9uJ3Qgd3JpdGUgdGhlXG4vLyBzdHJpbmcgaW50byB0aGlzIGZpbGUuIEluc3RlYWQsIGNyZWF0ZSB0aGUgc3RyaW5nIGZyb20gdGhlIHN1cnJvZ2F0ZSBwYWlyLlxuXG52YXIgc3ltYm9sc193aWRlQ2hhciA9IFwiXCI7XG5cbmZvciAodmFyIHN5bWJvbHNfaTMgPSAwOyBzeW1ib2xzX2kzIDwgbGV0dGVycy5sZW5ndGg7IHN5bWJvbHNfaTMrKykge1xuICB2YXIgX2NoMyA9IGxldHRlcnMuY2hhckF0KHN5bWJvbHNfaTMpOyAvLyBUaGUgaGV4IG51bWJlcnMgaW4gdGhlIG5leHQgbGluZSBhcmUgYSBzdXJyb2dhdGUgcGFpci5cbiAgLy8gMHhEODM1IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBmb3IgYWxsIGxldHRlcnMgaW4gdGhlIHJhbmdlIHdlIHN1cHBvcnQuXG4gIC8vIDB4REMwMCBpcyB0aGUgbG93IHN1cnJvZ2F0ZSBmb3IgYm9sZCBBLlxuXG5cbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDMDAgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBib2xkXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzM0ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEQzY4ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogYm9sZCBpdGFsaWNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMDQgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBGcmFjdHVyXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEREEwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogc2Fucy1zZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4RERENCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REUwOCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IHNhbnMgaXRhbGljXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERTcwICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogbW9ub3NwYWNlXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG5cbiAgaWYgKHN5bWJvbHNfaTMgPCAyNikge1xuICAgIC8vIEthVGVYIGZvbnRzIGhhdmUgb25seSBjYXBpdGFsIGxldHRlcnMgZm9yIGJsYWNrYm9hcmQgYm9sZCBhbmQgc2NyaXB0LlxuICAgIC8vIFNlZSBleGNlcHRpb24gZm9yIGsgYmVsb3cuXG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREMzggKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGRvdWJsZSBzdHJ1Y2tcblxuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICAgIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDOUMgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIHNjcmlwdFxuXG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgfSAvLyBUT0RPOiBBZGQgYm9sZCBzY3JpcHQgd2hlbiBpdCBpcyBzdXBwb3J0ZWQgYnkgYSBLYVRlWCBmb250LlxuXG59IC8vIFwia1wiIGlzIHRoZSBvbmx5IGRvdWJsZSBzdHJ1Y2sgbG93ZXIgY2FzZSBsZXR0ZXIgaW4gdGhlIEthVGVYIGZvbnRzLlxuXG5cbnN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERDVDKTsgLy8gayBkb3VibGUgc3RydWNrXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwia1wiLCBzeW1ib2xzX3dpZGVDaGFyKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJrXCIsIHN5bWJvbHNfd2lkZUNoYXIpOyAvLyBOZXh0LCBzb21lIHdpZGUgY2hhcmFjdGVyIG51bWVyYWxzXG5cbmZvciAodmFyIHN5bWJvbHNfaTQgPSAwOyBzeW1ib2xzX2k0IDwgMTA7IHN5bWJvbHNfaTQrKykge1xuICB2YXIgX2NoNCA9IHN5bWJvbHNfaTQudG9TdHJpbmcoKTtcblxuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZDRSArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZFxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFMiArIHN5bWJvbHNfaTQpOyAvLyAwLTkgc2FucyBzZXJpZlxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REZFQyArIHN5bWJvbHNfaTQpOyAvLyAwLTkgYm9sZCBzYW5zXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkY2ICsgc3ltYm9sc19pNCk7IC8vIDAtOSBtb25vc3BhY2VcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbn0gLy8gV2UgYWRkIHRoZXNlIExhdGluLTEgbGV0dGVycyBhcyBzeW1ib2xzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSxcbi8vIGJ1dCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlIGZvbnQsIG5vciBhcmUgdGhleSBzdXBwb3J0ZWQgYnkgdGhlXG4vLyBVbmljb2RlIGFjY2VudCBtZWNoYW5pc20sIHNvIHRoZXkgZmFsbCBiYWNrIHRvIFRpbWVzIGZvbnQgYW5kIGxvb2sgdWdseS5cbi8vIFRPRE8oZWRlbWFpbmUpOiBGaXggdGhpcy5cblxuXG52YXIgZXh0cmFMYXRpbiA9IFwiw4fDkMOew6fDvlwiO1xuXG5mb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBleHRyYUxhdGluLmxlbmd0aDsgX2k1KyspIHtcbiAgdmFyIF9jaDUgPSBleHRyYUxhdGluLmNoYXJBdChfaTUpO1xuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDUsIF9jaDUpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDUsIF9jaDUpO1xufVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiw7BcIiwgXCLDsFwiKTsgLy8gVW5pY29kZSB2ZXJzaW9ucyBvZiBleGlzdGluZyBjaGFyYWN0ZXJzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwi4oCTXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTRcIiwgXCLigJRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxOFwiLCBcIuKAmFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE5XCIsIFwi4oCZXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCLigJxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIuKAnVwiKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3dpZGUtY2hhcmFjdGVyLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBVbmljb2RlIHJhbmdlIFUrMUQ0MDAgdG8gVSsxRDdGRixcbiAqIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scy5cbiAqXG4gKiBGdW5jdGlvbiB3aWRlQ2hhcmFjdGVyRm9udCB0YWtlcyBhIHdpZGUgY2hhcmFjdGVyIGFzIGlucHV0IGFuZCByZXR1cm5zXG4gKiB0aGUgZm9udCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gcmVuZGVyIGl0IHByb3Blcmx5LlxuICovXG5cbi8qKlxuICogRGF0YSBiZWxvdyBpcyBmcm9tIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL2NoYXJ0cy9QREYvVTFENDAwLnBkZlxuICogVGhhdCBkb2N1bWVudCBzb3J0cyBjaGFyYWN0ZXJzIGludG8gZ3JvdXBzIGJ5IGZvbnQgdHlwZSwgc2F5IGJvbGQgb3IgaXRhbGljLlxuICpcbiAqIEluIHRoZSBhcnJheXMgYmVsb3csIGVhY2ggc3ViYXJyYXkgY29uc2lzdHMgdGhyZWUgZWxlbWVudHM6XG4gKiAgICAgICogVGhlIENTUyBjbGFzcyBvZiB0aGF0IGdyb3VwIHdoZW4gaW4gbWF0aCBtb2RlLlxuICogICAgICAqIFRoZSBDU1MgY2xhc3Mgb2YgdGhhdCBncm91cCB3aGVuIGluIHRleHQgbW9kZS5cbiAqICAgICAgKiBUaGUgZm9udCBuYW1lLCBzbyB0aGF0IEthVGVYIGNhbiBnZXQgZm9udCBtZXRyaWNzLlxuICovXG5cbnZhciB3aWRlTGF0aW5MZXR0ZXJEYXRhID0gW1tcIm1hdGhiZlwiLCBcInRleHRiZlwiLCBcIk1haW4tQm9sZFwiXSwgLy8gQS1aIGJvbGQgdXByaWdodFxuW1wibWF0aGJmXCIsIFwidGV4dGJmXCIsIFwiTWFpbi1Cb2xkXCJdLCAvLyBhLXogYm9sZCB1cHJpZ2h0XG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBBLVogaXRhbGljXG5bXCJtYXRoZGVmYXVsdFwiLCBcInRleHRpdFwiLCBcIk1hdGgtSXRhbGljXCJdLCAvLyBhLXogaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gQS1aIGJvbGQgaXRhbGljXG5bXCJib2xkc3ltYm9sXCIsIFwiYm9sZHN5bWJvbFwiLCBcIk1haW4tQm9sZEl0YWxpY1wiXSwgLy8gYS16IGJvbGQgaXRhbGljXG4vLyBNYXAgZmFuY3kgQS1aIGxldHRlcnMgdG8gc2NyaXB0LCBub3QgY2FsbGlncmFwaGljLlxuLy8gVGhpcyBhbGlnbnMgd2l0aCB1bmljb2RlLW1hdGggYW5kIG1hdGggZm9udHMgKGV4Y2VwdCBDYW1icmlhIE1hdGgpLlxuW1wibWF0aHNjclwiLCBcInRleHRzY3JcIiwgXCJTY3JpcHQtUmVndWxhclwiXSwgLy8gQS1aIHNjcmlwdFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogc2NyaXB0LiAgTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBzY3JpcHQuIE5vIGZvbnRcbltcIlwiLCBcIlwiLCBcIlwiXSwgLy8gYS16IGJvbGQgc2NyaXB0LiBObyBmb250XG5bXCJtYXRoZnJha1wiLCBcInRleHRmcmFrXCIsIFwiRnJha3R1ci1SZWd1bGFyXCJdLCAvLyBBLVogRnJha3R1clxuW1wibWF0aGZyYWtcIiwgXCJ0ZXh0ZnJha1wiLCBcIkZyYWt0dXItUmVndWxhclwiXSwgLy8gYS16IEZyYWt0dXJcbltcIm1hdGhiYlwiLCBcInRleHRiYlwiLCBcIkFNUy1SZWd1bGFyXCJdLCAvLyBBLVogZG91YmxlLXN0cnVja1xuW1wibWF0aGJiXCIsIFwidGV4dGJiXCIsIFwiQU1TLVJlZ3VsYXJcIl0sIC8vIGsgZG91YmxlLXN0cnVja1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBGcmFrdHVyIE5vIGZvbnQgbWV0cmljc1xuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBGcmFrdHVyLiAgIE5vIGZvbnQuXG5bXCJtYXRoc2ZcIiwgXCJ0ZXh0c2ZcIiwgXCJTYW5zU2VyaWYtUmVndWxhclwiXSwgLy8gQS1aIHNhbnMtc2VyaWZcbltcIm1hdGhzZlwiLCBcInRleHRzZlwiLCBcIlNhbnNTZXJpZi1SZWd1bGFyXCJdLCAvLyBhLXogc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gQS1aIGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGJvbGRzZlwiLCBcInRleHRib2xkc2ZcIiwgXCJTYW5zU2VyaWYtQm9sZFwiXSwgLy8gYS16IGJvbGQgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIEEtWiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wibWF0aGl0c2ZcIiwgXCJ0ZXh0aXRzZlwiLCBcIlNhbnNTZXJpZi1JdGFsaWNcIl0sIC8vIGEteiBpdGFsaWMgc2Fucy1zZXJpZlxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBBLVogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBpdGFsaWMgc2Fucy4gTm8gZm9udFxuW1wibWF0aHR0XCIsIFwidGV4dHR0XCIsIFwiVHlwZXdyaXRlci1SZWd1bGFyXCJdLCAvLyBBLVogbW9ub3NwYWNlXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVOdW1lcmFsRGF0YSA9IFtbXCJtYXRoYmZcIiwgXCJ0ZXh0YmZcIiwgXCJNYWluLUJvbGRcIl0sIC8vIDAtOSBib2xkXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIDAtOSBkb3VibGUtc3RydWNrLiBObyBLYVRlWCBmb250LlxuW1wibWF0aHNmXCIsIFwidGV4dHNmXCIsIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIl0sIC8vIDAtOSBzYW5zLXNlcmlmXG5bXCJtYXRoYm9sZHNmXCIsIFwidGV4dGJvbGRzZlwiLCBcIlNhbnNTZXJpZi1Cb2xkXCJdLCAvLyAwLTkgYm9sZCBzYW5zLXNlcmlmXG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl1dO1xudmFyIHdpZGVfY2hhcmFjdGVyX3dpZGVDaGFyYWN0ZXJGb250ID0gZnVuY3Rpb24gd2lkZUNoYXJhY3RlckZvbnQod2lkZUNoYXIsIG1vZGUpIHtcbiAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGNvZGVQb2ludEF0KCkuIFNvIHdvcmsgd2l0aCB0aGUgc3Vycm9nYXRlIHBhaXIuXG4gIHZhciBIID0gd2lkZUNoYXIuY2hhckNvZGVBdCgwKTsgLy8gaGlnaCBzdXJyb2dhdGVcblxuICB2YXIgTCA9IHdpZGVDaGFyLmNoYXJDb2RlQXQoMSk7IC8vIGxvdyBzdXJyb2dhdGVcblxuICB2YXIgY29kZVBvaW50ID0gKEggLSAweEQ4MDApICogMHg0MDAgKyAoTCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB2YXIgaiA9IG1vZGUgPT09IFwibWF0aFwiID8gMCA6IDE7IC8vIGNvbHVtbiBpbmRleCBmb3IgQ1NTIGNsYXNzLlxuXG4gIGlmICgweDFENDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPCAweDFENkE0KSB7XG4gICAgLy8gd2lkZUxhdGluTGV0dGVyRGF0YSBjb250YWlucyBleGFjdGx5IDI2IGNoYXJzIG9uIGVhY2ggcm93LlxuICAgIC8vIFNvIHdlIGNhbiBjYWxjdWxhdGUgdGhlIHJlbGV2YW50IHJvdy4gTm8gdHJhdmVyc2UgbmVjZXNzYXJ5LlxuICAgIHZhciBpID0gTWF0aC5mbG9vcigoY29kZVBvaW50IC0gMHgxRDQwMCkgLyAyNik7XG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhW2ldW2pdXTtcbiAgfSBlbHNlIGlmICgweDFEN0NFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRDdGRikge1xuICAgIC8vIE51bWVyYWxzLCB0ZW4gcGVyIHJvdy5cbiAgICB2YXIgX2kgPSBNYXRoLmZsb29yKChjb2RlUG9pbnQgLSAweDFEN0NFKSAvIDEwKTtcblxuICAgIHJldHVybiBbd2lkZU51bWVyYWxEYXRhW19pXVsyXSwgd2lkZU51bWVyYWxEYXRhW19pXVtqXV07XG4gIH0gZWxzZSBpZiAoY29kZVBvaW50ID09PSAweDFENkE1IHx8IGNvZGVQb2ludCA9PT0gMHgxRDZBNikge1xuICAgIC8vIGRvdGxlc3MgaSBvciBqXG4gICAgcmV0dXJuIFt3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdWzJdLCB3aWRlTGF0aW5MZXR0ZXJEYXRhWzBdW2pdXTtcbiAgfSBlbHNlIGlmICgweDFENkE2IDwgY29kZVBvaW50ICYmIGNvZGVQb2ludCA8IDB4MUQ3Q0UpIHtcbiAgICAvLyBHcmVlayBsZXR0ZXJzLiBOb3Qgc3VwcG9ydGVkLCB5ZXQuXG4gICAgcmV0dXJuIFtcIlwiLCBcIlwiXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGFueSB3aWRlIGNoYXJhY3RlcnMgb3V0c2lkZSAxRDQwMOKAkzFEN0ZGLlxuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgKyB3aWRlQ2hhcik7XG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9PcHRpb25zLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyB0aGF0IHRoZSBQYXJzZXIgY2Fycmllc1xuICogYXJvdW5kIHdpdGggaXQgd2hpbGUgcGFyc2luZy4gRGF0YSBpcyBoZWxkIGluIGFuIGBPcHRpb25zYCBvYmplY3QsIGFuZCB3aGVuXG4gKiByZWN1cnNpbmcsIGEgbmV3IGBPcHRpb25zYCBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUgYC53aXRoKmAgYW5kXG4gKiBgLnJlc2V0YCBmdW5jdGlvbnMuXG4gKi9cblxudmFyIHNpemVTdHlsZU1hcCA9IFsvLyBFYWNoIGVsZW1lbnQgY29udGFpbnMgW3RleHRzaXplLCBzY3JpcHRzaXplLCBzY3JpcHRzY3JpcHRzaXplXS5cbi8vIFRoZSBzaXplIG1hcHBpbmdzIGFyZSB0YWtlbiBmcm9tIFRlWCB3aXRoIFxcbm9ybWFsc2l6ZT0xMHB0LlxuWzEsIDEsIDFdLCAvLyBzaXplMTogWzUsIDUsIDVdICAgICAgICAgICAgICBcXHRpbnlcblsyLCAxLCAxXSwgLy8gc2l6ZTI6IFs2LCA1LCA1XVxuWzMsIDEsIDFdLCAvLyBzaXplMzogWzcsIDUsIDVdICAgICAgICAgICAgICBcXHNjcmlwdHNpemVcbls0LCAyLCAxXSwgLy8gc2l6ZTQ6IFs4LCA2LCA1XSAgICAgICAgICAgICAgXFxmb290bm90ZXNpemVcbls1LCAyLCAxXSwgLy8gc2l6ZTU6IFs5LCA2LCA1XSAgICAgICAgICAgICAgXFxzbWFsbFxuWzYsIDMsIDFdLCAvLyBzaXplNjogWzEwLCA3LCA1XSAgICAgICAgICAgICBcXG5vcm1hbHNpemVcbls3LCA0LCAyXSwgLy8gc2l6ZTc6IFsxMiwgOCwgNl0gICAgICAgICAgICAgXFxsYXJnZVxuWzgsIDYsIDNdLCAvLyBzaXplODogWzE0LjQsIDEwLCA3XSAgICAgICAgICBcXExhcmdlXG5bOSwgNywgNl0sIC8vIHNpemU5OiBbMTcuMjgsIDEyLCAxMF0gICAgICAgIFxcTEFSR0VcblsxMCwgOCwgN10sIC8vIHNpemUxMDogWzIwLjc0LCAxNC40LCAxMl0gICAgIFxcaHVnZVxuWzExLCAxMCwgOV1dO1xudmFyIHNpemVNdWx0aXBsaWVycyA9IFsvLyBmb250TWV0cmljcy5qczpnZXRHbG9iYWxNZXRyaWNzIGFsc28gdXNlcyBzaXplIGluZGV4ZXMsIHNvIGlmXG4vLyB5b3UgY2hhbmdlIHNpemUgaW5kZXhlcywgY2hhbmdlIHRoYXQgZnVuY3Rpb24uXG4wLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMS4wLCAxLjIsIDEuNDQsIDEuNzI4LCAyLjA3NCwgMi40ODhdO1xuXG52YXIgc2l6ZUF0U3R5bGUgPSBmdW5jdGlvbiBzaXplQXRTdHlsZShzaXplLCBzdHlsZSkge1xuICByZXR1cm4gc3R5bGUuc2l6ZSA8IDIgPyBzaXplIDogc2l6ZVN0eWxlTWFwW3NpemUgLSAxXVtzdHlsZS5zaXplIC0gMV07XG59OyAvLyBJbiB0aGVzZSB0eXBlcywgXCJcIiAoZW1wdHkgc3RyaW5nKSBtZWFucyBcIm5vIGNoYW5nZVwiLlxuXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBvcHRpb25zIGNsYXNzLiBJdCBjb250YWlucyB0aGUgY3VycmVudCBzdHlsZSwgc2l6ZSwgY29sb3IsXG4gKiBhbmQgZm9udC5cbiAqXG4gKiBPcHRpb25zIG9iamVjdHMgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4gVG8gY3JlYXRlIGEgbmV3IE9wdGlvbnMgd2l0aFxuICogZGlmZmVyZW50IHByb3BlcnRpZXMsIGNhbGwgYSBgLmhhdmluZypgIG1ldGhvZC5cbiAqL1xudmFyIE9wdGlvbnNfT3B0aW9ucyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIEEgZm9udCBmYW1pbHkgYXBwbGllcyB0byBhIGdyb3VwIG9mIGZvbnRzIChpLmUuIFNhbnNTZXJpZiksIHdoaWxlIGEgZm9udFxuICAvLyByZXByZXNlbnRzIGEgc3BlY2lmaWMgZm9udCAoaS5lLiBTYW5zU2VyaWYgQm9sZCkuXG4gIC8vIFNlZTogaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzIyMzUwL2RpZmZlcmVuY2UtYmV0d2Vlbi10ZXh0cm0tYW5kLW1hdGhybVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBzaXplIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gT3B0aW9ucyhkYXRhKSB7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbG9yID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMucGhhbnRvbSA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnQgPSB2b2lkIDA7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnRTaGFwZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNpemVNdWx0aXBsaWVyID0gdm9pZCAwO1xuICAgIHRoaXMubWF4U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1pblJ1bGVUaGlja25lc3MgPSB2b2lkIDA7XG4gICAgdGhpcy5fZm9udE1ldHJpY3MgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IGRhdGEuc3R5bGU7XG4gICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplIHx8IE9wdGlvbnMuQkFTRVNJWkU7XG4gICAgdGhpcy50ZXh0U2l6ZSA9IGRhdGEudGV4dFNpemUgfHwgdGhpcy5zaXplO1xuICAgIHRoaXMucGhhbnRvbSA9ICEhZGF0YS5waGFudG9tO1xuICAgIHRoaXMuZm9udCA9IGRhdGEuZm9udCB8fCBcIlwiO1xuICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseSB8fCBcIlwiO1xuICAgIHRoaXMuZm9udFdlaWdodCA9IGRhdGEuZm9udFdlaWdodCB8fCAnJztcbiAgICB0aGlzLmZvbnRTaGFwZSA9IGRhdGEuZm9udFNoYXBlIHx8ICcnO1xuICAgIHRoaXMuc2l6ZU11bHRpcGxpZXIgPSBzaXplTXVsdGlwbGllcnNbdGhpcy5zaXplIC0gMV07XG4gICAgdGhpcy5tYXhTaXplID0gZGF0YS5tYXhTaXplO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IGRhdGEubWluUnVsZVRoaWNrbmVzcztcbiAgICB0aGlzLl9mb250TWV0cmljcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgXCJ0aGlzXCIuICBQcm9wZXJ0aWVzXG4gICAqIGZyb20gXCJleHRlbnNpb25cIiB3aWxsIGJlIGNvcGllZCB0byB0aGUgbmV3IG9wdGlvbnMgb2JqZWN0LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBPcHRpb25zLnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kKGV4dGVuc2lvbikge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUsXG4gICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICB0ZXh0U2l6ZTogdGhpcy50ZXh0U2l6ZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgcGhhbnRvbTogdGhpcy5waGFudG9tLFxuICAgICAgZm9udDogdGhpcy5mb250LFxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogdGhpcy5mb250V2VpZ2h0LFxuICAgICAgZm9udFNoYXBlOiB0aGlzLmZvbnRTaGFwZSxcbiAgICAgIG1heFNpemU6IHRoaXMubWF4U2l6ZSxcbiAgICAgIG1pblJ1bGVUaGlja25lc3M6IHRoaXMubWluUnVsZVRoaWNrbmVzc1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZXh0ZW5zaW9uKSB7XG4gICAgICBpZiAoZXh0ZW5zaW9uLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgZGF0YVtrZXldID0gZXh0ZW5zaW9uW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPcHRpb25zKGRhdGEpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gc3R5bGUuIElmIGB0aGlzLnN0eWxlID09PSBzdHlsZWAsXG4gICAqIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTdHlsZSA9IGZ1bmN0aW9uIGhhdmluZ1N0eWxlKHN0eWxlKSB7XG4gICAgaWYgKHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiBzaXplQXRTdHlsZSh0aGlzLnRleHRTaXplLCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggYSBjcmFtcGVkIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgc3R5bGUuIElmXG4gICAqIHRoZSBjdXJyZW50IHN0eWxlIGlzIGNyYW1wZWQsIHJldHVybnMgYHRoaXNgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdDcmFtcGVkU3R5bGUgPSBmdW5jdGlvbiBoYXZpbmdDcmFtcGVkU3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGF2aW5nU3R5bGUodGhpcy5zdHlsZS5jcmFtcCgpKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHNpemUgYW5kIGluIGF0IGxlYXN0IGBcXHRleHRzdHlsZWAuXG4gICAqIFJldHVybnMgYHRoaXNgIGlmIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdTaXplID0gZnVuY3Rpb24gaGF2aW5nU2l6ZShzaXplKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gc2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBzaXplKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgICBzaXplOiBzaXplLFxuICAgICAgICB0ZXh0U2l6ZTogc2l6ZSxcbiAgICAgICAgc2l6ZU11bHRpcGxpZXI6IHNpemVNdWx0aXBsaWVyc1tzaXplIC0gMV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogTGlrZSBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5oYXZpbmdTdHlsZShzdHlsZSlgLiBJZiBgc3R5bGVgIGlzIG9taXR0ZWQsXG4gICAqIGNoYW5nZXMgdG8gYXQgbGVhc3QgYFxcdGV4dHN0eWxlYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGF2aW5nQmFzZVN0eWxlID0gZnVuY3Rpb24gaGF2aW5nQmFzZVN0eWxlKHN0eWxlKSB7XG4gICAgc3R5bGUgPSBzdHlsZSB8fCB0aGlzLnN0eWxlLnRleHQoKTtcbiAgICB2YXIgd2FudFNpemUgPSBzaXplQXRTdHlsZShPcHRpb25zLkJBU0VTSVpFLCBzdHlsZSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSB3YW50U2l6ZSAmJiB0aGlzLnRleHRTaXplID09PSBPcHRpb25zLkJBU0VTSVpFICYmIHRoaXMuc3R5bGUgPT09IHN0eWxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBzaXplOiB3YW50U2l6ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBzaXppbmcgY2hhbmdlcyBzdWNoIGFzIFxcSHVnZS5cbiAgICogS2VlcCB0aGUgZWZmZWN0IG9mIHRoZSBjdXJyZW50IHN0eWxlLCBzdWNoIGFzIFxcc2NyaXB0c3R5bGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ0Jhc2VTaXppbmcgPSBmdW5jdGlvbiBoYXZpbmdCYXNlU2l6aW5nKCkge1xuICAgIHZhciBzaXplO1xuXG4gICAgc3dpdGNoICh0aGlzLnN0eWxlLmlkKSB7XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHNpemUgPSAzOyAvLyBub3JtYWxzaXplIGluIHNjcmlwdHN0eWxlXG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgc2l6ZSA9IDE7IC8vIG5vcm1hbHNpemUgaW4gc2NyaXB0c2NyaXB0c3R5bGVcblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc2l6ZSA9IDY7XG4gICAgICAvLyBub3JtYWxzaXplIGluIHRleHRzdHlsZSBvciBkaXNwbGF5c3R5bGVcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgc3R5bGU6IHRoaXMuc3R5bGUudGV4dCgpLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhDb2xvciA9IGZ1bmN0aW9uIHdpdGhDb2xvcihjb2xvcikge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggXCJwaGFudG9tXCIgc2V0IHRvIHRydWUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhQaGFudG9tID0gZnVuY3Rpb24gd2l0aFBoYW50b20oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIHBoYW50b206IHRydWVcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBtYXRoIGZvbnQgb3Igb2xkIHRleHQgZm9udC5cbiAgICogQHR5cGUge1t0eXBlXX1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aEZvbnQgPSBmdW5jdGlvbiB3aXRoRm9udChmb250KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnQ6IGZvbnRcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9wdGlvbnMgb2JqZWN0cyB3aXRoIHRoZSBnaXZlbiBmb250RmFtaWx5LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by53aXRoVGV4dEZvbnRGYW1pbHkgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRGYW1pbHkoZm9udEZhbWlseSkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBmb250RmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgZm9udDogXCJcIlxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGZvbnQgd2VpZ2h0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhUZXh0Rm9udFdlaWdodCA9IGZ1bmN0aW9uIHdpdGhUZXh0Rm9udFdlaWdodChmb250V2VpZ2h0KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnRXZWlnaHQ6IGZvbnRXZWlnaHQsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gZm9udCB3ZWlnaHRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aFRleHRGb250U2hhcGUgPSBmdW5jdGlvbiB3aXRoVGV4dEZvbnRTaGFwZShmb250U2hhcGUpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgZm9udFNoYXBlOiBmb250U2hhcGUsXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCBmcm9tIGVuY2xvc2luZyBvcHRpb25zXG4gICAqIGBvbGRPcHRpb25zYCB0byBgdGhpc2AuIFJldHVybnMgYW4gYXJyYXkgb2YgY2xhc3Nlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc2l6aW5nQ2xhc3NlcyA9IGZ1bmN0aW9uIHNpemluZ0NsYXNzZXMob2xkT3B0aW9ucykge1xuICAgIGlmIChvbGRPcHRpb25zLnNpemUgIT09IHRoaXMuc2l6ZSkge1xuICAgICAgcmV0dXJuIFtcInNpemluZ1wiLCBcInJlc2V0LXNpemVcIiArIG9sZE9wdGlvbnMuc2l6ZSwgXCJzaXplXCIgKyB0aGlzLnNpemVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENTUyBzaXppbmcgY2xhc3NlcyByZXF1aXJlZCB0byBzd2l0Y2ggdG8gdGhlIGJhc2Ugc2l6ZS4gTGlrZVxuICAgKiBgdGhpcy5oYXZpbmdTaXplKEJBU0VTSVpFKS5zaXppbmdDbGFzc2VzKHRoaXMpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uYmFzZVNpemluZ0NsYXNzZXMgPSBmdW5jdGlvbiBiYXNlU2l6aW5nQ2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5zaXplICE9PSBPcHRpb25zLkJBU0VTSVpFKSB7XG4gICAgICByZXR1cm4gW1wic2l6aW5nXCIsIFwicmVzZXQtc2l6ZVwiICsgdGhpcy5zaXplLCBcInNpemVcIiArIE9wdGlvbnMuQkFTRVNJWkVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZvbnQgbWV0cmljcyBmb3IgdGhpcyBzaXplLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mb250TWV0cmljcyA9IGZ1bmN0aW9uIGZvbnRNZXRyaWNzKCkge1xuICAgIGlmICghdGhpcy5fZm9udE1ldHJpY3MpIHtcbiAgICAgIHRoaXMuX2ZvbnRNZXRyaWNzID0gZ2V0R2xvYmFsTWV0cmljcyh0aGlzLnNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9mb250TWV0cmljcztcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNvbG9yIG9mIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmdldENvbG9yID0gZnVuY3Rpb24gZ2V0Q29sb3IoKSB7XG4gICAgaWYgKHRoaXMucGhhbnRvbSkge1xuICAgICAgcmV0dXJuIFwidHJhbnNwYXJlbnRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSgpO1xuXG5PcHRpb25zX09wdGlvbnMuQkFTRVNJWkUgPSA2O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX09wdGlvbnMgPSAoT3B0aW9uc19PcHRpb25zKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaXRzLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBkb2VzIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4gIEluIHBhcnRpY3VsYXIsIGl0IHByb3ZpZGVzXG4gKiBjYWxjdWxhdGVTaXplIHRvIGNvbnZlcnQgb3RoZXIgdW5pdHMgaW50byBlbXMuXG4gKi9cblxuIC8vIFRoaXMgdGFibGUgZ2l2ZXMgdGhlIG51bWJlciBvZiBUZVggcHRzIGluIG9uZSBvZiBlYWNoICphYnNvbHV0ZSogVGVYIHVuaXQuXG4vLyBUaHVzLCBtdWx0aXBseWluZyBhIGxlbmd0aCBieSB0aGlzIG51bWJlciBjb252ZXJ0cyB0aGUgbGVuZ3RoIGZyb20gdW5pdHNcbi8vIGludG8gcHRzLiAgRGl2aWRpbmcgdGhlIHJlc3VsdCBieSBwdFBlckVtIGdpdmVzIHRoZSBudW1iZXIgb2YgZW1zXG4vLyAqYXNzdW1pbmcqIGEgZm9udCBzaXplIG9mIHB0UGVyRW0gKG5vcm1hbCBzaXplLCBub3JtYWwgc3R5bGUpLlxuXG52YXIgcHRQZXJVbml0ID0ge1xuICAvLyBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9MYVRlWC9MZW5ndGhzIGFuZFxuICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzgyNjNcbiAgXCJwdFwiOiAxLFxuICAvLyBUZVggcG9pbnRcbiAgXCJtbVwiOiA3MjI3IC8gMjU0MCxcbiAgLy8gbWlsbGltZXRlclxuICBcImNtXCI6IDcyMjcgLyAyNTQsXG4gIC8vIGNlbnRpbWV0ZXJcbiAgXCJpblwiOiA3Mi4yNyxcbiAgLy8gaW5jaFxuICBcImJwXCI6IDgwMyAvIDgwMCxcbiAgLy8gYmlnIChQb3N0U2NyaXB0KSBwb2ludHNcbiAgXCJwY1wiOiAxMixcbiAgLy8gcGljYVxuICBcImRkXCI6IDEyMzggLyAxMTU3LFxuICAvLyBkaWRvdFxuICBcImNjXCI6IDE0ODU2IC8gMTE1NyxcbiAgLy8gY2ljZXJvICgxMiBkaWRvdClcbiAgXCJuZFwiOiA2ODUgLyA2NDIsXG4gIC8vIG5ldyBkaWRvdFxuICBcIm5jXCI6IDEzNzAgLyAxMDcsXG4gIC8vIG5ldyBjaWNlcm8gKDEyIG5ldyBkaWRvdClcbiAgXCJzcFwiOiAxIC8gNjU1MzYsXG4gIC8vIHNjYWxlZCBwb2ludCAoVGVYJ3MgaW50ZXJuYWwgc21hbGxlc3QgdW5pdClcbiAgLy8gaHR0cHM6Ly90ZXguc3RhY2tleGNoYW5nZS5jb20vYS80MTM3MVxuICBcInB4XCI6IDgwMyAvIDgwMCAvLyBcXHBkZnB4ZGltZW4gZGVmYXVsdHMgdG8gMSBicCBpbiBwZGZUZVggYW5kIEx1YVRlWFxuXG59OyAvLyBEaWN0aW9uYXJ5IG9mIHJlbGF0aXZlIHVuaXRzLCBmb3IgZmFzdCB2YWxpZGl0eSB0ZXN0aW5nLlxuXG52YXIgcmVsYXRpdmVVbml0ID0ge1xuICBcImV4XCI6IHRydWUsXG4gIFwiZW1cIjogdHJ1ZSxcbiAgXCJtdVwiOiB0cnVlXG59O1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgdW5pdCAoZWl0aGVyIGEgc3RyaW5nIGRlZmluaW5nIHRoZSB1bml0XG4gKiBvciBhIFwic2l6ZVwiIHBhcnNlIG5vZGUgY29udGFpbmluZyBhIHVuaXQgZmllbGQpIGlzIHZhbGlkLlxuICovXG52YXIgdmFsaWRVbml0ID0gZnVuY3Rpb24gdmFsaWRVbml0KHVuaXQpIHtcbiAgaWYgKHR5cGVvZiB1bml0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdW5pdCA9IHVuaXQudW5pdDtcbiAgfVxuXG4gIHJldHVybiB1bml0IGluIHB0UGVyVW5pdCB8fCB1bml0IGluIHJlbGF0aXZlVW5pdCB8fCB1bml0ID09PSBcImV4XCI7XG59O1xuLypcbiAqIENvbnZlcnQgYSBcInNpemVcIiBwYXJzZSBub2RlICh3aXRoIG51bWVyaWMgXCJudW1iZXJcIiBhbmQgc3RyaW5nIFwidW5pdFwiIGZpZWxkcyxcbiAqIGFzIHBhcnNlZCBieSBmdW5jdGlvbnMuanMgYXJnVHlwZSBcInNpemVcIikgaW50byBhIENTUyBlbSB2YWx1ZSBmb3IgdGhlXG4gKiBjdXJyZW50IHN0eWxlL3NjYWxlLiAgYG9wdGlvbnNgIGdpdmVzIHRoZSBjdXJyZW50IG9wdGlvbnMuXG4gKi9cblxudmFyIHVuaXRzX2NhbGN1bGF0ZVNpemUgPSBmdW5jdGlvbiBjYWxjdWxhdGVTaXplKHNpemVWYWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2NhbGU7XG5cbiAgaWYgKHNpemVWYWx1ZS51bml0IGluIHB0UGVyVW5pdCkge1xuICAgIC8vIEFic29sdXRlIHVuaXRzXG4gICAgc2NhbGUgPSBwdFBlclVuaXRbc2l6ZVZhbHVlLnVuaXRdIC8vIENvbnZlcnQgdW5pdCB0byBwdFxuICAgIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW0gLy8gQ29udmVydCBwdCB0byBDU1MgZW1cbiAgICAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIFVuc2NhbGUgdG8gbWFrZSBhYnNvbHV0ZSB1bml0c1xuICB9IGVsc2UgaWYgKHNpemVWYWx1ZS51bml0ID09PSBcIm11XCIpIHtcbiAgICAvLyBgbXVgIHVuaXRzIHNjYWxlIHdpdGggc2NyaXB0c3R5bGUvc2NyaXB0c2NyaXB0c3R5bGUuXG4gICAgc2NhbGUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuY3NzRW1QZXJNdTtcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlciByZWxhdGl2ZSB1bml0cyBhbHdheXMgcmVmZXIgdG8gdGhlICp0ZXh0c3R5bGUqIGZvbnRcbiAgICAvLyBpbiB0aGUgY3VycmVudCBzaXplLlxuICAgIHZhciB1bml0T3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgLy8gaXNUaWdodCgpIG1lYW5zIGN1cnJlbnQgc3R5bGUgaXMgc2NyaXB0L3NjcmlwdHNjcmlwdC5cbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IC8vIFRPRE86IEluIFRlWCB0aGVzZSB1bml0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIHF1YWQgb2YgdGhlIGN1cnJlbnRcbiAgICAvLyAqdGV4dCogZm9udCwgZS5nLiBjbXIxMC4gS2FUZVggaW5zdGVhZCB1c2VzIHZhbHVlcyBmcm9tIHRoZVxuICAgIC8vIGNvbXBhcmFibHktc2l6ZWQgKkNvbXB1dGVyIE1vZGVybiBzeW1ib2wqIGZvbnQuIEF0IDEwcHQsIHRoZXNlXG4gICAgLy8gbWF0Y2guIEF0IDdwdCBhbmQgNXB0LCB0aGV5IGRpZmZlcjogY21yNz0xLjEzODg5NCwgY21zeTc9MS4xNzA2NDE7XG4gICAgLy8gY21yNT0xLjM2MTEzMywgY21zeTU9MS40NzIyNDEuIENvbnNpZGVyICRcXHNjcmlwdHNpemUgYVxca2VybjFlbWIkLlxuICAgIC8vIFRlWCBcXHNob3dsaXN0cyBzaG93cyBhIGtlcm4gb2YgMS4xMzg4OSAqIGZvbnRzaXplO1xuICAgIC8vIEthVGVYIHNob3dzIGEga2VybiBvZiAxLjE3MSAqIGZvbnRzaXplLlxuXG5cbiAgICBpZiAoc2l6ZVZhbHVlLnVuaXQgPT09IFwiZXhcIikge1xuICAgICAgc2NhbGUgPSB1bml0T3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gICAgfSBlbHNlIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJlbVwiKSB7XG4gICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkucXVhZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBzaXplVmFsdWUudW5pdCArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAodW5pdE9wdGlvbnMgIT09IG9wdGlvbnMpIHtcbiAgICAgIHNjYWxlICo9IHVuaXRPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTWF0aC5taW4oc2l6ZVZhbHVlLm51bWJlciAqIHNjYWxlLCBvcHRpb25zLm1heFNpemUpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkQ29tbW9uLmpzXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29udGFpbnMgZ2VuZXJhbCBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYnVpbGRpbmdcbiAqIGRpZmZlcmVudCBraW5kcyBvZiBkb21UcmVlIG5vZGVzIGluIGEgY29uc2lzdGVudCBtYW5uZXIuXG4gKi9cblxuXG5cblxuXG5cblxuLy8gVGhlIGZvbGxvd2luZyBoYXZlIHRvIGJlIGxvYWRlZCBmcm9tIE1haW4tSXRhbGljIGZvbnQsIHVzaW5nIGNsYXNzIG1hdGhpdFxudmFyIG1hdGhpdExldHRlcnMgPSBbXCJcXFxcaW1hdGhcIiwgXCLEsVwiLCAvLyBkb3RsZXNzIGlcblwiXFxcXGptYXRoXCIsIFwiyLdcIiwgLy8gZG90bGVzcyBqXG5cIlxcXFxwb3VuZHNcIiwgXCJcXFxcbWF0aHN0ZXJsaW5nXCIsIFwiXFxcXHRleHRzdGVybGluZ1wiLCBcIsKjXCJdO1xuLyoqXG4gKiBMb29rcyB1cCB0aGUgZ2l2ZW4gc3ltYm9sIGluIGZvbnRNZXRyaWNzLCBhZnRlciBhcHBseWluZyBhbnkgc3ltYm9sXG4gKiByZXBsYWNlbWVudHMgZGVmaW5lZCBpbiBzeW1ib2wuanNcbiAqL1xuXG52YXIgYnVpbGRDb21tb25fbG9va3VwU3ltYm9sID0gZnVuY3Rpb24gbG9va3VwU3ltYm9sKHZhbHVlLCAvLyBUT0RPKCM5NjMpOiBVc2UgYSB1bmlvbiB0eXBlIGZvciB0aGlzLlxuZm9udE5hbWUsIG1vZGUpIHtcbiAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBpdHMgcmVwbGFjZWQgdmFsdWUgZnJvbSBzeW1ib2wuanNcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3ZhbHVlXSAmJiBzcmNfc3ltYm9sc1ttb2RlXVt2YWx1ZV0ucmVwbGFjZSkge1xuICAgIHZhbHVlID0gc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLnJlcGxhY2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXRyaWNzOiBnZXRDaGFyYWN0ZXJNZXRyaWNzKHZhbHVlLCBmb250TmFtZSwgbW9kZSlcbiAgfTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3ltYm9sTm9kZSBhZnRlciB0cmFuc2xhdGlvbiB2aWEgdGhlIGxpc3Qgb2Ygc3ltYm9scyBpbiBzeW1ib2xzLmpzLlxuICogQ29ycmVjdGx5IHB1bGxzIG91dCBtZXRyaWNzIGZvciB0aGUgY2hhcmFjdGVyLCBhbmQgb3B0aW9uYWxseSB0YWtlcyBhIGxpc3Qgb2ZcbiAqIGNsYXNzZXMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIG5vZGUuXG4gKlxuICogVE9ETzogbWFrZSBhcmd1bWVudCBvcmRlciBjbG9zZXIgdG8gbWFrZVNwYW5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKiBUT0RPKCM5NTMpOiBNYWtlIGBvcHRpb25zYCBtYW5kYXRvcnkgYW5kIGFsd2F5cyBwYXNzIGl0IGluLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wgPSBmdW5jdGlvbiBtYWtlU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbG9va3VwID0gYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHZhbHVlLCBmb250TmFtZSwgbW9kZSk7XG4gIHZhciBtZXRyaWNzID0gbG9va3VwLm1ldHJpY3M7XG4gIHZhbHVlID0gbG9va3VwLnZhbHVlO1xuICB2YXIgc3ltYm9sTm9kZTtcblxuICBpZiAobWV0cmljcykge1xuICAgIHZhciBpdGFsaWMgPSBtZXRyaWNzLml0YWxpYztcblxuICAgIGlmIChtb2RlID09PSBcInRleHRcIiB8fCBvcHRpb25zICYmIG9wdGlvbnMuZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgICAgaXRhbGljID0gMDtcbiAgICB9XG5cbiAgICBzeW1ib2xOb2RlID0gbmV3IGRvbVRyZWVfU3ltYm9sTm9kZSh2YWx1ZSwgbWV0cmljcy5oZWlnaHQsIG1ldHJpY3MuZGVwdGgsIGl0YWxpYywgbWV0cmljcy5za2V3LCBtZXRyaWNzLndpZHRoLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPKGVtaWx5KTogRmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIG9ubHkgcHJpbnQgdGhpcyBpbiBkZXZlbG9wbWVudFxuICAgIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUud2FybihcIk5vIGNoYXJhY3RlciBtZXRyaWNzIFwiICsgKFwiZm9yICdcIiArIHZhbHVlICsgXCInIGluIHN0eWxlICdcIiArIGZvbnROYW1lICsgXCInIGFuZCBtb2RlICdcIiArIG1vZGUgKyBcIidcIikpO1xuICAgIHN5bWJvbE5vZGUgPSBuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKHZhbHVlLCAwLCAwLCAwLCAwLCAwLCBjbGFzc2VzKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgc3ltYm9sTm9kZS5tYXhGb250U2l6ZSA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG5cbiAgICBpZiAob3B0aW9ucy5zdHlsZS5pc1RpZ2h0KCkpIHtcbiAgICAgIHN5bWJvbE5vZGUuY2xhc3Nlcy5wdXNoKFwibXRpZ2h0XCIpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgc3ltYm9sTm9kZS5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW1ib2xOb2RlO1xufTtcbi8qKlxuICogTWFrZXMgYSBzeW1ib2wgaW4gTWFpbi1SZWd1bGFyIG9yIEFNUy1SZWd1bGFyLlxuICogVXNlZCBmb3IgcmVsLCBiaW4sIG9wZW4sIGNsb3NlLCBpbm5lciwgYW5kIHB1bmN0LlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21hdGhzeW0gPSBmdW5jdGlvbiBtYXRoc3ltKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChjbGFzc2VzID09PSB2b2lkIDApIHtcbiAgICBjbGFzc2VzID0gW107XG4gIH1cblxuICAvLyBEZWNpZGUgd2hhdCBmb250IHRvIHJlbmRlciB0aGUgc3ltYm9sIGluIGJ5IGl0cyBlbnRyeSBpbiB0aGUgc3ltYm9sc1xuICAvLyB0YWJsZS5cbiAgLy8gSGF2ZSBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgdmFsdWUgPSBcXCBiZWNhdXNlIHRoZSBcXCBpcyB1c2VkIGFzIGFcbiAgLy8gdGV4dG9yZCBpbiB1bnN1cHBvcnRlZCBjb21tYW5kIGVycm9ycyBidXQgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHJlZ3VsYXJcbiAgLy8gdGV4dCBvcmRpbmFsIGFuZCBpcyB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzeW1ib2wgaW4gdGhlIHN5bWJvbHNcbiAgLy8gdGFibGUgZm9yIHRleHQsIGFzIHdlbGwgYXMgYSBzcGVjaWFsIGNhc2UgZm9yIGJvbGRzeW1ib2wgYmVjYXVzZSBpdFxuICAvLyBjYW4gYmUgdXNlZCBmb3IgYm9sZCArIGFuZCAtXG4gIGlmIChvcHRpb25zLmZvbnQgPT09IFwiYm9sZHN5bWJvbFwiICYmIGJ1aWxkQ29tbW9uX2xvb2t1cFN5bWJvbCh2YWx1ZSwgXCJNYWluLUJvbGRcIiwgbW9kZSkubWV0cmljcykge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbXCJtYXRoYmZcIl0pKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcXFxcXCIgfHwgc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdLmZvbnQgPT09IFwibWFpblwiKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodmFsdWUsIFwiTWFpbi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHZhbHVlLCBcIkFNUy1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtcImFtc3JtXCJdKSk7XG4gIH1cbn07XG4vKipcbiAqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIHR3byBmb250IG5hbWVzIChNYWluLUl0YWxpYyBhbmQgTWF0aC1JdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYWluZGVmYXVsdCBvciBtYXRoaXQpIHRvIHVzZSBmb3IgZGVmYXVsdCBtYXRoIGZvbnQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHN5bWJvbC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCA9IGZ1bmN0aW9uIG1hdGhkZWZhdWx0KHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmICgvWzAtOV0vLnRlc3QodmFsdWUuY2hhckF0KDApKSB8fCAvLyBnbHlwaHMgZm9yIFxcaW1hdGggYW5kIFxcam1hdGggZG8gbm90IGV4aXN0IGluIE1hdGgtSXRhbGljIHNvIHdlXG4gIC8vIG5lZWQgdG8gdXNlIE1haW4tSXRhbGljIGluc3RlYWRcbiAgdXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBmb250IG5hbWVzIChNYWluLUl0YWxpYywgTWF0aC1JdGFsaWMsIGFuZCBDYWxpZ3JhcGhpYylcbiAqIGFuZCBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1hdGhpdCwgbWF0aGRlZmF1bHQsIG9yIG1hdGhjYWwpIHRvIHVzZSBmb3IgZm9udFxuICogXCJtYXRobm9ybWFsXCIsIGRlcGVuZGluZyBvbiB0aGUgc3ltYm9sLiAgVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBmb250TWFwIGZvclxuICogZm9udCBcIm1hdGhub3JtYWxcIi5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYXRobm9ybWFsID0gZnVuY3Rpb24gbWF0aG5vcm1hbCh2YWx1ZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGl0XCJcbiAgICB9O1xuICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdCh2YWx1ZS5jaGFyQXQoMCkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIkNhbGlncmFwaGljLVJlZ3VsYXJcIixcbiAgICAgIGZvbnRDbGFzczogXCJtYXRoY2FsXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUl0YWxpY1wiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhkZWZhdWx0XCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSB0d28gZm9udCBuYW1lcyAoTWFpbi1Cb2xkIGFuZCBNYXRoLUJvbGRJdGFsaWMpIGFuZFxuICogY29ycmVzcG9uZGluZyBzdHlsZSB0YWdzIChtYXRoYmYgb3IgYm9sZHN5bWJvbCkgdG8gdXNlIGZvciBmb250IFwiYm9sZHN5bWJvbFwiLFxuICogZGVwZW5kaW5nIG9uIHRoZSBzeW1ib2wuICBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZvbnRNYXAgZm9yIGZvbnRcbiAqIFwiYm9sZHN5bWJvbFwiLlxuICovXG5cblxudmFyIGJvbGRzeW1ib2wgPSBmdW5jdGlvbiBib2xkc3ltYm9sKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmIChidWlsZENvbW1vbl9sb29rdXBTeW1ib2wodmFsdWUsIFwiTWF0aC1Cb2xkSXRhbGljXCIsIG1vZGUpLm1ldHJpY3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWF0aC1Cb2xkSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwiYm9sZHN5bWJvbFwiXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTb21lIGdseXBocyBkbyBub3QgZXhpc3QgaW4gTWF0aC1Cb2xkSXRhbGljIHNvIHdlIG5lZWQgdG8gdXNlXG4gICAgLy8gTWFpbi1Cb2xkIGluc3RlYWQuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhiZlwiXG4gICAgfTtcbiAgfVxufTtcbi8qKlxuICogTWFrZXMgZWl0aGVyIGEgbWF0aG9yZCBvciB0ZXh0b3JkIGluIHRoZSBjb3JyZWN0IGZvbnQgYW5kIGNvbG9yLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VPcmQgPSBmdW5jdGlvbiBtYWtlT3JkKGdyb3VwLCBvcHRpb25zLCB0eXBlKSB7XG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuICB2YXIgY2xhc3NlcyA9IFtcIm1vcmRcIl07IC8vIE1hdGggbW9kZSBvciBPbGQgZm9udCAoaS5lLiBcXHJtKVxuXG4gIHZhciBpc0ZvbnQgPSBtb2RlID09PSBcIm1hdGhcIiB8fCBtb2RlID09PSBcInRleHRcIiAmJiBvcHRpb25zLmZvbnQ7XG4gIHZhciBmb250T3JGYW1pbHkgPSBpc0ZvbnQgPyBvcHRpb25zLmZvbnQgOiBvcHRpb25zLmZvbnRGYW1pbHk7XG5cbiAgaWYgKHRleHQuY2hhckNvZGVBdCgwKSA9PT0gMHhEODM1KSB7XG4gICAgLy8gc3Vycm9nYXRlIHBhaXJzIGdldCBzcGVjaWFsIHRyZWF0bWVudFxuICAgIHZhciBfd2lkZUNoYXJhY3RlckZvbnQgPSB3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCh0ZXh0LCBtb2RlKSxcbiAgICAgICAgd2lkZUZvbnROYW1lID0gX3dpZGVDaGFyYWN0ZXJGb250WzBdLFxuICAgICAgICB3aWRlRm9udENsYXNzID0gX3dpZGVDaGFyYWN0ZXJGb250WzFdO1xuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgd2lkZUZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdCh3aWRlRm9udENsYXNzKSk7XG4gIH0gZWxzZSBpZiAoZm9udE9yRmFtaWx5KSB7XG4gICAgdmFyIGZvbnROYW1lO1xuICAgIHZhciBmb250Q2xhc3NlcztcblxuICAgIGlmIChmb250T3JGYW1pbHkgPT09IFwiYm9sZHN5bWJvbFwiIHx8IGZvbnRPckZhbWlseSA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICAgIHZhciBmb250RGF0YSA9IGZvbnRPckZhbWlseSA9PT0gXCJib2xkc3ltYm9sXCIgPyBib2xkc3ltYm9sKHRleHQsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIDogYnVpbGRDb21tb25fbWF0aG5vcm1hbCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICAgIGZvbnROYW1lID0gZm9udERhdGEuZm9udE5hbWU7XG4gICAgICBmb250Q2xhc3NlcyA9IFtmb250RGF0YS5mb250Q2xhc3NdO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuY29udGFpbnMobWF0aGl0TGV0dGVycywgdGV4dCkpIHtcbiAgICAgIGZvbnROYW1lID0gXCJNYWluLUl0YWxpY1wiO1xuICAgICAgZm9udENsYXNzZXMgPSBbXCJtYXRoaXRcIl07XG4gICAgfSBlbHNlIGlmIChpc0ZvbnQpIHtcbiAgICAgIGZvbnROYW1lID0gZm9udE1hcFtmb250T3JGYW1pbHldLmZvbnROYW1lO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9udE5hbWUgPSByZXRyaWV2ZVRleHRGb250TmFtZShmb250T3JGYW1pbHksIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpO1xuICAgICAgZm9udENsYXNzZXMgPSBbZm9udE9yRmFtaWx5LCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlXTtcbiAgICB9XG5cbiAgICBpZiAoYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHRleHQsIGZvbnROYW1lLCBtb2RlKS5tZXRyaWNzKSB7XG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoZm9udENsYXNzZXMpKTtcbiAgICB9IGVsc2UgaWYgKGxpZ2F0dXJlcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSAmJiBmb250TmFtZS5zdWJzdHIoMCwgMTApID09PSBcIlR5cGV3cml0ZXJcIikge1xuICAgICAgLy8gRGVjb25zdHJ1Y3QgbGlnYXR1cmVzIGluIG1vbm9zcGFjZSBmb250cyAoXFx0ZXh0dHQsIFxcdHQpLlxuICAgICAgdmFyIHBhcnRzID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dFtpXSwgZm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KGZvbnRDbGFzc2VzKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZUZyYWdtZW50KHBhcnRzKTtcbiAgICB9XG4gIH0gLy8gTWFrZXMgYSBzeW1ib2wgaW4gdGhlIGRlZmF1bHQgZm9udCBmb3IgbWF0aG9yZHMgYW5kIHRleHRvcmRzLlxuXG5cbiAgaWYgKHR5cGUgPT09IFwibWF0aG9yZFwiKSB7XG4gICAgdmFyIGZvbnRMb29rdXAgPSBidWlsZENvbW1vbl9tYXRoZGVmYXVsdCh0ZXh0LCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBmb250TG9va3VwLmZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChbZm9udExvb2t1cC5mb250Q2xhc3NdKSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ0ZXh0b3JkXCIpIHtcbiAgICB2YXIgZm9udCA9IHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLmZvbnQ7XG5cbiAgICBpZiAoZm9udCA9PT0gXCJhbXNcIikge1xuICAgICAgdmFyIF9mb250TmFtZSA9IHJldHJpZXZlVGV4dEZvbnROYW1lKFwiYW1zcm1cIiwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7XG5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHRleHQsIF9mb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoXCJhbXNybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgfSBlbHNlIGlmIChmb250ID09PSBcIm1haW5cIiB8fCAhZm9udCkge1xuICAgICAgdmFyIF9mb250TmFtZTIgPSByZXRyaWV2ZVRleHRGb250TmFtZShcInRleHRybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKTtcblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMiwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQob3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb250cyBhZGRlZCBieSBwbHVnaW5zXG4gICAgICB2YXIgX2ZvbnROYW1lMyA9IHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnQsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpOyAvLyBXZSBhZGQgZm9udCBuYW1lIGFzIGEgY3NzIGNsYXNzXG5cblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lMywgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoX2ZvbnROYW1lMywgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV4cGVjdGVkIHR5cGU6IFwiICsgdHlwZSArIFwiIGluIG1ha2VPcmRcIik7XG4gIH1cbn07XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzdWJzZXF1ZW50IHN5bWJvbE5vZGVzIGhhdmUgdGhlIHNhbWUgY2xhc3Nlcywgc2tldywgbWF4Rm9udCxcbiAqIGFuZCBzdHlsZXMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fY2FuQ29tYmluZSA9IGZ1bmN0aW9uIGNhbkNvbWJpbmUocHJldiwgbmV4dCkge1xuICBpZiAoY3JlYXRlQ2xhc3MocHJldi5jbGFzc2VzKSAhPT0gY3JlYXRlQ2xhc3MobmV4dC5jbGFzc2VzKSB8fCBwcmV2LnNrZXcgIT09IG5leHQuc2tldyB8fCBwcmV2Lm1heEZvbnRTaXplICE9PSBuZXh0Lm1heEZvbnRTaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gcHJldi5zdHlsZSkge1xuICAgIGlmIChwcmV2LnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSAmJiBwcmV2LnN0eWxlW3N0eWxlXSAhPT0gbmV4dC5zdHlsZVtzdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBfc3R5bGUgaW4gbmV4dC5zdHlsZSkge1xuICAgIGlmIChuZXh0LnN0eWxlLmhhc093blByb3BlcnR5KF9zdHlsZSkgJiYgcHJldi5zdHlsZVtfc3R5bGVdICE9PSBuZXh0LnN0eWxlW19zdHlsZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIENvbWJpbmUgY29uc2VxdWV0aXZlIGRvbVRyZWUuc3ltYm9sTm9kZXMgaW50byBhIHNpbmdsZSBzeW1ib2xOb2RlLlxuICogTm90ZTogdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBhcmd1bWVudC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl90cnlDb21iaW5lQ2hhcnMgPSBmdW5jdGlvbiB0cnlDb21iaW5lQ2hhcnMoY2hhcnMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICB2YXIgcHJldiA9IGNoYXJzW2ldO1xuICAgIHZhciBuZXh0ID0gY2hhcnNbaSArIDFdO1xuXG4gICAgaWYgKHByZXYgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgJiYgbmV4dCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSAmJiBidWlsZENvbW1vbl9jYW5Db21iaW5lKHByZXYsIG5leHQpKSB7XG4gICAgICBwcmV2LnRleHQgKz0gbmV4dC50ZXh0O1xuICAgICAgcHJldi5oZWlnaHQgPSBNYXRoLm1heChwcmV2LmhlaWdodCwgbmV4dC5oZWlnaHQpO1xuICAgICAgcHJldi5kZXB0aCA9IE1hdGgubWF4KHByZXYuZGVwdGgsIG5leHQuZGVwdGgpOyAvLyBVc2UgdGhlIGxhc3QgY2hhcmFjdGVyJ3MgaXRhbGljIGNvcnJlY3Rpb24gc2luY2Ugd2UgdXNlXG4gICAgICAvLyBpdCB0byBhZGQgcGFkZGluZyB0byB0aGUgcmlnaHQgb2YgdGhlIHNwYW4gY3JlYXRlZCBmcm9tXG4gICAgICAvLyB0aGUgY29tYmluZWQgY2hhcmFjdGVycy5cblxuICAgICAgcHJldi5pdGFsaWMgPSBuZXh0Lml0YWxpYztcbiAgICAgIGNoYXJzLnNwbGljZShpICsgMSwgMSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoYXJzO1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBoZWlnaHQsIGRlcHRoLCBhbmQgbWF4Rm9udFNpemUgb2YgYW4gZWxlbWVudCBiYXNlZCBvbiBpdHNcbiAqIGNoaWxkcmVuLlxuICovXG5cblxudmFyIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuID0gZnVuY3Rpb24gc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oZWxlbSkge1xuICB2YXIgaGVpZ2h0ID0gMDtcbiAgdmFyIGRlcHRoID0gMDtcbiAgdmFyIG1heEZvbnRTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0uY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBlbGVtLmNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKGNoaWxkLmhlaWdodCA+IGhlaWdodCkge1xuICAgICAgaGVpZ2h0ID0gY2hpbGQuaGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5kZXB0aCA+IGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGNoaWxkLmRlcHRoO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5tYXhGb250U2l6ZSA+IG1heEZvbnRTaXplKSB7XG4gICAgICBtYXhGb250U2l6ZSA9IGNoaWxkLm1heEZvbnRTaXplO1xuICAgIH1cbiAgfVxuXG4gIGVsZW0uaGVpZ2h0ID0gaGVpZ2h0O1xuICBlbGVtLmRlcHRoID0gZGVwdGg7XG4gIGVsZW0ubWF4Rm9udFNpemUgPSBtYXhGb250U2l6ZTtcbn07XG4vKipcbiAqIE1ha2VzIGEgc3BhbiB3aXRoIHRoZSBnaXZlbiBsaXN0IG9mIGNsYXNzZXMsIGxpc3Qgb2YgY2hpbGRyZW4sIGFuZCBvcHRpb25zLlxuICpcbiAqIFRPRE8oIzk1Myk6IEVuc3VyZSB0aGF0IGBvcHRpb25zYCBpcyBhbHdheXMgcHJvdmlkZWQgKGN1cnJlbnRseSBzb21lIGNhbGxcbiAqIHNpdGVzIGRvbid0IHBhc3MgaXQpIGFuZCBtYWtlIHRoZSB0eXBlIGJlbG93IG1hbmRhdG9yeS5cbiAqIFRPRE86IGFkZCBhIHNlcGFyYXRlIGFyZ3VtZW50IGZvciBtYXRoIGNsYXNzIChlLmcuIGBtb3BgLCBgbWJpbmApLCB3aGljaFxuICogc2hvdWxkIGlmIHByZXNlbnQgY29tZSBmaXJzdCBpbiBgY2xhc3Nlc2AuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVNwYW4gPSBmdW5jdGlvbiBtYWtlU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgdmFyIHNwYW4gPSBuZXcgZG9tVHJlZV9TcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKHNwYW4pO1xuICByZXR1cm4gc3Bhbjtcbn07IC8vIFNWRyBvbmUgaXMgc2ltcGxlciAtLSBkb2Vzbid0IHJlcXVpcmUgaGVpZ2h0LCBkZXB0aCwgbWF4LWZvbnQgc2V0dGluZy5cbi8vIFRoaXMgaXMgYWxzbyBhIHNlcGFyYXRlIG1ldGhvZCBmb3IgdHlwZXNhZmV0eS5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4gPSBmdW5jdGlvbiBtYWtlU3ZnU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpIHtcbiAgcmV0dXJuIG5ldyBkb21UcmVlX1NwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKTtcbn07XG5cbnZhciBtYWtlTGluZVNwYW4gPSBmdW5jdGlvbiBtYWtlTGluZVNwYW4oY2xhc3NOYW1lLCBvcHRpb25zLCB0aGlja25lc3MpIHtcbiAgdmFyIGxpbmUgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbY2xhc3NOYW1lXSwgW10sIG9wdGlvbnMpO1xuICBsaW5lLmhlaWdodCA9IE1hdGgubWF4KHRoaWNrbmVzcyB8fCBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3MsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyk7XG4gIGxpbmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGggPSBsaW5lLmhlaWdodCArIFwiZW1cIjtcbiAgbGluZS5tYXhGb250U2l6ZSA9IDEuMDtcbiAgcmV0dXJuIGxpbmU7XG59O1xuLyoqXG4gKiBNYWtlcyBhbiBhbmNob3Igd2l0aCB0aGUgZ2l2ZW4gaHJlZiwgbGlzdCBvZiBjbGFzc2VzLCBsaXN0IG9mIGNoaWxkcmVuLFxuICogYW5kIG9wdGlvbnMuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUFuY2hvciA9IGZ1bmN0aW9uIG1ha2VBbmNob3IoaHJlZiwgY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgdmFyIGFuY2hvciA9IG5ldyBkb21UcmVlX0FuY2hvcihocmVmLCBjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucyk7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKGFuY2hvcik7XG4gIHJldHVybiBhbmNob3I7XG59O1xuLyoqXG4gKiBNYWtlcyBhIGRvY3VtZW50IGZyYWdtZW50IHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2hpbGRyZW4uXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUZyYWdtZW50ID0gZnVuY3Rpb24gbWFrZUZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHZhciBmcmFnbWVudCA9IG5ldyB0cmVlX0RvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pO1xuICBzaXplRWxlbWVudEZyb21DaGlsZHJlbihmcmFnbWVudCk7XG4gIHJldHVybiBmcmFnbWVudDtcbn07XG4vKipcbiAqIFdyYXBzIGdyb3VwIGluIGEgc3BhbiBpZiBpdCdzIGEgZG9jdW1lbnQgZnJhZ21lbnQsIGFsbG93aW5nIHRvIGFwcGx5IGNsYXNzZXNcbiAqIGFuZCBzdHlsZXNcbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQgPSBmdW5jdGlvbiB3cmFwRnJhZ21lbnQoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgaWYgKGdyb3VwIGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtdLCBbZ3JvdXBdLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBncm91cDtcbn07IC8vIFRoZXNlIGFyZSBleGFjdCBvYmplY3QgdHlwZXMgdG8gY2F0Y2ggdHlwb3MgaW4gdGhlIG5hbWVzIG9mIHRoZSBvcHRpb25hbCBmaWVsZHMuXG5cblxuLy8gQ29tcHV0ZXMgdGhlIHVwZGF0ZWQgYGNoaWxkcmVuYCBsaXN0IGFuZCB0aGUgb3ZlcmFsbCBkZXB0aC5cbi8vXG4vLyBUaGlzIGhlbHBlciBmdW5jdGlvbiBmb3IgbWFrZVZMaXN0IG1ha2VzIGl0IGVhc2llciB0byBlbmZvcmNlIHR5cGUgc2FmZXR5IGJ5XG4vLyBhbGxvd2luZyBlYXJseSBleGl0cyAocmV0dXJucykgaW4gdGhlIGxvZ2ljLlxudmFyIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCA9IGZ1bmN0aW9uIGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpIHtcbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiaW5kaXZpZHVhbFNoaWZ0XCIpIHtcbiAgICB2YXIgb2xkQ2hpbGRyZW4gPSBwYXJhbXMuY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkcmVuID0gW29sZENoaWxkcmVuWzBdXTsgLy8gQWRkIGluIGtlcm5zIHRvIHRoZSBsaXN0IG9mIHBhcmFtcy5jaGlsZHJlbiB0byBnZXQgZWFjaCBlbGVtZW50IHRvIGJlXG4gICAgLy8gc2hpZnRlZCB0byB0aGUgY29ycmVjdCBzcGVjaWZpZWQgc2hpZnRcblxuICAgIHZhciBfZGVwdGggPSAtb2xkQ2hpbGRyZW5bMF0uc2hpZnQgLSBvbGRDaGlsZHJlblswXS5lbGVtLmRlcHRoO1xuXG4gICAgdmFyIGN1cnJQb3MgPSBfZGVwdGg7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IG9sZENoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGlmZiA9IC1vbGRDaGlsZHJlbltpXS5zaGlmdCAtIGN1cnJQb3MgLSBvbGRDaGlsZHJlbltpXS5lbGVtLmRlcHRoO1xuICAgICAgdmFyIHNpemUgPSBkaWZmIC0gKG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmhlaWdodCArIG9sZENoaWxkcmVuW2kgLSAxXS5lbGVtLmRlcHRoKTtcbiAgICAgIGN1cnJQb3MgPSBjdXJyUG9zICsgZGlmZjtcbiAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgfSk7XG4gICAgICBjaGlsZHJlbi5wdXNoKG9sZENoaWxkcmVuW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgZGVwdGg6IF9kZXB0aFxuICAgIH07XG4gIH1cblxuICB2YXIgZGVwdGg7XG5cbiAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwidG9wXCIpIHtcbiAgICAvLyBXZSBhbHdheXMgc3RhcnQgYXQgdGhlIGJvdHRvbSwgc28gY2FsY3VsYXRlIHRoZSBib3R0b20gYnkgYWRkaW5nIHVwXG4gICAgLy8gYWxsIHRoZSBzaXplc1xuICAgIHZhciBib3R0b20gPSBwYXJhbXMucG9zaXRpb25EYXRhO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBhcmFtcy5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHBhcmFtcy5jaGlsZHJlbltfaV07XG4gICAgICBib3R0b20gLT0gY2hpbGQudHlwZSA9PT0gXCJrZXJuXCIgPyBjaGlsZC5zaXplIDogY2hpbGQuZWxlbS5oZWlnaHQgKyBjaGlsZC5lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIGRlcHRoID0gYm90dG9tO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiYm90dG9tXCIpIHtcbiAgICBkZXB0aCA9IC1wYXJhbXMucG9zaXRpb25EYXRhO1xuICB9IGVsc2Uge1xuICAgIHZhciBmaXJzdENoaWxkID0gcGFyYW1zLmNoaWxkcmVuWzBdO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGQudHlwZSAhPT0gXCJlbGVtXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgY2hpbGQgbXVzdCBoYXZlIHR5cGUgXCJlbGVtXCIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwic2hpZnRcIikge1xuICAgICAgZGVwdGggPSAtZmlyc3RDaGlsZC5lbGVtLmRlcHRoIC0gcGFyYW1zLnBvc2l0aW9uRGF0YTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wb3NpdGlvblR5cGUgPT09IFwiZmlyc3RCYXNlbGluZVwiKSB7XG4gICAgICBkZXB0aCA9IC1maXJzdENoaWxkLmVsZW0uZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcG9zaXRpb25UeXBlIFwiICsgcGFyYW1zLnBvc2l0aW9uVHlwZSArIFwiLlwiKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoaWxkcmVuOiBwYXJhbXMuY2hpbGRyZW4sXG4gICAgZGVwdGg6IGRlcHRoXG4gIH07XG59O1xuLyoqXG4gKiBNYWtlcyBhIHZlcnRpY2FsIGxpc3QgYnkgc3RhY2tpbmcgZWxlbWVudHMgYW5kIGtlcm5zIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICogQWxsb3dzIGZvciBtYW55IGRpZmZlcmVudCB3YXlzIG9mIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uaW5nIG1ldGhvZC5cbiAqXG4gKiBTZWUgVkxpc3RQYXJhbSBkb2N1bWVudGF0aW9uIGFib3ZlLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21ha2VWTGlzdCA9IGZ1bmN0aW9uIG1ha2VWTGlzdChwYXJhbXMsIG9wdGlvbnMpIHtcbiAgdmFyIF9nZXRWTGlzdENoaWxkcmVuQW5kRCA9IGdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aChwYXJhbXMpLFxuICAgICAgY2hpbGRyZW4gPSBfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQuY2hpbGRyZW4sXG4gICAgICBkZXB0aCA9IF9nZXRWTGlzdENoaWxkcmVuQW5kRC5kZXB0aDsgLy8gQ3JlYXRlIGEgc3RydXQgdGhhdCBpcyB0YWxsZXIgdGhhbiBhbnkgbGlzdCBpdGVtLiBUaGUgc3RydXQgaXMgYWRkZWQgdG9cbiAgLy8gZWFjaCBpdGVtLCB3aGVyZSBpdCB3aWxsIGRldGVybWluZSB0aGUgaXRlbSdzIGJhc2VsaW5lLiBTaW5jZSBpdCBoYXNcbiAgLy8gYG92ZXJmbG93OmhpZGRlbmAsIHRoZSBzdHJ1dCdzIHRvcCBlZGdlIHdpbGwgc2l0IG9uIHRoZSBpdGVtJ3MgbGluZSBib3gnc1xuICAvLyB0b3AgZWRnZSBhbmQgdGhlIHN0cnV0J3MgYm90dG9tIGVkZ2Ugd2lsbCBzaXQgb24gdGhlIGl0ZW0ncyBiYXNlbGluZSxcbiAgLy8gd2l0aCBubyBhZGRpdGlvbmFsIGxpbmUtaGVpZ2h0IHNwYWNpbmcuIFRoaXMgYWxsb3dzIHRoZSBpdGVtIGJhc2VsaW5lIHRvXG4gIC8vIGJlIHBvc2l0aW9uZWQgcHJlY2lzZWx5IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZm9udCBhc2NlbnQgYW5kXG4gIC8vIGxpbmUtaGVpZ2h0LlxuXG5cbiAgdmFyIHBzdHJ1dFNpemUgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgIGlmIChjaGlsZC50eXBlID09PSBcImVsZW1cIikge1xuICAgICAgdmFyIGVsZW0gPSBjaGlsZC5lbGVtO1xuICAgICAgcHN0cnV0U2l6ZSA9IE1hdGgubWF4KHBzdHJ1dFNpemUsIGVsZW0ubWF4Rm9udFNpemUsIGVsZW0uaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwc3RydXRTaXplICs9IDI7XG4gIHZhciBwc3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJwc3RydXRcIl0sIFtdKTtcbiAgcHN0cnV0LnN0eWxlLmhlaWdodCA9IHBzdHJ1dFNpemUgKyBcImVtXCI7IC8vIENyZWF0ZSBhIG5ldyBsaXN0IG9mIGFjdHVhbCBjaGlsZHJlbiBhdCB0aGUgY29ycmVjdCBvZmZzZXRzXG5cbiAgdmFyIHJlYWxDaGlsZHJlbiA9IFtdO1xuICB2YXIgbWluUG9zID0gZGVwdGg7XG4gIHZhciBtYXhQb3MgPSBkZXB0aDtcbiAgdmFyIGN1cnJQb3MgPSBkZXB0aDtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBjaGlsZHJlbi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9jaGlsZCA9IGNoaWxkcmVuW19pMl07XG5cbiAgICBpZiAoX2NoaWxkLnR5cGUgPT09IFwia2VyblwiKSB7XG4gICAgICBjdXJyUG9zICs9IF9jaGlsZC5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2VsZW0gPSBfY2hpbGQuZWxlbTtcbiAgICAgIHZhciBjbGFzc2VzID0gX2NoaWxkLndyYXBwZXJDbGFzc2VzIHx8IFtdO1xuICAgICAgdmFyIHN0eWxlID0gX2NoaWxkLndyYXBwZXJTdHlsZSB8fCB7fTtcbiAgICAgIHZhciBjaGlsZFdyYXAgPSBidWlsZENvbW1vbl9tYWtlU3BhbihjbGFzc2VzLCBbcHN0cnV0LCBfZWxlbV0sIHVuZGVmaW5lZCwgc3R5bGUpO1xuICAgICAgY2hpbGRXcmFwLnN0eWxlLnRvcCA9IC1wc3RydXRTaXplIC0gY3VyclBvcyAtIF9lbGVtLmRlcHRoICsgXCJlbVwiO1xuXG4gICAgICBpZiAoX2NoaWxkLm1hcmdpbkxlZnQpIHtcbiAgICAgICAgY2hpbGRXcmFwLnN0eWxlLm1hcmdpbkxlZnQgPSBfY2hpbGQubWFyZ2luTGVmdDtcbiAgICAgIH1cblxuICAgICAgaWYgKF9jaGlsZC5tYXJnaW5SaWdodCkge1xuICAgICAgICBjaGlsZFdyYXAuc3R5bGUubWFyZ2luUmlnaHQgPSBfY2hpbGQubWFyZ2luUmlnaHQ7XG4gICAgICB9XG5cbiAgICAgIHJlYWxDaGlsZHJlbi5wdXNoKGNoaWxkV3JhcCk7XG4gICAgICBjdXJyUG9zICs9IF9lbGVtLmhlaWdodCArIF9lbGVtLmRlcHRoO1xuICAgIH1cblxuICAgIG1pblBvcyA9IE1hdGgubWluKG1pblBvcywgY3VyclBvcyk7XG4gICAgbWF4UG9zID0gTWF0aC5tYXgobWF4UG9zLCBjdXJyUG9zKTtcbiAgfSAvLyBUaGUgdmxpc3QgY29udGVudHMgZ28gaW4gYSB0YWJsZS1jZWxsIHdpdGggYHZlcnRpY2FsLWFsaWduOmJvdHRvbWAuXG4gIC8vIFRoaXMgY2VsbCdzIGJvdHRvbSBlZGdlIHdpbGwgZGV0ZXJtaW5lIHRoZSBjb250YWluaW5nIHRhYmxlJ3MgYmFzZWxpbmVcbiAgLy8gd2l0aG91dCBvdmVybHkgZXhwYW5kaW5nIHRoZSBjb250YWluaW5nIGxpbmUtYm94LlxuXG5cbiAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3RcIl0sIHJlYWxDaGlsZHJlbik7XG4gIHZsaXN0LnN0eWxlLmhlaWdodCA9IG1heFBvcyArIFwiZW1cIjsgLy8gQSBzZWNvbmQgcm93IGlzIHVzZWQgaWYgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgdmxpc3QncyBkZXB0aC5cblxuICB2YXIgcm93cztcblxuICBpZiAobWluUG9zIDwgMCkge1xuICAgIC8vIFdlIHdpbGwgZGVmaW5lIGRlcHRoIGluIGFuIGVtcHR5IHNwYW4gd2l0aCBkaXNwbGF5OiB0YWJsZS1jZWxsLlxuICAgIC8vIEl0IHNob3VsZCByZW5kZXIgd2l0aCB0aGUgaGVpZ2h0IHRoYXQgd2UgZGVmaW5lLiBCdXQgQ2hyb21lLCBpblxuICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBtb2RlIG9ubHksIHRyZWF0cyB0aGF0IHNwYW4gYXMgaWYgaXQgY29udGFpbnMgc29tZVxuICAgIC8vIHRleHQgY29udGVudC4gQW5kIHRoYXQgbWluLWhlaWdodCBvdmVyLXJpZGVzIG91ciBkZXNpcmVkIGhlaWdodC5cbiAgICAvLyBTbyB3ZSBwdXQgYW5vdGhlciBlbXB0eSBzcGFuIGluc2lkZSB0aGUgZGVwdGggc3RydXQgc3Bhbi5cbiAgICB2YXIgZW1wdHlTcGFuID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW10sIFtdKTtcbiAgICB2YXIgZGVwdGhTdHJ1dCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0XCJdLCBbZW1wdHlTcGFuXSk7XG4gICAgZGVwdGhTdHJ1dC5zdHlsZS5oZWlnaHQgPSAtbWluUG9zICsgXCJlbVwiOyAvLyBTYWZhcmkgd2FudHMgdGhlIGZpcnN0IHJvdyB0byBoYXZlIGlubGluZSBjb250ZW50OyBvdGhlcndpc2UgaXRcbiAgICAvLyBwdXRzIHRoZSBib3R0b20gb2YgdGhlICpzZWNvbmQqIHJvdyBvbiB0aGUgYmFzZWxpbmUuXG5cbiAgICB2YXIgdG9wU3RydXQgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1zXCJdLCBbbmV3IGRvbVRyZWVfU3ltYm9sTm9kZShcIlxcdTIwMEJcIildKTtcbiAgICByb3dzID0gW2J1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0LXJcIl0sIFt2bGlzdCwgdG9wU3RydXRdKSwgYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtclwiXSwgW2RlcHRoU3RydXRdKV07XG4gIH0gZWxzZSB7XG4gICAgcm93cyA9IFtidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1yXCJdLCBbdmxpc3RdKV07XG4gIH1cblxuICB2YXIgdnRhYmxlID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtdFwiXSwgcm93cyk7XG5cbiAgaWYgKHJvd3MubGVuZ3RoID09PSAyKSB7XG4gICAgdnRhYmxlLmNsYXNzZXMucHVzaChcInZsaXN0LXQyXCIpO1xuICB9XG5cbiAgdnRhYmxlLmhlaWdodCA9IG1heFBvcztcbiAgdnRhYmxlLmRlcHRoID0gLW1pblBvcztcbiAgcmV0dXJuIHZ0YWJsZTtcbn07IC8vIEdsdWUgaXMgYSBjb25jZXB0IGZyb20gVGVYIHdoaWNoIGlzIGEgZmxleGlibGUgc3BhY2UgYmV0d2VlbiBlbGVtZW50cyBpblxuLy8gZWl0aGVyIGEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBsaXN0LiBJbiBLYVRlWCwgYXQgbGVhc3QgZm9yIG5vdywgaXQnc1xuLy8gc3RhdGljIHNwYWNlIGJldHdlZW4gZWxlbWVudHMgaW4gYSBob3Jpem9udGFsIGxheW91dC5cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZUdsdWUgPSBmdW5jdGlvbiBtYWtlR2x1ZShtZWFzdXJlbWVudCwgb3B0aW9ucykge1xuICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBzcGFjZVxuICB2YXIgcnVsZSA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcIm1zcGFjZVwiXSwgW10sIG9wdGlvbnMpO1xuICB2YXIgc2l6ZSA9IHVuaXRzX2NhbGN1bGF0ZVNpemUobWVhc3VyZW1lbnQsIG9wdGlvbnMpO1xuICBydWxlLnN0eWxlLm1hcmdpblJpZ2h0ID0gc2l6ZSArIFwiZW1cIjtcbiAgcmV0dXJuIHJ1bGU7XG59OyAvLyBUYWtlcyBmb250IG9wdGlvbnMsIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBmb250TG9va3VwIG5hbWVcblxuXG52YXIgcmV0cmlldmVUZXh0Rm9udE5hbWUgPSBmdW5jdGlvbiByZXRyaWV2ZVRleHRGb250TmFtZShmb250RmFtaWx5LCBmb250V2VpZ2h0LCBmb250U2hhcGUpIHtcbiAgdmFyIGJhc2VGb250TmFtZSA9IFwiXCI7XG5cbiAgc3dpdGNoIChmb250RmFtaWx5KSB7XG4gICAgY2FzZSBcImFtc3JtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIkFNU1wiO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwidGV4dHJtXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIk1haW5cIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHRzZlwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJTYW5zU2VyaWZcIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInRleHR0dFwiOlxuICAgICAgYmFzZUZvbnROYW1lID0gXCJUeXBld3JpdGVyXCI7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBiYXNlRm9udE5hbWUgPSBmb250RmFtaWx5O1xuICAgIC8vIHVzZSBmb250cyBhZGRlZCBieSBhIHBsdWdpblxuICB9XG5cbiAgdmFyIGZvbnRTdHlsZXNOYW1lO1xuXG4gIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRiZlwiICYmIGZvbnRTaGFwZSA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkSXRhbGljXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJCb2xkXCI7XG4gIH0gZWxzZSBpZiAoZm9udFdlaWdodCA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJJdGFsaWNcIjtcbiAgfSBlbHNlIHtcbiAgICBmb250U3R5bGVzTmFtZSA9IFwiUmVndWxhclwiO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VGb250TmFtZSArIFwiLVwiICsgZm9udFN0eWxlc05hbWU7XG59O1xuLyoqXG4gKiBNYXBzIFRlWCBmb250IGNvbW1hbmRzIHRvIG9iamVjdHMgY29udGFpbmluZzpcbiAqIC0gdmFyaWFudDogc3RyaW5nIHVzZWQgZm9yIFwibWF0aHZhcmlhbnRcIiBhdHRyaWJ1dGUgaW4gYnVpbGRNYXRoTUwuanNcbiAqIC0gZm9udE5hbWU6IHRoZSBcInN0eWxlXCIgcGFyYW1ldGVyIHRvIGZvbnRNZXRyaWNzLmdldENoYXJhY3Rlck1ldHJpY3NcbiAqL1xuLy8gQSBtYXAgYmV0d2VlbiB0ZXggZm9udCBjb21tYW5kcyBhbiBNYXRoTUwgbWF0aHZhcmlhbnQgYXR0cmlidXRlIHZhbHVlc1xuXG5cbnZhciBmb250TWFwID0ge1xuICAvLyBzdHlsZXNcbiAgXCJtYXRoYmZcIjoge1xuICAgIHZhcmlhbnQ6IFwiYm9sZFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tQm9sZFwiXG4gIH0sXG4gIFwibWF0aHJtXCI6IHtcbiAgICB2YXJpYW50OiBcIm5vcm1hbFwiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tUmVndWxhclwiXG4gIH0sXG4gIFwidGV4dGl0XCI6IHtcbiAgICB2YXJpYW50OiBcIml0YWxpY1wiLFxuICAgIGZvbnROYW1lOiBcIk1haW4tSXRhbGljXCJcbiAgfSxcbiAgXCJtYXRoaXRcIjoge1xuICAgIHZhcmlhbnQ6IFwiaXRhbGljXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIlxuICB9LFxuICAvLyBEZWZhdWx0IG1hdGggZm9udCwgXCJtYXRobm9ybWFsXCIgYW5kIFwiYm9sZHN5bWJvbFwiIGFyZSBtaXNzaW5nIGJlY2F1c2UgdGhleVxuICAvLyByZXF1aXJlIHRoZSB1c2Ugb2Ygc2V2ZXJhbCBmb250czogTWFpbi1JdGFsaWMgYW5kIE1hdGgtSXRhbGljIGZvciBkZWZhdWx0XG4gIC8vIG1hdGggZm9udCwgTWFpbi1JdGFsaWMsIE1hdGgtSXRhbGljLCBDYWxpZ3JhcGhpYyBmb3IgXCJtYXRobm9ybWFsXCIsIGFuZFxuICAvLyBNYXRoLUJvbGRJdGFsaWMgYW5kIE1haW4tQm9sZCBmb3IgXCJib2xkc3ltYm9sXCIuICBUaGlzIGlzIGhhbmRsZWQgYnkgYVxuICAvLyBzcGVjaWFsIGNhc2UgaW4gbWFrZU9yZCB3aGljaCBlbmRzIHVwIGNhbGxpbmcgbWF0aGRlZmF1bHQsIG1hdGhub3JtYWwsXG4gIC8vIGFuZCBib2xkc3ltYm9sLlxuICAvLyBmYW1pbGllc1xuICBcIm1hdGhiYlwiOiB7XG4gICAgdmFyaWFudDogXCJkb3VibGUtc3RydWNrXCIsXG4gICAgZm9udE5hbWU6IFwiQU1TLVJlZ3VsYXJcIlxuICB9LFxuICBcIm1hdGhjYWxcIjoge1xuICAgIHZhcmlhbnQ6IFwic2NyaXB0XCIsXG4gICAgZm9udE5hbWU6IFwiQ2FsaWdyYXBoaWMtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aGZyYWtcIjoge1xuICAgIHZhcmlhbnQ6IFwiZnJha3R1clwiLFxuICAgIGZvbnROYW1lOiBcIkZyYWt0dXItUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNjclwiOiB7XG4gICAgdmFyaWFudDogXCJzY3JpcHRcIixcbiAgICBmb250TmFtZTogXCJTY3JpcHQtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHNmXCI6IHtcbiAgICB2YXJpYW50OiBcInNhbnMtc2VyaWZcIixcbiAgICBmb250TmFtZTogXCJTYW5zU2VyaWYtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aHR0XCI6IHtcbiAgICB2YXJpYW50OiBcIm1vbm9zcGFjZVwiLFxuICAgIGZvbnROYW1lOiBcIlR5cGV3cml0ZXItUmVndWxhclwiXG4gIH1cbn07XG52YXIgc3ZnRGF0YSA9IHtcbiAgLy8gICBwYXRoLCB3aWR0aCwgaGVpZ2h0XG4gIHZlYzogW1widmVjXCIsIDAuNDcxLCAwLjcxNF0sXG4gIC8vIHZhbHVlcyBmcm9tIHRoZSBmb250IGdseXBoXG4gIG9paW50U2l6ZTE6IFtcIm9paW50U2l6ZTFcIiwgMC45NTcsIDAuNDk5XSxcbiAgLy8gb3ZhbCB0byBvdmVybGF5IHRoZSBpbnRlZ3JhbmRcbiAgb2lpbnRTaXplMjogW1wib2lpbnRTaXplMlwiLCAxLjQ3MiwgMC42NTldLFxuICBvaWlpbnRTaXplMTogW1wib2lpaW50U2l6ZTFcIiwgMS4zMDQsIDAuNDk5XSxcbiAgb2lpaW50U2l6ZTI6IFtcIm9paWludFNpemUyXCIsIDEuOTgsIDAuNjU5XVxufTtcblxudmFyIGJ1aWxkQ29tbW9uX3N0YXRpY1N2ZyA9IGZ1bmN0aW9uIHN0YXRpY1N2Zyh2YWx1ZSwgb3B0aW9ucykge1xuICAvLyBDcmVhdGUgYSBzcGFuIHdpdGggaW5saW5lIFNWRyBmb3IgdGhlIGVsZW1lbnQuXG4gIHZhciBfc3ZnRGF0YSR2YWx1ZSA9IHN2Z0RhdGFbdmFsdWVdLFxuICAgICAgcGF0aE5hbWUgPSBfc3ZnRGF0YSR2YWx1ZVswXSxcbiAgICAgIHdpZHRoID0gX3N2Z0RhdGEkdmFsdWVbMV0sXG4gICAgICBoZWlnaHQgPSBfc3ZnRGF0YSR2YWx1ZVsyXTtcbiAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUoW3BhdGhdLCB7XG4gICAgXCJ3aWR0aFwiOiB3aWR0aCArIFwiZW1cIixcbiAgICBcImhlaWdodFwiOiBoZWlnaHQgKyBcImVtXCIsXG4gICAgLy8gT3ZlcnJpZGUgQ1NTIHJ1bGUgYC5rYXRleCBzdmcgeyB3aWR0aDogMTAwJSB9YFxuICAgIFwic3R5bGVcIjogXCJ3aWR0aDpcIiArIHdpZHRoICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCBcIiArIDEwMDAgKiB3aWR0aCArIFwiIFwiICsgMTAwMCAqIGhlaWdodCxcbiAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogXCJ4TWluWU1pblwiXG4gIH0pO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uX21ha2VTdmdTcGFuKFtcIm92ZXJsYXlcIl0sIFtzdmdOb2RlXSwgb3B0aW9ucyk7XG4gIHNwYW4uaGVpZ2h0ID0gaGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IGhlaWdodCArIFwiZW1cIjtcbiAgc3Bhbi5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJ1aWxkQ29tbW9uID0gKHtcbiAgZm9udE1hcDogZm9udE1hcCxcbiAgbWFrZVN5bWJvbDogYnVpbGRDb21tb25fbWFrZVN5bWJvbCxcbiAgbWF0aHN5bTogYnVpbGRDb21tb25fbWF0aHN5bSxcbiAgbWFrZVNwYW46IGJ1aWxkQ29tbW9uX21ha2VTcGFuLFxuICBtYWtlU3ZnU3BhbjogYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4sXG4gIG1ha2VMaW5lU3BhbjogbWFrZUxpbmVTcGFuLFxuICBtYWtlQW5jaG9yOiBidWlsZENvbW1vbl9tYWtlQW5jaG9yLFxuICBtYWtlRnJhZ21lbnQ6IGJ1aWxkQ29tbW9uX21ha2VGcmFnbWVudCxcbiAgd3JhcEZyYWdtZW50OiBidWlsZENvbW1vbl93cmFwRnJhZ21lbnQsXG4gIG1ha2VWTGlzdDogYnVpbGRDb21tb25fbWFrZVZMaXN0LFxuICBtYWtlT3JkOiBidWlsZENvbW1vbl9tYWtlT3JkLFxuICBtYWtlR2x1ZTogYnVpbGRDb21tb25fbWFrZUdsdWUsXG4gIHN0YXRpY1N2ZzogYnVpbGRDb21tb25fc3RhdGljU3ZnLFxuICBzdmdEYXRhOiBzdmdEYXRhLFxuICB0cnlDb21iaW5lQ2hhcnM6IGJ1aWxkQ29tbW9uX3RyeUNvbWJpbmVDaGFyc1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9wYXJzZU5vZGUuanNcblxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrTm9kZVR5cGUobm9kZSwgdHlwZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHR5cGUgXCIgKyB0eXBlICsgXCIsIGJ1dCBnb3QgXCIgKyAobm9kZSA/IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH0gLy8gJEZsb3dGaXhNZTogVW5zdXJlIHdoeS5cblxuXG4gIHJldHVybiB0eXBlZE5vZGU7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG5vZGUgbW9yZSBzdHJpY3RseSB0eXBlZCBpZmYgaXQgaXMgb2YgdGhlIGdpdmVuIHR5cGUuIE90aGVyd2lzZSxcbiAqIHJldHVybnMgbnVsbC5cbiAqL1xuXG5mdW5jdGlvbiBjaGVja05vZGVUeXBlKG5vZGUsIHR5cGUpIHtcbiAgaWYgKG5vZGUgJiYgbm9kZS50eXBlID09PSB0eXBlKSB7XG4gICAgLy8gVGhlIGRlZmluaXRpb24gb2YgUGFyc2VOb2RlPFRZUEU+IGRvZXNuJ3QgY29tbXVuaWNhdGUgdG8gZmxvdyB0aGF0XG4gICAgLy8gYHR5cGU6IFRZUEVgIChhcyB0aGF0J3Mgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkIGFueXdoZXJlKSwgdGhvdWdoIHRoYXRcbiAgICAvLyBoYXBwZW5zIHRvIGJlIHRydWUgZm9yIGFsbCBvdXIgdmFsdWUgdHlwZXMuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBpdCB3aXRoIHN0cmljdGVyXG4gKiB0eXBpbmcuIFRocm93cyBpZiB0aGUgbm9kZSdzIHR5cGUgZG9lcyBub3QgbWF0Y2guXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0QXRvbUZhbWlseShub2RlLCBmYW1pbHkpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrQXRvbUZhbWlseShub2RlLCBmYW1pbHkpO1xuXG4gIGlmICghdHlwZWROb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9kZSBvZiB0eXBlIFxcXCJhdG9tXFxcIiBhbmQgZmFtaWx5IFxcXCJcIiArIGZhbWlseSArIFwiXFxcIiwgYnV0IGdvdCBcIiArIChub2RlID8gbm9kZS50eXBlID09PSBcImF0b21cIiA/IFwiYXRvbSBvZiBmYW1pbHkgXCIgKyBub2RlLmZhbWlseSA6IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZWROb2RlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub2RlIG1vcmUgc3RyaWN0bHkgdHlwZWQgaWZmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLiBPdGhlcndpc2UsXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cblxuZnVuY3Rpb24gY2hlY2tBdG9tRmFtaWx5KG5vZGUsIGZhbWlseSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLnR5cGUgPT09IFwiYXRvbVwiICYmIG5vZGUuZmFtaWx5ID09PSBmYW1pbHkgPyBub2RlIDogbnVsbDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGFzc2VydFN5bWJvbE5vZGVUeXBlKG5vZGUpIHtcbiAgdmFyIHR5cGVkTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHN5bWJvbCBncm91cCB0eXBlLCBidXQgZ290IFwiICsgKG5vZGUgPyBcIm5vZGUgb2YgdHlwZSBcIiArIG5vZGUudHlwZSA6IFN0cmluZyhub2RlKSkpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVkTm9kZTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGNoZWNrU3ltYm9sTm9kZVR5cGUobm9kZSkge1xuICBpZiAobm9kZSAmJiAobm9kZS50eXBlID09PSBcImF0b21cIiB8fCBOT05fQVRPTVMuaGFzT3duUHJvcGVydHkobm9kZS50eXBlKSkpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3NwYWNpbmdEYXRhLmpzXG4vKipcbiAqIERlc2NyaWJlcyBzcGFjZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2xhc3NlcyBvZiBhdG9tcy5cbiAqL1xudmFyIHRoaW5zcGFjZSA9IHtcbiAgbnVtYmVyOiAzLFxuICB1bml0OiBcIm11XCJcbn07XG52YXIgbWVkaXVtc3BhY2UgPSB7XG4gIG51bWJlcjogNCxcbiAgdW5pdDogXCJtdVwiXG59O1xudmFyIHRoaWNrc3BhY2UgPSB7XG4gIG51bWJlcjogNSxcbiAgdW5pdDogXCJtdVwiXG59OyAvLyBNYWtpbmcgdGhlIHR5cGUgYmVsb3cgZXhhY3Qgd2l0aCBhbGwgb3B0aW9uYWwgZmllbGRzIGRvZXNuJ3Qgd29yayBkdWUgdG9cbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzQ1ODJcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzU2ODhcbi8vIEhvd2V2ZXIsIHNpbmNlICphbGwqIGZpZWxkcyBhcmUgb3B0aW9uYWwsICRTaGFwZTw+IHdvcmtzIGFzIHN1Z2dlc3RlZCBpbiA1Njg4XG4vLyBhYm92ZS5cblxuLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBkaXNwbGF5IGFuZCB0ZXh0IHN0eWxlc1xudmFyIHNwYWNpbmdzID0ge1xuICBtb3JkOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtYmluOiB7XG4gICAgbW9yZDogbWVkaXVtc3BhY2UsXG4gICAgbW9wOiBtZWRpdW1zcGFjZSxcbiAgICBtb3BlbjogbWVkaXVtc3BhY2UsXG4gICAgbWlubmVyOiBtZWRpdW1zcGFjZVxuICB9LFxuICBtcmVsOiB7XG4gICAgbW9yZDogdGhpY2tzcGFjZSxcbiAgICBtb3A6IHRoaWNrc3BhY2UsXG4gICAgbW9wZW46IHRoaWNrc3BhY2UsXG4gICAgbWlubmVyOiB0aGlja3NwYWNlXG4gIH0sXG4gIG1vcGVuOiB7fSxcbiAgbWNsb3NlOiB7XG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbWJpbjogbWVkaXVtc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9LFxuICBtcHVuY3Q6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2UsXG4gICAgbXJlbDogdGhpY2tzcGFjZSxcbiAgICBtb3BlbjogdGhpbnNwYWNlLFxuICAgIG1jbG9zZTogdGhpbnNwYWNlLFxuICAgIG1wdW5jdDogdGhpbnNwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1pbm5lcjoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1vcGVuOiB0aGluc3BhY2UsXG4gICAgbXB1bmN0OiB0aGluc3BhY2UsXG4gICAgbWlubmVyOiB0aGluc3BhY2VcbiAgfVxufTsgLy8gU3BhY2luZyByZWxhdGlvbnNoaXBzIGZvciBzY3JpcHQgYW5kIHNjcmlwdHNjcmlwdCBzdHlsZXNcblxudmFyIHRpZ2h0U3BhY2luZ3MgPSB7XG4gIG1vcmQ6IHtcbiAgICBtb3A6IHRoaW5zcGFjZVxuICB9LFxuICBtb3A6IHtcbiAgICBtb3JkOiB0aGluc3BhY2UsXG4gICAgbW9wOiB0aGluc3BhY2VcbiAgfSxcbiAgbWJpbjoge30sXG4gIG1yZWw6IHt9LFxuICBtb3Blbjoge30sXG4gIG1jbG9zZToge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH0sXG4gIG1wdW5jdDoge30sXG4gIG1pbm5lcjoge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH1cbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWZpbmVGdW5jdGlvbi5qc1xuXG5cbi8qKlxuICogQWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb25zLlxuICogYGZ1bmN0aW9ucy5qc2AganVzdCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkuXG4gKi9cbnZhciBfZnVuY3Rpb25zID0ge307XG4vKipcbiAqIEFsbCBIVE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9odG1sR3JvdXBCdWlsZGVycyA9IHt9O1xuLyoqXG4gKiBBbGwgTWF0aE1MIGJ1aWxkZXJzLiBTaG91bGQgYmUgb25seSB1c2VkIGluIHRoZSBgZGVmaW5lKmAgYW5kIHRoZSBgYnVpbGQqTUxgXG4gKiBmdW5jdGlvbnMuXG4gKi9cblxudmFyIF9tYXRobWxHcm91cEJ1aWxkZXJzID0ge307XG5mdW5jdGlvbiBkZWZpbmVGdW5jdGlvbihfcmVmKSB7XG4gIHZhciB0eXBlID0gX3JlZi50eXBlLFxuICAgICAgbmFtZXMgPSBfcmVmLm5hbWVzLFxuICAgICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgaGFuZGxlciA9IF9yZWYuaGFuZGxlcixcbiAgICAgIGh0bWxCdWlsZGVyID0gX3JlZi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmLm1hdGhtbEJ1aWxkZXI7XG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlcyBvZiBmdW5jdGlvbnNcbiAgdmFyIGRhdGEgPSB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBudW1BcmdzOiBwcm9wcy5udW1BcmdzLFxuICAgIGFyZ1R5cGVzOiBwcm9wcy5hcmdUeXBlcyxcbiAgICBncmVlZGluZXNzOiBwcm9wcy5ncmVlZGluZXNzID09PSB1bmRlZmluZWQgPyAxIDogcHJvcHMuZ3JlZWRpbmVzcyxcbiAgICBhbGxvd2VkSW5UZXh0OiAhIXByb3BzLmFsbG93ZWRJblRleHQsXG4gICAgYWxsb3dlZEluTWF0aDogcHJvcHMuYWxsb3dlZEluTWF0aCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHByb3BzLmFsbG93ZWRJbk1hdGgsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiBwcm9wcy5udW1PcHRpb25hbEFyZ3MgfHwgMCxcbiAgICBpbmZpeDogISFwcm9wcy5pbmZpeCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIF9mdW5jdGlvbnNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKGh0bWxCdWlsZGVyKSB7XG4gICAgICBfaHRtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBodG1sQnVpbGRlcjtcbiAgICB9XG5cbiAgICBpZiAobWF0aG1sQnVpbGRlcikge1xuICAgICAgX21hdGhtbEdyb3VwQnVpbGRlcnNbdHlwZV0gPSBtYXRobWxCdWlsZGVyO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBVc2UgdGhpcyB0byByZWdpc3RlciBvbmx5IHRoZSBIVE1MIGFuZCBNYXRoTUwgYnVpbGRlcnMgZm9yIGEgZnVuY3Rpb24gKGUuZy5cbiAqIGlmIHRoZSBmdW5jdGlvbidzIFBhcnNlTm9kZSBpcyBnZW5lcmF0ZWQgaW4gUGFyc2VyLmpzIHJhdGhlciB0aGFuIHZpYSBhXG4gKiBzdGFuZC1hbG9uZSBoYW5kbGVyIHByb3ZpZGVkIHRvIGBkZWZpbmVGdW5jdGlvbmApLlxuICovXG5cbmZ1bmN0aW9uIGRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoX3JlZjIpIHtcbiAgdmFyIHR5cGUgPSBfcmVmMi50eXBlLFxuICAgICAgaHRtbEJ1aWxkZXIgPSBfcmVmMi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmMi5tYXRobWxCdWlsZGVyO1xuICBkZWZpbmVGdW5jdGlvbih7XG4gICAgdHlwZTogdHlwZSxcbiAgICBuYW1lczogW10sXG4gICAgcHJvcHM6IHtcbiAgICAgIG51bUFyZ3M6IDBcbiAgICB9LFxuICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBiZSBjYWxsZWQuJyk7XG4gICAgfSxcbiAgICBodG1sQnVpbGRlcjogaHRtbEJ1aWxkZXIsXG4gICAgbWF0aG1sQnVpbGRlcjogbWF0aG1sQnVpbGRlclxuICB9KTtcbn0gLy8gU2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgYnVpbGRIVE1ML2J1aWxkTWF0aE1MIGZ1bmN0aW9uIGV4cGVjdHMgYVxuLy8gbGlzdCBvZiBlbGVtZW50cywgd2Ugbm9ybWFsaXplIGZvciBkaWZmZXJlbnQga2luZHMgb2YgYXJndW1lbnRzXG5cbnZhciBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudCA9IGZ1bmN0aW9uIG9yZGFyZ3VtZW50KGFyZykge1xuICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnLCBcIm9yZGdyb3VwXCIpO1xuICByZXR1cm4gbm9kZSA/IG5vZGUuYm9keSA6IFthcmddO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkSFRNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgZG9lcyB0aGUgbWFpbiB3b3JrIG9mIGJ1aWxkaW5nIGEgZG9tVHJlZSBzdHJ1Y3R1cmUgZnJvbSBhIHBhcnNlXG4gKiB0cmVlLiBUaGUgZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZEhUTUxgIGZ1bmN0aW9uLCB3aGljaCB0YWtlcyBhIHBhcnNlIHRyZWUuXG4gKiBUaGVuLCB0aGUgYnVpbGRFeHByZXNzaW9uLCBidWlsZEdyb3VwLCBhbmQgdmFyaW91cyBncm91cEJ1aWxkZXJzIGZ1bmN0aW9uc1xuICogYXJlIGNhbGxlZCwgdG8gcHJvZHVjZSBhIGZpbmFsIEhUTUwgdHJlZS5cbiAqL1xuXG5cblxuXG5cblxuXG5cblxudmFyIGJ1aWxkSFRNTF9tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuOyAvLyBCaW5hcnkgYXRvbXMgKGZpcnN0IGNsYXNzIGBtYmluYCkgY2hhbmdlIGludG8gb3JkaW5hcnkgYXRvbXMgKGBtb3JkYClcbi8vIGRlcGVuZGluZyBvbiB0aGVpciBzdXJyb3VuZGluZ3MuIFNlZSBUZVhib29rIHBnLiA0NDItNDQ2LCBSdWxlcyA1IGFuZCA2LFxuLy8gYW5kIHRoZSB0ZXh0IGJlZm9yZSBSdWxlIDE5LlxuXG52YXIgYmluTGVmdENhbmNlbGxlciA9IFtcImxlZnRtb3N0XCIsIFwibWJpblwiLCBcIm1vcGVuXCIsIFwibXJlbFwiLCBcIm1vcFwiLCBcIm1wdW5jdFwiXTtcbnZhciBiaW5SaWdodENhbmNlbGxlciA9IFtcInJpZ2h0bW9zdFwiLCBcIm1yZWxcIiwgXCJtY2xvc2VcIiwgXCJtcHVuY3RcIl07XG52YXIgc3R5bGVNYXAgPSB7XG4gIFwiZGlzcGxheVwiOiBzcmNfU3R5bGUuRElTUExBWSxcbiAgXCJ0ZXh0XCI6IHNyY19TdHlsZS5URVhULFxuICBcInNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBULFxuICBcInNjcmlwdHNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59O1xudmFyIERvbUVudW0gPSB7XG4gIG1vcmQ6IFwibW9yZFwiLFxuICBtb3A6IFwibW9wXCIsXG4gIG1iaW46IFwibWJpblwiLFxuICBtcmVsOiBcIm1yZWxcIixcbiAgbW9wZW46IFwibW9wZW5cIixcbiAgbWNsb3NlOiBcIm1jbG9zZVwiLFxuICBtcHVuY3Q6IFwibXB1bmN0XCIsXG4gIG1pbm5lcjogXCJtaW5uZXJcIlxufTtcblxuLyoqXG4gKiBUYWtlIGEgbGlzdCBvZiBub2RlcywgYnVpbGQgdGhlbSBpbiBvcmRlciwgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGJ1aWx0XG4gKiBub2Rlcy4gZG9jdW1lbnRGcmFnbWVudHMgYXJlIGZsYXR0ZW5lZCBpbnRvIHRoZWlyIGNvbnRlbnRzLCBzbyB0aGVcbiAqIHJldHVybmVkIGxpc3QgY29udGFpbnMgbm8gZnJhZ21lbnRzLiBgaXNSZWFsR3JvdXBgIGlzIHRydWUgaWYgYGV4cHJlc3Npb25gXG4gKiBpcyBhIHJlYWwgZ3JvdXAgKG5vIGF0b21zIHdpbGwgYmUgYWRkZWQgb24gZWl0aGVyIHNpZGUpLCBhcyBvcHBvc2VkIHRvXG4gKiBhIHBhcnRpYWwgZ3JvdXAgKGUuZy4gb25lIGNyZWF0ZWQgYnkgXFxjb2xvcikuIGBzdXJyb3VuZGluZ2AgaXMgYW4gYXJyYXlcbiAqIGNvbnNpc3RpbmcgdHlwZSBvZiBub2RlcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0LlxuICovXG52YXIgYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIGJ1aWxkRXhwcmVzc2lvbihleHByZXNzaW9uLCBvcHRpb25zLCBpc1JlYWxHcm91cCwgc3Vycm91bmRpbmcpIHtcbiAgaWYgKHN1cnJvdW5kaW5nID09PSB2b2lkIDApIHtcbiAgICBzdXJyb3VuZGluZyA9IFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIC8vIFBhcnNlIGV4cHJlc3Npb25zIGludG8gYGdyb3Vwc2AuXG4gIHZhciBncm91cHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb3V0cHV0ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZXhwcmVzc2lvbltpXSwgb3B0aW9ucyk7XG5cbiAgICBpZiAob3V0cHV0IGluc3RhbmNlb2YgdHJlZV9Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBvdXRwdXQuY2hpbGRyZW47XG4gICAgICBncm91cHMucHVzaC5hcHBseShncm91cHMsIGNoaWxkcmVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzLnB1c2gob3V0cHV0KTtcbiAgICB9XG4gIH0gLy8gSWYgYGV4cHJlc3Npb25gIGlzIGEgcGFydGlhbCBncm91cCwgbGV0IHRoZSBwYXJlbnQgaGFuZGxlIHNwYWNpbmdzXG4gIC8vIHRvIGF2b2lkIHByb2Nlc3NpbmcgZ3JvdXBzIG11bHRpcGxlIHRpbWVzLlxuXG5cbiAgaWYgKCFpc1JlYWxHcm91cCkge1xuICAgIHJldHVybiBncm91cHM7XG4gIH1cblxuICB2YXIgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGlmIChleHByZXNzaW9uLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBub2RlID0gY2hlY2tOb2RlVHlwZShleHByZXNzaW9uWzBdLCBcInNpemluZ1wiKSB8fCBjaGVja05vZGVUeXBlKGV4cHJlc3Npb25bMF0sIFwic3R5bGluZ1wiKTtcblxuICAgIGlmICghbm9kZSkgey8vIE5vIG1hdGNoLlxuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInNpemluZ1wiKSB7XG4gICAgICBnbHVlT3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShub2RlLnNpemUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInN0eWxpbmdcIikge1xuICAgICAgZ2x1ZU9wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlTWFwW25vZGUuc3R5bGVdKTtcbiAgICB9XG4gIH0gLy8gRHVtbXkgc3BhbnMgZm9yIGRldGVybWluaW5nIHNwYWNpbmdzIGJldHdlZW4gc3Vycm91bmRpbmcgYXRvbXMuXG4gIC8vIElmIGBleHByZXNzaW9uYCBoYXMgbm8gYXRvbXMgb24gdGhlIGxlZnQgb3IgcmlnaHQsIGNsYXNzIFwibGVmdG1vc3RcIlxuICAvLyBvciBcInJpZ2h0bW9zdFwiLCByZXNwZWN0aXZlbHksIGlzIHVzZWQgdG8gaW5kaWNhdGUgaXQuXG5cblxuICB2YXIgZHVtbXlQcmV2ID0gYnVpbGRIVE1MX21ha2VTcGFuKFtzdXJyb3VuZGluZ1swXSB8fCBcImxlZnRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7XG4gIHZhciBkdW1teU5leHQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW3N1cnJvdW5kaW5nWzFdIHx8IFwicmlnaHRtb3N0XCJdLCBbXSwgb3B0aW9ucyk7IC8vIFRPRE86IFRoZXNlIGNvZGUgYXNzdW1lcyB0aGF0IGEgbm9kZSdzIG1hdGggY2xhc3MgaXMgdGhlIGZpcnN0IGVsZW1lbnRcbiAgLy8gb2YgaXRzIGBjbGFzc2VzYCBhcnJheS4gQSBsYXRlciBjbGVhbnVwIHNob3VsZCBlbnN1cmUgdGhpcywgZm9yXG4gIC8vIGluc3RhbmNlIGJ5IGNoYW5naW5nIHRoZSBzaWduYXR1cmUgb2YgYG1ha2VTcGFuYC5cbiAgLy8gQmVmb3JlIGRldGVybWluaW5nIHdoYXQgc3BhY2VzIHRvIGluc2VydCwgcGVyZm9ybSBiaW4gY2FuY2VsbGF0aW9uLlxuICAvLyBCaW5hcnkgb3BlcmF0b3JzIGNoYW5nZSB0byBvcmRpbmFyeSBzeW1ib2xzIGluIHNvbWUgY29udGV4dHMuXG5cbiAgdHJhdmVyc2VOb25TcGFjZU5vZGVzKGdyb3VwcywgZnVuY3Rpb24gKG5vZGUsIHByZXYpIHtcbiAgICB2YXIgcHJldlR5cGUgPSBwcmV2LmNsYXNzZXNbMF07XG4gICAgdmFyIHR5cGUgPSBub2RlLmNsYXNzZXNbMF07XG5cbiAgICBpZiAocHJldlR5cGUgPT09IFwibWJpblwiICYmIHV0aWxzLmNvbnRhaW5zKGJpblJpZ2h0Q2FuY2VsbGVyLCB0eXBlKSkge1xuICAgICAgcHJldi5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1iaW5cIiAmJiB1dGlscy5jb250YWlucyhiaW5MZWZ0Q2FuY2VsbGVyLCBwcmV2VHlwZSkpIHtcbiAgICAgIG5vZGUuY2xhc3Nlc1swXSA9IFwibW9yZFwiO1xuICAgIH1cbiAgfSwge1xuICAgIG5vZGU6IGR1bW15UHJldlxuICB9LCBkdW1teU5leHQpO1xuICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMoZ3JvdXBzLCBmdW5jdGlvbiAobm9kZSwgcHJldikge1xuICAgIHZhciBwcmV2VHlwZSA9IGdldFR5cGVPZkRvbVRyZWUocHJldik7XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlT2ZEb21UcmVlKG5vZGUpOyAvLyAnbXRpZ2h0JyBpbmRpY2F0ZXMgdGhhdCB0aGUgbm9kZSBpcyBzY3JpcHQgb3Igc2NyaXB0c2NyaXB0IHN0eWxlLlxuXG4gICAgdmFyIHNwYWNlID0gcHJldlR5cGUgJiYgdHlwZSA/IG5vZGUuaGFzQ2xhc3MoXCJtdGlnaHRcIikgPyB0aWdodFNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IHNwYWNpbmdzW3ByZXZUeXBlXVt0eXBlXSA6IG51bGw7XG5cbiAgICBpZiAoc3BhY2UpIHtcbiAgICAgIC8vIEluc2VydCBnbHVlIChzcGFjaW5nKSBhZnRlciB0aGUgYHByZXZgLlxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKHNwYWNlLCBnbHVlT3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAgbm9kZTogZHVtbXlQcmV2XG4gIH0sIGR1bW15TmV4dCk7XG4gIHJldHVybiBncm91cHM7XG59OyAvLyBEZXB0aC1maXJzdCB0cmF2ZXJzZSBub24tc3BhY2UgYG5vZGVzYCwgY2FsbGluZyBgY2FsbGJhY2tgIHdpdGggdGhlIGN1cnJlbnQgYW5kXG4vLyBwcmV2aW91cyBub2RlIGFzIGFyZ3VtZW50cywgb3B0aW9uYWxseSByZXR1cm5pbmcgYSBub2RlIHRvIGluc2VydCBhZnRlciB0aGVcbi8vIHByZXZpb3VzIG5vZGUuIGBwcmV2YCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgcHJldmlvdXMgbm9kZSBhbmQgYGluc2VydEFmdGVyYFxuLy8gZnVuY3Rpb24gdG8gaW5zZXJ0IGFmdGVyIGl0LiBgbmV4dGAgaXMgYSBub2RlIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgcmlnaHQuXG4vLyBVc2VkIGZvciBiaW4gY2FuY2VsbGF0aW9uIGFuZCBpbnNlcnRpbmcgc3BhY2luZ3MuXG5cbnZhciB0cmF2ZXJzZU5vblNwYWNlTm9kZXMgPSBmdW5jdGlvbiB0cmF2ZXJzZU5vblNwYWNlTm9kZXMobm9kZXMsIGNhbGxiYWNrLCBwcmV2LCBuZXh0KSB7XG4gIGlmIChuZXh0KSB7XG4gICAgLy8gdGVtcG9yYXJpbHkgYXBwZW5kIHRoZSByaWdodCBub2RlLCBpZiBleGlzdHNcbiAgICBub2Rlcy5wdXNoKG5leHQpO1xuICB9XG5cbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgICBpZiAocGFydGlhbEdyb3VwKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgREZTXG4gICAgICAvLyAkRmxvd0ZpeE1lOiBtYWtlIG5vZGVzIGEgJFJlYWRPbmx5QXJyYXkgYnkgcmV0dXJuaW5nIGEgbmV3IGFycmF5XG4gICAgICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMocGFydGlhbEdyb3VwLmNoaWxkcmVuLCBjYWxsYmFjaywgcHJldik7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIElnbm9yZSBleHBsaWNpdCBzcGFjZXMgKGUuZy4sIFxcOywgXFwsKSB3aGVuIGRldGVybWluaW5nIHdoYXQgaW1wbGljaXRcbiAgICAvLyBzcGFjaW5nIHNob3VsZCBnbyBiZXR3ZWVuIGF0b21zIG9mIGRpZmZlcmVudCBjbGFzc2VzXG5cblxuICAgIGlmIChub2RlLmNsYXNzZXNbMF0gPT09IFwibXNwYWNlXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhub2RlLCBwcmV2Lm5vZGUpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKHByZXYuaW5zZXJ0QWZ0ZXIpIHtcbiAgICAgICAgcHJldi5pbnNlcnRBZnRlcihyZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaW5zZXJ0IGF0IGZyb250XG4gICAgICAgIG5vZGVzLnVuc2hpZnQocmVzdWx0KTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXYubm9kZSA9IG5vZGU7XG5cbiAgICBwcmV2Lmluc2VydEFmdGVyID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgbm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgbik7XG4gICAgICAgIGkrKztcbiAgICAgIH07XG4gICAgfShpKTtcbiAgfVxuXG4gIGlmIChuZXh0KSB7XG4gICAgbm9kZXMucG9wKCk7XG4gIH1cbn07IC8vIENoZWNrIGlmIGdpdmVuIG5vZGUgaXMgYSBwYXJ0aWFsIGdyb3VwLCBpLmUuLCBkb2VzIG5vdCBhZmZlY3Qgc3BhY2luZyBhcm91bmQuXG5cblxudmFyIGJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cCA9IGZ1bmN0aW9uIGNoZWNrUGFydGlhbEdyb3VwKG5vZGUpIHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiB0cmVlX0RvY3VtZW50RnJhZ21lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIGRvbVRyZWVfQW5jaG9yKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07IC8vIFJldHVybiB0aGUgb3V0ZXJtb3N0IG5vZGUgb2YgYSBkb21UcmVlLlxuXG5cbnZhciBnZXRPdXRlcm1vc3ROb2RlID0gZnVuY3Rpb24gZ2V0T3V0ZXJtb3N0Tm9kZShub2RlLCBzaWRlKSB7XG4gIHZhciBwYXJ0aWFsR3JvdXAgPSBidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSk7XG5cbiAgaWYgKHBhcnRpYWxHcm91cCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcnRpYWxHcm91cC5jaGlsZHJlbjtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlmIChzaWRlID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dGVybW9zdE5vZGUoY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0sIFwicmlnaHRcIik7XG4gICAgICB9IGVsc2UgaWYgKHNpZGUgPT09IFwibGVmdFwiKSB7XG4gICAgICAgIHJldHVybiBnZXRPdXRlcm1vc3ROb2RlKGNoaWxkcmVuWzBdLCBcImxlZnRcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBSZXR1cm4gbWF0aCBhdG9tIGNsYXNzIChtY2xhc3MpIG9mIGEgZG9tVHJlZS5cbi8vIElmIGBzaWRlYCBpcyBnaXZlbiwgaXQgd2lsbCBnZXQgdGhlIHR5cGUgb2YgdGhlIG91dGVybW9zdCBub2RlIGF0IGdpdmVuIHNpZGUuXG5cblxudmFyIGdldFR5cGVPZkRvbVRyZWUgPSBmdW5jdGlvbiBnZXRUeXBlT2ZEb21UcmVlKG5vZGUsIHNpZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc2lkZSkge1xuICAgIG5vZGUgPSBnZXRPdXRlcm1vc3ROb2RlKG5vZGUsIHNpZGUpO1xuICB9IC8vIFRoaXMgbWFrZXMgYSBsb3Qgb2YgYXNzdW1wdGlvbnMgYXMgdG8gd2hlcmUgdGhlIHR5cGUgb2YgYXRvbVxuICAvLyBhcHBlYXJzLiAgV2Ugc2hvdWxkIGRvIGEgYmV0dGVyIGpvYiBvZiBlbmZvcmNpbmcgdGhpcy5cblxuXG4gIHJldHVybiBEb21FbnVtW25vZGUuY2xhc3Nlc1swXV0gfHwgbnVsbDtcbn07XG52YXIgbWFrZU51bGxEZWxpbWl0ZXIgPSBmdW5jdGlvbiBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBjbGFzc2VzKSB7XG4gIHZhciBtb3JlQ2xhc3NlcyA9IFtcIm51bGxkZWxpbWl0ZXJcIl0uY29uY2F0KG9wdGlvbnMuYmFzZVNpemluZ0NsYXNzZXMoKSk7XG4gIHJldHVybiBidWlsZEhUTUxfbWFrZVNwYW4oY2xhc3Nlcy5jb25jYXQobW9yZUNsYXNzZXMpKTtcbn07XG4vKipcbiAqIGJ1aWxkR3JvdXAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cCBhbmQgY2FsbHMgdGhlIGNvcnJlY3QgZ3JvdXBUeXBlXG4gKiBmdW5jdGlvbiBmb3IgaXQuIEl0IGFsc28gaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gb2Ygc2l6ZSBhbmQgc3R5bGUgY2hhbmdlc1xuICogYmV0d2VlbiBwYXJlbnRzIGFuZCBjaGlsZHJlbi5cbiAqL1xuXG52YXIgYnVpbGRIVE1MX2J1aWxkR3JvdXAgPSBmdW5jdGlvbiBidWlsZEdyb3VwKGdyb3VwLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIGJ1aWxkSFRNTF9tYWtlU3BhbigpO1xuICB9XG5cbiAgaWYgKF9odG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgZ3JvdXBOb2RlID0gX2h0bWxHcm91cEJ1aWxkZXJzW2dyb3VwLnR5cGVdKGdyb3VwLCBvcHRpb25zKTsgLy8gSWYgdGhlIHNpemUgY2hhbmdlZCBiZXR3ZWVuIHRoZSBwYXJlbnQgYW5kIHRoZSBjdXJyZW50IGdyb3VwLCBhY2NvdW50XG4gICAgLy8gZm9yIHRoYXQgc2l6ZSBkaWZmZXJlbmNlLlxuXG4gICAgaWYgKGJhc2VPcHRpb25zICYmIG9wdGlvbnMuc2l6ZSAhPT0gYmFzZU9wdGlvbnMuc2l6ZSkge1xuICAgICAgZ3JvdXBOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKG9wdGlvbnMuc2l6aW5nQ2xhc3NlcyhiYXNlT3B0aW9ucyksIFtncm91cE5vZGVdLCBvcHRpb25zKTtcbiAgICAgIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmhlaWdodCAqPSBtdWx0aXBsaWVyO1xuICAgICAgZ3JvdXBOb2RlLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwTm9kZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJHb3QgZ3JvdXAgb2YgdW5rbm93biB0eXBlOiAnXCIgKyBncm91cC50eXBlICsgXCInXCIpO1xuICB9XG59O1xuLyoqXG4gKiBDb21iaW5lIGFuIGFycmF5IG9mIEhUTUwgRE9NIG5vZGVzIChlLmcuLCB0aGUgb3V0cHV0IG9mIGBidWlsZEV4cHJlc3Npb25gKVxuICogaW50byBhbiB1bmJyZWFrYWJsZSBIVE1MIG5vZGUgb2YgY2xhc3MgLmJhc2UsIHdpdGggcHJvcGVyIHN0cnV0cyB0b1xuICogZ3VhcmFudGVlIGNvcnJlY3QgdmVydGljYWwgZXh0ZW50LiAgYGJ1aWxkSFRNTGAgY2FsbHMgdGhpcyByZXBlYXRlZGx5IHRvXG4gKiBtYWtlIHVwIHRoZSBlbnRpcmUgZXhwcmVzc2lvbiBhcyBhIHNlcXVlbmNlIG9mIHVuYnJlYWthYmxlIHVuaXRzLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTFVuYnJlYWthYmxlKGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gIC8vIENvbXB1dGUgaGVpZ2h0IGFuZCBkZXB0aCBvZiB0aGlzIGNodW5rLlxuICB2YXIgYm9keSA9IGJ1aWxkSFRNTF9tYWtlU3BhbihbXCJiYXNlXCJdLCBjaGlsZHJlbiwgb3B0aW9ucyk7IC8vIEFkZCBzdHJ1dCwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSB0b3Agb2YgdGhlIEhUTUwgZWxlbWVudCBmYWxscyBhdFxuICAvLyB0aGUgaGVpZ2h0IG9mIHRoZSBleHByZXNzaW9uLCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgSFRNTCBlbGVtZW50XG4gIC8vIGZhbGxzIGF0IHRoZSBkZXB0aCBvZiB0aGUgZXhwcmVzc2lvbi5cbiAgLy8gV2UgdXNlZCB0byBoYXZlIHNlcGFyYXRlIHRvcCBhbmQgYm90dG9tIHN0cnV0cywgd2hlcmUgdGhlIGJvdHRvbSBzdHJ1dFxuICAvLyB3b3VsZCBsaWtlIHRvIHVzZSBgdmVydGljYWwtYWxpZ246IHRvcGAsIGJ1dCBpbiBJRSA5IHRoaXMgbG93ZXJzIHRoZVxuICAvLyBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBib3R0b20gb2YgdGhpcyBzdHJ1dCAoaW5zdGVhZCBvZiBzdGF5aW5nIGluXG4gIC8vIHRoZSBub3JtYWwgcGxhY2UpIHNvIHdlIHVzZSBhbiBhYnNvbHV0ZSB2YWx1ZSBmb3IgdmVydGljYWwtYWxpZ24gaW5zdGVhZC5cblxuICB2YXIgc3RydXQgPSBidWlsZEhUTUxfbWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBib2R5LmhlaWdodCArIGJvZHkuZGVwdGggKyBcImVtXCI7XG4gIHN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtYm9keS5kZXB0aCArIFwiZW1cIjtcbiAgYm9keS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTtcbiAgcmV0dXJuIGJvZHk7XG59XG4vKipcbiAqIFRha2UgYW4gZW50aXJlIHBhcnNlIHRyZWUsIGFuZCBidWlsZCBpdCBpbnRvIGFuIGFwcHJvcHJpYXRlIHNldCBvZiBIVE1MXG4gKiBub2Rlcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKSB7XG4gIC8vIFN0cmlwIG9mZiBvdXRlciB0YWcgd3JhcHBlciBmb3IgcHJvY2Vzc2luZyBiZWxvdy5cbiAgdmFyIHRhZyA9IG51bGw7XG5cbiAgaWYgKHRyZWUubGVuZ3RoID09PSAxICYmIHRyZWVbMF0udHlwZSA9PT0gXCJ0YWdcIikge1xuICAgIHRhZyA9IHRyZWVbMF0udGFnO1xuICAgIHRyZWUgPSB0cmVlWzBdLmJvZHk7XG4gIH0gLy8gQnVpbGQgdGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGluIHRoZSB0cmVlXG5cblxuICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucywgdHJ1ZSk7XG4gIHZhciBjaGlsZHJlbiA9IFtdOyAvLyBDcmVhdGUgb25lIGJhc2Ugbm9kZSBmb3IgZWFjaCBjaHVuayBiZXR3ZWVuIHBvdGVudGlhbCBsaW5lIGJyZWFrcy5cbiAgLy8gVGhlIFRlWEJvb2sgW3AuMTczXSBzYXlzIFwiQSBmb3JtdWxhIHdpbGwgYmUgYnJva2VuIG9ubHkgYWZ0ZXIgYVxuICAvLyByZWxhdGlvbiBzeW1ib2wgbGlrZSAkPSQgb3IgJDwkIG9yICRcXHJpZ2h0YXJyb3ckLCBvciBhZnRlciBhIGJpbmFyeVxuICAvLyBvcGVyYXRpb24gc3ltYm9sIGxpa2UgJCskIG9yICQtJCBvciAkXFx0aW1lcyQsIHdoZXJlIHRoZSByZWxhdGlvbiBvclxuICAvLyBiaW5hcnkgb3BlcmF0aW9uIGlzIG9uIHRoZSBgYG91dGVyIGxldmVsJycgb2YgdGhlIGZvcm11bGEgKGkuZS4sIG5vdFxuICAvLyBlbmNsb3NlZCBpbiB7Li4ufSBhbmQgbm90IHBhcnQgb2YgYW4gXFxvdmVyIGNvbnN0cnVjdGlvbikuXCJcblxuICB2YXIgcGFydHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgaWYgKGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtYmluXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJtcmVsXCIpIHx8IGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJhbGxvd2JyZWFrXCIpKSB7XG4gICAgICAvLyBQdXQgYW55IHBvc3Qtb3BlcmF0b3IgZ2x1ZSBvbiBzYW1lIGxpbmUgYXMgb3BlcmF0b3IuXG4gICAgICAvLyBXYXRjaCBmb3IgXFxub2JyZWFrIGFsb25nIHRoZSB3YXksIGFuZCBzdG9wIGF0IFxcbmV3bGluZS5cbiAgICAgIHZhciBub2JyZWFrID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlIChpIDwgZXhwcmVzc2lvbi5sZW5ndGggLSAxICYmIGV4cHJlc3Npb25baSArIDFdLmhhc0NsYXNzKFwibXNwYWNlXCIpICYmICFleHByZXNzaW9uW2kgKyAxXS5oYXNDbGFzcyhcIm5ld2xpbmVcIikpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25baV0pO1xuXG4gICAgICAgIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibm9icmVha1wiKSkge1xuICAgICAgICAgIG5vYnJlYWsgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIERvbid0IGFsbG93IGJyZWFrIGlmIFxcbm9icmVhayBhbW9uZyB0aGUgcG9zdC1vcGVyYXRvciBnbHVlLlxuXG5cbiAgICAgIGlmICghbm9icmVhaykge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gICAgICAgIHBhcnRzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChleHByZXNzaW9uW2ldLmhhc0NsYXNzKFwibmV3bGluZVwiKSkge1xuICAgICAgLy8gV3JpdGUgdGhlIGxpbmUgZXhjZXB0IHRoZSBuZXdsaW5lXG4gICAgICBwYXJ0cy5wb3AoKTtcblxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChidWlsZEhUTUxVbmJyZWFrYWJsZShwYXJ0cywgb3B0aW9ucykpO1xuICAgICAgICBwYXJ0cyA9IFtdO1xuICAgICAgfSAvLyBQdXQgdGhlIG5ld2xpbmUgYXQgdGhlIHRvcCBsZXZlbFxuXG5cbiAgICAgIGNoaWxkcmVuLnB1c2goZXhwcmVzc2lvbltpXSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gIH0gLy8gTm93LCBpZiB0aGVyZSB3YXMgYSB0YWcsIGJ1aWxkIGl0IHRvbyBhbmQgYXBwZW5kIGl0IGFzIGEgZmluYWwgY2hpbGQuXG5cblxuICB2YXIgdGFnQ2hpbGQ7XG5cbiAgaWYgKHRhZykge1xuICAgIHRhZ0NoaWxkID0gYnVpbGRIVE1MVW5icmVha2FibGUoYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbih0YWcsIG9wdGlvbnMsIHRydWUpKTtcbiAgICB0YWdDaGlsZC5jbGFzc2VzID0gW1widGFnXCJdO1xuICAgIGNoaWxkcmVuLnB1c2godGFnQ2hpbGQpO1xuICB9XG5cbiAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MX21ha2VTcGFuKFtcImthdGV4LWh0bWxcIl0sIGNoaWxkcmVuKTtcbiAgaHRtbE5vZGUuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpOyAvLyBBZGp1c3QgdGhlIHN0cnV0IG9mIHRoZSB0YWcgdG8gYmUgdGhlIG1heGltdW0gaGVpZ2h0IG9mIGFsbCBjaGlsZHJlblxuICAvLyAodGhlIGhlaWdodCBvZiB0aGUgZW5jbG9zaW5nIGh0bWxOb2RlKSBmb3IgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudC5cblxuICBpZiAodGFnQ2hpbGQpIHtcbiAgICB2YXIgc3RydXQgPSB0YWdDaGlsZC5jaGlsZHJlblswXTtcbiAgICBzdHJ1dC5zdHlsZS5oZWlnaHQgPSBodG1sTm9kZS5oZWlnaHQgKyBodG1sTm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLWh0bWxOb2RlLmRlcHRoICsgXCJlbVwiO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxOb2RlO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbWF0aE1MVHJlZS5qc1xuLyoqXG4gKiBUaGVzZSBvYmplY3RzIHN0b3JlIGRhdGEgYWJvdXQgTWF0aE1MIG5vZGVzLiBUaGlzIGlzIHRoZSBNYXRoTUwgZXF1aXZhbGVudFxuICogb2YgdGhlIHR5cGVzIGluIGRvbVRyZWUuanMuIFNpbmNlIE1hdGhNTCBoYW5kbGVzIGl0cyBvd24gcmVuZGVyaW5nLCBhbmRcbiAqIHNpbmNlIHdlJ3JlIG1haW5seSB1c2luZyBNYXRoTUwgdG8gaW1wcm92ZSBhY2Nlc3NpYmlsaXR5LCB3ZSBkb24ndCBtYW5hZ2VcbiAqIGFueSBvZiB0aGUgc3R5bGluZyBzdGF0ZSB0aGF0IHRoZSBwbGFpbiBET00gbm9kZXMgZG8uXG4gKlxuICogVGhlIGB0b05vZGVgIGFuZCBgdG9NYXJrdXBgIGZ1bmN0aW9ucyB3b3JrIHNpbWxhcmx5IHRvIGhvdyB0aGV5IGRvIGluXG4gKiBkb21UcmVlLmpzLCBjcmVhdGluZyBuYW1lc3BhY2VkIERPTSBub2RlcyBhbmQgSFRNTCB0ZXh0IG1hcmt1cCByZXNwZWN0aXZlbHkuXG4gKi9cblxuXG5mdW5jdGlvbiBuZXdEb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKSB7XG4gIHJldHVybiBuZXcgdHJlZV9Eb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKTtcbn1cbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBnZW5lcmFsIHB1cnBvc2UgTWF0aE1MIG5vZGUgb2YgYW55IHR5cGUuIFRoZVxuICogY29uc3RydWN0b3IgcmVxdWlyZXMgdGhlIHR5cGUgb2Ygbm9kZSB0byBjcmVhdGUgKGZvciBleGFtcGxlLCBgXCJtb1wiYCBvclxuICogYFwibXNwYWNlXCJgLCBjb3JyZXNwb25kaW5nIHRvIGA8bW8+YCBhbmQgYDxtc3BhY2U+YCB0YWdzKS5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9NYXRoTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hdGhOb2RlKHR5cGUsIGNoaWxkcmVuKSB7XG4gICAgdGhpcy50eXBlID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLiBNYXRoTUwgZGVwZW5kcyBvbiBhdHRyaWJ1dGVzIHRvIGNvbnZleSBhXG4gICAqIHNlbWFudGljIGNvbnRlbnQsIHNvIHRoaXMgaXMgdXNlZCBoZWF2aWx5LlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBNYXRoTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIGFuIGF0dHJpYnV0ZSBvbiBhIE1hdGhNTCBub2RlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhIE1hdGhNTC1uYW1lc3BhY2VkIERPTSBlbGVtZW50LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIHRoaXMudHlwZSk7XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIjxcIiArIHRoaXMudHlwZTsgLy8gQWRkIHRoZSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj1cXFwiXCI7XG4gICAgICAgIG1hcmt1cCArPSB1dGlscy5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgICAgbWFya3VwICs9IFwiXFxcIlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIj5cIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbWFya3VwICs9IHRoaXMuY2hpbGRyZW5baV0udG9NYXJrdXAoKTtcbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI8L1wiICsgdGhpcy50eXBlICsgXCI+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dCwgYnV0IGVzY2FwZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICByZXR1cm4gTWF0aE5vZGU7XG59KCk7XG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgcGllY2Ugb2YgdGV4dC5cbiAqL1xuXG52YXIgbWF0aE1MVHJlZV9UZXh0Tm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHROb2RlKHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGEgRE9NIHRleHQgbm9kZS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvMiA9IFRleHROb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy50ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHQgbm9kZSBpbnRvIGVzY2FwZWQgSFRNTCBtYXJrdXBcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdHNlbGYpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzIudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICByZXR1cm4gdXRpbHMuZXNjYXBlKHRoaXMudG9UZXh0KCkpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gYSBzdHJpbmdcbiAgICogKHJlcHJlc2VudGluZyB0aGUgdGV4dCBpdGVzZWxmKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8yLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9O1xuXG4gIHJldHVybiBUZXh0Tm9kZTtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBzcGFjZSwgYnV0IG1heSByZW5kZXIgYXMgPG1zcGFjZS4uLi8+IG9yIGFzIHRleHQsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHdpZHRoLlxuICovXG5cbnZhciBTcGFjZU5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgU3BhY2Ugbm9kZSB3aXRoIHdpZHRoIGdpdmVuIGluIENTUyBlbXMuXG4gICAqL1xuICBmdW5jdGlvbiBTcGFjZU5vZGUod2lkdGgpIHtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuY2hhcmFjdGVyID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDsgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELU1hdGhNTDItMjAwMDAzMjgvY2hhcHRlcjYuaHRtbFxuICAgIC8vIGZvciBhIHRhYmxlIG9mIHNwYWNlLWxpa2UgY2hhcmFjdGVycy4gIFdlIHVzZSBVbmljb2RlXG4gICAgLy8gcmVwcmVzZW50YXRpb25zIGluc3RlYWQgb2YgJkxvbmdOYW1lczsgYXMgaXQncyBub3QgY2xlYXIgaG93IHRvXG4gICAgLy8gbWFrZSB0aGUgbGF0dGVyIHZpYSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZS5cblxuICAgIGlmICh3aWR0aCA+PSAwLjA1NTU1ICYmIHdpZHRoIDw9IDAuMDU1NTYpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDBBXCI7IC8vICZWZXJ5VGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gMC4xNjY2ICYmIHdpZHRoIDw9IDAuMTY2Nykge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcIjsgLy8gJlRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjIyMiAmJiB3aWR0aCA8PSAwLjIyMjMpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XCI7IC8vICZNZWRpdW1TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IDAuMjc3NyAmJiB3aWR0aCA8PSAwLjI3NzgpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XFx1MjAwQVwiOyAvLyAmVGhpY2tTcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjA1NTU2ICYmIHdpZHRoIDw9IC0wLjA1NTU1KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwQVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjE2NjcgJiYgd2lkdGggPD0gLTAuMTY2Nikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDlcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZVRoaW5TcGFjZTtcbiAgICB9IGVsc2UgaWYgKHdpZHRoID49IC0wLjIyMjMgJiYgd2lkdGggPD0gLTAuMjIyMikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwNUZcXHUyMDYzXCI7IC8vICZOZWdhdGl2ZU1lZGl1bVNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMjc3OCAmJiB3aWR0aCA8PSAtMC4yNzc3KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwNVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVGhpY2tTcGFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgTWF0aE1MLW5hbWVzcGFjZWQgRE9NIGVsZW1lbnQuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90bzMgPSBTcGFjZU5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzMudG9Ob2RlID0gZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgIGlmICh0aGlzLmNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuY2hhcmFjdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIFwibXNwYWNlXCIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB0aGlzLndpZHRoICsgXCJlbVwiKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGFuIEhUTUwgbWFya3VwIHN0cmluZy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgaWYgKHRoaXMuY2hhcmFjdGVyKSB7XG4gICAgICByZXR1cm4gXCI8bXRleHQ+XCIgKyB0aGlzLmNoYXJhY3RlciArIFwiPC9tdGV4dD5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiPG1zcGFjZSB3aWR0aD1cXFwiXCIgKyB0aGlzLndpZHRoICsgXCJlbVxcXCIvPlwiO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8zLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICBpZiAodGhpcy5jaGFyYWN0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYXJhY3RlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiIFwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3BhY2VOb2RlO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYXRoTUxUcmVlID0gKHtcbiAgTWF0aE5vZGU6IG1hdGhNTFRyZWVfTWF0aE5vZGUsXG4gIFRleHROb2RlOiBtYXRoTUxUcmVlX1RleHROb2RlLFxuICBTcGFjZU5vZGU6IFNwYWNlTm9kZSxcbiAgbmV3RG9jdW1lbnRGcmFnbWVudDogbmV3RG9jdW1lbnRGcmFnbWVudFxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9idWlsZE1hdGhNTC5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udmVydHMgYSBwYXJzZSB0cmVlIGludG8gYSBjb29yZXNwb25kaW5nIE1hdGhNTCB0cmVlLiBUaGUgbWFpblxuICogZW50cnkgcG9pbnQgaXMgdGhlIGBidWlsZE1hdGhNTGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcGFyc2UgdHJlZSBmcm9tIHRoZVxuICogcGFyc2VyLlxuICovXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIFRha2VzIGEgc3ltYm9sIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgTWF0aE1MIHRleHQgbm9kZSBhZnRlciBwZXJmb3JtaW5nXG4gKiBvcHRpb25hbCByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMuXG4gKi9cbnZhciBidWlsZE1hdGhNTF9tYWtlVGV4dCA9IGZ1bmN0aW9uIG1ha2VUZXh0KHRleHQsIG1vZGUsIG9wdGlvbnMpIHtcbiAgaWYgKHNyY19zeW1ib2xzW21vZGVdW3RleHRdICYmIHNyY19zeW1ib2xzW21vZGVdW3RleHRdLnJlcGxhY2UgJiYgdGV4dC5jaGFyQ29kZUF0KDApICE9PSAweEQ4MzUgJiYgIShsaWdhdHVyZXMuaGFzT3duUHJvcGVydHkodGV4dCkgJiYgb3B0aW9ucyAmJiAob3B0aW9ucy5mb250RmFtaWx5ICYmIG9wdGlvbnMuZm9udEZhbWlseS5zdWJzdHIoNCwgMikgPT09IFwidHRcIiB8fCBvcHRpb25zLmZvbnQgJiYgb3B0aW9ucy5mb250LnN1YnN0cig0LCAyKSA9PT0gXCJ0dFwiKSkpIHtcbiAgICB0ZXh0ID0gc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZTtcbiAgfVxuXG4gIHJldHVybiBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZSh0ZXh0KTtcbn07XG4vKipcbiAqIFdyYXAgdGhlIGdpdmVuIGFycmF5IG9mIG5vZGVzIGluIGFuIDxtcm93PiBub2RlIGlmIG5lZWRlZCwgaS5lLixcbiAqIHVubGVzcyB0aGUgYXJyYXkgaGFzIGxlbmd0aCAxLiAgQWx3YXlzIHJldHVybnMgYSBzaW5nbGUgbm9kZS5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfbWFrZVJvdyA9IGZ1bmN0aW9uIG1ha2VSb3coYm9keSkge1xuICBpZiAoYm9keS5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYm9keVswXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGJvZHkpO1xuICB9XG59O1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXRoIHZhcmlhbnQgYXMgYSBzdHJpbmcgb3IgbnVsbCBpZiBub25lIGlzIHJlcXVpcmVkLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9nZXRWYXJpYW50ID0gZnVuY3Rpb24gZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykge1xuICAvLyBIYW5kbGUgXFx0ZXh0Li4uIGZvbnQgc3BlY2lmaWVycyBhcyBiZXN0IHdlIGNhbi5cbiAgLy8gTWF0aE1MIGhhcyBhIGxpbWl0ZWQgbGlzdCBvZiBhbGxvd2FibGUgbWF0aHZhcmlhbnQgc3BlY2lmaWVyczsgc2VlXG4gIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2NoYXB0ZXIzLmh0bWwjcHJlc20uY29tbWF0dFxuICBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHR0dFwiKSB7XG4gICAgcmV0dXJuIFwibW9ub3NwYWNlXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250RmFtaWx5ID09PSBcInRleHRzZlwiKSB7XG4gICAgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgICAgcmV0dXJuIFwic2Fucy1zZXJpZi1ib2xkLWl0YWxpY1wiO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICAgIHJldHVybiBcInNhbnMtc2VyaWYtaXRhbGljXCI7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICAgIHJldHVybiBcImJvbGQtc2Fucy1zZXJpZlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMuZm9udFNoYXBlID09PSBcInRleHRpdFwiICYmIG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIHJldHVybiBcImJvbGQtaXRhbGljXCI7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIpIHtcbiAgICByZXR1cm4gXCJpdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIpIHtcbiAgICByZXR1cm4gXCJib2xkXCI7XG4gIH1cblxuICB2YXIgZm9udCA9IG9wdGlvbnMuZm9udDtcblxuICBpZiAoIWZvbnQgfHwgZm9udCA9PT0gXCJtYXRobm9ybWFsXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtb2RlID0gZ3JvdXAubW9kZTtcblxuICBpZiAoZm9udCA9PT0gXCJtYXRoaXRcIikge1xuICAgIHJldHVybiBcIml0YWxpY1wiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwiYm9sZHN5bWJvbFwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZC1pdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChmb250ID09PSBcIm1hdGhiZlwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aGJiXCIpIHtcbiAgICByZXR1cm4gXCJkb3VibGUtc3RydWNrXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoZnJha1wiKSB7XG4gICAgcmV0dXJuIFwiZnJha3R1clwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNjclwiIHx8IGZvbnQgPT09IFwibWF0aGNhbFwiKSB7XG4gICAgLy8gTWF0aE1MIG1ha2VzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gc2NyaXB0IGFuZCBjYWxpZ3JhaHBpY1xuICAgIHJldHVybiBcInNjcmlwdFwiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aHNmXCIpIHtcbiAgICByZXR1cm4gXCJzYW5zLXNlcmlmXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRodHRcIikge1xuICAgIHJldHVybiBcIm1vbm9zcGFjZVwiO1xuICB9XG5cbiAgdmFyIHRleHQgPSBncm91cC50ZXh0O1xuXG4gIGlmICh1dGlscy5jb250YWlucyhbXCJcXFxcaW1hdGhcIiwgXCJcXFxcam1hdGhcIl0sIHRleHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0gJiYgc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZSkge1xuICAgIHRleHQgPSBzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XS5yZXBsYWNlO1xuICB9XG5cbiAgdmFyIGZvbnROYW1lID0gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS5mb250TmFtZTtcblxuICBpZiAoZ2V0Q2hhcmFjdGVyTWV0cmljcyh0ZXh0LCBmb250TmFtZSwgbW9kZSkpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24uZm9udE1hcFtmb250XS52YXJpYW50O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuLyoqXG4gKiBUYWtlcyBhIGxpc3Qgb2Ygbm9kZXMsIGJ1aWxkcyB0aGVtLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZFxuICogTWF0aE1MIG5vZGVzLiAgQWxzbyBjb21iaW5lIGNvbnNlY3V0aXZlIDxtdGV4dD4gb3V0cHV0cyBpbnRvIGEgc2luZ2xlXG4gKiA8bXRleHQ+IHRhZy5cbiAqL1xuXG52YXIgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG4gICAgdmFyIGdyb3VwID0gYnVpbGRNYXRoTUxfYnVpbGRHcm91cChleHByZXNzaW9uWzBdLCBvcHRpb25zKTtcblxuICAgIGlmIChpc09yZGdyb3VwICYmIGdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSAmJiBncm91cC50eXBlID09PSBcIm1vXCIpIHtcbiAgICAgIC8vIFdoZW4gVGVYIHdyaXRlcnMgd2FudCB0byBzdXBwcmVzcyBzcGFjaW5nIG9uIGFuIG9wZXJhdG9yLFxuICAgICAgLy8gdGhleSBvZnRlbiBwdXQgdGhlIG9wZXJhdG9yIGJ5IGl0c2VsZiBpbnNpZGUgYnJhY2VzLlxuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIFwiMGVtXCIpO1xuICAgICAgZ3JvdXAuc2V0QXR0cmlidXRlKFwicnNwYWNlXCIsIFwiMGVtXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBbZ3JvdXBdO1xuICB9XG5cbiAgdmFyIGdyb3VwcyA9IFtdO1xuICB2YXIgbGFzdEdyb3VwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfZ3JvdXAgPSBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGV4cHJlc3Npb25baV0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKF9ncm91cCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUgJiYgbGFzdEdyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSkge1xuICAgICAgLy8gQ29uY2F0ZW5hdGUgYWRqYWNlbnQgPG10ZXh0PnNcbiAgICAgIGlmIChfZ3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBsYXN0R3JvdXAudHlwZSA9PT0gJ210ZXh0JyAmJiBfZ3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpID09PSBsYXN0R3JvdXAuZ2V0QXR0cmlidXRlKCdtYXRodmFyaWFudCcpKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuO1xuXG4gICAgICAgIChfbGFzdEdyb3VwJGNoaWxkcmVuID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4sIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIGFkamFjZW50IDxtbj5zXG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbW4nICYmIGxhc3RHcm91cC50eXBlID09PSAnbW4nKSB7XG4gICAgICAgIHZhciBfbGFzdEdyb3VwJGNoaWxkcmVuMjtcblxuICAgICAgICAoX2xhc3RHcm91cCRjaGlsZHJlbjIgPSBsYXN0R3JvdXAuY2hpbGRyZW4pLnB1c2guYXBwbHkoX2xhc3RHcm91cCRjaGlsZHJlbjIsIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgY29udGludWU7IC8vIENvbmNhdGVuYXRlIDxtbj4uLi48L21uPiBmb2xsb3dlZCBieSA8bWk+LjwvbWk+XG4gICAgICB9IGVsc2UgaWYgKF9ncm91cC50eXBlID09PSAnbWknICYmIF9ncm91cC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgbGFzdEdyb3VwLnR5cGUgPT09ICdtbicpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gX2dyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfVGV4dE5vZGUgJiYgY2hpbGQudGV4dCA9PT0gJy4nKSB7XG4gICAgICAgICAgdmFyIF9sYXN0R3JvdXAkY2hpbGRyZW4zO1xuXG4gICAgICAgICAgKF9sYXN0R3JvdXAkY2hpbGRyZW4zID0gbGFzdEdyb3VwLmNoaWxkcmVuKS5wdXNoLmFwcGx5KF9sYXN0R3JvdXAkY2hpbGRyZW4zLCBfZ3JvdXAuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGFzdEdyb3VwLnR5cGUgPT09ICdtaScgJiYgbGFzdEdyb3VwLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB2YXIgbGFzdENoaWxkID0gbGFzdEdyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIGlmIChsYXN0Q2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIGxhc3RDaGlsZC50ZXh0ID09PSBcIlxcdTAzMzhcIiAmJiAoX2dyb3VwLnR5cGUgPT09ICdtbycgfHwgX2dyb3VwLnR5cGUgPT09ICdtaScgfHwgX2dyb3VwLnR5cGUgPT09ICdtbicpKSB7XG4gICAgICAgICAgdmFyIF9jaGlsZCA9IF9ncm91cC5jaGlsZHJlblswXTtcblxuICAgICAgICAgIGlmIChfY2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX1RleHROb2RlICYmIF9jaGlsZC50ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIE92ZXJsYXkgd2l0aCBjb21iaW5pbmcgY2hhcmFjdGVyIGxvbmcgc29saWR1c1xuICAgICAgICAgICAgX2NoaWxkLnRleHQgPSBfY2hpbGQudGV4dC5zbGljZSgwLCAxKSArIFwiXFx1MDMzOFwiICsgX2NoaWxkLnRleHQuc2xpY2UoMSk7XG4gICAgICAgICAgICBncm91cHMucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JvdXBzLnB1c2goX2dyb3VwKTtcbiAgICBsYXN0R3JvdXAgPSBfZ3JvdXA7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufTtcbi8qKlxuICogRXF1aXZhbGVudCB0byBidWlsZEV4cHJlc3Npb24sIGJ1dCB3cmFwcyB0aGUgZWxlbWVudHMgaW4gYW4gPG1yb3c+XG4gKiBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuICBSZXR1cm5zIGEgc2luZ2xlIG5vZGUgaW5zdGVhZCBvZiBhbiBhcnJheS5cbiAqL1xuXG52YXIgYnVpbGRFeHByZXNzaW9uUm93ID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uUm93KGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApIHtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX21ha2VSb3coYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzT3JkZ3JvdXApKTtcbn07XG4vKipcbiAqIFRha2VzIGEgZ3JvdXAgZnJvbSB0aGUgcGFyc2VyIGFuZCBjYWxscyB0aGUgYXBwcm9wcmlhdGUgZ3JvdXBCdWlsZGVycyBmdW5jdGlvblxuICogb24gaXQgdG8gcHJvZHVjZSBhIE1hdGhNTCBub2RlLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9idWlsZEdyb3VwID0gZnVuY3Rpb24gYnVpbGRHcm91cChncm91cCwgb3B0aW9ucykge1xuICBpZiAoIWdyb3VwKSB7XG4gICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXJvd1wiKTtcbiAgfVxuXG4gIGlmIChfbWF0aG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXSkge1xuICAgIC8vIENhbGwgdGhlIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25cbiAgICB2YXIgcmVzdWx0ID0gX21hdGhtbEdyb3VwQnVpbGRlcnNbZ3JvdXAudHlwZV0oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGdyb3VwIG9mIHVua25vd24gdHlwZTogJ1wiICsgZ3JvdXAudHlwZSArIFwiJ1wiKTtcbiAgfVxufTtcbi8qKlxuICogVGFrZXMgYSBmdWxsIHBhcnNlIHRyZWUgYW5kIHNldHRpbmdzIGFuZCBidWlsZHMgYSBNYXRoTUwgcmVwcmVzZW50YXRpb24gb2ZcbiAqIGl0LiBJbiBwYXJ0aWN1bGFyLCB3ZSBwdXQgdGhlIGVsZW1lbnRzIGZyb20gYnVpbGRpbmcgdGhlIHBhcnNlIHRyZWUgaW50byBhXG4gKiA8c2VtYW50aWNzPiB0YWcgc28gd2UgY2FuIGFsc28gaW5jbHVkZSB0aGF0IFRlWCBzb3VyY2UgYXMgYW4gYW5ub3RhdGlvbi5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgYWN0dWFsbHkgcmV0dXJuIGEgZG9tVHJlZSBlbGVtZW50IHdpdGggYSBgPG1hdGg+YCBpbnNpZGUgaXQgc29cbiAqIHdlIGNhbiBkbyBhcHByb3ByaWF0ZSBzdHlsaW5nLlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkTWF0aE1MKHRyZWUsIHRleEV4cHJlc3Npb24sIG9wdGlvbnMsIGZvck1hdGhtbE9ubHkpIHtcbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24odHJlZSwgb3B0aW9ucyk7IC8vIFdyYXAgdXAgdGhlIGV4cHJlc3Npb24gaW4gYW4gbXJvdyBzbyBpdCBpcyBwcmVzZW50ZWQgaW4gdGhlIHNlbWFudGljc1xuICAvLyB0YWcgY29ycmVjdGx5LCB1bmxlc3MgaXQncyBhIHNpbmdsZSA8bXJvdz4gb3IgPG10YWJsZT4uXG5cbiAgdmFyIHdyYXBwZXI7XG5cbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxICYmIGV4cHJlc3Npb25bMF0gaW5zdGFuY2VvZiBtYXRoTUxUcmVlX01hdGhOb2RlICYmIHV0aWxzLmNvbnRhaW5zKFtcIm1yb3dcIiwgXCJtdGFibGVcIl0sIGV4cHJlc3Npb25bMF0udHlwZSkpIHtcbiAgICB3cmFwcGVyID0gZXhwcmVzc2lvblswXTtcbiAgfSBlbHNlIHtcbiAgICB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIsIGV4cHJlc3Npb24pO1xuICB9IC8vIEJ1aWxkIGEgVGVYIGFubm90YXRpb24gb2YgdGhlIHNvdXJjZVxuXG5cbiAgdmFyIGFubm90YXRpb24gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcImFubm90YXRpb25cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHRleEV4cHJlc3Npb24pXSk7XG4gIGFubm90YXRpb24uc2V0QXR0cmlidXRlKFwiZW5jb2RpbmdcIiwgXCJhcHBsaWNhdGlvbi94LXRleFwiKTtcbiAgdmFyIHNlbWFudGljcyA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwic2VtYW50aWNzXCIsIFt3cmFwcGVyLCBhbm5vdGF0aW9uXSk7XG4gIHZhciBtYXRoID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtYXRoXCIsIFtzZW1hbnRpY3NdKTtcbiAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIik7IC8vIFlvdSBjYW4ndCBzdHlsZSA8bWF0aD4gbm9kZXMsIHNvIHdlIHdyYXAgdGhlIG5vZGUgaW4gYSBzcGFuLlxuICAvLyBOT1RFOiBUaGUgc3BhbiBjbGFzcyBpcyBub3QgdHlwZWQgdG8gaGF2ZSA8bWF0aD4gbm9kZXMgYXMgY2hpbGRyZW4sIGFuZFxuICAvLyB3ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIGNoaWxkcmVuIHR5cGUgbW9yZSBnZW5lcmljIHNpbmNlIHRoZSBjaGlsZHJlblxuICAvLyBvZiBzcGFuIGFyZSBleHBlY3RlZCB0byBoYXZlIG1vcmUgZmllbGRzIGluIGBidWlsZEh0bWxgIGNvbnRleHRzLlxuXG4gIHZhciB3cmFwcGVyQ2xhc3MgPSBmb3JNYXRobWxPbmx5ID8gXCJrYXRleFwiIDogXCJrYXRleC1tYXRobWxcIjsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3Bhbihbd3JhcHBlckNsYXNzXSwgW21hdGhdKTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkVHJlZS5qc1xuXG5cblxuXG5cblxuXG52YXIgYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MgPSBmdW5jdGlvbiBvcHRpb25zRnJvbVNldHRpbmdzKHNldHRpbmdzKSB7XG4gIHJldHVybiBuZXcgc3JjX09wdGlvbnMoe1xuICAgIHN0eWxlOiBzZXR0aW5ncy5kaXNwbGF5TW9kZSA/IHNyY19TdHlsZS5ESVNQTEFZIDogc3JjX1N0eWxlLlRFWFQsXG4gICAgbWF4U2l6ZTogc2V0dGluZ3MubWF4U2l6ZSxcbiAgICBtaW5SdWxlVGhpY2tuZXNzOiBzZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzXG4gIH0pO1xufTtcblxudmFyIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcCA9IGZ1bmN0aW9uIGRpc3BsYXlXcmFwKG5vZGUsIHNldHRpbmdzKSB7XG4gIGlmIChzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgIHZhciBjbGFzc2VzID0gW1wia2F0ZXgtZGlzcGxheVwiXTtcblxuICAgIGlmIChzZXR0aW5ncy5sZXFubykge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwibGVxbm9cIik7XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmZsZXFuKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmbGVxblwiKTtcbiAgICB9XG5cbiAgICBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oY2xhc3NlcywgW25vZGVdKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIGJ1aWxkVHJlZV9idWlsZFRyZWUgPSBmdW5jdGlvbiBidWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpIHtcbiAgdmFyIG9wdGlvbnMgPSBidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gIHZhciBrYXRleE5vZGU7XG5cbiAgaWYgKHNldHRpbmdzLm91dHB1dCA9PT0gXCJtYXRobWxcIikge1xuICAgIHJldHVybiBidWlsZE1hdGhNTCh0cmVlLCBleHByZXNzaW9uLCBvcHRpb25zLCB0cnVlKTtcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5vdXRwdXQgPT09IFwiaHRtbFwiKSB7XG4gICAgdmFyIGh0bWxOb2RlID0gYnVpbGRIVE1MKHRyZWUsIG9wdGlvbnMpO1xuICAgIGthdGV4Tm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbaHRtbE5vZGVdKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbWF0aE1MTm9kZSA9IGJ1aWxkTWF0aE1MKHRyZWUsIGV4cHJlc3Npb24sIG9wdGlvbnMsIGZhbHNlKTtcblxuICAgIHZhciBfaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG5cbiAgICBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW21hdGhNTE5vZGUsIF9odG1sTm9kZV0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcChrYXRleE5vZGUsIHNldHRpbmdzKTtcbn07XG52YXIgYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUgPSBmdW5jdGlvbiBidWlsZEhUTUxUcmVlKHRyZWUsIGV4cHJlc3Npb24sIHNldHRpbmdzKSB7XG4gIHZhciBvcHRpb25zID0gYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3Moc2V0dGluZ3MpO1xuICB2YXIgaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG4gIHZhciBrYXRleE5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleFwiXSwgW2h0bWxOb2RlXSk7XG4gIHJldHVybiBidWlsZFRyZWVfZGlzcGxheVdyYXAoa2F0ZXhOb2RlLCBzZXR0aW5ncyk7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1aWxkVHJlZSA9IChidWlsZFRyZWVfYnVpbGRUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3N0cmV0Y2h5LmpzXG4vKipcbiAqIFRoaXMgZmlsZSBwcm92aWRlcyBzdXBwb3J0IHRvIGJ1aWxkTWF0aE1MLmpzIGFuZCBidWlsZEhUTUwuanNcbiAqIGZvciBzdHJldGNoeSB3aWRlIGVsZW1lbnRzIHJlbmRlcmVkIGZyb20gU1ZHIGZpbGVzXG4gKiBhbmQgb3RoZXIgQ1NTIHRyaWNrZXJ5LlxuICovXG5cblxuXG5cbnZhciBzdHJldGNoeUNvZGVQb2ludCA9IHtcbiAgd2lkZWhhdDogXCJeXCIsXG4gIHdpZGVjaGVjazogXCLLh1wiLFxuICB3aWRldGlsZGU6IFwiflwiLFxuICB1dGlsZGU6IFwiflwiLFxuICBvdmVybGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgdW5kZXJsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICB4bGVmdGFycm93OiBcIlxcdTIxOTBcIixcbiAgb3ZlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFwiXFx1MjE5MlwiLFxuICB4cmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gIHVuZGVyYnJhY2U6IFwiXFx1MjNERlwiLFxuICBvdmVyYnJhY2U6IFwiXFx1MjNERVwiLFxuICBvdmVyZ3JvdXA6IFwiXFx1MjNFMFwiLFxuICB1bmRlcmdyb3VwOiBcIlxcdTIzRTFcIixcbiAgb3ZlcmxlZnRyaWdodGFycm93OiBcIlxcdTIxOTRcIixcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIHhsZWZ0cmlnaHRhcnJvdzogXCJcXHUyMTk0XCIsXG4gIE92ZXJyaWdodGFycm93OiBcIlxcdTIxRDJcIixcbiAgeFJpZ2h0YXJyb3c6IFwiXFx1MjFEMlwiLFxuICBvdmVybGVmdGhhcnBvb246IFwiXFx1MjFCQ1wiLFxuICB4bGVmdGhhcnBvb251cDogXCJcXHUyMUJDXCIsXG4gIG92ZXJyaWdodGhhcnBvb246IFwiXFx1MjFDMFwiLFxuICB4cmlnaHRoYXJwb29udXA6IFwiXFx1MjFDMFwiLFxuICB4TGVmdGFycm93OiBcIlxcdTIxRDBcIixcbiAgeExlZnRyaWdodGFycm93OiBcIlxcdTIxRDRcIixcbiAgeGhvb2tsZWZ0YXJyb3c6IFwiXFx1MjFBOVwiLFxuICB4aG9va3JpZ2h0YXJyb3c6IFwiXFx1MjFBQVwiLFxuICB4bWFwc3RvOiBcIlxcdTIxQTZcIixcbiAgeHJpZ2h0aGFycG9vbmRvd246IFwiXFx1MjFDMVwiLFxuICB4bGVmdGhhcnBvb25kb3duOiBcIlxcdTIxQkRcIixcbiAgeHJpZ2h0bGVmdGhhcnBvb25zOiBcIlxcdTIxQ0NcIixcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBcIlxcdTIxQ0JcIixcbiAgeHR3b2hlYWRsZWZ0YXJyb3c6IFwiXFx1MjE5RVwiLFxuICB4dHdvaGVhZHJpZ2h0YXJyb3c6IFwiXFx1MjFBMFwiLFxuICB4bG9uZ2VxdWFsOiBcIj1cIixcbiAgeHRvZnJvbTogXCJcXHUyMUM0XCIsXG4gIHhyaWdodGxlZnRhcnJvd3M6IFwiXFx1MjFDNFwiLFxuICB4cmlnaHRlcXVpbGlicml1bTogXCJcXHUyMUNDXCIsXG4gIC8vIE5vdCBhIHBlcmZlY3QgbWF0Y2guXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFwiXFx1MjFDQlwiIC8vIE5vbmUgYmV0dGVyIGF2YWlsYWJsZS5cblxufTtcblxudmFyIHN0cmV0Y2h5X21hdGhNTG5vZGUgPSBmdW5jdGlvbiBtYXRoTUxub2RlKGxhYmVsKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoc3RyZXRjaHlDb2RlUG9pbnRbbGFiZWwuc3Vic3RyKDEpXSldKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTsgLy8gTWFueSBvZiB0aGUgS2FUZVggU1ZHIGltYWdlcyBoYXZlIGJlZW4gYWRhcHRlZCBmcm9tIGdseXBocyBpbiBLYVRlWCBmb250cy5cbi8vIENvcHlyaWdodCAoYykgMjAwOS0yMDEwLCBEZXNpZ24gU2NpZW5jZSwgSW5jLiAoPHd3dy5tYXRoamF4Lm9yZz4pXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNyBLaGFuIEFjYWRlbXkgKDx3d3cua2hhbmFjYWRlbXkub3JnPilcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLlxuLy8gU2VlIFxcbmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMXG4vLyBWZXJ5IExvbmcgU1ZHc1xuLy8gICAgTWFueSBvZiB0aGUgS2FUZVggc3RyZXRjaHkgd2lkZSBlbGVtZW50cyB1c2UgYSBsb25nIFNWRyBpbWFnZSBhbmQgYW5cbi8vICAgIG92ZXJmbG93OiBoaWRkZW4gdGFjdGljIHRvIGFjaGlldmUgYSBzdHJldGNoeSBpbWFnZSB3aGlsZSBhdm9pZGluZ1xuLy8gICAgZGlzdG9ydGlvbiBvZiBhcnJvd2hlYWRzIG9yIGJyYWNlIGNvcm5lcnMuXG4vLyAgICBUaGUgU1ZHIHR5cGljYWxseSBjb250YWlucyBhIHZlcnkgbG9uZyAoNDAwIGVtKSBhcnJvdy5cbi8vICAgIFRoZSBTVkcgaXMgaW4gYSBjb250YWluZXIgc3BhbiB0aGF0IGhhcyBvdmVyZmxvdzogaGlkZGVuLCBzbyB0aGUgc3BhblxuLy8gICAgYWN0cyBsaWtlIGEgd2luZG93IHRoYXQgZXhwb3NlcyBvbmx5IHBhcnQgb2YgdGhlICBTVkcuXG4vLyAgICBUaGUgU1ZHIGFsd2F5cyBoYXMgYSBsb25nZXIsIHRoaW5uZXIgYXNwZWN0IHJhdGlvIHRoYW4gdGhlIGNvbnRhaW5lciBzcGFuLlxuLy8gICAgQWZ0ZXIgdGhlIFNWRyBmaWxscyAxMDAlIG9mIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciBzcGFuLFxuLy8gICAgdGhlcmUgaXMgYSBsb25nIGFycm93IHNoYWZ0IGxlZnQgb3Zlci4gVGhhdCBsZWZ0LW92ZXIgc2hhZnQgaXMgbm90IHNob3duLlxuLy8gICAgSW5zdGVhZCwgaXQgaXMgc2xpY2VkIG9mZiBiZWNhdXNlIHRoZSBzcGFuJ3MgQ1NTIGhhcyBvdmVyZmxvdzogaGlkZGVuLlxuLy8gICAgVGh1cywgdGhlIHJlYWRlciBzZWVzIGFuIGFycm93IHRoYXQgbWF0Y2hlcyB0aGUgc3ViamVjdCBtYXR0ZXIgd2lkdGhcbi8vICAgIHdpdGhvdXQgZGlzdG9ydGlvbi5cbi8vICAgIFNvbWUgZnVuY3Rpb25zLCBzdWNoIGFzIFxcY2FuY2VsLCBuZWVkIHRvIHZhcnkgdGhlaXIgYXNwZWN0IHJhdGlvLiBUaGVzZVxuLy8gICAgZnVuY3Rpb25zIGRvIG5vdCBnZXQgdGhlIG92ZXJmbG93IFNWRyB0cmVhdG1lbnQuXG4vLyBTZWNvbmQgQnJ1c2ggU3Ryb2tlXG4vLyAgICBMb3cgcmVzb2x1dGlvbiBtb25pdG9ycyBzdHJ1Z2dsZSB0byBkaXNwbGF5IGltYWdlcyBpbiBmaW5lIGRldGFpbC5cbi8vICAgIFNvIGJyb3dzZXJzIGFwcGx5IGFudGktYWxpYXNpbmcuIEEgbG9uZyBzdHJhaWdodCBhcnJvdyBzaGFmdCB0aGVyZWZvcmVcbi8vICAgIHdpbGwgc29tZXRpbWVzIGFwcGVhciBhcyBpZiBpdCBoYXMgYSBibHVycmVkIGVkZ2UuXG4vLyAgICBUbyBtaXRpZ2F0ZSB0aGlzLCB0aGVzZSBTVkcgZmlsZXMgY29udGFpbiBhIHNlY29uZCBcImJydXNoLXN0cm9rZVwiIG9uIHRoZVxuLy8gICAgYXJyb3cgc2hhZnRzLiBUaGF0IGlzLCBhIHNlY29uZCBsb25nIHRoaW4gcmVjdGFuZ3VsYXIgU1ZHIHBhdGggaGFzIGJlZW5cbi8vICAgIHdyaXR0ZW4gZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggYXJyb3cgc2hhZnQuIFRoaXMgcmVpbmZvcmNlbWVudCBjYXVzZXNcbi8vICAgIHNvbWUgb2YgdGhlIHNjcmVlbiBwaXhlbHMgdG8gZGlzcGxheSBhcyBibGFjayBpbnN0ZWFkIG9mIHRoZSBhbnRpLWFsaWFzZWRcbi8vICAgIGdyYXkgcGl4ZWwgdGhhdCBhICBzaW5nbGUgcGF0aCB3b3VsZCBnZW5lcmF0ZS4gU28gd2UgZ2V0IGFycm93IHNoYWZ0c1xuLy8gICAgd2hvc2UgZWRnZXMgYXBwZWFyIHRvIGJlIHNoYXJwZXIuXG4vLyBJbiB0aGUga2F0ZXhJbWFnZXNEYXRhIG9iamVjdCBqdXN0IGJlbG93LCB0aGUgZGltZW5zaW9ucyBhbGxcbi8vIGNvcnJlc3BvbmQgdG8gcGF0aCBnZW9tZXRyeSBpbnNpZGUgdGhlIHJlbGV2YW50IFNWRy5cbi8vIEZvciBleGFtcGxlLCBcXG92ZXJyaWdodGFycm93IHVzZXMgdGhlIHNhbWUgYXJyb3doZWFkIGFzIGdseXBoIFUrMjE5MlxuLy8gZnJvbSB0aGUgS2FUZVggTWFpbiBmb250LiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgMTAwMC5cbi8vIFRoYXQgaXMsIGluc2lkZSB0aGUgZm9udCwgdGhhdCBhcnJvd2hlYWQgaXMgNTIyIHVuaXRzIHRhbGwsIHdoaWNoXG4vLyBjb3JyZXNwb25kcyB0byAwLjUyMiBlbSBpbnNpZGUgdGhlIGRvY3VtZW50LlxuXG5cbnZhciBrYXRleEltYWdlc0RhdGEgPSB7XG4gIC8vICAgcGF0aChzKSwgbWluV2lkdGgsIGhlaWdodCwgYWxpZ25cbiAgb3ZlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICB1bmRlcnJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB1bmRlcmxlZnRhcnJvdzogW1tcImxlZnRhcnJvd1wiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgeHJpZ2h0YXJyb3c6IFtbXCJyaWdodGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAxLjQ2OSwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICBPdmVycmlnaHRhcnJvdzogW1tcImRvdWJsZXJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1NjAsIFwieE1heFlNaW5cIl0sXG4gIHhSaWdodGFycm93OiBbW1wiZG91YmxlcmlnaHRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWF4WU1pblwiXSxcbiAgeExlZnRhcnJvdzogW1tcImRvdWJsZWxlZnRhcnJvd1wiXSwgMS41MjYsIDU2MCwgXCJ4TWluWU1pblwiXSxcbiAgb3ZlcmxlZnRoYXJwb29uOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbnVwOiBbW1wibGVmdGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHhsZWZ0aGFycG9vbmRvd246IFtbXCJsZWZ0aGFycG9vbmRvd25cIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIG92ZXJyaWdodGhhcnBvb246IFtbXCJyaWdodGhhcnBvb25cIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHhyaWdodGhhcnBvb251cDogW1tcInJpZ2h0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgeHJpZ2h0aGFycG9vbmRvd246IFtbXCJyaWdodGhhcnBvb25kb3duXCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4bG9uZ2VxdWFsOiBbW1wibG9uZ2VxdWFsXCJdLCAwLjg4OCwgMzM0LCBcInhNaW5ZTWluXCJdLFxuICB4dHdvaGVhZGxlZnRhcnJvdzogW1tcInR3b2hlYWRsZWZ0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1pbllNaW5cIl0sXG4gIHh0d29oZWFkcmlnaHRhcnJvdzogW1tcInR3b2hlYWRyaWdodGFycm93XCJdLCAwLjg4OCwgMzM0LCBcInhNYXhZTWluXCJdLFxuICBvdmVybGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAwLjg4OCwgNTIyXSxcbiAgb3ZlcmJyYWNlOiBbW1wibGVmdGJyYWNlXCIsIFwibWlkYnJhY2VcIiwgXCJyaWdodGJyYWNlXCJdLCAxLjYsIDU0OF0sXG4gIHVuZGVyYnJhY2U6IFtbXCJsZWZ0YnJhY2V1bmRlclwiLCBcIm1pZGJyYWNldW5kZXJcIiwgXCJyaWdodGJyYWNldW5kZXJcIl0sIDEuNiwgNTQ4XSxcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjJdLFxuICB4bGVmdHJpZ2h0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93XCJdLCAxLjc1LCA1MjJdLFxuICB4TGVmdHJpZ2h0YXJyb3c6IFtbXCJkb3VibGVsZWZ0YXJyb3dcIiwgXCJkb3VibGVyaWdodGFycm93XCJdLCAxLjc1LCA1NjBdLFxuICB4cmlnaHRsZWZ0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbmRvd25wbHVzXCIsIFwicmlnaHRoYXJwb29ucGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBbW1wibGVmdGhhcnBvb25wbHVzXCIsIFwicmlnaHRoYXJwb29uZG93bnBsdXNcIl0sIDEuNzUsIDcxNl0sXG4gIHhob29rbGVmdGFycm93OiBbW1wibGVmdGFycm93XCIsIFwicmlnaHRob29rXCJdLCAxLjA4LCA1MjJdLFxuICB4aG9va3JpZ2h0YXJyb3c6IFtbXCJsZWZ0aG9va1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuMDgsIDUyMl0sXG4gIG92ZXJsaW5lc2VnbWVudDogW1tcImxlZnRsaW5lc2VnbWVudFwiLCBcInJpZ2h0bGluZXNlZ21lbnRcIl0sIDAuODg4LCA1MjJdLFxuICB1bmRlcmxpbmVzZWdtZW50OiBbW1wibGVmdGxpbmVzZWdtZW50XCIsIFwicmlnaHRsaW5lc2VnbWVudFwiXSwgMC44ODgsIDUyMl0sXG4gIG92ZXJncm91cDogW1tcImxlZnRncm91cFwiLCBcInJpZ2h0Z3JvdXBcIl0sIDAuODg4LCAzNDJdLFxuICB1bmRlcmdyb3VwOiBbW1wibGVmdGdyb3VwdW5kZXJcIiwgXCJyaWdodGdyb3VwdW5kZXJcIl0sIDAuODg4LCAzNDJdLFxuICB4bWFwc3RvOiBbW1wibGVmdG1hcHN0b1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuNSwgNTIyXSxcbiAgeHRvZnJvbTogW1tcImxlZnRUb0Zyb21cIiwgXCJyaWdodFRvRnJvbVwiXSwgMS43NSwgNTI4XSxcbiAgLy8gVGhlIG5leHQgdGhyZWUgYXJyb3dzIGFyZSBmcm9tIHRoZSBtaGNoZW0gcGFja2FnZS5cbiAgLy8gSW4gbWhjaGVtLnN0eSwgbWluLWxlbmd0aCBpcyAyLjBlbS4gQnV0IHRoZXNlIGFycm93cyBtaWdodCBhcHBlYXIgaW4gdGhlXG4gIC8vIGRvY3VtZW50IGFzIFxceHJpZ2h0YXJyb3cgb3IgXFx4cmlnaHRsZWZ0aGFycG9vbnMuIFRob3NlIGhhdmVcbiAgLy8gbWluLWxlbmd0aCA9IDEuNzVlbSwgc28gd2Ugc2V0IG1pbi1sZW5ndGggb24gdGhlc2UgbmV4dCB0aHJlZSB0byBtYXRjaC5cbiAgeHJpZ2h0bGVmdGFycm93czogW1tcImJhcmFib3ZlbGVmdGFycm93XCIsIFwicmlnaHRhcnJvd2Fib3ZlYmFyXCJdLCAxLjc1LCA5MDFdLFxuICB4cmlnaHRlcXVpbGlicml1bTogW1tcImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vblwiLCBcInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXJcIl0sIDEuNzUsIDcxNl0sXG4gIHhsZWZ0ZXF1aWxpYnJpdW06IFtbXCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb25cIiwgXCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyXCJdLCAxLjc1LCA3MTZdXG59O1xuXG52YXIgZ3JvdXBMZW5ndGggPSBmdW5jdGlvbiBncm91cExlbmd0aChhcmcpIHtcbiAgaWYgKGFyZy50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICByZXR1cm4gYXJnLmJvZHkubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuXG52YXIgc3RyZXRjaHlfc3ZnU3BhbiA9IGZ1bmN0aW9uIHN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGEgc3BhbiB3aXRoIGlubGluZSBTVkcgZm9yIHRoZSBlbGVtZW50LlxuICBmdW5jdGlvbiBidWlsZFN2Z1NwYW5fKCkge1xuICAgIHZhciB2aWV3Qm94V2lkdGggPSA0MDAwMDA7IC8vIGRlZmF1bHRcblxuICAgIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcblxuICAgIGlmICh1dGlscy5jb250YWlucyhbXCJ3aWRlaGF0XCIsIFwid2lkZWNoZWNrXCIsIFwid2lkZXRpbGRlXCIsIFwidXRpbGRlXCJdLCBsYWJlbCkpIHtcbiAgICAgIC8vIEVhY2ggdHlwZSBpbiB0aGUgYGlmYCBzdGF0ZW1lbnQgY29ycmVzcG9uZHMgdG8gb25lIG9mIHRoZSBQYXJzZU5vZGVcbiAgICAgIC8vIHR5cGVzIGJlbG93LiBUaGlzIG5hcnJvd2luZyBpcyByZXF1aXJlZCB0byBhY2Nlc3MgYGdycC5iYXNlYC5cbiAgICAgIHZhciBncnAgPSBncm91cDsgLy8gVGhlcmUgYXJlIGZvdXIgU1ZHIGltYWdlcyBhdmFpbGFibGUgZm9yIGVhY2ggZnVuY3Rpb24uXG4gICAgICAvLyBDaG9vc2UgYSB0YWxsZXIgaW1hZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzLlxuXG4gICAgICB2YXIgbnVtQ2hhcnMgPSBncm91cExlbmd0aChncnAuYmFzZSk7XG4gICAgICB2YXIgdmlld0JveEhlaWdodDtcbiAgICAgIHZhciBwYXRoTmFtZTtcblxuICAgICAgdmFyIF9oZWlnaHQ7XG5cbiAgICAgIGlmIChudW1DaGFycyA+IDUpIHtcbiAgICAgICAgaWYgKGxhYmVsID09PSBcIndpZGVoYXRcIiB8fCBsYWJlbCA9PT0gXCJ3aWRlY2hlY2tcIikge1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSA0MjA7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gMjM2NDtcbiAgICAgICAgICBfaGVpZ2h0ID0gMC40MjtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgXCI0XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveEhlaWdodCA9IDMxMjtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSAyMzQwO1xuICAgICAgICAgIF9oZWlnaHQgPSAwLjM0O1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZTRcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGltZ0luZGV4ID0gWzEsIDEsIDIsIDIsIDMsIDNdW251bUNoYXJzXTtcblxuICAgICAgICBpZiAobGFiZWwgPT09IFwid2lkZWhhdFwiIHx8IGxhYmVsID09PSBcIndpZGVjaGVja1wiKSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDEwNjIsIDIzNjQsIDIzNjQsIDIzNjRdW2ltZ0luZGV4XTtcbiAgICAgICAgICB2aWV3Qm94SGVpZ2h0ID0gWzAsIDIzOSwgMzAwLCAzNjAsIDQyMF1baW1nSW5kZXhdO1xuICAgICAgICAgIF9oZWlnaHQgPSBbMCwgMC4yNCwgMC4zLCAwLjMsIDAuMzYsIDAuNDJdW2ltZ0luZGV4XTtcbiAgICAgICAgICBwYXRoTmFtZSA9IGxhYmVsICsgaW1nSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0JveFdpZHRoID0gWzAsIDYwMCwgMTAzMywgMjMzOSwgMjM0MF1baW1nSW5kZXhdO1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSBbMCwgMjYwLCAyODYsIDMwNiwgMzEyXVtpbWdJbmRleF07XG4gICAgICAgICAgX2hlaWdodCA9IFswLCAwLjI2LCAwLjI4NiwgMC4zLCAwLjMwNiwgMC4zNF1baW1nSW5kZXhdO1xuICAgICAgICAgIHBhdGhOYW1lID0gXCJ0aWxkZVwiICsgaW1nSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHBhdGggPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShwYXRoTmFtZSk7XG4gICAgICB2YXIgc3ZnTm9kZSA9IG5ldyBTdmdOb2RlKFtwYXRoXSwge1xuICAgICAgICBcIndpZHRoXCI6IFwiMTAwJVwiLFxuICAgICAgICBcImhlaWdodFwiOiBfaGVpZ2h0ICsgXCJlbVwiLFxuICAgICAgICBcInZpZXdCb3hcIjogXCIwIDAgXCIgKyB2aWV3Qm94V2lkdGggKyBcIiBcIiArIHZpZXdCb3hIZWlnaHQsXG4gICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcIm5vbmVcIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzcGFuOiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXSwgW3N2Z05vZGVdLCBvcHRpb25zKSxcbiAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogX2hlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNwYW5zID0gW107XG4gICAgICB2YXIgZGF0YSA9IGthdGV4SW1hZ2VzRGF0YVtsYWJlbF07XG4gICAgICB2YXIgcGF0aHMgPSBkYXRhWzBdLFxuICAgICAgICAgIF9taW5XaWR0aCA9IGRhdGFbMV0sXG4gICAgICAgICAgX3ZpZXdCb3hIZWlnaHQgPSBkYXRhWzJdO1xuXG4gICAgICB2YXIgX2hlaWdodDIgPSBfdmlld0JveEhlaWdodCAvIDEwMDA7XG5cbiAgICAgIHZhciBudW1TdmdDaGlsZHJlbiA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHZhciB3aWR0aENsYXNzZXM7XG4gICAgICB2YXIgYWxpZ25zO1xuXG4gICAgICBpZiAobnVtU3ZnQ2hpbGRyZW4gPT09IDEpIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZTogQWxsIHRoZXNlIGNhc2VzIG11c3QgYmUgb2YgdGhlIDQtdHVwbGUgdHlwZS5cbiAgICAgICAgdmFyIGFsaWduMSA9IGRhdGFbM107XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhpZGUtdGFpbFwiXTtcbiAgICAgICAgYWxpZ25zID0gW2FsaWduMV07XG4gICAgICB9IGVsc2UgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAyKSB7XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImhhbGZhcnJvdy1sZWZ0XCIsIFwiaGFsZmFycm93LXJpZ2h0XCJdO1xuICAgICAgICBhbGlnbnMgPSBbXCJ4TWluWU1pblwiLCBcInhNYXhZTWluXCJdO1xuICAgICAgfSBlbHNlIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMykge1xuICAgICAgICB3aWR0aENsYXNzZXMgPSBbXCJicmFjZS1sZWZ0XCIsIFwiYnJhY2UtY2VudGVyXCIsIFwiYnJhY2UtcmlnaHRcIl07XG4gICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1pZFlNaW5cIiwgXCJ4TWF4WU1pblwiXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcnJlY3Qga2F0ZXhJbWFnZXNEYXRhIG9yIHVwZGF0ZSBjb2RlIGhlcmUgdG8gc3VwcG9ydFxcbiAgICAgICAgICAgICAgICAgICAgXCIgKyBudW1TdmdDaGlsZHJlbiArIFwiIGNoaWxkcmVuLlwiKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1TdmdDaGlsZHJlbjsgaSsrKSB7XG4gICAgICAgIHZhciBfcGF0aCA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHBhdGhzW2ldKTtcblxuICAgICAgICB2YXIgX3N2Z05vZGUgPSBuZXcgU3ZnTm9kZShbX3BhdGhdLCB7XG4gICAgICAgICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgICAgICAgXCJoZWlnaHRcIjogX2hlaWdodDIgKyBcImVtXCIsXG4gICAgICAgICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgdmlld0JveFdpZHRoICsgXCIgXCIgKyBfdmlld0JveEhlaWdodCxcbiAgICAgICAgICBcInByZXNlcnZlQXNwZWN0UmF0aW9cIjogYWxpZ25zW2ldICsgXCIgc2xpY2VcIlxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgX3NwYW4gPSBidWlsZENvbW1vbi5tYWtlU3ZnU3Bhbihbd2lkdGhDbGFzc2VzW2ldXSwgW19zdmdOb2RlXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNwYW46IF9zcGFuLFxuICAgICAgICAgICAgbWluV2lkdGg6IF9taW5XaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF9zcGFuLnN0eWxlLmhlaWdodCA9IF9oZWlnaHQyICsgXCJlbVwiO1xuICAgICAgICAgIHNwYW5zLnB1c2goX3NwYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwYW46IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCJdLCBzcGFucywgb3B0aW9ucyksXG4gICAgICAgIG1pbldpZHRoOiBfbWluV2lkdGgsXG4gICAgICAgIGhlaWdodDogX2hlaWdodDJcbiAgICAgIH07XG4gICAgfVxuICB9IC8vIGJ1aWxkU3ZnU3Bhbl8oKVxuXG5cbiAgdmFyIF9idWlsZFN2Z1NwYW5fID0gYnVpbGRTdmdTcGFuXygpLFxuICAgICAgc3BhbiA9IF9idWlsZFN2Z1NwYW5fLnNwYW4sXG4gICAgICBtaW5XaWR0aCA9IF9idWlsZFN2Z1NwYW5fLm1pbldpZHRoLFxuICAgICAgaGVpZ2h0ID0gX2J1aWxkU3ZnU3Bhbl8uaGVpZ2h0OyAvLyBOb3RlIHRoYXQgd2UgYXJlIHJldHVybmluZyBzcGFuLmRlcHRoID0gMC5cbiAgLy8gQW55IGFkanVzdG1lbnRzIHJlbGF0aXZlIHRvIHRoZSBiYXNlbGluZSBtdXN0IGJlIGRvbmUgaW4gYnVpbGRIVE1MLlxuXG5cbiAgc3Bhbi5oZWlnaHQgPSBoZWlnaHQ7XG4gIHNwYW4uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJlbVwiO1xuXG4gIGlmIChtaW5XaWR0aCA+IDApIHtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gbWluV2lkdGggKyBcImVtXCI7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBzdHJldGNoeV9lbmNsb3NlU3BhbiA9IGZ1bmN0aW9uIGVuY2xvc2VTcGFuKGlubmVyLCBsYWJlbCwgcGFkLCBvcHRpb25zKSB7XG4gIC8vIFJldHVybiBhbiBpbWFnZSBzcGFuIGZvciBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIG9yIFxcZmJveFxuICB2YXIgaW1nO1xuICB2YXIgdG90YWxIZWlnaHQgPSBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIDIgKiBwYWQ7XG5cbiAgaWYgKC9mYm94fGNvbG9yLy50ZXN0KGxhYmVsKSkge1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInN0cmV0Y2h5XCIsIGxhYmVsXSwgW10sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGxhYmVsID09PSBcImZib3hcIikge1xuICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvciAmJiBvcHRpb25zLmdldENvbG9yKCk7XG5cbiAgICAgIGlmIChjb2xvcikge1xuICAgICAgICBpbWcuc3R5bGUuYm9yZGVyQ29sb3IgPSBjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgb3IgXFx4Y2FuY2VsXG4gICAgLy8gU2luY2UgXFxjYW5jZWwncyBTVkcgaXMgaW5saW5lIGFuZCBpdCBvbWl0cyB0aGUgdmlld0JveCBhdHRyaWJ1dGUsXG4gICAgLy8gaXRzIHN0cm9rZS13aWR0aCB3aWxsIG5vdCB2YXJ5IHdpdGggc3BhbiBhcmVhLlxuICAgIHZhciBsaW5lcyA9IFtdO1xuXG4gICAgaWYgKC9eW2J4XWNhbmNlbCQvLnRlc3QobGFiZWwpKSB7XG4gICAgICBsaW5lcy5wdXNoKG5ldyBMaW5lTm9kZSh7XG4gICAgICAgIFwieDFcIjogXCIwXCIsXG4gICAgICAgIFwieTFcIjogXCIwXCIsXG4gICAgICAgIFwieDJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwieTJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMC4wNDZlbVwiXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKC9eeD9jYW5jZWwkLy50ZXN0KGxhYmVsKSkge1xuICAgICAgbGluZXMucHVzaChuZXcgTGluZU5vZGUoe1xuICAgICAgICBcIngxXCI6IFwiMFwiLFxuICAgICAgICBcInkxXCI6IFwiMTAwJVwiLFxuICAgICAgICBcIngyXCI6IFwiMTAwJVwiLFxuICAgICAgICBcInkyXCI6IFwiMFwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjAuMDQ2ZW1cIlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUobGluZXMsIHtcbiAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICBcImhlaWdodFwiOiB0b3RhbEhlaWdodCArIFwiZW1cIlxuICAgIH0pO1xuICAgIGltZyA9IGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFtdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpO1xuICB9XG5cbiAgaW1nLmhlaWdodCA9IHRvdGFsSGVpZ2h0O1xuICBpbWcuc3R5bGUuaGVpZ2h0ID0gdG90YWxIZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiBpbWc7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdHJldGNoeSA9ICh7XG4gIGVuY2xvc2VTcGFuOiBzdHJldGNoeV9lbmNsb3NlU3BhbixcbiAgbWF0aE1Mbm9kZTogc3RyZXRjaHlfbWF0aE1Mbm9kZSxcbiAgc3ZnU3Bhbjogc3RyZXRjaHlfc3ZnU3BhblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvYWNjZW50LmpzXG5cblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImFjY2VudFwiLCBidXRcbnZhciBhY2NlbnRfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gQWNjZW50cyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLCBydWxlIDEyLlxuICB2YXIgYmFzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuICB2YXIgc3VwU3ViR3JvdXA7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIG91ciBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgYW5kIHdlIGhhdmUgc3VwZXJzY3JpcHRzIGFuZFxuICAgIC8vIHN1YnNjcmlwdHMsIHRoZSBzdXBzdWIgd2lsbCBkZWZlciB0byB1cy4gSW4gcGFydGljdWxhciwgd2Ugd2FudFxuICAgIC8vIHRvIGF0dGFjaCB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIHRvIHRoZSBpbm5lciBib2R5IChzb1xuICAgIC8vIHRoYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgd29uJ3QgYmVcbiAgICAvLyBhZmZlY3RlZCBieSB0aGUgaGVpZ2h0IG9mIHRoZSBhY2NlbnQpLiBXZSBhY2NvbXBsaXNoIHRoaXMgYnlcbiAgICAvLyBzdGlja2luZyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGludG8gdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiwgYW5kXG4gICAgLy8gcmVuZGVyaW5nIHRoYXQsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hlcmUgdGhlIGFjY2VudCBpcy5cbiAgICAvLyBUaGUgcmVhbCBhY2NlbnQgZ3JvdXAgaXMgdGhlIGJhc2Ugb2YgdGhlIHN1cHN1YiBncm91cFxuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3VwU3ViLmJhc2UsIFwiYWNjZW50XCIpOyAvLyBUaGUgY2hhcmFjdGVyIGJveCBpcyB0aGUgYmFzZSBvZiB0aGUgYWNjZW50IGdyb3VwXG5cbiAgICBiYXNlID0gZ3JvdXAuYmFzZTsgLy8gU3RpY2sgdGhlIGNoYXJhY3RlciBib3ggaW50byB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViIGdyb3VwXG5cbiAgICBzdXBTdWIuYmFzZSA9IGJhc2U7IC8vIFJlcmVuZGVyIHRoZSBzdXBzdWIgZ3JvdXAgd2l0aCBpdHMgbmV3IGJhc2UsIGFuZCBzdG9yZSB0aGF0XG4gICAgLy8gcmVzdWx0LlxuXG4gICAgc3VwU3ViR3JvdXAgPSBhc3NlcnRTcGFuKGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cFN1Yiwgb3B0aW9ucykpOyAvLyByZXNldCBvcmlnaW5hbCBiYXNlXG5cbiAgICBzdXBTdWIuYmFzZSA9IGdyb3VwO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImFjY2VudFwiKTtcbiAgICBiYXNlID0gZ3JvdXAuYmFzZTtcbiAgfSAvLyBCdWlsZCB0aGUgYmFzZSBncm91cFxuXG5cbiAgdmFyIGJvZHkgPSBidWlsZEhUTUxfYnVpbGRHcm91cChiYXNlLCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gRG9lcyB0aGUgYWNjZW50IG5lZWQgdG8gc2hpZnQgZm9yIHRoZSBza2V3IG9mIGEgY2hhcmFjdGVyP1xuXG4gIHZhciBtdXN0U2hpZnQgPSBncm91cC5pc1NoaWZ0eSAmJiB1dGlscy5pc0NoYXJhY3RlckJveChiYXNlKTsgLy8gQ2FsY3VsYXRlIHRoZSBza2V3IG9mIHRoZSBhY2NlbnQuIFRoaXMgaXMgYmFzZWQgb24gdGhlIGxpbmUgXCJJZiB0aGVcbiAgLy8gbnVjbGV1cyBpcyBub3QgYSBzaW5nbGUgY2hhcmFjdGVyLCBsZXQgcyA9IDA7IG90aGVyd2lzZSBzZXQgcyB0byB0aGVcbiAgLy8ga2VybiBhbW91bnQgZm9yIHRoZSBudWNsZXVzIGZvbGxvd2VkIGJ5IHRoZSBcXHNrZXdjaGFyIG9mIGl0cyBmb250LlwiXG4gIC8vIE5vdGUgdGhhdCBvdXIgc2tldyBtZXRyaWNzIGFyZSBqdXN0IHRoZSBrZXJuIGJldHdlZW4gZWFjaCBjaGFyYWN0ZXJcbiAgLy8gYW5kIHRoZSBza2V3Y2hhci5cblxuICB2YXIgc2tldyA9IDA7XG5cbiAgaWYgKG11c3RTaGlmdCkge1xuICAgIC8vIElmIHRoZSBiYXNlIGlzIGEgY2hhcmFjdGVyIGJveCwgdGhlbiB3ZSB3YW50IHRoZSBza2V3IG9mIHRoZVxuICAgIC8vIGlubmVybW9zdCBjaGFyYWN0ZXIuIFRvIGRvIHRoYXQsIHdlIGZpbmQgdGhlIGlubmVybW9zdCBjaGFyYWN0ZXI6XG4gICAgdmFyIGJhc2VDaGFyID0gdXRpbHMuZ2V0QmFzZUVsZW0oYmFzZSk7IC8vIFRoZW4sIHdlIHJlbmRlciBpdHMgZ3JvdXAgdG8gZ2V0IHRoZSBzeW1ib2wgaW5zaWRlIGl0XG5cbiAgICB2YXIgYmFzZUdyb3VwID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoYmFzZUNoYXIsIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpOyAvLyBGaW5hbGx5LCB3ZSBwdWxsIHRoZSBza2V3IG9mZiBvZiB0aGUgc3ltYm9sLlxuXG4gICAgc2tldyA9IGFzc2VydFN5bWJvbERvbU5vZGUoYmFzZUdyb3VwKS5za2V3OyAvLyBOb3RlIHRoYXQgd2Ugbm93IHRocm93IGF3YXkgYmFzZUdyb3VwLCBiZWNhdXNlIHRoZSBsYXllcnMgd2VcbiAgICAvLyByZW1vdmVkIHdpdGggZ2V0QmFzZUVsZW0gbWlnaHQgY29udGFpbiB0aGluZ3MgbGlrZSBcXGNvbG9yIHdoaWNoXG4gICAgLy8gd2UgY2FuJ3QgZ2V0IHJpZCBvZi5cbiAgICAvLyBUT0RPKGVtaWx5KTogRmluZCBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBza2V3XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgdGhlIGFjY2VudFxuXG5cbiAgdmFyIGNsZWFyYW5jZSA9IE1hdGgubWluKGJvZHkuaGVpZ2h0LCBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodCk7IC8vIEJ1aWxkIHRoZSBhY2NlbnRcblxuICB2YXIgYWNjZW50Qm9keTtcblxuICBpZiAoIWdyb3VwLmlzU3RyZXRjaHkpIHtcbiAgICB2YXIgYWNjZW50O1xuICAgIHZhciB3aWR0aDtcblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdmVjXCIpIHtcbiAgICAgIC8vIEJlZm9yZSB2ZXJzaW9uIDAuOSwgXFx2ZWMgdXNlZCB0aGUgY29tYmluaW5nIGZvbnQgZ2x5cGggVSsyMEQ3LlxuICAgICAgLy8gQnV0IGJyb3dzZXJzLCBlc3BlY2lhbGx5IFNhZmFyaSwgYXJlIG5vdCBjb25zaXN0ZW50IGluIGhvdyB0aGV5XG4gICAgICAvLyByZW5kZXIgY29tYmluaW5nIGNoYXJhY3RlcnMgd2hlbiBub3QgcHJlY2VkZWQgYnkgYSBjaGFyYWN0ZXIuXG4gICAgICAvLyBTbyBub3cgd2UgdXNlIGFuIFNWRy5cbiAgICAgIC8vIElmIFNhZmFyaSByZWZvcm1zLCB3ZSBzaG91bGQgY29uc2lkZXIgcmV2ZXJ0aW5nIHRvIHRoZSBnbHlwaC5cbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLnN0YXRpY1N2ZyhcInZlY1wiLCBvcHRpb25zKTtcbiAgICAgIHdpZHRoID0gYnVpbGRDb21tb24uc3ZnRGF0YS52ZWNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY2VudCA9IGJ1aWxkQ29tbW9uLm1ha2VPcmQoe1xuICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICB0ZXh0OiBncm91cC5sYWJlbFxuICAgICAgfSwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgYWNjZW50ID0gYXNzZXJ0U3ltYm9sRG9tTm9kZShhY2NlbnQpOyAvLyBSZW1vdmUgdGhlIGl0YWxpYyBjb3JyZWN0aW9uIG9mIHRoZSBhY2NlbnQsIGJlY2F1c2UgaXQgb25seSBzZXJ2ZXMgdG9cbiAgICAgIC8vIHNoaWZ0IHRoZSBhY2NlbnQgb3ZlciB0byBhIHBsYWNlIHdlIGRvbid0IHdhbnQuXG5cbiAgICAgIGFjY2VudC5pdGFsaWMgPSAwO1xuICAgICAgd2lkdGggPSBhY2NlbnQud2lkdGg7XG4gICAgfVxuXG4gICAgYWNjZW50Qm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFjY2VudC1ib2R5XCJdLCBbYWNjZW50XSk7IC8vIFwiRnVsbFwiIGFjY2VudHMgZXhwYW5kIHRoZSB3aWR0aCBvZiB0aGUgcmVzdWx0aW5nIHN5bWJvbCB0byBiZVxuICAgIC8vIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYWNjZW50LCBhbmQgb3ZlcmxhcCBkaXJlY3RseSBvbnRvIHRoZVxuICAgIC8vIGNoYXJhY3RlciB3aXRob3V0IGFueSB2ZXJ0aWNhbCBvZmZzZXQuXG5cbiAgICB2YXIgYWNjZW50RnVsbCA9IGdyb3VwLmxhYmVsID09PSBcIlxcXFx0ZXh0Y2lyY2xlZFwiO1xuXG4gICAgaWYgKGFjY2VudEZ1bGwpIHtcbiAgICAgIGFjY2VudEJvZHkuY2xhc3Nlcy5wdXNoKCdhY2NlbnQtZnVsbCcpO1xuICAgICAgY2xlYXJhbmNlID0gYm9keS5oZWlnaHQ7XG4gICAgfSAvLyBTaGlmdCB0aGUgYWNjZW50IG92ZXIgYnkgdGhlIHNrZXcuXG5cblxuICAgIHZhciBsZWZ0ID0gc2tldzsgLy8gQ1NTIGRlZmluZXMgYC5rYXRleCAuYWNjZW50IC5hY2NlbnQtYm9keTpub3QoLmFjY2VudC1mdWxsKSB7IHdpZHRoOiAwIH1gXG4gICAgLy8gc28gdGhhdCB0aGUgYWNjZW50IGRvZXNuJ3QgY29udHJpYnV0ZSB0byB0aGUgYm91bmRpbmcgYm94LlxuICAgIC8vIFdlIG5lZWQgdG8gc2hpZnQgdGhlIGNoYXJhY3RlciBieSBpdHMgd2lkdGggKGVmZmVjdGl2ZWx5IGhhbGZcbiAgICAvLyBpdHMgd2lkdGgpIHRvIGNvbXBlbnNhdGUuXG5cbiAgICBpZiAoIWFjY2VudEZ1bGwpIHtcbiAgICAgIGxlZnQgLT0gd2lkdGggLyAyO1xuICAgIH1cblxuICAgIGFjY2VudEJvZHkuc3R5bGUubGVmdCA9IGxlZnQgKyBcImVtXCI7IC8vIFxcdGV4dGNpcmNsZWQgdXNlcyB0aGUgXFxiaWdjaXJjIGdseXBoLCBzbyBpdCBuZWVkcyBzb21lXG4gICAgLy8gdmVydGljYWwgYWRqdXN0bWVudCB0byBtYXRjaCBMYVRlWC5cblxuICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcdGV4dGNpcmNsZWRcIikge1xuICAgICAgYWNjZW50Qm9keS5zdHlsZS50b3AgPSBcIi4yZW1cIjtcbiAgICB9XG5cbiAgICBhY2NlbnRCb2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IC1jbGVhcmFuY2VcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGFjY2VudEJvZHlcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgYWNjZW50Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpO1xuICAgIGFjY2VudEJvZHkgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYWNjZW50Qm9keSxcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXSxcbiAgICAgICAgd3JhcHBlclN0eWxlOiBza2V3ID4gMCA/IHtcbiAgICAgICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSBcIiArIDIgKiBza2V3ICsgXCJlbSlcIixcbiAgICAgICAgICBtYXJnaW5MZWZ0OiAyICogc2tldyArIFwiZW1cIlxuICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgdmFyIGFjY2VudFdyYXAgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50XCJdLCBbYWNjZW50Qm9keV0sIG9wdGlvbnMpO1xuXG4gIGlmIChzdXBTdWJHcm91cCkge1xuICAgIC8vIEhlcmUsIHdlIHJlcGxhY2UgdGhlIFwiYmFzZVwiIGNoaWxkIG9mIHRoZSBzdXBzdWIgd2l0aCBvdXIgbmV3bHlcbiAgICAvLyBnZW5lcmF0ZWQgYWNjZW50LlxuICAgIHN1cFN1Ykdyb3VwLmNoaWxkcmVuWzBdID0gYWNjZW50V3JhcDsgLy8gU2luY2Ugd2UgZG9uJ3QgcmVydW4gdGhlIGhlaWdodCBjYWxjdWxhdGlvbiBhZnRlciByZXBsYWNpbmcgdGhlXG4gICAgLy8gYWNjZW50LCB3ZSBtYW51YWxseSByZWNhbGN1bGF0ZSBoZWlnaHQuXG5cbiAgICBzdXBTdWJHcm91cC5oZWlnaHQgPSBNYXRoLm1heChhY2NlbnRXcmFwLmhlaWdodCwgc3VwU3ViR3JvdXAuaGVpZ2h0KTsgLy8gQWNjZW50cyBzaG91bGQgYWx3YXlzIGJlIG9yZHMsIGV2ZW4gd2hlbiB0aGVpciBpbm5hcmRzIGFyZSBub3QuXG5cbiAgICBzdXBTdWJHcm91cC5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgcmV0dXJuIHN1cFN1Ykdyb3VwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhY2NlbnRXcmFwO1xuICB9XG59O1xuXG52YXIgYWNjZW50X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBhY2NlbnROb2RlID0gZ3JvdXAuaXNTdHJldGNoeSA/IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpIDogbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGFiZWwsIGdyb3VwLm1vZGUpXSk7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iYXNlLCBvcHRpb25zKSwgYWNjZW50Tm9kZV0pO1xuICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudFwiLCBcInRydWVcIik7XG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIE5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVggPSBuZXcgUmVnRXhwKFtcIlxcXFxhY3V0ZVwiLCBcIlxcXFxncmF2ZVwiLCBcIlxcXFxkZG90XCIsIFwiXFxcXHRpbGRlXCIsIFwiXFxcXGJhclwiLCBcIlxcXFxicmV2ZVwiLCBcIlxcXFxjaGVja1wiLCBcIlxcXFxoYXRcIiwgXCJcXFxcdmVjXCIsIFwiXFxcXGRvdFwiLCBcIlxcXFxtYXRocmluZ1wiXS5tYXAoZnVuY3Rpb24gKGFjY2VudCkge1xuICByZXR1cm4gXCJcXFxcXCIgKyBhY2NlbnQ7XG59KS5qb2luKFwifFwiKSk7IC8vIEFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXGFjdXRlXCIsIFwiXFxcXGdyYXZlXCIsIFwiXFxcXGRkb3RcIiwgXCJcXFxcdGlsZGVcIiwgXCJcXFxcYmFyXCIsIFwiXFxcXGJyZXZlXCIsIFwiXFxcXGNoZWNrXCIsIFwiXFxcXGhhdFwiLCBcIlxcXFx2ZWNcIiwgXCJcXFxcZG90XCIsIFwiXFxcXG1hdGhyaW5nXCIsIFwiXFxcXHdpZGVjaGVja1wiLCBcIlxcXFx3aWRlaGF0XCIsIFwiXFxcXHdpZGV0aWxkZVwiLCBcIlxcXFxvdmVycmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVybGVmdGFycm93XCIsIFwiXFxcXE92ZXJyaWdodGFycm93XCIsIFwiXFxcXG92ZXJsZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFxvdmVyZ3JvdXBcIiwgXCJcXFxcb3ZlcmxpbmVzZWdtZW50XCIsIFwiXFxcXG92ZXJsZWZ0aGFycG9vblwiLCBcIlxcXFxvdmVycmlnaHRoYXJwb29uXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuICAgIHZhciBpc1N0cmV0Y2h5ID0gIU5PTl9TVFJFVENIWV9BQ0NFTlRfUkVHRVgudGVzdChjb250ZXh0LmZ1bmNOYW1lKTtcbiAgICB2YXIgaXNTaGlmdHkgPSAhaXNTdHJldGNoeSB8fCBjb250ZXh0LmZ1bmNOYW1lID09PSBcIlxcXFx3aWRlaGF0XCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZXRpbGRlXCIgfHwgY29udGV4dC5mdW5jTmFtZSA9PT0gXCJcXFxcd2lkZWNoZWNrXCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBpc1N0cmV0Y2h5LFxuICAgICAgaXNTaGlmdHk6IGlzU2hpZnR5LFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTsgLy8gVGV4dC1tb2RlIGFjY2VudHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFwiLFxuICBuYW1lczogW1wiXFxcXCdcIiwgXCJcXFxcYFwiLCBcIlxcXFxeXCIsIFwiXFxcXH5cIiwgXCJcXFxcPVwiLCBcIlxcXFx1XCIsIFwiXFxcXC5cIiwgJ1xcXFxcIicsIFwiXFxcXHJcIiwgXCJcXFxcSFwiLCBcIlxcXFx2XCIsIFwiXFxcXHRleHRjaXJjbGVkXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBhbGxvd2VkSW5NYXRoOiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgYmFzZSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGNvbnRleHQuZnVuY05hbWUsXG4gICAgICBpc1N0cmV0Y2h5OiBmYWxzZSxcbiAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgYmFzZTogYmFzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhY2NlbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFjY2VudF9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9hY2NlbnR1bmRlci5qc1xuLy8gSG9yaXpvbnRhbCBvdmVybGFwIGZ1bmN0aW9uc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImFjY2VudFVuZGVyXCIsXG4gIG5hbWVzOiBbXCJcXFxcdW5kZXJsZWZ0YXJyb3dcIiwgXCJcXFxcdW5kZXJyaWdodGFycm93XCIsIFwiXFxcXHVuZGVybGVmdHJpZ2h0YXJyb3dcIiwgXCJcXFxcdW5kZXJncm91cFwiLCBcIlxcXFx1bmRlcmxpbmVzZWdtZW50XCIsIFwiXFxcXHV0aWxkZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBiYXNlID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhY2NlbnRVbmRlclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogZnVuY05hbWUsXG4gICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gVHJlYXQgdW5kZXIgYWNjZW50cyBtdWNoIGxpa2UgdW5kZXJsaW5lcy5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpO1xuICAgIHZhciBhY2NlbnRCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGtlcm4gPSBncm91cC5sYWJlbCA9PT0gXCJcXFxcdXRpbGRlXCIgPyAwLjEyIDogMDsgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuXG4gICAgdmFyIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYWNjZW50Qm9keS5oZWlnaHQgKyBrZXJuLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBhY2NlbnRCb2R5LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogW1wic3ZnLWFsaWduXCJdXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBrZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lckdyb3VwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiYWNjZW50dW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnR1bmRlclwiLCBcInRydWVcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2Fycm93LmpzXG5cblxuXG5cblxuXG5cbi8vIEhlbHBlciBmdW5jdGlvblxudmFyIGFycm93X3BhZGRlZE5vZGUgPSBmdW5jdGlvbiBwYWRkZWROb2RlKGdyb3VwKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIGdyb3VwID8gW2dyb3VwXSA6IFtdKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIiswLjZlbVwiKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjNlbVwiKTtcbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBTdHJldGNoeSBhcnJvd3Mgd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudFxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ4QXJyb3dcIixcbiAgbmFtZXM6IFtcIlxcXFx4bGVmdGFycm93XCIsIFwiXFxcXHhyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0YXJyb3dcIiwgXCJcXFxceFJpZ2h0YXJyb3dcIiwgXCJcXFxceGxlZnRyaWdodGFycm93XCIsIFwiXFxcXHhMZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFx4aG9va2xlZnRhcnJvd1wiLCBcIlxcXFx4aG9va3JpZ2h0YXJyb3dcIiwgXCJcXFxceG1hcHN0b1wiLCBcIlxcXFx4cmlnaHRoYXJwb29uZG93blwiLCBcIlxcXFx4cmlnaHRoYXJwb29udXBcIiwgXCJcXFxceGxlZnRoYXJwb29uZG93blwiLCBcIlxcXFx4bGVmdGhhcnBvb251cFwiLCBcIlxcXFx4cmlnaHRsZWZ0aGFycG9vbnNcIiwgXCJcXFxceGxlZnRyaWdodGhhcnBvb25zXCIsIFwiXFxcXHhsb25nZXF1YWxcIiwgXCJcXFxceHR3b2hlYWRyaWdodGFycm93XCIsIFwiXFxcXHh0d29oZWFkbGVmdGFycm93XCIsIFwiXFxcXHh0b2Zyb21cIiwgLy8gVGhlIG5leHQgMyBmdW5jdGlvbnMgYXJlIGhlcmUgdG8gc3VwcG9ydCB0aGUgbWhjaGVtIGV4dGVuc2lvbi5cbiAgLy8gRGlyZWN0IHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgZGlzY291cmFnZWQgYW5kIG1heSBicmVhayBzb21lZGF5LlxuICBcIlxcXFx4cmlnaHRsZWZ0YXJyb3dzXCIsIFwiXFxcXHhyaWdodGVxdWlsaWJyaXVtXCIsIFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwieEFycm93XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGFyZ3NbMF0sXG4gICAgICBiZWxvdzogb3B0QXJnc1swXVxuICAgIH07XG4gIH0sXG4gIC8vIEZsb3cgaXMgdW5hYmxlIHRvIGNvcnJlY3RseSBpbmZlciB0aGUgdHlwZSBvZiBgZ3JvdXBgLCBldmVuIHRob3VnaCBpdCdzXG4gIC8vIHVuYW1pYmlndW91c2x5IGRldGVybWluZWQgZnJvbSB0aGUgcGFzc2VkLWluIGB0eXBlYCBhYm92ZS5cbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTsgLy8gQnVpbGQgdGhlIGFyZ3VtZW50IGdyb3VwcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3R5bGUuXG4gICAgLy8gUmVmOiBhbXNtYXRoLmR0eDogICBcXGhib3h7JFxcc2NyaXB0c3R5bGVcXG1rZXJuIzNtdXsjNn1cXG1rZXJuIzRtdSR9JVxuICAgIC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3VwKCkpO1xuICAgIHZhciB1cHBlckdyb3VwID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB1cHBlckdyb3VwLmNsYXNzZXMucHVzaChcIngtYXJyb3ctcGFkXCIpO1xuICAgIHZhciBsb3dlckdyb3VwO1xuXG4gICAgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICAvLyBCdWlsZCB0aGUgbG93ZXIgZ3JvdXBcbiAgICAgIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKTtcbiAgICAgIGxvd2VyR3JvdXAgPSBidWlsZENvbW1vbi53cmFwRnJhZ21lbnQoYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmVsb3csIG5ld09wdGlvbnMsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgIGxvd2VyR3JvdXAuY2xhc3Nlcy5wdXNoKFwieC1hcnJvdy1wYWRcIik7XG4gICAgfVxuXG4gICAgdmFyIGFycm93Qm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBSZSBzaGlmdDogTm90ZSB0aGF0IHN0cmV0Y2h5LnN2Z1NwYW4gcmV0dXJuZWQgYXJyb3dCb2R5LmRlcHRoID0gMC5cbiAgICAvLyBUaGUgcG9pbnQgd2Ugd2FudCBvbiB0aGUgbWF0aCBheGlzIGlzIGF0IDAuNSAqIGFycm93Qm9keS5oZWlnaHQuXG5cbiAgICB2YXIgYXJyb3dTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCArIDAuNSAqIGFycm93Qm9keS5oZWlnaHQ7IC8vIDIgbXUga2Vybi4gUmVmOiBhbXNtYXRoLmR0eDogIzdcXGlmMCMyXFxlbHNlXFxta2VybiMybXVcXGZpXG5cbiAgICB2YXIgdXBwZXJTaGlmdCA9IC1vcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodCAtIDAuNSAqIGFycm93Qm9keS5oZWlnaHQgLSAwLjExMTsgLy8gMC4xMTEgZW0gPSAyIG11XG5cbiAgICBpZiAodXBwZXJHcm91cC5kZXB0aCA+IDAuMjUgfHwgZ3JvdXAubGFiZWwgPT09IFwiXFxcXHhsZWZ0ZXF1aWxpYnJpdW1cIikge1xuICAgICAgdXBwZXJTaGlmdCAtPSB1cHBlckdyb3VwLmRlcHRoOyAvLyBzaGlmdCB1cCBpZiBkZXB0aCBlbmNyb2FjaGVzXG4gICAgfSAvLyBHZW5lcmF0ZSB0aGUgdmxpc3RcblxuXG4gICAgdmFyIHZsaXN0O1xuXG4gICAgaWYgKGxvd2VyR3JvdXApIHtcbiAgICAgIHZhciBsb3dlclNoaWZ0ID0gLW9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICsgbG93ZXJHcm91cC5oZWlnaHQgKyAwLjUgKiBhcnJvd0JvZHkuaGVpZ2h0ICsgMC4xMTE7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdXBwZXJHcm91cCxcbiAgICAgICAgICBzaGlmdDogdXBwZXJTaGlmdFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogYXJyb3dCb2R5LFxuICAgICAgICAgIHNoaWZ0OiBhcnJvd1NoaWZ0XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBsb3dlckdyb3VwLFxuICAgICAgICAgIHNoaWZ0OiBsb3dlclNoaWZ0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHVwcGVyR3JvdXAsXG4gICAgICAgICAgc2hpZnQ6IHVwcGVyU2hpZnRcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGFycm93Qm9keSxcbiAgICAgICAgICBzaGlmdDogYXJyb3dTaGlmdFxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cblxuICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXJlbFwiLCBcIngtYXJyb3dcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGFycm93Tm9kZSA9IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAgIHZhciB1cHBlck5vZGUgPSBhcnJvd19wYWRkZWROb2RlKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucykpO1xuXG4gICAgICBpZiAoZ3JvdXAuYmVsb3cpIHtcbiAgICAgICAgdmFyIGxvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJvdmVyXCIsIFthcnJvd05vZGUsIGxvd2VyTm9kZSwgdXBwZXJOb2RlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYXJyb3dOb2RlLCB1cHBlck5vZGVdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmJlbG93KSB7XG4gICAgICB2YXIgX2xvd2VyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgb3B0aW9ucykpO1xuXG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJcIiwgW2Fycm93Tm9kZSwgX2xvd2VyTm9kZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAvLyBQYXJzZXIuanMgdGhyb3dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGFyZ3VtZW50LlxuICAgICAgbm9kZSA9IGFycm93X3BhZGRlZE5vZGUoKTtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vdmVyXCIsIFthcnJvd05vZGUsIG5vZGVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY2hhci5qc1xuXG5cbiAvLyBcXEBjaGFyIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBncm91cGVkIGRlY2ltYWwgYXJndW1lbnQgbGlrZVxuLy8gezEyM30gYW5kIGNvbnZlcnRzIGludG8gc3ltYm9sIHdpdGggY29kZSAxMjMuICBJdCBpcyB1c2VkIGJ5IHRoZSAqbWFjcm8qXG4vLyBcXGNoYXIgZGVmaW5lZCBpbiBtYWNyb3MuanMuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gIG5hbWVzOiBbXCJcXFxcQGNoYXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYXJnID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJvcmRncm91cFwiKTtcbiAgICB2YXIgZ3JvdXAgPSBhcmcuYm9keTtcbiAgICB2YXIgbnVtYmVyID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gYXNzZXJ0Tm9kZVR5cGUoZ3JvdXBbaV0sIFwidGV4dG9yZFwiKTtcbiAgICAgIG51bWJlciArPSBub2RlLnRleHQ7XG4gICAgfVxuXG4gICAgdmFyIGNvZGUgPSBwYXJzZUludChudW1iZXIpO1xuXG4gICAgaWYgKGlzTmFOKGNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcQGNoYXIgaGFzIG5vbi1udW1lcmljIGFyZ3VtZW50IFwiICsgbnVtYmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHRleHQ6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9jb2xvci5qc1xuXG5cblxuXG5cblxuXG52YXIgY29sb3JfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLmNvbG9yKSwgZmFsc2UpOyAvLyBcXGNvbG9yIGlzbid0IHN1cHBvc2VkIHRvIGFmZmVjdCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMuXG4gIC8vIFRvIGFjY29tcGxpc2ggdGhpcywgd2Ugd3JhcCB0aGUgcmVzdWx0cyBpbiBhIGZyYWdtZW50LCBzbyB0aGUgaW5uZXJcbiAgLy8gZWxlbWVudHMgd2lsbCBiZSBhYmxlIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlaXIgbmVpZ2hib3JzLiBGb3JcbiAgLy8gZXhhbXBsZSwgYFxcY29sb3J7cmVkfXsyICt9IDNgIGhhcyB0aGUgc2FtZSBzcGFjaW5nIGFzIGAyICsgM2BcblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbn07XG5cbnZhciBjb2xvcl9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAuY29sb3IpKTtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zdHlsZVwiLCBpbm5lcik7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGNvbG9yXCIsIGdyb3VwLmNvbG9yKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiY29sb3JcIixcbiAgbmFtZXM6IFtcIlxcXFx0ZXh0Y29sb3JcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcImNvbG9yXCIsIFwib3JpZ2luYWxcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGNvbG9yX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBjb2xvcl9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjb2xvclwiLFxuICBuYW1lczogW1wiXFxcXGNvbG9yXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgYnJlYWtPblRva2VuVGV4dCA9IF9yZWYyLmJyZWFrT25Ub2tlblRleHQ7XG4gICAgdmFyIGNvbG9yID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJjb2xvci10b2tlblwiKS5jb2xvcjsgLy8gU2V0IG1hY3JvIFxcY3VycmVudEBjb2xvciBpbiBjdXJyZW50IG5hbWVzcGFjZSB0byBzdG9yZSB0aGUgY3VycmVudFxuICAgIC8vIGNvbG9yLCBtaW1pY2tpbmcgdGhlIGJlaGF2aW9yIG9mIGNvbG9yLnN0eS5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGp1c3QgdG8gY29ycmVjdGx5IGNvbG9yIGEgXFxyaWdodFxuICAgIC8vIHRoYXQgZm9sbG93cyBhIFxcY29sb3IgY29tbWFuZC5cblxuICAgIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxjdXJyZW50QGNvbG9yXCIsIGNvbG9yKTsgLy8gUGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5IHRoYXQgc2hvdWxkIGJlIGNvbG9yZWQuXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24odHJ1ZSwgYnJlYWtPblRva2VuVGV4dCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBjb2xvcl9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogY29sb3JfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvY3IuanNcbi8vIFJvdyBicmVha3Mgd2l0aGluIHRhYnVsYXIgZW52aXJvbm1lbnRzLCBhbmQgbGluZSBicmVha3MgYXQgdG9wIGxldmVsXG5cblxuXG5cblxuIC8vIFxcXFwgaXMgYSBtYWNybyBtYXBwaW5nIHRvIGVpdGhlciBcXGNyIG9yIFxcbmV3bGluZS4gIEJlY2F1c2UgdGhleSBoYXZlIHRoZVxuLy8gc2FtZSBzaWduYXR1cmUsIHdlIGltcGxlbWVudCB0aGVtIGFzIG9uZSBtZWdhZnVuY3Rpb24sIHdpdGggbmV3Um93XG4vLyBpbmRpY2F0aW5nIHdoZXRoZXIgd2UncmUgaW4gdGhlIFxcY3IgY2FzZSwgYW5kIG5ld0xpbmUgaW5kaWNhdGluZyB3aGV0aGVyXG4vLyB0byBicmVhayB0aGUgbGluZSBpbiB0aGUgXFxuZXdsaW5lIGNhc2UuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjclwiLFxuICBuYW1lczogW1wiXFxcXGNyXCIsIFwiXFxcXG5ld2xpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IG9wdEFyZ3NbMF07XG4gICAgdmFyIG5ld1JvdyA9IGZ1bmNOYW1lID09PSBcIlxcXFxjclwiO1xuICAgIHZhciBuZXdMaW5lID0gZmFsc2U7XG5cbiAgICBpZiAoIW5ld1Jvdykge1xuICAgICAgaWYgKHBhcnNlci5zZXR0aW5ncy5kaXNwbGF5TW9kZSAmJiBwYXJzZXIuc2V0dGluZ3MudXNlU3RyaWN0QmVoYXZpb3IoXCJuZXdMaW5lSW5EaXNwbGF5TW9kZVwiLCBcIkluIExhVGVYLCBcXFxcXFxcXCBvciBcXFxcbmV3bGluZSBcIiArIFwiZG9lcyBub3RoaW5nIGluIGRpc3BsYXkgbW9kZVwiKSkge1xuICAgICAgICBuZXdMaW5lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdMaW5lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBuZXdMaW5lOiBuZXdMaW5lLFxuICAgICAgbmV3Um93OiBuZXdSb3csXG4gICAgICBzaXplOiBzaXplICYmIGFzc2VydE5vZGVUeXBlKHNpemUsIFwic2l6ZVwiKS52YWx1ZVxuICAgIH07XG4gIH0sXG4gIC8vIFRoZSBmb2xsb3dpbmcgYnVpbGRlcnMgYXJlIGNhbGxlZCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwsXG4gIC8vIG5vdCB3aXRoaW4gdGFidWxhci9hcnJheSBlbnZpcm9ubWVudHMuXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChncm91cC5uZXdSb3cpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjciB2YWxpZCBvbmx5IHdpdGhpbiBhIHRhYnVsYXIvYXJyYXkgZW52aXJvbm1lbnRcIik7XG4gICAgfVxuXG4gICAgdmFyIHNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3BhY2VcIl0sIFtdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5uZXdMaW5lKSB7XG4gICAgICBzcGFuLmNsYXNzZXMucHVzaChcIm5ld2xpbmVcIik7XG5cbiAgICAgIGlmIChncm91cC5zaXplKSB7XG4gICAgICAgIHNwYW4uc3R5bGUubWFyZ2luVG9wID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaXplLCBvcHRpb25zKSArIFwiZW1cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3BhbjtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3BhY2VcIik7XG5cbiAgICBpZiAoZ3JvdXAubmV3TGluZSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5lYnJlYWtcIiwgXCJuZXdsaW5lXCIpO1xuXG4gICAgICBpZiAoZ3JvdXAuc2l6ZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnNpemUsIG9wdGlvbnMpICsgXCJlbVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9kZWxpbWl0ZXIuanNcbi8qKlxuICogVGhpcyBmaWxlIGRlYWxzIHdpdGggY3JlYXRpbmcgZGVsaW1pdGVycyBvZiB2YXJpb3VzIHNpemVzLiBUaGUgVGVYYm9va1xuICogZGlzY3Vzc2VzIHRoZXNlIHJvdXRpbmVzIG9uIHBhZ2UgNDQxLTQ0MiwgaW4gdGhlIFwiQW5vdGhlciBzdWJyb3V0aW5lIHNldHMgYm94XG4gKiB4IHRvIGEgc3BlY2lmaWVkIHZhcmlhYmxlIGRlbGltaXRlclwiIHBhcmFncmFwaC5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgbWFpbiByb3V0aW5lcyBoZXJlLiBgbWFrZVNtYWxsRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRoZVxuICogbm9ybWFsIGZvbnQsIGJ1dCBpbiBlaXRoZXIgdGV4dCwgc2NyaXB0LCBvciBzY3JpcHRzY3JpcHQgc3R5bGUuXG4gKiBgbWFrZUxhcmdlRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluIHRleHRzdHlsZSwgYnV0IGluIG9uZSBvZiB0aGUgU2l6ZTEsXG4gKiBTaXplMiwgU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBgbWFrZVN0YWNrZWREZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgb3V0IG9mXG4gKiBzbWFsbGVyIHBpZWNlcyB0aGF0IGFyZSBzdGFja2VkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIHRha2UgYSBwYXJhbWV0ZXIgYGNlbnRlcmAsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIGRlbGltaXRlclxuICogc2hvdWxkIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgYXhpcy5cbiAqXG4gKiBUaGVuLCB0aGVyZSBhcmUgdGhyZWUgZXhwb3NlZCBmdW5jdGlvbnMuIGBzaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciBpblxuICogb25lIG9mIHRoZSBnaXZlbiBzaXplcy4gVGhpcyBpcyB1c2VkIGZvciB0aGluZ3MgbGlrZSBgXFxiaWdsYC5cbiAqIGBjdXN0b21TaXplZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciB3aXRoIGEgZ2l2ZW4gdG90YWwgaGVpZ2h0K2RlcHRoLiBJdCBpc1xuICogY2FsbGVkIGluIHBsYWNlcyBsaWtlIGBcXHNxcnRgLiBgbGVmdFJpZ2h0RGVsaW1gIG1ha2VzIGFuIGFwcHJvcHJpYXRlXG4gKiBkZWxpbWl0ZXIgd2hpY2ggc3Vycm91bmRzIGFuIGV4cHJlc3Npb24gb2YgYSBnaXZlbiBoZWlnaHQgYW4gZGVwdGguIEl0IGlzXG4gKiB1c2VkIGluIGBcXGxlZnRgIGFuZCBgXFxyaWdodGAuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogR2V0IHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIHN5bWJvbCBhbmQgZm9udCwgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGkuZS5cbiAqIGFmdGVyIGZvbGxvd2luZyByZXBsYWNlbWVudCBmcm9tIHN5bWJvbHMuanMpXG4gKi9cbnZhciBkZWxpbWl0ZXJfZ2V0TWV0cmljcyA9IGZ1bmN0aW9uIGdldE1ldHJpY3Moc3ltYm9sLCBmb250LCBtb2RlKSB7XG4gIHZhciByZXBsYWNlID0gc3JjX3N5bWJvbHMubWF0aFtzeW1ib2xdICYmIHNyY19zeW1ib2xzLm1hdGhbc3ltYm9sXS5yZXBsYWNlO1xuICB2YXIgbWV0cmljcyA9IGdldENoYXJhY3Rlck1ldHJpY3MocmVwbGFjZSB8fCBzeW1ib2wsIGZvbnQsIG1vZGUpO1xuXG4gIGlmICghbWV0cmljcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHN5bWJvbCBcIiArIHN5bWJvbCArIFwiIGFuZCBmb250IHNpemUgXCIgKyBmb250ICsgXCIuXCIpO1xuICB9XG5cbiAgcmV0dXJuIG1ldHJpY3M7XG59O1xuLyoqXG4gKiBQdXRzIGEgZGVsaW1pdGVyIHNwYW4gaW4gYSBnaXZlbiBzdHlsZSwgYW5kIGFkZHMgYXBwcm9wcmlhdGUgaGVpZ2h0LCBkZXB0aCxcbiAqIGFuZCBtYXhGb250U2l6ZXMuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX3N0eWxlV3JhcCA9IGZ1bmN0aW9uIHN0eWxlV3JhcChkZWxpbSwgdG9TdHlsZSwgb3B0aW9ucywgY2xhc3Nlcykge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHRvU3R5bGUpO1xuICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKGNsYXNzZXMuY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtkZWxpbV0sIG9wdGlvbnMpO1xuICB2YXIgZGVsaW1TaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmhlaWdodCAqPSBkZWxpbVNpemVNdWx0aXBsaWVyO1xuICBzcGFuLmRlcHRoICo9IGRlbGltU2l6ZU11bHRpcGxpZXI7XG4gIHNwYW4ubWF4Rm9udFNpemUgPSBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICByZXR1cm4gc3Bhbjtcbn07XG5cbnZhciBjZW50ZXJTcGFuID0gZnVuY3Rpb24gY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzdHlsZSkge1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHN0eWxlKTtcbiAgdmFyIHNoaWZ0ID0gKDEgLSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcikgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcbiAgc3Bhbi5jbGFzc2VzLnB1c2goXCJkZWxpbWNlbnRlclwiKTtcbiAgc3Bhbi5zdHlsZS50b3AgPSBzaGlmdCArIFwiZW1cIjtcbiAgc3Bhbi5oZWlnaHQgLT0gc2hpZnQ7XG4gIHNwYW4uZGVwdGggKz0gc2hpZnQ7XG59O1xuLyoqXG4gKiBNYWtlcyBhIHNtYWxsIGRlbGltaXRlci4gVGhpcyBpcyBhIGRlbGltaXRlciB0aGF0IGNvbWVzIGluIHRoZSBNYWluLVJlZ3VsYXJcbiAqIGZvbnQsIGJ1dCBpcyByZXN0eWxlZCB0byBlaXRoZXIgYmUgaW4gdGV4dHN0eWxlLCBzY3JpcHRzdHlsZSwgb3JcbiAqIHNjcmlwdHNjcmlwdHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSA9IGZ1bmN0aW9uIG1ha2VTbWFsbERlbGltKGRlbGltLCBzdHlsZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIHZhciB0ZXh0ID0gYnVpbGRDb21tb24ubWFrZVN5bWJvbChkZWxpbSwgXCJNYWluLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucyk7XG4gIHZhciBzcGFuID0gZGVsaW1pdGVyX3N0eWxlV3JhcCh0ZXh0LCBzdHlsZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGNlbnRlclNwYW4oc3Bhbiwgb3B0aW9ucywgc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHNwYW47XG59O1xuLyoqXG4gKiBCdWlsZHMgYSBzeW1ib2wgaW4gdGhlIGdpdmVuIGZvbnQgc2l6ZSAobm90ZSBzaXplIGlzIGFuIGludGVnZXIpXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21hdGhybVNpemUgPSBmdW5jdGlvbiBtYXRocm1TaXplKHZhbHVlLCBzaXplLCBtb2RlLCBvcHRpb25zKSB7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ltYm9sKHZhbHVlLCBcIlNpemVcIiArIHNpemUgKyBcIi1SZWd1bGFyXCIsIG1vZGUsIG9wdGlvbnMpO1xufTtcbi8qKlxuICogTWFrZXMgYSBsYXJnZSBkZWxpbWl0ZXIuIFRoaXMgaXMgYSBkZWxpbWl0ZXIgdGhhdCBjb21lcyBpbiB0aGUgU2l6ZTEsIFNpemUyLFxuICogU2l6ZTMsIG9yIFNpemU0IGZvbnRzLiBJdCBpcyBhbHdheXMgcmVuZGVyZWQgaW4gdGV4dHN0eWxlLlxuICovXG5cblxudmFyIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbSA9IGZ1bmN0aW9uIG1ha2VMYXJnZURlbGltKGRlbGltLCBzaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgdmFyIGlubmVyID0gZGVsaW1pdGVyX21hdGhybVNpemUoZGVsaW0sIHNpemUsIG1vZGUsIG9wdGlvbnMpO1xuICB2YXIgc3BhbiA9IGRlbGltaXRlcl9zdHlsZVdyYXAoYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZGVsaW1zaXppbmdcIiwgXCJzaXplXCIgKyBzaXplXSwgW2lubmVyXSwgb3B0aW9ucyksIHNyY19TdHlsZS5URVhULCBvcHRpb25zLCBjbGFzc2VzKTtcblxuICBpZiAoY2VudGVyKSB7XG4gICAgY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzcmNfU3R5bGUuVEVYVCk7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG4vKipcbiAqIE1ha2UgYW4gaW5uZXIgc3BhbiB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgYW5kIGluIHRoZSBnaXZlbiBmb250LiBUaGlzIGlzIHVzZWRcbiAqIGluIGBtYWtlU3RhY2tlZERlbGltYCB0byBtYWtlIHRoZSBzdGFja2luZyBwaWVjZXMgZm9yIHRoZSBkZWxpbWl0ZXIuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VJbm5lciA9IGZ1bmN0aW9uIG1ha2VJbm5lcihzeW1ib2wsIGZvbnQsIG1vZGUpIHtcbiAgdmFyIHNpemVDbGFzczsgLy8gQXBwbHkgdGhlIGNvcnJlY3QgQ1NTIGNsYXNzIHRvIGNob29zZSB0aGUgcmlnaHQgZm9udC5cblxuICBpZiAoZm9udCA9PT0gXCJTaXplMS1SZWd1bGFyXCIpIHtcbiAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemUxXCI7XG4gIH0gZWxzZVxuICAgIC8qIGlmIChmb250ID09PSBcIlNpemU0LVJlZ3VsYXJcIikgKi9cbiAgICB7XG4gICAgICBzaXplQ2xhc3MgPSBcImRlbGltLXNpemU0XCI7XG4gICAgfVxuXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImRlbGltc2l6aW5naW5uZXJcIiwgc2l6ZUNsYXNzXSwgW2J1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRDb21tb24ubWFrZVN5bWJvbChzeW1ib2wsIGZvbnQsIG1vZGUpXSldKTsgLy8gU2luY2UgdGhpcyB3aWxsIGJlIHBhc3NlZCBpbnRvIGBtYWtlVkxpc3RgIGluIHRoZSBlbmQsIHdyYXAgdGhlIGVsZW1lbnRcbiAgLy8gaW4gdGhlIGFwcHJvcHJpYXRlIHRhZyB0aGF0IFZMaXN0IHVzZXMuXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImVsZW1cIixcbiAgICBlbGVtOiBpbm5lclxuICB9O1xufTsgLy8gSGVscGVyIGZvciBtYWtlU3RhY2tlZERlbGltXG5cblxudmFyIGxhcCA9IHtcbiAgdHlwZTogXCJrZXJuXCIsXG4gIHNpemU6IC0wLjAwNVxufTtcbi8qKlxuICogTWFrZSBhIHN0YWNrZWQgZGVsaW1pdGVyIG91dCBvZiBhIGdpdmVuIGRlbGltaXRlciwgd2l0aCB0aGUgdG90YWwgaGVpZ2h0IGF0XG4gKiBsZWFzdCBgaGVpZ2h0VG90YWxgLiBUaGlzIHJvdXRpbmUgaXMgbWVudGlvbmVkIG9uIHBhZ2UgNDQyIG9mIHRoZSBUZVhib29rLlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSA9IGZ1bmN0aW9uIG1ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodFRvdGFsLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gVGhlcmUgYXJlIGZvdXIgcGFydHMsIHRoZSB0b3AsIGFuIG9wdGlvbmFsIG1pZGRsZSwgYSByZXBlYXRlZCBwYXJ0LCBhbmQgYVxuICAvLyBib3R0b20uXG4gIHZhciB0b3A7XG4gIHZhciBtaWRkbGU7XG4gIHZhciByZXBlYXQ7XG4gIHZhciBib3R0b207XG4gIHRvcCA9IHJlcGVhdCA9IGJvdHRvbSA9IGRlbGltO1xuICBtaWRkbGUgPSBudWxsOyAvLyBBbHNvIGtlZXAgdHJhY2sgb2Ygd2hhdCBmb250IHRoZSBkZWxpbWl0ZXJzIGFyZSBpblxuXG4gIHZhciBmb250ID0gXCJTaXplMS1SZWd1bGFyXCI7IC8vIFdlIHNldCB0aGUgcGFydHMgYW5kIGZvbnQgYmFzZWQgb24gdGhlIHN5bWJvbC4gTm90ZSB0aGF0IHdlIHVzZVxuICAvLyAnXFx1MjNkMCcgaW5zdGVhZCBvZiAnfCcgYW5kICdcXHUyMDE2JyBpbnN0ZWFkIG9mICdcXFxcfCcgZm9yIHRoZVxuICAvLyByZXBlYXRzIG9mIHRoZSBhcnJvd3NcblxuICBpZiAoZGVsaW0gPT09IFwiXFxcXHVwYXJyb3dcIikge1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNEMFwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGFycm93XCIpIHtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcZG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcRG93bmFycm93XCIpIHtcbiAgICB0b3AgPSByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcdXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXHVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzRDBcIjtcbiAgICBib3R0b20gPSBcIlxcXFxkb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcVXBkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IFwiXFxcXFVwYXJyb3dcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIwMTZcIjtcbiAgICBib3R0b20gPSBcIlxcXFxEb3duYXJyb3dcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJbXCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFja1wiKSB7XG4gICAgdG9wID0gXCJcXHUyM0ExXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0EyXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EzXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIl1cIiB8fCBkZWxpbSA9PT0gXCJcXFxccmJyYWNrXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQTVcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTZcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXGxmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEFcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBMlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBM1wiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbGNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA4XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTFcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTJcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJmbG9vclwiIHx8IGRlbGltID09PSBcIlxcdTIzMEJcIikge1xuICAgIHJlcGVhdCA9IHRvcCA9IFwiXFx1MjNBNVwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBNlwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccmNlaWxcIiB8fCBkZWxpbSA9PT0gXCJcXHUyMzA5XCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTRcIjtcbiAgICByZXBlYXQgPSBib3R0b20gPSBcIlxcdTIzQTVcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiKFwiIHx8IGRlbGltID09PSBcIlxcXFxscGFyZW5cIikge1xuICAgIHRvcCA9IFwiXFx1MjM5QlwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjM5Q1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjM5RFwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCIpXCIgfHwgZGVsaW0gPT09IFwiXFxcXHJwYXJlblwiKSB7XG4gICAgdG9wID0gXCJcXHUyMzlFXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyMzlGXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EwXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx7XCIgfHwgZGVsaW0gPT09IFwiXFxcXGxicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0E3XCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0E4XCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0E5XCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx9XCIgfHwgZGVsaW0gPT09IFwiXFxcXHJicmFjZVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgbWlkZGxlID0gXCJcXHUyM0FDXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsZ3JvdXBcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0VFXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTdcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTlcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHJncm91cFwiIHx8IGRlbGltID09PSBcIlxcdTI3RUZcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbG1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjBcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBRFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccm1vdXN0YWNoZVwiIHx8IGRlbGltID09PSBcIlxcdTIzQjFcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBQlwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBOVwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSAvLyBHZXQgdGhlIG1ldHJpY3Mgb2YgdGhlIGZvdXIgc2VjdGlvbnNcblxuXG4gIHZhciB0b3BNZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3ModG9wLCBmb250LCBtb2RlKTtcbiAgdmFyIHRvcEhlaWdodFRvdGFsID0gdG9wTWV0cmljcy5oZWlnaHQgKyB0b3BNZXRyaWNzLmRlcHRoO1xuICB2YXIgcmVwZWF0TWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKHJlcGVhdCwgZm9udCwgbW9kZSk7XG4gIHZhciByZXBlYXRIZWlnaHRUb3RhbCA9IHJlcGVhdE1ldHJpY3MuaGVpZ2h0ICsgcmVwZWF0TWV0cmljcy5kZXB0aDtcbiAgdmFyIGJvdHRvbU1ldHJpY3MgPSBkZWxpbWl0ZXJfZ2V0TWV0cmljcyhib3R0b20sIGZvbnQsIG1vZGUpO1xuICB2YXIgYm90dG9tSGVpZ2h0VG90YWwgPSBib3R0b21NZXRyaWNzLmhlaWdodCArIGJvdHRvbU1ldHJpY3MuZGVwdGg7XG4gIHZhciBtaWRkbGVIZWlnaHRUb3RhbCA9IDA7XG4gIHZhciBtaWRkbGVGYWN0b3IgPSAxO1xuXG4gIGlmIChtaWRkbGUgIT09IG51bGwpIHtcbiAgICB2YXIgbWlkZGxlTWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKG1pZGRsZSwgZm9udCwgbW9kZSk7XG4gICAgbWlkZGxlSGVpZ2h0VG90YWwgPSBtaWRkbGVNZXRyaWNzLmhlaWdodCArIG1pZGRsZU1ldHJpY3MuZGVwdGg7XG4gICAgbWlkZGxlRmFjdG9yID0gMjsgLy8gcmVwZWF0IHN5bW1ldHJpY2FsbHkgYWJvdmUgYW5kIGJlbG93IG1pZGRsZVxuICB9IC8vIENhbGN1YXRlIHRoZSBtaW5pbWFsIGhlaWdodCB0aGF0IHRoZSBkZWxpbWl0ZXIgY2FuIGhhdmUuXG4gIC8vIEl0IGlzIGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB0b3AsIGJvdHRvbSwgYW5kIG9wdGlvbmFsIG1pZGRsZSBjb21iaW5lZC5cblxuXG4gIHZhciBtaW5IZWlnaHQgPSB0b3BIZWlnaHRUb3RhbCArIGJvdHRvbUhlaWdodFRvdGFsICsgbWlkZGxlSGVpZ2h0VG90YWw7IC8vIENvbXB1dGUgdGhlIG51bWJlciBvZiBjb3BpZXMgb2YgdGhlIHJlcGVhdCBzeW1ib2wgd2Ugd2lsbCBuZWVkXG5cbiAgdmFyIHJlcGVhdENvdW50ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKChoZWlnaHRUb3RhbCAtIG1pbkhlaWdodCkgLyAobWlkZGxlRmFjdG9yICogcmVwZWF0SGVpZ2h0VG90YWwpKSk7IC8vIENvbXB1dGUgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgZGVsaW1pdGVyIGluY2x1ZGluZyBhbGwgdGhlIHN5bWJvbHNcblxuICB2YXIgcmVhbEhlaWdodFRvdGFsID0gbWluSGVpZ2h0ICsgcmVwZWF0Q291bnQgKiBtaWRkbGVGYWN0b3IgKiByZXBlYXRIZWlnaHRUb3RhbDsgLy8gVGhlIGNlbnRlciBvZiB0aGUgZGVsaW1pdGVyIGlzIHBsYWNlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBheGlzLiBOb3RlXG4gIC8vIHRoYXQgaW4gdGhpcyBjb250ZXh0LCBcImNlbnRlclwiIG1lYW5zIHRoYXQgdGhlIGRlbGltaXRlciBzaG91bGQgYmVcbiAgLy8gY2VudGVyZWQgYXJvdW5kIHRoZSBheGlzIGluIHRoZSBjdXJyZW50IHN0eWxlLCB3aGlsZSBub3JtYWxseSBpdCBpc1xuICAvLyBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMgaW4gdGV4dHN0eWxlLlxuXG4gIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgaWYgKGNlbnRlcikge1xuICAgIGF4aXNIZWlnaHQgKj0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgfSAvLyBDYWxjdWxhdGUgdGhlIGRlcHRoXG5cblxuICB2YXIgZGVwdGggPSByZWFsSGVpZ2h0VG90YWwgLyAyIC0gYXhpc0hlaWdodDsgLy8gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gdGhlIFRlWCBwcm9jZWR1cmUgaW4gb25lIHdheS5cbiAgLy8gV2Ugc2hpZnQgZWFjaCByZXBlYXQgZWxlbWVudCBkb3dud2FyZHMgYnkgMC4wMDVlbSwgdG8gcHJldmVudCBhIGdhcFxuICAvLyBkdWUgdG8gYnJvd3NlciBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvci5cbiAgLy8gVGhlbiwgYXQgdGhlIGxhc3QgZWxlbWVudC10byBlbGVtZW50IGpvaW50LCB3ZSBhZGQgb25lIGV4dHJhIHJlcGVhdFxuICAvLyBlbGVtZW50IHRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlZCBieSB0aGUgc2hpZnRzLlxuICAvLyBGaW5kIHRoZSBzaGlmdCBuZWVkZWQgdG8gYWxpZ24gdGhlIHVwcGVyIGVuZCBvZiB0aGUgZXh0cmEgZWxlbWVudCBhdCBhIHBvaW50XG4gIC8vIDAuMDA1ZW0gYWJvdmUgdGhlIGxvd2VyIGVuZCBvZiB0aGUgdG9wIGVsZW1lbnQuXG5cbiAgdmFyIHNoaWZ0T2ZFeHRyYUVsZW1lbnQgPSAocmVwZWF0Q291bnQgKyAxKSAqIDAuMDA1IC0gcmVwZWF0SGVpZ2h0VG90YWw7IC8vIE5vdywgd2Ugc3RhcnQgYnVpbGRpbmcgdGhlIHBpZWNlcyB0aGF0IHdpbGwgZ28gaW50byB0aGUgdmxpc3RcbiAgLy8gS2VlcCBhIGxpc3Qgb2YgdGhlIGlubmVyIHBpZWNlc1xuXG4gIHZhciBpbm5lcnMgPSBbXTsgLy8gQWRkIHRoZSBib3R0b20gc3ltYm9sXG5cbiAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihib3R0b20sIGZvbnQsIG1vZGUpKTtcblxuICBpZiAobWlkZGxlID09PSBudWxsKSB7XG4gICAgLy8gQWRkIHRoYXQgbWFueSBzeW1ib2xzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXBlYXRDb3VudDsgaSsrKSB7XG4gICAgICBpbm5lcnMucHVzaChsYXApOyAvLyBvdmVybGFwXG5cbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBtaWRkbGUgYml0LCB3ZSBuZWVkIHRoZSBtaWRkbGUgcGFydCBhbmQgdHdvIHJlcGVhdGVkXG4gICAgLy8gc2VjdGlvbnNcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcmVwZWF0Q291bnQ7IF9pKyspIHtcbiAgICAgIGlubmVycy5wdXNoKGxhcCk7XG4gICAgICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICAgIH0gLy8gSW5zZXJ0IG9uZSBleHRyYSByZXBlYXQgZWxlbWVudC5cblxuXG4gICAgaW5uZXJzLnB1c2goe1xuICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gICAgfSk7XG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICBpbm5lcnMucHVzaChsYXApOyAvLyBOb3cgaW5zZXJ0IHRoZSBtaWRkbGUgb2YgdGhlIGJyYWNlLlxuXG4gICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihtaWRkbGUsIGZvbnQsIG1vZGUpKTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHJlcGVhdENvdW50OyBfaTIrKykge1xuICAgICAgaW5uZXJzLnB1c2gobGFwKTtcbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfVxuICB9IC8vIFRvIGNvdmVyIHRoZSBnYXAgY3JlYXRlIGJ5IHRoZSBvdmVybGFwcywgaW5zZXJ0IG9uZSBtb3JlIHJlcGVhdCBlbGVtZW50LFxuICAvLyBhdCBhIHBvc2l0aW9uIHRoYXQganV0cyAwLjAwNSBhYm92ZSB0aGUgYm90dG9tIG9mIHRoZSB0b3AgZWxlbWVudC5cblxuXG4gIGlubmVycy5wdXNoKHtcbiAgICB0eXBlOiBcImtlcm5cIixcbiAgICBzaXplOiBzaGlmdE9mRXh0cmFFbGVtZW50XG4gIH0pO1xuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICBpbm5lcnMucHVzaChsYXApOyAvLyBBZGQgdGhlIHRvcCBzeW1ib2xcblxuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHRvcCwgZm9udCwgbW9kZSkpOyAvLyBGaW5hbGx5LCBidWlsZCB0aGUgdmxpc3RcblxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nQmFzZVN0eWxlKHNyY19TdHlsZS5URVhUKTtcbiAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgcG9zaXRpb25EYXRhOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogaW5uZXJzXG4gIH0sIG5ld09wdGlvbnMpO1xuICByZXR1cm4gZGVsaW1pdGVyX3N0eWxlV3JhcChidWlsZENvbW1vbi5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcIm11bHRcIl0sIFtpbm5lcl0sIG5ld09wdGlvbnMpLCBzcmNfU3R5bGUuVEVYVCwgb3B0aW9ucywgY2xhc3Nlcyk7XG59OyAvLyBBbGwgc3VyZHMgaGF2ZSAwLjA4ZW0gcGFkZGluZyBhYm92ZSB0aGUgdmluaWN1bHVtIGluc2lkZSB0aGUgU1ZHLlxuLy8gVGhhdCBrZWVwcyBicm93c2VyIHNwYW4gaGVpZ2h0IHJvdW5kaW5nIGVycm9yIGZyb20gcGluY2hpbmcgdGhlIGxpbmUuXG5cblxudmFyIHZiUGFkID0gODA7IC8vIHBhZGRpbmcgYWJvdmUgdGhlIHN1cmQsIG1lYXN1cmVkIGluc2lkZSB0aGUgdmlld0JveC5cblxudmFyIGVtUGFkID0gMC4wODsgLy8gcGFkZGluZywgaW4gZW1zLCBtZWFzdXJlZCBpbiB0aGUgZG9jdW1lbnQuXG5cbnZhciBkZWxpbWl0ZXJfc3FydFN2ZyA9IGZ1bmN0aW9uIHNxcnRTdmcoc3FydE5hbWUsIGhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpIHtcbiAgdmFyIHBhdGggPSBzcXJ0UGF0aChzcXJ0TmFtZSwgZXh0cmFWaW5pY3VsdW0sIHZpZXdCb3hIZWlnaHQpO1xuICB2YXIgcGF0aE5vZGUgPSBuZXcgZG9tVHJlZV9QYXRoTm9kZShzcXJ0TmFtZSwgcGF0aCk7XG4gIHZhciBzdmcgPSBuZXcgU3ZnTm9kZShbcGF0aE5vZGVdLCB7XG4gICAgLy8gTm90ZTogMTAwMDoxIHJhdGlvIG9mIHZpZXdCb3ggdG8gZG9jdW1lbnQgZW0gd2lkdGguXG4gICAgXCJ3aWR0aFwiOiBcIjQwMGVtXCIsXG4gICAgXCJoZWlnaHRcIjogaGVpZ2h0ICsgXCJlbVwiLFxuICAgIFwidmlld0JveFwiOiBcIjAgMCA0MDAwMDAgXCIgKyB2aWV3Qm94SGVpZ2h0LFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluIHNsaWNlXCJcbiAgfSk7XG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3ZnU3BhbihbXCJoaWRlLXRhaWxcIl0sIFtzdmddLCBvcHRpb25zKTtcbn07XG4vKipcbiAqIE1ha2UgYSBzcXJ0IGltYWdlIG9mIHRoZSBnaXZlbiBoZWlnaHQsXG4gKi9cblxuXG52YXIgbWFrZVNxcnRJbWFnZSA9IGZ1bmN0aW9uIG1ha2VTcXJ0SW1hZ2UoaGVpZ2h0LCBvcHRpb25zKSB7XG4gIC8vIERlZmluZSBhIG5ld09wdGlvbnMgdGhhdCByZW1vdmVzIHRoZSBlZmZlY3Qgb2Ygc2l6ZSBjaGFuZ2VzIHN1Y2ggYXMgXFxIdWdlLlxuICAvLyBXZSBkb24ndCBwaWNrIGRpZmZlcmVudCBhIGhlaWdodCBzdXJkIGZvciBcXEh1Z2UuIEZvciBpdCwgd2Ugc2NhbGUgdXAuXG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU2l6aW5nKCk7IC8vIFBpY2sgdGhlIGRlc2lyZWQgc3VyZCBnbHlwaCBmcm9tIGEgc2VxdWVuY2Ugb2Ygc3VyZHMuXG5cbiAgdmFyIGRlbGltID0gdHJhdmVyc2VTZXF1ZW5jZShcIlxcXFxzdXJkXCIsIGhlaWdodCAqIG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIsIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSwgbmV3T3B0aW9ucyk7XG4gIHZhciBzaXplTXVsdGlwbGllciA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIGRlZmF1bHRcbiAgLy8gVGhlIHN0YW5kYXJkIHNxcnQgU1ZHcyBlYWNoIGhhdmUgYSAwLjA0ZW0gdGhpY2sgdmluaWN1bHVtLlxuICAvLyBJZiBTZXR0aW5ncy5taW5SdWxlVGhpY2tuZXNzIGlzIGxhcmdlciB0aGFuIHRoYXQsIHdlIGFkZCBleHRyYVZpbmljdWx1bS5cblxuICB2YXIgZXh0cmFWaW5pY3VsdW0gPSBNYXRoLm1heCgwLCBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuc3FydFJ1bGVUaGlja25lc3MpOyAvLyBDcmVhdGUgYSBzcGFuIGNvbnRhaW5pbmcgYW4gU1ZHIGltYWdlIG9mIGEgc3FydCBzeW1ib2wuXG5cbiAgdmFyIHNwYW47XG4gIHZhciBzcGFuSGVpZ2h0ID0gMDtcbiAgdmFyIHRleEhlaWdodCA9IDA7XG4gIHZhciB2aWV3Qm94SGVpZ2h0ID0gMDtcbiAgdmFyIGFkdmFuY2VXaWR0aDsgLy8gV2UgY3JlYXRlIHZpZXdCb3hlcyB3aXRoIDgwIHVuaXRzIG9mIFwicGFkZGluZ1wiIGFib3ZlIGVhY2ggc3VyZC5cbiAgLy8gVGhlbiBicm93c2VyIHJvdW5kaW5nIGVycm9yIG9uIHRoZSBwYXJlbnQgc3BhbiBoZWlnaHQgd2lsbCBub3RcbiAgLy8gZW5jcm9hY2ggb24gdGhlIGluayBvZiB0aGUgdmluaWN1bHVtLiBCdXQgdGhhdCBwYWRkaW5nIGlzIG5vdFxuICAvLyBpbmNsdWRlZCBpbiB0aGUgVGVYLWxpa2UgYGhlaWdodGAgdXNlZCBmb3IgY2FsY3VsYXRpb24gb2ZcbiAgLy8gdmVydGljYWwgYWxpZ25tZW50LiBTbyB0ZXhIZWlnaHQgPSBzcGFuLmhlaWdodCA8IHNwYW4uc3R5bGUuaGVpZ2h0LlxuXG4gIGlmIChkZWxpbS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBHZXQgYW4gU1ZHIHRoYXQgaXMgZGVyaXZlZCBmcm9tIGdseXBoIFUrMjIxQSBpbiBmb250IEthVGVYLU1haW4uXG4gICAgLy8gMTAwMCB1bml0IG5vcm1hbCBnbHlwaCBoZWlnaHQuXG4gICAgdmlld0JveEhlaWdodCA9IDEwMDAgKyAxMDAwICogZXh0cmFWaW5pY3VsdW0gKyB2YlBhZDtcblxuICAgIGlmIChoZWlnaHQgPCAxLjApIHtcbiAgICAgIHNpemVNdWx0aXBsaWVyID0gMS4wOyAvLyBtaW1pYyBhIFxcdGV4dGZvbnQgcmFkaWNhbFxuICAgIH0gZWxzZSBpZiAoaGVpZ2h0IDwgMS40KSB7XG4gICAgICBzaXplTXVsdGlwbGllciA9IDAuNzsgLy8gbWltaWMgYSBcXHNjcmlwdGZvbnQgcmFkaWNhbFxuICAgIH1cblxuICAgIHNwYW5IZWlnaHQgPSAoMS4wICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZCkgLyBzaXplTXVsdGlwbGllcjtcbiAgICB0ZXhIZWlnaHQgPSAoMS4wMCArIGV4dHJhVmluaWN1bHVtKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRNYWluXCIsIHNwYW5IZWlnaHQsIHZpZXdCb3hIZWlnaHQsIGV4dHJhVmluaWN1bHVtLCBvcHRpb25zKTtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gXCIwLjg1M2VtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMC44MzMgLyBzaXplTXVsdGlwbGllcjsgLy8gZnJvbSB0aGUgZm9udC5cbiAgfSBlbHNlIGlmIChkZWxpbS50eXBlID09PSBcImxhcmdlXCIpIHtcbiAgICAvLyBUaGVzZSBTVkdzIGNvbWUgZnJvbSBmb250czogS2FUZVhfU2l6ZTEsIF9TaXplMiwgZXRjLlxuICAgIHZpZXdCb3hIZWlnaHQgPSAoMTAwMCArIHZiUGFkKSAqIHNpemVUb01heEhlaWdodFtkZWxpbS5zaXplXTtcbiAgICB0ZXhIZWlnaHQgPSAoc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdICsgZXh0cmFWaW5pY3VsdW0pIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgc3BhbkhlaWdodCA9IChzaXplVG9NYXhIZWlnaHRbZGVsaW0uc2l6ZV0gKyBleHRyYVZpbmljdWx1bSArIGVtUGFkKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHNwYW4gPSBkZWxpbWl0ZXJfc3FydFN2ZyhcInNxcnRTaXplXCIgKyBkZWxpbS5zaXplLCBzcGFuSGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBleHRyYVZpbmljdWx1bSwgb3B0aW9ucyk7XG4gICAgc3Bhbi5zdHlsZS5taW5XaWR0aCA9IFwiMS4wMmVtXCI7XG4gICAgYWR2YW5jZVdpZHRoID0gMS4wIC8gc2l6ZU11bHRpcGxpZXI7IC8vIDEuMCBmcm9tIHRoZSBmb250LlxuICB9IGVsc2Uge1xuICAgIC8vIFRhbGwgc3FydC4gSW4gVGVYLCB0aGlzIHdvdWxkIGJlIHN0YWNrZWQgdXNpbmcgbXVsdGlwbGUgZ2x5cGhzLlxuICAgIC8vIFdlJ2xsIHVzZSBhIHNpbmdsZSBTVkcgdG8gYWNjb21wbGlzaCB0aGUgc2FtZSB0aGluZy5cbiAgICBzcGFuSGVpZ2h0ID0gaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0gKyBlbVBhZDtcbiAgICB0ZXhIZWlnaHQgPSBoZWlnaHQgKyBleHRyYVZpbmljdWx1bTtcbiAgICB2aWV3Qm94SGVpZ2h0ID0gTWF0aC5mbG9vcigxMDAwICogaGVpZ2h0ICsgZXh0cmFWaW5pY3VsdW0pICsgdmJQYWQ7XG4gICAgc3BhbiA9IGRlbGltaXRlcl9zcXJ0U3ZnKFwic3FydFRhbGxcIiwgc3BhbkhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpO1xuICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBcIjAuNzQyZW1cIjtcbiAgICBhZHZhbmNlV2lkdGggPSAxLjA1NjtcbiAgfVxuXG4gIHNwYW4uaGVpZ2h0ID0gdGV4SGVpZ2h0O1xuICBzcGFuLnN0eWxlLmhlaWdodCA9IHNwYW5IZWlnaHQgKyBcImVtXCI7XG4gIHJldHVybiB7XG4gICAgc3Bhbjogc3BhbixcbiAgICBhZHZhbmNlV2lkdGg6IGFkdmFuY2VXaWR0aCxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFjdHVhbCBsaW5lIHdpZHRoLlxuICAgIC8vIFRoaXMgYWN0dWFsbHkgc2hvdWxkIGRlcGVuZCBvbiB0aGUgY2hvc2VuIGZvbnQgLS0gZS5nLiBcXGJvbGRtYXRoXG4gICAgLy8gc2hvdWxkIHVzZSB0aGUgdGhpY2tlciBzdXJkIHN5bWJvbHMgZnJvbSBlLmcuIEthVGVYX01haW4tQm9sZCwgYW5kXG4gICAgLy8gaGF2ZSB0aGlja2VyIHJ1bGVzLlxuICAgIHJ1bGVXaWR0aDogKG9wdGlvbnMuZm9udE1ldHJpY3MoKS5zcXJ0UnVsZVRoaWNrbmVzcyArIGV4dHJhVmluaWN1bHVtKSAqIHNpemVNdWx0aXBsaWVyXG4gIH07XG59OyAvLyBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZGVsaW1pdGVycywgZGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gdGhleSBiZWNvbWVcbi8vIHRvbyBsYXJnZVxuXG5cbnZhciBzdGFja0xhcmdlRGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiXFxcXHN1cmRcIl07IC8vIGRlbGltaXRlcnMgdGhhdCBhbHdheXMgc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVycyA9IFtcIlxcXFx1cGFycm93XCIsIFwiXFxcXGRvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcInxcIiwgXCJcXFxcfFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXFZlcnRcIiwgXCJcXFxcbHZlcnRcIiwgXCJcXFxccnZlcnRcIiwgXCJcXFxcbFZlcnRcIiwgXCJcXFxcclZlcnRcIiwgXCJcXFxcbGdyb3VwXCIsIFwiXFxcXHJncm91cFwiLCBcIlxcdTI3RUVcIiwgXCJcXHUyN0VGXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCBcIlxcdTIzQjBcIiwgXCJcXHUyM0IxXCJdOyAvLyBhbmQgZGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrXG5cbnZhciBzdGFja05ldmVyRGVsaW1pdGVycyA9IFtcIjxcIiwgXCI+XCIsIFwiXFxcXGxhbmdsZVwiLCBcIlxcXFxyYW5nbGVcIiwgXCIvXCIsIFwiXFxcXGJhY2tzbGFzaFwiLCBcIlxcXFxsdFwiLCBcIlxcXFxndFwiXTsgLy8gTWV0cmljcyBvZiB0aGUgZGlmZmVyZW50IHNpemVzLiBGb3VuZCBieSBsb29raW5nIGF0IFRlWCdzIG91dHB1dCBvZlxuLy8gJFxcYmlnbHwgLy8gXFxCaWdsfCBcXGJpZ2dsfCBcXEJpZ2dsfCBcXHNob3dsaXN0cyRcbi8vIFVzZWQgdG8gY3JlYXRlIHN0YWNrZWQgZGVsaW1pdGVycyBvZiBhcHByb3ByaWF0ZSBzaXplcyBpbiBtYWtlU2l6ZWREZWxpbS5cblxudmFyIHNpemVUb01heEhlaWdodCA9IFswLCAxLjIsIDEuOCwgMi40LCAzLjBdO1xuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIGRlbGltaXRlciBvZiBhIHNwZWNpZmljIHNpemUsIHdoZXJlIGBzaXplYCBpcyAxLCAyLCAzLCBvciA0LlxuICovXG5cbnZhciBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0gPSBmdW5jdGlvbiBtYWtlU2l6ZWREZWxpbShkZWxpbSwgc2l6ZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAvLyA8IGFuZCA+IHR1cm4gaW50byBcXGxhbmdsZSBhbmQgXFxyYW5nbGUgaW4gZGVsaW1pdGVyc1xuICBpZiAoZGVsaW0gPT09IFwiPFwiIHx8IGRlbGltID09PSBcIlxcXFxsdFwiIHx8IGRlbGltID09PSBcIlxcdTI3RThcIikge1xuICAgIGRlbGltID0gXCJcXFxcbGFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiPlwiIHx8IGRlbGltID09PSBcIlxcXFxndFwiIHx8IGRlbGltID09PSBcIlxcdTI3RTlcIikge1xuICAgIGRlbGltID0gXCJcXFxccmFuZ2xlXCI7XG4gIH0gLy8gU2l6ZWQgZGVsaW1pdGVycyBhcmUgbmV2ZXIgY2VudGVyZWQuXG5cblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tMYXJnZURlbGltaXRlcnMsIGRlbGltKSB8fCB1dGlscy5jb250YWlucyhzdGFja05ldmVyRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbShkZWxpbSwgc2l6ZSwgZmFsc2UsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrQWx3YXlzRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlU3RhY2tlZERlbGltKGRlbGltLCBzaXplVG9NYXhIZWlnaHRbc2l6ZV0sIGZhbHNlLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbGxlZ2FsIGRlbGltaXRlcjogJ1wiICsgZGVsaW0gKyBcIidcIik7XG4gIH1cbn07XG4vKipcbiAqIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgc2VxdWVuY2VzIG9mIGRlbGltaXRlciBzaXplcyB0aGF0IHRoZSBkZWxpbWl0ZXJzXG4gKiBmb2xsb3cgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGRlbGltaXRlci4gVGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgY3VzdG9tXG4gKiBzaXplZCBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNyZWF0ZSBhIHNtYWxsLCBsYXJnZSwgb3Igc3RhY2tlZFxuICogZGVsaW1pdGVyLlxuICpcbiAqIEluIHJlYWwgVGVYLCB0aGVzZSBzZXF1ZW5jZXMgYXJlbid0IGV4cGxpY2l0bHkgZGVmaW5lZCwgYnV0IGFyZSBpbnN0ZWFkXG4gKiBkZWZpbmVkIGluc2lkZSB0aGUgZm9udCBtZXRyaWNzLiBTaW5jZSB0aGVyZSBhcmUgb25seSB0aHJlZSBzZXF1ZW5jZXMgdGhhdFxuICogYXJlIHBvc3NpYmxlIGZvciB0aGUgZGVsaW1pdGVycyB0aGF0IFRlWCBkZWZpbmVzLCBpdCBpcyBlYXNpZXIgdG8ganVzdCBlbmNvZGVcbiAqIHRoZW0gZXhwbGljaXRseSBoZXJlLlxuICovXG5cblxuLy8gRGVsaW1pdGVycyB0aGF0IG5ldmVyIHN0YWNrIHRyeSBzbWFsbCBkZWxpbWl0ZXJzIGFuZCBsYXJnZSBkZWxpbWl0ZXJzIG9ubHlcbnZhciBzdGFja05ldmVyRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAxXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogMlxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDNcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiA0XG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFjayB0cnkgdGhlIHNtYWxsIGRlbGltaXRlcnMgZmlyc3QsIHRoZW4gc3RhY2tcblxudmFyIHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UgPSBbe1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlRFWFRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTsgLy8gRGVsaW1pdGVycyB0aGF0IHN0YWNrIHdoZW4gbGFyZ2UgdHJ5IHRoZSBzbWFsbCBhbmQgdGhlbiBsYXJnZSBkZWxpbWl0ZXJzLCBhbmRcbi8vIHN0YWNrIGFmdGVyd2FyZHNcblxudmFyIHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSA9IFt7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuVEVYVFxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDFcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAyXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogM1xufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDRcbn0sIHtcbiAgdHlwZTogXCJzdGFja1wiXG59XTtcbi8qKlxuICogR2V0IHRoZSBmb250IHVzZWQgaW4gYSBkZWxpbWl0ZXIgYmFzZWQgb24gd2hhdCBraW5kIG9mIGRlbGltaXRlciBpdCBpcy5cbiAqIFRPRE8oIzk2MykgVXNlIG1vcmUgc3BlY2lmaWMgZm9udCBmYW1pbHkgcmV0dXJuIHR5cGUgb25jZSB0aGF0IGlzIGludHJvZHVjZWQuXG4gKi9cblxudmFyIGRlbGltVHlwZVRvRm9udCA9IGZ1bmN0aW9uIGRlbGltVHlwZVRvRm9udCh0eXBlKSB7XG4gIGlmICh0eXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHJldHVybiBcIk1haW4tUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZVwiICsgdHlwZS5zaXplICsgXCItUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKHR5cGUudHlwZSA9PT0gXCJzdGFja1wiKSB7XG4gICAgcmV0dXJuIFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFkZCBzdXBwb3J0IGZvciBkZWxpbSB0eXBlICdcIiArIHR5cGUudHlwZSArIFwiJyBoZXJlLlwiKTtcbiAgfVxufTtcbi8qKlxuICogVHJhdmVyc2UgYSBzZXF1ZW5jZSBvZiB0eXBlcyBvZiBkZWxpbWl0ZXJzIHRvIGRlY2lkZSB3aGF0IGtpbmQgb2YgZGVsaW1pdGVyXG4gKiBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBkZWxpbWl0ZXIgb2YgdGhlIGdpdmVuIGhlaWdodCtkZXB0aC5cbiAqL1xuXG5cbnZhciB0cmF2ZXJzZVNlcXVlbmNlID0gZnVuY3Rpb24gdHJhdmVyc2VTZXF1ZW5jZShkZWxpbSwgaGVpZ2h0LCBzZXF1ZW5jZSwgb3B0aW9ucykge1xuICAvLyBIZXJlLCB3ZSBjaG9vc2UgdGhlIGluZGV4IHdlIHNob3VsZCBzdGFydCBhdCBpbiB0aGUgc2VxdWVuY2VzLiBJbiBzbWFsbGVyXG4gIC8vIHNpemVzICh3aGljaCBjb3JyZXNwb25kIHRvIGxhcmdlciBudW1iZXJzIGluIHN0eWxlLnNpemUpIHdlIHN0YXJ0IGVhcmxpZXJcbiAgLy8gaW4gdGhlIHNlcXVlbmNlLiBUaHVzLCBzY3JpcHRzY3JpcHQgc3RhcnRzIGF0IGluZGV4IDMtMz0wLCBzY3JpcHQgc3RhcnRzXG4gIC8vIGF0IGluZGV4IDMtMj0xLCB0ZXh0IHN0YXJ0cyBhdCAzLTE9MiwgYW5kIGRpc3BsYXkgc3RhcnRzIGF0IG1pbigyLDMtMCk9MlxuICB2YXIgc3RhcnQgPSBNYXRoLm1pbigyLCAzIC0gb3B0aW9ucy5zdHlsZS5zaXplKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBzZXF1ZW5jZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInN0YWNrXCIpIHtcbiAgICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IGRlbGltaXRlciwgc28gd2UganVzdCBicmVhayB0aGUgbG9vcCBub3cuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgbWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKGRlbGltLCBkZWxpbVR5cGVUb0ZvbnQoc2VxdWVuY2VbaV0pLCBcIm1hdGhcIik7XG4gICAgdmFyIGhlaWdodERlcHRoID0gbWV0cmljcy5oZWlnaHQgKyBtZXRyaWNzLmRlcHRoOyAvLyBTbWFsbCBkZWxpbWl0ZXJzIGFyZSBzY2FsZWQgZG93biB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBmb250LCBzbyB3ZVxuICAgIC8vIGFjY291bnQgZm9yIHRoZSBzdHlsZSBjaGFuZ2Ugc2l6ZS5cblxuICAgIGlmIChzZXF1ZW5jZVtpXS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc2VxdWVuY2VbaV0uc3R5bGUpO1xuICAgICAgaGVpZ2h0RGVwdGggKj0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICB9IC8vIENoZWNrIGlmIHRoZSBkZWxpbWl0ZXIgYXQgdGhpcyBzaXplIHdvcmtzIGZvciB0aGUgZ2l2ZW4gaGVpZ2h0LlxuXG5cbiAgICBpZiAoaGVpZ2h0RGVwdGggPiBoZWlnaHQpIHtcbiAgICAgIHJldHVybiBzZXF1ZW5jZVtpXTtcbiAgICB9XG4gIH0gLy8gSWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgcmV0dXJuIHRoZSBsYXN0IHNlcXVlbmNlIGVsZW1lbnQuXG5cblxuICByZXR1cm4gc2VxdWVuY2Vbc2VxdWVuY2UubGVuZ3RoIC0gMV07XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIG9mIGEgZ2l2ZW4gaGVpZ2h0K2RlcHRoLCB3aXRoIG9wdGlvbmFsIGNlbnRlcmluZy4gSGVyZSwgd2VcbiAqIHRyYXZlcnNlIHRoZSBzZXF1ZW5jZXMsIGFuZCBjcmVhdGUgYSBkZWxpbWl0ZXIgdGhhdCB0aGUgc2VxdWVuY2UgdGVsbHMgdXMgdG8uXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltID0gZnVuY3Rpb24gbWFrZUN1c3RvbVNpemVkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIGlmIChkZWxpbSA9PT0gXCI8XCIgfHwgZGVsaW0gPT09IFwiXFxcXGx0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOFwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxsYW5nbGVcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCI+XCIgfHwgZGVsaW0gPT09IFwiXFxcXGd0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOVwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxyYW5nbGVcIjtcbiAgfSAvLyBEZWNpZGUgd2hhdCBzZXF1ZW5jZSB0byB1c2VcblxuXG4gIHZhciBzZXF1ZW5jZTtcblxuICBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tOZXZlckRlbGltaXRlcnMsIGRlbGltKSkge1xuICAgIHNlcXVlbmNlID0gc3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlO1xuICB9IGVsc2UgaWYgKHV0aWxzLmNvbnRhaW5zKHN0YWNrTGFyZ2VEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgfSBlbHNlIHtcbiAgICBzZXF1ZW5jZSA9IHN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2U7XG4gIH0gLy8gTG9vayB0aHJvdWdoIHRoZSBzZXF1ZW5jZVxuXG5cbiAgdmFyIGRlbGltVHlwZSA9IHRyYXZlcnNlU2VxdWVuY2UoZGVsaW0sIGhlaWdodCwgc2VxdWVuY2UsIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGRlbGltaXRlciBmcm9tIGZvbnQgZ2x5cGhzLlxuICAvLyBEZXBlbmRpbmcgb24gdGhlIHNlcXVlbmNlIGVsZW1lbnQgd2UgZGVjaWRlZCBvbiwgY2FsbCB0aGVcbiAgLy8gYXBwcm9wcmlhdGUgZnVuY3Rpb24uXG5cbiAgaWYgKGRlbGltVHlwZS50eXBlID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTbWFsbERlbGltKGRlbGltLCBkZWxpbVR5cGUuc3R5bGUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gIH0gZWxzZSBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwibGFyZ2VcIikge1xuICAgIHJldHVybiBkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0oZGVsaW0sIGRlbGltVHlwZS5zaXplLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2VcbiAgICAvKiBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwic3RhY2tcIikgKi9cbiAgICB7XG4gICAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTdGFja2VkRGVsaW0oZGVsaW0sIGhlaWdodCwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgICB9XG59O1xuLyoqXG4gKiBNYWtlIGEgZGVsaW1pdGVyIGZvciB1c2Ugd2l0aCBgXFxsZWZ0YCBhbmQgYFxccmlnaHRgLCBnaXZlbiBhIGhlaWdodCBhbmQgZGVwdGhcbiAqIG9mIGFuIGV4cHJlc3Npb24gdGhhdCB0aGUgZGVsaW1pdGVycyBzdXJyb3VuZC5cbiAqL1xuXG5cbnZhciBtYWtlTGVmdFJpZ2h0RGVsaW0gPSBmdW5jdGlvbiBtYWtlTGVmdFJpZ2h0RGVsaW0oZGVsaW0sIGhlaWdodCwgZGVwdGgsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgLy8gV2UgYWx3YXlzIGNlbnRlciBcXGxlZnQvXFxyaWdodCBkZWxpbWl0ZXJzLCBzbyB0aGUgYXhpcyBpcyBhbHdheXMgc2hpZnRlZFxuICB2YXIgYXhpc0hlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICogb3B0aW9ucy5zaXplTXVsdGlwbGllcjsgLy8gVGFrZW4gZnJvbSBUZVggc291cmNlLCB0ZXgud2ViLCBmdW5jdGlvbiBtYWtlX2xlZnRfcmlnaHRcblxuICB2YXIgZGVsaW1pdGVyRmFjdG9yID0gOTAxO1xuICB2YXIgZGVsaW1pdGVyRXh0ZW5kID0gNS4wIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBtYXhEaXN0RnJvbUF4aXMgPSBNYXRoLm1heChoZWlnaHQgLSBheGlzSGVpZ2h0LCBkZXB0aCArIGF4aXNIZWlnaHQpO1xuICB2YXIgdG90YWxIZWlnaHQgPSBNYXRoLm1heCggLy8gSW4gcmVhbCBUZVgsIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB1c2luZyBpbnRlZ3JhbCB2YWx1ZXMgd2hpY2ggYXJlXG4gIC8vIDY1NTM2IHBlciBwdCwgb3IgNjU1MzYwIHBlciBlbS4gU28sIHRoZSBkaXZpc2lvbiBoZXJlIHRydW5jYXRlcyBpblxuICAvLyBUZVggYnV0IGRvZXNuJ3QgaGVyZSwgcHJvZHVjaW5nIGRpZmZlcmVudCByZXN1bHRzLiBJZiB3ZSB3YW50ZWQgdG9cbiAgLy8gZXhhY3RseSBtYXRjaCBUZVgncyBjYWxjdWxhdGlvbiwgd2UgY291bGQgZG9cbiAgLy8gICBNYXRoLmZsb29yKDY1NTM2MCAqIG1heERpc3RGcm9tQXhpcyAvIDUwMCkgKlxuICAvLyAgICBkZWxpbWl0ZXJGYWN0b3IgLyA2NTUzNjBcbiAgLy8gKFRvIHNlZSB0aGUgZGlmZmVyZW5jZSwgY29tcGFyZVxuICAvLyAgICB4Xnt4XntcXGxlZnQoXFxydWxlezAuMWVtfXswLjY4ZW19XFxyaWdodCl9fVxuICAvLyBpbiBUZVggYW5kIEthVGVYKVxuICBtYXhEaXN0RnJvbUF4aXMgLyA1MDAgKiBkZWxpbWl0ZXJGYWN0b3IsIDIgKiBtYXhEaXN0RnJvbUF4aXMgLSBkZWxpbWl0ZXJFeHRlbmQpOyAvLyBGaW5hbGx5LCB3ZSBkZWZlciB0byBgbWFrZUN1c3RvbVNpemVkRGVsaW1gIHdpdGggb3VyIGNhbGN1bGF0ZWQgdG90YWxcbiAgLy8gaGVpZ2h0XG5cbiAgcmV0dXJuIGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbShkZWxpbSwgdG90YWxIZWlnaHQsIHRydWUsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGVsaW1pdGVyID0gKHtcbiAgc3FydEltYWdlOiBtYWtlU3FydEltYWdlLFxuICBzaXplZERlbGltOiBkZWxpbWl0ZXJfbWFrZVNpemVkRGVsaW0sXG4gIGN1c3RvbVNpemVkRGVsaW06IGRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSxcbiAgbGVmdFJpZ2h0RGVsaW06IG1ha2VMZWZ0UmlnaHREZWxpbVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZGVsaW1zaXppbmcuanNcblxuXG5cblxuXG5cblxuXG5cbi8vIEV4dHJhIGRhdGEgbmVlZGVkIGZvciB0aGUgZGVsaW1pdGVyIGhhbmRsZXIgZG93biBiZWxvd1xudmFyIGRlbGltaXRlclNpemVzID0ge1xuICBcIlxcXFxiaWdsXCI6IHtcbiAgICBtY2xhc3M6IFwibW9wZW5cIixcbiAgICBzaXplOiAxXG4gIH0sXG4gIFwiXFxcXEJpZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDRcbiAgfSxcbiAgXCJcXFxcYmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ3JcIjoge1xuICAgIG1jbGFzczogXCJtY2xvc2VcIixcbiAgICBzaXplOiAzXG4gIH0sXG4gIFwiXFxcXEJpZ2dyXCI6IHtcbiAgICBtY2xhc3M6IFwibWNsb3NlXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnbVwiOiB7XG4gICAgbWNsYXNzOiBcIm1yZWxcIixcbiAgICBzaXplOiAyXG4gIH0sXG4gIFwiXFxcXGJpZ2dtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ21cIjoge1xuICAgIG1jbGFzczogXCJtcmVsXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMVxuICB9LFxuICBcIlxcXFxCaWdcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogMlxuICB9LFxuICBcIlxcXFxiaWdnXCI6IHtcbiAgICBtY2xhc3M6IFwibW9yZFwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ1wiOiB7XG4gICAgbWNsYXNzOiBcIm1vcmRcIixcbiAgICBzaXplOiA0XG4gIH1cbn07XG52YXIgZGVsaW1pdGVycyA9IFtcIihcIiwgXCJcXFxcbHBhcmVuXCIsIFwiKVwiLCBcIlxcXFxycGFyZW5cIiwgXCJbXCIsIFwiXFxcXGxicmFja1wiLCBcIl1cIiwgXCJcXFxccmJyYWNrXCIsIFwiXFxcXHtcIiwgXCJcXFxcbGJyYWNlXCIsIFwiXFxcXH1cIiwgXCJcXFxccmJyYWNlXCIsIFwiXFxcXGxmbG9vclwiLCBcIlxcXFxyZmxvb3JcIiwgXCJcXHUyMzBBXCIsIFwiXFx1MjMwQlwiLCBcIlxcXFxsY2VpbFwiLCBcIlxcXFxyY2VpbFwiLCBcIlxcdTIzMDhcIiwgXCJcXHUyMzA5XCIsIFwiPFwiLCBcIj5cIiwgXCJcXFxcbGFuZ2xlXCIsIFwiXFx1MjdFOFwiLCBcIlxcXFxyYW5nbGVcIiwgXCJcXHUyN0U5XCIsIFwiXFxcXGx0XCIsIFwiXFxcXGd0XCIsIFwiXFxcXGx2ZXJ0XCIsIFwiXFxcXHJ2ZXJ0XCIsIFwiXFxcXGxWZXJ0XCIsIFwiXFxcXHJWZXJ0XCIsIFwiXFxcXGxncm91cFwiLCBcIlxcXFxyZ3JvdXBcIiwgXCJcXHUyN0VFXCIsIFwiXFx1MjdFRlwiLCBcIlxcXFxsbW91c3RhY2hlXCIsIFwiXFxcXHJtb3VzdGFjaGVcIiwgXCJcXHUyM0IwXCIsIFwiXFx1MjNCMVwiLCBcIi9cIiwgXCJcXFxcYmFja3NsYXNoXCIsIFwifFwiLCBcIlxcXFx2ZXJ0XCIsIFwiXFxcXHxcIiwgXCJcXFxcVmVydFwiLCBcIlxcXFx1cGFycm93XCIsIFwiXFxcXFVwYXJyb3dcIiwgXCJcXFxcZG93bmFycm93XCIsIFwiXFxcXERvd25hcnJvd1wiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCBcIlxcXFxVcGRvd25hcnJvd1wiLCBcIi5cIl07XG5cbi8vIERlbGltaXRlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGNoZWNrRGVsaW1pdGVyKGRlbGltLCBjb250ZXh0KSB7XG4gIHZhciBzeW1EZWxpbSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoZGVsaW0pO1xuXG4gIGlmIChzeW1EZWxpbSAmJiB1dGlscy5jb250YWlucyhkZWxpbWl0ZXJzLCBzeW1EZWxpbS50ZXh0KSkge1xuICAgIHJldHVybiBzeW1EZWxpbTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGRlbGltaXRlcjogJ1wiICsgKHN5bURlbGltID8gc3ltRGVsaW0udGV4dCA6IEpTT04uc3RyaW5naWZ5KGRlbGltKSkgKyBcIicgYWZ0ZXIgJ1wiICsgY29udGV4dC5mdW5jTmFtZSArIFwiJ1wiLCBkZWxpbSk7XG4gIH1cbn1cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImRlbGltc2l6aW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcYmlnbFwiLCBcIlxcXFxCaWdsXCIsIFwiXFxcXGJpZ2dsXCIsIFwiXFxcXEJpZ2dsXCIsIFwiXFxcXGJpZ3JcIiwgXCJcXFxcQmlnclwiLCBcIlxcXFxiaWdnclwiLCBcIlxcXFxCaWdnclwiLCBcIlxcXFxiaWdtXCIsIFwiXFxcXEJpZ21cIiwgXCJcXFxcYmlnZ21cIiwgXCJcXFxcQmlnZ21cIiwgXCJcXFxcYmlnXCIsIFwiXFxcXEJpZ1wiLCBcIlxcXFxiaWdnXCIsIFwiXFxcXEJpZ2dcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgZGVsaW0gPSBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJkZWxpbXNpemluZ1wiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIHNpemU6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLnNpemUsXG4gICAgICBtY2xhc3M6IGRlbGltaXRlclNpemVzW2NvbnRleHQuZnVuY05hbWVdLm1jbGFzcyxcbiAgICAgIGRlbGltOiBkZWxpbS50ZXh0XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgaWYgKGdyb3VwLmRlbGltID09PSBcIi5cIikge1xuICAgICAgLy8gRW1wdHkgZGVsaW1pdGVycyBzdGlsbCBjb3VudCBhcyBlbGVtZW50cywgZXZlbiB0aG91Z2ggdGhleSBkb24ndFxuICAgICAgLy8gc2hvdyBhbnl0aGluZy5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSk7XG4gICAgfSAvLyBVc2UgZGVsaW1pdGVyLnNpemVkRGVsaW0gdG8gZ2VuZXJhdGUgdGhlIGRlbGltaXRlci5cblxuXG4gICAgcmV0dXJuIGRlbGltaXRlci5zaXplZERlbGltKGdyb3VwLmRlbGltLCBncm91cC5zaXplLCBvcHRpb25zLCBncm91cC5tb2RlLCBbZ3JvdXAubWNsYXNzXSk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGlmIChncm91cC5kZWxpbSAhPT0gXCIuXCIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAuZGVsaW0sIGdyb3VwLm1vZGUpKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgY2hpbGRyZW4pO1xuXG4gICAgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtb3BlblwiIHx8IGdyb3VwLm1jbGFzcyA9PT0gXCJtY2xvc2VcIikge1xuICAgICAgLy8gT25seSBzb21lIG9mIHRoZSBkZWxpbXNpemluZyBmdW5jdGlvbnMgYWN0IGFzIGZlbmNlcywgYW5kIHRoZXlcbiAgICAgIC8vIHJldHVybiBcIm1vcGVuXCIgb3IgXCJtY2xvc2VcIiBtY2xhc3MuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRXhwbGljaXRseSBkaXNhYmxlIGZlbmNpbmcgaWYgaXQncyBub3QgYSBmZW5jZSwgdG8gb3ZlcnJpZGUgdGhlXG4gICAgICAvLyBkZWZhdWx0cy5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFzc2VydFBhcnNlZChncm91cCkge1xuICBpZiAoIWdyb3VwLmJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWc6IFRoZSBsZWZ0cmlnaHQgUGFyc2VOb2RlIHdhc24ndCBmdWxseSBwYXJzZWQuXCIpO1xuICB9XG59XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHQtcmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxyaWdodFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFxcbGVmdCBjYXNlIGJlbG93IHRyaWdnZXJzIHBhcnNpbmcgb2YgXFxyaWdodCBpblxuICAgIC8vICAgYGNvbnN0IHJpZ2h0ID0gcGFyc2VyLnBhcnNlRnVuY3Rpb24oKTtgXG4gICAgLy8gdXNlcyB0aGlzIHJldHVybiB2YWx1ZS5cbiAgICB2YXIgY29sb3IgPSBjb250ZXh0LnBhcnNlci5ndWxsZXQubWFjcm9zLmdldChcIlxcXFxjdXJyZW50QGNvbG9yXCIpO1xuXG4gICAgaWYgKGNvbG9yICYmIHR5cGVvZiBjb2xvciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXGN1cnJlbnRAY29sb3Igc2V0IHRvIG5vbi1zdHJpbmcgaW4gXFxcXHJpZ2h0XCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodC1yaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5wYXJzZXIubW9kZSxcbiAgICAgIGRlbGltOiBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KS50ZXh0LFxuICAgICAgY29sb3I6IGNvbG9yIC8vIHVuZGVmaW5lZCBpZiBub3Qgc2V0IHZpYSBcXGNvbG9yXG5cbiAgICB9O1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgbmFtZXM6IFtcIlxcXFxsZWZ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGRlbGltID0gY2hlY2tEZWxpbWl0ZXIoYXJnc1swXSwgY29udGV4dCk7XG4gICAgdmFyIHBhcnNlciA9IGNvbnRleHQucGFyc2VyOyAvLyBQYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcblxuICAgICsrcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBwYXJzZUV4cHJlc3Npb24gc3RvcHMgYmVmb3JlICdcXFxccmlnaHQnXG5cbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UpO1xuICAgIC0tcGFyc2VyLmxlZnRyaWdodERlcHRoOyAvLyBDaGVjayB0aGUgbmV4dCB0b2tlblxuXG4gICAgcGFyc2VyLmV4cGVjdChcIlxcXFxyaWdodFwiLCBmYWxzZSk7XG4gICAgdmFyIHJpZ2h0ID0gYXNzZXJ0Tm9kZVR5cGUocGFyc2VyLnBhcnNlRnVuY3Rpb24oKSwgXCJsZWZ0cmlnaHQtcmlnaHRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBsZWZ0OiBkZWxpbS50ZXh0LFxuICAgICAgcmlnaHQ6IHJpZ2h0LmRlbGltLFxuICAgICAgcmlnaHRDb2xvcjogcmlnaHQuY29sb3JcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApOyAvLyBCdWlsZCB0aGUgaW5uZXIgZXhwcmVzc2lvblxuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlLCBbXCJtb3BlblwiLCBcIm1jbG9zZVwiXSk7XG4gICAgdmFyIGlubmVySGVpZ2h0ID0gMDtcbiAgICB2YXIgaW5uZXJEZXB0aCA9IDA7XG4gICAgdmFyIGhhZE1pZGRsZSA9IGZhbHNlOyAvLyBDYWxjdWxhdGUgaXRzIGhlaWdodCBhbmQgZGVwdGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgLy8gXCJtaWRkbGVcIidzIGh0bWxCdWlsZGVyLlxuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgaWYgKGlubmVyW2ldLmlzTWlkZGxlKSB7XG4gICAgICAgIGhhZE1pZGRsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbm5lckhlaWdodCA9IE1hdGgubWF4KGlubmVyW2ldLmhlaWdodCwgaW5uZXJIZWlnaHQpO1xuICAgICAgICBpbm5lckRlcHRoID0gTWF0aC5tYXgoaW5uZXJbaV0uZGVwdGgsIGlubmVyRGVwdGgpO1xuICAgICAgfVxuICAgIH0gLy8gVGhlIHNpemUgb2YgZGVsaW1pdGVycyBpcyB0aGUgc2FtZSwgcmVnYXJkbGVzcyBvZiB3aGF0IHN0eWxlIHdlIGFyZVxuICAgIC8vIGluLiBUaHVzLCB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBzaXplIG9mIGRlbGltaXRlciB3ZSBuZWVkIGFyb3VuZFxuICAgIC8vIGEgZ3JvdXAsIHdlIHNjYWxlIGRvd24gdGhlIGlubmVyIHNpemUgYmFzZWQgb24gdGhlIHNpemUuXG5cblxuICAgIGlubmVySGVpZ2h0ICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgaW5uZXJEZXB0aCAqPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBsZWZ0RGVsaW07XG5cbiAgICBpZiAoZ3JvdXAubGVmdCA9PT0gXCIuXCIpIHtcbiAgICAgIC8vIEVtcHR5IGRlbGltaXRlcnMgaW4gXFxsZWZ0IGFuZCBcXHJpZ2h0IG1ha2UgbnVsbCBkZWxpbWl0ZXIgc3BhY2VzLlxuICAgICAgbGVmdERlbGltID0gbWFrZU51bGxEZWxpbWl0ZXIob3B0aW9ucywgW1wibW9wZW5cIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHVzZSBsZWZ0UmlnaHREZWxpbSB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBzaXplZFxuICAgICAgLy8gZGVsaW1pdGVyLlxuICAgICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmxlZnRSaWdodERlbGltKGdyb3VwLmxlZnQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBvcHRpb25zLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZXhwcmVzc2lvblxuXG5cbiAgICBpbm5lci51bnNoaWZ0KGxlZnREZWxpbSk7IC8vIEhhbmRsZSBtaWRkbGUgZGVsaW1pdGVyc1xuXG4gICAgaWYgKGhhZE1pZGRsZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGlubmVyLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgbWlkZGxlRGVsaW0gPSBpbm5lcltfaV07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBTZWUgY29tbWVudCBpblxuICAgICAgICAvLyBcIm1pZGRsZVwiJ3MgaHRtbEJ1aWxkZXIuXG4gICAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgICB2YXIgaXNNaWRkbGUgPSBtaWRkbGVEZWxpbS5pc01pZGRsZTtcblxuICAgICAgICBpZiAoaXNNaWRkbGUpIHtcbiAgICAgICAgICAvLyBBcHBseSB0aGUgb3B0aW9ucyB0aGF0IHdlcmUgYWN0aXZlIHdoZW4gXFxtaWRkbGUgd2FzIGNhbGxlZFxuICAgICAgICAgIGlubmVyW19pXSA9IGRlbGltaXRlci5sZWZ0UmlnaHREZWxpbShpc01pZGRsZS5kZWxpbSwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIGlzTWlkZGxlLm9wdGlvbnMsIGdyb3VwLm1vZGUsIFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByaWdodERlbGltOyAvLyBTYW1lIGZvciB0aGUgcmlnaHQgZGVsaW1pdGVyLCBidXQgdXNpbmcgY29sb3Igc3BlY2lmaWVkIGJ5IFxcY29sb3JcblxuICAgIGlmIChncm91cC5yaWdodCA9PT0gXCIuXCIpIHtcbiAgICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29sb3JPcHRpb25zID0gZ3JvdXAucmlnaHRDb2xvciA/IG9wdGlvbnMud2l0aENvbG9yKGdyb3VwLnJpZ2h0Q29sb3IpIDogb3B0aW9ucztcbiAgICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIubGVmdFJpZ2h0RGVsaW0oZ3JvdXAucmlnaHQsIGlubmVySGVpZ2h0LCBpbm5lckRlcHRoLCBjb2xvck9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1jbG9zZVwiXSk7XG4gICAgfSAvLyBBZGQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbi5cblxuXG4gICAgaW5uZXIucHVzaChyaWdodERlbGltKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibWlubmVyXCJdLCBpbm5lciwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBhc3NlcnRQYXJzZWQoZ3JvdXApO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5sZWZ0ICE9PSBcIi5cIikge1xuICAgICAgdmFyIGxlZnROb2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubGVmdCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIGxlZnROb2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIGlubmVyLnVuc2hpZnQobGVmdE5vZGUpO1xuICAgIH1cblxuICAgIGlmIChncm91cC5yaWdodCAhPT0gXCIuXCIpIHtcbiAgICAgIHZhciByaWdodE5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5yaWdodCwgZ3JvdXAubW9kZSldKTtcbiAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG5cbiAgICAgIGlmIChncm91cC5yaWdodENvbG9yKSB7XG4gICAgICAgIHJpZ2h0Tm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoY29sb3JcIiwgZ3JvdXAucmlnaHRDb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGlubmVyLnB1c2gocmlnaHROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyhpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1pZGRsZVwiLFxuICBuYW1lczogW1wiXFxcXG1pZGRsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciBkZWxpbSA9IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjb250ZXh0LnBhcnNlci5sZWZ0cmlnaHREZXB0aCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXG1pZGRsZSB3aXRob3V0IHByZWNlZGluZyBcXFxcbGVmdFwiLCBkZWxpbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWlkZGxlXCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgZGVsaW06IGRlbGltLnRleHRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbWlkZGxlRGVsaW07XG5cbiAgICBpZiAoZ3JvdXAuZGVsaW0gPT09IFwiLlwiKSB7XG4gICAgICBtaWRkbGVEZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWlkZGxlRGVsaW0gPSBkZWxpbWl0ZXIuc2l6ZWREZWxpbShncm91cC5kZWxpbSwgMSwgb3B0aW9ucywgZ3JvdXAubW9kZSwgW10pO1xuICAgICAgdmFyIGlzTWlkZGxlID0ge1xuICAgICAgICBkZWxpbTogZ3JvdXAuZGVsaW0sXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgIH07IC8vIFByb3BlcnR5IGBpc01pZGRsZWAgbm90IGRlZmluZWQgb24gYHNwYW5gLiBJdCBpcyBvbmx5IHVzZWQgaW5cbiAgICAgIC8vIHRoaXMgZmlsZSBhYm92ZS5cbiAgICAgIC8vIFRPRE86IEZpeCB0aGlzIHZpb2xhdGlvbiBvZiB0aGUgYHNwYW5gIHR5cGUgYW5kIHBvc3NpYmx5IHJlbmFtZVxuICAgICAgLy8gdGhpbmdzIHNpbmNlIGBpc01pZGRsZWAgc291bmRzIGxpa2UgYSBib29sZWFuLCBidXQgaXMgYSBzdHJ1Y3QuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIG1pZGRsZURlbGltLmlzTWlkZGxlID0gaXNNaWRkbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZGRsZURlbGltO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gQSBGaXJlZm94IFxcbWlkZGxlIHdpbGwgc3RyZWNoIGEgY2hhcmFjdGVyIHZlcnRpY2FsbHkgb25seSBpZiBpdFxuICAgIC8vIGlzIGluIHRoZSBmZW5jZSBwYXJ0IG9mIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5IGF0OlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9NYXRoTUwzL2FwcGVuZGl4Yy5odG1sLlxuICAgIC8vIFNvIHdlIG5lZWQgdG8gYXZvaWQgVSsyMjIzIGFuZCB1c2UgcGxhaW4gXCJ8XCIgaW5zdGVhZC5cbiAgICB2YXIgdGV4dE5vZGUgPSBncm91cC5kZWxpbSA9PT0gXCJcXFxcdmVydFwiIHx8IGdyb3VwLmRlbGltID09PSBcInxcIiA/IGJ1aWxkTWF0aE1MX21ha2VUZXh0KFwifFwiLCBcInRleHRcIikgOiBidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5kZWxpbSwgZ3JvdXAubW9kZSk7XG4gICAgdmFyIG1pZGRsZU5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFt0ZXh0Tm9kZV0pO1xuICAgIG1pZGRsZU5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpOyAvLyBNYXRoTUwgZ2l2ZXMgNS8xOGVtIHNwYWNpbmcgdG8gZWFjaCA8bW8+IGVsZW1lbnQuXG4gICAgLy8gXFxtaWRkbGUgc2hvdWxkIGdldCBkZWxpbWl0ZXIgc3BhY2luZyBpbnN0ZWFkLlxuXG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJyc3BhY2VcIiwgXCIwLjA1ZW1cIik7XG4gICAgcmV0dXJuIG1pZGRsZU5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2VuY2xvc2UuanNcblxuXG5cblxuXG5cblxuXG5cbnZhciBlbmNsb3NlX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gXFxjYW5jZWwsIFxcYmNhbmNlbCwgXFx4Y2FuY2VsLCBcXHNvdXQsIFxcZmJveCwgXFxjb2xvcmJveCwgXFxmY29sb3Jib3hcbiAgLy8gU29tZSBncm91cHMgY2FuIHJldHVybiBkb2N1bWVudCBmcmFnbWVudHMuICBIYW5kbGUgdGhvc2UgYnkgd3JhcHBpbmdcbiAgLy8gdGhlbSBpbiBhIHNwYW4uXG4gIHZhciBpbm5lciA9IGJ1aWxkQ29tbW9uLndyYXBGcmFnbWVudChidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIHZhciBsYWJlbCA9IGdyb3VwLmxhYmVsLnN1YnN0cigxKTtcbiAgdmFyIHNjYWxlID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgdmFyIGltZztcbiAgdmFyIGltZ1NoaWZ0ID0gMDsgLy8gSW4gdGhlIExhVGVYIGNhbmNlbCBwYWNrYWdlLCBsaW5lIGdlb21ldHJ5IGlzIHNsaWdodGx5IGRpZmZlcmVudFxuICAvLyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3ViamVjdCBpcyB3aWRlciB0aGFuIGl0IGlzIHRhbGwsIG9yIHZpY2UgdmVyc2EuXG4gIC8vIFdlIGRvbid0IGtub3cgdGhlIHdpZHRoIG9mIGEgZ3JvdXAsIHNvIGFzIGEgcHJveHksIHdlIHRlc3QgaWZcbiAgLy8gdGhlIHN1YmplY3QgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLiBUaGlzIGNhcHR1cmVzIG1vc3Qgb2YgdGhlXG4gIC8vIHN1YmplY3RzIHRoYXQgc2hvdWxkIGdldCB0aGUgXCJ0YWxsXCIgdHJlYXRtZW50LlxuXG4gIHZhciBpc1NpbmdsZUNoYXIgPSB1dGlscy5pc0NoYXJhY3RlckJveChncm91cC5ib2R5KTtcblxuICBpZiAobGFiZWwgPT09IFwic291dFwiKSB7XG4gICAgaW1nID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgXCJzb3V0XCJdKTtcbiAgICBpbWcuaGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlZmF1bHRSdWxlVGhpY2tuZXNzIC8gc2NhbGU7XG4gICAgaW1nU2hpZnQgPSAtMC41ICogb3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIGhvcml6b250YWwgcGFkZGluZ1xuICAgIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgICAgaWYgKCFpc1NpbmdsZUNoYXIpIHtcbiAgICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiY2FuY2VsLXBhZFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5uZXIuY2xhc3Nlcy5wdXNoKFwiYm94cGFkXCIpO1xuICAgIH0gLy8gQWRkIHZlcnRpY2FsIHBhZGRpbmdcblxuXG4gICAgdmFyIHZlcnRQYWQgPSAwO1xuICAgIHZhciBydWxlVGhpY2tuZXNzID0gMDsgLy8gcmVmOiBjYW5jZWwgcGFja2FnZTogXFxhZHZhbmNlXFx0b3RhbGhlaWdodDJcXHBAICUgXCIrMlwiXG5cbiAgICBpZiAoL2JveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIHJ1bGVUaGlja25lc3MgPSBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHJ1bGUsIC8vIGRlZmF1bHRcbiAgICAgIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICAgICAgKTtcbiAgICAgIHZlcnRQYWQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHNlcCArIChsYWJlbCA9PT0gXCJjb2xvcmJveFwiID8gMCA6IHJ1bGVUaGlja25lc3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZXJ0UGFkID0gaXNTaW5nbGVDaGFyID8gMC4yIDogMDtcbiAgICB9XG5cbiAgICBpbWcgPSBzdHJldGNoeS5lbmNsb3NlU3Bhbihpbm5lciwgbGFiZWwsIHZlcnRQYWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKC9mYm94fGJveGVkfGZjb2xvcmJveC8udGVzdChsYWJlbCkpIHtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJTdHlsZSA9IFwic29saWRcIjtcbiAgICAgIGltZy5zdHlsZS5ib3JkZXJXaWR0aCA9IHJ1bGVUaGlja25lc3MgKyBcImVtXCI7XG4gICAgfVxuXG4gICAgaW1nU2hpZnQgPSBpbm5lci5kZXB0aCArIHZlcnRQYWQ7XG5cbiAgICBpZiAoZ3JvdXAuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZ3JvdXAuYmFja2dyb3VuZENvbG9yO1xuXG4gICAgICBpZiAoZ3JvdXAuYm9yZGVyQ29sb3IpIHtcbiAgICAgICAgaW1nLnN0eWxlLmJvcmRlckNvbG9yID0gZ3JvdXAuYm9yZGVyQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogWy8vIFB1dCB0aGUgY29sb3IgYmFja2dyb3VuZCBiZWhpbmQgaW5uZXI7XG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbWcsXG4gICAgICAgIHNoaWZ0OiBpbWdTaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXIsXG4gICAgICAgIHNoaWZ0OiAwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbLy8gV3JpdGUgdGhlIFxcY2FuY2VsIHN0cm9rZSBvbiB0b3Agb2YgaW5uZXIuXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgc2hpZnQ6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZyxcbiAgICAgICAgc2hpZnQ6IGltZ1NoaWZ0LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogL2NhbmNlbC8udGVzdChsYWJlbCkgPyBbXCJzdmctYWxpZ25cIl0gOiBbXVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSkge1xuICAgIC8vIFRoZSBjYW5jZWwgcGFja2FnZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBjYW5jZWwgbGluZXMgYWRkIHRoZWlyIGhlaWdodFxuICAgIC8vIHRvIHRoZSBleHByZXNzaW9uLCBidXQgdGVzdHMgc2hvdyB0aGF0IGlzbid0IGhvdyBpdCBhY3R1YWxseSB3b3Jrcy5cbiAgICB2bGlzdC5oZWlnaHQgPSBpbm5lci5oZWlnaHQ7XG4gICAgdmxpc3QuZGVwdGggPSBpbm5lci5kZXB0aDtcbiAgfVxuXG4gIGlmICgvY2FuY2VsLy50ZXN0KGxhYmVsKSAmJiAhaXNTaW5nbGVDaGFyKSB7XG4gICAgLy8gY2FuY2VsIGRvZXMgbm90IGNyZWF0ZSBob3JpeiBzcGFjZSBmb3IgaXRzIGxpbmUgZXh0ZW5zaW9uLlxuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwiY2FuY2VsLWxhcFwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9XG59O1xuXG52YXIgZW5jbG9zZV9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZmJveHNlcCA9IDA7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoZ3JvdXAubGFiZWwuaW5kZXhPZihcImNvbG9yYm94XCIpID4gLTEgPyBcIm1wYWRkZWRcIiA6IFwibWVuY2xvc2VcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICBzd2l0Y2ggKGdyb3VwLmxhYmVsKSB7XG4gICAgY2FzZSBcIlxcXFxjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlXCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXGJjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJkb3duZGlhZ29uYWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcc291dFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImhvcml6b250YWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcZmJveFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImJveFwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlxcXFxmY29sb3Jib3hcIjpcbiAgICBjYXNlIFwiXFxcXGNvbG9yYm94XCI6XG4gICAgICAvLyA8bWVuY2xvc2U+IGRvZXNuJ3QgaGF2ZSBhIGdvb2Qgbm90YXRpb24gb3B0aW9uLiBTbyB1c2UgPG1wYWRkZWQ+XG4gICAgICAvLyBpbnN0ZWFkLiBTZXQgc29tZSBhdHRyaWJ1dGVzIHRoYXQgY29tZSBpbmNsdWRlZCB3aXRoIDxtZW5jbG9zZT4uXG4gICAgICBmYm94c2VwID0gb3B0aW9ucy5mb250TWV0cmljcygpLmZib3hzZXAgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIrXCIgKyAyICogZmJveHNlcCArIFwicHRcIik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIitcIiArIDIgKiBmYm94c2VwICsgXCJwdFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibHNwYWNlXCIsIGZib3hzZXAgKyBcInB0XCIpOyAvL1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInZvZmZzZXRcIiwgZmJveHNlcCArIFwicHRcIik7XG5cbiAgICAgIGlmIChncm91cC5sYWJlbCA9PT0gXCJcXFxcZmNvbG9yYm94XCIpIHtcbiAgICAgICAgdmFyIHRoayA9IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5mYm94cnVsZSwgLy8gZGVmYXVsdFxuICAgICAgICBvcHRpb25zLm1pblJ1bGVUaGlja25lc3MgLy8gdXNlciBvdmVycmlkZVxuICAgICAgICApO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwiYm9yZGVyOiBcIiArIHRoayArIFwiZW0gc29saWQgXCIgKyBTdHJpbmcoZ3JvdXAuYm9yZGVyQ29sb3IpKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXHhjYW5jZWxcIjpcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgXCJ1cGRpYWdvbmFsc3RyaWtlIGRvd25kaWFnb25hbHN0cmlrZVwiKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGdyb3VwLmJhY2tncm91bmRDb2xvcikge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aGJhY2tncm91bmRcIiwgZ3JvdXAuYmFja2dyb3VuZENvbG9yKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxjb2xvcmJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgZ3JlZWRpbmVzczogMyxcbiAgICBhcmdUeXBlczogW1wiY29sb3JcIiwgXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBjb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbmNsb3NlXCIsXG4gIG5hbWVzOiBbXCJcXFxcZmNvbG9yYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiLCBcImNvbG9yXCIsIFwidGV4dFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMi5mdW5jTmFtZTtcbiAgICB2YXIgYm9yZGVyQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzFdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yO1xuICAgIHZhciBib2R5ID0gYXJnc1syXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBlbmNsb3NlX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBlbmNsb3NlX21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxmYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcImhib3hcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYzLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYzLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBcIlxcXFxmYm94XCIsXG4gICAgICBib2R5OiBhcmdzWzBdXG4gICAgfTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZW5jbG9zZVwiLFxuICBuYW1lczogW1wiXFxcXGNhbmNlbFwiLCBcIlxcXFxiY2FuY2VsXCIsIFwiXFxcXHhjYW5jZWxcIiwgXCJcXFxcc291dFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjQsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjQucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWY0LmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlbmNsb3NlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZW5jbG9zZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZW5jbG9zZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlZmluZUVudmlyb25tZW50LmpzXG5cblxuLyoqXG4gKiBBbGwgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudHMuXG4gKiBgZW52aXJvbm1lbnRzLmpzYCBleHBvcnRzIHRoaXMgc2FtZSBkaWN0aW9uYXJ5IGFnYWluIGFuZCBtYWtlcyBpdCBwdWJsaWMuXG4gKiBgUGFyc2VyLmpzYCByZXF1aXJlcyB0aGlzIGRpY3Rpb25hcnkgdmlhIGBlbnZpcm9ubWVudHMuanNgLlxuICovXG52YXIgX2Vudmlyb25tZW50cyA9IHt9O1xuZnVuY3Rpb24gZGVmaW5lRW52aXJvbm1lbnQoX3JlZikge1xuICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIG5hbWVzID0gX3JlZi5uYW1lcyxcbiAgICAgIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgIGhhbmRsZXIgPSBfcmVmLmhhbmRsZXIsXG4gICAgICBodG1sQnVpbGRlciA9IF9yZWYuaHRtbEJ1aWxkZXIsXG4gICAgICBtYXRobWxCdWlsZGVyID0gX3JlZi5tYXRobWxCdWlsZGVyO1xuICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgb2YgZW52aXJvbm1lbnRzLlxuICB2YXIgZGF0YSA9IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIG51bUFyZ3M6IHByb3BzLm51bUFyZ3MgfHwgMCxcbiAgICBncmVlZGluZXNzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IGZhbHNlLFxuICAgIG51bU9wdGlvbmFsQXJnczogMCxcbiAgICBoYW5kbGVyOiBoYW5kbGVyXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFRPRE86IFRoZSB2YWx1ZSB0eXBlIG9mIF9lbnZpcm9ubWVudHMgc2hvdWxkIGJlIGEgdHlwZSB1bmlvbiBvZiBhbGxcbiAgICAvLyBwb3NzaWJsZSBgRW52U3BlYzw+YCBwb3NzaWJpbGl0aWVzIGluc3RlYWQgb2YgYEVudlNwZWM8Kj5gLCB3aGljaCBpc1xuICAgIC8vIGFuIGV4aXN0ZW50aWFsIHR5cGUuXG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIF9lbnZpcm9ubWVudHNbbmFtZXNbaV1dID0gZGF0YTtcbiAgfVxuXG4gIGlmIChodG1sQnVpbGRlcikge1xuICAgIF9odG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IGh0bWxCdWlsZGVyO1xuICB9XG5cbiAgaWYgKG1hdGhtbEJ1aWxkZXIpIHtcbiAgICBfbWF0aG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IG1hdGhtbEJ1aWxkZXI7XG4gIH1cbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy9hcnJheS5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5mdW5jdGlvbiBnZXRITGluZXMocGFyc2VyKSB7XG4gIC8vIFJldHVybiBhbiBhcnJheS4gVGhlIGFycmF5IGxlbmd0aCA9IG51bWJlciBvZiBobGluZXMuXG4gIC8vIEVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkgdGVsbHMgaWYgdGhlIGxpbmUgaXMgZGFzaGVkLlxuICB2YXIgaGxpbmVJbmZvID0gW107XG4gIHBhcnNlci5jb25zdW1lU3BhY2VzKCk7XG4gIHZhciBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuXG4gIHdoaWxlIChueHQgPT09IFwiXFxcXGhsaW5lXCIgfHwgbnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIikge1xuICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgaGxpbmVJbmZvLnB1c2gobnh0ID09PSBcIlxcXFxoZGFzaGxpbmVcIik7XG4gICAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgICBueHQgPSBwYXJzZXIuZmV0Y2goKS50ZXh0O1xuICB9XG5cbiAgcmV0dXJuIGhsaW5lSW5mbztcbn1cbi8qKlxuICogUGFyc2UgdGhlIGJvZHkgb2YgdGhlIGVudmlyb25tZW50LCB3aXRoIHJvd3MgZGVsaW1pdGVkIGJ5IFxcXFwgYW5kXG4gKiBjb2x1bW5zIGRlbGltaXRlZCBieSAmLCBhbmQgY3JlYXRlIGEgbmVzdGVkIGxpc3QgaW4gcm93LW1ham9yIG9yZGVyXG4gKiB3aXRoIG9uZSBncm91cCBwZXIgY2VsbC4gIElmIGdpdmVuIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHN0eWxlXG4gKiAoXCJ0ZXh0XCIsIFwiZGlzcGxheVwiLCBldGMuKSwgdGhlbiBlYWNoIGNlbGwgaXMgY2FzdCBpbnRvIHRoYXQgc3R5bGUuXG4gKi9cblxuXG5mdW5jdGlvbiBwYXJzZUFycmF5KHBhcnNlciwgX3JlZiwgc3R5bGUpIHtcbiAgdmFyIGhza2lwQmVmb3JlQW5kQWZ0ZXIgPSBfcmVmLmhza2lwQmVmb3JlQW5kQWZ0ZXIsXG4gICAgICBhZGRKb3QgPSBfcmVmLmFkZEpvdCxcbiAgICAgIGNvbHMgPSBfcmVmLmNvbHMsXG4gICAgICBhcnJheXN0cmV0Y2ggPSBfcmVmLmFycmF5c3RyZXRjaCxcbiAgICAgIGNvbFNlcGFyYXRpb25UeXBlID0gX3JlZi5jb2xTZXBhcmF0aW9uVHlwZTtcbiAgLy8gUGFyc2UgYm9keSBvZiBhcnJheSB3aXRoIFxcXFwgdGVtcG9yYXJpbHkgbWFwcGVkIHRvIFxcY3JcbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHBhcnNlci5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxcXFxcXCIsIFwiXFxcXGNyXCIpOyAvLyBHZXQgY3VycmVudCBhcnJheXN0cmV0Y2ggaWYgaXQncyBub3Qgc2V0IGJ5IHRoZSBlbnZpcm9ubWVudFxuXG4gIGlmICghYXJyYXlzdHJldGNoKSB7XG4gICAgdmFyIHN0cmV0Y2ggPSBwYXJzZXIuZ3VsbGV0LmV4cGFuZE1hY3JvQXNUZXh0KFwiXFxcXGFycmF5c3RyZXRjaFwiKTtcblxuICAgIGlmIChzdHJldGNoID09IG51bGwpIHtcbiAgICAgIC8vIERlZmF1bHQgXFxhcnJheXN0cmV0Y2ggZnJvbSBsdHRhYi5kdHhcbiAgICAgIGFycmF5c3RyZXRjaCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5c3RyZXRjaCA9IHBhcnNlRmxvYXQoc3RyZXRjaCk7XG5cbiAgICAgIGlmICghYXJyYXlzdHJldGNoIHx8IGFycmF5c3RyZXRjaCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBcXFxcYXJyYXlzdHJldGNoOiBcIiArIHN0cmV0Y2gpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBTdGFydCBncm91cCBmb3IgZmlyc3QgY2VsbFxuXG5cbiAgcGFyc2VyLmd1bGxldC5iZWdpbkdyb3VwKCk7XG4gIHZhciByb3cgPSBbXTtcbiAgdmFyIGJvZHkgPSBbcm93XTtcbiAgdmFyIHJvd0dhcHMgPSBbXTtcbiAgdmFyIGhMaW5lc0JlZm9yZVJvdyA9IFtdOyAvLyBUZXN0IGZvciBcXGhsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LlxuXG4gIGhMaW5lc0JlZm9yZVJvdy5wdXNoKGdldEhMaW5lcyhwYXJzZXIpKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgLy8gUGFyc2UgZWFjaCBjZWxsIGluIGl0cyBvd24gZ3JvdXAgKG5hbWVzcGFjZSlcbiAgICB2YXIgY2VsbCA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UsIFwiXFxcXGNyXCIpO1xuICAgIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgICBwYXJzZXIuZ3VsbGV0LmJlZ2luR3JvdXAoKTtcbiAgICBjZWxsID0ge1xuICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBjZWxsXG4gICAgfTtcblxuICAgIGlmIChzdHlsZSkge1xuICAgICAgY2VsbCA9IHtcbiAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGJvZHk6IFtjZWxsXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByb3cucHVzaChjZWxsKTtcbiAgICB2YXIgbmV4dCA9IHBhcnNlci5mZXRjaCgpLnRleHQ7XG5cbiAgICBpZiAobmV4dCA9PT0gXCImXCIpIHtcbiAgICAgIHBhcnNlci5jb25zdW1lKCk7XG4gICAgfSBlbHNlIGlmIChuZXh0ID09PSBcIlxcXFxlbmRcIikge1xuICAgICAgLy8gQXJyYXlzIHRlcm1pbmF0ZSBuZXdsaW5lcyB3aXRoIGBcXGNyY3JgIHdoaWNoIGNvbnN1bWVzIGEgYFxcY3JgIGlmXG4gICAgICAvLyB0aGUgbGFzdCBsaW5lIGlzIGVtcHR5LlxuICAgICAgLy8gTk9URTogQ3VycmVudGx5LCBgY2VsbGAgaXMgdGhlIGxhc3QgaXRlbSBhZGRlZCBpbnRvIGByb3dgLlxuICAgICAgaWYgKHJvdy5sZW5ndGggPT09IDEgJiYgY2VsbC50eXBlID09PSBcInN0eWxpbmdcIiAmJiBjZWxsLmJvZHlbMF0uYm9keS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYm9keS5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhMaW5lc0JlZm9yZVJvdy5sZW5ndGggPCBib2R5Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgaExpbmVzQmVmb3JlUm93LnB1c2goW10pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IFwiXFxcXGNyXCIpIHtcbiAgICAgIHZhciBjciA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiY3JcIik7XG4gICAgICByb3dHYXBzLnB1c2goY3Iuc2l6ZSk7IC8vIGNoZWNrIGZvciBcXGhsaW5lKHMpIGZvbGxvd2luZyB0aGUgcm93IHNlcGFyYXRvclxuXG4gICAgICBoTGluZXNCZWZvcmVSb3cucHVzaChnZXRITGluZXMocGFyc2VyKSk7XG4gICAgICByb3cgPSBbXTtcbiAgICAgIGJvZHkucHVzaChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFeHBlY3RlZCAmIG9yIFxcXFxcXFxcIG9yIFxcXFxjciBvciBcXFxcZW5kXCIsIHBhcnNlci5uZXh0VG9rZW4pO1xuICAgIH1cbiAgfSAvLyBFbmQgY2VsbCBncm91cFxuXG5cbiAgcGFyc2VyLmd1bGxldC5lbmRHcm91cCgpOyAvLyBFbmQgYXJyYXkgZ3JvdXAgZGVmaW5pbmcgXFxcXFxuXG4gIHBhcnNlci5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgYWRkSm90OiBhZGRKb3QsXG4gICAgYXJyYXlzdHJldGNoOiBhcnJheXN0cmV0Y2gsXG4gICAgYm9keTogYm9keSxcbiAgICBjb2xzOiBjb2xzLFxuICAgIHJvd0dhcHM6IHJvd0dhcHMsXG4gICAgaHNraXBCZWZvcmVBbmRBZnRlcjogaHNraXBCZWZvcmVBbmRBZnRlcixcbiAgICBoTGluZXNCZWZvcmVSb3c6IGhMaW5lc0JlZm9yZVJvdyxcbiAgICBjb2xTZXBhcmF0aW9uVHlwZTogY29sU2VwYXJhdGlvblR5cGVcbiAgfTtcbn0gLy8gRGVjaWRlcyBvbiBhIHN0eWxlIGZvciBjZWxscyBpbiBhbiBhcnJheSBhY2NvcmRpbmcgdG8gd2hldGhlciB0aGUgZ2l2ZW5cbi8vIGVudmlyb25tZW50IG5hbWUgc3RhcnRzIHdpdGggdGhlIGxldHRlciAnZCcuXG5cblxuZnVuY3Rpb24gZENlbGxTdHlsZShlbnZOYW1lKSB7XG4gIGlmIChlbnZOYW1lLnN1YnN0cigwLCAxKSA9PT0gXCJkXCIpIHtcbiAgICByZXR1cm4gXCJkaXNwbGF5XCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwidGV4dFwiO1xuICB9XG59XG5cbnZhciBhcnJheV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciByO1xuICB2YXIgYztcbiAgdmFyIG5yID0gZ3JvdXAuYm9keS5sZW5ndGg7XG4gIHZhciBoTGluZXNCZWZvcmVSb3cgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIHZhciBuYyA9IDA7XG4gIHZhciBib2R5ID0gbmV3IEFycmF5KG5yKTtcbiAgdmFyIGhsaW5lcyA9IFtdO1xuICB2YXIgcnVsZVRoaWNrbmVzcyA9IE1hdGgubWF4KCAvLyBGcm9tIExhVGVYIFxcc2hvd3RoZVxcYXJyYXlydWxld2lkdGguIEVxdWFscyAwLjA0IGVtLlxuICBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXJyYXlSdWxlV2lkdGgsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyBVc2VyIG92ZXJyaWRlLlxuICApOyAvLyBIb3Jpem9udGFsIHNwYWNpbmdcblxuICB2YXIgcHQgPSAxIC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gIHZhciBhcnJheWNvbHNlcCA9IDUgKiBwdDsgLy8gZGVmYXVsdCB2YWx1ZSwgaS5lLiBcXGFycmF5Y29sc2VwIGluIGFydGljbGUuY2xzXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlICYmIGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcInNtYWxsXCIpIHtcbiAgICAvLyBXZSdyZSBpbiBhIHtzbWFsbG1hdHJpeH0uIERlZmF1bHQgY29sdW1uIHNwYWNlIGlzIFxcdGhpY2tzcGFjZSxcbiAgICAvLyBpLmUuIDUvMThlbSA9IDAuMjc3OGVtLCBwZXIgYW1zbWF0aC5kdHggZm9yIHtzbWFsbG1hdHJpeH0uXG4gICAgLy8gQnV0IHRoYXQgbmVlZHMgYWRqdXN0bWVudCBiZWNhdXNlIExhVGVYIGFwcGxpZXMgXFxzY3JpcHRzdHlsZSB0byB0aGVcbiAgICAvLyBlbnRpcmUgYXJyYXksIGluY2x1ZGluZyB0aGUgY29sc3BhY2UsIGJ1dCB0aGlzIGZ1bmN0aW9uIGFwcGxpZXNcbiAgICAvLyBcXHNjcmlwdHN0eWxlIG9ubHkgaW5zaWRlIGVhY2ggZWxlbWVudC5cbiAgICB2YXIgbG9jYWxNdWx0aXBsaWVyID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzcmNfU3R5bGUuU0NSSVBUKS5zaXplTXVsdGlwbGllcjtcbiAgICBhcnJheWNvbHNlcCA9IDAuMjc3OCAqIChsb2NhbE11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyKTtcbiAgfSAvLyBWZXJ0aWNhbCBzcGFjaW5nXG5cblxuICB2YXIgYmFzZWxpbmVza2lwID0gMTIgKiBwdDsgLy8gc2VlIHNpemUxMC5jbG9cbiAgLy8gRGVmYXVsdCBcXGpvdCBmcm9tIGx0bWF0aC5kdHhcbiAgLy8gVE9ETyhlZGVtYWluZSk6IGFsbG93IG92ZXJyaWRpbmcgXFxqb3QgdmlhIFxcc2V0bGVuZ3RoICgjNjg3KVxuXG4gIHZhciBqb3QgPSAzICogcHQ7XG4gIHZhciBhcnJheXNraXAgPSBncm91cC5hcnJheXN0cmV0Y2ggKiBiYXNlbGluZXNraXA7XG4gIHZhciBhcnN0cnV0SGVpZ2h0ID0gMC43ICogYXJyYXlza2lwOyAvLyBcXHN0cnV0Ym94IGluIGx0ZnNzdHJjLmR0eCBhbmRcblxuICB2YXIgYXJzdHJ1dERlcHRoID0gMC4zICogYXJyYXlza2lwOyAvLyBcXEBhcnN0cnV0Ym94IGluIGx0dGFiLmR0eFxuXG4gIHZhciB0b3RhbEhlaWdodCA9IDA7IC8vIFNldCBhIHBvc2l0aW9uIGZvciBcXGhsaW5lKHMpIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5LCBpZiBhbnkuXG5cbiAgZnVuY3Rpb24gc2V0SExpbmVQb3MoaGxpbmVzSW5HYXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhsaW5lc0luR2FwLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgdG90YWxIZWlnaHQgKz0gMC4yNTtcbiAgICAgIH1cblxuICAgICAgaGxpbmVzLnB1c2goe1xuICAgICAgICBwb3M6IHRvdGFsSGVpZ2h0LFxuICAgICAgICBpc0Rhc2hlZDogaGxpbmVzSW5HYXBbaV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldEhMaW5lUG9zKGhMaW5lc0JlZm9yZVJvd1swXSk7XG5cbiAgZm9yIChyID0gMDsgciA8IGdyb3VwLmJvZHkubGVuZ3RoOyArK3IpIHtcbiAgICB2YXIgaW5yb3cgPSBncm91cC5ib2R5W3JdO1xuICAgIHZhciBoZWlnaHQgPSBhcnN0cnV0SGVpZ2h0OyAvLyBcXEBhcnJheSBhZGRzIGFuIFxcQGFyc3RydXRcblxuICAgIHZhciBkZXB0aCA9IGFyc3RydXREZXB0aDsgLy8gdG8gZWFjaCB0b3cgKHZpYSB0aGUgdGVtcGxhdGUpXG5cbiAgICBpZiAobmMgPCBpbnJvdy5sZW5ndGgpIHtcbiAgICAgIG5jID0gaW5yb3cubGVuZ3RoO1xuICAgIH1cblxuICAgIHZhciBvdXRyb3cgPSBuZXcgQXJyYXkoaW5yb3cubGVuZ3RoKTtcblxuICAgIGZvciAoYyA9IDA7IGMgPCBpbnJvdy5sZW5ndGg7ICsrYykge1xuICAgICAgdmFyIGVsdCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGlucm93W2NdLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGRlcHRoIDwgZWx0LmRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gZWx0LmRlcHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGVpZ2h0IDwgZWx0LmhlaWdodCkge1xuICAgICAgICBoZWlnaHQgPSBlbHQuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBvdXRyb3dbY10gPSBlbHQ7XG4gICAgfVxuXG4gICAgdmFyIHJvd0dhcCA9IGdyb3VwLnJvd0dhcHNbcl07XG4gICAgdmFyIGdhcCA9IDA7XG5cbiAgICBpZiAocm93R2FwKSB7XG4gICAgICBnYXAgPSB1bml0c19jYWxjdWxhdGVTaXplKHJvd0dhcCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChnYXAgPiAwKSB7XG4gICAgICAgIC8vIFxcQGFyZ2FycmF5Y3JcbiAgICAgICAgZ2FwICs9IGFyc3RydXREZXB0aDtcblxuICAgICAgICBpZiAoZGVwdGggPCBnYXApIHtcbiAgICAgICAgICBkZXB0aCA9IGdhcDsgLy8gXFxAeGFyZ2FycmF5Y3JcbiAgICAgICAgfVxuXG4gICAgICAgIGdhcCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBJbiBBTVMgbXVsdGlsaW5lIGVudmlyb25tZW50cyBzdWNoIGFzIGFsaWduZWQgYW5kIGdhdGhlcmVkLCByb3dzXG4gICAgLy8gY29ycmVzcG9uZCB0byBsaW5lcyB0aGF0IGhhdmUgYWRkaXRpb25hbCBcXGpvdCBhZGRlZCB0byB0aGVcbiAgICAvLyBcXGJhc2VsaW5lc2tpcCB2aWEgXFxvcGVudXAuXG5cblxuICAgIGlmIChncm91cC5hZGRKb3QpIHtcbiAgICAgIGRlcHRoICs9IGpvdDtcbiAgICB9XG5cbiAgICBvdXRyb3cuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIG91dHJvdy5kZXB0aCA9IGRlcHRoO1xuICAgIHRvdGFsSGVpZ2h0ICs9IGhlaWdodDtcbiAgICBvdXRyb3cucG9zID0gdG90YWxIZWlnaHQ7XG4gICAgdG90YWxIZWlnaHQgKz0gZGVwdGggKyBnYXA7IC8vIFxcQHlhcmdhcnJheWNyXG5cbiAgICBib2R5W3JdID0gb3V0cm93OyAvLyBTZXQgYSBwb3NpdGlvbiBmb3IgXFxobGluZShzKSwgaWYgYW55LlxuXG4gICAgc2V0SExpbmVQb3MoaExpbmVzQmVmb3JlUm93W3IgKyAxXSk7XG4gIH1cblxuICB2YXIgb2Zmc2V0ID0gdG90YWxIZWlnaHQgLyAyICsgb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG4gIHZhciBjb2xEZXNjcmlwdGlvbnMgPSBncm91cC5jb2xzIHx8IFtdO1xuICB2YXIgY29scyA9IFtdO1xuICB2YXIgY29sU2VwO1xuICB2YXIgY29sRGVzY3JOdW07XG5cbiAgZm9yIChjID0gMCwgY29sRGVzY3JOdW0gPSAwOyAvLyBDb250aW51ZSB3aGlsZSBlaXRoZXIgdGhlcmUgYXJlIG1vcmUgY29sdW1ucyBvciBtb3JlIGNvbHVtblxuICAvLyBkZXNjcmlwdGlvbnMsIHNvIHRyYWlsaW5nIHNlcGFyYXRvcnMgZG9uJ3QgZ2V0IGxvc3QuXG4gIGMgPCBuYyB8fCBjb2xEZXNjck51bSA8IGNvbERlc2NyaXB0aW9ucy5sZW5ndGg7ICsrYywgKytjb2xEZXNjck51bSkge1xuICAgIHZhciBjb2xEZXNjciA9IGNvbERlc2NyaXB0aW9uc1tjb2xEZXNjck51bV0gfHwge307XG4gICAgdmFyIGZpcnN0U2VwYXJhdG9yID0gdHJ1ZTtcblxuICAgIHdoaWxlIChjb2xEZXNjci50eXBlID09PSBcInNlcGFyYXRvclwiKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlcGFyYXRvciBpbiBhIHJvdywgYWRkIGEgc3BhY2VcbiAgICAgIC8vIGJldHdlZW4gdGhlbS5cbiAgICAgIGlmICghZmlyc3RTZXBhcmF0b3IpIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRvdWJsZVJ1bGVTZXAgKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sRGVzY3Iuc2VwYXJhdG9yID09PSBcInxcIiB8fCBjb2xEZXNjci5zZXBhcmF0b3IgPT09IFwiOlwiKSB7XG4gICAgICAgIHZhciBsaW5lVHlwZSA9IGNvbERlc2NyLnNlcGFyYXRvciA9PT0gXCJ8XCIgPyBcInNvbGlkXCIgOiBcImRhc2hlZFwiO1xuICAgICAgICB2YXIgc2VwYXJhdG9yID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1widmVydGljYWwtc2VwYXJhdG9yXCJdLCBbXSwgb3B0aW9ucyk7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS5oZWlnaHQgPSB0b3RhbEhlaWdodCArIFwiZW1cIjtcbiAgICAgICAgc2VwYXJhdG9yLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSBydWxlVGhpY2tuZXNzICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUuYm9yZGVyUmlnaHRTdHlsZSA9IGxpbmVUeXBlO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUubWFyZ2luID0gXCIwIC1cIiArIHJ1bGVUaGlja25lc3MgLyAyICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUudmVydGljYWxBbGlnbiA9IC0odG90YWxIZWlnaHQgLSBvZmZzZXQpICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goc2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgc2VwYXJhdG9yIHR5cGU6IFwiICsgY29sRGVzY3Iuc2VwYXJhdG9yKTtcbiAgICAgIH1cblxuICAgICAgY29sRGVzY3JOdW0rKztcbiAgICAgIGNvbERlc2NyID0gY29sRGVzY3JpcHRpb25zW2NvbERlc2NyTnVtXSB8fCB7fTtcbiAgICAgIGZpcnN0U2VwYXJhdG9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGMgPj0gbmMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBzZXB3aWR0aCA9IHZvaWQgMDtcblxuICAgIGlmIChjID4gMCB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnByZWdhcCwgYXJyYXljb2xzZXApO1xuXG4gICAgICBpZiAoc2Vwd2lkdGggIT09IDApIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gc2Vwd2lkdGggKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb2wgPSBbXTtcblxuICAgIGZvciAociA9IDA7IHIgPCBucjsgKytyKSB7XG4gICAgICB2YXIgcm93ID0gYm9keVtyXTtcbiAgICAgIHZhciBlbGVtID0gcm93W2NdO1xuXG4gICAgICBpZiAoIWVsZW0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBzaGlmdCA9IHJvdy5wb3MgLSBvZmZzZXQ7XG4gICAgICBlbGVtLmRlcHRoID0gcm93LmRlcHRoO1xuICAgICAgZWxlbS5oZWlnaHQgPSByb3cuaGVpZ2h0O1xuICAgICAgY29sLnB1c2goe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZWxlbSxcbiAgICAgICAgc2hpZnQ6IHNoaWZ0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb2wgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IGNvbFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIGNvbCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImNvbC1hbGlnbi1cIiArIChjb2xEZXNjci5hbGlnbiB8fCBcImNcIildLCBbY29sXSk7XG4gICAgY29scy5wdXNoKGNvbCk7XG5cbiAgICBpZiAoYyA8IG5jIC0gMSB8fCBncm91cC5oc2tpcEJlZm9yZUFuZEFmdGVyKSB7XG4gICAgICBzZXB3aWR0aCA9IHV0aWxzLmRlZmx0KGNvbERlc2NyLnBvc3RnYXAsIGFycmF5Y29sc2VwKTtcblxuICAgICAgaWYgKHNlcHdpZHRoICE9PSAwKSB7XG4gICAgICAgIGNvbFNlcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImFycmF5Y29sc2VwXCJdLCBbXSk7XG4gICAgICAgIGNvbFNlcC5zdHlsZS53aWR0aCA9IHNlcHdpZHRoICsgXCJlbVwiO1xuICAgICAgICBjb2xzLnB1c2goY29sU2VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXRhYmxlXCJdLCBjb2xzKTsgLy8gQWRkIFxcaGxpbmUocyksIGlmIGFueS5cblxuICBpZiAoaGxpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImhsaW5lXCIsIG9wdGlvbnMsIHJ1bGVUaGlja25lc3MpO1xuICAgIHZhciBkYXNoZXMgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJoZGFzaGxpbmVcIiwgb3B0aW9ucywgcnVsZVRoaWNrbmVzcyk7XG4gICAgdmFyIHZMaXN0RWxlbXMgPSBbe1xuICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICBlbGVtOiBib2R5LFxuICAgICAgc2hpZnQ6IDBcbiAgICB9XTtcblxuICAgIHdoaWxlIChobGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGhsaW5lID0gaGxpbmVzLnBvcCgpO1xuICAgICAgdmFyIGxpbmVTaGlmdCA9IGhsaW5lLnBvcyAtIG9mZnNldDtcblxuICAgICAgaWYgKGhsaW5lLmlzRGFzaGVkKSB7XG4gICAgICAgIHZMaXN0RWxlbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogZGFzaGVzLFxuICAgICAgICAgIHNoaWZ0OiBsaW5lU2hpZnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2TGlzdEVsZW1zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGxpbmUsXG4gICAgICAgICAgc2hpZnQ6IGxpbmVTaGlmdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBib2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiB2TGlzdEVsZW1zXG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW2JvZHldLCBvcHRpb25zKTtcbn07XG5cbnZhciBhbGlnbk1hcCA9IHtcbiAgYzogXCJjZW50ZXIgXCIsXG4gIGw6IFwibGVmdCBcIixcbiAgcjogXCJyaWdodCBcIlxufTtcblxudmFyIGFycmF5X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChyb3cpIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdHJcIiwgcm93Lm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGNlbGwsIG9wdGlvbnMpXSk7XG4gICAgfSkpO1xuICB9KSk7IC8vIFNldCBjb2x1bW4gYWxpZ25tZW50LCByb3cgc3BhY2luZywgY29sdW1uIHNwYWNpbmcsIGFuZFxuICAvLyBhcnJheSBsaW5lcyBieSBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhlIHRhYmxlIGVsZW1lbnQuXG4gIC8vIFNldCB0aGUgcm93IHNwYWNpbmcuIEluIE1hdGhNTCwgd2Ugc3BlY2lmeSBhIGdhcCBkaXN0YW5jZS5cbiAgLy8gV2UgZG8gbm90IHVzZSByb3dHYXBbXSBiZWNhdXNlIE1hdGhNTCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlc1xuICAvLyBjZWxsIGhlaWdodCB3aXRoIHRoZSBoZWlnaHQvZGVwdGggb2YgdGhlIGVsZW1lbnQgY29udGVudC5cbiAgLy8gTGFUZVggXFxhcnJheXN0cmV0Y2ggbXVsdGlwbGllcyB0aGUgcm93IGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlLlxuICAvLyBXZSBzaW11bGF0ZSB0aGlzIGJ5IGFkZGluZyAoYXJyYXlzdHJldGNoIC0gMSllbSB0byB0aGUgZ2FwLiBUaGlzXG4gIC8vIGRvZXMgYSByZWFzb25hYmxlIGpvYiBvZiBhZGp1c3RpbmcgYXJyYXlzIGNvbnRhaW5pbmcgMSBlbSB0YWxsIGNvbnRlbnQuXG4gIC8vIFRoZSAwLjE2IGFuZCAwLjA5IHZhbHVlcyBhcmUgZm91bmQgZW1wcmljYWxseS4gVGhleSBwcm9kdWNlIGFuIGFycmF5XG4gIC8vIHNpbWlsYXIgdG8gTGFUZVggYW5kIGluIHdoaWNoIGNvbnRlbnQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggXFxoaW5lcy5cblxuICB2YXIgZ2FwID0gZ3JvdXAuYXJyYXlzdHJldGNoID09PSAwLjUgPyAwLjEgLy8ge3NtYWxsbWF0cml4fSwge3N1YmFycmF5fVxuICA6IDAuMTYgKyBncm91cC5hcnJheXN0cmV0Y2ggLSAxICsgKGdyb3VwLmFkZEpvdCA/IDAuMDkgOiAwKTtcbiAgdGFibGUuc2V0QXR0cmlidXRlKFwicm93c3BhY2luZ1wiLCBnYXAgKyBcImVtXCIpOyAvLyBNYXRoTUwgdGFibGUgbGluZXMgZ28gb25seSBiZXR3ZWVuIGNlbGxzLlxuICAvLyBUbyBwbGFjZSBhIGxpbmUgb24gYW4gZWRnZSB3ZSdsbCB1c2UgPG1lbmNsb3NlPiwgaWYgbmVjZXNzYXJ5LlxuXG4gIHZhciBtZW5jbG9zZSA9IFwiXCI7XG4gIHZhciBhbGlnbiA9IFwiXCI7XG5cbiAgaWYgKGdyb3VwLmNvbHMpIHtcbiAgICAvLyBGaW5kIGNvbHVtbiBhbGlnbm1lbnQsIGNvbHVtbiBzcGFjaW5nLCBhbmQgIHZlcnRpY2FsIGxpbmVzLlxuICAgIHZhciBjb2xzID0gZ3JvdXAuY29scztcbiAgICB2YXIgY29sdW1uTGluZXMgPSBcIlwiO1xuICAgIHZhciBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgdmFyIGlTdGFydCA9IDA7XG4gICAgdmFyIGlFbmQgPSBjb2xzLmxlbmd0aDtcblxuICAgIGlmIChjb2xzWzBdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwidG9wIFwiO1xuICAgICAgaVN0YXJ0ID0gMTtcbiAgICB9XG5cbiAgICBpZiAoY29sc1tjb2xzLmxlbmd0aCAtIDFdLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIG1lbmNsb3NlICs9IFwiYm90dG9tIFwiO1xuICAgICAgaUVuZCAtPSAxO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSBpU3RhcnQ7IGkgPCBpRW5kOyBpKyspIHtcbiAgICAgIGlmIChjb2xzW2ldLnR5cGUgPT09IFwiYWxpZ25cIikge1xuICAgICAgICBhbGlnbiArPSBhbGlnbk1hcFtjb2xzW2ldLmFsaWduXTtcblxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IFwibm9uZSBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZUeXBlV2FzQWxpZ24gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChjb2xzW2ldLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgICAgLy8gTWF0aE1MIGFjY2VwdHMgb25seSBzaW5nbGUgbGluZXMgYmV0d2VlbiBjZWxscy5cbiAgICAgICAgLy8gU28gd2UgcmVhZCBvbmx5IHRoZSBmaXJzdCBvZiBjb25zZWN1dGl2ZSBzZXBhcmF0b3JzLlxuICAgICAgICBpZiAocHJldlR5cGVXYXNBbGlnbikge1xuICAgICAgICAgIGNvbHVtbkxpbmVzICs9IGNvbHNbaV0uc2VwYXJhdG9yID09PSBcInxcIiA/IFwic29saWQgXCIgOiBcImRhc2hlZCBcIjtcbiAgICAgICAgICBwcmV2VHlwZVdhc0FsaWduID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5hbGlnblwiLCBhbGlnbi50cmltKCkpO1xuXG4gICAgaWYgKC9bc2RdLy50ZXN0KGNvbHVtbkxpbmVzKSkge1xuICAgICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1ubGluZXNcIiwgY29sdW1uTGluZXMudHJpbSgpKTtcbiAgICB9XG4gIH0gLy8gU2V0IGNvbHVtbiBzcGFjaW5nLlxuXG5cbiAgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduXCIpIHtcbiAgICB2YXIgX2NvbHMgPSBncm91cC5jb2xzIHx8IFtdO1xuXG4gICAgdmFyIHNwYWNpbmcgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IF9jb2xzLmxlbmd0aDsgX2krKykge1xuICAgICAgc3BhY2luZyArPSBfaSAlIDIgPyBcIjBlbSBcIiA6IFwiMWVtIFwiO1xuICAgIH1cblxuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgc3BhY2luZy50cmltKCkpO1xuICB9IGVsc2UgaWYgKGdyb3VwLmNvbFNlcGFyYXRpb25UeXBlID09PSBcImFsaWduYXRcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwZW1cIik7XG4gIH0gZWxzZSBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIwLjI3NzhlbVwiKTtcbiAgfSBlbHNlIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5zcGFjaW5nXCIsIFwiMWVtXCIpO1xuICB9IC8vIEFkZHJlc3MgXFxobGluZSBhbmQgXFxoZGFzaGxpbmVcblxuXG4gIHZhciByb3dMaW5lcyA9IFwiXCI7XG4gIHZhciBobGluZXMgPSBncm91cC5oTGluZXNCZWZvcmVSb3c7XG4gIG1lbmNsb3NlICs9IGhsaW5lc1swXS5sZW5ndGggPiAwID8gXCJsZWZ0IFwiIDogXCJcIjtcbiAgbWVuY2xvc2UgKz0gaGxpbmVzW2hsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggPiAwID8gXCJyaWdodCBcIiA6IFwiXCI7XG5cbiAgZm9yICh2YXIgX2kyID0gMTsgX2kyIDwgaGxpbmVzLmxlbmd0aCAtIDE7IF9pMisrKSB7XG4gICAgcm93TGluZXMgKz0gaGxpbmVzW19pMl0ubGVuZ3RoID09PSAwID8gXCJub25lIFwiIC8vIE1hdGhNTCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgbGluZSBiZXR3ZWVuIHJvd3MuIFJlYWQgb25lIGVsZW1lbnQuXG4gICAgOiBobGluZXNbX2kyXVswXSA/IFwiZGFzaGVkIFwiIDogXCJzb2xpZCBcIjtcbiAgfVxuXG4gIGlmICgvW3NkXS8udGVzdChyb3dMaW5lcykpIHtcbiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJyb3dsaW5lc1wiLCByb3dMaW5lcy50cmltKCkpO1xuICB9XG5cbiAgaWYgKG1lbmNsb3NlICE9PSBcIlwiKSB7XG4gICAgdGFibGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1lbmNsb3NlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIG1lbmNsb3NlLnRyaW0oKSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuYXJyYXlzdHJldGNoICYmIGdyb3VwLmFycmF5c3RyZXRjaCA8IDEpIHtcbiAgICAvLyBBIHNtYWxsIGFycmF5LiBXcmFwIGluIHNjcmlwdHN0eWxlIHNvIHJvdyBnYXAgaXMgbm90IHRvbyBsYXJnZS5cbiAgICB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIFt0YWJsZV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcInNjcmlwdGxldmVsXCIsIFwiMVwiKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn07IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBhbGlnbmVkIGFuZCBhbGlnbmVkYXQgZW52aXJvbm1lbnRzLlxuXG5cbnZhciBhcnJheV9hbGlnbmVkSGFuZGxlciA9IGZ1bmN0aW9uIGFsaWduZWRIYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgdmFyIGNvbHMgPSBbXTtcbiAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHtcbiAgICBjb2xzOiBjb2xzLFxuICAgIGFkZEpvdDogdHJ1ZVxuICB9LCBcImRpc3BsYXlcIik7IC8vIERldGVybWluaW5nIG51bWJlciBvZiBjb2x1bW5zLlxuICAvLyAxLiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ2l2ZW4sIHdlIHVzZSBpdCBhcyBhIG51bWJlciBvZiBjb2x1bW5zLFxuICAvLyAgICBhbmQgbWFrZXMgc3VyZSB0aGF0IGVhY2ggcm93IGRvZXNuJ3QgZXhjZWVkIHRoYXQgbnVtYmVyLlxuICAvLyAyLiBPdGhlcndpc2UsIGp1c3QgY291bnQgbnVtYmVyIG9mIGNvbHVtbnMgPSBtYXhpbXVtIG51bWJlclxuICAvLyAgICBvZiBjZWxscyBpbiBlYWNoIHJvdyAoXCJhbGlnbmVkXCIgbW9kZSAtLSBpc0FsaWduZWQgd2lsbCBiZSB0cnVlKS5cbiAgLy9cbiAgLy8gQXQgdGhlIHNhbWUgdGltZSwgcHJlcGVuZCBlbXB0eSBncm91cCB7fSBhdCBiZWdpbm5pbmcgb2YgZXZlcnkgc2Vjb25kXG4gIC8vIGNlbGwgaW4gZWFjaCByb3cgKHN0YXJ0aW5nIHdpdGggc2Vjb25kIGNlbGwpIHNvIHRoYXQgb3BlcmF0b3JzIGJlY29tZVxuICAvLyBiaW5hcnkuICBUaGlzIGJlaGF2aW9yIGlzIGltcGxlbWVudGVkIGluIGFtc21hdGgncyBcXHN0YXJ0QGFsaWduZWQuXG5cbiAgdmFyIG51bU1hdGhzO1xuICB2YXIgbnVtQ29scyA9IDA7XG4gIHZhciBlbXB0eUdyb3VwID0ge1xuICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXG4gICAgYm9keTogW11cbiAgfTtcbiAgdmFyIG9yZGdyb3VwID0gY2hlY2tOb2RlVHlwZShhcmdzWzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gIGlmIChvcmRncm91cCkge1xuICAgIHZhciBhcmcwID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZ3JvdXAuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRleHRvcmQgPSBhc3NlcnROb2RlVHlwZShvcmRncm91cC5ib2R5W2ldLCBcInRleHRvcmRcIik7XG4gICAgICBhcmcwICs9IHRleHRvcmQudGV4dDtcbiAgICB9XG5cbiAgICBudW1NYXRocyA9IE51bWJlcihhcmcwKTtcbiAgICBudW1Db2xzID0gbnVtTWF0aHMgKiAyO1xuICB9XG5cbiAgdmFyIGlzQWxpZ25lZCA9ICFudW1Db2xzO1xuICByZXMuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAxOyBfaTMgPCByb3cubGVuZ3RoOyBfaTMgKz0gMikge1xuICAgICAgLy8gTW9kaWZ5IG9yZGdyb3VwIG5vZGUgd2l0aGluIHN0eWxpbmcgbm9kZVxuICAgICAgdmFyIHN0eWxpbmcgPSBhc3NlcnROb2RlVHlwZShyb3dbX2kzXSwgXCJzdHlsaW5nXCIpO1xuXG4gICAgICB2YXIgX29yZGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3R5bGluZy5ib2R5WzBdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgICBfb3JkZ3JvdXAuYm9keS51bnNoaWZ0KGVtcHR5R3JvdXApO1xuICAgIH1cblxuICAgIGlmICghaXNBbGlnbmVkKSB7XG4gICAgICAvLyBDYXNlIDFcbiAgICAgIHZhciBjdXJNYXRocyA9IHJvdy5sZW5ndGggLyAyO1xuXG4gICAgICBpZiAobnVtTWF0aHMgPCBjdXJNYXRocykge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJUb28gbWFueSBtYXRoIGluIGEgcm93OiBcIiArIChcImV4cGVjdGVkIFwiICsgbnVtTWF0aHMgKyBcIiwgYnV0IGdvdCBcIiArIGN1ck1hdGhzKSwgcm93WzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG51bUNvbHMgPCByb3cubGVuZ3RoKSB7XG4gICAgICAvLyBDYXNlIDJcbiAgICAgIG51bUNvbHMgPSByb3cubGVuZ3RoO1xuICAgIH1cbiAgfSk7IC8vIEFkanVzdGluZyBhbGlnbm1lbnQuXG4gIC8vIEluIGFsaWduZWQgbW9kZSwgd2UgYWRkIG9uZSBcXHFxdWFkIGJldHdlZW4gY29sdW1ucztcbiAgLy8gb3RoZXJ3aXNlIHdlIGFkZCBub3RoaW5nLlxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bUNvbHM7ICsrX2k0KSB7XG4gICAgdmFyIGFsaWduID0gXCJyXCI7XG4gICAgdmFyIHByZWdhcCA9IDA7XG5cbiAgICBpZiAoX2k0ICUgMiA9PT0gMSkge1xuICAgICAgYWxpZ24gPSBcImxcIjtcbiAgICB9IGVsc2UgaWYgKF9pNCA+IDAgJiYgaXNBbGlnbmVkKSB7XG4gICAgICAvLyBcImFsaWduZWRcIiBtb2RlLlxuICAgICAgcHJlZ2FwID0gMTsgLy8gYWRkIG9uZSBcXHF1YWRcbiAgICB9XG5cbiAgICBjb2xzW19pNF0gPSB7XG4gICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICBhbGlnbjogYWxpZ24sXG4gICAgICBwcmVnYXA6IHByZWdhcCxcbiAgICAgIHBvc3RnYXA6IDBcbiAgICB9O1xuICB9XG5cbiAgcmVzLmNvbFNlcGFyYXRpb25UeXBlID0gaXNBbGlnbmVkID8gXCJhbGlnblwiIDogXCJhbGlnbmF0XCI7XG4gIHJldHVybiByZXM7XG59OyAvLyBBcnJheXMgYXJlIHBhcnQgb2YgTGFUZVgsIGRlZmluZWQgaW4gbHR0YWIuZHR4IHNvIGl0cyBkb2N1bWVudGF0aW9uXG4vLyBpcyBwYXJ0IG9mIHRoZSBzb3VyY2UyZS5wZGYgZmlsZSBvZiBMYVRlWDJlIHNvdXJjZSBkb2N1bWVudGF0aW9uLlxuLy8ge2RhcnJheX0gaXMgYW4ge2FycmF5fSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBuY2NtYXRoLnN0eS5cblxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImFycmF5XCIsIFwiZGFycmF5XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgLy8gU2luY2Ugbm8gdHlwZXMgYXJlIHNwZWNpZmllZCBhYm92ZSwgdGhlIHR3byBwb3NzaWJpbGl0aWVzIGFyZVxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIHdyYXBwZWQgaW4ge30gb3IgW10sIGluIHdoaWNoIGNhc2UgUGFyc2VyJ3NcbiAgICAvLyAgIHBhcnNlR3JvdXAoKSByZXR1cm5zIGFuIFwib3JkZ3JvdXBcIiB3cmFwcGluZyBzb21lIHN5bWJvbCBub2RlLlxuICAgIC8vIC0gVGhlIGFyZ3VtZW50IGlzIGEgYmFyZSBzeW1ib2wgbm9kZS5cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7XG5cbiAgICAgIGlmIChcImxjclwiLmluZGV4T2YoY2EpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICBhbGlnbjogY2FcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2EgPT09IFwifFwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBzZXBhcmF0b3I6IFwifFwiXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGNhID09PSBcIjpcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgc2VwYXJhdG9yOiBcIjpcIlxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIGNvbHVtbiBhbGlnbm1lbnQ6IFwiICsgY2EsIG5kZSk7XG4gICAgfSk7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIGNvbHM6IGNvbHMsXG4gICAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiB0cnVlIC8vIFxcQHByZWFtYmxlIGluIGx0dGFiLmR0eFxuXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBUaGUgbWF0cml4IGVudmlyb25tZW50cyBvZiBhbXNtYXRoIGJ1aWxkcyBvbiB0aGUgYXJyYXkgZW52aXJvbm1lbnRcbi8vIG9mIExhVGVYLCB3aGljaCBpcyBkaXNjdXNzZWQgYWJvdmUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wibWF0cml4XCIsIFwicG1hdHJpeFwiLCBcImJtYXRyaXhcIiwgXCJCbWF0cml4XCIsIFwidm1hdHJpeFwiLCBcIlZtYXRyaXhcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgZGVsaW1pdGVycyA9IHtcbiAgICAgIFwibWF0cml4XCI6IG51bGwsXG4gICAgICBcInBtYXRyaXhcIjogW1wiKFwiLCBcIilcIl0sXG4gICAgICBcImJtYXRyaXhcIjogW1wiW1wiLCBcIl1cIl0sXG4gICAgICBcIkJtYXRyaXhcIjogW1wiXFxcXHtcIiwgXCJcXFxcfVwiXSxcbiAgICAgIFwidm1hdHJpeFwiOiBbXCJ8XCIsIFwifFwiXSxcbiAgICAgIFwiVm1hdHJpeFwiOiBbXCJcXFxcVmVydFwiLCBcIlxcXFxWZXJ0XCJdXG4gICAgfVtjb250ZXh0LmVudk5hbWVdOyAvLyBcXGhza2lwIC1cXGFycmF5Y29sc2VwIGluIGFtc21hdGhcblxuICAgIHZhciBwYXlsb2FkID0ge1xuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2VcbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiBkZWxpbWl0ZXJzID8ge1xuICAgICAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcbiAgICAgIGJvZHk6IFtyZXNdLFxuICAgICAgbGVmdDogZGVsaW1pdGVyc1swXSxcbiAgICAgIHJpZ2h0OiBkZWxpbWl0ZXJzWzFdLFxuICAgICAgcmlnaHRDb2xvcjogdW5kZWZpbmVkIC8vIFxccmlnaHQgdW5pbmZsdWVuY2VkIGJ5IFxcY29sb3IgaW4gYXJyYXlcblxuICAgIH0gOiByZXM7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7XG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcInNtYWxsbWF0cml4XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHBheWxvYWQsIFwic2NyaXB0XCIpO1xuICAgIHJlcy5jb2xTZXBhcmF0aW9uVHlwZSA9IFwic21hbGxcIjtcbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJzdWJhcnJheVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIC8vIFBhcnNpbmcgb2Yge3N1YmFycmF5fSBpcyBzaW1pbGFyIHRvIHthcnJheX1cbiAgICB2YXIgc3ltTm9kZSA9IGNoZWNrU3ltYm9sTm9kZVR5cGUoYXJnc1swXSk7XG4gICAgdmFyIGNvbGFsaWduID0gc3ltTm9kZSA/IFthcmdzWzBdXSA6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIikuYm9keTtcbiAgICB2YXIgY29scyA9IGNvbGFsaWduLm1hcChmdW5jdGlvbiAobmRlKSB7XG4gICAgICB2YXIgbm9kZSA9IGFzc2VydFN5bWJvbE5vZGVUeXBlKG5kZSk7XG4gICAgICB2YXIgY2EgPSBub2RlLnRleHQ7IC8vIHtzdWJhcnJheX0gb25seSByZWNvZ25pemVzIFwibFwiICYgXCJjXCJcblxuICAgICAgaWYgKFwibGNcIi5pbmRleE9mKGNhKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgICAgYWxpZ246IGNhXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gY29sdW1uIGFsaWdubWVudDogXCIgKyBjYSwgbmRlKTtcbiAgICB9KTtcblxuICAgIGlmIChjb2xzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIntzdWJhcnJheX0gY2FuIGNvbnRhaW4gb25seSBvbmUgY29sdW1uXCIpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB7XG4gICAgICBjb2xzOiBjb2xzLFxuICAgICAgaHNraXBCZWZvcmVBbmRBZnRlcjogZmFsc2UsXG4gICAgICBhcnJheXN0cmV0Y2g6IDAuNVxuICAgIH07XG4gICAgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcInNjcmlwdFwiKTtcblxuICAgIGlmIChyZXMuYm9keVswXS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJ7c3ViYXJyYXl9IGNhbiBjb250YWluIG9ubHkgb25lIGNvbHVtblwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGNhc2VzIGVudmlyb25tZW50IChpbiBhbXNtYXRoLnN0eSkgaXMgYWxtb3N0IGVxdWl2YWxlbnQgdG9cbi8vIFxcZGVmXFxhcnJheXN0cmV0Y2h7MS4yfSVcbi8vIFxcbGVmdFxce1xcYmVnaW57YXJyYXl9e0B7fWxAe1xccXVhZH1sQHt9fSDigKYgXFxlbmR7YXJyYXl9XFxyaWdodC5cbi8vIHtkY2FzZXN9IGlzIGEge2Nhc2VzfSBlbnZpcm9ubWVudCB3aGVyZSBjZWxscyBhcmUgc2V0IGluIFxcZGlzcGxheXN0eWxlLFxuLy8gYXMgZGVmaW5lZCBpbiBtYXRodG9vbHMuc3R5LlxuXG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcImNhc2VzXCIsIFwiZGNhc2VzXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0KSB7XG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBhcnJheXN0cmV0Y2g6IDEuMixcbiAgICAgIGNvbHM6IFt7XG4gICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgYWxpZ246IFwibFwiLFxuICAgICAgICBwcmVnYXA6IDAsXG4gICAgICAgIC8vIFRPRE8oa2V2aW5iKSBnZXQgdGhlIGN1cnJlbnQgc3R5bGUuXG4gICAgICAgIC8vIEZvciBub3cgd2UgdXNlIHRoZSBtZXRyaWNzIGZvciBURVhUIHN0eWxlIHdoaWNoIGlzIHdoYXQgd2Ugd2VyZVxuICAgICAgICAvLyBkb2luZyBiZWZvcmUuICBCZWZvcmUgYXR0ZW1wdGluZyB0byBnZXQgdGhlIGN1cnJlbnQgc3R5bGUgd2VcbiAgICAgICAgLy8gc2hvdWxkIGxvb2sgYXQgVGVYJ3MgYmVoYXZpb3IgZXNwZWNpYWxseSBmb3IgXFxvdmVyIGFuZCBtYXRyaWNlcy5cbiAgICAgICAgcG9zdGdhcDogMS4wXG4gICAgICAgIC8qIDFlbSBxdWFkICovXG5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJsXCIsXG4gICAgICAgIHByZWdhcDogMCxcbiAgICAgICAgcG9zdGdhcDogMFxuICAgICAgfV1cbiAgICB9O1xuICAgIHZhciByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCBwYXlsb2FkLCBkQ2VsbFN0eWxlKGNvbnRleHQuZW52TmFtZSkpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxuICAgICAgYm9keTogW3Jlc10sXG4gICAgICBsZWZ0OiBcIlxcXFx7XCIsXG4gICAgICByaWdodDogXCIuXCIsXG4gICAgICByaWdodENvbG9yOiB1bmRlZmluZWRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBbiBhbGlnbmVkIGVudmlyb25tZW50IGlzIGxpa2UgdGhlIGFsaWduKiBlbnZpcm9ubWVudFxuLy8gZXhjZXB0IGl0IG9wZXJhdGVzIHdpdGhpbiBtYXRoIG1vZGUuXG4vLyBOb3RlIHRoYXQgd2UgYXNzdW1lIFxcbm9tYWxsaW5lc2tpcGxpbWl0IHRvIGJlIHplcm8sXG4vLyBzbyB0aGF0IFxcc3RydXRAIGlzIHRoZSBzYW1lIGFzIFxcc3RydXQuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBBIGdhdGhlcmVkIGVudmlyb25tZW50IGlzIGxpa2UgYW4gYXJyYXkgZW52aXJvbm1lbnQgd2l0aCBvbmUgY2VudGVyZWRcbi8vIGNvbHVtbiwgYnV0IHdoZXJlIHJvd3MgYXJlIGNvbnNpZGVyZWQgbGluZXMgc28gZ2V0IFxcam90IGxpbmUgc3BhY2luZ1xuLy8gYW5kIGNvbnRlbnRzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiZ2F0aGVyZWRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgY29sczogW3tcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJjXCJcbiAgICAgIH1dLFxuICAgICAgYWRkSm90OiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcmVzLCBcImRpc3BsYXlcIik7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIGFsaWduYXQgZW52aXJvbm1lbnQgaXMgbGlrZSBhbiBhbGlnbiBlbnZpcm9ubWVudCwgYnV0IG9uZSBtdXN0IGV4cGxpY2l0bHlcbi8vIHNwZWNpZnkgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiBlYWNoIHJvdywgYW5kIGNhbiBhZGp1c3Qgc3BhY2luZyBiZXR3ZWVuXG4vLyBlYWNoIGNvbHVtbnMuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYWxpZ25lZGF0XCJdLFxuICAvLyBPbmUgZm9yIG51bWJlcmVkIGFuZCBmb3IgdW5udW1iZXJlZDtcbiAgLy8gYnV0LCBLYVRlWCBkb2Vzbid0IHN1cHBvcnRzIG1hdGggbnVtYmVyaW5nIHlldCxcbiAgLy8gdGhleSBtYWtlIG5vIGRpZmZlcmVuY2UgZm9yIG5vdy5cbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGFycmF5X2FsaWduZWRIYW5kbGVyLFxuICBodG1sQnVpbGRlcjogYXJyYXlfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGFycmF5X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBDYXRjaCBcXGhsaW5lIG91dHNpZGUgYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGlzIGlzLlxuICBuYW1lczogW1wiXFxcXGhsaW5lXCIsIFwiXFxcXGhkYXNobGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoY29udGV4dC5mdW5jTmFtZSArIFwiIHZhbGlkIG9ubHkgd2l0aGluIGFycmF5IGVudmlyb25tZW50XCIpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Vudmlyb25tZW50cy5qc1xuXG52YXIgZW52aXJvbm1lbnRzID0gX2Vudmlyb25tZW50cztcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19lbnZpcm9ubWVudHMgPSAoZW52aXJvbm1lbnRzKTsgLy8gQWxsIGVudmlyb25tZW50IGRlZmluaXRpb25zIHNob3VsZCBiZSBpbXBvcnRlZCBiZWxvd1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9lbnZpcm9ubWVudC5qc1xuXG5cblxuIC8vIEVudmlyb25tZW50IGRlbGltaXRlcnMuIEhUTUwvTWF0aE1MIHJlbmRlcmluZyBpcyBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nXG4vLyBkZWZpbmVFbnZpcm9ubWVudCBkZWZpbml0aW9ucy5cbi8vICRGbG93Rml4TWUsIFwiZW52aXJvbm1lbnRcIiBoYW5kbGVyIHJldHVybnMgYW4gZW52aXJvbm1lbnQgUGFyc2VOb2RlXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbnZpcm9ubWVudFwiLFxuICBuYW1lczogW1wiXFxcXGJlZ2luXCIsIFwiXFxcXGVuZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFyZ1R5cGVzOiBbXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBuYW1lR3JvdXAgPSBhcmdzWzBdO1xuXG4gICAgaWYgKG5hbWVHcm91cC50eXBlICE9PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgZW52aXJvbm1lbnQgbmFtZVwiLCBuYW1lR3JvdXApO1xuICAgIH1cblxuICAgIHZhciBlbnZOYW1lID0gXCJcIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZUdyb3VwLmJvZHkubGVuZ3RoOyArK2kpIHtcbiAgICAgIGVudk5hbWUgKz0gYXNzZXJ0Tm9kZVR5cGUobmFtZUdyb3VwLmJvZHlbaV0sIFwidGV4dG9yZFwiKS50ZXh0O1xuICAgIH1cblxuICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcYmVnaW5cIikge1xuICAgICAgLy8gYmVnaW4uLi5lbmQgaXMgc2ltaWxhciB0byBsZWZ0Li4ucmlnaHRcbiAgICAgIGlmICghc3JjX2Vudmlyb25tZW50cy5oYXNPd25Qcm9wZXJ0eShlbnZOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBzdWNoIGVudmlyb25tZW50OiBcIiArIGVudk5hbWUsIG5hbWVHcm91cCk7XG4gICAgICB9IC8vIEJ1aWxkIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuIEFyZ3VtZW50cyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gd2lsbFxuICAgICAgLy8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGJlZ2luIGFuZCBlbmQgbWV0aG9kcyB1c2luZyBwcm9wZXJ0aWVzLlxuXG5cbiAgICAgIHZhciBlbnYgPSBzcmNfZW52aXJvbm1lbnRzW2Vudk5hbWVdO1xuXG4gICAgICB2YXIgX3BhcnNlciRwYXJzZUFyZ3VtZW50ID0gcGFyc2VyLnBhcnNlQXJndW1lbnRzKFwiXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifVwiLCBlbnYpLFxuICAgICAgICAgIF9hcmdzID0gX3BhcnNlciRwYXJzZUFyZ3VtZW50LmFyZ3MsXG4gICAgICAgICAgb3B0QXJncyA9IF9wYXJzZXIkcGFyc2VBcmd1bWVudC5vcHRBcmdzO1xuXG4gICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAgIGVudk5hbWU6IGVudk5hbWUsXG4gICAgICAgIHBhcnNlcjogcGFyc2VyXG4gICAgICB9O1xuICAgICAgdmFyIHJlc3VsdCA9IGVudi5oYW5kbGVyKGNvbnRleHQsIF9hcmdzLCBvcHRBcmdzKTtcbiAgICAgIHBhcnNlci5leHBlY3QoXCJcXFxcZW5kXCIsIGZhbHNlKTtcbiAgICAgIHZhciBlbmROYW1lVG9rZW4gPSBwYXJzZXIubmV4dFRva2VuO1xuICAgICAgdmFyIGVuZCA9IGFzc2VydE5vZGVUeXBlKHBhcnNlci5wYXJzZUZ1bmN0aW9uKCksIFwiZW52aXJvbm1lbnRcIik7XG5cbiAgICAgIGlmIChlbmQubmFtZSAhPT0gZW52TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJNaXNtYXRjaDogXFxcXGJlZ2lue1wiICsgZW52TmFtZSArIFwifSBtYXRjaGVkIGJ5IFxcXFxlbmR7XCIgKyBlbmQubmFtZSArIFwifVwiLCBlbmROYW1lVG9rZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVudmlyb25tZW50XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG5hbWU6IGVudk5hbWUsXG4gICAgICBuYW1lR3JvdXA6IG5hbWVHcm91cFxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL21jbGFzcy5qc1xuXG5cblxuXG5cblxudmFyIG1jbGFzc19tYWtlU3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuO1xuXG5mdW5jdGlvbiBtY2xhc3NfaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgcmV0dXJuIG1jbGFzc19tYWtlU3BhbihbZ3JvdXAubWNsYXNzXSwgZWxlbWVudHMsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBtY2xhc3NfbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZTtcbiAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gIGlmIChncm91cC5tY2xhc3MgPT09IFwibWlubmVyXCIpIHtcbiAgICByZXR1cm4gbWF0aE1MVHJlZS5uZXdEb2N1bWVudEZyYWdtZW50KGlubmVyKTtcbiAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9yZFwiKSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1pXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIGlubmVyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdyb3VwLmlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICBub2RlID0gaW5uZXJbMF07XG4gICAgICBub2RlLnR5cGUgPSBcIm1vXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIGlubmVyKTtcbiAgICB9IC8vIFNldCBzcGFjaW5nIGJhc2VkIG9uIHdoYXQgaXMgdGhlIG1vc3QgbGlrZWx5IGFkamFjZW50IGF0b20gdHlwZS5cbiAgICAvLyBTZWUgVGVYYm9vayBwMTcwLlxuXG5cbiAgICBpZiAoZ3JvdXAubWNsYXNzID09PSBcIm1iaW5cIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMC4yMmVtXCI7IC8vIG1lZGl1bSBzcGFjZVxuXG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjIyZW1cIjtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtcHVuY3RcIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMGVtXCI7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwLjE3ZW1cIjsgLy8gdGhpbnNwYWNlXG4gICAgfSBlbHNlIGlmIChncm91cC5tY2xhc3MgPT09IFwibW9wZW5cIiB8fCBncm91cC5tY2xhc3MgPT09IFwibWNsb3NlXCIpIHtcbiAgICAgIG5vZGUuYXR0cmlidXRlcy5sc3BhY2UgPSBcIjBlbVwiO1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLnJzcGFjZSA9IFwiMGVtXCI7XG4gICAgfSAvLyBNYXRoTUwgPG1vPiBkZWZhdWx0IHNwYWNlIGlzIDUvMTggZW0sIHNvIDxtcmVsPiBuZWVkcyBubyBhY3Rpb24uXG4gICAgLy8gUmVmOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9NYXRoTUwvRWxlbWVudC9tb1xuXG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0gLy8gTWF0aCBjbGFzcyBjb21tYW5kcyBleGNlcHQgXFxtYXRob3BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWNsYXNzXCIsXG4gIG5hbWVzOiBbXCJcXFxcbWF0aG9yZFwiLCBcIlxcXFxtYXRoYmluXCIsIFwiXFxcXG1hdGhyZWxcIiwgXCJcXFxcbWF0aG9wZW5cIiwgXCJcXFxcbWF0aGNsb3NlXCIsIFwiXFxcXG1hdGhwdW5jdFwiLCBcIlxcXFxtYXRoaW5uZXJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWNsYXNzXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG1jbGFzczogXCJtXCIgKyBmdW5jTmFtZS5zdWJzdHIoNSksXG4gICAgICAvLyBUT0RPKGtldmluYik6IGRvbid0IHByZWZpeCB3aXRoICdtJ1xuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSksXG4gICAgICBpc0NoYXJhY3RlckJveDogdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogbWNsYXNzX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBtY2xhc3NfbWF0aG1sQnVpbGRlclxufSk7XG52YXIgYmlucmVsQ2xhc3MgPSBmdW5jdGlvbiBiaW5yZWxDbGFzcyhhcmcpIHtcbiAgLy8gXFxiaW5yZWxAIHNwYWNpbmcgdmFyaWVzIHdpdGggKGJpbnxyZWx8b3JkKSBvZiB0aGUgYXRvbSBpbiB0aGUgYXJndW1lbnQuXG4gIC8vIChieSByZW5kZXJpbmcgc2VwYXJhdGVseSBhbmQgd2l0aCB7fXMgYmVmb3JlIGFuZCBhZnRlciwgYW5kIG1lYXN1cmluZ1xuICAvLyB0aGUgY2hhbmdlIGluIHNwYWNpbmcpLiAgV2UnbGwgZG8gcm91Z2hseSB0aGUgc2FtZSBieSBkZXRlY3RpbmcgdGhlXG4gIC8vIGF0b20gdHlwZSBkaXJlY3RseS5cbiAgdmFyIGF0b20gPSBhcmcudHlwZSA9PT0gXCJvcmRncm91cFwiICYmIGFyZy5ib2R5Lmxlbmd0aCA/IGFyZy5ib2R5WzBdIDogYXJnO1xuXG4gIGlmIChhdG9tLnR5cGUgPT09IFwiYXRvbVwiICYmIChhdG9tLmZhbWlseSA9PT0gXCJiaW5cIiB8fCBhdG9tLmZhbWlseSA9PT0gXCJyZWxcIikpIHtcbiAgICByZXR1cm4gXCJtXCIgKyBhdG9tLmZhbWlseTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJtb3JkXCI7XG4gIH1cbn07IC8vIFxcQGJpbnJlbHt4fXt5fSByZW5kZXJzIGxpa2UgeSBidXQgYXMgbWJpbi9tcmVsL21vcmQgaWYgeCBpcyBtYmluL21yZWwvbW9yZC5cbi8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byBcXGJpbnJlbEB7eH1cXGJpbnJlbEBAe3l9IGluIEFNU1RlWC5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1jbGFzc1wiLFxuICBuYW1lczogW1wiXFxcXEBiaW5yZWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBiaW5yZWxDbGFzcyhhcmdzWzBdKSxcbiAgICAgIGJvZHk6IFthcmdzWzFdXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChhcmdzWzFdKVxuICAgIH07XG4gIH1cbn0pOyAvLyBCdWlsZCBhIHJlbGF0aW9uIG9yIHN0YWNrZWQgb3AgYnkgcGxhY2luZyBvbmUgc3ltYm9sIG9uIHRvcCBvZiBhbm90aGVyXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxzdGFja3JlbFwiLCBcIlxcXFxvdmVyc2V0XCIsIFwiXFxcXHVuZGVyc2V0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgdmFyIGJhc2VBcmcgPSBhcmdzWzFdO1xuICAgIHZhciBzaGlmdGVkQXJnID0gYXJnc1swXTtcbiAgICB2YXIgbWNsYXNzO1xuXG4gICAgaWYgKGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiKSB7XG4gICAgICAvLyBMYVRlWCBhcHBsaWVzIFxcYmlucmVsIHNwYWNpbmcgdG8gXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LlxuICAgICAgbWNsYXNzID0gYmlucmVsQ2xhc3MoYmFzZUFyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1jbGFzcyA9IFwibXJlbFwiOyAvLyBmb3IgXFxzdGFja3JlbFxuICAgIH1cblxuICAgIHZhciBiYXNlT3AgPSB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBiYXNlQXJnLm1vZGUsXG4gICAgICBsaW1pdHM6IHRydWUsXG4gICAgICBhbHdheXNIYW5kbGVTdXBTdWI6IHRydWUsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NCYXNlU2hpZnQ6IGZ1bmNOYW1lICE9PSBcIlxcXFxzdGFja3JlbFwiLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYmFzZUFyZylcbiAgICB9O1xuICAgIHZhciBzdXBzdWIgPSB7XG4gICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgbW9kZTogc2hpZnRlZEFyZy5tb2RlLFxuICAgICAgYmFzZTogYmFzZU9wLFxuICAgICAgc3VwOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IG51bGwgOiBzaGlmdGVkQXJnLFxuICAgICAgc3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcdW5kZXJzZXRcIiA/IHNoaWZ0ZWRBcmcgOiBudWxsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBtY2xhc3MsXG4gICAgICBib2R5OiBbc3Vwc3ViXSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChzdXBzdWIpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG1jbGFzc19odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogbWNsYXNzX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2ZvbnQuanNcbi8vIFRPRE8oa2V2aW5iKTogaW1wbGVtZW50IFxcXFxzbCBhbmQgXFxcXHNjXG5cblxuXG5cblxuXG52YXIgZm9udF9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDtcbiAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLndpdGhGb250KGZvbnQpO1xuICByZXR1cm4gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udF9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZm9udCA9IGdyb3VwLmZvbnQ7XG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy53aXRoRm9udChmb250KTtcbiAgcmV0dXJuIGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG59O1xuXG52YXIgZm9udEFsaWFzZXMgPSB7XG4gIFwiXFxcXEJiYlwiOiBcIlxcXFxtYXRoYmJcIixcbiAgXCJcXFxcYm9sZFwiOiBcIlxcXFxtYXRoYmZcIixcbiAgXCJcXFxcZnJha1wiOiBcIlxcXFxtYXRoZnJha1wiLFxuICBcIlxcXFxibVwiOiBcIlxcXFxib2xkc3ltYm9sXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZm9udFwiLFxuICBuYW1lczogWy8vIHN0eWxlcywgZXhjZXB0IFxcYm9sZHN5bWJvbCBkZWZpbmVkIGJlbG93XG4gIFwiXFxcXG1hdGhybVwiLCBcIlxcXFxtYXRoaXRcIiwgXCJcXFxcbWF0aGJmXCIsIFwiXFxcXG1hdGhub3JtYWxcIiwgLy8gZmFtaWxpZXNcbiAgXCJcXFxcbWF0aGJiXCIsIFwiXFxcXG1hdGhjYWxcIiwgXCJcXFxcbWF0aGZyYWtcIiwgXCJcXFxcbWF0aHNjclwiLCBcIlxcXFxtYXRoc2ZcIiwgXCJcXFxcbWF0aHR0XCIsIC8vIGFsaWFzZXMsIGV4Y2VwdCBcXGJtIGRlZmluZWQgYmVsb3dcbiAgXCJcXFxcQmJiXCIsIFwiXFxcXGJvbGRcIiwgXCJcXFxcZnJha1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGdyZWVkaW5lc3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHZhciBmdW5jID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZnVuYyBpbiBmb250QWxpYXNlcykge1xuICAgICAgZnVuYyA9IGZvbnRBbGlhc2VzW2Z1bmNdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogZnVuYy5zbGljZSgxKSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZm9udF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogZm9udF9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxib2xkc3ltYm9sXCIsIFwiXFxcXGJtXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgZ3JlZWRpbmVzczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgdmFyIGlzQ2hhcmFjdGVyQm94ID0gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYm9keSk7IC8vIGFtc2JzeS5zdHkncyBcXGJvbGRzeW1ib2wgdXNlcyBcXGJpbnJlbCBzcGFjaW5nIHRvIGluaGVyaXQgdGhlXG4gICAgLy8gYXJndW1lbnQncyBiaW58cmVsfG9yZCBzdGF0dXNcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBtY2xhc3M6IGJpbnJlbENsYXNzKGJvZHkpLFxuICAgICAgYm9keTogW3tcbiAgICAgICAgdHlwZTogXCJmb250XCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBmb250OiBcImJvbGRzeW1ib2xcIixcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfV0sXG4gICAgICBpc0NoYXJhY3RlckJveDogaXNDaGFyYWN0ZXJCb3hcbiAgICB9O1xuICB9XG59KTsgLy8gT2xkIGZvbnQgY2hhbmdpbmcgZnVuY3Rpb25zXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJmb250XCIsXG4gIG5hbWVzOiBbXCJcXFxccm1cIiwgXCJcXFxcc2ZcIiwgXCJcXFxcdHRcIiwgXCJcXFxcYmZcIiwgXCJcXFxcaXRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYzLmZ1bmNOYW1lLFxuICAgICAgICBicmVha09uVG9rZW5UZXh0ID0gX3JlZjMuYnJlYWtPblRva2VuVGV4dDtcbiAgICB2YXIgbW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbih0cnVlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICB2YXIgc3R5bGUgPSBcIm1hdGhcIiArIGZ1bmNOYW1lLnNsaWNlKDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgIG1vZGU6IG1vZGUsXG4gICAgICBmb250OiBzdHlsZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgICAgYm9keTogYm9keVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmb250X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmb250X21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2dlbmZyYWMuanNcblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgZ2VuZnJhY19hZGp1c3RTdHlsZSA9IGZ1bmN0aW9uIGFkanVzdFN0eWxlKHNpemUsIG9yaWdpbmFsU3R5bGUpIHtcbiAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHRoaXMgZnJhY3Rpb24gc2hvdWxkIGJlIGluIGJhc2VkIG9uIHRoZVxuICAvLyBmdW5jdGlvbiB1c2VkXG4gIHZhciBzdHlsZSA9IG9yaWdpbmFsU3R5bGU7XG5cbiAgaWYgKHNpemUgPT09IFwiZGlzcGxheVwiKSB7XG4gICAgLy8gR2V0IGRpc3BsYXkgc3R5bGUgYXMgYSBkZWZhdWx0LlxuICAgIC8vIElmIGluY29taW5nIHN0eWxlIGlzIHN1Yi9zdXAsIHVzZSBzdHlsZS50ZXh0KCkgdG8gZ2V0IGNvcnJlY3Qgc2l6ZS5cbiAgICBzdHlsZSA9IHN0eWxlLmlkID49IHNyY19TdHlsZS5TQ1JJUFQuaWQgPyBzdHlsZS50ZXh0KCkgOiBzcmNfU3R5bGUuRElTUExBWTtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInRleHRcIiAmJiBzdHlsZS5zaXplID09PSBzcmNfU3R5bGUuRElTUExBWS5zaXplKSB7XG4gICAgLy8gV2UncmUgaW4gYSBcXHRmcmFjIGJ1dCBpbmNvbWluZyBzdHlsZSBpcyBkaXNwbGF5c3R5bGUsIHNvOlxuICAgIHN0eWxlID0gc3JjX1N0eWxlLlRFWFQ7XG4gIH0gZWxzZSBpZiAoc2l6ZSA9PT0gXCJzY3JpcHRcIikge1xuICAgIHN0eWxlID0gc3JjX1N0eWxlLlNDUklQVDtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInNjcmlwdHNjcmlwdFwiKSB7XG4gICAgc3R5bGUgPSBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIGdlbmZyYWNfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAvLyBGcmFjdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGFnZXMgNDQ0LTQ0NSwgcnVsZXMgMTUoYS1lKS5cbiAgdmFyIHN0eWxlID0gZ2VuZnJhY19hZGp1c3RTdHlsZShncm91cC5zaXplLCBvcHRpb25zLnN0eWxlKTtcbiAgdmFyIG5zdHlsZSA9IHN0eWxlLmZyYWNOdW0oKTtcbiAgdmFyIGRzdHlsZSA9IHN0eWxlLmZyYWNEZW4oKTtcbiAgdmFyIG5ld09wdGlvbnM7XG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5zdHlsZSk7XG4gIHZhciBudW1lcm0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5udW1lciwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgaWYgKGdyb3VwLmNvbnRpbnVlZCkge1xuICAgIC8vIFxcY2ZyYWMgaW5zZXJ0cyBhIFxcc3RydXQgaW50byB0aGUgbnVtZXJhdG9yLlxuICAgIC8vIEdldCBcXHN0cnV0IGRpbWVuc2lvbnMgZnJvbSBUZVhib29rIHBhZ2UgMzUzLlxuICAgIHZhciBoU3RydXQgPSA4LjUgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICB2YXIgZFN0cnV0ID0gMy41IC8gb3B0aW9ucy5mb250TWV0cmljcygpLnB0UGVyRW07XG4gICAgbnVtZXJtLmhlaWdodCA9IG51bWVybS5oZWlnaHQgPCBoU3RydXQgPyBoU3RydXQgOiBudW1lcm0uaGVpZ2h0O1xuICAgIG51bWVybS5kZXB0aCA9IG51bWVybS5kZXB0aCA8IGRTdHJ1dCA/IGRTdHJ1dCA6IG51bWVybS5kZXB0aDtcbiAgfVxuXG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKGRzdHlsZSk7XG4gIHZhciBkZW5vbW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5kZW5vbSwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG4gIHZhciBydWxlO1xuICB2YXIgcnVsZVdpZHRoO1xuICB2YXIgcnVsZVNwYWNpbmc7XG5cbiAgaWYgKGdyb3VwLmhhc0JhckxpbmUpIHtcbiAgICBpZiAoZ3JvdXAuYmFyU2l6ZSkge1xuICAgICAgcnVsZVdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5iYXJTaXplLCBvcHRpb25zKTtcbiAgICAgIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJmcmFjLWxpbmVcIiwgb3B0aW9ucywgcnVsZVdpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVsZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImZyYWMtbGluZVwiLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBydWxlV2lkdGggPSBydWxlLmhlaWdodDtcbiAgICBydWxlU3BhY2luZyA9IHJ1bGUuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHJ1bGUgPSBudWxsO1xuICAgIHJ1bGVXaWR0aCA9IDA7XG4gICAgcnVsZVNwYWNpbmcgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG4gIH0gLy8gUnVsZSAxNWJcblxuXG4gIHZhciBudW1TaGlmdDtcbiAgdmFyIGNsZWFyYW5jZTtcbiAgdmFyIGRlbm9tU2hpZnQ7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgZ3JvdXAuc2l6ZSA9PT0gXCJkaXNwbGF5XCIpIHtcbiAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0xO1xuXG4gICAgaWYgKHJ1bGVXaWR0aCA+IDApIHtcbiAgICAgIGNsZWFyYW5jZSA9IDMgKiBydWxlU3BhY2luZztcbiAgICB9IGVsc2Uge1xuICAgICAgY2xlYXJhbmNlID0gNyAqIHJ1bGVTcGFjaW5nO1xuICAgIH1cblxuICAgIGRlbm9tU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVub20xO1xuICB9IGVsc2Uge1xuICAgIGlmIChydWxlV2lkdGggPiAwKSB7XG4gICAgICBudW1TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5udW0yO1xuICAgICAgY2xlYXJhbmNlID0gcnVsZVNwYWNpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLm51bTM7XG4gICAgICBjbGVhcmFuY2UgPSAzICogcnVsZVNwYWNpbmc7XG4gICAgfVxuXG4gICAgZGVub21TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZW5vbTI7XG4gIH1cblxuICB2YXIgZnJhYztcblxuICBpZiAoIXJ1bGUpIHtcbiAgICAvLyBSdWxlIDE1Y1xuICAgIHZhciBjYW5kaWRhdGVDbGVhcmFuY2UgPSBudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChkZW5vbW0uaGVpZ2h0IC0gZGVub21TaGlmdCk7XG5cbiAgICBpZiAoY2FuZGlkYXRlQ2xlYXJhbmNlIDwgY2xlYXJhbmNlKSB7XG4gICAgICBudW1TaGlmdCArPSAwLjUgKiAoY2xlYXJhbmNlIC0gY2FuZGlkYXRlQ2xlYXJhbmNlKTtcbiAgICAgIGRlbm9tU2hpZnQgKz0gMC41ICogKGNsZWFyYW5jZSAtIGNhbmRpZGF0ZUNsZWFyYW5jZSk7XG4gICAgfVxuXG4gICAgZnJhYyA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGRlbm9tbSxcbiAgICAgICAgc2hpZnQ6IGRlbm9tU2hpZnRcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG51bWVybSxcbiAgICAgICAgc2hpZnQ6IC1udW1TaGlmdFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBSdWxlIDE1ZFxuICAgIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQ7XG5cbiAgICBpZiAobnVtU2hpZnQgLSBudW1lcm0uZGVwdGggLSAoYXhpc0hlaWdodCArIDAuNSAqIHJ1bGVXaWR0aCkgPCBjbGVhcmFuY2UpIHtcbiAgICAgIG51bVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChheGlzSGVpZ2h0ICsgMC41ICogcnVsZVdpZHRoKSk7XG4gICAgfVxuXG4gICAgaWYgKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpIDwgY2xlYXJhbmNlKSB7XG4gICAgICBkZW5vbVNoaWZ0ICs9IGNsZWFyYW5jZSAtIChheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoIC0gKGRlbm9tbS5oZWlnaHQgLSBkZW5vbVNoaWZ0KSk7XG4gICAgfVxuXG4gICAgdmFyIG1pZFNoaWZ0ID0gLShheGlzSGVpZ2h0IC0gMC41ICogcnVsZVdpZHRoKTtcbiAgICBmcmFjID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZGVub21tLFxuICAgICAgICBzaGlmdDogZGVub21TaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogcnVsZSxcbiAgICAgICAgc2hpZnQ6IG1pZFNoaWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBudW1lcm0sXG4gICAgICAgIHNoaWZ0OiAtbnVtU2hpZnRcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gLy8gU2luY2Ugd2UgbWFudWFsbHkgY2hhbmdlIHRoZSBzdHlsZSBzb21ldGltZXMgKHdpdGggXFxkZnJhYyBvciBcXHRmcmFjKSxcbiAgLy8gYWNjb3VudCBmb3IgdGhlIHBvc3NpYmxlIHNpemUgY2hhbmdlIGhlcmUuXG5cblxuICBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSk7XG4gIGZyYWMuaGVpZ2h0ICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICBmcmFjLmRlcHRoICo9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBSdWxlIDE1ZVxuXG4gIHZhciBkZWxpbVNpemU7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUpIHtcbiAgICBkZWxpbVNpemUgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVsaW0xO1xuICB9IGVsc2Uge1xuICAgIGRlbGltU2l6ZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWxpbTI7XG4gIH1cblxuICB2YXIgbGVmdERlbGltO1xuICB2YXIgcmlnaHREZWxpbTtcblxuICBpZiAoZ3JvdXAubGVmdERlbGltID09IG51bGwpIHtcbiAgICBsZWZ0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtb3BlblwiXSk7XG4gIH0gZWxzZSB7XG4gICAgbGVmdERlbGltID0gZGVsaW1pdGVyLmN1c3RvbVNpemVkRGVsaW0oZ3JvdXAubGVmdERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtb3BlblwiXSk7XG4gIH1cblxuICBpZiAoZ3JvdXAuY29udGludWVkKSB7XG4gICAgcmlnaHREZWxpbSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdKTsgLy8gemVybyB3aWR0aCBmb3IgXFxjZnJhY1xuICB9IGVsc2UgaWYgKGdyb3VwLnJpZ2h0RGVsaW0gPT0gbnVsbCkge1xuICAgIHJpZ2h0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtY2xvc2VcIl0pO1xuICB9IGVsc2Uge1xuICAgIHJpZ2h0RGVsaW0gPSBkZWxpbWl0ZXIuY3VzdG9tU2l6ZWREZWxpbShncm91cC5yaWdodERlbGltLCBkZWxpbVNpemUsIHRydWUsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUpLCBncm91cC5tb2RlLCBbXCJtY2xvc2VcIl0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0uY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIFtsZWZ0RGVsaW0sIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1mcmFjXCJdLCBbZnJhY10pLCByaWdodERlbGltXSwgb3B0aW9ucyk7XG59O1xuXG52YXIgZ2VuZnJhY19tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWZyYWNcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAubnVtZXIsIG9wdGlvbnMpLCBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmRlbm9tLCBvcHRpb25zKV0pO1xuXG4gIGlmICghZ3JvdXAuaGFzQmFyTGluZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibGluZXRoaWNrbmVzc1wiLCBcIjBweFwiKTtcbiAgfSBlbHNlIGlmIChncm91cC5iYXJTaXplKSB7XG4gICAgdmFyIHJ1bGVXaWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuYmFyU2l6ZSwgb3B0aW9ucyk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5ldGhpY2tuZXNzXCIsIHJ1bGVXaWR0aCArIFwiZW1cIik7XG4gIH1cblxuICB2YXIgc3R5bGUgPSBnZW5mcmFjX2FkanVzdFN0eWxlKGdyb3VwLnNpemUsIG9wdGlvbnMuc3R5bGUpO1xuXG4gIGlmIChzdHlsZS5zaXplICE9PSBvcHRpb25zLnN0eWxlLnNpemUpIHtcbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgW25vZGVdKTtcbiAgICB2YXIgaXNEaXNwbGF5ID0gc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGlzcGxheXN0eWxlXCIsIGlzRGlzcGxheSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzY3JpcHRsZXZlbFwiLCBcIjBcIik7XG4gIH1cblxuICBpZiAoZ3JvdXAubGVmdERlbGltICE9IG51bGwgfHwgZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgdmFyIHdpdGhEZWxpbXMgPSBbXTtcblxuICAgIGlmIChncm91cC5sZWZ0RGVsaW0gIT0gbnVsbCkge1xuICAgICAgdmFyIGxlZnRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLmxlZnREZWxpbS5yZXBsYWNlKFwiXFxcXFwiLCBcIlwiKSldKTtcbiAgICAgIGxlZnRPcC5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7XG4gICAgICB3aXRoRGVsaW1zLnB1c2gobGVmdE9wKTtcbiAgICB9XG5cbiAgICB3aXRoRGVsaW1zLnB1c2gobm9kZSk7XG5cbiAgICBpZiAoZ3JvdXAucmlnaHREZWxpbSAhPSBudWxsKSB7XG4gICAgICB2YXIgcmlnaHRPcCA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKGdyb3VwLnJpZ2h0RGVsaW0ucmVwbGFjZShcIlxcXFxcIiwgXCJcIikpXSk7XG4gICAgICByaWdodE9wLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIHdpdGhEZWxpbXMucHVzaChyaWdodE9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyh3aXRoRGVsaW1zKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxjZnJhY1wiLCBcIlxcXFxkZnJhY1wiLCBcIlxcXFxmcmFjXCIsIFwiXFxcXHRmcmFjXCIsIFwiXFxcXGRiaW5vbVwiLCBcIlxcXFxiaW5vbVwiLCBcIlxcXFx0Ymlub21cIiwgXCJcXFxcXFxcXGF0b3BmcmFjXCIsIC8vIGNhbuKAmXQgYmUgZW50ZXJlZCBkaXJlY3RseVxuICBcIlxcXFxcXFxcYnJhY2VmcmFjXCIsIFwiXFxcXFxcXFxicmFja2ZyYWNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBncmVlZGluZXNzOiAyXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBudW1lciA9IGFyZ3NbMF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1sxXTtcbiAgICB2YXIgaGFzQmFyTGluZTtcbiAgICB2YXIgbGVmdERlbGltID0gbnVsbDtcbiAgICB2YXIgcmlnaHREZWxpbSA9IG51bGw7XG4gICAgdmFyIHNpemUgPSBcImF1dG9cIjtcblxuICAgIHN3aXRjaCAoZnVuY05hbWUpIHtcbiAgICAgIGNhc2UgXCJcXFxcY2ZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZGZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZnJhY1wiOlxuICAgICAgY2FzZSBcIlxcXFx0ZnJhY1wiOlxuICAgICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcXFxcXGF0b3BmcmFjXCI6XG4gICAgICAgIGhhc0JhckxpbmUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcZGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXGJpbm9tXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgIGxlZnREZWxpbSA9IFwiKFwiO1xuICAgICAgICByaWdodERlbGltID0gXCIpXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFjZWZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIlxcXFx7XCI7XG4gICAgICAgIHJpZ2h0RGVsaW0gPSBcIlxcXFx9XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXFxcXFxicmFja2ZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBsZWZ0RGVsaW0gPSBcIltcIjtcbiAgICAgICAgcmlnaHREZWxpbSA9IFwiXVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGdlbmZyYWMgY29tbWFuZFwiKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZ1bmNOYW1lKSB7XG4gICAgICBjYXNlIFwiXFxcXGNmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXGRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJkaXNwbGF5XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXHRmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXHRiaW5vbVwiOlxuICAgICAgICBzaXplID0gXCJ0ZXh0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29udGludWVkOiBmdW5jTmFtZSA9PT0gXCJcXFxcY2ZyYWNcIixcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBsZWZ0RGVsaW06IGxlZnREZWxpbSxcbiAgICAgIHJpZ2h0RGVsaW06IHJpZ2h0RGVsaW0sXG4gICAgICBzaXplOiBzaXplLFxuICAgICAgYmFyU2l6ZTogbnVsbFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBJbmZpeCBnZW5lcmFsaXplZCBmcmFjdGlvbnMgLS0gdGhlc2UgYXJlIG5vdCByZW5kZXJlZCBkaXJlY3RseSwgYnV0IHJlcGxhY2VkXG4vLyBpbW1lZGlhdGVseSBieSBvbmUgb2YgdGhlIHZhcmlhbnRzIGFib3ZlLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiaW5maXhcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVyXCIsIFwiXFxcXGNob29zZVwiLCBcIlxcXFxhdG9wXCIsIFwiXFxcXGJyYWNlXCIsIFwiXFxcXGJyYWNrXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMikge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjIuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjIudG9rZW47XG4gICAgdmFyIHJlcGxhY2VXaXRoO1xuXG4gICAgc3dpdGNoIChmdW5jTmFtZSkge1xuICAgICAgY2FzZSBcIlxcXFxvdmVyXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxjaG9vc2VcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxiaW5vbVwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxhdG9wXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGF0b3BmcmFjXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGJyYWNlXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGJyYWNlZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxicmFja1wiOlxuICAgICAgICByZXBsYWNlV2l0aCA9IFwiXFxcXFxcXFxicmFja2ZyYWNcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBpbmZpeCBnZW5mcmFjIGNvbW1hbmRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IHJlcGxhY2VXaXRoLFxuICAgICAgdG9rZW46IHRva2VuXG4gICAgfTtcbiAgfVxufSk7XG52YXIgc3R5bEFycmF5ID0gW1wiZGlzcGxheVwiLCBcInRleHRcIiwgXCJzY3JpcHRcIiwgXCJzY3JpcHRzY3JpcHRcIl07XG5cbnZhciBkZWxpbUZyb21WYWx1ZSA9IGZ1bmN0aW9uIGRlbGltRnJvbVZhbHVlKGRlbGltU3RyaW5nKSB7XG4gIHZhciBkZWxpbSA9IG51bGw7XG5cbiAgaWYgKGRlbGltU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBkZWxpbSA9IGRlbGltU3RyaW5nO1xuICAgIGRlbGltID0gZGVsaW0gPT09IFwiLlwiID8gbnVsbCA6IGRlbGltO1xuICB9XG5cbiAgcmV0dXJuIGRlbGltO1xufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxnZW5mcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDYsXG4gICAgZ3JlZWRpbmVzczogNixcbiAgICBhcmdUeXBlczogW1wibWF0aFwiLCBcIm1hdGhcIiwgXCJzaXplXCIsIFwidGV4dFwiLCBcIm1hdGhcIiwgXCJtYXRoXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBudW1lciA9IGFyZ3NbNF07XG4gICAgdmFyIGRlbm9tID0gYXJnc1s1XTsgLy8gTG9vayBpbnRvIHRoZSBwYXJzZSBub2RlcyB0byBnZXQgdGhlIGRlc2lyZWQgZGVsaW1pdGVycy5cblxuICAgIHZhciBsZWZ0Tm9kZSA9IGNoZWNrTm9kZVR5cGUoYXJnc1swXSwgXCJhdG9tXCIpO1xuXG4gICAgaWYgKGxlZnROb2RlKSB7XG4gICAgICBsZWZ0Tm9kZSA9IGFzc2VydEF0b21GYW1pbHkoYXJnc1swXSwgXCJvcGVuXCIpO1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGVsaW0gPSBsZWZ0Tm9kZSA/IGRlbGltRnJvbVZhbHVlKGxlZnROb2RlLnRleHQpIDogbnVsbDtcbiAgICB2YXIgcmlnaHROb2RlID0gY2hlY2tOb2RlVHlwZShhcmdzWzFdLCBcImF0b21cIik7XG5cbiAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICByaWdodE5vZGUgPSBhc3NlcnRBdG9tRmFtaWx5KGFyZ3NbMV0sIFwiY2xvc2VcIik7XG4gICAgfVxuXG4gICAgdmFyIHJpZ2h0RGVsaW0gPSByaWdodE5vZGUgPyBkZWxpbUZyb21WYWx1ZShyaWdodE5vZGUudGV4dCkgOiBudWxsO1xuICAgIHZhciBiYXJOb2RlID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1syXSwgXCJzaXplXCIpO1xuICAgIHZhciBoYXNCYXJMaW5lO1xuICAgIHZhciBiYXJTaXplID0gbnVsbDtcblxuICAgIGlmIChiYXJOb2RlLmlzQmxhbmspIHtcbiAgICAgIC8vIFxcZ2VuZnJhYyBhY3RzIGRpZmZlcmVudGx5IHRoYW4gXFxhYm92ZS5cbiAgICAgIC8vIFxcZ2VuZnJhYyB0cmVhdHMgYW4gZW1wdHkgc2l6ZSBncm91cCBhcyBhIHNpZ25hbCB0byB1c2UgYVxuICAgICAgLy8gc3RhbmRhcmQgYmFyIHNpemUuIFxcYWJvdmUgd291bGQgc2VlIHNpemUgPSAwIGFuZCBvbWl0IHRoZSBiYXIuXG4gICAgICBoYXNCYXJMaW5lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFyU2l6ZSA9IGJhck5vZGUudmFsdWU7XG4gICAgICBoYXNCYXJMaW5lID0gYmFyU2l6ZS5udW1iZXIgPiAwO1xuICAgIH0gLy8gRmluZCBvdXQgaWYgd2Ugd2FudCBkaXNwbGF5c3R5bGUsIHRleHRzdHlsZSwgZXRjLlxuXG5cbiAgICB2YXIgc2l6ZSA9IFwiYXV0b1wiO1xuICAgIHZhciBzdHlsID0gY2hlY2tOb2RlVHlwZShhcmdzWzNdLCBcIm9yZGdyb3VwXCIpO1xuXG4gICAgaWYgKHN0eWwpIHtcbiAgICAgIGlmIChzdHlsLmJvZHkubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdGV4dE9yZCA9IGFzc2VydE5vZGVUeXBlKHN0eWwuYm9keVswXSwgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBzaXplID0gc3R5bEFycmF5W051bWJlcih0ZXh0T3JkLnRleHQpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbM10sIFwidGV4dG9yZFwiKTtcbiAgICAgIHNpemUgPSBzdHlsQXJyYXlbTnVtYmVyKHN0eWwudGV4dCldO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgZGVub206IGRlbm9tLFxuICAgICAgY29udGludWVkOiBmYWxzZSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBiYXJTaXplOiBiYXJTaXplLFxuICAgICAgbGVmdERlbGltOiBsZWZ0RGVsaW0sXG4gICAgICByaWdodERlbGltOiByaWdodERlbGltLFxuICAgICAgc2l6ZTogc2l6ZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBcXGFib3ZlIGlzIGFuIGluZml4IGZyYWN0aW9uIHRoYXQgYWxzbyBkZWZpbmVzIGEgZnJhY3Rpb24gYmFyIHNpemUuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmZpeFwiLFxuICBuYW1lczogW1wiXFxcXGFib3ZlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgaW5maXg6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWUsXG4gICAgICAgIHRva2VuID0gX3JlZjQudG9rZW47XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaW5maXhcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgcmVwbGFjZVdpdGg6IFwiXFxcXFxcXFxhYm92ZWZyYWNcIixcbiAgICAgIHNpemU6IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKS52YWx1ZSxcbiAgICAgIHRva2VuOiB0b2tlblxuICAgIH07XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImdlbmZyYWNcIixcbiAgbmFtZXM6IFtcIlxcXFxcXFxcYWJvdmVmcmFjXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcIm1hdGhcIiwgXCJzaXplXCIsIFwibWF0aFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY1LCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY1LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNS5mdW5jTmFtZTtcbiAgICB2YXIgbnVtZXIgPSBhcmdzWzBdO1xuICAgIHZhciBiYXJTaXplID0gYXNzZXJ0KGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwiaW5maXhcIikuc2l6ZSk7XG4gICAgdmFyIGRlbm9tID0gYXJnc1syXTtcbiAgICB2YXIgaGFzQmFyTGluZSA9IGJhclNpemUubnVtYmVyID4gMDtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJnZW5mcmFjXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG51bWVyOiBudW1lcixcbiAgICAgIGRlbm9tOiBkZW5vbSxcbiAgICAgIGNvbnRpbnVlZDogZmFsc2UsXG4gICAgICBoYXNCYXJMaW5lOiBoYXNCYXJMaW5lLFxuICAgICAgYmFyU2l6ZTogYmFyU2l6ZSxcbiAgICAgIGxlZnREZWxpbTogbnVsbCxcbiAgICAgIHJpZ2h0RGVsaW06IG51bGwsXG4gICAgICBzaXplOiBcImF1dG9cIlxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBnZW5mcmFjX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBnZW5mcmFjX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2hvcml6QnJhY2UuanNcblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seSBcImhvcml6QnJhY2VcIiwgYnV0XG52YXIgaG9yaXpCcmFjZV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdycCwgb3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlOyAvLyBQdWxsIG91dCB0aGUgYFBhcnNlTm9kZTxcImhvcml6QnJhY2VcIj5gIGlmIGBncnBgIGlzIGEgXCJzdXBzdWJcIiBub2RlLlxuXG4gIHZhciBzdXBTdWJHcm91cDtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBSZWY6IExhVGVYIHNvdXJjZTJlOiB9fX19XFxsaW1pdHN9XG4gICAgLy8gaS5lLiBMYVRlWCB0cmVhdHMgdGhlIGJyYWNlIHNpbWlsYXIgdG8gYW4gb3AgYW5kIHBhc3NlcyBpdFxuICAgIC8vIHdpdGggXFxsaW1pdHMsIHNvIHdlIG5lZWQgdG8gYXNzaWduIHN1cHN1YiBzdHlsZS5cbiAgICBzdXBTdWJHcm91cCA9IHN1cFN1Yi5zdXAgPyBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3VwLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1cCgpKSwgb3B0aW9ucykgOiBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBTdWIuc3ViLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKSwgb3B0aW9ucyk7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJob3JpekJyYWNlXCIpO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcImhvcml6QnJhY2VcIik7XG4gIH0gLy8gQnVpbGQgdGhlIGJhc2UgZ3JvdXBcblxuXG4gIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc3JjX1N0eWxlLkRJU1BMQVkpKTsgLy8gQ3JlYXRlIHRoZSBzdHJldGNoeSBlbGVtZW50XG5cbiAgdmFyIGJyYWNlQm9keSA9IHN0cmV0Y2h5LnN2Z1NwYW4oZ3JvdXAsIG9wdGlvbnMpOyAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zICAgICAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgLy8gVGhpcyBmaXJzdCB2bGlzdCBjb250YWlucyB0aGUgY29udGVudCBhbmQgdGhlIGJyYWNlOiAgIGVxdWF0aW9uXG5cbiAgdmFyIHZsaXN0O1xuXG4gIGlmIChncm91cC5pc092ZXIpIHtcbiAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAwLjFcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gJEZsb3dGaXhNZTogUmVwbGFjZSB0aGlzIHdpdGggcGFzc2luZyBcInN2Zy1hbGlnblwiIGludG8gbWFrZVZMaXN0LlxuXG4gICAgdmxpc3QuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uY2xhc3Nlcy5wdXNoKFwic3ZnLWFsaWduXCIpO1xuICB9IGVsc2Uge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgIHBvc2l0aW9uRGF0YTogYm9keS5kZXB0aCArIDAuMSArIGJyYWNlQm9keS5oZWlnaHQsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJyYWNlQm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMC4xXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cbiAgICB2bGlzdC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jbGFzc2VzLnB1c2goXCJzdmctYWxpZ25cIik7XG4gIH1cblxuICBpZiAoc3VwU3ViR3JvdXApIHtcbiAgICAvLyBUbyB3cml0ZSB0aGUgc3Vwc3ViLCB3cmFwIHRoZSBmaXJzdCB2bGlzdCBpbiBhbm90aGVyIHZsaXN0OlxuICAgIC8vIFRoZXkgY2FuJ3QgYWxsIGdvIGluIHRoZSBzYW1lIHZsaXN0LCBiZWNhdXNlIHRoZSBub3RlIG1pZ2h0IGJlXG4gICAgLy8gd2lkZXIgdGhhbiB0aGUgZXF1YXRpb24uIFdlIHdhbnQgdGhlIGVxdWF0aW9uIHRvIGNvbnRyb2wgdGhlXG4gICAgLy8gYnJhY2Ugd2lkdGguXG4gICAgLy8gICAgICBub3RlICAgICAgICAgIGxvbmcgbm90ZSAgICAgICAgICAgbG9uZyBub3RlXG4gICAgLy8gICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilJMgICBvciAgICDilI/ilIHilIHilIHilJMgICAgIG5vdCAgICDilI/ilIHilIHilIHilIHilIHilIHilIHilIHilIHilJNcbiAgICAvLyAgICBlcXVhdGlvbiAgICAgICAgICAgZXFuICAgICAgICAgICAgICAgICBlcW5cbiAgICB2YXIgdlNwYW4gPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcblxuICAgIGlmIChncm91cC5pc092ZXIpIHtcbiAgICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdlNwYW5cbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICAgIHNpemU6IDAuMlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogc3VwU3ViR3JvdXBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiB2U3Bhbi5kZXB0aCArIDAuMiArIHN1cFN1Ykdyb3VwLmhlaWdodCArIHN1cFN1Ykdyb3VwLmRlcHRoLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBzdXBTdWJHcm91cFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgICAgc2l6ZTogMC4yXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiB2U3BhblxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgZ3JvdXAuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xufTtcblxudmFyIGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGFjY2VudE5vZGUgPSBzdHJldGNoeS5tYXRoTUxub2RlKGdyb3VwLmxhYmVsKTtcbiAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKGdyb3VwLmlzT3ZlciA/IFwibW92ZXJcIiA6IFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG59OyAvLyBIb3Jpem9udGFsIHN0cmV0Y2h5IGJyYWNlc1xuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3ZlcmJyYWNlXCIsIFwiXFxcXHVuZGVyYnJhY2VcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJob3JpekJyYWNlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGlzT3ZlcjogL15cXFxcb3Zlci8udGVzdChmdW5jTmFtZSksXG4gICAgICBiYXNlOiBhcmdzWzBdXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGhvcml6QnJhY2VfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvaHJlZi5qc1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhyZWZcIixcbiAgbmFtZXM6IFtcIlxcXFxocmVmXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDIsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiLCBcIm9yaWdpbmFsXCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICB2YXIgaHJlZiA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwidXJsXCIpLnVybDtcblxuICAgIGlmICghcGFyc2VyLnNldHRpbmdzLmlzVHJ1c3RlZCh7XG4gICAgICBjb21tYW5kOiBcIlxcXFxocmVmXCIsXG4gICAgICB1cmw6IGhyZWZcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIHBhcnNlci5mb3JtYXRVbnN1cHBvcnRlZENtZChcIlxcXFxocmVmXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImhyZWZcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgaHJlZjogaHJlZixcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VBbmNob3IoZ3JvdXAuaHJlZiwgW10sIGVsZW1lbnRzLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBtYXRoID0gYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gICAgaWYgKCEobWF0aCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUpKSB7XG4gICAgICBtYXRoID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtcm93XCIsIFttYXRoXSk7XG4gICAgfVxuXG4gICAgbWF0aC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGdyb3VwLmhyZWYpO1xuICAgIHJldHVybiBtYXRoO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJocmVmXCIsXG4gIG5hbWVzOiBbXCJcXFxcdXJsXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBocmVmID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJ1cmxcIikudXJsO1xuXG4gICAgaWYgKCFwYXJzZXIuc2V0dGluZ3MuaXNUcnVzdGVkKHtcbiAgICAgIGNvbW1hbmQ6IFwiXFxcXHVybFwiLFxuICAgICAgdXJsOiBocmVmXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBwYXJzZXIuZm9ybWF0VW5zdXBwb3J0ZWRDbWQoXCJcXFxcdXJsXCIpO1xuICAgIH1cblxuICAgIHZhciBjaGFycyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBocmVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGhyZWZbaV07XG5cbiAgICAgIGlmIChjID09PSBcIn5cIikge1xuICAgICAgICBjID0gXCJcXFxcdGV4dGFzY2lpdGlsZGVcIjtcbiAgICAgIH1cblxuICAgICAgY2hhcnMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogY1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGJvZHkgPSB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZm9udDogXCJcXFxcdGV4dHR0XCIsXG4gICAgICBib2R5OiBjaGFyc1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBocmVmOiBocmVmLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9odG1sbWF0aG1sLmpzXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHRtbEBtYXRobWxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJodG1sbWF0aG1sXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGh0bWw6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbMF0pLFxuICAgICAgbWF0aG1sOiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuaHRtbCwgb3B0aW9ucywgZmFsc2UpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5tYXRobWwsIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9pbmNsdWRlZ3JhcGhpY3MuanNcblxuXG5cblxuXG5cblxudmFyIGluY2x1ZGVncmFwaGljc19zaXplRGF0YSA9IGZ1bmN0aW9uIHNpemVEYXRhKHN0cikge1xuICBpZiAoL15bLStdPyAqKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC8udGVzdChzdHIpKSB7XG4gICAgLy8gc3RyIGlzIGEgbnVtYmVyIHdpdGggbm8gdW5pdCBzcGVjaWZpZWQuXG4gICAgLy8gZGVmYXVsdCB1bml0IGlzIGJwLCBwZXIgZ3JhcGhpeCBwYWNrYWdlLlxuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6ICtzdHIsXG4gICAgICB1bml0OiBcImJwXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHZhciBtYXRjaCA9IC8oWy0rXT8pICooXFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSAqKFthLXpdezJ9KS8uZXhlYyhzdHIpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyBzdHIgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIG51bWJlcjogKyhtYXRjaFsxXSArIG1hdGNoWzJdKSxcbiAgICAgIC8vIHNpZ24gKyBtYWduaXR1ZGUsIGNhc3QgdG8gbnVtYmVyXG4gICAgICB1bml0OiBtYXRjaFszXVxuICAgIH07XG5cbiAgICBpZiAoIXZhbGlkVW5pdChkYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCB1bml0OiAnXCIgKyBkYXRhLnVuaXQgKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljcy5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn07XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgbmFtZXM6IFtcIlxcXFxpbmNsdWRlZ3JhcGhpY3NcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInJhd1wiLCBcInVybFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHdpZHRoID0ge1xuICAgICAgbnVtYmVyOiAwLFxuICAgICAgdW5pdDogXCJlbVwiXG4gICAgfTtcbiAgICB2YXIgaGVpZ2h0ID0ge1xuICAgICAgbnVtYmVyOiAwLjksXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9OyAvLyBzb3J0YSBjaGFyYWN0ZXIgc2l6ZWQuXG5cbiAgICB2YXIgdG90YWxoZWlnaHQgPSB7XG4gICAgICBudW1iZXI6IDAsXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9O1xuICAgIHZhciBhbHQgPSBcIlwiO1xuXG4gICAgaWYgKG9wdEFyZ3NbMF0pIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVTdHIgPSBhc3NlcnROb2RlVHlwZShvcHRBcmdzWzBdLCBcInJhd1wiKS5zdHJpbmc7IC8vIFBhcnNlci5qcyBkb2VzIG5vdCBwYXJzZSBrZXkvdmFsdWUgcGFpcnMuIFdlIGdldCBhIHN0cmluZy5cblxuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTdHIuc3BsaXQoXCIsXCIpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleVZhbCA9IGF0dHJpYnV0ZXNbaV0uc3BsaXQoXCI9XCIpO1xuXG4gICAgICAgIGlmIChrZXlWYWwubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgdmFyIHN0ciA9IGtleVZhbFsxXS50cmltKCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGtleVZhbFswXS50cmltKCkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhbHRcIjpcbiAgICAgICAgICAgICAgYWx0ID0gc3RyO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIndpZHRoXCI6XG4gICAgICAgICAgICAgIHdpZHRoID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwiaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIGhlaWdodCA9IGluY2x1ZGVncmFwaGljc19zaXplRGF0YShzdHIpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcInRvdGFsaGVpZ2h0XCI6XG4gICAgICAgICAgICAgIHRvdGFsaGVpZ2h0ID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGtleTogJ1wiICsga2V5VmFsWzBdICsgXCInIGluIFxcXFxpbmNsdWRlZ3JhcGhpY3MuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzcmMgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInVybFwiKS51cmw7XG5cbiAgICBpZiAoYWx0ID09PSBcIlwiKSB7XG4gICAgICAvLyBObyBhbHQgZ2l2ZW4uIFVzZSB0aGUgZmlsZSBuYW1lLiBTdHJpcCBhd2F5IHRoZSBwYXRoLlxuICAgICAgYWx0ID0gc3JjO1xuICAgICAgYWx0ID0gYWx0LnJlcGxhY2UoL14uKltcXFxcL10vLCAnJyk7XG4gICAgICBhbHQgPSBhbHQuc3Vic3RyaW5nKDAsIGFsdC5sYXN0SW5kZXhPZignLicpKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcnNlci5zZXR0aW5ncy5pc1RydXN0ZWQoe1xuICAgICAgY29tbWFuZDogXCJcXFxcaW5jbHVkZWdyYXBoaWNzXCIsXG4gICAgICB1cmw6IHNyY1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gcGFyc2VyLmZvcm1hdFVuc3VwcG9ydGVkQ21kKFwiXFxcXGluY2x1ZGVncmFwaGljc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbmNsdWRlZ3JhcGhpY3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYWx0OiBhbHQsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHRvdGFsaGVpZ2h0OiB0b3RhbGhlaWdodCxcbiAgICAgIHNyYzogc3JjXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgZGVwdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLnRvdGFsaGVpZ2h0Lm51bWJlciA+IDApIHtcbiAgICAgIGRlcHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC50b3RhbGhlaWdodCwgb3B0aW9ucykgLSBoZWlnaHQ7XG4gICAgICBkZXB0aCA9IE51bWJlcihkZXB0aC50b0ZpeGVkKDIpKTtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBkZXB0aCArIFwiZW1cIlxuICAgIH07XG5cbiAgICBpZiAod2lkdGggPiAwKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IHdpZHRoICsgXCJlbVwiO1xuICAgIH1cblxuICAgIGlmIChkZXB0aCA+IDApIHtcbiAgICAgIHN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtZGVwdGggKyBcImVtXCI7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgZG9tVHJlZV9JbWcoZ3JvdXAuc3JjLCBncm91cC5hbHQsIHN0eWxlKTtcbiAgICBub2RlLmhlaWdodCA9IGhlaWdodDtcbiAgICBub2RlLmRlcHRoID0gZGVwdGg7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWdseXBoXCIsIFtdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFsdFwiLCBncm91cC5hbHQpO1xuICAgIHZhciBoZWlnaHQgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmhlaWdodCwgb3B0aW9ucyk7XG4gICAgdmFyIGRlcHRoID0gMDtcblxuICAgIGlmIChncm91cC50b3RhbGhlaWdodC5udW1iZXIgPiAwKSB7XG4gICAgICBkZXB0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAudG90YWxoZWlnaHQsIG9wdGlvbnMpIC0gaGVpZ2h0O1xuICAgICAgZGVwdGggPSBkZXB0aC50b0ZpeGVkKDIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ2YWxpZ25cIiwgXCItXCIgKyBkZXB0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgaGVpZ2h0ICsgZGVwdGggKyBcImVtXCIpO1xuXG4gICAgaWYgKGdyb3VwLndpZHRoLm51bWJlciA+IDApIHtcbiAgICAgIHZhciB3aWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAud2lkdGgsIG9wdGlvbnMpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCB3aWR0aCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgZ3JvdXAuc3JjKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMva2Vybi5qc1xuLy8gSG9yaXpvbnRhbCBzcGFjaW5nIGNvbW1hbmRzXG5cblxuXG5cbiAvLyBUT0RPOiBcXGhza2lwIGFuZCBcXG1za2lwIHNob3VsZCBzdXBwb3J0IHBsdXMgYW5kIG1pbnVzIGluIGxlbmd0aHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImtlcm5cIixcbiAgbmFtZXM6IFtcIlxcXFxrZXJuXCIsIFwiXFxcXG1rZXJuXCIsIFwiXFxcXGhza2lwXCIsIFwiXFxcXG1za2lwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgc2l6ZSA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKTtcblxuICAgIGlmIChwYXJzZXIuc2V0dGluZ3Muc3RyaWN0KSB7XG4gICAgICB2YXIgbWF0aEZ1bmN0aW9uID0gZnVuY05hbWVbMV0gPT09ICdtJzsgLy8gXFxta2VybiwgXFxtc2tpcFxuXG4gICAgICB2YXIgbXVVbml0ID0gc2l6ZS52YWx1ZS51bml0ID09PSAnbXUnO1xuXG4gICAgICBpZiAobWF0aEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghbXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIHN1cHBvcnRzIG9ubHkgbXUgdW5pdHMsIFwiICsgKFwibm90IFwiICsgc2l6ZS52YWx1ZS51bml0ICsgXCIgdW5pdHNcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlci5tb2RlICE9PSBcIm1hdGhcIikge1xuICAgICAgICAgIHBhcnNlci5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJtYXRoVnNUZXh0VW5pdHNcIiwgXCJMYVRlWCdzIFwiICsgZnVuY05hbWUgKyBcIiB3b3JrcyBvbmx5IGluIG1hdGggbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gIW1hdGhGdW5jdGlvblxuICAgICAgICBpZiAobXVVbml0KSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIGRvZXNuJ3Qgc3VwcG9ydCBtdSB1bml0c1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGltZW5zaW9uOiBzaXplLnZhbHVlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VHbHVlKGdyb3VwLmRpbWVuc2lvbiwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGltZW5zaW9uID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5kaW1lbnNpb24sIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5TcGFjZU5vZGUoZGltZW5zaW9uKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbGFwLmpzXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImxhcFwiLFxuICBuYW1lczogW1wiXFxcXG1hdGhsbGFwXCIsIFwiXFxcXG1hdGhybGFwXCIsIFwiXFxcXG1hdGhjbGFwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGFwXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGFsaWdubWVudDogZnVuY05hbWUuc2xpY2UoNSksXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gbWF0aGxsYXAsIG1hdGhybGFwLCBtYXRoY2xhcFxuICAgIHZhciBpbm5lcjtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgPT09IFwiY2xhcFwiKSB7XG4gICAgICAvLyByZWY6IGh0dHBzOi8vd3d3Lm1hdGgubHN1LmVkdS9+YXBlcmxpcy9wdWJsaWNhdGlvbnMvbWF0aGNsYXAvXG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTsgLy8gd3JhcCwgc2luY2UgQ1NTIHdpbGwgY2VudGVyIGEgLmNsYXAgPiAuaW5uZXIgPiBzcGFuXG5cbiAgICAgIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtpbm5lcl0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lciA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImlubmVyXCJdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB9XG5cbiAgICB2YXIgZml4ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZml4XCJdLCBbXSk7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbZ3JvdXAuYWxpZ25tZW50XSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTsgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb3JyZWN0bHkgc2V0IGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZVxuICAgIC8vIHR3byBpdGVtcyBpbnZvbHZlZCBpbiB0aGUgbGFwLlxuICAgIC8vIE5leHQsIHVzZSBhIHN0cnV0IHRvIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBIVE1MIGJvdW5kaW5nIGJveC5cbiAgICAvLyBPdGhlcndpc2UsIGEgdGFsbCBhcmd1bWVudCBtYXkgYmUgbWlzcGxhY2VkLlxuXG4gICAgdmFyIHN0cnV0ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RydXRcIl0pO1xuICAgIHN0cnV0LnN0eWxlLmhlaWdodCA9IG5vZGUuaGVpZ2h0ICsgbm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBzdHJ1dC5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLW5vZGUuZGVwdGggKyBcImVtXCI7XG4gICAgbm9kZS5jaGlsZHJlbi51bnNoaWZ0KHN0cnV0KTsgLy8gTmV4dCwgcHJldmVudCB2ZXJ0aWNhbCBtaXNwbGFjZW1lbnQgd2hlbiBuZXh0IHRvIHNvbWV0aGluZyB0YWxsLlxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBHZXQgdGhlIGhvcml6b250YWwgc3BhY2luZyBjb3JyZWN0IHJlbGF0aXZlIHRvIGFkamFjZW50IGl0ZW1zLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtub2RlXSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBtYXRobGxhcCwgbWF0aHJsYXAsIG1hdGhjbGFwXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5hbGlnbm1lbnQgIT09IFwicmxhcFwiKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gZ3JvdXAuYWxpZ25tZW50ID09PSBcImxsYXBcIiA/IFwiLTFcIiA6IFwiLTAuNVwiO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgb2Zmc2V0ICsgXCJ3aWR0aFwiKTtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMHB4XCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9tYXRoLmpzXG5cbiAvLyBTd2l0Y2hpbmcgZnJvbSB0ZXh0IG1vZGUgYmFjayB0byBtYXRoIG1vZGVcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInN0eWxpbmdcIixcbiAgbmFtZXM6IFtcIlxcXFwoXCIsIFwiJFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogZmFsc2VcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIG91dGVyTW9kZSA9IHBhcnNlci5tb2RlO1xuICAgIHBhcnNlci5zd2l0Y2hNb2RlKFwibWF0aFwiKTtcbiAgICB2YXIgY2xvc2UgPSBmdW5jTmFtZSA9PT0gXCJcXFxcKFwiID8gXCJcXFxcKVwiIDogXCIkXCI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBjbG9zZSk7XG4gICAgcGFyc2VyLmV4cGVjdChjbG9zZSk7XG4gICAgcGFyc2VyLnN3aXRjaE1vZGUob3V0ZXJNb2RlKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHN0eWxlOiBcInRleHRcIixcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9XG59KTsgLy8gQ2hlY2sgZm9yIGV4dHJhIGNsb3NpbmcgbWF0aCBkZWxpbWl0ZXJzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ0ZXh0XCIsXG4gIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhpcyBpcy5cbiAgbmFtZXM6IFtcIlxcXFwpXCIsIFwiXFxcXF1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGFsbG93ZWRJbk1hdGg6IGZhbHNlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk1pc21hdGNoZWQgXCIgKyBjb250ZXh0LmZ1bmNOYW1lKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbWF0aGNob2ljZS5qc1xuXG5cblxuXG5cblxudmFyIG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlID0gZnVuY3Rpb24gY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHN3aXRjaCAob3B0aW9ucy5zdHlsZS5zaXplKSB7XG4gICAgY2FzZSBzcmNfU3R5bGUuRElTUExBWS5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLmRpc3BsYXk7XG5cbiAgICBjYXNlIHNyY19TdHlsZS5URVhULnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdDtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlNDUklQVFNDUklQVC5zaXplOlxuICAgICAgcmV0dXJuIGdyb3VwLnNjcmlwdHNjcmlwdDtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ3JvdXAudGV4dDtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRoY2hvaWNlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDRcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1hdGhjaG9pY2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgZGlzcGxheTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1swXSksXG4gICAgICB0ZXh0OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzFdKSxcbiAgICAgIHNjcmlwdDogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1syXSksXG4gICAgICBzY3JpcHRzY3JpcHQ6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbM10pXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGJvZHkgPSBtYXRoY2hvaWNlX2Nob29zZU1hdGhTdHlsZShncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihib2R5LCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChlbGVtZW50cyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRFeHByZXNzaW9uUm93KGJvZHksIG9wdGlvbnMpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy91dGlscy9hc3NlbWJsZVN1cFN1Yi5qc1xuXG5cbi8vIEZvciBhbiBvcGVyYXRvciB3aXRoIGxpbWl0cywgYXNzZW1ibGUgdGhlIGJhc2UsIHN1cCwgYW5kIHN1YiBpbnRvIGEgc3Bhbi5cbnZhciBhc3NlbWJsZVN1cFN1Yl9hc3NlbWJsZVN1cFN1YiA9IGZ1bmN0aW9uIGFzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgc3R5bGUsIHNsYW50LCBiYXNlU2hpZnQpIHtcbiAgLy8gSUUgOCBjbGlwcyBcXGludCBpZiBpdCBpcyBpbiBhIGRpc3BsYXk6IGlubGluZS1ibG9jay4gV2Ugd3JhcCBpdFxuICAvLyBpbiBhIG5ldyBzcGFuIHNvIGl0IGlzIGFuIGlubGluZSwgYW5kIHdvcmtzLlxuICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtiYXNlXSk7XG4gIHZhciBzdWI7XG4gIHZhciBzdXA7IC8vIFdlIG1hbnVhbGx5IGhhdmUgdG8gaGFuZGxlIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMuIFRoaXMsXG4gIC8vIGFzaWRlIGZyb20gdGhlIGtlcm4gY2FsY3VsYXRpb25zLCBpcyBjb3BpZWQgZnJvbSBzdXBzdWIuXG5cbiAgaWYgKHN1cEdyb3VwKSB7XG4gICAgdmFyIGVsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdXBHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSksIG9wdGlvbnMpO1xuICAgIHN1cCA9IHtcbiAgICAgIGVsZW06IGVsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMSwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzMgLSBlbGVtLmRlcHRoKVxuICAgIH07XG4gIH1cblxuICBpZiAoc3ViR3JvdXApIHtcbiAgICB2YXIgX2VsZW0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChzdWJHcm91cCwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdWIoKSksIG9wdGlvbnMpO1xuXG4gICAgc3ViID0ge1xuICAgICAgZWxlbTogX2VsZW0sXG4gICAgICBrZXJuOiBNYXRoLm1heChvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMiwgb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzQgLSBfZWxlbS5oZWlnaHQpXG4gICAgfTtcbiAgfSAvLyBCdWlsZCB0aGUgZmluYWwgZ3JvdXAgYXMgYSB2bGlzdCBvZiB0aGUgcG9zc2libGUgc3Vic2NyaXB0LCBiYXNlLFxuICAvLyBhbmQgcG9zc2libGUgc3VwZXJzY3JpcHQuXG5cblxuICB2YXIgZmluYWxHcm91cDtcblxuICBpZiAoc3VwICYmIHN1Yikge1xuICAgIHZhciBib3R0b20gPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNSArIHN1Yi5lbGVtLmhlaWdodCArIHN1Yi5lbGVtLmRlcHRoICsgc3ViLmtlcm4gKyBiYXNlLmRlcHRoICsgYmFzZVNoaWZ0O1xuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBib3R0b20sXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdWIuZWxlbSxcbiAgICAgICAgbWFyZ2luTGVmdDogLXNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdWIua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYmFzZVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc3VwLmtlcm5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1cC5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiBzbGFudCArIFwiZW1cIlxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3ViKSB7XG4gICAgdmFyIHRvcCA9IGJhc2UuaGVpZ2h0IC0gYmFzZVNoaWZ0OyAvLyBTaGlmdCB0aGUgbGltaXRzIGJ5IHRoZSBzbGFudCBvZiB0aGUgc3ltYm9sLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBhcmUgc3VwcG9zZWQgdG8gc2hpZnQgdGhlIGxpbWl0cyBieSAxLzIgb2YgdGhlIHNsYW50LFxuICAgIC8vIGJ1dCBzaW5jZSB3ZSBhcmUgY2VudGVyaW5nIHRoZSBsaW1pdHMgYWRkaW5nIGEgZnVsbCBzbGFudCBvZlxuICAgIC8vIG1hcmdpbiB3aWxsIHNoaWZ0IGJ5IDEvMiB0aGF0LlxuXG4gICAgZmluYWxHcm91cCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwidG9wXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IHRvcCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Yi5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCJcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IHN1Yi5rZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHN1cCkge1xuICAgIHZhciBfYm90dG9tID0gYmFzZS5kZXB0aCArIGJhc2VTaGlmdDtcblxuICAgIGZpbmFsR3JvdXAgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBfYm90dG9tLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdXAua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VwLmVsZW0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IHNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGNhc2UgcHJvYmFibHkgc2hvdWxkbid0IG9jY3VyICh0aGlzIHdvdWxkIG1lYW4gdGhlXG4gICAgLy8gc3Vwc3ViIHdhcyBzZW5kaW5nIHVzIGEgZ3JvdXAgd2l0aCBubyBzdXBlcnNjcmlwdCBvclxuICAgIC8vIHN1YnNjcmlwdCkgYnV0IGJlIHNhZmUuXG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCIsIFwib3AtbGltaXRzXCJdLCBbZmluYWxHcm91cF0sIG9wdGlvbnMpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcC5qc1xuLy8gTGltaXRzLCBzeW1ib2xzXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIE1vc3Qgb3BlcmF0b3JzIGhhdmUgYSBsYXJnZSBzdWNjZXNzb3Igc3ltYm9sLCBidXQgdGhlc2UgZG9uJ3QuXG52YXIgbm9TdWNjZXNzb3IgPSBbXCJcXFxcc21hbGxpbnRcIl07IC8vIE5PVEU6IFVubGlrZSBtb3N0IGBodG1sQnVpbGRlcmBzLCB0aGlzIG9uZSBoYW5kbGVzIG5vdCBvbmx5IFwib3BcIiwgYnV0IGFsc29cbi8vIFwic3Vwc3ViXCIgc2luY2Ugc29tZSBvZiB0aGVtIChsaWtlIFxcaW50KSBjYW4gYWZmZWN0IHN1cGVyL3N1YnNjcmlwdGluZy5cblxudmFyIG9wX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JwLCBvcHRpb25zKSB7XG4gIC8vIE9wZXJhdG9ycyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLTQ0NCwgcnVsZSAxMyhhKS5cbiAgdmFyIHN1cEdyb3VwO1xuICB2YXIgc3ViR3JvdXA7XG4gIHZhciBoYXNMaW1pdHMgPSBmYWxzZTtcbiAgdmFyIGdyb3VwO1xuICB2YXIgc3VwU3ViID0gY2hlY2tOb2RlVHlwZShncnAsIFwic3Vwc3ViXCIpO1xuXG4gIGlmIChzdXBTdWIpIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGxpbWl0cywgc3Vwc3ViIHdpbGwgcGFzcyB1cyBpdHMgZ3JvdXAgdG8gaGFuZGxlLiBQdWxsXG4gICAgLy8gb3V0IHRoZSBzdXBlcnNjcmlwdCBhbmQgc3Vic2NyaXB0IGFuZCBzZXQgdGhlIGdyb3VwIHRvIHRoZSBvcCBpblxuICAgIC8vIGl0cyBiYXNlLlxuICAgIHN1cEdyb3VwID0gc3VwU3ViLnN1cDtcbiAgICBzdWJHcm91cCA9IHN1cFN1Yi5zdWI7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJvcFwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wXCIpO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gb3B0aW9ucy5zdHlsZTtcbiAgdmFyIGxhcmdlID0gZmFsc2U7XG5cbiAgaWYgKHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgJiYgZ3JvdXAuc3ltYm9sICYmICF1dGlscy5jb250YWlucyhub1N1Y2Nlc3NvciwgZ3JvdXAubmFtZSkpIHtcbiAgICAvLyBNb3N0IHN5bWJvbCBvcGVyYXRvcnMgZ2V0IGxhcmdlciBpbiBkaXNwbGF5c3R5bGUgKHJ1bGUgMTMpXG4gICAgbGFyZ2UgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGJhc2U7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIElmIHRoaXMgaXMgYSBzeW1ib2wsIGNyZWF0ZSB0aGUgc3ltYm9sLlxuICAgIHZhciBmb250TmFtZSA9IGxhcmdlID8gXCJTaXplMi1SZWd1bGFyXCIgOiBcIlNpemUxLVJlZ3VsYXJcIjtcbiAgICB2YXIgc3Rhc2ggPSBcIlwiO1xuXG4gICAgaWYgKGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paW50XCIgfHwgZ3JvdXAubmFtZSA9PT0gXCJcXFxcb2lpaW50XCIpIHtcbiAgICAgIC8vIE5vIGZvbnQgZ2x5cGhzIHlldCwgc28gdXNlIGEgZ2x5cGggdy9vIHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgc3Rhc2ggPSBncm91cC5uYW1lLnN1YnN0cigxKTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgICBncm91cC5uYW1lID0gc3Rhc2ggPT09IFwib2lpbnRcIiA/IFwiXFxcXGlpbnRcIiA6IFwiXFxcXGlpaW50XCI7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTeW1ib2woZ3JvdXAubmFtZSwgZm9udE5hbWUsIFwibWF0aFwiLCBvcHRpb25zLCBbXCJtb3BcIiwgXCJvcC1zeW1ib2xcIiwgbGFyZ2UgPyBcImxhcmdlLW9wXCIgOiBcInNtYWxsLW9wXCJdKTtcblxuICAgIGlmIChzdGFzaC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXZSdyZSBpbiBcXG9paW50IG9yIFxcb2lpaW50LiBPdmVybGF5IHRoZSBvdmFsLlxuICAgICAgLy8gVE9ETzogV2hlbiBmb250IGdseXBocyBhcmUgYXZhaWxhYmxlLCBkZWxldGUgdGhpcyBjb2RlLlxuICAgICAgdmFyIGl0YWxpYyA9IGJhc2UuaXRhbGljO1xuICAgICAgdmFyIG92YWwgPSBidWlsZENvbW1vbi5zdGF0aWNTdmcoc3Rhc2ggKyBcIlNpemVcIiArIChsYXJnZSA/IFwiMlwiIDogXCIxXCIpLCBvcHRpb25zKTtcbiAgICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGJhc2UsXG4gICAgICAgICAgc2hpZnQ6IDBcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IG92YWwsXG4gICAgICAgICAgc2hpZnQ6IGxhcmdlID8gMC4wOCA6IDBcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIGdyb3VwLm5hbWUgPSBcIlxcXFxcIiArIHN0YXNoO1xuICAgICAgYmFzZS5jbGFzc2VzLnVuc2hpZnQoXCJtb3BcIik7IC8vICRGbG93Rml4TWVcblxuICAgICAgYmFzZS5pdGFsaWMgPSBpdGFsaWM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGdyb3VwLmJvZHkpIHtcbiAgICAvLyBJZiB0aGlzIGlzIGEgbGlzdCwgY29tcG9zZSB0aGF0IGxpc3QuXG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcblxuICAgIGlmIChpbm5lci5sZW5ndGggPT09IDEgJiYgaW5uZXJbMF0gaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUpIHtcbiAgICAgIGJhc2UgPSBpbm5lclswXTtcbiAgICAgIGJhc2UuY2xhc3Nlc1swXSA9IFwibW9wXCI7IC8vIHJlcGxhY2Ugb2xkIG1jbGFzc1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoaW5uZXIpLCBvcHRpb25zKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQnVpbGQgdGhlIHRleHQgZnJvbSB0aGVcbiAgICAvLyBvcGVyYXRvcidzIG5hbWUuXG4gICAgLy8gVE9ETyhlbWlseSk6IEFkZCBhIHNwYWNlIGluIHRoZSBtaWRkbGUgb2Ygc29tZSBvZiB0aGVzZVxuICAgIC8vIG9wZXJhdG9ycywgbGlrZSBcXGxpbXN1cFxuICAgIHZhciBvdXRwdXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZ3JvdXAubmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgb3V0cHV0LnB1c2goYnVpbGRDb21tb24ubWF0aHN5bShncm91cC5uYW1lW2ldLCBncm91cC5tb2RlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcFwiXSwgb3V0cHV0LCBvcHRpb25zKTtcbiAgfSAvLyBJZiBjb250ZW50IG9mIG9wIGlzIGEgc2luZ2xlIHN5bWJvbCwgc2hpZnQgaXQgdmVydGljYWxseS5cblxuXG4gIHZhciBiYXNlU2hpZnQgPSAwO1xuICB2YXIgc2xhbnQgPSAwO1xuXG4gIGlmICgoYmFzZSBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSB8fCBncm91cC5uYW1lID09PSBcIlxcXFxvaWludFwiIHx8IGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paWludFwiKSAmJiAhZ3JvdXAuc3VwcHJlc3NCYXNlU2hpZnQpIHtcbiAgICAvLyBXZSBzdXBwcmVzcyB0aGUgc2hpZnQgb2YgdGhlIGJhc2Ugb2YgXFxvdmVyc2V0IGFuZCBcXHVuZGVyc2V0LiBPdGhlcndpc2UsXG4gICAgLy8gc2hpZnQgdGhlIHN5bWJvbCBzbyBpdHMgY2VudGVyIGxpZXMgb24gdGhlIGF4aXMgKHJ1bGUgMTMpLiBJdFxuICAgIC8vIGFwcGVhcnMgdGhhdCBvdXIgZm9udHMgaGF2ZSB0aGUgY2VudGVycyBvZiB0aGUgc3ltYm9scyBhbHJlYWR5XG4gICAgLy8gYWxtb3N0IG9uIHRoZSBheGlzLCBzbyB0aGVzZSBudW1iZXJzIGFyZSB2ZXJ5IHNtYWxsLiBOb3RlIHdlXG4gICAgLy8gZG9uJ3QgYWN0dWFsbHkgYXBwbHkgdGhpcyBoZXJlLCBidXQgaW5zdGVhZCBpdCBpcyB1c2VkIGVpdGhlciBpblxuICAgIC8vIHRoZSB2bGlzdCBjcmVhdGlvbiBvciBzZXBhcmF0ZWx5IHdoZW4gdGhlcmUgYXJlIG5vIGxpbWl0cy5cbiAgICBiYXNlU2hpZnQgPSAoYmFzZS5oZWlnaHQgLSBiYXNlLmRlcHRoKSAvIDIgLSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDsgLy8gVGhlIHNsYW50IG9mIHRoZSBzeW1ib2wgaXMganVzdCBpdHMgaXRhbGljIGNvcnJlY3Rpb24uXG4gICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgc2xhbnQgPSBiYXNlLml0YWxpYztcbiAgfVxuXG4gIGlmIChoYXNMaW1pdHMpIHtcbiAgICByZXR1cm4gYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIoYmFzZSwgc3VwR3JvdXAsIHN1Ykdyb3VwLCBvcHRpb25zLCBzdHlsZSwgc2xhbnQsIGJhc2VTaGlmdCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2VTaGlmdCkge1xuICAgICAgYmFzZS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgIGJhc2Uuc3R5bGUudG9wID0gYmFzZVNoaWZ0ICsgXCJlbVwiO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlO1xuICB9XG59O1xuXG52YXIgb3BfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGU7XG5cbiAgaWYgKGdyb3VwLnN5bWJvbCkge1xuICAgIC8vIFRoaXMgaXMgYSBzeW1ib2wuIEp1c3QgYWRkIHRoZSBzeW1ib2wuXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgW2J1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLm5hbWUsIGdyb3VwLm1vZGUpXSk7XG5cbiAgICBpZiAodXRpbHMuY29udGFpbnMobm9TdWNjZXNzb3IsIGdyb3VwLm5hbWUpKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImxhcmdlb3BcIiwgXCJmYWxzZVwiKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAuYm9keSkge1xuICAgIC8vIFRoaXMgaXMgYW4gb3BlcmF0b3Igd2l0aCBjaGlsZHJlbi4gQWRkIHRoZW0uXG4gICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlX01hdGhOb2RlKFwibW9cIiwgYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIGEgdGV4dCBvcGVyYXRvci4gQWRkIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBmcm9tIHRoZVxuICAgIC8vIG9wZXJhdG9yJ3MgbmFtZS5cbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtaVwiLCBbbmV3IG1hdGhNTFRyZWVfVGV4dE5vZGUoZ3JvdXAubmFtZS5zbGljZSgxKSldKTsgLy8gQXBwZW5kIGFuIDxtbz4mQXBwbHlGdW5jdGlvbjs8L21vPi5cbiAgICAvLyByZWY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMtTWF0aE1ML2NoYXAzXzIuaHRtbCNzZWMzLjIuNFxuXG4gICAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gICAgaWYgKGdyb3VwLnBhcmVudElzU3VwU3ViKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbbm9kZSwgb3BlcmF0b3JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG5ld0RvY3VtZW50RnJhZ21lbnQoW25vZGUsIG9wZXJhdG9yXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgc2luZ2xlQ2hhckJpZ09wcyA9IHtcbiAgXCJcXHUyMjBGXCI6IFwiXFxcXHByb2RcIixcbiAgXCJcXHUyMjEwXCI6IFwiXFxcXGNvcHJvZFwiLFxuICBcIlxcdTIyMTFcIjogXCJcXFxcc3VtXCIsXG4gIFwiXFx1MjJDMFwiOiBcIlxcXFxiaWd3ZWRnZVwiLFxuICBcIlxcdTIyQzFcIjogXCJcXFxcYmlndmVlXCIsXG4gIFwiXFx1MjJDMlwiOiBcIlxcXFxiaWdjYXBcIixcbiAgXCJcXHUyMkMzXCI6IFwiXFxcXGJpZ2N1cFwiLFxuICBcIlxcdTJBMDBcIjogXCJcXFxcYmlnb2RvdFwiLFxuICBcIlxcdTJBMDFcIjogXCJcXFxcYmlnb3BsdXNcIixcbiAgXCJcXHUyQTAyXCI6IFwiXFxcXGJpZ290aW1lc1wiLFxuICBcIlxcdTJBMDRcIjogXCJcXFxcYmlndXBsdXNcIixcbiAgXCJcXHUyQTA2XCI6IFwiXFxcXGJpZ3NxY3VwXCJcbn07XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxjb3Byb2RcIiwgXCJcXFxcYmlndmVlXCIsIFwiXFxcXGJpZ3dlZGdlXCIsIFwiXFxcXGJpZ3VwbHVzXCIsIFwiXFxcXGJpZ2NhcFwiLCBcIlxcXFxiaWdjdXBcIiwgXCJcXFxcaW50b3BcIiwgXCJcXFxccHJvZFwiLCBcIlxcXFxzdW1cIiwgXCJcXFxcYmlnb3RpbWVzXCIsIFwiXFxcXGJpZ29wbHVzXCIsIFwiXFxcXGJpZ29kb3RcIiwgXCJcXFxcYmlnc3FjdXBcIiwgXCJcXFxcc21hbGxpbnRcIiwgXCJcXHUyMjBGXCIsIFwiXFx1MjIxMFwiLCBcIlxcdTIyMTFcIiwgXCJcXHUyMkMwXCIsIFwiXFx1MjJDMVwiLCBcIlxcdTIyQzJcIiwgXCJcXHUyMkMzXCIsIFwiXFx1MkEwMFwiLCBcIlxcdTJBMDFcIiwgXCJcXHUyQTAyXCIsIFwiXFx1MkEwNFwiLCBcIlxcdTJBMDZcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgZk5hbWUgPSBmdW5jTmFtZTtcblxuICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZOYW1lID0gc2luZ2xlQ2hhckJpZ09wc1tmTmFtZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiB0cnVlLFxuICAgICAgbmFtZTogZk5hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogb3BfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBOb3RlOiBjYWxsaW5nIGRlZmluZUZ1bmN0aW9uIHdpdGggYSB0eXBlIHRoYXQncyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBvbmx5XG4vLyB3b3JrcyBiZWNhdXNlIHRoZSBzYW1lIGh0bWxCdWlsZGVyIGFuZCBtYXRobWxCdWlsZGVyIGFyZSBiZWluZyB1c2VkLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRob3BcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIFRoZXJlIGFyZSAyIGZsYWdzIGZvciBvcGVyYXRvcnM7IHdoZXRoZXIgdGhleSBwcm9kdWNlIGxpbWl0cyBpblxuLy8gZGlzcGxheXN0eWxlLCBhbmQgd2hldGhlciB0aGV5IGFyZSBzeW1ib2xzIGFuZCBzaG91bGQgZ3JvdyBpblxuLy8gZGlzcGxheXN0eWxlLiBUaGVzZSBmb3VyIGdyb3VwcyBjb3ZlciB0aGUgZm91ciBwb3NzaWJsZSBjaG9pY2VzLlxuXG52YXIgc2luZ2xlQ2hhckludGVncmFscyA9IHtcbiAgXCJcXHUyMjJCXCI6IFwiXFxcXGludFwiLFxuICBcIlxcdTIyMkNcIjogXCJcXFxcaWludFwiLFxuICBcIlxcdTIyMkRcIjogXCJcXFxcaWlpbnRcIixcbiAgXCJcXHUyMjJFXCI6IFwiXFxcXG9pbnRcIixcbiAgXCJcXHUyMjJGXCI6IFwiXFxcXG9paW50XCIsXG4gIFwiXFx1MjIzMFwiOiBcIlxcXFxvaWlpbnRcIlxufTsgLy8gTm8gbGltaXRzLCBub3Qgc3ltYm9sc1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxhcmNzaW5cIiwgXCJcXFxcYXJjY29zXCIsIFwiXFxcXGFyY3RhblwiLCBcIlxcXFxhcmN0Z1wiLCBcIlxcXFxhcmNjdGdcIiwgXCJcXFxcYXJnXCIsIFwiXFxcXGNoXCIsIFwiXFxcXGNvc1wiLCBcIlxcXFxjb3NlY1wiLCBcIlxcXFxjb3NoXCIsIFwiXFxcXGNvdFwiLCBcIlxcXFxjb3RnXCIsIFwiXFxcXGNvdGhcIiwgXCJcXFxcY3NjXCIsIFwiXFxcXGN0Z1wiLCBcIlxcXFxjdGhcIiwgXCJcXFxcZGVnXCIsIFwiXFxcXGRpbVwiLCBcIlxcXFxleHBcIiwgXCJcXFxcaG9tXCIsIFwiXFxcXGtlclwiLCBcIlxcXFxsZ1wiLCBcIlxcXFxsblwiLCBcIlxcXFxsb2dcIiwgXCJcXFxcc2VjXCIsIFwiXFxcXHNpblwiLCBcIlxcXFxzaW5oXCIsIFwiXFxcXHNoXCIsIFwiXFxcXHRhblwiLCBcIlxcXFx0YW5oXCIsIFwiXFxcXHRnXCIsIFwiXFxcXHRoXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBuYW1lOiBmdW5jTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIExpbWl0cywgbm90IHN5bWJvbHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm9wXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGV0XCIsIFwiXFxcXGdjZFwiLCBcIlxcXFxpbmZcIiwgXCJcXFxcbGltXCIsIFwiXFxcXG1heFwiLCBcIlxcXFxtaW5cIiwgXCJcXFxcUHJcIiwgXCJcXFxcc3VwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiB0cnVlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgIG5hbWU6IGZ1bmNOYW1lXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTsgLy8gTm8gbGltaXRzLCBzeW1ib2xzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXGludFwiLCBcIlxcXFxpaW50XCIsIFwiXFxcXGlpaW50XCIsIFwiXFxcXG9pbnRcIiwgXCJcXFxcb2lpbnRcIiwgXCJcXFxcb2lpaW50XCIsIFwiXFx1MjIyQlwiLCBcIlxcdTIyMkNcIiwgXCJcXHUyMjJEXCIsIFwiXFx1MjIyRVwiLCBcIlxcdTIyMkZcIiwgXCJcXHUyMjMwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNSkge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNS5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjUuZnVuY05hbWU7XG4gICAgdmFyIGZOYW1lID0gZnVuY05hbWU7XG5cbiAgICBpZiAoZk5hbWUubGVuZ3RoID09PSAxKSB7XG4gICAgICBmTmFtZSA9IHNpbmdsZUNoYXJJbnRlZ3JhbHNbZk5hbWVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm9wXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxpbWl0czogZmFsc2UsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IHRydWUsXG4gICAgICBuYW1lOiBmTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3BlcmF0b3JuYW1lLmpzXG5cblxuXG5cblxuXG5cblxuLy8gTk9URTogVW5saWtlIG1vc3QgYGh0bWxCdWlsZGVyYHMsIHRoaXMgb25lIGhhbmRsZXMgbm90IG9ubHlcbi8vIFwib3BlcmF0b3JuYW1lXCIsIGJ1dCBhbHNvICBcInN1cHN1YlwiIHNpbmNlIFxcb3BlcmF0b3JuYW1lKiBjYW5cbnZhciBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gT3BlcmF0b3JzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMtNDQ0LCBydWxlIDEzKGEpLlxuICB2YXIgc3VwR3JvdXA7XG4gIHZhciBzdWJHcm91cDtcbiAgdmFyIGhhc0xpbWl0cyA9IGZhbHNlO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIHdlIGhhdmUgbGltaXRzLCBzdXBzdWIgd2lsbCBwYXNzIHVzIGl0cyBncm91cCB0byBoYW5kbGUuIFB1bGxcbiAgICAvLyBvdXQgdGhlIHN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHQgYW5kIHNldCB0aGUgZ3JvdXAgdG8gdGhlIG9wIGluXG4gICAgLy8gaXRzIGJhc2UuXG4gICAgc3VwR3JvdXAgPSBzdXBTdWIuc3VwO1xuICAgIHN1Ykdyb3VwID0gc3VwU3ViLnN1YjtcbiAgICBncm91cCA9IGFzc2VydE5vZGVUeXBlKHN1cFN1Yi5iYXNlLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgICBoYXNMaW1pdHMgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoZ3JwLCBcIm9wZXJhdG9ybmFtZVwiKTtcbiAgfVxuXG4gIHZhciBiYXNlO1xuXG4gIGlmIChncm91cC5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHkubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgLy8gJEZsb3dGaXhNZTogQ2hlY2sgaWYgdGhlIG5vZGUgaGFzIGEgc3RyaW5nIGB0ZXh0YCBwcm9wZXJ0eS5cbiAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZC50ZXh0O1xuXG4gICAgICBpZiAodHlwZW9mIGNoaWxkVGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IGNoaWxkLm1vZGUsXG4gICAgICAgICAgdGV4dDogY2hpbGRUZXh0XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfSk7IC8vIENvbnNvbGlkYXRlIGZ1bmN0aW9uIG5hbWVzIGludG8gc3ltYm9sIGNoYXJhY3RlcnMuXG5cbiAgICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSwgdHJ1ZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IGV4cHJlc3Npb25baV07XG5cbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgICAgICAvLyBQZXIgYW1zb3BuIHBhY2thZ2UsXG4gICAgICAgIC8vIGNoYW5nZSBtaW51cyB0byBoeXBoZW4gYW5kIFxcYXN0IHRvIGFzdGVyaXNrXG4gICAgICAgIGNoaWxkLnRleHQgPSBjaGlsZC50ZXh0LnJlcGxhY2UoL1xcdTIyMTIvLCBcIi1cIikucmVwbGFjZSgvXFx1MjIxNy8sIFwiKlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBleHByZXNzaW9uLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBbXSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaGFzTGltaXRzKSB7XG4gICAgcmV0dXJuIGFzc2VtYmxlU3VwU3ViX2Fzc2VtYmxlU3VwU3ViKGJhc2UsIHN1cEdyb3VwLCBzdWJHcm91cCwgb3B0aW9ucywgb3B0aW9ucy5zdHlsZSwgMCwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbn07XG5cbnZhciBvcGVyYXRvcm5hbWVfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gVGhlIHN0ZXBzIHRha2VuIGhlcmUgYXJlIHNpbWlsYXIgdG8gdGhlIGh0bWwgdmVyc2lvbi5cbiAgdmFyIGV4cHJlc3Npb24gPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoRm9udChcIm1hdGhybVwiKSk7IC8vIElzIGV4cHJlc3Npb24gYSBzdHJpbmcgb3IgaGFzIGl0IHNvbWV0aGluZyBsaWtlIGEgZnJhY3Rpb24/XG5cbiAgdmFyIGlzQWxsU3RyaW5nID0gdHJ1ZTsgLy8gZGVmYXVsdFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gZXhwcmVzc2lvbltpXTtcblxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5TcGFjZU5vZGUpIHsvLyBEbyBub3RoaW5nXG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5NYXRoTm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIm1pXCI6XG4gICAgICAgIGNhc2UgXCJtblwiOlxuICAgICAgICBjYXNlIFwibXNcIjpcbiAgICAgICAgY2FzZSBcIm1zcGFjZVwiOlxuICAgICAgICBjYXNlIFwibXRleHRcIjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gRG8gbm90aGluZyB5ZXQuXG5cbiAgICAgICAgY2FzZSBcIm1vXCI6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGNoaWxkIGluc3RhbmNlb2YgbWF0aE1MVHJlZS5UZXh0Tm9kZSkge1xuICAgICAgICAgICAgICBjaGlsZC50ZXh0ID0gY2hpbGQudGV4dC5yZXBsYWNlKC9cXHUyMjEyLywgXCItXCIpLnJlcGxhY2UoL1xcdTIyMTcvLCBcIipcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpc0FsbFN0cmluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0FsbFN0cmluZykge1xuICAgIC8vIFdyaXRlIGEgc2luZ2xlIFRleHROb2RlIGluc3RlYWQgb2YgbXVsdGlwbGUgbmVzdGVkIHRhZ3MuXG4gICAgdmFyIHdvcmQgPSBleHByZXNzaW9uLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudG9UZXh0KCk7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgICBleHByZXNzaW9uID0gW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKHdvcmQpXTtcbiAgfVxuXG4gIHZhciBpZGVudGlmaWVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBleHByZXNzaW9uKTtcbiAgaWRlbnRpZmllci5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCBcIm5vcm1hbFwiKTsgLy8gXFx1MjA2MSBpcyB0aGUgc2FtZSBhcyAmQXBwbHlGdW5jdGlvbjtcbiAgLy8gcmVmOiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2NoYXJzZXRzL3JlZl9odG1sX2VudGl0aWVzX2EuYXNwXG5cbiAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJcXHUyMDYxXCIsIFwidGV4dFwiKV0pO1xuXG4gIGlmIChncm91cC5wYXJlbnRJc1N1cFN1Yikge1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtpZGVudGlmaWVyLCBvcGVyYXRvcl0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtYXRoTUxUcmVlLm5ld0RvY3VtZW50RnJhZ21lbnQoW2lkZW50aWZpZXIsIG9wZXJhdG9yXSk7XG4gIH1cbn07IC8vIFxcb3BlcmF0b3JuYW1lXG4vLyBhbXNvcG4uZHR4OiBcXG1hdGhvcHsjMVxca2VyblxcekBcXG9wZXJhdG9yQGZvbnQjM31cXG5ld21jb2Rlc0BcblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gIG5hbWVzOiBbXCJcXFxcb3BlcmF0b3JuYW1lXCIsIFwiXFxcXG9wZXJhdG9ybmFtZSpcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BlcmF0b3JuYW1lXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgYWx3YXlzSGFuZGxlU3VwU3ViOiBmdW5jTmFtZSA9PT0gXCJcXFxcb3BlcmF0b3JuYW1lKlwiLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wZXJhdG9ybmFtZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcmRncm91cC5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJvcmRncm91cFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoZ3JvdXAuc2VtaXNpbXBsZSkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucywgdHJ1ZSksIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvb3ZlcmxpbmUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVybGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3ZlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIE92ZXJsaW5lcyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZyA0NDMsIFJ1bGUgOS5cbiAgICAvLyBCdWlsZCB0aGUgaW5uZXIgZ3JvdXAgaW4gdGhlIGNyYW1wZWQgc3R5bGUuXG4gICAgdmFyIGlubmVyR3JvdXAgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTsgLy8gQ3JlYXRlIHRoZSBsaW5lIGFib3ZlIHRoZSBib2R5XG5cbiAgICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcIm92ZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMyAqIGRlZmF1bHRSdWxlVGhpY2tuZXNzXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBsaW5lXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcIm92ZXJsaW5lXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBvcGVyYXRvciA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKFwiXFx1MjAzRVwiKV0pO1xuICAgIG9wZXJhdG9yLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwidHJ1ZVwiKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW92ZXJcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyksIG9wZXJhdG9yXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhY2NlbnRcIiwgXCJ0cnVlXCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9waGFudG9tLmpzXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInBoYW50b21cIixcbiAgbmFtZXM6IFtcIlxcXFxwaGFudG9tXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInBoYW50b21cIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSwgZmFsc2UpOyAvLyBcXHBoYW50b20gaXNuJ3Qgc3VwcG9zZWQgdG8gYWZmZWN0IHRoZSBlbGVtZW50cyBpdCBjb250YWlucy5cbiAgICAvLyBTZWUgXCJjb2xvclwiIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGhhbnRvbVwiLCBpbm5lcik7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcaHBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJocGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXSwgW2J1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSldKTtcbiAgICBub2RlLmhlaWdodCA9IDA7XG4gICAgbm9kZS5kZXB0aCA9IDA7XG5cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5baV0uaGVpZ2h0ID0gMDtcbiAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5kZXB0aCA9IDA7XG4gICAgICB9XG4gICAgfSAvLyBTZWUgc21hc2ggZm9yIGNvbW1lbnQgcmU6IHVzZSBvZiBtYWtlVkxpc3RcblxuXG4gICAgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBGb3Igc3BhY2luZywgVGVYIHRyZWF0cyBcXHNtYXNoIGFzIGEgbWF0aCBncm91cCAoc2FtZSBzcGFjaW5nIGFzIG9yZCkuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW25vZGVdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMHB4XCIpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInZwaGFudG9tXCIsXG4gIG5hbWVzOiBbXCJcXFxcdnBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ2cGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLndpdGhQaGFudG9tKCkpXSk7XG4gICAgdmFyIGZpeCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImZpeFwiXSwgW10pO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicmxhcFwiXSwgW2lubmVyLCBmaXhdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChncm91cC5ib2R5KSwgb3B0aW9ucyk7XG4gICAgdmFyIHBoYW50b20gPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbcGhhbnRvbV0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3JhaXNlYm94LmpzXG5cblxuXG5cblxuXG4gLy8gQm94IG1hbmlwdWxhdGlvblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicmFpc2Vib3hcIixcbiAgbmFtZXM6IFtcIlxcXFxyYWlzZWJveFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFyZ1R5cGVzOiBbXCJzaXplXCIsIFwiaGJveFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYW1vdW50ID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJzaXplXCIpLnZhbHVlO1xuICAgIHZhciBib2R5ID0gYXJnc1sxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJyYWlzZWJveFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBkeTogYW1vdW50LFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBib2R5ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyk7XG4gICAgdmFyIGR5ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5keSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgIHBvc2l0aW9uRGF0YTogLWR5LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcbiAgICB2YXIgZHkgPSBncm91cC5keS5udW1iZXIgKyBncm91cC5keS51bml0O1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBkeSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3J1bGUuanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicnVsZVwiLFxuICBuYW1lczogW1wiXFxcXHJ1bGVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIiwgXCJzaXplXCIsIFwic2l6ZVwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNoaWZ0ID0gb3B0QXJnc1swXTtcbiAgICB2YXIgd2lkdGggPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInNpemVcIik7XG4gICAgdmFyIGhlaWdodCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwic2l6ZVwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJydWxlXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIHNoaWZ0OiBzaGlmdCAmJiBhc3NlcnROb2RlVHlwZShzaGlmdCwgXCJzaXplXCIpLnZhbHVlLFxuICAgICAgd2lkdGg6IHdpZHRoLnZhbHVlLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQudmFsdWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBNYWtlIGFuIGVtcHR5IHNwYW4gZm9yIHRoZSBydWxlXG4gICAgdmFyIHJ1bGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwicnVsZVwiXSwgW10sIG9wdGlvbnMpOyAvLyBDYWxjdWxhdGUgdGhlIHNoaWZ0LCB3aWR0aCwgYW5kIGhlaWdodCBvZiB0aGUgcnVsZSwgYW5kIGFjY291bnQgZm9yIHVuaXRzXG5cbiAgICB2YXIgd2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLndpZHRoLCBvcHRpb25zKTtcbiAgICB2YXIgaGVpZ2h0ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5oZWlnaHQsIG9wdGlvbnMpO1xuICAgIHZhciBzaGlmdCA9IGdyb3VwLnNoaWZ0ID8gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaGlmdCwgb3B0aW9ucykgOiAwOyAvLyBTdHlsZSB0aGUgcnVsZSB0byB0aGUgcmlnaHQgc2l6ZVxuXG4gICAgcnVsZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoID0gd2lkdGggKyBcImVtXCI7XG4gICAgcnVsZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCA9IGhlaWdodCArIFwiZW1cIjtcbiAgICBydWxlLnN0eWxlLmJvdHRvbSA9IHNoaWZ0ICsgXCJlbVwiOyAvLyBSZWNvcmQgdGhlIGhlaWdodCBhbmQgd2lkdGhcblxuICAgIHJ1bGUud2lkdGggPSB3aWR0aDtcbiAgICBydWxlLmhlaWdodCA9IGhlaWdodCArIHNoaWZ0O1xuICAgIHJ1bGUuZGVwdGggPSAtc2hpZnQ7IC8vIEZvbnQgc2l6ZSBpcyB0aGUgbnVtYmVyIGxhcmdlIGVub3VnaCB0aGF0IHRoZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXNlcnZlIGF0IGxlYXN0IGBhYnNIZWlnaHRgIHNwYWNlIGFib3ZlIHRoZSBiYXNlbGluZS5cbiAgICAvLyBUaGUgMS4xMjUgZmFjdG9yIHdhcyBlbXBpcmljYWxseSBkZXRlcm1pbmVkXG5cbiAgICBydWxlLm1heEZvbnRTaXplID0gaGVpZ2h0ICogMS4xMjUgKiBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHJldHVybiBydWxlO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgc2hpZnQgPSBncm91cC5zaGlmdCA/IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuc2hpZnQsIG9wdGlvbnMpIDogMDtcbiAgICB2YXIgY29sb3IgPSBvcHRpb25zLmNvbG9yICYmIG9wdGlvbnMuZ2V0Q29sb3IoKSB8fCBcImJsYWNrXCI7XG4gICAgdmFyIHJ1bGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zcGFjZVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIm1hdGhiYWNrZ3JvdW5kXCIsIGNvbG9yKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIHdpZHRoICsgXCJlbVwiKTtcbiAgICBydWxlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBoZWlnaHQgKyBcImVtXCIpO1xuICAgIHZhciB3cmFwcGVyID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtydWxlXSk7XG5cbiAgICBpZiAoc2hpZnQgPj0gMCkge1xuICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIrXCIgKyBzaGlmdCArIFwiZW1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIHNoaWZ0ICsgXCJlbVwiKTtcbiAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIrXCIgKyAtc2hpZnQgKyBcImVtXCIpO1xuICAgIH1cblxuICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBzaGlmdCArIFwiZW1cIik7XG4gICAgcmV0dXJuIHdyYXBwZXI7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NpemluZy5qc1xuXG5cblxuXG5cbmZ1bmN0aW9uIHNpemluZ0dyb3VwKHZhbHVlLCBvcHRpb25zLCBiYXNlT3B0aW9ucykge1xuICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKHZhbHVlLCBvcHRpb25zLCBmYWxzZSk7XG4gIHZhciBtdWx0aXBsaWVyID0gb3B0aW9ucy5zaXplTXVsdGlwbGllciAvIGJhc2VPcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBBZGQgc2l6ZS1yZXNldHRpbmcgY2xhc3NlcyB0byB0aGUgaW5uZXIgbGlzdCBhbmQgc2V0IG1heEZvbnRTaXplXG4gIC8vIG1hbnVhbGx5LiBIYW5kbGUgbmVzdGVkIHNpemUgY2hhbmdlcy5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBvcyA9IGlubmVyW2ldLmNsYXNzZXMuaW5kZXhPZihcInNpemluZ1wiKTtcblxuICAgIGlmIChwb3MgPCAwKSB7XG4gICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpbm5lcltpXS5jbGFzc2VzLCBvcHRpb25zLnNpemluZ0NsYXNzZXMoYmFzZU9wdGlvbnMpKTtcbiAgICB9IGVsc2UgaWYgKGlubmVyW2ldLmNsYXNzZXNbcG9zICsgMV0gPT09IFwicmVzZXQtc2l6ZVwiICsgb3B0aW9ucy5zaXplKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgbmVzdGVkIHNpemUgY2hhbmdlOiBlLmcuLCBpbm5lcltpXSBpcyB0aGUgXCJiXCIgaW5cbiAgICAgIC8vIGBcXEh1Z2UgYSBcXHNtYWxsIGJgLiBPdmVycmlkZSB0aGUgb2xkIHNpemUgKHRoZSBgcmVzZXQtYCBjbGFzcylcbiAgICAgIC8vIGJ1dCBub3QgdGhlIG5ldyBzaXplLlxuICAgICAgaW5uZXJbaV0uY2xhc3Nlc1twb3MgKyAxXSA9IFwicmVzZXQtc2l6ZVwiICsgYmFzZU9wdGlvbnMuc2l6ZTtcbiAgICB9XG5cbiAgICBpbm5lcltpXS5oZWlnaHQgKj0gbXVsdGlwbGllcjtcbiAgICBpbm5lcltpXS5kZXB0aCAqPSBtdWx0aXBsaWVyO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChpbm5lcik7XG59XG52YXIgc2l6ZUZ1bmNzID0gW1wiXFxcXHRpbnlcIiwgXCJcXFxcc2l4cHRzaXplXCIsIFwiXFxcXHNjcmlwdHNpemVcIiwgXCJcXFxcZm9vdG5vdGVzaXplXCIsIFwiXFxcXHNtYWxsXCIsIFwiXFxcXG5vcm1hbHNpemVcIiwgXCJcXFxcbGFyZ2VcIiwgXCJcXFxcTGFyZ2VcIiwgXCJcXFxcTEFSR0VcIiwgXCJcXFxcaHVnZVwiLCBcIlxcXFxIdWdlXCJdO1xudmFyIHNpemluZ19odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIC8vIEhhbmRsZSBzaXppbmcgb3BlcmF0b3JzIGxpa2UgXFxIdWdlLiBSZWFsIFRlWCBkb2Vzbid0IGFjdHVhbGx5IGFsbG93XG4gIC8vIHRoZXNlIGZ1bmN0aW9ucyBpbnNpZGUgb2YgbWF0aCBleHByZXNzaW9ucywgc28gd2UgZG8gc29tZSBzcGVjaWFsXG4gIC8vIGhhbmRsaW5nLlxuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShncm91cC5zaXplKTtcbiAgcmV0dXJuIHNpemluZ0dyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzaXppbmdcIixcbiAgbmFtZXM6IHNpemVGdW5jcyxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzaXppbmdcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHNpemUgdG8gdXNlIGJhc2VkIG9uIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBhYm92ZVxuICAgICAgc2l6ZTogc2l6ZUZ1bmNzLmluZGV4T2YoZnVuY05hbWUpICsgMSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogc2l6aW5nX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1NpemUoZ3JvdXAuc2l6ZSk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG5ld09wdGlvbnMpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpOyAvLyBUT0RPKGVtaWx5KTogVGhpcyBkb2Vzbid0IHByb2R1Y2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgbmVzdGVkIHNpemVcbiAgICAvLyBjaGFuZ2VzLCBiZWNhdXNlIHdlIGRvbid0IGtlZXAgc3RhdGUgb2Ygd2hhdCBzdHlsZSB3ZSdyZSBjdXJyZW50bHlcbiAgICAvLyBpbiwgc28gd2UgY2FuJ3QgcmVzZXQgdGhlIHNpemUgdG8gbm9ybWFsIGJlZm9yZSBjaGFuZ2luZyBpdC4gIE5vd1xuICAgIC8vIHRoYXQgd2UncmUgcGFzc2luZyBhbiBvcHRpb25zIHBhcmFtZXRlciB3ZSBzaG91bGQgYmUgYWJsZSB0byBmaXhcbiAgICAvLyB0aGlzLlxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoc2l6ZVwiLCBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyICsgXCJlbVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc21hc2guanNcbi8vIHNtYXNoLCB3aXRoIG9wdGlvbmFsIFt0Yl0sIGFzIGluIEFNU1xuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNtYXNoXCIsXG4gIG5hbWVzOiBbXCJcXFxcc21hc2hcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIHNtYXNoSGVpZ2h0ID0gZmFsc2U7XG4gICAgdmFyIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICB2YXIgdGJBcmcgPSBvcHRBcmdzWzBdICYmIGFzc2VydE5vZGVUeXBlKG9wdEFyZ3NbMF0sIFwib3JkZ3JvdXBcIik7XG5cbiAgICBpZiAodGJBcmcpIHtcbiAgICAgIC8vIE9wdGlvbmFsIFt0Yl0gYXJndW1lbnQgaXMgZW5nYWdlZC5cbiAgICAgIC8vIHJlZjogYW1zbWF0aDogXFxyZW5ld2NvbW1hbmR7XFxzbWFzaH1bMV1bdGJdeyVcbiAgICAgIC8vICAgICAgICAgICAgICAgZGVmXFxtYkB0e1xcaHR9XFxkZWZcXG1iQGJ7XFxkcH1cXGRlZlxcbWJAdGJ7XFxodFxcekBcXHpAXFxkcH0lXG4gICAgICB2YXIgbGV0dGVyID0gXCJcIjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YkFyZy5ib2R5Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBub2RlID0gdGJBcmcuYm9keVtpXTsgLy8gJEZsb3dGaXhNZTogTm90IGV2ZXJ5IG5vZGUgdHlwZSBoYXMgYSBgdGV4dGAgcHJvcGVydHkuXG5cbiAgICAgICAgbGV0dGVyID0gbm9kZS50ZXh0O1xuXG4gICAgICAgIGlmIChsZXR0ZXIgPT09IFwidFwiKSB7XG4gICAgICAgICAgc21hc2hIZWlnaHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGxldHRlciA9PT0gXCJiXCIpIHtcbiAgICAgICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbWFzaEhlaWdodCA9IGZhbHNlO1xuICAgICAgICAgIHNtYXNoRGVwdGggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzbWFzaEhlaWdodCA9IHRydWU7XG4gICAgICBzbWFzaERlcHRoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic21hc2hcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHNtYXNoSGVpZ2h0OiBzbWFzaEhlaWdodCxcbiAgICAgIHNtYXNoRGVwdGg6IHNtYXNoRGVwdGhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmICghZ3JvdXAuc21hc2hIZWlnaHQgJiYgIWdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5oZWlnaHQgPSAwOyAvLyBJbiBvcmRlciB0byBpbmZsdWVuY2UgbWFrZVZMaXN0LCB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBjaGlsZHJlbi5cblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuZGVwdGggPSAwO1xuXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuW19pXS5kZXB0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlJ3ZlIHJlc2V0IHRoZSBUZVgtbGlrZSBoZWlnaHQgYW5kIGRlcHRoIHZhbHVlcy5cbiAgICAvLyBCdXQgdGhlIHNwYW4gc3RpbGwgaGFzIGFuIEhUTUwgbGluZSBoZWlnaHQuXG4gICAgLy8gbWFrZVZMaXN0IGFwcGxpZXMgXCJkaXNwbGF5OiB0YWJsZS1jZWxsXCIsIHdoaWNoIHByZXZlbnRzIHRoZSBicm93c2VyXG4gICAgLy8gZnJvbSBhY3Rpbmcgb24gdGhhdCBsaW5lIGhlaWdodC4gU28gd2UnbGwgY2FsbCBtYWtlVkxpc3Qgbm93LlxuXG5cbiAgICB2YXIgc21hc2hlZE5vZGUgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogbm9kZVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTsgLy8gRm9yIHNwYWNpbmcsIFRlWCB0cmVhdHMgXFxocGhhbnRvbSBhcyBhIG1hdGggZ3JvdXAgKHNhbWUgc3BhY2luZyBhcyBvcmQpLlxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIl0sIFtzbWFzaGVkTm9kZV0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyldKTtcblxuICAgIGlmIChncm91cC5zbWFzaEhlaWdodCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoRGVwdGgpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZGVwdGhcIiwgXCIwcHhcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3NxcnQuanNcblxuXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNxcnRcIixcbiAgbmFtZXM6IFtcIlxcXFxzcXJ0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgaW5kZXggPSBvcHRBcmdzWzBdO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzcXJ0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBpbmRleDogaW5kZXhcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBTcXVhcmUgcm9vdHMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0MywgUnVsZSAxMS5cbiAgICAvLyBGaXJzdCwgd2UgZG8gdGhlIHNhbWUgc3RlcHMgYXMgaW4gb3ZlcmxpbmUgdG8gYnVpbGQgdGhlIGlubmVyIGdyb3VwXG4gICAgLy8gYW5kIGxpbmVcbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zLmhhdmluZ0NyYW1wZWRTdHlsZSgpKTtcblxuICAgIGlmIChpbm5lci5oZWlnaHQgPT09IDApIHtcbiAgICAgIC8vIFJlbmRlciBhIHNtYWxsIHN1cmQuXG4gICAgICBpbm5lci5oZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICB9IC8vIFNvbWUgZ3JvdXBzIGNhbiByZXR1cm4gZG9jdW1lbnQgZnJhZ21lbnRzLiAgSGFuZGxlIHRob3NlIGJ5IHdyYXBwaW5nXG4gICAgLy8gdGhlbSBpbiBhIHNwYW4uXG5cblxuICAgIGlubmVyID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGlubmVyLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIHNpemUgZm9yIHRoZSBcXHN1cmQgZGVsaW1pdGVyXG5cbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTtcbiAgICB2YXIgdGhldGEgPSBtZXRyaWNzLmRlZmF1bHRSdWxlVGhpY2tuZXNzO1xuICAgIHZhciBwaGkgPSB0aGV0YTtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlkIDwgc3JjX1N0eWxlLlRFWFQuaWQpIHtcbiAgICAgIHBoaSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0O1xuICAgIH0gLy8gQ2FsY3VsYXRlIHRoZSBjbGVhcmFuY2UgYmV0d2VlbiB0aGUgYm9keSBhbmQgbGluZVxuXG5cbiAgICB2YXIgbGluZUNsZWFyYW5jZSA9IHRoZXRhICsgcGhpIC8gNDtcbiAgICB2YXIgbWluRGVsaW1pdGVySGVpZ2h0ID0gaW5uZXIuaGVpZ2h0ICsgaW5uZXIuZGVwdGggKyBsaW5lQ2xlYXJhbmNlICsgdGhldGE7IC8vIENyZWF0ZSBhIHNxcnQgU1ZHIG9mIHRoZSByZXF1aXJlZCBtaW5pbXVtIHNpemVcblxuICAgIHZhciBfZGVsaW1pdGVyJHNxcnRJbWFnZSA9IGRlbGltaXRlci5zcXJ0SW1hZ2UobWluRGVsaW1pdGVySGVpZ2h0LCBvcHRpb25zKSxcbiAgICAgICAgaW1nID0gX2RlbGltaXRlciRzcXJ0SW1hZ2Uuc3BhbixcbiAgICAgICAgcnVsZVdpZHRoID0gX2RlbGltaXRlciRzcXJ0SW1hZ2UucnVsZVdpZHRoLFxuICAgICAgICBhZHZhbmNlV2lkdGggPSBfZGVsaW1pdGVyJHNxcnRJbWFnZS5hZHZhbmNlV2lkdGg7XG5cbiAgICB2YXIgZGVsaW1EZXB0aCA9IGltZy5oZWlnaHQgLSBydWxlV2lkdGg7IC8vIEFkanVzdCB0aGUgY2xlYXJhbmNlIGJhc2VkIG9uIHRoZSBkZWxpbWl0ZXIgc2l6ZVxuXG4gICAgaWYgKGRlbGltRGVwdGggPiBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIGxpbmVDbGVhcmFuY2UpIHtcbiAgICAgIGxpbmVDbGVhcmFuY2UgPSAobGluZUNsZWFyYW5jZSArIGRlbGltRGVwdGggLSBpbm5lci5oZWlnaHQgLSBpbm5lci5kZXB0aCkgLyAyO1xuICAgIH0gLy8gU2hpZnQgdGhlIHNxcnQgaW1hZ2VcblxuXG4gICAgdmFyIGltZ1NoaWZ0ID0gaW1nLmhlaWdodCAtIGlubmVyLmhlaWdodCAtIGxpbmVDbGVhcmFuY2UgLSBydWxlV2lkdGg7XG4gICAgaW5uZXIuc3R5bGUucGFkZGluZ0xlZnQgPSBhZHZhbmNlV2lkdGggKyBcImVtXCI7IC8vIE92ZXJsYXkgdGhlIGltYWdlIGFuZCB0aGUgYXJndW1lbnQuXG5cbiAgICB2YXIgYm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgd3JhcHBlckNsYXNzZXM6IFtcInN2Zy1hbGlnblwiXVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogLShpbm5lci5oZWlnaHQgKyBpbWdTaGlmdClcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogcnVsZVdpZHRoXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFncm91cC5pbmRleCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJzcXJ0XCJdLCBbYm9keV0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGhlIG9wdGlvbmFsIHJvb3QgaW5kZXhcbiAgICAgIC8vIFRoZSBpbmRleCBpcyBhbHdheXMgaW4gc2NyaXB0c2NyaXB0IHN0eWxlXG4gICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3JjX1N0eWxlLlNDUklQVFNDUklQVCk7XG4gICAgICB2YXIgcm9vdG0gPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5pbmRleCwgbmV3T3B0aW9ucywgb3B0aW9ucyk7IC8vIFRoZSBhbW91bnQgdGhlIGluZGV4IGlzIHNoaWZ0ZWQgYnkuIFRoaXMgaXMgdGFrZW4gZnJvbSB0aGUgVGVYXG4gICAgICAvLyBzb3VyY2UsIGluIHRoZSBkZWZpbml0aW9uIG9mIGBcXHJAQHRgLlxuXG4gICAgICB2YXIgdG9TaGlmdCA9IDAuNiAqIChib2R5LmhlaWdodCAtIGJvZHkuZGVwdGgpOyAvLyBCdWlsZCBhIFZMaXN0IHdpdGggdGhlIHN1cGVyc2NyaXB0IHNoaWZ0ZWQgdXAgY29ycmVjdGx5XG5cbiAgICAgIHZhciByb290Vkxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtdG9TaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogcm9vdG1cbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpOyAvLyBBZGQgYSBjbGFzcyBzdXJyb3VuZGluZyBpdCBzbyB3ZSBjYW4gYWRkIG9uIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8ga2VybmluZ1xuXG4gICAgICB2YXIgcm9vdFZMaXN0V3JhcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcInJvb3RcIl0sIFtyb290Vkxpc3RdKTtcbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwic3FydFwiXSwgW3Jvb3RWTGlzdFdyYXAsIGJvZHldLCBvcHRpb25zKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IGdyb3VwLmJvZHksXG4gICAgICAgIGluZGV4ID0gZ3JvdXAuaW5kZXg7XG4gICAgcmV0dXJuIGluZGV4ID8gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm9vdFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChib2R5LCBvcHRpb25zKSwgYnVpbGRNYXRoTUxfYnVpbGRHcm91cChpbmRleCwgb3B0aW9ucyldKSA6IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNxcnRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoYm9keSwgb3B0aW9ucyldKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc3R5bGluZy5qc1xuXG5cblxuXG5cbnZhciBzdHlsaW5nX3N0eWxlTWFwID0ge1xuICBcImRpc3BsYXlcIjogc3JjX1N0eWxlLkRJU1BMQVksXG4gIFwidGV4dFwiOiBzcmNfU3R5bGUuVEVYVCxcbiAgXCJzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVCxcbiAgXCJzY3JpcHRzY3JpcHRcIjogc3JjX1N0eWxlLlNDUklQVFNDUklQVFxufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJzdHlsaW5nXCIsXG4gIG5hbWVzOiBbXCJcXFxcZGlzcGxheXN0eWxlXCIsIFwiXFxcXHRleHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzdHlsZVwiLCBcIlxcXFxzY3JpcHRzY3JpcHRzdHlsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmLmJyZWFrT25Ub2tlblRleHQsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZSxcbiAgICAgICAgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgLy8gcGFyc2Ugb3V0IHRoZSBpbXBsaWNpdCBib2R5XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpOyAvLyBUT0RPOiBSZWZhY3RvciB0byBhdm9pZCBkdXBsaWNhdGluZyBzdHlsZU1hcCBpbiBtdWx0aXBsZSBwbGFjZXMgKGUuZy5cbiAgICAvLyBoZXJlIGFuZCBpbiBidWlsZEhUTUwgYW5kIGRlLWR1cGUgdGhlIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUgc3R5bGVzKS5cbiAgICAvLyAkRmxvd0ZpeE1lOiBUaGUgbmFtZXMgYWJvdmUgZXhhY3RseSBtYXRjaCB0aGUgc3R5bGVzLlxuXG4gICAgdmFyIHN0eWxlID0gZnVuY05hbWUuc2xpY2UoMSwgZnVuY05hbWUubGVuZ3RoIC0gNSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic3R5bGluZ1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc3R5bGUgdG8gdXNlIGJ5IHB1bGxpbmcgb3V0IHRoZSBzdHlsZSBmcm9tXG4gICAgICAvLyB0aGUgZnVuY3Rpb24gbmFtZVxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN0eWxlIGNoYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGcuIDQ0MiwgUnVsZSAzLlxuICAgIHZhciBuZXdTdHlsZSA9IHN0eWxpbmdfc3R5bGVNYXBbZ3JvdXAuc3R5bGVdO1xuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShuZXdTdHlsZSkud2l0aEZvbnQoJycpO1xuICAgIHJldHVybiBzaXppbmdHcm91cChncm91cC5ib2R5LCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHlsZSB3ZSdyZSBjaGFuZ2luZyB0by5cbiAgICB2YXIgbmV3U3R5bGUgPSBzdHlsaW5nX3N0eWxlTWFwW2dyb3VwLnN0eWxlXTtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUobmV3U3R5bGUpO1xuICAgIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcbiAgICB2YXIgc3R5bGVBdHRyaWJ1dGVzID0ge1xuICAgICAgXCJkaXNwbGF5XCI6IFtcIjBcIiwgXCJ0cnVlXCJdLFxuICAgICAgXCJ0ZXh0XCI6IFtcIjBcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0XCI6IFtcIjFcIiwgXCJmYWxzZVwiXSxcbiAgICAgIFwic2NyaXB0c2NyaXB0XCI6IFtcIjJcIiwgXCJmYWxzZVwiXVxuICAgIH07XG4gICAgdmFyIGF0dHIgPSBzdHlsZUF0dHJpYnV0ZXNbZ3JvdXAuc3R5bGVdO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2NyaXB0bGV2ZWxcIiwgYXR0clswXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkaXNwbGF5c3R5bGVcIiwgYXR0clsxXSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N1cHN1Yi5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogc3Vic2NyaXB0cyBhdHRhY2hlZCB0byB0aGVtLiBUaGlzIGZ1bmN0aW9uIGxldHMgdGhlIGBzdXBzdWJgIGdyb3VwIGtub3cgdGhhdFxuICogU29tZXRpbWVzLCBncm91cHMgcGVyZm9ybSBzcGVjaWFsIHJ1bGVzIHdoZW4gdGhleSBoYXZlIHN1cGVyc2NyaXB0cyBvclxuICogaXRzIGlubmVyIGVsZW1lbnQgc2hvdWxkIGhhbmRsZSB0aGUgc3VwZXJzY3JpcHRzIGFuZCBzdWJzY3JpcHRzIGluc3RlYWQgb2ZcbiAqIGhhbmRsaW5nIHRoZW0gaXRzZWxmLlxuICovXG52YXIgc3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUgPSBmdW5jdGlvbiBodG1sQnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICBpZiAoIWJhc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BcIikge1xuICAgIC8vIE9wZXJhdG9ycyBoYW5kbGUgc3Vwc3VicyBkaWZmZXJlbnRseSB3aGVuIHRoZXkgaGF2ZSBsaW1pdHNcbiAgICAvLyAoZS5nLiBgXFxkaXNwbGF5c3R5bGVcXHN1bV8yXjNgKVxuICAgIHZhciBkZWxlZ2F0ZSA9IGJhc2UubGltaXRzICYmIChvcHRpb25zLnN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUgfHwgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIpO1xuICAgIHJldHVybiBkZWxlZ2F0ZSA/IG9wX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIpIHtcbiAgICB2YXIgX2RlbGVnYXRlID0gYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKG9wdGlvbnMuc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSB8fCBiYXNlLmxpbWl0cyk7XG5cbiAgICByZXR1cm4gX2RlbGVnYXRlID8gb3BlcmF0b3JuYW1lX2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwiYWNjZW50XCIpIHtcbiAgICByZXR1cm4gdXRpbHMuaXNDaGFyYWN0ZXJCb3goYmFzZS5iYXNlKSA/IGFjY2VudF9odG1sQnVpbGRlciA6IG51bGw7XG4gIH0gZWxzZSBpZiAoYmFzZS50eXBlID09PSBcImhvcml6QnJhY2VcIikge1xuICAgIHZhciBpc1N1cCA9ICFncm91cC5zdWI7XG4gICAgcmV0dXJuIGlzU3VwID09PSBiYXNlLmlzT3ZlciA/IGhvcml6QnJhY2VfaHRtbEJ1aWxkZXIgOiBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59OyAvLyBTdXBlciBzY3JpcHRzIGFuZCBzdWJzY3JpcHRzLCB3aG9zZSBwcmVjaXNlIHBsYWNlbWVudCBjYW4gZGVwZW5kIG9uIG90aGVyXG4vLyBmdW5jdGlvbnMgdGhhdCBwcmVjZWRlIHRoZW0uXG5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwic3Vwc3ViXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHRzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIG9uIHBhZ2VcbiAgICAvLyA0NDUtNDQ2LCBydWxlcyAxOChhLWYpLlxuICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZGVmZXIgdG8gdGhlIGlubmVyIGdyb3VwIGlmIGl0IHNob3VsZCBoYW5kbGVcbiAgICAvLyBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaXRzZWxmLlxuICAgIHZhciBidWlsZGVyRGVsZWdhdGUgPSBzdXBzdWJfaHRtbEJ1aWxkZXJEZWxlZ2F0ZShncm91cCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoYnVpbGRlckRlbGVnYXRlKSB7XG4gICAgICByZXR1cm4gYnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVCYXNlID0gZ3JvdXAuYmFzZSxcbiAgICAgICAgdmFsdWVTdXAgPSBncm91cC5zdXAsXG4gICAgICAgIHZhbHVlU3ViID0gZ3JvdXAuc3ViO1xuICAgIHZhciBiYXNlID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAodmFsdWVCYXNlLCBvcHRpb25zKTtcbiAgICB2YXIgc3VwbTtcbiAgICB2YXIgc3VibTtcbiAgICB2YXIgbWV0cmljcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKTsgLy8gUnVsZSAxOGFcblxuICAgIHZhciBzdXBTaGlmdCA9IDA7XG4gICAgdmFyIHN1YlNoaWZ0ID0gMDtcbiAgICB2YXIgaXNDaGFyYWN0ZXJCb3ggPSB2YWx1ZUJhc2UgJiYgdXRpbHMuaXNDaGFyYWN0ZXJCb3godmFsdWVCYXNlKTtcblxuICAgIGlmICh2YWx1ZVN1cCkge1xuICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUuc3VwKCkpO1xuICAgICAgc3VwbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHZhbHVlU3VwLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgaWYgKCFpc0NoYXJhY3RlckJveCkge1xuICAgICAgICBzdXBTaGlmdCA9IGJhc2UuaGVpZ2h0IC0gbmV3T3B0aW9ucy5mb250TWV0cmljcygpLnN1cERyb3AgKiBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWVTdWIpIHtcbiAgICAgIHZhciBfbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS5zdWIoKSk7XG5cbiAgICAgIHN1Ym0gPSBidWlsZEhUTUxfYnVpbGRHcm91cCh2YWx1ZVN1YiwgX25ld09wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIWlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICAgIHN1YlNoaWZ0ID0gYmFzZS5kZXB0aCArIF9uZXdPcHRpb25zLmZvbnRNZXRyaWNzKCkuc3ViRHJvcCAqIF9uZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICAgIH1cbiAgICB9IC8vIFJ1bGUgMThjXG5cblxuICAgIHZhciBtaW5TdXBTaGlmdDtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgbWluU3VwU2hpZnQgPSBtZXRyaWNzLnN1cDE7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnN0eWxlLmNyYW1wZWQpIHtcbiAgICAgIG1pblN1cFNoaWZ0ID0gbWV0cmljcy5zdXAzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMjtcbiAgICB9IC8vIHNjcmlwdHNwYWNlIGlzIGEgZm9udC1zaXplLWluZGVwZW5kZW50IHNpemUsIHNvIHNjYWxlIGl0XG4gICAgLy8gYXBwcm9wcmlhdGVseSBmb3IgdXNlIGFzIHRoZSBtYXJnaW5SaWdodC5cblxuXG4gICAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIHZhciBtYXJnaW5SaWdodCA9IDAuNSAvIG1ldHJpY3MucHRQZXJFbSAvIG11bHRpcGxpZXIgKyBcImVtXCI7XG4gICAgdmFyIG1hcmdpbkxlZnQgPSBudWxsO1xuXG4gICAgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFN1YnNjcmlwdHMgc2hvdWxkbid0IGJlIHNoaWZ0ZWQgYnkgdGhlIGJhc2UncyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAgIC8vIEFjY291bnQgZm9yIHRoYXQgYnkgc2hpZnRpbmcgdGhlIHN1YnNjcmlwdCBiYWNrIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgLy8gYW1vdW50LiBOb3RlIHdlIG9ubHkgZG8gdGhpcyB3aGVuIHRoZSBiYXNlIGlzIGEgc2luZ2xlIHN5bWJvbC5cbiAgICAgIHZhciBpc09paW50ID0gZ3JvdXAuYmFzZSAmJiBncm91cC5iYXNlLnR5cGUgPT09IFwib3BcIiAmJiBncm91cC5iYXNlLm5hbWUgJiYgKGdyb3VwLmJhc2UubmFtZSA9PT0gXCJcXFxcb2lpbnRcIiB8fCBncm91cC5iYXNlLm5hbWUgPT09IFwiXFxcXG9paWludFwiKTtcblxuICAgICAgaWYgKGJhc2UgaW5zdGFuY2VvZiBkb21UcmVlX1N5bWJvbE5vZGUgfHwgaXNPaWludCkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIG1hcmdpbkxlZnQgPSAtYmFzZS5pdGFsaWMgKyBcImVtXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHN1cHN1YjtcblxuICAgIGlmIChzdXBtICYmIHN1Ym0pIHtcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjIpO1xuICAgICAgdmFyIHJ1bGVXaWR0aCA9IG1ldHJpY3MuZGVmYXVsdFJ1bGVUaGlja25lc3M7IC8vIFJ1bGUgMThlXG5cbiAgICAgIHZhciBtYXhXaWR0aCA9IDQgKiBydWxlV2lkdGg7XG5cbiAgICAgIGlmIChzdXBTaGlmdCAtIHN1cG0uZGVwdGggLSAoc3VibS5oZWlnaHQgLSBzdWJTaGlmdCkgPCBtYXhXaWR0aCkge1xuICAgICAgICBzdWJTaGlmdCA9IG1heFdpZHRoIC0gKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCkgKyBzdWJtLmhlaWdodDtcbiAgICAgICAgdmFyIHBzaSA9IDAuOCAqIG1ldHJpY3MueEhlaWdodCAtIChzdXBTaGlmdCAtIHN1cG0uZGVwdGgpO1xuXG4gICAgICAgIGlmIChwc2kgPiAwKSB7XG4gICAgICAgICAgc3VwU2hpZnQgKz0gcHNpO1xuICAgICAgICAgIHN1YlNoaWZ0IC09IHBzaTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIHNoaWZ0OiBzdWJTaGlmdCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0LFxuICAgICAgICBtYXJnaW5MZWZ0OiBtYXJnaW5MZWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdXBtLFxuICAgICAgICBzaGlmdDogLXN1cFNoaWZ0LFxuICAgICAgICBtYXJnaW5SaWdodDogbWFyZ2luUmlnaHRcbiAgICAgIH1dO1xuICAgICAgc3Vwc3ViID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICBjaGlsZHJlbjogdmxpc3RFbGVtXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHN1Ym0pIHtcbiAgICAgIC8vIFJ1bGUgMThiXG4gICAgICBzdWJTaGlmdCA9IE1hdGgubWF4KHN1YlNoaWZ0LCBtZXRyaWNzLnN1YjEsIHN1Ym0uaGVpZ2h0IC0gMC44ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgIHZhciBfdmxpc3RFbGVtID0gW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Ym0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IG1hcmdpbkxlZnQsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBtYXJnaW5SaWdodFxuICAgICAgfV07XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiBzdWJTaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IF92bGlzdEVsZW1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoc3VwbSkge1xuICAgICAgLy8gUnVsZSAxOGMsIGRcbiAgICAgIHN1cFNoaWZ0ID0gTWF0aC5tYXgoc3VwU2hpZnQsIG1pblN1cFNoaWZ0LCBzdXBtLmRlcHRoICsgMC4yNSAqIG1ldHJpY3MueEhlaWdodCk7XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwic2hpZnRcIixcbiAgICAgICAgcG9zaXRpb25EYXRhOiAtc3VwU2hpZnQsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHN1cG0sXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3Vwc3ViIG11c3QgaGF2ZSBlaXRoZXIgc3VwIG9yIHN1Yi5cIik7XG4gICAgfSAvLyBXcmFwIHRoZSBzdXBzdWIgdmxpc3QgaW4gYSBzcGFuLm1zdXBzdWIgdG8gcmVzZXQgdGV4dC1hbGlnbi5cblxuXG4gICAgdmFyIG1jbGFzcyA9IGdldFR5cGVPZkRvbVRyZWUoYmFzZSwgXCJyaWdodFwiKSB8fCBcIm1vcmRcIjtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW21jbGFzc10sIFtiYXNlLCBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3Vwc3ViXCJdLCBbc3Vwc3ViXSldLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIElzIHRoZSBpbm5lciBncm91cCBhIHJlbGV2YW50IGhvcml6b25hbCBicmFjZT9cbiAgICB2YXIgaXNCcmFjZSA9IGZhbHNlO1xuICAgIHZhciBpc092ZXI7XG4gICAgdmFyIGlzU3VwO1xuICAgIHZhciBob3JpekJyYWNlID0gY2hlY2tOb2RlVHlwZShncm91cC5iYXNlLCBcImhvcml6QnJhY2VcIik7XG5cbiAgICBpZiAoaG9yaXpCcmFjZSkge1xuICAgICAgaXNTdXAgPSAhIWdyb3VwLnN1cDtcblxuICAgICAgaWYgKGlzU3VwID09PSBob3JpekJyYWNlLmlzT3Zlcikge1xuICAgICAgICBpc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgaXNPdmVyID0gaG9yaXpCcmFjZS5pc092ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLmJhc2UgJiYgKGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcFwiIHx8IGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIikpIHtcbiAgICAgIGdyb3VwLmJhc2UucGFyZW50SXNTdXBTdWIgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpXTtcblxuICAgIGlmIChncm91cC5zdWIpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5zdWIsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuc3VwKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuc3VwLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVUeXBlO1xuXG4gICAgaWYgKGlzQnJhY2UpIHtcbiAgICAgIG5vZGVUeXBlID0gaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIjtcbiAgICB9IGVsc2UgaWYgKCFncm91cC5zdWIpIHtcbiAgICAgIHZhciBiYXNlID0gZ3JvdXAuYmFzZTtcblxuICAgICAgaWYgKGJhc2UgJiYgYmFzZS50eXBlID09PSBcIm9wXCIgJiYgYmFzZS5saW1pdHMgJiYgKG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZIHx8IGJhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSBpZiAoYmFzZSAmJiBiYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKGJhc2UubGltaXRzIHx8IG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibW92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3VwXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ3JvdXAuc3VwKSB7XG4gICAgICB2YXIgX2Jhc2UgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UgJiYgX2Jhc2UudHlwZSA9PT0gXCJvcFwiICYmIF9iYXNlLmxpbWl0cyAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyXCI7XG4gICAgICB9IGVsc2UgaWYgKF9iYXNlICYmIF9iYXNlLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UuYWx3YXlzSGFuZGxlU3VwU3ViICYmIChfYmFzZS5saW1pdHMgfHwgb3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3ViXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfYmFzZTIgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoX2Jhc2UyICYmIF9iYXNlMi50eXBlID09PSBcIm9wXCIgJiYgX2Jhc2UyLmxpbWl0cyAmJiBvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyb3ZlclwiO1xuICAgICAgfSBlbHNlIGlmIChfYmFzZTIgJiYgX2Jhc2UyLnR5cGUgPT09IFwib3BlcmF0b3JuYW1lXCIgJiYgX2Jhc2UyLmFsd2F5c0hhbmRsZVN1cFN1YiAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgX2Jhc2UyLmxpbWl0cykpIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm11bmRlcm92ZXJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtc3Vic3VwXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShub2RlVHlwZSwgY2hpbGRyZW4pO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3AuanNcblxuXG5cbiAvLyBPcGVyYXRvciBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpbiBzcmMvc3ltYm9scy5qcy5cblxuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwiYXRvbVwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWF0aHN5bShncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zLCBbXCJtXCIgKyBncm91cC5mYW1pbHldKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSldKTtcblxuICAgIGlmIChncm91cC5mYW1pbHkgPT09IFwiYmluXCIpIHtcbiAgICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh2YXJpYW50ID09PSBcImJvbGQtaXRhbGljXCIpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCB2YXJpYW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGdyb3VwLmZhbWlseSA9PT0gXCJwdW5jdFwiKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInNlcGFyYXRvclwiLCBcInRydWVcIik7XG4gICAgfSBlbHNlIGlmIChncm91cC5mYW1pbHkgPT09IFwib3BlblwiIHx8IGdyb3VwLmZhbWlseSA9PT0gXCJjbG9zZVwiKSB7XG4gICAgICAvLyBEZWxpbXMgYnVpbHQgaGVyZSBzaG91bGQgbm90IHN0cmV0Y2ggdmVydGljYWxseS5cbiAgICAgIC8vIFNlZSBkZWxpbXNpemluZy5qcyBmb3Igc3RyZXRjaHkgZGVsaW1zLlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcImZhbHNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzT3JkLmpzXG5cblxuXG5cbi8vIFwibWF0aG9yZFwiIGFuZCBcInRleHRvcmRcIiBQYXJzZU5vZGVzIGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gc3ltYm9sIEdyb3VwcyBpblxudmFyIGRlZmF1bHRWYXJpYW50ID0ge1xuICBcIm1pXCI6IFwiaXRhbGljXCIsXG4gIFwibW5cIjogXCJub3JtYWxcIixcbiAgXCJtdGV4dFwiOiBcIm5vcm1hbFwiXG59O1xuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwibWF0aG9yZFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJtYXRob3JkXCIpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zKV0pO1xuICAgIHZhciB2YXJpYW50ID0gYnVpbGRNYXRoTUxfZ2V0VmFyaWFudChncm91cCwgb3B0aW9ucykgfHwgXCJpdGFsaWNcIjtcblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcInRleHRvcmRcIixcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VPcmQoZ3JvdXAsIG9wdGlvbnMsIFwidGV4dG9yZFwiKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0ZXh0ID0gYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSwgb3B0aW9ucyk7XG4gICAgdmFyIHZhcmlhbnQgPSBidWlsZE1hdGhNTF9nZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB8fCBcIm5vcm1hbFwiO1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKGdyb3VwLm1vZGUgPT09ICd0ZXh0Jykge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRleHRcIiwgW3RleHRdKTtcbiAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChncm91cC50ZXh0KSkge1xuICAgICAgLy8gVE9ETyhrZXZpbmIpIG1lcmdlIGFkamFjZW50IDxtbj4gbm9kZXNcbiAgICAgIC8vIGRvIGl0IGFzIGEgcG9zdCBwcm9jZXNzaW5nIHN0ZXBcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1uXCIsIFt0ZXh0XSk7XG4gICAgfSBlbHNlIGlmIChncm91cC50ZXh0ID09PSBcIlxcXFxwcmltZVwiKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtaVwiLCBbdGV4dF0pO1xuICAgIH1cblxuICAgIGlmICh2YXJpYW50ICE9PSBkZWZhdWx0VmFyaWFudFtub2RlLnR5cGVdKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zeW1ib2xzU3BhY2luZy5qc1xuXG5cblxuIC8vIEEgbWFwIG9mIENTUy1iYXNlZCBzcGFjaW5nIGZ1bmN0aW9ucyB0byB0aGVpciBDU1MgY2xhc3MuXG5cbnZhciBjc3NTcGFjZSA9IHtcbiAgXCJcXFxcbm9icmVha1wiOiBcIm5vYnJlYWtcIixcbiAgXCJcXFxcYWxsb3dicmVha1wiOiBcImFsbG93YnJlYWtcIlxufTsgLy8gQSBsb29rdXAgdGFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzcGFjaW5nIGZ1bmN0aW9uL3N5bWJvbCBzaG91bGQgYmVcbi8vIHRyZWF0ZWQgbGlrZSBhIHJlZ3VsYXIgc3BhY2UgY2hhcmFjdGVyLiAgSWYgYSBzeW1ib2wgb3IgY29tbWFuZCBpcyBhIGtleVxuLy8gaW4gdGhpcyB0YWJsZSwgdGhlbiBpdCBzaG91bGQgYmUgYSByZWd1bGFyIHNwYWNlIGNoYXJhY3Rlci4gIEZ1cnRoZXJtb3JlLFxuLy8gdGhlIGFzc29jaWF0ZWQgdmFsdWUgbWF5IGhhdmUgYSBgY2xhc3NOYW1lYCBzcGVjaWZ5aW5nIGFuIGV4dHJhIENTUyBjbGFzc1xuLy8gdG8gYWRkIHRvIHRoZSBjcmVhdGVkIGBzcGFuYC5cblxudmFyIHJlZ3VsYXJTcGFjZSA9IHtcbiAgXCIgXCI6IHt9LFxuICBcIlxcXFwgXCI6IHt9LFxuICBcIn5cIjoge1xuICAgIGNsYXNzTmFtZTogXCJub2JyZWFrXCJcbiAgfSxcbiAgXCJcXFxcc3BhY2VcIjoge30sXG4gIFwiXFxcXG5vYnJlYWtzcGFjZVwiOiB7XG4gICAgY2xhc3NOYW1lOiBcIm5vYnJlYWtcIlxuICB9XG59OyAvLyBQYXJzZU5vZGU8XCJzcGFjaW5nXCI+IGNyZWF0ZWQgaW4gUGFyc2VyLmpzIGZyb20gdGhlIFwic3BhY2luZ1wiIHN5bWJvbCBHcm91cHMgaW5cbi8vIHNyYy9zeW1ib2xzLmpzLlxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJzcGFjaW5nXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIHZhciBjbGFzc05hbWUgPSByZWd1bGFyU3BhY2VbZ3JvdXAudGV4dF0uY2xhc3NOYW1lIHx8IFwiXCI7IC8vIFNwYWNlcyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBhbiBhY3R1YWwgc3BhY2UuIEVhY2ggb2YgdGhlc2VcbiAgICAgIC8vIHRoaW5ncyBoYXMgYW4gZW50cnkgaW4gdGhlIHN5bWJvbHMgdGFibGUsIHNvIHRoZXNlIHdpbGwgYmUgdHVybmVkXG4gICAgICAvLyBpbnRvIGFwcHJvcHJpYXRlIG91dHB1dHMuXG5cbiAgICAgIGlmIChncm91cC5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgICB2YXIgb3JkID0gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICAgICAgICBvcmQuY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiBvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNsYXNzTmFtZV0sIFtidWlsZENvbW1vbi5tYXRoc3ltKGdyb3VwLnRleHQsIGdyb3VwLm1vZGUsIG9wdGlvbnMpXSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gU3BhY2VzIGJhc2VkIG9uIGp1c3QgYSBDU1MgY2xhc3MuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibXNwYWNlXCIsIGNzc1NwYWNlW2dyb3VwLnRleHRdXSwgW10sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZTtcblxuICAgIGlmIChyZWd1bGFyU3BhY2UuaGFzT3duUHJvcGVydHkoZ3JvdXAudGV4dCkpIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZXh0XCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxceEEwXCIpXSk7XG4gICAgfSBlbHNlIGlmIChjc3NTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgLy8gQ1NTLWJhc2VkIE1hdGhNTCBzcGFjZXMgKFxcbm9icmVhaywgXFxhbGxvd2JyZWFrKSBhcmUgaWdub3JlZFxuICAgICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNwYWNlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIHR5cGUgb2Ygc3BhY2UgXFxcIlwiICsgZ3JvdXAudGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdGFnLmpzXG5cblxuXG5cbnZhciB0YWdfcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgcGFkTm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtdKTtcbiAgcGFkTm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjUwJVwiKTtcbiAgcmV0dXJuIHBhZE5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJ0YWdcIixcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRhYmxlXCIsIFtuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10clwiLCBbdGFnX3BhZCgpLCBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZFwiLCBbYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMpXSksIHRhZ19wYWQoKSwgbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGRcIiwgW2J1aWxkRXhwcmVzc2lvblJvdyhncm91cC50YWcsIG9wdGlvbnMpXSldKV0pO1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICByZXR1cm4gdGFibGU7IC8vIFRPRE86IExlZnQtYWxpZ25lZCB0YWdzLlxuICAgIC8vIEN1cnJlbnRseSwgdGhlIGdyb3VwIGFuZCBvcHRpb25zIHBhc3NlZCBoZXJlIGRvIG5vdCBjb250YWluXG4gICAgLy8gZW5vdWdoIGluZm8gdG8gc2V0IHRhZyBhbGlnbm1lbnQuIGBsZXFub2AgaXMgaW4gU2V0dGluZ3MgYnV0IGl0IGlzXG4gICAgLy8gbm90IHBhc3NlZCB0byBPcHRpb25zLiBPbiB0aGUgSFRNTCBzaWRlLCBsZXFubyBpc1xuICAgIC8vIHNldCBieSBhIENTUyBjbGFzcyBhcHBsaWVkIGluIGJ1aWxkVHJlZS5qcy4gVGhhdCB3b3VsZCBoYXZlIHdvcmtlZFxuICAgIC8vIGluIE1hdGhNTCBpZiBicm93c2VycyBzdXBwb3J0ZWQgPG1sYWJlbGVkdHI+LiBTaW5jZSB0aGV5IGRvbid0LCB3ZVxuICAgIC8vIG5lZWQgdG8gcmV3cml0ZSB0aGUgd2F5IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy90ZXh0LmpzXG5cblxuXG4gLy8gTm9uLW1hdGh5IHRleHQsIHBvc3NpYmx5IGluIGEgZm9udFxuXG52YXIgdGV4dEZvbnRGYW1pbGllcyA9IHtcbiAgXCJcXFxcdGV4dFwiOiB1bmRlZmluZWQsXG4gIFwiXFxcXHRleHRybVwiOiBcInRleHRybVwiLFxuICBcIlxcXFx0ZXh0c2ZcIjogXCJ0ZXh0c2ZcIixcbiAgXCJcXFxcdGV4dHR0XCI6IFwidGV4dHR0XCIsXG4gIFwiXFxcXHRleHRub3JtYWxcIjogXCJ0ZXh0cm1cIlxufTtcbnZhciB0ZXh0Rm9udFdlaWdodHMgPSB7XG4gIFwiXFxcXHRleHRiZlwiOiBcInRleHRiZlwiLFxuICBcIlxcXFx0ZXh0bWRcIjogXCJ0ZXh0bWRcIlxufTtcbnZhciB0ZXh0Rm9udFNoYXBlcyA9IHtcbiAgXCJcXFxcdGV4dGl0XCI6IFwidGV4dGl0XCIsXG4gIFwiXFxcXHRleHR1cFwiOiBcInRleHR1cFwiXG59O1xuXG52YXIgb3B0aW9uc1dpdGhGb250ID0gZnVuY3Rpb24gb3B0aW9uc1dpdGhGb250KGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDsgLy8gQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZvbnQgZmFtaWx5IG9yIGEgZm9udCBzdHlsZS5cblxuICBpZiAoIWZvbnQpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSBlbHNlIGlmICh0ZXh0Rm9udEZhbWlsaWVzW2ZvbnRdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2l0aFRleHRGb250RmFtaWx5KHRleHRGb250RmFtaWxpZXNbZm9udF0pO1xuICB9IGVsc2UgaWYgKHRleHRGb250V2VpZ2h0c1tmb250XSkge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFdlaWdodCh0ZXh0Rm9udFdlaWdodHNbZm9udF0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHRpb25zLndpdGhUZXh0Rm9udFNoYXBlKHRleHRGb250U2hhcGVzW2ZvbnRdKTtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgbmFtZXM6IFsvLyBGb250IGZhbWlsaWVzXG4gIFwiXFxcXHRleHRcIiwgXCJcXFxcdGV4dHJtXCIsIFwiXFxcXHRleHRzZlwiLCBcIlxcXFx0ZXh0dHRcIiwgXCJcXFxcdGV4dG5vcm1hbFwiLCAvLyBGb250IHdlaWdodHNcbiAgXCJcXFxcdGV4dGJmXCIsIFwiXFxcXHRleHRtZFwiLCAvLyBGb250IFNoYXBlc1xuICBcIlxcXFx0ZXh0aXRcIiwgXCJcXFxcdGV4dHVwXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInRleHRcIl0sXG4gICAgZ3JlZWRpbmVzczogMixcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpLFxuICAgICAgZm9udDogZnVuY05hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnNXaXRoRm9udChncm91cCwgb3B0aW9ucyk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBuZXdPcHRpb25zLCB0cnVlKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInRleHRcIl0sIGJ1aWxkQ29tbW9uLnRyeUNvbWJpbmVDaGFycyhpbm5lciksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zV2l0aEZvbnQoZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZEV4cHJlc3Npb25Sb3coZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3VuZGVybGluZS5qc1xuXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgbmFtZXM6IFtcIlxcXFx1bmRlcmxpbmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bmRlcmxpbmVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYXJnc1swXVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFVuZGVybGluZXMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcgNDQzLCBSdWxlIDEwLlxuICAgIC8vIEJ1aWxkIHRoZSBpbm5lciBncm91cC5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMpOyAvLyBDcmVhdGUgdGhlIGxpbmUgdG8gZ28gYmVsb3cgdGhlIGJvZHlcblxuICAgIHZhciBsaW5lID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwidW5kZXJsaW5lLWxpbmVcIiwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnNcblxuICAgIHZhciBkZWZhdWx0UnVsZVRoaWNrbmVzcyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcInRvcFwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBpbm5lckdyb3VwLmhlaWdodCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogZGVmYXVsdFJ1bGVUaGlja25lc3NcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGxpbmVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IDMgKiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW5uZXJHcm91cFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInVuZGVybGluZVwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3BlcmF0b3IgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShcIlxcdTIwM0VcIildKTtcbiAgICBvcGVyYXRvci5zZXRBdHRyaWJ1dGUoXCJzdHJldGNoeVwiLCBcInRydWVcIik7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm11bmRlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudHVuZGVyXCIsIFwidHJ1ZVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdmVyYi5qc1xuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidmVyYlwiLFxuICBuYW1lczogW1wiXFxcXHZlcmJcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncykge1xuICAgIC8vIFxcdmVyYiBhbmQgXFx2ZXJiKiBhcmUgZGVhbHQgd2l0aCBkaXJlY3RseSBpbiBQYXJzZXIuanMuXG4gICAgLy8gSWYgd2UgZW5kIHVwIGhlcmUsIGl0J3MgYmVjYXVzZSBvZiBhIGZhaWx1cmUgdG8gbWF0Y2ggdGhlIHR3byBkZWxpbWl0ZXJzXG4gICAgLy8gaW4gdGhlIHJlZ2V4IGluIExleGVyLmpzLiAgTGFUZVggcmFpc2VzIHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBcXHZlcmIgaXNcbiAgICAvLyB0ZXJtaW5hdGVkIGJ5IGVuZCBvZiBsaW5lIChvciBmaWxlKS5cbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBlbmRlZCBieSBlbmQgb2YgbGluZSBpbnN0ZWFkIG9mIG1hdGNoaW5nIGRlbGltaXRlclwiKTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBtYWtlVmVyYihncm91cCk7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gXFx2ZXJiIGVudGVycyB0ZXh0IG1vZGUgYW5kIHRoZXJlZm9yZSBpcyBzaXplZCBsaWtlIFxcdGV4dHN0eWxlXG5cbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS50ZXh0KCkpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHRleHRbaV07XG5cbiAgICAgIGlmIChjID09PSAnficpIHtcbiAgICAgICAgYyA9ICdcXFxcdGV4dGFzY2lpdGlsZGUnO1xuICAgICAgfVxuXG4gICAgICBib2R5LnB1c2goYnVpbGRDb21tb24ubWFrZVN5bWJvbChjLCBcIlR5cGV3cml0ZXItUmVndWxhclwiLCBncm91cC5tb2RlLCBuZXdPcHRpb25zLCBbXCJtb3JkXCIsIFwidGV4dHR0XCJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJ0ZXh0XCJdLmNvbmNhdChuZXdPcHRpb25zLnNpemluZ0NsYXNzZXMob3B0aW9ucykpLCBidWlsZENvbW1vbi50cnlDb21iaW5lQ2hhcnMoYm9keSksIG5ld09wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShtYWtlVmVyYihncm91cCkpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGV4dFwiLCBbdGV4dF0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgXCJtb25vc3BhY2VcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLyoqXG4gKiBDb252ZXJ0cyB2ZXJiIGdyb3VwIGludG8gYm9keSBzdHJpbmcuXG4gKlxuICogXFx2ZXJiKiByZXBsYWNlcyBlYWNoIHNwYWNlIHdpdGggYW4gb3BlbiBib3ggXFx1MjQyM1xuICogXFx2ZXJiIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCBhIG5vLWJyZWFrIHNwYWNlIFxceEEwXG4gKi9cblxudmFyIG1ha2VWZXJiID0gZnVuY3Rpb24gbWFrZVZlcmIoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmJvZHkucmVwbGFjZSgvIC9nLCBncm91cC5zdGFyID8gXCJcXHUyNDIzXCIgOiAnXFx4QTAnKTtcbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMuanNcbi8qKiBJbmNsdWRlIHRoaXMgdG8gZW5zdXJlIHRoYXQgYWxsIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gKi9cblxudmFyIGZ1bmN0aW9ucyA9IF9mdW5jdGlvbnM7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZnVuY3Rpb25zID0gKGZ1bmN0aW9ucyk7IC8vIFRPRE8oa2V2aW5iKTogaGF2ZSBmdW5jdGlvbnMgcmV0dXJuIGFuIG9iamVjdCBhbmQgY2FsbCBkZWZpbmVGdW5jdGlvbiB3aXRoXG4vLyB0aGF0IG9iamVjdCBpbiB0aGlzIGZpbGUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHNpZGUtZWZmZWN0cy5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTGV4ZXIuanNcbi8qKlxuICogVGhlIExleGVyIGNsYXNzIGhhbmRsZXMgdG9rZW5pemluZyB0aGUgaW5wdXQgaW4gdmFyaW91cyB3YXlzLiBTaW5jZSBvdXJcbiAqIHBhcnNlciBleHBlY3RzIHVzIHRvIGJlIGFibGUgdG8gYmFja3RyYWNrLCB0aGUgbGV4ZXIgYWxsb3dzIGxleGluZyBmcm9tIGFueVxuICogZ2l2ZW4gc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogSXRzIG1haW4gZXhwb3NlZCBmdW5jdGlvbiBpcyB0aGUgYGxleGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcG9zaXRpb24gdG9cbiAqIGxleCBmcm9tIGFuZCBhIHR5cGUgb2YgdG9rZW4gdG8gbGV4LiBJdCBkZWZlcnMgdG8gdGhlIGFwcHJvcHJpYXRlIGBfaW5uZXJMZXhgXG4gKiBmdW5jdGlvbi5cbiAqXG4gKiBUaGUgdmFyaW91cyBgX2lubmVyTGV4YCBmdW5jdGlvbnMgcGVyZm9ybSB0aGUgYWN0dWFsIGxleGluZyBvZiBkaWZmZXJlbnRcbiAqIGtpbmRzLlxuICovXG5cblxuXG5cbi8qIFRoZSBmb2xsb3dpbmcgdG9rZW5SZWdleFxuICogLSBtYXRjaGVzIHR5cGljYWwgd2hpdGVzcGFjZSAoYnV0IG5vdCBOQlNQIGV0Yy4pIHVzaW5nIGl0cyBmaXJzdCBncm91cFxuICogLSBkb2VzIG5vdCBtYXRjaCBhbnkgY29udHJvbCBjaGFyYWN0ZXIgXFx4MDAtXFx4MWYgZXhjZXB0IHdoaXRlc3BhY2VcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYSBiYXJlIGJhY2tzbGFzaFxuICogLSBtYXRjaGVzIGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0IHRob3NlIGp1c3QgbWVudGlvbmVkXG4gKiAtIGRvZXMgbm90IG1hdGNoIHRoZSBCTVAgcHJpdmF0ZSB1c2UgYXJlYSBcXHVFMDAwLVxcdUY4RkZcbiAqIC0gZG9lcyBub3QgbWF0Y2ggYmFyZSBzdXJyb2dhdGUgY29kZSB1bml0c1xuICogLSBtYXRjaGVzIGFueSBCTVAgY2hhcmFjdGVyIGV4Y2VwdCBmb3IgdGhvc2UganVzdCBkZXNjcmliZWRcbiAqIC0gbWF0Y2hlcyBhbnkgdmFsaWQgVW5pY29kZSBzdXJyb2dhdGUgcGFpclxuICogLSBtYXRjaGVzIGEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnNcbiAqIC0gbWF0Y2hlcyBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhbnkgQk1QIGNoYXJhY3RlciwgaW5jbHVkaW5nIG5ld2xpbmVcbiAqIEp1c3QgYmVjYXVzZSB0aGUgTGV4ZXIgbWF0Y2hlcyBzb21ldGhpbmcgZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQgaW5wdXQ6XG4gKiBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBmdW5jdGlvbiBvciBzeW1ib2wgZGVmaW5pdGlvbiwgdGhlIFBhcnNlciB3aWxsXG4gKiBzdGlsbCByZWplY3QgdGhlIGlucHV0LlxuICovXG52YXIgc3BhY2VSZWdleFN0cmluZyA9IFwiWyBcXHJcXG5cXHRdXCI7XG52YXIgY29udHJvbFdvcmRSZWdleFN0cmluZyA9IFwiXFxcXFxcXFxbYS16QS1aQF0rXCI7XG52YXIgY29udHJvbFN5bWJvbFJlZ2V4U3RyaW5nID0gXCJcXFxcXFxcXFteXFx1RDgwMC1cXHVERkZGXVwiO1xudmFyIGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4U3RyaW5nID0gXCJcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBzcGFjZVJlZ2V4U3RyaW5nICsgXCIqXCI7XG52YXIgY29udHJvbFdvcmRXaGl0ZXNwYWNlUmVnZXggPSBuZXcgUmVnRXhwKFwiXihcIiArIGNvbnRyb2xXb3JkUmVnZXhTdHJpbmcgKyBcIilcIiArIHNwYWNlUmVnZXhTdHJpbmcgKyBcIiokXCIpO1xudmFyIGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyA9IFwiW1xcdTAzMDAtXFx1MDM2Rl1cIjtcbnZhciBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXggPSBuZXcgUmVnRXhwKGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKyRcIik7XG52YXIgdG9rZW5SZWdleFN0cmluZyA9IFwiKFwiICsgc3BhY2VSZWdleFN0cmluZyArIFwiKyl8XCIgKyAvLyB3aGl0ZXNwYWNlXG5cIihbIS1cXFxcW1xcXFxdLVxcdTIwMjdcXHUyMDJBLVxcdUQ3RkZcXHVGOTAwLVxcdUZGRkZdXCIgKyAoIC8vIHNpbmdsZSBjb2RlcG9pbnRcbmNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyArIFwiKlwiKSArIC8vIC4uLnBsdXMgYWNjZW50c1xuXCJ8W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXVwiICsgKCAvLyBzdXJyb2dhdGUgcGFpclxuY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nICsgXCIqXCIpICsgLy8gLi4ucGx1cyBhY2NlbnRzXG5cInxcXFxcXFxcXHZlcmJcXFxcKihbXl0pLio/XFxcXDNcIiArIC8vIFxcdmVyYipcblwifFxcXFxcXFxcdmVyYihbXiphLXpBLVpdKS4qP1xcXFw0XCIgKyAvLyBcXHZlcmIgdW5zdGFycmVkXG5cInxcXFxcXFxcXG9wZXJhdG9ybmFtZVxcXFwqXCIgKyAoIC8vIFxcb3BlcmF0b3JuYW1lKlxuXCJ8XCIgKyBjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleFN0cmluZykgKyAoIC8vIFxcbWFjcm9OYW1lICsgc3BhY2VzXG5cInxcIiArIGNvbnRyb2xTeW1ib2xSZWdleFN0cmluZyArIFwiKVwiKTsgLy8gXFxcXCwgXFwnLCBldGMuXG5cbi8qKiBNYWluIExleGVyIGNsYXNzICovXG5cbnZhciBMZXhlcl9MZXhlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIGNhdGVnb3J5IGNvZGVzLCBvbmx5IHN1cHBvcnRzIGNvbW1lbnQgY2hhcmFjdGVycyAoMTQpIGZvciBub3dcbiAgZnVuY3Rpb24gTGV4ZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5pbnB1dCA9IHZvaWQgMDtcbiAgICB0aGlzLnNldHRpbmdzID0gdm9pZCAwO1xuICAgIHRoaXMudG9rZW5SZWdleCA9IHZvaWQgMDtcbiAgICB0aGlzLmNhdGNvZGVzID0gdm9pZCAwO1xuICAgIC8vIFNlcGFyYXRlIGFjY2VudHMgZnJvbSBjaGFyYWN0ZXJzXG4gICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLnRva2VuUmVnZXggPSBuZXcgUmVnRXhwKHRva2VuUmVnZXhTdHJpbmcsICdnJyk7XG4gICAgdGhpcy5jYXRjb2RlcyA9IHtcbiAgICAgIFwiJVwiOiAxNCAvLyBjb21tZW50IGNoYXJhY3RlclxuXG4gICAgfTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBMZXhlci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldENhdGNvZGUgPSBmdW5jdGlvbiBzZXRDYXRjb2RlKGNoYXIsIGNvZGUpIHtcbiAgICB0aGlzLmNhdGNvZGVzW2NoYXJdID0gY29kZTtcbiAgfVxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBsZXhlcyBhIHNpbmdsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ubGV4ID0gZnVuY3Rpb24gbGV4KCkge1xuICAgIHZhciBpbnB1dCA9IHRoaXMuaW5wdXQ7XG4gICAgdmFyIHBvcyA9IHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXg7XG5cbiAgICBpZiAocG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgVG9rZW5fVG9rZW4oXCJFT0ZcIiwgbmV3IFNvdXJjZUxvY2F0aW9uKHRoaXMsIHBvcywgcG9zKSk7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gdGhpcy50b2tlblJlZ2V4LmV4ZWMoaW5wdXQpO1xuXG4gICAgaWYgKG1hdGNoID09PSBudWxsIHx8IG1hdGNoLmluZGV4ICE9PSBwb3MpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnXCIgKyBpbnB1dFtwb3NdICsgXCInXCIsIG5ldyBUb2tlbl9Ub2tlbihpbnB1dFtwb3NdLCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCBwb3MgKyAxKSkpO1xuICAgIH1cblxuICAgIHZhciB0ZXh0ID0gbWF0Y2hbMl0gfHwgXCIgXCI7XG5cbiAgICBpZiAodGhpcy5jYXRjb2Rlc1t0ZXh0XSA9PT0gMTQpIHtcbiAgICAgIC8vIGNvbW1lbnQgY2hhcmFjdGVyXG4gICAgICB2YXIgbmxJbmRleCA9IGlucHV0LmluZGV4T2YoJ1xcbicsIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXgpO1xuXG4gICAgICBpZiAobmxJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleCA9IGlucHV0Lmxlbmd0aDsgLy8gRU9GXG5cbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJjb21tZW50QXRFbmRcIiwgXCIlIGNvbW1lbnQgaGFzIG5vIHRlcm1pbmF0aW5nIG5ld2xpbmU7IExhVGVYIHdvdWxkIFwiICsgXCJmYWlsIGJlY2F1c2Ugb2YgY29tbWVudGluZyB0aGUgZW5kIG9mIG1hdGggbW9kZSAoZS5nLiAkKVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXggPSBubEluZGV4ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgfSAvLyBUcmltIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gY29udHJvbCB3b3JkIG1hdGNoXG5cblxuICAgIHZhciBjb250cm9sTWF0Y2ggPSB0ZXh0Lm1hdGNoKGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4KTtcblxuICAgIGlmIChjb250cm9sTWF0Y2gpIHtcbiAgICAgIHRleHQgPSBjb250cm9sTWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUb2tlbl9Ub2tlbih0ZXh0LCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCB0aGlzLnRva2VuUmVnZXgubGFzdEluZGV4KSk7XG4gIH07XG5cbiAgcmV0dXJuIExleGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL05hbWVzcGFjZS5qc1xuLyoqXG4gKiBBIGBOYW1lc3BhY2VgIHJlZmVycyB0byBhIHNwYWNlIG9mIG5hbWVhYmxlIHRoaW5ncyBsaWtlIG1hY3JvcyBvciBsZW5ndGhzLFxuICogd2hpY2ggY2FuIGJlIGBzZXRgIGVpdGhlciBnbG9iYWxseSBvciBsb2NhbCB0byBhIG5lc3RlZCBncm91cCwgdXNpbmcgYW5cbiAqIHVuZG8gc3RhY2sgc2ltaWxhciB0byBob3cgVGVYIGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbmFsaXR5LlxuICogUGVyZm9ybWFuY2Utd2lzZSwgYGdldGAgYW5kIGxvY2FsIGBzZXRgIHRha2UgY29uc3RhbnQgdGltZSwgd2hpbGUgZ2xvYmFsXG4gKiBgc2V0YCB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGUgZGVwdGggb2YgZ3JvdXAgbmVzdGluZy5cbiAqL1xuXG5cbnZhciBOYW1lc3BhY2VfTmFtZXNwYWNlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEJvdGggYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvYmplY3Qgb2ZcbiAgICogYnVpbHQtaW4gbWFwcGluZ3Mgd2hpY2ggbmV2ZXIgY2hhbmdlLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAgICogb2YgaW5pdGlhbCAoZ2xvYmFsLWxldmVsKSBtYXBwaW5ncywgd2hpY2ggd2lsbCBjb25zdGFudGx5IGNoYW5nZVxuICAgKiBhY2NvcmRpbmcgdG8gYW55IGdsb2JhbC90b3AtbGV2ZWwgYHNldGBzIGRvbmUuXG4gICAqL1xuICBmdW5jdGlvbiBOYW1lc3BhY2UoYnVpbHRpbnMsIGdsb2JhbE1hY3Jvcykge1xuICAgIGlmIChidWlsdGlucyA9PT0gdm9pZCAwKSB7XG4gICAgICBidWlsdGlucyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChnbG9iYWxNYWNyb3MgPT09IHZvaWQgMCkge1xuICAgICAgZ2xvYmFsTWFjcm9zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuYnVpbHRpbnMgPSB2b2lkIDA7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gdm9pZCAwO1xuICAgIHRoaXMuY3VycmVudCA9IGdsb2JhbE1hY3JvcztcbiAgICB0aGlzLmJ1aWx0aW5zID0gYnVpbHRpbnM7XG4gICAgdGhpcy51bmRlZlN0YWNrID0gW107XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IG5lc3RlZCBncm91cCwgYWZmZWN0aW5nIGZ1dHVyZSBsb2NhbCBgc2V0YHMuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE5hbWVzcGFjZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmJlZ2luR3JvdXAgPSBmdW5jdGlvbiBiZWdpbkdyb3VwKCkge1xuICAgIHRoaXMudW5kZWZTdGFjay5wdXNoKHt9KTtcbiAgfVxuICAvKipcbiAgICogRW5kIGN1cnJlbnQgbmVzdGVkIGdyb3VwLCByZXN0b3JpbmcgdmFsdWVzIGJlZm9yZSB0aGUgZ3JvdXAgYmVnYW4uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmVuZEdyb3VwID0gZnVuY3Rpb24gZW5kR3JvdXAoKSB7XG4gICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuYmFsYW5jZWQgbmFtZXNwYWNlIGRlc3RydWN0aW9uOiBhdHRlbXB0IFwiICsgXCJ0byBwb3AgZ2xvYmFsIG5hbWVzcGFjZTsgcGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnXCIpO1xuICAgIH1cblxuICAgIHZhciB1bmRlZnMgPSB0aGlzLnVuZGVmU3RhY2sucG9wKCk7XG5cbiAgICBmb3IgKHZhciB1bmRlZiBpbiB1bmRlZnMpIHtcbiAgICAgIGlmICh1bmRlZnMuaGFzT3duUHJvcGVydHkodW5kZWYpKSB7XG4gICAgICAgIGlmICh1bmRlZnNbdW5kZWZdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50W3VuZGVmXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRbdW5kZWZdID0gdW5kZWZzW3VuZGVmXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGV0ZWN0IHdoZXRoZXIgYG5hbWVgIGhhcyBhIGRlZmluaXRpb24uICBFcXVpdmFsZW50IHRvXG4gICAqIGBnZXQobmFtZSkgIT0gbnVsbGAuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhcyA9IGZ1bmN0aW9uIGhhcyhuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCB0aGlzLmJ1aWx0aW5zLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBuYW1lLCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICpcbiAgICogTm90ZTogRG8gbm90IHVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSlgIHRvIGRldGVjdCB3aGV0aGVyIGEgbWFjcm9cbiAgICogaXMgZGVmaW5lZCwgYXMgdGhlIGRlZmluaXRpb24gbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcgd2hpY2ggZXZhbHVhdGVzXG4gICAqIHRvIGBmYWxzZWAgaW4gSmF2YVNjcmlwdC4gIFVzZSBgaWYgKG5hbWVzcGFjZS5nZXQoLi4uKSAhPSBudWxsKWAgb3JcbiAgICogYGlmIChuYW1lc3BhY2UuaGFzKC4uLikpYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsdGluc1tuYW1lXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIG5hbWUsIGFuZCBvcHRpb25hbGx5IHNldCBpdCBnbG9iYWxseSB0b28uXG4gICAqIExvY2FsIHNldCgpIHNldHMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kICh3aGVuIGFwcHJvcHJpYXRlKSBhZGRzIGFuIHVuZG9cbiAgICogb3BlcmF0aW9uIHRvIHRoZSB1bmRvIHN0YWNrLiAgR2xvYmFsIHNldCgpIG1heSBjaGFuZ2UgdGhlIHVuZG9cbiAgICogb3BlcmF0aW9uIGF0IGV2ZXJ5IGxldmVsLCBzbyB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGVpciBudW1iZXIuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnNldCA9IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSwgZ2xvYmFsKSB7XG4gICAgaWYgKGdsb2JhbCA9PT0gdm9pZCAwKSB7XG4gICAgICBnbG9iYWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAvLyBHbG9iYWwgc2V0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBpbiBhbGwgZ3JvdXBzLiAgU2ltdWxhdGUgdGhpc1xuICAgICAgLy8gYnkgZGVzdHJveWluZyBhbnkgdW5kb3MgY3VycmVudGx5IHNjaGVkdWxlZCBmb3IgdGhpcyBuYW1lLFxuICAgICAgLy8gYW5kIGFkZGluZyBhbiB1bmRvIHdpdGggdGhlICpuZXcqIHZhbHVlIChpbiBjYXNlIGl0IGxhdGVyIGdldHNcbiAgICAgIC8vIGxvY2FsbHkgcmVzZXQgd2l0aGluIHRoaXMgZW52aXJvbm1lbnQpLlxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuZGVmU3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVsZXRlIHRoaXMudW5kZWZTdGFja1tpXVtuYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudW5kZWZTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudW5kZWZTdGFja1t0aGlzLnVuZGVmU3RhY2subGVuZ3RoIC0gMV1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5kbyB0aGlzIHNldCBhdCBlbmQgb2YgdGhpcyBncm91cCAocG9zc2libHkgdG8gYHVuZGVmaW5lZGApLFxuICAgICAgLy8gdW5sZXNzIGFuIHVuZG8gaXMgYWxyZWFkeSBpbiBwbGFjZSwgaW4gd2hpY2ggY2FzZSB0aGF0IG9sZGVyXG4gICAgICAvLyB2YWx1ZSBpcyB0aGUgY29ycmVjdCBvbmUuXG4gICAgICB2YXIgdG9wID0gdGhpcy51bmRlZlN0YWNrW3RoaXMudW5kZWZTdGFjay5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRvcCAmJiAhdG9wLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHRvcFtuYW1lXSA9IHRoaXMuY3VycmVudFtuYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4gTmFtZXNwYWNlO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL21hY3Jvcy5qc1xuLyoqXG4gKiBQcmVkZWZpbmVkIG1hY3JvcyBmb3IgS2FUZVguXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBzb21lIGNvbW1hbmRzIGluIHRlcm1zIG9mIG90aGVycy5cbiAqL1xuXG5cblxuXG5cbnZhciBidWlsdGluTWFjcm9zID0ge307XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWNyb3MgPSAoYnVpbHRpbk1hY3Jvcyk7IC8vIFRoaXMgZnVuY3Rpb24gbWlnaHQgb25lIGRheSBhY2NlcHQgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBhbmQgZG8gbW9yZSB0aGluZ3MuXG5cbmZ1bmN0aW9uIGRlZmluZU1hY3JvKG5hbWUsIGJvZHkpIHtcbiAgYnVpbHRpbk1hY3Jvc1tuYW1lXSA9IGJvZHk7XG59IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIG1hY3JvIHRvb2xzXG4vLyBMYVRlWCdzIFxcQGZpcnN0b2Z0d297IzF9eyMyfSBleHBhbmRzIHRvICMxLCBza2lwcGluZyAjMlxuLy8gVGVYIHNvdXJjZTogXFxsb25nXFxkZWZcXEBmaXJzdG9mdHdvIzEjMnsjMX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQGZpcnN0b2Z0d29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuICByZXR1cm4ge1xuICAgIHRva2VuczogYXJnc1swXSxcbiAgICBudW1BcmdzOiAwXG4gIH07XG59KTsgLy8gTGFUZVgncyBcXEBzZWNvbmRvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzIsIHNraXBwaW5nICMxXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQHNlY29uZG9mdHdvIzEjMnsjMn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQHNlY29uZG9mdHdvXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBhcmdzID0gY29udGV4dC5jb25zdW1lQXJncygyKTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgbnVtQXJnczogMFxuICB9O1xufSk7IC8vIExhVGVYJ3MgXFxAaWZuZXh0Y2hhcnsjMX17IzJ9eyMzfSBsb29rcyBhaGVhZCB0byB0aGUgbmV4dCAodW5leHBhbmRlZClcbi8vIHN5bWJvbC4gIElmIGl0IG1hdGNoZXMgIzEsIHRoZW4gdGhlIG1hY3JvIGV4cGFuZHMgdG8gIzI7IG90aGVyd2lzZSwgIzMuXG4vLyBOb3RlLCBob3dldmVyLCB0aGF0IGl0IGRvZXMgbm90IGNvbnN1bWUgdGhlIG5leHQgc3ltYm9sIGluIGVpdGhlciBjYXNlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxAaWZuZXh0Y2hhclwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMyk7IC8vIHN5bWJvbCwgaWYsIGVsc2VcblxuICB2YXIgbmV4dFRva2VuID0gY29udGV4dC5mdXR1cmUoKTtcblxuICBpZiAoYXJnc1swXS5sZW5ndGggPT09IDEgJiYgYXJnc1swXVswXS50ZXh0ID09PSBuZXh0VG9rZW4udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzJdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMYVRlWCdzIFxcQGlmc3RhcnsjMX17IzJ9IGxvb2tzIGFoZWFkIHRvIHRoZSBuZXh0ICh1bmV4cGFuZGVkKSBzeW1ib2wuXG4vLyBJZiBpdCBpcyBgKmAsIHRoZW4gaXQgY29uc3VtZXMgdGhlIHN5bWJvbCwgYW5kIHRoZSBtYWNybyBleHBhbmRzIHRvICMxO1xuLy8gb3RoZXJ3aXNlLCB0aGUgbWFjcm8gZXhwYW5kcyB0byAjMiAod2l0aG91dCBjb25zdW1pbmcgdGhlIHN5bWJvbCkuXG4vLyBUZVggc291cmNlOiBcXGRlZlxcQGlmc3RhciMxe1xcQGlmbmV4dGNoYXIgKntcXEBmaXJzdG9mdHdveyMxfX19XG5cbmRlZmluZU1hY3JvKFwiXFxcXEBpZnN0YXJcIiwgXCJcXFxcQGlmbmV4dGNoYXIgKntcXFxcQGZpcnN0b2Z0d297IzF9fVwiKTsgLy8gTGFUZVgncyBcXFRleHRPck1hdGh7IzF9eyMyfSBleHBhbmRzIHRvICMxIGluIHRleHQgbW9kZSwgIzIgaW4gbWF0aCBtb2RlXG5cbmRlZmluZU1hY3JvKFwiXFxcXFRleHRPck1hdGhcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuXG4gIGlmIChjb250ZXh0Lm1vZGUgPT09ICd0ZXh0Jykge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMF0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW5zOiBhcmdzWzFdLFxuICAgICAgbnVtQXJnczogMFxuICAgIH07XG4gIH1cbn0pOyAvLyBMb29rdXAgdGFibGUgZm9yIHBhcnNpbmcgbnVtYmVycyBpbiBiYXNlIDggdGhyb3VnaCAxNlxuXG52YXIgZGlnaXRUb051bWJlciA9IHtcbiAgXCIwXCI6IDAsXG4gIFwiMVwiOiAxLFxuICBcIjJcIjogMixcbiAgXCIzXCI6IDMsXG4gIFwiNFwiOiA0LFxuICBcIjVcIjogNSxcbiAgXCI2XCI6IDYsXG4gIFwiN1wiOiA3LFxuICBcIjhcIjogOCxcbiAgXCI5XCI6IDksXG4gIFwiYVwiOiAxMCxcbiAgXCJBXCI6IDEwLFxuICBcImJcIjogMTEsXG4gIFwiQlwiOiAxMSxcbiAgXCJjXCI6IDEyLFxuICBcIkNcIjogMTIsXG4gIFwiZFwiOiAxMyxcbiAgXCJEXCI6IDEzLFxuICBcImVcIjogMTQsXG4gIFwiRVwiOiAxNCxcbiAgXCJmXCI6IDE1LFxuICBcIkZcIjogMTVcbn07IC8vIFRlWCBcXGNoYXIgbWFrZXMgYSBsaXRlcmFsIGNoYXJhY3RlciAoY2F0Y29kZSAxMikgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3Jtczpcbi8vIChzZWUgVGhlIFRlWEJvb2ssIHAuIDQzKVxuLy8gICBcXGNoYXIxMjMgIC0tIGRlY2ltYWxcbi8vICAgXFxjaGFyJzEyMyAtLSBvY3RhbFxuLy8gICBcXGNoYXJcIjEyMyAtLSBoZXhcbi8vICAgXFxjaGFyYHggICAtLSBjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgd3JpdHRlbiAoaS5lLiBpc24ndCBhY3RpdmUpXG4vLyAgIFxcY2hhcmBcXHggIC0tIGNoYXJhY3RlciB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIChlLmcuICUpXG4vLyBUaGVzZSBhbGwgcmVmZXIgdG8gY2hhcmFjdGVycyBmcm9tIHRoZSBmb250LCBzbyB3ZSB0dXJuIHRoZW0gaW50byBzcGVjaWFsXG4vLyBjYWxscyB0byBhIGZ1bmN0aW9uIFxcQGNoYXIgZGVhbHQgd2l0aCBpbiB0aGUgUGFyc2VyLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxjaGFyXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgdmFyIGJhc2U7XG4gIHZhciBudW1iZXIgPSAnJztcblxuICBpZiAodG9rZW4udGV4dCA9PT0gXCInXCIpIHtcbiAgICBiYXNlID0gODtcbiAgICB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcbiAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09PSAnXCInKSB7XG4gICAgYmFzZSA9IDE2O1xuICAgIHRva2VuID0gY29udGV4dC5wb3BUb2tlbigpO1xuICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiYFwiKSB7XG4gICAgdG9rZW4gPSBjb250ZXh0LnBvcFRva2VuKCk7XG5cbiAgICBpZiAodG9rZW4udGV4dFswXSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgIG51bWJlciA9IHRva2VuLnRleHQuY2hhckNvZGVBdCgxKTtcbiAgICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxjaGFyYCBtaXNzaW5nIGFyZ3VtZW50XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1iZXIgPSB0b2tlbi50ZXh0LmNoYXJDb2RlQXQoMCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJhc2UgPSAxMDtcbiAgfVxuXG4gIGlmIChiYXNlKSB7XG4gICAgLy8gUGFyc2UgYSBudW1iZXIgaW4gdGhlIGdpdmVuIGJhc2UsIHN0YXJ0aW5nIHdpdGggZmlyc3QgYHRva2VuYC5cbiAgICBudW1iZXIgPSBkaWdpdFRvTnVtYmVyW3Rva2VuLnRleHRdO1xuXG4gICAgaWYgKG51bWJlciA9PSBudWxsIHx8IG51bWJlciA+PSBiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGJhc2UtXCIgKyBiYXNlICsgXCIgZGlnaXQgXCIgKyB0b2tlbi50ZXh0KTtcbiAgICB9XG5cbiAgICB2YXIgZGlnaXQ7XG5cbiAgICB3aGlsZSAoKGRpZ2l0ID0gZGlnaXRUb051bWJlcltjb250ZXh0LmZ1dHVyZSgpLnRleHRdKSAhPSBudWxsICYmIGRpZ2l0IDwgYmFzZSkge1xuICAgICAgbnVtYmVyICo9IGJhc2U7XG4gICAgICBudW1iZXIgKz0gZGlnaXQ7XG4gICAgICBjb250ZXh0LnBvcFRva2VuKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXFxcXEBjaGFye1wiICsgbnVtYmVyICsgXCJ9XCI7XG59KTsgLy8gQmFzaWMgc3VwcG9ydCBmb3IgbWFjcm8gZGVmaW5pdGlvbnM6XG4vLyAgICAgXFxkZWZcXG1hY3Jve2V4cGFuc2lvbn1cbi8vICAgICBcXGRlZlxcbWFjcm8jMXtleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMntleHBhbnNpb259XG4vLyAgICAgXFxkZWZcXG1hY3JvIzEjMiMzIzQjNSM2IzcjOCM5e2V4cGFuc2lvbn1cbi8vIEFsc28gdGhlIFxcZ2RlZiBhbmQgXFxnbG9iYWxcXGRlZiBlcXVpdmFsZW50c1xuXG52YXIgbWFjcm9zX2RlZiA9IGZ1bmN0aW9uIGRlZihjb250ZXh0LCBnbG9iYWwpIHtcbiAgdmFyIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcZ2RlZidzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBtYWNybyBuYW1lXCIpO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBhcmdbMF0udGV4dDsgLy8gQ291bnQgYXJndW1lbnQgc3BlY2lmaWVycywgYW5kIGNoZWNrIHRoZXkgYXJlIGluIHRoZSBvcmRlciAjMSAjMiAuLi5cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgd2hpbGUgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiI1wiKSB7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICAgIGlmIChhcmcubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IG51bWJlciBsZW5ndGggXFxcIlwiICsgYXJnLmxlbmd0aCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIS9eWzEtOV0kLy50ZXN0KGFyZ1swXS50ZXh0KSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBudW1iZXIgXFxcIlwiICsgYXJnWzBdLnRleHQgKyBcIlxcXCJcIik7XG4gICAgfVxuXG4gICAgbnVtQXJncysrO1xuXG4gICAgaWYgKHBhcnNlSW50KGFyZ1swXS50ZXh0KSAhPT0gbnVtQXJncykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiQXJndW1lbnQgbnVtYmVyIFxcXCJcIiArIGFyZ1swXS50ZXh0ICsgXCJcXFwiIG91dCBvZiBvcmRlclwiKTtcbiAgICB9XG5cbiAgICBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuICB9IC8vIEZpbmFsIGFyZyBpcyB0aGUgZXhwYW5zaW9uIG9mIHRoZSBtYWNyb1xuXG5cbiAgY29udGV4dC5tYWNyb3Muc2V0KG5hbWUsIHtcbiAgICB0b2tlbnM6IGFyZyxcbiAgICBudW1BcmdzOiBudW1BcmdzXG4gIH0sIGdsb2JhbCk7XG4gIHJldHVybiAnJztcbn07XG5cbmRlZmluZU1hY3JvKFwiXFxcXGdkZWZcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19kZWYoY29udGV4dCwgdHJ1ZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRlZlwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX2RlZihjb250ZXh0LCBmYWxzZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGdsb2JhbFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgbmV4dCA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKG5leHQubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBjb21tYW5kIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cblxuICB2YXIgY29tbWFuZCA9IG5leHRbMF0udGV4dDsgLy8gVE9ETzogU2hvdWxkIGV4cGFuZCBjb21tYW5kXG5cbiAgaWYgKGNvbW1hbmQgPT09IFwiXFxcXGRlZlwiKSB7XG4gICAgLy8gXFxnbG9iYWxcXGRlZiBpcyBlcXVpdmFsZW50IHRvIFxcZ2RlZlxuICAgIHJldHVybiBtYWNyb3NfZGVmKGNvbnRleHQsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgY29tbWFuZCAnXCIgKyBjb21tYW5kICsgXCInIGFmdGVyIFxcXFxnbG9iYWxcIik7XG4gIH1cbn0pOyAvLyBcXG5ld2NvbW1hbmR7XFxtYWNyb31bYXJnc117ZGVmaW5pdGlvbn1cbi8vIFxccmVuZXdjb21tYW5ke1xcbWFjcm99W2FyZ3Nde2RlZmluaXRpb259XG4vLyBUT0RPOiBPcHRpb25hbCBhcmd1bWVudHM6IFxcbmV3Y29tbWFuZHtcXG1hY3JvfVthcmdzXVtkZWZhdWx0XXtkZWZpbml0aW9ufVxuXG52YXIgbWFjcm9zX25ld2NvbW1hbmQgPSBmdW5jdGlvbiBuZXdjb21tYW5kKGNvbnRleHQsIGV4aXN0c09LLCBub25leGlzdHNPSykge1xuICB2YXIgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAoYXJnLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxuZXdjb21tYW5kJ3MgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIG1hY3JvIG5hbWVcIik7XG4gIH1cblxuICB2YXIgbmFtZSA9IGFyZ1swXS50ZXh0O1xuICB2YXIgZXhpc3RzID0gY29udGV4dC5pc0RlZmluZWQobmFtZSk7XG5cbiAgaWYgKGV4aXN0cyAmJiAhZXhpc3RzT0spIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcbmV3Y29tbWFuZHtcIiArIG5hbWUgKyBcIn0gYXR0ZW1wdGluZyB0byByZWRlZmluZSBcIiArIChuYW1lICsgXCI7IHVzZSBcXFxccmVuZXdjb21tYW5kXCIpKTtcbiAgfVxuXG4gIGlmICghZXhpc3RzICYmICFub25leGlzdHNPSykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxyZW5ld2NvbW1hbmR7XCIgKyBuYW1lICsgXCJ9IHdoZW4gY29tbWFuZCBcIiArIG5hbWUgKyBcIiBcIiArIFwiZG9lcyBub3QgeWV0IGV4aXN0OyB1c2UgXFxcXG5ld2NvbW1hbmRcIik7XG4gIH1cblxuICB2YXIgbnVtQXJncyA9IDA7XG4gIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG5cbiAgaWYgKGFyZy5sZW5ndGggPT09IDEgJiYgYXJnWzBdLnRleHQgPT09IFwiW1wiKSB7XG4gICAgdmFyIGFyZ1RleHQgPSAnJztcbiAgICB2YXIgdG9rZW4gPSBjb250ZXh0LmV4cGFuZE5leHRUb2tlbigpO1xuXG4gICAgd2hpbGUgKHRva2VuLnRleHQgIT09IFwiXVwiICYmIHRva2VuLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgIC8vIFRPRE86IFNob3VsZCBwcm9wZXJseSBleHBhbmQgYXJnLCBlLmcuLCBpZ25vcmUge31zXG4gICAgICBhcmdUZXh0ICs9IHRva2VuLnRleHQ7XG4gICAgICB0b2tlbiA9IGNvbnRleHQuZXhwYW5kTmV4dFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKCFhcmdUZXh0Lm1hdGNoKC9eXFxzKlswLTldK1xccyokLykpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50czogXCIgKyBhcmdUZXh0KTtcbiAgICB9XG5cbiAgICBudW1BcmdzID0gcGFyc2VJbnQoYXJnVGV4dCk7XG4gICAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcbiAgfSAvLyBGaW5hbCBhcmcgaXMgdGhlIGV4cGFuc2lvbiBvZiB0aGUgbWFjcm9cblxuXG4gIGNvbnRleHQubWFjcm9zLnNldChuYW1lLCB7XG4gICAgdG9rZW5zOiBhcmcsXG4gICAgbnVtQXJnczogbnVtQXJnc1xuICB9KTtcbiAgcmV0dXJuICcnO1xufTtcblxuZGVmaW5lTWFjcm8oXCJcXFxcbmV3Y29tbWFuZFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX25ld2NvbW1hbmQoY29udGV4dCwgZmFsc2UsIHRydWUpO1xufSk7XG5kZWZpbmVNYWNybyhcIlxcXFxyZW5ld2NvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIGZhbHNlKTtcbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxccHJvdmlkZWNvbW1hbmRcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgcmV0dXJuIG1hY3Jvc19uZXdjb21tYW5kKGNvbnRleHQsIHRydWUsIHRydWUpO1xufSk7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdyb3VwaW5nXG4vLyBcXGxldFxcYmdyb3VwPXsgXFxsZXRcXGVncm91cD19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJncm91cFwiLCBcIntcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlZ3JvdXBcIiwgXCJ9XCIpOyAvLyBTeW1ib2xzIGZyb20gbGF0ZXgubHR4OlxuLy8gXFxkZWZcXGxxe2B9XG4vLyBcXGRlZlxccnF7J31cbi8vIFxcZGVmIFxcYWEge1xcciBhfVxuLy8gXFxkZWYgXFxBQSB7XFxyIEF9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGxxXCIsIFwiYFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJxXCIsIFwiJ1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFhXCIsIFwiXFxcXHIgYVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEFBXCIsIFwiXFxcXHIgQVwiKTsgLy8gQ29weXJpZ2h0IChDKSBhbmQgcmVnaXN0ZXJlZCAoUikgc3ltYm9scy4gVXNlIHJhdyBzeW1ib2wgaW4gTWF0aE1MLlxuLy8gXFxEZWNsYXJlVGV4dENvbW1hbmREZWZhdWx0e1xcdGV4dGNvcHlyaWdodH17XFx0ZXh0Y2lyY2xlZHtjfX1cbi8vIFxcRGVjbGFyZVRleHRDb21tYW5kRGVmYXVsdHtcXHRleHRyZWdpc3RlcmVkfXtcXHRleHRjaXJjbGVkeyVcbi8vICAgICAgXFxjaGVja0BtYXRoZm9udHNcXGZvbnRzaXplXFxzZkBzaXplXFx6QFxcbWF0aEBmb250c2ZhbHNlXFxzZWxlY3Rmb250IFJ9fVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXGNvcHlyaWdodH17JVxuLy8gICAgXFxpZm1tb2Rle1xcbmZzc0B0ZXh0e1xcdGV4dGNvcHlyaWdodH19XFxlbHNlXFx0ZXh0Y29weXJpZ2h0XFxmaX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dGNvcHlyaWdodFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcdGV4dGNpcmNsZWR7Y319e1xcXFxjaGFyYMKpfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvcHlyaWdodFwiLCBcIlxcXFxUZXh0T3JNYXRoe1xcXFx0ZXh0Y29weXJpZ2h0fXtcXFxcdGV4dHtcXFxcdGV4dGNvcHlyaWdodH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGV4dHJlZ2lzdGVyZWRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHRleHRjaXJjbGVke1xcXFxzY3JpcHRzaXplIFJ9fXtcXFxcY2hhcmDCrn1cIik7IC8vIENoYXJhY3RlcnMgb21pdHRlZCBmcm9tIFVuaWNvZGUgcmFuZ2UgMUQ0MDDigJMxRDdGRlxuXG5kZWZpbmVNYWNybyhcIlxcdTIxMkNcIiwgXCJcXFxcbWF0aHNjcntCfVwiKTsgLy8gc2NyaXB0XG5cbmRlZmluZU1hY3JvKFwiXFx1MjEzMFwiLCBcIlxcXFxtYXRoc2Nye0V9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTMxXCIsIFwiXFxcXG1hdGhzY3J7Rn1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMEJcIiwgXCJcXFxcbWF0aHNjcntIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExMFwiLCBcIlxcXFxtYXRoc2Nye0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTEyXCIsIFwiXFxcXG1hdGhzY3J7TH1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMzNcIiwgXCJcXFxcbWF0aHNjcntNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjExQlwiLCBcIlxcXFxtYXRoc2Nye1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTJEXCIsIFwiXFxcXG1hdGhmcmFre0N9XCIpOyAvLyBGcmFrdHVyXG5cbmRlZmluZU1hY3JvKFwiXFx1MjEwQ1wiLCBcIlxcXFxtYXRoZnJha3tIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEyOFwiLCBcIlxcXFxtYXRoZnJha3tafVwiKTsgLy8gRGVmaW5lIFxcQmJiayB3aXRoIGEgbWFjcm8gdGhhdCB3b3JrcyBpbiBib3RoIEhUTUwgYW5kIE1hdGhNTC5cblxuZGVmaW5lTWFjcm8oXCJcXFxcQmJia1wiLCBcIlxcXFxCYmJ7a31cIik7IC8vIFVuaWNvZGUgbWlkZGxlIGRvdFxuLy8gVGhlIEthVGVYIGZvbnRzIGRvIG5vdCBjb250YWluIFUrMDBCNy4gSW5zdGVhZCwgXFxjZG90cCBkaXNwbGF5c1xuLy8gdGhlIGRvdCBhdCBVKzIyQzUgYW5kIGdpdmVzIGl0IHB1bmN0IHNwYWNpbmcuXG5cbmRlZmluZU1hY3JvKFwiXFx4QjdcIiwgXCJcXFxcY2RvdHBcIik7IC8vIFxcbGxhcCBhbmQgXFxybGFwIHJlbmRlciB0aGVpciBjb250ZW50cyBpbiB0ZXh0IG1vZGVcblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxhcFwiLCBcIlxcXFxtYXRobGxhcHtcXFxcdGV4dHJteyMxfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxybGFwXCIsIFwiXFxcXG1hdGhybGFwe1xcXFx0ZXh0cm17IzF9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsYXBcIiwgXCJcXFxcbWF0aGNsYXB7XFxcXHRleHRybXsjMX19XCIpOyAvLyBcXG5vdCBpcyBkZWZpbmVkIGJ5IGJhc2UvZm9udG1hdGgubHR4IHZpYVxuLy8gXFxEZWNsYXJlTWF0aFN5bWJvbHtcXG5vdH17XFxtYXRocmVsfXtzeW1ib2xzfXtcIjM2fVxuLy8gSXQncyB0aHVzIHRyZWF0ZWQgbGlrZSBhIFxcbWF0aHJlbCwgYnV0IGRlZmluZWQgYnkgYSBzeW1ib2wgdGhhdCBoYXMgemVyb1xuLy8gd2lkdGggYnV0IGV4dGVuZHMgdG8gdGhlIHJpZ2h0LiAgV2UgdXNlIFxccmxhcCB0byBnZXQgdGhhdCBzcGFjaW5nLlxuLy8gRm9yIE1hdGhNTCB3ZSB3cml0ZSBVKzAzMzggaGVyZS4gYnVpbGRNYXRoTUwuanMgd2lsbCB0aGVuIGRvIHRoZSBvdmVybGF5LlxuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RcIiwgJ1xcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHtcXFxcbWF0aHJsYXBcXFxcQG5vdH19e1xcXFxjaGFyXCIzMzh9Jyk7IC8vIE5lZ2F0ZWQgc3ltYm9scyBmcm9tIGJhc2UvZm9udG1hdGgubHR4OlxuLy8gXFxkZWZcXG5lcXtcXG5vdD19IFxcbGV0XFxuZT1cXG5lcVxuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZFxuLy8gICBcXG5vdGlue1xcbWF0aHJlbHtcXG1AdGhcXG1hdGhwYWxldHRlXFxjQG5jZWxcXGlufX1cbi8vIFxcZGVmXFxjQG5jZWwjMSMye1xcbUB0aFxcb29hbGlnbnskXFxoZmlsIzFcXG1rZXJuMW11L1xcaGZpbCRcXGNyY3IkIzEjMiR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXG1hdGhyZWx7XFxcXG5vdD19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiaB9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5lXCIsIFwiXFxcXG5lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI2MFwiLCBcIlxcXFxuZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxub3RpblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHt7XFxcXGlufVxcXFxtYXRobGxhcHsvXFxcXG1za2lwMW11fX19XCIgKyBcIntcXFxcbWF0aHJlbHtcXFxcY2hhcmDiiIl9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjIwOVwiLCBcIlxcXFxub3RpblwiKTsgLy8gVW5pY29kZSBzdGFja2VkIHJlbGF0aW9uc1xuXG5kZWZpbmVNYWNybyhcIlxcdTIyNThcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxca2VybnstMWVtfVxcXFxyYWlzZWJveHswLjRlbX17JFxcXFxzY3JpcHRzaXplXFxcXGZyb3duJH19XCIgKyBcIn17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1OH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjU5XCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFx3ZWRnZX17PX19e1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNTh9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1QVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcdmVlfXs9fX17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1QX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVCXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcc2NyaXB0c2l6ZVxcXFxzdGFyfXs9fX1cIiArIFwie1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNUJ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjI1RFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcc3RhY2tyZWx7XFxcXHRpbnlcXFxcbWF0aHJte2RlZn19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVFXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFxtYXRocm17bX19ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1RX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVGXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueT99ez19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVGfX1cIik7IC8vIE1pc2MgVW5pY29kZVxuXG5kZWZpbmVNYWNybyhcIlxcdTI3QzJcIiwgXCJcXFxccGVycFwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjAzQ1wiLCBcIlxcXFxtYXRoY2xvc2V7IVxcXFxta2Vybi0wLjhtdSF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjBDXCIsIFwiXFxcXG5vdG5pXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFDXCIsIFwiXFxcXHVsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFEXCIsIFwiXFxcXHVyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFFXCIsIFwiXFxcXGxsY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMzFGXCIsIFwiXFxcXGxyY29ybmVyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHhBOVwiLCBcIlxcXFxjb3B5cmlnaHRcIik7XG5kZWZpbmVNYWNybyhcIlxceEFFXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHVGRTBGXCIsIFwiXFxcXHRleHRyZWdpc3RlcmVkXCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMYVRlWF8yzrVcbi8vIFxcdmRvdHN7XFx2Ym94e1xcYmFzZWxpbmVza2lwNFxccEAgIFxcbGluZXNraXBsaW1pdFxcekBcbi8vIFxca2VybjZcXHBAXFxoYm94ey59XFxoYm94ey59XFxoYm94ey59fX1cbi8vIFdlJ2xsIGNhbGwgXFx2YXJ2ZG90cywgd2hpY2ggZ2V0cyBhIGdseXBoIGZyb20gc3ltYm9scy5qcy5cbi8vIFRoZSB6ZXJvLXdpZHRoIHJ1bGUgZ2V0cyB1cyBhbiBlcXVpdmFsZW50IHRvIHRoZSB2ZXJ0aWNhbCA2cHQga2Vybi5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmRvdHNcIiwgXCJcXFxcbWF0aG9yZHtcXFxcdmFydmRvdHNcXFxccnVsZXswcHR9ezE1cHR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjJFRVwiLCBcIlxcXFx2ZG90c1wiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gYW1zbWF0aC5zdHlcbi8vIGh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS90ZXgtYXJjaGl2ZS9tYWNyb3MvbGF0ZXgvcmVxdWlyZWQvYW1zbWF0aC9hbXNtYXRoLnBkZlxuLy8gSXRhbGljIEdyZWVrIGNhcGl0YWwgbGV0dGVycy4gIEFNUyBkZWZpbmVzIHRoZXNlIHdpdGggXFxEZWNsYXJlTWF0aFN5bWJvbCxcbi8vIGJ1dCB0aGV5IGFyZSBlcXVpdmFsZW50IHRvIFxcbWF0aGl0e1xcTGV0dGVyfS5cblxuZGVmaW5lTWFjcm8oXCJcXFxcdmFyR2FtbWFcIiwgXCJcXFxcbWF0aGl0e1xcXFxHYW1tYX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJEZWx0YVwiLCBcIlxcXFxtYXRoaXR7XFxcXERlbHRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclRoZXRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcVGhldGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyTGFtYmRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcTGFtYmRhfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclhpXCIsIFwiXFxcXG1hdGhpdHtcXFxcWGl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyUGlcIiwgXCJcXFxcbWF0aGl0e1xcXFxQaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJTaWdtYVwiLCBcIlxcXFxtYXRoaXR7XFxcXFNpZ21hfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclVwc2lsb25cIiwgXCJcXFxcbWF0aGl0e1xcXFxVcHNpbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclBoaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBoaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJQc2lcIiwgXCJcXFxcbWF0aGl0e1xcXFxQc2l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyT21lZ2FcIiwgXCJcXFxcbWF0aGl0e1xcXFxPbWVnYX1cIik7IC8vXFxuZXdjb21tYW5ke1xcc3Vic3RhY2t9WzFde1xcc3ViYXJyYXl7Y30jMVxcZW5kc3ViYXJyYXl9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHN1YnN0YWNrXCIsIFwiXFxcXGJlZ2lue3N1YmFycmF5fXtjfSMxXFxcXGVuZHtzdWJhcnJheX1cIik7IC8vIFxccmVuZXdjb21tYW5ke1xcY29sb259e1xcbm9icmVha1xcbXNraXAybXVcXG1hdGhwdW5jdHt9XFxub25zY3JpcHRcbi8vIFxcbWtlcm4tXFx0aGlubXVza2lwezp9XFxtc2tpcDZtdXBsdXMxbXVcXHJlbGF4fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvblwiLCBcIlxcXFxub2JyZWFrXFxcXG1za2lwMm11XFxcXG1hdGhwdW5jdHt9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxta2Vybi0zbXV9e1xcXFxta2Vybi0zbXV9e317fXs6fVxcXFxtc2tpcDZtdVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcYm94ZWR9WzFde1xcZmJveHtcXG1AdGgkXFxkaXNwbGF5c3R5bGUjMSR9fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxib3hlZFwiLCBcIlxcXFxmYm94eyRcXFxcZGlzcGxheXN0eWxleyMxfSR9XCIpOyAvLyBcXGRlZlxcaWZme1xcRE9UU0JcXDtcXExvbmdsZWZ0cmlnaHRhcnJvd1xcO31cbi8vIFxcZGVmXFxpbXBsaWVze1xcRE9UU0JcXDtcXExvbmdyaWdodGFycm93XFw7fVxuLy8gXFxkZWZcXGltcGxpZWRieXtcXERPVFNCXFw7XFxMb25nbGVmdGFycm93XFw7fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxpZmZcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25nbGVmdHJpZ2h0YXJyb3dcXFxcO1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGltcGxpZXNcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25ncmlnaHRhcnJvd1xcXFw7XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1wbGllZGJ5XCIsIFwiXFxcXERPVFNCXFxcXDtcXFxcTG9uZ2xlZnRhcnJvd1xcXFw7XCIpOyAvLyBBTVNNYXRoJ3MgYXV0b21hdGljIFxcZG90cywgYmFzZWQgb24gXFxtZG90c0BAIG1hY3JvLlxuXG52YXIgZG90c0J5VG9rZW4gPSB7XG4gICcsJzogJ1xcXFxkb3RzYycsXG4gICdcXFxcbm90JzogJ1xcXFxkb3RzYicsXG4gIC8vIFxca2V5YmluQCBjaGVja3MgZm9yIHRoZSBmb2xsb3dpbmc6XG4gICcrJzogJ1xcXFxkb3RzYicsXG4gICc9JzogJ1xcXFxkb3RzYicsXG4gICc8JzogJ1xcXFxkb3RzYicsXG4gICc+JzogJ1xcXFxkb3RzYicsXG4gICctJzogJ1xcXFxkb3RzYicsXG4gICcqJzogJ1xcXFxkb3RzYicsXG4gICc6JzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXERPVFNCOlxuICAnXFxcXERPVFNCJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcY29wcm9kJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlndmVlJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnd2VkZ2UnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWd1cGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2NhcCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ2N1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXHByb2QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxzdW0nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvdGltZXMnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdvcGx1cyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ29kb3QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWdzcWN1cCc6ICdcXFxcZG90c2InLFxuICAnXFxcXEFuZCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ3JpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxsb25nbGVmdGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ2xlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXExvbmdsZWZ0cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXG1hcHN0byc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdtYXBzdG8nOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxob29rcmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGRvdGVxJzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXG1hdGhiaW46XG4gICdcXFxcbWF0aGJpbic6ICdcXFxcZG90c2InLFxuICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxtYXRocmVsOlxuICAnXFxcXG1hdGhyZWwnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxyZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxSZWxiYXInOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFx4cmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXHhsZWZ0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU0k6XG4gICdcXFxcRE9UU0knOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxvaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWludCc6ICdcXFxcZG90c2knLFxuICAnXFxcXGlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWlpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWRvdHNpbnQnOiAnXFxcXGRvdHNpJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU1g6XG4gICdcXFxcRE9UU1gnOiAnXFxcXGRvdHN4J1xufTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgLy8gVE9ETzogSWYgdXNlZCBpbiB0ZXh0IG1vZGUsIHNob3VsZCBleHBhbmQgdG8gXFx0ZXh0ZWxsaXBzaXMuXG4gIC8vIEhvd2V2ZXIsIGluIEthVGVYLCBcXHRleHRlbGxpcHNpcyBhbmQgXFxsZG90cyBiZWhhdmUgdGhlIHNhbWVcbiAgLy8gKGluIHRleHQgbW9kZSksIGFuZCBpdCdzIHVubGlrZWx5IHdlJ2Qgc2VlIGFueSBvZiB0aGUgbWF0aCBjb21tYW5kc1xuICAvLyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgXFxkb3RzIHdoZW4gaW4gdGV4dCBtb2RlLiAgU28gZmluZSBmb3Igbm93XG4gIC8vICh1bnRpbCB3ZSBzdXBwb3J0IFxcaWZtbW9kZSAuLi4gXFxlbHNlIC4uLiBcXGZpKS5cbiAgdmFyIHRoZWRvdHMgPSAnXFxcXGRvdHNvJztcbiAgdmFyIG5leHQgPSBjb250ZXh0LmV4cGFuZEFmdGVyRnV0dXJlKCkudGV4dDtcblxuICBpZiAobmV4dCBpbiBkb3RzQnlUb2tlbikge1xuICAgIHRoZWRvdHMgPSBkb3RzQnlUb2tlbltuZXh0XTtcbiAgfSBlbHNlIGlmIChuZXh0LnN1YnN0cigwLCA0KSA9PT0gJ1xcXFxub3QnKSB7XG4gICAgdGhlZG90cyA9ICdcXFxcZG90c2InO1xuICB9IGVsc2UgaWYgKG5leHQgaW4gc3JjX3N5bWJvbHMubWF0aCkge1xuICAgIGlmICh1dGlscy5jb250YWlucyhbJ2JpbicsICdyZWwnXSwgc3JjX3N5bWJvbHMubWF0aFtuZXh0XS5ncm91cCkpIHtcbiAgICAgIHRoZWRvdHMgPSAnXFxcXGRvdHNiJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhlZG90cztcbn0pO1xudmFyIHNwYWNlQWZ0ZXJEb3RzID0ge1xuICAvLyBcXHJpZ2h0ZGVsaW1AIGNoZWNrcyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyknOiB0cnVlLFxuICAnXSc6IHRydWUsXG4gICdcXFxccmJyYWNrJzogdHJ1ZSxcbiAgJ1xcXFx9JzogdHJ1ZSxcbiAgJ1xcXFxyYnJhY2UnOiB0cnVlLFxuICAnXFxcXHJhbmdsZSc6IHRydWUsXG4gICdcXFxccmNlaWwnOiB0cnVlLFxuICAnXFxcXHJmbG9vcic6IHRydWUsXG4gICdcXFxccmdyb3VwJzogdHJ1ZSxcbiAgJ1xcXFxybW91c3RhY2hlJzogdHJ1ZSxcbiAgJ1xcXFxyaWdodCc6IHRydWUsXG4gICdcXFxcYmlncic6IHRydWUsXG4gICdcXFxcYmlnZ3InOiB0cnVlLFxuICAnXFxcXEJpZ3InOiB0cnVlLFxuICAnXFxcXEJpZ2dyJzogdHJ1ZSxcbiAgLy8gXFxleHRyYUAgYWxzbyB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJyQnOiB0cnVlLFxuICAvLyBcXGV4dHJhcEAgY2hlY2tzIGZvciB0aGUgZm9sbG93aW5nOlxuICAnOyc6IHRydWUsXG4gICcuJzogdHJ1ZSxcbiAgJywnOiB0cnVlXG59O1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7XG5cbiAgaWYgKG5leHQgaW4gc3BhY2VBZnRlckRvdHMpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNjXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0OyAvLyBcXGRvdHNjIHVzZXMgXFxleHRyYUAgYnV0IG5vdCBcXGV4dHJhcEAsIGluc3RlYWQgc3BlY2lhbGx5IGNoZWNraW5nIGZvclxuICAvLyAnOycgYW5kICcuJywgYnV0IGRvZXNuJ3QgY2hlY2sgZm9yICcsJy5cblxuICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cyAmJiBuZXh0ICE9PSAnLCcpIHtcbiAgICByZXR1cm4gXCJcXFxcbGRvdHNcXFxcLFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGNkb3RzXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5mdXR1cmUoKS50ZXh0O1xuXG4gIGlmIChuZXh0IGluIHNwYWNlQWZ0ZXJEb3RzKSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1xcXFwsXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXFxcXEBjZG90c1wiO1xuICB9XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNiXCIsIFwiXFxcXGNkb3RzXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c21cIiwgXCJcXFxcY2RvdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzaVwiLCBcIlxcXFwhXFxcXGNkb3RzXCIpOyAvLyBhbXNtYXRoIGRvZXNuJ3QgYWN0dWFsbHkgZGVmaW5lIFxcZG90c3gsIGJ1dCBcXGRvdHMgZm9sbG93ZWQgYnkgYSBtYWNyb1xuLy8gc3RhcnRpbmcgd2l0aCBcXERPVFNYIGltcGxpZXMgXFxkb3RzbywgYW5kIHRoZW4gXFxleHRyYUAgZGV0ZWN0cyB0aGlzIGNhc2Vcbi8vIGFuZCBmb3JjZXMgdGhlIGFkZGVkIGBcXCxgLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzeFwiLCBcIlxcXFxsZG90c1xcXFwsXCIpOyAvLyBcXGxldFxcRE9UU0lcXHJlbGF4XG4vLyBcXGxldFxcRE9UU0JcXHJlbGF4XG4vLyBcXGxldFxcRE9UU1hcXHJlbGF4XG5cbmRlZmluZU1hY3JvKFwiXFxcXERPVFNJXCIsIFwiXFxcXHJlbGF4XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRE9UU0JcIiwgXCJcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxET1RTWFwiLCBcIlxcXFxyZWxheFwiKTsgLy8gU3BhY2luZywgYmFzZWQgb24gYW1zbWF0aC5zdHkncyBvdmVycmlkZSBvZiBMYVRlWCBkZWZhdWx0c1xuLy8gXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXHRtc3BhY2V9WzNdeyVcbi8vICAgXFxpZm1tb2RlXFxtc2tpcCMxIzJcXGVsc2VcXGtlcm4jMSMzXFxmaVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRtc3BhY2VcIiwgXCJcXFxcVGV4dE9yTWF0aHtcXFxca2VybiMxIzN9e1xcXFxtc2tpcCMxIzJ9XFxcXHJlbGF4XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXCx9e1xcdG1zcGFjZStcXHRoaW5tdXNraXB7LjE2NjdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaW5tdXNraXBcblxuZGVmaW5lTWFjcm8oXCJcXFxcLFwiLCBcIlxcXFx0bXNwYWNlK3szbXV9ey4xNjY3ZW19XCIpOyAvLyBcXGxldFxcdGhpbnNwYWNlXFwsXG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaW5zcGFjZVwiLCBcIlxcXFwsXCIpOyAvLyBcXGRlZlxcPntcXG1za2lwXFxtZWRtdXNraXB9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXDp9e1xcdG1zcGFjZStcXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IFxcPiBhbmQgbWF0aCBtb2RlIG9mIFxcOiBzaG91bGQgdXNlIFxcbWVkbXVza2lwID0gNG11IHBsdXMgMm11IG1pbnVzIDRtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw+XCIsIFwiXFxcXG1za2lwezRtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFw6XCIsIFwiXFxcXHRtc3BhY2UrezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbGV0XFxtZWRzcGFjZVxcOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxtZWRzcGFjZVwiLCBcIlxcXFw6XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXDt9e1xcdG1zcGFjZStcXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcCA9IDVtdSBwbHVzIDVtdVxuXG5kZWZpbmVNYWNybyhcIlxcXFw7XCIsIFwiXFxcXHRtc3BhY2UrezVtdX17LjI3NzdlbX1cIik7IC8vIFxcbGV0XFx0aGlja3NwYWNlXFw7XG5cbmRlZmluZU1hY3JvKFwiXFxcXHRoaWNrc3BhY2VcIiwgXCJcXFxcO1wiKTsgLy8gXFxyZW5ld2NvbW1hbmR7XFwhfXtcXHRtc3BhY2UtXFx0aGlubXVza2lwey4xNjY3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlubXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXCFcIiwgXCJcXFxcdG1zcGFjZS17M211fXsuMTY2N2VtfVwiKTsgLy8gXFxsZXRcXG5lZ3RoaW5zcGFjZVxcIVxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGluc3BhY2VcIiwgXCJcXFxcIVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcbmVnbWVkc3BhY2V9e1xcdG1zcGFjZS1cXG1lZG11c2tpcHsuMjIyMmVtfX1cbi8vIFRPRE86IG1hdGggbW9kZSBzaG91bGQgdXNlIFxcbWVkbXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lZ21lZHNwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezRtdX17LjIyMjJlbX1cIik7IC8vIFxcbmV3Y29tbWFuZHtcXG5lZ3RoaWNrc3BhY2V9e1xcdG1zcGFjZS1cXHRoaWNrbXVza2lwey4yNzc3ZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFx0aGlja211c2tpcFxuXG5kZWZpbmVNYWNybyhcIlxcXFxuZWd0aGlja3NwYWNlXCIsIFwiXFxcXHRtc3BhY2UtezVtdX17LjI3N2VtfVwiKTsgLy8gXFxkZWZcXGVuc3BhY2V7XFxrZXJuLjVlbSB9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVuc3BhY2VcIiwgXCJcXFxca2Vybi41ZW0gXCIpOyAvLyBcXGRlZlxcZW5za2lwe1xcaHNraXAuNWVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZW5za2lwXCIsIFwiXFxcXGhza2lwLjVlbVxcXFxyZWxheFwiKTsgLy8gXFxkZWZcXHF1YWR7XFxoc2tpcDFlbVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXHF1YWRcIiwgXCJcXFxcaHNraXAxZW1cXFxccmVsYXhcIik7IC8vIFxcZGVmXFxxcXVhZHtcXGhza2lwMmVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxccXF1YWRcIiwgXCJcXFxcaHNraXAyZW1cXFxccmVsYXhcIik7IC8vIFxcdGFnQGluQGRpc3BsYXkgZm9ybSBvZiBcXHRhZ1xuXG5kZWZpbmVNYWNybyhcIlxcXFx0YWdcIiwgXCJcXFxcQGlmc3RhclxcXFx0YWdAbGl0ZXJhbFxcXFx0YWdAcGFyZW5cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0YWdAcGFyZW5cIiwgXCJcXFxcdGFnQGxpdGVyYWx7KHsjMX0pfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRhZ0BsaXRlcmFsXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0Lm1hY3Jvcy5nZXQoXCJcXFxcZGZAdGFnXCIpKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTXVsdGlwbGUgXFxcXHRhZ1wiKTtcbiAgfVxuXG4gIHJldHVybiBcIlxcXFxnZGVmXFxcXGRmQHRhZ3tcXFxcdGV4dHsjMX19XCI7XG59KTsgLy8gXFxyZW5ld2NvbW1hbmR7XFxibW9kfXtcXG5vbnNjcmlwdFxcbXNraXAtXFxtZWRtdXNraXBcXG1rZXJuNW11XFxtYXRoYmluXG4vLyAgIHtcXG9wZXJhdG9yQGZvbnQgbW9kfVxccGVuYWx0eTkwMFxuLy8gICBcXG1rZXJuNW11XFxub25zY3JpcHRcXG1za2lwLVxcbWVkbXVza2lwfVxuLy8gXFxuZXdjb21tYW5ke1xccG9kfVsxXXtcXGFsbG93YnJlYWtcbi8vICAgXFxpZkBkaXNwbGF5XFxta2VybjE4bXVcXGVsc2VcXG1rZXJuOG11XFxmaSgjMSl9XG4vLyBcXHJlbmV3Y29tbWFuZHtcXHBtb2R9WzFde1xccG9ke3tcXG9wZXJhdG9yQGZvbnQgbW9kfVxcbWtlcm42bXUjMX19XG4vLyBcXG5ld2NvbW1hbmR7XFxtb2R9WzFde1xcYWxsb3dicmVha1xcaWZAZGlzcGxheVxcbWtlcm4xOG11XG4vLyAgIFxcZWxzZVxcbWtlcm4xMm11XFxmaXtcXG9wZXJhdG9yQGZvbnQgbW9kfVxcLFxcLCMxfVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFxtZWRtdXNraXAgPSA0bXUgcGx1cyAybXUgbWludXMgNG11XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJtb2RcIiwgXCJcXFxcbWF0aGNob2ljZXtcXFxcbXNraXAxbXV9e1xcXFxtc2tpcDFtdX17XFxcXG1za2lwNW11fXtcXFxcbXNraXA1bXV9XCIgKyBcIlxcXFxtYXRoYmlue1xcXFxybSBtb2R9XCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxtc2tpcDFtdX17XFxcXG1za2lwMW11fXtcXFxcbXNraXA1bXV9e1xcXFxtc2tpcDVtdX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm44bXV9e1xcXFxta2VybjhtdX17XFxcXG1rZXJuOG11fSgjMSlcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbW9kXCIsIFwiXFxcXHBvZHt7XFxcXHJtIG1vZH1cXFxcbWtlcm42bXUjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtb2RcIiwgXCJcXFxcYWxsb3dicmVha1wiICsgXCJcXFxcbWF0aGNob2ljZXtcXFxcbWtlcm4xOG11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fXtcXFxcbWtlcm4xMm11fVwiICsgXCJ7XFxcXHJtIG1vZH1cXFxcLFxcXFwsIzFcIik7IC8vIFxccG1iICAgIC0tICAgQSBzaW11bGF0aW9uIG9mIGJvbGQuXG4vLyBUaGUgdmVyc2lvbiBpbiBhbWJzeS5zdHkgd29ya3MgYnkgdHlwZXNldHRpbmcgdGhyZWUgY29waWVzIG9mIHRoZSBhcmd1bWVudFxuLy8gd2l0aCBzbWFsbCBvZmZzZXRzLiBXZSB1c2UgdHdvIGNvcGllcy4gV2Ugb21pdCB0aGUgdmVydGljYWwgb2Zmc2V0IGJlY2F1c2Vcbi8vIG9mIHJlbmRlcmluZyBwcm9ibGVtcyB0aGF0IG1ha2VWTGlzdCBlbmNvdW50ZXJzIGluIFNhZmFyaS5cblxuZGVmaW5lTWFjcm8oXCJcXFxccG1iXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcQGJpbnJlbHsjMX17XFxcXG1hdGhybGFweyMxfVxcXFxrZXJuMC41cHgjMX19XCIgKyBcIntcXFxcbWF0aGJmeyMxfX1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIExhVGVYIHNvdXJjZTJlXG4vLyBcXFxcIGRlZmF1bHRzIHRvIFxcbmV3bGluZSwgYnV0IGNoYW5nZXMgdG8gXFxjciB3aXRoaW4gYXJyYXkgZW52aXJvbm1lbnRcblxuZGVmaW5lTWFjcm8oXCJcXFxcXFxcXFwiLCBcIlxcXFxuZXdsaW5lXCIpOyAvLyBcXGRlZlxcVGVYe1RcXGtlcm4tLjE2NjdlbVxcbG93ZXIuNWV4XFxoYm94e0V9XFxrZXJuLS4xMjVlbVhcXEB9XG4vLyBUT0RPOiBEb2Vzbid0IG5vcm1hbGx5IHdvcmsgaW4gbWF0aCBtb2RlIGJlY2F1c2UgXFxAIGZhaWxzLiAgS2FUZVggZG9lc24ndFxuLy8gc3VwcG9ydCBcXEAgeWV0LCBzbyB0aGF0J3Mgb21pdHRlZCwgYW5kIHdlIGFkZCBcXHRleHQgc28gdGhhdCB0aGUgcmVzdWx0XG4vLyBkb2Vzbid0IGxvb2sgZnVubnkgaW4gbWF0aCBtb2RlLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIFwiVFxcXFxrZXJuLS4xNjY3ZW1cXFxccmFpc2Vib3h7LS41ZXh9e0V9XFxcXGtlcm4tLjEyNWVtWFwiICsgXCJ9e1RlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcTGFUZVh9e0xcXGtlcm4tLjM2ZW0lXG4vLyAgICAgICAgIHtcXHNib3hcXHpAIFQlXG4vLyAgICAgICAgICBcXHZib3ggdG9cXGh0XFx6QHtcXGhib3h7XFxjaGVja0BtYXRoZm9udHNcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcZm9udHNpemVcXHNmQHNpemVcXHpAXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXG1hdGhAZm9udHNmYWxzZVxcc2VsZWN0Zm9udFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQX0lXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBcXHZzc30lXG4vLyAgICAgICAgIH0lXG4vLyAgICAgICAgIFxca2Vybi0uMTVlbSVcbi8vICAgICAgICAgXFxUZVh9XG4vLyBUaGlzIGNvZGUgYWxpZ25zIHRoZSB0b3Agb2YgdGhlIEEgd2l0aCB0aGUgVCAoZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgVGVYJ3Ncbi8vIGJveGVzLCB0aG91Z2ggdmlzdWFsbHkgdGhlIEEgYXBwZWFycyB0byBleHRlbmQgYWJvdmUgc2xpZ2h0bHkpLlxuLy8gV2UgY29tcHV0ZSB0aGUgY29ycmVzcG9uZGluZyBcXHJhaXNlYm94IHdoZW4gQSBpcyByZW5kZXJlZCBpbiBcXG5vcm1hbHNpemVcbi8vIFxcc2NyaXB0c3R5bGUsIHdoaWNoIGhhcyBhIHNjYWxlIGZhY3RvciBvZiAwLjcgKHNlZSBPcHRpb25zLmpzKS5cblxudmFyIGxhdGV4UmFpc2VBID0gZm9udE1ldHJpY3NEYXRhWydNYWluLVJlZ3VsYXInXVtcIlRcIi5jaGFyQ29kZUF0KDApXVsxXSAtIDAuNyAqIGZvbnRNZXRyaWNzRGF0YVsnTWFpbi1SZWd1bGFyJ11bXCJBXCIuY2hhckNvZGVBdCgwKV1bMV0gKyBcImVtXCI7XG5kZWZpbmVNYWNybyhcIlxcXFxMYVRlWFwiLCBcIlxcXFx0ZXh0cm17XFxcXGh0bWxAbWF0aG1se1wiICsgKFwiTFxcXFxrZXJuLS4zNmVtXFxcXHJhaXNlYm94e1wiICsgbGF0ZXhSYWlzZUEgKyBcIn17XFxcXHNjcmlwdHN0eWxlIEF9XCIpICsgXCJcXFxca2Vybi0uMTVlbVxcXFxUZVh9e0xhVGVYfX1cIik7IC8vIE5ldyBLYVRlWCBsb2dvIGJhc2VkIG9uIHR3ZWFraW5nIExhVGVYIGxvZ29cblxuZGVmaW5lTWFjcm8oXCJcXFxcS2FUZVhcIiwgXCJcXFxcdGV4dHJte1xcXFxodG1sQG1hdGhtbHtcIiArIChcIktcXFxca2Vybi0uMTdlbVxcXFxyYWlzZWJveHtcIiArIGxhdGV4UmFpc2VBICsgXCJ9e1xcXFxzY3JpcHRzdHlsZSBBfVwiKSArIFwiXFxcXGtlcm4tLjE1ZW1cXFxcVGVYfXtLYVRlWH19XCIpOyAvLyBcXERlY2xhcmVSb2J1c3RDb21tYW5kXFxoc3BhY2V7XFxAaWZzdGFyXFxAaHNwYWNlclxcQGhzcGFjZX1cbi8vIFxcZGVmXFxAaHNwYWNlIzF7XFxoc2tpcCAgIzFcXHJlbGF4fVxuLy8gXFxkZWZcXEBoc3BhY2VyIzF7XFx2cnVsZSBcXEB3aWR0aFxcekBcXG5vYnJlYWtcbi8vICAgICAgICAgICAgICAgICBcXGhza2lwICMxXFxoc2tpcCBcXHpAc2tpcH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcaHNwYWNlXCIsIFwiXFxcXEBpZnN0YXJcXFxcQGhzcGFjZXJcXFxcQGhzcGFjZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEBoc3BhY2VcIiwgXCJcXFxcaHNraXAgIzFcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxAaHNwYWNlclwiLCBcIlxcXFxydWxlezBwdH17MHB0fVxcXFxoc2tpcCAjMVxcXFxyZWxheFwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gbWF0aHRvb2xzLnN0eVxuLy9cXHByb3ZpZGVjb21tYW5kXFxvcmRpbmFyeWNvbG9uezp9XG5cbmRlZmluZU1hY3JvKFwiXFxcXG9yZGluYXJ5Y29sb25cIiwgXCI6XCIpOyAvL1xcZGVmXFx2Y2VudGNvbG9ue1xcbWF0aHJlbHtcXG1hdGhvcFxcb3JkaW5hcnljb2xvbn19XG4vL1RPRE8oZWRlbWFpbmUpOiBOb3QgeWV0IGNlbnRlcmVkLiBGaXggdmlhIFxccmFpc2Vib3ggb3IgIzcyNlxuXG5kZWZpbmVNYWNybyhcIlxcXFx2Y2VudGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhvcFxcXFxvcmRpbmFyeWNvbG9ufVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGRibGNvbG9ue1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLS45bXV9XFx2Y2VudGNvbG9ufVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYmxjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tLjltdX1cXFxcdmNlbnRjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMzd9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uZXFxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fT19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXFxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NH19XCIpOyAvLyDiiZRcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbmVxcXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9PX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX09fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjNkfX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmVxe1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXG1hdGhyZWx7LX19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uZXF7XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcbWF0aHJlbHstfX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxtYXRocmVsey19fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyMTJ9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxcWNvbG9uez1cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXHZjZW50Y29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXGVxcWNvbG9uXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHs9XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjI1NX19XCIpOyAvLyDiiZVcbi8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcXFjb2xvbns9XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxkYmxjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcRXFxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiM2RcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxlcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcdmNlbnRjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZXFjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhyZWx7LX1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM5fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxFcWNvbG9ue1xcbWF0aHJlbHstfVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcZGJsY29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXEVxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxtYXRocmVsey19XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxkYmxjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMTJcXFxcY2hhclxcXCIyMjM3fX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxjb2xvbmFwcHJveHtcXHZjZW50Y29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFx2Y2VudGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxhcHByb3h9fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzYVxcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uYXBwcm94e1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGFwcHJveH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQ29sb25hcHByb3hcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFxkYmxjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcYXBwcm94fX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN1xcXFxjaGFyXFxcIjIyNDh9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uc2lte1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHNpbX19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjNhXFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25zaW17XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcc2ltfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbnNpbVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxzaW19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiMjIzY319XCIpOyAvLyBTb21lIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgaW1wbGVtZW50ZWQgd2l0aCBtYWNyb3MgdG8gbWF0aHRvb2xzIGZ1bmN0aW9ucy5cblxuZGVmaW5lTWFjcm8oXCJcXHUyMjM3XCIsIFwiXFxcXGRibGNvbG9uXCIpOyAvLyA6OlxuXG5kZWZpbmVNYWNybyhcIlxcdTIyMzlcIiwgXCJcXFxcZXFjb2xvblwiKTsgLy8gLTpcblxuZGVmaW5lTWFjcm8oXCJcXHUyMjU0XCIsIFwiXFxcXGNvbG9uZXFxXCIpOyAvLyA6PVxuXG5kZWZpbmVNYWNybyhcIlxcdTIyNTVcIiwgXCJcXFxcZXFxY29sb25cIik7IC8vID06XG5cbmRlZmluZU1hY3JvKFwiXFx1MkE3NFwiLCBcIlxcXFxDb2xvbmVxcVwiKTsgLy8gOjo9XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBjb2xvbmVxdWFscy5zdHlcbi8vIEFsdGVybmF0ZSBuYW1lcyBmb3IgbWF0aHRvb2xzJ3MgbWFjcm9zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxyYXRpb1wiLCBcIlxcXFx2Y2VudGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvblwiLCBcIlxcXFxkYmxjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uZXF1YWxzXCIsIFwiXFxcXGNvbG9uZXFxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbmVxdWFsc1wiLCBcIlxcXFxDb2xvbmVxcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGVxdWFsc2NvbG9uXCIsIFwiXFxcXGVxcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZXF1YWxzY29sb25jb2xvblwiLCBcIlxcXFxFcXFjb2xvblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9ubWludXNcIiwgXCJcXFxcY29sb25lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25taW51c1wiLCBcIlxcXFxDb2xvbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvblwiLCBcIlxcXFxlcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludXNjb2xvbmNvbG9uXCIsIFwiXFxcXEVxY29sb25cIik7IC8vIFxcY29sb25hcHByb3ggbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25hcHByb3hcIiwgXCJcXFxcQ29sb25hcHByb3hcIik7IC8vIFxcY29sb25zaW0gbmFtZSBpcyBzYW1lIGluIG1hdGh0b29scyBhbmQgY29sb25lcXVhbHMuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uY29sb25zaW1cIiwgXCJcXFxcQ29sb25zaW1cIik7IC8vIEFkZGl0aW9uYWwgbWFjcm9zLCBpbXBsZW1lbnRlZCBieSBhbmFsb2d5IHdpdGggbWF0aHRvb2xzIGRlZmluaXRpb25zOlxuXG5kZWZpbmVNYWNybyhcIlxcXFxzaW1jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2ltY29sb25jb2xvblwiLCBcIlxcXFxtYXRocmVse1xcXFxzaW1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFwcHJveGNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcdmNlbnRjb2xvbn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxhcHByb3hjb2xvbmNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXGFwcHJveFxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb259XCIpOyAvLyBQcmVzZW50IGluIG5ld3R4bWF0aCwgcHhmb250cyBhbmQgdHhmb250c1xuXG5kZWZpbmVNYWNybyhcIlxcXFxub3RuaVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbm90XFxcXG5pfXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjBDfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1zdXBcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLHN1cH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsaW1pbmZcIiwgXCJcXFxcRE9UU0JcXFxcb3BlcmF0b3JuYW1lKntsaW1cXFxcLGluZn1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1hdGhNTCBhbHRlcm5hdGVzIGZvciBLYVRlWCBnbHlwaHMgaW4gdGhlIFVuaWNvZGUgcHJpdmF0ZSBhcmVhXG5cbmRlZmluZU1hY3JvKFwiXFxcXGd2ZXJ0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQGd2ZXJ0bmVxcX17XFx1MjI2OX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsdmVydG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBsdmVydG5lcXF9e1xcdTIyNjh9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmdlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2VxcX17XFx1MjI3MX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuZ2Vxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuZ2Vxc2xhbnR9e1xcdTIyNzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmxlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxcX17XFx1MjI3MH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxubGVxc2xhbnRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBubGVxc2xhbnR9e1xcdTIyNzB9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0bWlkXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAbnNob3J0bWlkfXviiKR9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnNob3J0cGFyYWxsZWxcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc2hvcnRwYXJhbGxlbH174oimfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdWJzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vic2V0ZXFxfXtcXHUyMjg4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5zdXBzZXRlcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc3Vwc2V0ZXFxfXtcXHUyMjg5fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1YnNldG5lcX174oqKfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhcnN1YnNldG5lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEB2YXJzdWJzZXRuZXFxfXviq4t9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAdmFyc3Vwc2V0bmVxfXviiot9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vwc2V0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1cHNldG5lcXF9e+KrjH1cIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHN0bWFyeXJkIGFuZCBzZW1hbnRpY1xuLy8gVGhlIHN0bWFyeXJkIGFuZCBzZW1hbnRpYyBwYWNrYWdlcyByZW5kZXIgdGhlIG5leHQgZm91ciBpdGVtcyBieSBjYWxsaW5nIGFcbi8vIGdseXBoLiBUaG9zZSBnbHlwaHMgZG8gbm90IGV4aXN0IGluIHRoZSBLYVRlWCBmb250cy4gSGVuY2UgdGhlIG1hY3Jvcy5cblxuZGVmaW5lTWFjcm8oXCJcXFxcbGxicmFja2V0XCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aG9wZW57W1xcXFxta2Vybi0zLjJtdVt9fVwiICsgXCJ7XFxcXG1hdGhvcGVue1xcXFxjaGFyYFxcdTI3RTZ9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJyYnJhY2tldFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhjbG9zZXtdXFxcXG1rZXJuLTMuMm11XX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI3RTd9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjdFNlwiLCBcIlxcXFxsbGJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBbXG5cbmRlZmluZU1hY3JvKFwiXFx1MjdFN1wiLCBcIlxcXFxycmJyYWNrZXRcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCBdXG5cbmRlZmluZU1hY3JvKFwiXFxcXGxCcmFjZVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhvcGVue1xcXFx7XFxcXG1rZXJuLTMuMm11W319XCIgKyBcIntcXFxcbWF0aG9wZW57XFxcXGNoYXJgXFx1Mjk4M319XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcckJyYWNlXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aGNsb3Nle11cXFxcbWtlcm4tMy4ybXVcXFxcfX19XCIgKyBcIntcXFxcbWF0aGNsb3Nle1xcXFxjaGFyYFxcdTI5ODR9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1Mjk4M1wiLCBcIlxcXFxsQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB7XG5cbmRlZmluZU1hY3JvKFwiXFx1Mjk4NFwiLCBcIlxcXFxyQnJhY2VcIik7IC8vIGJsYWNrYm9hcmQgYm9sZCB9XG4vLyBUT0RPOiBDcmVhdGUgdmFyaWFibGUgc2l6ZWQgdmVyc2lvbnMgb2YgdGhlIGxhc3QgdHdvIGl0ZW1zLiBJIGJlbGlldmUgdGhhdFxuLy8gd2lsbCByZXF1aXJlIG5ldyBmb250IGdseXBocy5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHRleHZjLnN0eVxuLy8gVGhlIHRleHZjIHBhY2thZ2UgY29udGFpbnMgbWFjcm9zIGF2YWlsYWJsZSBpbiBtZWRpYXdpa2kgcGFnZXMuXG4vLyBXZSBvbWl0IHRoZSBmdW5jdGlvbnMgZGVwcmVjYXRlZCBhdFxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVscDpEaXNwbGF5aW5nX2FfZm9ybXVsYSNEZXByZWNhdGVkX3N5bnRheFxuLy8gV2UgYWxzbyBvbWl0IHRleHZjJ3MgXFxPLCB3aGljaCBjb25mbGljdHMgd2l0aCBcXHRleHR7XFxPfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxkYXJyXCIsIFwiXFxcXGRvd25hcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRBcnJcIiwgXCJcXFxcRG93bmFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRGFyclwiLCBcIlxcXFxEb3duYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsYW5nXCIsIFwiXFxcXGxhbmdsZVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJhbmdcIiwgXCJcXFxccmFuZ2xlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdWFyclwiLCBcIlxcXFx1cGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdUFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcVWFyclwiLCBcIlxcXFxVcGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTlwiLCBcIlxcXFxtYXRoYmJ7Tn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSXCIsIFwiXFxcXG1hdGhiYntSfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFpcIiwgXCJcXFxcbWF0aGJie1p9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWxlZlwiLCBcIlxcXFxhbGVwaFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFsZWZzeW1cIiwgXCJcXFxcYWxlcGhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxBbHBoYVwiLCBcIlxcXFxtYXRocm17QX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxCZXRhXCIsIFwiXFxcXG1hdGhybXtCfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJ1bGxcIiwgXCJcXFxcYnVsbGV0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ2hpXCIsIFwiXFxcXG1hdGhybXtYfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGNsdWJzXCIsIFwiXFxcXGNsdWJzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY251bXNcIiwgXCJcXFxcbWF0aGJie0N9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQ29tcGxleFwiLCBcIlxcXFxtYXRoYmJ7Q31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxEYWdnZXJcIiwgXCJcXFxcZGRhZ2dlclwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRpYW1vbmRzXCIsIFwiXFxcXGRpYW1vbmRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZW1wdHlcIiwgXCJcXFxcZW1wdHlzZXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxFcHNpbG9uXCIsIFwiXFxcXG1hdGhybXtFfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEV0YVwiLCBcIlxcXFxtYXRocm17SH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxleGlzdFwiLCBcIlxcXFxleGlzdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaEFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEhhcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoZWFydHNcIiwgXCJcXFxcaGVhcnRzdWl0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1hZ2VcIiwgXCJcXFxcSW1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbmZpblwiLCBcIlxcXFxpbmZ0eVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXElvdGFcIiwgXCJcXFxcbWF0aHJte0l9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaXNpblwiLCBcIlxcXFxpblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEthcHBhXCIsIFwiXFxcXG1hdGhybXtLfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxhcnJcIiwgXCJcXFxcbGVmdGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbEFyclwiLCBcIlxcXFxMZWZ0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMYXJyXCIsIFwiXFxcXExlZnRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxyYXJyXCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbHJBcnJcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxMcmFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXE11XCIsIFwiXFxcXG1hdGhybXtNfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5hdG51bXNcIiwgXCJcXFxcbWF0aGJie059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTnVcIiwgXCJcXFxcbWF0aHJte059XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcT21pY3JvblwiLCBcIlxcXFxtYXRocm17T31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwbHVzbW5cIiwgXCJcXFxccG1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyYXJyXCIsIFwiXFxcXHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyQXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSYXJyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWFsXCIsIFwiXFxcXFJlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmVhbHNcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcUmhvXCIsIFwiXFxcXG1hdGhybXtQfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNkb3RcIiwgXCJcXFxcY2RvdFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNlY3RcIiwgXCJcXFxcU1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHNwYWRlc1wiLCBcIlxcXFxzcGFkZXN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxzdWJcIiwgXCJcXFxcc3Vic2V0XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc3ViZVwiLCBcIlxcXFxzdWJzZXRlcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHN1cGVcIiwgXCJcXFxcc3Vwc2V0ZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxUYXVcIiwgXCJcXFxcbWF0aHJte1R9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGhldGFzeW1cIiwgXCJcXFxcdmFydGhldGFcIik7IC8vIFRPRE86IGRlZmluZU1hY3JvKFwiXFxcXHZhcmNvcHBhXCIsIFwiXFxcXFxcbWJveHtcXFxcY29wcGF9XCIpO1xuXG5kZWZpbmVNYWNybyhcIlxcXFx3ZWllcnBcIiwgXCJcXFxcd3BcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxaZXRhXCIsIFwiXFxcXG1hdGhybXtafVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gc3RhdG1hdGguc3R5XG4vLyBodHRwczovL2N0YW4ubWF0aC5pbGxpbm9pcy5lZHUvbWFjcm9zL2xhdGV4L2NvbnRyaWIvc3RhdG1hdGgvc3RhdG1hdGgucGRmXG5cbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21pblwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWlufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFyZ21heFwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2FyZ1xcXFwsbWF4fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBsaW1cIiwgXCJcXFxcRE9UU0JcXFxcbWF0aG9we1xcXFxvcGVyYXRvcm5hbWV7cGxpbX19XFxcXGxpbWl0c1wiKTsgLy8gQ3VzdG9tIEtoYW4gQWNhZGVteSBjb2xvcnMsIHNob3VsZCBiZSBtb3ZlZCB0byBhbiBvcHRpb25hbCBwYWNrYWdlXG5cbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjQ5NWVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxvcmFuZ2VcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZhNTAwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwaW5rXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmMDBhZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkXCIsIFwiXFxcXHRleHRjb2xvcnsjI2RmMDAzMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5cIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjhhZTdifXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5XCIsIFwiXFxcXHRleHRjb2xvcntncmF5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOWQzOGJkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNjY2ZhZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVCXCIsIFwiXFxcXHRleHRjb2xvcnsjIzgwZjZmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNjNkOWVhfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxMWFjY2R9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVFXCIsIFwiXFxcXHRleHRjb2xvcnsjIzBjN2Y5OX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbEFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOTRmZmY1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyNmVkZDV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRlYWxDXCIsIFwiXFxcXHRleHRjb2xvcnsjIzAxZDFjMX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbERcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMDFhOTk1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyMDgxNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiNmZmYjB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM4YWYyODF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3NGNmNzB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMxZmFiNTR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyZWVuRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMwZDkyM2Z9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmZDBhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiYjcxfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxnb2xkQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjljMzl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2UwN2QxMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYTc1YTA1fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZjYTlhOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZjg0ODJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlZENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZjk2ODVkfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWREXCIsIFwiXFxcXHRleHRjb2xvcnsjI2U4NGQzOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNiYzI2MTJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZiZGUwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25CXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmOTJjNn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWFyb29uQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNlZDVmYTZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkRcIiwgXCJcXFxcdGV4dGNvbG9yeyMjY2EzMzdjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25FXCIsIFwiXFxcXHRleHRjb2xvcnsjIzllMDM0ZX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkZGQ3ZmZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYzZiOWZjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVDXCIsIFwiXFxcXHRleHRjb2xvcnsjI2FhODdmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM3ODU0YWJ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjNTQzYjc4fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW50QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNWY5ZTh9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1pbnRCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2VkZjJkZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTBlNWNjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5QVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmNmY3Zjd9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2YwZjFmMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTNlNWU2fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5RFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNkNmQ4ZGF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlFXCIsIFwiXFxcXHRleHRjb2xvcnsjI2JhYmVjMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUZcIiwgXCJcXFxcdGV4dGNvbG9yeyMjODg4ZDkzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5R1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM2MjY1Njl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlIXCIsIFwiXFxcXHRleHRjb2xvcnsjIzNiM2U0MH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUlcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMjEyNDJjfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUJsdWVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMzE0NDUzfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxrYUdyZWVuXCIsIFwiXFxcXHRleHRjb2xvcnsjIzcxQjMwN317IzF9XCIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTWFjcm9FeHBhbmRlci5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIOKAnGd1bGxldOKAnSB3aGVyZSBtYWNyb3MgYXJlIGV4cGFuZGVkXG4gKiB1bnRpbCBvbmx5IG5vbi1tYWNybyB0b2tlbnMgcmVtYWluLlxuICovXG5cblxuXG5cblxuXG5cbi8vIExpc3Qgb2YgY29tbWFuZHMgdGhhdCBhY3QgbGlrZSBtYWNyb3MgYnV0IGFyZW4ndCBkZWZpbmVkIGFzIGEgbWFjcm8sXG4vLyBmdW5jdGlvbiwgb3Igc3ltYm9sLiAgVXNlZCBpbiBgaXNEZWZpbmVkYC5cbnZhciBpbXBsaWNpdENvbW1hbmRzID0ge1xuICBcIlxcXFxyZWxheFwiOiB0cnVlLFxuICAvLyBNYWNyb0V4cGFuZGVyLmpzXG4gIFwiXlwiOiB0cnVlLFxuICAvLyBQYXJzZXIuanNcbiAgXCJfXCI6IHRydWUsXG4gIC8vIFBhcnNlci5qc1xuICBcIlxcXFxsaW1pdHNcIjogdHJ1ZSxcbiAgLy8gUGFyc2VyLmpzXG4gIFwiXFxcXG5vbGltaXRzXCI6IHRydWUgLy8gUGFyc2VyLmpzXG5cbn07XG5cbnZhciBNYWNyb0V4cGFuZGVyX01hY3JvRXhwYW5kZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgbW9kZSkge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5leHBhbnNpb25Db3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLmxleGVyID0gdm9pZCAwO1xuICAgIHRoaXMubWFjcm9zID0gdm9pZCAwO1xuICAgIHRoaXMuc3RhY2sgPSB2b2lkIDA7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB0aGlzLmV4cGFuc2lvbkNvdW50ID0gMDtcbiAgICB0aGlzLmZlZWQoaW5wdXQpOyAvLyBNYWtlIG5ldyBnbG9iYWwgbmFtZXNwYWNlXG5cbiAgICB0aGlzLm1hY3JvcyA9IG5ldyBOYW1lc3BhY2VfTmFtZXNwYWNlKG1hY3Jvcywgc2V0dGluZ3MubWFjcm9zKTtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuc3RhY2sgPSBbXTsgLy8gY29udGFpbnMgdG9rZW5zIGluIFJFVkVSU0Ugb3JkZXJcbiAgfVxuICAvKipcbiAgICogRmVlZCBhIG5ldyBpbnB1dCBzdHJpbmcgdG8gdGhlIHNhbWUgTWFjcm9FeHBhbmRlclxuICAgKiAod2l0aCBleGlzdGluZyBtYWNyb3MgZXRjLikuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE1hY3JvRXhwYW5kZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5mZWVkID0gZnVuY3Rpb24gZmVlZChpbnB1dCkge1xuICAgIHRoaXMubGV4ZXIgPSBuZXcgTGV4ZXJfTGV4ZXIoaW5wdXQsIHRoaXMuc2V0dGluZ3MpO1xuICB9XG4gIC8qKlxuICAgKiBTd2l0Y2hlcyBiZXR3ZWVuIFwidGV4dFwiIGFuZCBcIm1hdGhcIiBtb2Rlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc3dpdGNoTW9kZSA9IGZ1bmN0aW9uIHN3aXRjaE1vZGUobmV3TW9kZSkge1xuICAgIHRoaXMubW9kZSA9IG5ld01vZGU7XG4gIH1cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5iZWdpbkdyb3VwID0gZnVuY3Rpb24gYmVnaW5Hcm91cCgpIHtcbiAgICB0aGlzLm1hY3Jvcy5iZWdpbkdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIEVuZCBjdXJyZW50IGdyb3VwIG5lc3Rpbmcgd2l0aGluIGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5lbmRHcm91cCA9IGZ1bmN0aW9uIGVuZEdyb3VwKCkge1xuICAgIHRoaXMubWFjcm9zLmVuZEdyb3VwKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRvcG1vc3QgdG9rZW4gb24gdGhlIHN0YWNrLCB3aXRob3V0IGV4cGFuZGluZyBpdC5cbiAgICogU2ltaWxhciBpbiBiZWhhdmlvciB0byBUZVgncyBgXFxmdXR1cmVsZXRgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mdXR1cmUgPSBmdW5jdGlvbiBmdXR1cmUoKSB7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnB1c2hUb2tlbih0aGlzLmxleGVyLmxleCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgYW5kIHJldHVybiB0aGUgbmV4dCB1bmV4cGFuZGVkIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wb3BUb2tlbiA9IGZ1bmN0aW9uIHBvcFRva2VuKCkge1xuICAgIHRoaXMuZnV0dXJlKCk7IC8vIGVuc3VyZSBub24tZW1wdHkgc3RhY2tcblxuICAgIHJldHVybiB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgYSBnaXZlbiB0b2tlbiB0byB0aGUgdG9rZW4gc3RhY2suICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGdldCBiZSB1c2VkXG4gICAqIHRvIHB1dCBiYWNrIGEgdG9rZW4gcmV0dXJuZWQgZnJvbSBvbmUgb2YgdGhlIG90aGVyIG1ldGhvZHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnB1c2hUb2tlbiA9IGZ1bmN0aW9uIHB1c2hUb2tlbih0b2tlbikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0b2tlbik7XG4gIH1cbiAgLyoqXG4gICAqIEFwcGVuZCBhbiBhcnJheSBvZiB0b2tlbnMgdG8gdGhlIHRva2VuIHN0YWNrLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wdXNoVG9rZW5zID0gZnVuY3Rpb24gcHVzaFRva2Vucyh0b2tlbnMpIHtcbiAgICB2YXIgX3RoaXMkc3RhY2s7XG5cbiAgICAoX3RoaXMkc3RhY2sgPSB0aGlzLnN0YWNrKS5wdXNoLmFwcGx5KF90aGlzJHN0YWNrLCB0b2tlbnMpO1xuICB9XG4gIC8qKlxuICAgKiBDb25zdW1lIGFsbCBmb2xsb3dpbmcgc3BhY2UgdG9rZW5zLCB3aXRob3V0IGV4cGFuc2lvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIHRva2VuID0gdGhpcy5mdXR1cmUoKTtcblxuICAgICAgaWYgKHRva2VuLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENvbnN1bWUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYXJndW1lbnRzIGZyb20gdGhlIHRva2VuIHN0cmVhbSxcbiAgICogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZUFyZ3MgPSBmdW5jdGlvbiBjb25zdW1lQXJncyhudW1BcmdzKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTsgLy8gb2J0YWluIGFyZ3VtZW50cywgZWl0aGVyIHNpbmdsZSB0b2tlbiBvciBiYWxhbmNlZCB74oCmfSBncm91cFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpOyAvLyBpZ25vcmUgc3BhY2VzIGJlZm9yZSBlYWNoIGFyZ3VtZW50XG5cbiAgICAgIHZhciBzdGFydE9mQXJnID0gdGhpcy5wb3BUb2tlbigpO1xuXG4gICAgICBpZiAoc3RhcnRPZkFyZy50ZXh0ID09PSBcIntcIikge1xuICAgICAgICB2YXIgYXJnID0gW107XG4gICAgICAgIHZhciBkZXB0aCA9IDE7XG5cbiAgICAgICAgd2hpbGUgKGRlcHRoICE9PSAwKSB7XG4gICAgICAgICAgdmFyIHRvayA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICAgICAgICBhcmcucHVzaCh0b2spO1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIntcIikge1xuICAgICAgICAgICAgKytkZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIn1cIikge1xuICAgICAgICAgICAgLS1kZXB0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRvay50ZXh0ID09PSBcIkVPRlwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFbmQgb2YgaW5wdXQgaW4gbWFjcm8gYXJndW1lbnRcIiwgc3RhcnRPZkFyZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXJnLnBvcCgpOyAvLyByZW1vdmUgbGFzdCB9XG5cbiAgICAgICAgYXJnLnJldmVyc2UoKTsgLy8gbGlrZSBhYm92ZSwgdG8gZml0IGluIHdpdGggc3RhY2sgb3JkZXJcblxuICAgICAgICBhcmdzW2ldID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChzdGFydE9mQXJnLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRW5kIG9mIGlucHV0IGV4cGVjdGluZyBtYWNybyBhcmd1bWVudFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3NbaV0gPSBbc3RhcnRPZkFyZ107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoZSB0b2tlbiBpcyBleHBhbmRlZCwgdGhlIHJlc3VsdGluZyB0b2tlbnMgd2lsbCBiZSBwdXNoZWQgb250b1xuICAgKiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlciBhbmQgd2lsbCBiZSByZXR1cm5lZCBhcyBhbiBhcnJheSxcbiAgICogYWxzbyBpbiByZXZlcnNlIG9yZGVyLlxuICAgKlxuICAgKiBJZiBub3QsIHRoZSBuZXh0IHRva2VuIHdpbGwgYmUgcmV0dXJuZWQgd2l0aG91dCByZW1vdmluZyBpdFxuICAgKiBmcm9tIHRoZSBzdGFjay4gIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgYnkgYSBgVG9rZW5gIHJldHVybiB2YWx1ZVxuICAgKiBpbnN0ZWFkIG9mIGFuIGBBcnJheWAgcmV0dXJuIHZhbHVlLlxuICAgKlxuICAgKiBJbiBlaXRoZXIgY2FzZSwgdGhlIG5leHQgdG9rZW4gd2lsbCBiZSBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayxcbiAgICogb3IgdGhlIHN0YWNrIHdpbGwgYmUgZW1wdHkuXG4gICAqXG4gICAqIFVzZWQgdG8gaW1wbGVtZW50IGBleHBhbmRBZnRlckZ1dHVyZWAgYW5kIGBleHBhbmROZXh0VG9rZW5gLlxuICAgKlxuICAgKiBBdCB0aGUgbW9tZW50LCBtYWNybyBleHBhbnNpb24gZG9lc24ndCBoYW5kbGUgZGVsaW1pdGVkIG1hY3JvcyxcbiAgICogaS5lLiB0aGluZ3MgbGlrZSB0aG9zZSBkZWZpbmVkIGJ5IFxcZGVmXFxmb28jMVxcZW5ke+KApn0uXG4gICAqIFNlZSB0aGUgVGVYIGJvb2sgcGFnZSAyMDJmZi4gZm9yIGRldGFpbHMgb24gaG93IHRob3NlIHNob3VsZCBiZWhhdmUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE9uY2UgPSBmdW5jdGlvbiBleHBhbmRPbmNlKCkge1xuICAgIHZhciB0b3BUb2tlbiA9IHRoaXMucG9wVG9rZW4oKTtcbiAgICB2YXIgbmFtZSA9IHRvcFRva2VuLnRleHQ7XG5cbiAgICB2YXIgZXhwYW5zaW9uID0gdGhpcy5fZ2V0RXhwYW5zaW9uKG5hbWUpO1xuXG4gICAgaWYgKGV4cGFuc2lvbiA9PSBudWxsKSB7XG4gICAgICAvLyBtYWlubHkgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBoZXJlXG4gICAgICAvLyBGdWxseSBleHBhbmRlZFxuICAgICAgdGhpcy5wdXNoVG9rZW4odG9wVG9rZW4pO1xuICAgICAgcmV0dXJuIHRvcFRva2VuO1xuICAgIH1cblxuICAgIHRoaXMuZXhwYW5zaW9uQ291bnQrKztcblxuICAgIGlmICh0aGlzLmV4cGFuc2lvbkNvdW50ID4gdGhpcy5zZXR0aW5ncy5tYXhFeHBhbmQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlRvbyBtYW55IGV4cGFuc2lvbnM6IGluZmluaXRlIGxvb3Agb3IgXCIgKyBcIm5lZWQgdG8gaW5jcmVhc2UgbWF4RXhwYW5kIHNldHRpbmdcIik7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IGV4cGFuc2lvbi50b2tlbnM7XG5cbiAgICBpZiAoZXhwYW5zaW9uLm51bUFyZ3MpIHtcbiAgICAgIHZhciBhcmdzID0gdGhpcy5jb25zdW1lQXJncyhleHBhbnNpb24ubnVtQXJncyk7IC8vIHBhc3RlIGFyZ3VtZW50cyBpbiBwbGFjZSBvZiB0aGUgcGxhY2Vob2xkZXJzXG5cbiAgICAgIHRva2VucyA9IHRva2Vucy5zbGljZSgpOyAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5XG5cbiAgICAgIGZvciAodmFyIGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHRvayA9IHRva2Vuc1tpXTtcblxuICAgICAgICBpZiAodG9rLnRleHQgPT09IFwiI1wiKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkluY29tcGxldGUgcGxhY2Vob2xkZXIgYXQgZW5kIG9mIG1hY3JvIGJvZHlcIiwgdG9rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b2sgPSB0b2tlbnNbLS1pXTsgLy8gbmV4dCB0b2tlbiBvbiBzdGFja1xuXG4gICAgICAgICAgaWYgKHRvay50ZXh0ID09PSBcIiNcIikge1xuICAgICAgICAgICAgLy8gIyMg4oaSICNcbiAgICAgICAgICAgIHRva2Vucy5zcGxpY2UoaSArIDEsIDEpOyAvLyBkcm9wIGZpcnN0ICNcbiAgICAgICAgICB9IGVsc2UgaWYgKC9eWzEtOV0kLy50ZXN0KHRvay50ZXh0KSkge1xuICAgICAgICAgICAgdmFyIF90b2tlbnM7XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHdpdGggdGhlIGluZGljYXRlZCBhcmd1bWVudFxuICAgICAgICAgICAgKF90b2tlbnMgPSB0b2tlbnMpLnNwbGljZS5hcHBseShfdG9rZW5zLCBbaSwgMl0uY29uY2F0KGFyZ3NbK3Rvay50ZXh0IC0gMV0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTm90IGEgdmFsaWQgYXJndW1lbnQgbnVtYmVyXCIsIHRvayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBDb25jYXRlbmF0ZSBleHBhbnNpb24gb250byB0b3Agb2Ygc3RhY2suXG5cblxuICAgIHRoaXMucHVzaFRva2Vucyh0b2tlbnMpO1xuICAgIHJldHVybiB0b2tlbnM7XG4gIH1cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbmV4dCB0b2tlbiBvbmx5IG9uY2UgKGlmIHBvc3NpYmxlKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nXG4gICAqIHRvcCB0b2tlbiBvbiB0aGUgc3RhY2sgKHdpdGhvdXQgcmVtb3ZpbmcgYW55dGhpbmcgZnJvbSB0aGUgc3RhY2spLlxuICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGV4cGFuZGFmdGVyXFxmdXR1cmVsZXRgLlxuICAgKiBFcXVpdmFsZW50IHRvIGV4cGFuZE9uY2UoKSBmb2xsb3dlZCBieSBmdXR1cmUoKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kQWZ0ZXJGdXR1cmUgPSBmdW5jdGlvbiBleHBhbmRBZnRlckZ1dHVyZSgpIHtcbiAgICB0aGlzLmV4cGFuZE9uY2UoKTtcbiAgICByZXR1cm4gdGhpcy5mdXR1cmUoKTtcbiAgfVxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZXhwYW5kIGZpcnN0IHRva2VuLCB0aGVuIHJldHVybiBmaXJzdCBub24tZXhwYW5kYWJsZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kTmV4dFRva2VuID0gZnVuY3Rpb24gZXhwYW5kTmV4dFRva2VuKCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IHRoaXMuZXhwYW5kT25jZSgpOyAvLyBleHBhbmRPbmNlIHJldHVybnMgVG9rZW4gaWYgYW5kIG9ubHkgaWYgaXQncyBmdWxseSBleHBhbmRlZC5cblxuICAgICAgaWYgKGV4cGFuZGVkIGluc3RhbmNlb2YgVG9rZW5fVG9rZW4pIHtcbiAgICAgICAgLy8gXFxyZWxheCBzdG9wcyB0aGUgZXhwYW5zaW9uLCBidXQgc2hvdWxkbid0IGdldCByZXR1cm5lZCAoYVxuICAgICAgICAvLyBudWxsIHJldHVybiB2YWx1ZSBjb3VsZG4ndCBnZXQgaW1wbGVtZW50ZWQgYXMgYSBmdW5jdGlvbikuXG4gICAgICAgIGlmIChleHBhbmRlZC50ZXh0ID09PSBcIlxcXFxyZWxheFwiKSB7XG4gICAgICAgICAgdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTsgLy8gPT09IGV4cGFuZGVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEZsb3cgdW5hYmxlIHRvIGZpZ3VyZSBvdXQgdGhhdCB0aGlzIHBhdGh3YXkgaXMgaW1wb3NzaWJsZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDgwOFxuXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnJlYWNoYWJsZVxuICB9XG4gIC8qKlxuICAgKiBGdWxseSBleHBhbmQgdGhlIGdpdmVuIG1hY3JvIG5hbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGxpc3Qgb2ZcbiAgICogdG9rZW5zLCBvciByZXR1cm4gYHVuZGVmaW5lZGAgaWYgbm8gc3VjaCBtYWNybyBpcyBkZWZpbmVkLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBhbmRNYWNybyA9IGZ1bmN0aW9uIGV4cGFuZE1hY3JvKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMubWFjcm9zLmdldChuYW1lKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgdmFyIG9sZFN0YWNrTGVuZ3RoID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgdGhpcy5wdXNoVG9rZW4obmV3IFRva2VuX1Rva2VuKG5hbWUpKTtcblxuICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IG9sZFN0YWNrTGVuZ3RoKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZE9uY2UoKTsgLy8gZXhwYW5kT25jZSByZXR1cm5zIFRva2VuIGlmIGFuZCBvbmx5IGlmIGl0J3MgZnVsbHkgZXhwYW5kZWQuXG5cbiAgICAgIGlmIChleHBhbmRlZCBpbnN0YW5jZW9mIFRva2VuX1Rva2VuKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cbiAgLyoqXG4gICAqIEZ1bGx5IGV4cGFuZCB0aGUgZ2l2ZW4gbWFjcm8gbmFtZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBzdHJpbmcsXG4gICAqIG9yIHJldHVybiBgdW5kZWZpbmVkYCBpZiBubyBzdWNoIG1hY3JvIGlzIGRlZmluZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE1hY3JvQXNUZXh0ID0gZnVuY3Rpb24gZXhwYW5kTWFjcm9Bc1RleHQobmFtZSkge1xuICAgIHZhciB0b2tlbnMgPSB0aGlzLmV4cGFuZE1hY3JvKG5hbWUpO1xuXG4gICAgaWYgKHRva2Vucykge1xuICAgICAgcmV0dXJuIHRva2Vucy5tYXAoZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgIHJldHVybiB0b2tlbi50ZXh0O1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRva2VucztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV4cGFuZGVkIG1hY3JvIGFzIGEgcmV2ZXJzZWQgYXJyYXkgb2YgdG9rZW5zIGFuZCBhIG1hY3JvXG4gICAqIGFyZ3VtZW50IGNvdW50LiAgT3IgcmV0dXJucyBgbnVsbGAgaWYgbm8gc3VjaCBtYWNyby5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uX2dldEV4cGFuc2lvbiA9IGZ1bmN0aW9uIF9nZXRFeHBhbnNpb24obmFtZSkge1xuICAgIHZhciBkZWZpbml0aW9uID0gdGhpcy5tYWNyb3MuZ2V0KG5hbWUpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkge1xuICAgICAgLy8gbWFpbmx5IGNoZWNraW5nIGZvciB1bmRlZmluZWQgaGVyZVxuICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgfVxuXG4gICAgdmFyIGV4cGFuc2lvbiA9IHR5cGVvZiBkZWZpbml0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBkZWZpbml0aW9uKHRoaXMpIDogZGVmaW5pdGlvbjtcblxuICAgIGlmICh0eXBlb2YgZXhwYW5zaW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB2YXIgbnVtQXJncyA9IDA7XG5cbiAgICAgIGlmIChleHBhbnNpb24uaW5kZXhPZihcIiNcIikgIT09IC0xKSB7XG4gICAgICAgIHZhciBzdHJpcHBlZCA9IGV4cGFuc2lvbi5yZXBsYWNlKC8jIy9nLCBcIlwiKTtcblxuICAgICAgICB3aGlsZSAoc3RyaXBwZWQuaW5kZXhPZihcIiNcIiArIChudW1BcmdzICsgMSkpICE9PSAtMSkge1xuICAgICAgICAgICsrbnVtQXJncztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgYm9keUxleGVyID0gbmV3IExleGVyX0xleGVyKGV4cGFuc2lvbiwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICB2YXIgdG9rZW5zID0gW107XG4gICAgICB2YXIgdG9rID0gYm9keUxleGVyLmxleCgpO1xuXG4gICAgICB3aGlsZSAodG9rLnRleHQgIT09IFwiRU9GXCIpIHtcbiAgICAgICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICAgICAgdG9rID0gYm9keUxleGVyLmxleCgpO1xuICAgICAgfVxuXG4gICAgICB0b2tlbnMucmV2ZXJzZSgpOyAvLyB0byBmaXQgaW4gd2l0aCBzdGFjayB1c2luZyBwdXNoIGFuZCBwb3BcblxuICAgICAgdmFyIGV4cGFuZGVkID0ge1xuICAgICAgICB0b2tlbnM6IHRva2VucyxcbiAgICAgICAgbnVtQXJnczogbnVtQXJnc1xuICAgICAgfTtcbiAgICAgIHJldHVybiBleHBhbmRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwYW5zaW9uO1xuICB9XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIGNvbW1hbmQgaXMgY3VycmVudGx5IFwiZGVmaW5lZFwiIChoYXMgc29tZVxuICAgKiBmdW5jdGlvbmFsaXR5KSwgbWVhbmluZyB0aGF0IGl0J3MgYSBtYWNybyAoaW4gdGhlIGN1cnJlbnQgZ3JvdXApLFxuICAgKiBhIGZ1bmN0aW9uLCBhIHN5bWJvbCwgb3Igb25lIG9mIHRoZSBzcGVjaWFsIGNvbW1hbmRzIGxpc3RlZCBpblxuICAgKiBgaW1wbGljaXRDb21tYW5kc2AuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmlzRGVmaW5lZCA9IGZ1bmN0aW9uIGlzRGVmaW5lZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFjcm9zLmhhcyhuYW1lKSB8fCBzcmNfZnVuY3Rpb25zLmhhc093blByb3BlcnR5KG5hbWUpIHx8IHNyY19zeW1ib2xzLm1hdGguaGFzT3duUHJvcGVydHkobmFtZSkgfHwgc3JjX3N5bWJvbHMudGV4dC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCBpbXBsaWNpdENvbW1hbmRzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xuXG4gIHJldHVybiBNYWNyb0V4cGFuZGVyO1xufSgpO1xuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVBY2NlbnRzLmpzXG4vLyBNYXBwaW5nIG9mIFVuaWNvZGUgYWNjZW50IGNoYXJhY3RlcnMgdG8gdGhlaXIgTGFUZVggZXF1aXZhbGVudCBpbiB0ZXh0IGFuZFxuLy8gbWF0aCBtb2RlICh3aGVuIHRoZXkgZXhpc3QpLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZUFjY2VudHMgPSAoe1xuICBcIlxcdTAzMDFcIjoge1xuICAgIHRleHQ6IFwiXFxcXCdcIixcbiAgICBtYXRoOiAnXFxcXGFjdXRlJ1xuICB9LFxuICBcIlxcdTAzMDBcIjoge1xuICAgIHRleHQ6ICdcXFxcYCcsXG4gICAgbWF0aDogJ1xcXFxncmF2ZSdcbiAgfSxcbiAgXCJcXHUwMzA4XCI6IHtcbiAgICB0ZXh0OiAnXFxcXFwiJyxcbiAgICBtYXRoOiAnXFxcXGRkb3QnXG4gIH0sXG4gIFwiXFx1MDMwM1wiOiB7XG4gICAgdGV4dDogJ1xcXFx+JyxcbiAgICBtYXRoOiAnXFxcXHRpbGRlJ1xuICB9LFxuICBcIlxcdTAzMDRcIjoge1xuICAgIHRleHQ6ICdcXFxcPScsXG4gICAgbWF0aDogJ1xcXFxiYXInXG4gIH0sXG4gIFwiXFx1MDMwNlwiOiB7XG4gICAgdGV4dDogXCJcXFxcdVwiLFxuICAgIG1hdGg6ICdcXFxcYnJldmUnXG4gIH0sXG4gIFwiXFx1MDMwQ1wiOiB7XG4gICAgdGV4dDogJ1xcXFx2JyxcbiAgICBtYXRoOiAnXFxcXGNoZWNrJ1xuICB9LFxuICBcIlxcdTAzMDJcIjoge1xuICAgIHRleHQ6ICdcXFxcXicsXG4gICAgbWF0aDogJ1xcXFxoYXQnXG4gIH0sXG4gIFwiXFx1MDMwN1wiOiB7XG4gICAgdGV4dDogJ1xcXFwuJyxcbiAgICBtYXRoOiAnXFxcXGRvdCdcbiAgfSxcbiAgXCJcXHUwMzBBXCI6IHtcbiAgICB0ZXh0OiAnXFxcXHInLFxuICAgIG1hdGg6ICdcXFxcbWF0aHJpbmcnXG4gIH0sXG4gIFwiXFx1MDMwQlwiOiB7XG4gICAgdGV4dDogJ1xcXFxIJ1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3VuaWNvZGVTeW1ib2xzLmpzXG4vLyBUaGlzIGZpbGUgaXMgR0VORVJBVEVEIGJ5IHVuaWNvZGVNYWtlLmpzLiBETyBOT1QgTU9ESUZZLlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdW5pY29kZVN5bWJvbHMgPSAoe1xuICBcIlxceEUxXCI6IFwiYVxcdTAzMDFcIixcbiAgLy8gw6EgPSBcXCd7YX1cbiAgXCJcXHhFMFwiOiBcImFcXHUwMzAwXCIsXG4gIC8vIMOgID0gXFxge2F9XG4gIFwiXFx4RTRcIjogXCJhXFx1MDMwOFwiLFxuICAvLyDDpCA9IFxcXCJ7YX1cbiAgXCJcXHUwMURGXCI6IFwiYVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMefID0gXFxcIlxcPXthfVxuICBcIlxceEUzXCI6IFwiYVxcdTAzMDNcIixcbiAgLy8gw6MgPSBcXH57YX1cbiAgXCJcXHUwMTAxXCI6IFwiYVxcdTAzMDRcIixcbiAgLy8gxIEgPSBcXD17YX1cbiAgXCJcXHUwMTAzXCI6IFwiYVxcdTAzMDZcIixcbiAgLy8gxIMgPSBcXHV7YX1cbiAgXCJcXHUxRUFGXCI6IFwiYVxcdTAzMDZcXHUwMzAxXCIsXG4gIC8vIOG6ryA9IFxcdVxcJ3thfVxuICBcIlxcdTFFQjFcIjogXCJhXFx1MDMwNlxcdTAzMDBcIixcbiAgLy8g4bqxID0gXFx1XFxge2F9XG4gIFwiXFx1MUVCNVwiOiBcImFcXHUwMzA2XFx1MDMwM1wiLFxuICAvLyDhurUgPSBcXHVcXH57YX1cbiAgXCJcXHUwMUNFXCI6IFwiYVxcdTAzMENcIixcbiAgLy8gx44gPSBcXHZ7YX1cbiAgXCJcXHhFMlwiOiBcImFcXHUwMzAyXCIsXG4gIC8vIMOiID0gXFxee2F9XG4gIFwiXFx1MUVBNVwiOiBcImFcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhuqUgPSBcXF5cXCd7YX1cbiAgXCJcXHUxRUE3XCI6IFwiYVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG6pyA9IFxcXlxcYHthfVxuICBcIlxcdTFFQUJcIjogXCJhXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4bqrID0gXFxeXFx+e2F9XG4gIFwiXFx1MDIyN1wiOiBcImFcXHUwMzA3XCIsXG4gIC8vIMinID0gXFwue2F9XG4gIFwiXFx1MDFFMVwiOiBcImFcXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDHoSA9IFxcLlxcPXthfVxuICBcIlxceEU1XCI6IFwiYVxcdTAzMEFcIixcbiAgLy8gw6UgPSBcXHJ7YX1cbiAgXCJcXHUwMUZCXCI6IFwiYVxcdTAzMEFcXHUwMzAxXCIsXG4gIC8vIMe7ID0gXFxyXFwne2F9XG4gIFwiXFx1MUUwM1wiOiBcImJcXHUwMzA3XCIsXG4gIC8vIOG4gyA9IFxcLntifVxuICBcIlxcdTAxMDdcIjogXCJjXFx1MDMwMVwiLFxuICAvLyDEhyA9IFxcJ3tjfVxuICBcIlxcdTAxMERcIjogXCJjXFx1MDMwQ1wiLFxuICAvLyDEjSA9IFxcdntjfVxuICBcIlxcdTAxMDlcIjogXCJjXFx1MDMwMlwiLFxuICAvLyDEiSA9IFxcXntjfVxuICBcIlxcdTAxMEJcIjogXCJjXFx1MDMwN1wiLFxuICAvLyDEiyA9IFxcLntjfVxuICBcIlxcdTAxMEZcIjogXCJkXFx1MDMwQ1wiLFxuICAvLyDEjyA9IFxcdntkfVxuICBcIlxcdTFFMEJcIjogXCJkXFx1MDMwN1wiLFxuICAvLyDhuIsgPSBcXC57ZH1cbiAgXCJcXHhFOVwiOiBcImVcXHUwMzAxXCIsXG4gIC8vIMOpID0gXFwne2V9XG4gIFwiXFx4RThcIjogXCJlXFx1MDMwMFwiLFxuICAvLyDDqCA9IFxcYHtlfVxuICBcIlxceEVCXCI6IFwiZVxcdTAzMDhcIixcbiAgLy8gw6sgPSBcXFwie2V9XG4gIFwiXFx1MUVCRFwiOiBcImVcXHUwMzAzXCIsXG4gIC8vIOG6vSA9IFxcfntlfVxuICBcIlxcdTAxMTNcIjogXCJlXFx1MDMwNFwiLFxuICAvLyDEkyA9IFxcPXtlfVxuICBcIlxcdTFFMTdcIjogXCJlXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4biXID0gXFw9XFwne2V9XG4gIFwiXFx1MUUxNVwiOiBcImVcXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuJUgPSBcXD1cXGB7ZX1cbiAgXCJcXHUwMTE1XCI6IFwiZVxcdTAzMDZcIixcbiAgLy8gxJUgPSBcXHV7ZX1cbiAgXCJcXHUwMTFCXCI6IFwiZVxcdTAzMENcIixcbiAgLy8gxJsgPSBcXHZ7ZX1cbiAgXCJcXHhFQVwiOiBcImVcXHUwMzAyXCIsXG4gIC8vIMOqID0gXFxee2V9XG4gIFwiXFx1MUVCRlwiOiBcImVcXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhur8gPSBcXF5cXCd7ZX1cbiAgXCJcXHUxRUMxXCI6IFwiZVxcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7gSA9IFxcXlxcYHtlfVxuICBcIlxcdTFFQzVcIjogXCJlXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buFID0gXFxeXFx+e2V9XG4gIFwiXFx1MDExN1wiOiBcImVcXHUwMzA3XCIsXG4gIC8vIMSXID0gXFwue2V9XG4gIFwiXFx1MUUxRlwiOiBcImZcXHUwMzA3XCIsXG4gIC8vIOG4nyA9IFxcLntmfVxuICBcIlxcdTAxRjVcIjogXCJnXFx1MDMwMVwiLFxuICAvLyDHtSA9IFxcJ3tnfVxuICBcIlxcdTFFMjFcIjogXCJnXFx1MDMwNFwiLFxuICAvLyDhuKEgPSBcXD17Z31cbiAgXCJcXHUwMTFGXCI6IFwiZ1xcdTAzMDZcIixcbiAgLy8gxJ8gPSBcXHV7Z31cbiAgXCJcXHUwMUU3XCI6IFwiZ1xcdTAzMENcIixcbiAgLy8gx6cgPSBcXHZ7Z31cbiAgXCJcXHUwMTFEXCI6IFwiZ1xcdTAzMDJcIixcbiAgLy8gxJ0gPSBcXF57Z31cbiAgXCJcXHUwMTIxXCI6IFwiZ1xcdTAzMDdcIixcbiAgLy8gxKEgPSBcXC57Z31cbiAgXCJcXHUxRTI3XCI6IFwiaFxcdTAzMDhcIixcbiAgLy8g4binID0gXFxcIntofVxuICBcIlxcdTAyMUZcIjogXCJoXFx1MDMwQ1wiLFxuICAvLyDInyA9IFxcdntofVxuICBcIlxcdTAxMjVcIjogXCJoXFx1MDMwMlwiLFxuICAvLyDEpSA9IFxcXntofVxuICBcIlxcdTFFMjNcIjogXCJoXFx1MDMwN1wiLFxuICAvLyDhuKMgPSBcXC57aH1cbiAgXCJcXHhFRFwiOiBcImlcXHUwMzAxXCIsXG4gIC8vIMOtID0gXFwne2l9XG4gIFwiXFx4RUNcIjogXCJpXFx1MDMwMFwiLFxuICAvLyDDrCA9IFxcYHtpfVxuICBcIlxceEVGXCI6IFwiaVxcdTAzMDhcIixcbiAgLy8gw68gPSBcXFwie2l9XG4gIFwiXFx1MUUyRlwiOiBcImlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDhuK8gPSBcXFwiXFwne2l9XG4gIFwiXFx1MDEyOVwiOiBcImlcXHUwMzAzXCIsXG4gIC8vIMSpID0gXFx+e2l9XG4gIFwiXFx1MDEyQlwiOiBcImlcXHUwMzA0XCIsXG4gIC8vIMSrID0gXFw9e2l9XG4gIFwiXFx1MDEyRFwiOiBcImlcXHUwMzA2XCIsXG4gIC8vIMStID0gXFx1e2l9XG4gIFwiXFx1MDFEMFwiOiBcImlcXHUwMzBDXCIsXG4gIC8vIMeQID0gXFx2e2l9XG4gIFwiXFx4RUVcIjogXCJpXFx1MDMwMlwiLFxuICAvLyDDriA9IFxcXntpfVxuICBcIlxcdTAxRjBcIjogXCJqXFx1MDMwQ1wiLFxuICAvLyDHsCA9IFxcdntqfVxuICBcIlxcdTAxMzVcIjogXCJqXFx1MDMwMlwiLFxuICAvLyDEtSA9IFxcXntqfVxuICBcIlxcdTFFMzFcIjogXCJrXFx1MDMwMVwiLFxuICAvLyDhuLEgPSBcXCd7a31cbiAgXCJcXHUwMUU5XCI6IFwia1xcdTAzMENcIixcbiAgLy8gx6kgPSBcXHZ7a31cbiAgXCJcXHUwMTNBXCI6IFwibFxcdTAzMDFcIixcbiAgLy8gxLogPSBcXCd7bH1cbiAgXCJcXHUwMTNFXCI6IFwibFxcdTAzMENcIixcbiAgLy8gxL4gPSBcXHZ7bH1cbiAgXCJcXHUxRTNGXCI6IFwibVxcdTAzMDFcIixcbiAgLy8g4bi/ID0gXFwne219XG4gIFwiXFx1MUU0MVwiOiBcIm1cXHUwMzA3XCIsXG4gIC8vIOG5gSA9IFxcLnttfVxuICBcIlxcdTAxNDRcIjogXCJuXFx1MDMwMVwiLFxuICAvLyDFhCA9IFxcJ3tufVxuICBcIlxcdTAxRjlcIjogXCJuXFx1MDMwMFwiLFxuICAvLyDHuSA9IFxcYHtufVxuICBcIlxceEYxXCI6IFwiblxcdTAzMDNcIixcbiAgLy8gw7EgPSBcXH57bn1cbiAgXCJcXHUwMTQ4XCI6IFwiblxcdTAzMENcIixcbiAgLy8gxYggPSBcXHZ7bn1cbiAgXCJcXHUxRTQ1XCI6IFwiblxcdTAzMDdcIixcbiAgLy8g4bmFID0gXFwue259XG4gIFwiXFx4RjNcIjogXCJvXFx1MDMwMVwiLFxuICAvLyDDsyA9IFxcJ3tvfVxuICBcIlxceEYyXCI6IFwib1xcdTAzMDBcIixcbiAgLy8gw7IgPSBcXGB7b31cbiAgXCJcXHhGNlwiOiBcIm9cXHUwMzA4XCIsXG4gIC8vIMO2ID0gXFxcIntvfVxuICBcIlxcdTAyMkJcIjogXCJvXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gyKsgPSBcXFwiXFw9e299XG4gIFwiXFx4RjVcIjogXCJvXFx1MDMwM1wiLFxuICAvLyDDtSA9IFxcfntvfVxuICBcIlxcdTFFNERcIjogXCJvXFx1MDMwM1xcdTAzMDFcIixcbiAgLy8g4bmNID0gXFx+XFwne299XG4gIFwiXFx1MUU0RlwiOiBcIm9cXHUwMzAzXFx1MDMwOFwiLFxuICAvLyDhuY8gPSBcXH5cXFwie299XG4gIFwiXFx1MDIyRFwiOiBcIm9cXHUwMzAzXFx1MDMwNFwiLFxuICAvLyDIrSA9IFxcflxcPXtvfVxuICBcIlxcdTAxNERcIjogXCJvXFx1MDMwNFwiLFxuICAvLyDFjSA9IFxcPXtvfVxuICBcIlxcdTFFNTNcIjogXCJvXFx1MDMwNFxcdTAzMDFcIixcbiAgLy8g4bmTID0gXFw9XFwne299XG4gIFwiXFx1MUU1MVwiOiBcIm9cXHUwMzA0XFx1MDMwMFwiLFxuICAvLyDhuZEgPSBcXD1cXGB7b31cbiAgXCJcXHUwMTRGXCI6IFwib1xcdTAzMDZcIixcbiAgLy8gxY8gPSBcXHV7b31cbiAgXCJcXHUwMUQyXCI6IFwib1xcdTAzMENcIixcbiAgLy8gx5IgPSBcXHZ7b31cbiAgXCJcXHhGNFwiOiBcIm9cXHUwMzAyXCIsXG4gIC8vIMO0ID0gXFxee299XG4gIFwiXFx1MUVEMVwiOiBcIm9cXHUwMzAyXFx1MDMwMVwiLFxuICAvLyDhu5EgPSBcXF5cXCd7b31cbiAgXCJcXHUxRUQzXCI6IFwib1xcdTAzMDJcXHUwMzAwXCIsXG4gIC8vIOG7kyA9IFxcXlxcYHtvfVxuICBcIlxcdTFFRDdcIjogXCJvXFx1MDMwMlxcdTAzMDNcIixcbiAgLy8g4buXID0gXFxeXFx+e299XG4gIFwiXFx1MDIyRlwiOiBcIm9cXHUwMzA3XCIsXG4gIC8vIMivID0gXFwue299XG4gIFwiXFx1MDIzMVwiOiBcIm9cXHUwMzA3XFx1MDMwNFwiLFxuICAvLyDIsSA9IFxcLlxcPXtvfVxuICBcIlxcdTAxNTFcIjogXCJvXFx1MDMwQlwiLFxuICAvLyDFkSA9IFxcSHtvfVxuICBcIlxcdTFFNTVcIjogXCJwXFx1MDMwMVwiLFxuICAvLyDhuZUgPSBcXCd7cH1cbiAgXCJcXHUxRTU3XCI6IFwicFxcdTAzMDdcIixcbiAgLy8g4bmXID0gXFwue3B9XG4gIFwiXFx1MDE1NVwiOiBcInJcXHUwMzAxXCIsXG4gIC8vIMWVID0gXFwne3J9XG4gIFwiXFx1MDE1OVwiOiBcInJcXHUwMzBDXCIsXG4gIC8vIMWZID0gXFx2e3J9XG4gIFwiXFx1MUU1OVwiOiBcInJcXHUwMzA3XCIsXG4gIC8vIOG5mSA9IFxcLntyfVxuICBcIlxcdTAxNUJcIjogXCJzXFx1MDMwMVwiLFxuICAvLyDFmyA9IFxcJ3tzfVxuICBcIlxcdTFFNjVcIjogXCJzXFx1MDMwMVxcdTAzMDdcIixcbiAgLy8g4bmlID0gXFwnXFwue3N9XG4gIFwiXFx1MDE2MVwiOiBcInNcXHUwMzBDXCIsXG4gIC8vIMWhID0gXFx2e3N9XG4gIFwiXFx1MUU2N1wiOiBcInNcXHUwMzBDXFx1MDMwN1wiLFxuICAvLyDhuacgPSBcXHZcXC57c31cbiAgXCJcXHUwMTVEXCI6IFwic1xcdTAzMDJcIixcbiAgLy8gxZ0gPSBcXF57c31cbiAgXCJcXHUxRTYxXCI6IFwic1xcdTAzMDdcIixcbiAgLy8g4bmhID0gXFwue3N9XG4gIFwiXFx1MUU5N1wiOiBcInRcXHUwMzA4XCIsXG4gIC8vIOG6lyA9IFxcXCJ7dH1cbiAgXCJcXHUwMTY1XCI6IFwidFxcdTAzMENcIixcbiAgLy8gxaUgPSBcXHZ7dH1cbiAgXCJcXHUxRTZCXCI6IFwidFxcdTAzMDdcIixcbiAgLy8g4bmrID0gXFwue3R9XG4gIFwiXFx4RkFcIjogXCJ1XFx1MDMwMVwiLFxuICAvLyDDuiA9IFxcJ3t1fVxuICBcIlxceEY5XCI6IFwidVxcdTAzMDBcIixcbiAgLy8gw7kgPSBcXGB7dX1cbiAgXCJcXHhGQ1wiOiBcInVcXHUwMzA4XCIsXG4gIC8vIMO8ID0gXFxcInt1fVxuICBcIlxcdTAxRDhcIjogXCJ1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5ggPSBcXFwiXFwne3V9XG4gIFwiXFx1MDFEQ1wiOiBcInVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHnCA9IFxcXCJcXGB7dX1cbiAgXCJcXHUwMUQ2XCI6IFwidVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeWID0gXFxcIlxcPXt1fVxuICBcIlxcdTAxREFcIjogXCJ1XFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5ogPSBcXFwiXFx2e3V9XG4gIFwiXFx1MDE2OVwiOiBcInVcXHUwMzAzXCIsXG4gIC8vIMWpID0gXFx+e3V9XG4gIFwiXFx1MUU3OVwiOiBcInVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubkgPSBcXH5cXCd7dX1cbiAgXCJcXHUwMTZCXCI6IFwidVxcdTAzMDRcIixcbiAgLy8gxasgPSBcXD17dX1cbiAgXCJcXHUxRTdCXCI6IFwidVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uyA9IFxcPVxcXCJ7dX1cbiAgXCJcXHUwMTZEXCI6IFwidVxcdTAzMDZcIixcbiAgLy8gxa0gPSBcXHV7dX1cbiAgXCJcXHUwMUQ0XCI6IFwidVxcdTAzMENcIixcbiAgLy8gx5QgPSBcXHZ7dX1cbiAgXCJcXHhGQlwiOiBcInVcXHUwMzAyXCIsXG4gIC8vIMO7ID0gXFxee3V9XG4gIFwiXFx1MDE2RlwiOiBcInVcXHUwMzBBXCIsXG4gIC8vIMWvID0gXFxye3V9XG4gIFwiXFx1MDE3MVwiOiBcInVcXHUwMzBCXCIsXG4gIC8vIMWxID0gXFxIe3V9XG4gIFwiXFx1MUU3RFwiOiBcInZcXHUwMzAzXCIsXG4gIC8vIOG5vSA9IFxcfnt2fVxuICBcIlxcdTFFODNcIjogXCJ3XFx1MDMwMVwiLFxuICAvLyDhuoMgPSBcXCd7d31cbiAgXCJcXHUxRTgxXCI6IFwid1xcdTAzMDBcIixcbiAgLy8g4bqBID0gXFxge3d9XG4gIFwiXFx1MUU4NVwiOiBcIndcXHUwMzA4XCIsXG4gIC8vIOG6hSA9IFxcXCJ7d31cbiAgXCJcXHUwMTc1XCI6IFwid1xcdTAzMDJcIixcbiAgLy8gxbUgPSBcXF57d31cbiAgXCJcXHUxRTg3XCI6IFwid1xcdTAzMDdcIixcbiAgLy8g4bqHID0gXFwue3d9XG4gIFwiXFx1MUU5OFwiOiBcIndcXHUwMzBBXCIsXG4gIC8vIOG6mCA9IFxccnt3fVxuICBcIlxcdTFFOERcIjogXCJ4XFx1MDMwOFwiLFxuICAvLyDhuo0gPSBcXFwie3h9XG4gIFwiXFx1MUU4QlwiOiBcInhcXHUwMzA3XCIsXG4gIC8vIOG6iyA9IFxcLnt4fVxuICBcIlxceEZEXCI6IFwieVxcdTAzMDFcIixcbiAgLy8gw70gPSBcXCd7eX1cbiAgXCJcXHUxRUYzXCI6IFwieVxcdTAzMDBcIixcbiAgLy8g4buzID0gXFxge3l9XG4gIFwiXFx4RkZcIjogXCJ5XFx1MDMwOFwiLFxuICAvLyDDvyA9IFxcXCJ7eX1cbiAgXCJcXHUxRUY5XCI6IFwieVxcdTAzMDNcIixcbiAgLy8g4bu5ID0gXFx+e3l9XG4gIFwiXFx1MDIzM1wiOiBcInlcXHUwMzA0XCIsXG4gIC8vIMizID0gXFw9e3l9XG4gIFwiXFx1MDE3N1wiOiBcInlcXHUwMzAyXCIsXG4gIC8vIMW3ID0gXFxee3l9XG4gIFwiXFx1MUU4RlwiOiBcInlcXHUwMzA3XCIsXG4gIC8vIOG6jyA9IFxcLnt5fVxuICBcIlxcdTFFOTlcIjogXCJ5XFx1MDMwQVwiLFxuICAvLyDhupkgPSBcXHJ7eX1cbiAgXCJcXHUwMTdBXCI6IFwielxcdTAzMDFcIixcbiAgLy8gxbogPSBcXCd7en1cbiAgXCJcXHUwMTdFXCI6IFwielxcdTAzMENcIixcbiAgLy8gxb4gPSBcXHZ7en1cbiAgXCJcXHUxRTkxXCI6IFwielxcdTAzMDJcIixcbiAgLy8g4bqRID0gXFxee3p9XG4gIFwiXFx1MDE3Q1wiOiBcInpcXHUwMzA3XCIsXG4gIC8vIMW8ID0gXFwue3p9XG4gIFwiXFx4QzFcIjogXCJBXFx1MDMwMVwiLFxuICAvLyDDgSA9IFxcJ3tBfVxuICBcIlxceEMwXCI6IFwiQVxcdTAzMDBcIixcbiAgLy8gw4AgPSBcXGB7QX1cbiAgXCJcXHhDNFwiOiBcIkFcXHUwMzA4XCIsXG4gIC8vIMOEID0gXFxcIntBfVxuICBcIlxcdTAxREVcIjogXCJBXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx54gPSBcXFwiXFw9e0F9XG4gIFwiXFx4QzNcIjogXCJBXFx1MDMwM1wiLFxuICAvLyDDgyA9IFxcfntBfVxuICBcIlxcdTAxMDBcIjogXCJBXFx1MDMwNFwiLFxuICAvLyDEgCA9IFxcPXtBfVxuICBcIlxcdTAxMDJcIjogXCJBXFx1MDMwNlwiLFxuICAvLyDEgiA9IFxcdXtBfVxuICBcIlxcdTFFQUVcIjogXCJBXFx1MDMwNlxcdTAzMDFcIixcbiAgLy8g4bquID0gXFx1XFwne0F9XG4gIFwiXFx1MUVCMFwiOiBcIkFcXHUwMzA2XFx1MDMwMFwiLFxuICAvLyDhurAgPSBcXHVcXGB7QX1cbiAgXCJcXHUxRUI0XCI6IFwiQVxcdTAzMDZcXHUwMzAzXCIsXG4gIC8vIOG6tCA9IFxcdVxcfntBfVxuICBcIlxcdTAxQ0RcIjogXCJBXFx1MDMwQ1wiLFxuICAvLyDHjSA9IFxcdntBfVxuICBcIlxceEMyXCI6IFwiQVxcdTAzMDJcIixcbiAgLy8gw4IgPSBcXF57QX1cbiAgXCJcXHUxRUE0XCI6IFwiQVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6pCA9IFxcXlxcJ3tBfVxuICBcIlxcdTFFQTZcIjogXCJBXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4bqmID0gXFxeXFxge0F9XG4gIFwiXFx1MUVBQVwiOiBcIkFcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhuqogPSBcXF5cXH57QX1cbiAgXCJcXHUwMjI2XCI6IFwiQVxcdTAzMDdcIixcbiAgLy8gyKYgPSBcXC57QX1cbiAgXCJcXHUwMUUwXCI6IFwiQVxcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMegID0gXFwuXFw9e0F9XG4gIFwiXFx4QzVcIjogXCJBXFx1MDMwQVwiLFxuICAvLyDDhSA9IFxccntBfVxuICBcIlxcdTAxRkFcIjogXCJBXFx1MDMwQVxcdTAzMDFcIixcbiAgLy8gx7ogPSBcXHJcXCd7QX1cbiAgXCJcXHUxRTAyXCI6IFwiQlxcdTAzMDdcIixcbiAgLy8g4biCID0gXFwue0J9XG4gIFwiXFx1MDEwNlwiOiBcIkNcXHUwMzAxXCIsXG4gIC8vIMSGID0gXFwne0N9XG4gIFwiXFx1MDEwQ1wiOiBcIkNcXHUwMzBDXCIsXG4gIC8vIMSMID0gXFx2e0N9XG4gIFwiXFx1MDEwOFwiOiBcIkNcXHUwMzAyXCIsXG4gIC8vIMSIID0gXFxee0N9XG4gIFwiXFx1MDEwQVwiOiBcIkNcXHUwMzA3XCIsXG4gIC8vIMSKID0gXFwue0N9XG4gIFwiXFx1MDEwRVwiOiBcIkRcXHUwMzBDXCIsXG4gIC8vIMSOID0gXFx2e0R9XG4gIFwiXFx1MUUwQVwiOiBcIkRcXHUwMzA3XCIsXG4gIC8vIOG4iiA9IFxcLntEfVxuICBcIlxceEM5XCI6IFwiRVxcdTAzMDFcIixcbiAgLy8gw4kgPSBcXCd7RX1cbiAgXCJcXHhDOFwiOiBcIkVcXHUwMzAwXCIsXG4gIC8vIMOIID0gXFxge0V9XG4gIFwiXFx4Q0JcIjogXCJFXFx1MDMwOFwiLFxuICAvLyDDiyA9IFxcXCJ7RX1cbiAgXCJcXHUxRUJDXCI6IFwiRVxcdTAzMDNcIixcbiAgLy8g4bq8ID0gXFx+e0V9XG4gIFwiXFx1MDExMlwiOiBcIkVcXHUwMzA0XCIsXG4gIC8vIMSSID0gXFw9e0V9XG4gIFwiXFx1MUUxNlwiOiBcIkVcXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuJYgPSBcXD1cXCd7RX1cbiAgXCJcXHUxRTE0XCI6IFwiRVxcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG4lCA9IFxcPVxcYHtFfVxuICBcIlxcdTAxMTRcIjogXCJFXFx1MDMwNlwiLFxuICAvLyDElCA9IFxcdXtFfVxuICBcIlxcdTAxMUFcIjogXCJFXFx1MDMwQ1wiLFxuICAvLyDEmiA9IFxcdntFfVxuICBcIlxceENBXCI6IFwiRVxcdTAzMDJcIixcbiAgLy8gw4ogPSBcXF57RX1cbiAgXCJcXHUxRUJFXCI6IFwiRVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6viA9IFxcXlxcJ3tFfVxuICBcIlxcdTFFQzBcIjogXCJFXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buAID0gXFxeXFxge0V9XG4gIFwiXFx1MUVDNFwiOiBcIkVcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu4QgPSBcXF5cXH57RX1cbiAgXCJcXHUwMTE2XCI6IFwiRVxcdTAzMDdcIixcbiAgLy8gxJYgPSBcXC57RX1cbiAgXCJcXHUxRTFFXCI6IFwiRlxcdTAzMDdcIixcbiAgLy8g4bieID0gXFwue0Z9XG4gIFwiXFx1MDFGNFwiOiBcIkdcXHUwMzAxXCIsXG4gIC8vIMe0ID0gXFwne0d9XG4gIFwiXFx1MUUyMFwiOiBcIkdcXHUwMzA0XCIsXG4gIC8vIOG4oCA9IFxcPXtHfVxuICBcIlxcdTAxMUVcIjogXCJHXFx1MDMwNlwiLFxuICAvLyDEniA9IFxcdXtHfVxuICBcIlxcdTAxRTZcIjogXCJHXFx1MDMwQ1wiLFxuICAvLyDHpiA9IFxcdntHfVxuICBcIlxcdTAxMUNcIjogXCJHXFx1MDMwMlwiLFxuICAvLyDEnCA9IFxcXntHfVxuICBcIlxcdTAxMjBcIjogXCJHXFx1MDMwN1wiLFxuICAvLyDEoCA9IFxcLntHfVxuICBcIlxcdTFFMjZcIjogXCJIXFx1MDMwOFwiLFxuICAvLyDhuKYgPSBcXFwie0h9XG4gIFwiXFx1MDIxRVwiOiBcIkhcXHUwMzBDXCIsXG4gIC8vIMieID0gXFx2e0h9XG4gIFwiXFx1MDEyNFwiOiBcIkhcXHUwMzAyXCIsXG4gIC8vIMSkID0gXFxee0h9XG4gIFwiXFx1MUUyMlwiOiBcIkhcXHUwMzA3XCIsXG4gIC8vIOG4oiA9IFxcLntIfVxuICBcIlxceENEXCI6IFwiSVxcdTAzMDFcIixcbiAgLy8gw40gPSBcXCd7SX1cbiAgXCJcXHhDQ1wiOiBcIklcXHUwMzAwXCIsXG4gIC8vIMOMID0gXFxge0l9XG4gIFwiXFx4Q0ZcIjogXCJJXFx1MDMwOFwiLFxuICAvLyDDjyA9IFxcXCJ7SX1cbiAgXCJcXHUxRTJFXCI6IFwiSVxcdTAzMDhcXHUwMzAxXCIsXG4gIC8vIOG4riA9IFxcXCJcXCd7SX1cbiAgXCJcXHUwMTI4XCI6IFwiSVxcdTAzMDNcIixcbiAgLy8gxKggPSBcXH57SX1cbiAgXCJcXHUwMTJBXCI6IFwiSVxcdTAzMDRcIixcbiAgLy8gxKogPSBcXD17SX1cbiAgXCJcXHUwMTJDXCI6IFwiSVxcdTAzMDZcIixcbiAgLy8gxKwgPSBcXHV7SX1cbiAgXCJcXHUwMUNGXCI6IFwiSVxcdTAzMENcIixcbiAgLy8gx48gPSBcXHZ7SX1cbiAgXCJcXHhDRVwiOiBcIklcXHUwMzAyXCIsXG4gIC8vIMOOID0gXFxee0l9XG4gIFwiXFx1MDEzMFwiOiBcIklcXHUwMzA3XCIsXG4gIC8vIMSwID0gXFwue0l9XG4gIFwiXFx1MDEzNFwiOiBcIkpcXHUwMzAyXCIsXG4gIC8vIMS0ID0gXFxee0p9XG4gIFwiXFx1MUUzMFwiOiBcIktcXHUwMzAxXCIsXG4gIC8vIOG4sCA9IFxcJ3tLfVxuICBcIlxcdTAxRThcIjogXCJLXFx1MDMwQ1wiLFxuICAvLyDHqCA9IFxcdntLfVxuICBcIlxcdTAxMzlcIjogXCJMXFx1MDMwMVwiLFxuICAvLyDEuSA9IFxcJ3tMfVxuICBcIlxcdTAxM0RcIjogXCJMXFx1MDMwQ1wiLFxuICAvLyDEvSA9IFxcdntMfVxuICBcIlxcdTFFM0VcIjogXCJNXFx1MDMwMVwiLFxuICAvLyDhuL4gPSBcXCd7TX1cbiAgXCJcXHUxRTQwXCI6IFwiTVxcdTAzMDdcIixcbiAgLy8g4bmAID0gXFwue019XG4gIFwiXFx1MDE0M1wiOiBcIk5cXHUwMzAxXCIsXG4gIC8vIMWDID0gXFwne059XG4gIFwiXFx1MDFGOFwiOiBcIk5cXHUwMzAwXCIsXG4gIC8vIMe4ID0gXFxge059XG4gIFwiXFx4RDFcIjogXCJOXFx1MDMwM1wiLFxuICAvLyDDkSA9IFxcfntOfVxuICBcIlxcdTAxNDdcIjogXCJOXFx1MDMwQ1wiLFxuICAvLyDFhyA9IFxcdntOfVxuICBcIlxcdTFFNDRcIjogXCJOXFx1MDMwN1wiLFxuICAvLyDhuYQgPSBcXC57Tn1cbiAgXCJcXHhEM1wiOiBcIk9cXHUwMzAxXCIsXG4gIC8vIMOTID0gXFwne099XG4gIFwiXFx4RDJcIjogXCJPXFx1MDMwMFwiLFxuICAvLyDDkiA9IFxcYHtPfVxuICBcIlxceEQ2XCI6IFwiT1xcdTAzMDhcIixcbiAgLy8gw5YgPSBcXFwie099XG4gIFwiXFx1MDIyQVwiOiBcIk9cXHUwMzA4XFx1MDMwNFwiLFxuICAvLyDIqiA9IFxcXCJcXD17T31cbiAgXCJcXHhENVwiOiBcIk9cXHUwMzAzXCIsXG4gIC8vIMOVID0gXFx+e099XG4gIFwiXFx1MUU0Q1wiOiBcIk9cXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhuYwgPSBcXH5cXCd7T31cbiAgXCJcXHUxRTRFXCI6IFwiT1xcdTAzMDNcXHUwMzA4XCIsXG4gIC8vIOG5jiA9IFxcflxcXCJ7T31cbiAgXCJcXHUwMjJDXCI6IFwiT1xcdTAzMDNcXHUwMzA0XCIsXG4gIC8vIMisID0gXFx+XFw9e099XG4gIFwiXFx1MDE0Q1wiOiBcIk9cXHUwMzA0XCIsXG4gIC8vIMWMID0gXFw9e099XG4gIFwiXFx1MUU1MlwiOiBcIk9cXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuZIgPSBcXD1cXCd7T31cbiAgXCJcXHUxRTUwXCI6IFwiT1xcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG5kCA9IFxcPVxcYHtPfVxuICBcIlxcdTAxNEVcIjogXCJPXFx1MDMwNlwiLFxuICAvLyDFjiA9IFxcdXtPfVxuICBcIlxcdTAxRDFcIjogXCJPXFx1MDMwQ1wiLFxuICAvLyDHkSA9IFxcdntPfVxuICBcIlxceEQ0XCI6IFwiT1xcdTAzMDJcIixcbiAgLy8gw5QgPSBcXF57T31cbiAgXCJcXHUxRUQwXCI6IFwiT1xcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG7kCA9IFxcXlxcJ3tPfVxuICBcIlxcdTFFRDJcIjogXCJPXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buSID0gXFxeXFxge099XG4gIFwiXFx1MUVENlwiOiBcIk9cXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu5YgPSBcXF5cXH57T31cbiAgXCJcXHUwMjJFXCI6IFwiT1xcdTAzMDdcIixcbiAgLy8gyK4gPSBcXC57T31cbiAgXCJcXHUwMjMwXCI6IFwiT1xcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMiwID0gXFwuXFw9e099XG4gIFwiXFx1MDE1MFwiOiBcIk9cXHUwMzBCXCIsXG4gIC8vIMWQID0gXFxIe099XG4gIFwiXFx1MUU1NFwiOiBcIlBcXHUwMzAxXCIsXG4gIC8vIOG5lCA9IFxcJ3tQfVxuICBcIlxcdTFFNTZcIjogXCJQXFx1MDMwN1wiLFxuICAvLyDhuZYgPSBcXC57UH1cbiAgXCJcXHUwMTU0XCI6IFwiUlxcdTAzMDFcIixcbiAgLy8gxZQgPSBcXCd7Un1cbiAgXCJcXHUwMTU4XCI6IFwiUlxcdTAzMENcIixcbiAgLy8gxZggPSBcXHZ7Un1cbiAgXCJcXHUxRTU4XCI6IFwiUlxcdTAzMDdcIixcbiAgLy8g4bmYID0gXFwue1J9XG4gIFwiXFx1MDE1QVwiOiBcIlNcXHUwMzAxXCIsXG4gIC8vIMWaID0gXFwne1N9XG4gIFwiXFx1MUU2NFwiOiBcIlNcXHUwMzAxXFx1MDMwN1wiLFxuICAvLyDhuaQgPSBcXCdcXC57U31cbiAgXCJcXHUwMTYwXCI6IFwiU1xcdTAzMENcIixcbiAgLy8gxaAgPSBcXHZ7U31cbiAgXCJcXHUxRTY2XCI6IFwiU1xcdTAzMENcXHUwMzA3XCIsXG4gIC8vIOG5piA9IFxcdlxcLntTfVxuICBcIlxcdTAxNUNcIjogXCJTXFx1MDMwMlwiLFxuICAvLyDFnCA9IFxcXntTfVxuICBcIlxcdTFFNjBcIjogXCJTXFx1MDMwN1wiLFxuICAvLyDhuaAgPSBcXC57U31cbiAgXCJcXHUwMTY0XCI6IFwiVFxcdTAzMENcIixcbiAgLy8gxaQgPSBcXHZ7VH1cbiAgXCJcXHUxRTZBXCI6IFwiVFxcdTAzMDdcIixcbiAgLy8g4bmqID0gXFwue1R9XG4gIFwiXFx4REFcIjogXCJVXFx1MDMwMVwiLFxuICAvLyDDmiA9IFxcJ3tVfVxuICBcIlxceEQ5XCI6IFwiVVxcdTAzMDBcIixcbiAgLy8gw5kgPSBcXGB7VX1cbiAgXCJcXHhEQ1wiOiBcIlVcXHUwMzA4XCIsXG4gIC8vIMOcID0gXFxcIntVfVxuICBcIlxcdTAxRDdcIjogXCJVXFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gx5cgPSBcXFwiXFwne1V9XG4gIFwiXFx1MDFEQlwiOiBcIlVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDHmyA9IFxcXCJcXGB7VX1cbiAgXCJcXHUwMUQ1XCI6IFwiVVxcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMeVID0gXFxcIlxcPXtVfVxuICBcIlxcdTAxRDlcIjogXCJVXFx1MDMwOFxcdTAzMENcIixcbiAgLy8gx5kgPSBcXFwiXFx2e1V9XG4gIFwiXFx1MDE2OFwiOiBcIlVcXHUwMzAzXCIsXG4gIC8vIMWoID0gXFx+e1V9XG4gIFwiXFx1MUU3OFwiOiBcIlVcXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhubggPSBcXH5cXCd7VX1cbiAgXCJcXHUwMTZBXCI6IFwiVVxcdTAzMDRcIixcbiAgLy8gxaogPSBcXD17VX1cbiAgXCJcXHUxRTdBXCI6IFwiVVxcdTAzMDRcXHUwMzA4XCIsXG4gIC8vIOG5uiA9IFxcPVxcXCJ7VX1cbiAgXCJcXHUwMTZDXCI6IFwiVVxcdTAzMDZcIixcbiAgLy8gxawgPSBcXHV7VX1cbiAgXCJcXHUwMUQzXCI6IFwiVVxcdTAzMENcIixcbiAgLy8gx5MgPSBcXHZ7VX1cbiAgXCJcXHhEQlwiOiBcIlVcXHUwMzAyXCIsXG4gIC8vIMObID0gXFxee1V9XG4gIFwiXFx1MDE2RVwiOiBcIlVcXHUwMzBBXCIsXG4gIC8vIMWuID0gXFxye1V9XG4gIFwiXFx1MDE3MFwiOiBcIlVcXHUwMzBCXCIsXG4gIC8vIMWwID0gXFxIe1V9XG4gIFwiXFx1MUU3Q1wiOiBcIlZcXHUwMzAzXCIsXG4gIC8vIOG5vCA9IFxcfntWfVxuICBcIlxcdTFFODJcIjogXCJXXFx1MDMwMVwiLFxuICAvLyDhuoIgPSBcXCd7V31cbiAgXCJcXHUxRTgwXCI6IFwiV1xcdTAzMDBcIixcbiAgLy8g4bqAID0gXFxge1d9XG4gIFwiXFx1MUU4NFwiOiBcIldcXHUwMzA4XCIsXG4gIC8vIOG6hCA9IFxcXCJ7V31cbiAgXCJcXHUwMTc0XCI6IFwiV1xcdTAzMDJcIixcbiAgLy8gxbQgPSBcXF57V31cbiAgXCJcXHUxRTg2XCI6IFwiV1xcdTAzMDdcIixcbiAgLy8g4bqGID0gXFwue1d9XG4gIFwiXFx1MUU4Q1wiOiBcIlhcXHUwMzA4XCIsXG4gIC8vIOG6jCA9IFxcXCJ7WH1cbiAgXCJcXHUxRThBXCI6IFwiWFxcdTAzMDdcIixcbiAgLy8g4bqKID0gXFwue1h9XG4gIFwiXFx4RERcIjogXCJZXFx1MDMwMVwiLFxuICAvLyDDnSA9IFxcJ3tZfVxuICBcIlxcdTFFRjJcIjogXCJZXFx1MDMwMFwiLFxuICAvLyDhu7IgPSBcXGB7WX1cbiAgXCJcXHUwMTc4XCI6IFwiWVxcdTAzMDhcIixcbiAgLy8gxbggPSBcXFwie1l9XG4gIFwiXFx1MUVGOFwiOiBcIllcXHUwMzAzXCIsXG4gIC8vIOG7uCA9IFxcfntZfVxuICBcIlxcdTAyMzJcIjogXCJZXFx1MDMwNFwiLFxuICAvLyDIsiA9IFxcPXtZfVxuICBcIlxcdTAxNzZcIjogXCJZXFx1MDMwMlwiLFxuICAvLyDFtiA9IFxcXntZfVxuICBcIlxcdTFFOEVcIjogXCJZXFx1MDMwN1wiLFxuICAvLyDhuo4gPSBcXC57WX1cbiAgXCJcXHUwMTc5XCI6IFwiWlxcdTAzMDFcIixcbiAgLy8gxbkgPSBcXCd7Wn1cbiAgXCJcXHUwMTdEXCI6IFwiWlxcdTAzMENcIixcbiAgLy8gxb0gPSBcXHZ7Wn1cbiAgXCJcXHUxRTkwXCI6IFwiWlxcdTAzMDJcIixcbiAgLy8g4bqQID0gXFxee1p9XG4gIFwiXFx1MDE3QlwiOiBcIlpcXHUwMzA3XCIsXG4gIC8vIMW7ID0gXFwue1p9XG4gIFwiXFx1MDNBQ1wiOiBcIlxcdTAzQjFcXHUwMzAxXCIsXG4gIC8vIM6sID0gXFwne86xfVxuICBcIlxcdTFGNzBcIjogXCJcXHUwM0IxXFx1MDMwMFwiLFxuICAvLyDhvbAgPSBcXGB7zrF9XG4gIFwiXFx1MUZCMVwiOiBcIlxcdTAzQjFcXHUwMzA0XCIsXG4gIC8vIOG+sSA9IFxcPXvOsX1cbiAgXCJcXHUxRkIwXCI6IFwiXFx1MDNCMVxcdTAzMDZcIixcbiAgLy8g4b6wID0gXFx1e86xfVxuICBcIlxcdTAzQURcIjogXCJcXHUwM0I1XFx1MDMwMVwiLFxuICAvLyDOrSA9IFxcJ3vOtX1cbiAgXCJcXHUxRjcyXCI6IFwiXFx1MDNCNVxcdTAzMDBcIixcbiAgLy8g4b2yID0gXFxge861fVxuICBcIlxcdTAzQUVcIjogXCJcXHUwM0I3XFx1MDMwMVwiLFxuICAvLyDOriA9IFxcJ3vOt31cbiAgXCJcXHUxRjc0XCI6IFwiXFx1MDNCN1xcdTAzMDBcIixcbiAgLy8g4b20ID0gXFxge863fVxuICBcIlxcdTAzQUZcIjogXCJcXHUwM0I5XFx1MDMwMVwiLFxuICAvLyDOryA9IFxcJ3vOuX1cbiAgXCJcXHUxRjc2XCI6IFwiXFx1MDNCOVxcdTAzMDBcIixcbiAgLy8g4b22ID0gXFxge865fVxuICBcIlxcdTAzQ0FcIjogXCJcXHUwM0I5XFx1MDMwOFwiLFxuICAvLyDPiiA9IFxcXCJ7zrl9XG4gIFwiXFx1MDM5MFwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDOkCA9IFxcXCJcXCd7zrl9XG4gIFwiXFx1MUZEMlwiOiBcIlxcdTAzQjlcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDhv5IgPSBcXFwiXFxge865fVxuICBcIlxcdTFGRDFcIjogXCJcXHUwM0I5XFx1MDMwNFwiLFxuICAvLyDhv5EgPSBcXD17zrl9XG4gIFwiXFx1MUZEMFwiOiBcIlxcdTAzQjlcXHUwMzA2XCIsXG4gIC8vIOG/kCA9IFxcdXvOuX1cbiAgXCJcXHUwM0NDXCI6IFwiXFx1MDNCRlxcdTAzMDFcIixcbiAgLy8gz4wgPSBcXCd7zr99XG4gIFwiXFx1MUY3OFwiOiBcIlxcdTAzQkZcXHUwMzAwXCIsXG4gIC8vIOG9uCA9IFxcYHvOv31cbiAgXCJcXHUwM0NEXCI6IFwiXFx1MDNDNVxcdTAzMDFcIixcbiAgLy8gz40gPSBcXCd7z4V9XG4gIFwiXFx1MUY3QVwiOiBcIlxcdTAzQzVcXHUwMzAwXCIsXG4gIC8vIOG9uiA9IFxcYHvPhX1cbiAgXCJcXHUwM0NCXCI6IFwiXFx1MDNDNVxcdTAzMDhcIixcbiAgLy8gz4sgPSBcXFwie8+FfVxuICBcIlxcdTAzQjBcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDFcIixcbiAgLy8gzrAgPSBcXFwiXFwne8+FfVxuICBcIlxcdTFGRTJcIjogXCJcXHUwM0M1XFx1MDMwOFxcdTAzMDBcIixcbiAgLy8g4b+iID0gXFxcIlxcYHvPhX1cbiAgXCJcXHUxRkUxXCI6IFwiXFx1MDNDNVxcdTAzMDRcIixcbiAgLy8g4b+hID0gXFw9e8+FfVxuICBcIlxcdTFGRTBcIjogXCJcXHUwM0M1XFx1MDMwNlwiLFxuICAvLyDhv6AgPSBcXHV7z4V9XG4gIFwiXFx1MDNDRVwiOiBcIlxcdTAzQzlcXHUwMzAxXCIsXG4gIC8vIM+OID0gXFwne8+JfVxuICBcIlxcdTFGN0NcIjogXCJcXHUwM0M5XFx1MDMwMFwiLFxuICAvLyDhvbwgPSBcXGB7z4l9XG4gIFwiXFx1MDM4RVwiOiBcIlxcdTAzQTVcXHUwMzAxXCIsXG4gIC8vIM6OID0gXFwne86lfVxuICBcIlxcdTFGRUFcIjogXCJcXHUwM0E1XFx1MDMwMFwiLFxuICAvLyDhv6ogPSBcXGB7zqV9XG4gIFwiXFx1MDNBQlwiOiBcIlxcdTAzQTVcXHUwMzA4XCIsXG4gIC8vIM6rID0gXFxcInvOpX1cbiAgXCJcXHUxRkU5XCI6IFwiXFx1MDNBNVxcdTAzMDRcIixcbiAgLy8g4b+pID0gXFw9e86lfVxuICBcIlxcdTFGRThcIjogXCJcXHUwM0E1XFx1MDMwNlwiLFxuICAvLyDhv6ggPSBcXHV7zqV9XG4gIFwiXFx1MDM4RlwiOiBcIlxcdTAzQTlcXHUwMzAxXCIsXG4gIC8vIM6PID0gXFwne86pfVxuICBcIlxcdTFGRkFcIjogXCJcXHUwM0E5XFx1MDMwMFwiIC8vIOG/uiA9IFxcYHvOqX1cblxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9QYXJzZXIuanNcbi8qIGVzbGludCBuby1jb25zdGFudC1jb25kaXRpb246MCAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBwYXJzZXIgdXNlZCB0byBwYXJzZSBvdXQgYSBUZVggZXhwcmVzc2lvbiBmcm9tIHRoZVxuICogaW5wdXQuIFNpbmNlIFRlWCBpc24ndCBjb250ZXh0LWZyZWUsIHN0YW5kYXJkIHBhcnNlcnMgZG9uJ3Qgd29yayBwYXJ0aWN1bGFybHlcbiAqIHdlbGwuXG4gKlxuICogVGhlIHN0cmF0ZWd5IG9mIHRoaXMgcGFyc2VyIGlzIGFzIHN1Y2g6XG4gKlxuICogVGhlIG1haW4gZnVuY3Rpb25zICh0aGUgYC5wYXJzZS4uLmAgb25lcykgdGFrZSBhIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50XG4gKiBwYXJzZSBzdHJpbmcgdG8gcGFyc2UgdG9rZW5zIGZyb20uIFRoZSBsZXhlciAoZm91bmQgaW4gTGV4ZXIuanMsIHN0b3JlZCBhdFxuICogdGhpcy5ndWxsZXQubGV4ZXIpIGFsc28gc3VwcG9ydHMgcHVsbGluZyBvdXQgdG9rZW5zIGF0IGFyYml0cmFyeSBwbGFjZXMuIFdoZW5cbiAqIGluZGl2aWR1YWwgdG9rZW5zIGFyZSBuZWVkZWQgYXQgYSBwb3NpdGlvbiwgdGhlIGxleGVyIGlzIGNhbGxlZCB0byBwdWxsIG91dCBhXG4gKiB0b2tlbiwgd2hpY2ggaXMgdGhlbiB1c2VkLlxuICpcbiAqIFRoZSBwYXJzZXIgaGFzIGEgcHJvcGVydHkgY2FsbGVkIFwibW9kZVwiIGluZGljYXRpbmcgdGhlIG1vZGUgdGhhdFxuICogdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgaW4uIEN1cnJlbnRseSBpdCBoYXMgdG8gYmUgb25lIG9mIFwibWF0aFwiIG9yXG4gKiBcInRleHRcIiwgd2hpY2ggZGVub3RlcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgbWF0aC15XG4gKiBvbmUgb3IgYSB0ZXh0LXkgb25lIChlLmcuIGluc2lkZSBcXHRleHQpLiBDdXJyZW50bHksIHRoaXMgc2VydmVzIHRvXG4gKiBsaW1pdCB0aGUgZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRleHQgbW9kZS5cbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbnMgdGhlbiByZXR1cm4gYW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VmdWwgZGF0YSB0aGF0XG4gKiB3YXMgcGFyc2VkIGF0IGl0cyBnaXZlbiBwb2ludCwgYW5kIGEgbmV3IHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHBhcnNlZFxuICogZGF0YS4gVGhlIG1haW4gZnVuY3Rpb25zIGNhbiBjYWxsIGVhY2ggb3RoZXIgYW5kIGNvbnRpbnVlIHRoZSBwYXJzaW5nIGJ5XG4gKiB1c2luZyB0aGUgcmV0dXJuZWQgcG9zaXRpb24gYXMgYSBuZXcgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogVGhlcmUgYXJlIGFsc28gZXh0cmEgYC5oYW5kbGUuLi5gIGZ1bmN0aW9ucywgd2hpY2ggcHVsbCBvdXQgc29tZSByZXVzZWRcbiAqIGZ1bmN0aW9uYWxpdHkgaW50byBzZWxmLWNvbnRhaW5lZCBmdW5jdGlvbnMuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyByZXR1cm4gUGFyc2VOb2Rlcy5cbiAqL1xudmFyIFBhcnNlcl9QYXJzZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIoaW5wdXQsIHNldHRpbmdzKSB7XG4gICAgdGhpcy5tb2RlID0gdm9pZCAwO1xuICAgIHRoaXMuZ3VsbGV0ID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy5sZWZ0cmlnaHREZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHRUb2tlbiA9IHZvaWQgMDtcbiAgICAvLyBTdGFydCBpbiBtYXRoIG1vZGVcbiAgICB0aGlzLm1vZGUgPSBcIm1hdGhcIjsgLy8gQ3JlYXRlIGEgbmV3IG1hY3JvIGV4cGFuZGVyIChndWxsZXQpIGFuZCAoaW5kaXJlY3RseSB2aWEgdGhhdCkgYWxzbyBhXG4gICAgLy8gbmV3IGxleGVyIChtb3V0aCkgZm9yIHRoaXMgcGFyc2VyIChzdG9tYWNoLCBpbiB0aGUgbGFuZ3VhZ2Ugb2YgVGVYKVxuXG4gICAgdGhpcy5ndWxsZXQgPSBuZXcgTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyKGlucHV0LCBzZXR0aW5ncywgdGhpcy5tb2RlKTsgLy8gU3RvcmUgdGhlIHNldHRpbmdzIGZvciB1c2UgaW4gcGFyc2luZ1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzOyAvLyBDb3VudCBsZWZ0cmlnaHQgZGVwdGggKGZvciBcXG1pZGRsZSBlcnJvcnMpXG5cbiAgICB0aGlzLmxlZnRyaWdodERlcHRoID0gMDtcbiAgfVxuICAvKipcbiAgICogQ2hlY2tzIGEgcmVzdWx0IHRvIG1ha2Ugc3VyZSBpdCBoYXMgdGhlIHJpZ2h0IHR5cGUsIGFuZCB0aHJvd3MgYW5cbiAgICogYXBwcm9wcmlhdGUgZXJyb3Igb3RoZXJ3aXNlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5leHBlY3QgPSBmdW5jdGlvbiBleHBlY3QodGV4dCwgY29uc3VtZSkge1xuICAgIGlmIChjb25zdW1lID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnN1bWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCAhPT0gdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgJ1wiICsgdGV4dCArIFwiJywgZ290ICdcIiArIHRoaXMuZmV0Y2goKS50ZXh0ICsgXCInXCIsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnN1bWUpIHtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGlzY2FyZHMgdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBjb25zaWRlcmluZyBpdCBjb25zdW1lZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZSA9IGZ1bmN0aW9uIGNvbnN1bWUoKSB7XG4gICAgdGhpcy5uZXh0VG9rZW4gPSBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCBvciBpZiB0aGVyZSBpc24ndCBvbmUgKGF0IHRoZVxuICAgKiBiZWdpbm5pbmcsIG9yIGlmIHRoZSBwcmV2aW91cyBsb29rYWhlYWQgdG9rZW4gd2FzIGNvbnN1bWUoKWQpLFxuICAgKiBmZXRjaCB0aGUgbmV4dCB0b2tlbiBhcyB0aGUgbmV3IGxvb2thaGVhZCB0b2tlbiBhbmQgcmV0dXJuIGl0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mZXRjaCA9IGZ1bmN0aW9uIGZldGNoKCkge1xuICAgIGlmICh0aGlzLm5leHRUb2tlbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMuZ3VsbGV0LmV4cGFuZE5leHRUb2tlbigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5leHRUb2tlbjtcbiAgfVxuICAvKipcbiAgICogU3dpdGNoZXMgYmV0d2VlbiBcInRleHRcIiBhbmQgXCJtYXRoXCIgbW9kZXMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnN3aXRjaE1vZGUgPSBmdW5jdGlvbiBzd2l0Y2hNb2RlKG5ld01vZGUpIHtcbiAgICB0aGlzLm1vZGUgPSBuZXdNb2RlO1xuICAgIHRoaXMuZ3VsbGV0LnN3aXRjaE1vZGUobmV3TW9kZSk7XG4gIH1cbiAgLyoqXG4gICAqIE1haW4gcGFyc2luZyBmdW5jdGlvbiwgd2hpY2ggcGFyc2VzIGFuIGVudGlyZSBpbnB1dC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2UgPSBmdW5jdGlvbiBwYXJzZSgpIHtcbiAgICAvLyBDcmVhdGUgYSBncm91cCBuYW1lc3BhY2UgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24uXG4gICAgLy8gKExhVGVYIGNyZWF0ZXMgYSBuZXcgZ3JvdXAgZm9yIGV2ZXJ5ICQuLi4kLCAkJC4uLiQkLCBcXFsuLi5cXF0uKVxuICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gVXNlIG9sZCBcXGNvbG9yIGJlaGF2aW9yIChzYW1lIGFzIExhVGVYJ3MgXFx0ZXh0Y29sb3IpIGlmIHJlcXVlc3RlZC5cbiAgICAvLyBXZSBkbyB0aGlzIHdpdGhpbiB0aGUgZ3JvdXAgZm9yIHRoZSBtYXRoIGV4cHJlc3Npb24sIHNvIGl0IGRvZXNuJ3RcbiAgICAvLyBwb2xsdXRlIHNldHRpbmdzLm1hY3Jvcy5cblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbG9ySXNUZXh0Q29sb3IpIHtcbiAgICAgIHRoaXMuZ3VsbGV0Lm1hY3Jvcy5zZXQoXCJcXFxcY29sb3JcIiwgXCJcXFxcdGV4dGNvbG9yXCIpO1xuICAgIH0gLy8gVHJ5IHRvIHBhcnNlIHRoZSBpbnB1dFxuXG5cbiAgICB2YXIgcGFyc2UgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSk7IC8vIElmIHdlIHN1Y2NlZWRlZCwgbWFrZSBzdXJlIHRoZXJlJ3MgYW4gRU9GIGF0IHRoZSBlbmRcblxuICAgIHRoaXMuZXhwZWN0KFwiRU9GXCIpOyAvLyBFbmQgdGhlIGdyb3VwIG5hbWVzcGFjZSBmb3IgdGhlIGV4cHJlc3Npb25cblxuICAgIHRoaXMuZ3VsbGV0LmVuZEdyb3VwKCk7XG4gICAgcmV0dXJuIHBhcnNlO1xuICB9O1xuXG4gIF9wcm90by5wYXJzZUV4cHJlc3Npb24gPSBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oYnJlYWtPbkluZml4LCBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgdmFyIGJvZHkgPSBbXTsgLy8gS2VlcCBhZGRpbmcgYXRvbXMgdG8gdGhlIGJvZHkgdW50aWwgd2UgY2FuJ3QgcGFyc2UgYW55IG1vcmUgYXRvbXMgKGVpdGhlclxuICAgIC8vIHdlIHJlYWNoZWQgdGhlIGVuZCwgYSB9LCBvciBhIFxccmlnaHQpXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gSWdub3JlIHNwYWNlcyBpbiBtYXRoIG1vZGVcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGV4ID0gdGhpcy5mZXRjaCgpO1xuXG4gICAgICBpZiAoUGFyc2VyLmVuZE9mRXhwcmVzc2lvbi5pbmRleE9mKGxleC50ZXh0KSAhPT0gLTEpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmVha09uVG9rZW5UZXh0ICYmIGxleC50ZXh0ID09PSBicmVha09uVG9rZW5UZXh0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnJlYWtPbkluZml4ICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdICYmIHNyY19mdW5jdGlvbnNbbGV4LnRleHRdLmluZml4KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXRvbSA9IHRoaXMucGFyc2VBdG9tKGJyZWFrT25Ub2tlblRleHQpO1xuXG4gICAgICBpZiAoIWF0b20pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJvZHkucHVzaChhdG9tKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgdGhpcy5mb3JtTGlnYXR1cmVzKGJvZHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhbmRsZUluZml4Tm9kZXMoYm9keSk7XG4gIH1cbiAgLyoqXG4gICAqIFJld3JpdGVzIGluZml4IG9wZXJhdG9ycyBzdWNoIGFzIFxcb3ZlciB3aXRoIGNvcnJlc3BvbmRpbmcgY29tbWFuZHMgc3VjaFxuICAgKiBhcyBcXGZyYWMuXG4gICAqXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXAuICBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmVcbiAgICogdGhlbiB0aGUgZXhwcmVzc2lvbiBpcyBhbWJpZ3VvdXMuICBUaGlzIGNhbiBiZSByZXNvbHZlZCBieSBhZGRpbmcge30uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhbmRsZUluZml4Tm9kZXMgPSBmdW5jdGlvbiBoYW5kbGVJbmZpeE5vZGVzKGJvZHkpIHtcbiAgICB2YXIgb3ZlckluZGV4ID0gLTE7XG4gICAgdmFyIGZ1bmNOYW1lO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib2R5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGNoZWNrTm9kZVR5cGUoYm9keVtpXSwgXCJpbmZpeFwiKTtcblxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgaWYgKG92ZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJvbmx5IG9uZSBpbmZpeCBvcGVyYXRvciBwZXIgZ3JvdXBcIiwgbm9kZS50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVySW5kZXggPSBpO1xuICAgICAgICBmdW5jTmFtZSA9IG5vZGUucmVwbGFjZVdpdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJJbmRleCAhPT0gLTEgJiYgZnVuY05hbWUpIHtcbiAgICAgIHZhciBudW1lck5vZGU7XG4gICAgICB2YXIgZGVub21Ob2RlO1xuICAgICAgdmFyIG51bWVyQm9keSA9IGJvZHkuc2xpY2UoMCwgb3ZlckluZGV4KTtcbiAgICAgIHZhciBkZW5vbUJvZHkgPSBib2R5LnNsaWNlKG92ZXJJbmRleCArIDEpO1xuXG4gICAgICBpZiAobnVtZXJCb2R5Lmxlbmd0aCA9PT0gMSAmJiBudW1lckJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIG51bWVyTm9kZSA9IG51bWVyQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG51bWVyTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IG51bWVyQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVub21Cb2R5Lmxlbmd0aCA9PT0gMSAmJiBkZW5vbUJvZHlbMF0udHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IGRlbm9tQm9keVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbm9tTm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IGRlbm9tQm9keVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgX25vZGU7XG5cbiAgICAgIGlmIChmdW5jTmFtZSA9PT0gXCJcXFxcXFxcXGFib3ZlZnJhY1wiKSB7XG4gICAgICAgIF9ub2RlID0gdGhpcy5jYWxsRnVuY3Rpb24oZnVuY05hbWUsIFtudW1lck5vZGUsIGJvZHlbb3ZlckluZGV4XSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25vZGUgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jTmFtZSwgW251bWVyTm9kZSwgZGVub21Ob2RlXSwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW19ub2RlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJvZHk7XG4gICAgfVxuICB9IC8vIFRoZSBncmVlZGluZXNzIG9mIGEgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0XG4gIDtcblxuICAvKipcbiAgICogSGFuZGxlIGEgc3Vic2NyaXB0IG9yIHN1cGVyc2NyaXB0IHdpdGggbmljZSBlcnJvcnMuXG4gICAqL1xuICBfcHJvdG8uaGFuZGxlU3VwU3Vic2NyaXB0ID0gZnVuY3Rpb24gaGFuZGxlU3VwU3Vic2NyaXB0KG5hbWUpIHtcbiAgICB2YXIgc3ltYm9sVG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHN5bWJvbCA9IHN5bWJvbFRva2VuLnRleHQ7XG4gICAgdGhpcy5jb25zdW1lKCk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIGZhbHNlLCBQYXJzZXIuU1VQU1VCX0dSRUVESU5FU1MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTsgLy8gaWdub3JlIHNwYWNlcyBiZWZvcmUgc3VwL3N1YnNjcmlwdCBhcmd1bWVudFxuXG4gICAgaWYgKCFncm91cCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgc3ltYm9sICsgXCInXCIsIHN5bWJvbFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSB0ZXh0dWFsIGlucHV0IG9mIGFuIHVuc3VwcG9ydGVkIGNvbW1hbmQgaW50byBhIHRleHQgbm9kZVxuICAgKiBjb250YWluZWQgd2l0aGluIGEgY29sb3Igbm9kZSB3aG9zZSBjb2xvciBpcyBkZXRlcm1pbmVkIGJ5IGVycm9yQ29sb3JcbiAgICovXG4gIDtcblxuICBfcHJvdG8uZm9ybWF0VW5zdXBwb3J0ZWRDbWQgPSBmdW5jdGlvbiBmb3JtYXRVbnN1cHBvcnRlZENtZCh0ZXh0KSB7XG4gICAgdmFyIHRleHRvcmRBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0ZXh0b3JkQXJyYXkucHVzaCh7XG4gICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogdGV4dFtpXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHRleHROb2RlID0ge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBib2R5OiB0ZXh0b3JkQXJyYXlcbiAgICB9O1xuICAgIHZhciBjb2xvck5vZGUgPSB7XG4gICAgICB0eXBlOiBcImNvbG9yXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogdGhpcy5zZXR0aW5ncy5lcnJvckNvbG9yLFxuICAgICAgYm9keTogW3RleHROb2RlXVxuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yTm9kZTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgZ3JvdXAgd2l0aCBvcHRpb25hbCBzdXBlci9zdWJzY3JpcHRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUF0b20gPSBmdW5jdGlvbiBwYXJzZUF0b20oYnJlYWtPblRva2VuVGV4dCkge1xuICAgIC8vIFRoZSBib2R5IG9mIGFuIGF0b20gaXMgYW4gaW1wbGljaXQgZ3JvdXAsIHNvIHRoYXQgdGhpbmdzIGxpa2VcbiAgICAvLyBcXGxlZnQoeFxccmlnaHQpXjIgd29yayBjb3JyZWN0bHkuXG4gICAgdmFyIGJhc2UgPSB0aGlzLnBhcnNlR3JvdXAoXCJhdG9tXCIsIGZhbHNlLCBudWxsLCBicmVha09uVG9rZW5UZXh0KTsgLy8gSW4gdGV4dCBtb2RlLCB3ZSBkb24ndCBoYXZlIHN1cGVyc2NyaXB0cyBvciBzdWJzY3JpcHRzXG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIikge1xuICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfSAvLyBOb3RlIHRoYXQgYmFzZSBtYXkgYmUgZW1wdHkgKGkuZS4gbnVsbCkgYXQgdGhpcyBwb2ludC5cblxuXG4gICAgdmFyIHN1cGVyc2NyaXB0O1xuICAgIHZhciBzdWJzY3JpcHQ7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gR3VhcmFudGVlZCBpbiBtYXRoIG1vZGUsIHNvIGVhdCBhbnkgc3BhY2VzIGZpcnN0LlxuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7IC8vIExleCB0aGUgZmlyc3QgdG9rZW5cblxuICAgICAgdmFyIGxleCA9IHRoaXMuZmV0Y2goKTtcblxuICAgICAgaWYgKGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIiB8fCBsZXgudGV4dCA9PT0gXCJcXFxcbm9saW1pdHNcIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBsaW1pdCBjb250cm9sXG4gICAgICAgIHZhciBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BcIik7XG5cbiAgICAgICAgaWYgKG9wTm9kZSkge1xuICAgICAgICAgIHZhciBsaW1pdHMgPSBsZXgudGV4dCA9PT0gXCJcXFxcbGltaXRzXCI7XG4gICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IGxpbWl0cztcbiAgICAgICAgICBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcE5vZGUgPSBjaGVja05vZGVUeXBlKGJhc2UsIFwib3BlcmF0b3JuYW1lXCIpO1xuXG4gICAgICAgICAgaWYgKG9wTm9kZSAmJiBvcE5vZGUuYWx3YXlzSGFuZGxlU3VwU3ViKSB7XG4gICAgICAgICAgICB2YXIgX2xpbWl0cyA9IGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIjtcblxuICAgICAgICAgICAgb3BOb2RlLmxpbWl0cyA9IF9saW1pdHM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkxpbWl0IGNvbnRyb2xzIG11c3QgZm9sbG93IGEgbWF0aCBvcGVyYXRvclwiLCBsZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgc3VwZXJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlcnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3VwZXJzY3JpcHRcIik7XG4gICAgICB9IGVsc2UgaWYgKGxleC50ZXh0ID09PSBcIl9cIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBzdWJzY3JpcHQgc3RhcnRcbiAgICAgICAgaWYgKHN1YnNjcmlwdCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkRvdWJsZSBzdWJzY3JpcHRcIiwgbGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnNjcmlwdCA9IHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3Vic2NyaXB0XCIpO1xuICAgICAgfSBlbHNlIGlmIChsZXgudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgLy8gV2UgZ290IGEgcHJpbWVcbiAgICAgICAgaWYgKHN1cGVyc2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1cGVyc2NyaXB0XCIsIGxleCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJpbWUgPSB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIHRleHQ6IFwiXFxcXHByaW1lXCJcbiAgICAgICAgfTsgLy8gTWFueSBwcmltZXMgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIsIHNvIHdlIGhhbmRsZSB0aGlzIGhlcmVcblxuICAgICAgICB2YXIgcHJpbWVzID0gW3ByaW1lXTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7IC8vIEtlZXAgbGV4aW5nIHRva2VucyB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nIHRoYXQncyBub3QgYSBwcmltZVxuXG4gICAgICAgIHdoaWxlICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCInXCIpIHtcbiAgICAgICAgICAvLyBGb3IgZWFjaCBvbmUsIGFkZCBhbm90aGVyIHByaW1lIHRvIHRoZSBsaXN0XG4gICAgICAgICAgcHJpbWVzLnB1c2gocHJpbWUpO1xuICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB9IC8vIElmIHRoZXJlJ3MgYSBzdXBlcnNjcmlwdCBmb2xsb3dpbmcgdGhlIHByaW1lcywgY29tYmluZSB0aGF0XG4gICAgICAgIC8vIHN1cGVyc2NyaXB0IGluIHdpdGggdGhlIHByaW1lcy5cblxuXG4gICAgICAgIGlmICh0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJeXCIpIHtcbiAgICAgICAgICBwcmltZXMucHVzaCh0aGlzLmhhbmRsZVN1cFN1YnNjcmlwdChcInN1cGVyc2NyaXB0XCIpKTtcbiAgICAgICAgfSAvLyBQdXQgZXZlcnl0aGluZyBpbnRvIGFuIG9yZGdyb3VwIGFzIHRoZSBzdXBlcnNjcmlwdFxuXG5cbiAgICAgICAgc3VwZXJzY3JpcHQgPSB7XG4gICAgICAgICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBib2R5OiBwcmltZXNcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGl0IHdhc24ndCBeLCBfLCBvciAnLCBzdG9wIHBhcnNpbmcgc3VwZXIvc3Vic2NyaXB0c1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IC8vIEJhc2UgbXVzdCBiZSBzZXQgaWYgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0IGFyZSBzZXQgcGVyIGxvZ2ljIGFib3ZlLFxuICAgIC8vIGJ1dCBuZWVkIHRvIGNoZWNrIGhlcmUgZm9yIHR5cGUgY2hlY2sgdG8gcGFzcy5cblxuXG4gICAgaWYgKHN1cGVyc2NyaXB0IHx8IHN1YnNjcmlwdCkge1xuICAgICAgLy8gSWYgd2UgZ290IGVpdGhlciBhIHN1cGVyc2NyaXB0IG9yIHN1YnNjcmlwdCwgY3JlYXRlIGEgc3Vwc3ViXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1cHN1YlwiLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGJhc2U6IGJhc2UsXG4gICAgICAgIHN1cDogc3VwZXJzY3JpcHQsXG4gICAgICAgIHN1Yjogc3Vic2NyaXB0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBib2R5XG4gICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBlbnRpcmUgZnVuY3Rpb24sIGluY2x1ZGluZyBpdHMgYmFzZSBhbmQgYWxsIG9mIGl0cyBhcmd1bWVudHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRnVuY3Rpb24gPSBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKGJyZWFrT25Ub2tlblRleHQsIG5hbWUsIC8vIEZvciBlcnJvciByZXBvcnRpbmcuXG4gIGdyZWVkaW5lc3MpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGZ1bmMgPSB0b2tlbi50ZXh0O1xuICAgIHZhciBmdW5jRGF0YSA9IHNyY19mdW5jdGlvbnNbZnVuY107XG5cbiAgICBpZiAoIWZ1bmNEYXRhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnN1bWUoKTsgLy8gY29uc3VtZSBjb21tYW5kIHRva2VuXG5cbiAgICBpZiAoZ3JlZWRpbmVzcyAhPSBudWxsICYmIGZ1bmNEYXRhLmdyZWVkaW5lc3MgPD0gZ3JlZWRpbmVzcykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiR290IGZ1bmN0aW9uICdcIiArIGZ1bmMgKyBcIicgd2l0aCBubyBhcmd1bWVudHNcIiArIChuYW1lID8gXCIgYXMgXCIgKyBuYW1lIDogXCJcIiksIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJ0ZXh0XCIgJiYgIWZ1bmNEYXRhLmFsbG93ZWRJblRleHQpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkNhbid0IHVzZSBmdW5jdGlvbiAnXCIgKyBmdW5jICsgXCInIGluIHRleHQgbW9kZVwiLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IFwibWF0aFwiICYmIGZ1bmNEYXRhLmFsbG93ZWRJbk1hdGggPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJDYW4ndCB1c2UgZnVuY3Rpb24gJ1wiICsgZnVuYyArIFwiJyBpbiBtYXRoIG1vZGVcIiwgdG9rZW4pO1xuICAgIH1cblxuICAgIHZhciBfdGhpcyRwYXJzZUFyZ3VtZW50cyA9IHRoaXMucGFyc2VBcmd1bWVudHMoZnVuYywgZnVuY0RhdGEpLFxuICAgICAgICBhcmdzID0gX3RoaXMkcGFyc2VBcmd1bWVudHMuYXJncyxcbiAgICAgICAgb3B0QXJncyA9IF90aGlzJHBhcnNlQXJndW1lbnRzLm9wdEFyZ3M7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb24oZnVuYywgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDYWxsIGEgZnVuY3Rpb24gaGFuZGxlciB3aXRoIGEgc3VpdGFibGUgY29udGV4dCBhbmQgYXJndW1lbnRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jYWxsRnVuY3Rpb24gPSBmdW5jdGlvbiBjYWxsRnVuY3Rpb24obmFtZSwgYXJncywgb3B0QXJncywgdG9rZW4sIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgIGZ1bmNOYW1lOiBuYW1lLFxuICAgICAgcGFyc2VyOiB0aGlzLFxuICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgYnJlYWtPblRva2VuVGV4dDogYnJlYWtPblRva2VuVGV4dFxuICAgIH07XG4gICAgdmFyIGZ1bmMgPSBzcmNfZnVuY3Rpb25zW25hbWVdO1xuXG4gICAgaWYgKGZ1bmMgJiYgZnVuYy5oYW5kbGVyKSB7XG4gICAgICByZXR1cm4gZnVuYy5oYW5kbGVyKGNvbnRleHQsIGFyZ3MsIG9wdEFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJObyBmdW5jdGlvbiBoYW5kbGVyIGZvciBcIiArIG5hbWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2VzIHRoZSBhcmd1bWVudHMgb2YgYSBmdW5jdGlvbiBvciBlbnZpcm9ubWVudFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUFyZ3VtZW50cyA9IGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKGZ1bmMsIC8vIFNob3VsZCBsb29rIGxpa2UgXCJcXG5hbWVcIiBvciBcIlxcYmVnaW57bmFtZX1cIi5cbiAgZnVuY0RhdGEpIHtcbiAgICB2YXIgdG90YWxBcmdzID0gZnVuY0RhdGEubnVtQXJncyArIGZ1bmNEYXRhLm51bU9wdGlvbmFsQXJncztcblxuICAgIGlmICh0b3RhbEFyZ3MgPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICBvcHRBcmdzOiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgYmFzZUdyZWVkaW5lc3MgPSBmdW5jRGF0YS5ncmVlZGluZXNzO1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIG9wdEFyZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG90YWxBcmdzOyBpKyspIHtcbiAgICAgIHZhciBhcmdUeXBlID0gZnVuY0RhdGEuYXJnVHlwZXMgJiYgZnVuY0RhdGEuYXJnVHlwZXNbaV07XG4gICAgICB2YXIgaXNPcHRpb25hbCA9IGkgPCBmdW5jRGF0YS5udW1PcHRpb25hbEFyZ3M7IC8vIElnbm9yZSBzcGFjZXMgYmV0d2VlbiBhcmd1bWVudHMuICBBcyB0aGUgVGVYYm9vayBzYXlzOlxuICAgICAgLy8gXCJBZnRlciB5b3UgaGF2ZSBzYWlkIOKAmFxcZGVmXFxyb3cjMSMyey4uLn3igJksIHlvdSBhcmUgYWxsb3dlZCB0b1xuICAgICAgLy8gIHB1dCBzcGFjZXMgYmV0d2VlbiB0aGUgYXJndW1lbnRzIChlLmcuLCDigJhcXHJvdyB4IG7igJkpLCBiZWNhdXNlXG4gICAgICAvLyAgVGVYIGRvZXNu4oCZdCB1c2Ugc2luZ2xlIHNwYWNlcyBhcyB1bmRlbGltaXRlZCBhcmd1bWVudHMuXCJcblxuICAgICAgdmFyIGNvbnN1bWVTcGFjZXMgPSBpID4gMCAmJiAhaXNPcHRpb25hbCB8fCAvLyBBbHNvIGNvbnN1bWUgbGVhZGluZyBzcGFjZXMgaW4gbWF0aCBtb2RlLCBhcyBwYXJzZVN5bWJvbFxuICAgICAgLy8gd29uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlbS4gIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGhcbiAgICAgIC8vIG1hY3JvcywgZS5nLiBcXGZyYWNcXGZvb1xcZm9vIHdoZXJlIFxcZm9vIGV4cGFuZHMgdG8gYSBzcGFjZSBzeW1ib2wuXG4gICAgICAvLyBJbiBMYVRlWCwgdGhlIFxcZm9vJ3MgZ2V0IHRyZWF0ZWQgYXMgKGJsYW5rKSBhcmd1bWVudHMuXG4gICAgICAvLyBJbiBLYVRlWCwgZm9yIG5vdywgYm90aCBzcGFjZXMgd2lsbCBnZXQgY29uc3VtZWQuXG4gICAgICAvLyBUT0RPKGVkZW1haW5lKVxuICAgICAgaSA9PT0gMCAmJiAhaXNPcHRpb25hbCAmJiB0aGlzLm1vZGUgPT09IFwibWF0aFwiO1xuICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VHcm91cE9mVHlwZShcImFyZ3VtZW50IHRvICdcIiArIGZ1bmMgKyBcIidcIiwgYXJnVHlwZSwgaXNPcHRpb25hbCwgYmFzZUdyZWVkaW5lc3MsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBpZiAoIWFyZykge1xuICAgICAgICBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgIG9wdEFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIGdyb3VwIGFmdGVyICdcIiArIGZ1bmMgKyBcIidcIiwgdGhpcy5mZXRjaCgpKTtcbiAgICAgIH1cblxuICAgICAgKGlzT3B0aW9uYWwgPyBvcHRBcmdzIDogYXJncykucHVzaChhcmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhcmdzOiBhcmdzLFxuICAgICAgb3B0QXJnczogb3B0QXJnc1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGdyb3VwIHdoZW4gdGhlIG1vZGUgaXMgY2hhbmdpbmcuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlR3JvdXBPZlR5cGUgPSBmdW5jdGlvbiBwYXJzZUdyb3VwT2ZUeXBlKG5hbWUsIHR5cGUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY29sb3JcIjpcbiAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlQ29sb3JHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJzaXplXCI6XG4gICAgICAgIGlmIChjb25zdW1lU3BhY2VzKSB7XG4gICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNpemVHcm91cChvcHRpb25hbCk7XG5cbiAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmxHcm91cChvcHRpb25hbCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGNhc2UgXCJtYXRoXCI6XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHR5cGUsIGNvbnN1bWVTcGFjZXMpO1xuXG4gICAgICBjYXNlIFwiaGJveFwiOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gaGJveCBhcmd1bWVudCB0eXBlIHdyYXBzIHRoZSBhcmd1bWVudCBpbiB0aGUgZXF1aXZhbGVudCBvZlxuICAgICAgICAgIC8vIFxcaGJveCwgd2hpY2ggaXMgbGlrZSBcXHRleHQgYnV0IHN3aXRjaGluZyB0byBcXHRleHRzdHlsZSBzaXplLlxuICAgICAgICAgIHZhciBncm91cCA9IHRoaXMucGFyc2VHcm91cChuYW1lLCBvcHRpb25hbCwgZ3JlZWRpbmVzcywgdW5kZWZpbmVkLCBcInRleHRcIiwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlZEdyb3VwID0ge1xuICAgICAgICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICAgICAgICBtb2RlOiBncm91cC5tb2RlLFxuICAgICAgICAgICAgYm9keTogW2dyb3VwXSxcbiAgICAgICAgICAgIHN0eWxlOiBcInRleHRcIiAvLyBzaW11bGF0ZSBcXHRleHRzdHlsZVxuXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc3R5bGVkR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBcInJhd1wiOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCA9PT0gXCJ7XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMucGFyc2VTdHJpbmdHcm91cChcInJhd1wiLCBvcHRpb25hbCwgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwicmF3XCIsXG4gICAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICBzdHJpbmc6IHRva2VuLnRleHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkIHJhdyBncm91cFwiLCB0aGlzLmZldGNoKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwib3JpZ2luYWxcIjpcbiAgICAgIGNhc2UgbnVsbDpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gZ3JvdXAgdHlwZSBhcyBcIiArIG5hbWUsIHRoaXMuZmV0Y2goKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEaXNjYXJkIGFueSBzcGFjZSB0b2tlbnMsIGZldGNoaW5nIHRoZSBuZXh0IG5vbi1zcGFjZSB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uY29uc3VtZVNwYWNlcyA9IGZ1bmN0aW9uIGNvbnN1bWVTcGFjZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIiBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBncm91cCwgZXNzZW50aWFsbHkgcmV0dXJuaW5nIHRoZSBzdHJpbmcgZm9ybWVkIGJ5IHRoZVxuICAgKiBicmFjZS1lbmNsb3NlZCB0b2tlbnMgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVN0cmluZ0dyb3VwID0gZnVuY3Rpb24gcGFyc2VTdHJpbmdHcm91cChtb2RlTmFtZSwgLy8gVXNlZCB0byBkZXNjcmliZSB0aGUgbW9kZSBpbiBlcnJvciBtZXNzYWdlcy5cbiAgb3B0aW9uYWwsIHJhdykge1xuICAgIHZhciBncm91cEJlZ2luID0gb3B0aW9uYWwgPyBcIltcIiA6IFwie1wiO1xuICAgIHZhciBncm91cEVuZCA9IG9wdGlvbmFsID8gXCJdXCIgOiBcIn1cIjtcbiAgICB2YXIgYmVnaW5Ub2tlbiA9IHRoaXMuZmV0Y2goKTtcblxuICAgIGlmIChiZWdpblRva2VuLnRleHQgIT09IGdyb3VwQmVnaW4pIHtcbiAgICAgIGlmIChvcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmF3ICYmIGJlZ2luVG9rZW4udGV4dCAhPT0gXCJFT0ZcIiAmJiAvW157fVtcXF1dLy50ZXN0KGJlZ2luVG9rZW4udGV4dCkpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHJldHVybiBiZWdpblRva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdGhpcy5leHBlY3QoZ3JvdXBCZWdpbik7XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIG5lc3RlZCA9IDA7IC8vIGFsbG93IG5lc3RlZCBicmFjZXMgaW4gcmF3IHN0cmluZyBncm91cFxuXG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBncm91cEVuZCB8fCByYXcgJiYgbmVzdGVkID4gMCkge1xuICAgICAgc3dpdGNoIChuZXh0VG9rZW4udGV4dCkge1xuICAgICAgICBjYXNlIFwiRU9GXCI6XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgaW4gXCIgKyBtb2RlTmFtZSwgZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cikpO1xuXG4gICAgICAgIGNhc2UgZ3JvdXBCZWdpbjpcbiAgICAgICAgICBuZXN0ZWQrKztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIGdyb3VwRW5kOlxuICAgICAgICAgIG5lc3RlZC0tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGVjdChncm91cEVuZCk7XG4gICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgIHJldHVybiBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgcmVnZXgtZGVsaW1pdGVkIGdyb3VwOiB0aGUgbGFyZ2VzdCBzZXF1ZW5jZSBvZiB0b2tlbnNcbiAgICogd2hvc2UgY29uY2F0ZW5hdGVkIHN0cmluZ3MgbWF0Y2ggYHJlZ2V4YC4gUmV0dXJucyB0aGUgc3RyaW5nXG4gICAqIGZvcm1lZCBieSB0aGUgdG9rZW5zIHBsdXMgc29tZSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VSZWdleEdyb3VwID0gZnVuY3Rpb24gcGFyc2VSZWdleEdyb3VwKHJlZ2V4LCBtb2RlTmFtZSkge1xuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gXCJ0ZXh0XCI7XG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIGxhc3RUb2tlbiA9IGZpcnN0VG9rZW47XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgdmFyIG5leHRUb2tlbjtcblxuICAgIHdoaWxlICgobmV4dFRva2VuID0gdGhpcy5mZXRjaCgpKS50ZXh0ICE9PSBcIkVPRlwiICYmIHJlZ2V4LnRlc3Qoc3RyICsgbmV4dFRva2VuLnRleHQpKSB7XG4gICAgICBsYXN0VG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICBzdHIgKz0gbGFzdFRva2VuLnRleHQ7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIFwiICsgbW9kZU5hbWUgKyBcIjogJ1wiICsgZmlyc3RUb2tlbi50ZXh0ICsgXCInXCIsIGZpcnN0VG9rZW4pO1xuICAgIH1cblxuICAgIHRoaXMubW9kZSA9IG91dGVyTW9kZTtcbiAgICByZXR1cm4gZmlyc3RUb2tlbi5yYW5nZShsYXN0VG9rZW4sIHN0cik7XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGNvbG9yIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUNvbG9yR3JvdXAgPSBmdW5jdGlvbiBwYXJzZUNvbG9yR3JvdXAob3B0aW9uYWwpIHtcbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwiY29sb3JcIiwgb3B0aW9uYWwpO1xuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IC9eKCNbYS1mMC05XXszfXwjP1thLWYwLTldezZ9fFthLXpdKykkL2kuZXhlYyhyZXMudGV4dCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGNvbG9yOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBjb2xvciA9IG1hdGNoWzBdO1xuXG4gICAgaWYgKC9eWzAtOWEtZl17Nn0kL2kudGVzdChjb2xvcikpIHtcbiAgICAgIC8vIFdlIGFsbG93IGEgNi1kaWdpdCBIVE1MIGNvbG9yIHNwZWMgd2l0aG91dCBhIGxlYWRpbmcgXCIjXCIuXG4gICAgICAvLyBUaGlzIGZvbGxvd3MgdGhlIHhjb2xvciBwYWNrYWdlJ3MgSFRNTCBjb2xvciBtb2RlbC5cbiAgICAgIC8vIFByZWRlZmluZWQgY29sb3IgbmFtZXMgYXJlIGFsbCBtaXNzZWQgYnkgdGhpcyBSZWdFeCBwYXR0ZXJuLlxuICAgICAgY29sb3IgPSBcIiNcIiArIGNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbG9yLXRva2VuXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb2xvcjogY29sb3JcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBzaXplIHNwZWNpZmljYXRpb24sIGNvbnNpc3Rpbmcgb2YgbWFnbml0dWRlIGFuZCB1bml0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNpemVHcm91cCA9IGZ1bmN0aW9uIHBhcnNlU2l6ZUdyb3VwKG9wdGlvbmFsKSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgaXNCbGFuayA9IGZhbHNlO1xuXG4gICAgaWYgKCFvcHRpb25hbCAmJiB0aGlzLmZldGNoKCkudGV4dCAhPT0gXCJ7XCIpIHtcbiAgICAgIHJlcyA9IHRoaXMucGFyc2VSZWdleEdyb3VwKC9eWy0rXT8gKig/OiR8XFxkK3xcXGQrXFwuXFxkKnxcXC5cXGQqKSAqW2Etel17MCwyfSAqJC8sIFwic2l6ZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwic2l6ZVwiLCBvcHRpb25hbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9uYWwgJiYgcmVzLnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBCZWNhdXNlIHdlJ3ZlIHRlc3RlZCBmb3Igd2hhdCBpcyAhb3B0aW9uYWwsIHRoaXMgYmxvY2sgd29uJ3RcbiAgICAgIC8vIGFmZmVjdCBcXGtlcm4sIFxcaHNwYWNlLCBldGMuIEl0IHdpbGwgY2FwdHVyZSB0aGUgbWFuZGF0b3J5IGFyZ3VtZW50c1xuICAgICAgLy8gdG8gXFxnZW5mcmFjIGFuZCBcXGFib3ZlLlxuICAgICAgcmVzLnRleHQgPSBcIjBwdFwiOyAvLyBFbmFibGUgXFxhYm92ZXt9XG5cbiAgICAgIGlzQmxhbmsgPSB0cnVlOyAvLyBUaGlzIGlzIGhlcmUgc3BlY2lmaWNhbGx5IGZvciBcXGdlbmZyYWNcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2ggPSAvKFstK10/KSAqKFxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykgKihbYS16XXsyfSkvLmV4ZWMocmVzLnRleHQpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzaXplOiAnXCIgKyByZXMudGV4dCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgbnVtYmVyOiArKG1hdGNoWzFdICsgbWF0Y2hbMl0pLFxuICAgICAgLy8gc2lnbiArIG1hZ25pdHVkZSwgY2FzdCB0byBudW1iZXJcbiAgICAgIHVuaXQ6IG1hdGNoWzNdXG4gICAgfTtcblxuICAgIGlmICghdmFsaWRVbml0KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHVuaXQ6ICdcIiArIGRhdGEudW5pdCArIFwiJ1wiLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInNpemVcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgaXNCbGFuazogaXNCbGFua1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBVUkwsIGNoZWNraW5nIGVzY2FwZWQgbGV0dGVycyBhbmQgYWxsb3dlZCBwcm90b2NvbHMsXG4gICAqIGFuZCBzZXR0aW5nIHRoZSBjYXRjb2RlIG9mICUgYXMgYW4gYWN0aXZlIGNoYXJhY3RlciAoYXMgaW4gXFxoeXBlcnJlZikuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVXJsR3JvdXAgPSBmdW5jdGlvbiBwYXJzZVVybEdyb3VwKG9wdGlvbmFsLCBjb25zdW1lU3BhY2VzKSB7XG4gICAgdGhpcy5ndWxsZXQubGV4ZXIuc2V0Q2F0Y29kZShcIiVcIiwgMTMpOyAvLyBhY3RpdmUgY2hhcmFjdGVyXG5cbiAgICB2YXIgcmVzID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwidXJsXCIsIG9wdGlvbmFsLCB0cnVlKTsgLy8gZ2V0IHJhdyBzdHJpbmdcblxuICAgIHRoaXMuZ3VsbGV0LmxleGVyLnNldENhdGNvZGUoXCIlXCIsIDE0KTsgLy8gY29tbWVudCBjaGFyYWN0ZXJcblxuICAgIGlmICghcmVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGh5cGVycmVmIHBhY2thZ2UgYWxsb3dzIGJhY2tzbGFzaGVzIGFsb25lIGluIGhyZWYsIGJ1dCBkb2Vzbid0XG4gICAgLy8gZ2VuZXJhdGUgdmFsaWQgbGlua3MgaW4gc3VjaCBjYXNlczsgd2UgaW50ZXJwcmV0IHRoaXMgYXNcbiAgICAvLyBcInVuZGVmaW5lZFwiIGJlaGF2aW91ciwgYW5kIGtlZXAgdGhlbSBhcy1pcy4gU29tZSBicm93c2VyIHdpbGxcbiAgICAvLyByZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuXG5cbiAgICB2YXIgdXJsID0gcmVzLnRleHQucmVwbGFjZSgvXFxcXChbIyQlJn5fXnt9XSkvZywgJyQxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidXJsXCIsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICB1cmw6IHVybFxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIElmIGBvcHRpb25hbGAgaXMgZmFsc2Ugb3IgYWJzZW50LCB0aGlzIHBhcnNlcyBhbiBvcmRpbmFyeSBncm91cCxcbiAgICogd2hpY2ggaXMgZWl0aGVyIGEgc2luZ2xlIG51Y2xldXMgKGxpa2UgXCJ4XCIpIG9yIGFuIGV4cHJlc3Npb25cbiAgICogaW4gYnJhY2VzIChsaWtlIFwie3greX1cIikgb3IgYW4gaW1wbGljaXQgZ3JvdXAsIGEgZ3JvdXAgdGhhdCBzdGFydHNcbiAgICogYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCBlbmRzIHJpZ2h0IGJlZm9yZSBhIGhpZ2hlciBleHBsaWNpdFxuICAgKiBncm91cCBlbmRzLCBvciBhdCBFT0YuXG4gICAqIElmIGBvcHRpb25hbGAgaXMgdHJ1ZSwgaXQgcGFyc2VzIGVpdGhlciBhIGJyYWNrZXQtZGVsaW1pdGVkIGV4cHJlc3Npb25cbiAgICogKGxpa2UgXCJbeCt5XVwiKSBvciByZXR1cm5zIG51bGwgdG8gaW5kaWNhdGUgdGhlIGFic2VuY2Ugb2YgYVxuICAgKiBicmFja2V0LWVuY2xvc2VkIGdyb3VwLlxuICAgKiBJZiBgbW9kZWAgaXMgcHJlc2VudCwgc3dpdGNoZXMgdG8gdGhhdCBtb2RlIHdoaWxlIHBhcnNpbmcgdGhlIGdyb3VwLFxuICAgKiBhbmQgc3dpdGNoZXMgYmFjayBhZnRlci5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VHcm91cCA9IGZ1bmN0aW9uIHBhcnNlR3JvdXAobmFtZSwgLy8gRm9yIGVycm9yIHJlcG9ydGluZy5cbiAgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIGJyZWFrT25Ub2tlblRleHQsIG1vZGUsIGNvbnN1bWVTcGFjZXMpIHtcbiAgICAvLyBTd2l0Y2ggdG8gc3BlY2lmaWVkIG1vZGVcbiAgICB2YXIgb3V0ZXJNb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgaWYgKG1vZGUpIHtcbiAgICAgIHRoaXMuc3dpdGNoTW9kZShtb2RlKTtcbiAgICB9IC8vIENvbnN1bWUgc3BhY2VzIGlmIHJlcXVlc3RlZCwgY3J1Y2lhbGx5ICphZnRlciogd2Ugc3dpdGNoIG1vZGVzLFxuICAgIC8vIHNvIHRoYXQgdGhlIG5leHQgbm9uLXNwYWNlIHRva2VuIGlzIHBhcnNlZCBpbiB0aGUgY29ycmVjdCBtb2RlLlxuXG5cbiAgICBpZiAoY29uc3VtZVNwYWNlcykge1xuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgfSAvLyBHZXQgZmlyc3QgdG9rZW5cblxuXG4gICAgdmFyIGZpcnN0VG9rZW4gPSB0aGlzLmZldGNoKCk7XG4gICAgdmFyIHRleHQgPSBmaXJzdFRva2VuLnRleHQ7XG4gICAgdmFyIHJlc3VsdDsgLy8gVHJ5IHRvIHBhcnNlIGFuIG9wZW4gYnJhY2Ugb3IgXFxiZWdpbmdyb3VwXG5cbiAgICBpZiAob3B0aW9uYWwgPyB0ZXh0ID09PSBcIltcIiA6IHRleHQgPT09IFwie1wiIHx8IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIikge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB2YXIgZ3JvdXBFbmQgPSBQYXJzZXIuZW5kT2ZHcm91cFt0ZXh0XTsgLy8gU3RhcnQgYSBuZXcgZ3JvdXAgbmFtZXNwYWNlXG5cbiAgICAgIHRoaXMuZ3VsbGV0LmJlZ2luR3JvdXAoKTsgLy8gSWYgd2UgZ2V0IGEgYnJhY2UsIHBhcnNlIGFuIGV4cHJlc3Npb25cblxuICAgICAgdmFyIGV4cHJlc3Npb24gPSB0aGlzLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgZ3JvdXBFbmQpO1xuICAgICAgdmFyIGxhc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTsgLy8gQ2hlY2sgdGhhdCB3ZSBnb3QgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNlXG5cbiAgICAgIHRoaXMuZXhwZWN0KGdyb3VwRW5kKTsgLy8gRW5kIGdyb3VwIG5hbWVzcGFjZVxuXG4gICAgICB0aGlzLmd1bGxldC5lbmRHcm91cCgpO1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShmaXJzdFRva2VuLCBsYXN0VG9rZW4pLFxuICAgICAgICBib2R5OiBleHByZXNzaW9uLFxuICAgICAgICAvLyBBIGdyb3VwIGZvcm1lZCBieSBcXGJlZ2luZ3JvdXAuLi5cXGVuZGdyb3VwIGlzIGEgc2VtaS1zaW1wbGUgZ3JvdXBcbiAgICAgICAgLy8gd2hpY2ggZG9lc24ndCBhZmZlY3Qgc3BhY2luZyBpbiBtYXRoIG1vZGUsIGkuZS4sIGlzIHRyYW5zcGFyZW50LlxuICAgICAgICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTkzMC93aGVuLXNob3VsZC1vbmUtXG4gICAgICAgIC8vIHVzZS1iZWdpbmdyb3VwLWluc3RlYWQtb2YtYmdyb3VwXG4gICAgICAgIHNlbWlzaW1wbGU6IHRleHQgPT09IFwiXFxcXGJlZ2luZ3JvdXBcIiB8fCB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRpb25hbCkge1xuICAgICAgLy8gUmV0dXJuIG5vdGhpbmcgZm9yIGFuIG9wdGlvbmFsIGdyb3VwXG4gICAgICByZXN1bHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBleGlzdHMgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZSwgcGFyc2UgdGhlIGZ1bmN0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiBhIG51Y2xldXNcbiAgICAgIHJlc3VsdCA9IHRoaXMucGFyc2VGdW5jdGlvbihicmVha09uVG9rZW5UZXh0LCBuYW1lLCBncmVlZGluZXNzKSB8fCB0aGlzLnBhcnNlU3ltYm9sKCk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiB0ZXh0WzBdID09PSBcIlxcXFxcIiAmJiAhaW1wbGljaXRDb21tYW5kcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSkge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy50aHJvd09uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmRlZmluZWQgY29udHJvbCBzZXF1ZW5jZTogXCIgKyB0ZXh0LCBmaXJzdFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZm9ybWF0VW5zdXBwb3J0ZWRDbWQodGV4dCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfVxuICAgIH0gLy8gU3dpdGNoIG1vZGUgYmFja1xuXG5cbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zd2l0Y2hNb2RlKG91dGVyTW9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICogRm9ybSBsaWdhdHVyZS1saWtlIGNvbWJpbmF0aW9ucyBvZiBjaGFyYWN0ZXJzIGZvciB0ZXh0IG1vZGUuXG4gICAqIFRoaXMgaW5jbHVkZXMgaW5wdXRzIGxpa2UgXCItLVwiLCBcIi0tLVwiLCBcImBgXCIgYW5kIFwiJydcIi5cbiAgICogVGhlIHJlc3VsdCB3aWxsIHNpbXBseSByZXBsYWNlIG11bHRpcGxlIHRleHRvcmQgbm9kZXMgd2l0aCBhIHNpbmdsZVxuICAgKiBjaGFyYWN0ZXIgaW4gZWFjaCB2YWx1ZSBieSBhIHNpbmdsZSB0ZXh0b3JkIG5vZGUgaGF2aW5nIG11bHRpcGxlXG4gICAqIGNoYXJhY3RlcnMgaW4gaXRzIHZhbHVlLiAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIHN0aWxsIEFTQ0lJIHNvdXJjZS5cbiAgICogVGhlIGdyb3VwIHdpbGwgYmUgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZvcm1MaWdhdHVyZXMgPSBmdW5jdGlvbiBmb3JtTGlnYXR1cmVzKGdyb3VwKSB7XG4gICAgdmFyIG4gPSBncm91cC5sZW5ndGggLSAxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBhID0gZ3JvdXBbaV07IC8vICRGbG93Rml4TWU6IE5vdCBldmVyeSBub2RlIHR5cGUgaGFzIGEgYHRleHRgIHByb3BlcnR5LlxuXG4gICAgICB2YXIgdiA9IGEudGV4dDtcblxuICAgICAgaWYgKHYgPT09IFwiLVwiICYmIGdyb3VwW2kgKyAxXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICBpZiAoaSArIDEgPCBuICYmIGdyb3VwW2kgKyAyXS50ZXh0ID09PSBcIi1cIikge1xuICAgICAgICAgIGdyb3VwLnNwbGljZShpLCAzLCB7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShhLCBncm91cFtpICsgMl0pLFxuICAgICAgICAgICAgdGV4dDogXCItLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICAgIHRleHQ6IFwiLS1cIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG4gLT0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKHYgPT09IFwiJ1wiIHx8IHYgPT09IFwiYFwiKSAmJiBncm91cFtpICsgMV0udGV4dCA9PT0gdikge1xuICAgICAgICBncm91cC5zcGxpY2UoaSwgMiwge1xuICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UoYSwgZ3JvdXBbaSArIDFdKSxcbiAgICAgICAgICB0ZXh0OiB2ICsgdlxuICAgICAgICB9KTtcbiAgICAgICAgbiAtPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2UgYSBzaW5nbGUgc3ltYm9sIG91dCBvZiB0aGUgc3RyaW5nLiBIZXJlLCB3ZSBoYW5kbGUgc2luZ2xlIGNoYXJhY3RlclxuICAgKiBzeW1ib2xzIGFuZCBzcGVjaWFsIGZ1bmN0aW9ucyBsaWtlIFxcdmVyYi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTeW1ib2wgPSBmdW5jdGlvbiBwYXJzZVN5bWJvbCgpIHtcbiAgICB2YXIgbnVjbGV1cyA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgdGV4dCA9IG51Y2xldXMudGV4dDtcblxuICAgIGlmICgvXlxcXFx2ZXJiW15hLXpBLVpdLy50ZXN0KHRleHQpKSB7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIHZhciBhcmcgPSB0ZXh0LnNsaWNlKDUpO1xuICAgICAgdmFyIHN0YXIgPSBhcmcuY2hhckF0KDApID09PSBcIipcIjtcblxuICAgICAgaWYgKHN0YXIpIHtcbiAgICAgICAgYXJnID0gYXJnLnNsaWNlKDEpO1xuICAgICAgfSAvLyBMZXhlcidzIHRva2VuUmVnZXggaXMgY29uc3RydWN0ZWQgdG8gYWx3YXlzIGhhdmUgbWF0Y2hpbmdcbiAgICAgIC8vIGZpcnN0L2xhc3QgY2hhcmFjdGVycy5cblxuXG4gICAgICBpZiAoYXJnLmxlbmd0aCA8IDIgfHwgYXJnLmNoYXJBdCgwKSAhPT0gYXJnLnNsaWNlKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcdmVyYiBhc3NlcnRpb24gZmFpbGVkIC0tXFxuICAgICAgICAgICAgICAgICAgICBwbGVhc2UgcmVwb3J0IHdoYXQgaW5wdXQgY2F1c2VkIHRoaXMgYnVnXCIpO1xuICAgICAgfVxuXG4gICAgICBhcmcgPSBhcmcuc2xpY2UoMSwgLTEpOyAvLyByZW1vdmUgZmlyc3QgYW5kIGxhc3QgY2hhclxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInZlcmJcIixcbiAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgIGJvZHk6IGFyZyxcbiAgICAgICAgc3Rhcjogc3RhclxuICAgICAgfTtcbiAgICB9IC8vIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgc3ltYm9sLCBwb3NzaWJseSB3aXRoIGFjY2VudHMuXG4gICAgLy8gRmlyc3QgZXhwYW5kIGFueSBhY2NlbnRlZCBiYXNlIHN5bWJvbCBhY2NvcmRpbmcgdG8gdW5pY29kZVN5bWJvbHMuXG5cblxuICAgIGlmICh1bmljb2RlU3ltYm9scy5oYXNPd25Qcm9wZXJ0eSh0ZXh0WzBdKSAmJiAhc3JjX3N5bWJvbHNbdGhpcy5tb2RlXVt0ZXh0WzBdXSkge1xuICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBub3Qgc3RyaWN0IChYZVRlWC1jb21wYXRpYmxlKSBpbiBtYXRoIG1vZGUuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIkFjY2VudGVkIFVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHRleHQgPSB1bmljb2RlU3ltYm9sc1t0ZXh0WzBdXSArIHRleHQuc3Vic3RyKDEpO1xuICAgIH0gLy8gU3RyaXAgb2ZmIGFueSBjb21iaW5pbmcgY2hhcmFjdGVyc1xuXG5cbiAgICB2YXIgbWF0Y2ggPSBjb21iaW5pbmdEaWFjcml0aWNhbE1hcmtzRW5kUmVnZXguZXhlYyh0ZXh0KTtcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcblxuICAgICAgaWYgKHRleHQgPT09ICdpJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMTMxXCI7IC8vIGRvdGxlc3MgaSwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9IGVsc2UgaWYgKHRleHQgPT09ICdqJykge1xuICAgICAgICB0ZXh0ID0gXCJcXHUwMjM3XCI7IC8vIGRvdGxlc3MgaiwgaW4gbWF0aCBhbmQgdGV4dCBtb2RlXG4gICAgICB9XG4gICAgfSAvLyBSZWNvZ25pemUgYmFzZSBzeW1ib2xcblxuXG4gICAgdmFyIHN5bWJvbDtcblxuICAgIGlmIChzcmNfc3ltYm9sc1t0aGlzLm1vZGVdW3RleHRdKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHJpY3QgJiYgdGhpcy5tb2RlID09PSAnbWF0aCcgJiYgZXh0cmFMYXRpbi5pbmRleE9mKHRleHQpID49IDApIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmljb2RlVGV4dEluTWF0aE1vZGVcIiwgXCJMYXRpbi0xL1VuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIFwiICsgXCJtYXRoIG1vZGVcIiwgbnVjbGV1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBncm91cCA9IHNyY19zeW1ib2xzW3RoaXMubW9kZV1bdGV4dF0uZ3JvdXA7XG4gICAgICB2YXIgbG9jID0gU291cmNlTG9jYXRpb24ucmFuZ2UobnVjbGV1cyk7XG4gICAgICB2YXIgcztcblxuICAgICAgaWYgKEFUT01TLmhhc093blByb3BlcnR5KGdyb3VwKSkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIHZhciBmYW1pbHkgPSBncm91cDtcbiAgICAgICAgcyA9IHtcbiAgICAgICAgICB0eXBlOiBcImF0b21cIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgZmFtaWx5OiBmYW1pbHksXG4gICAgICAgICAgbG9jOiBsb2MsXG4gICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICBzID0ge1xuICAgICAgICAgIHR5cGU6IGdyb3VwLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IGxvYyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHN5bWJvbCA9IHM7XG4gICAgfSBlbHNlIGlmICh0ZXh0LmNoYXJDb2RlQXQoMCkgPj0gMHg4MCkge1xuICAgICAgLy8gbm8gc3ltYm9sIGZvciBlLmcuIF5cbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnN0cmljdCkge1xuICAgICAgICBpZiAoIXN1cHBvcnRlZENvZGVwb2ludCh0ZXh0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5yZXBvcnROb25zdHJpY3QoXCJ1bmtub3duU3ltYm9sXCIsIFwiVW5yZWNvZ25pemVkIFVuaWNvZGUgY2hhcmFjdGVyIFxcXCJcIiArIHRleHRbMF0gKyBcIlxcXCJcIiArIChcIiAoXCIgKyB0ZXh0LmNoYXJDb2RlQXQoMCkgKyBcIilcIiksIG51Y2xldXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIlVuaWNvZGUgdGV4dCBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIiB1c2VkIGluIG1hdGggbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBBbGwgbm9ubWF0aGVtYXRpY2FsIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgcmVuZGVyZWQgYXMgaWYgdGhleVxuICAgICAgLy8gYXJlIGluIHRleHQgbW9kZSAod3JhcHBlZCBpbiBcXHRleHQpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaXRcbiAgICAgIC8vIHRha2VzIHRvIHJlbmRlciB0aGVtIGluIExhVGVYLiAgU2V0dGluZyBgbW9kZTogdGhpcy5tb2RlYCBpc1xuICAgICAgLy8gYW5vdGhlciBuYXR1cmFsIGNob2ljZSAodGhlIHVzZXIgcmVxdWVzdGVkIG1hdGggbW9kZSksIGJ1dFxuICAgICAgLy8gdGhpcyBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCBmb3IgZ2V0Q2hhcmFjdGVyTWV0cmljcygpIHRvXG4gICAgICAvLyBkaXN0aW5ndWlzaCBVbmljb2RlIGNoYXJhY3RlcnMgd2l0aG91dCBtZXRyaWNzIGFuZCB0aG9zZSBmb3JcbiAgICAgIC8vIHdoaWNoIHdlIHdhbnQgdG8gc2ltdWxhdGUgdGhlIGxldHRlciBNLlxuXG5cbiAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gRU9GLCBeLCBfLCB7LCB9LCBldGMuXG4gICAgfVxuXG4gICAgdGhpcy5jb25zdW1lKCk7IC8vIFRyYW5zZm9ybSBjb21iaW5pbmcgY2hhcmFjdGVycyBpbnRvIGFjY2VudHNcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaFswXS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWNjZW50ID0gbWF0Y2hbMF1baV07XG5cbiAgICAgICAgaWYgKCF1bmljb2RlQWNjZW50c1thY2NlbnRdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5rbm93biBhY2NlbnQgJyBcIiArIGFjY2VudCArIFwiJ1wiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb21tYW5kID0gdW5pY29kZUFjY2VudHNbYWNjZW50XVt0aGlzLm1vZGVdO1xuXG4gICAgICAgIGlmICghY29tbWFuZCkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkFjY2VudCBcIiArIGFjY2VudCArIFwiIHVuc3VwcG9ydGVkIGluIFwiICsgdGhpcy5tb2RlICsgXCIgbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN5bWJvbCA9IHtcbiAgICAgICAgICB0eXBlOiBcImFjY2VudFwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKG51Y2xldXMpLFxuICAgICAgICAgIGxhYmVsOiBjb21tYW5kLFxuICAgICAgICAgIGlzU3RyZXRjaHk6IGZhbHNlLFxuICAgICAgICAgIGlzU2hpZnR5OiB0cnVlLFxuICAgICAgICAgIGJhc2U6IHN5bWJvbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH07XG5cbiAgcmV0dXJuIFBhcnNlcjtcbn0oKTtcblxuUGFyc2VyX1BhcnNlci5lbmRPZkV4cHJlc3Npb24gPSBbXCJ9XCIsIFwiXFxcXGVuZGdyb3VwXCIsIFwiXFxcXGVuZFwiLCBcIlxcXFxyaWdodFwiLCBcIiZcIl07XG5QYXJzZXJfUGFyc2VyLmVuZE9mR3JvdXAgPSB7XG4gIFwiW1wiOiBcIl1cIixcbiAgXCJ7XCI6IFwifVwiLFxuICBcIlxcXFxiZWdpbmdyb3VwXCI6IFwiXFxcXGVuZGdyb3VwXCJcbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBcImV4cHJlc3Npb25cIiwgd2hpY2ggaXMgYSBsaXN0IG9mIGF0b21zLlxuICAgKlxuICAgKiBgYnJlYWtPbkluZml4YDogU2hvdWxkIHRoZSBwYXJzaW5nIHN0b3Agd2hlbiB3ZSBoaXQgaW5maXggbm9kZXM/IFRoaXNcbiAgICogICAgICAgICAgICAgICAgIGhhcHBlbnMgd2hlbiBmdW5jdGlvbnMgaGF2ZSBoaWdoZXIgcHJlY2VuZGVuY2UgaGFuIGluZml4XG4gICAqICAgICAgICAgICAgICAgICBub2RlcyBpbiBpbXBsaWNpdCBwYXJzZXMuXG4gICAqXG4gICAqIGBicmVha09uVG9rZW5UZXh0YDogVGhlIHRleHQgb2YgdGhlIHRva2VuIHRoYXQgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGVuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgIHdpdGgsIG9yIGBudWxsYCBpZiBzb21ldGhpbmcgZWxzZSBzaG91bGQgZW5kIHRoZVxuICAgKiAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uXG4gICAqL1xuXG59O1xuUGFyc2VyX1BhcnNlci5TVVBTVUJfR1JFRURJTkVTUyA9IDE7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3BhcnNlVHJlZS5qc1xuLyoqXG4gKiBQcm92aWRlcyBhIHNpbmdsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBhbiBleHByZXNzaW9uIHVzaW5nIGEgUGFyc2VyXG4gKiBUT0RPKGVtaWx5KTogUmVtb3ZlIHRoaXNcbiAqL1xuXG5cblxuLyoqXG4gKiBQYXJzZXMgYW4gZXhwcmVzc2lvbiB1c2luZyBhIFBhcnNlciwgdGhlbiByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICovXG52YXIgcGFyc2VUcmVlX3BhcnNlVHJlZSA9IGZ1bmN0aW9uIHBhcnNlVHJlZSh0b1BhcnNlLCBzZXR0aW5ncykge1xuICBpZiAoISh0eXBlb2YgdG9QYXJzZSA9PT0gJ3N0cmluZycgfHwgdG9QYXJzZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLYVRlWCBjYW4gb25seSBwYXJzZSBzdHJpbmcgdHlwZWQgZXhwcmVzc2lvbicpO1xuICB9XG5cbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXJfUGFyc2VyKHRvUGFyc2UsIHNldHRpbmdzKTsgLy8gQmxhbmsgb3V0IGFueSBcXGRmQHRhZyB0byBhdm9pZCBzcHVyaW91cyBcIkR1cGxpY2F0ZSBcXHRhZ1wiIGVycm9yc1xuXG4gIGRlbGV0ZSBwYXJzZXIuZ3VsbGV0Lm1hY3Jvcy5jdXJyZW50W1wiXFxcXGRmQHRhZ1wiXTtcbiAgdmFyIHRyZWUgPSBwYXJzZXIucGFyc2UoKTsgLy8gSWYgdGhlIGlucHV0IHVzZWQgXFx0YWcsIGl0IHdpbGwgc2V0IHRoZSBcXGRmQHRhZyBtYWNybyB0byB0aGUgdGFnLlxuICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNlcGFyYXRlbHkgcGFyc2UgdGhlIHRhZyBhbmQgd3JhcCB0aGUgdHJlZS5cblxuICBpZiAocGFyc2VyLmd1bGxldC5tYWNyb3MuZ2V0KFwiXFxcXGRmQHRhZ1wiKSkge1xuICAgIGlmICghc2V0dGluZ3MuZGlzcGxheU1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFx0YWcgd29ya3Mgb25seSBpbiBkaXNwbGF5IGVxdWF0aW9uc1wiKTtcbiAgICB9XG5cbiAgICBwYXJzZXIuZ3VsbGV0LmZlZWQoXCJcXFxcZGZAdGFnXCIpO1xuICAgIHRyZWUgPSBbe1xuICAgICAgdHlwZTogXCJ0YWdcIixcbiAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgYm9keTogdHJlZSxcbiAgICAgIHRhZzogcGFyc2VyLnBhcnNlKClcbiAgICB9XTtcbiAgfVxuXG4gIHJldHVybiB0cmVlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3BhcnNlVHJlZSA9IChwYXJzZVRyZWVfcGFyc2VUcmVlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4va2F0ZXguanNcbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBLYVRlWC4gSGVyZSwgd2UgZXhwb3NlIGZ1bmN0aW9ucyBmb3JcbiAqIHJlbmRlcmluZyBleHByZXNzaW9ucyBlaXRoZXIgdG8gRE9NIG5vZGVzIG9yIHRvIG1hcmt1cCBzdHJpbmdzLlxuICpcbiAqIFdlIGFsc28gZXhwb3NlIHRoZSBQYXJzZUVycm9yIGNsYXNzIHRvIGNoZWNrIGlmIGVycm9ycyB0aHJvd24gZnJvbSBLYVRlWCBhcmVcbiAqIGVycm9ycyBpbiB0aGUgZXhwcmVzc2lvbiwgb3IgZXJyb3JzIGluIGphdmFzY3JpcHQgaGFuZGxpbmcuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHBsYWNlIHRoYXQgZXhwcmVzc2lvbiBpbiB0aGUgRE9NIG5vZGVcbiAqIGdpdmVuLlxuICovXG52YXIga2F0ZXhfcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKGV4cHJlc3Npb24sIGJhc2VOb2RlLCBvcHRpb25zKSB7XG4gIGJhc2VOb2RlLnRleHRDb250ZW50ID0gXCJcIjtcbiAgdmFyIG5vZGUgPSBrYXRleF9yZW5kZXJUb0RvbVRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykudG9Ob2RlKCk7XG4gIGJhc2VOb2RlLmFwcGVuZENoaWxkKG5vZGUpO1xufTsgLy8gS2FUZVgncyBzdHlsZXMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBxdWlya3MgbW9kZS4gUHJpbnQgb3V0IGFuIGVycm9yLCBhbmRcbi8vIGRpc2FibGUgcmVuZGVyaW5nLlxuXG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgaWYgKGRvY3VtZW50LmNvbXBhdE1vZGUgIT09IFwiQ1NTMUNvbXBhdFwiKSB7XG4gICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiV2FybmluZzogS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLiBNYWtlIHN1cmUgeW91ciBcIiArIFwid2Vic2l0ZSBoYXMgYSBzdWl0YWJsZSBkb2N0eXBlLlwiKTtcblxuICAgIGthdGV4X3JlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkthVGVYIGRvZXNuJ3Qgd29yayBpbiBxdWlya3MgbW9kZS5cIik7XG4gICAgfTtcbiAgfVxufVxuLyoqXG4gKiBQYXJzZSBhbmQgYnVpbGQgYW4gZXhwcmVzc2lvbiwgYW5kIHJldHVybiB0aGUgbWFya3VwIGZvciB0aGF0LlxuICovXG5cblxudmFyIHJlbmRlclRvU3RyaW5nID0gZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICB2YXIgbWFya3VwID0ga2F0ZXhfcmVuZGVyVG9Eb21UcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpLnRvTWFya3VwKCk7XG4gIHJldHVybiBtYXJrdXA7XG59O1xuLyoqXG4gKiBQYXJzZSBhbiBleHByZXNzaW9uIGFuZCByZXR1cm4gdGhlIHBhcnNlIHRyZWUuXG4gKi9cblxuXG52YXIga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUgPSBmdW5jdGlvbiBnZW5lcmF0ZVBhcnNlVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcbiAgcmV0dXJuIHNyY19wYXJzZVRyZWUoZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xufTtcbi8qKlxuICogSWYgdGhlIGdpdmVuIGVycm9yIGlzIGEgS2FUZVggUGFyc2VFcnJvciBhbmQgb3B0aW9ucy50aHJvd09uRXJyb3IgaXMgZmFsc2UsXG4gKiByZW5kZXJzIHRoZSBpbnZhbGlkIExhVGVYIGFzIGEgc3BhbiB3aXRoIGhvdmVyIHRpdGxlIGdpdmluZyB0aGUgS2FUZVhcbiAqIGVycm9yIG1lc3NhZ2UuICBPdGhlcndpc2UsIHNpbXBseSB0aHJvd3MgdGhlIGVycm9yLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlckVycm9yID0gZnVuY3Rpb24gcmVuZGVyRXJyb3IoZXJyb3IsIGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudGhyb3dPbkVycm9yIHx8ICEoZXJyb3IgaW5zdGFuY2VvZiBzcmNfUGFyc2VFcnJvcikpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHZhciBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wia2F0ZXgtZXJyb3JcIl0sIFtuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKGV4cHJlc3Npb24pXSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgZXJyb3IudG9TdHJpbmcoKSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJjb2xvcjpcIiArIG9wdGlvbnMuZXJyb3JDb2xvcik7XG4gIHJldHVybiBub2RlO1xufTtcbi8qKlxuICogR2VuZXJhdGVzIGFuZCByZXR1cm5zIHRoZSBrYXRleCBidWlsZCB0cmVlLiBUaGlzIGlzIHVzZWQgZm9yIGFkdmFuY2VkXG4gKiB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvRG9tVHJlZSA9IGZ1bmN0aW9uIHJlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nc19TZXR0aW5ncyhvcHRpb25zKTtcblxuICB0cnkge1xuICAgIHZhciB0cmVlID0gc3JjX3BhcnNlVHJlZShleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gICAgcmV0dXJuIGJ1aWxkVHJlZV9idWlsZFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIHJldHVybnMgdGhlIGthdGV4IGJ1aWxkIHRyZWUsIHdpdGgganVzdCBIVE1MIChubyBNYXRoTUwpLlxuICogVGhpcyBpcyB1c2VkIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgKGxpa2UgcmVuZGVyaW5nIHRvIGN1c3RvbSBvdXRwdXQpLlxuICovXG5cblxudmFyIGthdGV4X3JlbmRlclRvSFRNTFRyZWUgPSBmdW5jdGlvbiByZW5kZXJUb0hUTUxUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gbmV3IFNldHRpbmdzX1NldHRpbmdzKG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgdmFyIHRyZWUgPSBzcmNfcGFyc2VUcmVlKGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbiAgICByZXR1cm4gYnVpbGRUcmVlX2J1aWxkSFRNTFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBrYXRleF9yZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBrYXRleF8wID0gKHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgS2FUZVggdmVyc2lvblxuICAgKi9cbiAgdmVyc2lvbjogXCIwLjExLjFcIixcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MK01hdGhNTCBjb21iaW5hdGlvbiwgYW5kIGFkZHNcbiAgICogaXQgYXMgYSBjaGlsZCB0byB0aGUgc3BlY2lmaWVkIERPTSBub2RlLlxuICAgKi9cbiAgcmVuZGVyOiBrYXRleF9yZW5kZXIsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgY29tYmluYXRpb24gc3RyaW5nLFxuICAgKiBmb3Igc2VuZGluZyB0byB0aGUgY2xpZW50LlxuICAgKi9cbiAgcmVuZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLFxuXG4gIC8qKlxuICAgKiBLYVRlWCBlcnJvciwgdXN1YWxseSBkdXJpbmcgcGFyc2luZy5cbiAgICovXG4gIFBhcnNlRXJyb3I6IHNyY19QYXJzZUVycm9yLFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIExhVGVYIGludG8gS2FUZVgncyBpbnRlcm5hbCBwYXJzZSB0cmVlIHN0cnVjdHVyZSxcbiAgICogd2l0aG91dCByZW5kZXJpbmcgdG8gSFRNTCBvciBNYXRoTUwuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19wYXJzZToga2F0ZXhfZ2VuZXJhdGVQYXJzZVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCtNYXRoTUwgaW50ZXJuYWwgRE9NIHRyZWVcbiAgICogcmVwcmVzZW50YXRpb24sIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9Eb21UcmVlOiBrYXRleF9yZW5kZXJUb0RvbVRyZWUsXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGdpdmVuIExhVGVYIGludG8gYW4gSFRNTCBpbnRlcm5hbCBET00gdHJlZSByZXByZXNlbnRhdGlvbixcbiAgICogd2l0aG91dCBNYXRoTUwgYW5kIHdpdGhvdXQgZmxhdHRlbmluZyB0aGF0IHJlcHJlc2VudGF0aW9uIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciBwdWJsaWMgdXNlLlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSByZXByZXNlbnRhdGlvbiBpcyB1bnN0YWJsZSBhbmQgaXMgdmVyeSBsaWtlbHlcbiAgICogdG8gY2hhbmdlLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIF9fcmVuZGVyVG9IVE1MVHJlZToga2F0ZXhfcmVuZGVyVG9IVE1MVHJlZSxcblxuICAvKipcbiAgICogZXh0ZW5kcyBpbnRlcm5hbCBmb250IG1ldHJpY3Mgb2JqZWN0IHdpdGggYSBuZXcgb2JqZWN0XG4gICAqIGVhY2gga2V5IGluIHRoZSBuZXcgb2JqZWN0IHJlcHJlc2VudHMgYSBmb250IG5hbWVcbiAgKi9cbiAgX19zZXRGb250TWV0cmljczogc2V0Rm9udE1ldHJpY3MsXG5cbiAgLyoqXG4gICAqIGFkZHMgYSBuZXcgc3ltYm9sIHRvIGJ1aWx0aW4gc3ltYm9scyB0YWJsZVxuICAgKi9cbiAgX19kZWZpbmVTeW1ib2w6IGRlZmluZVN5bWJvbCxcblxuICAvKipcbiAgICogYWRkcyBhIG5ldyBtYWNybyB0byBidWlsdGluIG1hY3JvIGxpc3RcbiAgICovXG4gIF9fZGVmaW5lTWFjcm86IGRlZmluZU1hY3JvLFxuXG4gIC8qKlxuICAgKiBFeHBvc2UgdGhlIGRvbSB0cmVlIG5vZGUgdHlwZXMsIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIHR5cGUgY2hlY2tpbmcgbm9kZXMuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19kb21UcmVlOiB7XG4gICAgU3BhbjogZG9tVHJlZV9TcGFuLFxuICAgIEFuY2hvcjogZG9tVHJlZV9BbmNob3IsXG4gICAgU3ltYm9sTm9kZTogZG9tVHJlZV9TeW1ib2xOb2RlLFxuICAgIFN2Z05vZGU6IFN2Z05vZGUsXG4gICAgUGF0aE5vZGU6IGRvbVRyZWVfUGF0aE5vZGUsXG4gICAgTGluZU5vZGU6IExpbmVOb2RlXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9rYXRleC53ZWJwYWNrLmpzXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYnBhY2sgZW50cnkgcG9pbnQgZm9yIEthVGVYLiBBcyBFQ01BU2NyaXB0LCBmbG93WzFdIGFuZCBqZXN0WzJdXG4gKiBkb2Vzbid0IHN1cHBvcnQgQ1NTIG1vZHVsZXMgbmF0aXZlbHksIGEgc2VwYXJhdGUgZW50cnkgcG9pbnQgaXMgdXNlZCBhbmRcbiAqIGl0IGlzIG5vdCBmbG93dHlwZWQuXG4gKlxuICogWzFdIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xhbWJkYWhhbmRzL2QxOWUwZGE5NjI4NWI3NDlmMGVmXG4gKiBbMl0gaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vamVzdC9kb2NzL2VuL3dlYnBhY2suaHRtbFxuICovXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIga2F0ZXhfd2VicGFjayA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKGthdGV4XzApO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSlbXCJkZWZhdWx0XCJdO1xufSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBiYWlsXG5cbmZ1bmN0aW9uIGJhaWwoZXJyKSB7XG4gIGlmIChlcnIpIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ2lmeVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHtcbiAgLy8gTm90aGluZy5cbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAob3duLmNhbGwodmFsdWUsICdwb3NpdGlvbicpIHx8IG93bi5jYWxsKHZhbHVlLCAndHlwZScpKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3N0YXJ0JykgfHwgb3duLmNhbGwodmFsdWUsICdlbmQnKSkge1xuICAgIHJldHVybiBwb3NpdGlvbih2YWx1ZSlcbiAgfVxuXG4gIC8vIFBvaW50LlxuICBpZiAob3duLmNhbGwodmFsdWUsICdsaW5lJykgfHwgb3duLmNhbGwodmFsdWUsICdjb2x1bW4nKSkge1xuICAgIHJldHVybiBwb2ludCh2YWx1ZSlcbiAgfVxuXG4gIC8vID9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIGlmICghcG9pbnQgfHwgdHlwZW9mIHBvaW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHBvaW50ID0ge31cbiAgfVxuXG4gIHJldHVybiBpbmRleChwb2ludC5saW5lKSArICc6JyArIGluZGV4KHBvaW50LmNvbHVtbilcbn1cblxuZnVuY3Rpb24gcG9zaXRpb24ocG9zKSB7XG4gIGlmICghcG9zIHx8IHR5cGVvZiBwb3MgIT09ICdvYmplY3QnKSB7XG4gICAgcG9zID0ge31cbiAgfVxuXG4gIHJldHVybiBwb2ludChwb3Muc3RhcnQpICsgJy0nICsgcG9pbnQocG9zLmVuZClcbn1cblxuZnVuY3Rpb24gaW5kZXgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IDFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgc3RyaW5naWZ5ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZNZXNzYWdlXG5cbi8vIEluaGVyaXQgZnJvbSBgRXJyb3IjYC5cbmZ1bmN0aW9uIFZNZXNzYWdlUHJvdG90eXBlKCkge31cblZNZXNzYWdlUHJvdG90eXBlLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZVxuVk1lc3NhZ2UucHJvdG90eXBlID0gbmV3IFZNZXNzYWdlUHJvdG90eXBlKClcblxuLy8gTWVzc2FnZSBwcm9wZXJ0aWVzLlxudmFyIHByb3RvID0gVk1lc3NhZ2UucHJvdG90eXBlXG5cbnByb3RvLmZpbGUgPSAnJ1xucHJvdG8ubmFtZSA9ICcnXG5wcm90by5yZWFzb24gPSAnJ1xucHJvdG8ubWVzc2FnZSA9ICcnXG5wcm90by5zdGFjayA9ICcnXG5wcm90by5mYXRhbCA9IG51bGxcbnByb3RvLmNvbHVtbiA9IG51bGxcbnByb3RvLmxpbmUgPSBudWxsXG5cbi8vIENvbnN0cnVjdCBhIG5ldyBWTWVzc2FnZS5cbi8vXG4vLyBOb3RlOiBXZSBjYW5ub3QgaW52b2tlIGBFcnJvcmAgb24gdGhlIGNyZWF0ZWQgY29udGV4dCwgYXMgdGhhdCBhZGRzIHJlYWRvbmx5XG4vLyBgbGluZWAgYW5kIGBjb2x1bW5gIGF0dHJpYnV0ZXMgb24gU2FmYXJpIDksIHRodXMgdGhyb3dpbmcgYW5kIGZhaWxpbmcgdGhlXG4vLyBkYXRhLlxuZnVuY3Rpb24gVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKSB7XG4gIHZhciBwYXJ0c1xuICB2YXIgcmFuZ2VcbiAgdmFyIGxvY2F0aW9uXG5cbiAgaWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBvcmlnaW4gPSBwb3NpdGlvblxuICAgIHBvc2l0aW9uID0gbnVsbFxuICB9XG5cbiAgcGFydHMgPSBwYXJzZU9yaWdpbihvcmlnaW4pXG4gIHJhbmdlID0gc3RyaW5naWZ5KHBvc2l0aW9uKSB8fCAnMToxJ1xuXG4gIGxvY2F0aW9uID0ge1xuICAgIHN0YXJ0OiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfSxcbiAgICBlbmQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9XG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAocG9zaXRpb24gJiYgcG9zaXRpb24ucG9zaXRpb24pIHtcbiAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uXG4gIH1cblxuICBpZiAocG9zaXRpb24pIHtcbiAgICAvLyBQb3NpdGlvbi5cbiAgICBpZiAocG9zaXRpb24uc3RhcnQpIHtcbiAgICAgIGxvY2F0aW9uID0gcG9zaXRpb25cbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24uc3RhcnRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUG9pbnQuXG4gICAgICBsb2NhdGlvbi5zdGFydCA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlYXNvbi5zdGFjaykge1xuICAgIHRoaXMuc3RhY2sgPSByZWFzb24uc3RhY2tcbiAgICByZWFzb24gPSByZWFzb24ubWVzc2FnZVxuICB9XG5cbiAgdGhpcy5tZXNzYWdlID0gcmVhc29uXG4gIHRoaXMubmFtZSA9IHJhbmdlXG4gIHRoaXMucmVhc29uID0gcmVhc29uXG4gIHRoaXMubGluZSA9IHBvc2l0aW9uID8gcG9zaXRpb24ubGluZSA6IG51bGxcbiAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvbiA/IHBvc2l0aW9uLmNvbHVtbiA6IG51bGxcbiAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uXG4gIHRoaXMuc291cmNlID0gcGFydHNbMF1cbiAgdGhpcy5ydWxlSWQgPSBwYXJ0c1sxXVxufVxuXG5mdW5jdGlvbiBwYXJzZU9yaWdpbihvcmlnaW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtudWxsLCBudWxsXVxuICB2YXIgaW5kZXhcblxuICBpZiAodHlwZW9mIG9yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICBpbmRleCA9IG9yaWdpbi5pbmRleE9mKCc6JylcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdFsxXSA9IG9yaWdpblxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbMF0gPSBvcmlnaW4uc2xpY2UoMCwgaW5kZXgpXG4gICAgICByZXN1bHRbMV0gPSBvcmlnaW4uc2xpY2UoaW5kZXggKyAxKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsImV4cG9ydCBkZWZhdWx0ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6XG4gICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pO1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG4vLyBiYXNlZCBvZmYgaHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanNcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG52YXIgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbmlmICh0eXBlb2YgZ2xvYmFsLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbn1cbmlmICh0eXBlb2YgZ2xvYmFsLmNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbn1cblxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xuZXhwb3J0IHZhciB0aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgcGxhdGZvcm0gPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIGJyb3dzZXIgPSB0cnVlO1xuZXhwb3J0IHZhciBlbnYgPSB7fTtcbmV4cG9ydCB2YXIgYXJndiA9IFtdO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5leHBvcnQgdmFyIHZlcnNpb25zID0ge307XG5leHBvcnQgdmFyIHJlbGVhc2UgPSB7fTtcbmV4cG9ydCB2YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5leHBvcnQgdmFyIG9uID0gbm9vcDtcbmV4cG9ydCB2YXIgYWRkTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciBvbmNlID0gbm9vcDtcbmV4cG9ydCB2YXIgb2ZmID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuZXhwb3J0IHZhciBlbWl0ID0gbm9vcDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmcobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZXhwb3J0IGZ1bmN0aW9uIGNoZGlyIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1bWFzaygpIHsgcmV0dXJuIDA7IH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20va3VtYXZpcy9icm93c2VyLXByb2Nlc3MtaHJ0aW1lL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgcGVyZm9ybWFuY2UgPSBnbG9iYWwucGVyZm9ybWFuY2UgfHwge31cbnZhciBwZXJmb3JtYW5jZU5vdyA9XG4gIHBlcmZvcm1hbmNlLm5vdyAgICAgICAgfHxcbiAgcGVyZm9ybWFuY2UubW96Tm93ICAgICB8fFxuICBwZXJmb3JtYW5jZS5tc05vdyAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm9Ob3cgICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uud2Via2l0Tm93ICB8fFxuICBmdW5jdGlvbigpeyByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSB9XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZXhwb3J0IGZ1bmN0aW9uIGhydGltZShwcmV2aW91c1RpbWVzdGFtcCl7XG4gIHZhciBjbG9ja3RpbWUgPSBwZXJmb3JtYW5jZU5vdy5jYWxsKHBlcmZvcm1hbmNlKSoxZS0zXG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpXG4gIHZhciBuYW5vc2Vjb25kcyA9IE1hdGguZmxvb3IoKGNsb2NrdGltZSUxKSoxZTkpXG4gIGlmIChwcmV2aW91c1RpbWVzdGFtcCkge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMF1cbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV1cbiAgICBpZiAobmFub3NlY29uZHM8MCkge1xuICAgICAgc2Vjb25kcy0tXG4gICAgICBuYW5vc2Vjb25kcyArPSAxZTlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmV4cG9ydCBmdW5jdGlvbiB1cHRpbWUoKSB7XG4gIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gIHZhciBkaWYgPSBjdXJyZW50VGltZSAtIHN0YXJ0VGltZTtcbiAgcmV0dXJuIGRpZiAvIDEwMDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiAnLyc7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoKSB7XG4gIHZhciBpc1BhdGhBYnNvbHV0ZSA9IGlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNQYXRoQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzUGF0aEFic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzUGF0aEFic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydCBmdW5jdGlvbiBqb2luKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gbm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn1cblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb20sIHRvKSB7XG4gIGZyb20gPSByZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSByZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59XG5cbmV4cG9ydCB2YXIgc2VwID0gJy8nO1xuZXhwb3J0IHZhciBkZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgdmFyIHJlc3VsdCA9IHNwbGl0UGF0aChwYXRoKSxcbiAgICAgIHJvb3QgPSByZXN1bHRbMF0sXG4gICAgICBkaXIgPSByZXN1bHRbMV07XG5cbiAgaWYgKCFyb290ICYmICFkaXIpIHtcbiAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXJcbiAgICByZXR1cm4gJy4nO1xuICB9XG5cbiAgaWYgKGRpcikge1xuICAgIC8vIEl0IGhhcyBhIGRpcm5hbWUsIHN0cmlwIHRyYWlsaW5nIHNsYXNoXG4gICAgZGlyID0gZGlyLnN1YnN0cigwLCBkaXIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gcm9vdCArIGRpcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IHNwbGl0UGF0aChwYXRoKVsyXTtcbiAgLy8gVE9ETzogbWFrZSB0aGlzIGNvbXBhcmlzb24gY2FzZS1pbnNlbnNpdGl2ZSBvbiB3aW5kb3dzP1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZXh0bmFtZTogZXh0bmFtZSxcbiAgYmFzZW5hbWU6IGJhc2VuYW1lLFxuICBkaXJuYW1lOiBkaXJuYW1lLFxuICBzZXA6IHNlcCxcbiAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsXG4gIHJlbGF0aXZlOiByZWxhdGl2ZSxcbiAgam9pbjogam9pbixcbiAgaXNBYnNvbHV0ZTogaXNBYnNvbHV0ZSxcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIHJlc29sdmU6IHJlc29sdmVcbn07XG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJyA/XG4gICAgZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9IDpcbiAgICBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5mdW5jdGlvbiByZXBsYWNlRXh0KG5wYXRoLCBleHQpIHtcbiAgaWYgKHR5cGVvZiBucGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnBhdGg7XG4gIH1cblxuICBpZiAobnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG5wYXRoO1xuICB9XG5cbiAgdmFyIG5GaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUobnBhdGgsIHBhdGguZXh0bmFtZShucGF0aCkpICsgZXh0O1xuICByZXR1cm4gcGF0aC5qb2luKHBhdGguZGlybmFtZShucGF0aCksIG5GaWxlTmFtZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVwbGFjZUV4dDtcbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIHJlcGxhY2UgPSByZXF1aXJlKCdyZXBsYWNlLWV4dCcpXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnaXMtYnVmZmVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcbnZhciBwcm90byA9IFZGaWxlLnByb3RvdHlwZVxuXG4vLyBPcmRlciBvZiBzZXR0aW5nIChsZWFzdCBzcGVjaWZpYyB0byBtb3N0KSwgd2UgbmVlZCB0aGlzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4vLyBge3N0ZW06ICdhJywgcGF0aDogJ34vYi5qcyd9YCB3b3VsZCB0aHJvdywgYXMgYSBwYXRoIGlzIG5lZWRlZCBiZWZvcmUgYVxuLy8gc3RlbSBjYW4gYmUgc2V0LlxudmFyIG9yZGVyID0gWydoaXN0b3J5JywgJ3BhdGgnLCAnYmFzZW5hbWUnLCAnc3RlbScsICdleHRuYW1lJywgJ2Rpcm5hbWUnXVxuXG5wcm90by50b1N0cmluZyA9IHRvU3RyaW5nXG5cbi8vIEFjY2VzcyBmdWxsIHBhdGggKGB+L2luZGV4Lm1pbi5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAncGF0aCcsIHtnZXQ6IGdldFBhdGgsIHNldDogc2V0UGF0aH0pXG5cbi8vIEFjY2VzcyBwYXJlbnQgcGF0aCAoYH5gKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Rpcm5hbWUnLCB7Z2V0OiBnZXREaXJuYW1lLCBzZXQ6IHNldERpcm5hbWV9KVxuXG4vLyBBY2Nlc3MgYmFzZW5hbWUgKGBpbmRleC5taW4uanNgKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ2Jhc2VuYW1lJywge2dldDogZ2V0QmFzZW5hbWUsIHNldDogc2V0QmFzZW5hbWV9KVxuXG4vLyBBY2Nlc3MgZXh0bmFtZSAoYC5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnZXh0bmFtZScsIHtnZXQ6IGdldEV4dG5hbWUsIHNldDogc2V0RXh0bmFtZX0pXG5cbi8vIEFjY2VzcyBzdGVtIChgaW5kZXgubWluYCkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzdGVtJywge2dldDogZ2V0U3RlbSwgc2V0OiBzZXRTdGVtfSlcblxuLy8gQ29uc3RydWN0IGEgbmV3IGZpbGUuXG5mdW5jdGlvbiBWRmlsZShvcHRpb25zKSB7XG4gIHZhciBwcm9wXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IGJ1ZmZlcihvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7Y29udGVudHM6IG9wdGlvbnN9XG4gIH0gZWxzZSBpZiAoJ21lc3NhZ2UnIGluIG9wdGlvbnMgJiYgJ21lc3NhZ2VzJyBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWRmlsZSkpIHtcbiAgICByZXR1cm4gbmV3IFZGaWxlKG9wdGlvbnMpXG4gIH1cblxuICB0aGlzLmRhdGEgPSB7fVxuICB0aGlzLm1lc3NhZ2VzID0gW11cbiAgdGhpcy5oaXN0b3J5ID0gW11cbiAgdGhpcy5jd2QgPSBwcm9jZXNzLmN3ZCgpXG5cbiAgLy8gU2V0IHBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IG9yZGVyLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJvcCA9IG9yZGVyW2luZGV4XVxuXG4gICAgaWYgKG93bi5jYWxsKG9wdGlvbnMsIHByb3ApKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBub24tcGF0aCByZWxhdGVkIHByb3BlcnRpZXMuXG4gIGZvciAocHJvcCBpbiBvcHRpb25zKSB7XG4gICAgaWYgKG9yZGVyLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYXRoKCkge1xuICByZXR1cm4gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXVxufVxuXG5mdW5jdGlvbiBzZXRQYXRoKHBhdGgpIHtcbiAgYXNzZXJ0Tm9uRW1wdHkocGF0aCwgJ3BhdGgnKVxuXG4gIGlmIChwYXRoICE9PSB0aGlzLnBhdGgpIHtcbiAgICB0aGlzLmhpc3RvcnkucHVzaChwYXRoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldERpcm5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZGlybmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldERpcm5hbWUoZGlybmFtZSkge1xuICBhc3NlcnRQYXRoKHRoaXMucGF0aCwgJ2Rpcm5hbWUnKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSlcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZW5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzZXRCYXNlbmFtZShiYXNlbmFtZSkge1xuICBhc3NlcnROb25FbXB0eShiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgYXNzZXJ0UGFydChiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgYmFzZW5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldEV4dG5hbWUoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZXh0bmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldEV4dG5hbWUoZXh0bmFtZSkge1xuICB2YXIgZXh0ID0gZXh0bmFtZSB8fCAnJ1xuXG4gIGFzc2VydFBhcnQoZXh0LCAnZXh0bmFtZScpXG4gIGFzc2VydFBhdGgodGhpcy5wYXRoLCAnZXh0bmFtZScpXG5cbiAgaWYgKGV4dCkge1xuICAgIGlmIChleHQuY2hhckF0KDApICE9PSAnLicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmAnKVxuICAgIH1cblxuICAgIGlmIChleHQuaW5kZXhPZignLicsIDEpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90cycpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5wYXRoID0gcmVwbGFjZSh0aGlzLnBhdGgsIGV4dClcbn1cblxuZnVuY3Rpb24gZ2V0U3RlbSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnXG4gICAgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCwgdGhpcy5leHRuYW1lKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldFN0ZW0oc3RlbSkge1xuICBhc3NlcnROb25FbXB0eShzdGVtLCAnc3RlbScpXG4gIGFzc2VydFBhcnQoc3RlbSwgJ3N0ZW0nKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBzdGVtICsgKHRoaXMuZXh0bmFtZSB8fCAnJykpXG59XG5cbi8vIEdldCB0aGUgdmFsdWUgb2YgdGhlIGZpbGUuXG5mdW5jdGlvbiB0b1N0cmluZyhlbmNvZGluZykge1xuICB2YXIgdmFsdWUgPSB0aGlzLmNvbnRlbnRzIHx8ICcnXG4gIHJldHVybiBidWZmZXIodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoZW5jb2RpbmcpIDogU3RyaW5nKHZhbHVlKVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGEgcGF0aCAoaS5lLiwgZG9lcyBub3QgY29udGFpbiBgcGF0aC5zZXBgKS5cbmZ1bmN0aW9uIGFzc2VydFBhcnQocGFydCwgbmFtZSkge1xuICBpZiAocGFydC5pbmRleE9mKHBhdGguc2VwKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCcgKyBwYXRoLnNlcCArICdgJ1xuICAgIClcbiAgfVxufVxuXG4vLyBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGVtcHR5LlxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBwYXRoYCBleGlzdHMuXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgsIG5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5nIGAnICsgbmFtZSArICdgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vJylcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBWTWVzc2FnZSA9IHJlcXVpcmUoJ3ZmaWxlLW1lc3NhZ2UnKVxudmFyIFZGaWxlID0gcmVxdWlyZSgnLi9jb3JlLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBWRmlsZVxuXG52YXIgcHJvdG8gPSBWRmlsZS5wcm90b3R5cGVcblxucHJvdG8ubWVzc2FnZSA9IG1lc3NhZ2VcbnByb3RvLmluZm8gPSBpbmZvXG5wcm90by5mYWlsID0gZmFpbFxuXG4vLyBDcmVhdGUgYSBtZXNzYWdlIHdpdGggYHJlYXNvbmAgYXQgYHBvc2l0aW9uYC5cbi8vIFdoZW4gYW4gZXJyb3IgaXMgcGFzc2VkIGluIGFzIGByZWFzb25gLCBjb3BpZXMgdGhlIHN0YWNrLlxuZnVuY3Rpb24gbWVzc2FnZShyZWFzb24sIHBvc2l0aW9uLCBvcmlnaW4pIHtcbiAgdmFyIGZpbGVQYXRoID0gdGhpcy5wYXRoXG4gIHZhciBtZXNzYWdlID0gbmV3IFZNZXNzYWdlKHJlYXNvbiwgcG9zaXRpb24sIG9yaWdpbilcblxuICBpZiAoZmlsZVBhdGgpIHtcbiAgICBtZXNzYWdlLm5hbWUgPSBmaWxlUGF0aCArICc6JyArIG1lc3NhZ2UubmFtZVxuICAgIG1lc3NhZ2UuZmlsZSA9IGZpbGVQYXRoXG4gIH1cblxuICBtZXNzYWdlLmZhdGFsID0gZmFsc2VcblxuICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcblxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vLyBGYWlsOiBjcmVhdGVzIGEgdm1lc3NhZ2UsIGFzc29jaWF0ZXMgaXQgd2l0aCB0aGUgZmlsZSwgYW5kIHRocm93cyBpdC5cbmZ1bmN0aW9uIGZhaWwoKSB7XG4gIHZhciBtZXNzYWdlID0gdGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcblxuICBtZXNzYWdlLmZhdGFsID0gdHJ1ZVxuXG4gIHRocm93IG1lc3NhZ2Vcbn1cblxuLy8gSW5mbzogY3JlYXRlcyBhIHZtZXNzYWdlLCBhc3NvY2lhdGVzIGl0IHdpdGggdGhlIGZpbGUsIGFuZCBtYXJrcyB0aGUgZmF0YWxpdHlcbi8vIGFzIG51bGwuXG5mdW5jdGlvbiBpbmZvKCkge1xuICB2YXIgbWVzc2FnZSA9IHRoaXMubWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cbiAgbWVzc2FnZS5mYXRhbCA9IG51bGxcblxuICByZXR1cm4gbWVzc2FnZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcFxuXG4vLyBXcmFwIGBmbmAuXG4vLyBDYW4gYmUgc3luYyBvciBhc3luYzsgcmV0dXJuIGEgcHJvbWlzZSwgcmVjZWl2ZSBhIGNvbXBsZXRpb24gaGFuZGxlciwgcmV0dXJuXG4vLyBuZXcgdmFsdWVzIGFuZCBlcnJvcnMuXG5mdW5jdGlvbiB3cmFwKGZuLCBjYWxsYmFjaykge1xuICB2YXIgaW52b2tlZFxuXG4gIHJldHVybiB3cmFwcGVkXG5cbiAgZnVuY3Rpb24gd3JhcHBlZCgpIHtcbiAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApXG4gICAgdmFyIGNhbGxiYWNrID0gZm4ubGVuZ3RoID4gcGFyYW1zLmxlbmd0aFxuICAgIHZhciByZXN1bHRcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcGFyYW1zLnB1c2goZG9uZSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gZm4uYXBwbHkobnVsbCwgcGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBXZWxsLCB0aGlzIGlzIHF1aXRlIHRoZSBwaWNrbGUuXG4gICAgICAvLyBgZm5gIHJlY2VpdmVkIGEgY2FsbGJhY2sgYW5kIGludm9rZWQgaXQgKHRodXMgY29udGludWluZyB0aGUgcGlwZWxpbmUpLFxuICAgICAgLy8gYnV0IGxhdGVyIGFsc28gdGhyZXcgYW4gZXJyb3IuXG4gICAgICAvLyBXZeKAmXJlIG5vdCBhYm91dCB0byByZXN0YXJ0IHRoZSBwaXBlbGluZSBhZ2Fpbiwgc28gdGhlIG9ubHkgdGhpbmcgbGVmdFxuICAgICAgLy8gdG8gZG8gaXMgdG8gdGhyb3cgdGhlIHRoaW5nIGluc3RlYWQuXG4gICAgICBpZiAoY2FsbGJhY2sgJiYgaW52b2tlZCkge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9uZShlcnJvcilcbiAgICB9XG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQudGhlbih0aGVuLCBkb25lKVxuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBkb25lKHJlc3VsdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoZW4ocmVzdWx0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEludm9rZSBgbmV4dGAsIG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICBpZiAoIWludm9rZWQpIHtcbiAgICAgIGludm9rZWQgPSB0cnVlXG5cbiAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICAvLyBJbnZva2UgYGRvbmVgIHdpdGggb25lIHZhbHVlLlxuICAvLyBUcmFja3MgaWYgYW4gZXJyb3IgaXMgcGFzc2VkLCB0b28uXG4gIGZ1bmN0aW9uIHRoZW4odmFsdWUpIHtcbiAgICBkb25lKG51bGwsIHZhbHVlKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdyYXAgPSByZXF1aXJlKCcuL3dyYXAuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyb3VnaFxuXG50cm91Z2gud3JhcCA9IHdyYXBcblxudmFyIHNsaWNlID0gW10uc2xpY2VcblxuLy8gQ3JlYXRlIG5ldyBtaWRkbGV3YXJlLlxuZnVuY3Rpb24gdHJvdWdoKCkge1xuICB2YXIgZm5zID0gW11cbiAgdmFyIG1pZGRsZXdhcmUgPSB7fVxuXG4gIG1pZGRsZXdhcmUucnVuID0gcnVuXG4gIG1pZGRsZXdhcmUudXNlID0gdXNlXG5cbiAgcmV0dXJuIG1pZGRsZXdhcmVcblxuICAvLyBSdW4gYGZuc2AuICBMYXN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb21wbGV0aW9uIGhhbmRsZXIuXG4gIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBpbnB1dCA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSlcbiAgICB2YXIgZG9uZSA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV1cblxuICAgIGlmICh0eXBlb2YgZG9uZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgJyArIGRvbmUpXG4gICAgfVxuXG4gICAgbmV4dC5hcHBseShudWxsLCBbbnVsbF0uY29uY2F0KGlucHV0KSlcblxuICAgIC8vIFJ1biB0aGUgbmV4dCBgZm5gLCBpZiBhbnkuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgIHZhciBmbiA9IGZuc1srK2luZGV4XVxuICAgICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKVxuICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtcy5zbGljZSgxKVxuICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aFxuICAgICAgdmFyIHBvcyA9IC0xXG5cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZG9uZShlcnIpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDb3B5IG5vbi1udWxseSBpbnB1dCBpbnRvIHZhbHVlcy5cbiAgICAgIHdoaWxlICgrK3BvcyA8IGxlbmd0aCkge1xuICAgICAgICBpZiAodmFsdWVzW3Bvc10gPT09IG51bGwgfHwgdmFsdWVzW3Bvc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlc1twb3NdID0gaW5wdXRbcG9zXVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlucHV0ID0gdmFsdWVzXG5cbiAgICAgIC8vIE5leHQgb3IgZG9uZS5cbiAgICAgIGlmIChmbikge1xuICAgICAgICB3cmFwKGZuLCBuZXh0KS5hcHBseShudWxsLCBpbnB1dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUuYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChpbnB1dCkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGBmbmAgdG8gdGhlIGxpc3QuXG4gIGZ1bmN0aW9uIHVzZShmbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYGZuYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgJyArIGZuKVxuICAgIH1cblxuICAgIGZucy5wdXNoKGZuKVxuXG4gICAgcmV0dXJuIG1pZGRsZXdhcmVcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlID0+IHtcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcblx0cmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBleHRlbmQgPSByZXF1aXJlKCdleHRlbmQnKVxudmFyIGJhaWwgPSByZXF1aXJlKCdiYWlsJylcbnZhciB2ZmlsZSA9IHJlcXVpcmUoJ3ZmaWxlJylcbnZhciB0cm91Z2ggPSByZXF1aXJlKCd0cm91Z2gnKVxudmFyIHBsYWluID0gcmVxdWlyZSgnaXMtcGxhaW4tb2JqJylcblxuLy8gRXhwb3NlIGEgZnJvemVuIHByb2Nlc3Nvci5cbm1vZHVsZS5leHBvcnRzID0gdW5pZmllZCgpLmZyZWV6ZSgpXG5cbnZhciBzbGljZSA9IFtdLnNsaWNlXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gUHJvY2VzcyBwaXBlbGluZS5cbnZhciBwaXBlbGluZSA9IHRyb3VnaCgpXG4gIC51c2UocGlwZWxpbmVQYXJzZSlcbiAgLnVzZShwaXBlbGluZVJ1bilcbiAgLnVzZShwaXBlbGluZVN0cmluZ2lmeSlcblxuZnVuY3Rpb24gcGlwZWxpbmVQYXJzZShwLCBjdHgpIHtcbiAgY3R4LnRyZWUgPSBwLnBhcnNlKGN0eC5maWxlKVxufVxuXG5mdW5jdGlvbiBwaXBlbGluZVJ1bihwLCBjdHgsIG5leHQpIHtcbiAgcC5ydW4oY3R4LnRyZWUsIGN0eC5maWxlLCBkb25lKVxuXG4gIGZ1bmN0aW9uIGRvbmUoZXJyLCB0cmVlLCBmaWxlKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgbmV4dChlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC50cmVlID0gdHJlZVxuICAgICAgY3R4LmZpbGUgPSBmaWxlXG4gICAgICBuZXh0KClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGlwZWxpbmVTdHJpbmdpZnkocCwgY3R4KSB7XG4gIGN0eC5maWxlLmNvbnRlbnRzID0gcC5zdHJpbmdpZnkoY3R4LnRyZWUsIGN0eC5maWxlKVxufVxuXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGZpcnN0IHByb2Nlc3Nvci5cbmZ1bmN0aW9uIHVuaWZpZWQoKSB7XG4gIHZhciBhdHRhY2hlcnMgPSBbXVxuICB2YXIgdHJhbnNmb3JtZXJzID0gdHJvdWdoKClcbiAgdmFyIG5hbWVzcGFjZSA9IHt9XG4gIHZhciBmcm96ZW4gPSBmYWxzZVxuICB2YXIgZnJlZXplSW5kZXggPSAtMVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgcHJvY2Vzc29yLmRhdGEgPSBkYXRhXG5cbiAgLy8gTG9jay5cbiAgcHJvY2Vzc29yLmZyZWV6ZSA9IGZyZWV6ZVxuXG4gIC8vIFBsdWdpbnMuXG4gIHByb2Nlc3Nvci5hdHRhY2hlcnMgPSBhdHRhY2hlcnNcbiAgcHJvY2Vzc29yLnVzZSA9IHVzZVxuXG4gIC8vIEFQSS5cbiAgcHJvY2Vzc29yLnBhcnNlID0gcGFyc2VcbiAgcHJvY2Vzc29yLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVxuICBwcm9jZXNzb3IucnVuID0gcnVuXG4gIHByb2Nlc3Nvci5ydW5TeW5jID0gcnVuU3luY1xuICBwcm9jZXNzb3IucHJvY2VzcyA9IHByb2Nlc3NcbiAgcHJvY2Vzc29yLnByb2Nlc3NTeW5jID0gcHJvY2Vzc1N5bmNcblxuICAvLyBFeHBvc2UuXG4gIHJldHVybiBwcm9jZXNzb3JcblxuICAvLyBDcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IgaW4gdGhlIGN1cnJlbnQgc2NvcGUuXG4gIGZ1bmN0aW9uIHByb2Nlc3NvcigpIHtcbiAgICB2YXIgZGVzdGluYXRpb24gPSB1bmlmaWVkKClcbiAgICB2YXIgbGVuZ3RoID0gYXR0YWNoZXJzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgZGVzdGluYXRpb24udXNlLmFwcGx5KG51bGwsIGF0dGFjaGVyc1tpbmRleF0pXG4gICAgfVxuXG4gICAgZGVzdGluYXRpb24uZGF0YShleHRlbmQodHJ1ZSwge30sIG5hbWVzcGFjZSkpXG5cbiAgICByZXR1cm4gZGVzdGluYXRpb25cbiAgfVxuXG4gIC8vIEZyZWV6ZTogdXNlZCB0byBzaWduYWwgYSBwcm9jZXNzb3IgdGhhdCBoYXMgZmluaXNoZWQgY29uZmlndXJhdGlvbi5cbiAgLy9cbiAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdW5pZmllZCBpdHNlbGY6IGl04oCZcyBmcm96ZW4uXG4gIC8vIFBsdWdpbnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byBpdC5cbiAgLy8gUmF0aGVyLCBpdCBzaG91bGQgYmUgZXh0ZW5kZWQsIGJ5IGludm9raW5nIGl0LCBiZWZvcmUgbW9kaWZ5aW5nIGl0LlxuICAvL1xuICAvLyBJbiBlc3NlbmNlLCBhbHdheXMgaW52b2tlIHRoaXMgd2hlbiBleHBvcnRpbmcgYSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIGZyZWV6ZSgpIHtcbiAgICB2YXIgdmFsdWVzXG4gICAgdmFyIHBsdWdpblxuICAgIHZhciBvcHRpb25zXG4gICAgdmFyIHRyYW5zZm9ybWVyXG5cbiAgICBpZiAoZnJvemVuKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgd2hpbGUgKCsrZnJlZXplSW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZXMgPSBhdHRhY2hlcnNbZnJlZXplSW5kZXhdXG4gICAgICBwbHVnaW4gPSB2YWx1ZXNbMF1cbiAgICAgIG9wdGlvbnMgPSB2YWx1ZXNbMV1cbiAgICAgIHRyYW5zZm9ybWVyID0gbnVsbFxuXG4gICAgICBpZiAob3B0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMgPT09IHRydWUpIHtcbiAgICAgICAgdmFsdWVzWzFdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIHRyYW5zZm9ybWVyID0gcGx1Z2luLmFwcGx5KHByb2Nlc3NvciwgdmFsdWVzLnNsaWNlKDEpKVxuXG4gICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybWVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyYW5zZm9ybWVycy51c2UodHJhbnNmb3JtZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnJvemVuID0gdHJ1ZVxuICAgIGZyZWV6ZUluZGV4ID0gSW5maW5pdHlcblxuICAgIHJldHVybiBwcm9jZXNzb3JcbiAgfVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgLy8gR2V0dGVyIC8gc2V0dGVyIGZvciBwcm9jZXNzb3Itc3BlY2lmaWMgaW5mb3JtdGlvbi5cbiAgZnVuY3Rpb24gZGF0YShrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTZXQgYGtleWAuXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcblxuICAgICAgICBuYW1lc3BhY2Vba2V5XSA9IHZhbHVlXG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgICAgfVxuXG4gICAgICAvLyBHZXQgYGtleWAuXG4gICAgICByZXR1cm4gKG93bi5jYWxsKG5hbWVzcGFjZSwga2V5KSAmJiBuYW1lc3BhY2Vba2V5XSkgfHwgbnVsbFxuICAgIH1cblxuICAgIC8vIFNldCBzcGFjZS5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcbiAgICAgIG5hbWVzcGFjZSA9IGtleVxuICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgIH1cblxuICAgIC8vIEdldCBzcGFjZS5cbiAgICByZXR1cm4gbmFtZXNwYWNlXG4gIH1cblxuICAvLyBQbHVnaW4gbWFuYWdlbWVudC5cbiAgLy9cbiAgLy8gUGFzcyBpdDpcbiAgLy8gKiAgIGFuIGF0dGFjaGVyIGFuZCBvcHRpb25zLFxuICAvLyAqICAgYSBwcmVzZXQsXG4gIC8vICogICBhIGxpc3Qgb2YgcHJlc2V0cywgYXR0YWNoZXJzLCBhbmQgYXJndW1lbnRzIChsaXN0IG9mIGF0dGFjaGVycyBhbmRcbiAgLy8gICAgIG9wdGlvbnMpLlxuICBmdW5jdGlvbiB1c2UodmFsdWUpIHtcbiAgICB2YXIgc2V0dGluZ3NcblxuICAgIGFzc2VydFVuZnJvemVuKCd1c2UnLCBmcm96ZW4pXG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRW1wdHkuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFkZFBsdWdpbi5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAgICAgYWRkTGlzdCh2YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgbmFtZXNwYWNlLnNldHRpbmdzID0gZXh0ZW5kKG5hbWVzcGFjZS5zZXR0aW5ncyB8fCB7fSwgc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuXG4gICAgZnVuY3Rpb24gYWRkUHJlc2V0KHJlc3VsdCkge1xuICAgICAgYWRkTGlzdChyZXN1bHQucGx1Z2lucylcblxuICAgICAgaWYgKHJlc3VsdC5zZXR0aW5ncykge1xuICAgICAgICBzZXR0aW5ncyA9IGV4dGVuZChzZXR0aW5ncyB8fCB7fSwgcmVzdWx0LnNldHRpbmdzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhZGRQbHVnaW4odmFsdWUpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKCdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgICAgICAgYWRkUGx1Z2luLmFwcGx5KG51bGwsIHZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZExpc3QocGx1Z2lucykge1xuICAgICAgdmFyIGxlbmd0aFxuICAgICAgdmFyIGluZGV4XG5cbiAgICAgIGlmIChwbHVnaW5zID09PSBudWxsIHx8IHBsdWdpbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbnMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHBsdWdpbnMpIHtcbiAgICAgICAgbGVuZ3RoID0gcGx1Z2lucy5sZW5ndGhcbiAgICAgICAgaW5kZXggPSAtMVxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYWRkKHBsdWdpbnNbaW5kZXhdKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYCcgKyBwbHVnaW5zICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4sIHZhbHVlKSB7XG4gICAgICB2YXIgZW50cnkgPSBmaW5kKHBsdWdpbilcblxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChwbGFpbihlbnRyeVsxXSkgJiYgcGxhaW4odmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBleHRlbmQoZW50cnlbMV0sIHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0YWNoZXJzLnB1c2goc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmQocGx1Z2luKSB7XG4gICAgdmFyIGxlbmd0aCA9IGF0dGFjaGVycy5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAtMVxuICAgIHZhciBlbnRyeVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gYXR0YWNoZXJzW2luZGV4XVxuXG4gICAgICBpZiAoZW50cnlbMF0gPT09IHBsdWdpbikge1xuICAgICAgICByZXR1cm4gZW50cnlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZSBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZSByZXByZXNlbnRhdGlvbikgaW50byBhIHVuaXN0IG5vZGUgdXNpbmdcbiAgLy8gdGhlIGBQYXJzZXJgIG9uIHRoZSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIHBhcnNlKGRvYykge1xuICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuICAgIHZhciBQYXJzZXJcblxuICAgIGZyZWV6ZSgpXG4gICAgUGFyc2VyID0gcHJvY2Vzc29yLlBhcnNlclxuICAgIGFzc2VydFBhcnNlcigncGFyc2UnLCBQYXJzZXIpXG5cbiAgICBpZiAobmV3YWJsZShQYXJzZXIsICdwYXJzZScpKSB7XG4gICAgICByZXR1cm4gbmV3IFBhcnNlcihTdHJpbmcoZmlsZSksIGZpbGUpLnBhcnNlKClcbiAgICB9XG5cbiAgICByZXR1cm4gUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvLyBSdW4gdHJhbnNmb3JtcyBvbiBhIHVuaXN0IG5vZGUgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIChpbiBzdHJpbmcgb3JcbiAgLy8gdmZpbGUgcmVwcmVzZW50YXRpb24pLCBhc3luYy5cbiAgZnVuY3Rpb24gcnVuKG5vZGUsIGZpbGUsIGNiKSB7XG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuICAgIGZyZWV6ZSgpXG5cbiAgICBpZiAoIWNiICYmIHR5cGVvZiBmaWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYiA9IGZpbGVcbiAgICAgIGZpbGUgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFjYikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNiKVxuXG4gICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0cmFuc2Zvcm1lcnMucnVuKG5vZGUsIHZmaWxlKGZpbGUpLCBkb25lKVxuXG4gICAgICBmdW5jdGlvbiBkb25lKGVyciwgdHJlZSwgZmlsZSkge1xuICAgICAgICB0cmVlID0gdHJlZSB8fCBub2RlXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKHRyZWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgdHJlZSwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biB0cmFuc2Zvcm1zIG9uIGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvclxuICAvLyB2ZmlsZSByZXByZXNlbnRhdGlvbiksIHN5bmMuXG4gIGZ1bmN0aW9uIHJ1blN5bmMobm9kZSwgZmlsZSkge1xuICAgIHZhciBjb21wbGV0ZSA9IGZhbHNlXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgcnVuKG5vZGUsIGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdydW5TeW5jJywgJ3J1bicsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIsIHRyZWUpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYmFpbChlcnIpXG4gICAgICByZXN1bHQgPSB0cmVlXG4gICAgfVxuICB9XG5cbiAgLy8gU3RyaW5naWZ5IGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvciB2ZmlsZVxuICAvLyByZXByZXNlbnRhdGlvbikgaW50byBhIHN0cmluZyB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLlxuICBmdW5jdGlvbiBzdHJpbmdpZnkobm9kZSwgZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgdmFyIENvbXBpbGVyXG5cbiAgICBmcmVlemUoKVxuICAgIENvbXBpbGVyID0gcHJvY2Vzc29yLkNvbXBpbGVyXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3N0cmluZ2lmeScsIENvbXBpbGVyKVxuICAgIGFzc2VydE5vZGUobm9kZSlcblxuICAgIGlmIChuZXdhYmxlKENvbXBpbGVyLCAnY29tcGlsZScpKSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVyKG5vZGUsIGZpbGUpLmNvbXBpbGUoKVxuICAgIH1cblxuICAgIHJldHVybiBDb21waWxlcihub2RlLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8vIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIHZmaWxlIHJlcHJlc2VudGF0aW9uKSBpbnRvIGEgdW5pc3Qgbm9kZSB1c2luZ1xuICAvLyB0aGUgYFBhcnNlcmAgb24gdGhlIHByb2Nlc3NvciwgdGhlbiBydW4gdHJhbnNmb3JtcyBvbiB0aGF0IG5vZGUsIGFuZFxuICAvLyBjb21waWxlIHRoZSByZXN1bHRpbmcgbm9kZSB1c2luZyB0aGUgYENvbXBpbGVyYCBvbiB0aGUgcHJvY2Vzc29yLCBhbmRcbiAgLy8gc3RvcmUgdGhhdCByZXN1bHQgb24gdGhlIHZmaWxlLlxuICBmdW5jdGlvbiBwcm9jZXNzKGRvYywgY2IpIHtcbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2VzcycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuQ29tcGlsZXIpXG5cbiAgICBpZiAoIWNiKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2IpXG5cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgICBwaXBlbGluZS5ydW4ocHJvY2Vzc29yLCB7ZmlsZTogZmlsZX0sIGRvbmUpXG5cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKGZpbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IobnVsbCwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgdGhlIGdpdmVuIGRvY3VtZW50IChpbiBzdHJpbmcgb3IgdmZpbGUgcmVwcmVzZW50YXRpb24pLCBzeW5jLlxuICBmdW5jdGlvbiBwcm9jZXNzU3luYyhkb2MpIHtcbiAgICB2YXIgY29tcGxldGUgPSBmYWxzZVxuICAgIHZhciBmaWxlXG5cbiAgICBmcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2Vzc1N5bmMnLCBwcm9jZXNzb3IuUGFyc2VyKVxuICAgIGFzc2VydENvbXBpbGVyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5Db21waWxlcilcbiAgICBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgcHJvY2VzcyhmaWxlLCBkb25lKVxuXG4gICAgYXNzZXJ0RG9uZSgncHJvY2Vzc1N5bmMnLCAncHJvY2VzcycsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIGZpbGVcblxuICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWVcbiAgICAgIGJhaWwoZXJyKVxuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGEgY29uc3RydWN0b3IuXG5mdW5jdGlvbiBuZXdhYmxlKHZhbHVlLCBuYW1lKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdmFsdWUucHJvdG90eXBlICYmXG4gICAgLy8gQSBmdW5jdGlvbiB3aXRoIGtleXMgaW4gaXRzIHByb3RvdHlwZSBpcyBwcm9iYWJseSBhIGNvbnN0cnVjdG9yLlxuICAgIC8vIENsYXNzZXPigJkgcHJvdG90eXBlIG1ldGhvZHMgYXJlIG5vdCBlbnVtZXJhYmxlLCBzbyB3ZSBjaGVjayBpZiBzb21lIHZhbHVlXG4gICAgLy8gZXhpc3RzIGluIHRoZSBwcm90b3R5cGUuXG4gICAgKGtleXModmFsdWUucHJvdG90eXBlKSB8fCBuYW1lIGluIHZhbHVlLnByb3RvdHlwZSlcbiAgKVxufVxuXG4vLyBDaGVjayBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCB3aXRoIGtleXMuXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIHZhciBrZXlcbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEFzc2VydCBhIHBhcnNlciBpcyBhdmFpbGFibGUuXG5mdW5jdGlvbiBhc3NlcnRQYXJzZXIobmFtZSwgUGFyc2VyKSB7XG4gIGlmICh0eXBlb2YgUGFyc2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgUGFyc2VyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGEgY29tcGlsZXIgaXMgYXZhaWxhYmxlLlxuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZXIobmFtZSwgQ29tcGlsZXIpIHtcbiAgaWYgKHR5cGVvZiBDb21waWxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYENvbXBpbGVyYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IHRoZSBwcm9jZXNzb3IgaXMgbm90IGZyb3plbi5cbmZ1bmN0aW9uIGFzc2VydFVuZnJvemVuKG5hbWUsIGZyb3plbikge1xuICBpZiAoZnJvemVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBpbnZva2UgYCcgK1xuICAgICAgICBuYW1lICtcbiAgICAgICAgJ2Agb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxcbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGludm9raW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIGBwcm9jZXNzb3JgLidcbiAgICApXG4gIH1cbn1cblxuLy8gQXNzZXJ0IGBub2RlYCBpcyBhIHVuaXN0IG5vZGUuXG5mdW5jdGlvbiBhc3NlcnROb2RlKG5vZGUpIHtcbiAgaWYgKCFub2RlIHx8IHR5cGVvZiBub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBnb3QgYCcgKyBub2RlICsgJ2AnKVxuICB9XG59XG5cbi8vIEFzc2VydCB0aGF0IGBjb21wbGV0ZWAgaXMgYHRydWVgLlxuZnVuY3Rpb24gYXNzZXJ0RG9uZShuYW1lLCBhc3luY05hbWUsIGNvbXBsZXRlKSB7XG4gIGlmICghY29tcGxldGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgZmluaXNoZWQgYXN5bmMuIFVzZSBgJyArIGFzeW5jTmFtZSArICdgIGluc3RlYWQnXG4gICAgKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGZyb21QYXJzZTUgPSByZXF1aXJlKCdoYXN0LXV0aWwtZnJvbS1wYXJzZTUnKVxudmFyIFBhcnNlcjUgPSByZXF1aXJlKCdwYXJzZTUvbGliL3BhcnNlcicpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMuanNvbicpXG5cbnZhciBiYXNlID0gJ2h0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzZS1lcnJvci0nXG5cbnZhciBmYXRhbGl0aWVzID0gezI6IHRydWUsIDE6IGZhbHNlLCAwOiBudWxsfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0geHRlbmQob3B0aW9ucywgdGhpcy5kYXRhKCdzZXR0aW5ncycpKVxuICB2YXIgcG9zaXRpb24gPSBzZXR0aW5ncy5wb3NpdGlvblxuXG4gIHBvc2l0aW9uID0gdHlwZW9mIHBvc2l0aW9uID09PSAnYm9vbGVhbicgPyBwb3NpdGlvbiA6IHRydWVcblxuICB0aGlzLlBhcnNlciA9IHBhcnNlclxuXG4gIGZ1bmN0aW9uIHBhcnNlcihkb2MsIGZpbGUpIHtcbiAgICB2YXIgZm4gPSBzZXR0aW5ncy5mcmFnbWVudCA/ICdwYXJzZUZyYWdtZW50JyA6ICdwYXJzZSdcbiAgICB2YXIgb25QYXJzZUVycm9yID0gc2V0dGluZ3MuZW1pdFBhcnNlRXJyb3JzID8gb25lcnJvciA6IG51bGxcbiAgICB2YXIgcGFyc2U1ID0gbmV3IFBhcnNlcjUoe1xuICAgICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogcG9zaXRpb24sXG4gICAgICBvblBhcnNlRXJyb3I6IG9uUGFyc2VFcnJvcixcbiAgICAgIHNjcmlwdGluZ0VuYWJsZWQ6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVybiBmcm9tUGFyc2U1KHBhcnNlNVtmbl0oZG9jKSwge1xuICAgICAgc3BhY2U6IHNldHRpbmdzLnNwYWNlLFxuICAgICAgZmlsZTogZmlsZSxcbiAgICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2VcbiAgICB9KVxuXG4gICAgZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICAgIHZhciBjb2RlID0gZXJyLmNvZGVcbiAgICAgIHZhciBuYW1lID0gY2FtZWxjYXNlKGNvZGUpXG4gICAgICB2YXIgc2V0dGluZyA9IHNldHRpbmdzW25hbWVdXG4gICAgICB2YXIgY29uZmlnID0gc2V0dGluZyA9PT0gdW5kZWZpbmVkIHx8IHNldHRpbmcgPT09IG51bGwgPyB0cnVlIDogc2V0dGluZ1xuICAgICAgdmFyIGxldmVsID0gdHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicgPyBjb25maWcgOiBjb25maWcgPyAxIDogMFxuICAgICAgdmFyIHN0YXJ0ID0ge1xuICAgICAgICBsaW5lOiBlcnIuc3RhcnRMaW5lLFxuICAgICAgICBjb2x1bW46IGVyci5zdGFydENvbCxcbiAgICAgICAgb2Zmc2V0OiBlcnIuc3RhcnRPZmZzZXRcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSB7bGluZTogZXJyLmVuZExpbmUsIGNvbHVtbjogZXJyLmVuZENvbCwgb2Zmc2V0OiBlcnIuZW5kT2Zmc2V0fVxuICAgICAgdmFyIGluZm9cbiAgICAgIHZhciBtZXNzYWdlXG5cbiAgICAgIGlmIChsZXZlbCkge1xuICAgICAgICBpbmZvID0gZXJyb3JzW25hbWVdIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHtcbiAgICAgICAgICByZWFzb246ICcnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgbWVzc2FnZSA9IGZpbGUubWVzc2FnZShmb3JtYXQoaW5mby5yZWFzb24pLCB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH0pXG4gICAgICAgIG1lc3NhZ2Uuc291cmNlID0gJ3BhcnNlLWVycm9yJ1xuICAgICAgICBtZXNzYWdlLnJ1bGVJZCA9IGNvZGVcbiAgICAgICAgbWVzc2FnZS5mYXRhbCA9IGZhdGFsaXRpZXNbbGV2ZWxdXG4gICAgICAgIG1lc3NhZ2Uubm90ZSA9IGZvcm1hdChpbmZvLmRlc2NyaXB0aW9uKVxuICAgICAgICBtZXNzYWdlLnVybCA9IGluZm8udXJsID09PSBmYWxzZSA/IG51bGwgOiBiYXNlICsgY29kZVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmb3JtYXQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyVjKD86LShcXGQrKSk/L2csIGNoYXIpLnJlcGxhY2UoLyV4L2csIGVuY29kZWRDaGFyKVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGFyKCQwLCAkMSkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gJDEgPyAtcGFyc2VJbnQoJDEsIDEwKSA6IDBcbiAgICAgICAgdmFyIGNoYXIgPSBkb2MuY2hhckF0KGVyci5zdGFydE9mZnNldCArIG9mZnNldClcbiAgICAgICAgcmV0dXJuIGNoYXIgPT09ICdgJyA/ICdgIGAgYCcgOiBjaGFyXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGVuY29kZWRDaGFyKCkge1xuICAgICAgICB2YXIgY2hhciA9IGRvY1xuICAgICAgICAgIC5jaGFyQ29kZUF0KGVyci5zdGFydE9mZnNldClcbiAgICAgICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAgICAgLnRvVXBwZXJDYXNlKClcblxuICAgICAgICByZXR1cm4gJzB4JyArIGNoYXJcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtZWxjYXNlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8tW2Etel0vZywgcmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VyKCQwKSB7XG4gIHJldHVybiAkMC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbGVtZW50XG5cbi8vIENoZWNrIGlmIGlmIGBub2RlYCBpcyBhbiBgZWxlbWVudGAgYW5kLCBpZiBgdGFnTmFtZXNgIGlzIGdpdmVuLCBgbm9kZWBcbi8vIG1hdGNoZXMgdGhlbSBgdGFnTmFtZXNgLlxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUsIHRhZ05hbWVzKSB7XG4gIHZhciBuYW1lXG5cbiAgaWYgKFxuICAgICEoXG4gICAgICB0YWdOYW1lcyA9PT0gbnVsbCB8fFxuICAgICAgdGFnTmFtZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJyB8fFxuICAgICAgKHR5cGVvZiB0YWdOYW1lcyA9PT0gJ29iamVjdCcgJiYgdGFnTmFtZXMubGVuZ3RoICE9PSAwKVxuICAgIClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0V4cGVjdGVkIGBzdHJpbmdgIG9yIGBBcnJheS48c3RyaW5nPmAgZm9yIGB0YWdOYW1lc2AsIG5vdCBgJyArXG4gICAgICAgIHRhZ05hbWVzICtcbiAgICAgICAgJ2AnXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgICFub2RlIHx8XG4gICAgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8XG4gICAgbm9kZS50eXBlICE9PSAnZWxlbWVudCcgfHxcbiAgICB0eXBlb2Ygbm9kZS50YWdOYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0YWdOYW1lcyA9PT0gbnVsbCB8fCB0YWdOYW1lcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5hbWUgPSBub2RlLnRhZ05hbWVcblxuICBpZiAodHlwZW9mIHRhZ05hbWVzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBuYW1lID09PSB0YWdOYW1lc1xuICB9XG5cbiAgcmV0dXJuIHRhZ05hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRBZnRlclxuXG5mdW5jdGlvbiBmaW5kQWZ0ZXIocGFyZW50LCBpbmRleCwgdGVzdCkge1xuICB2YXIgaXMgPSBjb252ZXJ0KHRlc3QpXG4gIHZhciBjaGlsZHJlblxuICB2YXIgY2hpbGRcbiAgdmFyIGxlbmd0aFxuXG4gIGlmICghcGFyZW50IHx8ICFwYXJlbnQudHlwZSB8fCAhcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwYXJlbnQgbm9kZScpXG4gIH1cblxuICBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlblxuICBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICBpZiAoaW5kZXggJiYgaW5kZXgudHlwZSkge1xuICAgIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZihpbmRleClcbiAgfVxuXG4gIGlmIChpc05hTihpbmRleCkgfHwgaW5kZXggPCAwIHx8IGluZGV4ID09PSBJbmZpbml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4IG9yIGNoaWxkIG5vZGUnKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuW2luZGV4XVxuXG4gICAgaWYgKGlzKGNoaWxkLCBpbmRleCwgcGFyZW50KSkge1xuICAgICAgcmV0dXJuIGNoaWxkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgaXMgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgZmluZEFmdGVyID0gcmVxdWlyZSgndW5pc3QtdXRpbC1maW5kLWFmdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0b1RleHRcblxuLy8gTWV0aG9kcy5cbnZhciBtaW4gPSBNYXRoLm1pblxudmFyIG1heCA9IE1hdGgubWF4XG5cbi8vIFdoaXRlIHNwYWNlIGNvZGVzLlxudmFyIHRhYiA9IDB4OVxudmFyIHNwYWNlID0gMHgyMFxudmFyIHplcm9XaWR0aFNwYWNlID0gMHgyMDBiXG5cbi8vIEJpZGkgY29udHJvbCBjaGFyYWN0ZXJzIGNvZGVzLlxudmFyIGFsbSA9IDB4NjFjXG52YXIgbHRyID0gMHgyMDBlXG52YXIgcnRsID0gMHgyMDBmXG52YXIgbHJlID0gMHgyMDJhXG52YXIgcmxlID0gMHgyMDJiXG52YXIgcGRmID0gMHgyMDJjXG52YXIgbHJvID0gMHgyMDJkXG52YXIgcmxvID0gMHgyMDJlXG52YXIgbHJpID0gMHgyMDY2XG52YXIgcmxpID0gMHgyMDY3XG52YXIgZnNpID0gMHgyMDY4XG52YXIgcGRpID0gMHgyMDY5XG5cbi8vIENoYXJhY3RlcnMuXG52YXIgdGFiQ2hhciA9ICdcXHQnXG52YXIgbGluZUZlZWRDaGFyID0gJ1xcbidcbnZhciBzcGFjZUNoYXIgPSAnICdcblxuLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIGBpbm5lclRleHRgIGdldHRlcjpcbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtaW5uZXJ0ZXh0LWlkbC1hdHRyaWJ1dGU+XG4vLyBOb3RlIHRoYXQgd2UgYWN0IGFzIGlmIGBub2RlYCBpcyBiZWluZyByZW5kZXJlZCwgYW5kIGFzIGlmIHdl4oCZcmUgYVxuLy8gQ1NTLXN1cHBvcnRpbmcgdXNlciBhZ2VudC5cbmZ1bmN0aW9uIHRvVGV4dChub2RlKSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgW11cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgYmxvY2sgPSBibG9ja09yQ2FwdGlvbihub2RlKVxuICB2YXIgd2hpdGVTcGFjZSA9IGluZmVyV2hpdGVTcGFjZShub2RlLCB7fSlcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdHNcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIHJlc3VsdFxuICB2YXIgdmFsdWVcbiAgdmFyIGNvdW50XG5cbiAgLy8gVHJlYXQgYHRleHRgIGFuZCBgY29tbWVudGAgYXMgaGF2aW5nIG5vcm1hbCB3aGl0ZS1zcGFjZS5cbiAgLy8gVGhpcyBkZXZpYXRlcyBmcm9tIHRoZSBzcGVjIGFzIGluIHRoZSBET00gdGhlIG5vZGXigJlzIGAuZGF0YWAgaGFzIHRvIGJlXG4gIC8vIHJldHVybmVkLlxuICAvLyBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vIEFsbCBvdGhlciBub2RlcyBhcmUgbGF0ZXIgaGFuZGxlZCBhcyBpZiB0aGV5IGFyZSBgZWxlbWVudGBzIChzbyB0aGVcbiAgLy8gYWxnb3JpdGhtIGFsc28gd29ya3Mgb24gYSBgcm9vdGApLlxuICAvLyBOb2RlcyB3aXRob3V0IGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIGEgdm9pZCBlbGVtZW50LCBzbyBgZG9jdHlwZWAgaXMgdGh1c1xuICAvLyBpZ25vcmVkLlxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcgfHwgbm9kZS50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICByZXR1cm4gY29sbGVjdFRleHQobm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiB0cnVlLFxuICAgICAgYnJlYWtBZnRlcjogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvLyAxLiAgSWYgdGhpcyBlbGVtZW50IGlzIG5vdCBiZWluZyByZW5kZXJlZCwgb3IgaWYgdGhlIHVzZXIgYWdlbnQgaXMgYVxuICAvLyAgICAgbm9uLUNTUyB1c2VyIGFnZW50LCB0aGVuIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGV4dENvbnRlbnQgSURMXG4gIC8vICAgICBhdHRyaWJ1dGUgb24gdGhpcyBlbGVtZW50LlxuICAvL1xuICAvLyAgICAgTm90ZTogd2XigJlyZSBub3Qgc3VwcG9ydGluZyBzdHlsZXNoZWV0cyBzbyB3ZeKAmXJlIGFjdGluZyBhcyBpZiB0aGUgbm9kZVxuICAvLyAgICAgaXMgcmVuZGVyZWQuXG4gIC8vXG4gIC8vICAgICBJZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yIHVzZSBgaGFzdC11dGlsLXRvLXN0cmluZ2AuXG4gIC8vICAgICBJbXBvcnRhbnQ6IHdl4oCZbGwgaGF2ZSB0byBhY2NvdW50IGZvciB0aGlzIGxhdGVyIHRob3VnaC5cblxuICAvLyAyLiAgTGV0IHJlc3VsdHMgYmUgYSBuZXcgZW1wdHkgbGlzdC5cbiAgcmVzdWx0cyA9IFtdXG5cbiAgLy8gMy4gIEZvciBlYWNoIGNoaWxkIG5vZGUgbm9kZSBvZiB0aGlzIGVsZW1lbnQ6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gMy4xLiBMZXQgY3VycmVudCBiZSB0aGUgbGlzdCByZXN1bHRpbmcgaW4gcnVubmluZyB0aGUgaW5uZXIgdGV4dFxuICAgIC8vICAgICAgY29sbGVjdGlvbiBzdGVwcyB3aXRoIG5vZGUuXG4gICAgLy8gICAgICBFYWNoIGl0ZW0gaW4gcmVzdWx0cyB3aWxsIGVpdGhlciBiZSBhIEphdmFTY3JpcHQgc3RyaW5nIG9yIGFcbiAgICAvLyAgICAgIHBvc2l0aXZlIGludGVnZXIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudCkuXG4gICAgY3VycmVudCA9IGlubmVyVGV4dENvbGxlY3Rpb24oY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBpbmRleCA9PT0gMCA/IGJsb2NrIDogZmFsc2UsXG4gICAgICBicmVha0FmdGVyOiBpbmRleCA9PT0gbGVuZ3RoIC0gMSA/IGJsb2NrIDogaXMoY2hpbGRyZW5baW5kZXggKyAxXSwgJ2JyJylcbiAgICB9KVxuXG4gICAgLy8gMy4yLiBGb3IgZWFjaCBpdGVtIGl0ZW0gaW4gY3VycmVudCwgYXBwZW5kIGl0ZW0gdG8gcmVzdWx0cy5cbiAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoY3VycmVudClcbiAgfVxuXG4gIC8vIDQuICBSZW1vdmUgYW55IGl0ZW1zIGZyb20gcmVzdWx0cyB0aGF0IGFyZSB0aGUgZW1wdHkgc3RyaW5nLlxuICAvLyA1LiAgUmVtb3ZlIGFueSBydW5zIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnQgaXRlbXMgYXQgdGhlXG4gIC8vICAgICBzdGFydCBvciBlbmQgb2YgcmVzdWx0cy5cbiAgLy8gNi4gIFJlcGxhY2UgZWFjaCByZW1haW5pbmcgcnVuIG9mIGNvbnNlY3V0aXZlIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnRcbiAgLy8gICAgIGl0ZW1zIHdpdGggYSBzdHJpbmcgY29uc2lzdGluZyBvZiBhcyBtYW55IFUrMDAwQSBMSU5FIEZFRUQgKExGKVxuICAvLyAgICAgY2hhcmFjdGVycyBhcyB0aGUgbWF4aW11bSBvZiB0aGUgdmFsdWVzIGluIHRoZSByZXF1aXJlZCBsaW5lIGJyZWFrXG4gIC8vICAgICBjb3VudCBpdGVtcy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSByZXN1bHRzLmxlbmd0aFxuICByZXN1bHQgPSBbXVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSByZXN1bHRzW2luZGV4XVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChjb3VudCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gY291bnQpIHtcbiAgICAgICAgY291bnQgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgIT09ICcnKSB7XG4gICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocmVwZWF0KGxpbmVGZWVkQ2hhciwgY291bnQpKVxuICAgICAgfVxuXG4gICAgICBjb3VudCA9IDBcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIC8vIDcuICBSZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyBpdGVtcyBpbiByZXN1bHRzLlxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG5cbi8vIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNpbm5lci10ZXh0LWNvbGxlY3Rpb24tc3RlcHM+XG5mdW5jdGlvbiBpbm5lclRleHRDb2xsZWN0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgcmV0dXJuIGNvbGxlY3RFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgb3B0aW9ucy53aGl0ZVNwYWNlID09PSAnbm9ybWFsJ1xuICAgICAgICA/IGNvbGxlY3RUZXh0KG5vZGUsIG9wdGlvbnMpXG4gICAgICAgIDogY29sbGVjdFByZVRleHQobm9kZSwgb3B0aW9ucylcbiAgICBdXG4gIH1cblxuICByZXR1cm4gW11cbn1cblxuLy8gQ29sbGVjdCBhbiBlbGVtZW50LlxuZnVuY3Rpb24gY29sbGVjdEVsZW1lbnQobm9kZSwgaW5kZXgsIHBhcmVudCwgb3B0aW9ucykge1xuICAvLyBGaXJzdCB3ZSBpbmZlciB0aGUgYHdoaXRlLXNwYWNlYCBwcm9wZXJ0eS5cbiAgdmFyIHdoaXRlU3BhY2UgPSBpbmZlcldoaXRlU3BhY2Uobm9kZSwgb3B0aW9ucylcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBbXVxuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIHZhciBvZmZzZXQgPSAtMVxuICB2YXIgaXRlbXMgPSBbXVxuICB2YXIgY3VycmVudFxuICB2YXIgcHJlZml4XG4gIHZhciBzdWZmaXhcblxuICAvLyBXZeKAmXJlIGlnbm9yaW5nIHBvaW50IDMsIGFuZCBleGl0aW5nIHdpdGhvdXQgYW55IGNvbnRlbnQgaGVyZSwgYmVjYXVzZSB3ZVxuICAvLyBkZXZpYXRlZCBmcm9tIHRoZSBzcGVjIGluIGB0b1RleHRgIGF0IHN0ZXAgMy5cbiAgaWYgKG5vdFJlbmRlcmVkKG5vZGUpKSB7XG4gICAgcmV0dXJuIGl0ZW1zXG4gIH1cblxuICAvLyBOb3RlOiB3ZSBmaXJzdCBkZXRlY3QgaWYgdGhlcmUgaXMgZ29pbmcgdG8gYmUgYSBicmVhayBiZWZvcmUgb3IgYWZ0ZXIgdGhlXG4gIC8vIGNvbnRlbnRzLCBhcyB0aGF0IGNoYW5nZXMgdGhlIHdoaXRlLXNwYWNlIGhhbmRsaW5nLlxuXG4gIC8vIDIuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgdmlzaWJpbGl0eWAgaXMgbm90IGB2aXNpYmxlYCwgdGhlbiByZXR1cm5cbiAgLy8gICAgIGl0ZW1zLlxuICAvL1xuICAvLyAgICAgTm90ZTogSWdub3JlZCwgYXMgZXZlcnl0aGluZyBpcyB2aXNpYmxlIGJ5IGRlZmF1bHQgdXNlciBhZ2VudCBzdHlsZXMuXG5cbiAgLy8gMy4gIElmIG5vZGUgaXMgbm90IGJlaW5nIHJlbmRlcmVkLCB0aGVuIHJldHVybiBpdGVtcy4gWy4uLl1cbiAgLy9cbiAgLy8gICAgIE5vdGU6IFdlIGFscmVhZHkgZGlkIHRoaXMgYWJvdmUuXG5cbiAgLy8gU2VlIGBjb2xsZWN0VGV4dGAgZm9yIHN0ZXAgNC5cblxuICAvLyA1LiAgSWYgbm9kZSBpcyBhIGA8YnI+YCBlbGVtZW50LCB0aGVuIGFwcGVuZCBhIHN0cmluZyBjb250YWluaW5nIGEgc2luZ2xlXG4gIC8vICAgICBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRvIGl0ZW1zLlxuICBpZiAoaXMobm9kZSwgJ2JyJykpIHtcbiAgICBzdWZmaXggPSBsaW5lRmVlZENoYXJcbiAgfVxuXG4gIC8vIDcuICBJZiBub2Rl4oCZcyBjb21wdXRlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYHRhYmxlLXJvd2AsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLXJvd2AgYm94IG9mIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGB0YWJsZWBcbiAgLy8gICAgIGJveCwgdGhlbiBhcHBlbmQgYSBzdHJpbmcgY29udGFpbmluZyBhIHNpbmdsZSBVKzAwMEEgTElORSBGRUVEIChMRilcbiAgLy8gICAgIGNoYXJhY3RlciB0byBpdGVtcy5cbiAgLy9cbiAgLy8gICAgIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RhYmxlcy0yPlxuICAvLyAgICAgTm90ZTogbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFzIHRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgaW1wbGljaXRcbiAgLy8gICAgIHJvd3MuXG4gIGVsc2UgaWYgKHJvdyhub2RlKSAmJiBmaW5kQWZ0ZXIocGFyZW50LCBub2RlLCByb3cpKSB7XG4gICAgc3VmZml4ID0gbGluZUZlZWRDaGFyXG4gIH1cblxuICAvLyA4LiAgSWYgbm9kZSBpcyBhIGA8cD5gIGVsZW1lbnQsIHRoZW4gYXBwZW5kIDIgKGEgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudClcbiAgLy8gICAgIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVtcy5cbiAgZWxzZSBpZiAoaXMobm9kZSwgJ3AnKSkge1xuICAgIHByZWZpeCA9IDJcbiAgICBzdWZmaXggPSAyXG4gIH1cblxuICAvLyA5LiAgSWYgbm9kZeKAmXMgdXNlZCB2YWx1ZSBvZiBgZGlzcGxheWAgaXMgYmxvY2stbGV2ZWwgb3IgYHRhYmxlLWNhcHRpb25gLFxuICAvLyAgICAgdGhlbiBhcHBlbmQgMSAoYSByZXF1aXJlZCBsaW5lIGJyZWFrIGNvdW50KSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2ZcbiAgLy8gICAgIGl0ZW1zLlxuICBlbHNlIGlmIChibG9ja09yQ2FwdGlvbihub2RlKSkge1xuICAgIHByZWZpeCA9IDFcbiAgICBzdWZmaXggPSAxXG4gIH1cblxuICAvLyAxLiAgTGV0IGl0ZW1zIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgaW5uZXIgdGV4dCBjb2xsZWN0aW9uIHN0ZXBzIHdpdGhcbiAgLy8gICAgIGVhY2ggY2hpbGQgbm9kZSBvZiBub2RlIGluIHRyZWUgb3JkZXIsIGFuZCB0aGVuIGNvbmNhdGVuYXRpbmcgdGhlXG4gIC8vICAgICByZXN1bHRzIHRvIGEgc2luZ2xlIGxpc3QuXG4gIHdoaWxlICgrK29mZnNldCA8IGxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSBpbm5lclRleHRDb2xsZWN0aW9uKGNoaWxkcmVuW29mZnNldF0sIG9mZnNldCwgbm9kZSwge1xuICAgICAgd2hpdGVTcGFjZTogd2hpdGVTcGFjZSxcbiAgICAgIGJyZWFrQmVmb3JlOiBvZmZzZXQgPT09IDAgPyBwcmVmaXggOiBmYWxzZSxcbiAgICAgIGJyZWFrQWZ0ZXI6XG4gICAgICAgIG9mZnNldCA9PT0gbGVuZ3RoIC0gMSA/IHN1ZmZpeCA6IGlzKGNoaWxkcmVuW29mZnNldCArIDFdLCAnYnInKVxuICAgIH0pXG5cbiAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChjdXJyZW50KVxuICB9XG5cbiAgLy8gNi4gIElmIG5vZGXigJlzIGNvbXB1dGVkIHZhbHVlIG9mIGBkaXNwbGF5YCBpcyBgdGFibGUtY2VsbGAsIGFuZCBub2Rl4oCZcyBDU1NcbiAgLy8gICAgIGJveCBpcyBub3QgdGhlIGxhc3QgYHRhYmxlLWNlbGxgIGJveCBvZiBpdHMgZW5jbG9zaW5nIGB0YWJsZS1yb3dgIGJveCxcbiAgLy8gICAgIHRoZW4gYXBwZW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBzaW5nbGUgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OXG4gIC8vICAgICAodGFiKSBjaGFyYWN0ZXIgdG8gaXRlbXMuXG4gIC8vXG4gIC8vICAgICBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0YWJsZXMtMj5cbiAgaWYgKGNlbGwobm9kZSkgJiYgZmluZEFmdGVyKHBhcmVudCwgbm9kZSwgY2VsbCkpIHtcbiAgICBpdGVtcy5wdXNoKHRhYkNoYXIpXG4gIH1cblxuICAvLyBBZGQgdGhlIHByZS0gYW5kIHN1ZmZpeC5cbiAgaWYgKHByZWZpeCkge1xuICAgIGl0ZW1zLnVuc2hpZnQocHJlZml4KVxuICB9XG5cbiAgaWYgKHN1ZmZpeCkge1xuICAgIGl0ZW1zLnB1c2goc3VmZml4KVxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zXG59XG5cbi8vIDQuICBJZiBub2RlIGlzIGEgVGV4dCBub2RlLCB0aGVuIGZvciBlYWNoIENTUyB0ZXh0IGJveCBwcm9kdWNlZCBieSBub2RlLFxuLy8gICAgIGluIGNvbnRlbnQgb3JkZXIsIGNvbXB1dGUgdGhlIHRleHQgb2YgdGhlIGJveCBhZnRlciBhcHBsaWNhdGlvbiBvZiB0aGVcbi8vICAgICBDU1MgYHdoaXRlLXNwYWNlYCBwcm9jZXNzaW5nIHJ1bGVzIGFuZCBgdGV4dC10cmFuc2Zvcm1gIHJ1bGVzLCBzZXRcbi8vICAgICBpdGVtcyB0byB0aGUgbGlzdCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZ3MsIGFuZCByZXR1cm4gaXRlbXMuXG4vLyAgICAgVGhlIENTUyBgd2hpdGUtc3BhY2VgIHByb2Nlc3NpbmcgcnVsZXMgYXJlIHNsaWdodGx5IG1vZGlmaWVkOlxuLy8gICAgIGNvbGxhcHNpYmxlIHNwYWNlcyBhdCB0aGUgZW5kIG9mIGxpbmVzIGFyZSBhbHdheXMgY29sbGFwc2VkLCBidXQgdGhleVxuLy8gICAgIGFyZSBvbmx5IHJlbW92ZWQgaWYgdGhlIGxpbmUgaXMgdGhlIGxhc3QgbGluZSBvZiB0aGUgYmxvY2ssIG9yIGl0IGVuZHNcbi8vICAgICB3aXRoIGEgYnIgZWxlbWVudC5cbi8vICAgICBTb2Z0IGh5cGhlbnMgc2hvdWxkIGJlIHByZXNlcnZlZC5cbi8vXG4vLyAgICAgTm90ZTogU2VlIGBjb2xsZWN0VGV4dGAgYW5kIGBjb2xsZWN0UHJlVGV4dGAuXG4vLyAgICAgTm90ZTogd2UgZG9u4oCZdCBkZWFsIHdpdGggYHRleHQtdHJhbnNmb3JtYCwgbm8gZWxlbWVudCBoYXMgdGhhdCBieVxuLy8gICAgIGRlZmF1bHQuXG4vL1xuLy8gU2VlOiA8aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyN3aGl0ZS1zcGFjZS1waGFzZS0xPlxuZnVuY3Rpb24gY29sbGVjdFRleHQobm9kZSwgb3B0aW9ucykge1xuICB2YXIgYnJlYWtCZWZvcmUgPSBvcHRpb25zLmJyZWFrQmVmb3JlXG4gIHZhciBicmVha0FmdGVyID0gb3B0aW9ucy5icmVha0FmdGVyXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhub2RlLnZhbHVlKVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBsaW5lcyA9IFtdXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgbGluZVN0YXJ0XG4gIHZhciBsaW5lRW5kXG4gIHZhciBsaW5lXG4gIHZhciBuZXh0TGluZVxuICB2YXIgcXVldWVcblxuICBsaW5lU3RhcnQgPSAwXG4gIGxpbmVFbmQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkQ2hhcilcbiAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuXG4gIHdoaWxlIChsaW5lRW5kICE9PSAtMSkge1xuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpXG5cbiAgICAvLyBbLi4uXSBpZ25vcmluZyBiaWRpIGZvcm1hdHRpbmcgY2hhcmFjdGVycyAoY2hhcmFjdGVycyB3aXRoIHRoZVxuICAgIC8vIEJpZGlfQ29udHJvbCBwcm9wZXJ0eSBbVUFYOV0pIGFzIGlmIHRoZXkgd2VyZSBub3QgdGhlcmUuXG4gICAgbGluZSA9IHJlbW92ZUJpZGlDb250cm9sQ2hhcmFjdGVycyhsaW5lKVxuXG4gICAgLy8gQW55IHNlcXVlbmNlIG9mIGNvbGxhcHNpYmxlIHNwYWNlcyBhbmQgdGFicyBpbW1lZGlhdGVseSBwcmVjZWRpbmcgb3JcbiAgICAvLyBmb2xsb3dpbmcgYSBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgbGluZSA9IHRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMobGluZSwgYnJlYWtCZWZvcmUsIGJyZWFrQWZ0ZXIpXG5cbiAgICAvLyBBZGQgdGhlIGxpbmUuXG4gICAgbGluZXMucHVzaChsaW5lKVxuXG4gICAgLy8gU3RvcC5cbiAgICBpZiAobGluZUVuZCA9PT0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVTdGFydCA9IGxpbmVFbmQgKyAxXG4gICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBsaW5lU3RhcnQpXG4gICAgbGluZUVuZCA9IGxpbmVFbmQgPT09IC0xID8gdmFsdWUubGVuZ3RoIDogbGluZUVuZFxuICB9XG5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBsaW5lcy5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuXG4gIC8vIENvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWtzIGFyZSB0cmFuc2Zvcm1lZCBmb3IgcmVuZGVyaW5nIGFjY29yZGluZyB0byB0aGVcbiAgLy8gc2VnbWVudCBicmVhayB0cmFuc2Zvcm1hdGlvbiBydWxlcy5cbiAgLy8gU28gaGVyZSB3ZSBqdW1wIHRvIDQuMS4yIG9mIFtDU1NURVhUXTpcbiAgLy8gQW55IGNvbGxhcHNpYmxlIHNlZ21lbnQgYnJlYWsgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbiAgLy8gc2VnbWVudCBicmVhayBpcyByZW1vdmVkXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgbGluZSA9IGxpbmVzW2luZGV4XVxuICAgIG5leHRMaW5lID0gbGluZXNbaW5kZXggKyAxXSB8fCAnJ1xuXG4gICAgLy8gKiAgIElmIHRoZSBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIG9yIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzZWdtZW50XG4gICAgLy8gICAgIGJyZWFrIGlzIHRoZSB6ZXJvLXdpZHRoIHNwYWNlIGNoYXJhY3RlciAoVSsyMDBCKSwgdGhlbiB0aGUgYnJlYWsgaXNcbiAgICAvLyAgICAgcmVtb3ZlZCwgbGVhdmluZyBiZWhpbmQgdGhlIHplcm8td2lkdGggc3BhY2UuXG4gICAgaWYgKFxuICAgICAgbGluZS5jaGFyQ29kZUF0KGxpbmUubGVuZ3RoIC0gMSkgPT09IHplcm9XaWR0aFNwYWNlIHx8XG4gICAgICBuZXh0TGluZS5jaGFyQ29kZUF0KDApID09PSB6ZXJvV2lkdGhTcGFjZVxuICAgICkge1xuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgaWYgdGhlIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgW1VBWDExXSBvZiBib3RoIHRoZVxuICAgIC8vICAgICBjaGFyYWN0ZXIgYmVmb3JlIGFuZCBhZnRlciB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yXG4gICAgLy8gICAgIEhhbGZ3aWR0aCAobm90IEFtYmlndW91cyksIGFuZCBuZWl0aGVyIHNpZGUgaXMgSGFuZ3VsLCB0aGVuIHRoZVxuICAgIC8vICAgICBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyAgICAgTm90ZTogaWdub3JlZC5cblxuICAgIC8vICogICBPdGhlcndpc2UsIGlmIHRoZSB3cml0aW5nIHN5c3RlbSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBDaGluZXNlLFxuICAgIC8vICAgICBKYXBhbmVzZSwgb3IgWWksIGFuZCB0aGUgY2hhcmFjdGVyIGJlZm9yZSBvciBhZnRlciB0aGUgc2VnbWVudCBicmVha1xuICAgIC8vICAgICBpcyBwdW5jdHVhdGlvbiBvciBhIHN5bWJvbCAoVW5pY29kZSBnZW5lcmFsIGNhdGVnb3J5IFAqIG9yIFMqKSBhbmRcbiAgICAvLyAgICAgaGFzIGFuIEVhc3QgQXNpYW4gV2lkdGggcHJvcGVydHkgb2YgQW1iaWd1b3VzLCBhbmQgdGhlIGNoYXJhY3RlciBvblxuICAgIC8vICAgICB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VnbWVudCBicmVhayBpcyBGdWxsd2lkdGgsIFdpZGUsIG9yIEhhbGZ3aWR0aCxcbiAgICAvLyAgICAgYW5kIG5vdCBIYW5ndWwsIHRoZW4gdGhlIHNlZ21lbnQgYnJlYWsgaXMgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vICAgICBOb3RlOiBpZ25vcmVkLlxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgdGhlIHNlZ21lbnQgYnJlYWsgaXMgY29udmVydGVkIHRvIGEgc3BhY2UgKFUrMDAyMCkuXG4gICAgaWYgKGxpbmUpIHtcbiAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICByZXN1bHQucHVzaChxdWV1ZSlcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIHF1ZXVlID0gc3BhY2VDaGFyXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0UHJlVGV4dChub2RlKSB7XG4gIHJldHVybiBTdHJpbmcobm9kZS52YWx1ZSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQmlkaUNvbnRyb2xDaGFyYWN0ZXJzKHZhbHVlKSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHJlc3VsdCA9ICcnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXNCaWRpQ29udHJvbENoYXJhY3Rlcih2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gMy4gIEV2ZXJ5IGNvbGxhcHNpYmxlIHRhYiBpcyBjb252ZXJ0ZWQgdG8gYSBjb2xsYXBzaWJsZSBzcGFjZSAoVSswMDIwKS5cbi8vIDQuICBBbnkgY29sbGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGVcbi8vICAgICBzcGFjZeKAlGV2ZW4gb25lIG91dHNpZGUgdGhlIGJvdW5kYXJ5IG9mIHRoZSBpbmxpbmUgY29udGFpbmluZyB0aGF0XG4vLyAgICAgc3BhY2UsIHByb3ZpZGVkIGJvdGggc3BhY2VzIGFyZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmdcbi8vICAgICBjb250ZXh04oCUaXMgY29sbGFwc2VkIHRvIGhhdmUgemVybyBhZHZhbmNlIHdpZHRoLiAoSXQgaXMgaW52aXNpYmxlLFxuLy8gICAgIGJ1dCByZXRhaW5zIGl0cyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGlmIGFueS4pXG5mdW5jdGlvbiB0cmltQW5kY29sbGFwc2VTcGFjZXNBbmRUYWJzKHZhbHVlLCBicmVha0JlZm9yZSwgYnJlYWtBZnRlcikge1xuICB2YXIgc3RhcnQgPSAwXG4gIHZhciBlbmRcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGNoYXJcblxuICAvLyBNb3ZlIGZvcndhcmQgcGFzdCBpbml0aWFsIHdoaXRlIHNwYWNlLlxuICB3aGlsZSAoc3RhcnQgPD0gbGVuZ3RoKSB7XG4gICAgY2hhciA9IHZhbHVlLmNoYXJDb2RlQXQoc3RhcnQpXG5cbiAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN0YXJ0KytcbiAgfVxuXG4gIC8vIElmIHdl4oCZcmUgbm90IGRpcmVjdGx5IGFmdGVyIGEgc2VnbWVudCBicmVhaywgYnV0IHRoZXJlIHdhcyB3aGl0ZSBzcGFjZSxcbiAgLy8gYWRkIGFuIGVtcHR5IHZhbHVlIHRoYXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIHNwYWNlLlxuICBpZiAoc3RhcnQgIT09IDAgJiYgIWJyZWFrQmVmb3JlKSB7XG4gICAgcmVzdWx0LnB1c2goJycpXG4gIH1cblxuICBlbmQgPSBuZXh0KHN0YXJ0IC0gMSlcblxuICB3aGlsZSAoc3RhcnQgPCBsZW5ndGgpIHtcbiAgICBlbmQgPSBlbmQgPT09IC0xID8gbGVuZ3RoIDogZW5kXG4gICAgcmVzdWx0LnB1c2godmFsdWUuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gICAgc3RhcnQgPSBlbmRcblxuICAgIHdoaWxlIChzdGFydCA8PSBsZW5ndGgpIHtcbiAgICAgIGNoYXIgPSB2YWx1ZS5jaGFyQ29kZUF0KHN0YXJ0KVxuXG4gICAgICBpZiAoY2hhciAhPT0gc3BhY2UgJiYgY2hhciAhPT0gdGFiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHN0YXJ0KytcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQsIHRoZXJlIHdhcyB0cmFpbGluZyB3aGl0ZSBzcGFjZSwgYW5kIHRoZXJl4oCZcyBub1xuICAgIC8vIHNlZ21lbnQgYnJlYWsgYWZ0ZXIgdGhpcyBub2RlLCBhZGQgYW4gZW1wdHkgdmFsdWUgdGhhdCB3aWxsIGJlIHR1cm5lZFxuICAgIC8vIGludG8gYSBzcGFjZS5cbiAgICBpZiAoc3RhcnQgPT09IGxlbmd0aCAmJiBzdGFydCAhPT0gZW5kICYmICFicmVha0FmdGVyKSB7XG4gICAgICByZXN1bHQucHVzaCgnJylcbiAgICB9XG5cbiAgICBlbmQgPSBuZXh0KHN0YXJ0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJylcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4KSB7XG4gICAgdmFyIHNwYWNlSW5kZXggPSB2YWx1ZS5pbmRleE9mKHNwYWNlQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciB0YWJJbmRleCA9IHZhbHVlLmluZGV4T2YodGFiQ2hhciwgaW5kZXggKyAxKVxuICAgIHZhciBmbiA9IHNwYWNlSW5kZXggPT09IC0xIHx8IHRhYkluZGV4ID09PSAtMSA/IG1heCA6IG1pblxuICAgIHJldHVybiBmbihzcGFjZUluZGV4LCB0YWJJbmRleClcbiAgfVxufVxuXG4vLyBXZSBkb27igJl0IHN1cHBvcnQgdm9pZCBlbGVtZW50cyBoZXJlIChzbyBgbm9iciB3YnJgIC0+IGBub3JtYWxgIGlzIGlnbm9yZWQpLlxuZnVuY3Rpb24gaW5mZXJXaGl0ZVNwYWNlKG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9XG4gIHZhciBpbmhlcml0ID0gb3B0aW9ucy53aGl0ZVNwYWNlIHx8ICdub3JtYWwnXG5cbiAgc3dpdGNoIChub2RlLnRhZ05hbWUpIHtcbiAgICBjYXNlICdsaXN0aW5nJzpcbiAgICBjYXNlICdwbGFpbnRleHQnOlxuICAgIGNhc2UgJ3htcCc6XG4gICAgICByZXR1cm4gJ3ByZSdcbiAgICBjYXNlICdub2JyJzpcbiAgICAgIHJldHVybiAnbm93cmFwJ1xuICAgIGNhc2UgJ3ByZSc6XG4gICAgICByZXR1cm4gcHJvcHMud3JhcCA/ICdwcmUtd3JhcCcgOiAncHJlJ1xuICAgIGNhc2UgJ3RkJzpcbiAgICBjYXNlICd0aCc6XG4gICAgICByZXR1cm4gcHJvcHMubm9XcmFwID8gJ25vd3JhcCcgOiBpbmhlcml0XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgcmV0dXJuICdwcmUtd3JhcCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGluaGVyaXRcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JpZGlDb250cm9sQ2hhcmFjdGVyKGNoYXIpIHtcbiAgc3dpdGNoIChjaGFyKSB7XG4gICAgY2FzZSBhbG06XG4gICAgY2FzZSBsdHI6XG4gICAgY2FzZSBydGw6XG4gICAgY2FzZSBscmU6XG4gICAgY2FzZSBybGU6XG4gICAgY2FzZSBwZGY6XG4gICAgY2FzZSBscm86XG4gICAgY2FzZSBybG86XG4gICAgY2FzZSBscmk6XG4gICAgY2FzZSBybGk6XG4gICAgY2FzZSBmc2k6XG4gICAgY2FzZSBwZGk6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjZWxsKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndGgnLCAndGQnXSlcbn1cblxuZnVuY3Rpb24gcm93KG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFsndHInXSlcbn1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLWNzcy11c2VyLWFnZW50LXN0eWxlLXNoZWV0LWFuZC1wcmVzZW50YXRpb25hbC1oaW50cz5cbmZ1bmN0aW9uIGJsb2NrT3JDYXB0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIGlzKG5vZGUsIFtcbiAgICAnY2FwdGlvbicsIC8vIGB0YWJsZS1jYXB0aW9uYFxuICAgIC8vIFBhZ2VcbiAgICAnaHRtbCcsXG4gICAgJ2JvZHknLFxuICAgIC8vIEZsb3cgY29udGVudFxuICAgICdhZGRyZXNzJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2NlbnRlcicsIC8vIExlZ2FjeVxuICAgICdkaWFsb2cnLFxuICAgICdkaXYnLFxuICAgICdmaWd1cmUnLFxuICAgICdmaWdjYXB0aW9uJyxcbiAgICAnZm9vdGVyJyxcbiAgICAnZm9ybSwnLFxuICAgICdoZWFkZXInLFxuICAgICdocicsXG4gICAgJ2xlZ2VuZCcsXG4gICAgJ2xpc3RpbmcnLCAvLyBMZWdhY3lcbiAgICAnbWFpbicsXG4gICAgJ3AnLFxuICAgICdwbGFpbnRleHQnLCAvLyBMZWdhY3lcbiAgICAncHJlJyxcbiAgICAneG1wJywgLy8gTGVnYWN5XG4gICAgLy8gU2VjdGlvbnMgYW5kIGhlYWRpbmdzXG4gICAgJ2FydGljbGUnLFxuICAgICdhc2lkZScsXG4gICAgJ2gxJyxcbiAgICAnaDInLFxuICAgICdoMycsXG4gICAgJ2g0JyxcbiAgICAnaDUnLFxuICAgICdoNicsXG4gICAgJ2hncm91cCcsXG4gICAgJ25hdicsXG4gICAgJ3NlY3Rpb24nLFxuICAgIC8vIExpc3RzXG4gICAgJ2RpcicsIC8vIExlZ2FjeVxuICAgICdkZCcsXG4gICAgJ2RsJyxcbiAgICAnZHQnLFxuICAgICdtZW51JyxcbiAgICAnb2wnLFxuICAgICd1bCdcbiAgXSlcbn1cblxuLy8gTm90ZSB0aGF0IHdlIGRvbuKAmXQgbmVlZCB0byBpbmNsdWRlIHZvaWQgZWxlbWVudHMgaGVyZSBhcyB0aGV5IGRvbuKAmXQgaGF2ZSB0ZXh0LlxuLy9cbi8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vaHRtbC12b2lkLWVsZW1lbnRzPlxuZnVuY3Rpb24gbm90UmVuZGVyZWQobm9kZSkge1xuICB2YXIgcHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fVxuXG4gIHJldHVybiAoXG4gICAgLy8gTGlzdCBmcm9tOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jaGlkZGVuLWVsZW1lbnRzPlxuICAgIGlzKG5vZGUsIFtcbiAgICAgICdkYXRhbGlzdCcsXG4gICAgICAnaGVhZCcsXG4gICAgICAnbm9lbWJlZCcsXG4gICAgICAnbm9mcmFtZXMnLFxuICAgICAgJ3JwJyxcbiAgICAgICdzY3JpcHQnLFxuICAgICAgJ3N0eWxlJyxcbiAgICAgICd0ZW1wbGF0ZScsXG4gICAgICAndGl0bGUnLFxuICAgICAgLy8gQWN0IGFzIGlmIHdlIHN1cHBvcnQgc2NyaXB0aW5nLlxuICAgICAgJ25vc2NyaXB0J1xuICAgIF0pIHx8XG4gICAgLy8gSGlkZGVuIGF0dHJpYnV0ZS5cbiAgICBwcm9wZXJ0aWVzLmhpZGRlbiB8fFxuICAgIC8vIEZyb206IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNmbG93LWNvbnRlbnQtMz5cbiAgICAoaXMobm9kZSwgJ2RpYWxvZycpICYmICFwcm9wZXJ0aWVzLm9wZW4pXG4gIClcbn1cbiIsImNvbnN0IHZpc2l0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC12aXNpdCcpXG5jb25zdCBrYXRleCA9IHJlcXVpcmUoJ2thdGV4JykucmVuZGVyVG9TdHJpbmdcbmNvbnN0IHVuaWZpZWQgPSByZXF1aXJlKCd1bmlmaWVkJylcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgncmVoeXBlLXBhcnNlJylcbmNvbnN0IHRvVGV4dCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by10ZXh0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZWh5cGVLYXRleFxuXG5jb25zdCBhc3NpZ24gPSBPYmplY3QuYXNzaWduXG5cbmNvbnN0IHBhcnNlSHRtbCA9IHVuaWZpZWQoKS51c2UocGFyc2UsIHtmcmFnbWVudDogdHJ1ZSwgcG9zaXRpb246IGZhbHNlfSlcblxuY29uc3Qgc291cmNlID0gJ3JlaHlwZS1rYXRleCdcblxuZnVuY3Rpb24gcmVoeXBlS2F0ZXgob3B0aW9ucykge1xuICBjb25zdCBvcHRzID0gb3B0aW9ucyB8fCB7fVxuICBjb25zdCB0aHJvd09uRXJyb3IgPSBvcHRzLnRocm93T25FcnJvciB8fCBmYWxzZVxuXG4gIHJldHVybiB0cmFuc2Zvcm1NYXRoXG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtTWF0aCh0cmVlLCBmaWxlKSB7XG4gICAgdmlzaXQodHJlZSwgJ2VsZW1lbnQnLCBvbmVsZW1lbnQpXG5cbiAgICBmdW5jdGlvbiBvbmVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQucHJvcGVydGllcy5jbGFzc05hbWUgfHwgW11cbiAgICAgIGNvbnN0IGlubGluZSA9IGNsYXNzZXMuaW5jbHVkZXMoJ21hdGgtaW5saW5lJylcbiAgICAgIGNvbnN0IGRpc3BsYXlNb2RlID0gY2xhc3Nlcy5pbmNsdWRlcygnbWF0aC1kaXNwbGF5JylcblxuICAgICAgaWYgKCFpbmxpbmUgJiYgIWRpc3BsYXlNb2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IHRvVGV4dChlbGVtZW50KVxuXG4gICAgICBsZXQgcmVzdWx0XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGthdGV4KFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGFzc2lnbih7fSwgb3B0aW9ucywge2Rpc3BsYXlNb2RlOiBkaXNwbGF5TW9kZSwgdGhyb3dPbkVycm9yOiB0cnVlfSlcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZm4gPSB0aHJvd09uRXJyb3IgPyAnZmFpbCcgOiAnbWVzc2FnZSdcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gW3NvdXJjZSwgZXJyb3IubmFtZS50b0xvd2VyQ2FzZSgpXS5qb2luKCc6JylcblxuICAgICAgICBmaWxlW2ZuXShlcnJvci5tZXNzYWdlLCBlbGVtZW50LnBvc2l0aW9uLCBvcmlnaW4pXG5cbiAgICAgICAgcmVzdWx0ID0ga2F0ZXgoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogZGlzcGxheU1vZGUsXG4gICAgICAgICAgICB0aHJvd09uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgc3RyaWN0OiAnaWdub3JlJ1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5jaGlsZHJlbiA9IHBhcnNlSHRtbC5wYXJzZShyZXN1bHQpLmNoaWxkcmVuXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlXG5cbi8vIEhUTUwgd2hpdGUtc3BhY2UgZXhwcmVzc2lvbi5cbi8vIFNlZSA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3BhY2UtY2hhcmFjdGVyPi5cbnZhciByZSA9IC9bIFxcdFxcblxcZlxccl0vZ1xuXG5mdW5jdGlvbiBpbnRlckVsZW1lbnRXaGl0ZVNwYWNlKG5vZGUpIHtcbiAgdmFyIHZhbHVlXG5cbiAgaWYgKG5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgdmFsdWUgPSBub2RlLnZhbHVlIHx8ICcnXG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBub2RlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgJycpID09PSAnJ1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5leHBvcnRzLmJlZm9yZSA9IHNpYmxpbmdzKC0xKVxuZXhwb3J0cy5hZnRlciA9IHNpYmxpbmdzKDEpXG5cbi8vIEZhY3RvcnkgdG8gY2hlY2sgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG5mdW5jdGlvbiBzaWJsaW5ncyhpbmNyZW1lbnQpIHtcbiAgcmV0dXJuIHNpYmxpbmdcblxuICAvLyBGaW5kIGFwcGxpY2FibGUgc2libGluZ3MgaW4gYSBkaXJlY3Rpb24uXG4gIGZ1bmN0aW9uIHNpYmxpbmcocGFyZW50LCBpbmRleCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICB2YXIgc2libGluZ3MgPSBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuXG4gICAgdmFyIG5leHRcblxuICAgIGluZGV4ICs9IGluY3JlbWVudFxuICAgIG5leHQgPSBzaWJsaW5ncyAmJiBzaWJsaW5nc1tpbmRleF1cblxuICAgIGlmICghaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgICAgIHdoaWxlIChuZXh0ICYmIHdoaXRlU3BhY2UobmV4dCkpIHtcbiAgICAgICAgaW5kZXggKz0gaW5jcmVtZW50XG4gICAgICAgIG5leHQgPSBzaWJsaW5nc1tpbmRleF1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFmdGVyID0gcmVxdWlyZSgnLi9zaWJsaW5ncycpLmFmdGVyXG5cbm1vZHVsZS5leHBvcnRzID0gZmlyc3RcblxuLy8gR2V0IHRoZSBmaXJzdCBjaGlsZCBpbiBgcGFyZW50YC5cbmZ1bmN0aW9uIGZpcnN0KHBhcmVudCwgaW5jbHVkZVdoaXRlU3BhY2UpIHtcbiAgcmV0dXJuIGFmdGVyKHBhcmVudCwgLTEsIGluY2x1ZGVXaGl0ZVNwYWNlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcGxhY2VcblxuLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiBgbm9kZWAgaW4gYHBhcmVudGAuXG5mdW5jdGlvbiBwbGFjZShwYXJlbnQsIGNoaWxkKSB7XG4gIHJldHVybiBwYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuICYmIHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjb252ZXJ0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1pcy9jb252ZXJ0JylcbnZhciB3aGl0ZVNwYWNlID0gcmVxdWlyZSgnaGFzdC11dGlsLXdoaXRlc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdoaXRlU3BhY2VMZWZ0XG5cbnZhciBpc1RleHQgPSBjb252ZXJ0KCd0ZXh0JylcblxuLy8gQ2hlY2sgaWYgYG5vZGVgIHN0YXJ0cyB3aXRoIHdoaXRlLXNwYWNlLlxuZnVuY3Rpb24gd2hpdGVTcGFjZUxlZnQobm9kZSkge1xuICByZXR1cm4gaXNUZXh0KG5vZGUpICYmIHdoaXRlU3BhY2Uobm9kZS52YWx1ZS5jaGFyQXQoMCkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbWlzc2lvblxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gRmFjdG9yeSB0byBjaGVjayBpZiBhIGdpdmVuIG5vZGUgY2FuIGhhdmUgYSB0YWcgb21pdHRlZC5cbmZ1bmN0aW9uIG9taXNzaW9uKGhhbmRsZXJzKSB7XG4gIHJldHVybiBvbWl0XG5cbiAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBub2RlIGNhbiBoYXZlIGEgdGFnIG9taXR0ZWQuXG4gIGZ1bmN0aW9uIG9taXQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICAgIHZhciBuYW1lID0gbm9kZS50YWdOYW1lXG4gICAgdmFyIGZuID0gb3duLmNhbGwoaGFuZGxlcnMsIG5hbWUpID8gaGFuZGxlcnNbbmFtZV0gOiBmYWxzZVxuXG4gICAgcmV0dXJuIGZuID8gZm4obm9kZSwgaW5kZXgsIHBhcmVudCkgOiBmYWxzZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxudmFyIGVsZW1lbnQgPSByZXF1aXJlKCdoYXN0LXV0aWwtaXMtZWxlbWVudCcpXG52YXIgd2hpdGVTcGFjZUxlZnQgPSByZXF1aXJlKCcuL3V0aWwvd2hpdGUtc3BhY2UtbGVmdCcpXG52YXIgYWZ0ZXIgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5hZnRlclxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBpc0NvbW1lbnQgPSBjb252ZXJ0KCdjb21tZW50JylcblxudmFyIG9wdGlvbkdyb3VwID0gJ29wdGdyb3VwJ1xudmFyIG9wdGlvbnMgPSBbJ29wdGlvbiddLmNvbmNhdChvcHRpb25Hcm91cClcbnZhciBkYXRhTGlzdEl0ZW0gPSBbJ2R0JywgJ2RkJ11cbnZhciBsaXN0SXRlbSA9ICdsaSdcbnZhciBtZW51Q29udGVudCA9IFsnbWVudWl0ZW0nLCAnaHInLCAnbWVudSddXG52YXIgcnVieSA9IFsncnAnLCAncnQnXVxudmFyIHRhYmxlQ29udGFpbmVyID0gWyd0Ym9keScsICd0Zm9vdCddXG52YXIgdGFibGVSb3cgPSAndHInXG52YXIgdGFibGVDZWxsID0gWyd0ZCcsICd0aCddXG5cbnZhciBjb25mdXNpbmdQYXJhZ3JhcGhQYXJlbnQgPSBbXG4gICdhJyxcbiAgJ2F1ZGlvJyxcbiAgJ2RlbCcsXG4gICdpbnMnLFxuICAnbWFwJyxcbiAgJ25vc2NyaXB0JyxcbiAgJ3ZpZGVvJ1xuXVxuXG52YXIgY2xlYXJQYXJhZ3JhcGhTaWJsaW5nID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnZGV0YWlscycsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdocicsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbmF2JyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncHJlJyxcbiAgJ3NlY3Rpb24nLFxuICAndGFibGUnLFxuICAndWwnXG5dXG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb24oe1xuICBodG1sOiBodG1sLFxuICBoZWFkOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgYm9keTogYm9keSxcbiAgcDogcCxcbiAgbGk6IGxpLFxuICBkdDogZHQsXG4gIGRkOiBkZCxcbiAgcnQ6IHJ1YnlFbGVtZW50LFxuICBycDogcnVieUVsZW1lbnQsXG4gIG9wdGdyb3VwOiBvcHRncm91cCxcbiAgb3B0aW9uOiBvcHRpb24sXG4gIG1lbnVpdGVtOiBtZW51aXRlbSxcbiAgY29sZ3JvdXA6IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICBjYXB0aW9uOiBoZWFkT3JDb2xncm91cE9yQ2FwdGlvbixcbiAgdGhlYWQ6IHRoZWFkLFxuICB0Ym9keTogdGJvZHksXG4gIHRmb290OiB0Zm9vdCxcbiAgdHI6IHRyLFxuICB0ZDogY2VsbHMsXG4gIHRoOiBjZWxsc1xufSlcblxuLy8gTWFjcm8gZm9yIGA8L2hlYWQ+YCwgYDwvY29sZ3JvdXA+YCwgYW5kIGA8L2NhcHRpb24+YC5cbmZ1bmN0aW9uIGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4LCB0cnVlKVxuICByZXR1cm4gIW5leHQgfHwgKCFpc0NvbW1lbnQobmV4dCkgJiYgIXdoaXRlU3BhY2VMZWZ0KG5leHQpKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvaHRtbD5gLlxuZnVuY3Rpb24gaHRtbChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8ICFpc0NvbW1lbnQobmV4dClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2JvZHk+YC5cbmZ1bmN0aW9uIGJvZHkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCAhaXNDb21tZW50KG5leHQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9wPmAuXG5mdW5jdGlvbiBwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gbmV4dFxuICAgID8gZWxlbWVudChuZXh0LCBjbGVhclBhcmFncmFwaFNpYmxpbmcpXG4gICAgOiAhcGFyZW50IHx8ICFlbGVtZW50KHBhcmVudCwgY29uZnVzaW5nUGFyYWdyYXBoUGFyZW50KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbGk+YC5cbmZ1bmN0aW9uIGxpKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBsaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2R0PmAuXG5mdW5jdGlvbiBkdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCBkYXRhTGlzdEl0ZW0pXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9kZD5gLlxuZnVuY3Rpb24gZGQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIGRhdGFMaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3J0PmAgb3IgYDwvcnA+YC5cbmZ1bmN0aW9uIHJ1YnlFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBydWJ5KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvb3B0Z3JvdXA+YC5cbmZ1bmN0aW9uIG9wdGdyb3VwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25Hcm91cClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L29wdGlvbj5gLlxuZnVuY3Rpb24gb3B0aW9uKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBvcHRpb25zKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvbWVudWl0ZW0+YC5cbmZ1bmN0aW9uIG1lbnVpdGVtKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCBtZW51Q29udGVudClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3RoZWFkPmAuXG5mdW5jdGlvbiB0aGVhZChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuIG5leHQgJiYgZWxlbWVudChuZXh0LCB0YWJsZUNvbnRhaW5lcilcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3Rib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgdGFibGVDb250YWluZXIpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90Zm9vdD5gLlxuZnVuY3Rpb24gdGZvb3Qobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICByZXR1cm4gIWFmdGVyKHBhcmVudCwgaW5kZXgpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90cj5gLlxuZnVuY3Rpb24gdHIobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlUm93KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvdGQ+YCBvciBgPC90aD5gLlxuZnVuY3Rpb24gY2VsbHMobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHRhYmxlQ2VsbClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG52YXIgZWxlbWVudCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50JylcbnZhciBiZWZvcmUgPSByZXF1aXJlKCcuL3V0aWwvc2libGluZ3MnKS5iZWZvcmVcbnZhciBmaXJzdCA9IHJlcXVpcmUoJy4vdXRpbC9maXJzdCcpXG52YXIgcGxhY2UgPSByZXF1aXJlKCcuL3V0aWwvcGxhY2UnKVxudmFyIHdoaXRlU3BhY2VMZWZ0ID0gcmVxdWlyZSgnLi91dGlsL3doaXRlLXNwYWNlLWxlZnQnKVxudmFyIGNsb3NpbmcgPSByZXF1aXJlKCcuL2Nsb3NpbmcnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG52YXIgaXNDb21tZW50ID0gY29udmVydCgnY29tbWVudCcpXG5cbnZhciB1bmlxdWVIZWFkTWV0YWRhdGEgPSBbJ3RpdGxlJywgJ2Jhc2UnXVxudmFyIG1ldGEgPSBbJ21ldGEnLCAnbGluaycsICdzY3JpcHQnLCAnc3R5bGUnLCAndGVtcGxhdGUnXVxudmFyIHRhYmxlQ29udGFpbmVycyA9IFsndGhlYWQnLCAndGJvZHknXVxudmFyIHRhYmxlUm93ID0gJ3RyJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXNzaW9uKHtcbiAgaHRtbDogaHRtbCxcbiAgaGVhZDogaGVhZCxcbiAgYm9keTogYm9keSxcbiAgY29sZ3JvdXA6IGNvbGdyb3VwLFxuICB0Ym9keTogdGJvZHlcbn0pXG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGh0bWw+YC5cbmZ1bmN0aW9uIGh0bWwobm9kZSkge1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUpXG4gIHJldHVybiAhaGVhZCB8fCAhaXNDb21tZW50KGhlYWQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGhlYWQ+YC5cbmZ1bmN0aW9uIGhlYWQobm9kZSkge1xuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIG1hcCA9IHt9XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBjaGlsZFxuICB2YXIgbmFtZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbltpbmRleF1cbiAgICBuYW1lID0gY2hpbGQudGFnTmFtZVxuXG4gICAgaWYgKGVsZW1lbnQoY2hpbGQsIHVuaXF1ZUhlYWRNZXRhZGF0YSkpIHtcbiAgICAgIGlmIChvd24uY2FsbChtYXAsIG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBtYXBbbmFtZV0gPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4obGVuZ3RoKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDxib2R5PmAuXG5mdW5jdGlvbiBib2R5KG5vZGUpIHtcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlLCB0cnVlKVxuXG4gIHJldHVybiAoXG4gICAgIWhlYWQgfHwgKCFpc0NvbW1lbnQoaGVhZCkgJiYgIXdoaXRlU3BhY2VMZWZ0KGhlYWQpICYmICFlbGVtZW50KGhlYWQsIG1ldGEpKVxuICApXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGNvbGdyb3VwPmAuXG4vLyBUaGUgc3BlYyBkZXNjcmliZXMgc29tZSBsb2dpYyBmb3IgdGhlIG9wZW5pbmcgdGFnLCBidXQgaXTigJlzIGVhc2llciB0b1xuLy8gaW1wbGVtZW50IGluIHRoZSBjbG9zaW5nIHRhZywgdG8gdGhlIHNhbWUgZWZmZWN0LCBzbyB3ZSBoYW5kbGUgaXQgdGhlcmVcbi8vIGluc3RlYWQuXG5mdW5jdGlvbiBjb2xncm91cChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSwgdHJ1ZSlcblxuICAvLyBQcmV2aW91cyBjb2xncm91cCB3YXMgYWxyZWFkeSBvbWl0dGVkLlxuICBpZiAoZWxlbWVudChwcmV2LCAnY29sZ3JvdXAnKSAmJiBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBoZWFkICYmIGVsZW1lbnQoaGVhZCwgJ2NvbCcpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPHRib2R5PmAuXG5mdW5jdGlvbiB0Ym9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gYmVmb3JlKHBhcmVudCwgaW5kZXgpXG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSlcblxuICAvLyBQcmV2aW91cyB0YWJsZSBzZWN0aW9uIHdhcyBhbHJlYWR5IG9taXR0ZWQuXG4gIGlmIChcbiAgICBlbGVtZW50KHByZXYsIHRhYmxlQ29udGFpbmVycykgJiZcbiAgICBjbG9zaW5nKHByZXYsIHBsYWNlKHBhcmVudCwgcHJldiksIHBhcmVudClcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gaGVhZCAmJiBlbGVtZW50KGhlYWQsIHRhYmxlUm93KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5leHBvcnRzLm9wZW5pbmcgPSByZXF1aXJlKCcuL29wZW5pbmcnKVxuZXhwb3J0cy5jbG9zaW5nID0gcmVxdWlyZSgnLi9jbG9zaW5nJylcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFsbFxuXG4vLyBTdHJpbmdpZnkgYWxsIGNoaWxkcmVuIG9mIGBwYXJlbnRgLlxuZnVuY3Rpb24gYWxsKGN0eCwgcGFyZW50KSB7XG4gIHZhciBjaGlsZHJlbiA9IHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW5cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0cyA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRzW2luZGV4XSA9IG9uZShjdHgsIGNoaWxkcmVuW2luZGV4XSwgaW5kZXgsIHBhcmVudClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJycpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBoZXhhZGVjaW1hbFxuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXIgY29kZSBhdCB0aGUgZmlyc3Rcbi8vIGNoYXJhY3RlciwgaXMgaGV4YWRlY2ltYWwuXG5mdW5jdGlvbiBoZXhhZGVjaW1hbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyXG5cbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSA5NyAvKiBhICovICYmIGNvZGUgPD0gMTAyKSAvKiB6ICovIHx8XG4gICAgKGNvZGUgPj0gNjUgLyogQSAqLyAmJiBjb2RlIDw9IDcwKSAvKiBaICovIHx8XG4gICAgKGNvZGUgPj0gNDggLyogQSAqLyAmJiBjb2RlIDw9IDU3KSAvKiBaICovXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY2ltYWxcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGRlY2ltYWwuXG5mdW5jdGlvbiBkZWNpbWFsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID8gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXJcblxuICByZXR1cm4gY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3IC8qIDAtOSAqL1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWxwaGFiZXRpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYWJldGljYWwuXG5mdW5jdGlvbiBhbHBoYWJldGljYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlclxuXG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIC8qIGEteiAqLyB8fFxuICAgIChjb2RlID49IDY1ICYmIGNvZGUgPD0gOTApIC8qIEEtWiAqL1xuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGFscGhhYmV0aWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhYmV0aWNhbCcpXG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFscGhhbnVtZXJpY2FsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhbHBoYW51bWVyaWNhbC5cbmZ1bmN0aW9uIGFscGhhbnVtZXJpY2FsKGNoYXJhY3Rlcikge1xuICByZXR1cm4gYWxwaGFiZXRpY2FsKGNoYXJhY3RlcikgfHwgZGVjaW1hbChjaGFyYWN0ZXIpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgnY2hhcmFjdGVyLWVudGl0aWVzLWh0bWw0JylcbnZhciBsZWdhY3kgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMtbGVnYWN5JylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgYWxwaGFudW1lcmljYWwgPSByZXF1aXJlKCdpcy1hbHBoYW51bWVyaWNhbCcpXG52YXIgZGFuZ2Vyb3VzID0gcmVxdWlyZSgnLi9kYW5nZXJvdXMuanNvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gZW5jb2RlXG5lbmNvZGUuZXNjYXBlID0gZXNjYXBlXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBMaXN0IG9mIGVuZm9yY2VkIGVzY2FwZXMuXG52YXIgZXNjYXBlcyA9IFsnXCInLCBcIidcIiwgJzwnLCAnPicsICcmJywgJ2AnXVxuXG4vLyBNYXAgb2YgY2hhcmFjdGVycyB0byBuYW1lcy5cbnZhciBjaGFyYWN0ZXJzID0gY29uc3RydWN0KClcblxuLy8gRGVmYXVsdCBlc2NhcGVzLlxudmFyIGRlZmF1bHRFc2NhcGVzID0gdG9FeHByZXNzaW9uKGVzY2FwZXMpXG5cbi8vIFN1cnJvZ2F0ZSBwYWlycy5cbnZhciBzdXJyb2dhdGVQYWlyID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZ1xuXG4vLyBOb24tQVNDSUkgY2hhcmFjdGVycy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4LCB1bmljb3JuL25vLWhleC1lc2NhcGVcbnZhciBibXAgPSAvW1xceDAxLVxcdFxceDBCXFxmXFx4MEUtXFx4MUZcXHg3RlxceDgxXFx4OERcXHg4RlxceDkwXFx4OURcXHhBMC1cXHVGRkZGXS9nXG5cbi8vIEVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHZhbHVlYC5cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBzdWJzZXQgPSBzZXR0aW5ncy5zdWJzZXRcbiAgdmFyIHNldCA9IHN1YnNldCA/IHRvRXhwcmVzc2lvbihzdWJzZXQpIDogZGVmYXVsdEVzY2FwZXNcbiAgdmFyIGVzY2FwZU9ubHkgPSBzZXR0aW5ncy5lc2NhcGVPbmx5XG4gIHZhciBvbWl0ID0gc2V0dGluZ3Mub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShzZXQsIHJlcGxhY2UpXG5cbiAgaWYgKHN1YnNldCB8fCBlc2NhcGVPbmx5KSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbiAgICAucmVwbGFjZShzdXJyb2dhdGVQYWlyLCByZXBsYWNlU3Vycm9nYXRlUGFpcilcbiAgICAucmVwbGFjZShibXAsIHJlcGxhY2UpXG5cbiAgZnVuY3Rpb24gcmVwbGFjZVN1cnJvZ2F0ZVBhaXIocGFpciwgcG9zLCB2YWwpIHtcbiAgICByZXR1cm4gdG9IZXhSZWZlcmVuY2UoXG4gICAgICAocGFpci5jaGFyQ29kZUF0KDApIC0gMHhkODAwKSAqIDB4NDAwICtcbiAgICAgICAgcGFpci5jaGFyQ29kZUF0KDEpIC1cbiAgICAgICAgMHhkYzAwICtcbiAgICAgICAgMHgxMDAwMCxcbiAgICAgIHZhbC5jaGFyQXQocG9zICsgMiksXG4gICAgICBvbWl0XG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShjaGFyLCBwb3MsIHZhbCkge1xuICAgIHJldHVybiBvbmUoY2hhciwgdmFsLmNoYXJBdChwb3MgKyAxKSwgc2V0dGluZ3MpXG4gIH1cbn1cblxuLy8gU2hvcnRjdXQgdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBIVE1MLlxuZnVuY3Rpb24gZXNjYXBlKHZhbHVlKSB7XG4gIHJldHVybiBlbmNvZGUodmFsdWUsIHtlc2NhcGVPbmx5OiB0cnVlLCB1c2VOYW1lZFJlZmVyZW5jZXM6IHRydWV9KVxufVxuXG4vLyBFbmNvZGUgYGNoYXJgIGFjY29yZGluZyB0byBgb3B0aW9uc2AuXG5mdW5jdGlvbiBvbmUoY2hhciwgbmV4dCwgb3B0aW9ucykge1xuICB2YXIgc2hvcnRlc3QgPSBvcHRpb25zLnVzZVNob3J0ZXN0UmVmZXJlbmNlc1xuICB2YXIgb21pdCA9IG9wdGlvbnMub21pdE9wdGlvbmFsU2VtaWNvbG9uc1xuICB2YXIgbmFtZWRcbiAgdmFyIGNvZGVcbiAgdmFyIG51bWVyaWNcbiAgdmFyIGRlY2ltYWxcblxuICBpZiAoKHNob3J0ZXN0IHx8IG9wdGlvbnMudXNlTmFtZWRSZWZlcmVuY2VzKSAmJiBvd24uY2FsbChjaGFyYWN0ZXJzLCBjaGFyKSkge1xuICAgIG5hbWVkID0gdG9OYW1lZChjaGFyYWN0ZXJzW2NoYXJdLCBuZXh0LCBvbWl0LCBvcHRpb25zLmF0dHJpYnV0ZSlcbiAgfVxuXG4gIGlmIChzaG9ydGVzdCB8fCAhbmFtZWQpIHtcbiAgICBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApXG4gICAgbnVtZXJpYyA9IHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpXG5cbiAgICAvLyBVc2UgdGhlIHNob3J0ZXN0IG51bWVyaWMgcmVmZXJlbmNlIHdoZW4gcmVxdWVzdGVkLlxuICAgIC8vIEEgc2ltcGxlIGFsZ29yaXRobSB3b3VsZCB1c2UgZGVjaW1hbCBmb3IgYWxsIGNvZGUgcG9pbnRzIHVuZGVyIDEwMCwgYXNcbiAgICAvLyB0aG9zZSBhcmUgc2hvcnRlciB0aGFuIGhleGFkZWNpbWFsOlxuICAgIC8vXG4gICAgLy8gKiBgJiM5OTtgIHZzIGAmI3g2MztgIChkZWNpbWFsIHNob3J0ZXIpXG4gICAgLy8gKiBgJiMxMDA7YCB2cyBgJiN4NjQ7YCAoZXF1YWwpXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBiZWNhdXNlIHdlIHRha2UgYG5leHRgIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGBvbWl0YCBpcyB1c2VkLFxuICAgIC8vIEFuZCBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0aGF0IGRlY2ltYWxzIGFyZSBzaG9ydGVyIG9uIGJpZ2dlciB2YWx1ZXMgYXNcbiAgICAvLyB3ZWxsIGlmIGBuZXh0YCBpcyBoZXhhZGVjaW1hbCBidXQgbm90IGRlY2ltYWwsIHdlIGluc3RlYWQgY29tcGFyZSBib3RoLlxuICAgIGlmIChzaG9ydGVzdCkge1xuICAgICAgZGVjaW1hbCA9IHRvRGVjaW1hbFJlZmVyZW5jZShjb2RlLCBuZXh0LCBvbWl0KVxuXG4gICAgICBpZiAoZGVjaW1hbC5sZW5ndGggPCBudW1lcmljLmxlbmd0aCkge1xuICAgICAgICBudW1lcmljID0gZGVjaW1hbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChuYW1lZCAmJiAoIXNob3J0ZXN0IHx8IG5hbWVkLmxlbmd0aCA8IG51bWVyaWMubGVuZ3RoKSkge1xuICAgIHJldHVybiBuYW1lZFxuICB9XG5cbiAgcmV0dXJuIG51bWVyaWNcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGFuIGVudGl0eS5cbmZ1bmN0aW9uIHRvTmFtZWQobmFtZSwgbmV4dCwgb21pdCwgYXR0cmlidXRlKSB7XG4gIHZhciB2YWx1ZSA9ICcmJyArIG5hbWVcblxuICBpZiAoXG4gICAgb21pdCAmJlxuICAgIG93bi5jYWxsKGxlZ2FjeSwgbmFtZSkgJiZcbiAgICBkYW5nZXJvdXMuaW5kZXhPZihuYW1lKSA9PT0gLTEgJiZcbiAgICAoIWF0dHJpYnV0ZSB8fCAobmV4dCAmJiBuZXh0ICE9PSAnPScgJiYgIWFscGhhbnVtZXJpY2FsKG5leHQpKSlcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWUgKyAnOydcbn1cblxuLy8gVHJhbnNmb3JtIGBjb2RlYCBpbnRvIGEgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIHRvSGV4UmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpIHtcbiAgdmFyIHZhbHVlID0gJyYjeCcgKyBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWhleGFkZWNpbWFsKG5leHQpID8gdmFsdWUgOiB2YWx1ZSArICc7J1xufVxuXG4vLyBUcmFuc2Zvcm0gYGNvZGVgIGludG8gYSBkZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2UuXG5mdW5jdGlvbiB0b0RlY2ltYWxSZWZlcmVuY2UoY29kZSwgbmV4dCwgb21pdCkge1xuICB2YXIgdmFsdWUgPSAnJiMnICsgU3RyaW5nKGNvZGUpXG4gIHJldHVybiBvbWl0ICYmIG5leHQgJiYgIWRlY2ltYWwobmV4dCkgPyB2YWx1ZSA6IHZhbHVlICsgJzsnXG59XG5cbi8vIENyZWF0ZSBhbiBleHByZXNzaW9uIGZvciBgY2hhcmFjdGVyc2AuXG5mdW5jdGlvbiB0b0V4cHJlc3Npb24oY2hhcmFjdGVycykge1xuICByZXR1cm4gbmV3IFJlZ0V4cCgnWycgKyBjaGFyYWN0ZXJzLmpvaW4oJycpICsgJ10nLCAnZycpXG59XG5cbi8vIENvbnN0cnVjdCB0aGUgbWFwLlxuZnVuY3Rpb24gY29uc3RydWN0KCkge1xuICB2YXIgY2hhcnMgPSB7fVxuICB2YXIgbmFtZVxuXG4gIGZvciAobmFtZSBpbiBlbnRpdGllcykge1xuICAgIGNoYXJzW2VudGl0aWVzW25hbWVdXSA9IG5hbWVcbiAgfVxuXG4gIHJldHVybiBjaGFyc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dFxuXG4vLyBTdHJpbmdpZnkgYHRleHRgLlxuZnVuY3Rpb24gdGV4dChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBpc0xpdGVyYWwocGFyZW50KVxuICAgID8gdmFsdWVcbiAgICA6IGVudGl0aWVzKHZhbHVlLCB4dGVuZChjdHguZW50aXRpZXMsIHtzdWJzZXQ6IFsnPCcsICcmJ119KSlcbn1cblxuLy8gQ2hlY2sgaWYgY29udGVudCBvZiBgbm9kZWAgc2hvdWxkIGJlIGVzY2FwZWQuXG5mdW5jdGlvbiBpc0xpdGVyYWwobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiAobm9kZS50YWdOYW1lID09PSAnc2NyaXB0JyB8fCBub2RlLnRhZ05hbWUgPT09ICdzdHlsZScpXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gQ2hhcmFjdGVycy5cbnZhciBuaWwgPSAnXFwwJ1xudmFyIGFtcGVyc2FuZCA9ICcmJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGFiID0gJ1xcdCdcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgZXF1YWxzVG8gPSAnPSdcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG52YXIgc2xhc2ggPSAnLydcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgY2FycmlhZ2VSZXR1cm4gPSAnXFxyJ1xudmFyIGZvcm1GZWVkID0gJ1xcZidcblxudmFyIHdoaXRlc3BhY2UgPSBbc3BhY2UsIHRhYiwgbGluZUZlZWQsIGNhcnJpYWdlUmV0dXJuLCBmb3JtRmVlZF1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLW5hbWUtc3RhdGU+LlxudmFyIG5hbWUgPSB3aGl0ZXNwYWNlLmNvbmNhdChhbXBlcnNhbmQsIHNsYXNoLCBncmVhdGVyVGhhbiwgZXF1YWxzVG8pXG5cbi8vIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0dHJpYnV0ZS12YWx1ZS0odW5xdW90ZWQpLXN0YXRlPi5cbnZhciB1bnF1b3RlZCA9IHdoaXRlc3BhY2UuY29uY2F0KGFtcGVyc2FuZCwgZ3JlYXRlclRoYW4pXG52YXIgdW5xdW90ZWRTYWZlID0gdW5xdW90ZWQuY29uY2F0KFxuICBuaWwsXG4gIHF1b3RhdGlvbk1hcmssXG4gIGFwb3N0cm9waGUsXG4gIGxlc3NUaGFuLFxuICBlcXVhbHNUbyxcbiAgZ3JhdmVBY2NlbnRcbilcblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShzaW5nbGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgc2luZ2xlUXVvdGVkID0gW2FtcGVyc2FuZCwgYXBvc3Ryb3BoZV1cblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLShkb3VibGUtcXVvdGVkKS1zdGF0ZT4uXG52YXIgZG91YmxlUXVvdGVkID0gW2FtcGVyc2FuZCwgcXVvdGF0aW9uTWFya11cblxuLy8gTWFwcyBvZiBzdWJzZXRzLlxuLy8gRWFjaCB2YWx1ZSBpcyBhIG1hdHJpeCBvZiB0dXBsZXMuXG4vLyBUaGUgZmlyc3QgdmFsdWUgY2F1c2VzIHBhcnNlIGVycm9ycywgdGhlIHNlY29uZCBpcyB2YWxpZC5cbi8vIE9mIGJvdGggdmFsdWVzLCB0aGUgZmlyc3QgdmFsdWUgaXMgdW5zYWZlLCBhbmQgdGhlIHNlY29uZCBpcyBzYWZlLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG5hbWU6IFtcbiAgICBbbmFtZSwgbmFtZS5jb25jYXQocXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgZ3JhdmVBY2NlbnQpXSxcbiAgICBbXG4gICAgICBuYW1lLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGFwb3N0cm9waGUsIGxlc3NUaGFuKSxcbiAgICAgIG5hbWUuY29uY2F0KG5pbCwgcXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgbGVzc1RoYW4sIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgdW5xdW90ZWQ6IFtbdW5xdW90ZWQsIHVucXVvdGVkU2FmZV0sIFt1bnF1b3RlZFNhZmUsIHVucXVvdGVkU2FmZV1dLFxuICBzaW5nbGU6IFtcbiAgICBbc2luZ2xlUXVvdGVkLCBzaW5nbGVRdW90ZWQuY29uY2F0KHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KV0sXG4gICAgW1xuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwpLFxuICAgICAgc2luZ2xlUXVvdGVkLmNvbmNhdChuaWwsIHF1b3RhdGlvbk1hcmssIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXSxcbiAgZG91YmxlOiBbXG4gICAgW2RvdWJsZVF1b3RlZCwgZG91YmxlUXVvdGVkLmNvbmNhdChhcG9zdHJvcGhlLCBncmF2ZUFjY2VudCldLFxuICAgIFtcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsKSxcbiAgICAgIGRvdWJsZVF1b3RlZC5jb25jYXQobmlsLCBhcG9zdHJvcGhlLCBncmF2ZUFjY2VudClcbiAgICBdXG4gIF1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgc3ZnID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciBmaW5kID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vZmluZCcpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpLnN0cmluZ2lmeVxudmFyIGNvbW1hcyA9IHJlcXVpcmUoJ2NvbW1hLXNlcGFyYXRlZC10b2tlbnMnKS5zdHJpbmdpZnlcbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJ3N0cmluZ2lmeS1lbnRpdGllcycpXG52YXIgY2NvdW50ID0gcmVxdWlyZSgnY2NvdW50JylcbnZhciBhbGwgPSByZXF1aXJlKCcuL2FsbCcpXG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVsZW1lbnRcblxudmFyIHNwYWNlID0gJyAnXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBlcXVhbHNUbyA9ICc9J1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBzbGFzaCA9ICcvJ1xuXG4vLyBTdHJpbmdpZnkgYW4gZWxlbWVudCBgbm9kZWAuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gZWxlbWVudChjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHBhcmVudFNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgdmFyIHZhbHVlID0gJydcbiAgdmFyIHNlbGZDbG9zaW5nXG4gIHZhciBjbG9zZVxuICB2YXIgb21pdFxuICB2YXIgcm9vdCA9IG5vZGVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGF0dHJzXG4gIHZhciBsYXN0XG5cbiAgaWYgKHBhcmVudFNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5hbWUgPT09ICdzdmcnKSB7XG4gICAgY3R4LnNjaGVtYSA9IHN2Z1xuICB9XG5cbiAgYXR0cnMgPSBhdHRyaWJ1dGVzKGN0eCwgbm9kZS5wcm9wZXJ0aWVzKVxuXG4gIGlmIChjdHguc2NoZW1hLnNwYWNlID09PSAnc3ZnJykge1xuICAgIG9taXQgPSBmYWxzZVxuICAgIGNsb3NlID0gdHJ1ZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LmNsb3NlRW1wdHlcbiAgfSBlbHNlIHtcbiAgICBvbWl0ID0gY3R4Lm9taXRcbiAgICBjbG9zZSA9IGN0eC5jbG9zZVxuICAgIHNlbGZDbG9zaW5nID0gY3R4LnZvaWRzLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcblxuICAgIGlmIChuYW1lID09PSAndGVtcGxhdGUnKSB7XG4gICAgICByb290ID0gbm9kZS5jb250ZW50XG4gICAgfVxuICB9XG5cbiAgY29udGVudCA9IGFsbChjdHgsIHJvb3QpXG5cbiAgLy8gSWYgdGhlIG5vZGUgaXMgY2F0ZWdvcmlzZWQgYXMgdm9pZCwgYnV0IGl0IGhhcyBjaGlsZHJlbiwgcmVtb3ZlIHRoZVxuICAvLyBjYXRlZ29yaXNhdGlvbi5cbiAgLy8gVGhpcyBlbmFibGVzIGZvciBleGFtcGxlIGBtZW51aXRlbWBzLCB3aGljaCBhcmUgdm9pZCBpbiBXM0MgSFRNTCBidXQgbm90XG4gIC8vIHZvaWQgaW4gV0hBVFdHIEhUTUwsIHRvIGJlIHN0cmluZ2lmaWVkIHByb3Blcmx5LlxuICBzZWxmQ2xvc2luZyA9IGNvbnRlbnQgPyBmYWxzZSA6IHNlbGZDbG9zaW5nXG5cbiAgaWYgKGF0dHJzIHx8ICFvbWl0IHx8ICFvbWl0Lm9wZW5pbmcobm9kZSwgaW5kZXgsIHBhcmVudCkpIHtcbiAgICB2YWx1ZSA9IGxlc3NUaGFuICsgbmFtZSArIChhdHRycyA/IHNwYWNlICsgYXR0cnMgOiAnJylcblxuICAgIGlmIChzZWxmQ2xvc2luZyAmJiBjbG9zZSkge1xuICAgICAgbGFzdCA9IGF0dHJzLmNoYXJBdChhdHRycy5sZW5ndGggLSAxKVxuICAgICAgaWYgKFxuICAgICAgICAhY3R4LnRpZ2h0Q2xvc2UgfHxcbiAgICAgICAgbGFzdCA9PT0gc2xhc2ggfHxcbiAgICAgICAgKGN0eC5zY2hlbWEuc3BhY2UgPT09ICdzdmcnICYmXG4gICAgICAgICAgbGFzdCAmJlxuICAgICAgICAgIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiZcbiAgICAgICAgICBsYXN0ICE9PSBhcG9zdHJvcGhlKVxuICAgICAgKSB7XG4gICAgICAgIHZhbHVlICs9IHNwYWNlXG4gICAgICB9XG5cbiAgICAgIHZhbHVlICs9IHNsYXNoXG4gICAgfVxuXG4gICAgdmFsdWUgKz0gZ3JlYXRlclRoYW5cbiAgfVxuXG4gIHZhbHVlICs9IGNvbnRlbnRcblxuICBpZiAoIXNlbGZDbG9zaW5nICYmICghb21pdCB8fCAhb21pdC5jbG9zaW5nKG5vZGUsIGluZGV4LCBwYXJlbnQpKSkge1xuICAgIHZhbHVlICs9IGxlc3NUaGFuICsgc2xhc2ggKyBuYW1lICsgZ3JlYXRlclRoYW5cbiAgfVxuXG4gIGN0eC5zY2hlbWEgPSBwYXJlbnRTY2hlbWFcblxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gU3RyaW5naWZ5IGFsbCBhdHRyaWJ1dGVzLlxuZnVuY3Rpb24gYXR0cmlidXRlcyhjdHgsIHByb3BzKSB7XG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuICB2YXIgcmVzdWx0XG4gIHZhciBsZW5ndGhcbiAgdmFyIGluZGV4XG4gIHZhciBsYXN0XG5cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICB2YWx1ZSA9IHByb3BzW2tleV1cblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHJlc3VsdCA9IGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB2YWx1ZXMucHVzaChyZXN1bHQpXG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHQgPSB2YWx1ZXNbaW5kZXhdXG4gICAgbGFzdCA9IG51bGxcblxuICAgIGlmIChjdHgudGlnaHQpIHtcbiAgICAgIGxhc3QgPSByZXN1bHQuY2hhckF0KHJlc3VsdC5sZW5ndGggLSAxKVxuICAgIH1cblxuICAgIC8vIEluIHRpZ2h0IG1vZGUsIGRvbuKAmXQgYWRkIGEgc3BhY2UgYWZ0ZXIgcXVvdGVkIGF0dHJpYnV0ZXMuXG4gICAgaWYgKGluZGV4ICE9PSBsZW5ndGggLSAxICYmIGxhc3QgIT09IHF1b3RhdGlvbk1hcmsgJiYgbGFzdCAhPT0gYXBvc3Ryb3BoZSkge1xuICAgICAgdmFsdWVzW2luZGV4XSA9IHJlc3VsdCArIHNwYWNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKCcnKVxufVxuXG4vLyBTdHJpbmdpZnkgb25lIGF0dHJpYnV0ZS5cbmZ1bmN0aW9uIGF0dHJpYnV0ZShjdHgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICB2YXIgbmFtZSA9IGluZm8uYXR0cmlidXRlXG5cbiAgaWYgKGluZm8ub3ZlcmxvYWRlZEJvb2xlYW4gJiYgKHZhbHVlID09PSBuYW1lIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICB2YWx1ZSA9IHRydWVcbiAgfSBlbHNlIGlmIChcbiAgICBpbmZvLmJvb2xlYW4gfHxcbiAgICAoaW5mby5vdmVybG9hZGVkQm9vbGVhbiAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKVxuICApIHtcbiAgICB2YWx1ZSA9IEJvb2xlYW4odmFsdWUpXG4gIH1cblxuICBpZiAoXG4gICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSlcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBuYW1lID0gYXR0cmlidXRlTmFtZShjdHgsIG5hbWUpXG5cbiAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIGJvb2xlYW4gcHJvcGVydHkgaW4gU1ZHOiBgW2Rvd25sb2FkXWAgb25cbiAgICAvLyBgPGE+YC5cbiAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNlZW0gdG8gd29yayBpbiBicm93c2VycyAoRkYsIFNhLCBDaCksIHNvIEkgY2Fu4oCZdFxuICAgIC8vIHRlc3QgaWYgZHJvcHBpbmcgdGhlIHZhbHVlIHdvcmtzLlxuICAgIC8vIEJ1dCBJIGFzc3VtZSB0aGF0IGl0IHNob3VsZDpcbiAgICAvL1xuICAgIC8vIGBgYGh0bWxcbiAgICAvLyA8IWRvY3R5cGUgaHRtbD5cbiAgICAvLyA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPlxuICAgIC8vICAgPGEgaHJlZj1odHRwczovL2V4YW1wbGUuY29tIGRvd25sb2FkPlxuICAgIC8vICAgICA8Y2lyY2xlIGN4PTUwIGN5PTQwIHI9MzUgLz5cbiAgICAvLyAgIDwvYT5cbiAgICAvLyA8L3N2Zz5cbiAgICAvLyBgYGBcbiAgICAvL1xuICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vcHJvcGVydHktaW5mb3JtYXRpb24vYmxvYi9tYXN0ZXIvbGliL3N2Zy5qcz5cbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyBhdHRyaWJ1dGVWYWx1ZShjdHgsIGtleSwgdmFsdWUsIGluZm8pXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIG5hbWUuXG5mdW5jdGlvbiBhdHRyaWJ1dGVOYW1lKGN0eCwgbmFtZSkge1xuICAvLyBBbHdheXMgZW5jb2RlIHdpdGhvdXQgcGFyc2UgZXJyb3JzIGluIG5vbi1IVE1MLlxuICB2YXIgdmFsaWQgPSBjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXG4gIHZhciBzdWJzZXQgPSBjb25zdGFudHMubmFtZVt2YWxpZF1bY3R4LnNhZmVdXG5cbiAgcmV0dXJuIGVudGl0aWVzKG5hbWUsIHh0ZW5kKGN0eC5lbnRpdGllcywge3N1YnNldDogc3Vic2V0fSkpXG59XG5cbi8vIFN0cmluZ2lmeSB0aGUgYXR0cmlidXRlIHZhbHVlLlxuZnVuY3Rpb24gYXR0cmlidXRlVmFsdWUoY3R4LCBrZXksIHZhbHVlLCBpbmZvKSB7XG4gIHZhciBvcHRpb25zID0gY3R4LmVudGl0aWVzXG4gIHZhciBxdW90ZSA9IGN0eC5xdW90ZVxuICB2YXIgYWx0ZXJuYXRpdmUgPSBjdHguYWx0ZXJuYXRpdmVcbiAgdmFyIHVucXVvdGVkXG4gIHZhciBzdWJzZXRcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIC8vIGBzcGFjZXNgIGRvZXNu4oCZdCBhY2NlcHQgYSBzZWNvbmQgYXJndW1lbnQsIGJ1dCBpdOKAmXMgZ2l2ZW4gaGVyZSBqdXN0IHRvXG4gICAgLy8ga2VlcCB0aGUgY29kZSBjbGVhbmVyLlxuICAgIHZhbHVlID0gKGluZm8uY29tbWFTZXBhcmF0ZWQgPyBjb21tYXMgOiBzcGFjZXMpKHZhbHVlLCB7XG4gICAgICBwYWRMZWZ0OiAhY3R4LnRpZ2h0TGlzdHNcbiAgICB9KVxuICB9XG5cbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgaWYgKHZhbHVlIHx8ICFjdHguY29sbGFwc2VFbXB0eSkge1xuICAgIHVucXVvdGVkID0gdmFsdWVcblxuICAgIC8vIENoZWNrIHVucXVvdGVkIHZhbHVlLlxuICAgIGlmIChjdHgudW5xdW90ZWQpIHtcbiAgICAgIHN1YnNldCA9IGNvbnN0YW50cy51bnF1b3RlZFtjdHgudmFsaWRdW2N0eC5zYWZlXVxuICAgICAgdW5xdW90ZWQgPSBlbnRpdGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHh0ZW5kKG9wdGlvbnMsIHtzdWJzZXQ6IHN1YnNldCwgYXR0cmlidXRlOiB0cnVlfSlcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBJZiBgdmFsdWVgIGNvbnRhaW5zIGVudGl0aWVzIHdoZW4gdW5xdW90ZWTigKZcbiAgICBpZiAoIWN0eC51bnF1b3RlZCB8fCB1bnF1b3RlZCAhPT0gdmFsdWUpIHtcbiAgICAgIC8vIElmIHRoZSBhbHRlcm5hdGl2ZSBpcyBsZXNzIGNvbW1vbiB0aGFuIGBxdW90ZWAsIHN3aXRjaC5cbiAgICAgIGlmIChhbHRlcm5hdGl2ZSAmJiBjY291bnQodmFsdWUsIHF1b3RlKSA+IGNjb3VudCh2YWx1ZSwgYWx0ZXJuYXRpdmUpKSB7XG4gICAgICAgIHF1b3RlID0gYWx0ZXJuYXRpdmVcbiAgICAgIH1cblxuICAgICAgc3Vic2V0ID0gcXVvdGUgPT09IGFwb3N0cm9waGUgPyBjb25zdGFudHMuc2luZ2xlIDogY29uc3RhbnRzLmRvdWJsZVxuICAgICAgLy8gQWx3YXlzIGVuY29kZSB3aXRob3V0IHBhcnNlIGVycm9ycyBpbiBub24tSFRNTC5cbiAgICAgIHN1YnNldCA9IHN1YnNldFtjdHguc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgPyBjdHgudmFsaWQgOiAxXVtjdHguc2FmZV1cblxuICAgICAgdmFsdWUgPSBlbnRpdGllcyh2YWx1ZSwgeHRlbmQob3B0aW9ucywge3N1YnNldDogc3Vic2V0LCBhdHRyaWJ1dGU6IHRydWV9KSlcblxuICAgICAgdmFsdWUgPSBxdW90ZSArIHZhbHVlICsgcXVvdGVcbiAgICB9XG5cbiAgICAvLyBEb27igJl0IGFkZCBhIGA9YCBmb3IgdW5xdW90ZWQgZW1wdGllcy5cbiAgICB2YWx1ZSA9IHZhbHVlID8gZXF1YWxzVG8gKyB2YWx1ZSA6IHZhbHVlXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY3R5cGVcblxuLy8gU3RyaW5naWZ5IGEgZG9jdHlwZSBgbm9kZWAuXG5mdW5jdGlvbiBkb2N0eXBlKGN0eCwgbm9kZSkge1xuICB2YXIgc2VwID0gY3R4LnRpZ2h0RG9jdHlwZSA/ICcnIDogJyAnXG4gIHZhciBuYW1lID0gbm9kZS5uYW1lXG4gIHZhciBwdWIgPSBub2RlLnB1YmxpY1xuICB2YXIgc3lzID0gbm9kZS5zeXN0ZW1cbiAgdmFyIHZhbCA9IFsnPCFkb2N0eXBlJ11cblxuICBpZiAobmFtZSkge1xuICAgIHZhbC5wdXNoKHNlcCwgbmFtZSlcblxuICAgIGlmIChwdWIgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBwdWJsaWMnLCBzZXAsIHNtYXJ0KHB1YikpXG4gICAgfSBlbHNlIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goJyBzeXN0ZW0nKVxuICAgIH1cblxuICAgIGlmIChzeXMgIT0gbnVsbCkge1xuICAgICAgdmFsLnB1c2goc2VwLCBzbWFydChzeXMpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWwuam9pbignJykgKyAnPidcbn1cblxuZnVuY3Rpb24gc21hcnQodmFsdWUpIHtcbiAgdmFyIHF1b3RlID0gdmFsdWUuaW5kZXhPZignXCInKSA9PT0gLTEgPyAnXCInIDogXCInXCJcbiAgcmV0dXJuIHF1b3RlICsgdmFsdWUgKyBxdW90ZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29tbWVudFxuXG4vLyBTdHJpbmdpZnkgYSBjb21tZW50IGBub2RlYC5cbmZ1bmN0aW9uIGNvbW1lbnQoY3R4LCBub2RlKSB7XG4gIHJldHVybiAnPCEtLScgKyBub2RlLnZhbHVlICsgJy0tPidcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdGV4dCA9IHJlcXVpcmUoJy4vdGV4dCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcmF3XG5cbi8vIFN0cmluZ2lmeSBgcmF3YC5cbmZ1bmN0aW9uIHJhdyhjdHgsIG5vZGUpIHtcbiAgcmV0dXJuIGN0eC5kYW5nZXJvdXMgPyBub2RlLnZhbHVlIDogdGV4dChjdHgsIG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBvbmVcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbnZhciBoYW5kbGVycyA9IHt9XG5cbmhhbmRsZXJzLnJvb3QgPSByZXF1aXJlKCcuL2FsbCcpXG5oYW5kbGVycy50ZXh0ID0gcmVxdWlyZSgnLi90ZXh0JylcbmhhbmRsZXJzLmVsZW1lbnQgPSByZXF1aXJlKCcuL2VsZW1lbnQnKVxuaGFuZGxlcnMuZG9jdHlwZSA9IHJlcXVpcmUoJy4vZG9jdHlwZScpXG5oYW5kbGVycy5jb21tZW50ID0gcmVxdWlyZSgnLi9jb21tZW50JylcbmhhbmRsZXJzLnJhdyA9IHJlcXVpcmUoJy4vcmF3JylcblxuLy8gU3RyaW5naWZ5IGBub2RlYC5cbmZ1bmN0aW9uIG9uZShjdHgsIG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHR5cGUgPSBub2RlICYmIG5vZGUudHlwZVxuXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9kZSwgbm90IGAnICsgbm9kZSArICdgJylcbiAgfVxuXG4gIGlmICghb3duLmNhbGwoaGFuZGxlcnMsIHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29tcGlsZSB1bmtub3duIG5vZGUgYCcgKyB0eXBlICsgJ2AnKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzW3R5cGVdKGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgdm9pZHMgPSByZXF1aXJlKCdodG1sLXZvaWQtZWxlbWVudHMnKVxudmFyIG9taXNzaW9uID0gcmVxdWlyZSgnLi9vbWlzc2lvbicpXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSHRtbFxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcblxuLy8gU3RyaW5naWZ5IHRoZSBnaXZlbiBoYXN0IG5vZGUuXG5mdW5jdGlvbiB0b0h0bWwobm9kZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBxdW90ZSA9IHNldHRpbmdzLnF1b3RlIHx8IHF1b3RhdGlvbk1hcmtcbiAgdmFyIGFsdGVybmF0aXZlID0gcXVvdGUgPT09IHF1b3RhdGlvbk1hcmsgPyBhcG9zdHJvcGhlIDogcXVvdGF0aW9uTWFya1xuICB2YXIgc21hcnQgPSBzZXR0aW5ncy5xdW90ZVNtYXJ0XG5cbiAgaWYgKHF1b3RlICE9PSBxdW90YXRpb25NYXJrICYmIHF1b3RlICE9PSBhcG9zdHJvcGhlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgcXVvdGUgYCcgK1xuICAgICAgICBxdW90ZSArXG4gICAgICAgICdgLCBleHBlY3RlZCBgJyArXG4gICAgICAgIGFwb3N0cm9waGUgK1xuICAgICAgICAnYCBvciBgJyArXG4gICAgICAgIHF1b3RhdGlvbk1hcmsgK1xuICAgICAgICAnYCdcbiAgICApXG4gIH1cblxuICByZXR1cm4gb25lKFxuICAgIHtcbiAgICAgIHZhbGlkOiBzZXR0aW5ncy5hbGxvd1BhcnNlRXJyb3JzID8gMCA6IDEsXG4gICAgICBzYWZlOiBzZXR0aW5ncy5hbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMgPyAwIDogMSxcbiAgICAgIHNjaGVtYTogc2V0dGluZ3Muc3BhY2UgPT09ICdzdmcnID8gc3ZnIDogaHRtbCxcbiAgICAgIG9taXQ6IHNldHRpbmdzLm9taXRPcHRpb25hbFRhZ3MgJiYgb21pc3Npb24sXG4gICAgICBxdW90ZTogcXVvdGUsXG4gICAgICBhbHRlcm5hdGl2ZTogc21hcnQgPyBhbHRlcm5hdGl2ZSA6IG51bGwsXG4gICAgICB1bnF1b3RlZDogQm9vbGVhbihzZXR0aW5ncy5wcmVmZXJVbnF1b3RlZCksXG4gICAgICB0aWdodDogc2V0dGluZ3MudGlnaHRBdHRyaWJ1dGVzLFxuICAgICAgdGlnaHREb2N0eXBlOiBCb29sZWFuKHNldHRpbmdzLnRpZ2h0RG9jdHlwZSksXG4gICAgICB0aWdodExpc3RzOiBzZXR0aW5ncy50aWdodENvbW1hU2VwYXJhdGVkTGlzdHMsXG4gICAgICB0aWdodENsb3NlOiBzZXR0aW5ncy50aWdodFNlbGZDbG9zaW5nLFxuICAgICAgY29sbGFwc2VFbXB0eTogc2V0dGluZ3MuY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMsXG4gICAgICBkYW5nZXJvdXM6IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzSFRNTCxcbiAgICAgIHZvaWRzOiBzZXR0aW5ncy52b2lkcyB8fCB2b2lkcy5jb25jYXQoKSxcbiAgICAgIGVudGl0aWVzOiBzZXR0aW5ncy5lbnRpdGllcyB8fCB7fSxcbiAgICAgIGNsb3NlOiBzZXR0aW5ncy5jbG9zZVNlbGZDbG9zaW5nLFxuICAgICAgY2xvc2VFbXB0eTogc2V0dGluZ3MuY2xvc2VFbXB0eUVsZW1lbnRzXG4gICAgfSxcbiAgICBub2RlXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHRvSFRNTCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC10by1odG1sJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnlcblxuZnVuY3Rpb24gc3RyaW5naWZ5KGNvbmZpZykge1xuICB2YXIgc2V0dGluZ3MgPSB4dGVuZChjb25maWcsIHRoaXMuZGF0YSgnc2V0dGluZ3MnKSlcblxuICB0aGlzLkNvbXBpbGVyID0gY29tcGlsZXJcblxuICBmdW5jdGlvbiBjb21waWxlcih0cmVlKSB7XG4gICAgcmV0dXJuIHRvSFRNTCh0cmVlLCBzZXR0aW5ncylcbiAgfVxufVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaGVyaXRcblxuLy8gQ3JlYXRlIGEgY3VzdG9tIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGVcbi8vIG9yaWdpbmFsIGNsYXNzLlxuZnVuY3Rpb24gdW5oZXJpdChTdXBlcikge1xuICB2YXIgcmVzdWx0XG4gIHZhciBrZXlcbiAgdmFyIHZhbHVlXG5cbiAgaW5oZXJpdHMoT2YsIFN1cGVyKVxuICBpbmhlcml0cyhGcm9tLCBPZilcblxuICAvLyBDbG9uZSB2YWx1ZXMuXG4gIHJlc3VsdCA9IE9mLnByb3RvdHlwZVxuXG4gIGZvciAoa2V5IGluIHJlc3VsdCkge1xuICAgIHZhbHVlID0gcmVzdWx0W2tleV1cblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9ICdjb25jYXQnIGluIHZhbHVlID8gdmFsdWUuY29uY2F0KCkgOiB4dGVuZCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2ZcblxuICAvLyBDb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGl0c2VsZiBpcyBhbiBgYXJndW1lbnRzYFxuICAvLyBvYmplY3QuXG4gIGZ1bmN0aW9uIEZyb20ocGFyYW1ldGVycykge1xuICAgIHJldHVybiBTdXBlci5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKVxuICB9XG5cbiAgLy8gQ29uc3RydWN0b3IgYWNjZXB0aW5nIHZhcmlhZGljIGFyZ3VtZW50cy5cbiAgZnVuY3Rpb24gT2YoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE9mKSkge1xuICAgICAgcmV0dXJuIG5ldyBGcm9tKGFyZ3VtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbi8vIENvbnN0cnVjdCBhIHN0YXRlIGB0b2dnbGVyYDogYSBmdW5jdGlvbiB3aGljaCBpbnZlcnNlcyBgcHJvcGVydHlgIGluIGNvbnRleHRcbi8vIGJhc2VkIG9uIGl0cyBjdXJyZW50IHZhbHVlLlxuLy8gVGhlIGJ5IGB0b2dnbGVyYCByZXR1cm5lZCBmdW5jdGlvbiByZXN0b3JlcyB0aGF0IHZhbHVlLlxuZnVuY3Rpb24gZmFjdG9yeShrZXksIHN0YXRlLCBjdHgpIHtcbiAgcmV0dXJuIGVudGVyXG5cbiAgZnVuY3Rpb24gZW50ZXIoKSB7XG4gICAgdmFyIGNvbnRleHQgPSBjdHggfHwgdGhpc1xuICAgIHZhciBjdXJyZW50ID0gY29udGV4dFtrZXldXG5cbiAgICBjb250ZXh0W2tleV0gPSAhc3RhdGVcblxuICAgIHJldHVybiBleGl0XG5cbiAgICBmdW5jdGlvbiBleGl0KCkge1xuICAgICAgY29udGV4dFtrZXldID0gY3VycmVudFxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG5mdW5jdGlvbiBmYWN0b3J5KGZpbGUpIHtcbiAgdmFyIGNvbnRlbnRzID0gaW5kaWNlcyhTdHJpbmcoZmlsZSkpXG5cbiAgcmV0dXJuIHtcbiAgICB0b1Bvc2l0aW9uOiBvZmZzZXRUb1Bvc2l0aW9uRmFjdG9yeShjb250ZW50cyksXG4gICAgdG9PZmZzZXQ6IHBvc2l0aW9uVG9PZmZzZXRGYWN0b3J5KGNvbnRlbnRzKVxuICB9XG59XG5cbi8vIEZhY3RvcnkgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBmb3IgYG9mZnNldGAgaW4gdGhlIGJvdW5kXG4vLyBpbmRpY2VzLlxuZnVuY3Rpb24gb2Zmc2V0VG9Qb3NpdGlvbkZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gb2Zmc2V0VG9Qb3NpdGlvblxuXG4gIC8vIEdldCB0aGUgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgZm9yIGBvZmZzZXRgIGluIHRoZSBib3VuZCBpbmRpY2VzLlxuICBmdW5jdGlvbiBvZmZzZXRUb1Bvc2l0aW9uKG9mZnNldCkge1xuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGxlbmd0aCA9IGluZGljZXMubGVuZ3RoXG5cbiAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpbmRpY2VzW2luZGV4XSA+IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IGluZGV4ICsgMSxcbiAgICAgICAgICBjb2x1bW46IG9mZnNldCAtIChpbmRpY2VzW2luZGV4IC0gMV0gfHwgMCkgKyAxLFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG4vLyBGYWN0b3J5IHRvIGdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlXG4vLyBib3VuZCBpbmRpY2VzLlxuZnVuY3Rpb24gcG9zaXRpb25Ub09mZnNldEZhY3RvcnkoaW5kaWNlcykge1xuICByZXR1cm4gcG9zaXRpb25Ub09mZnNldFxuXG4gIC8vIEdldCB0aGUgYG9mZnNldGAgZm9yIGEgbGluZSBhbmQgY29sdW1uLWJhc2VkIGBwb3NpdGlvbmAgaW4gdGhlIGJvdW5kXG4gIC8vIGluZGljZXMuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQocG9zaXRpb24pIHtcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uICYmIHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgY29sdW1uID0gcG9zaXRpb24gJiYgcG9zaXRpb24uY29sdW1uXG5cbiAgICBpZiAoIWlzTmFOKGxpbmUpICYmICFpc05hTihjb2x1bW4pICYmIGxpbmUgLSAxIGluIGluZGljZXMpIHtcbiAgICAgIHJldHVybiAoaW5kaWNlc1tsaW5lIC0gMl0gfHwgMCkgKyBjb2x1bW4gLSAxIHx8IDBcbiAgICB9XG5cbiAgICByZXR1cm4gLTFcbiAgfVxufVxuXG4vLyBHZXQgaW5kaWNlcyBvZiBsaW5lLWJyZWFrcyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24gaW5kaWNlcyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJylcblxuICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgcmVzdWx0LnB1c2goaW5kZXggKyAxKVxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKVxuICB9XG5cbiAgcmVzdWx0LnB1c2godmFsdWUubGVuZ3RoICsgMSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuLy8gRmFjdG9yeSB0byBkZS1lc2NhcGUgYSB2YWx1ZSwgYmFzZWQgb24gYSBsaXN0IGF0IGBrZXlgIGluIGBjdHhgLlxuZnVuY3Rpb24gZmFjdG9yeShjdHgsIGtleSkge1xuICByZXR1cm4gdW5lc2NhcGVcblxuICAvLyBEZS1lc2NhcGUgYSBzdHJpbmcgdXNpbmcgdGhlIGV4cHJlc3Npb24gYXQgYGtleWAgaW4gYGN0eGAuXG4gIGZ1bmN0aW9uIHVuZXNjYXBlKHZhbHVlKSB7XG4gICAgdmFyIHByZXYgPSAwXG4gICAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihiYWNrc2xhc2gpXG4gICAgdmFyIGVzY2FwZSA9IGN0eFtrZXldXG4gICAgdmFyIHF1ZXVlID0gW11cbiAgICB2YXIgY2hhcmFjdGVyXG5cbiAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYsIGluZGV4KSlcbiAgICAgIHByZXYgPSBpbmRleCArIDFcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChwcmV2KVxuXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBub3QgYSB2YWxpZCBlc2NhcGUsIGFkZCB0aGUgc2xhc2guXG4gICAgICBpZiAoIWNoYXJhY3RlciB8fCBlc2NhcGUuaW5kZXhPZihjaGFyYWN0ZXIpID09PSAtMSkge1xuICAgICAgICBxdWV1ZS5wdXNoKGJhY2tzbGFzaClcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGJhY2tzbGFzaCwgcHJldiArIDEpXG4gICAgfVxuXG4gICAgcXVldWUucHVzaCh2YWx1ZS5zbGljZShwcmV2KSlcblxuICAgIHJldHVybiBxdWV1ZS5qb2luKCcnKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbnZhciBlbFxuXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gICc7J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZUVudGl0eVxuXG5mdW5jdGlvbiBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykge1xuICB2YXIgZW50aXR5ID0gJyYnICsgY2hhcmFjdGVycyArICc7J1xuICB2YXIgY2hhclxuXG4gIGVsID0gZWwgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG4gIGVsLmlubmVySFRNTCA9IGVudGl0eVxuICBjaGFyID0gZWwudGV4dENvbnRlbnRcblxuICAvLyBTb21lIGVudGl0aWVzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvbiAoYCZub3RgIC0gZm9yIGluc3RhbmNlKSxcbiAgLy8gd2hpY2ggbGVhZHMgdG8gc2l0dWF0aW9ucyB3aGVyZSBwYXJzaW5nIHRoZSBhc3N1bWVkIGVudGl0eSBvZiAmbm90aXQ7IHdpbGxcbiAgLy8gcmVzdWx0IGluIHRoZSBzdHJpbmcgYMKsaXQ7YC4gIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyXG4gIC8vIHBhcnNpbmcgYW5kIHRoZSBlbnRpdHkgdG8gZGVjb2RlIHdhcyBub3QgYSBzZW1pY29sb24gKGAmc2VtaTtgKSwgd2UgY2FuXG4gIC8vIGFzc3VtZSB0aGF0IHRoZSBtYXRjaGluZyB3YXMgaW5jb21wbGV0ZVxuICBpZiAoY2hhci5jaGFyQ29kZUF0KGNoYXIubGVuZ3RoIC0gMSkgPT09IHNlbWljb2xvbiAmJiBjaGFyYWN0ZXJzICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBlbnRpdHkgd2FzIG5vdCB2YWxpZFxuICByZXR1cm4gY2hhciA9PT0gZW50aXR5ID8gZmFsc2UgOiBjaGFyXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKVxudmFyIGludmFsaWQgPSByZXF1aXJlKCdjaGFyYWN0ZXItcmVmZXJlbmNlLWludmFsaWQnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBhbHBoYW51bWVyaWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhbnVtZXJpY2FsJylcbnZhciBkZWNvZGVFbnRpdHkgPSByZXF1aXJlKCcuL2RlY29kZS1lbnRpdHknKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlRW50aXRpZXNcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGVcblxuLy8gRGVmYXVsdCBzZXR0aW5ncy5cbnZhciBkZWZhdWx0cyA9IHtcbiAgd2FybmluZzogbnVsbCxcbiAgcmVmZXJlbmNlOiBudWxsLFxuICB0ZXh0OiBudWxsLFxuICB3YXJuaW5nQ29udGV4dDogbnVsbCxcbiAgcmVmZXJlbmNlQ29udGV4dDogbnVsbCxcbiAgdGV4dENvbnRleHQ6IG51bGwsXG4gIHBvc2l0aW9uOiB7fSxcbiAgYWRkaXRpb25hbDogbnVsbCxcbiAgYXR0cmlidXRlOiBmYWxzZSxcbiAgbm9uVGVybWluYXRlZDogdHJ1ZVxufVxuXG4vLyBDaGFyYWN0ZXJzLlxudmFyIHRhYiA9IDkgLy8gJ1xcdCdcbnZhciBsaW5lRmVlZCA9IDEwIC8vICdcXG4nXG52YXIgZm9ybUZlZWQgPSAxMiAvLyAgJ1xcZidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGFtcGVyc2FuZCA9IDM4IC8vICAnJidcbnZhciBzZW1pY29sb24gPSA1OSAvLyAgJzsnXG52YXIgbGVzc1RoYW4gPSA2MCAvLyAgJzwnXG52YXIgZXF1YWxzVG8gPSA2MSAvLyAgJz0nXG52YXIgbnVtYmVyU2lnbiA9IDM1IC8vICAnIydcbnZhciB1cHBlcmNhc2VYID0gODggLy8gICdYJ1xudmFyIGxvd2VyY2FzZVggPSAxMjAgLy8gICd4J1xudmFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyID0gNjU1MzMgLy8gJ++/vSdcblxuLy8gUmVmZXJlbmNlIHR5cGVzLlxudmFyIG5hbWUgPSAnbmFtZWQnXG52YXIgaGV4YSA9ICdoZXhhZGVjaW1hbCdcbnZhciBkZWNpID0gJ2RlY2ltYWwnXG5cbi8vIE1hcCBvZiBiYXNlcy5cbnZhciBiYXNlcyA9IHt9XG5cbmJhc2VzW2hleGFdID0gMTZcbmJhc2VzW2RlY2ldID0gMTBcblxuLy8gTWFwIG9mIHR5cGVzIHRvIHRlc3RzLlxuLy8gRWFjaCB0eXBlIG9mIGNoYXJhY3RlciByZWZlcmVuY2UgYWNjZXB0cyBkaWZmZXJlbnQgY2hhcmFjdGVycy5cbi8vIFRoaXMgdGVzdCBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGhhcyBlbmRlZCAoYXMgdGhlIHNlbWljb2xvblxuLy8gaXMgbm90IHN0cmljdGx5IG5lZWRlZCkuXG52YXIgdGVzdHMgPSB7fVxuXG50ZXN0c1tuYW1lXSA9IGFscGhhbnVtZXJpY2FsXG50ZXN0c1tkZWNpXSA9IGRlY2ltYWxcbnRlc3RzW2hleGFdID0gaGV4YWRlY2ltYWxcblxuLy8gV2FybmluZyB0eXBlcy5cbnZhciBuYW1lZE5vdFRlcm1pbmF0ZWQgPSAxXG52YXIgbnVtZXJpY05vdFRlcm1pbmF0ZWQgPSAyXG52YXIgbmFtZWRFbXB0eSA9IDNcbnZhciBudW1lcmljRW1wdHkgPSA0XG52YXIgbmFtZWRVbmtub3duID0gNVxudmFyIG51bWVyaWNEaXNhbGxvd2VkID0gNlxudmFyIG51bWVyaWNQcm9oaWJpdGVkID0gN1xuXG4vLyBXYXJuaW5nIG1lc3NhZ2VzLlxudmFyIG1lc3NhZ2VzID0ge31cblxubWVzc2FnZXNbbmFtZWROb3RUZXJtaW5hdGVkXSA9XG4gICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tudW1lcmljTm90VGVybWluYXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb24nXG5tZXNzYWdlc1tuYW1lZEVtcHR5XSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHknXG5tZXNzYWdlc1tudW1lcmljRW1wdHldID0gJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5J1xubWVzc2FnZXNbbmFtZWRVbmtub3duXSA9ICdOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIGtub3duJ1xubWVzc2FnZXNbbnVtZXJpY0Rpc2FsbG93ZWRdID1cbiAgJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGRpc2FsbG93ZWQnXG5tZXNzYWdlc1tudW1lcmljUHJvaGliaXRlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgVW5pY29kZSByYW5nZSdcblxuLy8gV3JhcCB0byBlbnN1cmUgY2xlYW4gcGFyYW1ldGVycyBhcmUgZ2l2ZW4gdG8gYHBhcnNlYC5cbmZ1bmN0aW9uIHBhcnNlRW50aXRpZXModmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0ge31cbiAgdmFyIG9wdGlvblxuICB2YXIga2V5XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIG9wdGlvbiA9IG9wdGlvbnNba2V5XVxuICAgIHNldHRpbmdzW2tleV0gPVxuICAgICAgb3B0aW9uID09PSBudWxsIHx8IG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdHNba2V5XSA6IG9wdGlvblxuICB9XG5cbiAgaWYgKHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBzZXR0aW5ncy5wb3NpdGlvbi5zdGFydCkge1xuICAgIHNldHRpbmdzLmluZGVudCA9IHNldHRpbmdzLnBvc2l0aW9uLmluZGVudCB8fCBbXVxuICAgIHNldHRpbmdzLnBvc2l0aW9uID0gc2V0dGluZ3MucG9zaXRpb24uc3RhcnRcbiAgfVxuXG4gIHJldHVybiBwYXJzZSh2YWx1ZSwgc2V0dGluZ3MpXG59XG5cbi8vIFBhcnNlIGVudGl0aWVzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHBhcnNlKHZhbHVlLCBzZXR0aW5ncykge1xuICB2YXIgYWRkaXRpb25hbCA9IHNldHRpbmdzLmFkZGl0aW9uYWxcbiAgdmFyIG5vblRlcm1pbmF0ZWQgPSBzZXR0aW5ncy5ub25UZXJtaW5hdGVkXG4gIHZhciBoYW5kbGVUZXh0ID0gc2V0dGluZ3MudGV4dFxuICB2YXIgaGFuZGxlUmVmZXJlbmNlID0gc2V0dGluZ3MucmVmZXJlbmNlXG4gIHZhciBoYW5kbGVXYXJuaW5nID0gc2V0dGluZ3Mud2FybmluZ1xuICB2YXIgdGV4dENvbnRleHQgPSBzZXR0aW5ncy50ZXh0Q29udGV4dFxuICB2YXIgcmVmZXJlbmNlQ29udGV4dCA9IHNldHRpbmdzLnJlZmVyZW5jZUNvbnRleHRcbiAgdmFyIHdhcm5pbmdDb250ZXh0ID0gc2V0dGluZ3Mud2FybmluZ0NvbnRleHRcbiAgdmFyIHBvcyA9IHNldHRpbmdzLnBvc2l0aW9uXG4gIHZhciBpbmRlbnQgPSBzZXR0aW5ncy5pbmRlbnQgfHwgW11cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsaW5lcyA9IC0xXG4gIHZhciBjb2x1bW4gPSBwb3MuY29sdW1uIHx8IDFcbiAgdmFyIGxpbmUgPSBwb3MubGluZSB8fCAxXG4gIHZhciBxdWV1ZSA9ICcnXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgZW50aXR5Q2hhcmFjdGVyc1xuICB2YXIgbmFtZWRFbnRpdHlcbiAgdmFyIHRlcm1pbmF0ZWRcbiAgdmFyIGNoYXJhY3RlcnNcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgcmVmZXJlbmNlXG4gIHZhciBmb2xsb3dpbmdcbiAgdmFyIHdhcm5pbmdcbiAgdmFyIHJlYXNvblxuICB2YXIgb3V0cHV0XG4gIHZhciBlbnRpdHlcbiAgdmFyIGJlZ2luXG4gIHZhciBzdGFydFxuICB2YXIgdHlwZVxuICB2YXIgdGVzdFxuICB2YXIgcHJldlxuICB2YXIgbmV4dFxuICB2YXIgZGlmZlxuICB2YXIgZW5kXG5cbiAgaWYgKHR5cGVvZiBhZGRpdGlvbmFsID09PSAnc3RyaW5nJykge1xuICAgIGFkZGl0aW9uYWwgPSBhZGRpdGlvbmFsLmNoYXJDb2RlQXQoMClcbiAgfVxuXG4gIC8vIENhY2hlIHRoZSBjdXJyZW50IHBvaW50LlxuICBwcmV2ID0gbm93KClcblxuICAvLyBXcmFwIGBoYW5kbGVXYXJuaW5nYC5cbiAgd2FybmluZyA9IGhhbmRsZVdhcm5pbmcgPyBwYXJzZUVycm9yIDogbm9vcFxuXG4gIC8vIEVuc3VyZSB0aGUgYWxnb3JpdGhtIHdhbGtzIG92ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgdGhlIGVuZCAoaW5jbHVzaXZlKS5cbiAgaW5kZXgtLVxuICBsZW5ndGgrK1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgLy8gSWYgdGhlIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgYSBuZXdsaW5lLlxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBjb2x1bW4gPSBpbmRlbnRbbGluZXNdIHx8IDFcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gYW1wZXJzYW5kKSB7XG4gICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgICAgLy8gVGhlIGJlaGF2aW91ciBkZXBlbmRzIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICBpZiAoXG4gICAgICAgIGZvbGxvd2luZyA9PT0gdGFiIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGluZUZlZWQgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBmb3JtRmVlZCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IHNwYWNlIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gYW1wZXJzYW5kIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gbGVzc1RoYW4gfHxcbiAgICAgICAgZm9sbG93aW5nICE9PSBmb2xsb3dpbmcgfHxcbiAgICAgICAgKGFkZGl0aW9uYWwgJiYgZm9sbG93aW5nID09PSBhZGRpdGlvbmFsKVxuICAgICAgKSB7XG4gICAgICAgIC8vIE5vdCBhIGNoYXJhY3RlciByZWZlcmVuY2UuXG4gICAgICAgIC8vIE5vIGNoYXJhY3RlcnMgYXJlIGNvbnN1bWVkLCBhbmQgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgICAgICAgLy8gVGhpcyBpcyBub3QgYW4gZXJyb3IsIGVpdGhlci5cbiAgICAgICAgcXVldWUgKz0gZnJvbUNoYXJDb2RlKGNoYXJhY3RlcilcbiAgICAgICAgY29sdW1uKytcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgYmVnaW4gPSBzdGFydFxuICAgICAgZW5kID0gc3RhcnRcblxuICAgICAgaWYgKGZvbGxvd2luZyA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgICAvLyBOdW1lcmljYWwgZW50aXR5LlxuICAgICAgICBlbmQgPSArK2JlZ2luXG5cbiAgICAgICAgLy8gVGhlIGJlaGF2aW91ciBmdXJ0aGVyIGRlcGVuZHMgb24gdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoZm9sbG93aW5nID09PSB1cHBlcmNhc2VYIHx8IGZvbGxvd2luZyA9PT0gbG93ZXJjYXNlWCkge1xuICAgICAgICAgIC8vIEFTQ0lJIGhleCBkaWdpdHMuXG4gICAgICAgICAgdHlwZSA9IGhleGFcbiAgICAgICAgICBlbmQgPSArK2JlZ2luXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQVNDSUkgZGlnaXRzLlxuICAgICAgICAgIHR5cGUgPSBkZWNpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5hbWVkIGVudGl0eS5cbiAgICAgICAgdHlwZSA9IG5hbWVcbiAgICAgIH1cblxuICAgICAgZW50aXR5Q2hhcmFjdGVycyA9ICcnXG4gICAgICBlbnRpdHkgPSAnJ1xuICAgICAgY2hhcmFjdGVycyA9ICcnXG4gICAgICB0ZXN0ID0gdGVzdHNbdHlwZV1cbiAgICAgIGVuZC0tXG5cbiAgICAgIHdoaWxlICgrK2VuZCA8IGxlbmd0aCkge1xuICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICBpZiAoIXRlc3QoZm9sbG93aW5nKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjaGFyYWN0ZXJzICs9IGZyb21DaGFyQ29kZShmb2xsb3dpbmcpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgY2FuIG1hdGNoIGEgbGVnYWN5IG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gSWYgc28sIHdlIGNhY2hlIHRoYXQgYXMgdGhlIGxhc3QgdmlhYmxlIG5hbWVkIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGRvIG5vdCBuZWVkIHRvIHdhbGsgYmFja3dhcmRzIGxhdGVyLlxuICAgICAgICBpZiAodHlwZSA9PT0gbmFtZSAmJiBvd24uY2FsbChsZWdhY3ksIGNoYXJhY3RlcnMpKSB7XG4gICAgICAgICAgZW50aXR5Q2hhcmFjdGVycyA9IGNoYXJhY3RlcnNcbiAgICAgICAgICBlbnRpdHkgPSBsZWdhY3lbY2hhcmFjdGVyc11cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZXJtaW5hdGVkID0gdmFsdWUuY2hhckNvZGVBdChlbmQpID09PSBzZW1pY29sb25cblxuICAgICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgICAgZW5kKytcblxuICAgICAgICBuYW1lZEVudGl0eSA9IHR5cGUgPT09IG5hbWUgPyBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykgOiBmYWxzZVxuXG4gICAgICAgIGlmIChuYW1lZEVudGl0eSkge1xuICAgICAgICAgIGVudGl0eUNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzXG4gICAgICAgICAgZW50aXR5ID0gbmFtZWRFbnRpdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkaWZmID0gMSArIGVuZCAtIHN0YXJ0XG5cbiAgICAgIGlmICghdGVybWluYXRlZCAmJiAhbm9uVGVybWluYXRlZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAoIWNoYXJhY3RlcnMpIHtcbiAgICAgICAgLy8gQW4gZW1wdHkgKHBvc3NpYmxlKSBlbnRpdHkgaXMgdmFsaWQsIHVubGVzcyBpdOKAmXMgbnVtZXJpYyAodGh1cyBhblxuICAgICAgICAvLyBhbXBlcnNhbmQgZm9sbG93ZWQgYnkgYW4gb2N0b3Rob3JwKS5cbiAgICAgICAgaWYgKHR5cGUgIT09IG5hbWUpIHtcbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNFbXB0eSwgZGlmZilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBuYW1lKSB7XG4gICAgICAgIC8vIEFuIGFtcGVyc2FuZCBmb2xsb3dlZCBieSBhbnl0aGluZyB1bmtub3duLCBhbmQgbm90IHRlcm1pbmF0ZWQsIGlzXG4gICAgICAgIC8vIGludmFsaWQuXG4gICAgICAgIGlmICh0ZXJtaW5hdGVkICYmICFlbnRpdHkpIHtcbiAgICAgICAgICB3YXJuaW5nKG5hbWVkVW5rbm93biwgMSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGVyZXMgc29tZXRoaW5nIGFmdGVyIGFuIGVudGl0eSBuYW1lIHdoaWNoIGlzIG5vdCBrbm93biwgY2FwXG4gICAgICAgICAgLy8gdGhlIHJlZmVyZW5jZS5cbiAgICAgICAgICBpZiAoZW50aXR5Q2hhcmFjdGVycyAhPT0gY2hhcmFjdGVycykge1xuICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBlbnRpdHlDaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICAgICAgZGlmZiA9IDEgKyBlbmQgLSBiZWdpblxuICAgICAgICAgICAgdGVybWluYXRlZCA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgdGVybWluYXRlZCwgd2Fybi5cbiAgICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAgIHJlYXNvbiA9IGVudGl0eUNoYXJhY3RlcnMgPyBuYW1lZE5vdFRlcm1pbmF0ZWQgOiBuYW1lZEVtcHR5XG5cbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChlbmQpXG5cbiAgICAgICAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gZXF1YWxzVG8pIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxwaGFudW1lcmljYWwoZm9sbG93aW5nKSkge1xuICAgICAgICAgICAgICAgIGVudGl0eSA9IG51bGxcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2FybmluZyhyZWFzb24sIGRpZmYpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVmZXJlbmNlID0gZW50aXR5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAvLyBBbGwgbm9uLXRlcm1pbmF0ZWQgbnVtZXJpYyBlbnRpdGllcyBhcmUgbm90IHJlbmRlcmVkLCBhbmQgdHJpZ2dlciBhXG4gICAgICAgICAgLy8gd2FybmluZy5cbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNOb3RUZXJtaW5hdGVkLCBkaWZmKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB0ZXJtaW5hdGVkIGFuZCBudW1iZXIsIHBhcnNlIGFzIGVpdGhlciBoZXhhZGVjaW1hbCBvciBkZWNpbWFsLlxuICAgICAgICByZWZlcmVuY2UgPSBwYXJzZUludChjaGFyYWN0ZXJzLCBiYXNlc1t0eXBlXSlcblxuICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIHByb2hpYml0ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgIC8vIHdpdGggcmVwbGFjZW1lbnQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAocHJvaGliaXRlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgd2FybmluZyhudW1lcmljUHJvaGliaXRlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBmcm9tQ2hhckNvZGUocmVwbGFjZW1lbnRDaGFyYWN0ZXIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluIGludmFsaWQpIHtcbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIGlzIGRpc2FsbG93ZWQsIGFuZCByZXBsYWNlXG4gICAgICAgICAgLy8gYnkgYW4gYWx0ZXJuYXRpdmUuXG4gICAgICAgICAgd2FybmluZyhudW1lcmljRGlzYWxsb3dlZCwgZGlmZilcbiAgICAgICAgICByZWZlcmVuY2UgPSBpbnZhbGlkW3JlZmVyZW5jZV1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQYXJzZSB0aGUgbnVtYmVyLlxuICAgICAgICAgIG91dHB1dCA9ICcnXG5cbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgd2FybmluZyB3aGVuIHRoZSBwYXJzZWQgbnVtYmVyIHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgICAgICBpZiAoZGlzYWxsb3dlZChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB3YXJuaW5nKG51bWVyaWNEaXNhbGxvd2VkLCBkaWZmKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFN0cmluZ2lmeSB0aGUgbnVtYmVyLlxuICAgICAgICAgIGlmIChyZWZlcmVuY2UgPiAweGZmZmYpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSAtPSAweDEwMDAwXG4gICAgICAgICAgICBvdXRwdXQgKz0gZnJvbUNoYXJDb2RlKChyZWZlcmVuY2UgPj4+ICgxMCAmIDB4M2ZmKSkgfCAweGQ4MDApXG4gICAgICAgICAgICByZWZlcmVuY2UgPSAweGRjMDAgfCAocmVmZXJlbmNlICYgMHgzZmYpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVmZXJlbmNlID0gb3V0cHV0ICsgZnJvbUNoYXJDb2RlKHJlZmVyZW5jZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGb3VuZCBpdCFcbiAgICAgIC8vIEZpcnN0IGVhdCB0aGUgcXVldWVkIGNoYXJhY3RlcnMgYXMgbm9ybWFsIHRleHQsIHRoZW4gZWF0IGFuIGVudGl0eS5cbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgZmx1c2goKVxuXG4gICAgICAgIHByZXYgPSBub3coKVxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgICAgY29sdW1uICs9IGVuZCAtIHN0YXJ0ICsgMVxuICAgICAgICByZXN1bHQucHVzaChyZWZlcmVuY2UpXG4gICAgICAgIG5leHQgPSBub3coKVxuICAgICAgICBuZXh0Lm9mZnNldCsrXG5cbiAgICAgICAgaWYgKGhhbmRsZVJlZmVyZW5jZSkge1xuICAgICAgICAgIGhhbmRsZVJlZmVyZW5jZS5jYWxsKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIHtzdGFydDogcHJldiwgZW5kOiBuZXh0fSxcbiAgICAgICAgICAgIHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXYgPSBuZXh0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB3ZSBjb3VsZCBub3QgZmluZCBhIHJlZmVyZW5jZSwgcXVldWUgdGhlIGNoZWNrZWQgY2hhcmFjdGVycyAoYXNcbiAgICAgICAgLy8gbm9ybWFsIGNoYXJhY3RlcnMpLCBhbmQgbW92ZSB0aGUgcG9pbnRlciB0byB0aGVpciBlbmQuXG4gICAgICAgIC8vIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSB3ZSBjYW4gYmUgY2VydGFpbiBuZWl0aGVyIG5ld2xpbmVzIG5vclxuICAgICAgICAvLyBhbXBlcnNhbmRzIGFyZSBpbmNsdWRlZC5cbiAgICAgICAgY2hhcmFjdGVycyA9IHZhbHVlLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKVxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJzXG4gICAgICAgIGNvbHVtbiArPSBjaGFyYWN0ZXJzLmxlbmd0aFxuICAgICAgICBpbmRleCA9IGVuZCAtIDFcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGFueXRoaW5nIG90aGVyIHRoYW4gYW4gYW1wZXJzYW5kLCBpbmNsdWRpbmcgbmV3bGluZXMgYW5kIEVPRi5cbiAgICAgIGlmIChcbiAgICAgICAgY2hhcmFjdGVyID09PSAxMCAvLyBMaW5lIGZlZWRcbiAgICAgICkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGluZXMrK1xuICAgICAgICBjb2x1bW4gPSAwXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGNoYXJhY3Rlcikge1xuICAgICAgICBxdWV1ZSArPSBmcm9tQ2hhckNvZGUoY2hhcmFjdGVyKVxuICAgICAgICBjb2x1bW4rK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmx1c2goKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgcmVkdWNlZCBub2RlcywgYW5kIGFueSBwb3NzaWJsZSB3YXJuaW5ncy5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxuXG4gIC8vIEdldCBjdXJyZW50IHBvc2l0aW9uLlxuICBmdW5jdGlvbiBub3coKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGxpbmUsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIG9mZnNldDogaW5kZXggKyAocG9zLm9mZnNldCB8fCAwKVxuICAgIH1cbiAgfVxuXG4gIC8vIOKAnFRocm934oCdIGEgcGFyc2UtZXJyb3I6IGEgd2FybmluZy5cbiAgZnVuY3Rpb24gcGFyc2VFcnJvcihjb2RlLCBvZmZzZXQpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBub3coKVxuXG4gICAgcG9zaXRpb24uY29sdW1uICs9IG9mZnNldFxuICAgIHBvc2l0aW9uLm9mZnNldCArPSBvZmZzZXRcblxuICAgIGhhbmRsZVdhcm5pbmcuY2FsbCh3YXJuaW5nQ29udGV4dCwgbWVzc2FnZXNbY29kZV0sIHBvc2l0aW9uLCBjb2RlKVxuICB9XG5cbiAgLy8gRmx1c2ggYHF1ZXVlYCAobm9ybWFsIHRleHQpLlxuICAvLyBNYWNybyBpbnZva2VkIGJlZm9yZSBlYWNoIGVudGl0eSBhbmQgYXQgdGhlIGVuZCBvZiBgdmFsdWVgLlxuICAvLyBEb2VzIG5vdGhpbmcgd2hlbiBgcXVldWVgIGlzIGVtcHR5LlxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICBpZiAocXVldWUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHF1ZXVlKVxuXG4gICAgICBpZiAoaGFuZGxlVGV4dCkge1xuICAgICAgICBoYW5kbGVUZXh0LmNhbGwodGV4dENvbnRleHQsIHF1ZXVlLCB7c3RhcnQ6IHByZXYsIGVuZDogbm93KCl9KVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIHVuaWNvZGUgcmFuZ2UuXG5mdW5jdGlvbiBwcm9oaWJpdGVkKGNvZGUpIHtcbiAgcmV0dXJuIChjb2RlID49IDB4ZDgwMCAmJiBjb2RlIDw9IDB4ZGZmZikgfHwgY29kZSA+IDB4MTBmZmZmXG59XG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGlzIGRpc2FsbG93ZWQuXG5mdW5jdGlvbiBkaXNhbGxvd2VkKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSAweDAwMDEgJiYgY29kZSA8PSAweDAwMDgpIHx8XG4gICAgY29kZSA9PT0gMHgwMDBiIHx8XG4gICAgKGNvZGUgPj0gMHgwMDBkICYmIGNvZGUgPD0gMHgwMDFmKSB8fFxuICAgIChjb2RlID49IDB4MDA3ZiAmJiBjb2RlIDw9IDB4MDA5ZikgfHxcbiAgICAoY29kZSA+PSAweGZkZDAgJiYgY29kZSA8PSAweGZkZWYpIHx8XG4gICAgKGNvZGUgJiAweGZmZmYpID09PSAweGZmZmYgfHxcbiAgICAoY29kZSAmIDB4ZmZmZikgPT09IDB4ZmZmZVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gRmFjdG9yeSB0byBjcmVhdGUgYW4gZW50aXR5IGRlY29kZXIuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCkge1xuICBkZWNvZGVyLnJhdyA9IGRlY29kZVJhd1xuXG4gIHJldHVybiBkZWNvZGVyXG5cbiAgLy8gTm9ybWFsaXplIGBwb3NpdGlvbmAgdG8gYWRkIGFuIGBpbmRlbnRgLlxuICBmdW5jdGlvbiBub3JtYWxpemUocG9zaXRpb24pIHtcbiAgICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgcmVzdWx0ID0gW11cblxuICAgIHdoaWxlICgrK2xpbmUpIHtcbiAgICAgIGlmICghKGxpbmUgaW4gb2Zmc2V0cykpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goKG9mZnNldHNbbGluZV0gfHwgMCkgKyAxKVxuICAgIH1cblxuICAgIHJldHVybiB7c3RhcnQ6IHBvc2l0aW9uLCBpbmRlbnQ6IHJlc3VsdH1cbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIHRleHQtbm9kZXMuXG4gIGZ1bmN0aW9uIGRlY29kZXIodmFsdWUsIHBvc2l0aW9uLCBoYW5kbGVyKSB7XG4gICAgZW50aXRpZXModmFsdWUsIHtcbiAgICAgIHBvc2l0aW9uOiBub3JtYWxpemUocG9zaXRpb24pLFxuICAgICAgd2FybmluZzogaGFuZGxlV2FybmluZyxcbiAgICAgIHRleHQ6IGhhbmRsZXIsXG4gICAgICByZWZlcmVuY2U6IGhhbmRsZXIsXG4gICAgICB0ZXh0Q29udGV4dDogY3R4LFxuICAgICAgcmVmZXJlbmNlQ29udGV4dDogY3R4XG4gICAgfSlcbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIGEgc3RyaW5nLlxuICBmdW5jdGlvbiBkZWNvZGVSYXcodmFsdWUsIHBvc2l0aW9uLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzKFxuICAgICAgdmFsdWUsXG4gICAgICB4dGVuZChvcHRpb25zLCB7cG9zaXRpb246IG5vcm1hbGl6ZShwb3NpdGlvbiksIHdhcm5pbmc6IGhhbmRsZVdhcm5pbmd9KVxuICAgIClcbiAgfVxuXG4gIC8vIEhhbmRsZSBhIHdhcm5pbmcuXG4gIC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wYXJzZS1lbnRpdGllcz4gZm9yIHRoZSB3YXJuaW5ncy5cbiAgZnVuY3Rpb24gaGFuZGxlV2FybmluZyhyZWFzb24sIHBvc2l0aW9uLCBjb2RlKSB7XG4gICAgaWYgKGNvZGUgIT09IDMpIHtcbiAgICAgIGN0eC5maWxlLm1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gQ29uc3RydWN0IGEgdG9rZW5pemVyLiAgVGhpcyBjcmVhdGVzIGJvdGggYHRva2VuaXplSW5saW5lYCBhbmQgYHRva2VuaXplQmxvY2tgLlxuZnVuY3Rpb24gZmFjdG9yeSh0eXBlKSB7XG4gIHJldHVybiB0b2tlbml6ZVxuXG4gIC8vIFRva2VuaXplciBmb3IgYSBib3VuZCBgdHlwZWAuXG4gIGZ1bmN0aW9uIHRva2VuaXplKHZhbHVlLCBsb2NhdGlvbikge1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHZhciBvZmZzZXQgPSBzZWxmLm9mZnNldFxuICAgIHZhciB0b2tlbnMgPSBbXVxuICAgIHZhciBtZXRob2RzID0gc2VsZlt0eXBlICsgJ01ldGhvZHMnXVxuICAgIHZhciB0b2tlbml6ZXJzID0gc2VsZlt0eXBlICsgJ1Rva2VuaXplcnMnXVxuICAgIHZhciBsaW5lID0gbG9jYXRpb24ubGluZVxuICAgIHZhciBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW5cbiAgICB2YXIgaW5kZXhcbiAgICB2YXIgbGVuZ3RoXG4gICAgdmFyIG1ldGhvZFxuICAgIHZhciBuYW1lXG4gICAgdmFyIG1hdGNoZWRcbiAgICB2YXIgdmFsdWVMZW5ndGhcblxuICAgIC8vIFRyaW0gd2hpdGUgc3BhY2Ugb25seSBsaW5lcy5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9rZW5zXG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIG9uIGBlYXRgLlxuICAgIGVhdC5ub3cgPSBub3dcbiAgICBlYXQuZmlsZSA9IHNlbGYuZmlsZVxuXG4gICAgLy8gU3luYyBpbml0aWFsIG9mZnNldC5cbiAgICB1cGRhdGVQb3NpdGlvbignJylcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBgdmFsdWVgLCBhbmQgaXRlcmF0ZSBvdmVyIGFsbCB0b2tlbml6ZXJzLiAgV2hlbiBvbmUgZWF0c1xuICAgIC8vIHNvbWV0aGluZywgcmUtaXRlcmF0ZSB3aXRoIHRoZSByZW1haW5pbmcgdmFsdWUuICBJZiBubyB0b2tlbml6ZXIgZWF0cyxcbiAgICAvLyBzb21ldGhpbmcgZmFpbGVkIChzaG91bGQgbm90IGhhcHBlbikgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgd2hpbGUgKHZhbHVlKSB7XG4gICAgICBpbmRleCA9IC0xXG4gICAgICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICAgICAgbWF0Y2hlZCA9IGZhbHNlXG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG5hbWUgPSBtZXRob2RzW2luZGV4XVxuICAgICAgICBtZXRob2QgPSB0b2tlbml6ZXJzW25hbWVdXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGhvZCAmJlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovICghbWV0aG9kLm9ubHlBdFN0YXJ0IHx8IHNlbGYuYXRTdGFydCkgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpc3QgfHwgIXNlbGYuaW5MaXN0KSAmJlxuICAgICAgICAgICghbWV0aG9kLm5vdEluQmxvY2sgfHwgIXNlbGYuaW5CbG9jaykgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpbmsgfHwgIXNlbGYuaW5MaW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuXG4gICAgICAgICAgbWV0aG9kLmFwcGx5KHNlbGYsIFtlYXQsIHZhbHVlXSlcblxuICAgICAgICAgIG1hdGNoZWQgPSB2YWx1ZUxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoXG5cbiAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgICAgc2VsZi5maWxlLmZhaWwobmV3IEVycm9yKCdJbmZpbml0ZSBsb29wJyksIGVhdC5ub3coKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmVvZiA9IG5vdygpXG5cbiAgICByZXR1cm4gdG9rZW5zXG5cbiAgICAvLyBVcGRhdGUgbGluZSwgY29sdW1uLCBhbmQgb2Zmc2V0IGJhc2VkIG9uIGB2YWx1ZWAuXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oc3VidmFsdWUpIHtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAtMVxuICAgICAgdmFyIGluZGV4ID0gc3VidmFsdWUuaW5kZXhPZignXFxuJylcblxuICAgICAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXhcbiAgICAgICAgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiA9IHN1YnZhbHVlLmxlbmd0aCAtIGxhc3RJbmRleFxuICAgICAgfVxuXG4gICAgICBpZiAobGluZSBpbiBvZmZzZXQpIHtcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb2x1bW4gKz0gb2Zmc2V0W2xpbmVdXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uIDw9IG9mZnNldFtsaW5lXSkge1xuICAgICAgICAgIGNvbHVtbiA9IG9mZnNldFtsaW5lXSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBvZmZzZXQuICBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgZWF0ZW4gdG8gcmV0cmlldmUgdGhlXG4gICAgLy8gcmFuZ2XigJlzIG9mZnNldHMuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KCkge1xuICAgICAgdmFyIGluZGVudGF0aW9uID0gW11cbiAgICAgIHZhciBwb3MgPSBsaW5lICsgMVxuXG4gICAgICAvLyBEb25lLiAgQ2FsbGVkIHdoZW4gdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGVhdGVuIHRvIHJldHJpZXZlIHRoZSByYW5nZeKAmXNcbiAgICAgIC8vIG9mZnNldHMuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBsYXN0ID0gbGluZSArIDFcblxuICAgICAgICB3aGlsZSAocG9zIDwgbGFzdCkge1xuICAgICAgICAgIGluZGVudGF0aW9uLnB1c2goKG9mZnNldFtwb3NdIHx8IDApICsgMSlcblxuICAgICAgICAgIHBvcysrXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZW50YXRpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uXG4gICAgZnVuY3Rpb24gbm93KCkge1xuICAgICAgdmFyIHBvcyA9IHtsaW5lOiBsaW5lLCBjb2x1bW46IGNvbHVtbn1cblxuICAgICAgcG9zLm9mZnNldCA9IHNlbGYudG9PZmZzZXQocG9zKVxuXG4gICAgICByZXR1cm4gcG9zXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbm9kZS5cbiAgICBmdW5jdGlvbiBQb3NpdGlvbihzdGFydCkge1xuICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0XG4gICAgICB0aGlzLmVuZCA9IG5vdygpXG4gICAgfVxuXG4gICAgLy8gVGhyb3cgd2hlbiBhIHZhbHVlIGlzIGluY29ycmVjdGx5IGVhdGVuLiAgVGhpcyBzaG91bGRu4oCZdCBoYXBwZW4gYnV0IHdpbGxcbiAgICAvLyB0aHJvdyBvbiBuZXcsIGluY29ycmVjdCBydWxlcy5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodmFsdWUuc2xpY2UoMCwgc3VidmFsdWUubGVuZ3RoKSAhPT0gc3VidmFsdWUpIHtcbiAgICAgICAgLy8gQ2FwdHVyZSBzdGFjay10cmFjZS5cbiAgICAgICAgc2VsZi5maWxlLmZhaWwoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ0luY29ycmVjdGx5IGVhdGVuIHZhbHVlOiBwbGVhc2UgcmVwb3J0IHRoaXMgd2FybmluZyBvbiBodHRwczovL2dpdC5pby92ZzVGdCdcbiAgICAgICAgICApLFxuICAgICAgICAgIG5vdygpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXJrIHBvc2l0aW9uIGFuZCBwYXRjaCBgbm9kZS5wb3NpdGlvbmAuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oKSB7XG4gICAgICB2YXIgYmVmb3JlID0gbm93KClcblxuICAgICAgcmV0dXJuIHVwZGF0ZVxuXG4gICAgICAvLyBBZGQgdGhlIHBvc2l0aW9uIHRvIGEgbm9kZS5cbiAgICAgIGZ1bmN0aW9uIHVwZGF0ZShub2RlLCBpbmRlbnQpIHtcbiAgICAgICAgdmFyIHByZXYgPSBub2RlLnBvc2l0aW9uXG4gICAgICAgIHZhciBzdGFydCA9IHByZXYgPyBwcmV2LnN0YXJ0IDogYmVmb3JlXG4gICAgICAgIHZhciBjb21iaW5lZCA9IFtdXG4gICAgICAgIHZhciBuID0gcHJldiAmJiBwcmV2LmVuZC5saW5lXG4gICAgICAgIHZhciBsID0gYmVmb3JlLmxpbmVcblxuICAgICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KVxuXG4gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbHJlYWR5IGEgYHBvc2l0aW9uYCwgdGhpcyBub2RlIHdhcyBtZXJnZWQuICBGaXhpbmdcbiAgICAgICAgLy8gYHN0YXJ0YCB3YXNu4oCZdCBoYXJkLCBidXQgdGhlIGluZGVudCBpcyBkaWZmZXJlbnQuICBFc3BlY2lhbGx5XG4gICAgICAgIC8vIGJlY2F1c2Ugc29tZSBpbmZvcm1hdGlvbiwgdGhlIGluZGVudCBiZXR3ZWVuIGBuYCBhbmQgYGxgIHdhc27igJl0XG4gICAgICAgIC8vIHRyYWNrZWQuICBMdWNraWx5LCB0aGF0IHNwYWNlIGlzIChzaG91bGQgYmU/KSBlbXB0eSwgc28gd2UgY2FuXG4gICAgICAgIC8vIHNhZmVseSBjaGVjayBmb3IgaXQgbm93LlxuICAgICAgICBpZiAocHJldiAmJiBpbmRlbnQgJiYgcHJldi5pbmRlbnQpIHtcbiAgICAgICAgICBjb21iaW5lZCA9IHByZXYuaW5kZW50XG5cbiAgICAgICAgICBpZiAobiA8IGwpIHtcbiAgICAgICAgICAgIHdoaWxlICgrK24gPCBsKSB7XG4gICAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goKG9mZnNldFtuXSB8fCAwKSArIDEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goYmVmb3JlLmNvbHVtbilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmRlbnQgPSBjb21iaW5lZC5jb25jYXQoaW5kZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5wb3NpdGlvbi5pbmRlbnQgPSBpbmRlbnQgfHwgW11cblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBgbm9kZWAgdG8gYHBhcmVudGBzIGNoaWxkcmVuIG9yIHRvIGB0b2tlbnNgLiAgUGVyZm9ybXMgbWVyZ2VzIHdoZXJlXG4gICAgLy8gcG9zc2libGUuXG4gICAgZnVuY3Rpb24gYWRkKG5vZGUsIHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50ID8gcGFyZW50LmNoaWxkcmVuIDogdG9rZW5zXG4gICAgICB2YXIgcHJldiA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICB2YXIgZm5cblxuICAgICAgaWYgKFxuICAgICAgICBwcmV2ICYmXG4gICAgICAgIG5vZGUudHlwZSA9PT0gcHJldi50eXBlICYmXG4gICAgICAgIChub2RlLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlLnR5cGUgPT09ICdibG9ja3F1b3RlJykgJiZcbiAgICAgICAgbWVyZ2VhYmxlKHByZXYpICYmXG4gICAgICAgIG1lcmdlYWJsZShub2RlKVxuICAgICAgKSB7XG4gICAgICAgIGZuID0gbm9kZS50eXBlID09PSAndGV4dCcgPyBtZXJnZVRleHQgOiBtZXJnZUJsb2NrcXVvdGVcbiAgICAgICAgbm9kZSA9IGZuLmNhbGwoc2VsZiwgcHJldiwgbm9kZSlcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgIT09IHByZXYpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5hdFN0YXJ0ICYmIHRva2Vucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgc2VsZi5leGl0U3RhcnQoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBgc3VidmFsdWVgIGZyb20gYHZhbHVlYC4gIGBzdWJ2YWx1ZWAgbXVzdCBiZSBhdCB0aGUgc3RhcnQgb2ZcbiAgICAvLyBgdmFsdWVgLlxuICAgIGZ1bmN0aW9uIGVhdChzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGluZGVudCA9IGdldE9mZnNldCgpXG4gICAgICB2YXIgcG9zID0gcG9zaXRpb24oKVxuICAgICAgdmFyIGN1cnJlbnQgPSBub3coKVxuXG4gICAgICB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSlcblxuICAgICAgYXBwbHkucmVzZXQgPSByZXNldFxuICAgICAgcmVzZXQudGVzdCA9IHRlc3RcbiAgICAgIGFwcGx5LnRlc3QgPSB0ZXN0XG5cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3VidmFsdWUubGVuZ3RoKVxuXG4gICAgICB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSlcblxuICAgICAgaW5kZW50ID0gaW5kZW50KClcblxuICAgICAgcmV0dXJuIGFwcGx5XG5cbiAgICAgIC8vIEFkZCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhZGQgYHBvc2l0aW9uYCB0byB0aGUgcmV0dXJuZWQgbm9kZSwgYW5kXG4gICAgICAvLyByZXR1cm4gdGhlIG5vZGUuXG4gICAgICBmdW5jdGlvbiBhcHBseShub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcyhhZGQocG9zKG5vZGUpLCBwYXJlbnQpLCBpbmRlbnQpXG4gICAgICB9XG5cbiAgICAgIC8vIEZ1bmN0aW9ucyBqdXN0IGxpa2UgYXBwbHksIGJ1dCByZXNldHMgdGhlIGNvbnRlbnQ6IHRoZSBsaW5lIGFuZFxuICAgICAgLy8gY29sdW1uIGFyZSByZXZlcnNlZCwgYW5kIHRoZSBlYXRlbiB2YWx1ZSBpcyByZS1hZGRlZC4gICBUaGlzIGlzXG4gICAgICAvLyB1c2VmdWwgZm9yIG5vZGVzIHdpdGggYSBzaW5nbGUgdHlwZSBvZiBjb250ZW50LCBzdWNoIGFzIGxpc3RzIGFuZFxuICAgICAgLy8gdGFibGVzLiAgU2VlIGBhcHBseWAgYWJvdmUgZm9yIHdoYXQgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuXG4gICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBhcHBseS5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuXG4gICAgICAvLyBUZXN0IHRoZSBwb3NpdGlvbiwgYWZ0ZXIgZWF0aW5nLCBhbmQgcmV2ZXJzZSB0byBhIG5vdC1lYXRlbiBzdGF0ZS5cbiAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBwb3Moe30pXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIG1lcmdlYWJsZSB3aXRoIGFkamFjZW50IG5vZGVzLlxuZnVuY3Rpb24gbWVyZ2VhYmxlKG5vZGUpIHtcbiAgdmFyIHN0YXJ0XG4gIHZhciBlbmRcblxuICBpZiAobm9kZS50eXBlICE9PSAndGV4dCcgfHwgIW5vZGUucG9zaXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3RhcnQgPSBub2RlLnBvc2l0aW9uLnN0YXJ0XG4gIGVuZCA9IG5vZGUucG9zaXRpb24uZW5kXG5cbiAgLy8gT25seSBtZXJnZSBub2RlcyB3aGljaCBvY2N1cHkgdGhlIHNhbWUgc2l6ZSBhcyB0aGVpciBgdmFsdWVgLlxuICByZXR1cm4gKFxuICAgIHN0YXJ0LmxpbmUgIT09IGVuZC5saW5lIHx8IGVuZC5jb2x1bW4gLSBzdGFydC5jb2x1bW4gPT09IG5vZGUudmFsdWUubGVuZ3RoXG4gIClcbn1cblxuLy8gTWVyZ2UgdHdvIHRleHQgbm9kZXM6IGBub2RlYCBpbnRvIGBwcmV2YC5cbmZ1bmN0aW9uIG1lcmdlVGV4dChwcmV2LCBub2RlKSB7XG4gIHByZXYudmFsdWUgKz0gbm9kZS52YWx1ZVxuXG4gIHJldHVybiBwcmV2XG59XG5cbi8vIE1lcmdlIHR3byBibG9ja3F1b3RlczogYG5vZGVgIGludG8gYHByZXZgLCB1bmxlc3MgaW4gQ29tbW9uTWFyayBvciBnZm0gbW9kZXMuXG5mdW5jdGlvbiBtZXJnZUJsb2NrcXVvdGUocHJldiwgbm9kZSkge1xuICBpZiAodGhpcy5vcHRpb25zLmNvbW1vbm1hcmsgfHwgdGhpcy5vcHRpb25zLmdmbSkge1xuICAgIHJldHVybiBub2RlXG4gIH1cblxuICBwcmV2LmNoaWxkcmVuID0gcHJldi5jaGlsZHJlbi5jb25jYXQobm9kZS5jaGlsZHJlbilcblxuICByZXR1cm4gcHJldlxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlc1xuXG52YXIgZGVmYXVsdHMgPSBbXG4gICdcXFxcJyxcbiAgJ2AnLFxuICAnKicsXG4gICd7JyxcbiAgJ30nLFxuICAnWycsXG4gICddJyxcbiAgJygnLFxuICAnKScsXG4gICcjJyxcbiAgJysnLFxuICAnLScsXG4gICcuJyxcbiAgJyEnLFxuICAnXycsXG4gICc+J1xuXVxuXG52YXIgZ2ZtID0gZGVmYXVsdHMuY29uY2F0KFsnficsICd8J10pXG5cbnZhciBjb21tb25tYXJrID0gZ2ZtLmNvbmNhdChbXG4gICdcXG4nLFxuICAnXCInLFxuICAnJCcsXG4gICclJyxcbiAgJyYnLFxuICBcIidcIixcbiAgJywnLFxuICAnLycsXG4gICc6JyxcbiAgJzsnLFxuICAnPCcsXG4gICc9JyxcbiAgJz8nLFxuICAnQCcsXG4gICdeJ1xuXSlcblxuZXNjYXBlcy5kZWZhdWx0ID0gZGVmYXVsdHNcbmVzY2FwZXMuZ2ZtID0gZ2ZtXG5lc2NhcGVzLmNvbW1vbm1hcmsgPSBjb21tb25tYXJrXG5cbi8vIEdldCBtYXJrZG93biBlc2NhcGVzLlxuZnVuY3Rpb24gZXNjYXBlcyhvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cblxuICBpZiAoc2V0dGluZ3MuY29tbW9ubWFyaykge1xuICAgIHJldHVybiBjb21tb25tYXJrXG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3MuZ2ZtID8gZ2ZtIDogZGVmYXVsdHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdoZ3JvdXAnLFxuICAnaHInLFxuICAnaHRtbCcsXG4gICdpZnJhbWUnLFxuICAnbGVnZW5kJyxcbiAgJ2xpJyxcbiAgJ2xpbmsnLFxuICAnbWFpbicsXG4gICdtZW51JyxcbiAgJ21lbnVpdGVtJyxcbiAgJ21ldGEnLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3ByZScsXG4gICdzZWN0aW9uJyxcbiAgJ3NvdXJjZScsXG4gICd0aXRsZScsXG4gICdzdW1tYXJ5JyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpdGxlJyxcbiAgJ3RyJyxcbiAgJ3RyYWNrJyxcbiAgJ3VsJ1xuXVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvbjogdHJ1ZSxcbiAgZ2ZtOiB0cnVlLFxuICBjb21tb25tYXJrOiBmYWxzZSxcbiAgZm9vdG5vdGVzOiBmYWxzZSxcbiAgcGVkYW50aWM6IGZhbHNlLFxuICBibG9ja3M6IHJlcXVpcmUoJy4vYmxvY2stZWxlbWVudHMnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlc2NhcGVzID0gcmVxdWlyZSgnbWFya2Rvd24tZXNjYXBlcycpXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRPcHRpb25zXG5cbmZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGN1cnJlbnQgPSBzZWxmLm9wdGlvbnNcbiAgdmFyIGtleVxuICB2YXIgdmFsdWVcblxuICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IHh0ZW5kKG9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGAnICsgb3B0aW9ucyArICdgIGZvciBzZXR0aW5nIGBvcHRpb25zYCcpXG4gIH1cblxuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIHZhbHVlID0gb3B0aW9uc1trZXldXG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSBjdXJyZW50W2tleV1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoa2V5ICE9PSAnYmxvY2tzJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHxcbiAgICAgIChrZXkgPT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnZhbGlkIHZhbHVlIGAnICsgdmFsdWUgKyAnYCBmb3Igc2V0dGluZyBgb3B0aW9ucy4nICsga2V5ICsgJ2AnXG4gICAgICApXG4gICAgfVxuXG4gICAgb3B0aW9uc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIHNlbGYub3B0aW9ucyA9IG9wdGlvbnNcbiAgc2VsZi5lc2NhcGUgPSBlc2NhcGVzKG9wdGlvbnMpXG5cbiAgcmV0dXJuIHNlbGZcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVQb3NpdGlvblxuXG5mdW5jdGlvbiByZW1vdmVQb3NpdGlvbihub2RlLCBmb3JjZSkge1xuICB2aXNpdChub2RlLCBmb3JjZSA/IGhhcmQgOiBzb2Z0KVxuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiBoYXJkKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGUucG9zaXRpb25cbn1cblxuZnVuY3Rpb24gc29mdChub2RlKSB7XG4gIG5vZGUucG9zaXRpb24gPSB1bmRlZmluZWRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgcmVtb3ZlUG9zaXRpb24gPSByZXF1aXJlKCd1bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsaW5lQnJlYWtzRXhwcmVzc2lvbiA9IC9cXHJcXG58XFxyL2dcblxuLy8gUGFyc2UgdGhlIGJvdW5kIGZpbGUuXG5mdW5jdGlvbiBwYXJzZSgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciB2YWx1ZSA9IFN0cmluZyhzZWxmLmZpbGUpXG4gIHZhciBzdGFydCA9IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH1cbiAgdmFyIGNvbnRlbnQgPSB4dGVuZChzdGFydClcbiAgdmFyIG5vZGVcblxuICAvLyBDbGVhbiBub24tdW5peCBuZXdsaW5lczogYFxcclxcbmAgYW5kIGBcXHJgIGFyZSBhbGwgY2hhbmdlZCB0byBgXFxuYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGFmZmVjdCBwb3NpdGlvbmFsIGluZm9ybWF0aW9uLlxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobGluZUJyZWFrc0V4cHJlc3Npb24sIGxpbmVGZWVkKVxuXG4gIC8vIEJPTS5cbiAgaWYgKHZhbHVlLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmVmZikge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSlcblxuICAgIGNvbnRlbnQuY29sdW1uKytcbiAgICBjb250ZW50Lm9mZnNldCsrXG4gIH1cblxuICBub2RlID0ge1xuICAgIHR5cGU6ICdyb290JyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUJsb2NrKHZhbHVlLCBjb250ZW50KSxcbiAgICBwb3NpdGlvbjoge3N0YXJ0OiBzdGFydCwgZW5kOiBzZWxmLmVvZiB8fCB4dGVuZChzdGFydCl9XG4gIH1cblxuICBpZiAoIXNlbGYub3B0aW9ucy5wb3NpdGlvbikge1xuICAgIHJlbW92ZVBvc2l0aW9uKG5vZGUsIHRydWUpXG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ld2xpbmVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcblxuZnVuY3Rpb24gbmV3bGluZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcXVldWVcbiAgdmFyIGluZGV4XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlID0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGVhdChzdWJ2YWx1ZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1UcmFpbGluZ0xpbmVzXG5cbnZhciBsaW5lID0gJ1xcbidcblxuLy8gUmVtb3ZlIGZpbmFsIG5ld2xpbmUgY2hhcmFjdGVycyBmcm9tIGB2YWx1ZWAuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdMaW5lcyh2YWx1ZSkge1xuICB2YXIgdmFsID0gU3RyaW5nKHZhbHVlKVxuICB2YXIgaW5kZXggPSB2YWwubGVuZ3RoXG5cbiAgd2hpbGUgKHZhbC5jaGFyQXQoLS1pbmRleCkgPT09IGxpbmUpIHtcbiAgICAvLyBFbXB0eVxuICB9XG5cbiAgcmV0dXJuIHZhbC5zbGljZSgwLCBpbmRleCArIDEpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGNvZGVJbmRlbnQgPSByZXBlYXQoc3BhY2UsIHRhYlNpemUpXG5cbmZ1bmN0aW9uIGluZGVudGVkQ29kZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudCA9ICcnXG4gIHZhciBzdWJ2YWx1ZVF1ZXVlID0gJydcbiAgdmFyIGNvbnRlbnRRdWV1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGJsYW5rUXVldWVcbiAgdmFyIGluZGVudFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGluZGVudCkge1xuICAgICAgaW5kZW50ID0gZmFsc2VcblxuICAgICAgc3VidmFsdWUgKz0gc3VidmFsdWVRdWV1ZVxuICAgICAgY29udGVudCArPSBjb250ZW50UXVldWVcbiAgICAgIHN1YnZhbHVlUXVldWUgPSAnJ1xuICAgICAgY29udGVudFF1ZXVlID0gJydcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgc3VidmFsdWVRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50UXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICAgICAgY29udGVudFF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBzdWJ2YWx1ZVF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBzcGFjZSAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMikgPT09IGNoYXJhY3RlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMykgPT09IGNoYXJhY3RlclxuICAgICkge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjb2RlSW5kZW50XG4gICAgICBpbmRleCArPSAzXG4gICAgICBpbmRlbnQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgc3VidmFsdWVRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGVudCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgYmxhbmtRdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHRhYiB8fCBjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgIGJsYW5rUXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGJsYW5rUXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGNvbnRlbnRRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9XG4gIH1cblxuICBpZiAoY29udGVudCkge1xuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2NvZGUnLFxuICAgICAgbGFuZzogbnVsbCxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgICB2YWx1ZTogdHJpbShjb250ZW50KVxuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZlbmNlZENvZGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgdGlsZGUgPSAnfidcbnZhciBncmF2ZUFjY2VudCA9ICdgJ1xuXG52YXIgbWluRmVuY2VDb3VudCA9IDNcbnZhciB0YWJTaXplID0gNFxuXG5mdW5jdGlvbiBmZW5jZWRDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgZmVuY2VDb3VudFxuICB2YXIgbWFya2VyXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGZsYWdcbiAgdmFyIGxhbmdcbiAgdmFyIG1ldGFcbiAgdmFyIHF1ZXVlXG4gIHZhciBjb250ZW50XG4gIHZhciBleGRlbnRlZENvbnRlbnRcbiAgdmFyIGNsb3NpbmdcbiAgdmFyIGV4ZGVudGVkQ2xvc2luZ1xuICB2YXIgaW5kZW50XG4gIHZhciBub3dcblxuICBpZiAoIWdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IGluaXRpYWwgc3BhY2luZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaW5kZW50ID0gaW5kZXhcblxuICAvLyBFYXQgdGhlIGZlbmNlLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gdGlsZGUgJiYgY2hhcmFjdGVyICE9PSBncmF2ZUFjY2VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgZmVuY2VDb3VudCA9IDFcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGZlbmNlQ291bnQrK1xuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChmZW5jZUNvdW50IDwgbWluRmVuY2VDb3VudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRWF0IHNwYWNpbmcgYmVmb3JlIGZsYWcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCBmbGFnLlxuICBmbGFnID0gJydcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHxcbiAgICAgIChtYXJrZXIgPT09IGdyYXZlQWNjZW50ICYmIGNoYXJhY3RlciA9PT0gbWFya2VyKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuXG4gIHN1YnZhbHVlICs9IGZsYWdcbiAgZmxhZyA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGZsYWcpLCBub3cpXG5cbiAgaWYgKHF1ZXVlKSB7XG4gICAgc3VidmFsdWUgKz0gcXVldWVcbiAgfVxuXG4gIHF1ZXVlID0gJydcbiAgY2xvc2luZyA9ICcnXG4gIGV4ZGVudGVkQ2xvc2luZyA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuICBleGRlbnRlZENvbnRlbnQgPSAnJ1xuICB2YXIgc2tpcCA9IHRydWVcblxuICAvLyBFYXQgY29udGVudC5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGNvbnRlbnQgKz0gY2xvc2luZ1xuICAgIGV4ZGVudGVkQ29udGVudCArPSBleGRlbnRlZENsb3NpbmdcbiAgICBjbG9zaW5nID0gJydcbiAgICBleGRlbnRlZENsb3NpbmcgPSAnJ1xuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBsaW5lIGZlZWQgaXMgaWdub3JlZC4gT3RoZXJzIGFyZW7igJl0LlxuICAgIGlmIChza2lwKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIHNraXAgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgIH1cblxuICAgIHF1ZXVlID0gJydcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgY2xvc2luZyArPSBxdWV1ZVxuICAgIGV4ZGVudGVkQ2xvc2luZyArPSBxdWV1ZS5zbGljZShpbmRlbnQpXG5cbiAgICBpZiAocXVldWUubGVuZ3RoID49IHRhYlNpemUpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgZXhkZW50ZWRDbG9zaW5nICs9IHF1ZXVlXG5cbiAgICBpZiAocXVldWUubGVuZ3RoIDwgZmVuY2VDb3VudCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBjbG9zaW5nXG5cbiAgLy8gR2V0IGxhbmcgYW5kIG1ldGEgZnJvbSB0aGUgZmxhZy5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBmbGFnLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gZmxhZy5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgaWYgKCFsYW5nKSB7XG4gICAgICAgIGxhbmcgPSBmbGFnLnNsaWNlKDAsIGluZGV4KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGFuZykge1xuICAgICAgbWV0YSA9IGZsYWcuc2xpY2UoaW5kZXgpXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnY29kZScsXG4gICAgbGFuZzogbGFuZyB8fCBmbGFnIHx8IG51bGwsXG4gICAgbWV0YTogbWV0YSB8fCBudWxsLFxuICAgIHZhbHVlOiBleGRlbnRlZENvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludGVycnVwdFxuXG5mdW5jdGlvbiBpbnRlcnJ1cHQoaW50ZXJydXB0b3JzLCB0b2tlbml6ZXJzLCBjdHgsIHBhcmFtcykge1xuICB2YXIgbGVuZ3RoID0gaW50ZXJydXB0b3JzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgaW50ZXJydXB0b3JcbiAgdmFyIGNvbmZpZ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaW50ZXJydXB0b3IgPSBpbnRlcnJ1cHRvcnNbaW5kZXhdXG4gICAgY29uZmlnID0gaW50ZXJydXB0b3JbMV0gfHwge31cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5wZWRhbnRpYyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjb25maWcucGVkYW50aWMgIT09IGN0eC5vcHRpb25zLnBlZGFudGljXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbmZpZy5jb21tb25tYXJrICE9PSBjdHgub3B0aW9ucy5jb21tb25tYXJrXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh0b2tlbml6ZXJzW2ludGVycnVwdG9yWzBdXS5hcHBseShjdHgsIHBhcmFtcykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gYmxvY2txdW90ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBibG9ja3F1b3RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIG9mZnNldHMgPSBzZWxmLm9mZnNldFxuICB2YXIgdG9rZW5pemVycyA9IHNlbGYuYmxvY2tUb2tlbml6ZXJzXG4gIHZhciBpbnRlcnJ1cHRvcnMgPSBzZWxmLmludGVycnVwdEJsb2NrcXVvdGVcbiAgdmFyIG5vdyA9IGVhdC5ub3coKVxuICB2YXIgY3VycmVudExpbmUgPSBub3cubGluZVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIgY29udGVudHMgPSBbXVxuICB2YXIgaW5kZW50cyA9IFtdXG4gIHZhciBhZGRcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciByZXN0XG4gIHZhciBuZXh0SW5kZXhcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHN0YXJ0SW5kZXhcbiAgdmFyIHByZWZpeGVkXG4gIHZhciBleGl0XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIG5leHRJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHN0YXJ0SW5kZXggPSBpbmRleFxuICAgIHByZWZpeGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBncmVhdGVyVGhhbikge1xuICAgICAgaW5kZXgrK1xuICAgICAgcHJlZml4ZWQgPSB0cnVlXG5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB2YWx1ZS5zbGljZShpbmRleCwgbmV4dEluZGV4KVxuXG4gICAgaWYgKCFwcmVmaXhlZCAmJiAhdHJpbShjb250ZW50KSkge1xuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmICghcHJlZml4ZWQpIHtcbiAgICAgIHJlc3QgPSB2YWx1ZS5zbGljZShpbmRleClcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgcmVzdCwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZSA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gY29udGVudCA6IHZhbHVlLnNsaWNlKHN0YXJ0SW5kZXgsIG5leHRJbmRleClcblxuICAgIGluZGVudHMucHVzaChpbmRleCAtIHN0YXJ0SW5kZXgpXG4gICAgdmFsdWVzLnB1c2gobGluZSlcbiAgICBjb250ZW50cy5wdXNoKGNvbnRlbnQpXG5cbiAgICBpbmRleCA9IG5leHRJbmRleCArIDFcbiAgfVxuXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gaW5kZW50cy5sZW5ndGhcbiAgYWRkID0gZWF0KHZhbHVlcy5qb2luKGxpbmVGZWVkKSlcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgaW5kZW50c1tpbmRleF1cbiAgICBjdXJyZW50TGluZSsrXG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckJsb2NrKClcbiAgY29udGVudHMgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudHMuam9pbihsaW5lRmVlZCksIG5vdylcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGFkZCh7dHlwZTogJ2Jsb2NrcXVvdGUnLCBjaGlsZHJlbjogY29udGVudHN9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXR4SGVhZGluZ1xuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBudW1iZXJTaWduID0gJyMnXG5cbnZhciBtYXhGZW5jZUNvdW50ID0gNlxuXG5mdW5jdGlvbiBhdHhIZWFkaW5nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnQgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBxdWV1ZVxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBzcGFjaW5nLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgLy8gRWF0IGhhc2hlcy5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKCsraW5kZXggPD0gbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gbnVtYmVyU2lnbikge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBkZXB0aCsrXG4gIH1cblxuICBpZiAoZGVwdGggPiBtYXhGZW5jZUNvdW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWRlcHRoIHx8ICghcGVkYW50aWMgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG51bWJlclNpZ24pKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG5cbiAgLy8gRWF0IGludGVybWVkaWF0ZSB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gbm90IGluIHBlZGFudGljIG1vZGUgd2l0aG91dCBzcGFjaW5nLlxuICBpZiAoIXBlZGFudGljICYmIHF1ZXVlLmxlbmd0aCA9PT0gMCAmJiBjaGFyYWN0ZXIgJiYgY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgc3VidmFsdWUgKz0gcXVldWVcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBudW1iZXJTaWduKSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIC8vIGAjYCB3aXRob3V0IGEgcXVldWUgaXMgcGFydCBvZiB0aGUgY29udGVudC5cbiAgICBpZiAoIXBlZGFudGljICYmIGNvbnRlbnQgJiYgIXF1ZXVlICYmIGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gbnVtYmVyU2lnbikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBzcGFjZSB8fCBjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBpbmRleC0tXG4gIH1cblxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSArPSBjb250ZW50ICsgcXVldWVcblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgIGRlcHRoOiBkZXB0aCxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpXG4gIH0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0aGVtYXRpY0JyZWFrXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGFzdGVyaXNrID0gJyonXG52YXIgZGFzaCA9ICctJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxudmFyIG1heENvdW50ID0gM1xuXG5mdW5jdGlvbiB0aGVtYXRpY0JyZWFrKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG1hcmtlckNvdW50XG4gIHZhciBxdWV1ZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICBpZiAoXG4gICAgY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJlxuICAgIGNoYXJhY3RlciAhPT0gZGFzaCAmJlxuICAgIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgbWFya2VyQ291bnQgPSAxXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlcikge1xuICAgICAgbWFya2VyQ291bnQrK1xuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBtYXJrZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtYXJrZXJDb3VudCA+PSBtYXhDb3VudCAmJlxuICAgICAgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZClcbiAgICApIHtcbiAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG5cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICd0aGVtYXRpY0JyZWFrJ30pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50YXRpb25cblxudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcblxudmFyIHNwYWNlU2l6ZSA9IDFcbnZhciB0YWJTaXplID0gNFxuXG4vLyBHZXRzIGluZGVudGF0aW9uIGluZm9ybWF0aW9uIGZvciBhIGxpbmUuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSkge1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBpbmRlbnQgPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBzdG9wcyA9IHt9XG4gIHZhciBzaXplXG5cbiAgd2hpbGUgKGNoYXJhY3RlciA9PT0gdGFiIHx8IGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICBzaXplID0gY2hhcmFjdGVyID09PSB0YWIgPyB0YWJTaXplIDogc3BhY2VTaXplXG5cbiAgICBpbmRlbnQgKz0gc2l6ZVxuXG4gICAgaWYgKHNpemUgPiAxKSB7XG4gICAgICBpbmRlbnQgPSBNYXRoLmZsb29yKGluZGVudCAvIHNpemUpICogc2l6ZVxuICAgIH1cblxuICAgIHN0b3BzW2luZGVudF0gPSBpbmRleFxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgcmV0dXJuIHtpbmRlbnQ6IGluZGVudCwgc3RvcHM6IHN0b3BzfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgZ2V0SW5kZW50ID0gcmVxdWlyZSgnLi9nZXQtaW5kZW50YXRpb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGVudGF0aW9uXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xuXG4vLyBSZW1vdmUgdGhlIG1pbmltdW0gaW5kZW50IGZyb20gZXZlcnkgbGluZSBpbiBgdmFsdWVgLiAgU3VwcG9ydHMgYm90aCB0YWIsXG4vLyBzcGFjZWQsIGFuZCBtaXhlZCBpbmRlbnRhdGlvbiAoYXMgd2VsbCBhcyBwb3NzaWJsZSkuXG5mdW5jdGlvbiBpbmRlbnRhdGlvbih2YWx1ZSwgbWF4aW11bSkge1xuICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG4gIHZhciBwb3NpdGlvbiA9IHZhbHVlcy5sZW5ndGggKyAxXG4gIHZhciBtaW5JbmRlbnQgPSBJbmZpbml0eVxuICB2YXIgbWF0cml4ID0gW11cbiAgdmFyIGluZGV4XG4gIHZhciBpbmRlbnRhdGlvblxuICB2YXIgc3RvcHNcbiAgdmFyIHBhZGRpbmdcblxuICB2YWx1ZXMudW5zaGlmdChyZXBlYXQoc3BhY2UsIG1heGltdW0pICsgZXhjbGFtYXRpb25NYXJrKVxuXG4gIHdoaWxlIChwb3NpdGlvbi0tKSB7XG4gICAgaW5kZW50YXRpb24gPSBnZXRJbmRlbnQodmFsdWVzW3Bvc2l0aW9uXSlcblxuICAgIG1hdHJpeFtwb3NpdGlvbl0gPSBpbmRlbnRhdGlvbi5zdG9wc1xuXG4gICAgaWYgKHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQpIHtcbiAgICAgIGlmIChpbmRlbnRhdGlvbi5pbmRlbnQgPiAwICYmIGluZGVudGF0aW9uLmluZGVudCA8IG1pbkluZGVudCkge1xuICAgICAgICBtaW5JbmRlbnQgPSBpbmRlbnRhdGlvbi5pbmRlbnRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluSW5kZW50ID0gSW5maW5pdHlcblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAobWluSW5kZW50ICE9PSBJbmZpbml0eSkge1xuICAgIHBvc2l0aW9uID0gdmFsdWVzLmxlbmd0aFxuXG4gICAgd2hpbGUgKHBvc2l0aW9uLS0pIHtcbiAgICAgIHN0b3BzID0gbWF0cml4W3Bvc2l0aW9uXVxuICAgICAgaW5kZXggPSBtaW5JbmRlbnRcblxuICAgICAgd2hpbGUgKGluZGV4ICYmICEoaW5kZXggaW4gc3RvcHMpKSB7XG4gICAgICAgIGluZGV4LS1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0cmltKHZhbHVlc1twb3NpdGlvbl0pLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICBtaW5JbmRlbnQgJiZcbiAgICAgICAgaW5kZXggIT09IG1pbkluZGVudFxuICAgICAgKSB7XG4gICAgICAgIHBhZGRpbmcgPSB0YWJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZGRpbmcgPSAnJ1xuICAgICAgfVxuXG4gICAgICB2YWx1ZXNbcG9zaXRpb25dID1cbiAgICAgICAgcGFkZGluZyArIHZhbHVlc1twb3NpdGlvbl0uc2xpY2UoaW5kZXggaW4gc3RvcHMgPyBzdG9wc1tpbmRleF0gKyAxIDogMClcbiAgICB9XG4gIH1cblxuICB2YWx1ZXMuc2hpZnQoKVxuXG4gIHJldHVybiB2YWx1ZXMuam9pbihsaW5lRmVlZClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBnZXRJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL2dldC1pbmRlbnRhdGlvbicpXG52YXIgcmVtb3ZlSW5kZW50ID0gcmVxdWlyZSgnLi4vdXRpbC9yZW1vdmUtaW5kZW50YXRpb24nKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0XG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBwbHVzU2lnbiA9ICcrJ1xudmFyIGRhc2ggPSAnLSdcbnZhciBkb3QgPSAnLidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBsb3dlcmNhc2VYID0gJ3gnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uID0gL1xcblxcbig/IVxccyokKS9cbnZhciB0YXNrSXRlbUV4cHJlc3Npb24gPSAvXlxcWyhbIFxcdF18eHxYKV1bIFxcdF0vXG52YXIgYnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKSggezEsNH0oPyEgKXwgfFxcdHwkfCg/PVxcbikpKFteXFxuXSopL1xudmFyIHBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiA9IC9eKFsgXFx0XSopKFsqKy1dfFxcZCtbLildKShbIFxcdF0rKS9cbnZhciBpbml0aWFsSW5kZW50RXhwcmVzc2lvbiA9IC9eKCB7MSw0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBsaXN0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJ1cHRvcnMgPSBzZWxmLmludGVycnVwdExpc3RcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBzdGFydCA9IG51bGxcbiAgdmFyIHNpemUgPSAwXG4gIHZhciBxdWV1ZVxuICB2YXIgb3JkZXJlZFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG5leHRJbmRleFxuICB2YXIgc3RhcnRJbmRleFxuICB2YXIgcHJlZml4ZWRcbiAgdmFyIGN1cnJlbnRNYXJrZXJcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHByZXZFbXB0eVxuICB2YXIgZW1wdHlcbiAgdmFyIGl0ZW1zXG4gIHZhciBhbGxMaW5lc1xuICB2YXIgZW1wdHlMaW5lc1xuICB2YXIgaXRlbVxuICB2YXIgZW50ZXJUb3BcbiAgdmFyIGV4aXRCbG9ja3F1b3RlXG4gIHZhciBzcHJlYWQgPSBmYWxzZVxuICB2YXIgbm9kZVxuICB2YXIgbm93XG4gIHZhciBlbmRcbiAgdmFyIGluZGVudGVkXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICBzaXplKytcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoc2l6ZSA+PSB0YWJTaXplKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHwgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fCBjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICBvcmRlcmVkID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBvcmRlcmVkID0gdHJ1ZVxuICAgIHF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICAhcXVldWUgfHxcbiAgICAgICEoY2hhcmFjdGVyID09PSBkb3QgfHwgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSlcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN0YXJ0ID0gcGFyc2VJbnQocXVldWUsIDEwKVxuICAgIG1hcmtlciA9IGNoYXJhY3RlclxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKFxuICAgIGNoYXJhY3RlciAhPT0gc3BhY2UgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHRhYiAmJlxuICAgIChwZWRhbnRpYyB8fCAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMFxuICBpdGVtcyA9IFtdXG4gIGFsbExpbmVzID0gW11cbiAgZW1wdHlMaW5lcyA9IFtdXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmV4dEluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXgpXG4gICAgc3RhcnRJbmRleCA9IGluZGV4XG4gICAgcHJlZml4ZWQgPSBmYWxzZVxuICAgIGluZGVudGVkID0gZmFsc2VcblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBsZW5ndGhcbiAgICB9XG5cbiAgICBlbmQgPSBpbmRleCArIHRhYlNpemVcbiAgICBzaXplID0gMFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHNpemUgPj0gdGFiU2l6ZSkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGl0ZW0gJiYgc2l6ZSA+PSBpdGVtLmluZGVudCkge1xuICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIGN1cnJlbnRNYXJrZXIgPSBudWxsXG5cbiAgICBpZiAoIWluZGVudGVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoYXJhY3RlciA9PT0gYXN0ZXJpc2sgfHxcbiAgICAgICAgY2hhcmFjdGVyID09PSBwbHVzU2lnbiB8fFxuICAgICAgICBjaGFyYWN0ZXIgPT09IGRhc2hcbiAgICAgICkge1xuICAgICAgICBjdXJyZW50TWFya2VyID0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgc2l6ZSsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZSA9ICcnXG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgICAgaWYgKCFkZWNpbWFsKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHF1ZXVlICYmXG4gICAgICAgICAgKGNoYXJhY3RlciA9PT0gZG90IHx8IChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykpXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICAgICAgICBzaXplICs9IHF1ZXVlLmxlbmd0aCArIDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudE1hcmtlcikge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgICAgc2l6ZSArPSB0YWJTaXplIC0gKHNpemUgJSB0YWJTaXplKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgZW5kID0gaW5kZXggKyB0YWJTaXplXG5cbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBzcGFjZSkge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgICBzaXplKytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IGVuZCAmJiB2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBzcGFjZSkge1xuICAgICAgICAgICAgaW5kZXggLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICAgIHNpemUgLT0gdGFiU2l6ZSAtIDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCAmJiBjaGFyYWN0ZXIgIT09ICcnKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWFya2VyKSB7XG4gICAgICBpZiAoIXBlZGFudGljICYmIG1hcmtlciAhPT0gY3VycmVudE1hcmtlcikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBwcmVmaXhlZCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjb21tb25tYXJrICYmICFpbmRlbnRlZCAmJiB2YWx1ZS5jaGFyQXQoc3RhcnRJbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgIGluZGVudGVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChjb21tb25tYXJrICYmIGl0ZW0pIHtcbiAgICAgICAgaW5kZW50ZWQgPSBzaXplID49IGl0ZW0uaW5kZW50IHx8IHNpemUgPiB0YWJTaXplXG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gZmFsc2VcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH1cblxuICAgIGxpbmUgPSB2YWx1ZS5zbGljZShzdGFydEluZGV4LCBuZXh0SW5kZXgpXG4gICAgY29udGVudCA9IHN0YXJ0SW5kZXggPT09IGluZGV4ID8gbGluZSA6IHZhbHVlLnNsaWNlKGluZGV4LCBuZXh0SW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50TWFya2VyID09PSBhc3RlcmlzayB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gdW5kZXJzY29yZSB8fFxuICAgICAgY3VycmVudE1hcmtlciA9PT0gZGFzaFxuICAgICkge1xuICAgICAgaWYgKHRva2VuaXplcnMudGhlbWF0aWNCcmVhay5jYWxsKHNlbGYsIGVhdCwgbGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2RW1wdHkgPSBlbXB0eVxuICAgIGVtcHR5ID0gIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpLmxlbmd0aFxuXG4gICAgaWYgKGluZGVudGVkICYmIGl0ZW0pIHtcbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGlmIChlbXB0eUxpbmVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzcHJlYWQgPSB0cnVlXG4gICAgICAgIGl0ZW0udmFsdWUucHVzaCgnJylcbiAgICAgICAgaXRlbS50cmFpbCA9IGVtcHR5TGluZXMuY29uY2F0KClcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IHtcbiAgICAgICAgdmFsdWU6IFtsaW5lXSxcbiAgICAgICAgaW5kZW50OiBzaXplLFxuICAgICAgICB0cmFpbDogW11cbiAgICAgIH1cblxuICAgICAgaXRlbXMucHVzaChpdGVtKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAoZW1wdHkpIHtcbiAgICAgIGlmIChwcmV2RW1wdHkgJiYgIWNvbW1vbm1hcmspIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZW1wdHlMaW5lcy5wdXNoKGxpbmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcmV2RW1wdHkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGludGVycnVwdChpbnRlcnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgbGluZSwgdHJ1ZV0pKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH1cblxuICAgIGluZGV4ID0gbmV4dEluZGV4ICsgMVxuICB9XG5cbiAgbm9kZSA9IGVhdChhbGxMaW5lcy5qb2luKGxpbmVGZWVkKSkucmVzZXQoe1xuICAgIHR5cGU6ICdsaXN0JyxcbiAgICBvcmRlcmVkOiBvcmRlcmVkLFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBzcHJlYWQ6IHNwcmVhZCxcbiAgICBjaGlsZHJlbjogW11cbiAgfSlcblxuICBlbnRlclRvcCA9IHNlbGYuZW50ZXJMaXN0KClcbiAgZXhpdEJsb2NrcXVvdGUgPSBzZWxmLmVudGVyQmxvY2soKVxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaXRlbSA9IGl0ZW1zW2luZGV4XS52YWx1ZS5qb2luKGxpbmVGZWVkKVxuICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgZWF0KGl0ZW0pKGxpc3RJdGVtKHNlbGYsIGl0ZW0sIG5vdyksIG5vZGUpXG5cbiAgICBpdGVtID0gaXRlbXNbaW5kZXhdLnRyYWlsLmpvaW4obGluZUZlZWQpXG5cbiAgICBpZiAoaW5kZXggIT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIGl0ZW0gKz0gbGluZUZlZWRcbiAgICB9XG5cbiAgICBlYXQoaXRlbSlcbiAgfVxuXG4gIGVudGVyVG9wKClcbiAgZXhpdEJsb2NrcXVvdGUoKVxuXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgZm4gPSBjdHgub3B0aW9ucy5wZWRhbnRpYyA/IHBlZGFudGljTGlzdEl0ZW0gOiBub3JtYWxMaXN0SXRlbVxuICB2YXIgY2hlY2tlZCA9IG51bGxcbiAgdmFyIHRhc2tcbiAgdmFyIGluZGVudFxuXG4gIHZhbHVlID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuXG4gIGlmIChjdHgub3B0aW9ucy5nZm0pIHtcbiAgICB0YXNrID0gdmFsdWUubWF0Y2godGFza0l0ZW1FeHByZXNzaW9uKVxuXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGluZGVudCA9IHRhc2tbMF0ubGVuZ3RoXG4gICAgICBjaGVja2VkID0gdGFza1sxXS50b0xvd2VyQ2FzZSgpID09PSBsb3dlcmNhc2VYXG4gICAgICBvZmZzZXRzW3Bvc2l0aW9uLmxpbmVdICs9IGluZGVudFxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShpbmRlbnQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgIHNwcmVhZDogbG9vc2VMaXN0SXRlbUV4cHJlc3Npb24udGVzdCh2YWx1ZSksXG4gICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICBjaGlsZHJlbjogY3R4LnRva2VuaXplQmxvY2sodmFsdWUsIHBvc2l0aW9uKVxuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBvdmVybHkgc2ltcGxlIG1lY2hhbmljcy5cbmZ1bmN0aW9uIHBlZGFudGljTGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuXG4gIC8vIFJlbW92ZSB0aGUgbGlzdC1pdGVt4oCZcyBidWxsZXQuXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShwZWRhbnRpY0J1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIFRoZSBpbml0aWFsIGxpbmUgd2FzIGFsc28gbWF0Y2hlZCBieSB0aGUgYmVsb3csIHNvIHdlIHJlc2V0IHRoZSBgbGluZWAuXG4gIGxpbmUgPSBwb3NpdGlvbi5saW5lXG5cbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoaW5pdGlhbEluZGVudEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIC8vIEEgc2ltcGxlIHJlcGxhY2VyIHdoaWNoIHJlbW92ZWQgYWxsIG1hdGNoZXMsIGFuZCBhZGRzIHRoZWlyIGxlbmd0aCB0b1xuICAvLyBgb2Zmc2V0YC5cbiAgZnVuY3Rpb24gcmVwbGFjZXIoJDApIHtcbiAgICBvZmZzZXRzW2xpbmVdID0gKG9mZnNldHNbbGluZV0gfHwgMCkgKyAkMC5sZW5ndGhcbiAgICBsaW5lKytcblxuICAgIHJldHVybiAnJ1xuICB9XG59XG5cbi8vIENyZWF0ZSBhIGxpc3QtaXRlbSB1c2luZyBzYW5lIG1lY2hhbmljcy5cbmZ1bmN0aW9uIG5vcm1hbExpc3RJdGVtKGN0eCwgdmFsdWUsIHBvc2l0aW9uKSB7XG4gIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgdmFyIG1heFxuICB2YXIgYnVsbGV0XG4gIHZhciByZXN0XG4gIHZhciBsaW5lc1xuICB2YXIgdHJpbW1lZExpbmVzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG5cbiAgLy8gUmVtb3ZlIHRoZSBsaXN0LWl0ZW3igJlzIGJ1bGxldC5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGJ1bGxldEV4cHJlc3Npb24sIHJlcGxhY2VyKVxuXG4gIGxpbmVzID0gdmFsdWUuc3BsaXQobGluZUZlZWQpXG5cbiAgdHJpbW1lZExpbmVzID0gcmVtb3ZlSW5kZW50KHZhbHVlLCBnZXRJbmRlbnQobWF4KS5pbmRlbnQpLnNwbGl0KGxpbmVGZWVkKVxuXG4gIC8vIFdlIHJlcGxhY2VkIHRoZSBpbml0aWFsIGJ1bGxldCB3aXRoIHNvbWV0aGluZyBlbHNlIGFib3ZlLCB3aGljaCB3YXMgdXNlZFxuICAvLyB0byB0cmljayBgcmVtb3ZlSW5kZW50YXRpb25gIGludG8gcmVtb3Zpbmcgc29tZSBtb3JlIGNoYXJhY3RlcnMgd2hlblxuICAvLyBwb3NzaWJsZS4gIEhvd2V2ZXIsIHRoYXQgY291bGQgcmVzdWx0IGluIHRoZSBpbml0aWFsIGxpbmUgdG8gYmUgc3RyaXBwZWRcbiAgLy8gbW9yZSB0aGFuIGl0IHNob3VsZCBiZS5cbiAgdHJpbW1lZExpbmVzWzBdID0gcmVzdFxuXG4gIG9mZnNldHNbbGluZV0gPSAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGJ1bGxldC5sZW5ndGhcbiAgbGluZSsrXG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGxpbmVzLmxlbmd0aFxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2Zmc2V0c1tsaW5lXSA9XG4gICAgICAob2Zmc2V0c1tsaW5lXSB8fCAwKSArIGxpbmVzW2luZGV4XS5sZW5ndGggLSB0cmltbWVkTGluZXNbaW5kZXhdLmxlbmd0aFxuICAgIGxpbmUrK1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWRMaW5lcy5qb2luKGxpbmVGZWVkKVxuXG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VyKCQwLCAkMSwgJDIsICQzLCAkNCkge1xuICAgIGJ1bGxldCA9ICQxICsgJDIgKyAkM1xuICAgIHJlc3QgPSAkNFxuXG4gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IG5pbmUgbnVtYmVyZWQgbGlzdCBpdGVtcyBjYW4gaW5kZW50IHdpdGggYW5cbiAgICAvLyBleHRyYSBzcGFjZS4gIFRoYXQgaXMsIHdoZW4gdGhlIGJ1bGxldCBkaWQgbm90IHJlY2VpdmUgYW4gZXh0cmEgZmluYWxcbiAgICAvLyBzcGFjZS5cbiAgICBpZiAoTnVtYmVyKCQyKSA8IDEwICYmIGJ1bGxldC5sZW5ndGggJSAyID09PSAxKSB7XG4gICAgICAkMiA9IHNwYWNlICsgJDJcbiAgICB9XG5cbiAgICBtYXggPSAkMSArIHJlcGVhdChzcGFjZSwgJDIubGVuZ3RoKSArICQzXG5cbiAgICByZXR1cm4gbWF4ICsgcmVzdFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRleHRIZWFkaW5nXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGVxdWFsc1RvID0gJz0nXG52YXIgZGFzaCA9ICctJ1xuXG52YXIgbWF4SW5kZW50ID0gM1xuXG52YXIgZXF1YWxzVG9EZXB0aCA9IDFcbnZhciBkYXNoRGVwdGggPSAyXG5cbmZ1bmN0aW9uIHNldGV4dEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbm93ID0gZWF0Lm5vdygpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgZGVwdGhcblxuICAvLyBFYXQgaW5pdGlhbCBpbmRlbnRhdGlvbi5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSB8fCBpbmRleCA+PSBtYXhJbmRlbnQpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFYXQgY29udGVudC5cbiAgY29udGVudCA9ICcnXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBxdWV1ZVxuXG4gIC8vIEVuc3VyZSB0aGUgY29udGVudCBpcyBmb2xsb3dlZCBieSBhIG5ld2xpbmUgYW5kIGEgdmFsaWQgbWFya2VyLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgbWFya2VyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQgfHwgKG1hcmtlciAhPT0gZXF1YWxzVG8gJiYgbWFya2VyICE9PSBkYXNoKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG5cbiAgLy8gRWF0IFNldGV4dC1saW5lLlxuICBxdWV1ZSA9IG1hcmtlclxuICBkZXB0aCA9IG1hcmtlciA9PT0gZXF1YWxzVG8gPyBlcXVhbHNUb0RlcHRoIDogZGFzaERlcHRoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUpKHtcbiAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYXR0cmlidXRlTmFtZSA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKidcbnZhciB1bnF1b3RlZCA9ICdbXlwiXFwnPTw+YFxcXFx1MDAwMC1cXFxcdTAwMjBdKydcbnZhciBzaW5nbGVRdW90ZWQgPSBcIidbXiddKidcIlxudmFyIGRvdWJsZVF1b3RlZCA9ICdcIlteXCJdKlwiJ1xudmFyIGF0dHJpYnV0ZVZhbHVlID1cbiAgJyg/OicgKyB1bnF1b3RlZCArICd8JyArIHNpbmdsZVF1b3RlZCArICd8JyArIGRvdWJsZVF1b3RlZCArICcpJ1xudmFyIGF0dHJpYnV0ZSA9XG4gICcoPzpcXFxccysnICsgYXR0cmlidXRlTmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJpYnV0ZVZhbHVlICsgJyk/KSdcbnZhciBvcGVuVGFnID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/PidcbnZhciBjbG9zZVRhZyA9ICc8XFxcXC9bQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXFxcXHMqPidcbnZhciBjb21tZW50ID0gJzwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT4nXG52YXIgcHJvY2Vzc2luZyA9ICc8Wz9dLio/Wz9dPidcbnZhciBkZWNsYXJhdGlvbiA9ICc8IVtBLVphLXpdK1xcXFxzK1tePl0qPidcbnZhciBjZGF0YSA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nXG5cbmV4cG9ydHMub3BlbkNsb3NlVGFnID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuVGFnICsgJ3wnICsgY2xvc2VUYWcgKyAnKScpXG5cbmV4cG9ydHMudGFnID0gbmV3IFJlZ0V4cChcbiAgJ14oPzonICtcbiAgICBvcGVuVGFnICtcbiAgICAnfCcgK1xuICAgIGNsb3NlVGFnICtcbiAgICAnfCcgK1xuICAgIGNvbW1lbnQgK1xuICAgICd8JyArXG4gICAgcHJvY2Vzc2luZyArXG4gICAgJ3wnICtcbiAgICBkZWNsYXJhdGlvbiArXG4gICAgJ3wnICtcbiAgICBjZGF0YSArXG4gICAgJyknXG4pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG9wZW5DbG9zZVRhZyA9IHJlcXVpcmUoJy4uL3V0aWwvaHRtbCcpLm9wZW5DbG9zZVRhZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrSHRtbFxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBsZXNzVGhhbiA9ICc8J1xuXG52YXIgcmF3T3BlbkV4cHJlc3Npb24gPSAvXjwoc2NyaXB0fHByZXxzdHlsZSkoPz0oXFxzfD58JCkpL2lcbnZhciByYXdDbG9zZUV4cHJlc3Npb24gPSAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlKT4vaVxudmFyIGNvbW1lbnRPcGVuRXhwcmVzc2lvbiA9IC9ePCEtLS9cbnZhciBjb21tZW50Q2xvc2VFeHByZXNzaW9uID0gLy0tPi9cbnZhciBpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uID0gL148XFw/L1xudmFyIGluc3RydWN0aW9uQ2xvc2VFeHByZXNzaW9uID0gL1xcPz4vXG52YXIgZGlyZWN0aXZlT3BlbkV4cHJlc3Npb24gPSAvXjwhW0EtWmEtel0vXG52YXIgZGlyZWN0aXZlQ2xvc2VFeHByZXNzaW9uID0gLz4vXG52YXIgY2RhdGFPcGVuRXhwcmVzc2lvbiA9IC9ePCFcXFtDREFUQVxcWy9cbnZhciBjZGF0YUNsb3NlRXhwcmVzc2lvbiA9IC9cXF1cXF0+L1xudmFyIGVsZW1lbnRDbG9zZUV4cHJlc3Npb24gPSAvXiQvXG52YXIgb3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKG9wZW5DbG9zZVRhZy5zb3VyY2UgKyAnXFxcXHMqJCcpXG5cbmZ1bmN0aW9uIGJsb2NrSHRtbChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBibG9ja3MgPSBzZWxmLm9wdGlvbnMuYmxvY2tzLmpvaW4oJ3wnKVxuICB2YXIgZWxlbWVudE9wZW5FeHByZXNzaW9uID0gbmV3IFJlZ0V4cChcbiAgICAnXjwvPygnICsgYmxvY2tzICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsXG4gICAgJ2knXG4gIClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBuZXh0XG4gIHZhciBsaW5lXG4gIHZhciBvZmZzZXRcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgY291bnRcbiAgdmFyIHNlcXVlbmNlXG4gIHZhciBzdWJ2YWx1ZVxuXG4gIHZhciBzZXF1ZW5jZXMgPSBbXG4gICAgW3Jhd09wZW5FeHByZXNzaW9uLCByYXdDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjb21tZW50T3BlbkV4cHJlc3Npb24sIGNvbW1lbnRDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uLCBpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2RpcmVjdGl2ZU9wZW5FeHByZXNzaW9uLCBkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjZGF0YU9wZW5FeHByZXNzaW9uLCBjZGF0YUNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2VsZW1lbnRPcGVuRXhwcmVzc2lvbiwgZWxlbWVudENsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW290aGVyRWxlbWVudE9wZW5FeHByZXNzaW9uLCBlbGVtZW50Q2xvc2VFeHByZXNzaW9uLCBmYWxzZV1cbiAgXVxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgbmV4dCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4ICsgMSlcbiAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICBsaW5lID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHQpXG4gIG9mZnNldCA9IC0xXG4gIGNvdW50ID0gc2VxdWVuY2VzLmxlbmd0aFxuXG4gIHdoaWxlICgrK29mZnNldCA8IGNvdW50KSB7XG4gICAgaWYgKHNlcXVlbmNlc1tvZmZzZXRdWzBdLnRlc3QobGluZSkpIHtcbiAgICAgIHNlcXVlbmNlID0gc2VxdWVuY2VzW29mZnNldF1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFzZXF1ZW5jZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiBzZXF1ZW5jZVsyXVxuICB9XG5cbiAgaW5kZXggPSBuZXh0XG5cbiAgaWYgKCFzZXF1ZW5jZVsxXS50ZXN0KGxpbmUpKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBuZXh0ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICAgICAgbGluZSA9IHZhbHVlLnNsaWNlKGluZGV4ICsgMSwgbmV4dClcblxuICAgICAgaWYgKHNlcXVlbmNlWzFdLnRlc3QobGluZSkpIHtcbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBpbmRleCA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbmV4dFxuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29sbGFwc2VXaGl0ZVNwYWNlID0gcmVxdWlyZSgnY29sbGFwc2Utd2hpdGUtc3BhY2UnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZVxuXG4vLyBOb3JtYWxpemUgYW4gaWRlbnRpZmllci4gIENvbGxhcHNlcyBtdWx0aXBsZSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGludG8gYVxuLy8gc2luZ2xlIHNwYWNlLCBhbmQgcmVtb3ZlcyBjYXNpbmcuXG5mdW5jdGlvbiBub3JtYWxpemUodmFsdWUpIHtcbiAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh2YWx1ZSkudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSBmb290bm90ZURlZmluaXRpb25cbmZvb3Rub3RlRGVmaW5pdGlvbi5ub3RJbkxpc3QgPSB0cnVlXG5mb290bm90ZURlZmluaXRpb24ubm90SW5CbG9jayA9IHRydWVcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGVmdFNxdWFyZUJyYWNrZXQgPSAnWydcbnZhciByaWdodFNxdWFyZUJyYWNrZXQgPSAnXSdcbnZhciBjYXJldCA9ICdeJ1xudmFyIGNvbG9uID0gJzonXG5cbnZhciBFWFBSRVNTSU9OX0lOSVRJQUxfVEFCID0gL14oIHs0fXxcXHQpPy9nbVxuXG5mdW5jdGlvbiBmb290bm90ZURlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgb2Zmc2V0cyA9IHNlbGYub2Zmc2V0XG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbm93XG4gIHZhciBjdXJyZW50TGluZVxuICB2YXIgY29udGVudFxuICB2YXIgcXVldWVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIGFkZFxuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmZvb3Rub3Rlcykge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBzdWJ2YWx1ZSA9ICcnXG4gIG5vdyA9IGVhdC5ub3coKVxuICBjdXJyZW50TGluZSA9IG5vdy5saW5lXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNhcmV0XG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gbGVmdFNxdWFyZUJyYWNrZXQgKyBjYXJldFxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBicmVha1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChcbiAgICAhcXVldWUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFNxdWFyZUJyYWNrZXQgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gY29sb25cbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBjb250ZW50ID0gJydcbiAgc3VicXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBzdWJxdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgaWYgKHN1YnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIH1cblxuICAgIGlmIChxdWV1ZSkge1xuICAgICAgY29udGVudCArPSBxdWV1ZVxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgKz0gY29udGVudFxuXG4gIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoRVhQUkVTU0lPTl9JTklUSUFMX1RBQiwgZnVuY3Rpb24obGluZSkge1xuICAgIG9mZnNldHNbY3VycmVudExpbmVdID0gKG9mZnNldHNbY3VycmVudExpbmVdIHx8IDApICsgbGluZS5sZW5ndGhcbiAgICBjdXJyZW50TGluZSsrXG5cbiAgICByZXR1cm4gJydcbiAgfSlcblxuICBhZGQgPSBlYXQoc3VidmFsdWUpXG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplQmxvY2soY29udGVudCwgbm93KVxuICBleGl0KClcblxuICByZXR1cm4gYWRkKHtcbiAgICB0eXBlOiAnZm9vdG5vdGVEZWZpbml0aW9uJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXIsXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvblxuXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGNvbG9uID0gJzonXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xuXG5mdW5jdGlvbiBkZWZpbml0aW9uKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHRlc3RcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIHVybFxuICB2YXIgdGl0bGVcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgICFxdWV1ZSB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjb2xvblxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlkZW50aWZpZXIgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHJpZ2h0U3F1YXJlQnJhY2tldCArIGNvbG9uXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgcXVldWUgPSAnJ1xuICBiZWZvcmVVUkwgPSBzdWJ2YWx1ZVxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghaXNFbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIuZGVsaW1pdGVyKSB7XG4gICAgICBzdWJ2YWx1ZSArPSBsZXNzVGhhbiArIHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpbmRleCAtPSBxdWV1ZS5sZW5ndGggKyAxXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIWlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdXJsID0gcXVldWVcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB0ZXN0ID0gbnVsbFxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmspIHtcbiAgICB0ZXN0ID0gcXVvdGF0aW9uTWFya1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gYXBvc3Ryb3BoZSkge1xuICAgIHRlc3QgPSBhcG9zdHJvcGhlXG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpIHtcbiAgICB0ZXN0ID0gcmlnaHRQYXJlbnRoZXNpc1xuICB9XG5cbiAgaWYgKCF0ZXN0KSB7XG4gICAgcXVldWUgPSAnJ1xuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIH0gZWxzZSBpZiAocXVldWUpIHtcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRlc3QpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQgfHwgY2hhcmFjdGVyID09PSB0ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBsaW5lRmVlZFxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0ZXN0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG4gICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gICAgdGl0bGUgPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgaWYgKHNpbGVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBiZWZvcmVVUkwgPSBlYXQoYmVmb3JlVVJMKS50ZXN0KCkuZW5kXG4gICAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgYmVmb3JlVVJMLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KVxuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBiZWZvcmVUaXRsZSA9IGVhdChiZWZvcmVUaXRsZSkudGVzdCgpLmVuZFxuICAgICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICAgIH1cblxuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdkZWZpbml0aW9uJyxcbiAgICAgIGlkZW50aWZpZXI6IG5vcm1hbGl6ZShpZGVudGlmaWVyKSxcbiAgICAgIGxhYmVsOiBpZGVudGlmaWVyLFxuICAgICAgdGl0bGU6IHRpdGxlIHx8IG51bGwsXG4gICAgICB1cmw6IHVybFxuICAgIH0pXG4gIH1cbn1cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgY2FuIGJlIGluc2lkZSBhbiBlbmNsb3NlZCBVUkkuXG5mdW5jdGlvbiBpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gKFxuICAgIGNoYXJhY3RlciAhPT0gZ3JlYXRlclRoYW4gJiZcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXRcbiAgKVxufVxuXG5pc0VuY2xvc2VkVVJMQ2hhcmFjdGVyLmRlbGltaXRlciA9IGdyZWF0ZXJUaGFuXG5cbi8vIENoZWNrIGlmIGBjaGFyYWN0ZXJgIGNhbiBiZSBpbnNpZGUgYW4gdW5jbG9zZWQgVVJJLlxuZnVuY3Rpb24gaXNVbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIChcbiAgICBjaGFyYWN0ZXIgIT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXQgJiZcbiAgICAhd2hpdGVzcGFjZShjaGFyYWN0ZXIpXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSB0YWJsZVxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgc3BhY2UgPSAnICdcbnZhciBkYXNoID0gJy0nXG52YXIgY29sb24gPSAnOidcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciB2ZXJ0aWNhbEJhciA9ICd8J1xuXG52YXIgbWluQ29sdW1ucyA9IDFcbnZhciBtaW5Sb3dzID0gMlxuXG52YXIgbGVmdCA9ICdsZWZ0J1xudmFyIGNlbnRlciA9ICdjZW50ZXInXG52YXIgcmlnaHQgPSAncmlnaHQnXG5cbmZ1bmN0aW9uIHRhYmxlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4XG4gIHZhciBhbGlnbm1lbnRzXG4gIHZhciBhbGlnbm1lbnRcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciByb3dcbiAgdmFyIGxlbmd0aFxuICB2YXIgbGluZXNcbiAgdmFyIHF1ZXVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGhhc0Rhc2hcbiAgdmFyIGFsaWduXG4gIHZhciBjZWxsXG4gIHZhciBwcmVhbWJsZVxuICB2YXIgbm93XG4gIHZhciBwb3NpdGlvblxuICB2YXIgbGluZUNvdW50XG4gIHZhciBsaW5lXG4gIHZhciByb3dzXG4gIHZhciB0YWJsZVxuICB2YXIgbGluZUluZGV4XG4gIHZhciBwaXBlSW5kZXhcbiAgdmFyIGZpcnN0XG5cbiAgLy8gRXhpdCB3aGVuIG5vdCBpbiBnZm0tbW9kZS5cbiAgaWYgKCFzZWxmLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBHZXQgdGhlIHJvd3MuXG4gIC8vIERldGVjdGluZyB0YWJsZXMgc29vbiBpcyBoYXJkLCBzbyB0aGVyZSBhcmUgc29tZSBjaGVja3MgZm9yIHBlcmZvcm1hbmNlXG4gIC8vIGhlcmUsIHN1Y2ggYXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHJvd3MsIGFuZCBhbGxvd2VkIGNoYXJhY3RlcnMgaW4gdGhlXG4gIC8vIGFsaWdubWVudCByb3cuXG4gIGluZGV4ID0gMFxuICBsaW5lQ291bnQgPSAwXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgbGluZXMgPSBbXVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGxpbmVJbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4KVxuICAgIHBpcGVJbmRleCA9IHZhbHVlLmluZGV4T2YodmVydGljYWxCYXIsIGluZGV4ICsgMSlcblxuICAgIGlmIChsaW5lSW5kZXggPT09IC0xKSB7XG4gICAgICBsaW5lSW5kZXggPSB2YWx1ZS5sZW5ndGhcbiAgICB9XG5cbiAgICBpZiAocGlwZUluZGV4ID09PSAtMSB8fCBwaXBlSW5kZXggPiBsaW5lSW5kZXgpIHtcbiAgICAgIGlmIChsaW5lQ291bnQgPCBtaW5Sb3dzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2godmFsdWUuc2xpY2UoaW5kZXgsIGxpbmVJbmRleCkpXG4gICAgbGluZUNvdW50KytcbiAgICBpbmRleCA9IGxpbmVJbmRleCArIDFcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBhbGlnbm1lbnQgcm93LlxuICBzdWJ2YWx1ZSA9IGxpbmVzLmpvaW4obGluZUZlZWQpXG4gIGFsaWdubWVudHMgPSBsaW5lcy5zcGxpY2UoMSwgMSlbMF0gfHwgW11cbiAgaW5kZXggPSAwXG4gIGxlbmd0aCA9IGFsaWdubWVudHMubGVuZ3RoXG4gIGxpbmVDb3VudC0tXG4gIGFsaWdubWVudCA9IGZhbHNlXG4gIGFsaWduID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSBhbGlnbm1lbnRzLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHZlcnRpY2FsQmFyKSB7XG4gICAgICBoYXNEYXNoID0gbnVsbFxuXG4gICAgICBpZiAoYWxpZ25tZW50ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduLnB1c2goYWxpZ25tZW50KVxuICAgICAgICBhbGlnbm1lbnQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBmaXJzdCA9IGZhbHNlXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGRhc2gpIHtcbiAgICAgIGhhc0Rhc2ggPSB0cnVlXG4gICAgICBhbGlnbm1lbnQgPSBhbGlnbm1lbnQgfHwgbnVsbFxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBjb2xvbikge1xuICAgICAgaWYgKGFsaWdubWVudCA9PT0gbGVmdCkge1xuICAgICAgICBhbGlnbm1lbnQgPSBjZW50ZXJcbiAgICAgIH0gZWxzZSBpZiAoaGFzRGFzaCAmJiBhbGlnbm1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgYWxpZ25tZW50ID0gcmlnaHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWdubWVudCA9IGxlZnRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChhbGlnbm1lbnQgIT09IGZhbHNlKSB7XG4gICAgYWxpZ24ucHVzaChhbGlnbm1lbnQpXG4gIH1cblxuICAvLyBFeGl0IHdoZW4gd2l0aG91dCBlbm91Z2ggY29sdW1ucy5cbiAgaWYgKGFsaWduLmxlbmd0aCA8IG1pbkNvbHVtbnMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgcm93cy5cbiAgcG9zaXRpb24gPSAtMVxuICByb3dzID0gW11cblxuICB0YWJsZSA9IGVhdChzdWJ2YWx1ZSkucmVzZXQoe3R5cGU6ICd0YWJsZScsIGFsaWduOiBhbGlnbiwgY2hpbGRyZW46IHJvd3N9KVxuXG4gIHdoaWxlICgrK3Bvc2l0aW9uIDwgbGluZUNvdW50KSB7XG4gICAgbGluZSA9IGxpbmVzW3Bvc2l0aW9uXVxuICAgIHJvdyA9IHt0eXBlOiAndGFibGVSb3cnLCBjaGlsZHJlbjogW119XG5cbiAgICAvLyBFYXQgYSBuZXdsaW5lIGNoYXJhY3RlciB3aGVuIHRoaXMgaXMgbm90IHRoZSBmaXJzdCByb3cuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlYXQobGluZUZlZWQpXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSByb3cuXG4gICAgZWF0KGxpbmUpLnJlc2V0KHJvdywgdGFibGUpXG5cbiAgICBsZW5ndGggPSBsaW5lLmxlbmd0aCArIDFcbiAgICBpbmRleCA9IDBcbiAgICBxdWV1ZSA9ICcnXG4gICAgY2VsbCA9ICcnXG4gICAgcHJlYW1ibGUgPSB0cnVlXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IGxpbmUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIgfHwgY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVhdChjaGFyYWN0ZXIpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09ICcnIHx8IGNoYXJhY3RlciA9PT0gdmVydGljYWxCYXIpIHtcbiAgICAgICAgaWYgKHByZWFtYmxlKSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3RlcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKGNlbGwgfHwgY2hhcmFjdGVyKSAmJiAhcHJlYW1ibGUpIHtcbiAgICAgICAgICAgIHN1YnZhbHVlID0gY2VsbFxuXG4gICAgICAgICAgICBpZiAocXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgc3VidmFsdWUgKz0gcXVldWUuc2xpY2UoMCwgcXVldWUubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBxdWV1ZSA9IHF1ZXVlLmNoYXJBdChxdWV1ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgICAgICAgICAgICAgcXVldWUgPSAnJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vdyA9IGVhdC5ub3coKVxuXG4gICAgICAgICAgICBlYXQoc3VidmFsdWUpKFxuICAgICAgICAgICAgICB7dHlwZTogJ3RhYmxlQ2VsbCcsIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNlbGwsIG5vdyl9LFxuICAgICAgICAgICAgICByb3dcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlYXQocXVldWUgKyBjaGFyYWN0ZXIpXG5cbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgICAgY2VsbCA9ICcnXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICAgIGNlbGwgKz0gcXVldWVcbiAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgIH1cblxuICAgICAgICBjZWxsICs9IGNoYXJhY3RlclxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCAmJiBpbmRleCAhPT0gbGVuZ3RoIC0gMikge1xuICAgICAgICAgIGNlbGwgKz0gbGluZS5jaGFyQXQoaW5kZXggKyAxKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmVhbWJsZSA9IGZhbHNlXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgLy8gRWF0IHRoZSBhbGlnbm1lbnQgcm93LlxuICAgIGlmICghcG9zaXRpb24pIHtcbiAgICAgIGVhdChsaW5lRmVlZCArIGFsaWdubWVudHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhYmxlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgdHJpbVRyYWlsaW5nTGluZXMgPSByZXF1aXJlKCd0cmltLXRyYWlsaW5nLWxpbmVzJylcbnZhciBpbnRlcnJ1cHQgPSByZXF1aXJlKCcuLi91dGlsL2ludGVycnVwdCcpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyYWdyYXBoXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xuXG52YXIgdGFiU2l6ZSA9IDRcblxuLy8gVG9rZW5pc2UgcGFyYWdyYXBoLlxuZnVuY3Rpb24gcGFyYWdyYXBoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHNldHRpbmdzID0gc2VsZi5vcHRpb25zXG4gIHZhciBjb21tb25tYXJrID0gc2V0dGluZ3MuY29tbW9ubWFya1xuICB2YXIgZ2ZtID0gc2V0dGluZ3MuZ2ZtXG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnNcbiAgdmFyIGludGVycnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0UGFyYWdyYXBoXG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQpXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHBvc2l0aW9uXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBzaXplXG4gIHZhciBub3dcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAvLyBFYXQgZXZlcnl0aGluZyBpZiB0aGVyZeKAmXMgbm8gZm9sbG93aW5nIG5ld2xpbmUuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBsZW5ndGhcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gU3RvcCBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTkVXTElORS5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGxpbmVGZWVkKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIC8vIEluIGNvbW1vbm1hcmstbW9kZSwgZm9sbG93aW5nIGluZGVudGVkIGxpbmVzIGFyZSBwYXJ0IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgIHNpemUgPSAwXG4gICAgICBwb3NpdGlvbiA9IGluZGV4ICsgMVxuXG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHBvc2l0aW9uKVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYikge1xuICAgICAgICAgIHNpemUgPSB0YWJTaXplXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgICAgc2l6ZSsrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uKytcbiAgICAgIH1cblxuICAgICAgaWYgKHNpemUgPj0gdGFiU2l6ZSAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoaW5kZXggKyAxKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZvbGxvd2luZyBjb2RlIGNvbnRhaW5zIGEgcG9zc2libGUgYmxvY2suXG4gICAgaWYgKGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIHNlbGYsIFtlYXQsIHN1YnZhbHVlLCB0cnVlXSkpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gQnJlYWsgaWYgdGhlIGZvbGxvd2luZyBsaW5lIHN0YXJ0cyBhIGxpc3QsIHdoZW4gYWxyZWFkeSBpbiBhIGxpc3QsIG9yXG4gICAgLy8gd2hlbiBpbiBjb21tb25tYXJrLCBvciB3aGVuIGluIGdmbSBtb2RlIGFuZCB0aGUgYnVsbGV0IGlzICpub3QqIG51bWVyaWMuXG4gICAgaWYgKFxuICAgICAgdG9rZW5pemVycy5saXN0LmNhbGwoc2VsZiwgZWF0LCBzdWJ2YWx1ZSwgdHJ1ZSkgJiZcbiAgICAgIChzZWxmLmluTGlzdCB8fFxuICAgICAgICBjb21tb25tYXJrIHx8XG4gICAgICAgIChnZm0gJiYgIWRlY2ltYWwodHJpbS5sZWZ0KHN1YnZhbHVlKS5jaGFyQXQoMCkpKSlcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSBpbmRleFxuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuXG4gICAgaWYgKGluZGV4ICE9PSAtMSAmJiB0cmltKHZhbHVlLnNsaWNlKHBvc2l0aW9uLCBpbmRleCkpID09PSAnJykge1xuICAgICAgaW5kZXggPSBwb3NpdGlvblxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGluZGV4KVxuXG4gIGlmICh0cmltKHN1YnZhbHVlKSA9PT0gJycpIHtcbiAgICBlYXQoc3VidmFsdWUpXG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBzdWJ2YWx1ZSA9IHRyaW1UcmFpbGluZ0xpbmVzKHN1YnZhbHVlKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdcXFxcJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZXNjYXBlJylcblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVcbmVzY2FwZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVzY2FwZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG5vZGVcblxuICBpZiAodmFsdWUuY2hhckF0KDApID09PSBiYWNrc2xhc2gpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMSlcblxuICAgIGlmIChzZWxmLmVzY2FwZS5pbmRleE9mKGNoYXJhY3RlcikgIT09IC0xKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ2JyZWFrJ31cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSB7dHlwZTogJ3RleHQnLCB2YWx1ZTogY2hhcmFjdGVyfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KGJhY2tzbGFzaCArIGNoYXJhY3Rlcikobm9kZSlcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignPCcsIGZyb21JbmRleClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBkZWNvZGUgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3RhZycpXG5cbm1vZHVsZS5leHBvcnRzID0gYXV0b0xpbmtcbmF1dG9MaW5rLmxvY2F0b3IgPSBsb2NhdGVcbmF1dG9MaW5rLm5vdEluTGluayA9IHRydWVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBzbGFzaCA9ICcvJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xudmFyIG1haWx0b0xlbmd0aCA9IG1haWx0by5sZW5ndGhcblxuZnVuY3Rpb24gYXV0b0xpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIHF1ZXVlID0gJydcbiAgdmFyIGhhc0F0Q2hhcmFjdGVyID0gZmFsc2VcbiAgdmFyIGxpbmsgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBub3dcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIHRva2VuaXplcnNcbiAgdmFyIGV4aXRcblxuICBpZiAodmFsdWUuY2hhckF0KDApICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSA9IGxlc3NUaGFuXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgd2hpdGVzcGFjZShjaGFyYWN0ZXIpIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGF0U2lnbiB8fFxuICAgICAgKGNoYXJhY3RlciA9PT0gJzonICYmIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBzbGFzaClcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBsaW5rICs9IGNoYXJhY3RlclxuICBpbmRleCsrXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gYXRTaWduKSB7XG4gICAgaGFzQXRDaGFyYWN0ZXIgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgaWYgKGNoYXJhY3RlciAhPT0gJzonIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBzbGFzaCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGluayArPSBzbGFzaFxuICAgIGluZGV4KytcbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKCFxdWV1ZSB8fCBjaGFyYWN0ZXIgIT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGluayArPSBxdWV1ZVxuICBjb250ZW50ID0gbGlua1xuICBzdWJ2YWx1ZSArPSBsaW5rICsgY2hhcmFjdGVyXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uKytcbiAgbm93Lm9mZnNldCsrXG5cbiAgaWYgKGhhc0F0Q2hhcmFjdGVyKSB7XG4gICAgaWYgKGxpbmsuc2xpY2UoMCwgbWFpbHRvTGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBtYWlsdG8pIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0b0xlbmd0aClcbiAgICAgIG5vdy5jb2x1bW4gKz0gbWFpbHRvTGVuZ3RoXG4gICAgICBub3cub2Zmc2V0ICs9IG1haWx0b0xlbmd0aFxuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rID0gbWFpbHRvICsgbGlua1xuICAgIH1cbiAgfVxuXG4gIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiBhdXRvbGlua3MuXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnNcbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0ge3RleHQ6IHRva2VuaXplcnMudGV4dH1cblxuICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuXG4gIGNvbnRlbnQgPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcblxuICBzZWxmLmlubGluZVRva2VuaXplcnMgPSB0b2tlbml6ZXJzXG4gIGV4aXQoKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnbGluaycsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdXJsOiBkZWNvZGUobGluaywge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG52YXIgcHJvdG9jb2xzID0gWydodHRwczovLycsICdodHRwOi8vJywgJ21haWx0bzonXVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gcHJvdG9jb2xzLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbWluID0gLTFcbiAgdmFyIHBvc2l0aW9uXG5cbiAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHBvc2l0aW9uID0gdmFsdWUuaW5kZXhPZihwcm90b2NvbHNbaW5kZXhdLCBmcm9tSW5kZXgpXG5cbiAgICBpZiAocG9zaXRpb24gIT09IC0xICYmIChwb3NpdGlvbiA8IG1pbiB8fCBtaW4gPT09IC0xKSkge1xuICAgICAgbWluID0gcG9zaXRpb25cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGRlY29kZSA9IHJlcXVpcmUoJ3BhcnNlLWVudGl0aWVzJylcbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS91cmwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVybFxudXJsLmxvY2F0b3IgPSBsb2NhdGVcbnVybC5ub3RJbkxpbmsgPSB0cnVlXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGxlZnRQYXJlbnRoZXNpcyA9ICcoJ1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBjb21tYSA9ICcsJ1xudmFyIGRvdCA9ICcuJ1xudmFyIGNvbG9uID0gJzonXG52YXIgc2VtaWNvbG9uID0gJzsnXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBhdFNpZ24gPSAnQCdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xuXG52YXIgaHR0cCA9ICdodHRwOi8vJ1xudmFyIGh0dHBzID0gJ2h0dHBzOi8vJ1xudmFyIG1haWx0byA9ICdtYWlsdG86J1xuXG52YXIgcHJvdG9jb2xzID0gW2h0dHAsIGh0dHBzLCBtYWlsdG9dXG5cbnZhciBwcm90b2NvbHNMZW5ndGggPSBwcm90b2NvbHMubGVuZ3RoXG5cbmZ1bmN0aW9uIHVybChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgY29udGVudFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBpbmRleFxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHByb3RvY29sXG4gIHZhciBtYXRjaFxuICB2YXIgbGVuZ3RoXG4gIHZhciBxdWV1ZVxuICB2YXIgcGFyZW5Db3VudFxuICB2YXIgbmV4dENoYXJhY3RlclxuICB2YXIgdG9rZW5pemVyc1xuICB2YXIgZXhpdFxuXG4gIGlmICghc2VsZi5vcHRpb25zLmdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSAnJ1xuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwcm90b2NvbHNMZW5ndGgpIHtcbiAgICBwcm90b2NvbCA9IHByb3RvY29sc1tpbmRleF1cbiAgICBtYXRjaCA9IHZhbHVlLnNsaWNlKDAsIHByb3RvY29sLmxlbmd0aClcblxuICAgIGlmIChtYXRjaC50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbCkge1xuICAgICAgc3VidmFsdWUgPSBtYXRjaFxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoIXN1YnZhbHVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuICBwYXJlbkNvdW50ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IGRvdCB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb21tYSB8fFxuICAgICAgY2hhcmFjdGVyID09PSBjb2xvbiB8fFxuICAgICAgY2hhcmFjdGVyID09PSBzZW1pY29sb24gfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcXVvdGF0aW9uTWFyayB8fFxuICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0XG4gICAgKSB7XG4gICAgICBuZXh0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4ICsgMSlcblxuICAgICAgaWYgKCFuZXh0Q2hhcmFjdGVyIHx8IHdoaXRlc3BhY2UobmV4dENoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMgfHwgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudCsrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcyB8fCBjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcGFyZW5Db3VudC0tXG5cbiAgICAgIGlmIChwYXJlbkNvdW50IDwgMCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICghcXVldWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlICs9IHF1ZXVlXG4gIGNvbnRlbnQgPSBzdWJ2YWx1ZVxuXG4gIGlmIChwcm90b2NvbCA9PT0gbWFpbHRvKSB7XG4gICAgcG9zaXRpb24gPSBxdWV1ZS5pbmRleE9mKGF0U2lnbilcblxuICAgIGlmIChwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IGxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKG1haWx0by5sZW5ndGgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJMaW5rKClcblxuICAvLyBUZW1wb3JhcmlseSByZW1vdmUgYWxsIHRva2VuaXplcnMgZXhjZXB0IHRleHQgaW4gdXJsLlxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHt0ZXh0OiB0b2tlbml6ZXJzLnRleHR9XG5cbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgZWF0Lm5vdygpKVxuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShzdWJ2YWx1ZSwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSksXG4gICAgY2hpbGRyZW46IGNvbnRlbnRcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcbnZhciB0YWcgPSByZXF1aXJlKCcuLi91dGlsL2h0bWwnKS50YWdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVIVE1MXG5pbmxpbmVIVE1MLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgcXVlc3Rpb25NYXJrID0gJz8nXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG52YXIgc2xhc2ggPSAnLydcblxudmFyIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24gPSAvXjxhIC9pXG52YXIgaHRtbExpbmtDbG9zZUV4cHJlc3Npb24gPSAvXjxcXC9hPi9pXG5cbmZ1bmN0aW9uIGlubGluZUhUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHN1YnZhbHVlXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gbGVzc1RoYW4gfHwgbGVuZ3RoIDwgMykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpXG5cbiAgaWYgKFxuICAgICFhbHBoYWJldGljYWwoY2hhcmFjdGVyKSAmJlxuICAgIGNoYXJhY3RlciAhPT0gcXVlc3Rpb25NYXJrICYmXG4gICAgY2hhcmFjdGVyICE9PSBleGNsYW1hdGlvbk1hcmsgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHNsYXNoXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5tYXRjaCh0YWcpXG5cbiAgaWYgKCFzdWJ2YWx1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbm90IHVzZWQgeWV0LiAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHN1YnZhbHVlID0gc3VidmFsdWVbMF1cblxuICBpZiAoIXNlbGYuaW5MaW5rICYmIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24udGVzdChzdWJ2YWx1ZSkpIHtcbiAgICBzZWxmLmluTGluayA9IHRydWVcbiAgfSBlbHNlIGlmIChzZWxmLmluTGluayAmJiBodG1sTGlua0Nsb3NlRXhwcmVzc2lvbi50ZXN0KHN1YnZhbHVlKSkge1xuICAgIHNlbGYuaW5MaW5rID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHt0eXBlOiAnaHRtbCcsIHZhbHVlOiBzdWJ2YWx1ZX0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxpbmsgPSB2YWx1ZS5pbmRleE9mKCdbJywgZnJvbUluZGV4KVxuICB2YXIgaW1hZ2UgPSB2YWx1ZS5pbmRleE9mKCchWycsIGZyb21JbmRleClcblxuICBpZiAoaW1hZ2UgPT09IC0xKSB7XG4gICAgcmV0dXJuIGxpbmtcbiAgfVxuXG4gIC8vIExpbmsgY2FuIG5ldmVyIGJlIGAtMWAgaWYgYW4gaW1hZ2UgaXMgZm91bmQsIHNvIHdlIGRvbuKAmXQgbmVlZCB0byBjaGVja1xuICAvLyBmb3IgdGhhdCA6KVxuICByZXR1cm4gbGluayA8IGltYWdlID8gbGluayA6IGltYWdlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcbmxpbmsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbmZ1bmN0aW9uIGxpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMClcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGNsb3NlZFxuICB2YXIgY291bnRcbiAgdmFyIG9wZW5pbmdcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBoYXNNYXJrZXJcbiAgdmFyIGlzSW1hZ2VcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIG1hcmtlclxuICB2YXIgbGVuZ3RoXG4gIHZhciB0aXRsZVxuICB2YXIgZGVwdGhcbiAgdmFyIHF1ZXVlXG4gIHZhciB1cmxcbiAgdmFyIG5vd1xuICB2YXIgZXhpdFxuICB2YXIgbm9kZVxuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoaXMgaXMgYW4gaW1hZ2UuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGV4Y2xhbWF0aW9uTWFyaykge1xuICAgIGlzSW1hZ2UgPSB0cnVlXG4gICAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgfVxuXG4gIC8vIEVhdCB0aGUgb3BlbmluZy5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiB0aGlzIGlzIGEgbGluayBhbmQgd2XigJlyZSBhbHJlYWR5IGluc2lkZSBhIGxpbmsuXG4gIGlmICghaXNJbWFnZSAmJiBzZWxmLmluTGluaykge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB0aGUgY29udGVudC5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBkZXB0aCA9IDBcblxuICBub3cuY29sdW1uICs9IGluZGV4XG4gIG5vdy5vZmZzZXQgKz0gaW5kZXhcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgc3VicXVldWUgPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICAvLyBJbmxpbmUtY29kZSBpbiBsaW5rIGNvbnRlbnQuXG4gICAgICBjb3VudCA9IDFcblxuICAgICAgd2hpbGUgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmICghb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gY291bnRcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPj0gb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gMFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIC8vIEFsbG93IGJyYWNrZXRzIHRvIGJlIGVzY2FwZWQuXG4gICAgICBpbmRleCsrXG4gICAgICBzdWJxdWV1ZSArPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfSBlbHNlIGlmICgoIW9wZW5pbmcgfHwgZ2ZtKSAmJiBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAvLyBJbiBHRk0gbW9kZSwgYnJhY2tldHMgaW4gY29kZSBzdGlsbCBjb3VudC4gIEluIGFsbCBvdGhlciBtb2RlcyxcbiAgICAgIC8vIHRoZXkgZG9u4oCZdC5cbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKCghb3BlbmluZyB8fCBnZm0pICYmIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoZGVwdGgpIHtcbiAgICAgICAgZGVwdGgtLVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxsb3cgd2hpdGUtc3BhY2UgYmV0d2VlbiBjb250ZW50IGFuZCB1cmwgaW4gR0ZNIG1vZGUuXG4gICAgICAgIGlmICghcGVkYW50aWMpIHtcbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDEpXG5cbiAgICAgICAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gbGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBsZWZ0UGFyZW50aGVzaXNcbiAgICAgICAgY2xvc2VkID0gdHJ1ZVxuICAgICAgICBpbmRleCsrXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgIHN1YnF1ZXVlID0gJydcbiAgICBpbmRleCsrXG4gIH1cblxuICAvLyBFYXQgdGhlIGNvbnRlbnQgY2xvc2luZy5cbiAgaWYgKCFjbG9zZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnRlbnQgPSBxdWV1ZVxuICBzdWJ2YWx1ZSArPSBxdWV1ZSArIHN1YnF1ZXVlXG4gIGluZGV4KytcblxuICAvLyBFYXQgd2hpdGUtc3BhY2UuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCB0aGUgVVJMLlxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHF1ZXVlID0gJydcbiAgYmVmb3JlVVJMID0gc3VidmFsdWVcblxuICBpZiAoY2hhcmFjdGVyID09PSBsZXNzVGhhbikge1xuICAgIGluZGV4KytcbiAgICBiZWZvcmVVUkwgKz0gbGVzc1RoYW5cblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBncmVhdGVyVGhhbikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGxlc3NUaGFuICsgcXVldWUgKyBncmVhdGVyVGhhblxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXgrK1xuICB9IGVsc2Uge1xuICAgIGNoYXJhY3RlciA9IG51bGxcbiAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKFxuICAgICAgICBzdWJxdWV1ZSAmJlxuICAgICAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICAgICAgY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlIHx8XG4gICAgICAgICAgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpKVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgaWYgKCFwZWRhbnRpYykge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIGRlcHRoKytcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVwdGgtLVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gc3VicXVldWVcbiAgICAgICAgc3VicXVldWUgPSAnJ1xuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHVybCA9IHF1ZXVlXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgfVxuXG4gIC8vIEVhdCB3aGl0ZS1zcGFjZS5cbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgc3VidmFsdWUgKz0gcXVldWVcblxuICAvLyBFYXQgdGhlIHRpdGxlLlxuICBpZiAoXG4gICAgcXVldWUgJiZcbiAgICAoY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgIChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzKSlcbiAgKSB7XG4gICAgaW5kZXgrK1xuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIHF1ZXVlID0gJydcbiAgICBtYXJrZXIgPSBjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcyA/IHJpZ2h0UGFyZW50aGVzaXMgOiBjaGFyYWN0ZXJcbiAgICBiZWZvcmVUaXRsZSA9IHN1YnZhbHVlXG5cbiAgICAvLyBJbiBjb21tb25tYXJrLW1vZGUsIHRoaW5ncyBhcmUgcHJldHR5IGVhc3k6IHRoZSBtYXJrZXIgY2Fubm90IG9jY3VyXG4gICAgLy8gaW5zaWRlIHRoZSB0aXRsZS4gIE5vbi1jb21tb25tYXJrIGRvZXMsIGhvd2V2ZXIsIHN1cHBvcnQgbmVzdGVkXG4gICAgLy8gZGVsaW1pdGVycy5cbiAgICBpZiAoY29tbW9ubWFyaykge1xuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgfVxuXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGl0bGUgPSBxdWV1ZVxuICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyKSB7XG4gICAgICAgICAgaWYgKGhhc01hcmtlcikge1xuICAgICAgICAgICAgcXVldWUgKz0gbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoYXNNYXJrZXIgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc01hcmtlcikge1xuICAgICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgbWFya2VyICsgc3VicXVldWVcbiAgICAgICAgICB0aXRsZSA9IHF1ZXVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgICAgIHN1YnF1ZXVlID0gJydcbiAgICAgICAgICBoYXNNYXJrZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3VidmFsdWUgKz0gcmlnaHRQYXJlbnRoZXNpc1xuXG4gIHVybCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHVybCksIGVhdChiZWZvcmVVUkwpLnRlc3QoKS5lbmQsIHtcbiAgICBub25UZXJtaW5hdGVkOiBmYWxzZVxuICB9KVxuXG4gIGlmICh0aXRsZSkge1xuICAgIGJlZm9yZVRpdGxlID0gZWF0KGJlZm9yZVRpdGxlKS50ZXN0KCkuZW5kXG4gICAgdGl0bGUgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh0aXRsZSksIGJlZm9yZVRpdGxlKVxuICB9XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiBpc0ltYWdlID8gJ2ltYWdlJyA6ICdsaW5rJyxcbiAgICB0aXRsZTogdGl0bGUgfHwgbnVsbCxcbiAgICB1cmw6IHVybFxuICB9XG5cbiAgaWYgKGlzSW1hZ2UpIHtcbiAgICBub2RlLmFsdCA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKGNvbnRlbnQpLCBub3cpIHx8IG51bGxcbiAgfSBlbHNlIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKG5vZGUpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSByZWZlcmVuY2VcbnJlZmVyZW5jZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5rID0gJ2xpbmsnXG52YXIgaW1hZ2UgPSAnaW1hZ2UnXG52YXIgZm9vdG5vdGUgPSAnZm9vdG5vdGUnXG52YXIgc2hvcnRjdXQgPSAnc2hvcnRjdXQnXG52YXIgY29sbGFwc2VkID0gJ2NvbGxhcHNlZCdcbnZhciBmdWxsID0gJ2Z1bGwnXG52YXIgc3BhY2UgPSAnICdcbnZhciBleGNsYW1hdGlvbk1hcmsgPSAnISdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGNhcmV0ID0gJ14nXG5cbmZ1bmN0aW9uIHJlZmVyZW5jZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGZvb3Rub3RlcyA9IHNlbGYub3B0aW9ucy5mb290bm90ZXNcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGludHJvID0gJydcbiAgdmFyIHR5cGUgPSBsaW5rXG4gIHZhciByZWZlcmVuY2VUeXBlID0gc2hvcnRjdXRcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIG5vd1xuICB2YXIgbm9kZVxuICB2YXIgZXhpdFxuICB2YXIgcXVldWVcbiAgdmFyIGJyYWNrZXRlZFxuICB2YXIgZGVwdGhcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGFuIGltYWdlLlxuICBpZiAoY2hhcmFjdGVyID09PSBleGNsYW1hdGlvbk1hcmspIHtcbiAgICB0eXBlID0gaW1hZ2VcbiAgICBpbnRybyA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgaW50cm8gKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGEgZm9vdG5vdGUuXG4gIGlmIChmb290bm90ZXMgJiYgdmFsdWUuY2hhckF0KGluZGV4KSA9PT0gY2FyZXQpIHtcbiAgICAvLyBFeGl0IGlmIGAhW15gIGlzIGZvdW5kLCBzbyB0aGUgYCFgIHdpbGwgYmUgc2VlbiBhcyB0ZXh0IGFmdGVyIHRoaXMsXG4gICAgLy8gYW5kIHdl4oCZbGwgZW50ZXIgdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGBbXmAgaXMgZm91bmQuXG4gICAgaWYgKHR5cGUgPT09IGltYWdlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpbnRybyArPSBjYXJldFxuICAgIGluZGV4KytcbiAgICB0eXBlID0gZm9vdG5vdGVcbiAgfVxuXG4gIC8vIEVhdCB0aGUgdGV4dC5cbiAgZGVwdGggPSAwXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyYWNrZXRlZCA9IHRydWVcbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoIWRlcHRoKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGRlcHRoLS1cbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGJhY2tzbGFzaFxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgc3VidmFsdWUgPSBxdWV1ZVxuICBjb250ZW50ID0gcXVldWVcbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIGlmICghY29tbW9ubWFyaykge1xuICAgIC8vIFRoZSBvcmlnaW5hbCBtYXJrZG93biBzeW50YXggZGVmaW5pdGlvbiBleHBsaWNpdGx5IGFsbG93cyBmb3Igd2hpdGVzcGFjZVxuICAgIC8vIGJldHdlZW4gdGhlIGxpbmsgdGV4dCBhbmQgbGluayBsYWJlbDsgY29tbW9ubWFyayBkZXBhcnRzIGZyb20gdGhpcywgaW5cbiAgICAvLyBwYXJ0IHRvIGltcHJvdmUgc3VwcG9ydCBmb3Igc2hvcnRjdXQgcmVmZXJlbmNlIGxpbmtzXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAvLyBJbmxpbmUgZm9vdG5vdGVzIGNhbm5vdCBoYXZlIGEgbGFiZWwuXG4gIC8vIElmIGZvb3Rub3RlcyBhcmUgZW5hYmxlZCwgbGluayBsYWJlbHMgY2Fubm90IHN0YXJ0IHdpdGggYSBjYXJldC5cbiAgaWYgKFxuICAgIHR5cGUgIT09IGZvb3Rub3RlICYmXG4gICAgY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCAmJlxuICAgICghZm9vdG5vdGVzIHx8IHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjYXJldClcbiAgKSB7XG4gICAgaWRlbnRpZmllciA9ICcnXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0IHx8IGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgICBpZGVudGlmaWVyICs9IGJhY2tzbGFzaFxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgIH1cblxuICAgICAgaWRlbnRpZmllciArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIHJlZmVyZW5jZVR5cGUgPSBpZGVudGlmaWVyID8gZnVsbCA6IGNvbGxhcHNlZFxuICAgICAgcXVldWUgKz0gaWRlbnRpZmllciArIGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVyID0gJydcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICAgIHF1ZXVlID0gJydcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlkZW50aWZpZXIgPSBjb250ZW50XG4gIH1cblxuICAvLyBCcmFja2V0cyBjYW5ub3QgYmUgaW5zaWRlIHRoZSBpZGVudGlmaWVyLlxuICBpZiAocmVmZXJlbmNlVHlwZSAhPT0gZnVsbCAmJiBicmFja2V0ZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHN1YnZhbHVlID0gaW50cm8gKyBzdWJ2YWx1ZVxuXG4gIGlmICh0eXBlID09PSBsaW5rICYmIHNlbGYuaW5MaW5rKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodHlwZSA9PT0gZm9vdG5vdGUgJiYgY29udGVudC5pbmRleE9mKHNwYWNlKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgICB0eXBlOiBmb290bm90ZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIGVhdC5ub3coKSlcbiAgICB9KVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gaW50cm8ubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gaW50cm8ubGVuZ3RoXG4gIGlkZW50aWZpZXIgPSByZWZlcmVuY2VUeXBlID09PSBmdWxsID8gaWRlbnRpZmllciA6IGNvbnRlbnRcblxuICBub2RlID0ge1xuICAgIHR5cGU6IHR5cGUgKyAnUmVmZXJlbmNlJyxcbiAgICBpZGVudGlmaWVyOiBub3JtYWxpemUoaWRlbnRpZmllciksXG4gICAgbGFiZWw6IGlkZW50aWZpZXJcbiAgfVxuXG4gIGlmICh0eXBlID09PSBsaW5rIHx8IHR5cGUgPT09IGltYWdlKSB7XG4gICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICB9XG5cbiAgaWYgKHR5cGUgPT09IGxpbmspIHtcbiAgICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuICAgIG5vZGUuY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgICBleGl0KClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBpbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbFxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkobm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgYXN0ZXJpc2sgPSB2YWx1ZS5pbmRleE9mKCcqKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfXycsIGZyb21JbmRleClcblxuICBpZiAodW5kZXJzY29yZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXN0ZXJpc2tcbiAgfVxuXG4gIGlmIChhc3RlcmlzayA9PT0gLTEpIHtcbiAgICByZXR1cm4gdW5kZXJzY29yZVxuICB9XG5cbiAgcmV0dXJuIHVuZGVyc2NvcmUgPCBhc3RlcmlzayA/IHVuZGVyc2NvcmUgOiBhc3Rlcmlza1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvc3Ryb25nJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcbnN0cm9uZy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxuZnVuY3Rpb24gc3Ryb25nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChcbiAgICAoY2hhcmFjdGVyICE9PSBhc3RlcmlzayAmJiBjaGFyYWN0ZXIgIT09IHVuZGVyc2NvcmUpIHx8XG4gICAgdmFsdWUuY2hhckF0KCsraW5kZXgpICE9PSBjaGFyYWN0ZXJcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpY1xuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgc3VidmFsdWUgPSBtYXJrZXIgKyBtYXJrZXJcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4KytcbiAgcXVldWUgPSAnJ1xuICBjaGFyYWN0ZXIgPSAnJ1xuXG4gIGlmIChwZWRhbnRpYyAmJiB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdChpbmRleCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcmV2ID0gY2hhcmFjdGVyXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBtYXJrZXIgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBtYXJrZXIgJiZcbiAgICAgICghcGVkYW50aWMgfHwgIXdoaXRlc3BhY2UocHJldikpXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdyA9IGVhdC5ub3coKVxuICAgICAgICBub3cuY29sdW1uICs9IDJcbiAgICAgICAgbm93Lm9mZnNldCArPSAyXG5cbiAgICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlICsgc3VidmFsdWUpKHtcbiAgICAgICAgICB0eXBlOiAnc3Ryb25nJyxcbiAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShxdWV1ZSwgbm93KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGVkYW50aWMgJiYgY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB3b3JkQ2hhcmFjdGVyXG5cbnZhciBmcm9tQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbnZhciByZSA9IC9cXHcvXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBhIHdvcmQgY2hhcmFjdGVyLlxuZnVuY3Rpb24gd29yZENoYXJhY3RlcihjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIHJlLnRlc3QoXG4gICAgdHlwZW9mIGNoYXJhY3RlciA9PT0gJ251bWJlcicgPyBmcm9tQ29kZShjaGFyYWN0ZXIpIDogY2hhcmFjdGVyLmNoYXJBdCgwKVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGFzdGVyaXNrID0gdmFsdWUuaW5kZXhPZignKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfJywgZnJvbUluZGV4KVxuXG4gIGlmICh1bmRlcnNjb3JlID09PSAtMSkge1xuICAgIHJldHVybiBhc3Rlcmlza1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlXG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciB3b3JkID0gcmVxdWlyZSgnaXMtd29yZC1jaGFyYWN0ZXInKVxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2VtcGhhc2lzJylcblxubW9kdWxlLmV4cG9ydHMgPSBlbXBoYXNpc1xuZW1waGFzaXMubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgYXN0ZXJpc2sgPSAnKidcbnZhciB1bmRlcnNjb3JlID0gJ18nXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG5cbmZ1bmN0aW9uIGVtcGhhc2lzKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldlxuXG4gIGlmIChjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBpbmRleCsrXG4gIHF1ZXVlID0gJydcbiAgY2hhcmFjdGVyID0gJydcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJldiA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlciAmJiAoIXBlZGFudGljIHx8ICF3aGl0ZXNwYWNlKHByZXYpKSkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBpZiAoIXRyaW0ocXVldWUpIHx8IHByZXYgPT09IG1hcmtlcikge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwZWRhbnRpYyAmJiBtYXJrZXIgPT09IHVuZGVyc2NvcmUgJiYgd29yZChjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBub3cgPSBlYXQubm93KClcbiAgICAgICAgbm93LmNvbHVtbisrXG4gICAgICAgIG5vdy5vZmZzZXQrK1xuXG4gICAgICAgIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSArIG1hcmtlcikoe1xuICAgICAgICAgIHR5cGU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUocXVldWUsIG5vdylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignfn4nLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2RlbGV0ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWtldGhyb3VnaFxuc3RyaWtldGhyb3VnaC5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciB0aWxkZSA9ICd+J1xudmFyIGZlbmNlID0gJ35+J1xuXG5mdW5jdGlvbiBzdHJpa2V0aHJvdWdoKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNoYXJhY3RlciA9ICcnXG4gIHZhciBwcmV2aW91cyA9ICcnXG4gIHZhciBwcmVjZWRpbmcgPSAnJ1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuICB2YXIgbm93XG5cbiAgaWYgKFxuICAgICFzZWxmLm9wdGlvbnMuZ2ZtIHx8XG4gICAgdmFsdWUuY2hhckF0KDApICE9PSB0aWxkZSB8fFxuICAgIHZhbHVlLmNoYXJBdCgxKSAhPT0gdGlsZGUgfHxcbiAgICB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdCgyKSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IDFcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IDJcbiAgbm93Lm9mZnNldCArPSAyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IHRpbGRlICYmXG4gICAgICBwcmV2aW91cyA9PT0gdGlsZGUgJiZcbiAgICAgICghcHJlY2VkaW5nIHx8ICF3aGl0ZXNwYWNlKHByZWNlZGluZykpXG4gICAgKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQoZmVuY2UgKyBzdWJ2YWx1ZSArIGZlbmNlKSh7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBwcmV2aW91c1xuICAgIHByZWNlZGluZyA9IHByZXZpb3VzXG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCdgJywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvY29kZS1pbmxpbmUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlubGluZUNvZGVcbmlubGluZUNvZGUubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAxMCAvLyAgJ1xcbidcbnZhciBzcGFjZSA9IDMyIC8vICcgJ1xudmFyIGdyYXZlQWNjZW50ID0gOTYgLy8gICdgJ1xuXG5mdW5jdGlvbiBpbmxpbmVDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIG9wZW5pbmdGZW5jZUVuZFxuICB2YXIgY2xvc2luZ0ZlbmNlU3RhcnRcbiAgdmFyIGNsb3NpbmdGZW5jZUVuZFxuICB2YXIgY29kZVxuICB2YXIgbmV4dFxuICB2YXIgZm91bmRcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCkgIT09IGdyYXZlQWNjZW50KSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBvcGVuaW5nRmVuY2VFbmQgPSBpbmRleFxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gbmV4dFxuICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4ICsgMSlcblxuICAgIGlmIChjb2RlID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgaWYgKGNsb3NpbmdGZW5jZVN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQgPSBpbmRleFxuICAgICAgfVxuXG4gICAgICBjbG9zaW5nRmVuY2VFbmQgPSBpbmRleCArIDFcblxuICAgICAgaWYgKFxuICAgICAgICBuZXh0ICE9PSBncmF2ZUFjY2VudCAmJlxuICAgICAgICBjbG9zaW5nRmVuY2VFbmQgLSBjbG9zaW5nRmVuY2VTdGFydCA9PT0gb3BlbmluZ0ZlbmNlRW5kXG4gICAgICApIHtcbiAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjbG9zaW5nRmVuY2VTdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbG9zaW5nRmVuY2VTdGFydCA9IHVuZGVmaW5lZFxuICAgICAgY2xvc2luZ0ZlbmNlRW5kID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5pdGlhbCBhbmQgZmluYWwgc3BhY2UgKG9yIGxpbmUgZmVlZCksIGlmZiB0aGV5IGV4aXN0IGFuZCB0aGVyZVxuICAvLyBhcmUgbm9uLXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGNvbnRlbnQuXG4gIGluZGV4ID0gb3BlbmluZ0ZlbmNlRW5kXG4gIGxlbmd0aCA9IGNsb3NpbmdGZW5jZVN0YXJ0XG4gIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChsZW5ndGggLSAxKVxuICBmb3VuZCA9IGZhbHNlXG5cbiAgaWYgKFxuICAgIGxlbmd0aCAtIGluZGV4ID4gMiAmJlxuICAgIChjb2RlID09PSBzcGFjZSB8fCBjb2RlID09PSBsaW5lRmVlZCkgJiZcbiAgICAobmV4dCA9PT0gc3BhY2UgfHwgbmV4dCA9PT0gbGluZUZlZWQpXG4gICkge1xuICAgIGluZGV4KytcbiAgICBsZW5ndGgtLVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgICAgaWYgKGNvZGUgIT09IHNwYWNlICYmIGNvZGUgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKGZvdW5kID09PSB0cnVlKSB7XG4gICAgICBvcGVuaW5nRmVuY2VFbmQrK1xuICAgICAgY2xvc2luZ0ZlbmNlU3RhcnQtLVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgY2xvc2luZ0ZlbmNlRW5kKSkoe1xuICAgIHR5cGU6ICdpbmxpbmVDb2RlJyxcbiAgICB2YWx1ZTogdmFsdWUuc2xpY2Uob3BlbmluZ0ZlbmNlRW5kLCBjbG9zaW5nRmVuY2VTdGFydClcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nLCBmcm9tSW5kZXgpXG5cbiAgd2hpbGUgKGluZGV4ID4gZnJvbUluZGV4KSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCAtIDEpICE9PSAnICcpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgtLVxuICB9XG5cbiAgcmV0dXJuIGluZGV4XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9icmVhaycpXG5cbm1vZHVsZS5leHBvcnRzID0gaGFyZEJyZWFrXG5oYXJkQnJlYWsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgc3BhY2UgPSAnICdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgbWluQnJlYWtMZW5ndGggPSAyXG5cbmZ1bmN0aW9uIGhhcmRCcmVhayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgaWYgKGluZGV4IDwgbWluQnJlYWtMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG5cbiAgICAgIHJldHVybiBlYXQocXVldWUpKHt0eXBlOiAnYnJlYWsnfSlcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxuZnVuY3Rpb24gdGV4dChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBtZXRob2RzXG4gIHZhciB0b2tlbml6ZXJzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHRva2VuaXplclxuICB2YXIgbmFtZVxuICB2YXIgbWluXG4gIHZhciBub3dcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbWV0aG9kcyA9IHNlbGYuaW5saW5lTWV0aG9kc1xuICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIGluZGV4ID0gLTFcbiAgbWluID0gdmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBuYW1lID0gbWV0aG9kc1tpbmRleF1cblxuICAgIGlmIChuYW1lID09PSAndGV4dCcgfHwgIXRva2VuaXplcnNbbmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdG9rZW5pemVyID0gdG9rZW5pemVyc1tuYW1lXS5sb2NhdG9yXG5cbiAgICBpZiAoIXRva2VuaXplcikge1xuICAgICAgZWF0LmZpbGUuZmFpbCgnTWlzc2luZyBsb2NhdG9yOiBgJyArIG5hbWUgKyAnYCcpXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSB0b2tlbml6ZXIuY2FsbChzZWxmLCB2YWx1ZSwgMSlcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgcG9zaXRpb24gPCBtaW4pIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBtaW4pXG4gIG5vdyA9IGVhdC5ub3coKVxuXG4gIHNlbGYuZGVjb2RlKHN1YnZhbHVlLCBub3csIGhhbmRsZXIpXG5cbiAgZnVuY3Rpb24gaGFuZGxlcihjb250ZW50LCBwb3NpdGlvbiwgc291cmNlKSB7XG4gICAgZWF0KHNvdXJjZSB8fCBjb250ZW50KSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogY29udGVudH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgdG9nZ2xlID0gcmVxdWlyZSgnc3RhdGUtdG9nZ2xlJylcbnZhciB2ZmlsZUxvY2F0aW9uID0gcmVxdWlyZSgndmZpbGUtbG9jYXRpb24nKVxudmFyIHVuZXNjYXBlID0gcmVxdWlyZSgnLi91bmVzY2FwZScpXG52YXIgZGVjb2RlID0gcmVxdWlyZSgnLi9kZWNvZGUnKVxudmFyIHRva2VuaXplciA9IHJlcXVpcmUoJy4vdG9rZW5pemVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXJcblxuZnVuY3Rpb24gUGFyc2VyKGRvYywgZmlsZSkge1xuICB0aGlzLmZpbGUgPSBmaWxlXG4gIHRoaXMub2Zmc2V0ID0ge31cbiAgdGhpcy5vcHRpb25zID0geHRlbmQodGhpcy5vcHRpb25zKVxuICB0aGlzLnNldE9wdGlvbnMoe30pXG5cbiAgdGhpcy5pbkxpc3QgPSBmYWxzZVxuICB0aGlzLmluQmxvY2sgPSBmYWxzZVxuICB0aGlzLmluTGluayA9IGZhbHNlXG4gIHRoaXMuYXRTdGFydCA9IHRydWVcblxuICB0aGlzLnRvT2Zmc2V0ID0gdmZpbGVMb2NhdGlvbihmaWxlKS50b09mZnNldFxuICB0aGlzLnVuZXNjYXBlID0gdW5lc2NhcGUodGhpcywgJ2VzY2FwZScpXG4gIHRoaXMuZGVjb2RlID0gZGVjb2RlKHRoaXMpXG59XG5cbnZhciBwcm90byA9IFBhcnNlci5wcm90b3R5cGVcblxuLy8gRXhwb3NlIGNvcmUuXG5wcm90by5zZXRPcHRpb25zID0gcmVxdWlyZSgnLi9zZXQtb3B0aW9ucycpXG5wcm90by5wYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuXG4vLyBFeHBvc2UgYGRlZmF1bHRzYC5cbnByb3RvLm9wdGlvbnMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJylcblxuLy8gRW50ZXIgYW5kIGV4aXQgaGVscGVycy5cbnByb3RvLmV4aXRTdGFydCA9IHRvZ2dsZSgnYXRTdGFydCcsIHRydWUpXG5wcm90by5lbnRlckxpc3QgPSB0b2dnbGUoJ2luTGlzdCcsIGZhbHNlKVxucHJvdG8uZW50ZXJMaW5rID0gdG9nZ2xlKCdpbkxpbmsnLCBmYWxzZSlcbnByb3RvLmVudGVyQmxvY2sgPSB0b2dnbGUoJ2luQmxvY2snLCBmYWxzZSlcblxuLy8gTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBwYXJhZ3JhcGg6XG4vL1xuLy8gYGBgbWFya2Rvd25cbi8vIEEgcGFyYWdyYXBoLCBmb2xsb3dlZCBieSBhIHRoZW1hdGljIGJyZWFrLlxuLy8gX19fXG4vLyBgYGBcbi8vXG4vLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnSB0aGUgcGFyYWdyYXBoLlxucHJvdG8uaW50ZXJydXB0UGFyYWdyYXBoID0gW1xuICBbJ3RoZW1hdGljQnJlYWsnXSxcbiAgWydhdHhIZWFkaW5nJ10sXG4gIFsnZmVuY2VkQ29kZSddLFxuICBbJ2Jsb2NrcXVvdGUnXSxcbiAgWydodG1sJ10sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgbGlzdDpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gLSBPbmVcbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGxpc3QuXG5wcm90by5pbnRlcnJ1cHRMaXN0ID0gW1xuICBbJ2F0eEhlYWRpbmcnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XSxcbiAgWydmb290bm90ZScsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgYmxvY2txdW90ZTpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gPiBBIHBhcmFncmFwaC5cbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGJsb2NrcXVvdGUuXG5wcm90by5pbnRlcnJ1cHRCbG9ja3F1b3RlID0gW1xuICBbJ2luZGVudGVkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnYXR4SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnc2V0ZXh0SGVhZGluZycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsndGhlbWF0aWNCcmVhaycsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnaHRtbCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnbGlzdCcsIHtjb21tb25tYXJrOiB0cnVlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2Zvb3Rub3RlJywge2NvbW1vbm1hcms6IGZhbHNlfV1cbl1cblxuLy8gSGFuZGxlcnMuXG5wcm90by5ibG9ja1Rva2VuaXplcnMgPSB7XG4gIG5ld2xpbmU6IHJlcXVpcmUoJy4vdG9rZW5pemUvbmV3bGluZScpLFxuICBpbmRlbnRlZENvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1pbmRlbnRlZCcpLFxuICBmZW5jZWRDb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtZmVuY2VkJyksXG4gIGJsb2NrcXVvdGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvYmxvY2txdW90ZScpLFxuICBhdHhIZWFkaW5nOiByZXF1aXJlKCcuL3Rva2VuaXplL2hlYWRpbmctYXR4JyksXG4gIHRoZW1hdGljQnJlYWs6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGhlbWF0aWMtYnJlYWsnKSxcbiAgbGlzdDogcmVxdWlyZSgnLi90b2tlbml6ZS9saXN0JyksXG4gIHNldGV4dEhlYWRpbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvaGVhZGluZy1zZXRleHQnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWJsb2NrJyksXG4gIGZvb3Rub3RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2Zvb3Rub3RlLWRlZmluaXRpb24nKSxcbiAgZGVmaW5pdGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWZpbml0aW9uJyksXG4gIHRhYmxlOiByZXF1aXJlKCcuL3Rva2VuaXplL3RhYmxlJyksXG4gIHBhcmFncmFwaDogcmVxdWlyZSgnLi90b2tlbml6ZS9wYXJhZ3JhcGgnKVxufVxuXG5wcm90by5pbmxpbmVUb2tlbml6ZXJzID0ge1xuICBlc2NhcGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvZXNjYXBlJyksXG4gIGF1dG9MaW5rOiByZXF1aXJlKCcuL3Rva2VuaXplL2F1dG8tbGluaycpLFxuICB1cmw6IHJlcXVpcmUoJy4vdG9rZW5pemUvdXJsJyksXG4gIGh0bWw6IHJlcXVpcmUoJy4vdG9rZW5pemUvaHRtbC1pbmxpbmUnKSxcbiAgbGluazogcmVxdWlyZSgnLi90b2tlbml6ZS9saW5rJyksXG4gIHJlZmVyZW5jZTogcmVxdWlyZSgnLi90b2tlbml6ZS9yZWZlcmVuY2UnKSxcbiAgc3Ryb25nOiByZXF1aXJlKCcuL3Rva2VuaXplL3N0cm9uZycpLFxuICBlbXBoYXNpczogcmVxdWlyZSgnLi90b2tlbml6ZS9lbXBoYXNpcycpLFxuICBkZWxldGlvbjogcmVxdWlyZSgnLi90b2tlbml6ZS9kZWxldGUnKSxcbiAgY29kZTogcmVxdWlyZSgnLi90b2tlbml6ZS9jb2RlLWlubGluZScpLFxuICBicmVhazogcmVxdWlyZSgnLi90b2tlbml6ZS9icmVhaycpLFxuICB0ZXh0OiByZXF1aXJlKCcuL3Rva2VuaXplL3RleHQnKVxufVxuXG4vLyBFeHBvc2UgcHJlY2VkZW5jZS5cbnByb3RvLmJsb2NrTWV0aG9kcyA9IGtleXMocHJvdG8uYmxvY2tUb2tlbml6ZXJzKVxucHJvdG8uaW5saW5lTWV0aG9kcyA9IGtleXMocHJvdG8uaW5saW5lVG9rZW5pemVycylcblxuLy8gVG9rZW5pemVycy5cbnByb3RvLnRva2VuaXplQmxvY2sgPSB0b2tlbml6ZXIoJ2Jsb2NrJylcbnByb3RvLnRva2VuaXplSW5saW5lID0gdG9rZW5pemVyKCdpbmxpbmUnKVxucHJvdG8udG9rZW5pemVGYWN0b3J5ID0gdG9rZW5pemVyXG5cbi8vIEdldCBhbGwga2V5cyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24ga2V5cyh2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgcmVzdWx0LnB1c2goa2V5KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB1bmhlcml0ID0gcmVxdWlyZSgndW5oZXJpdCcpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgUGFyc2VyID0gcmVxdWlyZSgnLi9saWIvcGFyc2VyLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxucGFyc2UuUGFyc2VyID0gUGFyc2VyXG5cbmZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gdGhpcy5kYXRhKCdzZXR0aW5ncycpXG4gIHZhciBMb2NhbCA9IHVuaGVyaXQoUGFyc2VyKVxuXG4gIExvY2FsLnByb3RvdHlwZS5vcHRpb25zID0geHRlbmQoTG9jYWwucHJvdG90eXBlLm9wdGlvbnMsIHNldHRpbmdzLCBvcHRpb25zKVxuXG4gIHRoaXMuUGFyc2VyID0gTG9jYWxcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxudmFyIHNwYWNlU2VwYXJhdGVkID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpO1xuXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiWy1bXFxcXF17fSgpKis/LlxcXFxcXFxcXiR8L11cIiwgJ2cnKSwgJ1xcXFwkJicpO1xufVxuXG52YXIgQ19ORVdMSU5FID0gJ1xcbic7XG52YXIgQ19GRU5DRSA9ICd8JztcblxuZnVuY3Rpb24gY29tcGlsZXJGYWN0b3J5KG5vZGVUeXBlKSB7XG4gIHZhciB0ZXh0O1xuICB2YXIgdGl0bGU7XG4gIHJldHVybiB7XG4gICAgYmxvY2tIZWFkaW5nOiBmdW5jdGlvbiBibG9ja0hlYWRpbmcobm9kZSkge1xuICAgICAgdGl0bGUgPSB0aGlzLmFsbChub2RlKS5qb2luKCcnKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIGJsb2NrQm9keTogZnVuY3Rpb24gYmxvY2tCb2R5KG5vZGUpIHtcbiAgICAgIHRleHQgPSB0aGlzLmFsbChub2RlKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFxuL2csICdcXG58ICcpO1xuICAgICAgfSkuam9pbignXFxufFxcbnwgJyk7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9LFxuICAgIGJsb2NrOiBmdW5jdGlvbiBibG9jayhub2RlKSB7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgICB0aXRsZSA9ICcnO1xuICAgICAgdGhpcy5hbGwobm9kZSk7XG5cbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICByZXR1cm4gXCJbW1wiLmNvbmNhdChub2RlVHlwZSwgXCIgfCBcIikuY29uY2F0KHRpdGxlLCBcIl1dXFxufCBcIikuY29uY2F0KHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiW1tcIi5jb25jYXQobm9kZVR5cGUsIFwiXV1cXG58IFwiKS5jb25jYXQodGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJsb2NrUGx1Z2luKCkge1xuICB2YXIgYXZhaWxhYmxlQmxvY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIHBhdHRlcm4gPSBPYmplY3Qua2V5cyhhdmFpbGFibGVCbG9ja3MpLm1hcChlc2NhcGVSZWdFeHApLmpvaW4oJ3wnKTtcblxuICBpZiAoIXBhdHRlcm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1jdXN0b20tYmxvY2tzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChcIlxcXFxbXFxcXFsoXCIuY29uY2F0KHBhdHRlcm4sIFwiKSg/OiAqXFxcXHwgKiguKikpP1xcXFxdXFxcXF1cXG5cIikpO1xuXG4gIGZ1bmN0aW9uIGJsb2NrVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIHZhciBub3cgPSBlYXQubm93KCk7XG4gICAgdmFyIGtlZXAgPSByZWdleC5leGVjKHZhbHVlKTtcbiAgICBpZiAoIWtlZXApIHJldHVybjtcbiAgICBpZiAoa2VlcC5pbmRleCAhPT0gMCkgcmV0dXJuO1xuXG4gICAgdmFyIF9rZWVwID0gX3NsaWNlZFRvQXJyYXkoa2VlcCwgMyksXG4gICAgICAgIGVhdGVuID0gX2tlZXBbMF0sXG4gICAgICAgIGJsb2NrVHlwZSA9IF9rZWVwWzFdLFxuICAgICAgICBibG9ja1RpdGxlID0gX2tlZXBbMl07XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuXG5cbiAgICBpZiAoc2lsZW50KSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbGluZXNUb0VhdCA9IFtdO1xuICAgIHZhciBjb250ZW50ID0gW107XG4gICAgdmFyIGlkeCA9IDA7XG5cbiAgICB3aGlsZSAoKGlkeCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FKSkgIT09IC0xKSB7XG4gICAgICB2YXIgbmV4dCA9IHZhbHVlLmluZGV4T2YoQ19ORVdMSU5FLCBpZHggKyAxKTsgLy8gZWl0aGVyIHNsaWNlIHVudGlsIG5leHQgTkVXTElORSBvciBzbGljZSB1bnRpbCBlbmQgb2Ygc3RyaW5nXG5cbiAgICAgIHZhciBsaW5lVG9FYXQgPSBuZXh0ICE9PSAtMSA/IHZhbHVlLnNsaWNlKGlkeCArIDEsIG5leHQpIDogdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgICBpZiAobGluZVRvRWF0WzBdICE9PSBDX0ZFTkNFKSBicmVhazsgLy8gcmVtb3ZlIGxlYWRpbmcgYEZFTkNFIGAgb3IgbGVhZGluZyBgRkVOQ0VgXG5cbiAgICAgIHZhciBsaW5lID0gbGluZVRvRWF0LnNsaWNlKGxpbmVUb0VhdC5zdGFydHNXaXRoKFwiXCIuY29uY2F0KENfRkVOQ0UsIFwiIFwiKSkgPyAyIDogMSk7XG4gICAgICBsaW5lc1RvRWF0LnB1c2gobGluZVRvRWF0KTtcbiAgICAgIGNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoaWR4ICsgMSk7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnRTdHJpbmcgPSBjb250ZW50LmpvaW4oQ19ORVdMSU5FKTtcbiAgICB2YXIgc3RyaW5nVG9FYXQgPSBlYXRlbiArIGxpbmVzVG9FYXQuam9pbihDX05FV0xJTkUpO1xuICAgIHZhciBwb3RlbnRpYWxCbG9jayA9IGF2YWlsYWJsZUJsb2Nrc1tibG9ja1R5cGVdO1xuICAgIHZhciB0aXRsZUFsbG93ZWQgPSBwb3RlbnRpYWxCbG9jay50aXRsZSAmJiBbJ29wdGlvbmFsJywgJ3JlcXVpcmVkJ10uaW5jbHVkZXMocG90ZW50aWFsQmxvY2sudGl0bGUpO1xuICAgIHZhciB0aXRsZVJlcXVpcmVkID0gcG90ZW50aWFsQmxvY2sudGl0bGUgJiYgcG90ZW50aWFsQmxvY2sudGl0bGUgPT09ICdyZXF1aXJlZCc7XG4gICAgaWYgKHRpdGxlUmVxdWlyZWQgJiYgIWJsb2NrVGl0bGUpIHJldHVybjtcbiAgICBpZiAoIXRpdGxlQWxsb3dlZCAmJiBibG9ja1RpdGxlKSByZXR1cm47XG4gICAgdmFyIGFkZCA9IGVhdChzdHJpbmdUb0VhdCk7XG4gICAgdmFyIGV4aXQgPSB0aGlzLmVudGVyQmxvY2soKTtcbiAgICB2YXIgY29udGVudHMgPSB7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tCb2R5XCIpLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnY3VzdG9tLWJsb2NrLWJvZHknXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogdGhpcy50b2tlbml6ZUJsb2NrKGNvbnRlbnRTdHJpbmcsIG5vdylcbiAgICB9O1xuICAgIGV4aXQoKTtcbiAgICB2YXIgYmxvY2tDaGlsZHJlbiA9IFtjb250ZW50c107XG5cbiAgICBpZiAodGl0bGVBbGxvd2VkICYmIGJsb2NrVGl0bGUpIHtcbiAgICAgIHZhciB0aXRsZU5vZGUgPSB7XG4gICAgICAgIHR5cGU6IFwiXCIuY29uY2F0KGJsb2NrVHlwZSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIiksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogcG90ZW50aWFsQmxvY2suZGV0YWlscyA/ICdzdW1tYXJ5JyA6ICdkaXYnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdjdXN0b20tYmxvY2staGVhZGluZydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKGJsb2NrVGl0bGUsIG5vdylcbiAgICAgIH07XG4gICAgICBibG9ja0NoaWxkcmVuLnVuc2hpZnQodGl0bGVOb2RlKTtcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NMaXN0ID0gc3BhY2VTZXBhcmF0ZWQucGFyc2UocG90ZW50aWFsQmxvY2suY2xhc3NlcyB8fCAnJyk7XG4gICAgcmV0dXJuIGFkZCh7XG4gICAgICB0eXBlOiBcIlwiLmNvbmNhdChibG9ja1R5cGUsIFwiQ3VzdG9tQmxvY2tcIiksXG4gICAgICBjaGlsZHJlbjogYmxvY2tDaGlsZHJlbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaE5hbWU6IHBvdGVudGlhbEJsb2NrLmRldGFpbHMgPyAnZGV0YWlscycgOiAnZGl2JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6IFsnY3VzdG9tLWJsb2NrJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc0xpc3QpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuY3VzdG9tQmxvY2tzID0gYmxvY2tUb2tlbml6ZXI7XG4gIGJsb2NrTWV0aG9kcy5zcGxpY2UoYmxvY2tNZXRob2RzLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsICdjdXN0b21CbG9ja3MnKTtcbiAgdmFyIENvbXBpbGVyID0gdGhpcy5Db21waWxlcjtcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICB2YXIgdmlzaXRvcnMgPSBDb21waWxlci5wcm90b3R5cGUudmlzaXRvcnM7XG4gICAgaWYgKCF2aXNpdG9ycykgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGF2YWlsYWJsZUJsb2NrcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgY29tcGlsZXIgPSBjb21waWxlckZhY3Rvcnkoa2V5KTtcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja1wiKV0gPSBjb21waWxlci5ibG9jaztcbiAgICAgIHZpc2l0b3JzW1wiXCIuY29uY2F0KGtleSwgXCJDdXN0b21CbG9ja0hlYWRpbmdcIildID0gY29tcGlsZXIuYmxvY2tIZWFkaW5nO1xuICAgICAgdmlzaXRvcnNbXCJcIi5jb25jYXQoa2V5LCBcIkN1c3RvbUJsb2NrQm9keVwiKV0gPSBjb21waWxlci5ibG9ja0JvZHk7XG4gICAgfSk7XG4gIH0gLy8gSW5qZWN0IGludG8gaW50ZXJydXB0IHJ1bGVzXG5cblxuICB2YXIgaW50ZXJydXB0UGFyYWdyYXBoID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRQYXJhZ3JhcGg7XG4gIHZhciBpbnRlcnJ1cHRMaXN0ID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRMaXN0O1xuICB2YXIgaW50ZXJydXB0QmxvY2txdW90ZSA9IFBhcnNlci5wcm90b3R5cGUuaW50ZXJydXB0QmxvY2txdW90ZTtcbiAgaW50ZXJydXB0UGFyYWdyYXBoLnNwbGljZShpbnRlcnJ1cHRQYXJhZ3JhcGguaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdExpc3Quc3BsaWNlKGludGVycnVwdExpc3QuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG4gIGludGVycnVwdEJsb2NrcXVvdGUuc3BsaWNlKGludGVycnVwdEJsb2NrcXVvdGUuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgWydjdXN0b21CbG9ja3MnXSk7XG59OyIsIi8qISBodHRwczovL210aHMuYmUvcHVueWNvZGUgdjEuNC4xIGJ5IEBtYXRoaWFzICovXG5cblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuLyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xuXG4vKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xudmFyIHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vO1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXHgyMC1cXHg3RV0vOyAvLyB1bnByaW50YWJsZSBBU0NJSSBjaGFycyArIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuLyoqIEVycm9yIG1lc3NhZ2VzICovXG52YXIgZXJyb3JzID0ge1xuICAnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuICAnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuICAnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcbiAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgcmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcbiAgdmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG4gICAgLy8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cbiAgICByZXN1bHQgPSBwYXJ0c1swXSArICdAJztcbiAgICBzdHJpbmcgPSBwYXJ0c1sxXTtcbiAgfVxuICAvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG4gIHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcbiAgdmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuICByZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGNvdW50ZXIgPSAwLFxuICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgdmFsdWUsXG4gICAgZXh0cmE7XG4gIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuICAgICAgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG4gICAgICAgIC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xuZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuICByZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICBpZiAodmFsdWUgPiAweEZGRkYpIHtcbiAgICAgIHZhbHVlIC09IDB4MTAwMDA7XG4gICAgICBvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcbiAgICAgIHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcbiAgICB9XG4gICAgb3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSkuam9pbignJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuICBpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSAyMjtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA2NTtcbiAgfVxuICBpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuICAgIHJldHVybiBjb2RlUG9pbnQgLSA5NztcbiAgfVxuICByZXR1cm4gYmFzZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5mdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG59XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgdmFyIGsgPSAwO1xuICBkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuICBkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG4gIGZvciAoIC8qIG5vIGluaXRpYWxpemF0aW9uICovIDsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcbiAgICBkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG4gIH1cbiAgcmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcbiAqIHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuICAvLyBEb24ndCB1c2UgVUNTLTJcbiAgdmFyIG91dHB1dCA9IFtdLFxuICAgIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLFxuICAgIG91dCxcbiAgICBpID0gMCxcbiAgICBuID0gaW5pdGlhbE4sXG4gICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuICAgIGJhc2ljLFxuICAgIGosXG4gICAgaW5kZXgsXG4gICAgb2xkaSxcbiAgICB3LFxuICAgIGssXG4gICAgZGlnaXQsXG4gICAgdCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBiYXNlTWludXNUO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuICAvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuICAvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuICBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG4gIGlmIChiYXNpYyA8IDApIHtcbiAgICBiYXNpYyA9IDA7XG4gIH1cblxuICBmb3IgKGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuICAgIC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcbiAgICAgIGVycm9yKCdub3QtYmFzaWMnKTtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG4gIH1cblxuICAvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG4gIC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cbiAgZm9yIChpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7IC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi8gKSB7XG5cbiAgICAvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG4gICAgLy8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuICAgIC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG4gICAgLy8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcbiAgICAvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuICAgIGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovIDsgayArPSBiYXNlKSB7XG5cbiAgICAgIGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuICAgICAgICBlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuICAgICAgfVxuXG4gICAgICBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuICAgICAgaWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgaSArPSBkaWdpdCAqIHc7XG4gICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuICAgICAgaWYgKGRpZ2l0IDwgdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgaWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuICAgICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICAgIH1cblxuICAgICAgdyAqPSBiYXNlTWludXNUO1xuXG4gICAgfVxuXG4gICAgb3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG4gICAgYmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cbiAgICAvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuICAgIC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG4gICAgaWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgbiArPSBmbG9vcihpIC8gb3V0KTtcbiAgICBpICU9IG91dDtcblxuICAgIC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXRcbiAgICBvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cbiAgfVxuXG4gIHJldHVybiB1Y3MyZW5jb2RlKG91dHB1dCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuICB2YXIgbixcbiAgICBkZWx0YSxcbiAgICBoYW5kbGVkQ1BDb3VudCxcbiAgICBiYXNpY0xlbmd0aCxcbiAgICBiaWFzLFxuICAgIGosXG4gICAgbSxcbiAgICBxLFxuICAgIGssXG4gICAgdCxcbiAgICBjdXJyZW50VmFsdWUsXG4gICAgb3V0cHV0ID0gW10sXG4gICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cbiAgICBpbnB1dExlbmd0aCxcbiAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cbiAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG4gICAgYmFzZU1pbnVzVCxcbiAgICBxTWludXNUO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcbiAgaW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuICAvLyBDYWNoZSB0aGUgbGVuZ3RoXG4gIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gIG4gPSBpbml0aWFsTjtcbiAgZGVsdGEgPSAwO1xuICBiaWFzID0gaW5pdGlhbEJpYXM7XG5cbiAgLy8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50c1xuICBmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cbiAgLy8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG4gIC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuICAvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgb3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcbiAgfVxuXG4gIC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcbiAgd2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcbiAgICAvLyBsYXJnZXIgb25lOlxuICAgIGZvciAobSA9IG1heEludCwgaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG4gICAgICAgIG0gPSBjdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuICAgIC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG4gICAgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG4pIHtcbiAgICAgICAgLy8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcbiAgICAgICAgZm9yIChxID0gZGVsdGEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi8gOyBrICs9IGJhc2UpIHtcbiAgICAgICAgICB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcbiAgICAgICAgICBpZiAocSA8IHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgICAgIG91dHB1dC5wdXNoKFxuICAgICAgICAgICAgc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICArK2hhbmRsZWRDUENvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICsrZGVsdGE7XG4gICAgKytuO1xuXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZykgP1xuICAgICAgZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6XG4gICAgICBzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuICByZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZykgP1xuICAgICAgJ3huLS0nICsgZW5jb2RlKHN0cmluZykgOlxuICAgICAgc3RyaW5nO1xuICB9KTtcbn1cbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcxLjQuMSc7XG4vKipcbiAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG4gKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEB0eXBlIE9iamVjdFxuICovXG5cbmV4cG9ydCB2YXIgdWNzMiA9IHtcbiAgZGVjb2RlOiB1Y3MyZGVjb2RlLFxuICBlbmNvZGU6IHVjczJlbmNvZGVcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHVjczI6IHVjczIsXG4gIHRvQVNDSUk6IHRvQVNDSUksXG4gIHRvVW5pY29kZTogdG9Vbmljb2RlLFxuICBlbmNvZGU6IGVuY29kZSxcbiAgZGVjb2RlOiBkZWNvZGVcbn1cbiIsIlxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcbnZhciBpbml0ZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGluaXQgKCkge1xuICBpbml0ZWQgPSB0cnVlO1xuICB2YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbiAgfVxuXG4gIHJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxuICByZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgaWYgKCFpbml0ZWQpIHtcbiAgICBpbml0KCk7XG4gIH1cbiAgdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcbiAgLy8gaWYgdGhlcmUgYXJlIHR3byBwbGFjZWhvbGRlcnMsIHRoYW4gdGhlIHR3byBjaGFyYWN0ZXJzIGJlZm9yZSBpdFxuICAvLyByZXByZXNlbnQgb25lIGJ5dGVcbiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG4gIC8vIHRoaXMgaXMganVzdCBhIGNoZWFwIGhhY2sgdG8gbm90IGRvIGluZGV4T2YgdHdpY2VcbiAgcGxhY2VIb2xkZXJzID0gYjY0W2xlbiAtIDJdID09PSAnPScgPyAyIDogYjY0W2xlbiAtIDFdID09PSAnPScgPyAxIDogMFxuXG4gIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuICBhcnIgPSBuZXcgQXJyKGxlbiAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuXG5cbiAgdmFyIEwgPSAwXG5cbiAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsOyBpICs9IDQsIGogKz0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfCByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW0wrK10gPSB0bXAgJiAweEZGXG4gIH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG4gICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIGlmICghaW5pdGVkKSB7XG4gICAgaW5pdCgpO1xuICB9XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIlxuZXhwb3J0IGZ1bmN0aW9uIHJlYWQgKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG5cbmltcG9ydCAqIGFzIGJhc2U2NCBmcm9tICcuL2Jhc2U2NCdcbmltcG9ydCAqIGFzIGllZWU3NTQgZnJvbSAnLi9pZWVlNzU0J1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5J1xuXG5leHBvcnQgdmFyIElOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0cnVlXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbnZhciBfa01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuZXhwb3J0IHtfa01heExlbmd0aCBhcyBrTWF4TGVuZ3RofTtcbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgcmV0dXJuIHRydWU7XG4gIC8vIHJvbGx1cCBpc3N1ZXNcbiAgLy8gdHJ5IHtcbiAgLy8gICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgLy8gICBhcnIuX19wcm90b19fID0ge1xuICAvLyAgICAgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSxcbiAgLy8gICAgIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAvLyAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAvLyAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICAvLyB9IGNhdGNoIChlKSB7XG4gIC8vICAgcmV0dXJuIGZhbHNlXG4gIC8vIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAvLyAgIHZhbHVlOiBudWxsLFxuICAgIC8vICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgLy8gfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cbkJ1ZmZlci5pc0J1ZmZlciA9IGlzQnVmZmVyO1xuZnVuY3Rpb24gaW50ZXJuYWxJc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGEpIHx8ICFpbnRlcm5hbElzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIWludGVybmFsSXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKGludGVybmFsSXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gaW50ZXJuYWxJc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuXG4vLyB0aGUgZm9sbG93aW5nIGlzIGZyb20gaXMtYnVmZmVyLCBhbHNvIGJ5IEZlcm9zcyBBYm91a2hhZGlqZWggYW5kIHdpdGggc2FtZSBsaXNlbmNlXG4vLyBUaGUgX2lzQnVmZmVyIGNoZWNrIGlzIGZvciBTYWZhcmkgNS03IHN1cHBvcnQsIGJlY2F1c2UgaXQncyBtaXNzaW5nXG4vLyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLiBSZW1vdmUgdGhpcyBldmVudHVhbGx5XG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoISFvYmouX2lzQnVmZmVyIHx8IGlzRmFzdEJ1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopKVxufVxuXG5mdW5jdGlvbiBpc0Zhc3RCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Zhc3RCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydCBmdW5jdGlvbiBkZXByZWNhdGUoZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z2xvZyhzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSAwO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIF9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIobWF5YmVCdWYpIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihtYXliZUJ1Zik7XG59XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydCBmdW5jdGlvbiBsb2coKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbn1cblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuaW1wb3J0IGluaGVyaXRzIGZyb20gJy4vaW5oZXJpdHMnO1xuZXhwb3J0IHtpbmhlcml0c31cblxuZXhwb3J0IGZ1bmN0aW9uIF9leHRlbmQob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaW5oZXJpdHM6IGluaGVyaXRzLFxuICBfZXh0ZW5kOiBfZXh0ZW5kLFxuICBsb2c6IGxvZyxcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc1ByaW1pdGl2ZTogaXNQcmltaXRpdmUsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzRXJyb3I6IGlzRXJyb3IsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc051bGxPclVuZGVmaW5lZDogaXNOdWxsT3JVbmRlZmluZWQsXG4gIGlzTnVsbDogaXNOdWxsLFxuICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaW5zcGVjdDogaW5zcGVjdCxcbiAgZGVwcmVjYXRlOiBkZXByZWNhdGUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBkZWJ1Z2xvZzogZGVidWdsb2dcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbmZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2KSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB2ID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogJyc7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKG9iaiwgc2VwLCBlcSwgbmFtZSkge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtYXAob2JqZWN0S2V5cyhvYmopLCBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIga3MgPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGspKSArIGVxO1xuICAgICAgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgICByZXR1cm4gbWFwKG9ialtrXSwgZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBlbmNvZGU6IHN0cmluZ2lmeSxcbiAgc3RyaW5naWZ5OiBzdHJpbmdpZnksXG4gIGRlY29kZTogcGFyc2UsXG4gIHBhcnNlOiBwYXJzZVxufVxuZXhwb3J0IHtzdHJpbmdpZnkgYXMgZW5jb2RlLCBwYXJzZSBhcyBkZWNvZGV9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cblxuaW1wb3J0IHt0b0FTQ0lJfSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQge2lzT2JqZWN0LGlzU3RyaW5nLGlzTnVsbE9yVW5kZWZpbmVkLGlzTnVsbH0gZnJvbSAndXRpbCc7XG5pbXBvcnQge3BhcnNlIGFzIHFzUGFyc2Usc3RyaW5naWZ5IGFzIHFzU3RyaW5naWZ5fSBmcm9tICdxdWVyeXN0cmluZyc7XG5leHBvcnQge1xuICB1cmxQYXJzZSBhcyBwYXJzZSxcbiAgdXJsUmVzb2x2ZSBhcyByZXNvbHZlLFxuICB1cmxSZXNvbHZlT2JqZWN0IGFzIHJlc29sdmVPYmplY3QsXG4gIHVybEZvcm1hdCBhcyBmb3JtYXRcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcnNlOiB1cmxQYXJzZSxcbiAgcmVzb2x2ZTogdXJsUmVzb2x2ZSxcbiAgcmVzb2x2ZU9iamVjdDogdXJsUmVzb2x2ZU9iamVjdCxcbiAgZm9ybWF0OiB1cmxGb3JtYXQsXG4gIFVybDogVXJsXG59XG5leHBvcnQgZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAvLyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgLy8gdGhlbS5cbiAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gIGhvc3RFbmRpbmdDaGFycyA9IFsnLycsICc/JywgJyMnXSxcbiAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgfSxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgbmV2ZXIgaGF2ZSBhIGhvc3RuYW1lLlxuICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgJ2h0dHAnOiB0cnVlLFxuICAgICdodHRwcyc6IHRydWUsXG4gICAgJ2Z0cCc6IHRydWUsXG4gICAgJ2dvcGhlcic6IHRydWUsXG4gICAgJ2ZpbGUnOiB0cnVlLFxuICAgICdodHRwOic6IHRydWUsXG4gICAgJ2h0dHBzOic6IHRydWUsXG4gICAgJ2Z0cDonOiB0cnVlLFxuICAgICdnb3BoZXI6JzogdHJ1ZSxcbiAgICAnZmlsZTonOiB0cnVlXG4gIH07XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiBpc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgcmV0dXJuIHBhcnNlKHRoaXMsIHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzZWxmLCB1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlciBcXCd1cmxcXCcgbXVzdCBiZSBhIHN0cmluZywgbm90ICcgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgIHNwbGl0dGVyID1cbiAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgIHVTcGxpdCA9IHVybC5zcGxpdChzcGxpdHRlciksXG4gICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICBzZWxmLnBhdGggPSByZXN0O1xuICAgICAgc2VsZi5ocmVmID0gcmVzdDtcbiAgICAgIHNlbGYucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgc2VsZi5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHNlbGYucXVlcnkgPSBxc1BhcnNlKHNlbGYuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5xdWVyeSA9IHNlbGYuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHNlbGYuc2VhcmNoID0gJyc7XG4gICAgICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICBzZWxmLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgc2VsZi5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFyIGksIGhlYywgbCwgcDtcbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHNlbGYuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgc2VsZi5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgcGFyc2VIb3N0KHNlbGYpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHNlbGYuaG9zdG5hbWUgPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICBzZWxmLmhvc3RuYW1lW3NlbGYuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gc2VsZi5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWxmLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvLyBJRE5BIFN1cHBvcnQ6IFJldHVybnMgYSBwdW55Y29kZWQgcmVwcmVzZW50YXRpb24gb2YgXCJkb21haW5cIi5cbiAgICAgIC8vIEl0IG9ubHkgY29udmVydHMgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHRoYXRcbiAgICAgIC8vIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWZcbiAgICAgIC8vIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCBhbHJlYWR5IGlzIEFTQ0lJLW9ubHkuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gdG9BU0NJSShzZWxmLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICBwID0gc2VsZi5wb3J0ID8gJzonICsgc2VsZi5wb3J0IDogJyc7XG4gICAgdmFyIGggPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuICAgIHNlbGYuaG9zdCA9IGggKyBwO1xuICAgIHNlbGYuaHJlZiArPSBzZWxmLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS5zdWJzdHIoMSwgc2VsZi5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yIChpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgc2VsZi5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICBzZWxmLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICBzZWxmLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgc2VsZi5xdWVyeSA9IHFzUGFyc2Uoc2VsZi5xdWVyeSk7XG4gICAgfVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgLy8gbm8gcXVlcnkgc3RyaW5nLCBidXQgcGFyc2VRdWVyeVN0cmluZyBzdGlsbCByZXF1ZXN0ZWRcbiAgICBzZWxmLnNlYXJjaCA9ICcnO1xuICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgfVxuICBpZiAocmVzdCkgc2VsZi5wYXRobmFtZSA9IHJlc3Q7XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICBzZWxmLmhvc3RuYW1lICYmICFzZWxmLnBhdGhuYW1lKSB7XG4gICAgc2VsZi5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHNlbGYucGF0aG5hbWUgfHwgc2VsZi5zZWFyY2gpIHtcbiAgICBwID0gc2VsZi5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHNlbGYuc2VhcmNoIHx8ICcnO1xuICAgIHNlbGYucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHNlbGYuaHJlZiA9IGZvcm1hdChzZWxmKTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAoaXNTdHJpbmcob2JqKSkgb2JqID0gcGFyc2Uoe30sIG9iaik7XG4gIHJldHVybiBmb3JtYXQob2JqKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KHNlbGYpIHtcbiAgdmFyIGF1dGggPSBzZWxmLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHNlbGYucHJvdG9jb2wgfHwgJycsXG4gICAgcGF0aG5hbWUgPSBzZWxmLnBhdGhuYW1lIHx8ICcnLFxuICAgIGhhc2ggPSBzZWxmLmhhc2ggfHwgJycsXG4gICAgaG9zdCA9IGZhbHNlLFxuICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHNlbGYuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgc2VsZi5ob3N0O1xuICB9IGVsc2UgaWYgKHNlbGYuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArIChzZWxmLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgP1xuICAgICAgc2VsZi5ob3N0bmFtZSA6XG4gICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAoc2VsZi5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHNlbGYucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZi5xdWVyeSAmJlxuICAgIGlzT2JqZWN0KHNlbGYucXVlcnkpICYmXG4gICAgT2JqZWN0LmtleXMoc2VsZi5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxc1N0cmluZ2lmeShzZWxmLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSBzZWxmLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAoc2VsZi5zbGFzaGVzIHx8XG4gICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZvcm1hdCh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmIChpc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSAmJiAhcmVzdWx0LnBhdGhuYW1lKSB7XG4gICAgICByZXN1bHQucGF0aCA9IHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICB9XG5cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciByZWxQYXRoO1xuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICBpc1JlbEFicyA9IChcbiAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgIHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgKSxcbiAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpKSxcbiAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG4gIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdO1xuICAvLyBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gIC8vIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgLy8gdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAvLyByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAvLyBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9ICcnO1xuICAgIHJlc3VsdC5wb3J0ID0gbnVsbDtcbiAgICBpZiAocmVzdWx0Lmhvc3QpIHtcbiAgICAgIGlmIChzcmNQYXRoWzBdID09PSAnJykgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0O1xuICAgICAgZWxzZSBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpO1xuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHJlbFBhdGhbMF0gPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICBlbHNlIHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlLmhvc3QgPSBudWxsO1xuICAgIH1cbiAgICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyAmJiAocmVsUGF0aFswXSA9PT0gJycgfHwgc3JjUGF0aFswXSA9PT0gJycpO1xuICB9XG4gIHZhciBhdXRoSW5Ib3N0O1xuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgLy8gd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnNlYXJjaCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAnLycgKyByZXN1bHQuc2VhcmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBhIHVybCBFTkRzIGluIC4gb3IgLi4sIHRoZW4gaXQgbXVzdCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgLy8gaG93ZXZlciwgaWYgaXQgZW5kcyBpbiBhbnl0aGluZyBlbHNlIG5vbi1zbGFzaHksXG4gIC8vIHRoZW4gaXQgbXVzdCBOT1QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKFxuICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8XG4gICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IHJlcXVlc3QuaHR0cFxuICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwYXJzZUhvc3QodGhpcyk7XG59O1xuXG5mdW5jdGlvbiBwYXJzZUhvc3Qoc2VsZikge1xuICB2YXIgaG9zdCA9IHNlbGYuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHNlbGYucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHNlbGYuaG9zdG5hbWUgPSBob3N0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCd1cmwnKSxcbiAgICBmb3JtYXQgPSBfcmVxdWlyZS5mb3JtYXQsXG4gICAgcGFyc2UgPSBfcmVxdWlyZS5wYXJzZSxcbiAgICBVUkxTZWFyY2hQYXJhbXMgPSBfcmVxdWlyZS5VUkxTZWFyY2hQYXJhbXM7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGx1Z2luKG9wdHMpIHtcbiAgaWYgKF90eXBlb2Yob3B0cykgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhvcHRzKS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1pZnJhbWVzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIodXJsKSB7XG4gICAgdmFyIGhvc3RuYW1lID0gcGFyc2UodXJsKS5ob3N0bmFtZTtcbiAgICByZXR1cm4gb3B0c1tob3N0bmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJyEoaHR0cCcpKSByZXR1cm47XG4gICAgdmFyIGVhdGVuVmFsdWUgPSAnJztcbiAgICB2YXIgdXJsID0gJyc7XG4gICAgdmFyIHNwZWNpYWxDaGFycyA9IFsnIScsICcoJywgJyknXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgLSAxXSAhPT0gJyknOyBpKyspIHtcbiAgICAgIGVhdGVuVmFsdWUgKz0gdmFsdWVbaV07XG5cbiAgICAgIGlmICghc3BlY2lhbENoYXJzLmluY2x1ZGVzKHZhbHVlW2ldKSkge1xuICAgICAgICB1cmwgKz0gdmFsdWVbaV07XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cblxuXG4gICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgdmFyIHByb3ZpZGVyID0gZGV0ZWN0UHJvdmlkZXIodXJsKTtcblxuICAgIGlmICghcHJvdmlkZXIgfHwgcHJvdmlkZXIuZGlzYWJsZWQgPT09IHRydWUgfHwgcHJvdmlkZXIubWF0Y2ggJiYgcHJvdmlkZXIubWF0Y2ggaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXByb3ZpZGVyLm1hdGNoLnRlc3QodXJsKSkge1xuICAgICAgcmV0dXJuIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IGVhdGVuVmFsdWVcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaW5hbFVybCA9IGNvbXB1dGVGaW5hbFVybChwcm92aWRlciwgdXJsKTtcbiAgICB2YXIgdGh1bWJuYWlsID0gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgZmluYWxVcmwpO1xuICAgIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICB0eXBlOiAnaWZyYW1lJyxcbiAgICAgIHNyYzogdXJsLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogcHJvdmlkZXIudGFnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIHNyYzogZmluYWxVcmwsXG4gICAgICAgICAgd2lkdGg6IHByb3ZpZGVyLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcHJvdmlkZXIuaGVpZ2h0LFxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBmcmFtZWJvcmRlcjogJzAnXG4gICAgICAgIH0sXG4gICAgICAgIHRodW1ibmFpbDogdGh1bWJuYWlsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuaWZyYW1lcyA9IGJsb2NrVG9rZW5pemVyO1xuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdibG9ja3F1b3RlJykgKyAxLCAwLCAnaWZyYW1lcycpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICBpZiAoIXZpc2l0b3JzKSByZXR1cm47XG5cbiAgICB2aXNpdG9ycy5pZnJhbWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiIShcIi5jb25jYXQobm9kZS5zcmMsIFwiKVwiKTtcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb21wdXRlRmluYWxVcmwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgZmluYWxVcmwgPSB1cmw7XG4gIHZhciBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG5cbiAgaWYgKHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMgJiYgcGFyc2VkLnNlYXJjaCkge1xuICAgIHZhciBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcnNlZC5zZWFyY2gpO1xuICAgIHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaWdub3JlZCkge1xuICAgICAgcmV0dXJuIHNlYXJjaFtcImRlbGV0ZVwiXShpZ25vcmVkKTtcbiAgICB9KTtcbiAgICBwYXJzZWQuc2VhcmNoID0gc2VhcmNoLnRvU3RyaW5nKCk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZXBsYWNlICYmIHByb3ZpZGVyLnJlcGxhY2UubGVuZ3RoKSB7XG4gICAgcHJvdmlkZXIucmVwbGFjZS5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICB2YXIgX3J1bGUgPSBfc2xpY2VkVG9BcnJheShydWxlLCAyKSxcbiAgICAgICAgICBmcm9tID0gX3J1bGVbMF0sXG4gICAgICAgICAgdG8gPSBfcnVsZVsxXTtcblxuICAgICAgaWYgKGZyb20gJiYgdG8pIGZpbmFsVXJsID0gZmluYWxVcmwucmVwbGFjZShmcm9tLCB0byk7XG4gICAgICBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG4gICAgfSk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZW1vdmVGaWxlTmFtZSkge1xuICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZS5zdWJzdHJpbmcoMCwgcGFyc2VkLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVtb3ZlQWZ0ZXIgJiYgZmluYWxVcmwuaW5jbHVkZXMocHJvdmlkZXIucmVtb3ZlQWZ0ZXIpKSB7XG4gICAgZmluYWxVcmwgPSBmaW5hbFVybC5zdWJzdHJpbmcoMCwgZmluYWxVcmwuaW5kZXhPZihwcm92aWRlci5yZW1vdmVBZnRlcikpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyLmFwcGVuZCkge1xuICAgIGZpbmFsVXJsICs9IHByb3ZpZGVyLmFwcGVuZDtcbiAgfVxuXG4gIHJldHVybiBmaW5hbFVybDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgdXJsKSB7XG4gIHZhciB0aHVtYm5haWxVUkwgPSAnJztcbiAgdmFyIHRodW1ibmFpbENvbmZpZyA9IHByb3ZpZGVyLnRodW1ibmFpbDtcblxuICBpZiAodGh1bWJuYWlsQ29uZmlnICYmIHRodW1ibmFpbENvbmZpZy5mb3JtYXQpIHtcbiAgICB0aHVtYm5haWxVUkwgPSB0aHVtYm5haWxDb25maWcuZm9ybWF0O1xuICAgIE9iamVjdC5rZXlzKHRodW1ibmFpbENvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXkgIT09ICdmb3JtYXQnO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHNlYXJjaCA9IG5ldyBSZWdFeHAoXCJ7XCIuY29uY2F0KGtleSwgXCJ9XCIpLCAnZycpO1xuICAgICAgdmFyIHJlcGxhY2UgPSBuZXcgUmVnRXhwKHRodW1ibmFpbENvbmZpZ1trZXldKS5leGVjKHVybCk7XG4gICAgICBpZiAocmVwbGFjZSkgdGh1bWJuYWlsVVJMID0gdGh1bWJuYWlsVVJMLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlWzFdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aHVtYm5haWxVUkw7XG59IiwiJ3VzZS1zdHJpY3QnO1xuXG4vKiBUT0RPIDogU2VuZCB0aGUgcmVzdWx0IG9mIGd1aWRlIDpcbiAgY29uc3QgZ3VpZGUgPSByZXF1aXJlKCdyZW1hcmstcHJlc2V0LWxpbnQtbWFya2Rvd24tc3R5bGUtZ3VpZGUnKTtcbiovXG5cbmNvbnN0IGh0bWwgPSByZXF1aXJlKCdyZW1hcmstcmVoeXBlJyk7XG5jb25zdCBrYmQgPSByZXF1aXJlKCdyZW1hcmsta2JkJyk7XG5jb25zdCBtYXRoID0gcmVxdWlyZSgncmVtYXJrLW1hdGgnKTtcbmNvbnN0IGhpZ2hsaWdodCA9IHJlcXVpcmUoJ3JlbWFyay1oaWdobGlnaHQuanMnKTtcbmNvbnN0IG11bHRpQ2hvaWNlID0gcmVxdWlyZSgncmVtYXJrLW11bHRpcGxlLWNob2ljZScpO1xuY29uc3QgbGluZUlucHV0ID0gcmVxdWlyZSgncmVtYXJrLWxpbmUtaW5wdXQnKTtcbmNvbnN0IHNlbGVjdCA9IHJlcXVpcmUoJ3JlbWFyay1zZWxlY3QnKTtcbmNvbnN0IHRleHRJbnB1dCA9IHJlcXVpcmUoJ3JlbWFyay10ZXh0LWlucHV0Jyk7XG5jb25zdCByYXcgPSByZXF1aXJlKCdyZWh5cGUtcmF3Jyk7XG5jb25zdCByZWh5cGVLYXRleCA9IHJlcXVpcmUoJ3JlaHlwZS1rYXRleCcpO1xuY29uc3QgcmVoeXBlU3RyaW5naWZ5ID0gcmVxdWlyZSgncmVoeXBlLXN0cmluZ2lmeScpO1xuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKTtcbmNvbnN0IHJlbWFyayA9IHJlcXVpcmUoJ3JlbWFyay1wYXJzZScpO1xuY29uc3QgY3VzdG9tQmxvY2tzID0gcmVxdWlyZSgncmVtYXJrLWN1c3RvbS1ibG9ja3MnKTtcbmNvbnN0IGlmcmFtZXMgPSByZXF1aXJlKCdyZW1hcmstaWZyYW1lcycpO1xuXG5mdW5jdGlvbiB0b0hUTUwoZGF0YSwgZm5jKSB7XG4gIHVuaWZpZWQoKVxuICAgIC51c2UocmVtYXJrKVxuICAgIC51c2UobGluZUlucHV0KVxuICAgIC51c2UodGV4dElucHV0KVxuICAgIC51c2Uoc2VsZWN0KVxuICAgIC51c2UobXVsdGlDaG9pY2UpXG4gICAgLnVzZShtYXRoKVxuICAgIC51c2Uoa2JkKVxuICAgIC51c2UoY3VzdG9tQmxvY2tzLCB7XG4gICAgICBpbmZvcm1hdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggaW5mb3JtYXRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBjb21tZW50JyxcbiAgICAgICAgdGl0bGU6ICdvcHRpb25hbCcsXG4gICAgICB9LFxuICAgICAgYXR0ZW50aW9uOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBhdHRlbnRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBxdWVzdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggcXVlc3Rpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBnb29kOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBnb29kJyxcbiAgICAgIH0sXG4gICAgICBzZWNyZXQ6IHtcbiAgICAgICAgY2xhc3NlczogJ3NwZWNpYWwtYm94IHNlY3JldCcsXG4gICAgICAgIHRpdGxlOiAnb3B0aW9uYWwnLFxuICAgICAgfSxcbiAgICAgIGJhZDoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggYmFkJyxcbiAgICAgIH19KVxuICAgIC51c2UoaGlnaGxpZ2h0KVxuICAgIC51c2UoaWZyYW1lcywge1xuICAgICAgLy8gVGhpcyBrZXkgY29ycmVzcG9uZHMgdG8gdGhlIGhvc3RuYW1lOiAhKGh0dHA6Ly9ob3N0bmFtZS9mb28pXG4gICAgICAvLyB0aGUgY29uZmlnIGFzc29jaWF0ZWQgdG8gdGhpcyBob3N0bmFtZSB3aWxsIGFwcGx5IHRvIGFueSBpZnJhbWVcbiAgICAgIC8vIHdpdGggYSBtYXRjaGluZyBob3N0bmFtZVxuICAgICAgJ3d3dy55b3V0dWJlLmNvbSc6IHtcbiAgICAgICAgdGFnOiAnSUZSQU1FJyxcbiAgICAgICAgd2lkdGg6IDU2MCxcbiAgICAgICAgaGVpZ2h0OiAzMTUsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcmVwbGFjZTogW1xuICAgICAgICAgIFsnd2F0Y2g/dj0nLCAnZW1iZWQvJ10sXG4gICAgICAgICAgWydodHRwOi8vJywgJ2h0dHBzOi8vJ10sXG4gICAgICAgIF0sXG4gICAgICAgIHRodW1ibmFpbDoge1xuICAgICAgICAgIGZvcm1hdDogJ2h0dHA6Ly9pbWcueW91dHViZS5jb20vdmkve2lkfS8wLmpwZycsXG4gICAgICAgICAgaWQ6ICcuKy8oLispJCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlQWZ0ZXI6ICcmJ1xuICAgICAgfVxuICAgIH0pXG4gICAgLnVzZShodG1sLCB7YWxsb3dEYW5nZXJvdXNIVE1MOiB0cnVlfSlcbiAgICAudXNlKHJlaHlwZUthdGV4KVxuICAgIC51c2UocmF3KVxuICAgIC51c2UocmVoeXBlU3RyaW5naWZ5KVxuXG4gICAgLnByb2Nlc3MoZGF0YSwgZm5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0hUTUw7XG4iXSwibmFtZXMiOlsidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsInByb3RvdHlwZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImFzc2lnbiIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJzaG91bGRVc2VOYXRpdmUiLCJmcm9tIiwic3ltYm9scyIsInRvIiwidmFsIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwidG9PYmplY3QiLCJzIiwidHlwZSIsInByb3BzIiwidmFsdWUiLCJub2RlIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW4iLCJjb252ZXJ0IiwidGVzdCIsIkJvb2xlYW4iLCJ0eXBlRmFjdG9yeSIsIm9rIiwidGVzdHMiLCJjaGVja3MiLCJyZXN1bHRzIiwiaW5kZXgiLCJjb252ZXJ0QWxsIiwiYXBwbHkiLCJ0aGlzIiwiRXJyb3IiLCJ2aXNpdFBhcmVudHMiLCJDT05USU5VRSIsIlNLSVAiLCJFWElUIiwidHJlZSIsInZpc2l0b3IiLCJyZXZlcnNlIiwiaXMiLCJvbmUiLCJwYXJlbnRzIiwic3VicmVzdWx0IiwicmVzdWx0IiwidG9SZXN1bHQiLCJzdGVwIiwiYWxsIiwiY29uY2F0IiwidmlzaXQiLCJwYXJlbnQiLCJpbmRleE9mIiwicG9zaXRpb24iLCJleHBvcnRzIiwiZmFjdG9yeSIsInBvaW50IiwiZGlzcGxheU5hbWUiLCJsaW5lIiwiY29sdW1uIiwib2Zmc2V0IiwiaXNOYU4iLCJzdGFydCIsImVuZCIsIm9wdGlvbmFsIiwib3B0aW9ucyIsImNhY2hlIiwiaWRlbnRpZmllciIsImlkIiwibm9ybWFsaXNlIiwib3duIiwiZ2V0dGVyRmFjdG9yeSIsImNvbW1vbm1hcmsiLCJkZWZpbml0aW9uIiwiZ2F0aGVyIiwidG9VcHBlckNhc2UiLCJtb2R1bGUiLCJzdHIiLCJyZXBsYWNlIiwiaCIsImhlYWQiLCJub2RlcyIsInZhbHVlcyIsInRyaW0iLCJsZWZ0IiwiZm4iLCJoYW5kbGVycyIsImRhdGEiLCJ0ZXh0IiwiYXVnbWVudCIsInUiLCJsb29zZSIsInB1c2giLCJpdGVtcyIsIm5hbWUiLCJvcmRlcmVkIiwicHJvcGVydGllcyIsImNsYXNzTmFtZSIsIndyYXAiLCJkZWYiLCJiYWNrUmVmZXJlbmNlIiwiY29udGVudCIsInRhaWwiLCJmb290bm90ZUJ5SWQiLCJmb290bm90ZU9yZGVyIiwibGlzdEl0ZW1zIiwidXJsIiwiaFByb3BlcnRpZXMiLCJ0aGVtYXRpY0JyZWFrIiwibGlzdCIsInJlcyIsIm51bSIsIm1heCIsInN1YnN0ciIsInNpemUiLCJjb2RlIiwiYWRkIiwic3RyaW5nIiwidGFiU2l6ZSIsImNoYXJDb2RlQXQiLCJ0YWIiLCJzbGljZSIsInJlcGVhdCIsImxpbmVGZWVkIiwiY2FycmlhZ2VSZXR1cm4iLCJkZXRhYiIsImxhbmciLCJtYXRjaCIsImhyZWYiLCJsYWJlbCIsImZvb3Rub3RlUmVmZXJlbmNlIiwiZGVwdGgiLCJkYW5nZXJvdXMiLCJlbmNvZGVDYWNoZSIsImVuY29kZSIsImV4Y2x1ZGUiLCJrZWVwRXNjYXBlZCIsImwiLCJuZXh0Q29kZSIsImRlZmF1bHRDaGFycyIsImNoIiwidG9TdHJpbmciLCJnZXRFbmNvZGVDYWNoZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvbXBvbmVudENoYXJzIiwiY29udGVudHMiLCJzdWJ0eXBlIiwicmVmZXJlbmNlVHlwZSIsInN1ZmZpeCIsImFsdCIsInVuc2hpZnQiLCJsaXN0SXRlbUxvb3NlIiwic3ByZWFkIiwid3MiLCJuZXdsaW5lIiwiYmxvY2txdW90ZSIsInJlcXVpcmUkJDAiLCJicmVhayIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwiZGVsZXRlIiwicmVxdWlyZSQkMyIsImVtcGhhc2lzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJmb290bm90ZSIsInJlcXVpcmUkJDYiLCJoZWFkaW5nIiwicmVxdWlyZSQkNyIsImh0bWwiLCJyZXF1aXJlJCQ4IiwiaW1hZ2VSZWZlcmVuY2UiLCJyZXZlcnQiLCJzcmMiLCJub3JtYWxpemUiLCJ0aXRsZSIsImltYWdlIiwiaW5saW5lQ29kZSIsImNvbGxhcHNlIiwibGlua1JlZmVyZW5jZSIsImxpbmsiLCJsaXN0SXRlbSIsImNvbnRhaW5lciIsImNoaWxkIiwicmF3IiwibGlzdExvb3NlIiwidGFnTmFtZSIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInJlcXVpcmUkJDE1IiwicGFyYWdyYXBoIiwicm9vdCIsInN0cm9uZyIsInRhYmxlIiwicG9zIiwicm93Iiwib3V0IiwiY2VsbCIsInJvd3MiLCJhbGlnbiIsImFsaWduTGVuZ3RoIiwidHJpbUxpbmVzIiwicmVxdWlyZSQkMjEiLCJ0b21sIiwiaWdub3JlIiwieWFtbCIsImZvb3Rub3RlRGVmaW5pdGlvbiIsInNldHRpbmdzIiwiYWxsb3dEYW5nZXJvdXNIVE1MIiwiZGVmaW5pdGlvbnMiLCJ4dGVuZCIsInJpZ2h0IiwiY3R4IiwiaE5hbWUiLCJoQ2hpbGRyZW4iLCJnZW5lcmF0ZWQiLCJmb290IiwiZm9vdGVyIiwiZGVzdGluYXRpb24iLCJwcm9jZXNzIiwiZmlsZSIsIm5leHQiLCJydW4iLCJtZGFzdDJoYXN0IiwiYnJpZGdlIiwibXV0YXRlIiwiY2hhcmFjdGVyIiwicmUiLCJmcm9tQ29kZSIsImNoYXJBdCIsIkNfUElQRSIsIkRPVUJMRSIsImxvY2F0b3IiLCJmcm9tSW5kZXgiLCJpbmxpbmVUb2tlbml6ZXIiLCJlYXQiLCJzaWxlbnQiLCJnZm0iLCJ3aGl0ZXNwYWNlIiwicHJldmlvdXMiLCJwcmVjZWRpbmciLCJzdWJ2YWx1ZSIsIm5vdyIsInRva2VuaXplSW5saW5lIiwiUGFyc2VyIiwiaW5saW5lVG9rZW5pemVycyIsImlubGluZU1ldGhvZHMiLCJrYmQiLCJzcGxpY2UiLCJDb21waWxlciIsInZpc2l0b3JzIiwicGFyc2VyIiwiYmxvY2tUb2tlbml6ZXJzIiwiY29tcGlsZXIiLCJ1dGlsIiwiaXNSZW1hcmtQYXJzZXIiLCJwcm90byIsIm1hdGhJbmxpbmVUb2tlbml6ZXIiLCJwcmV2IiwiY29udGVudFN0YXJ0IiwiY29udGVudEVuZCIsInZhbHVlRW5kIiwiZG91YmxlIiwiZXNjYXBlZCIsImJhY2tzbGFzaCIsImRvbGxhclNpZ24iLCJzcGFjZSIsImRpZ2l0MCIsImRpZ2l0OSIsImNsYXNzTGlzdCIsImlubGluZU1hdGhEb3VibGUiLCJtYXRoRGlzcGxheSIsIm1hdGgiLCJhdHRhY2hQYXJzZXIiLCJpc1JlbWFya0NvbXBpbGVyIiwiaW5saW5lTWF0aCIsImZlbmNlIiwiaW5jbHVkZXMiLCJhdHRhY2hDb21waWxlciIsImJsb2NrTWV0aG9kcyIsImludGVycnVwdFBhcmFncmFwaCIsImludGVycnVwdExpc3QiLCJpbnRlcnJ1cHRCbG9ja3F1b3RlIiwibGluZUVuZCIsImxpbmVJbmRleCIsIm9wZW5pbmdGZW5jZUluZGVudFNpemUiLCJvcGVuaW5nRmVuY2VTaXplIiwib3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0IiwiY2xvc2luZ0ZlbmNlIiwiY2xvc2luZ0ZlbmNlU2l6ZSIsImxpbmVDb250ZW50U3RhcnQiLCJsaW5lQ29udGVudEVuZCIsIm1pbkZlbmNlQ291bnQiLCJsaW5lRmVlZENoYXIiLCJkb2xsYXJTaWduQ2hhciIsIm9wdHMiLCJibG9ja1BsdWdpbiIsImlubGluZVBsdWdpbiIsImdsb2JhbE9iamVjdCIsImhsanMiLCJBUElfUkVQTEFDRVMiLCJBcnJheVByb3RvIiwib2JqZWN0S2V5cyIsImxhbmd1YWdlcyIsImFsaWFzZXMiLCJub0hpZ2hsaWdodFJlIiwibGFuZ3VhZ2VQcmVmaXhSZSIsImZpeE1hcmt1cFJlIiwic3BhbkVuZFRhZyIsImNsYXNzUHJlZml4IiwidGFiUmVwbGFjZSIsInVzZUJSIiwiQ09NTU9OX0tFWVdPUkRTIiwiZXNjYXBlIiwidGFnIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzTm90SGlnaGxpZ2h0ZWQiLCJsYW5ndWFnZSIsImluaGVyaXQiLCJvYmplY3RzIiwib2JqIiwibm9kZVN0cmVhbSIsIl9ub2RlU3RyZWFtIiwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwibm9kZVR5cGUiLCJub2RlVmFsdWUiLCJldmVudCIsImV4cGFuZF9vcl9jbG9uZV9tb2RlIiwibW9kZSIsInZhcmlhbnRzIiwiY2FjaGVkX3ZhcmlhbnRzIiwidmFyaWFudCIsImRlcGVuZGVuY3lPblBhcmVudCIsImVuZHNXaXRoUGFyZW50Iiwic3RhcnRzIiwicmVzdG9yZUxhbmd1YWdlQXBpIiwibGFuZ0FwaVJlc3RvcmVkIiwiY29udGFpbnMiLCJjb21waWxlS2V5d29yZHMiLCJyYXdLZXl3b3JkcyIsImNhc2VfaW5zZW5zaXRpdmUiLCJjb21waWxlZF9rZXl3b3JkcyIsInNwbGl0QW5kQ29tcGlsZSIsImtleXdvcmQiLCJwYWlyIiwicHJvdmlkZWRTY29yZSIsIk51bWJlciIsIndvcmQiLCJzY29yZUZvcktleXdvcmQiLCJjb21waWxlTGFuZ3VhZ2UiLCJyZVN0ciIsImxhbmdSZSIsImdsb2JhbCIsIlJlZ0V4cCIsImJ1aWxkTW9kZVJlZ2V4IiwibWF0Y2hlclJlIiwidGVybSIsIm1hdGNoSW5kZXhlcyIsInJlZ2V4ZXMiLCJtYXRjaGVyIiwibWF0Y2hBdCIsImFkZFJ1bGUiLCJydWxlIiwicmVnZXgiLCJleGVjIiwiYmVnaW5LZXl3b3JkcyIsImJlZ2luIiwidGVybWluYXRvcl9lbmQiLCJpbGxlZ2FsIiwidGVybWluYXRvcnMiLCJlbCIsInJlZ2V4cHMiLCJzZXBhcmF0b3IiLCJiYWNrcmVmZXJlbmNlUmUiLCJudW1DYXB0dXJlcyIsInJldCIsInN1YnN0cmluZyIsImpvaW5SZSIsImxhc3RJbmRleCIsImV4dHJhIiwiY29tcGlsZU1vZGUiLCJjb21waWxlZCIsImtleXdvcmRzIiwibGV4ZW1lc1JlIiwibGV4ZW1lcyIsImJlZ2luUmUiLCJlbmRTYW1lQXNCZWdpbiIsImVuZFJlIiwiaWxsZWdhbFJlIiwicmVsZXZhbmNlIiwiYyIsImhpZ2hsaWdodCIsImlnbm9yZV9pbGxlZ2FscyIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRNYXRjaCIsIm1hdGNoX3N0ciIsImJ1aWxkU3BhbiIsImNsYXNzbmFtZSIsImluc2lkZVNwYW4iLCJsZWF2ZU9wZW4iLCJub1ByZWZpeCIsIm9wZW5TcGFuIiwicHJvY2Vzc0J1ZmZlciIsInRvcCIsInN1Ykxhbmd1YWdlIiwiZXhwbGljaXQiLCJtb2RlX2J1ZmZlciIsImNvbnRpbnVhdGlvbnMiLCJoaWdobGlnaHRBdXRvIiwicHJvY2Vzc1N1Ykxhbmd1YWdlIiwia2V5d29yZF9tYXRjaCIsImxhc3RfaW5kZXgiLCJwcm9jZXNzS2V5d29yZHMiLCJzdGFydE5ld01vZGUiLCJjcmVhdGUiLCJkb0JlZ2luTWF0Y2giLCJsZXhlbWUiLCJuZXdfbW9kZSIsInNraXAiLCJleGNsdWRlQmVnaW4iLCJyZXR1cm5CZWdpbiIsImRvRW5kTWF0Y2giLCJlbmRfbW9kZSIsImVuZE9mTW9kZSIsInRlc3RSZSIsImVuZHNQYXJlbnQiLCJvcmlnaW4iLCJyZXR1cm5FbmQiLCJleGNsdWRlRW5kIiwibGFzdE1hdGNoIiwicHJvY2Vzc0xleGVtZSIsInRleHRfYmVmb3JlX21hdGNoIiwicHJvY2Vzc2VkIiwiZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50IiwiY291bnQiLCJlIiwibWVzc2FnZSIsImxhbmd1YWdlU3Vic2V0Iiwic2Vjb25kX2Jlc3QiLCJmaWx0ZXIiLCJhdXRvRGV0ZWN0aW9uIiwiZml4TWFya3VwIiwicDEiLCJoaWdobGlnaHRCbG9jayIsImJsb2NrIiwib3JpZ2luYWxTdHJlYW0iLCJyZXN1bHROb2RlIiwiX2NsYXNzIiwiY2xhc3NlcyIsInBhcmVudE5vZGUiLCJibG9ja0xhbmd1YWdlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsIm9yaWdpbmFsIiwiaGlnaGxpZ2h0ZWQiLCJub2RlU3RhY2siLCJzZWxlY3RTdHJlYW0iLCJvcGVuIiwiYXR0cmlidXRlcyIsImEiLCJjbG9zZSIsInJlbmRlciIsInN0cmVhbSIsInBvcCIsIm1lcmdlU3RyZWFtcyIsInByZXZDbGFzc05hbWUiLCJjdXJyZW50TGFuZyIsInJlc3VsdExhbmciLCJidWlsZENsYXNzTmFtZSIsImluaXRIaWdobGlnaHRpbmciLCJjYWxsZWQiLCJibG9ja3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZGlzYWJsZUF1dG9kZXRlY3QiLCJjb25maWd1cmUiLCJ1c2VyX29wdGlvbnMiLCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlZ2lzdGVyTGFuZ3VhZ2UiLCJyYXdEZWZpbml0aW9uIiwiYmluZCIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsIklERU5UX1JFIiwiVU5ERVJTQ09SRV9JREVOVF9SRSIsIk5VTUJFUl9SRSIsIkNfTlVNQkVSX1JFIiwiQklOQVJZX05VTUJFUl9SRSIsIlJFX1NUQVJURVJTX1JFIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJpbmhlcml0cyIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiQ1NTX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwid2luZG93Iiwic2VsZiIsIm5hbWVzcGFjZSIsImZvcm1hdCIsImZtdCIsImFyZyIsInRtcCIsInByZWNpc2lvbiIsImFyZ0luZGV4IiwiYXJncyIsImxlYWRpbmdaZXJvIiwibmV4dEFyZyIsInNsdXJwTnVtYmVyIiwiZGlnaXRzIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2c3ByaW50ZiIsInJlcGxhY2VtZW50cyIsImNvbnNvbGUiLCJsb2ciLCJwcmludGYiLCJmYXVsdCIsIkVDb25zdHJ1Y3RvciIsIkZvcm1hdHRlZEVycm9yIiwiZm9ybWF0dGVyIiwiSGlnaCIsImV2YWwiLCJFdmFsRXJyb3IiLCJyYW5nZSIsIlJhbmdlRXJyb3IiLCJyZWZlcmVuY2UiLCJSZWZlcmVuY2VFcnJvciIsInN5bnRheCIsIlN5bnRheEVycm9yIiwidXJpIiwiVVJJRXJyb3IiLCJoaWdoIiwibG93IiwicHJlZml4IiwiZGVmYXVsdFByZWZpeCIsImNvcmVIaWdobGlnaHQiLCJhdXRvSGlnaGxpZ2h0IiwibGFuZ3VhZ2VOYW1lcyIsInJlZ2lzdGVyQWxpYXMiLCJrZXlJbnNlbnNpdGl2ZSIsImtleUNhY2hlZFZhcmlhbnRzIiwia2V5VGVybWluYXRvckVuZCIsInZlcnRpY2FsQmFyIiwicGFyZW5PcGVuIiwicGFyZW5DbG9zZSIsImNvbW1vbktleXdvcmRzIiwic2Vjb25kQmVzdCIsInN1YnNldCIsImN1cnJlbnRDaGlsZHJlbiIsInN0YWNrIiwibW9kZUJ1ZmZlciIsImNhc2VJbnNlbnNpdGl2ZSIsImZsYXR0ZW4iLCJjb250YWluZWQiLCJleHBhbmRPckNsb25lTW9kZSIsImNvbXBpbGVDb250YWlucyIsImV4cHJlc3Npb24iLCJpbmRpY2VzIiwiY2FwdHVyZXMiLCJlcnJvciIsImFkZFRleHQiLCJuZXdNb2RlIiwiYWRkU2libGluZ3MiLCJtYXRjaFBsdXNSZW1haW5kZXIiLCJlbmRNb2RlIiwidGV4dEJlZm9yZU1hdGNoIiwiYnVpbGQiLCJidWlsZFRleHQiLCJzdWJtYXRjaCIsInNpYmxpbmdzIiwic2libGluZyIsImF0dGFjaGVyIiwiaW5jbHVkZSIsImFzdCIsIktFWVdPUkQiLCJ2N19rZXl3b3JkcyIsIkxJVEVSQUwiLCJOVU1CRVJTIiwiU1RSSU5HUyIsIkRBVEUiLCJDT01NRU5UUyIsImJ1aWx0X2luIiwidjdfc3lzdGVtX2NvbnN0YW50cyIsImNsYXNzIiwidjhfc3lzdGVtX3NldHNfb2ZfdmFsdWVzIiwidjhfc2hhcmVkX29iamVjdCIsImxpdGVyYWwiLCJtZXRhLWtleXdvcmQiLCJ2N19tZXRhX2tleXdvcmRzIiwiY29tbWVudE1vZGUiLCJydWxlRGVjbGFyYXRpb25Nb2RlIiwiSFRUUF9WRVJCUyIsIkFTM19SRVNUX0FSR19NT0RFIiwiSURfUkVHRVgiLCJWQVJfREVDTFMiLCJidWlsdEluVHlwZU1vZGUiLCJvYmplY3RIYW5kbGVNb2RlIiwiZ2VuZXJpY01vZGUiLCJOVU1CRVIiLCJub21hcmt1cCIsIlNUUklORyIsIlBBUkFNUyIsIkNPTU1FTlRfTU9ERV8xIiwiS0VZV09SRFMiLCJTVUJTVCIsIlRFTVBMQVRFX1NUUklORyIsIlBBUkFNU19DT05UQUlOUyIsIkNQUF9QUklNSVRJVkVfVFlQRVMiLCJQUkVQUk9DRVNTT1IiLCJGVU5DVElPTl9USVRMRSIsIkNQUF9LRVlXT1JEUyIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJwcmVwcm9jZXNzb3IiLCJzdHJpbmdzIiwiQVJEVUlOT19LVyIsIkFSRFVJTk8iLCJrd3MiLCJtZXRhIiwiVEFHX0lOVEVSTkFMUyIsIkJBQ0tUSUNLX0VTQ0FQRSIsIlZBUklBQkxFIiwiVkFSIiwiUVVPVEVfU1RSSU5HIiwiXyIsIkNPTU1FTlRfTU9ERVMiLCJDSEFSX1NUUklORyIsIlBST0NFRFVSRSIsIk9CSkVDVCIsIkVYUFJFU1NJT05TIiwiU1lNQk9MX1JFIiwiU1lNQk9MIiwiQ09MTEVDVElPTiIsIkhJTlQiLCJISU5UX0NPTCIsIktFWSIsIkxJU1QiLCJCT0RZIiwiTkFNRSIsImJ1aWx0aW4tbmFtZSIsIkRFRkFVTFRfQ09OVEFJTlMiLCJKU19JREVOVF9SRSIsIlRJVExFIiwiQ09NTUFORFMiLCJJTlRfU1VGRklYIiwiQ1JZU1RBTF9NRVRIT0RfUkUiLCJDUllTVEFMX1BBVEhfUkUiLCJDUllTVEFMX0tFWVdPUkRTIiwiRVhQQU5TSU9OIiwicmVjdXJzaXZlUGFyZW4iLCJRX1NUUklORyIsIlJFR0VYUCIsIkNSWVNUQUxfREVGQVVMVF9DT05UQUlOUyIsIlZFUkJBVElNX1NUUklORyIsIlZFUkJBVElNX1NUUklOR19OT19MRiIsIlNVQlNUX05PX0xGIiwiSU5URVJQT0xBVEVEX1NUUklORyIsIklOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkciLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGIiwiVFlQRV9JREVOVF9SRSIsIlJVTEUiLCJpbnRlZ2VyX3JlIiwiZXNjYXBlX3NlcXVlbmNlX3JlIiwiRF9JTlRFR0VSX01PREUiLCJEX0ZMT0FUX01PREUiLCJEX0NIQVJBQ1RFUl9NT0RFIiwiRF9TVFJJTkdfTU9ERSIsIkRfTkVTVElOR19DT01NRU5UX01PREUiLCJCUkFDRURfU1VCU1QiLCJESVJFQ1RJVkUiLCJDTEFTUyIsIkZVTkNUSU9OIiwiRklMVEVSIiwiRFRTX1JFRkVSRU5DRSIsIkRUU19LRVlXT1JEIiwiRFRTX0xBQkVMIiwiRFRTX0NFTExfUFJPUEVSVFkiLCJEVFNfTk9ERSIsIkVMSVhJUl9JREVOVF9SRSIsIkVMSVhJUl9LRVlXT1JEUyIsIkVMSVhJUl9ERUZBVUxUX0NPTlRBSU5TIiwiQ09OU1RSVUNUT1IiLCJSVUJZX01FVEhPRF9SRSIsIlJVQllfS0VZV09SRFMiLCJZQVJET0NUQUciLCJJUkJfT0JKRUNUIiwiUlVCWV9ERUZBVUxUX0NPTlRBSU5TIiwiSVJCX0RFRkFVTFQiLCJCQVNJQ19BVE9NX1JFIiwiRlVOQ1RJT05fTkFNRV9SRSIsIkVSTEFOR19SRVNFUlZFRCIsIk5BTUVEX0ZVTiIsIkZVTkNUSU9OX0NBTEwiLCJUVVBMRSIsIlZBUjEiLCJWQVIyIiwiUkVDT1JEX0FDQ0VTUyIsIkJMT0NLX1NUQVRFTUVOVFMiLCJCQVNJQ19NT0RFUyIsIk1FVEhPRCIsIlRZUEVQQVJBTSIsImJ1aWx0LWluIiwiU1lNQk9MUyIsIlFTVFIiLCJBU1NJR05NRU5UIiwiREVTQ1RFWFQiLCJBVF9DT01NRU5UX01PREUiLCJTVFJVQ1RfVFlQRSIsIlBBUlNFX1BBUkFNUyIsIkZVTkNUSU9OX0RFRiIsIkRFRklOSVRJT04iLCJCVUlMVF9JTl9SRUYiLCJTVFJJTkdfUkVGIiwiRlVOQ1RJT05fUkVGIiwiRlVOQ1RJT05fUkVGX1BBUkFNUyIsIkdDT0RFX0NPREUiLCJzeW1ib2wiLCJHT19LRVlXT1JEUyIsIkJVSUxUX0lOUyIsIklERU5USUZJRVJfUExBSU5fT1JfUVVPVEVEIiwiRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCIsIkJMT0NLX01VU1RBQ0hFX0NPTlRFTlRTIiwiQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFMiLCJQUkFHTUEiLCJUQUdfSU5OQVJEUyIsIlZFUlNJT04iLCJET0NUQUdTIiwiQ09OU1RBTlRTIiwiTUVUSE9EUyIsIlRZUEVTIiwiVkFSSUFCTEVTIiwiRlVOQ1RJT05fTkFNRV9JREVOVF9SRSIsIkpBVkFfTlVNQkVSX01PREUiLCJIVE1MX1RFTVBMQVRFIiwiQ1NTX1RFTVBMQVRFIiwiUEFSQU1TQkxPQ0siLCJMSVRFUkFMUyIsIkFMTE9XRURfQ09NTUVOVFMiLCJWQUxVRV9DT05UQUlORVIiLCJBUlJBWSIsIlZBUklBQkxFX05BTUVfUkUiLCJERUZBVUxUIiwiSU5URVJQT0xBVElPTiIsIklOVEVSUE9MQVRFRF9WQVJJQUJMRSIsIkNPTU1BTkQiLCJNQUNST0NBTEwiLCJMQUJFTCIsIkFOTk9UQVRJT05fVVNFX1NJVEUiLCJBTk5PVEFUSU9OIiwiS09UTElOX05VTUJFUl9NT0RFIiwiS09UTElOX05FU1RFRF9DT01NRU5UIiwiS09UTElOX1BBUkVOX1RZUEUiLCJLT1RMSU5fUEFSRU5fVFlQRTIiLCJMQVNTT19DTE9TRV9SRSIsIkxBU1NPX0tFWVdPUkRTIiwiSFRNTF9DT01NRU5UIiwiTEFTU09fTk9QUk9DRVNTIiwiTEFTU09fU1RBUlQiLCJMQVNTT19EQVRBTUVNQkVSIiwiTEFTU09fQ09ERSIsIkxBU1NPX0lERU5UX1JFIiwiSU5URVJQX0lERU5UX1JFIiwiUlVMRVMiLCJWQUxVRSIsIlNUUklOR19NT0RFIiwiSURFTlRfTU9ERSIsIlBBUkVOU19NT0RFIiwiVkFMVUVfV0lUSF9SVUxFU0VUUyIsIk1JWElOX0dVQVJEX01PREUiLCJSVUxFX01PREUiLCJBVF9SVUxFX01PREUiLCJWQVJfUlVMRV9NT0RFIiwiU0VMRUNUT1JfTU9ERSIsIkxJU1BfSURFTlRfUkUiLCJMSVNQX1NJTVBMRV9OVU1CRVJfUkUiLCJJREVOVCIsIk1FQyIsIlFVT1RFRCIsIlFVT1RFRF9BVE9NIiwiVElUTEUxIiwiVElUTEUyIiwiU1VCU1RfU0lNUExFIiwiTFNMX1NUUklOR1MiLCJMU0xfTlVNQkVSUyIsIkxPTkdfQlJBQ0tFVFMiLCJGVU5DIiwiVkFSX0FTU0lHIiwiVEFSR0VUIiwiVFJBTlNQT1NFIiwiQVRPTSIsIlBFUkxfS0VZV09SRFMiLCJTVFJJTkdfQ09OVEFJTlMiLCJQRVJMX0RFRkFVTFRfQ09OVEFJTlMiLCJOSVhfS0VZV09SRFMiLCJBTlRJUVVPVEUiLCJERUZJTkVTIiwiTEFOR1VBR0VTIiwiTEVYRU1FUyIsIkNMQVNTX0tFWVdPUkRTIiwiU1BFQ0lBTF9WQVJTIiwiRlVOQ1RJT05TIiwiT1hZR0VORV9LRVlXT1JEUyIsIkNVUkxZX0NPTU1FTlQiLCJQQVJFTl9DT01NRU5UIiwiQ1VSTFlfU1VCQ09NTUVOVCIsIkNPTU1FTlRfTU9ERSIsIlRZUEVTX1JFIiwiRlVOQ1RJT05TX1JFIiwiU1FMX0tXIiwiU1FMX0JJIiwiUFNfQ09NTUVOVCIsIlBBUkVOVEVEIiwiTElORV9DT01NRU5UIiwiQkFDS1RJQ0tfU1RSSU5HIiwiaW5uZXIiLCJXUzAiLCJERUxJTSIsIktFWV9PVEhFUiIsIkRFTElNX0FORF9WQUxVRSIsIlBST01QVCIsIkxJVEVSQUxfQlJBQ0tFVCIsIlFNTF9JREVOVF9SRSIsIklEX0lEIiwiUU1MX0FUVFJJQlVURSIsIlFNTF9PQkpFQ1QiLCJSRV9JREVOVCIsIlJFX01PRFVMRV9JREVOVCIsIlJFX09QRVJBVE9SIiwib3AiLCJjaGFyIiwiUkVfT1BFUkFUT1JfU1BBQ0VEIiwiUkVfTlVNQkVSIiwiT1BFUkFUT1JfTU9ERSIsIkxJU1RfQ09OVEVOVFNfTU9ERVMiLCJNT0RVTEVfQUNDRVNTX0NPTlRFTlRTIiwiUEFSQU1TX0NPTlRFTlRTIiwiRlVOQ1RJT05fQkxPQ0tfTU9ERSIsIkNPTlNUUlVDVE9SX01PREUiLCJQQVRURVJOX01BVENIX0JMT0NLX01PREUiLCJNT0RVTEVfQUNDRVNTX01PREUiLCJJREVOVElGSUVSIiwiUFJPUEVSVFkiLCJTVEFURU1FTlRTIiwiQVBPU19TVFJJTkciLCJOVU1fU1VGRklYIiwiQlVJTFRJTlMiLCJUWVBFIiwiU0NIRU1FX0lERU5UX1JFIiwiU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUiLCJRVU9URURfSURFTlQiLCJRVU9URURfTElTVCIsIkNPTU1PTl9DT05UQUlOUyIsIkhFWENPTE9SIiwic21hbGlfaW5zdHJfbG93X3ByaW8iLCJDSEFSIiwiVkFSX0lERU5UX1JFIiwic2VsZWN0b3ItdGFnIiwiSEVYX0NPTE9SIiwiU1dJRlRfS0VZV09SRFMiLCJCTE9DS19DT01NRU5UIiwiVFBJRCIsIlRQTEFCRUwiLCJGVU5DVElPTl9OQU1FUyIsIlRBR1MiLCJ0IiwiREVDT1JBVE9SIiwiQVJHUyIsIlhMX0tFWVdPUkRTIiwiRE9VQkxFX1FVT1RFX1RFWFQiLCJJTVBPUlQiLCJGVU5DVElPTl9ERUZJTklUSU9OIiwidkZpbGUiLCJuYk1DIiwiaXNNdWx0aXBsZUNob2lzZSIsIm5iUSIsIm5vZGVDIiwieCIsImZvciIsImxpc3RDaGlsZCIsImRlYWxMYWJlbENoaWxkcmVuIiwib25jbGljayIsInZpc2l0TGlzdCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfZGVmaW5lUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwibm90aGluZ0hhcHBlbmQiLCJwcm9wIiwiZWF0ZW4iLCJkZWZhdWx0Q29uZmlnIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXhOZXh0IiwidXNlckNvbmZpZyIsImxldHNFYXQiLCJzdG9wT25CcmFjZSIsImVycm9yRGV0ZWN0ZWQiLCJjb25maWciLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9vYmplY3RTcHJlYWQiLCJsYWJlbFNlY29uZCIsImxhYmVsRmlyc3QiLCJzaG91bGRTdG9wIiwiY2hhcnMiLCJlYXRVbnRpbCIsImVhdE9uZSIsInNraXBTdG9wQ2hlY2siLCJlYXRRdW90ZSIsInEiLCJxdW90ZSIsImVhdEluUXVvdGUiLCJpZFNldEJ5S2V5IiwiYWRkQXR0cmlidXRlIiwiX3JldCIsIlNUQVJUIiwiRU5EIiwic3RhcnRzV2l0aCIsInBhcnNlQXR0ciIsInBsYWNlaG9sZGVyIiwiaW5wdXQiLCJsaW5laW5wdXQiLCJFTkRfUkdYIiwidW50cmltIiwic2VsZWN0IiwibGluZXNlbGVjdCIsImJsb2NrVG9rZW5pemVyIiwic2VhcmNoIiwidGV4dGlucHV0IiwiVU5ERUZJTkVEX0NPREVfUE9JTlRTIiwiRU9GIiwiTlVMTCIsIlRBQlVMQVRJT04iLCJDQVJSSUFHRV9SRVRVUk4iLCJMSU5FX0ZFRUQiLCJGT1JNX0ZFRUQiLCJTUEFDRSIsIkVYQ0xBTUFUSU9OX01BUksiLCJRVU9UQVRJT05fTUFSSyIsIk5VTUJFUl9TSUdOIiwiQU1QRVJTQU5EIiwiQVBPU1RST1BIRSIsIkhZUEhFTl9NSU5VUyIsIlNPTElEVVMiLCJESUdJVF8wIiwiRElHSVRfOSIsIlNFTUlDT0xPTiIsIkxFU1NfVEhBTl9TSUdOIiwiRVFVQUxTX1NJR04iLCJHUkVBVEVSX1RIQU5fU0lHTiIsIlFVRVNUSU9OX01BUksiLCJMQVRJTl9DQVBJVEFMX0EiLCJMQVRJTl9DQVBJVEFMX0YiLCJMQVRJTl9DQVBJVEFMX1giLCJMQVRJTl9DQVBJVEFMX1oiLCJSSUdIVF9TUVVBUkVfQlJBQ0tFVCIsIkdSQVZFX0FDQ0VOVCIsIkxBVElOX1NNQUxMX0EiLCJMQVRJTl9TTUFMTF9GIiwiTEFUSU5fU01BTExfWCIsIkxBVElOX1NNQUxMX1oiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJEQVNIX0RBU0hfU1RSSU5HIiwiRE9DVFlQRV9TVFJJTkciLCJDREFUQV9TVEFSVF9TVFJJTkciLCJTQ1JJUFRfU1RSSU5HIiwiUFVCTElDX1NUUklORyIsIlNZU1RFTV9TVFJJTkciLCJjcCIsImNwMSIsImNwMiIsImNvbnRyb2xDaGFyYWN0ZXJJbklucHV0U3RyZWFtIiwibm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbSIsInN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0iLCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJlbmRUYWdXaXRoQXR0cmlidXRlcyIsImVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJ1bmV4cGVjdGVkU29saWR1c0luVGFnIiwidW5leHBlY3RlZE51bGxDaGFyYWN0ZXIiLCJ1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZSIsImludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZSIsInVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSIsIm1pc3NpbmdFbmRUYWdOYW1lIiwidW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSIsInVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSIsIm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwidW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZSIsImVvZkJlZm9yZVRhZ05hbWUiLCJlb2ZJblRhZyIsIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSIsIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQiLCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnMiLCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQiLCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllciIsIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwibWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwiYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIiLCJhYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsImNkYXRhSW5IdG1sQ29udGVudCIsImluY29ycmVjdGx5T3BlbmVkQ29tbWVudCIsImVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCIsImVvZkluRG9jdHlwZSIsIm5lc3RlZENvbW1lbnQiLCJhYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQiLCJlb2ZJbkNvbW1lbnQiLCJpbmNvcnJlY3RseUNsb3NlZENvbW1lbnQiLCJlb2ZJbkNkYXRhIiwiYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlIiwibnVsbENoYXJhY3RlclJlZmVyZW5jZSIsInN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSIsImNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2UiLCJjb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlIiwibm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlIiwibWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSIsIm1pc3NpbmdEb2N0eXBlTmFtZSIsImludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWUiLCJkdXBsaWNhdGVBdHRyaWJ1dGUiLCJub25Db25mb3JtaW5nRG9jdHlwZSIsIm1pc3NpbmdEb2N0eXBlIiwibWlzcGxhY2VkRG9jdHlwZSIsImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50IiwiY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50cyIsImRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZCIsIm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiIsImFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQiLCJtaXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50IiwibmVzdGVkTm9zY3JpcHRJbkhlYWQiLCJlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0IiwiJCIsInVuaWNvZGUiLCJDT0RFX1BPSU5UUyIsIkRFRkFVTFRfQlVGRkVSX1dBVEVSTElORSIsIltvYmplY3QgT2JqZWN0XSIsImxhc3RHYXBQb3MiLCJsYXN0Q2hhclBvcyIsImdhcFN0YWNrIiwic2tpcE5leHROZXdMaW5lIiwibGFzdENodW5rV3JpdHRlbiIsImVuZE9mQ2h1bmtIaXQiLCJidWZmZXJXYXRlcmxpbmUiLCJuZXh0Q3AiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJfYWRkR2FwIiwiZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCIsIl9lcnIiLCJFUlIiLCJjaHVuayIsImlzTGFzdENodW5rIiwiYWR2YW5jZSIsImlzU3Vycm9nYXRlIiwiX3Byb2Nlc3NTdXJyb2dhdGUiLCJfY2hlY2tGb3JQcm9ibGVtYXRpY0NoYXJhY3RlcnMiLCJpc0NvbnRyb2xDb2RlUG9pbnQiLCJpc1VuZGVmaW5lZENvZGVQb2ludCIsIlVpbnQxNkFycmF5IiwiJCQiLCJDT0RFX1BPSU5UX1NFUVVFTkNFUyIsIkMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFMiLCIxMjgiLCIxMzAiLCIxMzEiLCIxMzIiLCIxMzMiLCIxMzQiLCIxMzUiLCIxMzYiLCIxMzciLCIxMzgiLCIxMzkiLCIxNDAiLCIxNDIiLCIxNDUiLCIxNDYiLCIxNDciLCIxNDgiLCIxNDkiLCIxNTAiLCIxNTEiLCIxNTIiLCIxNTMiLCIxNTQiLCIxNTUiLCIxNTYiLCIxNTgiLCIxNTkiLCJIQVNfREFUQV9GTEFHIiwiREFUQV9EVVBMRVRfRkxBRyIsIkhBU19CUkFOQ0hFU19GTEFHIiwiTUFYX0JSQU5DSF9NQVJLRVJfVkFMVUUiLCJEQVRBX1NUQVRFIiwiUkNEQVRBX1NUQVRFIiwiUkFXVEVYVF9TVEFURSIsIlNDUklQVF9EQVRBX1NUQVRFIiwiUExBSU5URVhUX1NUQVRFIiwiVEFHX09QRU5fU1RBVEUiLCJFTkRfVEFHX09QRU5fU1RBVEUiLCJUQUdfTkFNRV9TVEFURSIsIlJDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUiLCJSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFIiwiUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlJBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFIiwiUkFXVEVYVF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTl9TVEFURSIsIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURSIsIkJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSIsIkFUVFJJQlVURV9OQU1FX1NUQVRFIiwiQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUiLCJCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFIiwiQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUiLCJBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSIsIkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEUiLCJTRUxGX0NMT1NJTkdfU1RBUlRfVEFHX1NUQVRFIiwiQk9HVVNfQ09NTUVOVF9TVEFURSIsIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFIiwiQ09NTUVOVF9TVEFSVF9TVEFURSIsIkNPTU1FTlRfU1RBUlRfREFTSF9TVEFURSIsIkNPTU1FTlRfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfU1RBVEUiLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFIiwiQ09NTUVOVF9FTkRfREFTSF9TVEFURSIsIkNPTU1FTlRfRU5EX1NUQVRFIiwiQ09NTUVOVF9FTkRfQkFOR19TVEFURSIsIkRPQ1RZUEVfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFIiwiRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURSIsIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSIsIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEUiLCJCT0dVU19ET0NUWVBFX1NUQVRFIiwiQ0RBVEFfU0VDVElPTl9TVEFURSIsIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURSIsIkNEQVRBX1NFQ1RJT05fRU5EX1NUQVRFIiwiQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSIsIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJBTUJJR1VPVVNfQU1QRVJTQU5EX1NUQVRFIiwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSIsIkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFIiwiaXNXaGl0ZXNwYWNlIiwiaXNBc2NpaURpZ2l0IiwiaXNBc2NpaVVwcGVyIiwiaXNBc2NpaUxvd2VyIiwiaXNBc2NpaUxldHRlciIsImlzQXNjaWlBbHBoYU51bWVyaWMiLCJpc0FzY2lpVXBwZXJIZXhEaWdpdCIsImlzQXNjaWlMb3dlckhleERpZ2l0IiwidG9Bc2NpaUxvd2VyQ29kZVBvaW50IiwidG9DaGFyIiwidG9Bc2NpaUxvd2VyQ2hhciIsImZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2giLCJub2RlSXgiLCJicmFuY2hDb3VudCIsIm5lVHJlZSIsImxvIiwiaGkiLCJtaWQiLCJtaWRDcCIsIlRva2VuaXplciIsIlByZXByb2Nlc3NvciIsInRva2VuUXVldWUiLCJhbGxvd0NEQVRBIiwic3RhdGUiLCJyZXR1cm5TdGF0ZSIsImNoYXJSZWZDb2RlIiwidGVtcEJ1ZmYiLCJsYXN0U3RhcnRUYWdOYW1lIiwiY29uc3VtZWRBZnRlclNuYXBzaG90IiwiYWN0aXZlIiwiY3VycmVudENoYXJhY3RlclRva2VuIiwiY3VycmVudFRva2VuIiwiY3VycmVudEF0dHIiLCJfY29uc3VtZSIsIl91bmNvbnN1bWUiLCJfZW5zdXJlSGliZXJuYXRpb24iLCJzaGlmdCIsIndyaXRlIiwiaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyIsInJldHJlYXQiLCJISUJFUk5BVElPTl9UT0tFTiIsInBhdHRlcm4iLCJzdGFydENwIiwiY2FzZVNlbnNpdGl2ZSIsImNvbnN1bWVkQ291bnQiLCJpc01hdGNoIiwicGF0dGVybkxlbmd0aCIsInBhdHRlcm5Qb3MiLCJwYXR0ZXJuQ3AiLCJTVEFSVF9UQUdfVE9LRU4iLCJzZWxmQ2xvc2luZyIsImFja1NlbGZDbG9zaW5nIiwiYXR0cnMiLCJFTkRfVEFHX1RPS0VOIiwiQ09NTUVOVF9UT0tFTiIsImluaXRpYWxOYW1lIiwiRE9DVFlQRV9UT0tFTiIsImZvcmNlUXVpcmtzIiwicHVibGljSWQiLCJzeXN0ZW1JZCIsIkVPRl9UT0tFTiIsImF0dHJOYW1lRmlyc3RDaCIsInRvU3RhdGUiLCJnZXRUb2tlbkF0dHIiLCJfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImN0IiwiX2NyZWF0ZUVPRlRva2VuIiwiX2VtaXRDdXJyZW50VG9rZW4iLCJfY3JlYXRlQ2hhcmFjdGVyVG9rZW4iLCJDSEFSQUNURVJfVE9LRU4iLCJXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiIsIk5VTExfQ0hBUkFDVEVSX1RPS0VOIiwiX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImNvZGVQb2ludHMiLCJfZW1pdENvZGVQb2ludCIsImV4Y2VzcyIsImluTm9kZSIsIndpdGhTZW1pY29sb24iLCJfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSIsIl9lbWl0U2V2ZXJhbENvZGVQb2ludHMiLCJkcm9wUGFyc2VkQ2h1bmsiLCJfZW1pdEVPRlRva2VuIiwiX2VtaXRDaGFycyIsIl9jcmVhdGVTdGFydFRhZ1Rva2VuIiwiX3JlY29uc3VtZUluU3RhdGUiLCJfY3JlYXRlQ29tbWVudFRva2VuIiwiX2NyZWF0ZUVuZFRhZ1Rva2VuIiwiX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmciLCJfY3JlYXRlQXR0ciIsIl9sZWF2ZUF0dHJOYW1lIiwiX2xlYXZlQXR0clZhbHVlIiwiX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2giLCJfY3JlYXRlRG9jdHlwZVRva2VuIiwiX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UiLCJtYXRjaFJlc3VsdCIsIl9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlIiwiX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsiLCJfZXJyT25OZXh0Q29kZVBvaW50IiwiaXNBc2NpaUhleERpZ2l0IiwicmVwbGFjZW1lbnQiLCJNT0RFIiwiREFUQSIsIlJDREFUQSIsIlJBV1RFWFQiLCJTQ1JJUFRfREFUQSIsIlBMQUlOVEVYVCIsInRva2VuIiwiYXR0ck5hbWUiLCJOUyIsIkhUTUwiLCJNQVRITUwiLCJTVkciLCJYTElOSyIsIlhNTCIsIlhNTE5TIiwiQUNUSU9OIiwiRU5DT0RJTkciLCJDT0xPUiIsIkZBQ0UiLCJTSVpFIiwiTk9fUVVJUktTIiwiUVVJUktTIiwiTElNSVRFRF9RVUlSS1MiLCJBIiwiQUREUkVTUyIsIkFOTk9UQVRJT05fWE1MIiwiQVBQTEVUIiwiQVJFQSIsIkFSVElDTEUiLCJBU0lERSIsIkIiLCJCQVNFIiwiQkFTRUZPTlQiLCJCR1NPVU5EIiwiQklHIiwiQkxPQ0tRVU9URSIsIkJSIiwiQlVUVE9OIiwiQ0FQVElPTiIsIkNFTlRFUiIsIkNPREUiLCJDT0wiLCJDT0xHUk9VUCIsIkREIiwiREVTQyIsIkRFVEFJTFMiLCJESUFMT0ciLCJESVIiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJFTUJFRCIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJR1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JFSUdOX09CSkVDVCIsIkZPUk0iLCJGUkFNRSIsIkZSQU1FU0VUIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiSEVBRCIsIkhFQURFUiIsIkhHUk9VUCIsIkhSIiwiSSIsIklNRyIsIklNQUdFIiwiSU5QVVQiLCJJRlJBTUUiLCJLRVlHRU4iLCJMSSIsIkxJTksiLCJMSVNUSU5HIiwiTUFJTiIsIk1BTElHTk1BUksiLCJNQVJRVUVFIiwiTUFUSCIsIk1FTlUiLCJNRVRBIiwiTUdMWVBIIiwiTUkiLCJNTyIsIk1OIiwiTVMiLCJNVEVYVCIsIk5BViIsIk5PQlIiLCJOT0ZSQU1FUyIsIk5PRU1CRUQiLCJOT1NDUklQVCIsIk9MIiwiT1BUR1JPVVAiLCJPUFRJT04iLCJQIiwiUEFSQU0iLCJQUkUiLCJSQiIsIlJQIiwiUlQiLCJSVEMiLCJSVUJZIiwiUyIsIlNDUklQVCIsIlNFQ1RJT04iLCJTRUxFQ1QiLCJTT1VSQ0UiLCJTTUFMTCIsIlNQQU4iLCJTVFJJS0UiLCJTVFJPTkciLCJTVFlMRSIsIlNVQiIsIlNVTU1BUlkiLCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEVNUExBVEUiLCJURVhUQVJFQSIsIlRGT09UIiwiVEQiLCJUSCIsIlRIRUFEIiwiVFIiLCJUUkFDSyIsIlRUIiwiVSIsIlVMIiwiV0JSIiwiWE1QIiwiVEFHX05BTUVTIiwiTkFNRVNQQUNFUyIsImlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkIiwidG4iLCJpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZFRob3JvdWdobHkiLCJpc1Njb3BpbmdFbGVtZW50IiwibnMiLCJ0cmVlQWRhcHRlciIsInN0YWNrVG9wIiwiY3VycmVudFRhZ05hbWUiLCJjdXJyZW50VG1wbENvbnRlbnQiLCJ0bXBsQ291bnQiLCJlbGVtZW50IiwiaWR4IiwiZ2V0TmFtZXNwYWNlVVJJIiwiZ2V0VGFnTmFtZSIsIl9pc0luVGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUNvbnRlbnQiLCJfdXBkYXRlQ3VycmVudEVsZW1lbnQiLCJvbGRFbGVtZW50IiwibmV3RWxlbWVudCIsIl9pbmRleE9mIiwicmVmZXJlbmNlRWxlbWVudCIsImluc2VydGlvbklkeCIsInBvcHBlZEVsZW1lbnQiLCJlbGVtZW50SWR4IiwiZXhjbHVzaW9uVGFnTmFtZSIsIk5PQUhfQVJLX0NBUEFDSVRZIiwiRm9ybWF0dGluZ0VsZW1lbnRMaXN0IiwiZW50cmllcyIsImJvb2ttYXJrIiwiY2FuZGlkYXRlcyIsIm5lQXR0cnNMZW5ndGgiLCJnZXRBdHRyTGlzdCIsIm5lVGFnTmFtZSIsIm5lTmFtZXNwYWNlVVJJIiwiZW50cnkiLCJNQVJLRVJfRU5UUlkiLCJlbGVtZW50QXR0cnMiLCJfZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMiLCJjTGVuZ3RoIiwibmVBdHRycyIsIm5lQXR0cnNNYXAiLCJuZUF0dHIiLCJqIiwiY0F0dHIiLCJfZW5zdXJlTm9haEFya0NvbmRpdGlvbiIsIkVMRU1FTlRfRU5UUlkiLCJib29rbWFya0lkeCIsIk1peGluIiwiaG9zdCIsIm9yaWdpbmFsTWV0aG9kcyIsIm92ZXJyaWRkZW5NZXRob2RzIiwiX2dldE92ZXJyaWRkZW5NZXRob2RzIiwiaW5zdGFsbCIsIkN0b3IiLCJfX21peGlucyIsImNvbnN0cnVjdG9yIiwibWl4aW4iLCJzdXBlciIsImlzRW9sIiwibGluZVN0YXJ0UG9zIiwiZHJvcHBlZEJ1ZmZlclNpemUiLCJjb2wiLCJteG4iLCJvcmlnIiwicHJldlBvcyIsInJlZHVjdGlvbiIsInRva2VuaXplciIsInBvc1RyYWNrZXIiLCJQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4iLCJjdXJyZW50QXR0ckxvY2F0aW9uIiwiY3RMb2MiLCJzdGFydExpbmUiLCJzdGFydENvbCIsInN0YXJ0T2Zmc2V0IiwiZW5kTGluZSIsImVuZENvbCIsImVuZE9mZnNldCIsImxvY2F0aW9uIiwibWV0aG9kcyIsIl9nZXRDdXJyZW50TG9jYXRpb24iLCJfYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8iLCJtb2RlTmFtZSIsIm9uSXRlbVBvcCIsInBvcEFsbFVwVG9IdG1sRWxlbWVudCIsInJlbW92ZSIsImxhc3RTdGFydFRhZ1Rva2VuIiwibGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwibG9jIiwic3RhcnRUYWciLCJzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uIiwiY2xvc2luZ1Rva2VuIiwiZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsImVuZFRhZyIsImZyYWdtZW50Q29udGV4dCIsIl9ib290c3RyYXAiLCJ0b2tlbml6ZXJNaXhpbiIsIkxvY2F0aW9uSW5mb1Rva2VuaXplck1peGluIiwib3BlbkVsZW1lbnRzIiwiTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluIiwiX3NldEVuZExvY2F0aW9uIiwic2NyaXB0SGFuZGxlciIsIl9ydW5QYXJzaW5nTG9vcCIsIl9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IiwiX3Byb2Nlc3NUb2tlbiIsImhhc0luU2NvcGUiLCJfc2V0RG9jdW1lbnRUeXBlIiwiZG9jdW1lbnRDaGlsZHJlbiIsImdldENoaWxkTm9kZXMiLCJjbkxlbmd0aCIsImlzRG9jdW1lbnRUeXBlTm9kZSIsIl9zZXRTdGFydExvY2F0aW9uIiwiX2F0dGFjaEVsZW1lbnRUb1RyZWUiLCJuYW1lc3BhY2VVUkkiLCJfYXBwZW5kRWxlbWVudCIsIl9pbnNlcnRFbGVtZW50IiwiX2luc2VydFRlbXBsYXRlIiwidG1wbENvbnRlbnQiLCJfaW5zZXJ0RmFrZVJvb3RFbGVtZW50IiwiX2FwcGVuZENvbW1lbnROb2RlIiwiY29tbWVudE5vZGUiLCJfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uIiwiX2luc2VydENoYXJhY3RlcnMiLCJoYXNGb3N0ZXJQYXJlbnQiLCJfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24iLCJ0ZXh0Tm9kZSIsImJlZm9yZUVsZW1lbnQiLCJ0bkxvYyIsIm9uUGFyc2VFcnJvciIsIl9zZXRFcnJvckxvY2F0aW9uIiwiX3JlcG9ydEVycm9yIiwiRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UiLCJsYXN0RXJyT2Zmc2V0IiwicHJlcHJvY2Vzc29yTWl4aW4iLCJFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluIiwibG9jQmVmb3JlVG9rZW4iLCJFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluIiwiX3Byb2Nlc3NJbnB1dFRva2VuIiwiYmVmb3JlVG9rZW4iLCJET0NVTUVOVF9NT0RFIiwiY2hpbGROb2RlcyIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJuZXdOb2RlIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsInRlbXBsYXRlRWxlbWVudCIsImNvbnRlbnRFbGVtZW50IiwiZG9jdHlwZU5vZGUiLCJwcmV2Tm9kZSIsInJlY2lwaWVudCIsInJlY2lwaWVudEF0dHJzTWFwIiwic291cmNlQ29kZUxvY2F0aW9uIiwiZGVmYXVsdHMiLCJyZWR1Y2UiLCJtZXJnZWQiLCJvcHRPYmoiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImVucXVvdGVEb2N0eXBlSWQiLCJoYXNQcmVmaXgiLCJwcmVmaXhlcyIsIkFUVFJTIiwiTUlNRV9UWVBFUyIsIlRFWFRfSFRNTCIsIkFQUExJQ0FUSU9OX1hNTCIsIlNWR19BVFRSU19BREpVU1RNRU5UX01BUCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2Vwcm9maWxlIiwiY2FsY21vZGUiLCJjbGlwcGF0aHVuaXRzIiwiZGlmZnVzZWNvbnN0YW50IiwiZWRnZW1vZGUiLCJmaWx0ZXJ1bml0cyIsImdseXBocmVmIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJncmFkaWVudHVuaXRzIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxlbmd0aGFkanVzdCIsImxpbWl0aW5nY29uZWFuZ2xlIiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJudW1vY3RhdmVzIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzYXR4IiwicG9pbnRzYXR5IiwicG9pbnRzYXR6IiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXF1aXJlZGV4dGVuc2lvbnMiLCJyZXF1aXJlZGZlYXR1cmVzIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidGV4dGxlbmd0aCIsInZpZXdib3giLCJ2aWV3dGFyZ2V0IiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ6b29tYW5kcGFuIiwiWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQIiwieGxpbms6YWN0dWF0ZSIsInhsaW5rOmFyY3JvbGUiLCJ4bGluazpocmVmIiwieGxpbms6cm9sZSIsInhsaW5rOnNob3ciLCJ4bGluazp0aXRsZSIsInhsaW5rOnR5cGUiLCJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIiwieG1sbnMiLCJ4bWxuczp4bGluayIsIlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjbGlwcGF0aCIsImZlYmxlbmQiLCJmZWNvbG9ybWF0cml4IiwiZmVjb21wb25lbnR0cmFuc2ZlciIsImZlY29tcG9zaXRlIiwiZmVjb252b2x2ZW1hdHJpeCIsImZlZGlmZnVzZWxpZ2h0aW5nIiwiZmVkaXNwbGFjZW1lbnRtYXAiLCJmZWRpc3RhbnRsaWdodCIsImZlZmxvb2QiLCJmZWZ1bmNhIiwiZmVmdW5jYiIsImZlZnVuY2ciLCJmZWZ1bmNyIiwiZmVnYXVzc2lhbmJsdXIiLCJmZWltYWdlIiwiZmVtZXJnZSIsImZlbWVyZ2Vub2RlIiwiZmVtb3JwaG9sb2d5IiwiZmVvZmZzZXQiLCJmZXBvaW50bGlnaHQiLCJmZXNwZWN1bGFybGlnaHRpbmciLCJmZXNwb3RsaWdodCIsImZldGlsZSIsImZldHVyYnVsZW5jZSIsImZvcmVpZ25vYmplY3QiLCJsaW5lYXJncmFkaWVudCIsInJhZGlhbGdyYWRpZW50IiwidGV4dHBhdGgiLCJFWElUU19GT1JFSUdOX0NPTlRFTlQiLCJzdGFydFRhZ1Rva2VuIiwiYWRqdXN0ZWRBdHRyTmFtZSIsImFkanVzdGVkQXR0ckVudHJ5IiwiYWRqdXN0ZWRUYWdOYW1lIiwiZm9yZWlnbk5TIiwiaXNIdG1sSW50ZWdyYXRpb25Qb2ludCIsImlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQiLCJERUZBVUxUX09QVElPTlMiLCJzY3JpcHRpbmdFbmFibGVkIiwic291cmNlQ29kZUxvY2F0aW9uSW5mbyIsImRlZmF1bHRUcmVlQWRhcHRlciIsIkhJRERFTl9JTlBVVF9UWVBFIiwiQUFfT1VURVJfTE9PUF9JVEVSIiwiQUFfSU5ORVJfTE9PUF9JVEVSIiwiSU5JVElBTF9NT0RFIiwiQkVGT1JFX0hUTUxfTU9ERSIsIkJFRk9SRV9IRUFEX01PREUiLCJJTl9IRUFEX01PREUiLCJJTl9IRUFEX05PX1NDUklQVF9NT0RFIiwiQUZURVJfSEVBRF9NT0RFIiwiSU5fQk9EWV9NT0RFIiwiVEVYVF9NT0RFIiwiSU5fVEFCTEVfTU9ERSIsIklOX1RBQkxFX1RFWFRfTU9ERSIsIklOX0NBUFRJT05fTU9ERSIsIklOX0NPTFVNTl9HUk9VUF9NT0RFIiwiSU5fVEFCTEVfQk9EWV9NT0RFIiwiSU5fUk9XX01PREUiLCJJTl9DRUxMX01PREUiLCJJTl9TRUxFQ1RfTU9ERSIsIklOX1NFTEVDVF9JTl9UQUJMRV9NT0RFIiwiSU5fVEVNUExBVEVfTU9ERSIsIkFGVEVSX0JPRFlfTU9ERSIsIklOX0ZSQU1FU0VUX01PREUiLCJBRlRFUl9GUkFNRVNFVF9NT0RFIiwiQUZURVJfQUZURVJfQk9EWV9NT0RFIiwiQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSIsIklOU0VSVElPTl9NT0RFX1JFU0VUX01BUCIsIlRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAiLCJUT0tFTl9IQU5ETEVSUyIsInRva2VuSW5Jbml0aWFsTW9kZSIsImlnbm9yZVRva2VuIiwiYXBwZW5kQ29tbWVudCIsInAiLCJkb2N0eXBlIiwiZ2V0RG9jdW1lbnRNb2RlIiwiaXNDb25mb3JtaW5nIiwic2V0RG9jdW1lbnRNb2RlIiwiaW5zZXJ0aW9uTW9kZSIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInN0YXJ0VGFnSW5Cb2R5IiwiaGVhZEVsZW1lbnQiLCJ0b2tlbkluSGVhZCIsImluc2VydENoYXJhY3RlcnMiLCJzdGFydFRhZ0luSGVhZCIsImVuZFRhZ0luSGVhZCIsInRva2VuSW5IZWFkTm9TY3JpcHQiLCJ0b2tlbkFmdGVySGVhZCIsImZyYW1lc2V0T2siLCJjaGFyYWN0ZXJJbkJvZHkiLCJ3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5IiwiZW5kVGFnSW5Cb2R5IiwiZW9mSW5Cb2R5IiwicGVuZGluZ1NjcmlwdCIsIm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSIsImNoYXJhY3RlckluVGFibGUiLCJzdGFydFRhZ0luVGFibGUiLCJlbmRUYWdJblRhYmxlIiwicGVuZGluZ0NoYXJhY3RlclRva2VucyIsImhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4iLCJ0b2tlbkluVGFibGVUZXh0IiwiaGFzSW5UYWJsZVNjb3BlIiwiZ2VuZXJhdGVJbXBsaWVkRW5kVGFncyIsInBvcFVudGlsVGFnTmFtZVBvcHBlZCIsImFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsImNsZWFyVG9MYXN0TWFya2VyIiwidG9rZW5JbkNvbHVtbkdyb3VwIiwiY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0IiwiX2luc2VydEZha2VFbGVtZW50IiwiaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSIsImNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0IiwiaW5zZXJ0TWFya2VyIiwiX2Nsb3NlVGFibGVDZWxsIiwic3RhcnRUYWdJblNlbGVjdCIsImVuZFRhZ0luU2VsZWN0IiwiX3Jlc2V0SW5zZXJ0aW9uTW9kZSIsIm5ld0luc2VydGlvbk1vZGUiLCJfcG9wVG1wbEluc2VydGlvbk1vZGUiLCJfcHVzaFRtcGxJbnNlcnRpb25Nb2RlIiwiZW9mSW5UZW1wbGF0ZSIsInRva2VuQWZ0ZXJCb2R5Iiwic3RvcFBhcnNpbmciLCJpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQiLCJ0b2tlbkFmdGVyQWZ0ZXJCb2R5IiwiYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQiLCJtZXJnZU9wdGlvbnMiLCJMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiIsIkVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4iLCJjcmVhdGVEb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJkb2N1bWVudE1vY2siLCJfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyIsIl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0Iiwicm9vdEVsZW1lbnQiLCJnZXRGaXJzdENoaWxkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX2Fkb3B0Tm9kZXMiLCJzdG9wcGVkIiwiZm9ybUVsZW1lbnQiLCJPcGVuRWxlbWVudFN0YWNrIiwidG1wbEluc2VydGlvbk1vZGVTdGFjayIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AiLCJjdXJyZW50VG1wbEluc2VydGlvbk1vZGUiLCJmb3N0ZXJQYXJlbnRpbmdFbmFibGVkIiwiX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlIiwiZ2V0TmV4dFRva2VuIiwid3JpdGVDYWxsYmFjayIsInNjcmlwdCIsIl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50IiwiX2lzSW50ZWdyYXRpb25Qb2ludCIsIm5leHRUb2tlbml6ZXJTdGF0ZSIsImdldFBhcmVudE5vZGUiLCJzZXREb2N1bWVudFR5cGUiLCJfZm9zdGVyUGFyZW50RWxlbWVudCIsInRtcGwiLCJzZXRUZW1wbGF0ZUNvbnRlbnQiLCJjcmVhdGVDb21tZW50Tm9kZSIsIl9mb3N0ZXJQYXJlbnRUZXh0IiwiaW5zZXJ0VGV4dCIsImRvbm9yIiwiZGV0YWNoTm9kZSIsImlzQ2hhcmFjdGVyVG9rZW4iLCJjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50IiwibnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJmb3JlaWduQ29udGVudCIsImNhdXNlc0V4aXQiLCJjdXJyZW50TnMiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdFRva2VuWE1MQXR0cnMiLCJzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQiLCJwb3BVbnRpbEVsZW1lbnRQb3BwZWQiLCJlbmRUYWdJbkZvcmVpZ25Db250ZW50IiwiX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQiLCJpc0ludGVncmF0aW9uUG9pbnQiLCJsaXN0TGVuZ3RoIiwidW5vcGVuSWR4IiwicG9wVW50aWxUYWJsZUNlbGxQb3BwZWQiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsImxhc3QiLCJfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0Iiwic2VsZWN0SWR4IiwiYW5jZXN0b3IiLCJfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nIiwib3BlbkVsZW1lbnQiLCJpbnNlcnRUZXh0QmVmb3JlIiwiU1BFQ0lBTF9FTEVNRU5UUyIsImFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeSIsImZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUiLCJyZW1vdmVFbnRyeSIsImdlbmVyaWNFbmRUYWdJbkJvZHkiLCJhYU9idGFpbkZ1cnRoZXN0QmxvY2siLCJmdXJ0aGVzdEJsb2NrIiwiX2lzU3BlY2lhbEVsZW1lbnQiLCJhYUlubmVyTG9vcCIsImZvcm1hdHRpbmdFbGVtZW50IiwibGFzdEVsZW1lbnQiLCJuZXh0RWxlbWVudCIsImdldENvbW1vbkFuY2VzdG9yIiwiZWxlbWVudEVudHJ5IiwiZ2V0RWxlbWVudEVudHJ5IiwiY291bnRlck92ZXJmbG93IiwiYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkiLCJhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvciIsImNvbW1vbkFuY2VzdG9yIiwiYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImluc2VydEFmdGVyIiwiY2FsbEFkb3B0aW9uQWdlbmN5IiwiX3N3aXRjaFRvVGV4dFBhcnNpbmciLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSIsImVyckNvZGUiLCJfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMiLCJhZGRyZXNzU3RhcnRUYWdJbkJvZHkiLCJoYXNJbkJ1dHRvblNjb3BlIiwiX2Nsb3NlUEVsZW1lbnQiLCJwcmVTdGFydFRhZ0luQm9keSIsImJTdGFydFRhZ0luQm9keSIsInB1c2hFbGVtZW50IiwiYXBwbGV0U3RhcnRUYWdJbkJvZHkiLCJhcmVhU3RhcnRUYWdJbkJvZHkiLCJwYXJhbVN0YXJ0VGFnSW5Cb2R5Iiwibm9lbWJlZFN0YXJ0VGFnSW5Cb2R5Iiwib3B0Z3JvdXBTdGFydFRhZ0luQm9keSIsInJiU3RhcnRUYWdJbkJvZHkiLCJnZW5lcmljU3RhcnRUYWdJbkJvZHkiLCJhY3RpdmVFbGVtZW50RW50cnkiLCJhU3RhcnRUYWdJbkJvZHkiLCJudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5IiwiZWxlbWVudFRuIiwiY2xvc2VUbiIsImxpc3RJdGVtU3RhcnRUYWdJbkJvZHkiLCJoclN0YXJ0VGFnSW5Cb2R5IiwicnRTdGFydFRhZ0luQm9keSIsInhtcFN0YXJ0VGFnSW5Cb2R5Iiwic3ZnU3RhcnRUYWdJbkJvZHkiLCJhZG9wdEF0dHJpYnV0ZXMiLCJodG1sU3RhcnRUYWdJbkJvZHkiLCJib2R5RWxlbWVudCIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiYm9keVN0YXJ0VGFnSW5Cb2R5IiwiaW5UZW1wbGF0ZSIsImZvcm1TdGFydFRhZ0luQm9keSIsIm5vYnJTdGFydFRhZ0luQm9keSIsIm1hdGhTdGFydFRhZ0luQm9keSIsIm1lbnVTdGFydFRhZ0luQm9keSIsInRhYmxlU3RhcnRUYWdJbkJvZHkiLCJpbnB1dFR5cGUiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwiaW1hZ2VTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsImZyYW1lc2V0U3RhcnRUYWdJbkJvZHkiLCJ0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5IiwicGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkiLCJhZGRyZXNzRW5kVGFnSW5Cb2R5IiwiYXBwbGV0RW5kVGFnSW5Cb2R5IiwicEVuZFRhZ0luQm9keSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImxpRW5kVGFnSW5Cb2R5IiwiZGRFbmRUYWdJbkJvZHkiLCJoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJickVuZFRhZ0luQm9keSIsImJvZHlFbmRUYWdJbkJvZHkiLCJodG1sRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsImN1clRuIiwidG9rZW5JblRhYmxlIiwiY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQiLCJ0ZFN0YXJ0VGFnSW5UYWJsZSIsImNvbFN0YXJ0VGFnSW5UYWJsZSIsImZvcm1TdGFydFRhZ0luVGFibGUiLCJ0YWJsZVN0YXJ0VGFnSW5UYWJsZSIsInRib2R5U3RhcnRUYWdJblRhYmxlIiwiaW5wdXRTdGFydFRhZ0luVGFibGUiLCJjYXB0aW9uU3RhcnRUYWdJblRhYmxlIiwiY29sZ3JvdXBTdGFydFRhZ0luVGFibGUiLCJzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlIiwiX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUiLCJoYXNJblNlbGVjdFNjb3BlIiwicHJldk9wZW5FbGVtZW50IiwicHJldk9wZW5FbGVtZW50VG4iLCJTY2hlbWEiLCJwcm9wZXJ0eSIsIm5vcm1hbCIsImluZm8iLCJJbmZvIiwiYXR0cmlidXRlIiwiYm9vbGVhbiIsImJvb2xlYW5pc2giLCJvdmVybG9hZGVkQm9vbGVhbiIsIm51bWJlciIsImNvbW1hU2VwYXJhdGVkIiwic3BhY2VTZXBhcmF0ZWQiLCJjb21tYU9yU3BhY2VTZXBhcmF0ZWQiLCJtdXN0VXNlUHJvcGVydHkiLCJkZWZpbmVkIiwicG93ZXJzIiwiaW5jcmVtZW50IiwiTWF0aCIsInBvdyIsIkRlZmluZWRJbmZvIiwiY2hlY2tzTGVuZ3RoIiwibWFzayIsImNoZWNrIiwibWFyayIsInR5cGVzIiwidHJhbnNmb3JtIiwieExpbmtBY3R1YXRlIiwieExpbmtBcmNSb2xlIiwieExpbmtIcmVmIiwieExpbmtSb2xlIiwieExpbmtTaG93IiwieExpbmtUaXRsZSIsInhMaW5rVHlwZSIsInhtbExhbmciLCJ4bWxCYXNlIiwieG1sU3BhY2UiLCJjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtIiwieG1sbnN4bGluayIsImNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSIsInhtbG5zWExpbmsiLCJhcmlhQWN0aXZlRGVzY2VuZGFudCIsImFyaWFBdG9taWMiLCJhcmlhQXV0b0NvbXBsZXRlIiwiYXJpYUJ1c3kiLCJhcmlhQ2hlY2tlZCIsImFyaWFDb2xDb3VudCIsImFyaWFDb2xJbmRleCIsImFyaWFDb2xTcGFuIiwiYXJpYUNvbnRyb2xzIiwiYXJpYUN1cnJlbnQiLCJhcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGV0YWlscyIsImFyaWFEaXNhYmxlZCIsImFyaWFEcm9wRWZmZWN0IiwiYXJpYUVycm9yTWVzc2FnZSIsImFyaWFFeHBhbmRlZCIsImFyaWFGbG93VG8iLCJhcmlhR3JhYmJlZCIsImFyaWFIYXNQb3B1cCIsImFyaWFIaWRkZW4iLCJhcmlhSW52YWxpZCIsImFyaWFLZXlTaG9ydGN1dHMiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsImFyaWFMZXZlbCIsImFyaWFMaXZlIiwiYXJpYU1vZGFsIiwiYXJpYU11bHRpTGluZSIsImFyaWFNdWx0aVNlbGVjdGFibGUiLCJhcmlhT3JpZW50YXRpb24iLCJhcmlhT3ducyIsImFyaWFQbGFjZWhvbGRlciIsImFyaWFQb3NJblNldCIsImFyaWFQcmVzc2VkIiwiYXJpYVJlYWRPbmx5IiwiYXJpYVJlbGV2YW50IiwiYXJpYVJlcXVpcmVkIiwiYXJpYVJvbGVEZXNjcmlwdGlvbiIsImFyaWFSb3dDb3VudCIsImFyaWFSb3dJbmRleCIsImFyaWFSb3dTcGFuIiwiYXJpYVNlbGVjdGVkIiwiYXJpYVNldFNpemUiLCJhcmlhU29ydCIsImFyaWFWYWx1ZU1heCIsImFyaWFWYWx1ZU1pbiIsImFyaWFWYWx1ZU5vdyIsImFyaWFWYWx1ZVRleHQiLCJyb2xlIiwibWVyZ2UiLCJ4bWwiLCJ4bGluayIsImFyaWEiLCJhY2NlcHRjaGFyc2V0IiwiaHRtbGZvciIsImh0dHBlcXVpdiIsImFiYnIiLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNjZXNzS2V5IiwiYWN0aW9uIiwiYWxsb3ciLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1BheW1lbnRSZXF1ZXN0IiwiYWxsb3dVc2VyTWVkaWEiLCJhcyIsImFzeW5jIiwiYXV0b0NhcGl0YWxpemUiLCJhdXRvQ29tcGxldGUiLCJhdXRvRm9jdXMiLCJhdXRvUGxheSIsImNhcHR1cmUiLCJjaGFyU2V0IiwiY2l0ZSIsImNvbHMiLCJjb2xTcGFuIiwiY29udGVudEVkaXRhYmxlIiwiY29udHJvbHMiLCJjb250cm9sc0xpc3QiLCJjb29yZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGVmZXIiLCJkaXIiLCJkaXJOYW1lIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmNUeXBlIiwiZW50ZXJLZXlIaW50IiwiZm9ybSIsImZvcm1BY3Rpb24iLCJmb3JtRW5jVHlwZSIsImZvcm1NZXRob2QiLCJmb3JtTm9WYWxpZGF0ZSIsImZvcm1UYXJnZXQiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2IiwiaW1hZ2VTaXplcyIsImltYWdlU3JjU2V0IiwiaW5wdXRNb2RlIiwiaW50ZWdyaXR5IiwiaXNNYXAiLCJpdGVtSWQiLCJpdGVtUHJvcCIsIml0ZW1SZWYiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImtpbmQiLCJsb29wIiwibWFuaWZlc3QiLCJtYXhMZW5ndGgiLCJtZWRpYSIsIm1ldGhvZCIsIm1pbiIsIm1pbkxlbmd0aCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub25jZSIsIm5vTW9kdWxlIiwibm9WYWxpZGF0ZSIsIm9uQWJvcnQiLCJvbkFmdGVyUHJpbnQiLCJvbkF1eENsaWNrIiwib25CZWZvcmVQcmludCIsIm9uQmVmb3JlVW5sb2FkIiwib25CbHVyIiwib25DYW5jZWwiLCJvbkNhblBsYXkiLCJvbkNhblBsYXlUaHJvdWdoIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwib25DbG9zZSIsIm9uQ29udGV4dE1lbnUiLCJvbkNvcHkiLCJvbkN1ZUNoYW5nZSIsIm9uQ3V0Iiwib25EYmxDbGljayIsIm9uRHJhZyIsIm9uRHJhZ0VuZCIsIm9uRHJhZ0VudGVyIiwib25EcmFnRXhpdCIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJhZ1N0YXJ0Iiwib25Ecm9wIiwib25EdXJhdGlvbkNoYW5nZSIsIm9uRW1wdGllZCIsIm9uRW5kZWQiLCJvbkVycm9yIiwib25Gb2N1cyIsIm9uRm9ybURhdGEiLCJvbkhhc2hDaGFuZ2UiLCJvbklucHV0Iiwib25JbnZhbGlkIiwib25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJvbkxhbmd1YWdlQ2hhbmdlIiwib25Mb2FkIiwib25Mb2FkZWREYXRhIiwib25Mb2FkZWRNZXRhZGF0YSIsIm9uTG9hZEVuZCIsIm9uTG9hZFN0YXJ0Iiwib25NZXNzYWdlIiwib25NZXNzYWdlRXJyb3IiLCJvbk1vdXNlRG93biIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZU91dCIsIm9uTW91c2VPdmVyIiwib25Nb3VzZVVwIiwib25PZmZsaW5lIiwib25PbmxpbmUiLCJvblBhZ2VIaWRlIiwib25QYWdlU2hvdyIsIm9uUGFzdGUiLCJvblBhdXNlIiwib25QbGF5Iiwib25QbGF5aW5nIiwib25Qb3BTdGF0ZSIsIm9uUHJvZ3Jlc3MiLCJvblJhdGVDaGFuZ2UiLCJvblJlamVjdGlvbkhhbmRsZWQiLCJvblJlc2V0Iiwib25SZXNpemUiLCJvblNjcm9sbCIsIm9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24iLCJvblNlZWtlZCIsIm9uU2Vla2luZyIsIm9uU2VsZWN0Iiwib25TdGFsbGVkIiwib25TdG9yYWdlIiwib25TdWJtaXQiLCJvblN1c3BlbmQiLCJvblRpbWVVcGRhdGUiLCJvblRvZ2dsZSIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwib25VbmxvYWQiLCJvblZvbHVtZUNoYW5nZSIsIm9uV2FpdGluZyIsIm9uV2hlZWwiLCJvcHRpbXVtIiwicGluZyIsInBsYXlzSW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInJlYWRPbmx5IiwicmVmZXJyZXJQb2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZSIsInNjb3BlZCIsInNlYW1sZXNzIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemVzIiwic2xvdCIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjRG9jIiwic3JjTGFuZyIsInNyY1NldCIsInN0eWxlIiwidGFiSW5kZXgiLCJ0cmFuc2xhdGUiLCJ0eXBlTXVzdE1hdGNoIiwidXNlTWFwIiwid2lkdGgiLCJhTGluayIsImFyY2hpdmUiLCJheGlzIiwiYmFja2dyb3VuZCIsImJnQ29sb3IiLCJib3JkZXIiLCJib3JkZXJDb2xvciIsImJvdHRvbU1hcmdpbiIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyT2ZmIiwiY2xhc3NJZCIsImNsZWFyIiwiY29kZUJhc2UiLCJjb2RlVHlwZSIsImNvbG9yIiwiY29tcGFjdCIsImRlY2xhcmUiLCJmYWNlIiwiZnJhbWUiLCJmcmFtZUJvcmRlciIsImhTcGFjZSIsImxlZnRNYXJnaW4iLCJsb25nRGVzYyIsImxvd1NyYyIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibm9SZXNpemUiLCJub0hyZWYiLCJub1NoYWRlIiwibm9XcmFwIiwicHJvZmlsZSIsInByb21wdCIsInJldiIsInJpZ2h0TWFyZ2luIiwicnVsZXMiLCJzY2hlbWUiLCJzY3JvbGxpbmciLCJzdGFuZGJ5Iiwic3VtbWFyeSIsInRvcE1hcmdpbiIsInZhbHVlVHlwZSIsInZlcnNpb24iLCJ2QWxpZ24iLCJ2TGluayIsInZTcGFjZSIsImFsbG93VHJhbnNwYXJlbmN5IiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIiwic2VjdXJpdHkiLCJ1bnNlbGVjdGFibGUiLCJhY2NlbnRIZWlnaHQiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFyYWJpY0Zvcm0iLCJiYXNlbGluZVNoaWZ0IiwiY2FwSGVpZ2h0IiwiY2xpcFBhdGgiLCJjbGlwUnVsZSIsImNvbG9ySW50ZXJwb2xhdGlvbiIsImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMiLCJjb2xvclByb2ZpbGUiLCJjb2xvclJlbmRlcmluZyIsImRhdGFUeXBlIiwiZG9taW5hbnRCYXNlbGluZSIsImVuYWJsZUJhY2tncm91bmQiLCJmaWxsT3BhY2l0eSIsImZpbGxSdWxlIiwiZmxvb2RDb2xvciIsImZsb29kT3BhY2l0eSIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJnbHlwaE5hbWUiLCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImhvcml6QWR2WCIsImhvcml6T3JpZ2luWCIsImhvcml6T3JpZ2luWSIsImltYWdlUmVuZGVyaW5nIiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJtYXJrZXJFbmQiLCJtYXJrZXJNaWQiLCJtYXJrZXJTdGFydCIsIm5hdkRvd24iLCJuYXZEb3duTGVmdCIsIm5hdkRvd25SaWdodCIsIm5hdkxlZnQiLCJuYXZOZXh0IiwibmF2UHJldiIsIm5hdlJpZ2h0IiwibmF2VXAiLCJuYXZVcExlZnQiLCJuYXZVcFJpZ2h0Iiwib25BY3RpdmF0ZSIsIm9uQmVnaW4iLCJvbkVuZCIsIm9uRm9jdXNJbiIsIm9uRm9jdXNPdXQiLCJvbk1vdXNlV2hlZWwiLCJvblJlcGVhdCIsIm9uU2hvdyIsIm9uWm9vbSIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIiLCJwYW5vc2UxIiwicG9pbnRlckV2ZW50cyIsInJlbmRlcmluZ0ludGVudCIsInNoYXBlUmVuZGVyaW5nIiwic3RvcENvbG9yIiwic3RvcE9wYWNpdHkiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3Ryb2tlRGFzaEFycmF5Iiwic3Ryb2tlRGFzaE9mZnNldCIsInN0cm9rZUxpbmVDYXAiLCJzdHJva2VMaW5lSm9pbiIsInN0cm9rZU1pdGVyTGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJ0ZXh0QW5jaG9yIiwidGV4dERlY29yYXRpb24iLCJ0ZXh0UmVuZGVyaW5nIiwidHlwZU9mIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmljb2RlQmlkaSIsInVuaWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZIYW5naW5nIiwidklkZW9ncmFwaGljIiwidk1hdGhlbWF0aWNhbCIsInZlY3RvckVmZmVjdCIsInZlcnRBZHZZIiwidmVydE9yaWdpblgiLCJ2ZXJ0T3JpZ2luWSIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4SGVpZ2h0IiwicGxheWJhY2tPcmRlciIsInRpbWVsaW5lQmVnaW4iLCJhYm91dCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFscGhhYmV0aWMiLCJhbXBsaXR1ZGUiLCJhc2NlbnQiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlVHlwZSIsImF6aW11dGgiLCJiYW5kd2lkdGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYm94IiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjbGlwIiwiY2xpcFBhdGhVbml0cyIsImNvbnRlbnRTY3JpcHRUeXBlIiwiY29udGVudFN0eWxlVHlwZSIsImN1cnNvciIsImN4IiwiY3kiLCJkIiwiZGVmYXVsdEFjdGlvbiIsImRlc2NlbnQiLCJkaWZmdXNlQ29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZHVyIiwiZGl2aXNvciIsImR4IiwiZHkiLCJlZGdlTW9kZSIsImVkaXRhYmxlIiwiZWxldmF0aW9uIiwiZXhwb25lbnQiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZmlsbCIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZm9jdXNhYmxlIiwiZm9jdXNIaWdobGlnaHQiLCJmciIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5kbGVyIiwiaGFuZ2luZyIsImhhdGNoQ29udGVudFVuaXRzIiwiaGF0Y2hVbml0cyIsImlkZW9ncmFwaGljIiwiaW5pdGlhbFZpc2liaWxpdHkiLCJpbiIsImluMiIsImludGVyY2VwdCIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5lbE1hdHJpeCIsImtlcm5lbFVuaXRMZW5ndGgiLCJrZXlQb2ludHMiLCJrZXlTcGxpbmVzIiwia2V5VGltZXMiLCJrZXJuaW5nIiwibGVuZ3RoQWRqdXN0IiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckhlaWdodCIsIm1hcmtlclVuaXRzIiwibWFya2VyV2lkdGgiLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0aGVtYXRpY2FsIiwibWVkaWFDaGFyYWN0ZXJFbmNvZGluZyIsIm1lZGlhQ29udGVudEVuY29kaW5ncyIsIm1lZGlhU2l6ZSIsIm1lZGlhVGltZSIsIm51bU9jdGF2ZXMiLCJvYnNlcnZlciIsIm9wYWNpdHkiLCJvcGVyYXRvciIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvdmVyZmxvdyIsIm92ZXJsYXkiLCJwYXRoIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJhbnNmb3JtIiwicGF0dGVyblVuaXRzIiwicGhhc2UiLCJwaXRjaCIsInBvaW50cyIsInBvaW50c0F0WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJwcm9wYWdhdGUiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9ucyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXF1aXJlZEZvbnRzIiwicmVxdWlyZWRGb3JtYXRzIiwicmVzb3VyY2UiLCJyZXN0YXJ0Iiwicm90YXRlIiwicngiLCJyeSIsInNjYWxlIiwic2VlZCIsInNpZGUiLCJzbG9wZSIsInNuYXBzaG90VGltZSIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3ByZWFkTWV0aG9kIiwic3BhY2luZyIsInN0ZERldmlhdGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0cm9rZSIsInN1cmZhY2VTY2FsZSIsInN5bmNCZWhhdmlvciIsInN5bmNCZWhhdmlvckRlZmF1bHQiLCJzeW5jTWFzdGVyIiwic3luY1RvbGVyYW5jZSIsInN5bmNUb2xlcmFuY2VEZWZhdWx0Iiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwidGV4dExlbmd0aCIsInRyYW5zZm9ybUJlaGF2aW9yIiwidTEiLCJ1MiIsInZpZXdCb3giLCJ2aWV3VGFyZ2V0IiwidmlzaWJpbGl0eSIsIndpZHRocyIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieSIsInkxIiwieTIiLCJ5Q2hhbm5lbFNlbGVjdG9yIiwieiIsInpvb21BbmRQYW4iLCJzY2hlbWEiLCJUeXBlIiwidmFsaWQiLCJkYXNoIiwiY2FtZWxjYXNlIiwiZGF0YXNldFRvUHJvcGVydHkiLCJjYXAiLCJrZWJhYiIsImRhdGFzZXRUb0F0dHJpYnV0ZSIsIiQwIiwic2VsZWN0b3IiLCJkZWZhdWx0VGFnTmFtZSIsImRvdCIsIm51bWJlclNpZ24iLCJlbXB0eSIsIndoaXRlU3BhY2UiLCJjb21tYSIsInBhZExlZnQiLCJwYWRSaWdodCIsInNwYWNlcyIsInBhcnNlIiwiY29tbWFzIiwiYWRqdXN0IiwiY3JlYXRlQWRqdXN0TWFwIiwicGFyc2VTZWxlY3RvciIsImlzTm9kZSIsImlzQ2hpbGRyZW4iLCJhZGRQcm9wZXJ0eSIsImFkZENoaWxkIiwiZmluZCIsInBhcnNlUHJpbWl0aXZlIiwicGFyc2VQcmltaXRpdmVzIiwicG9zaXRpdmVOdW1iZXIiLCJzdmciLCJtZXNzYWdlcyIsInZlcmJvc2UiLCIjZG9jdW1lbnQiLCIjZG9jdW1lbnQtZnJhZ21lbnQiLCIjdGV4dCIsIiNjb21tZW50IiwiI2RvY3VtZW50VHlwZSIsInB1YmxpYyIsInN5c3RlbSIsIm9wZW5pbmciLCJjbG9zaW5nIiwiZG9jIiwicXVpcmtzTW9kZSIsImxhc3RJbmRleE9mIiwiQ09NTUVOVF9SRUdFWCIsIk5FV0xJTkVfUkVHRVgiLCJXSElURVNQQUNFX1JFR0VYIiwiUFJPUEVSVFlfUkVHRVgiLCJDT0xPTl9SRUdFWCIsIlZBTFVFX1JFR0VYIiwiU0VNSUNPTE9OX1JFR0VYIiwiVFJJTV9SRUdFWCIsIk5FV0xJTkUiLCJGT1JXQVJEX1NMQVNIIiwiQVNURVJJU0siLCJFTVBUWV9TVFJJTkciLCJUWVBFX0NPTU1FTlQiLCJUWVBFX0RFQ0xBUkFUSU9OIiwibGluZW5vIiwidXBkYXRlUG9zaXRpb24iLCJsaW5lcyIsIlBvc2l0aW9uIiwibXNnIiwicmVhc29uIiwiZmlsZW5hbWUiLCJtIiwiY29tbWVudHMiLCJjb21tZW50IiwiZGVjbGFyYXRpb24iLCJkZWNsIiwiZGVjbHMiLCJkZWNsYXJhdGlvbnMiLCJpdGVyYXRvciIsIm91dHB1dCIsImhhc0l0ZXJhdG9yIiwibGVuIiwiZGFzaGVzIiwidiIsInZkIiwicmVhY3QiLCJjb250ZXh0IiwiX2lzVnVlIiwidnVlIiwidmRvbSIsInRvSCIsInBhcmVudFNjaGVtYSIsImVsZW1lbnRzIiwic3R5bGVSZXBsYWNlciIsInN0eWxlQ2FzZSIsInBhcnNlU3R5bGUiLCJoeXBlcnNjcmlwdCIsImNsZWFudXAiLCJzdWJwcm9wIiwiaHlwZXJsaWtlIiwiaGFzdFRvUmVhY3QiLCIkMSIsImludmFsaWQiLCJ1bmtub3duIiwibm9vcCIsIkZ1bmN0aW9uIiwiaWdub3JlZFNwYWNlcyIsInp3aXRjaCIsInBhdGNoIiwicDUiLCJzaGFsbG93IiwiYXR0ciIsImxvY2F0aW9uVHJhY2tlciIsInBhcnNlT3B0aW9ucyIsInZvaWRzIiwiY3JlYXRlUGFyc2U1TG9jYXRpb24iLCJ0b1BhcnNlNSIsImVuZFRhZ1Rva2VuIiwiZGF0YVN0YXRlIiwiY2hhcmFjdGVyVG9rZW4iLCJjb21tZW50VG9rZW4iLCJkb2N0eXBlVG9rZW4iLCJmcm9tUGFyc2U1IiwibW9jayIsImluVGVtcGxhdGVNb2RlIiwibW9kdWxlcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJnZXR0ZXIiLCJvIiwiZ2V0IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJfX2VzTW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIlNvdXJjZUxvY2F0aW9uIiwibGV4ZXIiLCJmaXJzdCIsInNlY29uZCIsIlRva2VuX1Rva2VuIiwiVG9rZW4iLCJlbmRUb2tlbiIsIlBhcnNlRXJyb3IiLCJ1bmRlcmxpbmVkIiwiX19wcm90b19fIiwic3JjX1BhcnNlRXJyb3IiLCJ1cHBlcmNhc2UiLCJFU0NBUEVfTE9PS1VQIiwiJiIsIj4iLCI8IiwiXCIiLCInIiwiRVNDQVBFX1JFR0VYIiwiZ2V0QmFzZUVsZW0iLCJncm91cCIsImJvZHkiLCJ1dGlscyIsImVsZW0iLCJkZWZsdCIsInNldHRpbmciLCJkZWZhdWx0SWZVbmRlZmluZWQiLCJoeXBoZW5hdGUiLCJpc0NoYXJhY3RlckJveCIsImJhc2VFbGVtIiwicHJvdG9jb2xGcm9tVXJsIiwicHJvdG9jb2wiLCJTZXR0aW5nc19TZXR0aW5ncyIsIlNldHRpbmdzIiwiZGlzcGxheU1vZGUiLCJsZXFubyIsImZsZXFuIiwidGhyb3dPbkVycm9yIiwiZXJyb3JDb2xvciIsIm1hY3JvcyIsIm1pblJ1bGVUaGlja25lc3MiLCJjb2xvcklzVGV4dENvbG9yIiwic3RyaWN0IiwidHJ1c3QiLCJtYXhTaXplIiwibWF4RXhwYW5kIiwiSW5maW5pdHkiLCJfcHJvdG8iLCJyZXBvcnROb25zdHJpY3QiLCJlcnJvckNvZGUiLCJlcnJvck1zZyIsIndhcm4iLCJ1c2VTdHJpY3RCZWhhdmlvciIsImlzVHJ1c3RlZCIsIlN0eWxlIiwiY3JhbXBlZCIsInN1cCIsIlN0eWxlX3N0eWxlcyIsIl9zdXAiLCJzdWIiLCJfc3ViIiwiZnJhY051bSIsIl9mcmFjTnVtIiwiZnJhY0RlbiIsIl9mcmFjRGVuIiwiY3JhbXAiLCJfY3JhbXAiLCJfdGV4dCIsImlzVGlnaHQiLCJzcmNfU3R5bGUiLCJESVNQTEFZIiwiVEVYVCIsIlNDUklQVFNDUklQVCIsInNjcmlwdERhdGEiLCJhbGxCbG9ja3MiLCJzdXBwb3J0ZWRDb2RlcG9pbnQiLCJjb2RlcG9pbnQiLCJiIiwic3ZnR2VvbWV0cnlfcGF0aCIsImRvdWJsZWxlZnRhcnJvdyIsImRvdWJsZXJpZ2h0YXJyb3ciLCJsZWZ0YXJyb3ciLCJsZWZ0YnJhY2UiLCJsZWZ0YnJhY2V1bmRlciIsImxlZnRncm91cCIsImxlZnRncm91cHVuZGVyIiwibGVmdGhhcnBvb24iLCJsZWZ0aGFycG9vbnBsdXMiLCJsZWZ0aGFycG9vbmRvd24iLCJsZWZ0aGFycG9vbmRvd25wbHVzIiwibGVmdGhvb2siLCJsZWZ0bGluZXNlZ21lbnQiLCJsZWZ0bWFwc3RvIiwibGVmdFRvRnJvbSIsImxvbmdlcXVhbCIsIm1pZGJyYWNlIiwibWlkYnJhY2V1bmRlciIsIm9paW50U2l6ZTEiLCJvaWludFNpemUyIiwib2lpaW50U2l6ZTEiLCJvaWlpbnRTaXplMiIsInJpZ2h0YXJyb3ciLCJyaWdodGJyYWNlIiwicmlnaHRicmFjZXVuZGVyIiwicmlnaHRncm91cCIsInJpZ2h0Z3JvdXB1bmRlciIsInJpZ2h0aGFycG9vbiIsInJpZ2h0aGFycG9vbnBsdXMiLCJyaWdodGhhcnBvb25kb3duIiwicmlnaHRoYXJwb29uZG93bnBsdXMiLCJyaWdodGhvb2siLCJyaWdodGxpbmVzZWdtZW50IiwicmlnaHRUb0Zyb20iLCJ0d29oZWFkbGVmdGFycm93IiwidHdvaGVhZHJpZ2h0YXJyb3ciLCJ0aWxkZTEiLCJ0aWxkZTIiLCJ0aWxkZTMiLCJ0aWxkZTQiLCJ2ZWMiLCJ3aWRlaGF0MSIsIndpZGVoYXQyIiwid2lkZWhhdDMiLCJ3aWRlaGF0NCIsIndpZGVjaGVjazEiLCJ3aWRlY2hlY2syIiwid2lkZWNoZWNrMyIsIndpZGVjaGVjazQiLCJiYXJhYm92ZWxlZnRhcnJvdyIsInJpZ2h0YXJyb3dhYm92ZWJhciIsImJhcmFib3Zlc2hvcnRsZWZ0aGFycG9vbiIsInJpZ2h0aGFycG9vbmFib3Zlc2hvcnRiYXIiLCJzaG9ydGJhcmFib3ZlbGVmdGhhcnBvb24iLCJzaG9ydHJpZ2h0aGFycG9vbmFib3ZlYmFyIiwidHJlZV9Eb2N1bWVudEZyYWdtZW50IiwiRG9jdW1lbnRGcmFnbWVudCIsIm1heEZvbnRTaXplIiwiaGFzQ2xhc3MiLCJ0b05vZGUiLCJmcmFnIiwidG9NYXJrdXAiLCJtYXJrdXAiLCJ0b1RleHQiLCJjcmVhdGVDbGFzcyIsImNscyIsImluaXROb2RlIiwiZ2V0Q29sb3IiLCJfdG9Ob2RlIiwic2V0QXR0cmlidXRlIiwiX3RvTWFya3VwIiwic3R5bGVzIiwiZG9tVHJlZV9TcGFuIiwiU3BhbiIsImRvbVRyZWVfQW5jaG9yIiwiQW5jaG9yIiwiX3Byb3RvMiIsImRvbVRyZWVfSW1nIiwiSW1nIiwiX3Byb3RvMyIsImlDb21iaW5hdGlvbnMiLCLDriIsIsOvIiwiw60iLCLDrCIsImRvbVRyZWVfU3ltYm9sTm9kZSIsIlN5bWJvbE5vZGUiLCJpdGFsaWMiLCJza2V3IiwiX2kiLCJzY3JpcHRGcm9tQ29kZXBvaW50IiwiX3Byb3RvNCIsIm1hcmdpblJpZ2h0IiwibmVlZHNTcGFuIiwiU3ZnTm9kZSIsIl9wcm90bzUiLCJkb21UcmVlX1BhdGhOb2RlIiwiUGF0aE5vZGUiLCJwYXRoTmFtZSIsImFsdGVybmF0ZSIsIl9wcm90bzYiLCJMaW5lTm9kZSIsIl9wcm90bzciLCJhc3NlcnRTeW1ib2xEb21Ob2RlIiwiZm9udE1ldHJpY3NEYXRhIiwiQU1TLVJlZ3VsYXIiLCI2NSIsIjY2IiwiNjciLCI2OCIsIjY5IiwiNzAiLCI3MSIsIjcyIiwiNzMiLCI3NCIsIjc1IiwiNzYiLCI3NyIsIjc4IiwiNzkiLCI4MCIsIjgxIiwiODIiLCI4MyIsIjg0IiwiODUiLCI4NiIsIjg3IiwiODgiLCI4OSIsIjkwIiwiMTA3IiwiMTY1IiwiMTc0IiwiMjQwIiwiMjk1IiwiNzEwIiwiNzMyIiwiNzcwIiwiNzcxIiwiOTg5IiwiMTAwOCIsIjgyNDUiLCI4NDYzIiwiODQ4NyIsIjg0OTgiLCI4NTAyIiwiODUwMyIsIjg1MDQiLCI4NTEzIiwiODU5MiIsIjg1OTQiLCI4NjAyIiwiODYwMyIsIjg2MDYiLCI4NjA4IiwiODYxMCIsIjg2MTEiLCI4NjE5IiwiODYyMCIsIjg2MjEiLCI4NjIyIiwiODYyNCIsIjg2MjUiLCI4NjMwIiwiODYzMSIsIjg2MzQiLCI4NjM1IiwiODYzOCIsIjg2MzkiLCI4NjQyIiwiODY0MyIsIjg2NDQiLCI4NjQ2IiwiODY0NyIsIjg2NDgiLCI4NjQ5IiwiODY1MCIsIjg2NTEiLCI4NjUyIiwiODY1MyIsIjg2NTQiLCI4NjU1IiwiODY2NiIsIjg2NjciLCI4NjY5IiwiODY3MiIsIjg2NzQiLCI4NzA1IiwiODcwOCIsIjg3MDkiLCI4NzE3IiwiODcyMiIsIjg3MjQiLCI4NzI2IiwiODczMyIsIjg3MzYiLCI4NzM3IiwiODczOCIsIjg3MzkiLCI4NzQwIiwiODc0MSIsIjg3NDIiLCI4NzU2IiwiODc1NyIsIjg3NjQiLCI4NzY1IiwiODc2OSIsIjg3NzAiLCI4Nzc0IiwiODc3NiIsIjg3NzgiLCI4NzgyIiwiODc4MyIsIjg3ODUiLCI4Nzg2IiwiODc4NyIsIjg3OTAiLCI4NzkxIiwiODc5NiIsIjg4MDYiLCI4ODA3IiwiODgwOCIsIjg4MDkiLCI4ODEyIiwiODgxNCIsIjg4MTUiLCI4ODE2IiwiODgxNyIsIjg4MTgiLCI4ODE5IiwiODgyMiIsIjg4MjMiLCI4ODI4IiwiODgyOSIsIjg4MzAiLCI4ODMxIiwiODgzMiIsIjg4MzMiLCI4ODQwIiwiODg0MSIsIjg4NDIiLCI4ODQzIiwiODg0NyIsIjg4NDgiLCI4ODU4IiwiODg1OSIsIjg4NjEiLCI4ODYyIiwiODg2MyIsIjg4NjQiLCI4ODY1IiwiODg3MiIsIjg4NzMiLCI4ODc0IiwiODg3NiIsIjg4NzciLCI4ODc4IiwiODg3OSIsIjg4ODIiLCI4ODgzIiwiODg4NCIsIjg4ODUiLCI4ODg4IiwiODg5MCIsIjg4OTEiLCI4ODkyIiwiODkwMSIsIjg5MDMiLCI4OTA1IiwiODkwNiIsIjg5MDciLCI4OTA4IiwiODkwOSIsIjg5MTAiLCI4OTExIiwiODkxMiIsIjg5MTMiLCI4OTE0IiwiODkxNSIsIjg5MTYiLCI4OTE4IiwiODkxOSIsIjg5MjAiLCI4OTIxIiwiODkyMiIsIjg5MjMiLCI4OTI2IiwiODkyNyIsIjg5MjgiLCI4OTI5IiwiODkzNCIsIjg5MzUiLCI4OTM2IiwiODkzNyIsIjg5MzgiLCI4OTM5IiwiODk0MCIsIjg5NDEiLCI4OTk0IiwiODk5NSIsIjk0MTYiLCI5NDg0IiwiOTQ4OCIsIjk0OTIiLCI5NDk2IiwiOTU4NSIsIjk1ODYiLCI5NjMyIiwiOTYzMyIsIjk2NTAiLCI5NjUxIiwiOTY1NCIsIjk2NjAiLCI5NjYxIiwiOTY2NCIsIjk2NzQiLCI5NzMzIiwiMTAwMDMiLCIxMDAxNiIsIjEwNzMxIiwiMTA4NDYiLCIxMDg3NyIsIjEwODc4IiwiMTA4ODUiLCIxMDg4NiIsIjEwODg3IiwiMTA4ODgiLCIxMDg4OSIsIjEwODkwIiwiMTA4OTEiLCIxMDg5MiIsIjEwOTAxIiwiMTA5MDIiLCIxMDkzMyIsIjEwOTM0IiwiMTA5MzUiLCIxMDkzNiIsIjEwOTM3IiwiMTA5MzgiLCIxMDk0OSIsIjEwOTUwIiwiMTA5NTUiLCIxMDk1NiIsIjU3MzUwIiwiNTczNTEiLCI1NzM1MiIsIjU3MzUzIiwiNTczNTYiLCI1NzM1NyIsIjU3MzU4IiwiNTczNTkiLCI1NzM2MCIsIjU3MzYxIiwiNTczNjYiLCI1NzM2NyIsIjU3MzY4IiwiNTczNjkiLCI1NzM3MCIsIjU3MzcxIiwiQ2FsaWdyYXBoaWMtUmVndWxhciIsIjQ4IiwiNDkiLCI1MCIsIjUxIiwiNTIiLCI1MyIsIjU0IiwiNTUiLCI1NiIsIjU3IiwiRnJha3R1ci1SZWd1bGFyIiwiMzMiLCIzNCIsIjM4IiwiMzkiLCI0MCIsIjQxIiwiNDIiLCI0MyIsIjQ0IiwiNDUiLCI0NiIsIjQ3IiwiNTgiLCI1OSIsIjYxIiwiNjMiLCI5MSIsIjkzIiwiOTQiLCI5NyIsIjk4IiwiOTkiLCIxMDAiLCIxMDEiLCIxMDIiLCIxMDMiLCIxMDQiLCIxMDUiLCIxMDYiLCIxMDgiLCIxMDkiLCIxMTAiLCIxMTEiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCI4MjE2IiwiODIxNyIsIjU4MTEyIiwiNTgxMTMiLCI1ODExNCIsIjU4MTE1IiwiNTgxMTYiLCI1ODExNyIsIjU4MTE4IiwiNTgxMTkiLCJNYWluLUJvbGQiLCIzNSIsIjM2IiwiMzciLCI2MCIsIjYyIiwiNjQiLCI5MiIsIjk1IiwiMTIzIiwiMTI0IiwiMTI1IiwiMTI2IiwiMTY4IiwiMTcyIiwiMTc2IiwiMTc3IiwiMTg0IiwiMTk4IiwiMjE1IiwiMjE2IiwiMjIzIiwiMjMwIiwiMjQ3IiwiMjQ4IiwiMzA1IiwiMzM4IiwiMzM5IiwiNTY3IiwiNzExIiwiNzEzIiwiNzE0IiwiNzE1IiwiNzI4IiwiNzI5IiwiNzMwIiwiNzMzIiwiOTE1IiwiOTE2IiwiOTIwIiwiOTIzIiwiOTI2IiwiOTI4IiwiOTMxIiwiOTMzIiwiOTM0IiwiOTM2IiwiOTM3IiwiODIxMSIsIjgyMTIiLCI4MjIwIiwiODIyMSIsIjgyMjQiLCI4MjI1IiwiODI0MiIsIjg0MDciLCI4NDY1IiwiODQ2NyIsIjg0NzIiLCI4NDc2IiwiODUwMSIsIjg1OTMiLCI4NTk1IiwiODU5NiIsIjg1OTciLCI4NTk4IiwiODU5OSIsIjg2MDAiLCI4NjAxIiwiODYzNiIsIjg2MzciLCI4NjQwIiwiODY0MSIsIjg2NTYiLCI4NjU3IiwiODY1OCIsIjg2NTkiLCI4NjYwIiwiODY2MSIsIjg3MDQiLCI4NzA2IiwiODcwNyIsIjg3MTEiLCI4NzEyIiwiODcxNSIsIjg3MjMiLCI4NzI1IiwiODcyNyIsIjg3MjgiLCI4NzI5IiwiODczMCIsIjg3MzQiLCI4NzQzIiwiODc0NCIsIjg3NDUiLCI4NzQ2IiwiODc0NyIsIjg3NjgiLCI4NzcxIiwiODc4MSIsIjg4MDEiLCI4ODA0IiwiODgwNSIsIjg4MTAiLCI4ODExIiwiODgyNiIsIjg4MjciLCI4ODM0IiwiODgzNSIsIjg4MzgiLCI4ODM5IiwiODg0NiIsIjg4NDkiLCI4ODUwIiwiODg1MSIsIjg4NTIiLCI4ODUzIiwiODg1NCIsIjg4NTUiLCI4ODU2IiwiODg1NyIsIjg4NjYiLCI4ODY3IiwiODg2OCIsIjg4NjkiLCI4OTAwIiwiODkwMiIsIjg5NjgiLCI4OTY5IiwiODk3MCIsIjg5NzEiLCI5NjU3IiwiOTY2NyIsIjk3MTEiLCI5ODI0IiwiOTgyNSIsIjk4MjYiLCI5ODI3IiwiOTgzNyIsIjk4MzgiLCI5ODM5IiwiMTAyMTYiLCIxMDIxNyIsIjEwODE1IiwiMTA5MjciLCIxMDkyOCIsIjU3Mzc2IiwiTWFpbi1Cb2xkSXRhbGljIiwiMTYzIiwiTWFpbi1JdGFsaWMiLCJNYWluLVJlZ3VsYXIiLCIzMiIsIjE2MCIsIjE2NyIsIjE4MiIsIjgyMzAiLCI4NjE0IiwiODYxNyIsIjg2MTgiLCI4NzczIiwiODc4NCIsIjg5MDQiLCI4OTQyIiwiODk0MyIsIjg5NDUiLCI5MTM2IiwiOTEzNyIsIjEwMjIyIiwiMTAyMjMiLCIxMDIyOSIsIjEwMjMwIiwiMTAyMzEiLCIxMDIzMiIsIjEwMjMzIiwiMTAyMzQiLCIxMDIzNiIsIk1hdGgtQm9sZEl0YWxpYyIsIjk0NSIsIjk0NiIsIjk0NyIsIjk0OCIsIjk0OSIsIjk1MCIsIjk1MSIsIjk1MiIsIjk1MyIsIjk1NCIsIjk1NSIsIjk1NiIsIjk1NyIsIjk1OCIsIjk1OSIsIjk2MCIsIjk2MSIsIjk2MiIsIjk2MyIsIjk2NCIsIjk2NSIsIjk2NiIsIjk2NyIsIjk2OCIsIjk2OSIsIjk3NyIsIjk4MSIsIjk4MiIsIjEwMDkiLCIxMDEzIiwiTWF0aC1JdGFsaWMiLCJNYXRoLVJlZ3VsYXIiLCJTYW5zU2VyaWYtQm9sZCIsIjE4MCIsIlNhbnNTZXJpZi1JdGFsaWMiLCJTYW5zU2VyaWYtUmVndWxhciIsIlNjcmlwdC1SZWd1bGFyIiwiU2l6ZTEtUmVndWxhciIsIjgyMTQiLCI4NzE5IiwiODcyMCIsIjg3MjEiLCI4NzQ4IiwiODc0OSIsIjg3NTAiLCI4ODk2IiwiODg5NyIsIjg4OTgiLCI4ODk5IiwiOTE2OCIsIjEwNzUyIiwiMTA3NTMiLCIxMDc1NCIsIjEwNzU2IiwiMTA3NTgiLCJTaXplMi1SZWd1bGFyIiwiU2l6ZTMtUmVndWxhciIsIlNpemU0LVJlZ3VsYXIiLCI5MTE1IiwiOTExNiIsIjkxMTciLCI5MTE4IiwiOTExOSIsIjkxMjAiLCI5MTIxIiwiOTEyMiIsIjkxMjMiLCI5MTI0IiwiOTEyNSIsIjkxMjYiLCI5MTI3IiwiOTEyOCIsIjkxMjkiLCI5MTMwIiwiOTEzMSIsIjkxMzIiLCI5MTMzIiwiOTE0MyIsIjU3MzQ0IiwiNTczNDUiLCI1NzY4MCIsIjU3NjgxIiwiNTc2ODIiLCI1NzY4MyIsIlR5cGV3cml0ZXItUmVndWxhciIsIjk2IiwiMTI3IiwiNzc2IiwiOTI1MSIsInNpZ21hc0FuZFhpcyIsInNsYW50Iiwic3RyZXRjaCIsInNocmluayIsInF1YWQiLCJleHRyYVNwYWNlIiwibnVtMSIsIm51bTIiLCJudW0zIiwiZGVub20xIiwiZGVub20yIiwic3VwMSIsInN1cDIiLCJzdXAzIiwic3ViMSIsInN1YjIiLCJzdXBEcm9wIiwic3ViRHJvcCIsImRlbGltMSIsImRlbGltMiIsImF4aXNIZWlnaHQiLCJkZWZhdWx0UnVsZVRoaWNrbmVzcyIsImJpZ09wU3BhY2luZzEiLCJiaWdPcFNwYWNpbmcyIiwiYmlnT3BTcGFjaW5nMyIsImJpZ09wU3BhY2luZzQiLCJiaWdPcFNwYWNpbmc1Iiwic3FydFJ1bGVUaGlja25lc3MiLCJwdFBlckVtIiwiZG91YmxlUnVsZVNlcCIsImFycmF5UnVsZVdpZHRoIiwiZmJveHNlcCIsImZib3hydWxlIiwiZXh0cmFDaGFyYWN0ZXJNYXAiLCLDhSIsIsOHIiwiw5AiLCLDniIsIsOlIiwiw6ciLCLDsCIsIsO+Iiwi0JAiLCLQkSIsItCSIiwi0JMiLCLQlCIsItCVIiwi0JYiLCLQlyIsItCYIiwi0JkiLCLQmiIsItCbIiwi0JwiLCLQnSIsItCeIiwi0J8iLCLQoCIsItChIiwi0KIiLCLQoyIsItCkIiwi0KUiLCLQpiIsItCnIiwi0KgiLCLQqSIsItCqIiwi0KsiLCLQrCIsItCtIiwi0K4iLCLQryIsItCwIiwi0LEiLCLQsiIsItCzIiwi0LQiLCLQtSIsItC2Iiwi0LciLCLQuCIsItC5Iiwi0LoiLCLQuyIsItC8Iiwi0L0iLCLQviIsItC/Iiwi0YAiLCLRgSIsItGCIiwi0YMiLCLRhCIsItGFIiwi0YYiLCLRhyIsItGIIiwi0YkiLCLRiiIsItGLIiwi0YwiLCLRjSIsItGOIiwi0Y8iLCJnZXRDaGFyYWN0ZXJNZXRyaWNzIiwiZm9udCIsIm1ldHJpY3MiLCJmb250TWV0cmljc0J5U2l6ZUluZGV4IiwiQVRPTVMiLCJiaW4iLCJwdW5jdCIsIk5PTl9BVE9NUyIsImFjY2VudC10b2tlbiIsIm1hdGhvcmQiLCJvcC10b2tlbiIsInRleHRvcmQiLCJzcmNfc3ltYm9scyIsImRlZmluZVN5bWJvbCIsImFjY2VwdFVuaWNvZGVDaGFyIiwibWFpbiIsImFtcyIsImxpZ2F0dXJlcyIsIi0tIiwiLS0tIiwiYGAiLCInJyIsInN5bWJvbHNfaSIsInN5bWJvbHNfY2giLCJzcmNfc3ltYm9sc19pIiwiX2NoIiwibGV0dGVycyIsInN5bWJvbHNfaTIiLCJfY2gyIiwic3ltYm9sc193aWRlQ2hhciIsInN5bWJvbHNfaTMiLCJfY2gzIiwic3ltYm9sc19pNCIsIl9jaDQiLCJfaTUiLCJfY2g1Iiwid2lkZUxhdGluTGV0dGVyRGF0YSIsIndpZGVOdW1lcmFsRGF0YSIsInNpemVTdHlsZU1hcCIsInNpemVNdWx0aXBsaWVycyIsInNpemVBdFN0eWxlIiwiT3B0aW9uc19PcHRpb25zIiwiT3B0aW9ucyIsInRleHRTaXplIiwicGhhbnRvbSIsImZvbnRTaGFwZSIsInNpemVNdWx0aXBsaWVyIiwiX2ZvbnRNZXRyaWNzIiwiQkFTRVNJWkUiLCJleHRlbmQiLCJleHRlbnNpb24iLCJoYXZpbmdTdHlsZSIsImhhdmluZ0NyYW1wZWRTdHlsZSIsImhhdmluZ1NpemUiLCJoYXZpbmdCYXNlU3R5bGUiLCJ3YW50U2l6ZSIsImhhdmluZ0Jhc2VTaXppbmciLCJ3aXRoQ29sb3IiLCJ3aXRoUGhhbnRvbSIsIndpdGhGb250Iiwid2l0aFRleHRGb250RmFtaWx5Iiwid2l0aFRleHRGb250V2VpZ2h0Iiwid2l0aFRleHRGb250U2hhcGUiLCJzaXppbmdDbGFzc2VzIiwib2xkT3B0aW9ucyIsImJhc2VTaXppbmdDbGFzc2VzIiwiZm9udE1ldHJpY3MiLCJzaXplSW5kZXgiLCJjc3NFbVBlck11IiwiZ2V0R2xvYmFsTWV0cmljcyIsInNyY19PcHRpb25zIiwicHRQZXJVbml0IiwicHQiLCJtbSIsImNtIiwiYnAiLCJwYyIsImRkIiwiY2MiLCJuZCIsIm5jIiwic3AiLCJweCIsInJlbGF0aXZlVW5pdCIsImV4IiwiZW0iLCJtdSIsInZhbGlkVW5pdCIsInVuaXQiLCJ1bml0c19jYWxjdWxhdGVTaXplIiwic2l6ZVZhbHVlIiwidW5pdE9wdGlvbnMiLCJtYXRoaXRMZXR0ZXJzIiwiYnVpbGRDb21tb25fbG9va3VwU3ltYm9sIiwiZm9udE5hbWUiLCJidWlsZENvbW1vbl9tYWtlU3ltYm9sIiwic3ltYm9sTm9kZSIsImxvb2t1cCIsImJ1aWxkQ29tbW9uX2NhbkNvbWJpbmUiLCJfc3R5bGUiLCJzaXplRWxlbWVudEZyb21DaGlsZHJlbiIsImJ1aWxkQ29tbW9uX21ha2VTcGFuIiwiYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4iLCJidWlsZENvbW1vbl9tYWtlRnJhZ21lbnQiLCJyZXRyaWV2ZVRleHRGb250TmFtZSIsImJhc2VGb250TmFtZSIsImZvbnRNYXAiLCJtYXRoYmYiLCJtYXRocm0iLCJ0ZXh0aXQiLCJtYXRoaXQiLCJtYXRoYmIiLCJtYXRoY2FsIiwibWF0aGZyYWsiLCJtYXRoc2NyIiwibWF0aHNmIiwibWF0aHR0Iiwic3ZnRGF0YSIsImJ1aWxkQ29tbW9uIiwibWFrZVN5bWJvbCIsIm1hdGhzeW0iLCJtYWtlU3BhbiIsIm1ha2VTdmdTcGFuIiwibWFrZUxpbmVTcGFuIiwidGhpY2tuZXNzIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJtYWtlQW5jaG9yIiwiYW5jaG9yIiwibWFrZUZyYWdtZW50Iiwid3JhcEZyYWdtZW50IiwibWFrZVZMaXN0IiwicGFyYW1zIiwiX2dldFZMaXN0Q2hpbGRyZW5BbmREIiwicG9zaXRpb25UeXBlIiwib2xkQ2hpbGRyZW4iLCJfZGVwdGgiLCJjdXJyUG9zIiwiZGlmZiIsImJvdHRvbSIsInBvc2l0aW9uRGF0YSIsImdldFZMaXN0Q2hpbGRyZW5BbmREZXB0aCIsInBzdHJ1dFNpemUiLCJwc3RydXQiLCJyZWFsQ2hpbGRyZW4iLCJtaW5Qb3MiLCJtYXhQb3MiLCJfaTIiLCJfY2hpbGQiLCJfZWxlbSIsIndyYXBwZXJDbGFzc2VzIiwid3JhcHBlclN0eWxlIiwiY2hpbGRXcmFwIiwibWFyZ2luTGVmdCIsInZsaXN0IiwiZW1wdHlTcGFuIiwiZGVwdGhTdHJ1dCIsInRvcFN0cnV0IiwidnRhYmxlIiwibWFrZU9yZCIsImlzRm9udCIsImZvbnRPckZhbWlseSIsIl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVDaGFyIiwiY29kZVBvaW50IiwiZmxvb3IiLCJ3aWRlX2NoYXJhY3Rlcl93aWRlQ2hhcmFjdGVyRm9udCIsIndpZGVGb250TmFtZSIsIndpZGVGb250Q2xhc3MiLCJmb250Q2xhc3NlcyIsImZvbnREYXRhIiwiZm9udENsYXNzIiwiYm9sZHN5bWJvbCIsInBhcnRzIiwiZm9udExvb2t1cCIsImJ1aWxkQ29tbW9uX21hdGhkZWZhdWx0IiwiX2ZvbnROYW1lIiwiX2ZvbnROYW1lMyIsIl9mb250TmFtZTIiLCJtYWtlR2x1ZSIsIm1lYXN1cmVtZW50Iiwic3RhdGljU3ZnIiwiX3N2Z0RhdGEkdmFsdWUiLCJzdmdOb2RlIiwidHJ5Q29tYmluZUNoYXJzIiwiYXNzZXJ0Tm9kZVR5cGUiLCJ0eXBlZE5vZGUiLCJjaGVja05vZGVUeXBlIiwiYXNzZXJ0QXRvbUZhbWlseSIsImZhbWlseSIsImNoZWNrQXRvbUZhbWlseSIsImFzc2VydFN5bWJvbE5vZGVUeXBlIiwiY2hlY2tTeW1ib2xOb2RlVHlwZSIsInRoaW5zcGFjZSIsIm1lZGl1bXNwYWNlIiwidGhpY2tzcGFjZSIsInNwYWNpbmdzIiwibW9yZCIsIm1vcCIsIm1iaW4iLCJtcmVsIiwibWlubmVyIiwibW9wZW4iLCJtY2xvc2UiLCJtcHVuY3QiLCJ0aWdodFNwYWNpbmdzIiwiX2Z1bmN0aW9ucyIsIl9odG1sR3JvdXBCdWlsZGVycyIsIl9tYXRobWxHcm91cEJ1aWxkZXJzIiwiZGVmaW5lRnVuY3Rpb24iLCJfcmVmIiwibmFtZXMiLCJodG1sQnVpbGRlciIsIm1hdGhtbEJ1aWxkZXIiLCJudW1BcmdzIiwiYXJnVHlwZXMiLCJncmVlZGluZXNzIiwiYWxsb3dlZEluVGV4dCIsImFsbG93ZWRJbk1hdGgiLCJudW1PcHRpb25hbEFyZ3MiLCJpbmZpeCIsImRlZmluZUZ1bmN0aW9uQnVpbGRlcnMiLCJfcmVmMiIsImRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50IiwiYnVpbGRIVE1MX21ha2VTcGFuIiwiYmluTGVmdENhbmNlbGxlciIsImJpblJpZ2h0Q2FuY2VsbGVyIiwic3R5bGVNYXAiLCJzY3JpcHRzY3JpcHQiLCJEb21FbnVtIiwiYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbiIsImlzUmVhbEdyb3VwIiwic3Vycm91bmRpbmciLCJncm91cHMiLCJidWlsZEhUTUxfYnVpbGRHcm91cCIsImdsdWVPcHRpb25zIiwiZHVtbXlQcmV2IiwiZHVtbXlOZXh0IiwidHJhdmVyc2VOb25TcGFjZU5vZGVzIiwicHJldlR5cGUiLCJnZXRUeXBlT2ZEb21UcmVlIiwiY2FsbGJhY2siLCJwYXJ0aWFsR3JvdXAiLCJidWlsZEhUTUxfY2hlY2tQYXJ0aWFsR3JvdXAiLCJnZXRPdXRlcm1vc3ROb2RlIiwibWFrZU51bGxEZWxpbWl0ZXIiLCJtb3JlQ2xhc3NlcyIsImJhc2VPcHRpb25zIiwiZ3JvdXBOb2RlIiwibXVsdGlwbGllciIsImJ1aWxkSFRNTFVuYnJlYWthYmxlIiwic3RydXQiLCJ2ZXJ0aWNhbEFsaWduIiwiYnVpbGRIVE1MIiwidGFnQ2hpbGQiLCJub2JyZWFrIiwiaHRtbE5vZGUiLCJuZXdEb2N1bWVudEZyYWdtZW50IiwibWF0aE1MVHJlZV9NYXRoTm9kZSIsIk1hdGhOb2RlIiwiZ2V0QXR0cmlidXRlIiwibWF0aE1MVHJlZV9UZXh0Tm9kZSIsIlRleHROb2RlIiwibWF0aE1MVHJlZSIsIlNwYWNlTm9kZSIsImJ1aWxkTWF0aE1MX21ha2VUZXh0IiwiYnVpbGRNYXRoTUxfbWFrZVJvdyIsImJ1aWxkTWF0aE1MX2dldFZhcmlhbnQiLCJidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24iLCJpc09yZGdyb3VwIiwiYnVpbGRNYXRoTUxfYnVpbGRHcm91cCIsImxhc3RHcm91cCIsIl9ncm91cCIsIl9sYXN0R3JvdXAkY2hpbGRyZW4iLCJfbGFzdEdyb3VwJGNoaWxkcmVuMiIsIl9sYXN0R3JvdXAkY2hpbGRyZW4zIiwibGFzdENoaWxkIiwiYnVpbGRFeHByZXNzaW9uUm93IiwiYnVpbGRNYXRoTUwiLCJ0ZXhFeHByZXNzaW9uIiwiZm9yTWF0aG1sT25seSIsIndyYXBwZXIiLCJhbm5vdGF0aW9uIiwic2VtYW50aWNzIiwid3JhcHBlckNsYXNzIiwiYnVpbGRUcmVlX29wdGlvbnNGcm9tU2V0dGluZ3MiLCJidWlsZFRyZWVfZGlzcGxheVdyYXAiLCJzdHJldGNoeUNvZGVQb2ludCIsIndpZGVoYXQiLCJ3aWRlY2hlY2siLCJ3aWRldGlsZGUiLCJ1dGlsZGUiLCJvdmVybGVmdGFycm93IiwidW5kZXJsZWZ0YXJyb3ciLCJ4bGVmdGFycm93Iiwib3ZlcnJpZ2h0YXJyb3ciLCJ1bmRlcnJpZ2h0YXJyb3ciLCJ4cmlnaHRhcnJvdyIsInVuZGVyYnJhY2UiLCJvdmVyYnJhY2UiLCJvdmVyZ3JvdXAiLCJ1bmRlcmdyb3VwIiwib3ZlcmxlZnRyaWdodGFycm93IiwidW5kZXJsZWZ0cmlnaHRhcnJvdyIsInhsZWZ0cmlnaHRhcnJvdyIsIk92ZXJyaWdodGFycm93IiwieFJpZ2h0YXJyb3ciLCJvdmVybGVmdGhhcnBvb24iLCJ4bGVmdGhhcnBvb251cCIsIm92ZXJyaWdodGhhcnBvb24iLCJ4cmlnaHRoYXJwb29udXAiLCJ4TGVmdGFycm93IiwieExlZnRyaWdodGFycm93IiwieGhvb2tsZWZ0YXJyb3ciLCJ4aG9va3JpZ2h0YXJyb3ciLCJ4bWFwc3RvIiwieHJpZ2h0aGFycG9vbmRvd24iLCJ4bGVmdGhhcnBvb25kb3duIiwieHJpZ2h0bGVmdGhhcnBvb25zIiwieGxlZnRyaWdodGhhcnBvb25zIiwieHR3b2hlYWRsZWZ0YXJyb3ciLCJ4dHdvaGVhZHJpZ2h0YXJyb3ciLCJ4bG9uZ2VxdWFsIiwieHRvZnJvbSIsInhyaWdodGxlZnRhcnJvd3MiLCJ4cmlnaHRlcXVpbGlicml1bSIsInhsZWZ0ZXF1aWxpYnJpdW0iLCJrYXRleEltYWdlc0RhdGEiLCJvdmVybGluZXNlZ21lbnQiLCJ1bmRlcmxpbmVzZWdtZW50IiwiZ3JvdXBMZW5ndGgiLCJzdHJldGNoeSIsInBhZCIsImltZyIsInRvdGFsSGVpZ2h0Iiwic3Ryb2tlLXdpZHRoIiwiX2J1aWxkU3ZnU3Bhbl8iLCJ2aWV3Qm94V2lkdGgiLCJ2aWV3Qm94SGVpZ2h0IiwiX2hlaWdodCIsIm51bUNoYXJzIiwiYmFzZSIsImltZ0luZGV4IiwibWluV2lkdGgiLCJ3aWR0aENsYXNzZXMiLCJhbGlnbnMiLCJzcGFucyIsInBhdGhzIiwiX21pbldpZHRoIiwiX3ZpZXdCb3hIZWlnaHQiLCJfaGVpZ2h0MiIsIm51bVN2Z0NoaWxkcmVuIiwiX3BhdGgiLCJfc3ZnTm9kZSIsIl9zcGFuIiwiYnVpbGRTdmdTcGFuXyIsImFjY2VudF9odG1sQnVpbGRlciIsImdycCIsInN1cFN1Ykdyb3VwIiwic3VwU3ViIiwiYXNzZXJ0U3BhbiIsImlzU2hpZnR5IiwiYmFzZUNoYXIiLCJhY2NlbnRCb2R5IiwiY2xlYXJhbmNlIiwiaXNTdHJldGNoeSIsImFjY2VudCIsImFjY2VudEZ1bGwiLCJhY2NlbnRXcmFwIiwiYWNjZW50X21hdGhtbEJ1aWxkZXIiLCJhY2NlbnROb2RlIiwiTk9OX1NUUkVUQ0hZX0FDQ0VOVF9SRUdFWCIsImZ1bmNOYW1lIiwiaW5uZXJHcm91cCIsImtlcm4iLCJhcnJvd19wYWRkZWROb2RlIiwib3B0QXJncyIsImJlbG93IiwibG93ZXJHcm91cCIsIm5ld09wdGlvbnMiLCJ1cHBlckdyb3VwIiwiYXJyb3dCb2R5IiwiYXJyb3dTaGlmdCIsInVwcGVyU2hpZnQiLCJsb3dlclNoaWZ0IiwiYXJyb3dOb2RlIiwidXBwZXJOb2RlIiwibG93ZXJOb2RlIiwiX2xvd2VyTm9kZSIsImNvbG9yX2h0bWxCdWlsZGVyIiwiY29sb3JfbWF0aG1sQnVpbGRlciIsImJyZWFrT25Ub2tlblRleHQiLCJndWxsZXQiLCJzZXQiLCJwYXJzZUV4cHJlc3Npb24iLCJuZXdSb3ciLCJuZXdMaW5lIiwibWFyZ2luVG9wIiwiZGVsaW1pdGVyX2dldE1ldHJpY3MiLCJkZWxpbWl0ZXJfc3R5bGVXcmFwIiwiZGVsaW0iLCJ0b1N0eWxlIiwiZGVsaW1TaXplTXVsdGlwbGllciIsImNlbnRlclNwYW4iLCJkZWxpbWl0ZXJfbWFrZUxhcmdlRGVsaW0iLCJjZW50ZXIiLCJkZWxpbWl0ZXJfbWF0aHJtU2l6ZSIsImRlbGltaXRlcl9tYWtlSW5uZXIiLCJzaXplQ2xhc3MiLCJsYXAiLCJkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbSIsImhlaWdodFRvdGFsIiwibWlkZGxlIiwidG9wTWV0cmljcyIsInRvcEhlaWdodFRvdGFsIiwicmVwZWF0TWV0cmljcyIsInJlcGVhdEhlaWdodFRvdGFsIiwiYm90dG9tTWV0cmljcyIsImJvdHRvbUhlaWdodFRvdGFsIiwibWlkZGxlSGVpZ2h0VG90YWwiLCJtaWRkbGVGYWN0b3IiLCJtaWRkbGVNZXRyaWNzIiwibWluSGVpZ2h0IiwiY2VpbCIsInJlYWxIZWlnaHRUb3RhbCIsInNoaWZ0T2ZFeHRyYUVsZW1lbnQiLCJpbm5lcnMiLCJkZWxpbWl0ZXJfc3FydFN2ZyIsInNxcnROYW1lIiwiZXh0cmFWaW5pY3VsdW0iLCJoTGluZVBhZCIsInNxcnRNYWluIiwic3FydFNpemUxIiwic3FydFNpemUyIiwic3FydFNpemUzIiwic3FydFNpemU0Iiwic3FydFRhbGwiLCJzcXJ0UGF0aCIsInBhdGhOb2RlIiwic3RhY2tMYXJnZURlbGltaXRlcnMiLCJzdGFja0Fsd2F5c0RlbGltaXRlcnMiLCJzdGFja05ldmVyRGVsaW1pdGVycyIsInNpemVUb01heEhlaWdodCIsInN0YWNrTmV2ZXJEZWxpbWl0ZXJTZXF1ZW5jZSIsInN0YWNrQWx3YXlzRGVsaW1pdGVyU2VxdWVuY2UiLCJzdGFja0xhcmdlRGVsaW1pdGVyU2VxdWVuY2UiLCJkZWxpbVR5cGVUb0ZvbnQiLCJ0cmF2ZXJzZVNlcXVlbmNlIiwic2VxdWVuY2UiLCJoZWlnaHREZXB0aCIsImRlbGltaXRlcl9tYWtlQ3VzdG9tU2l6ZWREZWxpbSIsImRlbGltVHlwZSIsImRlbGltaXRlcl9tYWtlU21hbGxEZWxpbSIsImRlbGltaXRlciIsImFkdmFuY2VXaWR0aCIsInNwYW5IZWlnaHQiLCJ0ZXhIZWlnaHQiLCJydWxlV2lkdGgiLCJkZWxpbWl0ZXJFeHRlbmQiLCJtYXhEaXN0RnJvbUF4aXMiLCJkZWxpbWl0ZXJTaXplcyIsIlxcYmlnbCIsIm1jbGFzcyIsIlxcQmlnbCIsIlxcYmlnZ2wiLCJcXEJpZ2dsIiwiXFxiaWdyIiwiXFxCaWdyIiwiXFxiaWdnciIsIlxcQmlnZ3IiLCJcXGJpZ20iLCJcXEJpZ20iLCJcXGJpZ2dtIiwiXFxCaWdnbSIsIlxcYmlnIiwiXFxCaWciLCJcXGJpZ2ciLCJcXEJpZ2ciLCJkZWxpbWl0ZXJzIiwiY2hlY2tEZWxpbWl0ZXIiLCJzeW1EZWxpbSIsImFzc2VydFBhcnNlZCIsImxlZnRyaWdodERlcHRoIiwiZXhwZWN0IiwicGFyc2VGdW5jdGlvbiIsInJpZ2h0Q29sb3IiLCJsZWZ0RGVsaW0iLCJyaWdodERlbGltIiwiaW5uZXJIZWlnaHQiLCJpbm5lckRlcHRoIiwiaGFkTWlkZGxlIiwiaXNNaWRkbGUiLCJjb2xvck9wdGlvbnMiLCJsZWZ0Tm9kZSIsInJpZ2h0Tm9kZSIsIm1pZGRsZURlbGltIiwibWlkZGxlTm9kZSIsImVuY2xvc2VfaHRtbEJ1aWxkZXIiLCJpbWdTaGlmdCIsImlzU2luZ2xlQ2hhciIsInZlcnRQYWQiLCJydWxlVGhpY2tuZXNzIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJhY2tncm91bmRDb2xvciIsImVuY2xvc2VfbWF0aG1sQnVpbGRlciIsInRoayIsIl9yZWYzIiwiX3JlZjQiLCJfZW52aXJvbm1lbnRzIiwiZGVmaW5lRW52aXJvbm1lbnQiLCJnZXRITGluZXMiLCJobGluZUluZm8iLCJjb25zdW1lU3BhY2VzIiwibnh0IiwiZmV0Y2giLCJjb25zdW1lIiwicGFyc2VBcnJheSIsImhza2lwQmVmb3JlQW5kQWZ0ZXIiLCJhZGRKb3QiLCJhcnJheXN0cmV0Y2giLCJjb2xTZXBhcmF0aW9uVHlwZSIsImJlZ2luR3JvdXAiLCJleHBhbmRNYWNyb0FzVGV4dCIsInJvd0dhcHMiLCJoTGluZXNCZWZvcmVSb3ciLCJlbmRHcm91cCIsIm5leHRUb2tlbiIsImNyIiwiZENlbGxTdHlsZSIsImVudk5hbWUiLCJhcnJheV9odG1sQnVpbGRlciIsIm5yIiwiaGxpbmVzIiwiYXJyYXljb2xzZXAiLCJiYXNlbGluZXNraXAiLCJqb3QiLCJhcnJheXNraXAiLCJhcnN0cnV0SGVpZ2h0IiwiYXJzdHJ1dERlcHRoIiwic2V0SExpbmVQb3MiLCJobGluZXNJbkdhcCIsImlzRGFzaGVkIiwiaW5yb3ciLCJvdXRyb3ciLCJlbHQiLCJyb3dHYXAiLCJnYXAiLCJjb2xTZXAiLCJjb2xEZXNjck51bSIsImNvbERlc2NyaXB0aW9ucyIsImNvbERlc2NyIiwiZmlyc3RTZXBhcmF0b3IiLCJsaW5lVHlwZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJSaWdodFN0eWxlIiwibWFyZ2luIiwic2Vwd2lkdGgiLCJwcmVnYXAiLCJwb3N0Z2FwIiwidkxpc3RFbGVtcyIsImhsaW5lIiwibGluZVNoaWZ0IiwiYWxpZ25NYXAiLCJhcnJheV9tYXRobWxCdWlsZGVyIiwibWVuY2xvc2UiLCJjb2x1bW5MaW5lcyIsInByZXZUeXBlV2FzQWxpZ24iLCJpU3RhcnQiLCJpRW5kIiwiX2NvbHMiLCJyb3dMaW5lcyIsImFycmF5X2FsaWduZWRIYW5kbGVyIiwibnVtTWF0aHMiLCJudW1Db2xzIiwiZW1wdHlHcm91cCIsIm9yZGdyb3VwIiwiYXJnMCIsImlzQWxpZ25lZCIsIl9pMyIsImN1ck1hdGhzIiwiX2k0IiwibmRlIiwiY2EiLCJtYXRyaXgiLCJwbWF0cml4IiwiYm1hdHJpeCIsIkJtYXRyaXgiLCJ2bWF0cml4IiwiVm1hdHJpeCIsInNyY19lbnZpcm9ubWVudHMiLCJuYW1lR3JvdXAiLCJlbnYiLCJfcGFyc2VyJHBhcnNlQXJndW1lbnQiLCJwYXJzZUFyZ3VtZW50cyIsIl9hcmdzIiwiZW5kTmFtZVRva2VuIiwibWNsYXNzX21ha2VTcGFuIiwibWNsYXNzX2h0bWxCdWlsZGVyIiwibWNsYXNzX21hdGhtbEJ1aWxkZXIiLCJsc3BhY2UiLCJyc3BhY2UiLCJiaW5yZWxDbGFzcyIsImF0b20iLCJiYXNlQXJnIiwic2hpZnRlZEFyZyIsImJhc2VPcCIsImxpbWl0cyIsImFsd2F5c0hhbmRsZVN1cFN1YiIsInBhcmVudElzU3VwU3ViIiwic3VwcHJlc3NCYXNlU2hpZnQiLCJzdXBzdWIiLCJmb250X2h0bWxCdWlsZGVyIiwiZm9udF9tYXRobWxCdWlsZGVyIiwiZm9udEFsaWFzZXMiLCJcXEJiYiIsIlxcYm9sZCIsIlxcZnJhayIsIlxcYm0iLCJmdW5jIiwiZ2VuZnJhY19hZGp1c3RTdHlsZSIsIm9yaWdpbmFsU3R5bGUiLCJnZW5mcmFjX2h0bWxCdWlsZGVyIiwibnN0eWxlIiwiZHN0eWxlIiwibnVtZXJtIiwibnVtZXIiLCJjb250aW51ZWQiLCJoU3RydXQiLCJkU3RydXQiLCJydWxlU3BhY2luZyIsIm51bVNoaWZ0IiwiZGVub21TaGlmdCIsImZyYWMiLCJkZWxpbVNpemUiLCJkZW5vbW0iLCJkZW5vbSIsImhhc0JhckxpbmUiLCJiYXJTaXplIiwibWlkU2hpZnQiLCJjYW5kaWRhdGVDbGVhcmFuY2UiLCJnZW5mcmFjX21hdGhtbEJ1aWxkZXIiLCJpc0Rpc3BsYXkiLCJ3aXRoRGVsaW1zIiwibGVmdE9wIiwicmlnaHRPcCIsInJlcGxhY2VXaXRoIiwic3R5bEFycmF5IiwiZGVsaW1Gcm9tVmFsdWUiLCJkZWxpbVN0cmluZyIsImJhck5vZGUiLCJpc0JsYW5rIiwic3R5bCIsInRleHRPcmQiLCJfcmVmNSIsImFzc2VydCIsImhvcml6QnJhY2VfaHRtbEJ1aWxkZXIiLCJicmFjZUJvZHkiLCJpc092ZXIiLCJ2U3BhbiIsImNvbW1hbmQiLCJmb3JtYXRVbnN1cHBvcnRlZENtZCIsIm1hdGhtbCIsImluY2x1ZGVncmFwaGljc19zaXplRGF0YSIsInRvdGFsaGVpZ2h0Iiwia2V5VmFsIiwibWF0aEZ1bmN0aW9uIiwibXVVbml0IiwiZGltZW5zaW9uIiwiYWxpZ25tZW50IiwiZml4Iiwib3V0ZXJNb2RlIiwic3dpdGNoTW9kZSIsIm1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlIiwiYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIiLCJzdXBHcm91cCIsInN1Ykdyb3VwIiwiYmFzZVNoaWZ0IiwiZmluYWxHcm91cCIsIl9ib3R0b20iLCJub1N1Y2Nlc3NvciIsIm9wX2h0bWxCdWlsZGVyIiwiaGFzTGltaXRzIiwibGFyZ2UiLCJzdGFzaCIsIm92YWwiLCJvcF9tYXRobWxCdWlsZGVyIiwic2luZ2xlQ2hhckJpZ09wcyIsIuKIjyIsIuKIkCIsIuKIkSIsIuKLgCIsIuKLgSIsIuKLgiIsIuKLgyIsIuKogCIsIuKogSIsIuKogiIsIuKohCIsIuKohiIsImZOYW1lIiwic2luZ2xlQ2hhckludGVncmFscyIsIuKIqyIsIuKIrCIsIuKIrSIsIuKIriIsIuKIryIsIuKIsCIsIm9wZXJhdG9ybmFtZV9odG1sQnVpbGRlciIsImNoaWxkVGV4dCIsInNpemluZ0dyb3VwIiwiaXNBbGxTdHJpbmciLCJzZW1pc2ltcGxlIiwiYW1vdW50IiwiYm9yZGVyVG9wV2lkdGgiLCJzaXplRnVuY3MiLCJzbWFzaEhlaWdodCIsInNtYXNoRGVwdGgiLCJ0YkFyZyIsInNtYXNoZWROb2RlIiwidGhldGEiLCJwaGkiLCJsaW5lQ2xlYXJhbmNlIiwibWluRGVsaW1pdGVySGVpZ2h0IiwiX2RlbGltaXRlciRzcXJ0SW1hZ2UiLCJkZWxpbURlcHRoIiwicGFkZGluZ0xlZnQiLCJyb290bSIsInRvU2hpZnQiLCJyb290Vkxpc3QiLCJyb290Vkxpc3RXcmFwIiwic3R5bGluZ19zdHlsZU1hcCIsIm5ld1N0eWxlIiwiYnVpbGRlckRlbGVnYXRlIiwic3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUiLCJzdXBtIiwic3VibSIsIm1pblN1cFNoaWZ0IiwidmFsdWVCYXNlIiwidmFsdWVTdXAiLCJ2YWx1ZVN1YiIsInN1cFNoaWZ0Iiwic3ViU2hpZnQiLCJfbmV3T3B0aW9ucyIsImlzT2lpbnQiLCJtYXhXaWR0aCIsInBzaSIsInZsaXN0RWxlbSIsIl92bGlzdEVsZW0iLCJpc0JyYWNlIiwiaG9yaXpCcmFjZSIsIl9iYXNlMiIsIl9iYXNlIiwiZGVmYXVsdFZhcmlhbnQiLCJtaSIsIm1uIiwibXRleHQiLCJjc3NTcGFjZSIsIlxcbm9icmVhayIsIlxcYWxsb3dicmVhayIsInJlZ3VsYXJTcGFjZSIsIiAiLCJcXCAiLCJ+IiwiXFxzcGFjZSIsIlxcbm9icmVha3NwYWNlIiwib3JkIiwidGFnX3BhZCIsInBhZE5vZGUiLCJ0ZXh0Rm9udEZhbWlsaWVzIiwiXFx0ZXh0IiwiXFx0ZXh0cm0iLCJcXHRleHRzZiIsIlxcdGV4dHR0IiwiXFx0ZXh0bm9ybWFsIiwidGV4dEZvbnRXZWlnaHRzIiwiXFx0ZXh0YmYiLCJcXHRleHRtZCIsInRleHRGb250U2hhcGVzIiwiXFx0ZXh0aXQiLCJcXHRleHR1cCIsIm9wdGlvbnNXaXRoRm9udCIsIm1ha2VWZXJiIiwic3RhciIsInNyY19mdW5jdGlvbnMiLCJjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyIsInRva2VuUmVnZXhTdHJpbmciLCJMZXhlcl9MZXhlciIsIkxleGVyIiwidG9rZW5SZWdleCIsImNhdGNvZGVzIiwiJSIsInNldENhdGNvZGUiLCJsZXgiLCJubEluZGV4IiwiY29udHJvbE1hdGNoIiwiTmFtZXNwYWNlX05hbWVzcGFjZSIsIk5hbWVzcGFjZSIsImJ1aWx0aW5zIiwiZ2xvYmFsTWFjcm9zIiwidW5kZWZTdGFjayIsInVuZGVmcyIsInVuZGVmIiwiaGFzIiwiYnVpbHRpbk1hY3JvcyIsImRlZmluZU1hY3JvIiwidG9rZW5zIiwiY29uc3VtZUFyZ3MiLCJmdXR1cmUiLCJkaWdpdFRvTnVtYmVyIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkMiLCJEIiwiRSIsImYiLCJGIiwicG9wVG9rZW4iLCJkaWdpdCIsIm1hY3Jvc19kZWYiLCJtYWNyb3NfbmV3Y29tbWFuZCIsImV4aXN0c09LIiwibm9uZXhpc3RzT0siLCJleGlzdHMiLCJpc0RlZmluZWQiLCJhcmdUZXh0IiwiZXhwYW5kTmV4dFRva2VuIiwiZG90c0J5VG9rZW4iLCIsIiwiXFxub3QiLCIrIiwiPSIsIi0iLCIqIiwiOiIsIlxcRE9UU0IiLCJcXGNvcHJvZCIsIlxcYmlndmVlIiwiXFxiaWd3ZWRnZSIsIlxcYmlndXBsdXMiLCJcXGJpZ2NhcCIsIlxcYmlnY3VwIiwiXFxwcm9kIiwiXFxzdW0iLCJcXGJpZ290aW1lcyIsIlxcYmlnb3BsdXMiLCJcXGJpZ29kb3QiLCJcXGJpZ3NxY3VwIiwiXFxBbmQiLCJcXGxvbmdyaWdodGFycm93IiwiXFxMb25ncmlnaHRhcnJvdyIsIlxcbG9uZ2xlZnRhcnJvdyIsIlxcTG9uZ2xlZnRhcnJvdyIsIlxcbG9uZ2xlZnRyaWdodGFycm93IiwiXFxMb25nbGVmdHJpZ2h0YXJyb3ciLCJcXG1hcHN0byIsIlxcbG9uZ21hcHN0byIsIlxcaG9va3JpZ2h0YXJyb3ciLCJcXGRvdGVxIiwiXFxtYXRoYmluIiwiXFxtYXRocmVsIiwiXFxyZWxiYXIiLCJcXFJlbGJhciIsIlxceHJpZ2h0YXJyb3ciLCJcXHhsZWZ0YXJyb3ciLCJcXERPVFNJIiwiXFxpbnQiLCJcXG9pbnQiLCJcXGlpbnQiLCJcXGlpaW50IiwiXFxpaWlpbnQiLCJcXGlkb3RzaW50IiwiXFxET1RTWCIsInRoZWRvdHMiLCJleHBhbmRBZnRlckZ1dHVyZSIsInNwYWNlQWZ0ZXJEb3RzIiwiKSIsIl0iLCJcXHJicmFjayIsIlxcfSIsIlxccmJyYWNlIiwiXFxyYW5nbGUiLCJcXHJjZWlsIiwiXFxyZmxvb3IiLCJcXHJncm91cCIsIlxccm1vdXN0YWNoZSIsIlxccmlnaHQiLCI7IiwiLiIsImxhdGV4UmFpc2VBIiwiaW1wbGljaXRDb21tYW5kcyIsIlxccmVsYXgiLCJeIiwiXFxsaW1pdHMiLCJcXG5vbGltaXRzIiwiTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyIiwiTWFjcm9FeHBhbmRlciIsImV4cGFuc2lvbkNvdW50IiwiZmVlZCIsInB1c2hUb2tlbiIsInB1c2hUb2tlbnMiLCJfdGhpcyRzdGFjayIsInN0YXJ0T2ZBcmciLCJ0b2siLCJleHBhbmRPbmNlIiwidG9wVG9rZW4iLCJleHBhbnNpb24iLCJfZ2V0RXhwYW5zaW9uIiwiX3Rva2VucyIsImV4cGFuZGVkIiwiZXhwYW5kTWFjcm8iLCJvbGRTdGFja0xlbmd0aCIsInN0cmlwcGVkIiwiYm9keUxleGVyIiwidW5pY29kZUFjY2VudHMiLCLMgSIsIsyAIiwizIgiLCLMgyIsIsyEIiwizIYiLCLMjCIsIsyCIiwizIciLCLMiiIsIsyLIiwidW5pY29kZVN5bWJvbHMiLCLDoSIsIsOgIiwiw6QiLCLHnyIsIsOjIiwixIEiLCLEgyIsIuG6ryIsIuG6sSIsIuG6tSIsIseOIiwiw6IiLCLhuqUiLCLhuqciLCLhuqsiLCLIpyIsIsehIiwix7siLCLhuIMiLCLEhyIsIsSNIiwixIkiLCLEiyIsIsSPIiwi4biLIiwiw6kiLCLDqCIsIsOrIiwi4bq9IiwixJMiLCLhuJciLCLhuJUiLCLElSIsIsSbIiwiw6oiLCLhur8iLCLhu4EiLCLhu4UiLCLElyIsIuG4nyIsIse1Iiwi4bihIiwixJ8iLCLHpyIsIsSdIiwixKEiLCLhuKciLCLInyIsIsSlIiwi4bijIiwi4bivIiwixKkiLCLEqyIsIsStIiwix5AiLCLHsCIsIsS1Iiwi4bixIiwix6kiLCLEuiIsIsS+Iiwi4bi/Iiwi4bmBIiwixYQiLCLHuSIsIsOxIiwixYgiLCLhuYUiLCLDsyIsIsOyIiwiw7YiLCLIqyIsIsO1Iiwi4bmNIiwi4bmPIiwiyK0iLCLFjSIsIuG5kyIsIuG5kSIsIsWPIiwix5IiLCLDtCIsIuG7kSIsIuG7kyIsIuG7lyIsIsivIiwiyLEiLCLFkSIsIuG5lSIsIuG5lyIsIsWVIiwixZkiLCLhuZkiLCLFmyIsIuG5pSIsIsWhIiwi4bmnIiwixZ0iLCLhuaEiLCLhupciLCLFpSIsIuG5qyIsIsO6Iiwiw7kiLCLDvCIsIseYIiwix5wiLCLHliIsIseaIiwixakiLCLhubkiLCLFqyIsIuG5uyIsIsWtIiwix5QiLCLDuyIsIsWvIiwixbEiLCLhub0iLCLhuoMiLCLhuoEiLCLhuoUiLCLFtSIsIuG6hyIsIuG6mCIsIuG6jSIsIuG6iyIsIsO9Iiwi4buzIiwiw78iLCLhu7kiLCLIsyIsIsW3Iiwi4bqPIiwi4bqZIiwixboiLCLFviIsIuG6kSIsIsW8Iiwiw4EiLCLDgCIsIsOEIiwix54iLCLDgyIsIsSAIiwixIIiLCLhuq4iLCLhurAiLCLhurQiLCLHjSIsIsOCIiwi4bqkIiwi4bqmIiwi4bqqIiwiyKYiLCLHoCIsIse6Iiwi4biCIiwixIYiLCLEjCIsIsSIIiwixIoiLCLEjiIsIuG4iiIsIsOJIiwiw4giLCLDiyIsIuG6vCIsIsSSIiwi4biWIiwi4biUIiwixJQiLCLEmiIsIsOKIiwi4bq+Iiwi4buAIiwi4buEIiwixJYiLCLhuJ4iLCLHtCIsIuG4oCIsIsSeIiwix6YiLCLEnCIsIsSgIiwi4bimIiwiyJ4iLCLEpCIsIuG4oiIsIsONIiwiw4wiLCLDjyIsIuG4riIsIsSoIiwixKoiLCLErCIsIsePIiwiw44iLCLEsCIsIsS0Iiwi4biwIiwix6giLCLEuSIsIsS9Iiwi4bi+Iiwi4bmAIiwixYMiLCLHuCIsIsORIiwixYciLCLhuYQiLCLDkyIsIsOSIiwiw5YiLCLIqiIsIsOVIiwi4bmMIiwi4bmOIiwiyKwiLCLFjCIsIuG5kiIsIuG5kCIsIsWOIiwix5EiLCLDlCIsIuG7kCIsIuG7kiIsIuG7liIsIsiuIiwiyLAiLCLFkCIsIuG5lCIsIuG5liIsIsWUIiwixZgiLCLhuZgiLCLFmiIsIuG5pCIsIsWgIiwi4bmmIiwixZwiLCLhuaAiLCLFpCIsIuG5qiIsIsOaIiwiw5kiLCLDnCIsIseXIiwix5siLCLHlSIsIseZIiwixagiLCLhubgiLCLFqiIsIuG5uiIsIsWsIiwix5MiLCLDmyIsIsWuIiwixbAiLCLhubwiLCLhuoIiLCLhuoAiLCLhuoQiLCLFtCIsIuG6hiIsIuG6jCIsIuG6iiIsIsOdIiwi4buyIiwixbgiLCLhu7giLCLIsiIsIsW2Iiwi4bqOIiwixbkiLCLFvSIsIuG6kCIsIsW7IiwizqwiLCLhvbAiLCLhvrEiLCLhvrAiLCLOrSIsIuG9siIsIs6uIiwi4b20Iiwizq8iLCLhvbYiLCLPiiIsIs6QIiwi4b+SIiwi4b+RIiwi4b+QIiwiz4wiLCLhvbgiLCLPjSIsIuG9uiIsIs+LIiwizrAiLCLhv6IiLCLhv6EiLCLhv6AiLCLPjiIsIuG9vCIsIs6OIiwi4b+qIiwizqsiLCLhv6kiLCLhv6giLCLOjyIsIuG/uiIsIlBhcnNlcl9QYXJzZXIiLCJicmVha09uSW5maXgiLCJlbmRPZkV4cHJlc3Npb24iLCJwYXJzZUF0b20iLCJmb3JtTGlnYXR1cmVzIiwiaGFuZGxlSW5maXhOb2RlcyIsIm92ZXJJbmRleCIsIm51bWVyTm9kZSIsImRlbm9tTm9kZSIsIm51bWVyQm9keSIsImRlbm9tQm9keSIsImNhbGxGdW5jdGlvbiIsImhhbmRsZVN1cFN1YnNjcmlwdCIsInN5bWJvbFRva2VuIiwicGFyc2VHcm91cCIsIlNVUFNVQl9HUkVFRElORVNTIiwidGV4dG9yZEFycmF5Iiwic3VwZXJzY3JpcHQiLCJzdWJzY3JpcHQiLCJvcE5vZGUiLCJfbGltaXRzIiwicHJpbWUiLCJwcmltZXMiLCJmdW5jRGF0YSIsIl90aGlzJHBhcnNlQXJndW1lbnRzIiwidG90YWxBcmdzIiwiYmFzZUdyZWVkaW5lc3MiLCJhcmdUeXBlIiwiaXNPcHRpb25hbCIsInBhcnNlR3JvdXBPZlR5cGUiLCJwYXJzZUNvbG9yR3JvdXAiLCJwYXJzZVNpemVHcm91cCIsInBhcnNlVXJsR3JvdXAiLCJwYXJzZVN0cmluZ0dyb3VwIiwiZ3JvdXBCZWdpbiIsImdyb3VwRW5kIiwiYmVnaW5Ub2tlbiIsImZpcnN0VG9rZW4iLCJuZXN0ZWQiLCJsYXN0VG9rZW4iLCJwYXJzZVJlZ2V4R3JvdXAiLCJlbmRPZkdyb3VwIiwicGFyc2VTeW1ib2wiLCJudWNsZXVzIiwiWyIsInsiLCJcXGJlZ2luZ3JvdXAiLCJzcmNfcGFyc2VUcmVlIiwidG9QYXJzZSIsImthdGV4X3JlbmRlciIsImJhc2VOb2RlIiwia2F0ZXhfcmVuZGVyVG9Eb21UcmVlIiwiY29tcGF0TW9kZSIsImthdGV4X3JlbmRlckVycm9yIiwia2F0ZXhOb2RlIiwibWF0aE1MTm9kZSIsIl9odG1sTm9kZSIsImJ1aWxkVHJlZV9idWlsZFRyZWUiLCJrYXRleF8wIiwicmVuZGVyVG9TdHJpbmciLCJfX3BhcnNlIiwiX19yZW5kZXJUb0RvbVRyZWUiLCJfX3JlbmRlclRvSFRNTFRyZWUiLCJidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSIsIl9fc2V0Rm9udE1ldHJpY3MiLCJfX2RlZmluZVN5bWJvbCIsIl9fZGVmaW5lTWFjcm8iLCJfX2RvbVRyZWUiLCJoYXNPd24iLCJ0b1N0ciIsImdPUEQiLCJhcnIiLCJpc1BsYWluT2JqZWN0IiwiaGFzT3duQ29uc3RydWN0b3IiLCJoYXNJc1Byb3RvdHlwZU9mIiwic2V0UHJvcGVydHkiLCJuZXdWYWx1ZSIsImdldFByb3BlcnR5IiwiY29weSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJkZWVwIiwiVk1lc3NhZ2UiLCJWTWVzc2FnZVByb3RvdHlwZSIsInBhcnNlT3JpZ2luIiwicnVsZUlkIiwiZmF0YWwiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInBlcmZvcm1hbmNlIiwicGVyZm9ybWFuY2VOb3ciLCJtb3pOb3ciLCJtc05vdyIsIm9Ob3ciLCJ3ZWJraXROb3ciLCJEYXRlIiwiZ2V0VGltZSIsInN0YXJ0VGltZSIsIm5leHRUaWNrIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9ucyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiaHJ0aW1lIiwicHJldmlvdXNUaW1lc3RhbXAiLCJjbG9ja3RpbWUiLCJzZWNvbmRzIiwibmFub3NlY29uZHMiLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJ1cHRpbWUiLCJub3JtYWxpemVBcnJheSIsImFsbG93QWJvdmVSb290IiwidXAiLCJzcGxpdFBhdGhSZSIsInNwbGl0UGF0aCIsInJlc29sdmUiLCJyZXNvbHZlZFBhdGgiLCJyZXNvbHZlZEFic29sdXRlIiwiaXNQYXRoQWJzb2x1dGUiLCJpc0Fic29sdXRlIiwidHJhaWxpbmdTbGFzaCIsImV4dG5hbWUiLCJiYXNlbmFtZSIsImV4dCIsImRpcm5hbWUiLCJzZXAiLCJyZWxhdGl2ZSIsImZyb21QYXJ0cyIsInRvUGFydHMiLCJzYW1lUGFydHNMZW5ndGgiLCJvdXRwdXRQYXJ0cyIsInhzIiwibnBhdGgiLCJuRmlsZU5hbWUiLCJpc0J1ZmZlciIsIlZGaWxlIiwiYnVmZmVyIiwiaGlzdG9yeSIsImFzc2VydFBhcnQiLCJwYXJ0IiwiYXNzZXJ0Tm9uRW1wdHkiLCJhc3NlcnRQYXRoIiwiZW5jb2RpbmciLCJzdGVtIiwiZmlsZVBhdGgiLCJmYWlsIiwiaW52b2tlZCIsImRvbmUiLCJ0aGVuIiwidHJvdWdoIiwiZm5zIiwibWlkZGxld2FyZSIsInVzZSIsImdldFByb3RvdHlwZU9mIiwidW5pZmllZCIsImF0dGFjaGVycyIsInRyYW5zZm9ybWVycyIsImZyb3plbiIsImZyZWV6ZUluZGV4IiwicHJvY2Vzc29yIiwiYXNzZXJ0VW5mcm96ZW4iLCJmcmVlemUiLCJhZGRQbHVnaW4iLCJhZGRMaXN0IiwiYWRkUHJlc2V0IiwicGx1Z2lucyIsInBsdWdpbiIsInBsYWluIiwidmZpbGUiLCJhc3NlcnRQYXJzZXIiLCJuZXdhYmxlIiwiYXNzZXJ0Q29tcGlsZXIiLCJhc3NlcnROb2RlIiwiY29tcGlsZSIsInJ1blN5bmMiLCJjb21wbGV0ZSIsImJhaWwiLCJhc3NlcnREb25lIiwicHJvY2Vzc1N5bmMiLCJ0cmFuc2Zvcm1lciIsImNiIiwiUHJvbWlzZSIsImV4ZWN1dG9yIiwicmVqZWN0IiwicGlwZWxpbmUiLCJhc3luY05hbWUiLCJmYXRhbGl0aWVzIiwiZW1pdFBhcnNlRXJyb3JzIiwicmVwbGFjZXIiLCJsZXZlbCIsImVycm9ycyIsImRlc2NyaXB0aW9uIiwibm90ZSIsImVuY29kZWRDaGFyIiwicGFyc2U1IiwiUGFyc2VyNSIsInRhZ05hbWVzIiwiYmxvY2tPckNhcHRpb24iLCJpbmZlcldoaXRlU3BhY2UiLCJjb2xsZWN0VGV4dCIsImJyZWFrQmVmb3JlIiwiYnJlYWtBZnRlciIsImlubmVyVGV4dENvbGxlY3Rpb24iLCJ6ZXJvV2lkdGhTcGFjZSIsImFsbSIsImx0ciIsInJ0bCIsImxyZSIsInJsZSIsInBkZiIsImxybyIsInJsbyIsImxyaSIsInJsaSIsImZzaSIsInBkaSIsInRhYkNoYXIiLCJzcGFjZUNoYXIiLCJub3RSZW5kZXJlZCIsImZpbmRBZnRlciIsImNvbGxlY3RFbGVtZW50IiwiY29sbGVjdFByZVRleHQiLCJsaW5lU3RhcnQiLCJuZXh0TGluZSIsInRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMiLCJyZW1vdmVCaWRpQ29udHJvbENoYXJhY3RlcnMiLCJpc0JpZGlDb250cm9sQ2hhcmFjdGVyIiwic3BhY2VJbmRleCIsImthdGV4IiwiaW5saW5lIiwicGFyc2VIdG1sIiwiaW5jbHVkZVdoaXRlU3BhY2UiLCJhZnRlciIsImlzVGV4dCIsImlzQ29tbWVudCIsIm9wdGlvbkdyb3VwIiwiZGF0YUxpc3RJdGVtIiwibWVudUNvbnRlbnQiLCJydWJ5IiwidGFibGVDb250YWluZXIiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsImNvbmZ1c2luZ1BhcmFncmFwaFBhcmVudCIsImNsZWFyUGFyYWdyYXBoU2libGluZyIsIm9taXNzaW9uIiwiaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24iLCJsaSIsImR0IiwicnQiLCJydWJ5RWxlbWVudCIsInJwIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJtZW51aXRlbSIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIiwidGQiLCJjZWxscyIsInRoIiwid2hpdGVTcGFjZUxlZnQiLCJiZWZvcmUiLCJ1bmlxdWVIZWFkTWV0YWRhdGEiLCJ0YWJsZUNvbnRhaW5lcnMiLCJwbGFjZSIsImFscGhhYmV0aWNhbCIsImRlY2ltYWwiLCJlc2NhcGVPbmx5IiwidXNlTmFtZWRSZWZlcmVuY2VzIiwiY2hhcmFjdGVycyIsImVudGl0aWVzIiwiY29uc3RydWN0IiwiZGVmYXVsdEVzY2FwZXMiLCJ0b0V4cHJlc3Npb24iLCJzdXJyb2dhdGVQYWlyIiwiYm1wIiwib21pdCIsIm9taXRPcHRpb25hbFNlbWljb2xvbnMiLCJ0b0hleFJlZmVyZW5jZSIsIm5hbWVkIiwibnVtZXJpYyIsInNob3J0ZXN0IiwidXNlU2hvcnRlc3RSZWZlcmVuY2VzIiwibGVnYWN5IiwiYWxwaGFudW1lcmljYWwiLCJ0b05hbWVkIiwidG9EZWNpbWFsUmVmZXJlbmNlIiwiaGV4YWRlY2ltYWwiLCJpc0xpdGVyYWwiLCJ1bnF1b3RlZCIsInVucXVvdGVkU2FmZSIsInNpbmdsZVF1b3RlZCIsImRvdWJsZVF1b3RlZCIsInNpbmdsZSIsInRpZ2h0IiwicXVvdGF0aW9uTWFyayIsImFwb3N0cm9waGUiLCJjbG9zZUVtcHR5IiwibGVzc1RoYW4iLCJ0aWdodENsb3NlIiwic2xhc2giLCJncmVhdGVyVGhhbiIsImVxdWFsc1RvIiwiY29uc3RhbnRzIiwic2FmZSIsImFsdGVybmF0aXZlIiwidGlnaHRMaXN0cyIsImNvbGxhcHNlRW1wdHkiLCJjY291bnQiLCJhdHRyaWJ1dGVWYWx1ZSIsInRpZ2h0RG9jdHlwZSIsInB1YiIsInN5cyIsInNtYXJ0IiwicXVvdGVTbWFydCIsImFsbG93UGFyc2VFcnJvcnMiLCJhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMiLCJvbWl0T3B0aW9uYWxUYWdzIiwicHJlZmVyVW5xdW90ZWQiLCJ0aWdodEF0dHJpYnV0ZXMiLCJ0aWdodENvbW1hU2VwYXJhdGVkTGlzdHMiLCJ0aWdodFNlbGZDbG9zaW5nIiwiY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMiLCJjbG9zZVNlbGZDbG9zaW5nIiwiY2xvc2VFbXB0eUVsZW1lbnRzIiwidG9IVE1MIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiU3VwZXIiLCJPZiIsIkZyb20iLCJwYXJhbWV0ZXJzIiwidG9Qb3NpdGlvbiIsIm9mZnNldFRvUG9zaXRpb25GYWN0b3J5IiwidG9PZmZzZXQiLCJwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeSIsInNlbWljb2xvbiIsImVudGl0eSIsImluZGVudCIsImVudGl0eUNoYXJhY3RlcnMiLCJuYW1lZEVudGl0eSIsInRlcm1pbmF0ZWQiLCJmb2xsb3dpbmciLCJ3YXJuaW5nIiwiYWRkaXRpb25hbCIsIm5vblRlcm1pbmF0ZWQiLCJoYW5kbGVUZXh0IiwiaGFuZGxlUmVmZXJlbmNlIiwiaGFuZGxlV2FybmluZyIsInRleHRDb250ZXh0IiwicmVmZXJlbmNlQ29udGV4dCIsIndhcm5pbmdDb250ZXh0IiwiYW1wZXJzYW5kIiwiZm9ybUZlZWQiLCJ1cHBlcmNhc2VYIiwibG93ZXJjYXNlWCIsImhleGEiLCJkZWNpIiwiZGVjb2RlRW50aXR5IiwibmFtZWRVbmtub3duIiwibmFtZWROb3RUZXJtaW5hdGVkIiwibmFtZWRFbXB0eSIsIm51bWVyaWNOb3RUZXJtaW5hdGVkIiwiYmFzZXMiLCJudW1lcmljUHJvaGliaXRlZCIsInJlcGxhY2VtZW50Q2hhcmFjdGVyIiwibnVtZXJpY0Rpc2FsbG93ZWQiLCJkaXNhbGxvd2VkIiwibnVtZXJpY0VtcHR5IiwiZmx1c2giLCJkZWNvZGVyIiwib2Zmc2V0cyIsIm1hdGNoZWQiLCJ2YWx1ZUxlbmd0aCIsInRva2VuaXplcnMiLCJvbmx5QXRTdGFydCIsImF0U3RhcnQiLCJub3RJbkxpc3QiLCJpbkxpc3QiLCJub3RJbkJsb2NrIiwiaW5CbG9jayIsIm5vdEluTGluayIsImluTGluayIsImVvZiIsImNvbWJpbmVkIiwiaW5kZW50YXRpb24iLCJnZXRPZmZzZXQiLCJ2YWxpZGF0ZUVhdCIsInJlc2V0IiwibWVyZ2VhYmxlIiwibWVyZ2VUZXh0IiwibWVyZ2VCbG9ja3F1b3RlIiwiZXhpdFN0YXJ0IiwiZXNjYXBlcyIsImZvb3Rub3RlcyIsInBlZGFudGljIiwiZm9yY2UiLCJoYXJkIiwic29mdCIsImxpbmVCcmVha3NFeHByZXNzaW9uIiwidG9rZW5pemVCbG9jayIsInJlbW92ZVBvc2l0aW9uIiwiYmxhbmtRdWV1ZSIsInN1YnZhbHVlUXVldWUiLCJjb250ZW50UXVldWUiLCJjb2RlSW5kZW50IiwiZmVuY2VDb3VudCIsImZsYWciLCJleGRlbnRlZENvbnRlbnQiLCJleGRlbnRlZENsb3NpbmciLCJ0aWxkZSIsImdyYXZlQWNjZW50IiwiZGVjb2RlIiwidW5lc2NhcGUiLCJpbnRlcnJ1cHRvcnMiLCJpbnRlcnJ1cHRvciIsInJlc3QiLCJuZXh0SW5kZXgiLCJzdGFydEluZGV4IiwicHJlZml4ZWQiLCJleGl0IiwiY3VycmVudExpbmUiLCJpbmRlbnRzIiwiaW50ZXJydXB0IiwiZW50ZXJCbG9jayIsIm1heEZlbmNlQ291bnQiLCJtYXJrZXJDb3VudCIsImFzdGVyaXNrIiwidW5kZXJzY29yZSIsIm1heENvdW50Iiwic3RvcHMiLCJzcGFjZVNpemUiLCJtYXhpbXVtIiwicGFkZGluZyIsIm1pbkluZGVudCIsImV4Y2xhbWF0aW9uTWFyayIsImdldEluZGVudCIsImN1cnJlbnRNYXJrZXIiLCJwcmV2RW1wdHkiLCJhbGxMaW5lcyIsImVtcHR5TGluZXMiLCJpdGVtIiwiZW50ZXJUb3AiLCJleGl0QmxvY2txdW90ZSIsImluZGVudGVkIiwiaW50ZXJ1cHRvcnMiLCJwbHVzU2lnbiIsInJpZ2h0UGFyZW50aGVzaXMiLCJ0cmFpbCIsImVudGVyTGlzdCIsImxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uIiwidGFza0l0ZW1FeHByZXNzaW9uIiwiYnVsbGV0RXhwcmVzc2lvbiIsInBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiIsImluaXRpYWxJbmRlbnRFeHByZXNzaW9uIiwidGFzayIsInBlZGFudGljTGlzdEl0ZW0iLCJub3JtYWxMaXN0SXRlbSIsImJ1bGxldCIsInRyaW1tZWRMaW5lcyIsIiQyIiwiJDMiLCIkNCIsInJlbW92ZUluZGVudCIsIm1heEluZGVudCIsImVxdWFsc1RvRGVwdGgiLCJkYXNoRGVwdGgiLCJvcGVuVGFnIiwiY2xvc2VUYWciLCJlbGVtZW50T3BlbkV4cHJlc3Npb24iLCJzZXF1ZW5jZXMiLCJyYXdPcGVuRXhwcmVzc2lvbiIsInJhd0Nsb3NlRXhwcmVzc2lvbiIsImNvbW1lbnRPcGVuRXhwcmVzc2lvbiIsImNvbW1lbnRDbG9zZUV4cHJlc3Npb24iLCJpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uIiwiaW5zdHJ1Y3Rpb25DbG9zZUV4cHJlc3Npb24iLCJkaXJlY3RpdmVPcGVuRXhwcmVzc2lvbiIsImRpcmVjdGl2ZUNsb3NlRXhwcmVzc2lvbiIsImNkYXRhT3BlbkV4cHJlc3Npb24iLCJjZGF0YUNsb3NlRXhwcmVzc2lvbiIsImVsZW1lbnRDbG9zZUV4cHJlc3Npb24iLCJvdGhlckVsZW1lbnRPcGVuRXhwcmVzc2lvbiIsIm9wZW5DbG9zZVRhZyIsImNvbGxhcHNlV2hpdGVTcGFjZSIsImxlZnRTcXVhcmVCcmFja2V0IiwicmlnaHRTcXVhcmVCcmFja2V0IiwiY2FyZXQiLCJjb2xvbiIsIkVYUFJFU1NJT05fSU5JVElBTF9UQUIiLCJzdWJxdWV1ZSIsImJlZm9yZVVSTCIsImJlZm9yZVRpdGxlIiwiaXNFbmNsb3NlZFVSTENoYXJhY3RlciIsImlzVW5jbG9zZWRVUkxDaGFyYWN0ZXIiLCJsZWZ0UGFyZW50aGVzaXMiLCJhbGlnbm1lbnRzIiwiaGFzRGFzaCIsInByZWFtYmxlIiwibGluZUNvdW50IiwicGlwZUluZGV4IiwibWluUm93cyIsIm1pbkNvbHVtbnMiLCJ0cmltVHJhaWxpbmdMaW5lcyIsImxvY2F0ZSIsImF1dG9MaW5rIiwiYXRTaWduIiwibWFpbHRvIiwibWFpbHRvTGVuZ3RoIiwiaGFzQXRDaGFyYWN0ZXIiLCJlbnRlckxpbmsiLCJwcm90b2NvbHMiLCJwcm90b2NvbHNMZW5ndGgiLCJwYXJlbkNvdW50IiwibmV4dENoYXJhY3RlciIsImlubGluZUhUTUwiLCJxdWVzdGlvbk1hcmsiLCJodG1sTGlua09wZW5FeHByZXNzaW9uIiwiaHRtbExpbmtDbG9zZUV4cHJlc3Npb24iLCJjbG9zZWQiLCJoYXNNYXJrZXIiLCJpc0ltYWdlIiwic2hvcnRjdXQiLCJjb2xsYXBzZWQiLCJmdWxsIiwiYnJhY2tldGVkIiwiaW50cm8iLCJzdHJpa2V0aHJvdWdoIiwib3BlbmluZ0ZlbmNlRW5kIiwiY2xvc2luZ0ZlbmNlU3RhcnQiLCJjbG9zaW5nRmVuY2VFbmQiLCJmb3VuZCIsImhhcmRCcmVhayIsIm1pbkJyZWFrTGVuZ3RoIiwic2V0T3B0aW9ucyIsInZmaWxlTG9jYXRpb24iLCJ0b2dnbGUiLCJpbmRlbnRlZENvZGUiLCJmZW5jZWRDb2RlIiwiYXR4SGVhZGluZyIsInJlcXVpcmUkJDkiLCJzZXRleHRIZWFkaW5nIiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE2IiwicmVxdWlyZSQkMTciLCJyZXF1aXJlJCQxOCIsInJlcXVpcmUkJDE5IiwicmVxdWlyZSQkMjAiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwiZGVsZXRpb24iLCJyZXF1aXJlJCQyNCIsInJlcXVpcmUkJDI1IiwicmVxdWlyZSQkMjYiLCJyZXF1aXJlJCQyNyIsInRva2VuaXplRmFjdG9yeSIsIkxvY2FsIiwidW5oZXJpdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFycjIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsImVzY2FwZVJlZ0V4cCIsIkNfTkVXTElORSIsIkNfRkVOQ0UiLCJhdmFpbGFibGVCbG9ja3MiLCJjdXN0b21CbG9ja3MiLCJrZWVwIiwiX2tlZXAiLCJibG9ja1R5cGUiLCJibG9ja1RpdGxlIiwibGluZXNUb0VhdCIsImxpbmVUb0VhdCIsImNvbnRlbnRTdHJpbmciLCJzdHJpbmdUb0VhdCIsInBvdGVudGlhbEJsb2NrIiwidGl0bGVBbGxvd2VkIiwiYmxvY2tDaGlsZHJlbiIsInRpdGxlTm9kZSIsImRldGFpbHMiLCJibG9ja0hlYWRpbmciLCJibG9ja0JvZHkiLCJtYXhJbnQiLCJ0TWluIiwidE1heCIsImRhbXAiLCJpbml0aWFsQmlhcyIsImluaXRpYWxOIiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIm5vdC1iYXNpYyIsImludmFsaWQtaW5wdXQiLCJiYXNlTWludXNUTWluIiwic3RyaW5nRnJvbUNoYXJDb2RlIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsInRvQVNDSUkiLCJlbmNvZGVkIiwibWFwRG9tYWluIiwiaGFuZGxlZENQQ291bnQiLCJiYXNpY0xlbmd0aCIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwiYmFzZU1pbnVzVCIsInFNaW51c1QiLCJjb3VudGVyIiwidWNzMmRlY29kZSIsInJldkxvb2t1cCIsIkFyciIsIlVpbnQ4QXJyYXkiLCJpbml0ZWQiLCJpbml0IiwiZW5jb2RlQ2h1bmsiLCJ1aW50OCIsImZyb21CeXRlQXJyYXkiLCJleHRyYUJ5dGVzIiwibGVuMiIsInJlYWQiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsIk5hTiIsImFicyIsIkxOMiIsImtNYXhMZW5ndGgiLCJCdWZmZXIiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwiY3JlYXRlQnVmZmVyIiwidGhhdCIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZSIsIkFycmF5QnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5QnVmZmVyIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsImZyb21TdHJpbmciLCJpbnRlcm5hbElzQnVmZmVyIiwiZnJvbU9iamVjdCIsImFzc2VydFNpemUiLCJfaXNCdWZmZXIiLCJpc1ZpZXciLCJsb3dlcmVkQ2FzZSIsInV0ZjhUb0J5dGVzIiwiYmFzZTY0VG9CeXRlcyIsInN3YXAiLCJiaWRpcmVjdGlvbmFsSW5kZXhPZiIsImFycmF5SW5kZXhPZiIsImluZGV4U2l6ZSIsImFyckxlbmd0aCIsInZhbExlbmd0aCIsImJ1ZiIsInJlYWRVSW50MTZCRSIsImZvdW5kSW5kZXgiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInV0ZjhXcml0ZSIsImJsaXRCdWZmZXIiLCJhc2NpaVdyaXRlIiwiYnl0ZUFycmF5IiwiYXNjaWlUb0J5dGVzIiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJiYXNlNjRTbGljZSIsImJhc2U2NC5mcm9tQnl0ZUFycmF5IiwidXRmOFNsaWNlIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiZmlyc3RCeXRlIiwiYnl0ZXNQZXJTZXF1ZW5jZSIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwicG9vbFNpemUiLCJfYXVnbWVudCIsImFsbG9jIiwiYWxsb2NVbnNhZmVTbG93IiwiaXNGYXN0QnVmZmVyIiwicmVhZEZsb2F0TEUiLCJpc1Nsb3dCdWZmZXIiLCJjb21wYXJlIiwic3dhcDE2Iiwic3dhcDMyIiwic3dhcDY0IiwiaGV4U2xpY2UiLCJhc2NpaVNsaWNlIiwibGF0aW4xU2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJlcXVhbHMiLCJpbnNwZWN0IiwidGhpc1N0YXJ0IiwidGhpc0VuZCIsInRoaXNDb3B5IiwidGFyZ2V0Q29weSIsImlzRmluaXRlIiwidG9KU09OIiwidG9IZXgiLCJieXRlcyIsImNoZWNrT2Zmc2V0IiwiY2hlY2tJbnQiLCJvYmplY3RXcml0ZVVJbnQxNiIsImxpdHRsZUVuZGlhbiIsIm9iamVjdFdyaXRlVUludDMyIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0IiwiaWVlZTc1NC53cml0ZSIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic3ViYXJyYXkiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsImllZWU3NTQucmVhZCIsInJlYWRGbG9hdEJFIiwicmVhZERvdWJsZUxFIiwicmVhZERvdWJsZUJFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVJbnRCRSIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVJbnRMRSIsImxpbWl0Iiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJJTlZBTElEX0JBU0U2NF9SRSIsImxlYWRTdXJyb2dhdGUiLCJiNjQiLCJwbGFjZUhvbGRlcnMiLCJMIiwiYmFzZTY0LnRvQnl0ZUFycmF5Iiwic3RyaW5ndHJpbSIsImJhc2U2NGNsZWFuIiwiZHN0IiwiaXNOdWxsIiwiaXNTdHJpbmciLCJpc09iamVjdCIsInN0cmluZ2lmeVByaW1pdGl2ZSIsInFzIiwiZXEiLCJyZWdleHAiLCJtYXhLZXlzIiwia3N0ciIsInZzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ1cmxQYXJzZSIsInJlc29sdmVPYmplY3QiLCJVcmwiLCJzbGFzaGVzIiwiYXV0aCIsInBvcnQiLCJob3N0bmFtZSIsImhhc2giLCJxdWVyeSIsInBhdGhuYW1lIiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZU1heExlbiIsImhvc3RuYW1lUGFydFBhdHRlcm4iLCJob3N0bmFtZVBhcnRTdGFydCIsInVuc2FmZVByb3RvY29sIiwiamF2YXNjcmlwdCIsImphdmFzY3JpcHQ6IiwiaG9zdGxlc3NQcm90b2NvbCIsInNsYXNoZWRQcm90b2NvbCIsImh0dHAiLCJodHRwcyIsImZ0cCIsImdvcGhlciIsImh0dHA6IiwiaHR0cHM6IiwiZnRwOiIsImdvcGhlcjoiLCJmaWxlOiIsInBhcnNlUXVlcnlTdHJpbmciLCJzbGFzaGVzRGVub3RlSG9zdCIsInF1ZXJ5SW5kZXgiLCJzcGxpdHRlciIsInVTcGxpdCIsInNpbXBsZVBhdGgiLCJxc1BhcnNlIiwiaGVjIiwibG93ZXJQcm90byIsImhvc3RFbmQiLCJwYXJzZUhvc3QiLCJpcHY2SG9zdG5hbWUiLCJob3N0cGFydHMiLCJuZXdwYXJ0IiwidmFsaWRQYXJ0cyIsIm5vdEhvc3QiLCJiaXQiLCJhZSIsImVzYyIsInFtIiwia3MiLCJfdHlwZW9mIiwicmVsUGF0aCIsInRrZXlzIiwidGsiLCJ0a2V5IiwicmtleXMiLCJyayIsInJrZXkiLCJhdXRoSW5Ib3N0IiwiaXNTb3VyY2VBYnMiLCJpc1JlbEFicyIsIm11c3RFbmRBYnMiLCJyZW1vdmVBbGxEb3RzIiwic3JjUGF0aCIsInBzeWNob3RpYyIsImhhc1RyYWlsaW5nU2xhc2giLCJfcmVxdWlyZSIsIlVSTFNlYXJjaFBhcmFtcyIsImlmcmFtZXMiLCJlYXRlblZhbHVlIiwic3BlY2lhbENoYXJzIiwicHJvdmlkZXIiLCJkZXRlY3RQcm92aWRlciIsImZpbmFsVXJsIiwiZHJvcHBlZFF1ZXJ5UGFyYW1ldGVycyIsImlnbm9yZWQiLCJfcnVsZSIsInJlbW92ZUZpbGVOYW1lIiwicmVtb3ZlQWZ0ZXIiLCJhcHBlbmQiLCJjb21wdXRlRmluYWxVcmwiLCJ0aHVtYm5haWwiLCJ0aHVtYm5haWxVUkwiLCJ0aHVtYm5haWxDb25maWciLCJjb21wdXRlVGh1bWJuYWlsIiwiYWxsb3dmdWxsc2NyZWVuIiwiZnJhbWVib3JkZXIiLCJpZnJhbWUiLCJmbmMiLCJyZW1hcmsiLCJsaW5lSW5wdXQiLCJ0ZXh0SW5wdXQiLCJtdWx0aUNob2ljZSIsImluZm9ybWF0aW9uIiwiYXR0ZW50aW9uIiwicXVlc3Rpb24iLCJnb29kIiwic2VjcmV0IiwiYmFkIiwid3d3LnlvdXR1YmUuY29tIiwicmVoeXBlS2F0ZXgiLCJyZWh5cGVTdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJnQ0FBQSxNQUlBLFdBR0ksSUFGQSxJQUFJQSxLQUVLQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDdkMsSUFBSUcsRUFBU0YsVUFBVUQsR0FFdkIsSUFBSyxJQUFJSSxLQUFPRCxFQUNSRSxFQUFlQyxLQUFLSCxFQUFRQyxLQUM1QkwsRUFBT0ssR0FBT0QsRUFBT0MsSUFLakMsT0FBT0wsR0FmUE0sRUFBaUJFLE9BQU9DLFVBQVVILGVDTXRDLElBQUlJLEVBQXdCRixPQUFPRSxzQkFDL0JKLEVBQWlCRSxPQUFPQyxVQUFVSCxl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QUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sS0FBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxF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QUFJbUssR0FDL0JDLGVBQ0VDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxLQUFPLEtBQU8sRUFBRyxLQUM1QkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLEtBQU8sRUFBRyxFQUFHLFNBQ3hCQyxLQUFRLEVBQUcsR0FBSyxFQUFHLEVBQUcsU0FDdEJDLEtBQVEsRUFBRyxLQUFPLEVBQUcsRUFBRyxTQUN4QkMsS0FBUSxFQUFHLEdBQUssRUFBRyxFQUFHLFNBQ3RCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxHQUM5QkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLE9BQVUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsT0FBVSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsSUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsTUFBUSxLQUFPLEVBQUcsRUFBRyxRQUM5QkMsTUFBUyxNQUFRLEtBQU8sRUFBRyxFQUFHLFFBQzlCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLE1BQVMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsT0FBVSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FFcENDLHVCQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0J6USxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxNQUFRLE9BQVMsUUFDMUNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLE9BQVMsUUFDbkNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDM0NDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxTQUV2Q2lQLG1CQUNFQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekIxUixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxP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QVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QnRCLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM2QyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QjZDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QjVDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxJQUFNLE9BQVMsT0FBUyxFQUFHLE1BQ2xDM0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLE1BQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm9CLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsSUFBTSxPQUFTLEVBQUcsRUFBRyxNQUM3QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDOVQsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCK1QsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCcVUsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDakMzRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ2hWLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsTUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCN1QsTUFBUyxPQUFTLElBQU0sRUFBRyxFQUFHLE1BQzlCOFQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQzlULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQytULE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCOVQsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCK1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCa1UsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzNCalUsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCRyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JFLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjZULE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3ZDN1QsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDOFQsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMxVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMyVCxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDNVIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDNlIsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxNQUFTLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqUSxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ1csTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDc1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDblAsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDb1AsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLFFBQ3hCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsT0FBVSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxPQUFVLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDNUJDLE9BQVUsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUM1QkMsT0FBVSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE9BQVUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUVwQ0MsbUJBQ0V6TSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM5QkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxLQUFRLE9BQVMsT0FBUyxLQUFPLEVBQUcsUUFDcENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsS0FBTyxFQUFHLFFBQ3BDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0Q0MsS0FBUSxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzlCRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2hDQyxLQUFRLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxNQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUVuQ2tHLGVBQ0UzTSxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0UsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsUUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CYyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNwQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUI2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdkksS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQzlVLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmliLGdCQUNFQyxJQUFPLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDbkI3TSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QnNELElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLElBQzVCQyxJQUFPLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxJQUFNLEVBQUcsRUFBRyxJQUN0QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekJ0QixJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJjLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNkMsSUFBTyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCdlUsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsS0FBTyxFQUFHLEtBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekI1QyxJQUFPLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QjRDLElBQU8sSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNsQzNDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJvQixLQUFRLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLElBQzFCQyxLQUFRLElBQU0sT0FBUyxFQUFHLEVBQUcsSUFDN0I0SSxLQUFRLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDcEJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzVJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzBJLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ3pJLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJwVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJxVSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxHQUNqQzNELE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMkQsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDc0csTUFBUyxFQUFHLElBQU0sRUFBRyxFQUFHLE9BQ3hCckcsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzNCQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNsVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmhWLE9BQVUsT0FBUyxPQUFTLEVBQUcs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LE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsR0FDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxHQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUMvQkMsTUFBUyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IxUyxNQUFTLEtBQU8sSUFBTSxFQUFHLEVBQUcsTUFDNUIyUyxPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbEM1UixPQUFVLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbEM2UixPQUFV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UUFDL0JDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnFRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxPQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDMUJDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQ2tJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2pDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFN0JDLGVBQ0VoaEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLEtBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNxUSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDZ0QsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsSUFBTSxPQUFTLFFBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDdENrSSxLQUFRLEVBQUcsT0FBUyxNQUFRLE9BQVMsT0FDckNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxPQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxRQUNyQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN2Q0MsTUFBUyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBRW5DRSxnQkFDRWpoQixJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsS0FDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLElBQU8sT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ3FRLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzdRLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENnRCxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxJQUFNLE9BQVMsUUFDbkNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUN0Q2tJLEtBQVEsRUFBRyxPQUFTLE1BQVEsT0FBUyxPQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsT0FDNUNDLEtBQVEsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsTUFBUSxPQUFTLFFBQ3JDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsTUFBUyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxNQUFTLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFFbkNHLGtCQUNFdlEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxLQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLEtBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsS0FDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsS0FDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLEtBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm1NLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQmpNLEtBQVEsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMxQlEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCRyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUIrVCxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkcsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmdLLG9CQUNFelEsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JzRCxJQUFPLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLElBQU8sT0FBUyxJQUFNLE9BQVMsRUFBRyxJQUNsQ0MsSUFBTyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsSUFBTSxPQUFTLEVBQUcsSUFDNUJDLElBQU8sT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLElBQy9CdEIsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CYyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsS0FBUSxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I2QyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsTUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLElBQU8sRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLElBQU8sSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxJQUFPLEVBQUcsT0FBUyxNQUFRLEVBQUcsSUFDOUI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEM4USxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQ0MsS0FBUSxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsS0FBUSxJQUFNLE9BQVMsT0FBUyxFQUFHLElBQ25DQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENHLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzlULEtBQVEsRUFBRyxPQUFTLE1BQVEsRUFBRyxJQUMvQitULEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ3FVLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxNQUFTLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDakNDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUVuQ2lLLHFCQUNFMVEsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJzRCxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLElBQU8sT0FBUyxJQUFNLEVBQUcsRUFBRyxJQUM1QkMsSUFBTyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCdkQsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsSUFBTSxFQUFHLEVBQUcsSUFDdEJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsSUFBTyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCdEIsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCYyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsS0FBUSxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzFCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQ3pCQyxJQUFPLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLElBQU8sRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDN0JDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLElBQU8sSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekI0QyxJQUFPLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLE9BQVMsT0FBUyxPQUFTLEVBQUcsSUFDdENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsS0FBUSxJQUFNLE9BQVMsRUFBRyxFQUFHLElBQzdCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJFLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzlULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQitULEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQnFVLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLE1BQVMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsTUFBUyxFQUFHLE9BQVMsT0FBUyxFQUFHLEdBQ2pDM0QsTUFBUyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxNQUFTLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLE1BQVMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUU3QmtLLGtCQUNFdGhCLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxNQUFRLEVBQUcsUUFDMUJDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sT0FBUyxHQUFLLE9BQVMsRUFBRyxTQUNqQ0MsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssTUFBUSxFQUFHLE9BQzFCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsS0FDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLElBQU8sRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsSUFBTyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxJQUFPLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFD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LElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0I2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM2QyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI2QyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJ2VSxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmtRLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjZDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQjVDLElBQU8sT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCNEMsSUFBTyxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQ3pCOFAsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCelMsSUFBTyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxJQUFPLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLElBQU8sRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDN1EsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCOFEsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQm9CLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxLQUFRLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQjJQLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQi9HLEtBQVEsRUFBRyxFQUFHLEVBQUcsRUFBRyxNQUNwQnpJLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkUsS0FBUSxPQUFTLEVBQUcsRUFBRyxFQUFHLE1BQzFCUSxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJHLEtBQVEsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsS0FBUSxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxLQUFRLEVBQUcsT0FBUyxFQUFHLEVBQUcs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QUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxTQUFVLDZCQUN0QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxZQUFhLDZCQUN6QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxVQUFXLDZCQUN2QkEsR0FBWSxXQUFZLDZCQUN4QkEsR0FBWSxZQUFhLDZCQWV6QixJQUFJNkYsSUFDRkMsV0FBVyxFQUVYQyxLQUFLLEVBRUx2dkgsR0FBSyxFQUVMd3ZILFlBQVksRUFFWkMsY0FBYyxHQUlaQyxHQUVKLFdBQ0UsU0FBU0MsRUFBYzk4RyxFQUFPaHVCLEVBQVUySCxHQUN0QzFTLEtBQUsrSyxjQUFXLEVBQ2hCL0ssS0FBSzgxSSxvQkFBaUIsRUFDdEI5MUksS0FBS3VtRixXQUFRLEVBQ2J2bUYsS0FBSzZvRixZQUFTLEVBQ2Q3b0YsS0FBS3doQixXQUFRLEVBQ2J4aEIsS0FBSzBTLFVBQU8sRUFDWjFTLEtBQUsrSyxTQUFXQSxFQUNoQi9LLEtBQUs4MUksZUFBaUIsRUFDdEI5MUksS0FBSysxSSxLQUFLaDlHLEdBRVYvNEIsS0FBSzZvRixPQUFTLElBQUlvbUQsR0FBb0JwbUQsR0FBUTk5RSxFQUFTODlFLFFBQ3ZEN29GLEtBQUswUyxLQUFPQSxFQUNaMVMsS0FBS3doQixTQVFQLElBQUk2bkUsRUFBU3dzRCxFQUFjMzRJLFVBMFYzQixPQXhWQW1zRixFQUFPMHNELEtBQU8sU0FBY2g5RyxHQUMxQi80QixLQUFLdW1GLE1BQVEsSUFBSWlvRCxHQUFZejFHLEVBQU8vNEIsS0FBSytLLFdBTzNDcytFLEVBQU84OUMsV0FBYSxTQUFvQi9rSCxHQUN0Q3BpQixLQUFLMFMsS0FBTzBQLEdBT2RpbkUsRUFBT3cwQyxXQUFhLFdBQ2xCNzlILEtBQUs2b0YsT0FBT2cxQyxjQU9keDBDLEVBQU80MEMsU0FBVyxXQUNoQmorSCxLQUFLNm9GLE9BQU9vMUMsWUFRZDUwQyxFQUFPd21ELE9BQVMsV0FLZCxPQUowQixJQUF0Qjd2SSxLQUFLd2hCLE1BQU01a0IsUUFDYm9ELEtBQUtnMkksVUFBVWgySSxLQUFLdW1GLE1BQU11b0QsT0FHckI5dUksS0FBS3doQixNQUFNeGhCLEtBQUt3aEIsTUFBTTVrQixPQUFTLElBT3hDeXNGLEVBQU95bkQsU0FBVyxXQUdoQixPQUZBOXdJLEtBQUs2dkksU0FFRTd2SSxLQUFLd2hCLE1BQU1wRyxPQVFwQml1RSxFQUFPMnNELFVBQVksU0FBbUIzbUcsR0FDcENydkMsS0FBS3doQixNQUFNNWQsS0FBS3lyQyxJQU9sQmc2QyxFQUFPNHNELFdBQWEsU0FBb0J0RyxHQUN0QyxJQUFJdUcsR0FFSEEsRUFBY2wySSxLQUFLd2hCLE9BQU81ZCxLQUFLN0QsTUFBTW0ySSxFQUFhdkcsSUFPckR0bUQsRUFBTyt6QyxjQUFnQixXQUNyQixPQUFTLENBR1AsR0FBbUIsTUFGUHA5SCxLQUFLNnZJLFNBRVByc0ksS0FHUixNQUZBeEQsS0FBS3doQixNQUFNcEcsUUFZakJpdUUsRUFBT3VtRCxZQUFjLFNBQXFCbmxCLEdBR3hDLElBRkEsSUFBSWpzRyxLQUVLOWhCLEVBQUksRUFBR0EsRUFBSSt0SCxJQUFXL3RILEVBQUcsQ0FDaENzRCxLQUFLbzlILGdCQUVMLElBQUkrWSxFQUFhbjJJLEtBQUs4d0ksV0FFdEIsR0FBd0IsTUFBcEJxRixFQUFXM3lJLEtBQWMsQ0FJM0IsSUFIQSxJQUFJNGEsS0FDQWpZLEVBQVEsRUFFSyxJQUFWQSxHQUFhLENBQ2xCLElBQUlpd0ksRUFBTXAySSxLQUFLOHdJLFdBR2YsR0FGQTF5SCxFQUFJeGEsS0FBS3d5SSxHQUVRLE1BQWJBLEVBQUk1eUksT0FDSjJDLE9BQ0csR0FBaUIsTUFBYml3SSxFQUFJNXlJLE9BQ1gyQyxPQUNHLEdBQWlCLFFBQWJpd0ksRUFBSTV5SSxLQUNiLE1BQU0sSUFBSXdqRixFQUFlLGlDQUFrQ212RCxHQUkvRC8zSCxFQUFJaEQsTUFFSmdELEVBQUk1ZCxVQUVKZ2UsRUFBSzloQixHQUFLMGhCLE1BQ0wsQ0FBQSxHQUF3QixRQUFwQiszSCxFQUFXM3lJLEtBQ3BCLE1BQU0sSUFBSXdqRixFQUFlLHlDQUV6QnhvRSxFQUFLOWhCLElBQU15NUksSUFJZixPQUFPMzNILEdBd0JUNnFFLEVBQU9ndEQsV0FBYSxXQUNsQixJQUFJQyxFQUFXdDJJLEtBQUs4d0ksV0FDaEJodEksRUFBT3d5SSxFQUFTOXlJLEtBRWhCK3lJLEVBQVl2MkksS0FBS3cySSxjQUFjMXlJLEdBRW5DLEdBQWlCLE1BQWJ5eUksRUFJRixPQURBdjJJLEtBQUtnMkksVUFBVU0sR0FDUkEsRUFLVCxHQUZBdDJJLEtBQUs4MUksaUJBRUQ5MUksS0FBSzgxSSxlQUFpQjkxSSxLQUFLK0ssU0FBU28rRSxVQUN0QyxNQUFNLElBQUluQyxFQUFlLDRFQUczQixJQUFJMm9ELEVBQVM0RyxFQUFVNUcsT0FFdkIsR0FBSTRHLEVBQVU5ckIsUUFLWixJQUpBLElBQUlqc0csRUFBT3hlLEtBQUs0dkksWUFBWTJHLEVBQVU5ckIsU0FJN0IvdEgsR0FGVGl6SSxFQUFTQSxFQUFPbHFJLFNBRUk3SSxPQUFTLEVBQUdGLEdBQUssSUFBS0EsRUFBRyxDQUMzQyxJQUFJMDVJLEVBQU16RyxFQUFPanpJLEdBRWpCLEdBQWlCLE1BQWIwNUksRUFBSTV5SSxLQUFjLENBQ3BCLEdBQVUsSUFBTjlHLEVBQ0YsTUFBTSxJQUFJc3FGLEVBQWUsOENBQStDb3ZELEdBSzFFLEdBQWlCLE9BRmpCQSxFQUFNekcsSUFBU2p6SSxJQUVQOEcsS0FFTm1zSSxFQUFPbmlJLE9BQU85USxFQUFJLEVBQUcsT0FDaEIsQ0FBQSxJQUFJLFVBQVU0QyxLQUFLODJJLEVBQUk1eUksTUFNNUIsTUFBTSxJQUFJd2pGLEVBQWUsOEJBQStCb3ZELEdBTHhELElBQUlLLEdBR0hBLEVBQVU5RyxHQUFRbmlJLE9BQU96TixNQUFNMDJJLEdBQVUvNUksRUFBRyxHQUFHdUUsT0FBT3VkLEdBQU00M0gsRUFBSTV5SSxLQUFPLE9BVWhGLE9BREF4RCxLQUFLaTJJLFdBQVd0RyxHQUNUQSxHQVVUdG1ELEVBQU9rckQsa0JBQW9CLFdBRXpCLE9BREF2MEksS0FBS3EySSxhQUNFcjJJLEtBQUs2dkksVUFPZHhtRCxFQUFPa29ELGdCQUFrQixXQUN2QixPQUFTLENBQ1AsSUFBSW1GLEVBQVcxMkksS0FBS3EySSxhQUVwQixHQUFJSyxhQUFvQmh3RCxFQUFhLENBR25DLEdBQXNCLFlBQWxCZ3dELEVBQVNsekksS0FHWCxPQUFPeEQsS0FBS3doQixNQUFNcEcsTUFGbEJwYixLQUFLd2hCLE1BQU1wRyxPQVNqQixNQUFNLElBQUluYixPQVFab3BGLEVBQU9zdEQsWUFBYyxTQUFxQjd5SSxHQUN4QyxHQUFLOUQsS0FBSzZvRixPQUFPNUMsSUFBSW5pRixHQUFyQixDQUlBLElBQUkrK0UsS0FDQSt6RCxFQUFpQjUySSxLQUFLd2hCLE1BQU01a0IsT0FHaEMsSUFGQW9ELEtBQUtnMkksVUFBVSxJQUFJdHZELEVBQVk1aUYsSUFFeEI5RCxLQUFLd2hCLE1BQU01a0IsT0FBU2c2SSxHQUFnQixDQUMxQjUySSxLQUFLcTJJLHVCQUVJM3ZELEdBQ3RCN0QsRUFBT2ovRSxLQUFLNUQsS0FBS3doQixNQUFNcEcsT0FJM0IsT0FBT3luRSxJQVFUd0csRUFBT3kwQyxrQkFBb0IsU0FBMkJoNkgsR0FDcEQsSUFBSTZySSxFQUFTM3ZJLEtBQUsyMkksWUFBWTd5SSxHQUU5QixPQUFJNnJJLEVBQ0tBLEVBQU8veEksSUFBSSxTQUFVeXhDLEdBQzFCLE9BQU9BLEVBQU03ckMsT0FDWjFGLEtBQUssSUFFRDZ4SSxHQVNYdG1ELEVBQU9tdEQsY0FBZ0IsU0FBdUIxeUksR0FDNUMsSUFBSXJCLEVBQWF6QyxLQUFLNm9GLE9BQU81QyxJQUFJbmlGLEdBRWpDLEdBQWtCLE1BQWRyQixFQUVGLE9BQU9BLEVBR1QsSUFBSTh6SSxFQUFrQyxtQkFBZjl6SSxFQUE0QkEsRUFBV3pDLE1BQVF5QyxFQUV0RSxHQUF5QixpQkFBZDh6SSxFQUF3QixDQUNqQyxJQUFJOXJCLEVBQVUsRUFFZCxJQUFnQyxJQUE1QjhyQixFQUFVbjFJLFFBQVEsS0FHcEIsSUFGQSxJQUFJeTFJLEVBQVdOLEVBQVV6ekksUUFBUSxNQUFPLEtBRVUsSUFBM0MrekksRUFBU3oxSSxRQUFRLEtBQU9xcEgsRUFBVSxPQUNyQ0EsRUFRTixJQUpBLElBQUlxc0IsRUFBWSxJQUFJdEksR0FBWStILEVBQVd2MkksS0FBSytLLFVBQzVDNGtJLEtBQ0F5RyxFQUFNVSxFQUFVaEksTUFFQSxRQUFic0gsRUFBSTV5SSxNQUNUbXNJLEVBQU8vckksS0FBS3d5SSxHQUNaQSxFQUFNVSxFQUFVaEksTUFTbEIsT0FOQWEsRUFBT252SSxXQUdMbXZJLE9BQVFBLEVBQ1JsbEIsUUFBU0EsR0FLYixPQUFPOHJCLEdBVVRsdEQsRUFBT2dvRCxVQUFZLFNBQW1CdnRJLEdBQ3BDLE9BQU85RCxLQUFLNm9GLE9BQU8ybUQsSUFBSTFySSxJQUFTcXFJLEdBQWNweEksZUFBZStHLElBQVNrNkcsRUFBWWh2RyxLQUFLalMsZUFBZStHLElBQVNrNkcsRUFBWXg2RyxLQUFLekcsZUFBZStHLElBQVN5eEksR0FBaUJ4NEksZUFBZStHLElBR25MK3hJLEVBaFhULEdBdVhpQ2tCLElBQy9CQyxLQUNFeHpJLEtBQU0sTUFDTndMLEtBQU0sV0FFUmlvSSxLQUNFenpJLEtBQU0sTUFDTndMLEtBQU0sV0FFUmtvSSxLQUNFMXpJLEtBQU0sTUFDTndMLEtBQU0sVUFFUm1vSSxLQUNFM3pJLEtBQU0sTUFDTndMLEtBQU0sV0FFUm9vSSxLQUNFNXpJLEtBQU0sTUFDTndMLEtBQU0sU0FFUnFvSSxLQUNFN3pJLEtBQU0sTUFDTndMLEtBQU0sV0FFUnNvSSxLQUNFOXpJLEtBQU0sTUFDTndMLEtBQU0sV0FFUnVvSSxLQUNFL3pJLEtBQU0sTUFDTndMLEtBQU0sU0FFUndvSSxLQUNFaDBJLEtBQU0sTUFDTndMLEtBQU0sU0FFUnlvSSxLQUNFajBJLEtBQU0sTUFDTndMLEtBQU0sY0FFUjBvSSxLQUNFbDBJLEtBQU0sUUFLdUJtMEksSUFDL0JDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWNS9CLElBQVEsS0FFUjYvQixJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWcnFELElBQVEsS0FFUkMsSUFBUSxLQUVSRixJQUFRLEtBRVJ1cUQsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVY1cUQsSUFBUSxLQUVSNnFELElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWM29DLElBQVEsS0FFUjRvQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxL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
+var hmd=function(){"use strict";var e=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var a in r)t.call(r,a)&&(e[a]=r[a])}return e}
+/*
+ object-assign
+ (c) Sindre Sorhus
+ @license MIT
+ */,t=Object.prototype.hasOwnProperty;var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var o=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var o,s,l=i(e),c=1;c<arguments.length;c++){for(var d in o=Object(arguments[c]))r.call(o,d)&&(l[d]=o[d]);if(n){s=n(o);for(var _=0;_<s.length;_++)a.call(o,s[_])&&(l[s[_]]=o[s[_]])}}return l},s=function(e,t,n){var r;null!=n||"object"==typeof t&&!Array.isArray(t)||(n=t,t={});r=o({type:String(e)},t),Array.isArray(n)?r.children=n:null!=n&&(r.value=String(n));return r};var l=c;function c(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null==e)return u;if("object"==typeof e)return("length"in e?_:d)(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function d(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}}function _(e){var t=function(e){for(var t=[],n=e.length,r=-1;++r<n;)t[r]=c(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}function u(){return!0}var m=h,p=!0,g="skip",E=!1;function h(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=S(n(e,s)))[0]!==E)&&e.children&&c[0]!==g&&(l=S(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===E)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===E?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=l(t),i(e,null,[])}function S(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[p,e]:[e]}h.CONTINUE=p,h.SKIP=g,h.EXIT=E;var f=N,T=m.CONTINUE,b=m.SKIP,C=m.EXIT;function N(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),m(e,t,(function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)}),r)}N.CONTINUE=T,N.SKIP=b,N.EXIT=C;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function v(e,t){return e(t={exports:{}},t.exports),t.exports}function R(e){return e&&e.default||e}var O=v((function(e,t){var n=t;function r(e){return t.displayName=e,t;function t(t){var n=t&&t.position&&t.position[e]||{};return{line:n.line||null,column:n.column||null,offset:isNaN(n.offset)?null:n.offset}}}n.start=r("start"),n.end=r("end")})),A=function(e){var t=y(y(e).position),n=y(t.start),r=y(t.end);return!(n.line&&n.column&&r.line&&r.column)};function y(e){return e&&"object"==typeof e?e:{}}var I=function(e,t){return function(e){return function(t){var n=t&&x(t);return n&&D.call(e,n)?e[n]:null}}(function(e,t){var n={};if(!e||!e.type)throw new Error("mdast-util-definitions expected node");return f(e,"definition",t&&t.commonmark?function(e){var t=x(e.identifier);D.call(n,t)||(n[t]=e)}:function(e){n[x(e.identifier)]=e}),n}(e,t))},D={}.hasOwnProperty;function x(e){return e.toUpperCase()}var M=v((function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}})),w=(M.left,M.right,function(e,t){var n,r,a=t.children||[],i=a.length,o=[],s=-1;for(;++s<i;)(n=L(e,a[s],t))&&(s&&"break"===a[s-1].type&&(n.value&&(n.value=M.left(n.value)),(r=n.children&&n.children[0])&&r.value&&(r.value=M.left(r.value))),o=o.concat(n));return o});var L=function(e,t,n){var r=t&&t.type,a=P.call(e.handlers,r)?e.handlers[r]:null;if(!r)throw new Error("Expected node, got `"+t+"`");return("function"==typeof a?a:k)(e,t,n)},P={}.hasOwnProperty;function k(e,t){return function(e){var t=e.data||{};if(P.call(t,"hName")||P.call(t,"hProperties")||P.call(t,"hChildren"))return!1;return"value"in e}(t)?e.augment(t,s("text",t.value)):e(t,"div",w(e,t))}var U=function(e,t){return e(t,"hr")};var F=function(e,t){var n=[],r=-1,a=e.length;t&&n.push(s("text","\n"));for(;++r<a;)r&&n.push(s("text","\n")),n.push(e[r]);t&&0!==e.length&&n.push(s("text","\n"));return n};var G=function(e,t){var n,r,a={},i=t.ordered?"ol":"ul",o=-1;"number"==typeof t.start&&1!==t.start&&(a.start=t.start);n=w(e,t),r=n.length;for(;++o<r;)if(n[o].properties.className&&-1!==n[o].properties.className.indexOf("task-list-item")){a.className=["contains-task-list"];break}return e(t,i,a,F(n,!0))};var B=function(e){var t,n,r,a,i=e.footnoteById,o=e.footnoteOrder,s=o.length,l=-1,c=[];for(;++l<s;)(t=i[o[l].toUpperCase()])&&(r=t.children.concat(),a=r[r.length-1],n={type:"link",url:"#fnref-"+t.identifier,data:{hProperties:{className:["footnote-backref"]}},children:[{type:"text",value:"↩"}]},a&&"paragraph"===a.type||(a={type:"paragraph",children:[]},r.push(a)),a.children.push(n),c.push({type:"listItem",data:{hProperties:{id:"fn-"+t.identifier}},children:r,position:t.position}));if(0===c.length)return null;return e(null,"div",{className:["footnotes"]},F([U(e),G(e,{type:"list",ordered:!0,children:c})],!0))};var H=function(e,t){return e(t,"blockquote",F(w(e,t),!0))};var Y=function(e,t){return[e(t,"br"),s("text","\n")]}
+/*!
+ * repeat-string <https://github.com/jonschlinkert/repeat-string>
+ *
+ * Copyright (c) 2014-2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */;var V,z="",q=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(V!==e||void 0===V)V=e,z="";else if(z.length>=n)return z.substr(0,n);for(;n>z.length&&t>1;)1&t&&(z+=e),t>>=1,e+=e;return z=(z+=e).substr(0,n)};var K=function(e,t){var n,r,a="string"==typeof e,i=a&&e.length,o=0,s=-1,l=-1,c=t||4,d=[];if(!a)throw new Error("detab expected string");for(;++s<i;)(n=e.charCodeAt(s))===W?(l+=r=c-(l+1)%c,d.push(e.slice(o,s)+q(" ",r)),o=s+1):n===Q||n===$?l=-1:l++;return d.push(e.slice(o)),d.join("")},W=9,Q=10,$=13;var j=function(e,t){var n=t.value?K(t.value+"\n"):"",r=t.lang&&t.lang.match(/^[^ \t]+(?=[ \t]|$)/),a={};r&&(a.className=["language-"+r]);return e(t.position,"pre",[e(t,"code",a,[s("text",n)])])};var X=function(e,t){return e(t,"del",w(e,t))};var Z=function(e,t){return e(t,"em",w(e,t))};var J=function(e,t){var n=e.footnoteOrder,r=String(t.identifier);-1===n.indexOf(r)&&n.push(r);return e(t.position,"sup",{id:"fnref-"+r},[e(t,"a",{href:"#fn-"+r,className:["footnote-ref"]},[s("text",t.label||r)])])};var ee=function(e,t){var n=e.footnoteById,r=e.footnoteOrder,a=1;for(;a in n;)a++;return a=String(a),r.push(a),n[a]={type:"footnoteDefinition",identifier:a,children:[{type:"paragraph",children:t.children}],position:t.position},J(e,{type:"footnoteReference",identifier:a,position:t.position})};var te=function(e,t){return e(t,"h"+t.depth,w(e,t))};var ne=function(e,t){return e.dangerous?e.augment(t,s("raw",t.value)):null};var re={};function ae(e,t,n){var r,a,i,o,s,l="";for("string"!=typeof t&&(n=t,t=ae.defaultChars),void 0===n&&(n=!0),s=function(e){var t,n,r=re[e];if(r)return r;for(r=re[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?r.push(n):r.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)r[e.charCodeAt(t)]=e[t];return r}(t),r=0,a=e.length;r<a;r++)if(i=e.charCodeAt(r),n&&37===i&&r+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(r+1,r+3)))l+=e.slice(r,r+3),r+=2;else if(i<128)l+=s[i];else if(i>=55296&&i<=57343){if(i>=55296&&i<=56319&&r+1<a&&(o=e.charCodeAt(r+1))>=56320&&o<=57343){l+=encodeURIComponent(e[r]+e[r+1]),r++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[r]);return l}ae.defaultChars=";/?:@&=+$,-_.!~*'()#",ae.componentChars="-_.!~*'()";var ie=ae,oe=function(e,t){var n,r,a,i=t.referenceType,o="]";"collapsed"===i?o+="[]":"full"===i&&(o+="["+(t.label||t.identifier)+"]");if("imageReference"===t.type)return s("text","!["+t.alt+o);n=w(e,t),(r=n[0])&&"text"===r.type?r.value="["+r.value:n.unshift(s("text","["));(a=n[n.length-1])&&"text"===a.type?a.value+=o:n.push(s("text",o));return n};var se=function(e){return String(e).replace(/\s+/g," ")};function le(e){var t=e.spread;return null==t?e.children.length>1:t}var ce=function(e){return String(e).replace(de,_e)},de=/[ \t]*\n+[ \t]*/g,_e="\n";var ue={blockquote:H,break:Y,code:j,delete:X,emphasis:Z,footnoteReference:J,footnote:ee,heading:te,html:ne,imageReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return oe(e,t);n={src:ie(r.url||""),alt:t.alt},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"img",n)},image:function(e,t){var n={src:ie(t.url),alt:t.alt};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"img",n)},inlineCode:function(e,t){return e(t,"code",[s("text",se(t.value))])},linkReference:function(e,t){var n,r=e.definition(t.identifier);if(!r)return oe(e,t);n={href:ie(r.url||"")},null!==r.title&&void 0!==r.title&&(n.title=r.title);return e(t,"a",n,w(e,t))},link:function(e,t){var n={href:ie(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);return e(t,"a",n,w(e,t))},listItem:function(e,t,n){var r,a,i,o,l,c=t.children[0],d=w(e,t),_=n?function(e){var t=e.spread,n=e.children,r=n.length,a=-1;for(;!t&&++a<r;)t=le(n[a]);return t}(n):le(t),u={};if(_)r=d;else for(r=[],o=d.length,i=-1;++i<o;)"p"===(l=d[i]).tagName?r=r.concat(l.children):r.push(l);"boolean"==typeof t.checked&&(!_||c&&"paragraph"===c.type||r.unshift(e(null,"p",[])),0!==(a=_?r[0].children:r).length&&a.unshift(s("text"," ")),a.unshift(e(null,"input",{type:"checkbox",checked:t.checked,disabled:!0})),u.className=["task-list-item"]);_&&0!==r.length&&(r=F(r,!0));return e(t,"li",u,r)},list:G,paragraph:function(e,t){return e(t,"p",w(e,t))},root:function(e,t){return e.augment(t,s("root",F(w(e,t))))},strong:function(e,t){return e(t,"strong",w(e,t))},table:function(e,t){var n,r,a,i,o,s=t.children,l=s.length,c=t.align,d=c.length,_=[];for(;l--;){for(r=s[l].children,i=0===l?"th":"td",n=d,a=[];n--;)o=r[n],a[n]=e(o,i,{align:c[n]},o?w(e,o):[]);_[l]=e(s[l],"tr",F(a,!0))}return e(t,"table",F([e(_[0].position,"thead",F([_[0]],!0)),e({start:O.start(_[1]),end:O.end(_[_.length-1])},"tbody",F(_.slice(1),!0))],!0))},text:function(e,t){return e.augment(t,s("text",ce(t.value)))},thematicBreak:U,toml:me,yaml:me,definition:me,footnoteDefinition:me};function me(){return null}var pe=function(t,n){var r=function(t,n){var r=n||{},a=r.allowDangerousHTML,i={};return s.dangerous=a,s.definition=I(t,r),s.footnoteById=i,s.footnoteOrder=[],s.augment=o,s.handlers=e(ue,r.handlers||{}),f(t,"footnoteDefinition",(function(e){var t=String(e.identifier).toUpperCase();ge.call(i,t)||(i[t]=e)})),s;function o(t,n){var r,a;return t&&"data"in t&&(r=t.data,"element"===n.type&&r.hName&&(n.tagName=r.hName),"element"===n.type&&r.hProperties&&(n.properties=e(n.properties,r.hProperties)),n.children&&r.hChildren&&(n.children=r.hChildren)),a=t&&t.position?t:{position:t},A(a)||(n.position={start:O.start(a),end:O.end(a)}),n}function s(e,t,n,r){return null==r&&"object"==typeof n&&"length"in n&&(r=n,n={}),o(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}(t,n),a=L(r,t),i=B(r);i&&(a.children=a.children.concat(s("text","\n"),i));return a},ge={}.hasOwnProperty;var Ee=pe,he=function(e,t){e&&!e.process&&(t=e,e=null);return e?function(e,t){return function(n,r,a){e.run(Ee(n,t),r,(function(e){a(e)}))}}(e,t):function(e){return function(t){return Ee(t,e)}}(t)};var Se=function(e){return Te.test("number"==typeof e?fe(e):e.charAt(0))},fe=String.fromCharCode,Te=/\s/;var be="|",Ce="||";function Ne(e,t){return e.indexOf(Ce,t)}var ve=function(){function e(e,t,n){if(this.options.gfm&&t.substr(0,2)===Ce&&t.substr(0,4)!==Ce+Ce&&!Se(t.charAt(2))){var r="",a="",i="",o="",s=1,l=t.length,c=e.now();for(c.column+=2,c.offset+=2;++s<l;){if(!((r=t.charAt(s))!==be||a!==be||i&&Se(i)))return!!n||e(Ce+o+Ce)({type:"kbd",children:this.tokenizeInline(o,c),data:{hName:"kbd"}});o+=a,i=a,a=r}}}e.locator=Ne;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.kbd=e,r.splice(r.indexOf("text"),0,"kbd");var a=this.Compiler;a&&(a.prototype.visitors.kbd=function(e){return"||".concat(this.all(e).join(""),"||")})};var Re={isRemarkParser:function(e){return Boolean(e&&e.prototype&&e.prototype.blockTokenizers)},isRemarkCompiler:function(e){return Boolean(e&&e.prototype&&e.prototype.visitors)}},Oe=function(e){const t=this.Parser,n=this.Compiler;Re.isRemarkParser(t)&&function(e,t){const n=e.prototype,r=n.inlineMethods;function a(e,n,r){const a=n.length;let i,o,s,l,c,d,_,u=!1,m=!1,p=0;if(n.charCodeAt(p)===Me&&(m=!0,p++),n.charCodeAt(p)===Ie){if(p++,m)return!!r||e(n.slice(0,p))({type:"text",value:"$"});if(n.charCodeAt(p)===Ie&&(u=!0,p++),(s=n.charCodeAt(p))!==ye&&s!==Ae){for(l=p;p<a;){if(o=s,s=n.charCodeAt(p+1),o===Ie){if((i=n.charCodeAt(p-1))!==ye&&i!==Ae&&(s!=s||s<De||s>xe)&&(!u||s===Ie)){c=p-1,p++,u&&p++,d=p;break}}else o===Me&&(p++,s=n.charCodeAt(p+1));p++}if(void 0!==d)return!!r||(_=n.slice(l,c+1),e(n.slice(0,d))({type:"inlineMath",value:_,data:{hName:"span",hProperties:{className:we.concat(u&&t.inlineMathDouble?[Le]:[])},hChildren:[{type:"text",value:_}]}}))}}}a.locator=function(e,t){return e.indexOf("$",t)},n.inlineTokenizers.math=a,r.splice(r.indexOf("text"),0,"math")}(t,e);Re.isRemarkCompiler(n)&&function(e){e.prototype.visitors.inlineMath=function(e){let t="$";return(e.data&&e.data.hProperties&&e.data.hProperties.className||[]).includes(Le)&&(t="$$"),t+e.value+t}}(n)};const Ae=9,ye=32,Ie=36,De=48,xe=57,Me=92,we=["math","math-inline"],Le="math-display";var Pe=function(){const e=this.Parser,t=this.Compiler;Re.isRemarkParser(e)&&function(e){const t=e.prototype,n=t.blockMethods,r=t.interruptParagraph,a=t.interruptList,i=t.interruptBlockquote;t.blockTokenizers.math=function(e,t,n){var r=t.length,a=0;let i,o,s,l,c,d,_,u,m,p,g;for(;a<r&&t.charCodeAt(a)===Ue;)a++;for(c=a;a<r&&t.charCodeAt(a)===Fe;)a++;if(!((d=a-c)<He)){for(;a<r&&t.charCodeAt(a)===Ue;)a++;for(_=a;a<r;){if((i=t.charCodeAt(a))===Fe)return;if(i===ke)break;a++}if(t.charCodeAt(a)===ke){if(n)return!0;for(o=[],_!==a&&o.push(t.slice(_,a)),a++,s=-1===(s=t.indexOf(Ge,a+1))?r:s;a<r;){for(u=!1,p=a,g=s,l=s,m=0;l>p&&t.charCodeAt(l-1)===Ue;)l--;for(;l>p&&t.charCodeAt(l-1)===Fe;)m++,l--;for(d<=m&&t.indexOf(Be,p)===l&&(u=!0,g=l);p<=g&&p-a<c&&t.charCodeAt(p)===Ue;)p++;if(u)for(;g>p&&t.charCodeAt(g-1)===Ue;)g--;if(u&&p===g||o.push(t.slice(p,g)),u)break;a=s+1,s=-1===(s=t.indexOf(Ge,a+1))?r:s}return o=o.join("\n"),e(t.slice(0,s))({type:"math",value:o,data:{hName:"div",hProperties:{className:Ye.concat()},hChildren:[{type:"text",value:o}]}})}}},n.splice(n.indexOf("fencedCode")+1,0,"math"),r.splice(r.indexOf("fencedCode")+1,0,["math"]),a.splice(a.indexOf("fencedCode")+1,0,["math"]),i.splice(i.indexOf("fencedCode")+1,0,["math"])}(e);Re.isRemarkCompiler(t)&&function(e){e.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"}}(t)};const ke=10,Ue=32,Fe=36,Ge="\n",Be="$",He=2,Ye=["math","math-display"];var Ve=function(e){null==e&&(e={});Pe.call(this,e),Oe.call(this,e)};var ze=v((function(e,t){!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;t.nodeType?n&&(n.hljs=e({})):e(t)}((function(e){var t=[],n=Object.keys,r={},a={},i=/^(no-?highlight|plain|text)$/i,o=/\blang(?:uage)?-([\w-]+)\b/i,s=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,l="</span>",c={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},d="of and for in not or if then".split(" ");function _(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function u(e){return e.nodeName.toLowerCase()}function m(e){return i.test(e)}function p(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach((function(e){for(t in e)n[t]=e[t]})),n}function g(e){var t=[];return function e(n,r){for(var a=n.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(t.push({event:"start",offset:r,node:a}),r=e(a,r),u(a).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:a}));return r}(e,0),t}function E(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(t){return p(e,{variants:null},t)}))),e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[p(e,{starts:e.starts?p(e.starts):null})]:[e]}function h(e,t){return t?Number(t):(n=e,-1!=d.indexOf(n.toLowerCase())?0:1);var n}function S(e){function t(e){return e&&e.source||e}function r(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function a(e){var n,a,i={},o=[],s={},l=1;function c(e,t){i[l]=e,o.push([e,t]),l+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(t)+1}for(var d=0;d<e.contains.length;d++){c(a=e.contains[d],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin)}e.terminator_end&&c("end",e.terminator_end),e.illegal&&c("illegal",e.illegal);var _=o.map((function(e){return e[1]}));return n=r(function(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,i="",o=0;o<e.length;o++){var s=a+=1,l=t(e[o]);for(o>0&&(i+=n),i+="(";l.length>0;){var c=r.exec(l);if(null==c){i+=l;break}i+=l.substring(0,c.index),l=l.substring(c.index+c[0].length),"\\"==c[0][0]&&c[1]?i+="\\"+String(Number(c[1])+s):(i+=c[0],"("==c[0]&&a++)}i+=")"}return i}(_,"|"),!0),s.lastIndex=0,s.exec=function(t){var r;if(0===o.length)return null;n.lastIndex=s.lastIndex;var a=n.exec(t);if(!a)return null;for(var l=0;l<a.length;l++)if(null!=a[l]&&null!=i[""+l]){r=i[""+l];break}return"string"==typeof r?(a.type=r,a.extra=[e.illegal,e.terminator_end]):(a.type="begin",a.rule=r),a},s}!function i(o,s){o.compiled||(o.compiled=!0,o.keywords=o.keywords||o.beginKeywords,o.keywords&&(o.keywords=function(e,t){var r={};return"string"==typeof e?a("keyword",e):n(e).forEach((function(t){a(t,e[t])})),r;function a(e,n){t&&(n=n.toLowerCase()),n.split(" ").forEach((function(t){var n=t.split("|");r[n[0]]=[e,h(n[0],n[1])]}))}}(o.keywords,e.case_insensitive)),o.lexemesRe=r(o.lexemes||/\w+/,!0),s&&(o.beginKeywords&&(o.begin="\\b("+o.beginKeywords.split(" ").join("|")+")\\b"),o.begin||(o.begin=/\B|\b/),o.beginRe=r(o.begin),o.endSameAsBegin&&(o.end=o.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),o.end&&(o.endRe=r(o.end)),o.terminator_end=t(o.end)||"",o.endsWithParent&&s.terminator_end&&(o.terminator_end+=(o.end?"|":"")+s.terminator_end)),o.illegal&&(o.illegalRe=r(o.illegal)),null==o.relevance&&(o.relevance=1),o.contains||(o.contains=[]),o.contains=Array.prototype.concat.apply([],o.contains.map((function(e){return E("self"===e?o:e)}))),o.contains.forEach((function(e){i(e,o)})),o.starts&&i(o.starts,s),o.terminators=a(o))}(e)}function f(e,t,n,a){function i(e,t){var n=E.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function o(e,t,n,r){if(!n&&""===t)return"";if(!e)return t;var a='<span class="'+(r?"":c.classPrefix);return(a+=e+'">')+t+(n?"":l)}function s(){N+=null!=b.subLanguage?function(){var e="string"==typeof b.subLanguage;if(e&&!r[b.subLanguage])return _(R);var t=e?f(b.subLanguage,R,!0,C[b.subLanguage]):T(R,b.subLanguage.length?b.subLanguage:void 0);return b.relevance>0&&(O+=t.relevance),e&&(C[b.subLanguage]=t.top),o(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!b.keywords)return _(R);for(r="",t=0,b.lexemesRe.lastIndex=0,n=b.lexemesRe.exec(R);n;)r+=_(R.substring(t,n.index)),(e=i(b,n))?(O+=e[1],r+=o(e[0],_(n[0]))):r+=_(n[0]),t=b.lexemesRe.lastIndex,n=b.lexemesRe.exec(R);return r+_(R.substr(t))}(),R=""}function d(e){N+=e.className?o(e.className,"",!0):"",b=Object.create(e,{parent:{value:b}})}function u(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=function(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(t)),n.skip?R+=t:(n.excludeBegin&&(R+=t),s(),n.returnBegin||n.excludeBegin||(R=t)),d(n),n.returnBegin?0:t.length}function m(e){var t=e[0],n=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(b,t);if(n){var r=b;r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t),s(),r.excludeEnd&&(R=t));do{b.className&&(N+=l),b.skip||b.subLanguage||(O+=b.relevance),b=b.parent}while(b!==n.parent);return n.starts&&(n.endSameAsBegin&&(n.starts.endRe=n.endRe),d(n.starts)),r.returnEnd?0:t.length}}var p={};function g(e,r){var a=r&&r[0];if(R+=e,null==a)return s(),0;if("begin"==p.type&&"end"==r.type&&p.index==r.index&&""===a)return R+=t.slice(r.index,r.index+1),1;if(p=r,"begin"===r.type)return u(r);if("illegal"===r.type&&!n)throw new Error('Illegal lexeme "'+a+'" for mode "'+(b.className||"<unnamed>")+'"');if("end"===r.type){var i=m(r);if(null!=i)return i}return R+=a,a.length}var E=v(e);if(!E)throw new Error('Unknown language: "'+e+'"');S(E);var h,b=a||E,C={},N="";for(h=b;h!==E;h=h.parent)h.className&&(N=o(h.className,"",!0)+N);var R="",O=0;try{for(var A,y,I=0;b.terminators.lastIndex=I,A=b.terminators.exec(t);)y=g(t.substring(I,A.index),A),I=A.index+y;for(g(t.substr(I)),h=b;h.parent;h=h.parent)h.className&&(N+=l);return{relevance:O,value:N,illegal:!1,language:e,top:b}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:_(t)};throw e}}function T(e,t){t=t||c.languages||n(r);var a={relevance:0,value:_(e)},i=a;return t.filter(v).filter(R).forEach((function(t){var n=f(t,e,!1);n.language=t,n.relevance>i.relevance&&(i=n),n.relevance>a.relevance&&(i=a,a=n)})),i.language&&(a.second_best=i),a}function b(e){return c.tabReplace||c.useBR?e.replace(s,(function(e,t){return c.useBR&&"\n"===e?"<br>":c.tabReplace?t.replace(/\t/g,c.tabReplace):""})):e}function C(e){var n,r,i,s,l,d=function(e){var t,n,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=o.exec(i))return v(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t<r;t++)if(m(a=i[t])||v(a))return a}(e);m(d)||(c.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,l=n.textContent,i=d?f(d,l,!0):T(l),(r=g(n)).length&&((s=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=i.value,i.value=function(e,n,r){var a=0,i="",o=[];function s(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function l(e){i+="<"+u(e)+t.map.call(e.attributes,(function(e){return" "+e.nodeName+'="'+_(e.value).replace('"',"&quot;")+'"'})).join("")+">"}function c(e){i+="</"+u(e)+">"}function d(e){("start"===e.event?l:c)(e.node)}for(;e.length||n.length;){var m=s();if(i+=_(r.substring(a,m[0].offset)),a=m[0].offset,m===e){o.reverse().forEach(c);do{d(m.splice(0,1)[0]),m=s()}while(m===e&&m.length&&m[0].offset===a);o.reverse().forEach(l)}else"start"===m[0].event?o.push(m[0].node):o.pop(),d(m.splice(0,1)[0])}return i+_(r.substr(a))}(r,g(s),l)),i.value=b(i.value),e.innerHTML=i.value,e.className=function(e,t,n){var r=t?a[t]:n,i=[e.trim()];return e.match(/\bhljs\b/)||i.push("hljs"),-1===e.indexOf(r)&&i.push(r),i.join(" ").trim()}(e.className,d,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function N(){if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");t.forEach.call(e,C)}}function v(e){return e=(e||"").toLowerCase(),r[e]||r[a[e]]}function R(e){var t=v(e);return t&&!t.disableAutodetect}return e.highlight=f,e.highlightAuto=T,e.fixMarkup=b,e.highlightBlock=C,e.configure=function(e){c=p(c,e)},e.initHighlighting=N,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",N,!1),addEventListener("load",N,!1)},e.registerLanguage=function(t,n){var i=r[t]=n(e);i.rawDefinition=n.bind(null,e),i.aliases&&i.aliases.forEach((function(e){a[e]=t}))},e.listLanguages=function(){return n(r)},e.getLanguage=v,e.autoDetection=R,e.inherit=p,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var a=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e}))})),qe=v((function(e){!function(){var t;function n(e){for(var t,n,r,a,i=1,o=[].slice.call(arguments),s=0,l=e.length,c="",d=!1,_=!1,u=function(){return o[i++]},m=function(){for(var n="";/\d/.test(e[s]);)n+=e[s++],t=e[s];return n.length>0?parseInt(n):null};s<l;++s)if(t=e[s],d)switch(d=!1,"."==t?(_=!1,t=e[++s]):"0"==t&&"."==e[s+1]?(_=!0,t=e[s+=2]):_=!0,a=m(),t){case"b":c+=parseInt(u(),10).toString(2);break;case"c":c+="string"==typeof(n=u())||n instanceof String?n:String.fromCharCode(parseInt(n,10));break;case"d":c+=parseInt(u(),10);break;case"f":r=String(parseFloat(u()).toFixed(a||6)),c+=_?r:r.replace(/^0/,"");break;case"j":c+=JSON.stringify(u());break;case"o":c+="0"+parseInt(u(),10).toString(8);break;case"s":c+=u();break;case"x":c+="0x"+parseInt(u(),10).toString(16);break;case"X":c+="0x"+parseInt(u(),10).toString(16).toUpperCase();break;default:c+=t}else"%"===t?d=!0:c+=t;return c}(t=e.exports=n).format=n,t.vsprintf=function(e,t){return n.apply(null,[e].concat(t))},"undefined"!=typeof console&&"function"==typeof console.log&&(t.printf=function(){console.log(n.apply(null,arguments))})}()})),Ke=Qe(Error),We=Ke;function Qe(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=qe.apply(null,arguments)),new e(t)}}function $e(){}Ke.eval=Qe(EvalError),Ke.range=Qe(RangeError),Ke.reference=Qe(ReferenceError),Ke.syntax=Qe(SyntaxError),Ke.type=Qe(TypeError),Ke.uri=Qe(URIError),Ke.create=Qe,$e.prototype=ze;var je=new $e,Xe=je;je.highlight=function(e,t,n){var r=(n||{}).prefix;null==r&&(r=et);return St(gt(e,t,!0,r))},je.highlightAuto=mt,je.registerLanguage=function(e,t){var n=t(je);n.rawDefinition=t.bind(null,je),_t[e]=n,dt.push(e),n.aliases&&pt(e,n.aliases)},je.listLanguages=function(){return dt.concat()},je.registerAlias=pt,je.getLanguage=ft;var Ze=ze.inherit,Je={}.hasOwnProperty,et="hljs-",tt="case_insensitive",nt="cached_variants",rt="terminator_end",at=" ",it="|",ot="(",st=")",lt="\\",ct=["of","and","for","in","not","or","if","then"],dt=[],_t={},ut={};function mt(e,t){var n,r,a,i,o=t||{},s=o.subset||dt,l=o.prefix,c=s.length,d=-1;if(null==l&&(l=et),"string"!=typeof e)throw We("Expected `string` for value, got `%s`",e);for(r=St({}),n=St({});++d<c;)ft(i=s[d])&&((a=St(gt(i,e,!1,l))).language=i,a.relevance>r.relevance&&(r=a),a.relevance>n.relevance&&(r=n,n=a));return r.language&&(n.secondBest=r),n}function pt(e,t){var n,r,a,i,o=e;for(n in t&&((o={})[e]=t),o)for(a=(r="string"==typeof(r=o[n])?[r]:r).length,i=-1;++i<a;)ut[r[i]]=n}function gt(e,t,n,r,a){var i,o,s,l,c,d,_,u,m={},p={},g=[],E="",h=0;if("string"!=typeof e)throw We("Expected `string` for name, got `%s`",e);if("string"!=typeof t)throw We("Expected `string` for value, got `%s`",t);if(i=ft(e),s=o=a||i,l=u=[],!i)throw We("Unknown language: `%s` is not registered",e);!function(e){function t(a,i){a.compiled||(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords&&(a.keywords=function(e,t){var n,r={};if("string"==typeof e)a("keyword",e);else for(n in e)a(n,e[n]);return r;function a(e,n){!function(e,t){var n,a=t.length,i=-1;for(;++i<a;)n=t[i].split(it),r[n[0]]=[e,Number(n[1])||Et(n[0])?0:1]}(e,(t?n.toLowerCase():n).split(at))}}(a.keywords,e[tt])),a.lexemesRe=n(a.lexemes||/\w+/,!0),i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(at).join(it)+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a[rt]=r(a.end)||"",a.endsWithParent&&i[rt]&&(a[rt]+=(a.end?it:"")+i[rt])),a.illegal&&(a.illegalRe=n(a.illegal)),void 0===a.relevance&&(a.relevance=1),a.contains=function(e,n){var r,a=[],i=e.length,o=-1;for(;++o<i;)r=e[o],a=a.concat(ht("self"===r?n:r));i=a.length,o=-1;for(;++o<i;)t(a[o],n);return a}(a.contains||[],a),a.starts&&t(a.starts,i),a.terminators=function(e){var t,a,i={},o=[],s={},l=1,c=e.contains,d=c.length,_=-1,u=[];for(;++_<d;)m(a=c[_],a.beginKeywords?"\\.?(?:"+a.begin+")\\.?":a.begin);e[rt]&&m("end",e[rt]);e.illegal&&m("illegal",e.illegal);d=o.length,_=-1;for(;++_<d;)u[_]=o[_][1];return t=n(function(e,t){var n,a,i,o,s=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9]\d*)|\\./,l=0,c="",d=e.length,_=-1;for(;++_<d;){for(n=e[_],i=r(n),a=l+=1,0!==_&&(c+=t),c+=ot;i.length>0;){if(null===(o=s.exec(i))){c+=i;break}c+=i.slice(0,o.index),i=i.slice(o.index+o[0].length),o[0][0]===lt&&o[1]?c+=lt+String(Number(o[1])+a):(c+=o[0],o[0]===ot&&l++)}c+=st}return c}(u,it),!0),s={lastIndex:0,exec:function(n){var r,a,l,c;if(0===o.length)return null;if(t.lastIndex=s.lastIndex,!(c=t.exec(n)))return null;r=c.length,a=-1;for(;++a<r;)if(void 0!==c[a]&&void 0!==i[a]){l=i[a];break}"string"==typeof l?(c.type=l,c.extra=[e.illegal,e.terminator_end]):(c.type="begin",c.rule=l);return c}};function m(e,t){i[l]=e,o.push([e,t]),l+=new RegExp(t.toString()+it).exec("").length}}(a))}function n(t,n){return new RegExp(r(t),"m"+(e[tt]?"i":"")+(n?"g":""))}function r(e){return e&&e.source||e}t(e)}(i);try{for(o.terminators.lastIndex=0,c=0,_=o.terminators.exec(t);_;)d=T(t.slice(c,_.index),_),c=_.index+d,o.terminators.lastIndex=c,_=o.terminators.exec(t);for(T(t.slice(c)),s=o;s.parent;)s.className&&y(),s=s.parent;return{relevance:h,value:l,illegal:!1,language:e,top:o}}catch(e){if(-1===e.message.indexOf("Illegal"))throw e;return{relevance:0,illegal:!0,value:v(t,[])}}function S(e){var t=e[0],n=e.rule;return n&&n.endSameAsBegin&&(n.endRe=function(e){return new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(t)),n.skip?E+=t:(n.excludeBegin&&(E+=t),N(C(),l),n.returnBegin||n.excludeBegin||(E=t)),b(n),n.returnBegin?0:t.length}function f(e){var n=e[0],r=t.slice(e.index),a=function e(t,n){if(function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(o,r);if(a){var i=o;i.skip?E+=n:(i.returnEnd||i.excludeEnd||(E+=n),N(C(),l),i.excludeEnd&&(E=n));do{o.className&&y(),o.skip||o.subLanguage||(h+=o.relevance),o=o.parent}while(o!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),b(a.starts)),i.returnEnd?0:n.length}}function T(e,r){var a,i=r&&r[0];if(E+=e,void 0===i)return N(C(),l),0;if("begin"===m.type&&"end"===r.type&&m.index===r.index&&""===i)return E+=t.slice(r.index,r.index+1),1;if(m=r,"begin"===r.type)return S(r);if("end"===r.type&&void 0!==(a=f(r)))return a;if("illegal"===r.type&&!n)throw We('Illegal lexeme "%s" for mode "%s"',i,o.className||"<unnamed>");return E+=i,i.length}function b(e){var t;e.className&&(t=O(e.className,[])),t&&(l.push(t),g.push(l),l=t.children),o=Object.create(e,{parent:{value:o}})}function C(){var e=o.subLanguage?function(){var e,t="string"==typeof o.subLanguage;if(t&&!_t[o.subLanguage])return v(E,[]);e=t?gt(o.subLanguage,E,!0,r,p[o.subLanguage]):mt(E,{subset:0===o.subLanguage.length?void 0:o.subLanguage,prefix:r});if(!e.language)return[R(E)];o.relevance>0&&(h+=e.relevance);t&&(p[o.subLanguage]=e.top);return[O(e.language,e.value,!0)]}():function(){var e,t,n,r,a=[];if(!o.keywords)return v(E,a);e=0,o.lexemesRe.lastIndex=0,t=o.lexemesRe.exec(E);for(;t;)v(E.slice(e,t.index),a),(r=A(o,t))?(h+=r[1],n=O(r[0],[]),a.push(n),v(t[0],n.children)):v(t[0],a),e=o.lexemesRe.lastIndex,t=o.lexemesRe.exec(E);return v(E.slice(e),a),a}();return E="",e}function N(e,t){for(var n,r=e.length,a=-1;++a<r;)"text"===(n=e[a]).type?v(n.value,t):t.push(n)}function v(e,t){var n;return e&&((n=t[t.length-1])&&"text"===n.type?n.value+=e:t.push(R(e))),t}function R(e){return{type:"text",value:e}}function O(e,t,n){return{type:"element",tagName:"span",properties:{className:[(n?"":r)+e]},children:t}}function A(e,t){var n=t[0];return i[tt]&&(n=n.toLowerCase()),Je.call(e.keywords,n)&&e.keywords[n]}function y(){l=g.pop()||u}}function Et(e){return-1!==ct.indexOf(e.toLowerCase())}function ht(e){var t,n,r,a;if(e.variants&&!e[nt]){for(t=(r=e.variants).length,n=-1,a=[];++n<t;)a[n]=Ze(e,{variants:null},r[n]);e[nt]=a}return e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?[Ze(e,{starts:e.starts?Ze(e.starts):null})]:[e]}function St(e){return{relevance:e.relevance||0,language:e.language||null,value:e.value||[]}}function ft(e){return e=e.toLowerCase(),_t[e]||_t[ut[e]]}var Tt=Xe;function bt({include:e,exclude:t}={}){return e=>f(e,"code",n);function n(n){let{lang:r,data:a}=n;!r||e&&-1===e.indexOf(r)||t&&-1!==t.indexOf(r)||(a||(a={},n.data=a),a.hProperties||(a.hProperties={}),a.hChildren=Tt.highlight(r,n.value).value,a.hProperties.className=["hljs",...a.hProperties.className||[],"language-"+r])}}function Ct(e){let t=[];return"paragraph"===e[0].type&&(t=e[0].children),t[0].value=t[0].value.trim(),"blockquote"===e[e.length-1].type&&(e[e.length-1].type="div",e[e.length-1].data={hName:"blockquote",hProperties:{className:"hiden_block_quote"}}),t=t.concat(e.slice(1))}Xe.registerLanguage("1c",(function(e){var t="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",r="null истина ложь неопределено",a=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{case_insensitive:!0,lexemes:t,keywords:{keyword:n,built_in:"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",class:"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",type:"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",literal:r},contains:[{className:"meta",lexemes:t,begin:"#|&",end:"$",keywords:{"meta-keyword":n+"загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент "},contains:[s]},{className:"function",lexemes:t,variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",lexemes:t,begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{keyword:"знач",literal:r},contains:[a,i,o]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},a,i,o]}})),Xe.registerLanguage("abnf",(function(e){var t="^[a-zA-Z][a-zA-Z0-9-]*",n="[!@#$^&',?+~`|:]",r=e.COMMENT(";","$"),a={className:"attribute",begin:t+"(?=\\s*=)"};return{illegal:n,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"].join(" "),contains:[a,r,{className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},{className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},{className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},{className:"symbol",begin:/%[si]/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}})),Xe.registerLanguage("accesslog",(function(e){var t=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{contains:[{className:"number",begin:"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b",relevance:5},{className:"number",begin:"\\b\\d+\\b",relevance:0},{className:"string",begin:'"('+t.join("|")+")",end:'"',keywords:t.join(" "),illegal:"\\n",relevance:5,contains:[{begin:"HTTP/[12]\\.\\d",relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:"\\n",relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:"\\n",relevance:0},{className:"string",begin:'"Mozilla/\\d\\.\\d \\(',end:'"',illegal:"\\n",relevance:3},{className:"string",begin:'"',end:'"',illegal:"\\n",relevance:0}]}})),Xe.registerLanguage("actionscript",(function(e){var t={className:"rest_arg",begin:"[.]{3}",end:"[a-zA-Z_$][a-zA-Z0-9_$]*",relevance:10};return{aliases:["as"],keywords:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"class",beginKeywords:"package",end:"{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.TITLE_MODE]},{className:"meta",beginKeywords:"import include",end:";",keywords:{"meta-keyword":"import include"}},{className:"function",beginKeywords:"function",end:"[{;]",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t]},{begin:":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)"}]},e.METHOD_GUARD],illegal:/#/}})),Xe.registerLanguage("ada",(function(e){var t="[A-Za-z](_?[A-Za-z0-9.])*",n=e.COMMENT("--","$"),r={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:"[]{}%#'\"",contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:t,endsParent:!0,relevance:0}]};return{case_insensitive:!0,keywords:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},contains:[n,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"symbol",begin:"'"+t},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[n,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:"[]{}%#'\""},r,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:"[]{}%#'\""}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:"[]{}%#'\""},r]}})),Xe.registerLanguage("angelscript",(function(e){var t={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},r={className:"keyword",begin:"<",end:">",contains:[t,n]};return t.contains=[r],n.contains=[r],{aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{beginKeywords:"interface namespace",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:"{",illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}})),Xe.registerLanguage("apache",(function(e){var t={className:"number",begin:"[\\$%]\\d+"};return{aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"</?",end:">"},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",t]},t,e.QUOTE_STRING_MODE]}}],illegal:/\S/}})),Xe.registerLanguage("applescript",(function(e){var t=e.inherit(e.QUOTE_STRING_MODE,{illegal:""}),n={className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_NUMBER_MODE,t]},r=e.COMMENT("--","$"),a=[r,e.COMMENT("\\(\\*","\\*\\)",{contains:["self",r]}),e.HASH_COMMENT_MODE];return{aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[t,e.C_NUMBER_MODE,{className:"built_in",begin:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{className:"literal",begin:"\\b(text item delimiters|current application|missing value)\\b"},{className:"keyword",begin:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{beginKeywords:"on",illegal:"[${=;\\n]",contains:[e.UNDERSCORE_TITLE_MODE,n]}].concat(a),illegal:"//|->|=>|\\[\\["}})),Xe.registerLanguage("arcade",(function(e){var t="[A-Za-z_][0-9A-Za-z_]*",n={keyword:"if for while var new function do return void else break",literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined",built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year "},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var o=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["arcade"],keywords:n,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"},r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}})),Xe.registerLanguage("cpp",(function(e){var t={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},n={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(n,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i=e.IDENT_RE+"\\s*\\(",o={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},s=[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,n];return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:o,illegal:"</",contains:s.concat([a,{begin:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",end:">",keywords:o,contains:["self",t]},{begin:e.IDENT_RE+"::",keywords:o},{variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:o,contains:s.concat([{begin:/\(/,end:/\)/,keywords:o,contains:s.concat(["self"]),relevance:0}]),relevance:0},{className:"function",begin:"("+e.IDENT_RE+"[\\*&\\s]+)+"+i,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:o,illegal:/[^\w\s\*&]/,contains:[{begin:i,returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t,{begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r,t]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin:/</,end:/>/,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:a,strings:n,keywords:o}}})),Xe.registerLanguage("arduino",(function(e){var t="boolean byte word String",n="setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",r="DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW",a=e.getLanguage("cpp").rawDefinition(),i=a.keywords;return i.keyword+=" "+t,i.literal+=" "+r,i.built_in+=" "+n,a})),Xe.registerLanguage("armasm",(function(e){return{case_insensitive:!0,aliases:["arm"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?",end:"\\s"},e.COMMENT("[;@]","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"[=#]\\w+"}],relevance:0}]}})),Xe.registerLanguage("xml",(function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}})),Xe.registerLanguage("asciidoc",(function(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}})),Xe.registerLanguage("aspectj",(function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance";return{keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t+" get set args call",excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",keywords:t+" get set args call",relevance:0},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:t,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}})),Xe.registerLanguage("autohotkey",(function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}})),Xe.registerLanguage("autoit",(function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},r={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,r,a,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[r,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},r,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,r,a]}]}]}})),Xe.registerLanguage("avrasm",(function(e){return{case_insensitive:!0,lexemes:"\\.?"+e.IDENT_RE,keywords:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),e.C_NUMBER_MODE,e.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}})),Xe.registerLanguage("awk",(function(e){return{keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}})),Xe.registerLanguage("axapta",(function(e){return{keywords:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]}})),Xe.registerLanguage("bash",(function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}})),Xe.registerLanguage("basic",(function(e){return{case_insensitive:!0,illegal:"^.",lexemes:"[a-zA-Z][a-zA-Z0-9_$%!#]*",keywords:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("REM","$",{relevance:10}),e.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",relevance:10},{className:"number",begin:"\\b([0-9]+[0-9edED.]*[#!]?)",relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{className:"number",begin:"(&[oO][0-7]{1,6})"}]}})),Xe.registerLanguage("bnf",(function(e){return{contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,starts:{end:/$/,contains:[{begin:/</,end:/>/},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}}]}})),Xe.registerLanguage("brainfuck",(function(e){var t={className:"literal",begin:"[\\+\\-]",relevance:0};return{aliases:["bf"],contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|\-\-)/,contains:[t]},t]}})),Xe.registerLanguage("cal",(function(e){var t="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},i={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[r,a]}].concat(n)},o={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[e.TITLE_MODE,i]};return{case_insensitive:!0,keywords:{keyword:t,literal:"false true"},illegal:/\/\*/,contains:[r,a,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,o,i]}})),Xe.registerLanguage("capnproto",(function(e){return{aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}})),Xe.registerLanguage("ceylon",(function(e){var t="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:t,relevance:10},r=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[n]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return n.contains=r,{keywords:{keyword:t+" shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",meta:"doc by license see throws tagged"},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}})),Xe.registerLanguage("clean",(function(e){return{aliases:["clean","icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}})),Xe.registerLanguage("clojure",(function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b(true|false|nil)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,c.contains=[s],{aliases:["clj"],illegal:/\S/,contains:[_,a,l,c,i,d,s,r,o]}})),Xe.registerLanguage("clojure-repl",(function(e){return{contains:[{className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/,subLanguage:"clojure"}}]}})),Xe.registerLanguage("cmake",(function(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}})),Xe.registerLanguage("coffeescript",(function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.BINARY_NUMBER_MODE,e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[r,e.HASH_COMMENT_MODE]},{begin:"//[gim]*",relevance:0},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("###","###"),e.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}})),Xe.registerLanguage("coq",(function(e){return{keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}})),Xe.registerLanguage("cos",(function(e){return{case_insensitive:!0,aliases:["cos","cls"],keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,end:/>\s*>/,subLanguage:"xml"}]}})),Xe.registerLanguage("crmsh",(function(e){var t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml";return{aliases:["crm","pcmk"],case_insensitive:!0,keywords:{keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",literal:"Master Started Slave Stopped start promote demote stop monitor true false"},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}},{beginKeywords:"primitive rsc_template",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{className:"title",end:"[\\$\\w_][\\w_-]*"}},{beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",begin:/([A-Za-z\$_\#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",end:"/?>",relevance:0}]}})),Xe.registerLanguage("crystal",(function(e){var t="(_*[ui](8|16|32|64|128))?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",r="[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",a={keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",literal:"false nil true"},i={className:"subst",begin:"#{",end:"}",keywords:a},o={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{begin:"\\{%",end:"%\\}"}],keywords:a};function s(e,t){var n=[{begin:e,end:t}];return n[0].contains=n,n}var l={className:"string",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%[Qwi]?\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%[Qwi]?{",end:"}",contains:s("{","}")},{begin:"%[Qwi]?<",end:">",contains:s("<",">")},{begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},c={className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%q\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%q{",end:"}",contains:s("{","}")},{begin:"%q<",end:">",contains:s("<",">")},{begin:"%q\\|",end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},d={begin:"(?!%})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*",keywords:"case if select unless until when while",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"//[a-z]*",relevance:0},{begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},_=[o,l,c,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:"%r\\(",end:"\\)",contains:s("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:s("\\[","\\]")},{begin:"%r{",end:"}",contains:s("{","}")},{begin:"%r<",end:">",contains:s("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},d,{className:"meta",begin:"@\\[",end:"\\]",contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"})]},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{beginKeywords:"annotation",end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:r})],relevance:10},{className:"function",beginKeywords:"def",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},{className:"function",beginKeywords:"fun macro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})],relevance:5},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":",contains:[l,{begin:n}],relevance:0},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)"},{begin:"\\b([1-9][0-9_]*|0)"+t}],relevance:0}];return i.contains=_,o.contains=_.slice(1),{aliases:["cr"],lexemes:"[a-zA-Z_]\\w*[!?=]?",keywords:a,contains:_}})),Xe.registerLanguage("cs",(function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},a=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},l={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},c=e.inherit(l,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],o.contains=[c,s,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[l,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,n,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[d,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}})),Xe.registerLanguage("csp",(function(e){return{case_insensitive:!1,lexemes:"[a-zA-Z][a-zA-Z0-9_-]*",keywords:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}})),Xe.registerLanguage("css",(function(e){var t={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}})),Xe.registerLanguage("d",(function(e){var t="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",r={className:"number",begin:"\\b"+t+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},a={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+t+"(i|[fF]i|Li))",relevance:0},i={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},o={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},o,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},a,r,i,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}})),Xe.registerLanguage("markdown",(function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}})),Xe.registerLanguage("dart",(function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:"\\${",end:"}"}],keywords:"true false null this is new super"},r={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[e.C_NUMBER_MODE,r];return{keywords:{keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:"Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window"},contains:[r,e.COMMENT("/\\*\\*","\\*/",{subLanguage:"markdown"}),e.COMMENT("///+\\s*","$",{contains:[{subLanguage:"markdown",begin:".",end:"$"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}})),Xe.registerLanguage("delphi",(function(e){var t="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",n=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"meta",variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},a={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={className:"string",begin:/(#\d+)+/},o={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE]},s={className:"function",beginKeywords:"function constructor destructor procedure",end:/[:;]/,keywords:"function constructor|10 destructor|10 procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,contains:[a,i,r].concat(n)},r].concat(n)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],case_insensitive:!0,keywords:t,illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[a,i,e.NUMBER_MODE,o,s,r].concat(n)}})),Xe.registerLanguage("diff",(function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}})),Xe.registerLanguage("django",(function(e){var t={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:[t]}]}})),Xe.registerLanguage("dns",(function(e){return{aliases:["bind","zone"],keywords:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{className:"number",begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},e.inherit(e.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]}})),Xe.registerLanguage("dockerfile",(function(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}})),Xe.registerLanguage("dos",(function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}})),Xe.registerLanguage("dsconfig",(function(e){return{keywords:"dsconfig",contains:[{className:"keyword",begin:"^dsconfig",end:"\\s",excludeEnd:!0,relevance:10},{className:"built_in",begin:"(list|create|get|set|delete)-(\\w+)",end:"\\s",excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",begin:"--(\\w+)",end:"\\s",excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{className:"string",begin:/'/,end:/'/},{className:"string",begin:"[\\w-?]+:\\w+",end:"\\W",relevance:0},{className:"string",begin:"\\w+-?\\w+",end:"\\W",relevance:0},e.HASH_COMMENT_MODE]}})),Xe.registerLanguage("dts",(function(e){var t={className:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",end:"'",illegal:"."}]},n={className:"number",variants:[{begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:"<",end:">",illegal:"\\n"}]},t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a={className:"variable",begin:"\\&[a-z\\d_]*\\b"},i={className:"meta-keyword",begin:"/[a-z][a-z\\d-]*/"},o={className:"symbol",begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},s={className:"params",begin:"<",end:">",contains:[n,a]},l={className:"class",begin:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,end:/[{;=]/,returnBegin:!0,excludeEnd:!0};return{keywords:"",contains:[{className:"class",begin:"/\\s*{",end:"};",relevance:10,contains:[a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t]},a,i,o,l,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,t,r,{begin:e.IDENT_RE+"::",keywords:""}]}})),Xe.registerLanguage("dust",(function(e){return{aliases:["dst"],case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]}})),Xe.registerLanguage("ebnf",(function(e){var t=e.COMMENT(/\(\*/,/\*\)/);return{illegal:/\S/,contains:[t,{className:"attribute",begin:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},{begin:/=/,end:/;/,contains:[t,{className:"meta",begin:/\?.*\?/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]}})),Xe.registerLanguage("elixir",(function(e){var t="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",n="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",r={className:"subst",begin:"#\\{",end:"}",lexemes:t,keywords:n},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},i={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:t,endsParent:!0})]},o=e.inherit(i,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[a,e.HASH_COMMENT_MODE,o,i,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[a,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:t+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return r.contains=s,{lexemes:t,keywords:n,contains:s}})),Xe.registerLanguage("elm",(function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},r={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]};return{keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[r,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,r,{begin:"{",end:"}",contains:r.contains},t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}})),Xe.registerLanguage("ruby",(function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,o]}]}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,a,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[a,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);o.contains=c,l.contains=c;var d=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:i.concat(d).concat(c)}})),Xe.registerLanguage("erb",(function(e){return{subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}})),Xe.registerLanguage("erlang-repl",(function(e){return{keywords:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10},e.COMMENT("%","$"),{className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\?(::)?([A-Z]\\w*(::)?)+"},{begin:"->"},{begin:"ok"},{begin:"!"},{begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}})),Xe.registerLanguage("erlang",(function(e){var t="[a-z'][a-zA-Z0-9_']*",n="("+t+":"+t+"|"+t+")",r={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},a=e.COMMENT("%","$"),i={className:"number",begin:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",relevance:0},o={begin:"fun\\s+"+t+"/\\d+"},s={begin:n+"\\(",end:"\\)",returnBegin:!0,relevance:0,contains:[{begin:n,relevance:0},{begin:"\\(",end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},l={begin:"{",end:"}",relevance:0},c={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},d={begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},_={begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,relevance:0},{begin:"{",end:"}",relevance:0}]},u={beginKeywords:"fun receive if try case",end:"end",keywords:r};u.contains=[a,o,e.inherit(e.APOS_STRING_MODE,{className:""}),u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];var m=[a,o,u,s,e.QUOTE_STRING_MODE,i,l,c,d,_];s.contains[1].contains=m,l.contains=m,_.contains[1].contains=m;var p={className:"params",begin:"\\(",end:"\\)",contains:m};return{aliases:["erl"],keywords:r,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",contains:[{className:"function",begin:"^"+t+"\\s*\\(",end:"->",returnBegin:!0,illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[p,e.inherit(e.TITLE_MODE,{begin:t})],starts:{end:";|\\.",keywords:r,contains:m}},a,{begin:"^-",end:"\\.",relevance:0,excludeEnd:!0,returnBegin:!0,lexemes:"-"+e.IDENT_RE,keywords:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",contains:[p]},i,e.QUOTE_STRING_MODE,_,c,d,l,{begin:/\.$/}]}})),Xe.registerLanguage("excel",(function(e){return{aliases:["xlsx","xls"],case_insensitive:!0,lexemes:/[a-zA-Z][\w\.]*/,keywords:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0},e.BACKSLASH_ESCAPE,e.QUOTE_STRING_MODE,{className:"number",begin:e.NUMBER_RE+"(%)?",relevance:0},e.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,excludeEnd:!0,illegal:/\n/})]}})),Xe.registerLanguage("fix",(function(e){return{contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}})),Xe.registerLanguage("flix",(function(e){var t={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[{className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/}]};return{keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',end:'"'}]},t,e.C_NUMBER_MODE]}})),Xe.registerLanguage("fortran",(function(e){return{case_insensitive:!0,aliases:["f90","f95"],keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}})),Xe.registerLanguage("fsharp",(function(e){var t={begin:"<",end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*","\\*\\)"),{className:"class",beginKeywords:"type",end:"\\(|=|$",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,t]},{className:"meta",begin:"\\[<",end:">\\]",relevance:10},{className:"symbol",begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE]},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),e.C_NUMBER_MODE]}})),Xe.registerLanguage("gams",(function(e){var t={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},n={className:"symbol",variants:[{begin:/\=[lgenxc]=/},{begin:/\$/}]},r={className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},a={begin:"/",end:"/",keywords:t,contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},i={begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",endsWithParent:!0,contains:[r,a,{className:"comment",begin:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,relevance:0}]};return{aliases:["gms"],case_insensitive:!0,keywords:t,contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"meta-keyword",begin:"^\\$[a-z0-9]+"}]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",end:";",contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,i]},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{beginKeywords:"table",end:"$",contains:[i]},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},n]},e.C_NUMBER_MODE,n]}})),Xe.registerLanguage("gauss",(function(e){var t={keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR"},n=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",keywords:{"meta-keyword":"include"},contains:[{className:"meta-string",begin:'"',end:'"',illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n]},a={begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},i=[{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,a]}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},s=function(t,r,a){var s=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0,contains:[].concat(i)},a||{});return s.contains.push(o),s.contains.push(e.C_NUMBER_MODE),s.contains.push(e.C_BLOCK_COMMENT_MODE),s.contains.push(n),s},l={className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},c={className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},d={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t,relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in",begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},_={begin:/\(/,end:/\)/,relevance:0,keywords:{built_in:t.built_in,literal:t.literal},contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,l,d,c,"self"]};return d.contains.push(_),{aliases:["gss"],case_insensitive:!0,keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/,contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,c,r,{className:"keyword",begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/},s("proc keyword",";"),s("fn","="),{beginKeywords:"for threadfor",end:/;/,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,n,_]},{variants:[{begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},d,a]}})),Xe.registerLanguage("gcode",(function(e){var t=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),e.inherit(e.C_NUMBER_MODE,{begin:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+e.C_NUMBER_RE}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{className:"built_in",begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",end:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}];return{aliases:["nc"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",contains:[{className:"meta",begin:"\\%"},{className:"meta",begin:"([O])([0-9]+)"}].concat(t)}})),Xe.registerLanguage("gherkin",(function(e){return{aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]}})),Xe.registerLanguage("glsl",(function(e){return{keywords:{keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},illegal:'"',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"}]}})),Xe.registerLanguage("gml",(function(e){return{aliases:["gml","GML"],case_insensitive:!1,keywords:{keywords:"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion",built_in:"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height",literal:"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version timezone_local timezone_utc gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters",symbol:"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}})),Xe.registerLanguage("go",(function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"`"}]},{className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:t,illegal:/["']/}]}]}})),Xe.registerLanguage("golo",(function(e){return{keywords:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}})),Xe.registerLanguage("gradle",(function(e){return{case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]}})),Xe.registerLanguage("groovy",(function(e){return{keywords:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},{className:"string",begin:"'''",end:"'''"},{className:"string",begin:"\\$/",end:"/\\$",relevance:10},e.APOS_STRING_MODE,{className:"regexp",begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},e.BINARY_NUMBER_MODE,{className:"class",beginKeywords:"class interface trait enum",end:"{",illegal:":",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{className:"string",begin:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{begin:/\?/,end:/\:/},{className:"symbol",begin:"^\\s*[A-Za-z0-9_$]+:",relevance:0}],illegal:/#|<\//}})),Xe.registerLanguage("haml",(function(e){return{case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:"{\\s*",end:"\\s*}",contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:"#{",starts:{end:"}",subLanguage:"ruby"}}]}})),Xe.registerLanguage("handlebars",(function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup"},n={begin:/".*?"|'.*?'|\[.*?\]|\w+/},r=e.inherit(n,{keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.inherit(n,{relevance:0})]}}),a=e.inherit(r,{className:"name"}),i=e.inherit(r,{relevance:0});return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[a],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[a]},{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[a]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,keywords:t,contains:[i]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t,contains:[i]}]}})),Xe.registerLanguage("haskell",(function(e){var t={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},n={className:"meta",begin:"{-#",end:"#-}"},r={className:"meta",begin:"^#",end:"$"},a={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[n,r,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),t]};return{aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[i,t],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[i,t],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[a,i,t]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[n,a,i,{begin:"{",end:"}",contains:i.contains},t]},{beginKeywords:"default",end:"$",contains:[a,i,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[a,e.QUOTE_STRING_MODE,t]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},n,r,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,a,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}]}})),Xe.registerLanguage("haxe",(function(e){return{aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:"\\W}"}]},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//}})),Xe.registerLanguage("hsp",(function(e){return{case_insensitive:!0,lexemes:/[\w\._]+/,keywords:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",begin:'{"',end:'"}',contains:[e.BACKSLASH_ESCAPE]},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]}})),Xe.registerLanguage("htmlbars",(function(e){var t="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",n=(e.QUOTE_STRING_MODE,{endsWithParent:!0,relevance:0,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE,{illegal:/\}\}/,begin:/[a-zA-Z0-9_]+=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[a-zA-Z0-9_]+/}]},e.NUMBER_MODE]});return{case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.\-]+/,keywords:{"builtin-name":t},starts:n}]},{className:"template-variable",begin:/\{\{[a-zA-Z][a-zA-Z\-]+/,end:/\}\}/,keywords:{keyword:"as",built_in:t},contains:[e.QUOTE_STRING_MODE]}]}})),Xe.registerLanguage("http",(function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],illegal:"\\S",contains:[{begin:"^"+t,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+t+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:t},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}})),Xe.registerLanguage("hy",(function(e){var t="[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9/;:]*",n={begin:t,relevance:0},r={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),o={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},s={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+t},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+t},_={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},m={keywords:{"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},lexemes:t,className:"name",begin:t,starts:u},p=[_,a,l,c,i,d,s,r,o,n];return _.contains=[e.COMMENT("comment",""),m,u],u.contains=p,s.contains=p,{aliases:["hylang"],illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},_,a,l,c,i,d,s,r,o]}})),Xe.registerLanguage("inform7",(function(e){return{aliases:["i7"],case_insensitive:!0,keywords:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",begin:"\\[",end:"\\]",contains:["self"]}]}})),Xe.registerLanguage("ini",(function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]};return{aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"section",begin:/^\s*\[+/,end:/\]+/},{begin:/^[a-z0-9\[\]_\.-]+\s*=\s*/,end:"$",returnBegin:!0,contains:[{className:"attr",begin:/[a-z0-9\[\]_\.-]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[e.COMMENT(";","$"),e.HASH_COMMENT_MODE,{className:"literal",begin:/\bon|off|true|false|yes|no\b/},{className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},t,{className:"number",begin:/([\+\-]+)?[\d]+_[\d_]+/},e.NUMBER_MODE]}]}]}})),Xe.registerLanguage("irpf90",(function(e){return{case_insensitive:!0,keywords:{literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0}),e.COMMENT("begin_doc","end_doc",{relevance:10}),{className:"number",begin:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",relevance:0}]}})),Xe.registerLanguage("isbl",(function(e){var t="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n={className:"number",begin:e.NUMBER_RE,relevance:0},r={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},a={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},i={variants:[{className:"comment",begin:"//",end:"$",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]},{className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[e.PHRASAL_WORDS_MODE,a]}]},o={keyword:"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",literal:"null true false nil "},s={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,keywords:o,relevance:0},l={className:"type",begin:":[ \\t]*("+"IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ".trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},c={className:"variable",lexemes:t,keywords:o,begin:t,relevance:0,contains:[l,s]};return{aliases:["isbl"],case_insensitive:!0,lexemes:t,keywords:o,illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\)$",returnBegin:!0,lexemes:t,keywords:o,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[{className:"title",lexemes:t,keywords:{built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр "},begin:"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\\(",end:"\\(",returnBegin:!0,excludeEnd:!0},s,c,r,n,i]},l,s,c,r,n,i]}})),Xe.registerLanguage("java",(function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}})),Xe.registerLanguage("javascript",(function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},o={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"css"}},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]};a.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,r,e.REGEXP_MODE];var l=a.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,o,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:l}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin:/</,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:l}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}})),Xe.registerLanguage("jboss-cli",(function(e){var t={className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],relevance:0};return{aliases:["wildfly-cli"],lexemes:"[a-z-]+",keywords:{keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"params",begin:/--[\w\-=\/]+/},{className:"function",begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B(([\/.])[\w\-.\/=]+)+/},t]}})),Xe.registerLanguage("json",(function(e){var t={literal:"true false null"},n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],r=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:r,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(a,{begin:/:/})].concat(n),illegal:"\\S"},o={begin:"\\[",end:"\\]",contains:[e.inherit(a)],illegal:"\\S"};return r.push(i,o),n.forEach((function(e){r.push(e)})),{contains:r,keywords:t,illegal:"\\S"}})),Xe.registerLanguage("julia",(function(e){var t={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},n="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",r={lexemes:n,keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},i={className:"variable",begin:"\\$"+n},o={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta",begin:"@"+n};return r.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],a.contains=r.contains,r})),Xe.registerLanguage("julia-repl",(function(e){return{contains:[{className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"},aliases:["jldoctest"]}]}})),Xe.registerLanguage("kotlin",(function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},i={className:"string",variants:[{begin:'"""',end:'"""',contains:[a,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,r]}]};r.contains.push(i);var o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},_=d;return _.variants[1].contains=[d],d.variants[1].contains=[_],{aliases:["kt"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,o,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,o,s,i,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},o,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}})),Xe.registerLanguage("lasso",(function(e){var t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},r=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),a={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[r]}},i={className:"meta",begin:"\\[/noprocess|<\\?(lasso(script)?|=)"},o={className:"symbol",begin:"'[a-zA-Z_][\\w.]*'"},s=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],case_insensitive:!0,lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[|<\\?(lasso(script)?|=)",returnEnd:!0,relevance:0,contains:[r]}},a,i,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",lexemes:"[a-zA-Z_][\\w.]*|&[lg]t;",keywords:n,contains:[{className:"meta",begin:t,relevance:0,starts:{end:"\\[noprocess\\]|<\\?(lasso(script)?|=)",returnEnd:!0,contains:[r]}},a,i].concat(s)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(s)}})),Xe.registerLanguage("ldif",(function(e){return{contains:[{className:"attribute",begin:"^dn",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0},relevance:10},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,starts:{end:"$",relevance:0}},{className:"literal",begin:"^-",end:"$"},e.HASH_COMMENT_MODE]}})),Xe.registerLanguage("leaf",(function(e){return{contains:[{className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:" {",returnBegin:!0,excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]}})),Xe.registerLanguage("less",(function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],r=[],a=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},i=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:r,relevance:0};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a("'"),a('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},i("number","#[0-9A-Fa-f]+\\b"),o,i("variable","@@?[\\w-]+",10),i("variable","@{[\\w-]+}"),i("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=r.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},c={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},d={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:r,relevance:0}},_={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},u={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,i("keyword","all\\b"),i("variable","@{[\\w-]+}"),i("selector-tag",t+"%?",0),i("selector-id","#"+t),i("selector-class","\\."+t,0),i("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,_,c,u),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}})),Xe.registerLanguage("lisp",(function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",n="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",r={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:n,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+n+" +"+n,end:"\\)"}]},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),o=e.COMMENT(";","$",{relevance:0}),s={begin:"\\*",end:"\\*"},l={className:"symbol",begin:"[:&]"+t},c={begin:t,relevance:0},d={begin:"\\|[^]*?\\|"},_={contains:[a,i,s,l,{begin:"\\(",end:"\\)",contains:["self",r,i,a,c]},c],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},u={variants:[{begin:"'"+t},{begin:"#'"+t+"(::"+t+")*"}]},m={begin:"\\(\\s*",end:"\\)"},p={endsWithParent:!0,relevance:0};return m.contains=[{className:"name",variants:[{begin:t},{begin:"\\|[^]*?\\|"}]},p],p.contains=[_,u,m,r,a,i,o,s,l,d,c],{illegal:/\S/,contains:[a,{className:"meta",begin:"^#!",end:"$"},r,i,o,_,u,m,c]}})),Xe.registerLanguage("livecodeserver",(function(e){var t={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],r=e.inherit(e.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),a=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[t,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[a,r],relevance:0},{beginKeywords:"command on",end:"$",contains:[t,a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,r].concat(n),illegal:";$|^\\[|^=|&|{"}})),Xe.registerLanguage("livescript",(function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},n="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",r=e.inherit(e.TITLE_MODE,{begin:n}),a={className:"subst",begin:/#\{/,end:/}/,keywords:t},i={className:"subst",begin:/#[A-Za-z$_]/,end:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,keywords:t},o=[e.BINARY_NUMBER_MODE,{className:"number",begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,i]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{className:"regexp",variants:[{begin:"//",end:"//[gim]*",contains:[a,e.HASH_COMMENT_MODE]},{begin:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{begin:"@"+n},{begin:"``",end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];a.contains=o;var s={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{aliases:["ls"],keywords:t,illegal:/\/\*/,contains:o.concat([e.COMMENT("\\/\\*","\\*\\/"),e.HASH_COMMENT_MODE,{begin:"(#=>|=>|\\|>>|-?->|\\!->)"},{className:"function",contains:[r,s],returnBegin:!0,variants:[{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",end:"\\->\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",end:"[-~]{1,2}>\\*?"},{begin:"("+n+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[r]},r]},{begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}})),Xe.registerLanguage("llvm",(function(e){var t="([-a-zA-Z$._][\\w\\-$.]*)";return{keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[{className:"keyword",begin:"i\\d+"},e.COMMENT(";","\\n",{relevance:0}),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'"',end:'[^\\\\]"'}],relevance:0},{className:"title",variants:[{begin:"@"+t},{begin:"@\\d+"},{begin:"!"+t},{begin:"!\\d+"+t}]},{className:"symbol",variants:[{begin:"%"+t},{begin:"%\\d+"},{begin:"#\\d+"}]},{className:"number",variants:[{begin:"0[xX][a-fA-F0-9]+"},{begin:"-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?"}],relevance:0}]}})),Xe.registerLanguage("lsl",(function(e){var t={className:"string",begin:'"',end:'"',contains:[{className:"subst",begin:/\\[tn"\\]/}]},n={className:"number",begin:e.C_NUMBER_RE};return{illegal:":",contains:[t,{className:"comment",variants:[e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/")],relevance:0},n,{className:"section",variants:[{begin:"\\b(?:state|default)\\b"},{begin:"\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b"}]},{className:"built_in",begin:"\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"},{className:"literal",variants:[{begin:"\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{begin:"\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"},{begin:"\\b(?:FALSE|TRUE)\\b"},{begin:"\\b(?:ZERO_ROTATION)\\b"},{begin:"\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b"},{begin:"\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b"}]},{className:"type",begin:"\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}})),Xe.registerLanguage("lua",(function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},n=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:n.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:n}].concat(n)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}})),Xe.registerLanguage("makefile",(function(e){var t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*[:+?]?=",illegal:"\\n",returnBegin:!0,contains:[{begin:"^"+e.UNDERSCORE_IDENT_RE,end:"[:+?]?=",excludeEnd:!0}]},i={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{aliases:["mk","mak"],keywords:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",lexemes:/[\w-]+/,contains:[e.HASH_COMMENT_MODE,t,n,r,a,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{"meta-keyword":".PHONY"},lexemes:/[\.\w]+/},i]}})),Xe.registerLanguage("mathematica",(function(e){return{aliases:["mma","wl"],lexemes:"(\\$|\\b)"+e.IDENT_RE+"\\b",keywords:"AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID",contains:[e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}})),Xe.registerLanguage("matlab",(function(e){var t={relevance:0,contains:[{begin:"('|\\.')+"}]};return{keywords:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]},{className:"built_in",begin:/true|false/,relevance:0,starts:t},{begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",begin:e.C_NUMBER_RE,relevance:0,starts:t},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|}|\)/,relevance:0,starts:t},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}],starts:t},e.COMMENT("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.COMMENT("\\%","$")]}})),Xe.registerLanguage("maxima",(function(e){return{lexemes:"[A-Za-z_%][0-9A-Za-z_%]*",keywords:{keyword:"if then else elseif for thru do while unless step in and or not",literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],illegal:/@/}})),Xe.registerLanguage("mel",(function(e){return{keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}})),Xe.registerLanguage("mercury",(function(e){var t=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0});r.contains.push({className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0});return{aliases:["m","moo"],keywords:{keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]},t,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}})),Xe.registerLanguage("mipsasm",(function(e){return{case_insensitive:!0,aliases:["mips"],lexemes:"\\.?"+e.IDENT_RE,keywords:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#](?!s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}})),Xe.registerLanguage("mizar",(function(e){return{keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[e.COMMENT("::","$")]}})),Xe.registerLanguage("perl",(function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",n={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:t},r={begin:"->{",end:"}"},a={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,n,a],o=[a,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),r,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return n.contains=o,r.contains=o,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:t,contains:o}})),Xe.registerLanguage("mojolicious",(function(e){return{subLanguage:"xml",contains:[{className:"meta",begin:"^__(END|DATA)__$"},{begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]}})),Xe.registerLanguage("monkey",(function(e){var t={className:"number",relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{case_insensitive:!0,keywords:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},illegal:/\/\*/,contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",beginKeywords:"class interface",end:"$",contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",begin:"\\s*#",end:"$",keywords:{"meta-keyword":"if else elseif endif end then"}},{className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,t]}})),Xe.registerLanguage("moonscript",(function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={className:"subst",begin:/#\{/,end:/}/,keywords:t},a=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r]}]},{className:"built_in",begin:"@__"+e.IDENT_RE},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];r.contains=a;var i=e.inherit(e.TITLE_MODE,{begin:n}),o={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(a)}]};return{aliases:["moon"],keywords:t,illegal:/\/\*/,contains:a.concat([e.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[i,o]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[o]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}})),Xe.registerLanguage("n1ql",(function(e){return{case_insensitive:!0,contains:[{beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",end:/;/,endsWithParent:!0,keywords:{keyword:"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor",literal:"true false null missing|5",built_in:"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE],relevance:2},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]}})),Xe.registerLanguage("nginx",(function(e){var t={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},n={endsWithParent:!0,lexemes:"[a-z/_]+",keywords:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},t]};return{aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:n}],relevance:0}],illegal:"[^\\s\\}]"}})),Xe.registerLanguage("nimrod",(function(e){return{aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}})),Xe.registerLanguage("nix",(function(e){var t={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},n={className:"subst",begin:/\$\{/,end:/}/,keywords:t},r={className:"string",contains:[n],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},a=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return n.contains=a,{aliases:["nixos"],keywords:t,contains:a}})),Xe.registerLanguage("nsis",(function(e){var t={className:"variable",begin:/\$+{[\w\.:-]+}/},n={className:"variable",begin:/\$+\w+/,illegal:/\(\){}/},r={className:"variable",begin:/\$+\([\w\^\.:-]+\)/},a={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",begin:/\$(\\[nrt]|\$)/},{className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},t,n,r]};return{case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},a,{className:"keyword",begin:/\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},t,n,r,{className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},{className:"class",begin:/\w+\:\:\w+/},e.NUMBER_MODE]}})),Xe.registerLanguage("objectivec",(function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:t,illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"}]},{className:"meta",begin:"#",end:"$",contains:[{className:"meta-string",variants:[{begin:'"',end:'"'},{begin:"<",end:">"}]}]},{className:"class",begin:"("+n.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:n,lexemes:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}})),Xe.registerLanguage("ocaml",(function(e){return{aliases:["ml"],keywords:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}})),Xe.registerLanguage("openscad",(function(e){var t={className:"keyword",begin:"\\$(f[asn]|t|vp[rtd]|children)"},n={className:"number",begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0},r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",beginKeywords:"module function",end:"\\=|\\{",contains:[{className:"params",begin:"\\(",end:"\\)",contains:["self",n,r,t,{className:"literal",begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{aliases:["scad"],keywords:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"meta",keywords:{"meta-keyword":"include use"},begin:"include|use <",end:">"},r,t,{begin:"[*!#%]",relevance:0},a]}})),Xe.registerLanguage("oxygene",(function(e){var t="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",n=e.COMMENT("{","}",{relevance:0}),r=e.COMMENT("\\(\\*","\\*\\)",{relevance:10}),a={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},i={className:"string",begin:"(#\\d+)+"},o={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:t,contains:[a,i]},n,r]};return{case_insensitive:!0,lexemes:/\.?\w+/,keywords:t,illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',contains:[n,r,e.C_LINE_COMMENT_MODE,a,i,e.NUMBER_MODE,o,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:t,contains:[a,i,n,r,e.C_LINE_COMMENT_MODE,o]}]}})),Xe.registerLanguage("parser3",(function(e){var t=e.COMMENT("{","}",{contains:["self"]});return{subLanguage:"xml",relevance:0,contains:[e.COMMENT("^#","$"),e.COMMENT("\\^rem{","}",{relevance:10,contains:[t]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{className:"keyword",begin:"\\^[\\w\\-\\.\\:]+"},{className:"number",begin:"\\^#[0-9a-fA-F]+"},e.C_NUMBER_MODE]}})),Xe.registerLanguage("pf",(function(e){return{aliases:["pf.conf"],lexemes:/[a-z0-9_<>-]+/,keywords:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},contains:[e.HASH_COMMENT_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE,{className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",begin:/<(?!\/)/,end:/>/}]}})),Xe.registerLanguage("pgsql",(function(e){var t=e.COMMENT("--","$"),n="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",r=n.trim().split(" ").map((function(e){return e.split("|")[0]})).join("|"),a="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAPLEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILYINET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ".trim().split(" ").map((function(e){return e.split("|")[0]})).join("|");return{aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:e.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+a+")\\s*\\("},{begin:"\\.("+r+")\\b"},{begin:"\\b("+r+")\\s+PATH\\b",keywords:{keyword:"PATH",type:n.replace("PATH ","")}},{className:"type",begin:"\\b("+r+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},{begin:"\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",endSameAsBegin:!0,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]},{begin:'"',end:'"',contains:[{begin:'""'}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}})),Xe.registerLanguage("php",(function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,a]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,a]}})),Xe.registerLanguage("plaintext",(function(e){return{disableAutodetect:!0}})),Xe.registerLanguage("pony",(function(e){return{keywords:{keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},contains:[{className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{className:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}})),Xe.registerLanguage("powershell",(function(e){var t={begin:"`[\\s\\S]",relevance:0},n={className:"variable",variants:[{begin:/\$[\w\d][\w\d_:]*/}]},r={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[t,n,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},a=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]});return{aliases:["ps","ps1"],lexemes:/-?[A-z\.\-]+/,case_insensitive:!0,keywords:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catchValidateNoCircleInNodeResources ValidateNodeExclusiveResources ValidateNodeManager ValidateNodeResources ValidateNodeResourceSource ValidateNoNameNodeResources ThrowError IsHiddenResourceIsPatternMatched ",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct Add-CIDatastore Add-KeyManagementServer Add-NodeKeys Add-NsxDynamicCriteria Add-NsxDynamicMemberSet Add-NsxEdgeInterfaceAddress Add-NsxFirewallExclusionListMember Add-NsxFirewallRuleMember Add-NsxIpSetMember Add-NsxLicense Add-NsxLoadBalancerPoolMember Add-NsxLoadBalancerVip Add-NsxSecondaryManager Add-NsxSecurityGroupMember Add-NsxSecurityPolicyRule Add-NsxSecurityPolicyRuleGroup Add-NsxSecurityPolicyRuleService Add-NsxServiceGroupMember Add-NsxTransportZoneMember Add-PassthroughDevice Add-VDSwitchPhysicalNetworkAdapter Add-VDSwitchVMHost Add-VMHost Add-VMHostNtpServer Add-VirtualSwitchPhysicalNetworkAdapter Add-XmlElement Add-vRACustomForm Add-vRAPrincipalToTenantRole Add-vRAReservationNetwork Add-vRAReservationStorage Clear-NsxEdgeInterface Clear-NsxManagerTimeSettings Compress-Archive Connect-CIServer Connect-CisServer Connect-HCXServer Connect-NIServer Connect-NsxLogicalSwitch Connect-NsxServer Connect-NsxtServer Connect-SrmServer Connect-VIServer Connect-Vmc Connect-vRAServer Connect-vRNIServer ConvertFrom-Markdown ConvertTo-MOFInstance Copy-DatastoreItem Copy-HardDisk Copy-NsxEdge Copy-VDisk Copy-VMGuestFile Debug-Runspace Disable-NsxEdgeSsh Disable-RunspaceDebug Disable-vRNIDataSource Disconnect-CIServer Disconnect-CisServer Disconnect-HCXServer Disconnect-NsxLogicalSwitch Disconnect-NsxServer Disconnect-NsxtServer Disconnect-SrmServer Disconnect-VIServer Disconnect-Vmc Disconnect-vRAServer Disconnect-vRNIServer Dismount-Tools Enable-NsxEdgeSsh Enable-RunspaceDebug Enable-vRNIDataSource Expand-Archive Export-NsxObject Export-SpbmStoragePolicy Export-VApp Export-VDPortGroup Export-VDSwitch Export-VMHostProfile Export-vRAIcon Export-vRAPackage Find-Command Find-DscResource Find-Module Find-NsxWhereVMUsed Find-Package Find-PackageProvider Find-RoleCapability Find-Script Format-Hex Format-VMHostDiskPartition Format-XML Generate-VersionInfo Get-AdvancedSetting Get-AlarmAction Get-AlarmActionTrigger Get-AlarmDefinition Get-Annotation Get-CDDrive Get-CIAccessControlRule Get-CIDatastore Get-CINetworkAdapter Get-CIRole Get-CIUser Get-CIVApp Get-CIVAppNetwork Get-CIVAppStartRule Get-CIVAppTemplate Get-CIVM Get-CIVMTemplate Get-CIView Get-Catalog Get-CisCommand Get-CisService Get-CloudCommand Get-Cluster Get-CompatibleVersionAddtionaPropertiesStr Get-ComplexResourceQualifier Get-ConfigurationErrorCount Get-ContentLibraryItem Get-CustomAttribute Get-DSCResourceModules Get-Datacenter Get-Datastore Get-DatastoreCluster Get-DrsClusterGroup Get-DrsRecommendation Get-DrsRule Get-DrsVMHostRule Get-DscResource Get-EdgeGateway Get-EncryptedPassword Get-ErrorReport Get-EsxCli Get-EsxTop Get-ExternalNetwork Get-FileHash Get-FloppyDrive Get-Folder Get-HAPrimaryVMHost Get-HCXAppliance Get-HCXApplianceCompute Get-HCXApplianceDVS Get-HCXApplianceDatastore Get-HCXApplianceNetwork Get-HCXContainer Get-HCXDatastore Get-HCXGateway Get-HCXInterconnectStatus Get-HCXJob Get-HCXMigration Get-HCXNetwork Get-HCXNetworkExtension Get-HCXReplication Get-HCXReplicationSnapshot Get-HCXService Get-HCXSite Get-HCXSitePairing Get-HCXVM Get-HardDisk Get-IScsiHbaTarget Get-InnerMostErrorRecord Get-InstallPath Get-InstalledModule Get-InstalledScript Get-Inventory Get-ItemPropertyValue Get-KeyManagementServer Get-KmipClientCertificate Get-KmsCluster Get-Log Get-LogType Get-MarkdownOption Get-Media Get-MofInstanceName Get-MofInstanceText Get-NetworkAdapter Get-NetworkPool Get-NfsUser Get-NicTeamingPolicy Get-NsxApplicableMember Get-NsxApplicableSecurityAction Get-NsxBackingDVSwitch Get-NsxBackingPortGroup Get-NsxCliDfwAddrSet Get-NsxCliDfwFilter Get-NsxCliDfwRule Get-NsxClusterStatus Get-NsxController Get-NsxDynamicCriteria Get-NsxDynamicMemberSet Get-NsxEdge Get-NsxEdgeBgp Get-NsxEdgeBgpNeighbour Get-NsxEdgeCertificate Get-NsxEdgeCsr Get-NsxEdgeFirewall Get-NsxEdgeFirewallRule Get-NsxEdgeInterface Get-NsxEdgeInterfaceAddress Get-NsxEdgeNat Get-NsxEdgeNatRule Get-NsxEdgeOspf Get-NsxEdgeOspfArea Get-NsxEdgeOspfInterface Get-NsxEdgePrefix Get-NsxEdgeRedistributionRule Get-NsxEdgeRouting Get-NsxEdgeStaticRoute Get-NsxEdgeSubInterface Get-NsxFirewallExclusionListMember Get-NsxFirewallGlobalConfiguration Get-NsxFirewallPublishStatus Get-NsxFirewallRule Get-NsxFirewallRuleMember Get-NsxFirewallSavedConfiguration Get-NsxFirewallSection Get-NsxFirewallThreshold Get-NsxIpPool Get-NsxIpSet Get-NsxLicense Get-NsxLoadBalancer Get-NsxLoadBalancerApplicationProfile Get-NsxLoadBalancerApplicationRule Get-NsxLoadBalancerMonitor Get-NsxLoadBalancerPool Get-NsxLoadBalancerPoolMember Get-NsxLoadBalancerStats Get-NsxLoadBalancerVip Get-NsxLogicalRouter Get-NsxLogicalRouterBgp Get-NsxLogicalRouterBgpNeighbour Get-NsxLogicalRouterBridge Get-NsxLogicalRouterBridging Get-NsxLogicalRouterInterface Get-NsxLogicalRouterOspf Get-NsxLogicalRouterOspfArea Get-NsxLogicalRouterOspfInterface Get-NsxLogicalRouterPrefix Get-NsxLogicalRouterRedistributionRule Get-NsxLogicalRouterRouting Get-NsxLogicalRouterStaticRoute Get-NsxLogicalSwitch Get-NsxMacSet Get-NsxManagerBackup Get-NsxManagerCertificate Get-NsxManagerComponentSummary Get-NsxManagerNetwork Get-NsxManagerRole Get-NsxManagerSsoConfig Get-NsxManagerSyncStatus Get-NsxManagerSyslogServer Get-NsxManagerSystemSummary Get-NsxManagerTimeSettings Get-NsxManagerVcenterConfig Get-NsxSecondaryManager Get-NsxSecurityGroup Get-NsxSecurityGroupEffectiveIpAddress Get-NsxSecurityGroupEffectiveMacAddress Get-NsxSecurityGroupEffectiveMember Get-NsxSecurityGroupEffectiveVirtualMachine Get-NsxSecurityGroupEffectiveVnic Get-NsxSecurityGroupMemberTypes Get-NsxSecurityPolicy Get-NsxSecurityPolicyHighestUsedPrecedence Get-NsxSecurityPolicyRule Get-NsxSecurityTag Get-NsxSecurityTagAssignment Get-NsxSegmentIdRange Get-NsxService Get-NsxServiceDefinition Get-NsxServiceGroup Get-NsxServiceGroupMember Get-NsxServiceProfile Get-NsxSpoofguardNic Get-NsxSpoofguardPolicy Get-NsxSslVpn Get-NsxSslVpnAuthServer Get-NsxSslVpnClientInstallationPackage Get-NsxSslVpnIpPool Get-NsxSslVpnPrivateNetwork Get-NsxSslVpnUser Get-NsxTransportZone Get-NsxUserRole Get-NsxVdsContext Get-NsxtPolicyService Get-NsxtService Get-OSCustomizationNicMapping Get-OSCustomizationSpec Get-Org Get-OrgNetwork Get-OrgVdc Get-OrgVdcNetwork Get-OvfConfiguration Get-PSCurrentConfigurationNode Get-PSDefaultConfigurationDocument Get-PSMetaConfigDocumentInstVersionInfo Get-PSMetaConfigurationProcessed Get-PSReadLineKeyHandler Get-PSReadLineOption Get-PSRepository Get-PSTopConfigurationName Get-PSVersion Get-Package Get-PackageProvider Get-PackageSource Get-PassthroughDevice Get-PositionInfo Get-PowerCLICommunity Get-PowerCLIConfiguration Get-PowerCLIHelp Get-PowerCLIVersion Get-PowerNsxVersion Get-ProviderVdc Get-PublicKeyFromFile Get-PublicKeyFromStore Get-ResourcePool Get-Runspace Get-RunspaceDebug Get-ScsiController Get-ScsiLun Get-ScsiLunPath Get-SecurityInfo Get-SecurityPolicy Get-Snapshot Get-SpbmCapability Get-SpbmCompatibleStorage Get-SpbmEntityConfiguration Get-SpbmFaultDomain Get-SpbmPointInTimeReplica Get-SpbmReplicationGroup Get-SpbmReplicationPair Get-SpbmStoragePolicy Get-Stat Get-StatInterval Get-StatType Get-Tag Get-TagAssignment Get-TagCategory Get-Task Get-Template Get-TimeZone Get-Uptime Get-UsbDevice Get-VAIOFilter Get-VApp Get-VDBlockedPolicy Get-VDPort Get-VDPortgroup Get-VDPortgroupOverridePolicy Get-VDSecurityPolicy Get-VDSwitch Get-VDSwitchPrivateVlan Get-VDTrafficShapingPolicy Get-VDUplinkLacpPolicy Get-VDUplinkTeamingPolicy Get-VDisk Get-VIAccount Get-VICommand Get-VICredentialStoreItem Get-VIEvent Get-VIObjectByVIView Get-VIPermission Get-VIPrivilege Get-VIProperty Get-VIRole Get-VM Get-VMGuest Get-VMHost Get-VMHostAccount Get-VMHostAdvancedConfiguration Get-VMHostAuthentication Get-VMHostAvailableTimeZone Get-VMHostDiagnosticPartition Get-VMHostDisk Get-VMHostDiskPartition Get-VMHostFirewallDefaultPolicy Get-VMHostFirewallException Get-VMHostFirmware Get-VMHostHardware Get-VMHostHba Get-VMHostModule Get-VMHostNetwork Get-VMHostNetworkAdapter Get-VMHostNtpServer Get-VMHostPatch Get-VMHostPciDevice Get-VMHostProfile Get-VMHostProfileImageCacheConfiguration Get-VMHostProfileRequiredInput Get-VMHostProfileStorageDeviceConfiguration Get-VMHostProfileUserConfiguration Get-VMHostProfileVmPortGroupConfiguration Get-VMHostRoute Get-VMHostService Get-VMHostSnmp Get-VMHostStartPolicy Get-VMHostStorage Get-VMHostSysLogServer Get-VMQuestion Get-VMResourceConfiguration Get-VMStartPolicy Get-VTpm Get-VTpmCSR Get-VTpmCertificate Get-VasaProvider Get-VasaStorageArray Get-View Get-VirtualPortGroup Get-VirtualSwitch Get-VmcSddcNetworkService Get-VmcService Get-VsanClusterConfiguration Get-VsanComponent Get-VsanDisk Get-VsanDiskGroup Get-VsanEvacuationPlan Get-VsanFaultDomain Get-VsanIscsiInitiatorGroup Get-VsanIscsiInitiatorGroupTargetAssociation Get-VsanIscsiLun Get-VsanIscsiTarget Get-VsanObject Get-VsanResyncingComponent Get-VsanRuntimeInfo Get-VsanSpaceUsage Get-VsanStat Get-VsanView Get-vRAApplianceServiceStatus Get-vRAAuthorizationRole Get-vRABlueprint Get-vRABusinessGroup Get-vRACatalogItem Get-vRACatalogItemRequestTemplate Get-vRACatalogPrincipal Get-vRAComponentRegistryService Get-vRAComponentRegistryServiceEndpoint Get-vRAComponentRegistryServiceStatus Get-vRAContent Get-vRAContentData Get-vRAContentType Get-vRACustomForm Get-vRAEntitledCatalogItem Get-vRAEntitledService Get-vRAEntitlement Get-vRAExternalNetworkProfile Get-vRAGroupPrincipal Get-vRAIcon Get-vRANATNetworkProfile Get-vRANetworkProfileIPAddressList Get-vRANetworkProfileIPRangeSummary Get-vRAPackage Get-vRAPackageContent Get-vRAPropertyDefinition Get-vRAPropertyGroup Get-vRARequest Get-vRARequestDetail Get-vRAReservation Get-vRAReservationComputeResource Get-vRAReservationComputeResourceMemory Get-vRAReservationComputeResourceNetwork Get-vRAReservationComputeResourceResourcePool Get-vRAReservationComputeResourceStorage Get-vRAReservationPolicy Get-vRAReservationTemplate Get-vRAReservationType Get-vRAResource Get-vRAResourceAction Get-vRAResourceActionRequestTemplate Get-vRAResourceMetric Get-vRAResourceOperation Get-vRAResourceType Get-vRARoutedNetworkProfile Get-vRAService Get-vRAServiceBlueprint Get-vRASourceMachine Get-vRAStorageReservationPolicy Get-vRATenant Get-vRATenantDirectory Get-vRATenantDirectoryStatus Get-vRATenantRole Get-vRAUserPrincipal Get-vRAUserPrincipalGroupMembership Get-vRAVersion Get-vRNIAPIVersion Get-vRNIApplication Get-vRNIApplicationTier Get-vRNIDataSource Get-vRNIDataSourceSNMPConfig Get-vRNIDatastore Get-vRNIDistributedSwitch Get-vRNIDistributedSwitchPortGroup Get-vRNIEntity Get-vRNIEntityName Get-vRNIFirewallRule Get-vRNIFlow Get-vRNIHost Get-vRNIHostVMKNic Get-vRNIIPSet Get-vRNIL2Network Get-vRNINSXManager Get-vRNINodes Get-vRNIProblem Get-vRNIRecommendedRules Get-vRNIRecommendedRulesNsxBundle Get-vRNISecurityGroup Get-vRNISecurityTag Get-vRNIService Get-vRNIServiceGroup Get-vRNIVM Get-vRNIVMvNIC Get-vRNIvCenter Get-vRNIvCenterCluster Get-vRNIvCenterDatacenter Get-vRNIvCenterFolder Grant-NsxSpoofguardNicApproval Import-CIVApp Import-CIVAppTemplate Import-NsxObject Import-PackageProvider Import-PowerShellDataFile Import-SpbmStoragePolicy Import-VApp Import-VMHostProfile Import-vRAContentData Import-vRAIcon Import-vRAPackage Initialize-ConfigurationRuntimeState Install-Module Install-NsxCluster Install-Package Install-PackageProvider Install-Script Install-VMHostPatch Invoke-DrsRecommendation Invoke-NsxCli Invoke-NsxClusterResolveAll Invoke-NsxManagerSync Invoke-NsxRestMethod Invoke-NsxWebRequest Invoke-VMHostProfile Invoke-VMScript Invoke-XpathQuery Invoke-vRADataCollection Invoke-vRARestMethod Invoke-vRATenantDirectorySync Invoke-vRNIRestMethod Join-String Mount-Tools Move-Cluster Move-Datacenter Move-Datastore Move-Folder Move-HardDisk Move-Inventory Move-NsxSecurityPolicyRule Move-ResourcePool Move-Template Move-VApp Move-VDisk Move-VM Move-VMHost New-AdvancedSetting New-AlarmAction New-AlarmActionTrigger New-CDDrive New-CIAccessControlRule New-CIVApp New-CIVAppNetwork New-CIVAppTemplate New-CIVM New-Cluster New-CustomAttribute New-Datacenter New-Datastore New-DatastoreCluster New-DatastoreDrive New-DrsClusterGroup New-DrsRule New-DrsVMHostRule New-DscChecksum New-FloppyDrive New-Folder New-Guid New-HCXAppliance New-HCXMigration New-HCXNetworkExtension New-HCXNetworkMapping New-HCXReplication New-HCXSitePairing New-HCXStaticRoute New-HardDisk New-IScsiHbaTarget New-KmipClientCertificate New-NetworkAdapter New-NfsUser New-NsxAddressSpec New-NsxClusterVxlanConfig New-NsxController New-NsxDynamicCriteriaSpec New-NsxEdge New-NsxEdgeBgpNeighbour New-NsxEdgeCsr New-NsxEdgeFirewallRule New-NsxEdgeInterfaceSpec New-NsxEdgeNatRule New-NsxEdgeOspfArea New-NsxEdgeOspfInterface New-NsxEdgePrefix New-NsxEdgeRedistributionRule New-NsxEdgeSelfSignedCertificate New-NsxEdgeStaticRoute New-NsxEdgeSubInterface New-NsxEdgeSubInterfaceSpec New-NsxFirewallRule New-NsxFirewallSavedConfiguration New-NsxFirewallSection New-NsxIpPool New-NsxIpSet New-NsxLoadBalancerApplicationProfile New-NsxLoadBalancerApplicationRule New-NsxLoadBalancerMemberSpec New-NsxLoadBalancerMonitor New-NsxLoadBalancerPool New-NsxLogicalRouter New-NsxLogicalRouterBgpNeighbour New-NsxLogicalRouterBridge New-NsxLogicalRouterInterface New-NsxLogicalRouterInterfaceSpec New-NsxLogicalRouterOspfArea New-NsxLogicalRouterOspfInterface New-NsxLogicalRouterPrefix New-NsxLogicalRouterRedistributionRule New-NsxLogicalRouterStaticRoute New-NsxLogicalSwitch New-NsxMacSet New-NsxManager New-NsxSecurityGroup New-NsxSecurityPolicy New-NsxSecurityPolicyAssignment New-NsxSecurityPolicyFirewallRuleSpec New-NsxSecurityPolicyGuestIntrospectionSpec New-NsxSecurityPolicyNetworkIntrospectionSpec New-NsxSecurityTag New-NsxSecurityTagAssignment New-NsxSegmentIdRange New-NsxService New-NsxServiceGroup New-NsxSpoofguardPolicy New-NsxSslVpnAuthServer New-NsxSslVpnClientInstallationPackage New-NsxSslVpnIpPool New-NsxSslVpnPrivateNetwork New-NsxSslVpnUser New-NsxTransportZone New-NsxVdsContext New-OSCustomizationNicMapping New-OSCustomizationSpec New-Org New-OrgNetwork New-OrgVdc New-OrgVdcNetwork New-ResourcePool New-ScriptFileInfo New-ScsiController New-Snapshot New-SpbmRule New-SpbmRuleSet New-SpbmStoragePolicy New-StatInterval New-Tag New-TagAssignment New-TagCategory New-Template New-TemporaryFile New-VAIOFilter New-VApp New-VDPortgroup New-VDSwitch New-VDSwitchPrivateVlan New-VDisk New-VICredentialStoreItem New-VIInventoryDrive New-VIPermission New-VIProperty New-VIRole New-VISamlSecurityContext New-VM New-VMHostAccount New-VMHostNetworkAdapter New-VMHostProfile New-VMHostProfileVmPortGroupConfiguration New-VMHostRoute New-VTpm New-VasaProvider New-VcsOAuthSecurityContext New-VirtualPortGroup New-VirtualSwitch New-VsanDisk New-VsanDiskGroup New-VsanFaultDomain New-VsanIscsiInitiatorGroup New-VsanIscsiInitiatorGroupTargetAssociation New-VsanIscsiLun New-VsanIscsiTarget New-vRABusinessGroup New-vRAEntitlement New-vRAExternalNetworkProfile New-vRAGroupPrincipal New-vRANATNetworkProfile New-vRANetworkProfileIPRangeDefinition New-vRAPackage New-vRAPropertyDefinition New-vRAPropertyGroup New-vRAReservation New-vRAReservationNetworkDefinition New-vRAReservationPolicy New-vRAReservationStorageDefinition New-vRARoutedNetworkProfile New-vRAService New-vRAStorageReservationPolicy New-vRATenant New-vRATenantDirectory New-vRAUserPrincipal New-vRNIApplication New-vRNIApplicationTier New-vRNIDataSource Open-VMConsoleWindow Publish-Module Publish-NsxSpoofguardPolicy Publish-Script Register-PSRepository Register-PackageSource Remove-AdvancedSetting Remove-AlarmAction Remove-AlarmActionTrigger Remove-Alias Remove-CDDrive Remove-CIAccessControlRule Remove-CIVApp Remove-CIVAppNetwork Remove-CIVAppTemplate Remove-Cluster Remove-CustomAttribute Remove-Datacenter Remove-Datastore Remove-DatastoreCluster Remove-DrsClusterGroup Remove-DrsRule Remove-DrsVMHostRule Remove-FloppyDrive Remove-Folder Remove-HCXAppliance Remove-HCXNetworkExtension Remove-HCXReplication Remove-HCXSitePairing Remove-HardDisk Remove-IScsiHbaTarget Remove-Inventory Remove-KeyManagementServer Remove-NetworkAdapter Remove-NfsUser Remove-NsxCluster Remove-NsxClusterVxlanConfig Remove-NsxController Remove-NsxDynamicCriteria Remove-NsxDynamicMemberSet Remove-NsxEdge Remove-NsxEdgeBgpNeighbour Remove-NsxEdgeCertificate Remove-NsxEdgeCsr Remove-NsxEdgeFirewallRule Remove-NsxEdgeInterfaceAddress Remove-NsxEdgeNatRule Remove-NsxEdgeOspfArea Remove-NsxEdgeOspfInterface Remove-NsxEdgePrefix Remove-NsxEdgeRedistributionRule Remove-NsxEdgeStaticRoute Remove-NsxEdgeSubInterface Remove-NsxFirewallExclusionListMember Remove-NsxFirewallRule Remove-NsxFirewallRuleMember Remove-NsxFirewallSavedConfiguration Remove-NsxFirewallSection Remove-NsxIpPool Remove-NsxIpSet Remove-NsxIpSetMember Remove-NsxLoadBalancerApplicationProfile Remove-NsxLoadBalancerMonitor Remove-NsxLoadBalancerPool Remove-NsxLoadBalancerPoolMember Remove-NsxLoadBalancerVip Remove-NsxLogicalRouter Remove-NsxLogicalRouterBgpNeighbour Remove-NsxLogicalRouterBridge Remove-NsxLogicalRouterInterface Remove-NsxLogicalRouterOspfArea Remove-NsxLogicalRouterOspfInterface Remove-NsxLogicalRouterPrefix Remove-NsxLogicalRouterRedistributionRule Remove-NsxLogicalRouterStaticRoute Remove-NsxLogicalSwitch Remove-NsxMacSet Remove-NsxSecondaryManager Remove-NsxSecurityGroup Remove-NsxSecurityGroupMember Remove-NsxSecurityPolicy Remove-NsxSecurityPolicyAssignment Remove-NsxSecurityPolicyRule Remove-NsxSecurityPolicyRuleGroup Remove-NsxSecurityPolicyRuleService Remove-NsxSecurityTag Remove-NsxSecurityTagAssignment Remove-NsxSegmentIdRange Remove-NsxService Remove-NsxServiceGroup Remove-NsxSpoofguardPolicy Remove-NsxSslVpnClientInstallationPackage Remove-NsxSslVpnIpPool Remove-NsxSslVpnPrivateNetwork Remove-NsxSslVpnUser Remove-NsxTransportZone Remove-NsxTransportZoneMember Remove-NsxVdsContext Remove-OSCustomizationNicMapping Remove-OSCustomizationSpec Remove-Org Remove-OrgNetwork Remove-OrgVdc Remove-OrgVdcNetwork Remove-PSReadLineKeyHandler Remove-PassthroughDevice Remove-ResourcePool Remove-Snapshot Remove-SpbmStoragePolicy Remove-StatInterval Remove-Tag Remove-TagAssignment Remove-TagCategory Remove-Template Remove-UsbDevice Remove-VAIOFilter Remove-VApp Remove-VDPortGroup Remove-VDSwitch Remove-VDSwitchPhysicalNetworkAdapter Remove-VDSwitchPrivateVlan Remove-VDSwitchVMHost Remove-VDisk Remove-VICredentialStoreItem Remove-VIPermission Remove-VIProperty Remove-VIRole Remove-VM Remove-VMHost Remove-VMHostAccount Remove-VMHostNetworkAdapter Remove-VMHostNtpServer Remove-VMHostProfile Remove-VMHostProfileVmPortGroupConfiguration Remove-VMHostRoute Remove-VTpm Remove-VasaProvider Remove-VirtualPortGroup Remove-VirtualSwitch Remove-VirtualSwitchPhysicalNetworkAdapter Remove-VsanDisk Remove-VsanDiskGroup Remove-VsanFaultDomain Remove-VsanIscsiInitiatorGroup Remove-VsanIscsiInitiatorGroupTargetAssociation Remove-VsanIscsiLun Remove-VsanIscsiTarget Remove-vRABusinessGroup Remove-vRACustomForm Remove-vRAExternalNetworkProfile Remove-vRAGroupPrincipal Remove-vRAIcon Remove-vRANATNetworkProfile Remove-vRAPackage Remove-vRAPrincipalFromTenantRole Remove-vRAPropertyDefinition Remove-vRAPropertyGroup Remove-vRAReservation Remove-vRAReservationNetwork Remove-vRAReservationPolicy Remove-vRAReservationStorage Remove-vRARoutedNetworkProfile Remove-vRAService Remove-vRAStorageReservationPolicy Remove-vRATenant Remove-vRATenantDirectory Remove-vRAUserPrincipal Remove-vRNIApplication Remove-vRNIApplicationTier Remove-vRNIDataSource Repair-NsxEdge Repair-VsanObject Request-vRACatalogItem Request-vRAResourceAction Restart-CIVApp Restart-CIVAppGuest Restart-CIVM Restart-CIVMGuest Restart-VM Restart-VMGuest Restart-VMHost Restart-VMHostService Resume-HCXReplication Revoke-NsxSpoofguardNicApproval Save-Module Save-Package Save-Script Search-Cloud Set-AdvancedSetting Set-AlarmDefinition Set-Annotation Set-CDDrive Set-CIAccessControlRule Set-CINetworkAdapter Set-CIVApp Set-CIVAppNetwork Set-CIVAppStartRule Set-CIVAppTemplate Set-Cluster Set-CustomAttribute Set-Datacenter Set-Datastore Set-DatastoreCluster Set-DrsClusterGroup Set-DrsRule Set-DrsVMHostRule Set-FloppyDrive Set-Folder Set-HCXAppliance Set-HCXMigration Set-HCXReplication Set-HardDisk Set-IScsiHbaTarget Set-KeyManagementServer Set-KmsCluster Set-MarkdownOption Set-NetworkAdapter Set-NfsUser Set-NicTeamingPolicy Set-NodeExclusiveResources Set-NodeManager Set-NodeResourceSource Set-NodeResources Set-NsxEdge Set-NsxEdgeBgp Set-NsxEdgeFirewall Set-NsxEdgeInterface Set-NsxEdgeNat Set-NsxEdgeOspf Set-NsxEdgeRouting Set-NsxFirewallGlobalConfiguration Set-NsxFirewallRule Set-NsxFirewallSavedConfiguration Set-NsxFirewallThreshold Set-NsxLoadBalancer Set-NsxLoadBalancerPoolMember Set-NsxLogicalRouter Set-NsxLogicalRouterBgp Set-NsxLogicalRouterBridging Set-NsxLogicalRouterInterface Set-NsxLogicalRouterOspf Set-NsxLogicalRouterRouting Set-NsxManager Set-NsxManagerRole Set-NsxManagerTimeSettings Set-NsxSecurityPolicy Set-NsxSecurityPolicyFirewallRule Set-NsxSslVpn Set-OSCustomizationNicMapping Set-OSCustomizationSpec Set-Org Set-OrgNetwork Set-OrgVdc Set-OrgVdcNetwork Set-PSCurrentConfigurationNode Set-PSDefaultConfigurationDocument Set-PSMetaConfigDocInsProcessedBeforeMeta Set-PSMetaConfigVersionInfoV2 Set-PSReadLineKeyHandler Set-PSReadLineOption Set-PSRepository Set-PSTopConfigurationName Set-PackageSource Set-PowerCLIConfiguration Set-ResourcePool Set-ScsiController Set-ScsiLun Set-ScsiLunPath Set-SecurityPolicy Set-Snapshot Set-SpbmEntityConfiguration Set-SpbmStoragePolicy Set-StatInterval Set-Tag Set-TagCategory Set-Template Set-VAIOFilter Set-VApp Set-VDBlockedPolicy Set-VDPort Set-VDPortgroup Set-VDPortgroupOverridePolicy Set-VDSecurityPolicy Set-VDSwitch Set-VDTrafficShapingPolicy Set-VDUplinkLacpPolicy Set-VDUplinkTeamingPolicy Set-VDVlanConfiguration Set-VDisk Set-VIPermission Set-VIRole Set-VM Set-VMHost Set-VMHostAccount Set-VMHostAdvancedConfiguration Set-VMHostAuthentication Set-VMHostDiagnosticPartition Set-VMHostFirewallDefaultPolicy Set-VMHostFirewallException Set-VMHostFirmware Set-VMHostHba Set-VMHostModule Set-VMHostNetwork Set-VMHostNetworkAdapter Set-VMHostProfile Set-VMHostProfileImageCacheConfiguration Set-VMHostProfileStorageDeviceConfiguration Set-VMHostProfileUserConfiguration Set-VMHostProfileVmPortGroupConfiguration Set-VMHostRoute Set-VMHostService Set-VMHostSnmp Set-VMHostStartPolicy Set-VMHostStorage Set-VMHostSysLogServer Set-VMQuestion Set-VMResourceConfiguration Set-VMStartPolicy Set-VTpm Set-VirtualPortGroup Set-VirtualSwitch Set-VsanClusterConfiguration Set-VsanFaultDomain Set-VsanIscsiInitiatorGroup Set-VsanIscsiLun Set-VsanIscsiTarget Set-vRABusinessGroup Set-vRACatalogItem Set-vRACustomForm Set-vRAEntitlement Set-vRAExternalNetworkProfile Set-vRANATNetworkProfile Set-vRAReservation Set-vRAReservationNetwork Set-vRAReservationPolicy Set-vRAReservationStorage Set-vRARoutedNetworkProfile Set-vRAService Set-vRAStorageReservationPolicy Set-vRATenant Set-vRATenantDirectory Set-vRAUserPrincipal Set-vRNIDataSourceSNMPConfig Show-Markdown Start-CIVApp Start-CIVM Start-HCXMigration Start-HCXReplication Start-SpbmReplicationFailover Start-SpbmReplicationPrepareFailover Start-SpbmReplicationPromote Start-SpbmReplicationReverse Start-SpbmReplicationTestFailover Start-ThreadJob Start-VApp Start-VM Start-VMHost Start-VMHostService Start-VsanClusterDiskUpdate Start-VsanClusterRebalance Start-VsanEncryptionConfiguration Stop-CIVApp Stop-CIVAppGuest Stop-CIVM Stop-CIVMGuest Stop-SpbmReplicationTestFailover Stop-Task Stop-VApp Stop-VM Stop-VMGuest Stop-VMHost Stop-VMHostService Stop-VsanClusterRebalance Suspend-CIVApp Suspend-CIVM Suspend-HCXReplication Suspend-VM Suspend-VMGuest Suspend-VMHost Sync-SpbmReplicationGroup Test-ConflictingResources Test-HCXMigration Test-HCXReplication Test-Json Test-ModuleReloadRequired Test-MofInstanceText Test-NodeManager Test-NodeResourceSource Test-NodeResources Test-ScriptFileInfo Test-VMHostProfileCompliance Test-VMHostSnmp Test-VsanClusterHealth Test-VsanNetworkPerformance Test-VsanStoragePerformance Test-VsanVMCreation Test-vRAPackage Uninstall-Module Uninstall-Package Uninstall-Script Unlock-VM Unregister-PSRepository Unregister-PackageSource Update-ConfigurationDocumentRef Update-ConfigurationErrorCount Update-DependsOn Update-LocalConfigManager Update-Module Update-ModuleManifest Update-ModuleVersion Update-PowerNsx Update-Script Update-ScriptFileInfo Update-Tools Update-VsanHclDatabase ValidateUpdate-ConfigurationData Wait-Debugger Wait-NsxControllerJob Wait-NsxGenericJob Wait-NsxJob Wait-Task Wait-Tools Write-Information Write-Log Write-MetaConfigFile Write-NodeMOFFile",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},contains:[t,e.NUMBER_MODE,r,{className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},{className:"literal",begin:/\$(null|true|false)\b/},n,a]}})),Xe.registerLanguage("processing",(function(e){return{keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}})),Xe.registerLanguage("profile",(function(e){return{contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]}})),Xe.registerLanguage("prolog",(function(e){var t={begin:/\(/,end:/\)/,relevance:0},n={begin:/\[/,end:/\]/},r={className:"comment",begin:/%/,end:/$/,contains:[e.PHRASAL_WORDS_MODE]},a={className:"string",begin:/`/,end:/`/,contains:[e.BACKSLASH_ESCAPE]},i=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{begin:/_[A-Za-z0-9_]*/}],relevance:0},t,{begin:/:-/},n,r,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,a,{className:"string",begin:/0\'(\\\'|.)/},{className:"string",begin:/0\'\\s/},e.C_NUMBER_MODE];return t.contains=i,n.contains=i,{contains:i.concat([{begin:/\.$/}])}})),Xe.registerLanguage("properties",(function(e){var t="[ \\t\\f]*",n="("+t+"[:=]"+t+"|[ \\t\\f]+)",r="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={end:n,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+n,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:a},{begin:r+n,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:r,endsParent:!0,relevance:0}],starts:a},{className:"attr",relevance:0,begin:r+t+"$"}]}})),Xe.registerLanguage("protobuf",(function(e){return{keywords:{keyword:"package import option optional required repeated group oneof",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,{className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"function",beginKeywords:"rpc",end:/;/,excludeEnd:!0,keywords:"rpc returns"},{begin:/^\s*[A-Z_]+/,end:/\s*=/,excludeEnd:!0}]}})),Xe.registerLanguage("puppet",(function(e){var t=e.COMMENT("#","$"),n=e.inherit(e.TITLE_MODE,{begin:"([A-Za-z_]|::)(\\w|::)*"}),r={className:"variable",begin:"\\$([A-Za-z_]|::)(\\w|::)*"},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[t,r,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[n,t]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,t,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},r]}],relevance:0}]}})),Xe.registerLanguage("purebasic",(function(e){return{aliases:["pb","pbi"],keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule UseModule Wend While With XIncludeFile XOr",contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,returnBegin:!0,contains:[{className:"keyword",begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]}})),Xe.registerLanguage("python",(function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},a={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,a,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,a,r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},s={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i,e.HASH_COMMENT_MODE]};return r.contains=[i,o,n],{aliases:["py","gyp","ipython"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,s,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}})),Xe.registerLanguage("q",(function(e){return{aliases:["k","kdb"],keywords:{keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"},lexemes:/(`?)[A-Za-z0-9_]+\b/,contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]}})),Xe.registerLanguage("qml",(function(e){var t="[a-zA-Z_][a-zA-Z0-9\\._]*",n={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:t,returnEnd:!1}},r={begin:t+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:t,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},a={begin:t+"\\s*{",end:"{",returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:t})]};return{aliases:["qt"],case_insensitive:!1,keywords:{keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise"},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r,a],illegal:/#/}})),Xe.registerLanguage("r",(function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{contains:[e.HASH_COMMENT_MODE,{begin:t,lexemes:t,keywords:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}})),Xe.registerLanguage("reasonml",(function(e){var t="~?[a-z$_][0-9a-zA-Z$_]*",n="`?[A-Z$_][0-9a-zA-Z$_]*",r="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map((function(e){return e.split("").map((function(e){return"\\"+e})).join("")})).join("|")+"|==|===)",a="\\s+"+r+"\\s+",i={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},o="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={className:"number",relevance:0,variants:[{begin:o},{begin:"\\(\\-"+o+"\\)"}]},l={className:"operator",relevance:0,begin:r},c=[{className:"identifier",relevance:0,begin:t},l,s],d=[e.QUOTE_STRING_MODE,l,{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",contains:[{className:"identifier",begin:n,relevance:0}]}],_=[{className:"module",begin:"\\b"+n,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:n,relevance:0}]}],u={className:"function",relevance:0,keywords:i,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+t+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:t},{begin:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{begin:t,end:"(,|\\n|\\))",relevance:0,contains:[l,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:_}]}]}]},{begin:"\\(\\.\\s"+t+"\\)\\s*=>"}]};d.push(u);var m={className:"constructor",begin:n+"\\(",end:"\\)",illegal:"\\n",keywords:i,contains:[e.QUOTE_STRING_MODE,l,{className:"params",begin:"\\b"+t}]},p={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:i,end:"=>",relevance:0,contains:[m,l,{relevance:0,className:"constructor",begin:n}]},g={className:"module-access",keywords:i,returnBegin:!0,variants:[{begin:"\\b("+n+"\\.)+"+t},{begin:"\\b("+n+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[u,{begin:"\\(",end:"\\)",skip:!0}].concat(d)},{begin:"\\b("+n+"\\.)+{",end:"}"}],contains:d};return _.push(g),{aliases:["re"],keywords:i,illegal:"(:\\-|:=|\\${|\\+=)",contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(\\#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:c},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:c},m,{className:"operator",begin:a,illegal:"\\-\\->",relevance:0},s,e.C_LINE_COMMENT_MODE,p,u,{className:"module-def",begin:"\\bmodule\\s+"+t+"\\s+"+n+"\\s+=\\s+{",end:"}",returnBegin:!0,keywords:i,relevance:0,contains:[{className:"module",relevance:0,begin:n},{begin:"{",end:"}",skip:!0}].concat(d)},g]}})),Xe.registerLanguage("rib",(function(e){return{keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"</",contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}})),Xe.registerLanguage("roboconf",(function(e){var t="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+t,end:"}",keywords:"facet",contains:[n,e.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+t,end:"}",keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,e.HASH_COMMENT_MODE]},{begin:"^"+t,end:"}",contains:[n,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}})),Xe.registerLanguage("routeros",(function(e){var t="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",r={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},i={className:"string",begin:/'/,end:/'/};return{aliases:["routeros","mikrotik"],case_insensitive:!0,lexemes:/:?[\w-]+/,keywords:{literal:n,keyword:t+" :"+t.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")},contains:[{variants:[{begin:/^@/,end:/$/},{begin:/\/\*/,end:/\*\//},{begin:/%%/,end:/$/},{begin:/^'/,end:/$/},{begin:/^\s*\/[\w-]+=/,end:/$/},{begin:/\/\//,end:/$/},{begin:/^\[\</,end:/\>\]$/},{begin:/<\//,end:/>/},{begin:/^facet /,end:/\}/},{begin:"^1\\.\\.(\\d+)$",end:/$/}],illegal:/./},e.COMMENT("^#","$"),a,i,r,{begin:/[\w-]+\=([^\s\{\}\[\]\(\)]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[a,i,r,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s\{\}\[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+"add remove enable disable set get print export edit find run debug error info warning".split(" ").join("|")+")([\\s[(]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+"traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw".split(" ").join("|")+");?\\s)+",relevance:10},{begin:/\.\./}]}]}})),Xe.registerLanguage("rsl",(function(e){return{keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$"},{className:"class",beginKeywords:"surface displacement light volume imager",end:"\\("},{beginKeywords:"illuminate illuminance gather",end:"\\("}]}})),Xe.registerLanguage("ruleslanguage",(function(e){return{keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+[a-zA-Z\\ \\.]*",relevance:0},{begin:"#[a-zA-Z\\ \\.]+"}]}]}})),Xe.registerLanguage("rust",(function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",n="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:n},lexemes:e.IDENT_RE+"!?",illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"string",variants:[{begin:/r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{begin:"\\b0b([01_]+)"+t},{begin:"\\b0o([0-7_]+)"+t},{begin:"\\b0x([A-Fa-f0-9_]+)"+t},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],relevance:0},{className:"function",beginKeywords:"fn",end:"(\\(|<)",excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"#\\!?\\[",end:"\\]",contains:[{className:"meta-string",begin:/"/,end:/"/}]},{className:"class",beginKeywords:"type",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"\\S"},{className:"class",beginKeywords:"trait enum struct union",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:"[\\w\\d]"},{begin:e.IDENT_RE+"::",keywords:{built_in:n}},{begin:"->"}]}})),Xe.registerLanguage("sas",(function(e){return{aliases:["sas","SAS"],case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where"},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/},{className:"variable",begin:/\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]"},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}})),Xe.registerLanguage("scala",(function(e){var t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[t],relevance:10}]},r={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},a={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[r]},a]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[a]};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},r,o,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}})),Xe.registerLanguage("scheme",(function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},r={className:"number",variants:[{begin:"(\\-|\\+)?\\d+([./]\\d+)?",relevance:0},{begin:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},a=e.QUOTE_STRING_MODE,i=[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#\\|","\\|#")],o={begin:t,relevance:0},s={className:"symbol",begin:"'"+t},l={endsWithParent:!0,relevance:0},c={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",n,a,r,o,s]}]},d={className:"name",begin:t,lexemes:t,keywords:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},_={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[d,{begin:/\(/,end:/\)/,endsParent:!0,contains:[o]}]},d,l]};return l.contains=[n,r,a,o,s,c,_].concat(i),{illegal:/\S/,contains:[{className:"meta",begin:"^#!",end:"$"},r,a,s,c,_].concat(i)}})),Xe.registerLanguage("scilab",(function(e){var t=[e.C_NUMBER_MODE,{className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]}];return{aliases:["sci"],lexemes:/%?\w+/,keywords:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{begin:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",end:"",relevance:0},{begin:"\\[",end:"\\]'*[\\.']*",relevance:0,contains:t},e.COMMENT("//","$")].concat(t)}})),Xe.registerLanguage("scss",(function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={className:"number",begin:"#[0-9A-Fa-f]+"};e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE;return{case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,n,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@",end:"[{;]",keywords:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",contains:[t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n,e.CSS_NUMBER_MODE,{begin:"\\s[A-Za-z0-9_.-]+",relevance:0}]}]}})),Xe.registerLanguage("shell",(function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}})),Xe.registerLanguage("smali",(function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}})),Xe.registerLanguage("smalltalk",(function(e){var t={className:"string",begin:"\\$.{1}"},n={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{aliases:["st"],keywords:"self super nil true false thisContext",contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:"[a-z][a-zA-Z0-9_]*:",relevance:0},e.C_NUMBER_MODE,n,t,{begin:"\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?[a-z][a-zA-Z0-9_]*"}]},{begin:"\\#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,t,e.C_NUMBER_MODE,n]}]}})),Xe.registerLanguage("sml",(function(e){return{aliases:["ml"],keywords:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,lexemes:"[a-z_]\\w*!?",contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}})),Xe.registerLanguage("sqf",(function(e){var t={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},n={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(t,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{aliases:["sqf"],case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{className:"variable",begin:/\b_+[a-zA-Z_]\w*/},{className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},t,n],illegal:/#|^\$ /}})),Xe.registerLanguage("sql",(function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}})),Xe.registerLanguage("stan",(function(e){return{contains:[e.HASH_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE,lexemes:e.UNDERSCORE_IDENT_RE,keywords:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0}]}})),Xe.registerLanguage("stata",(function(e){return{aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}})),Xe.registerLanguage("step21",(function(e){return{aliases:["p21","step","stp"],case_insensitive:!0,lexemes:"[A-Z_][A-Z0-9_.]*",keywords:{keyword:"HEADER ENDSEC DATA"},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}})),Xe.registerLanguage("stylus",(function(e){var t={className:"variable",begin:"\\$"+e.IDENT_RE},n={className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"};return{aliases:["styl"],case_insensitive:!1,keywords:"if else for in",illegal:"("+["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"].join("|")+")",contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-class"},{begin:"\\#[a-zA-Z][a-zA-Z0-9_-]*(?=[\\.\\s\\n\\[\\:,])",className:"selector-id"},{begin:"\\b("+["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"].join("|")+")(?=[\\.\\s\\n\\[\\:,])",className:"selector-tag"},{begin:"&?:?:\\b("+["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"].join("|")+")(?=[\\.\\s\\n\\[\\:,])"},{begin:"@("+["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"].join("|")+")\\b"},t,e.CSS_NUMBER_MODE,e.NUMBER_MODE,{className:"function",begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{className:"params",begin:/\(/,end:/\)/,contains:[n,t,e.APOS_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.QUOTE_STRING_MODE]}]},{className:"attribute",begin:"\\b("+["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse().join("|")+")\\b",starts:{end:/;|$/,contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE,e.NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/\./,relevance:0}}]}})),Xe.registerLanguage("subunit",(function(e){return{case_insensitive:!0,contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}})),Xe.registerLanguage("swift",(function(e){var t={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},i={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return r.contains=[i],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin:/</,end:/>/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",i,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}})),Xe.registerLanguage("taggerscript",(function(e){return{contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},{className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},{className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},{className:"symbol",begin:/\\./}]}})),Xe.registerLanguage("yaml",(function(e){var t={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t]}})),Xe.registerLanguage("tap",(function(e){return{case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:"(s+)?---$",end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}})),Xe.registerLanguage("tcl",(function(e){return{aliases:["tk"],keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},{className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]}})),Xe.registerLanguage("tex",(function(e){var t={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},{begin:/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{contains:[t,{className:"formula",contains:[t],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}})),Xe.registerLanguage("thrift",(function(e){return{keywords:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:"bool byte i16 i32 i64 double string binary",literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",end:">",keywords:"bool byte i16 i32 i64 double string binary",contains:["self"]}]}})),Xe.registerLanguage("tp",(function(e){var t={className:"number",begin:"[1-9][0-9]*",relevance:0},n={className:"symbol",begin:":[^\\]]+"};return{keywords:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},contains:[{className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",t,n]},{className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",t,e.QUOTE_STRING_MODE,n]},{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}})),Xe.registerLanguage("twig",(function(e){var t="attribute block constant cycle date dump include max min parent random range source template_from_string",n={beginKeywords:t,keywords:{name:t},relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},r={begin:/\|[A-Za-z_]+:?/,keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode",contains:[n]},a="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with";return a=a+" "+a.split(" ").map((function(e){return"end"+e})).join(" "),{aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#}/),{className:"template-tag",begin:/\{%/,end:/%}/,contains:[{className:"name",begin:/\w+/,keywords:a,starts:{endsWithParent:!0,contains:[r,n],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/}}/,contains:["self",r,n]}]}})),Xe.registerLanguage("typescript",(function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},r={begin:"\\(",end:/\)/,keywords:t,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},a={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,r]},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},s={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},c={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};return o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,i,e.REGEXP_MODE],{aliases:["ts"],keywords:t,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,l,c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",e.inherit(e.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),a],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",a]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},n,r]}})),Xe.registerLanguage("vala",(function(e){return{keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:"{",excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$",relevance:2}]}})),Xe.registerLanguage("vbnet",(function(e){return{aliases:["vb"],case_insensitive:!0,keywords:{keyword:"addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},illegal:"//|{|}|endif|gosub|variant|wend|^\\$ ",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT("'","$",{returnBegin:!0,contains:[{className:"doctag",begin:"'''|\x3c!--|--\x3e",contains:[e.PHRASAL_WORDS_MODE]},{className:"doctag",begin:"</?",end:">",contains:[e.PHRASAL_WORDS_MODE]}]}),e.C_NUMBER_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end region externalsource"}}]}})),Xe.registerLanguage("vbscript",(function(e){return{aliases:["vbs"],case_insensitive:!0,keywords:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},illegal:"//",contains:[e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}})),Xe.registerLanguage("vbscript-html",(function(e){return{subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}})),Xe.registerLanguage("verilog",(function(e){return{aliases:["v","sv","svh"],case_insensitive:!1,keywords:{keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"},lexemes:/[\w\$]+/,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{begin:"\\b([0-9_])+",relevance:0}]},{className:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{className:"meta",begin:"`",end:"$",keywords:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},relevance:0}]}})),Xe.registerLanguage("vhdl",(function(e){return{case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:"{",contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}})),Xe.registerLanguage("vim",(function(e){return{lexemes:/[!#@\w]+/,keywords:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]*/},{className:"function",beginKeywords:"function function!",end:"$",relevance:0,contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}})),Xe.registerLanguage("x86asm",(function(e){return{case_insensitive:!0,lexemes:"[.%]?"+e.IDENT_RE,keywords:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}})),Xe.registerLanguage("xl",(function(e){var t={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts"},n={className:"string",begin:'"',end:'"',illegal:"\\n"},r={beginKeywords:"import",end:"$",keywords:t,contains:[n]},a={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:t}})]};return{aliases:["tao"],lexemes:/[a-zA-Z][a-zA-Z0-9_?]*/,keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:"<<",end:">>"},a,r,{className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}})),Xe.registerLanguage("xquery",(function(e){return{aliases:["xpath","xq"],case_insensitive:!1,lexemes:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN"},contains:[{className:"variable",begin:/[\$][\w-:]+/},{className:"built_in",variants:[{begin:/\barray\:/,end:/(?:append|filter|flatten|fold\-(?:left|right)|for-each(?:\-pair)?|get|head|insert\-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap\:/,end:/(?:contains|entry|find|for\-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath\:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop\:/,end:/\(/,excludeEnd:!0},{begin:/\bfn\:/,end:/\(/,excludeEnd:!0},{begin:/[^<\/\$\:'"-]\b(?:abs|accumulator\-(?:after|before)|adjust\-(?:date(?:Time)?|time)\-to\-timezone|analyze\-string|apply|available\-(?:environment\-variables|system\-properties)|avg|base\-uri|boolean|ceiling|codepoints?\-(?:equal|to\-string)|collation\-key|collection|compare|concat|contains(?:\-token)?|copy\-of|count|current(?:\-)?(?:date(?:Time)?|time|group(?:ing\-key)?|output\-uri|merge\-(?:group|key))?data|dateTime|days?\-from\-(?:date(?:Time)?|duration)|deep\-equal|default\-(?:collation|language)|distinct\-values|document(?:\-uri)?|doc(?:\-available)?|element\-(?:available|with\-id)|empty|encode\-for\-uri|ends\-with|environment\-variable|error|escape\-html\-uri|exactly\-one|exists|false|filter|floor|fold\-(?:left|right)|for\-each(?:\-pair)?|format\-(?:date(?:Time)?|time|integer|number)|function\-(?:arity|available|lookup|name)|generate\-id|has\-children|head|hours\-from\-(?:dateTime|duration|time)|id(?:ref)?|implicit\-timezone|in\-scope\-prefixes|index\-of|innermost|insert\-before|iri\-to\-uri|json\-(?:doc|to\-xml)|key|lang|last|load\-xquery\-module|local\-name(?:\-from\-QName)?|(?:lower|upper)\-case|matches|max|minutes\-from\-(?:dateTime|duration|time)|min|months?\-from\-(?:date(?:Time)?|duration)|name(?:space\-uri\-?(?:for\-prefix|from\-QName)?)?|nilled|node\-name|normalize\-(?:space|unicode)|not|number|one\-or\-more|outermost|parse\-(?:ietf\-date|json)|path|position|(?:prefix\-from\-)?QName|random\-number\-generator|regex\-group|remove|replace|resolve\-(?:QName|uri)|reverse|root|round(?:\-half\-to\-even)?|seconds\-from\-(?:dateTime|duration|time)|snapshot|sort|starts\-with|static\-base\-uri|stream\-available|string\-?(?:join|length|to\-codepoints)?|subsequence|substring\-?(?:after|before)?|sum|system\-property|tail|timezone\-from\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\-available|unordered|unparsed\-(?:entity|text)?\-?(?:public\-id|uri|available|lines)?|uri\-collection|xml\-to\-json|years?\-from\-(?:date(?:Time)?|duration)|zero\-or\-one)\b/},{begin:/\blocal\:/,end:/\(/,excludeEnd:!0},{begin:/\bzip\:/,end:/(?:zip\-file|(?:xml|html|text|binary)\-entry| (?:update\-)?entries)\b/},{begin:/\b(?:util|db|functx|app|xdmp|xmldb)\:/,end:/\(/,excludeEnd:!0}]},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{className:"comment",begin:"\\(:",end:":\\)",relevance:10,contains:[{className:"doctag",begin:"@\\w+"}]},{className:"meta",begin:/%[\w-:]+/},{className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,end:/;/},{beginKeywords:"element attribute comment document processing-instruction",end:"{",excludeEnd:!0},{begin:/<([\w\._:\-]+)((\s*.*)=('|").*('|"))?>/,end:/(\/[\w\._:\-]+>)/,subLanguage:"xml",contains:[{begin:"{",end:"}",subLanguage:"xquery"},"self"]}]}})),Xe.registerLanguage("zephir",(function(e){var t={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["zep"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",contains:[e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:"<<<['\"]?\\w+['\"]?$",end:"^\\w+;",contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e.C_BLOCK_COMMENT_MODE,t,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,n]}}));var Nt=function(){return function(e,t,n){return function(e){let t=0;f(e,"list",e=>{let n=!0,r=0;const a=[];return Array.from(e.children).forEach(e=>{e.children&&"paragraph"===e.children[0].type&&e.children[0].children&&e.children[0].children[0].value?"~!=".indexOf(e.children[0].children[0].value[0])<0&&(n=!1):n=!1}),n&&(Array.from(e.children).forEach(e=>{"paragraph"===e.children[0].type&&("~"===e.children[0].children[0].value[0]?a.push(.5):"!"===e.children[0].children[0].value[0]?a.push(0):a.push(1),e.children[0].children[0].value=`${e.children[0].children[0].value.slice(1)}\r`)}),e.type="mc",e.data={hName:"fieldset",hProperties:{className:"mc check",id:`mc_${t}`}},e.children=[{type:"list-item-mc",data:{hName:"ul"},children:e.children.map(e=>({type:"input-list-item",data:{hName:"li"},children:[{type:"input-list-input",data:{hName:"input",hProperties:{checked:e.checked,type:"checkbox",id:`mc_${t}_${r}`,className:"!~="[2*a[r]]}}},{type:"input-list-label",data:{hName:"label",hProperties:{for:`mc_${t}_${r++}`}},children:Ct(e.children)}]}))},{type:"field-button",data:{hName:"input",hProperties:{onclick:`check('mc_${t}',[${String(a)}])`,value:"Validate",type:"button"}}}],t++),e})}(e),"function"==typeof n?n(null,e,t):e}};function vt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ot={prop:{},eaten:""},At={defaultValue:function(){}};var yt=function(e,t,n){var r="",a=!1,i=!1,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vt(n,!0).forEach((function(t){Rt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vt(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},At,{},n);if("function"!=typeof o.defaultValue){var s=o.defaultValue;o.defaultValue=function(){return s}}var l,c,d={},_="";void 0===t&&(t=0);var u=function(){return t>=e.length||"\n\r{}".indexOf(e[t])>-1?(a&&"}"!==e[t]&&(i=!0),!0):"}"===e[t]&&a},m="",p=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))>=0;)r+=e.charAt(t),m+=e.charAt(t),t++;return u()},g=function(n){for(m="";t<e.length&&"\n\r{}".indexOf(e.charAt(t))<0&&n.indexOf(e.charAt(t))<0;)r+=e.charAt(t),m+=e.charAt(t),t++;return _?l=m:_=m,u()},E=function(e,n){return r+=e,t++,!n&&u()},h=function(n){return E(n,!0),function(n){if(m="",e[t]!==n){for(;t<e.length&&(n!==e[t]||"\\"===e[t-1])&&"\n"!==e[t]&&"\r"!==e[t];)r+=e.charAt(t),m+=e.charAt(t),t++;"\n"===e[t]||"\r"===e[t]||t>=e.length?i=!0:(_?l=m.replace(/\\"/g,'"'):_=m.replace(/\\"/g,'"'),u())}}(n),e.charAt(t)!==n?Ot:E(n)?-1:void 0},S=!1,f=function(){switch(c){case"id":S?(d.id=_,S=!1):d.id=d.id||_;break;case"class":d.class||(d.class=[]),d.class.indexOf(_)<0&&d.class.push(_);break;case"key":if(!_)return Ot;_ in d?"class"===_&&Boolean(l)&&d.class.push(l):(d[_]=void 0===l?o.defaultValue(_):"class"===_?[l]:l,"id"===_&&(S=!0))}c=void 0,_="",l=void 0};for(p(" \t\v"),"{"===e[t]&&(E("{"),a=!0);!u()&&!p(" \t\v");){if("."===e.charAt(t)){if(c="class",E(".")){i=!0;break}}else if("#"===e.charAt(t)){if(c="id",E("#")){i=!0;break}}else c="key";if(g("=\t\b\v  ")||!_)break;if("="===e.charAt(t)&&"key"===c){if(E("="))break;if('"'===e.charAt(t)){var T=h('"');if(-1===T)break;if(T===Ot)return Ot}else if("'"===e.charAt(t)){var b=h("'");if(-1===b)break;if(b===Ot)return Ot}else if(g(" \t\n\r\v=}"))break}f()}if(f(),a){if(!(t<e.length&&"}"===e[t]))return Ot;a=!1,E("}")}return i?Ot:{prop:d,eaten:r}},It="[__",Dt="__]";function xt(e,t){return e.indexOf(It,t)}var Mt=function(){function e(e,t){if(t.startsWith(It)){for(var n="",r=It.length,a=t.length;!t.startsWith(Dt,r)&&r<a;){if(n+=t.charAt(r),"\n"===t.charAt(r))return!0;r++}var i="",o={};if("{"===t.charAt(r+Dt.length)){var s=yt(t,r+Dt.length);i=s.eaten,o=s.prop}return"password"!==o.type&&(o.type="text"),o.placeholder=n.replace(/^_*/g,"").replace(/_*$/g,"")||void 0,!(r<a)||e(It+n+Dt+i)({type:"line-input",children:[],data:{hName:"input",hProperties:o}})}}e.locator=xt;var t=this.Parser,n=t.prototype.inlineTokenizers,r=t.prototype.inlineMethods;n.input=e,r.splice(r.indexOf("url"),0,"input");var a=this.Compiler;a&&(a.prototype.visitors.lineinput=function(e){return"[__".concat(this.all(e).join(""),"__]")})};const wt="[",Lt=/(\| *[vV] *])({[^\n]*})?/;function Pt(e,t){return e.indexOf(wt,t)}var kt=function(){let e="|v]";function t(t,n){if(!this.options.gfm||!n.startsWith(wt))return;let r="",a=1;const{length:i}=n,o=t.now();o.column+=2,o.offset+=2;let s=null;if(!((s=n.substr(1).match(Lt))&&a<i))return;r+=n.substr(1,s.index),e=s[1],a+=s.index+e.length;let l="",c={};if("{"===n.charAt(a)){const e=yt(n,a);a+=(l=e.eaten).length,c=e.prop}return!(a<=i)||t(wt+r+e+l)({type:"select",children:[],data:{hName:"select",hProperties:c,hChildren:r.split("|").filter(e=>e).map(e=>{const t=e.trim();return{type:"element",tagName:"option",properties:{value:t},children:[{type:"text",value:t}]}})}})}t.locator=Pt;const{Parser:n}=this,{inlineTokenizers:r}=n.prototype,{inlineMethods:a}=n.prototype;r.select=t,a.splice(a.indexOf("url"),0,"select");const{Compiler:i}=this;if(i){const{visitors:t}=i.prototype;t.lineselect=function(t){return wt+this.all(t).join("")+e}}};const Ut=/^(\[_+\n)/g,Ft=/(_+])/g;function Gt(e,t){return e.indexOf(Ut,t)}var Bt=function(){function e(e,t){if(!this.options.gfm||0!==t.search(Ut))return;let n={class:void 0,id:void 0},r="";if(t.search(Ft)>0){if(t.search(Ft)+t.match(Ft)[0].length<t.length&&"{"===t.charAt(t.search(Ft)+t.match(Ft)[0].length)){const e=yt(t,t.search(Ft)+t.match(Ft)[0].length);r=e.eaten,n=e.prop}let a=t.search(Ft);return a!==t.match(Ut)[0].length&&(a-=1),e(t.slice(0,t.search(Ft)+t.match(Ft)[0].length)+r)({type:"textarea",data:{hName:"TEXTAREA",hProperties:n,hChildren:[{type:"text",value:t.slice(t.match(Ut)[0].length,a)}]}})}return!0}e.locator=Gt;const{Parser:t}=this,{blockTokenizers:n}=t.prototype,{blockMethods:r}=t.prototype;n.textinput=e,r.splice(r.indexOf("fencedCode")+1,0,"textinput");const{Compiler:a}=this;if(a){const{visitors:e}=a.prototype;e.textinput=function(e){return`[__${this.all(e).join("")}__]`}}};const Ht=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];var Yt={REPLACEMENT_CHARACTER:"�",CODE_POINTS:{EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},CODE_POINT_SEQUENCES:{DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},isSurrogate:function(e){return e>=55296&&e<=57343},isSurrogatePair:function(e){return e>=56320&&e<=57343},getSurrogatePairCodePoint:function(e,t){return 1024*(e-55296)+9216+t},isControlCodePoint:function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},isUndefinedCodePoint:function(e){return e>=64976&&e<=65007||Ht.indexOf(e)>-1}},Vt={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"};const zt=Yt.CODE_POINTS,qt=65536;var Kt=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=qt}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){const t=this.html.charCodeAt(this.pos+1);if(Yt.isSurrogatePair(t))return this.pos++,this._addGap(),Yt.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,zt.EOF;return this._err(Vt.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,zt.EOF;let e=this.html.charCodeAt(this.pos);if(this.skipNextNewLine&&e===zt.LINE_FEED)return this.skipNextNewLine=!1,this._addGap(),this.advance();if(e===zt.CARRIAGE_RETURN)return this.skipNextNewLine=!0,zt.LINE_FEED;return this.skipNextNewLine=!1,Yt.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===zt.LINE_FEED||e===zt.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e}_checkForProblematicCharacters(e){Yt.isControlCodePoint(e)?this._err(Vt.controlCharacterInInputStream):Yt.isUndefinedCodePoint(e)&&this._err(Vt.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}},Wt=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);const Qt=Yt.CODE_POINTS,$t=Yt.CODE_POINT_SEQUENCES,jt={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},Xt=1,Zt=2,Jt=4,en=Xt|Zt|Jt,tn="DATA_STATE",nn="RCDATA_STATE",rn="RAWTEXT_STATE",an="SCRIPT_DATA_STATE",on="PLAINTEXT_STATE",sn="TAG_OPEN_STATE",ln="END_TAG_OPEN_STATE",cn="TAG_NAME_STATE",dn="RCDATA_LESS_THAN_SIGN_STATE",_n="RCDATA_END_TAG_OPEN_STATE",un="RCDATA_END_TAG_NAME_STATE",mn="RAWTEXT_LESS_THAN_SIGN_STATE",pn="RAWTEXT_END_TAG_OPEN_STATE",gn="RAWTEXT_END_TAG_NAME_STATE",En="SCRIPT_DATA_LESS_THAN_SIGN_STATE",hn="SCRIPT_DATA_END_TAG_OPEN_STATE",Sn="SCRIPT_DATA_END_TAG_NAME_STATE",fn="SCRIPT_DATA_ESCAPE_START_STATE",Tn="SCRIPT_DATA_ESCAPE_START_DASH_STATE",bn="SCRIPT_DATA_ESCAPED_STATE",Cn="SCRIPT_DATA_ESCAPED_DASH_STATE",Nn="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",vn="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",Rn="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",On="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",An="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",yn="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",In="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",Dn="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",xn="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",Mn="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",wn="BEFORE_ATTRIBUTE_NAME_STATE",Ln="ATTRIBUTE_NAME_STATE",Pn="AFTER_ATTRIBUTE_NAME_STATE",kn="BEFORE_ATTRIBUTE_VALUE_STATE",Un="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",Fn="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",Gn="ATTRIBUTE_VALUE_UNQUOTED_STATE",Bn="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",Hn="SELF_CLOSING_START_TAG_STATE",Yn="BOGUS_COMMENT_STATE",Vn="MARKUP_DECLARATION_OPEN_STATE",zn="COMMENT_START_STATE",qn="COMMENT_START_DASH_STATE",Kn="COMMENT_STATE",Wn="COMMENT_LESS_THAN_SIGN_STATE",Qn="COMMENT_LESS_THAN_SIGN_BANG_STATE",$n="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",jn="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",Xn="COMMENT_END_DASH_STATE",Zn="COMMENT_END_STATE",Jn="COMMENT_END_BANG_STATE",er="DOCTYPE_STATE",tr="BEFORE_DOCTYPE_NAME_STATE",nr="DOCTYPE_NAME_STATE",rr="AFTER_DOCTYPE_NAME_STATE",ar="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",ir="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",or="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",sr="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",lr="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",cr="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",dr="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",_r="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",ur="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",mr="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",pr="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",gr="BOGUS_DOCTYPE_STATE",Er="CDATA_SECTION_STATE",hr="CDATA_SECTION_BRACKET_STATE",Sr="CDATA_SECTION_END_STATE",fr="CHARACTER_REFERENCE_STATE",Tr="NAMED_CHARACTER_REFERENCE_STATE",br="AMBIGUOS_AMPERSAND_STATE",Cr="NUMERIC_CHARACTER_REFERENCE_STATE",Nr="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",vr="DECIMAL_CHARACTER_REFERENCE_START_STATE",Rr="HEXADEMICAL_CHARACTER_REFERENCE_STATE",Or="DECIMAL_CHARACTER_REFERENCE_STATE",Ar="NUMERIC_CHARACTER_REFERENCE_END_STATE";function yr(e){return e===Qt.SPACE||e===Qt.LINE_FEED||e===Qt.TABULATION||e===Qt.FORM_FEED}function Ir(e){return e>=Qt.DIGIT_0&&e<=Qt.DIGIT_9}function Dr(e){return e>=Qt.LATIN_CAPITAL_A&&e<=Qt.LATIN_CAPITAL_Z}function xr(e){return e>=Qt.LATIN_SMALL_A&&e<=Qt.LATIN_SMALL_Z}function Mr(e){return xr(e)||Dr(e)}function wr(e){return Mr(e)||Ir(e)}function Lr(e){return e>=Qt.LATIN_CAPITAL_A&&e<=Qt.LATIN_CAPITAL_F}function Pr(e){return e>=Qt.LATIN_SMALL_A&&e<=Qt.LATIN_SMALL_F}function kr(e){return e+32}function Ur(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Fr(e){return String.fromCharCode(kr(e))}function Gr(e,t){const n=Wt[++e];let r=++e,a=r+n-1;for(;r<=a;){const e=r+a>>>1,i=Wt[e];if(i<t)r=e+1;else{if(!(i>t))return Wt[e+n];a=e-1}}return-1}class Br{constructor(){this.preprocessor=new Kt,this.tokenQueue=[],this.allowCDATA=!1,this.state=tn,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Br.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,a=!0;const i=e.length;let o=0,s=t,l=void 0;for(;o<i;o++){if(o>0&&(s=this._consume(),r++),s===Qt.EOF){a=!1;break}if(s!==(l=e[o])&&(n||s!==kr(l))){a=!1;break}}if(!a)for(;r--;)this._unconsume();return a}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==$t.SCRIPT_STRING.length)return!1;for(let e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==$t.SCRIPT_STRING[e])return!1;return!0}_createStartTagToken(){this.currentToken={type:Br.START_TAG_TOKEN,tagName:"",selfClosing:!1,ackSelfClosing:!1,attrs:[]}}_createEndTagToken(){this.currentToken={type:Br.END_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}}_createCommentToken(){this.currentToken={type:Br.COMMENT_TOKEN,data:""}}_createDoctypeToken(e){this.currentToken={type:Br.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}}_createCharacterToken(e,t){this.currentCharacterToken={type:e,chars:t}}_createEOFToken(){this.currentToken={type:Br.EOF_TOKEN}}_createAttr(e){this.currentAttr={name:e,value:""}}_leaveAttrName(e){null===Br.getTokenAttr(this.currentToken,this.currentAttr.name)?this.currentToken.attrs.push(this.currentAttr):this._err(Vt.duplicateAttribute),this.state=e}_leaveAttrValue(e){this.state=e}_emitCurrentToken(){this._emitCurrentCharacterToken();const e=this.currentToken;this.currentToken=null,e.type===Br.START_TAG_TOKEN?this.lastStartTagName=e.tagName:e.type===Br.END_TAG_TOKEN&&(e.attrs.length>0&&this._err(Vt.endTagWithAttributes),e.selfClosing&&this._err(Vt.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Br.CHARACTER_TOKEN;yr(e)?t=Br.WHITESPACE_CHARACTER_TOKEN:e===Qt.NULL&&(t=Br.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,Ur(e))}_emitSeveralCodePoints(e){for(let t=0;t<e.length;t++)this._emitCodePoint(e[t])}_emitChars(e){this._appendCharToCurrentCharacterToken(Br.CHARACTER_TOKEN,e)}_matchNamedCharacterReference(e){let t=null,n=1,r=Gr(0,e);for(this.tempBuff.push(e);r>-1;){const e=Wt[r],a=e<en;a&&e&Xt&&(t=e&Zt?[Wt[++r],Wt[++r]]:[Wt[++r]],n=0);const i=this._consume();if(this.tempBuff.push(i),n++,i===Qt.EOF)break;r=a?e&Jt?Gr(r,i):-1:i===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===Un||this.returnState===Fn||this.returnState===Gn}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){const e=this._consume();return this._unconsume(),e===Qt.EQUALS_SIGN||wr(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e<this.tempBuff.length;e++)this.currentAttr.value+=Ur(this.tempBuff[e]);else this._emitSeveralCodePoints(this.tempBuff);this.tempBuff=[]}[tn](e){this.preprocessor.dropParsedChunk(),e===Qt.LESS_THAN_SIGN?this.state=sn:e===Qt.AMPERSAND?(this.returnState=tn,this.state=fr):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitCodePoint(e)):e===Qt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[nn](e){this.preprocessor.dropParsedChunk(),e===Qt.AMPERSAND?(this.returnState=nn,this.state=fr):e===Qt.LESS_THAN_SIGN?this.state=dn:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[rn](e){this.preprocessor.dropParsedChunk(),e===Qt.LESS_THAN_SIGN?this.state=mn:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[an](e){this.preprocessor.dropParsedChunk(),e===Qt.LESS_THAN_SIGN?this.state=En:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[on](e){this.preprocessor.dropParsedChunk(),e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?this._emitEOFToken():this._emitCodePoint(e)}[sn](e){e===Qt.EXCLAMATION_MARK?this.state=Vn:e===Qt.SOLIDUS?this.state=ln:Mr(e)?(this._createStartTagToken(),this._reconsumeInState(cn)):e===Qt.QUESTION_MARK?(this._err(Vt.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(),this._reconsumeInState(Yn)):e===Qt.EOF?(this._err(Vt.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken()):(this._err(Vt.invalidFirstCharacterOfTagName),this._emitChars("<"),this._reconsumeInState(tn))}[ln](e){Mr(e)?(this._createEndTagToken(),this._reconsumeInState(cn)):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingEndTagName),this.state=tn):e===Qt.EOF?(this._err(Vt.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken()):(this._err(Vt.invalidFirstCharacterOfTagName),this._createCommentToken(),this._reconsumeInState(Yn))}[cn](e){yr(e)?this.state=wn:e===Qt.SOLIDUS?this.state=Hn:e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):Dr(e)?this.currentToken.tagName+=Fr(e):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.tagName+=Yt.REPLACEMENT_CHARACTER):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):this.currentToken.tagName+=Ur(e)}[dn](e){e===Qt.SOLIDUS?(this.tempBuff=[],this.state=_n):(this._emitChars("<"),this._reconsumeInState(nn))}[_n](e){Mr(e)?(this._createEndTagToken(),this._reconsumeInState(un)):(this._emitChars("</"),this._reconsumeInState(nn))}[un](e){if(Dr(e))this.currentToken.tagName+=Fr(e),this.tempBuff.push(e);else if(xr(e))this.currentToken.tagName+=Ur(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(yr(e))return void(this.state=wn);if(e===Qt.SOLIDUS)return void(this.state=Hn);if(e===Qt.GREATER_THAN_SIGN)return this.state=tn,void this._emitCurrentToken()}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(nn)}}[mn](e){e===Qt.SOLIDUS?(this.tempBuff=[],this.state=pn):(this._emitChars("<"),this._reconsumeInState(rn))}[pn](e){Mr(e)?(this._createEndTagToken(),this._reconsumeInState(gn)):(this._emitChars("</"),this._reconsumeInState(rn))}[gn](e){if(Dr(e))this.currentToken.tagName+=Fr(e),this.tempBuff.push(e);else if(xr(e))this.currentToken.tagName+=Ur(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(yr(e))return void(this.state=wn);if(e===Qt.SOLIDUS)return void(this.state=Hn);if(e===Qt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=tn)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(rn)}}[En](e){e===Qt.SOLIDUS?(this.tempBuff=[],this.state=hn):e===Qt.EXCLAMATION_MARK?(this.state=fn,this._emitChars("<!")):(this._emitChars("<"),this._reconsumeInState(an))}[hn](e){Mr(e)?(this._createEndTagToken(),this._reconsumeInState(Sn)):(this._emitChars("</"),this._reconsumeInState(an))}[Sn](e){if(Dr(e))this.currentToken.tagName+=Fr(e),this.tempBuff.push(e);else if(xr(e))this.currentToken.tagName+=Ur(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(yr(e))return void(this.state=wn);if(e===Qt.SOLIDUS)return void(this.state=Hn);if(e===Qt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=tn)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(an)}}[fn](e){e===Qt.HYPHEN_MINUS?(this.state=Tn,this._emitChars("-")):this._reconsumeInState(an)}[Tn](e){e===Qt.HYPHEN_MINUS?(this.state=Nn,this._emitChars("-")):this._reconsumeInState(an)}[bn](e){e===Qt.HYPHEN_MINUS?(this.state=Cn,this._emitChars("-")):e===Qt.LESS_THAN_SIGN?this.state=vn:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[Cn](e){e===Qt.HYPHEN_MINUS?(this.state=Nn,this._emitChars("-")):e===Qt.LESS_THAN_SIGN?this.state=vn:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.state=bn,this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=bn,this._emitCodePoint(e))}[Nn](e){e===Qt.HYPHEN_MINUS?this._emitChars("-"):e===Qt.LESS_THAN_SIGN?this.state=vn:e===Qt.GREATER_THAN_SIGN?(this.state=an,this._emitChars(">")):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.state=bn,this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=bn,this._emitCodePoint(e))}[vn](e){e===Qt.SOLIDUS?(this.tempBuff=[],this.state=Rn):Mr(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(An)):(this._emitChars("<"),this._reconsumeInState(bn))}[Rn](e){Mr(e)?(this._createEndTagToken(),this._reconsumeInState(On)):(this._emitChars("</"),this._reconsumeInState(bn))}[On](e){if(Dr(e))this.currentToken.tagName+=Fr(e),this.tempBuff.push(e);else if(xr(e))this.currentToken.tagName+=Ur(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(yr(e))return void(this.state=wn);if(e===Qt.SOLIDUS)return void(this.state=Hn);if(e===Qt.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=tn)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(bn)}}[An](e){yr(e)||e===Qt.SOLIDUS||e===Qt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?yn:bn,this._emitCodePoint(e)):Dr(e)?(this.tempBuff.push(kr(e)),this._emitCodePoint(e)):xr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(bn)}[yn](e){e===Qt.HYPHEN_MINUS?(this.state=In,this._emitChars("-")):e===Qt.LESS_THAN_SIGN?(this.state=xn,this._emitChars("<")):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[In](e){e===Qt.HYPHEN_MINUS?(this.state=Dn,this._emitChars("-")):e===Qt.LESS_THAN_SIGN?(this.state=xn,this._emitChars("<")):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.state=yn,this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=yn,this._emitCodePoint(e))}[Dn](e){e===Qt.HYPHEN_MINUS?this._emitChars("-"):e===Qt.LESS_THAN_SIGN?(this.state=xn,this._emitChars("<")):e===Qt.GREATER_THAN_SIGN?(this.state=an,this._emitChars(">")):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.state=yn,this._emitChars(Yt.REPLACEMENT_CHARACTER)):e===Qt.EOF?(this._err(Vt.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=yn,this._emitCodePoint(e))}[xn](e){e===Qt.SOLIDUS?(this.tempBuff=[],this.state=Mn,this._emitChars("/")):this._reconsumeInState(yn)}[Mn](e){yr(e)||e===Qt.SOLIDUS||e===Qt.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?bn:yn,this._emitCodePoint(e)):Dr(e)?(this.tempBuff.push(kr(e)),this._emitCodePoint(e)):xr(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(yn)}[wn](e){yr(e)||(e===Qt.SOLIDUS||e===Qt.GREATER_THAN_SIGN||e===Qt.EOF?this._reconsumeInState(Pn):e===Qt.EQUALS_SIGN?(this._err(Vt.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=Ln):(this._createAttr(""),this._reconsumeInState(Ln)))}[Ln](e){yr(e)||e===Qt.SOLIDUS||e===Qt.GREATER_THAN_SIGN||e===Qt.EOF?(this._leaveAttrName(Pn),this._unconsume()):e===Qt.EQUALS_SIGN?this._leaveAttrName(kn):Dr(e)?this.currentAttr.name+=Fr(e):e===Qt.QUOTATION_MARK||e===Qt.APOSTROPHE||e===Qt.LESS_THAN_SIGN?(this._err(Vt.unexpectedCharacterInAttributeName),this.currentAttr.name+=Ur(e)):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentAttr.name+=Yt.REPLACEMENT_CHARACTER):this.currentAttr.name+=Ur(e)}[Pn](e){yr(e)||(e===Qt.SOLIDUS?this.state=Hn:e===Qt.EQUALS_SIGN?this.state=kn:e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(Ln)))}[kn](e){yr(e)||(e===Qt.QUOTATION_MARK?this.state=Un:e===Qt.APOSTROPHE?this.state=Fn:e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingAttributeValue),this.state=tn,this._emitCurrentToken()):this._reconsumeInState(Gn))}[Un](e){e===Qt.QUOTATION_MARK?this.state=Bn:e===Qt.AMPERSAND?(this.returnState=Un,this.state=fr):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentAttr.value+=Yt.REPLACEMENT_CHARACTER):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ur(e)}[Fn](e){e===Qt.APOSTROPHE?this.state=Bn:e===Qt.AMPERSAND?(this.returnState=Fn,this.state=fr):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentAttr.value+=Yt.REPLACEMENT_CHARACTER):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ur(e)}[Gn](e){yr(e)?this._leaveAttrValue(wn):e===Qt.AMPERSAND?(this.returnState=Gn,this.state=fr):e===Qt.GREATER_THAN_SIGN?(this._leaveAttrValue(tn),this._emitCurrentToken()):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentAttr.value+=Yt.REPLACEMENT_CHARACTER):e===Qt.QUOTATION_MARK||e===Qt.APOSTROPHE||e===Qt.LESS_THAN_SIGN||e===Qt.EQUALS_SIGN||e===Qt.GRAVE_ACCENT?(this._err(Vt.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=Ur(e)):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ur(e)}[Bn](e){yr(e)?this._leaveAttrValue(wn):e===Qt.SOLIDUS?this._leaveAttrValue(Hn):e===Qt.GREATER_THAN_SIGN?(this._leaveAttrValue(tn),this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):(this._err(Vt.missingWhitespaceBetweenAttributes),this._reconsumeInState(wn))}[Hn](e){e===Qt.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInTag),this._emitEOFToken()):(this._err(Vt.unexpectedSolidusInTag),this._reconsumeInState(wn))}[Yn](e){e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.data+=Yt.REPLACEMENT_CHARACTER):this.currentToken.data+=Ur(e)}[Vn](e){this._consumeSequenceIfMatch($t.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=zn):this._consumeSequenceIfMatch($t.DOCTYPE_STRING,e,!1)?this.state=er:this._consumeSequenceIfMatch($t.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=Er:(this._err(Vt.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=Yn):this._ensureHibernation()||(this._err(Vt.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(Yn))}[zn](e){e===Qt.HYPHEN_MINUS?this.state=qn:e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptClosingOfEmptyComment),this.state=tn,this._emitCurrentToken()):this._reconsumeInState(Kn)}[qn](e){e===Qt.HYPHEN_MINUS?this.state=Zn:e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptClosingOfEmptyComment),this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Kn))}[Kn](e){e===Qt.HYPHEN_MINUS?this.state=Xn:e===Qt.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=Wn):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.data+=Yt.REPLACEMENT_CHARACTER):e===Qt.EOF?(this._err(Vt.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=Ur(e)}[Wn](e){e===Qt.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=Qn):e===Qt.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(Kn)}[Qn](e){e===Qt.HYPHEN_MINUS?this.state=$n:this._reconsumeInState(Kn)}[$n](e){e===Qt.HYPHEN_MINUS?this.state=jn:this._reconsumeInState(Xn)}[jn](e){e!==Qt.GREATER_THAN_SIGN&&e!==Qt.EOF&&this._err(Vt.nestedComment),this._reconsumeInState(Zn)}[Xn](e){e===Qt.HYPHEN_MINUS?this.state=Zn:e===Qt.EOF?(this._err(Vt.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(Kn))}[Zn](e){e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):e===Qt.EXCLAMATION_MARK?this.state=Jn:e===Qt.HYPHEN_MINUS?this.currentToken.data+="-":e===Qt.EOF?(this._err(Vt.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(Kn))}[Jn](e){e===Qt.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=Xn):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.incorrectlyClosedComment),this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(Kn))}[er](e){yr(e)?this.state=tr:e===Qt.GREATER_THAN_SIGN?this._reconsumeInState(tr):e===Qt.EOF?(this._err(Vt.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingWhitespaceBeforeDoctypeName),this._reconsumeInState(tr))}[tr](e){yr(e)||(Dr(e)?(this._createDoctypeToken(Fr(e)),this.state=nr):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this._createDoctypeToken(Yt.REPLACEMENT_CHARACTER),this.state=nr):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(Ur(e)),this.state=nr))}[nr](e){yr(e)?this.state=rr:e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):Dr(e)?this.currentToken.name+=Fr(e):e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.name+=Yt.REPLACEMENT_CHARACTER):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=Ur(e)}[rr](e){yr(e)||(e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch($t.PUBLIC_STRING,e,!1)?this.state=ar:this._consumeSequenceIfMatch($t.SYSTEM_STRING,e,!1)?this.state=dr:this._ensureHibernation()||(this._err(Vt.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr)))}[ar](e){yr(e)?this.state=ir:e===Qt.QUOTATION_MARK?(this._err(Vt.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=or):e===Qt.APOSTROPHE?(this._err(Vt.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=sr):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr))}[ir](e){yr(e)||(e===Qt.QUOTATION_MARK?(this.currentToken.publicId="",this.state=or):e===Qt.APOSTROPHE?(this.currentToken.publicId="",this.state=sr):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr)))}[or](e){e===Qt.QUOTATION_MARK?this.state=lr:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.publicId+=Yt.REPLACEMENT_CHARACTER):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ur(e)}[sr](e){e===Qt.APOSTROPHE?this.state=lr:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.publicId+=Yt.REPLACEMENT_CHARACTER):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ur(e)}[lr](e){yr(e)?this.state=cr:e===Qt.GREATER_THAN_SIGN?(this.state=tn,this._emitCurrentToken()):e===Qt.QUOTATION_MARK?(this._err(Vt.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=ur):e===Qt.APOSTROPHE?(this._err(Vt.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=mr):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr))}[cr](e){yr(e)||(e===Qt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=tn):e===Qt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=ur):e===Qt.APOSTROPHE?(this.currentToken.systemId="",this.state=mr):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr)))}[dr](e){yr(e)?this.state=_r:e===Qt.QUOTATION_MARK?(this._err(Vt.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=ur):e===Qt.APOSTROPHE?(this._err(Vt.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=mr):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr))}[_r](e){yr(e)||(e===Qt.QUOTATION_MARK?(this.currentToken.systemId="",this.state=ur):e===Qt.APOSTROPHE?(this.currentToken.systemId="",this.state=mr):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=tn,this._emitCurrentToken()):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(gr)))}[ur](e){e===Qt.QUOTATION_MARK?this.state=pr:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.systemId+=Yt.REPLACEMENT_CHARACTER):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ur(e)}[mr](e){e===Qt.APOSTROPHE?this.state=pr:e===Qt.NULL?(this._err(Vt.unexpectedNullCharacter),this.currentToken.systemId+=Yt.REPLACEMENT_CHARACTER):e===Qt.GREATER_THAN_SIGN?(this._err(Vt.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ur(e)}[pr](e){yr(e)||(e===Qt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=tn):e===Qt.EOF?(this._err(Vt.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(Vt.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(gr)))}[gr](e){e===Qt.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=tn):e===Qt.NULL?this._err(Vt.unexpectedNullCharacter):e===Qt.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[Er](e){e===Qt.RIGHT_SQUARE_BRACKET?this.state=hr:e===Qt.EOF?(this._err(Vt.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[hr](e){e===Qt.RIGHT_SQUARE_BRACKET?this.state=Sr:(this._emitChars("]"),this._reconsumeInState(Er))}[Sr](e){e===Qt.GREATER_THAN_SIGN?this.state=tn:e===Qt.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(Er))}[fr](e){this.tempBuff=[Qt.AMPERSAND],e===Qt.NUMBER_SIGN?(this.tempBuff.push(e),this.state=Cr):wr(e)?this._reconsumeInState(Tr):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[Tr](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[Qt.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===Qt.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(Vt.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=br}[br](e){wr(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=Ur(e):this._emitCodePoint(e):(e===Qt.SEMICOLON&&this._err(Vt.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[Cr](e){this.charRefCode=0,e===Qt.LATIN_SMALL_X||e===Qt.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=Nr):this._reconsumeInState(vr)}[Nr](e){!function(e){return Ir(e)||Lr(e)||Pr(e)}(e)?(this._err(Vt.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(Rr)}[vr](e){Ir(e)?this._reconsumeInState(Or):(this._err(Vt.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[Rr](e){Lr(e)?this.charRefCode=16*this.charRefCode+e-55:Pr(e)?this.charRefCode=16*this.charRefCode+e-87:Ir(e)?this.charRefCode=16*this.charRefCode+e-48:e===Qt.SEMICOLON?this.state=Ar:(this._err(Vt.missingSemicolonAfterCharacterReference),this._reconsumeInState(Ar))}[Or](e){Ir(e)?this.charRefCode=10*this.charRefCode+e-48:e===Qt.SEMICOLON?this.state=Ar:(this._err(Vt.missingSemicolonAfterCharacterReference),this._reconsumeInState(Ar))}[Ar](){if(this.charRefCode===Qt.NULL)this._err(Vt.nullCharacterReference),this.charRefCode=Qt.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(Vt.characterReferenceOutsideUnicodeRange),this.charRefCode=Qt.REPLACEMENT_CHARACTER;else if(Yt.isSurrogate(this.charRefCode))this._err(Vt.surrogateCharacterReference),this.charRefCode=Qt.REPLACEMENT_CHARACTER;else if(Yt.isUndefinedCodePoint(this.charRefCode))this._err(Vt.noncharacterCharacterReference);else if(Yt.isControlCodePoint(this.charRefCode)||this.charRefCode===Qt.CARRIAGE_RETURN){this._err(Vt.controlCharacterReference);const e=jt[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Br.CHARACTER_TOKEN="CHARACTER_TOKEN",Br.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Br.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Br.START_TAG_TOKEN="START_TAG_TOKEN",Br.END_TAG_TOKEN="END_TAG_TOKEN",Br.COMMENT_TOKEN="COMMENT_TOKEN",Br.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Br.EOF_TOKEN="EOF_TOKEN",Br.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Br.MODE={DATA:tn,RCDATA:nn,RAWTEXT:rn,SCRIPT_DATA:an,PLAINTEXT:on},Br.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null};var Hr=Br,Yr=v((function(e,t){const n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[n.HTML]:{[r.ADDRESS]:!0,[r.APPLET]:!0,[r.AREA]:!0,[r.ARTICLE]:!0,[r.ASIDE]:!0,[r.BASE]:!0,[r.BASEFONT]:!0,[r.BGSOUND]:!0,[r.BLOCKQUOTE]:!0,[r.BODY]:!0,[r.BR]:!0,[r.BUTTON]:!0,[r.CAPTION]:!0,[r.CENTER]:!0,[r.COL]:!0,[r.COLGROUP]:!0,[r.DD]:!0,[r.DETAILS]:!0,[r.DIR]:!0,[r.DIV]:!0,[r.DL]:!0,[r.DT]:!0,[r.EMBED]:!0,[r.FIELDSET]:!0,[r.FIGCAPTION]:!0,[r.FIGURE]:!0,[r.FOOTER]:!0,[r.FORM]:!0,[r.FRAME]:!0,[r.FRAMESET]:!0,[r.H1]:!0,[r.H2]:!0,[r.H3]:!0,[r.H4]:!0,[r.H5]:!0,[r.H6]:!0,[r.HEAD]:!0,[r.HEADER]:!0,[r.HGROUP]:!0,[r.HR]:!0,[r.HTML]:!0,[r.IFRAME]:!0,[r.IMG]:!0,[r.INPUT]:!0,[r.LI]:!0,[r.LINK]:!0,[r.LISTING]:!0,[r.MAIN]:!0,[r.MARQUEE]:!0,[r.MENU]:!0,[r.META]:!0,[r.NAV]:!0,[r.NOEMBED]:!0,[r.NOFRAMES]:!0,[r.NOSCRIPT]:!0,[r.OBJECT]:!0,[r.OL]:!0,[r.P]:!0,[r.PARAM]:!0,[r.PLAINTEXT]:!0,[r.PRE]:!0,[r.SCRIPT]:!0,[r.SECTION]:!0,[r.SELECT]:!0,[r.SOURCE]:!0,[r.STYLE]:!0,[r.SUMMARY]:!0,[r.TABLE]:!0,[r.TBODY]:!0,[r.TD]:!0,[r.TEMPLATE]:!0,[r.TEXTAREA]:!0,[r.TFOOT]:!0,[r.TH]:!0,[r.THEAD]:!0,[r.TITLE]:!0,[r.TR]:!0,[r.TRACK]:!0,[r.UL]:!0,[r.WBR]:!0,[r.XMP]:!0},[n.MATHML]:{[r.MI]:!0,[r.MO]:!0,[r.MN]:!0,[r.MS]:!0,[r.MTEXT]:!0,[r.ANNOTATION_XML]:!0},[n.SVG]:{[r.TITLE]:!0,[r.FOREIGN_OBJECT]:!0,[r.DESC]:!0}}}));Yr.NAMESPACES,Yr.ATTRS,Yr.DOCUMENT_MODE,Yr.TAG_NAMES,Yr.SPECIAL_ELEMENTS;const Vr=Yr.TAG_NAMES,zr=Yr.NAMESPACES;function qr(e){switch(e.length){case 1:return e===Vr.P;case 2:return e===Vr.RB||e===Vr.RP||e===Vr.RT||e===Vr.DD||e===Vr.DT||e===Vr.LI;case 3:return e===Vr.RTC;case 6:return e===Vr.OPTION;case 8:return e===Vr.OPTGROUP}return!1}function Kr(e){switch(e.length){case 1:return e===Vr.P;case 2:return e===Vr.RB||e===Vr.RP||e===Vr.RT||e===Vr.DD||e===Vr.DT||e===Vr.LI||e===Vr.TD||e===Vr.TH||e===Vr.TR;case 3:return e===Vr.RTC;case 5:return e===Vr.TBODY||e===Vr.TFOOT||e===Vr.THEAD;case 6:return e===Vr.OPTION;case 7:return e===Vr.CAPTION;case 8:return e===Vr.OPTGROUP||e===Vr.COLGROUP}return!1}function Wr(e,t){switch(e.length){case 2:if(e===Vr.TD||e===Vr.TH)return t===zr.HTML;if(e===Vr.MI||e===Vr.MO||e===Vr.MN||e===Vr.MS)return t===zr.MATHML;break;case 4:if(e===Vr.HTML)return t===zr.HTML;if(e===Vr.DESC)return t===zr.SVG;break;case 5:if(e===Vr.TABLE)return t===zr.HTML;if(e===Vr.MTEXT)return t===zr.MATHML;if(e===Vr.TITLE)return t===zr.SVG;break;case 6:return(e===Vr.APPLET||e===Vr.OBJECT)&&t===zr.HTML;case 7:return(e===Vr.CAPTION||e===Vr.MARQUEE)&&t===zr.HTML;case 8:return e===Vr.TEMPLATE&&t===zr.HTML;case 13:return e===Vr.FOREIGN_OBJECT&&t===zr.SVG;case 14:return e===Vr.ANNOTATION_XML&&t===zr.MATHML}return!1}var Qr=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===Vr.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===zr.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){const n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){const t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===zr.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){const t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Vr.H1||e===Vr.H2||e===Vr.H3||e===Vr.H4||e===Vr.H5||e===Vr.H6&&t===zr.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===Vr.TD||e===Vr.TH&&t===zr.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==Vr.TABLE&&this.currentTagName!==Vr.TEMPLATE&&this.currentTagName!==Vr.HTML||this.treeAdapter.getNamespaceURI(this.current)!==zr.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==Vr.TBODY&&this.currentTagName!==Vr.TFOOT&&this.currentTagName!==Vr.THEAD&&this.currentTagName!==Vr.TEMPLATE&&this.currentTagName!==Vr.HTML||this.treeAdapter.getNamespaceURI(this.current)!==zr.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==Vr.TR&&this.currentTagName!==Vr.TEMPLATE&&this.currentTagName!==Vr.HTML||this.treeAdapter.getNamespaceURI(this.current)!==zr.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){const e=this.items[1];return e&&this.treeAdapter.getTagName(e)===Vr.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===Vr.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===zr.HTML)return!0;if(Wr(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===Vr.H1||t===Vr.H2||t===Vr.H3||t===Vr.H4||t===Vr.H5||t===Vr.H6)&&n===zr.HTML)return!0;if(Wr(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===zr.HTML)return!0;if((n===Vr.UL||n===Vr.OL)&&r===zr.HTML||Wr(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===zr.HTML)return!0;if(n===Vr.BUTTON&&r===zr.HTML||Wr(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===zr.HTML){if(n===e)return!0;if(n===Vr.TABLE||n===Vr.TEMPLATE||n===Vr.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===zr.HTML){if(t===Vr.TBODY||t===Vr.THEAD||t===Vr.TFOOT)return!0;if(t===Vr.TABLE||t===Vr.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===zr.HTML){if(n===e)return!0;if(n!==Vr.OPTION&&n!==Vr.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;qr(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;Kr(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;qr(this.currentTagName)&&this.currentTagName!==e;)this.pop()}};const $r=3;class jr{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){const t=[];if(this.length>=$r){const n=this.treeAdapter.getAttrList(e).length,r=this.treeAdapter.getTagName(e),a=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){const i=this.entries[e];if(i.type===jr.MARKER_ENTRY)break;const o=i.element,s=this.treeAdapter.getAttrList(o);this.treeAdapter.getTagName(o)===r&&this.treeAdapter.getNamespaceURI(o)===a&&s.length===n&&t.push({idx:e,attrs:s})}}return t.length<$r?[]:t}_ensureNoahArkCondition(e){const t=this._getNoahArkConditionCandidates(e);let n=t.length;if(n){const r=this.treeAdapter.getAttrList(e),a=r.length,i=Object.create(null);for(let e=0;e<a;e++){const t=r[e];i[t.name]=t.value}for(let e=0;e<a;e++)for(let r=0;r<n;r++){const a=t[r].attrs[e];if(i[a.name]!==a.value&&(t.splice(r,1),n--),t.length<$r)return}for(let e=n-1;e>=$r-1;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:jr.MARKER_ENTRY}),this.length++}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.push({type:jr.ELEMENT_ENTRY,element:e,token:t}),this.length++}insertElementAfterBookmark(e,t){let n=this.length-1;for(;n>=0&&this.entries[n]!==this.bookmark;n--);this.entries.splice(n+1,0,{type:jr.ELEMENT_ENTRY,element:e,token:t}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){const e=this.entries.pop();if(this.length--,e.type===jr.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===jr.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(n.element)===e)return n}return null}getElementEntry(e){for(let t=this.length-1;t>=0;t--){const n=this.entries[t];if(n.type===jr.ELEMENT_ENTRY&&n.element===e)return n}return null}}jr.MARKER_ENTRY="MARKER_ENTRY",jr.ELEMENT_ENTRY="ELEMENT_ENTRY";var Xr=jr;class Zr{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}Zr.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n<e.__mixins.length;n++)if(e.__mixins[n].constructor===t)return e.__mixins[n];const r=new t(e,n);return e.__mixins.push(r),r};var Jr=Zr;var ea=class extends Jr{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}};var ta=class extends Jr{constructor(e){super(e),this.tokenizer=e,this.posTracker=Jr.install(e.preprocessor,ea),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===Hr.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(Hr.MODE).forEach(r=>{const a=Hr.MODE[r];n[a]=function(n){e.ctLoc=e._getCurrentLocation(),t[a].call(this,n)}}),n}};var na=class extends Jr{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}};const ra=Yr.TAG_NAMES;var aa=class extends Jr{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&((t=Object.assign({},this.lastStartTagToken.location)).startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){const n=this.treeAdapter.getNodeSourceCodeLocation(e);if(n&&t.location){const r=t.location,a=this.treeAdapter.getTagName(e);t.type===Hr.END_TAG_TOKEN&&a===t.tagName?(n.endTag=Object.assign({},r),n.endLine=r.endLine,n.endCol=r.endCol,n.endOffset=r.endOffset):(n.endLine=r.startLine,n.endCol=r.startCol,n.endOffset=r.startOffset)}}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;const a=Jr.install(this.tokenizer,ta);e.posTracker=a.posTracker,Jr.install(this.openElements,na,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){if(e.currentToken=n,t._processToken.call(this,n),n.type===Hr.END_TAG_TOKEN&&(n.tagName===ra.HTML||n.tagName===ra.BODY&&this.openElements.hasInScope(ra.BODY)))for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);const n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t<r;t++){const r=n[t];if(this.treeAdapter.isDocumentTypeNode(r)){this.treeAdapter.setNodeSourceCodeLocation(r,e.location);break}}},_attachElementToTree(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n);const r=this.treeAdapter.getTemplateContent(this.openElements.current);this.treeAdapter.setNodeSourceCodeLocation(r,null)},_insertFakeRootElement(){t._insertFakeRootElement.call(this),this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current,null)},_appendCommentNode(e,n){t._appendCommentNode.call(this,e,n);const r=this.treeAdapter.getChildNodes(n),a=r[r.length-1];this.treeAdapter.setNodeSourceCodeLocation(a,e.location)},_findFosterParentingLocation(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters(n){t._insertCharacters.call(this,n);const r=this._shouldFosterParentOnInsertion(),a=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,i=this.treeAdapter.getChildNodes(a),o=r&&e.lastFosterParentingLocation.beforeElement?i.indexOf(e.lastFosterParentingLocation.beforeElement)-1:i.length-1,s=i[o],l=this.treeAdapter.getNodeSourceCodeLocation(s);l?(l.endLine=n.location.endLine,l.endCol=n.location.endCol,l.endOffset=n.location.endOffset):this.treeAdapter.setNodeSourceCodeLocation(s,n.location)}}}};var ia=class extends Jr{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){const t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}};var oa=class extends ia{constructor(e,t){super(e,t),this.posTracker=Jr.install(e,ea),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}};var sa=class extends ia{constructor(e,t){super(e,t);const n=Jr.install(e.preprocessor,oa,t);this.posTracker=n.posTracker}};var la=class extends ia{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),Jr.install(this.tokenizer,sa,e.opts),Jr.install(this.tokenizer,ta)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}},ca=v((function(e,t){const{DOCUMENT_MODE:n}=Yr;t.createDocument=function(){return{nodeName:"#document",mode:n.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const r=function(e){return{nodeName:"#text",value:e,parentNode:null}},a=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},i=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t<e.childNodes.length;t++)if("#documentType"===e.childNodes[t].nodeName){i=e.childNodes[t];break}i?(i.name=t,i.publicId=n,i.systemId=r):a(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){const n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}a(e,r(t))},t.insertTextBefore=function(e,t,n){const a=e.childNodes[e.childNodes.indexOf(n)-1];a&&"#text"===a.nodeName?a.value+=t:i(e,r(t),n)},t.adoptAttributes=function(e,t){const n=[];for(let t=0;t<e.attrs.length;t++)n.push(e.attrs[t].name);for(let r=0;r<t.length;r++)-1===n.indexOf(t[r].name)&&e.attrs.push(t[r])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation}})),da=(ca.createDocument,ca.createDocumentFragment,ca.createElement,ca.createCommentNode,ca.appendChild,ca.insertBefore,ca.setTemplateContent,ca.getTemplateContent,ca.setDocumentType,ca.setDocumentMode,ca.getDocumentMode,ca.detachNode,ca.insertText,ca.insertTextBefore,ca.adoptAttributes,ca.getFirstChild,ca.getChildNodes,ca.getParentNode,ca.getAttrList,ca.getTagName,ca.getNamespaceURI,ca.getTextNodeContent,ca.getCommentNodeContent,ca.getDocumentTypeNodeName,ca.getDocumentTypeNodePublicId,ca.getDocumentTypeNodeSystemId,ca.isTextNode,ca.isCommentNode,ca.isDocumentTypeNode,ca.isElementNode,ca.setNodeSourceCodeLocation,ca.getNodeSourceCodeLocation,function(e,t){return[e,t=t||Object.create(null)].reduce((e,t)=>(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))});const{DOCUMENT_MODE:_a}=Yr,ua=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],ma=ua.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),pa=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],ga=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],Ea=ga.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function ha(e){const t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function Sa(e,t){for(let n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}var fa={isConforming:function(e){return"html"===e.name&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)},getDocumentMode:function(e){if("html"!==e.name)return _a.QUIRKS;const t=e.systemId;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return _a.QUIRKS;let n=e.publicId;if(null!==n){if(n=n.toLowerCase(),pa.indexOf(n)>-1)return _a.QUIRKS;let e=null===t?ma:ua;if(Sa(n,e))return _a.QUIRKS;if(Sa(n,e=null===t?ga:Ea))return _a.LIMITED_QUIRKS}return _a.NO_QUIRKS},serializeContent:function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+ha(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+ha(n)),r}},Ta=v((function(e,t){const n=Yr.TAG_NAMES,r=Yr.NAMESPACES,a=Yr.ATTRS,i={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},o={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},s={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:r.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:r.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:r.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:r.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:r.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:r.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:r.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:r.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:r.XML},"xml:space":{prefix:"xml",name:"space",namespace:r.XML},xmlns:{prefix:"",name:"xmlns",namespace:r.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:r.XMLNS}},l=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},c={[n.B]:!0,[n.BIG]:!0,[n.BLOCKQUOTE]:!0,[n.BODY]:!0,[n.BR]:!0,[n.CENTER]:!0,[n.CODE]:!0,[n.DD]:!0,[n.DIV]:!0,[n.DL]:!0,[n.DT]:!0,[n.EM]:!0,[n.EMBED]:!0,[n.H1]:!0,[n.H2]:!0,[n.H3]:!0,[n.H4]:!0,[n.H5]:!0,[n.H6]:!0,[n.HEAD]:!0,[n.HR]:!0,[n.I]:!0,[n.IMG]:!0,[n.LI]:!0,[n.LISTING]:!0,[n.MENU]:!0,[n.META]:!0,[n.NOBR]:!0,[n.OL]:!0,[n.P]:!0,[n.PRE]:!0,[n.RUBY]:!0,[n.S]:!0,[n.SMALL]:!0,[n.SPAN]:!0,[n.STRONG]:!0,[n.STRIKE]:!0,[n.SUB]:!0,[n.SUP]:!0,[n.TABLE]:!0,[n.TT]:!0,[n.U]:!0,[n.UL]:!0,[n.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!!(t===n.FONT&&(null!==Hr.getTokenAttr(e,a.COLOR)||null!==Hr.getTokenAttr(e,a.SIZE)||null!==Hr.getTokenAttr(e,a.FACE)))||c[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=o[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=s[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){const t=l[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,o,s){return!(s&&s!==r.HTML||!function(e,t,o){if(t===r.MATHML&&e===n.ANNOTATION_XML)for(let e=0;e<o.length;e++)if(o[e].name===a.ENCODING){const t=o[e].value.toLowerCase();return t===i.TEXT_HTML||t===i.APPLICATION_XML}return t===r.SVG&&(e===n.FOREIGN_OBJECT||e===n.DESC||e===n.TITLE)}(e,t,o))||!(s&&s!==r.MATHML||!function(e,t){return t===r.MATHML&&(e===n.MI||e===n.MO||e===n.MN||e===n.MS||e===n.MTEXT)}(e,t))}}));Ta.SVG_TAG_NAMES_ADJUSTMENT_MAP,Ta.causesExit,Ta.adjustTokenMathMLAttrs,Ta.adjustTokenSVGAttrs,Ta.adjustTokenXMLAttrs,Ta.adjustTokenSVGTagName,Ta.isIntegrationPoint;const ba=Yr.TAG_NAMES,Ca=Yr.NAMESPACES,Na=Yr.ATTRS,va={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:ca},Ra="hidden",Oa=8,Aa=3,ya="INITIAL_MODE",Ia="BEFORE_HTML_MODE",Da="BEFORE_HEAD_MODE",xa="IN_HEAD_MODE",Ma="IN_HEAD_NO_SCRIPT_MODE",wa="AFTER_HEAD_MODE",La="IN_BODY_MODE",Pa="TEXT_MODE",ka="IN_TABLE_MODE",Ua="IN_TABLE_TEXT_MODE",Fa="IN_CAPTION_MODE",Ga="IN_COLUMN_GROUP_MODE",Ba="IN_TABLE_BODY_MODE",Ha="IN_ROW_MODE",Ya="IN_CELL_MODE",Va="IN_SELECT_MODE",za="IN_SELECT_IN_TABLE_MODE",qa="IN_TEMPLATE_MODE",Ka="AFTER_BODY_MODE",Wa="IN_FRAMESET_MODE",Qa="AFTER_FRAMESET_MODE",$a="AFTER_AFTER_BODY_MODE",ja="AFTER_AFTER_FRAMESET_MODE",Xa={[ba.TR]:Ha,[ba.TBODY]:Ba,[ba.THEAD]:Ba,[ba.TFOOT]:Ba,[ba.CAPTION]:Fa,[ba.COLGROUP]:Ga,[ba.TABLE]:ka,[ba.BODY]:La,[ba.FRAMESET]:Wa},Za={[ba.CAPTION]:ka,[ba.COLGROUP]:ka,[ba.TBODY]:ka,[ba.TFOOT]:ka,[ba.THEAD]:ka,[ba.COL]:Ga,[ba.TR]:Ba,[ba.TD]:Ha,[ba.TH]:Ha},Ja={[ya]:{[Hr.CHARACTER_TOKEN]:pi,[Hr.NULL_CHARACTER_TOKEN]:pi,[Hr.WHITESPACE_CHARACTER_TOKEN]:li,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);const n=t.forceQuirks?Yr.DOCUMENT_MODE.QUIRKS:fa.getDocumentMode(t);fa.isConforming(t)||e._err(Vt.nonConformingDoctype);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=Ia},[Hr.START_TAG_TOKEN]:pi,[Hr.END_TAG_TOKEN]:pi,[Hr.EOF_TOKEN]:pi},[Ia]:{[Hr.CHARACTER_TOKEN]:gi,[Hr.NULL_CHARACTER_TOKEN]:gi,[Hr.WHITESPACE_CHARACTER_TOKEN]:li,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){t.tagName===ba.HTML?(e._insertElement(t,Ca.HTML),e.insertionMode=Da):gi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n!==ba.HTML&&n!==ba.HEAD&&n!==ba.BODY&&n!==ba.BR||gi(e,t)},[Hr.EOF_TOKEN]:gi},[Da]:{[Hr.CHARACTER_TOKEN]:Ei,[Hr.NULL_CHARACTER_TOKEN]:Ei,[Hr.WHITESPACE_CHARACTER_TOKEN]:li,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:ci,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.HEAD?(e._insertElement(t,Ca.HTML),e.headElement=e.openElements.current,e.insertionMode=xa):Ei(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HEAD||n===ba.BODY||n===ba.HTML||n===ba.BR?Ei(e,t):e._err(Vt.endTagWithoutMatchingOpenElement)},[Hr.EOF_TOKEN]:Ei},[xa]:{[Hr.CHARACTER_TOKEN]:fi,[Hr.NULL_CHARACTER_TOKEN]:fi,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:ci,[Hr.START_TAG_TOKEN]:hi,[Hr.END_TAG_TOKEN]:Si,[Hr.EOF_TOKEN]:fi},[Ma]:{[Hr.CHARACTER_TOKEN]:Ti,[Hr.NULL_CHARACTER_TOKEN]:Ti,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:ci,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.BASEFONT||n===ba.BGSOUND||n===ba.HEAD||n===ba.LINK||n===ba.META||n===ba.NOFRAMES||n===ba.STYLE?hi(e,t):n===ba.NOSCRIPT?e._err(Vt.nestedNoscriptInHead):Ti(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.NOSCRIPT?(e.openElements.pop(),e.insertionMode=xa):n===ba.BR?Ti(e,t):e._err(Vt.endTagWithoutMatchingOpenElement)},[Hr.EOF_TOKEN]:Ti},[wa]:{[Hr.CHARACTER_TOKEN]:bi,[Hr.NULL_CHARACTER_TOKEN]:bi,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:ci,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.BODY?(e._insertElement(t,Ca.HTML),e.framesetOk=!1,e.insertionMode=La):n===ba.FRAMESET?(e._insertElement(t,Ca.HTML),e.insertionMode=Wa):n===ba.BASE||n===ba.BASEFONT||n===ba.BGSOUND||n===ba.LINK||n===ba.META||n===ba.NOFRAMES||n===ba.SCRIPT||n===ba.STYLE||n===ba.TEMPLATE||n===ba.TITLE?(e._err(Vt.abandonedHeadElementChild),e.openElements.push(e.headElement),hi(e,t),e.openElements.remove(e.headElement)):n===ba.HEAD?e._err(Vt.misplacedStartTagForHeadElement):bi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.BODY||n===ba.HTML||n===ba.BR?bi(e,t):n===ba.TEMPLATE?Si(e,t):e._err(Vt.endTagWithoutMatchingOpenElement)},[Hr.EOF_TOKEN]:bi},[La]:{[Hr.CHARACTER_TOKEN]:Ni,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:Li,[Hr.END_TAG_TOKEN]:Fi,[Hr.EOF_TOKEN]:Gi},[Pa]:{[Hr.CHARACTER_TOKEN]:ui,[Hr.NULL_CHARACTER_TOKEN]:ui,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:li,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:li,[Hr.END_TAG_TOKEN]:function(e,t){t.tagName===ba.SCRIPT&&(e.pendingScript=e.openElements.current);e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[Hr.EOF_TOKEN]:function(e,t){e._err(Vt.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[ka]:{[Hr.CHARACTER_TOKEN]:Bi,[Hr.NULL_CHARACTER_TOKEN]:Bi,[Hr.WHITESPACE_CHARACTER_TOKEN]:Bi,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:Hi,[Hr.END_TAG_TOKEN]:Yi,[Hr.EOF_TOKEN]:Gi},[Ua]:{[Hr.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[Hr.COMMENT_TOKEN]:zi,[Hr.DOCTYPE_TOKEN]:zi,[Hr.START_TAG_TOKEN]:zi,[Hr.END_TAG_TOKEN]:zi,[Hr.EOF_TOKEN]:zi},[Fa]:{[Hr.CHARACTER_TOKEN]:Ni,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.CAPTION||n===ba.COL||n===ba.COLGROUP||n===ba.TBODY||n===ba.TD||n===ba.TFOOT||n===ba.TH||n===ba.THEAD||n===ba.TR?e.openElements.hasInTableScope(ba.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ba.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=ka,e._processToken(t)):Li(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.CAPTION||n===ba.TABLE?e.openElements.hasInTableScope(ba.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ba.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=ka,n===ba.TABLE&&e._processToken(t)):n!==ba.BODY&&n!==ba.COL&&n!==ba.COLGROUP&&n!==ba.HTML&&n!==ba.TBODY&&n!==ba.TD&&n!==ba.TFOOT&&n!==ba.TH&&n!==ba.THEAD&&n!==ba.TR&&Fi(e,t)},[Hr.EOF_TOKEN]:Gi},[Ga]:{[Hr.CHARACTER_TOKEN]:qi,[Hr.NULL_CHARACTER_TOKEN]:qi,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.COL?(e._appendElement(t,Ca.HTML),t.ackSelfClosing=!0):n===ba.TEMPLATE?hi(e,t):qi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.COLGROUP?e.openElements.currentTagName===ba.COLGROUP&&(e.openElements.pop(),e.insertionMode=ka):n===ba.TEMPLATE?Si(e,t):n!==ba.COL&&qi(e,t)},[Hr.EOF_TOKEN]:Gi},[Ba]:{[Hr.CHARACTER_TOKEN]:Bi,[Hr.NULL_CHARACTER_TOKEN]:Bi,[Hr.WHITESPACE_CHARACTER_TOKEN]:Bi,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Ca.HTML),e.insertionMode=Ha):n===ba.TH||n===ba.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(ba.TR),e.insertionMode=Ha,e._processToken(t)):n===ba.CAPTION||n===ba.COL||n===ba.COLGROUP||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=ka,e._processToken(t)):Hi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=ka):n===ba.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=ka,e._processToken(t)):(n!==ba.BODY&&n!==ba.CAPTION&&n!==ba.COL&&n!==ba.COLGROUP||n!==ba.HTML&&n!==ba.TD&&n!==ba.TH&&n!==ba.TR)&&Yi(e,t)},[Hr.EOF_TOKEN]:Gi},[Ha]:{[Hr.CHARACTER_TOKEN]:Bi,[Hr.NULL_CHARACTER_TOKEN]:Bi,[Hr.WHITESPACE_CHARACTER_TOKEN]:Bi,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.TH||n===ba.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,Ca.HTML),e.insertionMode=Ya,e.activeFormattingElements.insertMarker()):n===ba.CAPTION||n===ba.COL||n===ba.COLGROUP||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD||n===ba.TR?e.openElements.hasInTableScope(ba.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=Ba,e._processToken(t)):Hi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.TR?e.openElements.hasInTableScope(ba.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=Ba):n===ba.TABLE?e.openElements.hasInTableScope(ba.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=Ba,e._processToken(t)):n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(ba.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=Ba,e._processToken(t)):(n!==ba.BODY&&n!==ba.CAPTION&&n!==ba.COL&&n!==ba.COLGROUP||n!==ba.HTML&&n!==ba.TD&&n!==ba.TH)&&Yi(e,t)},[Hr.EOF_TOKEN]:Gi},[Ya]:{[Hr.CHARACTER_TOKEN]:Ni,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.CAPTION||n===ba.COL||n===ba.COLGROUP||n===ba.TBODY||n===ba.TD||n===ba.TFOOT||n===ba.TH||n===ba.THEAD||n===ba.TR?(e.openElements.hasInTableScope(ba.TD)||e.openElements.hasInTableScope(ba.TH))&&(e._closeTableCell(),e._processToken(t)):Li(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.TD||n===ba.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Ha):n===ba.TABLE||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD||n===ba.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==ba.BODY&&n!==ba.CAPTION&&n!==ba.COL&&n!==ba.COLGROUP&&n!==ba.HTML&&Fi(e,t)},[Hr.EOF_TOKEN]:Gi},[Va]:{[Hr.CHARACTER_TOKEN]:ui,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:Ki,[Hr.END_TAG_TOKEN]:Wi,[Hr.EOF_TOKEN]:Gi},[za]:{[Hr.CHARACTER_TOKEN]:ui,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.CAPTION||n===ba.TABLE||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD||n===ba.TR||n===ba.TD||n===ba.TH?(e.openElements.popUntilTagNamePopped(ba.SELECT),e._resetInsertionMode(),e._processToken(t)):Ki(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.CAPTION||n===ba.TABLE||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD||n===ba.TR||n===ba.TD||n===ba.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(ba.SELECT),e._resetInsertionMode(),e._processToken(t)):Wi(e,t)},[Hr.EOF_TOKEN]:Gi},[qa]:{[Hr.CHARACTER_TOKEN]:Ni,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;if(n===ba.BASE||n===ba.BASEFONT||n===ba.BGSOUND||n===ba.LINK||n===ba.META||n===ba.NOFRAMES||n===ba.SCRIPT||n===ba.STYLE||n===ba.TEMPLATE||n===ba.TITLE)hi(e,t);else{const r=Za[n]||La;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[Hr.END_TAG_TOKEN]:function(e,t){t.tagName===ba.TEMPLATE&&Si(e,t)},[Hr.EOF_TOKEN]:Qi},[Ka]:{[Hr.CHARACTER_TOKEN]:$i,[Hr.NULL_CHARACTER_TOKEN]:$i,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){t.tagName===ba.HTML?Li(e,t):$i(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){t.tagName===ba.HTML?e.fragmentContext||(e.insertionMode=$a):$i(e,t)},[Hr.EOF_TOKEN]:mi},[Wa]:{[Hr.CHARACTER_TOKEN]:li,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.FRAMESET?e._insertElement(t,Ca.HTML):n===ba.FRAME?(e._appendElement(t,Ca.HTML),t.ackSelfClosing=!0):n===ba.NOFRAMES&&hi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){t.tagName!==ba.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===ba.FRAMESET||(e.insertionMode=Qa))},[Hr.EOF_TOKEN]:mi},[Qa]:{[Hr.CHARACTER_TOKEN]:li,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:ui,[Hr.COMMENT_TOKEN]:di,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.NOFRAMES&&hi(e,t)},[Hr.END_TAG_TOKEN]:function(e,t){t.tagName===ba.HTML&&(e.insertionMode=ja)},[Hr.EOF_TOKEN]:mi},[$a]:{[Hr.CHARACTER_TOKEN]:ji,[Hr.NULL_CHARACTER_TOKEN]:ji,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:_i,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){t.tagName===ba.HTML?Li(e,t):ji(e,t)},[Hr.END_TAG_TOKEN]:ji,[Hr.EOF_TOKEN]:mi},[ja]:{[Hr.CHARACTER_TOKEN]:li,[Hr.NULL_CHARACTER_TOKEN]:li,[Hr.WHITESPACE_CHARACTER_TOKEN]:Ci,[Hr.COMMENT_TOKEN]:_i,[Hr.DOCTYPE_TOKEN]:li,[Hr.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.NOFRAMES&&hi(e,t)},[Hr.END_TAG_TOKEN]:li,[Hr.EOF_TOKEN]:mi}};var ei=class{constructor(e){this.options=da(va,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&Jr.install(this,aa),this.options.onParseError&&Jr.install(this,la,{onParseError:this.options.onParseError})}parse(e){const t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(ba.TEMPLATE,Ca.HTML,[]));const n=this.treeAdapter.createElement("documentmock",Ca.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===ba.TEMPLATE&&this._pushTmplInsertionMode(qa),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);const r=this.treeAdapter.getFirstChild(n),a=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,a),a}_bootstrap(e,t){this.tokenizer=new Hr(this.options),this.stopped=!1,this.insertionMode=ya,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new Qr(this.document,this.treeAdapter),this.activeFormattingElements=new Xr(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(t.type===Hr.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===Hr.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){const e=this.pendingScript;return this.pendingScript=null,void t(e)}e&&e()}_setupTokenizerCDATAMode(){const e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==Ca.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,Ca.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=Pa}switchToPlaintextParsing(){this.insertionMode=Pa,this.originalInsertionMode=La,this.tokenizer.state=Hr.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===ba.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===Ca.HTML){const e=this.treeAdapter.getTagName(this.fragmentContext);e===ba.TITLE||e===ba.TEXTAREA?this.tokenizer.state=Hr.MODE.RCDATA:e===ba.STYLE||e===ba.XMP||e===ba.IFRAME||e===ba.NOEMBED||e===ba.NOFRAMES||e===ba.NOSCRIPT?this.tokenizer.state=Hr.MODE.RAWTEXT:e===ba.SCRIPT?this.tokenizer.state=Hr.MODE.SCRIPT_DATA:e===ba.PLAINTEXT&&(this.tokenizer.state=Hr.MODE.PLAINTEXT)}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){const t=this.treeAdapter.createElement(e,Ca.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,Ca.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(ba.HTML,Ca.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){const t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;const n=this.treeAdapter.getNamespaceURI(t);if(n===Ca.HTML)return!1;if(this.treeAdapter.getTagName(t)===ba.ANNOTATION_XML&&n===Ca.MATHML&&e.type===Hr.START_TAG_TOKEN&&e.tagName===ba.SVG)return!1;const r=e.type===Hr.CHARACTER_TOKEN||e.type===Hr.NULL_CHARACTER_TOKEN||e.type===Hr.WHITESPACE_CHARACTER_TOKEN;return(!(e.type===Hr.START_TAG_TOKEN&&e.tagName!==ba.MGLYPH&&e.tagName!==ba.MALIGNMARK)&&!r||!this._isIntegrationPoint(t,Ca.MATHML))&&((e.type!==Hr.START_TAG_TOKEN&&!r||!this._isIntegrationPoint(t,Ca.HTML))&&e.type!==Hr.EOF_TOKEN)}_processToken(e){Ja[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){Ja[La][e.type](this,e)}_processTokenInForeignContent(e){e.type===Hr.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===Hr.NULL_CHARACTER_TOKEN?function(e,t){t.chars=Yt.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===Hr.WHITESPACE_CHARACTER_TOKEN?ui(this,e):e.type===Hr.COMMENT_TOKEN?di(this,e):e.type===Hr.START_TAG_TOKEN?function(e,t){if(Ta.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Ca.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===Ca.MATHML?Ta.adjustTokenMathMLAttrs(t):r===Ca.SVG&&(Ta.adjustTokenSVGTagName(t),Ta.adjustTokenSVGAttrs(t)),Ta.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===Hr.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===Ca.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===Hr.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(Vt.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){const n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),a=this.treeAdapter.getAttrList(e);return Ta.isIntegrationPoint(n,r,a,t)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.length;if(e){let t=e,n=null;do{if(t--,(n=this.activeFormattingElements.entries[t]).type===Xr.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(let r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=Ha}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(ba.P),this.openElements.popUntilTagNamePopped(ba.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop,t=!1;e>=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));const r=this.treeAdapter.getTagName(n),a=Xa[r];if(a){this.insertionMode=a;break}if(!(t||r!==ba.TD&&r!==ba.TH)){this.insertionMode=Ya;break}if(!t&&r===ba.HEAD){this.insertionMode=xa;break}if(r===ba.SELECT){this._resetInsertionModeForSelect(e);break}if(r===ba.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===ba.HTML){this.insertionMode=this.headElement?wa:Da;break}if(t){this.insertionMode=La;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===ba.TEMPLATE)break;if(n===ba.TABLE)return void(this.insertionMode=za)}this.insertionMode=Va}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){const t=this.treeAdapter.getTagName(e);return t===ba.TABLE||t===ba.TBODY||t===ba.TFOOT||t===ba.THEAD||t===ba.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){const e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),a=this.treeAdapter.getNamespaceURI(n);if(r===ba.TEMPLATE&&a===Ca.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===ba.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return Yr.SPECIAL_ELEMENTS[n][t]}};function ti(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Ui(e,t),n}function ni(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){const a=e.openElements.items[r];if(a===t.element)break;e._isSpecialElement(a)&&(n=a)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function ri(e,t,n){let r=t,a=e.openElements.getCommonAncestor(t);for(let i=0,o=a;o!==n;i++,o=a){a=e.openElements.getCommonAncestor(o);const n=e.activeFormattingElements.getElementEntry(o),s=n&&i>=Aa;!n||s?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=ai(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function ai(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function ii(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{const r=e.treeAdapter.getTagName(t),a=e.treeAdapter.getNamespaceURI(t);r===ba.TEMPLATE&&a===Ca.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function oi(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),a=n.token,i=e.treeAdapter.createElement(a.tagName,r,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i)}function si(e,t){let n;for(let r=0;r<Oa&&(n=ti(e,t));r++){const t=ni(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;const r=ri(e,t,n.element),a=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),ii(e,a,r),oi(e,t,n)}}function li(){}function ci(e){e._err(Vt.misplacedDoctype)}function di(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function _i(e,t){e._appendCommentNode(t,e.document)}function ui(e,t){e._insertCharacters(t)}function mi(e){e.stopped=!0}function pi(e,t){e._err(Vt.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,Yr.DOCUMENT_MODE.QUIRKS),e.insertionMode=Ia,e._processToken(t)}function gi(e,t){e._insertFakeRootElement(),e.insertionMode=Da,e._processToken(t)}function Ei(e,t){e._insertFakeElement(ba.HEAD),e.headElement=e.openElements.current,e.insertionMode=xa,e._processToken(t)}function hi(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.BASE||n===ba.BASEFONT||n===ba.BGSOUND||n===ba.LINK||n===ba.META?(e._appendElement(t,Ca.HTML),t.ackSelfClosing=!0):n===ba.TITLE?e._switchToTextParsing(t,Hr.MODE.RCDATA):n===ba.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,Hr.MODE.RAWTEXT):(e._insertElement(t,Ca.HTML),e.insertionMode=Ma):n===ba.NOFRAMES||n===ba.STYLE?e._switchToTextParsing(t,Hr.MODE.RAWTEXT):n===ba.SCRIPT?e._switchToTextParsing(t,Hr.MODE.SCRIPT_DATA):n===ba.TEMPLATE?(e._insertTemplate(t,Ca.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=qa,e._pushTmplInsertionMode(qa)):n===ba.HEAD?e._err(Vt.misplacedStartTagForHeadElement):fi(e,t)}function Si(e,t){const n=t.tagName;n===ba.HEAD?(e.openElements.pop(),e.insertionMode=wa):n===ba.BODY||n===ba.BR||n===ba.HTML?fi(e,t):n===ba.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==ba.TEMPLATE&&e._err(Vt.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(ba.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(Vt.endTagWithoutMatchingOpenElement)}function fi(e,t){e.openElements.pop(),e.insertionMode=wa,e._processToken(t)}function Ti(e,t){const n=t.type===Hr.EOF_TOKEN?Vt.openElementsLeftAfterEof:Vt.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=xa,e._processToken(t)}function bi(e,t){e._insertFakeElement(ba.BODY),e.insertionMode=La,e._processToken(t)}function Ci(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Ni(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function vi(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML)}function Ri(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function Oi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function Ai(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function yi(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ca.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Ii(e,t){e._appendElement(t,Ca.HTML),t.ackSelfClosing=!0}function Di(e,t){e._switchToTextParsing(t,Hr.MODE.RAWTEXT)}function xi(e,t){e.openElements.currentTagName===ba.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML)}function Mi(e,t){e.openElements.hasInScope(ba.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Ca.HTML)}function wi(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML)}function Li(e,t){const n=t.tagName;switch(n.length){case 1:n===ba.I||n===ba.S||n===ba.B||n===ba.U?Oi(e,t):n===ba.P?vi(e,t):n===ba.A?function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(ba.A);n&&(si(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):wi(e,t);break;case 2:n===ba.DL||n===ba.OL||n===ba.UL?vi(e,t):n===ba.H1||n===ba.H2||n===ba.H3||n===ba.H4||n===ba.H5||n===ba.H6?function(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement();const n=e.openElements.currentTagName;n!==ba.H1&&n!==ba.H2&&n!==ba.H3&&n!==ba.H4&&n!==ba.H5&&n!==ba.H6||e.openElements.pop(),e._insertElement(t,Ca.HTML)}(e,t):n===ba.LI||n===ba.DD||n===ba.DT?function(e,t){e.framesetOk=!1;const n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.items[t],a=e.treeAdapter.getTagName(r);let i=null;if(n===ba.LI&&a===ba.LI?i=ba.LI:n!==ba.DD&&n!==ba.DT||a!==ba.DD&&a!==ba.DT||(i=a),i){e.openElements.generateImpliedEndTagsWithExclusion(i),e.openElements.popUntilTagNamePopped(i);break}if(a!==ba.ADDRESS&&a!==ba.DIV&&a!==ba.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML)}(e,t):n===ba.EM||n===ba.TT?Oi(e,t):n===ba.BR?yi(e,t):n===ba.HR?function(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._appendElement(t,Ca.HTML),e.framesetOk=!1,e.ackSelfClosing=!0}(e,t):n===ba.RB?Mi(e,t):n===ba.RT||n===ba.RP?function(e,t){e.openElements.hasInScope(ba.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(ba.RTC),e._insertElement(t,Ca.HTML)}(e,t):n!==ba.TH&&n!==ba.TD&&n!==ba.TR&&wi(e,t);break;case 3:n===ba.DIV||n===ba.DIR||n===ba.NAV?vi(e,t):n===ba.PRE?Ri(e,t):n===ba.BIG?Oi(e,t):n===ba.IMG||n===ba.WBR?yi(e,t):n===ba.XMP?function(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,Hr.MODE.RAWTEXT)}(e,t):n===ba.SVG?function(e,t){e._reconstructActiveFormattingElements(),Ta.adjustTokenSVGAttrs(t),Ta.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ca.SVG):e._insertElement(t,Ca.SVG),t.ackSelfClosing=!0}(e,t):n===ba.RTC?Mi(e,t):n!==ba.COL&&wi(e,t);break;case 4:n===ba.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t):n===ba.BASE||n===ba.LINK||n===ba.META?hi(e,t):n===ba.BODY?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===ba.MAIN||n===ba.MENU?vi(e,t):n===ba.FORM?function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===ba.CODE||n===ba.FONT?Oi(e,t):n===ba.NOBR?function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(ba.NOBR)&&(si(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Ca.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):n===ba.AREA?yi(e,t):n===ba.MATH?function(e,t){e._reconstructActiveFormattingElements(),Ta.adjustTokenMathMLAttrs(t),Ta.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,Ca.MATHML):e._insertElement(t,Ca.MATHML),t.ackSelfClosing=!0}(e,t):n===ba.MENU?function(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML)}(e,t):n!==ba.HEAD&&wi(e,t);break;case 5:n===ba.STYLE||n===ba.TITLE?hi(e,t):n===ba.ASIDE?vi(e,t):n===ba.SMALL?Oi(e,t):n===ba.TABLE?function(e,t){e.treeAdapter.getDocumentMode(e.document)!==Yr.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML),e.framesetOk=!1,e.insertionMode=ka}(e,t):n===ba.EMBED?yi(e,t):n===ba.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Ca.HTML);const n=Hr.getTokenAttr(t,Na.TYPE);n&&n.toLowerCase()===Ra||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===ba.PARAM||n===ba.TRACK?Ii(e,t):n===ba.IMAGE?function(e,t){t.tagName=ba.IMG,yi(e,t)}(e,t):n!==ba.FRAME&&n!==ba.TBODY&&n!==ba.TFOOT&&n!==ba.THEAD&&wi(e,t);break;case 6:n===ba.SCRIPT?hi(e,t):n===ba.CENTER||n===ba.FIGURE||n===ba.FOOTER||n===ba.HEADER||n===ba.HGROUP||n===ba.DIALOG?vi(e,t):n===ba.BUTTON?function(e,t){e.openElements.hasInScope(ba.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(ba.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML),e.framesetOk=!1}(e,t):n===ba.STRIKE||n===ba.STRONG?Oi(e,t):n===ba.APPLET||n===ba.OBJECT?Ai(e,t):n===ba.KEYGEN?yi(e,t):n===ba.SOURCE?Ii(e,t):n===ba.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,Hr.MODE.RAWTEXT)}(e,t):n===ba.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Ca.HTML),e.framesetOk=!1,e.insertionMode===ka||e.insertionMode===Fa||e.insertionMode===Ba||e.insertionMode===Ha||e.insertionMode===Ya?e.insertionMode=za:e.insertionMode=Va}(e,t):n===ba.OPTION?xi(e,t):wi(e,t);break;case 7:n===ba.BGSOUND?hi(e,t):n===ba.DETAILS||n===ba.ADDRESS||n===ba.ARTICLE||n===ba.SECTION||n===ba.SUMMARY?vi(e,t):n===ba.LISTING?Ri(e,t):n===ba.MARQUEE?Ai(e,t):n===ba.NOEMBED?Di(e,t):n!==ba.CAPTION&&wi(e,t);break;case 8:n===ba.BASEFONT?hi(e,t):n===ba.FRAMESET?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Ca.HTML),e.insertionMode=Wa)}(e,t):n===ba.FIELDSET?vi(e,t):n===ba.TEXTAREA?function(e,t){e._insertElement(t,Ca.HTML),e.skipNextNewLine=!0,e.tokenizer.state=Hr.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=Pa}(e,t):n===ba.TEMPLATE?hi(e,t):n===ba.NOSCRIPT?e.options.scriptingEnabled?Di(e,t):wi(e,t):n===ba.OPTGROUP?xi(e,t):n!==ba.COLGROUP&&wi(e,t);break;case 9:n===ba.PLAINTEXT?function(e,t){e.openElements.hasInButtonScope(ba.P)&&e._closePElement(),e._insertElement(t,Ca.HTML),e.tokenizer.state=Hr.MODE.PLAINTEXT}(e,t):wi(e,t);break;case 10:n===ba.BLOCKQUOTE||n===ba.FIGCAPTION?vi(e,t):wi(e,t);break;default:wi(e,t)}}function Pi(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function ki(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function Ui(e,t){const n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){const r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function Fi(e,t){const n=t.tagName;switch(n.length){case 1:n===ba.A||n===ba.B||n===ba.I||n===ba.S||n===ba.U?si(e,t):n===ba.P?function(e){e.openElements.hasInButtonScope(ba.P)||e._insertFakeElement(ba.P),e._closePElement()}(e):Ui(e,t);break;case 2:n===ba.DL||n===ba.UL||n===ba.OL?Pi(e,t):n===ba.LI?function(e){e.openElements.hasInListItemScope(ba.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(ba.LI),e.openElements.popUntilTagNamePopped(ba.LI))}(e):n===ba.DD||n===ba.DT?function(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===ba.H1||n===ba.H2||n===ba.H3||n===ba.H4||n===ba.H5||n===ba.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):n===ba.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(ba.BR),e.openElements.pop(),e.framesetOk=!1}(e):n===ba.EM||n===ba.TT?si(e,t):Ui(e,t);break;case 3:n===ba.BIG?si(e,t):n===ba.DIR||n===ba.DIV||n===ba.NAV||n===ba.PRE?Pi(e,t):Ui(e,t);break;case 4:n===ba.BODY?function(e){e.openElements.hasInScope(ba.BODY)&&(e.insertionMode=Ka)}(e):n===ba.HTML?function(e,t){e.openElements.hasInScope(ba.BODY)&&(e.insertionMode=Ka,e._processToken(t))}(e,t):n===ba.FORM?function(e){const t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(ba.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(ba.FORM):e.openElements.remove(n))}(e):n===ba.CODE||n===ba.FONT||n===ba.NOBR?si(e,t):n===ba.MAIN||n===ba.MENU?Pi(e,t):Ui(e,t);break;case 5:n===ba.ASIDE?Pi(e,t):n===ba.SMALL?si(e,t):Ui(e,t);break;case 6:n===ba.CENTER||n===ba.FIGURE||n===ba.FOOTER||n===ba.HEADER||n===ba.HGROUP||n===ba.DIALOG?Pi(e,t):n===ba.APPLET||n===ba.OBJECT?ki(e,t):n===ba.STRIKE||n===ba.STRONG?si(e,t):Ui(e,t);break;case 7:n===ba.ADDRESS||n===ba.ARTICLE||n===ba.DETAILS||n===ba.SECTION||n===ba.SUMMARY||n===ba.LISTING?Pi(e,t):n===ba.MARQUEE?ki(e,t):Ui(e,t);break;case 8:n===ba.FIELDSET?Pi(e,t):n===ba.TEMPLATE?Si(e,t):Ui(e,t);break;case 10:n===ba.BLOCKQUOTE||n===ba.FIGCAPTION?Pi(e,t):Ui(e,t);break;default:Ui(e,t)}}function Gi(e,t){e.tmplInsertionModeStackTop>-1?Qi(e,t):e.stopped=!0}function Bi(e,t){const n=e.openElements.currentTagName;n===ba.TABLE||n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD||n===ba.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=Ua,e._processToken(t)):Vi(e,t)}function Hi(e,t){const n=t.tagName;switch(n.length){case 2:n===ba.TD||n===ba.TH||n===ba.TR?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ba.TBODY),e.insertionMode=Ba,e._processToken(t)}(e,t):Vi(e,t);break;case 3:n===ba.COL?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(ba.COLGROUP),e.insertionMode=Ga,e._processToken(t)}(e,t):Vi(e,t);break;case 4:n===ba.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,Ca.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t):Vi(e,t);break;case 5:n===ba.TABLE?function(e,t){e.openElements.hasInTableScope(ba.TABLE)&&(e.openElements.popUntilTagNamePopped(ba.TABLE),e._resetInsertionMode(),e._processToken(t))}(e,t):n===ba.STYLE?hi(e,t):n===ba.TBODY||n===ba.TFOOT||n===ba.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ca.HTML),e.insertionMode=Ba}(e,t):n===ba.INPUT?function(e,t){const n=Hr.getTokenAttr(t,Na.TYPE);n&&n.toLowerCase()===Ra?e._appendElement(t,Ca.HTML):Vi(e,t),t.ackSelfClosing=!0}(e,t):Vi(e,t);break;case 6:n===ba.SCRIPT?hi(e,t):Vi(e,t);break;case 7:n===ba.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Ca.HTML),e.insertionMode=Fa}(e,t):Vi(e,t);break;case 8:n===ba.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Ca.HTML),e.insertionMode=Ga}(e,t):n===ba.TEMPLATE?hi(e,t):Vi(e,t);break;default:Vi(e,t)}}function Yi(e,t){const n=t.tagName;n===ba.TABLE?e.openElements.hasInTableScope(ba.TABLE)&&(e.openElements.popUntilTagNamePopped(ba.TABLE),e._resetInsertionMode()):n===ba.TEMPLATE?Si(e,t):n!==ba.BODY&&n!==ba.CAPTION&&n!==ba.COL&&n!==ba.COLGROUP&&n!==ba.HTML&&n!==ba.TBODY&&n!==ba.TD&&n!==ba.TFOOT&&n!==ba.TH&&n!==ba.THEAD&&n!==ba.TR&&Vi(e,t)}function Vi(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function zi(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)Vi(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)}function qi(e,t){e.openElements.currentTagName===ba.COLGROUP&&(e.openElements.pop(),e.insertionMode=ka,e._processToken(t))}function Ki(e,t){const n=t.tagName;n===ba.HTML?Li(e,t):n===ba.OPTION?(e.openElements.currentTagName===ba.OPTION&&e.openElements.pop(),e._insertElement(t,Ca.HTML)):n===ba.OPTGROUP?(e.openElements.currentTagName===ba.OPTION&&e.openElements.pop(),e.openElements.currentTagName===ba.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Ca.HTML)):n===ba.INPUT||n===ba.KEYGEN||n===ba.TEXTAREA||n===ba.SELECT?e.openElements.hasInSelectScope(ba.SELECT)&&(e.openElements.popUntilTagNamePopped(ba.SELECT),e._resetInsertionMode(),n!==ba.SELECT&&e._processToken(t)):n!==ba.SCRIPT&&n!==ba.TEMPLATE||hi(e,t)}function Wi(e,t){const n=t.tagName;if(n===ba.OPTGROUP){const t=e.openElements.items[e.openElements.stackTop-1],n=t&&e.treeAdapter.getTagName(t);e.openElements.currentTagName===ba.OPTION&&n===ba.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===ba.OPTGROUP&&e.openElements.pop()}else n===ba.OPTION?e.openElements.currentTagName===ba.OPTION&&e.openElements.pop():n===ba.SELECT&&e.openElements.hasInSelectScope(ba.SELECT)?(e.openElements.popUntilTagNamePopped(ba.SELECT),e._resetInsertionMode()):n===ba.TEMPLATE&&Si(e,t)}function Qi(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(ba.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function $i(e,t){e.insertionMode=La,e._processToken(t)}function ji(e,t){e.insertionMode=La,e._processToken(t)}var Xi=Ji,Zi=Ji.prototype;function Ji(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}Zi.space=null,Zi.normal={},Zi.property={};var eo=function(t){var n,r,a=t.length,i=[],o=[],s=-1;for(;++s<a;)n=t[s],i.push(n.property),o.push(n.normal),r=n.space;return new Xi(e.apply(null,i),e.apply(null,o),r)};var to=function(e){return e.toLowerCase()};var no=ao,ro=ao.prototype;function ao(e,t){this.property=e,this.attribute=t}ro.space=null,ro.attribute=null,ro.property=null,ro.boolean=!1,ro.booleanish=!1,ro.overloadedBoolean=!1,ro.number=!1,ro.commaSeparated=!1,ro.spaceSeparated=!1,ro.commaOrSpaceSeparated=!1,ro.mustUseProperty=!1,ro.defined=!1;var io=0;function oo(){return Math.pow(2,++io)}var so={boolean:oo(),booleanish:oo(),overloadedBoolean:oo(),number:oo(),spaceSeparated:oo(),commaSeparated:oo(),commaOrSpaceSeparated:oo()},lo=uo;uo.prototype=new no,uo.prototype.defined=!0;var co=["boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated"],_o=co.length;function uo(e,t,n,r){var a,i=-1;for(mo(this,"space",r),no.call(this,e,t);++i<_o;)mo(this,a=co[i],(n&so[a])===so[a])}function mo(e,t,n){n&&(e[t]=n)}var po=function(e){var t,n,r=e.space,a=e.mustUseProperty||[],i=e.attributes||{},o=e.properties,s=e.transform,l={},c={};for(t in o)n=new lo(t,s(i,t),o[t],r),-1!==a.indexOf(t)&&(n.mustUseProperty=!0),l[t]=n,c[to(t)]=t,c[to(n.attribute)]=t;return new Xi(l,c,r)};var go=po({space:"xlink",transform:function(e,t){return"xlink:"+t.slice(5).toLowerCase()},properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}});var Eo=po({space:"xml",transform:function(e,t){return"xml:"+t.slice(3).toLowerCase()},properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});var ho=function(e,t){return t in e?e[t]:t};var So=function(e,t){return ho(e,t.toLowerCase())};var fo=po({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:So,properties:{xmlns:null,xmlnsXLink:null}}),To=so.booleanish,bo=so.number,Co=so.spaceSeparated,No=po({transform:function(e,t){return"role"===t?t:"aria-"+t.slice(4).toLowerCase()},properties:{ariaActiveDescendant:null,ariaAtomic:To,ariaAutoComplete:null,ariaBusy:To,ariaChecked:To,ariaColCount:bo,ariaColIndex:bo,ariaColSpan:bo,ariaControls:Co,ariaCurrent:null,ariaDescribedBy:Co,ariaDetails:null,ariaDisabled:To,ariaDropEffect:Co,ariaErrorMessage:null,ariaExpanded:To,ariaFlowTo:Co,ariaGrabbed:To,ariaHasPopup:null,ariaHidden:To,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Co,ariaLevel:bo,ariaLive:null,ariaModal:To,ariaMultiLine:To,ariaMultiSelectable:To,ariaOrientation:null,ariaOwns:Co,ariaPlaceholder:null,ariaPosInSet:bo,ariaPressed:To,ariaReadOnly:To,ariaRelevant:null,ariaRequired:To,ariaRoleDescription:Co,ariaRowCount:bo,ariaRowIndex:bo,ariaRowSpan:bo,ariaSelected:To,ariaSetSize:bo,ariaSort:null,ariaValueMax:bo,ariaValueMin:bo,ariaValueNow:bo,ariaValueText:null,role:null}});var vo=so.boolean,Ro=so.overloadedBoolean,Oo=so.booleanish,Ao=so.number,yo=so.spaceSeparated,Io=so.commaSeparated,Do=eo([Eo,go,fo,No,po({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:So,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Io,acceptCharset:yo,accessKey:yo,action:null,allow:null,allowFullScreen:vo,allowPaymentRequest:vo,allowUserMedia:vo,alt:null,as:null,async:vo,autoCapitalize:null,autoComplete:yo,autoFocus:vo,autoPlay:vo,capture:vo,charSet:null,checked:vo,cite:null,className:yo,cols:Ao,colSpan:null,content:null,contentEditable:Oo,controls:vo,controlsList:yo,coords:Ao|Io,crossOrigin:null,data:null,dateTime:null,decoding:null,default:vo,defer:vo,dir:null,dirName:null,disabled:vo,download:Ro,draggable:Oo,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:vo,formTarget:null,headers:yo,height:Ao,hidden:vo,high:Ao,href:null,hrefLang:null,htmlFor:yo,httpEquiv:yo,id:null,imageSizes:null,imageSrcSet:Io,inputMode:null,integrity:null,is:null,isMap:vo,itemId:null,itemProp:yo,itemRef:yo,itemScope:vo,itemType:yo,kind:null,label:null,lang:null,language:null,list:null,loop:vo,low:Ao,manifest:null,max:null,maxLength:Ao,media:null,method:null,min:null,minLength:Ao,multiple:vo,muted:vo,name:null,nonce:null,noModule:vo,noValidate:vo,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:vo,optimum:Ao,pattern:null,ping:yo,placeholder:null,playsInline:vo,poster:null,preload:null,readOnly:vo,referrerPolicy:null,rel:yo,required:vo,reversed:vo,rows:Ao,rowSpan:Ao,sandbox:yo,scope:null,scoped:vo,seamless:vo,selected:vo,shape:null,size:Ao,sizes:null,slot:null,span:Ao,spellCheck:Oo,src:null,srcDoc:null,srcLang:null,srcSet:Io,start:Ao,step:null,style:null,tabIndex:Ao,target:null,title:null,translate:null,type:null,typeMustMatch:vo,useMap:null,value:Oo,width:Ao,wrap:null,align:null,aLink:null,archive:yo,axis:null,background:null,bgColor:null,border:Ao,borderColor:null,bottomMargin:Ao,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:vo,declare:vo,event:null,face:null,frame:null,frameBorder:null,hSpace:Ao,leftMargin:Ao,link:null,longDesc:null,lowSrc:null,marginHeight:Ao,marginWidth:Ao,noResize:vo,noHref:vo,noShade:vo,noWrap:vo,object:null,profile:null,prompt:null,rev:null,rightMargin:Ao,rules:null,scheme:null,scrolling:Oo,standby:null,summary:null,text:null,topMargin:Ao,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Ao,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:vo,prefix:null,property:null,results:Ao,security:null,unselectable:null}})]),xo=so.boolean,Mo=so.number,wo=so.spaceSeparated,Lo=so.commaSeparated,Po=so.commaOrSpaceSeparated,ko=eo([Eo,go,fo,No,po({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:ho,properties:{about:Po,accentHeight:Mo,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Mo,amplitude:Mo,arabicForm:null,ascent:Mo,attributeName:null,attributeType:null,azimuth:Mo,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Mo,by:null,calcMode:null,capHeight:Mo,className:wo,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Mo,diffuseConstant:Mo,direction:null,display:null,dur:null,divisor:Mo,dominantBaseline:null,download:xo,dx:null,dy:null,edgeMode:null,editable:null,elevation:Mo,enableBackground:null,end:null,event:null,exponent:Mo,externalResourcesRequired:null,fill:null,fillOpacity:Mo,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Lo,g2:Lo,glyphName:Lo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Mo,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Mo,horizOriginX:Mo,horizOriginY:Mo,id:null,ideographic:Mo,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Mo,k:Mo,k1:Mo,k2:Mo,k3:Mo,k4:Mo,kernelMatrix:Po,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Mo,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Mo,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Mo,overlineThickness:Mo,paintOrder:null,panose1:null,path:null,pathLength:Mo,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:wo,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Mo,pointsAtY:Mo,pointsAtZ:Mo,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Po,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Po,rev:Po,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Po,requiredFeatures:Po,requiredFonts:Po,requiredFormats:Po,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Mo,specularExponent:Mo,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Mo,strikethroughThickness:Mo,string:null,stroke:null,strokeDashArray:Po,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Mo,strokeOpacity:Mo,strokeWidth:null,style:null,surfaceScale:Mo,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Po,tabIndex:Mo,tableValues:null,target:null,targetX:Mo,targetY:Mo,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Po,to:null,transform:null,u1:null,u2:null,underlinePosition:Mo,underlineThickness:Mo,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Mo,values:null,vAlphabetic:Mo,vMathematical:Mo,vectorEffect:null,vHanging:Mo,vIdeographic:Mo,version:null,vertAdvY:Mo,vertOriginX:Mo,vertOriginY:Mo,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Mo,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}})]),Uo="data",Fo=function(e,t){var n=to(t),r=t,a=no;if(n in e.normal)return e.property[e.normal[n]];n.length>4&&n.slice(0,4)===Uo&&Go.test(t)&&("-"===t.charAt(4)?r=function(e){var t=e.slice(5).replace(Bo,Vo);return Uo+t.charAt(0).toUpperCase()+t.slice(1)}(t):t=function(e){var t=e.slice(4);if(Bo.test(t))return e;"-"!==(t=t.replace(Ho,Yo)).charAt(0)&&(t="-"+t);return Uo+t}(t),a=lo);return new a(r,t)},Go=/^data[-a-z0-9.:_]+$/i,Bo=/-[a-z]/g,Ho=/[A-Z]/g;function Yo(e){return"-"+e.toLowerCase()}function Vo(e){return e.charAt(1).toUpperCase()}const zo="http://www.w3.org/1999/xhtml",qo="http://www.w3.org/1998/Math/MathML",Ko="http://www.w3.org/2000/svg",Wo="http://www.w3.org/1999/xlink",Qo="http://www.w3.org/XML/1998/namespace",$o="http://www.w3.org/2000/xmlns/";var jo={html:zo,mathml:qo,svg:Ko,xlink:Wo,xml:Qo,xmlns:$o},Xo=Object.freeze({__proto__:null,html:zo,mathml:qo,svg:Ko,xlink:Wo,xml:Qo,xmlns:$o,default:jo}),Zo=Object.freeze({__proto__:null,default:["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","solidColor","textArea","textPath"]}),Jo=function(e,t){var n,r,a,i,o,s=e||"",l=t||"div",c={},d=-1,_=s.length;for(;++d<=_;)(a=s.charCodeAt(d))&&a!==ts&&a!==es||((i=s.slice(o,d))&&(r===ts?n?n.push(i):(n=[i],c.className=n):r===es?c.id=i:l=i),o=d+1,r=a);return{type:"element",tagName:l,properties:c,children:[]}},es=35,ts=46;var ns=function(e){var t=String(e||as).trim();return t===as?[]:t.split(os)},rs=function(e){return e.join(is).trim()},as="",is=" ",os=/[ \t\n\r\f]+/g;var ss={parse:ns,stringify:rs},ls=function(e){var t,n=[],r=String(e||us),a=r.indexOf(ds),i=0,o=!1;for(;!o;)-1===a&&(a=r.length,o=!0),!(t=r.slice(i,a).trim())&&o||n.push(t),i=a+1,a=r.indexOf(ds,i);return n},cs=function(e,t){var n=t||{},r=!1===n.padLeft?us:_s,a=n.padRight?_s:us;e[e.length-1]===us&&(e=e.concat(us));return e.join(a+ds+r).trim()},ds=",",_s=" ",us="";var ms={parse:ls,stringify:cs},ps=ss.parse,gs=ms.parse,Es=function(e,t,n){var r=n?function(e){var t,n=e.length,r=-1,a={};for(;++r<n;)t=e[r],a[t.toLowerCase()]=t;return a}(n):null;return(function(e,n){var i,o=Jo(e,t),s=Array.prototype.slice.call(arguments,2),l=o.tagName.toLowerCase();o.tagName=r&&hs.call(r,l)?r[l]:l,n&&function(e,t){return"string"==typeof e||"length"in e||function(e,t){var n=t.type;if("input"===e||!n||"string"!=typeof n)return!1;if("object"==typeof t.children&&"length"in t.children)return!0;if(n=n.toLowerCase(),"button"===e)return"menu"!==n&&"submit"!==n&&"reset"!==n&&"button"!==n;return"value"in t}(t.tagName,e)}(n,o)&&(s.unshift(n),n=null);if(n)for(i in n)a(o.properties,i,n[i]);(function e(t,n){var r,a;if("string"==typeof n||"number"==typeof n)return void t.push({type:"text",value:String(n)});if("object"==typeof n&&"length"in n){for(r=-1,a=n.length;++r<a;)e(t,n[r]);return}if("object"!=typeof n||!("type"in n))throw new Error("Expected node, nodes, or string, got `"+n+"`");t.push(n)})(o.children,s),"template"===o.tagName&&(o.content={type:"root",children:o.children},o.children=[]);return o});function a(t,n,r){var a,i,o;null!=r&&r==r&&(i=(a=Fo(e,n)).property,"string"==typeof(o=r)&&(a.spaceSeparated?o=ps(o):a.commaSeparated?o=gs(o):a.commaOrSpaceSeparated&&(o=ps(gs(o).join(" ")))),"style"===i&&"string"!=typeof r&&(o=function(e){var t,n=[];for(t in e)n.push([t,e[t]].join(": "));return n.join("; ")}(o)),"className"===i&&t.className&&(o=t.className.concat(o)),t[i]=function(e,t,n){var r,a,i;if("object"!=typeof n||!("length"in n))return Ss(e,t,n);a=n.length,r=-1,i=[];for(;++r<a;)i[r]=Ss(e,t,n[r]);return i}(a,i,o))}},hs={}.hasOwnProperty;function Ss(e,t,n){var r=n;return e.number||e.positiveNumber?isNaN(r)||""===r||(r=Number(r)):(e.boolean||e.overloadedBoolean)&&("string"!=typeof r||""!==r&&to(n)!==to(t)||(r=!0)),r}var fs=R(Zo),Ts=Es(ko,"g",fs);Ts.displayName="svg";var bs=Ts,Cs=Es(Do,"div");Cs.displayName="html";var Ns=Cs,vs=function(e,t){var n,r=0;if(e=String(e),"string"!=typeof t||1!==t.length)throw new Error("Expected character");n=e.indexOf(t);for(;-1!==n;)r++,n=e.indexOf(t,n+1);return r};var Rs=R(Xo),Os=function(e,t){var n,r=t||{};r.messages?(n=r,r={}):n=r.file;return Is(e,{schema:"svg"===r.space?ko:Do,file:n,verbose:r.verbose,location:!1})},As={}.hasOwnProperty,ys={"#document":Ds,"#document-fragment":Ds,"#text":function(e){return{type:"text",value:e.value}},"#comment":function(e){return{type:"comment",value:e.data}},"#documentType":function(e){return{type:"doctype",name:e.name||"",public:e.publicId||null,system:e.systemId||null}}};function Is(t,n){var r,a,i,o=n.schema,s=As.call(ys,t.nodeName)?ys[t.nodeName]:xs;return s===xs&&(n.schema=t.namespaceURI===Rs.svg?ko:Do),t.childNodes&&(r=function(e,t){var n=e.length,r=-1,a=[];for(;++r<n;)a[r]=Is(e[r],t);return a}(t.childNodes,n)),a=s(t,r,n),t.sourceCodeLocation&&n.file&&(i=function(t,n,r){var a,i,o,s,l,c=r.schema,d=r.verbose,_=Ms(n);if("element"===t.type&&(a=t.children[t.children.length-1],!n.endTag&&a&&a.position&&a.position.end&&(_.end=e(a.position.end)),d)){for(o in i=n.attrs,s={},i)l=Fo(c,o).property,s[l]=Ms(i[o]);t.data={position:{opening:Ms(n.startTag),closing:n.endTag?Ms(n.endTag):null,properties:s}}}return _}(a,t.sourceCodeLocation,n))&&(n.location=!0,a.position=i),n.schema=o,a}function Ds(e,t,n){var r,a={type:"root",children:t,data:{}};return a.data.quirksMode="quirks"===e.mode||"limited-quirks"===e.mode,n.file&&n.location&&(r=String(n.file),a.position={start:{line:1,column:1,offset:0},end:{line:vs(r,"\n")+1,column:r.length-r.lastIndexOf("\n"),offset:r.length}}),a}function xs(e,t,n){for(var r,a,i,o,s,l="svg"===n.schema.space?bs:Ns,c=e.tagName,d=e.attrs,_=d.length,u={},m=-1;++m<_;)u[((r=d[m]).prefix?r.prefix+":":"")+r.name]=r.value;return a=l(c,u,t),"template"===c&&"content"in e&&(o=(i=e.sourceCodeLocation)&&i.startTag&&Ms(i.startTag).end,s=i&&i.endTag&&Ms(i.endTag).start,a.content=Is(e.content,n),(o||s)&&n.file&&(a.content.position={start:o,end:s})),a}function Ms(e){var t=ws({line:e.startLine,column:e.startCol,offset:e.startOffset}),n=ws({line:e.endLine,column:e.endCol,offset:e.endOffset});return t||n?{start:t,end:n}:null}function ws(e){return e.line&&e.column?e:null}var Ls={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Ps=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,ks=/\n/g,Us=/^\s*/,Fs=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,Gs=/^:\s*/,Bs=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Hs=/^[;\s]*/,Ys=/^\s+|\s+$/g,Vs="\n",zs="/",qs="*",Ks="",Ws="comment",Qs="declaration",$s=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function a(e){var t=e.match(ks);t&&(n+=t.length);var a=e.lastIndexOf(Vs);r=~a?e.length-a:r+e.length}function i(){var e={line:n,column:r};return function(t){return t.position=new o(e),c(),t}}function o(e){this.start=e,this.end={line:n,column:r},this.source=t.source}function s(a){var i=new Error(t.source+":"+n+":"+r+": "+a);if(i.reason=a,i.filename=t.source,i.line=n,i.column=r,i.source=e,!t.silent)throw i}function l(t){var n=t.exec(e);if(n){var r=n[0];return a(r),e=e.slice(r.length),n}}function c(){l(Us)}function d(e){var t;for(e=e||[];t=_();)!1!==t&&e.push(t);return e}function _(){var t=i();if(zs==e.charAt(0)&&qs==e.charAt(1)){for(var n=2;Ks!=e.charAt(n)&&(qs!=e.charAt(n)||zs!=e.charAt(n+1));)++n;if(n+=2,Ks===e.charAt(n-1))return s("End of comment missing");var o=e.slice(2,n-2);return r+=2,a(o),e=e.slice(n),r+=2,t({type:Ws,comment:o})}}function u(){var e=i(),t=l(Fs);if(t){if(_(),!l(Gs))return s("property missing ':'");var n=l(Bs),r=e({type:Qs,property:js(t[0].replace(Ps,Ks)),value:n?js(n[0].replace(Ps,Ks)):Ks});return l(Hs),r}}return o.prototype.content=e,c(),function(){var e,t=[];for(d(t);e=u();)!1!==e&&(t.push(e),d(t));return t}()};function js(e){return e?e.replace(Ys,Ks):Ks}var Xs=function(e,t){var n,r=null;if(!e||"string"!=typeof e)return r;for(var a,i,o=$s(e),s="function"==typeof t,l=0,c=o.length;l<c;l++)a=(n=o[l]).property,i=n.value,s?t(a,i,n):i&&(r||(r={}),r[a]=i);return r},Zs=R(Object.freeze({__proto__:null,classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink",default:Ls})),Js=l("root"),el=l("element"),tl=l("text"),nl=/-([a-z])/g,rl=function(e,t,n){var r,a,i,o,s=n||{};if("function"!=typeof e)throw new Error("h is not a function");"string"==typeof s||"boolean"==typeof s?(r=s,s={}):r=s.prefix;a=function(e){var t=e&&e("div");return Boolean(t&&("_owner"in t||"_store"in t)&&null===t.key)}(e),i=function(e){var t=e&&e("div");return Boolean(t&&t.context&&t.context._isVue)}(e),o=function(e){return e&&"VirtualNode"===e("div").type}(e),null==r&&(r=(!0===a||!0===i||!0===o)&&"h-");if(Js(t))t=1===t.children.length&&el(t.children[0])?t.children[0]:{type:"element",tagName:"div",properties:{},children:t.children};else if(!el(t))throw new Error("Expected root or element, not `"+(t&&t.type||t)+"`");return function e(t,n,r){var a,i,o,s,l,c,d,_,u,m=r.schema,p=m,g=n.tagName;"html"===m.space&&"svg"===g.toLowerCase()&&(p=ko,r.schema=p);!0===r.vdom&&"html"===p.space&&(g=g.toUpperCase());for(s in a=n.properties,i={},a)al(i,s,a[s],r);"string"!=typeof i.style||!0!==r.vdom&&!0!==r.vue&&!0!==r.react||(i.style=function(e,t){var n={};try{Xs(e,(function(e,t){n[function(e){"-ms-"===e.slice(0,4)&&(e="ms-"+e.slice(4));return e.replace(nl,ol)}(e)]=t}))}catch(e){throw e.message=t+"[style]"+e.message.slice("undefined".length),e}return n}(i.style,g));r.prefix&&(r.key++,i.key=r.prefix+r.key);r.vdom&&"html"!==p.space&&(i.namespace=Rs[p.space]);l=[],o=n.children,c=o?o.length:0,d=-1;for(;++d<c;)_=o[d],el(_)?l.push(e(t,_,r)):tl(_)&&l.push(_.value);return u=0===l.length?t(g,i):t(g,i,l),r.schema=m,u}(e,t,{schema:"svg"===s.space?ko:Do,prefix:r,key:0,react:a,vue:i,vdom:o,hyperscript:il(e)})};function al(e,t,n,r){var a,i=r.hyperscript||r.vdom||r.vue,o=r.schema,s=Fo(o,t);null==n||n!=n||i&&!1===n||i&&s.boolean&&!n||(null!==n&&"object"==typeof n&&"length"in n&&(n=(s.commaSeparated?ms:ss).stringify(n)),s.boolean&&!0===r.hyperscript&&(n=""),r.vue?"style"!==t&&(a="attrs"):s.mustUseProperty||(!0===r.vdom?a="attributes":!0===r.hyperscript&&(a="attrs")),a?(void 0===e[a]&&(e[a]={}),e[a][s.attribute]=n):r.react&&s.space?e[Zs[s.property]||s.property]=n:e[s.attribute]=n)}function il(e){return Boolean(e&&e.context&&e.cleanup)}function ol(e,t){return t.toUpperCase()}var sl=function(e,t){var n=t||{};function r(t){var n=r.invalid,a=r.handlers;return t&&cl.call(t,e)&&(n=cl.call(a,t[e])?a[t[e]]:r.unknown),(n||ll).apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r},ll=Function.prototype,cl={}.hasOwnProperty;var dl=function(e,t){return ul(e,"svg"===t?ko:Do)},_l=["svg","html"],ul=sl("type");function ml(e,t,n){var r,a=n,i=e.position,o=e.children,s=[],l=o?o.length:0,c=-1;for("element"===e.type&&("html"===a.space&&"svg"===e.tagName&&(a=ko),t.namespaceURI=Rs[a.space]);++c<l;)(r=ul(o[c],a)).parentNode=t,s[c]=r;return"element"!==e.type&&"root"!==e.type||(t.childNodes=s),i&&i.start&&i.end&&(t.sourceCodeLocation={startLine:i.start.line,startCol:i.start.column,startOffset:i.start.offset,endLine:i.end.line,endCol:i.end.column,endOffset:i.end.offset}),t}ul.handlers.root=function(e,t){var n=(e.data||{}).quirksMode?"quirks":"no-quirks";return ml(e,{nodeName:"#document",mode:n},t)},ul.handlers.element=function(t,n){var r=n.space,a=e(t,{children:[]});return rl((function(e,r){var i,o,s,l,c,d,_=[];for(l in r)c=Fo(n,l),!1===(o=r[l])||c.boolean&&!o||(s={name:l,value:!0===o?"":String(o)},c.space&&-1===_l.indexOf(c.space)&&(-1===(d=l.indexOf(":"))?s.prefix="":(s.name=l.slice(d+1),s.prefix=l.slice(0,d)),s.namespace=Rs[c.space]),_.push(s));i=ml(t,{nodeName:e,tagName:e,attrs:_},n),"template"===e&&(i.content=function(e,t){return ml(e,{nodeName:"#document-fragment"},t)}(a.content,n));return i}),a,{space:r})},ul.handlers.text=function(e,t){return ml(e,{nodeName:"#text",value:e.value},t)},ul.handlers.comment=function(e,t){return ml(e,{nodeName:"#comment",data:e.value},t)},ul.handlers.doctype=function(e,t){return ml(e,{nodeName:"#documentType",name:e.name,publicId:e.public||"",systemId:e.system||""},t)};var pl=R(Object.freeze({__proto__:null,default:["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"]})),gl=function(t,n){var r,a,i,o,s,l=new ei(Nl),c=sl("type");if(c.handlers.root=function(e){d(e.children)},c.handlers.element=function(t){var n=-1!==pl.indexOf(t.tagName);l._processToken(function(t){var n=Ol(t);return n.startTag=e(n),{type:fl,tagName:t.tagName,selfClosing:!1,attrs:vl(t),location:n}}(t),Rs.html),d(t.children),n||(l._processToken(function(t){var n=Ol(t);return n.endTag=e(n),{type:Tl,tagName:t.tagName,attrs:[],location:n}}(t)),r.state=hl)},c.handlers.text=function(e){l._processToken({type:Sl,chars:e.value,location:Ol(e)})},c.handlers.comment=function(e){l._processToken({type:bl,data:e.value,location:Ol(e)})},c.handlers.doctype=function(e){var t=dl(e);l._processToken({type:Cl,name:t.name,forceQuirks:!1,publicId:t.publicId,systemId:t.systemId,location:Ol(e)})},c.handlers.raw=function(e){var t,n=O.start(e);a.html=null,a.endOfChunkHit=!1,a.lastChunkWritten=!1,a.lastCharPos=-1,a.pos=-1,i.droppedBufferSize=0,i.line=n.line,i.col=1,i.offset=0,i.lineStartPos=1-n.column,i.droppedBufferSize=n.offset,o.currentAttrLocation=null,o.ctLoc=Ol(e),r.write(e.value),l._runParsingLoop(null),(t=r.currentCharacterToken)&&(t.location.endLine=i.line,t.location.endCol=i.col+1,t.location.endOffset=i.offset+1,l._processToken(t));r.currentToken=null,r.currentCharacterToken=null,r.currentAttr=null},c.unknown=Rl,s=Os(function(e){var t="root"===e.type?e.children[0]:e;return t&&("doctype"===t.type||"html"===t.tagName)}(t)?function(){var e=l.treeAdapter.createDocument();return l._bootstrap(e,null),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),e}():function(){var e,n,s;return e={nodeName:"template",tagName:"template",attrs:[],namespaceURI:Rs.html,childNodes:[]},n={nodeName:"documentmock",tagName:"documentmock",attrs:[],namespaceURI:Rs.html,childNodes:[]},s={nodeName:"#document-fragment",childNodes:[]},l._bootstrap(n,e),l._pushTmplInsertionMode(El),l._initTokenizerForFragmentParsing(),l._insertFakeRootElement(),l._resetInsertionMode(),l._findFormInFragmentContext(),r=l.tokenizer,a=r.preprocessor,o=r.__mixins[0],i=o.posTracker,c(t),l._adoptNodes(n.childNodes[0],s),s}(),n),"root"!==t.type&&1===s.children.length)return s.children[0];return s;function d(e){var t=0,n=-1;for(e&&(t=e.length);++n<t;)c(e[n])}},El="IN_TEMPLATE_MODE",hl="DATA_STATE",Sl="CHARACTER_TOKEN",fl="START_TAG_TOKEN",Tl="END_TAG_TOKEN",bl="COMMENT_TOKEN",Cl="DOCTYPE_TOKEN",Nl={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function vl(e){return dl({tagName:e.tagName,type:"element",properties:e.properties}).attrs}function Rl(e){throw new Error("Cannot compile `"+e.type+"` node")}function Ol(e){var t=O.start(e),n=O.end(e);return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}var Al=function(){return gl};var yl=Il;function Il(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null==e)return Ml;if("object"==typeof e)return("length"in e?xl:Dl)(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function Dl(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}}function xl(e){var t=function(e){for(var t=[],n=e.length,r=-1;++r<n;)t[r]=Il(e[r]);return t}(e),n=t.length;return function(){var e=-1;for(;++e<n;)if(t[e].apply(this,arguments))return!0;return!1}}function Ml(){return!0}var wl=Ul,Ll=!0,Pl="skip",kl=!1;function Ul(e,t,n,r){var a;function i(e,o,s){var l,c=[];return(t&&!a(e,o,s[s.length-1]||null)||(c=Fl(n(e,s)))[0]!==kl)&&e.children&&c[0]!==Pl&&(l=Fl(function(e,t){var n,a=r?-1:1,o=(r?e.length:-1)+a;for(;o>-1&&o<e.length;){if((n=i(e[o],o,t))[0]===kl)return n;o="number"==typeof n[1]?n[1]:o+a}}(e.children,s.concat(e))))[0]===kl?l:c}"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a=yl(t),i(e,null,[])}function Fl(e){return null!==e&&"object"==typeof e&&"length"in e?e:"number"==typeof e?[Ll,e]:[e]}Ul.CONTINUE=Ll,Ul.SKIP=Pl,Ul.EXIT=kl;var Gl=Vl,Bl=wl.CONTINUE,Hl=wl.SKIP,Yl=wl.EXIT;function Vl(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),wl(e,t,(function(e,t){var r=t[t.length-1],a=r?r.children.indexOf(e):null;return n(e,a,r)}),r)}Vl.CONTINUE=Bl,Vl.SKIP=Hl,Vl.EXIT=Yl;var zl,ql=v((function(e,t){!function(t,n){e.exports=n()}("undefined"!=typeof self&&self,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){n.r(t);n(0);var r=function(){function e(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}return e.range=function(t,n){return n?t&&t.loc&&n.loc&&t.loc.lexer===n.loc.lexer?new e(t.loc.lexer,t.loc.start,n.loc.end):null:t&&t.loc},e}(),a=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,n){return new e(n,r.range(this,t))},e}(),i=function e(t,n){this.position=void 0;var r,a="KaTeX parse error: "+t,i=n&&n.loc;if(i&&i.start<=i.end){var o=i.lexer.input;r=i.start;var s=i.end;r===o.length?a+=" at end of input: ":a+=" at position "+(r+1)+": ";var l=o.slice(r,s).replace(/[^]/g,"$&̲");a+=(r>15?"…"+o.slice(r-15,r):o.slice(0,r))+l+(s+15<o.length?o.slice(s,s+15)+"…":o.slice(s))}var c=new Error(a);return c.name="ParseError",c.__proto__=e.prototype,c.position=r,c};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,l={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},c=/[&><"']/g;var d=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},_={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(c,(function(e){return l[e]}))},hyphenate:function(e){return e.replace(s,"-$1").toLowerCase()},getBaseElem:d,isCharacterBox:function(e){var t=d(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},u=function(){function e(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,e=e||{},this.displayMode=_.deflt(e.displayMode,!1),this.output=_.deflt(e.output,"htmlAndMathml"),this.leqno=_.deflt(e.leqno,!1),this.fleqn=_.deflt(e.fleqn,!1),this.throwOnError=_.deflt(e.throwOnError,!0),this.errorColor=_.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.minRuleThickness=Math.max(0,_.deflt(e.minRuleThickness,0)),this.colorIsTextColor=_.deflt(e.colorIsTextColor,!1),this.strict=_.deflt(e.strict,"warn"),this.trust=_.deflt(e.trust,!1),this.maxSize=Math.max(0,_.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,_.deflt(e.maxExpand,1e3))}var t=e.prototype;return t.reportNonstrict=function(e,t,n){var r=this.strict;if("function"==typeof r&&(r=r(e,t,n)),r&&"ignore"!==r){if(!0===r||"error"===r)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",n);"warn"===r?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,n){var r=this.strict;if("function"==typeof r)try{r=r(e,t,n)}catch(e){r="error"}return!(!r||"ignore"===r)&&(!0===r||"error"===r||("warn"===r?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+r+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=_.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),m=function(){function e(e,t,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=n}var t=e.prototype;return t.sup=function(){return p[g[this.id]]},t.sub=function(){return p[E[this.id]]},t.fracNum=function(){return p[h[this.id]]},t.fracDen=function(){return p[S[this.id]]},t.cramp=function(){return p[f[this.id]]},t.text=function(){return p[T[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],g=[4,5,4,5,6,7,6,7],E=[5,5,5,5,7,7,7,7],h=[2,3,4,5,6,7,6,7],S=[3,3,5,5,7,7,7,7],f=[1,1,3,3,5,5,7,7],T=[0,1,2,3,2,3,2,3],b={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},C=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var N=[];function v(e){for(var t=0;t<N.length;t+=2)if(e>=N[t]&&e<=N[t+1])return!0;return!1}C.forEach((function(e){return e.blocks.forEach((function(e){return N.push.apply(N,e)}))}));var R={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},O=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),A=function(e){return e.filter((function(e){return e})).join(" ")},y=function(e,t,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},t){t.style.isTight()&&this.classes.push("mtight");var r=t.getColor();r&&(this.style.color=r)}},I=function(e){var t=document.createElement(e);for(var n in t.className=A(this.classes),this.style)this.style.hasOwnProperty(n)&&(t.style[n]=this.style[n]);for(var r in this.attributes)this.attributes.hasOwnProperty(r)&&t.setAttribute(r,this.attributes[r]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},D=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+_.escape(A(this.classes))+'"');var n="";for(var r in this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");for(var a in n&&(t+=' style="'+_.escape(n)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+_.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},x=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,e,n,r),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"span")},t.toMarkup=function(){return D.call(this,"span")},e}(),M=function(){function e(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,y.call(this,t,r),this.children=n||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){return I.call(this,"a")},t.toMarkup=function(){return D.call(this,"a")},e}(),w=function(){function e(e,t,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=n}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var n in this.style)this.style.hasOwnProperty(n)&&(t+=_.hyphenate(n)+":"+this.style[n]+";");return t&&(e+=' style="'+_.escape(t)+'"'),e+="'/>"},e}(),L={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},P=function(){function e(e,t,n,r,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=n||0,this.italic=r||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<C.length;t++)for(var n=C[t],r=0;r<n.blocks.length;r++){var a=n.blocks[r];if(e>=a[0]&&e<=a[1])return n.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=L[this.text])}var t=e.prototype;return t.hasClass=function(e){return _.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var n in this.italic>0&&((t=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((t=t||document.createElement("span")).className=A(this.classes)),this.style)this.style.hasOwnProperty(n)&&((t=t||document.createElement("span")).style[n]=this.style[n]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=_.escape(A(this.classes)),t+='"');var n="";for(var r in this.italic>0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(r)&&(n+=_.hyphenate(r)+":"+this.style[r]+";");n&&(e=!0,t+=' style="'+_.escape(n)+'"');var a=_.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),k=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<svg";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</svg>"},e}(),U=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",R[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+R[this.pathName]+"'/>"},e}(),F=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function G(e){if(e instanceof P)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var B={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},H={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Y={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function V(e,t,n){if(!B[t])throw new Error("Font metrics not found for font: "+t+".");var r=e.charCodeAt(0),a=B[t][r];if(!a&&e[0]in Y&&(r=Y[e[0]].charCodeAt(0),a=B[t][r]),a||"text"!==n||v(r)&&(a=B[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var z={};var q={bin:1,close:1,inner:1,open:1,punct:1,rel:1},K={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},W={math:{},text:{}},Q=W;function $(e,t,n,r,a,i){W[e][a]={font:t,group:n,replace:r},i&&r&&(W[e][r]=W[e][a])}var j="main",X="ams",Z="bin",J="mathord",ee="op-token",te="rel";$("math",j,te,"≡","\\equiv",!0),$("math",j,te,"≺","\\prec",!0),$("math",j,te,"≻","\\succ",!0),$("math",j,te,"∼","\\sim",!0),$("math",j,te,"⊥","\\perp"),$("math",j,te,"⪯","\\preceq",!0),$("math",j,te,"⪰","\\succeq",!0),$("math",j,te,"≃","\\simeq",!0),$("math",j,te,"∣","\\mid",!0),$("math",j,te,"≪","\\ll",!0),$("math",j,te,"≫","\\gg",!0),$("math",j,te,"≍","\\asymp",!0),$("math",j,te,"∥","\\parallel"),$("math",j,te,"⋈","\\bowtie",!0),$("math",j,te,"⌣","\\smile",!0),$("math",j,te,"⊑","\\sqsubseteq",!0),$("math",j,te,"⊒","\\sqsupseteq",!0),$("math",j,te,"≐","\\doteq",!0),$("math",j,te,"⌢","\\frown",!0),$("math",j,te,"∋","\\ni",!0),$("math",j,te,"∝","\\propto",!0),$("math",j,te,"⊢","\\vdash",!0),$("math",j,te,"⊣","\\dashv",!0),$("math",j,te,"∋","\\owns"),$("math",j,"punct",".","\\ldotp"),$("math",j,"punct","⋅","\\cdotp"),$("math",j,"textord","#","\\#"),$("text",j,"textord","#","\\#"),$("math",j,"textord","&","\\&"),$("text",j,"textord","&","\\&"),$("math",j,"textord","ℵ","\\aleph",!0),$("math",j,"textord","∀","\\forall",!0),$("math",j,"textord","ℏ","\\hbar",!0),$("math",j,"textord","∃","\\exists",!0),$("math",j,"textord","∇","\\nabla",!0),$("math",j,"textord","♭","\\flat",!0),$("math",j,"textord","ℓ","\\ell",!0),$("math",j,"textord","♮","\\natural",!0),$("math",j,"textord","♣","\\clubsuit",!0),$("math",j,"textord","℘","\\wp",!0),$("math",j,"textord","♯","\\sharp",!0),$("math",j,"textord","♢","\\diamondsuit",!0),$("math",j,"textord","ℜ","\\Re",!0),$("math",j,"textord","♡","\\heartsuit",!0),$("math",j,"textord","ℑ","\\Im",!0),$("math",j,"textord","♠","\\spadesuit",!0),$("text",j,"textord","§","\\S",!0),$("text",j,"textord","¶","\\P",!0),$("math",j,"textord","†","\\dag"),$("text",j,"textord","†","\\dag"),$("text",j,"textord","†","\\textdagger"),$("math",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\ddag"),$("text",j,"textord","‡","\\textdaggerdbl"),$("math",j,"close","⎱","\\rmoustache",!0),$("math",j,"open","⎰","\\lmoustache",!0),$("math",j,"close","⟯","\\rgroup",!0),$("math",j,"open","⟮","\\lgroup",!0),$("math",j,Z,"∓","\\mp",!0),$("math",j,Z,"⊖","\\ominus",!0),$("math",j,Z,"⊎","\\uplus",!0),$("math",j,Z,"⊓","\\sqcap",!0),$("math",j,Z,"∗","\\ast"),$("math",j,Z,"⊔","\\sqcup",!0),$("math",j,Z,"◯","\\bigcirc"),$("math",j,Z,"∙","\\bullet"),$("math",j,Z,"‡","\\ddagger"),$("math",j,Z,"≀","\\wr",!0),$("math",j,Z,"⨿","\\amalg"),$("math",j,Z,"&","\\And"),$("math",j,te,"⟵","\\longleftarrow",!0),$("math",j,te,"⇐","\\Leftarrow",!0),$("math",j,te,"⟸","\\Longleftarrow",!0),$("math",j,te,"⟶","\\longrightarrow",!0),$("math",j,te,"⇒","\\Rightarrow",!0),$("math",j,te,"⟹","\\Longrightarrow",!0),$("math",j,te,"↔","\\leftrightarrow",!0),$("math",j,te,"⟷","\\longleftrightarrow",!0),$("math",j,te,"⇔","\\Leftrightarrow",!0),$("math",j,te,"⟺","\\Longleftrightarrow",!0),$("math",j,te,"↦","\\mapsto",!0),$("math",j,te,"⟼","\\longmapsto",!0),$("math",j,te,"↗","\\nearrow",!0),$("math",j,te,"↩","\\hookleftarrow",!0),$("math",j,te,"↪","\\hookrightarrow",!0),$("math",j,te,"↘","\\searrow",!0),$("math",j,te,"↼","\\leftharpoonup",!0),$("math",j,te,"⇀","\\rightharpoonup",!0),$("math",j,te,"↙","\\swarrow",!0),$("math",j,te,"↽","\\leftharpoondown",!0),$("math",j,te,"⇁","\\rightharpoondown",!0),$("math",j,te,"↖","\\nwarrow",!0),$("math",j,te,"⇌","\\rightleftharpoons",!0),$("math",X,te,"≮","\\nless",!0),$("math",X,te,"","\\@nleqslant"),$("math",X,te,"","\\@nleqq"),$("math",X,te,"⪇","\\lneq",!0),$("math",X,te,"≨","\\lneqq",!0),$("math",X,te,"","\\@lvertneqq"),$("math",X,te,"⋦","\\lnsim",!0),$("math",X,te,"⪉","\\lnapprox",!0),$("math",X,te,"⊀","\\nprec",!0),$("math",X,te,"⋠","\\npreceq",!0),$("math",X,te,"⋨","\\precnsim",!0),$("math",X,te,"⪹","\\precnapprox",!0),$("math",X,te,"≁","\\nsim",!0),$("math",X,te,"","\\@nshortmid"),$("math",X,te,"∤","\\nmid",!0),$("math",X,te,"⊬","\\nvdash",!0),$("math",X,te,"⊭","\\nvDash",!0),$("math",X,te,"⋪","\\ntriangleleft"),$("math",X,te,"⋬","\\ntrianglelefteq",!0),$("math",X,te,"⊊","\\subsetneq",!0),$("math",X,te,"","\\@varsubsetneq"),$("math",X,te,"⫋","\\subsetneqq",!0),$("math",X,te,"","\\@varsubsetneqq"),$("math",X,te,"≯","\\ngtr",!0),$("math",X,te,"","\\@ngeqslant"),$("math",X,te,"","\\@ngeqq"),$("math",X,te,"⪈","\\gneq",!0),$("math",X,te,"≩","\\gneqq",!0),$("math",X,te,"","\\@gvertneqq"),$("math",X,te,"⋧","\\gnsim",!0),$("math",X,te,"⪊","\\gnapprox",!0),$("math",X,te,"⊁","\\nsucc",!0),$("math",X,te,"⋡","\\nsucceq",!0),$("math",X,te,"⋩","\\succnsim",!0),$("math",X,te,"⪺","\\succnapprox",!0),$("math",X,te,"≆","\\ncong",!0),$("math",X,te,"","\\@nshortparallel"),$("math",X,te,"∦","\\nparallel",!0),$("math",X,te,"⊯","\\nVDash",!0),$("math",X,te,"⋫","\\ntriangleright"),$("math",X,te,"⋭","\\ntrianglerighteq",!0),$("math",X,te,"","\\@nsupseteqq"),$("math",X,te,"⊋","\\supsetneq",!0),$("math",X,te,"","\\@varsupsetneq"),$("math",X,te,"⫌","\\supsetneqq",!0),$("math",X,te,"","\\@varsupsetneqq"),$("math",X,te,"⊮","\\nVdash",!0),$("math",X,te,"⪵","\\precneqq",!0),$("math",X,te,"⪶","\\succneqq",!0),$("math",X,te,"","\\@nsubseteqq"),$("math",X,Z,"⊴","\\unlhd"),$("math",X,Z,"⊵","\\unrhd"),$("math",X,te,"↚","\\nleftarrow",!0),$("math",X,te,"↛","\\nrightarrow",!0),$("math",X,te,"⇍","\\nLeftarrow",!0),$("math",X,te,"⇏","\\nRightarrow",!0),$("math",X,te,"↮","\\nleftrightarrow",!0),$("math",X,te,"⇎","\\nLeftrightarrow",!0),$("math",X,te,"△","\\vartriangle"),$("math",X,"textord","ℏ","\\hslash"),$("math",X,"textord","▽","\\triangledown"),$("math",X,"textord","◊","\\lozenge"),$("math",X,"textord","Ⓢ","\\circledS"),$("math",X,"textord","®","\\circledR"),$("text",X,"textord","®","\\circledR"),$("math",X,"textord","∡","\\measuredangle",!0),$("math",X,"textord","∄","\\nexists"),$("math",X,"textord","℧","\\mho"),$("math",X,"textord","Ⅎ","\\Finv",!0),$("math",X,"textord","⅁","\\Game",!0),$("math",X,"textord","‵","\\backprime"),$("math",X,"textord","▲","\\blacktriangle"),$("math",X,"textord","▼","\\blacktriangledown"),$("math",X,"textord","■","\\blacksquare"),$("math",X,"textord","⧫","\\blacklozenge"),$("math",X,"textord","★","\\bigstar"),$("math",X,"textord","∢","\\sphericalangle",!0),$("math",X,"textord","∁","\\complement",!0),$("math",X,"textord","ð","\\eth",!0),$("math",X,"textord","╱","\\diagup"),$("math",X,"textord","╲","\\diagdown"),$("math",X,"textord","□","\\square"),$("math",X,"textord","□","\\Box"),$("math",X,"textord","◊","\\Diamond"),$("math",X,"textord","¥","\\yen",!0),$("text",X,"textord","¥","\\yen",!0),$("math",X,"textord","✓","\\checkmark",!0),$("text",X,"textord","✓","\\checkmark"),$("math",X,"textord","ℶ","\\beth",!0),$("math",X,"textord","ℸ","\\daleth",!0),$("math",X,"textord","ℷ","\\gimel",!0),$("math",X,"textord","ϝ","\\digamma",!0),$("math",X,"textord","ϰ","\\varkappa"),$("math",X,"open","┌","\\ulcorner",!0),$("math",X,"close","┐","\\urcorner",!0),$("math",X,"open","└","\\llcorner",!0),$("math",X,"close","┘","\\lrcorner",!0),$("math",X,te,"≦","\\leqq",!0),$("math",X,te,"⩽","\\leqslant",!0),$("math",X,te,"⪕","\\eqslantless",!0),$("math",X,te,"≲","\\lesssim",!0),$("math",X,te,"⪅","\\lessapprox",!0),$("math",X,te,"≊","\\approxeq",!0),$("math",X,Z,"⋖","\\lessdot"),$("math",X,te,"⋘","\\lll",!0),$("math",X,te,"≶","\\lessgtr",!0),$("math",X,te,"⋚","\\lesseqgtr",!0),$("math",X,te,"⪋","\\lesseqqgtr",!0),$("math",X,te,"≑","\\doteqdot"),$("math",X,te,"≓","\\risingdotseq",!0),$("math",X,te,"≒","\\fallingdotseq",!0),$("math",X,te,"∽","\\backsim",!0),$("math",X,te,"⋍","\\backsimeq",!0),$("math",X,te,"⫅","\\subseteqq",!0),$("math",X,te,"⋐","\\Subset",!0),$("math",X,te,"⊏","\\sqsubset",!0),$("math",X,te,"≼","\\preccurlyeq",!0),$("math",X,te,"⋞","\\curlyeqprec",!0),$("math",X,te,"≾","\\precsim",!0),$("math",X,te,"⪷","\\precapprox",!0),$("math",X,te,"⊲","\\vartriangleleft"),$("math",X,te,"⊴","\\trianglelefteq"),$("math",X,te,"⊨","\\vDash",!0),$("math",X,te,"⊪","\\Vvdash",!0),$("math",X,te,"⌣","\\smallsmile"),$("math",X,te,"⌢","\\smallfrown"),$("math",X,te,"≏","\\bumpeq",!0),$("math",X,te,"≎","\\Bumpeq",!0),$("math",X,te,"≧","\\geqq",!0),$("math",X,te,"⩾","\\geqslant",!0),$("math",X,te,"⪖","\\eqslantgtr",!0),$("math",X,te,"≳","\\gtrsim",!0),$("math",X,te,"⪆","\\gtrapprox",!0),$("math",X,Z,"⋗","\\gtrdot"),$("math",X,te,"⋙","\\ggg",!0),$("math",X,te,"≷","\\gtrless",!0),$("math",X,te,"⋛","\\gtreqless",!0),$("math",X,te,"⪌","\\gtreqqless",!0),$("math",X,te,"≖","\\eqcirc",!0),$("math",X,te,"≗","\\circeq",!0),$("math",X,te,"≜","\\triangleq",!0),$("math",X,te,"∼","\\thicksim"),$("math",X,te,"≈","\\thickapprox"),$("math",X,te,"⫆","\\supseteqq",!0),$("math",X,te,"⋑","\\Supset",!0),$("math",X,te,"⊐","\\sqsupset",!0),$("math",X,te,"≽","\\succcurlyeq",!0),$("math",X,te,"⋟","\\curlyeqsucc",!0),$("math",X,te,"≿","\\succsim",!0),$("math",X,te,"⪸","\\succapprox",!0),$("math",X,te,"⊳","\\vartriangleright"),$("math",X,te,"⊵","\\trianglerighteq"),$("math",X,te,"⊩","\\Vdash",!0),$("math",X,te,"∣","\\shortmid"),$("math",X,te,"∥","\\shortparallel"),$("math",X,te,"≬","\\between",!0),$("math",X,te,"⋔","\\pitchfork",!0),$("math",X,te,"∝","\\varpropto"),$("math",X,te,"◀","\\blacktriangleleft"),$("math",X,te,"∴","\\therefore",!0),$("math",X,te,"∍","\\backepsilon"),$("math",X,te,"▶","\\blacktriangleright"),$("math",X,te,"∵","\\because",!0),$("math",X,te,"⋘","\\llless"),$("math",X,te,"⋙","\\gggtr"),$("math",X,Z,"⊲","\\lhd"),$("math",X,Z,"⊳","\\rhd"),$("math",X,te,"≂","\\eqsim",!0),$("math",j,te,"⋈","\\Join"),$("math",X,te,"≑","\\Doteq",!0),$("math",X,Z,"∔","\\dotplus",!0),$("math",X,Z,"∖","\\smallsetminus"),$("math",X,Z,"⋒","\\Cap",!0),$("math",X,Z,"⋓","\\Cup",!0),$("math",X,Z,"⩞","\\doublebarwedge",!0),$("math",X,Z,"⊟","\\boxminus",!0),$("math",X,Z,"⊞","\\boxplus",!0),$("math",X,Z,"⋇","\\divideontimes",!0),$("math",X,Z,"⋉","\\ltimes",!0),$("math",X,Z,"⋊","\\rtimes",!0),$("math",X,Z,"⋋","\\leftthreetimes",!0),$("math",X,Z,"⋌","\\rightthreetimes",!0),$("math",X,Z,"⋏","\\curlywedge",!0),$("math",X,Z,"⋎","\\curlyvee",!0),$("math",X,Z,"⊝","\\circleddash",!0),$("math",X,Z,"⊛","\\circledast",!0),$("math",X,Z,"⋅","\\centerdot"),$("math",X,Z,"⊺","\\intercal",!0),$("math",X,Z,"⋒","\\doublecap"),$("math",X,Z,"⋓","\\doublecup"),$("math",X,Z,"⊠","\\boxtimes",!0),$("math",X,te,"⇢","\\dashrightarrow",!0),$("math",X,te,"⇠","\\dashleftarrow",!0),$("math",X,te,"⇇","\\leftleftarrows",!0),$("math",X,te,"⇆","\\leftrightarrows",!0),$("math",X,te,"⇚","\\Lleftarrow",!0),$("math",X,te,"↞","\\twoheadleftarrow",!0),$("math",X,te,"↢","\\leftarrowtail",!0),$("math",X,te,"↫","\\looparrowleft",!0),$("math",X,te,"⇋","\\leftrightharpoons",!0),$("math",X,te,"↶","\\curvearrowleft",!0),$("math",X,te,"↺","\\circlearrowleft",!0),$("math",X,te,"↰","\\Lsh",!0),$("math",X,te,"⇈","\\upuparrows",!0),$("math",X,te,"↿","\\upharpoonleft",!0),$("math",X,te,"⇃","\\downharpoonleft",!0),$("math",X,te,"⊸","\\multimap",!0),$("math",X,te,"↭","\\leftrightsquigarrow",!0),$("math",X,te,"⇉","\\rightrightarrows",!0),$("math",X,te,"⇄","\\rightleftarrows",!0),$("math",X,te,"↠","\\twoheadrightarrow",!0),$("math",X,te,"↣","\\rightarrowtail",!0),$("math",X,te,"↬","\\looparrowright",!0),$("math",X,te,"↷","\\curvearrowright",!0),$("math",X,te,"↻","\\circlearrowright",!0),$("math",X,te,"↱","\\Rsh",!0),$("math",X,te,"⇊","\\downdownarrows",!0),$("math",X,te,"↾","\\upharpoonright",!0),$("math",X,te,"⇂","\\downharpoonright",!0),$("math",X,te,"⇝","\\rightsquigarrow",!0),$("math",X,te,"⇝","\\leadsto"),$("math",X,te,"⇛","\\Rrightarrow",!0),$("math",X,te,"↾","\\restriction"),$("math",j,"textord","‘","`"),$("math",j,"textord","$","\\$"),$("text",j,"textord","$","\\$"),$("text",j,"textord","$","\\textdollar"),$("math",j,"textord","%","\\%"),$("text",j,"textord","%","\\%"),$("math",j,"textord","_","\\_"),$("text",j,"textord","_","\\_"),$("text",j,"textord","_","\\textunderscore"),$("math",j,"textord","∠","\\angle",!0),$("math",j,"textord","∞","\\infty",!0),$("math",j,"textord","′","\\prime"),$("math",j,"textord","△","\\triangle"),$("math",j,"textord","Γ","\\Gamma",!0),$("math",j,"textord","Δ","\\Delta",!0),$("math",j,"textord","Θ","\\Theta",!0),$("math",j,"textord","Λ","\\Lambda",!0),$("math",j,"textord","Ξ","\\Xi",!0),$("math",j,"textord","Π","\\Pi",!0),$("math",j,"textord","Σ","\\Sigma",!0),$("math",j,"textord","Υ","\\Upsilon",!0),$("math",j,"textord","Φ","\\Phi",!0),$("math",j,"textord","Ψ","\\Psi",!0),$("math",j,"textord","Ω","\\Omega",!0),$("math",j,"textord","A","Α"),$("math",j,"textord","B","Β"),$("math",j,"textord","E","Ε"),$("math",j,"textord","Z","Ζ"),$("math",j,"textord","H","Η"),$("math",j,"textord","I","Ι"),$("math",j,"textord","K","Κ"),$("math",j,"textord","M","Μ"),$("math",j,"textord","N","Ν"),$("math",j,"textord","O","Ο"),$("math",j,"textord","P","Ρ"),$("math",j,"textord","T","Τ"),$("math",j,"textord","X","Χ"),$("math",j,"textord","¬","\\neg",!0),$("math",j,"textord","¬","\\lnot"),$("math",j,"textord","⊤","\\top"),$("math",j,"textord","⊥","\\bot"),$("math",j,"textord","∅","\\emptyset"),$("math",X,"textord","∅","\\varnothing"),$("math",j,J,"α","\\alpha",!0),$("math",j,J,"β","\\beta",!0),$("math",j,J,"γ","\\gamma",!0),$("math",j,J,"δ","\\delta",!0),$("math",j,J,"ϵ","\\epsilon",!0),$("math",j,J,"ζ","\\zeta",!0),$("math",j,J,"η","\\eta",!0),$("math",j,J,"θ","\\theta",!0),$("math",j,J,"ι","\\iota",!0),$("math",j,J,"κ","\\kappa",!0),$("math",j,J,"λ","\\lambda",!0),$("math",j,J,"μ","\\mu",!0),$("math",j,J,"ν","\\nu",!0),$("math",j,J,"ξ","\\xi",!0),$("math",j,J,"ο","\\omicron",!0),$("math",j,J,"π","\\pi",!0),$("math",j,J,"ρ","\\rho",!0),$("math",j,J,"σ","\\sigma",!0),$("math",j,J,"τ","\\tau",!0),$("math",j,J,"υ","\\upsilon",!0),$("math",j,J,"ϕ","\\phi",!0),$("math",j,J,"χ","\\chi",!0),$("math",j,J,"ψ","\\psi",!0),$("math",j,J,"ω","\\omega",!0),$("math",j,J,"ε","\\varepsilon",!0),$("math",j,J,"ϑ","\\vartheta",!0),$("math",j,J,"ϖ","\\varpi",!0),$("math",j,J,"ϱ","\\varrho",!0),$("math",j,J,"ς","\\varsigma",!0),$("math",j,J,"φ","\\varphi",!0),$("math",j,Z,"∗","*"),$("math",j,Z,"+","+"),$("math",j,Z,"−","-"),$("math",j,Z,"⋅","\\cdot",!0),$("math",j,Z,"∘","\\circ"),$("math",j,Z,"÷","\\div",!0),$("math",j,Z,"±","\\pm",!0),$("math",j,Z,"×","\\times",!0),$("math",j,Z,"∩","\\cap",!0),$("math",j,Z,"∪","\\cup",!0),$("math",j,Z,"∖","\\setminus"),$("math",j,Z,"∧","\\land"),$("math",j,Z,"∨","\\lor"),$("math",j,Z,"∧","\\wedge",!0),$("math",j,Z,"∨","\\vee",!0),$("math",j,"textord","√","\\surd"),$("math",j,"open","(","("),$("math",j,"open","[","["),$("math",j,"open","⟨","\\langle",!0),$("math",j,"open","∣","\\lvert"),$("math",j,"open","∥","\\lVert"),$("math",j,"close",")",")"),$("math",j,"close","]","]"),$("math",j,"close","?","?"),$("math",j,"close","!","!"),$("math",j,"close","⟩","\\rangle",!0),$("math",j,"close","∣","\\rvert"),$("math",j,"close","∥","\\rVert"),$("math",j,te,"=","="),$("math",j,te,"<","<"),$("math",j,te,">",">"),$("math",j,te,":",":"),$("math",j,te,"≈","\\approx",!0),$("math",j,te,"≅","\\cong",!0),$("math",j,te,"≥","\\ge"),$("math",j,te,"≥","\\geq",!0),$("math",j,te,"←","\\gets"),$("math",j,te,">","\\gt"),$("math",j,te,"∈","\\in",!0),$("math",j,te,"","\\@not"),$("math",j,te,"⊂","\\subset",!0),$("math",j,te,"⊃","\\supset",!0),$("math",j,te,"⊆","\\subseteq",!0),$("math",j,te,"⊇","\\supseteq",!0),$("math",X,te,"⊈","\\nsubseteq",!0),$("math",X,te,"⊉","\\nsupseteq",!0),$("math",j,te,"⊨","\\models"),$("math",j,te,"←","\\leftarrow",!0),$("math",j,te,"≤","\\le"),$("math",j,te,"≤","\\leq",!0),$("math",j,te,"<","\\lt"),$("math",j,te,"→","\\rightarrow",!0),$("math",j,te,"→","\\to"),$("math",X,te,"≱","\\ngeq",!0),$("math",X,te,"≰","\\nleq",!0),$("math",j,"spacing"," ","\\ "),$("math",j,"spacing"," ","~"),$("math",j,"spacing"," ","\\space"),$("math",j,"spacing"," ","\\nobreakspace"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," ","~"),$("text",j,"spacing"," ","\\space"),$("text",j,"spacing"," ","\\nobreakspace"),$("math",j,"spacing",null,"\\nobreak"),$("math",j,"spacing",null,"\\allowbreak"),$("math",j,"punct",",",","),$("math",j,"punct",";",";"),$("math",X,Z,"⊼","\\barwedge",!0),$("math",X,Z,"⊻","\\veebar",!0),$("math",j,Z,"⊙","\\odot",!0),$("math",j,Z,"⊕","\\oplus",!0),$("math",j,Z,"⊗","\\otimes",!0),$("math",j,"textord","∂","\\partial",!0),$("math",j,Z,"⊘","\\oslash",!0),$("math",X,Z,"⊚","\\circledcirc",!0),$("math",X,Z,"⊡","\\boxdot",!0),$("math",j,Z,"△","\\bigtriangleup"),$("math",j,Z,"▽","\\bigtriangledown"),$("math",j,Z,"†","\\dagger"),$("math",j,Z,"⋄","\\diamond"),$("math",j,Z,"⋆","\\star"),$("math",j,Z,"◃","\\triangleleft"),$("math",j,Z,"▹","\\triangleright"),$("math",j,"open","{","\\{"),$("text",j,"textord","{","\\{"),$("text",j,"textord","{","\\textbraceleft"),$("math",j,"close","}","\\}"),$("text",j,"textord","}","\\}"),$("text",j,"textord","}","\\textbraceright"),$("math",j,"open","{","\\lbrace"),$("math",j,"close","}","\\rbrace"),$("math",j,"open","[","\\lbrack"),$("text",j,"textord","[","\\lbrack"),$("math",j,"close","]","\\rbrack"),$("text",j,"textord","]","\\rbrack"),$("math",j,"open","(","\\lparen"),$("math",j,"close",")","\\rparen"),$("text",j,"textord","<","\\textless"),$("text",j,"textord",">","\\textgreater"),$("math",j,"open","⌊","\\lfloor",!0),$("math",j,"close","⌋","\\rfloor",!0),$("math",j,"open","⌈","\\lceil",!0),$("math",j,"close","⌉","\\rceil",!0),$("math",j,"textord","\\","\\backslash"),$("math",j,"textord","∣","|"),$("math",j,"textord","∣","\\vert"),$("text",j,"textord","|","\\textbar"),$("math",j,"textord","∥","\\|"),$("math",j,"textord","∥","\\Vert"),$("text",j,"textord","∥","\\textbardbl"),$("text",j,"textord","~","\\textasciitilde"),$("text",j,"textord","\\","\\textbackslash"),$("text",j,"textord","^","\\textasciicircum"),$("math",j,te,"↑","\\uparrow",!0),$("math",j,te,"⇑","\\Uparrow",!0),$("math",j,te,"↓","\\downarrow",!0),$("math",j,te,"⇓","\\Downarrow",!0),$("math",j,te,"↕","\\updownarrow",!0),$("math",j,te,"⇕","\\Updownarrow",!0),$("math",j,ee,"∐","\\coprod"),$("math",j,ee,"⋁","\\bigvee"),$("math",j,ee,"⋀","\\bigwedge"),$("math",j,ee,"⨄","\\biguplus"),$("math",j,ee,"⋂","\\bigcap"),$("math",j,ee,"⋃","\\bigcup"),$("math",j,ee,"∫","\\int"),$("math",j,ee,"∫","\\intop"),$("math",j,ee,"∬","\\iint"),$("math",j,ee,"∭","\\iiint"),$("math",j,ee,"∏","\\prod"),$("math",j,ee,"∑","\\sum"),$("math",j,ee,"⨂","\\bigotimes"),$("math",j,ee,"⨁","\\bigoplus"),$("math",j,ee,"⨀","\\bigodot"),$("math",j,ee,"∮","\\oint"),$("math",j,ee,"∯","\\oiint"),$("math",j,ee,"∰","\\oiiint"),$("math",j,ee,"⨆","\\bigsqcup"),$("math",j,ee,"∫","\\smallint"),$("text",j,"inner","…","\\textellipsis"),$("math",j,"inner","…","\\mathellipsis"),$("text",j,"inner","…","\\ldots",!0),$("math",j,"inner","…","\\ldots",!0),$("math",j,"inner","⋯","\\@cdots",!0),$("math",j,"inner","⋱","\\ddots",!0),$("math",j,"textord","⋮","\\varvdots"),$("math",j,"accent-token","ˊ","\\acute"),$("math",j,"accent-token","ˋ","\\grave"),$("math",j,"accent-token","¨","\\ddot"),$("math",j,"accent-token","~","\\tilde"),$("math",j,"accent-token","ˉ","\\bar"),$("math",j,"accent-token","˘","\\breve"),$("math",j,"accent-token","ˇ","\\check"),$("math",j,"accent-token","^","\\hat"),$("math",j,"accent-token","⃗","\\vec"),$("math",j,"accent-token","˙","\\dot"),$("math",j,"accent-token","˚","\\mathring"),$("math",j,J,"ı","\\imath",!0),$("math",j,J,"ȷ","\\jmath",!0),$("text",j,"textord","ı","\\i",!0),$("text",j,"textord","ȷ","\\j",!0),$("text",j,"textord","ß","\\ss",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","æ","\\ae",!0),$("text",j,"textord","œ","\\oe",!0),$("text",j,"textord","ø","\\o",!0),$("text",j,"textord","Æ","\\AE",!0),$("text",j,"textord","Œ","\\OE",!0),$("text",j,"textord","Ø","\\O",!0),$("text",j,"accent-token","ˊ","\\'"),$("text",j,"accent-token","ˋ","\\`"),$("text",j,"accent-token","ˆ","\\^"),$("text",j,"accent-token","˜","\\~"),$("text",j,"accent-token","ˉ","\\="),$("text",j,"accent-token","˘","\\u"),$("text",j,"accent-token","˙","\\."),$("text",j,"accent-token","˚","\\r"),$("text",j,"accent-token","ˇ","\\v"),$("text",j,"accent-token","¨",'\\"'),$("text",j,"accent-token","˝","\\H"),$("text",j,"accent-token","◯","\\textcircled");var ne={"--":!0,"---":!0,"``":!0,"''":!0};$("text",j,"textord","–","--"),$("text",j,"textord","–","\\textendash"),$("text",j,"textord","—","---"),$("text",j,"textord","—","\\textemdash"),$("text",j,"textord","‘","`"),$("text",j,"textord","‘","\\textquoteleft"),$("text",j,"textord","’","'"),$("text",j,"textord","’","\\textquoteright"),$("text",j,"textord","“","``"),$("text",j,"textord","“","\\textquotedblleft"),$("text",j,"textord","”","''"),$("text",j,"textord","”","\\textquotedblright"),$("math",j,"textord","°","\\degree",!0),$("text",j,"textord","°","\\degree"),$("text",j,"textord","°","\\textdegree",!0),$("math",j,J,"£","\\pounds"),$("math",j,J,"£","\\mathsterling",!0),$("text",j,J,"£","\\pounds"),$("text",j,J,"£","\\textsterling",!0),$("math",X,"textord","✠","\\maltese"),$("text",X,"textord","✠","\\maltese"),$("text",j,"spacing"," ","\\ "),$("text",j,"spacing"," "," "),$("text",j,"spacing"," ","~");for(var re=0;re<'0123456789/@."'.length;re++){var ae='0123456789/@."'.charAt(re);$("math",j,"textord",ae,ae)}for(var ie=0;ie<'0123456789!@*()-=+[]<>|";:?/.,'.length;ie++){var oe='0123456789!@*()-=+[]<>|";:?/.,'.charAt(ie);$("text",j,"textord",oe,oe)}for(var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",le=0;le<se.length;le++){var ce=se.charAt(le);$("math",j,J,ce,ce),$("text",j,"textord",ce,ce)}$("math",X,"textord","C","ℂ"),$("text",X,"textord","C","ℂ"),$("math",X,"textord","H","ℍ"),$("text",X,"textord","H","ℍ"),$("math",X,"textord","N","ℕ"),$("text",X,"textord","N","ℕ"),$("math",X,"textord","P","ℙ"),$("text",X,"textord","P","ℙ"),$("math",X,"textord","Q","ℚ"),$("text",X,"textord","Q","ℚ"),$("math",X,"textord","R","ℝ"),$("text",X,"textord","R","ℝ"),$("math",X,"textord","Z","ℤ"),$("text",X,"textord","Z","ℤ"),$("math",j,J,"h","ℎ"),$("text",j,J,"h","ℎ");for(var de="",_e=0;_e<se.length;_e++){var ue=se.charAt(_e);$("math",j,J,ue,de=String.fromCharCode(55349,56320+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56372+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56424+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56580+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56736+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56788+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56840+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56944+_e)),$("text",j,"textord",ue,de),_e<26&&($("math",j,J,ue,de=String.fromCharCode(55349,56632+_e)),$("text",j,"textord",ue,de),$("math",j,J,ue,de=String.fromCharCode(55349,56476+_e)),$("text",j,"textord",ue,de))}$("math",j,J,"k",de=String.fromCharCode(55349,56668)),$("text",j,"textord","k",de);for(var me=0;me<10;me++){var pe=me.toString();$("math",j,J,pe,de=String.fromCharCode(55349,57294+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57314+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57324+me)),$("text",j,"textord",pe,de),$("math",j,J,pe,de=String.fromCharCode(55349,57334+me)),$("text",j,"textord",pe,de)}for(var ge=0;ge<"ÇÐÞçþ".length;ge++){var Ee="ÇÐÞçþ".charAt(ge);$("math",j,J,Ee,Ee),$("text",j,"textord",Ee,Ee)}$("text",j,"textord","ð","ð"),$("text",j,"textord","–","–"),$("text",j,"textord","—","—"),$("text",j,"textord","‘","‘"),$("text",j,"textord","’","’"),$("text",j,"textord","“","“"),$("text",j,"textord","”","”");var he=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Se=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],fe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Te=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],be=function(e,t){return t.size<2?e:fe[e-1][t.size-1]},Ce=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Te[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);return new e(n)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:be(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Te[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var n=be(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!z[t=e>=5?0:e>=3?1:2]){var n=z[t]={cssEmPerMu:H.quad[t]/18};for(var r in H)H.hasOwnProperty(r)&&(n[r]=H[r][t])}return z[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();Ce.BASESIZE=6;var Ne=Ce,ve={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Re={ex:!0,em:!0,mu:!0},Oe=function(e){return"string"!=typeof e&&(e=e.unit),e in ve||e in Re||"ex"===e},Ae=function(e,t){var n;if(e.unit in ve)n=ve[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)n=t.fontMetrics().cssEmPerMu;else{var r;if(r=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)n=r.fontMetrics().xHeight;else{if("em"!==e.unit)throw new o("Invalid unit: '"+e.unit+"'");n=r.fontMetrics().quad}r!==t&&(n*=r.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)},ye=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],Ie=function(e,t,n){return Q[n][e]&&Q[n][e].replace&&(e=Q[n][e].replace),{value:e,metrics:V(e,t,n)}},De=function(e,t,n,r,a){var i,o=Ie(e,t,n),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===n||r&&"mathit"===r.font)&&(l=0),i=new P(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+n+"'"),i=new P(e,0,0,0,0,0,a);if(r){i.maxFontSize=r.sizeMultiplier,r.style.isTight()&&i.classes.push("mtight");var c=r.getColor();c&&(i.style.color=c)}return i},xe=function(e,t){if(A(e.classes)!==A(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;return!0},Me=function(e){for(var t=0,n=0,r=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>n&&(n=i.depth),i.maxFontSize>r&&(r=i.maxFontSize)}e.height=t,e.depth=n,e.maxFontSize=r},we=function(e,t,n,r){var a=new x(e,t,n,r);return Me(a),a},Le=function(e,t,n,r){return new x(e,t,n,r)},Pe=function(e){var t=new O(e);return Me(t),t},ke=function(e,t,n){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}return r+"-"+("textbf"===t&&"textit"===n?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ue={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Fe={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ge={fontMap:Ue,makeSymbol:De,mathsym:function(e,t,n,r){return void 0===r&&(r=[]),"boldsymbol"===n.font&&Ie(e,"Main-Bold",t).metrics?De(e,"Main-Bold",t,n,r.concat(["mathbf"])):"\\"===e||"main"===Q[t][e].font?De(e,"Main-Regular",t,n,r):De(e,"AMS-Regular",t,n,r.concat(["amsrm"]))},makeSpan:we,makeSvgSpan:Le,makeLineSpan:function(e,t,n){var r=we([e],[],t);return r.height=Math.max(n||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),r.style.borderBottomWidth=r.height+"em",r.maxFontSize=1,r},makeAnchor:function(e,t,n,r){var a=new M(e,t,n,r);return Me(a),a},makeFragment:Pe,wrapFragment:function(e,t){return e instanceof O?we([],[e],t):e},makeVList:function(e,t){for(var n=function(e){if("individualShift"===e.positionType){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,a=r,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,n.push({type:"kern",size:s}),n.push(t[i])}return{children:n,depth:r}}var l;if("top"===e.positionType){for(var c=e.positionData,d=0;d<e.children.length;d++){var _=e.children[d];c-="kern"===_.type?_.size:_.elem.height+_.elem.depth}l=c}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),r=n.children,a=n.depth,i=0,o=0;o<r.length;o++){var s=r[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var c=we(["pstrut"],[]);c.style.height=i+"em";for(var d=[],_=a,u=a,m=a,p=0;p<r.length;p++){var g=r[p];if("kern"===g.type)m+=g.size;else{var E=g.elem,h=g.wrapperClasses||[],S=g.wrapperStyle||{},f=we(h,[c,E],void 0,S);f.style.top=-i-m-E.depth+"em",g.marginLeft&&(f.style.marginLeft=g.marginLeft),g.marginRight&&(f.style.marginRight=g.marginRight),d.push(f),m+=E.height+E.depth}_=Math.min(_,m),u=Math.max(u,m)}var T,b=we(["vlist"],d);if(b.style.height=u+"em",_<0){var C=we([],[]),N=we(["vlist"],[C]);N.style.height=-_+"em";var v=we(["vlist-s"],[new P("​")]);T=[we(["vlist-r"],[b,v]),we(["vlist-r"],[N])]}else T=[we(["vlist-r"],[b])];var R=we(["vlist-t"],T);return 2===T.length&&R.classes.push("vlist-t2"),R.height=u,R.depth=-_,R},makeOrd:function(e,t,n){var r,a=e.mode,i=e.text,s=["mord"],l="math"===a||"text"===a&&t.font,c=l?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var d=function(e,t){var n=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,r="math"===t?0:1;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return[he[a][2],he[a][r]]}if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return[Se[i][2],Se[i][r]]}if(120485===n||120486===n)return[he[0][2],he[0][r]];if(120486<n&&n<120782)return["",""];throw new o("Unsupported character: "+e)}(i,a),u=d[0],m=d[1];return De(i,u,a,t,s.concat(m))}if(c){var p,g;if("boldsymbol"===c||"mathnormal"===c){var E="boldsymbol"===c?function(e,t,n,r){return Ie(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a):(r=i,_.contains(ye,r)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(r.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});p=E.fontName,g=[E.fontClass]}else _.contains(ye,i)?(p="Main-Italic",g=["mathit"]):l?(p=Ue[c].fontName,g=[c]):(p=ke(c,t.fontWeight,t.fontShape),g=[c,t.fontWeight,t.fontShape]);if(Ie(i,p,a).metrics)return De(i,p,a,t,s.concat(g));if(ne.hasOwnProperty(i)&&"Typewriter"===p.substr(0,10)){for(var h=[],S=0;S<i.length;S++)h.push(De(i[S],p,a,t,s.concat(g)));return Pe(h)}}if("mathord"===n){var f=function(e,t,n,r){return/[0-9]/.test(e.charAt(0))||_.contains(ye,e)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return De(i,f.fontName,a,t,s.concat([f.fontClass]))}if("textord"===n){var T=Q[a][i]&&Q[a][i].font;if("ams"===T){var b=ke("amsrm",t.fontWeight,t.fontShape);return De(i,b,a,t,s.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==T&&T){var C=ke(T,t.fontWeight,t.fontShape);return De(i,C,a,t,s.concat(C,t.fontWeight,t.fontShape))}var N=ke("textrm",t.fontWeight,t.fontShape);return De(i,N,a,t,s.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+n+" in makeOrd")},makeGlue:function(e,t){var n=we(["mspace"],[],t),r=Ae(e,t);return n.style.marginRight=r+"em",n},staticSvg:function(e,t){var n=Fe[e],r=n[0],a=n[1],i=n[2],o=new U(r),s=new k([o],{width:a+"em",height:i+"em",style:"width:"+a+"em",viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=Le(["overlay"],[s],t);return l.height=i,l.style.height=i+"em",l.style.width=a+"em",l},svgData:Fe,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var n=e[t],r=e[t+1];n instanceof P&&r instanceof P&&xe(n,r)&&(n.text+=r.text,n.height=Math.max(n.height,r.height),n.depth=Math.max(n.depth,r.depth),n.italic=r.italic,e.splice(t+1,1),t--)}return e}};function Be(e,t){var n=He(e,t);if(!n)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return n}function He(e,t){return e&&e.type===t?e:null}function Ye(e,t){var n=function(e,t){return e&&"atom"===e.type&&e.family===t?e:null}(e,t);if(!n)throw new Error('Expected node of type "atom" and family "'+t+'", but got '+(e?"atom"===e.type?"atom of family "+e.family:"node of type "+e.type:String(e)));return n}function Ve(e){var t=ze(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function ze(e){return e&&("atom"===e.type||K.hasOwnProperty(e.type))?e:null}var qe={number:3,unit:"mu"},Ke={number:4,unit:"mu"},We={number:5,unit:"mu"},Qe={mord:{mop:qe,mbin:Ke,mrel:We,minner:qe},mop:{mord:qe,mop:qe,mrel:We,minner:qe},mbin:{mord:Ke,mop:Ke,mopen:Ke,minner:Ke},mrel:{mord:We,mop:We,mopen:We,minner:We},mopen:{},mclose:{mop:qe,mbin:Ke,mrel:We,minner:qe},mpunct:{mord:qe,mop:qe,mrel:We,mopen:qe,mclose:qe,mpunct:qe,minner:qe},minner:{mord:qe,mop:qe,mbin:Ke,mrel:We,mopen:qe,mpunct:qe,minner:qe}},$e={mord:{mop:qe},mop:{mord:qe,mop:qe},mbin:{},mrel:{},mopen:{},mclose:{mop:qe},mpunct:{},minner:{mop:qe}},je={},Xe={},Ze={};function Je(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs,argTypes:r.argTypes,greediness:void 0===r.greediness?1:r.greediness,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a},l=0;l<n.length;++l)je[n[l]]=s;t&&(i&&(Xe[t]=i),o&&(Ze[t]=o))}function et(e){Je({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var tt=function(e){var t=He(e,"ordgroup");return t?t.body:[e]},nt=Ge.makeSpan,rt=["leftmost","mbin","mopen","mrel","mop","mpunct"],at=["rightmost","mrel","mclose","mpunct"],it={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT},ot={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},st=function(e,t,n,r){void 0===r&&(r=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=ut(e[i],t);if(o instanceof O){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(!n)return a;var l=t;if(1===e.length){var c=He(e[0],"sizing")||He(e[0],"styling");c&&("sizing"===c.type?l=t.havingSize(c.size):"styling"===c.type&&(l=t.havingStyle(it[c.style])))}var d=nt([r[0]||"leftmost"],[],t),u=nt([r[1]||"rightmost"],[],t);return lt(a,(function(e,t){var n=t.classes[0],r=e.classes[0];"mbin"===n&&_.contains(at,r)?t.classes[0]="mord":"mbin"===r&&_.contains(rt,n)&&(e.classes[0]="mord")}),{node:d},u),lt(a,(function(e,t){var n=dt(t),r=dt(e),a=n&&r?e.hasClass("mtight")?$e[n][r]:Qe[n][r]:null;if(a)return Ge.makeGlue(a,l)}),{node:d},u),a},lt=function e(t,n,r,a){a&&t.push(a);for(var i=0;i<t.length;i++){var o=t[i],s=ct(o);if(s)e(s.children,n,r);else if("mspace"!==o.classes[0]){var l=n(o,r.node);l&&(r.insertAfter?r.insertAfter(l):(t.unshift(l),i++)),r.node=o,r.insertAfter=function(e){return function(n){t.splice(e+1,0,n),i++}}(i)}}a&&t.pop()},ct=function(e){return e instanceof O||e instanceof M?e:null},dt=function(e,t){return e?(t&&(e=function e(t,n){var r=ct(t);if(r){var a=r.children;if(a.length){if("right"===n)return e(a[a.length-1],"right");if("left"===n)return e(a[0],"left")}}return t}(e,t)),ot[e.classes[0]]||null):null},_t=function(e,t){var n=["nulldelimiter"].concat(e.baseSizingClasses());return nt(t.concat(n))},ut=function(e,t,n){if(!e)return nt();if(Xe[e.type]){var r=Xe[e.type](e,t);if(n&&t.size!==n.size){r=nt(t.sizingClasses(n),[r],t);var a=t.sizeMultiplier/n.sizeMultiplier;r.height*=a,r.depth*=a}return r}throw new o("Got group of unknown type: '"+e.type+"'")};function mt(e,t){var n=nt(["base"],e,t),r=nt(["strut"]);return r.style.height=n.height+n.depth+"em",r.style.verticalAlign=-n.depth+"em",n.children.unshift(r),n}function pt(e,t){var n=null;1===e.length&&"tag"===e[0].type&&(n=e[0].tag,e=e[0].body);for(var r,a=st(e,t,!0),i=[],o=[],s=0;s<a.length;s++)if(o.push(a[s]),a[s].hasClass("mbin")||a[s].hasClass("mrel")||a[s].hasClass("allowbreak")){for(var l=!1;s<a.length-1&&a[s+1].hasClass("mspace")&&!a[s+1].hasClass("newline");)s++,o.push(a[s]),a[s].hasClass("nobreak")&&(l=!0);l||(i.push(mt(o,t)),o=[])}else a[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(mt(o,t)),o=[]),i.push(a[s]));o.length>0&&i.push(mt(o,t)),n&&((r=mt(st(n,t,!0))).classes=["tag"],i.push(r));var c=nt(["katex-html"],i);if(c.setAttribute("aria-hidden","true"),r){var d=r.children[0];d.style.height=c.height+c.depth+"em",d.style.verticalAlign=-c.depth+"em"}return c}function gt(e){return new O(e)}var Et=function(){function e(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=_.escape(this.attributes[t]),e+='"');e+=">";for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map((function(e){return e.toText()})).join("")},e}(),ht=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return _.escape(this.toText())},t.toText=function(){return this.text},e}(),St={MathNode:Et,TextNode:ht,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":e>=-.05556&&e<=-.05555?" ⁣":e>=-.1667&&e<=-.1666?" ⁣":e>=-.2223&&e<=-.2222?" ⁣":e>=-.2778&&e<=-.2777?" ⁣":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:gt},ft=function(e,t,n){return!Q[t][e]||!Q[t][e].replace||55349===e.charCodeAt(0)||ne.hasOwnProperty(e)&&n&&(n.fontFamily&&"tt"===n.fontFamily.substr(4,2)||n.font&&"tt"===n.font.substr(4,2))||(e=Q[t][e].replace),new St.TextNode(e)},Tt=function(e){return 1===e.length?e[0]:new St.MathNode("mrow",e)},bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var n=t.font;if(!n||"mathnormal"===n)return null;var r=e.mode;if("mathit"===n)return"italic";if("boldsymbol"===n)return"bold-italic";if("mathbf"===n)return"bold";if("mathbb"===n)return"double-struck";if("mathfrak"===n)return"fraktur";if("mathscr"===n||"mathcal"===n)return"script";if("mathsf"===n)return"sans-serif";if("mathtt"===n)return"monospace";var a=e.text;return _.contains(["\\imath","\\jmath"],a)?null:(Q[r][a]&&Q[r][a].replace&&(a=Q[r][a].replace),V(a,Ge.fontMap[n].fontName,r)?Ge.fontMap[n].variant:null)},Ct=function(e,t,n){if(1===e.length){var r=vt(e[0],t);return n&&r instanceof Et&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var a,i=[],o=0;o<e.length;o++){var s=vt(e[o],t);if(s instanceof Et&&a instanceof Et){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var c;(c=a.children).push.apply(c,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var d=s.children[0];if(d instanceof ht&&"."===d.text){var _;(_=a.children).push.apply(_,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof ht&&"̸"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof ht&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Nt=function(e,t,n){return Tt(Ct(e,t,n))},vt=function(e,t){if(!e)return new St.MathNode("mrow");if(Ze[e.type])return Ze[e.type](e,t);throw new o("Got group of unknown type: '"+e.type+"'")};function Rt(e,t,n,r){var a,i=Ct(e,n);a=1===i.length&&i[0]instanceof Et&&_.contains(["mrow","mtable"],i[0].type)?i[0]:new St.MathNode("mrow",i);var o=new St.MathNode("annotation",[new St.TextNode(t)]);o.setAttribute("encoding","application/x-tex");var s=new St.MathNode("semantics",[a,o]),l=new St.MathNode("math",[s]);l.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var c=r?"katex":"katex-mathml";return Ge.makeSpan([c],[l])}var Ot=function(e){return new Ne({style:e.displayMode?b.DISPLAY:b.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},At=function(e,t){if(t.displayMode){var n=["katex-display"];t.leqno&&n.push("leqno"),t.fleqn&&n.push("fleqn"),e=Ge.makeSpan(n,[e])}return e},yt={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋"},It={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Dt=function(e){return"ordgroup"===e.type?e.body.length:1},xt=function(e,t,n,r){var a,i=e.height+e.depth+2*n;if(/fbox|color/.test(t)){if(a=Ge.makeSpan(["stretchy",t],[],r),"fbox"===t){var o=r.color&&r.getColor();o&&(a.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(t)&&s.push(new F({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&s.push(new F({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var l=new k(s,{width:"100%",height:i+"em"});a=Ge.makeSvgSpan([],[l],r)}return a.height=i,a.style.height=i+"em",a},Mt=function(e){var t=new St.MathNode("mo",[new St.TextNode(yt[e.substr(1)])]);return t.setAttribute("stretchy","true"),t},wt=function(e,t){var n=function(){var n=4e5,r=e.label.substr(1);if(_.contains(["widehat","widecheck","widetilde","utilde"],r)){var a,i,o,s=Dt(e.base);if(s>5)"widehat"===r||"widecheck"===r?(a=420,n=2364,o=.42,i=r+"4"):(a=312,n=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===r||"widecheck"===r?(n=[0,1062,2364,2364,2364][l],a=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=r+l):(n=[0,600,1033,2339,2340][l],a=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var c=new U(i),d=new k([c],{width:"100%",height:o+"em",viewBox:"0 0 "+n+" "+a,preserveAspectRatio:"none"});return{span:Ge.makeSvgSpan([],[d],t),minWidth:0,height:o}}var u,m,p=[],g=It[r],E=g[0],h=g[1],S=g[2],f=S/1e3,T=E.length;if(1===T)u=["hide-tail"],m=[g[3]];else if(2===T)u=["halfarrow-left","halfarrow-right"],m=["xMinYMin","xMaxYMin"];else{if(3!==T)throw new Error("Correct katexImagesData or update code here to support\n "+T+" children.");u=["brace-left","brace-center","brace-right"],m=["xMinYMin","xMidYMin","xMaxYMin"]}for(var b=0;b<T;b++){var C=new U(E[b]),N=new k([C],{width:"400em",height:f+"em",viewBox:"0 0 "+n+" "+S,preserveAspectRatio:m[b]+" slice"}),v=Ge.makeSvgSpan([u[b]],[N],t);if(1===T)return{span:v,minWidth:h,height:f};v.style.height=f+"em",p.push(v)}return{span:Ge.makeSpan(["stretchy"],p,t),minWidth:h,height:f}}(),r=n.span,a=n.minWidth,i=n.height;return r.height=i,r.style.height=i+"em",a>0&&(r.style.minWidth=a+"em"),r},Lt=function(e,t){var n,r,a,i=He(e,"supsub");i?(n=(r=Be(i.base,"accent")).base,i.base=n,a=function(e){if(e instanceof x)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(ut(i,t)),i.base=r):n=(r=Be(e,"accent")).base;var o=ut(n,t.havingCrampedStyle()),s=0;if(r.isShifty&&_.isCharacterBox(n)){var l=_.getBaseElem(n);s=G(ut(l,t.havingCrampedStyle())).skew}var c,d=Math.min(o.height,t.fontMetrics().xHeight);if(r.isStretchy)c=wt(r,t),c=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:c,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},t);else{var u,m;"\\vec"===r.label?(u=Ge.staticSvg("vec",t),m=Ge.svgData.vec[1]):((u=G(u=Ge.makeOrd({mode:r.mode,text:r.label},t,"textord"))).italic=0,m=u.width),c=Ge.makeSpan(["accent-body"],[u]);var p="\\textcircled"===r.label;p&&(c.classes.push("accent-full"),d=o.height);var g=s;p||(g-=m/2),c.style.left=g+"em","\\textcircled"===r.label&&(c.style.top=".2em"),c=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-d},{type:"elem",elem:c}]},t)}var E=Ge.makeSpan(["mord","accent"],[c],t);return a?(a.children[0]=E,a.height=Math.max(E.height,a.height),a.classes[0]="mord",a):E},Pt=function(e,t){var n=e.isStretchy?Mt(e.label):new St.MathNode("mo",[ft(e.label,e.mode)]),r=new St.MathNode("mover",[vt(e.base,t),n]);return r.setAttribute("accent","true"),r},kt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((function(e){return"\\"+e})).join("|"));Je({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var n=t[0],r=!kt.test(e.funcName),a=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:a,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=t[0];return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:Lt,mathmlBuilder:Pt}),Je({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"accentUnder",mode:n.mode,label:r,base:a}},htmlBuilder:function(e,t){var n=ut(e.base,t),r=wt(e,t),a="\\utilde"===e.label?.12:0,i=Ge.makeVList({positionType:"bottom",positionData:r.height+a,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:n}]},t);return Ge.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var n=Mt(e.label),r=new St.MathNode("munder",[vt(e.base,t),n]);return r.setAttribute("accentunder","true"),r}});var Ut=function(e){var t=new St.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Je({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName;return{type:"xArrow",mode:r.mode,label:a,body:t[0],below:n[0]}},htmlBuilder:function(e,t){var n,r=t.style,a=t.havingStyle(r.sup()),i=Ge.wrapFragment(ut(e.body,a,t),t);i.classes.push("x-arrow-pad"),e.below&&(a=t.havingStyle(r.sub()),(n=Ge.wrapFragment(ut(e.below,a,t),t)).classes.push("x-arrow-pad"));var o,s=wt(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=i.depth),n){var d=-t.fontMetrics().axisHeight+n.height+.5*s.height+.111;o=Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l},{type:"elem",elem:n,shift:d}]},t)}else o=Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:s,shift:l}]},t);return o.children[0].children[0].children[1].classes.push("svg-align"),Ge.makeSpan(["mrel","x-arrow"],[o],t)},mathmlBuilder:function(e,t){var n,r=Mt(e.label);if(e.body){var a=Ut(vt(e.body,t));if(e.below){var i=Ut(vt(e.below,t));n=new St.MathNode("munderover",[r,i,a])}else n=new St.MathNode("mover",[r,a])}else if(e.below){var o=Ut(vt(e.below,t));n=new St.MathNode("munder",[r,o])}else n=Ut(),n=new St.MathNode("mover",[r,n]);return n}}),Je({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var n=e.parser,r=Be(t[0],"ordgroup").body,a="",i=0;i<r.length;i++){a+=Be(r[i],"textord").text}var s=parseInt(a);if(isNaN(s))throw new o("\\@char has non-numeric argument "+a);return{type:"textord",mode:n.mode,text:String.fromCharCode(s)}}});var Ft=function(e,t){var n=st(e.body,t.withColor(e.color),!1);return Ge.makeFragment(n)},Gt=function(e,t){var n=Ct(e.body,t.withColor(e.color)),r=new St.MathNode("mstyle",n);return r.setAttribute("mathcolor",e.color),r};Je({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(e,t){var n=e.parser,r=Be(t[0],"color-token").color,a=t[1];return{type:"color",mode:n.mode,color:r,body:tt(a)}},htmlBuilder:Ft,mathmlBuilder:Gt}),Je({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(e,t){var n=e.parser,r=e.breakOnTokenText,a=Be(t[0],"color-token").color;n.gullet.macros.set("\\current@color",a);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:a,body:i}},htmlBuilder:Ft,mathmlBuilder:Gt}),Je({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=n[0],o="\\cr"===a,s=!1;return o||(s=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:r.mode,newLine:s,newRow:o,size:i&&Be(i,"size").value}},htmlBuilder:function(e,t){if(e.newRow)throw new o("\\cr valid only within a tabular/array environment");var n=Ge.makeSpan(["mspace"],[],t);return e.newLine&&(n.classes.push("newline"),e.size&&(n.style.marginTop=Ae(e.size,t)+"em")),n},mathmlBuilder:function(e,t){var n=new St.MathNode("mspace");return e.newLine&&(n.setAttribute("linebreak","newline"),e.size&&n.setAttribute("height",Ae(e.size,t)+"em")),n}});var Bt=function(e,t,n){var r=V(Q.math[e]&&Q.math[e].replace||e,t,n);if(!r)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return r},Ht=function(e,t,n,r){var a=n.havingBaseStyle(t),i=Ge.makeSpan(r.concat(a.sizingClasses(n)),[e],n),o=a.sizeMultiplier/n.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},Yt=function(e,t,n){var r=t.havingBaseStyle(n),a=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=a+"em",e.height-=a,e.depth+=a},Vt=function(e,t,n,r,a,i){var o=function(e,t,n,r){return Ge.makeSymbol(e,"Size"+t+"-Regular",n,r)}(e,t,a,r),s=Ht(Ge.makeSpan(["delimsizing","size"+t],[o],r),b.TEXT,r,i);return n&&Yt(s,r,b.TEXT),s},zt=function(e,t,n){var r;return r="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Ge.makeSpan(["delimsizinginner",r],[Ge.makeSpan([],[Ge.makeSymbol(e,t,n)])])}},qt={type:"kern",size:-.005},Kt=function(e,t,n,r,a,i){var o,s,l,c;o=l=c=e,s=null;var d="Size1-Regular";"\\uparrow"===e?l=c="⏐":"\\Uparrow"===e?l=c="‖":"\\downarrow"===e?o=l="⏐":"\\Downarrow"===e?o=l="‖":"\\updownarrow"===e?(o="\\uparrow",l="⏐",c="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="‖",c="\\Downarrow"):"["===e||"\\lbrack"===e?(o="⎡",l="⎢",c="⎣",d="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="⎤",l="⎥",c="⎦",d="Size4-Regular"):"\\lfloor"===e||"⌊"===e?(l=o="⎢",c="⎣",d="Size4-Regular"):"\\lceil"===e||"⌈"===e?(o="⎡",l=c="⎢",d="Size4-Regular"):"\\rfloor"===e||"⌋"===e?(l=o="⎥",c="⎦",d="Size4-Regular"):"\\rceil"===e||"⌉"===e?(o="⎤",l=c="⎥",d="Size4-Regular"):"("===e||"\\lparen"===e?(o="⎛",l="⎜",c="⎝",d="Size4-Regular"):")"===e||"\\rparen"===e?(o="⎞",l="⎟",c="⎠",d="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",c="⎩",l="⎪",d="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",c="⎭",l="⎪",d="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",c="⎩",l="⎪",d="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",c="⎭",l="⎪",d="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",c="⎭",l="⎪",d="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",c="⎩",l="⎪",d="Size4-Regular");var _=Bt(o,d,a),u=_.height+_.depth,m=Bt(l,d,a),p=m.height+m.depth,g=Bt(c,d,a),E=g.height+g.depth,h=0,S=1;if(null!==s){var f=Bt(s,d,a);h=f.height+f.depth,S=2}var T=u+E+h,C=Math.max(0,Math.ceil((t-T)/(S*p))),N=T+C*S*p,v=r.fontMetrics().axisHeight;n&&(v*=r.sizeMultiplier);var R=N/2-v,O=.005*(C+1)-p,A=[];if(A.push(zt(c,d,a)),null===s)for(var y=0;y<C;y++)A.push(qt),A.push(zt(l,d,a));else{for(var I=0;I<C;I++)A.push(qt),A.push(zt(l,d,a));A.push({type:"kern",size:O}),A.push(zt(l,d,a)),A.push(qt),A.push(zt(s,d,a));for(var D=0;D<C;D++)A.push(qt),A.push(zt(l,d,a))}A.push({type:"kern",size:O}),A.push(zt(l,d,a)),A.push(qt),A.push(zt(o,d,a));var x=r.havingBaseStyle(b.TEXT),M=Ge.makeVList({positionType:"bottom",positionData:R,children:A},x);return Ht(Ge.makeSpan(["delimsizing","mult"],[M],x),b.TEXT,r,i)},Wt=function(e,t,n,r,a){var i=function(e,t,n){t*=1e3;var r="";switch(e){case"sqrtMain":r=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize1":r=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize2":r=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize3":r=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,80);break;case"sqrtSize4":r=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,80);break;case"sqrtTall":r=function(e,t,n){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(n-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,80,n)}return r}(e,r,n),o=new U(e,i),s=new k([o],{width:"400em",height:t+"em",viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Ge.makeSvgSpan(["hide-tail"],[s],a)},Qt=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],$t=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jt=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Xt=[0,1.2,1.8,2.4,3],Zt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Jt=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"stack"}],en=[{type:"small",style:b.SCRIPTSCRIPT},{type:"small",style:b.SCRIPT},{type:"small",style:b.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],tn=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},nn=function(e,t,n,r){for(var a=Math.min(2,3-r.style.size);a<n.length&&"stack"!==n[a].type;a++){var i=Bt(e,tn(n[a]),"math"),o=i.height+i.depth;if("small"===n[a].type&&(o*=r.havingBaseStyle(n[a].style).sizeMultiplier),o>t)return n[a]}return n[n.length-1]},rn=function(e,t,n,r,a,i){var o;"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),o=_.contains(jt,e)?Zt:_.contains(Qt,e)?en:Jt;var s=nn(e,t,o,r);return"small"===s.type?function(e,t,n,r,a,i){var o=Ge.makeSymbol(e,"Main-Regular",a,r),s=Ht(o,t,r,i);return n&&Yt(s,r,t),s}(e,s.style,n,r,a,i):"large"===s.type?Vt(e,s.size,n,r,a,i):Kt(e,t,n,r,a,i)},an=function(e,t){var n,r,a=t.havingBaseSizing(),i=nn("\\surd",e*a.sizeMultiplier,en,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,c=0,d=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),c=(1+s)/o,(n=Wt("sqrtMain",l=(1+s+.08)/o,d=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",r=.833/o):"large"===i.type?(d=1080*Xt[i.size],c=(Xt[i.size]+s)/o,l=(Xt[i.size]+s+.08)/o,(n=Wt("sqrtSize"+i.size,l,d,s,t)).style.minWidth="1.02em",r=1/o):(l=e+s+.08,c=e+s,d=Math.floor(1e3*e+s)+80,(n=Wt("sqrtTall",l,d,s,t)).style.minWidth="0.742em",r=1.056),n.height=c,n.style.height=l+"em",{span:n,advanceWidth:r,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},on=function(e,t,n,r,a){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),_.contains(Qt,e)||_.contains(jt,e))return Vt(e,t,!1,n,r,a);if(_.contains($t,e))return Kt(e,Xt[t],!1,n,r,a);throw new o("Illegal delimiter: '"+e+"'")},sn=rn,ln=function(e,t,n,r,a,i){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o),c=Math.max(l/500*901,2*l-s);return rn(e,c,!0,r,a,i)},cn={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},dn=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function _n(e,t){var n=ze(e);if(n&&_.contains(dn,n.text))return n;throw new o("Invalid delimiter: '"+(n?n.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function un(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Je({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cn[e.funcName].size,mclass:cn[e.funcName].mclass,delim:n.text}},htmlBuilder:function(e,t){return"."===e.delim?Ge.makeSpan([e.mclass]):on(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(ft(e.delim,e.mode));var n=new St.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n}}),Je({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){var n=e.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:_n(t[0],e).text,color:n}}}),Je({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e),r=e.parser;++r.leftrightDepth;var a=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=Be(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:a,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){un(e);for(var n,r,a=st(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,n="."===e.left?_t(t,["mopen"]):ln(e.left,i,o,t,e.mode,["mopen"]),a.unshift(n),s)for(var c=1;c<a.length;c++){var d=a[c].isMiddle;d&&(a[c]=ln(d.delim,i,o,d.options,e.mode,[]))}if("."===e.right)r=_t(t,["mclose"]);else{var _=e.rightColor?t.withColor(e.rightColor):t;r=ln(e.right,i,o,_,e.mode,["mclose"])}return a.push(r),Ge.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){un(e);var n=Ct(e.body,t);if("."!==e.left){var r=new St.MathNode("mo",[ft(e.left,e.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if("."!==e.right){var a=new St.MathNode("mo",[ft(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),n.push(a)}return Tt(n)}}),Je({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(e,t){var n=_n(t[0],e);if(!e.parser.leftrightDepth)throw new o("\\middle without preceding \\left",n);return{type:"middle",mode:e.parser.mode,delim:n.text}},htmlBuilder:function(e,t){var n;if("."===e.delim)n=_t(t,[]);else{n=on(e.delim,1,t,e.mode,[]);var r={delim:e.delim,options:t};n.isMiddle=r}return n},mathmlBuilder:function(e,t){var n="\\vert"===e.delim||"|"===e.delim?ft("|","text"):ft(e.delim,e.mode),r=new St.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var mn=function(e,t){var n,r,a=Ge.wrapFragment(ut(e.body,t),t),i=e.label.substr(1),o=t.sizeMultiplier,s=0,l=_.isCharacterBox(e.body);if("sout"===i)(n=Ge.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/o,s=-.5*t.fontMetrics().xHeight;else{/cancel/.test(i)?l||a.classes.push("cancel-pad"):a.classes.push("boxpad");var c=0,d=0;/box/.test(i)?(d=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),c=t.fontMetrics().fboxsep+("colorbox"===i?0:d)):c=l?.2:0,n=xt(a,i,c,t),/fbox|boxed|fcolorbox/.test(i)&&(n.style.borderStyle="solid",n.style.borderWidth=d+"em"),s=a.depth+c,e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor,e.borderColor&&(n.style.borderColor=e.borderColor))}return r=e.backgroundColor?Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:s},{type:"elem",elem:a,shift:0}]},t):Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},t),/cancel/.test(i)&&(r.height=a.height,r.depth=a.depth),/cancel/.test(i)&&!l?Ge.makeSpan(["mord","cancel-lap"],[r],t):Ge.makeSpan(["mord"],[r],t)},pn=function(e,t){var n=0,r=new St.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[vt(e.body,t)]);switch(e.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};Je({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Be(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:r.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=Be(t[0],"color-token").color,o=Be(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:r.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:mn,mathmlBuilder:pn}),Je({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),Je({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(e,t,n){var r=e.parser,a=e.funcName,i=t[0];return{type:"enclose",mode:r.mode,label:a,body:i}},htmlBuilder:mn,mathmlBuilder:pn});var gn={};function En(e){for(var t=e.type,n=e.names,r=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<n.length;++l)gn[n[l]]=s;i&&(Xe[t]=i),o&&(Ze[t]=o)}function hn(e){var t=[];e.consumeSpaces();for(var n=e.fetch().text;"\\hline"===n||"\\hdashline"===n;)e.consume(),t.push("\\hdashline"===n),e.consumeSpaces(),n=e.fetch().text;return t}function Sn(e,t,n){var r=t.hskipBeforeAndAfter,a=t.addJot,i=t.cols,s=t.arraystretch,l=t.colSeparationType;if(e.gullet.beginGroup(),e.gullet.macros.set("\\\\","\\cr"),!s){var c=e.gullet.expandMacroAsText("\\arraystretch");if(null==c)s=1;else if(!(s=parseFloat(c))||s<0)throw new o("Invalid \\arraystretch: "+c)}e.gullet.beginGroup();var d=[],_=[d],u=[],m=[];for(m.push(hn(e));;){var p=e.parseExpression(!1,"\\cr");e.gullet.endGroup(),e.gullet.beginGroup(),p={type:"ordgroup",mode:e.mode,body:p},n&&(p={type:"styling",mode:e.mode,style:n,body:[p]}),d.push(p);var g=e.fetch().text;if("&"===g)e.consume();else{if("\\end"===g){1===d.length&&"styling"===p.type&&0===p.body[0].body.length&&_.pop(),m.length<_.length+1&&m.push([]);break}if("\\cr"!==g)throw new o("Expected & or \\\\ or \\cr or \\end",e.nextToken);var E=Be(e.parseFunction(),"cr");u.push(E.size),m.push(hn(e)),d=[],_.push(d)}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:a,arraystretch:s,body:_,cols:i,rowGaps:u,hskipBeforeAndAfter:r,hLinesBeforeRow:m,colSeparationType:l}}function fn(e){return"d"===e.substr(0,1)?"display":"text"}var Tn=function(e,t){var n,r,a=e.body.length,i=e.hLinesBeforeRow,s=0,l=new Array(a),c=[],d=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,m=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(m=t.havingStyle(b.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var p=12*u,g=3*u,E=e.arraystretch*p,h=.7*E,S=.3*E,f=0;function T(e){for(var t=0;t<e.length;++t)t>0&&(f+=.25),c.push({pos:f,isDashed:e[t]})}for(T(i[0]),n=0;n<e.body.length;++n){var C=e.body[n],N=h,v=S;s<C.length&&(s=C.length);var R=new Array(C.length);for(r=0;r<C.length;++r){var O=ut(C[r],t);v<O.depth&&(v=O.depth),N<O.height&&(N=O.height),R[r]=O}var A=e.rowGaps[n],y=0;A&&(y=Ae(A,t))>0&&(v<(y+=S)&&(v=y),y=0),e.addJot&&(v+=g),R.height=N,R.depth=v,f+=N,R.pos=f,f+=v+y,l[n]=R,T(i[n+1])}var I,D,x=f/2+t.fontMetrics().axisHeight,M=e.cols||[],w=[];for(r=0,D=0;r<s||D<M.length;++r,++D){for(var L=M[D]||{},P=!0;"separator"===L.type;){if(P||((I=Ge.makeSpan(["arraycolsep"],[])).style.width=t.fontMetrics().doubleRuleSep+"em",w.push(I)),"|"!==L.separator&&":"!==L.separator)throw new o("Invalid separator type: "+L.separator);var k="|"===L.separator?"solid":"dashed",U=Ge.makeSpan(["vertical-separator"],[],t);U.style.height=f+"em",U.style.borderRightWidth=d+"em",U.style.borderRightStyle=k,U.style.margin="0 -"+d/2+"em",U.style.verticalAlign=-(f-x)+"em",w.push(U),L=M[++D]||{},P=!1}if(!(r>=s)){var F=void 0;(r>0||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.pregap,m))&&((I=Ge.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I));var G=[];for(n=0;n<a;++n){var B=l[n],H=B[r];if(H){var Y=B.pos-x;H.depth=B.depth,H.height=B.height,G.push({type:"elem",elem:H,shift:Y})}}G=Ge.makeVList({positionType:"individualShift",children:G},t),G=Ge.makeSpan(["col-align-"+(L.align||"c")],[G]),w.push(G),(r<s-1||e.hskipBeforeAndAfter)&&0!==(F=_.deflt(L.postgap,m))&&((I=Ge.makeSpan(["arraycolsep"],[])).style.width=F+"em",w.push(I))}}if(l=Ge.makeSpan(["mtable"],w),c.length>0){for(var V=Ge.makeLineSpan("hline",t,d),z=Ge.makeLineSpan("hdashline",t,d),q=[{type:"elem",elem:l,shift:0}];c.length>0;){var K=c.pop(),W=K.pos-x;K.isDashed?q.push({type:"elem",elem:z,shift:W}):q.push({type:"elem",elem:V,shift:W})}l=Ge.makeVList({positionType:"individualShift",children:q},t)}return Ge.makeSpan(["mord"],[l],t)},bn={c:"center ",l:"left ",r:"right "},Cn=function(e,t){var n=new St.MathNode("mtable",e.body.map((function(e){return new St.MathNode("mtr",e.map((function(e){return new St.MathNode("mtd",[vt(e,t)])})))}))),r=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);n.setAttribute("rowspacing",r+"em");var a="",i="";if(e.cols){var o=e.cols,s="",l=!1,c=0,d=o.length;"separator"===o[0].type&&(a+="top ",c=1),"separator"===o[o.length-1].type&&(a+="bottom ",d-=1);for(var _=c;_<d;_++)"align"===o[_].type?(i+=bn[o[_].align],l&&(s+="none "),l=!0):"separator"===o[_].type&&l&&(s+="|"===o[_].separator?"solid ":"dashed ",l=!1);n.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&n.setAttribute("columnlines",s.trim())}if("align"===e.colSeparationType){for(var u=e.cols||[],m="",p=1;p<u.length;p++)m+=p%2?"0em ":"1em ";n.setAttribute("columnspacing",m.trim())}else"alignat"===e.colSeparationType?n.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?n.setAttribute("columnspacing","0.2778em"):n.setAttribute("columnspacing","1em");var g="",E=e.hLinesBeforeRow;a+=E[0].length>0?"left ":"",a+=E[E.length-1].length>0?"right ":"";for(var h=1;h<E.length-1;h++)g+=0===E[h].length?"none ":E[h][0]?"dashed ":"solid ";return/[sd]/.test(g)&&n.setAttribute("rowlines",g.trim()),""!==a&&(n=new St.MathNode("menclose",[n])).setAttribute("notation",a.trim()),e.arraystretch&&e.arraystretch<1&&(n=new St.MathNode("mstyle",[n])).setAttribute("scriptlevel","1"),n},Nn=function(e,t){var n,r=[],a=Sn(e.parser,{cols:r,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:e.mode,body:[]},l=He(t[0],"ordgroup");if(l){for(var c="",d=0;d<l.body.length;d++){c+=Be(l.body[d],"textord").text}n=Number(c),i=2*n}var _=!i;a.body.forEach((function(e){for(var t=1;t<e.length;t+=2){var r=Be(e[t],"styling");Be(r.body[0],"ordgroup").body.unshift(s)}if(_)i<e.length&&(i=e.length);else{var a=e.length/2;if(n<a)throw new o("Too many math in a row: expected "+n+", but got "+a,e[0])}}));for(var u=0;u<i;++u){var m="r",p=0;u%2==1?m="l":u>0&&_&&(p=1),r[u]={type:"align",align:m,pregap:p,postgap:0}}return a.colSeparationType=_?"align":"alignat",a};En({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var n={cols:(ze(t[0])?[t[0]]:Be(t[0],"ordgroup").body).map((function(e){var t=Ve(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+t,e)})),hskipBeforeAndAfter:!0};return Sn(e.parser,n,fn(e.envName))},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName],n=Sn(e.parser,{hskipBeforeAndAfter:!1},fn(e.envName));return t?{type:"leftright",mode:e.mode,body:[n],left:t[0],right:t[1],rightColor:void 0}:n},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var n=(ze(t[0])?[t[0]]:Be(t[0],"ordgroup").body).map((function(e){var t=Ve(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new o("Unknown column alignment: "+t,e)}));if(n.length>1)throw new o("{subarray} can contain only one column");var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if((r=Sn(e.parser,r,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return r},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(e){var t=Sn(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},fn(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["aligned"],props:{numArgs:0},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["gathered"],props:{numArgs:0},handler:function(e){return Sn(e.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:Tn,mathmlBuilder:Cn}),En({type:"array",names:["alignedat"],props:{numArgs:1},handler:Nn,htmlBuilder:Tn,mathmlBuilder:Cn}),Je({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new o(e.funcName+" valid only within array environment")}});var vn=gn;Je({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];if("ordgroup"!==a.type)throw new o("Invalid environment name",a);for(var i="",s=0;s<a.body.length;++s)i+=Be(a.body[s],"textord").text;if("\\begin"===r){if(!vn.hasOwnProperty(i))throw new o("No such environment: "+i,a);var l=vn[i],c=n.parseArguments("\\begin{"+i+"}",l),d=c.args,_=c.optArgs,u={mode:n.mode,envName:i,parser:n},m=l.handler(u,d,_);n.expect("\\end",!1);var p=n.nextToken,g=Be(n.parseFunction(),"environment");if(g.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+g.name+"}",p);return m}return{type:"environment",mode:n.mode,name:i,nameGroup:a}}});var Rn=Ge.makeSpan;function On(e,t){var n=st(e.body,t,!0);return Rn([e.mclass],n,t)}function An(e,t){var n,r=Ct(e.body,t);return"minner"===e.mclass?St.newDocumentFragment(r):("mord"===e.mclass?e.isCharacterBox?(n=r[0]).type="mi":n=new St.MathNode("mi",r):(e.isCharacterBox?(n=r[0]).type="mo":n=new St.MathNode("mo",r),"mbin"===e.mclass?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):"mpunct"===e.mclass?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):"mopen"!==e.mclass&&"mclose"!==e.mclass||(n.attributes.lspace="0em",n.attributes.rspace="0em")),n)}Je({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.substr(5),body:tt(a),isCharacterBox:_.isCharacterBox(a)}},htmlBuilder:On,mathmlBuilder:An});var yn=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};Je({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:yn(t[0]),body:[t[1]],isCharacterBox:_.isCharacterBox(t[1])}}}),Je({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[1],o=t[0];n="\\stackrel"!==a?yn(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:tt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:r.mode,mclass:n,body:[l],isCharacterBox:_.isCharacterBox(l)}},htmlBuilder:On,mathmlBuilder:An});var In=function(e,t){var n=e.font,r=t.withFont(n);return ut(e.body,r)},Dn=function(e,t){var n=e.font,r=t.withFont(n);return vt(e.body,r)},xn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Je({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0],i=r;return i in xn&&(i=xn[i]),{type:"font",mode:n.mode,font:i.slice(1),body:a}},htmlBuilder:In,mathmlBuilder:Dn}),Je({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(e,t){var n=e.parser,r=t[0],a=_.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:yn(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:a}}}),Je({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=e.breakOnTokenText,i=n.mode,o=n.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+r.slice(1),body:{type:"ordgroup",mode:n.mode,body:o}}},htmlBuilder:In,mathmlBuilder:Dn});var Mn=function(e,t){var n=t;return"display"===e?n=n.id>=b.SCRIPT.id?n.text():b.DISPLAY:"text"===e&&n.size===b.DISPLAY.size?n=b.TEXT:"script"===e?n=b.SCRIPT:"scriptscript"===e&&(n=b.SCRIPTSCRIPT),n},wn=function(e,t){var n,r=Mn(e.size,t.style),a=r.fracNum(),i=r.fracDen();n=t.havingStyle(a);var o=ut(e.numer,n,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}n=t.havingStyle(i);var c,d,_,u,m,p,g,E,h,S,f=ut(e.denom,n,t);if(e.hasBarLine?(e.barSize?(d=Ae(e.barSize,t),c=Ge.makeLineSpan("frac-line",t,d)):c=Ge.makeLineSpan("frac-line",t),d=c.height,_=c.height):(c=null,d=0,_=t.fontMetrics().defaultRuleThickness),r.size===b.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,m=d>0?3*_:7*_,p=t.fontMetrics().denom1):(d>0?(u=t.fontMetrics().num2,m=_):(u=t.fontMetrics().num3,m=3*_),p=t.fontMetrics().denom2),c){var T=t.fontMetrics().axisHeight;u-o.depth-(T+.5*d)<m&&(u+=m-(u-o.depth-(T+.5*d))),T-.5*d-(f.height-p)<m&&(p+=m-(T-.5*d-(f.height-p)));var C=-(T-.5*d);g=Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:c,shift:C},{type:"elem",elem:o,shift:-u}]},t)}else{var N=u-o.depth-(f.height-p);N<m&&(u+=.5*(m-N),p+=.5*(m-N)),g=Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:f,shift:p},{type:"elem",elem:o,shift:-u}]},t)}return n=t.havingStyle(r),g.height*=n.sizeMultiplier/t.sizeMultiplier,g.depth*=n.sizeMultiplier/t.sizeMultiplier,E=r.size===b.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2,h=null==e.leftDelim?_t(t,["mopen"]):sn(e.leftDelim,E,!0,t.havingStyle(r),e.mode,["mopen"]),S=e.continued?Ge.makeSpan([]):null==e.rightDelim?_t(t,["mclose"]):sn(e.rightDelim,E,!0,t.havingStyle(r),e.mode,["mclose"]),Ge.makeSpan(["mord"].concat(n.sizingClasses(t)),[h,Ge.makeSpan(["mfrac"],[g]),S],t)},Ln=function(e,t){var n=new St.MathNode("mfrac",[vt(e.numer,t),vt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var r=Ae(e.barSize,t);n.setAttribute("linethickness",r+"em")}}else n.setAttribute("linethickness","0px");var a=Mn(e.size,t.style);if(a.size!==t.style.size){n=new St.MathNode("mstyle",[n]);var i=a.size===b.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new St.MathNode("mo",[new St.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(n),null!=e.rightDelim){var l=new St.MathNode("mo",[new St.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Tt(o)}return n};Je({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(e,t){var n,r=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,c="auto";switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":n=!0;break;case"\\\\atopfrac":n=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":n=!1,s="(",l=")";break;case"\\\\bracefrac":n=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":n=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\cfrac":case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text"}return{type:"genfrac",mode:r.mode,continued:"\\cfrac"===a,numer:i,denom:o,hasBarLine:n,leftDelim:s,rightDelim:l,size:c,barSize:null}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,n=e.parser,r=e.funcName,a=e.token;switch(r){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:n.mode,replaceWith:t,token:a}}});var Pn=["display","text","script","scriptscript"],kn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};Je({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var n=e.parser,r=t[4],a=t[5],i=He(t[0],"atom");i&&(i=Ye(t[0],"open"));var o=i?kn(i.text):null,s=He(t[1],"atom");s&&(s=Ye(t[1],"close"));var l,c=s?kn(s.text):null,d=Be(t[2],"size"),_=null;l=!!d.isBlank||(_=d.value).number>0;var u="auto",m=He(t[3],"ordgroup");if(m){if(m.body.length>0){var p=Be(m.body[0],"textord");u=Pn[Number(p.text)]}}else m=Be(t[3],"textord"),u=Pn[Number(m.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:l,barSize:_,leftDelim:o,rightDelim:c,size:u}},htmlBuilder:wn,mathmlBuilder:Ln}),Je({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var n=e.parser,r=(e.funcName,e.token);return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:Be(t[0],"size").value,token:r}}}),Je({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var n=e.parser,r=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Be(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:wn,mathmlBuilder:Ln});var Un=function(e,t){var n,r,a=t.style,i=He(e,"supsub");i?(n=i.sup?ut(i.sup,t.havingStyle(a.sup()),t):ut(i.sub,t.havingStyle(a.sub()),t),r=Be(i.base,"horizBrace")):r=Be(e,"horizBrace");var o,s=ut(r.base,t.havingBaseStyle(b.DISPLAY)),l=wt(r,t);if(r.isOver?(o=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(o=Ge.makeVList({positionType:"bottom",positionData:s.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[0].classes.push("svg-align"),n){var c=Ge.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t);o=r.isOver?Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Ge.makeVList({positionType:"bottom",positionData:c.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:c}]},t)}return Ge.makeSpan(["mord",r.isOver?"mover":"munder"],[o],t)};Je({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:t[0]}},htmlBuilder:Un,mathmlBuilder:function(e,t){var n=Mt(e.label);return new St.MathNode(e.isOver?"mover":"munder",[vt(e.base,t),n])}}),Je({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[1],a=Be(t[0],"url").url;return n.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:n.mode,href:a,body:tt(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var n=st(e.body,t,!1);return Ge.makeAnchor(e.href,[],n,t)},mathmlBuilder:function(e,t){var n=Nt(e.body,t);return n instanceof Et||(n=new Et("mrow",[n])),n.setAttribute("href",e.href),n}}),Je({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Be(t[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:n.mode,font:"\\texttt",body:a};return{type:"href",mode:n.mode,href:r,body:tt(s)}}}),Je({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:tt(t[0]),mathml:tt(t[1])}},htmlBuilder:function(e,t){var n=st(e.html,t,!1);return Ge.makeFragment(n)},mathmlBuilder:function(e,t){return Nt(e.mathml,t)}});var Fn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new o("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(t[1]+t[2]),unit:t[3]};if(!Oe(n))throw new o("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Je({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,n){var r=e.parser,a={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(n[0])for(var c=Be(n[0],"raw").string.split(","),d=0;d<c.length;d++){var _=c[d].split("=");if(2===_.length){var u=_[1].trim();switch(_[0].trim()){case"alt":l=u;break;case"width":a=Fn(u);break;case"height":i=Fn(u);break;case"totalheight":s=Fn(u);break;default:throw new o("Invalid key: '"+_[0]+"' in \\includegraphics.")}}}var m=Be(t[0],"url").url;return""===l&&(l=(l=(l=m).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),r.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:r.mode,alt:l,width:a,height:i,totalheight:s,src:m}:r.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var n=Ae(e.height,t),r=0;e.totalheight.number>0&&(r=Ae(e.totalheight,t)-n,r=Number(r.toFixed(2)));var a=0;e.width.number>0&&(a=Ae(e.width,t));var i={height:n+r+"em"};a>0&&(i.width=a+"em"),r>0&&(i.verticalAlign=-r+"em");var o=new w(e.src,e.alt,i);return o.height=n,o.depth=r,o},mathmlBuilder:function(e,t){var n=new St.MathNode("mglyph",[]);n.setAttribute("alt",e.alt);var r=Ae(e.height,t),a=0;if(e.totalheight.number>0&&(a=(a=Ae(e.totalheight,t)-r).toFixed(2),n.setAttribute("valign","-"+a+"em")),n.setAttribute("height",r+a+"em"),e.width.number>0){var i=Ae(e.width,t);n.setAttribute("width",i+"em")}return n.setAttribute("src",e.src),n}}),Je({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=Be(t[0],"size");if(n.settings.strict){var i="m"===r[1],o="mu"===a.value.unit;i?(o||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, not "+a.value.unit+" units"),"math"!==n.mode&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):o&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:a.value}},htmlBuilder:function(e,t){return Ge.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var n=Ae(e.dimension,t);return new St.SpaceNode(n)}}),Je({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:a}},htmlBuilder:function(e,t){var n;"clap"===e.alignment?(n=Ge.makeSpan([],[ut(e.body,t)]),n=Ge.makeSpan(["inner"],[n],t)):n=Ge.makeSpan(["inner"],[ut(e.body,t)]);var r=Ge.makeSpan(["fix"],[]),a=Ge.makeSpan([e.alignment],[n,r],t),i=Ge.makeSpan(["strut"]);return i.style.height=a.height+a.depth+"em",i.style.verticalAlign=-a.depth+"em",a.children.unshift(i),a=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a}]},t),Ge.makeSpan(["mord"],[a],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);if("rlap"!==e.alignment){var r="llap"===e.alignment?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}}),Je({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var n=e.funcName,r=e.parser,a=r.mode;r.switchMode("math");var i="\\("===n?"\\)":"$",o=r.parseExpression(!1,i);return r.expect(i),r.switchMode(a),{type:"styling",mode:r.mode,style:"text",body:o}}}),Je({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new o("Mismatched "+e.funcName)}});var Gn=function(e,t){switch(t.style.size){case b.DISPLAY.size:return e.display;case b.TEXT.size:return e.text;case b.SCRIPT.size:return e.script;case b.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Je({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:tt(t[0]),text:tt(t[1]),script:tt(t[2]),scriptscript:tt(t[3])}},htmlBuilder:function(e,t){var n=Gn(e,t),r=st(n,t,!1);return Ge.makeFragment(r)},mathmlBuilder:function(e,t){var n=Gn(e,t);return Nt(n,t)}});var Bn=function(e,t,n,r,a,i,o){var s,l,c;if(e=Ge.makeSpan([],[e]),t){var d=ut(t,r.havingStyle(a.sup()),r);l={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-d.depth)}}if(n){var _=ut(n,r.havingStyle(a.sub()),r);s={elem:_,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-_.height)}}if(l&&s){var u=r.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;c=Ge.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(s){var m=e.height-o;c=Ge.makeVList({positionType:"top",positionData:m,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:e}]},r)}else{if(!l)return e;var p=e.depth+o;c=Ge.makeVList({positionType:"bottom",positionData:p,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:i+"em"},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}return Ge.makeSpan(["mop","op-limits"],[c],r)},Hn=["\\smallint"],Yn=function(e,t){var n,r,a,i=!1,o=He(e,"supsub");o?(n=o.sup,r=o.sub,a=Be(o.base,"op"),i=!0):a=Be(e,"op");var s,l=t.style,c=!1;if(l.size===b.DISPLAY.size&&a.symbol&&!_.contains(Hn,a.name)&&(c=!0),a.symbol){var d=c?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(u=a.name.substr(1),a.name="oiint"===u?"\\iint":"\\iiint"),s=Ge.makeSymbol(a.name,d,"math",t,["mop","op-symbol",c?"large-op":"small-op"]),u.length>0){var m=s.italic,p=Ge.staticSvg(u+"Size"+(c?"2":"1"),t);s=Ge.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:c?.08:0}]},t),a.name="\\"+u,s.classes.unshift("mop"),s.italic=m}}else if(a.body){var g=st(a.body,t,!0);1===g.length&&g[0]instanceof P?(s=g[0]).classes[0]="mop":s=Ge.makeSpan(["mop"],Ge.tryCombineChars(g),t)}else{for(var E=[],h=1;h<a.name.length;h++)E.push(Ge.mathsym(a.name[h],a.mode,t));s=Ge.makeSpan(["mop"],E,t)}var S=0,f=0;return(s instanceof P||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(S=(s.height-s.depth)/2-t.fontMetrics().axisHeight,f=s.italic),i?Bn(s,n,r,t,l,f,S):(S&&(s.style.position="relative",s.style.top=S+"em"),s)},Vn=function(e,t){var n;if(e.symbol)n=new Et("mo",[ft(e.name,e.mode)]),_.contains(Hn,e.name)&&n.setAttribute("largeop","false");else if(e.body)n=new Et("mo",Ct(e.body,t));else{n=new Et("mi",[new ht(e.name.slice(1))]);var r=new Et("mo",[ft("⁡","text")]);n=e.parentIsSupSub?new Et("mo",[n,r]):gt([n,r])}return n},zn={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Je({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:function(e,t){var n=e.parser,r=e.funcName;return 1===r.length&&(r=zn[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:tt(r)}},htmlBuilder:Yn,mathmlBuilder:Vn});var qn={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Je({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn}),Je({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler:function(e){var t=e.parser,n=e.funcName;return 1===n.length&&(n=qn[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Yn,mathmlBuilder:Vn});var Kn=function(e,t){var n,r,a,i,o=!1,s=He(e,"supsub");if(s?(n=s.sup,r=s.sub,a=Be(s.base,"operatorname"),o=!0):a=Be(e,"operatorname"),a.body.length>0){for(var l=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),c=st(l,t.withFont("mathrm"),!0),d=0;d<c.length;d++){var _=c[d];_ instanceof P&&(_.text=_.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Ge.makeSpan(["mop"],c,t)}else i=Ge.makeSpan(["mop"],[],t);return o?Bn(i,n,r,t,t.style,0,0):i};function Wn(e,t,n){for(var r=st(e,t,!1),a=t.sizeMultiplier/n.sizeMultiplier,i=0;i<r.length;i++){var o=r[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(r[i].classes,t.sizingClasses(n)):r[i].classes[o+1]==="reset-size"+t.size&&(r[i].classes[o+1]="reset-size"+n.size),r[i].height*=a,r[i].depth*=a}return Ge.makeFragment(r)}Je({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"operatorname",mode:n.mode,body:tt(a),alwaysHandleSupSub:"\\operatorname*"===r,limits:!1,parentIsSupSub:!1}},htmlBuilder:Kn,mathmlBuilder:function(e,t){for(var n=Ct(e.body,t.withFont("mathrm")),r=!0,a=0;a<n.length;a++){var i=n[a];if(i instanceof St.SpaceNode);else if(i instanceof St.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof St.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):r=!1;break;default:r=!1}else r=!1}if(r){var s=n.map((function(e){return e.toText()})).join("");n=[new St.TextNode(s)]}var l=new St.MathNode("mi",n);l.setAttribute("mathvariant","normal");var c=new St.MathNode("mo",[ft("⁡","text")]);return e.parentIsSupSub?new St.MathNode("mo",[l,c]):St.newDocumentFragment([l,c])}}),et({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Ge.makeFragment(st(e.body,t,!1)):Ge.makeSpan(["mord"],st(e.body,t,!0),t)},mathmlBuilder:function(e,t){return Nt(e.body,t,!0)}}),Je({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var n=e.parser,r=t[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle()),r=Ge.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r},{type:"kern",size:a}]},t);return Ge.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("mover",[vt(e.body,t),n]);return r.setAttribute("accent","true"),r}}),Je({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"phantom",mode:n.mode,body:tt(r)}},htmlBuilder:function(e,t){var n=st(e.body,t.withPhantom(),!1);return Ge.makeFragment(n)},mathmlBuilder:function(e,t){var n=Ct(e.body,t);return new St.MathNode("mphantom",n)}}),Je({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Ge.makeSpan([],[ut(e.body,t.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r<n.children.length;r++)n.children[r].height=0,n.children[r].depth=0;return n=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t),Ge.makeSpan(["mord"],[n],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),Je({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var n=e.parser,r=t[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:function(e,t){var n=Ge.makeSpan(["inner"],[ut(e.body,t.withPhantom())]),r=Ge.makeSpan(["fix"],[]);return Ge.makeSpan(["mord","rlap"],[n,r],t)},mathmlBuilder:function(e,t){var n=Ct(tt(e.body),t),r=new St.MathNode("mphantom",n),a=new St.MathNode("mpadded",[r]);return a.setAttribute("width","0px"),a}}),Je({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var n=e.parser,r=Be(t[0],"size").value,a=t[1];return{type:"raisebox",mode:n.mode,dy:r,body:a}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Ae(e.dy,t);return Ge.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute("voffset",r),n}}),Je({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,n){var r=e.parser,a=n[0],i=Be(t[0],"size"),o=Be(t[1],"size");return{type:"rule",mode:r.mode,shift:a&&Be(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var n=Ge.makeSpan(["mord","rule"],[],t),r=Ae(e.width,t),a=Ae(e.height,t),i=e.shift?Ae(e.shift,t):0;return n.style.borderRightWidth=r+"em",n.style.borderTopWidth=a+"em",n.style.bottom=i+"em",n.width=r,n.height=a+i,n.depth=-i,n.maxFontSize=1.125*a*t.sizeMultiplier,n},mathmlBuilder:function(e,t){var n=Ae(e.width,t),r=Ae(e.height,t),a=e.shift?Ae(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new St.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",n+"em"),o.setAttribute("height",r+"em");var s=new St.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height","+"+a+"em"):(s.setAttribute("height",a+"em"),s.setAttribute("depth","+"+-a+"em")),s.setAttribute("voffset",a+"em"),s}});var Qn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Je({type:"sizing",names:Qn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!1,n);return{type:"sizing",mode:a.mode,size:Qn.indexOf(r)+1,body:i}},htmlBuilder:function(e,t){var n=t.havingSize(e.size);return Wn(e.body,n,t)},mathmlBuilder:function(e,t){var n=t.havingSize(e.size),r=Ct(e.body,n),a=new St.MathNode("mstyle",r);return a.setAttribute("mathsize",n.sizeMultiplier+"em"),a}}),Je({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,n){var r=e.parser,a=!1,i=!1,o=n[0]&&Be(n[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var c=t[0];return{type:"smash",mode:r.mode,body:c,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var n=Ge.makeSpan([],[ut(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0,n.children))for(var r=0;r<n.children.length;r++)n.children[r].height=0;if(e.smashDepth&&(n.depth=0,n.children))for(var a=0;a<n.children.length;a++)n.children[a].depth=0;var i=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},t);return Ge.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mpadded",[vt(e.body,t)]);return e.smashHeight&&n.setAttribute("height","0px"),e.smashDepth&&n.setAttribute("depth","0px"),n}}),Je({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,n){var r=e.parser,a=n[0],i=t[0];return{type:"sqrt",mode:r.mode,body:i,index:a}},htmlBuilder:function(e,t){var n=ut(e.body,t.havingCrampedStyle());0===n.height&&(n.height=t.fontMetrics().xHeight),n=Ge.wrapFragment(n,t);var r=t.fontMetrics().defaultRuleThickness,a=r;t.style.id<b.TEXT.id&&(a=t.fontMetrics().xHeight);var i=r+a/4,o=n.height+n.depth+i+r,s=an(o,t),l=s.span,c=s.ruleWidth,d=s.advanceWidth,_=l.height-c;_>n.height+n.depth+i&&(i=(i+_-n.height-n.depth)/2);var u=l.height-n.height-i-c;n.style.paddingLeft=d+"em";var m=Ge.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+u)},{type:"elem",elem:l},{type:"kern",size:c}]},t);if(e.index){var p=t.havingStyle(b.SCRIPTSCRIPT),g=ut(e.index,p,t),E=.6*(m.height-m.depth),h=Ge.makeVList({positionType:"shift",positionData:-E,children:[{type:"elem",elem:g}]},t),S=Ge.makeSpan(["root"],[h]);return Ge.makeSpan(["mord","sqrt"],[S,m],t)}return Ge.makeSpan(["mord","sqrt"],[m],t)},mathmlBuilder:function(e,t){var n=e.body,r=e.index;return r?new St.MathNode("mroot",[vt(n,t),vt(r,t)]):new St.MathNode("msqrt",[vt(n,t)])}});var $n={display:b.DISPLAY,text:b.TEXT,script:b.SCRIPT,scriptscript:b.SCRIPTSCRIPT};Je({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var n=e.breakOnTokenText,r=e.funcName,a=e.parser,i=a.parseExpression(!0,n),o=r.slice(1,r.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n).withFont("");return Wn(e.body,r,t)},mathmlBuilder:function(e,t){var n=$n[e.style],r=t.havingStyle(n),a=Ct(e.body,r),i=new St.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});et({type:"supsub",htmlBuilder:function(e,t){var n=function(e,t){var n=e.base;return n?"op"===n.type?n.limits&&(t.style.size===b.DISPLAY.size||n.alwaysHandleSupSub)?Yn:null:"operatorname"===n.type?n.alwaysHandleSupSub&&(t.style.size===b.DISPLAY.size||n.limits)?Kn:null:"accent"===n.type?_.isCharacterBox(n.base)?Lt:null:"horizBrace"===n.type&&!e.sub===n.isOver?Un:null:null}(e,t);if(n)return n(e,t);var r,a,i,o=e.base,s=e.sup,l=e.sub,c=ut(o,t),d=t.fontMetrics(),u=0,m=0,p=o&&_.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());r=ut(s,g,t),p||(u=c.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var E=t.havingStyle(t.style.sub());a=ut(l,E,t),p||(m=c.depth+E.fontMetrics().subDrop*E.sizeMultiplier/t.sizeMultiplier)}i=t.style===b.DISPLAY?d.sup1:t.style.cramped?d.sup3:d.sup2;var h,S=t.sizeMultiplier,f=.5/d.ptPerEm/S+"em",T=null;if(a){var C=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(c instanceof P||C)&&(T=-c.italic+"em")}if(r&&a){u=Math.max(u,i,r.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var N=4*d.defaultRuleThickness;if(u-r.depth-(a.height-m)<N){m=N-(u-r.depth)+a.height;var v=.8*d.xHeight-(u-r.depth);v>0&&(u+=v,m-=v)}var R=[{type:"elem",elem:a,shift:m,marginRight:f,marginLeft:T},{type:"elem",elem:r,shift:-u,marginRight:f}];h=Ge.makeVList({positionType:"individualShift",children:R},t)}else if(a){m=Math.max(m,d.sub1,a.height-.8*d.xHeight);var O=[{type:"elem",elem:a,marginLeft:T,marginRight:f}];h=Ge.makeVList({positionType:"shift",positionData:m,children:O},t)}else{if(!r)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,r.depth+.25*d.xHeight),h=Ge.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:r,marginRight:f}]},t)}var A=dt(c,"right")||"mord";return Ge.makeSpan([A],[c,Ge.makeSpan(["msupsub"],[h])],t)},mathmlBuilder:function(e,t){var n,r=!1,a=He(e.base,"horizBrace");a&&!!e.sup===a.isOver&&(r=!0,n=a.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var i,o=[vt(e.base,t)];if(e.sub&&o.push(vt(e.sub,t)),e.sup&&o.push(vt(e.sup,t)),r)i=n?"mover":"munder";else if(e.sub)if(e.sup){var s=e.base;i=s&&"op"===s.type&&s.limits&&t.style===b.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(t.style===b.DISPLAY||s.limits)?"munderover":"msubsup"}else{var l=e.base;i=l&&"op"===l.type&&l.limits&&(t.style===b.DISPLAY||l.alwaysHandleSupSub)?"munder":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===b.DISPLAY)?"munder":"msub"}else{var c=e.base;i=c&&"op"===c.type&&c.limits&&(t.style===b.DISPLAY||c.alwaysHandleSupSub)?"mover":c&&"operatorname"===c.type&&c.alwaysHandleSupSub&&(c.limits||t.style===b.DISPLAY)?"mover":"msup"}return new St.MathNode(i,o)}}),et({type:"atom",htmlBuilder:function(e,t){return Ge.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[ft(e.text,e.mode)]);if("bin"===e.family){var r=bt(e,t);"bold-italic"===r&&n.setAttribute("mathvariant",r)}else"punct"===e.family?n.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||n.setAttribute("stretchy","false");return n}});var jn={mi:"italic",mn:"normal",mtext:"normal"};et({type:"mathord",htmlBuilder:function(e,t){return Ge.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var n=new St.MathNode("mi",[ft(e.text,e.mode,t)]),r=bt(e,t)||"italic";return r!==jn[n.type]&&n.setAttribute("mathvariant",r),n}}),et({type:"textord",htmlBuilder:function(e,t){return Ge.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var n,r=ft(e.text,e.mode,t),a=bt(e,t)||"normal";return n="text"===e.mode?new St.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new St.MathNode("mn",[r]):"\\prime"===e.text?new St.MathNode("mo",[r]):new St.MathNode("mi",[r]),a!==jn[n.type]&&n.setAttribute("mathvariant",a),n}});var Xn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Zn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};et({type:"spacing",htmlBuilder:function(e,t){if(Zn.hasOwnProperty(e.text)){var n=Zn[e.text].className||"";if("text"===e.mode){var r=Ge.makeOrd(e,t,"textord");return r.classes.push(n),r}return Ge.makeSpan(["mspace",n],[Ge.mathsym(e.text,e.mode,t)],t)}if(Xn.hasOwnProperty(e.text))return Ge.makeSpan(["mspace",Xn[e.text]],[],t);throw new o('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Zn.hasOwnProperty(e.text)){if(Xn.hasOwnProperty(e.text))return new St.MathNode("mspace");throw new o('Unknown type of space "'+e.text+'"')}return new St.MathNode("mtext",[new St.TextNode(" ")])}});var Jn=function(){var e=new St.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};et({type:"tag",mathmlBuilder:function(e,t){var n=new St.MathNode("mtable",[new St.MathNode("mtr",[Jn(),new St.MathNode("mtd",[Nt(e.body,t)]),Jn(),new St.MathNode("mtd",[Nt(e.tag,t)])])]);return n.setAttribute("width","100%"),n}});var er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},tr={"\\textbf":"textbf","\\textmd":"textmd"},nr={"\\textit":"textit","\\textup":"textup"},rr=function(e,t){var n=e.font;return n?er[n]?t.withTextFontFamily(er[n]):tr[n]?t.withTextFontWeight(tr[n]):t.withTextFontShape(nr[n]):t};Je({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(e,t){var n=e.parser,r=e.funcName,a=t[0];return{type:"text",mode:n.mode,body:tt(a),font:r}},htmlBuilder:function(e,t){var n=rr(e,t),r=st(e.body,n,!0);return Ge.makeSpan(["mord","text"],Ge.tryCombineChars(r),n)},mathmlBuilder:function(e,t){var n=rr(e,t);return Nt(e.body,n)}}),Je({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var n=ut(e.body,t),r=Ge.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ge.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:a},{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n}]},t);return Ge.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var n=new St.MathNode("mo",[new St.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new St.MathNode("munder",[vt(e.body,t),n]);return r.setAttribute("accentunder","true"),r}}),Je({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,n){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var n=ar(e),r=[],a=t.havingStyle(t.style.text()),i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),r.push(Ge.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Ge.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Ge.tryCombineChars(r),a)},mathmlBuilder:function(e,t){var n=new St.TextNode(ar(e)),r=new St.MathNode("mtext",[n]);return r.setAttribute("mathvariant","monospace"),r}});var ar=function(e){return e.body.replace(/ /g,e.star?"␣":" ")},ir=je,or=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sr=new RegExp("[̀-ͯ]+$"),lr="([ \r\n\t]+)|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",cr=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(lr,"g"),this.catcodes={"%":14}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new a("EOF",new r(this,t,t));var n=this.tokenRegex.exec(e);if(null===n||n.index!==t)throw new o("Unexpected character: '"+e[t]+"'",new a(e[t],new r(this,t,t+1)));var i=n[2]||" ";if(14===this.catcodes[i]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var l=i.match(or);return l&&(i=l[1]),new a(i,new r(this,t,this.tokenRegex.lastIndex))},e}(),dr=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(void 0===e[t]?delete this.current[t]:this.current[t]=e[t])},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,n){if(void 0===n&&(n=!1),n){for(var r=0;r<this.undefStack.length;r++)delete this.undefStack[r][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}this.current[e]=t},e}(),_r={},ur=_r;function mr(e,t){_r[e]=t}mr("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),mr("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),mr("\\@ifnextchar",(function(e){var t=e.consumeArgs(3),n=e.future();return 1===t[0].length&&t[0][0].text===n.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),mr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),mr("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var pr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};mr("\\char",(function(e){var t,n=e.popToken(),r="";if("'"===n.text)t=8,n=e.popToken();else if('"'===n.text)t=16,n=e.popToken();else if("`"===n.text)if("\\"===(n=e.popToken()).text[0])r=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new o("\\char` missing argument");r=n.text.charCodeAt(0)}else t=10;if(t){if(null==(r=pr[n.text])||r>=t)throw new o("Invalid base-"+t+" digit "+n.text);for(var a;null!=(a=pr[e.future().text])&&a<t;)r*=t,r+=a,e.popToken()}return"\\@char{"+r+"}"}));var gr=function(e,t){var n=e.consumeArgs(1)[0];if(1!==n.length)throw new o("\\gdef's first argument must be a macro name");var r=n[0].text,a=0;for(n=e.consumeArgs(1)[0];1===n.length&&"#"===n[0].text;){if(1!==(n=e.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+n.length+'"');if(!/^[1-9]$/.test(n[0].text))throw new o('Invalid argument number "'+n[0].text+'"');if(a++,parseInt(n[0].text)!==a)throw new o('Argument number "'+n[0].text+'" out of order');n=e.consumeArgs(1)[0]}return e.macros.set(r,{tokens:n,numArgs:a},t),""};mr("\\gdef",(function(e){return gr(e,!0)})),mr("\\def",(function(e){return gr(e,!1)})),mr("\\global",(function(e){var t=e.consumeArgs(1)[0];if(1!==t.length)throw new o("Invalid command after \\global");var n=t[0].text;if("\\def"===n)return gr(e,!0);throw new o("Invalid command '"+n+"' after \\global")}));var Er=function(e,t,n){var r=e.consumeArgs(1)[0];if(1!==r.length)throw new o("\\newcommand's first argument must be a macro name");var a=r[0].text,i=e.isDefined(a);if(i&&!t)throw new o("\\newcommand{"+a+"} attempting to redefine "+a+"; use \\renewcommand");if(!i&&!n)throw new o("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(1===(r=e.consumeArgs(1)[0]).length&&"["===r[0].text){for(var l="",c=e.expandNextToken();"]"!==c.text&&"EOF"!==c.text;)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+l);s=parseInt(l),r=e.consumeArgs(1)[0]}return e.macros.set(a,{tokens:r,numArgs:s}),""};mr("\\newcommand",(function(e){return Er(e,!1,!0)})),mr("\\renewcommand",(function(e){return Er(e,!0,!1)})),mr("\\providecommand",(function(e){return Er(e,!0,!0)})),mr("\\bgroup","{"),mr("\\egroup","}"),mr("\\lq","`"),mr("\\rq","'"),mr("\\aa","\\r a"),mr("\\AA","\\r A"),mr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),mr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),mr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),mr("ℬ","\\mathscr{B}"),mr("ℰ","\\mathscr{E}"),mr("ℱ","\\mathscr{F}"),mr("ℋ","\\mathscr{H}"),mr("ℐ","\\mathscr{I}"),mr("ℒ","\\mathscr{L}"),mr("ℳ","\\mathscr{M}"),mr("ℛ","\\mathscr{R}"),mr("ℭ","\\mathfrak{C}"),mr("ℌ","\\mathfrak{H}"),mr("ℨ","\\mathfrak{Z}"),mr("\\Bbbk","\\Bbb{k}"),mr("·","\\cdotp"),mr("\\llap","\\mathllap{\\textrm{#1}}"),mr("\\rlap","\\mathrlap{\\textrm{#1}}"),mr("\\clap","\\mathclap{\\textrm{#1}}"),mr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),mr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),mr("\\ne","\\neq"),mr("≠","\\neq"),mr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),mr("∉","\\notin"),mr("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),mr("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),mr("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),mr("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),mr("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),mr("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),mr("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),mr("⟂","\\perp"),mr("‼","\\mathclose{!\\mkern-0.8mu!}"),mr("∌","\\notni"),mr("⌜","\\ulcorner"),mr("⌝","\\urcorner"),mr("⌞","\\llcorner"),mr("⌟","\\lrcorner"),mr("©","\\copyright"),mr("®","\\textregistered"),mr("️","\\textregistered"),mr("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),mr("⋮","\\vdots"),mr("\\varGamma","\\mathit{\\Gamma}"),mr("\\varDelta","\\mathit{\\Delta}"),mr("\\varTheta","\\mathit{\\Theta}"),mr("\\varLambda","\\mathit{\\Lambda}"),mr("\\varXi","\\mathit{\\Xi}"),mr("\\varPi","\\mathit{\\Pi}"),mr("\\varSigma","\\mathit{\\Sigma}"),mr("\\varUpsilon","\\mathit{\\Upsilon}"),mr("\\varPhi","\\mathit{\\Phi}"),mr("\\varPsi","\\mathit{\\Psi}"),mr("\\varOmega","\\mathit{\\Omega}"),mr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),mr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),mr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),mr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),mr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),mr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var hr={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};mr("\\dots",(function(e){var t="\\dotso",n=e.expandAfterFuture().text;return n in hr?t=hr[n]:"\\not"===n.substr(0,4)?t="\\dotsb":n in Q.math&&_.contains(["bin","rel"],Q.math[n].group)&&(t="\\dotsb"),t}));var Sr={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};mr("\\dotso",(function(e){return e.future().text in Sr?"\\ldots\\,":"\\ldots"})),mr("\\dotsc",(function(e){var t=e.future().text;return t in Sr&&","!==t?"\\ldots\\,":"\\ldots"})),mr("\\cdots",(function(e){return e.future().text in Sr?"\\@cdots\\,":"\\@cdots"})),mr("\\dotsb","\\cdots"),mr("\\dotsm","\\cdots"),mr("\\dotsi","\\!\\cdots"),mr("\\dotsx","\\ldots\\,"),mr("\\DOTSI","\\relax"),mr("\\DOTSB","\\relax"),mr("\\DOTSX","\\relax"),mr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),mr("\\,","\\tmspace+{3mu}{.1667em}"),mr("\\thinspace","\\,"),mr("\\>","\\mskip{4mu}"),mr("\\:","\\tmspace+{4mu}{.2222em}"),mr("\\medspace","\\:"),mr("\\;","\\tmspace+{5mu}{.2777em}"),mr("\\thickspace","\\;"),mr("\\!","\\tmspace-{3mu}{.1667em}"),mr("\\negthinspace","\\!"),mr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),mr("\\negthickspace","\\tmspace-{5mu}{.277em}"),mr("\\enspace","\\kern.5em "),mr("\\enskip","\\hskip.5em\\relax"),mr("\\quad","\\hskip1em\\relax"),mr("\\qquad","\\hskip2em\\relax"),mr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),mr("\\tag@paren","\\tag@literal{({#1})}"),mr("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),mr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),mr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),mr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),mr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),mr("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),mr("\\\\","\\newline"),mr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var fr=B["Main-Regular"]["T".charCodeAt(0)][1]-.7*B["Main-Regular"]["A".charCodeAt(0)][1]+"em";mr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),mr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+fr+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),mr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),mr("\\@hspace","\\hskip #1\\relax"),mr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),mr("\\ordinarycolon",":"),mr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),mr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),mr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),mr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),mr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),mr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),mr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),mr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),mr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),mr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),mr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),mr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),mr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),mr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),mr("∷","\\dblcolon"),mr("∹","\\eqcolon"),mr("≔","\\coloneqq"),mr("≕","\\eqqcolon"),mr("⩴","\\Coloneqq"),mr("\\ratio","\\vcentcolon"),mr("\\coloncolon","\\dblcolon"),mr("\\colonequals","\\coloneqq"),mr("\\coloncolonequals","\\Coloneqq"),mr("\\equalscolon","\\eqqcolon"),mr("\\equalscoloncolon","\\Eqqcolon"),mr("\\colonminus","\\coloneq"),mr("\\coloncolonminus","\\Coloneq"),mr("\\minuscolon","\\eqcolon"),mr("\\minuscoloncolon","\\Eqcolon"),mr("\\coloncolonapprox","\\Colonapprox"),mr("\\coloncolonsim","\\Colonsim"),mr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),mr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),mr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),mr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),mr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),mr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),mr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),mr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),mr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),mr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),mr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),mr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),mr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),mr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),mr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),mr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),mr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),mr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),mr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),mr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),mr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),mr("⟦","\\llbracket"),mr("⟧","\\rrbracket"),mr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),mr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),mr("⦃","\\lBrace"),mr("⦄","\\rBrace"),mr("\\darr","\\downarrow"),mr("\\dArr","\\Downarrow"),mr("\\Darr","\\Downarrow"),mr("\\lang","\\langle"),mr("\\rang","\\rangle"),mr("\\uarr","\\uparrow"),mr("\\uArr","\\Uparrow"),mr("\\Uarr","\\Uparrow"),mr("\\N","\\mathbb{N}"),mr("\\R","\\mathbb{R}"),mr("\\Z","\\mathbb{Z}"),mr("\\alef","\\aleph"),mr("\\alefsym","\\aleph"),mr("\\Alpha","\\mathrm{A}"),mr("\\Beta","\\mathrm{B}"),mr("\\bull","\\bullet"),mr("\\Chi","\\mathrm{X}"),mr("\\clubs","\\clubsuit"),mr("\\cnums","\\mathbb{C}"),mr("\\Complex","\\mathbb{C}"),mr("\\Dagger","\\ddagger"),mr("\\diamonds","\\diamondsuit"),mr("\\empty","\\emptyset"),mr("\\Epsilon","\\mathrm{E}"),mr("\\Eta","\\mathrm{H}"),mr("\\exist","\\exists"),mr("\\harr","\\leftrightarrow"),mr("\\hArr","\\Leftrightarrow"),mr("\\Harr","\\Leftrightarrow"),mr("\\hearts","\\heartsuit"),mr("\\image","\\Im"),mr("\\infin","\\infty"),mr("\\Iota","\\mathrm{I}"),mr("\\isin","\\in"),mr("\\Kappa","\\mathrm{K}"),mr("\\larr","\\leftarrow"),mr("\\lArr","\\Leftarrow"),mr("\\Larr","\\Leftarrow"),mr("\\lrarr","\\leftrightarrow"),mr("\\lrArr","\\Leftrightarrow"),mr("\\Lrarr","\\Leftrightarrow"),mr("\\Mu","\\mathrm{M}"),mr("\\natnums","\\mathbb{N}"),mr("\\Nu","\\mathrm{N}"),mr("\\Omicron","\\mathrm{O}"),mr("\\plusmn","\\pm"),mr("\\rarr","\\rightarrow"),mr("\\rArr","\\Rightarrow"),mr("\\Rarr","\\Rightarrow"),mr("\\real","\\Re"),mr("\\reals","\\mathbb{R}"),mr("\\Reals","\\mathbb{R}"),mr("\\Rho","\\mathrm{P}"),mr("\\sdot","\\cdot"),mr("\\sect","\\S"),mr("\\spades","\\spadesuit"),mr("\\sub","\\subset"),mr("\\sube","\\subseteq"),mr("\\supe","\\supseteq"),mr("\\Tau","\\mathrm{T}"),mr("\\thetasym","\\vartheta"),mr("\\weierp","\\wp"),mr("\\Zeta","\\mathrm{Z}"),mr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),mr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),mr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),mr("\\blue","\\textcolor{##6495ed}{#1}"),mr("\\orange","\\textcolor{##ffa500}{#1}"),mr("\\pink","\\textcolor{##ff00af}{#1}"),mr("\\red","\\textcolor{##df0030}{#1}"),mr("\\green","\\textcolor{##28ae7b}{#1}"),mr("\\gray","\\textcolor{gray}{#1}"),mr("\\purple","\\textcolor{##9d38bd}{#1}"),mr("\\blueA","\\textcolor{##ccfaff}{#1}"),mr("\\blueB","\\textcolor{##80f6ff}{#1}"),mr("\\blueC","\\textcolor{##63d9ea}{#1}"),mr("\\blueD","\\textcolor{##11accd}{#1}"),mr("\\blueE","\\textcolor{##0c7f99}{#1}"),mr("\\tealA","\\textcolor{##94fff5}{#1}"),mr("\\tealB","\\textcolor{##26edd5}{#1}"),mr("\\tealC","\\textcolor{##01d1c1}{#1}"),mr("\\tealD","\\textcolor{##01a995}{#1}"),mr("\\tealE","\\textcolor{##208170}{#1}"),mr("\\greenA","\\textcolor{##b6ffb0}{#1}"),mr("\\greenB","\\textcolor{##8af281}{#1}"),mr("\\greenC","\\textcolor{##74cf70}{#1}"),mr("\\greenD","\\textcolor{##1fab54}{#1}"),mr("\\greenE","\\textcolor{##0d923f}{#1}"),mr("\\goldA","\\textcolor{##ffd0a9}{#1}"),mr("\\goldB","\\textcolor{##ffbb71}{#1}"),mr("\\goldC","\\textcolor{##ff9c39}{#1}"),mr("\\goldD","\\textcolor{##e07d10}{#1}"),mr("\\goldE","\\textcolor{##a75a05}{#1}"),mr("\\redA","\\textcolor{##fca9a9}{#1}"),mr("\\redB","\\textcolor{##ff8482}{#1}"),mr("\\redC","\\textcolor{##f9685d}{#1}"),mr("\\redD","\\textcolor{##e84d39}{#1}"),mr("\\redE","\\textcolor{##bc2612}{#1}"),mr("\\maroonA","\\textcolor{##ffbde0}{#1}"),mr("\\maroonB","\\textcolor{##ff92c6}{#1}"),mr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),mr("\\maroonD","\\textcolor{##ca337c}{#1}"),mr("\\maroonE","\\textcolor{##9e034e}{#1}"),mr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),mr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),mr("\\purpleC","\\textcolor{##aa87ff}{#1}"),mr("\\purpleD","\\textcolor{##7854ab}{#1}"),mr("\\purpleE","\\textcolor{##543b78}{#1}"),mr("\\mintA","\\textcolor{##f5f9e8}{#1}"),mr("\\mintB","\\textcolor{##edf2df}{#1}"),mr("\\mintC","\\textcolor{##e0e5cc}{#1}"),mr("\\grayA","\\textcolor{##f6f7f7}{#1}"),mr("\\grayB","\\textcolor{##f0f1f2}{#1}"),mr("\\grayC","\\textcolor{##e3e5e6}{#1}"),mr("\\grayD","\\textcolor{##d6d8da}{#1}"),mr("\\grayE","\\textcolor{##babec2}{#1}"),mr("\\grayF","\\textcolor{##888d93}{#1}"),mr("\\grayG","\\textcolor{##626569}{#1}"),mr("\\grayH","\\textcolor{##3b3e40}{#1}"),mr("\\grayI","\\textcolor{##21242c}{#1}"),mr("\\kaBlue","\\textcolor{##314453}{#1}"),mr("\\kaGreen","\\textcolor{##71B307}{#1}");var Tr={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},br=function(){function e(e,t,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(ur,t.macros),this.mode=n,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new cr(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],n=0;n<e;++n){this.consumeSpaces();var r=this.popToken();if("{"===r.text){for(var a=[],i=1;0!==i;){var s=this.popToken();if(a.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",r)}a.pop(),a.reverse(),t[n]=a}else{if("EOF"===r.text)throw new o("End of input expecting macro argument");t[n]=[r]}}return t},t.expandOnce=function(){var e=this.popToken(),t=e.text,n=this._getExpansion(t);if(null==n)return this.pushToken(e),e;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var r=n.tokens;if(n.numArgs)for(var a=this.consumeArgs(n.numArgs),i=(r=r.slice()).length-1;i>=0;--i){var s=r[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=r[--i]).text)r.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var l;(l=r).splice.apply(l,[i,2].concat(a[+s.text-1]))}}}return this.pushTokens(r),r},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],n=this.stack.length;for(this.pushToken(new a(e));this.stack.length>n;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var n="function"==typeof t?t(this):t;if("string"==typeof n){var r=0;if(-1!==n.indexOf("#"))for(var a=n.replace(/##/g,"");-1!==a.indexOf("#"+(r+1));)++r;for(var i=new cr(n,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:r}}return n},t.isDefined=function(e){return this.macros.has(e)||ir.hasOwnProperty(e)||Q.math.hasOwnProperty(e)||Q.text.hasOwnProperty(e)||Tr.hasOwnProperty(e)},e}(),Cr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}},Nr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},vr=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new br(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new o("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var e=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),e},t.parseExpression=function(t,n){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(n&&a.text===n)break;if(t&&ir[a.text]&&ir[a.text].infix)break;var i=this.parseAtom(n);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},t.handleInfixNodes=function(e){for(var t,n=-1,r=0;r<e.length;r++){var a=He(e[r],"infix");if(a){if(-1!==n)throw new o("only one infix operator per group",a.token);n=r,t=a.replaceWith}}if(-1!==n&&t){var i,s,l=e.slice(0,n),c=e.slice(n+1);return i=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},s=1===c.length&&"ordgroup"===c[0].type?c[0]:{type:"ordgroup",mode:this.mode,body:c},["\\\\abovefrac"===t?this.callFunction(t,[i,e[n],s],[]):this.callFunction(t,[i,s],[])]}return e},t.handleSupSubscript=function(t){var n=this.fetch(),r=n.text;this.consume();var a=this.parseGroup(t,!1,e.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!a)throw new o("Expected group after '"+r+"'",n);return a},t.formatUnsupportedCmd=function(e){for(var t=[],n=0;n<e.length;n++)t.push({type:"textord",mode:"text",text:e[n]});var r={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]}},t.parseAtom=function(e){var t,n,r=this.parseGroup("atom",!1,null,e);if("text"===this.mode)return r;for(;;){this.consumeSpaces();var a=this.fetch();if("\\limits"===a.text||"\\nolimits"===a.text){var i=He(r,"op");if(i){var s="\\limits"===a.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=He(r,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",a);var l="\\limits"===a.text;i.limits=l}this.consume()}else if("^"===a.text){if(t)throw new o("Double superscript",a);t=this.handleSupSubscript("superscript")}else if("_"===a.text){if(n)throw new o("Double subscript",a);n=this.handleSupSubscript("subscript")}else{if("'"!==a.text)break;if(t)throw new o("Double superscript",a);var c={type:"textord",mode:this.mode,text:"\\prime"},d=[c];for(this.consume();"'"===this.fetch().text;)d.push(c),this.consume();"^"===this.fetch().text&&d.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:d}}}return t||n?{type:"supsub",mode:this.mode,base:r,sup:t,sub:n}:r},t.parseFunction=function(e,t,n){var r=this.fetch(),a=r.text,i=ir[a];if(!i)return null;if(this.consume(),null!=n&&i.greediness<=n)throw new o("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+a+"' in math mode",r);var s=this.parseArguments(a,i),l=s.args,c=s.optArgs;return this.callFunction(a,l,c,r,e)},t.callFunction=function(e,t,n,r,a){var i={funcName:e,parser:this,token:r,breakOnTokenText:a},s=ir[e];if(s&&s.handler)return s.handler(i,t,n);throw new o("No function handler for "+e)},t.parseArguments=function(e,t){var n=t.numArgs+t.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};for(var r=t.greediness,a=[],i=[],s=0;s<n;s++){var l=t.argTypes&&t.argTypes[s],c=s<t.numOptionalArgs,d=s>0&&!c||0===s&&!c&&"math"===this.mode,_=this.parseGroupOfType("argument to '"+e+"'",l,c,r,d);if(!_){if(c){i.push(null);continue}throw new o("Expected group after '"+e+"'",this.fetch())}(c?i:a).push(_)}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,n,r,a){switch(t){case"color":return a&&this.consumeSpaces(),this.parseColorGroup(n);case"size":return a&&this.consumeSpaces(),this.parseSizeGroup(n);case"url":return this.parseUrlGroup(n,a);case"math":case"text":return this.parseGroup(e,n,r,void 0,t,a);case"hbox":var i=this.parseGroup(e,n,r,void 0,"text",a);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(a&&this.consumeSpaces(),n&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",n,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(e,n,r,void 0,void 0,a);default:throw new o("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t,n){var r=t?"[":"{",a=t?"]":"}",i=this.fetch();if(i.text!==r){if(t)return null;if(n&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(r);for(var l,c="",d=this.fetch(),_=0,u=d;(l=this.fetch()).text!==a||n&&_>0;){switch(l.text){case"EOF":throw new o("Unexpected end of input in "+e,d.range(u,c));case r:_++;break;case a:_--}c+=(u=l).text,this.consume()}return this.expect(a),this.mode=s,d.range(u,c)},t.parseRegexGroup=function(e,t){var n=this.mode;this.mode="text";for(var r,a=this.fetch(),i=a,s="";"EOF"!==(r=this.fetch()).text&&e.test(s+r.text);)s+=(i=r).text,this.consume();if(""===s)throw new o("Invalid "+t+": '"+a.text+"'",a);return this.mode=n,a.range(i,s)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t)return null;var n=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!n)throw new o("Invalid color: '"+t.text+"'",t);var r=n[0];return/^[0-9a-f]{6}$/i.test(r)&&(r="#"+r),{type:"color-token",mode:this.mode,color:r}},t.parseSizeGroup=function(e){var t,n=!1;if(!(t=e||"{"===this.fetch().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",n=!0);var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r)throw new o("Invalid size: '"+t.text+"'",t);var a={number:+(r[1]+r[2]),unit:r[3]};if(!Oe(a))throw new o("Invalid unit: '"+a.unit+"'",t);return{type:"size",mode:this.mode,value:a,isBlank:n}},t.parseUrlGroup=function(e,t){this.gullet.lexer.setCatcode("%",13);var n=this.parseStringGroup("url",e,!0);if(this.gullet.lexer.setCatcode("%",14),!n)return null;var r=n.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseGroup=function(t,n,a,i,s,l){var c=this.mode;s&&this.switchMode(s),l&&this.consumeSpaces();var d,_=this.fetch(),u=_.text;if(n?"["===u:"{"===u||"\\begingroup"===u){this.consume();var m=e.endOfGroup[u];this.gullet.beginGroup();var p=this.parseExpression(!1,m),g=this.fetch();this.expect(m),this.gullet.endGroup(),d={type:"ordgroup",mode:this.mode,loc:r.range(_,g),body:p,semisimple:"\\begingroup"===u||void 0}}else if(n)d=null;else if(null==(d=this.parseFunction(i,t,a)||this.parseSymbol())&&"\\"===u[0]&&!Tr.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,_);d=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(c),d},t.formLigatures=function(e){for(var t=e.length-1,n=0;n<t;++n){var a=e[n],i=a.text;"-"===i&&"-"===e[n+1].text&&(n+1<t&&"-"===e[n+2].text?(e.splice(n,3,{type:"textord",mode:"text",loc:r.range(a,e[n+2]),text:"---"}),t-=2):(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:"--"}),t-=1)),"'"!==i&&"`"!==i||e[n+1].text!==i||(e.splice(n,2,{type:"textord",mode:"text",loc:r.range(a,e[n+1]),text:i+i}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var n=t.slice(5),a="*"===n.charAt(0);if(a&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new o("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:n=n.slice(1,-1),star:a}}Nr.hasOwnProperty(t[0])&&!Q[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Nr[t[0]]+t.substr(1));var i,s=sr.exec(t);if(s&&("i"===(t=t.substring(0,s.index))?t="ı":"j"===t&&(t="ȷ")),Q[this.mode][t]){this.settings.strict&&"math"===this.mode&&"ÇÐÞçþ".indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,c=Q[this.mode][t].group,d=r.range(e);if(q.hasOwnProperty(c)){var _=c;l={type:"atom",mode:this.mode,family:_,loc:d,text:t}}else l={type:c,mode:this.mode,loc:d,text:t};i=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(v(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:r.range(e),text:t}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var m=s[0][u];if(!Cr[m])throw new o("Unknown accent ' "+m+"'",e);var p=Cr[m][this.mode];if(!p)throw new o("Accent "+m+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:r.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();vr.endOfExpression=["}","\\endgroup","\\end","\\right","&"],vr.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},vr.SUPSUB_GREEDINESS=1;var Rr=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var n=new vr(e,t);delete n.gullet.macros.current["\\df@tag"];var r=n.parse();if(n.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new o("\\tag works only in display equations");n.gullet.feed("\\df@tag"),r=[{type:"tag",mode:"text",body:r,tag:n.parse()}]}return r},Or=function(e,t,n){t.textContent="";var r=yr(e,n).toNode();t.appendChild(r)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Or=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Ar=function(e,t,n){if(n.throwOnError||!(e instanceof o))throw e;var r=Ge.makeSpan(["katex-error"],[new P(t)]);return r.setAttribute("title",e.toString()),r.setAttribute("style","color:"+n.errorColor),r},yr=function(e,t){var n=new u(t);try{return function(e,t,n){var r,a=Ot(n);if("mathml"===n.output)return Rt(e,t,a,!0);if("html"===n.output){var i=pt(e,a);r=Ge.makeSpan(["katex"],[i])}else{var o=Rt(e,t,a,!1),s=pt(e,a);r=Ge.makeSpan(["katex"],[o,s])}return At(r,n)}(Rr(e,n),e,n)}catch(t){return Ar(t,e,n)}},Ir={version:"0.11.1",render:Or,renderToString:function(e,t){return yr(e,t).toMarkup()},ParseError:o,__parse:function(e,t){var n=new u(t);return Rr(e,n)},__renderToDomTree:yr,__renderToHTMLTree:function(e,t){var n=new u(t);try{return function(e,t,n){var r=pt(e,Ot(n)),a=Ge.makeSpan(["katex"],[r]);return At(a,n)}(Rr(e,n),0,n)}catch(t){return Ar(t,e,n)}},__setFontMetrics:function(e,t){B[e]=t},__defineSymbol:$,__defineMacro:mr,__domTree:{Span:x,Anchor:M,SymbolNode:P,SvgNode:k,PathNode:U,LineNode:F}};t.default=Ir}]).default}))}));(zl=ql)&&zl.__esModule&&Object.prototype.hasOwnProperty.call(zl,"default")&&zl.default;var Kl=Object.prototype.hasOwnProperty,Wl=Object.prototype.toString,Ql=Object.defineProperty,$l=Object.getOwnPropertyDescriptor,jl=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Wl.call(e)},Xl=function(e){if(!e||"[object Object]"!==Wl.call(e))return!1;var t,n=Kl.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&Kl.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||Kl.call(e,t)},Zl=function(e,t){Ql&&"__proto__"===t.name?Ql(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Jl=function(e,t){if("__proto__"===t){if(!Kl.call(e,t))return;if($l)return $l(e,t).value}return e[t]},ec=function e(){var t,n,r,a,i,o,s=arguments[0],l=1,c=arguments.length,d=!1;for("boolean"==typeof s&&(d=s,s=arguments[1]||{},l=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Jl(s,n),s!==(a=Jl(t,n))&&(d&&a&&(Xl(a)||(i=jl(a)))?(i?(i=!1,o=r&&jl(r)?r:[]):o=r&&Xl(r)?r:{},Zl(s,{name:n,newValue:e(d,o,a)})):void 0!==a&&Zl(s,{name:n,newValue:a}));return s},tc=function(e){if(e)throw e};var nc={}.hasOwnProperty,rc=function(e){if(!e||"object"!=typeof e)return"";if(nc.call(e,"position")||nc.call(e,"type"))return ic(e.position);if(nc.call(e,"start")||nc.call(e,"end"))return ic(e);if(nc.call(e,"line")||nc.call(e,"column"))return ac(e);return""};function ac(e){return e&&"object"==typeof e||(e={}),oc(e.line)+":"+oc(e.column)}function ic(e){return e&&"object"==typeof e||(e={}),ac(e.start)+"-"+ac(e.end)}function oc(e){return e&&"number"==typeof e?e:1}var sc=dc;function lc(){}lc.prototype=Error.prototype,dc.prototype=new lc;var cc=dc.prototype;function dc(e,t,n){var r,a,i;"string"==typeof t&&(n=t,t=null),r=function(e){var t,n=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?n[1]=e:(n[0]=e.slice(0,t),n[1]=e.slice(t+1)));return n}(n),a=rc(t)||"1:1",i={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(i=t,t=t.start):i.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=a,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=i,this.source=r[0],this.ruleId=r[1]}cc.file="",cc.name="",cc.reason="",cc.message="",cc.stack="",cc.fatal=null,cc.column=null,cc.line=null;var _c="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function uc(){throw new Error("setTimeout has not been defined")}function mc(){throw new Error("clearTimeout has not been defined")}var pc=uc,gc=mc;function Ec(e){if(pc===setTimeout)return setTimeout(e,0);if((pc===uc||!pc)&&setTimeout)return pc=setTimeout,setTimeout(e,0);try{return pc(e,0)}catch(t){try{return pc.call(null,e,0)}catch(t){return pc.call(this,e,0)}}}"function"==typeof _c.setTimeout&&(pc=setTimeout),"function"==typeof _c.clearTimeout&&(gc=clearTimeout);var hc,Sc=[],fc=!1,Tc=-1;function bc(){fc&&hc&&(fc=!1,hc.length?Sc=hc.concat(Sc):Tc=-1,Sc.length&&Cc())}function Cc(){if(!fc){var e=Ec(bc);fc=!0;for(var t=Sc.length;t;){for(hc=Sc,Sc=[];++Tc<t;)hc&&hc[Tc].run();Tc=-1,t=Sc.length}hc=null,fc=!1,function(e){if(gc===clearTimeout)return clearTimeout(e);if((gc===mc||!gc)&&clearTimeout)return gc=clearTimeout,clearTimeout(e);try{gc(e)}catch(t){try{return gc.call(null,e)}catch(t){return gc.call(this,e)}}}(e)}}function Nc(e,t){this.fun=e,this.array=t}Nc.prototype.run=function(){this.fun.apply(null,this.array)};function vc(){}var Rc=vc,Oc=vc,Ac=vc,yc=vc,Ic=vc,Dc=vc,xc=vc;var Mc=_c.performance||{},wc=Mc.now||Mc.mozNow||Mc.msNow||Mc.oNow||Mc.webkitNow||function(){return(new Date).getTime()};var Lc=new Date;var Pc={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];Sc.push(new Nc(e,t)),1!==Sc.length||fc||Ec(Cc)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Rc,addListener:Oc,once:Ac,off:yc,removeListener:Ic,removeAllListeners:Dc,emit:xc,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*wc.call(Mc),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Lc)/1e3}};function kc(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Uc=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Fc=function(e){return Uc.exec(e).slice(1)};function Gc(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=kc(Vc(e.split("/"),(function(e){return!!e})),!t).join("/"))||"."}function Bc(e){var t=Hc(e),n="/"===zc(e,-1);return(e=kc(Vc(e.split("/"),(function(e){return!!e})),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function Hc(e){return"/"===e.charAt(0)}var Yc={extname:function(e){return Fc(e)[3]},basename:function(e,t){var n=Fc(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function(e){var t=Fc(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},sep:"/",delimiter:":",relative:function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Gc(e).substr(1),t=Gc(t).substr(1);for(var r=n(e.split("/")),a=n(t.split("/")),i=Math.min(r.length,a.length),o=i,s=0;s<i;s++)if(r[s]!==a[s]){o=s;break}var l=[];for(s=o;s<r.length;s++)l.push("..");return(l=l.concat(a.slice(o))).join("/")},join:function(){return Bc(Vc(Array.prototype.slice.call(arguments,0),(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},isAbsolute:Hc,normalize:Bc,resolve:Gc};function Vc(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var zc="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)};var qc=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var n=Yc.basename(e,Yc.extname(e))+t;return Yc.join(Yc.dirname(e),n)},Kc=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},Wc=Xc,Qc={}.hasOwnProperty,$c=Xc.prototype,jc=["history","path","basename","stem","extname","dirname"];
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author Feross Aboukhadijeh <https://feross.org>
+ * @license MIT
+ */function Xc(e){var t,n,r;if(e){if("string"==typeof e||Kc(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Xc))return new Xc(e);for(this.data={},this.messages=[],this.history=[],this.cwd=Pc.cwd(),n=-1,r=jc.length;++n<r;)t=jc[n],Qc.call(e,t)&&(this[t]=e[t]);for(t in e)-1===jc.indexOf(t)&&(this[t]=e[t])}function Zc(e,t){if(-1!==e.indexOf(Yc.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Yc.sep+"`")}function Jc(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function ed(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}$c.toString=function(e){var t=this.contents||"";return Kc(t)?t.toString(e):String(t)},Object.defineProperty($c,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){Jc(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty($c,"dirname",{get:function(){return"string"==typeof this.path?Yc.dirname(this.path):void 0},set:function(e){ed(this.path,"dirname"),this.path=Yc.join(e||"",this.basename)}}),Object.defineProperty($c,"basename",{get:function(){return"string"==typeof this.path?Yc.basename(this.path):void 0},set:function(e){Jc(e,"basename"),Zc(e,"basename"),this.path=Yc.join(this.dirname||"",e)}}),Object.defineProperty($c,"extname",{get:function(){return"string"==typeof this.path?Yc.extname(this.path):void 0},set:function(e){var t=e||"";if(Zc(t,"extname"),ed(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=qc(this.path,t)}}),Object.defineProperty($c,"stem",{get:function(){return"string"==typeof this.path?Yc.basename(this.path,this.extname):void 0},set:function(e){Jc(e,"stem"),Zc(e,"stem"),this.path=Yc.join(this.dirname||"",e+(this.extname||""))}});var td=Wc,nd=Wc.prototype;nd.message=function(e,t,n){var r=this.path,a=new sc(e,t,n);r&&(a.name=r+":"+a.name,a.file=r);return a.fatal=!1,this.messages.push(a),a},nd.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},nd.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e};var rd=[].slice,ad=function(e,t){var n;return function(){var t,i=rd.call(arguments,0),o=e.length>i.length;o&&i.push(r);try{t=e.apply(null,i)}catch(e){if(o&&n)throw e;return r(e)}o||(t&&"function"==typeof t.then?t.then(a,r):t instanceof Error?r(t):a(t))};function r(){n||(n=!0,t.apply(null,arguments))}function a(e){r(null,e)}};var id=sd;sd.wrap=ad;var od=[].slice;function sd(){var e=[],t={run:function(){var t=-1,n=od.call(arguments,0,-1),r=arguments[arguments.length-1];if("function"!=typeof r)throw new Error("Expected function as last argument, not "+r);(function a(i){var o=e[++t],s=od.call(arguments,0).slice(1),l=n.length,c=-1;if(i)r(i);else{for(;++c<l;)null!==s[c]&&void 0!==s[c]||(s[c]=n[c]);n=s,o?ad(o,a).apply(null,n):r.apply(null,[null].concat(n))}}).apply(null,[null].concat(n))},use:function(n){if("function"!=typeof n)throw new Error("Expected `fn` to be a function, not "+n);return e.push(n),t}};return t}var ld=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},cd=function e(){var t=[],n=id(),r={},a=!1,i=-1;return o.data=function(e,t){if("string"==typeof e)return 2===arguments.length?(Ed("data",a),r[e]=t,o):_d.call(r,e)&&r[e]||null;if(e)return Ed("data",a),r=e,o;return r},o.freeze=s,o.attachers=t,o.use=function(e){var n;if(Ed("use",a),null==e);else if("function"==typeof e)c.apply(null,arguments);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?l(e):i(e)}n&&(r.settings=ec(r.settings||{},n));return o;function i(e){l(e.plugins),e.settings&&(n=ec(n||{},e.settings))}function s(e){if("function"==typeof e)c(e);else{if("object"!=typeof e)throw new Error("Expected usable value, not `"+e+"`");"length"in e?c.apply(null,e):i(e)}}function l(e){var t,n;if(null==e);else{if(!("object"==typeof e&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(t=e.length,n=-1;++n<t;)s(e[n])}}function c(e,n){var r=function(e){var n,r=t.length,a=-1;for(;++a<r;)if((n=t[a])[0]===e)return n}(e);r?(ld(r[1])&&ld(n)&&(n=ec(r[1],n)),r[1]=n):t.push(dd.call(arguments))}},o.parse=function(e){var t,n=td(e);if(s(),pd("parse",t=o.Parser),md(t,"parse"))return new t(String(n),n).parse();return t(String(n),n)},o.stringify=function(e,t){var n,r=td(t);if(s(),gd("stringify",n=o.Compiler),hd(e),md(n,"compile"))return new n(e,r).compile();return n(e,r)},o.run=l,o.runSync=function(e,t){var n,r=!1;return l(e,t,(function(e,t){r=!0,tc(e),n=t})),Sd("runSync","run",r),n},o.process=c,o.processSync=function(e){var t,n=!1;return s(),pd("processSync",o.Parser),gd("processSync",o.Compiler),c(t=td(e),(function(e){n=!0,tc(e)})),Sd("processSync","process",n),t},o;function o(){for(var n=e(),a=t.length,i=-1;++i<a;)n.use.apply(null,t[i]);return n.data(ec(!0,{},r)),n}function s(){var e,r,s,l;if(a)return o;for(;++i<t.length;)r=(e=t[i])[0],null,!1!==(s=e[1])&&(!0===s&&(e[1]=void 0),"function"==typeof(l=r.apply(o,e.slice(1)))&&n.use(l));return a=!0,i=1/0,o}function l(e,t,r){if(hd(e),s(),r||"function"!=typeof t||(r=t,t=null),!r)return new Promise(a);function a(a,i){n.run(e,td(t),(function(t,n,o){n=n||e,t?i(t):a?a(n):r(null,n,o)}))}a(null,r)}function c(e,t){if(s(),pd("process",o.Parser),gd("process",o.Compiler),!t)return new Promise(n);function n(n,r){var a=td(e);ud.run(o,{file:a},(function(e){e?r(e):n?n(a):t(null,a)}))}n(null,t)}}().freeze(),dd=[].slice,_d={}.hasOwnProperty,ud=id().use((function(e,t){t.tree=e.parse(t.file)})).use((function(e,t,n){e.run(t.tree,t.file,(function(e,r,a){e?n(e):(t.tree=r,t.file=a,n())}))})).use((function(e,t){t.file.contents=e.stringify(t.tree,t.file)}));function md(e,t){return"function"==typeof e&&e.prototype&&(function(e){var t;for(t in e)return!0;return!1}(e.prototype)||t in e.prototype)}function pd(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Parser`")}function gd(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Compiler`")}function Ed(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function hd(e){if(!e||"string"!=typeof e.type)throw new Error("Expected node, got `"+e+"`")}function Sd(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}const fd={reason:"Unexpected metadata element after head",description:"Unexpected element after head. Expected the element before `</head>`",url:!1},Td={reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `--\x3e` to close comments"},bd={reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},Cd={reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},Nd={reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},vd={reason:"Unexpected CDATA section in HTML",description:"Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"},Rd={reason:"Unexpected too big numeric character reference",description:"Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"},Od={reason:"Unexpected closing tag with open child elements",description:"Unexpectedly closing tag. Expected other tags to be closed first",url:!1},Ad={reason:"Unexpected control character",description:"Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"},yd={reason:"Unexpected control character reference",description:"Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"},Id={reason:"Disallowed content inside `<noscript>` in `<head>`",description:"Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",url:!1},Dd={reason:"Unexpected duplicate attribute",description:"Unexpectedly double attribute. Expected attributes to occur only once"},xd={reason:"Unexpected attribute on closing tag",description:"Unexpected attribute. Expected `>` instead"},Md={reason:"Unexpected slash at end of closing tag",description:"Unexpected `%c-1`. Expected `>` instead"},wd={reason:"Unexpected unopened end tag",description:"Unexpected end tag. Expected no end tag or another end tag",url:!1},Ld={reason:"Unexpected end of file",description:"Unexpected end of file. Expected tag name instead"},Pd={reason:"Unexpected end of file in CDATA",description:"Unexpected end of file. Expected `]]>` to close the CDATA"},kd={reason:"Unexpected end of file in comment",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Ud={reason:"Unexpected end of file in doctype",description:"Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"},Fd={reason:"Unexpected end of file in element that can only contain text",description:"Unexpected end of file. Expected text or a closing tag",url:!1},Gd={reason:"Unexpected end of file in comment inside script",description:"Unexpected end of file. Expected `--\x3e` to close the comment"},Bd={reason:"Unexpected end of file in tag",description:"Unexpected end of file. Expected `>` to close the tag"},Hd={reason:"Incorrectly closed comment",description:"Unexpected `%c-1`. Expected `--\x3e` to close the comment"},Yd={reason:"Incorrectly opened comment",description:"Unexpected `%c`. Expected `\x3c!--` to open the comment"},Vd={reason:"Invalid sequence after doctype name",description:"Unexpected sequence at `%c`. Expected `public` or `system`"},zd={reason:"Invalid first character in tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},qd={reason:"Misplaced doctype",description:"Unexpected doctype. Expected doctype before head",url:!1},Kd={reason:"Misplaced `<head>` start tag",description:"Unexpected start tag `<head>`. Expected `<head>` directly after doctype",url:!1},Wd={reason:"Missing attribute value",description:"Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"},Qd={reason:"Missing doctype before other content",description:"Expected a `<!doctype html>` before anything else",url:!1},$d={reason:"Missing doctype name",description:"Unexpected doctype end at `%c`. Expected `html` instead"},jd={reason:"Missing public identifier in doctype",description:"Unexpected `%c`. Expected identifier for `public` instead"},Xd={reason:"Missing system identifier in doctype",description:'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'},Zd={reason:"Missing name in end tag",description:"Unexpected `%c`. Expected an ASCII letter instead"},Jd={reason:"Missing quote before public identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},e_={reason:"Missing quote before system identifier in doctype",description:"Unexpected `%c`. Expected `\"` or `'` instead"},t_={reason:"Missing semicolon after character reference",description:"Unexpected `%c`. Expected `;` instead"},n_={reason:"Missing whitespace after public identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},r_={reason:"Missing whitespace after system identifier in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},a_={reason:"Missing whitespace before doctype name",description:"Unexpected `%c`. Expected ASCII whitespace instead"},i_={reason:"Missing whitespace between attributes",description:"Unexpected `%c`. Expected ASCII whitespace instead"},o_={reason:"Missing whitespace between public and system identifiers in doctype",description:"Unexpected `%c`. Expected ASCII whitespace instead"},s_={reason:"Unexpected nested comment",description:"Unexpected `\x3c!--`. Expected `--\x3e`"},l_={reason:"Unexpected nested `<noscript>` in `<head>`",description:"Unexpected `<noscript>`. Expected a closing tag or a meta element",url:!1},c_={reason:"Unexpected non-conforming doctype declaration",description:'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',url:!1},d_={reason:"Unexpected trailing slash on start tag of non-void element",description:"Unexpected `/`. Expected `>` instead"},__={reason:"Unexpected noncharacter code point referenced by character reference",description:"Unexpected code point. Do not use noncharacters in HTML"},u_={reason:"Unexpected noncharacter character",description:"Unexpected code point `%x`. Do not use noncharacters in HTML"},m_={reason:"Unexpected NULL character referenced by character reference",description:"Unexpected code point. Do not use NULL characters in HTML"},p_={reason:"Unexpected end of file",description:"Unexpected end of file. Expected closing tag instead",url:!1},g_={reason:"Unexpected surrogate character referenced by character reference",description:"Unexpected code point. Do not use lone surrogate characters in HTML"},E_={reason:"Unexpected surrogate character",description:"Unexpected code point `%x`. Do not use lone surrogate characters in HTML"},h_={reason:"Invalid character after system identifier in doctype",description:"Unexpected character at `%c`. Expected `>`"},S_={reason:"Unexpected character in attribute name",description:"Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"},f_={reason:"Unexpected character in unquoted attribute value",description:"Unexpected `%c`. Quote the attribute value to include it"},T_={reason:"Unexpected equals sign before attribute name ",description:"Unexpected `%c`. Add an attribute name before it"},b_={reason:"Unexpected NULL character",description:"Unexpected code point `%x`. Do not use NULL characters in HTML"},C_={reason:"Unexpected question mark instead of tag name",description:"Unexpected `%c`. Expected an ASCII letter instead"},N_={reason:"Unexpected slash in tag",description:"Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"},v_={reason:"Unexpected unknown named character reference",description:"Unexpected character reference. Expected known named character references"};var R_={abandonedHeadElementChild:fd,abruptClosingOfEmptyComment:Td,abruptDoctypePublicIdentifier:bd,abruptDoctypeSystemIdentifier:Cd,absenceOfDigitsInNumericCharacterReference:Nd,cdataInHtmlContent:vd,characterReferenceOutsideUnicodeRange:Rd,closingOfElementWithOpenChildElements:Od,controlCharacterInInputStream:Ad,controlCharacterReference:yd,disallowedContentInNoscriptInHead:Id,duplicateAttribute:Dd,endTagWithAttributes:xd,endTagWithTrailingSolidus:Md,endTagWithoutMatchingOpenElement:wd,eofBeforeTagName:Ld,eofInCdata:Pd,eofInComment:kd,eofInDoctype:Ud,eofInElementThatCanContainOnlyText:Fd,eofInScriptHtmlCommentLikeText:Gd,eofInTag:Bd,incorrectlyClosedComment:Hd,incorrectlyOpenedComment:Yd,invalidCharacterSequenceAfterDoctypeName:Vd,invalidFirstCharacterOfTagName:zd,misplacedDoctype:qd,misplacedStartTagForHeadElement:Kd,missingAttributeValue:Wd,missingDoctype:Qd,missingDoctypeName:$d,missingDoctypePublicIdentifier:jd,missingDoctypeSystemIdentifier:Xd,missingEndTagName:Zd,missingQuoteBeforeDoctypePublicIdentifier:Jd,missingQuoteBeforeDoctypeSystemIdentifier:e_,missingSemicolonAfterCharacterReference:t_,missingWhitespaceAfterDoctypePublicKeyword:n_,missingWhitespaceAfterDoctypeSystemKeyword:r_,missingWhitespaceBeforeDoctypeName:a_,missingWhitespaceBetweenAttributes:i_,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:o_,nestedComment:s_,nestedNoscriptInHead:l_,nonConformingDoctype:c_,nonVoidHtmlElementStartTagWithTrailingSolidus:d_,noncharacterCharacterReference:__,noncharacterInInputStream:u_,nullCharacterReference:m_,openElementsLeftAfterEof:p_,surrogateCharacterReference:g_,surrogateInInputStream:E_,unexpectedCharacterAfterDoctypeSystemIdentifier:h_,unexpectedCharacterInAttributeName:S_,unexpectedCharacterInUnquotedAttributeValue:f_,unexpectedEqualsSignBeforeAttributeName:T_,unexpectedNullCharacter:b_,unexpectedQuestionMarkInsteadOfTagName:C_,unexpectedSolidusInTag:N_,unknownNamedCharacterReference:v_},O_=R(Object.freeze({__proto__:null,abandonedHeadElementChild:fd,abruptClosingOfEmptyComment:Td,abruptDoctypePublicIdentifier:bd,abruptDoctypeSystemIdentifier:Cd,absenceOfDigitsInNumericCharacterReference:Nd,cdataInHtmlContent:vd,characterReferenceOutsideUnicodeRange:Rd,closingOfElementWithOpenChildElements:Od,controlCharacterInInputStream:Ad,controlCharacterReference:yd,disallowedContentInNoscriptInHead:Id,duplicateAttribute:Dd,endTagWithAttributes:xd,endTagWithTrailingSolidus:Md,endTagWithoutMatchingOpenElement:wd,eofBeforeTagName:Ld,eofInCdata:Pd,eofInComment:kd,eofInDoctype:Ud,eofInElementThatCanContainOnlyText:Fd,eofInScriptHtmlCommentLikeText:Gd,eofInTag:Bd,incorrectlyClosedComment:Hd,incorrectlyOpenedComment:Yd,invalidCharacterSequenceAfterDoctypeName:Vd,invalidFirstCharacterOfTagName:zd,misplacedDoctype:qd,misplacedStartTagForHeadElement:Kd,missingAttributeValue:Wd,missingDoctype:Qd,missingDoctypeName:$d,missingDoctypePublicIdentifier:jd,missingDoctypeSystemIdentifier:Xd,missingEndTagName:Zd,missingQuoteBeforeDoctypePublicIdentifier:Jd,missingQuoteBeforeDoctypeSystemIdentifier:e_,missingSemicolonAfterCharacterReference:t_,missingWhitespaceAfterDoctypePublicKeyword:n_,missingWhitespaceAfterDoctypeSystemKeyword:r_,missingWhitespaceBeforeDoctypeName:a_,missingWhitespaceBetweenAttributes:i_,missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:o_,nestedComment:s_,nestedNoscriptInHead:l_,nonConformingDoctype:c_,nonVoidHtmlElementStartTagWithTrailingSolidus:d_,noncharacterCharacterReference:__,noncharacterInInputStream:u_,nullCharacterReference:m_,openElementsLeftAfterEof:p_,surrogateCharacterReference:g_,surrogateInInputStream:E_,unexpectedCharacterAfterDoctypeSystemIdentifier:h_,unexpectedCharacterInAttributeName:S_,unexpectedCharacterInUnquotedAttributeValue:f_,unexpectedEqualsSignBeforeAttributeName:T_,unexpectedNullCharacter:b_,unexpectedQuestionMarkInsteadOfTagName:C_,unexpectedSolidusInTag:N_,unknownNamedCharacterReference:v_,default:R_})),A_="https://html.spec.whatwg.org/multipage/parsing.html#parse-error-",y_={2:!0,1:!1,0:null},I_=function(t){var n=e(t,this.data("settings")),r=n.position;r="boolean"!=typeof r||r,this.Parser=function(e,t){var a=n.fragment?"parseFragment":"parse",i=n.emitParseErrors?function(r){var a,i,o=r.code,s=(m=o,m.replace(/-[a-z]/g,D_)),l=n[s],c=null==l||l,d="number"==typeof c?c:c?1:0,_={line:r.startLine,column:r.startCol,offset:r.startOffset},u={line:r.endLine,column:r.endCol,offset:r.endOffset};var m;d&&(a=O_[s]||{reason:"",description:""},(i=t.message(p(a.reason),{start:_,end:u})).source="parse-error",i.ruleId=o,i.fatal=y_[d],i.note=p(a.description),i.url=!1===a.url?null:A_+o);function p(e){return e.replace(/%c(?:-(\d+))?/g,g).replace(/%x/g,E)}function g(t,n){var a=n?-parseInt(n,10):0,i=e.charAt(r.startOffset+a);return"`"===i?"` ` `":i}function E(){return"0x"+e.charCodeAt(r.startOffset).toString(16).toUpperCase()}}:null,o=new ei({sourceCodeLocationInfo:r,onParseError:i,scriptingEnabled:!1});return Os(o[a](e),{space:n.space,file:t,verbose:n.verbose})}};function D_(e){return e.charAt(1).toUpperCase()}var x_=function(e,t){var n;if(null!=t&&"string"!=typeof t&&("object"!=typeof t||0===t.length))throw new Error("Expected `string` or `Array.<string>` for `tagNames`, not `"+t+"`");if(!e||"object"!=typeof e||"element"!==e.type||"string"!=typeof e.tagName)return!1;if(null==t)return!0;if(n=e.tagName,"string"==typeof t)return n===t;return-1!==t.indexOf(n)};var M_=function(e,t,n){var r,a,i,o=l(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");r=e.children,i=r.length,t&&t.type&&(t=r.indexOf(t));if(isNaN(t)||t<0||t===1/0)throw new Error("Expected positive finite index or child node");for(;++t<i;)if(a=r[t],o(a,t,e))return a;return null};var w_=function(e){var t,n,r,a,i,o=e.children||[],s=o.length,l=cu(e),c=iu(e,{}),d=-1;if("text"===e.type||"comment"===e.type)return tu(e,{whiteSpace:c,breakBefore:!0,breakAfter:!0});t=[];for(;++d<s;)n=eu(o[d],d,e,{whiteSpace:c,breakBefore:0===d&&l,breakAfter:d===s-1?l:x_(o[d+1],"br")}),t=t.concat(n);d=-1,s=t.length,r=[];for(;++d<s;)"number"==typeof(a=t[d])?void 0!==i&&a>i&&(i=a):""!==a&&(i&&r.push(q(Z_,i)),i=0,r.push(a));return r.join("")},L_=Math.min,P_=Math.max,k_=9,U_=32,F_=8203,G_=1564,B_=8206,H_=8207,Y_=8234,V_=8235,z_=8236,q_=8237,K_=8238,W_=8294,Q_=8295,$_=8296,j_=8297,X_="\t",Z_="\n",J_=" ";function eu(e,t,n,r){return"element"===e.type?function(e,t,n,r){var a,i,o,s=iu(e,r),l=e.children||[],c=l.length,d=-1,_=[];if(function(e){var t=e.properties||{};return(x_(e,["datalist","head","noembed","noframes","rp","script","style","template","title","noscript"])||t.hidden||x_(e,"dialog")&&!t.open)}(e))return _;x_(e,"br")?o=Z_:lu(e)&&M_(n,e,lu)?o=Z_:x_(e,"p")?(i=2,o=2):cu(e)&&(i=1,o=1);for(;++d<c;)a=eu(l[d],d,e,{whiteSpace:s,breakBefore:0===d&&i,breakAfter:d===c-1?o:x_(l[d+1],"br")}),_=_.concat(a);su(e)&&M_(n,e,su)&&_.push(X_);i&&_.unshift(i);o&&_.push(o);return _}(e,0,n,r):"text"===e.type?["normal"===r.whiteSpace?tu(e,r):nu(e)]:[]}function tu(e,t){var n,r,a,i,o,s=t.breakBefore,l=t.breakAfter,c=String(e.value),d=-1,_=c.length,u=[],m=[];for(n=0,r=-1===(r=c.indexOf(Z_))?c.length:r;-1!==r&&(a=au(a=ru(a=c.slice(n,r)),s,l),u.push(a),r!==c.length);)n=r+1,r=-1===(r=c.indexOf(Z_,n))?c.length:r;for(d=-1,_=u.length,o="";++d<_;)a=u[d],i=u[d+1]||"",a.charCodeAt(a.length-1)!==F_&&i.charCodeAt(0)!==F_?a&&(o&&m.push(o),m.push(a),o=J_):(m.push(a),o="");return m.join("")}function nu(e){return String(e.value)}function ru(e){for(var t=-1,n=e.length,r="";++t<n;)ou(e.charCodeAt(t))||(r+=e.charAt(t));return r}function au(e,t,n){for(var r,a,i=0,o=e.length,s=[];i<=o&&((a=e.charCodeAt(i))===U_||a===k_);)i++;for(0===i||t||s.push(""),r=l(i-1);i<o;){for(r=-1===r?o:r,s.push(e.slice(i,r)),i=r;i<=o&&((a=e.charCodeAt(i))===U_||a===k_);)i++;i!==o||i===r||n||s.push(""),r=l(i)}return s.join(" ");function l(t){var n=e.indexOf(J_,t+1),r=e.indexOf(X_,t+1);return(-1===n||-1===r?P_:L_)(n,r)}}function iu(e,t){var n=e.properties||{},r=t.whiteSpace||"normal";switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":r;case"textarea":return"pre-wrap";default:return r}}function ou(e){switch(e){case G_:case B_:case H_:case Y_:case V_:case z_:case q_:case K_:case W_:case Q_:case $_:case j_:return!0;default:return!1}}function su(e){return x_(e,["th","td"])}function lu(e){return x_(e,["tr"])}function cu(e){return x_(e,["caption","html","body","address","blockquote","center","dialog","div","figure","figcaption","footer","form,","header","hr","legend","listing","main","p","plaintext","pre","xmp","article","aside","h1","h2","h3","h4","h5","h6","hgroup","nav","section","dir","dd","dl","dt","menu","ol","ul"])}const du=ql.renderToString;var _u=function(e){const t=(e||{}).throwOnError||!1;return function(n,r){Gl(n,"element",(function(n){const a=n.properties.className||[],i=a.includes("math-inline"),o=a.includes("math-display");if(!i&&!o)return;const s=w_(n);let l;try{l=du(s,uu({},e,{displayMode:o,throwOnError:!0}))}catch(a){const i=t?"fail":"message",c=[pu,a.name.toLowerCase()].join(":");r[i](a.message,n.position,c),l=du(s,uu({},e,{displayMode:o,throwOnError:!1,strict:"ignore"}))}n.children=mu.parse(l).children}))}};const uu=Object.assign,mu=cd().use(I_,{fragment:!0,position:!1}),pu="rehype-katex";var gu=function(e){var t;if(e&&"object"==typeof e&&"text"===e.type)t=e.value||"";else{if("string"!=typeof e)return!1;t=e}return""===t.replace(Eu,"")},Eu=/[ \t\n\f\r]/g;function hu(e){return function(t,n,r){var a,i=t&&t.children;if(n+=e,a=i&&i[n],!r)for(;a&&gu(a);)a=i[n+=e];return a}}var Su={before:hu(-1),after:hu(1)},fu=Su.after,Tu=function(e,t){return fu(e,-1,t)};var bu=function(e,t){return e&&e.children&&e.children.indexOf(t)};var Cu=function(e){return Nu(e)&&gu(e.value.charAt(0))},Nu=l("text");var vu=function(e){return function(t,n,r){var a=t.tagName,i=!!Ru.call(e,a)&&e[a];return!!i&&i(t,n,r)}},Ru={}.hasOwnProperty;var Ou=Su.after,Au=l("comment"),yu="optgroup",Iu=["option"].concat(yu),Du=["dt","dd"],xu="li",Mu=["menuitem","hr","menu"],wu=["rp","rt"],Lu=["tbody","tfoot"],Pu="tr",ku=["td","th"],Uu=["a","audio","del","ins","map","noscript","video"],Fu=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","menu","nav","ol","p","pre","section","table","ul"],Gu=vu({html:function(e,t,n){var r=Ou(n,t);return!r||!Au(r)},head:Bu,body:function(e,t,n){var r=Ou(n,t);return!r||!Au(r)},p:function(e,t,n){var r=Ou(n,t);return r?x_(r,Fu):!n||!x_(n,Uu)},li:function(e,t,n){var r=Ou(n,t);return!r||x_(r,xu)},dt:function(e,t,n){var r=Ou(n,t);return r&&x_(r,Du)},dd:function(e,t,n){var r=Ou(n,t);return!r||x_(r,Du)},rt:Hu,rp:Hu,optgroup:function(e,t,n){var r=Ou(n,t);return!r||x_(r,yu)},option:function(e,t,n){var r=Ou(n,t);return!r||x_(r,Iu)},menuitem:function(e,t,n){var r=Ou(n,t);return!r||x_(r,Mu)},colgroup:Bu,caption:Bu,thead:function(e,t,n){var r=Ou(n,t);return r&&x_(r,Lu)},tbody:function(e,t,n){var r=Ou(n,t);return!r||x_(r,Lu)},tfoot:function(e,t,n){return!Ou(n,t)},tr:function(e,t,n){var r=Ou(n,t);return!r||x_(r,Pu)},td:Yu,th:Yu});function Bu(e,t,n){var r=Ou(n,t,!0);return!r||!Au(r)&&!Cu(r)}function Hu(e,t,n){var r=Ou(n,t);return!r||x_(r,wu)}function Yu(e,t,n){var r=Ou(n,t);return!r||x_(r,ku)}var Vu=Su.before,zu={}.hasOwnProperty,qu=l("comment"),Ku=["title","base"],Wu=["meta","link","script","style","template"],Qu=["thead","tbody"],$u="tr";var ju={opening:vu({html:function(e){var t=Tu(e);return!t||!qu(t)},head:function(e){var t,n,r=e.children,a=r.length,i={},o=-1;for(;++o<a;)if(t=r[o],n=t.tagName,x_(t,Ku)){if(zu.call(i,n))return!1;i[n]=!0}return Boolean(a)},body:function(e){var t=Tu(e,!0);return!t||!qu(t)&&!Cu(t)&&!x_(t,Wu)},colgroup:function(e,t,n){var r=Vu(n,t),a=Tu(e,!0);if(x_(r,"colgroup")&&Gu(r,bu(n,r),n))return!1;return a&&x_(a,"col")},tbody:function(e,t,n){var r=Vu(n,t),a=Tu(e);if(x_(r,Qu)&&Gu(r,bu(n,r),n))return!1;return a&&x_(a,$u)}}),closing:Gu},Xu=function(e,t){var n=t&&t.children,r=n&&n.length,a=-1,i=[];for(;++a<r;)i[a]=Vm(e,n[a],a,t);return i.join("")};var Zu={nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},Ju=Object.freeze({__proto__:null,nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",fnof:"ƒ",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",bull:"•",hellip:"…",prime:"′",Prime:"″",oline:"‾",frasl:"⁄",weierp:"℘",image:"ℑ",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",quot:'"',amp:"&",lt:"<",gt:">",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€",default:Zu});var em={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},tm=Object.freeze({__proto__:null,AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:em}),nm=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var rm=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var am=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var im=function(e){return am(e)||rm(e)};var om=Object.freeze({__proto__:null,default:["cent","copy","divide","gt","lt","not","para","times"]}),sm=R(Ju),lm=R(tm),cm=R(om),dm=rm,_m=hm;hm.escape=function(e){return hm(e,{escapeOnly:!0,useNamedReferences:!0})};var um={}.hasOwnProperty,mm=function(){var e,t={};for(e in sm)t[sm[e]]=e;return t}(),pm=fm(['"',"'","<",">","&","`"]),gm=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Em=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;function hm(e,t){var n=t||{},r=n.subset,a=r?fm(r):pm,i=n.escapeOnly,o=n.omitOptionalSemicolons;return e=e.replace(a,s),r||i?e:e.replace(gm,(function(e,t,n){return Sm(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536,n.charAt(t+2),o)})).replace(Em,s);function s(e,t,r){return function(e,t,n){var r,a,i,o,s=n.useShortestReferences,l=n.omitOptionalSemicolons;(s||n.useNamedReferences)&&um.call(mm,e)&&(r=function(e,t,n,r){var a="&"+e;if(n&&um.call(lm,e)&&-1===cm.indexOf(e)&&(!r||t&&"="!==t&&!im(t)))return a;return a+";"}(mm[e],t,l,n.attribute));!s&&r||(a=e.charCodeAt(0),i=Sm(a,t,l),s&&(o=function(e,t,n){var r="&#"+String(e);return n&&t&&!dm(t)?r:r+";"}(a,t,l)).length<i.length&&(i=o));if(r&&(!s||r.length<i.length))return r;return i}(e,r.charAt(t+1),n)}}function Sm(e,t,n){var r="&#x"+e.toString(16).toUpperCase();return n&&t&&!nm(t)?r:r+";"}function fm(e){return new RegExp("["+e.join("")+"]","g")}var Tm=function(t,n,r,a){var i=n.value;return function(e){return e&&("script"===e.tagName||"style"===e.tagName)}(a)?i:_m(i,e(t.entities,{subset:["<","&"]}))};var bm=[" ","\t","\n","\r","\f"],Cm=bm.concat("&","/",">","="),Nm=bm.concat("&",">"),vm=Nm.concat("\0",'"',"'","<","=","`"),Rm=["&","'"],Om=["&",'"'],Am={name:[[Cm,Cm.concat('"',"'","`")],[Cm.concat("\0",'"',"'","<"),Cm.concat("\0",'"',"'","<","`")]],unquoted:[[Nm,vm],[vm,vm]],single:[[Rm,Rm.concat('"',"`")],[Rm.concat("\0"),Rm.concat("\0",'"',"`")]],double:[[Om,Om.concat("'","`")],[Om.concat("\0"),Om.concat("\0","'","`")]]},ym=ss.stringify,Im=ms.stringify,Dm=function(e,t,n,r){var a,i,o,s,l,c,d=e.schema,_=t.tagName,u="",m=t;"html"===d.space&&"svg"===_&&(e.schema=ko);l=function(e,t){var n,r,a,i,o,s,l=[];for(n in t)null!=(r=t[n])&&(a=Fm(e,n,r))&&l.push(a);i=l.length,o=-1;for(;++o<i;)a=l[o],s=null,e.tight&&(s=a.charAt(a.length-1)),o!==i-1&&s!==Mm&&s!==wm&&(l[o]=a+xm);return l.join("")}(e,t.properties),"svg"===e.schema.space?(o=!1,i=!0,a=e.closeEmpty):(o=e.omit,i=e.close,a=-1!==e.voids.indexOf(_.toLowerCase()),"template"===_&&(m=t.content));s=Xu(e,m),a=!s&&a,!l&&o&&o.opening(t,n,r)||(u=Pm+_+(l?xm+l:""),a&&i&&(c=l.charAt(l.length-1),(!e.tightClose||c===Um||"svg"===e.schema.space&&c&&c!==Mm&&c!==wm)&&(u+=xm),u+=Um),u+=km);u+=s,a||o&&o.closing(t,n,r)||(u+=Pm+Um+_+km);return e.schema=d,u},xm=" ",Mm='"',wm="'",Lm="=",Pm="<",km=">",Um="/";function Fm(t,n,r){var a=t.schema,i=Fo(a,n),o=i.attribute;return!i.overloadedBoolean||r!==o&&""!==r?(i.boolean||i.overloadedBoolean&&"string"!=typeof r)&&(r=Boolean(r)):r=!0,null==r||!1===r||"number"==typeof r&&isNaN(r)?"":(o=function(t,n){var r="html"===t.schema.space?t.valid:1,a=Am.name[r][t.safe];return _m(n,e(t.entities,{subset:a}))}(t,o),!0===r?o:o+function(t,n,r,a){var i,o,s=t.entities,l=t.quote,c=t.alternative;"object"==typeof r&&"length"in r&&(r=(a.commaSeparated?Im:ym)(r,{padLeft:!t.tightLists}));!(r=String(r))&&t.collapseEmpty||(i=r,t.unquoted&&(o=Am.unquoted[t.valid][t.safe],i=_m(r,e(s,{subset:o,attribute:!0}))),t.unquoted&&i===r||(c&&vs(r,l)>vs(r,c)&&(l=c),o=(o=l===wm?Am.single:Am.double)["html"===t.schema.space?t.valid:1][t.safe],r=_m(r,e(s,{subset:o,attribute:!0})),r=l+r+l),r=r?Lm+r:r);return r}(t,0,r,i))}var Gm=function(e,t){var n=e.tightDoctype?"":" ",r=t.name,a=t.public,i=t.system,o=["<!doctype"];r&&(o.push(n,r),null!=a?o.push(" public",n,Bm(a)):null!=i&&o.push(" system"),null!=i&&o.push(n,Bm(i)));return o.join("")+">"};function Bm(e){var t=-1===e.indexOf('"')?'"':"'";return t+e+t}var Hm=function(e,t){return"\x3c!--"+t.value+"--\x3e"};var Ym=function(e,t){return e.dangerous?t.value:Tm(e,t)};var Vm=function(e,t,n,r){var a=t&&t.type;if(!a)throw new Error("Expected node, not `"+t+"`");if(!zm.call(qm,a))throw new Error("Cannot compile unknown node `"+a+"`");return qm[a](e,t,n,r)},zm={}.hasOwnProperty,qm={};qm.root=Xu,qm.text=Tm,qm.element=Dm,qm.doctype=Gm,qm.comment=Hm,qm.raw=Ym;var Km=function(e,t){var n=t||{},r=n.quote||Wm,a=r===Wm?Qm:Wm,i=n.quoteSmart;if(r!==Wm&&r!==Qm)throw new Error("Invalid quote `"+r+"`, expected `"+Qm+"` or `"+Wm+"`");return Vm({valid:n.allowParseErrors?0:1,safe:n.allowDangerousCharacters?0:1,schema:"svg"===n.space?ko:Do,omit:n.omitOptionalTags&&ju,quote:r,alternative:i?a:null,unquoted:Boolean(n.preferUnquoted),tight:n.tightAttributes,tightDoctype:Boolean(n.tightDoctype),tightLists:n.tightCommaSeparatedLists,tightClose:n.tightSelfClosing,collapseEmpty:n.collapseEmptyAttributes,dangerous:n.allowDangerousHTML,voids:n.voids||pl.concat(),entities:n.entities||{},close:n.closeSelfClosing,closeEmpty:n.closeEmptyElements},e)},Wm='"',Qm="'";var $m=Km,jm=function(t){var n=e(t,this.data("settings"));this.Compiler=function(e){return $m(e,n)}};var Xm=v((function(e){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}})),Zm=function(t){var n,r,a;for(r in Xm(o,t),Xm(i,o),n=o.prototype)(a=n[r])&&"object"==typeof a&&(n[r]="concat"in a?a.concat():e(a));return o;function i(e){return t.apply(this,e)}function o(){return this instanceof o?t.apply(this,arguments):new i(arguments)}};var Jm=function(e,t,n){return function(){var r=n||this,a=r[e];return r[e]=!t,function(){r[e]=a}}};var ep=function(e){var t=function(e){var t=[],n=e.indexOf("\n");for(;-1!==n;)t.push(n+1),n=e.indexOf("\n",n+1);return t.push(e.length+1),t}(String(e));return{toPosition:tp(t),toOffset:np(t)}};function tp(e){return function(t){var n=-1,r=e.length;if(t<0)return{};for(;++n<r;)if(e[n]>t)return{line:n+1,column:t-(e[n-1]||0)+1,offset:t};return{}}}function np(e){return function(t){var n=t&&t.line,r=t&&t.column;if(!isNaN(n)&&!isNaN(r)&&n-1 in e)return(e[n-2]||0)+r-1||0;return-1}}var rp=function(e,t){return function(n){var r,a=0,i=n.indexOf(ap),o=e[t],s=[];for(;-1!==i;)s.push(n.slice(a,i)),a=i+1,(r=n.charAt(a))&&-1!==o.indexOf(r)||s.push(ap),i=n.indexOf(ap,a+1);return s.push(n.slice(a)),s.join("")}},ap="\\";var ip,op=59,sp=function(e){var t,n="&"+e+";";if((ip=ip||document.createElement("i")).innerHTML=n,(t=ip.textContent).charCodeAt(t.length-1)===op&&"semi"!==e)return!1;return t!==n&&t};var lp=R(Object.freeze({__proto__:null,default:{0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"}})),cp=function(e,t){var n,r,a={};t||(t={});for(r in mp)n=t[r],a[r]=null==n?mp[r]:n;(a.position.indent||a.position.start)&&(a.indent=a.position.indent||[],a.position=a.position.start);return function(e,t){var n,r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b=t.additional,C=t.nonTerminated,N=t.text,v=t.reference,R=t.warning,O=t.textContext,A=t.referenceContext,y=t.warningContext,I=t.position,D=t.indent||[],x=e.length,M=0,w=-1,L=I.column||1,P=I.line||1,k="",U=[];"string"==typeof b&&(b=b.charCodeAt(0));h=F(),c=R?function(e,t){var n=F();n.column+=t,n.offset+=t,R.call(y,Fp[e],n,e)}:up,M--,x++;for(;++M<x;)if(o===gp&&(L=D[w]||1),(o=e.charCodeAt(M))===Sp){if((l=e.charCodeAt(M+1))===pp||l===gp||l===Ep||l===hp||l===Sp||l===Tp||l!=l||b&&l===b){k+=_p(o),L++;continue}for(m=p=M+1,T=p,l===Cp?(T=++m,(l=e.charCodeAt(T))===Np||l===vp?(g=Ap,T=++m):g=yp):g=Op,n="",u="",i="",E=Dp[g],T--;++T<x&&(l=e.charCodeAt(T),E(l));)i+=_p(l),g===Op&&dp.call(lm,i)&&(n=i,u=lm[i]);(a=e.charCodeAt(T)===fp)&&(T++,(r=g===Op&&sp(i))&&(n=i,u=r)),f=1+T-p,(a||C)&&(i?g===Op?(a&&!u?c(Pp,1):(n!==i&&(T=m+n.length,f=1+T-m,a=!1),a||(d=n?xp:wp,t.attribute?(l=e.charCodeAt(T))===bp?(c(d,f),u=null):im(l)?u=null:c(d,f):c(d,f))),s=u):(a||c(Mp,f),Gp(s=parseInt(i,Ip[g]))?(c(Up,f),s=_p(Rp)):s in lp?(c(kp,f),s=lp[s]):(_="",Bp(s)&&c(kp,f),s>65535&&(_+=_p((s-=65536)>>>10|55296),s=56320|1023&s),s=_+_p(s))):g!==Op&&c(Lp,f)),s?(G(),h=F(),M=T-1,L+=T-p+1,U.push(s),(S=F()).offset++,v&&v.call(A,s,{start:h,end:S},e.slice(p-1,T)),h=S):(i=e.slice(p-1,T),k+=i,L+=i.length,M=T-1)}else 10===o&&(P++,w++,L=0),o==o?(k+=_p(o),L++):G();return U.join("");function F(){return{line:P,column:L,offset:M+(I.offset||0)}}function G(){k&&(U.push(k),N&&N.call(O,k,{start:h,end:F()}),k="")}}(e,a)},dp={}.hasOwnProperty,_p=String.fromCharCode,up=Function.prototype,mp={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},pp=9,gp=10,Ep=12,hp=32,Sp=38,fp=59,Tp=60,bp=61,Cp=35,Np=88,vp=120,Rp=65533,Op="named",Ap="hexadecimal",yp="decimal",Ip={};Ip[Ap]=16,Ip[yp]=10;var Dp={};Dp[Op]=im,Dp[yp]=rm,Dp[Ap]=nm;var xp=1,Mp=2,wp=3,Lp=4,Pp=5,kp=6,Up=7,Fp={};function Gp(e){return e>=55296&&e<=57343||e>1114111}function Bp(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}Fp[xp]="Named character references must be terminated by a semicolon",Fp[Mp]="Numeric character references must be terminated by a semicolon",Fp[wp]="Named character references cannot be empty",Fp[Lp]="Numeric character references cannot be empty",Fp[Pp]="Named character references must be known",Fp[kp]="Numeric character references cannot be disallowed",Fp[Up]="Numeric character references cannot be outside the permissible Unicode range";var Hp=function(t){return r.raw=function(t,r,i){return cp(t,e(i,{position:n(r),warning:a}))},r;function n(e){for(var n=t.offset,r=e.line,a=[];++r&&r in n;)a.push((n[r]||0)+1);return{start:e,indent:a}}function r(e,r,i){cp(e,{position:n(r),warning:a,text:i,reference:i,textContext:t,referenceContext:t})}function a(e,n,r){3!==r&&t.file.message(e,n)}};var Yp=function(e){return function(t,n){var r,a,i,o,s,l,c=this,d=c.offset,_=[],u=c[e+"Methods"],m=c[e+"Tokenizers"],p=n.line,g=n.column;if(!t)return _;f.now=h,f.file=c.file,E("");for(;t;){for(r=-1,a=u.length,s=!1;++r<a&&(o=u[r],!(i=m[o])||i.onlyAtStart&&!c.atStart||i.notInList&&c.inList||i.notInBlock&&c.inBlock||i.notInLink&&c.inLink||(l=t.length,i.apply(c,[f,t]),!(s=l!==t.length))););s||c.file.fail(new Error("Infinite loop"),f.now())}return c.eof=h(),_;function E(e){for(var t=-1,n=e.indexOf("\n");-1!==n;)p++,t=n,n=e.indexOf("\n",n+1);-1===t?g+=e.length:g=e.length-t,p in d&&(-1!==t?g+=d[p]:g<=d[p]&&(g=d[p]+1))}function h(){var e={line:p,column:g};return e.offset=c.toOffset(e),e}function S(e){this.start=e,this.end=h()}function f(e){var n=function(){var e=[],t=p+1;return function(){for(var n=p+1;t<n;)e.push((d[t]||0)+1),t++;return e}}(),r=function(){var e=h();return(function(t,n){var r=t.position,a=r?r.start:e,i=[],o=r&&r.end.line,s=e.line;if(t.position=new S(a),r&&n&&r.indent){if(i=r.indent,o<s){for(;++o<s;)i.push((d[o]||0)+1);i.push(e.column)}n=i.concat(n)}return t.position.indent=n||[],t})}(),a=h();return function(e){t.slice(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"),h())}(e),i.reset=o,o.test=s,i.test=s,t=t.slice(e.length),E(e),n=n(),i;function i(e,t){return r(function(e,t){var n=t?t.children:_,r=n[n.length-1];return r&&e.type===r.type&&("text"===e.type||"blockquote"===e.type)&&Vp(r)&&Vp(e)&&(e=("text"===e.type?zp:qp).call(c,r,e)),e!==r&&n.push(e),c.atStart&&0!==_.length&&c.exitStart(),e}(r(e),t),n)}function o(){var n=i.apply(null,arguments);return p=a.line,g=a.column,t=e+t,n}function s(){var n=r({});return p=a.line,g=a.column,t=e+t,n.position}}}};function Vp(e){var t,n;return"text"!==e.type||!e.position||(t=e.position.start,n=e.position.end,t.line!==n.line||n.column-t.column===e.value.length)}function zp(e,t){return e.value+=t.value,e}function qp(e,t){return this.options.commonmark||this.options.gfm?t:(e.children=e.children.concat(t.children),e)}var Kp=jp,Wp=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],Qp=Wp.concat(["~","|"]),$p=Qp.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function jp(e){var t=e||{};return t.commonmark?$p:t.gfm?Qp:Wp}jp.default=Wp,jp.gfm=Qp,jp.commonmark=$p;var Xp={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},Zp=function(t){var n,r,a=this.options;if(null==t)t={};else{if("object"!=typeof t)throw new Error("Invalid value `"+t+"` for setting `options`");t=e(t)}for(n in Xp){if(null==(r=t[n])&&(r=a[n]),"blocks"!==n&&"boolean"!=typeof r||"blocks"===n&&"object"!=typeof r)throw new Error("Invalid value `"+r+"` for setting `options."+n+"`");t[n]=r}return this.options=t,this.escape=Kp(t),this};var Jp=function(e,t){return f(e,t?eg:tg),e};function eg(e){delete e.position}function tg(e){e.position=void 0}var ng=function(){var t,n=String(this.file),r={line:1,column:1,offset:0},a=e(r);65279===(n=n.replace(ag,rg)).charCodeAt(0)&&(n=n.slice(1),a.column++,a.offset++);t={type:"root",children:this.tokenizeBlock(n,a),position:{start:r,end:this.eof||e(r)}},this.options.position||Jp(t,!0);return t},rg="\n",ag=/\r\n|\r/g;var ig=function(e,t,n){var r,a,i,o,s=t.charAt(0);if(s!==og)return;if(n)return!0;o=1,r=t.length,a=s,i="";for(;o<r&&(s=t.charAt(o),Se(s));)i+=s,s===og&&(a+=i,i=""),o++;e(a)},og="\n";var sg=function(e){var t=String(e),n=t.length;for(;t.charAt(--n)===lg;);return t.slice(0,n+1)},lg="\n";var cg=function(e,t,n){var r,a,i,o=-1,s=t.length,l="",c="",d="",_="";for(;++o<s;)if(r=t.charAt(o),i)if(i=!1,l+=d,c+=_,d="",_="",r===dg)d=r,_=r;else for(l+=r,c+=r;++o<s;){if(!(r=t.charAt(o))||r===dg){_=r,d=r;break}l+=r,c+=r}else if(r===ug&&t.charAt(o+1)===r&&t.charAt(o+2)===r&&t.charAt(o+3)===r)d+=mg,o+=3,i=!0;else if(r===_g)d+=r,i=!0;else{for(a="";r===_g||r===ug;)a+=r,r=t.charAt(++o);if(r!==dg)break;d+=a+r,_+=r}if(c)return!!n||e(l)({type:"code",lang:null,meta:null,value:sg(c)})},dg="\n",_g="\t",ug=" ",mg=q(ug,4);var pg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E=this.options.gfm,h=t.length+1,S=0,f="";if(!E)return;for(;S<h&&((i=t.charAt(S))===hg||i===Eg);)f+=i,S++;if(p=S,(i=t.charAt(S))!==Sg&&i!==fg)return;S++,a=i,r=1,f+=i;for(;S<h&&(i=t.charAt(S))===a;)f+=i,r++,S++;if(r<Tg)return;for(;S<h&&((i=t.charAt(S))===hg||i===Eg);)f+=i,S++;o="",c="";for(;S<h&&(i=t.charAt(S))!==gg&&(a!==fg||i!==a);)i===hg||i===Eg?c+=i:(o+=c+i,c=""),S++;if((i=t.charAt(S))&&i!==gg)return;if(n)return!0;(g=e.now()).column+=f.length,g.offset+=f.length,f+=o,o=this.decode.raw(this.unescape(o),g),c&&(f+=c);c="",u="",m="",d="",_="";var T=!0;for(;S<h;)if(i=t.charAt(S),d+=u,_+=m,u="",m="",i===gg){for(T?(f+=i,T=!1):(u+=i,m+=i),c="",S++;S<h&&(i=t.charAt(S))===hg;)c+=i,S++;if(u+=c,m+=c.slice(p),!(c.length>=bg)){for(c="";S<h&&(i=t.charAt(S))===a;)c+=i,S++;if(u+=c,m+=c,!(c.length<r)){for(c="";S<h&&((i=t.charAt(S))===hg||i===Eg);)u+=i,m+=i,S++;if(!i||i===gg)break}}}else d+=i,m+=i,S++;f+=d+u,S=-1,h=o.length;for(;++S<h;)if((i=o.charAt(S))===hg||i===Eg)s||(s=o.slice(0,S));else if(s){l=o.slice(S);break}return e(f)({type:"code",lang:s||o||null,meta:l||null,value:_})},gg="\n",Eg="\t",hg=" ",Sg="~",fg="`",Tg=3,bg=4;var Cg=function(e,t,n,r){var a,i,o=e.length,s=-1;for(;++s<o;)if(a=e[s],(void 0===(i=a[1]||{}).pedantic||i.pedantic===n.options.pedantic)&&(void 0===i.commonmark||i.commonmark===n.options.commonmark)&&t[a[0]].apply(n,r))return!0;return!1};var Ng=function(e,t,n){var r,a,i,o,s,l,c,d,_,u=this.offset,m=this.blockTokenizers,p=this.interruptBlockquote,g=e.now(),E=g.line,h=t.length,S=[],f=[],T=[],b=0;for(;b<h&&((a=t.charAt(b))===Og||a===Rg);)b++;if(t.charAt(b)!==Ag)return;if(n)return!0;b=0;for(;b<h;){for(o=t.indexOf(vg,b),c=b,d=!1,-1===o&&(o=h);b<h&&((a=t.charAt(b))===Og||a===Rg);)b++;if(t.charAt(b)===Ag?(b++,d=!0,t.charAt(b)===Og&&b++):b=c,s=t.slice(b,o),!d&&!M(s)){b=c;break}if(!d&&(i=t.slice(b),Cg(p,m,this,[e,i,!0])))break;l=c===b?s:t.slice(c,o),T.push(b-c),S.push(l),f.push(s),b=o+1}b=-1,h=T.length,r=e(S.join(vg));for(;++b<h;)u[E]=(u[E]||0)+T[b],E++;return _=this.enterBlock(),f=this.tokenizeBlock(f.join(vg),g),_(),r({type:"blockquote",children:f})},vg="\n",Rg="\t",Og=" ",Ag=">";var yg=function(e,t,n){var r,a,i,o=this.options.pedantic,s=t.length+1,l=-1,c=e.now(),d="",_="";for(;++l<s;){if((r=t.charAt(l))!==xg&&r!==Dg){l--;break}d+=r}i=0;for(;++l<=s;){if((r=t.charAt(l))!==Mg){l--;break}d+=r,i++}if(i>wg)return;if(!i||!o&&t.charAt(l+1)===Mg)return;s=t.length+1,a="";for(;++l<s;){if((r=t.charAt(l))!==xg&&r!==Dg){l--;break}a+=r}if(!o&&0===a.length&&r&&r!==Ig)return;if(n)return!0;d+=a,a="",_="";for(;++l<s&&(r=t.charAt(l))&&r!==Ig;)if(r===xg||r===Dg||r===Mg){for(;r===xg||r===Dg;)a+=r,r=t.charAt(++l);if(o||!_||a||r!==Mg){for(;r===Mg;)a+=r,r=t.charAt(++l);for(;r===xg||r===Dg;)a+=r,r=t.charAt(++l);l--}else _+=r}else _+=a+r,a="";return c.column+=d.length,c.offset+=d.length,e(d+=_+a)({type:"heading",depth:i,children:this.tokenizeInline(_,c)})},Ig="\n",Dg="\t",xg=" ",Mg="#",wg=6;var Lg=function(e,t,n){var r,a,i,o,s=-1,l=t.length+1,c="";for(;++s<l&&((r=t.charAt(s))===Pg||r===Ug);)c+=r;if(r!==Fg&&r!==Gg&&r!==Bg)return;a=r,c+=r,i=1,o="";for(;++s<l;)if((r=t.charAt(s))===a)i++,c+=o+a,o="";else{if(r!==Ug)return i>=Hg&&(!r||r===kg)?(c+=o,!!n||e(c)({type:"thematicBreak"})):void 0;o+=r}},Pg="\t",kg="\n",Ug=" ",Fg="*",Gg="-",Bg="_",Hg=3;var Yg=function(e){var t,n=0,r=0,a=e.charAt(n),i={};for(;a===Vg||a===zg;)r+=t=a===Vg?Kg:qg,t>1&&(r=Math.floor(r/t)*t),i[r]=n,a=e.charAt(++n);return{indent:r,stops:i}},Vg="\t",zg=" ",qg=1,Kg=4;var Wg=function(e,t){var n,r,a,i,o=e.split($g),s=o.length+1,l=1/0,c=[];o.unshift(q(jg,t)+Xg);for(;s--;)if(r=Yg(o[s]),c[s]=r.stops,0!==M(o[s]).length){if(!r.indent){l=1/0;break}r.indent>0&&r.indent<l&&(l=r.indent)}if(l!==1/0)for(s=o.length;s--;){for(a=c[s],n=l;n&&!(n in a);)n--;i=0!==M(o[s]).length&&l&&n!==l?Qg:"",o[s]=i+o[s].slice(n in a?a[n]+1:0)}return o.shift(),o.join($g)},Qg="\t",$g="\n",jg=" ",Xg="!";var Zg=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v,R=this.options.commonmark,O=this.options.pedantic,A=this.blockTokenizers,y=this.interruptList,I=0,D=t.length,x=null,w=0,L=!1;for(;I<D;){if((i=t.charAt(I))===oE)w+=cE-w%cE;else{if(i!==aE)break;w++}I++}if(w>=cE)return;if((i=t.charAt(I))===Jg||i===tE||i===nE)o=i,a=!1;else{for(a=!0,r="";I<D&&(i=t.charAt(I),rm(i));)r+=i,I++;if(i=t.charAt(I),!r||!(i===rE||R&&i===sE))return;x=parseInt(r,10),o=i}if((i=t.charAt(++I))!==aE&&i!==oE&&(O||i!==iE&&""!==i))return;if(n)return!0;I=0,g=[],E=[],h=[];for(;I<D;){for(s=t.indexOf(iE,I),l=I,c=!1,v=!1,-1===s&&(s=D),N=I+cE,w=0;I<D;){if((i=t.charAt(I))===oE)w+=cE-w%cE;else{if(i!==aE)break;w++}I++}if(w>=cE&&(v=!0),S&&w>=S.indent&&(v=!0),i=t.charAt(I),d=null,!v){if(i===Jg||i===tE||i===nE)d=i,I++,w++;else{for(r="";I<D&&(i=t.charAt(I),rm(i));)r+=i,I++;i=t.charAt(I),I++,r&&(i===rE||R&&i===sE)&&(d=i,w+=r.length+1)}if(d)if((i=t.charAt(I))===oE)w+=cE-w%cE,I++;else if(i===aE){for(N=I+cE;I<N&&t.charAt(I)===aE;)I++,w++;I===N&&t.charAt(I)===aE&&(I-=cE-1,w-=cE-1)}else i!==iE&&""!==i&&(d=null)}if(d){if(!O&&o!==d)break;c=!0}else R||v||t.charAt(l)!==aE?R&&S&&(v=w>=S.indent||w>cE):v=!0,c=!1,I=l;if(u=t.slice(l,s),_=l===I?u:t.slice(I,s),(d===Jg||d===eE||d===nE)&&A.thematicBreak.call(this,e,u,!0))break;if(m=p,p=!c&&!M(_).length,v&&S)S.value=S.value.concat(h,u),E=E.concat(h,u),h=[];else if(c)0!==h.length&&(L=!0,S.value.push(""),S.trail=h.concat()),S={value:[u],indent:w,trail:[]},g.push(S),E=E.concat(h,u),h=[];else if(p){if(m&&!R)break;h.push(u)}else{if(m)break;if(Cg(y,A,this,[e,u,!0]))break;S.value=S.value.concat(h,u),E=E.concat(h,u),h=[]}I=s+1}b=e(E.join(iE)).reset({type:"list",ordered:a,start:x,spread:L,children:[]}),f=this.enterList(),T=this.enterBlock(),I=-1,D=g.length;for(;++I<D;)S=g[I].value.join(iE),C=e.now(),e(S)(gE(this,S,C),b),S=g[I].trail.join(iE),I!==D-1&&(S+=iE),e(S);return f(),T(),b},Jg="*",eE="_",tE="+",nE="-",rE=".",aE=" ",iE="\n",oE="\t",sE=")",lE="x",cE=4,dE=/\n\n(?!\s*$)/,_E=/^\[([ \t]|x|X)][ \t]/,uE=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,mE=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,pE=/^( {1,4}|\t)?/gm;function gE(e,t,n){var r,a,i=e.offset,o=null;return t=(e.options.pedantic?EE:hE).apply(null,arguments),e.options.gfm&&(r=t.match(_E))&&(a=r[0].length,o=r[1].toLowerCase()===lE,i[n.line]+=a,t=t.slice(a)),{type:"listItem",spread:dE.test(t),checked:o,children:e.tokenizeBlock(t,n)}}function EE(e,t,n){var r=e.offset,a=n.line;return t=t.replace(mE,i),a=n.line,t.replace(pE,i);function i(e){return r[a]=(r[a]||0)+e.length,a++,""}}function hE(e,t,n){var r,a,i,o,s,l,c,d=e.offset,_=n.line;for(o=(t=t.replace(uE,(function(e,t,n,o,s){a=t+n+o,i=s,Number(n)<10&&a.length%2==1&&(n=aE+n);return(r=t+q(aE,n.length)+o)+i}))).split(iE),(s=Wg(t,Yg(r).indent).split(iE))[0]=i,d[_]=(d[_]||0)+a.length,_++,l=0,c=o.length;++l<c;)d[_]=(d[_]||0)+o[l].length-s[l].length,_++;return s.join(iE)}var SE=function(e,t,n){var r,a,i,o,s,l=e.now(),c=t.length,d=-1,_="";for(;++d<c;){if((i=t.charAt(d))!==bE||d>=vE){d--;break}_+=i}r="",a="";for(;++d<c;){if((i=t.charAt(d))===fE){d--;break}i===bE||i===TE?a+=i:(r+=a+i,a="")}if(l.column+=_.length,l.offset+=_.length,_+=r+a,i=t.charAt(++d),o=t.charAt(++d),i!==fE||o!==CE&&o!==NE)return;_+=i,a=o,s=o===CE?RE:OE;for(;++d<c;){if((i=t.charAt(d))!==o){if(i!==fE)return;d--;break}a+=i}if(n)return!0;return e(_+a)({type:"heading",depth:s,children:this.tokenizeInline(r,l)})},fE="\n",TE="\t",bE=" ",CE="=",NE="-",vE=3,RE=1,OE=2;var AE="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",yE="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",IE={openCloseTag:new RegExp("^(?:"+AE+"|"+yE+")"),tag:new RegExp("^(?:"+AE+"|"+yE+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},DE=function(e,t,n){var r,a,i,o,s,l,c,d=this.options.blocks.join("|"),_=new RegExp("^</?("+d+")(?=(\\s|/?>|$))","i"),u=t.length,m=0,p=[[PE,kE,!0],[UE,FE,!0],[GE,BE,!0],[HE,YE,!0],[VE,zE,!0],[_,qE,!0],[KE,qE,!1]];for(;m<u&&((o=t.charAt(m))===xE||o===ME);)m++;if(t.charAt(m)!==LE)return;r=-1===(r=t.indexOf(wE,m+1))?u:r,a=t.slice(m,r),i=-1,s=p.length;for(;++i<s;)if(p[i][0].test(a)){l=p[i];break}if(!l)return;if(n)return l[2];if(m=r,!l[1].test(a))for(;m<u;){if(r=-1===(r=t.indexOf(wE,m+1))?u:r,a=t.slice(m+1,r),l[1].test(a)){a&&(m=r);break}m=r}return c=t.slice(0,m),e(c)({type:"html",value:c})},xE="\t",ME=" ",wE="\n",LE="<",PE=/^<(script|pre|style)(?=(\s|>|$))/i,kE=/<\/(script|pre|style)>/i,UE=/^<!--/,FE=/-->/,GE=/^<\?/,BE=/\?>/,HE=/^<![A-Za-z]/,YE=/>/,VE=/^<!\[CDATA\[/,zE=/\]\]>/,qE=/^$/,KE=new RegExp(IE.openCloseTag.source+"\\s*$");var WE=function(e){return se(e).toLowerCase()};var QE=ah;ah.notInList=!0,ah.notInBlock=!0;var $E="\\",jE="\n",XE="\t",ZE=" ",JE="[",eh="]",th="^",nh=":",rh=/^( {4}|\t)?/gm;function ah(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g=this.offset;if(this.options.footnotes){for(r=0,a=t.length,i="",o=e.now(),s=o.line;r<a&&(_=t.charAt(r),Se(_));)i+=_,r++;if(t.charAt(r)===JE&&t.charAt(r+1)===th){for(r=(i+=JE+th).length,c="";r<a&&(_=t.charAt(r))!==eh;)_===$E&&(c+=_,r++,_=t.charAt(r)),c+=_,r++;if(c&&t.charAt(r)===eh&&t.charAt(r+1)===nh){if(n)return!0;for(u=c,r=(i+=c+eh+nh).length;r<a&&((_=t.charAt(r))===XE||_===ZE);)i+=_,r++;for(o.column+=i.length,o.offset+=i.length,c="",l="",d="";r<a;){if((_=t.charAt(r))===jE){for(d=_,r++;r<a&&(_=t.charAt(r))===jE;)d+=_,r++;for(c+=d,d="";r<a&&(_=t.charAt(r))===ZE;)d+=_,r++;if(0===d.length)break;c+=d}c&&(l+=c,c=""),l+=_,r++}return i+=l,l=l.replace(rh,(function(e){return g[s]=(g[s]||0)+e.length,s++,""})),m=e(i),p=this.enterBlock(),l=this.tokenizeBlock(l,o),p(),m({type:"footnoteDefinition",identifier:WE(u),label:u,children:l})}}}}var ih=function(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=0,m=t.length,p="";for(;u<m&&((o=t.charAt(u))===_h||o===dh);)p+=o,u++;if((o=t.charAt(u))!==uh)return;u++,p+=o,i="";for(;u<m&&(o=t.charAt(u))!==mh;)o===lh&&(i+=o,u++,o=t.charAt(u)),i+=o,u++;if(!i||t.charAt(u)!==mh||t.charAt(u+1)!==Eh)return;l=i,u=(p+=i+mh+Eh).length,i="";for(;u<m&&((o=t.charAt(u))===dh||o===_h||o===ch);)p+=o,u++;if(o=t.charAt(u),i="",r=p,o===hh){for(u++;u<m&&fh(o=t.charAt(u));)i+=o,u++;if((o=t.charAt(u))===fh.delimiter)p+=hh+i+o,u++;else{if(_)return;u-=i.length+1,i=""}}if(!i){for(;u<m&&Th(o=t.charAt(u));)i+=o,u++;p+=i}if(!i)return;c=i,i="";for(;u<m&&((o=t.charAt(u))===dh||o===_h||o===ch);)i+=o,u++;o=t.charAt(u),s=null,o===oh?s=oh:o===sh?s=sh:o===ph&&(s=gh);if(s){if(!i)return;for(u=(p+=i+o).length,i="";u<m&&(o=t.charAt(u))!==s;){if(o===ch){if(u++,(o=t.charAt(u))===ch||o===s)return;i+=ch}i+=o,u++}if((o=t.charAt(u))!==s)return;a=p,p+=i+o,u++,d=i,i=""}else i="",u=p.length;for(;u<m&&((o=t.charAt(u))===dh||o===_h);)p+=o,u++;if(!(o=t.charAt(u))||o===ch)return!!n||(r=e(r).test().end,c=this.decode.raw(this.unescape(c),r,{nonTerminated:!1}),d&&(a=e(a).test().end,d=this.decode.raw(this.unescape(d),a)),e(p)({type:"definition",identifier:WE(l),label:l,title:d||null,url:c}))},oh='"',sh="'",lh="\\",ch="\n",dh="\t",_h=" ",uh="[",mh="]",ph="(",gh=")",Eh=":",hh="<",Sh=">";function fh(e){return e!==Sh&&e!==uh&&e!==mh}function Th(e){return e!==uh&&e!==mh&&!Se(e)}fh.delimiter=Sh;var bh=function(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b,C,N,v;if(!this.options.gfm)return;r=0,S=0,l=t.length+1,c=[];for(;r<l;){if(C=t.indexOf(Nh,r),N=t.indexOf(yh,r+1),-1===C&&(C=t.length),-1===N||N>C){if(S<Dh)return;break}c.push(t.slice(r,C)),S++,r=C+1}o=c.join(Nh),a=c.splice(1,1)[0]||[],r=0,l=a.length,S--,i=!1,m=[];for(;r<l;){if((_=a.charAt(r))===yh){if(u=null,!1===i){if(!1===v)return}else m.push(i),i=!1;v=!1}else if(_===Rh)u=!0,i=i||null;else if(_===Oh)i=i===xh?Mh:u&&null===i?wh:xh;else if(!Se(_))return;r++}!1!==i&&m.push(i);if(m.length<Ih)return;if(n)return!0;h=-1,T=[],b=e(o).reset({type:"table",align:m,children:T});for(;++h<S;){for(f=c[h],s={type:"tableRow",children:[]},h&&e(Nh),e(f).reset(s,b),l=f.length+1,r=0,d="",p="",g=!0;r<l;)(_=f.charAt(r))!==Ch&&_!==vh?(""===_||_===yh?g?e(_):(!p&&!_||g||(o=p,d.length>1&&(_?(o+=d.slice(0,d.length-1),d=d.charAt(d.length-1)):(o+=d,d="")),E=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(p,E)},s)),e(d+_),d="",p=""):(d&&(p+=d,d=""),p+=_,_===Ah&&r!==l-2&&(p+=f.charAt(r+1),r++)),g=!1,r++):(p?d+=_:e(_),r++);h||e(Nh+a)}return b},Ch="\t",Nh="\n",vh=" ",Rh="-",Oh=":",Ah="\\",yh="|",Ih=1,Dh=2,xh="left",Mh="center",wh="right";var Lh=function(e,t,n){var r,a,i,o,s,l=this.options,c=l.commonmark,d=l.gfm,_=this.blockTokenizers,u=this.interruptParagraph,m=t.indexOf(kh),p=t.length;for(;m<p;){if(-1===m){m=p;break}if(t.charAt(m+1)===kh)break;if(c){for(o=0,r=m+1;r<p;){if((i=t.charAt(r))===Ph){o=Fh;break}if(i!==Uh)break;o++,r++}if(o>=Fh&&i!==kh){m=t.indexOf(kh,m+1);continue}}if(a=t.slice(m+1),Cg(u,_,this,[e,a,!0]))break;if(_.list.call(this,e,a,!0)&&(this.inList||c||d&&!rm(M.left(a).charAt(0))))break;if(r=m,-1!==(m=t.indexOf(kh,m+1))&&""===M(t.slice(r,m))){m=r;break}}if(a=t.slice(0,m),""===M(a))return e(a),null;if(n)return!0;return s=e.now(),a=sg(a),e(a)({type:"paragraph",children:this.tokenizeInline(a,s)})},Ph="\t",kh="\n",Uh=" ",Fh=4;var Gh=function(e,t){return e.indexOf("\\",t)};var Bh=Vh;Vh.locator=Gh;var Hh="\n",Yh="\\";function Vh(e,t,n){var r,a;if(t.charAt(0)===Yh&&(r=t.charAt(1),-1!==this.escape.indexOf(r)))return!!n||(a=r===Hh?{type:"break"}:{type:"text",value:r},e(Yh+r)(a))}var zh=function(e,t){return e.indexOf("<",t)};var qh=Zh;Zh.locator=zh,Zh.notInLink=!0;var Kh="<",Wh=">",Qh="@",$h="/",jh="mailto:",Xh=jh.length;function Zh(e,t,n){var r,a,i,o,s,l="",c=t.length,d=0,_="",u=!1,m="";if(t.charAt(0)===Kh){for(d++,l=Kh;d<c&&(r=t.charAt(d),!(Se(r)||r===Wh||r===Qh||":"===r&&t.charAt(d+1)===$h));)_+=r,d++;if(_){if(m+=_,_="",m+=r=t.charAt(d),d++,r===Qh)u=!0;else{if(":"!==r||t.charAt(d+1)!==$h)return;m+=$h,d++}for(;d<c&&(r=t.charAt(d),!Se(r)&&r!==Wh);)_+=r,d++;if(r=t.charAt(d),_&&r===Wh)return!!n||(i=m+=_,l+=m+r,(a=e.now()).column++,a.offset++,u&&(m.slice(0,Xh).toLowerCase()===jh?(i=i.slice(Xh),a.column+=Xh,a.offset+=Xh):m=jh+m),o=this.inlineTokenizers,this.inlineTokenizers={text:o.text},s=this.enterLink(),i=this.tokenizeInline(i,a),this.inlineTokenizers=o,s(),e(l)({type:"link",title:null,url:cp(m,{nonTerminated:!1}),children:i}))}}}var Jh=function(e,t){var n,r=eS.length,a=-1,i=-1;if(!this.options.gfm)return-1;for(;++a<r;)-1!==(n=e.indexOf(eS[a],t))&&(n<i||-1===i)&&(i=n);return i},eS=["https://","http://","mailto:"];var tS=hS;hS.locator=Jh,hS.notInLink=!0;var nS='"',rS="'",aS="(",iS=")",oS=",",sS=".",lS=":",cS=";",dS="<",_S="@",uS="[",mS="]",pS="mailto:",gS=["http://","https://",pS],ES=gS.length;function hS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g;if(this.options.gfm){for(r="",o=-1;++o<ES;)if(l=gS[o],(c=t.slice(0,l.length)).toLowerCase()===l){r=c;break}if(r){for(o=r.length,d=t.length,_="",u=0;o<d&&(i=t.charAt(o),!Se(i)&&i!==dS)&&(i!==sS&&i!==oS&&i!==lS&&i!==cS&&i!==nS&&i!==rS&&i!==iS&&i!==mS||(m=t.charAt(o+1))&&!Se(m))&&(i!==aS&&i!==uS||u++,i!==iS&&i!==mS||!(--u<0));)_+=i,o++;if(_){if(a=r+=_,l===pS){if(-1===(s=_.indexOf(_S))||s===d-1)return;a=a.slice(pS.length)}return!!n||(g=this.enterLink(),p=this.inlineTokenizers,this.inlineTokenizers={text:p.text},a=this.tokenizeInline(a,e.now()),this.inlineTokenizers=p,g(),e(r)({type:"link",title:null,url:cp(r,{nonTerminated:!1}),children:a}))}}}}var SS=IE.tag,fS=OS;OS.locator=zh;var TS="<",bS="?",CS="!",NS="/",vS=/^<a /i,RS=/^<\/a>/i;function OS(e,t,n){var r,a,i=t.length;if(!(t.charAt(0)!==TS||i<3)&&(r=t.charAt(1),(am(r)||r===bS||r===CS||r===NS)&&(a=t.match(SS))))return!!n||(a=a[0],!this.inLink&&vS.test(a)?this.inLink=!0:this.inLink&&RS.test(a)&&(this.inLink=!1),e(a)({type:"html",value:a}))}var AS=function(e,t){var n=e.indexOf("[",t),r=e.indexOf("![",t);if(-1===r)return n;return n<r?n:r};var yS=HS;HS.locator=AS;var IS="\n",DS="!",xS='"',MS="'",wS="(",LS=")",PS="<",kS=">",US="[",FS="\\",GS="]",BS="`";function HS(e,t,n){var r,a,i,o,s,l,c,d,_,u,m,p,g,E,h,S,f,T,b="",C=0,N=t.charAt(0),v=this.options.pedantic,R=this.options.commonmark,O=this.options.gfm;if(N===DS&&(d=!0,b=N,N=t.charAt(++C)),N===US&&(d||!this.inLink)){for(b+=N,E="",C++,m=t.length,g=0,(S=e.now()).column+=C,S.offset+=C;C<m;){if(l=N=t.charAt(C),N===BS){for(a=1;t.charAt(C+1)===BS;)l+=N,C++,a++;i?a>=i&&(i=0):i=a}else if(N===FS)C++,l+=t.charAt(C);else if(i&&!O||N!==US){if((!i||O)&&N===GS){if(!g){if(!v)for(;C<m&&(N=t.charAt(C+1),Se(N));)l+=N,C++;if(t.charAt(C+1)!==wS)return;l+=wS,r=!0,C++;break}g--}}else g++;E+=l,l="",C++}if(r){for(_=E,b+=E+l,C++;C<m&&(N=t.charAt(C),Se(N));)b+=N,C++;if(E="",o=b,(N=t.charAt(C))===PS){for(C++,o+=PS;C<m&&(N=t.charAt(C))!==kS;){if(R&&N===IS)return;E+=N,C++}if(t.charAt(C)!==kS)return;b+=PS+E+kS,h=E,C++}else{for(N=null,l="";C<m&&(N=t.charAt(C),!l||!(N===xS||N===MS||R&&N===wS));){if(Se(N)){if(!v)break;l+=N}else{if(N===wS)g++;else if(N===LS){if(0===g)break;g--}E+=l,l="",N===FS&&(E+=FS,N=t.charAt(++C)),E+=N}C++}h=E,C=(b+=E).length}for(E="";C<m&&(N=t.charAt(C),Se(N));)E+=N,C++;if(N=t.charAt(C),b+=E,E&&(N===xS||N===MS||R&&N===wS))if(C++,E="",u=N===wS?LS:N,s=b+=N,R){for(;C<m&&(N=t.charAt(C))!==u;)N===FS&&(E+=FS,N=t.charAt(++C)),C++,E+=N;if((N=t.charAt(C))!==u)return;for(p=E,b+=E+N,C++;C<m&&(N=t.charAt(C),Se(N));)b+=N,C++}else for(l="";C<m;){if((N=t.charAt(C))===u)c&&(E+=u+l,l=""),c=!0;else if(c){if(N===LS){b+=E+u+l,p=E;break}Se(N)?l+=N:(E+=u+l+N,l="",c=!1)}else E+=N;C++}if(t.charAt(C)===LS)return!!n||(b+=LS,h=this.decode.raw(this.unescape(h),e(o).test().end,{nonTerminated:!1}),p&&(s=e(s).test().end,p=this.decode.raw(this.unescape(p),s)),T={type:d?"image":"link",title:p||null,url:h},d?T.alt=this.decode.raw(this.unescape(_),S)||null:(f=this.enterLink(),T.children=this.tokenizeInline(_,S),f()),e(b)(T))}}}var YS=tf;tf.locator=AS;var VS="link",zS="image",qS="footnote",KS="shortcut",WS="collapsed",QS="full",$S=" ",jS="!",XS="[",ZS="\\",JS="]",ef="^";function tf(e,t,n){var r,a,i,o,s,l,c,d,_=this.options.commonmark,u=this.options.footnotes,m=t.charAt(0),p=0,g=t.length,E="",h="",S=VS,f=KS;if(m===jS&&(S=zS,h=m,m=t.charAt(++p)),m===XS){if(p++,h+=m,l="",u&&t.charAt(p)===ef){if(S===zS)return;h+=ef,p++,S=qS}for(d=0;p<g;){if((m=t.charAt(p))===XS)c=!0,d++;else if(m===JS){if(!d)break;d--}m===ZS&&(l+=ZS,m=t.charAt(++p)),l+=m,p++}if(E=l,r=l,(m=t.charAt(p))===JS){if(p++,E+=m,l="",!_)for(;p<g&&(m=t.charAt(p),Se(m));)l+=m,p++;if(m=t.charAt(p),S===qS||m!==XS||u&&t.charAt(p+1)===ef){if(!r)return;a=r}else{for(a="",l+=m,p++;p<g&&(m=t.charAt(p))!==XS&&m!==JS;)m===ZS&&(a+=ZS,m=t.charAt(++p)),a+=m,p++;(m=t.charAt(p))===JS?(f=a?QS:WS,l+=a+m,p++):a="",E+=l,l=""}if(f===QS||!c)return E=h+E,S===VS&&this.inLink?null:!!n||(S===qS&&-1!==r.indexOf($S)?e(E)({type:qS,children:this.tokenizeInline(r,e.now())}):((i=e.now()).column+=h.length,i.offset+=h.length,o={type:S+"Reference",identifier:WE(a=f===QS?a:r),label:a},S!==VS&&S!==zS||(o.referenceType=f),S===VS?(s=this.enterLink(),o.children=this.tokenizeInline(r,i),s()):S===zS&&(o.alt=this.decode.raw(this.unescape(r),i)||null),e(E)(o)))}}}var nf=function(e,t){var n=e.indexOf("**",t),r=e.indexOf("__",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var rf=lf;lf.locator=nf;var af="\\",of="*",sf="_";function lf(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==of&&_!==sf||t.charAt(++d)!==_||(a=this.options.pedantic,s=(i=_)+i,l=t.length,d++,o="",_="",a&&Se(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||t.charAt(d+1)!==i||a&&Se(c))&&(_=t.charAt(d+2))!==i){if(!M(o))return;return!!n||((r=e.now()).column+=2,r.offset+=2,e(s+o+s)({type:"strong",children:this.tokenizeInline(o,r)}))}a||_!==af||(o+=_,_=t.charAt(++d)),o+=_,d++}}var cf=function(e){return _f.test("number"==typeof e?df(e):e.charAt(0))},df=String.fromCharCode,_f=/\w/;var uf=function(e,t){var n=e.indexOf("*",t),r=e.indexOf("_",t);if(-1===r)return n;if(-1===n)return r;return r<n?r:n};var mf=hf;hf.locator=uf;var pf="*",gf="_",Ef="\\";function hf(e,t,n){var r,a,i,o,s,l,c,d=0,_=t.charAt(d);if(!(_!==pf&&_!==gf||(a=this.options.pedantic,s=_,i=_,l=t.length,d++,o="",_="",a&&Se(t.charAt(d)))))for(;d<l;){if(c=_,!((_=t.charAt(d))!==i||a&&Se(c))){if((_=t.charAt(++d))!==i){if(!M(o)||c===i)return;if(!a&&i===gf&&cf(_)){o+=i;continue}return!!n||((r=e.now()).column++,r.offset++,e(s+o+i)({type:"emphasis",children:this.tokenizeInline(o,r)}))}o+=i}a||_!==Ef||(o+=_,_=t.charAt(++d)),o+=_,d++}}var Sf=function(e,t){return e.indexOf("~~",t)};var ff=Cf;Cf.locator=Sf;var Tf="~",bf="~~";function Cf(e,t,n){var r,a,i,o="",s="",l="",c="";if(this.options.gfm&&t.charAt(0)===Tf&&t.charAt(1)===Tf&&!Se(t.charAt(2)))for(r=1,a=t.length,(i=e.now()).column+=2,i.offset+=2;++r<a;){if(!((o=t.charAt(r))!==Tf||s!==Tf||l&&Se(l)))return!!n||e(bf+c+bf)({type:"delete",children:this.tokenizeInline(c,i)});c+=s,l=s,s=o}}var Nf=function(e,t){return e.indexOf("`",t)};var vf=yf;yf.locator=Nf;var Rf=10,Of=32,Af=96;function yf(e,t,n){for(var r,a,i,o,s,l,c=t.length,d=0;d<c&&t.charCodeAt(d)===Af;)d++;if(0!==d&&d!==c){for(r=d,s=t.charCodeAt(d);d<c;){if(o=s,s=t.charCodeAt(d+1),o===Af){if(void 0===a&&(a=d),i=d+1,s!==Af&&i-a===r){l=!0;break}}else void 0!==a&&(a=void 0,i=void 0);d++}if(l){if(n)return!0;if(d=r,c=a,o=t.charCodeAt(d),s=t.charCodeAt(c-1),l=!1,c-d>2&&(o===Of||o===Rf)&&(s===Of||s===Rf)){for(d++,c--;d<c;){if((o=t.charCodeAt(d))!==Of&&o!==Rf){l=!0;break}d++}!0===l&&(r++,a--)}return e(t.slice(0,i))({type:"inlineCode",value:t.slice(r,a)})}}}var If=function(e,t){var n=e.indexOf("\n",t);for(;n>t&&" "===e.charAt(n-1);)n--;return n};var Df=Lf;Lf.locator=If;var xf=" ",Mf="\n",wf=2;function Lf(e,t,n){for(var r,a=t.length,i=-1,o="";++i<a;){if((r=t.charAt(i))===Mf){if(i<wf)return;return!!n||e(o+=r)({type:"break"})}if(r!==xf)return;o+=r}}var Pf=function(e,t,n){var r,a,i,o,s,l,c,d,_,u;if(n)return!0;r=this.inlineMethods,o=r.length,a=this.inlineTokenizers,i=-1,_=t.length;for(;++i<o;)"text"!==(d=r[i])&&a[d]&&((c=a[d].locator)||e.file.fail("Missing locator: `"+d+"`"),-1!==(l=c.call(this,t,1))&&l<_&&(_=l));s=t.slice(0,_),u=e.now(),this.decode(s,u,(function(t,n,r){e(r||t)({type:"text",value:t})}))};var kf=Uf;function Uf(t,n){this.file=n,this.offset={},this.options=e(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=ep(n).toOffset,this.unescape=rp(this,"escape"),this.decode=Hp(this)}var Ff=Uf.prototype;function Gf(e){var t,n=[];for(t in e)n.push(t);return n}Ff.setOptions=Zp,Ff.parse=ng,Ff.options=Xp,Ff.exitStart=Jm("atStart",!0),Ff.enterList=Jm("inList",!1),Ff.enterLink=Jm("inLink",!1),Ff.enterBlock=Jm("inBlock",!1),Ff.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Ff.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Ff.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Ff.blockTokenizers={newline:ig,indentedCode:cg,fencedCode:pg,blockquote:Ng,atxHeading:yg,thematicBreak:Lg,list:Zg,setextHeading:SE,html:DE,footnote:QE,definition:ih,table:bh,paragraph:Lh},Ff.inlineTokenizers={escape:Bh,autoLink:qh,url:tS,html:fS,link:yS,reference:YS,strong:rf,emphasis:mf,deletion:ff,code:vf,break:Df,text:Pf},Ff.blockMethods=Gf(Ff.blockTokenizers),Ff.inlineMethods=Gf(Ff.inlineTokenizers),Ff.tokenizeBlock=Yp("block"),Ff.tokenizeInline=Yp("inline"),Ff.tokenizeFactory=Yp;var Bf=Hf;function Hf(t){var n=this.data("settings"),r=Zm(kf);r.prototype.options=e(r.prototype.options,n,t),this.Parser=r}function Yf(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function Vf(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function zf(e){return e.replace(new RegExp("[-[\\]{}()*+?.\\\\^$|/]","g"),"\\$&")}Hf.Parser=kf;var qf="\n",Kf="|";function Wf(e){var t,n;return{blockHeading:function(e){return n=this.all(e).join(""),""},blockBody:function(e){return t=this.all(e).map((function(e){return e.replace(/\n/g,"\n| ")})).join("\n|\n| ")},block:function(r){return t="",n="",this.all(r),n?"[[".concat(e," | ").concat(n,"]]\n| ").concat(t):"[[".concat(e,"]]\n| ").concat(t)}}}var Qf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).map(zf).join("|");if(!t)throw new Error("remark-custom-blocks needs to be passed a configuration object as option");var n=new RegExp("\\[\\[(".concat(t,")(?: *\\| *(.*))?\\]\\]\n"));function r(t,r,a){var i=t.now(),o=n.exec(r);if(o&&0===o.index){var s=Vf(o,3),l=s[0],c=s[1],d=s[2];if(a)return!0;for(var _=[],u=[],m=0;-1!==(m=r.indexOf(qf));){var p=r.indexOf(qf,m+1),g=-1!==p?r.slice(m+1,p):r.slice(m+1);if(g[0]!==Kf)break;var E=g.slice(g.startsWith("".concat(Kf," "))?2:1);_.push(g),u.push(E),r=r.slice(m+1)}var h=u.join(qf),S=l+_.join(qf),f=e[c],T=f.title&&["optional","required"].includes(f.title);if((!(f.title&&"required"===f.title)||d)&&(T||!d)){var b=t(S),C=this.enterBlock(),N={type:"".concat(c,"CustomBlockBody"),data:{hName:"div",hProperties:{className:"custom-block-body"}},children:this.tokenizeBlock(h,i)};C();var v=[N];if(T&&d){var R={type:"".concat(c,"CustomBlockHeading"),data:{hName:f.details?"summary":"div",hProperties:{className:"custom-block-heading"}},children:this.tokenizeInline(d,i)};v.unshift(R)}var O=ss.parse(f.classes||"");return b({type:"".concat(c,"CustomBlock"),children:v,data:{hName:f.details?"details":"div",hProperties:{className:["custom-block"].concat(Yf(O))}}})}}}var a=this.Parser,i=a.prototype.blockTokenizers,o=a.prototype.blockMethods;i.customBlocks=r,o.splice(o.indexOf("fencedCode")+1,0,"customBlocks");var s=this.Compiler;if(s){var l=s.prototype.visitors;if(!l)return;Object.keys(e).forEach((function(e){var t=Wf(e);l["".concat(e,"CustomBlock")]=t.block,l["".concat(e,"CustomBlockHeading")]=t.blockHeading,l["".concat(e,"CustomBlockBody")]=t.blockBody}))}var c=a.prototype.interruptParagraph,d=a.prototype.interruptList,_=a.prototype.interruptBlockquote;c.splice(c.indexOf("fencedCode")+1,0,["customBlocks"]),d.splice(d.indexOf("fencedCode")+1,0,["customBlocks"]),_.splice(_.indexOf("fencedCode")+1,0,["customBlocks"])},$f=2147483647,jf=36,Xf=1,Zf=26,Jf=38,eT=700,tT=72,nT=128,rT="-",aT=/[^\x20-\x7E]/,iT=/[\x2E\u3002\uFF0E\uFF61]/g,oT={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},sT=jf-Xf,lT=Math.floor,cT=String.fromCharCode;
+/*! https://mths.be/punycode v1.4.1 by @mathias */function dT(e){throw new RangeError(oT[e])}function _T(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function uT(e,t,n){var r=0;for(e=n?lT(e/eT):e>>1,e+=lT(e/t);e>sT*Zf>>1;r+=jf)e=lT(e/sT);return lT(r+(sT+1)*e/(e+Jf))}function mT(e){return function(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var a=function(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}((e=e.replace(iT,".")).split("."),t).join(".");return r+a}(e,(function(e){return aT.test(e)?"xn--"+function(e){var t,n,r,a,i,o,s,l,c,d,_,u,m,p,g,E=[];for(u=(e=function(e){for(var t,n,r=[],a=0,i=e.length;a<i;)(t=e.charCodeAt(a++))>=55296&&t<=56319&&a<i?56320==(64512&(n=e.charCodeAt(a++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),a--):r.push(t);return r}(e)).length,t=nT,n=0,i=tT,o=0;o<u;++o)(_=e[o])<128&&E.push(cT(_));for(r=a=E.length,a&&E.push(rT);r<u;){for(s=$f,o=0;o<u;++o)(_=e[o])>=t&&_<s&&(s=_);for(s-t>lT(($f-n)/(m=r+1))&&dT("overflow"),n+=(s-t)*m,t=s,o=0;o<u;++o)if((_=e[o])<t&&++n>$f&&dT("overflow"),_==t){for(l=n,c=jf;!(l<(d=c<=i?Xf:c>=i+Zf?Zf:c-i));c+=jf)g=l-d,p=jf-d,E.push(cT(_T(d+g%p,0))),l=lT(g/p);E.push(cT(_T(l,0))),i=uT(n,m,r==a),n=0,++r}++n,++t}return E.join("")}(e):e}))}function pT(e){return null===e}function gT(e){return"string"==typeof e}function ET(e){return"object"==typeof e&&null!==e}function hT(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var ST=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function fT(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function TT(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var bT=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function CT(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var s=e.length;o>0&&s>o&&(s=o);for(var l=0;l<s;++l){var c,d,_,u,m=e[l].replace(i,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),d=m.substr(p+1)):(c=m,d=""),_=decodeURIComponent(c),u=decodeURIComponent(d),hT(a,_)?ST(a[_])?a[_].push(u):a[_]=[a[_],u]:a[_]=u}return a}var NT={parse:FT,resolve:function(e,t){return FT(e,!1,!0).resolve(t)},resolveObject:function(e,t){return e?FT(e,!1,!0).resolveObject(t):t},format:function(e){gT(e)&&(e=GT({},e));return BT(e)},Url:vT};function vT(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var RT=/^([a-z0-9.+-]+:)/i,OT=/:[0-9]*$/,AT=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,yT=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),IT=["'"].concat(yT),DT=["%","/","?",";","#"].concat(IT),xT=["/","?","#"],MT=255,wT=/^[+a-z0-9A-Z_-]{0,63}$/,LT=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,PT={javascript:!0,"javascript:":!0},kT={javascript:!0,"javascript:":!0},UT={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function FT(e,t,n){if(e&&ET(e)&&e instanceof vT)return e;var r=new vT;return r.parse(e,t,n),r}function GT(e,t,n,r){if(!gT(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var a=t.indexOf("?"),i=-1!==a&&a<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(i);if(s=s.trim(),!r&&1===t.split("#").length){var l=AT.exec(s);if(l)return e.path=s,e.href=s,e.pathname=l[1],l[2]?(e.search=l[2],e.query=n?CT(e.search.substr(1)):e.search.substr(1)):n&&(e.search="",e.query={}),e}var c,d,_,u,m=RT.exec(s);if(m){var p=(m=m[0]).toLowerCase();e.protocol=p,s=s.substr(m.length)}if(r||m||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var g="//"===s.substr(0,2);!g||m&&kT[m]||(s=s.substr(2),e.slashes=!0)}if(!kT[m]&&(g||m&&!UT[m])){var E,h,S=-1;for(c=0;c<xT.length;c++)-1!==(d=s.indexOf(xT[c]))&&(-1===S||d<S)&&(S=d);for(-1!==(h=-1===S?s.lastIndexOf("@"):s.lastIndexOf("@",S))&&(E=s.slice(0,h),s=s.slice(h+1),e.auth=decodeURIComponent(E)),S=-1,c=0;c<DT.length;c++)-1!==(d=s.indexOf(DT[c]))&&(-1===S||d<S)&&(S=d);-1===S&&(S=s.length),e.host=s.slice(0,S),s=s.slice(S),HT(e),e.hostname=e.hostname||"";var f="["===e.hostname[0]&&"]"===e.hostname[e.hostname.length-1];if(!f){var T=e.hostname.split(/\./);for(c=0,_=T.length;c<_;c++){var b=T[c];if(b&&!b.match(wT)){for(var C="",N=0,v=b.length;N<v;N++)b.charCodeAt(N)>127?C+="x":C+=b[N];if(!C.match(wT)){var R=T.slice(0,c),O=T.slice(c+1),A=b.match(LT);A&&(R.push(A[1]),O.unshift(A[2])),O.length&&(s="/"+O.join(".")+s),e.hostname=R.join(".");break}}}}e.hostname.length>MT?e.hostname="":e.hostname=e.hostname.toLowerCase(),f||(e.hostname=mT(e.hostname)),u=e.port?":"+e.port:"";var y=e.hostname||"";e.host=y+u,e.href+=e.host,f&&(e.hostname=e.hostname.substr(1,e.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!PT[p])for(c=0,_=IT.length;c<_;c++){var I=IT[c];if(-1!==s.indexOf(I)){var D=encodeURIComponent(I);D===I&&(D=escape(I)),s=s.split(I).join(D)}}var x=s.indexOf("#");-1!==x&&(e.hash=s.substr(x),s=s.slice(0,x));var M=s.indexOf("?");if(-1!==M?(e.search=s.substr(M),e.query=s.substr(M+1),n&&(e.query=CT(e.query)),s=s.slice(0,M)):n&&(e.search="",e.query={}),s&&(e.pathname=s),UT[p]&&e.hostname&&!e.pathname&&(e.pathname="/"),e.pathname||e.search){u=e.pathname||"";var w=e.search||"";e.path=u+w}return e.href=BT(e),e}function BT(e){var t=e.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n=e.protocol||"",r=e.pathname||"",a=e.hash||"",i=!1,o="";e.host?i=t+e.host:e.hostname&&(i=t+(-1===e.hostname.indexOf(":")?e.hostname:"["+this.hostname+"]"),e.port&&(i+=":"+e.port)),e.query&&ET(e.query)&&Object.keys(e.query).length&&(o=function(e,t,n,r){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?TT(bT(e),(function(r){var a=encodeURIComponent(fT(r))+n;return ST(e[r])?TT(e[r],(function(e){return a+encodeURIComponent(fT(e))})).join(t):a+encodeURIComponent(fT(e[r]))})).join(t):r?encodeURIComponent(fT(r))+n+encodeURIComponent(fT(e)):""}(e.query));var s=e.search||o&&"?"+o||"";return n&&":"!==n.substr(-1)&&(n+=":"),e.slashes||(!n||UT[n])&&!1!==i?(i="//"+(i||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),s&&"?"!==s.charAt(0)&&(s="?"+s),n+i+(r=r.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+a}function HT(e){var t=e.host,n=OT.exec(t);n&&(":"!==(n=n[0])&&(e.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(e.hostname=t)}function YT(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function VT(e){return(VT="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}vT.prototype.parse=function(e,t,n){return GT(this,e,t,n)},vT.prototype.format=function(){return BT(this)},vT.prototype.resolve=function(e){return this.resolveObject(FT(e,!1,!0)).format()},vT.prototype.resolveObject=function(e){if(gT(e)){var t=new vT;t.parse(e,!1,!0),e=t}for(var n,r=new vT,a=Object.keys(this),i=0;i<a.length;i++){var o=a[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l];"protocol"!==c&&(r[c]=e[c])}return UT[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!UT[e.protocol]){for(var d=Object.keys(e),_=0;_<d.length;_++){var u=d[_];r[u]=e[u]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||kT[e.protocol])r.pathname=e.pathname;else{for(n=(e.pathname||"").split("/");n.length&&!(e.host=n.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==n[0]&&n.unshift(""),n.length<2&&n.unshift(""),r.pathname=n.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",p=r.search||"";r.path=m+p}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var g,E=r.pathname&&"/"===r.pathname.charAt(0),h=e.host||e.pathname&&"/"===e.pathname.charAt(0),S=h||E||r.host&&e.pathname,f=S,T=r.pathname&&r.pathname.split("/")||[],b=r.protocol&&!UT[r.protocol];if(n=e.pathname&&e.pathname.split("/")||[],b&&(r.hostname="",r.port=null,r.host&&(""===T[0]?T[0]=r.host:T.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===n[0]?n[0]=e.host:n.unshift(e.host)),e.host=null),S=S&&(""===n[0]||""===T[0])),h)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,T=n;else if(n.length)T||(T=[]),T.pop(),T=T.concat(n),r.search=e.search,r.query=e.query;else if(null!=e.search)return b&&(r.hostname=r.host=T.shift(),(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),r.search=e.search,r.query=e.query,pT(r.pathname)&&pT(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!T.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var C=T.slice(-1)[0],N=(r.host||e.host||T.length>1)&&("."===C||".."===C)||""===C,v=0,R=T.length;R>=0;R--)"."===(C=T[R])?T.splice(R,1):".."===C?(T.splice(R,1),v++):v&&(T.splice(R,1),v--);if(!S&&!f)for(;v--;v)T.unshift("..");!S||""===T[0]||T[0]&&"/"===T[0].charAt(0)||T.unshift(""),N&&"/"!==T.join("/").substr(-1)&&T.push("");var O=""===T[0]||T[0]&&"/"===T[0].charAt(0);return b&&(r.hostname=r.host=O?"":T.length?T.shift():"",(g=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=g.shift(),r.host=r.hostname=g.shift())),(S=S||r.host&&T.length)&&!O&&T.unshift(""),T.length?r.pathname=T.join("/"):(r.pathname=null,r.path=null),pT(r.pathname)&&pT(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},vT.prototype.parseHost=function(){return HT(this)};var zT=NT.format,qT=NT.parse,KT=NT.URLSearchParams,WT=function(e){if("object"!==VT(e)||!Object.keys(e).length)throw new Error("remark-iframes needs to be passed a configuration object as option");var t=this.Parser,n=t.prototype.blockTokenizers,r=t.prototype.blockMethods;n.iframes=function(t,n,r){if(n.startsWith("!(http")){for(var a="",i="",o=["!","(",")"],s=0;s<n.length&&")"!==n[s-1];s++)a+=n[s],o.includes(n[s])||(i+=n[s]);if(r)return!0;var l=function(t){var n=qT(t).hostname;return e[n]}(i);if(!l||!0===l.disabled||l.match&&l.match instanceof RegExp&&!l.match.test(i))return t(a)({type:"paragraph",children:[{type:"text",value:a}]});var c=function(e,t){var n=t,r=qT(n);if(e.droppedQueryParameters&&r.search){var a=new KT(r.search);e.droppedQueryParameters.forEach((function(e){return a.delete(e)})),r.search=a.toString(),n=zT(r)}e.replace&&e.replace.length&&(e.replace.forEach((function(e){var t=YT(e,2),a=t[0],i=t[1];a&&i&&(n=n.replace(a,i)),r=qT(n)})),n=zT(r));e.removeFileName&&(r.pathname=r.pathname.substring(0,r.pathname.lastIndexOf("/")),n=zT(r));e.removeAfter&&n.includes(e.removeAfter)&&(n=n.substring(0,n.indexOf(e.removeAfter)));e.append&&(n+=e.append);return n}(l,i),d=function(e,t){var n="",r=e.thumbnail;r&&r.format&&(n=r.format,Object.keys(r).filter((function(e){return"format"!==e})).forEach((function(e){var a=new RegExp("{".concat(e,"}"),"g"),i=new RegExp(r[e]).exec(t);i&&(n=n.replace(a,i[1]))})));return n}(l,c);t(a)({type:"iframe",src:i,data:{hName:l.tag,hProperties:{src:c,width:l.width,height:l.height,allowfullscreen:!0,frameborder:"0"},thumbnail:d}})}},r.splice(r.indexOf("blockquote")+1,0,"iframes");var a=this.Compiler;if(a){var i=a.prototype.visitors;if(!i)return;i.iframe=function(e){return"!(".concat(e.src,")")}}};function QT(e,t){cd().use(Bf).use(Mt).use(Bt).use(kt).use(Nt).use(Ve).use(ve).use(Qf,{information:{classes:"special-box information",title:"optional"},comment:{classes:"special-box comment",title:"optional"},attention:{classes:"special-box attention",title:"optional"},question:{classes:"special-box question",title:"optional"},good:{classes:"special-box good"},secret:{classes:"special-box secret",title:"optional"},bad:{classes:"special-box bad"}}).use(bt).use(WT,{"www.youtube.com":{tag:"IFRAME",width:560,height:315,disabled:!1,replace:[["watch?v=","embed/"],["http://","https://"]],thumbnail:{format:"http://img.youtube.com/vi/{id}/0.jpg",id:".+/(.+)$"},removeAfter:"&"}}).use(he,{allowDangerousHTML:!0}).use(_u).use(Al).use(jm).process(e,t)}return QT.defaultValue="Plugins presentation\n=================\n\nThis page is an example of using [remark][remark] with plugins that I created. These plugins are used to parse [lines][remark-line-input] of [text](remark-text-input), [selection boxes][remark-select] and even [MCQs][remark-mcq].\n\nThe goal of this project is to propose a set of plugins allowing to create **exercises** easily.\n\nTo first let's see somes examples !\n\nExample of exercises\n--------------------\n\nThe 151th pokémon [__151th pokémon__]{#pokemon oninput=\"pokemon(this)\"} is one of the two pokemons that can use transform attack (the other one is [ Pikachu | Ditto | Mewtow | Eevee |v] ).\n\n\nLine edit\n---------\n\nYou can use line edit like that :\n\nLogin : [__email or username__]{#login} \nPasswd: [__Passwd__]{#password type=password}\n\nText edit\n--------\n\nIt's also easy to use text edit :\n\n[______\n\nThis is a text zone\n\n______]{rows=13 cols=30}\n\n\nSelection box\n-------------\n\nTo use a selection box, just write it in the markdown file.\n\n[ Mario | Peach | Luigi |v]\n\n[remark]: https://github.com/remarkjs/remark \"Github of the remark project\"\n[remark-line-input]: https://www.npmjs.com/package/remark-line-input\n[remark-text-input]: https://www.npmjs.com/package/remark-text-input\n[remark-select]: https://www.npmjs.com/package/remark-select\n\n\n<script>\n if( !pokemon ) {\nfunction pokemon( elem ) {\n if( elem.value != 'mew' ) {\n if( elem.classList.contains('valid') )\n elem.classList.remove('valid')\n elem['className'] = 'invalid';\n }else{\n if( elem.classList.contains('invalid') )\n elem.classList.remove('invalid')\n elem.classList.add('valid')\n }\n}}<\/script>",QT}();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1kLm1pbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LWJ1aWxkZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9jb252ZXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1nZW5lcmF0ZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1kZWZpbml0aW9ucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvYWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvdGhlbWF0aWMtYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi93cmFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2Zvb3Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2Jsb2NrcXVvdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBlYXQtc3RyaW5nL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RldGFiL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2RlbGV0ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvZm9vdG5vdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9oZWFkaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9yZXZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29sbGFwc2Utd2hpdGUtc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9saXN0LWl0ZW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHJpbS1saW5lcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UtcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvaW1hZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9pbmxpbmUtY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL2xpbmstcmVmZXJlbmNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8taGFzdC9saWIvaGFuZGxlcnMvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3BhcmFncmFwaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3Jvb3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy9zdHJvbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9oYW5kbGVycy90YWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvbGliL2hhbmRsZXJzL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1oYXN0L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZGFzdC11dGlsLXRvLWhhc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXJlaHlwZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy13aGl0ZXNwYWNlLWNoYXJhY3Rlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmsta2JkL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC9pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvYmxvY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm9ybWF0L2Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mYXVsdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9saWIvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9sb3dsaWdodC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstaGlnaGxpZ2h0LmpzL3NyYy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstbXVsdGlwbGUtY2hvaWNlL2FwcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hY3Rpb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FuZ2Vsc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcHBsZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcmNhZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3BwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FyZHVpbm8uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJtYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3htbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc2NpaWRvYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hc3BlY3RqLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F2cmFzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hd2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FwbnByb3RvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NleWxvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb2ZmZWVzY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29xLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nvcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcm1zaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcnlzdGFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NzcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tYXJrZG93bi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kYXJ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RlbHBoaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RqYW5nby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG9ja2VyZmlsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHNjb25maWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lbGl4aXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWxtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1YnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy1yZXBsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9leGNlbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9maXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZmxpeC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2ZzaGFycC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nYW1zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2djb2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2doZXJraW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ28uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ29sby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZ3Jvb3Z5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFuZGxlYmFycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9oYXNrZWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hheGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHNwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0bWxiYXJzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2h0dHAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5mb3JtNy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXJwZjkwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lzYmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYXZhc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pib3NzLWNsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2p1bGlhLXJlcGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMva290bGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xhc3NvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xkaWYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVhZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZXNzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xpc3AuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZWNvZGVzZXJ2ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sbHZtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFrZWZpbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0bGFiLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21heGltYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWVyY3VyeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9taXBzYXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pemFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9ua2V5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbjFxbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uZ2lueC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2JqZWN0aXZlYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vY2FtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vcGVuc2NhZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9veHlnZW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BhcnNlcjMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGdzcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wb255LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Bvd2Vyc2hlbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9maWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb3RvYnVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cHBldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXJlYmFzaWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHl0aG9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3EuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcW1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmVhc29ubWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvYm9jb25mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JvdXRlcm9zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JzbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWxlc2xhbmd1YWdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1c3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2FzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjYWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaGVtZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2lsYWIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2Nzcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zaGVsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWFsbHRhbGsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NxZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3Rhbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3R5bHVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N1YnVuaXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3lhbWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RjbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy90ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGhyaWZ0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R3aWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHlwZXNjcmlwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YWxhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZibmV0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zic2NyaXB0LWh0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmVyaWxvZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92aGRsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94ODZhc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveHF1ZXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3plcGhpci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tZC1hdHRyLXBhcnNlci9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1saW5lLWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXNlbGVjdC9kaXN0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay10ZXh0LWlucHV0L2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vdW5pY29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvbmFtZWQtZW50aXR5LWRhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi91dGlscy9taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby9vcGVuLWVsZW1lbnQtc3RhY2stbWl4aW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vcGFyc2VyLW1peGluLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNlNS9saWIvZXh0ZW5zaW9ucy9lcnJvci1yZXBvcnRpbmcvbWl4aW4tYmFzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3ByZXByb2Nlc3Nvci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3Rva2VuaXplci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3BhcnNlci1taXhpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL3V0aWxzL21lcmdlLW9wdGlvbnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9jb21tb24vZG9jdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZTUvbGliL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2U1L2xpYi9wYXJzZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvc2NoZW1hLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL21lcmdlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL25vcm1hbGl6ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9pbmZvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL3R5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2RlZmluZWQtaW5mby5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvdXRpbC9jcmVhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3hsaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vbGliL3V0aWwvY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi91dGlsL2Nhc2UtaW5zZW5zaXRpdmUtdHJhbnNmb3JtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi94bWxucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvYXJpYS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9saWIvaHRtbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2xpYi9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcHJvcGVydHktaW5mb3JtYXRpb24vc3ZnLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXBhcnNlLXNlbGVjdG9yL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NwYWNlLXNlcGFyYXRlZC10b2tlbnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY29tbWEtc2VwYXJhdGVkLXRva2Vucy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0c2NyaXB0L2ZhY3RvcnkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9zdmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdHNjcmlwdC9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtZnJvbS1wYXJzZTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW5saW5lLXN0eWxlLXBhcnNlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS10by1vYmplY3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC10by1oeXBlcnNjcmlwdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy96d2l0Y2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLXBhcnNlNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtcmF3L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlaHlwZS1yYXcvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLWlzL2NvbnZlcnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0LXBhcmVudHMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLWthdGV4L25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2thdGV4L2Rpc3Qva2F0ZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JhaWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbWVzc2FnZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtZ2xvYmFscy9zcmMvZ2xvYmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MtZXM2L2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZXBsYWNlLWV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUvY29yZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy92ZmlsZS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvd3JhcC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVoeXBlLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC1pcy1lbGVtZW50L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtZmluZC1hZnRlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8tdGV4dC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUta2F0ZXgvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXdoaXRlc3BhY2UvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvc2libGluZ3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvZmlyc3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvcGxhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL3V0aWwvd2hpdGUtc3BhY2UtbGVmdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb21pc3Npb24vb21pc3Npb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2Nsb3NpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL29wZW5pbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL29taXNzaW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9hbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtZGVjaW1hbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pcy1hbHBoYWJldGljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5naWZ5LWVudGl0aWVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi90ZXh0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2VsZW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2RvY3R5cGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL2NvbW1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvaGFzdC11dGlsLXRvLWh0bWwvbGliL3Jhdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9saWIvb25lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2hhc3QtdXRpbC10by1odG1sL2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXN0LXV0aWwtdG8taHRtbC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWh5cGUtc3RyaW5naWZ5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdW5oZXJpdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdGF0ZS10b2dnbGUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdmZpbGUtbG9jYXRpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91bmVzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXJzZS1lbnRpdGllcy9kZWNvZGUtZW50aXR5LmJyb3dzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFya2Rvd24tZXNjYXBlcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2Jsb2NrLWVsZW1lbnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVmYXVsdHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9zZXQtb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3BhcnNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvbmV3bGluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibG9ja3F1b3RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9yZW1vdmUtaW5kZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2h0bWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWJsb2NrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9ub3JtYWxpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9mb290bm90ZS1kZWZpbml0aW9uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVmaW5pdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RhYmxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VzY2FwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdXJsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvbGluay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9yZWZlcmVuY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvc3Ryb25nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2lzLXdvcmQtY2hhcmFjdGVyL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZW1waGFzaXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZGVsZXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2NvZGUtaW5saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmxpbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9icmVhay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlbWFyay1jdXN0b20tYmxvY2tzL2Rpc3QvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvcHVueWNvZGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWJ1aWx0aW5zL3NyYy9lczYvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtYnVpbHRpbnMvc3JjL2VzNi9xcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtYnVpbHRpbnMvc3JjL2VzNi91cmwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVtYXJrLWlmcmFtZXMvZGlzdC9pbmRleC5qcyIsIi4uLy4uL3RvaHRtbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGV4dGVuZFxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBleHRlbmQoKSB7XG4gICAgdmFyIHRhcmdldCA9IHt9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldXG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldFxufVxuIiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpXG5cbm1vZHVsZS5leHBvcnRzID0gdVxuXG5mdW5jdGlvbiB1KHR5cGUsIHByb3BzLCB2YWx1ZSkge1xuICB2YXIgbm9kZVxuXG4gIGlmIChcbiAgICAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgJiZcbiAgICAodHlwZW9mIHByb3BzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHByb3BzKSlcbiAgKSB7XG4gICAgdmFsdWUgPSBwcm9wc1xuICAgIHByb3BzID0ge31cbiAgfVxuXG4gIG5vZGUgPSBhc3NpZ24oe3R5cGU6IFN0cmluZyh0eXBlKX0sIHByb3BzKVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIG5vZGUuY2hpbGRyZW4gPSB2YWx1ZVxuICB9IGVsc2UgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBub2RlLnZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIG5vZGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnZlcnRcblxuZnVuY3Rpb24gY29udmVydCh0ZXN0KSB7XG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZUZhY3RvcnkodGVzdClcbiAgfVxuXG4gIGlmICh0ZXN0ID09PSBudWxsIHx8IHRlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBva1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAoJ2xlbmd0aCcgaW4gdGVzdCA/IGFueUZhY3RvcnkgOiBtYXRjaGVzRmFjdG9yeSkodGVzdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0ZXN0XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Jylcbn1cblxuZnVuY3Rpb24gY29udmVydEFsbCh0ZXN0cykge1xuICB2YXIgcmVzdWx0cyA9IFtdXG4gIHZhciBsZW5ndGggPSB0ZXN0cy5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdHNbaW5kZXhdID0gY29udmVydCh0ZXN0c1tpbmRleF0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0c1xufVxuXG4vLyBVdGlsaXR5IGFzc2VydCBlYWNoIHByb3BlcnR5IGluIGB0ZXN0YCBpcyByZXByZXNlbnRlZCBpbiBgbm9kZWAsIGFuZCBlYWNoXG4vLyB2YWx1ZXMgYXJlIHN0cmljdGx5IGVxdWFsLlxuZnVuY3Rpb24gbWF0Y2hlc0ZhY3RvcnkodGVzdCkge1xuICByZXR1cm4gbWF0Y2hlc1xuXG4gIGZ1bmN0aW9uIG1hdGNoZXMobm9kZSkge1xuICAgIHZhciBrZXlcblxuICAgIGZvciAoa2V5IGluIHRlc3QpIHtcbiAgICAgIGlmIChub2RlW2tleV0gIT09IHRlc3Rba2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGFueUZhY3RvcnkodGVzdHMpIHtcbiAgdmFyIGNoZWNrcyA9IGNvbnZlcnRBbGwodGVzdHMpXG4gIHZhciBsZW5ndGggPSBjaGVja3MubGVuZ3RoXG5cbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKCkge1xuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNoZWNrc1tpbmRleF0uYXBwbHkodGhpcywgYXJndW1lbnRzKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8vIFV0aWxpdHkgdG8gY29udmVydCBhIHN0cmluZyBpbnRvIGEgZnVuY3Rpb24gd2hpY2ggY2hlY2tzIGEgZ2l2ZW4gbm9kZeKAmXMgdHlwZVxuLy8gZm9yIHNhaWQgc3RyaW5nLlxuZnVuY3Rpb24gdHlwZUZhY3RvcnkodGVzdCkge1xuICByZXR1cm4gdHlwZVxuXG4gIGZ1bmN0aW9uIHR5cGUobm9kZSkge1xuICAgIHJldHVybiBCb29sZWFuKG5vZGUgJiYgbm9kZS50eXBlID09PSB0ZXN0KVxuICB9XG59XG5cbi8vIFV0aWxpdHkgdG8gcmV0dXJuIHRydWUuXG5mdW5jdGlvbiBvaygpIHtcbiAgcmV0dXJuIHRydWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0UGFyZW50c1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG5cbnZhciBDT05USU5VRSA9IHRydWVcbnZhciBTS0lQID0gJ3NraXAnXG52YXIgRVhJVCA9IGZhbHNlXG5cbnZpc2l0UGFyZW50cy5DT05USU5VRSA9IENPTlRJTlVFXG52aXNpdFBhcmVudHMuU0tJUCA9IFNLSVBcbnZpc2l0UGFyZW50cy5FWElUID0gRVhJVFxuXG5mdW5jdGlvbiB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICB2YXIgaXNcblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZpc2l0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXZlcnNlID0gdmlzaXRvclxuICAgIHZpc2l0b3IgPSB0ZXN0XG4gICAgdGVzdCA9IG51bGxcbiAgfVxuXG4gIGlzID0gY29udmVydCh0ZXN0KVxuXG4gIG9uZSh0cmVlLCBudWxsLCBbXSlcblxuICAvLyBWaXNpdCBhIHNpbmdsZSBub2RlLlxuICBmdW5jdGlvbiBvbmUobm9kZSwgaW5kZXgsIHBhcmVudHMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW11cbiAgICB2YXIgc3VicmVzdWx0XG5cbiAgICBpZiAoIXRlc3QgfHwgaXMobm9kZSwgaW5kZXgsIHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXSB8fCBudWxsKSkge1xuICAgICAgcmVzdWx0ID0gdG9SZXN1bHQodmlzaXRvcihub2RlLCBwYXJlbnRzKSlcblxuICAgICAgaWYgKHJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgcmVzdWx0WzBdICE9PSBTS0lQKSB7XG4gICAgICBzdWJyZXN1bHQgPSB0b1Jlc3VsdChhbGwobm9kZS5jaGlsZHJlbiwgcGFyZW50cy5jb25jYXQobm9kZSkpKVxuICAgICAgcmV0dXJuIHN1YnJlc3VsdFswXSA9PT0gRVhJVCA/IHN1YnJlc3VsdCA6IHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8vIFZpc2l0IGNoaWxkcmVuIGluIGBwYXJlbnRgLlxuICBmdW5jdGlvbiBhbGwoY2hpbGRyZW4sIHBhcmVudHMpIHtcbiAgICB2YXIgbWluID0gLTFcbiAgICB2YXIgc3RlcCA9IHJldmVyc2UgPyAtMSA6IDFcbiAgICB2YXIgaW5kZXggPSAocmV2ZXJzZSA/IGNoaWxkcmVuLmxlbmd0aCA6IG1pbikgKyBzdGVwXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgd2hpbGUgKGluZGV4ID4gbWluICYmIGluZGV4IDwgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBvbmUoY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgcGFyZW50cylcblxuICAgICAgaWYgKHJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gdHlwZW9mIHJlc3VsdFsxXSA9PT0gJ251bWJlcicgPyByZXN1bHRbMV0gOiBpbmRleCArIHN0ZXBcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9SZXN1bHQodmFsdWUpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtDT05USU5VRSwgdmFsdWVdXG4gIH1cblxuICByZXR1cm4gW3ZhbHVlXVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdmlzaXRcblxudmFyIHZpc2l0UGFyZW50cyA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cycpXG5cbnZhciBDT05USU5VRSA9IHZpc2l0UGFyZW50cy5DT05USU5VRVxudmFyIFNLSVAgPSB2aXNpdFBhcmVudHMuU0tJUFxudmFyIEVYSVQgPSB2aXNpdFBhcmVudHMuRVhJVFxuXG52aXNpdC5DT05USU5VRSA9IENPTlRJTlVFXG52aXNpdC5TS0lQID0gU0tJUFxudmlzaXQuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXQodHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZpc2l0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXZlcnNlID0gdmlzaXRvclxuICAgIHZpc2l0b3IgPSB0ZXN0XG4gICAgdGVzdCA9IG51bGxcbiAgfVxuXG4gIHZpc2l0UGFyZW50cyh0cmVlLCB0ZXN0LCBvdmVybG9hZCwgcmV2ZXJzZSlcblxuICBmdW5jdGlvbiBvdmVybG9hZChub2RlLCBwYXJlbnRzKSB7XG4gICAgdmFyIHBhcmVudCA9IHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXVxuICAgIHZhciBpbmRleCA9IHBhcmVudCA/IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKG5vZGUpIDogbnVsbFxuICAgIHJldHVybiB2aXNpdG9yKG5vZGUsIGluZGV4LCBwYXJlbnQpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcG9zaXRpb24gPSBleHBvcnRzXG5cbnBvc2l0aW9uLnN0YXJ0ID0gZmFjdG9yeSgnc3RhcnQnKVxucG9zaXRpb24uZW5kID0gZmFjdG9yeSgnZW5kJylcblxuZnVuY3Rpb24gZmFjdG9yeSh0eXBlKSB7XG4gIHBvaW50LmRpc3BsYXlOYW1lID0gdHlwZVxuXG4gIHJldHVybiBwb2ludFxuXG4gIGZ1bmN0aW9uIHBvaW50KG5vZGUpIHtcbiAgICB2YXIgcG9pbnQgPSAobm9kZSAmJiBub2RlLnBvc2l0aW9uICYmIG5vZGUucG9zaXRpb25bdHlwZV0pIHx8IHt9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogcG9pbnQubGluZSB8fCBudWxsLFxuICAgICAgY29sdW1uOiBwb2ludC5jb2x1bW4gfHwgbnVsbCxcbiAgICAgIG9mZnNldDogaXNOYU4ocG9pbnQub2Zmc2V0KSA/IG51bGwgOiBwb2ludC5vZmZzZXRcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdlbmVyYXRlZFxuXG5mdW5jdGlvbiBnZW5lcmF0ZWQobm9kZSkge1xuICB2YXIgcG9zaXRpb24gPSBvcHRpb25hbChvcHRpb25hbChub2RlKS5wb3NpdGlvbilcbiAgdmFyIHN0YXJ0ID0gb3B0aW9uYWwocG9zaXRpb24uc3RhcnQpXG4gIHZhciBlbmQgPSBvcHRpb25hbChwb3NpdGlvbi5lbmQpXG5cbiAgcmV0dXJuICFzdGFydC5saW5lIHx8ICFzdGFydC5jb2x1bW4gfHwgIWVuZC5saW5lIHx8ICFlbmQuY29sdW1uXG59XG5cbmZ1bmN0aW9uIG9wdGlvbmFsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdmFsdWUgOiB7fVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldERlZmluaXRpb25GYWN0b3J5XG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBHZXQgYSBkZWZpbml0aW9uIGluIGBub2RlYCBieSBgaWRlbnRpZmllcmAuXG5mdW5jdGlvbiBnZXREZWZpbml0aW9uRmFjdG9yeShub2RlLCBvcHRpb25zKSB7XG4gIHJldHVybiBnZXR0ZXJGYWN0b3J5KGdhdGhlcihub2RlLCBvcHRpb25zKSlcbn1cblxuLy8gR2F0aGVyIGFsbCBkZWZpbml0aW9ucyBpbiBgbm9kZWBcbmZ1bmN0aW9uIGdhdGhlcihub2RlLCBvcHRpb25zKSB7XG4gIHZhciBjYWNoZSA9IHt9XG5cbiAgaWYgKCFub2RlIHx8ICFub2RlLnR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21kYXN0LXV0aWwtZGVmaW5pdGlvbnMgZXhwZWN0ZWQgbm9kZScpXG4gIH1cblxuICB2aXNpdChub2RlLCAnZGVmaW5pdGlvbicsIG9wdGlvbnMgJiYgb3B0aW9ucy5jb21tb25tYXJrID8gY29tbW9ubWFyayA6IG5vcm1hbClcblxuICByZXR1cm4gY2FjaGVcblxuICBmdW5jdGlvbiBjb21tb25tYXJrKGRlZmluaXRpb24pIHtcbiAgICB2YXIgaWQgPSBub3JtYWxpc2UoZGVmaW5pdGlvbi5pZGVudGlmaWVyKVxuICAgIGlmICghb3duLmNhbGwoY2FjaGUsIGlkKSkge1xuICAgICAgY2FjaGVbaWRdID0gZGVmaW5pdGlvblxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbChkZWZpbml0aW9uKSB7XG4gICAgY2FjaGVbbm9ybWFsaXNlKGRlZmluaXRpb24uaWRlbnRpZmllcildID0gZGVmaW5pdGlvblxuICB9XG59XG5cbi8vIEZhY3RvcnkgdG8gZ2V0IGEgbm9kZSBmcm9tIHRoZSBnaXZlbiBkZWZpbml0aW9uLWNhY2hlLlxuZnVuY3Rpb24gZ2V0dGVyRmFjdG9yeShjYWNoZSkge1xuICByZXR1cm4gZ2V0dGVyXG5cbiAgLy8gR2V0IGEgbm9kZSBmcm9tIHRoZSBib3VuZCBkZWZpbml0aW9uLWNhY2hlLlxuICBmdW5jdGlvbiBnZXR0ZXIoaWRlbnRpZmllcikge1xuICAgIHZhciBpZCA9IGlkZW50aWZpZXIgJiYgbm9ybWFsaXNlKGlkZW50aWZpZXIpXG4gICAgcmV0dXJuIGlkICYmIG93bi5jYWxsKGNhY2hlLCBpZCkgPyBjYWNoZVtpZF0gOiBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXNlKGlkZW50aWZpZXIpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXIudG9VcHBlckNhc2UoKVxufVxuIiwiXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB0cmltO1xuXG5mdW5jdGlvbiB0cmltKHN0cil7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyp8XFxzKiQvZywgJycpO1xufVxuXG5leHBvcnRzLmxlZnQgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMqLywgJycpO1xufTtcblxuZXhwb3J0cy5yaWdodCA9IGZ1bmN0aW9uKHN0cil7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWxsXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxuXG5mdW5jdGlvbiBhbGwoaCwgcGFyZW50KSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXVxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoXG4gIHZhciB2YWx1ZXMgPSBbXVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0XG4gIHZhciBoZWFkXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHQgPSBvbmUoaCwgbm9kZXNbaW5kZXhdLCBwYXJlbnQpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggJiYgbm9kZXNbaW5kZXggLSAxXS50eXBlID09PSAnYnJlYWsnKSB7XG4gICAgICAgIGlmIChyZXN1bHQudmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB0cmltLmxlZnQocmVzdWx0LnZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgaGVhZCA9IHJlc3VsdC5jaGlsZHJlbiAmJiByZXN1bHQuY2hpbGRyZW5bMF1cblxuICAgICAgICBpZiAoaGVhZCAmJiBoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgaGVhZC52YWx1ZSA9IHRyaW0ubGVmdChoZWFkLnZhbHVlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQocmVzdWx0KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWx1ZXNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9uZVxuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4vYWxsJylcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIFRyYW5zZm9ybSBhbiB1bmtub3duIG5vZGUuXG5mdW5jdGlvbiB1bmtub3duKGgsIG5vZGUpIHtcbiAgaWYgKHRleHQobm9kZSkpIHtcbiAgICByZXR1cm4gaC5hdWdtZW50KG5vZGUsIHUoJ3RleHQnLCBub2RlLnZhbHVlKSlcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdkaXYnLCBhbGwoaCwgbm9kZSkpXG59XG5cbi8vIFZpc2l0IGEgbm9kZS5cbmZ1bmN0aW9uIG9uZShoLCBub2RlLCBwYXJlbnQpIHtcbiAgdmFyIHR5cGUgPSBub2RlICYmIG5vZGUudHlwZVxuICB2YXIgZm4gPSBvd24uY2FsbChoLmhhbmRsZXJzLCB0eXBlKSA/IGguaGFuZGxlcnNbdHlwZV0gOiBudWxsXG5cbiAgLy8gRmFpbCBvbiBub24tbm9kZXMuXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9kZSwgZ290IGAnICsgbm9kZSArICdgJylcbiAgfVxuXG4gIHJldHVybiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8gZm4gOiB1bmtub3duKShoLCBub2RlLCBwYXJlbnQpXG59XG5cbi8vIENoZWNrIGlmIHRoZSBub2RlIHNob3VsZCBiZSByZW5kZXJlcmVkIGFzIGEgdGV4dCBub2RlLlxuZnVuY3Rpb24gdGV4dChub2RlKSB7XG4gIHZhciBkYXRhID0gbm9kZS5kYXRhIHx8IHt9XG5cbiAgaWYgKFxuICAgIG93bi5jYWxsKGRhdGEsICdoTmFtZScpIHx8XG4gICAgb3duLmNhbGwoZGF0YSwgJ2hQcm9wZXJ0aWVzJykgfHxcbiAgICBvd24uY2FsbChkYXRhLCAnaENoaWxkcmVuJylcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gJ3ZhbHVlJyBpbiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0aGVtYXRpY0JyZWFrXG5cbmZ1bmN0aW9uIHRoZW1hdGljQnJlYWsoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnaHInKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcFxuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxuXG4vLyBXcmFwIGBub2Rlc2Agd2l0aCBsaW5lIGZlZWRzIGJldHdlZW4gZWFjaCBlbnRyeS5cbi8vIE9wdGlvbmFsbHkgYWRkcyBsaW5lIGZlZWRzIGF0IHRoZSBzdGFydCBhbmQgZW5kLlxuZnVuY3Rpb24gd3JhcChub2RlcywgbG9vc2UpIHtcbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSBub2Rlcy5sZW5ndGhcblxuICBpZiAobG9vc2UpIHtcbiAgICByZXN1bHQucHVzaCh1KCd0ZXh0JywgJ1xcbicpKVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaW5kZXgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHUoJ3RleHQnLCAnXFxuJykpXG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2gobm9kZXNbaW5kZXhdKVxuICB9XG5cbiAgaWYgKGxvb3NlICYmIG5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgIHJlc3VsdC5wdXNoKHUoJ3RleHQnLCAnXFxuJykpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0XG5cbnZhciB3cmFwID0gcmVxdWlyZSgnLi4vd3JhcCcpXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gbGlzdChoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciBuYW1lID0gbm9kZS5vcmRlcmVkID8gJ29sJyA6ICd1bCdcbiAgdmFyIGl0ZW1zXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGhcblxuICBpZiAodHlwZW9mIG5vZGUuc3RhcnQgPT09ICdudW1iZXInICYmIG5vZGUuc3RhcnQgIT09IDEpIHtcbiAgICBwcm9wcy5zdGFydCA9IG5vZGUuc3RhcnRcbiAgfVxuXG4gIGl0ZW1zID0gYWxsKGgsIG5vZGUpXG4gIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aFxuXG4gIC8vIExpa2UgR2l0SHViLCBhZGQgYSBjbGFzcyBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKFxuICAgICAgaXRlbXNbaW5kZXhdLnByb3BlcnRpZXMuY2xhc3NOYW1lICYmXG4gICAgICBpdGVtc1tpbmRleF0ucHJvcGVydGllcy5jbGFzc05hbWUuaW5kZXhPZigndGFzay1saXN0LWl0ZW0nKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIHByb3BzLmNsYXNzTmFtZSA9IFsnY29udGFpbnMtdGFzay1saXN0J11cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgbmFtZSwgcHJvcHMsIHdyYXAoaXRlbXMsIHRydWUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZ2VuZXJhdGVGb290bm90ZXNcblxudmFyIHRoZW1hdGljQnJlYWsgPSByZXF1aXJlKCcuL2hhbmRsZXJzL3RoZW1hdGljLWJyZWFrJylcbnZhciBsaXN0ID0gcmVxdWlyZSgnLi9oYW5kbGVycy9saXN0JylcbnZhciB3cmFwID0gcmVxdWlyZSgnLi93cmFwJylcblxuZnVuY3Rpb24gZ2VuZXJhdGVGb290bm90ZXMoaCkge1xuICB2YXIgZm9vdG5vdGVCeUlkID0gaC5mb290bm90ZUJ5SWRcbiAgdmFyIGZvb3Rub3RlT3JkZXIgPSBoLmZvb3Rub3RlT3JkZXJcbiAgdmFyIGxlbmd0aCA9IGZvb3Rub3RlT3JkZXIubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsaXN0SXRlbXMgPSBbXVxuICB2YXIgZGVmXG4gIHZhciBiYWNrUmVmZXJlbmNlXG4gIHZhciBjb250ZW50XG4gIHZhciB0YWlsXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBkZWYgPSBmb290bm90ZUJ5SWRbZm9vdG5vdGVPcmRlcltpbmRleF0udG9VcHBlckNhc2UoKV1cblxuICAgIGlmICghZGVmKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnRlbnQgPSBkZWYuY2hpbGRyZW4uY29uY2F0KClcbiAgICB0YWlsID0gY29udGVudFtjb250ZW50Lmxlbmd0aCAtIDFdXG4gICAgYmFja1JlZmVyZW5jZSA9IHtcbiAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgIHVybDogJyNmbnJlZi0nICsgZGVmLmlkZW50aWZpZXIsXG4gICAgICBkYXRhOiB7aFByb3BlcnRpZXM6IHtjbGFzc05hbWU6IFsnZm9vdG5vdGUtYmFja3JlZiddfX0sXG4gICAgICBjaGlsZHJlbjogW3t0eXBlOiAndGV4dCcsIHZhbHVlOiAn4oapJ31dXG4gICAgfVxuXG4gICAgaWYgKCF0YWlsIHx8IHRhaWwudHlwZSAhPT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgIHRhaWwgPSB7dHlwZTogJ3BhcmFncmFwaCcsIGNoaWxkcmVuOiBbXX1cbiAgICAgIGNvbnRlbnQucHVzaCh0YWlsKVxuICAgIH1cblxuICAgIHRhaWwuY2hpbGRyZW4ucHVzaChiYWNrUmVmZXJlbmNlKVxuXG4gICAgbGlzdEl0ZW1zLnB1c2goe1xuICAgICAgdHlwZTogJ2xpc3RJdGVtJyxcbiAgICAgIGRhdGE6IHtoUHJvcGVydGllczoge2lkOiAnZm4tJyArIGRlZi5pZGVudGlmaWVyfX0sXG4gICAgICBjaGlsZHJlbjogY29udGVudCxcbiAgICAgIHBvc2l0aW9uOiBkZWYucG9zaXRpb25cbiAgICB9KVxuICB9XG5cbiAgaWYgKGxpc3RJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGgoXG4gICAgbnVsbCxcbiAgICAnZGl2JyxcbiAgICB7Y2xhc3NOYW1lOiBbJ2Zvb3Rub3RlcyddfSxcbiAgICB3cmFwKFxuICAgICAgW1xuICAgICAgICB0aGVtYXRpY0JyZWFrKGgpLFxuICAgICAgICBsaXN0KGgsIHt0eXBlOiAnbGlzdCcsIG9yZGVyZWQ6IHRydWUsIGNoaWxkcmVuOiBsaXN0SXRlbXN9KVxuICAgICAgXSxcbiAgICAgIHRydWVcbiAgICApXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrcXVvdGVcblxudmFyIHdyYXAgPSByZXF1aXJlKCcuLi93cmFwJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBibG9ja3F1b3RlKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2Jsb2NrcXVvdGUnLCB3cmFwKGFsbChoLCBub2RlKSwgdHJ1ZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBoYXJkQnJlYWtcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuZnVuY3Rpb24gaGFyZEJyZWFrKGgsIG5vZGUpIHtcbiAgcmV0dXJuIFtoKG5vZGUsICdicicpLCB1KCd0ZXh0JywgJ1xcbicpXVxufVxuIiwiLyohXG4gKiByZXBlYXQtc3RyaW5nIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9yZXBlYXQtc3RyaW5nPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogUmVzdWx0cyBjYWNoZVxuICovXG5cbnZhciByZXMgPSAnJztcbnZhciBjYWNoZTtcblxuLyoqXG4gKiBFeHBvc2UgYHJlcGVhdGBcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcGVhdDtcblxuLyoqXG4gKiBSZXBlYXQgdGhlIGdpdmVuIGBzdHJpbmdgIHRoZSBzcGVjaWZpZWQgYG51bWJlcmBcbiAqIG9mIHRpbWVzLlxuICpcbiAqICoqRXhhbXBsZToqKlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpO1xuICogcmVwZWF0KCdBJywgNSk7XG4gKiAvLz0+IEFBQUFBXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmluZ2AgVGhlIHN0cmluZyB0byByZXBlYXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBgbnVtYmVyYCBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFJlcGVhdGVkIHN0cmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiByZXBlYXQoc3RyLCBudW0pIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIC8vIGNvdmVyIGNvbW1vbiwgcXVpY2sgdXNlIGNhc2VzXG4gIGlmIChudW0gPT09IDEpIHJldHVybiBzdHI7XG4gIGlmIChudW0gPT09IDIpIHJldHVybiBzdHIgKyBzdHI7XG5cbiAgdmFyIG1heCA9IHN0ci5sZW5ndGggKiBudW07XG4gIGlmIChjYWNoZSAhPT0gc3RyIHx8IHR5cGVvZiBjYWNoZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjYWNoZSA9IHN0cjtcbiAgICByZXMgPSAnJztcbiAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID49IG1heCkge1xuICAgIHJldHVybiByZXMuc3Vic3RyKDAsIG1heCk7XG4gIH1cblxuICB3aGlsZSAobWF4ID4gcmVzLmxlbmd0aCAmJiBudW0gPiAxKSB7XG4gICAgaWYgKG51bSAmIDEpIHtcbiAgICAgIHJlcyArPSBzdHI7XG4gICAgfVxuXG4gICAgbnVtID4+PSAxO1xuICAgIHN0ciArPSBzdHI7XG4gIH1cblxuICByZXMgKz0gc3RyO1xuICByZXMgPSByZXMuc3Vic3RyKDAsIG1heCk7XG4gIHJldHVybiByZXM7XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBkZXRhYlxuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG5cbnZhciB0YWIgPSAweDA5XG52YXIgbGluZUZlZWQgPSAweDBhXG52YXIgY2FycmlhZ2VSZXR1cm4gPSAweDBkXG5cbi8vIFJlcGxhY2UgdGFicyB3aXRoIHNwYWNlcywgYmVpbmcgc21hcnQgYWJvdXQgd2hpY2ggY29sdW1uIHRoZSB0YWIgaXMgYXQgYW5kXG4vLyB3aGljaCBzaXplIHNob3VsZCBiZSB1c2VkLlxuZnVuY3Rpb24gZGV0YWIodmFsdWUsIHNpemUpIHtcbiAgdmFyIHN0cmluZyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgdmFyIGxlbmd0aCA9IHN0cmluZyAmJiB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN0YXJ0ID0gMFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgY29sdW1uID0gLTFcbiAgdmFyIHRhYlNpemUgPSBzaXplIHx8IDRcbiAgdmFyIHJlc3VsdHMgPSBbXVxuICB2YXIgY29kZVxuICB2YXIgYWRkXG5cbiAgaWYgKCFzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RldGFiIGV4cGVjdGVkIHN0cmluZycpXG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNvZGUgPT09IHRhYikge1xuICAgICAgYWRkID0gdGFiU2l6ZSAtICgoY29sdW1uICsgMSkgJSB0YWJTaXplKVxuICAgICAgY29sdW1uICs9IGFkZFxuICAgICAgcmVzdWx0cy5wdXNoKHZhbHVlLnNsaWNlKHN0YXJ0LCBpbmRleCkgKyByZXBlYXQoJyAnLCBhZGQpKVxuICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IGxpbmVGZWVkIHx8IGNvZGUgPT09IGNhcnJpYWdlUmV0dXJuKSB7XG4gICAgICBjb2x1bW4gPSAtMVxuICAgIH0gZWxzZSB7XG4gICAgICBjb2x1bW4rK1xuICAgIH1cbiAgfVxuXG4gIHJlc3VsdHMucHVzaCh2YWx1ZS5zbGljZShzdGFydCkpXG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvZGVcblxudmFyIGRldGFiID0gcmVxdWlyZSgnZGV0YWInKVxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuZnVuY3Rpb24gY29kZShoLCBub2RlKSB7XG4gIHZhciB2YWx1ZSA9IG5vZGUudmFsdWUgPyBkZXRhYihub2RlLnZhbHVlICsgJ1xcbicpIDogJydcbiAgdmFyIGxhbmcgPSBub2RlLmxhbmcgJiYgbm9kZS5sYW5nLm1hdGNoKC9eW14gXFx0XSsoPz1bIFxcdF18JCkvKVxuICB2YXIgcHJvcHMgPSB7fVxuXG4gIGlmIChsYW5nKSB7XG4gICAgcHJvcHMuY2xhc3NOYW1lID0gWydsYW5ndWFnZS0nICsgbGFuZ11cbiAgfVxuXG4gIHJldHVybiBoKG5vZGUucG9zaXRpb24sICdwcmUnLCBbaChub2RlLCAnY29kZScsIHByb3BzLCBbdSgndGV4dCcsIHZhbHVlKV0pXSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmlrZXRocm91Z2hcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIHN0cmlrZXRocm91Z2goaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnZGVsJywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZW1waGFzaXNcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIGVtcGhhc2lzKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ2VtJywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZm9vdG5vdGVSZWZlcmVuY2VcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuZnVuY3Rpb24gZm9vdG5vdGVSZWZlcmVuY2UoaCwgbm9kZSkge1xuICB2YXIgZm9vdG5vdGVPcmRlciA9IGguZm9vdG5vdGVPcmRlclxuICB2YXIgaWRlbnRpZmllciA9IFN0cmluZyhub2RlLmlkZW50aWZpZXIpXG5cbiAgaWYgKGZvb3Rub3RlT3JkZXIuaW5kZXhPZihpZGVudGlmaWVyKSA9PT0gLTEpIHtcbiAgICBmb290bm90ZU9yZGVyLnB1c2goaWRlbnRpZmllcilcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUucG9zaXRpb24sICdzdXAnLCB7aWQ6ICdmbnJlZi0nICsgaWRlbnRpZmllcn0sIFtcbiAgICBoKG5vZGUsICdhJywge2hyZWY6ICcjZm4tJyArIGlkZW50aWZpZXIsIGNsYXNzTmFtZTogWydmb290bm90ZS1yZWYnXX0sIFtcbiAgICAgIHUoJ3RleHQnLCBub2RlLmxhYmVsIHx8IGlkZW50aWZpZXIpXG4gICAgXSlcbiAgXSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlXG5cbnZhciBmb290bm90ZVJlZmVyZW5jZSA9IHJlcXVpcmUoJy4vZm9vdG5vdGUtcmVmZXJlbmNlJylcblxuZnVuY3Rpb24gZm9vdG5vdGUoaCwgbm9kZSkge1xuICB2YXIgZm9vdG5vdGVCeUlkID0gaC5mb290bm90ZUJ5SWRcbiAgdmFyIGZvb3Rub3RlT3JkZXIgPSBoLmZvb3Rub3RlT3JkZXJcbiAgdmFyIGlkZW50aWZpZXIgPSAxXG5cbiAgd2hpbGUgKGlkZW50aWZpZXIgaW4gZm9vdG5vdGVCeUlkKSB7XG4gICAgaWRlbnRpZmllcisrXG4gIH1cblxuICBpZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXIpXG5cbiAgLy8gTm8gbmVlZCB0byBjaGVjayBpZiBgaWRlbnRpZmllcmAgZXhpc3RzIGluIGBmb290bm90ZU9yZGVyYCwgaXTigJlzIGd1YXJhbnRlZWRcbiAgLy8gdG8gbm90IGV4aXN0IGJlY2F1c2Ugd2UganVzdCBnZW5lcmF0ZWQgaXQuXG4gIGZvb3Rub3RlT3JkZXIucHVzaChpZGVudGlmaWVyKVxuXG4gIGZvb3Rub3RlQnlJZFtpZGVudGlmaWVyXSA9IHtcbiAgICB0eXBlOiAnZm9vdG5vdGVEZWZpbml0aW9uJyxcbiAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgIGNoaWxkcmVuOiBbe3R5cGU6ICdwYXJhZ3JhcGgnLCBjaGlsZHJlbjogbm9kZS5jaGlsZHJlbn1dLFxuICAgIHBvc2l0aW9uOiBub2RlLnBvc2l0aW9uXG4gIH1cblxuICByZXR1cm4gZm9vdG5vdGVSZWZlcmVuY2UoaCwge1xuICAgIHR5cGU6ICdmb290bm90ZVJlZmVyZW5jZScsXG4gICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICBwb3NpdGlvbjogbm9kZS5wb3NpdGlvblxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaGVhZGluZ1xuXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gaGVhZGluZyhoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdoJyArIG5vZGUuZGVwdGgsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGh0bWxcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcblxuLy8gUmV0dXJuIGVpdGhlciBhIGByYXdgIG5vZGUgaW4gZGFuZ2Vyb3VzIG1vZGUsIG90aGVyd2lzZSBub3RoaW5nLlxuZnVuY3Rpb24gaHRtbChoLCBub2RlKSB7XG4gIHJldHVybiBoLmRhbmdlcm91cyA/IGguYXVnbWVudChub2RlLCB1KCdyYXcnLCBub2RlLnZhbHVlKSkgOiBudWxsXG59XG4iLCJcbid1c2Ugc3RyaWN0JztcblxuXG52YXIgZW5jb2RlQ2FjaGUgPSB7fTtcblxuXG4vLyBDcmVhdGUgYSBsb29rdXAgYXJyYXkgd2hlcmUgYW55dGhpbmcgYnV0IGNoYXJhY3RlcnMgaW4gYGNoYXJzYCBzdHJpbmdcbi8vIGFuZCBhbHBoYW51bWVyaWMgY2hhcnMgaXMgcGVyY2VudC1lbmNvZGVkLlxuLy9cbmZ1bmN0aW9uIGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlOyB9XG5cbiAgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcblxuICAgIGlmICgvXlswLTlhLXpdJC9pLnRlc3QoY2gpKSB7XG4gICAgICAvLyBhbHdheXMgYWxsb3cgdW5lbmNvZGVkIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICBjYWNoZS5wdXNoKGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIEVuY29kZSB1bnNhZmUgY2hhcmFjdGVycyB3aXRoIHBlcmNlbnQtZW5jb2RpbmcsIHNraXBwaW5nIGFscmVhZHlcbi8vIGVuY29kZWQgc2VxdWVuY2VzLlxuLy9cbi8vICAtIHN0cmluZyAgICAgICAtIHN0cmluZyB0byBlbmNvZGVcbi8vICAtIGV4Y2x1ZGUgICAgICAtIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIGEtekEtWjAtOSlcbi8vICAtIGtlZXBFc2NhcGVkICAtIGRvbid0IGVuY29kZSAnJScgaW4gYSBjb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZSAoZGVmYXVsdDogdHJ1ZSlcbi8vXG5mdW5jdGlvbiBlbmNvZGUoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICB2YXIgaSwgbCwgY29kZSwgbmV4dENvZGUsIGNhY2hlLFxuICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGVuY29kZShzdHJpbmcsIGtlZXBFc2NhcGVkKVxuICAgIGtlZXBFc2NhcGVkICA9IGV4Y2x1ZGU7XG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnM7XG4gIH1cblxuICBpZiAodHlwZW9mIGtlZXBFc2NhcGVkID09PSAndW5kZWZpbmVkJykge1xuICAgIGtlZXBFc2NhcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoa2VlcEVzY2FwZWQgJiYgY29kZSA9PT0gMHgyNSAvKiAlICovICYmIGkgKyAyIDwgbCkge1xuICAgICAgaWYgKC9eWzAtOWEtZl17Mn0kL2kudGVzdChzdHJpbmcuc2xpY2UoaSArIDEsIGkgKyAzKSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShpLCBpICsgMyk7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPCAxMjgpIHtcbiAgICAgIHJlc3VsdCArPSBjYWNoZVtjb2RlXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikge1xuICAgICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhEQkZGICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDB4REMwMCAmJiBuZXh0Q29kZSA8PSAweERGRkYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSArIHN0cmluZ1tpICsgMV0pO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9ICclRUYlQkYlQkQnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyAgID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJldmVydFxuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4vYWxsJylcblxuLy8gUmV0dXJuIHRoZSBjb250ZW50IG9mIGEgcmVmZXJlbmNlIHdpdGhvdXQgZGVmaW5pdGlvbiBhcyBNYXJrZG93bi5cbmZ1bmN0aW9uIHJldmVydChoLCBub2RlKSB7XG4gIHZhciBzdWJ0eXBlID0gbm9kZS5yZWZlcmVuY2VUeXBlXG4gIHZhciBzdWZmaXggPSAnXSdcbiAgdmFyIGNvbnRlbnRzXG4gIHZhciBoZWFkXG4gIHZhciB0YWlsXG5cbiAgaWYgKHN1YnR5cGUgPT09ICdjb2xsYXBzZWQnKSB7XG4gICAgc3VmZml4ICs9ICdbXSdcbiAgfSBlbHNlIGlmIChzdWJ0eXBlID09PSAnZnVsbCcpIHtcbiAgICBzdWZmaXggKz0gJ1snICsgKG5vZGUubGFiZWwgfHwgbm9kZS5pZGVudGlmaWVyKSArICddJ1xuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ2ltYWdlUmVmZXJlbmNlJykge1xuICAgIHJldHVybiB1KCd0ZXh0JywgJyFbJyArIG5vZGUuYWx0ICsgc3VmZml4KVxuICB9XG5cbiAgY29udGVudHMgPSBhbGwoaCwgbm9kZSlcbiAgaGVhZCA9IGNvbnRlbnRzWzBdXG5cbiAgaWYgKGhlYWQgJiYgaGVhZC50eXBlID09PSAndGV4dCcpIHtcbiAgICBoZWFkLnZhbHVlID0gJ1snICsgaGVhZC52YWx1ZVxuICB9IGVsc2Uge1xuICAgIGNvbnRlbnRzLnVuc2hpZnQodSgndGV4dCcsICdbJykpXG4gIH1cblxuICB0YWlsID0gY29udGVudHNbY29udGVudHMubGVuZ3RoIC0gMV1cblxuICBpZiAodGFpbCAmJiB0YWlsLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgIHRhaWwudmFsdWUgKz0gc3VmZml4XG4gIH0gZWxzZSB7XG4gICAgY29udGVudHMucHVzaCh1KCd0ZXh0Jywgc3VmZml4KSlcbiAgfVxuXG4gIHJldHVybiBjb250ZW50c1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29sbGFwc2VcblxuLy8gYGNvbGxhcHNlKCcgXFx0XFxuYmFyIFxcbmJhelxcdCcpIC8vICcgYmFyIGJheiAnYFxuZnVuY3Rpb24gY29sbGFwc2UodmFsdWUpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvXFxzKy9nLCAnICcpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0SXRlbVxuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxudmFyIHdyYXAgPSByZXF1aXJlKCcuLi93cmFwJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBsaXN0SXRlbShoLCBub2RlLCBwYXJlbnQpIHtcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICB2YXIgaGVhZCA9IGNoaWxkcmVuWzBdXG4gIHZhciByYXcgPSBhbGwoaCwgbm9kZSlcbiAgdmFyIGxvb3NlID0gcGFyZW50ID8gbGlzdExvb3NlKHBhcmVudCkgOiBsaXN0SXRlbUxvb3NlKG5vZGUpXG4gIHZhciBwcm9wcyA9IHt9XG4gIHZhciByZXN1bHRcbiAgdmFyIGNvbnRhaW5lclxuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuICB2YXIgY2hpbGRcblxuICAvLyBUaWdodCBsaXN0cyBzaG91bGQgbm90IHJlbmRlciBgcGFyYWdyYXBoYCBub2RlcyBhcyBgcGAgZWxlbWVudHMuXG4gIGlmIChsb29zZSkge1xuICAgIHJlc3VsdCA9IHJhd1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IFtdXG4gICAgbGVuZ3RoID0gcmF3Lmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGlsZCA9IHJhd1tpbmRleF1cblxuICAgICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdwJykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNoaWxkLmNoaWxkcmVuKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBub2RlLmNoZWNrZWQgPT09ICdib29sZWFuJykge1xuICAgIGlmIChsb29zZSAmJiAoIWhlYWQgfHwgaGVhZC50eXBlICE9PSAncGFyYWdyYXBoJykpIHtcbiAgICAgIHJlc3VsdC51bnNoaWZ0KGgobnVsbCwgJ3AnLCBbXSkpXG4gICAgfVxuXG4gICAgY29udGFpbmVyID0gbG9vc2UgPyByZXN1bHRbMF0uY2hpbGRyZW4gOiByZXN1bHRcblxuICAgIGlmIChjb250YWluZXIubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb250YWluZXIudW5zaGlmdCh1KCd0ZXh0JywgJyAnKSlcbiAgICB9XG5cbiAgICBjb250YWluZXIudW5zaGlmdChcbiAgICAgIGgobnVsbCwgJ2lucHV0Jywge1xuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBjaGVja2VkOiBub2RlLmNoZWNrZWQsXG4gICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIEFjY29yZGluZyB0byBnaXRodWItbWFya2Rvd24tY3NzLCB0aGlzIGNsYXNzIGhpZGVzIGJ1bGxldC5cbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2dpdGh1Yi1tYXJrZG93bi1jc3M+LlxuICAgIHByb3BzLmNsYXNzTmFtZSA9IFsndGFzay1saXN0LWl0ZW0nXVxuICB9XG5cbiAgaWYgKGxvb3NlICYmIHJlc3VsdC5sZW5ndGggIT09IDApIHtcbiAgICByZXN1bHQgPSB3cmFwKHJlc3VsdCwgdHJ1ZSlcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdsaScsIHByb3BzLCByZXN1bHQpXG59XG5cbmZ1bmN0aW9uIGxpc3RMb29zZShub2RlKSB7XG4gIHZhciBsb29zZSA9IG5vZGUuc3ByZWFkXG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuXG4gIHdoaWxlICghbG9vc2UgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGxvb3NlID0gbGlzdEl0ZW1Mb29zZShjaGlsZHJlbltpbmRleF0pXG4gIH1cblxuICByZXR1cm4gbG9vc2Vcbn1cblxuZnVuY3Rpb24gbGlzdEl0ZW1Mb29zZShub2RlKSB7XG4gIHZhciBzcHJlYWQgPSBub2RlLnNwcmVhZFxuXG4gIHJldHVybiBzcHJlYWQgPT09IHVuZGVmaW5lZCB8fCBzcHJlYWQgPT09IG51bGxcbiAgICA/IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMVxuICAgIDogc3ByZWFkXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0cmltTGluZXNcblxudmFyIHdzID0gL1sgXFx0XSpcXG4rWyBcXHRdKi9nXG52YXIgbmV3bGluZSA9ICdcXG4nXG5cbmZ1bmN0aW9uIHRyaW1MaW5lcyh2YWx1ZSkge1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKHdzLCBuZXdsaW5lKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBibG9ja3F1b3RlOiByZXF1aXJlKCcuL2Jsb2NrcXVvdGUnKSxcbiAgYnJlYWs6IHJlcXVpcmUoJy4vYnJlYWsnKSxcbiAgY29kZTogcmVxdWlyZSgnLi9jb2RlJyksXG4gIGRlbGV0ZTogcmVxdWlyZSgnLi9kZWxldGUnKSxcbiAgZW1waGFzaXM6IHJlcXVpcmUoJy4vZW1waGFzaXMnKSxcbiAgZm9vdG5vdGVSZWZlcmVuY2U6IHJlcXVpcmUoJy4vZm9vdG5vdGUtcmVmZXJlbmNlJyksXG4gIGZvb3Rub3RlOiByZXF1aXJlKCcuL2Zvb3Rub3RlJyksXG4gIGhlYWRpbmc6IHJlcXVpcmUoJy4vaGVhZGluZycpLFxuICBodG1sOiByZXF1aXJlKCcuL2h0bWwnKSxcbiAgaW1hZ2VSZWZlcmVuY2U6IHJlcXVpcmUoJy4vaW1hZ2UtcmVmZXJlbmNlJyksXG4gIGltYWdlOiByZXF1aXJlKCcuL2ltYWdlJyksXG4gIGlubGluZUNvZGU6IHJlcXVpcmUoJy4vaW5saW5lLWNvZGUnKSxcbiAgbGlua1JlZmVyZW5jZTogcmVxdWlyZSgnLi9saW5rLXJlZmVyZW5jZScpLFxuICBsaW5rOiByZXF1aXJlKCcuL2xpbmsnKSxcbiAgbGlzdEl0ZW06IHJlcXVpcmUoJy4vbGlzdC1pdGVtJyksXG4gIGxpc3Q6IHJlcXVpcmUoJy4vbGlzdCcpLFxuICBwYXJhZ3JhcGg6IHJlcXVpcmUoJy4vcGFyYWdyYXBoJyksXG4gIHJvb3Q6IHJlcXVpcmUoJy4vcm9vdCcpLFxuICBzdHJvbmc6IHJlcXVpcmUoJy4vc3Ryb25nJyksXG4gIHRhYmxlOiByZXF1aXJlKCcuL3RhYmxlJyksXG4gIHRleHQ6IHJlcXVpcmUoJy4vdGV4dCcpLFxuICB0aGVtYXRpY0JyZWFrOiByZXF1aXJlKCcuL3RoZW1hdGljLWJyZWFrJyksXG4gIHRvbWw6IGlnbm9yZSxcbiAgeWFtbDogaWdub3JlLFxuICBkZWZpbml0aW9uOiBpZ25vcmUsXG4gIGZvb3Rub3RlRGVmaW5pdGlvbjogaWdub3JlXG59XG5cbi8vIFJldHVybiBub3RoaW5nIGZvciBub2RlcyB0aGF0IGFyZSBpZ25vcmVkLlxuZnVuY3Rpb24gaWdub3JlKCkge1xuICByZXR1cm4gbnVsbFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW1hZ2VSZWZlcmVuY2VcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpXG52YXIgcmV2ZXJ0ID0gcmVxdWlyZSgnLi4vcmV2ZXJ0JylcblxuZnVuY3Rpb24gaW1hZ2VSZWZlcmVuY2UoaCwgbm9kZSkge1xuICB2YXIgZGVmID0gaC5kZWZpbml0aW9uKG5vZGUuaWRlbnRpZmllcilcbiAgdmFyIHByb3BzXG5cbiAgaWYgKCFkZWYpIHtcbiAgICByZXR1cm4gcmV2ZXJ0KGgsIG5vZGUpXG4gIH1cblxuICBwcm9wcyA9IHtzcmM6IG5vcm1hbGl6ZShkZWYudXJsIHx8ICcnKSwgYWx0OiBub2RlLmFsdH1cblxuICBpZiAoZGVmLnRpdGxlICE9PSBudWxsICYmIGRlZi50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBkZWYudGl0bGVcbiAgfVxuXG4gIHJldHVybiBoKG5vZGUsICdpbWcnLCBwcm9wcylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnbWR1cmwvZW5jb2RlJylcblxubW9kdWxlLmV4cG9ydHMgPSBpbWFnZVxuXG5mdW5jdGlvbiBpbWFnZShoLCBub2RlKSB7XG4gIHZhciBwcm9wcyA9IHtzcmM6IG5vcm1hbGl6ZShub2RlLnVybCksIGFsdDogbm9kZS5hbHR9XG5cbiAgaWYgKG5vZGUudGl0bGUgIT09IG51bGwgJiYgbm9kZS50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBub2RlLnRpdGxlXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnaW1nJywgcHJvcHMpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVDb2RlXG5cbnZhciBjb2xsYXBzZSA9IHJlcXVpcmUoJ2NvbGxhcHNlLXdoaXRlLXNwYWNlJylcbnZhciB1ID0gcmVxdWlyZSgndW5pc3QtYnVpbGRlcicpXG5cbmZ1bmN0aW9uIGlubGluZUNvZGUoaCwgbm9kZSkge1xuICByZXR1cm4gaChub2RlLCAnY29kZScsIFt1KCd0ZXh0JywgY29sbGFwc2Uobm9kZS52YWx1ZSkpXSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtSZWZlcmVuY2VcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ21kdXJsL2VuY29kZScpXG52YXIgcmV2ZXJ0ID0gcmVxdWlyZSgnLi4vcmV2ZXJ0JylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiBsaW5rUmVmZXJlbmNlKGgsIG5vZGUpIHtcbiAgdmFyIGRlZiA9IGguZGVmaW5pdGlvbihub2RlLmlkZW50aWZpZXIpXG4gIHZhciBwcm9wc1xuXG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuIHJldmVydChoLCBub2RlKVxuICB9XG5cbiAgcHJvcHMgPSB7aHJlZjogbm9ybWFsaXplKGRlZi51cmwgfHwgJycpfVxuXG4gIGlmIChkZWYudGl0bGUgIT09IG51bGwgJiYgZGVmLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcm9wcy50aXRsZSA9IGRlZi50aXRsZVxuICB9XG5cbiAgcmV0dXJuIGgobm9kZSwgJ2EnLCBwcm9wcywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdtZHVybC9lbmNvZGUnKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gbGlua1xuXG5mdW5jdGlvbiBsaW5rKGgsIG5vZGUpIHtcbiAgdmFyIHByb3BzID0ge2hyZWY6IG5vcm1hbGl6ZShub2RlLnVybCl9XG5cbiAgaWYgKG5vZGUudGl0bGUgIT09IG51bGwgJiYgbm9kZS50aXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMudGl0bGUgPSBub2RlLnRpdGxlXG4gIH1cblxuICByZXR1cm4gaChub2RlLCAnYScsIHByb3BzLCBhbGwoaCwgbm9kZSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJhZ3JhcGhcblxudmFyIGFsbCA9IHJlcXVpcmUoJy4uL2FsbCcpXG5cbmZ1bmN0aW9uIHBhcmFncmFwaChoLCBub2RlKSB7XG4gIHJldHVybiBoKG5vZGUsICdwJywgYWxsKGgsIG5vZGUpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdFxuXG52YXIgdSA9IHJlcXVpcmUoJ3VuaXN0LWJ1aWxkZXInKVxudmFyIHdyYXAgPSByZXF1aXJlKCcuLi93cmFwJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiByb290KGgsIG5vZGUpIHtcbiAgcmV0dXJuIGguYXVnbWVudChub2RlLCB1KCdyb290Jywgd3JhcChhbGwoaCwgbm9kZSkpKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cm9uZ1xuXG52YXIgYWxsID0gcmVxdWlyZSgnLi4vYWxsJylcblxuZnVuY3Rpb24gc3Ryb25nKGgsIG5vZGUpIHtcbiAgcmV0dXJuIGgobm9kZSwgJ3N0cm9uZycsIGFsbChoLCBub2RlKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhYmxlXG5cbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKVxudmFyIHdyYXAgPSByZXF1aXJlKCcuLi93cmFwJylcbnZhciBhbGwgPSByZXF1aXJlKCcuLi9hbGwnKVxuXG5mdW5jdGlvbiB0YWJsZShoLCBub2RlKSB7XG4gIHZhciByb3dzID0gbm9kZS5jaGlsZHJlblxuICB2YXIgaW5kZXggPSByb3dzLmxlbmd0aFxuICB2YXIgYWxpZ24gPSBub2RlLmFsaWduXG4gIHZhciBhbGlnbkxlbmd0aCA9IGFsaWduLmxlbmd0aFxuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIHBvc1xuICB2YXIgcm93XG4gIHZhciBvdXRcbiAgdmFyIG5hbWVcbiAgdmFyIGNlbGxcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHJvdyA9IHJvd3NbaW5kZXhdLmNoaWxkcmVuXG4gICAgbmFtZSA9IGluZGV4ID09PSAwID8gJ3RoJyA6ICd0ZCdcbiAgICBwb3MgPSBhbGlnbkxlbmd0aFxuICAgIG91dCA9IFtdXG5cbiAgICB3aGlsZSAocG9zLS0pIHtcbiAgICAgIGNlbGwgPSByb3dbcG9zXVxuICAgICAgb3V0W3Bvc10gPSBoKGNlbGwsIG5hbWUsIHthbGlnbjogYWxpZ25bcG9zXX0sIGNlbGwgPyBhbGwoaCwgY2VsbCkgOiBbXSlcbiAgICB9XG5cbiAgICByZXN1bHRbaW5kZXhdID0gaChyb3dzW2luZGV4XSwgJ3RyJywgd3JhcChvdXQsIHRydWUpKVxuICB9XG5cbiAgcmV0dXJuIGgoXG4gICAgbm9kZSxcbiAgICAndGFibGUnLFxuICAgIHdyYXAoXG4gICAgICBbXG4gICAgICAgIGgocmVzdWx0WzBdLnBvc2l0aW9uLCAndGhlYWQnLCB3cmFwKFtyZXN1bHRbMF1dLCB0cnVlKSksXG4gICAgICAgIGgoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhcnQ6IHBvc2l0aW9uLnN0YXJ0KHJlc3VsdFsxXSksXG4gICAgICAgICAgICBlbmQ6IHBvc2l0aW9uLmVuZChyZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3Rib2R5JyxcbiAgICAgICAgICB3cmFwKHJlc3VsdC5zbGljZSgxKSwgdHJ1ZSlcbiAgICAgICAgKVxuICAgICAgXSxcbiAgICAgIHRydWVcbiAgICApXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB0cmltTGluZXMgPSByZXF1aXJlKCd0cmltLWxpbmVzJylcblxuZnVuY3Rpb24gdGV4dChoLCBub2RlKSB7XG4gIHJldHVybiBoLmF1Z21lbnQobm9kZSwgdSgndGV4dCcsIHRyaW1MaW5lcyhub2RlLnZhbHVlKSkpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0b0hhc3RcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHUgPSByZXF1aXJlKCd1bmlzdC1idWlsZGVyJylcbnZhciB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKVxudmFyIHBvc2l0aW9uID0gcmVxdWlyZSgndW5pc3QtdXRpbC1wb3NpdGlvbicpXG52YXIgZ2VuZXJhdGVkID0gcmVxdWlyZSgndW5pc3QtdXRpbC1nZW5lcmF0ZWQnKVxudmFyIGRlZmluaXRpb25zID0gcmVxdWlyZSgnbWRhc3QtdXRpbC1kZWZpbml0aW9ucycpXG52YXIgb25lID0gcmVxdWlyZSgnLi9vbmUnKVxudmFyIGZvb3RlciA9IHJlcXVpcmUoJy4vZm9vdGVyJylcbnZhciBoYW5kbGVycyA9IHJlcXVpcmUoJy4vaGFuZGxlcnMnKVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gRmFjdG9yeSB0byB0cmFuc2Zvcm0uXG5mdW5jdGlvbiBmYWN0b3J5KHRyZWUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZGFuZ2Vyb3VzID0gc2V0dGluZ3MuYWxsb3dEYW5nZXJvdXNIVE1MXG4gIHZhciBmb290bm90ZUJ5SWQgPSB7fVxuXG4gIGguZGFuZ2Vyb3VzID0gZGFuZ2Vyb3VzXG4gIGguZGVmaW5pdGlvbiA9IGRlZmluaXRpb25zKHRyZWUsIHNldHRpbmdzKVxuICBoLmZvb3Rub3RlQnlJZCA9IGZvb3Rub3RlQnlJZFxuICBoLmZvb3Rub3RlT3JkZXIgPSBbXVxuICBoLmF1Z21lbnQgPSBhdWdtZW50XG4gIGguaGFuZGxlcnMgPSB4dGVuZChoYW5kbGVycywgc2V0dGluZ3MuaGFuZGxlcnMgfHwge30pXG5cbiAgdmlzaXQodHJlZSwgJ2Zvb3Rub3RlRGVmaW5pdGlvbicsIG9uZm9vdG5vdGVkZWZpbml0aW9uKVxuXG4gIHJldHVybiBoXG5cbiAgLy8gRmluYWxpc2UgdGhlIGNyZWF0ZWQgYHJpZ2h0YCwgYSBoYXN0IG5vZGUsIGZyb20gYGxlZnRgLCBhbiBtZGFzdCBub2RlLlxuICBmdW5jdGlvbiBhdWdtZW50KGxlZnQsIHJpZ2h0KSB7XG4gICAgdmFyIGRhdGFcbiAgICB2YXIgY3R4XG5cbiAgICAvLyBIYW5kbGUgYGRhdGEuaE5hbWVgLCBgZGF0YS5oUHJvcGVydGllcywgYGRhdGEuaENoaWxkcmVuYC5cbiAgICBpZiAobGVmdCAmJiAnZGF0YScgaW4gbGVmdCkge1xuICAgICAgZGF0YSA9IGxlZnQuZGF0YVxuXG4gICAgICBpZiAocmlnaHQudHlwZSA9PT0gJ2VsZW1lbnQnICYmIGRhdGEuaE5hbWUpIHtcbiAgICAgICAgcmlnaHQudGFnTmFtZSA9IGRhdGEuaE5hbWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LnR5cGUgPT09ICdlbGVtZW50JyAmJiBkYXRhLmhQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHJpZ2h0LnByb3BlcnRpZXMgPSB4dGVuZChyaWdodC5wcm9wZXJ0aWVzLCBkYXRhLmhQcm9wZXJ0aWVzKVxuICAgICAgfVxuXG4gICAgICBpZiAocmlnaHQuY2hpbGRyZW4gJiYgZGF0YS5oQ2hpbGRyZW4pIHtcbiAgICAgICAgcmlnaHQuY2hpbGRyZW4gPSBkYXRhLmhDaGlsZHJlblxuICAgICAgfVxuICAgIH1cblxuICAgIGN0eCA9IGxlZnQgJiYgbGVmdC5wb3NpdGlvbiA/IGxlZnQgOiB7cG9zaXRpb246IGxlZnR9XG5cbiAgICBpZiAoIWdlbmVyYXRlZChjdHgpKSB7XG4gICAgICByaWdodC5wb3NpdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IHBvc2l0aW9uLnN0YXJ0KGN0eCksXG4gICAgICAgIGVuZDogcG9zaXRpb24uZW5kKGN0eClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmlnaHRcbiAgfVxuXG4gIC8vIENyZWF0ZSBhbiBlbGVtZW50IGZvciBgbm9kZWAuXG4gIGZ1bmN0aW9uIGgobm9kZSwgdGFnTmFtZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKFxuICAgICAgKGNoaWxkcmVuID09PSB1bmRlZmluZWQgfHwgY2hpbGRyZW4gPT09IG51bGwpICYmXG4gICAgICB0eXBlb2YgcHJvcHMgPT09ICdvYmplY3QnICYmXG4gICAgICAnbGVuZ3RoJyBpbiBwcm9wc1xuICAgICkge1xuICAgICAgY2hpbGRyZW4gPSBwcm9wc1xuICAgICAgcHJvcHMgPSB7fVxuICAgIH1cblxuICAgIHJldHVybiBhdWdtZW50KG5vZGUsIHtcbiAgICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICAgIHRhZ05hbWU6IHRhZ05hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wcyB8fCB7fSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBvbmZvb3Rub3RlZGVmaW5pdGlvbihkZWZpbml0aW9uKSB7XG4gICAgdmFyIGlkID0gU3RyaW5nKGRlZmluaXRpb24uaWRlbnRpZmllcikudG9VcHBlckNhc2UoKVxuXG4gICAgLy8gTWltaWNrIENNIGJlaGF2aW9yIG9mIGxpbmsgZGVmaW5pdGlvbnMuXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3N5bnRheC10cmVlL21kYXN0LXV0aWwtZGVmaW5pdGlvbnMvYmxvYi84ZDQ4ZTU3L2luZGV4LmpzI0wyNj4uXG4gICAgaWYgKCFvd24uY2FsbChmb290bm90ZUJ5SWQsIGlkKSkge1xuICAgICAgZm9vdG5vdGVCeUlkW2lkXSA9IGRlZmluaXRpb25cbiAgICB9XG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtIGB0cmVlYCwgd2hpY2ggaXMgYW4gbWRhc3Qgbm9kZSwgdG8gYSBoYXN0IG5vZGUuXG5mdW5jdGlvbiB0b0hhc3QodHJlZSwgb3B0aW9ucykge1xuICB2YXIgaCA9IGZhY3RvcnkodHJlZSwgb3B0aW9ucylcbiAgdmFyIG5vZGUgPSBvbmUoaCwgdHJlZSlcbiAgdmFyIGZvb3QgPSBmb290ZXIoaClcblxuICBpZiAoZm9vdCkge1xuICAgIG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLmNvbmNhdCh1KCd0ZXh0JywgJ1xcbicpLCBmb290KVxuICB9XG5cbiAgcmV0dXJuIG5vZGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG1kYXN0Mmhhc3QgPSByZXF1aXJlKCdtZGFzdC11dGlsLXRvLWhhc3QnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlbWFyazJyZWh5cGVcblxuLy8gQXR0YWNoZXIuXG4vLyBJZiBhIGRlc3RpbmF0aW9uIGlzIGdpdmVuLCBydW5zIHRoZSBkZXN0aW5hdGlvbiB3aXRoIHRoZSBuZXcgaGFzdCB0cmVlXG4vLyAoYnJpZGdlIG1vZGUpLlxuLy8gV2l0aG91dCBkZXN0aW5hdGlvbiwgcmV0dXJucyB0aGUgdHJlZTogZnVydGhlciBwbHVnaW5zIHJ1biBvbiB0aGF0IHRyZWVcbi8vIChtdXRhdGUgbW9kZSkuXG5mdW5jdGlvbiByZW1hcmsycmVoeXBlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSB7XG4gIGlmIChkZXN0aW5hdGlvbiAmJiAhZGVzdGluYXRpb24ucHJvY2Vzcykge1xuICAgIG9wdGlvbnMgPSBkZXN0aW5hdGlvblxuICAgIGRlc3RpbmF0aW9uID0gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGRlc3RpbmF0aW9uID8gYnJpZGdlKGRlc3RpbmF0aW9uLCBvcHRpb25zKSA6IG11dGF0ZShvcHRpb25zKVxufVxuXG4vLyBCcmlkZ2UgbW9kZS5cbi8vIFJ1bnMgdGhlIGRlc3RpbmF0aW9uIHdpdGggdGhlIG5ldyBoYXN0IHRyZWUuXG5mdW5jdGlvbiBicmlkZ2UoZGVzdGluYXRpb24sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybWVyXG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtZXIobm9kZSwgZmlsZSwgbmV4dCkge1xuICAgIGRlc3RpbmF0aW9uLnJ1bihtZGFzdDJoYXN0KG5vZGUsIG9wdGlvbnMpLCBmaWxlLCBkb25lKVxuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIpIHtcbiAgICAgIG5leHQoZXJyKVxuICAgIH1cbiAgfVxufVxuXG4vLyBNdXRhdGUtbW9kZS5cbi8vIEZ1cnRoZXIgdHJhbnNmb3JtZXJzIHJ1biBvbiB0aGUgaGFzdCB0cmVlLlxuZnVuY3Rpb24gbXV0YXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybWVyXG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtZXIobm9kZSkge1xuICAgIHJldHVybiBtZGFzdDJoYXN0KG5vZGUsIG9wdGlvbnMpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdoaXRlc3BhY2VcblxudmFyIGZyb21Db2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIHJlID0gL1xccy9cblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB3aGl0ZXNwYWNlKGNoYXJhY3Rlcikge1xuICByZXR1cm4gcmUudGVzdChcbiAgICB0eXBlb2YgY2hhcmFjdGVyID09PSAnbnVtYmVyJyA/IGZyb21Db2RlKGNoYXJhY3RlcikgOiBjaGFyYWN0ZXIuY2hhckF0KDApXG4gIClcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJyk7XG5cbnZhciBDX1BJUEUgPSAnfCc7XG52YXIgRE9VQkxFID0gJ3x8JztcblxuZnVuY3Rpb24gbG9jYXRvcih2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YoRE9VQkxFLCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgZnVuY3Rpb24gaW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmdmbSB8fCB2YWx1ZS5zdWJzdHIoMCwgMikgIT09IERPVUJMRSB8fCB2YWx1ZS5zdWJzdHIoMCwgNCkgPT09IERPVUJMRSArIERPVUJMRSB8fCB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdCgyKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hhcmFjdGVyID0gJyc7XG4gICAgdmFyIHByZXZpb3VzID0gJyc7XG4gICAgdmFyIHByZWNlZGluZyA9ICcnO1xuICAgIHZhciBzdWJ2YWx1ZSA9ICcnO1xuICAgIHZhciBpbmRleCA9IDE7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICB2YXIgbm93ID0gZWF0Lm5vdygpO1xuICAgIG5vdy5jb2x1bW4gKz0gMjtcbiAgICBub3cub2Zmc2V0ICs9IDI7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gQ19QSVBFICYmIHByZXZpb3VzID09PSBDX1BJUEUgJiYgKCFwcmVjZWRpbmcgfHwgIXdoaXRlc3BhY2UocHJlY2VkaW5nKSkpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVhdChET1VCTEUgKyBzdWJ2YWx1ZSArIERPVUJMRSkoe1xuICAgICAgICAgIHR5cGU6ICdrYmQnLFxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplSW5saW5lKHN1YnZhbHVlLCBub3cpLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhOYW1lOiAna2JkJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHN1YnZhbHVlICs9IHByZXZpb3VzO1xuICAgICAgcHJlY2VkaW5nID0gcHJldmlvdXM7XG4gICAgICBwcmV2aW91cyA9IGNoYXJhY3RlcjtcbiAgICB9XG4gIH1cblxuICBpbmxpbmVUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIHZhciBQYXJzZXIgPSB0aGlzLlBhcnNlcjsgLy8gSW5qZWN0IGlubGluZVRva2VuaXplclxuXG4gIHZhciBpbmxpbmVUb2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5pbmxpbmVUb2tlbml6ZXJzO1xuICB2YXIgaW5saW5lTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lTWV0aG9kcztcbiAgaW5saW5lVG9rZW5pemVycy5rYmQgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndGV4dCcpLCAwLCAna2JkJyk7XG4gIHZhciBDb21waWxlciA9IHRoaXMuQ29tcGlsZXI7IC8vIFN0cmluZ2lmeVxuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcblxuICAgIHZpc2l0b3JzLmtiZCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gXCJ8fFwiLmNvbmNhdCh0aGlzLmFsbChub2RlKS5qb2luKCcnKSwgXCJ8fFwiKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGx1Z2luOyIsImV4cG9ydHMuaXNSZW1hcmtQYXJzZXIgPSBpc1JlbWFya1BhcnNlclxuZXhwb3J0cy5pc1JlbWFya0NvbXBpbGVyID0gaXNSZW1hcmtDb21waWxlclxuXG5mdW5jdGlvbiBpc1JlbWFya1BhcnNlcihwYXJzZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocGFyc2VyICYmIHBhcnNlci5wcm90b3R5cGUgJiYgcGFyc2VyLnByb3RvdHlwZS5ibG9ja1Rva2VuaXplcnMpXG59XG5cbmZ1bmN0aW9uIGlzUmVtYXJrQ29tcGlsZXIoY29tcGlsZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4oY29tcGlsZXIgJiYgY29tcGlsZXIucHJvdG90eXBlICYmIGNvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycylcbn1cbiIsInZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRoSW5saW5lXG5cbmNvbnN0IHRhYiA9IDkgLy8gJ1xcdCdcbmNvbnN0IHNwYWNlID0gMzIgLy8gJyAnXG5jb25zdCBkb2xsYXJTaWduID0gMzYgLy8gJyQnXG5jb25zdCBkaWdpdDAgPSA0OCAvLyAnMCdcbmNvbnN0IGRpZ2l0OSA9IDU3IC8vICc5J1xuY29uc3QgYmFja3NsYXNoID0gOTIgLy8gJ1xcXFwnXG5cbmNvbnN0IGNsYXNzTGlzdCA9IFsnbWF0aCcsICdtYXRoLWlubGluZSddXG5jb25zdCBtYXRoRGlzcGxheSA9ICdtYXRoLWRpc3BsYXknXG5cbmZ1bmN0aW9uIG1hdGhJbmxpbmUob3B0aW9ucykge1xuICBjb25zdCBwYXJzZXIgPSB0aGlzLlBhcnNlclxuICBjb25zdCBjb21waWxlciA9IHRoaXMuQ29tcGlsZXJcblxuICBpZiAodXRpbC5pc1JlbWFya1BhcnNlcihwYXJzZXIpKSB7XG4gICAgYXR0YWNoUGFyc2VyKHBhcnNlciwgb3B0aW9ucylcbiAgfVxuXG4gIGlmICh1dGlsLmlzUmVtYXJrQ29tcGlsZXIoY29tcGlsZXIpKSB7XG4gICAgYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIsIG9wdGlvbnMpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoUGFyc2VyKHBhcnNlciwgb3B0aW9ucykge1xuICBjb25zdCBwcm90byA9IHBhcnNlci5wcm90b3R5cGVcbiAgY29uc3QgaW5saW5lTWV0aG9kcyA9IHByb3RvLmlubGluZU1ldGhvZHNcblxuICBtYXRoSW5saW5lVG9rZW5pemVyLmxvY2F0b3IgPSBsb2NhdG9yXG5cbiAgcHJvdG8uaW5saW5lVG9rZW5pemVycy5tYXRoID0gbWF0aElubGluZVRva2VuaXplclxuXG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndGV4dCcpLCAwLCAnbWF0aCcpXG5cbiAgZnVuY3Rpb24gbG9jYXRvcih2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJyQnLCBmcm9tSW5kZXgpXG4gIH1cblxuICBmdW5jdGlvbiBtYXRoSW5saW5lVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICAgIGxldCBkb3VibGUgPSBmYWxzZVxuICAgIGxldCBlc2NhcGVkID0gZmFsc2VcbiAgICBsZXQgaW5kZXggPSAwXG4gICAgbGV0IHByZXZcbiAgICBsZXQgY29kZVxuICAgIGxldCBuZXh0XG4gICAgbGV0IGNvbnRlbnRTdGFydFxuICAgIGxldCBjb250ZW50RW5kXG4gICAgbGV0IHZhbHVlRW5kXG4gICAgbGV0IGNvbnRlbnRcblxuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gYmFja3NsYXNoKSB7XG4gICAgICBlc2NhcGVkID0gdHJ1ZVxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gZG9sbGFyU2lnbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuXG4gICAgLy8gU3VwcG9ydCBlc2NhcGVkIGRvbGxhcnMuXG4gICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCBpbmRleCkpKHt0eXBlOiAndGV4dCcsIHZhbHVlOiAnJCd9KVxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgZG91YmxlID0gdHJ1ZVxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgLy8gT3BlbmluZyBmZW5jZSBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhIHRhYi5cbiAgICBpZiAobmV4dCA9PT0gc3BhY2UgfHwgbmV4dCA9PT0gdGFiKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb250ZW50U3RhcnQgPSBpbmRleFxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb2RlID0gbmV4dFxuICAgICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuXG4gICAgICBpZiAoY29kZSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgICBwcmV2ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCAtIDEpXG5cbiAgICAgICAgLy8gQ2xvc2luZyBmZW5jZSBjYW5ub3QgYmUgcHJlY2VkZWQgYnkgYSBzcGFjZSBvciBhIHRhYiwgb3IgZm9sbG93ZWQgYnlcbiAgICAgICAgLy8gYSBkaWdpdC5cbiAgICAgICAgLy8gSWYgYSBkb3VibGUgbWFya2VyIHdhcyB1c2VkIHRvIG9wZW4sIHRoZSBjbG9zaW5nIGZlbmNlIG11c3QgY29uc2lzdFxuICAgICAgICAvLyBvZiB0d28gZG9sbGFycyBhcyB3ZWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJldiAhPT0gc3BhY2UgJiZcbiAgICAgICAgICBwcmV2ICE9PSB0YWIgJiZcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICAgICAgKG5leHQgIT09IG5leHQgfHwgbmV4dCA8IGRpZ2l0MCB8fCBuZXh0ID4gZGlnaXQ5KSAmJlxuICAgICAgICAgICghZG91YmxlIHx8IG5leHQgPT09IGRvbGxhclNpZ24pXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRlbnRFbmQgPSBpbmRleCAtIDFcblxuICAgICAgICAgIGluZGV4KytcblxuICAgICAgICAgIGlmIChkb3VibGUpIHtcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YWx1ZUVuZCA9IGluZGV4XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb2RlID09PSBiYWNrc2xhc2gpIHtcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBuZXh0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCArIDEpXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWVFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29udGVudCA9IHZhbHVlLnNsaWNlKGNvbnRlbnRTdGFydCwgY29udGVudEVuZCArIDEpXG5cbiAgICByZXR1cm4gZWF0KHZhbHVlLnNsaWNlKDAsIHZhbHVlRW5kKSkoe1xuICAgICAgdHlwZTogJ2lubGluZU1hdGgnLFxuICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGhOYW1lOiAnc3BhbicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc0xpc3QuY29uY2F0KFxuICAgICAgICAgICAgZG91YmxlICYmIG9wdGlvbnMuaW5saW5lTWF0aERvdWJsZSA/IFttYXRoRGlzcGxheV0gOiBbXVxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgaENoaWxkcmVuOiBbe3R5cGU6ICd0ZXh0JywgdmFsdWU6IGNvbnRlbnR9XVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoQ29tcGlsZXIoY29tcGlsZXIpIHtcbiAgY29uc3QgcHJvdG8gPSBjb21waWxlci5wcm90b3R5cGVcblxuICBwcm90by52aXNpdG9ycy5pbmxpbmVNYXRoID0gY29tcGlsZUlubGluZU1hdGhcblxuICBmdW5jdGlvbiBjb21waWxlSW5saW5lTWF0aChub2RlKSB7XG4gICAgbGV0IGZlbmNlID0gJyQnXG4gICAgY29uc3QgY2xhc3NlcyA9XG4gICAgICAobm9kZS5kYXRhICYmIG5vZGUuZGF0YS5oUHJvcGVydGllcyAmJiBub2RlLmRhdGEuaFByb3BlcnRpZXMuY2xhc3NOYW1lKSB8fFxuICAgICAgW11cblxuICAgIGlmIChjbGFzc2VzLmluY2x1ZGVzKG1hdGhEaXNwbGF5KSkge1xuICAgICAgZmVuY2UgPSAnJCQnXG4gICAgfVxuXG4gICAgcmV0dXJuIGZlbmNlICsgbm9kZS52YWx1ZSArIGZlbmNlXG4gIH1cbn1cbiIsImNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGhCbG9ja1xuXG5jb25zdCBsaW5lRmVlZCA9IDEwIC8vICAnXFxuJ1xuY29uc3Qgc3BhY2UgPSAzMiAvLyAnICdcbmNvbnN0IGRvbGxhclNpZ24gPSAzNiAvLyAnJCdcblxuY29uc3QgbGluZUZlZWRDaGFyID0gJ1xcbidcbmNvbnN0IGRvbGxhclNpZ25DaGFyID0gJyQnXG5cbmNvbnN0IG1pbkZlbmNlQ291bnQgPSAyXG5cbmNvbnN0IGNsYXNzTGlzdCA9IFsnbWF0aCcsICdtYXRoLWRpc3BsYXknXVxuXG5mdW5jdGlvbiBtYXRoQmxvY2soKSB7XG4gIGNvbnN0IHBhcnNlciA9IHRoaXMuUGFyc2VyXG4gIGNvbnN0IGNvbXBpbGVyID0gdGhpcy5Db21waWxlclxuXG4gIGlmICh1dGlsLmlzUmVtYXJrUGFyc2VyKHBhcnNlcikpIHtcbiAgICBhdHRhY2hQYXJzZXIocGFyc2VyKVxuICB9XG5cbiAgaWYgKHV0aWwuaXNSZW1hcmtDb21waWxlcihjb21waWxlcikpIHtcbiAgICBhdHRhY2hDb21waWxlcihjb21waWxlcilcbiAgfVxufVxuXG5mdW5jdGlvbiBhdHRhY2hQYXJzZXIocGFyc2VyKSB7XG4gIGNvbnN0IHByb3RvID0gcGFyc2VyLnByb3RvdHlwZVxuICBjb25zdCBibG9ja01ldGhvZHMgPSBwcm90by5ibG9ja01ldGhvZHNcbiAgY29uc3QgaW50ZXJydXB0UGFyYWdyYXBoID0gcHJvdG8uaW50ZXJydXB0UGFyYWdyYXBoXG4gIGNvbnN0IGludGVycnVwdExpc3QgPSBwcm90by5pbnRlcnJ1cHRMaXN0XG4gIGNvbnN0IGludGVycnVwdEJsb2NrcXVvdGUgPSBwcm90by5pbnRlcnJ1cHRCbG9ja3F1b3RlXG5cbiAgcHJvdG8uYmxvY2tUb2tlbml6ZXJzLm1hdGggPSBtYXRoQmxvY2tUb2tlbml6ZXJcblxuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCAnbWF0aCcpXG5cbiAgLy8gSW5qZWN0IG1hdGggdG8gaW50ZXJydXB0IHJ1bGVzXG4gIGludGVycnVwdFBhcmFncmFwaC5zcGxpY2UoaW50ZXJydXB0UGFyYWdyYXBoLmluZGV4T2YoJ2ZlbmNlZENvZGUnKSArIDEsIDAsIFtcbiAgICAnbWF0aCdcbiAgXSlcbiAgaW50ZXJydXB0TGlzdC5zcGxpY2UoaW50ZXJydXB0TGlzdC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbJ21hdGgnXSlcbiAgaW50ZXJydXB0QmxvY2txdW90ZS5zcGxpY2UoaW50ZXJydXB0QmxvY2txdW90ZS5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbXG4gICAgJ21hdGgnXG4gIF0pXG5cbiAgZnVuY3Rpb24gbWF0aEJsb2NrVG9rZW5pemVyKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgICB2YXIgaW5kZXggPSAwXG4gICAgbGV0IGNvZGVcbiAgICBsZXQgY29udGVudFxuICAgIGxldCBsaW5lRW5kXG4gICAgbGV0IGxpbmVJbmRleFxuICAgIGxldCBvcGVuaW5nRmVuY2VJbmRlbnRTaXplXG4gICAgbGV0IG9wZW5pbmdGZW5jZVNpemVcbiAgICBsZXQgb3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0XG4gICAgbGV0IGNsb3NpbmdGZW5jZVxuICAgIGxldCBjbG9zaW5nRmVuY2VTaXplXG4gICAgbGV0IGxpbmVDb250ZW50U3RhcnRcbiAgICBsZXQgbGluZUNvbnRlbnRFbmRcblxuICAgIC8vIFNraXAgaW5pdGlhbCBzcGFjaW5nLlxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gc3BhY2UpIHtcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBvcGVuaW5nRmVuY2VJbmRlbnRTaXplID0gaW5kZXhcblxuICAgIC8vIFNraXAgdGhlIGZlbmNlLlxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gZG9sbGFyU2lnbikge1xuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIG9wZW5pbmdGZW5jZVNpemUgPSBpbmRleCAtIG9wZW5pbmdGZW5jZUluZGVudFNpemVcblxuICAgIC8vIEV4aXQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCBvZiBhIGZlbmNlLlxuICAgIGlmIChvcGVuaW5nRmVuY2VTaXplIDwgbWluRmVuY2VDb3VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2tpcCBzcGFjaW5nIGFmdGVyIHRoZSBmZW5jZS5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgdmFsdWUuY2hhckNvZGVBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgb3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0ID0gaW5kZXhcblxuICAgIC8vIEVhdCBldmVyeXRoaW5nIGFmdGVyIHRoZSBmZW5jZS5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgICAvLyBXZSBkb27igJl0IGFsbG93IGRvbGxhciBzaWducyBoZXJlLCBhcyB0aGF0IGNvdWxkIGludGVyZmVyZSB3aXRoIGlubGluZVxuICAgICAgLy8gbWF0aC5cbiAgICAgIGlmIChjb2RlID09PSBkb2xsYXJTaWduKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoY29kZSA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gbGluZUZlZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzaWxlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29udGVudCA9IFtdXG5cbiAgICBpZiAob3BlbmluZ0ZlbmNlQ29udGVudFN0YXJ0ICE9PSBpbmRleCkge1xuICAgICAgY29udGVudC5wdXNoKHZhbHVlLnNsaWNlKG9wZW5pbmdGZW5jZUNvbnRlbnRTdGFydCwgaW5kZXgpKVxuICAgIH1cblxuICAgIGluZGV4KytcbiAgICBsaW5lRW5kID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZENoYXIsIGluZGV4ICsgMSlcbiAgICBsaW5lRW5kID0gbGluZUVuZCA9PT0gLTEgPyBsZW5ndGggOiBsaW5lRW5kXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNsb3NpbmdGZW5jZSA9IGZhbHNlXG4gICAgICBsaW5lQ29udGVudFN0YXJ0ID0gaW5kZXhcbiAgICAgIGxpbmVDb250ZW50RW5kID0gbGluZUVuZFxuICAgICAgbGluZUluZGV4ID0gbGluZUVuZFxuICAgICAgY2xvc2luZ0ZlbmNlU2l6ZSA9IDBcblxuICAgICAgLy8gRmlyc3QsIGxldOKAmXMgc2VlIGlmIHRoaXMgaXMgYSB2YWxpZCBjbG9zaW5nIGZlbmNlLlxuICAgICAgLy8gU2tpcCB0cmFpbGluZyB3aGl0ZSBzcGFjZVxuICAgICAgd2hpbGUgKFxuICAgICAgICBsaW5lSW5kZXggPiBsaW5lQ29udGVudFN0YXJ0ICYmXG4gICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUluZGV4IC0gMSkgPT09IHNwYWNlXG4gICAgICApIHtcbiAgICAgICAgbGluZUluZGV4LS1cbiAgICAgIH1cblxuICAgICAgLy8gU2tpcCB0aGUgZmVuY2UuXG4gICAgICB3aGlsZSAoXG4gICAgICAgIGxpbmVJbmRleCA+IGxpbmVDb250ZW50U3RhcnQgJiZcbiAgICAgICAgdmFsdWUuY2hhckNvZGVBdChsaW5lSW5kZXggLSAxKSA9PT0gZG9sbGFyU2lnblxuICAgICAgKSB7XG4gICAgICAgIGNsb3NpbmdGZW5jZVNpemUrK1xuICAgICAgICBsaW5lSW5kZXgtLVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgY2xvc2luZyBmZW5jZSBsaW5lLlxuICAgICAgaWYgKFxuICAgICAgICBvcGVuaW5nRmVuY2VTaXplIDw9IGNsb3NpbmdGZW5jZVNpemUgJiZcbiAgICAgICAgdmFsdWUuaW5kZXhPZihkb2xsYXJTaWduQ2hhciwgbGluZUNvbnRlbnRTdGFydCkgPT09IGxpbmVJbmRleFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NpbmdGZW5jZSA9IHRydWVcbiAgICAgICAgbGluZUNvbnRlbnRFbmQgPSBsaW5lSW5kZXhcbiAgICAgIH1cblxuICAgICAgLy8gU3dlZXQsIG5leHQsIHdlIG5lZWQgdG8gdHJpbSB0aGUgbGluZS5cbiAgICAgIC8vIFNraXAgaW5pdGlhbCBzcGFjaW5nLlxuICAgICAgd2hpbGUgKFxuICAgICAgICBsaW5lQ29udGVudFN0YXJ0IDw9IGxpbmVDb250ZW50RW5kICYmXG4gICAgICAgIGxpbmVDb250ZW50U3RhcnQgLSBpbmRleCA8IG9wZW5pbmdGZW5jZUluZGVudFNpemUgJiZcbiAgICAgICAgdmFsdWUuY2hhckNvZGVBdChsaW5lQ29udGVudFN0YXJ0KSA9PT0gc3BhY2VcbiAgICAgICkge1xuICAgICAgICBsaW5lQ29udGVudFN0YXJ0KytcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhpcyBpcyBhIGNsb3NpbmcgZmVuY2UsIHNraXAgZmluYWwgc3BhY2luZy5cbiAgICAgIGlmIChjbG9zaW5nRmVuY2UpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIGxpbmVDb250ZW50RW5kID4gbGluZUNvbnRlbnRTdGFydCAmJlxuICAgICAgICAgIHZhbHVlLmNoYXJDb2RlQXQobGluZUNvbnRlbnRFbmQgLSAxKSA9PT0gc3BhY2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGluZUNvbnRlbnRFbmQtLVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250ZW50IGxpbmUsIG9yIGlmIHRoZXJlIGlzIGNvbnRlbnQgYmVmb3JlIHRoZSBmZW5jZTpcbiAgICAgIGlmICghY2xvc2luZ0ZlbmNlIHx8IGxpbmVDb250ZW50U3RhcnQgIT09IGxpbmVDb250ZW50RW5kKSB7XG4gICAgICAgIGNvbnRlbnQucHVzaCh2YWx1ZS5zbGljZShsaW5lQ29udGVudFN0YXJ0LCBsaW5lQ29udGVudEVuZCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChjbG9zaW5nRmVuY2UpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSBsaW5lRW5kICsgMVxuICAgICAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyLCBpbmRleCArIDEpXG4gICAgICBsaW5lRW5kID0gbGluZUVuZCA9PT0gLTEgPyBsZW5ndGggOiBsaW5lRW5kXG4gICAgfVxuXG4gICAgY29udGVudCA9IGNvbnRlbnQuam9pbignXFxuJylcblxuICAgIHJldHVybiBlYXQodmFsdWUuc2xpY2UoMCwgbGluZUVuZCkpKHtcbiAgICAgIHR5cGU6ICdtYXRoJyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogJ2RpdicsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7Y2xhc3NOYW1lOiBjbGFzc0xpc3QuY29uY2F0KCl9LFxuICAgICAgICBoQ2hpbGRyZW46IFt7dHlwZTogJ3RleHQnLCB2YWx1ZTogY29udGVudH1dXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhdHRhY2hDb21waWxlcihjb21waWxlcikge1xuICBjb25zdCBwcm90byA9IGNvbXBpbGVyLnByb3RvdHlwZVxuXG4gIHByb3RvLnZpc2l0b3JzLm1hdGggPSBjb21waWxlQmxvY2tNYXRoXG5cbiAgZnVuY3Rpb24gY29tcGlsZUJsb2NrTWF0aChub2RlKSB7XG4gICAgcmV0dXJuICckJFxcbicgKyBub2RlLnZhbHVlICsgJ1xcbiQkJ1xuICB9XG59XG4iLCJjb25zdCBpbmxpbmVQbHVnaW4gPSByZXF1aXJlKCcuL2lubGluZScpXG5jb25zdCBibG9ja1BsdWdpbiA9IHJlcXVpcmUoJy4vYmxvY2snKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGhcblxuZnVuY3Rpb24gbWF0aChvcHRzKSB7XG4gIGlmIChvcHRzID09IG51bGwpIG9wdHMgPSB7fVxuICBibG9ja1BsdWdpbi5jYWxsKHRoaXMsIG9wdHMpXG4gIGlubGluZVBsdWdpbi5jYWxsKHRoaXMsIG9wdHMpXG59XG4iLCIvKlxuU3ludGF4IGhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGF1dG9kZXRlY3Rpb24uXG5odHRwczovL2hpZ2hsaWdodGpzLm9yZy9cbiovXG5cbihmdW5jdGlvbihmYWN0b3J5KSB7XG5cbiAgLy8gRmluZCB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgZXhwb3J0IHRvIGJvdGggdGhlIGJyb3dzZXIgYW5kIHdlYiB3b3JrZXJzLlxuICB2YXIgZ2xvYmFsT2JqZWN0ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcgJiYgd2luZG93IHx8XG4gICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc2VsZiA9PT0gJ29iamVjdCcgJiYgc2VsZjtcblxuICAvLyBTZXR1cCBoaWdobGlnaHQuanMgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuIEZpcnN0IGlzIE5vZGUuanMgb3JcbiAgLy8gQ29tbW9uSlMuXG4gIC8vIGBub2RlVHlwZWAgaXMgY2hlY2tlZCB0byBlbnN1cmUgdGhhdCBgZXhwb3J0c2AgaXMgbm90IGEgSFRNTCBlbGVtZW50LlxuICBpZih0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgIWV4cG9ydHMubm9kZVR5cGUpIHtcbiAgICBmYWN0b3J5KGV4cG9ydHMpO1xuICB9IGVsc2UgaWYoZ2xvYmFsT2JqZWN0KSB7XG4gICAgLy8gRXhwb3J0IGhsanMgZ2xvYmFsbHkgZXZlbiB3aGVuIHVzaW5nIEFNRCBmb3IgY2FzZXMgd2hlbiB0aGlzIHNjcmlwdFxuICAgIC8vIGlzIGxvYWRlZCB3aXRoIG90aGVycyB0aGF0IG1heSBzdGlsbCBleHBlY3QgYSBnbG9iYWwgaGxqcy5cbiAgICBnbG9iYWxPYmplY3QuaGxqcyA9IGZhY3Rvcnkoe30pO1xuXG4gICAgLy8gRmluYWxseSByZWdpc3RlciB0aGUgZ2xvYmFsIGhsanMgd2l0aCBBTUQuXG4gICAgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICBkZWZpbmUoW10sIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmhsanM7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufShmdW5jdGlvbihobGpzKSB7XG4gIC8vIENvbnZlbmllbmNlIHZhcmlhYmxlcyBmb3IgYnVpbGQtaW4gb2JqZWN0c1xuICB2YXIgQXJyYXlQcm90byA9IFtdLFxuICAgICAgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzO1xuXG4gIC8vIEdsb2JhbCBpbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCB3aXRoaW4gdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICB2YXIgbGFuZ3VhZ2VzID0ge30sXG4gICAgICBhbGlhc2VzICAgPSB7fTtcblxuICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgdGhyb3VnaG91dCB0aGUgaGlnaGxpZ2h0LmpzIGxpYnJhcnkuXG4gIHZhciBub0hpZ2hsaWdodFJlICAgID0gL14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxcbiAgICAgIGxhbmd1YWdlUHJlZml4UmUgPSAvXFxibGFuZyg/OnVhZ2UpPy0oW1xcdy1dKylcXGIvaSxcbiAgICAgIGZpeE1hcmt1cFJlICAgICAgPSAvKCheKDxbXj5dKz58XFx0fCkrfCg/OlxcbikpKS9nbTtcblxuICAvLyBUaGUgb2JqZWN0IHdpbGwgYmUgYXNzaWduZWQgYnkgdGhlIGJ1aWxkIHRvb2wuIEl0IHVzZWQgdG8gc3luY2hyb25pemUgQVBJXG4gIC8vIG9mIGV4dGVybmFsIGxhbmd1YWdlIGZpbGVzIHdpdGggbWluaWZpZWQgdmVyc2lvbiBvZiB0aGUgaGlnaGxpZ2h0LmpzIGxpYnJhcnkuXG4gIHZhciBBUElfUkVQTEFDRVM7XG5cbiAgdmFyIHNwYW5FbmRUYWcgPSAnPC9zcGFuPic7XG5cbiAgLy8gR2xvYmFsIG9wdGlvbnMgdXNlZCB3aGVuIHdpdGhpbiBleHRlcm5hbCBBUElzLiBUaGlzIGlzIG1vZGlmaWVkIHdoZW5cbiAgLy8gY2FsbGluZyB0aGUgYGhsanMuY29uZmlndXJlYCBmdW5jdGlvbi5cbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgY2xhc3NQcmVmaXg6ICdobGpzLScsXG4gICAgdGFiUmVwbGFjZTogbnVsbCxcbiAgICB1c2VCUjogZmFsc2UsXG4gICAgbGFuZ3VhZ2VzOiB1bmRlZmluZWRcbiAgfTtcblxuICAvLyBrZXl3b3JkcyB0aGF0IHNob3VsZCBoYXZlIG5vIGRlZmF1bHQgcmVsZXZhbmNlIHZhbHVlXG4gIHZhciBDT01NT05fS0VZV09SRFMgPSAnb2YgYW5kIGZvciBpbiBub3Qgb3IgaWYgdGhlbicuc3BsaXQoJyAnKVxuXG5cbiAgLyogVXRpbGl0eSBmdW5jdGlvbnMgKi9cblxuICBmdW5jdGlvbiBlc2NhcGUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGFnKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGVzdFJlKHJlLCBsZXhlbWUpIHtcbiAgICB2YXIgbWF0Y2ggPSByZSAmJiByZS5leGVjKGxleGVtZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoLmluZGV4ID09PSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNOb3RIaWdobGlnaHRlZChsYW5ndWFnZSkge1xuICAgIHJldHVybiBub0hpZ2hsaWdodFJlLnRlc3QobGFuZ3VhZ2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gYmxvY2tMYW5ndWFnZShibG9jaykge1xuICAgIHZhciBpLCBtYXRjaCwgbGVuZ3RoLCBfY2xhc3M7XG4gICAgdmFyIGNsYXNzZXMgPSBibG9jay5jbGFzc05hbWUgKyAnICc7XG5cbiAgICBjbGFzc2VzICs9IGJsb2NrLnBhcmVudE5vZGUgPyBibG9jay5wYXJlbnROb2RlLmNsYXNzTmFtZSA6ICcnO1xuXG4gICAgLy8gbGFuZ3VhZ2UtKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbm9uLXByZWZpeGVkIGNsYXNzIG5hbWVzLlxuICAgIG1hdGNoID0gbGFuZ3VhZ2VQcmVmaXhSZS5leGVjKGNsYXNzZXMpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgcmV0dXJuIGdldExhbmd1YWdlKG1hdGNoWzFdKSA/IG1hdGNoWzFdIDogJ25vLWhpZ2hsaWdodCc7XG4gICAgfVxuXG4gICAgY2xhc3NlcyA9IGNsYXNzZXMuc3BsaXQoL1xccysvKTtcblxuICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIF9jbGFzcyA9IGNsYXNzZXNbaV07XG5cbiAgICAgIGlmIChpc05vdEhpZ2hsaWdodGVkKF9jbGFzcykgfHwgZ2V0TGFuZ3VhZ2UoX2NsYXNzKSkge1xuICAgICAgICByZXR1cm4gX2NsYXNzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaGVyaXQocGFyZW50KSB7ICAvLyBpbmhlcml0KHBhcmVudCwgb3ZlcnJpZGVfb2JqLCBvdmVycmlkZV9vYmosIC4uLilcbiAgICB2YXIga2V5O1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgb2JqZWN0cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICBmb3IgKGtleSBpbiBwYXJlbnQpXG4gICAgICByZXN1bHRba2V5XSA9IHBhcmVudFtrZXldO1xuICAgIG9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAgICAgIGZvciAoa2V5IGluIG9iailcbiAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogU3RyZWFtIG1lcmdpbmcgKi9cblxuICBmdW5jdGlvbiBub2RlU3RyZWFtKG5vZGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgKGZ1bmN0aW9uIF9ub2RlU3RyZWFtKG5vZGUsIG9mZnNldCkge1xuICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMylcbiAgICAgICAgICBvZmZzZXQgKz0gY2hpbGQubm9kZVZhbHVlLmxlbmd0aDtcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICBldmVudDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgICAgbm9kZTogY2hpbGRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvZmZzZXQgPSBfbm9kZVN0cmVhbShjaGlsZCwgb2Zmc2V0KTtcbiAgICAgICAgICAvLyBQcmV2ZW50IHZvaWQgZWxlbWVudHMgZnJvbSBoYXZpbmcgYW4gZW5kIHRhZyB0aGF0IHdvdWxkIGFjdHVhbGx5XG4gICAgICAgICAgLy8gZG91YmxlIHRoZW0gaW4gdGhlIG91dHB1dC4gVGhlcmUgYXJlIG1vcmUgdm9pZCBlbGVtZW50cyBpbiBIVE1MXG4gICAgICAgICAgLy8gYnV0IHdlIGxpc3Qgb25seSB0aG9zZSByZWFsaXN0aWNhbGx5IGV4cGVjdGVkIGluIGNvZGUgZGlzcGxheS5cbiAgICAgICAgICBpZiAoIXRhZyhjaGlsZCkubWF0Y2goL2JyfGhyfGltZ3xpbnB1dC8pKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiAnc3RvcCcsXG4gICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgICAgICBub2RlOiBjaGlsZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH0pKG5vZGUsIDApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZVN0cmVhbXMob3JpZ2luYWwsIGhpZ2hsaWdodGVkLCB2YWx1ZSkge1xuICAgIHZhciBwcm9jZXNzZWQgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgICBmdW5jdGlvbiBzZWxlY3RTdHJlYW0oKSB7XG4gICAgICBpZiAoIW9yaWdpbmFsLmxlbmd0aCB8fCAhaGlnaGxpZ2h0ZWQubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbC5sZW5ndGggPyBvcmlnaW5hbCA6IGhpZ2hsaWdodGVkO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsWzBdLm9mZnNldCAhPT0gaGlnaGxpZ2h0ZWRbMF0ub2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWxbMF0ub2Zmc2V0IDwgaGlnaGxpZ2h0ZWRbMF0ub2Zmc2V0KSA/IG9yaWdpbmFsIDogaGlnaGxpZ2h0ZWQ7XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICBUbyBhdm9pZCBzdGFydGluZyB0aGUgc3RyZWFtIGp1c3QgYmVmb3JlIGl0IHNob3VsZCBzdG9wIHRoZSBvcmRlciBpc1xuICAgICAgZW5zdXJlZCB0aGF0IG9yaWdpbmFsIGFsd2F5cyBzdGFydHMgZmlyc3QgYW5kIGNsb3NlcyBsYXN0OlxuXG4gICAgICBpZiAoZXZlbnQxID09ICdzdGFydCcgJiYgZXZlbnQyID09ICdzdGFydCcpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICAgIGlmIChldmVudDEgPT0gJ3N0YXJ0JyAmJiBldmVudDIgPT0gJ3N0b3AnKVxuICAgICAgICByZXR1cm4gaGlnaGxpZ2h0ZWQ7XG4gICAgICBpZiAoZXZlbnQxID09ICdzdG9wJyAmJiBldmVudDIgPT0gJ3N0YXJ0JylcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgICAgaWYgKGV2ZW50MSA9PSAnc3RvcCcgJiYgZXZlbnQyID09ICdzdG9wJylcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuXG4gICAgICAuLi4gd2hpY2ggaXMgY29sbGFwc2VkIHRvOlxuICAgICAgKi9cbiAgICAgIHJldHVybiBoaWdobGlnaHRlZFswXS5ldmVudCA9PT0gJ3N0YXJ0JyA/IG9yaWdpbmFsIDogaGlnaGxpZ2h0ZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb3Blbihub2RlKSB7XG4gICAgICBmdW5jdGlvbiBhdHRyX3N0cihhKSB7cmV0dXJuICcgJyArIGEubm9kZU5hbWUgKyAnPVwiJyArIGVzY2FwZShhLnZhbHVlKS5yZXBsYWNlKCdcIicsICcmcXVvdDsnKSArICdcIic7fVxuICAgICAgcmVzdWx0ICs9ICc8JyArIHRhZyhub2RlKSArIEFycmF5UHJvdG8ubWFwLmNhbGwobm9kZS5hdHRyaWJ1dGVzLCBhdHRyX3N0cikuam9pbignJykgKyAnPic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvc2Uobm9kZSkge1xuICAgICAgcmVzdWx0ICs9ICc8LycgKyB0YWcobm9kZSkgKyAnPic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyKGV2ZW50KSB7XG4gICAgICAoZXZlbnQuZXZlbnQgPT09ICdzdGFydCcgPyBvcGVuIDogY2xvc2UpKGV2ZW50Lm5vZGUpO1xuICAgIH1cblxuICAgIHdoaWxlIChvcmlnaW5hbC5sZW5ndGggfHwgaGlnaGxpZ2h0ZWQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3RyZWFtID0gc2VsZWN0U3RyZWFtKCk7XG4gICAgICByZXN1bHQgKz0gZXNjYXBlKHZhbHVlLnN1YnN0cmluZyhwcm9jZXNzZWQsIHN0cmVhbVswXS5vZmZzZXQpKTtcbiAgICAgIHByb2Nlc3NlZCA9IHN0cmVhbVswXS5vZmZzZXQ7XG4gICAgICBpZiAoc3RyZWFtID09PSBvcmlnaW5hbCkge1xuICAgICAgICAvKlxuICAgICAgICBPbiBhbnkgb3BlbmluZyBvciBjbG9zaW5nIHRhZyBvZiB0aGUgb3JpZ2luYWwgbWFya3VwIHdlIGZpcnN0IGNsb3NlXG4gICAgICAgIHRoZSBlbnRpcmUgaGlnaGxpZ2h0ZWQgbm9kZSBzdGFjaywgdGhlbiByZW5kZXIgdGhlIG9yaWdpbmFsIHRhZyBhbG9uZ1xuICAgICAgICB3aXRoIGFsbCB0aGUgZm9sbG93aW5nIG9yaWdpbmFsIHRhZ3MgYXQgdGhlIHNhbWUgb2Zmc2V0IGFuZCB0aGVuXG4gICAgICAgIHJlb3BlbiBhbGwgdGhlIHRhZ3Mgb24gdGhlIGhpZ2hsaWdodGVkIHN0YWNrLlxuICAgICAgICAqL1xuICAgICAgICBub2RlU3RhY2sucmV2ZXJzZSgpLmZvckVhY2goY2xvc2UpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcmVuZGVyKHN0cmVhbS5zcGxpY2UoMCwgMSlbMF0pO1xuICAgICAgICAgIHN0cmVhbSA9IHNlbGVjdFN0cmVhbSgpO1xuICAgICAgICB9IHdoaWxlIChzdHJlYW0gPT09IG9yaWdpbmFsICYmIHN0cmVhbS5sZW5ndGggJiYgc3RyZWFtWzBdLm9mZnNldCA9PT0gcHJvY2Vzc2VkKTtcbiAgICAgICAgbm9kZVN0YWNrLnJldmVyc2UoKS5mb3JFYWNoKG9wZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0cmVhbVswXS5ldmVudCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIG5vZGVTdGFjay5wdXNoKHN0cmVhbVswXS5ub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKHN0cmVhbS5zcGxpY2UoMCwgMSlbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0ICsgZXNjYXBlKHZhbHVlLnN1YnN0cihwcm9jZXNzZWQpKTtcbiAgfVxuXG4gIC8qIEluaXRpYWxpemF0aW9uICovXG5cbiAgZnVuY3Rpb24gZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpIHtcbiAgICBpZiAoIW1vZGUpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBtb2RlLmVuZHNXaXRoUGFyZW50IHx8IGRlcGVuZGVuY3lPblBhcmVudChtb2RlLnN0YXJ0cylcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGFuZF9vcl9jbG9uZV9tb2RlKG1vZGUpIHtcbiAgICBpZiAobW9kZS52YXJpYW50cyAmJiAhbW9kZS5jYWNoZWRfdmFyaWFudHMpIHtcbiAgICAgIG1vZGUuY2FjaGVkX3ZhcmlhbnRzID0gbW9kZS52YXJpYW50cy5tYXAoZnVuY3Rpb24odmFyaWFudCkge1xuICAgICAgICByZXR1cm4gaW5oZXJpdChtb2RlLCB7dmFyaWFudHM6IG51bGx9LCB2YXJpYW50KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEVYUEFORFxuICAgIC8vIGlmIHdlIGhhdmUgdmFyaWFudHMgdGhlbiBlc3NlbnR1YWxseSBcInJlcGxhY2VcIiB0aGUgbW9kZSB3aXRoIHRoZSB2YXJpYW50c1xuICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjb21waWxlTW9kZSwgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbVxuICAgIGlmIChtb2RlLmNhY2hlZF92YXJpYW50cylcbiAgICAgIHJldHVybiBtb2RlLmNhY2hlZF92YXJpYW50cztcblxuICAgIC8vIENMT05FXG4gICAgLy8gaWYgd2UgaGF2ZSBkZXBlbmRlbmNpZXMgb24gcGFyZW50cyB0aGVuIHdlIG5lZWQgYSB1bmlxdWVcbiAgICAvLyBpbnN0YW5jZSBvZiBvdXJzZWx2ZXMsIHNvIHdlIGNhbiBiZSByZXVzZWQgd2l0aCBtYW55XG4gICAgLy8gZGlmZmVyZW50IHBhcmVudHMgd2l0aG91dCBpc3N1ZVxuICAgIGlmIChkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkpXG4gICAgICByZXR1cm4gW2luaGVyaXQobW9kZSwgeyBzdGFydHM6IG1vZGUuc3RhcnRzID8gaW5oZXJpdChtb2RlLnN0YXJ0cykgOiBudWxsIH0pXVxuXG4gICAgLy8gbm8gc3BlY2lhbCBkZXBlbmRlbmN5IGlzc3VlcywganVzdCByZXR1cm4gb3Vyc2VsdmVzXG4gICAgcmV0dXJuIFttb2RlXVxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdG9yZUxhbmd1YWdlQXBpKG9iaikge1xuICAgIGlmKEFQSV9SRVBMQUNFUyAmJiAhb2JqLmxhbmdBcGlSZXN0b3JlZCkge1xuICAgICAgb2JqLmxhbmdBcGlSZXN0b3JlZCA9IHRydWU7XG4gICAgICBmb3IodmFyIGtleSBpbiBBUElfUkVQTEFDRVMpXG4gICAgICAgIG9ialtrZXldICYmIChvYmpbQVBJX1JFUExBQ0VTW2tleV1dID0gb2JqW2tleV0pO1xuICAgICAgKG9iai5jb250YWlucyB8fCBbXSkuY29uY2F0KG9iai52YXJpYW50cyB8fCBbXSkuZm9yRWFjaChyZXN0b3JlTGFuZ3VhZ2VBcGkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVLZXl3b3JkcyhyYXdLZXl3b3JkcywgY2FzZV9pbnNlbnNpdGl2ZSkge1xuICAgICAgdmFyIGNvbXBpbGVkX2tleXdvcmRzID0ge307XG5cbiAgICAgIGlmICh0eXBlb2YgcmF3S2V5d29yZHMgPT09ICdzdHJpbmcnKSB7IC8vIHN0cmluZ1xuICAgICAgICBzcGxpdEFuZENvbXBpbGUoJ2tleXdvcmQnLCByYXdLZXl3b3Jkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3RLZXlzKHJhd0tleXdvcmRzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgICBzcGxpdEFuZENvbXBpbGUoY2xhc3NOYW1lLCByYXdLZXl3b3Jkc1tjbGFzc05hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkX2tleXdvcmRzO1xuXG4gICAgLy8gLS0tXG5cbiAgICBmdW5jdGlvbiBzcGxpdEFuZENvbXBpbGUoY2xhc3NOYW1lLCBzdHIpIHtcbiAgICAgIGlmIChjYXNlX2luc2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgc3RyLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICAgIHZhciBwYWlyID0ga2V5d29yZC5zcGxpdCgnfCcpO1xuICAgICAgICBjb21waWxlZF9rZXl3b3Jkc1twYWlyWzBdXSA9IFtjbGFzc05hbWUsIHNjb3JlRm9yS2V5d29yZChwYWlyWzBdLCBwYWlyWzFdKV07XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2NvcmVGb3JLZXl3b3JkKGtleXdvcmQsIHByb3ZpZGVkU2NvcmUpIHtcbiAgICAvLyBtYW51YWwgc2NvcmVzIGFsd2F5cyB3aW4gb3ZlciBjb21tb24ga2V5d29yZHNcbiAgICAvLyBzbyB5b3UgY2FuIGZvcmNlIGEgc2NvcmUgb2YgMSBpZiB5b3UgcmVhbGx5IGluc2lzdFxuICAgIGlmIChwcm92aWRlZFNjb3JlKVxuICAgICAgcmV0dXJuIE51bWJlcihwcm92aWRlZFNjb3JlKVxuXG4gICAgcmV0dXJuIGNvbW1vbktleXdvcmQoa2V5d29yZCkgPyAwIDogMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbW1vbktleXdvcmQod29yZCkge1xuICAgIHJldHVybiBDT01NT05fS0VZV09SRFMuaW5kZXhPZih3b3JkLnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlTGFuZ3VhZ2UobGFuZ3VhZ2UpIHtcblxuICAgIGZ1bmN0aW9uIHJlU3RyKHJlKSB7XG4gICAgICAgIHJldHVybiAocmUgJiYgcmUuc291cmNlKSB8fCByZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsYW5nUmUodmFsdWUsIGdsb2JhbCkge1xuICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICAgIHJlU3RyKHZhbHVlKSxcbiAgICAgICAgJ20nICsgKGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUgPyAnaScgOiAnJykgKyAoZ2xvYmFsID8gJ2cnIDogJycpXG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlQ291bnRNYXRjaEdyb3VwcyhyZSkge1xuICAgICAgcmV0dXJuIChuZXcgUmVnRXhwKHJlLnRvU3RyaW5nKCkgKyAnfCcpKS5leGVjKCcnKS5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIC8vIGpvaW5SZSBsb2dpY2FsbHkgY29tcHV0ZXMgcmVnZXhwcy5qb2luKHNlcGFyYXRvciksIGJ1dCBmaXhlcyB0aGVcbiAgICAvLyBiYWNrcmVmZXJlbmNlcyBzbyB0aGV5IGNvbnRpbnVlIHRvIG1hdGNoLlxuICAgIC8vIGl0IGFsc28gcGxhY2VzIGVhY2ggaW5kaXZpZHVhbCByZWd1bGFyIGV4cHJlc3Npb24gaW50byBpdCdzIG93blxuICAgIC8vIG1hdGNoIGdyb3VwLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBzZXF1ZW5jaW5nIG9mIHRob3NlIG1hdGNoIGdyb3Vwc1xuICAgIC8vIGlzIGN1cnJlbnRseSBhbiBleGVyY2lzZSBmb3IgdGhlIGNhbGxlci4gOi0pXG4gICAgZnVuY3Rpb24gam9pblJlKHJlZ2V4cHMsIHNlcGFyYXRvcikge1xuICAgICAgLy8gYmFja3JlZmVyZW5jZVJlIG1hdGNoZXMgYW4gb3BlbiBwYXJlbnRoZXNpcyBvciBiYWNrcmVmZXJlbmNlLiBUbyBhdm9pZFxuICAgICAgLy8gYW4gaW5jb3JyZWN0IHBhcnNlLCBpdCBhZGRpdGlvbmFsbHkgbWF0Y2hlcyB0aGUgZm9sbG93aW5nOlxuICAgICAgLy8gLSBbLi4uXSBlbGVtZW50cywgd2hlcmUgdGhlIG1lYW5pbmcgb2YgcGFyZW50aGVzZXMgYW5kIGVzY2FwZXMgY2hhbmdlXG4gICAgICAvLyAtIG90aGVyIGVzY2FwZSBzZXF1ZW5jZXMsIHNvIHdlIGRvIG5vdCBtaXNwYXJzZSBlc2NhcGUgc2VxdWVuY2VzIGFzXG4gICAgICAvLyAgIGludGVyZXN0aW5nIGVsZW1lbnRzXG4gICAgICAvLyAtIG5vbi1tYXRjaGluZyBvciBsb29rYWhlYWQgcGFyZW50aGVzZXMsIHdoaWNoIGRvIG5vdCBjYXB0dXJlLiBUaGVzZVxuICAgICAgLy8gICBmb2xsb3cgdGhlICcoJyB3aXRoIGEgJz8nLlxuICAgICAgdmFyIGJhY2tyZWZlcmVuY2VSZSA9IC9cXFsoPzpbXlxcXFxcXF1dfFxcXFwuKSpcXF18XFwoXFw/P3xcXFxcKFsxLTldWzAtOV0qKXxcXFxcLi87XG4gICAgICB2YXIgbnVtQ2FwdHVyZXMgPSAwO1xuICAgICAgdmFyIHJldCA9ICcnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdleHBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG51bUNhcHR1cmVzICs9IDE7XG4gICAgICAgIHZhciBvZmZzZXQgPSBudW1DYXB0dXJlcztcbiAgICAgICAgdmFyIHJlID0gcmVTdHIocmVnZXhwc1tpXSk7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIHJldCArPSBzZXBhcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0ICs9IFwiKFwiO1xuICAgICAgICB3aGlsZSAocmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGJhY2tyZWZlcmVuY2VSZS5leGVjKHJlKTtcbiAgICAgICAgICBpZiAobWF0Y2ggPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0ICs9IHJlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldCArPSByZS5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpO1xuICAgICAgICAgIHJlID0gcmUuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBpZiAobWF0Y2hbMF1bMF0gPT0gJ1xcXFwnICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgICAvLyBBZGp1c3QgdGhlIGJhY2tyZWZlcmVuY2UuXG4gICAgICAgICAgICByZXQgKz0gJ1xcXFwnICsgU3RyaW5nKE51bWJlcihtYXRjaFsxXSkgKyBvZmZzZXQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXQgKz0gbWF0Y2hbMF07XG4gICAgICAgICAgICBpZiAobWF0Y2hbMF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgIG51bUNhcHR1cmVzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldCArPSBcIilcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNb2RlUmVnZXgobW9kZSkge1xuXG4gICAgICB2YXIgbWF0Y2hJbmRleGVzID0ge307XG4gICAgICB2YXIgbWF0Y2hlclJlO1xuICAgICAgdmFyIHJlZ2V4ZXMgPSBbXTtcbiAgICAgIHZhciBtYXRjaGVyID0ge307XG4gICAgICB2YXIgbWF0Y2hBdCA9IDE7XG5cbiAgICAgIGZ1bmN0aW9uIGFkZFJ1bGUocnVsZSwgcmVnZXgpIHtcbiAgICAgICAgbWF0Y2hJbmRleGVzW21hdGNoQXRdID0gcnVsZTtcbiAgICAgICAgcmVnZXhlcy5wdXNoKFtydWxlLCByZWdleF0pO1xuICAgICAgICBtYXRjaEF0ICs9IHJlQ291bnRNYXRjaEdyb3VwcyhyZWdleCkgKyAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGVybTtcbiAgICAgIGZvciAodmFyIGk9MDsgaSA8IG1vZGUuY29udGFpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlO1xuICAgICAgICB0ZXJtID0gbW9kZS5jb250YWluc1tpXTtcbiAgICAgICAgaWYgKHRlcm0uYmVnaW5LZXl3b3Jkcykge1xuICAgICAgICAgIHJlID0gJ1xcXFwuPyg/OicgKyB0ZXJtLmJlZ2luICsgJylcXFxcLj8nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlID0gdGVybS5iZWdpbjtcbiAgICAgICAgfVxuICAgICAgICBhZGRSdWxlKHRlcm0sIHJlKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RlLnRlcm1pbmF0b3JfZW5kKVxuICAgICAgICBhZGRSdWxlKFwiZW5kXCIsIG1vZGUudGVybWluYXRvcl9lbmQpO1xuICAgICAgaWYgKG1vZGUuaWxsZWdhbClcbiAgICAgICAgYWRkUnVsZShcImlsbGVnYWxcIiwgbW9kZS5pbGxlZ2FsKTtcblxuICAgICAgdmFyIHRlcm1pbmF0b3JzID0gcmVnZXhlcy5tYXAoZnVuY3Rpb24oZWwpIHsgcmV0dXJuIGVsWzFdIH0pO1xuICAgICAgbWF0Y2hlclJlID0gbGFuZ1JlKGpvaW5SZSh0ZXJtaW5hdG9ycywgJ3wnKSwgdHJ1ZSk7XG5cbiAgICAgIG1hdGNoZXIubGFzdEluZGV4ID0gMDtcbiAgICAgIG1hdGNoZXIuZXhlYyA9IGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgdmFyIHJ1bGU7XG5cbiAgICAgICAgaWYoIHJlZ2V4ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBtYXRjaGVyUmUubGFzdEluZGV4ID0gbWF0Y2hlci5sYXN0SW5kZXg7XG4gICAgICAgIHZhciBtYXRjaCA9IG1hdGNoZXJSZS5leGVjKHMpO1xuICAgICAgICBpZiAoIW1hdGNoKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgICAgZm9yKHZhciBpID0gMDsgaTxtYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChtYXRjaFtpXSAhPSB1bmRlZmluZWQgJiYgbWF0Y2hJbmRleGVzW1wiXCIgK2ldICE9IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgIHJ1bGUgPSBtYXRjaEluZGV4ZXNbXCJcIitpXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlsbGVnYWwgb3IgZW5kIG1hdGNoXG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIG1hdGNoLnR5cGUgPSBydWxlO1xuICAgICAgICAgIG1hdGNoLmV4dHJhID0gW21vZGUuaWxsZWdhbCwgbW9kZS50ZXJtaW5hdG9yX2VuZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWF0Y2gudHlwZSA9IFwiYmVnaW5cIjtcbiAgICAgICAgICBtYXRjaC5ydWxlID0gcnVsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXRjaGVyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXBpbGVNb2RlKG1vZGUsIHBhcmVudCkge1xuICAgICAgaWYgKG1vZGUuY29tcGlsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1vZGUuY29tcGlsZWQgPSB0cnVlO1xuXG4gICAgICBtb2RlLmtleXdvcmRzID0gbW9kZS5rZXl3b3JkcyB8fCBtb2RlLmJlZ2luS2V5d29yZHM7XG4gICAgICBpZiAobW9kZS5rZXl3b3JkcylcbiAgICAgICAgbW9kZS5rZXl3b3JkcyA9IGNvbXBpbGVLZXl3b3Jkcyhtb2RlLmtleXdvcmRzLCBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlKVxuXG4gICAgICBtb2RlLmxleGVtZXNSZSA9IGxhbmdSZShtb2RlLmxleGVtZXMgfHwgL1xcdysvLCB0cnVlKTtcblxuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBpZiAobW9kZS5iZWdpbktleXdvcmRzKSB7XG4gICAgICAgICAgbW9kZS5iZWdpbiA9ICdcXFxcYignICsgbW9kZS5iZWdpbktleXdvcmRzLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb2RlLmJlZ2luKVxuICAgICAgICAgIG1vZGUuYmVnaW4gPSAvXFxCfFxcYi87XG4gICAgICAgIG1vZGUuYmVnaW5SZSA9IGxhbmdSZShtb2RlLmJlZ2luKTtcbiAgICAgICAgaWYgKG1vZGUuZW5kU2FtZUFzQmVnaW4pXG4gICAgICAgICAgbW9kZS5lbmQgPSBtb2RlLmJlZ2luO1xuICAgICAgICBpZiAoIW1vZGUuZW5kICYmICFtb2RlLmVuZHNXaXRoUGFyZW50KVxuICAgICAgICAgIG1vZGUuZW5kID0gL1xcQnxcXGIvO1xuICAgICAgICBpZiAobW9kZS5lbmQpXG4gICAgICAgICAgbW9kZS5lbmRSZSA9IGxhbmdSZShtb2RlLmVuZCk7XG4gICAgICAgIG1vZGUudGVybWluYXRvcl9lbmQgPSByZVN0cihtb2RlLmVuZCkgfHwgJyc7XG4gICAgICAgIGlmIChtb2RlLmVuZHNXaXRoUGFyZW50ICYmIHBhcmVudC50ZXJtaW5hdG9yX2VuZClcbiAgICAgICAgICBtb2RlLnRlcm1pbmF0b3JfZW5kICs9IChtb2RlLmVuZCA/ICd8JyA6ICcnKSArIHBhcmVudC50ZXJtaW5hdG9yX2VuZDtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RlLmlsbGVnYWwpXG4gICAgICAgIG1vZGUuaWxsZWdhbFJlID0gbGFuZ1JlKG1vZGUuaWxsZWdhbCk7XG4gICAgICBpZiAobW9kZS5yZWxldmFuY2UgPT0gbnVsbClcbiAgICAgICAgbW9kZS5yZWxldmFuY2UgPSAxO1xuICAgICAgaWYgKCFtb2RlLmNvbnRhaW5zKSB7XG4gICAgICAgIG1vZGUuY29udGFpbnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIG1vZGUuY29udGFpbnMgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBtb2RlLmNvbnRhaW5zLm1hcChmdW5jdGlvbihjKSB7XG4gICAgICAgIHJldHVybiBleHBhbmRfb3JfY2xvbmVfbW9kZShjID09PSAnc2VsZicgPyBtb2RlIDogYyk7XG4gICAgICB9KSk7XG4gICAgICBtb2RlLmNvbnRhaW5zLmZvckVhY2goZnVuY3Rpb24oYykge2NvbXBpbGVNb2RlKGMsIG1vZGUpO30pO1xuXG4gICAgICBpZiAobW9kZS5zdGFydHMpIHtcbiAgICAgICAgY29tcGlsZU1vZGUobW9kZS5zdGFydHMsIHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIG1vZGUudGVybWluYXRvcnMgPSBidWlsZE1vZGVSZWdleChtb2RlKTtcbiAgICB9XG5cbiAgICBjb21waWxlTW9kZShsYW5ndWFnZSk7XG4gIH1cblxuICAvKlxuICBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gQWNjZXB0cyBhIGxhbmd1YWdlIG5hbWUsIG9yIGFuIGFsaWFzLCBhbmQgYVxuICBzdHJpbmcgd2l0aCB0aGUgY29kZSB0byBoaWdobGlnaHQuIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZ1xuICBwcm9wZXJ0aWVzOlxuXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcblxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHQobmFtZSwgdmFsdWUsIGlnbm9yZV9pbGxlZ2FscywgY29udGludWF0aW9uKSB7XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVSZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodmFsdWUucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyksICdtJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIGxleGVtZSkge1xuICAgICAgaWYgKHRlc3RSZShtb2RlLmVuZFJlLCBsZXhlbWUpKSB7XG4gICAgICAgIHdoaWxlIChtb2RlLmVuZHNQYXJlbnQgJiYgbW9kZS5wYXJlbnQpIHtcbiAgICAgICAgICBtb2RlID0gbW9kZS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgICB9XG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgICByZXR1cm4gZW5kT2ZNb2RlKG1vZGUucGFyZW50LCBsZXhlbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleXdvcmRNYXRjaChtb2RlLCBtYXRjaCkge1xuICAgICAgdmFyIG1hdGNoX3N0ciA9IGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUgPyBtYXRjaFswXS50b0xvd2VyQ2FzZSgpIDogbWF0Y2hbMF07XG4gICAgICByZXR1cm4gbW9kZS5rZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShtYXRjaF9zdHIpICYmIG1vZGUua2V5d29yZHNbbWF0Y2hfc3RyXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNwYW4oY2xhc3NuYW1lLCBpbnNpZGVTcGFuLCBsZWF2ZU9wZW4sIG5vUHJlZml4KSB7XG4gICAgICBpZiAoIWxlYXZlT3BlbiAmJiBpbnNpZGVTcGFuID09PSAnJykgcmV0dXJuICcnO1xuICAgICAgaWYgKCFjbGFzc25hbWUpIHJldHVybiBpbnNpZGVTcGFuO1xuXG4gICAgICB2YXIgY2xhc3NQcmVmaXggPSBub1ByZWZpeCA/ICcnIDogb3B0aW9ucy5jbGFzc1ByZWZpeCxcbiAgICAgICAgICBvcGVuU3BhbiAgICA9ICc8c3BhbiBjbGFzcz1cIicgKyBjbGFzc1ByZWZpeCxcbiAgICAgICAgICBjbG9zZVNwYW4gICA9IGxlYXZlT3BlbiA/ICcnIDogc3BhbkVuZFRhZztcblxuICAgICAgb3BlblNwYW4gKz0gY2xhc3NuYW1lICsgJ1wiPic7XG5cbiAgICAgIHJldHVybiBvcGVuU3BhbiArIGluc2lkZVNwYW4gKyBjbG9zZVNwYW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0tleXdvcmRzKCkge1xuICAgICAgdmFyIGtleXdvcmRfbWF0Y2gsIGxhc3RfaW5kZXgsIG1hdGNoLCByZXN1bHQ7XG5cbiAgICAgIGlmICghdG9wLmtleXdvcmRzKVxuICAgICAgICByZXR1cm4gZXNjYXBlKG1vZGVfYnVmZmVyKTtcblxuICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICBsYXN0X2luZGV4ID0gMDtcbiAgICAgIHRvcC5sZXhlbWVzUmUubGFzdEluZGV4ID0gMDtcbiAgICAgIG1hdGNoID0gdG9wLmxleGVtZXNSZS5leGVjKG1vZGVfYnVmZmVyKTtcblxuICAgICAgd2hpbGUgKG1hdGNoKSB7XG4gICAgICAgIHJlc3VsdCArPSBlc2NhcGUobW9kZV9idWZmZXIuc3Vic3RyaW5nKGxhc3RfaW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIGtleXdvcmRfbWF0Y2ggPSBrZXl3b3JkTWF0Y2godG9wLCBtYXRjaCk7XG4gICAgICAgIGlmIChrZXl3b3JkX21hdGNoKSB7XG4gICAgICAgICAgcmVsZXZhbmNlICs9IGtleXdvcmRfbWF0Y2hbMV07XG4gICAgICAgICAgcmVzdWx0ICs9IGJ1aWxkU3BhbihrZXl3b3JkX21hdGNoWzBdLCBlc2NhcGUobWF0Y2hbMF0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlKG1hdGNoWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0X2luZGV4ID0gdG9wLmxleGVtZXNSZS5sYXN0SW5kZXg7XG4gICAgICAgIG1hdGNoID0gdG9wLmxleGVtZXNSZS5leGVjKG1vZGVfYnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQgKyBlc2NhcGUobW9kZV9idWZmZXIuc3Vic3RyKGxhc3RfaW5kZXgpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzU3ViTGFuZ3VhZ2UoKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0eXBlb2YgdG9wLnN1Ykxhbmd1YWdlID09PSAnc3RyaW5nJztcbiAgICAgIGlmIChleHBsaWNpdCAmJiAhbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZShtb2RlX2J1ZmZlcik7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSBleHBsaWNpdCA/XG4gICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0KHRvcC5zdWJMYW5ndWFnZSwgbW9kZV9idWZmZXIsIHRydWUsIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSkgOlxuICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodEF1dG8obW9kZV9idWZmZXIsIHRvcC5zdWJMYW5ndWFnZS5sZW5ndGggPyB0b3Auc3ViTGFuZ3VhZ2UgOiB1bmRlZmluZWQpO1xuXG4gICAgICAvLyBDb3VudGluZyBlbWJlZGRlZCBsYW5ndWFnZSBzY29yZSB0b3dhcmRzIHRoZSBob3N0IGxhbmd1YWdlIG1heSBiZSBkaXNhYmxlZFxuICAgICAgLy8gd2l0aCB6ZXJvaW5nIHRoZSBjb250YWluaW5nIG1vZGUgcmVsZXZhbmNlLiBVc2VjYXNlIGluIHBvaW50IGlzIE1hcmtkb3duIHRoYXRcbiAgICAgIC8vIGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnkgWE1MIHNuaXBwZXQgdG8gaGF2ZSBhIG11Y2ggbGFyZ2VyIE1hcmtkb3duXG4gICAgICAvLyBzY29yZS5cbiAgICAgIGlmICh0b3AucmVsZXZhbmNlID4gMCkge1xuICAgICAgICByZWxldmFuY2UgKz0gcmVzdWx0LnJlbGV2YW5jZTtcbiAgICAgIH1cbiAgICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSByZXN1bHQudG9wO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1aWxkU3BhbihyZXN1bHQubGFuZ3VhZ2UsIHJlc3VsdC52YWx1ZSwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgICByZXN1bHQgKz0gKHRvcC5zdWJMYW5ndWFnZSAhPSBudWxsID8gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkgOiBwcm9jZXNzS2V5d29yZHMoKSk7XG4gICAgICBtb2RlX2J1ZmZlciA9ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlKSB7XG4gICAgICByZXN1bHQgKz0gbW9kZS5jbGFzc05hbWU/IGJ1aWxkU3Bhbihtb2RlLmNsYXNzTmFtZSwgJycsIHRydWUpOiAnJztcbiAgICAgIHRvcCA9IE9iamVjdC5jcmVhdGUobW9kZSwge3BhcmVudDoge3ZhbHVlOiB0b3B9fSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBkb0JlZ2luTWF0Y2gobWF0Y2gpIHtcbiAgICAgIHZhciBsZXhlbWUgPSBtYXRjaFswXTtcbiAgICAgIHZhciBuZXdfbW9kZSA9IG1hdGNoLnJ1bGU7XG5cbiAgICAgIGlmIChuZXdfbW9kZSAmJiBuZXdfbW9kZS5lbmRTYW1lQXNCZWdpbikge1xuICAgICAgICBuZXdfbW9kZS5lbmRSZSA9IGVzY2FwZVJlKCBsZXhlbWUgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld19tb2RlLnNraXApIHtcbiAgICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5ld19tb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIGlmICghbmV3X21vZGUucmV0dXJuQmVnaW4gJiYgIW5ld19tb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVfYnVmZmVyID0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFydE5ld01vZGUobmV3X21vZGUsIGxleGVtZSk7XG4gICAgICByZXR1cm4gbmV3X21vZGUucmV0dXJuQmVnaW4gPyAwIDogbGV4ZW1lLmxlbmd0aDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF07XG4gICAgICB2YXIgZW5kX21vZGUgPSBlbmRPZk1vZGUodG9wLCBsZXhlbWUpO1xuICAgICAgaWYgKCFlbmRfbW9kZSkgeyByZXR1cm47IH1cblxuICAgICAgdmFyIG9yaWdpbiA9IHRvcDtcbiAgICAgIGlmIChvcmlnaW4uc2tpcCkge1xuICAgICAgICBtb2RlX2J1ZmZlciArPSBsZXhlbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIShvcmlnaW4ucmV0dXJuRW5kIHx8IG9yaWdpbi5leGNsdWRlRW5kKSkge1xuICAgICAgICAgIG1vZGVfYnVmZmVyICs9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIGlmIChvcmlnaW4uZXhjbHVkZUVuZCkge1xuICAgICAgICAgIG1vZGVfYnVmZmVyID0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkbyB7XG4gICAgICAgIGlmICh0b3AuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHNwYW5FbmRUYWc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b3Auc2tpcCAmJiAhdG9wLnN1Ykxhbmd1YWdlKSB7XG4gICAgICAgICAgcmVsZXZhbmNlICs9IHRvcC5yZWxldmFuY2U7XG4gICAgICAgIH1cbiAgICAgICAgdG9wID0gdG9wLnBhcmVudDtcbiAgICAgIH0gd2hpbGUgKHRvcCAhPT0gZW5kX21vZGUucGFyZW50KTtcbiAgICAgIGlmIChlbmRfbW9kZS5zdGFydHMpIHtcbiAgICAgICAgaWYgKGVuZF9tb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICAgICAgZW5kX21vZGUuc3RhcnRzLmVuZFJlID0gZW5kX21vZGUuZW5kUmU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnROZXdNb2RlKGVuZF9tb2RlLnN0YXJ0cywgJycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdpbi5yZXR1cm5FbmQgPyAwIDogbGV4ZW1lLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgbGFzdE1hdGNoID0ge307XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0xleGVtZSh0ZXh0X2JlZm9yZV9tYXRjaCwgbWF0Y2gpIHtcblxuICAgICAgdmFyIGxleGVtZSA9IG1hdGNoICYmIG1hdGNoWzBdO1xuXG4gICAgICAvLyBhZGQgbm9uLW1hdGNoZWQgdGV4dCB0byB0aGUgY3VycmVudCBtb2RlIGJ1ZmZlclxuICAgICAgbW9kZV9idWZmZXIgKz0gdGV4dF9iZWZvcmVfbWF0Y2g7XG5cbiAgICAgIGlmIChsZXhlbWUgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSd2ZSBmb3VuZCBhIDAgd2lkdGggbWF0Y2ggYW5kIHdlJ3JlIHN0dWNrLCBzbyB3ZSBuZWVkIHRvIGFkdmFuY2VcbiAgICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYmFkbHkgYmVoYXZlZCBydWxlcyB0aGF0IGhhdmUgb3B0aW9uYWwgbWF0Y2hlcnMgdG8gdGhlIGRlZ3JlZSB0aGF0XG4gICAgICAvLyBzb21ldGltZXMgdGhleSBjYW4gZW5kIHVwIG1hdGNoaW5nIG5vdGhpbmcgYXQgYWxsXG4gICAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzIxNDBcbiAgICAgIGlmIChsYXN0TWF0Y2gudHlwZT09XCJiZWdpblwiICYmIG1hdGNoLnR5cGU9PVwiZW5kXCIgJiYgbGFzdE1hdGNoLmluZGV4ID09IG1hdGNoLmluZGV4ICYmIGxleGVtZSA9PT0gXCJcIikge1xuICAgICAgICAvLyBzcGl0IHRoZSBcInNraXBwZWRcIiBjaGFyYWN0ZXIgdGhhdCBvdXIgcmVnZXggY2hva2VkIG9uIGJhY2sgaW50byB0aGUgb3V0cHV0IHNlcXVlbmNlXG4gICAgICAgIG1vZGVfYnVmZmVyICs9IHZhbHVlLnNsaWNlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIDEpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgbGFzdE1hdGNoID0gbWF0Y2g7XG5cbiAgICAgIGlmIChtYXRjaC50eXBlPT09XCJiZWdpblwiKSB7XG4gICAgICAgIHJldHVybiBkb0JlZ2luTWF0Y2gobWF0Y2gpO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaC50eXBlPT09XCJpbGxlZ2FsXCIgJiYgIWlnbm9yZV9pbGxlZ2Fscykge1xuICAgICAgICAvLyBpbGxlZ2FsIG1hdGNoLCB3ZSBkbyBub3QgY29udGludWUgcHJvY2Vzc2luZ1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lIFwiJyArIGxleGVtZSArICdcIiBmb3IgbW9kZSBcIicgKyAodG9wLmNsYXNzTmFtZSB8fCAnPHVubmFtZWQ+JykgKyAnXCInKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZT09PVwiZW5kXCIpIHtcbiAgICAgICAgdmFyIHByb2Nlc3NlZCA9IGRvRW5kTWF0Y2gobWF0Y2gpO1xuICAgICAgICBpZiAocHJvY2Vzc2VkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgV2h5IG1pZ2h0IGJlIGZpbmQgb3Vyc2VsdmVzIGhlcmU/ICBPbmx5IG9uZSBvY2Nhc2lvbiBub3cuICBBbiBlbmQgbWF0Y2ggdGhhdCB3YXNcbiAgICAgIHRyaWdnZXJlZCBidXQgY291bGQgbm90IGJlIGNvbXBsZXRlZC4gIFdoZW4gbWlnaHQgdGhpcyBoYXBwZW4/ICBXaGVuIGFuIGBlbmRTYW1lYXNCZWdpbmBcbiAgICAgIHJ1bGUgc2V0cyB0aGUgZW5kIHJ1bGUgdG8gYSBzcGVjaWZpYyBtYXRjaC4gIFNpbmNlIHRoZSBvdmVyYWxsIG1vZGUgdGVybWluYXRpb24gcnVsZSB0aGF0J3NcbiAgICAgIGJlaW5nIHVzZWQgdG8gc2NhbiB0aGUgdGV4dCBpc24ndCByZWNvbXBpbGVkIHRoYXQgbWVhbnMgdGhhdCBhbnkgbWF0Y2ggdGhhdCBMT09LUyBsaWtlXG4gICAgICB0aGUgZW5kIChidXQgaXMgbm90LCBiZWNhdXNlIGl0IGlzIG5vdCBhbiBleGFjdCBtYXRjaCB0byB0aGUgYmVnaW5uaW5nKSB3aWxsXG4gICAgICBlbmQgdXAgaGVyZS4gIEEgZGVmaW5pdGUgZW5kIG1hdGNoLCBidXQgd2hlbiBgZG9FbmRNYXRjaGAgdHJpZXMgdG8gXCJyZWFwcGx5XCJcbiAgICAgIHRoZSBlbmQgcnVsZSBhbmQgZmFpbHMgdG8gbWF0Y2gsIHdlIHdpbmQgdXAgaGVyZSwgYW5kIGp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZSBlbmQuXG5cbiAgICAgIFRoaXMgY2F1c2VzIG5vIHJlYWwgaGFybSBvdGhlciB0aGFuIHN0b3BwaW5nIGEgZmV3IHRpbWVzIHRvbyBtYW55LlxuICAgICAgKi9cblxuICAgICAgbW9kZV9idWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgcmV0dXJuIGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UobmFtZSk7XG4gICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiBcIicgKyBuYW1lICsgJ1wiJyk7XG4gICAgfVxuXG4gICAgY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICB2YXIgdG9wID0gY29udGludWF0aW9uIHx8IGxhbmd1YWdlO1xuICAgIHZhciBjb250aW51YXRpb25zID0ge307IC8vIGtlZXAgY29udGludWF0aW9ucyBmb3Igc3ViLWxhbmd1YWdlc1xuICAgIHZhciByZXN1bHQgPSAnJywgY3VycmVudDtcbiAgICBmb3IoY3VycmVudCA9IHRvcDsgY3VycmVudCAhPT0gbGFuZ3VhZ2U7IGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuY2xhc3NOYW1lKSB7XG4gICAgICAgIHJlc3VsdCA9IGJ1aWxkU3BhbihjdXJyZW50LmNsYXNzTmFtZSwgJycsIHRydWUpICsgcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9kZV9idWZmZXIgPSAnJztcbiAgICB2YXIgcmVsZXZhbmNlID0gMDtcbiAgICB0cnkge1xuICAgICAgdmFyIG1hdGNoLCBjb3VudCwgaW5kZXggPSAwO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdG9wLnRlcm1pbmF0b3JzLmxhc3RJbmRleCA9IGluZGV4O1xuICAgICAgICBtYXRjaCA9IHRvcC50ZXJtaW5hdG9ycy5leGVjKHZhbHVlKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY291bnQgPSBwcm9jZXNzTGV4ZW1lKHZhbHVlLnN1YnN0cmluZyhpbmRleCwgbWF0Y2guaW5kZXgpLCBtYXRjaCk7XG4gICAgICAgIGluZGV4ID0gbWF0Y2guaW5kZXggKyBjb3VudDtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3NMZXhlbWUodmFsdWUuc3Vic3RyKGluZGV4KSk7XG4gICAgICBmb3IoY3VycmVudCA9IHRvcDsgY3VycmVudC5wYXJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudCkgeyAvLyBjbG9zZSBkYW5nbGluZyBtb2Rlc1xuICAgICAgICBpZiAoY3VycmVudC5jbGFzc05hbWUpIHtcbiAgICAgICAgICByZXN1bHQgKz0gc3BhbkVuZFRhZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVsZXZhbmNlOiByZWxldmFuY2UsXG4gICAgICAgIHZhbHVlOiByZXN1bHQsXG4gICAgICAgIGlsbGVnYWw6ZmFsc2UsXG4gICAgICAgIGxhbmd1YWdlOiBuYW1lLFxuICAgICAgICB0b3A6IHRvcFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5tZXNzYWdlICYmIGUubWVzc2FnZS5pbmRleE9mKCdJbGxlZ2FsJykgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWxsZWdhbDogdHJ1ZSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgdmFsdWU6IGVzY2FwZSh2YWx1ZSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLypcbiAgSGlnaGxpZ2h0aW5nIHdpdGggbGFuZ3VhZ2UgZGV0ZWN0aW9uLiBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbiAgaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAtIGxhbmd1YWdlIChkZXRlY3RlZCBsYW5ndWFnZSlcbiAgLSByZWxldmFuY2UgKGludClcbiAgLSB2YWx1ZSAoYW4gSFRNTCBzdHJpbmcgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwKVxuICAtIHNlY29uZF9iZXN0IChvYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0IGhldXJpc3RpY2FsbHlcbiAgICBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudClcblxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRBdXRvKHRleHQsIGxhbmd1YWdlU3Vic2V0KSB7XG4gICAgbGFuZ3VhZ2VTdWJzZXQgPSBsYW5ndWFnZVN1YnNldCB8fCBvcHRpb25zLmxhbmd1YWdlcyB8fCBvYmplY3RLZXlzKGxhbmd1YWdlcyk7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIHZhbHVlOiBlc2NhcGUodGV4dClcbiAgICB9O1xuICAgIHZhciBzZWNvbmRfYmVzdCA9IHJlc3VsdDtcbiAgICBsYW5ndWFnZVN1YnNldC5maWx0ZXIoZ2V0TGFuZ3VhZ2UpLmZpbHRlcihhdXRvRGV0ZWN0aW9uKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaGlnaGxpZ2h0KG5hbWUsIHRleHQsIGZhbHNlKTtcbiAgICAgIGN1cnJlbnQubGFuZ3VhZ2UgPSBuYW1lO1xuICAgICAgaWYgKGN1cnJlbnQucmVsZXZhbmNlID4gc2Vjb25kX2Jlc3QucmVsZXZhbmNlKSB7XG4gICAgICAgIHNlY29uZF9iZXN0ID0gY3VycmVudDtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50LnJlbGV2YW5jZSA+IHJlc3VsdC5yZWxldmFuY2UpIHtcbiAgICAgICAgc2Vjb25kX2Jlc3QgPSByZXN1bHQ7XG4gICAgICAgIHJlc3VsdCA9IGN1cnJlbnQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHNlY29uZF9iZXN0Lmxhbmd1YWdlKSB7XG4gICAgICByZXN1bHQuc2Vjb25kX2Jlc3QgPSBzZWNvbmRfYmVzdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qXG4gIFBvc3QtcHJvY2Vzc2luZyBvZiB0aGUgaGlnaGxpZ2h0ZWQgbWFya3VwOlxuXG4gIC0gcmVwbGFjZSBUQUJzIHdpdGggc29tZXRoaW5nIG1vcmUgdXNlZnVsXG4gIC0gcmVwbGFjZSByZWFsIGxpbmUtYnJlYWtzIHdpdGggJzxicj4nIGZvciBub24tcHJlIGNvbnRhaW5lcnNcblxuICAqL1xuICBmdW5jdGlvbiBmaXhNYXJrdXAodmFsdWUpIHtcbiAgICByZXR1cm4gIShvcHRpb25zLnRhYlJlcGxhY2UgfHwgb3B0aW9ucy51c2VCUilcbiAgICAgID8gdmFsdWVcbiAgICAgIDogdmFsdWUucmVwbGFjZShmaXhNYXJrdXBSZSwgZnVuY3Rpb24obWF0Y2gsIHAxKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudXNlQlIgJiYgbWF0Y2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICByZXR1cm4gJzxicj4nO1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50YWJSZXBsYWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcDEucmVwbGFjZSgvXFx0L2csIG9wdGlvbnMudGFiUmVwbGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRDbGFzc05hbWUocHJldkNsYXNzTmFtZSwgY3VycmVudExhbmcsIHJlc3VsdExhbmcpIHtcbiAgICB2YXIgbGFuZ3VhZ2UgPSBjdXJyZW50TGFuZyA/IGFsaWFzZXNbY3VycmVudExhbmddIDogcmVzdWx0TGFuZyxcbiAgICAgICAgcmVzdWx0ICAgPSBbcHJldkNsYXNzTmFtZS50cmltKCldO1xuXG4gICAgaWYgKCFwcmV2Q2xhc3NOYW1lLm1hdGNoKC9cXGJobGpzXFxiLykpIHtcbiAgICAgIHJlc3VsdC5wdXNoKCdobGpzJyk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZDbGFzc05hbWUuaW5kZXhPZihsYW5ndWFnZSkgPT09IC0xKSB7XG4gICAgICByZXN1bHQucHVzaChsYW5ndWFnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgLypcbiAgQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYSBET00gbm9kZSBjb250YWluaW5nIGNvZGUuIEFjY2VwdHMgYSBET00gbm9kZSBhbmRcbiAgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGZpeE1hcmt1cC5cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0QmxvY2soYmxvY2spIHtcbiAgICB2YXIgbm9kZSwgb3JpZ2luYWxTdHJlYW0sIHJlc3VsdCwgcmVzdWx0Tm9kZSwgdGV4dDtcbiAgICB2YXIgbGFuZ3VhZ2UgPSBibG9ja0xhbmd1YWdlKGJsb2NrKTtcblxuICAgIGlmIChpc05vdEhpZ2hsaWdodGVkKGxhbmd1YWdlKSlcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKG9wdGlvbnMudXNlQlIpIHtcbiAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2Jyk7XG4gICAgICBub2RlLmlubmVySFRNTCA9IGJsb2NrLmlubmVySFRNTC5yZXBsYWNlKC9cXG4vZywgJycpLnJlcGxhY2UoLzxiclsgXFwvXSo+L2csICdcXG4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IGJsb2NrO1xuICAgIH1cbiAgICB0ZXh0ID0gbm9kZS50ZXh0Q29udGVudDtcbiAgICByZXN1bHQgPSBsYW5ndWFnZSA/IGhpZ2hsaWdodChsYW5ndWFnZSwgdGV4dCwgdHJ1ZSkgOiBoaWdobGlnaHRBdXRvKHRleHQpO1xuXG4gICAgb3JpZ2luYWxTdHJlYW0gPSBub2RlU3RyZWFtKG5vZGUpO1xuICAgIGlmIChvcmlnaW5hbFN0cmVhbS5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2Jyk7XG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJlc3VsdC52YWx1ZTtcbiAgICAgIHJlc3VsdC52YWx1ZSA9IG1lcmdlU3RyZWFtcyhvcmlnaW5hbFN0cmVhbSwgbm9kZVN0cmVhbShyZXN1bHROb2RlKSwgdGV4dCk7XG4gICAgfVxuICAgIHJlc3VsdC52YWx1ZSA9IGZpeE1hcmt1cChyZXN1bHQudmFsdWUpO1xuXG4gICAgYmxvY2suaW5uZXJIVE1MID0gcmVzdWx0LnZhbHVlO1xuICAgIGJsb2NrLmNsYXNzTmFtZSA9IGJ1aWxkQ2xhc3NOYW1lKGJsb2NrLmNsYXNzTmFtZSwgbGFuZ3VhZ2UsIHJlc3VsdC5sYW5ndWFnZSk7XG4gICAgYmxvY2sucmVzdWx0ID0ge1xuICAgICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSxcbiAgICAgIHJlOiByZXN1bHQucmVsZXZhbmNlXG4gICAgfTtcbiAgICBpZiAocmVzdWx0LnNlY29uZF9iZXN0KSB7XG4gICAgICBibG9jay5zZWNvbmRfYmVzdCA9IHtcbiAgICAgICAgbGFuZ3VhZ2U6IHJlc3VsdC5zZWNvbmRfYmVzdC5sYW5ndWFnZSxcbiAgICAgICAgcmU6IHJlc3VsdC5zZWNvbmRfYmVzdC5yZWxldmFuY2VcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLypcbiAgVXBkYXRlcyBoaWdobGlnaHQuanMgZ2xvYmFsIG9wdGlvbnMgd2l0aCB2YWx1ZXMgcGFzc2VkIGluIHRoZSBmb3JtIG9mIGFuIG9iamVjdC5cbiAgKi9cbiAgZnVuY3Rpb24gY29uZmlndXJlKHVzZXJfb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBpbmhlcml0KG9wdGlvbnMsIHVzZXJfb3B0aW9ucyk7XG4gIH1cblxuICAvKlxuICBBcHBsaWVzIGhpZ2hsaWdodGluZyB0byBhbGwgPHByZT48Y29kZT4uLjwvY29kZT48L3ByZT4gYmxvY2tzIG9uIGEgcGFnZS5cbiAgKi9cbiAgZnVuY3Rpb24gaW5pdEhpZ2hsaWdodGluZygpIHtcbiAgICBpZiAoaW5pdEhpZ2hsaWdodGluZy5jYWxsZWQpXG4gICAgICByZXR1cm47XG4gICAgaW5pdEhpZ2hsaWdodGluZy5jYWxsZWQgPSB0cnVlO1xuXG4gICAgdmFyIGJsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSBjb2RlJyk7XG4gICAgQXJyYXlQcm90by5mb3JFYWNoLmNhbGwoYmxvY2tzLCBoaWdobGlnaHRCbG9jayk7XG4gIH1cblxuICAvKlxuICBBdHRhY2hlcyBoaWdobGlnaHRpbmcgdG8gdGhlIHBhZ2UgbG9hZCBldmVudC5cbiAgKi9cbiAgZnVuY3Rpb24gaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpIHtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdEhpZ2hsaWdodGluZywgZmFsc2UpO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBpbml0SGlnaGxpZ2h0aW5nLCBmYWxzZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3Rlckxhbmd1YWdlKG5hbWUsIGxhbmd1YWdlKSB7XG4gICAgdmFyIGxhbmcgPSBsYW5ndWFnZXNbbmFtZV0gPSBsYW5ndWFnZShobGpzKTtcbiAgICByZXN0b3JlTGFuZ3VhZ2VBcGkobGFuZyk7XG4gICAgbGFuZy5yYXdEZWZpbml0aW9uID0gbGFuZ3VhZ2UuYmluZChudWxsLGhsanMpO1xuXG4gICAgaWYgKGxhbmcuYWxpYXNlcykge1xuICAgICAgbGFuZy5hbGlhc2VzLmZvckVhY2goZnVuY3Rpb24oYWxpYXMpIHthbGlhc2VzW2FsaWFzXSA9IG5hbWU7fSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlzdExhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gb2JqZWN0S2V5cyhsYW5ndWFnZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2UobmFtZSkge1xuICAgIG5hbWUgPSAobmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbGFuZ3VhZ2VzW25hbWVdIHx8IGxhbmd1YWdlc1thbGlhc2VzW25hbWVdXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGF1dG9EZXRlY3Rpb24obmFtZSkge1xuICAgIHZhciBsYW5nID0gZ2V0TGFuZ3VhZ2UobmFtZSk7XG4gICAgcmV0dXJuIGxhbmcgJiYgIWxhbmcuZGlzYWJsZUF1dG9kZXRlY3Q7XG4gIH1cblxuICAvKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiAqL1xuXG4gIGhsanMuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0O1xuICBobGpzLmhpZ2hsaWdodEF1dG8gPSBoaWdobGlnaHRBdXRvO1xuICBobGpzLmZpeE1hcmt1cCA9IGZpeE1hcmt1cDtcbiAgaGxqcy5oaWdobGlnaHRCbG9jayA9IGhpZ2hsaWdodEJsb2NrO1xuICBobGpzLmNvbmZpZ3VyZSA9IGNvbmZpZ3VyZTtcbiAgaGxqcy5pbml0SGlnaGxpZ2h0aW5nID0gaW5pdEhpZ2hsaWdodGluZztcbiAgaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkID0gaW5pdEhpZ2hsaWdodGluZ09uTG9hZDtcbiAgaGxqcy5yZWdpc3Rlckxhbmd1YWdlID0gcmVnaXN0ZXJMYW5ndWFnZTtcbiAgaGxqcy5saXN0TGFuZ3VhZ2VzID0gbGlzdExhbmd1YWdlcztcbiAgaGxqcy5nZXRMYW5ndWFnZSA9IGdldExhbmd1YWdlO1xuICBobGpzLmF1dG9EZXRlY3Rpb24gPSBhdXRvRGV0ZWN0aW9uO1xuICBobGpzLmluaGVyaXQgPSBpbmhlcml0O1xuXG4gIC8vIENvbW1vbiByZWdleHBzXG4gIGhsanMuSURFTlRfUkUgPSAnW2EtekEtWl1cXFxcdyonO1xuICBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqJztcbiAgaGxqcy5OVU1CRVJfUkUgPSAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyc7XG4gIGhsanMuQ19OVU1CRVJfUkUgPSAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfChcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKShbZUVdWy0rXT9cXFxcZCspPyknOyAvLyAweC4uLiwgMC4uLiwgZGVjaW1hbCwgZmxvYXRcbiAgaGxqcy5CSU5BUllfTlVNQkVSX1JFID0gJ1xcXFxiKDBiWzAxXSspJzsgLy8gMGIuLi5cbiAgaGxqcy5SRV9TVEFSVEVSU19SRSA9ICchfCE9fCE9PXwlfCU9fCZ8JiZ8Jj18XFxcXCp8XFxcXCo9fFxcXFwrfFxcXFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFxcXD98XFxcXFt8XFxcXHt8XFxcXCh8XFxcXF58XFxcXF49fFxcXFx8fFxcXFx8PXxcXFxcfFxcXFx8fH4nO1xuXG4gIC8vIENvbW1vbiBtb2Rlc1xuICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgPSB7XG4gICAgYmVnaW46ICdcXFxcXFxcXFtcXFxcc1xcXFxTXScsIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkFQT1NfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcbiAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcbiAgaGxqcy5QSFJBU0FMX1dPUkRTX01PREUgPSB7XG4gICAgYmVnaW46IC9cXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxcYi9cbiAgfTtcbiAgaGxqcy5DT01NRU5UID0gZnVuY3Rpb24gKGJlZ2luLCBlbmQsIGluaGVyaXRzKSB7XG4gICAgdmFyIG1vZGUgPSBobGpzLmluaGVyaXQoXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogYmVnaW4sIGVuZDogZW5kLFxuICAgICAgICBjb250YWluczogW11cbiAgICAgIH0sXG4gICAgICBpbmhlcml0cyB8fCB7fVxuICAgICk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKGhsanMuUEhSQVNBTF9XT1JEU19NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goe1xuICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgIGJlZ2luOiAnKD86VE9ET3xGSVhNRXxOT1RFfEJVR3xYWFgpOicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZTtcbiAgfTtcbiAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvLycsICckJyk7XG4gIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nKTtcbiAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSA9IGhsanMuQ09NTUVOVCgnIycsICckJyk7XG4gIGhsanMuTlVNQkVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuQ19OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBobGpzLkJJTkFSWV9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuQ1NTX05VTUJFUl9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJygnICtcbiAgICAgICclfGVtfGV4fGNofHJlbScgICtcbiAgICAgICd8dnd8dmh8dm1pbnx2bWF4JyArXG4gICAgICAnfGNtfG1tfGlufHB0fHBjfHB4JyArXG4gICAgICAnfGRlZ3xncmFkfHJhZHx0dXJuJyArXG4gICAgICAnfHN8bXMnICtcbiAgICAgICd8SHp8a0h6JyArXG4gICAgICAnfGRwaXxkcGNtfGRwcHgnICtcbiAgICAgICcpPycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGhsanMuUkVHRVhQX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBiZWdpbjogL1xcLy8sIGVuZDogL1xcL1tnaW11eV0qLyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sIGVuZDogL1xcXS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBobGpzLlRJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiBobGpzLklERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgaGxqcy5NRVRIT0RfR1VBUkQgPSB7XG4gICAgLy8gZXhjbHVkZXMgbWV0aG9kIG5hbWVzIGZyb20ga2V5d29yZCBwcm9jZXNzaW5nXG4gICAgYmVnaW46ICdcXFxcLlxcXFxzKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIGhsanM7XG59KSk7XG4iLCIvL1xuLy8gZm9ybWF0IC0gcHJpbnRmLWxpa2Ugc3RyaW5nIGZvcm1hdHRpbmcgZm9yIEphdmFTY3JpcHRcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvZm9ybWF0XG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxMyBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gIC8vLy8gRXhwb3J0IHRoZSBBUElcbiAgdmFyIG5hbWVzcGFjZTtcblxuICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gZm9ybWF0O1xuICB9XG5cbiAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgIG5hbWVzcGFjZSA9IChmdW5jdGlvbigpeyByZXR1cm4gdGhpcyB8fCAoMSxldmFsKSgndGhpcycpIH0oKSk7XG4gIH1cblxuICBuYW1lc3BhY2UuZm9ybWF0ID0gZm9ybWF0O1xuICBuYW1lc3BhY2UudnNwcmludGYgPSB2c3ByaW50ZjtcblxuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG5hbWVzcGFjZS5wcmludGYgPSBwcmludGY7XG4gIH1cblxuICBmdW5jdGlvbiBwcmludGYoLyogLi4uICovKSB7XG4gICAgY29uc29sZS5sb2coZm9ybWF0LmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdnNwcmludGYoZm10LCByZXBsYWNlbWVudHMpIHtcbiAgICByZXR1cm4gZm9ybWF0LmFwcGx5KG51bGwsIFtmbXRdLmNvbmNhdChyZXBsYWNlbWVudHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdChmbXQpIHtcbiAgICB2YXIgYXJnSW5kZXggPSAxIC8vIHNraXAgaW5pdGlhbCBmb3JtYXQgYXJndW1lbnRcbiAgICAgICwgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgICAgLCBpID0gMFxuICAgICAgLCBuID0gZm10Lmxlbmd0aFxuICAgICAgLCByZXN1bHQgPSAnJ1xuICAgICAgLCBjXG4gICAgICAsIGVzY2FwZWQgPSBmYWxzZVxuICAgICAgLCBhcmdcbiAgICAgICwgdG1wXG4gICAgICAsIGxlYWRpbmdaZXJvID0gZmFsc2VcbiAgICAgICwgcHJlY2lzaW9uXG4gICAgICAsIG5leHRBcmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH1cbiAgICAgICwgc2x1cnBOdW1iZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgZGlnaXRzID0gJyc7XG4gICAgICAgICAgd2hpbGUgKC9cXGQvLnRlc3QoZm10W2ldKSkge1xuICAgICAgICAgICAgZGlnaXRzICs9IGZtdFtpKytdO1xuICAgICAgICAgICAgYyA9IGZtdFtpXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRpZ2l0cy5sZW5ndGggPiAwID8gcGFyc2VJbnQoZGlnaXRzKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSkge1xuICAgICAgYyA9IGZtdFtpXTtcbiAgICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAgIGVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGMgPT0gJy4nKSB7XG4gICAgICAgICAgbGVhZGluZ1plcm8gPSBmYWxzZTtcbiAgICAgICAgICBjID0gZm10WysraV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYyA9PSAnMCcgJiYgZm10W2kgKyAxXSA9PSAnLicpIHtcbiAgICAgICAgICBsZWFkaW5nWmVybyA9IHRydWU7XG4gICAgICAgICAgaSArPSAyO1xuICAgICAgICAgIGMgPSBmbXRbaV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgbGVhZGluZ1plcm8gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHByZWNpc2lvbiA9IHNsdXJwTnVtYmVyKCk7XG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlICdiJzogLy8gbnVtYmVyIGluIGJpbmFyeVxuICAgICAgICAgIHJlc3VsdCArPSBwYXJzZUludChuZXh0QXJnKCksIDEwKS50b1N0cmluZygyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYyc6IC8vIGNoYXJhY3RlclxuICAgICAgICAgIGFyZyA9IG5leHRBcmcoKTtcbiAgICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgYXJnIGluc3RhbmNlb2YgU3RyaW5nKVxuICAgICAgICAgICAgcmVzdWx0ICs9IGFyZztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhcmcsIDEwKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOiAvLyBudW1iZXIgaW4gZGVjaW1hbFxuICAgICAgICAgIHJlc3VsdCArPSBwYXJzZUludChuZXh0QXJnKCksIDEwKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZic6IC8vIGZsb2F0aW5nIHBvaW50IG51bWJlclxuICAgICAgICAgIHRtcCA9IFN0cmluZyhwYXJzZUZsb2F0KG5leHRBcmcoKSkudG9GaXhlZChwcmVjaXNpb24gfHwgNikpO1xuICAgICAgICAgIHJlc3VsdCArPSBsZWFkaW5nWmVybyA/IHRtcCA6IHRtcC5yZXBsYWNlKC9eMC8sICcnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaic6IC8vIEpTT05cbiAgICAgICAgICByZXN1bHQgKz0gSlNPTi5zdHJpbmdpZnkobmV4dEFyZygpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbyc6IC8vIG51bWJlciBpbiBvY3RhbFxuICAgICAgICAgIHJlc3VsdCArPSAnMCcgKyBwYXJzZUludChuZXh0QXJnKCksIDEwKS50b1N0cmluZyg4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncyc6IC8vIHN0cmluZ1xuICAgICAgICAgIHJlc3VsdCArPSBuZXh0QXJnKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3gnOiAvLyBsb3dlcmNhc2UgaGV4YWRlY2ltYWxcbiAgICAgICAgICByZXN1bHQgKz0gJzB4JyArIHBhcnNlSW50KG5leHRBcmcoKSwgMTApLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnWCc6IC8vIHVwcGVyY2FzZSBoZXhhZGVjaW1hbFxuICAgICAgICAgIHJlc3VsdCArPSAnMHgnICsgcGFyc2VJbnQobmV4dEFyZygpLCAxMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVzdWx0ICs9IGM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyUnKSB7XG4gICAgICAgIGVzY2FwZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxufSgpKTtcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZm9ybWF0dGVyID0gcmVxdWlyZSgnZm9ybWF0JylcblxudmFyIGZhdWx0ID0gY3JlYXRlKEVycm9yKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhdWx0XG5cbmZhdWx0LmV2YWwgPSBjcmVhdGUoRXZhbEVycm9yKVxuZmF1bHQucmFuZ2UgPSBjcmVhdGUoUmFuZ2VFcnJvcilcbmZhdWx0LnJlZmVyZW5jZSA9IGNyZWF0ZShSZWZlcmVuY2VFcnJvcilcbmZhdWx0LnN5bnRheCA9IGNyZWF0ZShTeW50YXhFcnJvcilcbmZhdWx0LnR5cGUgPSBjcmVhdGUoVHlwZUVycm9yKVxuZmF1bHQudXJpID0gY3JlYXRlKFVSSUVycm9yKVxuXG5mYXVsdC5jcmVhdGUgPSBjcmVhdGVcblxuLy8gQ3JlYXRlIGEgbmV3IGBFQ29uc3RydWN0b3JgLCB3aXRoIHRoZSBmb3JtYXR0ZWQgYGZvcm1hdGAgYXMgYSBmaXJzdCBhcmd1bWVudC5cbmZ1bmN0aW9uIGNyZWF0ZShFQ29uc3RydWN0b3IpIHtcbiAgRm9ybWF0dGVkRXJyb3IuZGlzcGxheU5hbWUgPSBFQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgRUNvbnN0cnVjdG9yLm5hbWVcblxuICByZXR1cm4gRm9ybWF0dGVkRXJyb3JcblxuICBmdW5jdGlvbiBGb3JtYXR0ZWRFcnJvcihmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICBmb3JtYXQgPSBmb3JtYXR0ZXIuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRUNvbnN0cnVjdG9yKGZvcm1hdClcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBoaWdoID0gcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9oaWdobGlnaHQuanMnKVxudmFyIGZhdWx0ID0gcmVxdWlyZSgnZmF1bHQnKVxuXG4vLyBUaGUgbG93bGlnaHQgaW50ZXJmYWNlLCB3aGljaCBoYXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGhpZ2hsaWdodC5qcywgYXNcbi8vIHRoaXMgb2JqZWN0IGlzIHBhc3NlZCB0byBoaWdobGlnaHQuanMgc3ludGF4ZXMuXG5cbmZ1bmN0aW9uIEhpZ2goKSB7fVxuXG5IaWdoLnByb3RvdHlwZSA9IGhpZ2hcblxuLy8gRXhwb3NlLlxudmFyIGxvdyA9IG5ldyBIaWdoKCkgLy8gSGEhXG5cbm1vZHVsZS5leHBvcnRzID0gbG93XG5cbmxvdy5oaWdobGlnaHQgPSBoaWdobGlnaHRcbmxvdy5oaWdobGlnaHRBdXRvID0gYXV0b0hpZ2hsaWdodFxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UgPSByZWdpc3Rlckxhbmd1YWdlXG5sb3cubGlzdExhbmd1YWdlcyA9IGxpc3RMYW5ndWFnZXNcbmxvdy5yZWdpc3RlckFsaWFzID0gcmVnaXN0ZXJBbGlhc1xubG93LmdldExhbmd1YWdlID0gZ2V0TGFuZ3VhZ2VcblxudmFyIGluaGVyaXQgPSBoaWdoLmluaGVyaXRcbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG52YXIgZGVmYXVsdFByZWZpeCA9ICdobGpzLSdcbnZhciBrZXlJbnNlbnNpdGl2ZSA9ICdjYXNlX2luc2Vuc2l0aXZlJ1xudmFyIGtleUNhY2hlZFZhcmlhbnRzID0gJ2NhY2hlZF92YXJpYW50cydcbnZhciBrZXlUZXJtaW5hdG9yRW5kID0gJ3Rlcm1pbmF0b3JfZW5kJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgdmVydGljYWxCYXIgPSAnfCdcbnZhciBwYXJlbk9wZW4gPSAnKCdcbnZhciBwYXJlbkNsb3NlID0gJyknXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgY29tbW9uS2V5d29yZHMgPSBbJ29mJywgJ2FuZCcsICdmb3InLCAnaW4nLCAnbm90JywgJ29yJywgJ2lmJywgJ3RoZW4nXVxuXG4vLyBNYXBzIG9mIHN5bnRheGVzLlxudmFyIGxhbmd1YWdlTmFtZXMgPSBbXVxudmFyIGxhbmd1YWdlcyA9IHt9XG52YXIgYWxpYXNlcyA9IHt9XG5cbi8vIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi5cbi8vIEFjY2VwdHMgYSBzdHJpbmcgd2l0aCB0aGUgY29kZSB0byBoaWdobGlnaHQuXG4vLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbi8vXG4vLyAqICAgYGxhbmd1YWdlYCDigJQgRGV0ZWN0ZWQgbGFuZ3VhZ2Vcbi8vICogICBgcmVsZXZhbmNlYCDigJQgSW50ZWdlclxuLy8gKiAgIGB2YWx1ZWAg4oCUIEhBU1QgdHJlZSB3aXRoIGhpZ2hsaWdodGluZyBtYXJrdXBcbi8vICogICBgc2Vjb25kQmVzdGAg4oCUIE9iamVjdCB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBmb3Igc2Vjb25kLWJlc3Rcbi8vICAgICBoZXVyaXN0aWNhbGx5IGRldGVjdGVkIGxhbmd1YWdlLCBtYXkgYmUgYWJzZW50LlxuZnVuY3Rpb24gYXV0b0hpZ2hsaWdodCh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBzdWJzZXQgPSBzZXR0aW5ncy5zdWJzZXQgfHwgbGFuZ3VhZ2VOYW1lc1xuICB2YXIgcHJlZml4ID0gc2V0dGluZ3MucHJlZml4XG4gIHZhciBsZW5ndGggPSBzdWJzZXQubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciByZXN1bHRcbiAgdmFyIHNlY29uZEJlc3RcbiAgdmFyIGN1cnJlbnRcbiAgdmFyIG5hbWVcblxuICBpZiAocHJlZml4ID09PSBudWxsIHx8IHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcHJlZml4ID0gZGVmYXVsdFByZWZpeFxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBmYXVsdCgnRXhwZWN0ZWQgYHN0cmluZ2AgZm9yIHZhbHVlLCBnb3QgYCVzYCcsIHZhbHVlKVxuICB9XG5cbiAgc2Vjb25kQmVzdCA9IG5vcm1hbGl6ZSh7fSlcbiAgcmVzdWx0ID0gbm9ybWFsaXplKHt9KVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmFtZSA9IHN1YnNldFtpbmRleF1cblxuICAgIGlmICghZ2V0TGFuZ3VhZ2UobmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY3VycmVudCA9IG5vcm1hbGl6ZShjb3JlSGlnaGxpZ2h0KG5hbWUsIHZhbHVlLCBmYWxzZSwgcHJlZml4KSlcblxuICAgIGN1cnJlbnQubGFuZ3VhZ2UgPSBuYW1lXG5cbiAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiBzZWNvbmRCZXN0LnJlbGV2YW5jZSkge1xuICAgICAgc2Vjb25kQmVzdCA9IGN1cnJlbnRcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudC5yZWxldmFuY2UgPiByZXN1bHQucmVsZXZhbmNlKSB7XG4gICAgICBzZWNvbmRCZXN0ID0gcmVzdWx0XG4gICAgICByZXN1bHQgPSBjdXJyZW50XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlY29uZEJlc3QubGFuZ3VhZ2UpIHtcbiAgICByZXN1bHQuc2Vjb25kQmVzdCA9IHNlY29uZEJlc3RcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gSGlnaGxpZ2h0aW5nIGB2YWx1ZWAgaW4gdGhlIGxhbmd1YWdlIGBsYW5ndWFnZWAuXG5mdW5jdGlvbiBoaWdobGlnaHQobGFuZ3VhZ2UsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHByZWZpeCA9IHNldHRpbmdzLnByZWZpeFxuXG4gIGlmIChwcmVmaXggPT09IG51bGwgfHwgcHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXggPSBkZWZhdWx0UHJlZml4XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplKGNvcmVIaWdobGlnaHQobGFuZ3VhZ2UsIHZhbHVlLCB0cnVlLCBwcmVmaXgpKVxufVxuXG4vLyBSZWdpc3RlciBhIGxhbmd1YWdlLlxuZnVuY3Rpb24gcmVnaXN0ZXJMYW5ndWFnZShuYW1lLCBzeW50YXgpIHtcbiAgdmFyIGxhbmcgPSBzeW50YXgobG93KVxuXG4gIGxhbmcucmF3RGVmaW5pdGlvbiA9IHN5bnRheC5iaW5kKG51bGwsIGxvdylcblxuICBsYW5ndWFnZXNbbmFtZV0gPSBsYW5nXG5cbiAgbGFuZ3VhZ2VOYW1lcy5wdXNoKG5hbWUpXG5cbiAgaWYgKGxhbmcuYWxpYXNlcykge1xuICAgIHJlZ2lzdGVyQWxpYXMobmFtZSwgbGFuZy5hbGlhc2VzKVxuICB9XG59XG5cbi8vIEdldCBhIGxpc3Qgb2YgYWxsIHJlZ2lzdGVyZWQgbGFuZ3VhZ2VzLlxuZnVuY3Rpb24gbGlzdExhbmd1YWdlcygpIHtcbiAgcmV0dXJuIGxhbmd1YWdlTmFtZXMuY29uY2F0KClcbn1cblxuLy8gUmVnaXN0ZXIgbW9yZSBhbGlhc2VzIGZvciBhbiBhbHJlYWR5IHJlZ2lzdGVyZWQgbGFuZ3VhZ2UuXG5mdW5jdGlvbiByZWdpc3RlckFsaWFzKG5hbWUsIGFsaWFzKSB7XG4gIHZhciBtYXAgPSBuYW1lXG4gIHZhciBrZXlcbiAgdmFyIGxpc3RcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcblxuICBpZiAoYWxpYXMpIHtcbiAgICBtYXAgPSB7fVxuICAgIG1hcFtuYW1lXSA9IGFsaWFzXG4gIH1cblxuICBmb3IgKGtleSBpbiBtYXApIHtcbiAgICBsaXN0ID0gbWFwW2tleV1cbiAgICBsaXN0ID0gdHlwZW9mIGxpc3QgPT09ICdzdHJpbmcnID8gW2xpc3RdIDogbGlzdFxuICAgIGxlbmd0aCA9IGxpc3QubGVuZ3RoXG4gICAgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFsaWFzZXNbbGlzdFtpbmRleF1dID0ga2V5XG4gICAgfVxuICB9XG59XG5cbi8vIENvcmUgaGlnaGxpZ2h0aW5nIGZ1bmN0aW9uLlxuLy8gQWNjZXB0cyBhIGxhbmd1YWdlIG5hbWUsIG9yIGFuIGFsaWFzLCBhbmQgYSBzdHJpbmcgd2l0aCB0aGUgY29kZSB0b1xuLy8gaGlnaGxpZ2h0LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmZ1bmN0aW9uIGNvcmVIaWdobGlnaHQobmFtZSwgdmFsdWUsIGlnbm9yZSwgcHJlZml4LCBjb250aW51YXRpb24pIHtcbiAgdmFyIGxhc3RNYXRjaCA9IHt9XG4gIHZhciBjb250aW51YXRpb25zID0ge31cbiAgdmFyIHN0YWNrID0gW11cbiAgdmFyIG1vZGVCdWZmZXIgPSAnJ1xuICB2YXIgcmVsZXZhbmNlID0gMFxuICB2YXIgbGFuZ3VhZ2VcbiAgdmFyIHRvcFxuICB2YXIgY3VycmVudFxuICB2YXIgY3VycmVudENoaWxkcmVuXG4gIHZhciBvZmZzZXRcbiAgdmFyIGNvdW50XG4gIHZhciBtYXRjaFxuICB2YXIgY2hpbGRyZW5cblxuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgZmF1bHQoJ0V4cGVjdGVkIGBzdHJpbmdgIGZvciBuYW1lLCBnb3QgYCVzYCcsIG5hbWUpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IGZhdWx0KCdFeHBlY3RlZCBgc3RyaW5nYCBmb3IgdmFsdWUsIGdvdCBgJXNgJywgdmFsdWUpXG4gIH1cblxuICBsYW5ndWFnZSA9IGdldExhbmd1YWdlKG5hbWUpXG4gIHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBsYW5ndWFnZVxuICBjaGlsZHJlbiA9IFtdXG5cbiAgY3VycmVudCA9IHRvcFxuICBjdXJyZW50Q2hpbGRyZW4gPSBjaGlsZHJlblxuXG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICB0aHJvdyBmYXVsdCgnVW5rbm93biBsYW5ndWFnZTogYCVzYCBpcyBub3QgcmVnaXN0ZXJlZCcsIG5hbWUpXG4gIH1cblxuICBjb21waWxlTGFuZ3VhZ2UobGFuZ3VhZ2UpXG5cbiAgdHJ5IHtcbiAgICB0b3AudGVybWluYXRvcnMubGFzdEluZGV4ID0gMFxuICAgIG9mZnNldCA9IDBcbiAgICBtYXRjaCA9IHRvcC50ZXJtaW5hdG9ycy5leGVjKHZhbHVlKVxuXG4gICAgd2hpbGUgKG1hdGNoKSB7XG4gICAgICBjb3VudCA9IHByb2Nlc3NMZXhlbWUodmFsdWUuc2xpY2Uob2Zmc2V0LCBtYXRjaC5pbmRleCksIG1hdGNoKVxuICAgICAgb2Zmc2V0ID0gbWF0Y2guaW5kZXggKyBjb3VudFxuICAgICAgdG9wLnRlcm1pbmF0b3JzLmxhc3RJbmRleCA9IG9mZnNldFxuICAgICAgbWF0Y2ggPSB0b3AudGVybWluYXRvcnMuZXhlYyh2YWx1ZSlcbiAgICB9XG5cbiAgICBwcm9jZXNzTGV4ZW1lKHZhbHVlLnNsaWNlKG9mZnNldCkpXG4gICAgY3VycmVudCA9IHRvcFxuXG4gICAgd2hpbGUgKGN1cnJlbnQucGFyZW50KSB7XG4gICAgICBpZiAoY3VycmVudC5jbGFzc05hbWUpIHtcbiAgICAgICAgcG9wKClcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlLFxuICAgICAgdmFsdWU6IGN1cnJlbnRDaGlsZHJlbixcbiAgICAgIGlsbGVnYWw6IGZhbHNlLFxuICAgICAgbGFuZ3VhZ2U6IG5hbWUsXG4gICAgICB0b3A6IHRvcFxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBDYXRjaC1hbGwgICovXG4gICAgaWYgKGVycm9yLm1lc3NhZ2UuaW5kZXhPZignSWxsZWdhbCcpID09PSAtMSkge1xuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICByZXR1cm4ge3JlbGV2YW5jZTogMCwgaWxsZWdhbDogdHJ1ZSwgdmFsdWU6IGFkZFRleHQodmFsdWUsIFtdKX1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVzY2FwZVJlKHZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAodmFsdWUucmVwbGFjZSgvWy0vXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpLCAnbScpXG4gIH1cblxuICBmdW5jdGlvbiBkb0JlZ2luTWF0Y2gobWF0Y2gpIHtcbiAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF1cbiAgICB2YXIgbmV3TW9kZSA9IG1hdGNoLnJ1bGVcblxuICAgIGlmIChuZXdNb2RlICYmIG5ld01vZGUuZW5kU2FtZUFzQmVnaW4pIHtcbiAgICAgIG5ld01vZGUuZW5kUmUgPSBlc2NhcGVSZShsZXhlbWUpXG4gICAgfVxuXG4gICAgaWYgKG5ld01vZGUuc2tpcCkge1xuICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5ld01vZGUuZXhjbHVkZUJlZ2luKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG4gICAgICB9XG5cbiAgICAgIGFkZFNpYmxpbmdzKHByb2Nlc3NCdWZmZXIoKSwgY3VycmVudENoaWxkcmVuKVxuXG4gICAgICBpZiAoIW5ld01vZGUucmV0dXJuQmVnaW4gJiYgIW5ld01vZGUuZXhjbHVkZUJlZ2luKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgPSBsZXhlbWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdGFydE5ld01vZGUobmV3TW9kZSlcblxuICAgIHJldHVybiBuZXdNb2RlLnJldHVybkJlZ2luID8gMCA6IGxleGVtZS5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIGRvRW5kTWF0Y2gobWF0Y2gpIHtcbiAgICB2YXIgbGV4ZW1lID0gbWF0Y2hbMF1cbiAgICB2YXIgbWF0Y2hQbHVzUmVtYWluZGVyID0gdmFsdWUuc2xpY2UobWF0Y2guaW5kZXgpXG4gICAgdmFyIGVuZE1vZGUgPSBlbmRPZk1vZGUodG9wLCBtYXRjaFBsdXNSZW1haW5kZXIpXG5cbiAgICBpZiAoIWVuZE1vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBvcmlnaW4gPSB0b3BcblxuICAgIGlmIChvcmlnaW4uc2tpcCkge1xuICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEob3JpZ2luLnJldHVybkVuZCB8fCBvcmlnaW4uZXhjbHVkZUVuZCkpIHtcbiAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWVcbiAgICAgIH1cblxuICAgICAgYWRkU2libGluZ3MocHJvY2Vzc0J1ZmZlcigpLCBjdXJyZW50Q2hpbGRyZW4pXG5cbiAgICAgIGlmIChvcmlnaW4uZXhjbHVkZUVuZCkge1xuICAgICAgICBtb2RlQnVmZmVyID0gbGV4ZW1lXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgaWYgKHRvcC5jbGFzc05hbWUpIHtcbiAgICAgICAgcG9wKClcbiAgICAgIH1cblxuICAgICAgaWYgKCF0b3Auc2tpcCAmJiAhdG9wLnN1Ykxhbmd1YWdlKSB7XG4gICAgICAgIHJlbGV2YW5jZSArPSB0b3AucmVsZXZhbmNlXG4gICAgICB9XG5cbiAgICAgIHRvcCA9IHRvcC5wYXJlbnRcbiAgICB9IHdoaWxlICh0b3AgIT09IGVuZE1vZGUucGFyZW50KVxuXG4gICAgaWYgKGVuZE1vZGUuc3RhcnRzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBobGpzIDkuMTYgYWRkZWQgc3VwcG9ydCBmb3IgdGhpcyBidXQgZGlkbuKAmXQgdXNlIGl0IHlldC4gKi9cbiAgICAgIGlmIChlbmRNb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICAgIGVuZE1vZGUuc3RhcnRzLmVuZFJlID0gZW5kTW9kZS5lbmRSZVxuICAgICAgfVxuXG4gICAgICBzdGFydE5ld01vZGUoZW5kTW9kZS5zdGFydHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbi5yZXR1cm5FbmQgPyAwIDogbGV4ZW1lLmxlbmd0aFxuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc0xleGVtZSh0ZXh0QmVmb3JlTWF0Y2gsIG1hdGNoKSB7XG4gICAgdmFyIGxleGVtZSA9IG1hdGNoICYmIG1hdGNoWzBdXG4gICAgdmFyIHByb2Nlc3NlZFxuXG4gICAgLy8gQWRkIG5vbi1tYXRjaGVkIHRleHQgdG8gdGhlIGN1cnJlbnQgbW9kZSBidWZmZXJcbiAgICBtb2RlQnVmZmVyICs9IHRleHRCZWZvcmVNYXRjaFxuXG4gICAgaWYgKGxleGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhZGRTaWJsaW5ncyhwcm9jZXNzQnVmZmVyKCksIGN1cnJlbnRDaGlsZHJlbilcbiAgICAgIHJldHVybiAwXG4gICAgfVxuXG4gICAgLy8gV2UndmUgZm91bmQgYSAwIHdpZHRoIG1hdGNoIGFuZCB3ZSdyZSBzdHVjaywgc28gd2UgbmVlZCB0byBhZHZhbmNlXG4gICAgLy8gdGhpcyBoYXBwZW5zIHdoZW4gd2UgaGF2ZSBiYWRseSBiZWhhdmVkIHJ1bGVzIHRoYXQgaGF2ZSBvcHRpb25hbCBtYXRjaGVycyB0byB0aGUgZGVncmVlIHRoYXRcbiAgICAvLyBzb21ldGltZXMgdGhleSBjYW4gZW5kIHVwIG1hdGNoaW5nIG5vdGhpbmcgYXQgYWxsXG4gICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMTQwXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gVW5rbm93biB3aGF0IHRoaXMgZml4ZXMgb3Igd2hpY2ggY2FzZSBmaXhlcyBpdCAqL1xuICAgIGlmIChcbiAgICAgIGxhc3RNYXRjaC50eXBlID09PSAnYmVnaW4nICYmXG4gICAgICBtYXRjaC50eXBlID09PSAnZW5kJyAmJlxuICAgICAgbGFzdE1hdGNoLmluZGV4ID09PSBtYXRjaC5pbmRleCAmJlxuICAgICAgbGV4ZW1lID09PSAnJ1xuICAgICkge1xuICAgICAgLy8gU3BpdCB0aGUg4oCcc2tpcHBlZOKAnSBjaGFyYWN0ZXIgdGhhdCBvdXIgcmVnZXggY2hva2VkIG9uIGJhY2sgaW50byB0aGUgb3V0cHV0IHNlcXVlbmNlXG4gICAgICBtb2RlQnVmZmVyICs9IHZhbHVlLnNsaWNlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIDEpXG4gICAgICByZXR1cm4gMVxuICAgIH1cblxuICAgIGxhc3RNYXRjaCA9IG1hdGNoXG5cbiAgICBpZiAobWF0Y2gudHlwZSA9PT0gJ2JlZ2luJykge1xuICAgICAgcmV0dXJuIGRvQmVnaW5NYXRjaChtYXRjaClcbiAgICB9XG5cbiAgICBpZiAobWF0Y2gudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgIHByb2Nlc3NlZCA9IGRvRW5kTWF0Y2gobWF0Y2gpXG5cbiAgICAgIGlmIChwcm9jZXNzZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnR5cGUgPT09ICdpbGxlZ2FsJyAmJiAhaWdub3JlKSB7XG4gICAgICAvLyBJbGxlZ2FsIG1hdGNoLCB3ZSBkbyBub3QgY29udGludWUgcHJvY2Vzc2luZ1xuICAgICAgdGhyb3cgZmF1bHQoXG4gICAgICAgICdJbGxlZ2FsIGxleGVtZSBcIiVzXCIgZm9yIG1vZGUgXCIlc1wiJyxcbiAgICAgICAgbGV4ZW1lLFxuICAgICAgICB0b3AuY2xhc3NOYW1lIHx8ICc8dW5uYW1lZD4nXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gV2h5IG1pZ2h0IGJlIGZpbmQgb3Vyc2VsdmVzIGhlcmU/XG4gICAgLy8gT25seSBvbmUgb2NjYXNpb24gbm93LlxuICAgIC8vIEFuIGVuZCBtYXRjaCB0aGF0IHdhcyB0cmlnZ2VyZWQgYnV0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuXG4gICAgLy8gV2hlbiBtaWdodCB0aGlzIGhhcHBlbj9cbiAgICAvLyBXaGVuIGFuIGBlbmRTYW1lYXNCZWdpbmAgcnVsZSBzZXRzIHRoZSBlbmQgcnVsZSB0byBhIHNwZWNpZmljIG1hdGNoLlxuICAgIC8vIFNpbmNlIHRoZSBvdmVyYWxsIG1vZGUgdGVybWluYXRpb24gcnVsZSB0aGF04oCZcyBiZWluZyB1c2VkIHRvIHNjYW4gdGhlXG4gICAgLy8gdGV4dCBpc27igJl0IHJlY29tcGlsZWQgdGhhdCBtZWFucyB0aGF0IGFueSBtYXRjaCB0aGF0IExPT0tTIGxpa2UgdGhlIGVuZFxuICAgIC8vIChidXQgaXMgbm90LCBiZWNhdXNlIGl0IGlzIG5vdCBhbiBleGFjdCBtYXRjaCB0byB0aGUgYmVnaW5uaW5nKSB3aWxsIGVuZFxuICAgIC8vIHVwIGhlcmUuXG4gICAgLy8gQSBkZWZpbml0ZSBlbmQgbWF0Y2gsIGJ1dCB3aGVuIGBkb0VuZE1hdGNoYCB0cmllcyB0byDigJxyZWFwcGx54oCdIHRoZSBlbmRcbiAgICAvLyBydWxlIGFuZCBmYWlscyB0byBtYXRjaCwgd2Ugd2luZCB1cCBoZXJlLCBhbmQganVzdCBzaWxlbnRseSBpZ25vcmUgdGhlXG4gICAgLy8gZW5kLlxuICAgIC8vIFRoaXMgY2F1c2VzIG5vIHJlYWwgaGFybSBvdGhlciB0aGFuIHN0b3BwaW5nIGEgZmV3IHRpbWVzIHRvbyBtYW55LlxuICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lXG5cbiAgICByZXR1cm4gbGV4ZW1lLmxlbmd0aFxuICB9XG5cbiAgLy8gU3RhcnQgYSBuZXcgbW9kZSB3aXRoIGEgYGxleGVtZWAgdG8gcHJvY2Vzcy5cbiAgZnVuY3Rpb24gc3RhcnROZXdNb2RlKG1vZGUpIHtcbiAgICB2YXIgbm9kZVxuXG4gICAgaWYgKG1vZGUuY2xhc3NOYW1lKSB7XG4gICAgICBub2RlID0gYnVpbGQobW9kZS5jbGFzc05hbWUsIFtdKVxuICAgIH1cblxuICAgIC8vIEVudGVyIGEgbmV3IG1vZGUuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGN1cnJlbnRDaGlsZHJlbi5wdXNoKG5vZGUpXG4gICAgICBzdGFjay5wdXNoKGN1cnJlbnRDaGlsZHJlbilcbiAgICAgIGN1cnJlbnRDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgICB9XG5cbiAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHtwYXJlbnQ6IHt2YWx1ZTogdG9wfX0pXG4gIH1cblxuICAvLyBQcm9jZXNzIHRoZSBidWZmZXIuXG4gIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgdmFyIHJlc3VsdCA9IHRvcC5zdWJMYW5ndWFnZSA/IHByb2Nlc3NTdWJMYW5ndWFnZSgpIDogcHJvY2Vzc0tleXdvcmRzKClcbiAgICBtb2RlQnVmZmVyID0gJydcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBQcm9jZXNzIGEgc3VibGFuZ3VhZ2UgKHJldHVybnMgYSBsaXN0IG9mIG5vZGVzKS5cbiAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgIHZhciBleHBsaWNpdCA9IHR5cGVvZiB0b3Auc3ViTGFuZ3VhZ2UgPT09ICdzdHJpbmcnXG4gICAgdmFyIHN1YnZhbHVlXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBzdXBwb3J0IG5vbi1sb2FkZWQgc3VibGFuZ3VhZ2VzICovXG4gICAgaWYgKGV4cGxpY2l0ICYmICFsYW5ndWFnZXNbdG9wLnN1Ykxhbmd1YWdlXSkge1xuICAgICAgcmV0dXJuIGFkZFRleHQobW9kZUJ1ZmZlciwgW10pXG4gICAgfVxuXG4gICAgaWYgKGV4cGxpY2l0KSB7XG4gICAgICBzdWJ2YWx1ZSA9IGNvcmVIaWdobGlnaHQoXG4gICAgICAgIHRvcC5zdWJMYW5ndWFnZSxcbiAgICAgICAgbW9kZUJ1ZmZlcixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV1cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc3VidmFsdWUgPSBhdXRvSGlnaGxpZ2h0KG1vZGVCdWZmZXIsIHtcbiAgICAgICAgc3Vic2V0OiB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdG9wLnN1Ykxhbmd1YWdlLFxuICAgICAgICBwcmVmaXg6IHByZWZpeFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBjb3VsZG7igJl0IGhpZ2hsaWdodCwgZm9yIGV4YW1wbGUgYmVjYXVzZSB0aGUgcmVxdWVzdHMgc3Vic2V0IGlzbuKAmXRcbiAgICAvLyBsb2FkZWQsIHJldHVybiBhIHRleHQgbm9kZS5cbiAgICBpZiAoIXN1YnZhbHVlLmxhbmd1YWdlKSB7XG4gICAgICByZXR1cm4gW2J1aWxkVGV4dChtb2RlQnVmZmVyKV1cbiAgICB9XG5cbiAgICAvLyBDb3VudGluZyBlbWJlZGRlZCBsYW5ndWFnZSBzY29yZSB0b3dhcmRzIHRoZSBob3N0IGxhbmd1YWdlIG1heSBiZVxuICAgIC8vIGRpc2FibGVkIHdpdGggemVyb2luZyB0aGUgY29udGFpbmluZyBtb2RlIHJlbGV2YW5jZS5cbiAgICAvLyBVc2VjYXNlIGluIHBvaW50IGlzIE1hcmtkb3duIHRoYXQgYWxsb3dzIFhNTCBldmVyeXdoZXJlIGFuZCBtYWtlcyBldmVyeVxuICAgIC8vIFhNTCBzbmlwcGV0IHRvIGhhdmUgYSBtdWNoIGxhcmdlciBNYXJrZG93biBzY29yZS5cbiAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgIHJlbGV2YW5jZSArPSBzdWJ2YWx1ZS5yZWxldmFuY2VcbiAgICB9XG5cbiAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSA9IHN1YnZhbHVlLnRvcFxuICAgIH1cblxuICAgIHJldHVybiBbYnVpbGQoc3VidmFsdWUubGFuZ3VhZ2UsIHN1YnZhbHVlLnZhbHVlLCB0cnVlKV1cbiAgfVxuXG4gIC8vIFByb2Nlc3Mga2V5d29yZHMuIFJldHVybnMgbm9kZXMuXG4gIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICB2YXIgbm9kZXMgPSBbXVxuICAgIHZhciBsYXN0SW5kZXhcbiAgICB2YXIga2V5d29yZFxuICAgIHZhciBub2RlXG4gICAgdmFyIHN1Ym1hdGNoXG5cbiAgICBpZiAoIXRvcC5rZXl3b3Jkcykge1xuICAgICAgcmV0dXJuIGFkZFRleHQobW9kZUJ1ZmZlciwgbm9kZXMpXG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gMFxuXG4gICAgdG9wLmxleGVtZXNSZS5sYXN0SW5kZXggPSAwXG5cbiAgICBrZXl3b3JkID0gdG9wLmxleGVtZXNSZS5leGVjKG1vZGVCdWZmZXIpXG5cbiAgICB3aGlsZSAoa2V5d29yZCkge1xuICAgICAgYWRkVGV4dChtb2RlQnVmZmVyLnNsaWNlKGxhc3RJbmRleCwga2V5d29yZC5pbmRleCksIG5vZGVzKVxuXG4gICAgICBzdWJtYXRjaCA9IGtleXdvcmRNYXRjaCh0b3AsIGtleXdvcmQpXG5cbiAgICAgIGlmIChzdWJtYXRjaCkge1xuICAgICAgICByZWxldmFuY2UgKz0gc3VibWF0Y2hbMV1cblxuICAgICAgICBub2RlID0gYnVpbGQoc3VibWF0Y2hbMF0sIFtdKVxuXG4gICAgICAgIG5vZGVzLnB1c2gobm9kZSlcblxuICAgICAgICBhZGRUZXh0KGtleXdvcmRbMF0sIG5vZGUuY2hpbGRyZW4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRUZXh0KGtleXdvcmRbMF0sIG5vZGVzKVxuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSB0b3AubGV4ZW1lc1JlLmxhc3RJbmRleFxuICAgICAga2V5d29yZCA9IHRvcC5sZXhlbWVzUmUuZXhlYyhtb2RlQnVmZmVyKVxuICAgIH1cblxuICAgIGFkZFRleHQobW9kZUJ1ZmZlci5zbGljZShsYXN0SW5kZXgpLCBub2RlcylcblxuICAgIHJldHVybiBub2Rlc1xuICB9XG5cbiAgLy8gQWRkIHNpYmxpbmdzLlxuICBmdW5jdGlvbiBhZGRTaWJsaW5ncyhzaWJsaW5ncywgbm9kZXMpIHtcbiAgICB2YXIgbGVuZ3RoID0gc2libGluZ3MubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gLTFcbiAgICB2YXIgc2libGluZ1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHNpYmxpbmcgPSBzaWJsaW5nc1tpbmRleF1cblxuICAgICAgaWYgKHNpYmxpbmcudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIGFkZFRleHQoc2libGluZy52YWx1ZSwgbm9kZXMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5wdXNoKHNpYmxpbmcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGEgdGV4dC5cbiAgZnVuY3Rpb24gYWRkVGV4dCh2YWx1ZSwgbm9kZXMpIHtcbiAgICB2YXIgdGFpbFxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0YWlsID0gbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV1cblxuICAgICAgaWYgKHRhaWwgJiYgdGFpbC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgdGFpbC52YWx1ZSArPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMucHVzaChidWlsZFRleHQodmFsdWUpKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xuICB9XG5cbiAgLy8gQnVpbGQgYSB0ZXh0LlxuICBmdW5jdGlvbiBidWlsZFRleHQodmFsdWUpIHtcbiAgICByZXR1cm4ge3R5cGU6ICd0ZXh0JywgdmFsdWU6IHZhbHVlfVxuICB9XG5cbiAgLy8gQnVpbGQgYSBzcGFuLlxuICBmdW5jdGlvbiBidWlsZChuYW1lLCBjb250ZW50cywgbm9QcmVmaXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgICAgdGFnTmFtZTogJ3NwYW4nLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBjbGFzc05hbWU6IFsobm9QcmVmaXggPyAnJyA6IHByZWZpeCkgKyBuYW1lXVxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBjb250ZW50c1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmaXJzdCB3b3JkIGluIGBrZXl3b3Jkc2AgaXMgYSBrZXl3b3JkLlxuICBmdW5jdGlvbiBrZXl3b3JkTWF0Y2gobW9kZSwga2V5d29yZHMpIHtcbiAgICB2YXIga2V5d29yZCA9IGtleXdvcmRzWzBdXG5cbiAgICBpZiAobGFuZ3VhZ2Vba2V5SW5zZW5zaXRpdmVdKSB7XG4gICAgICBrZXl3b3JkID0ga2V5d29yZC50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIG93bi5jYWxsKG1vZGUua2V5d29yZHMsIGtleXdvcmQpICYmIG1vZGUua2V5d29yZHNba2V5d29yZF1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIGBsZXhlbWVgIGVuZHMgYG1vZGVgLlxuICBmdW5jdGlvbiBlbmRPZk1vZGUobW9kZSwgbGV4ZW1lKSB7XG4gICAgaWYgKHRlc3QobW9kZS5lbmRSZSwgbGV4ZW1lKSkge1xuICAgICAgd2hpbGUgKG1vZGUuZW5kc1BhcmVudCAmJiBtb2RlLnBhcmVudCkge1xuICAgICAgICBtb2RlID0gbW9kZS5wYXJlbnRcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vZGVcbiAgICB9XG5cbiAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCkge1xuICAgICAgcmV0dXJuIGVuZE9mTW9kZShtb2RlLnBhcmVudCwgbGV4ZW1lKVxuICAgIH1cbiAgfVxuXG4gIC8vIEV4aXQgdGhlIGN1cnJlbnQgY29udGV4dC5cbiAgZnVuY3Rpb24gcG9wKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gcmVtb3ZlZCBpbiBobGpzIDkuMyAqL1xuICAgIGN1cnJlbnRDaGlsZHJlbiA9IHN0YWNrLnBvcCgpIHx8IGNoaWxkcmVuXG4gIH1cbn1cblxuLy8gQ29tcGlsZSBhIGxhbmd1YWdlLlxuZnVuY3Rpb24gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKSB7XG4gIGNvbXBpbGVNb2RlKGxhbmd1YWdlKVxuXG4gIC8vIENvbXBpbGUgYSBsYW5ndWFnZSBtb2RlLCBvcHRpb25hbGx5IHdpdGggYSBwYXJlbnQuXG4gIGZ1bmN0aW9uIGNvbXBpbGVNb2RlKG1vZGUsIHBhcmVudCkge1xuICAgIGlmIChtb2RlLmNvbXBpbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBtb2RlLmNvbXBpbGVkID0gdHJ1ZVxuXG4gICAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzXG5cbiAgICBpZiAobW9kZS5rZXl3b3Jkcykge1xuICAgICAgbW9kZS5rZXl3b3JkcyA9IGNvbXBpbGVLZXl3b3Jkcyhtb2RlLmtleXdvcmRzLCBsYW5ndWFnZVtrZXlJbnNlbnNpdGl2ZV0pXG4gICAgfVxuXG4gICAgbW9kZS5sZXhlbWVzUmUgPSBsYW5nUmUobW9kZS5sZXhlbWVzIHx8IC9cXHcrLywgdHJ1ZSlcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGlmIChtb2RlLmJlZ2luS2V5d29yZHMpIHtcbiAgICAgICAgbW9kZS5iZWdpbiA9XG4gICAgICAgICAgJ1xcXFxiKCcgKyBtb2RlLmJlZ2luS2V5d29yZHMuc3BsaXQoc3BhY2UpLmpvaW4odmVydGljYWxCYXIpICsgJylcXFxcYidcbiAgICAgIH1cblxuICAgICAgaWYgKCFtb2RlLmJlZ2luKSB7XG4gICAgICAgIG1vZGUuYmVnaW4gPSAvXFxCfFxcYi9cbiAgICAgIH1cblxuICAgICAgbW9kZS5iZWdpblJlID0gbGFuZ1JlKG1vZGUuYmVnaW4pXG5cbiAgICAgIGlmIChtb2RlLmVuZFNhbWVBc0JlZ2luKSB7XG4gICAgICAgIG1vZGUuZW5kID0gbW9kZS5iZWdpblxuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGUuZW5kICYmICFtb2RlLmVuZHNXaXRoUGFyZW50KSB7XG4gICAgICAgIG1vZGUuZW5kID0gL1xcQnxcXGIvXG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlLmVuZCkge1xuICAgICAgICBtb2RlLmVuZFJlID0gbGFuZ1JlKG1vZGUuZW5kKVxuICAgICAgfVxuXG4gICAgICBtb2RlW2tleVRlcm1pbmF0b3JFbmRdID0gc291cmNlKG1vZGUuZW5kKSB8fCAnJ1xuXG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnRba2V5VGVybWluYXRvckVuZF0pIHtcbiAgICAgICAgbW9kZVtrZXlUZXJtaW5hdG9yRW5kXSArPVxuICAgICAgICAgIChtb2RlLmVuZCA/IHZlcnRpY2FsQmFyIDogJycpICsgcGFyZW50W2tleVRlcm1pbmF0b3JFbmRdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUuaWxsZWdhbCkge1xuICAgICAgbW9kZS5pbGxlZ2FsUmUgPSBsYW5nUmUobW9kZS5pbGxlZ2FsKVxuICAgIH1cblxuICAgIGlmIChtb2RlLnJlbGV2YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb2RlLnJlbGV2YW5jZSA9IDFcbiAgICB9XG5cbiAgICBtb2RlLmNvbnRhaW5zID0gY29tcGlsZUNvbnRhaW5zKG1vZGUuY29udGFpbnMgfHwgW10sIG1vZGUpXG5cbiAgICBpZiAobW9kZS5zdGFydHMpIHtcbiAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpXG4gICAgfVxuXG4gICAgbW9kZS50ZXJtaW5hdG9ycyA9IGJ1aWxkTW9kZVJlZ2V4KG1vZGUpXG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlQ29udGFpbnMoY29udGFpbnMsIG1vZGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY29udGFpbnMubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gLTFcbiAgICB2YXIgY29udGFpbmVkXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY29udGFpbmVkID0gY29udGFpbnNbaW5kZXhdXG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFxuICAgICAgICBleHBhbmRPckNsb25lTW9kZShjb250YWluZWQgPT09ICdzZWxmJyA/IG1vZGUgOiBjb250YWluZWQpXG4gICAgICApXG4gICAgfVxuXG4gICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjb21waWxlTW9kZShyZXN1bHRbaW5kZXhdLCBtb2RlKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHt9XG4gICAgdmFyIGV4cHJlc3Npb25cbiAgICB2YXIgcmVnZXhlcyA9IFtdXG4gICAgdmFyIG1hdGNoZXIgPSB7fVxuICAgIHZhciBtYXRjaEF0ID0gMVxuICAgIHZhciB0ZXJtXG4gICAgdmFyIHZhbHVlcyA9IG1vZGUuY29udGFpbnNcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHRlcm1pbmF0b3JzID0gW11cblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB0ZXJtID0gdmFsdWVzW2luZGV4XVxuXG4gICAgICBhZGRSdWxlKFxuICAgICAgICB0ZXJtLFxuICAgICAgICB0ZXJtLmJlZ2luS2V5d29yZHMgPyAnXFxcXC4/KD86JyArIHRlcm0uYmVnaW4gKyAnKVxcXFwuPycgOiB0ZXJtLmJlZ2luXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKG1vZGVba2V5VGVybWluYXRvckVuZF0pIHtcbiAgICAgIGFkZFJ1bGUoJ2VuZCcsIG1vZGVba2V5VGVybWluYXRvckVuZF0pXG4gICAgfVxuXG4gICAgaWYgKG1vZGUuaWxsZWdhbCkge1xuICAgICAgYWRkUnVsZSgnaWxsZWdhbCcsIG1vZGUuaWxsZWdhbClcbiAgICB9XG5cbiAgICBsZW5ndGggPSByZWdleGVzLmxlbmd0aFxuICAgIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB0ZXJtaW5hdG9yc1tpbmRleF0gPSByZWdleGVzW2luZGV4XVsxXVxuICAgIH1cblxuICAgIGV4cHJlc3Npb24gPSBsYW5nUmUoam9pblJlKHRlcm1pbmF0b3JzLCB2ZXJ0aWNhbEJhciksIHRydWUpXG5cbiAgICBtYXRjaGVyID0ge2xhc3RJbmRleDogMCwgZXhlYzogZXhlY31cblxuICAgIHJldHVybiBtYXRjaGVyXG5cbiAgICBmdW5jdGlvbiBleGVjKHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoXG4gICAgICB2YXIgaW5kZXhcbiAgICAgIHZhciBydWxlXG4gICAgICB2YXIgbWF0Y2hcbiAgICAgIHZhciBzdWJtYXRjaFxuXG4gICAgICBpZiAocmVnZXhlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG5cbiAgICAgIGV4cHJlc3Npb24ubGFzdEluZGV4ID0gbWF0Y2hlci5sYXN0SW5kZXhcbiAgICAgIG1hdGNoID0gZXhwcmVzc2lvbi5leGVjKHZhbHVlKVxuXG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIGxlbmd0aCA9IG1hdGNoLmxlbmd0aFxuICAgICAgaW5kZXggPSAtMVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBzdWJtYXRjaCA9IG1hdGNoW2luZGV4XVxuXG4gICAgICAgIGlmIChzdWJtYXRjaCAhPT0gdW5kZWZpbmVkICYmIGluZGljZXNbaW5kZXhdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBydWxlID0gaW5kaWNlc1tpbmRleF1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElsbGVnYWwgb3IgZW5kIG1hdGNoXG4gICAgICBpZiAodHlwZW9mIHJ1bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1hdGNoLnR5cGUgPSBydWxlXG4gICAgICAgIG1hdGNoLmV4dHJhID0gW21vZGUuaWxsZWdhbCwgbW9kZS50ZXJtaW5hdG9yX2VuZF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoLnR5cGUgPSAnYmVnaW4nXG4gICAgICAgIG1hdGNoLnJ1bGUgPSBydWxlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXRjaFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFJ1bGUocnVsZSwgcmVnZXgpIHtcbiAgICAgIGluZGljZXNbbWF0Y2hBdF0gPSBydWxlXG4gICAgICByZWdleGVzLnB1c2goW3J1bGUsIHJlZ2V4XSlcbiAgICAgIG1hdGNoQXQgKz0gbmV3IFJlZ0V4cChyZWdleC50b1N0cmluZygpICsgdmVydGljYWxCYXIpLmV4ZWMoJycpLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGpvaW5SZShyZWdleGVzLCBzZXBhcmF0b3IpIHtcbiAgICB2YXIgYmFja3JlZmVyZW5jZVJlID0gL1xcWyg/OlteXFxcXFxcXV18XFxcXC4pKlxcXXxcXChcXD8/fFxcXFwoWzEtOV1cXGQqKXxcXFxcLi9cbiAgICB2YXIgY2FwdHVyZXMgPSAwXG4gICAgdmFyIHJlc3VsdCA9ICcnXG4gICAgdmFyIGxlbmd0aCA9IHJlZ2V4ZXMubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gLTFcbiAgICB2YXIgcmVnZXhcbiAgICB2YXIgb2Zmc2V0XG4gICAgdmFyIGV4cHJlc3Npb25cbiAgICB2YXIgbWF0Y2hcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZWdleCA9IHJlZ2V4ZXNbaW5kZXhdXG4gICAgICBleHByZXNzaW9uID0gc291cmNlKHJlZ2V4KVxuICAgICAgY2FwdHVyZXMgKz0gMVxuICAgICAgb2Zmc2V0ID0gY2FwdHVyZXNcblxuICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3JcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IHBhcmVuT3BlblxuXG4gICAgICB3aGlsZSAoZXhwcmVzc2lvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1hdGNoID0gYmFja3JlZmVyZW5jZVJlLmV4ZWMoZXhwcmVzc2lvbilcblxuICAgICAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZXhwcmVzc2lvblxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgKz0gZXhwcmVzc2lvbi5zbGljZSgwLCBtYXRjaC5pbmRleClcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uc2xpY2UobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpXG5cbiAgICAgICAgaWYgKG1hdGNoWzBdWzBdID09PSBiYWNrc2xhc2ggJiYgbWF0Y2hbMV0pIHtcbiAgICAgICAgICAvLyBBZGp1c3QgdGhlIGJhY2tyZWZlcmVuY2UuXG4gICAgICAgICAgcmVzdWx0ICs9IGJhY2tzbGFzaCArIFN0cmluZyhOdW1iZXIobWF0Y2hbMV0pICsgb2Zmc2V0KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBtYXRjaFswXVxuXG4gICAgICAgICAgaWYgKG1hdGNoWzBdID09PSBwYXJlbk9wZW4pIHtcbiAgICAgICAgICAgIGNhcHR1cmVzKytcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IHBhcmVuQ2xvc2VcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBDcmVhdGUgYSByZWdleCBmb3IgYHZhbHVlYC5cbiAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgIHNvdXJjZSh2YWx1ZSksXG4gICAgICAnbScgKyAobGFuZ3VhZ2Vba2V5SW5zZW5zaXRpdmVdID8gJ2knIDogJycpICsgKGdsb2JhbCA/ICdnJyA6ICcnKVxuICAgIClcbiAgfVxuXG4gIC8vIEdldCB0aGUgc291cmNlIG9mIGFuIGV4cHJlc3Npb24gb3Igc3RyaW5nLlxuICBmdW5jdGlvbiBzb3VyY2UocmUpIHtcbiAgICByZXR1cm4gKHJlICYmIHJlLnNvdXJjZSkgfHwgcmVcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21waWxlS2V5d29yZHModmFsdWVzLCBjYXNlSW5zZW5zaXRpdmUpIHtcbiAgdmFyIGNvbXBpbGVkID0ge31cbiAgdmFyIGtleVxuXG4gIGlmICh0eXBlb2YgdmFsdWVzID09PSAnc3RyaW5nJykge1xuICAgIGZsYXR0ZW4oJ2tleXdvcmQnLCB2YWx1ZXMpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChrZXkgaW4gdmFsdWVzKSB7XG4gICAgICBmbGF0dGVuKGtleSwgdmFsdWVzW2tleV0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbXBpbGVkXG5cbiAgZnVuY3Rpb24gZmxhdHRlbihrZXksIHZhbHVlKSB7XG4gICAgdmFyIHZhbCA9IGNhc2VJbnNlbnNpdGl2ZSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZVxuICAgIGFsbChrZXksIHZhbC5zcGxpdChzcGFjZSkpXG4gIH1cblxuICBmdW5jdGlvbiBhbGwoa2V5LCB2YWx1ZXMpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIHBhaXJcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBwYWlyID0gdmFsdWVzW2luZGV4XS5zcGxpdCh2ZXJ0aWNhbEJhcilcbiAgICAgIGNvbXBpbGVkW3BhaXJbMF1dID0gW2tleSwgTnVtYmVyKHBhaXJbMV0pIHx8IGNvbW1vbihwYWlyWzBdKSA/IDAgOiAxXVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb21tb24odmFsdWUpIHtcbiAgcmV0dXJuIGNvbW1vbktleXdvcmRzLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IC0xXG59XG5cbmZ1bmN0aW9uIGV4cGFuZE9yQ2xvbmVNb2RlKG1vZGUpIHtcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcbiAgdmFyIHZhcmlhbnRzXG4gIHZhciByZXN1bHRcblxuICBpZiAobW9kZS52YXJpYW50cyAmJiAhbW9kZVtrZXlDYWNoZWRWYXJpYW50c10pIHtcbiAgICB2YXJpYW50cyA9IG1vZGUudmFyaWFudHNcbiAgICBsZW5ndGggPSB2YXJpYW50cy5sZW5ndGhcbiAgICBpbmRleCA9IC0xXG4gICAgcmVzdWx0ID0gW11cblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaW5oZXJpdChtb2RlLCB7dmFyaWFudHM6IG51bGx9LCB2YXJpYW50c1tpbmRleF0pXG4gICAgfVxuXG4gICAgbW9kZVtrZXlDYWNoZWRWYXJpYW50c10gPSByZXN1bHRcbiAgfVxuXG4gIC8vIEV4cGFuZC5cbiAgaWYgKG1vZGUuY2FjaGVkX3ZhcmlhbnRzKSByZXR1cm4gbW9kZS5jYWNoZWRfdmFyaWFudHNcblxuICAvLyBDbG9uZS5cbiAgaWYgKGRlcGVuZGVuY3lPblBhcmVudChtb2RlKSlcbiAgICByZXR1cm4gW2luaGVyaXQobW9kZSwge3N0YXJ0czogbW9kZS5zdGFydHMgPyBpbmhlcml0KG1vZGUuc3RhcnRzKSA6IG51bGx9KV1cblxuICByZXR1cm4gW21vZGVdXG59XG5cbmZ1bmN0aW9uIGRlcGVuZGVuY3lPblBhcmVudChtb2RlKSB7XG4gIHJldHVybiBtb2RlID8gbW9kZS5lbmRzV2l0aFBhcmVudCB8fCBkZXBlbmRlbmN5T25QYXJlbnQobW9kZS5zdGFydHMpIDogZmFsc2Vcbn1cblxuLy8gTm9ybWFsaXplIGEgc3ludGF4IHJlc3VsdC5cbmZ1bmN0aW9uIG5vcm1hbGl6ZShyZXN1bHQpIHtcbiAgcmV0dXJuIHtcbiAgICByZWxldmFuY2U6IHJlc3VsdC5yZWxldmFuY2UgfHwgMCxcbiAgICBsYW5ndWFnZTogcmVzdWx0Lmxhbmd1YWdlIHx8IG51bGwsXG4gICAgdmFsdWU6IHJlc3VsdC52YWx1ZSB8fCBbXVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGBleHByZXNzaW9uYCBtYXRjaGVzIGBsZXhlbWVgLlxuZnVuY3Rpb24gdGVzdChleHByZXNzaW9uLCBsZXhlbWUpIHtcbiAgdmFyIG1hdGNoID0gZXhwcmVzc2lvbiAmJiBleHByZXNzaW9uLmV4ZWMobGV4ZW1lKVxuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2guaW5kZXggPT09IDBcbn1cblxuLy8gR2V0IGEgbGFuZ3VhZ2UgYnkgYG5hbWVgLlxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2UobmFtZSkge1xuICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG5cbiAgLy8g0L7QsdGJ0LjQuSDQv9Cw0YLRgtC10YDQvSDQtNC70Y8g0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC+0LJcbiAgdmFyIFVOREVSU0NPUkVfSURFTlRfUkUgPSAnW0EtWmEtetCQLdCv0LAt0Y/RkdCBX11bQS1aYS160JAt0K/QsC3Rj9GR0IFfMC05XSsnO1xuICBcbiAgLy8gdjcg0YPQvdC40LrQsNC70YzQvdGL0LUg0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwLCDQvtGC0YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQsiB2OCA9PT4ga2V5d29yZFxuICB2YXIgdjdfa2V5d29yZHMgPVxuICAn0LTQsNC70LXQtSAnO1xuXG4gIC8vIHY4INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCA9PT4ga2V5d29yZFxuICB2YXIgdjhfa2V5d29yZHMgPVxuICAn0LLQvtC30LLRgNCw0YIg0LLRi9C30LLQsNGC0YzQuNGB0LrQu9GO0YfQtdC90LjQtSDQstGL0L/QvtC70L3QuNGC0Ywg0LTQu9GPINC10YHQu9C4INC4INC40Lcg0LjQu9C4INC40L3QsNGH0LUg0LjQvdCw0YfQtdC10YHQu9C4INC40YHQutC70Y7Rh9C10L3QuNC1INC60LDQttC00L7Qs9C+INC60L7QvdC10YbQtdGB0LvQuCAnICtcbiAgJ9C60L7QvdC10YbQv9C+0L/Ri9GC0LrQuCDQutC+0L3QtdGG0YbQuNC60LvQsCDQvdC1INC90L7QstGL0Lkg0L/QtdGA0LXQudGC0Lgg0L/QtdGA0LXQvCDQv9C+INC/0L7QutCwINC/0L7Qv9GL0YLQutCwINC/0YDQtdGA0LLQsNGC0Ywg0L/RgNC+0LTQvtC70LbQuNGC0Ywg0YLQvtCz0LTQsCDRhtC40LrQuyDRjdC60YHQv9C+0YDRgiAnO1xuXG4gIC8vIGtleXdvcmQgOiDQutC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LBcbiAgdmFyIEtFWVdPUkQgPSB2N19rZXl3b3JkcyArIHY4X2tleXdvcmRzO1xuICBcbiAgLy8gdjcg0YPQvdC40LrQsNC70YzQvdGL0LUg0LTQuNGA0LXQutGC0LjQstGLLCDQvtGC0YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQsiB2OCA9PT4gbWV0YS1rZXl3b3JkXG4gIHZhciB2N19tZXRhX2tleXdvcmRzID1cbiAgJ9C30LDQs9GA0YPQt9C40YLRjNC40LfRhNCw0LnQu9CwICc7XG5cbiAgLy8gdjgg0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINCyINC40L3RgdGC0YDRg9C60YbQuNGP0YUg0L/RgNC10L/RgNC+0YbQtdGB0YHQvtGA0LAsINC00LjRgNC10LrRgtC40LLQsNGFINC60L7QvNC/0LjQu9GP0YbQuNC4LCDQsNC90L3QvtGC0LDRhtC40Y/RhSA9PT4gbWV0YS1rZXl3b3JkXG4gIHZhciB2OF9tZXRhX2tleXdvcmRzID1cbiAgJ9Cy0LXQsdC60LvQuNC10L3RgiDQstC80LXRgdGC0L4g0LLQvdC10YjQvdC10LXRgdC+0LXQtNC40L3QtdC90LjQtSDQutC70LjQtdC90YIg0LrQvtC90LXRhtC+0LHQu9Cw0YHRgtC4INC80L7QsdC40LvRjNC90L7QtdC/0YDQuNC70L7QttC10L3QuNC10LrQu9C40LXQvdGCINC80L7QsdC40LvRjNC90L7QtdC/0YDQuNC70L7QttC10L3QuNC10YHQtdGA0LLQtdGAICcgK1xuICAn0L3QsNC60LvQuNC10L3RgtC1INC90LDQutC70LjQtdC90YLQtdC90LDRgdC10YDQstC10YDQtSDQvdCw0LrQu9C40LXQvdGC0LXQvdCw0YHQtdGA0LLQtdGA0LXQsdC10LfQutC+0L3RgtC10LrRgdGC0LAg0L3QsNGB0LXRgNCy0LXRgNC1INC90LDRgdC10YDQstC10YDQtdCx0LXQt9C60L7QvdGC0LXQutGB0YLQsCDQvtCx0LvQsNGB0YLRjCDQv9C10YDQtdC0ICcgK1xuICAn0L/QvtGB0LvQtSDRgdC10YDQstC10YAg0YLQvtC70YHRgtGL0LnQutC70LjQtdC90YLQvtCx0YvRh9C90L7QtdC/0YDQuNC70L7QttC10L3QuNC1INGC0L7Qu9GB0YLRi9C50LrQu9C40LXQvdGC0YPQv9GA0LDQstC70Y/QtdC80L7QtdC/0YDQuNC70L7QttC10L3QuNC1INGC0L7QvdC60LjQudC60LvQuNC10L3RgiAnO1xuXG4gIC8vIG1ldGEta2V5d29yZCA6INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDQsiDQuNC90YHRgtGA0YPQutGG0LjRj9GFINC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwLCDQtNC40YDQtdC60YLQuNCy0LDRhSDQutC+0LzQv9C40LvRj9GG0LjQuCwg0LDQvdC90L7RgtCw0YbQuNGP0YVcbiAgdmFyIE1FVEFLRVlXT1JEID0gdjdfbWV0YV9rZXl3b3JkcyArIHY4X21ldGFfa2V5d29yZHM7XG5cbiAgLy8gdjcg0YHQuNGB0YLQtdC80L3Ri9C1INC60L7QvdGB0YLQsNC90YLRiyA9PT4gYnVpbHRfaW5cbiAgdmFyIHY3X3N5c3RlbV9jb25zdGFudHMgPVxuICAn0YDQsNC30LTQtdC70LjRgtC10LvRjNGB0YLRgNCw0L3QuNGGINGA0LDQt9C00LXQu9C40YLQtdC70YzRgdGC0YDQvtC6INGB0LjQvNCy0L7Qu9GC0LDQsdGD0LvRj9GG0LjQuCAnO1xuICBcbiAgLy8gdjcg0YPQvdC40LrQsNC70YzQvdGL0LUg0LzQtdGC0L7QtNGLINCz0LvQvtCx0LDQu9GM0L3QvtCz0L4g0LrQvtC90YLQtdC60YHRgtCwLCDQvtGC0YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQsiB2OCA9PT4gYnVpbHRfaW5cbiAgdmFyIHY3X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgPVxuICAnYW5zaXRvb2VtIG9lbXRvYW5zaSDQstCy0LXRgdGC0LjQstC40LTRgdGD0LHQutC+0L3RgtC+INCy0LLQtdGB0YLQuNC/0LXRgNC10YfQuNGB0LvQtdC90LjQtSDQstCy0LXRgdGC0LjQv9C10YDQuNC+0LQg0LLQstC10YHRgtC40L/Qu9Cw0L3RgdGH0LXRgtC+0LIg0LLRi9Cx0YDQsNC90L3Ri9C50L/Qu9Cw0L3RgdGH0LXRgtC+0LIgJyArXG4gICfQtNCw0YLQsNCz0L7QtCDQtNCw0YLQsNC80LXRgdGP0YYg0LTQsNGC0LDRh9C40YHQu9C+INC30LDQs9C+0LvQvtCy0L7QutGB0LjRgdGC0LXQvNGLINC30L3QsNGH0LXQvdC40LXQstGB0YLRgNC+0LrRgyDQt9C90LDRh9C10L3QuNC10LjQt9GB0YLRgNC+0LrQuCDQutCw0YLQsNC70L7Qs9C40LEg0LrQsNGC0LDQu9C+0LPQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJyArXG4gICfQutC+0LTRgdC40LzQsiDQutC+0L3Qs9C+0LTQsCDQutC+0L3QtdGG0L/QtdGA0LjQvtC00LDQsdC4INC60L7QvdC10YbRgNCw0YHRgdGH0LjRgtCw0L3QvdC+0LPQvtC/0LXRgNC40L7QtNCw0LHQuCDQutC+0L3QtdGG0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0LjQvdGC0LXRgNCy0LDQu9CwINC60L7QvdC60LLQsNGA0YLQsNC70LAg0LrQvtC90LzQtdGB0Y/RhtCwICcgK1xuICAn0LrQvtC90L3QtdC00LXQu9C4INC70L7QsyDQu9C+0LMxMCDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LXQutC+0LvQuNGH0LXRgdGC0LLQvtGB0YPQsdC60L7QvdGC0L4g0L3QsNC30LLQsNC90LjQtdC40L3RgtC10YDRhNC10LnRgdCwINC90LDQt9Cy0LDQvdC40LXQvdCw0LHQvtGA0LDQv9GA0LDQsiDQvdCw0LfQvdCw0YfQuNGC0YzQstC40LQgJyArXG4gICfQvdCw0LfQvdCw0YfQuNGC0YzRgdGH0LXRgiDQvdCw0LnRgtC40YHRgdGL0LvQutC4INC90LDRh9Cw0LvQvtC/0LXRgNC40L7QtNCw0LHQuCDQvdCw0YfQsNC70L7RgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7QuNC90YLQtdGA0LLQsNC70LAg0L3QsNGH0LPQvtC00LAg0L3QsNGH0LrQstCw0YDRgtCw0LvQsCDQvdCw0YfQvNC10YHRj9GG0LAgJyArXG4gICfQvdCw0YfQvdC10LTQtdC70Lgg0L3QvtC80LXRgNC00L3Rj9Cz0L7QtNCwINC90L7QvNC10YDQtNC90Y/QvdC10LTQtdC70Lgg0L3QvtC80LXRgNC90LXQtNC10LvQuNCz0L7QtNCwINC+0LHRgNCw0LHQvtGC0LrQsNC+0LbQuNC00LDQvdC40Y8g0L7RgdC90L7QstC90L7QudC20YPRgNC90LDQu9GA0LDRgdGH0LXRgtC+0LIgJyArXG4gICfQvtGB0L3QvtCy0L3QvtC50L/Qu9Cw0L3RgdGH0LXRgtC+0LIg0L7RgdC90L7QstC90L7QudGP0LfRi9C6INC+0YfQuNGB0YLQuNGC0YzQvtC60L3QvtGB0L7QvtCx0YnQtdC90LjQuSDQv9C10YDQuNC+0LTRgdGC0YAg0L/QvtC70YPRh9C40YLRjNCy0YDQtdC80Y/RgtCwINC/0L7Qu9GD0YfQuNGC0YzQtNCw0YLRg9GC0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LTQvtC60YPQvNC10L3RgtGC0LAg0L/QvtC70YPRh9C40YLRjNC30L3QsNGH0LXQvdC40Y/QvtGC0LHQvtGA0LAg0L/QvtC70YPRh9C40YLRjNC/0L7Qt9C40YbQuNGO0YLQsCDQv9C+0LvRg9GH0LjRgtGM0L/Rg9GB0YLQvtC10LfQvdCw0YfQtdC90LjQtSDQv9C+0LvRg9GH0LjRgtGM0YLQsCAnICtcbiAgJ9C/0YDQtdGE0LjQutGB0LDQstGC0L7QvdGD0LzQtdGA0LDRhtC40Lgg0L/RgNC+0L/QuNGB0Ywg0L/Rg9GB0YLQvtC10LfQvdCw0YfQtdC90LjQtSDRgNCw0LfQvCDRgNCw0LfQvtCx0YDQsNGC0YzQv9C+0LfQuNGG0LjRjtC00L7QutGD0LzQtdC90YLQsCDRgNCw0YHRgdGH0LjRgtCw0YLRjNGA0LXQs9C40YHRgtGA0YvQvdCwICcgK1xuICAn0YDQsNGB0YHRh9C40YLQsNGC0YzRgNC10LPQuNGB0YLRgNGL0L/QviDRgdC40LzQsiDRgdC+0LfQtNCw0YLRjNC+0LHRitC10LrRgiDRgdGC0LDRgtGD0YHQstC+0LfQstGA0LDRgtCwINGB0YLRgNC60L7Qu9C40YfQtdGB0YLQstC+0YHRgtGA0L7QuiDRgdGE0L7RgNC80LjRgNC+0LLQsNGC0YzQv9C+0LfQuNGG0LjRjtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GB0YfQtdGC0L/QvtC60L7QtNGDINGC0LXQutGD0YnQtdC10LLRgNC10LzRjyDRgtC40L/Qt9C90LDRh9C10L3QuNGPINGC0LjQv9C30L3QsNGH0LXQvdC40Y/RgdGC0YAg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgtCw0L3QsCDRg9GB0YLQsNC90L7QstC40YLRjNGC0LDQv9C+INGE0LjQutGB0YjQsNCx0LvQvtC9INGI0LDQsdC70L7QvSAnO1xuICBcbiAgLy8gdjgg0LzQtdGC0L7QtNGLINCz0LvQvtCx0LDQu9GM0L3QvtCz0L4g0LrQvtC90YLQtdC60YHRgtCwID09PiBidWlsdF9pblxuICB2YXIgdjhfZ2xvYmFsX2NvbnRleHRfbWV0aG9kcyA9XG4gICdhY29zIGFzaW4gYXRhbiBiYXNlNjTQt9C90LDRh9C10L3QuNC1IGJhc2U2NNGB0YLRgNC+0LrQsCBjb3MgZXhwIGxvZyBsb2cxMCBwb3cgc2luIHNxcnQgdGFuIHhtbNC30L3QsNGH0LXQvdC40LUgeG1s0YHRgtGA0L7QutCwICcgK1xuICAneG1s0YLQuNC/IHhtbNGC0LjQv9C30L3RhyDQsNC60YLQuNCy0L3QvtC10L7QutC90L4g0LHQtdC30L7Qv9Cw0YHQvdGL0LnRgNC10LbQuNC8INCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvNGA0LDQt9C00LXQu9C10L3QuNGP0LTQsNC90L3Ri9GFINCx0YPQu9C10LLQviDQstCy0LXRgdGC0LjQtNCw0YLRgyDQstCy0LXRgdGC0LjQt9C90LDRh9C10L3QuNC1ICcgK1xuICAn0LLQstC10YHRgtC40YHRgtGA0L7QutGDINCy0LLQtdGB0YLQuNGH0LjRgdC70L4g0LLQvtC30LzQvtC20L3QvtGB0YLRjNGH0YLQtdC90LjRj3htbCDQstC+0L/RgNC+0YEg0LLQvtGB0YHRgtCw0L3QvtCy0LjRgtGM0LfQvdCw0YfQtdC90LjQtSDQstGA0LXQsyDQstGL0LPRgNGD0LfQuNGC0YzQttGD0YDQvdCw0LvRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0LLRi9C/0L7Qu9C90LjRgtGM0L7QsdGA0LDQsdC+0YLQutGD0L7Qv9C+0LLQtdGJ0LXQvdC40Y8g0LLRi9C/0L7Qu9C90LjRgtGM0L/RgNC+0LLQtdGA0LrRg9C/0YDQsNCy0LTQvtGB0YLRg9C/0LAg0LLRi9GH0LjRgdC70LjRgtGMINCz0L7QtCDQtNCw0L3QvdGL0LXRhNC+0YDQvNGL0LLQt9C90LDRh9C10L3QuNC1INC00LDRgtCwINC00LXQvdGMINC00LXQvdGM0LPQvtC00LAgJyArXG4gICfQtNC10L3RjNC90LXQtNC10LvQuCDQtNC+0LHQsNCy0LjRgtGM0LzQtdGB0Y/RhiDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0YLRjNC00LDQvdC90YvQtdC00LvRj9GA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LfQsNCx0LvQvtC60LjRgNC+0LLQsNGC0YzRgNCw0LHQvtGC0YPQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LfQsNCy0LXRgNGI0LjRgtGM0YDQsNCx0L7RgtGD0YHQuNGB0YLQtdC80YsgJyArXG4gICfQt9Cw0LPRgNGD0LfQuNGC0YzQstC90LXRiNC90Y7RjtC60L7QvNC/0L7QvdC10L3RgtGDINC30LDQutGA0YvRgtGM0YHQv9GA0LDQstC60YMg0LfQsNC/0LjRgdCw0YLRjGpzb24g0LfQsNC/0LjRgdCw0YLRjHhtbCDQt9Cw0L/QuNGB0LDRgtGM0LTQsNGC0YNqc29uINC30LDQv9C40YHRjNC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C30LDQv9C+0LvQvdC40YLRjNC30L3QsNGH0LXQvdC40Y/RgdCy0L7QudGB0YLQsiDQt9Cw0L/RgNC+0YHQuNGC0YzRgNCw0LfRgNC10YjQtdC90LjQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQt9Cw0L/Rg9GB0YLQuNGC0YzQv9GA0LjQu9C+0LbQtdC90LjQtSDQt9Cw0L/Rg9GB0YLQuNGC0YzRgdC40YHRgtC10LzRgyDQt9Cw0YTQuNC60YHQuNGA0L7QstCw0YLRjNGC0YDQsNC90LfQsNC60YbQuNGOICcgK1xuICAn0LfQvdCw0YfQtdC90LjQtdCy0LTQsNC90L3Ri9C10YTQvtGA0LzRiyDQt9C90LDRh9C10L3QuNC10LLRgdGC0YDQvtC60YPQstC90YPRgtGAINC30L3QsNGH0LXQvdC40LXQstGE0LDQudC7INC30L3QsNGH0LXQvdC40LXQt9Cw0L/QvtC70L3QtdC90L4g0LfQvdCw0YfQtdC90LjQtdC40LfRgdGC0YDQvtC60LjQstC90YPRgtGAINC30L3QsNGH0LXQvdC40LXQuNC30YTQsNC50LvQsCAnICtcbiAgJ9C40Ld4bWzRgtC40L/QsCDQuNC80L/QvtGA0YLQvNC+0LTQtdC70Lh4ZHRvINC40LzRj9C60L7QvNC/0YzRjtGC0LXRgNCwINC40LzRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQuNC90LjRhtC40LDQu9C40LfQuNGA0L7QstCw0YLRjNC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C10LTQsNC90L3Ri9C1INC40L3RhNC+0YDQvNCw0YbQuNGP0L7QsdC+0YjQuNCx0LrQtSAnICtcbiAgJ9C60LDRgtCw0LvQvtCz0LHQuNCx0LvQuNC+0YLQtdC60LjQvNC+0LHQuNC70YzQvdC+0LPQvtGD0YHRgtGA0L7QudGB0YLQstCwINC60LDRgtCw0LvQvtCz0LLRgNC10LzQtdC90L3Ri9GF0YTQsNC50LvQvtCyINC60LDRgtCw0LvQvtCz0LTQvtC60YPQvNC10L3RgtC+0LIg0LrQsNGC0LDQu9C+0LPQv9GA0L7Qs9GA0LDQvNC80Ysg0LrQvtC00LjRgNC+0LLQsNGC0YzRgdGC0YDQvtC60YMgJyArXG4gICfQutC+0LTQu9C+0LrQsNC70LjQt9Cw0YbQuNC40LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC60L7QtNGB0LjQvNCy0L7Qu9CwINC60L7QvNCw0L3QtNCw0YHQuNGB0YLQtdC80Ysg0LrQvtC90LXRhtCz0L7QtNCwINC60L7QvdC10YbQtNC90Y8g0LrQvtC90LXRhtC60LLQsNGA0YLQsNC70LAg0LrQvtC90LXRhtC80LXRgdGP0YbQsCDQutC+0L3QtdGG0LzQuNC90YPRgtGLICcgK1xuICAn0LrQvtC90LXRhtC90LXQtNC10LvQuCDQutC+0L3QtdGG0YfQsNGB0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0LHQsNC30YvQtNCw0L3QvdGL0YXQuNC30LzQtdC90LXQvdCw0LTQuNC90LDQvNC40YfQtdGB0LrQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/QuNC30LzQtdC90LXQvdCwINC60L7Qv9C40YDQvtCy0LDRgtGM0LTQsNC90L3Ri9C10YTQvtGA0LzRiyAnICtcbiAgJ9C60L7Qv9C40YDQvtCy0LDRgtGM0YTQsNC50Lsg0LrRgNCw0YLQutC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC+0YjQuNCx0LrQuCDQu9C10LIg0LzQsNC60YEg0LzQtdGB0YLQvdC+0LXQstGA0LXQvNGPINC80LXRgdGP0YYg0LzQuNC9INC80LjQvdGD0YLQsCDQvNC+0L3QvtC/0L7Qu9GM0L3Ri9C50YDQtdC20LjQvCDQvdCw0LnRgtC4ICcgK1xuICAn0L3QsNC50YLQuNC90LXQtNC+0L/Rg9GB0YLQuNC80YvQtdGB0LjQvNCy0L7Qu9GLeG1sINC90LDQudGC0LjQvtC60L3QvtC/0L7QvdCw0LLQuNCz0LDRhtC40L7QvdC90L7QudGB0YHRi9C70LrQtSDQvdCw0LnRgtC40L/QvtC80LXRh9C10L3QvdGL0LXQvdCw0YPQtNCw0LvQtdC90LjQtSDQvdCw0LnRgtC40L/QvtGB0YHRi9C70LrQsNC8INC90LDQudGC0LjRhNCw0LnQu9GLICcgK1xuICAn0L3QsNGH0LDQu9C+0LPQvtC00LAg0L3QsNGH0LDQu9C+0LTQvdGPINC90LDRh9Cw0LvQvtC60LLQsNGA0YLQsNC70LAg0L3QsNGH0LDQu9C+0LzQtdGB0Y/RhtCwINC90LDRh9Cw0LvQvtC80LjQvdGD0YLRiyDQvdCw0YfQsNC70L7QvdC10LTQtdC70Lgg0L3QsNGH0LDQu9C+0YfQsNGB0LAg0L3QsNGH0LDRgtGM0LfQsNC/0YDQvtGB0YDQsNC30YDQtdGI0LXQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJyArXG4gICfQvdCw0YfQsNGC0YzQt9Cw0L/Rg9GB0LrQv9GA0LjQu9C+0LbQtdC90LjRjyDQvdCw0YfQsNGC0YzQutC+0L/QuNGA0L7QstCw0L3QuNC10YTQsNC50LvQsCDQvdCw0YfQsNGC0YzQv9C10YDQtdC80LXRidC10L3QuNC10YTQsNC50LvQsCDQvdCw0YfQsNGC0YzQv9C+0LTQutC70Y7Rh9C10L3QuNC10LLQvdC10YjQvdC10LnQutC+0LzQv9C+0L3QtdC90YLRiyAnICtcbiAgJ9C90LDRh9Cw0YLRjNC/0L7QtNC60LvRjtGH0LXQvdC40LXRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10Lkg0L3QsNGH0LDRgtGM0L/QvtC00LrQu9GO0YfQtdC90LjQtdGA0LDRgdGI0LjRgNC10L3QuNGP0YDQsNCx0L7RgtGL0YHRhNCw0LnQu9Cw0LzQuCDQvdCw0YfQsNGC0YzQv9C+0LjRgdC60YTQsNC50LvQvtCyICcgK1xuICAn0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10LrQsNGC0LDQu9C+0LPQsNCy0YDQtdC80LXQvdC90YvRhdGE0LDQudC70L7QsiDQvdCw0YfQsNGC0YzQv9C+0LvRg9GH0LXQvdC40LXQutCw0YLQsNC70L7Qs9Cw0LTQvtC60YPQvNC10L3RgtC+0LIg0L3QsNGH0LDRgtGM0L/QvtC70YPRh9C10L3QuNC10YDQsNCx0L7Rh9C10LPQvtC60LDRgtCw0LvQvtCz0LDQtNCw0L3QvdGL0YXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJyArXG4gICfQvdCw0YfQsNGC0YzQv9C+0LvRg9GH0LXQvdC40LXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0L/QvtC80LXRidC10L3QuNC10YTQsNC50LvQsCDQvdCw0YfQsNGC0YzQv9C+0LzQtdGJ0LXQvdC40LXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0YHQvtC30LTQsNC90LjQtdC00LLQvtC40YfQvdGL0YXQtNCw0L3QvdGL0YXQuNC30YTQsNC50LvQsCDQvdCw0YfQsNGC0YzRgdC+0LfQtNCw0L3QuNC10LrQsNGC0LDQu9C+0LPQsCAnICtcbiAgJ9C90LDRh9Cw0YLRjNGC0YDQsNC90LfQsNC60YbQuNGOINC90LDRh9Cw0YLRjNGD0LTQsNC70LXQvdC40LXRhNCw0LnQu9C+0LIg0L3QsNGH0LDRgtGM0YPRgdGC0LDQvdC+0LLQutGD0LLQvdC10YjQvdC10LnQutC+0LzQv9C+0L3QtdC90YLRiyDQvdCw0YfQsNGC0YzRg9GB0YLQsNC90L7QstC60YPRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC10LkgJyArXG4gICfQvdCw0YfQsNGC0YzRg9GB0YLQsNC90L7QstC60YPRgNCw0YHRiNC40YDQtdC90LjRj9GA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0L3QtdC00LXQu9GP0LPQvtC00LAg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0YzQt9Cw0LLQtdGA0YjQtdC90LjRj9GB0L7QtdC00LjQvdC10L3QuNGPINC90L7QvNC10YDRgdC10LDQvdGB0LDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfQvdC+0LzQtdGA0YHQvtC10LTQuNC90LXQvdC40Y/QuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L3RgNC10LMg0L3RgdGC0YAg0L7QsdC90L7QstC40YLRjNC40L3RgtC10YDRhNC10LnRgSDQvtCx0L3QvtCy0LjRgtGM0L3Rg9C80LXRgNCw0YbQuNGO0L7QsdGK0LXQutGC0L7QsiDQvtCx0L3QvtCy0LjRgtGM0L/QvtCy0YLQvtGA0L3QvtC40YHQv9C+0LvRjNC30YPQtdC80YvQtdC30L3QsNGH0LXQvdC40Y8gJyArXG4gICfQvtCx0YDQsNCx0L7RgtC60LDQv9GA0LXRgNGL0LLQsNC90LjRj9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvtCx0YrQtdC00LjQvdC40YLRjNGE0LDQudC70Ysg0L7QutGAINC+0L/QuNGB0LDQvdC40LXQvtGI0LjQsdC60Lgg0L7Qv9C+0LLQtdGB0YLQuNGC0Ywg0L7Qv9C+0LLQtdGB0YLQuNGC0YzQvtCx0LjQt9C80LXQvdC10L3QuNC4ICcgK1xuICAn0L7RgtC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQt9Cw0L/RgNC+0YHQsNC90LDRgdGC0YDQvtC10LrQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L7RgtC60LvRjtGH0LjRgtGM0L7QsdGA0LDQsdC+0YLRh9C40LrQvtC20LjQtNCw0L3QuNGPINC+0YLQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7Qv9C+0LLQtdGJ0LXQvdC40Y8gJyArXG4gICfQvtGC0LrRgNGL0YLRjNC30L3QsNGH0LXQvdC40LUg0L7RgtC60YDRi9GC0YzQuNC90LTQtdC60YHRgdC/0YDQsNCy0LrQuCDQvtGC0LrRgNGL0YLRjNGB0L7QtNC10YDQttCw0L3QuNC10YHQv9GA0LDQstC60Lgg0L7RgtC60YDRi9GC0YzRgdC/0YDQsNCy0LrRgyDQvtGC0LrRgNGL0YLRjNGE0L7RgNC80YMg0L7RgtC60YDRi9GC0YzRhNC+0YDQvNGD0LzQvtC00LDQu9GM0L3QviAnICtcbiAgJ9C+0YLQvNC10L3QuNGC0YzRgtGA0LDQvdC30LDQutGG0LjRjiDQvtGH0LjRgdGC0LjRgtGM0LbRg9GA0L3QsNC70YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQvtGH0LjRgdGC0LjRgtGM0L3QsNGB0YLRgNC+0LnQutC40L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC+0YfQuNGB0YLQuNGC0YzRgdC+0L7QsdGJ0LXQvdC40Y8g0L/QsNGA0LDQvNC10YLRgNGL0LTQvtGB0YLRg9C/0LAgJyArXG4gICfQv9C10YDQtdC50YLQuNC/0L7QvdCw0LLQuNCz0LDRhtC40L7QvdC90L7QudGB0YHRi9C70LrQtSDQv9C10YDQtdC80LXRgdGC0LjRgtGM0YTQsNC50Lsg0L/QvtC00LrQu9GO0YfQuNGC0YzQstC90LXRiNC90Y7RjtC60L7QvNC/0L7QvdC10L3RgtGDICcgK1xuICAn0L/QvtC00LrQu9GO0YfQuNGC0YzQvtCx0YDQsNCx0L7RgtGH0LjQutC30LDQv9GA0L7RgdCw0L3QsNGB0YLRgNC+0LXQutC60LvQuNC10L3RgtCw0LvQuNGG0LXQvdC30LjRgNC+0LLQsNC90LjRjyDQv9C+0LTQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7QttC40LTQsNC90LjRjyDQv9C+0LTQutC70Y7Rh9C40YLRjNC+0LHRgNCw0LHQvtGC0YfQuNC60L7Qv9C+0LLQtdGJ0LXQvdC40Y8gJyArXG4gICfQv9C+0LTQutC70Y7Rh9C40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHQutGA0LjQv9GC0L7Qs9GA0LDRhNC40LXQuSDQv9C+0LTQutC70Y7Rh9C40YLRjNGA0LDRgdGI0LjRgNC10L3QuNC10YDQsNCx0L7RgtGL0YHRhNCw0LnQu9Cw0LzQuCDQv9C+0LTRgNC+0LHQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC+0YjQuNCx0LrQuCAnICtcbiAgJ9C/0L7QutCw0LfQsNGC0YzQstCy0L7QtNC00LDRgtGLINC/0L7QutCw0LfQsNGC0YzQstCy0L7QtNC30L3QsNGH0LXQvdC40Y8g0L/QvtC60LDQt9Cw0YLRjNCy0LLQvtC00YHRgtGA0L7QutC4INC/0L7QutCw0LfQsNGC0YzQstCy0L7QtNGH0LjRgdC70LAg0L/QvtC60LDQt9Cw0YLRjNCy0L7Qv9GA0L7RgSDQv9C+0LrQsNC30LDRgtGM0LfQvdCw0YfQtdC90LjQtSAnICtcbiAgJ9C/0L7QutCw0LfQsNGC0YzQuNC90YTQvtGA0LzQsNGG0LjRjtC+0LHQvtGI0LjQsdC60LUg0L/QvtC60LDQt9Cw0YLRjNC90LDQutCw0YDRgtC1INC/0L7QutCw0LfQsNGC0YzQvtC/0L7QstC10YnQtdC90LjQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQv9C+0LrQsNC30LDRgtGM0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQv9C+0LvQvdC+0LXQuNC80Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gJyArXG4gICfQv9C+0LvRg9GH0LjRgtGMY29t0L7QsdGK0LXQutGCINC/0L7Qu9GD0YfQuNGC0Yx4bWzRgtC40L8g0L/QvtC70YPRh9C40YLRjNCw0LTRgNC10YHQv9C+0LzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjRjiDQv9C+0LvRg9GH0LjRgtGM0LHQu9C+0LrQuNGA0L7QstC60YPRgdC10LDQvdGB0L7QsiDQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9C30LDQstC10YDRiNC10L3QuNGP0YHQv9GP0YnQtdCz0L7RgdC10LDQvdGB0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LLRgNC10LzRj9C30LDRgdGL0L/QsNC90LjRj9C/0LDRgdGB0LjQstC90L7Qs9C+0YHQtdCw0L3RgdCwINC/0L7Qu9GD0YfQuNGC0YzQstGA0LXQvNGP0L7QttC40LTQsNC90LjRj9Cx0LvQvtC60LjRgNC+0LLQutC40LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQuNGC0YzQtNCw0L3QvdGL0LXQstGL0LHQvtGA0LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQudC/0LDRgNCw0LzQtdGC0YDQutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC00L7Qv9GD0YHRgtC40LzRi9C10LrQvtC00YvQu9C+0LrQsNC70LjQt9Cw0YbQuNC4INC/0L7Qu9GD0YfQuNGC0YzQtNC+0L/Rg9GB0YLQuNC80YvQtdGH0LDRgdC+0LLRi9C10L/QvtGP0YHQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQt9Cw0LPQvtC70L7QstC+0LrQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC30LDQs9C+0LvQvtCy0L7QutGB0LjRgdGC0LXQvNGLINC/0L7Qu9GD0YfQuNGC0YzQt9C90LDRh9C10L3QuNGP0L7RgtCx0L7RgNCw0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L7Qu9GD0YfQuNGC0YzQuNC30LLRgNC10LzQtdC90L3QvtCz0L7RhdGA0LDQvdC40LvQuNGJ0LAg0L/QvtC70YPRh9C40YLRjNC40LzRj9Cy0YDQtdC80LXQvdC90L7Qs9C+0YTQsNC50LvQsCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQuNC80Y/QutC70LjQtdC90YLQsNC70LjRhtC10L3Qt9C40YDQvtCy0LDQvdC40Y8g0L/QvtC70YPRh9C40YLRjNC40L3RhNC+0YDQvNCw0YbQuNGO0Y3QutGA0LDQvdC+0LLQutC70LjQtdC90YLQsCDQv9C+0LvRg9GH0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40LggJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgdC+0LHRi9GC0LjRj9C20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQv9C+0LvRg9GH0LjRgtGM0LrRgNCw0YLQutC40LnQt9Cw0LPQvtC70L7QstC+0LrQv9GA0LjQu9C+0LbQtdC90LjRjyDQv9C+0LvRg9GH0LjRgtGM0LzQsNC60LXRgtC+0YTQvtGA0LzQu9C10L3QuNGPICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNC80LDRgdC60YPQstGB0LXRhNCw0LnQu9GLINC/0L7Qu9GD0YfQuNGC0YzQvNCw0YHQutGD0LLRgdC10YTQsNC50LvRi9C60LvQuNC10L3RgtCwINC/0L7Qu9GD0YfQuNGC0YzQvNCw0YHQutGD0LLRgdC10YTQsNC50LvRi9GB0LXRgNCy0LXRgNCwINC/0L7Qu9GD0YfQuNGC0YzQvNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC10L/QvtCw0LTRgNC10YHRgyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvNC40L3QuNC80LDQu9GM0L3Rg9GO0LTQu9C40L3Rg9C/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0L/QvtC70YPRh9C40YLRjNC90LDQstC40LPQsNGG0LjQvtC90L3Rg9GO0YHRgdGL0LvQutGDINC/0L7Qu9GD0YfQuNGC0YzQvdCw0LLQuNCz0LDRhtC40L7QvdC90YPRjtGB0YHRi9C70LrRg9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvtCx0L3QvtCy0LvQtdC90LjQtdC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuNCx0LDQt9GL0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQuNGC0YzQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GF0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7Qu9GD0YfQuNGC0YzQvtCx0YnQuNC50LzQsNC60LXRgiAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzQvtCx0YnRg9GO0YTQvtGA0LzRgyDQv9C+0LvRg9GH0LjRgtGM0L7QutC90LAg0L/QvtC70YPRh9C40YLRjNC+0L/QtdGA0LDRgtC40LLQvdGD0Y7QvtGC0LzQtdGC0LrRg9Cy0YDQtdC80LXQvdC4INC/0L7Qu9GD0YfQuNGC0YzQvtGC0LrQu9GO0YfQtdC90LjQtdCx0LXQt9C+0L/QsNGB0L3QvtCz0L7RgNC10LbQuNC80LAgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L/QsNGA0LDQvNC10YLRgNGL0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhdC+0L/RhtC40LnQuNC90YLQtdGA0YTQtdC50YHQsCDQv9C+0LvRg9GH0LjRgtGM0L/QvtC70L3QvtC10LjQvNGP0L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQvtC30L3QsNGH0LXQvdC40Y8gJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y/QvdCw0LLQuNCz0LDRhtC40L7QvdC90YvRhdGB0YHRi9C70L7QuiDQv9C+0LvRg9GH0LjRgtGM0L/RgNC+0LLQtdGA0LrRg9GB0LvQvtC20L3QvtGB0YLQuNC/0LDRgNC+0LvQtdC50L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0L/QvtC70YPRh9C40YLRjNGA0LDQt9C00LXQu9C40YLQtdC70YzQv9GD0YLQuCAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgNCw0LfQtNC10LvQuNGC0LXQu9GM0L/Rg9GC0LjQutC70LjQtdC90YLQsCDQv9C+0LvRg9GH0LjRgtGM0YDQsNC30LTQtdC70LjRgtC10LvRjNC/0YPRgtC40YHQtdGA0LLQtdGA0LAg0L/QvtC70YPRh9C40YLRjNGB0LXQsNC90YHRi9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyAnICtcbiAgJ9C/0L7Qu9GD0YfQuNGC0YzRgdC60L7RgNC+0YHRgtGM0LrQu9C40LXQvdGC0YHQutC+0LPQvtGB0L7QtdC00LjQvdC10L3QuNGPINC/0L7Qu9GD0YfQuNGC0YzRgdC+0LXQtNC40L3QtdC90LjRj9C40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRg9GH0LjRgtGM0YHQvtC+0LHRidC10L3QuNGP0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOICcgK1xuICAn0L/QvtC70YPRh9C40YLRjNGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtdC+0LHRitC10LrRgtCw0LjRhNC+0YDQvNGLINC/0L7Qu9GD0YfQuNGC0YzRgdC+0YHRgtCw0LLRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7QuNC90YLQtdGA0YTQtdC50YHQsG9kYXRhINC/0L7Qu9GD0YfQuNGC0YzRgdGC0YDRg9C60YLRg9GA0YPRhdGA0LDQvdC10L3QuNGP0LHQsNC30YvQtNCw0L3QvdGL0YUgJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YLQtdC60YPRidC40LnRgdC10LDQvdGB0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINC/0L7Qu9GD0YfQuNGC0YzRhNCw0LnQuyDQv9C+0LvRg9GH0LjRgtGM0YTQsNC50LvRiyDQv9C+0LvRg9GH0LjRgtGM0YTQvtGA0LzRgyDQv9C+0LvRg9GH0LjRgtGM0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YPRjtC+0L/RhtC40Y4gJyArXG4gICfQv9C+0LvRg9GH0LjRgtGM0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YPRjtC+0L/RhtC40Y7QuNC90YLQtdGA0YTQtdC50YHQsCDQv9C+0LvRg9GH0LjRgtGM0YfQsNGB0L7QstC+0LnQv9C+0Y/RgdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDQv9C+0LvRjNC30L7QstCw0YLQtdC70LjQvtGBINC/0L7QvNC10YHRgtC40YLRjNCy0L7QstGA0LXQvNC10L3QvdC+0LXRhdGA0LDQvdC40LvQuNGJ0LUgJyArXG4gICfQv9C+0LzQtdGB0YLQuNGC0YzRhNCw0LnQuyDQv9C+0LzQtdGB0YLQuNGC0YzRhNCw0LnQu9GLINC/0YDQsNCyINC/0YDQsNCy0L7QtNC+0YHRgtGD0L/QsCDQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90L7QtdC30L3QsNGH0LXQvdC40LUg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQutC+0LTQsNC70L7QutCw0LvQuNC30LDRhtC40Lgg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQv9C10YDQuNC+0LTQsCAnICtcbiAgJ9C/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/RgNCw0LLQsCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdC/0YDQuNC70L7QttC10L3QuNGPINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10YHQvtCx0YvRgtC40Y/QttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRh9Cw0YHQvtCy0L7Qs9C+0L/QvtGP0YHQsCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1ICcgK1xuICAn0L/RgNC10LrRgNCw0YLQuNGC0YzRgNCw0LHQvtGC0YPRgdC40YHRgtC10LzRiyDQv9GA0LjQstC40LvQtdCz0LjRgNC+0LLQsNC90L3Ri9C50YDQtdC20LjQvCDQv9GA0L7QtNC+0LvQttC40YLRjNCy0YvQt9C+0LIg0L/RgNC+0YfQuNGC0LDRgtGManNvbiDQv9GA0L7Rh9C40YLQsNGC0Yx4bWwg0L/RgNC+0YfQuNGC0LDRgtGM0LTQsNGC0YNqc29uINC/0YPRgdGC0LDRj9GB0YLRgNC+0LrQsCAnICtcbiAgJ9GA0LDQsdC+0YfQuNC50LrQsNGC0LDQu9C+0LPQtNCw0L3QvdGL0YXQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YDQsNC30LHQu9C+0LrQuNGA0L7QstCw0YLRjNC00LDQvdC90YvQtdC00LvRj9GA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YDQsNC30LTQtdC70LjRgtGM0YTQsNC50Lsg0YDQsNC30L7RgNCy0LDRgtGM0YHQvtC10LTQuNC90LXQvdC40LXRgdCy0L3QtdGI0L3QuNC80LjRgdGC0L7Rh9C90LjQutC+0LzQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQutC+0LTQuNGA0L7QstCw0YLRjNGB0YLRgNC+0LrRgyDRgNC+0LvRjNC00L7RgdGC0YPQv9C90LAg0YHQtdC60YPQvdC00LAg0YHQuNCz0L3QsNC7INGB0LjQvNCy0L7QuyDRgdC60L7Qv9C40YDQvtCy0LDRgtGM0LbRg9GA0L3QsNC70YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRgdC80LXRidC10L3QuNC10LvQtdGC0L3QtdCz0L7QstGA0LXQvNC10L3QuCAnICtcbiAgJ9GB0LzQtdGJ0LXQvdC40LXRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7QstGA0LXQvNC10L3QuCDRgdC+0LXQtNC40L3QuNGC0YzQsdGD0YTQtdGA0YvQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GFINGB0L7Qt9C00LDRgtGM0LrQsNGC0LDQu9C+0LMg0YHQvtC30LTQsNGC0YzRhNCw0LHRgNC40LrRg3hkdG8g0YHQvtC60YDQuyDRgdC+0LrRgNC70L8g0YHQvtC60YDQvyDRgdC+0L7QsdGJ0LjRgtGMICcgK1xuICAn0YHQvtGB0YLQvtGP0L3QuNC1INGB0L7RhdGA0LDQvdC40YLRjNC30L3QsNGH0LXQvdC40LUg0YHQvtGF0YDQsNC90LjRgtGM0L3QsNGB0YLRgNC+0LnQutC40L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGB0YDQtdC0INGB0YLRgNC00LvQuNC90LAg0YHRgtGA0LfQsNC60LDQvdGH0LjQstCw0LXRgtGB0Y/QvdCwINGB0YLRgNC30LDQvNC10L3QuNGC0Ywg0YHRgtGA0L3QsNC50YLQuCDRgdGC0YDQvdCw0YfQuNC90LDQtdGC0YHRj9GBICcgK1xuICAn0YHRgtGA0L7QutCwINGB0YLRgNC+0LrQsNGB0L7QtdC00LjQvdC10L3QuNGP0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINGB0YLRgNC/0L7Qu9GD0YfQuNGC0YzRgdGC0YDQvtC60YMg0YHRgtGA0YDQsNC30LTQtdC70LjRgtGMINGB0YLRgNGB0L7QtdC00LjQvdC40YLRjCDRgdGC0YDRgdGA0LDQstC90LjRgtGMINGB0YLRgNGH0LjRgdC70L7QstGF0L7QttC00LXQvdC40LkgJytcbiAgJ9GB0YLRgNGH0LjRgdC70L7RgdGC0YDQvtC6INGB0YLRgNGI0LDQsdC70L7QvSDRgtC10LrRg9GJ0LDRj9C00LDRgtCwINGC0LXQutGD0YnQsNGP0LTQsNGC0LDRgdC10LDQvdGB0LAg0YLQtdC60YPRidCw0Y/Rg9C90LjQstC10YDRgdCw0LvRjNC90LDRj9C00LDRgtCwINGC0LXQutGD0YnQsNGP0YPQvdC40LLQtdGA0YHQsNC70YzQvdCw0Y/QtNCw0YLQsNCy0LzQuNC70LvQuNGB0LXQutGD0L3QtNCw0YUgJyArXG4gICfRgtC10LrRg9GJ0LjQudCy0LDRgNC40LDQvdGC0LjQvdGC0LXRgNGE0LXQudGB0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YLQtdC60YPRidC40LnQstCw0YDQuNCw0L3RgtC+0YHQvdC+0LLQvdC+0LPQvtGI0YDQuNGE0YLQsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRgtC10LrRg9GJ0LjQudC60L7QtNC70L7QutCw0LvQuNC30LDRhtC40LggJyArXG4gICfRgtC10LrRg9GJ0LjQudGA0LXQttC40LzQt9Cw0L/Rg9GB0LrQsCDRgtC10LrRg9GJ0LjQudGP0LfRi9C6INGC0LXQutGD0YnQuNC50Y/Qt9GL0LrRgdC40YHRgtC10LzRiyDRgtC40L8g0YLQuNC/0LfQvdGHINGC0YDQsNC90LfQsNC60YbQuNGP0LDQutGC0LjQstC90LAg0YLRgNC10LMg0YPQtNCw0LvQuNGC0YzQtNCw0L3QvdGL0LXQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30YsgJyArXG4gICfRg9C00LDQu9C40YLRjNC40LfQstGA0LXQvNC10L3QvdC+0LPQvtGF0YDQsNC90LjQu9C40YnQsCDRg9C00LDQu9C40YLRjNC+0LHRitC10LrRgtGLINGD0LTQsNC70LjRgtGM0YTQsNC50LvRiyDRg9C90LjQstC10YDRgdCw0LvRjNC90L7QtdCy0YDQtdC80Y8g0YPRgdGC0LDQvdC+0LLQuNGC0YzQsdC10LfQvtC/0LDRgdC90YvQudGA0LXQttC40LwgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNCx0LXQt9C+0L/QsNGB0L3Ri9C50YDQtdC20LjQvNGA0LDQt9C00LXQu9C10L3QuNGP0LTQsNC90L3Ri9GFINGD0YHRgtCw0L3QvtCy0LjRgtGM0LHQu9C+0LrQuNGA0L7QstC60YPRgdC10LDQvdGB0L7QsiDRg9GB0YLQsNC90L7QstC40YLRjNCy0L3QtdGI0L3RjtGO0LrQvtC80L/QvtC90LXQvdGC0YMgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNCy0YDQtdC80Y/Qt9Cw0LLQtdGA0YjQtdC90LjRj9GB0L/Rj9GJ0LXQs9C+0YHQtdCw0L3RgdCwINGD0YHRgtCw0L3QvtCy0LjRgtGM0LLRgNC10LzRj9C30LDRgdGL0L/QsNC90LjRj9C/0LDRgdGB0LjQstC90L7Qs9C+0YHQtdCw0L3RgdCwINGD0YHRgtCw0L3QvtCy0LjRgtGM0LLRgNC10LzRj9C+0LbQuNC00LDQvdC40Y/QsdC70L7QutC40YDQvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINGD0YHRgtCw0L3QvtCy0LjRgtGM0LfQsNCz0L7Qu9C+0LLQvtC60YHQuNGB0YLQtdC80Ysg0YPRgdGC0LDQvdC+0LLQuNGC0YzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9GD0YHRgtCw0L3QvtCy0LjRgtGM0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgdC+0LHRi9GC0LjRj9C20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRg9GB0YLQsNC90L7QstC40YLRjNC60YDQsNGC0LrQuNC50LfQsNCz0L7Qu9C+0LLQvtC60L/RgNC40LvQvtC20LXQvdC40Y8gJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC80LjQvdC40LzQsNC70YzQvdGD0Y7QtNC70LjQvdGD0L/QsNGA0L7Qu9C10LnQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRg9GB0YLQsNC90L7QstC40YLRjNC80L7QvdC+0L/QvtC70YzQvdGL0LnRgNC10LbQuNC8INGD0YHRgtCw0L3QvtCy0LjRgtGM0L3QsNGB0YLRgNC+0LnQutC40LrQu9C40LXQvdGC0LDQu9C40YbQtdC90LfQuNGA0L7QstCw0L3QuNGPICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GF0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90L7QudCx0LDQt9GLINGD0YHRgtCw0L3QvtCy0LjRgtGM0L7RgtC60LvRjtGH0LXQvdC40LXQsdC10LfQvtC/0LDRgdC90L7Qs9C+0YDQtdC20LjQvNCwICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzQv9Cw0YDQsNC80LXRgtGA0YvRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3Ri9GF0L7Qv9GG0LjQudC40L3RgtC10YDRhNC10LnRgdCwINGD0YHRgtCw0L3QvtCy0LjRgtGM0L/RgNC40LLQuNC70LXQs9C40YDQvtCy0LDQvdC90YvQudGA0LXQttC40LwgJyArXG4gICfRg9GB0YLQsNC90L7QstC40YLRjNC/0YDQvtCy0LXRgNC60YPRgdC70L7QttC90L7RgdGC0LjQv9Cw0YDQvtC70LXQudC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INGD0YHRgtCw0L3QvtCy0LjRgtGM0YDQsNGB0YjQuNGA0LXQvdC40LXRgNCw0LHQvtGC0YvRgdC60YDQuNC/0YLQvtCz0YDQsNGE0LjQtdC5ICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzRgNCw0YHRiNC40YDQtdC90LjQtdGA0LDQsdC+0YLRi9GB0YTQsNC50LvQsNC80Lgg0YPRgdGC0LDQvdC+0LLQuNGC0YzRgdC+0LXQtNC40L3QtdC90LjQtdGB0LLQvdC10YjQvdC40LzQuNGB0YLQvtGH0L3QuNC60L7QvNC00LDQvdC90YvRhSDRg9GB0YLQsNC90L7QstC40YLRjNGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtdC+0LHRitC10LrRgtCw0LjRhNC+0YDQvNGLICcgK1xuICAn0YPRgdGC0LDQvdC+0LLQuNGC0YzRgdC+0YHRgtCw0LLRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7QuNC90YLQtdGA0YTQtdC50YHQsG9kYXRhINGD0YHRgtCw0L3QvtCy0LjRgtGM0YfQsNGB0L7QstC+0LnQv9C+0Y/RgdC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdC+0LnQsdCw0LfRiyDRg9GB0YLQsNC90L7QstC40YLRjNGH0LDRgdC+0LLQvtC50L/QvtGP0YHRgdC10LDQvdGB0LAgJyArXG4gICfRhNC+0YDQvNCw0YIg0YbQtdC7INGH0LDRgSDRh9Cw0YHQvtCy0L7QudC/0L7Rj9GBINGH0LDRgdC+0LLQvtC50L/QvtGP0YHRgdC10LDQvdGB0LAg0YfQuNGB0LvQviDRh9C40YHQu9C+0L/RgNC+0L/QuNGB0YzRjiDRjdGC0L7QsNC00YDQtdGB0LLRgNC10LzQtdC90L3QvtCz0L7RhdGA0LDQvdC40LvQuNGJ0LAgJztcblxuICAvLyB2OCDRgdCy0L7QudGB0YLQstCwINCz0LvQvtCx0LDQu9GM0L3QvtCz0L4g0LrQvtC90YLQtdC60YHRgtCwID09PiBidWlsdF9pblxuICB2YXIgdjhfZ2xvYmFsX2NvbnRleHRfcHJvcGVydHkgPVxuICAnd3PRgdGB0YvQu9C60Lgg0LHQuNCx0LvQuNC+0YLQtdC60LDQutCw0YDRgtC40L3QvtC6INCx0LjQsdC70LjQvtGC0LXQutCw0LzQsNC60LXRgtC+0LLQvtGE0L7RgNC80LvQtdC90LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINCx0LjQsdC70LjQvtGC0LXQutCw0YHRgtC40LvQtdC5INCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0YsgJyArXG4gICfQstC90LXRiNC90LjQtdC40YHRgtC+0YfQvdC40LrQuNC00LDQvdC90YvRhSDQstC90LXRiNC90LjQtdC+0LHRgNCw0LHQvtGC0LrQuCDQstC90LXRiNC90LjQtdC+0YLRh9C10YLRiyDQstGB0YLRgNC+0LXQvdC90YvQtdC/0L7QutGD0L/QutC4INCz0LvQsNCy0L3Ri9C50LjQvdGC0LXRgNGE0LXQudGBINCz0LvQsNCy0L3Ri9C50YHRgtC40LvRjCAnICtcbiAgJ9C00L7QutGD0LzQtdC90YLRiyDQtNC+0YHRgtCw0LLQu9GP0LXQvNGL0LXRg9Cy0LXQtNC+0LzQu9C10L3QuNGPINC20YPRgNC90LDQu9GL0LTQvtC60YPQvNC10L3RgtC+0LIg0LfQsNC00LDRh9C4INC40L3RhNC+0YDQvNCw0YbQuNGP0L7QsdC40L3RgtC10YDQvdC10YLRgdC+0LXQtNC40L3QtdC90LjQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LDQsdC+0YfQtdC50LTQsNGC0YsgJyArXG4gICfQuNGB0YLQvtGA0LjRj9GA0LDQsdC+0YLRi9C/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQutC+0L3RgdGC0LDQvdGC0Ysg0LrRgNC40YLQtdGA0LjQuNC+0YLQsdC+0YDQsCDQvNC10YLQsNC00LDQvdC90YvQtSDQvtCx0YDQsNCx0L7RgtC60Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdGA0LXQutC70LDQvNGLINC+0YLQv9GA0LDQstC60LDQtNC+0YHRgtCw0LLQu9GP0LXQvNGL0YXRg9Cy0LXQtNC+0LzQu9C10L3QuNC5ICcgK1xuICAn0L7RgtGH0LXRgtGLINC/0LDQvdC10LvRjNC30LDQtNCw0YfQvtGBINC/0LDRgNCw0LzQtdGC0YDQt9Cw0L/Rg9GB0LrQsCDQv9Cw0YDQsNC80LXRgtGA0YvRgdC10LDQvdGB0LAg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPINC/0LvQsNC90YvQstC40LTQvtCy0YDQsNGB0YfQtdGC0LAg0L/Qu9Cw0L3Ri9Cy0LjQtNC+0LLRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiAnICtcbiAgJ9C/0LvQsNC90YvQvtCx0LzQtdC90LAg0L/Qu9Cw0L3Ri9GB0YfQtdGC0L7QsiDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLRi9C50L/QvtC40YHQuiDQv9C+0LvRjNC30L7QstCw0YLQtdC70LjQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC50LHQsNC30Ysg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4INC/0YDQvtCy0LXRgNC60LDQstGB0YLRgNC+0LXQvdC90YvRhdC/0L7QutGD0L/QvtC6ICcgK1xuICAn0YDQsNCx0L7Rh9Cw0Y/QtNCw0YLQsCDRgNCw0YHRiNC40YDQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgNC10LPQuNGB0YLRgNGL0LHRg9GF0LPQsNC70YLQtdGA0LjQuCDRgNC10LPQuNGB0YLRgNGL0L3QsNC60L7Qv9C70LXQvdC40Y8g0YDQtdCz0LjRgdGC0YDRi9GA0LDRgdGH0LXRgtCwINGA0LXQs9C40YHRgtGA0YvRgdCy0LXQtNC10L3QuNC5ICcgK1xuICAn0YDQtdCz0LvQsNC80LXQvdGC0L3Ri9C10LfQsNC00LDQvdC40Y8g0YHQtdGA0LjQsNC70LjQt9Cw0YLQvtGAeGR0byDRgdC/0YDQsNCy0L7Rh9C90LjQutC4INGB0YDQtdC00YHRgtCy0LDQs9C10L7Qv9C+0LfQuNGG0LjQvtC90LjRgNC+0LLQsNC90LjRjyDRgdGA0LXQtNGB0YLQstCw0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGB0YDQtdC00YHRgtCy0LDQvNGD0LvRjNGC0LjQvNC10LTQuNCwICcgK1xuICAn0YHRgNC10LTRgdGC0LLQsNC+0YLQvtCx0YDQsNC20LXQvdC40Y/RgNC10LrQu9Cw0LzRiyDRgdGA0LXQtNGB0YLQstCw0L/QvtGH0YLRiyDRgdGA0LXQtNGB0YLQstCw0YLQtdC70LXRhNC+0L3QuNC4INGE0LDQsdGA0LjQutCweGR0byDRhNCw0LnQu9C+0LLRi9C10L/QvtGC0L7QutC4INGE0L7QvdC+0LLRi9C10LfQsNC00LDQvdC40Y8g0YXRgNCw0L3QuNC70LjRidCw0L3QsNGB0YLRgNC+0LXQuiAnICtcbiAgJ9GF0YDQsNC90LjQu9C40YnQtdCy0LDRgNC40LDQvdGC0L7QstC+0YLRh9C10YLQvtCyINGF0YDQsNC90LjQu9C40YnQtdC90LDRgdGC0YDQvtC10LrQtNCw0L3QvdGL0YXRhNC+0YDQvCDRhdGA0LDQvdC40LvQuNGJ0LXQvtCx0YnQuNGF0L3QsNGB0YLRgNC+0LXQuiDRhdGA0LDQvdC40LvQuNGJ0LXQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhdC90LDRgdGC0YDQvtC10LrQtNC40L3QsNC80LjRh9C10YHQutC40YXRgdC/0LjRgdC60L7QsiAnICtcbiAgJ9GF0YDQsNC90LjQu9C40YnQtdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGF0L3QsNGB0YLRgNC+0LXQutC+0YLRh9C10YLQvtCyINGF0YDQsNC90LjQu9C40YnQtdGB0LjRgdGC0LXQvNC90YvRhdC90LDRgdGC0YDQvtC10LogJztcblxuICAvLyBidWlsdF9pbiA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC40LvQuCDQsdC40LHQu9C40L7RgtC10YfQvdGL0LUg0L7QsdGK0LXQutGC0YsgKNC60L7QvdGB0YLQsNC90YLRiywg0LrQu9Cw0YHRgdGLLCDRhNGD0L3QutGG0LjQuClcbiAgdmFyIEJVSUxUSU4gPVxuICB2N19zeXN0ZW1fY29uc3RhbnRzICtcbiAgdjdfZ2xvYmFsX2NvbnRleHRfbWV0aG9kcyArIHY4X2dsb2JhbF9jb250ZXh0X21ldGhvZHMgK1xuICB2OF9nbG9iYWxfY29udGV4dF9wcm9wZXJ0eTtcbiAgXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQvdCw0LHQvtGA0Ysg0LfQvdCw0YfQtdC90LjQuSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyA9XG4gICd3ZWLRhtCy0LXRgtCwIHdpbmRvd3PRhtCy0LXRgtCwIHdpbmRvd3PRiNGA0LjRhNGC0Ysg0LHQuNCx0LvQuNC+0YLQtdC60LDQutCw0YDRgtC40L3QvtC6INGA0LDQvNC60LjRgdGC0LjQu9GPINGB0LjQvNCy0L7Qu9GLINGG0LLQtdGC0LDRgdGC0LjQu9GPINGI0YDQuNGE0YLRi9GB0YLQuNC70Y8gJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LjQvdGC0LXRgNGE0LXQudGB0L3Ri9C1ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2ludGVyZmFjZSA9XG4gICfQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtC10YHQvtGF0YDQsNC90LXQvdC40LXQtNCw0L3QvdGL0YXRhNC+0YDQvNGL0LLQvdCw0YHRgtGA0L7QudC60LDRhSDQsNCy0YLQvtC90YPQvNC10YDQsNGG0LjRj9Cy0YTQvtGA0LzQtSDQsNCy0YLQvtGA0LDQt9C00LLQuNC20LXQvdC40LXRgdC10YDQuNC5ICcgK1xuICAn0LDQvdC40LzQsNGG0LjRj9C00LjQsNCz0YDQsNC80LzRiyDQstCw0YDQuNCw0L3RgtCy0YvRgNCw0LLQvdC40LLQsNC90LjRj9GN0LvQtdC80LXQvdGC0L7QstC40LfQsNCz0L7Qu9C+0LLQutC+0LIg0LLQsNGA0LjQsNC90YLRg9C/0YDQsNCy0LvQtdC90LjRj9Cy0YvRgdC+0YLQvtC50YLQsNCx0LvQuNGG0YsgJyArXG4gICfQstC10YDRgtC40LrQsNC70YzQvdCw0Y/Qv9GA0L7QutGA0YPRgtC60LDRhNC+0YDQvNGLINCy0LXRgNGC0LjQutCw0LvRjNC90L7QtdC/0L7Qu9C+0LbQtdC90LjQtSDQstC10YDRgtC40LrQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LXRjdC70LXQvNC10L3RgtCwINCy0LjQtNCz0YDRg9C/0L/Ri9GE0L7RgNC80YsgJyArXG4gICfQstC40LTQtNC10LrQvtGA0LDRhtC40LjRhNC+0YDQvNGLINCy0LjQtNC00L7Qv9C+0LvQvdC10L3QuNGP0Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80Ysg0LLQuNC00LjQt9C80LXQvdC10L3QuNGP0LTQsNC90L3Ri9GFINCy0LjQtNC60L3QvtC/0LrQuNGE0L7RgNC80Ysg0LLQuNC00L/QtdGA0LXQutC70Y7Rh9Cw0YLQtdC70Y8gJyArXG4gICfQstC40LTQv9C+0LTQv9C40YHQtdC50LrQtNC40LDQs9GA0LDQvNC80LUg0LLQuNC00L/QvtC70Y/RhNC+0YDQvNGLINCy0LjQtNGE0LvQsNC20LrQsCDQstC70LjRj9C90LjQtdGA0LDQt9C80LXRgNCw0L3QsNC/0YPQt9GL0YDQtdC60LTQuNCw0LPRgNCw0LzQvNGLINCz0L7RgNC40LfQvtC90YLQsNC70YzQvdC+0LXQv9C+0LvQvtC20LXQvdC40LUgJyArXG4gICfQs9C+0YDQuNC30L7QvdGC0LDQu9GM0L3QvtC10L/QvtC70L7QttC10L3QuNC10Y3Qu9C10LzQtdC90YLQsCDQs9GA0YPQv9C/0LjRgNC+0LLQutCw0LrQvtC70L7QvdC+0Log0LPRgNGD0L/Qv9C40YDQvtCy0LrQsNC/0L7QtNGH0LjQvdC10L3QvdGL0YXRjdC70LXQvNC10L3RgtC+0LLRhNC+0YDQvNGLICcgK1xuICAn0LPRgNGD0L/Qv9GL0LjRjdC70LXQvNC10L3RgtGLINC00LXQudGB0YLQstC40LXQv9C10YDQtdGC0LDRgdC60LjQstCw0L3QuNGPINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LnRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQtNC+0L/Rg9GB0YLQuNC80YvQtdC00LXQudGB0YLQstC40Y/Qv9C10YDQtdGC0LDRgdC60LjQstCw0L3QuNGPICcgK1xuICAn0LjQvdGC0LXRgNCy0LDQu9C80LXQttC00YPRjdC70LXQvNC10L3RgtCw0LzQuNGE0L7RgNC80Ysg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQstGL0LLQvtC00LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9C+0LvQvtGB0YvQv9GA0L7QutGA0YPRgtC60LggJyArXG4gICfQuNGB0L/QvtC70YzQt9GD0LXQvNC+0LXQt9C90LDRh9C10L3QuNC10YLQvtGH0LrQuNCx0LjRgNC20LXQstC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0LjRgdGC0L7RgNC40Y/QstGL0LHQvtGA0LDQv9GA0LjQstCy0L7QtNC1INC40YHRgtC+0YfQvdC40LrQt9C90LDRh9C10L3QuNC50L7RgdC40YLQvtGH0LXQutC00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9C40YHRgtC+0YfQvdC40LrQt9C90LDRh9C10L3QuNGP0YDQsNC30LzQtdGA0LDQv9GD0LfRi9GA0YzQutCw0LTQuNCw0LPRgNCw0LzQvNGLINC60LDRgtC10LPQvtGA0LjRj9Cz0YDRg9C/0L/Ri9C60L7QvNCw0L3QtCDQvNCw0LrRgdC40LzRg9C80YHQtdGA0LjQuSDQvdCw0YfQsNC70YzQvdC+0LXQvtGC0L7QsdGA0LDQttC10L3QuNC10LTQtdGA0LXQstCwICcgK1xuICAn0L3QsNGH0LDQu9GM0L3QvtC10L7RgtC+0LHRgNCw0LbQtdC90LjQtdGB0L/QuNGB0LrQsCDQvtCx0L3QvtCy0LvQtdC90LjQtdGC0LXQutGB0YLQsNGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0L7RgNC40LXQvdGC0LDRhtC40Y/QtNC10L3QtNGA0L7Qs9GA0LDQvNC80Ysg0L7RgNC40LXQvdGC0LDRhtC40Y/QtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQvtGA0LjQtdC90YLQsNGG0LjRj9C80LXRgtC+0LrQtNC40LDQs9GA0LDQvNC80Ysg0L7RgNC40LXQvdGC0LDRhtC40Y/QvNC10YLQvtC60YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0L7RgNC40LXQvdGC0LDRhtC40Y/RjdC70LXQvNC10L3RgtCw0YTQvtGA0LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10LLQtNC40LDQs9GA0LDQvNC80LUgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10LLQu9C10LPQtdC90LTQtdC00LjQsNCz0YDQsNC80LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10LPRgNGD0L/Qv9GL0LrQvdC+0L/QvtC6INC+0YLQvtCx0YDQsNC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDRiNC60LDQu9GL0LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC30L3QsNGH0LXQvdC40LnRgdCy0L7QtNC90L7QudC00LjQsNCz0YDQsNC80LzRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10LfQvdCw0YfQtdC90LjRj9C40LfQvNC10YDQuNGC0LXQu9GM0L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC40L3RgtC10YDQstCw0LvQsNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC60L3QvtC/0LrQuCDQvtGC0L7QsdGA0LDQttC10L3QuNC10LrQvdC+0L/QutC40LLRi9Cx0L7RgNCwINC+0YLQvtCx0YDQsNC20LXQvdC40LXQvtCx0YHRg9C20LTQtdC90LjQudGE0L7RgNC80YsgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10L7QsdGL0YfQvdC+0LnQs9GA0YPQv9C/0Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9GF0LfQvdCw0YfQtdC90LjQudC/0YPQt9GL0YDRjNC60L7QstC+0LnQtNC40LDQs9GA0LDQvNC80Ysg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC/0LDQvdC10LvQuNC/0L7QuNGB0LrQsCAnICtcbiAgJ9C+0YLQvtCx0YDQsNC20LXQvdC40LXQv9C+0LTRgdC60LDQt9C60Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y/Qv9GA0LjRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNC4INC+0YLQvtCx0YDQsNC20LXQvdC40LXRgNCw0LfQvNC10YLQutC40L/QvtC70L7RgdGL0YDQtdCz0YPQu9C40YDQvtCy0LDQvdC40Y8gJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10YHRgtGA0LDQvdC40YbRhNC+0YDQvNGLINC+0YLQvtCx0YDQsNC20LXQvdC40LXRgtCw0LHQu9C40YbRiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10YLQtdC60YHRgtCw0LfQvdCw0YfQtdC90LjRj9C00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAgJyArXG4gICfQvtGC0L7QsdGA0LDQttC10L3QuNC10YPQv9GA0LDQstC70LXQvdC40Y/QvtCx0YvRh9C90L7QudCz0YDRg9C/0L/RiyDQvtGC0L7QsdGA0LDQttC10L3QuNC10YTQuNCz0YPRgNGL0LrQvdC+0L/QutC4INC/0LDQu9C40YLRgNCw0YbQstC10YLQvtCy0LTQuNCw0LPRgNCw0LzQvNGLINC/0L7QstC10LTQtdC90LjQtdC+0LHRi9GH0L3QvtC50LPRgNGD0L/Qv9GLICcgK1xuICAn0L/QvtC00LTQtdGA0LbQutCw0LzQsNGB0YjRgtCw0LHQsNC00LXQvdC00YDQvtCz0YDQsNC80LzRiyDQv9C+0LTQtNC10YDQttC60LDQvNCw0YHRiNGC0LDQsdCw0LTQuNCw0LPRgNCw0LzQvNGL0LPQsNC90YLQsCDQv9C+0LTQtNC10YDQttC60LDQvNCw0YHRiNGC0LDQsdCw0YHQstC+0LTQvdC+0LnQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfQv9C+0LjRgdC60LLRgtCw0LHQu9C40YbQtdC/0YDQuNCy0LLQvtC00LUg0L/QvtC70L7QttC10L3QuNC10LfQsNCz0L7Qu9C+0LLQutCw0Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80Ysg0L/QvtC70L7QttC10L3QuNC10LrQsNGA0YLQuNC90LrQuNC60L3QvtC/0LrQuNGE0L7RgNC80YsgJyArXG4gICfQv9C+0LvQvtC20LXQvdC40LXQutCw0YDRgtC40L3QutC40Y3Qu9C10LzQtdC90YLQsNCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINC/0L7Qu9C+0LbQtdC90LjQtdC60L7QvNCw0L3QtNC90L7QudC/0LDQvdC10LvQuNGE0L7RgNC80Ysg0L/QvtC70L7QttC10L3QuNC10LrQvtC80LDQvdC00L3QvtC50L/QsNC90LXQu9C40Y3Qu9C10LzQtdC90YLQsNGE0L7RgNC80YsgJyArXG4gICfQv9C+0LvQvtC20LXQvdC40LXQvtC/0L7RgNC90L7QudGC0L7Rh9C60LjQvtGC0YDQuNGB0L7QstC60Lgg0L/QvtC70L7QttC10L3QuNC10L/QvtC00L/QuNGB0LXQudC60LTQuNCw0LPRgNCw0LzQvNC1INC/0L7Qu9C+0LbQtdC90LjQtdC/0L7QtNC/0LjRgdC10LnRiNC60LDQu9GL0LfQvdCw0YfQtdC90LjQudC40LfQvNC10YDQuNGC0LXQu9GM0L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10YHQvtGB0YLQvtGP0L3QuNGP0L/RgNC+0YHQvNC+0YLRgNCwINC/0L7Qu9C+0LbQtdC90LjQtdGB0YLRgNC+0LrQuNC/0L7QuNGB0LrQsCDQv9C+0LvQvtC20LXQvdC40LXRgtC10LrRgdGC0LDRgdC+0LXQtNC40L3QuNGC0LXQu9GM0L3QvtC50LvQuNC90LjQuCDQv9C+0LvQvtC20LXQvdC40LXRg9C/0YDQsNCy0LvQtdC90LjRj9C/0L7QuNGB0LrQvtC8ICcgK1xuICAn0L/QvtC70L7QttC10L3QuNC10YjQutCw0LvRi9Cy0YDQtdC80LXQvdC4INC/0L7RgNGP0LTQvtC60L7RgtC+0LHRgNCw0LbQtdC90LjRj9GC0L7Rh9C10LrQs9C+0YDQuNC30L7QvdGC0LDQu9GM0L3QvtC50LPQuNGB0YLQvtCz0YDQsNC80LzRiyDQv9C+0YDRj9C00L7QutGB0LXRgNC40LnQstC70LXQs9C10L3QtNC10LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YDQsNC30LzQtdGA0LrQsNGA0YLQuNC90LrQuCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQt9Cw0LPQvtC70L7QstC60LDRiNC60LDQu9GL0LTQuNCw0LPRgNCw0LzQvNGLINGA0LDRgdGC0Y/Qs9C40LLQsNC90LjQtdC/0L7QstC10YDRgtC40LrQsNC70LjQtNC40LDQs9GA0LDQvNC80YvQs9Cw0L3RgtCwICcgK1xuICAn0YDQtdC20LjQvNCw0LLRgtC+0L7RgtC+0LHRgNCw0LbQtdC90LjRj9GB0L7RgdGC0L7Rj9C90LjRjyDRgNC10LbQuNC80LLQstC+0LTQsNGB0YLRgNC+0LrRgtCw0LHQu9C40YbRiyDRgNC10LbQuNC80LLRi9Cx0L7RgNCw0L3QtdC30LDQv9C+0LvQvdC10L3QvdC+0LPQviDRgNC10LbQuNC80LLRi9C00LXQu9C10L3QuNGP0LTQsNGC0YsgJyArXG4gICfRgNC10LbQuNC80LLRi9C00LXQu9C10L3QuNGP0YHRgtGA0L7QutC40YLQsNCx0LvQuNGG0Ysg0YDQtdC20LjQvNCy0YvQtNC10LvQtdC90LjRj9GC0LDQsdC70LjRhtGLINGA0LXQttC40LzQuNC30LzQtdC90LXQvdC40Y/RgNCw0LfQvNC10YDQsCDRgNC10LbQuNC80LjQt9C80LXQvdC10L3QuNGP0YHQstGP0LfQsNC90L3QvtCz0L7Qt9C90LDRh9C10L3QuNGPICcgK1xuICAn0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LTQuNCw0LvQvtCz0LDQv9C10YfQsNGC0Lgg0YDQtdC20LjQvNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0L/QsNGA0LDQvNC10YLRgNCw0LrQvtC80LDQvdC00Ysg0YDQtdC20LjQvNC80LDRgdGI0YLQsNCx0LjRgNC+0LLQsNC90LjRj9C/0YDQvtGB0LzQvtGC0YDQsCAnICtcbiAgJ9GA0LXQttC40LzQvtGB0L3QvtCy0L3QvtCz0L7QvtC60L3QsNC60LvQuNC10L3RgtGB0LrQvtCz0L7Qv9GA0LjQu9C+0LbQtdC90LjRjyDRgNC10LbQuNC80L7RgtC60YDRi9GC0LjRj9C+0LrQvdCw0YTQvtGA0LzRiyDRgNC10LbQuNC80L7RgtC+0LHRgNCw0LbQtdC90LjRj9Cy0YvQtNC10LvQtdC90LjRjyAnICtcbiAgJ9GA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/Qt9C90LDRh9C10L3QuNC50YHQtdGA0LjQuCDRgNC10LbQuNC80L7RgtGA0LjRgdC+0LLQutC40YHQtdGC0LrQuNCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLICcgK1xuICAn0YDQtdC20LjQvNC/0L7Qu9GD0L/RgNC+0LfRgNCw0YfQvdC+0YHRgtC40LTQuNCw0LPRgNCw0LzQvNGLINGA0LXQttC40LzQv9GA0L7QsdC10LvQvtCy0LTQuNCw0LPRgNCw0LzQvNGLINGA0LXQttC40LzRgNCw0LfQvNC10YnQtdC90LjRj9C90LDRgdGC0YDQsNC90LjRhtC1INGA0LXQttC40LzRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGP0LrQvtC70L7QvdC60LggJyArXG4gICfRgNC10LbQuNC80YHQs9C70LDQttC40LLQsNC90LjRj9C00LjQsNCz0YDQsNC80LzRiyDRgNC10LbQuNC80YHQs9C70LDQttC40LLQsNC90LjRj9C40L3QtNC40LrQsNGC0L7RgNCwINGA0LXQttC40LzRgdC/0LjRgdC60LDQt9Cw0LTQsNGHINGB0LrQstC+0LfQvdC+0LXQstGL0YDQsNCy0L3QuNCy0LDQvdC40LUgJyArXG4gICfRgdC+0YXRgNCw0L3QtdC90LjQtdC00LDQvdC90YvRhdGE0L7RgNC80YvQstC90LDRgdGC0YDQvtC50LrQsNGFINGB0L/QvtGB0L7QsdC30LDQv9C+0LvQvdC10L3QuNGP0YLQtdC60YHRgtCw0LfQsNCz0L7Qu9C+0LLQutCw0YjQutCw0LvRi9C00LjQsNCz0YDQsNC80LzRiyAnICtcbiAgJ9GB0L/QvtGB0L7QsdC+0L/RgNC10LTQtdC70LXQvdC40Y/QvtCz0YDQsNC90LjRh9C40LLQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGP0LTQuNCw0LPRgNCw0LzQvNGLINGB0YLQsNC90LTQsNGA0YLQvdCw0Y/Qs9GA0YPQv9C/0LDQutC+0LzQsNC90LQg0YHRgtCw0L3QtNCw0YDRgtC90L7QtdC+0YTQvtGA0LzQu9C10L3QuNC1ICcgK1xuICAn0YHRgtCw0YLRg9GB0L7Qv9C+0LLQtdGJ0LXQvdC40Y/Qv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YHRgtC40LvRjNGB0YLRgNC10LvQutC4INGC0LjQv9Cw0L/Qv9GA0L7QutGB0LjQvNCw0YbQuNC40LvQuNC90LjQuNGC0YDQtdC90LTQsNC00LjQsNCz0YDQsNC80LzRiyDRgtC40L/QtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgtC40L/QtdC00LjQvdC40YbRi9GI0LrQsNC70YvQstGA0LXQvNC10L3QuCDRgtC40L/QuNC80L/QvtGA0YLQsNGB0LXRgNC40LnRgdC70L7Rj9Cz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C70LjQvdC40LjQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/Qu9C40L3QuNC40LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0LzQsNGA0LrQtdGA0LDQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/QvNCw0YDQutC10YDQsNC00LjQsNCz0YDQsNC80LzRiyDRgtC40L/QvtCx0LvQsNGB0YLQuNC+0YTQvtGA0LzQu9C10L3QuNGPICcgK1xuICAn0YLQuNC/0L7RgNCz0LDQvdC40LfQsNGG0LjQuNC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhdCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/RgdC10YDQuNC40YHQu9C+0Y/Qs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyAnICtcbiAgJ9GC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/RgtC+0YfQtdGH0L3QvtCz0L7QvtCx0YrQtdC60YLQsNCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/RiNC60LDQu9GL0Y3Qu9C10LzQtdC90YLQsNC70LXQs9C10L3QtNGL0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80YsgJyArXG4gICfRgtC40L/Qv9C+0LjRgdC60LDQvtCx0YrQtdC60YLQvtCy0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YLQuNC/0L/RgNC+0LXQutGG0LjQuNCz0LXQvtCz0YDQsNGE0LjRh9C10YHQutC+0LnRgdGF0LXQvNGLINGC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0LjQt9C80LXRgNC10L3QuNC5ICcgK1xuICAn0YLQuNC/0YDQsNC30LzQtdGJ0LXQvdC40Y/RgNC10LrQstC40LfQuNGC0L7QstC40LfQvNC10YDQtdC90LjQuSDRgtC40L/RgNCw0LzQutC40Y3Qu9C10LzQtdC90YLQsNGD0L/RgNCw0LLQu9C10L3QuNGPINGC0LjQv9GB0LLQvtC00L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YLQuNC/0YHQstGP0LfQuNC00LjQsNCz0YDQsNC80LzRi9Cz0LDQvdGC0LAg0YLQuNC/0YHQvtC10LTQuNC90LXQvdC40Y/Qt9C90LDRh9C10L3QuNC50L/QvtGB0LXRgNC40Y/QvNC00LjQsNCz0YDQsNC80LzRiyDRgtC40L/RgdC+0LXQtNC40L3QtdC90LjRj9GC0L7Rh9C10LrQtNC40LDQs9GA0LDQvNC80YsgJyArXG4gICfRgtC40L/RgdC+0LXQtNC40L3QuNGC0LXQu9GM0L3QvtC50LvQuNC90LjQuCDRgtC40L/RgdGC0L7RgNC+0L3Ri9GN0LvQtdC80LXQvdGC0LDQs9GA0LDRhNC40YfQtdGB0LrQvtC50YHRhdC10LzRiyDRgtC40L/RhNC+0YDQvNGL0L7RgtGH0LXRgtCwINGC0LjQv9GI0LrQsNC70YvRgNCw0LTQsNGA0L3QvtC50LTQuNCw0LPRgNCw0LzQvNGLICcgK1xuICAn0YTQsNC60YLQvtGA0LvQuNC90LjQuNGC0YDQtdC90LTQsNC00LjQsNCz0YDQsNC80LzRiyDRhNC40LPRg9GA0LDQutC90L7Qv9C60Lgg0YTQuNCz0YPRgNGL0LPRgNCw0YTQuNGH0LXRgdC60L7QudGB0YXQtdC80Ysg0YTQuNC60YHQsNGG0LjRj9Cy0YLQsNCx0LvQuNGG0LUg0YTQvtGA0LzQsNGC0LTQvdGP0YjQutCw0LvRi9Cy0YDQtdC80LXQvdC4ICcgK1xuICAn0YTQvtGA0LzQsNGC0LrQsNGA0YLQuNC90LrQuCDRiNC40YDQuNC90LDQv9C+0LTRh9C40L3QtdC90L3Ri9GF0Y3Qu9C10LzQtdC90YLQvtCy0YTQvtGA0LzRiyAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdCy0L7QudGB0YLQstCwINC/0YDQuNC60LvQsNC00L3Ri9GFINC+0LHRitC10LrRgtC+0LIgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfb2JqZWN0c19wcm9wZXJ0aWVzID1cbiAgJ9Cy0LjQtNC00LLQuNC20LXQvdC40Y/QsdGD0YXQs9Cw0LvRgtC10YDQuNC4INCy0LjQtNC00LLQuNC20LXQvdC40Y/QvdCw0LrQvtC/0LvQtdC90LjRjyDQstC40LTQv9C10YDQuNC+0LTQsNGA0LXQs9C40YHRgtGA0LDRgNCw0YHRh9C10YLQsCDQstC40LTRgdGH0LXRgtCwINCy0LjQtNGC0L7Rh9C60LjQvNCw0YDRiNGA0YPRgtCw0LHQuNC30L3QtdGB0L/RgNC+0YbQtdGB0YHQsCAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LDQs9GA0LXQs9Cw0YLQsNGA0LXQs9C40YHRgtGA0LDQvdCw0LrQvtC/0LvQtdC90LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCz0YDRg9C/0L/QuNGN0LvQtdC80LXQvdGC0L7QsiDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LXQttC40LzQsNC/0YDQvtCy0LXQtNC10L3QuNGPICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgdGA0LXQt9CwINC/0LXRgNC40L7QtNC40YfQvdC+0YHRgtGM0LDQs9GA0LXQs9Cw0YLQsNGA0LXQs9C40YHRgtGA0LDQvdCw0LrQvtC/0LvQtdC90LjRjyDRgNC10LbQuNC80LDQstGC0L7QstGA0LXQvNGPINGA0LXQttC40LzQt9Cw0L/QuNGB0LjQtNC+0LrRg9C80LXQvdGC0LAg0YDQtdC20LjQvNC/0YDQvtCy0LXQtNC10L3QuNGP0LTQvtC60YPQvNC10L3RgtCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0LvQsNC90Ysg0L7QsdC80LXQvdCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2V4Y2hhbmdlX3BsYW5zID1cbiAgJ9Cw0LLRgtC+0YDQtdCz0LjRgdGC0YDQsNGG0LjRj9C40LfQvNC10L3QtdC90LjQuSDQtNC+0L/Rg9GB0YLQuNC80YvQudC90L7QvNC10YDRgdC+0L7QsdGJ0LXQvdC40Y8g0L7RgtC/0YDQsNCy0LrQsNGN0LvQtdC80LXQvdGC0LDQtNCw0L3QvdGL0YUg0L/QvtC70YPRh9C10L3QuNC10Y3Qu9C10LzQtdC90YLQsNC00LDQvdC90YvRhSAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgtCw0LHQu9C40YfQvdGL0Lkg0LTQvtC60YPQvNC10L3RgiA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc190YWJ1bGFyX2RvY3VtZW50ID1cbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YDQsNGB0YjQuNGE0YDQvtCy0LrQuNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINC+0YDQuNC10L3RgtCw0YbQuNGP0YHRgtGA0LDQvdC40YbRiyDQv9C+0LvQvtC20LXQvdC40LXQuNGC0L7Qs9C+0LLQutC+0LvQvtC90L7QutGB0LLQvtC00L3QvtC50YLQsNCx0LvQuNGG0YsgJyArXG4gICfQv9C+0LvQvtC20LXQvdC40LXQuNGC0L7Qs9C+0LLRgdGC0YDQvtC60YHQstC+0LTQvdC+0LnRgtCw0LHQu9C40YbRiyDQv9C+0LvQvtC20LXQvdC40LXRgtC10LrRgdGC0LDQvtGC0L3QvtGB0LjRgtC10LvRjNC90L7QutCw0YDRgtC40L3QutC4INGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC30LDQs9C+0LvQvtCy0LrQsNCz0YDRg9C/0L/QuNGA0L7QstC60LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GB0L/QvtGB0L7QsdGH0YLQtdC90LjRj9C30L3QsNGH0LXQvdC40LnRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/QtNCy0YPRgdGC0L7RgNC+0L3QvdC10LnQv9C10YfQsNGC0Lgg0YLQuNC/0LfQsNC/0L7Qu9C90LXQvdC40Y/QvtCx0LvQsNGB0YLQuNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwICcgK1xuICAn0YLQuNC/0LrRg9GA0YHQvtGA0L7QstGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C70LjQvdC40LjRgNC40YHRg9C90LrQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C70LjQvdC40LjRj9GH0LXQudC60LjRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCAnICtcbiAgJ9GC0LjQv9C90LDQv9GA0LDQstC70LXQvdC40Y/Qv9C10YDQtdGF0L7QtNCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0L7RgtC+0LHRgNCw0LbQtdC90LjRj9Cy0YvQtNC10LvQtdC90LjRj9GC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C+0YLQvtCx0YDQsNC20LXQvdC40Y/Qu9C40L3QuNC50YHQstC+0LTQvdC+0LnRgtCw0LHQu9C40YbRiyAnICtcbiAgJ9GC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0YLQtdC60YHRgtCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0YDQuNGB0YPQvdC60LDRgtCw0LHQu9C40YfQvdC+0LPQvtC00L7QutGD0LzQtdC90YLQsCDRgtC40L/RgdC80LXRidC10L3QuNGP0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJyArXG4gICfRgtC40L/Rg9C30L7RgNCw0YLQsNCx0LvQuNGH0L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAg0YLQuNC/0YTQsNC50LvQsNGC0LDQsdC70LjRh9C90L7Qs9C+0LTQvtC60YPQvNC10L3RgtCwINGC0L7Rh9C90L7RgdGC0YzQv9C10YfQsNGC0Lgg0YfQtdGA0LXQtNC+0LLQsNC90LjQtdGA0LDRgdC/0L7Qu9C+0LbQtdC90LjRj9GB0YLRgNCw0L3QuNGGICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0LvQsNC90LjRgNC+0LLRidC40LogPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfc2hlZHVsZXIgPVxuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdCy0YDQtdC80LXQvdC40Y3Qu9C10LzQtdC90YLQvtCy0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQutCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90YvQuSDQtNC+0LrRg9C80LXQvdGCID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2Zvcm1hdHRlZF9kb2N1bWVudCA9XG4gICfRgtC40L/RhNCw0LnQu9Cw0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3QvtCz0L7QtNC+0LrRg9C80LXQvdGC0LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0LfQsNC/0YDQvtGBID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3F1ZXJ5ID1cbiAgJ9C+0LHRhdC+0LTRgNC10LfRg9C70YzRgtCw0YLQsNC30LDQv9GA0L7RgdCwINGC0LjQv9C30LDQv9C40YHQuNC30LDQv9GA0L7RgdCwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0L7RgdGC0YDQvtC40YLQtdC70Ywg0L7RgtGH0LXRgtCwID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX3JlcG9ydF9idWlsZGVyID1cbiAgJ9Cy0LjQtNC30LDQv9C+0LvQvdC10L3QuNGP0YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC/0L7RgdGC0YDQvtC40YLQtdC70Y/QvtGC0YfQtdGC0LAg0YLQuNC/0LTQvtCx0LDQstC70LXQvdC40Y/Qv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuSDRgtC40L/QuNC30LzQtdGA0LXQvdC40Y/Qv9C+0YHRgtGA0L7QuNGC0LXQu9GP0L7RgtGH0LXRgtCwINGC0LjQv9GA0LDQt9C80LXRidC10L3QuNGP0LjRgtC+0LPQvtCyICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGA0LDQsdC+0YLQsCDRgSDRhNCw0LnQu9Cw0LzQuCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19maWxlcyA9XG4gICfQtNC+0YHRgtGD0L/QutGE0LDQudC70YMg0YDQtdC20LjQvNC00LjQsNC70L7Qs9Cw0LLRi9Cx0L7RgNCw0YTQsNC50LvQsCDRgNC10LbQuNC80L7RgtC60YDRi9GC0LjRj9GE0LDQudC70LAgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0L/QvtGB0YLRgNC+0LjRgtC10LvRjCDQt9Cw0L/RgNC+0YHQsCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19xdWVyeV9idWlsZGVyID1cbiAgJ9GC0LjQv9C40LfQvNC10YDQtdC90LjRj9C/0L7RgdGC0YDQvtC40YLQtdC70Y/Qt9Cw0L/RgNC+0YHQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDQsNC90LDQu9C40Lcg0LTQsNC90L3Ri9GFID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2RhdGFfYW5hbHlzaXMgPVxuICAn0LLQuNC00LTQsNC90L3Ri9GF0LDQvdCw0LvQuNC30LAg0LzQtdGC0L7QtNC60LvQsNGB0YLQtdGA0LjQt9Cw0YbQuNC4INGC0LjQv9C10LTQuNC90LjRhtGL0LjQvdGC0LXRgNCy0LDQu9Cw0LLRgNC10LzQtdC90LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSDRgtC40L/Qt9Cw0L/QvtC70L3QtdC90LjRj9GC0LDQsdC70LjRhtGL0YDQtdC30YPQu9GM0YLQsNGC0LDQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YfQuNGB0LvQvtCy0YvRhdC30L3QsNGH0LXQvdC40LnQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSDRgtC40L/QuNGB0YLQvtGH0L3QuNC60LDQtNCw0L3QvdGL0YXQv9C+0LjRgdC60LDQsNGB0YHQvtGG0LjQsNGG0LjQuSDRgtC40L/QutC+0LvQvtC90LrQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GF0LTQtdGA0LXQstC+0YDQtdGI0LXQvdC40LkgJyArXG4gICfRgtC40L/QutC+0LvQvtC90LrQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GF0LrQu9Cw0YHRgtC10YDQuNC30LDRhtC40Y8g0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC+0LHRidCw0Y/RgdGC0LDRgtC40YHRgtC40LrQsCDRgtC40L/QutC+0LvQvtC90LrQuNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GF0L/QvtC40YHQutCw0YHRgdC+0YbQuNCw0YbQuNC5ICcgK1xuICAn0YLQuNC/0LrQvtC70L7QvdC60LjQsNC90LDQu9C40LfQsNC00LDQvdC90YvRhdC/0L7QuNGB0LrQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuSDRgtC40L/QutC+0LvQvtC90LrQuNC80L7QtNC10LvQuNC/0YDQvtCz0L3QvtC30LAg0YLQuNC/0LzQtdGA0YvRgNCw0YHRgdGC0L7Rj9C90LjRj9Cw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0L7RgtGB0LXRh9C10L3QuNGP0L/RgNCw0LLQuNC70LDRgdGB0L7RhtC40LDRhtC40Lgg0YLQuNC/0L/QvtC70Y/QsNC90LDQu9C40LfQsNC00LDQvdC90YvRhSDRgtC40L/RgdGC0LDQvdC00LDRgNGC0LjQt9Cw0YbQuNC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0YPQv9C+0YDRj9C00L7Rh9C40LLQsNC90LjRj9C/0YDQsNCy0LjQu9Cw0YHRgdC+0YbQuNCw0YbQuNC40LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfRgtC40L/Rg9C/0L7RgNGP0LTQvtGH0LjQstCw0L3QuNGP0YjQsNCx0LvQvtC90L7QstC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQtdC50LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUg0YLQuNC/0YPQv9GA0L7RidC10L3QuNGP0LTQtdGA0LXQstCw0YDQtdGI0LXQvdC40LkgJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0geG1sLCBqc29uLCB4cywgZG9tLCB4ZHRvLCB3ZWIt0YHQtdGA0LLQuNGB0YsgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfeG1sX2pzb25feHNfZG9tX3hkdG9fd3MgPVxuICAnd3PQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QsNGA0LDQvNC10YLRgNCwINCy0LDRgNC40LDQvdGCeHBhdGh4cyDQstCw0YDQuNCw0L3RgtC30LDQv9C40YHQuNC00LDRgtGLanNvbiDQstCw0YDQuNCw0L3RgtC/0YDQvtGB0YLQvtCz0L7RgtC40L/QsHhzINCy0LjQtNCz0YDRg9C/0L/Ri9C80L7QtNC10LvQuHhzINCy0LjQtNGE0LDRgdC10YLQsHhkdG8gJyArXG4gICfQtNC10LnRgdGC0LLQuNC10L/QvtGB0YLRgNC+0LjRgtC10LvRj2RvbSDQt9Cw0LLQtdGA0YjQtdC90L3QvtGB0YLRjNC/0YDQvtGB0YLQvtCz0L7RgtC40L/QsHhzINC30LDQstC10YDRiNC10L3QvdC+0YHRgtGM0YHQvtGB0YLQsNCy0L3QvtCz0L7RgtC40L/QsHhzINC30LDQstC10YDRiNC10L3QvdC+0YHRgtGM0YHRhdC10LzRi3hzINC30LDQv9GA0LXRidC10L3QvdGL0LXQv9C+0LTRgdGC0LDQvdC+0LLQutC4eHMgJyArXG4gICfQuNGB0LrQu9GO0YfQtdC90LjRj9Cz0YDRg9C/0L/Qv9C+0LTRgdGC0LDQvdC+0LLQutC4eHMg0LrQsNGC0LXQs9C+0YDQuNGP0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/QsNGC0YDQuNCx0YPRgtCweHMg0LrQsNGC0LXQs9C+0YDQuNGP0L7Qs9GA0LDQvdC40YfQtdC90LjRj9C40LTQtdC90YLQuNGH0L3QvtGB0YLQuHhzINC60LDRgtC10LPQvtGA0LjRj9C+0LPRgNCw0L3QuNGH0LXQvdC40Y/Qv9GA0L7RgdGC0YDQsNC90YHRgtCy0LjQvNC10L14cyAnICtcbiAgJ9C80LXRgtC+0LTQvdCw0YHQu9C10LTQvtCy0LDQvdC40Y94cyDQvNC+0LTQtdC70YzRgdC+0LTQtdGA0LbQuNC80L7Qs9C+eHMg0L3QsNC30L3QsNGH0LXQvdC40LXRgtC40L/QsHhtbCDQvdC10LTQvtC/0YPRgdGC0LjQvNGL0LXQv9C+0LTRgdGC0LDQvdC+0LLQutC4eHMg0L7QsdGA0LDQsdC+0YLQutCw0L/RgNC+0LHQtdC70YzQvdGL0YXRgdC40LzQstC+0LvQvtCyeHMg0L7QsdGA0LDQsdC+0YLQutCw0YHQvtC00LXRgNC20LjQvNC+0LPQvnhzICcgK1xuICAn0L7Qs9GA0LDQvdC40YfQtdC90LjQtdC30L3QsNGH0LXQvdC40Y94cyDQv9Cw0YDQsNC80LXRgtGA0YvQvtGC0LHQvtGA0LDRg9C30LvQvtCyZG9tINC/0LXRgNC10L3QvtGB0YHRgtGA0L7Qumpzb24g0L/QvtC30LjRhtC40Y/QstC00L7QutGD0LzQtdC90YLQtWRvbSDQv9GA0L7QsdC10LvRjNC90YvQtdGB0LjQvNCy0L7Qu9GLeG1sINGC0LjQv9Cw0YLRgNC40LHRg9GC0LB4bWwg0YLQuNC/0LfQvdCw0YfQtdC90LjRj2pzb24gJyArXG4gICfRgtC40L/QutCw0L3QvtC90LjRh9C10YHQutC+0LPQvnhtbCDRgtC40L/QutC+0LzQv9C+0L3QtdC90YLRi3hzINGC0LjQv9C/0YDQvtCy0LXRgNC60Lh4bWwg0YLQuNC/0YDQtdC30YPQu9GM0YLQsNGC0LBkb214cGF0aCDRgtC40L/Rg9C30LvQsGRvbSDRgtC40L/Rg9C30LvQsHhtbCDRhNC+0YDQvNCweG1sINGE0L7RgNC80LDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRj3hzICcgK1xuICAn0YTQvtGA0LzQsNGC0LTQsNGC0Ytqc29uINGN0LrRgNCw0L3QuNGA0L7QstCw0L3QuNC10YHQuNC80LLQvtC70L7Qsmpzb24gJztcblxuICAvLyB2OCDRgdC40YHRgtC10LzQvdGL0LUg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIC0g0YHQuNGB0YLQtdC80LAg0LrQvtC80L/QvtC90L7QstC60Lgg0LTQsNC90L3Ri9GFID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2RhdGFfY29tcG9zaXRpb25fc3lzdGVtID1cbiAgJ9Cy0LjQtNGB0YDQsNCy0L3QtdC90LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC00LXQudGB0YLQstC40LXQvtCx0YDQsNCx0L7RgtC60LjRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L3QsNC/0YDQsNCy0LvQtdC90LjQtdGB0L7RgNGC0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXQstC70L7QttC10L3QvdGL0YXRjdC70LXQvNC10L3RgtC+0LLRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC40YLQvtCz0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdCz0YDRg9C/0L/QuNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtdC/0L7Qu9C10LnQs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10L/QvtC70Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LXRgNC10LrQstC40LfQuNGC0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YDQtdGB0YPRgNGB0L7QstC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9Cx0YPRhdCz0LDQu9GC0LXRgNGB0LrQvtCz0L7QvtGB0YLQsNGC0LrQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9Cy0YvQstC+0LTQsNGC0LXQutGB0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0LPRgNGD0L/Qv9C40YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9Cz0YDRg9C/0L/Ri9GN0LvQtdC80LXQvdGC0L7QstC+0YLQsdC+0YDQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9C00L7Qv9C+0LvQvdC10L3QuNGP0L/QtdGA0LjQvtC00LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9GC0LjQv9C30LDQs9C+0LvQvtCy0LrQsNC/0L7Qu9C10LnQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QvNCw0LrQtdGC0LDQs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQuNC/0LzQsNC60LXRgtCw0L7QsdC70LDRgdGC0LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/QvtGB0YLQsNGC0LrQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YLQuNC/0L/QtdGA0LjQvtC00LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/RgNCw0LfQvNC10YnQtdC90LjRj9GC0LXQutGB0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9GB0LLRj9C30LjQvdCw0LHQvtGA0L7QstC00LDQvdC90YvRhdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGC0LjQv9GN0LvQtdC80LXQvdGC0LDRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10LvQtdCz0LXQvdC00YvQtNC40LDQs9GA0LDQvNC80YvQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDRgtC40L/Qv9GA0LjQvNC10L3QtdC90LjRj9C+0YLQsdC+0YDQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGA0LXQttC40LzQvtGC0L7QsdGA0LDQttC10L3QuNGP0Y3Qu9C10LzQtdC90YLQsNC90LDRgdGC0YDQvtC50LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0YDQtdC20LjQvNC+0YLQvtCx0YDQsNC20LXQvdC40Y/QvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YHQvtGB0YLQvtGP0L3QuNC10Y3Qu9C10LzQtdC90YLQsNC90LDRgdGC0YDQvtC50LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINGB0L/QvtGB0L7QsdCy0L7RgdGB0YLQsNC90L7QstC70LXQvdC40Y/QvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJyArXG4gICfRgNC10LbQuNC80LrQvtC80L/QvtC90L7QstC60LjRgNC10LfRg9C70YzRgtCw0YLQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC/0LDRgNCw0LzQtdGC0YDQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINCw0LLRgtC+0L/QvtC30LjRhtC40Y/RgNC10YHRg9GA0YHQvtCy0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJytcbiAgJ9Cy0LDRgNC40LDQvdGC0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/Qs9GA0YPQv9C/0LjRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YDQtdGB0YPRgNGB0L7QstCy0LTQuNCw0LPRgNCw0LzQvNC10LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YTQuNC60YHQsNGG0LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRg9GB0LvQvtCy0L3QvtCz0L7QvtGE0L7RgNC80LvQtdC90LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC/0L7Rh9GC0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfZW1haWwgPVxuICAn0LLQsNC20L3QvtGB0YLRjNC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0L7QsdGA0LDQsdC+0YLQutCw0YLQtdC60YHRgtCw0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstC+0LPQvtGB0L7QvtCx0YnQtdC90LjRjyDRgdC/0L7RgdC+0LHQutC+0LTQuNGA0L7QstCw0L3QuNGP0LjQvdGC0LXRgNC90LXRgtC/0L7Rh9GC0L7QstC+0LPQvtCy0LvQvtC20LXQvdC40Y8gJyArXG4gICfRgdC/0L7RgdC+0LHQutC+0LTQuNGA0L7QstCw0L3QuNGP0L3QtWFzY2lp0YHQuNC80LLQvtC70L7QstC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtCz0L7RgdC+0L7QsdGJ0LXQvdC40Y8g0YLQuNC/0YLQtdC60YHRgtCw0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPINC/0YDQvtGC0L7QutC+0LvQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLRiyAnICtcbiAgJ9GB0YLQsNGC0YPRgdGA0LDQt9Cx0L7RgNCw0L/QvtGH0YLQvtCy0L7Qs9C+0YHQvtC+0LHRidC10L3QuNGPICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC20YPRgNC90LDQuyDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ID09PiBjbGFzc1xuICB2YXIgdjhfc3lzdGVtX2VudW1zX2xvZ2Jvb2sgPVxuICAn0YDQtdC20LjQvNGC0YDQsNC90LfQsNC60YbQuNC40LfQsNC/0LjRgdC40LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGB0YLQsNGC0YPRgdGC0YDQsNC90LfQsNC60YbQuNC40LfQsNC/0LjRgdC40LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGD0YDQvtCy0LXQvdGM0LbRg9GA0L3QsNC70LDRgNC10LPQuNGB0YLRgNCw0YbQuNC4ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINC60YDQuNC/0YLQvtCz0YDQsNGE0LjRjyA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19jcnlwdG9ncmFwaHkgPVxuICAn0YDQsNGB0L/QvtC70L7QttC10L3QuNC10YXRgNCw0L3QuNC70LjRidCw0YHQtdGA0YLQuNGE0LjQutCw0YLQvtCy0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INGA0LXQttC40LzQstC60LvRjtGH0LXQvdC40Y/RgdC10YDRgtC40YTQuNC60LDRgtC+0LLQutGA0LjQv9GC0L7Qs9GA0LDRhNC40Lgg0YDQtdC20LjQvNC/0YDQvtCy0LXRgNC60LjRgdC10YDRgtC40YTQuNC60LDRgtCw0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4ICcgK1xuICAn0YLQuNC/0YXRgNCw0L3QuNC70LjRidCw0YHQtdGA0YLQuNGE0LjQutCw0YLQvtCy0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtIFpJUCA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc196aXAgPVxuICAn0LrQvtC00LjRgNC+0LLQutCw0LjQvNC10L3RhNCw0LnQu9C+0LLQsnppcNGE0LDQudC70LUg0LzQtdGC0L7QtNGB0LbQsNGC0LjRj3ppcCDQvNC10YLQvtC00YjQuNGE0YDQvtCy0LDQvdC40Y96aXAg0YDQtdC20LjQvNCy0L7RgdGB0YLQsNC90L7QstC70LXQvdC40Y/Qv9GD0YLQtdC50YTQsNC50LvQvtCyemlwINGA0LXQttC40LzQvtCx0YDQsNCx0L7RgtC60LjQv9C+0LTQutCw0YLQsNC70L7Qs9C+0LJ6aXAgJyArXG4gICfRgNC10LbQuNC80YHQvtGF0YDQsNC90LXQvdC40Y/Qv9GD0YLQtdC5emlwINGD0YDQvtCy0LXQvdGM0YHQttCw0YLQuNGPemlwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtIFxuICAvLyDQkdC70L7QutC40YDQvtCy0LrQsCDQtNCw0L3QvdGL0YUsINCk0L7QvdC+0LLRi9C1INC30LDQtNCw0L3QuNGPLCDQkNCy0YLQvtC80LDRgtC40LfQuNGA0L7QstCw0L3QvdC+0LUg0YLQtdGB0YLQuNGA0L7QstCw0L3QuNC1LFxuICAvLyDQlNC+0YHRgtCw0LLQu9GP0LXQvNGL0LUg0YPQstC10LTQvtC80LvQtdC90LjRjywg0JLRgdGC0YDQvtC10L3QvdGL0LUg0L/QvtC60YPQv9C60LgsINCY0L3RgtC10YDQvdC10YIsINCg0LDQsdC+0YLQsCDRgSDQtNCy0L7QuNGH0L3Ri9C80Lgg0LTQsNC90L3Ri9C80LggPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfb3RoZXIgPVxuICAn0LfQstGD0LrQvtCy0L7QtdC+0L/QvtCy0LXRidC10L3QuNC1INC90LDQv9GA0LDQstC70LXQvdC40LXQv9C10YDQtdGF0L7QtNCw0LrRgdGC0YDQvtC60LUg0L/QvtC30LjRhtC40Y/QstC/0L7RgtC+0LrQtSDQv9C+0YDRj9C00L7QutCx0LDQudGC0L7QsiDRgNC10LbQuNC80LHQu9C+0LrQuNGA0L7QstC60LjQtNCw0L3QvdGL0YUg0YDQtdC20LjQvNGD0L/RgNCw0LLQu9C10L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60L7QudC00LDQvdC90YvRhSAnICtcbiAgJ9GB0LXRgNCy0LjRgdCy0YHRgtGA0L7QtdC90L3Ri9GF0L/QvtC60YPQv9C+0Log0YHQvtGB0YLQvtGP0L3QuNC10YTQvtC90L7QstC+0LPQvtC30LDQtNCw0L3QuNGPINGC0LjQv9C/0L7QtNC/0LjRgdGH0LjQutCw0LTQvtGB0YLQsNCy0LvRj9C10LzRi9GF0YPQstC10LTQvtC80LvQtdC90LjQuSDRg9GA0L7QstC10L3RjNC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0LfQsNGJ0LjRidC10L3QvdC+0LPQvtGB0L7QtdC00LjQvdC10L3QuNGPZnRwICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGB0YXQtdC80LAg0LfQsNC/0YDQvtGB0LAgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcmVxdWVzdF9zY2hlbWEgPVxuICAn0L3QsNC/0YDQsNCy0LvQtdC90LjQtdC/0L7RgNGP0LTQutCw0YHRhdC10LzRi9C30LDQv9GA0L7RgdCwINGC0LjQv9C00L7Qv9C+0LvQvdC10L3QuNGP0L/QtdGA0LjQvtC00LDQvNC40YHRhdC10LzRi9C30LDQv9GA0L7RgdCwINGC0LjQv9C60L7QvdGC0YDQvtC70YzQvdC+0LnRgtC+0YfQutC40YHRhdC10LzRi9C30LDQv9GA0L7RgdCwINGC0LjQv9C+0LHRitC10LTQuNC90LXQvdC40Y/RgdGF0LXQvNGL0LfQsNC/0YDQvtGB0LAgJyArXG4gICfRgtC40L/Qv9Cw0YDQsNC80LXRgtGA0LDQtNC+0YHRgtGD0L/QvdC+0LnRgtCw0LHQu9C40YbRi9GB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCDRgtC40L/RgdC+0LXQtNC40L3QtdC90LjRj9GB0YXQtdC80YvQt9Cw0L/RgNC+0YHQsCAnO1xuXG4gIC8vIHY4INGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gLSDRgdCy0L7QudGB0YLQstCwINC+0LHRitC10LrRgtC+0LIg0LzQtdGC0LDQtNCw0L3QvdGL0YUgPT0+IGNsYXNzXG4gIHZhciB2OF9zeXN0ZW1fZW51bXNfcHJvcGVydGllc19vZl9tZXRhZGF0YV9vYmplY3RzID1cbiAgJ2h0dHDQvNC10YLQvtC0INCw0LLRgtC+0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0LDQstGC0L7Qv9GA0LXRhNC40LrRgdC90L7QvNC10YDQsNC30LDQtNCw0YfQuCDQstCw0YDQuNCw0L3RgtCy0YHRgtGA0L7QtdC90L3QvtCz0L7Rj9C30YvQutCwINCy0LjQtNC40LXRgNCw0YDRhdC40Lgg0LLQuNC00YDQtdCz0LjRgdGC0YDQsNC90LDQutC+0L/Qu9C10L3QuNGPICcgK1xuICAn0LLQuNC00YLQsNCx0LvQuNGG0YvQstC90LXRiNC90LXQs9C+0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GFINC30LDQv9C40YHRjNC00LLQuNC20LXQvdC40LnQv9GA0LjQv9GA0L7QstC10LTQtdC90LjQuCDQt9Cw0L/QvtC70L3QtdC90LjQtdC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQtdC5INC40L3QtNC10LrRgdC40YDQvtCy0LDQvdC40LUgJyArXG4gICfQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCx0LDQt9GL0L/Qu9Cw0L3QsNCy0LjQtNC+0LLRgNCw0YHRh9C10YLQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdCx0YvRgdGC0YDQvtCz0L7QstGL0LHQvtGA0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvtCx0YnQtdCz0L7RgNC10LrQstC40LfQuNGC0LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQv9C+0LTRh9C40L3QtdC90LjRjyAnICtcbiAgJ9C40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+0L/QvtC40YHQutCwINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10YDQsNC30LTQtdC70Y/QtdC80YvRhdC00LDQvdC90YvRhdC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdGA0LXQutCy0LjQt9C40YLQsCAnICtcbiAgJ9C90LDQt9C90LDRh9C10L3QuNC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/Qv9GA0LjQu9C+0LbQtdC90LjRjyDQvdCw0LfQvdCw0YfQtdC90LjQtdGA0LDRgdGI0LjRgNC10L3QuNGP0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC90LDQv9GA0LDQstC70LXQvdC40LXQv9C10YDQtdC00LDRh9C4INC+0LHQvdC+0LLQu9C10L3QuNC10L/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0YXQtNCw0L3QvdGL0YUgJyArXG4gICfQvtC/0LXRgNCw0YLQuNCy0L3QvtC10L/RgNC+0LLQtdC00LXQvdC40LUg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LLQuNC00LDRgNCw0YHRh9C10YLQsCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXQstC40LTQsNGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10LfQsNC00LDRh9C4ICcgK1xuICAn0L7RgdC90L7QstC90L7QtdC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC10L/Qu9Cw0L3QsNC+0LHQvNC10L3QsCDQvtGB0L3QvtCy0L3QvtC10L/RgNC10LTRgdGC0LDQstC70LXQvdC40LXRgdC/0YDQsNCy0L7Rh9C90LjQutCwINC+0YHQvdC+0LLQvdC+0LXQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtdGB0YfQtdGC0LAg0L/QtdGA0LXQvNC10YnQtdC90LjQtdCz0YDQsNC90LjRhtGL0L/RgNC40L/RgNC+0LLQtdC00LXQvdC40LggJyArXG4gICfQv9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjNC90L7QvNC10YDQsNCx0LjQt9C90LXRgdC/0YDQvtGG0LXRgdGB0LAg0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzQvdC+0LzQtdGA0LDQtNC+0LrRg9C80LXQvdGC0LAg0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzRgNC10LPQuNGB0YLRgNCw0YDQsNGB0YfQtdGC0LAg0L/QtdGA0LjQvtC00LjRh9C90L7RgdGC0YzRgNC10LPQuNGB0YLRgNCw0YHQstC10LTQtdC90LjQuSAnICtcbiAgJ9C/0L7QstGC0L7RgNC90L7QtdC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LLQvtC30LLRgNCw0YnQsNC10LzRi9GF0LfQvdCw0YfQtdC90LjQuSDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLRi9C50L/QvtC40YHQutC/0YDQuNCy0LLQvtC00LXQv9C+0YHRgtGA0L7QutC1INC/0YDQuNC90LDQtNC70LXQttC90L7RgdGC0YzQvtCx0YrQtdC60YLQsCDQv9GA0L7QstC10LTQtdC90LjQtSAnICtcbiAgJ9GA0LDQt9C00LXQu9C10L3QuNC10LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuNC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCDRgNCw0LfQtNC10LvQtdC90LjQtdC00LDQvdC90YvRhdC+0LHRidC10LPQvtGA0LXQutCy0LjQt9C40YLQsCDRgNCw0LfQtNC10LvQtdC90LjQtdGA0LDRgdGI0LjRgNC10L3QuNC50LrQvtC90YTQuNCz0YPRgNCw0YbQuNC40L7QsdGJ0LXQs9C+0YDQtdC60LLQuNC30LjRgtCwICcrXG4gICfRgNC10LbQuNC80LDQstGC0L7QvdGD0LzQtdGA0LDRhtC40LjQvtCx0YrQtdC60YLQvtCyINGA0LXQttC40LzQt9Cw0L/QuNGB0LjRgNC10LPQuNGB0YLRgNCwINGA0LXQttC40LzQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9C80L7QtNCw0LvRjNC90L7RgdGC0LggJyArXG4gICfRgNC10LbQuNC80LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC40L3RhdGA0L7QvdC90YvRhdCy0YvQt9C+0LLQvtCy0YDQsNGB0YjQuNGA0LXQvdC40LnQv9C70LDRgtGE0L7RgNC80YvQuNCy0L3QtdGI0L3QuNGF0LrQvtC80L/QvtC90LXQvdGCINGA0LXQttC40LzQv9C+0LLRgtC+0YDQvdC+0LPQvtC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGP0YHQtdCw0L3RgdC+0LIgJyArXG4gICfRgNC10LbQuNC80L/QvtC70YPRh9C10L3QuNGP0LTQsNC90L3Ri9GF0LLRi9Cx0L7RgNCw0L/RgNC40LLQstC+0LTQtdC/0L7RgdGC0YDQvtC60LUg0YDQtdC20LjQvNGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4INGA0LXQttC40LzRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuNC40L3RgtC10YDRhNC10LnRgdCwICcgK1xuICAn0YDQtdC20LjQvNGD0L/RgNCw0LLQu9C10L3QuNGP0LHQu9C+0LrQuNGA0L7QstC60L7QudC00LDQvdC90YvRhdC/0L7Rg9C80L7Qu9GH0LDQvdC40Y4g0YHQtdGA0LjQuNC60L7QtNC+0LLQv9C70LDQvdCw0LLQuNC00L7QstGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INGB0LXRgNC40LjQutC+0LTQvtCy0L/Qu9Cw0L3QsNGB0YfQtdGC0L7QsiAnICtcbiAgJ9GB0LXRgNC40LjQutC+0LTQvtCy0YHQv9GA0LDQstC+0YfQvdC40LrQsCDRgdC+0LfQtNCw0L3QuNC10L/RgNC40LLQstC+0LTQtSDRgdC/0L7RgdC+0LHQstGL0LHQvtGA0LAg0YHQv9C+0YHQvtCx0L/QvtC40YHQutCw0YHRgtGA0L7QutC40L/RgNC40LLQstC+0LTQtdC/0L7RgdGC0YDQvtC60LUg0YHQv9C+0YHQvtCx0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyAnICtcbiAgJ9GC0LjQv9C00LDQvdC90YvRhdGC0LDQsdC70LjRhtGL0LLQvdC10YjQvdC10LPQvtC40YHRgtC+0YfQvdC40LrQsNC00LDQvdC90YvRhSDRgtC40L/QutC+0LTQsNC/0LvQsNC90LDQstC40LTQvtCy0YDQsNGB0YfQtdGC0LAg0YLQuNC/0LrQvtC00LDRgdC/0YDQsNCy0L7Rh9C90LjQutCwINGC0LjQv9C80LDQutC10YLQsCDRgtC40L/QvdC+0LzQtdGA0LDQsdC40LfQvdC10YHQv9GA0L7RhtC10YHRgdCwICcgK1xuICAn0YLQuNC/0L3QvtC80LXRgNCw0LTQvtC60YPQvNC10L3RgtCwINGC0LjQv9C90L7QvNC10YDQsNC30LDQtNCw0YfQuCDRgtC40L/RhNC+0YDQvNGLINGD0LTQsNC70LXQvdC40LXQtNCy0LjQttC10L3QuNC5ICc7XG5cbiAgLy8gdjgg0YHQuNGB0YLQtdC80L3Ri9C1INC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyAtINGA0LDQt9C90YvQtSA9PT4gY2xhc3NcbiAgdmFyIHY4X3N5c3RlbV9lbnVtc19kaWZmZXJlbnRzID1cbiAgJ9Cy0LDQttC90L7RgdGC0YzQv9GA0L7QsdC70LXQvNGL0L/RgNC40LzQtdC90LXQvdC40Y/RgNCw0YHRiNC40YDQtdC90LjRj9C60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQstCw0YDQuNCw0L3RgtC40L3RgtC10YDRhNC10LnRgdCw0LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPINCy0LDRgNC40LDQvdGC0LzQsNGB0YjRgtCw0LHQsNGE0L7RgNC80LrQu9C40LXQvdGC0YHQutC+0LPQvtC/0YDQuNC70L7QttC10L3QuNGPICcgK1xuICAn0LLQsNGA0LjQsNC90YLQvtGB0L3QvtCy0L3QvtCz0L7RiNGA0LjRhNGC0LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0LLQsNGA0LjQsNC90YLRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L7Qv9C10YDQuNC+0LTQsCDQstCw0YDQuNCw0L3RgtGB0YLQsNC90LTQsNGA0YLQvdC+0LnQtNCw0YLRi9C90LDRh9Cw0LvQsCDQstC40LTQs9GA0LDQvdC40YbRiyDQstC40LTQutCw0YDRgtC40L3QutC4ICcgK1xuICAn0LLQuNC00L7RgtC+0LHRgNCw0LbQtdC90LjRj9C/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQvtC/0L7QuNGB0LrQsCDQstC40LTRgNCw0LzQutC4INCy0LjQtNGB0YDQsNCy0L3QtdC90LjRjyDQstC40LTRhtCy0LXRgtCwINCy0LjQtNGH0LjRgdC70L7QstC+0LPQvtC30L3QsNGH0LXQvdC40Y8g0LLQuNC00YjRgNC40YTRgtCwINC00L7Qv9GD0YHRgtC40LzQsNGP0LTQu9C40L3QsCDQtNC+0L/Rg9GB0YLQuNC80YvQudC30L3QsNC6ICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LVieXRlb3JkZXJtYXJrINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LzQtdGC0LDQtNCw0L3QvdGL0YXQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0LjRgdGC0L7Rh9C90LjQutGA0LDRgdGI0LjRgNC10L3QuNC50LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC60LvQsNCy0LjRiNCwINC60L7QtNCy0L7Qt9Cy0YDQsNGC0LDQtNC40LDQu9C+0LPQsCAnICtcbiAgJ9C60L7QtNC40YDQvtCy0LrQsHhiYXNlINC60L7QtNC40YDQvtCy0LrQsNGC0LXQutGB0YLQsCDQvdCw0L/RgNCw0LLQu9C10L3QuNC10L/QvtC40YHQutCwINC90LDQv9GA0LDQstC70LXQvdC40LXRgdC+0YDRgtC40YDQvtCy0LrQuCDQvtCx0L3QvtCy0LvQtdC90LjQtdC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9GF0LTQsNC90L3Ri9GFINC+0LHQvdC+0LLQu9C10L3QuNC10L/RgNC40LjQt9C80LXQvdC10L3QuNC40LTQsNC90L3Ri9GFICcgK1xuICAn0L7RgtC+0LHRgNCw0LbQtdC90LjQtdC/0LDQvdC10LvQuNGA0LDQt9C00LXQu9C+0LIg0L/RgNC+0LLQtdGA0LrQsNC30LDQv9C+0LvQvdC10L3QuNGPINGA0LXQttC40LzQtNC40LDQu9C+0LPQsNCy0L7Qv9GA0L7RgSDRgNC10LbQuNC80LfQsNC/0YPRgdC60LDQutC70LjQtdC90YLRgdC60L7Qs9C+0L/RgNC40LvQvtC20LXQvdC40Y8g0YDQtdC20LjQvNC+0LrRgNGD0LPQu9C10L3QuNGPINGA0LXQttC40LzQvtGC0LrRgNGL0YLQuNGP0YTQvtGA0LzQv9GA0LjQu9C+0LbQtdC90LjRjyAnICtcbiAgJ9GA0LXQttC40LzQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L7Qv9C+0LjRgdC60LAg0YHQutC+0YDQvtGB0YLRjNC60LvQuNC10L3RgtGB0LrQvtCz0L7RgdC+0LXQtNC40L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40LXQstC90LXRiNC90LXQs9C+0LjRgdGC0L7Rh9C90LjQutCw0LTQsNC90L3Ri9GFINGB0L7RgdGC0L7Rj9C90LjQtdC+0LHQvdC+0LLQu9C10L3QuNGP0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC40LHQsNC30YvQtNCw0L3QvdGL0YUgJyArXG4gICfRgdC/0L7RgdC+0LHQstGL0LHQvtGA0LDRgdC10YDRgtC40YTQuNC60LDRgtCwd2luZG93cyDRgdC/0L7RgdC+0LHQutC+0LTQuNGA0L7QstCw0L3QuNGP0YHRgtGA0L7QutC4INGB0YLQsNGC0YPRgdGB0L7QvtCx0YnQtdC90LjRjyDRgtC40L/QstC90LXRiNC90LXQudC60L7QvNC/0L7QvdC10L3RgtGLINGC0LjQv9C/0LvQsNGC0YTQvtGA0LzRiyDRgtC40L/Qv9C+0LLQtdC00LXQvdC40Y/QutC70LDQstC40YjQuGVudGVyICcgK1xuICAn0YLQuNC/0Y3Qu9C10LzQtdC90YLQsNC40L3RhNC+0YDQvNCw0YbQuNC40L7QstGL0L/QvtC70L3QtdC90LjQuNC+0LHQvdC+0LLQu9C10L3QuNGP0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC40LHQsNC30YvQtNCw0L3QvdGL0YUg0YPRgNC+0LLQtdC90YzQuNC30L7Qu9GP0YbQuNC40YLRgNCw0L3Qt9Cw0LrRhtC40Lkg0YXQtdGI0YTRg9C90LrRhtC40Y8g0YfQsNGB0YLQuNC00LDRgtGLJztcblxuICAvLyBjbGFzczog0LLRgdGC0YDQvtC10L3QvdGL0LUg0L3QsNCx0L7RgNGLINC30L3QsNGH0LXQvdC40LksINGB0LjRgdGC0LXQvNC90YvQtSDQv9C10YDQtdGH0LjRgdC70LXQvdC40Y8gKNGB0L7QtNC10YDQttCw0YIg0LTQvtGH0LXRgNC90LjQtSDQt9C90LDRh9C10L3QuNGPLCDQvtCx0YDQsNGJ0LXQvdC40Y8g0Log0LrQvtGC0L7RgNGL0Lwg0YfQtdGA0LXQtyDRgNCw0LfRi9C80LXQvdC+0LLQsNC90LjQtSlcbiAgdmFyIENMQVNTID1cbiAgdjhfc3lzdGVtX3NldHNfb2ZfdmFsdWVzICtcbiAgdjhfc3lzdGVtX2VudW1zX2ludGVyZmFjZSArXG4gIHY4X3N5c3RlbV9lbnVtc19vYmplY3RzX3Byb3BlcnRpZXMgK1xuICB2OF9zeXN0ZW1fZW51bXNfZXhjaGFuZ2VfcGxhbnMgK1xuICB2OF9zeXN0ZW1fZW51bXNfdGFidWxhcl9kb2N1bWVudCArXG4gIHY4X3N5c3RlbV9lbnVtc19zaGVkdWxlciArXG4gIHY4X3N5c3RlbV9lbnVtc19mb3JtYXR0ZWRfZG9jdW1lbnQgK1xuICB2OF9zeXN0ZW1fZW51bXNfcXVlcnkgK1xuICB2OF9zeXN0ZW1fZW51bXNfcmVwb3J0X2J1aWxkZXIgK1xuICB2OF9zeXN0ZW1fZW51bXNfZmlsZXMgK1xuICB2OF9zeXN0ZW1fZW51bXNfcXVlcnlfYnVpbGRlciArXG4gIHY4X3N5c3RlbV9lbnVtc19kYXRhX2FuYWx5c2lzICtcbiAgdjhfc3lzdGVtX2VudW1zX3htbF9qc29uX3hzX2RvbV94ZHRvX3dzICtcbiAgdjhfc3lzdGVtX2VudW1zX2RhdGFfY29tcG9zaXRpb25fc3lzdGVtICtcbiAgdjhfc3lzdGVtX2VudW1zX2VtYWlsICtcbiAgdjhfc3lzdGVtX2VudW1zX2xvZ2Jvb2sgK1xuICB2OF9zeXN0ZW1fZW51bXNfY3J5cHRvZ3JhcGh5ICtcbiAgdjhfc3lzdGVtX2VudW1zX3ppcCArXG4gIHY4X3N5c3RlbV9lbnVtc19vdGhlciArXG4gIHY4X3N5c3RlbV9lbnVtc19yZXF1ZXN0X3NjaGVtYSArXG4gIHY4X3N5c3RlbV9lbnVtc19wcm9wZXJ0aWVzX29mX21ldGFkYXRhX29iamVjdHMgK1xuICB2OF9zeXN0ZW1fZW51bXNfZGlmZmVyZW50cztcblxuICAvLyB2OCDQvtCx0YnQuNC1INC+0LHRitC10LrRgtGLICjRgyDQvtCx0YrQtdC60YLQvtCyINC10YHRgtGMINC60L7QvdGB0YLRgNGD0LrRgtC+0YAsINGN0LrQt9C10LzQv9C70Y/RgNGLINGB0L7Qt9C00LDRjtGC0YHRjyDQvNC10YLQvtC00L7QvCDQndCe0JLQq9CZKSA9PT4gdHlwZVxuICB2YXIgdjhfc2hhcmVkX29iamVjdCA9XG4gICdjb23QvtCx0YrQtdC60YIgZnRw0YHQvtC10LTQuNC90LXQvdC40LUgaHR0cNC30LDQv9GA0L7RgSBodHRw0YHQtdGA0LLQuNGB0L7RgtCy0LXRgiBodHRw0YHQvtC10LTQuNC90LXQvdC40LUgd3PQvtC/0YDQtdC00LXQu9C10L3QuNGPIHdz0L/RgNC+0LrRgdC4IHhiYXNlINCw0L3QsNC70LjQt9C00LDQvdC90YvRhSDQsNC90L3QvtGC0LDRhtC40Y94cyAnICtcbiAgJ9Cx0LvQvtC60LjRgNC+0LLQutCw0LTQsNC90L3Ri9GFINCx0YPRhNC10YDQtNCy0L7QuNGH0L3Ri9GF0LTQsNC90L3Ri9GFINCy0LrQu9GO0YfQtdC90LjQtXhzINCy0YvRgNCw0LbQtdC90LjQtdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINCz0LXQvdC10YDQsNGC0L7RgNGB0LvRg9GH0LDQudC90YvRhdGH0LjRgdC10Lsg0LPQtdC+0LPRgNCw0YTQuNGH0LXRgdC60LDRj9GB0YXQtdC80LAgJyArXG4gICfQs9C10L7Qs9GA0LDRhNC40YfQtdGB0LrQuNC10LrQvtC+0YDQtNC40L3QsNGC0Ysg0LPRgNCw0YTQuNGH0LXRgdC60LDRj9GB0YXQtdC80LAg0LPRgNGD0L/Qv9Cw0LzQvtC00LXQu9C4eHMg0LTQsNC90L3Ri9C10YDQsNGB0YjQuNGE0YDQvtCy0LrQuNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC00LLQvtC40YfQvdGL0LXQtNCw0L3QvdGL0LUg0LTQtdC90LTRgNC+0LPRgNCw0LzQvNCwICcgK1xuICAn0LTQuNCw0LPRgNCw0LzQvNCwINC00LjQsNCz0YDQsNC80LzQsNCz0LDQvdGC0LAg0LTQuNCw0LvQvtCz0LLRi9Cx0L7RgNCw0YTQsNC50LvQsCDQtNC40LDQu9C+0LPQstGL0LHQvtGA0LDRhtCy0LXRgtCwINC00LjQsNC70L7Qs9Cy0YvQsdC+0YDQsNGI0YDQuNGE0YLQsCDQtNC40LDQu9C+0LPRgNCw0YHQv9C40YHQsNC90LjRj9GA0LXQs9C70LDQvNC10L3RgtC90L7Qs9C+0LfQsNC00LDQvdC40Y8gJyArXG4gICfQtNC40LDQu9C+0LPRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGP0YHRgtCw0L3QtNCw0YDRgtC90L7Qs9C+0L/QtdGA0LjQvtC00LAg0LTQuNCw0L/QsNC30L7QvSDQtNC+0LrRg9C80LXQvdGCZG9tINC00L7QutGD0LzQtdC90YJodG1sINC00L7QutGD0LzQtdC90YLQsNGG0LjRj3hzINC00L7RgdGC0LDQstC70Y/QtdC80L7QtdGD0LLQtdC00L7QvNC70LXQvdC40LUgJyArXG4gICfQt9Cw0L/QuNGB0Yxkb20g0LfQsNC/0LjRgdGMZmFzdGluZm9zZXQg0LfQsNC/0LjRgdGMaHRtbCDQt9Cw0L/QuNGB0Yxqc29uINC30LDQv9C40YHRjHhtbCDQt9Cw0L/QuNGB0Yx6aXDRhNCw0LnQu9CwINC30LDQv9C40YHRjNC00LDQvdC90YvRhSDQt9Cw0L/QuNGB0YzRgtC10LrRgdGC0LAg0LfQsNC/0LjRgdGM0YPQt9C70L7QsmRvbSAnICtcbiAgJ9C30LDQv9GA0L7RgSDQt9Cw0YnQuNGJ0LXQvdC90L7QtdGB0L7QtdC00LjQvdC10L3QuNC1b3BlbnNzbCDQt9C90LDRh9C10L3QuNGP0L/QvtC70LXQudGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQuNC30LLQu9C10YfQtdC90LjQtdGC0LXQutGB0YLQsCDQuNC80L/QvtGA0YJ4cyDQuNC90YLQtdGA0L3QtdGC0L/QvtGH0YLQsCAnICtcbiAgJ9C40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLQvtC10YHQvtC+0LHRidC10L3QuNC1INC40L3RgtC10YDQvdC10YLQv9C+0YfRgtC+0LLRi9C50L/RgNC+0YTQuNC70Ywg0LjQvdGC0LXRgNC90LXRgtC/0YDQvtC60YHQuCDQuNC90YLQtdGA0L3QtdGC0YHQvtC10LTQuNC90LXQvdC40LUg0LjQvdGE0L7RgNC80LDRhtC40Y/QtNC70Y/Qv9GA0LjQu9C+0LbQtdC90LjRj3hzICcgK1xuICAn0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQsNGC0YDQuNCx0YPRgtCweHMg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXRgdC+0LHRi9GC0LjRj9C20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQuNGB0YLQvtGH0L3QuNC60LTQvtGB0YLRg9C/0L3Ri9GF0L3QsNGB0YLRgNC+0LXQutC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFICcgK1xuICAn0LjRgtC10YDQsNGC0L7RgNGD0LfQu9C+0LJkb20g0LrQsNGA0YLQuNC90LrQsCDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9C00LDRgtGLINC60LLQsNC70LjRhNC40LrQsNGC0L7RgNGL0LTQstC+0LjRh9C90YvRhdC00LDQvdC90YvRhSDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9GB0YLRgNC+0LrQuCDQutCy0LDQu9C40YTQuNC60LDRgtC+0YDRi9GH0LjRgdC70LAgJyArXG4gICfQutC+0LzQv9C+0L3QvtCy0YnQuNC60LzQsNC60LXRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LrQvtC80L/QvtC90L7QstGJ0LjQutC90LDRgdGC0YDQvtC10LrQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQutC+0L3RgdGC0YDRg9C60YLQvtGA0LzQsNC60LXRgtCw0L7RhNC+0YDQvNC70LXQvdC40Y/QutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C60L7QvdGB0YLRgNGD0LrRgtC+0YDQvdCw0YHRgtGA0L7QtdC60LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0LrQvtC90YHRgtGA0YPQutGC0L7RgNGE0L7RgNC80LDRgtC90L7QudGB0YLRgNC+0LrQuCDQu9C40L3QuNGPINC80LDQutC10YLQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvNCw0LrQtdGC0L7QsdC70LDRgdGC0LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C80LDQutC10YLQvtGE0L7RgNC80LvQtdC90LjRj9C60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC80LDRgdC60LB4cyDQvNC10L3QtdC00LbQtdGA0LrRgNC40L/RgtC+0LPRgNCw0YTQuNC4INC90LDQsdC+0YDRgdGF0LXQvHhtbCDQvdCw0YHRgtGA0L7QudC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSDQvdCw0YHRgtGA0L7QudC60LjRgdC10YDQuNCw0LvQuNC30LDRhtC40Lhqc29uICcgK1xuICAn0L7QsdGA0LDQsdC+0YLQutCw0LrQsNGA0YLQuNC90L7QuiDQvtCx0YDQsNCx0L7RgtC60LDRgNCw0YHRiNC40YTRgNC+0LLQutC40LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0L7QsdGF0L7QtNC00LXRgNC10LLQsGRvbSDQvtCx0YrRj9Cy0LvQtdC90LjQtdCw0YLRgNC40LHRg9GC0LB4cyDQvtCx0YrRj9Cy0LvQtdC90LjQtdC90L7RgtCw0YbQuNC4eHMgJyArXG4gICfQvtCx0YrRj9Cy0LvQtdC90LjQtdGN0LvQtdC80LXQvdGC0LB4cyDQvtC/0LjRgdCw0L3QuNC10LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y/RgdC+0LHRi9GC0LjRj9C00L7RgdGC0YPQv9C20YPRgNC90LDQu9Cw0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCAnICtcbiAgJ9C+0L/QuNGB0LDQvdC40LXQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRj9GB0L7QsdGL0YLQuNGP0L7RgtC60LDQt9Cy0LTQvtGB0YLRg9C/0LXQttGD0YDQvdCw0LvQsNGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L7Qv9C40YHQsNC90LjQtdC+0LHRgNCw0LHQvtGC0LrQuNGA0LDRgdGI0LjRhNGA0L7QstC60LjQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C+0L/QuNGB0LDQvdC40LXQv9C10YDQtdC00LDQstCw0LXQvNC+0LPQvtGE0LDQudC70LAg0L7Qv9C40YHQsNC90LjQtdGC0LjQv9C+0LIg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdCz0YDRg9C/0L/Ri9Cw0YLRgNC40LHRg9GC0L7QsnhzINC+0L/RgNC10LTQtdC70LXQvdC40LXQs9GA0YPQv9C/0YvQvNC+0LTQtdC70Lh4cyAnICtcbiAgJ9C+0L/RgNC10LTQtdC70LXQvdC40LXQvtCz0YDQsNC90LjRh9C10L3QuNGP0LjQtNC10L3RgtC40YfQvdC+0YHRgtC4eHMg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdC/0YDQvtGB0YLQvtCz0L7RgtC40L/QsHhzINC+0L/RgNC10LTQtdC70LXQvdC40LXRgdC+0YHRgtCw0LLQvdC+0LPQvtGC0LjQv9CweHMg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdGC0LjQv9Cw0LTQvtC60YPQvNC10L3RgtCwZG9tICcgK1xuICAn0L7Qv9GA0LXQtNC10LvQtdC90LjRj3hwYXRoeHMg0L7RgtCx0L7RgNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC/0LDQutC10YLQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YXQtNC+0LrRg9C80LXQvdGC0L7QsiDQv9Cw0YDQsNC80LXRgtGA0LLRi9Cx0L7RgNCwINC/0LDRgNCw0LzQtdGC0YDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhSAnICtcbiAgJ9C/0LDRgNCw0LzQtdGC0YDRi9C30LDQv9C40YHQuGpzb24g0L/QsNGA0LDQvNC10YLRgNGL0LfQsNC/0LjRgdC4eG1sINC/0LDRgNCw0LzQtdGC0YDRi9GH0YLQtdC90LjRj3htbCDQv9C10YDQtdC+0L/RgNC10LTQtdC70LXQvdC40LV4cyDQv9C70LDQvdC40YDQvtCy0YnQuNC6INC/0L7Qu9C10LDQvdCw0LvQuNC30LDQtNCw0L3QvdGL0YUgJyArXG4gICfQv9C+0LvQtdC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GFINC/0L7RgdGC0YDQvtC40YLQtdC70Yxkb20g0L/QvtGB0YLRgNC+0LjRgtC10LvRjNC30LDQv9GA0L7RgdCwINC/0L7RgdGC0YDQvtC40YLQtdC70YzQvtGC0YfQtdGC0LAg0L/QvtGB0YLRgNC+0LjRgtC10LvRjNC+0YLRh9C10YLQsNCw0L3QsNC70LjQt9Cw0LTQsNC90L3Ri9GFICcgK1xuICAn0L/QvtGB0YLRgNC+0LjRgtC10LvRjNGB0YXQtdC8eG1sINC/0L7RgtC+0Log0L/QvtGC0L7QutCy0L/QsNC80Y/RgtC4INC/0L7Rh9GC0LAg0L/QvtGH0YLQvtCy0L7QtdGB0L7QvtCx0YnQtdC90LjQtSDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC1eHNsINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40LXQutC60LDQvdC+0L3QuNGH0LXRgdC60L7QvNGDeG1sICcgK1xuICAn0L/RgNC+0YbQtdGB0YHQvtGA0LLRi9Cy0L7QtNCw0YDQtdC30YPQu9GM0YLQsNGC0LDQutC+0LzQv9C+0L3QvtCy0LrQuNC00LDQvdC90YvRhdCy0LrQvtC70LvQtdC60YbQuNGO0LfQvdCw0YfQtdC90LjQuSDQv9GA0L7RhtC10YHRgdC+0YDQstGL0LLQvtC00LDRgNC10LfRg9C70YzRgtCw0YLQsNC60L7QvNC/0L7QvdC+0LLQutC40LTQsNC90L3Ri9GF0LLRgtCw0LHQu9C40YfQvdGL0LnQtNC+0LrRg9C80LXQvdGCICcgK1xuICAn0L/RgNC+0YbQtdGB0YHQvtGA0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YDQsNC30YvQvNC10L3QvtCy0LDRgtC10LvRjNC/0YDQvtGB0YLRgNCw0L3RgdGC0LLQuNC80LXQvWRvbSDRgNCw0LzQutCwINGA0LDRgdC/0LjRgdCw0L3QuNC10YDQtdCz0LvQsNC80LXQvdGC0L3QvtCz0L7Qt9Cw0LTQsNC90LjRjyDRgNCw0YHRiNC40YDQtdC90L3QvtC10LjQvNGPeG1sICcgK1xuICAn0YDQtdC30YPQu9GM0YLQsNGC0YfRgtC10L3QuNGP0LTQsNC90L3Ri9GFINGB0LLQvtC00L3QsNGP0LTQuNCw0LPRgNCw0LzQvNCwINGB0LLRj9C30YzQv9Cw0YDQsNC80LXRgtGA0LDQstGL0LHQvtGA0LAg0YHQstGP0LfRjNC/0L7RgtC40L/RgyDRgdCy0Y/Qt9GM0L/QvtGC0LjQv9GD0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YHQtdGA0LjQsNC70LjQt9Cw0YLQvtGAeGR0byAnICtcbiAgJ9GB0LXRgNGC0LjRhNC40LrQsNGC0LrQu9C40LXQvdGC0LB3aW5kb3dzINGB0LXRgNGC0LjRhNC40LrQsNGC0LrQu9C40LXQvdGC0LDRhNCw0LnQuyDRgdC10YDRgtC40YTQuNC60LDRgtC60YDQuNC/0YLQvtCz0YDQsNGE0LjQuCDRgdC10YDRgtC40YTQuNC60LDRgtGL0YPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjRhdGG0LXQvdGC0YDQvtCyd2luZG93cyAnICtcbiAgJ9GB0LXRgNGC0LjRhNC40LrQsNGC0YvRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNGF0YbQtdC90YLRgNC+0LLRhNCw0LnQuyDRgdC20LDRgtC40LXQtNCw0L3QvdGL0YUg0YHQuNGB0YLQtdC80L3QsNGP0LjQvdGE0L7RgNC80LDRhtC40Y8g0YHQvtC+0LHRidC10L3QuNC10L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOINGB0L7Rh9C10YLQsNC90LjQtdC60LvQsNCy0LjRiCAnICtcbiAgJ9GB0YDQsNCy0L3QtdC90LjQtdC30L3QsNGH0LXQvdC40Lkg0YHRgtCw0L3QtNCw0YDRgtC90LDRj9C00LDRgtCw0L3QsNGH0LDQu9CwINGB0YLQsNC90LTQsNGA0YLQvdGL0LnQv9C10YDQuNC+0LQg0YHRhdC10LzQsHhtbCDRgdGF0LXQvNCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUg0YLQsNCx0LvQuNGH0L3Ri9C50LTQvtC60YPQvNC10L3RgiAnICtcbiAgJ9GC0LXQutGB0YLQvtCy0YvQudC00L7QutGD0LzQtdC90YIg0YLQtdGB0YLQuNGA0YPQtdC80L7QtdC/0YDQuNC70L7QttC10L3QuNC1INGC0LjQv9C00LDQvdC90YvRhXhtbCDRg9C90LjQutCw0LvRjNC90YvQudC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGE0LDQsdGA0LjQutCweGR0byDRhNCw0LnQuyDRhNCw0LnQu9C+0LLRi9C50L/QvtGC0L7QuiAnICtcbiAgJ9GE0LDRgdC10YLQtNC70LjQvdGLeHMg0YTQsNGB0LXRgtC60L7Qu9C40YfQtdGB0YLQstCw0YDQsNC30YDRj9C00L7QstC00YDQvtCx0L3QvtC50YfQsNGB0YLQuHhzINGE0LDRgdC10YLQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQvtCy0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMgJyArXG4gICfRhNCw0YHQtdGC0LzQsNC60YHQuNC80LDQu9GM0L3QvtCz0L7QuNGB0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMg0YTQsNGB0LXRgtC80LDQutGB0LjQvNCw0LvRjNC90L7QudC00LvQuNC90Yt4cyDRhNCw0YHQtdGC0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+0LLQutC70Y7Rh9Cw0Y7RidC10LPQvtC30L3QsNGH0LXQvdC40Y94cyAnICtcbiAgJ9GE0LDRgdC10YLQvNC40L3QuNC80LDQu9GM0L3QvtCz0L7QuNGB0LrQu9GO0YfQsNGO0YnQtdCz0L7Qt9C90LDRh9C10L3QuNGPeHMg0YTQsNGB0LXRgtC80LjQvdC40LzQsNC70YzQvdC+0LnQtNC70LjQvdGLeHMg0YTQsNGB0LXRgtC+0LHRgNCw0LfRhtCweHMg0YTQsNGB0LXRgtC+0LHRidC10LPQvtC60L7Qu9C40YfQtdGB0YLQstCw0YDQsNC30YDRj9C00L7QsnhzICcgK1xuICAn0YTQsNGB0LXRgtC/0LXRgNC10YfQuNGB0LvQtdC90LjRj3hzINGE0LDRgdC10YLQv9GA0L7QsdC10LvRjNC90YvRhdGB0LjQvNCy0L7Qu9C+0LJ4cyDRhNC40LvRjNGC0YDRg9C30LvQvtCyZG9tINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90LDRj9GB0YLRgNC+0LrQsCDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QvdGL0LnQtNC+0LrRg9C80LXQvdGCICcgK1xuICAn0YTRgNCw0LPQvNC10L3RgnhzINGF0LXRiNC40YDQvtCy0LDQvdC40LXQtNCw0L3QvdGL0YUg0YXRgNCw0L3QuNC70LjRidC10LfQvdCw0YfQtdC90LjRjyDRhtCy0LXRgiDRh9GC0LXQvdC40LVmYXN0aW5mb3NldCDRh9GC0LXQvdC40LVodG1sINGH0YLQtdC90LjQtWpzb24g0YfRgtC10L3QuNC1eG1sINGH0YLQtdC90LjQtXppcNGE0LDQudC70LAgJyArXG4gICfRh9GC0LXQvdC40LXQtNCw0L3QvdGL0YUg0YfRgtC10L3QuNC10YLQtdC60YHRgtCwINGH0YLQtdC90LjQtdGD0LfQu9C+0LJkb20g0YjRgNC40YTRgiDRjdC70LXQvNC10L3RgtGA0LXQt9GD0LvRjNGC0LDRgtCw0LrQvtC80L/QvtC90L7QstC60LjQtNCw0L3QvdGL0YUgJztcblxuICAvLyB2OCDRg9C90LjQstC10YDRgdCw0LvRjNC90YvQtSDQutC+0LvQu9C10LrRhtC40Lgg0LfQvdCw0YfQtdC90LjQuSA9PT4gdHlwZVxuICB2YXIgdjhfdW5pdmVyc2FsX2NvbGxlY3Rpb24gPVxuICAnY29tc2FmZWFycmF5INC00LXRgNC10LLQvtC30L3QsNGH0LXQvdC40Lkg0LzQsNGB0YHQuNCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDRgdC/0LjRgdC+0LrQt9C90LDRh9C10L3QuNC5INGB0YLRgNGD0LrRgtGD0YDQsCDRgtCw0LHQu9C40YbQsNC30L3QsNGH0LXQvdC40Lkg0YTQuNC60YHQuNGA0L7QstCw0L3QvdCw0Y/RgdGC0YDRg9C60YLRg9GA0LAgJyArXG4gICfRhNC40LrRgdC40YDQvtCy0LDQvdC90L7QtdGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQudC80LDRgdGB0LjQsiAnO1xuXG4gIC8vIHR5cGUgOiDQstGB0YLRgNC+0LXQvdC90YvQtSDRgtC40L/Ri1xuICB2YXIgVFlQRSA9XG4gIHY4X3NoYXJlZF9vYmplY3QgK1xuICB2OF91bml2ZXJzYWxfY29sbGVjdGlvbjtcblxuICAvLyBsaXRlcmFsIDog0L/RgNC40LzQuNGC0LjQstC90YvQtSDRgtC40L/Ri1xuICB2YXIgTElURVJBTCA9ICdudWxsINC40YHRgtC40L3QsCDQu9C+0LbRjCDQvdC10L7Qv9GA0LXQtNC10LvQtdC90L4nO1xuICBcbiAgLy8gbnVtYmVyIDog0YfQuNGB0LvQsFxuICB2YXIgTlVNQkVSUyA9IGhsanMuaW5oZXJpdChobGpzLk5VTUJFUl9NT0RFKTtcblxuICAvLyBzdHJpbmcgOiDRgdGC0YDQvtC60LhcbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wifFxcXFx8JywgZW5kOiAnXCJ8JCcsXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dXG4gIH07XG5cbiAgLy8gbnVtYmVyIDog0LTQsNGC0YtcbiAgdmFyIERBVEUgPSB7XG4gICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiLCBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcZHs0fShbXFxcXC5cXFxcXFxcXC86LV0/XFxcXGR7Mn0pezAsNX0nXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBcbiAgLy8gY29tbWVudCA6INC60L7QvNC80LXQvdGC0LDRgNC40LhcbiAgdmFyIENPTU1FTlRTID0gaGxqcy5pbmhlcml0KGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSk7XG4gIFxuICAvLyBtZXRhIDog0LjQvdGB0YLRgNGD0LrRhtC40Lgg0L/RgNC10L/RgNC+0YbQtdGB0YHQvtGA0LAsINC00LjRgNC10LrRgtC40LLRiyDQutC+0LzQv9C40LvRj9GG0LjQuFxuICB2YXIgTUVUQSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGJlZ2luOiAnI3wmJywgZW5kOiAnJCcsXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogS0VZV09SRCArIE1FVEFLRVlXT1JEfSxcbiAgICBjb250YWluczogW1xuICAgICAgQ09NTUVOVFNcbiAgICBdXG4gIH07XG4gIFxuICAvLyBzeW1ib2wgOiDQvNC10YLQutCwIGdvdG9cbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnficsIGVuZDogJzt8OicsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTsgIFxuICBcbiAgLy8gZnVuY3Rpb24gOiDQvtCx0YrRj9Cy0LvQtdC90LjQtSDQv9GA0L7RhtC10LTRg9GAINC4INGE0YPQvdC60YbQuNC5XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAn0L/RgNC+0YbQtdC00YPRgNCwfNGE0YPQvdC60YbQuNGPJywgZW5kOiAnXFxcXCknLCBrZXl3b3JkczogJ9C/0YDQvtGG0LXQtNGD0YDQsCDRhNGD0L3QutGG0LjRjyd9LFxuICAgICAge2JlZ2luOiAn0LrQvtC90LXRhtC/0YDQvtGG0LXQtNGD0YDRi3zQutC+0L3QtdGG0YTRg9C90LrRhtC40LgnLCBrZXl3b3JkczogJ9C60L7QvdC10YbQv9GA0L7RhtC10LTRg9GA0Ysg0LrQvtC90LXRhtGE0YPQvdC60YbQuNC4J31cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGVuZHNQYXJlbnQgOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgICAgYmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkUsIGVuZDogJywnLCBleGNsdWRlRW5kOiB0cnVlLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIGtleXdvcmQ6ICfQt9C90LDRhycsXG4gICAgICAgICAgICAgIGxpdGVyYWw6IExJVEVSQUxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBOVU1CRVJTLFxuICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICBEQVRFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBDT01NRU5UU1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFfSlcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkQsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTixcbiAgICAgIGNsYXNzOiBDTEFTUyxcbiAgICAgIHR5cGU6IFRZUEUsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgTUVUQSxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgQ09NTUVOVFMsXG4gICAgICBTWU1CT0wsXG4gICAgICBOVU1CRVJTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIERBVEVcbiAgICBdICBcbiAgfVxufTsiLCIndXNlIHN0cmljdCdcblxudmFyIGxvdyA9IHJlcXVpcmUoJy4vbGliL2NvcmUuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvd1xuXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnMWMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy8xYycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FibmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hYm5mJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2FjY2Vzc2xvZycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjY2Vzc2xvZycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2FjdGlvbnNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FjdGlvbnNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYWRhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYWRhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2FuZ2Vsc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYW5nZWxzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FwYWNoZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwYWNoZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhcHBsZXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwcGxlc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcmNhZGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcmNhZGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcHAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jcHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhcmR1aW5vJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXJkdWlubycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FybWFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FybWFzbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3htbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3htbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2FzY2lpZG9jJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXNjaWlkb2MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdhc3BlY3RqJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXNwZWN0aicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdhdXRvaG90a2V5JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2hvdGtleScpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXV0b2l0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXV0b2l0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXZyYXNtJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXZyYXNtJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXdrJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXdrJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYXhhcHRhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYXhhcHRhJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYmFzaCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2gnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdiYXNpYycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Jhc2ljJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYm5mJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2JyYWluZnVjaycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2JyYWluZnVjaycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY2FsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2NhcG5wcm90bycsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NhcG5wcm90bycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY2V5bG9uJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2V5bG9uJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY2xlYW4nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Nsb2p1cmUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2Nsb2p1cmUtcmVwbCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Nsb2p1cmUtcmVwbCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnY21ha2UnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdjb2ZmZWVzY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jb2ZmZWVzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NvcScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NvcScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NvcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2NvcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NybXNoJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3Jtc2gnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjcnlzdGFsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3J5c3RhbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3AnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdjc3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jc3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21hcmtkb3duJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWFya2Rvd24nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkYXJ0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGFydCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RlbHBoaScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RlbHBoaScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2RpZmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kaWZmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZGphbmdvJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZGphbmdvJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZG5zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG5zJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2RvY2tlcmZpbGUnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb2NrZXJmaWxlJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkb3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9kb3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdkc2NvbmZpZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2RzY29uZmlnJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHRzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZHVzdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2R1c3QnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdlYm5mJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VsaXhpcicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VsaXhpcicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VsbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VsbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3J1YnknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydWJ5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZXJiJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJiJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2VybGFuZy1yZXBsJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXJsYW5nLXJlcGwnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2VybGFuZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2VybGFuZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2V4Y2VsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZXhjZWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdmaXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9maXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdmbGl4JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZmxpeCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2ZvcnRyYW4nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mb3J0cmFuJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZnNoYXJwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZnNoYXJwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2FtcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhbXMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnYXVzcycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dhdXNzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2NvZGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nY29kZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2doZXJraW4nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9naGVya2luJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ2xzbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dsc2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdnbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dvJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnZ29sbycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2dvbG8nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdncmFkbGUnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFkbGUnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdncm9vdnknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncm9vdnknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoYW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdoYW5kbGViYXJzJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGFuZGxlYmFycycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnaGFza2VsbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhc2tlbGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdoYXhlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaGF4ZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2hzcCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hzcCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2h0bWxiYXJzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHRtbGJhcnMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdodHRwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHR0cCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2h5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaHknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdpbmZvcm03JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaW5mb3JtNycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2luaScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2luaScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2lycGY5MCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2lycGY5MCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2lzYmwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pc2JsJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnamF2YScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2phdmEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnamF2YXNjcmlwdCcsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2phdmFzY3JpcHQnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdqYm9zcy1jbGknLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qYm9zcy1jbGknKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2pzb24nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnanVsaWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qdWxpYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdqdWxpYS1yZXBsJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvanVsaWEtcmVwbCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgna290bGluJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMva290bGluJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGFzc28nLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sYXNzbycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xkaWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sZGlmJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGVhZicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xlYWYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsZXNzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGVzcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xpc3AnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9saXNwJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ2xpdmVjb2Rlc2VydmVyJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZWNvZGVzZXJ2ZXInKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdsaXZlc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGl2ZXNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbGx2bScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2xsdm0nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sc2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdsdWEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9sdWEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtYWtlZmlsZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21ha2VmaWxlJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ21hdGhlbWF0aWNhJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21hdGxhYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGxhYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21heGltYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21heGltYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21lbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21lbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ21lcmN1cnknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tZXJjdXJ5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbWlwc2FzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pcHNhc20nKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdtaXphcicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pemFyJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGVybCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BlcmwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnbW9qb2xpY2lvdXMnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb2pvbGljaW91cycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnbW9ua2V5JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9ua2V5JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ21vb25zY3JpcHQnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9tb29uc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduMXFsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbjFxbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ25naW54JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbmdpbngnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduaW1yb2QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaW1yb2QnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduaXgnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9uaXgnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCduc2lzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbnNpcycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdvYmplY3RpdmVjJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb2JqZWN0aXZlYycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnb2NhbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9vY2FtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ29wZW5zY2FkJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb3BlbnNjYWQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdveHlnZW5lJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvb3h5Z2VuZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BhcnNlcjMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wYXJzZXIzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncGYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Bnc3FsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGdzcWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwaHAnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9waHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncGxhaW50ZXh0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGxhaW50ZXh0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwb255JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcG9ueScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwb3dlcnNoZWxsJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcG93ZXJzaGVsbCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZShcbiAgJ3Byb2Nlc3NpbmcnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm9jZXNzaW5nJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdwcm9maWxlJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvZmlsZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Byb2xvZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwcm9wZXJ0aWVzJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvcGVydGllcycpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncHJvdG9idWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wcm90b2J1ZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3B1cHBldCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B1cHBldCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICdwdXJlYmFzaWMnLFxuICByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9wdXJlYmFzaWMnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3B5dGhvbicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B5dGhvbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3EnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9xJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcW1sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3InKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyZWFzb25tbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3JlYXNvbm1sJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncmliJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcmliJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgncm9ib2NvbmYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yb2JvY29uZicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3JvdXRlcm9zJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcm91dGVyb3MnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdyc2wnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9yc2wnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAncnVsZXNsYW5ndWFnZScsXG4gIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3J1bGVzbGFuZ3VhZ2UnKVxuKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3J1c3QnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ydXN0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc2FzJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2FzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc2NhbGEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2FsYScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NjaGVtZScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaGVtZScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NjaWxhYicsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3NjaWxhYicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Njc3MnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY3NzJykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgnc2hlbGwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zaGVsbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3NtYWxpJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21hbGknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAnc21hbGx0YWxrJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc21hbGx0YWxrJylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzbWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zbWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzcWYnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWYnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzcWwnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zcWwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGFuJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RhbicpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3N0YXRhJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3RhdGEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdGVwMjEnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdGVwMjEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdHlsdXMnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zdHlsdXMnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCdzdWJ1bml0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3VidW5pdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3N3aWZ0JywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc3dpZnQnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKFxuICAndGFnZ2Vyc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdGFnZ2Vyc2NyaXB0Jylcbilcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd5YW1sJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveWFtbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RhcCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RhcCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RjbCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RjbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RleCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RleCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RocmlmdCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3RocmlmdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3RwJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHAnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd0d2lnJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHdpZycpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICd0eXBlc2NyaXB0JyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdHlwZXNjcmlwdCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmFsYScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZhbGEnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2Ym5ldCcsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZibmV0JykpXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmJzY3JpcHQnLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy92YnNjcmlwdCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoXG4gICd2YnNjcmlwdC1odG1sJyxcbiAgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmJzY3JpcHQtaHRtbCcpXG4pXG5sb3cucmVnaXN0ZXJMYW5ndWFnZSgndmVyaWxvZycsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Zlcmlsb2cnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd2aGRsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmhkbCcpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3ZpbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3g4NmFzbScsIHJlcXVpcmUoJ2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3g4NmFzbScpKVxubG93LnJlZ2lzdGVyTGFuZ3VhZ2UoJ3hsJywgcmVxdWlyZSgnaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveGwnKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd4cXVlcnknLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy94cXVlcnknKSlcbmxvdy5yZWdpc3Rlckxhbmd1YWdlKCd6ZXBoaXInLCByZXF1aXJlKCdoaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy96ZXBoaXInKSlcbiIsImltcG9ydCBsb3cgZnJvbSAnbG93bGlnaHQnXG5pbXBvcnQgdmlzaXQgZnJvbSAndW5pc3QtdXRpbC12aXNpdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoZXIoe2luY2x1ZGUsIGV4Y2x1ZGV9ID0ge30pIHtcbiAgcmV0dXJuIGFzdCA9PiB2aXNpdChhc3QsICdjb2RlJywgdmlzaXRvcilcblxuICBmdW5jdGlvbiB2aXNpdG9yKG5vZGUpIHtcbiAgICBsZXQge2xhbmcsIGRhdGF9ID0gbm9kZVxuXG4gICAgaWYgKFxuICAgICAgIWxhbmcgfHxcbiAgICAgIChpbmNsdWRlICYmIGluY2x1ZGUuaW5kZXhPZihsYW5nKSA9PT0gLTEpIHx8XG4gICAgICAoZXhjbHVkZSAmJiBleGNsdWRlLmluZGV4T2YobGFuZykgIT09IC0xKVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBkYXRhID0ge31cbiAgICAgIG5vZGUuZGF0YSA9IGRhdGFcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEuaFByb3BlcnRpZXMpIHtcbiAgICAgIGRhdGEuaFByb3BlcnRpZXMgPSB7fVxuICAgIH1cblxuICAgIGRhdGEuaENoaWxkcmVuID0gbG93LmhpZ2hsaWdodChsYW5nLCBub2RlLnZhbHVlKS52YWx1ZVxuICAgIGRhdGEuaFByb3BlcnRpZXMuY2xhc3NOYW1lID0gW1xuICAgICAgJ2hsanMnLFxuICAgICAgLi4uKGRhdGEuaFByb3BlcnRpZXMuY2xhc3NOYW1lIHx8IFtdKSxcbiAgICAgICdsYW5ndWFnZS0nICsgbGFuZ1xuICAgIF1cbiAgfVxufVxuIiwiY29uc3QgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0Jyk7XG5cbmZ1bmN0aW9uIGRlYWxMYWJlbENoaWxkcmVuKGxpc3RDaGlsZCkge1xuICBsZXQgdCA9IFtdO1xuICBpZiAobGlzdENoaWxkWzBdLnR5cGUgPT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgdCA9IGxpc3RDaGlsZFswXS5jaGlsZHJlbjtcbiAgfVxuICB0WzBdLnZhbHVlID0gdFswXS52YWx1ZS50cmltKCk7XG4gIGlmIChsaXN0Q2hpbGRbbGlzdENoaWxkLmxlbmd0aCAtIDFdLnR5cGUgPT09ICdibG9ja3F1b3RlJykge1xuICAgIGxpc3RDaGlsZFtsaXN0Q2hpbGQubGVuZ3RoIC0gMV0udHlwZSA9ICdkaXYnO1xuICAgIGxpc3RDaGlsZFtsaXN0Q2hpbGQubGVuZ3RoIC0gMV0uZGF0YSA9IHtcbiAgICAgIGhOYW1lOiAnYmxvY2txdW90ZScsXG4gICAgICBoUHJvcGVydGllczoge1xuICAgICAgICBjbGFzc05hbWU6ICdoaWRlbl9ibG9ja19xdW90ZScsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgdCA9IHQuY29uY2F0KGxpc3RDaGlsZC5zbGljZSgxKSk7XG4gIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiB2aXNpdExpc3QoYXN0KSB7XG4gIGxldCBuYk1DID0gMDtcbiAgcmV0dXJuIHZpc2l0KGFzdCwgJ2xpc3QnLCBub2RlID0+IHtcbiAgICBsZXQgaXNNdWx0aXBsZUNob2lzZSA9IHRydWU7XG4gICAgbGV0IG5iUSA9IDA7XG4gICAgY29uc3QgdGFiID0gW107XG5cbiAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pLmZvckVhY2gobm9kZUMgPT4ge1xuICAgICAgaWYgKG5vZGVDLmNoaWxkcmVuICYmIG5vZGVDLmNoaWxkcmVuWzBdLnR5cGUgPT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICAgIGlmIChub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlbiAmJiBub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZSkge1xuICAgICAgICAgIGlmICgnfiE9Jy5pbmRleE9mKG5vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlWzBdKSA8IDApIHtcbiAgICAgICAgICAgIGlzTXVsdGlwbGVDaG9pc2UgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNNdWx0aXBsZUNob2lzZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc011bHRpcGxlQ2hvaXNlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGlzTXVsdGlwbGVDaG9pc2UpIHtcbiAgICAgIEFycmF5LmZyb20obm9kZS5jaGlsZHJlbikuZm9yRWFjaChub2RlQyA9PiB7XG4gICAgICAgIGlmIChub2RlQy5jaGlsZHJlblswXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgICAgIGlmIChub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZVswXSA9PT0gJ34nKSB7XG4gICAgICAgICAgICB0YWIucHVzaCgwLjUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobm9kZUMuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0udmFsdWVbMF0gPT09ICchJykge1xuICAgICAgICAgICAgdGFiLnB1c2goMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhYi5wdXNoKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlQy5jaGlsZHJlblswXS5jaGlsZHJlblswXS52YWx1ZSA9IGAke25vZGVDLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLnZhbHVlLnNsaWNlKDEpfVxccmA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbm9kZS50eXBlID0gJ21jJztcbiAgICAgIG5vZGUuZGF0YSA9IHtcbiAgICAgICAgaE5hbWU6ICdmaWVsZHNldCcsXG4gICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnbWMgY2hlY2snLFxuICAgICAgICAgIGlkOiBgbWNfJHtuYk1DfWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IFt7XG4gICAgICAgIHR5cGU6ICdsaXN0LWl0ZW0tbWMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICd1bCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuLm1hcCh4ID0+ICh7dHlwZTogJ2lucHV0LWxpc3QtaXRlbScsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaE5hbWU6ICdsaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge3R5cGU6ICdpbnB1dC1saXN0LWlucHV0JyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGhOYW1lOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiB4LmNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgICAgICAgaWQ6IGBtY18ke25iTUN9XyR7bmJRfWAsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICchfj0nW3RhYltuYlFdICogMl0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdpbnB1dC1saXN0LWxhYmVsJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGhOYW1lOiAnbGFiZWwnLFxuICAgICAgICAgICAgICAgIGhQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBmb3I6IGBtY18ke25iTUN9XyR7bmJRKyt9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogZGVhbExhYmVsQ2hpbGRyZW4oeC5jaGlsZHJlbiksXG4gICAgICAgICAgICB9XSxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ZpZWxkLWJ1dHRvbicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogJ2lucHV0JyxcbiAgICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgICAgb25jbGljazogYGNoZWNrKCdtY18ke25iTUN9JyxbJHtTdHJpbmcodGFiKX1dKWAsXG4gICAgICAgICAgICB2YWx1ZTogJ1ZhbGlkYXRlJyxcbiAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgXTtcblxuICAgICAgbmJNQysrO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNmb3JtZXIgd2hpY2ggYWNzdCBvbiB0aGUgTURBU1QgdHJlZSBhbmQgZ2l2ZW4gVkZpbGUuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3VuaWZpZWRqcy91bmlmaWVkI2Z1bmN0aW9uLXRyYW5zZm9ybWVybm9kZS1maWxlLW5leHRcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zeW50YXgtdHJlZS9tZGFzdFxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3ZmaWxlL3ZmaWxlXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gbXVsdGlwbGVDaG9pc2UoKSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXN0IE1EQVNUXG4gICAqIEBwYXJhbSB7dkZpbGV9IHZGaWxlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG5leHRcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIChhc3QsIHZGaWxlLCBuZXh0KSB7IC8vIFRyYW5zZm9ybWVyXG4gICAgdmlzaXRMaXN0KGFzdCk7XG5cbiAgICBpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBuZXh0KG51bGwsIGFzdCwgdkZpbGUpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbXVsdGlwbGVDaG9pc2U7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICB2YXIgcmVnZXhlcyA9IHtcbiAgICAgICAgcnVsZURlY2xhcmF0aW9uOiBcIl5bYS16QS1aXVthLXpBLVowLTktXSpcIixcbiAgICAgICAgdW5leHBlY3RlZENoYXJzOiBcIlshQCMkXiYnLD8rfmB8Ol1cIlxuICAgIH07XG5cbiAgICB2YXIga2V5d29yZHMgPSBbXG4gICAgICAgIFwiQUxQSEFcIixcbiAgICAgICAgXCJCSVRcIixcbiAgICAgICAgXCJDSEFSXCIsXG4gICAgICAgIFwiQ1JcIixcbiAgICAgICAgXCJDUkxGXCIsXG4gICAgICAgIFwiQ1RMXCIsXG4gICAgICAgIFwiRElHSVRcIixcbiAgICAgICAgXCJEUVVPVEVcIixcbiAgICAgICAgXCJIRVhESUdcIixcbiAgICAgICAgXCJIVEFCXCIsXG4gICAgICAgIFwiTEZcIixcbiAgICAgICAgXCJMV1NQXCIsXG4gICAgICAgIFwiT0NURVRcIixcbiAgICAgICAgXCJTUFwiLFxuICAgICAgICBcIlZDSEFSXCIsXG4gICAgICAgIFwiV1NQXCJcbiAgICBdO1xuXG4gICAgdmFyIGNvbW1lbnRNb2RlID0gaGxqcy5DT01NRU5UKFwiO1wiLCBcIiRcIik7XG5cbiAgICB2YXIgdGVybWluYWxCaW5hcnlNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJWJbMC0xXSsoLVswLTFdK3woXFwuWzAtMV0rKSspezAsMX0vXG4gICAgfTtcblxuICAgIHZhciB0ZXJtaW5hbERlY2ltYWxNb2RlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvJWRbMC05XSsoLVswLTldK3woXFwuWzAtOV0rKSspezAsMX0vXG4gICAgfTtcblxuICAgIHZhciB0ZXJtaW5hbEhleGFkZWNpbWFsTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogLyV4WzAtOUEtRl0rKC1bMC05QS1GXSt8KFxcLlswLTlBLUZdKykrKXswLDF9LyxcbiAgICB9O1xuXG4gICAgdmFyIGNhc2VTZW5zaXRpdml0eUluZGljYXRvck1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzeW1ib2xcIixcbiAgICAgICAgYmVnaW46IC8lW3NpXS9cbiAgICB9O1xuXG4gICAgdmFyIHJ1bGVEZWNsYXJhdGlvbk1vZGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgYmVnaW46IHJlZ2V4ZXMucnVsZURlY2xhcmF0aW9uICsgJyg/PVxcXFxzKj0pJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlsbGVnYWw6IHJlZ2V4ZXMudW5leHBlY3RlZENoYXJzLFxuICAgICAga2V5d29yZHM6IGtleXdvcmRzLmpvaW4oXCIgXCIpLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBydWxlRGVjbGFyYXRpb25Nb2RlLFxuICAgICAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsQmluYXJ5TW9kZSxcbiAgICAgICAgICB0ZXJtaW5hbERlY2ltYWxNb2RlLFxuICAgICAgICAgIHRlcm1pbmFsSGV4YWRlY2ltYWxNb2RlLFxuICAgICAgICAgIGNhc2VTZW5zaXRpdml0eUluZGljYXRvck1vZGUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgICBdXG4gICAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvTWV0aG9kc1xuICB2YXIgSFRUUF9WRVJCUyA9IFtcbiAgICBcIkdFVFwiLCBcIlBPU1RcIiwgXCJIRUFEXCIsIFwiUFVUXCIsIFwiREVMRVRFXCIsIFwiQ09OTkVDVFwiLCBcIk9QVElPTlNcIiwgXCJQQVRDSFwiLCBcIlRSQUNFXCJcbiAgXVxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBJUFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ15cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9XFxcXC5cXFxcZHsxLDN9KDpcXFxcZHsxLDV9KT9cXFxcYicsXG4gICAgICAgIHJlbGV2YW5jZTo1XG4gICAgICB9LFxuICAgICAgLy8gT3RoZXIgbnVtYmVyc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrXFxcXGInLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBSZXF1ZXN0c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiKCcgKyBIVFRQX1ZFUkJTLmpvaW4oXCJ8XCIpICsgJyknLCBlbmQ6ICdcIicsXG4gICAgICAgIGtleXdvcmRzOiBIVFRQX1ZFUkJTLmpvaW4oXCIgXCIpLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDUsXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgIGJlZ2luOiAnSFRUUC9bMTJdXFxcXC5cXFxcZCcsXG4gICAgICAgICAgcmVsZXZhbmNlOjVcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICAvLyBEYXRlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAvLyBkYXRlcyBtdXN0IGhhdmUgYSBjZXJ0YWluIGxlbmd0aCwgdGhpcyBwcmV2ZW50cyBtYXRjaGluZ1xuICAgICAgICAvLyBzaW1wbGUgYXJyYXkgYWNjZXNzZXMgYVsxMjNdIGFuZCBbXSBhbmQgb3RoZXIgY29tbW9uIHBhdHRlcm5zXG4gICAgICAgIC8vIGZvdW5kIGluIG90aGVyIGxhbmd1YWdlc1xuICAgICAgICBiZWdpbjogL1xcW1xcZFteXFxdXFxuXXs4LH1cXF0vLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvXFxbLywgZW5kOiAvXFxdLyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gVXNlciBhZ2VudCAvIHJlbGV2YW5jZSBib29zdFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiTW96aWxsYS9cXFxcZFxcXFwuXFxcXGQgXFxcXFxcKCcsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAzXG4gICAgICB9LFxuICAgICAgLy8gU3RyaW5nc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRfUkUgPSAnW2EtekEtWl8kXVthLXpBLVowLTlfJF0qJztcbiAgdmFyIElERU5UX0ZVTkNfUkVUVVJOX1RZUEVfUkUgPSAnKFsqXXxbYS16QS1aXyRdW2EtekEtWjAtOV8kXSopJztcblxuICB2YXIgQVMzX1JFU1RfQVJHX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVzdF9hcmcnLFxuICAgIGJlZ2luOiAnWy5dezN9JywgZW5kOiBJREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2FzJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdhcyBicmVhayBjYXNlIGNhdGNoIGNsYXNzIGNvbnN0IGNvbnRpbnVlIGRlZmF1bHQgZGVsZXRlIGRvIGR5bmFtaWMgZWFjaCAnICtcbiAgICAgICAgJ2Vsc2UgZXh0ZW5kcyBmaW5hbCBmaW5hbGx5IGZvciBmdW5jdGlvbiBnZXQgaWYgaW1wbGVtZW50cyBpbXBvcnQgaW4gaW5jbHVkZSAnICtcbiAgICAgICAgJ2luc3RhbmNlb2YgaW50ZXJmYWNlIGludGVybmFsIGlzIG5hbWVzcGFjZSBuYXRpdmUgbmV3IG92ZXJyaWRlIHBhY2thZ2UgcHJpdmF0ZSAnICtcbiAgICAgICAgJ3Byb3RlY3RlZCBwdWJsaWMgcmV0dXJuIHNldCBzdGF0aWMgc3VwZXIgc3dpdGNoIHRoaXMgdGhyb3cgdHJ5IHR5cGVvZiB1c2UgdmFyIHZvaWQgJyArXG4gICAgICAgICd3aGlsZSB3aXRoJyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdwYWNrYWdlJywgZW5kOiAneycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ltcG9ydCBpbmNsdWRlJywgZW5kOiAnOycsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbXBvcnQgaW5jbHVkZSd9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJ1t7O10nLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBBUzNfUkVTVF9BUkdfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc6XFxcXHMqJyArIElERU5UX0ZVTkNfUkVUVVJOX1RZUEVfUkVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLk1FVEhPRF9HVUFSRFxuICAgIF0sXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gV2UgdHJ5IHRvIHN1cHBvcnQgZnVsbCBBZGEyMDEyXG4vL1xuLy8gV2UgaGlnaGxpZ2h0IGFsbCBhcHBlYXJhbmNlcyBvZiB0eXBlcywga2V5d29yZHMsIGxpdGVyYWxzIChzdHJpbmcsIGNoYXIsIG51bWJlciwgYm9vbClcbi8vIGFuZCB0aXRsZXMgKHVzZXIgZGVmaW5lZCBmdW5jdGlvbi9wcm9jZWR1cmUvcGFja2FnZSlcbi8vIENTUyBjbGFzc2VzIGFyZSBzZXQgYWNjb3JkaW5nbHlcbi8vXG4vLyBMYW5ndWFnZXMgY2F1c2luZyBwcm9ibGVtcyBmb3IgbGFuZ3VhZ2UgZGV0ZWN0aW9uOlxuLy8geG1sIChicm9rZW4gYnkgRm9vIDogQmFyIHR5cGUpLCBlbG0gKGJyb2tlbiBieSBGb28gOiBCYXIgdHlwZSksIHZic2NyaXB0LWh0bWwgKGJyb2tlbiBieSBib2R5IGtleXdvcmQpXG4vLyBzcWwgKGFkYSBkZWZhdWx0LnR4dCBoYXMgYSBsb3Qgb2Ygc3FsIGtleXdvcmRzKVxuXG5mdW5jdGlvbihobGpzKSB7XG4gICAgLy8gUmVndWxhciBleHByZXNzaW9uIGZvciBBZGEgbnVtZXJpYyBsaXRlcmFscy5cbiAgICAvLyBzdG9sZW4gZm9ybSB0aGUgVkhETCBoaWdobGlnaHRlclxuXG4gICAgLy8gRGVjaW1hbCBsaXRlcmFsOlxuICAgIHZhciBJTlRFR0VSX1JFID0gJ1xcXFxkKF98XFxcXGQpKic7XG4gICAgdmFyIEVYUE9ORU5UX1JFID0gJ1tlRV1bLStdPycgKyBJTlRFR0VSX1JFO1xuICAgIHZhciBERUNJTUFMX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyhcXFxcLicgKyBJTlRFR0VSX1JFICsgJyk/JyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcblxuICAgIC8vIEJhc2VkIGxpdGVyYWw6XG4gICAgdmFyIEJBU0VEX0lOVEVHRVJfUkUgPSAnXFxcXHcrJztcbiAgICB2YXIgQkFTRURfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnIycgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyhcXFxcLicgKyBCQVNFRF9JTlRFR0VSX1JFICsgJyk/JyArICcjJyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcblxuICAgIHZhciBOVU1CRVJfUkUgPSAnXFxcXGIoJyArIEJBU0VEX0xJVEVSQUxfUkUgKyAnfCcgKyBERUNJTUFMX0xJVEVSQUxfUkUgKyAnKSc7XG5cbiAgICAvLyBJZGVudGlmaWVyIHJlZ2V4XG4gICAgdmFyIElEX1JFR0VYID0gJ1tBLVphLXpdKF8/W0EtWmEtejAtOS5dKSonO1xuXG4gICAgLy8gYmFkIGNoYXJzLCBvbmx5IGFsbG93ZWQgaW4gbGl0ZXJhbHNcbiAgICB2YXIgQkFEX0NIQVJTID0gJ1tde30lI1xcJ1xcXCInXG5cbiAgICAvLyBBZGEgZG9lc24ndCBoYXZlIGJsb2NrIGNvbW1lbnRzLCBvbmx5IGxpbmUgY29tbWVudHNcbiAgICB2YXIgQ09NTUVOVFMgPSBobGpzLkNPTU1FTlQoJy0tJywgJyQnKTtcblxuICAgIC8vIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBvZiB0aGUgZm9ybVxuICAgIC8vIEZvbyA6IEJhciA6PSBCYXo7XG4gICAgLy8gd2hlcmUgb25seSBCYXIgd2lsbCBiZSBoaWdobGlnaHRlZFxuICAgIHZhciBWQVJfREVDTFMgPSB7XG4gICAgICAgIC8vIFRPRE86IFRoZXNlIHNwYWNlcyBhcmUgbm90IHJlcXVpcmVkIGJ5IHRoZSBBZGEgc3ludGF4XG4gICAgICAgIC8vIGhvd2V2ZXIsIEkgaGF2ZSB5ZXQgdG8gc2VlIGhhbmR3cml0dGVuIEFkYSBjb2RlIHdoZXJlXG4gICAgICAgIC8vIHNvbWVvbmUgZG9lcyBub3QgcHV0IHNwYWNlcyBhcm91bmQgOlxuICAgICAgICBiZWdpbjogJ1xcXFxzKzpcXFxccysnLCBlbmQ6ICdcXFxccyooOj18O3xcXFxcKXw9PnwkKScsXG4gICAgICAgIC8vIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAvLyByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIHdvcmthcm91bmQgdG8gYXZvaWQgaGlnaGxpZ2h0aW5nXG4gICAgICAgICAgICAgICAgLy8gbmFtZWQgbG9vcHMgYW5kIGRlY2xhcmUgYmxvY2tzXG4gICAgICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2xvb3AgZm9yIGRlY2xhcmUgb3RoZXJzJyxcbiAgICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJseSBoaWdobGlnaHQgYWxsIG1vZGlmaWVyc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdub3QgbnVsbCBjb25zdGFudCBhY2Nlc3MgZnVuY3Rpb24gcHJvY2VkdXJlIGluIG91dCBhbGlhc2VkIGV4Y2VwdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IElEX1JFR0VYLFxuICAgICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgICAgICdhYm9ydCBlbHNlIG5ldyByZXR1cm4gYWJzIGVsc2lmIG5vdCByZXZlcnNlIGFic3RyYWN0IGVuZCAnICtcbiAgICAgICAgICAgICAgICAnYWNjZXB0IGVudHJ5IHNlbGVjdCBhY2Nlc3MgZXhjZXB0aW9uIG9mIHNlcGFyYXRlIGFsaWFzZWQgZXhpdCBvciBzb21lICcgK1xuICAgICAgICAgICAgICAgICdhbGwgb3RoZXJzIHN1YnR5cGUgYW5kIGZvciBvdXQgc3luY2hyb25pemVkIGFycmF5IGZ1bmN0aW9uIG92ZXJyaWRpbmcgJyArXG4gICAgICAgICAgICAgICAgJ2F0IHRhZ2dlZCBnZW5lcmljIHBhY2thZ2UgdGFzayBiZWdpbiBnb3RvIHByYWdtYSB0ZXJtaW5hdGUgJyArXG4gICAgICAgICAgICAgICAgJ2JvZHkgcHJpdmF0ZSB0aGVuIGlmIHByb2NlZHVyZSB0eXBlIGNhc2UgaW4gcHJvdGVjdGVkIGNvbnN0YW50IGludGVyZmFjZSAnICtcbiAgICAgICAgICAgICAgICAnaXMgcmFpc2UgdXNlIGRlY2xhcmUgcmFuZ2UgZGVsYXkgbGltaXRlZCByZWNvcmQgd2hlbiBkZWx0YSBsb29wIHJlbSB3aGlsZSAnICtcbiAgICAgICAgICAgICAgICAnZGlnaXRzIHJlbmFtZXMgd2l0aCBkbyBtb2QgcmVxdWV1ZSB4b3InLFxuICAgICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICAgICAnVHJ1ZSBGYWxzZScsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBDT01NRU5UUyxcbiAgICAgICAgICAgIC8vIHN0cmluZ3MgXCJmb29iYXJcIlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW3tiZWdpbjogL1wiXCIvLCByZWxldmFuY2U6IDB9XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgJydcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbHMgYWx3YXlzIGNvbnRhaW4gb25lIGNoYXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvJy4nL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBudW1iZXIgbGl0ZXJhbHNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBOVU1CRVJfUkUsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIEF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIidcIiArIElEX1JFR0VYLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBwYWNrYWdlIGRlZmluaXRpb24sIG1heWJlIGluc2lkZSBnZW5lcmljXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxid2l0aFxcXFxzKyk/KFxcXFxicHJpdmF0ZVxcXFxzKyk/XFxcXGJwYWNrYWdlXFxcXHMrKFxcXFxiYm9keVxcXFxzKyk/JywgZW5kOiAnKGlzfCQpJyxcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogJ3BhY2thZ2UgYm9keScsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uL3Byb2NlZHVyZSBkZWNsYXJhdGlvbi9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgLy8gbWF5YmUgaW5zaWRlIGdlbmVyaWNcbiAgICAgICAgICAgICAgICBiZWdpbjogJyhcXFxcYih3aXRofG92ZXJyaWRpbmcpXFxcXHMrKT9cXFxcYihmdW5jdGlvbnxwcm9jZWR1cmUpXFxcXHMrJywgZW5kOiAnKFxcXFxiaXN8XFxcXGJ3aXRofFxcXFxicmVuYW1lc3xcXFxcKVxcXFxzKjspJyxcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogJ292ZXJyaWRpbmcgZnVuY3Rpb24gcHJvY2VkdXJlIHdpdGggaXMgcmVuYW1lcyByZXR1cm4nLFxuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmUtbWF0Y2ggdGhlICdmdW5jdGlvbicga2V5d29yZCwgc28gdGhhdFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0aXRsZSBtb2RlIGJlbG93IG1hdGNoZXMgb25seSBleGFjdGx5IG9uY2VcbiAgICAgICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBuYW1lIG9mIHRoZSBmdW5jdGlvbi9wcm9jZWR1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxid2l0aFxcXFxzKyk/XFxcXGIoZnVuY3Rpb258cHJvY2VkdXJlKVxcXFxzKycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6ICcoXFxcXCh8XFxcXHMrfCQpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsOiBCQURfQ0hBUlNcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gJ3NlbGYnXG4gICAgICAgICAgICAgICAgICAgIC8vIC8vIHBhcmFtZXRlciB0eXBlc1xuICAgICAgICAgICAgICAgICAgICBWQVJfREVDTFMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGJyZXR1cm5cXFxccysnLCBlbmQ6ICcoXFxcXHMrfDt8JCknLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6ICdyZXR1cm4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBkb25lIHdpdGggZnVuY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWxsZWdhbDogQkFEX0NIQVJTXG5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG5ldyB0eXBlIGRlY2xhcmF0aW9uc1xuICAgICAgICAgICAgICAgIC8vIG1heWJlIGluc2lkZSBnZW5lcmljXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYihzdWIpP3R5cGVcXFxccysnLCBlbmQ6ICdcXFxccysnLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiAndHlwZScsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGlsbGVnYWw6IEJBRF9DSEFSU1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy8gc2VlIGNvbW1lbnQgYWJvdmUgdGhlIGRlZmluaXRpb25cbiAgICAgICAgICAgIFZBUl9ERUNMUyxcblxuICAgICAgICAgICAgLy8gbm8gbWFya3VwXG4gICAgICAgICAgICAvLyByZWxldmFuY2UgYm9vc3RlcnMgZm9yIHNtYWxsIHNuaXBwZXRzXG4gICAgICAgICAgICAvLyB7YmVnaW46ICdcXFxccyo9PlxcXFxzKid9LFxuICAgICAgICAgICAgLy8ge2JlZ2luOiAnXFxcXHMqOj1cXFxccyonfSxcbiAgICAgICAgICAgIC8vIHtiZWdpbjogJ1xcXFxzKzo9XFxcXHMrJ30sXG4gICAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIGJ1aWx0SW5UeXBlTW9kZSA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICdcXFxcYih2b2lkfGJvb2x8aW50fGludDh8aW50MTZ8aW50MzJ8aW50NjR8dWludHx1aW50OHx1aW50MTZ8dWludDMyfHVpbnQ2NHxzdHJpbmd8cmVmfGFycmF5fGRvdWJsZXxmbG9hdHxhdXRvfGRpY3Rpb25hcnkpJ1xuICB9O1xuXG4gIHZhciBvYmplY3RIYW5kbGVNb2RlID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdbYS16QS1aMC05X10rQCdcbiAgfTtcblxuICB2YXIgZ2VuZXJpY01vZGUgPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgY29udGFpbnM6IFsgYnVpbHRJblR5cGVNb2RlLCBvYmplY3RIYW5kbGVNb2RlIF1cbiAgfTtcblxuICBidWlsdEluVHlwZU1vZGUuY29udGFpbnMgPSBbIGdlbmVyaWNNb2RlIF07XG4gIG9iamVjdEhhbmRsZU1vZGUuY29udGFpbnMgPSBbIGdlbmVyaWNNb2RlIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbICdhc2MnIF0sXG5cbiAgICBrZXl3b3JkczpcbiAgICAgICdmb3IgaW58MCBicmVhayBjb250aW51ZSB3aGlsZSBkb3wwIHJldHVybiBpZiBlbHNlIGNhc2Ugc3dpdGNoIG5hbWVzcGFjZSBpcyBjYXN0ICcgK1xuICAgICAgJ29yIGFuZCB4b3Igbm90IGdldHwwIGluIGlub3V0fDEwIG91dCBvdmVycmlkZSBzZXR8MCBwcml2YXRlIHB1YmxpYyBjb25zdCBkZWZhdWx0fDAgJyArXG4gICAgICAnZmluYWwgc2hhcmVkIGV4dGVybmFsIG1peGlufDEwIGVudW0gdHlwZWRlZiBmdW5jZGVmIHRoaXMgc3VwZXIgaW1wb3J0IGZyb20gaW50ZXJmYWNlICcgK1xuICAgICAgJ2Fic3RyYWN0fDAgdHJ5IGNhdGNoIHByb3RlY3RlZCBleHBsaWNpdCBwcm9wZXJ0eScsXG5cbiAgICAvLyBhdm9pZCBjbG9zZSBkZXRlY3Rpb24gd2l0aCBDIyBhbmQgSlNcbiAgICBpbGxlZ2FsOiAnKF51c2luZ1xcXFxzK1tBLVphLXowLTlfXFxcXC5dKzskfFxcXFxiZnVuY3Rpb25cXHMqW15cXFxcKF0pJyxcblxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vICdzdHJpbmdzJ1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG5cbiAgICAgIHsgLy8gXCJzdHJpbmdzXCJcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAgLy8gXCJcIlwiaGVyZWRvYyBzdHJpbmdzXCJcIlwiXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJ1xuICAgICAgfSxcblxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLCAvLyBzaW5nbGUtbGluZSBjb21tZW50c1xuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgLy8gY29tbWVudCBibG9ja3NcblxuICAgICAgeyAvLyBpbnRlcmZhY2Ugb3IgbmFtZXNwYWNlIGRlY2xhcmF0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UgbmFtZXNwYWNlJywgZW5kOiAneycsXG4gICAgICAgIGlsbGVnYWw6ICdbOy5cXFxcLV0nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgLy8gaW50ZXJmYWNlIG9yIG5hbWVzcGFjZSBuYW1lXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46ICdbYS16QS1aMC05X10rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgeyAvLyBjbGFzcyBkZWNsYXJhdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLCBlbmQ6ICd7JyxcbiAgICAgICAgaWxsZWdhbDogJ1s7LlxcXFwtXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyAvLyBjbGFzcyBuYW1lXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgYmVnaW46ICdbYS16QS1aMC05X10rJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1s6LF1cXFxccyonLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnW2EtekEtWjAtOV9dKydcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIGJ1aWx0SW5UeXBlTW9kZSwgLy8gYnVpbHQtaW4gdHlwZXNcbiAgICAgIG9iamVjdEhhbmRsZU1vZGUsIC8vIG9iamVjdCBoYW5kbGVzXG5cbiAgICAgIHsgLy8gbGl0ZXJhbHNcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIobnVsbHx0cnVlfGZhbHNlKSdcbiAgICAgIH0sXG5cbiAgICAgIHsgLy8gbnVtYmVyc1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP2Y/fFxcXFwuXFxcXGQrZj8pKFtlRV1bLStdP1xcXFxkK2Y/KT8pJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBOVU1CRVIgPSB7Y2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICdbXFxcXCQlXVxcXFxkKyd9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYXBhY2hlY29uZiddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7Y2xhc3NOYW1lOiAnc2VjdGlvbicsIGJlZ2luOiAnPC8/JywgZW5kOiAnPid9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIC8vIGtleXdvcmRzIGFyZW7igJl0IG5lZWRlZCBmb3IgaGlnaGxpZ2h0aW5nIHBlciBzZSwgdGhleSBvbmx5IGJvb3N0IHJlbGV2YW5jZVxuICAgICAgICAvLyBmb3IgYSB2ZXJ5IGdlbmVyYWxseSBkZWZpbmVkIG1vZGUgKHN0YXJ0cyB3aXRoIGEgd29yZCwgZW5kcyB3aXRoIGxpbmUtZW5kXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgbm9tYXJrdXA6XG4gICAgICAgICAgICAnb3JkZXIgZGVueSBhbGxvdyBzZXRlbnYgcmV3cml0ZXJ1bGUgcmV3cml0ZWVuZ2luZSByZXdyaXRlY29uZCBkb2N1bWVudHJvb3QgJyArXG4gICAgICAgICAgICAnc2V0aGFuZGxlciBlcnJvcmRvY3VtZW50IGxvYWRtb2R1bGUgb3B0aW9ucyBoZWFkZXIgbGlzdGVuIHNlcnZlcnJvb3QgJyArXG4gICAgICAgICAgICAnc2VydmVybmFtZSdcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOiAnb24gb2ZmIGFsbCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxzXFxcXFsnLCBlbmQ6ICdcXFxcXSQnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgIGJlZ2luOiAnW1xcXFwkJV1cXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFsnc2VsZicsIE5VTUJFUl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvXFxTL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogJyd9KTtcbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgY29udGFpbnM6IFsnc2VsZicsIGhsanMuQ19OVU1CRVJfTU9ERSwgU1RSSU5HXVxuICB9O1xuICB2YXIgQ09NTUVOVF9NT0RFXzEgPSBobGpzLkNPTU1FTlQoJy0tJywgJyQnKTtcbiAgdmFyIENPTU1FTlRfTU9ERV8yID0gaGxqcy5DT01NRU5UKFxuICAgICdcXFxcKFxcXFwqJyxcbiAgICAnXFxcXCpcXFxcKScsXG4gICAge1xuICAgICAgY29udGFpbnM6IFsnc2VsZicsIENPTU1FTlRfTU9ERV8xXSAvL2FsbG93IG5lc3RpbmdcbiAgICB9XG4gICk7XG4gIHZhciBDT01NRU5UUyA9IFtcbiAgICBDT01NRU5UX01PREVfMSxcbiAgICBDT01NRU5UX01PREVfMixcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ29zYXNjcmlwdCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWJvdXQgYWJvdmUgYWZ0ZXIgYWdhaW5zdCBhbmQgYXJvdW5kIGFzIGF0IGJhY2sgYmVmb3JlIGJlZ2lubmluZyAnICtcbiAgICAgICAgJ2JlaGluZCBiZWxvdyBiZW5lYXRoIGJlc2lkZSBiZXR3ZWVuIGJ1dCBieSBjb25zaWRlcmluZyAnICtcbiAgICAgICAgJ2NvbnRhaW4gY29udGFpbnMgY29udGludWUgY29weSBkaXYgZG9lcyBlaWdodGggZWxzZSBlbmQgZXF1YWwgJyArXG4gICAgICAgICdlcXVhbHMgZXJyb3IgZXZlcnkgZXhpdCBmaWZ0aCBmaXJzdCBmb3IgZm91cnRoIGZyb20gZnJvbnQgJyArXG4gICAgICAgICdnZXQgZ2l2ZW4gZ2xvYmFsIGlmIGlnbm9yaW5nIGluIGludG8gaXMgaXQgaXRzIGxhc3QgbG9jYWwgbWUgJyArXG4gICAgICAgICdtaWRkbGUgbW9kIG15IG5pbnRoIG5vdCBvZiBvbiBvbnRvIG9yIG92ZXIgcHJvcCBwcm9wZXJ0eSBwdXQgcmVmICcgK1xuICAgICAgICAncmVmZXJlbmNlIHJlcGVhdCByZXR1cm5pbmcgc2NyaXB0IHNlY29uZCBzZXQgc2V2ZW50aCBzaW5jZSAnICtcbiAgICAgICAgJ3NpeHRoIHNvbWUgdGVsbCB0ZW50aCB0aGF0IHRoZXwwIHRoZW4gdGhpcmQgdGhyb3VnaCB0aHJ1ICcgK1xuICAgICAgICAndGltZW91dCB0aW1lcyB0byB0cmFuc2FjdGlvbiB0cnkgdW50aWwgd2hlcmUgd2hpbGUgd2hvc2Ugd2l0aCAnICtcbiAgICAgICAgJ3dpdGhvdXQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ0FwcGxlU2NyaXB0IGZhbHNlIGxpbmVmZWVkIHJldHVybiBwaSBxdW90ZSByZXN1bHQgc3BhY2UgdGFiIHRydWUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhbGlhcyBhcHBsaWNhdGlvbiBib29sZWFuIGNsYXNzIGNvbnN0YW50IGRhdGUgZmlsZSBpbnRlZ2VyIGxpc3QgJyArXG4gICAgICAgICdudW1iZXIgcmVhbCByZWNvcmQgc3RyaW5nIHRleHQgJyArXG4gICAgICAgICdhY3RpdmF0ZSBiZWVwIGNvdW50IGRlbGF5IGxhdW5jaCBsb2cgb2Zmc2V0IHJlYWQgcm91bmQgJyArXG4gICAgICAgICdydW4gc2F5IHN1bW1hcml6ZSB3cml0ZSAnICtcbiAgICAgICAgJ2NoYXJhY3RlciBjaGFyYWN0ZXJzIGNvbnRlbnRzIGRheSBmcm9udG1vc3QgaWQgaXRlbSBsZW5ndGggJyArXG4gICAgICAgICdtb250aCBuYW1lIHBhcmFncmFwaCBwYXJhZ3JhcGhzIHJlc3QgcmV2ZXJzZSBydW5uaW5nIHRpbWUgdmVyc2lvbiAnICtcbiAgICAgICAgJ3dlZWtkYXkgd29yZCB3b3JkcyB5ZWFyJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjpcbiAgICAgICAgICAnXFxcXGIoY2xpcGJvYXJkIGluZm98dGhlIGNsaXBib2FyZHxpbmZvIGZvcnxsaXN0IChkaXNrc3xmb2xkZXIpfCcgK1xuICAgICAgICAgICdtb3VudCB2b2x1bWV8cGF0aCB0b3woY2xvc2V8b3BlbiBmb3IpIGFjY2Vzc3woZ2V0fHNldCkgZW9mfCcgK1xuICAgICAgICAgICdjdXJyZW50IGRhdGV8ZG8gc2hlbGwgc2NyaXB0fGdldCB2b2x1bWUgc2V0dGluZ3N8cmFuZG9tIG51bWJlcnwnICtcbiAgICAgICAgICAnc2V0IHZvbHVtZXxzeXN0ZW0gYXR0cmlidXRlfHN5c3RlbSBpbmZvfHRpbWUgdG8gR01UfCcgK1xuICAgICAgICAgICcobG9hZHxydW58c3RvcmUpIHNjcmlwdHxzY3JpcHRpbmcgY29tcG9uZW50c3wnICtcbiAgICAgICAgICAnQVNDSUkgKGNoYXJhY3RlcnxudW1iZXIpfGxvY2FsaXplZCBzdHJpbmd8JyArXG4gICAgICAgICAgJ2Nob29zZSAoYXBwbGljYXRpb258Y29sb3J8ZmlsZXxmaWxlIG5hbWV8JyArXG4gICAgICAgICAgJ2ZvbGRlcnxmcm9tIGxpc3R8cmVtb3RlIGFwcGxpY2F0aW9ufFVSTCl8JyArXG4gICAgICAgICAgJ2Rpc3BsYXkgKGFsZXJ0fGRpYWxvZykpXFxcXGJ8XlxcXFxzKnJldHVyblxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYih0ZXh0IGl0ZW0gZGVsaW1pdGVyc3xjdXJyZW50IGFwcGxpY2F0aW9ufG1pc3NpbmcgdmFsdWUpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKGFwYXJ0IGZyb218YXNpZGUgZnJvbXxpbnN0ZWFkIG9mfG91dCBvZnxncmVhdGVyIHRoYW58JyArXG4gICAgICAgICAgXCJpc24ndHwoZG9lc24ndHxkb2VzIG5vdCkgKGVxdWFsfGNvbWUgYmVmb3JlfGNvbWUgYWZ0ZXJ8Y29udGFpbil8XCIgK1xuICAgICAgICAgICcoZ3JlYXRlcnxsZXNzKSB0aGFuKCBvciBlcXVhbCk/fChzdGFydHM/fGVuZHN8YmVnaW5zPykgd2l0aHwnICtcbiAgICAgICAgICAnY29udGFpbmVkIGJ5fGNvbWVzIChiZWZvcmV8YWZ0ZXIpfGEgKHJlZnxyZWZlcmVuY2UpfFBPU0lYIGZpbGV8JyArXG4gICAgICAgICAgJ1BPU0lYIHBhdGh8KGRhdGV8dGltZSkgc3RyaW5nfHF1b3RlZCBmb3JtKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ29uJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez07XFxcXG5dJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwgUEFSQU1TXVxuICAgICAgfVxuICAgIF0uY29uY2F0KENPTU1FTlRTKSxcbiAgICBpbGxlZ2FsOiAnLy98LT58PT58XFxcXFtcXFxcWydcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbQS1aYS16X11bMC05QS1aYS16X10qJztcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnaWYgZm9yIHdoaWxlIHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhaycsXG4gICAgbGl0ZXJhbDpcbiAgICAgICdCYWNrU2xhc2ggRG91YmxlUXVvdGUgZmFsc2UgRm9yd2FyZFNsYXNoIEluZmluaXR5IE5hTiBOZXdMaW5lIG51bGwgUEkgU2luZ2xlUXVvdGUgVGFiIFRleHRGb3JtYXR0aW5nIHRydWUgdW5kZWZpbmVkJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdBYnMgQWNvcyBBbmdsZSBBdHRhY2htZW50cyBBcmVhIEFyZWFHZW9kZXRpYyBBc2luIEF0YW4gQXRhbjIgQXZlcmFnZSBCZWFyaW5nIEJvb2xlYW4gQnVmZmVyIEJ1ZmZlckdlb2RldGljICcgK1xuICAgICAgJ0NlaWwgQ2VudHJvaWQgQ2xpcCBDb25zb2xlIENvbnN0cmFpbiBDb250YWlucyBDb3MgQ291bnQgQ3Jvc3NlcyBDdXQgRGF0ZSBEYXRlQWRkICcgK1xuICAgICAgJ0RhdGVEaWZmIERheSBEZWNvZGUgRGVmYXVsdFZhbHVlIERpY3Rpb25hcnkgRGlmZmVyZW5jZSBEaXNqb2ludCBEaXN0YW5jZSBEaXN0YW5jZUdlb2RldGljIERpc3RpbmN0ICcgK1xuICAgICAgJ0RvbWFpbkNvZGUgRG9tYWluTmFtZSBFcXVhbHMgRXhwIEV4dGVudCBGZWF0dXJlIEZlYXR1cmVTZXQgRmVhdHVyZVNldEJ5QXNzb2NpYXRpb24gRmVhdHVyZVNldEJ5SWQgRmVhdHVyZVNldEJ5UG9ydGFsSXRlbSAnICtcbiAgICAgICdGZWF0dXJlU2V0QnlSZWxhdGlvbnNoaXBOYW1lIEZlYXR1cmVTZXRCeVRpdGxlIEZlYXR1cmVTZXRCeVVybCBGaWx0ZXIgRmlyc3QgRmxvb3IgR2VvbWV0cnkgR3JvdXBCeSBHdWlkIEhhc0tleSBIb3VyIElJZiBJbmRleE9mICcgK1xuICAgICAgJ0ludGVyc2VjdGlvbiBJbnRlcnNlY3RzIElzRW1wdHkgSXNOYW4gSXNTZWxmSW50ZXJzZWN0aW5nIExlbmd0aCBMZW5ndGhHZW9kZXRpYyBMb2cgTWF4IE1lYW4gTWlsbGlzZWNvbmQgTWluIE1pbnV0ZSBNb250aCAnICtcbiAgICAgICdNdWx0aVBhcnRUb1NpbmdsZVBhcnQgTXVsdGlwb2ludCBOZXh0U2VxdWVuY2VWYWx1ZSBOb3cgTnVtYmVyIE9yZGVyQnkgT3ZlcmxhcHMgUG9pbnQgUG9seWdvbiAnICtcbiAgICAgICdQb2x5bGluZSBQb3J0YWwgUG93IFJhbmRvbSBSZWxhdGUgUmV2ZXJzZSBSaW5nSXNDbG9ja1dpc2UgUm91bmQgU2Vjb25kIFNldEdlb21ldHJ5IFNpbiBTb3J0IFNxcnQgU3RkZXYgU3VtICcgK1xuICAgICAgJ1N5bW1ldHJpY0RpZmZlcmVuY2UgVGFuIFRleHQgVGltZXN0YW1wIFRvZGF5IFRvTG9jYWwgVG9wIFRvdWNoZXMgVG9VVEMgVHJhY2tDdXJyZW50VGltZSAnICtcbiAgICAgICdUcmFja0dlb21ldHJ5V2luZG93IFRyYWNrSW5kZXggVHJhY2tTdGFydFRpbWUgVHJhY2tXaW5kb3cgVHlwZU9mIFVuaW9uIFVybEVuY29kZSBWYXJpYW5jZSAnICtcbiAgICAgICdXZWVrZGF5IFdoZW4gV2l0aGluIFllYXIgJ1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlM7XG4gIHZhciBTWU1CT0wgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcXFwkW2RhdGFzdG9yZXxmZWF0dXJlfGxheWVyfG1hcHxtZWFzdXJlfHNvdXJjZWZlYXR1cmV8c291cmNlbGF5ZXJ8dGFyZ2V0ZmVhdHVyZXx0YXJnZXRsYXllcnx2YWx1ZXx2aWV3XSsnXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspJyB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbb09dWzAtN10rKScgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJFxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW10gIC8vIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIHZhciBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVC5jb250YWlucy5jb25jYXQoW1xuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gIF0pO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydhcmNhZGUnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1lNQk9MLFxuICAgICAgTlVNQkVSLFxuICAgICAgeyAvLyBvYmplY3QgYXR0ciBjb250YWluZXJcbiAgICAgICAgYmVnaW46IC9beyxdXFxzKi8sIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogSURFTlRfUkUgKyAnXFxcXHMqOicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7Y2xhc3NOYW1lOiAnYXR0cicsIGJlZ2luOiBJREVOVF9SRSwgcmVsZXZhbmNlOiAwfV1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKHJldHVybilcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogJyhcXFxcKC4qP1xcXFwpfCcgKyBJREVOVF9SRSArICcpXFxcXHMqPT4nLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKj0+JyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSURFTlRfUkV9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkWyguXS9cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jKD8hISkvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ1BQX1BSSU1JVElWRV9UWVBFUyA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ1xcXFxiW2EtelxcXFxkX10qX3RcXFxcYidcbiAgfTtcblxuICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlXG4gIC8vIFxcXFwgXFx4IFxceEZGIFxcdTI4MzcgXFx1MDAzMjM3NDcgXFwzNzRcbiAgdmFyIENIQVJBQ1RFUl9FU0NBUEVTID0gJ1xcXFxcXFxcKHhbMC05QS1GYS1mXXsyfXx1WzAtOUEtRmEtZl17NCw4fXxbMC03XXszfXxcXFxcUyknXG4gIHZhciBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcodTg/fFV8TCk/XCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcodTg/fFV8TCk/XFwnKCcgKyBDSEFSQUNURVJfRVNDQVBFUyArIFwifC4pXCIsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfSxcbiAgICAgIHsgYmVnaW46IC8oPzp1OD98VXxMKT9SXCIoW14oKVxcXFwgXXswLDE2fSlcXCgoPzoufFxcbikqP1xcKVxcMVwiLyB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwYlswMVxcJ10rKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pXFxcXGIoW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKHV8VXxsfEx8dWx8VUx8ZnxGfGJ8QiknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOVxcJ10rfChcXFxcYltcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKShbZUVdWy0rXT9bXFxcXGRcXCddKyk/KScgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9ICAgICAgIHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyNcXHMqW2Etel0rXFxiLywgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICdtZXRhLWtleXdvcmQnOlxuICAgICAgICAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiB3YXJuaW5nIGVycm9yIGxpbmUgJyArXG4gICAgICAgICdwcmFnbWEgaWZkZWYgaWZuZGVmIGluY2x1ZGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoU1RSSU5HUywge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLXN0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPFteXFxuPl0qPi8sIGVuZDogLyQvLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX1RJVExFID0gaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCc7XG5cbiAgdmFyIENQUF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiAnaW50IGZsb2F0IHdoaWxlIHByaXZhdGUgY2hhciBjYXRjaCBpbXBvcnQgbW9kdWxlIGV4cG9ydCB2aXJ0dWFsIG9wZXJhdG9yIHNpemVvZiAnICtcbiAgICAgICdkeW5hbWljX2Nhc3R8MTAgdHlwZWRlZiBjb25zdF9jYXN0fDEwIGNvbnN0IGZvciBzdGF0aWNfY2FzdHwxMCB1bmlvbiBuYW1lc3BhY2UgJyArXG4gICAgICAndW5zaWduZWQgbG9uZyB2b2xhdGlsZSBzdGF0aWMgcHJvdGVjdGVkIGJvb2wgdGVtcGxhdGUgbXV0YWJsZSBpZiBwdWJsaWMgZnJpZW5kICcgK1xuICAgICAgJ2RvIGdvdG8gYXV0byB2b2lkIGVudW0gZWxzZSBicmVhayBleHRlcm4gdXNpbmcgYXNtIGNhc2UgdHlwZWlkICcgK1xuICAgICAgJ3Nob3J0IHJlaW50ZXJwcmV0X2Nhc3R8MTAgZGVmYXVsdCBkb3VibGUgcmVnaXN0ZXIgZXhwbGljaXQgc2lnbmVkIHR5cGVuYW1lIHRyeSB0aGlzICcgK1xuICAgICAgJ3N3aXRjaCBjb250aW51ZSBpbmxpbmUgZGVsZXRlIGFsaWdub2YgY29uc3RleHByIGNvbnN0ZXZhbCBjb25zdGluaXQgZGVjbHR5cGUgJyArXG4gICAgICAnY29uY2VwdCBjb19hd2FpdCBjb19yZXR1cm4gY29feWllbGQgcmVxdWlyZXMgJyArXG4gICAgICAnbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5ICcgK1xuICAgICAgJ2F0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciAnICtcbiAgICAgICdhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nICcgK1xuICAgICAgJ2F0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiAnICtcbiAgICAgICdhbmQgb3Igbm90JyxcbiAgICBidWlsdF9pbjogJ3N0ZCBzdHJpbmcgd3N0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtICcgK1xuICAgICAgJ2F1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgJyArXG4gICAgICAndW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgJyArXG4gICAgICAnYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgJyArXG4gICAgICAnZnNjYW5mIGZ1dHVyZSBpc2FsbnVtIGlzYWxwaGEgaXNjbnRybCBpc2RpZ2l0IGlzZ3JhcGggaXNsb3dlciBpc3ByaW50IGlzcHVuY3QgaXNzcGFjZSBpc3VwcGVyICcgK1xuICAgICAgJ2lzeGRpZ2l0IHRvbG93ZXIgdG91cHBlciBsYWJzIGxkZXhwIGxvZzEwIGxvZyBtYWxsb2MgcmVhbGxvYyBtZW1jaHIgbWVtY21wIG1lbWNweSBtZW1zZXQgbW9kZiBwb3cgJyArXG4gICAgICAncHJpbnRmIHB1dGNoYXIgcHV0cyBzY2FuZiBzaW5oIHNpbiBzbnByaW50ZiBzcHJpbnRmIHNxcnQgc3NjYW5mIHN0cmNhdCBzdHJjaHIgc3RyY21wICcgK1xuICAgICAgJ3N0cmNweSBzdHJjc3BuIHN0cmxlbiBzdHJuY2F0IHN0cm5jbXAgc3RybmNweSBzdHJwYnJrIHN0cnJjaHIgc3Ryc3BuIHN0cnN0ciB0YW5oIHRhbiAnICtcbiAgICAgICd2ZnByaW50ZiB2cHJpbnRmIHZzcHJpbnRmIGVuZGwgaW5pdGlhbGl6ZXJfbGlzdCB1bmlxdWVfcHRyJyxcbiAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxscHRyIE5VTEwnXG4gIH07XG5cbiAgdmFyIEVYUFJFU1NJT05fQ09OVEFJTlMgPSBbXG4gICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIFNUUklOR1NcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYycsICdjYycsICdoJywgJ2MrKycsICdoKysnLCAnaHBwJywgJ2hoJywgJ2h4eCcsICdjeHgnXSxcbiAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFtcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYihkZXF1ZXxsaXN0fHF1ZXVlfHN0YWNrfHZlY3RvcnxtYXB8c2V0fGJpdHNldHxtdWx0aXNldHxtdWx0aW1hcHx1bm9yZGVyZWRfbWFwfHVub3JkZXJlZF9zZXR8dW5vcmRlcmVkX211bHRpc2V0fHVub3JkZXJlZF9tdWx0aW1hcHxhcnJheSlcXFxccyo8JywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBDUFBfUFJJTUlUSVZFX1RZUEVTXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBUaGlzIG1vZGUgY292ZXJzIGV4cHJlc3Npb24gY29udGV4dCB3aGVyZSB3ZSBjYW4ndCBleHBlY3QgYSBmdW5jdGlvblxuICAgICAgICAvLyBkZWZpbml0aW9uIGFuZCBzaG91bGRuJ3QgaGlnaGxpZ2h0IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZSBvbmU6XG4gICAgICAgIC8vIGByZXR1cm4gc29tZSgpYCwgYGVsc2UgaWYoKWAsIGAoeCpzdW0oMSwgMikpYFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogLz0vLCBlbmQ6IC87L30sXG4gICAgICAgICAge2JlZ2luOiAvXFwoLywgZW5kOiAvXFwpL30sXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICduZXcgdGhyb3cgcmV0dXJuIGVsc2UnLCBlbmQ6IC87L31cbiAgICAgICAgXSxcbiAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFsnc2VsZiddKSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSksXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5JREVOVF9SRSArICdbXFxcXComXFxcXHNdKykrJyArIEZVTkNUSU9OX1RJVExFLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHdcXHNcXComXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IEZVTkNUSU9OX1RJVExFLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5USVRMRV9NT0RFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIFNUUklOR1MsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVMsXG4gICAgICAgICAgICAgIC8vIENvdW50IG1hdGNoaW5nIHBhcmVudGhlc2VzLlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgICAgICBDUFBfUFJJTUlUSVZFX1RZUEVTXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBQUkVQUk9DRVNTT1JcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3Mgc3RydWN0JywgZW5kOiAvW3s7Ol0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbjogLzwvLCBlbmQ6IC8+LywgY29udGFpbnM6IFsnc2VsZiddfSwgLy8gc2tpcCBnZW5lcmljIHN0dWZmXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdKSxcbiAgICBleHBvcnRzOiB7XG4gICAgICBwcmVwcm9jZXNzb3I6IFBSRVBST0NFU1NPUixcbiAgICAgIHN0cmluZ3M6IFNUUklOR1MsXG4gICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTXG4gICAgfVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuXHR2YXIgQVJEVUlOT19LVyA9IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdib29sZWFuIGJ5dGUgd29yZCBTdHJpbmcnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzZXR1cCBsb29wJyArXG4gICAgICAgICdLZXlib2FyZENvbnRyb2xsZXIgTW91c2VDb250cm9sbGVyIFNvZnR3YXJlU2VyaWFsICcgK1xuICAgICAgICAnRXRoZXJuZXRTZXJ2ZXIgRXRoZXJuZXRDbGllbnQgTGlxdWlkQ3J5c3RhbCAnICtcbiAgICAgICAgJ1JvYm90Q29udHJvbCBHU01Wb2ljZUNhbGwgRXRoZXJuZXRVRFAgRXNwbG9yYVRGVCAnICtcbiAgICAgICAgJ0h0dHBDbGllbnQgUm9ib3RNb3RvciBXaUZpQ2xpZW50IEdTTVNjYW5uZXIgJyArXG4gICAgICAgICdGaWxlU3lzdGVtIFNjaGVkdWxlciBHU01TZXJ2ZXIgWXVuQ2xpZW50IFl1blNlcnZlciAnICtcbiAgICAgICAgJ0lQQWRkcmVzcyBHU01DbGllbnQgR1NNTW9kZW0gS2V5Ym9hcmQgRXRoZXJuZXQgJyArXG4gICAgICAgICdDb25zb2xlIEdTTUJhbmQgRXNwbG9yYSBTdGVwcGVyIFByb2Nlc3MgJyArXG4gICAgICAgICdXaUZpVURQIEdTTV9TTVMgTWFpbGJveCBVU0JIb3N0IEZpcm1hdGEgUEltYWdlICcgK1xuICAgICAgICAnQ2xpZW50IFNlcnZlciBHU01QSU4gRmlsZUlPIEJyaWRnZSBTZXJpYWwgJyArXG4gICAgICAgICdFRVBST00gU3RyZWFtIE1vdXNlIEF1ZGlvIFNlcnZvIEZpbGUgVGFzayAnICtcbiAgICAgICAgJ0dQUlMgV2lGaSBXaXJlIFRGVCBHU00gU1BJIFNEICcgK1xuICAgICAgICAncnVuU2hlbGxDb21tYW5kQXN5bmNocm9ub3VzbHkgYW5hbG9nV3JpdGVSZXNvbHV0aW9uICcgK1xuICAgICAgICAncmV0cmlldmVDYWxsaW5nTnVtYmVyIHByaW50RmlybXdhcmVWZXJzaW9uICcgK1xuICAgICAgICAnYW5hbG9nUmVhZFJlc29sdXRpb24gc2VuZERpZ2l0YWxQb3J0UGFpciAnICtcbiAgICAgICAgJ25vTGlzdGVuT25Mb2NhbGhvc3QgcmVhZEpveXN0aWNrQnV0dG9uIHNldEZpcm13YXJlVmVyc2lvbiAnICtcbiAgICAgICAgJ3JlYWRKb3lzdGlja1N3aXRjaCBzY3JvbGxEaXNwbGF5UmlnaHQgZ2V0Vm9pY2VDYWxsU3RhdHVzICcgK1xuICAgICAgICAnc2Nyb2xsRGlzcGxheUxlZnQgd3JpdGVNaWNyb3NlY29uZHMgZGVsYXlNaWNyb3NlY29uZHMgJyArXG4gICAgICAgICdiZWdpblRyYW5zbWlzc2lvbiBnZXRTaWduYWxTdHJlbmd0aCBydW5Bc3luY2hyb25vdXNseSAnICtcbiAgICAgICAgJ2dldEFzeW5jaHJvbm91c2x5IGxpc3Rlbk9uTG9jYWxob3N0IGdldEN1cnJlbnRDYXJyaWVyICcgK1xuICAgICAgICAncmVhZEFjY2VsZXJvbWV0ZXIgbWVzc2FnZUF2YWlsYWJsZSBzZW5kRGlnaXRhbFBvcnRzICcgK1xuICAgICAgICAnbGluZUZvbGxvd0NvbmZpZyBjb3VudHJ5TmFtZVdyaXRlIHJ1blNoZWxsQ29tbWFuZCAnICtcbiAgICAgICAgJ3JlYWRTdHJpbmdVbnRpbCByZXdpbmREaXJlY3RvcnkgcmVhZFRlbXBlcmF0dXJlICcgK1xuICAgICAgICAnc2V0Q2xvY2tEaXZpZGVyIHJlYWRMaWdodFNlbnNvciBlbmRUcmFuc21pc3Npb24gJyArXG4gICAgICAgICdhbmFsb2dSZWZlcmVuY2UgZGV0YWNoSW50ZXJydXB0IGNvdW50cnlOYW1lUmVhZCAnICtcbiAgICAgICAgJ2F0dGFjaEludGVycnVwdCBlbmNyeXB0aW9uVHlwZSByZWFkQnl0ZXNVbnRpbCAnICtcbiAgICAgICAgJ3JvYm90TmFtZVdyaXRlIHJlYWRNaWNyb3Bob25lIHJvYm90TmFtZVJlYWQgY2l0eU5hbWVXcml0ZSAnICtcbiAgICAgICAgJ3VzZXJOYW1lV3JpdGUgcmVhZEpveXN0aWNrWSByZWFkSm95c3RpY2tYIG1vdXNlUmVsZWFzZWQgJyArXG4gICAgICAgICdvcGVuTmV4dEZpbGUgc2Nhbk5ldHdvcmtzIG5vSW50ZXJydXB0cyBkaWdpdGFsV3JpdGUgJyArXG4gICAgICAgICdiZWdpblNwZWFrZXIgbW91c2VQcmVzc2VkIGlzQWN0aW9uRG9uZSBtb3VzZURyYWdnZWQgJyArXG4gICAgICAgICdkaXNwbGF5TG9nb3Mgbm9BdXRvc2Nyb2xsIGFkZFBhcmFtZXRlciByZW1vdGVOdW1iZXIgJyArXG4gICAgICAgICdnZXRNb2RpZmllcnMga2V5Ym9hcmRSZWFkIHVzZXJOYW1lUmVhZCB3YWl0Q29udGludWUgJyArXG4gICAgICAgICdwcm9jZXNzSW5wdXQgcGFyc2VDb21tYW5kIHByaW50VmVyc2lvbiByZWFkTmV0d29ya3MgJyArXG4gICAgICAgICd3cml0ZU1lc3NhZ2UgYmxpbmtWZXJzaW9uIGNpdHlOYW1lUmVhZCByZWFkTWVzc2FnZSAnICtcbiAgICAgICAgJ3NldERhdGFNb2RlIHBhcnNlUGFja2V0IGlzTGlzdGVuaW5nIHNldEJpdE9yZGVyICcgK1xuICAgICAgICAnYmVnaW5QYWNrZXQgaXNEaXJlY3RvcnkgbW90b3JzV3JpdGUgZHJhd0NvbXBhc3MgJyArXG4gICAgICAgICdkaWdpdGFsUmVhZCBjbGVhclNjcmVlbiBzZXJpYWxFdmVudCByaWdodFRvTGVmdCAnICtcbiAgICAgICAgJ3NldFRleHRTaXplIGxlZnRUb1JpZ2h0IHJlcXVlc3RGcm9tIGtleVJlbGVhc2VkICcgK1xuICAgICAgICAnY29tcGFzc1JlYWQgYW5hbG9nV3JpdGUgaW50ZXJydXB0cyBXaUZpU2VydmVyICcgK1xuICAgICAgICAnZGlzY29ubmVjdCBwbGF5TWVsb2R5IHBhcnNlRmxvYXQgYXV0b3Njcm9sbCAnICtcbiAgICAgICAgJ2dldFBJTlVzZWQgc2V0UElOVXNlZCBzZXRUaW1lb3V0IHNlbmRBbmFsb2cgJyArXG4gICAgICAgICdyZWFkU2xpZGVyIGFuYWxvZ1JlYWQgYmVnaW5Xcml0ZSBjcmVhdGVDaGFyICcgK1xuICAgICAgICAnbW90b3JzU3RvcCBrZXlQcmVzc2VkIHRlbXBvV3JpdGUgcmVhZEJ1dHRvbiAnICtcbiAgICAgICAgJ3N1Ym5ldE1hc2sgZGVidWdQcmludCBtYWNBZGRyZXNzIHdyaXRlR3JlZW4gJyArXG4gICAgICAgICdyYW5kb21TZWVkIGF0dGFjaEdQUlMgcmVhZFN0cmluZyBzZW5kU3RyaW5nICcgK1xuICAgICAgICAncmVtb3RlUG9ydCByZWxlYXNlQWxsIG1vdXNlTW92ZWQgYmFja2dyb3VuZCAnICtcbiAgICAgICAgJ2dldFhDaGFuZ2UgZ2V0WUNoYW5nZSBhbnN3ZXJDYWxsIGdldFJlc3VsdCAnICtcbiAgICAgICAgJ3ZvaWNlQ2FsbCBlbmRQYWNrZXQgY29uc3RyYWluIGdldFNvY2tldCB3cml0ZUpTT04gJyArXG4gICAgICAgICdnZXRCdXR0b24gYXZhaWxhYmxlIGNvbm5lY3RlZCBmaW5kVW50aWwgcmVhZEJ5dGVzICcgK1xuICAgICAgICAnZXhpdFZhbHVlIHJlYWRHcmVlbiB3cml0ZUJsdWUgc3RhcnRMb29wIElQQWRkcmVzcyAnICtcbiAgICAgICAgJ2lzUHJlc3NlZCBzZW5kU3lzZXggcGF1c2VNb2RlIGdhdGV3YXlJUCBzZXRDdXJzb3IgJyArXG4gICAgICAgICdnZXRPZW1LZXkgdHVuZVdyaXRlIG5vRGlzcGxheSBsb2FkSW1hZ2Ugc3dpdGNoUElOICcgK1xuICAgICAgICAnb25SZXF1ZXN0IG9uUmVjZWl2ZSBjaGFuZ2VQSU4gcGxheUZpbGUgbm9CdWZmZXIgJyArXG4gICAgICAgICdwYXJzZUludCBvdmVyZmxvdyBjaGVja1BJTiBrbm9iUmVhZCBiZWdpblRGVCAnICtcbiAgICAgICAgJ2JpdENsZWFyIHVwZGF0ZUlSIGJpdFdyaXRlIHBvc2l0aW9uIHdyaXRlUkdCICcgK1xuICAgICAgICAnaGlnaEJ5dGUgd3JpdGVSZWQgc2V0U3BlZWQgcmVhZEJsdWUgbm9TdHJva2UgJyArXG4gICAgICAgICdyZW1vdGVJUCB0cmFuc2ZlciBzaHV0ZG93biBoYW5nQ2FsbCBiZWdpblNNUyAnICtcbiAgICAgICAgJ2VuZFdyaXRlIGF0dGFjaGVkIG1haW50YWluIG5vQ3Vyc29yIGNoZWNrUmVnICcgK1xuICAgICAgICAnY2hlY2tQVUsgc2hpZnRPdXQgaXNWYWxpZCBzaGlmdEluIHB1bHNlSW4gJyArXG4gICAgICAgICdjb25uZWN0IHByaW50bG4gbG9jYWxJUCBwaW5Nb2RlIGdldElNRUkgJyArXG4gICAgICAgICdkaXNwbGF5IG5vQmxpbmsgcHJvY2VzcyBnZXRCYW5kIHJ1bm5pbmcgYmVnaW5TRCAnICtcbiAgICAgICAgJ2RyYXdCTVAgbG93Qnl0ZSBzZXRCYW5kIHJlbGVhc2UgYml0UmVhZCBwcmVwYXJlICcgK1xuICAgICAgICAncG9pbnRUbyByZWFkUmVkIHNldE1vZGUgbm9GaWxsIHJlbW92ZSBsaXN0ZW4gJyArXG4gICAgICAgICdzdHJva2UgZGV0YWNoIGF0dGFjaCBub1RvbmUgZXhpc3RzIGJ1ZmZlciAnICtcbiAgICAgICAgJ2hlaWdodCBiaXRTZXQgY2lyY2xlIGNvbmZpZyBjdXJzb3IgcmFuZG9tICcgK1xuICAgICAgICAnSVJyZWFkIHNldEROUyBlbmRTTVMgZ2V0S2V5IG1pY3JvcyAnICtcbiAgICAgICAgJ21pbGxpcyBiZWdpbiBwcmludCB3cml0ZSByZWFkeSBmbHVzaCB3aWR0aCAnICtcbiAgICAgICAgJ2lzUElOIGJsaW5rIGNsZWFyIHByZXNzIG1rZGlyIHJtZGlyIGNsb3NlICcgK1xuICAgICAgICAncG9pbnQgeWllbGQgaW1hZ2UgQlNTSUQgY2xpY2sgZGVsYXkgJyArXG4gICAgICAgICdyZWFkIHRleHQgbW92ZSBwZWVrIGJlZXAgcmVjdCBsaW5lIG9wZW4gJyArXG4gICAgICAgICdzZWVrIGZpbGwgc2l6ZSB0dXJuIHN0b3AgaG9tZSBmaW5kICcgK1xuICAgICAgICAnc3RlcCB0b25lIHNxcnQgUlNTSSBTU0lEICcgK1xuICAgICAgICAnZW5kIGJpdCB0YW4gY29zIHNpbiBwb3cgbWFwIGFicyBtYXggJyArXG4gICAgICAgICdtaW4gZ2V0IHJ1biBwdXQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ0RJR0lUQUxfTUVTU0FHRSBGSVJNQVRBX1NUUklORyBBTkFMT0dfTUVTU0FHRSAnICtcbiAgICAgICAgJ1JFUE9SVF9ESUdJVEFMIFJFUE9SVF9BTkFMT0cgSU5QVVRfUFVMTFVQICcgK1xuICAgICAgICAnU0VUX1BJTl9NT0RFIElOVEVSTkFMMlY1NiBTWVNURU1fUkVTRVQgTEVEX0JVSUxUSU4gJyArXG4gICAgICAgICdJTlRFUk5BTDFWMSBTWVNFWF9TVEFSVCBJTlRFUk5BTCBFWFRFUk5BTCAnICtcbiAgICAgICAgJ0RFRkFVTFQgT1VUUFVUIElOUFVUIEhJR0ggTE9XJ1xuICB9O1xuXG4gIHZhciBBUkRVSU5PID0gaGxqcy5nZXRMYW5ndWFnZSgnY3BwJykucmF3RGVmaW5pdGlvbigpO1xuXG4gIHZhciBrd3MgPSBBUkRVSU5PLmtleXdvcmRzO1xuXG4gIGt3cy5rZXl3b3JkICs9ICcgJyArIEFSRFVJTk9fS1cua2V5d29yZDtcbiAga3dzLmxpdGVyYWwgKz0gJyAnICsgQVJEVUlOT19LVy5saXRlcmFsO1xuICBrd3MuYnVpbHRfaW4gKz0gJyAnICsgQVJEVUlOT19LVy5idWlsdF9pbjtcblxuICByZXR1cm4gQVJEVUlOTztcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgLy9sb2NhbCBsYWJlbHM6ICU/W0ZCXT9bQVRdP1xcZHsxLDJ9XFx3K1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgYWxpYXNlczogWydhcm0nXSxcbiAgICBsZXhlbWVzOiAnXFxcXC4/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIG1ldGE6XG4gICAgICAgIC8vR05VIHByZXByb2NzXG4gICAgICAgICcuMmJ5dGUgLjRieXRlIC5hbGlnbiAuYXNjaWkgLmFzY2l6IC5iYWxpZ24gLmJ5dGUgLmNvZGUgLmRhdGEgLmVsc2UgLmVuZCAuZW5kaWYgLmVuZG0gLmVuZHIgLmVxdSAuZXJyIC5leGl0bSAuZXh0ZXJuIC5nbG9iYWwgLmh3b3JkIC5pZiAuaWZkZWYgLmlmbmRlZiAuaW5jbHVkZSAuaXJwIC5sb25nIC5tYWNybyAucmVwdCAucmVxIC5zZWN0aW9uIC5zZXQgLnNraXAgLnNwYWNlIC50ZXh0IC53b3JkIC5hcm0gLnRodW1iIC5jb2RlMTYgLmNvZGUzMiAuZm9yY2VfdGh1bWIgLnRodW1iX2Z1bmMgLmx0b3JnICcrXG4gICAgICAgIC8vQVJNIGRpcmVjdGl2ZXNcbiAgICAgICAgJ0FMSUFTIEFMSUdOIEFSTSBBUkVBIEFTU0VSVCBBVFRSIENOIENPREUgQ09ERTE2IENPREUzMiBDT01NT04gQ1AgREFUQSBEQ0IgRENEIERDRFUgRENETyBEQ0ZEIERDRkRVIERDSSBEQ1EgRENRVSBEQ1cgRENXVSBETiBFTElGIEVMU0UgRU5EIEVOREZVTkMgRU5ESUYgRU5EUCBFTlRSWSBFUVUgRVhQT1JUIEVYUE9SVEFTIEVYVEVSTiBGSUVMRCBGSUxMIEZVTkNUSU9OIEdCTEEgR0JMTCBHQkxTIEdFVCBHTE9CQUwgSUYgSU1QT1JUIElOQ0JJTiBJTkNMVURFIElORk8gS0VFUCBMQ0xBIExDTEwgTENMUyBMVE9SRyBNQUNSTyBNQVAgTUVORCBNRVhJVCBOT0ZQIE9QVCBQUkVTRVJWRTggUFJPQyBRTiBSRUFET05MWSBSRUxPQyBSRVFVSVJFIFJFUVVJUkU4IFJMSVNUIEZOIFJPVVQgU0VUQSBTRVRMIFNFVFMgU04gU1BBQ0UgU1VCVCBUSFVNQiBUSFVNQlggVFRMIFdISUxFIFdFTkQgJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncjAgcjEgcjIgcjMgcjQgcjUgcjYgcjcgcjggcjkgcjEwIHIxMSByMTIgcjEzIHIxNCByMTUgJysgLy9zdGFuZGFyZCByZWdpc3RlcnNcbiAgICAgICAgJ3BjIGxyIHNwIGlwIHNsIHNiIGZwICcrIC8vdHlwaWNhbCByZWdzIHBsdXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAnYTEgYTIgYTMgYTQgdjEgdjIgdjMgdjQgdjUgdjYgdjcgdjggZjAgZjEgZjIgZjMgZjQgZjUgZjYgZjcgJysgLy9tb3JlIHJlZ3MgYW5kIGZwXG4gICAgICAgICdwMCBwMSBwMiBwMyBwNCBwNSBwNiBwNyBwOCBwOSBwMTAgcDExIHAxMiBwMTMgcDE0IHAxNSAnKyAvL2NvcHJvY2Vzc29yIHJlZ3NcbiAgICAgICAgJ2MwIGMxIGMyIGMzIGM0IGM1IGM2IGM3IGM4IGM5IGMxMCBjMTEgYzEyIGMxMyBjMTQgYzE1ICcrIC8vbW9yZSBjb3Byb2NcbiAgICAgICAgJ3EwIHExIHEyIHEzIHE0IHE1IHE2IHE3IHE4IHE5IHExMCBxMTEgcTEyIHExMyBxMTQgcTE1ICcrIC8vYWR2YW5jZWQgU0lNRCBORU9OIHJlZ3NcblxuICAgICAgICAvL3Byb2dyYW0gc3RhdHVzIHJlZ2lzdGVyc1xuICAgICAgICAnY3Bzcl9jIGNwc3JfeCBjcHNyX3MgY3Bzcl9mIGNwc3JfY3ggY3Bzcl9jeHMgY3Bzcl94cyBjcHNyX3hzZiBjcHNyX3NmIGNwc3JfY3hzZiAnK1xuICAgICAgICAnc3Bzcl9jIHNwc3JfeCBzcHNyX3Mgc3Bzcl9mIHNwc3JfY3ggc3Bzcl9jeHMgc3Bzcl94cyBzcHNyX3hzZiBzcHNyX3NmIHNwc3JfY3hzZiAnK1xuXG4gICAgICAgIC8vTkVPTiBhbmQgVkZQIHJlZ2lzdGVyc1xuICAgICAgICAnczAgczEgczIgczMgczQgczUgczYgczcgczggczkgczEwIHMxMSBzMTIgczEzIHMxNCBzMTUgJytcbiAgICAgICAgJ3MxNiBzMTcgczE4IHMxOSBzMjAgczIxIHMyMiBzMjMgczI0IHMyNSBzMjYgczI3IHMyOCBzMjkgczMwIHMzMSAnK1xuICAgICAgICAnZDAgZDEgZDIgZDMgZDQgZDUgZDYgZDcgZDggZDkgZDEwIGQxMSBkMTIgZDEzIGQxNCBkMTUgJytcbiAgICAgICAgJ2QxNiBkMTcgZDE4IGQxOSBkMjAgZDIxIGQyMiBkMjMgZDI0IGQyNSBkMjYgZDI3IGQyOCBkMjkgZDMwIGQzMSAnICtcblxuICAgICAgICAne1BDfSB7VkFSfSB7VFJVRX0ge0ZBTFNFfSB7T1BUfSB7Q09ORklHfSB7RU5ESUFOfSB7Q09ERVNJWkV9IHtDUFV9IHtGUFV9IHtBUkNISVRFQ1RVUkV9IHtQQ1NUT1JFT0ZGU0VUfSB7QVJNQVNNX1ZFUlNJT059IHtJTlRFUn0ge1JPUEl9IHtSV1BJfSB7U1dTVH0ge05PU1dTVH0gLiBAJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoJysgICAgIC8vbW5lbW9uaWNzXG4gICAgICAgICAgICAnYWRjfCcrXG4gICAgICAgICAgICAnKHFkP3xzaD98dVtxaF0/KT9hZGQoOHwxNik/fHVzYWRhPzh8KHF8c2g/fHVbcWhdPyk/KGFzfHNhKXh8JytcbiAgICAgICAgICAgICdhbmR8YWRybD98c2JjfHJzW2JjXXxhc3J8YltseF0/fGJseHxieGp8Y2JuP3p8dGJbYmhdfGJpY3wnK1xuICAgICAgICAgICAgJ2JmY3xiZml8W3N1XWJmeHxia3B0fGNkcDI/fGNsenxjbHJleHxjbXB8Y21ufGNwc2lbZWRdfGNwc3wnK1xuICAgICAgICAgICAgJ3NldGVuZHxkYmd8ZG1ifGRzYnxlb3J8aXNifGl0W3RlXXswLDN9fGxzbHxsc3J8cm9yfHJyeHwnK1xuICAgICAgICAgICAgJ2xkbSgoW2lkXVthYl0pfGZbZHNdKT98bGRyKChzfGV4KT9bYmhkXSk/fG1vdnQ/fG12bnxtcmF8bWFyfCcrXG4gICAgICAgICAgICAnbXVsfFt1c11tdWxsfHNtdWxbYnd0XVtidF18c211W2FzXWR8c21tdWx8c21tbGF8JytcbiAgICAgICAgICAgICdtbGF8dW1sYWFsfHNtbGFsPyhbd2J0XVtidF18ZCl8bWxzfHNtbHNsP1tkc118c21jfHN2Y3xzZXZ8JytcbiAgICAgICAgICAgICdtaWEoW2J0XXsyfXxwaCk/fG1ycj9jMj98bWNycjI/fG1yc3xtc3J8b3JyfG9ybnxwa2godGJ8YnQpfHJiaXR8JytcbiAgICAgICAgICAgICdyZXYoMTZ8c2gpP3xzZWx8W3N1XXNhdCgxNik/fG5vcHxwb3B8cHVzaHxyZmUoW2lkXVthYl0pP3wnK1xuICAgICAgICAgICAgJ3N0bShbaWRdW2FiXSk/fHN0cihleCk/W2JoZF0/fChxZD8pP3N1Ynwoc2g/fHF8dVtxaF0/KT9zdWIoOHwxNil8JytcbiAgICAgICAgICAgICdbc3VdeHQoYT9ofGE/YigxNik/KXxzcnMoW2lkXVthYl0pP3xzd3BiP3xzd2l8c21pfHRzdHx0ZXF8JytcbiAgICAgICAgICAgICd3ZmV8d2ZpfHlpZWxkJytcbiAgICAgICAgJyknK1xuICAgICAgICAnKGVxfG5lfGNzfGNjfG1pfHBsfHZzfHZjfGhpfGxzfGdlfGx0fGd0fGxlfGFsfGhzfGxvKT8nKyAvL2NvbmRpdGlvbiBjb2Rlc1xuICAgICAgICAnW3NwdHJ4XT8nICwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xlZ2FsIHBvc3RmaXhlc1xuICAgICAgICBlbmQ6ICdcXFxccydcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ1s7QF0nLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXHwnLCBlbmQ6ICdcXFxcfCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJ1sjJD1dPzB4WzAtOWEtZl0rJ30sIC8vaGV4XG4gICAgICAgICAgICB7YmVnaW46ICdbIyQ9XT8wYlswMV0rJ30sICAgICAvL2JpblxuICAgICAgICAgICAge2JlZ2luOiAnWyMkPV1cXFxcZCsnfSwgICAgICAgIC8vbGl0ZXJhbFxuICAgICAgICAgICAge2JlZ2luOiAnXFxcXGJcXFxcZCsnfSAgICAgICAgICAgLy9iYXJlIG51bWJlclxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7YmVnaW46ICdeW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rJ30sIC8vQVJNIHN5bnRheFxuICAgICAgICAgICAge2JlZ2luOiAnXlxcXFxzKlthLXpfXFxcXC5cXFxcJF1bYS16MC05X1xcXFwuXFxcXCRdKzonfSwgLy9HTlUgQVJNIHN5bnRheFxuICAgICAgICAgICAge2JlZ2luOiAnWz0jXVxcXFx3KycgfSAgLy9sYWJlbCByZWZlcmVuY2VcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFhNTF9JREVOVF9SRSA9ICdbQS1aYS16MC05XFxcXC5fOi1dKyc7XG4gIHZhciBUQUdfSU5URVJOQUxTID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIGlsbGVnYWw6IC88LyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiBYTUxfSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC89XFxzKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAvW15cXHNcIic9PD5gXSsvfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2h0bWwnLCAneGh0bWwnLCAncnNzJywgJ2F0b20nLCAneGpiJywgJ3hzZCcsICd4c2wnLCAncGxpc3QnLCAnd3NmJywgJ3N2ZyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnPCFET0NUWVBFJywgZW5kOiAnPicsXG4gICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXSd9XVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJzwhLS0nLFxuICAgICAgICAnLS0+JyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8XFxcXCFcXFxcW0NEQVRBXFxcXFsnLCBlbmQ6ICdcXFxcXVxcXFxdPicsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogLzxcXD94bWwvLCBlbmQ6IC9cXD8+LywgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC88XFw/KHBocCk/LywgZW5kOiAvXFw/Pi8sXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncGhwJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBwaHAgY2xvc2luZyB0YWcgPz4gdG8gY2xvc2UgdGhlIFBIUCBibG9jayB3aGVuXG4gICAgICAgICAgLy8gaW5zaWRlIGFueSBvZiB0aGUgZm9sbG93aW5nIGJsb2NrczpcbiAgICAgICAgICB7YmVnaW46ICcvXFxcXConLCBlbmQ6ICdcXFxcKi8nLCBza2lwOiB0cnVlfSxcbiAgICAgICAgICB7YmVnaW46ICdiXCInLCBlbmQ6ICdcIicsIHNraXA6IHRydWV9LFxuICAgICAgICAgIHtiZWdpbjogJ2JcXCcnLCBlbmQ6ICdcXCcnLCBza2lwOiB0cnVlfSxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbCwgY2xhc3NOYW1lOiBudWxsLCBjb250YWluczogbnVsbCwgc2tpcDogdHJ1ZX0pLFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbCwgY2xhc3NOYW1lOiBudWxsLCBjb250YWluczogbnVsbCwgc2tpcDogdHJ1ZX0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8qXG4gICAgICAgIFRoZSBsb29rYWhlYWQgcGF0dGVybiAoPz0uLi4pIGVuc3VyZXMgdGhhdCAnYmVnaW4nIG9ubHkgbWF0Y2hlc1xuICAgICAgICAnPHN0eWxlJyBhcyBhIHNpbmdsZSB3b3JkLCBmb2xsb3dlZCBieSBhIHdoaXRlc3BhY2Ugb3IgYW5cbiAgICAgICAgZW5kaW5nIGJyYWtldC4gVGhlICckJyBpcyBuZWVkZWQgZm9yIHRoZSBsZXhlbWUgdG8gYmUgcmVjb2duaXplZFxuICAgICAgICBieSBobGpzLnN1Yk1vZGUoKSB0aGF0IHRlc3RzIGxleGVtZXMgb3V0c2lkZSB0aGUgc3RyZWFtLlxuICAgICAgICAqL1xuICAgICAgICBiZWdpbjogJzxzdHlsZSg/PVxcXFxzfD4pJywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiB7bmFtZTogJ3N0eWxlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbVEFHX0lOVEVSTkFMU10sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJzwvc3R5bGU+JywgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiBbJ2NzcycsICd4bWwnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gdGhlIDxzdHlsZSB0YWcgYWJvdXQgdGhlIGxvb2thaGVhZCBwYXR0ZXJuXG4gICAgICAgIGJlZ2luOiAnPHNjcmlwdCg/PVxcXFxzfD4pJywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiB7bmFtZTogJ3NjcmlwdCd9LFxuICAgICAgICBjb250YWluczogW1RBR19JTlRFUk5BTFNdLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXDxcXC9zY3JpcHRcXD4nLCByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6IFsnYWN0aW9uc2NyaXB0JywgJ2phdmFzY3JpcHQnLCAnaGFuZGxlYmFycycsICd4bWwnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICBiZWdpbjogJzwvPycsIGVuZDogJy8/PicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsIGJlZ2luOiAvW15cXC8+PFxcc10rLywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUQUdfSU5URVJOQUxTXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYWRvYyddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBibG9jayBjb21tZW50XG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdeL3s0LH1cXFxcbicsXG4gICAgICAgICdcXFxcbi97NCx9JCcsXG4gICAgICAgIC8vIGNhbiBhbHNvIGJlIGRvbmUgYXMuLi5cbiAgICAgICAgLy8nXi97NCx9JCcsXG4gICAgICAgIC8vJ14vezQsfSQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLy8gbGluZSBjb21tZW50XG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdeLy8nLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8vIHRpdGxlXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXC5cXFxcdy4qJCdcbiAgICAgIH0sXG4gICAgICAvLyBleGFtcGxlLCBhZG1vbml0aW9uICYgc2lkZWJhciBibG9ja3NcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeWz1cXFxcKl17NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcbl5bPVxcXFwqXXs0LH0kJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGhlYWRpbmdzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ14oPXsxLDV9KSAuKz8oIFxcXFwxKT8kJ30sXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXFtcXFxcXVxcXFxuXSs/XFxcXG5bPVxcXFwtflxcXFxeXFxcXCtdezIsfSQnfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGRvY3VtZW50IGF0dHJpYnV0ZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXjouKz86JyxcbiAgICAgICAgZW5kOiAnXFxcXHMnLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gYmxvY2sgYXR0cmlidXRlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXFsuKz9cXFxcXSQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBxdW90ZWJsb2Nrc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdxdW90ZScsXG4gICAgICAgIGJlZ2luOiAnXl97NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcbl97NCx9JCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBsaXN0aW5nIGFuZCBsaXRlcmFsIGJsb2Nrc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb2RlJyxcbiAgICAgICAgYmVnaW46ICdeW1xcXFwtXFxcXC5dezQsfVxcXFxuJyxcbiAgICAgICAgZW5kOiAnXFxcXG5bXFxcXC1cXFxcLl17NCx9JCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBwYXNzdGhyb3VnaCBibG9ja3NcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeXFxcXCt7NCx9XFxcXG4nLFxuICAgICAgICBlbmQ6ICdcXFxcblxcXFwrezQsfSQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gbGlzdHMgKGNhbiBvbmx5IGNhcHR1cmUgaW5kaWNhdG9ycylcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgICAgYmVnaW46ICdeKFxcXFwqK3xcXFxcLSt8XFxcXC4rfFteXFxcXG5dKz86OilcXFxccysnXG4gICAgICB9LFxuICAgICAgLy8gYWRtb25pdGlvblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ14oTk9URXxUSVB8SU1QT1JUQU5UfFdBUk5JTkd8Q0FVVElPTik6XFxcXHMrJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBzdHJvbmdcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Ryb25nJyxcbiAgICAgICAgLy8gbXVzdCBub3QgZm9sbG93IGEgd29yZCBjaGFyYWN0ZXIgb3IgYmUgZm9sbG93ZWQgYnkgYW4gYXN0ZXJpc2sgb3Igc3BhY2VcbiAgICAgICAgYmVnaW46ICdcXFxcQlxcXFwqKD8hW1xcXFwqXFxcXHNdKScsXG4gICAgICAgIGVuZDogJyhcXFxcbnsyfXxcXFxcKiknLFxuICAgICAgICAvLyBhbGxvdyBlc2NhcGVkIGFzdGVyaXNrIGZvbGxvd2VkIGJ5IHdvcmQgY2hhclxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXFxcXFwqXFxcXHcnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGVtcGhhc2lzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgLy8gbXVzdCBub3QgZm9sbG93IGEgd29yZCBjaGFyYWN0ZXIgb3IgYmUgZm9sbG93ZWQgYnkgYSBzaW5nbGUgcXVvdGUgb3Igc3BhY2VcbiAgICAgICAgYmVnaW46ICdcXFxcQlxcJyg/IVtcXCdcXFxcc10pJyxcbiAgICAgICAgZW5kOiAnKFxcXFxuezJ9fFxcJyknLFxuICAgICAgICAvLyBhbGxvdyBlc2NhcGVkIHNpbmdsZSBxdW90ZSBmb2xsb3dlZCBieSB3b3JkIGNoYXJcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxcXFxcXFwnXFxcXHcnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBpbmxpbmUgZW1waGFzaXMgKGFsdClcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgICAgICAvLyBtdXN0IG5vdCBmb2xsb3cgYSB3b3JkIGNoYXJhY3RlciBvciBiZSBmb2xsb3dlZCBieSBhbiB1bmRlcmxpbmUgb3Igc3BhY2VcbiAgICAgICAgYmVnaW46ICdfKD8hW19cXFxcc10pJyxcbiAgICAgICAgZW5kOiAnKFxcXFxuezJ9fF8pJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIHNtYXJ0IHF1b3Rlc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogXCJgYC4rPycnXCJ9LFxuICAgICAgICAgIHtiZWdpbjogXCJgLis/J1wifVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gaW5saW5lIGNvZGUgc25pcHBldHMgKFRPRE8gc2hvdWxkIGdldCBzYW1lIHRyZWF0bWVudCBhcyBzdHJvbmcgYW5kIGVtcGhhc2lzKVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb2RlJyxcbiAgICAgICAgYmVnaW46ICcoYC4rP2B8XFxcXCsuKz9cXFxcKyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBpbmRlbnRlZCBsaXRlcmFsIGJsb2NrXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICBiZWdpbjogJ15bIFxcXFx0XScsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBob3Jpem9udGFsIHJ1bGVzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcJ3szLH1bIFxcXFx0XSokJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIC8vIGltYWdlcyBhbmQgbGlua3NcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcobGluazopPyhodHRwfGh0dHBzfGZ0cHxmaWxlfGlyY3xpbWFnZTo/KTpcXFxcUytcXFxcWy4qP1xcXFxdJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcobGlua3xpbWFnZTo/KTonLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcnLFxuICAgICAgICAgICAgZW5kOiAnW15cXFxcW10rJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXFsnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXF0nLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgS0VZV09SRFMgPVxuICAgICdmYWxzZSBzeW5jaHJvbml6ZWQgaW50IGFic3RyYWN0IGZsb2F0IHByaXZhdGUgY2hhciBib29sZWFuIHN0YXRpYyBudWxsIGlmIGNvbnN0ICcgK1xuICAgICdmb3IgdHJ1ZSB3aGlsZSBsb25nIHRocm93IHN0cmljdGZwIGZpbmFsbHkgcHJvdGVjdGVkIGltcG9ydCBuYXRpdmUgZmluYWwgcmV0dXJuIHZvaWQgJyArXG4gICAgJ2VudW0gZWxzZSBleHRlbmRzIGltcGxlbWVudHMgYnJlYWsgdHJhbnNpZW50IG5ldyBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSAnICtcbiAgICAnYXNzZXJ0IHNob3J0IHBhY2thZ2UgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0aHJvd3MgcHJpdmlsZWdlZCAnICtcbiAgICAnYXNwZWN0T2YgYWR2aWNlZXhlY3V0aW9uIHByb2NlZWQgY2Zsb3diZWxvdyBjZmxvdyBpbml0aWFsaXphdGlvbiBwcmVpbml0aWFsaXphdGlvbiAnICtcbiAgICAnc3RhdGljaW5pdGlhbGl6YXRpb24gd2l0aGluY29kZSB0YXJnZXQgd2l0aGluIGV4ZWN1dGlvbiBnZXRXaXRoaW5UeXBlTmFtZSBoYW5kbGVyICcgK1xuICAgICd0aGlzSm9pblBvaW50IHRoaXNKb2luUG9pbnRTdGF0aWNQYXJ0IHRoaXNFbmNsb3NpbmdKb2luUG9pbnRTdGF0aWNQYXJ0IGRlY2xhcmUgcGFyZW50cyAnK1xuICAgICd3YXJuaW5nIGVycm9yIHNvZnQgcHJlY2VkZW5jZSB0aGlzQXNwZWN0SW5zdGFuY2UnO1xuICB2YXIgU0hPUlRLRVlTID0gJ2dldCBzZXQgYXJncyBjYWxsJztcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWwgOiAvPFxcL3wjLyxcbiAgICBjb250YWlucyA6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICAgIGJlZ2luOiAvXFx3K0AvLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZSA6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbiA6ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUgOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzIDogJ2FzcGVjdCcsXG4gICAgICAgIGVuZCA6IC9bezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsIDogL1s6O1wiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHMgOiAnZXh0ZW5kcyBpbXBsZW1lbnRzIHBlcnR5cGV3aXRoaW4gcGVydGhpcyBwZXJ0YXJnZXQgcGVyY2Zsb3diZWxvdyBwZXJjZmxvdyBpc3NpbmdsZXRvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luIDogL1xcKFteXFwpXSovLFxuICAgICAgICAgICAgZW5kIDogL1spXSsvLFxuICAgICAgICAgICAga2V5d29yZHMgOiBLRVlXT1JEUyArICcgJyArIFNIT1JUS0VZUyxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQgOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lIDogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICdjbGFzcyBpbnRlcmZhY2UnLFxuICAgICAgICBlbmQgOiAvW3s7PV0vLFxuICAgICAgICBleGNsdWRlRW5kIDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBrZXl3b3JkcyA6ICdjbGFzcyBpbnRlcmZhY2UnLFxuICAgICAgICBpbGxlZ2FsIDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHMgOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gQXNwZWN0SiBDb25zdHJ1Y3RzXG4gICAgICAgIGJlZ2luS2V5d29yZHMgOiAncG9pbnRjdXQgYWZ0ZXIgYmVmb3JlIGFyb3VuZCB0aHJvd2luZyByZXR1cm5pbmcnLFxuICAgICAgICBlbmQgOiAvWyldLyxcbiAgICAgICAgZXhjbHVkZUVuZCA6IGZhbHNlLFxuICAgICAgICBpbGxlZ2FsIDogL1tcIlxcW1xcXV0vLFxuICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbiA6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbiA6IHRydWUsXG4gICAgICAgICAgICBjb250YWlucyA6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luIDogL1s6XS8sXG4gICAgICAgIHJldHVybkJlZ2luIDogdHJ1ZSxcbiAgICAgICAgZW5kIDogL1t7O10vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGV4Y2x1ZGVFbmQgOiBmYWxzZSxcbiAgICAgICAga2V5d29yZHMgOiBLRVlXT1JEUyxcbiAgICAgICAgaWxsZWdhbCA6IC9bXCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLFxuICAgICAgICAgICAga2V5d29yZHMgOiBLRVlXT1JEUyArICcgJyArIFNIT1JUS0VZUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIHByZXZlbnRzICduZXcgTmFtZSguLi4pLCBvciB0aHJvdyAuLi4nIGZyb20gYmVpbmcgcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkcyA6ICduZXcgdGhyb3cnLFxuICAgICAgICByZWxldmFuY2UgOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGUgZnVuY3Rpb24gY2xhc3MgaXMgYSBiaXQgZGlmZmVyZW50IGZvciBBc3BlY3RKIGNvbXBhcmVkIHRvIHRoZSBKYXZhIGxhbmd1YWdlXG4gICAgICAgIGNsYXNzTmFtZSA6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luIDogL1xcdysgK1xcdysoXFwuKT9cXHcrXFxzKlxcKFteXFwpXSpcXClcXHMqKCh0aHJvd3MpW1xcd1xccyxdKyk/W1xceztdLyxcbiAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICBlbmQgOiAvW3s7PV0vLFxuICAgICAgICBrZXl3b3JkcyA6IEtFWVdPUkRTLFxuICAgICAgICBleGNsdWRlRW5kIDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnMgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW4gOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW4gOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnMgOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWUgOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luIDogL1xcKC8sIGVuZCA6IC9cXCkvLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAga2V5d29yZHMgOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgLy8gYW5ub3RhdGlvbiBpcyBhbHNvIHVzZWQgaW4gdGhpcyBsYW5ndWFnZVxuICAgICAgICBjbGFzc05hbWUgOiAnbWV0YScsXG4gICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJBQ0tUSUNLX0VTQ0FQRSA9IHtcbiAgICBiZWdpbjogJ2BbXFxcXHNcXFxcU10nXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsgJ2FoaycgXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ0JyZWFrIENvbnRpbnVlIENyaXRpY2FsIEV4aXQgRXhpdEFwcCBHb3N1YiBHb3RvIE5ldyBPbkV4aXQgUGF1c2UgcmV0dXJuIFNldEJhdGNoTGluZXMgU2V0VGltZXIgU3VzcGVuZCBUaHJlYWQgVGhyb3cgVW50aWwgYWhrX2lkIGFoa19jbGFzcyBhaGtfcGlkIGFoa19leGUgYWhrX2dyb3VwJyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIE5PVCBBTkQgT1InLFxuICAgICAgYnVpbHRfaW46ICdDb21TcGVjIENsaXBib2FyZCBDbGlwYm9hcmRBbGwgRXJyb3JMZXZlbCcsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW0JBQ0tUSUNLX0VTQ0FQRV19KSxcbiAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJywgLy9zdWJzdCB3b3VsZCBiZSB0aGUgbW9zdCBhY2N1cmF0ZSBob3dldmVyIGZhaWxzIHRoZSBwb2ludCBvZiBoaWdobGlnaHRpbmcuIHZhcmlhYmxlIGlzIGNvbXBhcmFibHkgdGhlIG1vc3QgYWNjdXJhdGUgdGhhdCBhY3R1YWxseSBoYXMgc29tZSBlZmZlY3RcbiAgICAgICAgYmVnaW46ICclW2EtekEtWjAtOSNfJEBdKyUnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKlxcXFx3K1xcXFxzKigsfCUpJ1xuICAgICAgICAvL0kgZG9uJ3QgcmVhbGx5IGtub3cgaWYgdGhpcyBpcyB0b3RhbGx5IHJlbGV2YW50XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsIC8vc3ltYm9sIHdvdWxkIGJlIG1vc3QgYWNjdXJhdGUgaG93ZXZlciBpcyBoaWdsaWdodGVkIGp1c3QgbGlrZSBidWlsdF9pbiBhbmQgdGhhdCBtYWtlcyB1cCBhIGxvdCBvZiBBdXRvSG90a2V5IGNvZGVcblx0XHQgICAgICAgICAgICAgICAgICAgICAgICAvL21lYW5pbmcgdGhhdCBpdCB3b3VsZCBmYWlsIHRvIGhpZ2hsaWdodCBhbnl0aGluZ1xuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ15bXlxcXFxuXCI7XSs6Oig/IT0pJ30sXG4gICAgICAgICAge2JlZ2luOiAnXlteXFxcXG5cIjtdKzooPyE9KScsIHJlbGV2YW5jZTogMH0gLy8gemVybyByZWxldmFuY2UgYXMgaXQgY2F0Y2hlcyBhIGxvdCBvZiB0aGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3dlZCBieSBhIHNpbmdsZSAnOicgaW4gbWFueSBsYW5ndWFnZXNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIFxuICAgICAgICBiZWdpbjogJ15cXFxccyojXFxcXHcrJywgZW5kOickJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXHQgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnQV9bYS16QS1aMC05XSsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBjb25zZWN1dGl2ZSBjb21tYXMsIG5vdCBmb3IgaGlnaGxpZ2h0aW5nIGJ1dCBqdXN0IGZvciByZWxldmFuY2VcbiAgICAgICAgYmVnaW46ICcsXFxcXHMqLCdcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgdmFyIEtFWVdPUkRTID0gJ0J5UmVmIENhc2UgQ29uc3QgQ29udGludWVDYXNlIENvbnRpbnVlTG9vcCAnICtcbiAgICAgICAgJ0RlZmF1bHQgRGltIERvIEVsc2UgRWxzZUlmIEVuZEZ1bmMgRW5kSWYgRW5kU2VsZWN0ICcgK1xuICAgICAgICAnRW5kU3dpdGNoIEVuZFdpdGggRW51bSBFeGl0IEV4aXRMb29wIEZvciBGdW5jICcgK1xuICAgICAgICAnR2xvYmFsIElmIEluIExvY2FsIE5leHQgUmVEaW0gUmV0dXJuIFNlbGVjdCBTdGF0aWMgJyArXG4gICAgICAgICdTdGVwIFN3aXRjaCBUaGVuIFRvIFVudGlsIFZvbGF0aWxlIFdFbmQgV2hpbGUgV2l0aCcsXG5cbiAgICAgICAgTElURVJBTCA9ICdUcnVlIEZhbHNlIEFuZCBOdWxsIE5vdCBPcicsXG5cbiAgICAgICAgQlVJTFRfSU4gPVxuICAgICAgICAgICdBYnMgQUNvcyBBZGxpYlJlZ2lzdGVyIEFkbGliVW5SZWdpc3RlciBBc2MgQXNjVyBBU2luIEFzc2lnbiBBVGFuIEF1dG9JdFNldE9wdGlvbiBBdXRvSXRXaW5HZXRUaXRsZSBBdXRvSXRXaW5TZXRUaXRsZSBCZWVwIEJpbmFyeSBCaW5hcnlMZW4gQmluYXJ5TWlkIEJpbmFyeVRvU3RyaW5nIEJpdEFORCBCaXROT1QgQml0T1IgQml0Um90YXRlIEJpdFNoaWZ0IEJpdFhPUiBCbG9ja0lucHV0IEJyZWFrIENhbGwgQ0RUcmF5IENlaWxpbmcgQ2hyIENoclcgQ2xpcEdldCBDbGlwUHV0IENvbnNvbGVSZWFkIENvbnNvbGVXcml0ZSBDb25zb2xlV3JpdGVFcnJvciBDb250cm9sQ2xpY2sgQ29udHJvbENvbW1hbmQgQ29udHJvbERpc2FibGUgQ29udHJvbEVuYWJsZSBDb250cm9sRm9jdXMgQ29udHJvbEdldEZvY3VzIENvbnRyb2xHZXRIYW5kbGUgQ29udHJvbEdldFBvcyBDb250cm9sR2V0VGV4dCBDb250cm9sSGlkZSBDb250cm9sTGlzdFZpZXcgQ29udHJvbE1vdmUgQ29udHJvbFNlbmQgQ29udHJvbFNldFRleHQgQ29udHJvbFNob3cgQ29udHJvbFRyZWVWaWV3IENvcyBEZWMgRGlyQ29weSBEaXJDcmVhdGUgRGlyR2V0U2l6ZSBEaXJNb3ZlIERpclJlbW92ZSBEbGxDYWxsIERsbENhbGxBZGRyZXNzIERsbENhbGxiYWNrRnJlZSBEbGxDYWxsYmFja0dldFB0ciBEbGxDYWxsYmFja1JlZ2lzdGVyIERsbENsb3NlIERsbE9wZW4gRGxsU3RydWN0Q3JlYXRlIERsbFN0cnVjdEdldERhdGEgRGxsU3RydWN0R2V0UHRyIERsbFN0cnVjdEdldFNpemUgRGxsU3RydWN0U2V0RGF0YSBEcml2ZUdldERyaXZlIERyaXZlR2V0RmlsZVN5c3RlbSBEcml2ZUdldExhYmVsIERyaXZlR2V0U2VyaWFsIERyaXZlR2V0VHlwZSBEcml2ZU1hcEFkZCBEcml2ZU1hcERlbCBEcml2ZU1hcEdldCBEcml2ZVNldExhYmVsIERyaXZlU3BhY2VGcmVlIERyaXZlU3BhY2VUb3RhbCBEcml2ZVN0YXR1cyBFbnZHZXQgRW52U2V0IEVudlVwZGF0ZSBFdmFsIEV4ZWN1dGUgRXhwIEZpbGVDaGFuZ2VEaXIgRmlsZUNsb3NlIEZpbGVDb3B5IEZpbGVDcmVhdGVOVEZTTGluayBGaWxlQ3JlYXRlU2hvcnRjdXQgRmlsZURlbGV0ZSBGaWxlRXhpc3RzIEZpbGVGaW5kRmlyc3RGaWxlIEZpbGVGaW5kTmV4dEZpbGUgRmlsZUZsdXNoIEZpbGVHZXRBdHRyaWIgRmlsZUdldEVuY29kaW5nIEZpbGVHZXRMb25nTmFtZSBGaWxlR2V0UG9zIEZpbGVHZXRTaG9ydGN1dCBGaWxlR2V0U2hvcnROYW1lIEZpbGVHZXRTaXplIEZpbGVHZXRUaW1lIEZpbGVHZXRWZXJzaW9uIEZpbGVJbnN0YWxsIEZpbGVNb3ZlIEZpbGVPcGVuIEZpbGVPcGVuRGlhbG9nIEZpbGVSZWFkIEZpbGVSZWFkTGluZSBGaWxlUmVhZFRvQXJyYXkgRmlsZVJlY3ljbGUgRmlsZVJlY3ljbGVFbXB0eSBGaWxlU2F2ZURpYWxvZyBGaWxlU2VsZWN0Rm9sZGVyIEZpbGVTZXRBdHRyaWIgRmlsZVNldEVuZCBGaWxlU2V0UG9zIEZpbGVTZXRUaW1lIEZpbGVXcml0ZSBGaWxlV3JpdGVMaW5lIEZsb29yIEZ0cFNldFByb3h5IEZ1bmNOYW1lIEdVSUNyZWF0ZSBHVUlDdHJsQ3JlYXRlQXZpIEdVSUN0cmxDcmVhdGVCdXR0b24gR1VJQ3RybENyZWF0ZUNoZWNrYm94IEdVSUN0cmxDcmVhdGVDb21ibyBHVUlDdHJsQ3JlYXRlQ29udGV4dE1lbnUgR1VJQ3RybENyZWF0ZURhdGUgR1VJQ3RybENyZWF0ZUR1bW15IEdVSUN0cmxDcmVhdGVFZGl0IEdVSUN0cmxDcmVhdGVHcmFwaGljIEdVSUN0cmxDcmVhdGVHcm91cCBHVUlDdHJsQ3JlYXRlSWNvbiBHVUlDdHJsQ3JlYXRlSW5wdXQgR1VJQ3RybENyZWF0ZUxhYmVsIEdVSUN0cmxDcmVhdGVMaXN0IEdVSUN0cmxDcmVhdGVMaXN0VmlldyBHVUlDdHJsQ3JlYXRlTGlzdFZpZXdJdGVtIEdVSUN0cmxDcmVhdGVNZW51IEdVSUN0cmxDcmVhdGVNZW51SXRlbSBHVUlDdHJsQ3JlYXRlTW9udGhDYWwgR1VJQ3RybENyZWF0ZU9iaiBHVUlDdHJsQ3JlYXRlUGljIEdVSUN0cmxDcmVhdGVQcm9ncmVzcyBHVUlDdHJsQ3JlYXRlUmFkaW8gR1VJQ3RybENyZWF0ZVNsaWRlciBHVUlDdHJsQ3JlYXRlVGFiIEdVSUN0cmxDcmVhdGVUYWJJdGVtIEdVSUN0cmxDcmVhdGVUcmVlVmlldyBHVUlDdHJsQ3JlYXRlVHJlZVZpZXdJdGVtIEdVSUN0cmxDcmVhdGVVcGRvd24gR1VJQ3RybERlbGV0ZSBHVUlDdHJsR2V0SGFuZGxlIEdVSUN0cmxHZXRTdGF0ZSBHVUlDdHJsUmVhZCBHVUlDdHJsUmVjdk1zZyBHVUlDdHJsUmVnaXN0ZXJMaXN0Vmlld1NvcnQgR1VJQ3RybFNlbmRNc2cgR1VJQ3RybFNlbmRUb0R1bW15IEdVSUN0cmxTZXRCa0NvbG9yIEdVSUN0cmxTZXRDb2xvciBHVUlDdHJsU2V0Q3Vyc29yIEdVSUN0cmxTZXREYXRhIEdVSUN0cmxTZXREZWZCa0NvbG9yIEdVSUN0cmxTZXREZWZDb2xvciBHVUlDdHJsU2V0Rm9udCBHVUlDdHJsU2V0R3JhcGhpYyBHVUlDdHJsU2V0SW1hZ2UgR1VJQ3RybFNldExpbWl0IEdVSUN0cmxTZXRPbkV2ZW50IEdVSUN0cmxTZXRQb3MgR1VJQ3RybFNldFJlc2l6aW5nIEdVSUN0cmxTZXRTdGF0ZSBHVUlDdHJsU2V0U3R5bGUgR1VJQ3RybFNldFRpcCBHVUlEZWxldGUgR1VJR2V0Q3Vyc29ySW5mbyBHVUlHZXRNc2cgR1VJR2V0U3R5bGUgR1VJUmVnaXN0ZXJNc2cgR1VJU2V0QWNjZWxlcmF0b3JzIEdVSVNldEJrQ29sb3IgR1VJU2V0Q29vcmQgR1VJU2V0Q3Vyc29yIEdVSVNldEZvbnQgR1VJU2V0SGVscCBHVUlTZXRJY29uIEdVSVNldE9uRXZlbnQgR1VJU2V0U3RhdGUgR1VJU2V0U3R5bGUgR1VJU3RhcnRHcm91cCBHVUlTd2l0Y2ggSGV4IEhvdEtleVNldCBIdHRwU2V0UHJveHkgSHR0cFNldFVzZXJBZ2VudCBIV25kIEluZXRDbG9zZSBJbmV0R2V0IEluZXRHZXRJbmZvIEluZXRHZXRTaXplIEluZXRSZWFkIEluaURlbGV0ZSBJbmlSZWFkIEluaVJlYWRTZWN0aW9uIEluaVJlYWRTZWN0aW9uTmFtZXMgSW5pUmVuYW1lU2VjdGlvbiBJbmlXcml0ZSBJbmlXcml0ZVNlY3Rpb24gSW5wdXRCb3ggSW50IElzQWRtaW4gSXNBcnJheSBJc0JpbmFyeSBJc0Jvb2wgSXNEZWNsYXJlZCBJc0RsbFN0cnVjdCBJc0Zsb2F0IElzRnVuYyBJc0hXbmQgSXNJbnQgSXNLZXl3b3JkIElzTnVtYmVyIElzT2JqIElzUHRyIElzU3RyaW5nIExvZyBNZW1HZXRTdGF0cyBNb2QgTW91c2VDbGljayBNb3VzZUNsaWNrRHJhZyBNb3VzZURvd24gTW91c2VHZXRDdXJzb3IgTW91c2VHZXRQb3MgTW91c2VNb3ZlIE1vdXNlVXAgTW91c2VXaGVlbCBNc2dCb3ggTnVtYmVyIE9iakNyZWF0ZSBPYmpDcmVhdGVJbnRlcmZhY2UgT2JqRXZlbnQgT2JqR2V0IE9iak5hbWUgT25BdXRvSXRFeGl0UmVnaXN0ZXIgT25BdXRvSXRFeGl0VW5SZWdpc3RlciBQaW5nIFBpeGVsQ2hlY2tzdW0gUGl4ZWxHZXRDb2xvciBQaXhlbFNlYXJjaCBQcm9jZXNzQ2xvc2UgUHJvY2Vzc0V4aXN0cyBQcm9jZXNzR2V0U3RhdHMgUHJvY2Vzc0xpc3QgUHJvY2Vzc1NldFByaW9yaXR5IFByb2Nlc3NXYWl0IFByb2Nlc3NXYWl0Q2xvc2UgUHJvZ3Jlc3NPZmYgUHJvZ3Jlc3NPbiBQcm9ncmVzc1NldCBQdHIgUmFuZG9tIFJlZ0RlbGV0ZSBSZWdFbnVtS2V5IFJlZ0VudW1WYWwgUmVnUmVhZCBSZWdXcml0ZSBSb3VuZCBSdW4gUnVuQXMgUnVuQXNXYWl0IFJ1bldhaXQgU2VuZCBTZW5kS2VlcEFjdGl2ZSBTZXRFcnJvciBTZXRFeHRlbmRlZCBTaGVsbEV4ZWN1dGUgU2hlbGxFeGVjdXRlV2FpdCBTaHV0ZG93biBTaW4gU2xlZXAgU291bmRQbGF5IFNvdW5kU2V0V2F2ZVZvbHVtZSBTcGxhc2hJbWFnZU9uIFNwbGFzaE9mZiBTcGxhc2hUZXh0T24gU3FydCBTUmFuZG9tIFN0YXR1c2JhckdldFRleHQgU3RkZXJyUmVhZCBTdGRpbldyaXRlIFN0ZGlvQ2xvc2UgU3Rkb3V0UmVhZCBTdHJpbmcgU3RyaW5nQWRkQ1IgU3RyaW5nQ29tcGFyZSBTdHJpbmdGb3JtYXQgU3RyaW5nRnJvbUFTQ0lJQXJyYXkgU3RyaW5nSW5TdHIgU3RyaW5nSXNBbE51bSBTdHJpbmdJc0FscGhhIFN0cmluZ0lzQVNDSUkgU3RyaW5nSXNEaWdpdCBTdHJpbmdJc0Zsb2F0IFN0cmluZ0lzSW50IFN0cmluZ0lzTG93ZXIgU3RyaW5nSXNTcGFjZSBTdHJpbmdJc1VwcGVyIFN0cmluZ0lzWERpZ2l0IFN0cmluZ0xlZnQgU3RyaW5nTGVuIFN0cmluZ0xvd2VyIFN0cmluZ01pZCBTdHJpbmdSZWdFeHAgU3RyaW5nUmVnRXhwUmVwbGFjZSBTdHJpbmdSZXBsYWNlIFN0cmluZ1JldmVyc2UgU3RyaW5nUmlnaHQgU3RyaW5nU3BsaXQgU3RyaW5nU3RyaXBDUiBTdHJpbmdTdHJpcFdTIFN0cmluZ1RvQVNDSUlBcnJheSBTdHJpbmdUb0JpbmFyeSBTdHJpbmdUcmltTGVmdCBTdHJpbmdUcmltUmlnaHQgU3RyaW5nVXBwZXIgVGFuIFRDUEFjY2VwdCBUQ1BDbG9zZVNvY2tldCBUQ1BDb25uZWN0IFRDUExpc3RlbiBUQ1BOYW1lVG9JUCBUQ1BSZWN2IFRDUFNlbmQgVENQU2h1dGRvd24sIFVEUFNodXRkb3duIFRDUFN0YXJ0dXAsIFVEUFN0YXJ0dXAgVGltZXJEaWZmIFRpbWVySW5pdCBUb29sVGlwIFRyYXlDcmVhdGVJdGVtIFRyYXlDcmVhdGVNZW51IFRyYXlHZXRNc2cgVHJheUl0ZW1EZWxldGUgVHJheUl0ZW1HZXRIYW5kbGUgVHJheUl0ZW1HZXRTdGF0ZSBUcmF5SXRlbUdldFRleHQgVHJheUl0ZW1TZXRPbkV2ZW50IFRyYXlJdGVtU2V0U3RhdGUgVHJheUl0ZW1TZXRUZXh0IFRyYXlTZXRDbGljayBUcmF5U2V0SWNvbiBUcmF5U2V0T25FdmVudCBUcmF5U2V0UGF1c2VJY29uIFRyYXlTZXRTdGF0ZSBUcmF5U2V0VG9vbFRpcCBUcmF5VGlwIFVCb3VuZCBVRFBCaW5kIFVEUENsb3NlU29ja2V0IFVEUE9wZW4gVURQUmVjdiBVRFBTZW5kIFZhckdldFR5cGUgV2luQWN0aXZhdGUgV2luQWN0aXZlIFdpbkNsb3NlIFdpbkV4aXN0cyBXaW5GbGFzaCBXaW5HZXRDYXJldFBvcyBXaW5HZXRDbGFzc0xpc3QgV2luR2V0Q2xpZW50U2l6ZSBXaW5HZXRIYW5kbGUgV2luR2V0UG9zIFdpbkdldFByb2Nlc3MgV2luR2V0U3RhdGUgV2luR2V0VGV4dCBXaW5HZXRUaXRsZSBXaW5LaWxsIFdpbkxpc3QgV2luTWVudVNlbGVjdEl0ZW0gV2luTWluaW1pemVBbGwgV2luTWluaW1pemVBbGxVbmRvIFdpbk1vdmUgV2luU2V0T25Ub3AgV2luU2V0U3RhdGUgV2luU2V0VGl0bGUgV2luU2V0VHJhbnMgV2luV2FpdCcsXG5cbiAgICAgICAgQ09NTUVOVCA9IHtcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJyNjcycsICcjY2UnKSxcbiAgICAgICAgICAgICAgaGxqcy5DT01NRU5UKCcjY29tbWVudHMtc3RhcnQnLCAnI2NvbW1lbnRzLWVuZCcpXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICAgICAgVkFSSUFCTEUgPSB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkW0EtejAtOV9dKydcbiAgICAgICAgfSxcblxuICAgICAgICBTVFJJTkcgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFt7XG4gICAgICAgICAgICAgICAgYmVnaW46IC9cIi8sXG4gICAgICAgICAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiXCIvLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfSxcblxuICAgICAgICBOVU1CRVIgPSB7XG4gICAgICAgICAgICB2YXJpYW50czogW2hsanMuQklOQVJZX05VTUJFUl9NT0RFLCBobGpzLkNfTlVNQkVSX01PREVdXG4gICAgICAgIH0sXG5cbiAgICAgICAgUFJFUFJPQ0VTU09SID0ge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnY29tbWVudHMgaW5jbHVkZSBpbmNsdWRlLW9uY2UgTm9UcmF5SWNvbiBPbkF1dG9JdFN0YXJ0UmVnaXN0ZXIgcHJhZ21hIGNvbXBpbGUgUmVxdWlyZUFkbWluJ30sXG4gICAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXFxcXFxuLyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogJzwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6ICc+J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cIi8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogL1wiLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1wiXCIvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogLycvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogLycnLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgICBDT01NRU5UXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICAgICAgQ09OU1RBTlQgPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgLy8gYmVnaW46ICdAJyxcbiAgICAgICAgICAgIC8vIGVuZDogJyQnLFxuICAgICAgICAgICAgLy8ga2V5d29yZHM6ICdBcHBEYXRhQ29tbW9uRGlyIEFwcERhdGFEaXIgQXV0b0l0RXhlIEF1dG9JdFBJRCBBdXRvSXRWZXJzaW9uIEF1dG9JdFg2NCBDT01fRXZlbnRPYmogQ29tbW9uRmlsZXNEaXIgQ29tcGlsZWQgQ29tcHV0ZXJOYW1lIENvbVNwZWMgQ1BVQXJjaCBDUiBDUkxGIERlc2t0b3BDb21tb25EaXIgRGVza3RvcERlcHRoIERlc2t0b3BEaXIgRGVza3RvcEhlaWdodCBEZXNrdG9wUmVmcmVzaCBEZXNrdG9wV2lkdGggRG9jdW1lbnRzQ29tbW9uRGlyIGVycm9yIGV4aXRDb2RlIGV4aXRNZXRob2QgZXh0ZW5kZWQgRmF2b3JpdGVzQ29tbW9uRGlyIEZhdm9yaXRlc0RpciBHVUlfQ3RybEhhbmRsZSBHVUlfQ3RybElkIEdVSV9EcmFnRmlsZSBHVUlfRHJhZ0lkIEdVSV9Ecm9wSWQgR1VJX1dpbkhhbmRsZSBIb21lRHJpdmUgSG9tZVBhdGggSG9tZVNoYXJlIEhvdEtleVByZXNzZWQgSE9VUiBJUEFkZHJlc3MxIElQQWRkcmVzczIgSVBBZGRyZXNzMyBJUEFkZHJlc3M0IEtCTGF5b3V0IExGIExvY2FsQXBwRGF0YURpciBMb2dvbkROU0RvbWFpbiBMb2dvbkRvbWFpbiBMb2dvblNlcnZlciBNREFZIE1JTiBNT04gTVNFQyBNVUlMYW5nIE15RG9jdW1lbnRzRGlyIE51bVBhcmFtcyBPU0FyY2ggT1NCdWlsZCBPU0xhbmcgT1NTZXJ2aWNlUGFjayBPU1R5cGUgT1NWZXJzaW9uIFByb2dyYW1GaWxlc0RpciBQcm9ncmFtc0NvbW1vbkRpciBQcm9ncmFtc0RpciBTY3JpcHREaXIgU2NyaXB0RnVsbFBhdGggU2NyaXB0TGluZU51bWJlciBTY3JpcHROYW1lIFNFQyBTdGFydE1lbnVDb21tb25EaXIgU3RhcnRNZW51RGlyIFN0YXJ0dXBDb21tb25EaXIgU3RhcnR1cERpciBTV19ESVNBQkxFIFNXX0VOQUJMRSBTV19ISURFIFNXX0xPQ0sgU1dfTUFYSU1JWkUgU1dfTUlOSU1JWkUgU1dfUkVTVE9SRSBTV19TSE9XIFNXX1NIT1dERUZBVUxUIFNXX1NIT1dNQVhJTUlaRUQgU1dfU0hPV01JTklNSVpFRCBTV19TSE9XTUlOTk9BQ1RJVkUgU1dfU0hPV05BIFNXX1NIT1dOT0FDVElWQVRFIFNXX1NIT1dOT1JNQUwgU1dfVU5MT0NLIFN5c3RlbURpciBUQUIgVGVtcERpciBUUkFZX0lEIFRyYXlJY29uRmxhc2hpbmcgVHJheUljb25WaXNpYmxlIFVzZXJOYW1lIFVzZXJQcm9maWxlRGlyIFdEQVkgV2luZG93c0RpciBXb3JraW5nRGlyIFlEQVkgWUVBUicsXG4gICAgICAgICAgICAvLyByZWxldmFuY2U6IDVcbiAgICAgICAgICAgIGJlZ2luOiAnQFtBLXowLTlfXSsnXG4gICAgICAgIH0sXG5cbiAgICAgICAgRlVOQ1RJT04gPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiAnRnVuYycsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcJHxcXFxcW3wlJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsXG4gICAgICAgICAgICAgICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgTlVNQkVSXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgICAgICAgYnVpbHRfaW46IEJVSUxUX0lOLFxuICAgICAgICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAgICAgICAgQ09OU1RBTlQsXG4gICAgICAgICAgICBGVU5DVElPTlxuICAgICAgICBdXG4gICAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgLyogbW5lbW9uaWMgKi9cbiAgICAgICAgJ2FkYyBhZGQgYWRpdyBhbmQgYW5kaSBhc3IgYmNsciBibGQgYnJiYyBicmJzIGJyY2MgYnJjcyBicmVhayBicmVxIGJyZ2UgYnJoYyBicmhzICcgK1xuICAgICAgICAnYnJpZCBicmllIGJybG8gYnJsdCBicm1pIGJybmUgYnJwbCBicnNoIGJydGMgYnJ0cyBicnZjIGJydnMgYnNldCBic3QgY2FsbCBjYmkgY2JyICcgK1xuICAgICAgICAnY2xjIGNsaCBjbGkgY2xuIGNsciBjbHMgY2x0IGNsdiBjbHogY29tIGNwIGNwYyBjcGkgY3BzZSBkZWMgZWljYWxsIGVpam1wIGVscG0gZW9yICcgK1xuICAgICAgICAnZm11bCBmbXVscyBmbXVsc3UgaWNhbGwgaWptcCBpbiBpbmMgam1wIGxkIGxkZCBsZGkgbGRzIGxwbSBsc2wgbHNyIG1vdiBtb3Z3IG11bCAnICtcbiAgICAgICAgJ211bHMgbXVsc3UgbmVnIG5vcCBvciBvcmkgb3V0IHBvcCBwdXNoIHJjYWxsIHJldCByZXRpIHJqbXAgcm9sIHJvciBzYmMgc2JyIHNicmMgc2JycyAnICtcbiAgICAgICAgJ3NlYyBzZWggc2JpIHNiY2kgc2JpYyBzYmlzIHNiaXcgc2VpIHNlbiBzZXIgc2VzIHNldCBzZXYgc2V6IHNsZWVwIHNwbSBzdCBzdGQgc3RzIHN1YiAnICtcbiAgICAgICAgJ3N1Ymkgc3dhcCB0c3Qgd2RyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvKiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzICovXG4gICAgICAgICdyMCByMSByMiByMyByNCByNSByNiByNyByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSByMTYgcjE3IHIxOCByMTkgcjIwIHIyMSByMjIgJyArXG4gICAgICAgICdyMjMgcjI0IHIyNSByMjYgcjI3IHIyOCByMjkgcjMwIHIzMSB4fDAgeGggeGwgeXwwIHloIHlsIHp8MCB6aCB6bCAnICtcbiAgICAgICAgLyogSU8gUmVnaXN0ZXJzIChBVE1lZ2ExMjgpICovXG4gICAgICAgICd1Y3NyMWMgdWRyMSB1Y3NyMWEgdWNzcjFiIHVicnIxbCB1YnJyMWggdWNzcjBjIHVicnIwaCB0Y2NyM2MgdGNjcjNhIHRjY3IzYiB0Y250M2ggJyArXG4gICAgICAgICd0Y250M2wgb2NyM2FoIG9jcjNhbCBvY3IzYmggb2NyM2JsIG9jcjNjaCBvY3IzY2wgaWNyM2ggaWNyM2wgZXRpbXNrIGV0aWZyIHRjY3IxYyAnICtcbiAgICAgICAgJ29jcjFjaCBvY3IxY2wgdHdjciB0d2RyIHR3YXIgdHdzciB0d2JyIG9zY2NhbCB4bWNyYSB4bWNyYiBlaWNyYSBzcG1jc3Igc3BtY3IgcG9ydGcgJyArXG4gICAgICAgICdkZHJnIHBpbmcgcG9ydGYgZGRyZiBzcmVnIHNwaCBzcGwgeGRpdiByYW1weiBlaWNyYiBlaW1zayBnaW1zayBnaWNyIGVpZnIgZ2lmciB0aW1zayAnICtcbiAgICAgICAgJ3RpZnIgbWN1Y3IgbWN1Y3NyIHRjY3IwIHRjbnQwIG9jcjAgYXNzciB0Y2NyMWEgdGNjcjFiIHRjbnQxaCB0Y250MWwgb2NyMWFoIG9jcjFhbCAnICtcbiAgICAgICAgJ29jcjFiaCBvY3IxYmwgaWNyMWggaWNyMWwgdGNjcjIgdGNudDIgb2NyMiBvY2RyIHdkdGNyIHNmaW9yIGVlYXJoIGVlYXJsIGVlZHIgZWVjciAnICtcbiAgICAgICAgJ3BvcnRhIGRkcmEgcGluYSBwb3J0YiBkZHJiIHBpbmIgcG9ydGMgZGRyYyBwaW5jIHBvcnRkIGRkcmQgcGluZCBzcGRyIHNwc3Igc3BjciB1ZHIwICcgK1xuICAgICAgICAndWNzcjBhIHVjc3IwYiB1YnJyMGwgYWNzciBhZG11eCBhZGNzciBhZGNoIGFkY2wgcG9ydGUgZGRyZSBwaW5lIHBpbmYnLFxuICAgICAgbWV0YTpcbiAgICAgICAgJy5ieXRlIC5jc2VnIC5kYiAuZGVmIC5kZXZpY2UgLmRzZWcgLmR3IC5lbmRtYWNybyAuZXF1IC5lc2VnIC5leGl0IC5pbmNsdWRlIC5saXN0ICcgK1xuICAgICAgICAnLmxpc3RtYWMgLm1hY3JvIC5ub2xpc3QgLm9yZyAuc2V0J1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsIC8vIDB4Li4uLCBkZWNpbWFsLCBmbG9hdFxuICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIC8vIDBiLi4uXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXCRbYS16QS1aMC05XSt8MG9bMC03XSspJyAvLyAkLi4uLCAwby4uLlxuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnW15cXFxcXFxcXF1bXlxcJ10nXG4gICAgICB9LFxuICAgICAge2NsYXNzTmFtZTogJ3N5bWJvbCcsICBiZWdpbjogJ15bQS1aYS16MC05Xy4kXSs6J30sXG4gICAgICB7Y2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIycsIGVuZDogJyQnfSxcbiAgICAgIHsgIC8vIHN1YnN0aXR1dGlvbiB3aXRoaW4gYSBtYWNyb1xuICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgIGJlZ2luOiAnQFswLTldKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi99LFxuICAgICAge2JlZ2luOiAvXFwkXFx7KC4qPyl9L31cbiAgICBdXG4gIH07XG4gIHZhciBLRVlXT1JEUyA9ICdCRUdJTiBFTkQgaWYgZWxzZSB3aGlsZSBkbyBmb3IgaW4gYnJlYWsgY29udGludWUgZGVsZXRlIG5leHQgbmV4dGZpbGUgZnVuY3Rpb24gZnVuYyBleGl0fDEwJztcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/JycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxiKT9yP1wiXCJcIi8sIGVuZDogL1wiXCJcIi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1ciknLywgZW5kOiAvJy8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1cilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxiciknLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGJ8YnIpXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuXHQga2V5d29yZHM6IHtcblx0ICAga2V5d29yZDogS0VZV09SRFNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogJ2ZhbHNlIGludCBhYnN0cmFjdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBmb3IgdHJ1ZSAnICtcbiAgICAgICd3aGlsZSBsb25nIHRocm93IGZpbmFsbHkgcHJvdGVjdGVkIGZpbmFsIHJldHVybiB2b2lkIGVudW0gZWxzZSAnICtcbiAgICAgICdicmVhayBuZXcgY2F0Y2ggYnl0ZSBzdXBlciBjYXNlIHNob3J0IGRlZmF1bHQgZG91YmxlIHB1YmxpYyB0cnkgdGhpcyBzd2l0Y2ggJyArXG4gICAgICAnY29udGludWUgcmV2ZXJzZSBmaXJzdGZhc3QgZmlyc3Rvbmx5IGZvcnVwZGF0ZSBub2ZldGNoIHN1bSBhdmcgbWlub2YgbWF4b2YgY291bnQgJyArXG4gICAgICAnb3JkZXIgZ3JvdXAgYnkgYXNjIGRlc2MgaW5kZXggaGludCBsaWtlIGRpc3BhbHkgZWRpdCBjbGllbnQgc2VydmVyIHR0c2JlZ2luICcgK1xuICAgICAgJ3R0c2NvbW1pdCBzdHIgcmVhbCBkYXRlIGNvbnRhaW5lciBhbnl0eXBlIGNvbW1vbiBkaXYgbW9kJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICc6JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFwkW1xcd1xcZCNAXVtcXHdcXGRfXSovfSxcbiAgICAgIHtiZWdpbjogL1xcJFxceyguKj8pfS99XG4gICAgXVxuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFwkXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgRVNDQVBFRF9RVU9URSA9IHtcbiAgICBjbGFzc05hbWU6ICcnLFxuICAgIGJlZ2luOiAvXFxcXFwiL1xuXG4gIH07XG4gIHZhciBBUE9TX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvJy8sIGVuZDogLycvXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NoJywgJ3pzaCddLFxuICAgIGxleGVtZXM6IC9cXGItP1thLXpcXC5fXStcXGIvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnaWYgdGhlbiBlbHNlIGVsaWYgZmkgZm9yIHdoaWxlIGluIGRvIGRvbmUgY2FzZSBlc2FjIGZ1bmN0aW9uJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvLyBTaGVsbCBidWlsdC1pbnNcbiAgICAgICAgLy8gaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvbWFudWFsL2h0bWxfbm9kZS9TaGVsbC1CdWlsdGluLUNvbW1hbmRzLmh0bWxcbiAgICAgICAgJ2JyZWFrIGNkIGNvbnRpbnVlIGV2YWwgZXhlYyBleGl0IGV4cG9ydCBnZXRvcHRzIGhhc2ggcHdkIHJlYWRvbmx5IHJldHVybiBzaGlmdCB0ZXN0IHRpbWVzICcgK1xuICAgICAgICAndHJhcCB1bWFzayB1bnNldCAnICtcbiAgICAgICAgLy8gQmFzaCBidWlsdC1pbnNcbiAgICAgICAgJ2FsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiAnICtcbiAgICAgICAgJ3JlYWQgcmVhZGFycmF5IHNvdXJjZSB0eXBlIHR5cGVzZXQgdWxpbWl0IHVuYWxpYXMgJyArXG4gICAgICAgIC8vIFNoZWxsIG1vZGlmaWVyc1xuICAgICAgICAnc2V0IHNob3B0ICcgK1xuICAgICAgICAvLyBac2ggYnVpbHQtaW5zXG4gICAgICAgICdhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgJyArXG4gICAgICAgICdjb21wZ3JvdXBzIGNvbXBxdW90ZSBjb21wdGFncyBjb21wdHJ5IGNvbXB2YWx1ZXMgZGlycyBkaXNhYmxlIGRpc293biBlY2hvdGMgZWNob3RpIGVtdWxhdGUgJyArXG4gICAgICAgICdmYyBmZyBmbG9hdCBmdW5jdGlvbnMgZ2V0Y2FwIGdldGxuIGhpc3RvcnkgaW50ZWdlciBqb2JzIGtpbGwgbGltaXQgbG9nIG5vZ2xvYiBwb3BkIHByaW50ICcgK1xuICAgICAgICAncHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCAnICtcbiAgICAgICAgJ3Vuc2V0b3B0IHZhcmVkIHdhaXQgd2hlbmNlIHdoZXJlIHdoaWNoIHpjb21waWxlIHpmb3JtYXQgemZ0cCB6bGUgem1vZGxvYWQgenBhcnNlb3B0cyB6cHJvZiAnICtcbiAgICAgICAgJ3pwdHkgenJlZ2V4cGFyc2UgenNvY2tldCB6c3R5bGUgenRjcCcsXG4gICAgICBfOlxuICAgICAgICAnLW5lIC1lcSAtbHQgLWd0IC1mIC1kIC1lIC1zIC1sIC1hJyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXiMhW15cXG5dK3NoXFxzKiQvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXFx3W1xcd1xcZF9dKlxccypcXChcXHMqXFwpXFxzKlxcey8sXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW2hsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogL1xcd1tcXHdcXGRfXSovfSldLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgRVNDQVBFRF9RVU9URSxcbiAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgVkFSXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdeXFwuJyxcbiAgICAvLyBTdXBwb3J0IGV4cGxpY2l0ZWx5IHR5cGVkIHZhcmlhYmxlcyB0aGF0IGVuZCB3aXRoICQlISBvciAjLlxuICAgIGxleGVtZXM6ICdbYS16QS1aXVthLXpBLVowLTlfXFwkXFwlXFwhXFwjXSonLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAgIGtleXdvcmQ6XG4gICAgICAgICAgJ0FCUyBBU0MgQU5EIEFUTiBBVVRPfDAgQkVFUCBCTE9BRHwxMCBCU0FWRXwxMCBDQUxMIENBTExTIENEQkwgQ0hBSU4gQ0hESVIgQ0hSJHwxMCBDSU5UIENJUkNMRSAnICtcbiAgICAgICAgICAnQ0xFQVIgQ0xPU0UgQ0xTIENPTE9SIENPTSBDT01NT04gQ09OVCBDT1MgQ1NORyBDU1JMSU4gQ1ZEIENWSSBDVlMgREFUQSBEQVRFJCAnICtcbiAgICAgICAgICAnREVGREJMIERFRklOVCBERUZTTkcgREVGU1RSIERFRnwwIFNFRyBVU1IgREVMRVRFIERJTSBEUkFXIEVESVQgRU5EIEVOVklST04gRU5WSVJPTiQgJyArXG4gICAgICAgICAgJ0VPRiBFUVYgRVJBU0UgRVJERVYgRVJERVYkIEVSTCBFUlIgRVJST1IgRVhQIEZJRUxEIEZJTEVTIEZJWCBGT1J8MCBGUkUgR0VUIEdPU1VCfDEwIEdPVE8gJyArXG4gICAgICAgICAgJ0hFWCQgSUYgVEhFTiBFTFNFfDAgSU5LRVkkIElOUCBJTlBVVCBJTlBVVCMgSU5QVVQkIElOU1RSIElNUCBJTlQgSU9DVEwgSU9DVEwkIEtFWSBPTiAnICtcbiAgICAgICAgICAnT0ZGIExJU1QgS0lMTCBMRUZUJCBMRU4gTEVUIExJTkUgTExJU1QgTE9BRCBMT0MgTE9DQVRFIExPRiBMT0cgTFBSSU5UIFVTSU5HIExTRVQgJyArXG4gICAgICAgICAgJ01FUkdFIE1JRCQgTUtESVIgTUtEJCBNS0kkIE1LUyQgTU9EIE5BTUUgTkVXIE5FWFQgTk9JU0UgTk9UIE9DVCQgT04gT1IgUEVOIFBMQVkgU1RSSUcgT1BFTiBPUFRJT04gJyArXG4gICAgICAgICAgJ0JBU0UgT1VUIFBBSU5UIFBBTEVUVEUgUENPUFkgUEVFSyBQTUFQIFBPSU5UIFBPS0UgUE9TIFBSSU5UIFBSSU5UXSBQU0VUIFBSRVNFVCAnICtcbiAgICAgICAgICAnUFVUIFJBTkRPTUlaRSBSRUFEIFJFTSBSRU5VTSBSRVNFVHwwIFJFU1RPUkUgUkVTVU1FIFJFVFVSTnwwIFJJR0hUJCBSTURJUiBSTkQgUlNFVCAnICtcbiAgICAgICAgICAnUlVOIFNBVkUgU0NSRUVOIFNHTiBTSEVMTCBTSU4gU09VTkQgU1BBQ0UkIFNQQyBTUVIgU1RFUCBTVElDSyBTVE9QIFNUUiQgU1RSSU5HJCBTV0FQICcgK1xuICAgICAgICAgICdTWVNURU0gVEFCIFRBTiBUSU1FJCBUSU1FUiBUUk9GRiBUUk9OIFRPIFVTUiBWQUwgVkFSUFRSIFZBUlBUUiQgVklFVyBXQUlUIFdISUxFICcgK1xuICAgICAgICAgICdXRU5EIFdJRFRIIFdJTkRPVyBXUklURSBYT1InXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnUkVNJywgJyQnLCB7cmVsZXZhbmNlOiAxMH0pLFxuICAgICAgaGxqcy5DT01NRU5UKCdcXCcnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggbGluZSBudW1iZXJzXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXlswLTldK1xcICcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIE1hdGNoIHR5cGVkIG51bWVyaWMgY29uc3RhbnRzICgxMDAwLCAxMi4zNCEsIDEuMmU1LCAxLjUjLCAxLjJEMilcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihbMC05XStbMC05ZWRFRFxcLl0qWyNcXCFdPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIE1hdGNoIGhleGFkZWNpbWFsIG51bWJlcnMgKCZIeHh4eClcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoXFwmW2hIXVswLTlhLWZBLUZdezEsNH0pJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTWF0Y2ggb2N0YWwgbnVtYmVycyAoJk94eHh4eHgpXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKFxcJltvT11bMC03XXsxLDZ9KSdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcyl7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIC8vIEF0dHJpYnV0ZVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8+L1xuICAgICAgfSxcbiAgICAgIC8vIFNwZWNpZmljXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOjo9LyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpe1xuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogJ1tcXFxcK1xcXFwtXScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiZiddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdbXlxcXFxbXFxcXF1cXFxcLixcXFxcK1xcXFwtPD4gXFxyXFxuXScsXG4gICAgICAgICdbXFxcXFtcXFxcXVxcXFwuLFxcXFwrXFxcXC08PiBcXHJcXG5dJyxcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICBiZWdpbjogJ1tcXFxcW1xcXFxdXScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdbXFxcXC4sXScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGhpcyBtb2RlIHdvcmtzIGFzIHRoZSBvbmx5IHJlbGV2YW5jZSBjb3VudGVyXG4gICAgICAgIGJlZ2luOiAvKD86XFwrXFwrfFxcLVxcLSkvLFxuICAgICAgICBjb250YWluczogW0xJVEVSQUxdXG4gICAgICB9LFxuICAgICAgTElURVJBTFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2RpdiBtb2QgaW4gYW5kIG9yIG5vdCB4b3IgYXNzZXJ0ZXJyb3IgYmVnaW4gY2FzZSBkbyBkb3dudG8gZWxzZSBlbmQgZXhpdCBmb3IgaWYgb2YgcmVwZWF0IHRoZW4gdG8gJyArXG4gICAgJ3VudGlsIHdoaWxlIHdpdGggdmFyJztcbiAgdmFyIExJVEVSQUxTID0gJ2ZhbHNlIHRydWUnO1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgL1xcey8sXG4gICAgICAvXFx9LyxcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAvXFwoXFwqLyxcbiAgICAgIC9cXCpcXCkvLFxuICAgICAge1xuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgKVxuICBdO1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46IC8nJy99XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46IC8oI1xcZCspKy9cbiAgfTtcbiAgdmFyIERBVEUgPSB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKyk/KERUfER8VCknLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBEQkxfUVVPVEVEX1ZBUklBQkxFID0ge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgLy8gbm90IGEgc3RyaW5nIHRlY2huaWNhbGx5IGJ1dCBtYWtlcyBzZW5zZSB0byBiZSBoaWdobGlnaHRlZCBpbiB0aGUgc2FtZSBzdHlsZVxuICAgICAgYmVnaW46ICdcIicsXG4gICAgICBlbmQ6ICdcIidcbiAgfTtcblxuICB2YXIgUFJPQ0VEVVJFID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAncHJvY2VkdXJlJywgZW5kOiAvWzo7XS8sXG4gICAga2V5d29yZHM6ICdwcm9jZWR1cmV8MTAnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlRJVExFX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1NUUklORywgQ0hBUl9TVFJJTkddXG4gICAgICB9XG4gICAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcblxuICB2YXIgT0JKRUNUID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbjogJ09CSkVDVCAoVGFibGV8Rm9ybXxSZXBvcnR8RGF0YXBvcnR8Q29kZXVuaXR8WE1McG9ydHxNZW51U3VpdGV8UGFnZXxRdWVyeSkgKFxcXFxkKykgKFteXFxcXHJcXFxcbl0rKScsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgUFJPQ0VEVVJFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogeyBrZXl3b3JkOiBLRVlXT1JEUywgbGl0ZXJhbDogTElURVJBTFMgfSxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLCBDSEFSX1NUUklORyxcbiAgICAgIERBVEUsIERCTF9RVU9URURfVkFSSUFCTEUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgT0JKRUNULFxuICAgICAgUFJPQ0VEVVJFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NhcG5wJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdzdHJ1Y3QgZW51bSBpbnRlcmZhY2UgdW5pb24gZ3JvdXAgaW1wb3J0IHVzaW5nIGNvbnN0IGFubm90YXRpb24gZXh0ZW5kcyBpbiBvZiBvbiBhcyB3aXRoIGZyb20gZml4ZWQnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdWb2lkIEJvb2wgSW50OCBJbnQxNiBJbnQzMiBJbnQ2NCBVSW50OCBVSW50MTYgVUludDMyIFVJbnQ2NCBGbG9hdDMyIEZsb2F0NjQgJyArXG4gICAgICAgICdUZXh0IERhdGEgQW55UG9pbnRlciBBbnlTdHJ1Y3QgQ2FwYWJpbGl0eSBMaXN0JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICd0cnVlIGZhbHNlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvQDB4W1xcd1xcZF17MTZ9Oy8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL0BcXGQrXFxiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3RydWN0IGVudW0nLCBlbmQ6IC9cXHsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBzdGFydHM6IHtlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZX0gLy8gaGFjazogZWF0aW5nIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IHRpdGxlXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW50ZXJmYWNlJywgZW5kOiAvXFx7LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgc3RhcnRzOiB7ZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWV9IC8vIGhhY2s6IGVhdGluZyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCB0aXRsZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyAyLjMuIElkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuICB2YXIgS0VZV09SRFMgPVxuICAgICdhc3NlbWJseSBtb2R1bGUgcGFja2FnZSBpbXBvcnQgYWxpYXMgY2xhc3MgaW50ZXJmYWNlIG9iamVjdCBnaXZlbiB2YWx1ZSAnICtcbiAgICAnYXNzaWduIHZvaWQgZnVuY3Rpb24gbmV3IG9mIGV4dGVuZHMgc2F0aXNmaWVzIGFic3RyYWN0cyBpbiBvdXQgcmV0dXJuICcgK1xuICAgICdicmVhayBjb250aW51ZSB0aHJvdyBhc3NlcnQgZHluYW1pYyBpZiBlbHNlIHN3aXRjaCBjYXNlIGZvciB3aGlsZSB0cnkgJyArXG4gICAgJ2NhdGNoIGZpbmFsbHkgdGhlbiBsZXQgdGhpcyBvdXRlciBzdXBlciBpcyBleGlzdHMgbm9uZW1wdHknO1xuICAvLyA3LjQuMSBEZWNsYXJhdGlvbiBNb2RpZmllcnNcbiAgdmFyIERFQ0xBUkFUSU9OX01PRElGSUVSUyA9XG4gICAgJ3NoYXJlZCBhYnN0cmFjdCBmb3JtYWwgZGVmYXVsdCBhY3R1YWwgdmFyaWFibGUgbGF0ZSBuYXRpdmUgZGVwcmVjYXRlZCcgK1xuICAgICdmaW5hbCBzZWFsZWQgYW5ub3RhdGlvbiBzdXBwcmVzc1dhcm5pbmdzIHNtYWxsJztcbiAgLy8gNy40LjIgRG9jdW1lbnRhdGlvblxuICB2YXIgRE9DVU1FTlRBVElPTiA9XG4gICAgJ2RvYyBieSBsaWNlbnNlIHNlZSB0aHJvd3MgdGFnZ2VkJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JywgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGJlZ2luOiAvYGAvLCBlbmQ6IC9gYC8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIHtcbiAgICAgIC8vIHZlcmJhdGltIHN0cmluZ1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgIGVuZDogJ1wiXCJcIicsXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBzdHJpbmcgbGl0ZXJhbCBvciB0ZW1wbGF0ZVxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICBjb250YWluczogW1NVQlNUXVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gY2hhcmFjdGVyIGxpdGVyYWxcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBiZWdpbjogXCInXCIsXG4gICAgICBlbmQ6IFwiJ1wiXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBudW1lcmljIGxpdGVyYWxcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyNbMC05YS1mQS1GX10rfFxcXFwkWzAxX10rfFswLTlfXSsoPzpcXFxcLlswLTlfXSg/OltlRV1bKy1dP1xcXFxkKyk/KT9ba01HVFBtdW5wZl0/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFWFBSRVNTSU9OUztcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyArICcgJyArIERFQ0xBUkFUSU9OX01PRElGSUVSUyxcbiAgICAgIG1ldGE6IERPQ1VNRU5UQVRJT05cbiAgICB9LFxuICAgIGlsbGVnYWw6ICdcXFxcJFteMDFdfCNbXjAtOWEtZkEtRl0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nLCB7Y29udGFpbnM6IFsnc2VsZiddfSksXG4gICAgICB7XG4gICAgICAgIC8vIGNvbXBpbGVyIGFubm90YXRpb25cbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnQFthLXpdXFxcXHcqKD86XFxcXDpcXFwiW15cXFwiXSpcXFwiKT8nXG4gICAgICB9XG4gICAgXS5jb25jYXQoRVhQUkVTU0lPTlMpXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY2xlYW4nLCdpY2wnLCdkY2wnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2lmIGxldCBpbiB3aXRoIHdoZXJlIGNhc2Ugb2YgY2xhc3MgaW5zdGFuY2Ugb3RoZXJ3aXNlICcgK1xuICAgICAgICAnaW1wbGVtZW50YXRpb24gZGVmaW5pdGlvbiBzeXN0ZW0gbW9kdWxlIGZyb20gaW1wb3J0IHF1YWxpZmllZCBhcyAnICtcbiAgICAgICAgJ3NwZWNpYWwgY29kZSBpbmxpbmUgZm9yZWlnbiBleHBvcnQgY2NhbGwgc3RkY2FsbCBnZW5lcmljIGRlcml2ZSAnICtcbiAgICAgICAgJ2luZml4IGluZml4bCBpbmZpeHInLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdJbnQgUmVhbCBDaGFyIEJvb2wnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ1RydWUgRmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcblxuICAgICAge2JlZ2luOiAnLT58PC1bfDpdP3wjIT98Pj49fFxcXFx7XFxcXHx8XFxcXHxcXFxcfXw6PT18PTp8PD4nfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBrZXl3b3JkcyA9IHtcbiAgICAnYnVpbHRpbi1uYW1lJzpcbiAgICAgIC8vIENsb2p1cmUga2V5d29yZHNcbiAgICAgICdkZWYgZGVmb25jZSBjb25kIGFwcGx5IGlmLW5vdCBpZi1sZXQgaWYgbm90IG5vdD0gPSA8ID4gPD0gPj0gPT0gKyAvICogLSByZW0gJytcbiAgICAgICdxdW90IG5lZz8gcG9zPyBkZWxheT8gc3ltYm9sPyBrZXl3b3JkPyB0cnVlPyBmYWxzZT8gaW50ZWdlcj8gZW1wdHk/IGNvbGw/IGxpc3Q/ICcrXG4gICAgICAnc2V0PyBpZm4/IGZuPyBhc3NvY2lhdGl2ZT8gc2VxdWVudGlhbD8gc29ydGVkPyBjb3VudGVkPyByZXZlcnNpYmxlPyBudW1iZXI/IGRlY2ltYWw/ICcrXG4gICAgICAnY2xhc3M/IGRpc3RpbmN0PyBpc2E/IGZsb2F0PyByYXRpb25hbD8gcmVkdWNlZD8gcmF0aW8/IG9kZD8gZXZlbj8gY2hhcj8gc2VxPyB2ZWN0b3I/ICcrXG4gICAgICAnc3RyaW5nPyBtYXA/IG5pbD8gY29udGFpbnM/IHplcm8/IGluc3RhbmNlPyBub3QtZXZlcnk/IG5vdC1hbnk/IGxpYnNwZWM/IC0+IC0+PiAuLiAuICcrXG4gICAgICAnaW5jIGNvbXBhcmUgZG8gZG90aW1lcyBtYXBjYXQgdGFrZSByZW1vdmUgdGFrZS13aGlsZSBkcm9wIGxldGZuIGRyb3AtbGFzdCB0YWtlLWxhc3QgJytcbiAgICAgICdkcm9wLXdoaWxlIHdoaWxlIGludGVybiBjb25kcCBjYXNlIHJlZHVjZWQgY3ljbGUgc3BsaXQtYXQgc3BsaXQtd2l0aCByZXBlYXQgcmVwbGljYXRlICcrXG4gICAgICAnaXRlcmF0ZSByYW5nZSBtZXJnZSB6aXBtYXAgZGVjbGFyZSBsaW5lLXNlcSBzb3J0IGNvbXBhcmF0b3Igc29ydC1ieSBkb3J1biBkb2FsbCBudGhuZXh0ICcrXG4gICAgICAnbnRocmVzdCBwYXJ0aXRpb24gZXZhbCBkb3NlcSBhd2FpdCBhd2FpdC1mb3IgbGV0IGFnZW50IGF0b20gc2VuZCBzZW5kLW9mZiByZWxlYXNlLXBlbmRpbmctc2VuZHMgJytcbiAgICAgICdhZGQtd2F0Y2ggbWFwdiBmaWx0ZXJ2IHJlbW92ZS13YXRjaCBhZ2VudC1lcnJvciByZXN0YXJ0LWFnZW50IHNldC1lcnJvci1oYW5kbGVyIGVycm9yLWhhbmRsZXIgJytcbiAgICAgICdzZXQtZXJyb3ItbW9kZSEgZXJyb3ItbW9kZSBzaHV0ZG93bi1hZ2VudHMgcXVvdGUgdmFyIGZuIGxvb3AgcmVjdXIgdGhyb3cgdHJ5IG1vbml0b3ItZW50ZXIgJytcbiAgICAgICdtb25pdG9yLWV4aXQgZGVmbWFjcm8gZGVmbiBkZWZuLSBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIGZvciBkb3N5bmMgYW5kIG9yICcrXG4gICAgICAnd2hlbiB3aGVuLW5vdCB3aGVuLWxldCBjb21wIGp1eHQgcGFydGlhbCBzZXF1ZW5jZSBtZW1vaXplIGNvbnN0YW50bHkgY29tcGxlbWVudCBpZGVudGl0eSBhc3NlcnQgJytcbiAgICAgICdwZWVrIHBvcCBkb3RvIHByb3h5IGRlZnN0cnVjdCBmaXJzdCByZXN0IGNvbnMgZGVmcHJvdG9jb2wgY2FzdCBjb2xsIGRlZnR5cGUgZGVmcmVjb3JkIGxhc3QgYnV0bGFzdCAnK1xuICAgICAgJ3NpZ3MgcmVpZnkgc2Vjb25kIGZmaXJzdCBmbmV4dCBuZmlyc3Qgbm5leHQgZGVmbXVsdGkgZGVmbWV0aG9kIG1ldGEgd2l0aC1tZXRhIG5zIGluLW5zIGNyZWF0ZS1ucyBpbXBvcnQgJytcbiAgICAgICdyZWZlciBrZXlzIHNlbGVjdC1rZXlzIHZhbHMga2V5IHZhbCByc2VxIG5hbWUgbmFtZXNwYWNlIHByb21pc2UgaW50byB0cmFuc2llbnQgcGVyc2lzdGVudCEgY29uaiEgJytcbiAgICAgICdhc3NvYyEgZGlzc29jISBwb3AhIGRpc2ohIHVzZSBjbGFzcyB0eXBlIG51bSBmbG9hdCBkb3VibGUgc2hvcnQgYnl0ZSBib29sZWFuIGJpZ2ludCBiaWdpbnRlZ2VyICcrXG4gICAgICAnYmlnZGVjIHByaW50LW1ldGhvZCBwcmludC1kdXAgdGhyb3ctaWYgcHJpbnRmIGZvcm1hdCBsb2FkIGNvbXBpbGUgZ2V0LWluIHVwZGF0ZS1pbiBwciBwci1vbiBuZXdsaW5lICcrXG4gICAgICAnZmx1c2ggcmVhZCBzbHVycCByZWFkLWxpbmUgc3VidmVjIHdpdGgtb3BlbiBtZW1mbiB0aW1lIHJlLWZpbmQgcmUtZ3JvdXBzIHJhbmQtaW50IHJhbmQgbW9kIGxvY2tpbmcgJytcbiAgICAgICdhc3NlcnQtdmFsaWQtZmRlY2wgYWxpYXMgcmVzb2x2ZSByZWYgZGVyZWYgcmVmc2V0IHN3YXAhIHJlc2V0ISBzZXQtdmFsaWRhdG9yISBjb21wYXJlLWFuZC1zZXQhIGFsdGVyLW1ldGEhICcrXG4gICAgICAncmVzZXQtbWV0YSEgY29tbXV0ZSBnZXQtdmFsaWRhdG9yIGFsdGVyIHJlZi1zZXQgcmVmLWhpc3RvcnktY291bnQgcmVmLW1pbi1oaXN0b3J5IHJlZi1tYXgtaGlzdG9yeSBlbnN1cmUgc3luYyBpbyEgJytcbiAgICAgICduZXcgbmV4dCBjb25qIHNldCEgdG8tYXJyYXkgZnV0dXJlIGZ1dHVyZS1jYWxsIGludG8tYXJyYXkgYXNldCBnZW4tY2xhc3MgcmVkdWNlIG1hcCBmaWx0ZXIgZmluZCBlbXB0eSAnK1xuICAgICAgJ2hhc2gtbWFwIGhhc2gtc2V0IHNvcnRlZC1tYXAgc29ydGVkLW1hcC1ieSBzb3J0ZWQtc2V0IHNvcnRlZC1zZXQtYnkgdmVjIHZlY3RvciBzZXEgZmxhdHRlbiByZXZlcnNlIGFzc29jIGRpc3NvYyBsaXN0ICcrXG4gICAgICAnZGlzaiBnZXQgdW5pb24gZGlmZmVyZW5jZSBpbnRlcnNlY3Rpb24gZXh0ZW5kIGV4dGVuZC10eXBlIGV4dGVuZC1wcm90b2NvbCBpbnQgbnRoIGRlbGF5IGNvdW50IGNvbmNhdCBjaHVuayBjaHVuay1idWZmZXIgJytcbiAgICAgICdjaHVuay1hcHBlbmQgY2h1bmstZmlyc3QgY2h1bmstcmVzdCBtYXggbWluIGRlYyB1bmNoZWNrZWQtaW5jLWludCB1bmNoZWNrZWQtaW5jIHVuY2hlY2tlZC1kZWMtaW5jIHVuY2hlY2tlZC1kZWMgdW5jaGVja2VkLW5lZ2F0ZSAnK1xuICAgICAgJ3VuY2hlY2tlZC1hZGQtaW50IHVuY2hlY2tlZC1hZGQgdW5jaGVja2VkLXN1YnRyYWN0LWludCB1bmNoZWNrZWQtc3VidHJhY3QgY2h1bmstbmV4dCBjaHVuay1jb25zIGNodW5rZWQtc2VxPyBwcm4gdmFyeS1tZXRhICcrXG4gICAgICAnbGF6eS1zZXEgc3ByZWFkIGxpc3QqIHN0ciBmaW5kLWtleXdvcmQga2V5d29yZCBzeW1ib2wgZ2Vuc3ltIGZvcmNlIHJhdGlvbmFsaXplJ1xuICAgfTtcblxuICB2YXIgU1lNQk9MU1RBUlQgPSAnYS16QS1aX1xcXFwtIS4/Kyo9PD4mI1xcJyc7XG4gIHZhciBTWU1CT0xfUkUgPSAnWycgKyBTWU1CT0xTVEFSVCArICddWycgKyBTWU1CT0xTVEFSVCArICcwLTkvOzpdKic7XG4gIHZhciBTSU1QTEVfTlVNQkVSX1JFID0gJ1stK10/XFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogU0lNUExFX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pO1xuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnOycsXG4gICAgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46IC9cXGIodHJ1ZXxmYWxzZXxuaWwpXFxiL1xuICB9O1xuICB2YXIgQ09MTEVDVElPTiA9IHtcbiAgICBiZWdpbjogJ1tcXFxcW1xcXFx7XScsIGVuZDogJ1tcXFxcXVxcXFx9XSdcbiAgfTtcbiAgdmFyIEhJTlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46ICdcXFxcXicgKyBTWU1CT0xfUkVcbiAgfTtcbiAgdmFyIEhJTlRfQ09MID0gaGxqcy5DT01NRU5UKCdcXFxcXlxcXFx7JywgJ1xcXFx9Jyk7XG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1s6XXsxLDJ9JyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTkFNRSA9IHtcbiAgICBrZXl3b3Jkczoga2V5d29yZHMsXG4gICAgbGV4ZW1lczogU1lNQk9MX1JFLFxuICAgIGNsYXNzTmFtZTogJ25hbWUnLCBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHN0YXJ0czogQk9EWVxuICB9O1xuICB2YXIgREVGQVVMVF9DT05UQUlOUyA9IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTCwgU1lNQk9MXTtcblxuICBMSVNULmNvbnRhaW5zID0gW2hsanMuQ09NTUVOVCgnY29tbWVudCcsICcnKSwgTkFNRSwgQk9EWV07XG4gIEJPRFkuY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBDT0xMRUNUSU9OLmNvbnRhaW5zID0gREVGQVVMVF9DT05UQUlOUztcbiAgSElOVF9DT0wuY29udGFpbnMgPSBbQ09MTEVDVElPTl07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NsaiddLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbTElTVCwgU1RSSU5HLCBISU5ULCBISU5UX0NPTCwgQ09NTUVOVCwgS0VZLCBDT0xMRUNUSU9OLCBOVU1CRVIsIExJVEVSQUxdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXihbXFx3Li1dK3xcXHMqI18pPz0+LyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdjbG9qdXJlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY21ha2UuaW4nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvLyBzY3JpcHRpbmcgY29tbWFuZHNcbiAgICAgICAgJ2JyZWFrIGNtYWtlX2hvc3Rfc3lzdGVtX2luZm9ybWF0aW9uIGNtYWtlX21pbmltdW1fcmVxdWlyZWQgY21ha2VfcGFyc2VfYXJndW1lbnRzICcgK1xuICAgICAgICAnY21ha2VfcG9saWN5IGNvbmZpZ3VyZV9maWxlIGNvbnRpbnVlIGVsc2VpZiBlbHNlIGVuZGZvcmVhY2ggZW5kZnVuY3Rpb24gZW5kaWYgZW5kbWFjcm8gJyArXG4gICAgICAgICdlbmR3aGlsZSBleGVjdXRlX3Byb2Nlc3MgZmlsZSBmaW5kX2ZpbGUgZmluZF9saWJyYXJ5IGZpbmRfcGFja2FnZSBmaW5kX3BhdGggJyArXG4gICAgICAgICdmaW5kX3Byb2dyYW0gZm9yZWFjaCBmdW5jdGlvbiBnZXRfY21ha2VfcHJvcGVydHkgZ2V0X2RpcmVjdG9yeV9wcm9wZXJ0eSAnICtcbiAgICAgICAgJ2dldF9maWxlbmFtZV9jb21wb25lbnQgZ2V0X3Byb3BlcnR5IGlmIGluY2x1ZGUgaW5jbHVkZV9ndWFyZCBsaXN0IG1hY3JvICcgK1xuICAgICAgICAnbWFya19hc19hZHZhbmNlZCBtYXRoIG1lc3NhZ2Ugb3B0aW9uIHJldHVybiBzZXBhcmF0ZV9hcmd1bWVudHMgJyArXG4gICAgICAgICdzZXRfZGlyZWN0b3J5X3Byb3BlcnRpZXMgc2V0X3Byb3BlcnR5IHNldCBzaXRlX25hbWUgc3RyaW5nIHVuc2V0IHZhcmlhYmxlX3dhdGNoIHdoaWxlICcgK1xuICAgICAgICAvLyBwcm9qZWN0IGNvbW1hbmRzXG4gICAgICAgICdhZGRfY29tcGlsZV9kZWZpbml0aW9ucyBhZGRfY29tcGlsZV9vcHRpb25zIGFkZF9jdXN0b21fY29tbWFuZCBhZGRfY3VzdG9tX3RhcmdldCAnICtcbiAgICAgICAgJ2FkZF9kZWZpbml0aW9ucyBhZGRfZGVwZW5kZW5jaWVzIGFkZF9leGVjdXRhYmxlIGFkZF9saWJyYXJ5IGFkZF9saW5rX29wdGlvbnMgJyArXG4gICAgICAgICdhZGRfc3ViZGlyZWN0b3J5IGFkZF90ZXN0IGF1eF9zb3VyY2VfZGlyZWN0b3J5IGJ1aWxkX2NvbW1hbmQgY3JlYXRlX3Rlc3Rfc291cmNlbGlzdCAnICtcbiAgICAgICAgJ2RlZmluZV9wcm9wZXJ0eSBlbmFibGVfbGFuZ3VhZ2UgZW5hYmxlX3Rlc3RpbmcgZXhwb3J0IGZsdGtfd3JhcF91aSAnICtcbiAgICAgICAgJ2dldF9zb3VyY2VfZmlsZV9wcm9wZXJ0eSBnZXRfdGFyZ2V0X3Byb3BlcnR5IGdldF90ZXN0X3Byb3BlcnR5IGluY2x1ZGVfZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdpbmNsdWRlX2V4dGVybmFsX21zcHJvamVjdCBpbmNsdWRlX3JlZ3VsYXJfZXhwcmVzc2lvbiBpbnN0YWxsIGxpbmtfZGlyZWN0b3JpZXMgJyArXG4gICAgICAgICdsaW5rX2xpYnJhcmllcyBsb2FkX2NhY2hlIHByb2plY3QgcXRfd3JhcF9jcHAgcXRfd3JhcF91aSByZW1vdmVfZGVmaW5pdGlvbnMgJyArXG4gICAgICAgICdzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMgc2V0X3RhcmdldF9wcm9wZXJ0aWVzIHNldF90ZXN0c19wcm9wZXJ0aWVzIHNvdXJjZV9ncm91cCAnICtcbiAgICAgICAgJ3RhcmdldF9jb21waWxlX2RlZmluaXRpb25zIHRhcmdldF9jb21waWxlX2ZlYXR1cmVzIHRhcmdldF9jb21waWxlX29wdGlvbnMgJyArXG4gICAgICAgICd0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyB0YXJnZXRfbGlua19kaXJlY3RvcmllcyB0YXJnZXRfbGlua19saWJyYXJpZXMgJyArXG4gICAgICAgICd0YXJnZXRfbGlua19vcHRpb25zIHRhcmdldF9zb3VyY2VzIHRyeV9jb21waWxlIHRyeV9ydW4gJyArXG4gICAgICAgIC8vIENUZXN0IGNvbW1hbmRzXG4gICAgICAgICdjdGVzdF9idWlsZCBjdGVzdF9jb25maWd1cmUgY3Rlc3RfY292ZXJhZ2UgY3Rlc3RfZW1wdHlfYmluYXJ5X2RpcmVjdG9yeSBjdGVzdF9tZW1jaGVjayAnICtcbiAgICAgICAgJ2N0ZXN0X3JlYWRfY3VzdG9tX2ZpbGVzIGN0ZXN0X3J1bl9zY3JpcHQgY3Rlc3Rfc2xlZXAgY3Rlc3Rfc3RhcnQgY3Rlc3Rfc3VibWl0ICcgK1xuICAgICAgICAnY3Rlc3RfdGVzdCBjdGVzdF91cGRhdGUgY3Rlc3RfdXBsb2FkICcgK1xuICAgICAgICAvLyBkZXByZWNhdGVkIGNvbW1hbmRzXG4gICAgICAgICdidWlsZF9uYW1lIGV4ZWNfcHJvZ3JhbSBleHBvcnRfbGlicmFyeV9kZXBlbmRlbmNpZXMgaW5zdGFsbF9maWxlcyBpbnN0YWxsX3Byb2dyYW1zICcgK1xuICAgICAgICAnaW5zdGFsbF90YXJnZXRzIGxvYWRfY29tbWFuZCBtYWtlX2RpcmVjdG9yeSBvdXRwdXRfcmVxdWlyZWRfZmlsZXMgcmVtb3ZlICcgK1xuICAgICAgICAnc3ViZGlyX2RlcGVuZHMgc3ViZGlycyB1c2VfbWFuZ2xlZF9tZXNhIHV0aWxpdHlfc291cmNlIHZhcmlhYmxlX3JlcXVpcmVzIHdyaXRlX2ZpbGUgJyArXG4gICAgICAgICdxdDVfdXNlX21vZHVsZXMgcXQ1X3VzZV9wYWNrYWdlIHF0NV93cmFwX2NwcCAnICtcbiAgICAgICAgLy8gY29yZSBrZXl3b3Jkc1xuICAgICAgICAnb24gb2ZmIHRydWUgZmFsc2UgYW5kIG9yIG5vdCBjb21tYW5kIHBvbGljeSB0YXJnZXQgdGVzdCBleGlzdHMgaXNfbmV3ZXJfdGhhbiAnICtcbiAgICAgICAgJ2lzX2RpcmVjdG9yeSBpc19zeW1saW5rIGlzX2Fic29sdXRlIG1hdGNoZXMgbGVzcyBncmVhdGVyIGVxdWFsIGxlc3NfZXF1YWwgJyArXG4gICAgICAgICdncmVhdGVyX2VxdWFsIHN0cmxlc3Mgc3RyZ3JlYXRlciBzdHJlcXVhbCBzdHJsZXNzX2VxdWFsIHN0cmdyZWF0ZXJfZXF1YWwgdmVyc2lvbl9sZXNzICcgK1xuICAgICAgICAndmVyc2lvbl9ncmVhdGVyIHZlcnNpb25fZXF1YWwgdmVyc2lvbl9sZXNzX2VxdWFsIHZlcnNpb25fZ3JlYXRlcl9lcXVhbCBpbl9saXN0IGRlZmluZWQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXCR7JywgZW5kOiAnfSdcbiAgICAgIH0sXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIEpTIGtleXdvcmRzXG4gICAgICAnaW4gaWYgZm9yIHdoaWxlIGZpbmFsbHkgbmV3IGRvIHJldHVybiBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2YgdGhyb3cgdHJ5IHRoaXMgJyArXG4gICAgICAnc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgZGVidWdnZXIgc3VwZXIgeWllbGQgaW1wb3J0IGV4cG9ydCBmcm9tIGFzIGRlZmF1bHQgYXdhaXQgJyArXG4gICAgICAvLyBDb2ZmZWUga2V5d29yZHNcbiAgICAgICd0aGVuIHVubGVzcyB1bnRpbCBsb29wIG9mIGJ5IHdoZW4gYW5kIG9yIGlzIGlzbnQgbm90JyxcbiAgICBsaXRlcmFsOlxuICAgICAgLy8gSlMgbGl0ZXJhbHNcbiAgICAgICd0cnVlIGZhbHNlIG51bGwgdW5kZWZpbmVkICcgK1xuICAgICAgLy8gQ29mZmVlIGxpdGVyYWxzXG4gICAgICAneWVzIG5vIG9uIG9mZicsXG4gICAgYnVpbHRfaW46XG4gICAgICAnbnBtIHJlcXVpcmUgY29uc29sZSBwcmludCBtb2R1bGUgZ2xvYmFsIHdpbmRvdyBkb2N1bWVudCdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jXFx7LywgZW5kOiAvfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG4gIHZhciBFWFBSRVNTSU9OUyA9IFtcbiAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7c3RhcnRzOiB7ZW5kOiAnKFxcXFxzKi8pPycsIHJlbGV2YW5jZTogMH19KSwgLy8gYSBudW1iZXIgdHJpZXMgdG8gZWF0IHRoZSBmb2xsb3dpbmcgc2xhc2ggdG8gcHJldmVudCB0cmVhdGluZyBpdCBhcyBhIHJlZ2V4cFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC8nJycvLCBlbmQ6IC8nJycvLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC8nLywgZW5kOiAvJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1wiXCJcIi8sIGVuZDogL1wiXCJcIi8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cIi8sIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcvLy8nLCBlbmQ6ICcvLy8nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbU1VCU1QsIGhsanMuSEFTSF9DT01NRU5UX01PREVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy8vW2dpbV0qJyxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggc3BhY2UgdG8gcGFyc2UgeCAvIDIgLyAzIGFzIHR3byBkaXZpc2lvbnNcbiAgICAgICAgICAvLyByZWdleCBjYW4ndCBzdGFydCB3aXRoICosIGFuZCBpdCBzdXBwb3J0cyBhbiBcImlsbGVnYWxcIiBpbiB0aGUgbWFpbiBtb2RlXG4gICAgICAgICAgYmVnaW46IC9cXC8oPyFbICpdKShcXFxcXFwvfC4pKj9cXC9bZ2ltXSooPz1cXFcpL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ0AnICsgSlNfSURFTlRfUkUgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICB9LFxuICAgIHtcbiAgICAgIHN1Ykxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgYGAnLCBlbmQ6ICdgYGAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBKU19JREVOVF9SRX0pO1xuICB2YXIgUEFSQU1TX1JFID0gJyhcXFxcKC4qXFxcXCkpP1xcXFxzKlxcXFxCWy09XT4nO1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgLyogV2UgbmVlZCBhbm90aGVyIGNvbnRhaW5lZCBuYW1lbGVzcyBtb2RlIHRvIG5vdCBoYXZlIGV2ZXJ5IG5lc3RlZFxuICAgIHBhaXIgb2YgcGFyZW5zIHRvIGJlIGNhbGxlZCBcInBhcmFtc1wiICovXG4gICAgY29udGFpbnM6IFt7XG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICBjb250YWluczogWydzZWxmJ10uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgIH1dXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NvZmZlZScsICdjc29uJywgJ2ljZWQnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJyMjIycsICcjIyMnKSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKj1cXFxccyonICsgUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RhcnRcbiAgICAgICAgYmVnaW46IC9bOlxcKCw9XVxccyovLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46IFBBUkFNU19SRSwgZW5kOiAnWy09XT4nLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1BBUkFNU11cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzJyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgICAgICBjb250YWluczogW1RJVExFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgVElUTEVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEpTX0lERU5UX1JFICsgJzonLCBlbmQ6ICc6JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdffDAgYXMgYXQgY29maXggZWxzZSBlbmQgZXhpc3RzIGV4aXN0czIgZml4IGZvciBmb3JhbGwgZnVuIGlmIElGIGluIGxldCAnICtcbiAgICAgICAgJ21hdGNoIG1vZCBQcm9wIHJldHVybiBTZXQgdGhlbiBUeXBlIHVzaW5nIHdoZXJlIHdpdGggJyArXG4gICAgICAgICdBYm9ydCBBYm91dCBBZGQgQWRtaXQgQWRtaXR0ZWQgQWxsIEFyZ3VtZW50cyBBc3N1bXB0aW9ucyBBeGlvbSBCYWNrIEJhY2tUbyAnICtcbiAgICAgICAgJ0JhY2t0cmFjayBCaW5kIEJsYWNrbGlzdCBDYW5vbmljYWwgQ2QgQ2hlY2sgQ2xhc3MgQ2xhc3NlcyBDbG9zZSBDb2VyY2lvbiAnICtcbiAgICAgICAgJ0NvZXJjaW9ucyBDb0ZpeHBvaW50IENvSW5kdWN0aXZlIENvbGxlY3Rpb24gQ29tYmluZWQgQ29tcHV0ZSBDb25qZWN0dXJlICcgK1xuICAgICAgICAnQ29uamVjdHVyZXMgQ29uc3RhbnQgY29uc3RyIENvbnN0cmFpbnQgQ29uc3RydWN0b3JzIENvbnRleHQgQ29yb2xsYXJ5ICcgK1xuICAgICAgICAnQ3JlYXRlSGludERiIEN1dCBEZWNsYXJlIERlZmluZWQgRGVmaW5pdGlvbiBEZWxpbWl0IERlcGVuZGVuY2llcyBEZXBlbmRlbnQnICtcbiAgICAgICAgJ0Rlcml2ZSBEcm9wIGVhdXRvIEVuZCBFcXVhbGl0eSBFdmFsIEV4YW1wbGUgRXhpc3RlbnRpYWwgRXhpc3RlbnRpYWxzICcgK1xuICAgICAgICAnRXhpc3RpbmcgRXhwb3J0IGV4cG9ydGluZyBFeHRlcm4gRXh0cmFjdCBFeHRyYWN0aW9uIEZhY3QgRmllbGQgRmllbGRzIEZpbGUgJyArXG4gICAgICAgICdGaXhwb2ludCBGb2N1cyBmb3IgRnJvbSBGdW5jdGlvbiBGdW5jdGlvbmFsIEdlbmVyYWxpemFibGUgR2xvYmFsIEdvYWwgR3JhYiAnICtcbiAgICAgICAgJ0dyYW1tYXIgR3JhcGggR3VhcmRlZCBIZWFwIEhpbnQgSGludERiIEhpbnRzIEh5cG90aGVzZXMgSHlwb3RoZXNpcyBpZGVudCAnICtcbiAgICAgICAgJ0lkZW50aXR5IElmIEltbWVkaWF0ZSBJbXBsaWNpdCBJbXBvcnQgSW5jbHVkZSBJbmR1Y3RpdmUgSW5maXggSW5mbyBJbml0aWFsICcgK1xuICAgICAgICAnSW5saW5lIEluc3BlY3QgSW5zdGFuY2UgSW5zdGFuY2VzIEludHJvIEludHJvcyBJbnZlcnNpb24gSW52ZXJzaW9uX2NsZWFyICcgK1xuICAgICAgICAnTGFuZ3VhZ2UgTGVmdCBMZW1tYSBMZXQgTGlicmFyaWVzIExpYnJhcnkgTG9hZCBMb2FkUGF0aCBMb2NhbCBMb2NhdGUgTHRhYyBNTCAnICtcbiAgICAgICAgJ01vZGUgTW9kdWxlIE1vZHVsZXMgTW9ub21vcnBoaWMgTW9ycGhpc20gTmV4dCBOb0lubGluZSBOb3RhdGlvbiBPYmxpZ2F0aW9uICcgK1xuICAgICAgICAnT2JsaWdhdGlvbnMgT3BhcXVlIE9wZW4gT3B0aW1pemUgT3B0aW9ucyBQYXJhbWV0ZXIgUGFyYW1ldGVycyBQYXJhbWV0cmljICcgK1xuICAgICAgICAnUGF0aCBQYXRocyBwYXR0ZXJuIFBvbHltb3JwaGljIFByZXRlcm0gUHJpbnQgUHJpbnRpbmcgUHJvZ3JhbSBQcm9qZWN0aW9ucyAnICtcbiAgICAgICAgJ1Byb29mIFByb3Bvc2l0aW9uIFB3ZCBRZWQgUXVpdCBSZWMgUmVjb3JkIFJlY3Vyc2l2ZSBSZWRpcmVjdCBSZWxhdGlvbiBSZW1hcmsgJyArXG4gICAgICAgICdSZW1vdmUgUmVxdWlyZSBSZXNlcnZlZCBSZXNldCBSZXNvbHZlIFJlc3RhcnQgUmV3cml0ZSBSaWdodCBSaW5nIFJpbmdzIFNhdmUgJyArXG4gICAgICAgICdTY2hlbWUgU2NvcGUgU2NvcGVzIFNjcmlwdCBTZWFyY2ggU2VhcmNoQWJvdXQgU2VhcmNoSGVhZCBTZWFyY2hQYXR0ZXJuICcgK1xuICAgICAgICAnU2VhcmNoUmV3cml0ZSBTZWN0aW9uIFNlcGFyYXRlIFNldCBTZXRvaWQgU2hvdyBTb2x2ZSBTb3J0ZWQgU3RlcCBTdHJhdGVnaWVzICcgK1xuICAgICAgICAnU3RyYXRlZ3kgU3RydWN0dXJlIFN1YkNsYXNzIFRhYmxlIFRhYmxlcyBUYWN0aWMgVGVybSBUZXN0IFRoZW9yZW0gVGltZSAnICtcbiAgICAgICAgJ1RpbWVvdXQgVHJhbnNwYXJlbnQgVHlwZSBUeXBlY2xhc3NlcyBUeXBlcyBVbmRlbGltaXQgVW5kbyBVbmZvY3VzIFVuZm9jdXNlZCAnICtcbiAgICAgICAgJ1VuZm9sZCBVbml2ZXJzZSBVbml2ZXJzZXMgVW5zZXQgVW5zaGVsdmUgdXNpbmcgVmFyaWFibGUgVmFyaWFibGVzIFZhcmlhbnQgJyArXG4gICAgICAgICdWZXJib3NlIFZpc2liaWxpdHkgd2hlcmUgd2l0aCcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ2Fic3RyYWN0IGFic3VyZCBhZG1pdCBhZnRlciBhcHBseSBhcyBhc3NlcnQgYXNzdW1wdGlvbiBhdCBhdXRvIGF1dG9yZXdyaXRlICcgK1xuICAgICAgICAnYXV0b3VuZm9sZCBiZWZvcmUgYm90dG9tIGJ0YXV0byBieSBjYXNlIGNhc2VfZXEgY2JuIGNidiBjaGFuZ2UgJyArXG4gICAgICAgICdjbGFzc2ljYWxfbGVmdCBjbGFzc2ljYWxfcmlnaHQgY2xlYXIgY2xlYXJib2R5IGNvZml4IGNvbXBhcmUgY29tcHV0ZSAnICtcbiAgICAgICAgJ2NvbmdydWVuY2UgY29uc3RyX2VxIGNvbnN0cnVjdG9yIGNvbnRyYWRpY3QgY29udHJhZGljdGlvbiBjdXQgY3V0cmV3cml0ZSAnICtcbiAgICAgICAgJ2N5Y2xlIGRlY2lkZSBkZWNvbXBvc2UgZGVwZW5kZW50IGRlc3RydWN0IGRlc3RydWN0aW9uIGRpbnR1aXRpb24gJyArXG4gICAgICAgICdkaXNjcmltaW5hdGUgZGlzY3JSIGRvIGRvdWJsZSBkdGF1dG8gZWFwcGx5IGVhc3N1bXB0aW9uIGVhdXRvIGVjYXNlICcgK1xuICAgICAgICAnZWNvbnN0cnVjdG9yIGVkZXN0cnVjdCBlZGlzY3JpbWluYXRlIGVlbGltIGVleGFjdCBlZXhpc3RzIGVpbmR1Y3Rpb24gJyArXG4gICAgICAgICdlaW5qZWN0aW9uIGVsZWZ0IGVsaW0gZWxpbXR5cGUgZW5vdWdoIGVxdWFsaXR5IGVyZXdyaXRlIGVyaWdodCAnICtcbiAgICAgICAgJ2VzaW1wbGlmeV9lcSBlc3BsaXQgZXZhciBleGFjdCBleGFjdGx5X29uY2UgZXhmYWxzbyBleGlzdHMgZl9lcXVhbCBmYWlsICcgK1xuICAgICAgICAnZmllbGQgZmllbGRfc2ltcGxpZnkgZmllbGRfc2ltcGxpZnlfZXEgZmlyc3QgZmlyc3RvcmRlciBmaXggZm9sZCBmb3VyaWVyICcgK1xuICAgICAgICAnZnVuY3Rpb25hbCBnZW5lcmFsaXplIGdlbmVyYWxpemluZyBnZmFpbCBnaXZlX3VwIGhhc19ldmFyIGhuZiBpZHRhYyBpbiAnICtcbiAgICAgICAgJ2luZHVjdGlvbiBpbmplY3Rpb24gaW5zdGFudGlhdGUgaW50cm8gaW50cm9fcGF0dGVybiBpbnRyb3MgaW50dWl0aW9uICcgK1xuICAgICAgICAnaW52ZXJzaW9uIGludmVyc2lvbl9jbGVhciBpc19ldmFyIGlzX3ZhciBsYXBwbHkgbGF6eSBsZWZ0IGxpYSBscmEgbW92ZSAnICtcbiAgICAgICAgJ25hdGl2ZV9jb21wdXRlIG5pYSBuc2F0eiBvbWVnYSBvbmNlIHBhdHRlcm4gcG9zZSBwcm9ncmVzcyBwcm9vZiBwc2F0eiBxdW90ZSAnICtcbiAgICAgICAgJ3JlY29yZCByZWQgcmVmaW5lIHJlZmxleGl2aXR5IHJlbWVtYmVyIHJlbmFtZSByZXBlYXQgcmVwbGFjZSByZXZlcnQgJyArXG4gICAgICAgICdyZXZnb2FscyByZXdyaXRlIHJld3JpdGVfc3RyYXQgcmlnaHQgcmluZyByaW5nX3NpbXBsaWZ5IHJ0YXV0byBzZXQgJyArXG4gICAgICAgICdzZXRvaWRfcmVmbGV4aXZpdHkgc2V0b2lkX3JlcGxhY2Ugc2V0b2lkX3Jld3JpdGUgc2V0b2lkX3N5bW1ldHJ5ICcgK1xuICAgICAgICAnc2V0b2lkX3RyYW5zaXRpdml0eSBzaGVsdmUgc2hlbHZlX3VuaWZpYWJsZSBzaW1wbCBzaW1wbGUgc2ltcGxpZnlfZXEgc29sdmUgJyArXG4gICAgICAgICdzcGVjaWFsaXplIHNwbGl0IHNwbGl0X1JhYnMgc3BsaXRfUm11bHQgc3RlcGwgc3RlcHIgc3Vic3Qgc3VtIHN3YXAgJyArXG4gICAgICAgICdzeW1tZXRyeSB0YWN0aWMgdGF1dG8gdGltZSB0aW1lb3V0IHRvcCB0cmFuc2l0aXZpdHkgdHJpdmlhbCB0cnkgdHJ5aWYgJyArXG4gICAgICAgICd1bmZvbGQgdW5pZnkgdW50aWwgdXNpbmcgdm1fY29tcHV0ZSB3aXRoJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwoXFxcXConLCAnXFxcXCpcXFxcKScpLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBiZWdpbjogJ1xcXFx8XFxcXHMqJyxcbiAgICAgICAgZW5kOiAnXFxcXHcrJ1xuICAgICAgfSxcbiAgICAgIHtiZWdpbjogL1stPV0+L30gLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29zIChobGpzKSB7XG5cbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW3sgLy8gZXNjYXBlZFxuICAgICAgICAgIGJlZ2luOiBcIlxcXCJcXFwiXCIsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogXCJudW1iZXJcIixcbiAgICBiZWdpbjogXCJcXFxcYihcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKylcIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgQ09TX0tFWVdPUkRTID1cbiAgICAncHJvcGVydHkgcGFyYW1ldGVyIGNsYXNzIGNsYXNzbWV0aG9kIGNsaWVudG1ldGhvZCBleHRlbmRzIGFzIGJyZWFrICcgK1xuICAgICdjYXRjaCBjbG9zZSBjb250aW51ZSBkbyBkfDAgZWxzZSBlbHNlaWYgZm9yIGdvdG8gaGFsdCBoYW5nIGh8MCBpZiBqb2IgJyArXG4gICAgJ2p8MCBraWxsIGt8MCBsb2NrIGx8MCBtZXJnZSBuZXcgb3BlbiBxdWl0IHF8MCByZWFkIHJ8MCByZXR1cm4gc2V0IHN8MCAnICtcbiAgICAndGNvbW1pdCB0aHJvdyB0cm9sbGJhY2sgdHJ5IHRzdGFydCB1c2UgdmlldyB3aGlsZSB3cml0ZSB3fDAgeGVjdXRlIHh8MCAnICtcbiAgICAnemtpbGwgem5zcGFjZSB6biB6dHJhcCB6d3JpdGUgencgenpkdW1wIHp6d3JpdGUgcHJpbnQgemJyZWFrIHppbnNlcnQgJyArXG4gICAgJ3psb2FkIHpwcmludCB6cmVtb3ZlIHpzYXZlIHp6cHJpbnQgbXYgbXZjYWxsIG12Y3J0IG12ZGltIG12cHJpbnQgenF1aXQgJyArXG4gICAgJ3pzeW5jIGFzY2lpJztcblxuICAgIC8vIHJlZ2lzdGVyZWQgZnVuY3Rpb24gLSBubyBuZWVkIGluIHRoZW0gZHVlIHRvIGFsbCBmdW5jdGlvbnMgYXJlIGhpZ2hsaWdodGVkLFxuICAgIC8vIGJ1dCBJJ2xsIGp1c3QgbGVhdmUgdGhpcyBoZXJlLlxuXG4gICAgLy9cIiRiaXRcIiwgXCIkYml0Y291bnRcIixcbiAgICAvL1wiJGJpdGZpbmRcIiwgXCIkYml0bG9naWNcIiwgXCIkY2FzZVwiLCBcIiRjaGFyXCIsIFwiJGNsYXNzbWV0aG9kXCIsIFwiJGNsYXNzbmFtZVwiLFxuICAgIC8vXCIkY29tcGlsZVwiLCBcIiRkYXRhXCIsIFwiJGRlY2ltYWxcIiwgXCIkZG91YmxlXCIsIFwiJGV4dHJhY3RcIiwgXCIkZmFjdG9yXCIsXG4gICAgLy9cIiRmaW5kXCIsIFwiJGZudW1iZXJcIiwgXCIkZ2V0XCIsIFwiJGluY3JlbWVudFwiLCBcIiRpbnVtYmVyXCIsIFwiJGlzb2JqZWN0XCIsXG4gICAgLy9cIiRpc3ZhbGlkZG91YmxlXCIsIFwiJGlzdmFsaWRudW1cIiwgXCIkanVzdGlmeVwiLCBcIiRsZW5ndGhcIiwgXCIkbGlzdFwiLFxuICAgIC8vXCIkbGlzdGJ1aWxkXCIsIFwiJGxpc3RkYXRhXCIsIFwiJGxpc3RmaW5kXCIsIFwiJGxpc3Rmcm9tc3RyaW5nXCIsIFwiJGxpc3RnZXRcIixcbiAgICAvL1wiJGxpc3RsZW5ndGhcIiwgXCIkbGlzdG5leHRcIiwgXCIkbGlzdHNhbWVcIiwgXCIkbGlzdHRvc3RyaW5nXCIsIFwiJGxpc3R2YWxpZFwiLFxuICAgIC8vXCIkbG9jYXRlXCIsIFwiJG1hdGNoXCIsIFwiJG1ldGhvZFwiLCBcIiRuYW1lXCIsIFwiJG5jb252ZXJ0XCIsIFwiJG5leHRcIixcbiAgICAvL1wiJG5vcm1hbGl6ZVwiLCBcIiRub3dcIiwgXCIkbnVtYmVyXCIsIFwiJG9yZGVyXCIsIFwiJHBhcmFtZXRlclwiLCBcIiRwaWVjZVwiLFxuICAgIC8vXCIkcHJlZmV0Y2hvZmZcIiwgXCIkcHJlZmV0Y2hvblwiLCBcIiRwcm9wZXJ0eVwiLCBcIiRxbGVuZ3RoXCIsIFwiJHFzdWJzY3JpcHRcIixcbiAgICAvL1wiJHF1ZXJ5XCIsIFwiJHJhbmRvbVwiLCBcIiRyZXBsYWNlXCIsIFwiJHJldmVyc2VcIiwgXCIkc2NvbnZlcnRcIiwgXCIkc2VsZWN0XCIsXG4gICAgLy9cIiRzb3J0YmVnaW5cIiwgXCIkc29ydGVuZFwiLCBcIiRzdGFja1wiLCBcIiR0ZXh0XCIsIFwiJHRyYW5zbGF0ZVwiLCBcIiR2aWV3XCIsXG4gICAgLy9cIiR3YXNjaWlcIiwgXCIkd2NoYXJcIiwgXCIkd2V4dHJhY3RcIiwgXCIkd2ZpbmRcIiwgXCIkd2lzd2lkZVwiLCBcIiR3bGVuZ3RoXCIsXG4gICAgLy9cIiR3cmV2ZXJzZVwiLCBcIiR4ZWN1dGVcIiwgXCIkemFic1wiLCBcIiR6YXJjY29zXCIsIFwiJHphcmNzaW5cIiwgXCIkemFyY3RhblwiLFxuICAgIC8vXCIkemNvc1wiLCBcIiR6Y290XCIsIFwiJHpjc2NcIiwgXCIkemRhdGVcIiwgXCIkemRhdGVoXCIsIFwiJHpkYXRldGltZVwiLFxuICAgIC8vXCIkemRhdGV0aW1laFwiLCBcIiR6ZXhwXCIsIFwiJHpoZXhcIiwgXCIkemxuXCIsIFwiJHpsb2dcIiwgXCIkenBvd2VyXCIsIFwiJHpzZWNcIixcbiAgICAvL1wiJHpzaW5cIiwgXCIkenNxclwiLCBcIiR6dGFuXCIsIFwiJHp0aW1lXCIsIFwiJHp0aW1laFwiLCBcIiR6Ym9vbGVhblwiLFxuICAgIC8vXCIkemNvbnZlcnRcIiwgXCIkemNyY1wiLCBcIiR6Y3ljXCIsIFwiJHpkYXNjaWlcIiwgXCIkemRjaGFyXCIsIFwiJHpmXCIsXG4gICAgLy9cIiR6aXN3aWRlXCIsIFwiJHpsYXNjaWlcIiwgXCIkemxjaGFyXCIsIFwiJHpuYW1lXCIsIFwiJHpwb3NpdGlvblwiLCBcIiR6cWFzY2lpXCIsXG4gICAgLy9cIiR6cWNoYXJcIiwgXCIkenNlYXJjaFwiLCBcIiR6c2Vla1wiLCBcIiR6c3RyaXBcIiwgXCIkendhc2NpaVwiLCBcIiR6d2NoYXJcIixcbiAgICAvL1wiJHp3aWR0aFwiLCBcIiR6d3BhY2tcIiwgXCIkendicGFja1wiLCBcIiR6d3VucGFja1wiLCBcIiR6d2J1bnBhY2tcIiwgXCIkenplbmtha3VcIixcbiAgICAvL1wiJGNoYW5nZVwiLCBcIiRtdlwiLCBcIiRtdmF0XCIsIFwiJG12Zm10XCIsIFwiJG12Zm10c1wiLCBcIiRtdmljb252XCIsXG4gICAgLy9cIiRtdmljb252c1wiLCBcIiRtdmlubWF0XCIsIFwiJG12bG92ZXJcIiwgXCIkbXZvY29udlwiLCBcIiRtdm9jb252c1wiLCBcIiRtdnJhaXNlXCIsXG4gICAgLy9cIiRtdnRyYW5zXCIsIFwiJG12dlwiLCBcIiRtdm5hbWVcIiwgXCIkemJpdGFuZFwiLCBcIiR6Yml0Y291bnRcIiwgXCIkemJpdGZpbmRcIixcbiAgICAvL1wiJHpiaXRnZXRcIiwgXCIkemJpdGxlblwiLCBcIiR6Yml0bm90XCIsIFwiJHpiaXRvclwiLCBcIiR6Yml0c2V0XCIsIFwiJHpiaXRzdHJcIixcbiAgICAvL1wiJHpiaXR4b3JcIiwgXCIkemluY3JlbWVudFwiLCBcIiR6bmV4dFwiLCBcIiR6b3JkZXJcIiwgXCIkenByZXZpb3VzXCIsIFwiJHpzb3J0XCIsXG4gICAgLy9cImRldmljZVwiLCBcIiRlY29kZVwiLCBcIiRlc3RhY2tcIiwgXCIkZXRyYXBcIiwgXCIkaGFsdFwiLCBcIiRob3JvbG9nXCIsXG4gICAgLy9cIiRpb1wiLCBcIiRqb2JcIiwgXCIka2V5XCIsIFwiJG5hbWVzcGFjZVwiLCBcIiRwcmluY2lwYWxcIiwgXCIkcXVpdFwiLCBcIiRyb2xlc1wiLFxuICAgIC8vXCIkc3RvcmFnZVwiLCBcIiRzeXN0ZW1cIiwgXCIkdGVzdFwiLCBcIiR0aGlzXCIsIFwiJHRsZXZlbFwiLCBcIiR1c2VybmFtZVwiLFxuICAgIC8vXCIkeFwiLCBcIiR5XCIsIFwiJHphXCIsIFwiJHpiXCIsIFwiJHpjaGlsZFwiLCBcIiR6ZW9mXCIsIFwiJHplb3NcIiwgXCIkemVycm9yXCIsXG4gICAgLy9cIiR6aG9yb2xvZ1wiLCBcIiR6aW9cIiwgXCIkempvYlwiLCBcIiR6bW9kZVwiLCBcIiR6bnNwYWNlXCIsIFwiJHpwYXJlbnRcIiwgXCIkenBpXCIsXG4gICAgLy9cIiR6cG9zXCIsIFwiJHpyZWZlcmVuY2VcIiwgXCIkenN0b3JhZ2VcIiwgXCIkenRpbWVzdGFtcFwiLCBcIiR6dGltZXpvbmVcIixcbiAgICAvL1wiJHp0cmFwXCIsIFwiJHp2ZXJzaW9uXCJcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgYWxpYXNlczogW1wiY29zXCIsIFwiY2xzXCJdLFxuICAgIGtleXdvcmRzOiBDT1NfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkdTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICAgICAgYmVnaW46IC87LywgZW5kOiBcIiRcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvLyBGdW5jdGlvbnMgYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM6IHdyaXRlICR6dGltZSg2MCo2MCozKSwgJCRteUZ1bmMoMTApLCAkJF5WYWwoMSlcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvKD86XFwkXFwkP3xcXC5cXC4pXFxeP1thLXpBLVpdKy9cbiAgICAgIH0sXG4gICAgICB7IC8vIE1hY3JvIGNvbW1hbmQ6IHF1aXQgJCQkT0tcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvXFwkXFwkXFwkW2EtekEtWl0rL1xuICAgICAgfSxcbiAgICAgIHsgLy8gU3BlY2lhbCAoZ2xvYmFsKSB2YXJpYWJsZXM6IHdyaXRlICVyZXF1ZXN0LkNvbnRlbnQ7IEJ1aWx0LWluIGNsYXNzZXM6ICVMaWJyYXJ5LkludGVnZXJcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvJVthLXpdKyg/OlxcLlthLXpdKykqL1xuICAgICAgfSxcbiAgICAgIHsgLy8gR2xvYmFsIHZhcmlhYmxlOiBzZXQgXmdsb2JhbE5hbWUgPSAxMiB3cml0ZSBeZ2xvYmFsTmFtZVxuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvXFxeJT9bYS16QS1aXVtcXHddKi9cbiAgICAgIH0sXG4gICAgICB7IC8vIFNvbWUgY29udHJvbCBjb25zdHJ1Y3Rpb25zOiBkbyAjI2NsYXNzKFBhY2thZ2UuQ2xhc3NOYW1lKS5NZXRob2QoKSwgIyNzdXBlcigpXG4gICAgICAgIGNsYXNzTmFtZTogXCJrZXl3b3JkXCIsXG4gICAgICAgIGJlZ2luOiAvIyNjbGFzc3wjI3N1cGVyfCNkZWZpbmV8I2RpbS9cbiAgICAgIH0sXG5cbiAgICAgIC8vIHN1Yi1sYW5ndWFnZXM6IGFyZSBub3QgZnVsbHkgc3VwcG9ydGVkIGJ5IGhsanMgYnkgMTEvMTUvMjAxNVxuICAgICAgLy8gbGVmdCBmb3IgdGhlIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8mc3FsXFwoLywgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJzcWxcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8mKGpzfGpzY3JpcHR8amF2YXNjcmlwdCk8LywgZW5kOiAvPi8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwiamF2YXNjcmlwdFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyB0aGlzIGJyYWtlcyBmaXJzdCBhbmQgbGFzdCB0YWcsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBlbWJlZCBhIHZhbGlkIGh0bWxcbiAgICAgICAgYmVnaW46IC8maHRtbDxcXHMqPC8sIGVuZDogLz5cXHMqPi8sXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcInhtbFwiXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFJFU09VUkNFUyA9ICdwcmltaXRpdmUgcnNjX3RlbXBsYXRlJztcblxuICB2YXIgQ09NTUFORFMgPSAnZ3JvdXAgY2xvbmUgbXMgbWFzdGVyIGxvY2F0aW9uIGNvbG9jYXRpb24gb3JkZXIgZmVuY2luZ190b3BvbG9neSAnICtcbiAgICAgICdyc2NfdGlja2V0IGFjbF90YXJnZXQgYWNsX2dyb3VwIHVzZXIgcm9sZSAnICtcbiAgICAgICd0YWcgeG1sJztcblxuICB2YXIgUFJPUEVSVFlfU0VUUyA9ICdwcm9wZXJ0eSByc2NfZGVmYXVsdHMgb3BfZGVmYXVsdHMnO1xuXG4gIHZhciBLRVlXT1JEUyA9ICdwYXJhbXMgbWV0YSBvcGVyYXRpb25zIG9wIHJ1bGUgYXR0cmlidXRlcyB1dGlsaXphdGlvbic7XG5cbiAgdmFyIE9QRVJBVE9SUyA9ICdyZWFkIHdyaXRlIGRlbnkgZGVmaW5lZCBub3RfZGVmaW5lZCBpbl9yYW5nZSBkYXRlIHNwZWMgaW4gJyArXG4gICAgICAncmVmIHJlZmVyZW5jZSBhdHRyaWJ1dGUgdHlwZSB4cGF0aCB2ZXJzaW9uIGFuZCBvciBsdCBndCB0YWcgJyArXG4gICAgICAnbHRlIGd0ZSBlcSBuZSBcXFxcJztcblxuICB2YXIgVFlQRVMgPSAnbnVtYmVyIHN0cmluZyc7XG5cbiAgdmFyIExJVEVSQUxTID0gJ01hc3RlciBTdGFydGVkIFNsYXZlIFN0b3BwZWQgc3RhcnQgcHJvbW90ZSBkZW1vdGUgc3RvcCBtb25pdG9yIHRydWUgZmFsc2UnO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjcm0nLCAncGNtayddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTICsgJyAnICsgT1BFUkFUT1JTICsgJyAnICsgVFlQRVMsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdub2RlJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAnXFxcXHMqKFtcXFxcd18tXSs6KT8nLFxuICAgICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqW1xcXFwkXFxcXHdfXVtcXFxcd18tXSonXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiBSRVNPVVJDRVMsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBlbmQ6ICdcXFxccypbXFxcXCRcXFxcd19dW1xcXFx3Xy1dKicsXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICBlbmQ6ICdcXFxccypAP1tcXFxcd19dW1xcXFx3X1xcXFwuOi1dKidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIENPTU1BTkRTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxccysnLFxuICAgICAgICBrZXl3b3JkczogQ09NTUFORFMsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBlbmQ6ICdbXFxcXCRcXFxcd19dW1xcXFx3Xy1dKidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogUFJPUEVSVFlfU0VUUyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgIGVuZDogJ1xcXFxzKihbXFxcXHdfLV0rOik/J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnKG9jZnxzeXN0ZW1kfHNlcnZpY2V8bHNiKTpbXFxcXHdfOi1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKyk/KG1zfHN8aHxtKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ1stXT8oaW5maW5pdHl8aW5mKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvKFtBLVphLXpcXCRfXFwjXVtcXHdfLV0rKT0vLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAnPC8/JyxcbiAgICAgICAgZW5kOiAnLz8+JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElOVF9TVUZGSVggPSAnKF8qW3VpXSg4fDE2fDMyfDY0fDEyOCkpPyc7XG4gIHZhciBGTE9BVF9TVUZGSVggPSAnKF8qZigzMnw2NCkpPyc7XG4gIHZhciBDUllTVEFMX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3KlshPz1dPyc7XG4gIHZhciBDUllTVEFMX01FVEhPRF9SRSA9ICdbYS16QS1aX11cXFxcdypbIT89XT98Wy0rfl1cXFxcQHw8PHw+PnxbPSFdfnw9PT0/fDw9PnxbPD5dPT98XFxcXCpcXFxcKnxbLS8rJV4mKn58XXwvL3wvLz18JlstKypdPT98JlxcXFwqXFxcXCp8XFxcXFtcXFxcXVs9P10/JztcbiAgdmFyIENSWVNUQUxfUEFUSF9SRSA9ICdbQS1aYS16X11cXFxcdyooOjpcXFxcdyspKihcXFxcP3xcXFxcISk/JztcbiAgdmFyIENSWVNUQUxfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhYnN0cmFjdCBhbGlhcyBhbm5vdGF0aW9uIGFzIGFzPyBhc20gYmVnaW4gYnJlYWsgY2FzZSBjbGFzcyBkZWYgZG8gZWxzZSBlbHNpZiBlbmQgZW5zdXJlIGVudW0gZXh0ZW5kIGZvciBmdW4gaWYgJyArXG4gICAgICAnaW5jbHVkZSBpbnN0YW5jZV9zaXplb2YgaXNfYT8gbGliIG1hY3JvIG1vZHVsZSBuZXh0IG5pbD8gb2Ygb3V0IHBvaW50ZXJvZiBwcml2YXRlIHByb3RlY3RlZCByZXNjdWUgcmVzcG9uZHNfdG8/ICcgK1xuICAgICAgJ3JldHVybiByZXF1aXJlIHNlbGVjdCBzZWxmIHNpemVvZiBzdHJ1Y3Qgc3VwZXIgdGhlbiB0eXBlIHR5cGVvZiB1bmlvbiB1bmluaXRpYWxpemVkIHVubGVzcyB1bnRpbCB2ZXJiYXRpbSB3aGVuIHdoaWxlIHdpdGggeWllbGQgJyArXG4gICAgICAnX19ESVJfXyBfX0VORF9MSU5FX18gX19GSUxFX18gX19MSU5FX18nLFxuICAgIGxpdGVyYWw6ICdmYWxzZSBuaWwgdHJ1ZSdcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyN7JywgZW5kOiAnfScsXG4gICAga2V5d29yZHM6IENSWVNUQUxfS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUEFOU0lPTiA9IHtcbiAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFx7XFxcXHsnLCBlbmQ6ICdcXFxcfVxcXFx9J30sXG4gICAgICB7YmVnaW46ICdcXFxceyUnLCBlbmQ6ICclXFxcXH0nfVxuICAgIF0sXG4gICAga2V5d29yZHM6IENSWVNUQUxfS0VZV09SRFNcbiAgfTtcblxuICBmdW5jdGlvbiByZWN1cnNpdmVQYXJlbihiZWdpbiwgZW5kKSB7XG4gICAgdmFyXG4gICAgY29udGFpbnMgPSBbe2JlZ2luOiBiZWdpbiwgZW5kOiBlbmR9XTtcbiAgICBjb250YWluc1swXS5jb250YWlucyA9IGNvbnRhaW5zO1xuICAgIHJldHVybiBjb250YWlucztcbiAgfVxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfSxcbiAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgIHtiZWdpbjogL2AvLCBlbmQ6IC9gL30sXG4gICAgICB7YmVnaW46ICclW1F3aV0/XFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXCgnLCAnXFxcXCknKX0sXG4gICAgICB7YmVnaW46ICclW1F3aV0/XFxcXFsnLCBlbmQ6ICdcXFxcXScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXFsnLCAnXFxcXF0nKX0sXG4gICAgICB7YmVnaW46ICclW1F3aV0/eycsIGVuZDogJ30nLCBjb250YWluczogcmVjdXJzaXZlUGFyZW4oJ3snLCAnfScpfSxcbiAgICAgIHtiZWdpbjogJyVbUXdpXT88JywgZW5kOiAnPicsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignPCcsICc+Jyl9LFxuICAgICAge2JlZ2luOiAnJVtRd2ldP1xcXFx8JywgZW5kOiAnXFxcXHwnfSxcbiAgICAgIHtiZWdpbjogLzw8LVxcdyskLywgZW5kOiAvXlxccypcXHcrJC99LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuICB2YXIgUV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnJXFcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyVxXFxcXFsnLCBlbmQ6ICdcXFxcXScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXFsnLCAnXFxcXF0nKX0sXG4gICAgICB7YmVnaW46ICclcXsnLCBlbmQ6ICd9JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCd7JywgJ30nKX0sXG4gICAgICB7YmVnaW46ICclcTwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICclcVxcXFx8JywgZW5kOiAnXFxcXHwnfSxcbiAgICAgIHtiZWdpbjogLzw8LSdcXHcrJyQvLCBlbmQ6IC9eXFxzKlxcdyskL30sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG4gIHZhciBSRUdFWFAgPSB7XG4gICAgYmVnaW46ICcoPyElfSkoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxufFxcXFxiKGNhc2V8aWZ8c2VsZWN0fHVubGVzc3x1bnRpbHx3aGVufHdoaWxlKVxcXFxiKVxcXFxzKicsXG4gICAga2V5d29yZHM6ICdjYXNlIGlmIHNlbGVjdCB1bmxlc3MgdW50aWwgd2hlbiB3aGlsZScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcvL1thLXpdKicsIHJlbGV2YW5jZTogMH0sXG4gICAgICAgICAge2JlZ2luOiAnLyg/IVxcXFwvKScsIGVuZDogJy9bYS16XSonfSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBSRUdFWFAyID0ge1xuICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnJXJcXFxcKCcsIGVuZDogJ1xcXFwpJywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCdcXFxcKCcsICdcXFxcKScpfSxcbiAgICAgIHtiZWdpbjogJyVyXFxcXFsnLCBlbmQ6ICdcXFxcXScsIGNvbnRhaW5zOiByZWN1cnNpdmVQYXJlbignXFxcXFsnLCAnXFxcXF0nKX0sXG4gICAgICB7YmVnaW46ICclcnsnLCBlbmQ6ICd9JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCd7JywgJ30nKX0sXG4gICAgICB7YmVnaW46ICclcjwnLCBlbmQ6ICc+JywgY29udGFpbnM6IHJlY3Vyc2l2ZVBhcmVuKCc8JywgJz4nKX0sXG4gICAgICB7YmVnaW46ICclclxcXFx8JywgZW5kOiAnXFxcXHwnfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgQVRUUklCVVRFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQFxcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJ30pXG4gICAgXVxuICB9O1xuICB2YXIgQ1JZU1RBTF9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIEVYUEFOU0lPTixcbiAgICBTVFJJTkcsXG4gICAgUV9TVFJJTkcsXG4gICAgUkVHRVhQMixcbiAgICBSRUdFWFAsXG4gICAgQVRUUklCVVRFLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIG1vZHVsZSBzdHJ1Y3QnLCBlbmQ6ICckfDsnLFxuICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBDUllTVEFMX1BBVEhfUkV9KSxcbiAgICAgICAge2JlZ2luOiAnPCd9IC8vIHJlbGV2YW5jZSBib29zdGVyIGZvciBpbmhlcml0YW5jZVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2xpYiBlbnVtIHVuaW9uJywgZW5kOiAnJHw7JyxcbiAgICAgIGlsbGVnYWw6IC89LyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogQ1JZU1RBTF9QQVRIX1JFfSksXG4gICAgICBdLFxuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW5LZXl3b3JkczogJ2Fubm90YXRpb24nLCBlbmQ6ICckfDsnLFxuICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBDUllTVEFMX1BBVEhfUkV9KSxcbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZGVmJywgZW5kOiAvXFxCXFxiLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICBiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkUsXG4gICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1biBtYWNybycsIGVuZDogL1xcQlxcYi8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgYmVnaW46IENSWVNUQUxfTUVUSE9EX1JFLFxuICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDVcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyhcXFxcIXxcXFxcPyk/OicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzonLFxuICAgICAgY29udGFpbnM6IFtTVFJJTkcsIHtiZWdpbjogQ1JZU1RBTF9NRVRIT0RfUkV9XSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYjBiKFswMV9dKyknICsgSU5UX1NVRkZJWCB9LFxuICAgICAgICB7IGJlZ2luOiAnXFxcXGIwbyhbMC03X10rKScgKyBJTlRfU1VGRklYIH0sXG4gICAgICAgIHsgYmVnaW46ICdcXFxcYjB4KFtBLUZhLWYwLTlfXSspJyArIElOVF9TVUZGSVggfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiKFsxLTldWzAtOV9dKlswLTldfFswLTldKShcXFxcLlswLTldWzAtOV9dKik/KFtlRV1fKlstK10/WzAtOV9dKik/JyArIEZMT0FUX1NVRkZJWCArICcoPyFfKScgfSxcbiAgICAgICAgeyBiZWdpbjogJ1xcXFxiKFsxLTldWzAtOV9dKnwwKScgKyBJTlRfU1VGRklYIH1cbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gQ1JZU1RBTF9ERUZBVUxUX0NPTlRBSU5TO1xuICBFWFBBTlNJT04uY29udGFpbnMgPSBDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlMuc2xpY2UoMSk7IC8vIHdpdGhvdXQgRVhQQU5TSU9OXG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2NyJ10sXG4gICAgbGV4ZW1lczogQ1JZU1RBTF9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogQ1JZU1RBTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogQ1JZU1RBTF9ERUZBVUxUX0NPTlRBSU5TXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIE5vcm1hbCBrZXl3b3Jkcy5cbiAgICAgICdhYnN0cmFjdCBhcyBiYXNlIGJvb2wgYnJlYWsgYnl0ZSBjYXNlIGNhdGNoIGNoYXIgY2hlY2tlZCBjb25zdCBjb250aW51ZSBkZWNpbWFsICcgK1xuICAgICAgJ2RlZmF1bHQgZGVsZWdhdGUgZG8gZG91YmxlIGVudW0gZXZlbnQgZXhwbGljaXQgZXh0ZXJuIGZpbmFsbHkgZml4ZWQgZmxvYXQgJyArXG4gICAgICAnZm9yIGZvcmVhY2ggZ290byBpZiBpbXBsaWNpdCBpbiBpbnQgaW50ZXJmYWNlIGludGVybmFsIGlzIGxvY2sgbG9uZyAnICtcbiAgICAgICdvYmplY3Qgb3BlcmF0b3Igb3V0IG92ZXJyaWRlIHBhcmFtcyBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcmVhZG9ubHkgcmVmIHNieXRlICcgK1xuICAgICAgJ3NlYWxlZCBzaG9ydCBzaXplb2Ygc3RhY2thbGxvYyBzdGF0aWMgc3RyaW5nIHN0cnVjdCBzd2l0Y2ggdGhpcyB0cnkgdHlwZW9mICcgK1xuICAgICAgJ3VpbnQgdWxvbmcgdW5jaGVja2VkIHVuc2FmZSB1c2hvcnQgdXNpbmcgdmlydHVhbCB2b2lkIHZvbGF0aWxlIHdoaWxlICcgK1xuICAgICAgLy8gQ29udGV4dHVhbCBrZXl3b3Jkcy5cbiAgICAgICdhZGQgYWxpYXMgYXNjZW5kaW5nIGFzeW5jIGF3YWl0IGJ5IGRlc2NlbmRpbmcgZHluYW1pYyBlcXVhbHMgZnJvbSBnZXQgZ2xvYmFsIGdyb3VwIGludG8gam9pbiAnICtcbiAgICAgICdsZXQgbmFtZW9mIG9uIG9yZGVyYnkgcGFydGlhbCByZW1vdmUgc2VsZWN0IHNldCB2YWx1ZSB2YXIgd2hlbiB3aGVyZSB5aWVsZCcsXG4gICAgbGl0ZXJhbDpcbiAgICAgICdudWxsIGZhbHNlIHRydWUnXG4gIH07XG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwYlswMVxcJ10rKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pXFxcXGIoW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKHV8VXxsfEx8dWx8VUx8ZnxGfGJ8QiknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOVxcJ10rfChcXFxcYltcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKShbZUVdWy0rXT9bXFxcXGRcXCddKyk/KScgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWRVJCQVRJTV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ0BcIicsIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ1wiXCInfV1cbiAgfTtcbiAgdmFyIFZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChWRVJCQVRJTV9TVFJJTkcsIHtpbGxlZ2FsOiAvXFxuL30pO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAneycsIGVuZDogJ30nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgU1VCU1RfTk9fTEYgPSBobGpzLmluaGVyaXQoU1VCU1QsIHtpbGxlZ2FsOiAvXFxuL30pO1xuICB2YXIgSU5URVJQT0xBVEVEX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFwkXCIvLCBlbmQ6ICdcIicsXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFt7YmVnaW46ICd7eyd9LCB7YmVnaW46ICd9fSd9LCBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUX05PX0xGXVxuICB9O1xuICB2YXIgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFwkQFwiLywgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAne3snfSwge2JlZ2luOiAnfX0nfSwge2JlZ2luOiAnXCJcIid9LCBTVUJTVF1cbiAgfTtcbiAgdmFyIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkdfTk9fTEYgPSBobGpzLmluaGVyaXQoSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORywge1xuICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAne3snfSwge2JlZ2luOiAnfX0nfSwge2JlZ2luOiAnXCJcIid9LCBTVUJTVF9OT19MRl1cbiAgfSk7XG4gIFNVQlNULmNvbnRhaW5zID0gW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkcsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSUyxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gIF07XG4gIFNVQlNUX05PX0xGLmNvbnRhaW5zID0gW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSUyxcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwge2lsbGVnYWw6IC9cXG4vfSlcbiAgXTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyxcbiAgICAgIElOVEVSUE9MQVRFRF9TVFJJTkcsXG4gICAgICBWRVJCQVRJTV9TVFJJTkcsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgXVxuICB9O1xuXG4gIHZhciBUWVBFX0lERU5UX1JFID0gaGxqcy5JREVOVF9SRSArICcoPCcgKyBobGpzLklERU5UX1JFICsgJyhcXFxccyosXFxcXHMqJyArIGhsanMuSURFTlRfUkUgKyAnKSo+KT8oXFxcXFtcXFxcXSk/JztcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY3NoYXJwJywgJ2MjJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC86Oi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy8vLycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYmVnaW46ICcvLy8nLCByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPCEtLXwtLT4nXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJzwvPycsIGVuZDogJz4nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICdtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiB3YXJuaW5nIGVycm9yIGxpbmUgcmVnaW9uIGVuZHJlZ2lvbiBwcmFnbWEgY2hlY2tzdW0nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJTLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6LF0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJywgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnW2EtekEtWl0oXFxcXC4/XFxcXHcpKid9KSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBbQXR0cmlidXRlcyhcIlwiKV1cbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKlxcXFxbJywgZXhjbHVkZUJlZ2luOiB0cnVlLCBlbmQ6ICdcXFxcXScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ21ldGEtc3RyaW5nJywgYmVnaW46IC9cIi8sIGVuZDogL1wiL31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gRXhwcmVzc2lvbiBrZXl3b3JkcyBwcmV2ZW50ICdrZXl3b3JkIE5hbWUoLi4uKScgZnJvbSBiZWluZ1xuICAgICAgICAvLyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHJldHVybiB0aHJvdyBhd2FpdCBlbHNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBUWVBFX0lERU5UX1JFICsgJ1xcXFxzKykrJyArIGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAvXFxzKlt7Oz1dLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW2hsanMuVElUTEVfTU9ERV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJTLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBsZXhlbWVzOiAnW2EtekEtWl1bYS16QS1aMC05Xy1dKicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdiYXNlLXVyaSBjaGlsZC1zcmMgY29ubmVjdC1zcmMgZGVmYXVsdC1zcmMgZm9udC1zcmMgZm9ybS1hY3Rpb24nICtcbiAgICAgICAgJyBmcmFtZS1hbmNlc3RvcnMgZnJhbWUtc3JjIGltZy1zcmMgbWVkaWEtc3JjIG9iamVjdC1zcmMgcGx1Z2luLXR5cGVzJyArXG4gICAgICAgICcgcmVwb3J0LXVyaSBzYW5kYm94IHNjcmlwdC1zcmMgc3R5bGUtc3JjJyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIiwgZW5kOiBcIidcIlxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgIGJlZ2luOiAnXkNvbnRlbnQnLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICB9LFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aLV1bYS16QS1aMC05Xy1dKic7XG4gIHZhciBSVUxFID0ge1xuICAgIGJlZ2luOiAvKD86W0EtWlxcX1xcLlxcLV0rfC0tW2EtekEtWjAtOV8tXSspXFxzKjovLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnOycsIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAvXFxTLywgZW5kOiAnOicsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvW1xcdy1dK1xcKC8sIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAvW1xcdy1dKy9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsIGJlZ2luOiAnI1swLTlBLUZhLWZdKydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvWz1cXC98J1xcJF0vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCcsIGJlZ2luOiAvI1tBLVphLXowLTlfLV0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnLCBiZWdpbjogL1xcLltBLVphLXowLTlfLV0rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItYXR0cicsXG4gICAgICAgIGJlZ2luOiAvXFxbLywgZW5kOiAvXFxdLyxcbiAgICAgICAgaWxsZWdhbDogJyQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLFxuICAgICAgICBiZWdpbjogLzooOik/W2EtekEtWjAtOVxcX1xcLVxcK1xcKFxcKVwiJy5dKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQChmb250LWZhY2V8cGFnZSknLFxuICAgICAgICBsZXhlbWVzOiAnW2Etei1dKycsXG4gICAgICAgIGtleXdvcmRzOiAnZm9udC1mYWNlIHBhZ2UnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ0AnLCBlbmQ6ICdbeztdJywgLy8gYXRfcnVsZSBlYXRpbmcgZmlyc3QgXCJ7XCIgaXMgYSBnb29kIHRoaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGl0IGRvZXNu4oCZdCBsZXQgaXQgdG8gYmUgcGFyc2VkIGFzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHJ1bGUgc2V0IGJ1dCBpbnN0ZWFkIGRyb3BzIHBhcnNlciBpbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZGVmYXVsdCBtb2RlIHdoaWNoIGlzIGhvdyBpdCBzaG91bGQgYmUuXG4gICAgICAgIGlsbGVnYWw6IC86LywgLy8gYnJlYWsgb24gTGVzcyB2YXJpYWJsZXMgQHZhcjogLi4uXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogL1xcdysvXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xccy8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLCBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJywgYmVnaW46IElERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAneycsIGVuZDogJ30nLFxuICAgICAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFJVTEUsXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLyoqXG4gKiBLbm93biBpc3N1ZXM6XG4gKlxuICogLSBpbnZhbGlkIGhleCBzdHJpbmcgbGl0ZXJhbHMgd2lsbCBiZSByZWNvZ25pemVkIGFzIGEgZG91YmxlIHF1b3RlZCBzdHJpbmdzXG4gKiAgIGJ1dCAneCcgYXQgdGhlIGJlZ2lubmluZyBvZiBzdHJpbmcgd2lsbCBub3QgYmUgbWF0Y2hlZFxuICpcbiAqIC0gZGVsaW1pdGVkIHN0cmluZyBsaXRlcmFscyBhcmUgbm90IGNoZWNrZWQgZm9yIG1hdGNoaW5nIGVuZCBkZWxpbWl0ZXJcbiAqICAgKG5vdCBwb3NzaWJsZSB0byBkbyB3aXRoIGpzIHJlZ2V4cClcbiAqXG4gKiAtIGNvbnRlbnQgb2YgdG9rZW4gc3RyaW5nIGlzIGNvbG9yZWQgYXMgYSBzdHJpbmcgKGkuZS4gbm8ga2V5d29yZCBjb2xvcmluZyBpbnNpZGUgYSB0b2tlbiBzdHJpbmcpXG4gKiAgIGFsc28sIGNvbnRlbnQgb2YgdG9rZW4gc3RyaW5nIGlzIG5vdCB2YWxpZGF0ZWQgdG8gY29udGFpbiBvbmx5IHZhbGlkIEQgdG9rZW5zXG4gKlxuICogLSBzcGVjaWFsIHRva2VuIHNlcXVlbmNlIHJ1bGUgaXMgbm90IHN0cmljdGx5IGZvbGxvd2luZyBEIGdyYW1tYXIgKGFueXRoaW5nIGZvbGxvd2luZyAjbGluZVxuICogICB1cCB0byB0aGUgZW5kIG9mIGxpbmUgaXMgbWF0Y2hlZCBhcyBzcGVjaWFsIHRva2VuIHNlcXVlbmNlKVxuICovXG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgLyoqXG4gICAqIExhbmd1YWdlIGtleXdvcmRzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFsaWFzIGFsaWduIGFzbSBhc3NlcnQgYXV0byBib2R5IGJyZWFrIGJ5dGUgY2FzZSBjYXN0IGNhdGNoIGNsYXNzICcgK1xuICAgICAgJ2NvbnN0IGNvbnRpbnVlIGRlYnVnIGRlZmF1bHQgZGVsZXRlIGRlcHJlY2F0ZWQgZG8gZWxzZSBlbnVtIGV4cG9ydCBleHRlcm4gZmluYWwgJyArXG4gICAgICAnZmluYWxseSBmb3IgZm9yZWFjaCBmb3JlYWNoX3JldmVyc2V8MTAgZ290byBpZiBpbW11dGFibGUgaW1wb3J0IGluIGlub3V0IGludCAnICtcbiAgICAgICdpbnRlcmZhY2UgaW52YXJpYW50IGlzIGxhenkgbWFjcm8gbWl4aW4gbW9kdWxlIG5ldyBub3Rocm93IG91dCBvdmVycmlkZSBwYWNrYWdlICcgK1xuICAgICAgJ3ByYWdtYSBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcHVyZSByZWYgcmV0dXJuIHNjb3BlIHNoYXJlZCBzdGF0aWMgc3RydWN0ICcgK1xuICAgICAgJ3N1cGVyIHN3aXRjaCBzeW5jaHJvbml6ZWQgdGVtcGxhdGUgdGhpcyB0aHJvdyB0cnkgdHlwZWRlZiB0eXBlaWQgdHlwZW9mIHVuaW9uICcgK1xuICAgICAgJ3VuaXR0ZXN0IHZlcnNpb24gdm9pZCB2b2xhdGlsZSB3aGlsZSB3aXRoIF9fRklMRV9fIF9fTElORV9fIF9fZ3NoYXJlZHwxMCAnICtcbiAgICAgICdfX3RocmVhZCBfX3RyYWl0cyBfX0RBVEVfXyBfX0VPRl9fIF9fVElNRV9fIF9fVElNRVNUQU1QX18gX19WRU5ET1JfXyBfX1ZFUlNJT05fXycsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYm9vbCBjZG91YmxlIGNlbnQgY2Zsb2F0IGNoYXIgY3JlYWwgZGNoYXIgZGVsZWdhdGUgZG91YmxlIGRzdHJpbmcgZmxvYXQgZnVuY3Rpb24gJyArXG4gICAgICAnaWRvdWJsZSBpZmxvYXQgaXJlYWwgbG9uZyByZWFsIHNob3J0IHN0cmluZyB1Ynl0ZSB1Y2VudCB1aW50IHVsb25nIHVzaG9ydCB3Y2hhciAnICtcbiAgICAgICd3c3RyaW5nJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIG51bGwgdHJ1ZSdcbiAgfTtcblxuICAvKipcbiAgICogTnVtYmVyIGxpdGVyYWwgcmVnZXhwc1xuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgdmFyIGRlY2ltYWxfaW50ZWdlcl9yZSA9ICcoMHxbMS05XVtcXFxcZF9dKiknLFxuICAgIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSA9ICcoMHxbMS05XVtcXFxcZF9dKnxcXFxcZFtcXFxcZF9dKnxbXFxcXGRfXSs/XFxcXGQpJyxcbiAgICBiaW5hcnlfaW50ZWdlcl9yZSA9ICcwW2JCXVswMV9dKycsXG4gICAgaGV4YWRlY2ltYWxfZGlnaXRzX3JlID0gJyhbXFxcXGRhLWZBLUZdW1xcXFxkYS1mQS1GX10qfF9bXFxcXGRhLWZBLUZdW1xcXFxkYS1mQS1GX10qKScsXG4gICAgaGV4YWRlY2ltYWxfaW50ZWdlcl9yZSA9ICcwW3hYXScgKyBoZXhhZGVjaW1hbF9kaWdpdHNfcmUsXG5cbiAgICBkZWNpbWFsX2V4cG9uZW50X3JlID0gJyhbZUVdWystXT8nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJyknLFxuICAgIGRlY2ltYWxfZmxvYXRfcmUgPSAnKCcgKyBkZWNpbWFsX2ludGVnZXJfbm9zdXNfcmUgKyAnKFxcXFwuXFxcXGQqfCcgKyBkZWNpbWFsX2V4cG9uZW50X3JlICsgJyl8JyArXG4gICAgICAgICAgICAgICAgJ1xcXFxkK1xcXFwuJyArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArIGRlY2ltYWxfaW50ZWdlcl9ub3N1c19yZSArICd8JyArXG4gICAgICAgICAgICAgICAgJ1xcXFwuJyArIGRlY2ltYWxfaW50ZWdlcl9yZSArIGRlY2ltYWxfZXhwb25lbnRfcmUgKyAnPycgK1xuICAgICAgICAgICAgICAnKScsXG4gICAgaGV4YWRlY2ltYWxfZmxvYXRfcmUgPSAnKDBbeFhdKCcgK1xuICAgICAgICAgICAgICAgICAgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICsgJ1xcXFwuJyArIGhleGFkZWNpbWFsX2RpZ2l0c19yZSArICd8JytcbiAgICAgICAgICAgICAgICAgICdcXFxcLj8nICsgaGV4YWRlY2ltYWxfZGlnaXRzX3JlICtcbiAgICAgICAgICAgICAgICAgJylbcFBdWystXT8nICsgZGVjaW1hbF9pbnRlZ2VyX25vc3VzX3JlICsgJyknLFxuXG4gICAgaW50ZWdlcl9yZSA9ICcoJyArXG4gICAgICBkZWNpbWFsX2ludGVnZXJfcmUgKyAnfCcgK1xuICAgICAgYmluYXJ5X2ludGVnZXJfcmUgICsgJ3wnICtcbiAgICAgICBoZXhhZGVjaW1hbF9pbnRlZ2VyX3JlICAgK1xuICAgICcpJyxcblxuICAgIGZsb2F0X3JlID0gJygnICtcbiAgICAgIGhleGFkZWNpbWFsX2Zsb2F0X3JlICsgJ3wnICtcbiAgICAgIGRlY2ltYWxfZmxvYXRfcmUgICtcbiAgICAnKSc7XG5cbiAgLyoqXG4gICAqIEVzY2FwZSBzZXF1ZW5jZSBzdXBwb3J0ZWQgaW4gRCBzdHJpbmcgYW5kIGNoYXJhY3RlciBsaXRlcmFsc1xuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgdmFyIGVzY2FwZV9zZXF1ZW5jZV9yZSA9ICdcXFxcXFxcXCgnICtcbiAgICAgICAgICAgICAgJ1tcXCdcIlxcXFw/XFxcXFxcXFxhYmZucnR2XXwnICsgIC8vIGNvbW1vbiBlc2NhcGVzXG4gICAgICAgICAgICAgICd1W1xcXFxkQS1GYS1mXXs0fXwnICsgICAgIC8vIGZvdXIgaGV4IGRpZ2l0IHVuaWNvZGUgY29kZXBvaW50XG4gICAgICAgICAgICAgICdbMC03XXsxLDN9fCcgKyAgICAgICAvLyBvbmUgdG8gdGhyZWUgb2N0YWwgZGlnaXQgYXNjaWkgY2hhciBjb2RlXG4gICAgICAgICAgICAgICd4W1xcXFxkQS1GYS1mXXsyfXwnICsgICAgLy8gdHdvIGhleCBkaWdpdCBhc2NpaSBjaGFyIGNvZGVcbiAgICAgICAgICAgICAgJ1VbXFxcXGRBLUZhLWZdezh9JyArICAgICAgLy8gZWlnaHQgaGV4IGRpZ2l0IHVuaWNvZGUgY29kZXBvaW50XG4gICAgICAgICAgICAgICcpfCcgK1xuICAgICAgICAgICAgICAnJlthLXpBLVpcXFxcZF17Mix9Oyc7ICAgICAgLy8gbmFtZWQgY2hhcmFjdGVyIGVudGl0eVxuXG4gIC8qKlxuICAgKiBEIGludGVnZXIgbnVtYmVyIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9JTlRFR0VSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnXFxcXGInICsgaW50ZWdlcl9yZSArICcoTHx1fFV8THV8TFV8dUx8VUwpPycsXG4gICAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogW0RfRkxPQVRfTU9ERSBkZXNjcmlwdGlvbl1cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0ZMT0FUX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1xcXFxiKCcgK1xuICAgICAgICBmbG9hdF9yZSArICcoW2ZGXXxMfGl8W2ZGXWl8TGkpP3wnICtcbiAgICAgICAgaW50ZWdlcl9yZSArICcoaXxbZkZdaXxMaSknICtcbiAgICAgICcpJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICAvKipcbiAgICogRCBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQ0hBUkFDVEVSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJygnICsgZXNjYXBlX3NlcXVlbmNlX3JlICsgJ3wuKScsIGVuZDogJ1xcJycsXG4gICAgaWxsZWdhbDogJy4nXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgc3RyaW5nIGVzY2FwZSBzZXF1ZW5jZVxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfRVNDQVBFX1NFUVVFTkNFID0ge1xuICAgIGJlZ2luOiBlc2NhcGVfc2VxdWVuY2VfcmUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLyoqXG4gICAqIEQgZG91YmxlIHF1b3RlZCBzdHJpbmcgbGl0ZXJhbFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiJyxcbiAgICBjb250YWluczogW0RfRVNDQVBFX1NFUVVFTkNFXSxcbiAgICBlbmQ6ICdcIltjd2RdPydcbiAgfTtcblxuICAvKipcbiAgICogRCB3eXNpd3lnIGFuZCBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxzXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9XWVNJV1lHX0RFTElNSVRFRF9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnW3JxXVwiJyxcbiAgICBlbmQ6ICdcIltjd2RdPycsXG4gICAgcmVsZXZhbmNlOiA1XG4gIH07XG5cbiAgLyoqXG4gICAqIEQgYWx0ZXJuYXRlIHd5c2l3eWcgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX0FMVEVSTkFURV9XWVNJV1lHX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJyxcbiAgICBlbmQ6ICdgW2N3ZF0/J1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIGhleGFkZWNpbWFsIHN0cmluZyBsaXRlcmFsXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICB2YXIgRF9IRVhfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ3hcIltcXFxcZGEtZkEtRlxcXFxzXFxcXG5cXFxccl0qXCJbY3dkXT8nLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICAvKipcbiAgICogRCBkZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWxcbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHZhciBEX1RPS0VOX1NUUklOR19NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdxXCJcXFxceycsXG4gICAgZW5kOiAnXFxcXH1cIidcbiAgfTtcblxuICAvKipcbiAgICogSGFzaGJhbmcgc3VwcG9ydFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfSEFTSEJBTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsXG4gICAgZW5kOiAnJCcsXG4gICAgcmVsZXZhbmNlOiA1XG4gIH07XG5cbiAgLyoqXG4gICAqIEQgc3BlY2lhbCB0b2tlbiBzZXF1ZW5jZVxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfU1BFQ0lBTF9UT0tFTl9TRVFVRU5DRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnIyhsaW5lKScsXG4gICAgZW5kOiAnJCcsXG4gICAgcmVsZXZhbmNlOiA1XG4gIH07XG5cbiAgLyoqXG4gICAqIEQgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfQVRUUklCVVRFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46ICdAW2EtekEtWl9dW2EtekEtWl9cXFxcZF0qJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBEIG5lc3RpbmcgY29tbWVudFxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdmFyIERfTkVTVElOR19DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwvXFxcXCsnLFxuICAgICdcXFxcK1xcXFwvJyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJ10sXG4gICAgICByZWxldmFuY2U6IDEwXG4gICAgfVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBEX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgIERfTkVTVElOR19DT01NRU5UX01PREUsXG4gICAgICAgIERfSEVYX1NUUklOR19NT0RFLFxuICAgICAgICBEX1NUUklOR19NT0RFLFxuICAgICAgICBEX1dZU0lXWUdfREVMSU1JVEVEX1NUUklOR19NT0RFLFxuICAgICAgICBEX0FMVEVSTkFURV9XWVNJV1lHX1NUUklOR19NT0RFLFxuICAgICAgICBEX1RPS0VOX1NUUklOR19NT0RFLFxuICAgICAgICBEX0ZMT0FUX01PREUsXG4gICAgICAgIERfSU5URUdFUl9NT0RFLFxuICAgICAgICBEX0NIQVJBQ1RFUl9NT0RFLFxuICAgICAgICBEX0hBU0hCQU5HX01PREUsXG4gICAgICAgIERfU1BFQ0lBTF9UT0tFTl9TRVFVRU5DRV9NT0RFLFxuICAgICAgICBEX0FUVFJJQlVURV9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21kJywgJ21rZG93bicsICdta2QnXSxcbiAgICBjb250YWluczogW1xuICAgICAgLy8gaGlnaGxpZ2h0IGhlYWRlcnNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ14jezEsNn0nLCBlbmQ6ICckJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdeLis/XFxcXG5bPS1dezIsfSQnIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGlubGluZSBodG1sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPCcsIGVuZDogJz4nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGxpc3RzIChpbmRpY2F0b3JzIG9ubHkpXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1bGxldCcsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKihbKistXXwoXFxcXGQrXFxcXC4pKVxcXFxzKydcbiAgICAgIH0sXG4gICAgICAvLyBzdHJvbmcgc2VnbWVudHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3Ryb25nJyxcbiAgICAgICAgYmVnaW46ICdbKl9dezJ9Lis/WypfXXsyfSdcbiAgICAgIH0sXG4gICAgICAvLyBlbXBoYXNpcyBzZWdtZW50c1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdlbXBoYXNpcycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFwqLis/XFxcXConIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ18uKz9fJ1xuICAgICAgICAgICwgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gYmxvY2txdW90ZXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncXVvdGUnLFxuICAgICAgICBiZWdpbjogJ14+XFxcXHMrJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICAvLyBjb2RlIHNuaXBwZXRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvZGUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXmBgYFxcXFx3KlxcXFxzKiQnLCBlbmQ6ICdeYGBgWyBdKiQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ2AuKz9gJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdeKCB7NH18XFxcXHQpJywgZW5kOiAnJCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBob3Jpem9udGFsIHJ1bGVzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlstXFxcXCpdezMsfScsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgLy8gdXNpbmcgbGlua3MgLSB0aXRsZSBhbmQgbGlua1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxbLis/XFxcXF1bXFxcXChcXFxcW10uKj9bXFxcXClcXFxcXV0nLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbGluaycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxdXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxdXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXlxcW1teXFxuXStcXF06LyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxbLywgZW5kOiAvXFxdLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbGluaycsXG4gICAgICAgICAgICBiZWdpbjogLzpcXHMqLywgZW5kOiAvJC8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgYmVnaW46ICdcXFxcJFtBLVphLXowLTlfXSsnXG4gICAgfV0sXG4gIH07XG5cbiAgdmFyIEJSQUNFRF9TVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICBiZWdpbjogJ1xcXFwkeycsXG4gICAgICBlbmQ6ICd9J1xuICAgIH0sIF0sXG4gICAga2V5d29yZHM6ICd0cnVlIGZhbHNlIG51bGwgdGhpcyBpcyBuZXcgc3VwZXInLFxuICB9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW3tcbiAgICAgICAgYmVnaW46ICdyXFwnXFwnXFwnJyxcbiAgICAgICAgZW5kOiAnXFwnXFwnXFwnJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdyXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdyXFwnJyxcbiAgICAgICAgZW5kOiAnXFwnJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdyXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnXFwnXFwnJyxcbiAgICAgICAgZW5kOiAnXFwnXFwnXFwnJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBCUkFDRURfU1VCU1RdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsXG4gICAgICAgIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgQlJBQ0VEX1NVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIEJSQUNFRF9TVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVCwgQlJBQ0VEX1NVQlNUXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgQlJBQ0VEX1NVQlNULmNvbnRhaW5zID0gW1xuICAgIGhsanMuQ19OVU1CRVJfTU9ERSwgU1RSSU5HXG4gIF07XG5cbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICdhYnN0cmFjdCBhcyBhc3NlcnQgYXN5bmMgYXdhaXQgYnJlYWsgY2FzZSBjYXRjaCBjbGFzcyBjb25zdCBjb250aW51ZSBjb3ZhcmlhbnQgZGVmYXVsdCBkZWZlcnJlZCBkbyAnICtcbiAgICAgICdkeW5hbWljIGVsc2UgZW51bSBleHBvcnQgZXh0ZW5kcyBleHRlbnNpb24gZXh0ZXJuYWwgZmFjdG9yeSBmYWxzZSBmaW5hbCBmaW5hbGx5IGZvciBGdW5jdGlvbiBnZXQgaGlkZSBpZiAnICtcbiAgICAgICdpbXBsZW1lbnRzIGltcG9ydCBpbiBpbmZlcmZhY2UgaXMgbGlicmFyeSBtaXhpbiBuZXcgbnVsbCBvbiBvcGVyYXRvciBwYXJ0IHJldGhyb3cgcmV0dXJuIHNldCBzaG93IHN0YXRpYyAnICtcbiAgICAgICdzdXBlciBzd2l0Y2ggc3luYyB0aGlzIHRocm93IHRydWUgdHJ5IHR5cGVkZWYgdmFyIHZvaWQgd2hpbGUgd2l0aCB5aWVsZCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAvLyBkYXJ0OmNvcmVcbiAgICAgICdDb21wYXJhYmxlIERhdGVUaW1lIER1cmF0aW9uIEZ1bmN0aW9uIEl0ZXJhYmxlIEl0ZXJhdG9yIExpc3QgTWFwIE1hdGNoIE51bGwgT2JqZWN0IFBhdHRlcm4gUmVnRXhwIFNldCAnICtcbiAgICAgICdTdG9wd2F0Y2ggU3RyaW5nIFN0cmluZ0J1ZmZlciBTdHJpbmdTaW5rIFN5bWJvbCBUeXBlIFVyaSBib29sIGRvdWJsZSBkeW5hbWljIGludCBudW0gcHJpbnQgJyArXG4gICAgICAvLyBkYXJ0Omh0bWxcbiAgICAgICdFbGVtZW50IEVsZW1lbnRMaXN0IGRvY3VtZW50IHF1ZXJ5U2VsZWN0b3IgcXVlcnlTZWxlY3RvckFsbCB3aW5kb3cnXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFNUUklORyxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsIHtcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ21hcmtkb3duJ1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vK1xcXFxzKicsXG4gICAgICAgICckJywge1xuICAgICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdtYXJrZG93bicsXG4gICAgICAgICAgICBiZWdpbjogJy4nLFxuICAgICAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGVuZDogJ3snLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc9PicgLy8gTm8gbWFya3VwLCBqdXN0IGEgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2V4cG9ydHMgcmVnaXN0ZXIgZmlsZSBzaGwgYXJyYXkgcmVjb3JkIHByb3BlcnR5IGZvciBtb2Qgd2hpbGUgc2V0IGFsbHkgbGFiZWwgdXNlcyByYWlzZSBub3QgJyArXG4gICAgJ3N0b3JlZCBjbGFzcyBzYWZlY2FsbCB2YXIgaW50ZXJmYWNlIG9yIHByaXZhdGUgc3RhdGljIGV4aXQgaW5kZXggaW5oZXJpdGVkIHRvIGVsc2Ugc3RkY2FsbCAnICtcbiAgICAnb3ZlcnJpZGUgc2hyIGFzbSBmYXIgcmVzb3VyY2VzdHJpbmcgZmluYWxpemF0aW9uIHBhY2tlZCB2aXJ0dWFsIG91dCBhbmQgcHJvdGVjdGVkIGxpYnJhcnkgZG8gJyArXG4gICAgJ3hvcndyaXRlIGdvdG8gbmVhciBmdW5jdGlvbiBlbmQgZGl2IG92ZXJsb2FkIG9iamVjdCB1bml0IGJlZ2luIHN0cmluZyBvbiBpbmxpbmUgcmVwZWF0IHVudGlsICcgK1xuICAgICdkZXN0cnVjdG9yIHdyaXRlIG1lc3NhZ2UgcHJvZ3JhbSB3aXRoIHJlYWQgaW5pdGlhbGl6YXRpb24gZXhjZXB0IGRlZmF1bHQgbmlsIGlmIGNhc2UgY2RlY2wgaW4gJyArXG4gICAgJ2Rvd250byB0aHJlYWR2YXIgb2YgdHJ5IHBhc2NhbCBjb25zdCBleHRlcm5hbCBjb25zdHJ1Y3RvciB0eXBlIHB1YmxpYyB0aGVuIGltcGxlbWVudGF0aW9uICcgK1xuICAgICdmaW5hbGx5IHB1Ymxpc2hlZCBwcm9jZWR1cmUgYWJzb2x1dGUgcmVpbnRyb2R1Y2Ugb3BlcmF0b3IgYXMgaXMgYWJzdHJhY3QgYWxpYXMgYXNzZW1ibGVyICcgK1xuICAgICdiaXRwYWNrZWQgYnJlYWsgY29udGludWUgY3BwZGVjbCBjdmFyIGVudW1lcmF0b3IgZXhwZXJpbWVudGFsIHBsYXRmb3JtIGRlcHJlY2F0ZWQgJyArXG4gICAgJ3VuaW1wbGVtZW50ZWQgZHluYW1pYyBleHBvcnQgZmFyMTYgZm9yd2FyZCBnZW5lcmljIGhlbHBlciBpbXBsZW1lbnRzIGludGVycnVwdCBpb2NoZWNrcyAnICtcbiAgICAnbG9jYWwgbmFtZSBub2RlZmF1bHQgbm9yZXR1cm4gbm9zdGFja2ZyYW1lIG9sZGZwY2NhbGwgb3RoZXJ3aXNlIHNhdmVyZWdpc3RlcnMgc29mdGZsb2F0ICcgK1xuICAgICdzcGVjaWFsaXplIHN0cmljdCB1bmFsaWduZWQgdmFyYXJncyAnO1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKC9cXHsvLCAvXFx9Lywge3JlbGV2YW5jZTogMH0pLFxuICAgIGhsanMuQ09NTUVOVCgvXFwoXFwqLywgL1xcKlxcKS8sIHtyZWxldmFuY2U6IDEwfSlcbiAgXTtcbiAgdmFyIERJUkVDVElWRSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFx7XFwkLywgZW5kOiAvXFx9L30sXG4gICAgICB7YmVnaW46IC9cXChcXCpcXCQvLCBlbmQ6IC9cXCpcXCkvfVxuICAgIF1cbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvJy8sIGVuZDogLycvLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAvJycvfV1cbiAgfTtcbiAgdmFyIENIQVJfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIGJlZ2luOiAvKCNcXGQrKSsvXG4gIH07XG4gIHZhciBDTEFTUyA9IHtcbiAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICdcXFxccyo9XFxcXHMqY2xhc3NcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlRJVExFX01PREVcbiAgICBdXG4gIH07XG4gIHZhciBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yIGRlc3RydWN0b3IgcHJvY2VkdXJlJywgZW5kOiAvWzo7XS8sXG4gICAga2V5d29yZHM6ICdmdW5jdGlvbiBjb25zdHJ1Y3RvcnwxMCBkZXN0cnVjdG9yfDEwIHByb2NlZHVyZXwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklORywgRElSRUNUSVZFXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgICAgIH0sXG4gICAgICBESVJFQ1RJVkVcbiAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnZHByJywgJ2RmbScsICdwYXMnLCAncGFzY2FsJywgJ2ZyZWVwYXNjYWwnLCAnbGF6YXJ1cycsICdscHInLCAnbGZtJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1wifFxcJFtHLVpnLXpdfFxcL1xcKnw8XFwvfFxcfC8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFNUUklORywgQ0hBUl9TVFJJTkcsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQ0xBU1MsXG4gICAgICBGVU5DVElPTixcbiAgICAgIERJUkVDVElWRVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncGF0Y2gnXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9eQEAgK1xcLVxcZCssXFxkKyArXFwrXFxkKyxcXGQrICtAQCQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqXFwqXFwqICtcXGQrLFxcZCsgK1xcKlxcKlxcKlxcKiQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwtXFwtXFwtICtcXGQrLFxcZCsgK1xcLVxcLVxcLVxcLSQvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9JbmRleDogLywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogLz17Myx9LywgZW5kOiAvJC99LFxuICAgICAgICAgIHtiZWdpbjogL15cXC17M30vLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcKnszfSAvLCBlbmQ6IC8kL30sXG4gICAgICAgICAge2JlZ2luOiAvXlxcK3szfS8sIGVuZDogLyQvfSxcbiAgICAgICAgICB7YmVnaW46IC9eXFwqezE1fSQvIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogJ15cXFxcKycsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdkZWxldGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlxcXFwtJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2FkZGl0aW9uJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXCEnLCBlbmQ6ICckJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBGSUxURVIgPSB7XG4gICAgYmVnaW46IC9cXHxbQS1aYS16XSs6Py8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIG5hbWU6XG4gICAgICAgICd0cnVuY2F0ZXdvcmRzIHJlbW92ZXRhZ3MgbGluZWJyZWFrc2JyIHllc25vIGdldF9kaWdpdCB0aW1lc2luY2UgcmFuZG9tIHN0cmlwdGFncyAnICtcbiAgICAgICAgJ2ZpbGVzaXplZm9ybWF0IGVzY2FwZSBsaW5lYnJlYWtzIGxlbmd0aF9pcyBsanVzdCByanVzdCBjdXQgdXJsaXplIGZpeF9hbXBlcnNhbmRzICcgK1xuICAgICAgICAndGl0bGUgZmxvYXRmb3JtYXQgY2FwZmlyc3QgcHByaW50IGRpdmlzaWJsZWJ5IGFkZCBtYWtlX2xpc3QgdW5vcmRlcmVkX2xpc3QgdXJsZW5jb2RlICcgK1xuICAgICAgICAndGltZXVudGlsIHVybGl6ZXRydW5jIHdvcmRjb3VudCBzdHJpbmdmb3JtYXQgbGluZW51bWJlcnMgc2xpY2UgZGF0ZSBkaWN0c29ydCAnICtcbiAgICAgICAgJ2RpY3Rzb3J0cmV2ZXJzZWQgZGVmYXVsdF9pZl9ub25lIHBsdXJhbGl6ZSBsb3dlciBqb2luIGNlbnRlciBkZWZhdWx0ICcgK1xuICAgICAgICAndHJ1bmNhdGV3b3Jkc19odG1sIHVwcGVyIGxlbmd0aCBwaG9uZTJudW1lcmljIHdvcmR3cmFwIHRpbWUgYWRkc2xhc2hlcyBzbHVnaWZ5IGZpcnN0ICcgK1xuICAgICAgICAnZXNjYXBlanMgZm9yY2VfZXNjYXBlIGlyaWVuY29kZSBsYXN0IHNhZmUgc2FmZXNlcSB0cnVuY2F0ZWNoYXJzIGxvY2FsaXplIHVubG9jYWxpemUgJyArXG4gICAgICAgICdsb2NhbHRpbWUgdXRjIHRpbWV6b25lJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ppbmphJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgvXFx7JVxccypjb21tZW50XFxzKiV9LywgL1xceyVcXHMqZW5kY29tbWVudFxccyolfS8pLFxuICAgICAgaGxqcy5DT01NRU5UKC9cXHsjLywgLyN9LyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXRhZycsXG4gICAgICAgIGJlZ2luOiAvXFx7JS8sIGVuZDogLyV9LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFx3Ky8sXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICdjb21tZW50IGVuZGNvbW1lbnQgbG9hZCB0ZW1wbGF0ZXRhZyBpZmNoYW5nZWQgZW5kaWZjaGFuZ2VkIGlmIGVuZGlmIGZpcnN0b2YgZm9yICcgK1xuICAgICAgICAgICAgICAgICdlbmRmb3IgaWZub3RlcXVhbCBlbmRpZm5vdGVxdWFsIHdpZHRocmF0aW8gZXh0ZW5kcyBpbmNsdWRlIHNwYWNlbGVzcyAnICtcbiAgICAgICAgICAgICAgICAnZW5kc3BhY2VsZXNzIHJlZ3JvdXAgaWZlcXVhbCBlbmRpZmVxdWFsIHNzaSBub3cgd2l0aCBjeWNsZSB1cmwgZmlsdGVyICcgK1xuICAgICAgICAgICAgICAgICdlbmRmaWx0ZXIgZGVidWcgYmxvY2sgZW5kYmxvY2sgZWxzZSBhdXRvZXNjYXBlIGVuZGF1dG9lc2NhcGUgY3NyZl90b2tlbiBlbXB0eSBlbGlmICcgK1xuICAgICAgICAgICAgICAgICdlbmR3aXRoIHN0YXRpYyB0cmFucyBibG9ja3RyYW5zIGVuZGJsb2NrdHJhbnMgZ2V0X3N0YXRpY19wcmVmaXggZ2V0X21lZGlhX3ByZWZpeCAnICtcbiAgICAgICAgICAgICAgICAncGx1cmFsIGdldF9jdXJyZW50X2xhbmd1YWdlIGxhbmd1YWdlIGdldF9hdmFpbGFibGVfbGFuZ3VhZ2VzICcgK1xuICAgICAgICAgICAgICAgICdnZXRfY3VycmVudF9sYW5ndWFnZV9iaWRpIGdldF9sYW5ndWFnZV9pbmZvIGdldF9sYW5ndWFnZV9pbmZvX2xpc3QgbG9jYWxpemUgJyArXG4gICAgICAgICAgICAgICAgJ2VuZGxvY2FsaXplIGxvY2FsdGltZSBlbmRsb2NhbHRpbWUgdGltZXpvbmUgZW5kdGltZXpvbmUgZ2V0X2N1cnJlbnRfdGltZXpvbmUgJyArXG4gICAgICAgICAgICAgICAgJ3ZlcmJhdGltJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAga2V5d29yZHM6ICdpbiBieSBhcycsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbRklMVEVSXSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7LywgZW5kOiAvfX0vLFxuICAgICAgICBjb250YWluczogW0ZJTFRFUl1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnYmluZCcsICd6b25lJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdJTiBBIEFBQUEgQUZTREIgQVBMIENBQSBDRE5TS0VZIENEUyBDRVJUIENOQU1FIERIQ0lEIERMViBETkFNRSBETlNLRVkgRFMgSElQIElQU0VDS0VZIEtFWSBLWCAnICtcbiAgICAgICAgJ0xPQyBNWCBOQVBUUiBOUyBOU0VDIE5TRUMzIE5TRUMzUEFSQU0gUFRSIFJSU0lHIFJQIFNJRyBTT0EgU1JWIFNTSEZQIFRBIFRLRVkgVExTQSBUU0lHIFRYVCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXlxcJChUVEx8R0VORVJBVEV8SU5DTFVERXxPUklHSU4pXFxiL1xuICAgICAgfSxcbiAgICAgIC8vIElQdjZcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKChbMC05QS1GYS1mXXsxLDR9Oil7N30oWzAtOUEtRmEtZl17MSw0fXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7Nn0oOlswLTlBLUZhLWZdezEsNH18KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs1fSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs0fSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDN9KXwoKDpbMC05QS1GYS1mXXsxLDR9KT86KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7M30oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw0fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCwyfTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXsyfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDV9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezF9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNn0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsNH06KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KDooKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw3fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw1fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKSlcXFxcYidcbiAgICAgIH0sXG4gICAgICAvLyBJUHY0XG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFxcXGInXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuTlVNQkVSX01PREUsIHtiZWdpbjogL1xcYlxcZCtbZGh3bV0/L30pXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2RvY2tlciddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6ICdmcm9tIG1haW50YWluZXIgZXhwb3NlIGVudiBhcmcgdXNlciBvbmJ1aWxkIHN0b3BzaWduYWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdydW4gY21kIGVudHJ5cG9pbnQgdm9sdW1lIGFkZCBjb3B5IHdvcmtkaXIgbGFiZWwgaGVhbHRoY2hlY2sgc2hlbGwnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC9bXlxcXFxdJC8sXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdiYXNoJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnPC8nXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgIC9eXFxzKkA/cmVtXFxiLywgLyQvLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9XG4gICk7XG4gIHZhciBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXlxcXFxzKltBLVphLXouXz9dW0EtWmEtejAtOV8kI0B+Lj9dKig6fFxcXFxzK2xhYmVsKScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydiYXQnLCAnY21kJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2lmIGVsc2UgZ290byBmb3IgaW4gZG8gY2FsbCBleGl0IG5vdCBleGlzdCBlcnJvcmxldmVsIGRlZmluZWQgJyArXG4gICAgICAgICdlcXUgbmVxIGxzcyBsZXEgZ3RyIGdlcScsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3BybiBudWwgbHB0MyBscHQyIGxwdDEgY29uIGNvbTQgY29tMyBjb20yIGNvbTEgYXV4ICcgK1xuICAgICAgICAnc2hpZnQgY2QgZGlyIGVjaG8gc2V0bG9jYWwgZW5kbG9jYWwgc2V0IHBhdXNlIGNvcHkgJyArXG4gICAgICAgICdhcHBlbmQgYXNzb2MgYXQgYXR0cmliIGJyZWFrIGNhY2xzIGNkIGNoY3AgY2hkaXIgY2hrZHNrIGNoa250ZnMgY2xzIGNtZCBjb2xvciAnICtcbiAgICAgICAgJ2NvbXAgY29tcGFjdCBjb252ZXJ0IGRhdGUgZGlyIGRpc2tjb21wIGRpc2tjb3B5IGRvc2tleSBlcmFzZSBmcyAnICtcbiAgICAgICAgJ2ZpbmQgZmluZHN0ciBmb3JtYXQgZnR5cGUgZ3JhZnRhYmwgaGVscCBrZXliIGxhYmVsIG1kIG1rZGlyIG1vZGUgbW9yZSBtb3ZlIHBhdGggJyArXG4gICAgICAgICdwYXVzZSBwcmludCBwb3BkIHB1c2hkIHByb210IHJkIHJlY292ZXIgcmVtIHJlbmFtZSByZXBsYWNlIHJlc3RvcmUgcm1kaXIgc2hpZnQnICtcbiAgICAgICAgJ3NvcnQgc3RhcnQgc3Vic3QgdGltZSB0aXRsZSB0cmVlIHR5cGUgdmVyIHZlcmlmeSB2b2wgJyArXG4gICAgICAgIC8vIHdpbnV0aWxzXG4gICAgICAgICdwaW5nIG5ldCBpcGNvbmZpZyB0YXNra2lsbCB4Y29weSByZW4gZGVsJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLCBiZWdpbjogLyUlW14gXXwlW14gXSs/JXwhW14gXSs/IS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IExBQkVMLmJlZ2luLCBlbmQ6ICdnb3RvOmVvZicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnKFtfYS16QS1aXVxcXFx3KlxcXFwuKSooW19hLXpBLVpdXFxcXHcqOik/W19hLXpBLVpdXFxcXHcqJ30pLFxuICAgICAgICAgIENPTU1FTlRcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICdcXFxcYlxcXFxkKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIENPTU1FTlRcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUVVPVEVEX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sIGVuZDogL1wiL1xuICB9O1xuICB2YXIgQVBPU19QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvJy8sIGVuZDogLycvXG4gIH07XG4gIHZhciBVTlFVT1RFRF9QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnW1xcXFx3LT9dKzpcXFxcdysnLCBlbmQ6ICdcXFxcVycsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBWQUxVRUxFU1NfUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFx3Ky0/XFxcXHcrJywgZW5kOiAnXFxcXFcnLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6ICdkc2NvbmZpZycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXmRzY29uZmlnJywgZW5kOiAnXFxcXHMnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnKGxpc3R8Y3JlYXRlfGdldHxzZXR8ZGVsZXRlKS0oXFxcXHcrKScsIGVuZDogJ1xcXFxzJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJyFAIyQlXiYqKCknLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnLS0oXFxcXHcrKScsIGVuZDogJ1xcXFxzJywgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIFFVT1RFRF9QUk9QRVJUWSxcbiAgICAgIEFQT1NfUFJPUEVSVFksXG4gICAgICBVTlFVT1RFRF9QUk9QRVJUWSxcbiAgICAgIFZBTFVFTEVTU19QUk9QRVJUWSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgeyBiZWdpbjogJygodTg/fFUpfEwpP1wiJyB9KSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcodTg/fFUpP1JcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJ1xcXFxcXFxcPy4nLCBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnLidcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKFxcXFxkKyhcXFxcLlxcXFxkKik/fFxcXFwuXFxcXGQrKSh1fFV8bHxMfHVsfFVMfGZ8RiknIH0sXG4gICAgICB7IGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2lmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgaWZkZWYgaWZuZGVmJ30sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFxcXFxuLywgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW5jbHVkZScsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaW5jbHVkZSd9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChTVFJJTkdTLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICc8JywgZW5kOiAnPicsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgU1RSSU5HUyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgdmFyIERUU19SRUZFUkVOQ0UgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAnXFxcXCZbYS16XFxcXGRfXSpcXFxcYidcbiAgfTtcblxuICB2YXIgRFRTX0tFWVdPUkQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YS1rZXl3b3JkJyxcbiAgICBiZWdpbjogJy9bYS16XVthLXpcXFxcZC1dKi8nXG4gIH07XG5cbiAgdmFyIERUU19MQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXlxcXFxzKlthLXpBLVpfXVthLXpBLVpcXFxcZF9dKjonXG4gIH07XG5cbiAgdmFyIERUU19DRUxMX1BST1BFUlRZID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICc8JyxcbiAgICBlbmQ6ICc+JyxcbiAgICBjb250YWluczogW1xuICAgICAgTlVNQkVSUyxcbiAgICAgIERUU19SRUZFUkVOQ0VcbiAgICBdXG4gIH07XG5cbiAgdmFyIERUU19OT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbjogL1thLXpBLVpfXVthLXpBLVpcXGRfQF0qXFxzey8sXG4gICAgZW5kOiAvW3s7PV0vLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICB2YXIgRFRTX1JPT1RfTk9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW46ICcvXFxcXHMqeycsXG4gICAgZW5kOiAnfTsnLFxuICAgIHJlbGV2YW5jZTogMTAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERUU19SRUZFUkVOQ0UsXG4gICAgICBEVFNfS0VZV09SRCxcbiAgICAgIERUU19MQUJFTCxcbiAgICAgIERUU19OT0RFLFxuICAgICAgRFRTX0NFTExfUFJPUEVSVFksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1NcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczogXCJcIixcbiAgICBjb250YWluczogW1xuICAgICAgRFRTX1JPT1RfTk9ERSxcbiAgICAgIERUU19SRUZFUkVOQ0UsXG4gICAgICBEVFNfS0VZV09SRCxcbiAgICAgIERUU19MQUJFTCxcbiAgICAgIERUU19OT0RFLFxuICAgICAgRFRTX0NFTExfUFJPUEVSVFksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJzo6JyxcbiAgICAgICAga2V5d29yZHM6IFwiXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgRVhQUkVTU0lPTl9LRVlXT1JEUyA9ICdpZiBlcSBuZSBsdCBsdGUgZ3QgZ3RlIHNlbGVjdCBkZWZhdWx0IG1hdGggc2VwJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2RzdCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXRhZycsXG4gICAgICAgIGJlZ2luOiAvXFx7WyNcXC9dLywgZW5kOiAvXFx9LywgaWxsZWdhbDogLzsvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16QS1aXFwuLV0rLyxcbiAgICAgICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogL1xcey8sIGVuZDogL1xcfS8sIGlsbGVnYWw6IC87LyxcbiAgICAgICAga2V5d29yZHM6IEVYUFJFU1NJT05fS0VZV09SRFNcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciBjb21tZW50TW9kZSA9IGhsanMuQ09NTUVOVCgvXFwoXFwqLywgL1xcKlxcKS8pO1xuXG4gICAgdmFyIG5vblRlcm1pbmFsTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICBiZWdpbjogL15bIF0qW2EtekEtWl1bYS16QS1aLV0qKFtcXHMtXStbYS16QS1aXVthLXpBLVpdKikqL1xuICAgIH07XG5cbiAgICB2YXIgc3BlY2lhbFNlcXVlbmNlTW9kZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIm1ldGFcIixcbiAgICAgICAgYmVnaW46IC9cXD8uKlxcPy9cbiAgICB9O1xuXG4gICAgdmFyIHJ1bGVCb2R5TW9kZSA9IHtcbiAgICAgICAgYmVnaW46IC89LywgZW5kOiAvOy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBjb21tZW50TW9kZSxcbiAgICAgICAgICAgIHNwZWNpYWxTZXF1ZW5jZU1vZGUsXG4gICAgICAgICAgICAvLyB0ZXJtaW5hbHNcbiAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSwgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgY29tbWVudE1vZGUsXG4gICAgICAgICAgICBub25UZXJtaW5hbE1vZGUsXG4gICAgICAgICAgICBydWxlQm9keU1vZGVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgRUxJWElSX0lERU5UX1JFID0gJ1thLXpBLVpfXVthLXpBLVowLTlfLl0qKFxcXFwhfFxcXFw/KT8nO1xuICB2YXIgRUxJWElSX01FVEhPRF9SRSA9ICdbYS16QS1aX11cXFxcdypbIT89XT98Wy0rfl1cXFxcQHw8PHw+Pnw9fnw9PT0/fDw9PnxbPD5dPT98XFxcXCpcXFxcKnxbLS8rJV4mKn5gfF18XFxcXFtcXFxcXT0/JztcbiAgdmFyIEVMSVhJUl9LRVlXT1JEUyA9XG4gICAgJ2FuZCBmYWxzZSB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIHJldHJ5IGVuZCBmb3IgdHJ1ZSBzZWxmIHdoZW4gJyArXG4gICAgJ25leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIG5pbCBicmVhayBub3QgY2FzZSBjb25kIGFsaWFzIHdoaWxlIGVuc3VyZSBvciAnICtcbiAgICAnaW5jbHVkZSB1c2UgYWxpYXMgZm4gcXVvdGUgcmVxdWlyZSBpbXBvcnQgd2l0aHwwJztcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJyNcXFxceycsIGVuZDogJ30nLFxuICAgIGxleGVtZXM6IEVMSVhJUl9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogRUxJWElSX0tFWVdPUkRTXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJy8sIGVuZDogLycvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdkZWYgZGVmcCBkZWZtYWNybycsIGVuZDogL1xcQlxcYi8sIC8vIHRoZSBtb2RlIGlzIGVuZGVkIGJ5IHRoZSB0aXRsZVxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgIGJlZ2luOiBFTElYSVJfSURFTlRfUkUsXG4gICAgICAgIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgIH0pXG4gICAgXVxuICB9O1xuICB2YXIgQ0xBU1MgPSBobGpzLmluaGVyaXQoRlVOQ1RJT04sIHtcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZmltcGwgZGVmbW9kdWxlIGRlZnByb3RvY29sIGRlZnJlY29yZCcsIGVuZDogL1xcYmRvXFxifCR8Oy9cbiAgfSk7XG4gIHZhciBFTElYSVJfREVGQVVMVF9DT05UQUlOUyA9IFtcbiAgICBTVFJJTkcsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBDTEFTUyxcbiAgICBGVU5DVElPTixcbiAgICB7XG4gICAgICBiZWdpbjogJzo6J1xuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOig/IVtcXFxcczpdKScsXG4gICAgICBjb250YWluczogW1NUUklORywge2JlZ2luOiBFTElYSVJfTUVUSE9EX1JFfV0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogRUxJWElSX0lERU5UX1JFICsgJzooPyE6KScsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBvWzAtN19dKyl8KFxcXFxiMGJbMDFfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KC0/XFxcXGJbMS05XVswLTlfXSooLlswLTlfXSsoW2VFXVstK10/WzAtOV0rKT8pPyknLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICBiZWdpbjogJyhcXFxcJFxcXFxXKXwoKFxcXFwkfFxcXFxAXFxcXEA/KShcXFxcdyspKSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLT4nXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJylcXFxccyonLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1RdLFxuICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnLycsIGVuZDogJy9bYS16XSonXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogJyVyXFxcXFsnLCBlbmQ6ICdcXFxcXVthLXpdKidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRUxJWElSX0RFRkFVTFRfQ09OVEFJTlM7XG5cbiAgcmV0dXJuIHtcbiAgICBsZXhlbWVzOiBFTElYSVJfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEVMSVhJUl9LRVlXT1JEUyxcbiAgICBjb250YWluczogRUxJWElSX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ3stJyxcbiAgICAgICAgJy19JyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXVxuICB9O1xuXG4gIHZhciBDT05TVFJVQ1RPUiA9IHtcbiAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICBiZWdpbjogJ1xcXFxiW0EtWl1bXFxcXHdcXCddKicsIC8vIFRPRE86IG90aGVyIGNvbnN0cnVjdG9ycyAoYnVpbHQtaW4sIGluZml4KS5cbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgIGlsbGVnYWw6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtjbGFzc05hbWU6ICd0eXBlJywgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XSooXFxcXCgoXFxcXC5cXFxcLnwsfFxcXFx3KylcXFxcKSk/J30sXG4gICAgICBDT01NRU5UXG4gICAgXVxuICB9O1xuXG4gIHZhciBSRUNPUkQgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IExJU1QuY29udGFpbnNcbiAgfTtcblxuICB2YXIgQ0hBUkFDVEVSID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCdcXFxcXFxcXD8uJywgZW5kOiAnXFwnJyxcbiAgICBpbGxlZ2FsOiAnLidcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2xldCBpbiBpZiB0aGVuIGVsc2UgY2FzZSBvZiB3aGVyZSBtb2R1bGUgaW1wb3J0IGV4cG9zaW5nICcgK1xuICAgICAgJ3R5cGUgYWxpYXMgYXMgaW5maXggaW5maXhsIGluZml4ciBwb3J0IGVmZmVjdCBjb21tYW5kIHN1YnNjcmlwdGlvbicsXG4gICAgY29udGFpbnM6IFtcblxuICAgICAgLy8gVG9wLWxldmVsIGNvbnN0cnVjdGlvbnMuXG5cbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3BvcnQgZWZmZWN0IG1vZHVsZScsIGVuZDogJ2V4cG9zaW5nJyxcbiAgICAgICAga2V5d29yZHM6ICdwb3J0IGVmZmVjdCBtb2R1bGUgd2hlcmUgY29tbWFuZCBzdWJzY3JpcHRpb24gZXhwb3NpbmcnLFxuICAgICAgICBjb250YWluczogW0xJU1QsIENPTU1FTlRdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFdcXFxcLnw7J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdpbXBvcnQnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdpbXBvcnQgYXMgZXhwb3NpbmcnLFxuICAgICAgICBjb250YWluczogW0xJU1QsIENPTU1FTlRdLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFdcXFxcLnw7J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd0eXBlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAndHlwZSBhbGlhcycsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIFJFQ09SRCwgQ09NTUVOVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmZpeCBpbmZpeGwgaW5maXhyJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5DX05VTUJFUl9NT0RFLCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdwb3J0JywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAncG9ydCcsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09NTUVOVF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIExpdGVyYWxzIGFuZCBuYW1lcy5cblxuICAgICAgQ0hBUkFDVEVSLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIENPTlNUUlVDVE9SLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnXltfYS16XVtcXFxcd1xcJ10qJ30pLFxuICAgICAgQ09NTUVOVCxcblxuICAgICAge2JlZ2luOiAnLT58PC0nfSAvLyBObyBtYXJrdXAsIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvOy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBSVUJZX01FVEhPRF9SRSA9ICdbYS16QS1aX11cXFxcdypbIT89XT98Wy0rfl1cXFxcQHw8PHw+Pnw9fnw9PT0/fDw9PnxbPD5dPT98XFxcXCpcXFxcKnxbLS8rJV4mKn5gfF18XFxcXFtcXFxcXT0/JztcbiAgdmFyIFJVQllfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhbmQgdGhlbiBkZWZpbmVkIG1vZHVsZSBpbiByZXR1cm4gcmVkbyBpZiBCRUdJTiByZXRyeSBlbmQgZm9yIHNlbGYgd2hlbiAnICtcbiAgICAgICduZXh0IHVudGlsIGRvIGJlZ2luIHVubGVzcyBFTkQgcmVzY3VlIGVsc2UgYnJlYWsgdW5kZWYgbm90IHN1cGVyIGNsYXNzIGNhc2UgJyArXG4gICAgICAncmVxdWlyZSB5aWVsZCBhbGlhcyB3aGlsZSBlbnN1cmUgZWxzaWYgb3IgaW5jbHVkZSBhdHRyX3JlYWRlciBhdHRyX3dyaXRlciBhdHRyX2FjY2Vzc29yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbmlsJ1xuICB9O1xuICB2YXIgWUFSRE9DVEFHID0ge1xuICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICB9O1xuICB2YXIgSVJCX09CSkVDVCA9IHtcbiAgICBiZWdpbjogJyM8JywgZW5kOiAnPidcbiAgfTtcbiAgdmFyIENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJyMnLFxuICAgICAgJyQnLFxuICAgICAge1xuICAgICAgICBjb250YWluczogW1lBUkRPQ1RBR11cbiAgICAgIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICdeXFxcXD1iZWdpbicsXG4gICAgICAnXlxcXFw9ZW5kJyxcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IFtZQVJET0NUQUddLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9XG4gICAgKSxcbiAgICBobGpzLkNPTU1FTlQoJ15fX0VORF9fJywgJ1xcXFxuJCcpXG4gIF07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICcjXFxcXHsnLCBlbmQ6ICd9JyxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfSxcbiAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfSxcbiAgICAgIHtiZWdpbjogL2AvLCBlbmQ6IC9gL30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT9cXFxcKCcsIGVuZDogJ1xcXFwpJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT9cXFxcWycsIGVuZDogJ1xcXFxdJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT97JywgZW5kOiAnfSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/PCcsIGVuZDogJz4nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdPy8nLCBlbmQ6ICcvJ30sXG4gICAgICB7YmVnaW46ICclW3FRd1d4XT8lJywgZW5kOiAnJSd9LFxuICAgICAge2JlZ2luOiAnJVtxUXdXeF0/LScsIGVuZDogJy0nfSxcbiAgICAgIHtiZWdpbjogJyVbcVF3V3hdP1xcXFx8JywgZW5kOiAnXFxcXHwnfSxcbiAgICAgIHtcbiAgICAgICAgLy8gXFxCIGluIHRoZSBiZWdpbm5pbmcgc3VwcHJlc3NlcyByZWNvZ25pdGlvbiBvZiA/LXNlcXVlbmNlcyB3aGVyZSA/XG4gICAgICAgIC8vIGlzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhIHByZWNlZGluZyBpZGVudGlmaWVyLCBhcyBpbjogYGZ1bmM/NGBcbiAgICAgICAgYmVnaW46IC9cXEJcXD8oXFxcXFxcZHsxLDN9fFxcXFx4W0EtRmEtZjAtOV17MSwyfXxcXFxcdVtBLUZhLWYwLTldezR9fFxcXFw/XFxTKVxcYi9cbiAgICAgIH0sXG4gICAgICB7IC8vIGhlcmVkb2NzXG4gICAgICAgIGJlZ2luOiAvPDxbLX5dPyc/KFxcdyspKD86LnxcXG4pKj9cXG5cXHMqXFwxXFxiLyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBiZWdpbjogLzw8Wy1+XT8nPy8gfSxcbiAgICAgICAgICB7IGJlZ2luOiAvXFx3Ky8sXG4gICAgICAgICAgICBlbmRTYW1lQXNCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuXG4gIHZhciBSVUJZX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgU1RSSU5HLFxuICAgIElSQl9PQkpFQ1QsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIG1vZHVsZScsIGVuZDogJyR8OycsXG4gICAgICBpbGxlZ2FsOiAvPS8sXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdbQS1aYS16X11cXFxcdyooOjpcXFxcdyspKihcXFxcP3xcXFxcISk/J30pLFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICc8XFxcXHMqJyxcbiAgICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLklERU5UX1JFICsgJzo6KT8nICsgaGxqcy5JREVOVF9SRVxuICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZGVmJywgZW5kOiAnJHw7JyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogUlVCWV9NRVRIT0RfUkV9KSxcbiAgICAgICAgUEFSQU1TXG4gICAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gc3dhbGxvdyBuYW1lc3BhY2UgcXVhbGlmaWVycyBiZWZvcmUgc3ltYm9sc1xuICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcoXFxcXCF8XFxcXD8pPzonLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46ICc6KD8hXFxcXHMpJyxcbiAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCB7YmVnaW46IFJVQllfTUVUSE9EX1JFfV0sXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICcoXFxcXCRcXFxcVyl8KChcXFxcJHxcXFxcQFxcXFxAPykoXFxcXHcrKSknIC8vIHZhcmlhYmxlc1xuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIGJlZ2luOiAvXFx8LywgZW5kOiAvXFx8LyxcbiAgICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3x1bmxlc3MpXFxcXHMqJyxcbiAgICAgIGtleXdvcmRzOiAndW5sZXNzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIElSQl9PQkpFQ1QsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtiZWdpbjogJy8nLCBlbmQ6ICcvW2Etel0qJ30sXG4gICAgICAgICAgICB7YmVnaW46ICclcnsnLCBlbmQ6ICd9W2Etel0qJ30sXG4gICAgICAgICAgICB7YmVnaW46ICclclxcXFwoJywgZW5kOiAnXFxcXClbYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyIScsIGVuZDogJyFbYS16XSonfSxcbiAgICAgICAgICAgIHtiZWdpbjogJyVyXFxcXFsnLCBlbmQ6ICdcXFxcXVthLXpdKid9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdLmNvbmNhdChDT01NRU5UX01PREVTKSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXS5jb25jYXQoQ09NTUVOVF9NT0RFUyk7XG5cbiAgU1VCU1QuY29udGFpbnMgPSBSVUJZX0RFRkFVTFRfQ09OVEFJTlM7XG4gIFBBUkFNUy5jb250YWlucyA9IFJVQllfREVGQVVMVF9DT05UQUlOUztcblxuICB2YXIgU0lNUExFX1BST01QVCA9IFwiWz4/XT5cIjtcbiAgdmFyIERFRkFVTFRfUFJPTVBUID0gXCJbXFxcXHcjXStcXFxcKFxcXFx3K1xcXFwpOlxcXFxkKzpcXFxcZCs+XCI7XG4gIHZhciBSVk1fUFJPTVBUID0gXCIoXFxcXHcrLSk/XFxcXGQrXFxcXC5cXFxcZCtcXFxcLlxcXFxkKHBcXFxcZCspP1tePl0rPlwiO1xuXG4gIHZhciBJUkJfREVGQVVMVCA9IFtcbiAgICB7XG4gICAgICBiZWdpbjogL15cXHMqPT4vLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGVuZDogJyQnLCBjb250YWluczogUlVCWV9ERUZBVUxUX0NPTlRBSU5TXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgIGJlZ2luOiAnXignK1NJTVBMRV9QUk9NUFQrXCJ8XCIrREVGQVVMVF9QUk9NUFQrJ3wnK1JWTV9QUk9NUFQrJyknLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGVuZDogJyQnLCBjb250YWluczogUlVCWV9ERUZBVUxUX0NPTlRBSU5TXG4gICAgICB9XG4gICAgfVxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydyYicsICdnZW1zcGVjJywgJ3BvZHNwZWMnLCAndGhvcicsICdpcmInXSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogQ09NTUVOVF9NT0RFUy5jb25jYXQoSVJCX0RFRkFVTFQpLmNvbmNhdChSVUJZX0RFRkFVTFRfQ09OVEFJTlMpXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc8JSMnLCAnJT4nKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8JVslPS1dPycsIGVuZDogJ1slLV0/JT4nLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3J1YnknLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3NwYXduIHNwYXduX2xpbmsgc2VsZicsXG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWZ0ZXIgYW5kIGFuZGFsc298MTAgYmFuZCBiZWdpbiBibm90IGJvciBic2wgYnNyIGJ4b3IgY2FzZSBjYXRjaCBjb25kIGRpdiBlbmQgZnVuIGlmICcgK1xuICAgICAgICAnbGV0IG5vdCBvZiBvciBvcmVsc2V8MTAgcXVlcnkgcmVjZWl2ZSByZW0gdHJ5IHdoZW4geG9yJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnXlswLTldKz4gJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnJScsICckJyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrI1thLWZBLUYwLTldK3xcXFxcZCsoXFxcXC5cXFxcZCspPyhbZUVdWy0rXT9cXFxcZCspPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFw/KDo6KT8oW0EtWl1cXFxcdyooOjopPykrJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICctPidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnb2snXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyEnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhcXFxcYlthLXpcXCddW2EtekEtWjAtOV9cXCddKjpbYS16XFwnXVthLXpBLVowLTlfXFwnXSopfChcXFxcYlthLXpcXCddW2EtekEtWjAtOV9cXCddKiknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW0EtWl1bYS16QS1aMC05X1xcJ10qJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJBU0lDX0FUT01fUkUgPSAnW2EtelxcJ11bYS16QS1aMC05X1xcJ10qJztcbiAgdmFyIEZVTkNUSU9OX05BTUVfUkUgPSAnKCcgKyBCQVNJQ19BVE9NX1JFICsgJzonICsgQkFTSUNfQVRPTV9SRSArICd8JyArIEJBU0lDX0FUT01fUkUgKyAnKSc7XG4gIHZhciBFUkxBTkdfUkVTRVJWRUQgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhZnRlciBhbmQgYW5kYWxzb3wxMCBiYW5kIGJlZ2luIGJub3QgYm9yIGJzbCBienIgYnhvciBjYXNlIGNhdGNoIGNvbmQgZGl2IGVuZCBmdW4gaWYgJyArXG4gICAgICAnbGV0IG5vdCBvZiBvcmVsc2V8MTAgcXVlcnkgcmVjZWl2ZSByZW0gdHJ5IHdoZW4geG9yJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ2ZhbHNlIHRydWUnXG4gIH07XG5cbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoJyUnLCAnJCcpO1xuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICdcXFxcYihcXFxcZCsjW2EtZkEtRjAtOV0rfFxcXFxkKyhcXFxcLlxcXFxkKyk/KFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOQU1FRF9GVU4gPSB7XG4gICAgYmVnaW46ICdmdW5cXFxccysnICsgQkFTSUNfQVRPTV9SRSArICcvXFxcXGQrJ1xuICB9O1xuICB2YXIgRlVOQ1RJT05fQ0FMTCA9IHtcbiAgICBiZWdpbjogRlVOQ1RJT05fTkFNRV9SRSArICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEZVTkNUSU9OX05BTUVfUkUsIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIC8vIFwiY29udGFpbnNcIiBkZWZpbmVkIGxhdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgVFVQTEUgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgcmVsZXZhbmNlOiAwXG4gICAgLy8gXCJjb250YWluc1wiIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIFZBUjEgPSB7XG4gICAgYmVnaW46ICdcXFxcYl8oW0EtWl1bQS1aYS16MC05X10qKT8nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgVkFSMiA9IHtcbiAgICBiZWdpbjogJ1tBLVpdW2EtekEtWjAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBSRUNPUkRfQUNDRVNTID0ge1xuICAgIGJlZ2luOiAnIycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnIycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAvLyBcImNvbnRhaW5zXCIgZGVmaW5lZCBsYXRlclxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQkxPQ0tfU1RBVEVNRU5UUyA9IHtcbiAgICBiZWdpbktleXdvcmRzOiAnZnVuIHJlY2VpdmUgaWYgdHJ5IGNhc2UnLCBlbmQ6ICdlbmQnLFxuICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRURcbiAgfTtcbiAgQkxPQ0tfU1RBVEVNRU5UUy5jb250YWlucyA9IFtcbiAgICBDT01NRU5ULFxuICAgIE5BTUVEX0ZVTixcbiAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnJ30pLFxuICAgIEJMT0NLX1NUQVRFTUVOVFMsXG4gICAgRlVOQ1RJT05fQ0FMTCxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIE5VTUJFUixcbiAgICBUVVBMRSxcbiAgICBWQVIxLCBWQVIyLFxuICAgIFJFQ09SRF9BQ0NFU1NcbiAgXTtcblxuICB2YXIgQkFTSUNfTU9ERVMgPSBbXG4gICAgQ09NTUVOVCxcbiAgICBOQU1FRF9GVU4sXG4gICAgQkxPQ0tfU1RBVEVNRU5UUyxcbiAgICBGVU5DVElPTl9DQUxMLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSLFxuICAgIFRVUExFLFxuICAgIFZBUjEsIFZBUjIsXG4gICAgUkVDT1JEX0FDQ0VTU1xuICBdO1xuICBGVU5DVElPTl9DQUxMLmNvbnRhaW5zWzFdLmNvbnRhaW5zID0gQkFTSUNfTU9ERVM7XG4gIFRVUExFLmNvbnRhaW5zID0gQkFTSUNfTU9ERVM7XG4gIFJFQ09SRF9BQ0NFU1MuY29udGFpbnNbMV0uY29udGFpbnMgPSBCQVNJQ19NT0RFUztcblxuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogQkFTSUNfTU9ERVNcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2VybCddLFxuICAgIGtleXdvcmRzOiBFUkxBTkdfUkVTRVJWRUQsXG4gICAgaWxsZWdhbDogJyg8L3xcXFxcKj18XFxcXCs9fC09fC9cXFxcKnxcXFxcKi98XFxcXChcXFxcKnxcXFxcKlxcXFwpKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbjogJ14nICsgQkFTSUNfQVRPTV9SRSArICdcXFxccypcXFxcKCcsIGVuZDogJy0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcKHwjfC8vfC9cXFxcKnxcXFxcXFxcXHw6fDsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IEJBU0lDX0FUT01fUkV9KVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICc7fFxcXFwuJyxcbiAgICAgICAgICBrZXl3b3JkczogRVJMQU5HX1JFU0VSVkVELFxuICAgICAgICAgIGNvbnRhaW5zOiBCQVNJQ19NT0RFU1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ09NTUVOVCxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeLScsIGVuZDogJ1xcXFwuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgbGV4ZW1lczogJy0nICsgaGxqcy5JREVOVF9SRSxcbiAgICAgICAga2V5d29yZHM6XG4gICAgICAgICAgJy1tb2R1bGUgLXJlY29yZCAtdW5kZWYgLWV4cG9ydCAtaWZkZWYgLWlmbmRlZiAtYXV0aG9yIC1jb3B5cmlnaHQgLWRvYyAtdnNuICcgK1xuICAgICAgICAgICctaW1wb3J0IC1pbmNsdWRlIC1pbmNsdWRlX2xpYiAtY29tcGlsZSAtZGVmaW5lIC1lbHNlIC1lbmRpZiAtZmlsZSAtYmVoYXZpb3VyICcgK1xuICAgICAgICAgICctYmVoYXZpb3IgLXNwZWMnLFxuICAgICAgICBjb250YWluczogW1BBUkFNU11cbiAgICAgIH0sXG4gICAgICBOVU1CRVIsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgUkVDT1JEX0FDQ0VTUyxcbiAgICAgIFZBUjEsIFZBUjIsXG4gICAgICBUVVBMRSxcbiAgICAgIHtiZWdpbjogL1xcLiQvfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd4bHN4JywgJ3hscyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogL1thLXpBLVpdW1xcd1xcLl0qLyxcbiAgICAvLyBidWlsdC1pbiBmdW5jdGlvbnMgaW1wb3J0ZWQgZnJvbSBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA1MTMwNDI3MTAvaHR0cHM6Ly9zdXBwb3J0Lm9mZmljZS5jb20vZW4tdXMvYXJ0aWNsZS9FeGNlbC1mdW5jdGlvbnMtYWxwaGFiZXRpY2FsLWIzOTQ0NTcyLTI1NWQtNGVmYi1iYjk2LWM2ZDkwMDMzZTE4OFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAgIGJ1aWx0X2luOiAnQUJTIEFDQ1JJTlQgQUNDUklOVE0gQUNPUyBBQ09TSCBBQ09UIEFDT1RIIEFHR1JFR0FURSBBRERSRVNTIEFNT1JERUdSQyBBTU9STElOQyBBTkQgQVJBQklDIEFSRUFTIEFTQyBBU0lOIEFTSU5IIEFUQU4gQVRBTjIgQVRBTkggQVZFREVWIEFWRVJBR0UgQVZFUkFHRUEgQVZFUkFHRUlGIEFWRVJBR0VJRlMgQkFIVFRFWFQgQkFTRSBCRVNTRUxJIEJFU1NFTEogQkVTU0VMSyBCRVNTRUxZIEJFVEFESVNUIEJFVEEuRElTVCBCRVRBSU5WIEJFVEEuSU5WIEJJTjJERUMgQklOMkhFWCBCSU4yT0NUIEJJTk9NRElTVCBCSU5PTS5ESVNUIEJJTk9NLkRJU1QuUkFOR0UgQklOT00uSU5WIEJJVEFORCBCSVRMU0hJRlQgQklUT1IgQklUUlNISUZUIEJJVFhPUiBDQUxMIENFSUxJTkcgQ0VJTElORy5NQVRIIENFSUxJTkcuUFJFQ0lTRSBDRUxMIENIQVIgQ0hJRElTVCBDSElJTlYgQ0hJVEVTVCBDSElTUS5ESVNUIENISVNRLkRJU1QuUlQgQ0hJU1EuSU5WIENISVNRLklOVi5SVCBDSElTUS5URVNUIENIT09TRSBDTEVBTiBDT0RFIENPTFVNTiBDT0xVTU5TIENPTUJJTiBDT01CSU5BIENPTVBMRVggQ09OQ0FUIENPTkNBVEVOQVRFIENPTkZJREVOQ0UgQ09ORklERU5DRS5OT1JNIENPTkZJREVOQ0UuVCBDT05WRVJUIENPUlJFTCBDT1MgQ09TSCBDT1QgQ09USCBDT1VOVCBDT1VOVEEgQ09VTlRCTEFOSyBDT1VOVElGIENPVU5USUZTIENPVVBEQVlCUyBDT1VQREFZUyBDT1VQREFZU05DIENPVVBOQ0QgQ09VUE5VTSBDT1VQUENEIENPVkFSIENPVkFSSUFOQ0UuUCBDT1ZBUklBTkNFLlMgQ1JJVEJJTk9NIENTQyBDU0NIIENVQkVLUElNRU1CRVIgQ1VCRU1FTUJFUiBDVUJFTUVNQkVSUFJPUEVSVFkgQ1VCRVJBTktFRE1FTUJFUiBDVUJFU0VUIENVQkVTRVRDT1VOVCBDVUJFVkFMVUUgQ1VNSVBNVCBDVU1QUklOQyBEQVRFIERBVEVESUYgREFURVZBTFVFIERBVkVSQUdFIERBWSBEQVlTIERBWVMzNjAgREIgREJDUyBEQ09VTlQgRENPVU5UQSBEREIgREVDMkJJTiBERUMySEVYIERFQzJPQ1QgREVDSU1BTCBERUdSRUVTIERFTFRBIERFVlNRIERHRVQgRElTQyBETUFYIERNSU4gRE9MTEFSIERPTExBUkRFIERPTExBUkZSIERQUk9EVUNUIERTVERFViBEU1RERVZQIERTVU0gRFVSQVRJT04gRFZBUiBEVkFSUCBFREFURSBFRkZFQ1QgRU5DT0RFVVJMIEVPTU9OVEggRVJGIEVSRi5QUkVDSVNFIEVSRkMgRVJGQy5QUkVDSVNFIEVSUk9SLlRZUEUgRVVST0NPTlZFUlQgRVZFTiBFWEFDVCBFWFAgRVhQT04uRElTVCBFWFBPTkRJU1QgRkFDVCBGQUNURE9VQkxFIEZBTFNFfDAgRi5ESVNUIEZESVNUIEYuRElTVC5SVCBGSUxURVJYTUwgRklORCBGSU5EQiBGLklOViBGLklOVi5SVCBGSU5WIEZJU0hFUiBGSVNIRVJJTlYgRklYRUQgRkxPT1IgRkxPT1IuTUFUSCBGTE9PUi5QUkVDSVNFIEZPUkVDQVNUIEZPUkVDQVNULkVUUyBGT1JFQ0FTVC5FVFMuQ09ORklOVCBGT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkgRk9SRUNBU1QuRVRTLlNUQVQgRk9SRUNBU1QuTElORUFSIEZPUk1VTEFURVhUIEZSRVFVRU5DWSBGLlRFU1QgRlRFU1QgRlYgRlZTQ0hFRFVMRSBHQU1NQSBHQU1NQS5ESVNUIEdBTU1BRElTVCBHQU1NQS5JTlYgR0FNTUFJTlYgR0FNTUFMTiBHQU1NQUxOLlBSRUNJU0UgR0FVU1MgR0NEIEdFT01FQU4gR0VTVEVQIEdFVFBJVk9UREFUQSBHUk9XVEggSEFSTUVBTiBIRVgyQklOIEhFWDJERUMgSEVYMk9DVCBITE9PS1VQIEhPVVIgSFlQRVJMSU5LIEhZUEdFT00uRElTVCBIWVBHRU9NRElTVCBJRiBJRkVSUk9SIElGTkEgSUZTIElNQUJTIElNQUdJTkFSWSBJTUFSR1VNRU5UIElNQ09OSlVHQVRFIElNQ09TIElNQ09TSCBJTUNPVCBJTUNTQyBJTUNTQ0ggSU1ESVYgSU1FWFAgSU1MTiBJTUxPRzEwIElNTE9HMiBJTVBPV0VSIElNUFJPRFVDVCBJTVJFQUwgSU1TRUMgSU1TRUNIIElNU0lOIElNU0lOSCBJTVNRUlQgSU1TVUIgSU1TVU0gSU1UQU4gSU5ERVggSU5ESVJFQ1QgSU5GTyBJTlQgSU5URVJDRVBUIElOVFJBVEUgSVBNVCBJUlIgSVNCTEFOSyBJU0VSUiBJU0VSUk9SIElTRVZFTiBJU0ZPUk1VTEEgSVNMT0dJQ0FMIElTTkEgSVNOT05URVhUIElTTlVNQkVSIElTT0REIElTUkVGIElTVEVYVCBJU08uQ0VJTElORyBJU09XRUVLTlVNIElTUE1UIEpJUyBLVVJUIExBUkdFIExDTSBMRUZUIExFRlRCIExFTiBMRU5CIExJTkVTVCBMTiBMT0cgTE9HMTAgTE9HRVNUIExPR0lOViBMT0dOT1JNLkRJU1QgTE9HTk9STURJU1QgTE9HTk9STS5JTlYgTE9PS1VQIExPV0VSIE1BVENIIE1BWCBNQVhBIE1BWElGUyBNREVURVJNIE1EVVJBVElPTiBNRURJQU4gTUlEIE1JREJzIE1JTiBNSU5JRlMgTUlOQSBNSU5VVEUgTUlOVkVSU0UgTUlSUiBNTVVMVCBNT0QgTU9ERSBNT0RFLk1VTFQgTU9ERS5TTkdMIE1PTlRIIE1ST1VORCBNVUxUSU5PTUlBTCBNVU5JVCBOIE5BIE5FR0JJTk9NLkRJU1QgTkVHQklOT01ESVNUIE5FVFdPUktEQVlTIE5FVFdPUktEQVlTLklOVEwgTk9NSU5BTCBOT1JNLkRJU1QgTk9STURJU1QgTk9STUlOViBOT1JNLklOViBOT1JNLlMuRElTVCBOT1JNU0RJU1QgTk9STS5TLklOViBOT1JNU0lOViBOT1QgTk9XIE5QRVIgTlBWIE5VTUJFUlZBTFVFIE9DVDJCSU4gT0NUMkRFQyBPQ1QySEVYIE9ERCBPRERGUFJJQ0UgT0RERllJRUxEIE9ERExQUklDRSBPRERMWUlFTEQgT0ZGU0VUIE9SIFBEVVJBVElPTiBQRUFSU09OIFBFUkNFTlRJTEUuRVhDIFBFUkNFTlRJTEUuSU5DIFBFUkNFTlRJTEUgUEVSQ0VOVFJBTksuRVhDIFBFUkNFTlRSQU5LLklOQyBQRVJDRU5UUkFOSyBQRVJNVVQgUEVSTVVUQVRJT05BIFBISSBQSE9ORVRJQyBQSSBQTVQgUE9JU1NPTi5ESVNUIFBPSVNTT04gUE9XRVIgUFBNVCBQUklDRSBQUklDRURJU0MgUFJJQ0VNQVQgUFJPQiBQUk9EVUNUIFBST1BFUiBQViBRVUFSVElMRSBRVUFSVElMRS5FWEMgUVVBUlRJTEUuSU5DIFFVT1RJRU5UIFJBRElBTlMgUkFORCBSQU5EQkVUV0VFTiBSQU5LLkFWRyBSQU5LLkVRIFJBTksgUkFURSBSRUNFSVZFRCBSRUdJU1RFUi5JRCBSRVBMQUNFIFJFUExBQ0VCIFJFUFQgUklHSFQgUklHSFRCIFJPTUFOIFJPVU5EIFJPVU5ERE9XTiBST1VORFVQIFJPVyBST1dTIFJSSSBSU1EgUlREIFNFQVJDSCBTRUFSQ0hCIFNFQyBTRUNIIFNFQ09ORCBTRVJJRVNTVU0gU0hFRVQgU0hFRVRTIFNJR04gU0lOIFNJTkggU0tFVyBTS0VXLlAgU0xOIFNMT1BFIFNNQUxMIFNRTC5SRVFVRVNUIFNRUlQgU1FSVFBJIFNUQU5EQVJESVpFIFNUREVWIFNUREVWLlAgU1RERVYuUyBTVERFVkEgU1RERVZQIFNUREVWUEEgU1RFWVggU1VCU1RJVFVURSBTVUJUT1RBTCBTVU0gU1VNSUYgU1VNSUZTIFNVTVBST0RVQ1QgU1VNU1EgU1VNWDJNWTIgU1VNWDJQWTIgU1VNWE1ZMiBTV0lUQ0ggU1lEIFQgVEFOIFRBTkggVEJJTExFUSBUQklMTFBSSUNFIFRCSUxMWUlFTEQgVC5ESVNUIFQuRElTVC4yVCBULkRJU1QuUlQgVERJU1QgVEVYVCBURVhUSk9JTiBUSU1FIFRJTUVWQUxVRSBULklOViBULklOVi4yVCBUSU5WIFRPREFZIFRSQU5TUE9TRSBUUkVORCBUUklNIFRSSU1NRUFOIFRSVUV8MCBUUlVOQyBULlRFU1QgVFRFU1QgVFlQRSBVTklDSEFSIFVOSUNPREUgVVBQRVIgVkFMVUUgVkFSIFZBUi5QIFZBUi5TIFZBUkEgVkFSUCBWQVJQQSBWREIgVkxPT0tVUCBXRUJTRVJWSUNFIFdFRUtEQVkgV0VFS05VTSBXRUlCVUxMIFdFSUJVTEwuRElTVCBXT1JLREFZIFdPUktEQVkuSU5UTCBYSVJSIFhOUFYgWE9SIFlFQVIgWUVBUkZSQUMgWUlFTEQgWUlFTERESVNDIFlJRUxETUFUIFouVEVTVCBaVEVTVCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSBiZWdpbm5pbmcgZXF1YWwgc2lnbiBmb3VuZCBpbiBFeGNlbCBmb3JtdWxhIGV4YW1wbGVzICovXG4gICAgICAgIGJlZ2luOiAvXj0vLFxuICAgICAgICBlbmQ6IC9bXj1dLywgcmV0dXJuRW5kOiB0cnVlLCBpbGxlZ2FsOiAvPS8sIC8qIG9ubHkgYWxsb3cgc2luZ2xlIGVxdWFsIHNpZ24gYXQgZnJvbnQgb2YgbGluZSAqL1xuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLyogdGVjaG5pY2FsbHksIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gMiBsZXR0ZXJzIGluIGNvbHVtbiBuYW1lcywgYnV0IHRoaXMgcHJldmVudHMgY29uZmxpY3Qgd2l0aCBzb21lIGtleXdvcmRzICovXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSBzaW5nbGUgY2VsbCAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1xcYltBLVpdezEsMn1cXGQrXFxiLyxcbiAgICAgICAgZW5kOiAvW15cXGRdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiBtYXRjaGVzIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2Ugb2YgY2VsbHMgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC9bQS1aXXswLDJ9XFxkKjpbQS1aXXswLDJ9XFxkKi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJSk/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLyogRXhjZWwgZm9ybXVsYSBjb21tZW50cyBhcmUgZG9uZSBieSBwdXR0aW5nIHRoZSBjb21tZW50IGluIGEgZnVuY3Rpb24gY2FsbCB0byBOKCkgKi9cbiAgICAgIGhsanMuQ09NTUVOVCgvXFxiTlxcKC8sL1xcKS8sXG4gICAgICB7XG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1xcbi9cbiAgICAgIH0pXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvW15cXHUyNDAxXFx1MDAwMV0rLyxcbiAgICAgIGVuZDogL1tcXHUyNDAxXFx1MDAwMV0vLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFteXFx1MjQwMVxcdTAwMDE9XSspLyxcbiAgICAgICAgZW5kOiAvPShbXlxcdTI0MDFcXHUwMDAxPV0rKS8sXG4gICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmV0dXJuQmVnaW46IGZhbHNlLFxuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgZW5kOiAvKFtcXHUyNDAxXFx1MDAwMV0pLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnXG4gICAgICB9XVxuICAgIH1dLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWVcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuXG4gICAgdmFyIENIQVIgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvJygufFxcXFxbeFh1VV1bYS16QS1aMC05XSspJy9cbiAgICB9O1xuXG4gICAgdmFyIFNUUklORyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgdmFyIE5BTUUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46IC9bXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdW15cXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XSt8W14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7PV0vXG4gICAgfTtcblxuICAgIHZhciBNRVRIT0QgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2RlZicsXG4gICAgICAgIGVuZDogL1s6PXtcXFsoXFxuO10vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW05BTUVdXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZScsXG4gICAgICAgICAgICBrZXl3b3JkOiAnY2FzZSBjbGFzcyBkZWYgZWxzZSBlbnVtIGlmIGltcGwgaW1wb3J0IGluIGxhdCByZWwgaW5kZXggbGV0IG1hdGNoIG5hbWVzcGFjZSBzd2l0Y2ggdHlwZSB5aWVsZCB3aXRoJ1xuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIENIQVIsXG4gICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICBNRVRIT0QsXG4gICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6ICcuRmFsc2UuIC5UcnVlLicsXG4gICAga2V5d29yZDogJ2tpbmQgZG8gd2hpbGUgcHJpdmF0ZSBjYWxsIGludHJpbnNpYyB3aGVyZSBlbHNld2hlcmUgJyArXG4gICAgICAndHlwZSBlbmR0eXBlIGVuZG1vZHVsZSBlbmRzZWxlY3QgZW5kaW50ZXJmYWNlIGVuZCBlbmRkbyBlbmRpZiBpZiBmb3JhbGwgZW5kZm9yYWxsIG9ubHkgY29udGFpbnMgZGVmYXVsdCByZXR1cm4gc3RvcCB0aGVuICcgK1xuICAgICAgJ3B1YmxpYyBzdWJyb3V0aW5lfDEwIGZ1bmN0aW9uIHByb2dyYW0gLmFuZC4gLm9yLiAubm90LiAubGUuIC5lcS4gLmdlLiAuZ3QuIC5sdC4gJyArXG4gICAgICAnZ290byBzYXZlIGVsc2UgdXNlIG1vZHVsZSBzZWxlY3QgY2FzZSAnICtcbiAgICAgICdhY2Nlc3MgYmxhbmsgZGlyZWN0IGV4aXN0IGZpbGUgZm10IGZvcm0gZm9ybWF0dGVkIGlvc3RhdCBuYW1lIG5hbWVkIG5leHRyZWMgbnVtYmVyIG9wZW5lZCByZWMgcmVjbCBzZXF1ZW50aWFsIHN0YXR1cyB1bmZvcm1hdHRlZCB1bml0ICcgK1xuICAgICAgJ2NvbnRpbnVlIGZvcm1hdCBwYXVzZSBjeWNsZSBleGl0ICcgK1xuICAgICAgJ2NfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgZmx1c2ggd2FpdCBkZWNpbWFsIHJvdW5kIGlvbXNnICcgK1xuICAgICAgJ3N5bmNocm9ub3VzIG5vcGFzcyBub25fb3ZlcnJpZGFibGUgcGFzcyBwcm90ZWN0ZWQgdm9sYXRpbGUgYWJzdHJhY3QgZXh0ZW5kcyBpbXBvcnQgJyArXG4gICAgICAnbm9uX2ludHJpbnNpYyB2YWx1ZSBkZWZlcnJlZCBnZW5lcmljIGZpbmFsIGVudW1lcmF0b3IgY2xhc3MgYXNzb2NpYXRlIGJpbmQgZW51bSAnICtcbiAgICAgICdjX2ludCBjX3Nob3J0IGNfbG9uZyBjX2xvbmdfbG9uZyBjX3NpZ25lZF9jaGFyIGNfc2l6ZV90IGNfaW50OF90IGNfaW50MTZfdCBjX2ludDMyX3QgY19pbnQ2NF90IGNfaW50X2xlYXN0OF90IGNfaW50X2xlYXN0MTZfdCAnICtcbiAgICAgICdjX2ludF9sZWFzdDMyX3QgY19pbnRfbGVhc3Q2NF90IGNfaW50X2Zhc3Q4X3QgY19pbnRfZmFzdDE2X3QgY19pbnRfZmFzdDMyX3QgY19pbnRfZmFzdDY0X3QgY19pbnRtYXhfdCBDX2ludHB0cl90IGNfZmxvYXQgY19kb3VibGUgJyArXG4gICAgICAnY19sb25nX2RvdWJsZSBjX2Zsb2F0X2NvbXBsZXggY19kb3VibGVfY29tcGxleCBjX2xvbmdfZG91YmxlX2NvbXBsZXggY19ib29sIGNfY2hhciBjX251bGxfcHRyIGNfbnVsbF9mdW5wdHIgJyArXG4gICAgICAnY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiIGlzb19jX2JpbmRpbmcgY19sb2MgY19mdW5sb2MgY19hc3NvY2lhdGVkICBjX2ZfcG9pbnRlciAnICtcbiAgICAgICdjX3B0ciBjX2Z1bnB0ciBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yICcgK1xuICAgICAgJ251bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0IGNfZl9wcm9jcG9pbnRlciBpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sICcgK1xuICAgICAgJ2llZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlIG5ld3VuaXQgY29udGlndW91cyByZWN1cnNpdmUgJyArXG4gICAgICAncGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUgZW9yIGFkdmFuY2Ugbm1sIGludGVyZmFjZSBwcm9jZWR1cmUgbmFtZWxpc3QgaW5jbHVkZSBzZXF1ZW5jZSBlbGVtZW50YWwgcHVyZSAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgY2hhcmFjdGVyIGNvbXBsZXggbG9naWNhbCBkaW1lbnNpb24gYWxsb2NhdGFibGV8MTAgcGFyYW1ldGVyICcgK1xuICAgICAgJ2V4dGVybmFsIGltcGxpY2l0fDEwIG5vbmUgZG91YmxlIHByZWNpc2lvbiBhc3NpZ24gaW50ZW50IG9wdGlvbmFsIHBvaW50ZXIgJyArXG4gICAgICAndGFyZ2V0IGluIG91dCBjb21tb24gZXF1aXZhbGVuY2UgZGF0YScsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICcgK1xuICAgICAgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJyArXG4gICAgICAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICcgK1xuICAgICAgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJyArXG4gICAgICAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJyArXG4gICAgICAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJyArXG4gICAgICAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJyArXG4gICAgICAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnICtcbiAgICAgICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICcgK1xuICAgICAgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICcgK1xuICAgICAgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJyArXG4gICAgICAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICcgK1xuICAgICAgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJyArXG4gICAgICAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mJyAgK1xuICAgICAgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnICtcbiAgICAgICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICcgK1xuICAgICAgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnICtcbiAgICAgICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UnXG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ2Y5MCcsICdmOTUnXSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLCBQQVJBTVNdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7cmVsZXZhbmNlOiAwfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKD89XFxcXGJ8XFxcXCt8XFxcXC18XFxcXC4pKD89XFxcXC5cXFxcZHxcXFxcZCkoPzpcXFxcZCspPyg/OlxcXFwuP1xcXFxkKikoPzpbZGVdWystXT9cXFxcZCspP1xcXFxiXFxcXC4/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFRZUEVQQVJBTSA9IHtcbiAgICBiZWdpbjogJzwnLCBlbmQ6ICc+JyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvJ1thLXpBLVowLTlfXSsvfSlcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2ZzJ10sXG4gICAga2V5d29yZHM6XG4gICAgICAnYWJzdHJhY3QgYW5kIGFzIGFzc2VydCBiYXNlIGJlZ2luIGNsYXNzIGRlZmF1bHQgZGVsZWdhdGUgZG8gZG9uZSAnICtcbiAgICAgICdkb3duY2FzdCBkb3dudG8gZWxpZiBlbHNlIGVuZCBleGNlcHRpb24gZXh0ZXJuIGZhbHNlIGZpbmFsbHkgZm9yICcgK1xuICAgICAgJ2Z1biBmdW5jdGlvbiBnbG9iYWwgaWYgaW4gaW5oZXJpdCBpbmxpbmUgaW50ZXJmYWNlIGludGVybmFsIGxhenkgbGV0ICcgK1xuICAgICAgJ21hdGNoIG1lbWJlciBtb2R1bGUgbXV0YWJsZSBuYW1lc3BhY2UgbmV3IG51bGwgb2Ygb3BlbiBvciAnICtcbiAgICAgICdvdmVycmlkZSBwcml2YXRlIHB1YmxpYyByZWMgcmV0dXJuIHNpZyBzdGF0aWMgc3RydWN0IHRoZW4gdG8gJyArXG4gICAgICAndHJ1ZSB0cnkgdHlwZSB1cGNhc3QgdXNlIHZhbCB2b2lkIHdoZW4gd2hpbGUgd2l0aCB5aWVsZCcsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gbW9uYWQgYnVpbGRlciBrZXl3b3JkcyAobWF0Y2hlcyBiZWZvcmUgbm9uLWJhbmcga3dzKVxuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46IC9cXGIoeWllbGR8cmV0dXJufGxldHxkbykhL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdAXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKFxcXFwqJywgJ1xcXFwqXFxcXCknKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHlwZScsIGVuZDogJ1xcXFwofD18JCcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAgVFlQRVBBUkFNXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbPCcsIGVuZDogJz5cXFxcXScsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXEIoXFwnW0EtWmEtel0pXFxcXGInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgJ2tleXdvcmQnOlxuICAgICAgJ2Fib3J0IGFjcm9ueW0gYWNyb255bXMgYWxpYXMgYWxsIGFuZCBhc3NpZ24gYmluYXJ5IGNhcmQgZGlhZyBkaXNwbGF5ICcgK1xuICAgICAgJ2Vsc2UgZXEgZmlsZSBmaWxlcyBmb3IgZnJlZSBnZSBndCBpZiBpbnRlZ2VyIGxlIGxvb3AgbHQgbWF4aW1pemluZyAnICtcbiAgICAgICdtaW5pbWl6aW5nIG1vZGVsIG1vZGVscyBuZSBuZWdhdGl2ZSBubyBub3Qgb3B0aW9uIG9wdGlvbnMgb3Igb3JkICcgK1xuICAgICAgJ3Bvc2l0aXZlIHByb2QgcHV0IHB1dHBhZ2UgcHV0dGwgcmVwZWF0IHNhbWVhcyBzZW1pY29udCBzZW1paW50IHNtYXggJyArXG4gICAgICAnc21pbiBzb2x2ZSBzb3MxIHNvczIgc3VtIHN5c3RlbSB0YWJsZSB0aGVuIHVudGlsIHVzaW5nIHdoaWxlIHhvciB5ZXMnLFxuICAgICdsaXRlcmFsJzogJ2VwcyBpbmYgbmEnLFxuICAgICdidWlsdC1pbic6XG4gICAgICAnYWJzIGFyY2NvcyBhcmNzaW4gYXJjdGFuIGFyY3RhbjIgQmV0YSBiZXRhUmVnIGJpbm9taWFsIGNlaWwgY2VudHJvcHkgJyArXG4gICAgICAnY29zIGNvc2ggY3ZQb3dlciBkaXYgZGl2MCBlRGlzdCBlbnRyb3B5IGVycm9yZiBleGVjU2VlZCBleHAgZmFjdCAnICtcbiAgICAgICdmbG9vciBmcmFjIGdhbW1hIGdhbW1hUmVnIGxvZyBsb2dCZXRhIGxvZ0dhbW1hIGxvZzEwIGxvZzIgbWFwVmFsIG1heCAnICtcbiAgICAgICdtaW4gbW9kIG5jcENNIG5jcEYgbmNwVlVwb3cgbmNwVlVzaW4gbm9ybWFsIHBpIHBvbHkgcG93ZXIgJyArXG4gICAgICAncmFuZEJpbm9taWFsIHJhbmRMaW5lYXIgcmFuZFRyaWFuZ2xlIHJvdW5kIHJQb3dlciBzaWdtb2lkIHNpZ24gJyArXG4gICAgICAnc2lnblBvd2VyIHNpbiBzaW5oIHNsZXhwIHNsbG9nMTAgc2xyZWMgc3FleHAgc3Fsb2cxMCBzcXIgc3FyZWMgc3FydCAnICtcbiAgICAgICd0YW4gdGFuaCB0cnVuYyB1bmlmb3JtIHVuaWZvcm1JbnQgdmNQb3dlciBib29sX2FuZCBib29sX2VxdiBib29sX2ltcCAnICtcbiAgICAgICdib29sX25vdCBib29sX29yIGJvb2xfeG9yIGlmVGhlbiByZWxfZXEgcmVsX2dlIHJlbF9ndCByZWxfbGUgcmVsX2x0ICcgK1xuICAgICAgJ3JlbF9uZSBnZGF5IGdkb3cgZ2hvdXIgZ2xlYXAgZ21pbGxpc2VjIGdtaW51dGUgZ21vbnRoIGdzZWNvbmQgZ3llYXIgJyArXG4gICAgICAnamRhdGUgam5vdyBqc3RhcnQganRpbWUgZXJyb3JMZXZlbCBleGVjRXJyb3IgZ2Ftc1JlbGVhc2UgZ2Ftc1ZlcnNpb24gJyArXG4gICAgICAnaGFuZGxlQ29sbGVjdCBoYW5kbGVEZWxldGUgaGFuZGxlU3RhdHVzIGhhbmRsZVN1Ym1pdCBoZWFwRnJlZSAnICtcbiAgICAgICdoZWFwTGltaXQgaGVhcFNpemUgam9iSGFuZGxlIGpvYktpbGwgam9iU3RhdHVzIGpvYlRlcm1pbmF0ZSAnICtcbiAgICAgICdsaWNlbnNlTGV2ZWwgbGljZW5zZVN0YXR1cyBtYXhFeGVjRXJyb3Igc2xlZXAgdGltZUNsb3NlIHRpbWVDb21wICcgK1xuICAgICAgJ3RpbWVFbGFwc2VkIHRpbWVFeGVjIHRpbWVTdGFydCdcbiAgfTtcbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgfTtcbiAgdmFyIFNZTUJPTFMgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFw9W2xnZW54Y109L30sXG4gICAgICB7YmVnaW46IC9cXCQvfSxcbiAgICBdXG4gIH07XG4gIHZhciBRU1RSID0geyAvLyBPbmUtbGluZSBxdW90ZWQgY29tbWVudCBzdHJpbmdcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnXFwnJywgZW5kOiAnXFwnJ30sXG4gICAgICB7YmVnaW46ICdcIicsIGVuZDogJ1wiJ30sXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICB9O1xuICB2YXIgQVNTSUdOTUVOVCA9IHtcbiAgICBiZWdpbjogJy8nLFxuICAgIGVuZDogJy8nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgUVNUUixcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgIF0sXG4gIH07XG4gIHZhciBERVNDVEVYVCA9IHsgLy8gUGFyYW1ldGVyL3NldC92YXJpYWJsZSBkZXNjcmlwdGlvbiB0ZXh0XG4gICAgYmVnaW46IC9bYS16XVthLXowLTlfXSooXFwoW2EtejAtOV8sIF0qXFwpKT9bIFxcdF0rLyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZW5kOiAnJCcsXG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFFTVFIsXG4gICAgICBBU1NJR05NRU5ULFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICAgICAgYmVnaW46IC8oWyBdKlthLXowLTkmIyo9P0A+XFxcXDw6XFwtLCgpJFxcW1xcXV8ue30hKyVeXSspKy8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydnbXMnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKC9eXFwkb250ZXh0LywgL15cXCRvZmZ0ZXh0LyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcJFthLXowLTldKycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhLWtleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICdeXFxcXCRbYS16MC05XSsnLFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXlxcXFwqJywgJyQnKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgLy8gRGVjbGFyYXRpb25zXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6XG4gICAgICAgICAgJ3NldCBzZXRzIHBhcmFtZXRlciBwYXJhbWV0ZXJzIHZhcmlhYmxlIHZhcmlhYmxlcyAnICtcbiAgICAgICAgICAnc2NhbGFyIHNjYWxhcnMgZXF1YXRpb24gZXF1YXRpb25zJyxcbiAgICAgICAgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIEFTU0lHTk1FTlQsXG4gICAgICAgICAgREVTQ1RFWFQsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IC8vIHRhYmxlIGVudmlyb25tZW50XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd0YWJsZScsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIHRhYmxlIGhlYWRlciByb3dcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICd0YWJsZScsXG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbREVTQ1RFWFRdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXConLCAnJCcpLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAvLyBUYWJsZSBkb2VzIG5vdCBjb250YWluIERFU0NURVhUIG9yIEFTU0lHTk1FTlRcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb25zXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9eW2Etel1bYS16MC05XyxcXC0rJyAoKSRdK1xcLnsyfS8sXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7IC8vIEZ1bmN0aW9uIHRpdGxlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlthLXowLTlfXSsvLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBQQVJBTVMsXG4gICAgICAgICAgICAgIFNZTUJPTFMsXG4gICAgICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIFNZTUJPTFMsXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6ICAnYm9vbCBicmVhayBjYWxsIGNhbGxleGUgY2hlY2tpbnRlcnJ1cHQgY2xlYXIgY2xlYXJnIGNsb3NlYWxsIGNscyBjb21sb2cgY29tcGlsZSAnICtcbiAgICAgICAgICAgICAgJ2NvbnRpbnVlIGNyZWF0ZSBkZWJ1ZyBkZWNsYXJlIGRlbGV0ZSBkaXNhYmxlIGRsaWJyYXJ5IGRsbGNhbGwgZG8gZG9zIGVkIGVkaXQgZWxzZSAnICtcbiAgICAgICAgICAgICAgJ2Vsc2VpZiBlbmFibGUgZW5kIGVuZGZvciBlbmRpZiBlbmRwIGVuZG8gZXJyb3Jsb2cgZXJyb3Jsb2dhdCBleHByIGV4dGVybmFsIGZuICcgK1xuICAgICAgICAgICAgICAnZm9yIGZvcm1hdCBnb3RvIGdvc3ViIGdyYXBoIGlmIGtleXdvcmQgbGV0IGxpYiBsaWJyYXJ5IGxpbmUgbG9hZCBsb2FkYXJyYXkgbG9hZGV4ZSAnICtcbiAgICAgICAgICAgICAgJ2xvYWRmIGxvYWRrIGxvYWRtIGxvYWRwIGxvYWRzIGxvYWR4IGxvY2FsIGxvY2F0ZSBsb29wbmV4dGluZGV4IGxwcmludCBscHdpZHRoIGxzaG93ICcgK1xuICAgICAgICAgICAgICAnbWF0cml4IG1zeW0gbmRwY2xleCBuZXcgb3BlbiBvdXRwdXQgb3V0d2lkdGggcGxvdCBwbG90c3ltIHBvcCBwcmNzbiBwcmludCAnICtcbiAgICAgICAgICAgICAgJ3ByaW50ZG9zIHByb2MgcHVzaCByZXRwIHJldHVybiBybmRjb24gcm5kbW9kIHJuZG11bHQgcm5kc2VlZCBydW4gc2F2ZSBzYXZlYWxsIHNjcmVlbiAnICtcbiAgICAgICAgICAgICAgJ3Njcm9sbCBzZXRhcnJheSBzaG93IHNwYXJzZSBzdG9wIHN0cmluZyBzdHJ1Y3Qgc3lzdGVtIHRyYWNlIHRyYXAgdGhyZWFkZm9yICcgK1xuICAgICAgICAgICAgICAndGhyZWFkZW5kZm9yIHRocmVhZGJlZ2luIHRocmVhZGpvaW4gdGhyZWFkc3RhdCB0aHJlYWRlbmQgdW50aWwgdXNlIHdoaWxlIHdpbnByaW50ICcgK1xuICAgICAgICAgICAgICAnbmUgZ2UgbGUgZ3QgbHQgYW5kIHhvciBvciBub3QgZXEgZXF2JyxcbiAgICBidWlsdF9pbjogJ2FicyBhY2YgYWNvbmNhdCBhZXllIGFtYXggYW1lYW4gQW1lcmljYW5CaW5vbUNhbGwgQW1lcmljYW5CaW5vbUNhbGxfR3JlZWtzIEFtZXJpY2FuQmlub21DYWxsX0ltcFZvbCAnICtcbiAgICAgICAgICAgICAgJ0FtZXJpY2FuQmlub21QdXQgQW1lcmljYW5CaW5vbVB1dF9HcmVla3MgQW1lcmljYW5CaW5vbVB1dF9JbXBWb2wgQW1lcmljYW5CU0NhbGwgQW1lcmljYW5CU0NhbGxfR3JlZWtzICcgK1xuICAgICAgICAgICAgICAnQW1lcmljYW5CU0NhbGxfSW1wVm9sIEFtZXJpY2FuQlNQdXQgQW1lcmljYW5CU1B1dF9HcmVla3MgQW1lcmljYW5CU1B1dF9JbXBWb2wgYW1pbiBhbXVsdCBhbm5vdGF0aW9uR2V0RGVmYXVsdHMgJyArXG4gICAgICAgICAgICAgICdhbm5vdGF0aW9uU2V0QmtkIGFubm90YXRpb25TZXRGb250IGFubm90YXRpb25TZXRMaW5lQ29sb3IgYW5ub3RhdGlvblNldExpbmVTdHlsZSBhbm5vdGF0aW9uU2V0TGluZVRoaWNrbmVzcyAnICtcbiAgICAgICAgICAgICAgJ2FubnVhbFRyYWRpbmdEYXlzIGFyY2NvcyBhcmNzaW4gYXJlc2hhcGUgYXJyYXlhbGxvYyBhcnJheWluZGV4IGFycmF5aW5pdCBhcnJheXRvbWF0IGFzY2lpbG9hZCBhc2NsYWJlbCBhc3RkICcgK1xuICAgICAgICAgICAgICAnYXN0ZHMgYXN1bSBhdGFuIGF0YW4yIGF0cmFuc3Bvc2UgYXhtYXJnaW4gYmFsYW5jZSBiYW5kIGJhbmRjaG9sIGJhbmRjaG9sc29sIGJhbmRsdHNvbCBiYW5kcnYgYmFuZHNvbHBkIGJhciAnICtcbiAgICAgICAgICAgICAgJ2Jhc2UxMCBiZWd3aW5kIGJlc3NlbGogYmVzc2VseSBiZXRhIGJveCBib3hjb3ggY2RmQmV0YSBjZGZCZXRhSW52IGNkZkJpbm9taWFsIGNkZkJpbm9taWFsSW52IGNkZkJ2biBjZGZCdm4yICcgK1xuICAgICAgICAgICAgICAnY2RmQnZuMmUgY2RmQ2F1Y2h5IGNkZkNhdWNoeUludiBjZGZDaGljIGNkZkNoaWkgY2RmQ2hpbmMgY2RmQ2hpbmNJbnYgY2RmRXhwIGNkZkV4cEludiBjZGZGYyBjZGZGbmMgY2RmRm5jSW52ICcgK1xuICAgICAgICAgICAgICAnY2RmR2FtIGNkZkdlblBhcmV0byBjZGZIeXBlckdlbyBjZGZMYXBsYWNlIGNkZkxhcGxhY2VJbnYgY2RmTG9naXN0aWMgY2RmTG9naXN0aWNJbnYgY2RmbUNvbnRyb2xDcmVhdGUgY2RmTXZuICcgK1xuICAgICAgICAgICAgICAnY2RmTXZuMmUgY2RmTXZuY2UgY2RmTXZuZSBjZGZNdnQyZSBjZGZNdnRjZSBjZGZNdnRlIGNkZk4gY2RmTjIgY2RmTmMgY2RmTmVnQmlub21pYWwgY2RmTmVnQmlub21pYWxJbnYgY2RmTmkgJyArXG4gICAgICAgICAgICAgICdjZGZQb2lzc29uIGNkZlBvaXNzb25JbnYgY2RmUmF5bGVpZ2ggY2RmUmF5bGVpZ2hJbnYgY2RmVGMgY2RmVGNpIGNkZlRuYyBjZGZUdm4gY2RmV2VpYnVsbCBjZGZXZWlidWxsSW52IGNkaXIgJyArXG4gICAgICAgICAgICAgICdjZWlsIENoYW5nZURpciBjaGRpciBjaGlCYXJTcXVhcmUgY2hvbCBjaG9sZG4gY2hvbHNvbCBjaG9sdXAgY2hycyBjbG9zZSBjb2RlIGNvbHMgY29sc2YgY29tYmluYXRlIGNvbWJpbmF0ZWQgJyArXG4gICAgICAgICAgICAgICdjb21wbGV4IGNvbiBjb25kIGNvbmogY29ucyBDb25TY29yZSBjb250b3VyIGNvbnYgY29udmVydHNhdG9zdHIgY29udmVydHN0cnRvc2EgY29ycm0gY29ycm1zIGNvcnJ2YyBjb3JyeCBjb3JyeHMgJyArXG4gICAgICAgICAgICAgICdjb3MgY29zaCBjb3VudHMgY291bnR3dHMgY3Jvc3NwcmQgY3JvdXQgY3JvdXRwIGNzcmNvbCBjc3JsaW4gY3N2UmVhZE0gY3N2UmVhZFNBIGN1bXByb2RjIGN1bXN1bWMgY3VydmUgY3Z0b3MgJyArXG4gICAgICAgICAgICAgICdkYXRhY3JlYXRlIGRhdGFjcmVhdGVjb21wbGV4IGRhdGFsaXN0IGRhdGFsb2FkIGRhdGFsb29wIGRhdGFvcGVuIGRhdGFzYXZlIGRhdGUgZGF0ZXN0ciBkYXRlc3RyaW5nIGRhdGVzdHJ5bWQgJyArXG4gICAgICAgICAgICAgICdkYXlpbnlyIGRheW9md2VlayBkYkFkZERhdGFiYXNlIGRiQ2xvc2UgZGJDb21taXQgZGJDcmVhdGVRdWVyeSBkYkV4ZWNRdWVyeSBkYkdldENvbm5lY3RPcHRpb25zIGRiR2V0RGF0YWJhc2VOYW1lICcgK1xuICAgICAgICAgICAgICAnZGJHZXREcml2ZXJOYW1lIGRiR2V0RHJpdmVycyBkYkdldEhvc3ROYW1lIGRiR2V0TGFzdEVycm9yTnVtIGRiR2V0TGFzdEVycm9yVGV4dCBkYkdldE51bWVyaWNhbFByZWNQb2xpY3kgJyArXG4gICAgICAgICAgICAgICdkYkdldFBhc3N3b3JkIGRiR2V0UG9ydCBkYkdldFRhYmxlSGVhZGVycyBkYkdldFRhYmxlcyBkYkdldFVzZXJOYW1lIGRiSGFzRmVhdHVyZSBkYklzRHJpdmVyQXZhaWxhYmxlIGRiSXNPcGVuICcgK1xuICAgICAgICAgICAgICAnZGJJc09wZW5FcnJvciBkYk9wZW4gZGJRdWVyeUJpbmRWYWx1ZSBkYlF1ZXJ5Q2xlYXIgZGJRdWVyeUNvbHMgZGJRdWVyeUV4ZWNQcmVwYXJlZCBkYlF1ZXJ5RmV0Y2hBbGxNIGRiUXVlcnlGZXRjaEFsbFNBICcgK1xuICAgICAgICAgICAgICAnZGJRdWVyeUZldGNoT25lTSBkYlF1ZXJ5RmV0Y2hPbmVTQSBkYlF1ZXJ5RmluaXNoIGRiUXVlcnlHZXRCb3VuZFZhbHVlIGRiUXVlcnlHZXRCb3VuZFZhbHVlcyBkYlF1ZXJ5R2V0RmllbGQgJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5R2V0TGFzdEVycm9yTnVtIGRiUXVlcnlHZXRMYXN0RXJyb3JUZXh0IGRiUXVlcnlHZXRMYXN0SW5zZXJ0SUQgZGJRdWVyeUdldExhc3RRdWVyeSBkYlF1ZXJ5R2V0UG9zaXRpb24gJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5SXNBY3RpdmUgZGJRdWVyeUlzRm9yd2FyZE9ubHkgZGJRdWVyeUlzTnVsbCBkYlF1ZXJ5SXNTZWxlY3QgZGJRdWVyeUlzVmFsaWQgZGJRdWVyeVByZXBhcmUgZGJRdWVyeVJvd3MgJyArXG4gICAgICAgICAgICAgICdkYlF1ZXJ5U2VlayBkYlF1ZXJ5U2Vla0ZpcnN0IGRiUXVlcnlTZWVrTGFzdCBkYlF1ZXJ5U2Vla05leHQgZGJRdWVyeVNlZWtQcmV2aW91cyBkYlF1ZXJ5U2V0Rm9yd2FyZE9ubHkgJyArXG4gICAgICAgICAgICAgICdkYlJlbW92ZURhdGFiYXNlIGRiUm9sbGJhY2sgZGJTZXRDb25uZWN0T3B0aW9ucyBkYlNldERhdGFiYXNlTmFtZSBkYlNldEhvc3ROYW1lIGRiU2V0TnVtZXJpY2FsUHJlY1BvbGljeSAnICtcbiAgICAgICAgICAgICAgJ2RiU2V0UG9ydCBkYlNldFVzZXJOYW1lIGRiVHJhbnNhY3Rpb24gRGVsZXRlRmlsZSBkZWxpZiBkZWxyb3dzIGRlbnNlVG9TcCBkZW5zZVRvU3BSRSBkZW5Ub1plcm8gZGVzaWduIGRldCBkZXRsICcgK1xuICAgICAgICAgICAgICAnZGZmdCBkZmZ0aSBkaWFnIGRpYWdydiBkaWdhbW1hIGRvc3dpbiBET1NXaW5DbG9zZWFsbCBET1NXaW5PcGVuIGRvdGZlcSBkb3RmZXFtdCBkb3RmZ2UgZG90ZmdlbXQgZG90Zmd0IGRvdGZndG10ICcgK1xuICAgICAgICAgICAgICAnZG90ZmxlIGRvdGZsZW10IGRvdGZsdCBkb3RmbHRtdCBkb3RmbmUgZG90Zm5lbXQgZHJhdyBkcm9wIGRzQ3JlYXRlIGRzdGF0IGRzdGF0bXQgZHN0YXRtdENvbnRyb2xDcmVhdGUgZHRkYXRlIGR0ZGF5ICcgK1xuICAgICAgICAgICAgICAnZHR0aW1lIGR0dG9kdHYgZHR0b3N0ciBkdHRvdXRjIGR0dm5vcm1hbCBkdHZ0b2R0IGR0dnRvdXRjIGR1bW15IGR1bW15YnIgZHVtbXlkbiBlaWcgZWlnaCBlaWdodiBlaWd2IGVsYXBzZWRUcmFkaW5nRGF5cyAnICtcbiAgICAgICAgICAgICAgJ2VuZHdpbmQgZW52Z2V0IGVvZiBlcVNvbHZlIGVxU29sdmVtdCBlcVNvbHZlbXRDb250cm9sQ3JlYXRlIGVxU29sdmVtdE91dENyZWF0ZSBlcVNvbHZlc2V0IGVyZiBlcmZjIGVyZmNjcGx4IGVyZmNwbHggZXJyb3IgJyArXG4gICAgICAgICAgICAgICdldGRheXMgZXRoc2VjIGV0c3RyIEV1cm9wZWFuQmlub21DYWxsIEV1cm9wZWFuQmlub21DYWxsX0dyZWVrcyBFdXJvcGVhbkJpbm9tQ2FsbF9JbXBWb2wgRXVyb3BlYW5CaW5vbVB1dCAnICtcbiAgICAgICAgICAgICAgJ0V1cm9wZWFuQmlub21QdXRfR3JlZWtzIEV1cm9wZWFuQmlub21QdXRfSW1wVm9sIEV1cm9wZWFuQlNDYWxsIEV1cm9wZWFuQlNDYWxsX0dyZWVrcyBFdXJvcGVhbkJTQ2FsbF9JbXBWb2wgJyArXG4gICAgICAgICAgICAgICdFdXJvcGVhbkJTUHV0IEV1cm9wZWFuQlNQdXRfR3JlZWtzIEV1cm9wZWFuQlNQdXRfSW1wVm9sIGV4Y3RzbXBsIGV4ZWMgZXhlY2JnIGV4cCBleHRlcm4gZXllIGZjaGVja2VyciBmY2xlYXJlcnIgZmVxICcgK1xuICAgICAgICAgICAgICAnZmVxbXQgZmZsdXNoIGZmdCBmZnRpIGZmdG0gZmZ0bWkgZmZ0biBmZ2UgZmdlbXQgZmdldHMgZmdldHNhIGZnZXRzYXQgZmdldHN0IGZndCBmZ3RtdCBmaWxlaW5mbyBmaWxlc2EgZmxlIGZsZW10ICcgK1xuICAgICAgICAgICAgICAnZmxvb3IgZmx0IGZsdG10IGZtb2QgZm5lIGZuZW10IGZvbnRzIGZvcGVuIGZvcm1hdGN2IGZvcm1hdG52IGZwdXRzIGZwdXRzdCBmc2VlayBmc3RyZXJyb3IgZnRlbGwgZnRvY3YgZnRvcyBmdG9zdHJDICcgK1xuICAgICAgICAgICAgICAnZ2FtbWEgZ2FtbWFjcGx4IGdhbW1haWkgZ2F1c3NldCBnZGFBcHBlbmQgZ2RhQ3JlYXRlIGdkYURTdGF0IGdkYURTdGF0TWF0IGdkYUdldEluZGV4IGdkYUdldE5hbWUgZ2RhR2V0TmFtZXMgZ2RhR2V0T3JkZXJzICcgK1xuICAgICAgICAgICAgICAnZ2RhR2V0VHlwZSBnZGFHZXRUeXBlcyBnZGFHZXRWYXJJbmZvIGdkYUlzQ3BseCBnZGFMb2FkIGdkYVBhY2sgZ2RhUmVhZCBnZGFSZWFkQnlJbmRleCBnZGFSZWFkU29tZSBnZGFSZWFkU3BhcnNlICcgK1xuICAgICAgICAgICAgICAnZ2RhUmVhZFN0cnVjdCBnZGFSZXBvcnRWYXJJbmZvIGdkYVNhdmUgZ2RhVXBkYXRlIGdkYVVwZGF0ZUFuZFBhY2sgZ2RhVmFycyBnZGFXcml0ZSBnZGFXcml0ZTMyIGdkYVdyaXRlU29tZSBnZXRhcnJheSAnICtcbiAgICAgICAgICAgICAgJ2dldGRpbXMgZ2V0ZiBnZXRHQVVTU2hvbWUgZ2V0bWF0cml4IGdldG1hdHJpeDREIGdldG5hbWUgZ2V0bmFtZWYgZ2V0TmV4dFRyYWRpbmdEYXkgZ2V0TmV4dFdlZWtEYXkgZ2V0bnIgZ2V0b3JkZXJzICcgK1xuICAgICAgICAgICAgICAnZ2V0cGF0aCBnZXRQcmV2aW91c1RyYWRpbmdEYXkgZ2V0UHJldmlvdXNXZWVrRGF5IGdldFJvdyBnZXRzY2FsYXIzRCBnZXRzY2FsYXI0RCBnZXRUclJvdyBnZXR3aW5kIGdsbSBncmFkY3BseCBncmFkTVQgJyArXG4gICAgICAgICAgICAgICdncmFkTVRtIGdyYWRNVFQgZ3JhZE1UVG0gZ3JhZHAgZ3JhcGhwcnQgZ3JhcGhzZXQgaGFzaW1hZyBoZWFkZXIgaGVhZGVybXQgaGVzcyBoZXNzTVQgaGVzc01UZyBoZXNzTVRndyBoZXNzTVRtICcgK1xuICAgICAgICAgICAgICAnaGVzc01UbXcgaGVzc01UVCBoZXNzTVRUZyBoZXNzTVRUZ3cgaGVzc01UVG0gaGVzc01UdyBoZXNzcCBoaXN0IGhpc3RmIGhpc3RwIGhzZWMgaW1hZyBpbmRjdiBpbmRleGNhdCBpbmRpY2VzIGluZGljZXMyICcgK1xuICAgICAgICAgICAgICAnaW5kaWNlc2YgaW5kaWNlc2ZuIGluZG52IGluZHNhdiBpbnRlZ3JhdGUxZCBpbnRlZ3JhdGVDb250cm9sQ3JlYXRlIGludGdyYXQyIGludGdyYXQzIGludGhwMSBpbnRocDIgaW50aHAzIGludGhwNCAnICtcbiAgICAgICAgICAgICAgJ2ludGhwQ29udHJvbENyZWF0ZSBpbnRxdWFkMSBpbnRxdWFkMiBpbnRxdWFkMyBpbnRybGVhdiBpbnRybGVhdnNhIGludHJzZWN0IGludHNpbXAgaW52IGludnBkIGludnN3cCBpc2NwbHggaXNjcGx4ZiAnICtcbiAgICAgICAgICAgICAgJ2lzZGVuIGlzaW5mbmFubWlzcyBpc21pc3Mga2V5IGtleWF2IGtleXcgbGFnIGxhZzEgbGFnbiBsYXBFaWdoYiBsYXBFaWdoaSBsYXBFaWdodmIgbGFwRWlnaHZpIGxhcGdFaWcgbGFwZ0VpZ2ggbGFwZ0VpZ2h2ICcgK1xuICAgICAgICAgICAgICAnbGFwZ0VpZ3YgbGFwZ1NjaHVyIGxhcGdTdmRjc3QgbGFwZ1N2ZHMgbGFwZ1N2ZHN0IGxhcFN2ZGN1c3YgbGFwU3ZkcyBsYXBTdmR1c3YgbGRscCBsZGxzb2wgbGluU29sdmUgbGlzdHdpc2UgbG4gbG5jZGZidm4gJyArXG4gICAgICAgICAgICAgICdsbmNkZmJ2bjIgbG5jZGZtdm4gbG5jZGZuIGxuY2RmbjIgbG5jZGZuYyBsbmZhY3QgbG5nYW1tYWNwbHggbG5wZGZtdm4gbG5wZGZtdnQgbG5wZGZuIGxucGRmdCBsb2FkZCBsb2Fkc3RydWN0IGxvYWR3aW5kICcgK1xuICAgICAgICAgICAgICAnbG9lc3MgbG9lc3NtdCBsb2Vzc210Q29udHJvbENyZWF0ZSBsb2cgbG9nbG9nIGxvZ3ggbG9neSBsb3dlciBsb3dtYXQgbG93bWF0MSBsdHJpc29sIGx1IGx1c29sIG1hY2hFcHNpbG9uIG1ha2UgbWFrZXZhcnMgJyArXG4gICAgICAgICAgICAgICdtYWtld2luZCBtYXJnaW4gbWF0YWxsb2MgbWF0aW5pdCBtYXR0b2FycmF5IG1heGJ5dGVzIG1heGMgbWF4aW5kYyBtYXh2IG1heHZlYyBtYmVzc2VsZWkgbWJlc3NlbGVpMCBtYmVzc2VsZWkxIG1iZXNzZWxpICcgK1xuICAgICAgICAgICAgICAnbWJlc3NlbGkwIG1iZXNzZWxpMSBtZWFuYyBtZWRpYW4gbWVyZ2VieSBtZXJnZXZhciBtaW5jIG1pbmluZGMgbWludiBtaXNzIG1pc3NleCBtaXNzcnYgbW9tZW50IG1vbWVudGQgbW92aW5nYXZlICcgK1xuICAgICAgICAgICAgICAnbW92aW5nYXZlRXhwd2d0IG1vdmluZ2F2ZVdndCBuZXh0aW5kZXggbmV4dG4gbmV4dG5ldm4gbmV4dHdpbmQgbnRvcyBudWxsIG51bGwxIG51bUNvbWJpbmF0aW9ucyBvbHMgb2xzbXQgb2xzbXRDb250cm9sQ3JlYXRlICcgK1xuICAgICAgICAgICAgICAnb2xzcXIgb2xzcXIyIG9sc3FybXQgb25lcyBvcHRuIG9wdG5ldm4gb3J0aCBvdXR0eXAgcGFjZiBwYWNrZWRUb1NwIHBhY2tyIHBhcnNlIHBhdXNlIHBkZkNhdWNoeSBwZGZDaGkgcGRmRXhwIHBkZkdlblBhcmV0byAnICtcbiAgICAgICAgICAgICAgJ3BkZkh5cGVyR2VvIHBkZkxhcGxhY2UgcGRmTG9naXN0aWMgcGRmbiBwZGZQb2lzc29uIHBkZlJheWxlaWdoIHBkZldlaWJ1bGwgcGkgcGludiBwaW52bXQgcGxvdEFkZEFycm93IHBsb3RBZGRCYXIgcGxvdEFkZEJveCAnICtcbiAgICAgICAgICAgICAgJ3Bsb3RBZGRIaXN0IHBsb3RBZGRIaXN0RiBwbG90QWRkSGlzdFAgcGxvdEFkZFBvbGFyIHBsb3RBZGRTY2F0dGVyIHBsb3RBZGRTaGFwZSBwbG90QWRkVGV4dGJveCBwbG90QWRkVFMgcGxvdEFkZFhZIHBsb3RBcmVhICcgK1xuICAgICAgICAgICAgICAncGxvdEJhciBwbG90Qm94IHBsb3RDbGVhckxheW91dCBwbG90Q29udG91ciBwbG90Q3VzdG9tTGF5b3V0IHBsb3RHZXREZWZhdWx0cyBwbG90SGlzdCBwbG90SGlzdEYgcGxvdEhpc3RQIHBsb3RMYXlvdXQgJyArXG4gICAgICAgICAgICAgICdwbG90TG9nTG9nIHBsb3RMb2dYIHBsb3RMb2dZIHBsb3RPcGVuV2luZG93IHBsb3RQb2xhciBwbG90U2F2ZSBwbG90U2NhdHRlciBwbG90U2V0QXhlc1BlbiBwbG90U2V0QmFyIHBsb3RTZXRCYXJGaWxsICcgK1xuICAgICAgICAgICAgICAncGxvdFNldEJhclN0YWNrZWQgcGxvdFNldEJrZENvbG9yIHBsb3RTZXRGaWxsIHBsb3RTZXRHcmlkIHBsb3RTZXRMZWdlbmQgcGxvdFNldExpbmVDb2xvciBwbG90U2V0TGluZVN0eWxlIHBsb3RTZXRMaW5lU3ltYm9sICcgK1xuICAgICAgICAgICAgICAncGxvdFNldExpbmVUaGlja25lc3MgcGxvdFNldE5ld1dpbmRvdyBwbG90U2V0VGl0bGUgcGxvdFNldFdoaWNoWUF4aXMgcGxvdFNldFhBeGlzU2hvdyBwbG90U2V0WExhYmVsIHBsb3RTZXRYUmFuZ2UgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0WFRpY0ludGVydmFsIHBsb3RTZXRYVGljTGFiZWwgcGxvdFNldFlBeGlzU2hvdyBwbG90U2V0WUxhYmVsIHBsb3RTZXRZUmFuZ2UgcGxvdFNldFpBeGlzU2hvdyBwbG90U2V0WkxhYmVsICcgK1xuICAgICAgICAgICAgICAncGxvdFN1cmZhY2UgcGxvdFRTIHBsb3RYWSBwb2xhciBwb2x5Y2hhciBwb2x5ZXZhbCBwb2x5Z2FtbWEgcG9seWludCBwb2x5bWFrZSBwb2x5bWF0IHBvbHltcm9vdCBwb2x5bXVsdCBwb2x5cm9vdCAnICtcbiAgICAgICAgICAgICAgJ3BxZ3dpbiBwcmV2aW91c2luZGV4IHByaW5jb21wIHByaW50Zm0gcHJpbnRmbXQgcHJvZGMgcHNpIHB1dGFycmF5IHB1dGYgcHV0dmFscyBwdkNyZWF0ZSBwdkdldEluZGV4IHB2R2V0UGFyTmFtZXMgJyArXG4gICAgICAgICAgICAgICdwdkdldFBhclZlY3RvciBwdkxlbmd0aCBwdkxpc3QgcHZQYWNrIHB2UGFja2kgcHZQYWNrbSBwdlBhY2ttaSBwdlBhY2tzIHB2UGFja3NpIHB2UGFja3NtIHB2UGFja3NtaSBwdlB1dFBhclZlY3RvciAnICtcbiAgICAgICAgICAgICAgJ3B2VGVzdCBwdlVucGFjayBRTmV3dG9uIFFOZXd0b25tdCBRTmV3dG9ubXRDb250cm9sQ3JlYXRlIFFOZXd0b25tdE91dENyZWF0ZSBRTmV3dG9uU2V0IFFQcm9nIFFQcm9nbXQgUVByb2dtdEluQ3JlYXRlICcgK1xuICAgICAgICAgICAgICAncXFyIHFxcmUgcXFyZXAgcXIgcXJlIHFyZXAgcXJzb2wgcXJ0c29sIHF0eXIgcXR5cmUgcXR5cmVwIHF1YW50aWxlIHF1YW50aWxlZCBxeXIgcXlyZSBxeXJlcCBxeiByYW5rIHJhbmtpbmR4IHJlYWRyICcgK1xuICAgICAgICAgICAgICAncmVhbCByZWNsYXNzaWZ5IHJlY2xhc3NpZnlDdXRzIHJlY29kZSByZWNzZXJhciByZWNzZXJjcCByZWNzZXJyYyByZXJ1biByZXNjYWxlIHJlc2hhcGUgcmV0cyByZXYgcmZmdCByZmZ0aSByZmZ0aXAgcmZmdG4gJyArXG4gICAgICAgICAgICAgICdyZmZ0bnAgcmZmdHAgcm5kQmVybm91bGxpIHJuZEJldGEgcm5kQmlub21pYWwgcm5kQ2F1Y2h5IHJuZENoaVNxdWFyZSBybmRDb24gcm5kQ3JlYXRlU3RhdGUgcm5kRXhwIHJuZEdhbW1hIHJuZEdlbyBybmRHdW1iZWwgJyArXG4gICAgICAgICAgICAgICdybmRIeXBlckdlbyBybmRpIHJuZEtNYmV0YSBybmRLTWdhbSBybmRLTWkgcm5kS01uIHJuZEtNbmIgcm5kS01wIHJuZEtNdSBybmRLTXZtIHJuZExhcGxhY2Ugcm5kTENiZXRhIHJuZExDZ2FtIHJuZExDaSBybmRMQ24gJyArXG4gICAgICAgICAgICAgICdybmRMQ25iIHJuZExDcCBybmRMQ3Ugcm5kTEN2bSBybmRMb2dOb3JtIHJuZE1UdSBybmRNVm4gcm5kTVZ0IHJuZG4gcm5kbmIgcm5kTmVnQmlub21pYWwgcm5kcCBybmRQb2lzc29uIHJuZFJheWxlaWdoICcgK1xuICAgICAgICAgICAgICAncm5kU3RhdGVTa2lwIHJuZHUgcm5kdm0gcm5kV2VpYnVsbCBybmRXaXNoYXJ0IHJvdGF0ZXIgcm91bmQgcm93cyByb3dzZiBycmVmIHNhbXBsZURhdGEgc2F0b3N0ckMgc2F2ZWQgc2F2ZVN0cnVjdCBzYXZld2luZCAnICtcbiAgICAgICAgICAgICAgJ3NjYWxlIHNjYWxlM2Qgc2NhbGVyciBzY2FsaW5mbmFubWlzcyBzY2FsbWlzcyBzY2h0b2Mgc2NodXIgc2VhcmNoc291cmNlcGF0aCBzZWVrciBzZWxlY3Qgc2VsaWYgc2VxYSBzZXFtIHNldGRpZiBzZXRkaWZzYSAnICtcbiAgICAgICAgICAgICAgJ3NldHZhcnMgc2V0dndybW9kZSBzZXR3aW5kIHNoZWxsIHNoaWZ0ciBzaW4gc2luZ2xlaW5kZXggc2luaCBzbGVlcCBzb2xwZCBzb3J0YyBzb3J0Y2Mgc29ydGQgc29ydGhjIHNvcnRoY2Mgc29ydGluZCAnICtcbiAgICAgICAgICAgICAgJ3NvcnRpbmRjIHNvcnRtYyBzb3J0ciBzb3J0cmMgc3BCaWNvbmpHcmFkU29sIHNwQ2hvbCBzcENvbmpHcmFkU29sIHNwQ3JlYXRlIHNwRGVuc2VTdWJtYXQgc3BEaWFnUnZNYXQgc3BFaWd2IHNwRXllIHNwTERMICcgK1xuICAgICAgICAgICAgICAnc3BsaW5lIHNwTFUgc3BOdW1OWkUgc3BPbmVzIHNwcmVhZFNoZWV0UmVhZE0gc3ByZWFkU2hlZXRSZWFkU0Egc3ByZWFkU2hlZXRXcml0ZSBzcFNjYWxlIHNwU3VibWF0IHNwVG9EZW5zZSBzcFRyVERlbnNlICcgK1xuICAgICAgICAgICAgICAnc3BUU2NhbGFyIHNwWmVyb3Mgc3FwU29sdmUgc3FwU29sdmVNVCBzcXBTb2x2ZU1UQ29udHJvbENyZWF0ZSBzcXBTb2x2ZU1UbGFncmFuZ2VDcmVhdGUgc3FwU29sdmVNVG91dENyZWF0ZSBzcXBTb2x2ZVNldCAnICtcbiAgICAgICAgICAgICAgJ3NxcnQgc3RhdGVtZW50cyBzdGRjIHN0ZHNjIHN0b2N2IHN0b2Ygc3RyY29tYmluZSBzdHJpbmR4IHN0cmxlbiBzdHJwdXQgc3RycmluZHggc3Ryc2VjdCBzdHJzcGxpdCBzdHJzcGxpdFBhZCBzdHJ0b2R0ICcgK1xuICAgICAgICAgICAgICAnc3RydG9mIHN0cnRvZmNwbHggc3RydHJpbWwgc3RydHJpbXIgc3RydHJ1bmMgc3RydHJ1bmNsIHN0cnRydW5jcGFkIHN0cnRydW5jciBzdWJtYXQgc3Vic2NhdCBzdWJzdHV0ZSBzdWJ2ZWMgc3VtYyBzdW1yICcgK1xuICAgICAgICAgICAgICAnc3VyZmFjZSBzdmQgc3ZkMSBzdmQyIHN2ZGN1c3Ygc3ZkcyBzdmR1c3Ygc3lzc3RhdGUgdGFiIHRhbiB0YW5oIHRlbXBuYW1lICcgK1xuICAgICAgICAgICAgICAndGltZSB0aW1lZHQgdGltZXN0ciB0aW1ldXRjIHRpdGxlIHRrZjJlcHMgdGtmMnBzIHRvY2FydCB0b2RheWR0IHRvZXBsaXR6IHRva2VuIHRvcG9sYXIgdHJhcGNoayAnICtcbiAgICAgICAgICAgICAgJ3RyaWdhbW1hIHRyaW1yIHRydW5jIHR5cGUgdHlwZWN2IHR5cGVmIHVuaW9uIHVuaW9uc2EgdW5pcWluZHggdW5pcWluZHhzYSB1bmlxdWUgdW5pcXVlc2EgdXBtYXQgdXBtYXQxIHVwcGVyIHV0Y3RvZHQgJyArXG4gICAgICAgICAgICAgICd1dGN0b2R0diB1dHJpc29sIHZhbHMgdmFyQ292TVMgdmFyQ292WFMgdmFyZ2V0IHZhcmdldGwgdmFybWFsbCB2YXJtYXJlcyB2YXJwdXQgdmFycHV0bCB2YXJ0eXBlZiB2Y20gdmNtcyB2Y3ggdmN4cyAnICtcbiAgICAgICAgICAgICAgJ3ZlYyB2ZWNoIHZlY3IgdmVjdG9yIHZnZXQgdmlldyB2aWV3eHl6IHZsaXN0IHZuYW1lY3Ygdm9sdW1lIHZwdXQgdnJlYWQgdnR5cGVjdiB3YWl0IHdhaXRjIHdhbGtpbmRleCB3aGVyZSB3aW5kb3cgJyArXG4gICAgICAgICAgICAgICd3cml0ZXIgeGxhYmVsIHhsc0dldFNoZWV0Q291bnQgeGxzR2V0U2hlZXRTaXplIHhsc0dldFNoZWV0VHlwZXMgeGxzTWFrZVJhbmdlIHhsc1JlYWRNIHhsc1JlYWRTQSB4bHNXcml0ZSB4bHNXcml0ZU0gJyArXG4gICAgICAgICAgICAgICd4bHNXcml0ZVNBIHhwbmQgeHRpY3MgeHkgeHl6IHlsYWJlbCB5dGljcyB6ZXJvcyB6ZXRhIHpsYWJlbCB6dGljcyBjZGZFbXBpcmljYWwgZG90IGg1Y3JlYXRlIGg1b3BlbiBoNXJlYWQgaDVyZWFkQXR0cmlidXRlICcgK1xuICAgICAgICAgICAgICAnaDV3cml0ZSBoNXdyaXRlQXR0cmlidXRlIGxkbCBwbG90QWRkRXJyb3JCYXIgcGxvdEFkZFN1cmZhY2UgcGxvdENERkVtcGlyaWNhbCBwbG90U2V0Q29sb3JtYXAgcGxvdFNldENvbnRvdXJMYWJlbHMgJyArXG4gICAgICAgICAgICAgICdwbG90U2V0TGVnZW5kRm9udCBwbG90U2V0VGV4dEludGVycHJldGVyIHBsb3RTZXRYVGljQ291bnQgcGxvdFNldFlUaWNDb3VudCBwbG90U2V0WkxldmVscyBwb3dlcm0gc3Ryam9pbiBzeWx2ZXN0ZXIgJyArXG4gICAgICAgICAgICAgICdzdHJ0cmltJyxcbiAgICBsaXRlcmFsOiAnREJfQUZURVJfTEFTVF9ST1cgREJfQUxMX1RBQkxFUyBEQl9CQVRDSF9PUEVSQVRJT05TIERCX0JFRk9SRV9GSVJTVF9ST1cgREJfQkxPQiBEQl9FVkVOVF9OT1RJRklDQVRJT05TICcgK1xuICAgICAgICAgICAgICdEQl9GSU5JU0hfUVVFUlkgREJfSElHSF9QUkVDSVNJT04gREJfTEFTVF9JTlNFUlRfSUQgREJfTE9XX1BSRUNJU0lPTl9ET1VCTEUgREJfTE9XX1BSRUNJU0lPTl9JTlQzMiAnICtcbiAgICAgICAgICAgICAnREJfTE9XX1BSRUNJU0lPTl9JTlQ2NCBEQl9MT1dfUFJFQ0lTSU9OX05VTUJFUlMgREJfTVVMVElQTEVfUkVTVUxUX1NFVFMgREJfTkFNRURfUExBQ0VIT0xERVJTICcgK1xuICAgICAgICAgICAgICdEQl9QT1NJVElPTkFMX1BMQUNFSE9MREVSUyBEQl9QUkVQQVJFRF9RVUVSSUVTIERCX1FVRVJZX1NJWkUgREJfU0lNUExFX0xPQ0tJTkcgREJfU1lTVEVNX1RBQkxFUyBEQl9UQUJMRVMgJyArXG4gICAgICAgICAgICAgJ0RCX1RSQU5TQUNUSU9OUyBEQl9VTklDT0RFIERCX1ZJRVdTIF9fU1RESU4gX19TVERPVVQgX19TVERFUlIgX19GSUxFX0RJUidcbiAgfTtcblxuXG4gIHZhciBBVF9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJ0AnLCAnQCcpO1xuXG4gIHZhciBQUkVQUk9DRVNTT1IgPVxuICB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICcjJywgZW5kOiAnJCcsXG4gICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2RlZmluZSBkZWZpbmVjc3wxMCB1bmRlZiBpZmRlZiBpZm5kZWYgaWZsaWdodCBpZmRsbGNhbGwgaWZtYWMgaWZvczJ3aW4gaWZ1bml4IGVsc2UgZW5kaWYgbGluZXNvbiBsaW5lc29mZiBzcmNmaWxlIHNyY2xpbmUnfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXFxcXG4vLCByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbmNsdWRlJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICdpbmNsdWRlJ30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgQVRfQ09NTUVOVF9NT0RFLFxuICAgIF1cbiAgfTtcblxuICB2YXIgU1RSVUNUX1RZUEUgPVxuICB7XG4gICAgYmVnaW46IC9cXGJzdHJ1Y3RcXHMrLyxcbiAgICBlbmQ6IC9cXHMvLFxuICAgIGtleXdvcmRzOiBcInN0cnVjdFwiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJ0eXBlXCIsXG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBvbmx5IGZvciBkZWZpbml0aW9uc1xuICB2YXIgUEFSU0VfUEFSQU1TID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7IC8vIGRvdHNcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICBiZWdpbjogL1xcLlxcLlxcLi8sXG4gICAgICAgIH0sXG4gICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgQVRfQ09NTUVOVF9NT0RFLFxuICAgICAgICBTVFJVQ1RfVFlQRSxcbiAgICAgIF1cbiAgICB9XG4gIF07XG5cbiAgdmFyIEZVTkNUSU9OX0RFRiA9XG4gIHtcbiAgICBjbGFzc05hbWU6IFwidGl0bGVcIixcbiAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcblxuICB2YXIgREVGSU5JVElPTiA9IGZ1bmN0aW9uIChiZWdpbktleXdvcmRzLCBlbmQsIGluaGVyaXRzKSB7XG4gICAgdmFyIG1vZGUgPSBobGpzLmluaGVyaXQoXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmdW5jdGlvblwiLFxuICAgICAgICBiZWdpbktleXdvcmRzOiBiZWdpbktleXdvcmRzLFxuICAgICAgICBlbmQ6IGVuZCxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtdLmNvbmNhdChQQVJTRV9QQVJBTVMpLFxuICAgICAgfSxcbiAgICAgIGluaGVyaXRzIHx8IHt9XG4gICAgKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goRlVOQ1RJT05fREVGKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goaGxqcy5DX05VTUJFUl9NT0RFKTtcbiAgICBtb2RlLmNvbnRhaW5zLnB1c2goaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSk7XG4gICAgbW9kZS5jb250YWlucy5wdXNoKEFUX0NPTU1FTlRfTU9ERSk7XG4gICAgcmV0dXJuIG1vZGU7XG4gIH07XG5cbiAgdmFyIEJVSUxUX0lOX1JFRiA9XG4gIHsgLy8gdGhlc2UgYXJlIGV4cGxpY2l0bHkgbmFtZWQgaW50ZXJuYWwgZnVuY3Rpb24gY2FsbHNcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICdcXFxcYignICsgS0VZV09SRFMuYnVpbHRfaW4uc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgfTtcblxuICB2YXIgU1RSSU5HX1JFRiA9XG4gIHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fUkVGID1cbiAge1xuICAgIC8vY2xhc3NOYW1lOiBcImZuX3JlZlwiLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogS0VZV09SRFMua2V5d29yZCxcbiAgICAgIH0sXG4gICAgICBCVUlMVF9JTl9SRUYsXG4gICAgICB7IC8vIGFtYmlndW91c2x5IG5hbWVkIGZ1bmN0aW9uIGNhbGxzIGdldCBhIHJlbGV2YW5jZSBvZiAwXG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHZhciBGVU5DVElPTl9SRUZfUEFSQU1TID1cbiAge1xuICAgIC8vY2xhc3NOYW1lOiBcImZuX3JlZl9wYXJhbXNcIixcbiAgICBiZWdpbjogL1xcKC8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAga2V5d29yZHM6IHsgYnVpbHRfaW46IEtFWVdPUkRTLmJ1aWx0X2luLCBsaXRlcmFsOiBLRVlXT1JEUy5saXRlcmFsIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICBCVUlMVF9JTl9SRUYsXG4gICAgICBGVU5DVElPTl9SRUYsXG4gICAgICBTVFJJTkdfUkVGLFxuICAgICAgJ3NlbGYnLFxuICAgIF0sXG4gIH07XG5cbiAgRlVOQ1RJT05fUkVGLmNvbnRhaW5zLnB1c2goRlVOQ1RJT05fUkVGX1BBUkFNUyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dzcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsIC8vIGxhbmd1YWdlIGlzIGNhc2UtaW5zZW5zaXRpdmVcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyhcXHtbJSNdfFslI11cXH18IDwtICkvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgQVRfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HX1JFRixcbiAgICAgIFBSRVBST0NFU1NPUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAvXFxiZXh0ZXJuYWwgKG1hdHJpeHxzdHJpbmd8YXJyYXl8c3BhcnNlIG1hdHJpeHxzdHJ1Y3R8cHJvY3xrZXl3b3JkfGZuKS8sXG4gICAgICB9LFxuICAgICAgREVGSU5JVElPTigncHJvYyBrZXl3b3JkJywgJzsnKSxcbiAgICAgIERFRklOSVRJT04oJ2ZuJywgJz0nKSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ZvciB0aHJlYWRmb3InLFxuICAgICAgICBlbmQ6IC87LyxcbiAgICAgICAgLy9lbmQ6IC9cXCgvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBBVF9DT01NRU5UX01PREUsXG4gICAgICAgICAgRlVOQ1RJT05fUkVGX1BBUkFNUyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7IC8vIGN1c3RvbSBtZXRob2QgZ3VhcmRcbiAgICAgICAgLy8gZXhjbHVkZXMgbWV0aG9kIG5hbWVzIGZyb20ga2V5d29yZCBwcm9jZXNzaW5nXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFwuJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSwgfSxcbiAgICAgICAgICB7IGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqPScsIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIH0sXG4gICAgICBGVU5DVElPTl9SRUYsXG4gICAgICBTVFJVQ1RfVFlQRSxcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAgIHZhciBHQ09ERV9JREVOVF9SRSA9ICdbQS1aX11bQS1aMC05Xy5dKic7XG4gICAgdmFyIEdDT0RFX0NMT1NFX1JFID0gJ1xcXFwlJztcbiAgICB2YXIgR0NPREVfS0VZV09SRFMgPVxuICAgICAgJ0lGIERPIFdISUxFIEVORFdISUxFIENBTEwgRU5ESUYgU1VCIEVORFNVQiBHT1RPIFJFUEVBVCBFTkRSRVBFQVQgJyArXG4gICAgICAnRVEgTFQgR1QgTkUgR0UgTEUgT1IgWE9SJztcbiAgICB2YXIgR0NPREVfU1RBUlQgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyhbT10pKFswLTldKyknXG4gICAgfTtcbiAgICB2YXIgR0NPREVfQ09ERSA9IFtcbiAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICBobGpzLkNPTU1FTlQoL1xcKC8sIC9cXCkvKSxcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuQ19OVU1CRVJfTU9ERSwge2JlZ2luOiAnKFstK10/KFswLTldKlxcXFwuP1swLTldK1xcXFwuPykpfCcgKyBobGpzLkNfTlVNQkVSX1JFfSksXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFtHXSkoWzAtOV0rXFxcXC4/WzAtOV0/KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICBiZWdpbjogJyhbTV0pKFswLTldK1xcXFwuP1swLTldPyknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46ICcoVkN8VlN8IyknLFxuICAgICAgICAgICAgZW5kOiAnKFxcXFxkKyknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgYmVnaW46ICcoVlpPRlh8VlpPRll8VlpPRlopJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgICAgICBiZWdpbjogJyhBVEFOfEFCU3xBQ09TfEFTSU58U0lOfENPU3xFWFB8RklYfEZVUHxST1VORHxMTnxUQU4pKFxcXFxbKScsXG4gICAgICAgICAgICBlbmQ6ICcoWy0rXT8oWzAtOV0qXFxcXC4/WzAtOV0rXFxcXC4/KSkoXFxcXF0pJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnTicsIGVuZDogJ1xcXFxkKycsXG4gICAgICAgICAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcVydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpYXNlczogWyduYyddLFxuICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyAoQ05DIGNvbnRyb2xzKSBvZiBHLWNvZGUgYXJlIGludGVyb3BlcmFibGUgd2l0aCB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzIHNlYW1sZXNzbHkuXG4gICAgICAgIC8vIEhvd2V2ZXIsIG1vc3QgcHJlZmVyIGFsbCB1cHBlcmNhc2UgYW5kIHVwcGVyY2FzZSBpcyBjdXN0b21hcnkuXG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGxleGVtZXM6IEdDT0RFX0lERU5UX1JFLFxuICAgICAgICBrZXl3b3JkczogR0NPREVfS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgICAgYmVnaW46IEdDT0RFX0NMT1NFX1JFXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgR0NPREVfU1RBUlRcbiAgICAgICAgXS5jb25jYXQoR0NPREVfQ09ERSlcbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydmZWF0dXJlJ10sXG4gICAga2V5d29yZHM6ICdGZWF0dXJlIEJhY2tncm91bmQgQWJpbGl0eSBCdXNpbmVzc1xcIE5lZWQgU2NlbmFyaW8gU2NlbmFyaW9zIFNjZW5hcmlvXFwgT3V0bGluZSBTY2VuYXJpb1xcIFRlbXBsYXRlIEV4YW1wbGVzIEdpdmVuIEFuZCBUaGVuIEJ1dCBXaGVuJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcXFwqJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdAW15AXFxcXHNdKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXHwnLCBlbmQ6ICdcXFxcfFxcXFx3KiQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1tefF0rJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogJzwnLCBlbmQ6ICc+J1xuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJ1xuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvLyBTdGF0ZW1lbnRzXG4gICAgICAgICdicmVhayBjb250aW51ZSBkaXNjYXJkIGRvIGVsc2UgZm9yIGlmIHJldHVybiB3aGlsZSBzd2l0Y2ggY2FzZSBkZWZhdWx0ICcgK1xuICAgICAgICAvLyBRdWFsaWZpZXJzXG4gICAgICAgICdhdHRyaWJ1dGUgYmluZGluZyBidWZmZXIgY2N3IGNlbnRyb2lkIGNlbnRyb2lkIHZhcnlpbmcgY29oZXJlbnQgY29sdW1uX21ham9yIGNvbnN0IGN3ICcgK1xuICAgICAgICAnZGVwdGhfYW55IGRlcHRoX2dyZWF0ZXIgZGVwdGhfbGVzcyBkZXB0aF91bmNoYW5nZWQgZWFybHlfZnJhZ21lbnRfdGVzdHMgZXF1YWxfc3BhY2luZyAnICtcbiAgICAgICAgJ2ZsYXQgZnJhY3Rpb25hbF9ldmVuX3NwYWNpbmcgZnJhY3Rpb25hbF9vZGRfc3BhY2luZyBoaWdocCBpbiBpbmRleCBpbm91dCBpbnZhcmlhbnQgJyArXG4gICAgICAgICdpbnZvY2F0aW9ucyBpc29saW5lcyBsYXlvdXQgbGluZV9zdHJpcCBsaW5lcyBsaW5lc19hZGphY2VuY3kgbG9jYWxfc2l6ZV94IGxvY2FsX3NpemVfeSAnICtcbiAgICAgICAgJ2xvY2FsX3NpemVfeiBsb2NhdGlvbiBsb3dwIG1heF92ZXJ0aWNlcyBtZWRpdW1wIG5vcGVyc3BlY3RpdmUgb2Zmc2V0IG9yaWdpbl91cHBlcl9sZWZ0ICcgK1xuICAgICAgICAnb3V0IHBhY2tlZCBwYXRjaCBwaXhlbF9jZW50ZXJfaW50ZWdlciBwb2ludF9tb2RlIHBvaW50cyBwcmVjaXNlIHByZWNpc2lvbiBxdWFkcyByMTFmX2cxMWZfYjEwZiAnK1xuICAgICAgICAncjE2IHIxNl9zbm9ybSByMTZmIHIxNmkgcjE2dWkgcjMyZiByMzJpIHIzMnVpIHI4IHI4X3Nub3JtIHI4aSByOHVpIHJlYWRvbmx5IHJlc3RyaWN0ICcgK1xuICAgICAgICAncmcxNiByZzE2X3Nub3JtIHJnMTZmIHJnMTZpIHJnMTZ1aSByZzMyZiByZzMyaSByZzMydWkgcmc4IHJnOF9zbm9ybSByZzhpIHJnOHVpIHJnYjEwX2EyICcgK1xuICAgICAgICAncmdiMTBfYTJ1aSByZ2JhMTYgcmdiYTE2X3Nub3JtIHJnYmExNmYgcmdiYTE2aSByZ2JhMTZ1aSByZ2JhMzJmIHJnYmEzMmkgcmdiYTMydWkgcmdiYTggJyArXG4gICAgICAgICdyZ2JhOF9zbm9ybSByZ2JhOGkgcmdiYTh1aSByb3dfbWFqb3Igc2FtcGxlIHNoYXJlZCBzbW9vdGggc3RkMTQwIHN0ZDQzMCBzdHJlYW0gdHJpYW5nbGVfc3RyaXAgJyArXG4gICAgICAgICd0cmlhbmdsZXMgdHJpYW5nbGVzX2FkamFjZW5jeSB1bmlmb3JtIHZhcnlpbmcgdmVydGljZXMgdm9sYXRpbGUgd3JpdGVvbmx5JyxcbiAgICAgIHR5cGU6XG4gICAgICAgICdhdG9taWNfdWludCBib29sIGJ2ZWMyIGJ2ZWMzIGJ2ZWM0IGRtYXQyIGRtYXQyeDIgZG1hdDJ4MyBkbWF0Mng0IGRtYXQzIGRtYXQzeDIgZG1hdDN4MyAnICtcbiAgICAgICAgJ2RtYXQzeDQgZG1hdDQgZG1hdDR4MiBkbWF0NHgzIGRtYXQ0eDQgZG91YmxlIGR2ZWMyIGR2ZWMzIGR2ZWM0IGZsb2F0IGlpbWFnZTFEIGlpbWFnZTFEQXJyYXkgJyArXG4gICAgICAgICdpaW1hZ2UyRCBpaW1hZ2UyREFycmF5IGlpbWFnZTJETVMgaWltYWdlMkRNU0FycmF5IGlpbWFnZTJEUmVjdCBpaW1hZ2UzRCBpaW1hZ2VCdWZmZXInICtcbiAgICAgICAgJ2lpbWFnZUN1YmUgaWltYWdlQ3ViZUFycmF5IGltYWdlMUQgaW1hZ2UxREFycmF5IGltYWdlMkQgaW1hZ2UyREFycmF5IGltYWdlMkRNUyBpbWFnZTJETVNBcnJheSAnICtcbiAgICAgICAgJ2ltYWdlMkRSZWN0IGltYWdlM0QgaW1hZ2VCdWZmZXIgaW1hZ2VDdWJlIGltYWdlQ3ViZUFycmF5IGludCBpc2FtcGxlcjFEIGlzYW1wbGVyMURBcnJheSAnICtcbiAgICAgICAgJ2lzYW1wbGVyMkQgaXNhbXBsZXIyREFycmF5IGlzYW1wbGVyMkRNUyBpc2FtcGxlcjJETVNBcnJheSBpc2FtcGxlcjJEUmVjdCBpc2FtcGxlcjNEICcgK1xuICAgICAgICAnaXNhbXBsZXJCdWZmZXIgaXNhbXBsZXJDdWJlIGlzYW1wbGVyQ3ViZUFycmF5IGl2ZWMyIGl2ZWMzIGl2ZWM0IG1hdDIgbWF0MngyIG1hdDJ4MyAnICtcbiAgICAgICAgJ21hdDJ4NCBtYXQzIG1hdDN4MiBtYXQzeDMgbWF0M3g0IG1hdDQgbWF0NHgyIG1hdDR4MyBtYXQ0eDQgc2FtcGxlcjFEIHNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAnc2FtcGxlcjFEQXJyYXlTaGFkb3cgc2FtcGxlcjFEU2hhZG93IHNhbXBsZXIyRCBzYW1wbGVyMkRBcnJheSBzYW1wbGVyMkRBcnJheVNoYWRvdyAnICtcbiAgICAgICAgJ3NhbXBsZXIyRE1TIHNhbXBsZXIyRE1TQXJyYXkgc2FtcGxlcjJEUmVjdCBzYW1wbGVyMkRSZWN0U2hhZG93IHNhbXBsZXIyRFNoYWRvdyBzYW1wbGVyM0QgJyArXG4gICAgICAgICdzYW1wbGVyQnVmZmVyIHNhbXBsZXJDdWJlIHNhbXBsZXJDdWJlQXJyYXkgc2FtcGxlckN1YmVBcnJheVNoYWRvdyBzYW1wbGVyQ3ViZVNoYWRvdyAnICtcbiAgICAgICAgJ2ltYWdlMUQgdWltYWdlMURBcnJheSB1aW1hZ2UyRCB1aW1hZ2UyREFycmF5IHVpbWFnZTJETVMgdWltYWdlMkRNU0FycmF5IHVpbWFnZTJEUmVjdCAnICtcbiAgICAgICAgJ3VpbWFnZTNEIHVpbWFnZUJ1ZmZlciB1aW1hZ2VDdWJlIHVpbWFnZUN1YmVBcnJheSB1aW50IHVzYW1wbGVyMUQgdXNhbXBsZXIxREFycmF5ICcgK1xuICAgICAgICAndXNhbXBsZXIyRCB1c2FtcGxlcjJEQXJyYXkgdXNhbXBsZXIyRE1TIHVzYW1wbGVyMkRNU0FycmF5IHVzYW1wbGVyMkRSZWN0IHVzYW1wbGVyM0QgJyArXG4gICAgICAgICdzYW1wbGVyQnVmZmVyIHVzYW1wbGVyQ3ViZSB1c2FtcGxlckN1YmVBcnJheSB1dmVjMiB1dmVjMyB1dmVjNCB2ZWMyIHZlYzMgdmVjNCB2b2lkJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvLyBDb25zdGFudHNcbiAgICAgICAgJ2dsX01heEF0b21pY0NvdW50ZXJCaW5kaW5ncyBnbF9NYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZSBnbF9NYXhDbGlwRGlzdGFuY2VzIGdsX01heENsaXBQbGFuZXMgJyArXG4gICAgICAgICdnbF9NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzIGdsX01heENvbWJpbmVkQXRvbWljQ291bnRlcnMgZ2xfTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zICcgK1xuICAgICAgICAnZ2xfTWF4Q29tYmluZWRJbWFnZVVuaXRzQW5kRnJhZ21lbnRPdXRwdXRzIGdsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgZ2xfTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzICcgK1xuICAgICAgICAnZ2xfTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzIGdsX01heENvbXB1dGVJbWFnZVVuaWZvcm1zIGdsX01heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0cyAnICtcbiAgICAgICAgJ2dsX01heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyBnbF9NYXhDb21wdXRlV29ya0dyb3VwQ291bnQgZ2xfTWF4Q29tcHV0ZVdvcmtHcm91cFNpemUgJyArXG4gICAgICAgICdnbF9NYXhEcmF3QnVmZmVycyBnbF9NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzIGdsX01heEZyYWdtZW50QXRvbWljQ291bnRlcnMgJyArXG4gICAgICAgICdnbF9NYXhGcmFnbWVudEltYWdlVW5pZm9ybXMgZ2xfTWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgZ2xfTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMgJyArXG4gICAgICAgICdnbF9NYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzIGdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgZ2xfTWF4R2VvbWV0cnlBdG9taWNDb3VudGVyQnVmZmVycyAnICtcbiAgICAgICAgJ2dsX01heEdlb21ldHJ5QXRvbWljQ291bnRlcnMgZ2xfTWF4R2VvbWV0cnlJbWFnZVVuaWZvcm1zIGdsX01heEdlb21ldHJ5SW5wdXRDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4R2VvbWV0cnlPdXRwdXRDb21wb25lbnRzIGdsX01heEdlb21ldHJ5T3V0cHV0VmVydGljZXMgZ2xfTWF4R2VvbWV0cnlUZXh0dXJlSW1hZ2VVbml0cyAnICtcbiAgICAgICAgJ2dsX01heEdlb21ldHJ5VG90YWxPdXRwdXRDb21wb25lbnRzIGdsX01heEdlb21ldHJ5VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4R2VvbWV0cnlWYXJ5aW5nQ29tcG9uZW50cyAnICtcbiAgICAgICAgJ2dsX01heEltYWdlU2FtcGxlcyBnbF9NYXhJbWFnZVVuaXRzIGdsX01heExpZ2h0cyBnbF9NYXhQYXRjaFZlcnRpY2VzIGdsX01heFByb2dyYW1UZXhlbE9mZnNldCAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sQXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VGVzc0NvbnRyb2xBdG9taWNDb3VudGVycyBnbF9NYXhUZXNzQ29udHJvbEltYWdlVW5pZm9ybXMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzQ29udHJvbElucHV0Q29tcG9uZW50cyBnbF9NYXhUZXNzQ29udHJvbE91dHB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0NvbnRyb2xUZXh0dXJlSW1hZ2VVbml0cyAnICtcbiAgICAgICAgJ2dsX01heFRlc3NDb250cm9sVG90YWxPdXRwdXRDb21wb25lbnRzIGdsX01heFRlc3NDb250cm9sVW5pZm9ybUNvbXBvbmVudHMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvbkF0b21pY0NvdW50ZXJCdWZmZXJzIGdsX01heFRlc3NFdmFsdWF0aW9uQXRvbWljQ291bnRlcnMgJyArXG4gICAgICAgICdnbF9NYXhUZXNzRXZhbHVhdGlvbkltYWdlVW5pZm9ybXMgZ2xfTWF4VGVzc0V2YWx1YXRpb25JbnB1dENvbXBvbmVudHMgZ2xfTWF4VGVzc0V2YWx1YXRpb25PdXRwdXRDb21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0V2YWx1YXRpb25UZXh0dXJlSW1hZ2VVbml0cyBnbF9NYXhUZXNzRXZhbHVhdGlvblVuaWZvcm1Db21wb25lbnRzICcgK1xuICAgICAgICAnZ2xfTWF4VGVzc0dlbkxldmVsIGdsX01heFRlc3NQYXRjaENvbXBvbmVudHMgZ2xfTWF4VGV4dHVyZUNvb3JkcyBnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyAnICtcbiAgICAgICAgJ2dsX01heFRleHR1cmVVbml0cyBnbF9NYXhWYXJ5aW5nQ29tcG9uZW50cyBnbF9NYXhWYXJ5aW5nRmxvYXRzIGdsX01heFZhcnlpbmdWZWN0b3JzICcgK1xuICAgICAgICAnZ2xfTWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnMgZ2xfTWF4VmVydGV4QXRvbWljQ291bnRlcnMgZ2xfTWF4VmVydGV4QXR0cmlicyBnbF9NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zICcgK1xuICAgICAgICAnZ2xfTWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyBnbF9NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzIGdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzICcgK1xuICAgICAgICAnZ2xfTWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHMgZ2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgZ2xfTWF4Vmlld3BvcnRzIGdsX01pblByb2dyYW1UZXhlbE9mZnNldCAnICtcbiAgICAgICAgLy8gVmFyaWFibGVzXG4gICAgICAgICdnbF9CYWNrQ29sb3IgZ2xfQmFja0xpZ2h0TW9kZWxQcm9kdWN0IGdsX0JhY2tMaWdodFByb2R1Y3QgZ2xfQmFja01hdGVyaWFsICcgK1xuICAgICAgICAnZ2xfQmFja1NlY29uZGFyeUNvbG9yIGdsX0NsaXBEaXN0YW5jZSBnbF9DbGlwUGxhbmUgZ2xfQ2xpcFZlcnRleCBnbF9Db2xvciAnICtcbiAgICAgICAgJ2dsX0RlcHRoUmFuZ2UgZ2xfRXllUGxhbmVRIGdsX0V5ZVBsYW5lUiBnbF9FeWVQbGFuZVMgZ2xfRXllUGxhbmVUIGdsX0ZvZyBnbF9Gb2dDb29yZCAnICtcbiAgICAgICAgJ2dsX0ZvZ0ZyYWdDb29yZCBnbF9GcmFnQ29sb3IgZ2xfRnJhZ0Nvb3JkIGdsX0ZyYWdEYXRhIGdsX0ZyYWdEZXB0aCBnbF9Gcm9udENvbG9yICcgK1xuICAgICAgICAnZ2xfRnJvbnRGYWNpbmcgZ2xfRnJvbnRMaWdodE1vZGVsUHJvZHVjdCBnbF9Gcm9udExpZ2h0UHJvZHVjdCBnbF9Gcm9udE1hdGVyaWFsICcgK1xuICAgICAgICAnZ2xfRnJvbnRTZWNvbmRhcnlDb2xvciBnbF9HbG9iYWxJbnZvY2F0aW9uSUQgZ2xfSW5zdGFuY2VJRCBnbF9JbnZvY2F0aW9uSUQgZ2xfTGF5ZXIgZ2xfTGlnaHRNb2RlbCAnICtcbiAgICAgICAgJ2dsX0xpZ2h0U291cmNlIGdsX0xvY2FsSW52b2NhdGlvbklEIGdsX0xvY2FsSW52b2NhdGlvbkluZGV4IGdsX01vZGVsVmlld01hdHJpeCAnICtcbiAgICAgICAgJ2dsX01vZGVsVmlld01hdHJpeEludmVyc2UgZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZVRyYW5zcG9zZSBnbF9Nb2RlbFZpZXdNYXRyaXhUcmFuc3Bvc2UgJyArXG4gICAgICAgICdnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4IGdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlIGdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlVHJhbnNwb3NlICcgK1xuICAgICAgICAnZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeFRyYW5zcG9zZSBnbF9NdWx0aVRleENvb3JkMCBnbF9NdWx0aVRleENvb3JkMSBnbF9NdWx0aVRleENvb3JkMiAnICtcbiAgICAgICAgJ2dsX011bHRpVGV4Q29vcmQzIGdsX011bHRpVGV4Q29vcmQ0IGdsX011bHRpVGV4Q29vcmQ1IGdsX011bHRpVGV4Q29vcmQ2IGdsX011bHRpVGV4Q29vcmQ3ICcgK1xuICAgICAgICAnZ2xfTm9ybWFsIGdsX05vcm1hbE1hdHJpeCBnbF9Ob3JtYWxTY2FsZSBnbF9OdW1TYW1wbGVzIGdsX051bVdvcmtHcm91cHMgZ2xfT2JqZWN0UGxhbmVRICcgK1xuICAgICAgICAnZ2xfT2JqZWN0UGxhbmVSIGdsX09iamVjdFBsYW5lUyBnbF9PYmplY3RQbGFuZVQgZ2xfUGF0Y2hWZXJ0aWNlc0luIGdsX1BvaW50IGdsX1BvaW50Q29vcmQgJyArXG4gICAgICAgICdnbF9Qb2ludFNpemUgZ2xfUG9zaXRpb24gZ2xfUHJpbWl0aXZlSUQgZ2xfUHJpbWl0aXZlSURJbiBnbF9Qcm9qZWN0aW9uTWF0cml4IGdsX1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlICcgK1xuICAgICAgICAnZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UgZ2xfUHJvamVjdGlvbk1hdHJpeFRyYW5zcG9zZSBnbF9TYW1wbGVJRCBnbF9TYW1wbGVNYXNrICcgK1xuICAgICAgICAnZ2xfU2FtcGxlTWFza0luIGdsX1NhbXBsZVBvc2l0aW9uIGdsX1NlY29uZGFyeUNvbG9yIGdsX1Rlc3NDb29yZCBnbF9UZXNzTGV2ZWxJbm5lciBnbF9UZXNzTGV2ZWxPdXRlciAnICtcbiAgICAgICAgJ2dsX1RleENvb3JkIGdsX1RleHR1cmVFbnZDb2xvciBnbF9UZXh0dXJlTWF0cml4IGdsX1RleHR1cmVNYXRyaXhJbnZlcnNlIGdsX1RleHR1cmVNYXRyaXhJbnZlcnNlVHJhbnNwb3NlICcgK1xuICAgICAgICAnZ2xfVGV4dHVyZU1hdHJpeFRyYW5zcG9zZSBnbF9WZXJ0ZXggZ2xfVmVydGV4SUQgZ2xfVmlld3BvcnRJbmRleCBnbF9Xb3JrR3JvdXBJRCBnbF9Xb3JrR3JvdXBTaXplIGdsX2luIGdsX291dCAnICtcbiAgICAgICAgLy8gRnVuY3Rpb25zXG4gICAgICAgICdFbWl0U3RyZWFtVmVydGV4IEVtaXRWZXJ0ZXggRW5kUHJpbWl0aXZlIEVuZFN0cmVhbVByaW1pdGl2ZSBhYnMgYWNvcyBhY29zaCBhbGwgYW55IGFzaW4gJyArXG4gICAgICAgICdhc2luaCBhdGFuIGF0YW5oIGF0b21pY0FkZCBhdG9taWNBbmQgYXRvbWljQ29tcFN3YXAgYXRvbWljQ291bnRlciBhdG9taWNDb3VudGVyRGVjcmVtZW50ICcgK1xuICAgICAgICAnYXRvbWljQ291bnRlckluY3JlbWVudCBhdG9taWNFeGNoYW5nZSBhdG9taWNNYXggYXRvbWljTWluIGF0b21pY09yIGF0b21pY1hvciBiYXJyaWVyICcgK1xuICAgICAgICAnYml0Q291bnQgYml0ZmllbGRFeHRyYWN0IGJpdGZpZWxkSW5zZXJ0IGJpdGZpZWxkUmV2ZXJzZSBjZWlsIGNsYW1wIGNvcyBjb3NoIGNyb3NzICcgK1xuICAgICAgICAnZEZkeCBkRmR5IGRlZ3JlZXMgZGV0ZXJtaW5hbnQgZGlzdGFuY2UgZG90IGVxdWFsIGV4cCBleHAyIGZhY2Vmb3J3YXJkIGZpbmRMU0IgZmluZE1TQiAnICtcbiAgICAgICAgJ2Zsb2F0Qml0c1RvSW50IGZsb2F0Qml0c1RvVWludCBmbG9vciBmbWEgZnJhY3QgZnJleHAgZnRyYW5zZm9ybSBmd2lkdGggZ3JlYXRlclRoYW4gJyArXG4gICAgICAgICdncmVhdGVyVGhhbkVxdWFsIGdyb3VwTWVtb3J5QmFycmllciBpbWFnZUF0b21pY0FkZCBpbWFnZUF0b21pY0FuZCBpbWFnZUF0b21pY0NvbXBTd2FwICcgK1xuICAgICAgICAnaW1hZ2VBdG9taWNFeGNoYW5nZSBpbWFnZUF0b21pY01heCBpbWFnZUF0b21pY01pbiBpbWFnZUF0b21pY09yIGltYWdlQXRvbWljWG9yIGltYWdlTG9hZCAnICtcbiAgICAgICAgJ2ltYWdlU2l6ZSBpbWFnZVN0b3JlIGltdWxFeHRlbmRlZCBpbnRCaXRzVG9GbG9hdCBpbnRlcnBvbGF0ZUF0Q2VudHJvaWQgaW50ZXJwb2xhdGVBdE9mZnNldCAnICtcbiAgICAgICAgJ2ludGVycG9sYXRlQXRTYW1wbGUgaW52ZXJzZSBpbnZlcnNlc3FydCBpc2luZiBpc25hbiBsZGV4cCBsZW5ndGggbGVzc1RoYW4gbGVzc1RoYW5FcXVhbCBsb2cgJyArXG4gICAgICAgICdsb2cyIG1hdHJpeENvbXBNdWx0IG1heCBtZW1vcnlCYXJyaWVyIG1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyIG1lbW9yeUJhcnJpZXJCdWZmZXIgJyArXG4gICAgICAgICdtZW1vcnlCYXJyaWVySW1hZ2UgbWVtb3J5QmFycmllclNoYXJlZCBtaW4gbWl4IG1vZCBtb2RmIG5vaXNlMSBub2lzZTIgbm9pc2UzIG5vaXNlNCAnICtcbiAgICAgICAgJ25vcm1hbGl6ZSBub3Qgbm90RXF1YWwgb3V0ZXJQcm9kdWN0IHBhY2tEb3VibGUyeDMyIHBhY2tIYWxmMngxNiBwYWNrU25vcm0yeDE2IHBhY2tTbm9ybTR4OCAnICtcbiAgICAgICAgJ3BhY2tVbm9ybTJ4MTYgcGFja1Vub3JtNHg4IHBvdyByYWRpYW5zIHJlZmxlY3QgcmVmcmFjdCByb3VuZCByb3VuZEV2ZW4gc2hhZG93MUQgc2hhZG93MURMb2QgJyArXG4gICAgICAgICdzaGFkb3cxRFByb2ogc2hhZG93MURQcm9qTG9kIHNoYWRvdzJEIHNoYWRvdzJETG9kIHNoYWRvdzJEUHJvaiBzaGFkb3cyRFByb2pMb2Qgc2lnbiBzaW4gc2luaCAnICtcbiAgICAgICAgJ3Ntb290aHN0ZXAgc3FydCBzdGVwIHRhbiB0YW5oIHRleGVsRmV0Y2ggdGV4ZWxGZXRjaE9mZnNldCB0ZXh0dXJlIHRleHR1cmUxRCB0ZXh0dXJlMURMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlMURQcm9qIHRleHR1cmUxRFByb2pMb2QgdGV4dHVyZTJEIHRleHR1cmUyRExvZCB0ZXh0dXJlMkRQcm9qIHRleHR1cmUyRFByb2pMb2QgJyArXG4gICAgICAgICd0ZXh0dXJlM0QgdGV4dHVyZTNETG9kIHRleHR1cmUzRFByb2ogdGV4dHVyZTNEUHJvakxvZCB0ZXh0dXJlQ3ViZSB0ZXh0dXJlQ3ViZUxvZCAnICtcbiAgICAgICAgJ3RleHR1cmVHYXRoZXIgdGV4dHVyZUdhdGhlck9mZnNldCB0ZXh0dXJlR2F0aGVyT2Zmc2V0cyB0ZXh0dXJlR3JhZCB0ZXh0dXJlR3JhZE9mZnNldCAnICtcbiAgICAgICAgJ3RleHR1cmVMb2QgdGV4dHVyZUxvZE9mZnNldCB0ZXh0dXJlT2Zmc2V0IHRleHR1cmVQcm9qIHRleHR1cmVQcm9qR3JhZCB0ZXh0dXJlUHJvakdyYWRPZmZzZXQgJyArXG4gICAgICAgICd0ZXh0dXJlUHJvakxvZCB0ZXh0dXJlUHJvakxvZE9mZnNldCB0ZXh0dXJlUHJvak9mZnNldCB0ZXh0dXJlUXVlcnlMZXZlbHMgdGV4dHVyZVF1ZXJ5TG9kICcgK1xuICAgICAgICAndGV4dHVyZVNpemUgdHJhbnNwb3NlIHRydW5jIHVhZGRDYXJyeSB1aW50Qml0c1RvRmxvYXQgdW11bEV4dGVuZGVkIHVucGFja0RvdWJsZTJ4MzIgJyArXG4gICAgICAgICd1bnBhY2tIYWxmMngxNiB1bnBhY2tTbm9ybTJ4MTYgdW5wYWNrU25vcm00eDggdW5wYWNrVW5vcm0yeDE2IHVucGFja1Vub3JtNHg4IHVzdWJCb3Jyb3cnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCdcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgR01MX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmRzOiAnYmVnaW4gZW5kIGlmIHRoZW4gZWxzZSB3aGlsZSBkbyBmb3IgYnJlYWsgY29udGludWUgd2l0aCB1bnRpbCAnICtcbiAgICAgICdyZXBlYXQgZXhpdCBhbmQgb3IgeG9yIG5vdCByZXR1cm4gbW9kIGRpdiBzd2l0Y2ggY2FzZSBkZWZhdWx0IHZhciAnICtcbiAgICAgICdnbG9iYWx2YXIgZW51bSAjbWFjcm8gI3JlZ2lvbiAjZW5kcmVnaW9uJyxcbiAgICBidWlsdF9pbjogJ2lzX3JlYWwgaXNfc3RyaW5nIGlzX2FycmF5IGlzX3VuZGVmaW5lZCBpc19pbnQzMiBpc19pbnQ2NCAnICtcbiAgICAgICdpc19wdHIgaXNfdmVjMyBpc192ZWM0IGlzX21hdHJpeCBpc19ib29sIHR5cGVvZiAnICtcbiAgICAgICd2YXJpYWJsZV9nbG9iYWxfZXhpc3RzIHZhcmlhYmxlX2dsb2JhbF9nZXQgdmFyaWFibGVfZ2xvYmFsX3NldCAnICtcbiAgICAgICd2YXJpYWJsZV9pbnN0YW5jZV9leGlzdHMgdmFyaWFibGVfaW5zdGFuY2VfZ2V0IHZhcmlhYmxlX2luc3RhbmNlX3NldCAnICtcbiAgICAgICd2YXJpYWJsZV9pbnN0YW5jZV9nZXRfbmFtZXMgYXJyYXlfbGVuZ3RoXzFkIGFycmF5X2xlbmd0aF8yZCAnICtcbiAgICAgICdhcnJheV9oZWlnaHRfMmQgYXJyYXlfZXF1YWxzIGFycmF5X2NyZWF0ZSBhcnJheV9jb3B5IHJhbmRvbSAnICtcbiAgICAgICdyYW5kb21fcmFuZ2UgaXJhbmRvbSBpcmFuZG9tX3JhbmdlIHJhbmRvbV9zZXRfc2VlZCByYW5kb21fZ2V0X3NlZWQgJyArXG4gICAgICAncmFuZG9taXplIHJhbmRvbWlzZSBjaG9vc2UgYWJzIHJvdW5kIGZsb29yIGNlaWwgc2lnbiBmcmFjIHNxcnQgc3FyICcgK1xuICAgICAgJ2V4cCBsbiBsb2cyIGxvZzEwIHNpbiBjb3MgdGFuIGFyY3NpbiBhcmNjb3MgYXJjdGFuIGFyY3RhbjIgZHNpbiBkY29zICcgK1xuICAgICAgJ2R0YW4gZGFyY3NpbiBkYXJjY29zIGRhcmN0YW4gZGFyY3RhbjIgZGVndG9yYWQgcmFkdG9kZWcgcG93ZXIgbG9nbiAnICtcbiAgICAgICdtaW4gbWF4IG1lYW4gbWVkaWFuIGNsYW1wIGxlcnAgZG90X3Byb2R1Y3QgZG90X3Byb2R1Y3RfM2QgJyArXG4gICAgICAnZG90X3Byb2R1Y3Rfbm9ybWFsaXNlZCBkb3RfcHJvZHVjdF8zZF9ub3JtYWxpc2VkICcgK1xuICAgICAgJ2RvdF9wcm9kdWN0X25vcm1hbGl6ZWQgZG90X3Byb2R1Y3RfM2Rfbm9ybWFsaXplZCBtYXRoX3NldF9lcHNpbG9uICcgK1xuICAgICAgJ21hdGhfZ2V0X2Vwc2lsb24gYW5nbGVfZGlmZmVyZW5jZSBwb2ludF9kaXN0YW5jZV8zZCBwb2ludF9kaXN0YW5jZSAnICtcbiAgICAgICdwb2ludF9kaXJlY3Rpb24gbGVuZ3RoZGlyX3ggbGVuZ3RoZGlyX3kgcmVhbCBzdHJpbmcgaW50NjQgcHRyICcgK1xuICAgICAgJ3N0cmluZ19mb3JtYXQgY2hyIGFuc2lfY2hhciBvcmQgc3RyaW5nX2xlbmd0aCBzdHJpbmdfYnl0ZV9sZW5ndGggJyArXG4gICAgICAnc3RyaW5nX3BvcyBzdHJpbmdfY29weSBzdHJpbmdfY2hhcl9hdCBzdHJpbmdfb3JkX2F0IHN0cmluZ19ieXRlX2F0ICcgK1xuICAgICAgJ3N0cmluZ19zZXRfYnl0ZV9hdCBzdHJpbmdfZGVsZXRlIHN0cmluZ19pbnNlcnQgc3RyaW5nX2xvd2VyICcgK1xuICAgICAgJ3N0cmluZ191cHBlciBzdHJpbmdfcmVwZWF0IHN0cmluZ19sZXR0ZXJzIHN0cmluZ19kaWdpdHMgJyArXG4gICAgICAnc3RyaW5nX2xldHRlcnNkaWdpdHMgc3RyaW5nX3JlcGxhY2Ugc3RyaW5nX3JlcGxhY2VfYWxsIHN0cmluZ19jb3VudCAnICtcbiAgICAgICdzdHJpbmdfaGFzaF90b19uZXdsaW5lIGNsaXBib2FyZF9oYXNfdGV4dCBjbGlwYm9hcmRfc2V0X3RleHQgJyArXG4gICAgICAnY2xpcGJvYXJkX2dldF90ZXh0IGRhdGVfY3VycmVudF9kYXRldGltZSBkYXRlX2NyZWF0ZV9kYXRldGltZSAnICtcbiAgICAgICdkYXRlX3ZhbGlkX2RhdGV0aW1lIGRhdGVfaW5jX3llYXIgZGF0ZV9pbmNfbW9udGggZGF0ZV9pbmNfd2VlayAnICtcbiAgICAgICdkYXRlX2luY19kYXkgZGF0ZV9pbmNfaG91ciBkYXRlX2luY19taW51dGUgZGF0ZV9pbmNfc2Vjb25kICcgK1xuICAgICAgJ2RhdGVfZ2V0X3llYXIgZGF0ZV9nZXRfbW9udGggZGF0ZV9nZXRfd2VlayBkYXRlX2dldF9kYXkgJyArXG4gICAgICAnZGF0ZV9nZXRfaG91ciBkYXRlX2dldF9taW51dGUgZGF0ZV9nZXRfc2Vjb25kIGRhdGVfZ2V0X3dlZWtkYXkgJyArXG4gICAgICAnZGF0ZV9nZXRfZGF5X29mX3llYXIgZGF0ZV9nZXRfaG91cl9vZl95ZWFyIGRhdGVfZ2V0X21pbnV0ZV9vZl95ZWFyICcgK1xuICAgICAgJ2RhdGVfZ2V0X3NlY29uZF9vZl95ZWFyIGRhdGVfeWVhcl9zcGFuIGRhdGVfbW9udGhfc3BhbiAnICtcbiAgICAgICdkYXRlX3dlZWtfc3BhbiBkYXRlX2RheV9zcGFuIGRhdGVfaG91cl9zcGFuIGRhdGVfbWludXRlX3NwYW4gJyArXG4gICAgICAnZGF0ZV9zZWNvbmRfc3BhbiBkYXRlX2NvbXBhcmVfZGF0ZXRpbWUgZGF0ZV9jb21wYXJlX2RhdGUgJyArXG4gICAgICAnZGF0ZV9jb21wYXJlX3RpbWUgZGF0ZV9kYXRlX29mIGRhdGVfdGltZV9vZiBkYXRlX2RhdGV0aW1lX3N0cmluZyAnICtcbiAgICAgICdkYXRlX2RhdGVfc3RyaW5nIGRhdGVfdGltZV9zdHJpbmcgZGF0ZV9kYXlzX2luX21vbnRoICcgK1xuICAgICAgJ2RhdGVfZGF5c19pbl95ZWFyIGRhdGVfbGVhcF95ZWFyIGRhdGVfaXNfdG9kYXkgZGF0ZV9zZXRfdGltZXpvbmUgJyArXG4gICAgICAnZGF0ZV9nZXRfdGltZXpvbmUgZ2FtZV9zZXRfc3BlZWQgZ2FtZV9nZXRfc3BlZWQgbW90aW9uX3NldCAnICtcbiAgICAgICdtb3Rpb25fYWRkIHBsYWNlX2ZyZWUgcGxhY2VfZW1wdHkgcGxhY2VfbWVldGluZyBwbGFjZV9zbmFwcGVkICcgK1xuICAgICAgJ21vdmVfcmFuZG9tIG1vdmVfc25hcCBtb3ZlX3Rvd2FyZHNfcG9pbnQgbW92ZV9jb250YWN0X3NvbGlkICcgK1xuICAgICAgJ21vdmVfY29udGFjdF9hbGwgbW92ZV9vdXRzaWRlX3NvbGlkIG1vdmVfb3V0c2lkZV9hbGwgJyArXG4gICAgICAnbW92ZV9ib3VuY2Vfc29saWQgbW92ZV9ib3VuY2VfYWxsIG1vdmVfd3JhcCBkaXN0YW5jZV90b19wb2ludCAnICtcbiAgICAgICdkaXN0YW5jZV90b19vYmplY3QgcG9zaXRpb25fZW1wdHkgcG9zaXRpb25fbWVldGluZyBwYXRoX3N0YXJ0ICcgK1xuICAgICAgJ3BhdGhfZW5kIG1wX2xpbmVhcl9zdGVwIG1wX3BvdGVudGlhbF9zdGVwIG1wX2xpbmVhcl9zdGVwX29iamVjdCAnICtcbiAgICAgICdtcF9wb3RlbnRpYWxfc3RlcF9vYmplY3QgbXBfcG90ZW50aWFsX3NldHRpbmdzIG1wX2xpbmVhcl9wYXRoICcgK1xuICAgICAgJ21wX3BvdGVudGlhbF9wYXRoIG1wX2xpbmVhcl9wYXRoX29iamVjdCBtcF9wb3RlbnRpYWxfcGF0aF9vYmplY3QgJyArXG4gICAgICAnbXBfZ3JpZF9jcmVhdGUgbXBfZ3JpZF9kZXN0cm95IG1wX2dyaWRfY2xlYXJfYWxsIG1wX2dyaWRfY2xlYXJfY2VsbCAnICtcbiAgICAgICdtcF9ncmlkX2NsZWFyX3JlY3RhbmdsZSBtcF9ncmlkX2FkZF9jZWxsIG1wX2dyaWRfZ2V0X2NlbGwgJyArXG4gICAgICAnbXBfZ3JpZF9hZGRfcmVjdGFuZ2xlIG1wX2dyaWRfYWRkX2luc3RhbmNlcyBtcF9ncmlkX3BhdGggJyArXG4gICAgICAnbXBfZ3JpZF9kcmF3IG1wX2dyaWRfdG9fZHNfZ3JpZCBjb2xsaXNpb25fcG9pbnQgY29sbGlzaW9uX3JlY3RhbmdsZSAnICtcbiAgICAgICdjb2xsaXNpb25fY2lyY2xlIGNvbGxpc2lvbl9lbGxpcHNlIGNvbGxpc2lvbl9saW5lICcgK1xuICAgICAgJ2NvbGxpc2lvbl9wb2ludF9saXN0IGNvbGxpc2lvbl9yZWN0YW5nbGVfbGlzdCBjb2xsaXNpb25fY2lyY2xlX2xpc3QgJyArXG4gICAgICAnY29sbGlzaW9uX2VsbGlwc2VfbGlzdCBjb2xsaXNpb25fbGluZV9saXN0IGluc3RhbmNlX3Bvc2l0aW9uX2xpc3QgJyArXG4gICAgICAnaW5zdGFuY2VfcGxhY2VfbGlzdCBwb2ludF9pbl9yZWN0YW5nbGUgJyArXG4gICAgICAncG9pbnRfaW5fdHJpYW5nbGUgcG9pbnRfaW5fY2lyY2xlIHJlY3RhbmdsZV9pbl9yZWN0YW5nbGUgJyArXG4gICAgICAncmVjdGFuZ2xlX2luX3RyaWFuZ2xlIHJlY3RhbmdsZV9pbl9jaXJjbGUgaW5zdGFuY2VfZmluZCAnICtcbiAgICAgICdpbnN0YW5jZV9leGlzdHMgaW5zdGFuY2VfbnVtYmVyIGluc3RhbmNlX3Bvc2l0aW9uIGluc3RhbmNlX25lYXJlc3QgJyArXG4gICAgICAnaW5zdGFuY2VfZnVydGhlc3QgaW5zdGFuY2VfcGxhY2UgaW5zdGFuY2VfY3JlYXRlX2RlcHRoICcgK1xuICAgICAgJ2luc3RhbmNlX2NyZWF0ZV9sYXllciBpbnN0YW5jZV9jb3B5IGluc3RhbmNlX2NoYW5nZSBpbnN0YW5jZV9kZXN0cm95ICcgK1xuICAgICAgJ3Bvc2l0aW9uX2Rlc3Ryb3kgcG9zaXRpb25fY2hhbmdlIGluc3RhbmNlX2lkX2dldCAnICtcbiAgICAgICdpbnN0YW5jZV9kZWFjdGl2YXRlX2FsbCBpbnN0YW5jZV9kZWFjdGl2YXRlX29iamVjdCAnICtcbiAgICAgICdpbnN0YW5jZV9kZWFjdGl2YXRlX3JlZ2lvbiBpbnN0YW5jZV9hY3RpdmF0ZV9hbGwgJyArXG4gICAgICAnaW5zdGFuY2VfYWN0aXZhdGVfb2JqZWN0IGluc3RhbmNlX2FjdGl2YXRlX3JlZ2lvbiByb29tX2dvdG8gJyArXG4gICAgICAncm9vbV9nb3RvX3ByZXZpb3VzIHJvb21fZ290b19uZXh0IHJvb21fcHJldmlvdXMgcm9vbV9uZXh0ICcgK1xuICAgICAgJ3Jvb21fcmVzdGFydCBnYW1lX2VuZCBnYW1lX3Jlc3RhcnQgZ2FtZV9sb2FkIGdhbWVfc2F2ZSAnICtcbiAgICAgICdnYW1lX3NhdmVfYnVmZmVyIGdhbWVfbG9hZF9idWZmZXIgZXZlbnRfcGVyZm9ybSBldmVudF91c2VyICcgK1xuICAgICAgJ2V2ZW50X3BlcmZvcm1fb2JqZWN0IGV2ZW50X2luaGVyaXRlZCBzaG93X2RlYnVnX21lc3NhZ2UgJyArXG4gICAgICAnc2hvd19kZWJ1Z19vdmVybGF5IGRlYnVnX2V2ZW50IGRlYnVnX2dldF9jYWxsc3RhY2sgYWxhcm1fZ2V0ICcgK1xuICAgICAgJ2FsYXJtX3NldCBmb250X3RleHR1cmVfcGFnZV9zaXplIGtleWJvYXJkX3NldF9tYXAga2V5Ym9hcmRfZ2V0X21hcCAnICtcbiAgICAgICdrZXlib2FyZF91bnNldF9tYXAga2V5Ym9hcmRfY2hlY2sga2V5Ym9hcmRfY2hlY2tfcHJlc3NlZCAnICtcbiAgICAgICdrZXlib2FyZF9jaGVja19yZWxlYXNlZCBrZXlib2FyZF9jaGVja19kaXJlY3Qga2V5Ym9hcmRfZ2V0X251bWxvY2sgJyArXG4gICAgICAna2V5Ym9hcmRfc2V0X251bWxvY2sga2V5Ym9hcmRfa2V5X3ByZXNzIGtleWJvYXJkX2tleV9yZWxlYXNlICcgK1xuICAgICAgJ2tleWJvYXJkX2NsZWFyIGlvX2NsZWFyIG1vdXNlX2NoZWNrX2J1dHRvbiAnICtcbiAgICAgICdtb3VzZV9jaGVja19idXR0b25fcHJlc3NlZCBtb3VzZV9jaGVja19idXR0b25fcmVsZWFzZWQgJyArXG4gICAgICAnbW91c2Vfd2hlZWxfdXAgbW91c2Vfd2hlZWxfZG93biBtb3VzZV9jbGVhciBkcmF3X3NlbGYgZHJhd19zcHJpdGUgJyArXG4gICAgICAnZHJhd19zcHJpdGVfcG9zIGRyYXdfc3ByaXRlX2V4dCBkcmF3X3Nwcml0ZV9zdHJldGNoZWQgJyArXG4gICAgICAnZHJhd19zcHJpdGVfc3RyZXRjaGVkX2V4dCBkcmF3X3Nwcml0ZV90aWxlZCBkcmF3X3Nwcml0ZV90aWxlZF9leHQgJyArXG4gICAgICAnZHJhd19zcHJpdGVfcGFydCBkcmF3X3Nwcml0ZV9wYXJ0X2V4dCBkcmF3X3Nwcml0ZV9nZW5lcmFsIGRyYXdfY2xlYXIgJyArXG4gICAgICAnZHJhd19jbGVhcl9hbHBoYSBkcmF3X3BvaW50IGRyYXdfbGluZSBkcmF3X2xpbmVfd2lkdGggZHJhd19yZWN0YW5nbGUgJyArXG4gICAgICAnZHJhd19yb3VuZHJlY3QgZHJhd19yb3VuZHJlY3RfZXh0IGRyYXdfdHJpYW5nbGUgZHJhd19jaXJjbGUgJyArXG4gICAgICAnZHJhd19lbGxpcHNlIGRyYXdfc2V0X2NpcmNsZV9wcmVjaXNpb24gZHJhd19hcnJvdyBkcmF3X2J1dHRvbiAnICtcbiAgICAgICdkcmF3X3BhdGggZHJhd19oZWFsdGhiYXIgZHJhd19nZXRwaXhlbCBkcmF3X2dldHBpeGVsX2V4dCAnICtcbiAgICAgICdkcmF3X3NldF9jb2xvdXIgZHJhd19zZXRfY29sb3IgZHJhd19zZXRfYWxwaGEgZHJhd19nZXRfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfZ2V0X2NvbG9yIGRyYXdfZ2V0X2FscGhhIG1lcmdlX2NvbG91ciBtYWtlX2NvbG91cl9yZ2IgJyArXG4gICAgICAnbWFrZV9jb2xvdXJfaHN2IGNvbG91cl9nZXRfcmVkIGNvbG91cl9nZXRfZ3JlZW4gY29sb3VyX2dldF9ibHVlICcgK1xuICAgICAgJ2NvbG91cl9nZXRfaHVlIGNvbG91cl9nZXRfc2F0dXJhdGlvbiBjb2xvdXJfZ2V0X3ZhbHVlIG1lcmdlX2NvbG9yICcgK1xuICAgICAgJ21ha2VfY29sb3JfcmdiIG1ha2VfY29sb3JfaHN2IGNvbG9yX2dldF9yZWQgY29sb3JfZ2V0X2dyZWVuICcgK1xuICAgICAgJ2NvbG9yX2dldF9ibHVlIGNvbG9yX2dldF9odWUgY29sb3JfZ2V0X3NhdHVyYXRpb24gY29sb3JfZ2V0X3ZhbHVlICcgK1xuICAgICAgJ21lcmdlX2NvbG9yIHNjcmVlbl9zYXZlIHNjcmVlbl9zYXZlX3BhcnQgZHJhd19zZXRfZm9udCAnICtcbiAgICAgICdkcmF3X3NldF9oYWxpZ24gZHJhd19zZXRfdmFsaWduIGRyYXdfdGV4dCBkcmF3X3RleHRfZXh0IHN0cmluZ193aWR0aCAnICtcbiAgICAgICdzdHJpbmdfaGVpZ2h0IHN0cmluZ193aWR0aF9leHQgc3RyaW5nX2hlaWdodF9leHQgJyArXG4gICAgICAnZHJhd190ZXh0X3RyYW5zZm9ybWVkIGRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWQgZHJhd190ZXh0X2NvbG91ciAnICtcbiAgICAgICdkcmF3X3RleHRfZXh0X2NvbG91ciBkcmF3X3RleHRfdHJhbnNmb3JtZWRfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3VyIGRyYXdfdGV4dF9jb2xvciBkcmF3X3RleHRfZXh0X2NvbG9yICcgK1xuICAgICAgJ2RyYXdfdGV4dF90cmFuc2Zvcm1lZF9jb2xvciBkcmF3X3RleHRfZXh0X3RyYW5zZm9ybWVkX2NvbG9yICcgK1xuICAgICAgJ2RyYXdfcG9pbnRfY29sb3VyIGRyYXdfbGluZV9jb2xvdXIgZHJhd19saW5lX3dpZHRoX2NvbG91ciAnICtcbiAgICAgICdkcmF3X3JlY3RhbmdsZV9jb2xvdXIgZHJhd19yb3VuZHJlY3RfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfcm91bmRyZWN0X2NvbG91cl9leHQgZHJhd190cmlhbmdsZV9jb2xvdXIgZHJhd19jaXJjbGVfY29sb3VyICcgK1xuICAgICAgJ2RyYXdfZWxsaXBzZV9jb2xvdXIgZHJhd19wb2ludF9jb2xvciBkcmF3X2xpbmVfY29sb3IgJyArXG4gICAgICAnZHJhd19saW5lX3dpZHRoX2NvbG9yIGRyYXdfcmVjdGFuZ2xlX2NvbG9yIGRyYXdfcm91bmRyZWN0X2NvbG9yICcgK1xuICAgICAgJ2RyYXdfcm91bmRyZWN0X2NvbG9yX2V4dCBkcmF3X3RyaWFuZ2xlX2NvbG9yIGRyYXdfY2lyY2xlX2NvbG9yICcgK1xuICAgICAgJ2RyYXdfZWxsaXBzZV9jb2xvciBkcmF3X3ByaW1pdGl2ZV9iZWdpbiBkcmF3X3ZlcnRleCAnICtcbiAgICAgICdkcmF3X3ZlcnRleF9jb2xvdXIgZHJhd192ZXJ0ZXhfY29sb3IgZHJhd19wcmltaXRpdmVfZW5kICcgK1xuICAgICAgJ3Nwcml0ZV9nZXRfdXZzIGZvbnRfZ2V0X3V2cyBzcHJpdGVfZ2V0X3RleHR1cmUgZm9udF9nZXRfdGV4dHVyZSAnICtcbiAgICAgICd0ZXh0dXJlX2dldF93aWR0aCB0ZXh0dXJlX2dldF9oZWlnaHQgdGV4dHVyZV9nZXRfdXZzICcgK1xuICAgICAgJ2RyYXdfcHJpbWl0aXZlX2JlZ2luX3RleHR1cmUgZHJhd192ZXJ0ZXhfdGV4dHVyZSAnICtcbiAgICAgICdkcmF3X3ZlcnRleF90ZXh0dXJlX2NvbG91ciBkcmF3X3ZlcnRleF90ZXh0dXJlX2NvbG9yICcgK1xuICAgICAgJ3RleHR1cmVfZ2xvYmFsX3NjYWxlIHN1cmZhY2VfY3JlYXRlIHN1cmZhY2VfY3JlYXRlX2V4dCAnICtcbiAgICAgICdzdXJmYWNlX3Jlc2l6ZSBzdXJmYWNlX2ZyZWUgc3VyZmFjZV9leGlzdHMgc3VyZmFjZV9nZXRfd2lkdGggJyArXG4gICAgICAnc3VyZmFjZV9nZXRfaGVpZ2h0IHN1cmZhY2VfZ2V0X3RleHR1cmUgc3VyZmFjZV9zZXRfdGFyZ2V0ICcgK1xuICAgICAgJ3N1cmZhY2Vfc2V0X3RhcmdldF9leHQgc3VyZmFjZV9yZXNldF90YXJnZXQgc3VyZmFjZV9kZXB0aF9kaXNhYmxlICcgK1xuICAgICAgJ3N1cmZhY2VfZ2V0X2RlcHRoX2Rpc2FibGUgZHJhd19zdXJmYWNlIGRyYXdfc3VyZmFjZV9zdHJldGNoZWQgJyArXG4gICAgICAnZHJhd19zdXJmYWNlX3RpbGVkIGRyYXdfc3VyZmFjZV9wYXJ0IGRyYXdfc3VyZmFjZV9leHQgJyArXG4gICAgICAnZHJhd19zdXJmYWNlX3N0cmV0Y2hlZF9leHQgZHJhd19zdXJmYWNlX3RpbGVkX2V4dCAnICtcbiAgICAgICdkcmF3X3N1cmZhY2VfcGFydF9leHQgZHJhd19zdXJmYWNlX2dlbmVyYWwgc3VyZmFjZV9nZXRwaXhlbCAnICtcbiAgICAgICdzdXJmYWNlX2dldHBpeGVsX2V4dCBzdXJmYWNlX3NhdmUgc3VyZmFjZV9zYXZlX3BhcnQgc3VyZmFjZV9jb3B5ICcgK1xuICAgICAgJ3N1cmZhY2VfY29weV9wYXJ0IGFwcGxpY2F0aW9uX3N1cmZhY2VfZHJhd19lbmFibGUgJyArXG4gICAgICAnYXBwbGljYXRpb25fZ2V0X3Bvc2l0aW9uIGFwcGxpY2F0aW9uX3N1cmZhY2VfZW5hYmxlICcgK1xuICAgICAgJ2FwcGxpY2F0aW9uX3N1cmZhY2VfaXNfZW5hYmxlZCBkaXNwbGF5X2dldF93aWR0aCBkaXNwbGF5X2dldF9oZWlnaHQgJyArXG4gICAgICAnZGlzcGxheV9nZXRfb3JpZW50YXRpb24gZGlzcGxheV9nZXRfZ3VpX3dpZHRoIGRpc3BsYXlfZ2V0X2d1aV9oZWlnaHQgJyArXG4gICAgICAnZGlzcGxheV9yZXNldCBkaXNwbGF5X21vdXNlX2dldF94IGRpc3BsYXlfbW91c2VfZ2V0X3kgJyArXG4gICAgICAnZGlzcGxheV9tb3VzZV9zZXQgZGlzcGxheV9zZXRfdWlfdmlzaWJpbGl0eSAnICtcbiAgICAgICd3aW5kb3dfc2V0X2Z1bGxzY3JlZW4gd2luZG93X2dldF9mdWxsc2NyZWVuICcgK1xuICAgICAgJ3dpbmRvd19zZXRfY2FwdGlvbiB3aW5kb3dfc2V0X21pbl93aWR0aCB3aW5kb3dfc2V0X21heF93aWR0aCAnICtcbiAgICAgICd3aW5kb3dfc2V0X21pbl9oZWlnaHQgd2luZG93X3NldF9tYXhfaGVpZ2h0IHdpbmRvd19nZXRfdmlzaWJsZV9yZWN0cyAnICtcbiAgICAgICd3aW5kb3dfZ2V0X2NhcHRpb24gd2luZG93X3NldF9jdXJzb3Igd2luZG93X2dldF9jdXJzb3IgJyArXG4gICAgICAnd2luZG93X3NldF9jb2xvdXIgd2luZG93X2dldF9jb2xvdXIgd2luZG93X3NldF9jb2xvciAnICtcbiAgICAgICd3aW5kb3dfZ2V0X2NvbG9yIHdpbmRvd19zZXRfcG9zaXRpb24gd2luZG93X3NldF9zaXplICcgK1xuICAgICAgJ3dpbmRvd19zZXRfcmVjdGFuZ2xlIHdpbmRvd19jZW50ZXIgd2luZG93X2dldF94IHdpbmRvd19nZXRfeSAnICtcbiAgICAgICd3aW5kb3dfZ2V0X3dpZHRoIHdpbmRvd19nZXRfaGVpZ2h0IHdpbmRvd19tb3VzZV9nZXRfeCAnICtcbiAgICAgICd3aW5kb3dfbW91c2VfZ2V0X3kgd2luZG93X21vdXNlX3NldCB3aW5kb3dfdmlld19tb3VzZV9nZXRfeCAnICtcbiAgICAgICd3aW5kb3dfdmlld19tb3VzZV9nZXRfeSB3aW5kb3dfdmlld3NfbW91c2VfZ2V0X3ggJyArXG4gICAgICAnd2luZG93X3ZpZXdzX21vdXNlX2dldF95IGF1ZGlvX2xpc3RlbmVyX3Bvc2l0aW9uICcgK1xuICAgICAgJ2F1ZGlvX2xpc3RlbmVyX3ZlbG9jaXR5IGF1ZGlvX2xpc3RlbmVyX29yaWVudGF0aW9uICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfcG9zaXRpb24gYXVkaW9fZW1pdHRlcl9jcmVhdGUgYXVkaW9fZW1pdHRlcl9mcmVlICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZXhpc3RzIGF1ZGlvX2VtaXR0ZXJfcGl0Y2ggYXVkaW9fZW1pdHRlcl92ZWxvY2l0eSAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX2ZhbGxvZmYgYXVkaW9fZW1pdHRlcl9nYWluIGF1ZGlvX3BsYXlfc291bmQgJyArXG4gICAgICAnYXVkaW9fcGxheV9zb3VuZF9vbiBhdWRpb19wbGF5X3NvdW5kX2F0IGF1ZGlvX3N0b3Bfc291bmQgJyArXG4gICAgICAnYXVkaW9fcmVzdW1lX211c2ljIGF1ZGlvX211c2ljX2lzX3BsYXlpbmcgYXVkaW9fcmVzdW1lX3NvdW5kICcgK1xuICAgICAgJ2F1ZGlvX3BhdXNlX3NvdW5kIGF1ZGlvX3BhdXNlX211c2ljIGF1ZGlvX2NoYW5uZWxfbnVtICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2xlbmd0aCBhdWRpb19nZXRfdHlwZSBhdWRpb19mYWxsb2ZmX3NldF9tb2RlbCAnICtcbiAgICAgICdhdWRpb19wbGF5X211c2ljIGF1ZGlvX3N0b3BfbXVzaWMgYXVkaW9fbWFzdGVyX2dhaW4gYXVkaW9fbXVzaWNfZ2FpbiAnICtcbiAgICAgICdhdWRpb19zb3VuZF9nYWluIGF1ZGlvX3NvdW5kX3BpdGNoIGF1ZGlvX3N0b3BfYWxsIGF1ZGlvX3Jlc3VtZV9hbGwgJyArXG4gICAgICAnYXVkaW9fcGF1c2VfYWxsIGF1ZGlvX2lzX3BsYXlpbmcgYXVkaW9faXNfcGF1c2VkIGF1ZGlvX2V4aXN0cyAnICtcbiAgICAgICdhdWRpb19zb3VuZF9zZXRfdHJhY2tfcG9zaXRpb24gYXVkaW9fc291bmRfZ2V0X3RyYWNrX3Bvc2l0aW9uICcgK1xuICAgICAgJ2F1ZGlvX2VtaXR0ZXJfZ2V0X2dhaW4gYXVkaW9fZW1pdHRlcl9nZXRfcGl0Y2ggYXVkaW9fZW1pdHRlcl9nZXRfeCAnICtcbiAgICAgICdhdWRpb19lbWl0dGVyX2dldF95IGF1ZGlvX2VtaXR0ZXJfZ2V0X3ogYXVkaW9fZW1pdHRlcl9nZXRfdnggJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9nZXRfdnkgYXVkaW9fZW1pdHRlcl9nZXRfdnogJyArXG4gICAgICAnYXVkaW9fbGlzdGVuZXJfc2V0X3Bvc2l0aW9uIGF1ZGlvX2xpc3RlbmVyX3NldF92ZWxvY2l0eSAnICtcbiAgICAgICdhdWRpb19saXN0ZW5lcl9zZXRfb3JpZW50YXRpb24gYXVkaW9fbGlzdGVuZXJfZ2V0X2RhdGEgJyArXG4gICAgICAnYXVkaW9fc2V0X21hc3Rlcl9nYWluIGF1ZGlvX2dldF9tYXN0ZXJfZ2FpbiBhdWRpb19zb3VuZF9nZXRfZ2FpbiAnICtcbiAgICAgICdhdWRpb19zb3VuZF9nZXRfcGl0Y2ggYXVkaW9fZ2V0X25hbWUgYXVkaW9fc291bmRfc2V0X3RyYWNrX3Bvc2l0aW9uICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dldF90cmFja19wb3NpdGlvbiBhdWRpb19jcmVhdGVfc3RyZWFtICcgK1xuICAgICAgJ2F1ZGlvX2Rlc3Ryb3lfc3RyZWFtIGF1ZGlvX2NyZWF0ZV9zeW5jX2dyb3VwICcgK1xuICAgICAgJ2F1ZGlvX2Rlc3Ryb3lfc3luY19ncm91cCBhdWRpb19wbGF5X2luX3N5bmNfZ3JvdXAgJyArXG4gICAgICAnYXVkaW9fc3RhcnRfc3luY19ncm91cCBhdWRpb19zdG9wX3N5bmNfZ3JvdXAgYXVkaW9fcGF1c2Vfc3luY19ncm91cCAnICtcbiAgICAgICdhdWRpb19yZXN1bWVfc3luY19ncm91cCBhdWRpb19zeW5jX2dyb3VwX2dldF90cmFja19wb3MgJyArXG4gICAgICAnYXVkaW9fc3luY19ncm91cF9kZWJ1ZyBhdWRpb19zeW5jX2dyb3VwX2lzX3BsYXlpbmcgYXVkaW9fZGVidWcgJyArXG4gICAgICAnYXVkaW9fZ3JvdXBfbG9hZCBhdWRpb19ncm91cF91bmxvYWQgYXVkaW9fZ3JvdXBfaXNfbG9hZGVkICcgK1xuICAgICAgJ2F1ZGlvX2dyb3VwX2xvYWRfcHJvZ3Jlc3MgYXVkaW9fZ3JvdXBfbmFtZSBhdWRpb19ncm91cF9zdG9wX2FsbCAnICtcbiAgICAgICdhdWRpb19ncm91cF9zZXRfZ2FpbiBhdWRpb19jcmVhdGVfYnVmZmVyX3NvdW5kICcgK1xuICAgICAgJ2F1ZGlvX2ZyZWVfYnVmZmVyX3NvdW5kIGF1ZGlvX2NyZWF0ZV9wbGF5X3F1ZXVlICcgK1xuICAgICAgJ2F1ZGlvX2ZyZWVfcGxheV9xdWV1ZSBhdWRpb19xdWV1ZV9zb3VuZCBhdWRpb19nZXRfcmVjb3JkZXJfY291bnQgJyArXG4gICAgICAnYXVkaW9fZ2V0X3JlY29yZGVyX2luZm8gYXVkaW9fc3RhcnRfcmVjb3JkaW5nIGF1ZGlvX3N0b3BfcmVjb3JkaW5nICcgK1xuICAgICAgJ2F1ZGlvX3NvdW5kX2dldF9saXN0ZW5lcl9tYXNrIGF1ZGlvX2VtaXR0ZXJfZ2V0X2xpc3RlbmVyX21hc2sgJyArXG4gICAgICAnYXVkaW9fZ2V0X2xpc3RlbmVyX21hc2sgYXVkaW9fc291bmRfc2V0X2xpc3RlbmVyX21hc2sgJyArXG4gICAgICAnYXVkaW9fZW1pdHRlcl9zZXRfbGlzdGVuZXJfbWFzayBhdWRpb19zZXRfbGlzdGVuZXJfbWFzayAnICtcbiAgICAgICdhdWRpb19nZXRfbGlzdGVuZXJfY291bnQgYXVkaW9fZ2V0X2xpc3RlbmVyX2luZm8gYXVkaW9fc3lzdGVtICcgK1xuICAgICAgJ3Nob3dfbWVzc2FnZSBzaG93X21lc3NhZ2VfYXN5bmMgY2xpY2thYmxlX2FkZCBjbGlja2FibGVfYWRkX2V4dCAnICtcbiAgICAgICdjbGlja2FibGVfY2hhbmdlIGNsaWNrYWJsZV9jaGFuZ2VfZXh0IGNsaWNrYWJsZV9kZWxldGUgJyArXG4gICAgICAnY2xpY2thYmxlX2V4aXN0cyBjbGlja2FibGVfc2V0X3N0eWxlIHNob3dfcXVlc3Rpb24gJyArXG4gICAgICAnc2hvd19xdWVzdGlvbl9hc3luYyBnZXRfaW50ZWdlciBnZXRfc3RyaW5nIGdldF9pbnRlZ2VyX2FzeW5jICcgK1xuICAgICAgJ2dldF9zdHJpbmdfYXN5bmMgZ2V0X2xvZ2luX2FzeW5jIGdldF9vcGVuX2ZpbGVuYW1lIGdldF9zYXZlX2ZpbGVuYW1lICcgK1xuICAgICAgJ2dldF9vcGVuX2ZpbGVuYW1lX2V4dCBnZXRfc2F2ZV9maWxlbmFtZV9leHQgc2hvd19lcnJvciAnICtcbiAgICAgICdoaWdoc2NvcmVfY2xlYXIgaGlnaHNjb3JlX2FkZCBoaWdoc2NvcmVfdmFsdWUgaGlnaHNjb3JlX25hbWUgJyArXG4gICAgICAnZHJhd19oaWdoc2NvcmUgc3ByaXRlX2V4aXN0cyBzcHJpdGVfZ2V0X25hbWUgc3ByaXRlX2dldF9udW1iZXIgJyArXG4gICAgICAnc3ByaXRlX2dldF93aWR0aCBzcHJpdGVfZ2V0X2hlaWdodCBzcHJpdGVfZ2V0X3hvZmZzZXQgJyArXG4gICAgICAnc3ByaXRlX2dldF95b2Zmc2V0IHNwcml0ZV9nZXRfYmJveF9sZWZ0IHNwcml0ZV9nZXRfYmJveF9yaWdodCAnICtcbiAgICAgICdzcHJpdGVfZ2V0X2Jib3hfdG9wIHNwcml0ZV9nZXRfYmJveF9ib3R0b20gc3ByaXRlX3NhdmUgJyArXG4gICAgICAnc3ByaXRlX3NhdmVfc3RyaXAgc3ByaXRlX3NldF9jYWNoZV9zaXplIHNwcml0ZV9zZXRfY2FjaGVfc2l6ZV9leHQgJyArXG4gICAgICAnc3ByaXRlX2dldF90cGUgc3ByaXRlX3ByZWZldGNoIHNwcml0ZV9wcmVmZXRjaF9tdWx0aSBzcHJpdGVfZmx1c2ggJyArXG4gICAgICAnc3ByaXRlX2ZsdXNoX211bHRpIHNwcml0ZV9zZXRfc3BlZWQgc3ByaXRlX2dldF9zcGVlZF90eXBlICcgK1xuICAgICAgJ3Nwcml0ZV9nZXRfc3BlZWQgZm9udF9leGlzdHMgZm9udF9nZXRfbmFtZSBmb250X2dldF9mb250bmFtZSAnICtcbiAgICAgICdmb250X2dldF9ib2xkIGZvbnRfZ2V0X2l0YWxpYyBmb250X2dldF9maXJzdCBmb250X2dldF9sYXN0ICcgK1xuICAgICAgJ2ZvbnRfZ2V0X3NpemUgZm9udF9zZXRfY2FjaGVfc2l6ZSBwYXRoX2V4aXN0cyBwYXRoX2dldF9uYW1lICcgK1xuICAgICAgJ3BhdGhfZ2V0X2xlbmd0aCBwYXRoX2dldF90aW1lIHBhdGhfZ2V0X2tpbmQgcGF0aF9nZXRfY2xvc2VkICcgK1xuICAgICAgJ3BhdGhfZ2V0X3ByZWNpc2lvbiBwYXRoX2dldF9udW1iZXIgcGF0aF9nZXRfcG9pbnRfeCBwYXRoX2dldF9wb2ludF95ICcgK1xuICAgICAgJ3BhdGhfZ2V0X3BvaW50X3NwZWVkIHBhdGhfZ2V0X3ggcGF0aF9nZXRfeSBwYXRoX2dldF9zcGVlZCAnICtcbiAgICAgICdzY3JpcHRfZXhpc3RzIHNjcmlwdF9nZXRfbmFtZSB0aW1lbGluZV9hZGQgdGltZWxpbmVfZGVsZXRlICcgK1xuICAgICAgJ3RpbWVsaW5lX2NsZWFyIHRpbWVsaW5lX2V4aXN0cyB0aW1lbGluZV9nZXRfbmFtZSAnICtcbiAgICAgICd0aW1lbGluZV9tb21lbnRfY2xlYXIgdGltZWxpbmVfbW9tZW50X2FkZF9zY3JpcHQgdGltZWxpbmVfc2l6ZSAnICtcbiAgICAgICd0aW1lbGluZV9tYXhfbW9tZW50IG9iamVjdF9leGlzdHMgb2JqZWN0X2dldF9uYW1lIG9iamVjdF9nZXRfc3ByaXRlICcgK1xuICAgICAgJ29iamVjdF9nZXRfc29saWQgb2JqZWN0X2dldF92aXNpYmxlIG9iamVjdF9nZXRfcGVyc2lzdGVudCAnICtcbiAgICAgICdvYmplY3RfZ2V0X21hc2sgb2JqZWN0X2dldF9wYXJlbnQgb2JqZWN0X2dldF9waHlzaWNzICcgK1xuICAgICAgJ29iamVjdF9pc19hbmNlc3RvciByb29tX2V4aXN0cyByb29tX2dldF9uYW1lIHNwcml0ZV9zZXRfb2Zmc2V0ICcgK1xuICAgICAgJ3Nwcml0ZV9kdXBsaWNhdGUgc3ByaXRlX2Fzc2lnbiBzcHJpdGVfbWVyZ2Ugc3ByaXRlX2FkZCAnICtcbiAgICAgICdzcHJpdGVfcmVwbGFjZSBzcHJpdGVfY3JlYXRlX2Zyb21fc3VyZmFjZSBzcHJpdGVfYWRkX2Zyb21fc3VyZmFjZSAnICtcbiAgICAgICdzcHJpdGVfZGVsZXRlIHNwcml0ZV9zZXRfYWxwaGFfZnJvbV9zcHJpdGUgc3ByaXRlX2NvbGxpc2lvbl9tYXNrICcgK1xuICAgICAgJ2ZvbnRfYWRkX2VuYWJsZV9hYSBmb250X2FkZF9nZXRfZW5hYmxlX2FhIGZvbnRfYWRkIGZvbnRfYWRkX3Nwcml0ZSAnICtcbiAgICAgICdmb250X2FkZF9zcHJpdGVfZXh0IGZvbnRfcmVwbGFjZSBmb250X3JlcGxhY2Vfc3ByaXRlICcgK1xuICAgICAgJ2ZvbnRfcmVwbGFjZV9zcHJpdGVfZXh0IGZvbnRfZGVsZXRlIHBhdGhfc2V0X2tpbmQgcGF0aF9zZXRfY2xvc2VkICcgK1xuICAgICAgJ3BhdGhfc2V0X3ByZWNpc2lvbiBwYXRoX2FkZCBwYXRoX2Fzc2lnbiBwYXRoX2R1cGxpY2F0ZSBwYXRoX2FwcGVuZCAnICtcbiAgICAgICdwYXRoX2RlbGV0ZSBwYXRoX2FkZF9wb2ludCBwYXRoX2luc2VydF9wb2ludCBwYXRoX2NoYW5nZV9wb2ludCAnICtcbiAgICAgICdwYXRoX2RlbGV0ZV9wb2ludCBwYXRoX2NsZWFyX3BvaW50cyBwYXRoX3JldmVyc2UgcGF0aF9taXJyb3IgJyArXG4gICAgICAncGF0aF9mbGlwIHBhdGhfcm90YXRlIHBhdGhfcmVzY2FsZSBwYXRoX3NoaWZ0IHNjcmlwdF9leGVjdXRlICcgK1xuICAgICAgJ29iamVjdF9zZXRfc3ByaXRlIG9iamVjdF9zZXRfc29saWQgb2JqZWN0X3NldF92aXNpYmxlICcgK1xuICAgICAgJ29iamVjdF9zZXRfcGVyc2lzdGVudCBvYmplY3Rfc2V0X21hc2sgcm9vbV9zZXRfd2lkdGggcm9vbV9zZXRfaGVpZ2h0ICcgK1xuICAgICAgJ3Jvb21fc2V0X3BlcnNpc3RlbnQgcm9vbV9zZXRfYmFja2dyb3VuZF9jb2xvdXIgJyArXG4gICAgICAncm9vbV9zZXRfYmFja2dyb3VuZF9jb2xvciByb29tX3NldF92aWV3IHJvb21fc2V0X3ZpZXdwb3J0ICcgK1xuICAgICAgJ3Jvb21fZ2V0X3ZpZXdwb3J0IHJvb21fc2V0X3ZpZXdfZW5hYmxlZCByb29tX2FkZCByb29tX2R1cGxpY2F0ZSAnICtcbiAgICAgICdyb29tX2Fzc2lnbiByb29tX2luc3RhbmNlX2FkZCByb29tX2luc3RhbmNlX2NsZWFyIHJvb21fZ2V0X2NhbWVyYSAnICtcbiAgICAgICdyb29tX3NldF9jYW1lcmEgYXNzZXRfZ2V0X2luZGV4IGFzc2V0X2dldF90eXBlICcgK1xuICAgICAgJ2ZpbGVfdGV4dF9vcGVuX2Zyb21fc3RyaW5nIGZpbGVfdGV4dF9vcGVuX3JlYWQgZmlsZV90ZXh0X29wZW5fd3JpdGUgJyArXG4gICAgICAnZmlsZV90ZXh0X29wZW5fYXBwZW5kIGZpbGVfdGV4dF9jbG9zZSBmaWxlX3RleHRfd3JpdGVfc3RyaW5nICcgK1xuICAgICAgJ2ZpbGVfdGV4dF93cml0ZV9yZWFsIGZpbGVfdGV4dF93cml0ZWxuIGZpbGVfdGV4dF9yZWFkX3N0cmluZyAnICtcbiAgICAgICdmaWxlX3RleHRfcmVhZF9yZWFsIGZpbGVfdGV4dF9yZWFkbG4gZmlsZV90ZXh0X2VvZiBmaWxlX3RleHRfZW9sbiAnICtcbiAgICAgICdmaWxlX2V4aXN0cyBmaWxlX2RlbGV0ZSBmaWxlX3JlbmFtZSBmaWxlX2NvcHkgZGlyZWN0b3J5X2V4aXN0cyAnICtcbiAgICAgICdkaXJlY3RvcnlfY3JlYXRlIGRpcmVjdG9yeV9kZXN0cm95IGZpbGVfZmluZF9maXJzdCBmaWxlX2ZpbmRfbmV4dCAnICtcbiAgICAgICdmaWxlX2ZpbmRfY2xvc2UgZmlsZV9hdHRyaWJ1dGVzIGZpbGVuYW1lX25hbWUgZmlsZW5hbWVfcGF0aCAnICtcbiAgICAgICdmaWxlbmFtZV9kaXIgZmlsZW5hbWVfZHJpdmUgZmlsZW5hbWVfZXh0IGZpbGVuYW1lX2NoYW5nZV9leHQgJyArXG4gICAgICAnZmlsZV9iaW5fb3BlbiBmaWxlX2Jpbl9yZXdyaXRlIGZpbGVfYmluX2Nsb3NlIGZpbGVfYmluX3Bvc2l0aW9uICcgK1xuICAgICAgJ2ZpbGVfYmluX3NpemUgZmlsZV9iaW5fc2VlayBmaWxlX2Jpbl93cml0ZV9ieXRlIGZpbGVfYmluX3JlYWRfYnl0ZSAnICtcbiAgICAgICdwYXJhbWV0ZXJfY291bnQgcGFyYW1ldGVyX3N0cmluZyBlbnZpcm9ubWVudF9nZXRfdmFyaWFibGUgJyArXG4gICAgICAnaW5pX29wZW5fZnJvbV9zdHJpbmcgaW5pX29wZW4gaW5pX2Nsb3NlIGluaV9yZWFkX3N0cmluZyAnICtcbiAgICAgICdpbmlfcmVhZF9yZWFsIGluaV93cml0ZV9zdHJpbmcgaW5pX3dyaXRlX3JlYWwgaW5pX2tleV9leGlzdHMgJyArXG4gICAgICAnaW5pX3NlY3Rpb25fZXhpc3RzIGluaV9rZXlfZGVsZXRlIGluaV9zZWN0aW9uX2RlbGV0ZSAnICtcbiAgICAgICdkc19zZXRfcHJlY2lzaW9uIGRzX2V4aXN0cyBkc19zdGFja19jcmVhdGUgZHNfc3RhY2tfZGVzdHJveSAnICtcbiAgICAgICdkc19zdGFja19jbGVhciBkc19zdGFja19jb3B5IGRzX3N0YWNrX3NpemUgZHNfc3RhY2tfZW1wdHkgJyArXG4gICAgICAnZHNfc3RhY2tfcHVzaCBkc19zdGFja19wb3AgZHNfc3RhY2tfdG9wIGRzX3N0YWNrX3dyaXRlIGRzX3N0YWNrX3JlYWQgJyArXG4gICAgICAnZHNfcXVldWVfY3JlYXRlIGRzX3F1ZXVlX2Rlc3Ryb3kgZHNfcXVldWVfY2xlYXIgZHNfcXVldWVfY29weSAnICtcbiAgICAgICdkc19xdWV1ZV9zaXplIGRzX3F1ZXVlX2VtcHR5IGRzX3F1ZXVlX2VucXVldWUgZHNfcXVldWVfZGVxdWV1ZSAnICtcbiAgICAgICdkc19xdWV1ZV9oZWFkIGRzX3F1ZXVlX3RhaWwgZHNfcXVldWVfd3JpdGUgZHNfcXVldWVfcmVhZCAnICtcbiAgICAgICdkc19saXN0X2NyZWF0ZSBkc19saXN0X2Rlc3Ryb3kgZHNfbGlzdF9jbGVhciBkc19saXN0X2NvcHkgJyArXG4gICAgICAnZHNfbGlzdF9zaXplIGRzX2xpc3RfZW1wdHkgZHNfbGlzdF9hZGQgZHNfbGlzdF9pbnNlcnQgJyArXG4gICAgICAnZHNfbGlzdF9yZXBsYWNlIGRzX2xpc3RfZGVsZXRlIGRzX2xpc3RfZmluZF9pbmRleCBkc19saXN0X2ZpbmRfdmFsdWUgJyArXG4gICAgICAnZHNfbGlzdF9tYXJrX2FzX2xpc3QgZHNfbGlzdF9tYXJrX2FzX21hcCBkc19saXN0X3NvcnQgJyArXG4gICAgICAnZHNfbGlzdF9zaHVmZmxlIGRzX2xpc3Rfd3JpdGUgZHNfbGlzdF9yZWFkIGRzX2xpc3Rfc2V0IGRzX21hcF9jcmVhdGUgJyArXG4gICAgICAnZHNfbWFwX2Rlc3Ryb3kgZHNfbWFwX2NsZWFyIGRzX21hcF9jb3B5IGRzX21hcF9zaXplIGRzX21hcF9lbXB0eSAnICtcbiAgICAgICdkc19tYXBfYWRkIGRzX21hcF9hZGRfbGlzdCBkc19tYXBfYWRkX21hcCBkc19tYXBfcmVwbGFjZSAnICtcbiAgICAgICdkc19tYXBfcmVwbGFjZV9tYXAgZHNfbWFwX3JlcGxhY2VfbGlzdCBkc19tYXBfZGVsZXRlIGRzX21hcF9leGlzdHMgJyArXG4gICAgICAnZHNfbWFwX2ZpbmRfdmFsdWUgZHNfbWFwX2ZpbmRfcHJldmlvdXMgZHNfbWFwX2ZpbmRfbmV4dCAnICtcbiAgICAgICdkc19tYXBfZmluZF9maXJzdCBkc19tYXBfZmluZF9sYXN0IGRzX21hcF93cml0ZSBkc19tYXBfcmVhZCAnICtcbiAgICAgICdkc19tYXBfc2VjdXJlX3NhdmUgZHNfbWFwX3NlY3VyZV9sb2FkIGRzX21hcF9zZWN1cmVfbG9hZF9idWZmZXIgJyArXG4gICAgICAnZHNfbWFwX3NlY3VyZV9zYXZlX2J1ZmZlciBkc19tYXBfc2V0IGRzX3ByaW9yaXR5X2NyZWF0ZSAnICtcbiAgICAgICdkc19wcmlvcml0eV9kZXN0cm95IGRzX3ByaW9yaXR5X2NsZWFyIGRzX3ByaW9yaXR5X2NvcHkgJyArXG4gICAgICAnZHNfcHJpb3JpdHlfc2l6ZSBkc19wcmlvcml0eV9lbXB0eSBkc19wcmlvcml0eV9hZGQgJyArXG4gICAgICAnZHNfcHJpb3JpdHlfY2hhbmdlX3ByaW9yaXR5IGRzX3ByaW9yaXR5X2ZpbmRfcHJpb3JpdHkgJyArXG4gICAgICAnZHNfcHJpb3JpdHlfZGVsZXRlX3ZhbHVlIGRzX3ByaW9yaXR5X2RlbGV0ZV9taW4gZHNfcHJpb3JpdHlfZmluZF9taW4gJyArXG4gICAgICAnZHNfcHJpb3JpdHlfZGVsZXRlX21heCBkc19wcmlvcml0eV9maW5kX21heCBkc19wcmlvcml0eV93cml0ZSAnICtcbiAgICAgICdkc19wcmlvcml0eV9yZWFkIGRzX2dyaWRfY3JlYXRlIGRzX2dyaWRfZGVzdHJveSBkc19ncmlkX2NvcHkgJyArXG4gICAgICAnZHNfZ3JpZF9yZXNpemUgZHNfZ3JpZF93aWR0aCBkc19ncmlkX2hlaWdodCBkc19ncmlkX2NsZWFyICcgK1xuICAgICAgJ2RzX2dyaWRfc2V0IGRzX2dyaWRfYWRkIGRzX2dyaWRfbXVsdGlwbHkgZHNfZ3JpZF9zZXRfcmVnaW9uICcgK1xuICAgICAgJ2RzX2dyaWRfYWRkX3JlZ2lvbiBkc19ncmlkX211bHRpcGx5X3JlZ2lvbiBkc19ncmlkX3NldF9kaXNrICcgK1xuICAgICAgJ2RzX2dyaWRfYWRkX2Rpc2sgZHNfZ3JpZF9tdWx0aXBseV9kaXNrIGRzX2dyaWRfc2V0X2dyaWRfcmVnaW9uICcgK1xuICAgICAgJ2RzX2dyaWRfYWRkX2dyaWRfcmVnaW9uIGRzX2dyaWRfbXVsdGlwbHlfZ3JpZF9yZWdpb24gZHNfZ3JpZF9nZXQgJyArXG4gICAgICAnZHNfZ3JpZF9nZXRfc3VtIGRzX2dyaWRfZ2V0X21heCBkc19ncmlkX2dldF9taW4gZHNfZ3JpZF9nZXRfbWVhbiAnICtcbiAgICAgICdkc19ncmlkX2dldF9kaXNrX3N1bSBkc19ncmlkX2dldF9kaXNrX21pbiBkc19ncmlkX2dldF9kaXNrX21heCAnICtcbiAgICAgICdkc19ncmlkX2dldF9kaXNrX21lYW4gZHNfZ3JpZF92YWx1ZV9leGlzdHMgZHNfZ3JpZF92YWx1ZV94ICcgK1xuICAgICAgJ2RzX2dyaWRfdmFsdWVfeSBkc19ncmlkX3ZhbHVlX2Rpc2tfZXhpc3RzIGRzX2dyaWRfdmFsdWVfZGlza194ICcgK1xuICAgICAgJ2RzX2dyaWRfdmFsdWVfZGlza195IGRzX2dyaWRfc2h1ZmZsZSBkc19ncmlkX3dyaXRlIGRzX2dyaWRfcmVhZCAnICtcbiAgICAgICdkc19ncmlkX3NvcnQgZHNfZ3JpZF9zZXQgZHNfZ3JpZF9nZXQgZWZmZWN0X2NyZWF0ZV9iZWxvdyAnICtcbiAgICAgICdlZmZlY3RfY3JlYXRlX2Fib3ZlIGVmZmVjdF9jbGVhciBwYXJ0X3R5cGVfY3JlYXRlIHBhcnRfdHlwZV9kZXN0cm95ICcgK1xuICAgICAgJ3BhcnRfdHlwZV9leGlzdHMgcGFydF90eXBlX2NsZWFyIHBhcnRfdHlwZV9zaGFwZSBwYXJ0X3R5cGVfc3ByaXRlICcgK1xuICAgICAgJ3BhcnRfdHlwZV9zaXplIHBhcnRfdHlwZV9zY2FsZSBwYXJ0X3R5cGVfb3JpZW50YXRpb24gcGFydF90eXBlX2xpZmUgJyArXG4gICAgICAncGFydF90eXBlX3N0ZXAgcGFydF90eXBlX2RlYXRoIHBhcnRfdHlwZV9zcGVlZCBwYXJ0X3R5cGVfZGlyZWN0aW9uICcgK1xuICAgICAgJ3BhcnRfdHlwZV9ncmF2aXR5IHBhcnRfdHlwZV9jb2xvdXIxIHBhcnRfdHlwZV9jb2xvdXIyICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvdXIzIHBhcnRfdHlwZV9jb2xvdXJfbWl4IHBhcnRfdHlwZV9jb2xvdXJfcmdiICcgK1xuICAgICAgJ3BhcnRfdHlwZV9jb2xvdXJfaHN2IHBhcnRfdHlwZV9jb2xvcjEgcGFydF90eXBlX2NvbG9yMiAnICtcbiAgICAgICdwYXJ0X3R5cGVfY29sb3IzIHBhcnRfdHlwZV9jb2xvcl9taXggcGFydF90eXBlX2NvbG9yX3JnYiAnICtcbiAgICAgICdwYXJ0X3R5cGVfY29sb3JfaHN2IHBhcnRfdHlwZV9hbHBoYTEgcGFydF90eXBlX2FscGhhMiAnICtcbiAgICAgICdwYXJ0X3R5cGVfYWxwaGEzIHBhcnRfdHlwZV9ibGVuZCBwYXJ0X3N5c3RlbV9jcmVhdGUgJyArXG4gICAgICAncGFydF9zeXN0ZW1fY3JlYXRlX2xheWVyIHBhcnRfc3lzdGVtX2Rlc3Ryb3kgcGFydF9zeXN0ZW1fZXhpc3RzICcgK1xuICAgICAgJ3BhcnRfc3lzdGVtX2NsZWFyIHBhcnRfc3lzdGVtX2RyYXdfb3JkZXIgcGFydF9zeXN0ZW1fZGVwdGggJyArXG4gICAgICAncGFydF9zeXN0ZW1fcG9zaXRpb24gcGFydF9zeXN0ZW1fYXV0b21hdGljX3VwZGF0ZSAnICtcbiAgICAgICdwYXJ0X3N5c3RlbV9hdXRvbWF0aWNfZHJhdyBwYXJ0X3N5c3RlbV91cGRhdGUgcGFydF9zeXN0ZW1fZHJhd2l0ICcgK1xuICAgICAgJ3BhcnRfc3lzdGVtX2dldF9sYXllciBwYXJ0X3N5c3RlbV9sYXllciBwYXJ0X3BhcnRpY2xlc19jcmVhdGUgJyArXG4gICAgICAncGFydF9wYXJ0aWNsZXNfY3JlYXRlX2NvbG91ciBwYXJ0X3BhcnRpY2xlc19jcmVhdGVfY29sb3IgJyArXG4gICAgICAncGFydF9wYXJ0aWNsZXNfY2xlYXIgcGFydF9wYXJ0aWNsZXNfY291bnQgcGFydF9lbWl0dGVyX2NyZWF0ZSAnICtcbiAgICAgICdwYXJ0X2VtaXR0ZXJfZGVzdHJveSBwYXJ0X2VtaXR0ZXJfZGVzdHJveV9hbGwgcGFydF9lbWl0dGVyX2V4aXN0cyAnICtcbiAgICAgICdwYXJ0X2VtaXR0ZXJfY2xlYXIgcGFydF9lbWl0dGVyX3JlZ2lvbiBwYXJ0X2VtaXR0ZXJfYnVyc3QgJyArXG4gICAgICAncGFydF9lbWl0dGVyX3N0cmVhbSBleHRlcm5hbF9jYWxsIGV4dGVybmFsX2RlZmluZSBleHRlcm5hbF9mcmVlICcgK1xuICAgICAgJ3dpbmRvd19oYW5kbGUgd2luZG93X2RldmljZSBtYXRyaXhfZ2V0IG1hdHJpeF9zZXQgJyArXG4gICAgICAnbWF0cml4X2J1aWxkX2lkZW50aXR5IG1hdHJpeF9idWlsZCBtYXRyaXhfYnVpbGRfbG9va2F0ICcgK1xuICAgICAgJ21hdHJpeF9idWlsZF9wcm9qZWN0aW9uX29ydGhvIG1hdHJpeF9idWlsZF9wcm9qZWN0aW9uX3BlcnNwZWN0aXZlICcgK1xuICAgICAgJ21hdHJpeF9idWlsZF9wcm9qZWN0aW9uX3BlcnNwZWN0aXZlX2ZvdiBtYXRyaXhfbXVsdGlwbHkgJyArXG4gICAgICAnbWF0cml4X3RyYW5zZm9ybV92ZXJ0ZXggbWF0cml4X3N0YWNrX3B1c2ggbWF0cml4X3N0YWNrX3BvcCAnICtcbiAgICAgICdtYXRyaXhfc3RhY2tfbXVsdGlwbHkgbWF0cml4X3N0YWNrX3NldCBtYXRyaXhfc3RhY2tfY2xlYXIgJyArXG4gICAgICAnbWF0cml4X3N0YWNrX3RvcCBtYXRyaXhfc3RhY2tfaXNfZW1wdHkgYnJvd3Nlcl9pbnB1dF9jYXB0dXJlICcgK1xuICAgICAgJ29zX2dldF9jb25maWcgb3NfZ2V0X2luZm8gb3NfZ2V0X2xhbmd1YWdlIG9zX2dldF9yZWdpb24gJyArXG4gICAgICAnb3NfbG9ja19vcmllbnRhdGlvbiBkaXNwbGF5X2dldF9kcGlfeCBkaXNwbGF5X2dldF9kcGlfeSAnICtcbiAgICAgICdkaXNwbGF5X3NldF9ndWlfc2l6ZSBkaXNwbGF5X3NldF9ndWlfbWF4aW1pc2UgJyArXG4gICAgICAnZGlzcGxheV9zZXRfZ3VpX21heGltaXplIGRldmljZV9tb3VzZV9kYmNsaWNrX2VuYWJsZSAnICtcbiAgICAgICdkaXNwbGF5X3NldF90aW1pbmdfbWV0aG9kIGRpc3BsYXlfZ2V0X3RpbWluZ19tZXRob2QgJyArXG4gICAgICAnZGlzcGxheV9zZXRfc2xlZXBfbWFyZ2luIGRpc3BsYXlfZ2V0X3NsZWVwX21hcmdpbiB2aXJ0dWFsX2tleV9hZGQgJyArXG4gICAgICAndmlydHVhbF9rZXlfaGlkZSB2aXJ0dWFsX2tleV9kZWxldGUgdmlydHVhbF9rZXlfc2hvdyAnICtcbiAgICAgICdkcmF3X2VuYWJsZV9kcmF3ZXZlbnQgZHJhd19lbmFibGVfc3dmX2FhIGRyYXdfc2V0X3N3Zl9hYV9sZXZlbCAnICtcbiAgICAgICdkcmF3X2dldF9zd2ZfYWFfbGV2ZWwgZHJhd190ZXh0dXJlX2ZsdXNoIGRyYXdfZmx1c2ggJyArXG4gICAgICAnZ3B1X3NldF9ibGVuZGVuYWJsZSBncHVfc2V0X3p0ZXN0ZW5hYmxlIGdwdV9zZXRfemZ1bmMgJyArXG4gICAgICAnZ3B1X3NldF96d3JpdGVlbmFibGUgZ3B1X3NldF9saWdodGluZ2VuYWJsZSBncHVfc2V0X2ZvZyAnICtcbiAgICAgICdncHVfc2V0X2N1bGxtb2RlIGdwdV9zZXRfYmxlbmRtb2RlIGdwdV9zZXRfYmxlbmRtb2RlX2V4dCAnICtcbiAgICAgICdncHVfc2V0X2JsZW5kbW9kZV9leHRfc2VwYWxwaGEgZ3B1X3NldF9jb2xvcndyaXRlZW5hYmxlICcgK1xuICAgICAgJ2dwdV9zZXRfY29sb3Vyd3JpdGVlbmFibGUgZ3B1X3NldF9hbHBoYXRlc3RlbmFibGUgJyArXG4gICAgICAnZ3B1X3NldF9hbHBoYXRlc3RyZWYgZ3B1X3NldF9hbHBoYXRlc3RmdW5jIGdwdV9zZXRfdGV4ZmlsdGVyICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4ZmlsdGVyX2V4dCBncHVfc2V0X3RleHJlcGVhdCBncHVfc2V0X3RleHJlcGVhdF9leHQgJyArXG4gICAgICAnZ3B1X3NldF90ZXhfZmlsdGVyIGdwdV9zZXRfdGV4X2ZpbHRlcl9leHQgZ3B1X3NldF90ZXhfcmVwZWF0ICcgK1xuICAgICAgJ2dwdV9zZXRfdGV4X3JlcGVhdF9leHQgZ3B1X3NldF90ZXhfbWlwX2ZpbHRlciAnICtcbiAgICAgICdncHVfc2V0X3RleF9taXBfZmlsdGVyX2V4dCBncHVfc2V0X3RleF9taXBfYmlhcyAnICtcbiAgICAgICdncHVfc2V0X3RleF9taXBfYmlhc19leHQgZ3B1X3NldF90ZXhfbWluX21pcCBncHVfc2V0X3RleF9taW5fbWlwX2V4dCAnICtcbiAgICAgICdncHVfc2V0X3RleF9tYXhfbWlwIGdwdV9zZXRfdGV4X21heF9taXBfZXh0IGdwdV9zZXRfdGV4X21heF9hbmlzbyAnICtcbiAgICAgICdncHVfc2V0X3RleF9tYXhfYW5pc29fZXh0IGdwdV9zZXRfdGV4X21pcF9lbmFibGUgJyArXG4gICAgICAnZ3B1X3NldF90ZXhfbWlwX2VuYWJsZV9leHQgZ3B1X2dldF9ibGVuZGVuYWJsZSBncHVfZ2V0X3p0ZXN0ZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfemZ1bmMgZ3B1X2dldF96d3JpdGVlbmFibGUgZ3B1X2dldF9saWdodGluZ2VuYWJsZSAnICtcbiAgICAgICdncHVfZ2V0X2ZvZyBncHVfZ2V0X2N1bGxtb2RlIGdwdV9nZXRfYmxlbmRtb2RlIGdwdV9nZXRfYmxlbmRtb2RlX2V4dCAnICtcbiAgICAgICdncHVfZ2V0X2JsZW5kbW9kZV9leHRfc2VwYWxwaGEgZ3B1X2dldF9ibGVuZG1vZGVfc3JjICcgK1xuICAgICAgJ2dwdV9nZXRfYmxlbmRtb2RlX2Rlc3QgZ3B1X2dldF9ibGVuZG1vZGVfc3JjYWxwaGEgJyArXG4gICAgICAnZ3B1X2dldF9ibGVuZG1vZGVfZGVzdGFscGhhIGdwdV9nZXRfY29sb3J3cml0ZWVuYWJsZSAnICtcbiAgICAgICdncHVfZ2V0X2NvbG91cndyaXRlZW5hYmxlIGdwdV9nZXRfYWxwaGF0ZXN0ZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfYWxwaGF0ZXN0cmVmIGdwdV9nZXRfYWxwaGF0ZXN0ZnVuYyBncHVfZ2V0X3RleGZpbHRlciAnICtcbiAgICAgICdncHVfZ2V0X3RleGZpbHRlcl9leHQgZ3B1X2dldF90ZXhyZXBlYXQgZ3B1X2dldF90ZXhyZXBlYXRfZXh0ICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4X2ZpbHRlciBncHVfZ2V0X3RleF9maWx0ZXJfZXh0IGdwdV9nZXRfdGV4X3JlcGVhdCAnICtcbiAgICAgICdncHVfZ2V0X3RleF9yZXBlYXRfZXh0IGdwdV9nZXRfdGV4X21pcF9maWx0ZXIgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWlwX2ZpbHRlcl9leHQgZ3B1X2dldF90ZXhfbWlwX2JpYXMgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWlwX2JpYXNfZXh0IGdwdV9nZXRfdGV4X21pbl9taXAgZ3B1X2dldF90ZXhfbWluX21pcF9leHQgJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWF4X21pcCBncHVfZ2V0X3RleF9tYXhfbWlwX2V4dCBncHVfZ2V0X3RleF9tYXhfYW5pc28gJyArXG4gICAgICAnZ3B1X2dldF90ZXhfbWF4X2FuaXNvX2V4dCBncHVfZ2V0X3RleF9taXBfZW5hYmxlICcgK1xuICAgICAgJ2dwdV9nZXRfdGV4X21pcF9lbmFibGVfZXh0IGdwdV9wdXNoX3N0YXRlIGdwdV9wb3Bfc3RhdGUgJyArXG4gICAgICAnZ3B1X2dldF9zdGF0ZSBncHVfc2V0X3N0YXRlIGRyYXdfbGlnaHRfZGVmaW5lX2FtYmllbnQgJyArXG4gICAgICAnZHJhd19saWdodF9kZWZpbmVfZGlyZWN0aW9uIGRyYXdfbGlnaHRfZGVmaW5lX3BvaW50ICcgK1xuICAgICAgJ2RyYXdfbGlnaHRfZW5hYmxlIGRyYXdfc2V0X2xpZ2h0aW5nIGRyYXdfbGlnaHRfZ2V0X2FtYmllbnQgJyArXG4gICAgICAnZHJhd19saWdodF9nZXQgZHJhd19nZXRfbGlnaHRpbmcgc2hvcF9sZWF2ZV9yYXRpbmcgdXJsX2dldF9kb21haW4gJyArXG4gICAgICAndXJsX29wZW4gdXJsX29wZW5fZXh0IHVybF9vcGVuX2Z1bGwgZ2V0X3RpbWVyIGFjaGlldmVtZW50X2xvZ2luICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2xvZ291dCBhY2hpZXZlbWVudF9wb3N0IGFjaGlldmVtZW50X2luY3JlbWVudCAnICtcbiAgICAgICdhY2hpZXZlbWVudF9wb3N0X3Njb3JlIGFjaGlldmVtZW50X2F2YWlsYWJsZSAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zaG93X2FjaGlldmVtZW50cyBhY2hpZXZlbWVudF9zaG93X2xlYWRlcmJvYXJkcyAnICtcbiAgICAgICdhY2hpZXZlbWVudF9sb2FkX2ZyaWVuZHMgYWNoaWV2ZW1lbnRfbG9hZF9sZWFkZXJib2FyZCAnICtcbiAgICAgICdhY2hpZXZlbWVudF9zZW5kX2NoYWxsZW5nZSBhY2hpZXZlbWVudF9sb2FkX3Byb2dyZXNzICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Jlc2V0IGFjaGlldmVtZW50X2xvZ2luX3N0YXR1cyBhY2hpZXZlbWVudF9nZXRfcGljICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Nob3dfY2hhbGxlbmdlX25vdGlmaWNhdGlvbnMgYWNoaWV2ZW1lbnRfZ2V0X2NoYWxsZW5nZXMgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfZXZlbnQgYWNoaWV2ZW1lbnRfc2hvdyBhY2hpZXZlbWVudF9nZXRfaW5mbyAnICtcbiAgICAgICdjbG91ZF9maWxlX3NhdmUgY2xvdWRfc3RyaW5nX3NhdmUgY2xvdWRfc3luY2hyb25pc2UgYWRzX2VuYWJsZSAnICtcbiAgICAgICdhZHNfZGlzYWJsZSBhZHNfc2V0dXAgYWRzX2VuZ2FnZW1lbnRfbGF1bmNoIGFkc19lbmdhZ2VtZW50X2F2YWlsYWJsZSAnICtcbiAgICAgICdhZHNfZW5nYWdlbWVudF9hY3RpdmUgYWRzX2V2ZW50IGFkc19ldmVudF9wcmVsb2FkICcgK1xuICAgICAgJ2Fkc19zZXRfcmV3YXJkX2NhbGxiYWNrIGFkc19nZXRfZGlzcGxheV9oZWlnaHQgYWRzX2dldF9kaXNwbGF5X3dpZHRoICcgK1xuICAgICAgJ2Fkc19tb3ZlIGFkc19pbnRlcnN0aXRpYWxfYXZhaWxhYmxlIGFkc19pbnRlcnN0aXRpYWxfZGlzcGxheSAnICtcbiAgICAgICdkZXZpY2VfZ2V0X3RpbHRfeCBkZXZpY2VfZ2V0X3RpbHRfeSBkZXZpY2VfZ2V0X3RpbHRfeiAnICtcbiAgICAgICdkZXZpY2VfaXNfa2V5cGFkX29wZW4gZGV2aWNlX21vdXNlX2NoZWNrX2J1dHRvbiAnICtcbiAgICAgICdkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uX3ByZXNzZWQgZGV2aWNlX21vdXNlX2NoZWNrX2J1dHRvbl9yZWxlYXNlZCAnICtcbiAgICAgICdkZXZpY2VfbW91c2VfeCBkZXZpY2VfbW91c2VfeSBkZXZpY2VfbW91c2VfcmF3X3ggZGV2aWNlX21vdXNlX3Jhd195ICcgK1xuICAgICAgJ2RldmljZV9tb3VzZV94X3RvX2d1aSBkZXZpY2VfbW91c2VfeV90b19ndWkgaWFwX2FjdGl2YXRlIGlhcF9zdGF0dXMgJyArXG4gICAgICAnaWFwX2VudW1lcmF0ZV9wcm9kdWN0cyBpYXBfcmVzdG9yZV9hbGwgaWFwX2FjcXVpcmUgaWFwX2NvbnN1bWUgJyArXG4gICAgICAnaWFwX3Byb2R1Y3RfZGV0YWlscyBpYXBfcHVyY2hhc2VfZGV0YWlscyBmYWNlYm9va19pbml0ICcgK1xuICAgICAgJ2ZhY2Vib29rX2xvZ2luIGZhY2Vib29rX3N0YXR1cyBmYWNlYm9va19ncmFwaF9yZXF1ZXN0ICcgK1xuICAgICAgJ2ZhY2Vib29rX2RpYWxvZyBmYWNlYm9va19sb2dvdXQgZmFjZWJvb2tfbGF1bmNoX29mZmVyd2FsbCAnICtcbiAgICAgICdmYWNlYm9va19wb3N0X21lc3NhZ2UgZmFjZWJvb2tfc2VuZF9pbnZpdGUgZmFjZWJvb2tfdXNlcl9pZCAnICtcbiAgICAgICdmYWNlYm9va19hY2Nlc3N0b2tlbiBmYWNlYm9va19jaGVja19wZXJtaXNzaW9uICcgK1xuICAgICAgJ2ZhY2Vib29rX3JlcXVlc3RfcmVhZF9wZXJtaXNzaW9ucyAnICtcbiAgICAgICdmYWNlYm9va19yZXF1ZXN0X3B1Ymxpc2hfcGVybWlzc2lvbnMgZ2FtZXBhZF9pc19zdXBwb3J0ZWQgJyArXG4gICAgICAnZ2FtZXBhZF9nZXRfZGV2aWNlX2NvdW50IGdhbWVwYWRfaXNfY29ubmVjdGVkICcgK1xuICAgICAgJ2dhbWVwYWRfZ2V0X2Rlc2NyaXB0aW9uIGdhbWVwYWRfZ2V0X2J1dHRvbl90aHJlc2hvbGQgJyArXG4gICAgICAnZ2FtZXBhZF9zZXRfYnV0dG9uX3RocmVzaG9sZCBnYW1lcGFkX2dldF9heGlzX2RlYWR6b25lICcgK1xuICAgICAgJ2dhbWVwYWRfc2V0X2F4aXNfZGVhZHpvbmUgZ2FtZXBhZF9idXR0b25fY291bnQgZ2FtZXBhZF9idXR0b25fY2hlY2sgJyArXG4gICAgICAnZ2FtZXBhZF9idXR0b25fY2hlY2tfcHJlc3NlZCBnYW1lcGFkX2J1dHRvbl9jaGVja19yZWxlYXNlZCAnICtcbiAgICAgICdnYW1lcGFkX2J1dHRvbl92YWx1ZSBnYW1lcGFkX2F4aXNfY291bnQgZ2FtZXBhZF9heGlzX3ZhbHVlICcgK1xuICAgICAgJ2dhbWVwYWRfc2V0X3ZpYnJhdGlvbiBnYW1lcGFkX3NldF9jb2xvdXIgZ2FtZXBhZF9zZXRfY29sb3IgJyArXG4gICAgICAnb3NfaXNfcGF1c2VkIHdpbmRvd19oYXNfZm9jdXMgY29kZV9pc19jb21waWxlZCBodHRwX2dldCAnICtcbiAgICAgICdodHRwX2dldF9maWxlIGh0dHBfcG9zdF9zdHJpbmcgaHR0cF9yZXF1ZXN0IGpzb25fZW5jb2RlIGpzb25fZGVjb2RlICcgK1xuICAgICAgJ3ppcF91bnppcCBsb2FkX2NzdiBiYXNlNjRfZW5jb2RlIGJhc2U2NF9kZWNvZGUgbWQ1X3N0cmluZ191bmljb2RlICcgK1xuICAgICAgJ21kNV9zdHJpbmdfdXRmOCBtZDVfZmlsZSBvc19pc19uZXR3b3JrX2Nvbm5lY3RlZCBzaGExX3N0cmluZ191bmljb2RlICcgK1xuICAgICAgJ3NoYTFfc3RyaW5nX3V0Zjggc2hhMV9maWxlIG9zX3Bvd2Vyc2F2ZV9lbmFibGUgYW5hbHl0aWNzX2V2ZW50ICcgK1xuICAgICAgJ2FuYWx5dGljc19ldmVudF9leHQgd2luOF9saXZldGlsZV90aWxlX25vdGlmaWNhdGlvbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX3RpbGVfY2xlYXIgd2luOF9saXZldGlsZV9iYWRnZV9ub3RpZmljYXRpb24gJyArXG4gICAgICAnd2luOF9saXZldGlsZV9iYWRnZV9jbGVhciB3aW44X2xpdmV0aWxlX3F1ZXVlX2VuYWJsZSAnICtcbiAgICAgICd3aW44X3NlY29uZGFyeXRpbGVfcGluIHdpbjhfc2Vjb25kYXJ5dGlsZV9iYWRnZV9ub3RpZmljYXRpb24gJyArXG4gICAgICAnd2luOF9zZWNvbmRhcnl0aWxlX2RlbGV0ZSB3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9iZWdpbiAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9zZWNvbmRhcnlfYmVnaW4gJyArXG4gICAgICAnd2luOF9saXZldGlsZV9ub3RpZmljYXRpb25fZXhwaXJ5IHdpbjhfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3RhZyAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl90ZXh0X2FkZCAnICtcbiAgICAgICd3aW44X2xpdmV0aWxlX25vdGlmaWNhdGlvbl9pbWFnZV9hZGQgd2luOF9saXZldGlsZV9ub3RpZmljYXRpb25fZW5kICcgK1xuICAgICAgJ3dpbjhfYXBwYmFyX2VuYWJsZSB3aW44X2FwcGJhcl9hZGRfZWxlbWVudCAnICtcbiAgICAgICd3aW44X2FwcGJhcl9yZW1vdmVfZWxlbWVudCB3aW44X3NldHRpbmdzY2hhcm1fYWRkX2VudHJ5ICcgK1xuICAgICAgJ3dpbjhfc2V0dGluZ3NjaGFybV9hZGRfaHRtbF9lbnRyeSB3aW44X3NldHRpbmdzY2hhcm1fYWRkX3hhbWxfZW50cnkgJyArXG4gICAgICAnd2luOF9zZXR0aW5nc2NoYXJtX3NldF94YW1sX3Byb3BlcnR5ICcgK1xuICAgICAgJ3dpbjhfc2V0dGluZ3NjaGFybV9nZXRfeGFtbF9wcm9wZXJ0eSB3aW44X3NldHRpbmdzY2hhcm1fcmVtb3ZlX2VudHJ5ICcgK1xuICAgICAgJ3dpbjhfc2hhcmVfaW1hZ2Ugd2luOF9zaGFyZV9zY3JlZW5zaG90IHdpbjhfc2hhcmVfZmlsZSAnICtcbiAgICAgICd3aW44X3NoYXJlX3VybCB3aW44X3NoYXJlX3RleHQgd2luOF9zZWFyY2hfZW5hYmxlICcgK1xuICAgICAgJ3dpbjhfc2VhcmNoX2Rpc2FibGUgd2luOF9zZWFyY2hfYWRkX3N1Z2dlc3Rpb25zICcgK1xuICAgICAgJ3dpbjhfZGV2aWNlX3RvdWNoc2NyZWVuX2F2YWlsYWJsZSB3aW44X2xpY2Vuc2VfaW5pdGlhbGl6ZV9zYW5kYm94ICcgK1xuICAgICAgJ3dpbjhfbGljZW5zZV90cmlhbF92ZXJzaW9uIHdpbnBob25lX2xpY2Vuc2VfdHJpYWxfdmVyc2lvbiAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX3RpdGxlIHdpbnBob25lX3RpbGVfY291bnQgd2lucGhvbmVfdGlsZV9iYWNrX3RpdGxlICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfYmFja19jb250ZW50IHdpbnBob25lX3RpbGVfYmFja19jb250ZW50X3dpZGUgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9mcm9udF9pbWFnZSB3aW5waG9uZV90aWxlX2Zyb250X2ltYWdlX3NtYWxsICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfZnJvbnRfaW1hZ2Vfd2lkZSB3aW5waG9uZV90aWxlX2JhY2tfaW1hZ2UgJyArXG4gICAgICAnd2lucGhvbmVfdGlsZV9iYWNrX2ltYWdlX3dpZGUgd2lucGhvbmVfdGlsZV9iYWNrZ3JvdW5kX2NvbG91ciAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2JhY2tncm91bmRfY29sb3Igd2lucGhvbmVfdGlsZV9pY29uX2ltYWdlICcgK1xuICAgICAgJ3dpbnBob25lX3RpbGVfc21hbGxfaWNvbl9pbWFnZSB3aW5waG9uZV90aWxlX3dpZGVfY29udGVudCAnICtcbiAgICAgICd3aW5waG9uZV90aWxlX2N5Y2xlX2ltYWdlcyB3aW5waG9uZV90aWxlX3NtYWxsX2JhY2tncm91bmRfaW1hZ2UgJyArXG4gICAgICAncGh5c2ljc193b3JsZF9jcmVhdGUgcGh5c2ljc193b3JsZF9ncmF2aXR5ICcgK1xuICAgICAgJ3BoeXNpY3Nfd29ybGRfdXBkYXRlX3NwZWVkIHBoeXNpY3Nfd29ybGRfdXBkYXRlX2l0ZXJhdGlvbnMgJyArXG4gICAgICAncGh5c2ljc193b3JsZF9kcmF3X2RlYnVnIHBoeXNpY3NfcGF1c2VfZW5hYmxlIHBoeXNpY3NfZml4dHVyZV9jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9raW5lbWF0aWMgcGh5c2ljc19maXh0dXJlX3NldF9kZW5zaXR5ICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfYXdha2UgcGh5c2ljc19maXh0dXJlX3NldF9yZXN0aXR1dGlvbiAnICtcbiAgICAgICdwaHlzaWNzX2ZpeHR1cmVfc2V0X2ZyaWN0aW9uIHBoeXNpY3NfZml4dHVyZV9zZXRfY29sbGlzaW9uX2dyb3VwICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfc2Vuc29yIHBoeXNpY3NfZml4dHVyZV9zZXRfbGluZWFyX2RhbXBpbmcgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9hbmd1bGFyX2RhbXBpbmcgcGh5c2ljc19maXh0dXJlX3NldF9jaXJjbGVfc2hhcGUgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX3NldF9ib3hfc2hhcGUgcGh5c2ljc19maXh0dXJlX3NldF9lZGdlX3NoYXBlICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9zZXRfcG9seWdvbl9zaGFwZSBwaHlzaWNzX2ZpeHR1cmVfc2V0X2NoYWluX3NoYXBlICcgK1xuICAgICAgJ3BoeXNpY3NfZml4dHVyZV9hZGRfcG9pbnQgcGh5c2ljc19maXh0dXJlX2JpbmQgJyArXG4gICAgICAncGh5c2ljc19maXh0dXJlX2JpbmRfZXh0IHBoeXNpY3NfZml4dHVyZV9kZWxldGUgcGh5c2ljc19hcHBseV9mb3JjZSAnICtcbiAgICAgICdwaHlzaWNzX2FwcGx5X2ltcHVsc2UgcGh5c2ljc19hcHBseV9hbmd1bGFyX2ltcHVsc2UgJyArXG4gICAgICAncGh5c2ljc19hcHBseV9sb2NhbF9mb3JjZSBwaHlzaWNzX2FwcGx5X2xvY2FsX2ltcHVsc2UgJyArXG4gICAgICAncGh5c2ljc19hcHBseV90b3JxdWUgcGh5c2ljc19tYXNzX3Byb3BlcnRpZXMgcGh5c2ljc19kcmF3X2RlYnVnICcgK1xuICAgICAgJ3BoeXNpY3NfdGVzdF9vdmVybGFwIHBoeXNpY3NfcmVtb3ZlX2ZpeHR1cmUgcGh5c2ljc19zZXRfZnJpY3Rpb24gJyArXG4gICAgICAncGh5c2ljc19zZXRfZGVuc2l0eSBwaHlzaWNzX3NldF9yZXN0aXR1dGlvbiBwaHlzaWNzX2dldF9mcmljdGlvbiAnICtcbiAgICAgICdwaHlzaWNzX2dldF9kZW5zaXR5IHBoeXNpY3NfZ2V0X3Jlc3RpdHV0aW9uICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfZGlzdGFuY2VfY3JlYXRlIHBoeXNpY3Nfam9pbnRfcm9wZV9jcmVhdGUgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9yZXZvbHV0ZV9jcmVhdGUgcGh5c2ljc19qb2ludF9wcmlzbWF0aWNfY3JlYXRlICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfcHVsbGV5X2NyZWF0ZSBwaHlzaWNzX2pvaW50X3doZWVsX2NyZWF0ZSAnICtcbiAgICAgICdwaHlzaWNzX2pvaW50X3dlbGRfY3JlYXRlIHBoeXNpY3Nfam9pbnRfZnJpY3Rpb25fY3JlYXRlICcgK1xuICAgICAgJ3BoeXNpY3Nfam9pbnRfZ2Vhcl9jcmVhdGUgcGh5c2ljc19qb2ludF9lbmFibGVfbW90b3IgJyArXG4gICAgICAncGh5c2ljc19qb2ludF9nZXRfdmFsdWUgcGh5c2ljc19qb2ludF9zZXRfdmFsdWUgcGh5c2ljc19qb2ludF9kZWxldGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9jcmVhdGUgcGh5c2ljc19wYXJ0aWNsZV9kZWxldGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9kZWxldGVfcmVnaW9uX2NpcmNsZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2RlbGV0ZV9yZWdpb25fYm94ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9wb2x5IHBoeXNpY3NfcGFydGljbGVfc2V0X2ZsYWdzICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfc2V0X2NhdGVnb3J5X2ZsYWdzIHBoeXNpY3NfcGFydGljbGVfZHJhdyAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2RyYXdfZXh0IHBoeXNpY3NfcGFydGljbGVfY291bnQgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9nZXRfZGF0YSBwaHlzaWNzX3BhcnRpY2xlX2dldF9kYXRhX3BhcnRpY2xlICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfYmVnaW4gcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9jaXJjbGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9ib3ggcGh5c2ljc19wYXJ0aWNsZV9ncm91cF9wb2x5Z29uICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfYWRkX3BvaW50IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZW5kICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfam9pbiBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2RlbGV0ZSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2NvdW50IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2RhdGEgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfbWFzcyBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9pbmVydGlhICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2NlbnRyZV94ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2NlbnRyZV95IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3ZlbF94ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3ZlbF95IHBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2FuZ192ZWwgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfeCBwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF95ICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2FuZ2xlIHBoeXNpY3NfcGFydGljbGVfc2V0X2dyb3VwX2ZsYWdzICcgK1xuICAgICAgJ3BoeXNpY3NfcGFydGljbGVfZ2V0X2dyb3VwX2ZsYWdzIHBoeXNpY3NfcGFydGljbGVfZ2V0X21heF9jb3VudCAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dldF9yYWRpdXMgcGh5c2ljc19wYXJ0aWNsZV9nZXRfZGVuc2l0eSAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX2dldF9kYW1waW5nIHBoeXNpY3NfcGFydGljbGVfZ2V0X2dyYXZpdHlfc2NhbGUgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9zZXRfbWF4X2NvdW50IHBoeXNpY3NfcGFydGljbGVfc2V0X3JhZGl1cyAnICtcbiAgICAgICdwaHlzaWNzX3BhcnRpY2xlX3NldF9kZW5zaXR5IHBoeXNpY3NfcGFydGljbGVfc2V0X2RhbXBpbmcgJyArXG4gICAgICAncGh5c2ljc19wYXJ0aWNsZV9zZXRfZ3Jhdml0eV9zY2FsZSBuZXR3b3JrX2NyZWF0ZV9zb2NrZXQgJyArXG4gICAgICAnbmV0d29ya19jcmVhdGVfc29ja2V0X2V4dCBuZXR3b3JrX2NyZWF0ZV9zZXJ2ZXIgJyArXG4gICAgICAnbmV0d29ya19jcmVhdGVfc2VydmVyX3JhdyBuZXR3b3JrX2Nvbm5lY3QgbmV0d29ya19jb25uZWN0X3JhdyAnICtcbiAgICAgICduZXR3b3JrX3NlbmRfcGFja2V0IG5ldHdvcmtfc2VuZF9yYXcgbmV0d29ya19zZW5kX2Jyb2FkY2FzdCAnICtcbiAgICAgICduZXR3b3JrX3NlbmRfdWRwIG5ldHdvcmtfc2VuZF91ZHBfcmF3IG5ldHdvcmtfc2V0X3RpbWVvdXQgJyArXG4gICAgICAnbmV0d29ya19zZXRfY29uZmlnIG5ldHdvcmtfcmVzb2x2ZSBuZXR3b3JrX2Rlc3Ryb3kgYnVmZmVyX2NyZWF0ZSAnICtcbiAgICAgICdidWZmZXJfd3JpdGUgYnVmZmVyX3JlYWQgYnVmZmVyX3NlZWsgYnVmZmVyX2dldF9zdXJmYWNlICcgK1xuICAgICAgJ2J1ZmZlcl9zZXRfc3VyZmFjZSBidWZmZXJfZGVsZXRlIGJ1ZmZlcl9leGlzdHMgYnVmZmVyX2dldF90eXBlICcgK1xuICAgICAgJ2J1ZmZlcl9nZXRfYWxpZ25tZW50IGJ1ZmZlcl9wb2tlIGJ1ZmZlcl9wZWVrIGJ1ZmZlcl9zYXZlICcgK1xuICAgICAgJ2J1ZmZlcl9zYXZlX2V4dCBidWZmZXJfbG9hZCBidWZmZXJfbG9hZF9leHQgYnVmZmVyX2xvYWRfcGFydGlhbCAnICtcbiAgICAgICdidWZmZXJfY29weSBidWZmZXJfZmlsbCBidWZmZXJfZ2V0X3NpemUgYnVmZmVyX3RlbGwgYnVmZmVyX3Jlc2l6ZSAnICtcbiAgICAgICdidWZmZXJfbWQ1IGJ1ZmZlcl9zaGExIGJ1ZmZlcl9iYXNlNjRfZW5jb2RlIGJ1ZmZlcl9iYXNlNjRfZGVjb2RlICcgK1xuICAgICAgJ2J1ZmZlcl9iYXNlNjRfZGVjb2RlX2V4dCBidWZmZXJfc2l6ZW9mIGJ1ZmZlcl9nZXRfYWRkcmVzcyAnICtcbiAgICAgICdidWZmZXJfY3JlYXRlX2Zyb21fdmVydGV4X2J1ZmZlciAnICtcbiAgICAgICdidWZmZXJfY3JlYXRlX2Zyb21fdmVydGV4X2J1ZmZlcl9leHQgYnVmZmVyX2NvcHlfZnJvbV92ZXJ0ZXhfYnVmZmVyICcgK1xuICAgICAgJ2J1ZmZlcl9hc3luY19ncm91cF9iZWdpbiBidWZmZXJfYXN5bmNfZ3JvdXBfb3B0aW9uICcgK1xuICAgICAgJ2J1ZmZlcl9hc3luY19ncm91cF9lbmQgYnVmZmVyX2xvYWRfYXN5bmMgYnVmZmVyX3NhdmVfYXN5bmMgJyArXG4gICAgICAnZ21sX3JlbGVhc2VfbW9kZSBnbWxfcHJhZ21hIHN0ZWFtX2FjdGl2YXRlX292ZXJsYXkgJyArXG4gICAgICAnc3RlYW1faXNfb3ZlcmxheV9lbmFibGVkIHN0ZWFtX2lzX292ZXJsYXlfYWN0aXZhdGVkICcgK1xuICAgICAgJ3N0ZWFtX2dldF9wZXJzb25hX25hbWUgc3RlYW1faW5pdGlhbGlzZWQgJyArXG4gICAgICAnc3RlYW1faXNfY2xvdWRfZW5hYmxlZF9mb3JfYXBwIHN0ZWFtX2lzX2Nsb3VkX2VuYWJsZWRfZm9yX2FjY291bnQgJyArXG4gICAgICAnc3RlYW1fZmlsZV9wZXJzaXN0ZWQgc3RlYW1fZ2V0X3F1b3RhX3RvdGFsIHN0ZWFtX2dldF9xdW90YV9mcmVlICcgK1xuICAgICAgJ3N0ZWFtX2ZpbGVfd3JpdGUgc3RlYW1fZmlsZV93cml0ZV9maWxlIHN0ZWFtX2ZpbGVfcmVhZCAnICtcbiAgICAgICdzdGVhbV9maWxlX2RlbGV0ZSBzdGVhbV9maWxlX2V4aXN0cyBzdGVhbV9maWxlX3NpemUgc3RlYW1fZmlsZV9zaGFyZSAnICtcbiAgICAgICdzdGVhbV9pc19zY3JlZW5zaG90X3JlcXVlc3RlZCBzdGVhbV9zZW5kX3NjcmVlbnNob3QgJyArXG4gICAgICAnc3RlYW1faXNfdXNlcl9sb2dnZWRfb24gc3RlYW1fZ2V0X3VzZXJfc3RlYW1faWQgc3RlYW1fdXNlcl9vd25zX2RsYyAnICtcbiAgICAgICdzdGVhbV91c2VyX2luc3RhbGxlZF9kbGMgc3RlYW1fc2V0X2FjaGlldmVtZW50IHN0ZWFtX2dldF9hY2hpZXZlbWVudCAnICtcbiAgICAgICdzdGVhbV9jbGVhcl9hY2hpZXZlbWVudCBzdGVhbV9zZXRfc3RhdF9pbnQgc3RlYW1fc2V0X3N0YXRfZmxvYXQgJyArXG4gICAgICAnc3RlYW1fc2V0X3N0YXRfYXZnX3JhdGUgc3RlYW1fZ2V0X3N0YXRfaW50IHN0ZWFtX2dldF9zdGF0X2Zsb2F0ICcgK1xuICAgICAgJ3N0ZWFtX2dldF9zdGF0X2F2Z19yYXRlIHN0ZWFtX3Jlc2V0X2FsbF9zdGF0cyAnICtcbiAgICAgICdzdGVhbV9yZXNldF9hbGxfc3RhdHNfYWNoaWV2ZW1lbnRzIHN0ZWFtX3N0YXRzX3JlYWR5ICcgK1xuICAgICAgJ3N0ZWFtX2NyZWF0ZV9sZWFkZXJib2FyZCBzdGVhbV91cGxvYWRfc2NvcmUgc3RlYW1fdXBsb2FkX3Njb3JlX2V4dCAnICtcbiAgICAgICdzdGVhbV9kb3dubG9hZF9zY29yZXNfYXJvdW5kX3VzZXIgc3RlYW1fZG93bmxvYWRfc2NvcmVzICcgK1xuICAgICAgJ3N0ZWFtX2Rvd25sb2FkX2ZyaWVuZHNfc2NvcmVzIHN0ZWFtX3VwbG9hZF9zY29yZV9idWZmZXIgJyArXG4gICAgICAnc3RlYW1fdXBsb2FkX3Njb3JlX2J1ZmZlcl9leHQgc3RlYW1fY3VycmVudF9nYW1lX2xhbmd1YWdlICcgK1xuICAgICAgJ3N0ZWFtX2F2YWlsYWJsZV9sYW5ndWFnZXMgc3RlYW1fYWN0aXZhdGVfb3ZlcmxheV9icm93c2VyICcgK1xuICAgICAgJ3N0ZWFtX2FjdGl2YXRlX292ZXJsYXlfdXNlciBzdGVhbV9hY3RpdmF0ZV9vdmVybGF5X3N0b3JlICcgK1xuICAgICAgJ3N0ZWFtX2dldF91c2VyX3BlcnNvbmFfbmFtZSBzdGVhbV9nZXRfYXBwX2lkICcgK1xuICAgICAgJ3N0ZWFtX2dldF91c2VyX2FjY291bnRfaWQgc3RlYW1fdWdjX2Rvd25sb2FkIHN0ZWFtX3VnY19jcmVhdGVfaXRlbSAnICtcbiAgICAgICdzdGVhbV91Z2Nfc3RhcnRfaXRlbV91cGRhdGUgc3RlYW1fdWdjX3NldF9pdGVtX3RpdGxlICcgK1xuICAgICAgJ3N0ZWFtX3VnY19zZXRfaXRlbV9kZXNjcmlwdGlvbiBzdGVhbV91Z2Nfc2V0X2l0ZW1fdmlzaWJpbGl0eSAnICtcbiAgICAgICdzdGVhbV91Z2Nfc2V0X2l0ZW1fdGFncyBzdGVhbV91Z2Nfc2V0X2l0ZW1fY29udGVudCAnICtcbiAgICAgICdzdGVhbV91Z2Nfc2V0X2l0ZW1fcHJldmlldyBzdGVhbV91Z2Nfc3VibWl0X2l0ZW1fdXBkYXRlICcgK1xuICAgICAgJ3N0ZWFtX3VnY19nZXRfaXRlbV91cGRhdGVfcHJvZ3Jlc3Mgc3RlYW1fdWdjX3N1YnNjcmliZV9pdGVtICcgK1xuICAgICAgJ3N0ZWFtX3VnY191bnN1YnNjcmliZV9pdGVtIHN0ZWFtX3VnY19udW1fc3Vic2NyaWJlZF9pdGVtcyAnICtcbiAgICAgICdzdGVhbV91Z2NfZ2V0X3N1YnNjcmliZWRfaXRlbXMgc3RlYW1fdWdjX2dldF9pdGVtX2luc3RhbGxfaW5mbyAnICtcbiAgICAgICdzdGVhbV91Z2NfZ2V0X2l0ZW1fdXBkYXRlX2luZm8gc3RlYW1fdWdjX3JlcXVlc3RfaXRlbV9kZXRhaWxzICcgK1xuICAgICAgJ3N0ZWFtX3VnY19jcmVhdGVfcXVlcnlfdXNlciBzdGVhbV91Z2NfY3JlYXRlX3F1ZXJ5X3VzZXJfZXggJyArXG4gICAgICAnc3RlYW1fdWdjX2NyZWF0ZV9xdWVyeV9hbGwgc3RlYW1fdWdjX2NyZWF0ZV9xdWVyeV9hbGxfZXggJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9jbG91ZF9maWxlbmFtZV9maWx0ZXIgJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9tYXRjaF9hbnlfdGFnIHN0ZWFtX3VnY19xdWVyeV9zZXRfc2VhcmNoX3RleHQgJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9yYW5rZWRfYnlfdHJlbmRfZGF5cyAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfYWRkX3JlcXVpcmVkX3RhZyBzdGVhbV91Z2NfcXVlcnlfYWRkX2V4Y2x1ZGVkX3RhZyAnICtcbiAgICAgICdzdGVhbV91Z2NfcXVlcnlfc2V0X3JldHVybl9sb25nX2Rlc2NyaXB0aW9uICcgK1xuICAgICAgJ3N0ZWFtX3VnY19xdWVyeV9zZXRfcmV0dXJuX3RvdGFsX29ubHkgJyArXG4gICAgICAnc3RlYW1fdWdjX3F1ZXJ5X3NldF9hbGxvd19jYWNoZWRfcmVzcG9uc2Ugc3RlYW1fdWdjX3NlbmRfcXVlcnkgJyArXG4gICAgICAnc2hhZGVyX3NldCBzaGFkZXJfZ2V0X25hbWUgc2hhZGVyX3Jlc2V0IHNoYWRlcl9jdXJyZW50ICcgK1xuICAgICAgJ3NoYWRlcl9pc19jb21waWxlZCBzaGFkZXJfZ2V0X3NhbXBsZXJfaW5kZXggc2hhZGVyX2dldF91bmlmb3JtICcgK1xuICAgICAgJ3NoYWRlcl9zZXRfdW5pZm9ybV9pIHNoYWRlcl9zZXRfdW5pZm9ybV9pX2FycmF5IHNoYWRlcl9zZXRfdW5pZm9ybV9mICcgK1xuICAgICAgJ3NoYWRlcl9zZXRfdW5pZm9ybV9mX2FycmF5IHNoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXggJyArXG4gICAgICAnc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF9hcnJheSBzaGFkZXJfZW5hYmxlX2Nvcm5lcl9pZCAnICtcbiAgICAgICd0ZXh0dXJlX3NldF9zdGFnZSB0ZXh0dXJlX2dldF90ZXhlbF93aWR0aCB0ZXh0dXJlX2dldF90ZXhlbF9oZWlnaHQgJyArXG4gICAgICAnc2hhZGVyc19hcmVfc3VwcG9ydGVkIHZlcnRleF9mb3JtYXRfYmVnaW4gdmVydGV4X2Zvcm1hdF9lbmQgJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9kZWxldGUgdmVydGV4X2Zvcm1hdF9hZGRfcG9zaXRpb24gJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9hZGRfcG9zaXRpb25fM2QgdmVydGV4X2Zvcm1hdF9hZGRfY29sb3VyICcgK1xuICAgICAgJ3ZlcnRleF9mb3JtYXRfYWRkX2NvbG9yIHZlcnRleF9mb3JtYXRfYWRkX25vcm1hbCAnICtcbiAgICAgICd2ZXJ0ZXhfZm9ybWF0X2FkZF90ZXhjb29yZCB2ZXJ0ZXhfZm9ybWF0X2FkZF90ZXh0Y29vcmQgJyArXG4gICAgICAndmVydGV4X2Zvcm1hdF9hZGRfY3VzdG9tIHZlcnRleF9jcmVhdGVfYnVmZmVyICcgK1xuICAgICAgJ3ZlcnRleF9jcmVhdGVfYnVmZmVyX2V4dCB2ZXJ0ZXhfZGVsZXRlX2J1ZmZlciB2ZXJ0ZXhfYmVnaW4gJyArXG4gICAgICAndmVydGV4X2VuZCB2ZXJ0ZXhfcG9zaXRpb24gdmVydGV4X3Bvc2l0aW9uXzNkIHZlcnRleF9jb2xvdXIgJyArXG4gICAgICAndmVydGV4X2NvbG9yIHZlcnRleF9hcmdiIHZlcnRleF90ZXhjb29yZCB2ZXJ0ZXhfbm9ybWFsIHZlcnRleF9mbG9hdDEgJyArXG4gICAgICAndmVydGV4X2Zsb2F0MiB2ZXJ0ZXhfZmxvYXQzIHZlcnRleF9mbG9hdDQgdmVydGV4X3VieXRlNCAnICtcbiAgICAgICd2ZXJ0ZXhfc3VibWl0IHZlcnRleF9mcmVlemUgdmVydGV4X2dldF9udW1iZXIgdmVydGV4X2dldF9idWZmZXJfc2l6ZSAnICtcbiAgICAgICd2ZXJ0ZXhfY3JlYXRlX2J1ZmZlcl9mcm9tX2J1ZmZlciAnICtcbiAgICAgICd2ZXJ0ZXhfY3JlYXRlX2J1ZmZlcl9mcm9tX2J1ZmZlcl9leHQgcHVzaF9sb2NhbF9ub3RpZmljYXRpb24gJyArXG4gICAgICAncHVzaF9nZXRfZmlyc3RfbG9jYWxfbm90aWZpY2F0aW9uIHB1c2hfZ2V0X25leHRfbG9jYWxfbm90aWZpY2F0aW9uICcgK1xuICAgICAgJ3B1c2hfY2FuY2VsX2xvY2FsX25vdGlmaWNhdGlvbiBza2VsZXRvbl9hbmltYXRpb25fc2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9nZXQgc2tlbGV0b25fYW5pbWF0aW9uX21peCAnICtcbiAgICAgICdza2VsZXRvbl9hbmltYXRpb25fc2V0X2V4dCBza2VsZXRvbl9hbmltYXRpb25fZ2V0X2V4dCAnICtcbiAgICAgICdza2VsZXRvbl9hbmltYXRpb25fZ2V0X2R1cmF0aW9uIHNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWVzICcgK1xuICAgICAgJ3NrZWxldG9uX2FuaW1hdGlvbl9jbGVhciBza2VsZXRvbl9za2luX3NldCBza2VsZXRvbl9za2luX2dldCAnICtcbiAgICAgICdza2VsZXRvbl9hdHRhY2htZW50X3NldCBza2VsZXRvbl9hdHRhY2htZW50X2dldCAnICtcbiAgICAgICdza2VsZXRvbl9hdHRhY2htZW50X2NyZWF0ZSBza2VsZXRvbl9jb2xsaXNpb25fZHJhd19zZXQgJyArXG4gICAgICAnc2tlbGV0b25fYm9uZV9kYXRhX2dldCBza2VsZXRvbl9ib25lX2RhdGFfc2V0ICcgK1xuICAgICAgJ3NrZWxldG9uX2JvbmVfc3RhdGVfZ2V0IHNrZWxldG9uX2JvbmVfc3RhdGVfc2V0IHNrZWxldG9uX2dldF9taW5tYXggJyArXG4gICAgICAnc2tlbGV0b25fZ2V0X251bV9ib3VuZHMgc2tlbGV0b25fZ2V0X2JvdW5kcyAnICtcbiAgICAgICdza2VsZXRvbl9hbmltYXRpb25fZ2V0X2ZyYW1lIHNrZWxldG9uX2FuaW1hdGlvbl9zZXRfZnJhbWUgJyArXG4gICAgICAnZHJhd19za2VsZXRvbiBkcmF3X3NrZWxldG9uX3RpbWUgZHJhd19za2VsZXRvbl9pbnN0YW5jZSAnICtcbiAgICAgICdkcmF3X3NrZWxldG9uX2NvbGxpc2lvbiBza2VsZXRvbl9hbmltYXRpb25fbGlzdCBza2VsZXRvbl9za2luX2xpc3QgJyArXG4gICAgICAnc2tlbGV0b25fc2xvdF9kYXRhIGxheWVyX2dldF9pZCBsYXllcl9nZXRfaWRfYXRfZGVwdGggJyArXG4gICAgICAnbGF5ZXJfZ2V0X2RlcHRoIGxheWVyX2NyZWF0ZSBsYXllcl9kZXN0cm95IGxheWVyX2Rlc3Ryb3lfaW5zdGFuY2VzICcgK1xuICAgICAgJ2xheWVyX2FkZF9pbnN0YW5jZSBsYXllcl9oYXNfaW5zdGFuY2UgbGF5ZXJfc2V0X3Zpc2libGUgJyArXG4gICAgICAnbGF5ZXJfZ2V0X3Zpc2libGUgbGF5ZXJfZXhpc3RzIGxheWVyX3ggbGF5ZXJfeSBsYXllcl9nZXRfeCAnICtcbiAgICAgICdsYXllcl9nZXRfeSBsYXllcl9oc3BlZWQgbGF5ZXJfdnNwZWVkIGxheWVyX2dldF9oc3BlZWQgJyArXG4gICAgICAnbGF5ZXJfZ2V0X3ZzcGVlZCBsYXllcl9zY3JpcHRfYmVnaW4gbGF5ZXJfc2NyaXB0X2VuZCBsYXllcl9zaGFkZXIgJyArXG4gICAgICAnbGF5ZXJfZ2V0X3NjcmlwdF9iZWdpbiBsYXllcl9nZXRfc2NyaXB0X2VuZCBsYXllcl9nZXRfc2hhZGVyICcgK1xuICAgICAgJ2xheWVyX3NldF90YXJnZXRfcm9vbSBsYXllcl9nZXRfdGFyZ2V0X3Jvb20gbGF5ZXJfcmVzZXRfdGFyZ2V0X3Jvb20gJyArXG4gICAgICAnbGF5ZXJfZ2V0X2FsbCBsYXllcl9nZXRfYWxsX2VsZW1lbnRzIGxheWVyX2dldF9uYW1lIGxheWVyX2RlcHRoICcgK1xuICAgICAgJ2xheWVyX2dldF9lbGVtZW50X2xheWVyIGxheWVyX2dldF9lbGVtZW50X3R5cGUgbGF5ZXJfZWxlbWVudF9tb3ZlICcgK1xuICAgICAgJ2xheWVyX2ZvcmNlX2RyYXdfZGVwdGggbGF5ZXJfaXNfZHJhd19kZXB0aF9mb3JjZWQgJyArXG4gICAgICAnbGF5ZXJfZ2V0X2ZvcmNlZF9kZXB0aCBsYXllcl9iYWNrZ3JvdW5kX2dldF9pZCAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2V4aXN0cyBsYXllcl9iYWNrZ3JvdW5kX2NyZWF0ZSAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX2Rlc3Ryb3kgbGF5ZXJfYmFja2dyb3VuZF92aXNpYmxlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfY2hhbmdlIGxheWVyX2JhY2tncm91bmRfc3ByaXRlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfaHRpbGVkIGxheWVyX2JhY2tncm91bmRfdnRpbGVkICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfc3RyZXRjaCBsYXllcl9iYWNrZ3JvdW5kX3lzY2FsZSAnICtcbiAgICAgICdsYXllcl9iYWNrZ3JvdW5kX3hzY2FsZSBsYXllcl9iYWNrZ3JvdW5kX2JsZW5kICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfYWxwaGEgbGF5ZXJfYmFja2dyb3VuZF9pbmRleCBsYXllcl9iYWNrZ3JvdW5kX3NwZWVkICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZ2V0X3Zpc2libGUgbGF5ZXJfYmFja2dyb3VuZF9nZXRfc3ByaXRlICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZ2V0X2h0aWxlZCBsYXllcl9iYWNrZ3JvdW5kX2dldF92dGlsZWQgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfc3RyZXRjaCBsYXllcl9iYWNrZ3JvdW5kX2dldF95c2NhbGUgJyArXG4gICAgICAnbGF5ZXJfYmFja2dyb3VuZF9nZXRfeHNjYWxlIGxheWVyX2JhY2tncm91bmRfZ2V0X2JsZW5kICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZ2V0X2FscGhhIGxheWVyX2JhY2tncm91bmRfZ2V0X2luZGV4ICcgK1xuICAgICAgJ2xheWVyX2JhY2tncm91bmRfZ2V0X3NwZWVkIGxheWVyX3Nwcml0ZV9nZXRfaWQgbGF5ZXJfc3ByaXRlX2V4aXN0cyAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfY3JlYXRlIGxheWVyX3Nwcml0ZV9kZXN0cm95IGxheWVyX3Nwcml0ZV9jaGFuZ2UgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2luZGV4IGxheWVyX3Nwcml0ZV9zcGVlZCBsYXllcl9zcHJpdGVfeHNjYWxlICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV95c2NhbGUgbGF5ZXJfc3ByaXRlX2FuZ2xlIGxheWVyX3Nwcml0ZV9ibGVuZCAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfYWxwaGEgbGF5ZXJfc3ByaXRlX3ggbGF5ZXJfc3ByaXRlX3kgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2dldF9zcHJpdGUgbGF5ZXJfc3ByaXRlX2dldF9pbmRleCAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X3NwZWVkIGxheWVyX3Nwcml0ZV9nZXRfeHNjYWxlICcgK1xuICAgICAgJ2xheWVyX3Nwcml0ZV9nZXRfeXNjYWxlIGxheWVyX3Nwcml0ZV9nZXRfYW5nbGUgJyArXG4gICAgICAnbGF5ZXJfc3ByaXRlX2dldF9ibGVuZCBsYXllcl9zcHJpdGVfZ2V0X2FscGhhIGxheWVyX3Nwcml0ZV9nZXRfeCAnICtcbiAgICAgICdsYXllcl9zcHJpdGVfZ2V0X3kgbGF5ZXJfdGlsZW1hcF9nZXRfaWQgbGF5ZXJfdGlsZW1hcF9leGlzdHMgJyArXG4gICAgICAnbGF5ZXJfdGlsZW1hcF9jcmVhdGUgbGF5ZXJfdGlsZW1hcF9kZXN0cm95IHRpbGVtYXBfdGlsZXNldCB0aWxlbWFwX3ggJyArXG4gICAgICAndGlsZW1hcF95IHRpbGVtYXBfc2V0IHRpbGVtYXBfc2V0X2F0X3BpeGVsIHRpbGVtYXBfZ2V0X3RpbGVzZXQgJyArXG4gICAgICAndGlsZW1hcF9nZXRfdGlsZV93aWR0aCB0aWxlbWFwX2dldF90aWxlX2hlaWdodCB0aWxlbWFwX2dldF93aWR0aCAnICtcbiAgICAgICd0aWxlbWFwX2dldF9oZWlnaHQgdGlsZW1hcF9nZXRfeCB0aWxlbWFwX2dldF95IHRpbGVtYXBfZ2V0ICcgK1xuICAgICAgJ3RpbGVtYXBfZ2V0X2F0X3BpeGVsIHRpbGVtYXBfZ2V0X2NlbGxfeF9hdF9waXhlbCAnICtcbiAgICAgICd0aWxlbWFwX2dldF9jZWxsX3lfYXRfcGl4ZWwgdGlsZW1hcF9jbGVhciBkcmF3X3RpbGVtYXAgZHJhd190aWxlICcgK1xuICAgICAgJ3RpbGVtYXBfc2V0X2dsb2JhbF9tYXNrIHRpbGVtYXBfZ2V0X2dsb2JhbF9tYXNrIHRpbGVtYXBfc2V0X21hc2sgJyArXG4gICAgICAndGlsZW1hcF9nZXRfbWFzayB0aWxlbWFwX2dldF9mcmFtZSB0aWxlX3NldF9lbXB0eSB0aWxlX3NldF9pbmRleCAnICtcbiAgICAgICd0aWxlX3NldF9mbGlwIHRpbGVfc2V0X21pcnJvciB0aWxlX3NldF9yb3RhdGUgdGlsZV9nZXRfZW1wdHkgJyArXG4gICAgICAndGlsZV9nZXRfaW5kZXggdGlsZV9nZXRfZmxpcCB0aWxlX2dldF9taXJyb3IgdGlsZV9nZXRfcm90YXRlICcgK1xuICAgICAgJ2xheWVyX3RpbGVfZXhpc3RzIGxheWVyX3RpbGVfY3JlYXRlIGxheWVyX3RpbGVfZGVzdHJveSAnICtcbiAgICAgICdsYXllcl90aWxlX2NoYW5nZSBsYXllcl90aWxlX3hzY2FsZSBsYXllcl90aWxlX3lzY2FsZSAnICtcbiAgICAgICdsYXllcl90aWxlX2JsZW5kIGxheWVyX3RpbGVfYWxwaGEgbGF5ZXJfdGlsZV94IGxheWVyX3RpbGVfeSAnICtcbiAgICAgICdsYXllcl90aWxlX3JlZ2lvbiBsYXllcl90aWxlX3Zpc2libGUgbGF5ZXJfdGlsZV9nZXRfc3ByaXRlICcgK1xuICAgICAgJ2xheWVyX3RpbGVfZ2V0X3hzY2FsZSBsYXllcl90aWxlX2dldF95c2NhbGUgbGF5ZXJfdGlsZV9nZXRfYmxlbmQgJyArXG4gICAgICAnbGF5ZXJfdGlsZV9nZXRfYWxwaGEgbGF5ZXJfdGlsZV9nZXRfeCBsYXllcl90aWxlX2dldF95ICcgK1xuICAgICAgJ2xheWVyX3RpbGVfZ2V0X3JlZ2lvbiBsYXllcl90aWxlX2dldF92aXNpYmxlICcgK1xuICAgICAgJ2xheWVyX2luc3RhbmNlX2dldF9pbnN0YW5jZSBpbnN0YW5jZV9hY3RpdmF0ZV9sYXllciAnICtcbiAgICAgICdpbnN0YW5jZV9kZWFjdGl2YXRlX2xheWVyIGNhbWVyYV9jcmVhdGUgY2FtZXJhX2NyZWF0ZV92aWV3ICcgK1xuICAgICAgJ2NhbWVyYV9kZXN0cm95IGNhbWVyYV9hcHBseSBjYW1lcmFfZ2V0X2FjdGl2ZSBjYW1lcmFfZ2V0X2RlZmF1bHQgJyArXG4gICAgICAnY2FtZXJhX3NldF9kZWZhdWx0IGNhbWVyYV9zZXRfdmlld19tYXQgY2FtZXJhX3NldF9wcm9qX21hdCAnICtcbiAgICAgICdjYW1lcmFfc2V0X3VwZGF0ZV9zY3JpcHQgY2FtZXJhX3NldF9iZWdpbl9zY3JpcHQgJyArXG4gICAgICAnY2FtZXJhX3NldF9lbmRfc2NyaXB0IGNhbWVyYV9zZXRfdmlld19wb3MgY2FtZXJhX3NldF92aWV3X3NpemUgJyArXG4gICAgICAnY2FtZXJhX3NldF92aWV3X3NwZWVkIGNhbWVyYV9zZXRfdmlld19ib3JkZXIgY2FtZXJhX3NldF92aWV3X2FuZ2xlICcgK1xuICAgICAgJ2NhbWVyYV9zZXRfdmlld190YXJnZXQgY2FtZXJhX2dldF92aWV3X21hdCBjYW1lcmFfZ2V0X3Byb2pfbWF0ICcgK1xuICAgICAgJ2NhbWVyYV9nZXRfdXBkYXRlX3NjcmlwdCBjYW1lcmFfZ2V0X2JlZ2luX3NjcmlwdCAnICtcbiAgICAgICdjYW1lcmFfZ2V0X2VuZF9zY3JpcHQgY2FtZXJhX2dldF92aWV3X3ggY2FtZXJhX2dldF92aWV3X3kgJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X3dpZHRoIGNhbWVyYV9nZXRfdmlld19oZWlnaHQgY2FtZXJhX2dldF92aWV3X3NwZWVkX3ggJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X3NwZWVkX3kgY2FtZXJhX2dldF92aWV3X2JvcmRlcl94ICcgK1xuICAgICAgJ2NhbWVyYV9nZXRfdmlld19ib3JkZXJfeSBjYW1lcmFfZ2V0X3ZpZXdfYW5nbGUgJyArXG4gICAgICAnY2FtZXJhX2dldF92aWV3X3RhcmdldCB2aWV3X2dldF9jYW1lcmEgdmlld19nZXRfdmlzaWJsZSAnICtcbiAgICAgICd2aWV3X2dldF94cG9ydCB2aWV3X2dldF95cG9ydCB2aWV3X2dldF93cG9ydCB2aWV3X2dldF9ocG9ydCAnICtcbiAgICAgICd2aWV3X2dldF9zdXJmYWNlX2lkIHZpZXdfc2V0X2NhbWVyYSB2aWV3X3NldF92aXNpYmxlIHZpZXdfc2V0X3hwb3J0ICcgK1xuICAgICAgJ3ZpZXdfc2V0X3lwb3J0IHZpZXdfc2V0X3dwb3J0IHZpZXdfc2V0X2hwb3J0IHZpZXdfc2V0X3N1cmZhY2VfaWQgJyArXG4gICAgICAnZ2VzdHVyZV9kcmFnX3RpbWUgZ2VzdHVyZV9kcmFnX2Rpc3RhbmNlIGdlc3R1cmVfZmxpY2tfc3BlZWQgJyArXG4gICAgICAnZ2VzdHVyZV9kb3VibGVfdGFwX3RpbWUgZ2VzdHVyZV9kb3VibGVfdGFwX2Rpc3RhbmNlICcgK1xuICAgICAgJ2dlc3R1cmVfcGluY2hfZGlzdGFuY2UgZ2VzdHVyZV9waW5jaF9hbmdsZV90b3dhcmRzICcgK1xuICAgICAgJ2dlc3R1cmVfcGluY2hfYW5nbGVfYXdheSBnZXN0dXJlX3JvdGF0ZV90aW1lIGdlc3R1cmVfcm90YXRlX2FuZ2xlICcgK1xuICAgICAgJ2dlc3R1cmVfdGFwX2NvdW50IGdlc3R1cmVfZ2V0X2RyYWdfdGltZSBnZXN0dXJlX2dldF9kcmFnX2Rpc3RhbmNlICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X2ZsaWNrX3NwZWVkIGdlc3R1cmVfZ2V0X2RvdWJsZV90YXBfdGltZSAnICtcbiAgICAgICdnZXN0dXJlX2dldF9kb3VibGVfdGFwX2Rpc3RhbmNlIGdlc3R1cmVfZ2V0X3BpbmNoX2Rpc3RhbmNlICcgK1xuICAgICAgJ2dlc3R1cmVfZ2V0X3BpbmNoX2FuZ2xlX3Rvd2FyZHMgZ2VzdHVyZV9nZXRfcGluY2hfYW5nbGVfYXdheSAnICtcbiAgICAgICdnZXN0dXJlX2dldF9yb3RhdGVfdGltZSBnZXN0dXJlX2dldF9yb3RhdGVfYW5nbGUgJyArXG4gICAgICAnZ2VzdHVyZV9nZXRfdGFwX2NvdW50IGtleWJvYXJkX3ZpcnR1YWxfc2hvdyBrZXlib2FyZF92aXJ0dWFsX2hpZGUgJyArXG4gICAgICAna2V5Ym9hcmRfdmlydHVhbF9zdGF0dXMga2V5Ym9hcmRfdmlydHVhbF9oZWlnaHQnLFxuICAgIGxpdGVyYWw6ICdzZWxmIG90aGVyIGFsbCBub29uZSBnbG9iYWwgbG9jYWwgdW5kZWZpbmVkIHBvaW50ZXJfaW52YWxpZCAnICtcbiAgICAgICdwb2ludGVyX251bGwgcGF0aF9hY3Rpb25fc3RvcCBwYXRoX2FjdGlvbl9yZXN0YXJ0ICcgK1xuICAgICAgJ3BhdGhfYWN0aW9uX2NvbnRpbnVlIHBhdGhfYWN0aW9uX3JldmVyc2UgdHJ1ZSBmYWxzZSBwaSBHTV9idWlsZF9kYXRlICcgK1xuICAgICAgJ0dNX3ZlcnNpb24gR01fcnVudGltZV92ZXJzaW9uICB0aW1lem9uZV9sb2NhbCB0aW1lem9uZV91dGMgJyArXG4gICAgICAnZ2FtZXNwZWVkX2ZwcyBnYW1lc3BlZWRfbWljcm9zZWNvbmRzICBldl9jcmVhdGUgZXZfZGVzdHJveSBldl9zdGVwICcgK1xuICAgICAgJ2V2X2FsYXJtIGV2X2tleWJvYXJkIGV2X21vdXNlIGV2X2NvbGxpc2lvbiBldl9vdGhlciBldl9kcmF3ICcgK1xuICAgICAgJ2V2X2RyYXdfYmVnaW4gZXZfZHJhd19lbmQgZXZfZHJhd19wcmUgZXZfZHJhd19wb3N0IGV2X2tleXByZXNzICcgK1xuICAgICAgJ2V2X2tleXJlbGVhc2UgZXZfdHJpZ2dlciBldl9sZWZ0X2J1dHRvbiBldl9yaWdodF9idXR0b24gJyArXG4gICAgICAnZXZfbWlkZGxlX2J1dHRvbiBldl9ub19idXR0b24gZXZfbGVmdF9wcmVzcyBldl9yaWdodF9wcmVzcyAnICtcbiAgICAgICdldl9taWRkbGVfcHJlc3MgZXZfbGVmdF9yZWxlYXNlIGV2X3JpZ2h0X3JlbGVhc2UgZXZfbWlkZGxlX3JlbGVhc2UgJyArXG4gICAgICAnZXZfbW91c2VfZW50ZXIgZXZfbW91c2VfbGVhdmUgZXZfbW91c2Vfd2hlZWxfdXAgZXZfbW91c2Vfd2hlZWxfZG93biAnICtcbiAgICAgICdldl9nbG9iYWxfbGVmdF9idXR0b24gZXZfZ2xvYmFsX3JpZ2h0X2J1dHRvbiBldl9nbG9iYWxfbWlkZGxlX2J1dHRvbiAnICtcbiAgICAgICdldl9nbG9iYWxfbGVmdF9wcmVzcyBldl9nbG9iYWxfcmlnaHRfcHJlc3MgZXZfZ2xvYmFsX21pZGRsZV9wcmVzcyAnICtcbiAgICAgICdldl9nbG9iYWxfbGVmdF9yZWxlYXNlIGV2X2dsb2JhbF9yaWdodF9yZWxlYXNlICcgK1xuICAgICAgJ2V2X2dsb2JhbF9taWRkbGVfcmVsZWFzZSBldl9qb3lzdGljazFfbGVmdCBldl9qb3lzdGljazFfcmlnaHQgJyArXG4gICAgICAnZXZfam95c3RpY2sxX3VwIGV2X2pveXN0aWNrMV9kb3duIGV2X2pveXN0aWNrMV9idXR0b24xICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMV9idXR0b24yIGV2X2pveXN0aWNrMV9idXR0b24zIGV2X2pveXN0aWNrMV9idXR0b240ICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMV9idXR0b241IGV2X2pveXN0aWNrMV9idXR0b242IGV2X2pveXN0aWNrMV9idXR0b243ICcgK1xuICAgICAgJ2V2X2pveXN0aWNrMV9idXR0b244IGV2X2pveXN0aWNrMl9sZWZ0IGV2X2pveXN0aWNrMl9yaWdodCAnICtcbiAgICAgICdldl9qb3lzdGljazJfdXAgZXZfam95c3RpY2syX2Rvd24gZXZfam95c3RpY2syX2J1dHRvbjEgJyArXG4gICAgICAnZXZfam95c3RpY2syX2J1dHRvbjIgZXZfam95c3RpY2syX2J1dHRvbjMgZXZfam95c3RpY2syX2J1dHRvbjQgJyArXG4gICAgICAnZXZfam95c3RpY2syX2J1dHRvbjUgZXZfam95c3RpY2syX2J1dHRvbjYgZXZfam95c3RpY2syX2J1dHRvbjcgJyArXG4gICAgICAnZXZfam95c3RpY2syX2J1dHRvbjggZXZfb3V0c2lkZSBldl9ib3VuZGFyeSBldl9nYW1lX3N0YXJ0ICcgK1xuICAgICAgJ2V2X2dhbWVfZW5kIGV2X3Jvb21fc3RhcnQgZXZfcm9vbV9lbmQgZXZfbm9fbW9yZV9saXZlcyAnICtcbiAgICAgICdldl9hbmltYXRpb25fZW5kIGV2X2VuZF9vZl9wYXRoIGV2X25vX21vcmVfaGVhbHRoIGV2X2Nsb3NlX2J1dHRvbiAnICtcbiAgICAgICdldl91c2VyMCBldl91c2VyMSBldl91c2VyMiBldl91c2VyMyBldl91c2VyNCBldl91c2VyNSBldl91c2VyNiAnICtcbiAgICAgICdldl91c2VyNyBldl91c2VyOCBldl91c2VyOSBldl91c2VyMTAgZXZfdXNlcjExIGV2X3VzZXIxMiBldl91c2VyMTMgJyArXG4gICAgICAnZXZfdXNlcjE0IGV2X3VzZXIxNSBldl9zdGVwX25vcm1hbCBldl9zdGVwX2JlZ2luIGV2X3N0ZXBfZW5kIGV2X2d1aSAnICtcbiAgICAgICdldl9ndWlfYmVnaW4gZXZfZ3VpX2VuZCBldl9jbGVhbnVwIGV2X2dlc3R1cmUgZXZfZ2VzdHVyZV90YXAgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9kb3VibGVfdGFwIGV2X2dlc3R1cmVfZHJhZ19zdGFydCBldl9nZXN0dXJlX2RyYWdnaW5nICcgK1xuICAgICAgJ2V2X2dlc3R1cmVfZHJhZ19lbmQgZXZfZ2VzdHVyZV9mbGljayBldl9nZXN0dXJlX3BpbmNoX3N0YXJ0ICcgK1xuICAgICAgJ2V2X2dlc3R1cmVfcGluY2hfaW4gZXZfZ2VzdHVyZV9waW5jaF9vdXQgZXZfZ2VzdHVyZV9waW5jaF9lbmQgJyArXG4gICAgICAnZXZfZ2VzdHVyZV9yb3RhdGVfc3RhcnQgZXZfZ2VzdHVyZV9yb3RhdGluZyBldl9nZXN0dXJlX3JvdGF0ZV9lbmQgJyArXG4gICAgICAnZXZfZ2xvYmFsX2dlc3R1cmVfdGFwIGV2X2dsb2JhbF9nZXN0dXJlX2RvdWJsZV90YXAgJyArXG4gICAgICAnZXZfZ2xvYmFsX2dlc3R1cmVfZHJhZ19zdGFydCBldl9nbG9iYWxfZ2VzdHVyZV9kcmFnZ2luZyAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9kcmFnX2VuZCBldl9nbG9iYWxfZ2VzdHVyZV9mbGljayAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9zdGFydCBldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9pbiAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9vdXQgZXZfZ2xvYmFsX2dlc3R1cmVfcGluY2hfZW5kICcgK1xuICAgICAgJ2V2X2dsb2JhbF9nZXN0dXJlX3JvdGF0ZV9zdGFydCBldl9nbG9iYWxfZ2VzdHVyZV9yb3RhdGluZyAnICtcbiAgICAgICdldl9nbG9iYWxfZ2VzdHVyZV9yb3RhdGVfZW5kIHZrX25va2V5IHZrX2FueWtleSB2a19lbnRlciB2a19yZXR1cm4gJyArXG4gICAgICAndmtfc2hpZnQgdmtfY29udHJvbCB2a19hbHQgdmtfZXNjYXBlIHZrX3NwYWNlIHZrX2JhY2tzcGFjZSB2a190YWIgJyArXG4gICAgICAndmtfcGF1c2UgdmtfcHJpbnRzY3JlZW4gdmtfbGVmdCB2a19yaWdodCB2a191cCB2a19kb3duIHZrX2hvbWUgJyArXG4gICAgICAndmtfZW5kIHZrX2RlbGV0ZSB2a19pbnNlcnQgdmtfcGFnZXVwIHZrX3BhZ2Vkb3duIHZrX2YxIHZrX2YyIHZrX2YzICcgK1xuICAgICAgJ3ZrX2Y0IHZrX2Y1IHZrX2Y2IHZrX2Y3IHZrX2Y4IHZrX2Y5IHZrX2YxMCB2a19mMTEgdmtfZjEyIHZrX251bXBhZDAgJyArXG4gICAgICAndmtfbnVtcGFkMSB2a19udW1wYWQyIHZrX251bXBhZDMgdmtfbnVtcGFkNCB2a19udW1wYWQ1IHZrX251bXBhZDYgJyArXG4gICAgICAndmtfbnVtcGFkNyB2a19udW1wYWQ4IHZrX251bXBhZDkgdmtfZGl2aWRlIHZrX211bHRpcGx5IHZrX3N1YnRyYWN0ICcgK1xuICAgICAgJ3ZrX2FkZCB2a19kZWNpbWFsIHZrX2xzaGlmdCB2a19sY29udHJvbCB2a19sYWx0IHZrX3JzaGlmdCAnICtcbiAgICAgICd2a19yY29udHJvbCB2a19yYWx0ICBtYl9hbnkgbWJfbm9uZSBtYl9sZWZ0IG1iX3JpZ2h0IG1iX21pZGRsZSAnICtcbiAgICAgICdjX2FxdWEgY19ibGFjayBjX2JsdWUgY19ka2dyYXkgY19mdWNoc2lhIGNfZ3JheSBjX2dyZWVuIGNfbGltZSAnICtcbiAgICAgICdjX2x0Z3JheSBjX21hcm9vbiBjX25hdnkgY19vbGl2ZSBjX3B1cnBsZSBjX3JlZCBjX3NpbHZlciBjX3RlYWwgJyArXG4gICAgICAnY193aGl0ZSBjX3llbGxvdyBjX29yYW5nZSBmYV9sZWZ0IGZhX2NlbnRlciBmYV9yaWdodCBmYV90b3AgJyArXG4gICAgICAnZmFfbWlkZGxlIGZhX2JvdHRvbSBwcl9wb2ludGxpc3QgcHJfbGluZWxpc3QgcHJfbGluZXN0cmlwICcgK1xuICAgICAgJ3ByX3RyaWFuZ2xlbGlzdCBwcl90cmlhbmdsZXN0cmlwIHByX3RyaWFuZ2xlZmFuIGJtX2NvbXBsZXggYm1fbm9ybWFsICcgK1xuICAgICAgJ2JtX2FkZCBibV9tYXggYm1fc3VidHJhY3QgYm1femVybyBibV9vbmUgYm1fc3JjX2NvbG91ciAnICtcbiAgICAgICdibV9pbnZfc3JjX2NvbG91ciBibV9zcmNfY29sb3IgYm1faW52X3NyY19jb2xvciBibV9zcmNfYWxwaGEgJyArXG4gICAgICAnYm1faW52X3NyY19hbHBoYSBibV9kZXN0X2FscGhhIGJtX2ludl9kZXN0X2FscGhhIGJtX2Rlc3RfY29sb3VyICcgK1xuICAgICAgJ2JtX2ludl9kZXN0X2NvbG91ciBibV9kZXN0X2NvbG9yIGJtX2ludl9kZXN0X2NvbG9yIGJtX3NyY19hbHBoYV9zYXQgJyArXG4gICAgICAndGZfcG9pbnQgdGZfbGluZWFyIHRmX2FuaXNvdHJvcGljIG1pcF9vZmYgbWlwX29uIG1pcF9tYXJrZWRvbmx5ICcgK1xuICAgICAgJ2F1ZGlvX2ZhbGxvZmZfbm9uZSBhdWRpb19mYWxsb2ZmX2ludmVyc2VfZGlzdGFuY2UgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9pbnZlcnNlX2Rpc3RhbmNlX2NsYW1wZWQgYXVkaW9fZmFsbG9mZl9saW5lYXJfZGlzdGFuY2UgJyArXG4gICAgICAnYXVkaW9fZmFsbG9mZl9saW5lYXJfZGlzdGFuY2VfY2xhbXBlZCAnICtcbiAgICAgICdhdWRpb19mYWxsb2ZmX2V4cG9uZW50X2Rpc3RhbmNlICcgK1xuICAgICAgJ2F1ZGlvX2ZhbGxvZmZfZXhwb25lbnRfZGlzdGFuY2VfY2xhbXBlZCBhdWRpb19vbGRfc3lzdGVtICcgK1xuICAgICAgJ2F1ZGlvX25ld19zeXN0ZW0gYXVkaW9fbW9ubyBhdWRpb19zdGVyZW8gYXVkaW9fM2QgY3JfZGVmYXVsdCBjcl9ub25lICcgK1xuICAgICAgJ2NyX2Fycm93IGNyX2Nyb3NzIGNyX2JlYW0gY3Jfc2l6ZV9uZXN3IGNyX3NpemVfbnMgY3Jfc2l6ZV9ud3NlICcgK1xuICAgICAgJ2NyX3NpemVfd2UgY3JfdXBhcnJvdyBjcl9ob3VyZ2xhc3MgY3JfZHJhZyBjcl9hcHBzdGFydCBjcl9oYW5kcG9pbnQgJyArXG4gICAgICAnY3Jfc2l6ZV9hbGwgc3ByaXRlc3BlZWRfZnJhbWVzcGVyc2Vjb25kICcgK1xuICAgICAgJ3Nwcml0ZXNwZWVkX2ZyYW1lc3BlcmdhbWVmcmFtZSBhc3NldF9vYmplY3QgYXNzZXRfdW5rbm93biAnICtcbiAgICAgICdhc3NldF9zcHJpdGUgYXNzZXRfc291bmQgYXNzZXRfcm9vbSBhc3NldF9wYXRoIGFzc2V0X3NjcmlwdCAnICtcbiAgICAgICdhc3NldF9mb250IGFzc2V0X3RpbWVsaW5lIGFzc2V0X3RpbGVzIGFzc2V0X3NoYWRlciBmYV9yZWFkb25seSAnICtcbiAgICAgICdmYV9oaWRkZW4gZmFfc3lzZmlsZSBmYV92b2x1bWVpZCBmYV9kaXJlY3RvcnkgZmFfYXJjaGl2ZSAgJyArXG4gICAgICAnZHNfdHlwZV9tYXAgZHNfdHlwZV9saXN0IGRzX3R5cGVfc3RhY2sgZHNfdHlwZV9xdWV1ZSBkc190eXBlX2dyaWQgJyArXG4gICAgICAnZHNfdHlwZV9wcmlvcml0eSBlZl9leHBsb3Npb24gZWZfcmluZyBlZl9lbGxpcHNlIGVmX2ZpcmV3b3JrICcgK1xuICAgICAgJ2VmX3Ntb2tlIGVmX3Ntb2tldXAgZWZfc3RhciBlZl9zcGFyayBlZl9mbGFyZSBlZl9jbG91ZCBlZl9yYWluICcgK1xuICAgICAgJ2VmX3Nub3cgcHRfc2hhcGVfcGl4ZWwgcHRfc2hhcGVfZGlzayBwdF9zaGFwZV9zcXVhcmUgcHRfc2hhcGVfbGluZSAnICtcbiAgICAgICdwdF9zaGFwZV9zdGFyIHB0X3NoYXBlX2NpcmNsZSBwdF9zaGFwZV9yaW5nIHB0X3NoYXBlX3NwaGVyZSAnICtcbiAgICAgICdwdF9zaGFwZV9mbGFyZSBwdF9zaGFwZV9zcGFyayBwdF9zaGFwZV9leHBsb3Npb24gcHRfc2hhcGVfY2xvdWQgJyArXG4gICAgICAncHRfc2hhcGVfc21va2UgcHRfc2hhcGVfc25vdyBwc19kaXN0cl9saW5lYXIgcHNfZGlzdHJfZ2F1c3NpYW4gJyArXG4gICAgICAncHNfZGlzdHJfaW52Z2F1c3NpYW4gcHNfc2hhcGVfcmVjdGFuZ2xlIHBzX3NoYXBlX2VsbGlwc2UgJyArXG4gICAgICAncHNfc2hhcGVfZGlhbW9uZCBwc19zaGFwZV9saW5lIHR5X3JlYWwgdHlfc3RyaW5nIGRsbF9jZGVjbCAnICtcbiAgICAgICdkbGxfc3RkY2FsbCBtYXRyaXhfdmlldyBtYXRyaXhfcHJvamVjdGlvbiBtYXRyaXhfd29ybGQgb3Nfd2luMzIgJyArXG4gICAgICAnb3Nfd2luZG93cyBvc19tYWNvc3ggb3NfaW9zIG9zX2FuZHJvaWQgb3Nfc3ltYmlhbiBvc19saW51eCAnICtcbiAgICAgICdvc191bmtub3duIG9zX3dpbnBob25lIG9zX3RpemVuIG9zX3dpbjhuYXRpdmUgJyArXG4gICAgICAnb3Nfd2lpdSBvc18zZHMgIG9zX3Bzdml0YSBvc19iYjEwIG9zX3BzNCBvc194Ym94b25lICcgK1xuICAgICAgJ29zX3BzMyBvc194Ym94MzYwIG9zX3V3cCBvc190dm9zIG9zX3N3aXRjaCAnICtcbiAgICAgICdicm93c2VyX25vdF9hX2Jyb3dzZXIgYnJvd3Nlcl91bmtub3duIGJyb3dzZXJfaWUgYnJvd3Nlcl9maXJlZm94ICcgK1xuICAgICAgJ2Jyb3dzZXJfY2hyb21lIGJyb3dzZXJfc2FmYXJpIGJyb3dzZXJfc2FmYXJpX21vYmlsZSBicm93c2VyX29wZXJhICcgK1xuICAgICAgJ2Jyb3dzZXJfdGl6ZW4gYnJvd3Nlcl9lZGdlIGJyb3dzZXJfd2luZG93c19zdG9yZSBicm93c2VyX2llX21vYmlsZSAgJyArXG4gICAgICAnZGV2aWNlX2lvc191bmtub3duIGRldmljZV9pb3NfaXBob25lIGRldmljZV9pb3NfaXBob25lX3JldGluYSAnICtcbiAgICAgICdkZXZpY2VfaW9zX2lwYWQgZGV2aWNlX2lvc19pcGFkX3JldGluYSBkZXZpY2VfaW9zX2lwaG9uZTUgJyArXG4gICAgICAnZGV2aWNlX2lvc19pcGhvbmU2IGRldmljZV9pb3NfaXBob25lNnBsdXMgZGV2aWNlX2VtdWxhdG9yICcgK1xuICAgICAgJ2RldmljZV90YWJsZXQgZGlzcGxheV9sYW5kc2NhcGUgZGlzcGxheV9sYW5kc2NhcGVfZmxpcHBlZCAnICtcbiAgICAgICdkaXNwbGF5X3BvcnRyYWl0IGRpc3BsYXlfcG9ydHJhaXRfZmxpcHBlZCB0bV9zbGVlcCB0bV9jb3VudHZzeW5jcyAnICtcbiAgICAgICdvZl9jaGFsbGVuZ2Vfd2luIG9mX2NoYWxsZW4gZ2VfbG9zZSBvZl9jaGFsbGVuZ2VfdGllICcgK1xuICAgICAgJ2xlYWRlcmJvYXJkX3R5cGVfbnVtYmVyIGxlYWRlcmJvYXJkX3R5cGVfdGltZV9taW5zX3NlY3MgJyArXG4gICAgICAnY21wZnVuY19uZXZlciBjbXBmdW5jX2xlc3MgY21wZnVuY19lcXVhbCBjbXBmdW5jX2xlc3NlcXVhbCAnICtcbiAgICAgICdjbXBmdW5jX2dyZWF0ZXIgY21wZnVuY19ub3RlcXVhbCBjbXBmdW5jX2dyZWF0ZXJlcXVhbCBjbXBmdW5jX2Fsd2F5cyAnICtcbiAgICAgICdjdWxsX25vY3VsbGluZyBjdWxsX2Nsb2Nrd2lzZSBjdWxsX2NvdW50ZXJjbG9ja3dpc2UgbGlnaHR0eXBlX2RpciAnICtcbiAgICAgICdsaWdodHR5cGVfcG9pbnQgaWFwX2V2X3N0b3JlbG9hZCBpYXBfZXZfcHJvZHVjdCBpYXBfZXZfcHVyY2hhc2UgJyArXG4gICAgICAnaWFwX2V2X2NvbnN1bWUgaWFwX2V2X3Jlc3RvcmUgaWFwX3N0b3JlbG9hZF9vayBpYXBfc3RvcmVsb2FkX2ZhaWxlZCAnICtcbiAgICAgICdpYXBfc3RhdHVzX3VuaW5pdGlhbGlzZWQgaWFwX3N0YXR1c191bmF2YWlsYWJsZSBpYXBfc3RhdHVzX2xvYWRpbmcgJyArXG4gICAgICAnaWFwX3N0YXR1c19hdmFpbGFibGUgaWFwX3N0YXR1c19wcm9jZXNzaW5nIGlhcF9zdGF0dXNfcmVzdG9yaW5nICcgK1xuICAgICAgJ2lhcF9mYWlsZWQgaWFwX3VuYXZhaWxhYmxlIGlhcF9hdmFpbGFibGUgaWFwX3B1cmNoYXNlZCBpYXBfY2FuY2VsZWQgJyArXG4gICAgICAnaWFwX3JlZnVuZGVkIGZiX2xvZ2luX2RlZmF1bHQgZmJfbG9naW5fZmFsbGJhY2tfdG9fd2VidmlldyAnICtcbiAgICAgICdmYl9sb2dpbl9ub19mYWxsYmFja190b193ZWJ2aWV3IGZiX2xvZ2luX2ZvcmNpbmdfd2VidmlldyAnICtcbiAgICAgICdmYl9sb2dpbl91c2Vfc3lzdGVtX2FjY291bnQgZmJfbG9naW5fZm9yY2luZ19zYWZhcmkgICcgK1xuICAgICAgJ3BoeV9qb2ludF9hbmNob3JfMV94IHBoeV9qb2ludF9hbmNob3JfMV95IHBoeV9qb2ludF9hbmNob3JfMl94ICcgK1xuICAgICAgJ3BoeV9qb2ludF9hbmNob3JfMl95IHBoeV9qb2ludF9yZWFjdGlvbl9mb3JjZV94ICcgK1xuICAgICAgJ3BoeV9qb2ludF9yZWFjdGlvbl9mb3JjZV95IHBoeV9qb2ludF9yZWFjdGlvbl90b3JxdWUgJyArXG4gICAgICAncGh5X2pvaW50X21vdG9yX3NwZWVkIHBoeV9qb2ludF9hbmdsZSBwaHlfam9pbnRfbW90b3JfdG9ycXVlICcgK1xuICAgICAgJ3BoeV9qb2ludF9tYXhfbW90b3JfdG9ycXVlIHBoeV9qb2ludF90cmFuc2xhdGlvbiBwaHlfam9pbnRfc3BlZWQgJyArXG4gICAgICAncGh5X2pvaW50X21vdG9yX2ZvcmNlIHBoeV9qb2ludF9tYXhfbW90b3JfZm9yY2UgcGh5X2pvaW50X2xlbmd0aF8xICcgK1xuICAgICAgJ3BoeV9qb2ludF9sZW5ndGhfMiBwaHlfam9pbnRfZGFtcGluZ19yYXRpbyBwaHlfam9pbnRfZnJlcXVlbmN5ICcgK1xuICAgICAgJ3BoeV9qb2ludF9sb3dlcl9hbmdsZV9saW1pdCBwaHlfam9pbnRfdXBwZXJfYW5nbGVfbGltaXQgJyArXG4gICAgICAncGh5X2pvaW50X2FuZ2xlX2xpbWl0cyBwaHlfam9pbnRfbWF4X2xlbmd0aCBwaHlfam9pbnRfbWF4X3RvcnF1ZSAnICtcbiAgICAgICdwaHlfam9pbnRfbWF4X2ZvcmNlIHBoeV9kZWJ1Z19yZW5kZXJfYWFiYiAnICtcbiAgICAgICdwaHlfZGVidWdfcmVuZGVyX2NvbGxpc2lvbl9wYWlycyBwaHlfZGVidWdfcmVuZGVyX2NvbXMgJyArXG4gICAgICAncGh5X2RlYnVnX3JlbmRlcl9jb3JlX3NoYXBlcyBwaHlfZGVidWdfcmVuZGVyX2pvaW50cyAnICtcbiAgICAgICdwaHlfZGVidWdfcmVuZGVyX29iYiBwaHlfZGVidWdfcmVuZGVyX3NoYXBlcyAgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2ZsYWdfd2F0ZXIgcGh5X3BhcnRpY2xlX2ZsYWdfem9tYmllICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX3dhbGwgcGh5X3BhcnRpY2xlX2ZsYWdfc3ByaW5nICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9mbGFnX2VsYXN0aWMgcGh5X3BhcnRpY2xlX2ZsYWdfdmlzY291cyAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZmxhZ19wb3dkZXIgcGh5X3BhcnRpY2xlX2ZsYWdfdGVuc2lsZSAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZmxhZ19jb2xvdXJtaXhpbmcgcGh5X3BhcnRpY2xlX2ZsYWdfY29sb3JtaXhpbmcgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2dyb3VwX2ZsYWdfc29saWQgcGh5X3BhcnRpY2xlX2dyb3VwX2ZsYWdfcmlnaWQgJyArXG4gICAgICAncGh5X3BhcnRpY2xlX2RhdGFfZmxhZ190eXBlZmxhZ3MgcGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19wb3NpdGlvbiAnICtcbiAgICAgICdwaHlfcGFydGljbGVfZGF0YV9mbGFnX3ZlbG9jaXR5IHBoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfY29sb3VyICcgK1xuICAgICAgJ3BoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfY29sb3IgcGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jYXRlZ29yeSAgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfb3VyX2luZm8gYWNoaWV2ZW1lbnRfZnJpZW5kc19pbmZvICcgK1xuICAgICAgJ2FjaGlldmVtZW50X2xlYWRlcmJvYXJkX2luZm8gYWNoaWV2ZW1lbnRfYWNoaWV2ZW1lbnRfaW5mbyAnICtcbiAgICAgICdhY2hpZXZlbWVudF9maWx0ZXJfYWxsX3BsYXllcnMgYWNoaWV2ZW1lbnRfZmlsdGVyX2ZyaWVuZHNfb25seSAnICtcbiAgICAgICdhY2hpZXZlbWVudF9maWx0ZXJfZmF2b3JpdGVzX29ubHkgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfdHlwZV9hY2hpZXZlbWVudF9jaGFsbGVuZ2UgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfdHlwZV9zY29yZV9jaGFsbGVuZ2UgYWNoaWV2ZW1lbnRfcGljX2xvYWRlZCAgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd191aSBhY2hpZXZlbWVudF9zaG93X3Byb2ZpbGUgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19sZWFkZXJib2FyZCBhY2hpZXZlbWVudF9zaG93X2FjaGlldmVtZW50ICcgK1xuICAgICAgJ2FjaGlldmVtZW50X3Nob3dfYmFuayBhY2hpZXZlbWVudF9zaG93X2ZyaWVuZF9waWNrZXIgJyArXG4gICAgICAnYWNoaWV2ZW1lbnRfc2hvd19wdXJjaGFzZV9wcm9tcHQgbmV0d29ya19zb2NrZXRfdGNwICcgK1xuICAgICAgJ25ldHdvcmtfc29ja2V0X3VkcCBuZXR3b3JrX3NvY2tldF9ibHVldG9vdGggbmV0d29ya190eXBlX2Nvbm5lY3QgJyArXG4gICAgICAnbmV0d29ya190eXBlX2Rpc2Nvbm5lY3QgbmV0d29ya190eXBlX2RhdGEgJyArXG4gICAgICAnbmV0d29ya190eXBlX25vbl9ibG9ja2luZ19jb25uZWN0IG5ldHdvcmtfY29uZmlnX2Nvbm5lY3RfdGltZW91dCAnICtcbiAgICAgICduZXR3b3JrX2NvbmZpZ191c2Vfbm9uX2Jsb2NraW5nX3NvY2tldCAnICtcbiAgICAgICduZXR3b3JrX2NvbmZpZ19lbmFibGVfcmVsaWFibGVfdWRwICcgK1xuICAgICAgJ25ldHdvcmtfY29uZmlnX2Rpc2FibGVfcmVsaWFibGVfdWRwIGJ1ZmZlcl9maXhlZCBidWZmZXJfZ3JvdyAnICtcbiAgICAgICdidWZmZXJfd3JhcCBidWZmZXJfZmFzdCBidWZmZXJfdmJ1ZmZlciBidWZmZXJfbmV0d29yayBidWZmZXJfdTggJyArXG4gICAgICAnYnVmZmVyX3M4IGJ1ZmZlcl91MTYgYnVmZmVyX3MxNiBidWZmZXJfdTMyIGJ1ZmZlcl9zMzIgYnVmZmVyX3U2NCAnICtcbiAgICAgICdidWZmZXJfZjE2IGJ1ZmZlcl9mMzIgYnVmZmVyX2Y2NCBidWZmZXJfYm9vbCBidWZmZXJfdGV4dCAnICtcbiAgICAgICdidWZmZXJfc3RyaW5nIGJ1ZmZlcl9zdXJmYWNlX2NvcHkgYnVmZmVyX3NlZWtfc3RhcnQgJyArXG4gICAgICAnYnVmZmVyX3NlZWtfcmVsYXRpdmUgYnVmZmVyX3NlZWtfZW5kICcgK1xuICAgICAgJ2J1ZmZlcl9nZW5lcmFsZXJyb3IgYnVmZmVyX291dG9mc3BhY2UgYnVmZmVyX291dG9mYm91bmRzICcgK1xuICAgICAgJ2J1ZmZlcl9pbnZhbGlkdHlwZSAgdGV4dF90eXBlIGJ1dHRvbl90eXBlIGlucHV0X3R5cGUgQU5TSV9DSEFSU0VUICcgK1xuICAgICAgJ0RFRkFVTFRfQ0hBUlNFVCBFQVNURVVST1BFX0NIQVJTRVQgUlVTU0lBTl9DSEFSU0VUIFNZTUJPTF9DSEFSU0VUICcgK1xuICAgICAgJ1NISUZUSklTX0NIQVJTRVQgSEFOR0VVTF9DSEFSU0VUIEdCMjMxMl9DSEFSU0VUIENISU5FU0VCSUc1X0NIQVJTRVQgJyArXG4gICAgICAnSk9IQUJfQ0hBUlNFVCBIRUJSRVdfQ0hBUlNFVCBBUkFCSUNfQ0hBUlNFVCBHUkVFS19DSEFSU0VUICcgK1xuICAgICAgJ1RVUktJU0hfQ0hBUlNFVCBWSUVUTkFNRVNFX0NIQVJTRVQgVEhBSV9DSEFSU0VUIE1BQ19DSEFSU0VUICcgK1xuICAgICAgJ0JBTFRJQ19DSEFSU0VUIE9FTV9DSEFSU0VUICBncF9mYWNlMSBncF9mYWNlMiBncF9mYWNlMyBncF9mYWNlNCAnICtcbiAgICAgICdncF9zaG91bGRlcmwgZ3Bfc2hvdWxkZXJyIGdwX3Nob3VsZGVybGIgZ3Bfc2hvdWxkZXJyYiBncF9zZWxlY3QgJyArXG4gICAgICAnZ3Bfc3RhcnQgZ3Bfc3RpY2tsIGdwX3N0aWNrciBncF9wYWR1IGdwX3BhZGQgZ3BfcGFkbCBncF9wYWRyICcgK1xuICAgICAgJ2dwX2F4aXNsaCBncF9heGlzbHYgZ3BfYXhpc3JoIGdwX2F4aXNydiBvdl9mcmllbmRzIG92X2NvbW11bml0eSAnICtcbiAgICAgICdvdl9wbGF5ZXJzIG92X3NldHRpbmdzIG92X2dhbWVncm91cCBvdl9hY2hpZXZlbWVudHMgbGJfc29ydF9ub25lICcgK1xuICAgICAgJ2xiX3NvcnRfYXNjZW5kaW5nIGxiX3NvcnRfZGVzY2VuZGluZyBsYl9kaXNwX25vbmUgbGJfZGlzcF9udW1lcmljICcgK1xuICAgICAgJ2xiX2Rpc3BfdGltZV9zZWMgbGJfZGlzcF90aW1lX21zIHVnY19yZXN1bHRfc3VjY2VzcyAnICtcbiAgICAgICd1Z2NfZmlsZXR5cGVfY29tbXVuaXR5IHVnY19maWxldHlwZV9taWNyb3RyYW5zIHVnY192aXNpYmlsaXR5X3B1YmxpYyAnICtcbiAgICAgICd1Z2NfdmlzaWJpbGl0eV9mcmllbmRzX29ubHkgdWdjX3Zpc2liaWxpdHlfcHJpdmF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlWb3RlIHVnY19xdWVyeV9SYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfQWNjZXB0ZWRGb3JHYW1lUmFua2VkQnlBY2NlcHRhbmNlRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlUcmVuZCAnICtcbiAgICAgICd1Z2NfcXVlcnlfRmF2b3JpdGVkQnlGcmllbmRzUmFua2VkQnlQdWJsaWNhdGlvbkRhdGUgJyArXG4gICAgICAndWdjX3F1ZXJ5X0NyZWF0ZWRCeUZyaWVuZHNSYW5rZWRCeVB1YmxpY2F0aW9uRGF0ZSAnICtcbiAgICAgICd1Z2NfcXVlcnlfUmFua2VkQnlOdW1UaW1lc1JlcG9ydGVkICcgK1xuICAgICAgJ3VnY19xdWVyeV9DcmVhdGVkQnlGb2xsb3dlZFVzZXJzUmFua2VkQnlQdWJsaWNhdGlvbkRhdGUgJyArXG4gICAgICAndWdjX3F1ZXJ5X05vdFlldFJhdGVkIHVnY19xdWVyeV9SYW5rZWRCeVRvdGFsVm90ZXNBc2MgJyArXG4gICAgICAndWdjX3F1ZXJ5X1JhbmtlZEJ5Vm90ZXNVcCB1Z2NfcXVlcnlfUmFua2VkQnlUZXh0U2VhcmNoICcgK1xuICAgICAgJ3VnY19zb3J0b3JkZXJfQ3JlYXRpb25PcmRlckRlc2MgdWdjX3NvcnRvcmRlcl9DcmVhdGlvbk9yZGVyQXNjICcgK1xuICAgICAgJ3VnY19zb3J0b3JkZXJfVGl0bGVBc2MgdWdjX3NvcnRvcmRlcl9MYXN0VXBkYXRlZERlc2MgJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9TdWJzY3JpcHRpb25EYXRlRGVzYyB1Z2Nfc29ydG9yZGVyX1ZvdGVTY29yZURlc2MgJyArXG4gICAgICAndWdjX3NvcnRvcmRlcl9Gb3JNb2RlcmF0aW9uIHVnY19saXN0X1B1Ymxpc2hlZCB1Z2NfbGlzdF9Wb3RlZE9uICcgK1xuICAgICAgJ3VnY19saXN0X1ZvdGVkVXAgdWdjX2xpc3RfVm90ZWREb3duIHVnY19saXN0X1dpbGxWb3RlTGF0ZXIgJyArXG4gICAgICAndWdjX2xpc3RfRmF2b3JpdGVkIHVnY19saXN0X1N1YnNjcmliZWQgdWdjX2xpc3RfVXNlZE9yUGxheWVkICcgK1xuICAgICAgJ3VnY19saXN0X0ZvbGxvd2VkIHVnY19tYXRjaF9JdGVtcyB1Z2NfbWF0Y2hfSXRlbXNfTXR4ICcgK1xuICAgICAgJ3VnY19tYXRjaF9JdGVtc19SZWFkeVRvVXNlIHVnY19tYXRjaF9Db2xsZWN0aW9ucyB1Z2NfbWF0Y2hfQXJ0d29yayAnICtcbiAgICAgICd1Z2NfbWF0Y2hfVmlkZW9zIHVnY19tYXRjaF9TY3JlZW5zaG90cyB1Z2NfbWF0Y2hfQWxsR3VpZGVzICcgK1xuICAgICAgJ3VnY19tYXRjaF9XZWJHdWlkZXMgdWdjX21hdGNoX0ludGVncmF0ZWRHdWlkZXMgJyArXG4gICAgICAndWdjX21hdGNoX1VzYWJsZUluR2FtZSB1Z2NfbWF0Y2hfQ29udHJvbGxlckJpbmRpbmdzICAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2VfcG9zaXRpb24gdmVydGV4X3VzYWdlX2NvbG91ciB2ZXJ0ZXhfdXNhZ2VfY29sb3IgJyArXG4gICAgICAndmVydGV4X3VzYWdlX25vcm1hbCB2ZXJ0ZXhfdXNhZ2VfdGV4Y29vcmQgdmVydGV4X3VzYWdlX3RleHRjb29yZCAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2VfYmxlbmR3ZWlnaHQgdmVydGV4X3VzYWdlX2JsZW5kaW5kaWNlcyAnICtcbiAgICAgICd2ZXJ0ZXhfdXNhZ2VfcHNpemUgdmVydGV4X3VzYWdlX3RhbmdlbnQgdmVydGV4X3VzYWdlX2Jpbm9ybWFsICcgK1xuICAgICAgJ3ZlcnRleF91c2FnZV9mb2cgdmVydGV4X3VzYWdlX2RlcHRoIHZlcnRleF91c2FnZV9zYW1wbGUgJyArXG4gICAgICAndmVydGV4X3R5cGVfZmxvYXQxIHZlcnRleF90eXBlX2Zsb2F0MiB2ZXJ0ZXhfdHlwZV9mbG9hdDMgJyArXG4gICAgICAndmVydGV4X3R5cGVfZmxvYXQ0IHZlcnRleF90eXBlX2NvbG91ciB2ZXJ0ZXhfdHlwZV9jb2xvciAnICtcbiAgICAgICd2ZXJ0ZXhfdHlwZV91Ynl0ZTQgbGF5ZXJlbGVtZW50dHlwZV91bmRlZmluZWQgJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV9iYWNrZ3JvdW5kIGxheWVyZWxlbWVudHR5cGVfaW5zdGFuY2UgJyArXG4gICAgICAnbGF5ZXJlbGVtZW50dHlwZV9vbGR0aWxlbWFwIGxheWVyZWxlbWVudHR5cGVfc3ByaXRlICcgK1xuICAgICAgJ2xheWVyZWxlbWVudHR5cGVfdGlsZW1hcCBsYXllcmVsZW1lbnR0eXBlX3BhcnRpY2xlc3lzdGVtICcgK1xuICAgICAgJ2xheWVyZWxlbWVudHR5cGVfdGlsZSB0aWxlX3JvdGF0ZSB0aWxlX2ZsaXAgdGlsZV9taXJyb3IgJyArXG4gICAgICAndGlsZV9pbmRleF9tYXNrIGtidl90eXBlX2RlZmF1bHQga2J2X3R5cGVfYXNjaWkga2J2X3R5cGVfdXJsICcgK1xuICAgICAgJ2tidl90eXBlX2VtYWlsIGtidl90eXBlX251bWJlcnMga2J2X3R5cGVfcGhvbmUga2J2X3R5cGVfcGhvbmVfbmFtZSAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X2RlZmF1bHQga2J2X3JldHVybmtleV9nbyBrYnZfcmV0dXJua2V5X2dvb2dsZSAnICtcbiAgICAgICdrYnZfcmV0dXJua2V5X2pvaW4ga2J2X3JldHVybmtleV9uZXh0IGtidl9yZXR1cm5rZXlfcm91dGUgJyArXG4gICAgICAna2J2X3JldHVybmtleV9zZWFyY2gga2J2X3JldHVybmtleV9zZW5kIGtidl9yZXR1cm5rZXlfeWFob28gJyArXG4gICAgICAna2J2X3JldHVybmtleV9kb25lIGtidl9yZXR1cm5rZXlfY29udGludWUga2J2X3JldHVybmtleV9lbWVyZ2VuY3kgJyArXG4gICAgICAna2J2X2F1dG9jYXBpdGFsaXplX25vbmUga2J2X2F1dG9jYXBpdGFsaXplX3dvcmRzICcgK1xuICAgICAgJ2tidl9hdXRvY2FwaXRhbGl6ZV9zZW50ZW5jZXMga2J2X2F1dG9jYXBpdGFsaXplX2NoYXJhY3RlcnMnLFxuICAgIHN5bWJvbDogJ2FyZ3VtZW50X3JlbGF0aXZlIGFyZ3VtZW50IGFyZ3VtZW50MCBhcmd1bWVudDEgYXJndW1lbnQyICcgK1xuICAgICAgJ2FyZ3VtZW50MyBhcmd1bWVudDQgYXJndW1lbnQ1IGFyZ3VtZW50NiBhcmd1bWVudDcgYXJndW1lbnQ4ICcgK1xuICAgICAgJ2FyZ3VtZW50OSBhcmd1bWVudDEwIGFyZ3VtZW50MTEgYXJndW1lbnQxMiBhcmd1bWVudDEzIGFyZ3VtZW50MTQgJyArXG4gICAgICAnYXJndW1lbnQxNSBhcmd1bWVudF9jb3VudCB4IHkgeHByZXZpb3VzIHlwcmV2aW91cyB4c3RhcnQgeXN0YXJ0ICcgK1xuICAgICAgJ2hzcGVlZCB2c3BlZWQgZGlyZWN0aW9uIHNwZWVkIGZyaWN0aW9uIGdyYXZpdHkgZ3Jhdml0eV9kaXJlY3Rpb24gJyArXG4gICAgICAncGF0aF9pbmRleCBwYXRoX3Bvc2l0aW9uIHBhdGhfcG9zaXRpb25wcmV2aW91cyBwYXRoX3NwZWVkICcgK1xuICAgICAgJ3BhdGhfc2NhbGUgcGF0aF9vcmllbnRhdGlvbiBwYXRoX2VuZGFjdGlvbiBvYmplY3RfaW5kZXggaWQgc29saWQgJyArXG4gICAgICAncGVyc2lzdGVudCBtYXNrX2luZGV4IGluc3RhbmNlX2NvdW50IGluc3RhbmNlX2lkIHJvb21fc3BlZWQgZnBzICcgK1xuICAgICAgJ2Zwc19yZWFsIGN1cnJlbnRfdGltZSBjdXJyZW50X3llYXIgY3VycmVudF9tb250aCBjdXJyZW50X2RheSAnICtcbiAgICAgICdjdXJyZW50X3dlZWtkYXkgY3VycmVudF9ob3VyIGN1cnJlbnRfbWludXRlIGN1cnJlbnRfc2Vjb25kIGFsYXJtICcgK1xuICAgICAgJ3RpbWVsaW5lX2luZGV4IHRpbWVsaW5lX3Bvc2l0aW9uIHRpbWVsaW5lX3NwZWVkIHRpbWVsaW5lX3J1bm5pbmcgJyArXG4gICAgICAndGltZWxpbmVfbG9vcCByb29tIHJvb21fZmlyc3Qgcm9vbV9sYXN0IHJvb21fd2lkdGggcm9vbV9oZWlnaHQgJyArXG4gICAgICAncm9vbV9jYXB0aW9uIHJvb21fcGVyc2lzdGVudCBzY29yZSBsaXZlcyBoZWFsdGggc2hvd19zY29yZSAnICtcbiAgICAgICdzaG93X2xpdmVzIHNob3dfaGVhbHRoIGNhcHRpb25fc2NvcmUgY2FwdGlvbl9saXZlcyBjYXB0aW9uX2hlYWx0aCAnICtcbiAgICAgICdldmVudF90eXBlIGV2ZW50X251bWJlciBldmVudF9vYmplY3QgZXZlbnRfYWN0aW9uICcgK1xuICAgICAgJ2FwcGxpY2F0aW9uX3N1cmZhY2UgZ2FtZW1ha2VyX3BybyBnYW1lbWFrZXJfcmVnaXN0ZXJlZCAnICtcbiAgICAgICdnYW1lbWFrZXJfdmVyc2lvbiBlcnJvcl9vY2N1cnJlZCBlcnJvcl9sYXN0IGRlYnVnX21vZGUgJyArXG4gICAgICAna2V5Ym9hcmRfa2V5IGtleWJvYXJkX2xhc3RrZXkga2V5Ym9hcmRfbGFzdGNoYXIga2V5Ym9hcmRfc3RyaW5nICcgK1xuICAgICAgJ21vdXNlX3ggbW91c2VfeSBtb3VzZV9idXR0b24gbW91c2VfbGFzdGJ1dHRvbiBjdXJzb3Jfc3ByaXRlICcgK1xuICAgICAgJ3Zpc2libGUgc3ByaXRlX2luZGV4IHNwcml0ZV93aWR0aCBzcHJpdGVfaGVpZ2h0IHNwcml0ZV94b2Zmc2V0ICcgK1xuICAgICAgJ3Nwcml0ZV95b2Zmc2V0IGltYWdlX251bWJlciBpbWFnZV9pbmRleCBpbWFnZV9zcGVlZCBkZXB0aCAnICtcbiAgICAgICdpbWFnZV94c2NhbGUgaW1hZ2VfeXNjYWxlIGltYWdlX2FuZ2xlIGltYWdlX2FscGhhIGltYWdlX2JsZW5kICcgK1xuICAgICAgJ2Jib3hfbGVmdCBiYm94X3JpZ2h0IGJib3hfdG9wIGJib3hfYm90dG9tIGxheWVyIGJhY2tncm91bmRfY29sb3VyICAnICtcbiAgICAgICdiYWNrZ3JvdW5kX3Nob3djb2xvdXIgYmFja2dyb3VuZF9jb2xvciBiYWNrZ3JvdW5kX3Nob3djb2xvciAnICtcbiAgICAgICd2aWV3X2VuYWJsZWQgdmlld19jdXJyZW50IHZpZXdfdmlzaWJsZSB2aWV3X3h2aWV3IHZpZXdfeXZpZXcgJyArXG4gICAgICAndmlld193dmlldyB2aWV3X2h2aWV3IHZpZXdfeHBvcnQgdmlld195cG9ydCB2aWV3X3dwb3J0IHZpZXdfaHBvcnQgJyArXG4gICAgICAndmlld19hbmdsZSB2aWV3X2hib3JkZXIgdmlld192Ym9yZGVyIHZpZXdfaHNwZWVkIHZpZXdfdnNwZWVkICcgK1xuICAgICAgJ3ZpZXdfb2JqZWN0IHZpZXdfc3VyZmFjZV9pZCB2aWV3X2NhbWVyYSBnYW1lX2lkIGdhbWVfZGlzcGxheV9uYW1lICcgK1xuICAgICAgJ2dhbWVfcHJvamVjdF9uYW1lIGdhbWVfc2F2ZV9pZCB3b3JraW5nX2RpcmVjdG9yeSB0ZW1wX2RpcmVjdG9yeSAnICtcbiAgICAgICdwcm9ncmFtX2RpcmVjdG9yeSBicm93c2VyX3dpZHRoIGJyb3dzZXJfaGVpZ2h0IG9zX3R5cGUgb3NfZGV2aWNlICcgK1xuICAgICAgJ29zX2Jyb3dzZXIgb3NfdmVyc2lvbiBkaXNwbGF5X2FhIGFzeW5jX2xvYWQgZGVsdGFfdGltZSAnICtcbiAgICAgICd3ZWJnbF9lbmFibGVkIGV2ZW50X2RhdGEgaWFwX2RhdGEgcGh5X3JvdGF0aW9uIHBoeV9wb3NpdGlvbl94ICcgK1xuICAgICAgJ3BoeV9wb3NpdGlvbl95IHBoeV9hbmd1bGFyX3ZlbG9jaXR5IHBoeV9saW5lYXJfdmVsb2NpdHlfeCAnICtcbiAgICAgICdwaHlfbGluZWFyX3ZlbG9jaXR5X3kgcGh5X3NwZWVkX3ggcGh5X3NwZWVkX3kgcGh5X3NwZWVkICcgK1xuICAgICAgJ3BoeV9hbmd1bGFyX2RhbXBpbmcgcGh5X2xpbmVhcl9kYW1waW5nIHBoeV9idWxsZXQgJyArXG4gICAgICAncGh5X2ZpeGVkX3JvdGF0aW9uIHBoeV9hY3RpdmUgcGh5X21hc3MgcGh5X2luZXJ0aWEgcGh5X2NvbV94ICcgK1xuICAgICAgJ3BoeV9jb21feSBwaHlfZHluYW1pYyBwaHlfa2luZW1hdGljIHBoeV9zbGVlcGluZyAnICtcbiAgICAgICdwaHlfY29sbGlzaW9uX3BvaW50cyBwaHlfY29sbGlzaW9uX3ggcGh5X2NvbGxpc2lvbl95ICcgK1xuICAgICAgJ3BoeV9jb2xfbm9ybWFsX3ggcGh5X2NvbF9ub3JtYWxfeSBwaHlfcG9zaXRpb25feHByZXZpb3VzICcgK1xuICAgICAgJ3BoeV9wb3NpdGlvbl95cHJldmlvdXMnXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dtbCcsICdHTUwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSwgLy8gbGFuZ3VhZ2UgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIGtleXdvcmRzOiBHTUxfS0VZV09SRFMsXG5cbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgR09fS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggJyArXG4gICAgICAnY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgJyArXG4gICAgICAnYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCAnICtcbiAgICAgICd1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUnLFxuICAgIGxpdGVyYWw6XG4gICAgICAgJ3RydWUgZmFsc2UgaW90YSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2FwcGVuZCBjYXAgY2xvc2UgY29tcGxleCBjb3B5IGltYWcgbGVuIG1ha2UgbmV3IHBhbmljIHByaW50IHByaW50bG4gcmVhbCByZWNvdmVyIGRlbGV0ZSdcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2dvbGFuZyddLFxuICAgIGtleXdvcmRzOiBHT19LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAnPC8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAge2JlZ2luOiAnXFwnJywgZW5kOiAnW15cXFxcXFxcXF1cXCcnfSxcbiAgICAgICAgICB7YmVnaW46ICdgJywgZW5kOiAnYCd9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogaGxqcy5DX05VTUJFUl9SRSArICdbaV0nLCByZWxldmFuY2U6IDF9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzo9LyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuYycsIGVuZDogJ1xcXFxzKihcXFxce3wkKScsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogR09fS0VZV09SRFMsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvW1wiJ10vXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5d29yZHM6IHtcbiAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAncHJpbnRsbiByZWFkbG4gcHJpbnQgaW1wb3J0IG1vZHVsZSBmdW5jdGlvbiBsb2NhbCByZXR1cm4gbGV0IHZhciAnICtcbiAgICAgICAgICAnd2hpbGUgZm9yIGZvcmVhY2ggdGltZXMgaW4gY2FzZSB3aGVuIG1hdGNoIHdpdGggYnJlYWsgY29udGludWUgJyArXG4gICAgICAgICAgJ2F1Z21lbnQgYXVnbWVudGF0aW9uIGVhY2ggZmluZCBmaWx0ZXIgcmVkdWNlICcgK1xuICAgICAgICAgICdpZiB0aGVuIGVsc2Ugb3RoZXJ3aXNlIHRyeSBjYXRjaCBmaW5hbGx5IHJhaXNlIHRocm93IG9ySWZOdWxsICcgK1xuICAgICAgICAgICdEeW5hbWljT2JqZWN0fDEwIER5bmFtaWNWYXJpYWJsZSBzdHJ1Y3QgT2JzZXJ2YWJsZSBtYXAgc2V0IHZlY3RvciBsaXN0IGFycmF5JyxcbiAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAndHJ1ZSBmYWxzZSBudWxsJ1xuICAgICAgfSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICd0YXNrIHByb2plY3QgYWxscHJvamVjdHMgc3VicHJvamVjdHMgYXJ0aWZhY3RzIGJ1aWxkc2NyaXB0IGNvbmZpZ3VyYXRpb25zICcgK1xuICAgICAgICAnZGVwZW5kZW5jaWVzIHJlcG9zaXRvcmllcyBzb3VyY2VTZXRzIGRlc2NyaXB0aW9uIGRlbGV0ZSBmcm9tIGludG8gaW5jbHVkZSAnICtcbiAgICAgICAgJ2V4Y2x1ZGUgc291cmNlIGNsYXNzcGF0aCBkZXN0aW5hdGlvbkRpciBpbmNsdWRlcyBvcHRpb25zIHNvdXJjZUNvbXBhdGliaWxpdHkgJyArXG4gICAgICAgICd0YXJnZXRDb21wYXRpYmlsaXR5IGdyb3VwIGZsYXREaXIgZG9MYXN0IGRvRmlyc3QgZmxhdHRlbiB0b2RpciBmcm9tZGlyIGFudCAnICtcbiAgICAgICAgJ2RlZiBhYnN0cmFjdCBicmVhayBjYXNlIGNhdGNoIGNvbnRpbnVlIGRlZmF1bHQgZG8gZWxzZSBleHRlbmRzIGZpbmFsIGZpbmFsbHkgJyArXG4gICAgICAgICdmb3IgaWYgaW1wbGVtZW50cyBpbnN0YW5jZW9mIG5hdGl2ZSBuZXcgcHJpdmF0ZSBwcm90ZWN0ZWQgcHVibGljIHJldHVybiBzdGF0aWMgJyArXG4gICAgICAgICdzd2l0Y2ggc3luY2hyb25pemVkIHRocm93IHRocm93cyB0cmFuc2llbnQgdHJ5IHZvbGF0aWxlIHdoaWxlIHN0cmljdGZwIHBhY2thZ2UgJyArXG4gICAgICAgICdpbXBvcnQgZmFsc2UgbnVsbCBzdXBlciB0aGlzIHRydWUgYW50bHJ0YXNrIGNoZWNrc3R5bGUgY29kZW5hcmMgY29weSBib29sZWFuICcgK1xuICAgICAgICAnYnl0ZSBjaGFyIGNsYXNzIGRvdWJsZSBmbG9hdCBpbnQgaW50ZXJmYWNlIGxvbmcgc2hvcnQgdm9pZCBjb21waWxlIHJ1blRpbWUgJyArXG4gICAgICAgICdmaWxlIGZpbGVUcmVlIGFicyBhbnkgYXBwZW5kIGFzTGlzdCBhc1dyaXRhYmxlIGNhbGwgY29sbGVjdCBjb21wYXJlVG8gY291bnQgJyArXG4gICAgICAgICdkaXYgZHVtcCBlYWNoIGVhY2hCeXRlIGVhY2hGaWxlIGVhY2hMaW5lIGV2ZXJ5IGZpbmQgZmluZEFsbCBmbGF0dGVuIGdldEF0ICcgK1xuICAgICAgICAnZ2V0RXJyIGdldEluIGdldE91dCBnZXRUZXh0IGdyZXAgaW1tdXRhYmxlIGluamVjdCBpbnNwZWN0IGludGVyc2VjdCBpbnZva2VNZXRob2RzICcgK1xuICAgICAgICAnaXNDYXNlIGpvaW4gbGVmdFNoaWZ0IG1pbnVzIG11bHRpcGx5IG5ld0lucHV0U3RyZWFtIG5ld091dHB1dFN0cmVhbSBuZXdQcmludFdyaXRlciAnICtcbiAgICAgICAgJ25ld1JlYWRlciBuZXdXcml0ZXIgbmV4dCBwbHVzIHBvcCBwb3dlciBwcmV2aW91cyBwcmludCBwcmludGxuIHB1c2ggcHV0QXQgcmVhZCAnICtcbiAgICAgICAgJ3JlYWRCeXRlcyByZWFkTGluZXMgcmV2ZXJzZSByZXZlcnNlRWFjaCByb3VuZCBzaXplIHNvcnQgc3BsaXRFYWNoTGluZSBzdGVwIHN1Yk1hcCAnICtcbiAgICAgICAgJ3RpbWVzIHRvSW50ZWdlciB0b0xpc3QgdG9rZW5pemUgdXB0byB3YWl0Rm9yT3JLaWxsIHdpdGhQcmludFdyaXRlciB3aXRoUmVhZGVyICcgK1xuICAgICAgICAnd2l0aFN0cmVhbSB3aXRoV3JpdGVyIHdpdGhXcml0ZXJBcHBlbmQgd3JpdGUgd3JpdGVMaW5lJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuUkVHRVhQX01PREVcblxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgbGl0ZXJhbCA6ICd0cnVlIGZhbHNlIG51bGwnLFxuICAgICAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAgICdieXRlIHNob3J0IGNoYXIgaW50IGxvbmcgYm9vbGVhbiBmbG9hdCBkb3VibGUgdm9pZCAnICtcbiAgICAgICAgICAgIC8vIGdyb292eSBzcGVjaWZpYyBrZXl3b3Jkc1xuICAgICAgICAgICAgJ2RlZiBhcyBpbiBhc3NlcnQgdHJhaXQgJyArXG4gICAgICAgICAgICAvLyBjb21tb24ga2V5d29yZHMgd2l0aCBKYXZhXG4gICAgICAgICAgICAnc3VwZXIgdGhpcyBhYnN0cmFjdCBzdGF0aWMgdm9sYXRpbGUgdHJhbnNpZW50IHB1YmxpYyBwcml2YXRlIHByb3RlY3RlZCBzeW5jaHJvbml6ZWQgZmluYWwgJyArXG4gICAgICAgICAgICAnY2xhc3MgaW50ZXJmYWNlIGVudW0gaWYgZWxzZSBmb3Igd2hpbGUgc3dpdGNoIGNhc2UgYnJlYWsgZGVmYXVsdCBjb250aW51ZSAnICtcbiAgICAgICAgICAgICd0aHJvdyB0aHJvd3MgdHJ5IGNhdGNoIGZpbmFsbHkgaW1wbGVtZW50cyBleHRlbmRzIG5ldyBpbXBvcnQgcGFja2FnZSByZXR1cm4gaW5zdGFuY2VvZidcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAgICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2UgOiAwLFxuICAgICAgICAgICAgICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhdCB1cCBAJ3MgaW4gZW1haWxzIHRvIHByZXZlbnQgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGRvY3RhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXHcrQC8sIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBcIicnJ1wiLCBlbmQ6IFwiJycnXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogXCJcXFxcJC9cIiwgZW5kOiBcIi9cXFxcJFwiLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL34/XFwvW15cXC9cXG5dK1xcLy8sXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgICAgYmVnaW46IFwiXiMhL3Vzci9iaW4vZW52XCIsIGVuZDogJyQnLFxuICAgICAgICAgICAgICAgIGlsbGVnYWw6ICdcXG4nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5CSU5BUllfTlVNQkVSX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UgdHJhaXQgZW51bScsIGVuZDogJ3snLFxuICAgICAgICAgICAgICAgIGlsbGVnYWw6ICc6JyxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgICAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gaGlnaGxpZ2h0IG1hcCBrZXlzIGFuZCBuYW1lZCBwYXJhbWV0ZXJzIGFzIHN0cmluZ3NcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCBiZWdpbjogL1teXFw/XXswfVtBLVphLXowLTlfJF0rICo6L1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBjYXRjaCBtaWRkbGUgZWxlbWVudCBvZiB0aGUgdGVybmFyeSBvcGVyYXRvclxuICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGhpZ2hsaWdodCBpdCBhcyBhIGxhYmVsLCBuYW1lZCBwYXJhbWV0ZXIsIG9yIG1hcCBrZXlcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcPy8sIGVuZDogL1xcOi9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gaGlnaGxpZ2h0IGxhYmVsZWQgc3RhdGVtZW50c1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsIGJlZ2luOiAnXlxcXFxzKltBLVphLXowLTlfJF0rOicsXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC8jfDxcXC8vXG4gICAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IC8vIFRPRE8gc3VwcG9ydCBmaWx0ZXIgdGFncyBsaWtlIDpqYXZhc2NyaXB0LCBzdXBwb3J0IGlubGluZSBIVE1MXG5mdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeISEhKCAoNXwxXFxcXC4xfFN0cmljdHxGcmFtZXNldHxCYXNpY3xNb2JpbGV8UkRGYXxYTUxcXFxcYi4qKSk/JCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvLyBGSVhNRSB0aGVzZSBjb21tZW50cyBzaG91bGQgYmUgYWxsb3dlZCB0byBzcGFuIGluZGVudGVkIGxpbmVzXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdeXFxcXHMqKCE9I3w9I3wtI3wvKS4qJCcsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKigtfD18IT0pKD8hIyknLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXFxcbicsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0YWcnLFxuICAgICAgICBiZWdpbjogJ15cXFxccyolJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCcsXG4gICAgICAgICAgICBiZWdpbjogJyNbXFxcXHctXSsnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwuW1xcXFx3LV0rJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICd7XFxcXHMqJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKn0nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnOlxcXFx3K1xcXFxzKj0+JyxcbiAgICAgICAgICAgICAgICBlbmQ6ICcsXFxcXHMrJyxcbiAgICAgICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICc6XFxcXHcrJ1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoXFxcXHMqJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxzKlxcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdytcXFxccyo9JyxcbiAgICAgICAgICAgICAgICBlbmQ6ICdcXFxccysnLFxuICAgICAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3KycsXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJyxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxccypbPX5dXFxcXHMqJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcjeycsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJ30nLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieSdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICB2YXIgQlVJTFRfSU5TID0geydidWlsdGluLW5hbWUnOiAnZWFjaCBpbiB3aXRoIGlmIGVsc2UgdW5sZXNzIGJpbmRhdHRyIGFjdGlvbiBjb2xsZWN0aW9uIGRlYnVnZ2VyIGxvZyBvdXRsZXQgdGVtcGxhdGUgdW5ib3VuZCB2aWV3IHlpZWxkIGxvb2t1cCd9O1xuXG4gIHZhciBJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCA9IHtcbiAgICBiZWdpbjogL1wiLio/XCJ8Jy4qPyd8XFxbLio/XFxdfFxcdysvXG4gIH07XG5cbiAgdmFyIEVYUFJFU1NJT05fT1JfSEVMUEVSX0NBTEwgPSBobGpzLmluaGVyaXQoSURFTlRJRklFUl9QTEFJTl9PUl9RVU9URUQsIHtcbiAgICBrZXl3b3JkczogQlVJTFRfSU5TLFxuICAgIHN0YXJ0czoge1xuICAgICAgLy8gaGVscGVyIHBhcmFtc1xuICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW2hsanMuaW5oZXJpdChJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCwge3JlbGV2YW5jZTogMH0pXVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIEJMT0NLX01VU1RBQ0hFX0NPTlRFTlRTID0gaGxqcy5pbmhlcml0KEVYUFJFU1NJT05fT1JfSEVMUEVSX0NBTEwsIHtcbiAgICBjbGFzc05hbWU6ICduYW1lJ1xuICB9KTtcblxuICB2YXIgQkFTSUNfTVVTVEFDSEVfQ09OVEVOVFMgPSBobGpzLmluaGVyaXQoRVhQUkVTU0lPTl9PUl9IRUxQRVJfQ0FMTCwge1xuICAgIC8vIHJlbGV2YW5jZSAwIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGNvbmNlcm5pbmcgYXV0by1kZXRlY3Rpb25cbiAgICByZWxldmFuY2U6IDBcbiAgfSk7XG5cbiAgdmFyIEVTQ0FQRV9NVVNUQUNIRV9XSVRIX1BSRUNFRURJTkdfQkFDS1NMQVNIID0ge2JlZ2luOiAvXFxcXFxce1xcey8sIHNraXA6IHRydWV9O1xuICB2YXIgUFJFVkVOVF9FU0NBUEVfV0lUSF9BTk9USEVSX1BSRUNFRURJTkdfQkFDS1NMQVNIID0ge2JlZ2luOiAvXFxcXFxcXFwoPz1cXHtcXHspLywgc2tpcDogdHJ1ZX07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ2hicycsICdodG1sLmhicycsICdodG1sLmhhbmRsZWJhcnMnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAgRVNDQVBFX01VU1RBQ0hFX1dJVEhfUFJFQ0VFRElOR19CQUNLU0xBU0gsXG4gICAgICBQUkVWRU5UX0VTQ0FQRV9XSVRIX0FOT1RIRVJfUFJFQ0VFRElOR19CQUNLU0xBU0gsXG4gICAgICBobGpzLkNPTU1FTlQoL1xce1xceyEtLS8sIC8tLVxcfVxcfS8pLFxuICAgICAgaGxqcy5DT01NRU5UKC9cXHtcXHshLywgL1xcfVxcfS8pLFxuICAgICAge1xuICAgICAgICAvLyBvcGVuIHJhdyBibG9jayBcInt7e3tyYXd9fX19IGNvbnRlbnQgbm90IGV2YWx1YXRlZCB7e3t7L3Jhd319fX1cIlxuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS10YWcnLFxuICAgICAgICBiZWdpbjogL1xce1xce1xce1xceyg/IVxcLykvLCBlbmQ6IC9cXH1cXH1cXH1cXH0vLFxuICAgICAgICBjb250YWluczogW0JMT0NLX01VU1RBQ0hFX0NPTlRFTlRTXSxcbiAgICAgICAgc3RhcnRzOiB7ZW5kOiAvXFx7XFx7XFx7XFx7XFwvLywgcmV0dXJuRW5kOiB0cnVlLCBzdWJMYW5ndWFnZTogJ3htbCd9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBjbG9zZSByYXcgYmxvY2tcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtcXHtcXHtcXC8vLCBlbmQ6IC9cXH1cXH1cXH1cXH0vLFxuICAgICAgICBjb250YWluczogW0JMT0NLX01VU1RBQ0hFX0NPTlRFTlRTXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gb3BlbiBibG9jayBzdGF0ZW1lbnRcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtbI1xcL10vLCBlbmQ6IC9cXH1cXH0vLFxuICAgICAgICBjb250YWluczogW0JMT0NLX01VU1RBQ0hFX0NPTlRFTlRTXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRlbXBsYXRlIHZhcmlhYmxlIG9yIGhlbHBlci1jYWxsIHRoYXQgaXMgTk9UIGh0bWwtZXNjYXBlZFxuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7XFx7LywgZW5kOiAvXFx9XFx9XFx9LyxcbiAgICAgICAga2V5d29yZHM6IEJVSUxUX0lOUyxcbiAgICAgICAgY29udGFpbnM6IFtCQVNJQ19NVVNUQUNIRV9DT05URU5UU11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRlbXBsYXRlIHZhcmlhYmxlIG9yIGhlbHBlci1jYWxsIHRoYXQgaXMgaHRtbC1lc2NhcGVkXG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHsvLCBlbmQ6IC9cXH1cXH0vLFxuICAgICAgICBrZXl3b3JkczogQlVJTFRfSU5TLFxuICAgICAgICBjb250YWluczogW0JBU0lDX01VU1RBQ0hFX0NPTlRFTlRTXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ3stJyxcbiAgICAgICAgJy19JyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXVxuICB9O1xuXG4gIHZhciBQUkFHTUEgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICd7LSMnLCBlbmQ6ICcjLX0nXG4gIH07XG5cbiAgdmFyIFBSRVBST0NFU1NPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jJywgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgQ09OU1RSVUNUT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLCAvLyBUT0RPOiBvdGhlciBjb25zdHJ1Y3RvcnMgKGJ1aWxkLWluLCBpbmZpeCkuXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIExJU1QgPSB7XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBpbGxlZ2FsOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQUkFHTUEsXG4gICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICB7Y2xhc3NOYW1lOiAndHlwZScsIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd10qKFxcXFwoKFxcXFwuXFxcXC58LHxcXFxcdyspXFxcXCkpPyd9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnW19hLXpdW1xcXFx3XFwnXSonfSksXG4gICAgICBDT01NRU5UXG4gICAgXVxuICB9O1xuXG4gIHZhciBSRUNPUkQgPSB7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsXG4gICAgY29udGFpbnM6IExJU1QuY29udGFpbnNcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHMnXSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdsZXQgaW4gaWYgdGhlbiBlbHNlIGNhc2Ugb2Ygd2hlcmUgZG8gbW9kdWxlIGltcG9ydCBoaWRpbmcgJyArXG4gICAgICAncXVhbGlmaWVkIHR5cGUgZGF0YSBuZXd0eXBlIGRlcml2aW5nIGNsYXNzIGluc3RhbmNlIGFzIGRlZmF1bHQgJyArXG4gICAgICAnaW5maXggaW5maXhsIGluZml4ciBmb3JlaWduIGV4cG9ydCBjY2FsbCBzdGRjYWxsIGNwbHVzcGx1cyAnICtcbiAgICAgICdqdm0gZG90bmV0IHNhZmUgdW5zYWZlIGZhbWlseSBmb3JhbGwgbWRvIHByb2MgcmVjJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBUb3AtbGV2ZWwgY29uc3RydWN0aW9ucy5cblxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbW9kdWxlJywgZW5kOiAnd2hlcmUnLFxuICAgICAgICBrZXl3b3JkczogJ21vZHVsZSB3aGVyZScsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiaW1wb3J0XFxcXGInLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6ICdpbXBvcnQgcXVhbGlmaWVkIGFzIGhpZGluZycsXG4gICAgICAgIGNvbnRhaW5zOiBbTElTVCwgQ09NTUVOVF0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcV1xcXFwufDsnXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICdeKFxcXFxzKik/KGNsYXNzfGluc3RhbmNlKVxcXFxiJywgZW5kOiAnd2hlcmUnLFxuICAgICAgICBrZXl3b3JkczogJ2NsYXNzIGZhbWlseSBpbnN0YW5jZSB3aGVyZScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09OU1RSVUNUT1IsIExJU1QsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoZGF0YXwobmV3KT90eXBlKVxcXFxiJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnZGF0YSBmYW1pbHkgdHlwZSBuZXd0eXBlIGRlcml2aW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtQUkFHTUEsIENPTlNUUlVDVE9SLCBMSVNULCBSRUNPUkQsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZGVmYXVsdCcsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW0NPTlNUUlVDVE9SLCBMSVNULCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luZml4IGluZml4bCBpbmZpeHInLCBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkNfTlVNQkVSX01PREUsIENPTU1FTlRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiZm9yZWlnblxcXFxiJywgZW5kOiAnJCcsXG4gICAgICAgIGtleXdvcmRzOiAnZm9yZWlnbiBpbXBvcnQgZXhwb3J0IGNjYWxsIHN0ZGNhbGwgY3BsdXNwbHVzIGp2bSAnICtcbiAgICAgICAgICAgICAgICAgICdkb3RuZXQgc2FmZSB1bnNhZmUnLFxuICAgICAgICBjb250YWluczogW0NPTlNUUlVDVE9SLCBobGpzLlFVT1RFX1NUUklOR19NT0RFLCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIyFcXFxcL3VzclxcXFwvYmluXFxcXC9lbnZcXCBydW5oYXNrZWxsJywgZW5kOiAnJCdcbiAgICAgIH0sXG5cbiAgICAgIC8vIFwiV2hpdGVzcGFjZXNcIi5cblxuICAgICAgUFJBR01BLFxuICAgICAgUFJFUFJPQ0VTU09SLFxuXG4gICAgICAvLyBMaXRlcmFscyBhbmQgbmFtZXMuXG5cbiAgICAgIC8vIFRPRE86IGNoYXJhY3RlcnMuXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgQ09OU1RSVUNUT1IsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46ICdeW19hLXpdW1xcXFx3XFwnXSonfSksXG5cbiAgICAgIENPTU1FTlQsXG5cbiAgICAgIHtiZWdpbjogJy0+fDwtJ30gLy8gTm8gbWFya3VwLCByZWxldmFuY2UgYm9vc3RlclxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aXyRdW2EtekEtWjAtOV8kXSonO1xuICB2YXIgSURFTlRfRlVOQ19SRVRVUk5fVFlQRV9SRSA9ICcoWypdfFthLXpBLVpfJF1bYS16QS1aMC05XyRdKiknO1xuXG4gIHZhciBIQVhFX0JBU0lDX1RZUEVTID0gJ0ludCBGbG9hdCBTdHJpbmcgQm9vbCBEeW5hbWljIFZvaWQgQXJyYXkgJztcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHgnXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2JyZWFrIGNhc2UgY2FzdCBjYXRjaCBjb250aW51ZSBkZWZhdWx0IGRvIGR5bmFtaWMgZWxzZSBlbnVtIGV4dGVybiAnICtcbiAgICAgICAgICAgICAgICdmb3IgZnVuY3Rpb24gaGVyZSBpZiBpbXBvcnQgaW4gaW5saW5lIG5ldmVyIG5ldyBvdmVycmlkZSBwYWNrYWdlIHByaXZhdGUgZ2V0IHNldCAnICtcbiAgICAgICAgICAgICAgICdwdWJsaWMgcmV0dXJuIHN0YXRpYyBzdXBlciBzd2l0Y2ggdGhpcyB0aHJvdyB0cmFjZSB0cnkgdHlwZWRlZiB1bnR5cGVkIHVzaW5nIHZhciB3aGlsZSAnICtcbiAgICAgICAgICAgICAgIEhBWEVfQkFTSUNfVFlQRVMsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJ3RyYWNlIHRoaXMnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCBfJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgY2xhc3NOYW1lOiAnc3RyaW5nJywgLy8gaW50ZXJwb2xhdGUtYWJsZSBzdHJpbmdzXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdzdWJzdCcsIC8vIGludGVycG9sYXRpb25cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdzdWJzdCcsIC8vIGludGVycG9sYXRpb25cbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCQnLCBlbmQ6ICdcXFxcV30nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7IGNsYXNzTmFtZTogJ21ldGEnLCAvLyBjb21waWxlciBtZXRhXG4gICAgICAgIGJlZ2luOiAnQDonLCBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnbWV0YScsIC8vIGNvbXBpbGVyIGNvbmRpdGlvbmFsc1xuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2lmIGVsc2UgZWxzZWlmIGVuZCBlcnJvcid9XG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICd0eXBlJywgLy8gZnVuY3Rpb24gdHlwZXNcbiAgICAgICAgYmVnaW46ICc6WyBcXHRdKicsIGVuZDogJ1teQS1aYS16MC05XyBcXHRcXFxcLT5dJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyB0eXBlc1xuICAgICAgICBiZWdpbjogJzpbIFxcdF0qJywgZW5kOiAnXFxcXFcnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLCAvLyBpbnN0YW50aWF0aW9uXG4gICAgICAgIGJlZ2luOiAnbmV3IConLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnY2xhc3MnLCAvLyBlbnVtc1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZW51bScsIGVuZDogJ1xcXFx7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlRJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgY2xhc3NOYW1lOiAnY2xhc3MnLCAvLyBhYnN0cmFjdHNcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Fic3RyYWN0JywgZW5kOiAnW1xcXFx7JF0nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46ICdmcm9tICsnLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogJ3RvICsnLCBlbmQ6ICdcXFxcVycsXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGtleXdvcmQ6ICdhYnN0cmFjdCBmcm9tIHRvJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBjbGFzc05hbWU6ICdjbGFzcycsIC8vIGNsYXNzZXNcbiAgICAgICAgYmVnaW46ICdcXFxcYihjbGFzc3xpbnRlcmZhY2UpICsnLCBlbmQ6ICdbXFxcXHskXScsICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoZXh0ZW5kc3xpbXBsZW1lbnRzKSArJyxcbiAgICAgICAgICAgIGtleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnXFxcXCgnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXFMnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvPFxcLy9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvW1xcd1xcLl9dKy8sXG4gICAga2V5d29yZHM6ICdnb3RvIGdvc3ViIHJldHVybiBicmVhayByZXBlYXQgbG9vcCBjb250aW51ZSB3YWl0IGF3YWl0IGRpbSBzZGltIGZvcmVhY2ggZGltdHlwZSBkdXAgZHVwcHRyIGVuZCBzdG9wIG5ld21vZCBkZWxtb2QgbXJlZiBydW4gZXhnb3RvIG9uIG1jYWxsIGFzc2VydCBsb2dtZXMgbmV3bGFiIHJlc3VtZSB5aWVsZCBvbmV4aXQgb25lcnJvciBvbmtleSBvbmNsaWNrIG9uY21kIGV4aXN0IGRlbGV0ZSBta2RpciBjaGRpciBkaXJsaXN0IGJsb2FkIGJzYXZlIGJjb3B5IG1lbWZpbGUgaWYgZWxzZSBwb2tlIHdwb2tlIGxwb2tlIGdldHN0ciBjaGRwbSBtZW1leHBhbmQgbWVtY3B5IG1lbXNldCBub3Rlc2VsIG5vdGVhZGQgbm90ZWRlbCBub3RlbG9hZCBub3Rlc2F2ZSByYW5kb21pemUgbm90ZXVuc2VsIG5vdGVnZXQgc3BsaXQgc3RycmVwIHNldGVhc2UgYnV0dG9uIGNoZ2Rpc3AgZXhlYyBkaWFsb2cgbW1sb2FkIG1tcGxheSBtbXN0b3AgbWNpIHBzZXQgcGdldCBzeXNjb2xvciBtZXMgcHJpbnQgdGl0bGUgcG9zIGNpcmNsZSBjbHMgZm9udCBzeXNmb250IG9ianNpemUgcGljbG9hZCBjb2xvciBwYWxjb2xvciBwYWxldHRlIHJlZHJhdyB3aWR0aCBnc2VsIGdjb3B5IGd6b29tIGdtb2RlIGJtcHNhdmUgaHN2Y29sb3IgZ2V0a2V5IGxpc3Rib3ggY2hrYm94IGNvbWJveCBpbnB1dCBtZXNib3ggYnVmZmVyIHNjcmVlbiBiZ3NjciBtb3VzZSBvYmpzZWwgZ3JvbGwgbGluZSBjbHJvYmogYm94ZiBvYmpwcm0gb2JqbW9kZSBzdGljayBncmVjdCBncm90YXRlIGdzcXVhcmUgZ3JhZGYgb2JqaW1hZ2Ugb2Jqc2tpcCBvYmplbmFibGUgY2VsbG9hZCBjZWxkaXYgY2VscHV0IG5ld2NvbSBxdWVyeWNvbSBkZWxjb20gY252c3RvdyBjb21yZXMgYXhvYmogd2lub2JqIHNlbmRtc2cgY29tZXZlbnQgY29tZXZhcmcgc2FycmF5Y29udiBjYWxsZnVuYyBjbnZ3dG9zIGNvbWV2ZGlzcCBsaWJwdHIgc3lzdGVtIGhzcHN0YXQgaHNwdmVyIHN0YXQgY250IGVyciBzdHJzaXplIGxvb3BsZXYgc3VibGV2IGlwYXJhbSB3cGFyYW0gbHBhcmFtIHJlZnN0ciByZWZkdmFsIGludCBybmQgc3RybGVuIGxlbmd0aCBsZW5ndGgyIGxlbmd0aDMgbGVuZ3RoNCB2YXJ0eXBlIGdldHRpbWUgcGVlayB3cGVlayBscGVlayB2YXJwdHIgdmFydXNlIG5vdGVpbmZvIGluc3RyIGFicyBsaW1pdCBnZXRlYXNlIHN0ciBzdHJtaWQgc3RyZiBnZXRwYXRoIHN0cnRyaW0gc2luIGNvcyB0YW4gYXRhbiBzcXJ0IGRvdWJsZSBhYnNmIGV4cGYgbG9nZiBsaW1pdGYgcG93ZiBnZXRlYXNlZiBtb3VzZXggbW91c2V5IG1vdXNldyBod25kIGhpbnN0YW5jZSBoZGMgZ2luZm8gb2JqaW5mbyBkaXJpbmZvIHN5c2luZm8gdGhpc21vZCBfX2hzcHZlcl9fIF9faHNwMzBfXyBfX2RhdGVfXyBfX3RpbWVfXyBfX2xpbmVfXyBfX2ZpbGVfXyBfZGVidWcgX19oc3BkZWZfXyBhbmQgb3IgeG9yIG5vdCBzY3JlZW5fbm9ybWFsIHNjcmVlbl9wYWxldHRlIHNjcmVlbl9oaWRlIHNjcmVlbl9maXhlZHNpemUgc2NyZWVuX3Rvb2wgc2NyZWVuX2ZyYW1lIGdtb2RlX2dkaSBnbW9kZV9tZW0gZ21vZGVfcmdiMCBnbW9kZV9hbHBoYSBnbW9kZV9yZ2IwYWxwaGEgZ21vZGVfYWRkIGdtb2RlX3N1YiBnbW9kZV9waXhlbGEgZ2luZm9fbXggZ2luZm9fbXkgZ2luZm9fYWN0IGdpbmZvX3NlbCBnaW5mb193eDEgZ2luZm9fd3kxIGdpbmZvX3d4MiBnaW5mb193eTIgZ2luZm9fdnggZ2luZm9fdnkgZ2luZm9fc2l6ZXggZ2luZm9fc2l6ZXkgZ2luZm9fd2lueCBnaW5mb193aW55IGdpbmZvX21lc3ggZ2luZm9fbWVzeSBnaW5mb19yIGdpbmZvX2cgZ2luZm9fYiBnaW5mb19wYWx1c2UgZ2luZm9fZGlzcHggZ2luZm9fZGlzcHkgZ2luZm9fY3ggZ2luZm9fY3kgZ2luZm9faW50aWQgZ2luZm9fbmV3aWQgZ2luZm9fc3ggZ2luZm9fc3kgb2JqaW5mb19tb2RlIG9iamluZm9fYm1zY3Igb2JqaW5mb19od25kIG5vdGVtYXggbm90ZXNpemUgZGlyX2N1ciBkaXJfZXhlIGRpcl93aW4gZGlyX3N5cyBkaXJfY21kbGluZSBkaXJfZGVza3RvcCBkaXJfbXlkb2MgZGlyX3R2IGZvbnRfbm9ybWFsIGZvbnRfYm9sZCBmb250X2l0YWxpYyBmb250X3VuZGVybGluZSBmb250X3N0cmlrZW91dCBmb250X2FudGlhbGlhcyBvYmptb2RlX25vcm1hbCBvYmptb2RlX2d1aWZvbnQgb2JqbW9kZV91c2Vmb250IGdzcXVhcmVfZ3JhZCBtc2dvdGhpYyBtc21pbmNobyBkbyB1bnRpbCB3aGlsZSB3ZW5kIGZvciBuZXh0IF9icmVhayBfY29udGludWUgc3dpdGNoIGNhc2UgZGVmYXVsdCBzd2JyZWFrIHN3ZW5kIGRkaW0gbGRpbSBhbGxvYyBtX3BpIHJhZDJkZWcgZGVnMnJhZCBlYXNlX2xpbmVhciBlYXNlX3F1YWRfaW4gZWFzZV9xdWFkX291dCBlYXNlX3F1YWRfaW5vdXQgZWFzZV9jdWJpY19pbiBlYXNlX2N1YmljX291dCBlYXNlX2N1YmljX2lub3V0IGVhc2VfcXVhcnRpY19pbiBlYXNlX3F1YXJ0aWNfb3V0IGVhc2VfcXVhcnRpY19pbm91dCBlYXNlX2JvdW5jZV9pbiBlYXNlX2JvdW5jZV9vdXQgZWFzZV9ib3VuY2VfaW5vdXQgZWFzZV9zaGFrZV9pbiBlYXNlX3NoYWtlX291dCBlYXNlX3NoYWtlX2lub3V0IGVhc2VfbG9vcCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuXG4gICAgICB7XG4gICAgICAgIC8vIG11bHRpLWxpbmUgc3RyaW5nXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAne1wiJywgZW5kOiAnXCJ9JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcblxuICAgICAge1xuICAgICAgICAvLyBwcmUtcHJvY2Vzc29yXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLCBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2FkZGlvbiBjZnVuYyBjbWQgY21wb3B0IGNvbWZ1bmMgY29uc3QgZGVmY2Z1bmMgZGVmZnVuYyBkZWZpbmUgZWxzZSBlbmRpZiBlbnVtIGVwYWNrIGZ1bmMgZ2xvYmFsIGlmIGlmZGVmIGlmbmRlZiBpbmNsdWRlIG1vZGNmdW5jIG1vZGZ1bmMgbW9kaW5pdCBtb2R0ZXJtIG1vZHVsZSBwYWNrIHBhY2tvcHQgcmVnY21kIHJ1bnRpbWUgdW5kZWYgdXNlY29tIHVzZWxpYid9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnfSksXG4gICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICAvLyBsYWJlbFxuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ15cXFxcKihcXFxcdyt8QCknXG4gICAgICB9LFxuXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJVSUxUX0lOUyA9ICdhY3Rpb24gY29sbGVjdGlvbiBjb21wb25lbnQgY29uY2F0IGRlYnVnZ2VyIGVhY2ggZWFjaC1pbiBlbHNlIGdldCBoYXNoIGlmIGlucHV0IGxpbmstdG8gbG9jIGxvZyBtdXQgb3V0bGV0IHBhcnRpYWwgcXVlcnktcGFyYW1zIHJlbmRlciB0ZXh0YXJlYSB1bmJvdW5kIHVubGVzcyB3aXRoIHlpZWxkIHZpZXcnO1xuXG4gIHZhciBBVFRSX0FTU0lHTk1FTlQgPSB7XG4gICAgaWxsZWdhbDogL1xcfVxcfS8sXG4gICAgYmVnaW46IC9bYS16QS1aMC05X10rPS8sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogL1thLXpBLVowLTlfXSsvXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBTVUJfRVhQUiA9IHtcbiAgICBpbGxlZ2FsOiAvXFx9XFx9LyxcbiAgICBiZWdpbjogL1xcKS8sIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9bYS16QS1aXFwuXFwtXSsvLFxuICAgICAgICBrZXl3b3Jkczoge2J1aWx0X2luOiBCVUlMVF9JTlN9LFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgVEFHX0lOTkFSRFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3Jkczoge2tleXdvcmQ6ICdhcycsIGJ1aWx0X2luOiBCVUlMVF9JTlN9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgQVRUUl9BU1NJR05NRU5ULFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJ3t7ISgtLSk/JywgJygtLSk/fX0nKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtbI1xcL10vLCBlbmQ6IC9cXH1cXH0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9bYS16QS1aXFwuXFwtXSsvLFxuICAgICAgICAgICAga2V5d29yZHM6IHsnYnVpbHRpbi1uYW1lJzogQlVJTFRfSU5TfSxcbiAgICAgICAgICAgIHN0YXJ0czogVEFHX0lOTkFSRFNcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXHtcXHtbYS16QS1aXVthLXpBLVpcXC1dKy8sIGVuZDogL1xcfVxcfS8sXG4gICAgICAgIGtleXdvcmRzOiB7a2V5d29yZDogJ2FzJywgYnVpbHRfaW46IEJVSUxUX0lOU30sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFZFUlNJT04gPSAnSFRUUC9bMC05XFxcXC5dKyc7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydodHRwcyddLFxuICAgIGlsbGVnYWw6ICdcXFxcUycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIFZFUlNJT04sIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdudW1iZXInLCBiZWdpbjogJ1xcXFxiXFxcXGR7M31cXFxcYid9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeW0EtWl0rICguKj8pICcgKyBWRVJTSU9OICsgJyQnLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnICcsIGVuZDogJyAnLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogVkVSU0lPTlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgICBiZWdpbjogJ1tBLVpdKydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFx3JywgZW5kOiAnOiAnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG58XFxcXHN8PScsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxuXFxcXG4nLFxuICAgICAgICBzdGFydHM6IHtzdWJMYW5ndWFnZTogW10sIGVuZHNXaXRoUGFyZW50OiB0cnVlfVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBrZXl3b3JkcyA9IHtcbiAgICAnYnVpbHRpbi1uYW1lJzpcbiAgICAgIC8vIGtleXdvcmRzXG4gICAgICAnIT0gJSAlPSAmICY9ICogKiogKio9ICo9ICptYXAgJyArXG4gICAgICAnKyArPSAsIC0tYnVpbGQtY2xhc3MtLSAtLWltcG9ydC0tIC09IC4gLyAvLyAvLz0gJyArXG4gICAgICAnLz0gPCA8PCA8PD0gPD0gPSA+ID49ID4+ID4+PSAnICtcbiAgICAgICdAIEA9IF4gXj0gYWJzIGFjY3VtdWxhdGUgYWxsIGFuZCBhbnkgYXAtY29tcG9zZSAnICtcbiAgICAgICdhcC1kb3RpbWVzIGFwLWVhY2ggYXAtZWFjaC13aGlsZSBhcC1maWx0ZXIgYXAtZmlyc3QgYXAtaWYgYXAtbGFzdCBhcC1tYXAgYXAtbWFwLXdoZW4gYXAtcGlwZSAnICtcbiAgICAgICdhcC1yZWR1Y2UgYXAtcmVqZWN0IGFwcGx5IGFzLT4gYXNjaWkgYXNzZXJ0IGFzc29jIGJpbiBicmVhayBidXRsYXN0ICcgK1xuICAgICAgJ2NhbGxhYmxlIGNhbGxpbmctbW9kdWxlLW5hbWUgY2FyIGNhc2UgY2RyIGNoYWluIGNociBjb2xsPyBjb21iaW5hdGlvbnMgY29tcGlsZSAnICtcbiAgICAgICdjb21wcmVzcyBjb25kIGNvbnMgY29ucz8gY29udGludWUgY291bnQgY3VycnkgY3V0IGN5Y2xlIGRlYyAnICtcbiAgICAgICdkZWYgZGVmYXVsdC1tZXRob2QgZGVmY2xhc3MgZGVmbWFjcm8gZGVmbWFjcm8tYWxpYXMgZGVmbWFjcm8vZyEgZGVmbWFpbiBkZWZtZXRob2QgZGVmbXVsdGkgZGVmbiAnICtcbiAgICAgICdkZWZuLWFsaWFzIGRlZm5jIGRlZm5yIGRlZnJlYWRlciBkZWZzZXEgZGVsIGRlbGF0dHIgZGVsZXRlLXJvdXRlIGRpY3QtY29tcCBkaXIgJyArXG4gICAgICAnZGlzYXNzZW1ibGUgZGlzcGF0Y2gtcmVhZGVyLW1hY3JvIGRpc3RpbmN0IGRpdm1vZCBkbyBkb3RvIGRyb3AgZHJvcC1sYXN0IGRyb3Atd2hpbGUgZW1wdHk/ICcgK1xuICAgICAgJ2VuZC1zZXF1ZW5jZSBldmFsIGV2YWwtYW5kLWNvbXBpbGUgZXZhbC13aGVuLWNvbXBpbGUgZXZlbj8gZXZlcnk/IGV4Y2VwdCBleGVjIGZpbHRlciBmaXJzdCAnICtcbiAgICAgICdmbGF0dGVuIGZsb2F0PyBmbiBmbmMgZm5yIGZvciBmb3IqIGZvcm1hdCBmcmFjdGlvbiBnZW5leHByICcgK1xuICAgICAgJ2dlbnN5bSBnZXQgZ2V0YXR0ciBnbG9iYWwgZ2xvYmFscyBncm91cC1ieSBoYXNhdHRyIGhhc2ggaGV4IGlkICcgK1xuICAgICAgJ2lkZW50aXR5IGlmIGlmKiBpZi1ub3QgaWYtcHl0aG9uMiBpbXBvcnQgaW4gaW5jIGlucHV0IGluc3RhbmNlPyAnICtcbiAgICAgICdpbnRlZ2VyIGludGVnZXItY2hhcj8gaW50ZWdlcj8gaW50ZXJsZWF2ZSBpbnRlcnBvc2UgaXMgaXMtY29sbCBpcy1jb25zIGlzLWVtcHR5IGlzLWV2ZW4gJyArXG4gICAgICAnaXMtZXZlcnkgaXMtZmxvYXQgaXMtaW5zdGFuY2UgaXMtaW50ZWdlciBpcy1pbnRlZ2VyLWNoYXIgaXMtaXRlcmFibGUgaXMtaXRlcmF0b3IgaXMta2V5d29yZCBpcy1uZWcgaXMtbm9uZSAnICtcbiAgICAgICdpcy1ub3QgaXMtbnVtZXJpYyBpcy1vZGQgaXMtcG9zIGlzLXN0cmluZyBpcy1zeW1ib2wgaXMtemVybyBpc2luc3RhbmNlIGlzbGljZSBpc3N1YmNsYXNzICcgK1xuICAgICAgJ2l0ZXIgaXRlcmFibGU/IGl0ZXJhdGUgaXRlcmF0b3I/IGtleXdvcmQga2V5d29yZD8gbGFtYmRhIGxhc3QgbGVuIGxldCAnICtcbiAgICAgICdsaWYgbGlmLW5vdCBsaXN0KiBsaXN0LWNvbXAgbG9jYWxzIGxvb3AgbWFjcm8tZXJyb3IgbWFjcm9leHBhbmQgbWFjcm9leHBhbmQtMSBtYWNyb2V4cGFuZC1hbGwgJyArXG4gICAgICAnbWFwIG1heCBtZXJnZS13aXRoIG1ldGhvZC1kZWNvcmF0b3IgbWluIG11bHRpLWRlY29yYXRvciBtdWx0aWNvbWJpbmF0aW9ucyBuYW1lIG5lZz8gbmV4dCAnICtcbiAgICAgICdub25lPyBub25sb2NhbCBub3Qgbm90LWluIG5vdD8gbnRoIG51bWVyaWM/IG9jdCBvZGQ/IG9wZW4gJyArXG4gICAgICAnb3Igb3JkIHBhcnRpdGlvbiBwZXJtdXRhdGlvbnMgcG9zPyBwb3N0LXJvdXRlIHBvc3R3YWxrIHBvdyBwcmV3YWxrIHByaW50ICcgK1xuICAgICAgJ3Byb2R1Y3QgcHJvZmlsZS9jYWxscyBwcm9maWxlL2NwdSBwdXQtcm91dGUgcXVhc2lxdW90ZSBxdW90ZSByYWlzZSByYW5nZSByZWFkIHJlYWQtc3RyICcgK1xuICAgICAgJ3JlY3Vyc2l2ZS1yZXBsYWNlIHJlZHVjZSByZW1vdmUgcmVwZWF0IHJlcGVhdGVkbHkgcmVwciByZXF1aXJlIHJlc3Qgcm91bmQgcm91dGUgJyArXG4gICAgICAncm91dGUtd2l0aC1tZXRob2RzIHJ3bSBzZWNvbmQgc2VxIHNldC1jb21wIHNldGF0dHIgc2V0diBzb21lIHNvcnRlZCBzdHJpbmcgJyArXG4gICAgICAnc3RyaW5nPyBzdW0gc3dpdGNoIHN5bWJvbD8gdGFrZSB0YWtlLW50aCB0YWtlLXdoaWxlIHRlZSB0cnkgdW5sZXNzICcgK1xuICAgICAgJ3VucXVvdGUgdW5xdW90ZS1zcGxpY2luZyB2YXJzIHdhbGsgd2hlbiB3aGlsZSB3aXRoIHdpdGgqIHdpdGgtZGVjb3JhdG9yIHdpdGgtZ2Vuc3ltcyAnICtcbiAgICAgICd4aSB4b3IgeWllbGQgeWllbGQtZnJvbSB6ZXJvPyB6aXAgemlwLWxvbmdlc3QgfCB8PSB+J1xuICAgfTtcblxuICB2YXIgU1lNQk9MU1RBUlQgPSAnYS16QS1aX1xcXFwtIS4/Kyo9PD4mI1xcJyc7XG4gIHZhciBTWU1CT0xfUkUgPSAnWycgKyBTWU1CT0xTVEFSVCArICddWycgKyBTWU1CT0xTVEFSVCArICcwLTkvOzpdKic7XG4gIHZhciBTSU1QTEVfTlVNQkVSX1JFID0gJ1stK10/XFxcXGQrKFxcXFwuXFxcXGQrKT8nO1xuXG4gIHZhciBTSEVCQU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnXiMhJywgZW5kOiAnJCdcbiAgfTtcblxuICB2YXIgU1lNQk9MID0ge1xuICAgIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46IFNJTVBMRV9OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KTtcbiAgdmFyIENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzsnLFxuICAgICckJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gICk7XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAvXFxiKFtUdF1ydWV8W0ZmXWFsc2V8bmlsfE5vbmUpXFxiL1xuICB9O1xuICB2YXIgQ09MTEVDVElPTiA9IHtcbiAgICBiZWdpbjogJ1tcXFxcW1xcXFx7XScsIGVuZDogJ1tcXFxcXVxcXFx9XSdcbiAgfTtcbiAgdmFyIEhJTlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46ICdcXFxcXicgKyBTWU1CT0xfUkVcbiAgfTtcbiAgdmFyIEhJTlRfQ09MID0gaGxqcy5DT01NRU5UKCdcXFxcXlxcXFx7JywgJ1xcXFx9Jyk7XG4gIHZhciBLRVkgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1s6XXsxLDJ9JyArIFNZTUJPTF9SRVxuICB9O1xuICB2YXIgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknXG4gIH07XG4gIHZhciBCT0RZID0ge1xuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgTkFNRSA9IHtcbiAgICBrZXl3b3Jkczoga2V5d29yZHMsXG4gICAgbGV4ZW1lczogU1lNQk9MX1JFLFxuICAgIGNsYXNzTmFtZTogJ25hbWUnLCBiZWdpbjogU1lNQk9MX1JFLFxuICAgIHN0YXJ0czogQk9EWVxuICB9O1xuICB2YXIgREVGQVVMVF9DT05UQUlOUyA9IFtMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTCwgU1lNQk9MXTtcblxuICBMSVNULmNvbnRhaW5zID0gW2hsanMuQ09NTUVOVCgnY29tbWVudCcsICcnKSwgTkFNRSwgQk9EWV07XG4gIEJPRFkuY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuICBDT0xMRUNUSU9OLmNvbnRhaW5zID0gREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaHlsYW5nJ10sXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtTSEVCQU5HLCBMSVNULCBTVFJJTkcsIEhJTlQsIEhJTlRfQ09MLCBDT01NRU5ULCBLRVksIENPTExFQ1RJT04sIE5VTUJFUiwgTElURVJBTF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNUQVJUX0JSQUNLRVQgPSAnXFxcXFsnO1xuICB2YXIgRU5EX0JSQUNLRVQgPSAnXFxcXF0nO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnaTcnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAvLyBTb21lIGtleXdvcmRzIG1vcmUgb3IgbGVzcyB1bmlxdWUgdG8gSTcsIGZvciByZWxldmFuY2UuXG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvLyBraW5kOlxuICAgICAgICAndGhpbmcgcm9vbSBwZXJzb24gbWFuIHdvbWFuIGFuaW1hbCBjb250YWluZXIgJyArXG4gICAgICAgICdzdXBwb3J0ZXIgYmFja2Ryb3AgZG9vciAnICtcbiAgICAgICAgLy8gY2hhcmFjdGVyaXN0aWM6XG4gICAgICAgICdzY2VuZXJ5IG9wZW4gY2xvc2VkIGxvY2tlZCBpbnNpZGUgZ2VuZGVyICcgK1xuICAgICAgICAvLyB2ZXJiOlxuICAgICAgICAnaXMgYXJlIHNheSB1bmRlcnN0YW5kICcgK1xuICAgICAgICAvLyBtaXNjIGtleXdvcmQ6XG4gICAgICAgICdraW5kIG9mIHJ1bGUnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgICAgICAgICAgYmVnaW46IFNUQVJUX0JSQUNLRVQsIGVuZDogRU5EX0JSQUNLRVRcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICBiZWdpbjogL14oVm9sdW1lfEJvb2t8UGFydHxDaGFwdGVyfFNlY3Rpb258VGFibGUpXFxiLyxcbiAgICAgICAgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFJ1bGUgZGVmaW5pdGlvblxuICAgICAgICAvLyBUaGlzIGlzIGhlcmUgZm9yIHJlbGV2YW5jZS5cbiAgICAgICAgYmVnaW46IC9eKENoZWNrfENhcnJ5IG91dHxSZXBvcnR8SW5zdGVhZCBvZnxUb3xSdWxlfFdoZW58QmVmb3JlfEFmdGVyKVxcYi8sXG4gICAgICAgIGVuZDogJzonLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vUnVsZSBuYW1lXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoVGhpcycsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgIGJlZ2luOiBTVEFSVF9CUkFDS0VULCBlbmQ6IEVORF9CUkFDS0VULFxuICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogXCJzdHJpbmdcIixcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiJycnXCIsIGVuZDogXCInJydcIixcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sIHtcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJ1xuICAgICAgfSwge1xuICAgICAgICBiZWdpbjogXCInXCIsIGVuZDogXCInXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd0b21sJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCc7JywgJyQnKSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICBiZWdpbjogL15cXHMqXFxbKy8sIGVuZDogL1xcXSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL15bYS16MC05XFxbXFxdX1xcLi1dK1xccyo9XFxzKi8sIGVuZDogJyQnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgIGJlZ2luOiAvW2EtejAtOVxcW1xcXV9cXC4tXSsvXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLz0vLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnOycsICckJyksXG4gICAgICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL1xcYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xcYi9cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiAvXFwkW1xcd1xcZFwiXVtcXHdcXGRfXSovfSxcbiAgICAgICAgICAgICAgICAgIHtiZWdpbjogL1xcJFxceyguKj8pfS99XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvKFtcXCtcXC1dKyk/W1xcZF0rX1tcXGRfXSsvXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIHZhciBGX0tFWVdPUkRTID0ge1xuICAgIGxpdGVyYWw6ICcuRmFsc2UuIC5UcnVlLicsXG4gICAga2V5d29yZDogJ2tpbmQgZG8gd2hpbGUgcHJpdmF0ZSBjYWxsIGludHJpbnNpYyB3aGVyZSBlbHNld2hlcmUgJyArXG4gICAgICAndHlwZSBlbmR0eXBlIGVuZG1vZHVsZSBlbmRzZWxlY3QgZW5kaW50ZXJmYWNlIGVuZCBlbmRkbyBlbmRpZiBpZiBmb3JhbGwgZW5kZm9yYWxsIG9ubHkgY29udGFpbnMgZGVmYXVsdCByZXR1cm4gc3RvcCB0aGVuICcgK1xuICAgICAgJ3B1YmxpYyBzdWJyb3V0aW5lfDEwIGZ1bmN0aW9uIHByb2dyYW0gLmFuZC4gLm9yLiAubm90LiAubGUuIC5lcS4gLmdlLiAuZ3QuIC5sdC4gJyArXG4gICAgICAnZ290byBzYXZlIGVsc2UgdXNlIG1vZHVsZSBzZWxlY3QgY2FzZSAnICtcbiAgICAgICdhY2Nlc3MgYmxhbmsgZGlyZWN0IGV4aXN0IGZpbGUgZm10IGZvcm0gZm9ybWF0dGVkIGlvc3RhdCBuYW1lIG5hbWVkIG5leHRyZWMgbnVtYmVyIG9wZW5lZCByZWMgcmVjbCBzZXF1ZW50aWFsIHN0YXR1cyB1bmZvcm1hdHRlZCB1bml0ICcgK1xuICAgICAgJ2NvbnRpbnVlIGZvcm1hdCBwYXVzZSBjeWNsZSBleGl0ICcgK1xuICAgICAgJ2NfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgZmx1c2ggd2FpdCBkZWNpbWFsIHJvdW5kIGlvbXNnICcgK1xuICAgICAgJ3N5bmNocm9ub3VzIG5vcGFzcyBub25fb3ZlcnJpZGFibGUgcGFzcyBwcm90ZWN0ZWQgdm9sYXRpbGUgYWJzdHJhY3QgZXh0ZW5kcyBpbXBvcnQgJyArXG4gICAgICAnbm9uX2ludHJpbnNpYyB2YWx1ZSBkZWZlcnJlZCBnZW5lcmljIGZpbmFsIGVudW1lcmF0b3IgY2xhc3MgYXNzb2NpYXRlIGJpbmQgZW51bSAnICtcbiAgICAgICdjX2ludCBjX3Nob3J0IGNfbG9uZyBjX2xvbmdfbG9uZyBjX3NpZ25lZF9jaGFyIGNfc2l6ZV90IGNfaW50OF90IGNfaW50MTZfdCBjX2ludDMyX3QgY19pbnQ2NF90IGNfaW50X2xlYXN0OF90IGNfaW50X2xlYXN0MTZfdCAnICtcbiAgICAgICdjX2ludF9sZWFzdDMyX3QgY19pbnRfbGVhc3Q2NF90IGNfaW50X2Zhc3Q4X3QgY19pbnRfZmFzdDE2X3QgY19pbnRfZmFzdDMyX3QgY19pbnRfZmFzdDY0X3QgY19pbnRtYXhfdCBDX2ludHB0cl90IGNfZmxvYXQgY19kb3VibGUgJyArXG4gICAgICAnY19sb25nX2RvdWJsZSBjX2Zsb2F0X2NvbXBsZXggY19kb3VibGVfY29tcGxleCBjX2xvbmdfZG91YmxlX2NvbXBsZXggY19ib29sIGNfY2hhciBjX251bGxfcHRyIGNfbnVsbF9mdW5wdHIgJyArXG4gICAgICAnY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiIGlzb19jX2JpbmRpbmcgY19sb2MgY19mdW5sb2MgY19hc3NvY2lhdGVkICBjX2ZfcG9pbnRlciAnICtcbiAgICAgICdjX3B0ciBjX2Z1bnB0ciBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yICcgK1xuICAgICAgJ251bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0IGNfZl9wcm9jcG9pbnRlciBpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sICcgK1xuICAgICAgJ2llZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlIG5ld3VuaXQgY29udGlndW91cyByZWN1cnNpdmUgJyArXG4gICAgICAncGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUgZW9yIGFkdmFuY2Ugbm1sIGludGVyZmFjZSBwcm9jZWR1cmUgbmFtZWxpc3QgaW5jbHVkZSBzZXF1ZW5jZSBlbGVtZW50YWwgcHVyZSAnICtcbiAgICAgICdpbnRlZ2VyIHJlYWwgY2hhcmFjdGVyIGNvbXBsZXggbG9naWNhbCBkaW1lbnNpb24gYWxsb2NhdGFibGV8MTAgcGFyYW1ldGVyICcgK1xuICAgICAgJ2V4dGVybmFsIGltcGxpY2l0fDEwIG5vbmUgZG91YmxlIHByZWNpc2lvbiBhc3NpZ24gaW50ZW50IG9wdGlvbmFsIHBvaW50ZXIgJyArXG4gICAgICAndGFyZ2V0IGluIG91dCBjb21tb24gZXF1aXZhbGVuY2UgZGF0YSAnICtcbiAgICAgIC8vIElSUEY5MCBzcGVjaWFsIGtleXdvcmRzXG4gICAgICAnYmVnaW5fcHJvdmlkZXIgJmJlZ2luX3Byb3ZpZGVyIGVuZF9wcm92aWRlciBiZWdpbl9zaGVsbCBlbmRfc2hlbGwgYmVnaW5fdGVtcGxhdGUgZW5kX3RlbXBsYXRlIHN1YnN0IGFzc2VydCB0b3VjaCAnICtcbiAgICAgICdzb2Z0X3RvdWNoIHByb3ZpZGUgbm9fZGVwIGZyZWUgaXJwX2lmIGlycF9lbHNlIGlycF9lbmRpZiBpcnBfd3JpdGUgaXJwX3JlYWQnLFxuICAgIGJ1aWx0X2luOiAnYWxvZyBhbG9nMTAgYW1heDAgYW1heDEgYW1pbjAgYW1pbjEgYW1vZCBjYWJzIGNjb3MgY2V4cCBjbG9nIGNzaW4gY3NxcnQgZGFicyBkYWNvcyBkYXNpbiBkYXRhbiBkYXRhbjIgZGNvcyBkY29zaCBkZGltIGRleHAgZGludCAnICtcbiAgICAgICdkbG9nIGRsb2cxMCBkbWF4MSBkbWluMSBkbW9kIGRuaW50IGRzaWduIGRzaW4gZHNpbmggZHNxcnQgZHRhbiBkdGFuaCBmbG9hdCBpYWJzIGlkaW0gaWRpbnQgaWRuaW50IGlmaXggaXNpZ24gbWF4MCBtYXgxIG1pbjAgbWluMSBzbmdsICcgK1xuICAgICAgJ2FsZ2FtYSBjZGFicyBjZGNvcyBjZGV4cCBjZGxvZyBjZHNpbiBjZHNxcnQgY3FhYnMgY3Fjb3MgY3FleHAgY3Fsb2cgY3FzaW4gY3FzcXJ0IGRjbXBseCBkY29uamcgZGVyZiBkZXJmYyBkZmxvYXQgZGdhbW1hIGRpbWFnIGRsZ2FtYSAnICtcbiAgICAgICdpcWludCBxYWJzIHFhY29zIHFhc2luIHFhdGFuIHFhdGFuMiBxY21wbHggcWNvbmpnIHFjb3MgcWNvc2ggcWRpbSBxZXJmIHFlcmZjIHFleHAgcWdhbW1hIHFpbWFnIHFsZ2FtYSBxbG9nIHFsb2cxMCBxbWF4MSBxbWluMSBxbW9kICcgK1xuICAgICAgJ3FuaW50IHFzaWduIHFzaW4gcXNpbmggcXNxcnQgcXRhbiBxdGFuaCBhYnMgYWNvcyBhaW1hZyBhaW50IGFuaW50IGFzaW4gYXRhbiBhdGFuMiBjaGFyIGNtcGx4IGNvbmpnIGNvcyBjb3NoIGV4cCBpY2hhciBpbmRleCBpbnQgbG9nICcgK1xuICAgICAgJ2xvZzEwIG1heCBtaW4gbmludCBzaWduIHNpbiBzaW5oIHNxcnQgdGFuIHRhbmggcHJpbnQgd3JpdGUgZGltIGxnZSBsZ3QgbGxlIGxsdCBtb2QgbnVsbGlmeSBhbGxvY2F0ZSBkZWFsbG9jYXRlICcgK1xuICAgICAgJ2FkanVzdGwgYWRqdXN0ciBhbGwgYWxsb2NhdGVkIGFueSBhc3NvY2lhdGVkIGJpdF9zaXplIGJ0ZXN0IGNlaWxpbmcgY291bnQgY3NoaWZ0IGRhdGVfYW5kX3RpbWUgZGlnaXRzIGRvdF9wcm9kdWN0ICcgK1xuICAgICAgJ2Vvc2hpZnQgZXBzaWxvbiBleHBvbmVudCBmbG9vciBmcmFjdGlvbiBodWdlIGlhbmQgaWJjbHIgaWJpdHMgaWJzZXQgaWVvciBpb3IgaXNoZnQgaXNoZnRjIGxib3VuZCBsZW5fdHJpbSBtYXRtdWwgJyArXG4gICAgICAnbWF4ZXhwb25lbnQgbWF4bG9jIG1heHZhbCBtZXJnZSBtaW5leHBvbmVudCBtaW5sb2MgbWludmFsIG1vZHVsbyBtdmJpdHMgbmVhcmVzdCBwYWNrIHByZXNlbnQgcHJvZHVjdCAnICtcbiAgICAgICdyYWRpeCByYW5kb21fbnVtYmVyIHJhbmRvbV9zZWVkIHJhbmdlIHJlcGVhdCByZXNoYXBlIHJyc3BhY2luZyBzY2FsZSBzY2FuIHNlbGVjdGVkX2ludF9raW5kIHNlbGVjdGVkX3JlYWxfa2luZCAnICtcbiAgICAgICdzZXRfZXhwb25lbnQgc2hhcGUgc2l6ZSBzcGFjaW5nIHNwcmVhZCBzdW0gc3lzdGVtX2Nsb2NrIHRpbnkgdHJhbnNwb3NlIHRyaW0gdWJvdW5kIHVucGFjayB2ZXJpZnkgYWNoYXIgaWFjaGFyIHRyYW5zZmVyICcgK1xuICAgICAgJ2RibGUgZW50cnkgZHByb2QgY3B1X3RpbWUgY29tbWFuZF9hcmd1bWVudF9jb3VudCBnZXRfY29tbWFuZCBnZXRfY29tbWFuZF9hcmd1bWVudCBnZXRfZW52aXJvbm1lbnRfdmFyaWFibGUgaXNfaW9zdGF0X2VuZCAnICtcbiAgICAgICdpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sIGllZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlICcgK1xuICAgICAgJ2lzX2lvc3RhdF9lb3IgbW92ZV9hbGxvYyBuZXdfbGluZSBzZWxlY3RlZF9jaGFyX2tpbmQgc2FtZV90eXBlX2FzIGV4dGVuZHNfdHlwZV9vZicgICtcbiAgICAgICdhY29zaCBhc2luaCBhdGFuaCBiZXNzZWxfajAgYmVzc2VsX2oxIGJlc3NlbF9qbiBiZXNzZWxfeTAgYmVzc2VsX3kxIGJlc3NlbF95biBlcmYgZXJmYyBlcmZjX3NjYWxlZCBnYW1tYSBsb2dfZ2FtbWEgaHlwb3Qgbm9ybTIgJyArXG4gICAgICAnYXRvbWljX2RlZmluZSBhdG9taWNfcmVmIGV4ZWN1dGVfY29tbWFuZF9saW5lIGxlYWR6IHRyYWlseiBzdG9yYWdlX3NpemUgbWVyZ2VfYml0cyAnICtcbiAgICAgICdiZ2UgYmd0IGJsZSBibHQgZHNoaWZ0bCBkc2hpZnRyIGZpbmRsb2MgaWFsbCBpYW55IGlwYXJpdHkgaW1hZ2VfaW5kZXggbGNvYm91bmQgdWNvYm91bmQgbWFza2wgbWFza3IgJyArXG4gICAgICAnbnVtX2ltYWdlcyBwYXJpdHkgcG9wY250IHBvcHBhciBzaGlmdGEgc2hpZnRsIHNoaWZ0ciB0aGlzX2ltYWdlICcgK1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwgYnVpbHRfaW5zXG4gICAgICAnSVJQX0FMSUdOIGlycF9oZXJlJ1xuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IEZfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtjbGFzc05hbWU6ICdzdHJpbmcnLCByZWxldmFuY2U6IDB9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N1YnJvdXRpbmUgZnVuY3Rpb24gcHJvZ3JhbScsXG4gICAgICAgIGlsbGVnYWw6ICdbJHs9XFxcXG5dJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwgUEFSQU1TXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnIScsICckJywge3JlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5DT01NRU5UKCdiZWdpbl9kb2MnLCAnZW5kX2RvYycsIHtyZWxldmFuY2U6IDEwfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnKD89XFxcXGJ8XFxcXCt8XFxcXC18XFxcXC4pKD89XFxcXC5cXFxcZHxcXFxcZCkoPzpcXFxcZCspPyg/OlxcXFwuP1xcXFxkKikoPzpbZGVdWystXT9cXFxcZCspP1xcXFxiXFxcXC4/JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC+0LJcbiAgdmFyIFVOREVSU0NPUkVfSURFTlRfUkUgPSBcIltBLVphLXrQkC3Qr9CwLdGP0ZHQgV8hXVtBLVphLXrQkC3Qr9CwLdGP0ZHQgV8wLTldKlwiO1xuXG4gIC8vINCe0L/RgNC10LTQtdC70LXQvdC40LUg0LjQvNC10L0g0YTRg9C90LrRhtC40LlcbiAgdmFyIEZVTkNUSU9OX05BTUVfSURFTlRfUkUgPSBcIltBLVphLXrQkC3Qr9CwLdGP0ZHQgV9dW0EtWmEtetCQLdCv0LAt0Y/RkdCBXzAtOV0qXCI7XG5cbiAgLy8ga2V5d29yZCA6INC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsFxuICB2YXIgS0VZV09SRCA9XG4gICAgXCJhbmQg0LggZWxzZSDQuNC90LDRh9C1IGVuZGV4Y2VwdCBlbmRmaW5hbGx5IGVuZGZvcmVhY2gg0LrQvtC90LXRhtCy0YHQtSBlbmRpZiDQutC+0L3QtdGG0LXRgdC70LggZW5kd2hpbGUg0LrQvtC90LXRhtC/0L7QutCwIFwiICtcbiAgICBcImV4Y2VwdCBleGl0Zm9yIGZpbmFsbHkgZm9yZWFjaCDQstGB0LUgaWYg0LXRgdC70LggaW4g0LIgbm90INC90LUgb3Ig0LjQu9C4IHRyeSB3aGlsZSDQv9C+0LrQsCBcIjtcblxuICAvLyBTWVNSRVMgQ29uc3RhbnRzXG4gIHZhciBzeXNyZXNfY29uc3RhbnRzID1cbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU19SSUdIVF9UWVBFX0VESVQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTX1JJR0hUX1RZUEVfRlVMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNfUklHSFRfVFlQRV9WSUVXIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfTU9ERV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX05PX0FDQ0VTU19WSUVXIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfTk9fQUNDRVNTX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19BRERfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfQUREX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19DSEFOR0VfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfQ0hBTkdFX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19ERUxFVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfREVMRVRFX1JFUVVJU0lURV9ZRVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19FWEVDVVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX0VYRUNVVEVfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX05PX0FDQ0VTU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19OT19BQ0NFU1NfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1JBVElGWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1JJR0hUU19SQVRJRllfUkVRVUlTSVRFX1lFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ0NFU1NfUklHSFRTX1ZJRVdfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19SSUdIVFNfVklFV19SRVFVSVNJVEVfWUVTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19UWVBFX0NIQU5HRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfQ0hBTkdFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19UWVBFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfRVhJU1RTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19UWVBFX0ZVTEwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDQ0VTU19UWVBFX0ZVTExfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfVklFVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNDRVNTX1RZUEVfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BQk9SVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQUNDRVBUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BQ0NFU1NfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9BRERfQVRUQUNITUVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ0hBTkdFX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NIQU5HRV9LSU5EIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9DSEFOR0VfU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ09OVElOVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NPUFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0NSRUFURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfQ1JFQVRFX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0RFTEVURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfREVMRVRFX0FUVEFDSE1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0RFTEVURV9WRVJTSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9ESVNBQkxFX0RFTEVHQVRFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0VOQUJMRV9ERUxFR0FURV9BQ0NFU1NfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FTkNSWVBUSU9OX0JZX0NFUlRJRklDQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9FTkNSWVBUSU9OX0JZX0NFUlRJRklDQVRFX0FORF9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRU5DUllQVElPTl9CWV9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRVhQT1JUX1dJVEhfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfRVhQT1JUX1dJVEhPVVRfTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfSU1QT1JUX1dJVEhfVU5MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9JTVBPUlRfV0lUSE9VVF9VTkxPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0xJRkVfQ1lDTEVfU1RBR0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0xPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX0xPQ0tfRk9SX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfTE9DS19NT0RJRlkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01BUktfQVNfUkVBREVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9NQVJLX0FTX1VOUkVBREVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9NT0RJRlkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX01PRElGWV9DQVJEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9NT1ZFX1RPX0FSQ0hJVkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX09GRl9FTkNSWVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9QQVNTV09SRF9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1BFUkZPUk0gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1JFQ09WRVJfRlJPTV9MT0NBTF9DT1BZIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9SRVNUQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9SRVNUT1JFX0ZST01fQVJDSElWRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfUkVWSVNJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1NFTkRfQllfTUFJTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfU0lHTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfU1RBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1VOTE9DSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfVU5MT0NLX0ZST01fU0VSVkVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9WRVJTSU9OX1NUQVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BQ1RJT05fVFlQRV9WRVJTSU9OX1ZJU0lCSUxJVFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1ZJRVdfU0hBRE9XX0NPUFkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FDVElPTl9UWVBFX1dPUktGTE9XX0RFU0NSSVBUSU9OX01PRElGWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSU9OX1RZUEVfV1JJVEVfSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUNUSVZFX1ZFUlNJT05fU1RBVEVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUREX1JFRkVSRU5DRV9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FERElUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRERJVElPTkFMX1BBUkFNU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURJVElPTkFMX0pPQl9FTkRfREFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURJVElPTkFMX0pPQl9SRUFEX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRElUSU9OQUxfSk9CX1NUQVJUX0RBVEVfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FESVRJT05BTF9KT0JfU1RBVEVfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQURESU5HX1VTRVJfVE9fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0FERElOR19VU0VSX1RPX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0NSRUFUSU9OX0NPTVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0NSRUFUSU9OX0NPTVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfQ1JFQVRJT05fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0NSRUFUSU9OX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0NSRUFUSU9OX1VTRVJfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0NSRUFUSU9OX1VTRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREFUQUJBU0VfVVNFUl9DUkVBVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9EQVRBQkFTRV9VU0VSX0NSRUFUSU9OX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9EQVRBQkFTRV9VU0VSX0RFTEVUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RBVEFCQVNFX1VTRVJfREVMRVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX0NPTVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX0NPTVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX0dST1VQX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX1VTRVJfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0RFTEVUSU9OX1VTRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfREVMRVRJT05fVVNFUl9GUk9NX0dST1VQX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9ERUxFVElPTl9VU0VSX0ZST01fR1JPVVBfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfR1JBTlRJTkdfRklMVEVSRVJfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX0ZJTFRFUkVSX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX0ZJTFRFUkVSX1JFU1RSSUNUSU9OX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19GSUxURVJFUl9SRVNUUklDVElPTl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19QUklWSUxFR0VfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1BSSVZJTEVHRV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9HUkFOVElOR19SSUdIVFNfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0dSQU5USU5HX1JJR0hUU19BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9JU19NQUlOX1NFUlZFUl9DSEFOR0VEX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9JU19NQUlOX1NFUlZFUl9DSEFOR0VEX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX0lTX1BVQkxJQ19DSEFOR0VEX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9JU19QVUJMSUNfQ0hBTkdFRF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9SRU1PVklOR19GSUxURVJFUl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfRklMVEVSRVJfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfRklMVEVSRVJfUkVTVFJJQ1RJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX0ZJTFRFUkVSX1JFU1RSSUNUSU9OX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX1BSSVZJTEVHRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUFJJVklMRUdFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1JFTU9WSU5HX1JJR0hUU19BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfUkVNT1ZJTkdfUklHSFRTX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9DUkVBVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9TRVJWRVJfTE9HSU5fQ1JFQVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1NFUlZFUl9MT0dJTl9ERUxFVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9TRVJWRVJfTE9HSU5fREVMRVRJT05fQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0NBVEVHT1JZX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19DQVRFR09SWV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19DT01QX1RJVExFX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19DT01QX1RJVExFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0ZVTExfTkFNRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfRlVMTF9OQU1FX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX0dST1VQX0FDVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19HUk9VUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19QQVJFTlRfR1JPVVBfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BRE1JTklTVFJBVElPTl9ISVNUT1JZX1VQREFUSU5HX1BBUkVOVF9HUk9VUF9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX0FVVEhfVFlQRV9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfVVNFUl9BVVRIX1RZUEVfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfVVNFUl9MT0dJTl9BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfVVNFUl9MT0dJTl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQURNSU5JU1RSQVRJT05fSElTVE9SWV9VUERBVElOR19VU0VSX1NUQVRVU19BQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVBEQVRJTkdfVVNFUl9TVEFUVVNfQUNUSU9OX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVNFUl9QQVNTV09SRF9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FETUlOSVNUUkFUSU9OX0hJU1RPUllfVVNFUl9QQVNTV09SRF9DSEFOR0VfQUNUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExfQUNDRVBUX0NPTkRJVElPTl9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTF9VU0VSU19HUk9VUCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMX1VTRVJTX0dST1VQX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FMTF9VU0VSU19TRVJWRVJfR1JPVVBfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQUxMT1dFRF9BQ0NFU1NfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BTExPV0VEX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FQUF9WSUVXRVJfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVBQUk9WSU5HX1NJR05BVFVSRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BUFBST1ZJTkdfU0lHTkFUVVJFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BU1NJU1RBTlRfU1VCU1RJVFVFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FTU0lTVEFOVF9TVUJTVElUVUVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9DT01QT05FTlRfVE9LRU4gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX0RPQyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfRURPQyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfRk9MREVSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVFRBQ0hfVFlQRV9KT0IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FUVEFDSF9UWVBFX1JFRkVSRU5DRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVRUQUNIX1RZUEVfVEFTSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9FTkNPREVEX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIX0VOQ09ERURfUEFTU1dPUkRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9OT1ZFTEwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhfUEFTU1dPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVEhfUEFTU1dPUkRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSF9XSU5ET1dTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRIRU5USUNBVElOR19TSUdOQVRVUkVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUSEVOVElDQVRJTkdfU0lHTkFUVVJFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9fTlVNRVJBVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPX1NUUk9OR19FTlVNX01FVEhPRF9GTEFHIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9URVhUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0FHRV9BTEwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX0FMTF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0FHRV9TSUdOIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9BVVRPVEVYVF9VU0FHRV9TSUdOX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1dPUksgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTQUdFX1dPUktfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQVVUT1RFWFRfVVNFX0FOWVdIRVJFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTRV9PTl9TSUdOSU5HX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0FVVE9URVhUX1VTRV9PTl9XT1JLX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0JFR0lOX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0JMQUNLX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQkxVRV9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0JUTl9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQUxDVUxBVEVEX1JPTEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQUxMX1RZUEVfVkFSSUFCTEVfQlVUVE9OX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQUxMX1RZUEVfVkFSSUFCTEVfUFJPR1JBTV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0FOQ0VMX01FU1NBR0VfRlVOQ1RJT05fUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DQVJEX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NBUkRfUkVGRVJFTkNFX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0VSVElGSUNBVEVfVFlQRV9SRVFVSVNJVEVfRU5DUllQVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0VSVElGSUNBVEVfVFlQRV9SRVFVSVNJVEVfU0lHTl9BTkRfRU5DUllQVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0VSVElGSUNBVEVfVFlQRV9SRVFVSVNJVEVfU0lHTl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0hFQ0tfUEFSQU1fVkFMVUVfREFURV9QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9GTE9BVF9QQVJBTV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DSEVDS19QQVJBTV9WQUxVRV9JTlRFR0VSX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NIRUNLX1BBUkFNX1ZBTFVFX1BJQ0tfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0hFQ0tfUEFSQU1fVkFMVUVfUkVFRlJFTkNFX1BBUkFNX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NMT1NFRF9SRUNPUkRfRkxBR19WQUxVRV9GRU1JTklORSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ0xPU0VEX1JFQ09SRF9GTEFHX1ZBTFVFX01BU0NVTElORSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9BRE1JTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9ERVZFTE9QRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfRE9DUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9FRE9DX0NBUkRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX0VYVEVSTkFMX0VYRUNVVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfT1RIRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX0NPTVBPTkVOVF9UWVBFX1JFUE9SVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9DT01QT05FTlRfVFlQRV9TQ1JJUFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfQ09NUE9ORU5UX1RZUEVfVVJMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX1JFUVVJU0lURV9BQ0NFU1MgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ERV9SRVFVSVNJVEVfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPREVfUkVRVUlTSVRFX0VYQ0xVREVfQ09NUE9ORU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT0RFX1JFUVVJU0lURV9SRUNPUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTU1FTlRfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTU1PTl9TRVRUSU5HU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUF9DT0RFX0dSRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX0dST1VQX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0FETUlOX0NPTVBPTkVOVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX0RFVkVMT1BFUl9DT01QT05FTlRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9ET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9FRE9DX0NBUkRTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRfVFlQRV9FRE9DUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfRVhURVJOQUxfRVhFQ1VUQUJMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfT1RIRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTVBPTkVOVF9UWVBFX1JFRkVSRU5DRV9UWVBFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfUkVGRVJFTkNFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfUkVQT1JUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfU0NSSVBUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09NUE9ORU5UX1RZUEVfVVJMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT01QT05FTlRTX1JFTU9URV9TRVJWRVJTX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09ORElUSU9OX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9GSVJNX1NUQVRVU19DT01NT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX0ZJUk1fU1RBVFVTX0lORElWSURVQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlNUX05FR0FUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9DT05TVF9QT1NJVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfU0VSVkVSX1NUQVRVU19ET05UX1JFUExJQ0FURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfQ09OU1RfU0VSVkVSX1NUQVRVU19SRVBMSUNBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0NPTlRFTlRTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfQk9PTEVBTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX0RBVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9GTE9BVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX0lOVEVHRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEFfVFlQRV9QSUNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfU1RSSU5HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRBX1RZUEVfVEVYVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFUQV9UWVBFX1ZBUklBTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfQ0xPU0VfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfRk9STUFUX0RBVEVfT05MWV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFX09QRU5fUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RBVEVfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9EQVRFX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREFURVRJTUVfRk9STUFUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERUFfQUNDRVNTX1JJR0hUU19BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVTQ1JJUFRJT05fTE9DQUxJWkVfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFU0NSSVBUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQxX1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDJfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUM19QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVQ0X1BBUlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVDVfUEFSVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfREVUNl9QQVJUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVRBSUxfREFUQVNFVF9LRVlfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RFVEFJTF9QSUNLX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ERVRBSUxfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPX05PVF9VU0VfQUNDRVNTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9fTk9UX1VTRV9BQ0NFU1NfVFlQRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ET19OT1RfVVNFX09OX1ZJRVdfQUNDRVNTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRE9fTk9UX1VTRV9PTl9WSUVXX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPQ1VNRU5UX1NUT1JBR0VTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPQ1VNRU5UX1RFTVBMQVRFU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0RPVUJMRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SX0NMT1NFX0ZJTEVfT0JTRVJWX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SX0NMT1NFX1BST0NFU1NfT0JTRVJWX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfQVBQTElDQVRJT05fTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19DUkVBVEVfU0VWRVJBTF9QUk9DRVNTRVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfRVhURU5TSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRElUT1JTX09CU0VSVkVSX0JZX1BST0NFU1NfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURJVE9SU19SRVBMQUNFX1NQRUNfQ0hBUlNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfVVNFX1BMVUdJTlNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VESVRPUlNfVklFV19ET0NVTUVOVF9PUEVORURfVE9fRURJVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0NBUkRfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19DQVJEX1RZUEVTX0xJTktfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfQ0VSVElGSUNBVEVfQU5EX1BBU1NXT1JEX0VOQ09ERV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0NFUlRJRklDQVRFX0VOQ09ERV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfS0lORF9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19LSU5EU19CWV9URU1QTEFURV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19NQU5BR0VfQUNDRVNTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfTk9ORV9FTkNPREVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19OVU1CRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfUEFTU1dPUkRfRU5DT0RFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfUkVBRE9OTFlfQUNDRVNTX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU0hFTExfTElGRV9UWVBFX1ZJRVdfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU0laRV9SRVNUUklDVElPTl9QUklPUklUWV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0NIRUNLX0FDQ0VTU19SSUdIVFNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU1RPUkFHRV9DT01QVVRFUl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1NUT1JBR0VfREFUQUJBU0VfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0VESVRfSU5fU1RPUkFHRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19TVE9SQUdFX0xPQ0FMX1BBVEhfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfU1RPUkFHRV9TSEFSRURfU09VUkNFX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVEVNUExBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVFlQRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VET0NfVkVSU0lPTl9BQ1RJVkVfU1RBR0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19WRVJTSU9OX0RFU0lHTl9TVEFHRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DX1ZFUlNJT05fT0JTT0xFVEVfU1RBR0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRURPQ19XUklURV9BQ0NFU19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FRE9DVU1FTlRfQ0FSRF9SRVFVSVNJVEVTX1JFRkVSRU5DRV9DT0RFX1NFTEVDVEVEX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRU5DT0RFX0NFUlRJRklDQVRFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRU5EX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VOVU1FUkFUSU9OX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYRUNVVEVfQUNDRVNTX1JJR0hUU19UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYRUNVVElWRV9GSUxFX1NUT1JBR0VfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhJU1RfQ09OU1QgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYSVNUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfTE9DS19UWVBFX0FTSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhQT1JUX0xPQ0tfVFlQRV9XSVRIX0xPQ0sgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0VYUE9SVF9MT0NLX1RZUEVfV0lUSE9VVF9MT0NLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfVkVSU0lPTl9UWVBFX0FTSyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRVhQT1JUX1ZFUlNJT05fVFlQRV9MQVNUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFBPUlRfVkVSU0lPTl9UWVBFX0xBU1RfQUNUSVZFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9FWFRFTlNJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9UWVBFX0NPTU1PTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfVFlQRV9DT01NT05fTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRklMVEVSX1RZUEVfVVNFUl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GSUxURVJfVFlQRV9VU0VSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZJTFRFUl9WQUxVRV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRkxPQVRfTlVNQkVSX0ZPUk1BVF9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GTE9BVF9SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0FVVEhPUl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX0tJTkRfQU5ZX09CSkVDVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX0NPTVBPTkVOVFMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9LSU5EX0VET0NTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfS0lORF9KT0JTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfS0lORF9UQVNLUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfQ09NTU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9DT01QT05FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX0ZBVk9SSVRFUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfSU5CT1ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX09VVEJPWCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfUVVJQ0tfTEFVTkNIIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GT0xERVJfVFlQRV9TRUFSQ0ggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZPTERFUl9UWVBFX1NIT1JUQ1VUUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRk9MREVSX1RZUEVfVVNFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfRlJPTV9ESUNUSU9OQVJZX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTExfU1VCU1RJVFVURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GVUxMX1NVQlNUSVRVVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GVU5DVElPTl9DQU5DRUxfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GVU5DVElPTl9DQVRFR09SWV9TWVNURU0gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0NBVEVHT1JZX1VTRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0ZVTkNUSU9OX0ZBSUxVUkVfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9GVU5DVElPTl9TQVZFX1JFU1VMVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR0VORVJBVEVEX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JFRU5fTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9BQ0NPVU5UX1RZUEVfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ0FURUdPUllfTk9STUFMX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0NBVEVHT1JZX05PUk1BTF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9DQVRFR09SWV9TRVJWSUNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX0NBVEVHT1JZX1NFUlZJQ0VfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfR1JPVVBfQ09NTU9OX0NBVEVHT1JZX0ZJRUxEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9GVUxMX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1JJR0hUU19UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9TRVJWRVJfQ09ERVNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQX1NFUlZFUl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9TRVJWSUNFX0NBVEVHT1JZX0ZJRUxEX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUF9VU0VSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9HUk9VUFNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0dST1VQU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElEREVOX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElHSF9MVkxfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0hJU1RPUllfQUNUSU9OX0NSRUFURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ISVNUT1JZX0FDVElPTl9ERUxFVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSElTVE9SWV9BQ1RJT05fRURJVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9IT1VSX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lEX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JRFNQU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1BR0VfTU9ERV9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1BR0VfTU9ERV9HUkVZU0NBTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lNQUdFX01PREVfTU9OT0NIUk9NRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1QT1JUQU5DRV9ISUdIIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JTVBPUlRBTkNFX0xPVyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU1QT1JUQU5DRV9OT1JNQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lOX0RFU0lHTl9WRVJTSU9OX1NUQVRFX1BJQ0tfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lOQ09NSU5HX1dPUktfUlVMRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lOVF9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lOVF9SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSU5URUdFUl9OVU1CRVJfRk9STUFUX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lOVEVHRVJfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19HRU5FUkFURURfUkVRVUlTSVRFX05FR0FUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19QVUJMSUNfUk9MRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSVNfUkVNT1RFX1VTRVJfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0lTX1JFTU9URV9VU0VSX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19TVE9SRURfUkVRVUlTSVRFX05FR0FUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9JU19TVE9SRURfUkVRVUlTSVRFX1NUT1JFRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSVRBTElDX0xJRkVfQ1lDTEVfU1RBR0VfRFJBV19TVFlMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfS0lORF9DT05UUk9MX0pPQiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfSk9CX0tJTkRfSk9CIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfS0lORF9OT1RJQ0UgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9TVEFURV9BQk9SVEVEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9KT0JfU1RBVEVfQ09NUExFVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0pPQl9TVEFURV9XT1JLSU5HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19DUkVBVEVfU0hBRE9XX0NPUElFU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfREVGQVVMVF9FRE9DX0xJRkVfU1RBR0VfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0VET0NfQUxMX1RFUExBVEVTX0FMTE9XRURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0VET0NfQUxMT1dfTElGRV9DWUNMRV9TVEFHRV9DSEFOR0lOR19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19BTExPV19NVUxUSVBMRV9BQ1RJVkVfVkVSU0lPTlNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0tJTkRTX0VET0NfU0hBUkVfQUNDRVNfUklHSFRTX0JZX0RFRkFVTFRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19URU1QTEFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS0lORFNfRURPQ19UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9LSU5EU19TSUdORVJTX1JFUVVJU0lURVNfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfS09EX0lOUFVUX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xBU1RfVVBEQVRFX0RBVEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJRkVfQ1lDTEVfU1RBUlRfU1RBR0VfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTEFDX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9DT01QT05FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfRURPQyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9GT0xERVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xJTktfT0JKRUNUX0tJTkRfSk9CIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX09CSkVDVF9LSU5EX1JFRkVSRU5DRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTElOS19PQkpFQ1RfS0lORF9UQVNLIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSU5LX1JFRl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9MSVNUX1JFRkVSRU5DRV9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX0xPQ0FMSVpBVElPTl9ESUNUSU9OQVJZX01BSU5fVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NQUlOX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUFOVUFMX0VOVU1fTUVUSE9EX0ZMQUcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BU1RFUl9DT01QX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BU1RFUl9UQUJMRV9SRUNfSURfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01BWElNSVpFRF9NT0RFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NRVNTQUdFX0FUVEVOVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NRVNTQUdFX0NPTkZJUk1BVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9NRVNTQUdFX0VSUk9SX0NBUFRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01FU1NBR0VfSU5GT1JNQVRJT05fQ0FQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUlOSU1JWkVEX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTUlOVVRFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX01PRFVMRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTU9OSVRPUklOR19CTE9DS19ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTU9OVEhfRk9STUFUX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OQU1FX0xPQ0FMSVpFX0lEX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OQU1FX1NJTkdVTEFSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OQU1FQU5fSU5QVVRfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTkVHQVRJVkVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTkVHQVRJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT19QSUNLX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT19TSUdOQVRVUkVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT05FX0FDQ0VTU19SSUdIVFNfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OT05PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PTk9QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9NQVNDVUxJTkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05PUk1BTF9BQ0NFU1NfUklHSFRTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9STUFMX0xJRkVfQ1lDTEVfU1RBR0VfRFJBV19TVFlMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9STUFMX01PREVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9UX0FMTE9XRURfQUNDRVNTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9UX0FMTE9XRURfQUNDRVNTX1RZUEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9URV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTk9USUNFX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1fUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1fU1RSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1FUkFUSU9OX0FVVE9fTk9UX1NUUk9ORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJBVElPTl9BVVRPX1NUUk9ORyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJBVElPTl9GUk9NX0RJQ1RPTkFSWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfTlVNRVJBVElPTl9NQU5VQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX05VTUVSSUNfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9OVU1SRVFfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09CU09MRVRFX1ZFUlNJT05fU1RBVEVfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1BFUkFUSU5HX1JFQ09SRF9GTEFHX1ZBTFVFX0ZFTUlOSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUEVSQVRJTkdfUkVDT1JEX0ZMQUdfVkFMVUVfTUFTQ1VMSU5FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PUFRJT05BTF9GT1JNX0NPTVBfUkVRQ09ERV9QUkVGSVggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09SQU5HRV9MSUZFX0NZQ0xFX1NUQUdFX0ZPTlRfQ09MT1IgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX09SSUdJTkFMUkVGX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVJGSVJNX1JFRl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVJGSVJNX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9PVVJGSVJNX1ZBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfT1VUR09JTkdfV09SS19SVUxFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19ORUdBVElWRV9SRVNVTFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BJQ0tfUE9TSVRJVkVfUkVTVUxUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QSUNLX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUElDS19UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BMQU5fU1RBVFVTX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9QTEFURk9STV9WRVJTSU9OX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BMVUdJTlNfU0VUVElOR1NfREVTQ1JJUFRJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BPU0lUSVZFX1BJQ0tfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1BPV0VSX1RPX0NSRUFURV9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUE9XRVJfVE9fU0lHTl9BQ1RJT05fQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUFJJT1JJVFlfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1FVQUxJRklFRF9UQVNLX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1FVQUxJRklFRF9UQVNLX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVDU1RBVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVEX0xJRkVfQ1lDTEVfU1RBR0VfRk9OVF9DT0xPUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX0lEX1RfUkVGX1RZUEVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRl9SRVFVSVNJVEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFRl9SRVFVSVNJVEVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGX1JFUVVJU0lURVNfUkVGRVJFTkNFX0NPREVfU0VMRUNURURfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VfUkVDT1JEX0hJU1RPUllfQ1JFQVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VfUkVDT1JEX0hJU1RPUllfREVMRVRFX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VfUkVDT1JEX0hJU1RPUllfTU9ESUZZX0FDVElPTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VfVFlQRV9DSEFSIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VfVFlQRV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVGRVJFTkNFU19BRERfUEFSQU1TX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRUZFUkVOQ0VTX0RJU1BMQVlfUkVRVUlTSVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfU0VSVkVSX1NUQVRVU19XT1JLSU5HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRU1PVEVfU0VSVkVSX1RZUEVfTUFJTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVNT1RFX1NFUlZFUl9UWVBFX1NFQ09OREFSWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVNT1RFX1VTRVJfRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfQVBQX0VESVRPUl9JTlRFUk5BTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX0JBU0VfUkVQT1JUX0lEX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVBPUlRfQkFTRV9SRVBPUlRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9TQ1JJUFRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUE9SVF9URU1QTEFURV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVQT1JUX1ZJRVdFUl9DT0RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfQUxMT1dfQ09NUE9ORU5UX0RFRkFVTFRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9BTExPV19SRUNPUkRfREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX0FMTE9XX1NFUlZFUl9DT01QT05FTlRfREVGQVVMVF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfQVZBSUxBQkxFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9NT0RFX0VESVRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfSElEREVOX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUV9NT0RFX05PVF9BVkFJTEFCTEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX01PREVfVklFV19DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfTlVNQkVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFfU0VDVElPTl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRX1RZUEVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfQllfVU5JVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX0ZPUk1BVF9EQVRFX0ZVTEwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfREFURV9USU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfRk9STUFUX0xFRlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfUklHSFQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9GT1JNQVRfV0lUSE9VVF9VTklUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfTlVNQkVSX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9BQ1RJT05TIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9CVVRUT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0JVVFRPTlMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTEwIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTExIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTEyIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTEzIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE0IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE1IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE2IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE3IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE4IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTE5IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMjAgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMjEgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMjIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMjMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMjQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFMyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU0IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFNiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFX1NFQ1RJT05fVEFCTEU3IFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9SRVFVSVNJVEVfU0VDVElPTl9UQUJMRTggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JFUVVJU0lURV9TRUNUSU9OX1RBQkxFOSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUkVRVUlTSVRFU19QU0VVRE9SRUZFUkVOQ0VfUkVRVUlTSVRFX05VTUJFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUklHSFRfQUxJR05NRU5UX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPTEVTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9TVEVQX0FGVEVSX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfU1RFUF9BTkRfQ09ORElUSU9OX1JVUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfUk9VVEVfU1RFUF9PUl9DT05ESVRJT05fUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ST1VURV9UWVBFX0NPTVBMRVggXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1RZUEVfUEFSQUxMRUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1JPVVRFX1RZUEVfU0VSSUFMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQkRBVEFTRVRERVNDX05FR0FUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQkRBVEFTRVRERVNDX1BPU0lUSVZFX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TQlZJRVdTREVTQ19QT1NJVElWRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0NSSVBUX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hfQllfVEVYVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfQ09NUE9ORU5UX0NPTlRFTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0NSSVRFUklBX0FDVElPTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19FRE9DX0NPTlRFTlQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX0ZPTERFUl9DT05URU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUFSQ0hFU19KT0JfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VBUkNIRVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQVJDSEVTX1RBU0tfQ09OVEVOVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDT05EX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0FDVElPTlNfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0NBUkRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF8xX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfMl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzNfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFQ1RJT05fUkVRVUlTSVRFX0RFVEFJTF80X1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUNUSU9OX1JFUVVJU0lURV9ERVRBSUxfNV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VDVElPTl9SRVFVSVNJVEVfREVUQUlMXzZfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9SRUZFUkVOQ0VfTU9ERV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUxFQ1RfVFlQRV9TRUxFQ1RBQkxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TRUxFQ1RfVFlQRV9TRUxFQ1RBQkxFX09OTFlfQ0hJTEQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFTEVDVF9UWVBFX1NFTEVDVEFCTEVfV0lUSF9DSElMRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VMRUNUX1RZUEVfVU5TTEVDVEFCTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFUlZFUl9UWVBFX01BSU4gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NFUlZJQ0VfVVNFUl9DQVRFR09SWV9GSUVMRF9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0VUVElOR1NfVVNFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU0lHTkFUVVJFX0FORF9FTkNPREVfQ0VSVElGSUNBVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TSUdOQVRVUkVfQ0VSVElGSUNBVEVfVFlQRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TSU5HVUxBUl9USVRMRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1FMX1NFUlZFUl9BVVRIRU5USUZJQ0FUSU9OX0ZMQUdfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1FMX1NFUlZFUl9FTkNPREVfQVVUSEVOVElGSUNBVElPTl9GTEFHX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQU5EQVJUX1JPVVRFX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFOREFSVF9ST1VURV9SRUZFUkVOQ0VfQ09NTUVOVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBTkRBUlRfUk9VVEVTX0dST1VQU19SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVEVfUkVRX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRFX1JFUVVJU0lURV9BQ1RJVkVfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRFX1JFUVVJU0lURV9DTE9TRURfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUSUNfUk9MRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19QTEFOX0RFRkFVTFRfVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9BVVRPQ0xFQU5JTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9CTFVFX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX0NPTVBMRVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfR1JFRU5fU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfT1JBTkdFX1NRVUFSRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX1BVUlBMRV9TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUQVRVU19WQUxVRV9SRURfU1FVQVJFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVEFUVVNfVkFMVUVfU1VTUEVORCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RBVFVTX1ZBTFVFX1lFTExPV19TUVVBUkUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NURFJPVVRFX1NIT1dfVE9fVVNFUlNfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUT1JBR0VfVFlQRV9GSUxFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVE9SQUdFX1RZUEVfU1FMX1NFUlZFUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSX1JFUVVJU0lURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSUtFT1VUX0xJRkVfQ1lDTEVfU1RBR0VfRFJBV19TVFlMRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX0ZPUk1BVF9MRUZUX0FMSUdOX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUUklOR19GT1JNQVRfUklHSFRfQUxJR05fQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfU1RSSU5HX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVFJJTkdfUkVRVUlTSVRFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NUUklOR19UWVBFX0NIQVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NVQlNUSVRVVEVTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TVUJUQVNLX0JMT0NLX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TWVNURU1fU0VUVElOR19DVVJSRU5UX1VTRVJfUEFSQU1fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1NZU1RFTV9TRVRUSU5HX0VNUFRZX1ZBTFVFX1BBUkFNX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9TWVNURU1fVkVSU0lPTl9DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0FDQ0VTU19UWVBFX0FMTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19BQ0NFU1NfVFlQRV9BTExfTUVNQkVSUyBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19BQ0NFU1NfVFlQRV9NQU5VQUwgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfRU5DT0RFX1RZUEVfQ0VSVElGSUNBVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19FTkNPREVfVFlQRV9DRVJUSUZJQ0FUSU9OX0FORF9QQVNTV09SRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19FTkNPREVfVFlQRV9OT05FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX0VOQ09ERV9UWVBFX1BBU1NXT1JEIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1JPVVRFX0FMTF9DT05ESVRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfUk9VVEVfQU5EX0NPTkRJVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19ST1VURV9PUl9DT05ESVRJT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfU1RBVEVfQUJPUlRFRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9DT01QTEVURSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9DT05USU5VRUQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfU1RBVEVfQ09OVFJPTCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEFTS19TVEFURV9JTklUIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1NUQVRFX1dPUktJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfVElUTEUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RBU0tfVFlQRVNfR1JPVVBTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UQVNLX1RZUEVTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URU1QTEFURVNfUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfREFURV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9ERVZfREFUQUJBU0VfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9ERVZfU1lTVEVNX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19EQVRBQkFTRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfTUFJTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfTUFJTl9EQl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX0VETVNfU0VDT05EX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFU1RfRURNU19TRUNPTkRfREJfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVEVTVF9FRE1TX1NZU1RFTV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVNUX05VTUVSSUNfUkVRVUlTSVRFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1RFWFRfUkVRVUlTSVRFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVhUX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVhUX1JFUVVJU0lURV9UWVBFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9URVhUX1RZUEVfQ0hBUiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVFlQRV9DT0RFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTkRFRklORURfTElGRV9DWUNMRV9TVEFHRV9GT05UX0NPTE9SIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTklUU19TRUNUSU9OX0lEX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTklUU19TRUNUSU9OX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTk9QRVJBVElOR19SRUNPUkRfRkxBR19WQUxVRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTlNUT1JFRF9EQVRBX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VTlNUT1JFRF9EQVRBX1JFUVVJU0lURV9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VfQUNDRVNTX1RZUEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFX0FDQ0VTU19UWVBFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQUNDT1VOVF9UWVBFX1ZBTFVFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQURESVRJT05BTF9JTkZPUk1BVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9BTkRfR1JPVVBfSURfRlJPTV9QU0VVRE9SRUZFUkVOQ0VfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfQ0FURUdPUllfTk9STUFMIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1NUQVRFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NFUlRJRklDQVRFX1NVQkpFQ1RfTkFNRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9DRVJUSUZJQ0FURV9USFVNQlBSSU5UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX0NPTU1PTl9DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9DT01NT05fQ0FURUdPUllfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9GVUxMX05BTUVfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfR1JPVVBfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9MT0dJTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9SRU1PVEVfQ09OVFJPTExFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9SRU1PVEVfU1lTVEVNX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1JJR0hUU19UX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NFUlZFUl9OQU1FX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NFUlZJQ0VfQ0FURUdPUlkgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU0VSVklDRV9DQVRFR09SWV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19BRE1JTklTVFJBVE9SX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0FETUlOSVNUUkFUT1JfTkFNRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfREVWRUxPUEVSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX0RFVkVMT1BFUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19ESVNBQkxFRF9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19ESVNBQkxFRF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19TWVNURU1fREVWRUxPUEVSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfU1RBVFVTX1VTRVJfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9TVEFUVVNfVVNFUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSX1NUQVRVU19VU0VSX05BTUVfREVQUkVDQVRFRCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUl9UWVBFX0ZJRUxEX1ZBTFVFX1VTRVIgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJfVFlQRV9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfQ09OVFJPTExFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfSVNfTUFJTl9TRVJWRVJfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19SRUdJU1RSQVRJT05fQ0VSVElGSUNBVEVTX0FDVElPTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfU1lTVEVNX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9VU0VSU19VU0VSX0FDQ0VTU19SSUdIVFNfVFlQUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVVNFUl9BVVRIRU5USUNBVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVVNFUlNfVVNFUl9DT01QT05FTlRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1VTRVJfR1JPVVBfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1VTRVJTX1ZJRVdfQ0VSVElGSUNBVEVTX0FDVElPTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9WSUVXX0RFRkFVTFRfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfVklFV19ERUZBVUxUX05BTUUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1ZJRVdFUl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV0FJVElOR19CTE9DS19ERVNDUklQVElPTiBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV0laQVJEX0ZPUk1fTEFCRUxfVEVTVF9TVFJJTkcgIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XSVpBUkRfUVVFUllfUEFSQU1fSEVJR0hUX0VUQUxPTl9TVFJJTkcgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dJWkFSRF9SRUZFUkVOQ0VfQ09NTUVOVF9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19SVUxFU19ERVNDUklQVElPTl9SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19USU1FX0NBTEVOREFSX1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLX1dPUktGTE9XX0hBUkRfUk9VVEVfVFlQRV9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19XT1JLRkxPV19IQVJEX1JPVVRFX1RZUEVfVkFMVUVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfV09SS19XT1JLRkxPV19IQVJEX1JPVVRFX1RZUEVfVkFMVUVfQ09ERV9SVVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktfV09SS0ZMT1dfU09GVF9ST1VURV9UWVBFX1ZBTFVFX0NPREVfUlVTIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9XT1JLRkxPV19ST1VURV9UWVBSX0hBUkQgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1dPUktGTE9XX1JPVVRFX1RZUFJfU09GVCBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWE1MX0VOQ09ESU5HIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9YUkVDX1NUQVRfUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1hSRUNJRF9GSUVMRF9OQU1FIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVMgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19OT18yX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVNfTk9fUkVRVUlTSVRFX0NPREUgXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUX1lFU19OT19UX1JFRl9UWVBFX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFU19DT05TVF9ZRVNfUElDS19WQUxVRSBcIiArXG4gICAgXCJTWVNSRVNfQ09OU1RfWUVTX1ZBTFVFIFwiO1xuXG4gIC8vIEJhc2UgY29uc3RhbnRcbiAgdmFyIGJhc2VfY29uc3RhbnRzID0gXCJDUiBGQUxTRSBuaWwgTk9fVkFMVUUgTlVMTCBUQUIgVFJVRSBZRVNfVkFMVUUgXCI7XG5cbiAgLy8gQmFzZSBncm91cCBuYW1lXG4gIHZhciBiYXNlX2dyb3VwX25hbWVfY29uc3RhbnRzID1cbiAgICBcIkFETUlOSVNUUkFUT1JTX0dST1VQX05BTUUgQ1VTVE9NSVpFUlNfR1JPVVBfTkFNRSBERVZFTE9QRVJTX0dST1VQX05BTUUgU0VSVklDRV9VU0VSU19HUk9VUF9OQU1FIFwiO1xuXG4gIC8vIERlY2lzaW9uIGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIGRlY2lzaW9uX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIkRFQ0lTSU9OX0JMT0NLX0ZJUlNUX09QRVJBTkRfUFJPUEVSVFkgREVDSVNJT05fQkxPQ0tfTkFNRV9QUk9QRVJUWSBERUNJU0lPTl9CTE9DS19PUEVSQVRJT05fUFJPUEVSVFkgXCIgK1xuICAgIFwiREVDSVNJT05fQkxPQ0tfUkVTVUxUX1RZUEVfUFJPUEVSVFkgREVDSVNJT05fQkxPQ0tfU0VDT05EX09QRVJBTkRfUFJPUEVSVFkgXCI7XG5cbiAgLy8gRmlsZSBleHRlbnNpb25cbiAgdmFyIGZpbGVfZXh0ZW5zaW9uX2NvbnN0YW50cyA9XG4gICAgXCJBTllfRklMRV9FWFRFTlRJT04gQ09NUFJFU1NFRF9ET0NVTUVOVF9FWFRFTlNJT04gRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OIFwiICtcbiAgICBcIlNIT1JUX0NPTVBSRVNTRURfRE9DVU1FTlRfRVhURU5TSU9OIFNIT1JUX0VYVEVOREVEX0RPQ1VNRU5UX0VYVEVOU0lPTiBcIjtcblxuICAvLyBKb2IgYmxvY2sgcHJvcGVydGllc1xuICB2YXIgam9iX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIkpPQl9CTE9DS19BQk9SVF9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfQUZURVJfRklOSVNIX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19BRlRFUl9RVUVSWV9QQVJBTUVURVJTX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19BVFRBQ0hNRU5UX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfR1JPVVBfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19CRUZPUkVfUVVFUllfUEFSQU1FVEVSU19FVkVOVCBcIiArXG4gICAgXCJKT0JfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIkpPQl9CTE9DS19DUkVBVEVEX0pPQlNfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19FWEVDVVRJT05fUkVTVUxUU19QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfSVNfUEFSQUxMRUxfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX0lTX1JFTEFUSVZFX0FCT1JUX0RFQURMSU5FX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJKT0JfQkxPQ0tfSk9CX1RFWFRfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX05FRURfU0lHTl9PTl9QRVJGT1JNX1BST1BFUlRZIFwiICtcbiAgICBcIkpPQl9CTE9DS19QRVJGT1JNRVJfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1JFTEFUSVZFX0FCT1JUX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiSk9CX0JMT0NLX1NVQkpFQ1RfUFJPUEVSVFkgXCI7XG5cbiAgLy8gTGFuZ3VhZ2UgY29kZVxuICB2YXIgbGFuZ3VhZ2VfY29kZV9jb25zdGFudHMgPSBcIkVOR0xJU0hfTEFOR1VBR0VfQ09ERSBSVVNTSUFOX0xBTkdVQUdFX0NPREUgXCI7XG5cbiAgLy8gTGF1bmNoaW5nIGV4dGVybmFsIGFwcGxpY2F0aW9uc1xuICB2YXIgbGF1bmNoaW5nX2V4dGVybmFsX2FwcGxpY2F0aW9uc19jb25zdGFudHMgPVxuICAgIFwic21IaWRkZW4gc21NYXhpbWl6ZWQgc21NaW5pbWl6ZWQgc21Ob3JtYWwgd21ObyB3bVllcyBcIjtcblxuICAvLyBMaW5rIGtpbmRcbiAgdmFyIGxpbmtfa2luZF9jb25zdGFudHMgPVxuICAgIFwiQ09NUE9ORU5UX1RPS0VOX0xJTktfS0lORCBcIiArXG4gICAgXCJET0NVTUVOVF9MSU5LX0tJTkQgXCIgK1xuICAgIFwiRURPQ1VNRU5UX0xJTktfS0lORCBcIiArXG4gICAgXCJGT0xERVJfTElOS19LSU5EIFwiICtcbiAgICBcIkpPQl9MSU5LX0tJTkQgXCIgK1xuICAgIFwiUkVGRVJFTkNFX0xJTktfS0lORCBcIiArXG4gICAgXCJUQVNLX0xJTktfS0lORCBcIjtcblxuICAvLyBMb2NrIHR5cGVcbiAgdmFyIGxvY2tfdHlwZV9jb25zdGFudHMgPVxuICAgIFwiQ09NUE9ORU5UX1RPS0VOX0xPQ0tfVFlQRSBFRE9DVU1FTlRfVkVSU0lPTl9MT0NLX1RZUEUgXCI7XG5cbiAgLy8gTW9uaXRvciBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBtb25pdG9yX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIk1PTklUT1JfQkxPQ0tfQUZURVJfRklOSVNIX0VWRU5UIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19JTlRFUlZBTF9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX0lOVEVSVkFMX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJNT05JVE9SX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTU9OSVRPUl9CTE9DS19SRUxBVElWRV9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIk1PTklUT1JfQkxPQ0tfU0VBUkNIX1NDUklQVF9QUk9QRVJUWSBcIjtcblxuICAvLyBOb3RpY2UgYmxvY2sgcHJvcGVydGllc1xuICB2YXIgbm90aWNlX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIk5PVElDRV9CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0FUVEFDSE1FTlRfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0FUVEFDSE1FTlRTX1JJR0hUU19HUk9VUF9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQVRUQUNITUVOVFNfUklHSFRTX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX0JFRk9SRV9TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfQ1JFQVRFRF9OT1RJQ0VTX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJOT1RJQ0VfQkxPQ0tfSVNfUkVMQVRJVkVfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX05PVElDRV9URVhUX1BST1BFUlRZIFwiICtcbiAgICBcIk5PVElDRV9CTE9DS19QRVJGT1JNRVJfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX1JFTEFUSVZFX0RFQURMSU5FX1RZUEVfUFJPUEVSVFkgXCIgK1xuICAgIFwiTk9USUNFX0JMT0NLX1NVQkpFQ1RfUFJPUEVSVFkgXCI7XG5cbiAgLy8gT2JqZWN0IGV2ZW50c1xuICB2YXIgb2JqZWN0X2V2ZW50c19jb25zdGFudHMgPVxuICAgIFwiZHNlQWZ0ZXJDYW5jZWwgXCIgK1xuICAgIFwiZHNlQWZ0ZXJDbG9zZSBcIiArXG4gICAgXCJkc2VBZnRlckRlbGV0ZSBcIiArXG4gICAgXCJkc2VBZnRlckRlbGV0ZU91dE9mVHJhbnNhY3Rpb24gXCIgK1xuICAgIFwiZHNlQWZ0ZXJJbnNlcnQgXCIgK1xuICAgIFwiZHNlQWZ0ZXJPcGVuIFwiICtcbiAgICBcImRzZUFmdGVyU2Nyb2xsIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlIFwiICtcbiAgICBcImRzZUFmdGVyVXBkYXRlT3V0T2ZUcmFuc2FjdGlvbiBcIiArXG4gICAgXCJkc2VCZWZvcmVDYW5jZWwgXCIgK1xuICAgIFwiZHNlQmVmb3JlQ2xvc2UgXCIgK1xuICAgIFwiZHNlQmVmb3JlRGVsZXRlIFwiICtcbiAgICBcImRzZUJlZm9yZURldGFpbFVwZGF0ZSBcIiArXG4gICAgXCJkc2VCZWZvcmVJbnNlcnQgXCIgK1xuICAgIFwiZHNlQmVmb3JlT3BlbiBcIiArXG4gICAgXCJkc2VCZWZvcmVVcGRhdGUgXCIgK1xuICAgIFwiZHNlT25BbnlSZXF1aXNpdGVDaGFuZ2UgXCIgK1xuICAgIFwiZHNlT25DbG9zZVJlY29yZCBcIiArXG4gICAgXCJkc2VPbkRlbGV0ZUVycm9yIFwiICtcbiAgICBcImRzZU9uT3BlblJlY29yZCBcIiArXG4gICAgXCJkc2VPblByZXBhcmVVcGRhdGUgXCIgK1xuICAgIFwiZHNlT25VcGRhdGVFcnJvciBcIiArXG4gICAgXCJkc2VPblVwZGF0ZVJhdGlmaWVkUmVjb3JkIFwiICtcbiAgICBcImRzZU9uVmFsaWREZWxldGUgXCIgK1xuICAgIFwiZHNlT25WYWxpZFVwZGF0ZSBcIiArXG4gICAgXCJyZU9uQ2hhbmdlIFwiICtcbiAgICBcInJlT25DaGFuZ2VWYWx1ZXMgXCIgK1xuICAgIFwiU0VMRUNUSU9OX0JFR0lOX1JPVVRFX0VWRU5UIFwiICtcbiAgICBcIlNFTEVDVElPTl9FTkRfUk9VVEVfRVZFTlQgXCI7XG5cbiAgLy8gT2JqZWN0IHBhcmFtc1xuICB2YXIgb2JqZWN0X3BhcmFtc19jb25zdGFudHMgPVxuICAgIFwiQ1VSUkVOVF9QRVJJT0RfSVNfUkVRVUlSRUQgXCIgK1xuICAgIFwiUFJFVklPVVNfQ0FSRF9UWVBFX05BTUUgXCIgK1xuICAgIFwiU0hPV19SRUNPUkRfUFJPUEVSVElFU19GT1JNIFwiO1xuXG4gIC8vIE90aGVyXG4gIHZhciBvdGhlcl9jb25zdGFudHMgPVxuICAgIFwiQUNDRVNTX1JJR0hUU19TRVRUSU5HX0RJQUxPR19DT0RFIFwiICtcbiAgICBcIkFETUlOSVNUUkFUT1JfVVNFUl9DT0RFIFwiICtcbiAgICBcIkFOQUxZVElDX1JFUE9SVF9UWVBFIFwiICtcbiAgICBcImFzcnRIaWRlTG9jYWwgXCIgK1xuICAgIFwiYXNydEhpZGVSZW1vdGUgXCIgK1xuICAgIFwiQ0FMQ1VMQVRFRF9ST0xFX1RZUEVfQ09ERSBcIiArXG4gICAgXCJDT01QT05FTlRTX1JFRkVSRU5DRV9ERVZFTE9QRVJfVklFV19DT0RFIFwiICtcbiAgICBcIkRDVFNfVEVTVF9QUk9UT0NPTFNfRk9MREVSX1BBVEggXCIgK1xuICAgIFwiRV9FRE9DX1ZFUlNJT05fQUxSRUFEWV9BUFBST1ZJTkdMWV9TSUdORUQgXCIgK1xuICAgIFwiRV9FRE9DX1ZFUlNJT05fQUxSRUFEWV9BUFBST1ZJTkdMWV9TSUdORURfQllfVVNFUiBcIiArXG4gICAgXCJFX0VET0NfVkVSU0lPTl9BTFJFRFlfU0lHTkVEIFwiICtcbiAgICBcIkVfRURPQ19WRVJTSU9OX0FMUkVEWV9TSUdORURfQllfVVNFUiBcIiArXG4gICAgXCJFRE9DX1RZUEVTX0NPREVfUkVRVUlTSVRFX0ZJRUxEX05BTUUgXCIgK1xuICAgIFwiRURPQ1VNRU5UU19BTElBU19OQU1FIFwiICtcbiAgICBcIkZJTEVTX0ZPTERFUl9QQVRIIFwiICtcbiAgICBcIkZJTFRFUl9PUEVSQU5EU19ERUxJTUlURVIgXCIgK1xuICAgIFwiRklMVEVSX09QRVJBVElPTlNfREVMSU1JVEVSIFwiICtcbiAgICBcIkZPUk1DQVJEX05BTUUgXCIgK1xuICAgIFwiRk9STUxJU1RfTkFNRSBcIiArXG4gICAgXCJHRVRfRVhURU5ERURfRE9DVU1FTlRfRVhURU5TSU9OX0NSRUFUSU9OX01PREUgXCIgK1xuICAgIFwiR0VUX0VYVEVOREVEX0RPQ1VNRU5UX0VYVEVOU0lPTl9JTVBPUlRfTU9ERSBcIiArXG4gICAgXCJJTlRFR1JBVEVEX1JFUE9SVF9UWVBFIFwiICtcbiAgICBcIklTX0JVSUxERVJfQVBQTElDQVRJT05fUk9MRSBcIiArXG4gICAgXCJJU19CVUlMREVSX0FQUExJQ0FUSU9OX1JPTEUyIFwiICtcbiAgICBcIklTX0JVSUxERVJfVVNFUlMgXCIgK1xuICAgIFwiSVNCU1lTREVWIFwiICtcbiAgICBcIkxPR19GT0xERVJfUEFUSCBcIiArXG4gICAgXCJtYkNhbmNlbCBcIiArXG4gICAgXCJtYk5vIFwiICtcbiAgICBcIm1iTm9Ub0FsbCBcIiArXG4gICAgXCJtYk9LIFwiICtcbiAgICBcIm1iWWVzIFwiICtcbiAgICBcIm1iWWVzVG9BbGwgXCIgK1xuICAgIFwiTUVNT1JZX0RBVEFTRVRfREVTUklQVElPTlNfRklMRU5BTUUgXCIgK1xuICAgIFwibXJObyBcIiArXG4gICAgXCJtck5vVG9BbGwgXCIgK1xuICAgIFwibXJZZXMgXCIgK1xuICAgIFwibXJZZXNUb0FsbCBcIiArXG4gICAgXCJNVUxUSVBMRV9TRUxFQ1RfRElBTE9HX0NPREUgXCIgK1xuICAgIFwiTk9OT1BFUkFUSU5HX1JFQ09SRF9GTEFHX0ZFTUlOSU5FIFwiICtcbiAgICBcIk5PTk9QRVJBVElOR19SRUNPUkRfRkxBR19NQVNDVUxJTkUgXCIgK1xuICAgIFwiT1BFUkFUSU5HX1JFQ09SRF9GTEFHX0ZFTUlOSU5FIFwiICtcbiAgICBcIk9QRVJBVElOR19SRUNPUkRfRkxBR19NQVNDVUxJTkUgXCIgK1xuICAgIFwiUFJPRklMSU5HX1NFVFRJTkdTX0NPTU1PTl9TRVRUSU5HU19DT0RFX1ZBTFVFIFwiICtcbiAgICBcIlBST0dSQU1fSU5JVElBVEVEX0xPT0tVUF9BQ1RJT04gXCIgK1xuICAgIFwicmF0RGVsZXRlIFwiICtcbiAgICBcInJhdEVkaXQgXCIgK1xuICAgIFwicmF0SW5zZXJ0IFwiICtcbiAgICBcIlJFUE9SVF9UWVBFIFwiICtcbiAgICBcIlJFUVVJUkVEX1BJQ0tfVkFMVUVTX1ZBUklBQkxFIFwiICtcbiAgICBcInJtQ2FyZCBcIiArXG4gICAgXCJybUxpc3QgXCIgK1xuICAgIFwiU0JSVEVfUFJPR0lEX0RFViBcIiArXG4gICAgXCJTQlJURV9QUk9HSURfUkVMRUFTRSBcIiArXG4gICAgXCJTVEFUSUNfUk9MRV9UWVBFX0NPREUgXCIgK1xuICAgIFwiU1VQUFJFU1NfRU1QVFlfVEVNUExBVEVfQ1JFQVRJT04gXCIgK1xuICAgIFwiU1lTVEVNX1VTRVJfQ09ERSBcIiArXG4gICAgXCJVUERBVEVfRElBTE9HX0RBVEFTRVQgXCIgK1xuICAgIFwiVVNFRF9JTl9PQkpFQ1RfSElOVF9QQVJBTSBcIiArXG4gICAgXCJVU0VSX0lOSVRJQVRFRF9MT09LVVBfQUNUSU9OIFwiICtcbiAgICBcIlVTRVJfTkFNRV9GT1JNQVQgXCIgK1xuICAgIFwiVVNFUl9TRUxFQ1RJT05fUkVTVFJJQ1RJT05TIFwiICtcbiAgICBcIldPUktGTE9XX1RFU1RfUFJPVE9DT0xTX0ZPTERFUl9QQVRIIFwiICtcbiAgICBcIkVMU19TVUJUWVBFX0NPTlRST0xfTkFNRSBcIiArXG4gICAgXCJFTFNfRk9MREVSX0tJTkRfQ09OVFJPTF9OQU1FIFwiICtcbiAgICBcIlJFUEVBVF9QUk9DRVNTX0NVUlJFTlRfT0JKRUNUX0VYQ0VQVElPTl9OQU1FIFwiO1xuXG4gIC8vIFByaXZpbGVnZXNcbiAgdmFyIHByaXZpbGVnZXNfY29uc3RhbnRzID1cbiAgICBcIlBSSVZJTEVHRV9DT01QT05FTlRfRlVMTF9BQ0NFU1MgXCIgK1xuICAgIFwiUFJJVklMRUdFX0RFVkVMT1BNRU5UX0VYUE9SVCBcIiArXG4gICAgXCJQUklWSUxFR0VfREVWRUxPUE1FTlRfSU1QT1JUIFwiICtcbiAgICBcIlBSSVZJTEVHRV9ET0NVTUVOVF9ERUxFVEUgXCIgK1xuICAgIFwiUFJJVklMRUdFX0VTRCBcIiArXG4gICAgXCJQUklWSUxFR0VfRk9MREVSX0RFTEVURSBcIiArXG4gICAgXCJQUklWSUxFR0VfTUFOQUdFX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiUFJJVklMRUdFX01BTkFHRV9SRVBMSUNBVElPTiBcIiArXG4gICAgXCJQUklWSUxFR0VfTUFOQUdFX1NFU1NJT05fU0VSVkVSIFwiICtcbiAgICBcIlBSSVZJTEVHRV9PQkpFQ1RfRlVMTF9BQ0NFU1MgXCIgK1xuICAgIFwiUFJJVklMRUdFX09CSkVDVF9WSUVXIFwiICtcbiAgICBcIlBSSVZJTEVHRV9SRVNFUlZFX0xJQ0VOU0UgXCIgK1xuICAgIFwiUFJJVklMRUdFX1NZU1RFTV9DVVNUT01JWkUgXCIgK1xuICAgIFwiUFJJVklMRUdFX1NZU1RFTV9ERVZFTE9QIFwiICtcbiAgICBcIlBSSVZJTEVHRV9TWVNURU1fSU5TVEFMTCBcIiArXG4gICAgXCJQUklWSUxFR0VfVEFTS19ERUxFVEUgXCIgK1xuICAgIFwiUFJJVklMRUdFX1VTRVJfUExVR0lOX1NFVFRJTkdTX0NVU1RPTUlaRSBcIiArXG4gICAgXCJQUklWSUxFR0VTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiO1xuXG4gIC8vIFBzZXVkb3JlZmVyZW5jZSBjb2RlXG4gIHZhciBwc2V1ZG9yZWZlcmVuY2VfY29kZV9jb25zdGFudHMgPVxuICAgIFwiQUNDRVNTX1RZUEVTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkFMTF9BVkFJTEFCTEVfQ09NUE9ORU5UU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJBTExfQVZBSUxBQkxFX1BSSVZJTEVHRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQUxMX1JFUExJQ0FURV9DT01QT05FTlRTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkFWQUlMQUJMRV9ERVZFTE9QRVJTX0NPTVBPTkVOVFNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiQ09NUE9ORU5UU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJGSUxUUkFURVJfU0VUVElOR1NfQ09ORkxJQ1RTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIkdST1VQU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJSRUNFSVZFX1BST1RPQ09MX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlJFRkVSRU5DRV9SRVFVSVNJVEVfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVGRVJFTkNFX1JFUVVJU0lURVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVGVFlQRVNfUFNFVURPUkVGRVJFTkNFX0NPREUgXCIgK1xuICAgIFwiUkVQTElDQVRJT05fU0VBTkNFU19ESUFSWV9QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJTRU5EX1BST1RPQ09MX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNVQlNUSVRVVEVTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiICtcbiAgICBcIlNZU1RFTV9TRVRUSU5HU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJVTklUU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJVU0VSU19QU0VVRE9SRUZFUkVOQ0VfQ09ERSBcIiArXG4gICAgXCJWSUVXRVJTX1BTRVVET1JFRkVSRU5DRV9DT0RFIFwiO1xuXG4gIC8vIFJlcXVpc2l0ZSBJU0JDZXJ0aWZpY2F0ZVR5cGUgdmFsdWVzXG4gIHZhciByZXF1aXNpdGVfSVNCQ2VydGlmaWNhdGVUeXBlX3ZhbHVlc19jb25zdGFudHMgPVxuICAgIFwiQ0VSVElGSUNBVEVfVFlQRV9FTkNSWVBUIFwiICtcbiAgICBcIkNFUlRJRklDQVRFX1RZUEVfU0lHTiBcIiArXG4gICAgXCJDRVJUSUZJQ0FURV9UWVBFX1NJR05fQU5EX0VOQ1JZUFQgXCI7XG5cbiAgLy8gUmVxdWlzaXRlIElTQkVEb2NTdG9yYWdlVHlwZSB2YWx1ZXNcbiAgdmFyIHJlcXVpc2l0ZV9JU0JFRG9jU3RvcmFnZVR5cGVfdmFsdWVzX2NvbnN0YW50cyA9XG4gICAgXCJTVE9SQUdFX1RZUEVfRklMRSBcIiArXG4gICAgXCJTVE9SQUdFX1RZUEVfTkFTX0NJRlMgXCIgK1xuICAgIFwiU1RPUkFHRV9UWVBFX1NBUEVSSU9OIFwiICtcbiAgICBcIlNUT1JBR0VfVFlQRV9TUUxfU0VSVkVSIFwiO1xuXG4gIC8vIFJlcXVpc2l0ZSBDb21wVHlwZTIgdmFsdWVzXG4gIHZhciByZXF1aXNpdGVfY29tcFR5cGUyX3ZhbHVlc19jb25zdGFudHMgPVxuICAgIFwiQ09NUFRZUEUyX1JFUVVJU0lURV9ET0NVTUVOVFNfVkFMVUUgXCIgK1xuICAgIFwiQ09NUFRZUEUyX1JFUVVJU0lURV9UQVNLU19WQUxVRSBcIiArXG4gICAgXCJDT01QVFlQRTJfUkVRVUlTSVRFX0ZPTERFUlNfVkFMVUUgXCIgK1xuICAgIFwiQ09NUFRZUEUyX1JFUVVJU0lURV9SRUZFUkVOQ0VTX1ZBTFVFIFwiO1xuXG4gIC8vIFJlcXVpc2l0ZSBuYW1lXG4gIHZhciByZXF1aXNpdGVfbmFtZV9jb25zdGFudHMgPVxuICAgIFwiU1lTUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTVBUWVBFMiBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfQVZBSUxBQkxFX0ZPUl9XRUIgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0NPTU1PTl9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9DT05TVF9DT01NT05fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0ZJUk1fQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfQ09OU1RfRklSTV9TVEFUVVMgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX0ZJUk1fVkFMVUUgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlNUX1NFUlZFUl9TVEFUVVMgXCIgK1xuICAgIFwiU1lTUkVRX0NPTlRFTlRTIFwiICtcbiAgICBcIlNZU1JFUV9EQVRFX09QRU4gXCIgK1xuICAgIFwiU1lTUkVRX0RBVEVfQ0xPU0UgXCIgK1xuICAgIFwiU1lTUkVRX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRE9VQkxFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0FDQ0VTU19UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0FVVEhPUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19DUkVBVEVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0RFTEVHQVRFX1JJR0hUU19SRVFVSVNJVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FRElUT1IgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRU5DT0RFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfRU5DUllQVElPTl9QTFVHSU5fTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19FTkNSWVBUSU9OX1BMVUdJTl9WRVJTSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VYUE9SVF9EQVRFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0VYUE9SVEVSIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTElGRV9TVEFHRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX0xPQ0tFRF9GT1JfU0VSVkVSX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTU9ESUZJRUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19OT1RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1FVQUxJRklFRF9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TRVNTSU9OX0tFWSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TRVNTSU9OX0tFWV9FTkNSWVBUSU9OX1BMVUdJTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NFU1NJT05fS0VZX0VOQ1JZUFRJT05fUExVR0lOX1ZFUlNJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU0lHTkFUVVJFX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU0lHTkVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfQVJDSElWRV9TVE9SQUdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0NIRUNLX1JJR0hUUyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19DT01QVVRFUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX0VESVRfSU5fU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19FWEVDVVRJVkVfU1RPUkFHRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19GVU5DVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19JTklUSUFMSVpFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19TVE9SQUdFU19MT0NBTF9QQVRIIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX1NBUEVSSU9OX0RBVEFCQVNFX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0VBUkNIX0JZX1RFWFQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0VSVkVSX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfU1RPUkFHRVNfU0hBUkVEX1NPVVJDRV9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1NUT1JBR0VTX1RZUEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVEVYVF9NT0RJRklFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FDVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX0RFU0NSSVBUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX0RFU0NSSVBUSU9OX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfQUNUX09OX0VYRUNVVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfT05fRVhFQ1VURV9FWElTVFMgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9BQ1RfU0VDVElPTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX0FERF9QQVJBTVMgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfRVZFTlRfVEVYVCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX05BTUVfSU5fU0lOR1VMQVIgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9OQU1FX0lOX1NJTkdVTEFSX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX05VTUVSQVRJT05fTUVUSE9EIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUFNFVURPX1JFUVVJU0lURV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfREVTQ1JJUFRJT05fTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfSVNfTEVBRElORyBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9JU19SRVFVSVJFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19UWVBFX1JFUV9OVU1CRVIgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fQ0hBTkdFIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX09OX0NIQU5HRV9FWElTVFMgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9SRVFfT05fU0VMRUNUIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX09OX1NFTEVDVF9LSU5EIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1RZUEVfUkVRX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX0NPREUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX0lTX01BSU4gXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVFlQRV9WSUVXX05BTUVfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9BVVRIT1IgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9DUkMgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9EQVRBIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fRURJVE9SIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DX1ZFUlNJT05fRVhQT1JUX0RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9FWFBPUlRFUiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0hJRERFTiBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX0xJRkVfU1RBR0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9NT0RJRklFRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX05PVEUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9TSUdOQVRVUkVfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NJR05FRCBcIiArXG4gICAgXCJTWVNSRVFfRURPQ19WRVJTSU9OX1NJWkUgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9TT1VSQ0UgXCIgK1xuICAgIFwiU1lTUkVRX0VET0NfVkVSU0lPTl9URVhUX01PRElGSUVEIFwiICtcbiAgICBcIlNZU1JFUV9FRE9DS0lORF9ERUZBVUxUX1ZFUlNJT05fU1RBVEVfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfRk9MREVSX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfQ0FURUdPUlkgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfQ09NTUVOVCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19HUk9VUCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19HUk9VUF9DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX0dST1VQX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19IRUxQIFwiICtcbiAgICBcIlNZU1JFUV9GVU5DX1BBUkFNX0RFRl9WQUxVRSBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19QQVJBTV9JREVOVCBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19QQVJBTV9OVU1CRVIgXCIgK1xuICAgIFwiU1lTUkVRX0ZVTkNfUEFSQU1fVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfRlVOQ19URVhUIFwiICtcbiAgICBcIlNZU1JFUV9HUk9VUF9DQVRFR09SWSBcIiArXG4gICAgXCJTWVNSRVFfSUQgXCIgK1xuICAgIFwiU1lTUkVRX0xBU1RfVVBEQVRFIFwiICtcbiAgICBcIlNZU1JFUV9MRUFERVJfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFUV9MSU5FX05VTUJFUiBcIiArXG4gICAgXCJTWVNSRVFfTUFJTl9SRUNPUkRfSUQgXCIgK1xuICAgIFwiU1lTUkVRX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX05BTUVfTE9DQUxJWkVfSUQgXCIgK1xuICAgIFwiU1lTUkVRX05PVEUgXCIgK1xuICAgIFwiU1lTUkVRX09SSUdJTkFMX1JFQ09SRCBcIiArXG4gICAgXCJTWVNSRVFfT1VSX0ZJUk0gXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19CQVRDSF9MT0dJTkcgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19CQVRDSF9TSVpFIFwiICtcbiAgICBcIlNZU1JFUV9QUk9GSUxJTkdfU0VUVElOR1NfUFJPRklMSU5HX0VOQUJMRUQgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19TUUxfUFJPRklMSU5HX0VOQUJMRUQgXCIgK1xuICAgIFwiU1lTUkVRX1BST0ZJTElOR19TRVRUSU5HU19TVEFSVF9MT0dHRUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFQ09SRF9TVEFUVVMgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfRklFTERfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9GT1JNQVQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfR0VORVJBVEVEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX0xFTkdUSCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9QUkVDSVNJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9SRVFfU1RPUkVEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1RPS0VOUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1JFUV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfUkVRX1ZJRVcgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9BQ1RfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX09OX0VYRUNVVEUgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FDVF9PTl9FWEVDVVRFX0VYSVNUUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfQUNUX1NFQ1RJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0FERF9QQVJBTVMgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0NPTU1FTlQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX0NPTU1PTl9TRVRUSU5HUyBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfRElTUExBWV9SRVFVSVNJVEVfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfRVZFTlRfVEVYVCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfTUFJTl9MRUFESU5HX1JFRiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfTkFNRV9JTl9TSU5HVUxBUiBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfTkFNRV9JTl9TSU5HVUxBUl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfTkFNRV9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfTlVNRVJBVElPTl9NRVRIT0QgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9DT0RFIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9ERVNDUklQVElPTl9MT0NBTElaRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfUkVRX0lTX0NPTlRST0wgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9JU19GSUxURVIgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9JU19MRUFESU5HIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfSVNfUkVRVUlSRUQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9OVU1CRVIgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9DSEFOR0UgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9PTl9DSEFOR0VfRVhJU1RTIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfT05fU0VMRUNUIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9SRVFfT05fU0VMRUNUX0tJTkQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1JFUV9TRUNUSU9OIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX0NBUkQgXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfQ09ERSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19DT01NRU5UIFwiICtcbiAgICBcIlNZU1JFUV9SRUZfVFlQRV9WSUVXX0lTX01BSU4gXCIgK1xuICAgIFwiU1lTUkVRX1JFRl9UWVBFX1ZJRVdfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfUkVGX1RZUEVfVklFV19OQU1FX0xPQ0FMSVpFX0lEIFwiICtcbiAgICBcIlNZU1JFUV9SRUZFUkVOQ0VfVFlQRV9JRCBcIiArXG4gICAgXCJTWVNSRVFfU1RBVEUgXCIgK1xuICAgIFwiU1lTUkVRX1NUQVTQlSBcIiArXG4gICAgXCJTWVNSRVFfU1lTVEVNX1NFVFRJTkdTX1ZBTFVFIFwiICtcbiAgICBcIlNZU1JFUV9UWVBFIFwiICtcbiAgICBcIlNZU1JFUV9VTklUIFwiICtcbiAgICBcIlNZU1JFUV9VTklUX0lEIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSX0dST1VQU19HUk9VUF9GVUxMX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJfR1JPVVBTX0dST1VQX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJfR1JPVVBTX0dST1VQX1NFUlZFUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19BQ0NFU1NfUklHSFRTIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19BVVRIRU5USUNBVElPTiBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfQ0FURUdPUlkgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0NPTVBPTkVOVCBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfQ09NUE9ORU5UX1VTRVJfSVNfUFVCTElDIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19ET01BSU4gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0ZVTExfVVNFUl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19HUk9VUCBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfSVNfTUFJTl9TRVJWRVIgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX0xPR0lOIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19SRUZFUkVOQ0VfVVNFUl9JU19QVUJMSUMgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1NUQVRVUyBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9DRVJUSUZJQ0FURSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9DRVJUSUZJQ0FURV9JTkZPIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1BMVUdJTl9OQU1FIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1BMVUdJTl9WRVJTSU9OIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1NUQVRFIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0NFUlRJRklDQVRFX1NVQkpFQ1RfTkFNRSBcIiArXG4gICAgXCJTWVNSRVFfVVNFUlNfVVNFUl9DRVJUSUZJQ0FURV9USFVNQlBSSU5UIFwiICtcbiAgICBcIlNZU1JFUV9VU0VSU19VU0VSX0RFRkFVTFRfQ0VSVElGSUNBVEUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfREVTQ1JJUFRJT04gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfR0xPQkFMX05BTUUgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfTE9HSU4gXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfTUFJTl9TRVJWRVIgXCIgK1xuICAgIFwiU1lTUkVRX1VTRVJTX1VTRVJfVFlQRSBcIiArXG4gICAgXCJTWVNSRVFfV09SS19SVUxFU19GT0xERVJfSUQgXCI7XG5cbiAgLy8gUmVzdWx0XG4gIHZhciByZXN1bHRfY29uc3RhbnRzID0gXCJSRVNVTFRfVkFSX05BTUUgUkVTVUxUX1ZBUl9OQU1FX0VORyBcIjtcblxuICAvLyBSdWxlIGlkZW50aWZpY2F0aW9uXG4gIHZhciBydWxlX2lkZW50aWZpY2F0aW9uX2NvbnN0YW50cyA9XG4gICAgXCJBVVRPX05VTUVSQVRJT05fUlVMRV9JRCBcIiArXG4gICAgXCJDQU5UX0NIQU5HRV9JRF9SRVFVSVNJVEVfUlVMRV9JRCBcIiArXG4gICAgXCJDQU5UX0NIQU5HRV9PVVJGSVJNX1JFUVVJU0lURV9SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX0NIQU5HSU5HX1JFRkVSRU5DRV9SRUNPUkRfVVNFX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfQ09ERV9SRVFVSVNJVEVfUlVMRV9JRCBcIiArXG4gICAgXCJDSEVDS19ERUxFVElOR19SRUZFUkVOQ0VfUkVDT1JEX1VTRV9SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX0ZJTFRSQVRFUl9DSEFOR0VTX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVDT1JEX0lOVEVSVkFMX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVGRVJFTkNFX0lOVEVSVkFMX1JVTEVfSUQgXCIgK1xuICAgIFwiQ0hFQ0tfUkVRVUlSRURfREFUQV9GVUxMTkVTU19SVUxFX0lEIFwiICtcbiAgICBcIkNIRUNLX1JFUVVJUkVEX1JFUVVJU0lURVNfRlVMTE5FU1NfUlVMRV9JRCBcIiArXG4gICAgXCJNQUtFX1JFQ09SRF9VTlJBVElGSUVEX1JVTEVfSUQgXCIgK1xuICAgIFwiUkVTVE9SRV9BVVRPX05VTUVSQVRJT05fUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfRklSTV9DT05URVhUX0ZST01fUkVDT1JEX1JVTEVfSUQgXCIgK1xuICAgIFwiU0VUX0ZJUlNUX1JFQ09SRF9JTl9MSVNUX0ZPUk1fUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfSURTUFNfVkFMVUVfUlVMRV9JRCBcIiArXG4gICAgXCJTRVRfTkVYVF9DT0RFX1ZBTFVFX1JVTEVfSUQgXCIgK1xuICAgIFwiU0VUX09VUkZJUk1fQk9VTkRTX1JVTEVfSUQgXCIgK1xuICAgIFwiU0VUX09VUkZJUk1fUkVRVUlTSVRFX1JVTEVfSUQgXCI7XG5cbiAgLy8gU2NyaXB0IGJsb2NrIHByb3BlcnRpZXNcbiAgdmFyIHNjcmlwdF9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyA9XG4gICAgXCJTQ1JJUFRfQkxPQ0tfQUZURVJfRklOSVNIX0VWRU5UIFwiICtcbiAgICBcIlNDUklQVF9CTE9DS19CRUZPUkVfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiU0NSSVBUX0JMT0NLX0VYRUNVVElPTl9SRVNVTFRTX1BST1BFUlRZIFwiICtcbiAgICBcIlNDUklQVF9CTE9DS19OQU1FX1BST1BFUlRZIFwiICtcbiAgICBcIlNDUklQVF9CTE9DS19TQ1JJUFRfUFJPUEVSVFkgXCI7XG5cbiAgLy8gU3VidGFzayBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciBzdWJ0YXNrX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIlNVQlRBU0tfQkxPQ0tfQUJPUlRfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BRlRFUl9GSU5JU0hfRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BU1NJR05fUEFSQU1TX0VWRU5UIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfQVRUQUNITUVOVFNfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfR1JPVVBfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19BVFRBQ0hNRU5UU19SSUdIVFNfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0JFRk9SRV9TVEFSVF9FVkVOVCBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0NSRUFURURfVEFTS19QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0NSRUFUSU9OX0VWRU5UIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JTVBPUlRBTkNFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfSU5JVElBVE9SX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfSVNfUkVMQVRJVkVfQUJPUlRfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX0pPQlNfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19QQVJBTExFTF9ST1VURV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1BFUkZPUk1FUlNfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19SRUxBVElWRV9BQk9SVF9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfUkVMQVRJVkVfREVBRExJTkVfVFlQRV9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1JFUVVJUkVfU0lHTl9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1NUQU5EQVJEX1JPVVRFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfU1RBUlRfRVZFTlQgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19TVEVQX0NPTlRST0xfUFJPUEVSVFkgXCIgK1xuICAgIFwiU1VCVEFTS19CTE9DS19TVUJKRUNUX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVEFTS19DT05UUk9MX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVEVYVF9QUk9QRVJUWSBcIiArXG4gICAgXCJTVUJUQVNLX0JMT0NLX1VOTE9DS19BVFRBQ0hNRU5UU19PTl9TVE9QX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfVVNFX1NUQU5EQVJEX1JPVVRFX1BST1BFUlRZIFwiICtcbiAgICBcIlNVQlRBU0tfQkxPQ0tfV0FJVF9GT1JfVEFTS19DT01QTEVURV9QUk9QRVJUWSBcIjtcblxuICAvLyBTeXN0ZW0gY29tcG9uZW50XG4gIHZhciBzeXN0ZW1fY29tcG9uZW50X2NvbnN0YW50cyA9XG4gICAgXCJTWVNDT01QX0NPTlRST0xfSk9CUyBcIiArXG4gICAgXCJTWVNDT01QX0ZPTERFUlMgXCIgK1xuICAgIFwiU1lTQ09NUF9KT0JTIFwiICtcbiAgICBcIlNZU0NPTVBfTk9USUNFUyBcIiArXG4gICAgXCJTWVNDT01QX1RBU0tTIFwiO1xuXG4gIC8vIFN5c3RlbSBkaWFsb2dzXG4gIHZhciBzeXN0ZW1fZGlhbG9nc19jb25zdGFudHMgPVxuICAgIFwiU1lTRExHX0NSRUFURV9FRE9DVU1FTlQgXCIgK1xuICAgIFwiU1lTRExHX0NSRUFURV9FRE9DVU1FTlRfVkVSU0lPTiBcIiArXG4gICAgXCJTWVNETEdfQ1VSUkVOVF9QRVJJT0QgXCIgK1xuICAgIFwiU1lTRExHX0VESVRfRlVOQ1RJT05fSEVMUCBcIiArXG4gICAgXCJTWVNETEdfRURPQ1VNRU5UX0tJTkRTX0ZPUl9URU1QTEFURSBcIiArXG4gICAgXCJTWVNETEdfRVhQT1JUX01VTFRJUExFX0VET0NVTUVOVFMgXCIgK1xuICAgIFwiU1lTRExHX0VYUE9SVF9TSU5HTEVfRURPQ1VNRU5UIFwiICtcbiAgICBcIlNZU0RMR19JTVBPUlRfRURPQ1VNRU5UIFwiICtcbiAgICBcIlNZU0RMR19NVUxUSVBMRV9TRUxFQ1QgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX0FDQ0VTU19SSUdIVFMgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX0RFRkFVTFRfUklHSFRTIFwiICtcbiAgICBcIlNZU0RMR19TRVRVUF9GSUxURVJfQ09ORElUSU9OIFwiICtcbiAgICBcIlNZU0RMR19TRVRVUF9TSUdOX1JJR0hUUyBcIiArXG4gICAgXCJTWVNETEdfU0VUVVBfVEFTS19PQlNFUlZFUlMgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX1RBU0tfUk9VVEUgXCIgK1xuICAgIFwiU1lTRExHX1NFVFVQX1VTRVJTX0xJU1QgXCIgK1xuICAgIFwiU1lTRExHX1NJR05fRURPQ1VNRU5UIFwiICtcbiAgICBcIlNZU0RMR19TSUdOX01VTFRJUExFX0VET0NVTUVOVFMgXCI7XG5cbiAgLy8gU3lzdGVtIHJlZmVyZW5jZSBuYW1lc1xuICB2YXIgc3lzdGVtX3JlZmVyZW5jZV9uYW1lc19jb25zdGFudHMgPVxuICAgIFwiU1lTUkVGX0FDQ0VTU19SSUdIVFNfVFlQRVMgXCIgK1xuICAgIFwiU1lTUkVGX0FETUlOSVNUUkFUSU9OX0hJU1RPUlkgXCIgK1xuICAgIFwiU1lTUkVGX0FMTF9BVkFJTEFCTEVfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRUZfQUxMX0FWQUlMQUJMRV9QUklWSUxFR0VTIFwiICtcbiAgICBcIlNZU1JFRl9BTExfUkVQTElDQVRJTkdfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRUZfQVZBSUxBQkxFX0RFVkVMT1BFUlNfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRUZfQ0FMRU5EQVJfRVZFTlRTIFwiICtcbiAgICBcIlNZU1JFRl9DT01QT05FTlRfVE9LRU5fSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfQ09NUE9ORU5UX1RPS0VOUyBcIiArXG4gICAgXCJTWVNSRUZfQ09NUE9ORU5UUyBcIiArXG4gICAgXCJTWVNSRUZfQ09OU1RBTlRTIFwiICtcbiAgICBcIlNZU1JFRl9EQVRBX1JFQ0VJVkVfUFJPVE9DT0wgXCIgK1xuICAgIFwiU1lTUkVGX0RBVEFfU0VORF9QUk9UT0NPTCBcIiArXG4gICAgXCJTWVNSRUZfRElBTE9HUyBcIiArXG4gICAgXCJTWVNSRUZfRElBTE9HU19SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRElUT1JTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DX0NBUkRTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DX1RZUEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRF9SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRF9UWVBFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX0NBUkRfVFlQRVNfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfQ0FSRFMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfS0lORFMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9SRVFVSVNJVEVTIFwiICtcbiAgICBcIlNZU1JFRl9FRE9DVU1FTlRfU0lHTkFUVVJFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1RFTVBMQVRFUyBcIiArXG4gICAgXCJTWVNSRUZfRURPQ1VNRU5UX1RFWFRfU1RPUkFHRVMgXCIgK1xuICAgIFwiU1lTUkVGX0VET0NVTUVOVF9WSUVXUyBcIiArXG4gICAgXCJTWVNSRUZfRklMVEVSRVJfU0VUVVBfQ09ORkxJQ1RTIFwiICtcbiAgICBcIlNZU1JFRl9GSUxUUkFURVJfU0VUVElOR19DT05GTElDVFMgXCIgK1xuICAgIFwiU1lTUkVGX0ZPTERFUl9ISVNUT1JZIFwiICtcbiAgICBcIlNZU1JFRl9GT0xERVJTIFwiICtcbiAgICBcIlNZU1JFRl9GVU5DVElPTl9HUk9VUFMgXCIgK1xuICAgIFwiU1lTUkVGX0ZVTkNUSU9OX1BBUkFNUyBcIiArXG4gICAgXCJTWVNSRUZfRlVOQ1RJT05TIFwiICtcbiAgICBcIlNZU1JFRl9KT0JfSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfTElOS1MgXCIgK1xuICAgIFwiU1lTUkVGX0xPQ0FMSVpBVElPTl9ESUNUSU9OQVJZIFwiICtcbiAgICBcIlNZU1JFRl9MT0NBTElaQVRJT05fTEFOR1VBR0VTIFwiICtcbiAgICBcIlNZU1JFRl9NT0RVTEVTIFwiICtcbiAgICBcIlNZU1JFRl9QUklWSUxFR0VTIFwiICtcbiAgICBcIlNZU1JFRl9SRUNPUkRfSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfUkVGRVJFTkNFX1JFUVVJU0lURVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRV9UWVBFX1ZJRVdTIFwiICtcbiAgICBcIlNZU1JFRl9SRUZFUkVOQ0VfVFlQRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRVMgXCIgK1xuICAgIFwiU1lTUkVGX1JFRkVSRU5DRVNfUkVRVUlTSVRFUyBcIiArXG4gICAgXCJTWVNSRUZfUkVNT1RFX1NFUlZFUlMgXCIgK1xuICAgIFwiU1lTUkVGX1JFUExJQ0FUSU9OX1NFU1NJT05TX0xPRyBcIiArXG4gICAgXCJTWVNSRUZfUkVQTElDQVRJT05fU0VTU0lPTlNfUFJPVE9DT0wgXCIgK1xuICAgIFwiU1lTUkVGX1JFUE9SVFMgXCIgK1xuICAgIFwiU1lTUkVGX1JPTEVTIFwiICtcbiAgICBcIlNZU1JFRl9ST1VURV9CTE9DS19HUk9VUFMgXCIgK1xuICAgIFwiU1lTUkVGX1JPVVRFX0JMT0NLUyBcIiArXG4gICAgXCJTWVNSRUZfU0NSSVBUUyBcIiArXG4gICAgXCJTWVNSRUZfU0VBUkNIRVMgXCIgK1xuICAgIFwiU1lTUkVGX1NFUlZFUl9FVkVOVFMgXCIgK1xuICAgIFwiU1lTUkVGX1NFUlZFUl9FVkVOVFNfSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfU1RBTkRBUkRfUk9VVEVfR1JPVVBTIFwiICtcbiAgICBcIlNZU1JFRl9TVEFOREFSRF9ST1VURVMgXCIgK1xuICAgIFwiU1lTUkVGX1NUQVRVU0VTIFwiICtcbiAgICBcIlNZU1JFRl9TWVNURU1fU0VUVElOR1MgXCIgK1xuICAgIFwiU1lTUkVGX1RBU0tfSElTVE9SWSBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19LSU5EX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19LSU5EUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS19SSUdIVFMgXCIgK1xuICAgIFwiU1lTUkVGX1RBU0tfU0lHTkFUVVJFUyBcIiArXG4gICAgXCJTWVNSRUZfVEFTS1MgXCIgK1xuICAgIFwiU1lTUkVGX1VOSVRTIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSX0dST1VQUyBcIiArXG4gICAgXCJTWVNSRUZfVVNFUl9HUk9VUFNfUkVGRVJFTkNFIFwiICtcbiAgICBcIlNZU1JFRl9VU0VSX1NVQlNUSVRVVElPTiBcIiArXG4gICAgXCJTWVNSRUZfVVNFUlMgXCIgK1xuICAgIFwiU1lTUkVGX1VTRVJTX1JFRkVSRU5DRSBcIiArXG4gICAgXCJTWVNSRUZfVklFV0VSUyBcIiArXG4gICAgXCJTWVNSRUZfV09SS0lOR19USU1FX0NBTEVOREFSUyBcIjtcblxuICAvLyBUYWJsZSBuYW1lXG4gIHZhciB0YWJsZV9uYW1lX2NvbnN0YW50cyA9XG4gICAgXCJBQ0NFU1NfUklHSFRTX1RBQkxFX05BTUUgXCIgK1xuICAgIFwiRURNU19BQ0NFU1NfVEFCTEVfTkFNRSBcIiArXG4gICAgXCJFRE9DX1RZUEVTX1RBQkxFX05BTUUgXCI7XG5cbiAgLy8gVGVzdFxuICB2YXIgdGVzdF9jb25zdGFudHMgPVxuICAgIFwiVEVTVF9ERVZfREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0RFVl9TWVNURU1fQ09ERSBcIiArXG4gICAgXCJURVNUX0VETVNfREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0VETVNfTUFJTl9DT0RFIFwiICtcbiAgICBcIlRFU1RfRURNU19NQUlOX0RCX05BTUUgXCIgK1xuICAgIFwiVEVTVF9FRE1TX1NFQ09ORF9DT0RFIFwiICtcbiAgICBcIlRFU1RfRURNU19TRUNPTkRfREJfTkFNRSBcIiArXG4gICAgXCJURVNUX0VETVNfU1lTVEVNX0NPREUgXCIgK1xuICAgIFwiVEVTVF9JU0I1X01BSU5fQ09ERSBcIiArXG4gICAgXCJURVNUX0lTQjVfU0VDT05EX0NPREUgXCIgK1xuICAgIFwiVEVTVF9TUUxfU0VSVkVSXzIwMDVfTkFNRSBcIiArXG4gICAgXCJURVNUX1NRTF9TRVJWRVJfTkFNRSBcIjtcblxuICAvLyBVc2luZyB0aGUgZGlhbG9nIHdpbmRvd3NcbiAgdmFyIHVzaW5nX3RoZV9kaWFsb2dfd2luZG93c19jb25zdGFudHMgPVxuICAgIFwiQVRURU5USU9OX0NBUFRJT04gXCIgK1xuICAgIFwiY2JzQ29tbWFuZExpbmtzIFwiICtcbiAgICBcImNic0RlZmF1bHQgXCIgK1xuICAgIFwiQ09ORklSTUFUSU9OX0NBUFRJT04gXCIgK1xuICAgIFwiRVJST1JfQ0FQVElPTiBcIiArXG4gICAgXCJJTkZPUk1BVElPTl9DQVBUSU9OIFwiICtcbiAgICBcIm1yQ2FuY2VsIFwiICtcbiAgICBcIm1yT2sgXCI7XG5cbiAgLy8gVXNpbmcgdGhlIGRvY3VtZW50XG4gIHZhciB1c2luZ190aGVfZG9jdW1lbnRfY29uc3RhbnRzID1cbiAgICBcIkVET0NfVkVSU0lPTl9BQ1RJVkVfU1RBR0VfQ09ERSBcIiArXG4gICAgXCJFRE9DX1ZFUlNJT05fREVTSUdOX1NUQUdFX0NPREUgXCIgK1xuICAgIFwiRURPQ19WRVJTSU9OX09CU09MRVRFX1NUQUdFX0NPREUgXCI7XG5cbiAgLy8gVXNpbmcgdGhlIEVBIGFuZCBlbmNyeXB0aW9uXG4gIHZhciB1c2luZ190aGVfRUFfYW5kX2VuY3J5cHRpb25fY29uc3RhbnRzID1cbiAgICBcImNwRGF0YUVuY2lwaGVybWVudEVuYWJsZWQgXCIgK1xuICAgIFwiY3BEaWdpdGFsU2lnbmF0dXJlRW5hYmxlZCBcIiArXG4gICAgXCJjcElEIFwiICtcbiAgICBcImNwSXNzdWVyIFwiICtcbiAgICBcImNwUGx1Z2luVmVyc2lvbiBcIiArXG4gICAgXCJjcFNlcmlhbCBcIiArXG4gICAgXCJjcFN1YmplY3ROYW1lIFwiICtcbiAgICBcImNwU3VialNpbXBsZU5hbWUgXCIgK1xuICAgIFwiY3BWYWxpZEZyb21EYXRlIFwiICtcbiAgICBcImNwVmFsaWRUb0RhdGUgXCI7XG5cbiAgLy8gVXNpbmcgdGhlIElTQkwtZWRpdG9yXG4gIHZhciB1c2luZ190aGVfSVNCTF9lZGl0b3JfY29uc3RhbnRzID1cbiAgICBcIklTQkxfU1lOVEFYIFwiICsgXCJOT19TWU5UQVggXCIgKyBcIlhNTF9TWU5UQVggXCI7XG5cbiAgLy8gV2FpdCBibG9jayBwcm9wZXJ0aWVzXG4gIHZhciB3YWl0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzID1cbiAgICBcIldBSVRfQkxPQ0tfQUZURVJfRklOSVNIX0VWRU5UIFwiICtcbiAgICBcIldBSVRfQkxPQ0tfQkVGT1JFX1NUQVJUX0VWRU5UIFwiICtcbiAgICBcIldBSVRfQkxPQ0tfREVBRExJTkVfUFJPUEVSVFkgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19JU19SRUxBVElWRV9ERUFETElORV9QUk9QRVJUWSBcIiArXG4gICAgXCJXQUlUX0JMT0NLX05BTUVfUFJPUEVSVFkgXCIgK1xuICAgIFwiV0FJVF9CTE9DS19SRUxBVElWRV9ERUFETElORV9UWVBFX1BST1BFUlRZIFwiO1xuXG4gIC8vIFNZU1JFUyBDb21tb25cbiAgdmFyIHN5c3Jlc19jb21tb25fY29uc3RhbnRzID1cbiAgICBcIlNZU1JFU19DT01NT04gXCIgK1xuICAgIFwiU1lTUkVTX0NPTlNUIFwiICtcbiAgICBcIlNZU1JFU19NQkZVTkMgXCIgK1xuICAgIFwiU1lTUkVTX1NCREFUQSBcIiArXG4gICAgXCJTWVNSRVNfU0JHVUkgXCIgK1xuICAgIFwiU1lTUkVTX1NCSU5URiBcIiArXG4gICAgXCJTWVNSRVNfU0JSRUZEU0MgXCIgK1xuICAgIFwiU1lTUkVTX1NRTEVSUk9SUyBcIiArXG4gICAgXCJTWVNSRVNfU1lTQ09NUCBcIjtcblxuICAvLyDQmtC+0L3RgdGC0LDQvdGC0YsgPT0+IGJ1aWx0X2luXG4gIHZhciBDT05TVEFOVFMgPVxuICAgIHN5c3Jlc19jb25zdGFudHMgK1xuICAgIGJhc2VfY29uc3RhbnRzICtcbiAgICBiYXNlX2dyb3VwX25hbWVfY29uc3RhbnRzICtcbiAgICBkZWNpc2lvbl9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyArXG4gICAgZmlsZV9leHRlbnNpb25fY29uc3RhbnRzICtcbiAgICBqb2JfYmxvY2tfcHJvcGVydGllc19jb25zdGFudHMgK1xuICAgIGxhbmd1YWdlX2NvZGVfY29uc3RhbnRzICtcbiAgICBsYXVuY2hpbmdfZXh0ZXJuYWxfYXBwbGljYXRpb25zX2NvbnN0YW50cyArXG4gICAgbGlua19raW5kX2NvbnN0YW50cyArXG4gICAgbG9ja190eXBlX2NvbnN0YW50cyArXG4gICAgbW9uaXRvcl9ibG9ja19wcm9wZXJ0aWVzX2NvbnN0YW50cyArXG4gICAgbm90aWNlX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBvYmplY3RfZXZlbnRzX2NvbnN0YW50cyArXG4gICAgb2JqZWN0X3BhcmFtc19jb25zdGFudHMgK1xuICAgIG90aGVyX2NvbnN0YW50cyArXG4gICAgcHJpdmlsZWdlc19jb25zdGFudHMgK1xuICAgIHBzZXVkb3JlZmVyZW5jZV9jb2RlX2NvbnN0YW50cyArXG4gICAgcmVxdWlzaXRlX0lTQkNlcnRpZmljYXRlVHlwZV92YWx1ZXNfY29uc3RhbnRzICtcbiAgICByZXF1aXNpdGVfSVNCRURvY1N0b3JhZ2VUeXBlX3ZhbHVlc19jb25zdGFudHMgK1xuICAgIHJlcXVpc2l0ZV9jb21wVHlwZTJfdmFsdWVzX2NvbnN0YW50cyArXG4gICAgcmVxdWlzaXRlX25hbWVfY29uc3RhbnRzICtcbiAgICByZXN1bHRfY29uc3RhbnRzICtcbiAgICBydWxlX2lkZW50aWZpY2F0aW9uX2NvbnN0YW50cyArXG4gICAgc2NyaXB0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBzdWJ0YXNrX2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBzeXN0ZW1fY29tcG9uZW50X2NvbnN0YW50cyArXG4gICAgc3lzdGVtX2RpYWxvZ3NfY29uc3RhbnRzICtcbiAgICBzeXN0ZW1fcmVmZXJlbmNlX25hbWVzX2NvbnN0YW50cyArXG4gICAgdGFibGVfbmFtZV9jb25zdGFudHMgK1xuICAgIHRlc3RfY29uc3RhbnRzICtcbiAgICB1c2luZ190aGVfZGlhbG9nX3dpbmRvd3NfY29uc3RhbnRzICtcbiAgICB1c2luZ190aGVfZG9jdW1lbnRfY29uc3RhbnRzICtcbiAgICB1c2luZ190aGVfRUFfYW5kX2VuY3J5cHRpb25fY29uc3RhbnRzICtcbiAgICB1c2luZ190aGVfSVNCTF9lZGl0b3JfY29uc3RhbnRzICtcbiAgICB3YWl0X2Jsb2NrX3Byb3BlcnRpZXNfY29uc3RhbnRzICtcbiAgICBzeXNyZXNfY29tbW9uX2NvbnN0YW50cztcblxuICAvLyBlbnVtIFRBY2NvdW50VHlwZVxuICB2YXIgVEFjY291bnRUeXBlID0gXCJhdFVzZXIgYXRHcm91cCBhdFJvbGUgXCI7XG5cbiAgLy8gZW51bSBUQWN0aW9uRW5hYmxlZE1vZGVcbiAgdmFyIFRBY3Rpb25FbmFibGVkTW9kZSA9XG4gICAgXCJhZW1FbmFibGVkQWx3YXlzIFwiICtcbiAgICBcImFlbURpc2FibGVkQWx3YXlzIFwiICtcbiAgICBcImFlbUVuYWJsZWRPbkJyb3dzZSBcIiArXG4gICAgXCJhZW1FbmFibGVkT25FZGl0IFwiICtcbiAgICBcImFlbURpc2FibGVkT25Ccm93c2VFbXB0eSBcIjtcblxuICAvLyBlbnVtIFRBZGRQb3NpdGlvblxuICB2YXIgVEFkZFBvc2l0aW9uID0gXCJhcEJlZ2luIGFwRW5kIFwiO1xuXG4gIC8vIGVudW0gVEFsaWdubWVudFxuICB2YXIgVEFsaWdubWVudCA9IFwiYWxMZWZ0IGFsUmlnaHQgXCI7XG5cbiAgLy8gZW51bSBUQXJlYVNob3dNb2RlXG4gIHZhciBUQXJlYVNob3dNb2RlID1cbiAgICBcImFzbU5ldmVyIFwiICtcbiAgICBcImFzbU5vQnV0Q3VzdG9taXplIFwiICtcbiAgICBcImFzbUFzTGFzdFRpbWUgXCIgK1xuICAgIFwiYXNtWWVzQnV0Q3VzdG9taXplIFwiICtcbiAgICBcImFzbUFsd2F5cyBcIjtcblxuICAvLyBlbnVtIFRDZXJ0aWZpY2F0ZUludmFsaWRhdGlvblJlYXNvblxuICB2YXIgVENlcnRpZmljYXRlSW52YWxpZGF0aW9uUmVhc29uID0gXCJjaXJDb21tb24gY2lyUmV2b2tlZCBcIjtcblxuICAvLyBlbnVtIFRDZXJ0aWZpY2F0ZVR5cGVcbiAgdmFyIFRDZXJ0aWZpY2F0ZVR5cGUgPSBcImN0U2lnbmF0dXJlIGN0RW5jb2RlIGN0U2lnbmF0dXJlRW5jb2RlIFwiO1xuXG4gIC8vIGVudW0gVENoZWNrTGlzdEJveEl0ZW1TdGF0ZVxuICB2YXIgVENoZWNrTGlzdEJveEl0ZW1TdGF0ZSA9IFwiY2xiVW5jaGVja2VkIGNsYkNoZWNrZWQgY2xiR3JheWVkIFwiO1xuXG4gIC8vIGVudW0gVENsb3NlT25Fc2NcbiAgdmFyIFRDbG9zZU9uRXNjID0gXCJjZUlTQiBjZUFsd2F5cyBjZU5ldmVyIFwiO1xuXG4gIC8vIGVudW0gVENvbXBUeXBlXG4gIHZhciBUQ29tcFR5cGUgPVxuICAgIFwiY3REb2N1bWVudCBcIiArXG4gICAgXCJjdFJlZmVyZW5jZSBcIiArXG4gICAgXCJjdFNjcmlwdCBcIiArXG4gICAgXCJjdFVua25vd24gXCIgK1xuICAgIFwiY3RSZXBvcnQgXCIgK1xuICAgIFwiY3REaWFsb2cgXCIgK1xuICAgIFwiY3RGdW5jdGlvbiBcIiArXG4gICAgXCJjdEZvbGRlciBcIiArXG4gICAgXCJjdEVEb2N1bWVudCBcIiArXG4gICAgXCJjdFRhc2sgXCIgK1xuICAgIFwiY3RKb2IgXCIgK1xuICAgIFwiY3ROb3RpY2UgXCIgK1xuICAgIFwiY3RDb250cm9sSm9iIFwiO1xuXG4gIC8vIGVudW0gVENvbmRpdGlvbkZvcm1hdFxuICB2YXIgVENvbmRpdGlvbkZvcm1hdCA9IFwiY2ZJbnRlcm5hbCBjZkRpc3BsYXkgXCI7XG5cbiAgLy8gZW51bSBUQ29ubmVjdGlvbkludGVudFxuICB2YXIgVENvbm5lY3Rpb25JbnRlbnQgPSBcImNpVW5zcGVjaWZpZWQgY2lXcml0ZSBjaVJlYWQgXCI7XG5cbiAgLy8gZW51bSBUQ29udGVudEtpbmRcbiAgdmFyIFRDb250ZW50S2luZCA9XG4gICAgXCJja0ZvbGRlciBcIiArXG4gICAgXCJja0VEb2N1bWVudCBcIiArXG4gICAgXCJja1Rhc2sgXCIgK1xuICAgIFwiY2tKb2IgXCIgK1xuICAgIFwiY2tDb21wb25lbnRUb2tlbiBcIiArXG4gICAgXCJja0FueSBcIiArXG4gICAgXCJja1JlZmVyZW5jZSBcIiArXG4gICAgXCJja1NjcmlwdCBcIiArXG4gICAgXCJja1JlcG9ydCBcIiArXG4gICAgXCJja0RpYWxvZyBcIjtcblxuICAvLyBlbnVtIFRDb250cm9sVHlwZVxuICB2YXIgVENvbnRyb2xUeXBlID1cbiAgICBcImN0SVNCTEVkaXRvciBcIiArXG4gICAgXCJjdEJldmVsIFwiICtcbiAgICBcImN0QnV0dG9uIFwiICtcbiAgICBcImN0Q2hlY2tMaXN0Qm94IFwiICtcbiAgICBcImN0Q29tYm9Cb3ggXCIgK1xuICAgIFwiY3RDb21ib0VkaXQgXCIgK1xuICAgIFwiY3RHcmlkIFwiICtcbiAgICBcImN0REJDaGVja0JveCBcIiArXG4gICAgXCJjdERCQ29tYm9Cb3ggXCIgK1xuICAgIFwiY3REQkVkaXQgXCIgK1xuICAgIFwiY3REQkVsbGlwc2lzIFwiICtcbiAgICBcImN0REJNZW1vIFwiICtcbiAgICBcImN0REJOYXZpZ2F0b3IgXCIgK1xuICAgIFwiY3REQlJhZGlvR3JvdXAgXCIgK1xuICAgIFwiY3REQlN0YXR1c0xhYmVsIFwiICtcbiAgICBcImN0RWRpdCBcIiArXG4gICAgXCJjdEdyb3VwQm94IFwiICtcbiAgICBcImN0SW5wbGFjZUhpbnQgXCIgK1xuICAgIFwiY3RNZW1vIFwiICtcbiAgICBcImN0UGFuZWwgXCIgK1xuICAgIFwiY3RMaXN0Qm94IFwiICtcbiAgICBcImN0UmFkaW9CdXR0b24gXCIgK1xuICAgIFwiY3RSaWNoRWRpdCBcIiArXG4gICAgXCJjdFRhYlNoZWV0IFwiICtcbiAgICBcImN0V2ViQnJvd3NlciBcIiArXG4gICAgXCJjdEltYWdlIFwiICtcbiAgICBcImN0SHlwZXJMaW5rIFwiICtcbiAgICBcImN0TGFiZWwgXCIgK1xuICAgIFwiY3REQk11bHRpRWxsaXBzaXMgXCIgK1xuICAgIFwiY3RSaWJib24gXCIgK1xuICAgIFwiY3RSaWNoVmlldyBcIiArXG4gICAgXCJjdElubmVyUGFuZWwgXCIgK1xuICAgIFwiY3RQYW5lbEdyb3VwIFwiICtcbiAgICBcImN0Qml0QnV0dG9uIFwiO1xuXG4gIC8vIGVudW0gVENyaXRlcmlvbkNvbnRlbnRUeXBlXG4gIHZhciBUQ3JpdGVyaW9uQ29udGVudFR5cGUgPVxuICAgIFwiY2N0RGF0ZSBcIiArXG4gICAgXCJjY3RJbnRlZ2VyIFwiICtcbiAgICBcImNjdE51bWVyaWMgXCIgK1xuICAgIFwiY2N0UGljayBcIiArXG4gICAgXCJjY3RSZWZlcmVuY2UgXCIgK1xuICAgIFwiY2N0U3RyaW5nIFwiICtcbiAgICBcImNjdFRleHQgXCI7XG5cbiAgLy8gZW51bSBUQ3VsdHVyZVR5cGVcbiAgdmFyIFRDdWx0dXJlVHlwZSA9IFwiY2x0SW50ZXJuYWwgY2x0UHJpbWFyeSBjbHRHVUkgXCI7XG5cbiAgLy8gZW51bSBURGF0YVNldEV2ZW50VHlwZVxuICB2YXIgVERhdGFTZXRFdmVudFR5cGUgPVxuICAgIFwiZHNlQmVmb3JlT3BlbiBcIiArXG4gICAgXCJkc2VBZnRlck9wZW4gXCIgK1xuICAgIFwiZHNlQmVmb3JlQ2xvc2UgXCIgK1xuICAgIFwiZHNlQWZ0ZXJDbG9zZSBcIiArXG4gICAgXCJkc2VPblZhbGlkRGVsZXRlIFwiICtcbiAgICBcImRzZUJlZm9yZURlbGV0ZSBcIiArXG4gICAgXCJkc2VBZnRlckRlbGV0ZSBcIiArXG4gICAgXCJkc2VBZnRlckRlbGV0ZU91dE9mVHJhbnNhY3Rpb24gXCIgK1xuICAgIFwiZHNlT25EZWxldGVFcnJvciBcIiArXG4gICAgXCJkc2VCZWZvcmVJbnNlcnQgXCIgK1xuICAgIFwiZHNlQWZ0ZXJJbnNlcnQgXCIgK1xuICAgIFwiZHNlT25WYWxpZFVwZGF0ZSBcIiArXG4gICAgXCJkc2VCZWZvcmVVcGRhdGUgXCIgK1xuICAgIFwiZHNlT25VcGRhdGVSYXRpZmllZFJlY29yZCBcIiArXG4gICAgXCJkc2VBZnRlclVwZGF0ZSBcIiArXG4gICAgXCJkc2VBZnRlclVwZGF0ZU91dE9mVHJhbnNhY3Rpb24gXCIgK1xuICAgIFwiZHNlT25VcGRhdGVFcnJvciBcIiArXG4gICAgXCJkc2VBZnRlclNjcm9sbCBcIiArXG4gICAgXCJkc2VPbk9wZW5SZWNvcmQgXCIgK1xuICAgIFwiZHNlT25DbG9zZVJlY29yZCBcIiArXG4gICAgXCJkc2VCZWZvcmVDYW5jZWwgXCIgK1xuICAgIFwiZHNlQWZ0ZXJDYW5jZWwgXCIgK1xuICAgIFwiZHNlT25VcGRhdGVEZWFkbG9ja0Vycm9yIFwiICtcbiAgICBcImRzZUJlZm9yZURldGFpbFVwZGF0ZSBcIiArXG4gICAgXCJkc2VPblByZXBhcmVVcGRhdGUgXCIgK1xuICAgIFwiZHNlT25BbnlSZXF1aXNpdGVDaGFuZ2UgXCI7XG5cbiAgLy8gZW51bSBURGF0YVNldFN0YXRlXG4gIHZhciBURGF0YVNldFN0YXRlID0gXCJkc3NFZGl0IGRzc0luc2VydCBkc3NCcm93c2UgZHNzSW5BY3RpdmUgXCI7XG5cbiAgLy8gZW51bSBURGF0ZUZvcm1hdFR5cGVcbiAgdmFyIFREYXRlRm9ybWF0VHlwZSA9IFwiZGZ0RGF0ZSBkZnRTaG9ydERhdGUgZGZ0RGF0ZVRpbWUgZGZ0VGltZVN0YW1wIFwiO1xuXG4gIC8vIGVudW0gVERhdGVPZmZzZXRUeXBlXG4gIHZhciBURGF0ZU9mZnNldFR5cGUgPSBcImRvdERheXMgZG90SG91cnMgZG90TWludXRlcyBkb3RTZWNvbmRzIFwiO1xuXG4gIC8vIGVudW0gVERhdGVUaW1lS2luZFxuICB2YXIgVERhdGVUaW1lS2luZCA9IFwiZHRrbmRMb2NhbCBkdGtuZFVUQyBcIjtcblxuICAvLyBlbnVtIFREZWFBY2Nlc3NSaWdodHNcbiAgdmFyIFREZWFBY2Nlc3NSaWdodHMgPSBcImFyTm9uZSBhclZpZXcgYXJFZGl0IGFyRnVsbCBcIjtcblxuICAvLyBlbnVtIFREb2N1bWVudERlZmF1bHRBY3Rpb25cbiAgdmFyIFREb2N1bWVudERlZmF1bHRBY3Rpb24gPSBcImRkYVZpZXcgZGRhRWRpdCBcIjtcblxuICAvLyBlbnVtIFRFZGl0TW9kZVxuICB2YXIgVEVkaXRNb2RlID1cbiAgICBcImVtTG9jayBcIiArXG4gICAgXCJlbUVkaXQgXCIgK1xuICAgIFwiZW1TaWduIFwiICtcbiAgICBcImVtRXhwb3J0V2l0aExvY2sgXCIgK1xuICAgIFwiZW1JbXBvcnRXaXRoVW5sb2NrIFwiICtcbiAgICBcImVtQ2hhbmdlVmVyc2lvbk5vdGUgXCIgK1xuICAgIFwiZW1PcGVuRm9yTW9kaWZ5IFwiICtcbiAgICBcImVtQ2hhbmdlTGlmZVN0YWdlIFwiICtcbiAgICBcImVtRGVsZXRlIFwiICtcbiAgICBcImVtQ3JlYXRlVmVyc2lvbiBcIiArXG4gICAgXCJlbUltcG9ydCBcIiArXG4gICAgXCJlbVVubG9ja0V4cG9ydGVkV2l0aExvY2sgXCIgK1xuICAgIFwiZW1TdGFydCBcIiArXG4gICAgXCJlbUFib3J0IFwiICtcbiAgICBcImVtUmVJbml0IFwiICtcbiAgICBcImVtTWFya0FzUmVhZGVkIFwiICtcbiAgICBcImVtTWFya0FzVW5yZWFkZWQgXCIgK1xuICAgIFwiZW1QZXJmb3JtIFwiICtcbiAgICBcImVtQWNjZXB0IFwiICtcbiAgICBcImVtUmVzdW1lIFwiICtcbiAgICBcImVtQ2hhbmdlUmlnaHRzIFwiICtcbiAgICBcImVtRWRpdFJvdXRlIFwiICtcbiAgICBcImVtRWRpdE9ic2VydmVyIFwiICtcbiAgICBcImVtUmVjb3ZlcnlGcm9tTG9jYWxDb3B5IFwiICtcbiAgICBcImVtQ2hhbmdlV29ya0FjY2Vzc1R5cGUgXCIgK1xuICAgIFwiZW1DaGFuZ2VFbmNvZGVUeXBlVG9DZXJ0aWZpY2F0ZSBcIiArXG4gICAgXCJlbUNoYW5nZUVuY29kZVR5cGVUb1Bhc3N3b3JkIFwiICtcbiAgICBcImVtQ2hhbmdlRW5jb2RlVHlwZVRvTm9uZSBcIiArXG4gICAgXCJlbUNoYW5nZUVuY29kZVR5cGVUb0NlcnRpZmljYXRlUGFzc3dvcmQgXCIgK1xuICAgIFwiZW1DaGFuZ2VTdGFuZGFyZFJvdXRlIFwiICtcbiAgICBcImVtR2V0VGV4dCBcIiArXG4gICAgXCJlbU9wZW5Gb3JWaWV3IFwiICtcbiAgICBcImVtTW92ZVRvU3RvcmFnZSBcIiArXG4gICAgXCJlbUNyZWF0ZU9iamVjdCBcIiArXG4gICAgXCJlbUNoYW5nZVZlcnNpb25IaWRkZW4gXCIgK1xuICAgIFwiZW1EZWxldGVWZXJzaW9uIFwiICtcbiAgICBcImVtQ2hhbmdlTGlmZUN5Y2xlU3RhZ2UgXCIgK1xuICAgIFwiZW1BcHByb3ZpbmdTaWduIFwiICtcbiAgICBcImVtRXhwb3J0IFwiICtcbiAgICBcImVtQ29udGludWUgXCIgK1xuICAgIFwiZW1Mb2NrRnJvbUVkaXQgXCIgK1xuICAgIFwiZW1VbkxvY2tGb3JFZGl0IFwiICtcbiAgICBcImVtTG9ja0ZvclNlcnZlciBcIiArXG4gICAgXCJlbVVubG9ja0Zyb21TZXJ2ZXIgXCIgK1xuICAgIFwiZW1EZWxlZ2F0ZUFjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJlbVJlRW5jb2RlIFwiO1xuXG4gIC8vIGVudW0gVEVkaXRvckNsb3NlT2JzZXJ2VHlwZVxuICB2YXIgVEVkaXRvckNsb3NlT2JzZXJ2VHlwZSA9IFwiZWNvdEZpbGUgZWNvdFByb2Nlc3MgXCI7XG5cbiAgLy8gZW51bSBURWRtc0FwcGxpY2F0aW9uQWN0aW9uXG4gIHZhciBURWRtc0FwcGxpY2F0aW9uQWN0aW9uID0gXCJlYUdldCBlYUNvcHkgZWFDcmVhdGUgZWFDcmVhdGVTdGFuZGFyZFJvdXRlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudExvY2tUeXBlXG4gIHZhciBURURvY3VtZW50TG9ja1R5cGUgPSBcImVkbHRBbGwgZWRsdE5vdGhpbmcgZWRsdFF1ZXJ5IFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFN0ZXBTaG93TW9kZVxuICB2YXIgVEVEb2N1bWVudFN0ZXBTaG93TW9kZSA9IFwiZXNzbVRleHQgZXNzbUNhcmQgXCI7XG5cbiAgLy8gZW51bSBURURvY3VtZW50U3RlcFZlcnNpb25UeXBlXG4gIHZhciBURURvY3VtZW50U3RlcFZlcnNpb25UeXBlID0gXCJlc3Z0TGFzdCBlc3Z0TGFzdEFjdGl2ZSBlc3Z0U3BlY2lmaWVkIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFN0b3JhZ2VGdW5jdGlvblxuICB2YXIgVEVEb2N1bWVudFN0b3JhZ2VGdW5jdGlvbiA9IFwiZWRzZkV4ZWN1dGl2ZSBlZHNmQXJjaGl2ZSBcIjtcblxuICAvLyBlbnVtIFRFRG9jdW1lbnRTdG9yYWdlVHlwZVxuICB2YXIgVEVEb2N1bWVudFN0b3JhZ2VUeXBlID0gXCJlZHN0U1FMU2VydmVyIGVkc3RGaWxlIFwiO1xuXG4gIC8vIGVudW0gVEVEb2N1bWVudFZlcnNpb25Tb3VyY2VUeXBlXG4gIHZhciBURURvY3VtZW50VmVyc2lvblNvdXJjZVR5cGUgPVxuICAgIFwiZWR2c3ROb25lIGVkdnN0RURvY3VtZW50VmVyc2lvbkNvcHkgZWR2c3RGaWxlIGVkdnN0VGVtcGxhdGUgZWR2c3RTY2FubmVkRmlsZSBcIjtcblxuICAvLyBlbnVtIFRFRG9jdW1lbnRWZXJzaW9uU3RhdGVcbiAgdmFyIFRFRG9jdW1lbnRWZXJzaW9uU3RhdGUgPSBcInZzRGVmYXVsdCB2c0Rlc2lnbiB2c0FjdGl2ZSB2c09ic29sZXRlIFwiO1xuXG4gIC8vIGVudW0gVEVuY29kZVR5cGVcbiAgdmFyIFRFbmNvZGVUeXBlID0gXCJldE5vbmUgZXRDZXJ0aWZpY2F0ZSBldFBhc3N3b3JkIGV0Q2VydGlmaWNhdGVQYXNzd29yZCBcIjtcblxuICAvLyBlbnVtIFRFeGNlcHRpb25DYXRlZ29yeVxuICB2YXIgVEV4Y2VwdGlvbkNhdGVnb3J5ID0gXCJlY0V4Y2VwdGlvbiBlY1dhcm5pbmcgZWNJbmZvcm1hdGlvbiBcIjtcblxuICAvLyBlbnVtIFRFeHBvcnRlZFNpZ25hdHVyZXNUeXBlXG4gIHZhciBURXhwb3J0ZWRTaWduYXR1cmVzVHlwZSA9IFwiZXN0QWxsIGVzdEFwcHJvdmluZ09ubHkgXCI7XG5cbiAgLy8gZW51bSBURXhwb3J0ZWRWZXJzaW9uVHlwZVxuICB2YXIgVEV4cG9ydGVkVmVyc2lvblR5cGUgPSBcImV2dExhc3QgZXZ0TGFzdEFjdGl2ZSBldnRRdWVyeSBcIjtcblxuICAvLyBlbnVtIFRGaWVsZERhdGFUeXBlXG4gIHZhciBURmllbGREYXRhVHlwZSA9XG4gICAgXCJmZHRTdHJpbmcgXCIgK1xuICAgIFwiZmR0TnVtZXJpYyBcIiArXG4gICAgXCJmZHRJbnRlZ2VyIFwiICtcbiAgICBcImZkdERhdGUgXCIgK1xuICAgIFwiZmR0VGV4dCBcIiArXG4gICAgXCJmZHRVbmtub3duIFwiICtcbiAgICBcImZkdFdpZGVTdHJpbmcgXCIgK1xuICAgIFwiZmR0TGFyZ2VJbnRlZ2VyIFwiO1xuXG4gIC8vIGVudW0gVEZvbGRlclR5cGVcbiAgdmFyIFRGb2xkZXJUeXBlID1cbiAgICBcImZ0SW5ib3ggXCIgK1xuICAgIFwiZnRPdXRib3ggXCIgK1xuICAgIFwiZnRGYXZvcml0ZXMgXCIgK1xuICAgIFwiZnRDb21tb25Gb2xkZXIgXCIgK1xuICAgIFwiZnRVc2VyRm9sZGVyIFwiICtcbiAgICBcImZ0Q29tcG9uZW50cyBcIiArXG4gICAgXCJmdFF1aWNrTGF1bmNoIFwiICtcbiAgICBcImZ0U2hvcnRjdXRzIFwiICtcbiAgICBcImZ0U2VhcmNoIFwiO1xuXG4gIC8vIGVudW0gVEdyaWRSb3dIZWlnaHRcbiAgdmFyIFRHcmlkUm93SGVpZ2h0ID0gXCJncmhBdXRvIFwiICsgXCJncmhYMSBcIiArIFwiZ3JoWDIgXCIgKyBcImdyaFgzIFwiO1xuXG4gIC8vIGVudW0gVEh5cGVybGlua1R5cGVcbiAgdmFyIFRIeXBlcmxpbmtUeXBlID0gXCJobHRUZXh0IFwiICsgXCJobHRSVEYgXCIgKyBcImhsdEhUTUwgXCI7XG5cbiAgLy8gZW51bSBUSW1hZ2VGaWxlRm9ybWF0XG4gIHZhciBUSW1hZ2VGaWxlRm9ybWF0ID1cbiAgICBcImlmZkJNUCBcIiArXG4gICAgXCJpZmZKUEVHIFwiICtcbiAgICBcImlmZk11bHRpUGFnZVRJRkYgXCIgK1xuICAgIFwiaWZmU2luZ2xlUGFnZVRJRkYgXCIgK1xuICAgIFwiaWZmVElGRiBcIiArXG4gICAgXCJpZmZQTkcgXCI7XG5cbiAgLy8gZW51bSBUSW1hZ2VNb2RlXG4gIHZhciBUSW1hZ2VNb2RlID0gXCJpbThiR3JheXNjYWxlIFwiICsgXCJpbTI0YlJHQiBcIiArIFwiaW0xYk1vbm9jaHJvbWUgXCI7XG5cbiAgLy8gZW51bSBUSW1hZ2VUeXBlXG4gIHZhciBUSW1hZ2VUeXBlID0gXCJpdEJNUCBcIiArIFwiaXRKUEVHIFwiICsgXCJpdFdNRiBcIiArIFwiaXRQTkcgXCI7XG5cbiAgLy8gZW51bSBUSW5wbGFjZUhpbnRLaW5kXG4gIHZhciBUSW5wbGFjZUhpbnRLaW5kID1cbiAgICBcImlraEluZm9ybWF0aW9uIFwiICsgXCJpa2hXYXJuaW5nIFwiICsgXCJpa2hFcnJvciBcIiArIFwiaWtoTm9JY29uIFwiO1xuXG4gIC8vIGVudW0gVElTQkxDb250ZXh0XG4gIHZhciBUSVNCTENvbnRleHQgPVxuICAgIFwiaWNVbmtub3duIFwiICtcbiAgICBcImljU2NyaXB0IFwiICtcbiAgICBcImljRnVuY3Rpb24gXCIgK1xuICAgIFwiaWNJbnRlZ3JhdGVkUmVwb3J0IFwiICtcbiAgICBcImljQW5hbHl0aWNSZXBvcnQgXCIgK1xuICAgIFwiaWNEYXRhU2V0RXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNMb29rVXBFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNSZXF1aXNpdGVDaGFuZ2VFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNCZWZvcmVTZWFyY2hFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNSb2xlQ2FsY3VsYXRpb24gXCIgK1xuICAgIFwiaWNTZWxlY3RSb3V0ZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0Jsb2NrUHJvcGVydHlDYWxjdWxhdGlvbiBcIiArXG4gICAgXCJpY0Jsb2NrUXVlcnlQYXJhbXNFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNDaGFuZ2VTZWFyY2hSZXN1bHRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNCbG9ja0V2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1N1YlRhc2tJbml0RXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRURvY0RhdGFTZXRFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRURvY0FjdGlvbkhhbmRsZXIgXCIgK1xuICAgIFwiaWNFRG9jRm9ybUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0VEb2NSZXF1aXNpdGVDaGFuZ2VFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNTdHJ1Y3R1cmVkQ29udmVyc2lvblJ1bGUgXCIgK1xuICAgIFwiaWNTdHJ1Y3R1cmVkQ29udmVyc2lvbkV2ZW50QmVmb3JlIFwiICtcbiAgICBcImljU3RydWN0dXJlZENvbnZlcnNpb25FdmVudEFmdGVyIFwiICtcbiAgICBcImljV2l6YXJkRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV2l6YXJkRmluaXNoRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV2l6YXJkU3RlcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY1dpemFyZFN0ZXBGaW5pc2hFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRBY3Rpb25FbmFibGVFdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNXaXphcmRBY3Rpb25FeGVjdXRlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQ3JlYXRlSm9ic0hhbmRsZXIgXCIgK1xuICAgIFwiaWNDcmVhdGVOb3RpY2VzSGFuZGxlciBcIiArXG4gICAgXCJpY0JlZm9yZUxvb2tVcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0FmdGVyTG9va1VwRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljVGFza0Fib3J0RXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljV29ya2Zsb3dCbG9ja0FjdGlvbkhhbmRsZXIgXCIgK1xuICAgIFwiaWNEaWFsb2dEYXRhU2V0RXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljRGlhbG9nQWN0aW9uSGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ0xvb2tVcEV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ1JlcXVpc2l0ZUNoYW5nZUV2ZW50SGFuZGxlciBcIiArXG4gICAgXCJpY0RpYWxvZ0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNEaWFsb2dWYWxpZENsb3NlRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljQmxvY2tGb3JtRXZlbnRIYW5kbGVyIFwiICtcbiAgICBcImljVGFza0Zvcm1FdmVudEhhbmRsZXIgXCIgK1xuICAgIFwiaWNSZWZlcmVuY2VNZXRob2QgXCIgK1xuICAgIFwiaWNFRG9jTWV0aG9kIFwiICtcbiAgICBcImljRGlhbG9nTWV0aG9kIFwiICtcbiAgICBcImljUHJvY2Vzc01lc3NhZ2VIYW5kbGVyIFwiO1xuXG4gIC8vIGVudW0gVEl0ZW1TaG93XG4gIHZhciBUSXRlbVNob3cgPSBcImlzU2hvdyBcIiArIFwiaXNIaWRlIFwiICsgXCJpc0J5VXNlclNldHRpbmdzIFwiO1xuXG4gIC8vIGVudW0gVEpvYktpbmRcbiAgdmFyIFRKb2JLaW5kID0gXCJqa0pvYiBcIiArIFwiamtOb3RpY2UgXCIgKyBcImprQ29udHJvbEpvYiBcIjtcblxuICAvLyBlbnVtIFRKb2luVHlwZVxuICB2YXIgVEpvaW5UeXBlID0gXCJqdElubmVyIFwiICsgXCJqdExlZnQgXCIgKyBcImp0UmlnaHQgXCIgKyBcImp0RnVsbCBcIiArIFwianRDcm9zcyBcIjtcblxuICAvLyBlbnVtIFRMYWJlbFBvc1xuICB2YXIgVExhYmVsUG9zID0gXCJsYnBBYm92ZSBcIiArIFwibGJwQmVsb3cgXCIgKyBcImxicExlZnQgXCIgKyBcImxicFJpZ2h0IFwiO1xuXG4gIC8vIGVudW0gVExpY2Vuc2luZ1R5cGVcbiAgdmFyIFRMaWNlbnNpbmdUeXBlID0gXCJlbHRQZXJDb25uZWN0aW9uIFwiICsgXCJlbHRQZXJVc2VyIFwiO1xuXG4gIC8vIGVudW0gVExpZmVDeWNsZVN0YWdlRm9udENvbG9yXG4gIHZhciBUTGlmZUN5Y2xlU3RhZ2VGb250Q29sb3IgPVxuICAgIFwic2ZjVW5kZWZpbmVkIFwiICtcbiAgICBcInNmY0JsYWNrIFwiICtcbiAgICBcInNmY0dyZWVuIFwiICtcbiAgICBcInNmY1JlZCBcIiArXG4gICAgXCJzZmNCbHVlIFwiICtcbiAgICBcInNmY09yYW5nZSBcIiArXG4gICAgXCJzZmNMaWxhYyBcIjtcblxuICAvLyBlbnVtIFRMaWZlQ3ljbGVTdGFnZUZvbnRTdHlsZVxuICB2YXIgVExpZmVDeWNsZVN0YWdlRm9udFN0eWxlID0gXCJzZnNJdGFsaWMgXCIgKyBcInNmc1N0cmlrZW91dCBcIiArIFwic2ZzTm9ybWFsIFwiO1xuXG4gIC8vIGVudW0gVExvY2thYmxlRGV2ZWxvcG1lbnRDb21wb25lbnRUeXBlXG4gIHZhciBUTG9ja2FibGVEZXZlbG9wbWVudENvbXBvbmVudFR5cGUgPVxuICAgIFwibGRjdFN0YW5kYXJkUm91dGUgXCIgK1xuICAgIFwibGRjdFdpemFyZCBcIiArXG4gICAgXCJsZGN0U2NyaXB0IFwiICtcbiAgICBcImxkY3RGdW5jdGlvbiBcIiArXG4gICAgXCJsZGN0Um91dGVCbG9jayBcIiArXG4gICAgXCJsZGN0SW50ZWdyYXRlZFJlcG9ydCBcIiArXG4gICAgXCJsZGN0QW5hbHl0aWNSZXBvcnQgXCIgK1xuICAgIFwibGRjdFJlZmVyZW5jZVR5cGUgXCIgK1xuICAgIFwibGRjdEVEb2N1bWVudFR5cGUgXCIgK1xuICAgIFwibGRjdERpYWxvZyBcIiArXG4gICAgXCJsZGN0U2VydmVyRXZlbnRzIFwiO1xuXG4gIC8vIGVudW0gVE1heFJlY29yZENvdW50UmVzdHJpY3Rpb25UeXBlXG4gIHZhciBUTWF4UmVjb3JkQ291bnRSZXN0cmljdGlvblR5cGUgPVxuICAgIFwibXJjcnROb25lIFwiICsgXCJtcmNydFVzZXIgXCIgKyBcIm1yY3J0TWF4aW1hbCBcIiArIFwibXJjcnRDdXN0b20gXCI7XG5cbiAgLy8gZW51bSBUUmFuZ2VWYWx1ZVR5cGVcbiAgdmFyIFRSYW5nZVZhbHVlVHlwZSA9XG4gICAgXCJ2dEVxdWFsIFwiICsgXCJ2dEdyZWF0ZXJPckVxdWFsIFwiICsgXCJ2dExlc3NPckVxdWFsIFwiICsgXCJ2dFJhbmdlIFwiO1xuXG4gIC8vIGVudW0gVFJlbGF0aXZlRGF0ZVxuICB2YXIgVFJlbGF0aXZlRGF0ZSA9XG4gICAgXCJyZFllc3RlcmRheSBcIiArXG4gICAgXCJyZFRvZGF5IFwiICtcbiAgICBcInJkVG9tb3Jyb3cgXCIgK1xuICAgIFwicmRUaGlzV2VlayBcIiArXG4gICAgXCJyZFRoaXNNb250aCBcIiArXG4gICAgXCJyZFRoaXNZZWFyIFwiICtcbiAgICBcInJkTmV4dE1vbnRoIFwiICtcbiAgICBcInJkTmV4dFdlZWsgXCIgK1xuICAgIFwicmRMYXN0V2VlayBcIiArXG4gICAgXCJyZExhc3RNb250aCBcIjtcblxuICAvLyBlbnVtIFRSZXBvcnREZXN0aW5hdGlvblxuICB2YXIgVFJlcG9ydERlc3RpbmF0aW9uID0gXCJyZFdpbmRvdyBcIiArIFwicmRGaWxlIFwiICsgXCJyZFByaW50ZXIgXCI7XG5cbiAgLy8gZW51bSBUUmVxRGF0YVR5cGVcbiAgdmFyIFRSZXFEYXRhVHlwZSA9XG4gICAgXCJyZHRTdHJpbmcgXCIgK1xuICAgIFwicmR0TnVtZXJpYyBcIiArXG4gICAgXCJyZHRJbnRlZ2VyIFwiICtcbiAgICBcInJkdERhdGUgXCIgK1xuICAgIFwicmR0UmVmZXJlbmNlIFwiICtcbiAgICBcInJkdEFjY291bnQgXCIgK1xuICAgIFwicmR0VGV4dCBcIiArXG4gICAgXCJyZHRQaWNrIFwiICtcbiAgICBcInJkdFVua25vd24gXCIgK1xuICAgIFwicmR0TGFyZ2VJbnRlZ2VyIFwiICtcbiAgICBcInJkdERvY3VtZW50IFwiO1xuXG4gIC8vIGVudW0gVFJlcXVpc2l0ZUV2ZW50VHlwZVxuICB2YXIgVFJlcXVpc2l0ZUV2ZW50VHlwZSA9IFwicmVPbkNoYW5nZSBcIiArIFwicmVPbkNoYW5nZVZhbHVlcyBcIjtcblxuICAvLyBlbnVtIFRTQlRpbWVUeXBlXG4gIHZhciBUU0JUaW1lVHlwZSA9IFwidHRHbG9iYWwgXCIgKyBcInR0TG9jYWwgXCIgKyBcInR0VXNlciBcIiArIFwidHRTeXN0ZW0gXCI7XG5cbiAgLy8gZW51bSBUU2VhcmNoU2hvd01vZGVcbiAgdmFyIFRTZWFyY2hTaG93TW9kZSA9XG4gICAgXCJzc21Ccm93c2UgXCIgKyBcInNzbVNlbGVjdCBcIiArIFwic3NtTXVsdGlTZWxlY3QgXCIgKyBcInNzbUJyb3dzZU1vZGFsIFwiO1xuXG4gIC8vIGVudW0gVFNlbGVjdE1vZGVcbiAgdmFyIFRTZWxlY3RNb2RlID0gXCJzbVNlbGVjdCBcIiArIFwic21MaWtlIFwiICsgXCJzbUNhcmQgXCI7XG5cbiAgLy8gZW51bSBUU2lnbmF0dXJlVHlwZVxuICB2YXIgVFNpZ25hdHVyZVR5cGUgPSBcInN0Tm9uZSBcIiArIFwic3RBdXRoZW50aWNhdGluZyBcIiArIFwic3RBcHByb3ZpbmcgXCI7XG5cbiAgLy8gZW51bSBUU2lnbmVyQ29udGVudFR5cGVcbiAgdmFyIFRTaWduZXJDb250ZW50VHlwZSA9IFwic2N0U3RyaW5nIFwiICsgXCJzY3RTdHJlYW0gXCI7XG5cbiAgLy8gZW51bSBUU3RyaW5nc1NvcnRUeXBlXG4gIHZhciBUU3RyaW5nc1NvcnRUeXBlID0gXCJzc3RBbnNpU29ydCBcIiArIFwic3N0TmF0dXJhbFNvcnQgXCI7XG5cbiAgLy8gZW51bSBUU3RyaW5nVmFsdWVUeXBlXG4gIHZhciBUU3RyaW5nVmFsdWVUeXBlID0gXCJzdnRFcXVhbCBcIiArIFwic3Z0Q29udGFpbiBcIjtcblxuICAvLyBlbnVtIFRTdHJ1Y3R1cmVkT2JqZWN0QXR0cmlidXRlVHlwZVxuICB2YXIgVFN0cnVjdHVyZWRPYmplY3RBdHRyaWJ1dGVUeXBlID1cbiAgICBcInNvYXRTdHJpbmcgXCIgK1xuICAgIFwic29hdE51bWVyaWMgXCIgK1xuICAgIFwic29hdEludGVnZXIgXCIgK1xuICAgIFwic29hdERhdGV0aW1lIFwiICtcbiAgICBcInNvYXRSZWZlcmVuY2VSZWNvcmQgXCIgK1xuICAgIFwic29hdFRleHQgXCIgK1xuICAgIFwic29hdFBpY2sgXCIgK1xuICAgIFwic29hdEJvb2xlYW4gXCIgK1xuICAgIFwic29hdEVEb2N1bWVudCBcIiArXG4gICAgXCJzb2F0QWNjb3VudCBcIiArXG4gICAgXCJzb2F0SW50ZWdlckNvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdE51bWVyaWNDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRTdHJpbmdDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRQaWNrQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0RGF0ZXRpbWVDb2xsZWN0aW9uIFwiICtcbiAgICBcInNvYXRCb29sZWFuQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0UmVmZXJlbmNlUmVjb3JkQ29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0RURvY3VtZW50Q29sbGVjdGlvbiBcIiArXG4gICAgXCJzb2F0QWNjb3VudENvbGxlY3Rpb24gXCIgK1xuICAgIFwic29hdENvbnRlbnRzIFwiICtcbiAgICBcInNvYXRVbmtub3duIFwiO1xuXG4gIC8vIGVudW0gVFRhc2tBYm9ydFJlYXNvblxuICB2YXIgVFRhc2tBYm9ydFJlYXNvbiA9IFwidGFyQWJvcnRCeVVzZXIgXCIgKyBcInRhckFib3J0QnlXb3JrZmxvd0V4Y2VwdGlvbiBcIjtcblxuICAvLyBlbnVtIFRUZXh0VmFsdWVUeXBlXG4gIHZhciBUVGV4dFZhbHVlVHlwZSA9IFwidHZ0QWxsV29yZHMgXCIgKyBcInR2dEV4YWN0UGhyYXNlIFwiICsgXCJ0dnRBbnlXb3JkIFwiO1xuXG4gIC8vIGVudW0gVFVzZXJPYmplY3RTdGF0dXNcbiAgdmFyIFRVc2VyT2JqZWN0U3RhdHVzID1cbiAgICBcInVzTm9uZSBcIiArXG4gICAgXCJ1c0NvbXBsZXRlZCBcIiArXG4gICAgXCJ1c1JlZFNxdWFyZSBcIiArXG4gICAgXCJ1c0JsdWVTcXVhcmUgXCIgK1xuICAgIFwidXNZZWxsb3dTcXVhcmUgXCIgK1xuICAgIFwidXNHcmVlblNxdWFyZSBcIiArXG4gICAgXCJ1c09yYW5nZVNxdWFyZSBcIiArXG4gICAgXCJ1c1B1cnBsZVNxdWFyZSBcIiArXG4gICAgXCJ1c0ZvbGxvd1VwIFwiO1xuXG4gIC8vIGVudW0gVFVzZXJUeXBlXG4gIHZhciBUVXNlclR5cGUgPVxuICAgIFwidXRVbmtub3duIFwiICtcbiAgICBcInV0VXNlciBcIiArXG4gICAgXCJ1dERldmVsb3BlciBcIiArXG4gICAgXCJ1dEFkbWluaXN0cmF0b3IgXCIgK1xuICAgIFwidXRTeXN0ZW1EZXZlbG9wZXIgXCIgK1xuICAgIFwidXREaXNjb25uZWN0ZWQgXCI7XG5cbiAgLy8gZW51bSBUVmFsdWVzQnVpbGRUeXBlXG4gIHZhciBUVmFsdWVzQnVpbGRUeXBlID1cbiAgICBcImJ0QW5kIFwiICsgXCJidERldGFpbEFuZCBcIiArIFwiYnRPciBcIiArIFwiYnROb3RPciBcIiArIFwiYnRPbmx5IFwiO1xuXG4gIC8vIGVudW0gVFZpZXdNb2RlXG4gIHZhciBUVmlld01vZGUgPSBcInZtVmlldyBcIiArIFwidm1TZWxlY3QgXCIgKyBcInZtTmF2aWdhdGlvbiBcIjtcblxuICAvLyBlbnVtIFRWaWV3U2VsZWN0aW9uTW9kZVxuICB2YXIgVFZpZXdTZWxlY3Rpb25Nb2RlID1cbiAgICBcInZzbVNpbmdsZSBcIiArIFwidnNtTXVsdGlwbGUgXCIgKyBcInZzbU11bHRpcGxlQ2hlY2sgXCIgKyBcInZzbU5vU2VsZWN0aW9uIFwiO1xuXG4gIC8vIGVudW0gVFdpemFyZEFjdGlvblR5cGVcbiAgdmFyIFRXaXphcmRBY3Rpb25UeXBlID1cbiAgICBcIndmYXRQcmV2aW91cyBcIiArIFwid2ZhdE5leHQgXCIgKyBcIndmYXRDYW5jZWwgXCIgKyBcIndmYXRGaW5pc2ggXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkRm9ybUVsZW1lbnRQcm9wZXJ0eVxuICB2YXIgVFdpemFyZEZvcm1FbGVtZW50UHJvcGVydHkgPVxuICAgIFwid2ZlcFVuZGVmaW5lZCBcIiArXG4gICAgXCJ3ZmVwVGV4dDMgXCIgK1xuICAgIFwid2ZlcFRleHQ2IFwiICtcbiAgICBcIndmZXBUZXh0OSBcIiArXG4gICAgXCJ3ZmVwU3BpbkVkaXQgXCIgK1xuICAgIFwid2ZlcERyb3BEb3duIFwiICtcbiAgICBcIndmZXBSYWRpb0dyb3VwIFwiICtcbiAgICBcIndmZXBGbGFnIFwiICtcbiAgICBcIndmZXBUZXh0MTIgXCIgK1xuICAgIFwid2ZlcFRleHQxNSBcIiArXG4gICAgXCJ3ZmVwVGV4dDE4IFwiICtcbiAgICBcIndmZXBUZXh0MjEgXCIgK1xuICAgIFwid2ZlcFRleHQyNCBcIiArXG4gICAgXCJ3ZmVwVGV4dDI3IFwiICtcbiAgICBcIndmZXBUZXh0MzAgXCIgK1xuICAgIFwid2ZlcFJhZGlvR3JvdXBDb2x1bW4xIFwiICtcbiAgICBcIndmZXBSYWRpb0dyb3VwQ29sdW1uMiBcIiArXG4gICAgXCJ3ZmVwUmFkaW9Hcm91cENvbHVtbjMgXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkRm9ybUVsZW1lbnRUeXBlXG4gIHZhciBUV2l6YXJkRm9ybUVsZW1lbnRUeXBlID1cbiAgICBcIndmZXRRdWVyeVBhcmFtZXRlciBcIiArIFwid2ZldFRleHQgXCIgKyBcIndmZXREZWxpbWl0ZXIgXCIgKyBcIndmZXRMYWJlbCBcIjtcblxuICAvLyBlbnVtIFRXaXphcmRQYXJhbVR5cGVcbiAgdmFyIFRXaXphcmRQYXJhbVR5cGUgPVxuICAgIFwid3B0U3RyaW5nIFwiICtcbiAgICBcIndwdEludGVnZXIgXCIgK1xuICAgIFwid3B0TnVtZXJpYyBcIiArXG4gICAgXCJ3cHRCb29sZWFuIFwiICtcbiAgICBcIndwdERhdGVUaW1lIFwiICtcbiAgICBcIndwdFBpY2sgXCIgK1xuICAgIFwid3B0VGV4dCBcIiArXG4gICAgXCJ3cHRVc2VyIFwiICtcbiAgICBcIndwdFVzZXJMaXN0IFwiICtcbiAgICBcIndwdEVEb2N1bWVudEluZm8gXCIgK1xuICAgIFwid3B0RURvY3VtZW50SW5mb0xpc3QgXCIgK1xuICAgIFwid3B0UmVmZXJlbmNlUmVjb3JkSW5mbyBcIiArXG4gICAgXCJ3cHRSZWZlcmVuY2VSZWNvcmRJbmZvTGlzdCBcIiArXG4gICAgXCJ3cHRGb2xkZXJJbmZvIFwiICtcbiAgICBcIndwdFRhc2tJbmZvIFwiICtcbiAgICBcIndwdENvbnRlbnRzIFwiICtcbiAgICBcIndwdEZpbGVOYW1lIFwiICtcbiAgICBcIndwdERhdGUgXCI7XG5cbiAgLy8gZW51bSBUV2l6YXJkU3RlcFJlc3VsdFxuICB2YXIgVFdpemFyZFN0ZXBSZXN1bHQgPVxuICAgIFwid3NyQ29tcGxldGUgXCIgK1xuICAgIFwid3NyR29OZXh0IFwiICtcbiAgICBcIndzckdvUHJldmlvdXMgXCIgK1xuICAgIFwid3NyQ3VzdG9tIFwiICtcbiAgICBcIndzckNhbmNlbCBcIiArXG4gICAgXCJ3c3JHb0ZpbmFsIFwiO1xuXG4gIC8vIGVudW0gVFdpemFyZFN0ZXBUeXBlXG4gIHZhciBUV2l6YXJkU3RlcFR5cGUgPVxuICAgIFwid3N0Rm9ybSBcIiArXG4gICAgXCJ3c3RFRG9jdW1lbnQgXCIgK1xuICAgIFwid3N0VGFza0NhcmQgXCIgK1xuICAgIFwid3N0UmVmZXJlbmNlUmVjb3JkQ2FyZCBcIiArXG4gICAgXCJ3c3RGaW5hbCBcIjtcblxuICAvLyBlbnVtIFRXb3JrQWNjZXNzVHlwZVxuICB2YXIgVFdvcmtBY2Nlc3NUeXBlID0gXCJ3YUFsbCBcIiArIFwid2FQZXJmb3JtZXJzIFwiICsgXCJ3YU1hbnVhbCBcIjtcblxuICAvLyBlbnVtIFRXb3JrZmxvd0Jsb2NrVHlwZVxuICB2YXIgVFdvcmtmbG93QmxvY2tUeXBlID1cbiAgICBcIndzYlN0YXJ0IFwiICtcbiAgICBcIndzYkZpbmlzaCBcIiArXG4gICAgXCJ3c2JOb3RpY2UgXCIgK1xuICAgIFwid3NiU3RlcCBcIiArXG4gICAgXCJ3c2JEZWNpc2lvbiBcIiArXG4gICAgXCJ3c2JXYWl0IFwiICtcbiAgICBcIndzYk1vbml0b3IgXCIgK1xuICAgIFwid3NiU2NyaXB0IFwiICtcbiAgICBcIndzYkNvbm5lY3RvciBcIiArXG4gICAgXCJ3c2JTdWJUYXNrIFwiICtcbiAgICBcIndzYkxpZmVDeWNsZVN0YWdlIFwiICtcbiAgICBcIndzYlBhdXNlIFwiO1xuXG4gIC8vIGVudW0gVFdvcmtmbG93RGF0YVR5cGVcbiAgdmFyIFRXb3JrZmxvd0RhdGFUeXBlID1cbiAgICBcIndkdEludGVnZXIgXCIgK1xuICAgIFwid2R0RmxvYXQgXCIgK1xuICAgIFwid2R0U3RyaW5nIFwiICtcbiAgICBcIndkdFBpY2sgXCIgK1xuICAgIFwid2R0RGF0ZVRpbWUgXCIgK1xuICAgIFwid2R0Qm9vbGVhbiBcIiArXG4gICAgXCJ3ZHRUYXNrIFwiICtcbiAgICBcIndkdEpvYiBcIiArXG4gICAgXCJ3ZHRGb2xkZXIgXCIgK1xuICAgIFwid2R0RURvY3VtZW50IFwiICtcbiAgICBcIndkdFJlZmVyZW5jZVJlY29yZCBcIiArXG4gICAgXCJ3ZHRVc2VyIFwiICtcbiAgICBcIndkdEdyb3VwIFwiICtcbiAgICBcIndkdFJvbGUgXCIgK1xuICAgIFwid2R0SW50ZWdlckNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0RmxvYXRDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdFN0cmluZ0NvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0UGlja0NvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0RGF0ZVRpbWVDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdEJvb2xlYW5Db2xsZWN0aW9uIFwiICtcbiAgICBcIndkdFRhc2tDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdEpvYkNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0Rm9sZGVyQ29sbGVjdGlvbiBcIiArXG4gICAgXCJ3ZHRFRG9jdW1lbnRDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdFJlZmVyZW5jZVJlY29yZENvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0VXNlckNvbGxlY3Rpb24gXCIgK1xuICAgIFwid2R0R3JvdXBDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdFJvbGVDb2xsZWN0aW9uIFwiICtcbiAgICBcIndkdENvbnRlbnRzIFwiICtcbiAgICBcIndkdFVzZXJMaXN0IFwiICtcbiAgICBcIndkdFNlYXJjaERlc2NyaXB0aW9uIFwiICtcbiAgICBcIndkdERlYWRMaW5lIFwiICtcbiAgICBcIndkdFBpY2tTZXQgXCIgK1xuICAgIFwid2R0QWNjb3VudENvbGxlY3Rpb24gXCI7XG5cbiAgLy8gZW51bSBUV29ya0ltcG9ydGFuY2VcbiAgdmFyIFRXb3JrSW1wb3J0YW5jZSA9IFwid2lMb3cgXCIgKyBcIndpTm9ybWFsIFwiICsgXCJ3aUhpZ2ggXCI7XG5cbiAgLy8gZW51bSBUV29ya1JvdXRlVHlwZVxuICB2YXIgVFdvcmtSb3V0ZVR5cGUgPSBcIndydFNvZnQgXCIgKyBcIndydEhhcmQgXCI7XG5cbiAgLy8gZW51bSBUV29ya1N0YXRlXG4gIHZhciBUV29ya1N0YXRlID1cbiAgICBcIndzSW5pdCBcIiArXG4gICAgXCJ3c1J1bm5pbmcgXCIgK1xuICAgIFwid3NEb25lIFwiICtcbiAgICBcIndzQ29udHJvbGxlZCBcIiArXG4gICAgXCJ3c0Fib3J0ZWQgXCIgK1xuICAgIFwid3NDb250aW51ZWQgXCI7XG5cbiAgLy8gZW51bSBUV29ya1RleHRCdWlsZGluZ01vZGVcbiAgdmFyIFRXb3JrVGV4dEJ1aWxkaW5nTW9kZSA9XG4gICAgXCJ3dG1GdWxsIFwiICsgXCJ3dG1Gcm9tQ3VycmVudCBcIiArIFwid3RtT25seUN1cnJlbnQgXCI7XG5cbiAgLy8g0J/QtdGA0LXRh9C40YHQu9C10L3QuNGPXG4gIHZhciBFTlVNUyA9XG4gICAgVEFjY291bnRUeXBlICtcbiAgICBUQWN0aW9uRW5hYmxlZE1vZGUgK1xuICAgIFRBZGRQb3NpdGlvbiArXG4gICAgVEFsaWdubWVudCArXG4gICAgVEFyZWFTaG93TW9kZSArXG4gICAgVENlcnRpZmljYXRlSW52YWxpZGF0aW9uUmVhc29uICtcbiAgICBUQ2VydGlmaWNhdGVUeXBlICtcbiAgICBUQ2hlY2tMaXN0Qm94SXRlbVN0YXRlICtcbiAgICBUQ2xvc2VPbkVzYyArXG4gICAgVENvbXBUeXBlICtcbiAgICBUQ29uZGl0aW9uRm9ybWF0ICtcbiAgICBUQ29ubmVjdGlvbkludGVudCArXG4gICAgVENvbnRlbnRLaW5kICtcbiAgICBUQ29udHJvbFR5cGUgK1xuICAgIFRDcml0ZXJpb25Db250ZW50VHlwZSArXG4gICAgVEN1bHR1cmVUeXBlICtcbiAgICBURGF0YVNldEV2ZW50VHlwZSArXG4gICAgVERhdGFTZXRTdGF0ZSArXG4gICAgVERhdGVGb3JtYXRUeXBlICtcbiAgICBURGF0ZU9mZnNldFR5cGUgK1xuICAgIFREYXRlVGltZUtpbmQgK1xuICAgIFREZWFBY2Nlc3NSaWdodHMgK1xuICAgIFREb2N1bWVudERlZmF1bHRBY3Rpb24gK1xuICAgIFRFZGl0TW9kZSArXG4gICAgVEVkaXRvckNsb3NlT2JzZXJ2VHlwZSArXG4gICAgVEVkbXNBcHBsaWNhdGlvbkFjdGlvbiArXG4gICAgVEVEb2N1bWVudExvY2tUeXBlICtcbiAgICBURURvY3VtZW50U3RlcFNob3dNb2RlICtcbiAgICBURURvY3VtZW50U3RlcFZlcnNpb25UeXBlICtcbiAgICBURURvY3VtZW50U3RvcmFnZUZ1bmN0aW9uICtcbiAgICBURURvY3VtZW50U3RvcmFnZVR5cGUgK1xuICAgIFRFRG9jdW1lbnRWZXJzaW9uU291cmNlVHlwZSArXG4gICAgVEVEb2N1bWVudFZlcnNpb25TdGF0ZSArXG4gICAgVEVuY29kZVR5cGUgK1xuICAgIFRFeGNlcHRpb25DYXRlZ29yeSArXG4gICAgVEV4cG9ydGVkU2lnbmF0dXJlc1R5cGUgK1xuICAgIFRFeHBvcnRlZFZlcnNpb25UeXBlICtcbiAgICBURmllbGREYXRhVHlwZSArXG4gICAgVEZvbGRlclR5cGUgK1xuICAgIFRHcmlkUm93SGVpZ2h0ICtcbiAgICBUSHlwZXJsaW5rVHlwZSArXG4gICAgVEltYWdlRmlsZUZvcm1hdCArXG4gICAgVEltYWdlTW9kZSArXG4gICAgVEltYWdlVHlwZSArXG4gICAgVElucGxhY2VIaW50S2luZCArXG4gICAgVElTQkxDb250ZXh0ICtcbiAgICBUSXRlbVNob3cgK1xuICAgIFRKb2JLaW5kICtcbiAgICBUSm9pblR5cGUgK1xuICAgIFRMYWJlbFBvcyArXG4gICAgVExpY2Vuc2luZ1R5cGUgK1xuICAgIFRMaWZlQ3ljbGVTdGFnZUZvbnRDb2xvciArXG4gICAgVExpZmVDeWNsZVN0YWdlRm9udFN0eWxlICtcbiAgICBUTG9ja2FibGVEZXZlbG9wbWVudENvbXBvbmVudFR5cGUgK1xuICAgIFRNYXhSZWNvcmRDb3VudFJlc3RyaWN0aW9uVHlwZSArXG4gICAgVFJhbmdlVmFsdWVUeXBlICtcbiAgICBUUmVsYXRpdmVEYXRlICtcbiAgICBUUmVwb3J0RGVzdGluYXRpb24gK1xuICAgIFRSZXFEYXRhVHlwZSArXG4gICAgVFJlcXVpc2l0ZUV2ZW50VHlwZSArXG4gICAgVFNCVGltZVR5cGUgK1xuICAgIFRTZWFyY2hTaG93TW9kZSArXG4gICAgVFNlbGVjdE1vZGUgK1xuICAgIFRTaWduYXR1cmVUeXBlICtcbiAgICBUU2lnbmVyQ29udGVudFR5cGUgK1xuICAgIFRTdHJpbmdzU29ydFR5cGUgK1xuICAgIFRTdHJpbmdWYWx1ZVR5cGUgK1xuICAgIFRTdHJ1Y3R1cmVkT2JqZWN0QXR0cmlidXRlVHlwZSArXG4gICAgVFRhc2tBYm9ydFJlYXNvbiArXG4gICAgVFRleHRWYWx1ZVR5cGUgK1xuICAgIFRVc2VyT2JqZWN0U3RhdHVzICtcbiAgICBUVXNlclR5cGUgK1xuICAgIFRWYWx1ZXNCdWlsZFR5cGUgK1xuICAgIFRWaWV3TW9kZSArXG4gICAgVFZpZXdTZWxlY3Rpb25Nb2RlICtcbiAgICBUV2l6YXJkQWN0aW9uVHlwZSArXG4gICAgVFdpemFyZEZvcm1FbGVtZW50UHJvcGVydHkgK1xuICAgIFRXaXphcmRGb3JtRWxlbWVudFR5cGUgK1xuICAgIFRXaXphcmRQYXJhbVR5cGUgK1xuICAgIFRXaXphcmRTdGVwUmVzdWx0ICtcbiAgICBUV2l6YXJkU3RlcFR5cGUgK1xuICAgIFRXb3JrQWNjZXNzVHlwZSArXG4gICAgVFdvcmtmbG93QmxvY2tUeXBlICtcbiAgICBUV29ya2Zsb3dEYXRhVHlwZSArXG4gICAgVFdvcmtJbXBvcnRhbmNlICtcbiAgICBUV29ya1JvdXRlVHlwZSArXG4gICAgVFdvcmtTdGF0ZSArXG4gICAgVFdvcmtUZXh0QnVpbGRpbmdNb2RlO1xuXG4gIC8vINCh0LjRgdGC0LXQvNC90YvQtSDRhNGD0L3QutGG0LjQuCA9PT4gU1lTRlVOQ1RJT05TXG4gIHZhciBzeXN0ZW1fZnVuY3Rpb25zID1cbiAgICBcIkFkZFN1YlN0cmluZyBcIiArXG4gICAgXCJBZGp1c3RMaW5lQnJlYWtzIFwiICtcbiAgICBcIkFtb3VudEluV29yZHMgXCIgK1xuICAgIFwiQW5hbHlzaXMgXCIgK1xuICAgIFwiQXJyYXlEaW1Db3VudCBcIiArXG4gICAgXCJBcnJheUhpZ2hCb3VuZCBcIiArXG4gICAgXCJBcnJheUxvd0JvdW5kIFwiICtcbiAgICBcIkFycmF5T2YgXCIgK1xuICAgIFwiQXJyYXlSZURpbSBcIiArXG4gICAgXCJBc3NlcnQgXCIgK1xuICAgIFwiQXNzaWduZWQgXCIgK1xuICAgIFwiQmVnaW5PZk1vbnRoIFwiICtcbiAgICBcIkJlZ2luT2ZQZXJpb2QgXCIgK1xuICAgIFwiQnVpbGRQcm9maWxpbmdPcGVyYXRpb25BbmFseXNpcyBcIiArXG4gICAgXCJDYWxsUHJvY2VkdXJlIFwiICtcbiAgICBcIkNhblJlYWRGaWxlIFwiICtcbiAgICBcIkNBcnJheUVsZW1lbnQgXCIgK1xuICAgIFwiQ0RhdGFTZXRSZXF1aXNpdGUgXCIgK1xuICAgIFwiQ2hhbmdlRGF0ZSBcIiArXG4gICAgXCJDaGFuZ2VSZWZlcmVuY2VEYXRhc2V0IFwiICtcbiAgICBcIkNoYXIgXCIgK1xuICAgIFwiQ2hhclBvcyBcIiArXG4gICAgXCJDaGVja1BhcmFtIFwiICtcbiAgICBcIkNoZWNrUGFyYW1WYWx1ZSBcIiArXG4gICAgXCJDb21wYXJlU3RyaW5ncyBcIiArXG4gICAgXCJDb25zdGFudEV4aXN0cyBcIiArXG4gICAgXCJDb250cm9sU3RhdGUgXCIgK1xuICAgIFwiQ29udmVydERhdGVTdHIgXCIgK1xuICAgIFwiQ29weSBcIiArXG4gICAgXCJDb3B5RmlsZSBcIiArXG4gICAgXCJDcmVhdGVBcnJheSBcIiArXG4gICAgXCJDcmVhdGVDYWNoZWRSZWZlcmVuY2UgXCIgK1xuICAgIFwiQ3JlYXRlQ29ubmVjdGlvbiBcIiArXG4gICAgXCJDcmVhdGVEaWFsb2cgXCIgK1xuICAgIFwiQ3JlYXRlRHVhbExpc3REaWFsb2cgXCIgK1xuICAgIFwiQ3JlYXRlRWRpdG9yIFwiICtcbiAgICBcIkNyZWF0ZUV4Y2VwdGlvbiBcIiArXG4gICAgXCJDcmVhdGVGaWxlIFwiICtcbiAgICBcIkNyZWF0ZUZvbGRlckRpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVJbnB1dERpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVMaW5rRmlsZSBcIiArXG4gICAgXCJDcmVhdGVMaXN0IFwiICtcbiAgICBcIkNyZWF0ZUxvY2sgXCIgK1xuICAgIFwiQ3JlYXRlTWVtb3J5RGF0YVNldCBcIiArXG4gICAgXCJDcmVhdGVPYmplY3QgXCIgK1xuICAgIFwiQ3JlYXRlT3BlbkRpYWxvZyBcIiArXG4gICAgXCJDcmVhdGVQcm9ncmVzcyBcIiArXG4gICAgXCJDcmVhdGVRdWVyeSBcIiArXG4gICAgXCJDcmVhdGVSZWZlcmVuY2UgXCIgK1xuICAgIFwiQ3JlYXRlUmVwb3J0IFwiICtcbiAgICBcIkNyZWF0ZVNhdmVEaWFsb2cgXCIgK1xuICAgIFwiQ3JlYXRlU2NyaXB0IFwiICtcbiAgICBcIkNyZWF0ZVNRTFBpdm90RnVuY3Rpb24gXCIgK1xuICAgIFwiQ3JlYXRlU3RyaW5nTGlzdCBcIiArXG4gICAgXCJDcmVhdGVUcmVlTGlzdFNlbGVjdERpYWxvZyBcIiArXG4gICAgXCJDU2VsZWN0U1FMIFwiICtcbiAgICBcIkNTUUwgXCIgK1xuICAgIFwiQ1N1YlN0cmluZyBcIiArXG4gICAgXCJDdXJyZW50VXNlcklEIFwiICtcbiAgICBcIkN1cnJlbnRVc2VyTmFtZSBcIiArXG4gICAgXCJDdXJyZW50VmVyc2lvbiBcIiArXG4gICAgXCJEYXRhU2V0TG9jYXRlRXggXCIgK1xuICAgIFwiRGF0ZURpZmYgXCIgK1xuICAgIFwiRGF0ZVRpbWVEaWZmIFwiICtcbiAgICBcIkRhdGVUb1N0ciBcIiArXG4gICAgXCJEYXlPZldlZWsgXCIgK1xuICAgIFwiRGVsZXRlRmlsZSBcIiArXG4gICAgXCJEaXJlY3RvcnlFeGlzdHMgXCIgK1xuICAgIFwiRGlzYWJsZUNoZWNrQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIkRpc2FibGVDaGVja0Z1bGxTaG93aW5nUmVzdHJpY3Rpb24gXCIgK1xuICAgIFwiRGlzYWJsZU1hc3NUYXNrU2VuZGluZ1Jlc3RyaWN0aW9ucyBcIiArXG4gICAgXCJEcm9wVGFibGUgXCIgK1xuICAgIFwiRHVwZVN0cmluZyBcIiArXG4gICAgXCJFZGl0VGV4dCBcIiArXG4gICAgXCJFbmFibGVDaGVja0FjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJFbmFibGVDaGVja0Z1bGxTaG93aW5nUmVzdHJpY3Rpb24gXCIgK1xuICAgIFwiRW5hYmxlTWFzc1Rhc2tTZW5kaW5nUmVzdHJpY3Rpb25zIFwiICtcbiAgICBcIkVuZE9mTW9udGggXCIgK1xuICAgIFwiRW5kT2ZQZXJpb2QgXCIgK1xuICAgIFwiRXhjZXB0aW9uRXhpc3RzIFwiICtcbiAgICBcIkV4Y2VwdGlvbnNPZmYgXCIgK1xuICAgIFwiRXhjZXB0aW9uc09uIFwiICtcbiAgICBcIkV4ZWN1dGUgXCIgK1xuICAgIFwiRXhlY3V0ZVByb2Nlc3MgXCIgK1xuICAgIFwiRXhpdCBcIiArXG4gICAgXCJFeHBhbmRFbnZpcm9ubWVudFZhcmlhYmxlcyBcIiArXG4gICAgXCJFeHRyYWN0RmlsZURyaXZlIFwiICtcbiAgICBcIkV4dHJhY3RGaWxlRXh0IFwiICtcbiAgICBcIkV4dHJhY3RGaWxlTmFtZSBcIiArXG4gICAgXCJFeHRyYWN0RmlsZVBhdGggXCIgK1xuICAgIFwiRXh0cmFjdFBhcmFtcyBcIiArXG4gICAgXCJGaWxlRXhpc3RzIFwiICtcbiAgICBcIkZpbGVTaXplIFwiICtcbiAgICBcIkZpbmRGaWxlIFwiICtcbiAgICBcIkZpbmRTdWJTdHJpbmcgXCIgK1xuICAgIFwiRmlybUNvbnRleHQgXCIgK1xuICAgIFwiRm9yY2VEaXJlY3RvcmllcyBcIiArXG4gICAgXCJGb3JtYXQgXCIgK1xuICAgIFwiRm9ybWF0RGF0ZSBcIiArXG4gICAgXCJGb3JtYXROdW1lcmljIFwiICtcbiAgICBcIkZvcm1hdFNRTERhdGUgXCIgK1xuICAgIFwiRm9ybWF0U3RyaW5nIFwiICtcbiAgICBcIkZyZWVFeGNlcHRpb24gXCIgK1xuICAgIFwiR2V0Q29tcG9uZW50IFwiICtcbiAgICBcIkdldENvbXBvbmVudExhdW5jaFBhcmFtIFwiICtcbiAgICBcIkdldENvbnN0YW50IFwiICtcbiAgICBcIkdldExhc3RFeGNlcHRpb24gXCIgK1xuICAgIFwiR2V0UmVmZXJlbmNlUmVjb3JkIFwiICtcbiAgICBcIkdldFJlZlR5cGVCeVJlZklEIFwiICtcbiAgICBcIkdldFRhYmxlSUQgXCIgK1xuICAgIFwiR2V0VGVtcEZvbGRlciBcIiArXG4gICAgXCJJZlRoZW4gXCIgK1xuICAgIFwiSW4gXCIgK1xuICAgIFwiSW5kZXhPZiBcIiArXG4gICAgXCJJbnB1dERpYWxvZyBcIiArXG4gICAgXCJJbnB1dERpYWxvZ0V4IFwiICtcbiAgICBcIkludGVyYWN0aXZlTW9kZSBcIiArXG4gICAgXCJJc0ZpbGVMb2NrZWQgXCIgK1xuICAgIFwiSXNHcmFwaGljRmlsZSBcIiArXG4gICAgXCJJc051bWVyaWMgXCIgK1xuICAgIFwiTGVuZ3RoIFwiICtcbiAgICBcIkxvYWRTdHJpbmcgXCIgK1xuICAgIFwiTG9hZFN0cmluZ0ZtdCBcIiArXG4gICAgXCJMb2NhbFRpbWVUb1VUQyBcIiArXG4gICAgXCJMb3dlckNhc2UgXCIgK1xuICAgIFwiTWF4IFwiICtcbiAgICBcIk1lc3NhZ2VCb3ggXCIgK1xuICAgIFwiTWVzc2FnZUJveEV4IFwiICtcbiAgICBcIk1pbWVEZWNvZGVCaW5hcnkgXCIgK1xuICAgIFwiTWltZURlY29kZVN0cmluZyBcIiArXG4gICAgXCJNaW1lRW5jb2RlQmluYXJ5IFwiICtcbiAgICBcIk1pbWVFbmNvZGVTdHJpbmcgXCIgK1xuICAgIFwiTWluIFwiICtcbiAgICBcIk1vbmV5SW5Xb3JkcyBcIiArXG4gICAgXCJNb3ZlRmlsZSBcIiArXG4gICAgXCJOZXdJRCBcIiArXG4gICAgXCJOb3cgXCIgK1xuICAgIFwiT3BlbkZpbGUgXCIgK1xuICAgIFwiT3JkIFwiICtcbiAgICBcIlByZWNpc2lvbiBcIiArXG4gICAgXCJSYWlzZSBcIiArXG4gICAgXCJSZWFkQ2VydGlmaWNhdGVGcm9tRmlsZSBcIiArXG4gICAgXCJSZWFkRmlsZSBcIiArXG4gICAgXCJSZWZlcmVuY2VDb2RlQnlJRCBcIiArXG4gICAgXCJSZWZlcmVuY2VOdW1iZXIgXCIgK1xuICAgIFwiUmVmZXJlbmNlUmVxdWlzaXRlTW9kZSBcIiArXG4gICAgXCJSZWZlcmVuY2VSZXF1aXNpdGVWYWx1ZSBcIiArXG4gICAgXCJSZWdpb25EYXRlU2V0dGluZ3MgXCIgK1xuICAgIFwiUmVnaW9uTnVtYmVyU2V0dGluZ3MgXCIgK1xuICAgIFwiUmVnaW9uVGltZVNldHRpbmdzIFwiICtcbiAgICBcIlJlZ1JlYWQgXCIgK1xuICAgIFwiUmVnV3JpdGUgXCIgK1xuICAgIFwiUmVuYW1lRmlsZSBcIiArXG4gICAgXCJSZXBsYWNlIFwiICtcbiAgICBcIlJvdW5kIFwiICtcbiAgICBcIlNlbGVjdFNlcnZlckNvZGUgXCIgK1xuICAgIFwiU2VsZWN0U1FMIFwiICtcbiAgICBcIlNlcnZlckRhdGVUaW1lIFwiICtcbiAgICBcIlNldENvbnN0YW50IFwiICtcbiAgICBcIlNldE1hbmFnZWRGb2xkZXJGaWVsZHNTdGF0ZSBcIiArXG4gICAgXCJTaG93Q29uc3RhbnRzSW5wdXREaWFsb2cgXCIgK1xuICAgIFwiU2hvd01lc3NhZ2UgXCIgK1xuICAgIFwiU2xlZXAgXCIgK1xuICAgIFwiU3BsaXQgXCIgK1xuICAgIFwiU1FMIFwiICtcbiAgICBcIlNRTDJYTFNUQUIgXCIgK1xuICAgIFwiU1FMUHJvZmlsaW5nU2VuZFJlcG9ydCBcIiArXG4gICAgXCJTdHJUb0RhdGUgXCIgK1xuICAgIFwiU3ViU3RyaW5nIFwiICtcbiAgICBcIlN1YlN0cmluZ0NvdW50IFwiICtcbiAgICBcIlN5c3RlbVNldHRpbmcgXCIgK1xuICAgIFwiVGltZSBcIiArXG4gICAgXCJUaW1lRGlmZiBcIiArXG4gICAgXCJUb2RheSBcIiArXG4gICAgXCJUcmFuc2xpdGVyYXRlIFwiICtcbiAgICBcIlRyaW0gXCIgK1xuICAgIFwiVXBwZXJDYXNlIFwiICtcbiAgICBcIlVzZXJTdGF0dXMgXCIgK1xuICAgIFwiVVRDVG9Mb2NhbFRpbWUgXCIgK1xuICAgIFwiVmFsaWRhdGVYTUwgXCIgK1xuICAgIFwiVmFySXNDbGVhciBcIiArXG4gICAgXCJWYXJJc0VtcHR5IFwiICtcbiAgICBcIlZhcklzTnVsbCBcIiArXG4gICAgXCJXb3JrVGltZURpZmYgXCIgK1xuICAgIFwiV3JpdGVGaWxlIFwiICtcbiAgICBcIldyaXRlRmlsZUV4IFwiICtcbiAgICBcIldyaXRlT2JqZWN0SGlzdG9yeSBcIiArXG4gICAgXCLQkNC90LDQu9C40LcgXCIgK1xuICAgIFwi0JHQsNC30LDQlNCw0L3QvdGL0YUgXCIgK1xuICAgIFwi0JHQu9C+0LrQldGB0YLRjCBcIiArXG4gICAgXCLQkdC70L7QutCV0YHRgtGM0KDQsNGB0YggXCIgK1xuICAgIFwi0JHQu9C+0LrQmNC90YTQviBcIiArXG4gICAgXCLQkdC70L7QutCh0L3Rj9GC0YwgXCIgK1xuICAgIFwi0JHQu9C+0LrQodC90Y/RgtGM0KDQsNGB0YggXCIgK1xuICAgIFwi0JHQu9C+0LrQo9GB0YLQsNC90L7QstC40YLRjCBcIiArXG4gICAgXCLQktCy0L7QtCBcIiArXG4gICAgXCLQktCy0L7QtNCc0LXQvdGOIFwiICtcbiAgICBcItCS0LXQtNChIFwiICtcbiAgICBcItCS0LXQtNCh0L/RgCBcIiArXG4gICAgXCLQktC10YDRhdC90Y/Rj9CT0YDQsNC90LjRhtCw0JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0JLQvdC10YjQn9GA0L7Qs9GAIFwiICtcbiAgICBcItCS0L7RgdGB0YIgXCIgK1xuICAgIFwi0JLRgNC10LzQtdC90L3QsNGP0J/QsNC/0LrQsCBcIiArXG4gICAgXCLQktGA0LXQvNGPIFwiICtcbiAgICBcItCS0YvQsdC+0YBTUUwgXCIgK1xuICAgIFwi0JLRi9Cx0YDQsNGC0YzQl9Cw0L/QuNGB0YwgXCIgK1xuICAgIFwi0JLRi9C00LXQu9C40YLRjNCh0YLRgCBcIiArXG4gICAgXCLQktGL0LfQstCw0YLRjCBcIiArXG4gICAgXCLQktGL0L/QvtC70L3QuNGC0YwgXCIgK1xuICAgIFwi0JLRi9C/0J/RgNC+0LPRgCBcIiArXG4gICAgXCLQk9GA0LDRhNC40YfQtdGB0LrQuNC50KTQsNC50LsgXCIgK1xuICAgIFwi0JPRgNGD0L/Qv9Cw0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90L4gXCIgK1xuICAgIFwi0JTQsNGC0LDQktGA0LXQvNGP0KHQtdGA0LIgXCIgK1xuICAgIFwi0JTQtdC90YzQndC10LTQtdC70LggXCIgK1xuICAgIFwi0JTQuNCw0LvQvtCz0JTQsNCd0LXRgiBcIiArXG4gICAgXCLQlNC70LjQvdCw0KHRgtGAIFwiICtcbiAgICBcItCU0L7QsdCf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQldCf0YPRgdGC0L4gXCIgK1xuICAgIFwi0JXRgdC70LjQotC+IFwiICtcbiAgICBcItCV0KfQuNGB0LvQviBcIiArXG4gICAgXCLQl9Cw0LzQn9C+0LTRgdGC0YAgXCIgK1xuICAgIFwi0JfQsNC/0LjRgdGM0KHQv9GA0LDQstC+0YfQvdC40LrQsCBcIiArXG4gICAgXCLQl9C90LDRh9Cf0L7Qu9GP0KHQv9GAIFwiICtcbiAgICBcItCY0JTQotC40L/QodC/0YAgXCIgK1xuICAgIFwi0JjQt9Cy0LvQtdGH0YzQlNC40YHQuiBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCY0LzRj9Ck0LDQudC70LAgXCIgK1xuICAgIFwi0JjQt9Cy0LvQtdGH0YzQn9GD0YLRjCBcIiArXG4gICAgXCLQmNC30LLQu9C10YfRjNCg0LDRgdGI0LjRgNC10L3QuNC1IFwiICtcbiAgICBcItCY0LfQvNCU0LDRgiBcIiArXG4gICAgXCLQmNC30LzQtdC90LjRgtGM0KDQsNC30LzQtdGA0JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0JjQt9C80LXRgNC10L3QuNC50JzQsNGB0YHQuNCy0LAgXCIgK1xuICAgIFwi0JjQvNGP0J7RgNCzIFwiICtcbiAgICBcItCY0LzRj9Cf0L7Qu9GP0KHQv9GAIFwiICtcbiAgICBcItCY0L3QtNC10LrRgSBcIiArXG4gICAgXCLQmNC90LTQuNC60LDRgtC+0YDQl9Cw0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQmNC90LTQuNC60LDRgtC+0YDQntGC0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQmNC90LTQuNC60LDRgtC+0YDQqNCw0LMgXCIgK1xuICAgIFwi0JjQvdGC0LXRgNCw0LrRgtC40LLQvdGL0LnQoNC10LbQuNC8IFwiICtcbiAgICBcItCY0YLQvtCz0KLQsdC70KHQv9GAIFwiICtcbiAgICBcItCa0L7QtNCS0LjQtNCS0LXQtNCh0L/RgCBcIiArXG4gICAgXCLQmtC+0LTQktC40LTQodC/0YDQn9C+0JjQlCBcIiArXG4gICAgXCLQmtC+0LTQn9C+QW5hbGl0IFwiICtcbiAgICBcItCa0L7QtNCh0LjQvNCy0L7Qu9CwIFwiICtcbiAgICBcItCa0L7QtNCh0L/RgCBcIiArXG4gICAgXCLQmtC+0LvQn9C+0LTRgdGC0YAgXCIgK1xuICAgIFwi0JrQvtC70J/RgNC+0L8gXCIgK1xuICAgIFwi0JrQvtC90JzQtdGBIFwiICtcbiAgICBcItCa0L7QvdGB0YIgXCIgK1xuICAgIFwi0JrQvtC90YHRgtCV0YHRgtGMIFwiICtcbiAgICBcItCa0L7QvdGB0YLQl9C90LDRhyBcIiArXG4gICAgXCLQmtC+0L3QotGA0LDQvSBcIiArXG4gICAgXCLQmtC+0L/QuNGA0L7QstCw0YLRjNCk0LDQudC7IFwiICtcbiAgICBcItCa0L7Qv9C40Y/QodGC0YAgXCIgK1xuICAgIFwi0JrQn9C10YDQuNC+0LQgXCIgK1xuICAgIFwi0JrQodGC0YDQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0JzQsNC60YEgXCIgK1xuICAgIFwi0JzQsNC60YHQodGC0YDQotCx0LvQodC/0YAgXCIgK1xuICAgIFwi0JzQsNGB0YHQuNCyIFwiICtcbiAgICBcItCc0LXQvdGOIFwiICtcbiAgICBcItCc0LXQvdGO0KDQsNGB0YggXCIgK1xuICAgIFwi0JzQuNC9IFwiICtcbiAgICBcItCd0LDQsdC+0YDQlNCw0L3QvdGL0YXQndCw0LnRgtC40KDQsNGB0YggXCIgK1xuICAgIFwi0J3QsNC40LzQktC40LTQodC/0YAgXCIgK1xuICAgIFwi0J3QsNC40LzQn9C+QW5hbGl0IFwiICtcbiAgICBcItCd0LDQuNC80KHQv9GAIFwiICtcbiAgICBcItCd0LDRgdGC0YDQvtC40YLRjNCf0LXRgNC10LLQvtC00YvQodGC0YDQvtC6IFwiICtcbiAgICBcItCd0LDRh9Cc0LXRgSBcIiArXG4gICAgXCLQndCw0YfQotGA0LDQvSBcIiArXG4gICAgXCLQndC40LbQvdGP0Y/Qk9GA0LDQvdC40YbQsNCc0LDRgdGB0LjQstCwIFwiICtcbiAgICBcItCd0L7QvNC10YDQodC/0YAgXCIgK1xuICAgIFwi0J3Qn9C10YDQuNC+0LQgXCIgK1xuICAgIFwi0J7QutC90L4gXCIgK1xuICAgIFwi0J7QutGAIFwiICtcbiAgICBcItCe0LrRgNGD0LbQtdC90LjQtSBcIiArXG4gICAgXCLQntGC0LvQmNC90YTQlNC+0LHQsNCy0LjRgtGMIFwiICtcbiAgICBcItCe0YLQu9CY0L3RhNCj0LTQsNC70LjRgtGMIFwiICtcbiAgICBcItCe0YLRh9C10YIgXCIgK1xuICAgIFwi0J7RgtGH0LXRgtCQ0L3QsNC7IFwiICtcbiAgICBcItCe0YLRh9C10YLQmNC90YIgXCIgK1xuICAgIFwi0J/QsNC/0LrQsNCh0YPRidC10YHRgtCy0YPQtdGCIFwiICtcbiAgICBcItCf0LDRg9C30LAgXCIgK1xuICAgIFwi0J/QktGL0LHQvtGAU1FMIFwiICtcbiAgICBcItCf0LXRgNC10LjQvNC10L3QvtCy0LDRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0J/QtdGA0LXQvNC10L3QvdGL0LUgXCIgK1xuICAgIFwi0J/QtdGA0LXQvNC10YHRgtC40YLRjNCk0LDQudC7IFwiICtcbiAgICBcItCf0L7QtNGB0YLRgCBcIiArXG4gICAgXCLQn9C+0LjRgdC60J/QvtC00YHRgtGAIFwiICtcbiAgICBcItCf0L7QuNGB0LrQodGC0YAgXCIgK1xuICAgIFwi0J/QvtC70YPRh9C40YLRjNCY0JTQotCw0LHQu9C40YbRiyBcIiArXG4gICAgXCLQn9C+0LvRjNC30L7QstCw0YLQtdC70YzQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QviBcIiArXG4gICAgXCLQn9C+0LvRjNC30L7QstCw0YLQtdC70YzQmNCUIFwiICtcbiAgICBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNCY0LzRjyBcIiArXG4gICAgXCLQn9C+0LvRjNC30L7QstCw0YLQtdC70YzQodGC0LDRgtGD0YEgXCIgK1xuICAgIFwi0J/RgNC10YDQstCw0YLRjCBcIiArXG4gICAgXCLQn9GA0L7QstC10YDQuNGC0YzQn9Cw0YDQsNC80LXRgtGAIFwiICtcbiAgICBcItCf0YDQvtCy0LXRgNC40YLRjNCf0LDRgNCw0LzQtdGC0YDQl9C90LDRhyBcIiArXG4gICAgXCLQn9GA0L7QstC10YDQuNGC0YzQo9GB0LvQvtCy0LjQtSBcIiArXG4gICAgXCLQoNCw0LfQsdCh0YLRgCBcIiArXG4gICAgXCLQoNCw0LfQvdCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KDQsNC30L3QlNCw0YIgXCIgK1xuICAgIFwi0KDQsNC30L3QlNCw0YLQsNCS0YDQtdC80Y8gXCIgK1xuICAgIFwi0KDQsNC30L3QoNCw0LHQktGA0LXQvNGPIFwiICtcbiAgICBcItCg0LXQs9Cj0YHRgtCS0YDQtdC8IFwiICtcbiAgICBcItCg0LXQs9Cj0YHRgtCU0LDRgiBcIiArXG4gICAgXCLQoNC10LPQo9GB0YLQp9GB0LsgXCIgK1xuICAgIFwi0KDQtdC00KLQtdC60YHRgiBcIiArXG4gICAgXCLQoNC10LXRgdGC0YDQl9Cw0L/QuNGB0YwgXCIgK1xuICAgIFwi0KDQtdC10YHRgtGA0KHQv9C40YHQvtC60JjQvNC10L3Qn9Cw0YDQsNC8IFwiICtcbiAgICBcItCg0LXQtdGB0YLRgNCn0YLQtdC90LjQtSBcIiArXG4gICAgXCLQoNC10LrQstCh0L/RgCBcIiArXG4gICAgXCLQoNC10LrQstCh0L/RgNCf0YAgXCIgK1xuICAgIFwi0KHQtdCz0L7QtNC90Y8gXCIgK1xuICAgIFwi0KHQtdC50YfQsNGBIFwiICtcbiAgICBcItCh0LXRgNCy0LXRgCBcIiArXG4gICAgXCLQodC10YDQstC10YDQn9GA0L7RhtC10YHRgdCY0JQgXCIgK1xuICAgIFwi0KHQtdGA0YLQuNGE0LjQutCw0YLQpNCw0LnQu9Ch0YfQuNGC0LDRgtGMIFwiICtcbiAgICBcItCh0LbQn9GA0L7QsSBcIiArXG4gICAgXCLQodC40LzQstC+0LsgXCIgK1xuICAgIFwi0KHQuNGB0YLQtdC80LDQlNC40YDQtdC60YLRg9C80JrQvtC0IFwiICtcbiAgICBcItCh0LjRgdGC0LXQvNCw0JjQvdGE0L7RgNC80LDRhtC40Y8gXCIgK1xuICAgIFwi0KHQuNGB0YLQtdC80LDQmtC+0LQgXCIgK1xuICAgIFwi0KHQvtC00LXRgNC20LjRgiBcIiArXG4gICAgXCLQodC+0LXQtNC40L3QtdC90LjQtdCX0LDQutGA0YvRgtGMIFwiICtcbiAgICBcItCh0L7QtdC00LjQvdC10L3QuNC10J7RgtC60YDRi9GC0YwgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQlNC40LDQu9C+0LMgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQlNC40LDQu9C+0LPQktGL0LHQvtGA0LDQmNC30JTQstGD0YXQodC/0LjRgdC60L7QsiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9CS0YvQsdC+0YDQsNCf0LDQv9C60LggXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQlNC40LDQu9C+0LPQntGC0LrRgNGL0YLQuNGP0KTQsNC50LvQsCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCU0LjQsNC70L7Qs9Ch0L7RhdGA0LDQvdC10L3QuNGP0KTQsNC50LvQsCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCX0LDQv9GA0L7RgSBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCY0L3QtNC40LrQsNGC0L7RgCBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCY0YHQutC70Y7Rh9C10L3QuNC1IFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0JrRjdGI0LjRgNC+0LLQsNC90L3Ri9C50KHQv9GA0LDQstC+0YfQvdC40LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQnNCw0YHRgdC40LIgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQndCw0LHQvtGA0JTQsNC90L3Ri9GFIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0J7QsdGK0LXQutGCIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0J7RgtGH0LXRgiBcIiArXG4gICAgXCLQodC+0LfQtNCw0YLRjNCf0LDQv9C60YMgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQoNC10LTQsNC60YLQvtGAIFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0KHQvtC10LTQuNC90LXQvdC40LUgXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC/0LjRgdC+0LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodC/0LjRgdC+0LrQodGC0YDQvtC6IFwiICtcbiAgICBcItCh0L7Qt9C00LDRgtGM0KHQv9GA0LDQstC+0YfQvdC40LogXCIgK1xuICAgIFwi0KHQvtC30LTQsNGC0YzQodGG0LXQvdCw0YDQuNC5IFwiICtcbiAgICBcItCh0L7Qt9C00KHQv9GAIFwiICtcbiAgICBcItCh0L7RgdGC0KHQv9GAIFwiICtcbiAgICBcItCh0L7RhdGAIFwiICtcbiAgICBcItCh0L7RhdGA0KHQv9GAIFwiICtcbiAgICBcItCh0L/QuNGB0L7QutCh0LjRgdGC0LXQvCBcIiArXG4gICAgXCLQodC/0YAgXCIgK1xuICAgIFwi0KHQv9GA0LDQstC+0YfQvdC40LogXCIgK1xuICAgIFwi0KHQv9GA0JHQu9C+0LrQldGB0YLRjCBcIiArXG4gICAgXCLQodC/0YDQkdC70L7QutCh0L3Rj9GC0YwgXCIgK1xuICAgIFwi0KHQv9GA0JHQu9C+0LrQodC90Y/RgtGM0KDQsNGB0YggXCIgK1xuICAgIFwi0KHQv9GA0JHQu9C+0LrQo9GB0YLQsNC90L7QstC40YLRjCBcIiArXG4gICAgXCLQodC/0YDQmNC30LzQndCw0LHQlNCw0L0gXCIgK1xuICAgIFwi0KHQv9GA0JrQvtC0IFwiICtcbiAgICBcItCh0L/RgNCd0L7QvNC10YAgXCIgK1xuICAgIFwi0KHQv9GA0J7QsdC90L7QstC40YLRjCBcIiArXG4gICAgXCLQodC/0YDQntGC0LrRgNGL0YLRjCBcIiArXG4gICAgXCLQodC/0YDQntGC0LzQtdC90LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCf0LDRgNCw0LwgXCIgK1xuICAgIFwi0KHQv9GA0J/QvtC70LXQl9C90LDRhyBcIiArXG4gICAgXCLQodC/0YDQn9C+0LvQtdCY0LzRjyBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQsiBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCS0LLQtdC00JfQvSBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCd0L7QstGL0LUgXCIgK1xuICAgIFwi0KHQv9GA0KDQtdC60LLQn9GAIFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0J/RgNC10LTQl9C9IFwiICtcbiAgICBcItCh0L/RgNCg0LXQutCy0KDQtdC20LjQvCBcIiArXG4gICAgXCLQodC/0YDQoNC10LrQstCi0LjQv9Ci0LXQutGB0YIgXCIgK1xuICAgIFwi0KHQv9GA0KHQvtC30LTQsNGC0YwgXCIgK1xuICAgIFwi0KHQv9GA0KHQvtGB0YIgXCIgK1xuICAgIFwi0KHQv9GA0KHQvtGF0YDQsNC90LjRgtGMIFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9CY0YLQvtCzIFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgCBcIiArXG4gICAgXCLQodC/0YDQotCx0LvQodGC0YDQmtC+0LsgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0JzQsNC60YEgXCIgK1xuICAgIFwi0KHQv9GA0KLQsdC70KHRgtGA0JzQuNC9IFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCf0YDQtdC0IFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCh0LvQtdC0IFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCh0L7Qt9C0IFwiICtcbiAgICBcItCh0L/RgNCi0LHQu9Ch0YLRgNCj0LQgXCIgK1xuICAgIFwi0KHQv9GA0KLQtdC60J/RgNC10LTRgdGCIFwiICtcbiAgICBcItCh0L/RgNCj0LTQsNC70LjRgtGMIFwiICtcbiAgICBcItCh0YDQsNCy0L3QuNGC0YzQodGC0YAgXCIgK1xuICAgIFwi0KHRgtGA0JLQtdGA0YXQoNC10LPQuNGB0YLRgCBcIiArXG4gICAgXCLQodGC0YDQndC40LbQvdCg0LXQs9C40YHRgtGAIFwiICtcbiAgICBcItCh0YLRgNCi0LHQu9Ch0L/RgCBcIiArXG4gICAgXCLQodGD0LzQn9GA0L7QvyBcIiArXG4gICAgXCLQodGG0LXQvdCw0YDQuNC5IFwiICtcbiAgICBcItCh0YbQtdC90LDRgNC40LnQn9Cw0YDQsNC8IFwiICtcbiAgICBcItCi0LXQutCS0LXRgNGB0LjRjyBcIiArXG4gICAgXCLQotC10LrQntGA0LMgXCIgK1xuICAgIFwi0KLQvtGH0L0gXCIgK1xuICAgIFwi0KLRgNCw0L0gXCIgK1xuICAgIFwi0KLRgNCw0L3RgdC70LjRgtC10YDQsNGG0LjRjyBcIiArXG4gICAgXCLQo9C00LDQu9C40YLRjNCi0LDQsdC70LjRhtGDIFwiICtcbiAgICBcItCj0LTQsNC70LjRgtGM0KTQsNC50LsgXCIgK1xuICAgIFwi0KPQtNCh0L/RgCBcIiArXG4gICAgXCLQo9C00KHRgtGA0KLQsdC70KHQv9GAIFwiICtcbiAgICBcItCj0YHRgiBcIiArXG4gICAgXCLQo9GB0YLQsNC90L7QstC60LjQmtC+0L3RgdGC0LDQvdGCIFwiICtcbiAgICBcItCk0LDQudC70JDRgtGA0LjQsdGD0YLQodGH0LjRgtCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CQ0YLRgNC40LHRg9GC0KPRgdGC0LDQvdC+0LLQuNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQktGA0LXQvNGPIFwiICtcbiAgICBcItCk0LDQudC70JLRgNC10LzRj9Cj0YHRgtCw0L3QvtCy0LjRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JLRi9Cx0YDQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQl9Cw0L3Rj9GCIFwiICtcbiAgICBcItCk0LDQudC70JfQsNC/0LjRgdCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9CY0YHQutCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Ca0L7Qv9C40YDQvtCy0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70JzQvtC20L3QvtCn0LjRgtCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Ce0YLQutGA0YvRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQn9C10YDQtdC60L7QtNC40YDQvtCy0LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70J/QtdGA0LXQvNC10YHRgtC40YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cf0YDQvtGB0LzQvtGC0YDQtdGC0YwgXCIgK1xuICAgIFwi0KTQsNC50LvQoNCw0LfQvNC10YAgXCIgK1xuICAgIFwi0KTQsNC50LvQodC+0LfQtNCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Ch0YHRi9C70LrQsNCh0L7Qt9C00LDRgtGMIFwiICtcbiAgICBcItCk0LDQudC70KHRg9GJ0LXRgdGC0LLRg9C10YIgXCIgK1xuICAgIFwi0KTQsNC50LvQodGH0LjRgtCw0YLRjCBcIiArXG4gICAgXCLQpNCw0LnQu9Cj0LTQsNC70LjRgtGMIFwiICtcbiAgICBcItCk0LzRglNRTNCU0LDRgiBcIiArXG4gICAgXCLQpNC80YLQlNCw0YIgXCIgK1xuICAgIFwi0KTQvNGC0KHRgtGAIFwiICtcbiAgICBcItCk0LzRgtCn0YHQuyBcIiArXG4gICAgXCLQpNC+0YDQvNCw0YIgXCIgK1xuICAgIFwi0KbQnNCw0YHRgdC40LLQrdC70LXQvNC10L3RgiBcIiArXG4gICAgXCLQptCd0LDQsdC+0YDQlNCw0L3QvdGL0YXQoNC10LrQstC40LfQuNGCIFwiICtcbiAgICBcItCm0J/QvtC00YHRgtGAIFwiO1xuXG4gIC8vINCf0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C1INC/0LXRgNC10LzQtdC90L3Ri9C1ID09PiBidWlsdF9pblxuICB2YXIgcHJlZGVmaW5lZF92YXJpYWJsZXMgPVxuICAgIFwiQWx0U3RhdGUgXCIgK1xuICAgIFwiQXBwbGljYXRpb24gXCIgK1xuICAgIFwiQ2FsbFR5cGUgXCIgK1xuICAgIFwiQ29tcG9uZW50VG9rZW5zIFwiICtcbiAgICBcIkNyZWF0ZWRKb2JzIFwiICtcbiAgICBcIkNyZWF0ZWROb3RpY2VzIFwiICtcbiAgICBcIkNvbnRyb2xTdGF0ZSBcIiArXG4gICAgXCJEaWFsb2dSZXN1bHQgXCIgK1xuICAgIFwiRGlhbG9ncyBcIiArXG4gICAgXCJFRG9jdW1lbnRzIFwiICtcbiAgICBcIkVEb2N1bWVudFZlcnNpb25Tb3VyY2UgXCIgK1xuICAgIFwiRm9sZGVycyBcIiArXG4gICAgXCJHbG9iYWxJRHMgXCIgK1xuICAgIFwiSm9iIFwiICtcbiAgICBcIkpvYnMgXCIgK1xuICAgIFwiSW5wdXRWYWx1ZSBcIiArXG4gICAgXCJMb29rVXBSZWZlcmVuY2UgXCIgK1xuICAgIFwiTG9va1VwUmVxdWlzaXRlTmFtZXMgXCIgK1xuICAgIFwiTG9va1VwU2VhcmNoIFwiICtcbiAgICBcIk9iamVjdCBcIiArXG4gICAgXCJQYXJlbnRDb21wb25lbnQgXCIgK1xuICAgIFwiUHJvY2Vzc2VzIFwiICtcbiAgICBcIlJlZmVyZW5jZXMgXCIgK1xuICAgIFwiUmVxdWlzaXRlIFwiICtcbiAgICBcIlJlcG9ydE5hbWUgXCIgK1xuICAgIFwiUmVwb3J0cyBcIiArXG4gICAgXCJSZXN1bHQgXCIgK1xuICAgIFwiU2NyaXB0cyBcIiArXG4gICAgXCJTZWFyY2hlcyBcIiArXG4gICAgXCJTZWxlY3RlZEF0dGFjaG1lbnRzIFwiICtcbiAgICBcIlNlbGVjdGVkSXRlbXMgXCIgK1xuICAgIFwiU2VsZWN0TW9kZSBcIiArXG4gICAgXCJTZW5kZXIgXCIgK1xuICAgIFwiU2VydmVyRXZlbnRzIFwiICtcbiAgICBcIlNlcnZpY2VGYWN0b3J5IFwiICtcbiAgICBcIlNoaWZ0U3RhdGUgXCIgK1xuICAgIFwiU3ViVGFzayBcIiArXG4gICAgXCJTeXN0ZW1EaWFsb2dzIFwiICtcbiAgICBcIlRhc2tzIFwiICtcbiAgICBcIldpemFyZCBcIiArXG4gICAgXCJXaXphcmRzIFwiICtcbiAgICBcIldvcmsgXCIgK1xuICAgIFwi0JLRi9C30L7QstCh0L/QvtGB0L7QsSBcIiArXG4gICAgXCLQmNC80Y/QntGC0YfQtdGC0LAgXCIgK1xuICAgIFwi0KDQtdC60LLQl9C90LDRhyBcIjtcblxuICAvLyDQmNC90YLQtdGA0YTQtdC50YHRiyA9PT4gdHlwZVxuICB2YXIgaW50ZXJmYWNlcyA9XG4gICAgXCJJQXBwbGljYXRpb24gXCIgK1xuICAgIFwiSUFjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJJQWNjb3VudFJlcG9zaXRvcnkgXCIgK1xuICAgIFwiSUFjY291bnRTZWxlY3Rpb25SZXN0cmljdGlvbnMgXCIgK1xuICAgIFwiSUFjdGlvbiBcIiArXG4gICAgXCJJQWN0aW9uTGlzdCBcIiArXG4gICAgXCJJQWRtaW5pc3RyYXRpb25IaXN0b3J5RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUFuY2hvcnMgXCIgK1xuICAgIFwiSUFwcGxpY2F0aW9uIFwiICtcbiAgICBcIklBcmNoaXZlSW5mbyBcIiArXG4gICAgXCJJQXR0YWNobWVudCBcIiArXG4gICAgXCJJQXR0YWNobWVudExpc3QgXCIgK1xuICAgIFwiSUNoZWNrTGlzdEJveCBcIiArXG4gICAgXCJJQ2hlY2tQb2ludGVkTGlzdCBcIiArXG4gICAgXCJJQ29sdW1uIFwiICtcbiAgICBcIklDb21wb25lbnQgXCIgK1xuICAgIFwiSUNvbXBvbmVudERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklDb21wb25lbnRUb2tlbiBcIiArXG4gICAgXCJJQ29tcG9uZW50VG9rZW5GYWN0b3J5IFwiICtcbiAgICBcIklDb21wb25lbnRUb2tlbkluZm8gXCIgK1xuICAgIFwiSUNvbXBSZWNvcmRJbmZvIFwiICtcbiAgICBcIklDb25uZWN0aW9uIFwiICtcbiAgICBcIklDb250ZW50cyBcIiArXG4gICAgXCJJQ29udHJvbCBcIiArXG4gICAgXCJJQ29udHJvbEpvYiBcIiArXG4gICAgXCJJQ29udHJvbEpvYkluZm8gXCIgK1xuICAgIFwiSUNvbnRyb2xMaXN0IFwiICtcbiAgICBcIklDcnlwdG8gXCIgK1xuICAgIFwiSUNyeXB0bzIgXCIgK1xuICAgIFwiSUN1c3RvbUpvYiBcIiArXG4gICAgXCJJQ3VzdG9tSm9iSW5mbyBcIiArXG4gICAgXCJJQ3VzdG9tTGlzdEJveCBcIiArXG4gICAgXCJJQ3VzdG9tT2JqZWN0V2l6YXJkU3RlcCBcIiArXG4gICAgXCJJQ3VzdG9tV29yayBcIiArXG4gICAgXCJJQ3VzdG9tV29ya0luZm8gXCIgK1xuICAgIFwiSURhdGFTZXQgXCIgK1xuICAgIFwiSURhdGFTZXRBY2Nlc3NJbmZvIFwiICtcbiAgICBcIklEYXRhU2lnbmVyIFwiICtcbiAgICBcIklEYXRlQ3JpdGVyaW9uIFwiICtcbiAgICBcIklEYXRlUmVxdWlzaXRlIFwiICtcbiAgICBcIklEYXRlUmVxdWlzaXRlRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSURhdGVWYWx1ZSBcIiArXG4gICAgXCJJRGVhQWNjZXNzUmlnaHRzIFwiICtcbiAgICBcIklEZWFPYmplY3RJbmZvIFwiICtcbiAgICBcIklEZXZlbG9wbWVudENvbXBvbmVudExvY2sgXCIgK1xuICAgIFwiSURpYWxvZyBcIiArXG4gICAgXCJJRGlhbG9nRmFjdG9yeSBcIiArXG4gICAgXCJJRGlhbG9nUGlja1JlcXVpc2l0ZUl0ZW1zIFwiICtcbiAgICBcIklEaWFsb2dzRmFjdG9yeSBcIiArXG4gICAgXCJJRElDU0ZhY3RvcnkgXCIgK1xuICAgIFwiSURvY1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJRG9jdW1lbnRJbmZvIFwiICtcbiAgICBcIklEdWFsTGlzdERpYWxvZyBcIiArXG4gICAgXCJJRUNlcnRpZmljYXRlIFwiICtcbiAgICBcIklFQ2VydGlmaWNhdGVJbmZvIFwiICtcbiAgICBcIklFQ2VydGlmaWNhdGVzIFwiICtcbiAgICBcIklFZGl0Q29udHJvbCBcIiArXG4gICAgXCJJRWRpdG9yRm9ybSBcIiArXG4gICAgXCJJRWRtc0V4cGxvcmVyIFwiICtcbiAgICBcIklFZG1zT2JqZWN0IFwiICtcbiAgICBcIklFZG1zT2JqZWN0RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUVkbXNPYmplY3RGYWN0b3J5IFwiICtcbiAgICBcIklFZG1zT2JqZWN0SW5mbyBcIiArXG4gICAgXCJJRURvY3VtZW50IFwiICtcbiAgICBcIklFRG9jdW1lbnRBY2Nlc3NSaWdodHMgXCIgK1xuICAgIFwiSUVEb2N1bWVudERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklFRG9jdW1lbnRFZGl0b3IgXCIgK1xuICAgIFwiSUVEb2N1bWVudEZhY3RvcnkgXCIgK1xuICAgIFwiSUVEb2N1bWVudEluZm8gXCIgK1xuICAgIFwiSUVEb2N1bWVudFN0b3JhZ2UgXCIgK1xuICAgIFwiSUVEb2N1bWVudFZlcnNpb24gXCIgK1xuICAgIFwiSUVEb2N1bWVudFZlcnNpb25MaXN0RGlhbG9nIFwiICtcbiAgICBcIklFRG9jdW1lbnRWZXJzaW9uU291cmNlIFwiICtcbiAgICBcIklFRG9jdW1lbnRXaXphcmRTdGVwIFwiICtcbiAgICBcIklFRG9jVmVyU2lnbmF0dXJlIFwiICtcbiAgICBcIklFRG9jVmVyc2lvblN0YXRlIFwiICtcbiAgICBcIklFbmFibGVkTW9kZSBcIiArXG4gICAgXCJJRW5jb2RlUHJvdmlkZXIgXCIgK1xuICAgIFwiSUVuY3J5cHRlciBcIiArXG4gICAgXCJJRXZlbnQgXCIgK1xuICAgIFwiSUV2ZW50TGlzdCBcIiArXG4gICAgXCJJRXhjZXB0aW9uIFwiICtcbiAgICBcIklFeHRlcm5hbEV2ZW50cyBcIiArXG4gICAgXCJJRXh0ZXJuYWxIYW5kbGVyIFwiICtcbiAgICBcIklGYWN0b3J5IFwiICtcbiAgICBcIklGaWVsZCBcIiArXG4gICAgXCJJRmlsZURpYWxvZyBcIiArXG4gICAgXCJJRm9sZGVyIFwiICtcbiAgICBcIklGb2xkZXJEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJRm9sZGVyRGlhbG9nIFwiICtcbiAgICBcIklGb2xkZXJGYWN0b3J5IFwiICtcbiAgICBcIklGb2xkZXJJbmZvIFwiICtcbiAgICBcIklGb3JFYWNoIFwiICtcbiAgICBcIklGb3JtIFwiICtcbiAgICBcIklGb3JtVGl0bGUgXCIgK1xuICAgIFwiSUZvcm1XaXphcmRTdGVwIFwiICtcbiAgICBcIklHbG9iYWxJREZhY3RvcnkgXCIgK1xuICAgIFwiSUdsb2JhbElESW5mbyBcIiArXG4gICAgXCJJR3JpZCBcIiArXG4gICAgXCJJSGFzaGVyIFwiICtcbiAgICBcIklIaXN0b3J5RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSUh5cGVyTGlua0NvbnRyb2wgXCIgK1xuICAgIFwiSUltYWdlQnV0dG9uIFwiICtcbiAgICBcIklJbWFnZUNvbnRyb2wgXCIgK1xuICAgIFwiSUlubmVyUGFuZWwgXCIgK1xuICAgIFwiSUlucGxhY2VIaW50IFwiICtcbiAgICBcIklJbnRlZ2VyQ3JpdGVyaW9uIFwiICtcbiAgICBcIklJbnRlZ2VyTGlzdCBcIiArXG4gICAgXCJJSW50ZWdlclJlcXVpc2l0ZSBcIiArXG4gICAgXCJJSW50ZWdlclZhbHVlIFwiICtcbiAgICBcIklJU0JMRWRpdG9yRm9ybSBcIiArXG4gICAgXCJJSm9iIFwiICtcbiAgICBcIklKb2JEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJSm9iRmFjdG9yeSBcIiArXG4gICAgXCJJSm9iRm9ybSBcIiArXG4gICAgXCJJSm9iSW5mbyBcIiArXG4gICAgXCJJTGFiZWxDb250cm9sIFwiICtcbiAgICBcIklMYXJnZUludGVnZXJDcml0ZXJpb24gXCIgK1xuICAgIFwiSUxhcmdlSW50ZWdlclJlcXVpc2l0ZSBcIiArXG4gICAgXCJJTGFyZ2VJbnRlZ2VyVmFsdWUgXCIgK1xuICAgIFwiSUxpY2Vuc2VJbmZvIFwiICtcbiAgICBcIklMaWZlQ3ljbGVTdGFnZSBcIiArXG4gICAgXCJJTGlzdCBcIiArXG4gICAgXCJJTGlzdEJveCBcIiArXG4gICAgXCJJTG9jYWxJREluZm8gXCIgK1xuICAgIFwiSUxvY2FsaXphdGlvbiBcIiArXG4gICAgXCJJTG9jayBcIiArXG4gICAgXCJJTWVtb3J5RGF0YVNldCBcIiArXG4gICAgXCJJTWVzc2FnaW5nRmFjdG9yeSBcIiArXG4gICAgXCJJTWV0YWRhdGFSZXBvc2l0b3J5IFwiICtcbiAgICBcIklOb3RpY2UgXCIgK1xuICAgIFwiSU5vdGljZUluZm8gXCIgK1xuICAgIFwiSU51bWVyaWNDcml0ZXJpb24gXCIgK1xuICAgIFwiSU51bWVyaWNSZXF1aXNpdGUgXCIgK1xuICAgIFwiSU51bWVyaWNWYWx1ZSBcIiArXG4gICAgXCJJT2JqZWN0IFwiICtcbiAgICBcIklPYmplY3REZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJT2JqZWN0SW1wb3J0ZXIgXCIgK1xuICAgIFwiSU9iamVjdEluZm8gXCIgK1xuICAgIFwiSU9ic2VydmVyIFwiICtcbiAgICBcIklQYW5lbEdyb3VwIFwiICtcbiAgICBcIklQaWNrQ3JpdGVyaW9uIFwiICtcbiAgICBcIklQaWNrUHJvcGVydHkgXCIgK1xuICAgIFwiSVBpY2tSZXF1aXNpdGUgXCIgK1xuICAgIFwiSVBpY2tSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUGlja1JlcXVpc2l0ZUl0ZW0gXCIgK1xuICAgIFwiSVBpY2tSZXF1aXNpdGVJdGVtcyBcIiArXG4gICAgXCJJUGlja1ZhbHVlIFwiICtcbiAgICBcIklQcml2aWxlZ2UgXCIgK1xuICAgIFwiSVByaXZpbGVnZUxpc3QgXCIgK1xuICAgIFwiSVByb2Nlc3MgXCIgK1xuICAgIFwiSVByb2Nlc3NGYWN0b3J5IFwiICtcbiAgICBcIklQcm9jZXNzTWVzc2FnZSBcIiArXG4gICAgXCJJUHJvZ3Jlc3MgXCIgK1xuICAgIFwiSVByb3BlcnR5IFwiICtcbiAgICBcIklQcm9wZXJ0eUNoYW5nZUV2ZW50IFwiICtcbiAgICBcIklRdWVyeSBcIiArXG4gICAgXCJJUmVmZXJlbmNlIFwiICtcbiAgICBcIklSZWZlcmVuY2VDcml0ZXJpb24gXCIgK1xuICAgIFwiSVJlZmVyZW5jZUVuYWJsZWRNb2RlIFwiICtcbiAgICBcIklSZWZlcmVuY2VGYWN0b3J5IFwiICtcbiAgICBcIklSZWZlcmVuY2VIaXN0b3J5RGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVJlZmVyZW5jZUluZm8gXCIgK1xuICAgIFwiSVJlZmVyZW5jZVJlY29yZENhcmRXaXphcmRTdGVwIFwiICtcbiAgICBcIklSZWZlcmVuY2VSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUmVmZXJlbmNlc0ZhY3RvcnkgXCIgK1xuICAgIFwiSVJlZmVyZW5jZVZhbHVlIFwiICtcbiAgICBcIklSZWZSZXF1aXNpdGUgXCIgK1xuICAgIFwiSVJlcG9ydCBcIiArXG4gICAgXCJJUmVwb3J0RmFjdG9yeSBcIiArXG4gICAgXCJJUmVxdWlzaXRlIFwiICtcbiAgICBcIklSZXF1aXNpdGVEZXNjcmlwdGlvbiBcIiArXG4gICAgXCJJUmVxdWlzaXRlRGVzY3JpcHRpb25MaXN0IFwiICtcbiAgICBcIklSZXF1aXNpdGVGYWN0b3J5IFwiICtcbiAgICBcIklSaWNoRWRpdCBcIiArXG4gICAgXCJJUm91dGVTdGVwIFwiICtcbiAgICBcIklSdWxlIFwiICtcbiAgICBcIklSdWxlTGlzdCBcIiArXG4gICAgXCJJU2NoZW1lQmxvY2sgXCIgK1xuICAgIFwiSVNjcmlwdCBcIiArXG4gICAgXCJJU2NyaXB0RmFjdG9yeSBcIiArXG4gICAgXCJJU2VhcmNoQ3JpdGVyaWEgXCIgK1xuICAgIFwiSVNlYXJjaENyaXRlcmlvbiBcIiArXG4gICAgXCJJU2VhcmNoRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVNlYXJjaEZhY3RvcnkgXCIgK1xuICAgIFwiSVNlYXJjaEZvbGRlckluZm8gXCIgK1xuICAgIFwiSVNlYXJjaEZvck9iamVjdERlc2NyaXB0aW9uIFwiICtcbiAgICBcIklTZWFyY2hSZXN1bHRSZXN0cmljdGlvbnMgXCIgK1xuICAgIFwiSVNlY3VyZWRDb250ZXh0IFwiICtcbiAgICBcIklTZWxlY3REaWFsb2cgXCIgK1xuICAgIFwiSVNlcnZlckV2ZW50IFwiICtcbiAgICBcIklTZXJ2ZXJFdmVudEZhY3RvcnkgXCIgK1xuICAgIFwiSVNlcnZpY2VEaWFsb2cgXCIgK1xuICAgIFwiSVNlcnZpY2VGYWN0b3J5IFwiICtcbiAgICBcIklTaWduYXR1cmUgXCIgK1xuICAgIFwiSVNpZ25Qcm92aWRlciBcIiArXG4gICAgXCJJU2lnblByb3ZpZGVyMiBcIiArXG4gICAgXCJJU2lnblByb3ZpZGVyMyBcIiArXG4gICAgXCJJU2ltcGxlQ3JpdGVyaW9uIFwiICtcbiAgICBcIklTdHJpbmdDcml0ZXJpb24gXCIgK1xuICAgIFwiSVN0cmluZ0xpc3QgXCIgK1xuICAgIFwiSVN0cmluZ1JlcXVpc2l0ZSBcIiArXG4gICAgXCJJU3RyaW5nUmVxdWlzaXRlRGVzY3JpcHRpb24gXCIgK1xuICAgIFwiSVN0cmluZ1ZhbHVlIFwiICtcbiAgICBcIklTeXN0ZW1EaWFsb2dzRmFjdG9yeSBcIiArXG4gICAgXCJJU3lzdGVtSW5mbyBcIiArXG4gICAgXCJJVGFiU2hlZXQgXCIgK1xuICAgIFwiSVRhc2sgXCIgK1xuICAgIFwiSVRhc2tBYm9ydFJlYXNvbkluZm8gXCIgK1xuICAgIFwiSVRhc2tDYXJkV2l6YXJkU3RlcCBcIiArXG4gICAgXCJJVGFza0Rlc2NyaXB0aW9uIFwiICtcbiAgICBcIklUYXNrRmFjdG9yeSBcIiArXG4gICAgXCJJVGFza0luZm8gXCIgK1xuICAgIFwiSVRhc2tSb3V0ZSBcIiArXG4gICAgXCJJVGV4dENyaXRlcmlvbiBcIiArXG4gICAgXCJJVGV4dFJlcXVpc2l0ZSBcIiArXG4gICAgXCJJVGV4dFZhbHVlIFwiICtcbiAgICBcIklUcmVlTGlzdFNlbGVjdERpYWxvZyBcIiArXG4gICAgXCJJVXNlciBcIiArXG4gICAgXCJJVXNlckxpc3QgXCIgK1xuICAgIFwiSVZhbHVlIFwiICtcbiAgICBcIklWaWV3IFwiICtcbiAgICBcIklXZWJCcm93c2VyQ29udHJvbCBcIiArXG4gICAgXCJJV2l6YXJkIFwiICtcbiAgICBcIklXaXphcmRBY3Rpb24gXCIgK1xuICAgIFwiSVdpemFyZEZhY3RvcnkgXCIgK1xuICAgIFwiSVdpemFyZEZvcm1FbGVtZW50IFwiICtcbiAgICBcIklXaXphcmRQYXJhbSBcIiArXG4gICAgXCJJV2l6YXJkUGlja1BhcmFtIFwiICtcbiAgICBcIklXaXphcmRSZWZlcmVuY2VQYXJhbSBcIiArXG4gICAgXCJJV2l6YXJkU3RlcCBcIiArXG4gICAgXCJJV29ya0FjY2Vzc1JpZ2h0cyBcIiArXG4gICAgXCJJV29ya0Rlc2NyaXB0aW9uIFwiICtcbiAgICBcIklXb3JrZmxvd0Fza2FibGVQYXJhbSBcIiArXG4gICAgXCJJV29ya2Zsb3dBc2thYmxlUGFyYW1zIFwiICtcbiAgICBcIklXb3JrZmxvd0Jsb2NrIFwiICtcbiAgICBcIklXb3JrZmxvd0Jsb2NrUmVzdWx0IFwiICtcbiAgICBcIklXb3JrZmxvd0VuYWJsZWRNb2RlIFwiICtcbiAgICBcIklXb3JrZmxvd1BhcmFtIFwiICtcbiAgICBcIklXb3JrZmxvd1BpY2tQYXJhbSBcIiArXG4gICAgXCJJV29ya2Zsb3dSZWZlcmVuY2VQYXJhbSBcIiArXG4gICAgXCJJV29ya1N0YXRlIFwiICtcbiAgICBcIklXb3JrVHJlZUN1c3RvbU5vZGUgXCIgK1xuICAgIFwiSVdvcmtUcmVlSm9iTm9kZSBcIiArXG4gICAgXCJJV29ya1RyZWVUYXNrTm9kZSBcIiArXG4gICAgXCJJWE1MRWRpdG9yRm9ybSBcIiArXG4gICAgXCJTQkNyeXB0byBcIjtcblxuICAvLyBidWlsdF9pbiA6INCy0YHRgtGA0L7QtdC90L3Ri9C1INC40LvQuCDQsdC40LHQu9C40L7RgtC10YfQvdGL0LUg0L7QsdGK0LXQutGC0YsgKNC60L7QvdGB0YLQsNC90YLRiywg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPKVxuICB2YXIgQlVJTFRJTiA9IENPTlNUQU5UUyArIEVOVU1TO1xuXG4gIC8vIGNsYXNzOiDQstGB0YLRgNC+0LXQvdC90YvQtSDQvdCw0LHQvtGA0Ysg0LfQvdCw0YfQtdC90LjQuSwg0YHQuNGB0YLQtdC80L3Ri9C1INC+0LHRitC10LrRgtGLLCDRhNCw0LHRgNC40LrQuFxuICB2YXIgQ0xBU1MgPSBwcmVkZWZpbmVkX3ZhcmlhYmxlcztcblxuICAvLyBsaXRlcmFsIDog0L/RgNC40LzQuNGC0LjQstC90YvQtSDRgtC40L/Ri1xuICB2YXIgTElURVJBTCA9IFwibnVsbCB0cnVlIGZhbHNlIG5pbCBcIjtcblxuICAvLyBudW1iZXIgOiDRh9C40YHQu9CwXG4gIHZhciBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogXCJudW1iZXJcIixcbiAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIC8vIHN0cmluZyA6INGB0YLRgNC+0LrQuFxuICB2YXIgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgdmFyaWFudHM6IFt7IGJlZ2luOiAnXCInLCBlbmQ6ICdcIicgfSwgeyBiZWdpbjogXCInXCIsIGVuZDogXCInXCIgfV0sXG4gIH07XG5cbiAgLy8g0KLQvtC60LXQvdGLXG4gIHZhciBET0NUQUdTID0ge1xuICAgIGNsYXNzTmFtZTogXCJkb2N0YWdcIixcbiAgICBiZWdpbjogXCJcXFxcYig/OlRPRE98RE9ORXxCRUdJTnxFTkR8U1RVQnxDSEd8RklYTUV8Tk9URXxCVUd8WFhYKVxcXFxiXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIC8vINCe0LTQvdC+0YHRgtGA0L7Rh9C90YvQuSDQutC+0LzQvNC10L3RgtCw0YDQuNC5XG4gIHZhciBJU0JMX0xJTkVfQ09NTUVOVF9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgYmVnaW46IFwiLy9cIixcbiAgICBlbmQ6IFwiJFwiLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFLCBET0NUQUdTXSxcbiAgfTtcblxuICAvLyDQnNC90L7Qs9C+0YHRgtGA0L7Rh9C90YvQuSDQutC+0LzQvNC10L3RgtCw0YDQuNC5XG4gIHZhciBJU0JMX0JMT0NLX0NPTU1FTlRfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgIGJlZ2luOiBcIi9cXFxcKlwiLFxuICAgIGVuZDogXCJcXFxcKi9cIixcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERSwgRE9DVEFHU10sXG4gIH07XG5cbiAgLy8gY29tbWVudCA6INC60L7QvNC80LXQvdGC0LDRgNC40LhcbiAgdmFyIENPTU1FTlRTID0ge1xuICAgIHZhcmlhbnRzOiBbSVNCTF9MSU5FX0NPTU1FTlRfTU9ERSwgSVNCTF9CTE9DS19DT01NRU5UX01PREVdLFxuICB9O1xuXG4gIC8vIGtleXdvcmRzIDog0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwXG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiBLRVlXT1JELFxuICAgIGJ1aWx0X2luOiBCVUlMVElOLFxuICAgIGNsYXNzOiBDTEFTUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMLFxuICB9O1xuXG4gIC8vIG1ldGhvZHMgOiDQvNC10YLQvtC00YtcbiAgdmFyIE1FVEhPRFMgPSB7XG4gICAgYmVnaW46IFwiXFxcXC5cXFxccypcIiArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuXG4gIC8vIHR5cGUgOiDQstGB0YLRgNC+0LXQvdC90YvQtSDRgtC40L/Ri1xuICB2YXIgVFlQRVMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInR5cGVcIixcbiAgICBiZWdpbjogXCI6WyBcXFxcdF0qKFwiICsgaW50ZXJmYWNlcy50cmltKCkucmVwbGFjZSgvXFxzL2csIFwifFwiKSArIFwiKVwiLFxuICAgIGVuZDogXCJbIFxcXFx0XSo9XCIsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgfTtcblxuICAvLyB2YXJpYWJsZXMgOiDQv9C10YDQtdC80LXQvdC90YvQtVxuICB2YXIgVkFSSUFCTEVTID0ge1xuICAgIGNsYXNzTmFtZTogXCJ2YXJpYWJsZVwiLFxuICAgIGxleGVtZXM6IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGJlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1RZUEVTLCBNRVRIT0RTXSxcbiAgfTtcblxuICAvLyDQmNC80LXQvdCwINGE0YPQvdC60YbQuNC5XG4gIHZhciBGVU5DVElPTl9USVRMRSA9IEZVTkNUSU9OX05BTUVfSURFTlRfUkUgKyBcIlxcXFwoXCI7XG5cbiAgdmFyIFRJVExFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiBcInRpdGxlXCIsXG4gICAgbGV4ZW1lczogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgYnVpbHRfaW46IHN5c3RlbV9mdW5jdGlvbnMsXG4gICAgfSxcbiAgICBiZWdpbjogRlVOQ1RJT05fVElUTEUsXG4gICAgZW5kOiBcIlxcXFwoXCIsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgfTtcblxuICAvLyBmdW5jdGlvbiA6INGE0YPQvdC60YbQuNC4XG4gIHZhciBGVU5DVElPTlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcImZ1bmN0aW9uXCIsXG4gICAgYmVnaW46IEZVTkNUSU9OX1RJVExFLFxuICAgIGVuZDogXCJcXFxcKSRcIixcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiBcIltcXFxcW1xcXFxdXFxcXHxcXFxcJFxcXFw/JSx+I0BdXCIsXG4gICAgY29udGFpbnM6IFtUSVRMRV9NT0RFLCBNRVRIT0RTLCBWQVJJQUJMRVMsIFNUUklOR1MsIE5VTUJFUlMsIENPTU1FTlRTXSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFtcImlzYmxcIl0sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiBcIlxcXFwkfFxcXFw/fCV8LHw7JHx+fCN8QHw8L1wiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBGVU5DVElPTlMsXG4gICAgICBUWVBFUyxcbiAgICAgIE1FVEhPRFMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBTVFJJTkdTLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIENPTU1FTlRTLFxuICAgIF0sXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSkFWQV9JREVOVF9SRSA9ICdbXFx1MDBDMC1cXHUwMkI4YS16QS1aXyRdW1xcdTAwQzAtXFx1MDJCOGEtekEtWl8kMC05XSonO1xuICB2YXIgR0VORVJJQ19JREVOVF9SRSA9IEpBVkFfSURFTlRfUkUgKyAnKDwnICsgSkFWQV9JREVOVF9SRSArICcoXFxcXHMqLFxcXFxzKicgKyBKQVZBX0lERU5UX1JFICsgJykqPik/JztcbiAgdmFyIEtFWVdPUkRTID1cbiAgICAnZmFsc2Ugc3luY2hyb25pemVkIGludCBhYnN0cmFjdCBmbG9hdCBwcml2YXRlIGNoYXIgYm9vbGVhbiB2YXIgc3RhdGljIG51bGwgaWYgY29uc3QgJyArXG4gICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCB2b2lkICcgK1xuICAgICdlbnVtIGVsc2UgYnJlYWsgdHJhbnNpZW50IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlIGFzc2VydCBzaG9ydCAnICtcbiAgICAncGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgJyArXG4gICAgJ21vZHVsZSByZXF1aXJlcyBleHBvcnRzIGRvJztcblxuICAvLyBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL3RlY2hub3Rlcy9ndWlkZXMvbGFuZ3VhZ2UvdW5kZXJzY29yZXMtbGl0ZXJhbHMuaHRtbFxuICB2YXIgSkFWQV9OVU1CRVJfUkUgPSAnXFxcXGInICtcbiAgICAnKCcgK1xuICAgICAgJzBbYkJdKFswMV0rWzAxX10rWzAxXSt8WzAxXSspJyArIC8vIDBiLi4uXG4gICAgICAnfCcgK1xuICAgICAgJzBbeFhdKFthLWZBLUYwLTldK1thLWZBLUYwLTlfXStbYS1mQS1GMC05XSt8W2EtZkEtRjAtOV0rKScgKyAvLyAweC4uLlxuICAgICAgJ3wnICtcbiAgICAgICcoJyArXG4gICAgICAgICcoW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykoXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKykpPycgK1xuICAgICAgICAnfCcgK1xuICAgICAgICAnXFxcXC4oW1xcXFxkXStbXFxcXGRfXStbXFxcXGRdK3xbXFxcXGRdKyknICtcbiAgICAgICcpJyArXG4gICAgICAnKFtlRV1bLStdP1xcXFxkKyk/JyArIC8vIG9jdGFsLCBkZWNpbWFsLCBmbG9hdFxuICAgICcpJyArXG4gICAgJ1tsTGZGXT8nO1xuICB2YXIgSkFWQV9OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBKQVZBX05VTUJFUl9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnanNwJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC88XFwvfCMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlIDogMCxcbiAgICAgICAgICBjb250YWlucyA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICBiZWdpbjogL1xcdytALywgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWUgOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW4gOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAvW3s7PV0vLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGlsbGVnYWw6IC9bOlwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2JlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeHByZXNzaW9uIGtleXdvcmRzIHByZXZlbnQgJ2tleXdvcmQgTmFtZSguLi4pJyBmcm9tIGJlaW5nXG4gICAgICAgIC8vIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduZXcgdGhyb3cgcmV0dXJuIGVsc2UnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcoJyArIEdFTkVSSUNfSURFTlRfUkUgKyAnXFxcXHMrKSsnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzKlxcXFwoJywgcmV0dXJuQmVnaW46IHRydWUsIGVuZDogL1t7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBKQVZBX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbQS1aYS16JF9dWzAtOUEtWmEteiRfXSonO1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdpbiBvZiBpZiBmb3Igd2hpbGUgZmluYWxseSB2YXIgbmV3IGZ1bmN0aW9uIGRvIHJldHVybiB2b2lkIGVsc2UgYnJlYWsgY2F0Y2ggJyArXG4gICAgICAnaW5zdGFuY2VvZiB3aXRoIHRocm93IGNhc2UgZGVmYXVsdCB0cnkgdGhpcyBzd2l0Y2ggY29udGludWUgdHlwZW9mIGRlbGV0ZSAnICtcbiAgICAgICdsZXQgeWllbGQgY29uc3QgZXhwb3J0IHN1cGVyIGRlYnVnZ2VyIGFzIGFzeW5jIGF3YWl0IHN0YXRpYyAnICtcbiAgICAgIC8vIEVDTUFTY3JpcHQgNiBtb2R1bGVzIGltcG9ydFxuICAgICAgJ2ltcG9ydCBmcm9tIGFzJ1xuICAgICxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5JyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdldmFsIGlzRmluaXRlIGlzTmFOIHBhcnNlRmxvYXQgcGFyc2VJbnQgZGVjb2RlVVJJIGRlY29kZVVSSUNvbXBvbmVudCAnICtcbiAgICAgICdlbmNvZGVVUkkgZW5jb2RlVVJJQ29tcG9uZW50IGVzY2FwZSB1bmVzY2FwZSBPYmplY3QgRnVuY3Rpb24gQm9vbGVhbiBFcnJvciAnICtcbiAgICAgICdFdmFsRXJyb3IgSW50ZXJuYWxFcnJvciBSYW5nZUVycm9yIFJlZmVyZW5jZUVycm9yIFN0b3BJdGVyYXRpb24gU3ludGF4RXJyb3IgJyArXG4gICAgICAnVHlwZUVycm9yIFVSSUVycm9yIE51bWJlciBNYXRoIERhdGUgU3RyaW5nIFJlZ0V4cCBBcnJheSBGbG9hdDMyQXJyYXkgJyArXG4gICAgICAnRmxvYXQ2NEFycmF5IEludDE2QXJyYXkgSW50MzJBcnJheSBJbnQ4QXJyYXkgVWludDE2QXJyYXkgVWludDMyQXJyYXkgJyArXG4gICAgICAnVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBBcnJheUJ1ZmZlciBEYXRhVmlldyBKU09OIEludGwgYXJndW1lbnRzIHJlcXVpcmUgJyArXG4gICAgICAnbW9kdWxlIGNvbnNvbGUgd2luZG93IGRvY3VtZW50IFN5bWJvbCBTZXQgTWFwIFdlYWtTZXQgV2Vha01hcCBQcm94eSBSZWZsZWN0ICcgK1xuICAgICAgJ1Byb21pc2UnXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBbYkJdWzAxXSspbj8nIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtvT11bMC03XSspbj8nIH0sXG4gICAgICB7IGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ24/JyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLCBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXSAgLy8gZGVmaW5lZCBsYXRlclxuICB9O1xuICB2YXIgSFRNTF9URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2h0bWxgJywgZW5kOiAnJyxcbiAgICBzdGFydHM6IHtcbiAgICAgIGVuZDogJ2AnLCByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICBTVUJTVFxuICAgICAgXSxcbiAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICB9XG4gIH07XG4gIHZhciBDU1NfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdjc3NgJywgZW5kOiAnJyxcbiAgICBzdGFydHM6IHtcbiAgICAgIGVuZDogJ2AnLCByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICBTVUJTVFxuICAgICAgXSxcbiAgICAgIHN1Ykxhbmd1YWdlOiAnY3NzJyxcbiAgICB9XG4gIH07XG4gIHZhciBURU1QTEFURV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgU1VCU1RcbiAgICBdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1xuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIEhUTUxfVEVNUExBVEUsXG4gICAgQ1NTX1RFTVBMQVRFLFxuICAgIFRFTVBMQVRFX1NUUklORyxcbiAgICBOVU1CRVIsXG4gICAgaGxqcy5SRUdFWFBfTU9ERVxuICBdO1xuICB2YXIgUEFSQU1TX0NPTlRBSU5TID0gU1VCU1QuY29udGFpbnMuY29uY2F0KFtcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERVxuICBdKTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnanMnLCAnanN4J10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICBiZWdpbjogL15cXHMqWydcIl11c2UgKHN0cmljdHxhc20pWydcIl0vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eIyEvLCBlbmQ6IC8kL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBIVE1MX1RFTVBMQVRFLFxuICAgICAgQ1NTX1RFTVBMQVRFLFxuICAgICAgVEVNUExBVEVfU1RSSU5HLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUJFUixcbiAgICAgIHsgLy8gb2JqZWN0IGF0dHIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAvW3ssXFxuXVxccyovLCByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IElERU5UX1JFICsgJ1xcXFxzKjonLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe2NsYXNzTmFtZTogJ2F0dHInLCBiZWdpbjogSURFTlRfUkUsIHJlbGV2YW5jZTogMH1dXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKFxcXFwoLio/XFxcXCl8JyArIElERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IElERU5UX1JFXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxzLyxcbiAgICAgICAgICAgIGVuZDogL1xccyovLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gRTRYIC8gSlNYXG4gICAgICAgICAgICBiZWdpbjogLzwvLCBlbmQ6IC8oXFwvW0EtWmEtejAtOVxcXFwuXzotXSt8W0EtWmEtejAtOVxcXFwuXzotXStcXC8pPi8sXG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rXFxzKlxcLz4vLCBza2lwOiB0cnVlIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogLzxbQS1aYS16MC05XFxcXC5fOi1dKy8sIGVuZDogLyhcXC9bQS1aYS16MC05XFxcXC5fOi1dK3xbQS1aYS16MC05XFxcXC5fOi1dK1xcLyk+Lywgc2tpcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgeyBiZWdpbjogLzxbQS1aYS16MC05XFxcXC5fOi1dK1xccypcXC8+Lywgc2tpcDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgJ3NlbGYnXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7YmVnaW46IElERU5UX1JFfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvXFxbfCUvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcJFsoLl0vIC8vIHJlbGV2YW5jZSBib29zdGVyIGZvciBhIHBhdHRlcm4gY29tbW9uIHRvIEpTIGxpYnM6IGAkKHNvbWV0aGluZylgIGFuZCBgJC5zb21ldGhpbmdgXG4gICAgICB9LFxuICAgICAgaGxqcy5NRVRIT0RfR1VBUkQsXG4gICAgICB7IC8vIEVTNiBjbGFzc1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcycsIGVuZDogL1t7Oz1dLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1s6XCJcXFtcXF1dLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnfSxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnY29uc3RydWN0b3IgZ2V0IHNldCcsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jKD8hISkvXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhsanMpIHtcbiAgdmFyIFBBUkFNID0ge1xuICAgIGJlZ2luOiAvW1xcdy1dKyAqPS8sIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW3tjbGFzc05hbWU6ICdhdHRyJywgYmVnaW46IC9bXFx3LV0rL31dXG4gIH07XG4gIHZhciBQQVJBTVNCTE9DSyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGNvbnRhaW5zOiBbUEFSQU1dLFxuICAgIHJlbGV2YW5jZSA6IDBcbiAgfTtcbiAgdmFyIE9QRVJBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW46IC86W1xcd1xcLS5dKy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBQQVRIID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cXEIoKFtcXC8uXSlbXFx3XFwtLlxcLz1dKykrLyxcbiAgfTtcbiAgdmFyIENPTU1BTkRfUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC8tLVtcXHdcXC09XFwvXSsvLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnd2lsZGZseS1jbGknXSxcbiAgICBsZXhlbWVzOiAnW2EtelxcLV0rJyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2FsaWFzIGJhdGNoIGNkIGNsZWFyIGNvbW1hbmQgY29ubmVjdCBjb25uZWN0aW9uLWZhY3RvcnkgY29ubmVjdGlvbi1pbmZvIGRhdGEtc291cmNlIGRlcGxveSAnICtcbiAgICAgICdkZXBsb3ltZW50LWluZm8gZGVwbG95bWVudC1vdmVybGF5IGVjaG8gZWNoby1kbXIgaGVscCBoaXN0b3J5IGlmIGpkYmMtZHJpdmVyLWluZm8gam1zLXF1ZXVlfDIwIGptcy10b3BpY3wyMCBscyAnICtcbiAgICAgICdwYXRjaCBwd2QgcXVpdCByZWFkLWF0dHJpYnV0ZSByZWFkLW9wZXJhdGlvbiByZWxvYWQgcm9sbG91dC1wbGFuIHJ1bi1iYXRjaCBzZXQgc2h1dGRvd24gdHJ5IHVuYWxpYXMgJyArXG4gICAgICAndW5kZXBsb3kgdW5zZXQgdmVyc2lvbiB4YS1kYXRhLXNvdXJjZScsIC8vIG1vZHVsZVxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBDT01NQU5EX1BBUkFNUyxcbiAgICAgIE9QRVJBVElPTixcbiAgICAgIFBBVEgsXG4gICAgICBQQVJBTVNCTE9DS1xuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIExJVEVSQUxTID0ge2xpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGwnfTtcbiAgdmFyIEFMTE9XRURfQ09NTUVOVFMgPSBbXG4gICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgXVxuICB2YXIgVFlQRVMgPSBbXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgXTtcbiAgdmFyIFZBTFVFX0NPTlRBSU5FUiA9IHtcbiAgICBlbmQ6ICcsJywgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgY29udGFpbnM6IFRZUEVTLFxuICAgIGtleXdvcmRzOiBMSVRFUkFMU1xuICB9O1xuICB2YXIgT0JKRUNUID0ge1xuICAgIGJlZ2luOiAneycsIGVuZDogJ30nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KFZBTFVFX0NPTlRBSU5FUiwge2JlZ2luOiAvOi99KVxuICAgIF0uY29uY2F0KEFMTE9XRURfQ09NTUVOVFMpLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbiAgdmFyIEFSUkFZID0ge1xuICAgIGJlZ2luOiAnXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtobGpzLmluaGVyaXQoVkFMVUVfQ09OVEFJTkVSKV0sIC8vIGluaGVyaXQgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyB0aGF0IG1ha2VzIHNoYXJlZCBtb2RlcyB3aXRoIGVuZHNXaXRoUGFyZW50IGNvbXBpbGUgb25seSB0aGUgZW5kaW5nIG9mIG9uZSBvZiB0aGUgcGFyZW50c1xuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbiAgVFlQRVMucHVzaChPQkpFQ1QsIEFSUkFZKTtcbiAgQUxMT1dFRF9DT01NRU5UUy5mb3JFYWNoKGZ1bmN0aW9uKHJ1bGUpIHtcbiAgICBUWVBFUy5wdXNoKHJ1bGUpXG4gIH0pXG4gIHJldHVybiB7XG4gICAgY29udGFpbnM6IFRZUEVTLFxuICAgIGtleXdvcmRzOiBMSVRFUkFMUyxcbiAgICBpbGxlZ2FsOiAnXFxcXFMnXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBTaW5jZSB0aGVyZSBhcmUgbnVtZXJvdXMgc3BlY2lhbCBuYW1lcyBpbiBKdWxpYSwgaXQgaXMgdG9vIG11Y2ggdHJvdWJsZVxuICAvLyB0byBtYWludGFpbiB0aGVtIGJ5IGhhbmQuIEhlbmNlIHRoZXNlIG5hbWVzIChpLmUuIGtleXdvcmRzLCBsaXRlcmFscyBhbmRcbiAgLy8gYnVpbHQtaW5zKSBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKdWxpYSB2MC42IGl0c2VsZiB0aHJvdWdoXG4gIC8vIHRoZSBmb2xsb3dpbmcgc2NyaXB0cyBmb3IgZWFjaC5cblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgLy8gIyBrZXl3b3JkIGdlbmVyYXRvciwgbXVsdGktd29yZCBrZXl3b3JkcyBoYW5kbGVkIG1hbnVhbGx5IGJlbG93XG4gICAgLy8gZm9yZWFjaChwcmludGxuLCBbXCJpblwiLCBcImlzYVwiLCBcIndoZXJlXCJdKVxuICAgIC8vIGZvciBrdyBpbiBCYXNlLlJFUExDb21wbGV0aW9ucy5jb21wbGV0ZV9rZXl3b3JkKFwiXCIpXG4gICAgLy8gICAgIGlmICEoY29udGFpbnMoa3csIFwiIFwiKSB8fCBrdyA9PSBcInN0cnVjdFwiKVxuICAgIC8vICAgICAgICAgcHJpbnRsbihrdylcbiAgICAvLyAgICAgZW5kXG4gICAgLy8gZW5kXG4gICAga2V5d29yZDpcbiAgICAgICdpbiBpc2Egd2hlcmUgJyArXG4gICAgICAnYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uICcgK1xuICAgICAgJ2dsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlICcgK1xuICAgICAgLy8gbGVnYWN5LCB0byBiZSBkZXByZWNhdGVkIGluIHRoZSBuZXh0IHJlbGVhc2VcbiAgICAgICd0eXBlIGltbXV0YWJsZSBhYnN0cmFjdCBiaXRzdHlwZSB0eXBlYWxpYXMgJyxcblxuICAgIC8vICMgbGl0ZXJhbCBnZW5lcmF0b3JcbiAgICAvLyBwcmludGxuKFwidHJ1ZVwiKVxuICAgIC8vIHByaW50bG4oXCJmYWxzZVwiKVxuICAgIC8vIGZvciBuYW1lIGluIEJhc2UuUkVQTENvbXBsZXRpb25zLmNvbXBsZXRpb25zKFwiXCIsIDApWzFdXG4gICAgLy8gICAgIHRyeVxuICAgIC8vICAgICAgICAgdiA9IGV2YWwoU3ltYm9sKG5hbWUpKVxuICAgIC8vICAgICAgICAgaWYgISh2IGlzYSBGdW5jdGlvbiB8fCB2IGlzYSBUeXBlIHx8IHYgaXNhIFR5cGVWYXIgfHwgdiBpc2EgTW9kdWxlIHx8IHYgaXNhIENvbG9uKVxuICAgIC8vICAgICAgICAgICAgIHByaW50bG4obmFtZSlcbiAgICAvLyAgICAgICAgIGVuZFxuICAgIC8vICAgICBlbmRcbiAgICAvLyBlbmRcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgJyArXG4gICAgICAnQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCAnICtcbiAgICAgICdOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgJyArXG4gICAgICAnUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gJyArXG4gICAgICAnbm90aGluZyBwaSDOsyDPgCDPhiAnLFxuXG4gICAgLy8gIyBidWlsdF9pbiBnZW5lcmF0b3I6XG4gICAgLy8gZm9yIG5hbWUgaW4gQmFzZS5SRVBMQ29tcGxldGlvbnMuY29tcGxldGlvbnMoXCJcIiwgMClbMV1cbiAgICAvLyAgICAgdHJ5XG4gICAgLy8gICAgICAgICB2ID0gZXZhbChTeW1ib2wobmFtZSkpXG4gICAgLy8gICAgICAgICBpZiB2IGlzYSBUeXBlIHx8IHYgaXNhIFR5cGVWYXJcbiAgICAvLyAgICAgICAgICAgICBwcmludGxuKG5hbWUpXG4gICAgLy8gICAgICAgICBlbmRcbiAgICAvLyAgICAgZW5kXG4gICAgLy8gZW5kXG4gICAgYnVpbHRfaW46XG4gICAgICAnQU5ZIEFic3RyYWN0QXJyYXkgQWJzdHJhY3RDaGFubmVsIEFic3RyYWN0RmxvYXQgQWJzdHJhY3RNYXRyaXggQWJzdHJhY3RSTkcgQWJzdHJhY3RTZXJpYWxpemVyIEFic3RyYWN0U2V0ICcgK1xuICAgICAgJ0Fic3RyYWN0U3BhcnNlQXJyYXkgQWJzdHJhY3RTcGFyc2VNYXRyaXggQWJzdHJhY3RTcGFyc2VWZWN0b3IgQWJzdHJhY3RTdHJpbmcgQWJzdHJhY3RVbml0UmFuZ2UgQWJzdHJhY3RWZWNPck1hdCAnICtcbiAgICAgICdBYnN0cmFjdFZlY3RvciBBbnkgQXJndW1lbnRFcnJvciBBcnJheSBBc3NlcnRpb25FcnJvciBBc3NvY2lhdGl2ZSBCYXNlNjREZWNvZGVQaXBlIEJhc2U2NEVuY29kZVBpcGUgQmlkaWFnb25hbCAnK1xuICAgICAgJ0JpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uICcgK1xuICAgICAgJ0NhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgJyArXG4gICAgICAnQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggJyArXG4gICAgICAnQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCAnICtcbiAgICAgICdDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgJyArXG4gICAgICAnRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlICcgK1xuICAgICAgJ0Vycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uICcgK1xuICAgICAgJ0Z1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgJyArXG4gICAgICAnSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gJyArXG4gICAgICAnSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggJyArXG4gICAgICAnTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0ICcgK1xuICAgICAgJ09yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSAnICtcbiAgICAgICdQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEICcgK1xuICAgICAgJ1JlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgJyArXG4gICAgICAnUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgJyArXG4gICAgICAnU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlICcgK1xuICAgICAgJ1N0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsICcgK1xuICAgICAgJ1N5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgJyArXG4gICAgICAnVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yICcgK1xuICAgICAgJ1VuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgJyArXG4gICAgICAnVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgJ1xuICB9O1xuXG4gIC8vIHJlZjogaHR0cDovL2p1bGlhLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvbWFudWFsL3ZhcmlhYmxlcy8jYWxsb3dlZC12YXJpYWJsZS1uYW1lc1xuICB2YXIgVkFSSUFCTEVfTkFNRV9SRSA9ICdbQS1aYS16X1xcXFx1MDBBMS1cXFxcdUZGRkZdW0EtWmEtel8wLTlcXFxcdTAwQTEtXFxcXHVGRkZGXSonO1xuXG4gIC8vIHBsYWNlaG9sZGVyIGZvciByZWN1cnNpdmUgc2VsZi1yZWZlcmVuY2VcbiAgdmFyIERFRkFVTFQgPSB7XG4gICAgbGV4ZW1lczogVkFSSUFCTEVfTkFNRV9SRSwga2V5d29yZHM6IEtFWVdPUkRTLCBpbGxlZ2FsOiAvPFxcLy9cbiAgfTtcblxuICAvLyByZWY6IGh0dHA6Ly9qdWxpYS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L21hbnVhbC9pbnRlZ2Vycy1hbmQtZmxvYXRpbmctcG9pbnQtbnVtYmVycy9cbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIC8vIHN1cHBvcnRlZCBudW1lcmljIGxpdGVyYWxzOlxuICAgIC8vICAqIGJpbmFyeSBsaXRlcmFsIChlLmcuIDB4MTApXG4gICAgLy8gICogb2N0YWwgbGl0ZXJhbCAoZS5nLiAwbzc2NTQzMjEwKVxuICAgIC8vICAqIGhleGFkZWNpbWFsIGxpdGVyYWwgKGUuZy4gMHhmZWRjYmE4NzY1NDMyMTApXG4gICAgLy8gICogaGV4YWRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCAoZS5nLiAweDFwMCwgMHgxLjJwMilcbiAgICAvLyAgKiBkZWNpbWFsIGxpdGVyYWwgKGUuZy4gOTg3NjU0MzIxMCwgMTAwXzAwMF8wMDApXG4gICAgLy8gICogZmxvYXRpbmcgcG9pbnRlIGxpdGVyYWwgKGUuZy4gMS4yLCAxLjJmLCAuMiwgMS4sIDEuMmUxMCwgMS4yZS0xMClcbiAgICBiZWdpbjogLyhcXGIweFtcXGRfXSooXFwuW1xcZF9dKik/fDB4XFwuXFxkW1xcZF9dKilwWy0rXT9cXGQrfFxcYjBbYm94XVthLWZBLUYwLTldW2EtZkEtRjAtOV9dKnwoXFxiXFxkW1xcZF9dKihcXC5bXFxkX10qKT98XFwuXFxkW1xcZF9dKikoW2VFZkZdWy0rXT9cXGQrKT8vLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBDSEFSID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nKC58XFxcXFt4WHVVXVthLXpBLVowLTldKyknL1xuICB9O1xuXG4gIHZhciBJTlRFUlBPTEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJFxcKC8sIGVuZDogL1xcKS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTXG4gIH07XG5cbiAgdmFyIElOVEVSUE9MQVRFRF9WQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICdcXFxcJCcgKyBWQVJJQUJMRV9OQU1FX1JFXG4gIH07XG5cbiAgLy8gVE9ETzogbmVhdGx5IGVzY2FwZSBub3JtYWwgY29kZSBpbiBzdHJpbmcgbGl0ZXJhbFxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIElOVEVSUE9MQVRJT04sIElOVEVSUE9MQVRFRF9WQVJJQUJMRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IC9cXHcqXCJcIlwiLywgZW5kOiAvXCJcIlwiXFx3Ki8sIHJlbGV2YW5jZTogMTAgfSxcbiAgICAgIHsgYmVnaW46IC9cXHcqXCIvLCBlbmQ6IC9cIlxcdyovIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIENPTU1BTkQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgSU5URVJQT0xBVElPTiwgSU5URVJQT0xBVEVEX1ZBUklBQkxFXSxcbiAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJ1xuICB9O1xuXG4gIHZhciBNQUNST0NBTEwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAJyArIFZBUklBQkxFX05BTUVfUkVcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJyM9JywgZW5kOiAnPSMnLCByZWxldmFuY2U6IDEwIH0sXG4gICAgICB7IGJlZ2luOiAnIycsIGVuZDogJyQnIH1cbiAgICBdXG4gIH07XG5cbiAgREVGQVVMVC5jb250YWlucyA9IFtcbiAgICBOVU1CRVIsXG4gICAgQ0hBUixcbiAgICBTVFJJTkcsXG4gICAgQ09NTUFORCxcbiAgICBNQUNST0NBTEwsXG4gICAgQ09NTUVOVCxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgYmVnaW46XG4gICAgICAgICdcXFxcYigoKGFic3RyYWN0fHByaW1pdGl2ZSlcXFxccyspdHlwZXwobXV0YWJsZVxcXFxzKyk/c3RydWN0KVxcXFxiJ1xuICAgIH0sXG4gICAge2JlZ2luOiAvPDovfSAgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgXTtcbiAgSU5URVJQT0xBVElPTi5jb250YWlucyA9IERFRkFVTFQuY29udGFpbnM7XG5cbiAgcmV0dXJuIERFRkFVTFQ7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15qdWxpYT4vLFxuICAgICAgICByZWxldmFuY2U6IDEwLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAvLyBlbmQgdGhlIGhpZ2hsaWdodGluZyBpZiB3ZSBhcmUgb24gYSBuZXcgbGluZSBhbmQgdGhlIGxpbmUgZG9lcyBub3QgaGF2ZSBhdFxuICAgICAgICAgIC8vIGxlYXN0IHNpeCBzcGFjZXMgaW4gdGhlIGJlZ2lubmluZ1xuICAgICAgICAgIGVuZDogL14oPyFbIF17Nn0pLyxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogJ2p1bGlhJ1xuICAgICAgfSxcbiAgICAgIC8vIGpsZG9jdGVzdCBNYXJrZG93biBibG9ja3MgYXJlIHVzZWQgaW4gdGhlIEp1bGlhIG1hbnVhbCBhbmQgcGFja2FnZSBkb2NzIGluZGljYXRlXG4gICAgICAvLyBjb2RlIHNuaXBwZXRzIHRoYXQgc2hvdWxkIGJlIHZlcmlmaWVkIHdoZW4gdGhlIGRvY3VtZW50YXRpb24gaXMgYnVpbHQuIFRoZXkgY2FuIGJlXG4gICAgICAvLyBlaXRoZXIgUkVQTC1saWtlIG9yIHNjcmlwdC1saWtlLCBidXQgYXJlIHVzdWFsbHkgUkVQTC1saWtlIGFuZCB0aGVyZWZvcmUgd2UgYXBwbHlcbiAgICAgIC8vIGp1bGlhLXJlcGwgaGlnaGxpZ2h0aW5nIHRvIHRoZW0uIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIERvY3VtZW50ZXInc1xuICAgICAgLy8gbWFudWFsOiBodHRwczovL2p1bGlhZG9jcy5naXRodWIuaW8vRG9jdW1lbnRlci5qbC9sYXRlc3QvbWFuL2RvY3Rlc3RzLmh0bWxcbiAgICAgIGFsaWFzZXM6IFsnamxkb2N0ZXN0J11cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2Fic3RyYWN0IGFzIHZhbCB2YXIgdmFyYXJnIGdldCBzZXQgY2xhc3Mgb2JqZWN0IG9wZW4gcHJpdmF0ZSBwcm90ZWN0ZWQgcHVibGljIG5vaW5saW5lICcgK1xuICAgICAgJ2Nyb3NzaW5saW5lIGR5bmFtaWMgZmluYWwgZW51bSBpZiBlbHNlIGRvIHdoaWxlIGZvciB3aGVuIHRocm93IHRyeSBjYXRjaCBmaW5hbGx5ICcgK1xuICAgICAgJ2ltcG9ydCBwYWNrYWdlIGlzIGluIGZ1biBvdmVycmlkZSBjb21wYW5pb24gcmVpZmllZCBpbmxpbmUgbGF0ZWluaXQgaW5pdCAnICtcbiAgICAgICdpbnRlcmZhY2UgYW5ub3RhdGlvbiBkYXRhIHNlYWxlZCBpbnRlcm5hbCBpbmZpeCBvcGVyYXRvciBvdXQgYnkgY29uc3RydWN0b3Igc3VwZXIgJyArXG4gICAgICAndGFpbHJlYyB3aGVyZSBjb25zdCBpbm5lciBzdXNwZW5kIHR5cGVhbGlhcyBleHRlcm5hbCBleHBlY3QgYWN0dWFsICcgK1xuICAgICAgLy8gdG8gYmUgZGVsZXRlZCBzb29uXG4gICAgICAndHJhaXQgdm9sYXRpbGUgdHJhbnNpZW50IG5hdGl2ZSBkZWZhdWx0JyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdCeXRlIFNob3J0IENoYXIgSW50IExvbmcgQm9vbGVhbiBGbG9hdCBEb3VibGUgVm9pZCBVbml0IE5vdGhpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsJ1xuICB9O1xuICB2YXIgS0VZV09SRFNfV0lUSF9MQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcYihicmVha3xjb250aW51ZXxyZXR1cm58dGhpcylcXGIvLFxuICAgIHN0YXJ0czoge1xuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgICAgYmVnaW46IC9AXFx3Ky9cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgdmFyIExBQkVMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnQCdcbiAgfTtcblxuICAvLyBmb3Igc3RyaW5nIHRlbXBsYXRlc1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCR7JywgZW5kOiAnfScsIGNvbnRhaW5zOiBbaGxqcy5DX05VTUJFUl9NT0RFXVxuICB9O1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLCBiZWdpbjogJ1xcXFwkJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICBjb250YWluczogW1ZBUklBQkxFLCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICAvLyBDYW4ndCB1c2UgYnVpbHQtaW4gbW9kZXMgZWFzaWx5LCBhcyB3ZSB3YW50IHRvIHVzZSBTVFJJTkcgaW4gdGhlIG1ldGFcbiAgICAgIC8vIGNvbnRleHQgYXMgJ21ldGEtc3RyaW5nJyBhbmQgdGhlcmUncyBubyBzeW50YXggdG8gcmVtb3ZlIGV4cGxpY2l0bHkgc2V0XG4gICAgICAvLyBjbGFzc05hbWVzIGluIGJ1aWx0LWluIG1vZGVzLlxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSSUFCTEUsIFNVQlNUXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMucHVzaChTVFJJTkcpXG5cbiAgdmFyIEFOTk9UQVRJT05fVVNFX1NJVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQCg/OmZpbGV8cHJvcGVydHl8ZmllbGR8Z2V0fHNldHxyZWNlaXZlcnxwYXJhbXxzZXRwYXJhbXxkZWxlZ2F0ZSlcXFxccyo6KD86XFxcXHMqJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcpPydcbiAgfTtcbiAgdmFyIEFOTk9UQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQCcgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChTVFJJTkcsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIC8vIGh0dHBzOi8va290bGlubGFuZy5vcmcvZG9jcy9yZWZlcmVuY2Uvd2hhdHNuZXcxMS5odG1sI3VuZGVyc2NvcmVzLWluLW51bWVyaWMtbGl0ZXJhbHNcbiAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkb2MgYWJvdmUsIHRoZSBudW1iZXIgbW9kZSBvZiBrb3RsaW4gaXMgdGhlIHNhbWUgYXMgamF2YSA4LFxuICAvLyBzbyB0aGUgY29kZSBiZWxvdyBpcyBjb3BpZWQgZnJvbSBqYXZhLmpzXG4gIHZhciBLT1RMSU5fTlVNQkVSX1JFID0gJ1xcXFxiJyArXG4gICAgJygnICtcbiAgICAgICcwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKScgKyAvLyAwYi4uLlxuICAgICAgJ3wnICtcbiAgICAgICcwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyknICsgLy8gMHguLi5cbiAgICAgICd8JyArXG4gICAgICAnKCcgK1xuICAgICAgICAnKFtcXFxcZF0rW1xcXFxkX10rW1xcXFxkXSt8W1xcXFxkXSspKFxcXFwuKFtcXFxcZF0rW1xcXFxkX10rW1xcXFxkXSt8W1xcXFxkXSspKT8nICtcbiAgICAgICAgJ3wnICtcbiAgICAgICAgJ1xcXFwuKFtcXFxcZF0rW1xcXFxkX10rW1xcXFxkXSt8W1xcXFxkXSspJyArXG4gICAgICAnKScgK1xuICAgICAgJyhbZUVdWy0rXT9cXFxcZCspPycgKyAvLyBvY3RhbCwgZGVjaW1hbCwgZmxvYXRcbiAgICAnKScgK1xuICAgICdbbExmRl0/JztcbiAgdmFyIEtPVExJTl9OVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBLT1RMSU5fTlVNQkVSX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgS09UTElOX05FU1RFRF9DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLCAnXFxcXCovJyxcbiAgICB7IGNvbnRhaW5zOiBbIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUgXSB9XG4gICk7XG4gIHZhciBLT1RMSU5fUEFSRU5fVFlQRSA9IHtcbiAgICB2YXJpYW50czogW1xuXHQgIHsgY2xhc3NOYW1lOiAndHlwZScsXG5cdCAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG5cdCAgfSxcblx0ICB7IGJlZ2luOiAvXFwoLywgZW5kOiAvXFwpLyxcblx0ICAgIGNvbnRhaW5zOiBbXSAvL2RlZmluZWQgbGF0ZXJcblx0ICB9XG5cdF1cbiAgfTtcbiAgdmFyIEtPVExJTl9QQVJFTl9UWVBFMiA9IEtPVExJTl9QQVJFTl9UWVBFO1xuICBLT1RMSU5fUEFSRU5fVFlQRTIudmFyaWFudHNbMV0uY29udGFpbnMgPSBbIEtPVExJTl9QQVJFTl9UWVBFIF07XG4gIEtPVExJTl9QQVJFTl9UWVBFLnZhcmlhbnRzWzFdLmNvbnRhaW5zID0gWyBLT1RMSU5fUEFSRU5fVFlQRTIgXTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsna3QnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnMgOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlIDogMCxcbiAgICAgICAgICBjb250YWlucyA6IFt7XG4gICAgICAgICAgICBjbGFzc05hbWUgOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIGJlZ2luIDogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVCxcbiAgICAgIEtFWVdPUkRTX1dJVEhfTEFCRUwsXG4gICAgICBMQUJFTCxcbiAgICAgIEFOTk9UQVRJT05fVVNFX1NJVEUsXG4gICAgICBBTk5PVEFUSU9OLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW4nLCBlbmQ6ICdbKF18JCcsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGlsbGVnYWw6IC9mdW5cXHMrKDwuKj4pP1teXFxzXFwoXSsoXFxzK1teXFxzXFwoXSspXFxzKj0vLFxuICAgICAgICByZWxldmFuY2U6IDUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi8sIGtleXdvcmRzOiAncmVpZmllZCcsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvOi8sIGVuZDogL1s9LFxcL10vLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgS09UTElOX1BBUkVOX1RZUEUsXG4gICAgICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICBLT1RMSU5fTkVTVEVEX0NPTU1FTlRcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVCxcbiAgICAgICAgICAgICAgQU5OT1RBVElPTl9VU0VfU0lURSxcbiAgICAgICAgICAgICAgQU5OT1RBVElPTixcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIEtPVExJTl9ORVNURURfQ09NTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UgdHJhaXQnLCBlbmQ6IC9bOlxceyhdfCQvLCAvLyByZW1vdmUgJ3RyYWl0JyB3aGVuIHJlbW92ZWQgZnJvbSBLRVlXT1JEU1xuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ3B1YmxpYyBwcm90ZWN0ZWQgaW50ZXJuYWwgcHJpdmF0ZSBjb25zdHJ1Y3Rvcid9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC88LywgZW5kOiAvPi8sIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogL1ssOl1cXHMqLywgZW5kOiAvWzxcXCgsXXwkLywgZXhjbHVkZUJlZ2luOiB0cnVlLCByZXR1cm5FbmQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFOTk9UQVRJT05fVVNFX1NJVEUsXG4gICAgICAgICAgQU5OT1RBVElPTlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IFwiXiMhL3Vzci9iaW4vZW52XCIsIGVuZDogJyQnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxuJ1xuICAgICAgfSxcbiAgICAgIEtPVExJTl9OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMQVNTT19JREVOVF9SRSA9ICdbYS16QS1aX11bXFxcXHcuXSonO1xuICB2YXIgTEFTU09fQU5HTEVfUkUgPSAnPFxcXFw/KGxhc3NvKHNjcmlwdCk/fD0pJztcbiAgdmFyIExBU1NPX0NMT1NFX1JFID0gJ1xcXFxdfFxcXFw/Pic7XG4gIHZhciBMQVNTT19LRVlXT1JEUyA9IHtcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2Ugbm9uZSBtaW5pbWFsIGZ1bGwgYWxsIHZvaWQgYW5kIG9yIG5vdCAnICtcbiAgICAgICdidyBuYncgZXcgbmV3IGNuIG5jbiBsdCBsdGUgZ3QgZ3RlIGVxIG5lcSByeCBucnggZnQnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2FycmF5IGRhdGUgZGVjaW1hbCBkdXJhdGlvbiBpbnRlZ2VyIG1hcCBwYWlyIHN0cmluZyB0YWcgeG1sIG51bGwgJyArXG4gICAgICAnYm9vbGVhbiBieXRlcyBrZXl3b3JkIGxpc3QgbG9jYWxlIHF1ZXVlIHNldCBzdGFjayBzdGF0aWNhcnJheSAnICtcbiAgICAgICdsb2NhbCB2YXIgdmFyaWFibGUgZ2xvYmFsIGRhdGEgc2VsZiBpbmhlcml0ZWQgY3VycmVudGNhcHR1cmUgZ2l2ZW5ibG9jaycsXG4gICAga2V5d29yZDpcbiAgICAgICdjYWNoZSBkYXRhYmFzZV9uYW1lcyBkYXRhYmFzZV9zY2hlbWFuYW1lcyBkYXRhYmFzZV90YWJsZW5hbWVzICcgK1xuICAgICAgJ2RlZmluZV90YWcgZGVmaW5lX3R5cGUgZW1haWxfYmF0Y2ggZW5jb2RlX3NldCBodG1sX2NvbW1lbnQgaGFuZGxlICcgK1xuICAgICAgJ2hhbmRsZV9lcnJvciBoZWFkZXIgaWYgaW5saW5lIGl0ZXJhdGUgbGpheF90YXJnZXQgbGluayAnICtcbiAgICAgICdsaW5rX2N1cnJlbnRhY3Rpb24gbGlua19jdXJyZW50Z3JvdXAgbGlua19jdXJyZW50cmVjb3JkIGxpbmtfZGV0YWlsICcgK1xuICAgICAgJ2xpbmtfZmlyc3Rncm91cCBsaW5rX2ZpcnN0cmVjb3JkIGxpbmtfbGFzdGdyb3VwIGxpbmtfbGFzdHJlY29yZCAnICtcbiAgICAgICdsaW5rX25leHRncm91cCBsaW5rX25leHRyZWNvcmQgbGlua19wcmV2Z3JvdXAgbGlua19wcmV2cmVjb3JkIGxvZyAnICtcbiAgICAgICdsb29wIG5hbWVzcGFjZV91c2luZyBvdXRwdXRfbm9uZSBwb3J0YWwgcHJpdmF0ZSBwcm90ZWN0IHJlY29yZHMgJyArXG4gICAgICAncmVmZXJlciByZWZlcnJlciByZXBlYXRpbmcgcmVzdWx0c2V0IHJvd3Mgc2VhcmNoX2FyZ3MgJyArXG4gICAgICAnc2VhcmNoX2FyZ3VtZW50cyBzZWxlY3Qgc29ydF9hcmdzIHNvcnRfYXJndW1lbnRzIHRocmVhZF9hdG9taWMgJyArXG4gICAgICAndmFsdWVfbGlzdCB3aGlsZSBhYm9ydCBjYXNlIGVsc2UgZmFpbF9pZiBmYWlsX2lmbm90IGZhaWwgaWZfZW1wdHkgJyArXG4gICAgICAnaWZfZmFsc2UgaWZfbnVsbCBpZl90cnVlIGxvb3BfYWJvcnQgbG9vcF9jb250aW51ZSBsb29wX2NvdW50IHBhcmFtcyAnICtcbiAgICAgICdwYXJhbXNfdXAgcmV0dXJuIHJldHVybl92YWx1ZSBydW5fY2hpbGRyZW4gc29hcF9kZWZpbmV0YWcgJyArXG4gICAgICAnc29hcF9sYXN0cmVxdWVzdCBzb2FwX2xhc3RyZXNwb25zZSB0YWdfbmFtZSBhc2NlbmRpbmcgYXZlcmFnZSBieSAnICtcbiAgICAgICdkZWZpbmUgZGVzY2VuZGluZyBkbyBlcXVhbHMgZnJvemVuIGdyb3VwIGhhbmRsZV9mYWlsdXJlIGltcG9ydCBpbiAnICtcbiAgICAgICdpbnRvIGpvaW4gbGV0IG1hdGNoIG1heCBtaW4gb24gb3JkZXIgcGFyZW50IHByb3RlY3RlZCBwcm92aWRlIHB1YmxpYyAnICtcbiAgICAgICdyZXF1aXJlIHJldHVybmhvbWUgc2tpcCBzcGxpdF90aHJlYWQgc3VtIHRha2UgdGhyZWFkIHRvIHRyYWl0IHR5cGUgJyArXG4gICAgICAnd2hlcmUgd2l0aCB5aWVsZCB5aWVsZGhvbWUnXG4gIH07XG4gIHZhciBIVE1MX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJzwhLS0nLFxuICAgICctLT4nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIExBU1NPX05PUFJPQ0VTUyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ1xcXFxbbm9wcm9jZXNzXFxcXF0nLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnXFxcXFsvbm9wcm9jZXNzXFxcXF0nLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgfVxuICB9O1xuICB2YXIgTEFTU09fU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdcXFxcWy9ub3Byb2Nlc3N8JyArIExBU1NPX0FOR0xFX1JFXG4gIH07XG4gIHZhciBMQVNTT19EQVRBTUVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdcXCcnICsgTEFTU09fSURFTlRfUkUgKyAnXFwnJ1xuICB9O1xuICB2YXIgTEFTU09fQ09ERSA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX05VTUJFUl9NT0RFLCB7YmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnfCgtP2luZmluaXR5fE5hTilcXFxcYid9KSxcbiAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJ1xuICAgIH0sXG4gICAgeyAvLyB2YXJpYWJsZXNcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1sjJF0nICsgTEFTU09fSURFTlRfUkVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnIycsIGVuZDogJ1xcXFxkKycsXG4gICAgICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgIGJlZ2luOiAnOjpcXFxccyonLCBlbmQ6IExBU1NPX0lERU5UX1JFLFxuICAgICAgaWxsZWdhbDogJ1xcXFxXJ1xuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJy0oPyFpbmZpbml0eSknICsgTEFTU09fSURFTlRfUkUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJyhcXFxcLlxcXFwuXFxcXC4pJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogLygtPnxcXC4pXFxzKi8sXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW0xBU1NPX0RBVEFNRU1CRVJdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICBiZWdpbktleXdvcmRzOiAnZGVmaW5lJyxcbiAgICAgIHJldHVybkVuZDogdHJ1ZSwgZW5kOiAnXFxcXCh8PT4nLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiBMQVNTT19JREVOVF9SRSArICcoPSg/IT4pKT98Wy0rKi8lXSg/IT4pJ30pXG4gICAgICBdXG4gICAgfVxuICBdO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbHMnLCAnbGFzc29zY3JpcHQnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6IExBU1NPX0lERU5UX1JFICsgJ3wmW2xnXXQ7JyxcbiAgICBrZXl3b3JkczogTEFTU09fS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiBMQVNTT19DTE9TRV9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IHsgLy8gbWFya3VwXG4gICAgICAgICAgZW5kOiAnXFxcXFt8JyArIExBU1NPX0FOR0xFX1JFLFxuICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtIVE1MX0NPTU1FTlRdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBMQVNTT19OT1BST0NFU1MsXG4gICAgICBMQVNTT19TVEFSVCxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXFxcXFtub19zcXVhcmVfYnJhY2tldHMnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6ICdcXFxcWy9ub19zcXVhcmVfYnJhY2tldHNcXFxcXScsIC8vIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgbGFuZ3VhZ2VcbiAgICAgICAgICBsZXhlbWVzOiBMQVNTT19JREVOVF9SRSArICd8JltsZ110OycsXG4gICAgICAgICAga2V5d29yZHM6IExBU1NPX0tFWVdPUkRTLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICAgICAgICBiZWdpbjogTEFTU09fQ0xPU0VfUkUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgICAgZW5kOiAnXFxcXFtub3Byb2Nlc3NcXFxcXXwnICsgTEFTU09fQU5HTEVfUkUsXG4gICAgICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbSFRNTF9DT01NRU5UXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTEFTU09fTk9QUk9DRVNTLFxuICAgICAgICAgICAgTEFTU09fU1RBUlRcbiAgICAgICAgICBdLmNvbmNhdChMQVNTT19DT0RFKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXiMhJywgZW5kOidsYXNzbzkkJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIF0uY29uY2F0KExBU1NPX0NPREUpXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXmRuJywgZW5kOiAnOiAnLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBzdGFydHM6IHtlbmQ6ICckJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHcnLCBlbmQ6ICc6ICcsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN0YXJ0czoge2VuZDogJyQnLCByZWxldmFuY2U6IDB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46ICdeLScsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGxqcykge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcjKycgKyAnW0EtWmEtel8wLTldKicgKyAnXFxcXCgnLFxuICAgICAgICBlbmQ6JyB7JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICcjKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnW0EtWmEtel9dW0EtWmEtel8wLTldKidcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICAgICAgICAgIGVuZDogJ1wiJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnW0EtWmEtel9dW0EtWmEtel8wLTldKidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSAgICAgICAgPSAnW1xcXFx3LV0rJzsgLy8geWVzLCBMZXNzIGlkZW50aWZpZXJzIG1heSBiZWdpbiB3aXRoIGEgZGlnaXRcbiAgdmFyIElOVEVSUF9JREVOVF9SRSA9ICcoJyArIElERU5UX1JFICsgJ3xAeycgKyBJREVOVF9SRSArICd9KSc7XG5cbiAgLyogR2VuZXJpYyBNb2RlcyAqL1xuXG4gIHZhciBSVUxFUyA9IFtdLCBWQUxVRSA9IFtdOyAvLyBmb3J3YXJkIGRlZi4gZm9yIHJlY3Vyc2l2ZSBtb2Rlc1xuXG4gIHZhciBTVFJJTkdfTU9ERSA9IGZ1bmN0aW9uKGMpIHsgcmV0dXJuIHtcbiAgICAvLyBMZXNzIHN0cmluZ3MgYXJlIG5vdCBtdWx0aWxpbmUgKGFsc28gaW5jbHVkZSAnficgZm9yIG1vcmUgY29uc2lzdGVudCBjb2xvcmluZyBvZiBcImVzY2FwZWRcIiBzdHJpbmdzKVxuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsIGJlZ2luOiAnfj8nICsgYyArICcuKj8nICsgY1xuICB9O307XG5cbiAgdmFyIElERU5UX01PREUgPSBmdW5jdGlvbihuYW1lLCBiZWdpbiwgcmVsZXZhbmNlKSB7IHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBuYW1lLCBiZWdpbjogYmVnaW4sIHJlbGV2YW5jZTogcmVsZXZhbmNlXG4gIH07fTtcblxuICB2YXIgUEFSRU5TX01PREUgPSB7XG4gICAgLy8gdXNlZCBvbmx5IHRvIHByb3Blcmx5IGJhbGFuY2UgbmVzdGVkIHBhcmVucyBpbnNpZGUgbWl4aW4gY2FsbCwgZGVmLiBhcmcgbGlzdFxuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsIGNvbnRhaW5zOiBWQUxVRSwgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLy8gZ2VuZXJpYyBMZXNzIGhpZ2hsaWdodGVyICh1c2VkIGFsbW9zdCBldmVyeXdoZXJlIGV4Y2VwdCBzZWxlY3RvcnMpOlxuICBWQUxVRS5wdXNoKFxuICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIFNUUklOR19NT0RFKFwiJ1wiKSxcbiAgICBTVFJJTkdfTU9ERSgnXCInKSxcbiAgICBobGpzLkNTU19OVU1CRVJfTU9ERSwgLy8gZml4bWU6IGl0IGRvZXMgbm90IGluY2x1ZGUgZG90IGZvciBudW1iZXJzIGxpa2UgLjVlbSA6KFxuICAgIHtcbiAgICAgIGJlZ2luOiAnKHVybHxkYXRhLXVyaSlcXFxcKCcsXG4gICAgICBzdGFydHM6IHtjbGFzc05hbWU6ICdzdHJpbmcnLCBlbmQ6ICdbXFxcXClcXFxcbl0nLCBleGNsdWRlRW5kOiB0cnVlfVxuICAgIH0sXG4gICAgSURFTlRfTU9ERSgnbnVtYmVyJywgJyNbMC05QS1GYS1mXStcXFxcYicpLFxuICAgIFBBUkVOU19NT0RFLFxuICAgIElERU5UX01PREUoJ3ZhcmlhYmxlJywgJ0BAPycgKyBJREVOVF9SRSwgMTApLFxuICAgIElERU5UX01PREUoJ3ZhcmlhYmxlJywgJ0B7JyAgKyBJREVOVF9SRSArICd9JyksXG4gICAgSURFTlRfTU9ERSgnYnVpbHRfaW4nLCAnfj9gW15gXSo/YCcpLCAvLyBpbmxpbmUgamF2YXNjcmlwdCAob3Igd2hhdGV2ZXIgaG9zdCBsYW5ndWFnZSkgKm11bHRpbGluZSogc3RyaW5nXG4gICAgeyAvLyBAbWVkaWEgZmVhdHVyZXMgKGl04oCZcyBoZXJlIHRvIG5vdCBkdXBsaWNhdGUgdGhpbmdzIGluIEFUX1JVTEVfTU9ERSB3aXRoIGV4dHJhIFBBUkVOU19NT0RFIG92ZXJyaWRpbmcpOlxuICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJywgYmVnaW46IElERU5UX1JFICsgJ1xcXFxzKjonLCBlbmQ6ICc6JywgcmV0dXJuQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICchaW1wb3J0YW50J1xuICAgIH1cbiAgKTtcblxuICB2YXIgVkFMVUVfV0lUSF9SVUxFU0VUUyA9IFZBTFVFLmNvbmNhdCh7XG4gICAgYmVnaW46ICd7JywgZW5kOiAnfScsIGNvbnRhaW5zOiBSVUxFU1xuICB9KTtcblxuICB2YXIgTUlYSU5fR1VBUkRfTU9ERSA9IHtcbiAgICBiZWdpbktleXdvcmRzOiAnd2hlbicsIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbe2JlZ2luS2V5d29yZHM6ICdhbmQgbm90J31dLmNvbmNhdChWQUxVRSkgLy8gdXNpbmcgdGhpcyBmb3JtIHRvIG92ZXJyaWRlIFZBTFVF4oCZcyAnZnVuY3Rpb24nIG1hdGNoXG4gIH07XG5cbiAgLyogUnVsZS1MZXZlbCBNb2RlcyAqL1xuXG4gIHZhciBSVUxFX01PREUgPSB7XG4gICAgYmVnaW46IElOVEVSUF9JREVOVF9SRSArICdcXFxccyo6JywgcmV0dXJuQmVnaW46IHRydWUsIGVuZDogJ1s7fV0nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFLCBlbmQ6ICc6JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGlsbGVnYWw6ICdbPD0kXScsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBWQUxVRVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBBVF9SVUxFX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46ICdAKGltcG9ydHxtZWRpYXxjaGFyc2V0fGZvbnQtZmFjZXwoLVthLXpdKy0pP2tleWZyYW1lc3xzdXBwb3J0c3xkb2N1bWVudHxuYW1lc3BhY2V8cGFnZXx2aWV3cG9ydHxob3N0KVxcXFxiJyxcbiAgICBzdGFydHM6IHtlbmQ6ICdbO3t9XScsIHJldHVybkVuZDogdHJ1ZSwgY29udGFpbnM6IFZBTFVFLCByZWxldmFuY2U6IDB9XG4gIH07XG5cbiAgLy8gdmFyaWFibGUgZGVmaW5pdGlvbnMgYW5kIGNhbGxzXG4gIHZhciBWQVJfUlVMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gdXNpbmcgbW9yZSBzdHJpY3QgcGF0dGVybiBmb3IgaGlnaGVyIHJlbGV2YW5jZSB0byBpbmNyZWFzZSBjaGFuY2VzIG9mIExlc3MgZGV0ZWN0aW9uLlxuICAgICAgLy8gdGhpcyBpcyAqdGhlIG9ubHkqIExlc3Mgc3BlY2lmaWMgc3RhdGVtZW50IHVzZWQgaW4gbW9zdCBvZiB0aGUgc291cmNlcywgc28uLi5cbiAgICAgIC8vICh3ZeKAmWxsIHN0aWxsIG9mdGVuIGxvb3NlIHRvIHRoZSBjc3MtcGFyc2VyIHVubGVzcyB0aGVyZSdzICcvLycgY29tbWVudCxcbiAgICAgIC8vIHNpbXBseSBiZWNhdXNlIDEgdmFyaWFibGUganVzdCBjYW4ndCBiZWF0IDk5IHByb3BlcnRpZXMgOilcbiAgICAgIHtiZWdpbjogJ0AnICsgSURFTlRfUkUgKyAnXFxcXHMqOicsIHJlbGV2YW5jZTogMTV9LFxuICAgICAge2JlZ2luOiAnQCcgKyBJREVOVF9SRX1cbiAgICBdLFxuICAgIHN0YXJ0czoge2VuZDogJ1s7fV0nLCByZXR1cm5FbmQ6IHRydWUsIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTfVxuICB9O1xuXG4gIHZhciBTRUxFQ1RPUl9NT0RFID0ge1xuICAgIC8vIGZpcnN0IHBhcnNlIHVuYW1iaWd1b3VzIHNlbGVjdG9ycyAoaS5lLiB0aG9zZSBub3Qgc3RhcnRpbmcgd2l0aCB0YWcpXG4gICAgLy8gdGhlbiBmYWxsIGludG8gdGhlIHNjYXJ5IGxvb2thaGVhZC1kaXNjcmltaW5hdG9yIHZhcmlhbnQuXG4gICAgLy8gdGhpcyBtb2RlIGFsc28gaGFuZGxlcyBtaXhpbiBkZWZpbml0aW9ucyBhbmQgY2FsbHNcbiAgICB2YXJpYW50czogW3tcbiAgICAgIGJlZ2luOiAnW1xcXFwuIzomXFxcXFs+XScsIGVuZDogJ1s7e31dJyAgLy8gbWl4aW4gY2FsbHMgZW5kIHdpdGggJzsnXG4gICAgICB9LCB7XG4gICAgICBiZWdpbjogSU5URVJQX0lERU5UX1JFLCBlbmQ6ICd7J1xuICAgIH1dLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJldHVybkVuZDogICB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPD1cXCckXCJdJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBNSVhJTl9HVUFSRF9NT0RFLFxuICAgICAgSURFTlRfTU9ERSgna2V5d29yZCcsICAnYWxsXFxcXGInKSxcbiAgICAgIElERU5UX01PREUoJ3ZhcmlhYmxlJywgJ0B7JyAgKyBJREVOVF9SRSArICd9JyksICAgICAvLyBvdGhlcndpc2UgaXTigJlzIGlkZW50aWZpZWQgYXMgdGFnXG4gICAgICBJREVOVF9NT0RFKCdzZWxlY3Rvci10YWcnLCAgSU5URVJQX0lERU5UX1JFICsgJyU/JywgMCksIC8vICclJyBmb3IgbW9yZSBjb25zaXN0ZW50IGNvbG9yaW5nIG9mIEBrZXlmcmFtZXMgXCJ0YWdzXCJcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLWlkJywgJyMnICsgSU5URVJQX0lERU5UX1JFKSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLWNsYXNzJywgJ1xcXFwuJyArIElOVEVSUF9JREVOVF9SRSwgMCksXG4gICAgICBJREVOVF9NT0RFKCdzZWxlY3Rvci10YWcnLCAgJyYnLCAwKSxcbiAgICAgIHtjbGFzc05hbWU6ICdzZWxlY3Rvci1hdHRyJywgYmVnaW46ICdcXFxcWycsIGVuZDogJ1xcXFxdJ30sXG4gICAgICB7Y2xhc3NOYW1lOiAnc2VsZWN0b3ItcHNldWRvJywgYmVnaW46IC86KDopP1thLXpBLVowLTlcXF9cXC1cXCtcXChcXClcIicuXSsvfSxcbiAgICAgIHtiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLCBjb250YWluczogVkFMVUVfV0lUSF9SVUxFU0VUU30sIC8vIGFyZ3VtZW50IGxpc3Qgb2YgcGFyYW1ldHJpYyBtaXhpbnNcbiAgICAgIHtiZWdpbjogJyFpbXBvcnRhbnQnfSAvLyBlYXQgIWltcG9ydGFudCBhZnRlciBtaXhpbiBjYWxsIG9yIGl0IHdpbGwgYmUgY29sb3JlZCBhcyB0YWdcbiAgICBdXG4gIH07XG5cbiAgUlVMRVMucHVzaChcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBBVF9SVUxFX01PREUsXG4gICAgVkFSX1JVTEVfTU9ERSxcbiAgICBSVUxFX01PREUsXG4gICAgU0VMRUNUT1JfTU9ERVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnWz0+XFwnLzwoJFwiXScsXG4gICAgY29udGFpbnM6IFJVTEVTXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgTElTUF9JREVOVF9SRSA9ICdbYS16QS1aX1xcXFwtXFxcXCtcXFxcKlxcXFwvXFxcXDxcXFxcPVxcXFw+XFxcXCZcXFxcI11bYS16QS1aMC05X1xcXFwtXFxcXCtcXFxcKlxcXFwvXFxcXDxcXFxcPVxcXFw+XFxcXCZcXFxcIyFdKic7XG4gIHZhciBNRUNfUkUgPSAnXFxcXHxbXl0qP1xcXFx8JztcbiAgdmFyIExJU1BfU0lNUExFX05VTUJFUl9SRSA9ICcoXFxcXC18XFxcXCspP1xcXFxkKyhcXFxcLlxcXFxkK3xcXFxcL1xcXFxkKyk/KChkfGV8ZnxsfHN8RHxFfEZ8THxTKShcXFxcK3xcXFxcLSk/XFxcXGQrKT8nO1xuICB2YXIgU0hFQkFORyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ14jIScsIGVuZDogJyQnXG4gIH07XG4gIHZhciBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAnXFxcXGIodHsxfXxuaWwpXFxcXGInXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiBMSVNQX1NJTVBMRV9OVU1CRVJfUkUsIHJlbGV2YW5jZTogMH0sXG4gICAgICB7YmVnaW46ICcjKGJ8QilbMC0xXSsoL1swLTFdKyk/J30sXG4gICAgICB7YmVnaW46ICcjKG98TylbMC03XSsoL1swLTddKyk/J30sXG4gICAgICB7YmVnaW46ICcjKHh8WClbMC05YS1mQS1GXSsoL1swLTlhLWZBLUZdKyk/J30sXG4gICAgICB7YmVnaW46ICcjKGN8QylcXFxcKCcgKyBMSVNQX1NJTVBMRV9OVU1CRVJfUkUgKyAnICsnICsgTElTUF9TSU1QTEVfTlVNQkVSX1JFLCBlbmQ6ICdcXFxcKSd9XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSk7XG4gIHZhciBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICc7JywgJyQnLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgKTtcbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGJlZ2luOiAnXFxcXConLCBlbmQ6ICdcXFxcKidcbiAgfTtcbiAgdmFyIEtFWVdPUkQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1s6Jl0nICsgTElTUF9JREVOVF9SRVxuICB9O1xuICB2YXIgSURFTlQgPSB7XG4gICAgYmVnaW46IExJU1BfSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBNRUMgPSB7XG4gICAgYmVnaW46IE1FQ19SRVxuICB9O1xuICB2YXIgUVVPVEVEX0xJU1QgPSB7XG4gICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogWydzZWxmJywgTElURVJBTCwgU1RSSU5HLCBOVU1CRVIsIElERU5UXVxuICB9O1xuICB2YXIgUVVPVEVEID0ge1xuICAgIGNvbnRhaW5zOiBbTlVNQkVSLCBTVFJJTkcsIFZBUklBQkxFLCBLRVlXT1JELCBRVU9URURfTElTVCwgSURFTlRdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW1xcJ2BdXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXChxdW90ZSAnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGtleXdvcmRzOiB7bmFtZTogJ3F1b3RlJ31cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFwnJyArIE1FQ19SRVxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgdmFyIFFVT1RFRF9BVE9NID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXCcnICsgTElTUF9JREVOVF9SRX0sXG4gICAgICB7YmVnaW46ICcjXFwnJyArIExJU1BfSURFTlRfUkUgKyAnKDo6JyArIExJU1BfSURFTlRfUkUgKyAnKSonfVxuICAgIF1cbiAgfTtcbiAgdmFyIExJU1QgPSB7XG4gICAgYmVnaW46ICdcXFxcKFxcXFxzKicsIGVuZDogJ1xcXFwpJ1xuICB9O1xuICB2YXIgQk9EWSA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgTElTVC5jb250YWlucyA9IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtiZWdpbjogTElTUF9JREVOVF9SRX0sXG4gICAgICAgIHtiZWdpbjogTUVDX1JFfVxuICAgICAgXVxuICAgIH0sXG4gICAgQk9EWVxuICBdO1xuICBCT0RZLmNvbnRhaW5zID0gW1FVT1RFRCwgUVVPVEVEX0FUT00sIExJU1QsIExJVEVSQUwsIE5VTUJFUiwgU1RSSU5HLCBDT01NRU5ULCBWQVJJQUJMRSwgS0VZV09SRCwgTUVDLCBJREVOVF07XG5cbiAgcmV0dXJuIHtcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1xuICAgICAgTlVNQkVSLFxuICAgICAgU0hFQkFORyxcbiAgICAgIExJVEVSQUwsXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01NRU5ULFxuICAgICAgUVVPVEVELFxuICAgICAgUVVPVEVEX0FUT00sXG4gICAgICBMSVNULFxuICAgICAgSURFTlRcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICdcXFxcYihbZ3Rwc11bQS1aXXsxfVthLXpBLVowLTldKikoXFxcXFsuK1xcXFxdKT8oPzpcXFxccyo/KSd9LFxuICAgICAge2JlZ2luOiAnXFxcXCRfW0EtWl0rJ31cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKCctLScsICckJyksXG4gICAgaGxqcy5DT01NRU5UKCdbXjpdLy8nLCAnJCcpXG4gIF07XG4gIHZhciBUSVRMRTEgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFxiXypyaWdbQS1aXStbQS1aYS16MC05X1xcXFwtXSonfSxcbiAgICAgIHtiZWdpbjogJ1xcXFxiX1thLXowLTlcXFxcLV0rJ31cbiAgICBdXG4gIH0pO1xuICB2YXIgVElUTEUyID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAnXFxcXGIoW0EtWmEtejAtOV9cXFxcLV0rKVxcXFxiJ30pO1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnJF9DT09LSUUgJF9GSUxFUyAkX0dFVCAkX0dFVF9CSU5BUlkgJF9HRVRfUkFXICRfUE9TVCAkX1BPU1RfQklOQVJZICRfUE9TVF9SQVcgJF9TRVNTSU9OICRfU0VSVkVSICcgK1xuICAgICAgICAnY29kZXBvaW50IGNvZGVwb2ludHMgc2VnbWVudCBzZWdtZW50cyBjb2RldW5pdCBjb2RldW5pdHMgc2VudGVuY2Ugc2VudGVuY2VzIHRydWVXb3JkIHRydWVXb3JkcyBwYXJhZ3JhcGggJyArXG4gICAgICAgICdhZnRlciBieXRlIGJ5dGVzIGVuZ2xpc2ggdGhlIHVudGlsIGh0dHAgZm9yZXZlciBkZXNjZW5kaW5nIHVzaW5nIGxpbmUgcmVhbDggd2l0aCBzZXZlbnRoICcgK1xuICAgICAgICAnZm9yIHN0ZG91dCBmaW5hbGx5IGVsZW1lbnQgd29yZCB3b3JkcyBmb3VydGggYmVmb3JlIGJsYWNrIG5pbnRoIHNpeHRoIGNoYXJhY3RlcnMgY2hhcnMgc3RkZXJyICcgK1xuICAgICAgICAndUludDEgdUludDFzIHVJbnQyIHVJbnQycyBzdGRpbiBzdHJpbmcgbGluZXMgcmVsYXRpdmUgcmVsIGFueSBmaWZ0aCBpdGVtcyBmcm9tIG1pZGRsZSBtaWQgJyArXG4gICAgICAgICdhdCBlbHNlIG9mIGNhdGNoIHRoZW4gdGhpcmQgaXQgZmlsZSBtaWxsaXNlY29uZHMgc2Vjb25kcyBzZWNvbmQgc2VjcyBzZWMgaW50MSBpbnQxcyBpbnQ0ICcgK1xuICAgICAgICAnaW50NHMgaW50ZXJuZXQgaW50MiBpbnQycyBub3JtYWwgdGV4dCBpdGVtIGxhc3QgbG9uZyBkZXRhaWxlZCBlZmZlY3RpdmUgdUludDQgdUludDRzIHJlcGVhdCAnICtcbiAgICAgICAgJ2VuZCByZXBlYXQgVVJMIGluIHRyeSBpbnRvIHN3aXRjaCB0byB3b3JkcyBodHRwcyB0b2tlbiBiaW5maWxlIGVhY2ggdGVudGggYXMgdGlja3MgdGljayAnICtcbiAgICAgICAgJ3N5c3RlbSByZWFsNCBieSBkYXRlSXRlbXMgd2l0aG91dCBjaGFyIGNoYXJhY3RlciBhc2NlbmRpbmcgZWlnaHRoIHdob2xlIGRhdGVUaW1lIG51bWVyaWMgc2hvcnQgJyArXG4gICAgICAgICdmaXJzdCBmdHAgaW50ZWdlciBhYmJyZXZpYXRlZCBhYmJyIGFiYnJldiBwcml2YXRlIGNhc2Ugd2hpbGUgaWYgJyArXG4gICAgICAgICdkaXYgbW9kIHdyYXAgYW5kIG9yIGJpdEFuZCBiaXROb3QgYml0T3IgYml0WG9yIGFtb25nIG5vdCBpbiBhIGFuIHdpdGhpbiAnICtcbiAgICAgICAgJ2NvbnRhaW5zIGVuZHMgd2l0aCBiZWdpbnMgdGhlIGtleXMgb2Yga2V5cycsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnU0lYIFRFTiBGT1JNRkVFRCBOSU5FIFpFUk8gTk9ORSBTUEFDRSBGT1VSIEZBTFNFIENPTE9OIENSTEYgUEkgQ09NTUEgRU5ET0ZGSUxFIEVPRiBFSUdIVCBGSVZFICcgK1xuICAgICAgICAnUVVPVEUgRU1QVFkgT05FIFRSVUUgUkVUVVJOIENSIExJTkVGRUVEIFJJR0hUIEJBQ0tTTEFTSCBOVUxMIFNFVkVOIFRBQiBUSFJFRSBUV08gJyArXG4gICAgICAgICdzaXggdGVuIGZvcm1mZWVkIG5pbmUgemVybyBub25lIHNwYWNlIGZvdXIgZmFsc2UgY29sb24gY3JsZiBwaSBjb21tYSBlbmRvZmZpbGUgZW9mIGVpZ2h0IGZpdmUgJyArXG4gICAgICAgICdxdW90ZSBlbXB0eSBvbmUgdHJ1ZSByZXR1cm4gY3IgbGluZWZlZWQgcmlnaHQgYmFja3NsYXNoIG51bGwgc2V2ZW4gdGFiIHRocmVlIHR3byAnICtcbiAgICAgICAgJ1JJVkVSU0lPTiBSSVNUQVRFIEZJTEVfUkVBRF9NT0RFIEZJTEVfV1JJVEVfTU9ERSBGSUxFX1dSSVRFX01PREUgRElSX1dSSVRFX01PREUgRklMRV9SRUFEX1VNQVNLICcgK1xuICAgICAgICAnRklMRV9XUklURV9VTUFTSyBESVJfUkVBRF9VTUFTSyBESVJfV1JJVEVfVU1BU0snLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdwdXQgYWJzIGFjb3MgYWxpYXNSZWZlcmVuY2UgYW5udWl0eSBhcnJheURlY29kZSBhcnJheUVuY29kZSBhc2luIGF0YW4gYXRhbjIgYXZlcmFnZSBhdmcgYXZnRGV2IGJhc2U2NERlY29kZSAnICtcbiAgICAgICAgJ2Jhc2U2NEVuY29kZSBiYXNlQ29udmVydCBiaW5hcnlEZWNvZGUgYmluYXJ5RW5jb2RlIGJ5dGVPZmZzZXQgYnl0ZVRvTnVtIGNhY2hlZFVSTCBjYWNoZWRVUkxzIGNoYXJUb051bSAnICtcbiAgICAgICAgJ2NpcGhlck5hbWVzIGNvZGVwb2ludE9mZnNldCBjb2RlcG9pbnRQcm9wZXJ0eSBjb2RlcG9pbnRUb051bSBjb2RldW5pdE9mZnNldCBjb21tYW5kTmFtZXMgY29tcG91bmQgY29tcHJlc3MgJyArXG4gICAgICAgICdjb25zdGFudE5hbWVzIGNvcyBkYXRlIGRhdGVGb3JtYXQgZGVjb21wcmVzcyBkaWZmZXJlbmNlIGRpcmVjdG9yaWVzICcgK1xuICAgICAgICAnZGlza1NwYWNlIEROU1NlcnZlcnMgZXhwIGV4cDEgZXhwMiBleHAxMCBleHRlbnRzIGZpbGVzIGZsdXNoRXZlbnRzIGZvbGRlcnMgZm9ybWF0IGZ1bmN0aW9uTmFtZXMgZ2VvbWV0cmljTWVhbiBnbG9iYWwgJyArXG4gICAgICAgICdnbG9iYWxzIGhhc01lbW9yeSBoYXJtb25pY01lYW4gaG9zdEFkZHJlc3MgaG9zdEFkZHJlc3NUb05hbWUgaG9zdE5hbWUgaG9zdE5hbWVUb0FkZHJlc3MgaXNOdW1iZXIgSVNPVG9NYWMgaXRlbU9mZnNldCAnICtcbiAgICAgICAgJ2tleXMgbGVuIGxlbmd0aCBsaWJVUkxFcnJvckRhdGEgbGliVXJsRm9ybURhdGEgbGliVVJMZnRwQ29tbWFuZCBsaWJVUkxMYXN0SFRUUEhlYWRlcnMgbGliVVJMTGFzdFJISGVhZGVycyAnICtcbiAgICAgICAgJ2xpYlVybE11bHRpcGFydEZvcm1BZGRQYXJ0IGxpYlVybE11bHRpcGFydEZvcm1EYXRhIGxpYlVSTFZlcnNpb24gbGluZU9mZnNldCBsbiBsbjEgbG9jYWxOYW1lcyBsb2cgbG9nMiBsb2cxMCAnICtcbiAgICAgICAgJ2xvbmdGaWxlUGF0aCBsb3dlciBtYWNUb0lTTyBtYXRjaENodW5rIG1hdGNoVGV4dCBtYXRyaXhNdWx0aXBseSBtYXggbWQ1RGlnZXN0IG1lZGlhbiBtZXJnZSBtZXNzYWdlQXV0aGVudGljYXRpb25Db2RlIG1lc3NhZ2VEaWdlc3QgbWlsbGlzZWMgJyArXG4gICAgICAgICdtaWxsaXNlY3MgbWlsbGlzZWNvbmQgbWlsbGlzZWNvbmRzIG1pbiBtb250aE5hbWVzIG5hdGl2ZUNoYXJUb051bSBub3JtYWxpemVUZXh0IG51bSBudW1iZXIgbnVtVG9CeXRlIG51bVRvQ2hhciAnICtcbiAgICAgICAgJ251bVRvQ29kZXBvaW50IG51bVRvTmF0aXZlQ2hhciBvZmZzZXQgb3BlbiBvcGVuZmlsZXMgb3BlblByb2Nlc3NlcyBvcGVuUHJvY2Vzc0lEcyBvcGVuU29ja2V0cyAnICtcbiAgICAgICAgJ3BhcmFncmFwaE9mZnNldCBwYXJhbUNvdW50IHBhcmFtIHBhcmFtcyBwZWVyQWRkcmVzcyBwZW5kaW5nTWVzc2FnZXMgcGxhdGZvcm0gcG9wU3RkRGV2IHBvcHVsYXRpb25TdGFuZGFyZERldmlhdGlvbiAnICtcbiAgICAgICAgJ3BvcHVsYXRpb25WYXJpYW5jZSBwb3BWYXJpYW5jZSBwcm9jZXNzSUQgcmFuZG9tIHJhbmRvbUJ5dGVzIHJlcGxhY2VUZXh0IHJlc3VsdCByZXZDcmVhdGVYTUxUcmVlIHJldkNyZWF0ZVhNTFRyZWVGcm9tRmlsZSAnICtcbiAgICAgICAgJ3JldkN1cnJlbnRSZWNvcmQgcmV2Q3VycmVudFJlY29yZElzRmlyc3QgcmV2Q3VycmVudFJlY29yZElzTGFzdCByZXZEYXRhYmFzZUNvbHVtbkNvdW50IHJldkRhdGFiYXNlQ29sdW1uSXNOdWxsICcgK1xuICAgICAgICAncmV2RGF0YWJhc2VDb2x1bW5MZW5ndGhzIHJldkRhdGFiYXNlQ29sdW1uTmFtZXMgcmV2RGF0YWJhc2VDb2x1bW5OYW1lZCByZXZEYXRhYmFzZUNvbHVtbk51bWJlcmVkICcgK1xuICAgICAgICAncmV2RGF0YWJhc2VDb2x1bW5UeXBlcyByZXZEYXRhYmFzZUNvbm5lY3RSZXN1bHQgcmV2RGF0YWJhc2VDdXJzb3JzIHJldkRhdGFiYXNlSUQgcmV2RGF0YWJhc2VUYWJsZU5hbWVzICcgK1xuICAgICAgICAncmV2RGF0YWJhc2VUeXBlIHJldkRhdGFGcm9tUXVlcnkgcmV2ZGJfY2xvc2VDdXJzb3IgcmV2ZGJfY29sdW1uYnludW1iZXIgcmV2ZGJfY29sdW1uY291bnQgcmV2ZGJfY29sdW1uaXNudWxsICcgK1xuICAgICAgICAncmV2ZGJfY29sdW1ubGVuZ3RocyByZXZkYl9jb2x1bW5uYW1lcyByZXZkYl9jb2x1bW50eXBlcyByZXZkYl9jb21taXQgcmV2ZGJfY29ubmVjdCByZXZkYl9jb25uZWN0aW9ucyAnICtcbiAgICAgICAgJ3JldmRiX2Nvbm5lY3Rpb25lcnIgcmV2ZGJfY3VycmVudHJlY29yZCByZXZkYl9jdXJzb3Jjb25uZWN0aW9uIHJldmRiX2N1cnNvcmVyciByZXZkYl9jdXJzb3JzIHJldmRiX2RidHlwZSAnICtcbiAgICAgICAgJ3JldmRiX2Rpc2Nvbm5lY3QgcmV2ZGJfZXhlY3V0ZSByZXZkYl9pc2VvZiByZXZkYl9pc2JvZiByZXZkYl9tb3ZlZmlyc3QgcmV2ZGJfbW92ZWxhc3QgcmV2ZGJfbW92ZW5leHQgJyArXG4gICAgICAgICdyZXZkYl9tb3ZlcHJldiByZXZkYl9xdWVyeSByZXZkYl9xdWVyeWxpc3QgcmV2ZGJfcmVjb3JkY291bnQgcmV2ZGJfcm9sbGJhY2sgcmV2ZGJfdGFibGVuYW1lcyAnICtcbiAgICAgICAgJ3JldkdldERhdGFiYXNlRHJpdmVyUGF0aCByZXZOdW1iZXJPZlJlY29yZHMgcmV2T3BlbkRhdGFiYXNlIHJldk9wZW5EYXRhYmFzZXMgcmV2UXVlcnlEYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldlF1ZXJ5RGF0YWJhc2VCbG9iIHJldlF1ZXJ5UmVzdWx0IHJldlF1ZXJ5SXNBdFN0YXJ0IHJldlF1ZXJ5SXNBdEVuZCByZXZVbml4RnJvbU1hY1BhdGggcmV2WE1MQXR0cmlidXRlICcgK1xuICAgICAgICAncmV2WE1MQXR0cmlidXRlcyByZXZYTUxBdHRyaWJ1dGVWYWx1ZXMgcmV2WE1MQ2hpbGRDb250ZW50cyByZXZYTUxDaGlsZE5hbWVzIHJldlhNTENyZWF0ZVRyZWVGcm9tRmlsZVdpdGhOYW1lc3BhY2VzICcgK1xuICAgICAgICAncmV2WE1MQ3JlYXRlVHJlZVdpdGhOYW1lc3BhY2VzIHJldlhNTERhdGFGcm9tWFBhdGhRdWVyeSByZXZYTUxFdmFsdWF0ZVhQYXRoIHJldlhNTEZpcnN0Q2hpbGQgcmV2WE1MTWF0Y2hpbmdOb2RlICcgK1xuICAgICAgICAncmV2WE1MTmV4dFNpYmxpbmcgcmV2WE1MTm9kZUNvbnRlbnRzIHJldlhNTE51bWJlck9mQ2hpbGRyZW4gcmV2WE1MUGFyZW50IHJldlhNTFByZXZpb3VzU2libGluZyAnICtcbiAgICAgICAgJ3JldlhNTFJvb3ROb2RlIHJldlhNTFJQQ19DcmVhdGVSZXF1ZXN0IHJldlhNTFJQQ19Eb2N1bWVudHMgcmV2WE1MUlBDX0Vycm9yICcgK1xuICAgICAgICAncmV2WE1MUlBDX0dldEhvc3QgcmV2WE1MUlBDX0dldE1ldGhvZCByZXZYTUxSUENfR2V0UGFyYW0gcmV2WE1MVGV4dCByZXZYTUxSUENfRXhlY3V0ZSAnICtcbiAgICAgICAgJ3JldlhNTFJQQ19HZXRQYXJhbUNvdW50IHJldlhNTFJQQ19HZXRQYXJhbU5vZGUgcmV2WE1MUlBDX0dldFBhcmFtVHlwZSByZXZYTUxSUENfR2V0UGF0aCByZXZYTUxSUENfR2V0UG9ydCAnICtcbiAgICAgICAgJ3JldlhNTFJQQ19HZXRQcm90b2NvbCByZXZYTUxSUENfR2V0UmVxdWVzdCByZXZYTUxSUENfR2V0UmVzcG9uc2UgcmV2WE1MUlBDX0dldFNvY2tldCByZXZYTUxUcmVlICcgK1xuICAgICAgICAncmV2WE1MVHJlZXMgcmV2WE1MVmFsaWRhdGVEVEQgcmV2WmlwRGVzY3JpYmVJdGVtIHJldlppcEVudW1lcmF0ZUl0ZW1zIHJldlppcE9wZW5BcmNoaXZlcyByb3VuZCBzYW1wVmFyaWFuY2UgJyArXG4gICAgICAgICdzZWMgc2VjcyBzZWNvbmRzIHNlbnRlbmNlT2Zmc2V0IHNoYTFEaWdlc3Qgc2hlbGwgc2hvcnRGaWxlUGF0aCBzaW4gc3BlY2lhbEZvbGRlclBhdGggc3FydCBzdGFuZGFyZERldmlhdGlvbiBzdGF0Um91bmQgJyArXG4gICAgICAgICdzdGREZXYgc3VtIHN5c0Vycm9yIHN5c3RlbVZlcnNpb24gdGFuIHRlbXBOYW1lIHRleHREZWNvZGUgdGV4dEVuY29kZSB0aWNrIHRpY2tzIHRpbWUgdG8gdG9rZW5PZmZzZXQgdG9Mb3dlciB0b1VwcGVyICcgK1xuICAgICAgICAndHJhbnNwb3NlIHRydWV3b3JkT2Zmc2V0IHRydW5jIHVuaURlY29kZSB1bmlFbmNvZGUgdXBwZXIgVVJMRGVjb2RlIFVSTEVuY29kZSBVUkxTdGF0dXMgdXVpZCB2YWx1ZSB2YXJpYWJsZU5hbWVzICcgK1xuICAgICAgICAndmFyaWFuY2UgdmVyc2lvbiB3YWl0RGVwdGggd2Vla2RheU5hbWVzIHdvcmRPZmZzZXQgeHNsdEFwcGx5U3R5bGVzaGVldCB4c2x0QXBwbHlTdHlsZXNoZWV0RnJvbUZpbGUgeHNsdExvYWRTdHlsZXNoZWV0ICcgK1xuICAgICAgICAneHNsdExvYWRTdHlsZXNoZWV0RnJvbUZpbGUgYWRkIGJyZWFrcG9pbnQgY2FuY2VsIGNsZWFyIGxvY2FsIHZhcmlhYmxlIGZpbGUgd29yZCBsaW5lIGZvbGRlciBkaXJlY3RvcnkgVVJMIGNsb3NlIHNvY2tldCBwcm9jZXNzICcgK1xuICAgICAgICAnY29tYmluZSBjb25zdGFudCBjb252ZXJ0IGNyZWF0ZSBuZXcgYWxpYXMgZm9sZGVyIGRpcmVjdG9yeSBkZWNyeXB0IGRlbGV0ZSB2YXJpYWJsZSB3b3JkIGxpbmUgZm9sZGVyICcgK1xuICAgICAgICAnZGlyZWN0b3J5IFVSTCBkaXNwYXRjaCBkaXZpZGUgZG8gZW5jcnlwdCBmaWx0ZXIgZ2V0IGluY2x1ZGUgaW50ZXJzZWN0IGtpbGwgbGliVVJMRG93bmxvYWRUb0ZpbGUgJyArXG4gICAgICAgICdsaWJVUkxGb2xsb3dIdHRwUmVkaXJlY3RzIGxpYlVSTGZ0cFVwbG9hZCBsaWJVUkxmdHBVcGxvYWRGaWxlIGxpYlVSTHJlc2V0QWxsIGxpYlVybFNldEF1dGhDYWxsYmFjayBsaWJVUkxTZXREcml2ZXIgJyArXG4gICAgICAgICdsaWJVUkxTZXRDdXN0b21IVFRQSGVhZGVycyBsaWJVcmxTZXRFeHBlY3QxMDAgbGliVVJMU2V0RlRQTGlzdENvbW1hbmQgbGliVVJMU2V0RlRQTW9kZSBsaWJVUkxTZXRGVFBTdG9wVGltZSAnICtcbiAgICAgICAgJ2xpYlVSTFNldFN0YXR1c0NhbGxiYWNrIGxvYWQgZXh0ZW5zaW9uIGxvYWRlZEV4dGVuc2lvbnMgbXVsdGlwbHkgc29ja2V0IHByZXBhcmUgcHJvY2VzcyBwb3N0IHNlZWsgcmVsIHJlbGF0aXZlIHJlYWQgZnJvbSBwcm9jZXNzIHJlbmFtZSAnICtcbiAgICAgICAgJ3JlcGxhY2UgcmVxdWlyZSByZXNldEFsbCByZXNvbHZlIHJldkFkZFhNTE5vZGUgcmV2QXBwZW5kWE1MIHJldkNsb3NlQ3Vyc29yIHJldkNsb3NlRGF0YWJhc2UgcmV2Q29tbWl0RGF0YWJhc2UgJyArXG4gICAgICAgICdyZXZDb3B5RmlsZSByZXZDb3B5Rm9sZGVyIHJldkNvcHlYTUxOb2RlIHJldkRlbGV0ZUZvbGRlciByZXZEZWxldGVYTUxOb2RlIHJldkRlbGV0ZUFsbFhNTFRyZWVzICcgK1xuICAgICAgICAncmV2RGVsZXRlWE1MVHJlZSByZXZFeGVjdXRlU1FMIHJldkdvVVJMIHJldkluc2VydFhNTE5vZGUgcmV2TW92ZUZvbGRlciByZXZNb3ZlVG9GaXJzdFJlY29yZCByZXZNb3ZlVG9MYXN0UmVjb3JkICcgK1xuICAgICAgICAncmV2TW92ZVRvTmV4dFJlY29yZCByZXZNb3ZlVG9QcmV2aW91c1JlY29yZCByZXZNb3ZlVG9SZWNvcmQgcmV2TW92ZVhNTE5vZGUgcmV2UHV0SW50b1hNTE5vZGUgcmV2Um9sbEJhY2tEYXRhYmFzZSAnICtcbiAgICAgICAgJ3JldlNldERhdGFiYXNlRHJpdmVyUGF0aCByZXZTZXRYTUxBdHRyaWJ1dGUgcmV2WE1MUlBDX0FkZFBhcmFtIHJldlhNTFJQQ19EZWxldGVBbGxEb2N1bWVudHMgcmV2WE1MQWRkRFREICcgK1xuICAgICAgICAncmV2WE1MUlBDX0ZyZWUgcmV2WE1MUlBDX0ZyZWVBbGwgcmV2WE1MUlBDX0RlbGV0ZURvY3VtZW50IHJldlhNTFJQQ19EZWxldGVQYXJhbSByZXZYTUxSUENfU2V0SG9zdCAnICtcbiAgICAgICAgJ3JldlhNTFJQQ19TZXRNZXRob2QgcmV2WE1MUlBDX1NldFBvcnQgcmV2WE1MUlBDX1NldFByb3RvY29sIHJldlhNTFJQQ19TZXRTb2NrZXQgcmV2WmlwQWRkSXRlbVdpdGhEYXRhICcgK1xuICAgICAgICAncmV2WmlwQWRkSXRlbVdpdGhGaWxlIHJldlppcEFkZFVuY29tcHJlc3NlZEl0ZW1XaXRoRGF0YSByZXZaaXBBZGRVbmNvbXByZXNzZWRJdGVtV2l0aEZpbGUgcmV2WmlwQ2FuY2VsICcgK1xuICAgICAgICAncmV2WmlwQ2xvc2VBcmNoaXZlIHJldlppcERlbGV0ZUl0ZW0gcmV2WmlwRXh0cmFjdEl0ZW1Ub0ZpbGUgcmV2WmlwRXh0cmFjdEl0ZW1Ub1ZhcmlhYmxlIHJldlppcFNldFByb2dyZXNzQ2FsbGJhY2sgJyArXG4gICAgICAgICdyZXZaaXBSZW5hbWVJdGVtIHJldlppcFJlcGxhY2VJdGVtV2l0aERhdGEgcmV2WmlwUmVwbGFjZUl0ZW1XaXRoRmlsZSByZXZaaXBPcGVuQXJjaGl2ZSBzZW5kIHNldCBzb3J0IHNwbGl0IHN0YXJ0IHN0b3AgJyArXG4gICAgICAgICdzdWJ0cmFjdCBzeW1tZXRyaWMgdW5pb24gdW5sb2FkIHZlY3RvckRvdFByb2R1Y3Qgd2FpdCB3cml0ZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJlbmRcXFxcc2lmXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgIFRJVExFMixcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgVElUTEUxXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYmVuZFxcXFxzKycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ2VuZCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIFRJVExFMVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb21tYW5kIG9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgVElUTEUyLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBUSVRMRTFcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc8XFxcXD8ocmV2fGxjfGxpdmVjb2RlKScsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnPFxcXFw/JyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcPz4nIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIFRJVExFMVxuICAgIF0uY29uY2F0KENPTU1FTlRfTU9ERVMpLFxuICAgIGlsbGVnYWw6ICc7JHxeXFxcXFt8Xj18Jnx7J1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAvLyBKUyBrZXl3b3Jkc1xuICAgICAgJ2luIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzICcgK1xuICAgICAgJ3N3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIGNhc2UgZGVmYXVsdCBmdW5jdGlvbiB2YXIgd2l0aCAnICtcbiAgICAgIC8vIExpdmVTY3JpcHQga2V5d29yZHNcbiAgICAgICd0aGVuIHVubGVzcyB1bnRpbCBsb29wIG9mIGJ5IHdoZW4gYW5kIG9yIGlzIGlzbnQgbm90IGl0IHRoYXQgb3RoZXJ3aXNlIGZyb20gdG8gdGlsIGZhbGx0aHJvdWdoIHN1cGVyICcgK1xuICAgICAgJ2Nhc2UgZGVmYXVsdCBmdW5jdGlvbiB2YXIgdm9pZCBjb25zdCBsZXQgZW51bSBleHBvcnQgaW1wb3J0IG5hdGl2ZSBsaXN0IG1hcCAnICtcbiAgICAgICdfX2hhc1Byb3AgX19leHRlbmRzIF9fc2xpY2UgX19iaW5kIF9faW5kZXhPZicsXG4gICAgbGl0ZXJhbDpcbiAgICAgIC8vIEpTIGxpdGVyYWxzXG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCAnICtcbiAgICAgIC8vIExpdmVTY3JpcHQgbGl0ZXJhbHNcbiAgICAgICd5ZXMgbm8gb24gb2ZmIGl0IHRoYXQgdm9pZCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnbnBtIHJlcXVpcmUgY29uc29sZSBwcmludCBtb2R1bGUgZ2xvYmFsIHdpbmRvdyBkb2N1bWVudCdcbiAgfTtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX10oPzpcXC1bMC05QS1aYS16JF9dfFswLTlBLVphLXokX10pKic7XG4gIHZhciBUSVRMRSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSlNfSURFTlRfUkV9KTtcbiAgdmFyIFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogLyNcXHsvLCBlbmQ6IC99LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIFNVQlNUX1NJTVBMRSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC8jW0EtWmEteiRfXS8sIGVuZDogLyg/OlxcLVswLTlBLVphLXokX118WzAtOUEtWmEteiRfXSkqLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgdmFyIEVYUFJFU1NJT05TID0gW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbeFhdW2EtZkEtRjAtOV9dKyl8KFxcXFxiXFxcXGQoXFxcXGR8X1xcXFxkKSooXFxcXC4oXFxcXGQoXFxcXGR8X1xcXFxkKSopPyk/KF8qW2VFXShbLStdXFxcXGQoX1xcXFxkfFxcXFxkKSopPyk/W19hLXpdKiknLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgc3RhcnRzOiB7ZW5kOiAnKFxcXFxzKi8pPycsIHJlbGV2YW5jZTogMH0gLy8gYSBudW1iZXIgdHJpZXMgdG8gZWF0IHRoZSBmb2xsb3dpbmcgc2xhc2ggdG8gcHJldmVudCB0cmVhdGluZyBpdCBhcyBhIHJlZ2V4cFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgU1VCU1QsIFNVQlNUX1NJTVBMRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBTVUJTVF9TSU1QTEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogL1xcXFwvLCBlbmQ6IC8oXFxzfCQpLyxcbiAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICB2YXJpYW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcvLycsIGVuZDogJy8vW2dpbV0qJyxcbiAgICAgICAgICBjb250YWluczogW1NVQlNULCBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcmVnZXggY2FuJ3Qgc3RhcnQgd2l0aCBzcGFjZSB0byBwYXJzZSB4IC8gMiAvIDMgYXMgdHdvIGRpdmlzaW9uc1xuICAgICAgICAgIC8vIHJlZ2V4IGNhbid0IHN0YXJ0IHdpdGggKiwgYW5kIGl0IHN1cHBvcnRzIGFuIFwiaWxsZWdhbFwiIGluIHRoZSBtYWluIG1vZGVcbiAgICAgICAgICBiZWdpbjogL1xcLyg/IVsgKl0pKFxcXFxcXC98LikqP1xcL1tnaW1dKig/PVxcVykvXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnQCcgKyBKU19JREVOVF9SRVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICdgYCcsIGVuZDogJ2BgJyxcbiAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHN1Ykxhbmd1YWdlOiAnamF2YXNjcmlwdCdcbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gRVhQUkVTU0lPTlM7XG5cbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnXFxcXCgnLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZiddLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFNZTUJPTFMgPSB7XG4gICAgYmVnaW46ICcoIz0+fD0+fFxcXFx8Pj58LT8tPnxcXFxcIS0+KSdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbHMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TLmNvbmNhdChbXG4gICAgICBobGpzLkNPTU1FTlQoJ1xcXFwvXFxcXConLCAnXFxcXCpcXFxcLycpLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNZTUJPTFMsIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgY29udGFpbnM6IFtUSVRMRSwgUEFSQU1TXSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8oXFxcXCguKlxcXFwpKT9cXFxccypcXFxcQlxcXFwtPlxcXFwqPycsIGVuZDogJ1xcXFwtPlxcXFwqPydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnKCcgKyBKU19JREVOVF9SRSArICdcXFxccyooPzo9fDo9KVxcXFxzKik/IT8oXFxcXCguKlxcXFwpKT9cXFxccypcXFxcQlstfl17MSwyfT5cXFxcKj8nLCBlbmQ6ICdbLX5dezEsMn0+XFxcXCo/J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcoJyArIEpTX0lERU5UX1JFICsgJ1xcXFxzKig/Oj18Oj0pXFxcXHMqKT8oXFxcXCguKlxcXFwpKT9cXFxccypcXFxcQiE/Wy1+XXsxLDJ9PlxcXFwqPycsIGVuZDogJyE/Wy1+XXsxLDJ9PlxcXFwqPydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGlsbGVnYWw6IC9bOj1cIlxcW1xcXV0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdleHRlbmRzJyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgICAgICBjb250YWluczogW1RJVExFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgVElUTEVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEpTX0lERU5UX1JFICsgJzonLCBlbmQ6ICc6JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBpZGVudGlmaWVyID0gJyhbLWEtekEtWiQuX11bXFxcXHdcXFxcLSQuXSopJztcbiAgcmV0dXJuIHtcbiAgICAvL2xleGVtZXM6ICdbLiVdPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2JlZ2luIGVuZCB0cnVlIGZhbHNlIGRlY2xhcmUgZGVmaW5lIGdsb2JhbCAnICtcbiAgICAgICdjb25zdGFudCBwcml2YXRlIGxpbmtlcl9wcml2YXRlIGludGVybmFsICcgK1xuICAgICAgJ2F2YWlsYWJsZV9leHRlcm5hbGx5IGxpbmtvbmNlIGxpbmtvbmNlX29kciB3ZWFrICcgK1xuICAgICAgJ3dlYWtfb2RyIGFwcGVuZGluZyBkbGxpbXBvcnQgZGxsZXhwb3J0IGNvbW1vbiAnICtcbiAgICAgICdkZWZhdWx0IGhpZGRlbiBwcm90ZWN0ZWQgZXh0ZXJuX3dlYWsgZXh0ZXJuYWwgJyArXG4gICAgICAndGhyZWFkX2xvY2FsIHplcm9pbml0aWFsaXplciB1bmRlZiBudWxsIHRvIHRhaWwgJyArXG4gICAgICAndGFyZ2V0IHRyaXBsZSBkYXRhbGF5b3V0IHZvbGF0aWxlIG51dyBuc3cgbm5hbiAnICtcbiAgICAgICduaW5mIG5zeiBhcmNwIGZhc3QgZXhhY3QgaW5ib3VuZHMgYWxpZ24gJyArXG4gICAgICAnYWRkcnNwYWNlIHNlY3Rpb24gYWxpYXMgbW9kdWxlIGFzbSBzaWRlZWZmZWN0ICcgK1xuICAgICAgJ2djIGRiZyBsaW5rZXJfcHJpdmF0ZV93ZWFrIGF0dHJpYnV0ZXMgYmxvY2thZGRyZXNzICcgK1xuICAgICAgJ2luaXRpYWxleGVjIGxvY2FsZHluYW1pYyBsb2NhbGV4ZWMgcHJlZml4IHVubmFtZWRfYWRkciAnICtcbiAgICAgICdjY2MgZmFzdGNjIGNvbGRjYyB4ODZfc3RkY2FsbGNjIHg4Nl9mYXN0Y2FsbGNjICcgK1xuICAgICAgJ2FybV9hcGNzY2MgYXJtX2FhcGNzY2MgYXJtX2FhcGNzX3ZmcGNjIHB0eF9kZXZpY2UgJyArXG4gICAgICAncHR4X2tlcm5lbCBpbnRlbF9vY2xfYmljYyBtc3A0MzBfaW50cmNjIHNwaXJfZnVuYyAnICtcbiAgICAgICdzcGlyX2tlcm5lbCB4ODZfNjRfc3lzdmNjIHg4Nl82NF93aW42NGNjIHg4Nl90aGlzY2FsbGNjICcgK1xuICAgICAgJ2NjIGMgc2lnbmV4dCB6ZXJvZXh0IGlucmVnIHNyZXQgbm91bndpbmQgJyArXG4gICAgICAnbm9yZXR1cm4gbm9hbGlhcyBub2NhcHR1cmUgYnl2YWwgbmVzdCByZWFkbm9uZSAnICtcbiAgICAgICdyZWFkb25seSBpbmxpbmVoaW50IG5vaW5saW5lIGFsd2F5c2lubGluZSBvcHRzaXplIHNzcCAnICtcbiAgICAgICdzc3ByZXEgbm9yZWR6b25lIG5vaW1wbGljaXRmbG9hdCBuYWtlZCBidWlsdGluIGNvbGQgJyArXG4gICAgICAnbm9idWlsdGluIG5vZHVwbGljYXRlIG5vbmxhenliaW5kIG9wdG5vbmUgcmV0dXJuc190d2ljZSAnICtcbiAgICAgICdzYW5pdGl6ZV9hZGRyZXNzIHNhbml0aXplX21lbW9yeSBzYW5pdGl6ZV90aHJlYWQgc3Nwc3Ryb25nICcgK1xuICAgICAgJ3V3dGFibGUgcmV0dXJuZWQgdHlwZSBvcGFxdWUgZXEgbmUgc2x0IHNndCAnICtcbiAgICAgICdzbGUgc2dlIHVsdCB1Z3QgdWxlIHVnZSBvZXEgb25lIG9sdCBvZ3QgJyArXG4gICAgICAnb2xlIG9nZSBvcmQgdW5vIHVlcSB1bmUgeCBhY3FfcmVsIGFjcXVpcmUgJyArXG4gICAgICAnYWxpZ25zdGFjayBhdG9taWMgY2F0Y2ggY2xlYW51cCBmaWx0ZXIgaW50ZWxkaWFsZWN0ICcgK1xuICAgICAgJ21heCBtaW4gbW9ub3RvbmljIG5hbmQgcGVyc29uYWxpdHkgcmVsZWFzZSBzZXFfY3N0ICcgK1xuICAgICAgJ3NpbmdsZXRocmVhZCB1bWF4IHVtaW4gdW5vcmRlcmVkIHhjaGcgYWRkIGZhZGQgJyArXG4gICAgICAnc3ViIGZzdWIgbXVsIGZtdWwgdWRpdiBzZGl2IGZkaXYgdXJlbSBzcmVtICcgK1xuICAgICAgJ2ZyZW0gc2hsIGxzaHIgYXNociBhbmQgb3IgeG9yIGljbXAgZmNtcCAnICtcbiAgICAgICdwaGkgY2FsbCB0cnVuYyB6ZXh0IHNleHQgZnB0cnVuYyBmcGV4dCB1aXRvZnAgJyArXG4gICAgICAnc2l0b2ZwIGZwdG91aSBmcHRvc2kgaW50dG9wdHIgcHRydG9pbnQgYml0Y2FzdCAnICtcbiAgICAgICdhZGRyc3BhY2VjYXN0IHNlbGVjdCB2YV9hcmcgcmV0IGJyIHN3aXRjaCBpbnZva2UgJyArXG4gICAgICAndW53aW5kIHVucmVhY2hhYmxlIGluZGlyZWN0YnIgbGFuZGluZ3BhZCByZXN1bWUgJyArXG4gICAgICAnbWFsbG9jIGFsbG9jYSBmcmVlIGxvYWQgc3RvcmUgZ2V0ZWxlbWVudHB0ciAnICtcbiAgICAgICdleHRyYWN0ZWxlbWVudCBpbnNlcnRlbGVtZW50IHNodWZmbGV2ZWN0b3IgZ2V0cmVzdWx0ICcgK1xuICAgICAgJ2V4dHJhY3R2YWx1ZSBpbnNlcnR2YWx1ZSBhdG9taWNybXcgY21weGNoZyBmZW5jZSAnICtcbiAgICAgICdhcmdtZW1vbmx5IGRvdWJsZScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnaVxcXFxkKydcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JywgJ1xcXFxuJywge3JlbGV2YW5jZTogMH1cbiAgICAgICksXG4gICAgICAvLyBEb3VibGUgcXVvdGUgc3RyaW5nXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIERvdWJsZS1xdW90ZWQgc3RyaW5nXG4gICAgICAgICAgeyBiZWdpbjogJ1wiJywgZW5kOiAnW15cXFxcXFxcXF1cIicgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ0AnICsgaWRlbnRpZmllciB9LFxuICAgICAgICAgIHsgYmVnaW46ICdAXFxcXGQrJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICchJyArIGlkZW50aWZpZXIgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnIVxcXFxkKycgKyBpZGVudGlmaWVyIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnJScgKyBpZGVudGlmaWVyIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyVcXFxcZCsnIH0sXG4gICAgICAgICAgeyBiZWdpbjogJyNcXFxcZCsnIH0sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7IGJlZ2luOiAnMFt4WF1bYS1mQS1GMC05XSsnIH0sXG4gICAgICAgICAgICB7IGJlZ2luOiAnLT9cXFxcZCsoPzpbLl1cXFxcZCspPyg/OltlRV1bLStdP1xcXFxkKyg/OlsuXVxcXFxkKyk/KT8nIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgICB2YXIgTFNMX1NUUklOR19FU0NBUEVfQ0hBUlMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46IC9cXFxcW3RuXCJcXFxcXS9cbiAgICB9O1xuXG4gICAgdmFyIExTTF9TVFJJTkdTID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgTFNMX1NUUklOR19FU0NBUEVfQ0hBUlNcbiAgICAgICAgXVxuICAgIH07XG5cbiAgICB2YXIgTFNMX05VTUJFUlMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFXG4gICAgfTtcblxuICAgIHZhciBMU0xfQ09OU1RBTlRTID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86UEl8VFdPX1BJfFBJX0JZX1RXT3xERUdfVE9fUkFEfFJBRF9UT19ERUd8U1FSVDIpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpYUF9FUlJPUl8oPzpFWFBFUklFTkNFU19ESVNBQkxFRHxFWFBFUklFTkNFXyg/OkRJU0FCTEVEfFNVU1BFTkRFRCl8SU5WQUxJRF8oPzpFWFBFUklFTkNFfFBBUkFNRVRFUlMpfEtFWV9OT1RfRk9VTkR8TUFUVVJJVFlfRVhDRUVERUR8Tk9ORXxOT1RfKD86Rk9VTkR8UEVSTUlUVEVEKD86X0xBTkQpPyl8Tk9fRVhQRVJJRU5DRXxRVU9UQV9FWENFRURFRHxSRVRSWV9VUERBVEV8U1RPUkFHRV9FWENFUFRJT058U1RPUkVfRElTQUJMRUR8VEhST1RUTEVEfFVOS05PV05fRVJST1IpfEpTT05fQVBQRU5EfFNUQVRVU18oPzpQSFlTSUNTfFJPVEFURV9bWFlaXXxQSEFOVE9NfFNBTkRCT1h8QkxPQ0tfR1JBQig/Ol9PQkpFQ1QpP3woPzpESUV8UkVUVVJOKV9BVF9FREdFfENBU1RfU0hBRE9XU3xPS3xNQUxGT1JNRURfUEFSQU1TfFRZUEVfTUlTTUFUQ0h8Qk9VTkRTX0VSUk9SfE5PVF8oPzpGT1VORHxTVVBQT1JURUQpfElOVEVSTkFMX0VSUk9SfFdISVRFTElTVF9GQUlMRUQpfEFHRU5UKD86Xyg/OkJZXyg/OkxFR0FDWV98VVNFUilOQU1FfEZMWUlOR3xBVFRBQ0hNRU5UU3xTQ1JJUFRFRHxNT1VTRUxPT0t8U0lUVElOR3xPTl9PQkpFQ1R8QVdBWXxXQUxLSU5HfElOX0FJUnxUWVBJTkd8Q1JPVUNISU5HfEJVU1l8QUxXQVlTX1JVTnxBVVRPUElMT1R8TElTVF8oPzpQQVJDRUwoPzpfT1dORVIpP3xSRUdJT04pKSk/fENBTUVSQV8oPzpQSVRDSHxESVNUQU5DRXxCRUhJTkRORVNTXyg/OkFOR0xFfExBRyl8KD86Rk9DVVN8UE9TSVRJT04pKD86Xyg/OlRIUkVTSE9MRHxMT0NLRUR8TEFHKSk/fEZPQ1VTX09GRlNFVHxBQ1RJVkUpfEFOSU1fT058TE9PUHxSRVZFUlNFfFBJTkdfUE9OR3xTTU9PVEh8Uk9UQVRFfFNDQUxFfEFMTF9TSURFU3xMSU5LXyg/OlJPT1R8U0VUfEFMTF8oPzpPVEhFUlN8Q0hJTERSRU4pfFRISVMpfEFDVElWRXxQQVNTKD86SVZFfF8oPzpBTFdBWVN8SUZfTk9UX0hBTkRMRUR8TkVWRVIpKXxTQ1JJUFRFRHxDT05UUk9MXyg/OkZXRHxCQUNLfCg/OlJPVF8pPyg/OkxFRlR8UklHSFQpfFVQfERPV058KD86TUxfKT9MQlVUVE9OKXxQRVJNSVNTSU9OXyg/OlJFVFVSTl9PQkpFQ1RTfERFQklUfE9WRVJSSURFX0FOSU1BVElPTlN8U0lMRU5UX0VTVEFURV9NQU5BR0VNRU5UfFRBS0VfQ09OVFJPTFN8VFJJR0dFUl9BTklNQVRJT058QVRUQUNIfENIQU5HRV9MSU5LU3woPzpDT05UUk9MfFRSQUNLKV9DQU1FUkF8VEVMRVBPUlQpfElOVkVOVE9SWV8oPzpURVhUVVJFfFNPVU5EfE9CSkVDVHxTQ1JJUFR8TEFORE1BUkt8Q0xPVEhJTkd8Tk9URUNBUkR8Qk9EWVBBUlR8QU5JTUFUSU9OfEdFU1RVUkV8QUxMfE5PTkUpfENIQU5HRURfKD86SU5WRU5UT1JZfENPTE9SfFNIQVBFfFNDQUxFfFRFWFRVUkV8TElOS3xBTExPV0VEX0RST1B8T1dORVJ8UkVHSU9OKD86X1NUQVJUKT98VEVMRVBPUlR8TUVESUEpfE9CSkVDVF8oPzpDTElDS19BQ1RJT058SE9WRVJfSEVJR0hUfExBU1RfT1dORVJfSUR8KD86UEhZU0lDU3xTRVJWRVJ8U1RSRUFNSU5HKV9DT1NUfFVOS05PV05fREVUQUlMfENIQVJBQ1RFUl9USU1FfFBIQU5UT018UEhZU0lDU3xURU1QXyg/OkFUVEFDSEVEfE9OX1JFWil8TkFNRXxERVNDfFBPU3xQUklNXyg/OkNPVU5UfEVRVUlWQUxFTkNFKXxSRVRVUk5fKD86UEFSQ0VMKD86X09XTkVSKT98UkVHSU9OKXxSRVpaRVJfS0VZfFJPTz9UfFZFTE9DSVRZfE9NRUdBfE9XTkVSfEdST1VQKD86X1RBRyk/fENSRUFUT1J8QVRUQUNIRURfKD86UE9JTlR8U0xPVFNfQVZBSUxBQkxFKXxSRU5ERVJfV0VJR0hUfCg/OkJPRFlfU0hBUEV8UEFUSEZJTkRJTkcpX1RZUEV8KD86UlVOTklOR3xUT1RBTClfU0NSSVBUX0NPVU5UfFRPVEFMX0lOVkVOVE9SWV9DT1VOVHxTQ1JJUFRfKD86TUVNT1JZfFRJTUUpKXxUWVBFXyg/OklOVEVHRVJ8RkxPQVR8U1RSSU5HfEtFWXxWRUNUT1J8Uk9UQVRJT058SU5WQUxJRCl8KD86REVCVUd8UFVCTElDKV9DSEFOTkVMfEFUVEFDSF8oPzpBVkFUQVJfQ0VOVEVSfENIRVNUfEhFQUR8QkFDS3xQRUxWSVN8TU9VVEh8Q0hJTnxORUNLfE5PU0V8QkVMTFl8W0xSXSg/OlNIT1VMREVSfEhBTkR8Rk9PVHxFQVJ8RVlFfFtVTF0oPzpBUk18TEVHKXxISVApfCg/OkxFRlR8UklHSFQpX1BFQ3xIVURfKD86Q0VOVEVSX1sxMl18VE9QXyg/OlJJR0hUfENFTlRFUnxMRUZUKXxCT1RUT00oPzpfKD86UklHSFR8TEVGVCkpPyl8W0xSXUhBTkRfUklORzF8VEFJTF8oPzpCQVNFfFRJUCl8W0xSXVdJTkd8RkFDRV8oPzpKQVd8W0xSXUVBUnxbTFJdRVlFfFRPVU5HRSl8R1JPSU58SElORF9bTFJdRk9PVCl8TEFORF8oPzpMRVZFTHxSQUlTRXxMT1dFUnxTTU9PVEh8Tk9JU0V8UkVWRVJUKXxEQVRBXyg/Ok9OTElORXxOQU1FfEJPUk58U0lNXyg/OlBPU3xTVEFUVVN8UkFUSU5HKXxQQVlJTkZPKXxQQVlNRU5UX0lORk9fKD86T05fRklMRXxVU0VEKXxSRU1PVEVfREFUQV8oPzpDSEFOTkVMfFJFUVVFU1R8UkVQTFkpfFBTWVNfKD86UEFSVF8oPzpCRl8oPzpaRVJPfE9ORSg/Ol9NSU5VU18oPzpERVNUX0NPTE9SfFNPVVJDRV8oQUxQSEF8Q09MT1IpKSk/fERFU1RfQ09MT1J8U09VUkNFXyhBTFBIQXxDT0xPUikpfEJMRU5EX0ZVTkNfKERFU1R8U09VUkNFKXxGTEFHU3woPzpTVEFSVHxFTkQpXyg/OkNPTE9SfEFMUEhBfFNDQUxFfEdMT1cpfE1BWF9BR0V8KD86UklCQk9OfFdJTkR8SU5URVJQXyg/OkNPTE9SfFNDQUxFKXxCT1VOQ0V8Rk9MTE9XXyg/OlNSQ3xWRUxPQ0lUWSl8VEFSR0VUXyg/OlBPU3xMSU5FQVIpfEVNSVNTSVZFKV9NQVNLKXxTUkNfKD86TUFYX0FHRXxQQVRURVJOfEFOR0xFXyg/OkJFR0lOfEVORCl8QlVSU1RfKD86UkFURXxQQVJUX0NPVU5UfFJBRElVU3xTUEVFRF8oPzpNSU58TUFYKSl8QUNDRUx8VEVYVFVSRXxUQVJHRVRfS0VZfE9NRUdBfFBBVFRFUk5fKD86RFJPUHxFWFBMT0RFfEFOR0xFKD86X0NPTkUoPzpfRU1QVFkpPyk/KSkpfFZFSElDTEVfKD86UkVGRVJFTkNFX0ZSQU1FfFRZUEVfKD86Tk9ORXxTTEVEfENBUnxCT0FUfEFJUlBMQU5FfEJBTExPT04pfCg/OkxJTkVBUnxBTkdVTEFSKV8oPzpGUklDVElPTl9USU1FU0NBTEV8TU9UT1JfRElSRUNUSU9OKXxMSU5FQVJfTU9UT1JfT0ZGU0VUfEhPVkVSXyg/OkhFSUdIVHxFRkZJQ0lFTkNZfFRJTUVTQ0FMRSl8QlVPWUFOQ1l8KD86TElORUFSfEFOR1VMQVIpXyg/OkRFRkxFQ1RJT05fKD86RUZGSUNJRU5DWXxUSU1FU0NBTEUpfE1PVE9SXyg/OkRFQ0FZXyk/VElNRVNDQUxFKXxWRVJUSUNBTF9BVFRSQUNUSU9OXyg/OkVGRklDSUVOQ1l8VElNRVNDQUxFKXxCQU5LSU5HXyg/OkVGRklDSUVOQ1l8TUlYfFRJTUVTQ0FMRSl8RkxBR18oPzpOT19ERUZMRUNUSU9OX1VQfExJTUlUXyg/OlJPTExfT05MWXxNT1RPUl9VUCl8SE9WRVJfKD86KD86V0FURVJ8VEVSUkFJTnxVUClfT05MWXxHTE9CQUxfSEVJR0hUKXxNT1VTRUxPT0tfKD86U1RFRVJ8QkFOSyl8Q0FNRVJBX0RFQ09VUExFRCkpfFBSSU1fKD86QUxMT1dfVU5TSVR8QUxQSEFfTU9ERSg/Ol8oPzpCTEVORHxFTUlTU0lWRXxNQVNLfE5PTkUpKT98Tk9STUFMfFNQRUNVTEFSfFRZUEUoPzpfKD86Qk9YfENZTElOREVSfFBSSVNNfFNQSEVSRXxUT1JVU3xUVUJFfFJJTkd8U0NVTFBUKSk/fEhPTEVfKD86REVGQVVMVHxDSVJDTEV8U1FVQVJFfFRSSUFOR0xFKXxNQVRFUklBTCg/Ol8oPzpTVE9ORXxNRVRBTHxHTEFTU3xXT09EfEZMRVNIfFBMQVNUSUN8UlVCQkVSKSk/fFNISU5ZXyg/Ok5PTkV8TE9XfE1FRElVTXxISUdIKXxCVU1QXyg/Ok5PTkV8QlJJR0hUfERBUkt8V09PRHxCQVJLfEJSSUNLU3xDSEVDS0VSfENPTkNSRVRFfFRJTEV8U1RPTkV8RElTS1N8R1JBVkVMfEJMT0JTfFNJRElOR3xMQVJHRVRJTEV8U1RVQ0NPfFNVQ1RJT058V0VBVkUpfFRFWEdFTl8oPzpERUZBVUxUfFBMQU5BUil8U0NSSVBURURfU0lUX09OTFl8U0NVTFBUXyg/OlRZUEVfKD86U1BIRVJFfFRPUlVTfFBMQU5FfENZTElOREVSfE1BU0spfEZMQUdfKD86TUlSUk9SfElOVkVSVCkpfFBIWVNJQ1MoPzpfKD86U0hBUEVfKD86Q09OVkVYfE5PTkV8UFJJTXxUWVBFKSkpP3woPzpQT1N8Uk9UKV9MT0NBTHxTTElDRXxURVhUfEZMRVhJQkxFfFBPSU5UX0xJR0hUfFRFTVBfT05fUkVafFBIQU5UT018UE9TSVRJT058U0lUX1RBUkdFVHxTSVpFfFJPVEFUSU9OfFRFWFRVUkV8TkFNRXxPTUVHQXxERVNDfExJTktfVEFSR0VUfENPTE9SfEJVTVBfU0hJTll8RlVMTEJSSUdIVHxURVhHRU58R0xPV3xNRURJQV8oPzpBTFRfSU1BR0VfRU5BQkxFfENPTlRST0xTfCg/OkNVUlJFTlR8SE9NRSlfVVJMfEFVVE9fKD86TE9PUHxQTEFZfFNDQUxFfFpPT00pfEZJUlNUX0NMSUNLX0lOVEVSQUNUfCg/OldJRFRIfEhFSUdIVClfUElYRUxTfFdISVRFTElTVCg/Ol9FTkFCTEUpP3xQRVJNU18oPzpJTlRFUkFDVHxDT05UUk9MKXxQQVJBTV9NQVh8Q09OVFJPTFNfKD86U1RBTkRBUkR8TUlOSSl8UEVSTV8oPzpOT05FfE9XTkVSfEdST1VQfEFOWU9ORSl8TUFYXyg/OlVSTF9MRU5HVEh8V0hJVEVMSVNUXyg/OlNJWkV8Q09VTlQpfCg/OldJRFRIfEhFSUdIVClfUElYRUxTKSkpfE1BU0tfKD86QkFTRXxPV05FUnxHUk9VUHxFVkVSWU9ORXxORVhUKXxQRVJNXyg/OlRSQU5TRkVSfE1PRElGWXxDT1BZfE1PVkV8QUxMKXxQQVJDRUxfKD86TUVESUFfQ09NTUFORF8oPzpTVE9QfFBBVVNFfFBMQVl8TE9PUHxURVhUVVJFfFVSTHxUSU1FfEFHRU5UfFVOTE9BRHxBVVRPX0FMSUdOfFRZUEV8U0laRXxERVNDfExPT1BfU0VUKXxGTEFHXyg/OkFMTE9XXyg/OkZMWXwoPzpHUk9VUF8pP1NDUklQVFN8TEFORE1BUkt8VEVSUkFGT1JNfERBTUFHRXxDUkVBVEVfKD86R1JPVVBfKT9PQkpFQ1RTKXxVU0VfKD86QUNDRVNTXyg/OkdST1VQfExJU1QpfEJBTl9MSVNUfExBTkRfUEFTU19MSVNUKXxMT0NBTF9TT1VORF9PTkxZfFJFU1RSSUNUX1BVU0hPQkpFQ1R8QUxMT1dfKD86R1JPVVB8QUxMKV9PQkpFQ1RfRU5UUlkpfENPVU5UXyg/OlRPVEFMfE9XTkVSfEdST1VQfE9USEVSfFNFTEVDVEVEfFRFTVApfERFVEFJTFNfKD86TkFNRXxERVNDfE9XTkVSfEdST1VQfEFSRUF8SUR8U0VFX0FWQVRBUlMpKXxMSVNUX1NUQVRfKD86TUFYfE1JTnxNRUFOfE1FRElBTnxTVERfREVWfFNVTSg/Ol9TUVVBUkVTKT98TlVNX0NPVU5UfEdFT01FVFJJQ19NRUFOfFJBTkdFKXxQQVlfKD86SElERXxERUZBVUxUKXxSRUdJT05fRkxBR18oPzpBTExPV19EQU1BR0V8RklYRURfU1VOfEJMT0NLX1RFUlJBRk9STXxTQU5EQk9YfERJU0FCTEVfKD86Q09MTElTSU9OU3xQSFlTSUNTKXxCTE9DS19GTFl8QUxMT1dfRElSRUNUX1RFTEVQT1JUfFJFU1RSSUNUX1BVU0hPQkpFQ1QpfEhUVFBfKD86TUVUSE9EfE1JTUVUWVBFfEJPRFlfKD86TUFYTEVOR1RIfFRSVU5DQVRFRCl8Q1VTVE9NX0hFQURFUnxQUkFHTUFfTk9fQ0FDSEV8VkVSQk9TRV9USFJPVFRMRXxWRVJJRllfQ0VSVCl8U0lUXyg/OklOVkFMSURfKD86QUdFTlR8TElOS19PQkpFQ1QpfE5PKD86VF9FWFBFUklFTkNFfF8oPzpBQ0NFU1N8RVhQRVJJRU5DRV9QRVJNSVNTSU9OfFNJVF9UQVJHRVQpKSl8U1RSSU5HXyg/OlRSSU0oPzpfKD86SEVBRHxUQUlMKSk/KXxDTElDS19BQ1RJT05fKD86Tk9ORXxUT1VDSHxTSVR8QlVZfFBBWXxPUEVOKD86X01FRElBKT98UExBWXxaT09NKXxUT1VDSF9JTlZBTElEX0ZBQ0V8UFJPRklMRV8oPzpOT05FfFNDUklQVF9NRU1PUlkpfFJDXyg/OkRBVEFfRkxBR1N8REVURUNUX1BIQU5UT018R0VUXyg/OkxJTktfTlVNfE5PUk1BTHxST09UX0tFWSl8TUFYX0hJVFN8UkVKRUNUXyg/OlRZUEVTfEFHRU5UU3woPzpOT04pP1BIWVNJQ0FMfExBTkQpKXxSQ0VSUl8oPzpDQVNUX1RJTUVfRVhDRUVERUR8U0lNX1BFUkZfTE9XfFVOS05PV04pfEVTVEFURV9BQ0NFU1NfKD86QUxMT1dFRF8oPzpBR0VOVHxHUk9VUClfKD86QUREfFJFTU9WRSl8QkFOTkVEX0FHRU5UXyg/OkFERHxSRU1PVkUpKXxERU5TSVRZfEZSSUNUSU9OfFJFU1RJVFVUSU9OfEdSQVZJVFlfTVVMVElQTElFUnxLRk1fKD86Q09NTUFORHxDTURfKD86UExBWXxTVE9QfFBBVVNFKXxNT0RFfEZPUldBUkR8TE9PUHxQSU5HX1BPTkd8UkVWRVJTRXxEQVRBfFJPVEFUSU9OfFRSQU5TTEFUSU9OKXxFUlJfKD86R0VORVJJQ3xQQVJDRUxfUEVSTUlTU0lPTlN8TUFMRk9STUVEX1BBUkFNU3xSVU5USU1FX1BFUk1JU1NJT05TfFRIUk9UVExFRCl8Q0hBUkFDVEVSXyg/OkNNRF8oPzooPzpTTU9PVEhfKT9TVE9QfEpVTVApfERFU0lSRURfKD86VFVSTl8pP1NQRUVEfFJBRElVU3xTVEFZX1dJVEhJTl9QQVJDRUx8TEVOR1RIfE9SSUVOVEFUSU9OfEFDQ09VTlRfRk9SX1NLSVBQRURfRlJBTUVTfEFWT0lEQU5DRV9NT0RFfFRZUEUoPzpfKD86W0FCQ0RdfE5PTkUpKT98TUFYXyg/OkRFQ0VMfFRVUk5fUkFESVVTfCg/OkFDQ0VMfFNQRUVEKSkpfFBVUlNVSVRfKD86T0ZGU0VUfEZVWlpfRkFDVE9SfEdPQUxfVE9MRVJBTkNFfElOVEVSQ0VQVCl8UkVRVUlSRV9MSU5FX09GX1NJR0hUfEZPUkNFX0RJUkVDVF9QQVRIfFZFUlRJQ0FMfEhPUklaT05UQUx8QVZPSURfKD86Q0hBUkFDVEVSU3xEWU5BTUlDX09CU1RBQ0xFU3xOT05FKXxQVV8oPzpFVkFERV8oPzpISURERU58U1BPVFRFRCl8RkFJTFVSRV8oPzpEWU5BTUlDX1BBVEhGSU5ESU5HX0RJU0FCTEVEfElOVkFMSURfKD86R09BTHxTVEFSVCl8Tk9fKD86TkFWTUVTSHxWQUxJRF9ERVNUSU5BVElPTil8T1RIRVJ8VEFSR0VUX0dPTkV8KD86UEFSQ0VMXyk/VU5SRUFDSEFCTEUpfCg/OkdPQUx8U0xPV0RPV05fRElTVEFOQ0UpX1JFQUNIRUQpfFRSQVZFUlNBTF9UWVBFKD86Xyg/OkZBU1R8Tk9ORXxTTE9XKSk/fENPTlRFTlRfVFlQRV8oPzpBVE9NfEZPUk18SFRNTHxKU09OfExMU0R8UlNTfFRFWFR8WEhUTUx8WE1MKXxHQ05QXyg/OlJBRElVU3xTVEFUSUMpfCg/OlBBVFJPTHxXQU5ERVIpX1BBVVNFX0FUX1dBWVBPSU5UU3xPUFRfKD86QVZBVEFSfENIQVJBQ1RFUnxFWENMVVNJT05fVk9MVU1FfExFR0FDWV9MSU5LU0VUfE1BVEVSSUFMX1ZPTFVNRXxPVEhFUnxTVEFUSUNfT0JTVEFDTEV8V0FMS0FCTEUpfFNJTV9TVEFUX1BDVF9DSEFSU19TVEVQUEVEKVxcXFxiJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKD86RkFMU0V8VFJVRSlcXFxcYidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OlpFUk9fUk9UQVRJT04pXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpFT0Z8SlNPTl8oPzpBUlJBWXxERUxFVEV8RkFMU0V8SU5WQUxJRHxOVUxMfE5VTUJFUnxPQkpFQ1R8U1RSSU5HfFRSVUUpfE5VTExfS0VZfFRFWFRVUkVfKD86QkxBTkt8REVGQVVMVHxNRURJQXxQTFlXT09EfFRSQU5TUEFSRU5UKXxVUkxfUkVRVUVTVF8oPzpHUkFOVEVEfERFTklFRCkpXFxcXGInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpaRVJPX1ZFQ1RPUnxUT1VDSF9JTlZBTElEXyg/OlRFWENPT1JEfFZFQ1RPUikpXFxcXGInXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgdmFyIExTTF9GVU5DVElPTlMgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYig/OmxsKD86QWdlbnRJbkV4cGVyaWVuY2V8KD86Q3JlYXRlfERhdGFTaXplfERlbGV0ZXxLZXlDb3VudHxLZXlzfFJlYWR8VXBkYXRlKUtleVZhbHVlfEdldEV4cGVyaWVuY2UoPzpEZXRhaWxzfEVycm9yTWVzc2FnZSl8UmV0dXJuT2JqZWN0c0J5KD86SUR8T3duZXIpfEpzb24oPzoyTGlzdHxbR1NdZXRWYWx1ZXxWYWx1ZVR5cGUpfFNpbnxDb3N8VGFufEF0YW4yfFNxcnR8UG93fEFic3xGYWJzfEZyYW5kfEZsb29yfENlaWx8Um91bmR8VmVjKD86TWFnfE5vcm18RGlzdCl8Um90KD86QmV0d2VlbnwyKD86RXVsZXJ8RndkfExlZnR8VXApKXwoPzpFdWxlcnxBeGVzKTJSb3R8V2hpc3BlcnwoPzpSZWdpb258T3duZXIpP1NheXxTaG91dHxMaXN0ZW4oPzpDb250cm9sfFJlbW92ZSk/fFNlbnNvcig/OlJlcGVhdHxSZW1vdmUpP3xEZXRlY3RlZCg/Ok5hbWV8S2V5fE93bmVyfFR5cGV8UG9zfFZlbHxHcmFifFJvdHxHcm91cHxMaW5rTnVtYmVyKXxEaWV8R3JvdW5kfFdpbmR8KD86W0dTXWV0KSg/OkFuaW1hdGlvbk92ZXJyaWRlfE1lbW9yeUxpbWl0fFByaW1NZWRpYVBhcmFtc3xQYXJjZWxNdXNpY1VSTHxPYmplY3QoPzpEZXNjfE5hbWUpfFBoeXNpY3NNYXRlcmlhbHxTdGF0dXN8U2NhbGV8Q29sb3J8QWxwaGF8VGV4dHVyZXxQb3N8Um90fEZvcmNlfFRvcnF1ZSl8UmVzZXRBbmltYXRpb25PdmVycmlkZXwoPzpTY2FsZXxPZmZzZXR8Um90YXRlKVRleHR1cmV8KD86Um90KT9UYXJnZXQoPzpSZW1vdmUpP3woPzpTdG9wKT9Nb3ZlVG9UYXJnZXR8QXBwbHkoPzpSb3RhdGlvbmFsKT9JbXB1bHNlfFNldCg/OktleWZyYW1lZE1vdGlvbnxDb250ZW50VHlwZXxSZWdpb25Qb3N8KD86QW5ndWxhcik/VmVsb2NpdHl8QnVveWFuY3l8SG92ZXJIZWlnaHR8Rm9yY2VBbmRUb3JxdWV8VGltZXJFdmVudHxTY3JpcHRTdGF0ZXxEYW1hZ2V8VGV4dHVyZUFuaW18U291bmQoPzpRdWV1ZWluZ3xSYWRpdXMpfFZlaGljbGUoPzpUeXBlfCg/OkZsb2F0fFZlY3RvcnxSb3RhdGlvbilQYXJhbSl8KD86VG91Y2h8U2l0KT9UZXh0fENhbWVyYSg/OkV5ZXxBdClPZmZzZXR8UHJpbWl0aXZlUGFyYW1zfENsaWNrQWN0aW9ufExpbmsoPzpBbHBoYXxDb2xvcnxQcmltaXRpdmVQYXJhbXMoPzpGYXN0KT98VGV4dHVyZSg/OkFuaW0pP3xDYW1lcmF8TWVkaWEpfFJlbW90ZVNjcmlwdEFjY2Vzc1BpbnxQYXlQcmljZXxMb2NhbFJvdCl8U2NhbGVCeUZhY3RvcnxHZXQoPzooPzpNYXh8TWluKVNjYWxlRmFjdG9yfENsb3Nlc3ROYXZQb2ludHxTdGF0aWNQYXRofFNpbVN0YXRzfEVudnxQcmltaXRpdmVQYXJhbXN8TGluayg/OlByaW1pdGl2ZVBhcmFtc3xOdW1iZXIoPzpPZlNpZGVzKT98S2V5fE5hbWV8TWVkaWEpfEhUVFBIZWFkZXJ8RnJlZVVSTHN8T2JqZWN0KD86RGV0YWlsc3xQZXJtTWFza3xQcmltQ291bnQpfFBhcmNlbCg/Ok1heFByaW1zfERldGFpbHN8UHJpbSg/OkNvdW50fE93bmVycykpfEF0dGFjaGVkKD86TGlzdCk/fCg/OlNQTWF4fEZyZWV8VXNlZClNZW1vcnl8UmVnaW9uKD86TmFtZXxUaW1lRGlsYXRpb258RlBTfENvcm5lcnxBZ2VudENvdW50KXxSb290KD86UG9zaXRpb258Um90YXRpb24pfFVuaXhUaW1lfCg/OlBhcmNlbHxSZWdpb24pRmxhZ3N8KD86V2FsbHxHTVQpY2xvY2t8U2ltdWxhdG9ySG9zdG5hbWV8Qm91bmRpbmdCb3h8R2VvbWV0cmljQ2VudGVyfENyZWF0b3J8TnVtYmVyT2YoPzpQcmltc3xOb3RlY2FyZExpbmVzfFNpZGVzKXxBbmltYXRpb24oPzpMaXN0KT98KD86Q2FtZXJhfExvY2FsKSg/OlBvc3xSb3QpfFZlbHxBY2NlbHxPbWVnYXxUaW1lKD86c3RhbXB8T2ZEYXkpfCg/Ok9iamVjdHxDZW50ZXJPZik/TWFzc3xNYXNzTUtTfEVuZXJneXxPd25lcnwoPzpPd25lcik/S2V5fFN1bkRpcmVjdGlvbnxUZXh0dXJlKD86T2Zmc2V0fFNjYWxlfFJvdCl8SW52ZW50b3J5KD86TnVtYmVyfE5hbWV8S2V5fFR5cGV8Q3JlYXRvcnxQZXJtTWFzayl8UGVybWlzc2lvbnMoPzpLZXkpP3xTdGFydFBhcmFtZXRlcnxMaXN0KD86TGVuZ3RofEVudHJ5VHlwZSl8RGF0ZXxBZ2VudCg/OlNpemV8SW5mb3xMYW5ndWFnZXxMaXN0KXxMYW5kT3duZXJBdHxOb3RlY2FyZExpbmV8U2NyaXB0KD86TmFtZXxTdGF0ZSkpfCg/OkdldHxSZXNldHxHZXRBbmRSZXNldClUaW1lfFBsYXlTb3VuZCg/OlNsYXZlKT98TG9vcFNvdW5kKD86TWFzdGVyfFNsYXZlKT98KD86VHJpZ2dlcnxTdG9wfFByZWxvYWQpU291bmR8KD86KD86R2V0fERlbGV0ZSlTdWJ8SW5zZXJ0KVN0cmluZ3xUbyg/OlVwcGVyfExvd2VyKXxHaXZlKD86SW52ZW50b3J5TGlzdHxNb25leSl8UmV6T2JqZWN0fCg/OlN0b3ApP0xvb2tBdHxTbGVlcHxDb2xsaXNpb25GaWx0ZXJ8KD86VGFrZXxSZWxlYXNlKUNvbnRyb2xzfERldGFjaEZyb21BdmF0YXJ8QXR0YWNoVG9BdmF0YXIoPzpUZW1wKT98SW5zdGFudE1lc3NhZ2V8KD86R2V0TmV4dCk/RW1haWx8U3RvcEhvdmVyfE1pbkV2ZW50RGVsYXl8Um90TG9va0F0fFN0cmluZyg/Okxlbmd0aHxUcmltKXwoPzpTdGFydHxTdG9wKUFuaW1hdGlvbnxUYXJnZXRPbWVnYXxSZXF1ZXN0KD86RXhwZXJpZW5jZSk/UGVybWlzc2lvbnN8KD86Q3JlYXRlfEJyZWFrKUxpbmt8QnJlYWtBbGxMaW5rc3woPzpHaXZlfFJlbW92ZSlJbnZlbnRvcnl8V2F0ZXJ8UGFzc1RvdWNoZXN8UmVxdWVzdCg/OkFnZW50fEludmVudG9yeSlEYXRhfFRlbGVwb3J0QWdlbnQoPzpIb21lfEdsb2JhbENvb3Jkcyk/fE1vZGlmeUxhbmR8Q29sbGlzaW9uU291bmR8UmVzZXRTY3JpcHR8TWVzc2FnZUxpbmtlZHxQdXNoT2JqZWN0fFBhc3NDb2xsaXNpb25zfEF4aXNBbmdsZTJSb3R8Um90Mig/OkF4aXN8QW5nbGUpfEEoPzpjb3N8c2luKXxBbmdsZUJldHdlZW58QWxsb3dJbnZlbnRvcnlEcm9wfFN1YlN0cmluZ0luZGV4fExpc3QyKD86Q1NWfEludGVnZXJ8SnNvbnxGbG9hdHxTdHJpbmd8S2V5fFZlY3RvcnxSb3R8TGlzdCg/OlN0cmlkZWQpPyl8RGVsZXRlU3ViTGlzdHxMaXN0KD86U3RhdGlzdGljc3xTb3J0fFJhbmRvbWl6ZXwoPzpJbnNlcnR8RmluZHxSZXBsYWNlKUxpc3QpfEVkZ2VPZldvcmxkfEFkanVzdFNvdW5kVm9sdW1lfEtleTJOYW1lfFRyaWdnZXJTb3VuZExpbWl0ZWR8RWplY3RGcm9tTGFuZHwoPzpDU1Z8UGFyc2VTdHJpbmcpMkxpc3R8T3Zlck15TGFuZHxTYW1lR3JvdXB8VW5TaXR8R3JvdW5kKD86U2xvcGV8Tm9ybWFsfENvbnRvdXIpfEdyb3VuZFJlcGVsfCg/OlNldHxSZW1vdmUpVmVoaWNsZUZsYWdzfFNpdE9uTGlua3woPzpBdmF0YXJPbik/KD86TGluayk/U2l0VGFyZ2V0fFNjcmlwdCg/OkRhbmdlcnxQcm9maWxlcil8RGlhbG9nfFZvbHVtZURldGVjdHxSZXNldE90aGVyU2NyaXB0fFJlbW90ZUxvYWRTY3JpcHRQaW58KD86T3BlbnxDbG9zZSlSZW1vdGVEYXRhQ2hhbm5lbHxTZW5kUmVtb3RlRGF0YXxSZW1vdGVEYXRhUmVwbHl8KD86SW50ZWdlcnxTdHJpbmcpVG9CYXNlNjR8WG9yQmFzZTY0fExvZyg/OjEwKT98QmFzZTY0VG8oPzpTdHJpbmd8SW50ZWdlcil8UGFyc2VTdHJpbmdLZWVwTnVsbHN8UmV6QXRSb290fFJlcXVlc3RTaW11bGF0b3JEYXRhfEZvcmNlTW91c2Vsb29rfCg/OkxvYWR8UmVsZWFzZXwoPzpFfFVuZSlzY2FwZSlVUkx8UGFyY2VsTWVkaWEoPzpDb21tYW5kTGlzdHxRdWVyeSl8TW9kUG93fE1hcERlc3RpbmF0aW9ufCg/OlJlbW92ZUZyb218QWRkVG98UmVzZXQpTGFuZCg/OlBhc3N8QmFuKUxpc3R8KD86U2V0fENsZWFyKUNhbWVyYVBhcmFtc3xIVFRQKD86UmVxdWVzdHxSZXNwb25zZSl8VGV4dEJveHxEZXRlY3RlZFRvdWNoKD86VVZ8RmFjZXxQb3N8KD86TnxCaW4pb3JtYWx8U1QpfCg/Ok1ENXxTSEExfER1bXBMaXN0MilTdHJpbmd8UmVxdWVzdCg/OlNlY3VyZSk/VVJMfENsZWFyKD86UHJpbXxMaW5rKU1lZGlhfCg/OkxpbmspP1BhcnRpY2xlU3lzdGVtfCg/OkdldHxSZXF1ZXN0KSg/OlVzZXJuYW1lfERpc3BsYXlOYW1lKXxSZWdpb25TYXlUb3xDYXN0UmF5fEdlbmVyYXRlS2V5fFRyYW5zZmVyTGluZGVuRG9sbGFyc3xNYW5hZ2VFc3RhdGVBY2Nlc3N8KD86Q3JlYXRlfERlbGV0ZSlDaGFyYWN0ZXJ8RXhlY0NoYXJhY3RlckNtZHxFdmFkZXxGbGVlRnJvbXxOYXZpZ2F0ZVRvfFBhdHJvbFBvaW50c3xQdXJzdWV8VXBkYXRlQ2hhcmFjdGVyfFdhbmRlcldpdGhpbikpXFxcXGInXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGlsbGVnYWw6ICc6JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIExTTF9TVFJJTkdTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgICAgICAgIGhsanMuQ09NTUVOVCgnLy8nLCAnJCcpLFxuICAgICAgICAgICAgICAgICAgICBobGpzLkNPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTFNMX05VTUJFUlMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcYig/OnN0YXRlfGRlZmF1bHQpXFxcXGInXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzpzdGF0ZV8oPzplbnRyeXxleGl0KXx0b3VjaCg/Ol8oPzpzdGFydHxlbmQpKT98KD86bGFuZF8pP2NvbGxpc2lvbig/Ol8oPzpzdGFydHxlbmQpKT98dGltZXJ8bGlzdGVufCg/Om5vXyk/c2Vuc29yfGNvbnRyb2x8KD86bm90Xyk/YXRfKD86cm90Xyk/dGFyZ2V0fG1vbmV5fGVtYWlsfGV4cGVyaWVuY2VfcGVybWlzc2lvbnMoPzpfZGVuaWVkKT98cnVuX3RpbWVfcGVybWlzc2lvbnN8Y2hhbmdlZHxhdHRhY2h8ZGF0YXNlcnZlcnxtb3ZpbmdfKD86c3RhcnR8ZW5kKXxsaW5rX21lc3NhZ2V8KD86b258b2JqZWN0KV9yZXp8cmVtb3RlX2RhdGF8aHR0cF9yZSg/OnNwb25zZXxxdWVzdCl8cGF0aF91cGRhdGV8dHJhbnNhY3Rpb25fcmVzdWx0KVxcXFxiJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIExTTF9GVU5DVElPTlMsXG4gICAgICAgICAgICBMU0xfQ09OU1RBTlRTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzppbnRlZ2VyfGZsb2F0fHN0cmluZ3xrZXl8dmVjdG9yfHF1YXRlcm5pb258cm90YXRpb258bGlzdClcXFxcYidcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgT1BFTklOR19MT05HX0JSQUNLRVQgPSAnXFxcXFs9KlxcXFxbJztcbiAgdmFyIENMT1NJTkdfTE9OR19CUkFDS0VUID0gJ1xcXFxdPSpcXFxcXSc7XG4gIHZhciBMT05HX0JSQUNLRVRTID0ge1xuICAgIGJlZ2luOiBPUEVOSU5HX0xPTkdfQlJBQ0tFVCwgZW5kOiBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICBjb250YWluczogWydzZWxmJ11cbiAgfTtcbiAgdmFyIENPTU1FTlRTID0gW1xuICAgIGhsanMuQ09NTUVOVCgnLS0oPyEnICsgT1BFTklOR19MT05HX0JSQUNLRVQgKyAnKScsICckJyksXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJy0tJyArIE9QRU5JTkdfTE9OR19CUkFDS0VULFxuICAgICAgQ0xPU0lOR19MT05HX0JSQUNLRVQsXG4gICAgICB7XG4gICAgICAgIGNvbnRhaW5zOiBbTE9OR19CUkFDS0VUU10sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBcInRydWUgZmFsc2UgbmlsXCIsXG4gICAgICBrZXl3b3JkOiBcImFuZCBicmVhayBkbyBlbHNlIGVsc2VpZiBlbmQgZm9yIGdvdG8gaWYgaW4gbG9jYWwgbm90IG9yIHJlcGVhdCByZXR1cm4gdGhlbiB1bnRpbCB3aGlsZVwiLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vTWV0YXRhZ3MgYW5kIGdsb2JhbHM6XG4gICAgICAgICdfRyBfRU5WIF9WRVJTSU9OIF9faW5kZXggX19uZXdpbmRleCBfX21vZGUgX19jYWxsIF9fbWV0YXRhYmxlIF9fdG9zdHJpbmcgX19sZW4gJyArXG4gICAgICAgICdfX2djIF9fYWRkIF9fc3ViIF9fbXVsIF9fZGl2IF9fbW9kIF9fcG93IF9fY29uY2F0IF9fdW5tIF9fZXEgX19sdCBfX2xlIGFzc2VydCAnICtcbiAgICAgICAgLy9TdGFuZGFyZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzOlxuICAgICAgICAnY29sbGVjdGdhcmJhZ2UgZG9maWxlIGVycm9yIGdldGZlbnYgZ2V0bWV0YXRhYmxlIGlwYWlycyBsb2FkIGxvYWRmaWxlIGxvYWRzdHJpbmcnICtcbiAgICAgICAgJ21vZHVsZSBuZXh0IHBhaXJzIHBjYWxsIHByaW50IHJhd2VxdWFsIHJhd2dldCByYXdzZXQgcmVxdWlyZSBzZWxlY3Qgc2V0ZmVudicgK1xuICAgICAgICAnc2V0bWV0YXRhYmxlIHRvbnVtYmVyIHRvc3RyaW5nIHR5cGUgdW5wYWNrIHhwY2FsbCBhcmcgc2VsZicgK1xuICAgICAgICAvL0xpYnJhcnkgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAob25lIGxpbmUgcGVyIGxpYnJhcnkpOlxuICAgICAgICAnY29yb3V0aW5lIHJlc3VtZSB5aWVsZCBzdGF0dXMgd3JhcCBjcmVhdGUgcnVubmluZyBkZWJ1ZyBnZXR1cHZhbHVlICcgK1xuICAgICAgICAnZGVidWcgc2V0aG9vayBnZXRtZXRhdGFibGUgZ2V0aG9vayBzZXRtZXRhdGFibGUgc2V0bG9jYWwgdHJhY2ViYWNrIHNldGZlbnYgZ2V0aW5mbyBzZXR1cHZhbHVlIGdldGxvY2FsIGdldHJlZ2lzdHJ5IGdldGZlbnYgJyArXG4gICAgICAgICdpbyBsaW5lcyB3cml0ZSBjbG9zZSBmbHVzaCBvcGVuIG91dHB1dCB0eXBlIHJlYWQgc3RkZXJyIHN0ZGluIGlucHV0IHN0ZG91dCBwb3BlbiB0bXBmaWxlICcgK1xuICAgICAgICAnbWF0aCBsb2cgbWF4IGFjb3MgaHVnZSBsZGV4cCBwaSBjb3MgdGFuaCBwb3cgZGVnIHRhbiBjb3NoIHNpbmggcmFuZG9tIHJhbmRvbXNlZWQgZnJleHAgY2VpbCBmbG9vciByYWQgYWJzIHNxcnQgbW9kZiBhc2luIG1pbiBtb2QgZm1vZCBsb2cxMCBhdGFuMiBleHAgc2luIGF0YW4gJyArXG4gICAgICAgICdvcyBleGl0IHNldGxvY2FsZSBkYXRlIGdldGVudiBkaWZmdGltZSByZW1vdmUgdGltZSBjbG9jayB0bXBuYW1lIHJlbmFtZSBleGVjdXRlIHBhY2thZ2UgcHJlbG9hZCBsb2FkbGliIGxvYWRlZCBsb2FkZXJzIGNwYXRoIGNvbmZpZyBwYXRoIHNlZWFsbCAnICtcbiAgICAgICAgJ3N0cmluZyBzdWIgdXBwZXIgbGVuIGdmaW5kIHJlcCBmaW5kIG1hdGNoIGNoYXIgZHVtcCBnbWF0Y2ggcmV2ZXJzZSBieXRlIGZvcm1hdCBnc3ViIGxvd2VyICcgK1xuICAgICAgICAndGFibGUgc2V0biBpbnNlcnQgZ2V0biBmb3JlYWNoaSBtYXhuIGZvcmVhY2ggY29uY2F0IHNvcnQgcmVtb3ZlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IENPTU1FTlRTLmNvbmNhdChbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogJyhbX2EtekEtWl1cXFxcdypcXFxcLikqKFtfYS16QS1aXVxcXFx3KjopP1tfYS16QS1aXVxcXFx3Kid9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IENPTU1FTlRTXG4gICAgICAgICAgfVxuICAgICAgICBdLmNvbmNhdChDT01NRU5UUylcbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogT1BFTklOR19MT05HX0JSQUNLRVQsIGVuZDogQ0xPU0lOR19MT05HX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbTE9OR19CUkFDS0VUU10sXG4gICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgfVxuICAgIF0pXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvKiBWYXJpYWJsZXM6IHNpbXBsZSAoZWcgJCh2YXIpKSBhbmQgc3BlY2lhbCAoZWcgJEApICovXG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcJFxcXFwoJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkW0AlPD9cXF5cXCtcXCpdL1xuICAgICAgfSxcbiAgICBdXG4gIH07XG4gIC8qIFF1b3RlZCBzdHJpbmcgd2l0aCB2YXJpYWJsZXMgaW5zaWRlICovXG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVJJQUJMRSxcbiAgICBdXG4gIH07XG4gIC8qIEZ1bmN0aW9uOiAkKGZ1bmMgYXJnLC4uLikgKi9cbiAgdmFyIEZVTkMgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkXFwoW1xcdy1dK1xccy8sIGVuZDogL1xcKS8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnc3Vic3QgcGF0c3Vic3Qgc3RyaXAgZmluZHN0cmluZyBmaWx0ZXIgZmlsdGVyLW91dCBzb3J0ICcgK1xuICAgICAgICAnd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgJyArXG4gICAgICAgICdhZGRzdWZmaXggYWRkcHJlZml4IGpvaW4gd2lsZGNhcmQgcmVhbHBhdGggYWJzcGF0aCBlcnJvciB3YXJuaW5nICcgK1xuICAgICAgICAnc2hlbGwgb3JpZ2luIGZsYXZvciBmb3JlYWNoIGlmIG9yIGFuZCBjYWxsIGV2YWwgZmlsZSB2YWx1ZScsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgVkFSSUFCTEUsXG4gICAgXVxuICB9O1xuICAvKiBWYXJpYWJsZSBhc3NpZ25tZW50ICovXG4gIHZhciBWQVJfQVNTSUcgPSB7XG4gICAgYmVnaW46ICdeJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypbOis/XT89JyxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsIGVuZDogJ1s6Kz9dPz0nLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgLyogTWV0YSB0YXJnZXRzICguUEhPTlkpICovXG4gIHZhciBNRVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvXlxcLlBIT05ZOi8sIGVuZDogLyQvLFxuICAgIGtleXdvcmRzOiB7J21ldGEta2V5d29yZCc6ICcuUEhPTlknfSxcbiAgICBsZXhlbWVzOiAvW1xcLlxcd10rL1xuICB9O1xuICAvKiBUYXJnZXRzICovXG4gIHZhciBUQVJHRVQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgYmVnaW46IC9eW15cXHNdKzovLCBlbmQ6IC8kLyxcbiAgICBjb250YWluczogW1ZBUklBQkxFLF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21rJywgJ21hayddLFxuICAgIGtleXdvcmRzOlxuICAgICAgJ2RlZmluZSBlbmRlZiB1bmRlZmluZSBpZmRlZiBpZm5kZWYgaWZlcSBpZm5lcSBlbHNlIGVuZGlmICcgK1xuICAgICAgJ2luY2x1ZGUgLWluY2x1ZGUgc2luY2x1ZGUgb3ZlcnJpZGUgZXhwb3J0IHVuZXhwb3J0IHByaXZhdGUgdnBhdGgnLFxuICAgIGxleGVtZXM6IC9bXFx3LV0rLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgUVVPVEVfU1RSSU5HLFxuICAgICAgRlVOQyxcbiAgICAgIFZBUl9BU1NJRyxcbiAgICAgIE1FVEEsXG4gICAgICBUQVJHRVQsXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21tYScsICd3bCddLFxuICAgIGxleGVtZXM6ICcoXFxcXCR8XFxcXGIpJyArIGhsanMuSURFTlRfUkUgKyAnXFxcXGInLFxuICAgIC8vXG4gICAgLy8gVGhlIGxpc3Qgb2YgXCJrZXl3b3Jkc1wiIChTeXN0ZW1gIHN5bWJvbHMpIHdhcyBkZXRlcm1pbmVkIGJ5IGV2YWx1YXRpbmcgdGhlIGZvbGxvd2luZyBXb2xmcmFtIExhbmd1YWdlIGNvZGUgaW4gTWF0aGVtYXRpY2EgMTIuMDpcbiAgICAvL1xuICAgIC8vIFN0cmluZ1JpZmZsZVtcbiAgICAvLyAgIFwiJ1wiIDw+IFN0cmluZ1JpZmZsZVsjLCBcIiBcIl0gPD4gXCInXCIgJiAvQFxuICAgIC8vICAgICBWYWx1ZXNbR3JvdXBCeVtcbiAgICAvLyAgICAgICBTZWxlY3RbTmFtZXNbXCJTeXN0ZW1gKlwiXSxcbiAgICAvLyAgICAgICBTdHJpbmdTdGFydHNRWyMsIENoYXJhY3RlclJhbmdlW1wiQVwiLCBcIlpcIl0gfCBcIiRcIl0gJl0sXG4gICAgLy8gICAgICAgRmlyc3RbQ2hhcmFjdGVyc1sjXV0gJl1dLCBcIiArXFxuXCJdXG4gICAgLy9cbiAgICBrZXl3b3JkczogJ0FBU1RyaWFuZ2xlIEFiZWxpYW5Hcm91cCBBYm9ydCBBYm9ydEtlcm5lbHMgQWJvcnRQcm90ZWN0IEFib3J0U2NoZWR1bGVkVGFzayBBYm92ZSBBYnMgQWJzQXJnIEFic0FyZ1Bsb3QgQWJzb2x1dGUgQWJzb2x1dGVDb3JyZWxhdGlvbiBBYnNvbHV0ZUNvcnJlbGF0aW9uRnVuY3Rpb24gQWJzb2x1dGVDdXJyZW50VmFsdWUgQWJzb2x1dGVEYXNoaW5nIEFic29sdXRlRmlsZU5hbWUgQWJzb2x1dGVPcHRpb25zIEFic29sdXRlUG9pbnRTaXplIEFic29sdXRlVGhpY2tuZXNzIEFic29sdXRlVGltZSBBYnNvbHV0ZVRpbWluZyBBY2NlcHRhbmNlVGhyZXNob2xkIEFjY291bnRpbmdGb3JtIEFjY3VtdWxhdGUgQWNjdXJhY3kgQWNjdXJhY3lHb2FsIEFjdGlvbkRlbGF5IEFjdGlvbk1lbnUgQWN0aW9uTWVudUJveCBBY3Rpb25NZW51Qm94T3B0aW9ucyBBY3RpdmF0ZSBBY3RpdmUgQWN0aXZlQ2xhc3NpZmljYXRpb24gQWN0aXZlQ2xhc3NpZmljYXRpb25PYmplY3QgQWN0aXZlSXRlbSBBY3RpdmVQcmVkaWN0aW9uIEFjdGl2ZVByZWRpY3Rpb25PYmplY3QgQWN0aXZlU3R5bGUgQWN5Y2xpY0dyYXBoUSBBZGRPbkhlbHBQYXRoIEFkZFNpZGVzIEFkZFRvIEFkZFRvU2VhcmNoSW5kZXggQWRkVXNlcnMgQWRqYWNlbmN5R3JhcGggQWRqYWNlbmN5TGlzdCBBZGphY2VuY3lNYXRyaXggQWRqdXN0bWVudEJveCBBZGp1c3RtZW50Qm94T3B0aW9ucyBBZGp1c3RUaW1lU2VyaWVzRm9yZWNhc3QgQWRtaW5pc3RyYXRpdmVEaXZpc2lvbkRhdGEgQWZmaW5lSGFsZlNwYWNlIEFmZmluZVNwYWNlIEFmZmluZVN0YXRlU3BhY2VNb2RlbCBBZmZpbmVUcmFuc2Zvcm0gQWZ0ZXIgQWdncmVnYXRlZEVudGl0eUNsYXNzIEFnZ3JlZ2F0aW9uTGF5ZXIgQWlyY3JhZnREYXRhIEFpcnBvcnREYXRhIEFpclByZXNzdXJlRGF0YSBBaXJUZW1wZXJhdHVyZURhdGEgQWlyeUFpIEFpcnlBaVByaW1lIEFpcnlBaVplcm8gQWlyeUJpIEFpcnlCaVByaW1lIEFpcnlCaVplcm8gQWxnZWJyYWljSW50ZWdlclEgQWxnZWJyYWljTnVtYmVyIEFsZ2VicmFpY051bWJlckRlbm9taW5hdG9yIEFsZ2VicmFpY051bWJlck5vcm0gQWxnZWJyYWljTnVtYmVyUG9seW5vbWlhbCBBbGdlYnJhaWNOdW1iZXJUcmFjZSBBbGdlYnJhaWNSdWxlcyBBbGdlYnJhaWNSdWxlc0RhdGEgQWxnZWJyYWljcyBBbGdlYnJhaWNVbml0USBBbGlnbm1lbnQgQWxpZ25tZW50TWFya2VyIEFsaWdubWVudFBvaW50IEFsbCBBbGxvd0FkdWx0Q29udGVudCBBbGxvd2VkQ2xvdWRFeHRyYVBhcmFtZXRlcnMgQWxsb3dlZENsb3VkUGFyYW1ldGVyRXh0ZW5zaW9ucyBBbGxvd2VkRGltZW5zaW9ucyBBbGxvd2VkRnJlcXVlbmN5UmFuZ2UgQWxsb3dlZEhlYWRzIEFsbG93R3JvdXBDbG9zZSBBbGxvd0luY29tcGxldGUgQWxsb3dJbmxpbmVDZWxscyBBbGxvd0tlcm5lbEluaXRpYWxpemF0aW9uIEFsbG93TG9vc2VHcmFtbWFyIEFsbG93UmV2ZXJzZUdyb3VwQ2xvc2UgQWxsb3dTY3JpcHRMZXZlbENoYW5nZSBBbGxUcnVlIEFscGhhYmV0IEFscGhhYmV0aWNPcmRlciBBbHBoYWJldGljU29ydCBBbHBoYUNoYW5uZWwgQWx0ZXJuYXRlSW1hZ2UgQWx0ZXJuYXRpbmdGYWN0b3JpYWwgQWx0ZXJuYXRpbmdHcm91cCBBbHRlcm5hdGl2ZUh5cG90aGVzaXMgQWx0ZXJuYXRpdmVzIEFsdGl0dWRlTWV0aG9kIEFtYmllbnRMaWdodCBBbWJpZ3VpdHlGdW5jdGlvbiBBbWJpZ3VpdHlMaXN0IEFuYWx5dGljIEFuYXRvbXlEYXRhIEFuYXRvbXlGb3JtIEFuYXRvbXlQbG90M0QgQW5hdG9teVNraW5TdHlsZSBBbmF0b215U3R5bGluZyBBbmNob3JlZFNlYXJjaCBBbmQgQW5kZXJzb25EYXJsaW5nVGVzdCBBbmdlckogQW5nbGVCaXNlY3RvciBBbmdsZUJyYWNrZXQgQW5nbGVQYXRoIEFuZ2xlUGF0aDNEIEFuZ2xlVmVjdG9yIEFuZ3VsYXJHYXVnZSBBbmltYXRlIEFuaW1hdGlvbkN5Y2xlT2Zmc2V0IEFuaW1hdGlvbkN5Y2xlUmVwZXRpdGlvbnMgQW5pbWF0aW9uRGlyZWN0aW9uIEFuaW1hdGlvbkRpc3BsYXlUaW1lIEFuaW1hdGlvblJhdGUgQW5pbWF0aW9uUmVwZXRpdGlvbnMgQW5pbWF0aW9uUnVubmluZyBBbmltYXRpb25SdW5UaW1lIEFuaW1hdGlvblRpbWVJbmRleCBBbmltYXRvciBBbmltYXRvckJveCBBbmltYXRvckJveE9wdGlvbnMgQW5pbWF0b3JFbGVtZW50cyBBbm5vdGF0ZSBBbm5vdGF0aW9uIEFubm90YXRpb25EZWxldGUgQW5ub3RhdGlvbk5hbWVzIEFubm90YXRpb25SdWxlcyBBbm5vdGF0aW9uVmFsdWUgQW5udWl0eSBBbm51aXR5RHVlIEFubnVsdXMgQW5vbWFseURldGVjdGlvbiBBbm9tYWx5RGV0ZWN0b3JGdW5jdGlvbiBBbm9ueW1vdXMgQW50aWFsaWFzaW5nIEFudGloZXJtaXRpYW5NYXRyaXhRIEFudGlzeW1tZXRyaWMgQW50aXN5bW1ldHJpY01hdHJpeFEgQW50b255bXMgQW55T3JkZXIgQW55U3Vic2V0IEFueVRydWUgQXBhcnQgQXBhcnRTcXVhcmVGcmVlIEFQSUZ1bmN0aW9uIEFwcGVhcmFuY2UgQXBwZWFyYW5jZUVsZW1lbnRzIEFwcGVhcmFuY2VSdWxlcyBBcHBlbGxGMSBBcHBlbmQgQXBwZW5kQ2hlY2sgQXBwZW5kTGF5ZXIgQXBwZW5kVG8gQXBwbGljYXRpb25JZGVudGlmaWNhdGlvbktleSBBcHBseSBBcHBseVNpZGVzIEFyY0NvcyBBcmNDb3NoIEFyY0NvdCBBcmNDb3RoIEFyY0NzYyBBcmNDc2NoIEFyY0N1cnZhdHVyZSBBUkNIUHJvY2VzcyBBcmNMZW5ndGggQXJjU2VjIEFyY1NlY2ggQXJjU2luIEFyY1NpbkRpc3RyaWJ1dGlvbiBBcmNTaW5oIEFyY1RhbiBBcmNUYW5oIEFyZWEgQXJnIEFyZ01heCBBcmdNaW4gQXJndW1lbnRDb3VudFEgQVJJTUFQcm9jZXNzIEFyaXRobWV0aWNHZW9tZXRyaWNNZWFuIEFSTUFQcm9jZXNzIEFyb3VuZCBBcm91bmRSZXBsYWNlIEFSUHJvY2VzcyBBcnJheSBBcnJheUNvbXBvbmVudHMgQXJyYXlEZXB0aCBBcnJheUZpbHRlciBBcnJheUZsYXR0ZW4gQXJyYXlNZXNoIEFycmF5UGFkIEFycmF5UGxvdCBBcnJheVEgQXJyYXlSZXNhbXBsZSBBcnJheVJlc2hhcGUgQXJyYXlSdWxlcyBBcnJheXMgQXJyb3cgQXJyb3czREJveCBBcnJvd0JveCBBcnJvd2hlYWRzIEFTQVRyaWFuZ2xlIEFzayBBc2tBcHBlbmQgQXNrQ29uZmlybSBBc2tEaXNwbGF5IEFza2VkUSBBc2tlZFZhbHVlIEFza0Z1bmN0aW9uIEFza1N0YXRlIEFza1RlbXBsYXRlRGlzcGxheSBBc3BlY3RSYXRpbyBBc3BlY3RSYXRpb0ZpeGVkIEFzc2VydCBBc3NvY2lhdGVUbyBBc3NvY2lhdGlvbiBBc3NvY2lhdGlvbkZvcm1hdCBBc3NvY2lhdGlvbk1hcCBBc3NvY2lhdGlvblEgQXNzb2NpYXRpb25UaHJlYWQgQXNzdW1lRGV0ZXJtaW5pc3RpYyBBc3N1bWluZyBBc3N1bXB0aW9ucyBBc3Ryb25vbWljYWxEYXRhIEFzeW1wdG90aWNEU29sdmVWYWx1ZSBBc3ltcHRvdGljRXF1YWwgQXN5bXB0b3RpY0VxdWl2YWxlbnQgQXN5bXB0b3RpY0dyZWF0ZXIgQXN5bXB0b3RpY0dyZWF0ZXJFcXVhbCBBc3ltcHRvdGljSW50ZWdyYXRlIEFzeW1wdG90aWNMZXNzIEFzeW1wdG90aWNMZXNzRXF1YWwgQXN5bXB0b3RpY091dHB1dFRyYWNrZXIgQXN5bXB0b3RpY1JTb2x2ZVZhbHVlIEFzeW1wdG90aWNTb2x2ZSBBc3ltcHRvdGljU3VtIEFzeW5jaHJvbm91cyBBc3luY2hyb25vdXNUYXNrT2JqZWN0IEFzeW5jaHJvbm91c1Rhc2tzIEF0b20gQXRvbUNvb3JkaW5hdGVzIEF0b21Db3VudCBBdG9tRGlhZ3JhbUNvb3JkaW5hdGVzIEF0b21MaXN0IEF0b21RIEF0dGVudGlvbkxheWVyIEF0dHJpYnV0ZXMgQXVkaW8gQXVkaW9BbXBsaWZ5IEF1ZGlvQW5ub3RhdGUgQXVkaW9Bbm5vdGF0aW9uTG9va3VwIEF1ZGlvQmxvY2tNYXAgQXVkaW9DYXB0dXJlIEF1ZGlvQ2hhbm5lbEFzc2lnbm1lbnQgQXVkaW9DaGFubmVsQ29tYmluZSBBdWRpb0NoYW5uZWxNaXggQXVkaW9DaGFubmVscyBBdWRpb0NoYW5uZWxTZXBhcmF0ZSBBdWRpb0RhdGEgQXVkaW9EZWxheSBBdWRpb0RlbGV0ZSBBdWRpb0RldmljZSBBdWRpb0Rpc3RhbmNlIEF1ZGlvRmFkZSBBdWRpb0ZyZXF1ZW5jeVNoaWZ0IEF1ZGlvR2VuZXJhdG9yIEF1ZGlvSWRlbnRpZnkgQXVkaW9JbnB1dERldmljZSBBdWRpb0luc2VydCBBdWRpb0ludGVydmFscyBBdWRpb0pvaW4gQXVkaW9MYWJlbCBBdWRpb0xlbmd0aCBBdWRpb0xvY2FsTWVhc3VyZW1lbnRzIEF1ZGlvTG9vcGluZyBBdWRpb0xvdWRuZXNzIEF1ZGlvTWVhc3VyZW1lbnRzIEF1ZGlvTm9ybWFsaXplIEF1ZGlvT3V0cHV0RGV2aWNlIEF1ZGlvT3ZlcmxheSBBdWRpb1BhZCBBdWRpb1BhbiBBdWRpb1BhcnRpdGlvbiBBdWRpb1BhdXNlIEF1ZGlvUGl0Y2hTaGlmdCBBdWRpb1BsYXkgQXVkaW9QbG90IEF1ZGlvUSBBdWRpb1JlY29yZCBBdWRpb1JlcGxhY2UgQXVkaW9SZXNhbXBsZSBBdWRpb1JldmVyYiBBdWRpb1NhbXBsZVJhdGUgQXVkaW9TcGVjdHJhbE1hcCBBdWRpb1NwZWN0cmFsVHJhbnNmb3JtYXRpb24gQXVkaW9TcGxpdCBBdWRpb1N0b3AgQXVkaW9TdHJlYW0gQXVkaW9TdHJlYW1zIEF1ZGlvVGltZVN0cmV0Y2ggQXVkaW9UcmltIEF1ZGlvVHlwZSBBdWdtZW50ZWRQb2x5aGVkcm9uIEF1Z21lbnRlZFN5bW1ldHJpY1BvbHlub21pYWwgQXV0aGVudGljYXRlIEF1dGhlbnRpY2F0aW9uIEF1dGhlbnRpY2F0aW9uRGlhbG9nIEF1dG9BY3Rpb24gQXV0b2NvbXBsZXRlIEF1dG9jb21wbGV0aW9uRnVuY3Rpb24gQXV0b0NvcHkgQXV0b2NvcnJlbGF0aW9uVGVzdCBBdXRvRGVsZXRlIEF1dG9FdmFsdWF0ZUV2ZW50cyBBdXRvR2VuZXJhdGVkUGFja2FnZSBBdXRvSW5kZW50IEF1dG9JbmRlbnRTcGFjaW5ncyBBdXRvSXRhbGljV29yZHMgQXV0b2xvYWRQYXRoIEF1dG9NYXRjaCBBdXRvbWF0aWMgQXV0b21hdGljSW1hZ2VTaXplIEF1dG9NdWx0aXBsaWNhdGlvblN5bWJvbCBBdXRvTnVtYmVyRm9ybWF0dGluZyBBdXRvT3Blbk5vdGVib29rcyBBdXRvT3BlblBhbGV0dGVzIEF1dG9RdW90ZUNoYXJhY3RlcnMgQXV0b1JlZnJlc2hlZCBBdXRvUmVtb3ZlIEF1dG9ydW5TZXF1ZW5jaW5nIEF1dG9TY2FsaW5nIEF1dG9TY3JvbGwgQXV0b1NwYWNpbmcgQXV0b1N0eWxlT3B0aW9ucyBBdXRvU3R5bGVXb3JkcyBBdXRvU3VibWl0dGluZyBBeGVzIEF4ZXNFZGdlIEF4ZXNMYWJlbCBBeGVzT3JpZ2luIEF4ZXNTdHlsZSBBeGlvbWF0aWNUaGVvcnkgQXhpcycgK1xuICAgICAgJ0JhYnlNb25zdGVyR3JvdXBCIEJhY2sgQmFja2dyb3VuZCBCYWNrZ3JvdW5kQXBwZWFyYW5jZSBCYWNrZ3JvdW5kVGFza3NTZXR0aW5ncyBCYWNrc2xhc2ggQmFja3N1YnN0aXR1dGlvbiBCYWNrd2FyZCBCYWxsIEJhbmQgQmFuZHBhc3NGaWx0ZXIgQmFuZHN0b3BGaWx0ZXIgQmFyYWJhc2lBbGJlcnRHcmFwaERpc3RyaWJ1dGlvbiBCYXJDaGFydCBCYXJDaGFydDNEIEJhcmNvZGVJbWFnZSBCYXJjb2RlUmVjb2duaXplIEJhcmluZ2hhdXNIZW56ZVRlc3QgQmFyTGVnZW5kIEJhcmxvd1Byb3NjaGFuSW1wb3J0YW5jZSBCYXJuZXNHIEJhck9yaWdpbiBCYXJTcGFjaW5nIEJhcnRsZXR0SGFubldpbmRvdyBCYXJ0bGV0dFdpbmRvdyBCYXNlRGVjb2RlIEJhc2VFbmNvZGUgQmFzZUZvcm0gQmFzZWxpbmUgQmFzZWxpbmVQb3NpdGlvbiBCYXNlU3R5bGUgQmFzaWNSZWN1cnJlbnRMYXllciBCYXRjaE5vcm1hbGl6YXRpb25MYXllciBCYXRjaFNpemUgQmF0ZXNEaXN0cmlidXRpb24gQmF0dGxlTGVtYXJpZVdhdmVsZXQgQmF5ZXNpYW5NYXhpbWl6YXRpb24gQmF5ZXNpYW5NYXhpbWl6YXRpb25PYmplY3QgQmF5ZXNpYW5NaW5pbWl6YXRpb24gQmF5ZXNpYW5NaW5pbWl6YXRpb25PYmplY3QgQmVjYXVzZSBCZWNrbWFubkRpc3RyaWJ1dGlvbiBCZWVwIEJlZm9yZSBCZWdpbiBCZWdpbkRpYWxvZ1BhY2tldCBCZWdpbkZyb250RW5kSW50ZXJhY3Rpb25QYWNrZXQgQmVnaW5QYWNrYWdlIEJlbGxCIEJlbGxZIEJlbG93IEJlbmZvcmREaXN0cmlidXRpb24gQmVuaW5pRGlzdHJpYnV0aW9uIEJlbmt0YW5kZXJHaWJyYXREaXN0cmlidXRpb24gQmVua3RhbmRlcldlaWJ1bGxEaXN0cmlidXRpb24gQmVybm91bGxpQiBCZXJub3VsbGlEaXN0cmlidXRpb24gQmVybm91bGxpR3JhcGhEaXN0cmlidXRpb24gQmVybm91bGxpUHJvY2VzcyBCZXJuc3RlaW5CYXNpcyBCZXNzZWxGaWx0ZXJNb2RlbCBCZXNzZWxJIEJlc3NlbEogQmVzc2VsSlplcm8gQmVzc2VsSyBCZXNzZWxZIEJlc3NlbFlaZXJvIEJldGEgQmV0YUJpbm9taWFsRGlzdHJpYnV0aW9uIEJldGFEaXN0cmlidXRpb24gQmV0YU5lZ2F0aXZlQmlub21pYWxEaXN0cmlidXRpb24gQmV0YVByaW1lRGlzdHJpYnV0aW9uIEJldGFSZWd1bGFyaXplZCBCZXR3ZWVuIEJldHdlZW5uZXNzQ2VudHJhbGl0eSBCZXZlbGVkUG9seWhlZHJvbiBCZXppZXJDdXJ2ZSBCZXppZXJDdXJ2ZTNEQm94IEJlemllckN1cnZlM0RCb3hPcHRpb25zIEJlemllckN1cnZlQm94IEJlemllckN1cnZlQm94T3B0aW9ucyBCZXppZXJGdW5jdGlvbiBCaWxhdGVyYWxGaWx0ZXIgQmluYXJpemUgQmluYXJ5RGVzZXJpYWxpemUgQmluYXJ5RGlzdGFuY2UgQmluYXJ5Rm9ybWF0IEJpbmFyeUltYWdlUSBCaW5hcnlSZWFkIEJpbmFyeVJlYWRMaXN0IEJpbmFyeVNlcmlhbGl6ZSBCaW5hcnlXcml0ZSBCaW5Db3VudHMgQmluTGlzdHMgQmlub21pYWwgQmlub21pYWxEaXN0cmlidXRpb24gQmlub21pYWxQcm9jZXNzIEJpbm9ybWFsRGlzdHJpYnV0aW9uIEJpb3J0aG9nb25hbFNwbGluZVdhdmVsZXQgQmlwYXJ0aXRlR3JhcGhRIEJpcXVhZHJhdGljRmlsdGVyTW9kZWwgQmlybmJhdW1JbXBvcnRhbmNlIEJpcm5iYXVtU2F1bmRlcnNEaXN0cmlidXRpb24gQml0QW5kIEJpdENsZWFyIEJpdEdldCBCaXRMZW5ndGggQml0Tm90IEJpdE9yIEJpdFNldCBCaXRTaGlmdExlZnQgQml0U2hpZnRSaWdodCBCaXRYb3IgQml3ZWlnaHRMb2NhdGlvbiBCaXdlaWdodE1pZHZhcmlhbmNlIEJsYWNrIEJsYWNrbWFuSGFycmlzV2luZG93IEJsYWNrbWFuTnV0dGFsbFdpbmRvdyBCbGFja21hbldpbmRvdyBCbGFuayBCbGFua0Zvcm0gQmxhbmtOdWxsU2VxdWVuY2UgQmxhbmtTZXF1ZW5jZSBCbGVuZCBCbG9jayBCbG9ja2NoYWluQWRkcmVzc0RhdGEgQmxvY2tjaGFpbkJhc2UgQmxvY2tjaGFpbkJsb2NrRGF0YSBCbG9ja2NoYWluQ29udHJhY3RWYWx1ZSBCbG9ja2NoYWluRGF0YSBCbG9ja2NoYWluR2V0IEJsb2NrY2hhaW5LZXlFbmNvZGUgQmxvY2tjaGFpblB1dCBCbG9ja2NoYWluVG9rZW5EYXRhIEJsb2NrY2hhaW5UcmFuc2FjdGlvbiBCbG9ja2NoYWluVHJhbnNhY3Rpb25EYXRhIEJsb2NrY2hhaW5UcmFuc2FjdGlvblNpZ24gQmxvY2tjaGFpblRyYW5zYWN0aW9uU3VibWl0IEJsb2NrTWFwIEJsb2NrUmFuZG9tIEJsb21xdmlzdEJldGEgQmxvbXF2aXN0QmV0YVRlc3QgQmx1ZSBCbHVyIEJvZGVQbG90IEJvaG1hbldpbmRvdyBCb2xkIEJvbmQgQm9uZENvdW50IEJvbmRMaXN0IEJvbmRRIEJvb2ttYXJrcyBCb29sZSBCb29sZWFuQ29uc2VjdXRpdmVGdW5jdGlvbiBCb29sZWFuQ29udmVydCBCb29sZWFuQ291bnRpbmdGdW5jdGlvbiBCb29sZWFuRnVuY3Rpb24gQm9vbGVhbkdyYXBoIEJvb2xlYW5NYXh0ZXJtcyBCb29sZWFuTWluaW1pemUgQm9vbGVhbk1pbnRlcm1zIEJvb2xlYW5RIEJvb2xlYW5SZWdpb24gQm9vbGVhbnMgQm9vbGVhblN0cmluZ3MgQm9vbGVhblRhYmxlIEJvb2xlYW5WYXJpYWJsZXMgQm9yZGVyRGltZW5zaW9ucyBCb3JlbFRhbm5lckRpc3RyaWJ1dGlvbiBCb3R0b20gQm90dG9tSGF0VHJhbnNmb3JtIEJvdW5kYXJ5RGlzY3JldGl6ZUdyYXBoaWNzIEJvdW5kYXJ5RGlzY3JldGl6ZVJlZ2lvbiBCb3VuZGFyeU1lc2ggQm91bmRhcnlNZXNoUmVnaW9uIEJvdW5kYXJ5TWVzaFJlZ2lvblEgQm91bmRhcnlTdHlsZSBCb3VuZGVkUmVnaW9uUSBCb3VuZGluZ1JlZ2lvbiBCb3VuZHMgQm94IEJveEJhc2VsaW5lU2hpZnQgQm94RGF0YSBCb3hEaW1lbnNpb25zIEJveGVkIEJveGVzIEJveEZvcm0gQm94Rm9ybUZvcm1hdFR5cGVzIEJveEZyYW1lIEJveElEIEJveE1hcmdpbnMgQm94TWF0cml4IEJveE9iamVjdCBCb3hSYXRpb3MgQm94Um90YXRpb24gQm94Um90YXRpb25Qb2ludCBCb3hTdHlsZSBCb3hXaGlza2VyQ2hhcnQgQnJhIEJyYWNrZXRpbmdCYXIgQnJhS2V0IEJyYXlDdXJ0aXNEaXN0YW5jZSBCcmVhZHRoRmlyc3RTY2FuIEJyZWFrIEJyaWRnZURhdGEgQnJpZ2h0bmVzc0VxdWFsaXplIEJyb2FkY2FzdFN0YXRpb25EYXRhIEJyb3duIEJyb3duRm9yc3l0aGVUZXN0IEJyb3duaWFuQnJpZGdlUHJvY2VzcyBCcm93c2VyQ2F0ZWdvcnkgQlNwbGluZUJhc2lzIEJTcGxpbmVDdXJ2ZSBCU3BsaW5lQ3VydmUzREJveCBCU3BsaW5lQ3VydmUzREJveE9wdGlvbnMgQlNwbGluZUN1cnZlQm94IEJTcGxpbmVDdXJ2ZUJveE9wdGlvbnMgQlNwbGluZUZ1bmN0aW9uIEJTcGxpbmVTdXJmYWNlIEJTcGxpbmVTdXJmYWNlM0RCb3ggQlNwbGluZVN1cmZhY2UzREJveE9wdGlvbnMgQnViYmxlQ2hhcnQgQnViYmxlQ2hhcnQzRCBCdWJibGVTY2FsZSBCdWJibGVTaXplcyBCdWlsZGluZ0RhdGEgQnVsbGV0R2F1Z2UgQnVzaW5lc3NEYXlRIEJ1dHRlcmZseUdyYXBoIEJ1dHRlcndvcnRoRmlsdGVyTW9kZWwgQnV0dG9uIEJ1dHRvbkJhciBCdXR0b25Cb3ggQnV0dG9uQm94T3B0aW9ucyBCdXR0b25DZWxsIEJ1dHRvbkNvbnRlbnRzIEJ1dHRvbkRhdGEgQnV0dG9uRXZhbHVhdG9yIEJ1dHRvbkV4cGFuZGFibGUgQnV0dG9uRnJhbWUgQnV0dG9uRnVuY3Rpb24gQnV0dG9uTWFyZ2lucyBCdXR0b25NaW5IZWlnaHQgQnV0dG9uTm90ZSBCdXR0b25Ob3RlYm9vayBCdXR0b25Tb3VyY2UgQnV0dG9uU3R5bGUgQnV0dG9uU3R5bGVNZW51TGlzdGluZyBCeXRlIEJ5dGVBcnJheSBCeXRlQXJyYXlGb3JtYXQgQnl0ZUFycmF5USBCeXRlQXJyYXlUb1N0cmluZyBCeXRlQ291bnQgQnl0ZU9yZGVyaW5nJyArXG4gICAgICAnQyBDYWNoZWRWYWx1ZSBDYWNoZUdyYXBoaWNzIENhY2hlUGVyc2lzdGVuY2UgQ2FsZW5kYXJDb252ZXJ0IENhbGVuZGFyRGF0YSBDYWxlbmRhclR5cGUgQ2FsbG91dCBDYWxsb3V0TWFya2VyIENhbGxvdXRTdHlsZSBDYWxsUGFja2V0IENhbmJlcnJhRGlzdGFuY2UgQ2FuY2VsIENhbmNlbEJ1dHRvbiBDYW5kbGVzdGlja0NoYXJ0IENhbm9uaWNhbEdyYXBoIENhbm9uaWNhbGl6ZVBvbHlnb24gQ2Fub25pY2FsaXplUG9seWhlZHJvbiBDYW5vbmljYWxOYW1lIENhbm9uaWNhbFdhcnBpbmdDb3JyZXNwb25kZW5jZSBDYW5vbmljYWxXYXJwaW5nRGlzdGFuY2UgQ2FudG9yTWVzaCBDYW50b3JTdGFpcmNhc2UgQ2FwIENhcEZvcm0gQ2FwaXRhbERpZmZlcmVudGlhbEQgQ2FwaXRhbGl6ZSBDYXBzdWxlU2hhcGUgQ2FwdHVyZVJ1bm5pbmcgQ2FyZGluYWxCU3BsaW5lQmFzaXMgQ2FybGVtYW5MaW5lYXJpemUgQ2FybWljaGFlbExhbWJkYSBDYXNlT3JkZXJpbmcgQ2FzZXMgQ2FzZVNlbnNpdGl2ZSBDYXNoZmxvdyBDYXNvcmF0aWFuIENhdGFsYW4gQ2F0YWxhbk51bWJlciBDYXRjaCBDYXRlbmF0ZSBDYXRlbmF0ZUxheWVyIENhdWNoeURpc3RyaWJ1dGlvbiBDYXVjaHlXaW5kb3cgQ2F5bGV5R3JhcGggQ0RGIENERkRlcGxveSBDREZJbmZvcm1hdGlvbiBDREZXYXZlbGV0IENlaWxpbmcgQ2VsZXN0aWFsU3lzdGVtIENlbGwgQ2VsbEF1dG9PdmVyd3JpdGUgQ2VsbEJhc2VsaW5lIENlbGxCb3VuZGluZ0JveCBDZWxsQnJhY2tldE9wdGlvbnMgQ2VsbENoYW5nZVRpbWVzIENlbGxDb250ZW50cyBDZWxsQ29udGV4dCBDZWxsRGluZ2JhdCBDZWxsRHluYW1pY0V4cHJlc3Npb24gQ2VsbEVkaXREdXBsaWNhdGUgQ2VsbEVsZW1lbnRzQm91bmRpbmdCb3ggQ2VsbEVsZW1lbnRTcGFjaW5ncyBDZWxsRXBpbG9nIENlbGxFdmFsdWF0aW9uRHVwbGljYXRlIENlbGxFdmFsdWF0aW9uRnVuY3Rpb24gQ2VsbEV2YWx1YXRpb25MYW5ndWFnZSBDZWxsRXZlbnRBY3Rpb25zIENlbGxGcmFtZSBDZWxsRnJhbWVDb2xvciBDZWxsRnJhbWVMYWJlbE1hcmdpbnMgQ2VsbEZyYW1lTGFiZWxzIENlbGxGcmFtZU1hcmdpbnMgQ2VsbEdyb3VwIENlbGxHcm91cERhdGEgQ2VsbEdyb3VwaW5nIENlbGxHcm91cGluZ1J1bGVzIENlbGxIb3Jpem9udGFsU2Nyb2xsaW5nIENlbGxJRCBDZWxsTGFiZWwgQ2VsbExhYmVsQXV0b0RlbGV0ZSBDZWxsTGFiZWxNYXJnaW5zIENlbGxMYWJlbFBvc2l0aW9uaW5nIENlbGxMYWJlbFN0eWxlIENlbGxMYWJlbFRlbXBsYXRlIENlbGxNYXJnaW5zIENlbGxPYmplY3QgQ2VsbE9wZW4gQ2VsbFByaW50IENlbGxQcm9sb2cgQ2VsbHMgQ2VsbFNpemUgQ2VsbFN0eWxlIENlbGxUYWdzIENlbGx1bGFyQXV0b21hdG9uIENlbnNvcmVkRGlzdHJpYnV0aW9uIENlbnNvcmluZyBDZW50ZXIgQ2VudGVyQXJyYXkgQ2VudGVyRG90IENlbnRyYWxGZWF0dXJlIENlbnRyYWxNb21lbnQgQ2VudHJhbE1vbWVudEdlbmVyYXRpbmdGdW5jdGlvbiBDZXBzdHJvZ3JhbSBDZXBzdHJvZ3JhbUFycmF5IENlcHN0cnVtQXJyYXkgQ0Zvcm0gQ2hhbXBlcm5vd25lTnVtYmVyIENoYW5nZU9wdGlvbnMgQ2hhbm5lbEJhc2UgQ2hhbm5lbEJyb2tlckFjdGlvbiBDaGFubmVsRGF0YWJpbiBDaGFubmVsSGlzdG9yeUxlbmd0aCBDaGFubmVsTGlzdGVuIENoYW5uZWxMaXN0ZW5lciBDaGFubmVsTGlzdGVuZXJzIENoYW5uZWxMaXN0ZW5lcldhaXQgQ2hhbm5lbE9iamVjdCBDaGFubmVsUHJlU2VuZEZ1bmN0aW9uIENoYW5uZWxSZWNlaXZlckZ1bmN0aW9uIENoYW5uZWxTZW5kIENoYW5uZWxTdWJzY3JpYmVycyBDaGFuVmVzZUJpbmFyaXplIENoYXJhY3RlciBDaGFyYWN0ZXJDb3VudHMgQ2hhcmFjdGVyRW5jb2RpbmcgQ2hhcmFjdGVyRW5jb2RpbmdzUGF0aCBDaGFyYWN0ZXJpc3RpY0Z1bmN0aW9uIENoYXJhY3RlcmlzdGljUG9seW5vbWlhbCBDaGFyYWN0ZXJOYW1lIENoYXJhY3RlclJhbmdlIENoYXJhY3RlcnMgQ2hhcnRCYXNlU3R5bGUgQ2hhcnRFbGVtZW50RGF0YSBDaGFydEVsZW1lbnREYXRhRnVuY3Rpb24gQ2hhcnRFbGVtZW50RnVuY3Rpb24gQ2hhcnRFbGVtZW50cyBDaGFydExhYmVscyBDaGFydExheW91dCBDaGFydExlZ2VuZHMgQ2hhcnRTdHlsZSBDaGVieXNoZXYxRmlsdGVyTW9kZWwgQ2hlYnlzaGV2MkZpbHRlck1vZGVsIENoZWJ5c2hldkRpc3RhbmNlIENoZWJ5c2hldlQgQ2hlYnlzaGV2VSBDaGVjayBDaGVja0Fib3J0IENoZWNrQWxsIENoZWNrYm94IENoZWNrYm94QmFyIENoZWNrYm94Qm94IENoZWNrYm94Qm94T3B0aW9ucyBDaGVtaWNhbERhdGEgQ2hlc3Nib2FyZERpc3RhbmNlIENoaURpc3RyaWJ1dGlvbiBDaGluZXNlUmVtYWluZGVyIENoaVNxdWFyZURpc3RyaWJ1dGlvbiBDaG9pY2VCdXR0b25zIENob2ljZURpYWxvZyBDaG9sZXNreURlY29tcG9zaXRpb24gQ2hvcCBDaHJvbWF0aWNpdHlQbG90IENocm9tYXRpY2l0eVBsb3QzRCBDaHJvbWF0aWNQb2x5bm9taWFsIENpcmNsZSBDaXJjbGVCb3ggQ2lyY2xlRG90IENpcmNsZU1pbnVzIENpcmNsZVBsdXMgQ2lyY2xlUG9pbnRzIENpcmNsZVRocm91Z2ggQ2lyY2xlVGltZXMgQ2lyY3VsYW50R3JhcGggQ2lyY3VsYXJPcnRob2dvbmFsTWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bGFyUXVhdGVybmlvbk1hdHJpeERpc3RyaWJ1dGlvbiBDaXJjdWxhclJlYWxNYXRyaXhEaXN0cmlidXRpb24gQ2lyY3VsYXJTeW1wbGVjdGljTWF0cml4RGlzdHJpYnV0aW9uIENpcmN1bGFyVW5pdGFyeU1hdHJpeERpc3RyaWJ1dGlvbiBDaXJjdW1zcGhlcmUgQ2l0eURhdGEgQ2xhc3NpZmllckZ1bmN0aW9uIENsYXNzaWZpZXJJbmZvcm1hdGlvbiBDbGFzc2lmaWVyTWVhc3VyZW1lbnRzIENsYXNzaWZpZXJNZWFzdXJlbWVudHNPYmplY3QgQ2xhc3NpZnkgQ2xhc3NQcmlvcnMgQ2xlYXIgQ2xlYXJBbGwgQ2xlYXJBdHRyaWJ1dGVzIENsZWFyQ29va2llcyBDbGVhclBlcm1pc3Npb25zIENsZWFyU3lzdGVtQ2FjaGUgQ2xlYnNjaEdvcmRhbiBDbGlja1BhbmUgQ2xpcCBDbGlwYm9hcmROb3RlYm9vayBDbGlwRmlsbCBDbGlwcGluZ1N0eWxlIENsaXBQbGFuZXMgQ2xpcFBsYW5lc1N0eWxlIENsaXBSYW5nZSBDbG9jayBDbG9ja0dhdWdlIENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCBDbG9zZSBDbG9zZWQgQ2xvc2VLZXJuZWxzIENsb3NlbmVzc0NlbnRyYWxpdHkgQ2xvc2luZyBDbG9zaW5nQXV0b1NhdmUgQ2xvc2luZ0V2ZW50IENsb3VkQWNjb3VudERhdGEgQ2xvdWRCYXNlIENsb3VkQ29ubmVjdCBDbG91ZERlcGxveSBDbG91ZERpcmVjdG9yeSBDbG91ZERpc2Nvbm5lY3QgQ2xvdWRFdmFsdWF0ZSBDbG91ZEV4cG9ydCBDbG91ZEV4cHJlc3Npb24gQ2xvdWRFeHByZXNzaW9ucyBDbG91ZEZ1bmN0aW9uIENsb3VkR2V0IENsb3VkSW1wb3J0IENsb3VkTG9nZ2luZ0RhdGEgQ2xvdWRPYmplY3QgQ2xvdWRPYmplY3RJbmZvcm1hdGlvbiBDbG91ZE9iamVjdEluZm9ybWF0aW9uRGF0YSBDbG91ZE9iamVjdE5hbWVGb3JtYXQgQ2xvdWRPYmplY3RzIENsb3VkT2JqZWN0VVJMVHlwZSBDbG91ZFB1Ymxpc2ggQ2xvdWRQdXQgQ2xvdWRSZW5kZXJpbmdNZXRob2QgQ2xvdWRTYXZlIENsb3VkU2hhcmUgQ2xvdWRTdWJtaXQgQ2xvdWRTeW1ib2wgQ2xvdWRVbnNoYXJlIENsdXN0ZXJDbGFzc2lmeSBDbHVzdGVyRGlzc2ltaWxhcml0eUZ1bmN0aW9uIENsdXN0ZXJpbmdDb21wb25lbnRzIENsdXN0ZXJpbmdUcmVlIENNWUtDb2xvciBDb2Fyc2UgQ29kZUFzc2lzdE9wdGlvbnMgQ29lZmZpY2llbnQgQ29lZmZpY2llbnRBcnJheXMgQ29lZmZpY2llbnREb21haW4gQ29lZmZpY2llbnRMaXN0IENvZWZmaWNpZW50UnVsZXMgQ29pZmxldFdhdmVsZXQgQ29sbGVjdCBDb2xvbiBDb2xvbkZvcm0gQ29sb3JCYWxhbmNlIENvbG9yQ29tYmluZSBDb2xvckNvbnZlcnQgQ29sb3JDb3ZlcmFnZSBDb2xvckRhdGEgQ29sb3JEYXRhRnVuY3Rpb24gQ29sb3JEZXRlY3QgQ29sb3JEaXN0YW5jZSBDb2xvckZ1bmN0aW9uIENvbG9yRnVuY3Rpb25TY2FsaW5nIENvbG9yaXplIENvbG9yTmVnYXRlIENvbG9yT3V0cHV0IENvbG9yUHJvZmlsZURhdGEgQ29sb3JRIENvbG9yUXVhbnRpemUgQ29sb3JSZXBsYWNlIENvbG9yUnVsZXMgQ29sb3JTZWxlY3RvclNldHRpbmdzIENvbG9yU2VwYXJhdGUgQ29sb3JTZXR0ZXIgQ29sb3JTZXR0ZXJCb3ggQ29sb3JTZXR0ZXJCb3hPcHRpb25zIENvbG9yU2xpZGVyIENvbG9yc05lYXIgQ29sb3JTcGFjZSBDb2xvclRvbmVNYXBwaW5nIENvbHVtbiBDb2x1bW5BbGlnbm1lbnRzIENvbHVtbkJhY2tncm91bmRzIENvbHVtbkZvcm0gQ29sdW1uTGluZXMgQ29sdW1uc0VxdWFsIENvbHVtblNwYWNpbmdzIENvbHVtbldpZHRocyBDb21iaW5lZEVudGl0eUNsYXNzIENvbWJpbmVyRnVuY3Rpb24gQ29tZXREYXRhIENvbW1vbkRlZmF1bHRGb3JtYXRUeXBlcyBDb21tb25lc3QgQ29tbW9uZXN0RmlsdGVyIENvbW1vbk5hbWUgQ29tbW9uVW5pdHMgQ29tbXVuaXR5Qm91bmRhcnlTdHlsZSBDb21tdW5pdHlHcmFwaFBsb3QgQ29tbXVuaXR5TGFiZWxzIENvbW11bml0eVJlZ2lvblN0eWxlIENvbXBhbnlEYXRhIENvbXBhdGlibGVVbml0USBDb21waWxhdGlvbk9wdGlvbnMgQ29tcGlsYXRpb25UYXJnZXQgQ29tcGlsZSBDb21waWxlZCBDb21waWxlZENvZGVGdW5jdGlvbiBDb21waWxlZEZ1bmN0aW9uIENvbXBpbGVyT3B0aW9ucyBDb21wbGVtZW50IENvbXBsZXRlR3JhcGggQ29tcGxldGVHcmFwaFEgQ29tcGxldGVLYXJ5VHJlZSBDb21wbGV0aW9uc0xpc3RQYWNrZXQgQ29tcGxleCBDb21wbGV4ZXMgQ29tcGxleEV4cGFuZCBDb21wbGV4SW5maW5pdHkgQ29tcGxleGl0eUZ1bmN0aW9uIENvbXBsZXhMaXN0UGxvdCBDb21wbGV4UGxvdCBDb21wbGV4UGxvdDNEIENvbXBvbmVudE1lYXN1cmVtZW50cyBDb21wb25lbnR3aXNlQ29udGV4dE1lbnUgQ29tcG9zZSBDb21wb3NlTGlzdCBDb21wb3NlU2VyaWVzIENvbXBvc2l0ZVEgQ29tcG9zaXRpb24gQ29tcG91bmRFbGVtZW50IENvbXBvdW5kRXhwcmVzc2lvbiBDb21wb3VuZFBvaXNzb25EaXN0cmlidXRpb24gQ29tcG91bmRQb2lzc29uUHJvY2VzcyBDb21wb3VuZFJlbmV3YWxQcm9jZXNzIENvbXByZXNzIENvbXByZXNzZWREYXRhIENvbXB1dGVVbmNlcnRhaW50eSBDb25kaXRpb24gQ29uZGl0aW9uYWxFeHByZXNzaW9uIENvbmRpdGlvbmVkIENvbmUgQ29uZUJveCBDb25maWRlbmNlTGV2ZWwgQ29uZmlkZW5jZVJhbmdlIENvbmZpZGVuY2VUcmFuc2Zvcm0gQ29uZmlndXJhdGlvblBhdGggQ29uZm9ybUF1ZGlvIENvbmZvcm1JbWFnZXMgQ29uZ3J1ZW50IENvbmljSHVsbFJlZ2lvbiBDb25pY0h1bGxSZWdpb24zREJveCBDb25pY0h1bGxSZWdpb25Cb3ggQ29uaWNPcHRpbWl6YXRpb24gQ29uanVnYXRlIENvbmp1Z2F0ZVRyYW5zcG9zZSBDb25qdW5jdGlvbiBDb25uZWN0IENvbm5lY3RlZENvbXBvbmVudHMgQ29ubmVjdGVkR3JhcGhDb21wb25lbnRzIENvbm5lY3RlZEdyYXBoUSBDb25uZWN0ZWRNZXNoQ29tcG9uZW50cyBDb25uZWN0ZWRNb2xlY3VsZUNvbXBvbmVudHMgQ29ubmVjdGVkTW9sZWN1bGVRIENvbm5lY3Rpb25TZXR0aW5ncyBDb25uZWN0TGlicmFyeUNhbGxiYWNrRnVuY3Rpb24gQ29ubmVjdFN5c3RlbU1vZGVsQ29tcG9uZW50cyBDb25uZXNXaW5kb3cgQ29ub3ZlclRlc3QgQ29uc29sZU1lc3NhZ2UgQ29uc29sZU1lc3NhZ2VQYWNrZXQgQ29uc29sZVByaW50IENvbnN0YW50IENvbnN0YW50QXJyYXkgQ29uc3RhbnRBcnJheUxheWVyIENvbnN0YW50SW1hZ2UgQ29uc3RhbnRQbHVzTGF5ZXIgQ29uc3RhbnRSZWdpb25RIENvbnN0YW50cyBDb25zdGFudFRpbWVzTGF5ZXIgQ29uc3RlbGxhdGlvbkRhdGEgQ29uc3RyYWluZWRNYXggQ29uc3RyYWluZWRNaW4gQ29uc3RydWN0IENvbnRhaW5pbmcgQ29udGFpbnNBbGwgQ29udGFpbnNBbnkgQ29udGFpbnNFeGFjdGx5IENvbnRhaW5zTm9uZSBDb250YWluc09ubHkgQ29udGVudEZpZWxkT3B0aW9ucyBDb250ZW50TG9jYXRpb25GdW5jdGlvbiBDb250ZW50T2JqZWN0IENvbnRlbnRQYWRkaW5nIENvbnRlbnRzQm91bmRpbmdCb3ggQ29udGVudFNlbGVjdGFibGUgQ29udGVudFNpemUgQ29udGV4dCBDb250ZXh0TWVudSBDb250ZXh0cyBDb250ZXh0VG9GaWxlTmFtZSBDb250aW51YXRpb24gQ29udGludWUgQ29udGludWVkRnJhY3Rpb24gQ29udGludWVkRnJhY3Rpb25LIENvbnRpbnVvdXNBY3Rpb24gQ29udGludW91c01hcmtvdlByb2Nlc3MgQ29udGludW91c1Rhc2sgQ29udGludW91c1RpbWVNb2RlbFEgQ29udGludW91c1dhdmVsZXREYXRhIENvbnRpbnVvdXNXYXZlbGV0VHJhbnNmb3JtIENvbnRvdXJEZXRlY3QgQ29udG91ckdyYXBoaWNzIENvbnRvdXJJbnRlZ3JhbCBDb250b3VyTGFiZWxzIENvbnRvdXJMaW5lcyBDb250b3VyUGxvdCBDb250b3VyUGxvdDNEIENvbnRvdXJzIENvbnRvdXJTaGFkaW5nIENvbnRvdXJTbW9vdGhpbmcgQ29udG91clN0eWxlIENvbnRyYWhhcm1vbmljTWVhbiBDb250cmFzdGl2ZUxvc3NMYXllciBDb250cm9sIENvbnRyb2xBY3RpdmUgQ29udHJvbEFsaWdubWVudCBDb250cm9sR3JvdXBDb250ZW50c0JveCBDb250cm9sbGFiaWxpdHlHcmFtaWFuIENvbnRyb2xsYWJpbGl0eU1hdHJpeCBDb250cm9sbGFibGVEZWNvbXBvc2l0aW9uIENvbnRyb2xsYWJsZU1vZGVsUSBDb250cm9sbGVyRHVyYXRpb24gQ29udHJvbGxlckluZm9ybWF0aW9uIENvbnRyb2xsZXJJbmZvcm1hdGlvbkRhdGEgQ29udHJvbGxlckxpbmtpbmcgQ29udHJvbGxlck1hbmlwdWxhdGUgQ29udHJvbGxlck1ldGhvZCBDb250cm9sbGVyUGF0aCBDb250cm9sbGVyU3RhdGUgQ29udHJvbFBsYWNlbWVudCBDb250cm9sc1JlbmRlcmluZyBDb250cm9sVHlwZSBDb252ZXJnZW50cyBDb252ZXJzaW9uT3B0aW9ucyBDb252ZXJzaW9uUnVsZXMgQ29udmVydFRvQml0bWFwUGFja2V0IENvbnZlcnRUb1Bvc3RTY3JpcHQgQ29udmVydFRvUG9zdFNjcmlwdFBhY2tldCBDb252ZXhIdWxsTWVzaCBDb252ZXhQb2x5Z29uUSBDb252ZXhQb2x5aGVkcm9uUSBDb252b2x1dGlvbkxheWVyIENvbnZvbHZlIENvbndheUdyb3VwQ28xIENvbndheUdyb3VwQ28yIENvbndheUdyb3VwQ28zIENvb2tpZUZ1bmN0aW9uIENvb2tpZXMgQ29vcmRpbmF0ZUJvdW5kaW5nQm94IENvb3JkaW5hdGVCb3VuZGluZ0JveEFycmF5IENvb3JkaW5hdGVCb3VuZHMgQ29vcmRpbmF0ZUJvdW5kc0FycmF5IENvb3JkaW5hdGVDaGFydERhdGEgQ29vcmRpbmF0ZXNUb29sT3B0aW9ucyBDb29yZGluYXRlVHJhbnNmb3JtIENvb3JkaW5hdGVUcmFuc2Zvcm1EYXRhIENvcHJpbWVRIENvcHJvZHVjdCBDb3B1bGFEaXN0cmlidXRpb24gQ29weWFibGUgQ29weURhdGFiaW4gQ29weURpcmVjdG9yeSBDb3B5RmlsZSBDb3B5VGFnIENvcHlUb0NsaXBib2FyZCBDb3JuZXJGaWx0ZXIgQ29ybmVyTmVpZ2hib3JzIENvcnJlbGF0aW9uIENvcnJlbGF0aW9uRGlzdGFuY2UgQ29ycmVsYXRpb25GdW5jdGlvbiBDb3JyZWxhdGlvblRlc3QgQ29zIENvc2ggQ29zaEludGVncmFsIENvc2luZURpc3RhbmNlIENvc2luZVdpbmRvdyBDb3NJbnRlZ3JhbCBDb3QgQ290aCBDb3VudCBDb3VudERpc3RpbmN0IENvdW50RGlzdGluY3RCeSBDb3VudGVyQXNzaWdubWVudHMgQ291bnRlckJveCBDb3VudGVyQm94T3B0aW9ucyBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsIENvdW50ZXJFdmFsdWF0b3IgQ291bnRlckZ1bmN0aW9uIENvdW50ZXJJbmNyZW1lbnRzIENvdW50ZXJTdHlsZSBDb3VudGVyU3R5bGVNZW51TGlzdGluZyBDb3VudFJvb3RzIENvdW50cnlEYXRhIENvdW50cyBDb3VudHNCeSBDb3ZhcmlhbmNlIENvdmFyaWFuY2VFc3RpbWF0b3JGdW5jdGlvbiBDb3ZhcmlhbmNlRnVuY3Rpb24gQ294aWFuRGlzdHJpYnV0aW9uIENveEluZ2Vyc29sbFJvc3NQcm9jZXNzIENveE1vZGVsIENveE1vZGVsRml0IENyYW1lclZvbk1pc2VzVGVzdCBDcmVhdGVBcmNoaXZlIENyZWF0ZUNlbGxJRCBDcmVhdGVDaGFubmVsIENyZWF0ZUNsb3VkRXhwcmVzc2lvbiBDcmVhdGVEYXRhYmluIENyZWF0ZURhdGFTeXN0ZW1Nb2RlbCBDcmVhdGVEaWFsb2cgQ3JlYXRlRGlyZWN0b3J5IENyZWF0ZURvY3VtZW50IENyZWF0ZUZpbGUgQ3JlYXRlSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXMgQ3JlYXRlTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uIENyZWF0ZU5vdGVib29rIENyZWF0ZVBhbGV0dGUgQ3JlYXRlUGFsZXR0ZVBhY2tldCBDcmVhdGVQZXJtaXNzaW9uc0dyb3VwIENyZWF0ZVNjaGVkdWxlZFRhc2sgQ3JlYXRlU2VhcmNoSW5kZXggQ3JlYXRlU3lzdGVtTW9kZWwgQ3JlYXRlVGVtcG9yYXJ5IENyZWF0ZVVVSUQgQ3JlYXRlV2luZG93IENyaXRlcmlvbkZ1bmN0aW9uIENyaXRpY2FsaXR5RmFpbHVyZUltcG9ydGFuY2UgQ3JpdGljYWxpdHlTdWNjZXNzSW1wb3J0YW5jZSBDcml0aWNhbFNlY3Rpb24gQ3Jvc3MgQ3Jvc3NFbnRyb3B5TG9zc0xheWVyIENyb3NzaW5nQ291bnQgQ3Jvc3NpbmdEZXRlY3QgQ3Jvc3NpbmdQb2x5Z29uIENyb3NzTWF0cml4IENzYyBDc2NoIENUQ0xvc3NMYXllciBDdWJlIEN1YmVSb290IEN1YmljcyBDdWJvaWQgQ3Vib2lkQm94IEN1bXVsYW50IEN1bXVsYW50R2VuZXJhdGluZ0Z1bmN0aW9uIEN1cCBDdXBDYXAgQ3VybCBDdXJseURvdWJsZVF1b3RlIEN1cmx5UXVvdGUgQ3VycmVuY3lDb252ZXJ0IEN1cnJlbnREYXRlIEN1cnJlbnRJbWFnZSBDdXJyZW50bHlTcGVha2luZ1BhY2tldCBDdXJyZW50Tm90ZWJvb2tJbWFnZSBDdXJyZW50U2NyZWVuSW1hZ2UgQ3VycmVudFZhbHVlIEN1cnJ5IEN1cnZhdHVyZUZsb3dGaWx0ZXIgQ3VydmVDbG9zZWQgQ3lhbiBDeWNsZUdyYXBoIEN5Y2xlSW5kZXhQb2x5bm9taWFsIEN5Y2xlcyBDeWNsaWNHcm91cCBDeWNsb3RvbWljIEN5bGluZGVyIEN5bGluZGVyQm94IEN5bGluZHJpY2FsRGVjb21wb3NpdGlvbicgK1xuICAgICAgJ0QgRGFndW1EaXN0cmlidXRpb24gRGFtRGF0YSBEYW1lcmF1TGV2ZW5zaHRlaW5EaXN0YW5jZSBEYW1waW5nRmFjdG9yIERhcmtlciBEYXNoZWQgRGFzaGluZyBEYXRhYmFzZUNvbm5lY3QgRGF0YWJhc2VEaXNjb25uZWN0IERhdGFiYXNlUmVmZXJlbmNlIERhdGFiaW4gRGF0YWJpbkFkZCBEYXRhYmluUmVtb3ZlIERhdGFiaW5zIERhdGFiaW5VcGxvYWQgRGF0YUNvbXByZXNzaW9uIERhdGFEaXN0cmlidXRpb24gRGF0YVJhbmdlIERhdGFSZXZlcnNlZCBEYXRhc2V0IERhdGUgRGF0ZUJvdW5kcyBEYXRlZCBEYXRlRGVsaW1pdGVycyBEYXRlRGlmZmVyZW5jZSBEYXRlZFVuaXQgRGF0ZUZvcm1hdCBEYXRlRnVuY3Rpb24gRGF0ZUhpc3RvZ3JhbSBEYXRlTGlzdCBEYXRlTGlzdExvZ1Bsb3QgRGF0ZUxpc3RQbG90IERhdGVMaXN0U3RlcFBsb3QgRGF0ZU9iamVjdCBEYXRlT2JqZWN0USBEYXRlT3ZlcmxhcHNRIERhdGVQYXR0ZXJuIERhdGVQbHVzIERhdGVSYW5nZSBEYXRlUmVkdWN0aW9uIERhdGVTdHJpbmcgRGF0ZVRpY2tzRm9ybWF0IERhdGVWYWx1ZSBEYXRlV2l0aGluUSBEYXViZWNoaWVzV2F2ZWxldCBEYXZpc0Rpc3RyaWJ1dGlvbiBEYXdzb25GIERheUNvdW50IERheUNvdW50Q29udmVudGlvbiBEYXlIZW1pc3BoZXJlIERheWxpZ2h0USBEYXlNYXRjaFEgRGF5TmFtZSBEYXlOaWdodFRlcm1pbmF0b3IgRGF5UGx1cyBEYXlSYW5nZSBEYXlSb3VuZCBEZUJydWlqbkdyYXBoIERlQnJ1aWpuU2VxdWVuY2UgRGVidWcgRGVidWdUYWcgRGVjYXBpdGFsaXplIERlY2ltYWwgRGVjaW1hbEZvcm0gRGVjbGFyZUtub3duU3ltYm9scyBEZWNsYXJlUGFja2FnZSBEZWNvbXBvc2UgRGVjb252b2x1dGlvbkxheWVyIERlY3JlbWVudCBEZWNyeXB0IERlY3J5cHRGaWxlIERlZGVraW5kRXRhIERlZXBTcGFjZVByb2JlRGF0YSBEZWZhdWx0IERlZmF1bHRBeGVzU3R5bGUgRGVmYXVsdEJhc2VTdHlsZSBEZWZhdWx0Qm94U3R5bGUgRGVmYXVsdEJ1dHRvbiBEZWZhdWx0Q29sb3IgRGVmYXVsdENvbnRyb2xQbGFjZW1lbnQgRGVmYXVsdER1cGxpY2F0ZUNlbGxTdHlsZSBEZWZhdWx0RHVyYXRpb24gRGVmYXVsdEVsZW1lbnQgRGVmYXVsdEZhY2VHcmlkc1N0eWxlIERlZmF1bHRGaWVsZEhpbnRTdHlsZSBEZWZhdWx0Rm9udCBEZWZhdWx0Rm9udFByb3BlcnRpZXMgRGVmYXVsdEZvcm1hdFR5cGUgRGVmYXVsdEZvcm1hdFR5cGVGb3JTdHlsZSBEZWZhdWx0RnJhbWVTdHlsZSBEZWZhdWx0RnJhbWVUaWNrc1N0eWxlIERlZmF1bHRHcmlkTGluZXNTdHlsZSBEZWZhdWx0SW5saW5lRm9ybWF0VHlwZSBEZWZhdWx0SW5wdXRGb3JtYXRUeXBlIERlZmF1bHRMYWJlbFN0eWxlIERlZmF1bHRNZW51U3R5bGUgRGVmYXVsdE5hdHVyYWxMYW5ndWFnZSBEZWZhdWx0TmV3Q2VsbFN0eWxlIERlZmF1bHROZXdJbmxpbmVDZWxsU3R5bGUgRGVmYXVsdE5vdGVib29rIERlZmF1bHRPcHRpb25zIERlZmF1bHRPdXRwdXRGb3JtYXRUeXBlIERlZmF1bHRQcmludFByZWNpc2lvbiBEZWZhdWx0U3R5bGUgRGVmYXVsdFN0eWxlRGVmaW5pdGlvbnMgRGVmYXVsdFRleHRGb3JtYXRUeXBlIERlZmF1bHRUZXh0SW5saW5lRm9ybWF0VHlwZSBEZWZhdWx0VGlja3NTdHlsZSBEZWZhdWx0VG9vbHRpcFN0eWxlIERlZmF1bHRWYWx1ZSBEZWZhdWx0VmFsdWVzIERlZmVyIERlZmluZUV4dGVybmFsIERlZmluZUlucHV0U3RyZWFtTWV0aG9kIERlZmluZU91dHB1dFN0cmVhbU1ldGhvZCBEZWZpbmVSZXNvdXJjZUZ1bmN0aW9uIERlZmluaXRpb24gRGVncmVlIERlZ3JlZUNlbnRyYWxpdHkgRGVncmVlR3JhcGhEaXN0cmlidXRpb24gRGVncmVlTGV4aWNvZ3JhcGhpYyBEZWdyZWVSZXZlcnNlTGV4aWNvZ3JhcGhpYyBERWlnZW5zeXN0ZW0gREVpZ2VudmFsdWVzIERlaW5pdGlhbGl6YXRpb24gRGVsIERlbGF1bmF5TWVzaCBEZWxheWVkIERlbGV0YWJsZSBEZWxldGUgRGVsZXRlQW5vbWFsaWVzIERlbGV0ZUJvcmRlckNvbXBvbmVudHMgRGVsZXRlQ2FzZXMgRGVsZXRlQ2hhbm5lbCBEZWxldGVDbG91ZEV4cHJlc3Npb24gRGVsZXRlQ29udGVudHMgRGVsZXRlRGlyZWN0b3J5IERlbGV0ZUR1cGxpY2F0ZXMgRGVsZXRlRHVwbGljYXRlc0J5IERlbGV0ZUZpbGUgRGVsZXRlTWlzc2luZyBEZWxldGVPYmplY3QgRGVsZXRlUGVybWlzc2lvbnNLZXkgRGVsZXRlU2VhcmNoSW5kZXggRGVsZXRlU21hbGxDb21wb25lbnRzIERlbGV0ZVN0b3B3b3JkcyBEZWxldGVXaXRoQ29udGVudHMgRGVsZXRpb25XYXJuaW5nIERlbGltaXRlZEFycmF5IERlbGltaXRlZFNlcXVlbmNlIERlbGltaXRlciBEZWxpbWl0ZXJGbGFzaFRpbWUgRGVsaW1pdGVyTWF0Y2hpbmcgRGVsaW1pdGVycyBEZWxpdmVyeUZ1bmN0aW9uIERlbmRyb2dyYW0gRGVub21pbmF0b3IgRGVuc2l0eUdyYXBoaWNzIERlbnNpdHlIaXN0b2dyYW0gRGVuc2l0eVBsb3QgRGVuc2l0eVBsb3QzRCBEZXBlbmRlbnRWYXJpYWJsZXMgRGVwbG95IERlcGxveWVkIERlcHRoIERlcHRoRmlyc3RTY2FuIERlcml2YXRpdmUgRGVyaXZhdGl2ZUZpbHRlciBEZXJpdmVkS2V5IERlc2NyaXB0b3JTdGF0ZVNwYWNlIERlc2lnbk1hdHJpeCBEZXN0cm95QWZ0ZXJFdmFsdWF0aW9uIERldCBEZXZpY2VDbG9zZSBEZXZpY2VDb25maWd1cmUgRGV2aWNlRXhlY3V0ZSBEZXZpY2VFeGVjdXRlQXN5bmNocm9ub3VzIERldmljZU9iamVjdCBEZXZpY2VPcGVuIERldmljZU9wZW5RIERldmljZVJlYWQgRGV2aWNlUmVhZEJ1ZmZlciBEZXZpY2VSZWFkTGF0ZXN0IERldmljZVJlYWRMaXN0IERldmljZVJlYWRUaW1lU2VyaWVzIERldmljZXMgRGV2aWNlU3RyZWFtcyBEZXZpY2VXcml0ZSBEZXZpY2VXcml0ZUJ1ZmZlciBER2F1c3NpYW5XYXZlbGV0IERpYWNyaXRpY2FsUG9zaXRpb25pbmcgRGlhZ29uYWwgRGlhZ29uYWxpemFibGVNYXRyaXhRIERpYWdvbmFsTWF0cml4IERpYWdvbmFsTWF0cml4USBEaWFsb2cgRGlhbG9nSW5kZW50IERpYWxvZ0lucHV0IERpYWxvZ0xldmVsIERpYWxvZ05vdGVib29rIERpYWxvZ1Byb2xvZyBEaWFsb2dSZXR1cm4gRGlhbG9nU3ltYm9scyBEaWFtb25kIERpYW1vbmRNYXRyaXggRGljZURpc3NpbWlsYXJpdHkgRGljdGlvbmFyeUxvb2t1cCBEaWN0aW9uYXJ5V29yZFEgRGlmZmVyZW5jZURlbHRhIERpZmZlcmVuY2VPcmRlciBEaWZmZXJlbmNlUXVvdGllbnQgRGlmZmVyZW5jZVJvb3QgRGlmZmVyZW5jZVJvb3RSZWR1Y2UgRGlmZmVyZW5jZXMgRGlmZmVyZW50aWFsRCBEaWZmZXJlbnRpYWxSb290IERpZmZlcmVudGlhbFJvb3RSZWR1Y2UgRGlmZmVyZW50aWF0b3JGaWx0ZXIgRGlnaXRhbFNpZ25hdHVyZSBEaWdpdEJsb2NrIERpZ2l0QmxvY2tNaW5pbXVtIERpZ2l0Q2hhcmFjdGVyIERpZ2l0Q291bnQgRGlnaXRRIERpaGVkcmFsQW5nbGUgRGloZWRyYWxHcm91cCBEaWxhdGlvbiBEaW1lbnNpb25hbENvbWJpbmF0aW9ucyBEaW1lbnNpb25hbE1lc2hDb21wb25lbnRzIERpbWVuc2lvblJlZHVjZSBEaW1lbnNpb25SZWR1Y2VyRnVuY3Rpb24gRGltZW5zaW9uUmVkdWN0aW9uIERpbWVuc2lvbnMgRGlyYWNDb21iIERpcmFjRGVsdGEgRGlyZWN0ZWRFZGdlIERpcmVjdGVkRWRnZXMgRGlyZWN0ZWRHcmFwaCBEaXJlY3RlZEdyYXBoUSBEaXJlY3RlZEluZmluaXR5IERpcmVjdGlvbiBEaXJlY3RpdmUgRGlyZWN0b3J5IERpcmVjdG9yeU5hbWUgRGlyZWN0b3J5USBEaXJlY3RvcnlTdGFjayBEaXJpY2hsZXRCZXRhIERpcmljaGxldENoYXJhY3RlciBEaXJpY2hsZXRDb25kaXRpb24gRGlyaWNobGV0Q29udm9sdmUgRGlyaWNobGV0RGlzdHJpYnV0aW9uIERpcmljaGxldEV0YSBEaXJpY2hsZXRMIERpcmljaGxldExhbWJkYSBEaXJpY2hsZXRUcmFuc2Zvcm0gRGlyaWNobGV0V2luZG93IERpc2FibGVDb25zb2xlUHJpbnRQYWNrZXQgRGlzYWJsZUZvcm1hdHRpbmcgRGlzY3JldGVDaGlycFpUcmFuc2Zvcm0gRGlzY3JldGVDb252b2x2ZSBEaXNjcmV0ZURlbHRhIERpc2NyZXRlSGFkYW1hcmRUcmFuc2Zvcm0gRGlzY3JldGVJbmRpY2F0b3IgRGlzY3JldGVMaW1pdCBEaXNjcmV0ZUxRRXN0aW1hdG9yR2FpbnMgRGlzY3JldGVMUVJlZ3VsYXRvckdhaW5zIERpc2NyZXRlTHlhcHVub3ZTb2x2ZSBEaXNjcmV0ZU1hcmtvdlByb2Nlc3MgRGlzY3JldGVNYXhMaW1pdCBEaXNjcmV0ZU1pbkxpbWl0IERpc2NyZXRlUGxvdCBEaXNjcmV0ZVBsb3QzRCBEaXNjcmV0ZVJhdGlvIERpc2NyZXRlUmljY2F0aVNvbHZlIERpc2NyZXRlU2hpZnQgRGlzY3JldGVUaW1lTW9kZWxRIERpc2NyZXRlVW5pZm9ybURpc3RyaWJ1dGlvbiBEaXNjcmV0ZVZhcmlhYmxlcyBEaXNjcmV0ZVdhdmVsZXREYXRhIERpc2NyZXRlV2F2ZWxldFBhY2tldFRyYW5zZm9ybSBEaXNjcmV0ZVdhdmVsZXRUcmFuc2Zvcm0gRGlzY3JldGl6ZUdyYXBoaWNzIERpc2NyZXRpemVSZWdpb24gRGlzY3JpbWluYW50IERpc2pvaW50USBEaXNqdW5jdGlvbiBEaXNrIERpc2tCb3ggRGlza01hdHJpeCBEaXNrU2VnbWVudCBEaXNwYXRjaCBEaXNwYXRjaFEgRGlzcGVyc2lvbkVzdGltYXRvckZ1bmN0aW9uIERpc3BsYXkgRGlzcGxheUFsbFN0ZXBzIERpc3BsYXlFbmRQYWNrZXQgRGlzcGxheUZsdXNoSW1hZ2VQYWNrZXQgRGlzcGxheUZvcm0gRGlzcGxheUZ1bmN0aW9uIERpc3BsYXlQYWNrZXQgRGlzcGxheVJ1bGVzIERpc3BsYXlTZXRTaXplUGFja2V0IERpc3BsYXlTdHJpbmcgRGlzcGxheVRlbXBvcmFyeSBEaXNwbGF5V2l0aCBEaXNwbGF5V2l0aFJlZiBEaXNwbGF5V2l0aFZhcmlhYmxlIERpc3RhbmNlRnVuY3Rpb24gRGlzdGFuY2VNYXRyaXggRGlzdGFuY2VUcmFuc2Zvcm0gRGlzdHJpYnV0ZSBEaXN0cmlidXRlZCBEaXN0cmlidXRlZENvbnRleHRzIERpc3RyaWJ1dGVEZWZpbml0aW9ucyBEaXN0cmlidXRpb25DaGFydCBEaXN0cmlidXRpb25Eb21haW4gRGlzdHJpYnV0aW9uRml0VGVzdCBEaXN0cmlidXRpb25QYXJhbWV0ZXJBc3N1bXB0aW9ucyBEaXN0cmlidXRpb25QYXJhbWV0ZXJRIERpdGhlcmluZyBEaXYgRGl2ZXJnZW5jZSBEaXZpZGUgRGl2aWRlQnkgRGl2aWRlcnMgRGl2aWRlU2lkZXMgRGl2aXNpYmxlIERpdmlzb3JzIERpdmlzb3JTaWdtYSBEaXZpc29yU3VtIERNU0xpc3QgRE1TU3RyaW5nIERvIERvY2tlZENlbGxzIERvY3VtZW50R2VuZXJhdG9yIERvY3VtZW50R2VuZXJhdG9ySW5mb3JtYXRpb24gRG9jdW1lbnRHZW5lcmF0b3JJbmZvcm1hdGlvbkRhdGEgRG9jdW1lbnRHZW5lcmF0b3JzIERvY3VtZW50Tm90ZWJvb2sgRG9jdW1lbnRXZWlnaHRpbmdSdWxlcyBEb2RlY2FoZWRyb24gRG9tYWluUmVnaXN0cmF0aW9uSW5mb3JtYXRpb24gRG9taW5hbnRDb2xvcnMgRE9TVGV4dEZvcm1hdCBEb3QgRG90RGFzaGVkIERvdEVxdWFsIERvdExheWVyIERvdFBsdXNMYXllciBEb3R0ZWQgRG91YmxlQnJhY2tldGluZ0JhciBEb3VibGVDb250b3VySW50ZWdyYWwgRG91YmxlRG93bkFycm93IERvdWJsZUxlZnRBcnJvdyBEb3VibGVMZWZ0UmlnaHRBcnJvdyBEb3VibGVMZWZ0VGVlIERvdWJsZUxvbmdMZWZ0QXJyb3cgRG91YmxlTG9uZ0xlZnRSaWdodEFycm93IERvdWJsZUxvbmdSaWdodEFycm93IERvdWJsZVJpZ2h0QXJyb3cgRG91YmxlUmlnaHRUZWUgRG91YmxlVXBBcnJvdyBEb3VibGVVcERvd25BcnJvdyBEb3VibGVWZXJ0aWNhbEJhciBEb3VibHlJbmZpbml0ZSBEb3duIERvd25BcnJvdyBEb3duQXJyb3dCYXIgRG93bkFycm93VXBBcnJvdyBEb3duTGVmdFJpZ2h0VmVjdG9yIERvd25MZWZ0VGVlVmVjdG9yIERvd25MZWZ0VmVjdG9yIERvd25MZWZ0VmVjdG9yQmFyIERvd25SaWdodFRlZVZlY3RvciBEb3duUmlnaHRWZWN0b3IgRG93blJpZ2h0VmVjdG9yQmFyIERvd25zYW1wbGUgRG93blRlZSBEb3duVGVlQXJyb3cgRG93blZhbHVlcyBEcmFnQW5kRHJvcCBEcmF3RWRnZXMgRHJhd0Zyb250RmFjZXMgRHJhd0hpZ2hsaWdodGVkIERyb3AgRHJvcG91dExheWVyIERTb2x2ZSBEU29sdmVWYWx1ZSBEdCBEdWFsTGluZWFyUHJvZ3JhbW1pbmcgRHVhbFBvbHloZWRyb24gRHVhbFN5c3RlbXNNb2RlbCBEdW1wR2V0IER1bXBTYXZlIER1cGxpY2F0ZUZyZWVRIER1cmF0aW9uIER5bmFtaWMgRHluYW1pY0JveCBEeW5hbWljQm94T3B0aW9ucyBEeW5hbWljRXZhbHVhdGlvblRpbWVvdXQgRHluYW1pY0dlb0dyYXBoaWNzIER5bmFtaWNJbWFnZSBEeW5hbWljTG9jYXRpb24gRHluYW1pY01vZHVsZSBEeW5hbWljTW9kdWxlQm94IER5bmFtaWNNb2R1bGVCb3hPcHRpb25zIER5bmFtaWNNb2R1bGVQYXJlbnQgRHluYW1pY01vZHVsZVZhbHVlcyBEeW5hbWljTmFtZSBEeW5hbWljTmFtZXNwYWNlIER5bmFtaWNSZWZlcmVuY2UgRHluYW1pY1NldHRpbmcgRHluYW1pY1VwZGF0aW5nIER5bmFtaWNXcmFwcGVyIER5bmFtaWNXcmFwcGVyQm94IER5bmFtaWNXcmFwcGVyQm94T3B0aW9ucycgK1xuICAgICAgJ0UgRWFydGhJbXBhY3REYXRhIEVhcnRocXVha2VEYXRhIEVjY2VudHJpY2l0eUNlbnRyYWxpdHkgRWNobyBFY2hvRnVuY3Rpb24gRWNsaXBzZVR5cGUgRWRnZUFkZCBFZGdlQmV0d2Vlbm5lc3NDZW50cmFsaXR5IEVkZ2VDYXBhY2l0eSBFZGdlQ2FwRm9ybSBFZGdlQ29sb3IgRWRnZUNvbm5lY3Rpdml0eSBFZGdlQ29udHJhY3QgRWRnZUNvc3QgRWRnZUNvdW50IEVkZ2VDb3ZlclEgRWRnZUN5Y2xlTWF0cml4IEVkZ2VEYXNoaW5nIEVkZ2VEZWxldGUgRWRnZURldGVjdCBFZGdlRm9ybSBFZGdlSW5kZXggRWRnZUpvaW5Gb3JtIEVkZ2VMYWJlbGluZyBFZGdlTGFiZWxzIEVkZ2VMYWJlbFN0eWxlIEVkZ2VMaXN0IEVkZ2VPcGFjaXR5IEVkZ2VRIEVkZ2VSZW5kZXJpbmdGdW5jdGlvbiBFZGdlUnVsZXMgRWRnZVNoYXBlRnVuY3Rpb24gRWRnZVN0eWxlIEVkZ2VUaGlja25lc3MgRWRnZVdlaWdodCBFZGdlV2VpZ2h0ZWRHcmFwaFEgRWRpdGFibGUgRWRpdEJ1dHRvblNldHRpbmdzIEVkaXRDZWxsVGFnc1NldHRpbmdzIEVkaXREaXN0YW5jZSBFZmZlY3RpdmVJbnRlcmVzdCBFaWdlbnN5c3RlbSBFaWdlbnZhbHVlcyBFaWdlbnZlY3RvckNlbnRyYWxpdHkgRWlnZW52ZWN0b3JzIEVsZW1lbnQgRWxlbWVudERhdGEgRWxlbWVudHdpc2VMYXllciBFbGlkZWRGb3JtcyBFbGltaW5hdGUgRWxpbWluYXRpb25PcmRlciBFbGxpcHNvaWQgRWxsaXB0aWNFIEVsbGlwdGljRXhwIEVsbGlwdGljRXhwUHJpbWUgRWxsaXB0aWNGIEVsbGlwdGljRmlsdGVyTW9kZWwgRWxsaXB0aWNLIEVsbGlwdGljTG9nIEVsbGlwdGljTm9tZVEgRWxsaXB0aWNQaSBFbGxpcHRpY1JlZHVjZWRIYWxmUGVyaW9kcyBFbGxpcHRpY1RoZXRhIEVsbGlwdGljVGhldGFQcmltZSBFbWJlZENvZGUgRW1iZWRkZWRIVE1MIEVtYmVkZGVkU2VydmljZSBFbWJlZGRpbmdMYXllciBFbWJlZGRpbmdPYmplY3QgRW1pdFNvdW5kIEVtcGhhc2l6ZVN5bnRheEVycm9ycyBFbXBpcmljYWxEaXN0cmlidXRpb24gRW1wdHkgRW1wdHlHcmFwaFEgRW1wdHlSZWdpb24gRW5hYmxlQ29uc29sZVByaW50UGFja2V0IEVuYWJsZWQgRW5jb2RlIEVuY3J5cHQgRW5jcnlwdGVkT2JqZWN0IEVuY3J5cHRGaWxlIEVuZCBFbmRBZGQgRW5kRGlhbG9nUGFja2V0IEVuZEZyb250RW5kSW50ZXJhY3Rpb25QYWNrZXQgRW5kT2ZCdWZmZXIgRW5kT2ZGaWxlIEVuZE9mTGluZSBFbmRPZlN0cmluZyBFbmRQYWNrYWdlIEVuZ2luZUVudmlyb25tZW50IEVuZ2luZWVyaW5nRm9ybSBFbnRlciBFbnRlckV4cHJlc3Npb25QYWNrZXQgRW50ZXJUZXh0UGFja2V0IEVudGl0eSBFbnRpdHlDbGFzcyBFbnRpdHlDbGFzc0xpc3QgRW50aXR5Q29waWVzIEVudGl0eUZ1bmN0aW9uIEVudGl0eUdyb3VwIEVudGl0eUluc3RhbmNlIEVudGl0eUxpc3QgRW50aXR5UHJlZmV0Y2ggRW50aXR5UHJvcGVydGllcyBFbnRpdHlQcm9wZXJ0eSBFbnRpdHlQcm9wZXJ0eUNsYXNzIEVudGl0eVJlZ2lzdGVyIEVudGl0eVN0b3JlIEVudGl0eVN0b3JlcyBFbnRpdHlUeXBlTmFtZSBFbnRpdHlVbnJlZ2lzdGVyIEVudGl0eVZhbHVlIEVudHJvcHkgRW50cm9weUZpbHRlciBFbnZpcm9ubWVudCBFcGlsb2cgRXBpbG9nRnVuY3Rpb24gRXF1YWwgRXF1YWxDb2x1bW5zIEVxdWFsUm93cyBFcXVhbFRpbGRlIEVxdWFsVG8gRXF1YXRlZFRvIEVxdWlsaWJyaXVtIEVxdWlyaXBwbGVGaWx0ZXJLZXJuZWwgRXF1aXZhbGVudCBFcmYgRXJmYyBFcmZpIEVybGFuZ0IgRXJsYW5nQyBFcmxhbmdEaXN0cmlidXRpb24gRXJvc2lvbiBFcnJvckJveCBFcnJvckJveE9wdGlvbnMgRXJyb3JOb3JtIEVycm9yUGFja2V0IEVycm9yc0RpYWxvZ1NldHRpbmdzIEVzY2FwZVJhZGl1cyBFc3RpbWF0ZWRCYWNrZ3JvdW5kIEVzdGltYXRlZERpc3RyaWJ1dGlvbiBFc3RpbWF0ZWRQcm9jZXNzIEVzdGltYXRvckdhaW5zIEVzdGltYXRvclJlZ3VsYXRvciBFdWNsaWRlYW5EaXN0YW5jZSBFdWxlckFuZ2xlcyBFdWxlckNoYXJhY3RlcmlzdGljIEV1bGVyRSBFdWxlckdhbW1hIEV1bGVyaWFuR3JhcGhRIEV1bGVyTWF0cml4IEV1bGVyUGhpIEV2YWx1YXRhYmxlIEV2YWx1YXRlIEV2YWx1YXRlZCBFdmFsdWF0ZVBhY2tldCBFdmFsdWF0ZVNjaGVkdWxlZFRhc2sgRXZhbHVhdGlvbkJveCBFdmFsdWF0aW9uQ2VsbCBFdmFsdWF0aW9uQ29tcGxldGlvbkFjdGlvbiBFdmFsdWF0aW9uRGF0YSBFdmFsdWF0aW9uRWxlbWVudHMgRXZhbHVhdGlvbkVudmlyb25tZW50IEV2YWx1YXRpb25Nb2RlIEV2YWx1YXRpb25Nb25pdG9yIEV2YWx1YXRpb25Ob3RlYm9vayBFdmFsdWF0aW9uT2JqZWN0IEV2YWx1YXRpb25PcmRlciBFdmFsdWF0b3IgRXZhbHVhdG9yTmFtZXMgRXZlblEgRXZlbnREYXRhIEV2ZW50RXZhbHVhdG9yIEV2ZW50SGFuZGxlciBFdmVudEhhbmRsZXJUYWcgRXZlbnRMYWJlbHMgRXZlbnRTZXJpZXMgRXhhY3RCbGFja21hbldpbmRvdyBFeGFjdE51bWJlclEgRXhhY3RSb290SXNvbGF0aW9uIEV4YW1wbGVEYXRhIEV4Y2VwdCBFeGNsdWRlZEZvcm1zIEV4Y2x1ZGVkTGluZXMgRXhjbHVkZWRQaHlzaWNhbFF1YW50aXRpZXMgRXhjbHVkZVBvZHMgRXhjbHVzaW9ucyBFeGNsdXNpb25zU3R5bGUgRXhpc3RzIEV4aXQgRXhpdERpYWxvZyBFeG9wbGFuZXREYXRhIEV4cCBFeHBhbmQgRXhwYW5kQWxsIEV4cGFuZERlbm9taW5hdG9yIEV4cGFuZEZpbGVOYW1lIEV4cGFuZE51bWVyYXRvciBFeHBlY3RhdGlvbiBFeHBlY3RhdGlvbkUgRXhwZWN0ZWRWYWx1ZSBFeHBHYW1tYURpc3RyaWJ1dGlvbiBFeHBJbnRlZ3JhbEUgRXhwSW50ZWdyYWxFaSBFeHBpcmF0aW9uRGF0ZSBFeHBvbmVudCBFeHBvbmVudEZ1bmN0aW9uIEV4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEV4cG9uZW50aWFsRmFtaWx5IEV4cG9uZW50aWFsR2VuZXJhdGluZ0Z1bmN0aW9uIEV4cG9uZW50aWFsTW92aW5nQXZlcmFnZSBFeHBvbmVudGlhbFBvd2VyRGlzdHJpYnV0aW9uIEV4cG9uZW50UG9zaXRpb24gRXhwb25lbnRTdGVwIEV4cG9ydCBFeHBvcnRBdXRvUmVwbGFjZW1lbnRzIEV4cG9ydEJ5dGVBcnJheSBFeHBvcnRGb3JtIEV4cG9ydFBhY2tldCBFeHBvcnRTdHJpbmcgRXhwcmVzc2lvbiBFeHByZXNzaW9uQ2VsbCBFeHByZXNzaW9uUGFja2V0IEV4cHJlc3Npb25VVUlEIEV4cFRvVHJpZyBFeHRlbmRlZEVudGl0eUNsYXNzIEV4dGVuZGVkR0NEIEV4dGVuc2lvbiBFeHRlbnRFbGVtZW50RnVuY3Rpb24gRXh0ZW50TWFya2VycyBFeHRlbnRTaXplIEV4dGVybmFsQnVuZGxlIEV4dGVybmFsQ2FsbCBFeHRlcm5hbERhdGFDaGFyYWN0ZXJFbmNvZGluZyBFeHRlcm5hbEV2YWx1YXRlIEV4dGVybmFsRnVuY3Rpb24gRXh0ZXJuYWxGdW5jdGlvbk5hbWUgRXh0ZXJuYWxPYmplY3QgRXh0ZXJuYWxPcHRpb25zIEV4dGVybmFsU2Vzc2lvbk9iamVjdCBFeHRlcm5hbFNlc3Npb25zIEV4dGVybmFsVHlwZVNpZ25hdHVyZSBFeHRlcm5hbFZhbHVlIEV4dHJhY3QgRXh0cmFjdEFyY2hpdmUgRXh0cmFjdExheWVyIEV4dHJlbWVWYWx1ZURpc3RyaWJ1dGlvbicgK1xuICAgICAgJ0ZhY2VGb3JtIEZhY2VHcmlkcyBGYWNlR3JpZHNTdHlsZSBGYWNpYWxGZWF0dXJlcyBGYWN0b3IgRmFjdG9yQ29tcGxldGUgRmFjdG9yaWFsIEZhY3RvcmlhbDIgRmFjdG9yaWFsTW9tZW50IEZhY3RvcmlhbE1vbWVudEdlbmVyYXRpbmdGdW5jdGlvbiBGYWN0b3JpYWxQb3dlciBGYWN0b3JJbnRlZ2VyIEZhY3Rvckxpc3QgRmFjdG9yU3F1YXJlRnJlZSBGYWN0b3JTcXVhcmVGcmVlTGlzdCBGYWN0b3JUZXJtcyBGYWN0b3JUZXJtc0xpc3QgRmFpbCBGYWlsdXJlIEZhaWx1cmVBY3Rpb24gRmFpbHVyZURpc3RyaWJ1dGlvbiBGYWlsdXJlUSBGYWxzZSBGYXJleVNlcXVlbmNlIEZBUklNQVByb2Nlc3MgRmVhdHVyZURpc3RhbmNlIEZlYXR1cmVFeHRyYWN0IEZlYXR1cmVFeHRyYWN0aW9uIEZlYXR1cmVFeHRyYWN0b3IgRmVhdHVyZUV4dHJhY3RvckZ1bmN0aW9uIEZlYXR1cmVOYW1lcyBGZWF0dXJlTmVhcmVzdCBGZWF0dXJlU3BhY2VQbG90IEZlYXR1cmVTcGFjZVBsb3QzRCBGZWF0dXJlVHlwZXMgRkVEaXNhYmxlQ29uc29sZVByaW50UGFja2V0IEZlZWRiYWNrTGluZWFyaXplIEZlZWRiYWNrU2VjdG9yIEZlZWRiYWNrU2VjdG9yU3R5bGUgRmVlZGJhY2tUeXBlIEZFRW5hYmxlQ29uc29sZVByaW50UGFja2V0IEZldGFsR3Jvd3RoRGF0YSBGaWJvbmFjY2kgRmlib25vcmlhbCBGaWVsZENvbXBsZXRpb25GdW5jdGlvbiBGaWVsZEhpbnQgRmllbGRIaW50U3R5bGUgRmllbGRNYXNrZWQgRmllbGRTaXplIEZpbGUgRmlsZUJhc2VOYW1lIEZpbGVCeXRlQ291bnQgRmlsZUNvbnZlcnQgRmlsZURhdGUgRmlsZUV4aXN0c1EgRmlsZUV4dGVuc2lvbiBGaWxlRm9ybWF0IEZpbGVIYW5kbGVyIEZpbGVIYXNoIEZpbGVJbmZvcm1hdGlvbiBGaWxlTmFtZSBGaWxlTmFtZURlcHRoIEZpbGVOYW1lRGlhbG9nU2V0dGluZ3MgRmlsZU5hbWVEcm9wIEZpbGVOYW1lRm9ybXMgRmlsZU5hbWVKb2luIEZpbGVOYW1lcyBGaWxlTmFtZVNldHRlciBGaWxlTmFtZVNwbGl0IEZpbGVOYW1lVGFrZSBGaWxlUHJpbnQgRmlsZVNpemUgRmlsZVN5c3RlbU1hcCBGaWxlU3lzdGVtU2NhbiBGaWxlVGVtcGxhdGUgRmlsZVRlbXBsYXRlQXBwbHkgRmlsZVR5cGUgRmlsbGVkQ3VydmUgRmlsbGVkQ3VydmVCb3ggRmlsbGVkQ3VydmVCb3hPcHRpb25zIEZpbGxpbmcgRmlsbGluZ1N0eWxlIEZpbGxpbmdUcmFuc2Zvcm0gRmlsdGVyZWRFbnRpdHlDbGFzcyBGaWx0ZXJSdWxlcyBGaW5hbmNpYWxCb25kIEZpbmFuY2lhbERhdGEgRmluYW5jaWFsRGVyaXZhdGl2ZSBGaW5hbmNpYWxJbmRpY2F0b3IgRmluZCBGaW5kQW5vbWFsaWVzIEZpbmRBcmdNYXggRmluZEFyZ01pbiBGaW5kQ2hhbm5lbHMgRmluZENsaXF1ZSBGaW5kQ2x1c3RlcnMgRmluZENvb2tpZXMgRmluZEN1cnZlUGF0aCBGaW5kQ3ljbGUgRmluZERldmljZXMgRmluZERpc3RyaWJ1dGlvbiBGaW5kRGlzdHJpYnV0aW9uUGFyYW1ldGVycyBGaW5kRGl2aXNpb25zIEZpbmRFZGdlQ292ZXIgRmluZEVkZ2VDdXQgRmluZEVkZ2VJbmRlcGVuZGVudFBhdGhzIEZpbmRFcXVhdGlvbmFsUHJvb2YgRmluZEV1bGVyaWFuQ3ljbGUgRmluZEV4dGVybmFsRXZhbHVhdG9ycyBGaW5kRmFjZXMgRmluZEZpbGUgRmluZEZpdCBGaW5kRm9ybXVsYSBGaW5kRnVuZGFtZW50YWxDeWNsZXMgRmluZEdlbmVyYXRpbmdGdW5jdGlvbiBGaW5kR2VvTG9jYXRpb24gRmluZEdlb21ldHJpY0NvbmplY3R1cmVzIEZpbmRHZW9tZXRyaWNUcmFuc2Zvcm0gRmluZEdyYXBoQ29tbXVuaXRpZXMgRmluZEdyYXBoSXNvbW9ycGhpc20gRmluZEdyYXBoUGFydGl0aW9uIEZpbmRIYW1pbHRvbmlhbkN5Y2xlIEZpbmRIYW1pbHRvbmlhblBhdGggRmluZEhpZGRlbk1hcmtvdlN0YXRlcyBGaW5kSW5kZXBlbmRlbnRFZGdlU2V0IEZpbmRJbmRlcGVuZGVudFZlcnRleFNldCBGaW5kSW5zdGFuY2UgRmluZEludGVnZXJOdWxsVmVjdG9yIEZpbmRLQ2xhbiBGaW5kS0NsaXF1ZSBGaW5kS0NsdWIgRmluZEtQbGV4IEZpbmRMaWJyYXJ5IEZpbmRMaW5lYXJSZWN1cnJlbmNlIEZpbmRMaXN0IEZpbmRNYXRjaGluZ0NvbG9yIEZpbmRNYXhpbXVtIEZpbmRNYXhpbXVtRmxvdyBGaW5kTWF4VmFsdWUgRmluZE1lc2hEZWZlY3RzIEZpbmRNaW5pbXVtIEZpbmRNaW5pbXVtQ29zdEZsb3cgRmluZE1pbmltdW1DdXQgRmluZE1pblZhbHVlIEZpbmRNb2xlY3VsZVN1YnN0cnVjdHVyZSBGaW5kUGF0aCBGaW5kUGVha3MgRmluZFBlcm11dGF0aW9uIEZpbmRQb3N0bWFuVG91ciBGaW5kUHJvY2Vzc1BhcmFtZXRlcnMgRmluZFJlcGVhdCBGaW5kUm9vdCBGaW5kU2VxdWVuY2VGdW5jdGlvbiBGaW5kU2V0dGluZ3MgRmluZFNob3J0ZXN0UGF0aCBGaW5kU2hvcnRlc3RUb3VyIEZpbmRTcGFubmluZ1RyZWUgRmluZFN5c3RlbU1vZGVsRXF1aWxpYnJpdW0gRmluZFRleHR1YWxBbnN3ZXIgRmluZFRocmVzaG9sZCBGaW5kVHJhbnNpZW50UmVwZWF0IEZpbmRWZXJ0ZXhDb3ZlciBGaW5kVmVydGV4Q3V0IEZpbmRWZXJ0ZXhJbmRlcGVuZGVudFBhdGhzIEZpbmUgRmluaXNoRHluYW1pYyBGaW5pdGVBYmVsaWFuR3JvdXBDb3VudCBGaW5pdGVHcm91cENvdW50IEZpbml0ZUdyb3VwRGF0YSBGaXJzdCBGaXJzdENhc2UgRmlyc3RQYXNzYWdlVGltZURpc3RyaWJ1dGlvbiBGaXJzdFBvc2l0aW9uIEZpc2NoZXJHcm91cEZpMjIgRmlzY2hlckdyb3VwRmkyMyBGaXNjaGVyR3JvdXBGaTI0UHJpbWUgRmlzaGVySHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb24gRmlzaGVyUmF0aW9UZXN0IEZpc2hlclpEaXN0cmlidXRpb24gRml0IEZpdEFsbCBGaXRSZWd1bGFyaXphdGlvbiBGaXR0ZWRNb2RlbCBGaXhlZE9yZGVyIEZpeGVkUG9pbnQgRml4ZWRQb2ludExpc3QgRmxhc2hTZWxlY3Rpb24gRmxhdCBGbGF0dGVuIEZsYXR0ZW5BdCBGbGF0dGVuTGF5ZXIgRmxhdFRvcFdpbmRvdyBGbGlwVmlldyBGbG9vciBGbG93UG9seW5vbWlhbCBGbHVzaFByaW50T3V0cHV0UGFja2V0IEZvbGQgRm9sZExpc3QgRm9sZFBhaXIgRm9sZFBhaXJMaXN0IEZvbGxvd1JlZGlyZWN0cyBGb250IEZvbnRDb2xvciBGb250RmFtaWx5IEZvbnRGb3JtIEZvbnROYW1lIEZvbnRPcGFjaXR5IEZvbnRQb3N0U2NyaXB0TmFtZSBGb250UHJvcGVydGllcyBGb250UmVlbmNvZGluZyBGb250U2l6ZSBGb250U2xhbnQgRm9udFN1YnN0aXR1dGlvbnMgRm9udFRyYWNraW5nIEZvbnRWYXJpYXRpb25zIEZvbnRXZWlnaHQgRm9yIEZvckFsbCBGb3JtYXQgRm9ybWF0UnVsZXMgRm9ybWF0VHlwZSBGb3JtYXRUeXBlQXV0b0NvbnZlcnQgRm9ybWF0VmFsdWVzIEZvcm1Cb3ggRm9ybUJveE9wdGlvbnMgRm9ybUNvbnRyb2wgRm9ybUZ1bmN0aW9uIEZvcm1MYXlvdXRGdW5jdGlvbiBGb3JtT2JqZWN0IEZvcm1QYWdlIEZvcm1UaGVtZSBGb3JtdWxhRGF0YSBGb3JtdWxhTG9va3VwIEZvcnRyYW5Gb3JtIEZvcndhcmQgRm9yd2FyZEJhY2t3YXJkIEZvdXJpZXIgRm91cmllckNvZWZmaWNpZW50IEZvdXJpZXJDb3NDb2VmZmljaWVudCBGb3VyaWVyQ29zU2VyaWVzIEZvdXJpZXJDb3NUcmFuc2Zvcm0gRm91cmllckRDVCBGb3VyaWVyRENURmlsdGVyIEZvdXJpZXJEQ1RNYXRyaXggRm91cmllckRTVCBGb3VyaWVyRFNUTWF0cml4IEZvdXJpZXJNYXRyaXggRm91cmllclBhcmFtZXRlcnMgRm91cmllclNlcXVlbmNlVHJhbnNmb3JtIEZvdXJpZXJTZXJpZXMgRm91cmllclNpbkNvZWZmaWNpZW50IEZvdXJpZXJTaW5TZXJpZXMgRm91cmllclNpblRyYW5zZm9ybSBGb3VyaWVyVHJhbnNmb3JtIEZvdXJpZXJUcmlnU2VyaWVzIEZyYWN0aW9uYWxCcm93bmlhbk1vdGlvblByb2Nlc3MgRnJhY3Rpb25hbEdhdXNzaWFuTm9pc2VQcm9jZXNzIEZyYWN0aW9uYWxQYXJ0IEZyYWN0aW9uQm94IEZyYWN0aW9uQm94T3B0aW9ucyBGcmFjdGlvbkxpbmUgRnJhbWUgRnJhbWVCb3ggRnJhbWVCb3hPcHRpb25zIEZyYW1lZCBGcmFtZUluc2V0IEZyYW1lTGFiZWwgRnJhbWVsZXNzIEZyYW1lTWFyZ2lucyBGcmFtZVJhdGUgRnJhbWVTdHlsZSBGcmFtZVRpY2tzIEZyYW1lVGlja3NTdHlsZSBGUmF0aW9EaXN0cmlidXRpb24gRnJlY2hldERpc3RyaWJ1dGlvbiBGcmVlUSBGcmVuZXRTZXJyZXRTeXN0ZW0gRnJlcXVlbmN5U2FtcGxpbmdGaWx0ZXJLZXJuZWwgRnJlc25lbEMgRnJlc25lbEYgRnJlc25lbEcgRnJlc25lbFMgRnJpZGF5IEZyb2Jlbml1c051bWJlciBGcm9iZW5pdXNTb2x2ZSBGcm9tQWJzb2x1dGVUaW1lIEZyb21DaGFyYWN0ZXJDb2RlIEZyb21Db2VmZmljaWVudFJ1bGVzIEZyb21Db250aW51ZWRGcmFjdGlvbiBGcm9tRGF0ZSBGcm9tRGlnaXRzIEZyb21ETVMgRnJvbUVudGl0eSBGcm9tSnVsaWFuRGF0ZSBGcm9tTGV0dGVyTnVtYmVyIEZyb21Qb2xhckNvb3JkaW5hdGVzIEZyb21Sb21hbk51bWVyYWwgRnJvbVNwaGVyaWNhbENvb3JkaW5hdGVzIEZyb21Vbml4VGltZSBGcm9udCBGcm9udEVuZER5bmFtaWNFeHByZXNzaW9uIEZyb250RW5kRXZlbnRBY3Rpb25zIEZyb250RW5kRXhlY3V0ZSBGcm9udEVuZE9iamVjdCBGcm9udEVuZFJlc291cmNlIEZyb250RW5kUmVzb3VyY2VTdHJpbmcgRnJvbnRFbmRTdGFja1NpemUgRnJvbnRFbmRUb2tlbiBGcm9udEVuZFRva2VuRXhlY3V0ZSBGcm9udEVuZFZhbHVlQ2FjaGUgRnJvbnRFbmRWZXJzaW9uIEZyb250RmFjZUNvbG9yIEZyb250RmFjZU9wYWNpdHkgRnVsbCBGdWxsQXhlcyBGdWxsRGVmaW5pdGlvbiBGdWxsRm9ybSBGdWxsR3JhcGhpY3MgRnVsbEluZm9ybWF0aW9uT3V0cHV0UmVndWxhdG9yIEZ1bGxPcHRpb25zIEZ1bGxSZWdpb24gRnVsbFNpbXBsaWZ5IEZ1bmN0aW9uIEZ1bmN0aW9uQ29tcGlsZSBGdW5jdGlvbkNvbXBpbGVFeHBvcnQgRnVuY3Rpb25Db21waWxlRXhwb3J0Qnl0ZUFycmF5IEZ1bmN0aW9uQ29tcGlsZUV4cG9ydExpYnJhcnkgRnVuY3Rpb25Db21waWxlRXhwb3J0U3RyaW5nIEZ1bmN0aW9uRG9tYWluIEZ1bmN0aW9uRXhwYW5kIEZ1bmN0aW9uSW50ZXJwb2xhdGlvbiBGdW5jdGlvblBlcmlvZCBGdW5jdGlvblJhbmdlIEZ1bmN0aW9uU3BhY2UgRnVzc2VsbFZlc2VseUltcG9ydGFuY2UnICtcbiAgICAgICdHYWJvckZpbHRlciBHYWJvck1hdHJpeCBHYWJvcldhdmVsZXQgR2Fpbk1hcmdpbnMgR2FpblBoYXNlTWFyZ2lucyBHYWxheHlEYXRhIEdhbGxlcnlWaWV3IEdhbW1hIEdhbW1hRGlzdHJpYnV0aW9uIEdhbW1hUmVndWxhcml6ZWQgR2FwUGVuYWx0eSBHQVJDSFByb2Nlc3MgR2F0ZWRSZWN1cnJlbnRMYXllciBHYXRoZXIgR2F0aGVyQnkgR2F1Z2VGYWNlRWxlbWVudEZ1bmN0aW9uIEdhdWdlRmFjZVN0eWxlIEdhdWdlRnJhbWVFbGVtZW50RnVuY3Rpb24gR2F1Z2VGcmFtZVNpemUgR2F1Z2VGcmFtZVN0eWxlIEdhdWdlTGFiZWxzIEdhdWdlTWFya2VycyBHYXVnZVN0eWxlIEdhdXNzaWFuRmlsdGVyIEdhdXNzaWFuSW50ZWdlcnMgR2F1c3NpYW5NYXRyaXggR2F1c3NpYW5PcnRob2dvbmFsTWF0cml4RGlzdHJpYnV0aW9uIEdhdXNzaWFuU3ltcGxlY3RpY01hdHJpeERpc3RyaWJ1dGlvbiBHYXVzc2lhblVuaXRhcnlNYXRyaXhEaXN0cmlidXRpb24gR2F1c3NpYW5XaW5kb3cgR0NEIEdlZ2VuYmF1ZXJDIEdlbmVyYWwgR2VuZXJhbGl6ZWRMaW5lYXJNb2RlbEZpdCBHZW5lcmF0ZUFzeW1tZXRyaWNLZXlQYWlyIEdlbmVyYXRlQ29uZGl0aW9ucyBHZW5lcmF0ZWRDZWxsIEdlbmVyYXRlZERvY3VtZW50QmluZGluZyBHZW5lcmF0ZURlcml2ZWRLZXkgR2VuZXJhdGVEaWdpdGFsU2lnbmF0dXJlIEdlbmVyYXRlRG9jdW1lbnQgR2VuZXJhdGVkUGFyYW1ldGVycyBHZW5lcmF0ZWRRdWFudGl0eU1hZ25pdHVkZXMgR2VuZXJhdGVIVFRQUmVzcG9uc2UgR2VuZXJhdGVTZWN1cmVkQXV0aGVudGljYXRpb25LZXkgR2VuZXJhdGVTeW1tZXRyaWNLZXkgR2VuZXJhdGluZ0Z1bmN0aW9uIEdlbmVyYXRvckRlc2NyaXB0aW9uIEdlbmVyYXRvckhpc3RvcnlMZW5ndGggR2VuZXJhdG9yT3V0cHV0VHlwZSBHZW5lcmljIEdlbmVyaWNDeWxpbmRyaWNhbERlY29tcG9zaXRpb24gR2Vub21lRGF0YSBHZW5vbWVMb29rdXAgR2VvQW50aXBvZGUgR2VvQXJlYSBHZW9BcnJheVNpemUgR2VvQmFja2dyb3VuZCBHZW9Cb3VuZGluZ0JveCBHZW9Cb3VuZHMgR2VvQm91bmRzUmVnaW9uIEdlb0J1YmJsZUNoYXJ0IEdlb0NlbnRlciBHZW9DaXJjbGUgR2VvZGVzaWNDbG9zaW5nIEdlb2Rlc2ljRGlsYXRpb24gR2VvZGVzaWNFcm9zaW9uIEdlb2Rlc2ljT3BlbmluZyBHZW9EZXN0aW5hdGlvbiBHZW9kZXN5RGF0YSBHZW9EaXJlY3Rpb24gR2VvRGlzayBHZW9EaXNwbGFjZW1lbnQgR2VvRGlzdGFuY2UgR2VvRGlzdGFuY2VMaXN0IEdlb0VsZXZhdGlvbkRhdGEgR2VvRW50aXRpZXMgR2VvR3JhcGhpY3MgR2VvZ3Jhdml0eU1vZGVsRGF0YSBHZW9HcmlkRGlyZWN0aW9uRGlmZmVyZW5jZSBHZW9HcmlkTGluZXMgR2VvR3JpZExpbmVzU3R5bGUgR2VvR3JpZFBvc2l0aW9uIEdlb0dyaWRSYW5nZSBHZW9HcmlkUmFuZ2VQYWRkaW5nIEdlb0dyaWRVbml0QXJlYSBHZW9HcmlkVW5pdERpc3RhbmNlIEdlb0dyaWRWZWN0b3IgR2VvR3JvdXAgR2VvSGVtaXNwaGVyZSBHZW9IZW1pc3BoZXJlQm91bmRhcnkgR2VvSGlzdG9ncmFtIEdlb0lkZW50aWZ5IEdlb0ltYWdlIEdlb0xhYmVscyBHZW9MZW5ndGggR2VvTGlzdFBsb3QgR2VvTG9jYXRpb24gR2VvbG9naWNhbFBlcmlvZERhdGEgR2VvbWFnbmV0aWNNb2RlbERhdGEgR2VvTWFya2VyIEdlb21ldHJpY0Fzc2VydGlvbiBHZW9tZXRyaWNCcm93bmlhbk1vdGlvblByb2Nlc3MgR2VvbWV0cmljRGlzdHJpYnV0aW9uIEdlb21ldHJpY01lYW4gR2VvbWV0cmljTWVhbkZpbHRlciBHZW9tZXRyaWNTY2VuZSBHZW9tZXRyaWNUcmFuc2Zvcm1hdGlvbiBHZW9tZXRyaWNUcmFuc2Zvcm1hdGlvbjNEQm94IEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3hPcHRpb25zIEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uQm94IEdlb21ldHJpY1RyYW5zZm9ybWF0aW9uQm94T3B0aW9ucyBHZW9Nb2RlbCBHZW9OZWFyZXN0IEdlb1BhdGggR2VvUG9zaXRpb24gR2VvUG9zaXRpb25FTlUgR2VvUG9zaXRpb25YWVogR2VvUHJvamVjdGlvbiBHZW9Qcm9qZWN0aW9uRGF0YSBHZW9SYW5nZSBHZW9SYW5nZVBhZGRpbmcgR2VvUmVnaW9uVmFsdWVQbG90IEdlb1Jlc29sdXRpb24gR2VvU2NhbGVCYXIgR2VvU2VydmVyIEdlb1Ntb290aEhpc3RvZ3JhbSBHZW9TdHJlYW1QbG90IEdlb1N0eWxpbmcgR2VvU3R5bGluZ0ltYWdlRnVuY3Rpb24gR2VvVmFyaWFudCBHZW9WZWN0b3IgR2VvVmVjdG9yRU5VIEdlb1ZlY3RvclBsb3QgR2VvVmVjdG9yWFlaIEdlb1Zpc2libGVSZWdpb24gR2VvVmlzaWJsZVJlZ2lvbkJvdW5kYXJ5IEdlb1dpdGhpblEgR2VvWm9vbUxldmVsIEdlc3R1cmVIYW5kbGVyIEdlc3R1cmVIYW5kbGVyVGFnIEdldCBHZXRCb3VuZGluZ0JveFNpemVQYWNrZXQgR2V0Q29udGV4dCBHZXRFbnZpcm9ubWVudCBHZXRGaWxlTmFtZSBHZXRGcm9udEVuZE9wdGlvbnNEYXRhUGFja2V0IEdldExpbmVicmVha0luZm9ybWF0aW9uUGFja2V0IEdldE1lbnVzUGFja2V0IEdldFBhZ2VCcmVha0luZm9ybWF0aW9uUGFja2V0IEdsYWlzaGVyIEdsb2JhbENsdXN0ZXJpbmdDb2VmZmljaWVudCBHbG9iYWxQcmVmZXJlbmNlcyBHbG9iYWxTZXNzaW9uIEdsb3cgR29sZGVuQW5nbGUgR29sZGVuUmF0aW8gR29tcGVydHpNYWtlaGFtRGlzdHJpYnV0aW9uIEdvb2RtYW5LcnVza2FsR2FtbWEgR29vZG1hbktydXNrYWxHYW1tYVRlc3QgR290byBHcmFkIEdyYWRpZW50IEdyYWRpZW50RmlsdGVyIEdyYWRpZW50T3JpZW50YXRpb25GaWx0ZXIgR3JhbW1hckFwcGx5IEdyYW1tYXJSdWxlcyBHcmFtbWFyVG9rZW4gR3JhcGggR3JhcGgzRCBHcmFwaEFzc29ydGF0aXZpdHkgR3JhcGhBdXRvbW9ycGhpc21Hcm91cCBHcmFwaENlbnRlciBHcmFwaENvbXBsZW1lbnQgR3JhcGhEYXRhIEdyYXBoRGVuc2l0eSBHcmFwaERpYW1ldGVyIEdyYXBoRGlmZmVyZW5jZSBHcmFwaERpc2pvaW50VW5pb24gR3JhcGhEaXN0YW5jZSBHcmFwaERpc3RhbmNlTWF0cml4IEdyYXBoRWxlbWVudERhdGEgR3JhcGhFbWJlZGRpbmcgR3JhcGhIaWdobGlnaHQgR3JhcGhIaWdobGlnaHRTdHlsZSBHcmFwaEh1YiBHcmFwaGljcyBHcmFwaGljczNEIEdyYXBoaWNzM0RCb3ggR3JhcGhpY3MzREJveE9wdGlvbnMgR3JhcGhpY3NBcnJheSBHcmFwaGljc0Jhc2VsaW5lIEdyYXBoaWNzQm94IEdyYXBoaWNzQm94T3B0aW9ucyBHcmFwaGljc0NvbG9yIEdyYXBoaWNzQ29sdW1uIEdyYXBoaWNzQ29tcGxleCBHcmFwaGljc0NvbXBsZXgzREJveCBHcmFwaGljc0NvbXBsZXgzREJveE9wdGlvbnMgR3JhcGhpY3NDb21wbGV4Qm94IEdyYXBoaWNzQ29tcGxleEJveE9wdGlvbnMgR3JhcGhpY3NDb250ZW50cyBHcmFwaGljc0RhdGEgR3JhcGhpY3NHcmlkIEdyYXBoaWNzR3JpZEJveCBHcmFwaGljc0dyb3VwIEdyYXBoaWNzR3JvdXAzREJveCBHcmFwaGljc0dyb3VwM0RCb3hPcHRpb25zIEdyYXBoaWNzR3JvdXBCb3ggR3JhcGhpY3NHcm91cEJveE9wdGlvbnMgR3JhcGhpY3NHcm91cGluZyBHcmFwaGljc0hpZ2hsaWdodENvbG9yIEdyYXBoaWNzUm93IEdyYXBoaWNzU3BhY2luZyBHcmFwaGljc1N0eWxlIEdyYXBoSW50ZXJzZWN0aW9uIEdyYXBoTGF5b3V0IEdyYXBoTGlua0VmZmljaWVuY3kgR3JhcGhQZXJpcGhlcnkgR3JhcGhQbG90IEdyYXBoUGxvdDNEIEdyYXBoUG93ZXIgR3JhcGhQcm9wZXJ0eURpc3RyaWJ1dGlvbiBHcmFwaFEgR3JhcGhSYWRpdXMgR3JhcGhSZWNpcHJvY2l0eSBHcmFwaFJvb3QgR3JhcGhTdHlsZSBHcmFwaFVuaW9uIEdyYXkgR3JheUxldmVsIEdyZWF0ZXIgR3JlYXRlckVxdWFsIEdyZWF0ZXJFcXVhbExlc3MgR3JlYXRlckVxdWFsVGhhbiBHcmVhdGVyRnVsbEVxdWFsIEdyZWF0ZXJHcmVhdGVyIEdyZWF0ZXJMZXNzIEdyZWF0ZXJTbGFudEVxdWFsIEdyZWF0ZXJUaGFuIEdyZWF0ZXJUaWxkZSBHcmVlbiBHcmVlbkZ1bmN0aW9uIEdyaWQgR3JpZEJhc2VsaW5lIEdyaWRCb3ggR3JpZEJveEFsaWdubWVudCBHcmlkQm94QmFja2dyb3VuZCBHcmlkQm94RGl2aWRlcnMgR3JpZEJveEZyYW1lIEdyaWRCb3hJdGVtU2l6ZSBHcmlkQm94SXRlbVN0eWxlIEdyaWRCb3hPcHRpb25zIEdyaWRCb3hTcGFjaW5ncyBHcmlkQ3JlYXRpb25TZXR0aW5ncyBHcmlkRGVmYXVsdEVsZW1lbnQgR3JpZEVsZW1lbnRTdHlsZU9wdGlvbnMgR3JpZEZyYW1lIEdyaWRGcmFtZU1hcmdpbnMgR3JpZEdyYXBoIEdyaWRMaW5lcyBHcmlkTGluZXNTdHlsZSBHcm9lYm5lckJhc2lzIEdyb3VwQWN0aW9uQmFzZSBHcm91cEJ5IEdyb3VwQ2VudHJhbGl6ZXIgR3JvdXBFbGVtZW50RnJvbVdvcmQgR3JvdXBFbGVtZW50UG9zaXRpb24gR3JvdXBFbGVtZW50USBHcm91cEVsZW1lbnRzIEdyb3VwRWxlbWVudFRvV29yZCBHcm91cEdlbmVyYXRvcnMgR3JvdXBpbmdzIEdyb3VwTXVsdGlwbGljYXRpb25UYWJsZSBHcm91cE9yYml0cyBHcm91cE9yZGVyIEdyb3VwUGFnZUJyZWFrV2l0aGluIEdyb3VwU2V0d2lzZVN0YWJpbGl6ZXIgR3JvdXBTdGFiaWxpemVyIEdyb3VwU3RhYmlsaXplckNoYWluIEdyb3VwVG9nZXRoZXJHcm91cGluZyBHcm91cFRvZ2V0aGVyTmVzdGVkR3JvdXBpbmcgR3Jvd0N1dENvbXBvbmVudHMgR3VkZXJtYW5uaWFuIEd1aWRlZEZpbHRlciBHdW1iZWxEaXN0cmlidXRpb24nICtcbiAgICAgICdIYWFyV2F2ZWxldCBIYWRhbWFyZE1hdHJpeCBIYWxmTGluZSBIYWxmTm9ybWFsRGlzdHJpYnV0aW9uIEhhbGZQbGFuZSBIYWxmU3BhY2UgSGFtaWx0b25pYW5HcmFwaFEgSGFtbWluZ0Rpc3RhbmNlIEhhbW1pbmdXaW5kb3cgSGFuZGxlckZ1bmN0aW9ucyBIYW5kbGVyRnVuY3Rpb25zS2V5cyBIYW5rZWxIMSBIYW5rZWxIMiBIYW5rZWxNYXRyaXggSGFua2VsVHJhbnNmb3JtIEhhbm5Qb2lzc29uV2luZG93IEhhbm5XaW5kb3cgSGFyYWRhTm9ydG9uR3JvdXBITiBIYXJhcnlHcmFwaCBIYXJtb25pY01lYW4gSGFybW9uaWNNZWFuRmlsdGVyIEhhcm1vbmljTnVtYmVyIEhhc2ggSGF2ZXJzaW5lIEhhemFyZEZ1bmN0aW9uIEhlYWQgSGVhZENvbXBvc2UgSGVhZGVyTGluZXMgSGVhZHMgSGVhdmlzaWRlTGFtYmRhIEhlYXZpc2lkZVBpIEhlYXZpc2lkZVRoZXRhIEhlbGRHcm91cEhlIEhlbGRQYXJ0IEhlbHBCcm93c2VyTG9va3VwIEhlbHBCcm93c2VyTm90ZWJvb2sgSGVscEJyb3dzZXJTZXR0aW5ncyBIZXJlIEhlcm1pdGVEZWNvbXBvc2l0aW9uIEhlcm1pdGVIIEhlcm1pdGlhbk1hdHJpeFEgSGVzc2VuYmVyZ0RlY29tcG9zaXRpb24gSGVzc2lhbiBIZXhhZGVjaW1hbENoYXJhY3RlciBIZXhhaGVkcm9uIEhleGFoZWRyb25Cb3ggSGV4YWhlZHJvbkJveE9wdGlvbnMgSGlkZGVuTWFya292UHJvY2VzcyBIaWRkZW5TdXJmYWNlIEhpZ2hsaWdodGVkIEhpZ2hsaWdodEdyYXBoIEhpZ2hsaWdodEltYWdlIEhpZ2hsaWdodE1lc2ggSGlnaHBhc3NGaWx0ZXIgSGlnbWFuU2ltc0dyb3VwSFMgSGlsYmVydEN1cnZlIEhpbGJlcnRGaWx0ZXIgSGlsYmVydE1hdHJpeCBIaXN0b2dyYW0gSGlzdG9ncmFtM0QgSGlzdG9ncmFtRGlzdHJpYnV0aW9uIEhpc3RvZ3JhbUxpc3QgSGlzdG9ncmFtVHJhbnNmb3JtIEhpc3RvZ3JhbVRyYW5zZm9ybUludGVycG9sYXRpb24gSGlzdG9yaWNhbFBlcmlvZERhdGEgSGl0TWlzc1RyYW5zZm9ybSBISVRTQ2VudHJhbGl0eSBIam9ydGhEaXN0cmlidXRpb24gSG9kZ2VEdWFsIEhvZWZmZGluZ0QgSG9lZmZkaW5nRFRlc3QgSG9sZCBIb2xkQWxsIEhvbGRBbGxDb21wbGV0ZSBIb2xkQ29tcGxldGUgSG9sZEZpcnN0IEhvbGRGb3JtIEhvbGRQYXR0ZXJuIEhvbGRSZXN0IEhvbGlkYXlDYWxlbmRhciBIb21lRGlyZWN0b3J5IEhvbWVQYWdlIEhvcml6b250YWwgSG9yaXpvbnRhbEZvcm0gSG9yaXpvbnRhbEdhdWdlIEhvcml6b250YWxTY3JvbGxQb3NpdGlvbiBIb3JuZXJGb3JtIEhvc3RMb29rdXAgSG90ZWxsaW5nVFNxdWFyZURpc3RyaWJ1dGlvbiBIb3l0RGlzdHJpYnV0aW9uIEhUTUxTYXZlIEhUVFBFcnJvclJlc3BvbnNlIEhUVFBSZWRpcmVjdCBIVFRQUmVxdWVzdCBIVFRQUmVxdWVzdERhdGEgSFRUUFJlc3BvbnNlIEh1ZSBIdW1hbkdyb3d0aERhdGEgSHVtcERvd25IdW1wIEh1bXBFcXVhbCBIdXJ3aXR6TGVyY2hQaGkgSHVyd2l0elpldGEgSHlwZXJib2xpY0Rpc3RyaWJ1dGlvbiBIeXBlcmN1YmVHcmFwaCBIeXBlcmV4cG9uZW50aWFsRGlzdHJpYnV0aW9uIEh5cGVyZmFjdG9yaWFsIEh5cGVyZ2VvbWV0cmljMEYxIEh5cGVyZ2VvbWV0cmljMEYxUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWMxRjEgSHlwZXJnZW9tZXRyaWMxRjFSZWd1bGFyaXplZCBIeXBlcmdlb21ldHJpYzJGMSBIeXBlcmdlb21ldHJpYzJGMVJlZ3VsYXJpemVkIEh5cGVyZ2VvbWV0cmljRGlzdHJpYnV0aW9uIEh5cGVyZ2VvbWV0cmljUEZRIEh5cGVyZ2VvbWV0cmljUEZRUmVndWxhcml6ZWQgSHlwZXJnZW9tZXRyaWNVIEh5cGVybGluayBIeXBlcmxpbmtDcmVhdGlvblNldHRpbmdzIEh5cGVycGxhbmUgSHlwaGVuYXRpb24gSHlwaGVuYXRpb25PcHRpb25zIEh5cG9leHBvbmVudGlhbERpc3RyaWJ1dGlvbiBIeXBvdGhlc2lzVGVzdERhdGEnICtcbiAgICAgICdJIEljb25EYXRhIEljb25pemUgSWNvbml6ZWRPYmplY3QgSWNvblJ1bGVzIEljb3NhaGVkcm9uIElkZW50aXR5IElkZW50aXR5TWF0cml4IElmIElnbm9yZUNhc2UgSWdub3JlRGlhY3JpdGljcyBJZ25vcmVQdW5jdHVhdGlvbiBJZ25vcmVTcGVsbENoZWNrIElnbm9yaW5nSW5hY3RpdmUgSW0gSW1hZ2UgSW1hZ2UzRCBJbWFnZTNEUHJvamVjdGlvbiBJbWFnZTNEU2xpY2VzIEltYWdlQWNjdW11bGF0ZSBJbWFnZUFkZCBJbWFnZUFkanVzdCBJbWFnZUFsaWduIEltYWdlQXBwbHkgSW1hZ2VBcHBseUluZGV4ZWQgSW1hZ2VBc3BlY3RSYXRpbyBJbWFnZUFzc2VtYmxlIEltYWdlQXVnbWVudGF0aW9uTGF5ZXIgSW1hZ2VCb3VuZGluZ0JveGVzIEltYWdlQ2FjaGUgSW1hZ2VDYWNoZVZhbGlkIEltYWdlQ2FwdHVyZSBJbWFnZUNhcHR1cmVGdW5jdGlvbiBJbWFnZUNhc2VzIEltYWdlQ2hhbm5lbHMgSW1hZ2VDbGlwIEltYWdlQ29sbGFnZSBJbWFnZUNvbG9yU3BhY2UgSW1hZ2VDb21wb3NlIEltYWdlQ29udGFpbnNRIEltYWdlQ29udGVudHMgSW1hZ2VDb252b2x2ZSBJbWFnZUNvb2NjdXJyZW5jZSBJbWFnZUNvcm5lcnMgSW1hZ2VDb3JyZWxhdGUgSW1hZ2VDb3JyZXNwb25kaW5nUG9pbnRzIEltYWdlQ3JvcCBJbWFnZURhdGEgSW1hZ2VEZWNvbnZvbHZlIEltYWdlRGVtb3NhaWMgSW1hZ2VEaWZmZXJlbmNlIEltYWdlRGltZW5zaW9ucyBJbWFnZURpc3BsYWNlbWVudHMgSW1hZ2VEaXN0YW5jZSBJbWFnZUVmZmVjdCBJbWFnZUV4cG9zdXJlQ29tYmluZSBJbWFnZUZlYXR1cmVUcmFjayBJbWFnZUZpbGVBcHBseSBJbWFnZUZpbGVGaWx0ZXIgSW1hZ2VGaWxlU2NhbiBJbWFnZUZpbHRlciBJbWFnZUZvY3VzQ29tYmluZSBJbWFnZUZvcmVzdGluZ0NvbXBvbmVudHMgSW1hZ2VGb3JtYXR0aW5nV2lkdGggSW1hZ2VGb3J3YXJkVHJhbnNmb3JtYXRpb24gSW1hZ2VHcmFwaGljcyBJbWFnZUhpc3RvZ3JhbSBJbWFnZUlkZW50aWZ5IEltYWdlSW5zdGFuY2VRIEltYWdlS2V5cG9pbnRzIEltYWdlTGV2ZWxzIEltYWdlTGluZXMgSW1hZ2VNYXJnaW5zIEltYWdlTWFya2VyIEltYWdlTWFya2VycyBJbWFnZU1lYXN1cmVtZW50cyBJbWFnZU1lc2ggSW1hZ2VNdWx0aXBseSBJbWFnZU9mZnNldCBJbWFnZVBhZCBJbWFnZVBhZGRpbmcgSW1hZ2VQYXJ0aXRpb24gSW1hZ2VQZXJpb2RvZ3JhbSBJbWFnZVBlcnNwZWN0aXZlVHJhbnNmb3JtYXRpb24gSW1hZ2VQb3NpdGlvbiBJbWFnZVByZXZpZXdGdW5jdGlvbiBJbWFnZVB5cmFtaWQgSW1hZ2VQeXJhbWlkQXBwbHkgSW1hZ2VRIEltYWdlUmFuZ2VDYWNoZSBJbWFnZVJlY29sb3IgSW1hZ2VSZWZsZWN0IEltYWdlUmVnaW9uIEltYWdlUmVzaXplIEltYWdlUmVzb2x1dGlvbiBJbWFnZVJlc3R5bGUgSW1hZ2VSb3RhdGUgSW1hZ2VSb3RhdGVkIEltYWdlU2FsaWVuY3lGaWx0ZXIgSW1hZ2VTY2FsZWQgSW1hZ2VTY2FuIEltYWdlU2l6ZSBJbWFnZVNpemVBY3Rpb24gSW1hZ2VTaXplQ2FjaGUgSW1hZ2VTaXplTXVsdGlwbGllcnMgSW1hZ2VTaXplUmF3IEltYWdlU3VidHJhY3QgSW1hZ2VUYWtlIEltYWdlVHJhbnNmb3JtYXRpb24gSW1hZ2VUcmltIEltYWdlVHlwZSBJbWFnZVZhbHVlIEltYWdlVmFsdWVQb3NpdGlvbnMgSW1hZ2luZ0RldmljZSBJbXBsaWNpdFJlZ2lvbiBJbXBsaWVzIEltcG9ydCBJbXBvcnRBdXRvUmVwbGFjZW1lbnRzIEltcG9ydEJ5dGVBcnJheSBJbXBvcnRPcHRpb25zIEltcG9ydFN0cmluZyBJbXByb3ZlbWVudEltcG9ydGFuY2UgSW4gSW5hY3RpdmF0ZSBJbmFjdGl2ZSBJbmNpZGVuY2VHcmFwaCBJbmNpZGVuY2VMaXN0IEluY2lkZW5jZU1hdHJpeCBJbmNsdWRlQXJvbWF0aWNCb25kcyBJbmNsdWRlQ29uc3RhbnRCYXNpcyBJbmNsdWRlRGVmaW5pdGlvbnMgSW5jbHVkZURpcmVjdG9yaWVzIEluY2x1ZGVGaWxlRXh0ZW5zaW9uIEluY2x1ZGVHZW5lcmF0b3JUYXNrcyBJbmNsdWRlSHlkcm9nZW5zIEluY2x1ZGVJbmZsZWN0aW9ucyBJbmNsdWRlTWV0YUluZm9ybWF0aW9uIEluY2x1ZGVQb2RzIEluY2x1ZGVRdWFudGl0aWVzIEluY2x1ZGVSZWxhdGVkVGFibGVzIEluY2x1ZGVTaW5ndWxhclRlcm0gSW5jbHVkZVdpbmRvd1RpbWVzIEluY3JlbWVudCBJbmRlZmluaXRlTWF0cml4USBJbmRlbnQgSW5kZW50aW5nTmV3bGluZVNwYWNpbmdzIEluZGVudE1heEZyYWN0aW9uIEluZGVwZW5kZW5jZVRlc3QgSW5kZXBlbmRlbnRFZGdlU2V0USBJbmRlcGVuZGVudFBoeXNpY2FsUXVhbnRpdHkgSW5kZXBlbmRlbnRVbml0IEluZGVwZW5kZW50VW5pdERpbWVuc2lvbiBJbmRlcGVuZGVudFZlcnRleFNldFEgSW5kZXRlcm1pbmF0ZSBJbmRldGVybWluYXRlVGhyZXNob2xkIEluZGV4Q3JlYXRpb25PcHRpb25zIEluZGV4ZWQgSW5kZXhHcmFwaCBJbmRleFRhZyBJbmVxdWFsaXR5IEluZXhhY3ROdW1iZXJRIEluZXhhY3ROdW1iZXJzIEluZmluaXRlTGluZSBJbmZpbml0ZVBsYW5lIEluZmluaXR5IEluZml4IEluZmxhdGlvbkFkanVzdCBJbmZsYXRpb25NZXRob2QgSW5mb3JtYXRpb24gSW5mb3JtYXRpb25EYXRhIEluZm9ybWF0aW9uRGF0YUdyaWQgSW5oZXJpdGVkIEluaGVyaXRTY29wZSBJbmhvbW9nZW5lb3VzUG9pc3NvblByb2Nlc3MgSW5pdGlhbEV2YWx1YXRpb25IaXN0b3J5IEluaXRpYWxpemF0aW9uIEluaXRpYWxpemF0aW9uQ2VsbCBJbml0aWFsaXphdGlvbkNlbGxFdmFsdWF0aW9uIEluaXRpYWxpemF0aW9uQ2VsbFdhcm5pbmcgSW5pdGlhbGl6YXRpb25PYmplY3RzIEluaXRpYWxpemF0aW9uVmFsdWUgSW5pdGlhbGl6ZSBJbml0aWFsU2VlZGluZyBJbmxpbmVDb3VudGVyQXNzaWdubWVudHMgSW5saW5lQ291bnRlckluY3JlbWVudHMgSW5saW5lUnVsZXMgSW5uZXIgSW5uZXJQb2x5Z29uIElubmVyUG9seWhlZHJvbiBJbnBhaW50IElucHV0IElucHV0QWxpYXNlcyBJbnB1dEFzc3VtcHRpb25zIElucHV0QXV0b1JlcGxhY2VtZW50cyBJbnB1dEZpZWxkIElucHV0RmllbGRCb3ggSW5wdXRGaWVsZEJveE9wdGlvbnMgSW5wdXRGb3JtIElucHV0R3JvdXBpbmcgSW5wdXROYW1lUGFja2V0IElucHV0Tm90ZWJvb2sgSW5wdXRQYWNrZXQgSW5wdXRTZXR0aW5ncyBJbnB1dFN0cmVhbSBJbnB1dFN0cmluZyBJbnB1dFN0cmluZ1BhY2tldCBJbnB1dFRvQm94Rm9ybVBhY2tldCBJbnNlcnQgSW5zZXJ0aW9uRnVuY3Rpb24gSW5zZXJ0aW9uUG9pbnRPYmplY3QgSW5zZXJ0TGluZWJyZWFrcyBJbnNlcnRSZXN1bHRzIEluc2V0IEluc2V0M0RCb3ggSW5zZXQzREJveE9wdGlvbnMgSW5zZXRCb3ggSW5zZXRCb3hPcHRpb25zIEluc3BoZXJlIEluc3RhbGwgSW5zdGFsbFNlcnZpY2UgSW5zdGFuY2VOb3JtYWxpemF0aW9uTGF5ZXIgSW5TdHJpbmcgSW50ZWdlciBJbnRlZ2VyRGlnaXRzIEludGVnZXJFeHBvbmVudCBJbnRlZ2VyTGVuZ3RoIEludGVnZXJOYW1lIEludGVnZXJQYXJ0IEludGVnZXJQYXJ0aXRpb25zIEludGVnZXJRIEludGVnZXJSZXZlcnNlIEludGVnZXJzIEludGVnZXJTdHJpbmcgSW50ZWdyYWwgSW50ZWdyYXRlIEludGVyYWN0aXZlIEludGVyYWN0aXZlVHJhZGluZ0NoYXJ0IEludGVybGFjZWQgSW50ZXJsZWF2aW5nIEludGVybmFsbHlCYWxhbmNlZERlY29tcG9zaXRpb24gSW50ZXJwb2xhdGluZ0Z1bmN0aW9uIEludGVycG9sYXRpbmdQb2x5bm9taWFsIEludGVycG9sYXRpb24gSW50ZXJwb2xhdGlvbk9yZGVyIEludGVycG9sYXRpb25Qb2ludHMgSW50ZXJwb2xhdGlvblByZWNpc2lvbiBJbnRlcnByZXRhdGlvbiBJbnRlcnByZXRhdGlvbkJveCBJbnRlcnByZXRhdGlvbkJveE9wdGlvbnMgSW50ZXJwcmV0YXRpb25GdW5jdGlvbiBJbnRlcnByZXRlciBJbnRlcnByZXRUZW1wbGF0ZSBJbnRlcnF1YXJ0aWxlUmFuZ2UgSW50ZXJydXB0IEludGVycnVwdFNldHRpbmdzIEludGVyc2VjdGluZ1EgSW50ZXJzZWN0aW9uIEludGVydmFsIEludGVydmFsSW50ZXJzZWN0aW9uIEludGVydmFsTWFya2VycyBJbnRlcnZhbE1hcmtlcnNTdHlsZSBJbnRlcnZhbE1lbWJlclEgSW50ZXJ2YWxTbGlkZXIgSW50ZXJ2YWxVbmlvbiBJbnRvIEludmVyc2UgSW52ZXJzZUJldGFSZWd1bGFyaXplZCBJbnZlcnNlQ0RGIEludmVyc2VDaGlTcXVhcmVEaXN0cmlidXRpb24gSW52ZXJzZUNvbnRpbnVvdXNXYXZlbGV0VHJhbnNmb3JtIEludmVyc2VEaXN0YW5jZVRyYW5zZm9ybSBJbnZlcnNlRWxsaXB0aWNOb21lUSBJbnZlcnNlRXJmIEludmVyc2VFcmZjIEludmVyc2VGb3VyaWVyIEludmVyc2VGb3VyaWVyQ29zVHJhbnNmb3JtIEludmVyc2VGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJTaW5UcmFuc2Zvcm0gSW52ZXJzZUZvdXJpZXJUcmFuc2Zvcm0gSW52ZXJzZUZ1bmN0aW9uIEludmVyc2VGdW5jdGlvbnMgSW52ZXJzZUdhbW1hRGlzdHJpYnV0aW9uIEludmVyc2VHYW1tYVJlZ3VsYXJpemVkIEludmVyc2VHYXVzc2lhbkRpc3RyaWJ1dGlvbiBJbnZlcnNlR3VkZXJtYW5uaWFuIEludmVyc2VIYW5rZWxUcmFuc2Zvcm0gSW52ZXJzZUhhdmVyc2luZSBJbnZlcnNlSW1hZ2VQeXJhbWlkIEludmVyc2VKYWNvYmlDRCBJbnZlcnNlSmFjb2JpQ04gSW52ZXJzZUphY29iaUNTIEludmVyc2VKYWNvYmlEQyBJbnZlcnNlSmFjb2JpRE4gSW52ZXJzZUphY29iaURTIEludmVyc2VKYWNvYmlOQyBJbnZlcnNlSmFjb2JpTkQgSW52ZXJzZUphY29iaU5TIEludmVyc2VKYWNvYmlTQyBJbnZlcnNlSmFjb2JpU0QgSW52ZXJzZUphY29iaVNOIEludmVyc2VMYXBsYWNlVHJhbnNmb3JtIEludmVyc2VNZWxsaW5UcmFuc2Zvcm0gSW52ZXJzZVBlcm11dGF0aW9uIEludmVyc2VSYWRvbiBJbnZlcnNlUmFkb25UcmFuc2Zvcm0gSW52ZXJzZVNlcmllcyBJbnZlcnNlU2hvcnRUaW1lRm91cmllciBJbnZlcnNlU3BlY3Ryb2dyYW0gSW52ZXJzZVN1cnZpdmFsRnVuY3Rpb24gSW52ZXJzZVRyYW5zZm9ybWVkUmVnaW9uIEludmVyc2VXYXZlbGV0VHJhbnNmb3JtIEludmVyc2VXZWllcnN0cmFzc1AgSW52ZXJzZVdpc2hhcnRNYXRyaXhEaXN0cmlidXRpb24gSW52ZXJzZVpUcmFuc2Zvcm0gSW52aXNpYmxlIEludmlzaWJsZUFwcGxpY2F0aW9uIEludmlzaWJsZVRpbWVzIElQQWRkcmVzcyBJcnJlZHVjaWJsZVBvbHlub21pYWxRIElzbGFuZERhdGEgSXNvbGF0aW5nSW50ZXJ2YWwgSXNvbW9ycGhpY0dyYXBoUSBJc290b3BlRGF0YSBJdGFsaWMgSXRlbSBJdGVtQXNwZWN0UmF0aW8gSXRlbUJveCBJdGVtQm94T3B0aW9ucyBJdGVtU2l6ZSBJdGVtU3R5bGUgSXRvUHJvY2VzcycgK1xuICAgICAgJ0phY2NhcmREaXNzaW1pbGFyaXR5IEphY29iaUFtcGxpdHVkZSBKYWNvYmlhbiBKYWNvYmlDRCBKYWNvYmlDTiBKYWNvYmlDUyBKYWNvYmlEQyBKYWNvYmlETiBKYWNvYmlEUyBKYWNvYmlOQyBKYWNvYmlORCBKYWNvYmlOUyBKYWNvYmlQIEphY29iaVNDIEphY29iaVNEIEphY29iaVNOIEphY29iaVN5bWJvbCBKYWNvYmlaZXRhIEphbmtvR3JvdXBKMSBKYW5rb0dyb3VwSjIgSmFua29Hcm91cEozIEphbmtvR3JvdXBKNCBKYXJxdWVCZXJhQUxNVGVzdCBKb2huc29uRGlzdHJpYnV0aW9uIEpvaW4gSm9pbkFjcm9zcyBKb2luZWQgSm9pbmVkQ3VydmUgSm9pbmVkQ3VydmVCb3ggSm9pbmVkQ3VydmVCb3hPcHRpb25zIEpvaW5Gb3JtIEpvcmRhbkRlY29tcG9zaXRpb24gSm9yZGFuTW9kZWxEZWNvbXBvc2l0aW9uIEp1bGlhbkRhdGUgSnVsaWFTZXRCb2V0dGNoZXIgSnVsaWFTZXRJdGVyYXRpb25Db3VudCBKdWxpYVNldFBsb3QgSnVsaWFTZXRQb2ludHMnICtcbiAgICAgICdLIEthZ2lDaGFydCBLYWlzZXJCZXNzZWxXaW5kb3cgS2Fpc2VyV2luZG93IEthbG1hbkVzdGltYXRvciBLYWxtYW5GaWx0ZXIgS2FyaHVuZW5Mb2V2ZURlY29tcG9zaXRpb24gS2FyeVRyZWUgS2F0ekNlbnRyYWxpdHkgS0NvcmVDb21wb25lbnRzIEtEaXN0cmlidXRpb24gS0VkZ2VDb25uZWN0ZWRDb21wb25lbnRzIEtFZGdlQ29ubmVjdGVkR3JhcGhRIEtlbHZpbkJlaSBLZWx2aW5CZXIgS2VsdmluS2VpIEtlbHZpbktlciBLZW5kYWxsVGF1IEtlbmRhbGxUYXVUZXN0IEtlcm5lbEV4ZWN1dGUgS2VybmVsRnVuY3Rpb24gS2VybmVsTWl4dHVyZURpc3RyaWJ1dGlvbiBLZXJuZWxzIEtldCBLZXkgS2V5Q29sbGlzaW9uRnVuY3Rpb24gS2V5Q29tcGxlbWVudCBLZXlEcm9wIEtleURyb3BGcm9tIEtleUV4aXN0c1EgS2V5RnJlZVEgS2V5SW50ZXJzZWN0aW9uIEtleU1hcCBLZXlNZW1iZXJRIEtleXBvaW50U3RyZW5ndGggS2V5cyBLZXlTZWxlY3QgS2V5U29ydCBLZXlTb3J0QnkgS2V5VGFrZSBLZXlVbmlvbiBLZXlWYWx1ZU1hcCBLZXlWYWx1ZVBhdHRlcm4gS2hpbmNoaW4gS2lsbFByb2Nlc3MgS2lyY2hob2ZmR3JhcGggS2lyY2hob2ZmTWF0cml4IEtsZWluSW52YXJpYW50SiBLbmFwc2Fja1NvbHZlIEtuaWdodFRvdXJHcmFwaCBLbm90RGF0YSBLbm93blVuaXRRIEtvY2hDdXJ2ZSBLb2xtb2dvcm92U21pcm5vdlRlc3QgS3JvbmVja2VyRGVsdGEgS3JvbmVja2VyTW9kZWxEZWNvbXBvc2l0aW9uIEtyb25lY2tlclByb2R1Y3QgS3JvbmVja2VyU3ltYm9sIEt1aXBlclRlc3QgS3VtYXJhc3dhbXlEaXN0cmlidXRpb24gS3VydG9zaXMgS3V3YWhhcmFGaWx0ZXIgS1ZlcnRleENvbm5lY3RlZENvbXBvbmVudHMgS1ZlcnRleENvbm5lY3RlZEdyYXBoUScgK1xuICAgICAgJ0xBQkNvbG9yIExhYmVsIExhYmVsZWQgTGFiZWxlZFNsaWRlciBMYWJlbGluZ0Z1bmN0aW9uIExhYmVsaW5nU2l6ZSBMYWJlbFN0eWxlIExhYmVsVmlzaWJpbGl0eSBMYWd1ZXJyZUwgTGFrZURhdGEgTGFtYmRhQ29tcG9uZW50cyBMYW1iZXJ0VyBMYW1pbmFEYXRhIExhbmN6b3NXaW5kb3cgTGFuZGF1RGlzdHJpYnV0aW9uIExhbmd1YWdlIExhbmd1YWdlQ2F0ZWdvcnkgTGFuZ3VhZ2VEYXRhIExhbmd1YWdlSWRlbnRpZnkgTGFuZ3VhZ2VPcHRpb25zIExhcGxhY2VEaXN0cmlidXRpb24gTGFwbGFjZVRyYW5zZm9ybSBMYXBsYWNpYW4gTGFwbGFjaWFuRmlsdGVyIExhcGxhY2lhbkdhdXNzaWFuRmlsdGVyIExhcmdlIExhcmdlciBMYXN0IExhdGl0dWRlIExhdGl0dWRlTG9uZ2l0dWRlIExhdHRpY2VEYXRhIExhdHRpY2VSZWR1Y2UgTGF1bmNoIExhdW5jaEtlcm5lbHMgTGF5ZXJlZEdyYXBoUGxvdCBMYXllclNpemVGdW5jdGlvbiBMYXlvdXRJbmZvcm1hdGlvbiBMQ0hDb2xvciBMQ00gTGVhZGVyU2l6ZSBMZWFmQ291bnQgTGVhcFllYXJRIExlYXJuRGlzdHJpYnV0aW9uIExlYXJuZWREaXN0cmlidXRpb24gTGVhcm5pbmdSYXRlIExlYXJuaW5nUmF0ZU11bHRpcGxpZXJzIExlYXN0U3F1YXJlcyBMZWFzdFNxdWFyZXNGaWx0ZXJLZXJuZWwgTGVmdCBMZWZ0QXJyb3cgTGVmdEFycm93QmFyIExlZnRBcnJvd1JpZ2h0QXJyb3cgTGVmdERvd25UZWVWZWN0b3IgTGVmdERvd25WZWN0b3IgTGVmdERvd25WZWN0b3JCYXIgTGVmdFJpZ2h0QXJyb3cgTGVmdFJpZ2h0VmVjdG9yIExlZnRUZWUgTGVmdFRlZUFycm93IExlZnRUZWVWZWN0b3IgTGVmdFRyaWFuZ2xlIExlZnRUcmlhbmdsZUJhciBMZWZ0VHJpYW5nbGVFcXVhbCBMZWZ0VXBEb3duVmVjdG9yIExlZnRVcFRlZVZlY3RvciBMZWZ0VXBWZWN0b3IgTGVmdFVwVmVjdG9yQmFyIExlZnRWZWN0b3IgTGVmdFZlY3RvckJhciBMZWdlbmRBcHBlYXJhbmNlIExlZ2VuZGVkIExlZ2VuZEZ1bmN0aW9uIExlZ2VuZExhYmVsIExlZ2VuZExheW91dCBMZWdlbmRNYXJnaW5zIExlZ2VuZE1hcmtlcnMgTGVnZW5kTWFya2VyU2l6ZSBMZWdlbmRyZVAgTGVnZW5kcmVRIExlZ2VuZHJlVHlwZSBMZW5ndGggTGVuZ3RoV2hpbGUgTGVyY2hQaGkgTGVzcyBMZXNzRXF1YWwgTGVzc0VxdWFsR3JlYXRlciBMZXNzRXF1YWxUaGFuIExlc3NGdWxsRXF1YWwgTGVzc0dyZWF0ZXIgTGVzc0xlc3MgTGVzc1NsYW50RXF1YWwgTGVzc1RoYW4gTGVzc1RpbGRlIExldHRlckNoYXJhY3RlciBMZXR0ZXJDb3VudHMgTGV0dGVyTnVtYmVyIExldHRlclEgTGV2ZWwgTGV2ZW5lVGVzdCBMZXZpQ2l2aXRhVGVuc29yIExldnlEaXN0cmlidXRpb24gTGV4aWNvZ3JhcGhpYyBMaWJyYXJ5RGF0YVR5cGUgTGlicmFyeUZ1bmN0aW9uIExpYnJhcnlGdW5jdGlvbkVycm9yIExpYnJhcnlGdW5jdGlvbkluZm9ybWF0aW9uIExpYnJhcnlGdW5jdGlvbkxvYWQgTGlicmFyeUZ1bmN0aW9uVW5sb2FkIExpYnJhcnlMb2FkIExpYnJhcnlVbmxvYWQgTGljZW5zZUlEIExpZnRpbmdGaWx0ZXJEYXRhIExpZnRpbmdXYXZlbGV0VHJhbnNmb3JtIExpZ2h0Qmx1ZSBMaWdodEJyb3duIExpZ2h0Q3lhbiBMaWdodGVyIExpZ2h0R3JheSBMaWdodEdyZWVuIExpZ2h0aW5nIExpZ2h0aW5nQW5nbGUgTGlnaHRNYWdlbnRhIExpZ2h0T3JhbmdlIExpZ2h0UGluayBMaWdodFB1cnBsZSBMaWdodFJlZCBMaWdodFNvdXJjZXMgTGlnaHRZZWxsb3cgTGlrZWxpaG9vZCBMaW1pdCBMaW1pdHNQb3NpdGlvbmluZyBMaW1pdHNQb3NpdGlvbmluZ1Rva2VucyBMaW5kbGV5RGlzdHJpYnV0aW9uIExpbmUgTGluZTNEQm94IExpbmUzREJveE9wdGlvbnMgTGluZWFyRmlsdGVyIExpbmVhckZyYWN0aW9uYWxPcHRpbWl6YXRpb24gTGluZWFyRnJhY3Rpb25hbFRyYW5zZm9ybSBMaW5lYXJHcmFkaWVudEltYWdlIExpbmVhcml6aW5nVHJhbnNmb3JtYXRpb25EYXRhIExpbmVhckxheWVyIExpbmVhck1vZGVsRml0IExpbmVhck9mZnNldEZ1bmN0aW9uIExpbmVhck9wdGltaXphdGlvbiBMaW5lYXJQcm9ncmFtbWluZyBMaW5lYXJSZWN1cnJlbmNlIExpbmVhclNvbHZlIExpbmVhclNvbHZlRnVuY3Rpb24gTGluZUJveCBMaW5lQm94T3B0aW9ucyBMaW5lQnJlYWsgTGluZWJyZWFrQWRqdXN0bWVudHMgTGluZUJyZWFrQ2hhcnQgTGluZWJyZWFrU2VtaWNvbG9uV2VpZ2h0aW5nIExpbmVCcmVha1dpdGhpbiBMaW5lQ29sb3IgTGluZUdyYXBoIExpbmVJbmRlbnQgTGluZUluZGVudE1heEZyYWN0aW9uIExpbmVJbnRlZ3JhbENvbnZvbHV0aW9uUGxvdCBMaW5lSW50ZWdyYWxDb252b2x1dGlvblNjYWxlIExpbmVMZWdlbmQgTGluZU9wYWNpdHkgTGluZVNwYWNpbmcgTGluZVdyYXBQYXJ0cyBMaW5rQWN0aXZhdGUgTGlua0Nsb3NlIExpbmtDb25uZWN0IExpbmtDb25uZWN0ZWRRIExpbmtDcmVhdGUgTGlua0Vycm9yIExpbmtGbHVzaCBMaW5rRnVuY3Rpb24gTGlua0hvc3QgTGlua0ludGVycnVwdCBMaW5rTGF1bmNoIExpbmtNb2RlIExpbmtPYmplY3QgTGlua09wZW4gTGlua09wdGlvbnMgTGlua1BhdHRlcm5zIExpbmtQcm90b2NvbCBMaW5rUmFua0NlbnRyYWxpdHkgTGlua1JlYWQgTGlua1JlYWRIZWxkIExpbmtSZWFkeVEgTGlua3MgTGlua1NlcnZpY2UgTGlua1dyaXRlIExpbmtXcml0ZUhlbGQgTGlvdXZpbGxlTGFtYmRhIExpc3QgTGlzdGFibGUgTGlzdEFuaW1hdGUgTGlzdENvbnRvdXJQbG90IExpc3RDb250b3VyUGxvdDNEIExpc3RDb252b2x2ZSBMaXN0Q29ycmVsYXRlIExpc3RDdXJ2ZVBhdGhQbG90IExpc3REZWNvbnZvbHZlIExpc3REZW5zaXR5UGxvdCBMaXN0RGVuc2l0eVBsb3QzRCBMaXN0ZW4gTGlzdEZvcm1hdCBMaXN0Rm91cmllclNlcXVlbmNlVHJhbnNmb3JtIExpc3RJbnRlcnBvbGF0aW9uIExpc3RMaW5lSW50ZWdyYWxDb252b2x1dGlvblBsb3QgTGlzdExpbmVQbG90IExpc3RMb2dMaW5lYXJQbG90IExpc3RMb2dMb2dQbG90IExpc3RMb2dQbG90IExpc3RQaWNrZXIgTGlzdFBpY2tlckJveCBMaXN0UGlja2VyQm94QmFja2dyb3VuZCBMaXN0UGlja2VyQm94T3B0aW9ucyBMaXN0UGxheSBMaXN0UGxvdCBMaXN0UGxvdDNEIExpc3RQb2ludFBsb3QzRCBMaXN0UG9sYXJQbG90IExpc3RRIExpc3RTbGljZUNvbnRvdXJQbG90M0QgTGlzdFNsaWNlRGVuc2l0eVBsb3QzRCBMaXN0U2xpY2VWZWN0b3JQbG90M0QgTGlzdFN0ZXBQbG90IExpc3RTdHJlYW1EZW5zaXR5UGxvdCBMaXN0U3RyZWFtUGxvdCBMaXN0U3VyZmFjZVBsb3QzRCBMaXN0VmVjdG9yRGVuc2l0eVBsb3QgTGlzdFZlY3RvclBsb3QgTGlzdFZlY3RvclBsb3QzRCBMaXN0WlRyYW5zZm9ybSBMaXRlcmFsIExpdGVyYWxTZWFyY2ggTG9jYWxBZGFwdGl2ZUJpbmFyaXplIExvY2FsQ2FjaGUgTG9jYWxDbHVzdGVyaW5nQ29lZmZpY2llbnQgTG9jYWxpemVEZWZpbml0aW9ucyBMb2NhbGl6ZVZhcmlhYmxlcyBMb2NhbE9iamVjdCBMb2NhbE9iamVjdHMgTG9jYWxSZXNwb25zZU5vcm1hbGl6YXRpb25MYXllciBMb2NhbFN1Ym1pdCBMb2NhbFN5bWJvbCBMb2NhbFRpbWUgTG9jYWxUaW1lWm9uZSBMb2NhdGlvbkVxdWl2YWxlbmNlVGVzdCBMb2NhdGlvblRlc3QgTG9jYXRvciBMb2NhdG9yQXV0b0NyZWF0ZSBMb2NhdG9yQm94IExvY2F0b3JCb3hPcHRpb25zIExvY2F0b3JDZW50ZXJpbmcgTG9jYXRvclBhbmUgTG9jYXRvclBhbmVCb3ggTG9jYXRvclBhbmVCb3hPcHRpb25zIExvY2F0b3JSZWdpb24gTG9ja2VkIExvZyBMb2cxMCBMb2cyIExvZ0Jhcm5lc0cgTG9nR2FtbWEgTG9nR2FtbWFEaXN0cmlidXRpb24gTG9naWNhbEV4cGFuZCBMb2dJbnRlZ3JhbCBMb2dpc3RpY0Rpc3RyaWJ1dGlvbiBMb2dpc3RpY1NpZ21vaWQgTG9naXRNb2RlbEZpdCBMb2dMaWtlbGlob29kIExvZ0xpbmVhclBsb3QgTG9nTG9naXN0aWNEaXN0cmlidXRpb24gTG9nTG9nUGxvdCBMb2dNdWx0aW5vcm1hbERpc3RyaWJ1dGlvbiBMb2dOb3JtYWxEaXN0cmlidXRpb24gTG9nUGxvdCBMb2dSYW5rVGVzdCBMb2dTZXJpZXNEaXN0cmlidXRpb24gTG9uZ0VxdWFsIExvbmdlc3QgTG9uZ2VzdENvbW1vblNlcXVlbmNlIExvbmdlc3RDb21tb25TZXF1ZW5jZVBvc2l0aW9ucyBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UgTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlUG9zaXRpb25zIExvbmdlc3RNYXRjaCBMb25nZXN0T3JkZXJlZFNlcXVlbmNlIExvbmdGb3JtIExvbmdpdHVkZSBMb25nTGVmdEFycm93IExvbmdMZWZ0UmlnaHRBcnJvdyBMb25nUmlnaHRBcnJvdyBMb25nU2hvcnRUZXJtTWVtb3J5TGF5ZXIgTG9va3VwIExvb3BiYWNrIExvb3BGcmVlR3JhcGhRIExvc3NGdW5jdGlvbiBMb3dlckNhc2VRIExvd2VyTGVmdEFycm93IExvd2VyUmlnaHRBcnJvdyBMb3dlclRyaWFuZ3VsYXJpemUgTG93ZXJUcmlhbmd1bGFyTWF0cml4USBMb3dwYXNzRmlsdGVyIExRRXN0aW1hdG9yR2FpbnMgTFFHUmVndWxhdG9yIExRT3V0cHV0UmVndWxhdG9yR2FpbnMgTFFSZWd1bGF0b3JHYWlucyBMVUJhY2tTdWJzdGl0dXRpb24gTHVjYXNMIEx1Y2Npb1NhbWlDb21wb25lbnRzIExVRGVjb21wb3NpdGlvbiBMdW5hckVjbGlwc2UgTFVWQ29sb3IgTHlhcHVub3ZTb2x2ZSBMeW9uc0dyb3VwTHknICtcbiAgICAgICdNYWNoaW5lSUQgTWFjaGluZU5hbWUgTWFjaGluZU51bWJlclEgTWFjaGluZVByZWNpc2lvbiBNYWNpbnRvc2hTeXN0ZW1QYWdlU2V0dXAgTWFnZW50YSBNYWduaWZpY2F0aW9uIE1hZ25pZnkgTWFpbEFkZHJlc3NWYWxpZGF0aW9uIE1haWxFeGVjdXRlIE1haWxGb2xkZXIgTWFpbEl0ZW0gTWFpbFJlY2VpdmVyRnVuY3Rpb24gTWFpbFJlc3BvbnNlRnVuY3Rpb24gTWFpbFNlYXJjaCBNYWlsU2VydmVyQ29ubmVjdCBNYWlsU2VydmVyQ29ubmVjdGlvbiBNYWlsU2V0dGluZ3MgTWFpblNvbHZlIE1haW50YWluRHluYW1pY0NhY2hlcyBNYWpvcml0eSBNYWtlQm94ZXMgTWFrZUV4cHJlc3Npb24gTWFrZVJ1bGVzIE1hbmFnZWRMaWJyYXJ5RXhwcmVzc2lvbklEIE1hbmFnZWRMaWJyYXJ5RXhwcmVzc2lvblEgTWFuZGVsYnJvdFNldEJvZXR0Y2hlciBNYW5kZWxicm90U2V0RGlzdGFuY2UgTWFuZGVsYnJvdFNldEl0ZXJhdGlvbkNvdW50IE1hbmRlbGJyb3RTZXRNZW1iZXJRIE1hbmRlbGJyb3RTZXRQbG90IE1hbmdvbGR0TGFtYmRhIE1hbmhhdHRhbkRpc3RhbmNlIE1hbmlwdWxhdGUgTWFuaXB1bGF0b3IgTWFubmVkU3BhY2VNaXNzaW9uRGF0YSBNYW5uV2hpdG5leVRlc3QgTWFudGlzc2FFeHBvbmVudCBNYW51YWwgTWFwIE1hcEFsbCBNYXBBdCBNYXBJbmRleGVkIE1BUHJvY2VzcyBNYXBUaHJlYWQgTWFyY2hlbmtvUGFzdHVyRGlzdHJpYnV0aW9uIE1hcmN1bVEgTWFyZGlhQ29tYmluZWRUZXN0IE1hcmRpYUt1cnRvc2lzVGVzdCBNYXJkaWFTa2V3bmVzc1Rlc3QgTWFyZ2luYWxEaXN0cmlidXRpb24gTWFya292UHJvY2Vzc1Byb3BlcnRpZXMgTWFza2luZyBNYXRjaGluZ0Rpc3NpbWlsYXJpdHkgTWF0Y2hMb2NhbE5hbWVRIE1hdGNoTG9jYWxOYW1lcyBNYXRjaFEgTWF0ZXJpYWwgTWF0aGVtYXRpY2FsRnVuY3Rpb25EYXRhIE1hdGhlbWF0aWNhTm90YXRpb24gTWF0aGlldUMgTWF0aGlldUNoYXJhY3RlcmlzdGljQSBNYXRoaWV1Q2hhcmFjdGVyaXN0aWNCIE1hdGhpZXVDaGFyYWN0ZXJpc3RpY0V4cG9uZW50IE1hdGhpZXVDUHJpbWUgTWF0aGlldUdyb3VwTTExIE1hdGhpZXVHcm91cE0xMiBNYXRoaWV1R3JvdXBNMjIgTWF0aGlldUdyb3VwTTIzIE1hdGhpZXVHcm91cE0yNCBNYXRoaWV1UyBNYXRoaWV1U1ByaW1lIE1hdGhNTEZvcm0gTWF0aE1MVGV4dCBNYXRyaWNlcyBNYXRyaXhFeHAgTWF0cml4Rm9ybSBNYXRyaXhGdW5jdGlvbiBNYXRyaXhMb2cgTWF0cml4Tm9ybWFsRGlzdHJpYnV0aW9uIE1hdHJpeFBsb3QgTWF0cml4UG93ZXIgTWF0cml4UHJvcGVydHlEaXN0cmlidXRpb24gTWF0cml4USBNYXRyaXhSYW5rIE1hdHJpeFREaXN0cmlidXRpb24gTWF4IE1heEJlbmQgTWF4Q2VsbE1lYXN1cmUgTWF4Q29sb3JEaXN0YW5jZSBNYXhEZXRlY3QgTWF4RHVyYXRpb24gTWF4RXh0cmFCYW5kd2lkdGhzIE1heEV4dHJhQ29uZGl0aW9ucyBNYXhGZWF0dXJlRGlzcGxhY2VtZW50IE1heEZlYXR1cmVzIE1heEZpbHRlciBNYXhpbWFsQnkgTWF4aW1pemUgTWF4SXRlbXMgTWF4SXRlcmF0aW9ucyBNYXhMaW1pdCBNYXhNZW1vcnlVc2VkIE1heE1peHR1cmVLZXJuZWxzIE1heE92ZXJsYXBGcmFjdGlvbiBNYXhQbG90UG9pbnRzIE1heFBvaW50cyBNYXhSZWN1cnNpb24gTWF4U3RhYmxlRGlzdHJpYnV0aW9uIE1heFN0ZXBGcmFjdGlvbiBNYXhTdGVwcyBNYXhTdGVwU2l6ZSBNYXhUcmFpbmluZ1JvdW5kcyBNYXhWYWx1ZSBNYXh3ZWxsRGlzdHJpYnV0aW9uIE1heFdvcmRHYXAgTWNMYXVnaGxpbkdyb3VwTWNMIE1lYW4gTWVhbkFic29sdXRlTG9zc0xheWVyIE1lYW5Bcm91bmQgTWVhbkNsdXN0ZXJpbmdDb2VmZmljaWVudCBNZWFuRGVncmVlQ29ubmVjdGl2aXR5IE1lYW5EZXZpYXRpb24gTWVhbkZpbHRlciBNZWFuR3JhcGhEaXN0YW5jZSBNZWFuTmVpZ2hib3JEZWdyZWUgTWVhblNoaWZ0IE1lYW5TaGlmdEZpbHRlciBNZWFuU3F1YXJlZExvc3NMYXllciBNZWRpYW4gTWVkaWFuRGV2aWF0aW9uIE1lZGlhbkZpbHRlciBNZWRpY2FsVGVzdERhdGEgTWVkaXVtIE1laWplckcgTWVpamVyR1JlZHVjZSBNZWl4bmVyRGlzdHJpYnV0aW9uIE1lbGxpbkNvbnZvbHZlIE1lbGxpblRyYW5zZm9ybSBNZW1iZXJRIE1lbW9yeUF2YWlsYWJsZSBNZW1vcnlDb25zdHJhaW5lZCBNZW1vcnlDb25zdHJhaW50IE1lbW9yeUluVXNlIE1lbmdlck1lc2ggTWVudSBNZW51QXBwZWFyYW5jZSBNZW51Q29tbWFuZEtleSBNZW51RXZhbHVhdG9yIE1lbnVJdGVtIE1lbnVMaXN0IE1lbnVQYWNrZXQgTWVudVNvcnRpbmdWYWx1ZSBNZW51U3R5bGUgTWVudVZpZXcgTWVyZ2UgTWVyZ2VEaWZmZXJlbmNlcyBNZXJnaW5nRnVuY3Rpb24gTWVyc2VubmVQcmltZUV4cG9uZW50IE1lcnNlbm5lUHJpbWVFeHBvbmVudFEgTWVzaCBNZXNoQ2VsbENlbnRyb2lkIE1lc2hDZWxsQ291bnQgTWVzaENlbGxIaWdobGlnaHQgTWVzaENlbGxJbmRleCBNZXNoQ2VsbExhYmVsIE1lc2hDZWxsTWFya2VyIE1lc2hDZWxsTWVhc3VyZSBNZXNoQ2VsbFF1YWxpdHkgTWVzaENlbGxzIE1lc2hDZWxsU2hhcGVGdW5jdGlvbiBNZXNoQ2VsbFN0eWxlIE1lc2hDb29yZGluYXRlcyBNZXNoRnVuY3Rpb25zIE1lc2hQcmltaXRpdmVzIE1lc2hRdWFsaXR5R29hbCBNZXNoUmFuZ2UgTWVzaFJlZmluZW1lbnRGdW5jdGlvbiBNZXNoUmVnaW9uIE1lc2hSZWdpb25RIE1lc2hTaGFkaW5nIE1lc2hTdHlsZSBNZXNzYWdlIE1lc3NhZ2VEaWFsb2cgTWVzc2FnZUxpc3QgTWVzc2FnZU5hbWUgTWVzc2FnZU9iamVjdCBNZXNzYWdlT3B0aW9ucyBNZXNzYWdlUGFja2V0IE1lc3NhZ2VzIE1lc3NhZ2VzTm90ZWJvb2sgTWV0YUNoYXJhY3RlcnMgTWV0YUluZm9ybWF0aW9uIE1ldGVvclNob3dlckRhdGEgTWV0aG9kIE1ldGhvZE9wdGlvbnMgTWV4aWNhbkhhdFdhdmVsZXQgTWV5ZXJXYXZlbGV0IE1pZHBvaW50IE1pbiBNaW5Db2xvckRpc3RhbmNlIE1pbkRldGVjdCBNaW5lcmFsRGF0YSBNaW5GaWx0ZXIgTWluaW1hbEJ5IE1pbmltYWxQb2x5bm9taWFsIE1pbmltYWxTdGF0ZVNwYWNlTW9kZWwgTWluaW1pemUgTWluaW11bVRpbWVJbmNyZW1lbnQgTWluSW50ZXJ2YWxTaXplIE1pbmtvd3NraVF1ZXN0aW9uTWFyayBNaW5MaW1pdCBNaW5NYXggTWlub3JQbGFuZXREYXRhIE1pbm9ycyBNaW5SZWN1cnNpb24gTWluU2l6ZSBNaW5TdGFibGVEaXN0cmlidXRpb24gTWludXMgTWludXNQbHVzIE1pblZhbHVlIE1pc3NpbmcgTWlzc2luZ0JlaGF2aW9yIE1pc3NpbmdEYXRhTWV0aG9kIE1pc3NpbmdEYXRhUnVsZXMgTWlzc2luZ1EgTWlzc2luZ1N0cmluZyBNaXNzaW5nU3R5bGUgTWlzc2luZ1ZhbHVlUGF0dGVybiBNaXR0YWdMZWZmbGVyRSBNaXhlZEZyYWN0aW9uUGFydHMgTWl4ZWRHcmFwaFEgTWl4ZWRNYWduaXR1ZGUgTWl4ZWRSYWRpeCBNaXhlZFJhZGl4UXVhbnRpdHkgTWl4ZWRVbml0IE1peHR1cmVEaXN0cmlidXRpb24gTW9kIE1vZGFsIE1vZGUgTW9kdWxhciBNb2R1bGFySW52ZXJzZSBNb2R1bGFyTGFtYmRhIE1vZHVsZSBNb2R1bHVzIE1vZWJpdXNNdSBNb2xlY3VsZSBNb2xlY3VsZUNvbnRhaW5zUSBNb2xlY3VsZUVxdWl2YWxlbnRRIE1vbGVjdWxlR3JhcGggTW9sZWN1bGVNb2RpZnkgTW9sZWN1bGVQYXR0ZXJuIE1vbGVjdWxlUGxvdCBNb2xlY3VsZVBsb3QzRCBNb2xlY3VsZVByb3BlcnR5IE1vbGVjdWxlUSBNb2xlY3VsZVZhbHVlIE1vbWVudCBNb21lbnRhcnkgTW9tZW50Q29udmVydCBNb21lbnRFdmFsdWF0ZSBNb21lbnRHZW5lcmF0aW5nRnVuY3Rpb24gTW9tZW50T2ZJbmVydGlhIE1vbmRheSBNb25pdG9yIE1vbm9taWFsTGlzdCBNb25vbWlhbE9yZGVyIE1vbnN0ZXJHcm91cE0gTW9vblBoYXNlIE1vb25Qb3NpdGlvbiBNb3JsZXRXYXZlbGV0IE1vcnBob2xvZ2ljYWxCaW5hcml6ZSBNb3JwaG9sb2dpY2FsQnJhbmNoUG9pbnRzIE1vcnBob2xvZ2ljYWxDb21wb25lbnRzIE1vcnBob2xvZ2ljYWxFdWxlck51bWJlciBNb3JwaG9sb2dpY2FsR3JhcGggTW9ycGhvbG9naWNhbFBlcmltZXRlciBNb3JwaG9sb2dpY2FsVHJhbnNmb3JtIE1vcnRhbGl0eURhdGEgTW9zdCBNb3VudGFpbkRhdGEgTW91c2VBbm5vdGF0aW9uIE1vdXNlQXBwZWFyYW5jZSBNb3VzZUFwcGVhcmFuY2VUYWcgTW91c2VCdXR0b25zIE1vdXNlb3ZlciBNb3VzZVBvaW50ZXJOb3RlIE1vdXNlUG9zaXRpb24gTW92aWVEYXRhIE1vdmluZ0F2ZXJhZ2UgTW92aW5nTWFwIE1vdmluZ01lZGlhbiBNb3lhbERpc3RyaWJ1dGlvbiBNdWx0aWNvbHVtbiBNdWx0aWVkZ2VTdHlsZSBNdWx0aWdyYXBoUSBNdWx0aWxhdW5jaFdhcm5pbmcgTXVsdGlMZXR0ZXJJdGFsaWNzIE11bHRpTGV0dGVyU3R5bGUgTXVsdGlsaW5lRnVuY3Rpb24gTXVsdGlub21pYWwgTXVsdGlub21pYWxEaXN0cmlidXRpb24gTXVsdGlub3JtYWxEaXN0cmlidXRpb24gTXVsdGlwbGljYXRpdmVPcmRlciBNdWx0aXBsaWNpdHkgTXVsdGlwbHlTaWRlcyBNdWx0aXNlbGVjdGlvbiBNdWx0aXZhcmlhdGVIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBNdWx0aXZhcmlhdGVQb2lzc29uRGlzdHJpYnV0aW9uIE11bHRpdmFyaWF0ZVREaXN0cmlidXRpb24nICtcbiAgICAgICdOIE5ha2FnYW1pRGlzdHJpYnV0aW9uIE5hbWVRIE5hbWVzIE5hbWVzcGFjZUJveCBOYW1lc3BhY2VCb3hPcHRpb25zIE5hbmQgTkFyZ01heCBOQXJnTWluIE5CZXJub3VsbGlCIE5Cb2R5U2ltdWxhdGlvbiBOQm9keVNpbXVsYXRpb25EYXRhIE5DYWNoZSBOREVpZ2Vuc3lzdGVtIE5ERWlnZW52YWx1ZXMgTkRTb2x2ZSBORFNvbHZlVmFsdWUgTmVhcmVzdCBOZWFyZXN0RnVuY3Rpb24gTmVhcmVzdE5laWdoYm9yR3JhcGggTmVhcmVzdFRvIE5lYnVsYURhdGEgTmVlZEN1cnJlbnRGcm9udEVuZFBhY2thZ2VQYWNrZXQgTmVlZEN1cnJlbnRGcm9udEVuZFN5bWJvbHNQYWNrZXQgTmVlZGxlbWFuV3Vuc2NoU2ltaWxhcml0eSBOZWVkcyBOZWdhdGl2ZSBOZWdhdGl2ZUJpbm9taWFsRGlzdHJpYnV0aW9uIE5lZ2F0aXZlRGVmaW5pdGVNYXRyaXhRIE5lZ2F0aXZlSW50ZWdlcnMgTmVnYXRpdmVNdWx0aW5vbWlhbERpc3RyaWJ1dGlvbiBOZWdhdGl2ZVJhdGlvbmFscyBOZWdhdGl2ZVJlYWxzIE5lZ2F0aXZlU2VtaWRlZmluaXRlTWF0cml4USBOZWlnaGJvcmhvb2REYXRhIE5laWdoYm9yaG9vZEdyYXBoIE5lc3QgTmVzdGVkR3JlYXRlckdyZWF0ZXIgTmVzdGVkTGVzc0xlc3MgTmVzdGVkU2NyaXB0UnVsZXMgTmVzdEdyYXBoIE5lc3RMaXN0IE5lc3RXaGlsZSBOZXN0V2hpbGVMaXN0IE5ldEFwcGVuZCBOZXRCaWRpcmVjdGlvbmFsT3BlcmF0b3IgTmV0Q2hhaW4gTmV0RGVjb2RlciBOZXREZWxldGUgTmV0RHJvcCBOZXRFbmNvZGVyIE5ldEV2YWx1YXRpb25Nb2RlIE5ldEV4dHJhY3QgTmV0RmxhdHRlbiBOZXRGb2xkT3BlcmF0b3IgTmV0R3JhcGggTmV0SW5mb3JtYXRpb24gTmV0SW5pdGlhbGl6ZSBOZXRJbnNlcnQgTmV0SW5zZXJ0U2hhcmVkQXJyYXlzIE5ldEpvaW4gTmV0TWFwT3BlcmF0b3IgTmV0TWFwVGhyZWFkT3BlcmF0b3IgTmV0TWVhc3VyZW1lbnRzIE5ldE1vZGVsIE5ldE5lc3RPcGVyYXRvciBOZXRQYWlyRW1iZWRkaW5nT3BlcmF0b3IgTmV0UG9ydCBOZXRQb3J0R3JhZGllbnQgTmV0UHJlcGVuZCBOZXRSZW5hbWUgTmV0UmVwbGFjZSBOZXRSZXBsYWNlUGFydCBOZXRTaGFyZWRBcnJheSBOZXRTdGF0ZU9iamVjdCBOZXRUYWtlIE5ldFRyYWluIE5ldFRyYWluUmVzdWx0c09iamVjdCBOZXR3b3JrUGFja2V0Q2FwdHVyZSBOZXR3b3JrUGFja2V0UmVjb3JkaW5nIE5ldHdvcmtQYWNrZXRSZWNvcmRpbmdEdXJpbmcgTmV0d29ya1BhY2tldFRyYWNlIE5ldW1hbm5WYWx1ZSBOZXZpbGxlVGhldGFDIE5ldmlsbGVUaGV0YUQgTmV2aWxsZVRoZXRhTiBOZXZpbGxlVGhldGFTIE5ld1ByaW1pdGl2ZVN0eWxlIE5FeHBlY3RhdGlvbiBOZXh0IE5leHRDZWxsIE5leHREYXRlIE5leHRQcmltZSBOZXh0U2NoZWR1bGVkVGFza1RpbWUgTkhvbGRBbGwgTkhvbGRGaXJzdCBOSG9sZFJlc3QgTmljaG9sc0dyaWRMaW5lcyBOaWNob2xzUGxvdCBOaWdodEhlbWlzcGhlcmUgTkludGVncmF0ZSBOTWF4aW1pemUgTk1heFZhbHVlIE5NaW5pbWl6ZSBOTWluVmFsdWUgTm9taW5hbFZhcmlhYmxlcyBOb25Bc3NvY2lhdGl2ZSBOb25jZW50cmFsQmV0YURpc3RyaWJ1dGlvbiBOb25jZW50cmFsQ2hpU3F1YXJlRGlzdHJpYnV0aW9uIE5vbmNlbnRyYWxGUmF0aW9EaXN0cmlidXRpb24gTm9uY2VudHJhbFN0dWRlbnRURGlzdHJpYnV0aW9uIE5vbkNvbW11dGF0aXZlTXVsdGlwbHkgTm9uQ29uc3RhbnRzIE5vbmRpbWVuc2lvbmFsaXphdGlvblRyYW5zZm9ybSBOb25lIE5vbmVUcnVlIE5vbmxpbmVhck1vZGVsRml0IE5vbmxpbmVhclN0YXRlU3BhY2VNb2RlbCBOb25sb2NhbE1lYW5zRmlsdGVyIE5vbk5lZ2F0aXZlIE5vbk5lZ2F0aXZlSW50ZWdlcnMgTm9uTmVnYXRpdmVSYXRpb25hbHMgTm9uTmVnYXRpdmVSZWFscyBOb25Qb3NpdGl2ZSBOb25Qb3NpdGl2ZUludGVnZXJzIE5vblBvc2l0aXZlUmF0aW9uYWxzIE5vblBvc2l0aXZlUmVhbHMgTm9yIE5vcmx1bmRCIE5vcm0gTm9ybWFsIE5vcm1hbERpc3RyaWJ1dGlvbiBOb3JtYWxHcm91cGluZyBOb3JtYWxpemF0aW9uTGF5ZXIgTm9ybWFsaXplIE5vcm1hbGl6ZWQgTm9ybWFsaXplZFNxdWFyZWRFdWNsaWRlYW5EaXN0YW5jZSBOb3JtYWxNYXRyaXhRIE5vcm1hbHNGdW5jdGlvbiBOb3JtRnVuY3Rpb24gTm90IE5vdENvbmdydWVudCBOb3RDdXBDYXAgTm90RG91YmxlVmVydGljYWxCYXIgTm90ZWJvb2sgTm90ZWJvb2tBcHBseSBOb3RlYm9va0F1dG9TYXZlIE5vdGVib29rQ2xvc2UgTm90ZWJvb2tDb252ZXJ0U2V0dGluZ3MgTm90ZWJvb2tDcmVhdGUgTm90ZWJvb2tDcmVhdGVSZXR1cm5PYmplY3QgTm90ZWJvb2tEZWZhdWx0IE5vdGVib29rRGVsZXRlIE5vdGVib29rRGlyZWN0b3J5IE5vdGVib29rRHluYW1pY0V4cHJlc3Npb24gTm90ZWJvb2tFdmFsdWF0ZSBOb3RlYm9va0V2ZW50QWN0aW9ucyBOb3RlYm9va0ZpbGVOYW1lIE5vdGVib29rRmluZCBOb3RlYm9va0ZpbmRSZXR1cm5PYmplY3QgTm90ZWJvb2tHZXQgTm90ZWJvb2tHZXRMYXlvdXRJbmZvcm1hdGlvblBhY2tldCBOb3RlYm9va0dldE1pc3NwZWxsaW5nc1BhY2tldCBOb3RlYm9va0ltcG9ydCBOb3RlYm9va0luZm9ybWF0aW9uIE5vdGVib29rSW50ZXJmYWNlT2JqZWN0IE5vdGVib29rTG9jYXRlIE5vdGVib29rT2JqZWN0IE5vdGVib29rT3BlbiBOb3RlYm9va09wZW5SZXR1cm5PYmplY3QgTm90ZWJvb2tQYXRoIE5vdGVib29rUHJpbnQgTm90ZWJvb2tQdXQgTm90ZWJvb2tQdXRSZXR1cm5PYmplY3QgTm90ZWJvb2tSZWFkIE5vdGVib29rUmVzZXRHZW5lcmF0ZWRDZWxscyBOb3RlYm9va3MgTm90ZWJvb2tTYXZlIE5vdGVib29rU2F2ZUFzIE5vdGVib29rU2VsZWN0aW9uIE5vdGVib29rU2V0dXBMYXlvdXRJbmZvcm1hdGlvblBhY2tldCBOb3RlYm9va3NNZW51IE5vdGVib29rVGVtcGxhdGUgTm90ZWJvb2tXcml0ZSBOb3RFbGVtZW50IE5vdEVxdWFsVGlsZGUgTm90RXhpc3RzIE5vdEdyZWF0ZXIgTm90R3JlYXRlckVxdWFsIE5vdEdyZWF0ZXJGdWxsRXF1YWwgTm90R3JlYXRlckdyZWF0ZXIgTm90R3JlYXRlckxlc3MgTm90R3JlYXRlclNsYW50RXF1YWwgTm90R3JlYXRlclRpbGRlIE5vdGhpbmcgTm90SHVtcERvd25IdW1wIE5vdEh1bXBFcXVhbCBOb3RpZmljYXRpb25GdW5jdGlvbiBOb3RMZWZ0VHJpYW5nbGUgTm90TGVmdFRyaWFuZ2xlQmFyIE5vdExlZnRUcmlhbmdsZUVxdWFsIE5vdExlc3MgTm90TGVzc0VxdWFsIE5vdExlc3NGdWxsRXF1YWwgTm90TGVzc0dyZWF0ZXIgTm90TGVzc0xlc3MgTm90TGVzc1NsYW50RXF1YWwgTm90TGVzc1RpbGRlIE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyIE5vdE5lc3RlZExlc3NMZXNzIE5vdFByZWNlZGVzIE5vdFByZWNlZGVzRXF1YWwgTm90UHJlY2VkZXNTbGFudEVxdWFsIE5vdFByZWNlZGVzVGlsZGUgTm90UmV2ZXJzZUVsZW1lbnQgTm90UmlnaHRUcmlhbmdsZSBOb3RSaWdodFRyaWFuZ2xlQmFyIE5vdFJpZ2h0VHJpYW5nbGVFcXVhbCBOb3RTcXVhcmVTdWJzZXQgTm90U3F1YXJlU3Vic2V0RXF1YWwgTm90U3F1YXJlU3VwZXJzZXQgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCBOb3RTdWJzZXQgTm90U3Vic2V0RXF1YWwgTm90U3VjY2VlZHMgTm90U3VjY2VlZHNFcXVhbCBOb3RTdWNjZWVkc1NsYW50RXF1YWwgTm90U3VjY2VlZHNUaWxkZSBOb3RTdXBlcnNldCBOb3RTdXBlcnNldEVxdWFsIE5vdFRpbGRlIE5vdFRpbGRlRXF1YWwgTm90VGlsZGVGdWxsRXF1YWwgTm90VGlsZGVUaWxkZSBOb3RWZXJ0aWNhbEJhciBOb3cgTm9XaGl0ZXNwYWNlIE5Qcm9iYWJpbGl0eSBOUHJvZHVjdCBOUHJvZHVjdEZhY3RvcnMgTlJvb3RzIE5Tb2x2ZSBOU3VtIE5TdW1UZXJtcyBOdWNsZWFyRXhwbG9zaW9uRGF0YSBOdWNsZWFyUmVhY3RvckRhdGEgTnVsbCBOdWxsUmVjb3JkcyBOdWxsU3BhY2UgTnVsbFdvcmRzIE51bWJlciBOdW1iZXJDb21wb3NlIE51bWJlckRlY29tcG9zZSBOdW1iZXJFeHBhbmQgTnVtYmVyRmllbGRDbGFzc051bWJlciBOdW1iZXJGaWVsZERpc2NyaW1pbmFudCBOdW1iZXJGaWVsZEZ1bmRhbWVudGFsVW5pdHMgTnVtYmVyRmllbGRJbnRlZ3JhbEJhc2lzIE51bWJlckZpZWxkTm9ybVJlcHJlc2VudGF0aXZlcyBOdW1iZXJGaWVsZFJlZ3VsYXRvciBOdW1iZXJGaWVsZFJvb3RzT2ZVbml0eSBOdW1iZXJGaWVsZFNpZ25hdHVyZSBOdW1iZXJGb3JtIE51bWJlckZvcm1hdCBOdW1iZXJMaW5lUGxvdCBOdW1iZXJNYXJrcyBOdW1iZXJNdWx0aXBsaWVyIE51bWJlclBhZGRpbmcgTnVtYmVyUG9pbnQgTnVtYmVyUSBOdW1iZXJTZXBhcmF0b3IgTnVtYmVyU2lnbnMgTnVtYmVyU3RyaW5nIE51bWVyYXRvciBOdW1lcmF0b3JEZW5vbWluYXRvciBOdW1lcmljYWxPcmRlciBOdW1lcmljYWxTb3J0IE51bWVyaWNBcnJheSBOdW1lcmljQXJyYXlRIE51bWVyaWNBcnJheVR5cGUgTnVtZXJpY0Z1bmN0aW9uIE51bWVyaWNRIE51dHRhbGxXaW5kb3cgTlZhbHVlcyBOeXF1aXN0R3JpZExpbmVzIE55cXVpc3RQbG90JyArXG4gICAgICAnTyBPYnNlcnZhYmlsaXR5R3JhbWlhbiBPYnNlcnZhYmlsaXR5TWF0cml4IE9ic2VydmFibGVEZWNvbXBvc2l0aW9uIE9ic2VydmFibGVNb2RlbFEgT2NlYW5EYXRhIE9jdGFoZWRyb24gT2RkUSBPZmYgT2Zmc2V0IE9MRURhdGEgT24gT05hbkdyb3VwT04gT25jZSBPbmVJZGVudGl0eSBPcGFjaXR5IE9wYWNpdHlGdW5jdGlvbiBPcGFjaXR5RnVuY3Rpb25TY2FsaW5nIE9wZW4gT3BlbkFwcGVuZCBPcGVuZXIgT3BlbmVyQm94IE9wZW5lckJveE9wdGlvbnMgT3BlbmVyVmlldyBPcGVuRnVuY3Rpb25JbnNwZWN0b3JQYWNrZXQgT3BlbmluZyBPcGVuUmVhZCBPcGVuU3BlY2lhbE9wdGlvbnMgT3BlblRlbXBvcmFyeSBPcGVuV3JpdGUgT3BlcmF0ZSBPcGVyYXRpbmdTeXN0ZW0gT3B0aW11bUZsb3dEYXRhIE9wdGlvbmFsIE9wdGlvbmFsRWxlbWVudCBPcHRpb25JbnNwZWN0b3JTZXR0aW5ncyBPcHRpb25RIE9wdGlvbnMgT3B0aW9uc1BhY2tldCBPcHRpb25zUGF0dGVybiBPcHRpb25WYWx1ZSBPcHRpb25WYWx1ZUJveCBPcHRpb25WYWx1ZUJveE9wdGlvbnMgT3IgT3JhbmdlIE9yZGVyIE9yZGVyRGlzdHJpYnV0aW9uIE9yZGVyZWRRIE9yZGVyaW5nIE9yZGVyaW5nQnkgT3JkZXJpbmdMYXllciBPcmRlcmxlc3MgT3JkZXJsZXNzUGF0dGVyblNlcXVlbmNlIE9ybnN0ZWluVWhsZW5iZWNrUHJvY2VzcyBPcnRob2dvbmFsaXplIE9ydGhvZ29uYWxNYXRyaXhRIE91dCBPdXRlciBPdXRlclBvbHlnb24gT3V0ZXJQb2x5aGVkcm9uIE91dHB1dEF1dG9PdmVyd3JpdGUgT3V0cHV0Q29udHJvbGxhYmlsaXR5TWF0cml4IE91dHB1dENvbnRyb2xsYWJsZU1vZGVsUSBPdXRwdXRGb3JtIE91dHB1dEZvcm1EYXRhIE91dHB1dEdyb3VwaW5nIE91dHB1dE1hdGhFZGl0RXhwcmVzc2lvbiBPdXRwdXROYW1lUGFja2V0IE91dHB1dFJlc3BvbnNlIE91dHB1dFNpemVMaW1pdCBPdXRwdXRTdHJlYW0gT3ZlciBPdmVyQmFyIE92ZXJEb3QgT3ZlcmZsb3cgT3ZlckhhdCBPdmVybGFwcyBPdmVybGF5IE92ZXJsYXlCb3ggT3ZlcmxheUJveE9wdGlvbnMgT3ZlcnNjcmlwdCBPdmVyc2NyaXB0Qm94IE92ZXJzY3JpcHRCb3hPcHRpb25zIE92ZXJUaWxkZSBPdmVyVmVjdG9yIE92ZXJ3cml0ZVRhcmdldCBPd2VuVCBPd25WYWx1ZXMnICtcbiAgICAgICdQYWNrYWdlIFBhY2tpbmdNZXRob2QgUGFkZGVkRm9ybSBQYWRkaW5nIFBhZGRpbmdMYXllciBQYWRkaW5nU2l6ZSBQYWRlQXBwcm94aW1hbnQgUGFkTGVmdCBQYWRSaWdodCBQYWdlQnJlYWtBYm92ZSBQYWdlQnJlYWtCZWxvdyBQYWdlQnJlYWtXaXRoaW4gUGFnZUZvb3RlckxpbmVzIFBhZ2VGb290ZXJzIFBhZ2VIZWFkZXJMaW5lcyBQYWdlSGVhZGVycyBQYWdlSGVpZ2h0IFBhZ2VSYW5rQ2VudHJhbGl0eSBQYWdlVGhlbWUgUGFnZVdpZHRoIFBhZ2luYXRpb24gUGFpcmVkQmFyQ2hhcnQgUGFpcmVkSGlzdG9ncmFtIFBhaXJlZFNtb290aEhpc3RvZ3JhbSBQYWlyZWRUVGVzdCBQYWlyZWRaVGVzdCBQYWxldHRlTm90ZWJvb2sgUGFsZXR0ZVBhdGggUGFsaW5kcm9tZVEgUGFuZSBQYW5lQm94IFBhbmVCb3hPcHRpb25zIFBhbmVsIFBhbmVsQm94IFBhbmVsQm94T3B0aW9ucyBQYW5lbGVkIFBhbmVTZWxlY3RvciBQYW5lU2VsZWN0b3JCb3ggUGFuZVNlbGVjdG9yQm94T3B0aW9ucyBQYXBlcldpZHRoIFBhcmFib2xpY0N5bGluZGVyRCBQYXJhZ3JhcGhJbmRlbnQgUGFyYWdyYXBoU3BhY2luZyBQYXJhbGxlbEFycmF5IFBhcmFsbGVsQ29tYmluZSBQYXJhbGxlbERvIFBhcmFsbGVsZXBpcGVkIFBhcmFsbGVsRXZhbHVhdGUgUGFyYWxsZWxpemF0aW9uIFBhcmFsbGVsaXplIFBhcmFsbGVsTWFwIFBhcmFsbGVsTmVlZHMgUGFyYWxsZWxvZ3JhbSBQYXJhbGxlbFByb2R1Y3QgUGFyYWxsZWxTdWJtaXQgUGFyYWxsZWxTdW0gUGFyYWxsZWxUYWJsZSBQYXJhbGxlbFRyeSBQYXJhbWV0ZXIgUGFyYW1ldGVyRXN0aW1hdG9yIFBhcmFtZXRlck1peHR1cmVEaXN0cmlidXRpb24gUGFyYW1ldGVyVmFyaWFibGVzIFBhcmFtZXRyaWNGdW5jdGlvbiBQYXJhbWV0cmljTkRTb2x2ZSBQYXJhbWV0cmljTkRTb2x2ZVZhbHVlIFBhcmFtZXRyaWNQbG90IFBhcmFtZXRyaWNQbG90M0QgUGFyYW1ldHJpY1JlZ2lvbiBQYXJlbnRCb3ggUGFyZW50Q2VsbCBQYXJlbnRDb25uZWN0IFBhcmVudERpcmVjdG9yeSBQYXJlbnRGb3JtIFBhcmVudGhlc2l6ZSBQYXJlbnRMaXN0IFBhcmVudE5vdGVib29rIFBhcmV0b0Rpc3RyaWJ1dGlvbiBQYXJldG9QaWNrYW5kc0Rpc3RyaWJ1dGlvbiBQYXJrRGF0YSBQYXJ0IFBhcnRCZWhhdmlvciBQYXJ0aWFsQ29ycmVsYXRpb25GdW5jdGlvbiBQYXJ0aWFsRCBQYXJ0aWNsZUFjY2VsZXJhdG9yRGF0YSBQYXJ0aWNsZURhdGEgUGFydGl0aW9uIFBhcnRpdGlvbkdyYW51bGFyaXR5IFBhcnRpdGlvbnNQIFBhcnRpdGlvbnNRIFBhcnRMYXllciBQYXJ0T2ZTcGVlY2ggUGFydFByb3RlY3Rpb24gUGFyemVuV2luZG93IFBhc2NhbERpc3RyaWJ1dGlvbiBQYXNzRXZlbnRzRG93biBQYXNzRXZlbnRzVXAgUGFzdGUgUGFzdGVBdXRvUXVvdGVDaGFyYWN0ZXJzIFBhc3RlQm94Rm9ybUlubGluZUNlbGxzIFBhc3RlQnV0dG9uIFBhdGggUGF0aEdyYXBoIFBhdGhHcmFwaFEgUGF0dGVybiBQYXR0ZXJuU2VxdWVuY2UgUGF0dGVyblRlc3QgUGF1bGlNYXRyaXggUGF1bFdhdmVsZXQgUGF1c2UgUGF1c2VkVGltZSBQREYgUGVha0RldGVjdCBQZWFub0N1cnZlIFBlYXJzb25DaGlTcXVhcmVUZXN0IFBlYXJzb25Db3JyZWxhdGlvblRlc3QgUGVhcnNvbkRpc3RyaWJ1dGlvbiBQZXJjZW50Rm9ybSBQZXJmZWN0TnVtYmVyIFBlcmZlY3ROdW1iZXJRIFBlcmZvcm1hbmNlR29hbCBQZXJpbWV0ZXIgUGVyaW9kaWNCb3VuZGFyeUNvbmRpdGlvbiBQZXJpb2RpY0ludGVycG9sYXRpb24gUGVyaW9kb2dyYW0gUGVyaW9kb2dyYW1BcnJheSBQZXJtYW5lbnQgUGVybWlzc2lvbnMgUGVybWlzc2lvbnNHcm91cCBQZXJtaXNzaW9uc0dyb3VwTWVtYmVyUSBQZXJtaXNzaW9uc0dyb3VwcyBQZXJtaXNzaW9uc0tleSBQZXJtaXNzaW9uc0tleXMgUGVybXV0YXRpb25DeWNsZXMgUGVybXV0YXRpb25DeWNsZXNRIFBlcm11dGF0aW9uR3JvdXAgUGVybXV0YXRpb25MZW5ndGggUGVybXV0YXRpb25MaXN0IFBlcm11dGF0aW9uTGlzdFEgUGVybXV0YXRpb25NYXggUGVybXV0YXRpb25NaW4gUGVybXV0YXRpb25PcmRlciBQZXJtdXRhdGlvblBvd2VyIFBlcm11dGF0aW9uUHJvZHVjdCBQZXJtdXRhdGlvblJlcGxhY2UgUGVybXV0YXRpb25zIFBlcm11dGF0aW9uU3VwcG9ydCBQZXJtdXRlIFBlcm9uYU1hbGlrRmlsdGVyIFBlcnBlbmRpY3VsYXIgUGVycGVuZGljdWxhckJpc2VjdG9yIFBlcnNpc3RlbmNlTG9jYXRpb24gUGVyc2lzdGVuY2VUaW1lIFBlcnNpc3RlbnRPYmplY3QgUGVyc2lzdGVudE9iamVjdHMgUGVyc2lzdGVudFZhbHVlIFBlcnNvbkRhdGEgUEVSVERpc3RyaWJ1dGlvbiBQZXRlcnNlbkdyYXBoIFBoYXNlTWFyZ2lucyBQaGFzZVJhbmdlIFBoeXNpY2FsU3lzdGVtRGF0YSBQaSBQaWNrIFBJRERhdGEgUElERGVyaXZhdGl2ZUZpbHRlciBQSURGZWVkZm9yd2FyZCBQSURUdW5lIFBpZWNld2lzZSBQaWVjZXdpc2VFeHBhbmQgUGllQ2hhcnQgUGllQ2hhcnQzRCBQaWxsYWlUcmFjZSBQaWxsYWlUcmFjZVRlc3QgUGluZ1RpbWUgUGluayBQaXRjaFJlY29nbml6ZSBQaXZvdGluZyBQaXhlbENvbnN0cmFpbmVkIFBpeGVsVmFsdWUgUGl4ZWxWYWx1ZVBvc2l0aW9ucyBQbGFjZWQgUGxhY2Vob2xkZXIgUGxhY2Vob2xkZXJSZXBsYWNlIFBsYWluIFBsYW5hckFuZ2xlIFBsYW5hckdyYXBoIFBsYW5hckdyYXBoUSBQbGFuY2tSYWRpYXRpb25MYXcgUGxhbmVDdXJ2ZURhdGEgUGxhbmV0YXJ5TW9vbkRhdGEgUGxhbmV0RGF0YSBQbGFudERhdGEgUGxheSBQbGF5UmFuZ2UgUGxvdCBQbG90M0QgUGxvdDNNYXRyaXggUGxvdERpdmlzaW9uIFBsb3RKb2luZWQgUGxvdExhYmVsIFBsb3RMYWJlbHMgUGxvdExheW91dCBQbG90TGVnZW5kcyBQbG90TWFya2VycyBQbG90UG9pbnRzIFBsb3RSYW5nZSBQbG90UmFuZ2VDbGlwcGluZyBQbG90UmFuZ2VDbGlwUGxhbmVzU3R5bGUgUGxvdFJhbmdlUGFkZGluZyBQbG90UmVnaW9uIFBsb3RTdHlsZSBQbG90VGhlbWUgUGx1cmFsaXplIFBsdXMgUGx1c01pbnVzIFBvY2hoYW1tZXIgUG9kU3RhdGVzIFBvZFdpZHRoIFBvaW50IFBvaW50M0RCb3ggUG9pbnQzREJveE9wdGlvbnMgUG9pbnRCb3ggUG9pbnRCb3hPcHRpb25zIFBvaW50RmlndXJlQ2hhcnQgUG9pbnRMZWdlbmQgUG9pbnRTaXplIFBvaXNzb25Db25zdWxEaXN0cmlidXRpb24gUG9pc3NvbkRpc3RyaWJ1dGlvbiBQb2lzc29uUHJvY2VzcyBQb2lzc29uV2luZG93IFBvbGFyQXhlcyBQb2xhckF4ZXNPcmlnaW4gUG9sYXJHcmlkTGluZXMgUG9sYXJQbG90IFBvbGFyVGlja3MgUG9sZVplcm9NYXJrZXJzIFBvbHlhQWVwcGxpRGlzdHJpYnV0aW9uIFBvbHlHYW1tYSBQb2x5Z29uIFBvbHlnb24zREJveCBQb2x5Z29uM0RCb3hPcHRpb25zIFBvbHlnb25hbE51bWJlciBQb2x5Z29uQW5nbGUgUG9seWdvbkJveCBQb2x5Z29uQm94T3B0aW9ucyBQb2x5Z29uQ29vcmRpbmF0ZXMgUG9seWdvbkRlY29tcG9zaXRpb24gUG9seWdvbkhvbGVTY2FsZSBQb2x5Z29uSW50ZXJzZWN0aW9ucyBQb2x5Z29uU2NhbGUgUG9seWhlZHJvbiBQb2x5aGVkcm9uQW5nbGUgUG9seWhlZHJvbkNvb3JkaW5hdGVzIFBvbHloZWRyb25EYXRhIFBvbHloZWRyb25EZWNvbXBvc2l0aW9uIFBvbHloZWRyb25HZW51cyBQb2x5TG9nIFBvbHlub21pYWxFeHRlbmRlZEdDRCBQb2x5bm9taWFsRm9ybSBQb2x5bm9taWFsR0NEIFBvbHlub21pYWxMQ00gUG9seW5vbWlhbE1vZCBQb2x5bm9taWFsUSBQb2x5bm9taWFsUXVvdGllbnQgUG9seW5vbWlhbFF1b3RpZW50UmVtYWluZGVyIFBvbHlub21pYWxSZWR1Y2UgUG9seW5vbWlhbFJlbWFpbmRlciBQb2x5bm9taWFscyBQb29saW5nTGF5ZXIgUG9wdXBNZW51IFBvcHVwTWVudUJveCBQb3B1cE1lbnVCb3hPcHRpb25zIFBvcHVwVmlldyBQb3B1cFdpbmRvdyBQb3NpdGlvbiBQb3NpdGlvbkluZGV4IFBvc2l0aXZlIFBvc2l0aXZlRGVmaW5pdGVNYXRyaXhRIFBvc2l0aXZlSW50ZWdlcnMgUG9zaXRpdmVSYXRpb25hbHMgUG9zaXRpdmVSZWFscyBQb3NpdGl2ZVNlbWlkZWZpbml0ZU1hdHJpeFEgUG9zc2libGVaZXJvUSBQb3N0Zml4IFBvc3RTY3JpcHQgUG93ZXIgUG93ZXJEaXN0cmlidXRpb24gUG93ZXJFeHBhbmQgUG93ZXJNb2QgUG93ZXJNb2RMaXN0IFBvd2VyUmFuZ2UgUG93ZXJTcGVjdHJhbERlbnNpdHkgUG93ZXJzUmVwcmVzZW50YXRpb25zIFBvd2VyU3ltbWV0cmljUG9seW5vbWlhbCBQcmVjZWRlbmNlIFByZWNlZGVuY2VGb3JtIFByZWNlZGVzIFByZWNlZGVzRXF1YWwgUHJlY2VkZXNTbGFudEVxdWFsIFByZWNlZGVzVGlsZGUgUHJlY2lzaW9uIFByZWNpc2lvbkdvYWwgUHJlRGVjcmVtZW50IFByZWRpY3QgUHJlZGljdGlvblJvb3QgUHJlZGljdG9yRnVuY3Rpb24gUHJlZGljdG9ySW5mb3JtYXRpb24gUHJlZGljdG9yTWVhc3VyZW1lbnRzIFByZWRpY3Rvck1lYXN1cmVtZW50c09iamVjdCBQcmVlbXB0UHJvdGVjdCBQcmVmZXJlbmNlc1BhdGggUHJlZml4IFByZUluY3JlbWVudCBQcmVwZW5kIFByZXBlbmRMYXllciBQcmVwZW5kVG8gUHJlcHJvY2Vzc2luZ1J1bGVzIFByZXNlcnZlQ29sb3IgUHJlc2VydmVJbWFnZU9wdGlvbnMgUHJldmlvdXMgUHJldmlvdXNDZWxsIFByZXZpb3VzRGF0ZSBQcmljZUdyYXBoRGlzdHJpYnV0aW9uIFByaW1hcnlQbGFjZWhvbGRlciBQcmltZSBQcmltZU51IFByaW1lT21lZ2EgUHJpbWVQaSBQcmltZVBvd2VyUSBQcmltZVEgUHJpbWVzIFByaW1lWmV0YVAgUHJpbWl0aXZlUG9seW5vbWlhbFEgUHJpbWl0aXZlUm9vdCBQcmltaXRpdmVSb290TGlzdCBQcmluY2lwYWxDb21wb25lbnRzIFByaW5jaXBhbFZhbHVlIFByaW50IFByaW50YWJsZUFTQ0lJUSBQcmludEFjdGlvbiBQcmludEZvcm0gUHJpbnRpbmdDb3BpZXMgUHJpbnRpbmdPcHRpb25zIFByaW50aW5nUGFnZVJhbmdlIFByaW50aW5nU3RhcnRpbmdQYWdlTnVtYmVyIFByaW50aW5nU3R5bGVFbnZpcm9ubWVudCBQcmludG91dDNEIFByaW50b3V0M0RQcmV2aWV3ZXIgUHJpbnRQcmVjaXNpb24gUHJpbnRUZW1wb3JhcnkgUHJpc20gUHJpc21Cb3ggUHJpc21Cb3hPcHRpb25zIFByaXZhdGVDZWxsT3B0aW9ucyBQcml2YXRlRXZhbHVhdGlvbk9wdGlvbnMgUHJpdmF0ZUZvbnRPcHRpb25zIFByaXZhdGVGcm9udEVuZE9wdGlvbnMgUHJpdmF0ZUtleSBQcml2YXRlTm90ZWJvb2tPcHRpb25zIFByaXZhdGVQYXRocyBQcm9iYWJpbGl0eSBQcm9iYWJpbGl0eURpc3RyaWJ1dGlvbiBQcm9iYWJpbGl0eVBsb3QgUHJvYmFiaWxpdHlQciBQcm9iYWJpbGl0eVNjYWxlUGxvdCBQcm9iaXRNb2RlbEZpdCBQcm9jZXNzQ29ubmVjdGlvbiBQcm9jZXNzRGlyZWN0b3J5IFByb2Nlc3NFbnZpcm9ubWVudCBQcm9jZXNzZXMgUHJvY2Vzc0VzdGltYXRvciBQcm9jZXNzSW5mb3JtYXRpb24gUHJvY2Vzc09iamVjdCBQcm9jZXNzUGFyYW1ldGVyQXNzdW1wdGlvbnMgUHJvY2Vzc1BhcmFtZXRlclEgUHJvY2Vzc1N0YXRlRG9tYWluIFByb2Nlc3NTdGF0dXMgUHJvY2Vzc1RpbWVEb21haW4gUHJvZHVjdCBQcm9kdWN0RGlzdHJpYnV0aW9uIFByb2R1Y3RMb2cgUHJvZ3Jlc3NJbmRpY2F0b3IgUHJvZ3Jlc3NJbmRpY2F0b3JCb3ggUHJvZ3Jlc3NJbmRpY2F0b3JCb3hPcHRpb25zIFByb2plY3Rpb24gUHJvbG9nIFByb21wdEZvcm0gUHJvb2ZPYmplY3QgUHJvcGVydGllcyBQcm9wZXJ0eSBQcm9wZXJ0eUxpc3QgUHJvcGVydHlWYWx1ZSBQcm9wb3J0aW9uIFByb3BvcnRpb25hbCBQcm90ZWN0IFByb3RlY3RlZCBQcm90ZWluRGF0YSBQcnVuaW5nIFBzZXVkb0ludmVyc2UgUHN5Y2hyb21ldHJpY1Byb3BlcnR5RGF0YSBQdWJsaWNLZXkgUHVibGlzaGVySUQgUHVsc2FyRGF0YSBQdW5jdHVhdGlvbkNoYXJhY3RlciBQdXJwbGUgUHV0IFB1dEFwcGVuZCBQeXJhbWlkIFB5cmFtaWRCb3ggUHlyYW1pZEJveE9wdGlvbnMnICtcbiAgICAgICdRQmlub21pYWwgUUZhY3RvcmlhbCBRR2FtbWEgUUh5cGVyZ2VvbWV0cmljUEZRIFFuRGlzcGVyc2lvbiBRUG9jaGhhbW1lciBRUG9seUdhbW1hIFFSRGVjb21wb3NpdGlvbiBRdWFkcmF0aWNJcnJhdGlvbmFsUSBRdWFkcmF0aWNPcHRpbWl6YXRpb24gUXVhbnRpbGUgUXVhbnRpbGVQbG90IFF1YW50aXR5IFF1YW50aXR5QXJyYXkgUXVhbnRpdHlEaXN0cmlidXRpb24gUXVhbnRpdHlGb3JtIFF1YW50aXR5TWFnbml0dWRlIFF1YW50aXR5USBRdWFudGl0eVVuaXQgUXVhbnRpdHlWYXJpYWJsZSBRdWFudGl0eVZhcmlhYmxlQ2Fub25pY2FsVW5pdCBRdWFudGl0eVZhcmlhYmxlRGltZW5zaW9ucyBRdWFudGl0eVZhcmlhYmxlSWRlbnRpZmllciBRdWFudGl0eVZhcmlhYmxlUGh5c2ljYWxRdWFudGl0eSBRdWFydGljcyBRdWFydGlsZURldmlhdGlvbiBRdWFydGlsZXMgUXVhcnRpbGVTa2V3bmVzcyBRdWVyeSBRdWV1ZWluZ05ldHdvcmtQcm9jZXNzIFF1ZXVlaW5nUHJvY2VzcyBRdWV1ZVByb3BlcnRpZXMgUXVpZXQgUXVpdCBRdW90aWVudCBRdW90aWVudFJlbWFpbmRlcicgK1xuICAgICAgJ1JhZGlhbEdyYWRpZW50SW1hZ2UgUmFkaWFsaXR5Q2VudHJhbGl0eSBSYWRpY2FsQm94IFJhZGljYWxCb3hPcHRpb25zIFJhZGlvQnV0dG9uIFJhZGlvQnV0dG9uQmFyIFJhZGlvQnV0dG9uQm94IFJhZGlvQnV0dG9uQm94T3B0aW9ucyBSYWRvbiBSYWRvblRyYW5zZm9ybSBSYW1hbnVqYW5UYXUgUmFtYW51amFuVGF1TCBSYW1hbnVqYW5UYXVUaGV0YSBSYW1hbnVqYW5UYXVaIFJhbXAgUmFuZG9tIFJhbmRvbUNob2ljZSBSYW5kb21Db2xvciBSYW5kb21Db21wbGV4IFJhbmRvbUVudGl0eSBSYW5kb21GdW5jdGlvbiBSYW5kb21HZW9Qb3NpdGlvbiBSYW5kb21HcmFwaCBSYW5kb21JbWFnZSBSYW5kb21JbnN0YW5jZSBSYW5kb21JbnRlZ2VyIFJhbmRvbVBlcm11dGF0aW9uIFJhbmRvbVBvaW50IFJhbmRvbVBvbHlnb24gUmFuZG9tUG9seWhlZHJvbiBSYW5kb21QcmltZSBSYW5kb21SZWFsIFJhbmRvbVNhbXBsZSBSYW5kb21TZWVkIFJhbmRvbVNlZWRpbmcgUmFuZG9tVmFyaWF0ZSBSYW5kb21XYWxrUHJvY2VzcyBSYW5kb21Xb3JkIFJhbmdlIFJhbmdlRmlsdGVyIFJhbmdlU3BlY2lmaWNhdGlvbiBSYW5rZWRNYXggUmFua2VkTWluIFJhcmVyUHJvYmFiaWxpdHkgUmFzdGVyIFJhc3RlcjNEIFJhc3RlcjNEQm94IFJhc3RlcjNEQm94T3B0aW9ucyBSYXN0ZXJBcnJheSBSYXN0ZXJCb3ggUmFzdGVyQm94T3B0aW9ucyBSYXN0ZXJpemUgUmFzdGVyU2l6ZSBSYXRpb25hbCBSYXRpb25hbEZ1bmN0aW9ucyBSYXRpb25hbGl6ZSBSYXRpb25hbHMgUmF0aW9zIFJhd0FycmF5IFJhd0JveGVzIFJhd0RhdGEgUmF3TWVkaXVtIFJheWxlaWdoRGlzdHJpYnV0aW9uIFJlIFJlYWQgUmVhZEJ5dGVBcnJheSBSZWFkTGluZSBSZWFkTGlzdCBSZWFkUHJvdGVjdGVkIFJlYWRTdHJpbmcgUmVhbCBSZWFsQWJzIFJlYWxCbG9ja0RpYWdvbmFsRm9ybSBSZWFsRGlnaXRzIFJlYWxFeHBvbmVudCBSZWFscyBSZWFsU2lnbiBSZWFwIFJlY29nbml0aW9uUHJpb3IgUmVjb2duaXRpb25UaHJlc2hvbGQgUmVjb3JkIFJlY29yZExpc3RzIFJlY29yZFNlcGFyYXRvcnMgUmVjdGFuZ2xlIFJlY3RhbmdsZUJveCBSZWN0YW5nbGVCb3hPcHRpb25zIFJlY3RhbmdsZUNoYXJ0IFJlY3RhbmdsZUNoYXJ0M0QgUmVjdGFuZ3VsYXJSZXBlYXRpbmdFbGVtZW50IFJlY3VycmVuY2VGaWx0ZXIgUmVjdXJyZW5jZVRhYmxlIFJlY3VycmluZ0RpZ2l0c0Zvcm0gUmVkIFJlZHVjZSBSZWZCb3ggUmVmZXJlbmNlTGluZVN0eWxlIFJlZmVyZW5jZU1hcmtlcnMgUmVmZXJlbmNlTWFya2VyU3R5bGUgUmVmaW5lIFJlZmxlY3Rpb25NYXRyaXggUmVmbGVjdGlvblRyYW5zZm9ybSBSZWZyZXNoIFJlZnJlc2hSYXRlIFJlZ2lvbiBSZWdpb25CaW5hcml6ZSBSZWdpb25Cb3VuZGFyeSBSZWdpb25Cb3VuZHMgUmVnaW9uQ2VudHJvaWQgUmVnaW9uRGlmZmVyZW5jZSBSZWdpb25EaW1lbnNpb24gUmVnaW9uRGlzam9pbnQgUmVnaW9uRGlzdGFuY2UgUmVnaW9uRGlzdGFuY2VGdW5jdGlvbiBSZWdpb25FbWJlZGRpbmdEaW1lbnNpb24gUmVnaW9uRXF1YWwgUmVnaW9uRnVuY3Rpb24gUmVnaW9uSW1hZ2UgUmVnaW9uSW50ZXJzZWN0aW9uIFJlZ2lvbk1lYXN1cmUgUmVnaW9uTWVtYmVyIFJlZ2lvbk1lbWJlckZ1bmN0aW9uIFJlZ2lvbk1vbWVudCBSZWdpb25OZWFyZXN0IFJlZ2lvbk5lYXJlc3RGdW5jdGlvbiBSZWdpb25QbG90IFJlZ2lvblBsb3QzRCBSZWdpb25Qcm9kdWN0IFJlZ2lvblEgUmVnaW9uUmVzaXplIFJlZ2lvblNpemUgUmVnaW9uU3ltbWV0cmljRGlmZmVyZW5jZSBSZWdpb25VbmlvbiBSZWdpb25XaXRoaW4gUmVnaXN0ZXJFeHRlcm5hbEV2YWx1YXRvciBSZWd1bGFyRXhwcmVzc2lvbiBSZWd1bGFyaXphdGlvbiBSZWd1bGFybHlTYW1wbGVkUSBSZWd1bGFyUG9seWdvbiBSZUltIFJlSW1MYWJlbHMgUmVJbVBsb3QgUmVJbVN0eWxlIFJlaW5zdGFsbCBSZWxhdGlvbmFsRGF0YWJhc2UgUmVsYXRpb25HcmFwaCBSZWxlYXNlIFJlbGVhc2VIb2xkIFJlbGlhYmlsaXR5RGlzdHJpYnV0aW9uIFJlbGllZkltYWdlIFJlbGllZlBsb3QgUmVtb3RlQXV0aG9yaXphdGlvbkNhY2hpbmcgUmVtb3RlQ29ubmVjdCBSZW1vdGVDb25uZWN0aW9uT2JqZWN0IFJlbW90ZUZpbGUgUmVtb3RlUnVuIFJlbW90ZVJ1blByb2Nlc3MgUmVtb3ZlIFJlbW92ZUFscGhhQ2hhbm5lbCBSZW1vdmVBc3luY2hyb25vdXNUYXNrIFJlbW92ZUF1ZGlvU3RyZWFtIFJlbW92ZUJhY2tncm91bmQgUmVtb3ZlQ2hhbm5lbExpc3RlbmVyIFJlbW92ZUNoYW5uZWxTdWJzY3JpYmVycyBSZW1vdmVkIFJlbW92ZURpYWNyaXRpY3MgUmVtb3ZlSW5wdXRTdHJlYW1NZXRob2QgUmVtb3ZlT3V0cHV0U3RyZWFtTWV0aG9kIFJlbW92ZVByb3BlcnR5IFJlbW92ZVNjaGVkdWxlZFRhc2sgUmVtb3ZlVXNlcnMgUmVuYW1lRGlyZWN0b3J5IFJlbmFtZUZpbGUgUmVuZGVyQWxsIFJlbmRlcmluZ09wdGlvbnMgUmVuZXdhbFByb2Nlc3MgUmVua29DaGFydCBSZXBhaXJNZXNoIFJlcGVhdGVkIFJlcGVhdGVkTnVsbCBSZXBlYXRlZFN0cmluZyBSZXBlYXRlZFRpbWluZyBSZXBlYXRpbmdFbGVtZW50IFJlcGxhY2UgUmVwbGFjZUFsbCBSZXBsYWNlSGVsZFBhcnQgUmVwbGFjZUltYWdlVmFsdWUgUmVwbGFjZUxpc3QgUmVwbGFjZVBhcnQgUmVwbGFjZVBpeGVsVmFsdWUgUmVwbGFjZVJlcGVhdGVkIFJlcGxpY2F0ZUxheWVyIFJlcXVpcmVkUGh5c2ljYWxRdWFudGl0aWVzIFJlc2FtcGxpbmcgUmVzYW1wbGluZ0FsZ29yaXRobURhdGEgUmVzYW1wbGluZ01ldGhvZCBSZXNjYWxlIFJlc2NhbGluZ1RyYW5zZm9ybSBSZXNldERpcmVjdG9yeSBSZXNldE1lbnVzUGFja2V0IFJlc2V0U2NoZWR1bGVkVGFzayBSZXNoYXBlTGF5ZXIgUmVzaWR1ZSBSZXNpemVMYXllciBSZXNvbHZlIFJlc291cmNlQWNxdWlyZSBSZXNvdXJjZURhdGEgUmVzb3VyY2VGdW5jdGlvbiBSZXNvdXJjZU9iamVjdCBSZXNvdXJjZVJlZ2lzdGVyIFJlc291cmNlUmVtb3ZlIFJlc291cmNlU2VhcmNoIFJlc291cmNlU3VibWlzc2lvbk9iamVjdCBSZXNvdXJjZVN1Ym1pdCBSZXNvdXJjZVN5c3RlbUJhc2UgUmVzb3VyY2VVcGRhdGUgUmVzcG9uc2VGb3JtIFJlc3QgUmVzdGFydEludGVydmFsIFJlc3RyaWN0ZWQgUmVzdWx0YW50IFJlc3VtZVBhY2tldCBSZXR1cm4gUmV0dXJuRW50ZXJzSW5wdXQgUmV0dXJuRXhwcmVzc2lvblBhY2tldCBSZXR1cm5JbnB1dEZvcm1QYWNrZXQgUmV0dXJuUGFja2V0IFJldHVyblJlY2VpcHRGdW5jdGlvbiBSZXR1cm5UZXh0UGFja2V0IFJldmVyc2UgUmV2ZXJzZUJpb3J0aG9nb25hbFNwbGluZVdhdmVsZXQgUmV2ZXJzZUVsZW1lbnQgUmV2ZXJzZUVxdWlsaWJyaXVtIFJldmVyc2VHcmFwaCBSZXZlcnNlU29ydCBSZXZlcnNlU29ydEJ5IFJldmVyc2VVcEVxdWlsaWJyaXVtIFJldm9sdXRpb25BeGlzIFJldm9sdXRpb25QbG90M0QgUkdCQ29sb3IgUmljY2F0aVNvbHZlIFJpY2VEaXN0cmlidXRpb24gUmlkZ2VGaWx0ZXIgUmllbWFublIgUmllbWFublNpZWdlbFRoZXRhIFJpZW1hbm5TaWVnZWxaIFJpZW1hbm5YaSBSaWZmbGUgUmlnaHQgUmlnaHRBcnJvdyBSaWdodEFycm93QmFyIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgUmlnaHRDb21wb3NpdGlvbiBSaWdodENvc2V0UmVwcmVzZW50YXRpdmUgUmlnaHREb3duVGVlVmVjdG9yIFJpZ2h0RG93blZlY3RvciBSaWdodERvd25WZWN0b3JCYXIgUmlnaHRUZWUgUmlnaHRUZWVBcnJvdyBSaWdodFRlZVZlY3RvciBSaWdodFRyaWFuZ2xlIFJpZ2h0VHJpYW5nbGVCYXIgUmlnaHRUcmlhbmdsZUVxdWFsIFJpZ2h0VXBEb3duVmVjdG9yIFJpZ2h0VXBUZWVWZWN0b3IgUmlnaHRVcFZlY3RvciBSaWdodFVwVmVjdG9yQmFyIFJpZ2h0VmVjdG9yIFJpZ2h0VmVjdG9yQmFyIFJpc2tBY2hpZXZlbWVudEltcG9ydGFuY2UgUmlza1JlZHVjdGlvbkltcG9ydGFuY2UgUm9nZXJzVGFuaW1vdG9EaXNzaW1pbGFyaXR5IFJvbGxQaXRjaFlhd0FuZ2xlcyBSb2xsUGl0Y2hZYXdNYXRyaXggUm9tYW5OdW1lcmFsIFJvb3QgUm9vdEFwcHJveGltYW50IFJvb3RJbnRlcnZhbHMgUm9vdExvY3VzUGxvdCBSb290TWVhblNxdWFyZSBSb290T2ZVbml0eVEgUm9vdFJlZHVjZSBSb290cyBSb290U3VtIFJvdGF0ZSBSb3RhdGVMYWJlbCBSb3RhdGVMZWZ0IFJvdGF0ZVJpZ2h0IFJvdGF0aW9uQWN0aW9uIFJvdGF0aW9uQm94IFJvdGF0aW9uQm94T3B0aW9ucyBSb3RhdGlvbk1hdHJpeCBSb3RhdGlvblRyYW5zZm9ybSBSb3VuZCBSb3VuZEltcGxpZXMgUm91bmRpbmdSYWRpdXMgUm93IFJvd0FsaWdubWVudHMgUm93QmFja2dyb3VuZHMgUm93Qm94IFJvd0hlaWdodHMgUm93TGluZXMgUm93TWluSGVpZ2h0IFJvd1JlZHVjZSBSb3dzRXF1YWwgUm93U3BhY2luZ3MgUlNvbHZlIFJTb2x2ZVZhbHVlIFJ1ZGluU2hhcGlybyBSdWR2YWxpc0dyb3VwUnUgUnVsZSBSdWxlQ29uZGl0aW9uIFJ1bGVEZWxheWVkIFJ1bGVGb3JtIFJ1bGVQbG90IFJ1bGVyVW5pdHMgUnVuIFJ1blByb2Nlc3MgUnVuU2NoZWR1bGVkVGFzayBSdW5UaHJvdWdoIFJ1bnRpbWVBdHRyaWJ1dGVzIFJ1bnRpbWVPcHRpb25zIFJ1c3NlbGxSYW9EaXNzaW1pbGFyaXR5JyArXG4gICAgICAnU2FtZVEgU2FtZVRlc3QgU2FtcGxlZEVudGl0eUNsYXNzIFNhbXBsZURlcHRoIFNhbXBsZWRTb3VuZEZ1bmN0aW9uIFNhbXBsZWRTb3VuZExpc3QgU2FtcGxlUmF0ZSBTYW1wbGluZ1BlcmlvZCBTQVJJTUFQcm9jZXNzIFNBUk1BUHJvY2VzcyBTQVNUcmlhbmdsZSBTYXRlbGxpdGVEYXRhIFNhdGlzZmlhYmlsaXR5Q291bnQgU2F0aXNmaWFiaWxpdHlJbnN0YW5jZXMgU2F0aXNmaWFibGVRIFNhdHVyZGF5IFNhdmUgU2F2ZWFibGUgU2F2ZUF1dG9EZWxldGUgU2F2ZUNvbm5lY3Rpb24gU2F2ZURlZmluaXRpb25zIFNhdml0emt5R29sYXlNYXRyaXggU2F3dG9vdGhXYXZlIFNjYWxlIFNjYWxlZCBTY2FsZURpdmlzaW9ucyBTY2FsZWRNb3VzZVBvc2l0aW9uIFNjYWxlT3JpZ2luIFNjYWxlUGFkZGluZyBTY2FsZVJhbmdlcyBTY2FsZVJhbmdlU3R5bGUgU2NhbGluZ0Z1bmN0aW9ucyBTY2FsaW5nTWF0cml4IFNjYWxpbmdUcmFuc2Zvcm0gU2NhbiBTY2hlZHVsZWRUYXNrIFNjaGVkdWxlZFRhc2tBY3RpdmVRIFNjaGVkdWxlZFRhc2tJbmZvcm1hdGlvbiBTY2hlZHVsZWRUYXNrSW5mb3JtYXRpb25EYXRhIFNjaGVkdWxlZFRhc2tPYmplY3QgU2NoZWR1bGVkVGFza3MgU2NodXJEZWNvbXBvc2l0aW9uIFNjaWVudGlmaWNGb3JtIFNjaWVudGlmaWNOb3RhdGlvblRocmVzaG9sZCBTY29yZXJHaSBTY29yZXJHaVByaW1lIFNjb3JlckhpIFNjb3JlckhpUHJpbWUgU2NyZWVuUmVjdGFuZ2xlIFNjcmVlblN0eWxlRW52aXJvbm1lbnQgU2NyaXB0QmFzZWxpbmVTaGlmdHMgU2NyaXB0Rm9ybSBTY3JpcHRMZXZlbCBTY3JpcHRNaW5TaXplIFNjcmlwdFJ1bGVzIFNjcmlwdFNpemVNdWx0aXBsaWVycyBTY3JvbGxiYXJzIFNjcm9sbGluZ09wdGlvbnMgU2Nyb2xsUG9zaXRpb24gU2VhcmNoQWRqdXN0bWVudCBTZWFyY2hJbmRleE9iamVjdCBTZWFyY2hJbmRpY2VzIFNlYXJjaFF1ZXJ5U3RyaW5nIFNlYXJjaFJlc3VsdE9iamVjdCBTZWMgU2VjaCBTZWNoRGlzdHJpYnV0aW9uIFNlY29uZE9yZGVyQ29uZU9wdGltaXphdGlvbiBTZWN0aW9uR3JvdXBpbmcgU2VjdG9yQ2hhcnQgU2VjdG9yQ2hhcnQzRCBTZWN0b3JPcmlnaW4gU2VjdG9yU3BhY2luZyBTZWN1cmVkQXV0aGVudGljYXRpb25LZXkgU2VjdXJlZEF1dGhlbnRpY2F0aW9uS2V5cyBTZWVkUmFuZG9tIFNlbGVjdCBTZWxlY3RhYmxlIFNlbGVjdENvbXBvbmVudHMgU2VsZWN0ZWRDZWxscyBTZWxlY3RlZE5vdGVib29rIFNlbGVjdEZpcnN0IFNlbGVjdGlvbiBTZWxlY3Rpb25BbmltYXRlIFNlbGVjdGlvbkNlbGwgU2VsZWN0aW9uQ2VsbENyZWF0ZUNlbGwgU2VsZWN0aW9uQ2VsbERlZmF1bHRTdHlsZSBTZWxlY3Rpb25DZWxsUGFyZW50U3R5bGUgU2VsZWN0aW9uQ3JlYXRlQ2VsbCBTZWxlY3Rpb25EZWJ1Z2dlclRhZyBTZWxlY3Rpb25EdXBsaWNhdGVDZWxsIFNlbGVjdGlvbkV2YWx1YXRlIFNlbGVjdGlvbkV2YWx1YXRlQ3JlYXRlQ2VsbCBTZWxlY3Rpb25Nb3ZlIFNlbGVjdGlvblBsYWNlaG9sZGVyIFNlbGVjdGlvblNldFN0eWxlIFNlbGVjdFdpdGhDb250ZW50cyBTZWxmTG9vcHMgU2VsZkxvb3BTdHlsZSBTZW1hbnRpY0ltcG9ydCBTZW1hbnRpY0ltcG9ydFN0cmluZyBTZW1hbnRpY0ludGVycHJldGF0aW9uIFNlbWlhbGdlYnJhaWNDb21wb25lbnRJbnN0YW5jZXMgU2VtaWRlZmluaXRlT3B0aW1pemF0aW9uIFNlbmRNYWlsIFNlbmRNZXNzYWdlIFNlcXVlbmNlIFNlcXVlbmNlQWxpZ25tZW50IFNlcXVlbmNlQXR0ZW50aW9uTGF5ZXIgU2VxdWVuY2VDYXNlcyBTZXF1ZW5jZUNvdW50IFNlcXVlbmNlRm9sZCBTZXF1ZW5jZUZvbGRMaXN0IFNlcXVlbmNlRm9ybSBTZXF1ZW5jZUhvbGQgU2VxdWVuY2VMYXN0TGF5ZXIgU2VxdWVuY2VNb3N0TGF5ZXIgU2VxdWVuY2VQb3NpdGlvbiBTZXF1ZW5jZVByZWRpY3QgU2VxdWVuY2VQcmVkaWN0b3JGdW5jdGlvbiBTZXF1ZW5jZVJlcGxhY2UgU2VxdWVuY2VSZXN0TGF5ZXIgU2VxdWVuY2VSZXZlcnNlTGF5ZXIgU2VxdWVuY2VTcGxpdCBTZXJpZXMgU2VyaWVzQ29lZmZpY2llbnQgU2VyaWVzRGF0YSBTZXJ2aWNlQ29ubmVjdCBTZXJ2aWNlRGlzY29ubmVjdCBTZXJ2aWNlRXhlY3V0ZSBTZXJ2aWNlT2JqZWN0IFNlcnZpY2VSZXF1ZXN0IFNlcnZpY2VSZXNwb25zZSBTZXJ2aWNlU3VibWl0IFNlc3Npb25TdWJtaXQgU2Vzc2lvblRpbWUgU2V0IFNldEFjY3VyYWN5IFNldEFscGhhQ2hhbm5lbCBTZXRBdHRyaWJ1dGVzIFNldGJhY2tzIFNldEJveEZvcm1OYW1lc1BhY2tldCBTZXRDbG91ZERpcmVjdG9yeSBTZXRDb29raWVzIFNldERlbGF5ZWQgU2V0RGlyZWN0b3J5IFNldEVudmlyb25tZW50IFNldEV2YWx1YXRpb25Ob3RlYm9vayBTZXRGaWxlRGF0ZSBTZXRGaWxlTG9hZGluZ0NvbnRleHQgU2V0Tm90ZWJvb2tTdGF0dXNMaW5lIFNldE9wdGlvbnMgU2V0T3B0aW9uc1BhY2tldCBTZXRQZXJtaXNzaW9ucyBTZXRQcmVjaXNpb24gU2V0UHJvcGVydHkgU2V0U2VjdXJlZEF1dGhlbnRpY2F0aW9uS2V5IFNldFNlbGVjdGVkTm90ZWJvb2sgU2V0U2hhcmVkRnVuY3Rpb24gU2V0U2hhcmVkVmFyaWFibGUgU2V0U3BlZWNoUGFyYW1ldGVyc1BhY2tldCBTZXRTdHJlYW1Qb3NpdGlvbiBTZXRTeXN0ZW1Nb2RlbCBTZXRTeXN0ZW1PcHRpb25zIFNldHRlciBTZXR0ZXJCYXIgU2V0dGVyQm94IFNldHRlckJveE9wdGlvbnMgU2V0dGluZyBTZXRVc2VycyBTZXRWYWx1ZSBTaGFkaW5nIFNoYWxsb3cgU2hhbm5vbldhdmVsZXQgU2hhcGlyb1dpbGtUZXN0IFNoYXJlIFNoYXJpbmdMaXN0IFNoYXJwZW4gU2hlYXJpbmdNYXRyaXggU2hlYXJpbmdUcmFuc2Zvcm0gU2hlbGxSZWdpb24gU2hlbkNhc3Rhbk1hdHJpeCBTaGlmdGVkR29tcGVydHpEaXN0cmlidXRpb24gU2hpZnRSZWdpc3RlclNlcXVlbmNlIFNob3J0IFNob3J0RG93bkFycm93IFNob3J0ZXN0IFNob3J0ZXN0TWF0Y2ggU2hvcnRlc3RQYXRoRnVuY3Rpb24gU2hvcnRMZWZ0QXJyb3cgU2hvcnRSaWdodEFycm93IFNob3J0VGltZUZvdXJpZXIgU2hvcnRUaW1lRm91cmllckRhdGEgU2hvcnRVcEFycm93IFNob3cgU2hvd0F1dG9Db252ZXJ0IFNob3dBdXRvU3BlbGxDaGVjayBTaG93QXV0b1N0eWxlcyBTaG93Q2VsbEJyYWNrZXQgU2hvd0NlbGxMYWJlbCBTaG93Q2VsbFRhZ3MgU2hvd0Nsb3NlZENlbGxBcmVhIFNob3dDb2RlQXNzaXN0IFNob3dDb250ZW50cyBTaG93Q29udHJvbHMgU2hvd0N1cnNvclRyYWNrZXIgU2hvd0dyb3VwT3BlbkNsb3NlSWNvbiBTaG93R3JvdXBPcGVuZXIgU2hvd0ludmlzaWJsZUNoYXJhY3RlcnMgU2hvd1BhZ2VCcmVha3MgU2hvd1ByZWRpY3RpdmVJbnRlcmZhY2UgU2hvd1NlbGVjdGlvbiBTaG93U2hvcnRCb3hGb3JtIFNob3dTcGVjaWFsQ2hhcmFjdGVycyBTaG93U3RyaW5nQ2hhcmFjdGVycyBTaG93U3ludGF4U3R5bGVzIFNocmlua2luZ0RlbGF5IFNocmlua1dyYXBCb3VuZGluZ0JveCBTaWRlcmVhbFRpbWUgU2llZ2VsVGhldGEgU2llZ2VsVHVrZXlUZXN0IFNpZXJwaW5za2lDdXJ2ZSBTaWVycGluc2tpTWVzaCBTaWduIFNpZ25hdHVyZSBTaWduZWRSYW5rVGVzdCBTaWduZWRSZWdpb25EaXN0YW5jZSBTaWduaWZpY2FuY2VMZXZlbCBTaWduUGFkZGluZyBTaWduVGVzdCBTaW1pbGFyaXR5UnVsZXMgU2ltcGxlR3JhcGggU2ltcGxlR3JhcGhRIFNpbXBsZVBvbHlnb25RIFNpbXBsZVBvbHloZWRyb25RIFNpbXBsZXggU2ltcGxpZnkgU2luIFNpbmMgU2luZ2hNYWRkYWxhRGlzdHJpYnV0aW9uIFNpbmdsZUV2YWx1YXRpb24gU2luZ2xlTGV0dGVySXRhbGljcyBTaW5nbGVMZXR0ZXJTdHlsZSBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiBTaW5ndWxhclZhbHVlTGlzdCBTaW5ndWxhclZhbHVlUGxvdCBTaW5ndWxhclZhbHVlcyBTaW5oIFNpbmhJbnRlZ3JhbCBTaW5JbnRlZ3JhbCBTaXhKU3ltYm9sIFNrZWxldG9uIFNrZWxldG9uVHJhbnNmb3JtIFNrZWxsYW1EaXN0cmlidXRpb24gU2tld25lc3MgU2tld05vcm1hbERpc3RyaWJ1dGlvbiBTa2luU3R5bGUgU2tpcCBTbGljZUNvbnRvdXJQbG90M0QgU2xpY2VEZW5zaXR5UGxvdDNEIFNsaWNlRGlzdHJpYnV0aW9uIFNsaWNlVmVjdG9yUGxvdDNEIFNsaWRlciBTbGlkZXIyRCBTbGlkZXIyREJveCBTbGlkZXIyREJveE9wdGlvbnMgU2xpZGVyQm94IFNsaWRlckJveE9wdGlvbnMgU2xpZGVWaWV3IFNsb3QgU2xvdFNlcXVlbmNlIFNtYWxsIFNtYWxsQ2lyY2xlIFNtYWxsZXIgU21pdGhEZWNvbXBvc2l0aW9uIFNtaXRoRGVsYXlDb21wZW5zYXRvciBTbWl0aFdhdGVybWFuU2ltaWxhcml0eSBTbW9vdGhEZW5zaXR5SGlzdG9ncmFtIFNtb290aEhpc3RvZ3JhbSBTbW9vdGhIaXN0b2dyYW0zRCBTbW9vdGhLZXJuZWxEaXN0cmlidXRpb24gU25EaXNwZXJzaW9uIFNuaXBwZXQgU251YlBvbHloZWRyb24gU29jaWFsTWVkaWFEYXRhIFNvY2tldCBTb2NrZXRDb25uZWN0IFNvY2tldExpc3RlbiBTb2NrZXRMaXN0ZW5lciBTb2NrZXRPYmplY3QgU29ja2V0T3BlbiBTb2NrZXRSZWFkTWVzc2FnZSBTb2NrZXRSZWFkeVEgU29ja2V0cyBTb2NrZXRXYWl0QWxsIFNvY2tldFdhaXROZXh0IFNvZnRtYXhMYXllciBTb2thbFNuZWF0aERpc3NpbWlsYXJpdHkgU29sYXJFY2xpcHNlIFNvbGFyU3lzdGVtRmVhdHVyZURhdGEgU29saWRBbmdsZSBTb2xpZERhdGEgU29saWRSZWdpb25RIFNvbHZlIFNvbHZlQWx3YXlzIFNvbHZlRGVsYXllZCBTb3J0IFNvcnRCeSBTb3J0ZWRCeSBTb3J0ZWRFbnRpdHlDbGFzcyBTb3VuZCBTb3VuZEFuZEdyYXBoaWNzIFNvdW5kTm90ZSBTb3VuZFZvbHVtZSBTb3VyY2VMaW5rIFNvdyBTcGFjZSBTcGFjZUN1cnZlRGF0YSBTcGFjZUZvcm0gU3BhY2VyIFNwYWNpbmdzIFNwYW4gU3BhbkFkanVzdG1lbnRzIFNwYW5DaGFyYWN0ZXJSb3VuZGluZyBTcGFuRnJvbUFib3ZlIFNwYW5Gcm9tQm90aCBTcGFuRnJvbUxlZnQgU3BhbkxpbmVUaGlja25lc3MgU3Bhbk1heFNpemUgU3Bhbk1pblNpemUgU3Bhbm5pbmdDaGFyYWN0ZXJzIFNwYW5TeW1tZXRyaWMgU3BhcnNlQXJyYXkgU3BhdGlhbEdyYXBoRGlzdHJpYnV0aW9uIFNwYXRpYWxNZWRpYW4gU3BhdGlhbFRyYW5zZm9ybWF0aW9uTGF5ZXIgU3BlYWsgU3BlYWtUZXh0UGFja2V0IFNwZWFybWFuUmFua1Rlc3QgU3BlYXJtYW5SaG8gU3BlY2llc0RhdGEgU3BlY2lmaWNpdHlHb2FsIFNwZWN0cmFsTGluZURhdGEgU3BlY3Ryb2dyYW0gU3BlY3Ryb2dyYW1BcnJheSBTcGVjdWxhcml0eSBTcGVlY2hSZWNvZ25pemUgU3BlZWNoU3ludGhlc2l6ZSBTcGVsbGluZ0NvcnJlY3Rpb24gU3BlbGxpbmdDb3JyZWN0aW9uTGlzdCBTcGVsbGluZ0RpY3Rpb25hcmllcyBTcGVsbGluZ0RpY3Rpb25hcmllc1BhdGggU3BlbGxpbmdPcHRpb25zIFNwZWxsaW5nU3VnZ2VzdGlvbnNQYWNrZXQgU3BoZXJlIFNwaGVyZUJveCBTcGhlcmVQb2ludHMgU3BoZXJpY2FsQmVzc2VsSiBTcGhlcmljYWxCZXNzZWxZIFNwaGVyaWNhbEhhbmtlbEgxIFNwaGVyaWNhbEhhbmtlbEgyIFNwaGVyaWNhbEhhcm1vbmljWSBTcGhlcmljYWxQbG90M0QgU3BoZXJpY2FsUmVnaW9uIFNwaGVyaWNhbFNoZWxsIFNwaGVyb2lkYWxFaWdlbnZhbHVlIFNwaGVyb2lkYWxKb2luaW5nRmFjdG9yIFNwaGVyb2lkYWxQUyBTcGhlcm9pZGFsUFNQcmltZSBTcGhlcm9pZGFsUVMgU3BoZXJvaWRhbFFTUHJpbWUgU3BoZXJvaWRhbFJhZGlhbEZhY3RvciBTcGhlcm9pZGFsUzEgU3BoZXJvaWRhbFMxUHJpbWUgU3BoZXJvaWRhbFMyIFNwaGVyb2lkYWxTMlByaW1lIFNwbGljZSBTcGxpY2VkRGlzdHJpYnV0aW9uIFNwbGluZUNsb3NlZCBTcGxpbmVEZWdyZWUgU3BsaW5lS25vdHMgU3BsaW5lV2VpZ2h0cyBTcGxpdCBTcGxpdEJ5IFNwb2tlblN0cmluZyBTcXJ0IFNxcnRCb3ggU3FydEJveE9wdGlvbnMgU3F1YXJlIFNxdWFyZWRFdWNsaWRlYW5EaXN0YW5jZSBTcXVhcmVGcmVlUSBTcXVhcmVJbnRlcnNlY3Rpb24gU3F1YXJlTWF0cml4USBTcXVhcmVSZXBlYXRpbmdFbGVtZW50IFNxdWFyZXNSIFNxdWFyZVN1YnNldCBTcXVhcmVTdWJzZXRFcXVhbCBTcXVhcmVTdXBlcnNldCBTcXVhcmVTdXBlcnNldEVxdWFsIFNxdWFyZVVuaW9uIFNxdWFyZVdhdmUgU1NTVHJpYW5nbGUgU3RhYmlsaXR5TWFyZ2lucyBTdGFiaWxpdHlNYXJnaW5zU3R5bGUgU3RhYmxlRGlzdHJpYnV0aW9uIFN0YWNrIFN0YWNrQmVnaW4gU3RhY2tDb21wbGV0ZSBTdGFja2VkRGF0ZUxpc3RQbG90IFN0YWNrZWRMaXN0UGxvdCBTdGFja0luaGliaXQgU3RhZGl1bVNoYXBlIFN0YW5kYXJkQXRtb3NwaGVyZURhdGEgU3RhbmRhcmREZXZpYXRpb24gU3RhbmRhcmREZXZpYXRpb25GaWx0ZXIgU3RhbmRhcmRGb3JtIFN0YW5kYXJkaXplIFN0YW5kYXJkaXplZCBTdGFuZGFyZE9jZWFuRGF0YSBTdGFuZGJ5RGlzdHJpYnV0aW9uIFN0YXIgU3RhckNsdXN0ZXJEYXRhIFN0YXJEYXRhIFN0YXJHcmFwaCBTdGFydEFzeW5jaHJvbm91c1Rhc2sgU3RhcnRFeHRlcm5hbFNlc3Npb24gU3RhcnRpbmdTdGVwU2l6ZSBTdGFydE9mTGluZSBTdGFydE9mU3RyaW5nIFN0YXJ0UHJvY2VzcyBTdGFydFNjaGVkdWxlZFRhc2sgU3RhcnR1cFNvdW5kIFN0YXJ0V2ViU2Vzc2lvbiBTdGF0ZURpbWVuc2lvbnMgU3RhdGVGZWVkYmFja0dhaW5zIFN0YXRlT3V0cHV0RXN0aW1hdG9yIFN0YXRlUmVzcG9uc2UgU3RhdGVTcGFjZU1vZGVsIFN0YXRlU3BhY2VSZWFsaXphdGlvbiBTdGF0ZVNwYWNlVHJhbnNmb3JtIFN0YXRlVHJhbnNmb3JtYXRpb25MaW5lYXJpemUgU3RhdGlvbmFyeURpc3RyaWJ1dGlvbiBTdGF0aW9uYXJ5V2F2ZWxldFBhY2tldFRyYW5zZm9ybSBTdGF0aW9uYXJ5V2F2ZWxldFRyYW5zZm9ybSBTdGF0dXNBcmVhIFN0YXR1c0NlbnRyYWxpdHkgU3RlcE1vbml0b3IgU3RlcmVvY2hlbWlzdHJ5RWxlbWVudHMgU3RpZWx0amVzR2FtbWEgU3RpcmxpbmdTMSBTdGlybGluZ1MyIFN0b3BBc3luY2hyb25vdXNUYXNrIFN0b3BwaW5nUG93ZXJEYXRhIFN0b3BTY2hlZHVsZWRUYXNrIFN0cmF0YVZhcmlhYmxlcyBTdHJhdG9ub3ZpY2hQcm9jZXNzIFN0cmVhbUNvbG9yRnVuY3Rpb24gU3RyZWFtQ29sb3JGdW5jdGlvblNjYWxpbmcgU3RyZWFtRGVuc2l0eVBsb3QgU3RyZWFtTWFya2VycyBTdHJlYW1QbG90IFN0cmVhbVBvaW50cyBTdHJlYW1Qb3NpdGlvbiBTdHJlYW1zIFN0cmVhbVNjYWxlIFN0cmVhbVN0eWxlIFN0cmluZyBTdHJpbmdCcmVhayBTdHJpbmdCeXRlQ291bnQgU3RyaW5nQ2FzZXMgU3RyaW5nQ29udGFpbnNRIFN0cmluZ0NvdW50IFN0cmluZ0RlbGV0ZSBTdHJpbmdEcm9wIFN0cmluZ0VuZHNRIFN0cmluZ0V4cHJlc3Npb24gU3RyaW5nRXh0cmFjdCBTdHJpbmdGb3JtIFN0cmluZ0Zvcm1hdCBTdHJpbmdGcmVlUSBTdHJpbmdJbnNlcnQgU3RyaW5nSm9pbiBTdHJpbmdMZW5ndGggU3RyaW5nTWF0Y2hRIFN0cmluZ1BhZExlZnQgU3RyaW5nUGFkUmlnaHQgU3RyaW5nUGFydCBTdHJpbmdQYXJ0aXRpb24gU3RyaW5nUG9zaXRpb24gU3RyaW5nUSBTdHJpbmdSZXBlYXQgU3RyaW5nUmVwbGFjZSBTdHJpbmdSZXBsYWNlTGlzdCBTdHJpbmdSZXBsYWNlUGFydCBTdHJpbmdSZXZlcnNlIFN0cmluZ1JpZmZsZSBTdHJpbmdSb3RhdGVMZWZ0IFN0cmluZ1JvdGF0ZVJpZ2h0IFN0cmluZ1NrZWxldG9uIFN0cmluZ1NwbGl0IFN0cmluZ1N0YXJ0c1EgU3RyaW5nVGFrZSBTdHJpbmdUZW1wbGF0ZSBTdHJpbmdUb0J5dGVBcnJheSBTdHJpbmdUb1N0cmVhbSBTdHJpbmdUcmltIFN0cmlwQm94ZXMgU3RyaXBPbklucHV0IFN0cmlwV3JhcHBlckJveGVzIFN0cm9rZUZvcm0gU3RydWN0dXJhbEltcG9ydGFuY2UgU3RydWN0dXJlZEFycmF5IFN0cnVjdHVyZWRTZWxlY3Rpb24gU3RydXZlSCBTdHJ1dmVMIFN0dWIgU3R1ZGVudFREaXN0cmlidXRpb24gU3R5bGUgU3R5bGVCb3ggU3R5bGVCb3hBdXRvRGVsZXRlIFN0eWxlRGF0YSBTdHlsZURlZmluaXRpb25zIFN0eWxlRm9ybSBTdHlsZUhpbnRzIFN0eWxlS2V5TWFwcGluZyBTdHlsZU1lbnVMaXN0aW5nIFN0eWxlTmFtZURpYWxvZ1NldHRpbmdzIFN0eWxlTmFtZXMgU3R5bGVQcmludCBTdHlsZVNoZWV0UGF0aCBTdWJkaXZpZGUgU3ViZmFjdG9yaWFsIFN1YmdyYXBoIFN1Yk1pbnVzIFN1YlBsdXMgU3VicmVzdWx0YW50UG9seW5vbWlhbFJlbWFpbmRlcnMgU3VicmVzdWx0YW50UG9seW5vbWlhbHMgU3VicmVzdWx0YW50cyBTdWJzY3JpcHQgU3Vic2NyaXB0Qm94IFN1YnNjcmlwdEJveE9wdGlvbnMgU3Vic2NyaXB0ZWQgU3Vic2VxdWVuY2VzIFN1YnNldCBTdWJzZXRFcXVhbCBTdWJzZXRNYXAgU3Vic2V0USBTdWJzZXRzIFN1YlN0YXIgU3Vic3RpdHV0aW9uU3lzdGVtIFN1YnN1cGVyc2NyaXB0IFN1YnN1cGVyc2NyaXB0Qm94IFN1YnN1cGVyc2NyaXB0Qm94T3B0aW9ucyBTdWJ0cmFjdCBTdWJ0cmFjdEZyb20gU3VidHJhY3RTaWRlcyBTdWJWYWx1ZXMgU3VjY2VlZHMgU3VjY2VlZHNFcXVhbCBTdWNjZWVkc1NsYW50RXF1YWwgU3VjY2VlZHNUaWxkZSBTdWNjZXNzIFN1Y2hUaGF0IFN1bSBTdW1Db252ZXJnZW5jZSBTdW1tYXRpb25MYXllciBTdW5kYXkgU3VuUG9zaXRpb24gU3VucmlzZSBTdW5zZXQgU3VwZXJEYWdnZXIgU3VwZXJNaW51cyBTdXBlcm5vdmFEYXRhIFN1cGVyUGx1cyBTdXBlcnNjcmlwdCBTdXBlcnNjcmlwdEJveCBTdXBlcnNjcmlwdEJveE9wdGlvbnMgU3VwZXJzZXQgU3VwZXJzZXRFcXVhbCBTdXBlclN0YXIgU3VyZCBTdXJkRm9ybSBTdXJmYWNlQXJlYSBTdXJmYWNlQ29sb3IgU3VyZmFjZURhdGEgU3VyZmFjZUdyYXBoaWNzIFN1cnZpdmFsRGlzdHJpYnV0aW9uIFN1cnZpdmFsRnVuY3Rpb24gU3Vydml2YWxNb2RlbCBTdXJ2aXZhbE1vZGVsRml0IFN1c3BlbmRQYWNrZXQgU3V6dWtpRGlzdHJpYnV0aW9uIFN1enVraUdyb3VwU3V6IFN3YXRjaExlZ2VuZCBTd2l0Y2ggU3ltYm9sIFN5bWJvbE5hbWUgU3ltbGV0V2F2ZWxldCBTeW1tZXRyaWMgU3ltbWV0cmljR3JvdXAgU3ltbWV0cmljS2V5IFN5bW1ldHJpY01hdHJpeFEgU3ltbWV0cmljUG9seW5vbWlhbCBTeW1tZXRyaWNSZWR1Y3Rpb24gU3ltbWV0cml6ZSBTeW1tZXRyaXplZEFycmF5IFN5bW1ldHJpemVkQXJyYXlSdWxlcyBTeW1tZXRyaXplZERlcGVuZGVudENvbXBvbmVudHMgU3ltbWV0cml6ZWRJbmRlcGVuZGVudENvbXBvbmVudHMgU3ltbWV0cml6ZWRSZXBsYWNlUGFydCBTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uIFN5bmNocm9ub3VzVXBkYXRpbmcgU3lub255bXMgU3ludGF4IFN5bnRheEZvcm0gU3ludGF4SW5mb3JtYXRpb24gU3ludGF4TGVuZ3RoIFN5bnRheFBhY2tldCBTeW50YXhRIFN5bnRoZXNpemVNaXNzaW5nVmFsdWVzIFN5c3RlbURpYWxvZ0lucHV0IFN5c3RlbUV4Y2VwdGlvbiBTeXN0ZW1HZXQgU3lzdGVtSGVscFBhdGggU3lzdGVtSW5mb3JtYXRpb24gU3lzdGVtSW5mb3JtYXRpb25EYXRhIFN5c3RlbUluc3RhbGwgU3lzdGVtTW9kZWwgU3lzdGVtTW9kZWxlciBTeXN0ZW1Nb2RlbEV4YW1wbGVzIFN5c3RlbU1vZGVsTGluZWFyaXplIFN5c3RlbU1vZGVsUGFyYW1ldHJpY1NpbXVsYXRlIFN5c3RlbU1vZGVsUGxvdCBTeXN0ZW1Nb2RlbFByb2dyZXNzUmVwb3J0aW5nIFN5c3RlbU1vZGVsUmVsaWFiaWxpdHkgU3lzdGVtTW9kZWxzIFN5c3RlbU1vZGVsU2ltdWxhdGUgU3lzdGVtTW9kZWxTaW11bGF0ZVNlbnNpdGl2aXR5IFN5c3RlbU1vZGVsU2ltdWxhdGlvbkRhdGEgU3lzdGVtT3BlbiBTeXN0ZW1PcHRpb25zIFN5c3RlbVByb2Nlc3NEYXRhIFN5c3RlbVByb2Nlc3NlcyBTeXN0ZW1zQ29ubmVjdGlvbnNNb2RlbCBTeXN0ZW1zTW9kZWxEZWxheSBTeXN0ZW1zTW9kZWxEZWxheUFwcHJveGltYXRlIFN5c3RlbXNNb2RlbERlbGV0ZSBTeXN0ZW1zTW9kZWxEaW1lbnNpb25zIFN5c3RlbXNNb2RlbEV4dHJhY3QgU3lzdGVtc01vZGVsRmVlZGJhY2tDb25uZWN0IFN5c3RlbXNNb2RlbExhYmVscyBTeXN0ZW1zTW9kZWxMaW5lYXJpdHkgU3lzdGVtc01vZGVsTWVyZ2UgU3lzdGVtc01vZGVsT3JkZXIgU3lzdGVtc01vZGVsUGFyYWxsZWxDb25uZWN0IFN5c3RlbXNNb2RlbFNlcmllc0Nvbm5lY3QgU3lzdGVtc01vZGVsU3RhdGVGZWVkYmFja0Nvbm5lY3QgU3lzdGVtc01vZGVsVmVjdG9yUmVsYXRpdmVPcmRlcnMgU3lzdGVtU3R1YiBTeXN0ZW1UZXN0JyArXG4gICAgICAnVGFiIFRhYkZpbGxpbmcgVGFibGUgVGFibGVBbGlnbm1lbnRzIFRhYmxlRGVwdGggVGFibGVEaXJlY3Rpb25zIFRhYmxlRm9ybSBUYWJsZUhlYWRpbmdzIFRhYmxlU3BhY2luZyBUYWJsZVZpZXcgVGFibGVWaWV3Qm94IFRhYmxlVmlld0JveEJhY2tncm91bmQgVGFibGVWaWV3Qm94T3B0aW9ucyBUYWJTcGFjaW5ncyBUYWJWaWV3IFRhYlZpZXdCb3ggVGFiVmlld0JveE9wdGlvbnMgVGFnQm94IFRhZ0JveE5vdGUgVGFnQm94T3B0aW9ucyBUYWdnaW5nUnVsZXMgVGFnU2V0IFRhZ1NldERlbGF5ZWQgVGFnU3R5bGUgVGFnVW5zZXQgVGFrZSBUYWtlRHJvcCBUYWtlTGFyZ2VzdCBUYWtlTGFyZ2VzdEJ5IFRha2VMaXN0IFRha2VTbWFsbGVzdCBUYWtlU21hbGxlc3RCeSBUYWtlV2hpbGUgVGFsbHkgVGFuIFRhbmggVGFyZ2V0RGV2aWNlIFRhcmdldEZ1bmN0aW9ucyBUYXJnZXRTeXN0ZW0gVGFyZ2V0VW5pdHMgVGFza0Fib3J0IFRhc2tFeGVjdXRlIFRhc2tPYmplY3QgVGFza1JlbW92ZSBUYXNrUmVzdW1lIFRhc2tzIFRhc2tTdXNwZW5kIFRhc2tXYWl0IFRhdXRvbG9neVEgVGVsZWdyYXBoUHJvY2VzcyBUZW1wbGF0ZUFwcGx5IFRlbXBsYXRlQXJnQm94IFRlbXBsYXRlQm94IFRlbXBsYXRlQm94T3B0aW9ucyBUZW1wbGF0ZUV2YWx1YXRlIFRlbXBsYXRlRXhwcmVzc2lvbiBUZW1wbGF0ZUlmIFRlbXBsYXRlT2JqZWN0IFRlbXBsYXRlU2VxdWVuY2UgVGVtcGxhdGVTbG90IFRlbXBsYXRlU2xvdFNlcXVlbmNlIFRlbXBsYXRlVW5ldmFsdWF0ZWQgVGVtcGxhdGVWZXJiYXRpbSBUZW1wbGF0ZVdpdGggVGVtcG9yYWxEYXRhIFRlbXBvcmFsUmVndWxhcml0eSBUZW1wb3JhcnkgVGVtcG9yYXJ5VmFyaWFibGUgVGVuc29yQ29udHJhY3QgVGVuc29yRGltZW5zaW9ucyBUZW5zb3JFeHBhbmQgVGVuc29yUHJvZHVjdCBUZW5zb3JRIFRlbnNvclJhbmsgVGVuc29yUmVkdWNlIFRlbnNvclN5bW1ldHJ5IFRlbnNvclRyYW5zcG9zZSBUZW5zb3JXZWRnZSBUZXN0SUQgVGVzdFJlcG9ydCBUZXN0UmVwb3J0T2JqZWN0IFRlc3RSZXN1bHRPYmplY3QgVGV0cmFoZWRyb24gVGV0cmFoZWRyb25Cb3ggVGV0cmFoZWRyb25Cb3hPcHRpb25zIFRlWEZvcm0gVGVYU2F2ZSBUZXh0IFRleHQzREJveCBUZXh0M0RCb3hPcHRpb25zIFRleHRBbGlnbm1lbnQgVGV4dEJhbmQgVGV4dEJvdW5kaW5nQm94IFRleHRCb3ggVGV4dENhc2VzIFRleHRDZWxsIFRleHRDbGlwYm9hcmRUeXBlIFRleHRDb250ZW50cyBUZXh0RGF0YSBUZXh0RWxlbWVudCBUZXh0Rm9ybSBUZXh0R3JpZCBUZXh0SnVzdGlmaWNhdGlvbiBUZXh0TGluZSBUZXh0UGFja2V0IFRleHRQYXJhZ3JhcGggVGV4dFBvc2l0aW9uIFRleHRSZWNvZ25pemUgVGV4dFNlYXJjaCBUZXh0U2VhcmNoUmVwb3J0IFRleHRTZW50ZW5jZXMgVGV4dFN0cmluZyBUZXh0U3RydWN0dXJlIFRleHRTdHlsZSBUZXh0VHJhbnNsYXRpb24gVGV4dHVyZSBUZXh0dXJlQ29vcmRpbmF0ZUZ1bmN0aW9uIFRleHR1cmVDb29yZGluYXRlU2NhbGluZyBUZXh0V29yZHMgVGhlcmVmb3JlIFRoZXJtb2R5bmFtaWNEYXRhIFRoZXJtb21ldGVyR2F1Z2UgVGhpY2sgVGhpY2tuZXNzIFRoaW4gVGhpbm5pbmcgVGhpc0xpbmsgVGhvbXBzb25Hcm91cFRoIFRocmVhZCBUaHJlYWRpbmdMYXllciBUaHJlZUpTeW1ib2wgVGhyZXNob2xkIFRocm91Z2ggVGhyb3cgVGh1ZU1vcnNlIFRodW1ibmFpbCBUaHVyc2RheSBUaWNrcyBUaWNrc1N0eWxlIFRpZGVEYXRhIFRpbGRlIFRpbGRlRXF1YWwgVGlsZGVGdWxsRXF1YWwgVGlsZGVUaWxkZSBUaW1lQ29uc3RyYWluZWQgVGltZUNvbnN0cmFpbnQgVGltZURpcmVjdGlvbiBUaW1lRm9ybWF0IFRpbWVHb2FsIFRpbWVsaW5lUGxvdCBUaW1lT2JqZWN0IFRpbWVPYmplY3RRIFRpbWVzIFRpbWVzQnkgVGltZVNlcmllcyBUaW1lU2VyaWVzQWdncmVnYXRlIFRpbWVTZXJpZXNGb3JlY2FzdCBUaW1lU2VyaWVzSW5zZXJ0IFRpbWVTZXJpZXNJbnZlcnRpYmlsaXR5IFRpbWVTZXJpZXNNYXAgVGltZVNlcmllc01hcFRocmVhZCBUaW1lU2VyaWVzTW9kZWwgVGltZVNlcmllc01vZGVsRml0IFRpbWVTZXJpZXNSZXNhbXBsZSBUaW1lU2VyaWVzUmVzY2FsZSBUaW1lU2VyaWVzU2hpZnQgVGltZVNlcmllc1RocmVhZCBUaW1lU2VyaWVzV2luZG93IFRpbWVVc2VkIFRpbWVWYWx1ZSBUaW1lV2FycGluZ0NvcnJlc3BvbmRlbmNlIFRpbWVXYXJwaW5nRGlzdGFuY2UgVGltZVpvbmUgVGltZVpvbmVDb252ZXJ0IFRpbWVab25lT2Zmc2V0IFRpbWluZyBUaW55IFRpdGxlR3JvdXBpbmcgVGl0c0dyb3VwVCBUb0JveGVzIFRvQ2hhcmFjdGVyQ29kZSBUb0NvbG9yIFRvQ29udGludW91c1RpbWVNb2RlbCBUb0RhdGUgVG9kYXkgVG9EaXNjcmV0ZVRpbWVNb2RlbCBUb0VudGl0eSBUb2VwbGl0ek1hdHJpeCBUb0V4cHJlc3Npb24gVG9GaWxlTmFtZSBUb2dldGhlciBUb2dnbGUgVG9nZ2xlRmFsc2UgVG9nZ2xlciBUb2dnbGVyQmFyIFRvZ2dsZXJCb3ggVG9nZ2xlckJveE9wdGlvbnMgVG9IZWxkRXhwcmVzc2lvbiBUb0ludmVydGlibGVUaW1lU2VyaWVzIFRva2VuV29yZHMgVG9sZXJhbmNlIFRvTG93ZXJDYXNlIFRvbW9ycm93IFRvTnVtYmVyRmllbGQgVG9vQmlnIFRvb2x0aXAgVG9vbHRpcEJveCBUb29sdGlwQm94T3B0aW9ucyBUb29sdGlwRGVsYXkgVG9vbHRpcFN0eWxlIFRvcCBUb3BIYXRUcmFuc2Zvcm0gVG9Qb2xhckNvb3JkaW5hdGVzIFRvcG9sb2dpY2FsU29ydCBUb1JhZGljYWxzIFRvUnVsZXMgVG9TcGhlcmljYWxDb29yZGluYXRlcyBUb1N0cmluZyBUb3RhbCBUb3RhbEhlaWdodCBUb3RhbExheWVyIFRvdGFsVmFyaWF0aW9uRmlsdGVyIFRvdGFsV2lkdGggVG91Y2hQb3NpdGlvbiBUb3VjaHNjcmVlbkF1dG9ab29tIFRvdWNoc2NyZWVuQ29udHJvbFBsYWNlbWVudCBUb1VwcGVyQ2FzZSBUciBUcmFjZSBUcmFjZUFib3ZlIFRyYWNlQWN0aW9uIFRyYWNlQmFja3dhcmQgVHJhY2VEZXB0aCBUcmFjZURpYWxvZyBUcmFjZUZvcndhcmQgVHJhY2VJbnRlcm5hbCBUcmFjZUxldmVsIFRyYWNlT2ZmIFRyYWNlT24gVHJhY2VPcmlnaW5hbCBUcmFjZVByaW50IFRyYWNlU2NhbiBUcmFja2VkU3ltYm9scyBUcmFja2luZ0Z1bmN0aW9uIFRyYWN5V2lkb21EaXN0cmlidXRpb24gVHJhZGluZ0NoYXJ0IFRyYWRpdGlvbmFsRm9ybSBUcmFkaXRpb25hbEZ1bmN0aW9uTm90YXRpb24gVHJhZGl0aW9uYWxOb3RhdGlvbiBUcmFkaXRpb25hbE9yZGVyIFRyYWluaW5nUHJvZ3Jlc3NDaGVja3BvaW50aW5nIFRyYWluaW5nUHJvZ3Jlc3NGdW5jdGlvbiBUcmFpbmluZ1Byb2dyZXNzTWVhc3VyZW1lbnRzIFRyYWluaW5nUHJvZ3Jlc3NSZXBvcnRpbmcgVHJhaW5pbmdTdG9wcGluZ0NyaXRlcmlvbiBUcmFuc2ZlckZ1bmN0aW9uQ2FuY2VsIFRyYW5zZmVyRnVuY3Rpb25FeHBhbmQgVHJhbnNmZXJGdW5jdGlvbkZhY3RvciBUcmFuc2ZlckZ1bmN0aW9uTW9kZWwgVHJhbnNmZXJGdW5jdGlvblBvbGVzIFRyYW5zZmVyRnVuY3Rpb25UcmFuc2Zvcm0gVHJhbnNmZXJGdW5jdGlvblplcm9zIFRyYW5zZm9ybWF0aW9uQ2xhc3MgVHJhbnNmb3JtYXRpb25GdW5jdGlvbiBUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9ucyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1lZERpc3RyaWJ1dGlvbiBUcmFuc2Zvcm1lZEZpZWxkIFRyYW5zZm9ybWVkUHJvY2VzcyBUcmFuc2Zvcm1lZFJlZ2lvbiBUcmFuc2l0aW9uRGlyZWN0aW9uIFRyYW5zaXRpb25EdXJhdGlvbiBUcmFuc2l0aW9uRWZmZWN0IFRyYW5zaXRpdmVDbG9zdXJlR3JhcGggVHJhbnNpdGl2ZVJlZHVjdGlvbkdyYXBoIFRyYW5zbGF0ZSBUcmFuc2xhdGlvbk9wdGlvbnMgVHJhbnNsYXRpb25UcmFuc2Zvcm0gVHJhbnNsaXRlcmF0ZSBUcmFuc3BhcmVudCBUcmFuc3BhcmVudENvbG9yIFRyYW5zcG9zZSBUcmFuc3Bvc2VMYXllciBUcmFwU2VsZWN0aW9uIFRyYXZlbERpcmVjdGlvbnMgVHJhdmVsRGlyZWN0aW9uc0RhdGEgVHJhdmVsRGlzdGFuY2UgVHJhdmVsRGlzdGFuY2VMaXN0IFRyYXZlbE1ldGhvZCBUcmF2ZWxUaW1lIFRyZWVGb3JtIFRyZWVHcmFwaCBUcmVlR3JhcGhRIFRyZWVQbG90IFRyZW5kU3R5bGUgVHJpYW5nbGUgVHJpYW5nbGVDZW50ZXIgVHJpYW5nbGVDb25zdHJ1Y3QgVHJpYW5nbGVNZWFzdXJlbWVudCBUcmlhbmdsZVdhdmUgVHJpYW5ndWxhckRpc3RyaWJ1dGlvbiBUcmlhbmd1bGF0ZU1lc2ggVHJpZyBUcmlnRXhwYW5kIFRyaWdGYWN0b3IgVHJpZ0ZhY3Rvckxpc3QgVHJpZ2dlciBUcmlnUmVkdWNlIFRyaWdUb0V4cCBUcmltbWVkTWVhbiBUcmltbWVkVmFyaWFuY2UgVHJvcGljYWxTdG9ybURhdGEgVHJ1ZSBUcnVlUSBUcnVuY2F0ZWREaXN0cmlidXRpb24gVHJ1bmNhdGVkUG9seWhlZHJvbiBUc2FsbGlzUUV4cG9uZW50aWFsRGlzdHJpYnV0aW9uIFRzYWxsaXNRR2F1c3NpYW5EaXN0cmlidXRpb24gVFRlc3QgVHViZSBUdWJlQmV6aWVyQ3VydmVCb3ggVHViZUJlemllckN1cnZlQm94T3B0aW9ucyBUdWJlQm94IFR1YmVCb3hPcHRpb25zIFR1YmVCU3BsaW5lQ3VydmVCb3ggVHViZUJTcGxpbmVDdXJ2ZUJveE9wdGlvbnMgVHVlc2RheSBUdWtleUxhbWJkYURpc3RyaWJ1dGlvbiBUdWtleVdpbmRvdyBUdW5uZWxEYXRhIFR1cGxlcyBUdXJhbkdyYXBoIFR1cmluZ01hY2hpbmUgVHV0dGVQb2x5bm9taWFsIFR3b1dheVJ1bGUgVHlwZWQgVHlwZVNwZWNpZmllcicgK1xuICAgICAgJ1VuYXRlUSBVbmNvbXByZXNzIFVuY29uc3RyYWluZWRQYXJhbWV0ZXJzIFVuZGVmaW5lZCBVbmRlckJhciBVbmRlcmZsb3cgVW5kZXJsaW5lZCBVbmRlcm92ZXJzY3JpcHQgVW5kZXJvdmVyc2NyaXB0Qm94IFVuZGVyb3ZlcnNjcmlwdEJveE9wdGlvbnMgVW5kZXJzY3JpcHQgVW5kZXJzY3JpcHRCb3ggVW5kZXJzY3JpcHRCb3hPcHRpb25zIFVuZGVyc2VhRmVhdHVyZURhdGEgVW5kaXJlY3RlZEVkZ2UgVW5kaXJlY3RlZEdyYXBoIFVuZGlyZWN0ZWRHcmFwaFEgVW5kb09wdGlvbnMgVW5kb1RyYWNrZWRWYXJpYWJsZXMgVW5lcXVhbCBVbmVxdWFsVG8gVW5ldmFsdWF0ZWQgVW5pZm9ybURpc3RyaWJ1dGlvbiBVbmlmb3JtR3JhcGhEaXN0cmlidXRpb24gVW5pZm9ybVBvbHloZWRyb24gVW5pZm9ybVN1bURpc3RyaWJ1dGlvbiBVbmluc3RhbGwgVW5pb24gVW5pb25QbHVzIFVuaXF1ZSBVbml0YXJ5TWF0cml4USBVbml0Qm94IFVuaXRDb252ZXJ0IFVuaXREaW1lbnNpb25zIFVuaXRpemUgVW5pdFJvb3RUZXN0IFVuaXRTaW1wbGlmeSBVbml0U3RlcCBVbml0U3lzdGVtIFVuaXRUcmlhbmdsZSBVbml0VmVjdG9yIFVuaXRWZWN0b3JMYXllciBVbml0eURpbWVuc2lvbnMgVW5pdmVyc2VNb2RlbERhdGEgVW5pdmVyc2l0eURhdGEgVW5peFRpbWUgVW5wcm90ZWN0IFVucmVnaXN0ZXJFeHRlcm5hbEV2YWx1YXRvciBVbnNhbWVRIFVuc2F2ZWRWYXJpYWJsZXMgVW5zZXQgVW5zZXRTaGFyZWQgVW50cmFja2VkVmFyaWFibGVzIFVwIFVwQXJyb3cgVXBBcnJvd0JhciBVcEFycm93RG93bkFycm93IFVwZGF0ZSBVcGRhdGVEeW5hbWljT2JqZWN0cyBVcGRhdGVEeW5hbWljT2JqZWN0c1N5bmNocm9ub3VzIFVwZGF0ZUludGVydmFsIFVwZGF0ZVNlYXJjaEluZGV4IFVwRG93bkFycm93IFVwRXF1aWxpYnJpdW0gVXBwZXJDYXNlUSBVcHBlckxlZnRBcnJvdyBVcHBlclJpZ2h0QXJyb3cgVXBwZXJUcmlhbmd1bGFyaXplIFVwcGVyVHJpYW5ndWxhck1hdHJpeFEgVXBzYW1wbGUgVXBTZXQgVXBTZXREZWxheWVkIFVwVGVlIFVwVGVlQXJyb3cgVXBUbyBVcFZhbHVlcyBVUkwgVVJMQnVpbGQgVVJMRGVjb2RlIFVSTERpc3BhdGNoZXIgVVJMRG93bmxvYWQgVVJMRG93bmxvYWRTdWJtaXQgVVJMRW5jb2RlIFVSTEV4ZWN1dGUgVVJMRXhwYW5kIFVSTEZldGNoIFVSTEZldGNoQXN5bmNocm9ub3VzIFVSTFBhcnNlIFVSTFF1ZXJ5RGVjb2RlIFVSTFF1ZXJ5RW5jb2RlIFVSTFJlYWQgVVJMUmVzcG9uc2VUaW1lIFVSTFNhdmUgVVJMU2F2ZUFzeW5jaHJvbm91cyBVUkxTaG9ydGVuIFVSTFN1Ym1pdCBVc2VHcmFwaGljc1JhbmdlIFVzZXJEZWZpbmVkV2F2ZWxldCBVc2luZyBVc2luZ0Zyb250RW5kIFV0aWxpdHlGdW5jdGlvbicgK1xuICAgICAgJ1YyR2V0IFZhbGVuY2VFcnJvckhhbmRsaW5nIFZhbGlkYXRpb25MZW5ndGggVmFsaWRhdGlvblNldCBWYWx1ZSBWYWx1ZUJveCBWYWx1ZUJveE9wdGlvbnMgVmFsdWVEaW1lbnNpb25zIFZhbHVlRm9ybSBWYWx1ZVByZXByb2Nlc3NpbmdGdW5jdGlvbiBWYWx1ZVEgVmFsdWVzIFZhbHVlc0RhdGEgVmFyaWFibGVzIFZhcmlhbmNlIFZhcmlhbmNlRXF1aXZhbGVuY2VUZXN0IFZhcmlhbmNlRXN0aW1hdG9yRnVuY3Rpb24gVmFyaWFuY2VHYW1tYURpc3RyaWJ1dGlvbiBWYXJpYW5jZVRlc3QgVmVjdG9yQW5nbGUgVmVjdG9yQXJvdW5kIFZlY3RvckNvbG9yRnVuY3Rpb24gVmVjdG9yQ29sb3JGdW5jdGlvblNjYWxpbmcgVmVjdG9yRGVuc2l0eVBsb3QgVmVjdG9yR2x5cGhEYXRhIFZlY3RvckdyZWF0ZXIgVmVjdG9yR3JlYXRlckVxdWFsIFZlY3Rvckxlc3MgVmVjdG9yTGVzc0VxdWFsIFZlY3Rvck1hcmtlcnMgVmVjdG9yUGxvdCBWZWN0b3JQbG90M0QgVmVjdG9yUG9pbnRzIFZlY3RvclEgVmVjdG9ycyBWZWN0b3JTY2FsZSBWZWN0b3JTdHlsZSBWZWUgVmVyYmF0aW0gVmVyYm9zZSBWZXJib3NlQ29udmVydFRvUG9zdFNjcmlwdFBhY2tldCBWZXJpZmljYXRpb25UZXN0IFZlcmlmeUNvbnZlcmdlbmNlIFZlcmlmeURlcml2ZWRLZXkgVmVyaWZ5RGlnaXRhbFNpZ25hdHVyZSBWZXJpZnlJbnRlcnByZXRhdGlvbiBWZXJpZnlTZWN1cml0eUNlcnRpZmljYXRlcyBWZXJpZnlTb2x1dGlvbnMgVmVyaWZ5VGVzdEFzc3VtcHRpb25zIFZlcnNpb24gVmVyc2lvbk51bWJlciBWZXJ0ZXhBZGQgVmVydGV4Q2FwYWNpdHkgVmVydGV4Q29sb3JzIFZlcnRleENvbXBvbmVudCBWZXJ0ZXhDb25uZWN0aXZpdHkgVmVydGV4Q29udHJhY3QgVmVydGV4Q29vcmRpbmF0ZVJ1bGVzIFZlcnRleENvb3JkaW5hdGVzIFZlcnRleENvcnJlbGF0aW9uU2ltaWxhcml0eSBWZXJ0ZXhDb3NpbmVTaW1pbGFyaXR5IFZlcnRleENvdW50IFZlcnRleENvdmVyUSBWZXJ0ZXhEYXRhQ29vcmRpbmF0ZXMgVmVydGV4RGVncmVlIFZlcnRleERlbGV0ZSBWZXJ0ZXhEaWNlU2ltaWxhcml0eSBWZXJ0ZXhFY2NlbnRyaWNpdHkgVmVydGV4SW5Db21wb25lbnQgVmVydGV4SW5EZWdyZWUgVmVydGV4SW5kZXggVmVydGV4SmFjY2FyZFNpbWlsYXJpdHkgVmVydGV4TGFiZWxpbmcgVmVydGV4TGFiZWxzIFZlcnRleExhYmVsU3R5bGUgVmVydGV4TGlzdCBWZXJ0ZXhOb3JtYWxzIFZlcnRleE91dENvbXBvbmVudCBWZXJ0ZXhPdXREZWdyZWUgVmVydGV4USBWZXJ0ZXhSZW5kZXJpbmdGdW5jdGlvbiBWZXJ0ZXhSZXBsYWNlIFZlcnRleFNoYXBlIFZlcnRleFNoYXBlRnVuY3Rpb24gVmVydGV4U2l6ZSBWZXJ0ZXhTdHlsZSBWZXJ0ZXhUZXh0dXJlQ29vcmRpbmF0ZXMgVmVydGV4V2VpZ2h0IFZlcnRleFdlaWdodGVkR3JhcGhRIFZlcnRpY2FsIFZlcnRpY2FsQmFyIFZlcnRpY2FsRm9ybSBWZXJ0aWNhbEdhdWdlIFZlcnRpY2FsU2VwYXJhdG9yIFZlcnRpY2FsU2xpZGVyIFZlcnRpY2FsVGlsZGUgVmlld0FuZ2xlIFZpZXdDZW50ZXIgVmlld01hdHJpeCBWaWV3UG9pbnQgVmlld1BvaW50U2VsZWN0b3JTZXR0aW5ncyBWaWV3UG9ydCBWaWV3UHJvamVjdGlvbiBWaWV3UmFuZ2UgVmlld1ZlY3RvciBWaWV3VmVydGljYWwgVmlydHVhbEdyb3VwRGF0YSBWaXNpYmxlIFZpc2libGVDZWxsIFZvaWNlU3R5bGVEYXRhIFZvaWd0RGlzdHJpYnV0aW9uIFZvbGNhbm9EYXRhIFZvbHVtZSBWb25NaXNlc0Rpc3RyaWJ1dGlvbiBWb3Jvbm9pTWVzaCcgK1xuICAgICAgJ1dhaXRBbGwgV2FpdEFzeW5jaHJvbm91c1Rhc2sgV2FpdE5leHQgV2FpdFVudGlsIFdha2VieURpc3RyaWJ1dGlvbiBXYWxsZW5pdXNIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvbiBXYXJpbmdZdWxlRGlzdHJpYnV0aW9uIFdhcnBpbmdDb3JyZXNwb25kZW5jZSBXYXJwaW5nRGlzdGFuY2UgV2F0ZXJzaGVkQ29tcG9uZW50cyBXYXRzb25VU3F1YXJlVGVzdCBXYXR0c1N0cm9nYXR6R3JhcGhEaXN0cmlidXRpb24gV2F2ZWxldEJlc3RCYXNpcyBXYXZlbGV0RmlsdGVyQ29lZmZpY2llbnRzIFdhdmVsZXRJbWFnZVBsb3QgV2F2ZWxldExpc3RQbG90IFdhdmVsZXRNYXBJbmRleGVkIFdhdmVsZXRNYXRyaXhQbG90IFdhdmVsZXRQaGkgV2F2ZWxldFBzaSBXYXZlbGV0U2NhbGUgV2F2ZWxldFNjYWxvZ3JhbSBXYXZlbGV0VGhyZXNob2xkIFdlYWtseUNvbm5lY3RlZENvbXBvbmVudHMgV2Vha2x5Q29ubmVjdGVkR3JhcGhDb21wb25lbnRzIFdlYWtseUNvbm5lY3RlZEdyYXBoUSBXZWFrU3RhdGlvbmFyaXR5IFdlYXRoZXJEYXRhIFdlYXRoZXJGb3JlY2FzdERhdGEgV2ViQXVkaW9TZWFyY2ggV2ViRWxlbWVudE9iamVjdCBXZWJlckUgV2ViRXhlY3V0ZSBXZWJJbWFnZSBXZWJJbWFnZVNlYXJjaCBXZWJTZWFyY2ggV2ViU2Vzc2lvbk9iamVjdCBXZWJTZXNzaW9ucyBXZWJXaW5kb3dPYmplY3QgV2VkZ2UgV2VkbmVzZGF5IFdlaWJ1bGxEaXN0cmlidXRpb24gV2VpZXJzdHJhc3NFMSBXZWllcnN0cmFzc0UyIFdlaWVyc3RyYXNzRTMgV2VpZXJzdHJhc3NFdGExIFdlaWVyc3RyYXNzRXRhMiBXZWllcnN0cmFzc0V0YTMgV2VpZXJzdHJhc3NIYWxmUGVyaW9kcyBXZWllcnN0cmFzc0hhbGZQZXJpb2RXMSBXZWllcnN0cmFzc0hhbGZQZXJpb2RXMiBXZWllcnN0cmFzc0hhbGZQZXJpb2RXMyBXZWllcnN0cmFzc0ludmFyaWFudEcyIFdlaWVyc3RyYXNzSW52YXJpYW50RzMgV2VpZXJzdHJhc3NJbnZhcmlhbnRzIFdlaWVyc3RyYXNzUCBXZWllcnN0cmFzc1BQcmltZSBXZWllcnN0cmFzc1NpZ21hIFdlaWVyc3RyYXNzWmV0YSBXZWlnaHRlZEFkamFjZW5jeUdyYXBoIFdlaWdodGVkQWRqYWNlbmN5TWF0cml4IFdlaWdodGVkRGF0YSBXZWlnaHRlZEdyYXBoUSBXZWlnaHRzIFdlbGNoV2luZG93IFdoZWVsR3JhcGggV2hlbkV2ZW50IFdoaWNoIFdoaWxlIFdoaXRlIFdoaXRlTm9pc2VQcm9jZXNzIFdoaXRlUG9pbnQgV2hpdGVzcGFjZSBXaGl0ZXNwYWNlQ2hhcmFjdGVyIFdoaXR0YWtlck0gV2hpdHRha2VyVyBXaWVuZXJGaWx0ZXIgV2llbmVyUHJvY2VzcyBXaWduZXJEIFdpZ25lclNlbWljaXJjbGVEaXN0cmlidXRpb24gV2lraXBlZGlhRGF0YSBXaWtpcGVkaWFTZWFyY2ggV2lsa3NXIFdpbGtzV1Rlc3QgV2luZERpcmVjdGlvbkRhdGEgV2luZGluZ0NvdW50IFdpbmRpbmdQb2x5Z29uIFdpbmRvd0NsaWNrU2VsZWN0IFdpbmRvd0VsZW1lbnRzIFdpbmRvd0Zsb2F0aW5nIFdpbmRvd0ZyYW1lIFdpbmRvd0ZyYW1lRWxlbWVudHMgV2luZG93TWFyZ2lucyBXaW5kb3dNb3ZhYmxlIFdpbmRvd09wYWNpdHkgV2luZG93UGVyc2lzdGVudFN0eWxlcyBXaW5kb3dTZWxlY3RlZCBXaW5kb3dTaXplIFdpbmRvd1N0YXR1c0FyZWEgV2luZG93VGl0bGUgV2luZG93VG9vbGJhcnMgV2luZG93V2lkdGggV2luZFNwZWVkRGF0YSBXaW5kVmVjdG9yRGF0YSBXaW5zb3JpemVkTWVhbiBXaW5zb3JpemVkVmFyaWFuY2UgV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvbiBXaXRoIFdvbGZyYW1BbHBoYSBXb2xmcmFtQWxwaGFEYXRlIFdvbGZyYW1BbHBoYVF1YW50aXR5IFdvbGZyYW1BbHBoYVJlc3VsdCBXb2xmcmFtTGFuZ3VhZ2VEYXRhIFdvcmQgV29yZEJvdW5kYXJ5IFdvcmRDaGFyYWN0ZXIgV29yZENsb3VkIFdvcmRDb3VudCBXb3JkQ291bnRzIFdvcmREYXRhIFdvcmREZWZpbml0aW9uIFdvcmRGcmVxdWVuY3kgV29yZEZyZXF1ZW5jeURhdGEgV29yZExpc3QgV29yZE9yaWVudGF0aW9uIFdvcmRTZWFyY2ggV29yZFNlbGVjdGlvbkZ1bmN0aW9uIFdvcmRTZXBhcmF0b3JzIFdvcmRTcGFjaW5ncyBXb3JkU3RlbSBXb3JkVHJhbnNsYXRpb24gV29ya2luZ1ByZWNpc2lvbiBXcmFwQXJvdW5kIFdyaXRlIFdyaXRlTGluZSBXcml0ZVN0cmluZyBXcm9uc2tpYW4nICtcbiAgICAgICdYTUxFbGVtZW50IFhNTE9iamVjdCBYTUxUZW1wbGF0ZSBYbm9yIFhvciBYWVpDb2xvcicgK1xuICAgICAgJ1llbGxvdyBZZXN0ZXJkYXkgWXVsZURpc3NpbWlsYXJpdHknICtcbiAgICAgICdaZXJuaWtlUiBaZXJvU3ltbWV0cmljIFplcm9UZXN0IFplcm9XaWR0aFRpbWVzIFpldGEgWmV0YVplcm8gWklQQ29kZURhdGEgWmlwZkRpc3RyaWJ1dGlvbiBab29tQ2VudGVyIFpvb21GYWN0b3IgWlRlc3QgWlRyYW5zZm9ybScgK1xuICAgICAgJyRBYm9ydGVkICRBY3RpdmF0aW9uR3JvdXBJRCAkQWN0aXZhdGlvbktleSAkQWN0aXZhdGlvblVzZXJSZWdpc3RlcmVkICRBZGRPbnNEaXJlY3RvcnkgJEFsbG93RXh0ZXJuYWxDaGFubmVsRnVuY3Rpb25zICRBc3NlcnRGdW5jdGlvbiAkQXNzdW1wdGlvbnMgJEFzeW5jaHJvbm91c1Rhc2sgJEF1ZGlvSW5wdXREZXZpY2VzICRBdWRpb091dHB1dERldmljZXMgJEJhc2VEaXJlY3RvcnkgJEJhdGNoSW5wdXQgJEJhdGNoT3V0cHV0ICRCbG9ja2NoYWluQmFzZSAkQm94Rm9ybXMgJEJ5dGVPcmRlcmluZyAkQ2FjaGVCYXNlRGlyZWN0b3J5ICRDYW5jZWxlZCAkQ2hhbm5lbEJhc2UgJENoYXJhY3RlckVuY29kaW5nICRDaGFyYWN0ZXJFbmNvZGluZ3MgJENsb3VkQmFzZSAkQ2xvdWRDb25uZWN0ZWQgJENsb3VkQ3JlZGl0c0F2YWlsYWJsZSAkQ2xvdWRFdmFsdWF0aW9uICRDbG91ZEV4cHJlc3Npb25CYXNlICRDbG91ZE9iamVjdE5hbWVGb3JtYXQgJENsb3VkT2JqZWN0VVJMVHlwZSAkQ2xvdWRSb290RGlyZWN0b3J5ICRDbG91ZFN5bWJvbEJhc2UgJENsb3VkVXNlcklEICRDbG91ZFVzZXJVVUlEICRDbG91ZFZlcnNpb24gJENsb3VkVmVyc2lvbk51bWJlciAkQ2xvdWRXb2xmcmFtRW5naW5lVmVyc2lvbk51bWJlciAkQ29tbWFuZExpbmUgJENvbXBpbGF0aW9uVGFyZ2V0ICRDb25kaXRpb25Ib2xkICRDb25maWd1cmVkS2VybmVscyAkQ29udGV4dCAkQ29udGV4dFBhdGggJENvbnRyb2xBY3RpdmVTZXR0aW5nICRDb29raWVzICRDb29raWVTdG9yZSAkQ3JlYXRpb25EYXRlICRDdXJyZW50TGluayAkQ3VycmVudFRhc2sgJEN1cnJlbnRXZWJTZXNzaW9uICREYXRlU3RyaW5nRm9ybWF0ICREZWZhdWx0QXVkaW9JbnB1dERldmljZSAkRGVmYXVsdEF1ZGlvT3V0cHV0RGV2aWNlICREZWZhdWx0Rm9udCAkRGVmYXVsdEZyb250RW5kICREZWZhdWx0SW1hZ2luZ0RldmljZSAkRGVmYXVsdExvY2FsQmFzZSAkRGVmYXVsdE1haWxib3ggJERlZmF1bHROZXR3b3JrSW50ZXJmYWNlICREZWZhdWx0UGF0aCAkRGlzcGxheSAkRGlzcGxheUZ1bmN0aW9uICREaXN0cmlidXRlZENvbnRleHRzICREeW5hbWljRXZhbHVhdGlvbiAkRWNobyAkRW1iZWRDb2RlRW52aXJvbm1lbnRzICRFbWJlZGRhYmxlU2VydmljZXMgJEVudGl0eVN0b3JlcyAkRXBpbG9nICRFdmFsdWF0aW9uQ2xvdWRCYXNlICRFdmFsdWF0aW9uQ2xvdWRPYmplY3QgJEV2YWx1YXRpb25FbnZpcm9ubWVudCAkRXhwb3J0Rm9ybWF0cyAkRmFpbGVkICRGaW5hbmNpYWxEYXRhU291cmNlICRGb250RmFtaWxpZXMgJEZvcm1hdFR5cGUgJEZyb250RW5kICRGcm9udEVuZFNlc3Npb24gJEdlb0VudGl0eVR5cGVzICRHZW9Mb2NhdGlvbiAkR2VvTG9jYXRpb25DaXR5ICRHZW9Mb2NhdGlvbkNvdW50cnkgJEdlb0xvY2F0aW9uUHJlY2lzaW9uICRHZW9Mb2NhdGlvblNvdXJjZSAkSGlzdG9yeUxlbmd0aCAkSG9tZURpcmVjdG9yeSAkSFRNTEV4cG9ydFJ1bGVzICRIVFRQQ29va2llcyAkSFRUUFJlcXVlc3QgJElnbm9yZUVPRiAkSW1hZ2VGb3JtYXR0aW5nV2lkdGggJEltYWdpbmdEZXZpY2UgJEltYWdpbmdEZXZpY2VzICRJbXBvcnRGb3JtYXRzICRJbmNvbWluZ01haWxTZXR0aW5ncyAkSW5pdGlhbERpcmVjdG9yeSAkSW5pdGlhbGl6YXRpb24gJEluaXRpYWxpemF0aW9uQ29udGV4dHMgJElucHV0ICRJbnB1dEZpbGVOYW1lICRJbnB1dFN0cmVhbU1ldGhvZHMgJEluc3BlY3RvciAkSW5zdGFsbGF0aW9uRGF0ZSAkSW5zdGFsbGF0aW9uRGlyZWN0b3J5ICRJbnRlcmZhY2VFbnZpcm9ubWVudCAkSW50ZXJwcmV0ZXJUeXBlcyAkSXRlcmF0aW9uTGltaXQgJEtlcm5lbENvdW50ICRLZXJuZWxJRCAkTGFuZ3VhZ2UgJExhdW5jaERpcmVjdG9yeSAkTGlicmFyeVBhdGggJExpY2Vuc2VFeHBpcmF0aW9uRGF0ZSAkTGljZW5zZUlEICRMaWNlbnNlUHJvY2Vzc2VzICRMaWNlbnNlU2VydmVyICRMaWNlbnNlU3VicHJvY2Vzc2VzICRMaWNlbnNlVHlwZSAkTGluZSAkTGlua2VkICRMaW5rU3VwcG9ydGVkICRMb2FkZWRGaWxlcyAkTG9jYWxCYXNlICRMb2NhbFN5bWJvbEJhc2UgJE1hY2hpbmVBZGRyZXNzZXMgJE1hY2hpbmVEb21haW4gJE1hY2hpbmVEb21haW5zICRNYWNoaW5lRXBzaWxvbiAkTWFjaGluZUlEICRNYWNoaW5lTmFtZSAkTWFjaGluZVByZWNpc2lvbiAkTWFjaGluZVR5cGUgJE1heEV4dHJhUHJlY2lzaW9uICRNYXhMaWNlbnNlUHJvY2Vzc2VzICRNYXhMaWNlbnNlU3VicHJvY2Vzc2VzICRNYXhNYWNoaW5lTnVtYmVyICRNYXhOdW1iZXIgJE1heFBpZWNld2lzZUNhc2VzICRNYXhQcmVjaXNpb24gJE1heFJvb3REZWdyZWUgJE1lc3NhZ2VHcm91cHMgJE1lc3NhZ2VMaXN0ICRNZXNzYWdlUHJlUHJpbnQgJE1lc3NhZ2VzICRNaW5NYWNoaW5lTnVtYmVyICRNaW5OdW1iZXIgJE1pbm9yUmVsZWFzZU51bWJlciAkTWluUHJlY2lzaW9uICRNb2JpbGVQaG9uZSAkTW9kdWxlTnVtYmVyICROZXR3b3JrQ29ubmVjdGVkICROZXR3b3JrSW50ZXJmYWNlcyAkTmV0d29ya0xpY2Vuc2UgJE5ld01lc3NhZ2UgJE5ld1N5bWJvbCAkTm90ZWJvb2tzICROb1ZhbHVlICROdW1iZXJNYXJrcyAkT2ZmICRPcGVyYXRpbmdTeXN0ZW0gJE91dHB1dCAkT3V0cHV0Rm9ybXMgJE91dHB1dFNpemVMaW1pdCAkT3V0cHV0U3RyZWFtTWV0aG9kcyAkUGFja2FnZXMgJFBhcmVudExpbmsgJFBhcmVudFByb2Nlc3NJRCAkUGFzc3dvcmRGaWxlICRQYXRjaExldmVsSUQgJFBhdGggJFBhdGhuYW1lU2VwYXJhdG9yICRQZXJmb3JtYW5jZUdvYWwgJFBlcm1pc3Npb25zICRQZXJtaXNzaW9uc0dyb3VwQmFzZSAkUGVyc2lzdGVuY2VCYXNlICRQZXJzaXN0ZW5jZVBhdGggJFBpcGVTdXBwb3J0ZWQgJFBsb3RUaGVtZSAkUG9zdCAkUHJlICRQcmVmZXJlbmNlc0RpcmVjdG9yeSAkUHJlSW5pdGlhbGl6YXRpb24gJFByZVByaW50ICRQcmVSZWFkICRQcmludEZvcm1zICRQcmludExpdGVyYWwgJFByaW50b3V0M0RQcmV2aWV3ZXIgJFByb2Nlc3NJRCAkUHJvY2Vzc29yQ291bnQgJFByb2Nlc3NvclR5cGUgJFByb2R1Y3RJbmZvcm1hdGlvbiAkUHJvZ3JhbU5hbWUgJFB1Ymxpc2hlcklEICRSYW5kb21TdGF0ZSAkUmVjdXJzaW9uTGltaXQgJFJlZ2lzdGVyZWREZXZpY2VDbGFzc2VzICRSZWdpc3RlcmVkVXNlck5hbWUgJFJlbGVhc2VOdW1iZXIgJFJlcXVlc3RlckFkZHJlc3MgJFJlcXVlc3RlcldvbGZyYW1JRCAkUmVxdWVzdGVyV29sZnJhbVVVSUQgJFJlc291cmNlU3lzdGVtQmFzZSAkUm9vdERpcmVjdG9yeSAkU2NoZWR1bGVkVGFzayAkU2NyaXB0Q29tbWFuZExpbmUgJFNjcmlwdElucHV0U3RyaW5nICRTZWN1cmVkQXV0aGVudGljYXRpb25LZXlUb2tlbnMgJFNlcnZpY2VDcmVkaXRzQXZhaWxhYmxlICRTZXJ2aWNlcyAkU2Vzc2lvbklEICRTZXRQYXJlbnRMaW5rICRTaGFyZWRGdW5jdGlvbnMgJFNoYXJlZFZhcmlhYmxlcyAkU291bmREaXNwbGF5ICRTb3VuZERpc3BsYXlGdW5jdGlvbiAkU291cmNlTGluayAkU1NIQXV0aGVudGljYXRpb24gJFN1bW1hcnlCb3hEYXRhU2l6ZUxpbWl0ICRTdXBwcmVzc0lucHV0Rm9ybUhlYWRzICRTeW5jaHJvbm91c0V2YWx1YXRpb24gJFN5bnRheEhhbmRsZXIgJFN5c3RlbSAkU3lzdGVtQ2hhcmFjdGVyRW5jb2RpbmcgJFN5c3RlbUlEICRTeXN0ZW1NZW1vcnkgJFN5c3RlbVNoZWxsICRTeXN0ZW1UaW1lWm9uZSAkU3lzdGVtV29yZExlbmd0aCAkVGVtcGxhdGVQYXRoICRUZW1wb3JhcnlEaXJlY3RvcnkgJFRlbXBvcmFyeVByZWZpeCAkVGVzdEZpbGVOYW1lICRUZXh0U3R5bGUgJFRpbWVkT3V0ICRUaW1lVW5pdCAkVGltZVpvbmUgJFRpbWVab25lRW50aXR5ICRUb3BEaXJlY3RvcnkgJFRyYWNlT2ZmICRUcmFjZU9uICRUcmFjZVBhdHRlcm4gJFRyYWNlUG9zdEFjdGlvbiAkVHJhY2VQcmVBY3Rpb24gJFVuaXRTeXN0ZW0gJFVyZ2VudCAkVXNlckFkZE9uc0RpcmVjdG9yeSAkVXNlckFnZW50TGFuZ3VhZ2VzICRVc2VyQWdlbnRNYWNoaW5lICRVc2VyQWdlbnROYW1lICRVc2VyQWdlbnRPcGVyYXRpbmdTeXN0ZW0gJFVzZXJBZ2VudFN0cmluZyAkVXNlckFnZW50VmVyc2lvbiAkVXNlckJhc2VEaXJlY3RvcnkgJFVzZXJEb2N1bWVudHNEaXJlY3RvcnkgJFVzZXJuYW1lICRVc2VyTmFtZSAkVXNlclVSTEJhc2UgJFZlcnNpb24gJFZlcnNpb25OdW1iZXIgJFZvaWNlU3R5bGVzICRXb2xmcmFtSUQgJFdvbGZyYW1VVUlEJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKFxcXFwqJywgJ1xcXFwqXFxcXCknLCB7Y29udGFpbnM6IFsnc2VsZiddfSksXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IC8qXG4gIEZvcm1hbCBzeW50YXggaXMgbm90IHB1Ymxpc2hlZCwgaGVscGZ1bCBsaW5rOlxuICBodHRwczovL2dpdGh1Yi5jb20va29ybmlsb3ZhLWwvbWF0bGFiLUludGVsbGlKLXBsdWdpbi9ibG9iL21hc3Rlci9zcmMvbWFpbi9ncmFtbWFyL01hdGxhYi5ibmZcbiovXG5mdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIFRSQU5TUE9TRV9SRSA9ICcoXFwnfFxcXFwuXFwnKSsnO1xuICB2YXIgVFJBTlNQT1NFID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgeyBiZWdpbjogVFJBTlNQT1NFX1JFIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2JyZWFrIGNhc2UgY2F0Y2ggY2xhc3NkZWYgY29udGludWUgZWxzZSBlbHNlaWYgZW5kIGVudW1lcmF0ZWQgZXZlbnRzIGZvciBmdW5jdGlvbiAnICtcbiAgICAgICAgJ2dsb2JhbCBpZiBtZXRob2RzIG90aGVyd2lzZSBwYXJmb3IgcGVyc2lzdGVudCBwcm9wZXJ0aWVzIHJldHVybiBzcG1kIHN3aXRjaCB0cnkgd2hpbGUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzaW4gc2luZCBzaW5oIGFzaW4gYXNpbmQgYXNpbmggY29zIGNvc2QgY29zaCBhY29zIGFjb3NkIGFjb3NoIHRhbiB0YW5kIHRhbmggYXRhbiAnICtcbiAgICAgICAgJ2F0YW5kIGF0YW4yIGF0YW5oIHNlYyBzZWNkIHNlY2ggYXNlYyBhc2VjZCBhc2VjaCBjc2MgY3NjZCBjc2NoIGFjc2MgYWNzY2QgYWNzY2ggY290ICcgK1xuICAgICAgICAnY290ZCBjb3RoIGFjb3QgYWNvdGQgYWNvdGggaHlwb3QgZXhwIGV4cG0xIGxvZyBsb2cxcCBsb2cxMCBsb2cyIHBvdzIgcmVhbHBvdyByZWFsbG9nICcgK1xuICAgICAgICAncmVhbHNxcnQgc3FydCBudGhyb290IG5leHRwb3cyIGFicyBhbmdsZSBjb21wbGV4IGNvbmogaW1hZyByZWFsIHVud3JhcCBpc3JlYWwgJyArXG4gICAgICAgICdjcGx4cGFpciBmaXggZmxvb3IgY2VpbCByb3VuZCBtb2QgcmVtIHNpZ24gYWlyeSBiZXNzZWxqIGJlc3NlbHkgYmVzc2VsaCBiZXNzZWxpICcgK1xuICAgICAgICAnYmVzc2VsayBiZXRhIGJldGFpbmMgYmV0YWxuIGVsbGlwaiBlbGxpcGtlIGVyZiBlcmZjIGVyZmN4IGVyZmludiBleHBpbnQgZ2FtbWEgJyArXG4gICAgICAgICdnYW1tYWluYyBnYW1tYWxuIHBzaSBsZWdlbmRyZSBjcm9zcyBkb3QgZmFjdG9yIGlzcHJpbWUgcHJpbWVzIGdjZCBsY20gcmF0IHJhdHMgcGVybXMgJyArXG4gICAgICAgICduY2hvb3NlayBmYWN0b3JpYWwgY2FydDJzcGggY2FydDJwb2wgcG9sMmNhcnQgc3BoMmNhcnQgaHN2MnJnYiByZ2IyaHN2IHplcm9zIG9uZXMgJyArXG4gICAgICAgICdleWUgcmVwbWF0IHJhbmQgcmFuZG4gbGluc3BhY2UgbG9nc3BhY2UgZnJlcXNwYWNlIG1lc2hncmlkIGFjY3VtYXJyYXkgc2l6ZSBsZW5ndGggJyArXG4gICAgICAgICduZGltcyBudW1lbCBkaXNwIGlzZW1wdHkgaXNlcXVhbCBpc2VxdWFsd2l0aGVxdWFsbmFucyBjYXQgcmVzaGFwZSBkaWFnIGJsa2RpYWcgdHJpbCAnICtcbiAgICAgICAgJ3RyaXUgZmxpcGxyIGZsaXB1ZCBmbGlwZGltIHJvdDkwIGZpbmQgc3ViMmluZCBpbmQyc3ViIGJzeGZ1biBuZGdyaWQgcGVybXV0ZSBpcGVybXV0ZSAnICtcbiAgICAgICAgJ3NoaWZ0ZGltIGNpcmNzaGlmdCBzcXVlZXplIGlzc2NhbGFyIGlzdmVjdG9yIGFucyBlcHMgcmVhbG1heCByZWFsbWluIHBpIGkgaW5mIG5hbiAnICtcbiAgICAgICAgJ2lzbmFuIGlzaW5mIGlzZmluaXRlIGogd2h5IGNvbXBhbiBnYWxsZXJ5IGhhZGFtYXJkIGhhbmtlbCBoaWxiIGludmhpbGIgbWFnaWMgcGFzY2FsICcgK1xuICAgICAgICAncm9zc2VyIHRvZXBsaXR6IHZhbmRlciB3aWxraW5zb24gbWF4IG1pbiBuYW5tYXggbmFubWluIG1lYW4gbmFubWVhbiB0eXBlIHRhYmxlICcgK1xuICAgICAgICAncmVhZHRhYmxlIHdyaXRldGFibGUgc29ydHJvd3Mgc29ydCBmaWd1cmUgcGxvdCBwbG90MyBzY2F0dGVyIHNjYXR0ZXIzIGNlbGxmdW4gJyArXG4gICAgICAgICdsZWdlbmQgaW50ZXJzZWN0IGlzbWVtYmVyIHByb2NydXN0ZXMgaG9sZCBudW0yY2VsbCAnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAnKC8vfFwifCN8L1xcXFwqfFxcXFxzKy9cXFxcdyspJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogJyQnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7YmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ30sXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogL3RydWV8ZmFsc2UvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpBLVpdW2EtekEtWl8wLTldKicgKyBUUkFOU1BPU0VfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAge2JlZ2luOiAnXFwnXFwnJ31dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcXXx9fFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtiZWdpbjogJ1wiXCInfVxuICAgICAgICBdLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXlxcXFxzKlxcXFwlXFxcXHtcXFxccyokJywgJ15cXFxccypcXFxcJVxcXFx9XFxcXHMqJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcJScsICckJylcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSAnaWYgdGhlbiBlbHNlIGVsc2VpZiBmb3IgdGhydSBkbyB3aGlsZSB1bmxlc3Mgc3RlcCBpbiBhbmQgb3Igbm90JztcbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgdW5rbm93biBpbmYgbWluZiBpbmQgdW5kICVlICVpICVwaSAlcGhpICVnYW1tYSc7XG4gIHZhciBCVUlMVElOX0ZVTkNUSU9OUyA9XG4gICAgICAgICcgYWJhc2VwIGFicyBhYnNpbnQgYWJzb2x1dGVfcmVhbF90aW1lIGFjb3MgYWNvc2ggYWNvdCBhY290aCBhY3NjIGFjc2NoIGFjdGl2YXRlJ1xuICAgICAgKyAnIGFkZGNvbCBhZGRfZWRnZSBhZGRfZWRnZXMgYWRkbWF0cmljZXMgYWRkcm93IGFkZF92ZXJ0ZXggYWRkX3ZlcnRpY2VzIGFkamFjZW5jeV9tYXRyaXgnXG4gICAgICArICcgYWRqb2luIGFkam9pbnQgYWYgYWdkIGFpcnkgYWlyeV9haSBhaXJ5X2JpIGFpcnlfZGFpIGFpcnlfZGJpIGFsZ3N5cyBhbGdfdHlwZSdcbiAgICAgICsgJyBhbGlhcyBhbGxyb290cyBhbHBoYWNoYXJwIGFscGhhbnVtZXJpY3AgYW1vcnRpemF0aW9uICVhbmQgYW5udWl0eV9mdidcbiAgICAgICsgJyBhbm51aXR5X3B2IGFudGlkIGFudGlkaWZmIEFudGlEaWZmZXJlbmNlIGFwcGVuZCBhcHBlbmRmaWxlIGFwcGx5IGFwcGx5MSBhcHBseTInXG4gICAgICArICcgYXBwbHliMSBhcHJvcG9zIGFyZ3MgYXJpdF9hbW9ydGl6YXRpb24gYXJpdGhtZXRpYyBhcml0aHN1bSBhcnJheSBhcnJheWFwcGx5J1xuICAgICAgKyAnIGFycmF5aW5mbyBhcnJheW1ha2UgYXJyYXlzZXRhcHBseSBhc2NpaSBhc2VjIGFzZWNoIGFzaW4gYXNpbmggYXNraW50ZWdlcidcbiAgICAgICsgJyBhc2tzaWduIGFzc29jIGFzc29jX2xlZ2VuZHJlX3AgYXNzb2NfbGVnZW5kcmVfcSBhc3N1bWUgYXNzdW1lX2V4dGVybmFsX2J5dGVfb3JkZXInXG4gICAgICArICcgYXN5bXBhIGF0IGF0YW4gYXRhbjIgYXRhbmggYXRlbnNpbXAgYXRvbSBhdHZhbHVlIGF1Z2NvZWZtYXRyaXggYXVnbWVudGVkX2xhZ3JhbmdpYW5fbWV0aG9kJ1xuICAgICAgKyAnIGF2IGF2ZXJhZ2VfZGVncmVlIGJhY2t0cmFjZSBiYXJzIGJhcnNwbG90IGJhcnNwbG90X2Rlc2NyaXB0aW9uIGJhc2U2NCBiYXNlNjRfZGVjb2RlJ1xuICAgICAgKyAnIGJhc2hpbmRpY2VzIGJhdGNoIGJhdGNobG9hZCBiYzIgYmR2YWMgYmVsbG4gYmVuZWZpdF9jb3N0IGJlcm4gYmVybnBvbHkgYmVybnN0ZWluX2FwcHJveCdcbiAgICAgICsgJyBiZXJuc3RlaW5fZXhwYW5kIGJlcm5zdGVpbl9wb2x5IGJlc3NlbCBiZXNzZWxfaSBiZXNzZWxfaiBiZXNzZWxfayBiZXNzZWxfc2ltcGxpZnknXG4gICAgICArICcgYmVzc2VsX3kgYmV0YSBiZXRhX2luY29tcGxldGUgYmV0YV9pbmNvbXBsZXRlX2dlbmVyYWxpemVkIGJldGFfaW5jb21wbGV0ZV9yZWd1bGFyaXplZCdcbiAgICAgICsgJyBiZXpvdXQgYmZhbGxyb290cyBiZmZhYyBiZl9maW5kX3Jvb3QgYmZfZm1pbl9jb2J5bGEgYmZoemV0YSBiZmxvYXQgYmZsb2F0cCdcbiAgICAgICsgJyBiZnBzaSBiZnBzaTAgYmZ6ZXRhIGJpY29ubmVjdGVkX2NvbXBvbmVudHMgYmltZXRyaWMgYmlub21pYWwgYmlwYXJ0aXRpb24nXG4gICAgICArICcgYmxvY2sgYmxvY2ttYXRyaXhwIGJvZGVfZ2FpbiBib2RlX3BoYXNlIGJvdGhjb2VmIGJveCBib3hwbG90IGJveHBsb3RfZGVzY3JpcHRpb24nXG4gICAgICArICcgYnJlYWsgYnVnX3JlcG9ydCBidWlsZF9pbmZvfDEwIGJ1aWxkcSBidWlsZF9zYW1wbGUgYnVybiBjYWJzIGNhbmZvcm0gY2FudGVuJ1xuICAgICAgKyAnIGNhcmRpbmFsaXR5IGNhcmcgY2FydGFuIGNhcnRlc2lhbl9wcm9kdWN0IGNhdGNoIGNhdWNoeV9tYXRyaXggY2JmZmFjIGNkZl9iZXJub3VsbGknXG4gICAgICArICcgY2RmX2JldGEgY2RmX2Jpbm9taWFsIGNkZl9jYXVjaHkgY2RmX2NoaTIgY2RmX2NvbnRpbnVvdXNfdW5pZm9ybSBjZGZfZGlzY3JldGVfdW5pZm9ybSdcbiAgICAgICsgJyBjZGZfZXhwIGNkZl9mIGNkZl9nYW1tYSBjZGZfZ2VuZXJhbF9maW5pdGVfZGlzY3JldGUgY2RmX2dlb21ldHJpYyBjZGZfZ3VtYmVsJ1xuICAgICAgKyAnIGNkZl9oeXBlcmdlb21ldHJpYyBjZGZfbGFwbGFjZSBjZGZfbG9naXN0aWMgY2RmX2xvZ25vcm1hbCBjZGZfbmVnYXRpdmVfYmlub21pYWwnXG4gICAgICArICcgY2RmX25vbmNlbnRyYWxfY2hpMiBjZGZfbm9uY2VudHJhbF9zdHVkZW50X3QgY2RmX25vcm1hbCBjZGZfcGFyZXRvIGNkZl9wb2lzc29uJ1xuICAgICAgKyAnIGNkZl9yYW5rX3N1bSBjZGZfcmF5bGVpZ2ggY2RmX3NpZ25lZF9yYW5rIGNkZl9zdHVkZW50X3QgY2RmX3dlaWJ1bGwgY2Rpc3BsYXknXG4gICAgICArICcgY2VpbGluZyBjZW50cmFsX21vbWVudCBjZXF1YWwgY2VxdWFsaWdub3JlIGNmIGNmZGlzcmVwIGNmZXhwYW5kIGNnZW9kZXNpYydcbiAgICAgICsgJyBjZ3JlYXRlcnAgY2dyZWF0ZXJwaWdub3JlIGNoYW5nZW5hbWUgY2hhbmdldmFyIGNoYW9zZ2FtZSBjaGFyYXQgY2hhcmZ1biBjaGFyZnVuMidcbiAgICAgICsgJyBjaGFybGlzdCBjaGFycCBjaGFycG9seSBjaGRpciBjaGVieXNoZXZfdCBjaGVieXNoZXZfdSBjaGVja2RpdiBjaGVja19vdmVybGFwcydcbiAgICAgICsgJyBjaGluZXNlIGNob2xlc2t5IGNocmlzdG9mIGNocm9tYXRpY19pbmRleCBjaHJvbWF0aWNfbnVtYmVyIGNpbnQgY2lyY3VsYW50X2dyYXBoJ1xuICAgICAgKyAnIGNsZWFyX2VkZ2Vfd2VpZ2h0IGNsZWFyX3J1bGVzIGNsZWFyX3ZlcnRleF9sYWJlbCBjbGVic2NoX2dvcmRhbiBjbGVic2NoX2dyYXBoJ1xuICAgICAgKyAnIGNsZXNzcCBjbGVzc3BpZ25vcmUgY2xvc2UgY2xvc2VmaWxlIGNtZXRyaWMgY29lZmYgY29lZm1hdHJpeCBjb2dyYWQgY29sIGNvbGxhcHNlJ1xuICAgICAgKyAnIGNvbGxlY3R0ZXJtcyBjb2x1bW5vcCBjb2x1bW5zcGFjZSBjb2x1bW5zd2FwIGNvbHVtbnZlY3RvciBjb21iaW5hdGlvbiBjb21iaW5lJ1xuICAgICAgKyAnIGNvbXAycHVpIGNvbXBhcmUgY29tcGZpbGUgY29tcGlsZSBjb21waWxlX2ZpbGUgY29tcGxlbWVudF9ncmFwaCBjb21wbGV0ZV9iaXBhcnRpdGVfZ3JhcGgnXG4gICAgICArICcgY29tcGxldGVfZ3JhcGggY29tcGxleF9udW1iZXJfcCBjb21wb25lbnRzIGNvbXBvc2VfZnVuY3Rpb25zIGNvbmNhbiBjb25jYXQnXG4gICAgICArICcgY29uanVnYXRlIGNvbm1ldGRlcml2IGNvbm5lY3RlZF9jb21wb25lbnRzIGNvbm5lY3RfdmVydGljZXMgY29ucyBjb25zdGFudCdcbiAgICAgICsgJyBjb25zdGFudHAgY29uc3RpdHVlbnQgY29uc3R2YWx1ZSBjb250MnBhcnQgY29udGVudCBjb250aW51b3VzX2ZyZXEgY29udG9ydGlvbidcbiAgICAgICsgJyBjb250b3VyX3Bsb3QgY29udHJhY3QgY29udHJhY3RfZWRnZSBjb250cmFncmFkIGNvbnRyaWJfb2RlIGNvbnZlcnQgY29vcmQnXG4gICAgICArICcgY29weSBjb3B5X2ZpbGUgY29weV9ncmFwaCBjb3B5bGlzdCBjb3B5bWF0cml4IGNvciBjb3MgY29zaCBjb3QgY290aCBjb3YgY292MSdcbiAgICAgICsgJyBjb3ZkaWZmIGNvdmVjdCBjb3ZlcnMgY3JjMjRzdW0gY3JlYXRlX2dyYXBoIGNyZWF0ZV9saXN0IGNzYyBjc2NoIGNzZXR1cCBjc3BsaW5lJ1xuICAgICAgKyAnIGN0YXlsb3IgY3RfY29vcmRzeXMgY3RyYW5zZm9ybSBjdHJhbnNwb3NlIGN1YmVfZ3JhcGggY3Vib2N0YWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBjdW5saXNwIGN2IGN5Y2xlX2RpZ3JhcGggY3ljbGVfZ3JhcGggY3lsaW5kcmljYWwgZGF5czM2MCBkYmxpbnQgZGVhY3RpdmF0ZSdcbiAgICAgICsgJyBkZWNsYXJlIGRlY2xhcmVfY29uc3R2YWx1ZSBkZWNsYXJlX2RpbWVuc2lvbnMgZGVjbGFyZV9mdW5kYW1lbnRhbF9kaW1lbnNpb25zJ1xuICAgICAgKyAnIGRlY2xhcmVfZnVuZGFtZW50YWxfdW5pdHMgZGVjbGFyZV9xdHkgZGVjbGFyZV90cmFuc2xhdGVkIGRlY2xhcmVfdW5pdF9jb252ZXJzaW9uJ1xuICAgICAgKyAnIGRlY2xhcmVfdW5pdHMgZGVjbGFyZV93ZWlnaHRzIGRlY3N5bSBkZWZjb24gZGVmaW5lIGRlZmluZV9hbHRfZGlzcGxheSBkZWZpbmVfdmFyaWFibGUnXG4gICAgICArICcgZGVmaW50IGRlZm1hdGNoIGRlZnJ1bGUgZGVmc3RydWN0IGRlZnRheWxvciBkZWdyZWVfc2VxdWVuY2UgZGVsIGRlbGV0ZSBkZWxldGVuJ1xuICAgICAgKyAnIGRlbHRhIGRlbW8gZGVtb2l2cmUgZGVub20gZGVwZW5kcyBkZXJpdmRlZ3JlZSBkZXJpdmxpc3QgZGVzY3JpYmUgZGVzb2x2ZSdcbiAgICAgICsgJyBkZXRlcm1pbmFudCBkZmxvYXQgZGdhdXNzX2EgZGdhdXNzX2IgZGdlZXYgZGdlbW0gZGdlcXJmIGRnZXN2IGRnZXN2ZCBkaWFnJ1xuICAgICAgKyAnIGRpYWdtYXRyaXggZGlhZ19tYXRyaXggZGlhZ21hdHJpeHAgZGlhbWV0ZXIgZGlmZiBkaWdpdGNoYXJwIGRpbWFjc19leHBvcnQnXG4gICAgICArICcgZGltYWNzX2ltcG9ydCBkaW1lbnNpb24gZGltZW5zaW9ubGVzcyBkaW1lbnNpb25zIGRpbWVuc2lvbnNfYXNfbGlzdCBkaXJlY3QnXG4gICAgICArICcgZGlyZWN0b3J5IGRpc2NyZXRlX2ZyZXEgZGlzam9pbiBkaXNqb2ludHAgZGlzb2xhdGUgZGlzcCBkaXNwY29uIGRpc3Bmb3JtJ1xuICAgICAgKyAnIGRpc3BmdW4gZGlzcEpvcmRhbiBkaXNwbGF5IGRpc3BydWxlIGRpc3B0ZXJtcyBkaXN0cmliIGRpdmlkZSBkaXZpc29ycyBkaXZzdW0nXG4gICAgICArICcgZGt1bW1lcl9tIGRrdW1tZXJfdSBkbGFuZ2UgZG9kZWNhaGVkcm9uX2dyYXBoIGRvdHByb2R1Y3QgZG90c2ltcCBkcGFydCdcbiAgICAgICsgJyBkcmF3IGRyYXcyZCBkcmF3M2QgZHJhd2RmIGRyYXdfZmlsZSBkcmF3X2dyYXBoIGRzY2FsYXIgZWNoZWxvbiBlZGdlX2NvbG9yaW5nJ1xuICAgICAgKyAnIGVkZ2VfY29ubmVjdGl2aXR5IGVkZ2VzIGVpZ2Vuc19ieV9qYWNvYmkgZWlnZW52YWx1ZXMgZWlnZW52ZWN0b3JzIGVpZ2h0aCdcbiAgICAgICsgJyBlaW5zdGVpbiBlaXZhbHMgZWl2ZWN0cyBlbGFwc2VkX3JlYWxfdGltZSBlbGFwc2VkX3J1bl90aW1lIGVsZTJjb21wIGVsZTJwb2x5bm9tZSdcbiAgICAgICsgJyBlbGUycHVpIGVsZW0gZWxlbWVudHAgZWxldmF0aW9uX2dyaWQgZWxpbSBlbGltX2FsbGJ1dCBlbGltaW5hdGUgZWxpbWluYXRlX3VzaW5nJ1xuICAgICAgKyAnIGVsbGlwc2UgZWxsaXB0aWNfZSBlbGxpcHRpY19lYyBlbGxpcHRpY19ldSBlbGxpcHRpY19mIGVsbGlwdGljX2tjIGVsbGlwdGljX3BpJ1xuICAgICAgKyAnIGVtYXRyaXggZW1wdHlfZ3JhcGggZW1wdHlwIGVuZGNvbnMgZW50ZXJtYXRyaXggZW50ZXJ0ZW5zb3IgZW50aWVyIGVxdWFsIGVxdWFscCdcbiAgICAgICsgJyBlcXVpdl9jbGFzc2VzIGVyZiBlcmZjIGVyZl9nZW5lcmFsaXplZCBlcmZpIGVycmNhdGNoIGVycm9yIGVycm9ybXNnIGVycm9ycydcbiAgICAgICsgJyBldWxlciBldiBldmFsX3N0cmluZyBldmVucCBldmVyeSBldm9sdXRpb24gZXZvbHV0aW9uMmQgZXZ1bmRpZmYgZXhhbXBsZSBleHAnXG4gICAgICArICcgZXhwYW5kIGV4cGFuZHdydCBleHBhbmR3cnRfZmFjdG9yZWQgZXhwaW50IGV4cGludGVncmFsX2NoaSBleHBpbnRlZ3JhbF9jaSdcbiAgICAgICsgJyBleHBpbnRlZ3JhbF9lIGV4cGludGVncmFsX2UxIGV4cGludGVncmFsX2VpIGV4cGludGVncmFsX2Vfc2ltcGxpZnkgZXhwaW50ZWdyYWxfbGknXG4gICAgICArICcgZXhwaW50ZWdyYWxfc2hpIGV4cGludGVncmFsX3NpIGV4cGxpY2l0IGV4cGxvc2UgZXhwb25lbnRpYWxpemUgZXhwcmVzcyBleHB0J1xuICAgICAgKyAnIGV4c2VjIGV4dGRpZmYgZXh0cmFjdF9saW5lYXJfZXF1YXRpb25zIGV4dHJlbWFsX3N1YnNldCBlemdjZCAlZiBmOTAgZmFjc3VtJ1xuICAgICAgKyAnIGZhY3Rjb21iIGZhY3RvciBmYWN0b3JmYWNzdW0gZmFjdG9yaWFsIGZhY3Rvcm91dCBmYWN0b3JzdW0gZmFjdHMgZmFzdF9jZW50cmFsX2VsZW1lbnRzJ1xuICAgICAgKyAnIGZhc3RfbGluc29sdmUgZmFzdHRpbWVzIGZlYXR1cmVwIGZlcm5mYWxlIGZmdCBmaWIgZmlidG9waGkgZmlmdGggZmlsZW5hbWVfbWVyZ2UnXG4gICAgICArICcgZmlsZV9zZWFyY2ggZmlsZV90eXBlIGZpbGxhcnJheSBmaW5kZGUgZmluZF9yb290IGZpbmRfcm9vdF9hYnMgZmluZF9yb290X2Vycm9yJ1xuICAgICAgKyAnIGZpbmRfcm9vdF9yZWwgZmlyc3QgZml4IGZsYXR0ZW4gZmxlbmd0aCBmbG9hdCBmbG9hdG51bXAgZmxvb3IgZmxvd2VyX3NuYXJrJ1xuICAgICAgKyAnIGZsdXNoIGZsdXNoMWRlcml2IGZsdXNoZCBmbHVzaG5kIGZsdXNoX291dHB1dCBmbWluX2NvYnlsYSBmb3JnZXQgZm9ydHJhbidcbiAgICAgICsgJyBmb3VyY29zIGZvdXJleHBhbmQgZm91cmllciBmb3VyaWVyX2VsaW0gZm91cmludCBmb3VyaW50Y29zIGZvdXJpbnRzaW4gZm91cnNpbXAnXG4gICAgICArICcgZm91cnNpbiBmb3VydGggZnBvc2l0aW9uIGZyYW1lX2JyYWNrZXQgZnJlZW9mIGZyZXNobGluZSBmcmVzbmVsX2MgZnJlc25lbF9zJ1xuICAgICAgKyAnIGZyb21fYWRqYWNlbmN5X21hdHJpeCBmcnVjaHRfZ3JhcGggZnVsbF9saXN0aWZ5IGZ1bGxtYXAgZnVsbG1hcGwgZnVsbHJhdHNpbXAnXG4gICAgICArICcgZnVsbHJhdHN1YnN0IGZ1bGxzZXRpZnkgZnVuY3NvbHZlIGZ1bmRhbWVudGFsX2RpbWVuc2lvbnMgZnVuZGFtZW50YWxfdW5pdHMnXG4gICAgICArICcgZnVuZGVmIGZ1bm1ha2UgZnVucCBmdiBnMCBnMSBnYW1tYSBnYW1tYV9ncmVlayBnYW1tYV9pbmNvbXBsZXRlIGdhbW1hX2luY29tcGxldGVfZ2VuZXJhbGl6ZWQnXG4gICAgICArICcgZ2FtbWFfaW5jb21wbGV0ZV9yZWd1bGFyaXplZCBnYXVzcyBnYXVzc19hIGdhdXNzX2IgZ2F1c3Nwcm9iIGdjZCBnY2RleCBnY2RpdmlkZSdcbiAgICAgICsgJyBnY2ZhYyBnY2ZhY3RvciBnZCBnZW5lcmFsaXplZF9sYW1iZXJ0X3cgZ2VuZmFjdCBnZW5fbGFndWVycmUgZ2VubWF0cml4IGdlbnN5bSdcbiAgICAgICsgJyBnZW9fYW1vcnRpemF0aW9uIGdlb19hbm51aXR5X2Z2IGdlb19hbm51aXR5X3B2IGdlb21hcCBnZW9tZXRyaWMgZ2VvbWV0cmljX21lYW4nXG4gICAgICArICcgZ2Vvc3VtIGdldCBnZXRjdXJyZW50ZGlyZWN0b3J5IGdldF9lZGdlX3dlaWdodCBnZXRlbnYgZ2V0X2x1X2ZhY3RvcnMgZ2V0X291dHB1dF9zdHJlYW1fc3RyaW5nJ1xuICAgICAgKyAnIGdldF9waXhlbCBnZXRfcGxvdF9vcHRpb24gZ2V0X3RleF9lbnZpcm9ubWVudCBnZXRfdGV4X2Vudmlyb25tZW50X2RlZmF1bHQnXG4gICAgICArICcgZ2V0X3ZlcnRleF9sYWJlbCBnZmFjdG9yIGdmYWN0b3JzdW0gZ2dmIGdpcnRoIGdsb2JhbF92YXJpYW5jZXMgZ24gZ251cGxvdF9jbG9zZSdcbiAgICAgICsgJyBnbnVwbG90X3JlcGxvdCBnbnVwbG90X3Jlc2V0IGdudXBsb3RfcmVzdGFydCBnbnVwbG90X3N0YXJ0IGdvIEdvc3BlciBHb3NwZXJTdW0nXG4gICAgICArICcgZ3IyZCBncjNkIGdyYWRlZiBncmFtc2NobWlkdCBncmFwaDZfZGVjb2RlIGdyYXBoNl9lbmNvZGUgZ3JhcGg2X2V4cG9ydCBncmFwaDZfaW1wb3J0J1xuICAgICAgKyAnIGdyYXBoX2NlbnRlciBncmFwaF9jaGFycG9seSBncmFwaF9laWdlbnZhbHVlcyBncmFwaF9mbG93IGdyYXBoX29yZGVyIGdyYXBoX3BlcmlwaGVyeSdcbiAgICAgICsgJyBncmFwaF9wcm9kdWN0IGdyYXBoX3NpemUgZ3JhcGhfdW5pb24gZ3JlYXRfcmhvbWJpY29zaWRvZGVjYWhlZHJvbl9ncmFwaCBncmVhdF9yaG9tYmljdWJvY3RhaGVkcm9uX2dyYXBoJ1xuICAgICAgKyAnIGdyaWRfZ3JhcGggZ3JpbmQgZ3JvYm5lcl9iYXNpcyBncm90emNoX2dyYXBoIGhhbWlsdG9uX2N5Y2xlIGhhbWlsdG9uX3BhdGgnXG4gICAgICArICcgaGFua2VsIGhhbmtlbF8xIGhhbmtlbF8yIGhhcm1vbmljIGhhcm1vbmljX21lYW4gaGF2IGhlYXdvb2RfZ3JhcGggaGVybWl0ZSdcbiAgICAgICsgJyBoZXNzaWFuIGhnZnJlZCBoaWxiZXJ0bWFwIGhpbGJlcnRfbWF0cml4IGhpcG93IGhpc3RvZ3JhbSBoaXN0b2dyYW1fZGVzY3JpcHRpb24nXG4gICAgICArICcgaG9kZ2UgaG9ybmVyIGh5cGVyZ2VvbWV0cmljIGkwIGkxICVpYmVzIGljMSBpYzIgaWNfY29udmVydCBpY2hyMSBpY2hyMiBpY29zYWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyBpY29zaWRvZGVjYWhlZHJvbl9ncmFwaCBpY3VydmF0dXJlIGlkZW50IGlkZW50Zm9yIGlkZW50aXR5IGlkaWZmIGlkaW0gaWR1bW15J1xuICAgICAgKyAnIGllcW4gJWlmIGlmYWN0b3JzIGlmcmFtZXMgaWZzIGlnY2RleCBpZ2VvZGVzaWNfY29vcmRzIGlsdCBpbWFnZSBpbWFncGFydCdcbiAgICAgICsgJyBpbWV0cmljIGltcGxpY2l0IGltcGxpY2l0X2Rlcml2YXRpdmUgaW1wbGljaXRfcGxvdCBpbmRleGVkX3RlbnNvciBpbmRpY2VzJ1xuICAgICAgKyAnIGluZHVjZWRfc3ViZ3JhcGggaW5mZXJlbmNlcCBpbmZlcmVuY2VfcmVzdWx0IGluZml4IGluZm9fZGlzcGxheSBpbml0X2F0ZW5zb3InXG4gICAgICArICcgaW5pdF9jdGVuc29yIGluX25laWdoYm9ycyBpbm5lcnByb2R1Y3QgaW5wYXJ0IGlucHJvZCBpbnJ0IGludGVnZXJwIGludGVnZXJfcGFydGl0aW9ucydcbiAgICAgICsgJyBpbnRlZ3JhdGUgaW50ZXJzZWN0IGludGVyc2VjdGlvbiBpbnRlcnZhbHAgaW50b3BvaXMgaW50b3N1bSBpbnZhcmlhbnQxIGludmFyaWFudDInXG4gICAgICArICcgaW52ZXJzZV9mZnQgaW52ZXJzZV9qYWNvYmlfY2QgaW52ZXJzZV9qYWNvYmlfY24gaW52ZXJzZV9qYWNvYmlfY3MgaW52ZXJzZV9qYWNvYmlfZGMnXG4gICAgICArICcgaW52ZXJzZV9qYWNvYmlfZG4gaW52ZXJzZV9qYWNvYmlfZHMgaW52ZXJzZV9qYWNvYmlfbmMgaW52ZXJzZV9qYWNvYmlfbmQgaW52ZXJzZV9qYWNvYmlfbnMnXG4gICAgICArICcgaW52ZXJzZV9qYWNvYmlfc2MgaW52ZXJzZV9qYWNvYmlfc2QgaW52ZXJzZV9qYWNvYmlfc24gaW52ZXJ0IGludmVydF9ieV9hZGpvaW50J1xuICAgICAgKyAnIGludmVydF9ieV9sdSBpbnZfbW9kIGlyciBpcyBpc19iaWNvbm5lY3RlZCBpc19iaXBhcnRpdGUgaXNfY29ubmVjdGVkIGlzX2RpZ3JhcGgnXG4gICAgICArICcgaXNfZWRnZV9pbl9ncmFwaCBpc19ncmFwaCBpc19ncmFwaF9vcl9kaWdyYXBoIGlzaG93IGlzX2lzb21vcnBoaWMgaXNvbGF0ZSdcbiAgICAgICsgJyBpc29tb3JwaGlzbSBpc19wbGFuYXIgaXNxcnQgaXNyZWFsX3AgaXNfc2Nvbm5lY3RlZCBpc190cmVlIGlzX3ZlcnRleF9pbl9ncmFwaCdcbiAgICAgICsgJyBpdGVtc19pbmZlcmVuY2UgJWogajAgajEgamFjb2JpIGphY29iaWFuIGphY29iaV9jZCBqYWNvYmlfY24gamFjb2JpX2NzIGphY29iaV9kYydcbiAgICAgICsgJyBqYWNvYmlfZG4gamFjb2JpX2RzIGphY29iaV9uYyBqYWNvYmlfbmQgamFjb2JpX25zIGphY29iaV9wIGphY29iaV9zYyBqYWNvYmlfc2QnXG4gICAgICArICcgamFjb2JpX3NuIEpGIGpuIGpvaW4gam9yZGFuIGp1bGlhIGp1bGlhX3NldCBqdWxpYV9zaW4gJWsga2RlbHMga2RlbHRhIGtpbGwnXG4gICAgICArICcga2lsbGNvbnRleHQga29zdGthIGtyb25fZGVsdGEga3JvbmVja2VyX3Byb2R1Y3Qga3VtbWVyX20ga3VtbWVyX3Uga3VydG9zaXMnXG4gICAgICArICcga3VydG9zaXNfYmVybm91bGxpIGt1cnRvc2lzX2JldGEga3VydG9zaXNfYmlub21pYWwga3VydG9zaXNfY2hpMiBrdXJ0b3Npc19jb250aW51b3VzX3VuaWZvcm0nXG4gICAgICArICcga3VydG9zaXNfZGlzY3JldGVfdW5pZm9ybSBrdXJ0b3Npc19leHAga3VydG9zaXNfZiBrdXJ0b3Npc19nYW1tYSBrdXJ0b3Npc19nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSdcbiAgICAgICsgJyBrdXJ0b3Npc19nZW9tZXRyaWMga3VydG9zaXNfZ3VtYmVsIGt1cnRvc2lzX2h5cGVyZ2VvbWV0cmljIGt1cnRvc2lzX2xhcGxhY2UnXG4gICAgICArICcga3VydG9zaXNfbG9naXN0aWMga3VydG9zaXNfbG9nbm9ybWFsIGt1cnRvc2lzX25lZ2F0aXZlX2Jpbm9taWFsIGt1cnRvc2lzX25vbmNlbnRyYWxfY2hpMidcbiAgICAgICsgJyBrdXJ0b3Npc19ub25jZW50cmFsX3N0dWRlbnRfdCBrdXJ0b3Npc19ub3JtYWwga3VydG9zaXNfcGFyZXRvIGt1cnRvc2lzX3BvaXNzb24nXG4gICAgICArICcga3VydG9zaXNfcmF5bGVpZ2gga3VydG9zaXNfc3R1ZGVudF90IGt1cnRvc2lzX3dlaWJ1bGwgbGFiZWwgbGFiZWxzIGxhZ3JhbmdlJ1xuICAgICAgKyAnIGxhZ3VlcnJlIGxhbWJkYSBsYW1iZXJ0X3cgbGFwbGFjZSBsYXBsYWNpYW5fbWF0cml4IGxhc3QgbGJmZ3MgbGMya2R0IGxjaGFycCdcbiAgICAgICsgJyBsY19sIGxjbSBsY191IGxkZWZpbnQgbGRpc3AgbGRpc3BsYXkgbGVnZW5kcmVfcCBsZWdlbmRyZV9xIGxlaW5zdGVpbiBsZW5ndGgnXG4gICAgICArICcgbGV0IGxldHJ1bGVzIGxldHNpbXAgbGV2aV9jaXZpdGEgbGZyZWVvZiBsZ3RyZWlsbGlzIGxocyBsaSBsaWVkaWZmIGxpbWl0J1xuICAgICAgKyAnIExpbmRzdGVkdCBsaW5lYXIgbGluZWFyaW50ZXJwb2wgbGluZWFyX3Byb2dyYW0gbGluZWFyX3JlZ3Jlc3Npb24gbGluZV9ncmFwaCdcbiAgICAgICsgJyBsaW5zb2x2ZSBsaXN0YXJyYXkgbGlzdF9jb3JyZWxhdGlvbnMgbGlzdGlmeSBsaXN0X21hdHJpeF9lbnRyaWVzIGxpc3RfbmNfbW9ub21pYWxzJ1xuICAgICAgKyAnIGxpc3RvZnRlbnMgbGlzdG9mdmFycyBsaXN0cCBsbWF4IGxtaW4gbG9hZCBsb2FkZmlsZSBsb2NhbCBsb2NhdGVfbWF0cml4X2VudHJ5J1xuICAgICAgKyAnIGxvZyBsb2djb250cmFjdCBsb2dfZ2FtbWEgbG9wb3cgbG9yZW50el9nYXVnZSBsb3dlcmNhc2VwIGxwYXJ0IGxyYXRzdWJzdCdcbiAgICAgICsgJyBscmVkdWNlIGxyaWVtYW5uIGxzcXVhcmVzX2VzdGltYXRlcyBsc3F1YXJlc19lc3RpbWF0ZXNfYXBwcm94aW1hdGUgbHNxdWFyZXNfZXN0aW1hdGVzX2V4YWN0J1xuICAgICAgKyAnIGxzcXVhcmVzX21zZSBsc3F1YXJlc19yZXNpZHVhbF9tc2UgbHNxdWFyZXNfcmVzaWR1YWxzIGxzdW0gbHRyZWlsbGlzIGx1X2JhY2tzdWInXG4gICAgICArICcgbHVjYXMgbHVfZmFjdG9yICVtIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kMSBtYWtlX2FycmF5IG1ha2Vib3ggbWFrZWZhY3QgbWFrZWdhbW1hJ1xuICAgICAgKyAnIG1ha2VfZ3JhcGggbWFrZV9sZXZlbF9waWN0dXJlIG1ha2VsaXN0IG1ha2VPcmRlcnMgbWFrZV9wb2x5X2NvbnRpbmVudCBtYWtlX3BvbHlfY291bnRyeSdcbiAgICAgICsgJyBtYWtlX3BvbHlnb24gbWFrZV9yYW5kb21fc3RhdGUgbWFrZV9yZ2JfcGljdHVyZSBtYWtlc2V0IG1ha2Vfc3RyaW5nX2lucHV0X3N0cmVhbSdcbiAgICAgICsgJyBtYWtlX3N0cmluZ19vdXRwdXRfc3RyZWFtIG1ha2VfdHJhbnNmb3JtIG1hbmRlbGJyb3QgbWFuZGVsYnJvdF9zZXQgbWFwIG1hcGF0b20nXG4gICAgICArICcgbWFwbGlzdCBtYXRjaGRlY2xhcmUgbWF0Y2hmaXggbWF0X2NvbmQgbWF0X2Z1bGx1bmJsb2NrZXIgbWF0X2Z1bmN0aW9uIG1hdGhtbF9kaXNwbGF5J1xuICAgICAgKyAnIG1hdF9ub3JtIG1hdHJpeCBtYXRyaXhtYXAgbWF0cml4cCBtYXRyaXhfc2l6ZSBtYXR0cmFjZSBtYXRfdHJhY2UgbWF0X3VuYmxvY2tlcidcbiAgICAgICsgJyBtYXggbWF4X2NsaXF1ZSBtYXhfZGVncmVlIG1heF9mbG93IG1heGltaXplX2xwIG1heF9pbmRlcGVuZGVudF9zZXQgbWF4X21hdGNoaW5nJ1xuICAgICAgKyAnIG1heWJlIG1kNXN1bSBtZWFuIG1lYW5fYmVybm91bGxpIG1lYW5fYmV0YSBtZWFuX2Jpbm9taWFsIG1lYW5fY2hpMiBtZWFuX2NvbnRpbnVvdXNfdW5pZm9ybSdcbiAgICAgICsgJyBtZWFuX2RldmlhdGlvbiBtZWFuX2Rpc2NyZXRlX3VuaWZvcm0gbWVhbl9leHAgbWVhbl9mIG1lYW5fZ2FtbWEgbWVhbl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSdcbiAgICAgICsgJyBtZWFuX2dlb21ldHJpYyBtZWFuX2d1bWJlbCBtZWFuX2h5cGVyZ2VvbWV0cmljIG1lYW5fbGFwbGFjZSBtZWFuX2xvZ2lzdGljJ1xuICAgICAgKyAnIG1lYW5fbG9nbm9ybWFsIG1lYW5fbmVnYXRpdmVfYmlub21pYWwgbWVhbl9ub25jZW50cmFsX2NoaTIgbWVhbl9ub25jZW50cmFsX3N0dWRlbnRfdCdcbiAgICAgICsgJyBtZWFuX25vcm1hbCBtZWFuX3BhcmV0byBtZWFuX3BvaXNzb24gbWVhbl9yYXlsZWlnaCBtZWFuX3N0dWRlbnRfdCBtZWFuX3dlaWJ1bGwnXG4gICAgICArICcgbWVkaWFuIG1lZGlhbl9kZXZpYXRpb24gbWVtYmVyIG1lc2ggbWV0cmljZXhwYW5kYWxsIG1nZjFfc2hhMSBtaW4gbWluX2RlZ3JlZSdcbiAgICAgICsgJyBtaW5fZWRnZV9jdXQgbWluZmFjdG9yaWFsIG1pbmltYWxQb2x5IG1pbmltaXplX2xwIG1pbmltdW1fc3Bhbm5pbmdfdHJlZSBtaW5vcidcbiAgICAgICsgJyBtaW5wYWNrX2xzcXVhcmVzIG1pbnBhY2tfc29sdmUgbWluX3ZlcnRleF9jb3ZlciBtaW5fdmVydGV4X2N1dCBta2RpciBtbmV3dG9uJ1xuICAgICAgKyAnIG1vZCBtb2RlX2RlY2xhcmUgbW9kZV9pZGVudGl0eSBNb2RlTWF0cml4IG1vZWJpdXMgbW9uMnNjaHVyIG1vbm8gbW9ub21pYWxfZGltZW5zaW9ucydcbiAgICAgICsgJyBtdWx0aWJlcm5zdGVpbl9wb2x5IG11bHRpX2Rpc3BsYXlfZm9yX3RleGluZm8gbXVsdGlfZWxlbSBtdWx0aW5vbWlhbCBtdWx0aW5vbWlhbF9jb2VmZidcbiAgICAgICsgJyBtdWx0aV9vcmJpdCBtdWx0aXBsb3RfbW9kZSBtdWx0aV9wdWkgbXVsdHN5bSBtdWx0dGhydSBteWNpZWxza2lfZ3JhcGggbmFyeSdcbiAgICAgICsgJyBuYXR1cmFsX3VuaXQgbmNfZGVncmVlIG5jZXhwdCBuY2hhcnBvbHkgbmVnYXRpdmVfcGljdHVyZSBuZWlnaGJvcnMgbmV3IG5ld2NvbnRleHQnXG4gICAgICArICcgbmV3ZGV0IG5ld19ncmFwaCBuZXdsaW5lIG5ld3RvbiBuZXdfdmFyaWFibGUgbmV4dF9wcmltZSBuaWNlZHVtbWllcyBuaWNlaW5kaWNlcydcbiAgICAgICsgJyBuaW50aCBub2ZpeCBub25hcnJheSBub25jZW50cmFsX21vbWVudCBub25tZXRyaWNpdHkgbm9ubmVnaW50ZWdlcnAgbm9uc2NhbGFycCdcbiAgICAgICsgJyBub256ZXJvYW5kZnJlZW9mIG5vdGVxdWFsIG5vdW5pZnkgbnB0ZXRyYWQgbnB2IG5yb290cyBudGVybXMgbnRlcm1zdCdcbiAgICAgICsgJyBudGhyb290IG51bGxpdHkgbnVsbHNwYWNlIG51bSBudW1iZXJlZF9ib3VuZGFyaWVzIG51bWJlcnAgbnVtYmVyX3RvX29jdGV0cydcbiAgICAgICsgJyBudW1fZGlzdGluY3RfcGFydGl0aW9ucyBudW1lcnZhbCBudW1mYWN0b3IgbnVtX3BhcnRpdGlvbnMgbnVzdW0gbnpldGEgbnpldGFpJ1xuICAgICAgKyAnIG56ZXRhciBvY3RldHNfdG9fbnVtYmVyIG9jdGV0c190b19vaWQgb2RkX2dpcnRoIG9kZHAgb2RlMiBvZGVfY2hlY2sgb2RlbGluJ1xuICAgICAgKyAnIG9pZF90b19vY3RldHMgb3Agb3BlbmEgb3BlbmFfYmluYXJ5IG9wZW5yIG9wZW5yX2JpbmFyeSBvcGVudyBvcGVud19iaW5hcnknXG4gICAgICArICcgb3BlcmF0b3JwIG9wc3Vic3Qgb3B0aW1pemUgJW9yIG9yYml0IG9yYml0cyBvcmRlcmdyZWF0IG9yZGVyZ3JlYXRwIG9yZGVybGVzcydcbiAgICAgICsgJyBvcmRlcmxlc3NwIG9ydGhvZ29uYWxfY29tcGxlbWVudCBvcnRob3BvbHlfcmVjdXIgb3J0aG9wb2x5X3dlaWdodCBvdXRlcm1hcCdcbiAgICAgICsgJyBvdXRfbmVpZ2hib3JzIG91dG9mcG9pcyBwYWRlIHBhcmFib2xpY19jeWxpbmRlcl9kIHBhcmFtZXRyaWMgcGFyYW1ldHJpY19zdXJmYWNlJ1xuICAgICAgKyAnIHBhcmcgcGFyR29zcGVyIHBhcnNlX3N0cmluZyBwYXJzZV90aW1lZGF0ZSBwYXJ0IHBhcnQyY29udCBwYXJ0ZnJhYyBwYXJ0aXRpb24nXG4gICAgICArICcgcGFydGl0aW9uX3NldCBwYXJ0cG9sIHBhdGhfZGlncmFwaCBwYXRoX2dyYXBoIHBhdGhuYW1lX2RpcmVjdG9yeSBwYXRobmFtZV9uYW1lJ1xuICAgICAgKyAnIHBhdGhuYW1lX3R5cGUgcGRmX2Jlcm5vdWxsaSBwZGZfYmV0YSBwZGZfYmlub21pYWwgcGRmX2NhdWNoeSBwZGZfY2hpMiBwZGZfY29udGludW91c191bmlmb3JtJ1xuICAgICAgKyAnIHBkZl9kaXNjcmV0ZV91bmlmb3JtIHBkZl9leHAgcGRmX2YgcGRmX2dhbW1hIHBkZl9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSdcbiAgICAgICsgJyBwZGZfZ2VvbWV0cmljIHBkZl9ndW1iZWwgcGRmX2h5cGVyZ2VvbWV0cmljIHBkZl9sYXBsYWNlIHBkZl9sb2dpc3RpYyBwZGZfbG9nbm9ybWFsJ1xuICAgICAgKyAnIHBkZl9uZWdhdGl2ZV9iaW5vbWlhbCBwZGZfbm9uY2VudHJhbF9jaGkyIHBkZl9ub25jZW50cmFsX3N0dWRlbnRfdCBwZGZfbm9ybWFsJ1xuICAgICAgKyAnIHBkZl9wYXJldG8gcGRmX3BvaXNzb24gcGRmX3Jhbmtfc3VtIHBkZl9yYXlsZWlnaCBwZGZfc2lnbmVkX3JhbmsgcGRmX3N0dWRlbnRfdCdcbiAgICAgICsgJyBwZGZfd2VpYnVsbCBwZWFyc29uX3NrZXduZXNzIHBlcm1hbmVudCBwZXJtdXQgcGVybXV0YXRpb24gcGVybXV0YXRpb25zIHBldGVyc2VuX2dyYXBoJ1xuICAgICAgKyAnIHBldHJvdiBwaWNrYXBhcnQgcGljdHVyZV9lcXVhbHAgcGljdHVyZXAgcGllY2hhcnQgcGllY2hhcnRfZGVzY3JpcHRpb24gcGxhbmFyX2VtYmVkZGluZydcbiAgICAgICsgJyBwbGF5YmFjayBwbG9nIHBsb3QyZCBwbG90M2QgcGxvdGRmIHBsb3RlcSBwbHNxdWFyZXMgcG9jaGhhbW1lciBwb2ludHMgcG9pc2RpZmYnXG4gICAgICArICcgcG9pc2V4cHQgcG9pc2ludCBwb2lzbWFwIHBvaXNwbHVzIHBvaXNzaW1wIHBvaXNzdWJzdCBwb2lzdGltZXMgcG9pc3RyaW0gcG9sYXInXG4gICAgICArICcgcG9sYXJmb3JtIHBvbGFydG9yZWN0IHBvbGFyX3RvX3h5IHBvbHlfYWRkIHBvbHlfYnVjaGJlcmdlciBwb2x5X2J1Y2hiZXJnZXJfY3JpdGVyaW9uJ1xuICAgICAgKyAnIHBvbHlfY29sb25faWRlYWwgcG9seV9jb250ZW50IHBvbHlkZWNvbXAgcG9seV9kZXBlbmRzX3AgcG9seV9lbGltaW5hdGlvbl9pZGVhbCdcbiAgICAgICsgJyBwb2x5X2V4YWN0X2RpdmlkZSBwb2x5X2V4cGFuZCBwb2x5X2V4cHQgcG9seV9nY2QgcG9seWdvbiBwb2x5X2dyb2JuZXIgcG9seV9ncm9ibmVyX2VxdWFsJ1xuICAgICAgKyAnIHBvbHlfZ3JvYm5lcl9tZW1iZXIgcG9seV9ncm9ibmVyX3N1YnNldHAgcG9seV9pZGVhbF9pbnRlcnNlY3Rpb24gcG9seV9pZGVhbF9wb2x5c2F0dXJhdGlvbidcbiAgICAgICsgJyBwb2x5X2lkZWFsX3BvbHlzYXR1cmF0aW9uMSBwb2x5X2lkZWFsX3NhdHVyYXRpb24gcG9seV9pZGVhbF9zYXR1cmF0aW9uMSBwb2x5X2xjbSdcbiAgICAgICsgJyBwb2x5X21pbmltaXphdGlvbiBwb2x5bW9kIHBvbHlfbXVsdGlwbHkgcG9seW5vbWUyZWxlIHBvbHlub21pYWxwIHBvbHlfbm9ybWFsX2Zvcm0nXG4gICAgICArICcgcG9seV9ub3JtYWxpemUgcG9seV9ub3JtYWxpemVfbGlzdCBwb2x5X3BvbHlzYXR1cmF0aW9uX2V4dGVuc2lvbiBwb2x5X3ByaW1pdGl2ZV9wYXJ0J1xuICAgICAgKyAnIHBvbHlfcHNldWRvX2RpdmlkZSBwb2x5X3JlZHVjZWRfZ3JvYm5lciBwb2x5X3JlZHVjdGlvbiBwb2x5X3NhdHVyYXRpb25fZXh0ZW5zaW9uJ1xuICAgICAgKyAnIHBvbHlfc19wb2x5bm9taWFsIHBvbHlfc3VidHJhY3QgcG9seXRvY29tcGFuaW9uIHBvcCBwb3N0Zml4IHBvdGVudGlhbCBwb3dlcl9tb2QnXG4gICAgICArICcgcG93ZXJzZXJpZXMgcG93ZXJzZXQgcHJlZml4IHByZXZfcHJpbWUgcHJpbWVwIHByaW1lcyBwcmluY2lwYWxfY29tcG9uZW50cydcbiAgICAgICsgJyBwcmludCBwcmludGYgcHJpbnRmaWxlIHByaW50X2dyYXBoIHByaW50cG9pcyBwcmludHByb3BzIHByb2RyYWMgcHJvZHVjdCBwcm9wZXJ0aWVzJ1xuICAgICAgKyAnIHByb3B2YXJzIHBzaSBwc3Vic3QgcHRyaWFuZ3VsYXJpemUgcHVpIHB1aTJjb21wIHB1aTJlbGUgcHVpMnBvbHlub21lIHB1aV9kaXJlY3QnXG4gICAgICArICcgcHVpcmVkdWMgcHVzaCBwdXQgcHYgcXB1dCBxcmFuZ2UgcXR5IHF1YWRfY29udHJvbCBxdWFkX3FhZyBxdWFkX3FhZ2kgcXVhZF9xYWdwJ1xuICAgICAgKyAnIHF1YWRfcWFncyBxdWFkX3Fhd2MgcXVhZF9xYXdmIHF1YWRfcWF3byBxdWFkX3Fhd3MgcXVhZHJpbGF0ZXJhbCBxdWFudGlsZSdcbiAgICAgICsgJyBxdWFudGlsZV9iZXJub3VsbGkgcXVhbnRpbGVfYmV0YSBxdWFudGlsZV9iaW5vbWlhbCBxdWFudGlsZV9jYXVjaHkgcXVhbnRpbGVfY2hpMidcbiAgICAgICsgJyBxdWFudGlsZV9jb250aW51b3VzX3VuaWZvcm0gcXVhbnRpbGVfZGlzY3JldGVfdW5pZm9ybSBxdWFudGlsZV9leHAgcXVhbnRpbGVfZidcbiAgICAgICsgJyBxdWFudGlsZV9nYW1tYSBxdWFudGlsZV9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBxdWFudGlsZV9nZW9tZXRyaWMgcXVhbnRpbGVfZ3VtYmVsJ1xuICAgICAgKyAnIHF1YW50aWxlX2h5cGVyZ2VvbWV0cmljIHF1YW50aWxlX2xhcGxhY2UgcXVhbnRpbGVfbG9naXN0aWMgcXVhbnRpbGVfbG9nbm9ybWFsJ1xuICAgICAgKyAnIHF1YW50aWxlX25lZ2F0aXZlX2Jpbm9taWFsIHF1YW50aWxlX25vbmNlbnRyYWxfY2hpMiBxdWFudGlsZV9ub25jZW50cmFsX3N0dWRlbnRfdCdcbiAgICAgICsgJyBxdWFudGlsZV9ub3JtYWwgcXVhbnRpbGVfcGFyZXRvIHF1YW50aWxlX3BvaXNzb24gcXVhbnRpbGVfcmF5bGVpZ2ggcXVhbnRpbGVfc3R1ZGVudF90J1xuICAgICAgKyAnIHF1YW50aWxlX3dlaWJ1bGwgcXVhcnRpbGVfc2tld25lc3MgcXVpdCBxdW5pdCBxdW90aWVudCByYWNhaF92IHJhY2FoX3cgcmFkY2FuJ1xuICAgICAgKyAnIHJhZGl1cyByYW5kb20gcmFuZG9tX2Jlcm5vdWxsaSByYW5kb21fYmV0YSByYW5kb21fYmlub21pYWwgcmFuZG9tX2JpcGFydGl0ZV9ncmFwaCdcbiAgICAgICsgJyByYW5kb21fY2F1Y2h5IHJhbmRvbV9jaGkyIHJhbmRvbV9jb250aW51b3VzX3VuaWZvcm0gcmFuZG9tX2RpZ3JhcGggcmFuZG9tX2Rpc2NyZXRlX3VuaWZvcm0nXG4gICAgICArICcgcmFuZG9tX2V4cCByYW5kb21fZiByYW5kb21fZ2FtbWEgcmFuZG9tX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHJhbmRvbV9nZW9tZXRyaWMnXG4gICAgICArICcgcmFuZG9tX2dyYXBoIHJhbmRvbV9ncmFwaDEgcmFuZG9tX2d1bWJlbCByYW5kb21faHlwZXJnZW9tZXRyaWMgcmFuZG9tX2xhcGxhY2UnXG4gICAgICArICcgcmFuZG9tX2xvZ2lzdGljIHJhbmRvbV9sb2dub3JtYWwgcmFuZG9tX25lZ2F0aXZlX2Jpbm9taWFsIHJhbmRvbV9uZXR3b3JrJ1xuICAgICAgKyAnIHJhbmRvbV9ub25jZW50cmFsX2NoaTIgcmFuZG9tX25vbmNlbnRyYWxfc3R1ZGVudF90IHJhbmRvbV9ub3JtYWwgcmFuZG9tX3BhcmV0bydcbiAgICAgICsgJyByYW5kb21fcGVybXV0YXRpb24gcmFuZG9tX3BvaXNzb24gcmFuZG9tX3JheWxlaWdoIHJhbmRvbV9yZWd1bGFyX2dyYXBoIHJhbmRvbV9zdHVkZW50X3QnXG4gICAgICArICcgcmFuZG9tX3RvdXJuYW1lbnQgcmFuZG9tX3RyZWUgcmFuZG9tX3dlaWJ1bGwgcmFuZ2UgcmFuayByYXQgcmF0Y29lZiByYXRkZW5vbSdcbiAgICAgICsgJyByYXRkaWZmIHJhdGRpc3JlcCByYXRleHBhbmQgcmF0aW50ZXJwb2wgcmF0aW9uYWwgcmF0aW9uYWxpemUgcmF0bnVtZXIgcmF0bnVtcCdcbiAgICAgICsgJyByYXRwIHJhdHNpbXAgcmF0c3Vic3QgcmF0dmFycyByYXR3ZWlnaHQgcmVhZCByZWFkX2FycmF5IHJlYWRfYmluYXJ5X2FycmF5J1xuICAgICAgKyAnIHJlYWRfYmluYXJ5X2xpc3QgcmVhZF9iaW5hcnlfbWF0cml4IHJlYWRieXRlIHJlYWRjaGFyIHJlYWRfaGFzaGVkX2FycmF5IHJlYWRsaW5lJ1xuICAgICAgKyAnIHJlYWRfbGlzdCByZWFkX21hdHJpeCByZWFkX25lc3RlZF9saXN0IHJlYWRvbmx5IHJlYWRfeHBtIHJlYWxfaW1hZ3BhcnRfdG9fY29uanVnYXRlJ1xuICAgICAgKyAnIHJlYWxwYXJ0IHJlYWxyb290cyByZWFycmF5IHJlY3RhbmdsZSByZWN0Zm9ybSByZWN0Zm9ybV9sb2dfaWZfY29uc3RhbnQgcmVjdHRvcG9sYXInXG4gICAgICArICcgcmVkaWZmIHJlZHVjZV9jb25zdHMgcmVkdWNlX29yZGVyIHJlZ2lvbiByZWdpb25fYm91bmRhcmllcyByZWdpb25fYm91bmRhcmllc19wbHVzJ1xuICAgICAgKyAnIHJlbSByZW1haW5kZXIgcmVtYXJyYXkgcmVtYm94IHJlbWNvbXBzIHJlbWNvbiByZW1jb29yZCByZW1mdW4gcmVtZnVuY3Rpb24nXG4gICAgICArICcgcmVtbGV0IHJlbW92ZSByZW1vdmVfY29uc3R2YWx1ZSByZW1vdmVfZGltZW5zaW9ucyByZW1vdmVfZWRnZSByZW1vdmVfZnVuZGFtZW50YWxfZGltZW5zaW9ucydcbiAgICAgICsgJyByZW1vdmVfZnVuZGFtZW50YWxfdW5pdHMgcmVtb3ZlX3Bsb3Rfb3B0aW9uIHJlbW92ZV92ZXJ0ZXggcmVtcGFydCByZW1ydWxlJ1xuICAgICAgKyAnIHJlbXN5bSByZW12YWx1ZSByZW5hbWUgcmVuYW1lX2ZpbGUgcmVzZXQgcmVzZXRfZGlzcGxheXMgcmVzaWR1ZSByZXNvbHZhbnRlJ1xuICAgICAgKyAnIHJlc29sdmFudGVfYWx0ZXJuZWUxIHJlc29sdmFudGVfYmlwYXJ0aXRlIHJlc29sdmFudGVfZGllZHJhbGUgcmVzb2x2YW50ZV9rbGVpbidcbiAgICAgICsgJyByZXNvbHZhbnRlX2tsZWluMyByZXNvbHZhbnRlX3Byb2R1aXRfc3ltIHJlc29sdmFudGVfdW5pdGFpcmUgcmVzb2x2YW50ZV92aWVyZXInXG4gICAgICArICcgcmVzdCByZXN1bHRhbnQgcmV0dXJuIHJldmVhbCByZXZlcnNlIHJldmVydCByZXZlcnQyIHJnYjJsZXZlbCByaHMgcmljY2kgcmllbWFubidcbiAgICAgICsgJyByaW52YXJpYW50IHJpc2NoIHJrIHJtZGlyIHJuY29tYmluZSByb21iZXJnIHJvb20gcm9vdHNjb250cmFjdCByb3VuZCByb3cnXG4gICAgICArICcgcm93b3Agcm93c3dhcCBycmVkdWNlIHJ1bl90ZXN0c3VpdGUgJXMgc2F2ZSBzYXZpbmcgc2NhbGFycCBzY2FsZWRfYmVzc2VsX2knXG4gICAgICArICcgc2NhbGVkX2Jlc3NlbF9pMCBzY2FsZWRfYmVzc2VsX2kxIHNjYWxlZmFjdG9ycyBzY2FubWFwIHNjYXR0ZXJwbG90IHNjYXR0ZXJwbG90X2Rlc2NyaXB0aW9uJ1xuICAgICAgKyAnIHNjZW5lIHNjaHVyMmNvbXAgc2NvbmNhdCBzY29weSBzY3NpbXAgc2N1cnZhdHVyZSBzZG93bmNhc2Ugc2VjIHNlY2ggc2Vjb25kJ1xuICAgICAgKyAnIHNlcXVhbCBzZXF1YWxpZ25vcmUgc2V0X2FsdF9kaXNwbGF5IHNldGRpZmZlcmVuY2Ugc2V0X2RyYXdfZGVmYXVsdHMgc2V0X2VkZ2Vfd2VpZ2h0J1xuICAgICAgKyAnIHNldGVsbXggc2V0ZXF1YWxwIHNldGlmeSBzZXRwIHNldF9wYXJ0aXRpb25zIHNldF9wbG90X29wdGlvbiBzZXRfcHJvbXB0IHNldF9yYW5kb21fc3RhdGUnXG4gICAgICArICcgc2V0X3RleF9lbnZpcm9ubWVudCBzZXRfdGV4X2Vudmlyb25tZW50X2RlZmF1bHQgc2V0dW5pdHMgc2V0dXBfYXV0b2xvYWQgc2V0X3VwX2RvdF9zaW1wbGlmaWNhdGlvbnMnXG4gICAgICArICcgc2V0X3ZlcnRleF9sYWJlbCBzZXZlbnRoIHNleHBsb2RlIHNmIHNoYTFzdW0gc2hhMjU2c3VtIHNob3J0ZXN0X3BhdGggc2hvcnRlc3Rfd2VpZ2h0ZWRfcGF0aCdcbiAgICAgICsgJyBzaG93IHNob3djb21wcyBzaG93cmF0dmFycyBzaWVycGluc2tpYWxlIHNpZXJwaW5za2ltYXAgc2lnbiBzaWdudW0gc2ltaWxhcml0eXRyYW5zZm9ybSdcbiAgICAgICsgJyBzaW1wX2luZXF1YWxpdHkgc2ltcGxpZnlfc3VtIHNpbXBsb2RlIHNpbXBtZXRkZXJpdiBzaW10cmFuIHNpbiBzaW5oIHNpbnNlcnQnXG4gICAgICArICcgc2ludmVydGNhc2Ugc2l4dGggc2tld25lc3Mgc2tld25lc3NfYmVybm91bGxpIHNrZXduZXNzX2JldGEgc2tld25lc3NfYmlub21pYWwnXG4gICAgICArICcgc2tld25lc3NfY2hpMiBza2V3bmVzc19jb250aW51b3VzX3VuaWZvcm0gc2tld25lc3NfZGlzY3JldGVfdW5pZm9ybSBza2V3bmVzc19leHAnXG4gICAgICArICcgc2tld25lc3NfZiBza2V3bmVzc19nYW1tYSBza2V3bmVzc19nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBza2V3bmVzc19nZW9tZXRyaWMnXG4gICAgICArICcgc2tld25lc3NfZ3VtYmVsIHNrZXduZXNzX2h5cGVyZ2VvbWV0cmljIHNrZXduZXNzX2xhcGxhY2Ugc2tld25lc3NfbG9naXN0aWMnXG4gICAgICArICcgc2tld25lc3NfbG9nbm9ybWFsIHNrZXduZXNzX25lZ2F0aXZlX2Jpbm9taWFsIHNrZXduZXNzX25vbmNlbnRyYWxfY2hpMiBza2V3bmVzc19ub25jZW50cmFsX3N0dWRlbnRfdCdcbiAgICAgICsgJyBza2V3bmVzc19ub3JtYWwgc2tld25lc3NfcGFyZXRvIHNrZXduZXNzX3BvaXNzb24gc2tld25lc3NfcmF5bGVpZ2ggc2tld25lc3Nfc3R1ZGVudF90J1xuICAgICAgKyAnIHNrZXduZXNzX3dlaWJ1bGwgc2xlbmd0aCBzbWFrZSBzbWFsbF9yaG9tYmljb3NpZG9kZWNhaGVkcm9uX2dyYXBoIHNtYWxsX3Job21iaWN1Ym9jdGFoZWRyb25fZ3JhcGgnXG4gICAgICArICcgc21heCBzbWluIHNtaXNtYXRjaCBzbm93bWFwIHNudWJfY3ViZV9ncmFwaCBzbnViX2RvZGVjYWhlZHJvbl9ncmFwaCBzb2x2ZSdcbiAgICAgICsgJyBzb2x2ZV9yZWMgc29sdmVfcmVjX3JhdCBzb21lIHNvbXJhYyBzb3J0IHNwYXJzZTZfZGVjb2RlIHNwYXJzZTZfZW5jb2RlIHNwYXJzZTZfZXhwb3J0J1xuICAgICAgKyAnIHNwYXJzZTZfaW1wb3J0IHNwZWNpbnQgc3BoZXJpY2FsIHNwaGVyaWNhbF9iZXNzZWxfaiBzcGhlcmljYWxfYmVzc2VsX3kgc3BoZXJpY2FsX2hhbmtlbDEnXG4gICAgICArICcgc3BoZXJpY2FsX2hhbmtlbDIgc3BoZXJpY2FsX2hhcm1vbmljIHNwaGVyaWNhbF90b194eXogc3BsaWNlIHNwbGl0IHNwb3NpdGlvbidcbiAgICAgICsgJyBzcHJpbnQgc3FmciBzcXJ0IHNxcnRkZW5lc3Qgc3JlbW92ZSBzcmVtb3ZlZmlyc3Qgc3JldmVyc2Ugc3NlYXJjaCBzc29ydCBzc3RhdHVzJ1xuICAgICAgKyAnIHNzdWJzdCBzc3Vic3RmaXJzdCBzdGFpcmNhc2Ugc3RhbmRhcmRpemUgc3RhbmRhcmRpemVfaW52ZXJzZV90cmlnIHN0YXJwbG90J1xuICAgICAgKyAnIHN0YXJwbG90X2Rlc2NyaXB0aW9uIHN0YXR1cyBzdGQgc3RkMSBzdGRfYmVybm91bGxpIHN0ZF9iZXRhIHN0ZF9iaW5vbWlhbCdcbiAgICAgICsgJyBzdGRfY2hpMiBzdGRfY29udGludW91c191bmlmb3JtIHN0ZF9kaXNjcmV0ZV91bmlmb3JtIHN0ZF9leHAgc3RkX2Ygc3RkX2dhbW1hJ1xuICAgICAgKyAnIHN0ZF9nZW5lcmFsX2Zpbml0ZV9kaXNjcmV0ZSBzdGRfZ2VvbWV0cmljIHN0ZF9ndW1iZWwgc3RkX2h5cGVyZ2VvbWV0cmljIHN0ZF9sYXBsYWNlJ1xuICAgICAgKyAnIHN0ZF9sb2dpc3RpYyBzdGRfbG9nbm9ybWFsIHN0ZF9uZWdhdGl2ZV9iaW5vbWlhbCBzdGRfbm9uY2VudHJhbF9jaGkyIHN0ZF9ub25jZW50cmFsX3N0dWRlbnRfdCdcbiAgICAgICsgJyBzdGRfbm9ybWFsIHN0ZF9wYXJldG8gc3RkX3BvaXNzb24gc3RkX3JheWxlaWdoIHN0ZF9zdHVkZW50X3Qgc3RkX3dlaWJ1bGwnXG4gICAgICArICcgc3RlbXBsb3Qgc3Rpcmxpbmcgc3RpcmxpbmcxIHN0aXJsaW5nMiBzdHJpbSBzdHJpbWwgc3RyaW1yIHN0cmluZyBzdHJpbmdvdXQnXG4gICAgICArICcgc3RyaW5ncCBzdHJvbmdfY29tcG9uZW50cyBzdHJ1dmVfaCBzdHJ1dmVfbCBzdWJsaXMgc3VibGlzdCBzdWJsaXN0X2luZGljZXMnXG4gICAgICArICcgc3VibWF0cml4IHN1YnNhbXBsZSBzdWJzZXQgc3Vic2V0cCBzdWJzdCBzdWJzdGlucGFydCBzdWJzdF9wYXJhbGxlbCBzdWJzdHBhcnQnXG4gICAgICArICcgc3Vic3RyaW5nIHN1YnZhciBzdWJ2YXJwIHN1bSBzdW1jb250cmFjdCBzdW1tYW5kX3RvX3JlYyBzdXBjYXNlIHN1cGNvbnRleHQnXG4gICAgICArICcgc3ltYm9scCBzeW1tZGlmZmVyZW5jZSBzeW1tZXRyaWNwIHN5c3RlbSB0YWtlX2NoYW5uZWwgdGFrZV9pbmZlcmVuY2UgdGFuJ1xuICAgICAgKyAnIHRhbmggdGF5bG9yIHRheWxvcmluZm8gdGF5bG9ycCB0YXlsb3Jfc2ltcGxpZmllciB0YXl0b3JhdCB0Y2xfb3V0cHV0IHRjb250cmFjdCdcbiAgICAgICsgJyB0ZWxscmF0IHRlbGxzaW1wIHRlbGxzaW1wYWZ0ZXIgdGVudGV4IHRlbnRoIHRlc3RfbWVhbiB0ZXN0X21lYW5zX2RpZmZlcmVuY2UnXG4gICAgICArICcgdGVzdF9ub3JtYWxpdHkgdGVzdF9wcm9wb3J0aW9uIHRlc3RfcHJvcG9ydGlvbnNfZGlmZmVyZW5jZSB0ZXN0X3Jhbmtfc3VtJ1xuICAgICAgKyAnIHRlc3Rfc2lnbiB0ZXN0X3NpZ25lZF9yYW5rIHRlc3RfdmFyaWFuY2UgdGVzdF92YXJpYW5jZV9yYXRpbyB0ZXggdGV4MSB0ZXhfZGlzcGxheSdcbiAgICAgICsgJyB0ZXhwdXQgJXRoIHRoaXJkIHRocm93IHRpbWUgdGltZWRhdGUgdGltZXIgdGltZXJfaW5mbyB0bGRlZmludCB0bGltaXQgdG9kZF9jb3hldGVyJ1xuICAgICAgKyAnIHRvZXBsaXR6IHRva2VucyB0b19saXNwIHRvcG9sb2dpY2FsX3NvcnQgdG9fcG9seSB0b19wb2x5X3NvbHZlIHRvdGFsZGlzcmVwJ1xuICAgICAgKyAnIHRvdGFsZm91cmllciB0b3RpZW50IHRwYXJ0cG9sIHRyYWNlIHRyYWNlbWF0cml4IHRyYWNlX29wdGlvbnMgdHJhbnNmb3JtX3NhbXBsZSdcbiAgICAgICsgJyB0cmFuc2xhdGUgdHJhbnNsYXRlX2ZpbGUgdHJhbnNwb3NlIHRyZWVmYWxlIHRyZWVfcmVkdWNlIHRyZWlsbGlzIHRyZWluYXQnXG4gICAgICArICcgdHJpYW5nbGUgdHJpYW5ndWxhcml6ZSB0cmlnZXhwYW5kIHRyaWdyYXQgdHJpZ3JlZHVjZSB0cmlnc2ltcCB0cnVuYyB0cnVuY2F0ZSdcbiAgICAgICsgJyB0cnVuY2F0ZWRfY3ViZV9ncmFwaCB0cnVuY2F0ZWRfZG9kZWNhaGVkcm9uX2dyYXBoIHRydW5jYXRlZF9pY29zYWhlZHJvbl9ncmFwaCdcbiAgICAgICsgJyB0cnVuY2F0ZWRfdGV0cmFoZWRyb25fZ3JhcGggdHJfd2FybmluZ3NfZ2V0IHR1YmUgdHV0dGVfZ3JhcGggdWVpdmVjdHMgdWZvcmdldCdcbiAgICAgICsgJyB1bHRyYXNwaGVyaWNhbCB1bmRlcmx5aW5nX2dyYXBoIHVuZGlmZiB1bmlvbiB1bmlxdWUgdW5pdGVpZ2VudmVjdG9ycyB1bml0cCdcbiAgICAgICsgJyB1bml0cyB1bml0X3N0ZXAgdW5pdHZlY3RvciB1bm9yZGVyIHVuc3VtIHVudGVsbHJhdCB1bnRpbWVyJ1xuICAgICAgKyAnIHVudHJhY2UgdXBwZXJjYXNlcCB1cmljY2kgdXJpZW1hbm4gdXZlY3QgdmFuZGVybW9uZGVfbWF0cml4IHZhciB2YXIxIHZhcl9iZXJub3VsbGknXG4gICAgICArICcgdmFyX2JldGEgdmFyX2Jpbm9taWFsIHZhcl9jaGkyIHZhcl9jb250aW51b3VzX3VuaWZvcm0gdmFyX2Rpc2NyZXRlX3VuaWZvcm0nXG4gICAgICArICcgdmFyX2V4cCB2YXJfZiB2YXJfZ2FtbWEgdmFyX2dlbmVyYWxfZmluaXRlX2Rpc2NyZXRlIHZhcl9nZW9tZXRyaWMgdmFyX2d1bWJlbCdcbiAgICAgICsgJyB2YXJfaHlwZXJnZW9tZXRyaWMgdmFyX2xhcGxhY2UgdmFyX2xvZ2lzdGljIHZhcl9sb2dub3JtYWwgdmFyX25lZ2F0aXZlX2Jpbm9taWFsJ1xuICAgICAgKyAnIHZhcl9ub25jZW50cmFsX2NoaTIgdmFyX25vbmNlbnRyYWxfc3R1ZGVudF90IHZhcl9ub3JtYWwgdmFyX3BhcmV0byB2YXJfcG9pc3NvbidcbiAgICAgICsgJyB2YXJfcmF5bGVpZ2ggdmFyX3N0dWRlbnRfdCB2YXJfd2VpYnVsbCB2ZWN0b3IgdmVjdG9ycG90ZW50aWFsIHZlY3RvcnNpbXAnXG4gICAgICArICcgdmVyYmlmeSB2ZXJzIHZlcnRleF9jb2xvcmluZyB2ZXJ0ZXhfY29ubmVjdGl2aXR5IHZlcnRleF9kZWdyZWUgdmVydGV4X2Rpc3RhbmNlJ1xuICAgICAgKyAnIHZlcnRleF9lY2NlbnRyaWNpdHkgdmVydGV4X2luX2RlZ3JlZSB2ZXJ0ZXhfb3V0X2RlZ3JlZSB2ZXJ0aWNlcyB2ZXJ0aWNlc190b19jeWNsZSdcbiAgICAgICsgJyB2ZXJ0aWNlc190b19wYXRoICV3IHdleWwgd2hlZWxfZ3JhcGggd2llbmVyX2luZGV4IHdpZ25lcl8zaiB3aWduZXJfNmonXG4gICAgICArICcgd2lnbmVyXzlqIHdpdGhfc3Rkb3V0IHdyaXRlX2JpbmFyeV9kYXRhIHdyaXRlYnl0ZSB3cml0ZV9kYXRhIHdyaXRlZmlsZSB3cm9uc2tpYW4nXG4gICAgICArICcgeHJlZHVjZSB4dGhydSAleSBaZWlsYmVyZ2VyIHplcm9lcXVpdiB6ZXJvZm9yIHplcm9tYXRyaXggemVyb21hdHJpeHAgemV0YSdcbiAgICAgICsgJyB6Z2VldiB6aGVldiB6bGFuZ2Ugem5fYWRkX3RhYmxlIHpuX2Nhcm1pY2hhZWxfbGFtYmRhIHpuX2NoYXJhY3RlcmlzdGljX2ZhY3RvcnMnXG4gICAgICArICcgem5fZGV0ZXJtaW5hbnQgem5fZmFjdG9yX2dlbmVyYXRvcnMgem5faW52ZXJ0X2J5X2x1IHpuX2xvZyB6bl9tdWx0X3RhYmxlJ1xuICAgICAgKyAnIGFic2JveGNoYXIgYWN0aXZlY29udGV4dHMgYWRhcHRfZGVwdGggYWRkaXRpdmUgYWRpbSBhZm9ybSBhbGdlYnJhaWMnXG4gICAgICArICcgYWxnZXBzaWxvbiBhbGdleGFjdCBhbGlhc2VzIGFsbGJ1dCBhbGxfZG90c2ltcF9kZW5vbXMgYWxsb2NhdGlvbiBhbGxzeW0gYWxwaGFiZXRpYydcbiAgICAgICsgJyBhbmltYXRpb24gYW50aXN5bW1ldHJpYyBhcnJheXMgYXNrZXhwIGFzc3VtZV9wb3MgYXNzdW1lX3Bvc19wcmVkIGFzc3VtZXNjYWxhcidcbiAgICAgICsgJyBhc3ltYm9sIGF0b21ncmFkIGF0cmlnMSBheGVzIGF4aXNfM2QgYXhpc19ib3R0b20gYXhpc19sZWZ0IGF4aXNfcmlnaHQgYXhpc190b3AnXG4gICAgICArICcgYXppbXV0aCBiYWNrZ3JvdW5kIGJhY2tncm91bmRfY29sb3IgYmFja3N1YnN0IGJlcmxlZmFjdCBiZXJuc3RlaW5fZXhwbGljaXQnXG4gICAgICArICcgYmVzc2VsZXhwYW5kIGJldGFfYXJnc19zdW1fdG9faW50ZWdlciBiZXRhX2V4cGFuZCBiZnRvcmF0IGJmdHJ1bmMgYmluZHRlc3QnXG4gICAgICArICcgYm9yZGVyIGJvdW5kYXJpZXNfYXJyYXkgYm94IGJveGNoYXIgYnJlYWt1cCAlYyBjYXBwaW5nIGNhdWNoeXN1bSBjYnJhbmdlJ1xuICAgICAgKyAnIGNidGljcyBjZW50ZXIgY2ZsZW5ndGggY2ZyYW1lX2ZsYWcgY25vbm1ldF9mbGFnIGNvbG9yIGNvbG9yX2JhciBjb2xvcl9iYXJfdGljcydcbiAgICAgICsgJyBjb2xvcmJveCBjb2x1bW5zIGNvbW11dGF0aXZlIGNvbXBsZXggY29uZSBjb250ZXh0IGNvbnRleHRzIGNvbnRvdXIgY29udG91cl9sZXZlbHMnXG4gICAgICArICcgY29zbnBpZmxhZyBjdGF5cG92IGN0YXlwdCBjdGF5c3dpdGNoIGN0YXl2YXIgY3RfY29vcmRzIGN0b3JzaW9uX2ZsYWcgY3RyZ3NpbXAnXG4gICAgICArICcgY3ViZSBjdXJyZW50X2xldF9ydWxlX3BhY2thZ2UgY3lsaW5kZXIgZGF0YV9maWxlX25hbWUgZGVidWdtb2RlIGRlY3JlYXNpbmcnXG4gICAgICArICcgZGVmYXVsdF9sZXRfcnVsZV9wYWNrYWdlIGRlbGF5IGRlcGVuZGVuY2llcyBkZXJpdmFiYnJldiBkZXJpdnN1YnN0IGRldG91dCdcbiAgICAgICsgJyBkaWFnbWV0cmljIGRpZmYgZGltIGRpbWVuc2lvbnMgZGlzcGZsYWcgZGlzcGxheTJkfDEwIGRpc3BsYXlfZm9ybWF0X2ludGVybmFsJ1xuICAgICAgKyAnIGRpc3RyaWJ1dGVfb3ZlciBkb2FsbG14b3BzIGRvbWFpbiBkb214ZXhwdCBkb214bXhvcHMgZG9teG5jdGltZXMgZG9udGZhY3RvcidcbiAgICAgICsgJyBkb3NjbXhvcHMgZG9zY214cGx1cyBkb3QwbnNjc2ltcCBkb3Qwc2ltcCBkb3Qxc2ltcCBkb3Rhc3NvYyBkb3Rjb25zdHJ1bGVzJ1xuICAgICAgKyAnIGRvdGRpc3RyaWIgZG90ZXhwdHNpbXAgZG90aWRlbnQgZG90c2NydWxlcyBkcmF3X2dyYXBoX3Byb2dyYW0gZHJhd19yZWFscGFydCdcbiAgICAgICsgJyBlZGdlX2NvbG9yIGVkZ2VfY29sb3JpbmcgZWRnZV9wYXJ0aXRpb24gZWRnZV90eXBlIGVkZ2Vfd2lkdGggJWVkaXNwZmxhZydcbiAgICAgICsgJyBlbGV2YXRpb24gJWVtb2RlIGVuZHBoaSBlbmR0aGV0YSBlbmdpbmVlcmluZ19mb3JtYXRfZmxvYXRzIGVuaGFuY2VkM2QgJWVudW1lcidcbiAgICAgICsgJyBlcHNpbG9uX2xwIGVyZmZsYWcgZXJmX3JlcHJlc2VudGF0aW9uIGVycm9ybXNnIGVycm9yX3NpemUgZXJyb3Jfc3ltcyBlcnJvcl90eXBlJ1xuICAgICAgKyAnICVlX3RvX251bWxvZyBldmFsIGV2ZW4gZXZlbmZ1biBldmZsYWcgZXZmdW4gZXZfcG9pbnQgZXhwYW5kd3J0X2Rlbm9tIGV4cGludGV4cGFuZCdcbiAgICAgICsgJyBleHBpbnRyZXAgZXhwb24gZXhwb3AgZXhwdGRpc3BmbGFnIGV4cHRpc29sYXRlIGV4cHRzdWJzdCBmYWNleHBhbmQgZmFjc3VtX2NvbWJpbmUnXG4gICAgICArICcgZmFjdGxpbSBmYWN0b3JmbGFnIGZhY3RvcmlhbF9leHBhbmQgZmFjdG9yc19vbmx5IGZiIGZlYXR1cmUgZmVhdHVyZXMnXG4gICAgICArICcgZmlsZV9uYW1lIGZpbGVfb3V0cHV0X2FwcGVuZCBmaWxlX3NlYXJjaF9kZW1vIGZpbGVfc2VhcmNoX2xpc3AgZmlsZV9zZWFyY2hfbWF4aW1hfDEwJ1xuICAgICAgKyAnIGZpbGVfc2VhcmNoX3Rlc3RzIGZpbGVfc2VhcmNoX3VzYWdlIGZpbGVfdHlwZV9saXNwIGZpbGVfdHlwZV9tYXhpbWF8MTAgZmlsbF9jb2xvcidcbiAgICAgICsgJyBmaWxsX2RlbnNpdHkgZmlsbGVkX2Z1bmMgZml4ZWRfdmVydGljZXMgZmxpcGZsYWcgZmxvYXQyYmYgZm9udCBmb250X3NpemUnXG4gICAgICArICcgZm9ydGluZGVudCBmb3J0c3BhY2VzIGZwcHJlYyBmcHByaW50cHJlYyBmdW5jdGlvbnMgZ2FtbWFfZXhwYW5kIGdhbW1hbGltJ1xuICAgICAgKyAnIGdkZXQgZ2VuaW5kZXggZ2Vuc3VtbnVtIEdHRkNGTUFYIEdHRklORklOSVRZIGdsb2JhbHNvbHZlIGdudXBsb3RfY29tbWFuZCdcbiAgICAgICsgJyBnbnVwbG90X2N1cnZlX3N0eWxlcyBnbnVwbG90X2N1cnZlX3RpdGxlcyBnbnVwbG90X2RlZmF1bHRfdGVybV9jb21tYW5kIGdudXBsb3RfZHVtYl90ZXJtX2NvbW1hbmQnXG4gICAgICArICcgZ251cGxvdF9maWxlX2FyZ3MgZ251cGxvdF9maWxlX25hbWUgZ251cGxvdF9vdXRfZmlsZSBnbnVwbG90X3BkZl90ZXJtX2NvbW1hbmQnXG4gICAgICArICcgZ251cGxvdF9wbTNkIGdudXBsb3RfcG5nX3Rlcm1fY29tbWFuZCBnbnVwbG90X3Bvc3RhbWJsZSBnbnVwbG90X3ByZWFtYmxlJ1xuICAgICAgKyAnIGdudXBsb3RfcHNfdGVybV9jb21tYW5kIGdudXBsb3Rfc3ZnX3Rlcm1fY29tbWFuZCBnbnVwbG90X3Rlcm0gZ251cGxvdF92aWV3X2FyZ3MnXG4gICAgICArICcgR29zcGVyX2luX1plaWxiZXJnZXIgZ3JhZGVmcyBncmlkIGdyaWQyZCBncmluZCBoYWxmYW5nbGVzIGhlYWRfYW5nbGUgaGVhZF9ib3RoJ1xuICAgICAgKyAnIGhlYWRfbGVuZ3RoIGhlYWRfdHlwZSBoZWlnaHQgaHlwZXJnZW9tZXRyaWNfcmVwcmVzZW50YXRpb24gJWlhcmdzIGliYXNlJ1xuICAgICAgKyAnIGljYzEgaWNjMiBpY291bnRlciBpZHVtbXl4IGllcW5wcmludCBpZmIgaWZjMSBpZmMyIGlmZyBpZmdpIGlmciBpZnJhbWVfYnJhY2tldF9mb3JtJ1xuICAgICAgKyAnIGlmcmkgaWdlb3dlZGdlX2ZsYWcgaWt0MSBpa3QyIGltYWdpbmFyeSBpbmNoYXIgaW5jcmVhc2luZyBpbmZldmFsJ1xuICAgICAgKyAnIGluZmluaXR5IGluZmxhZyBpbmZvbGlzdHMgaW5tIGlubWMxIGlubWMyIGludGFuYWx5c2lzIGludGVnZXIgaW50ZWdlcnZhbHVlZCdcbiAgICAgICsgJyBpbnRlZ3JhdGVfdXNlX3Jvb3Rzb2YgaW50ZWdyYXRpb25fY29uc3RhbnQgaW50ZWdyYXRpb25fY29uc3RhbnRfY291bnRlciBpbnRlcnBvbGF0ZV9jb2xvcidcbiAgICAgICsgJyBpbnRmYWNsaW0gaXBfZ3JpZCBpcF9ncmlkX2luIGlycmF0aW9uYWwgaXNvbGF0ZV93cnRfdGltZXMgaXRlcmF0aW9ucyBpdHInXG4gICAgICArICcganVsaWFfcGFyYW1ldGVyICVrMSAlazIga2VlcGZsb2F0IGtleSBrZXlfcG9zIGtpbnZhcmlhbnQga3QgbGFiZWwgbGFiZWxfYWxpZ25tZW50J1xuICAgICAgKyAnIGxhYmVsX29yaWVudGF0aW9uIGxhYmVscyBsYXNzb2NpYXRpdmUgbGJmZ3NfbmNvcnJlY3Rpb25zIGxiZmdzX25mZXZhbF9tYXgnXG4gICAgICArICcgbGVmdGp1c3QgbGVnZW5kIGxldHJhdCBsZXRfcnVsZV9wYWNrYWdlcyBsZmcgbGcgbGhvc3BpdGFsbGltIGxpbXN1YnN0IGxpbmVhcidcbiAgICAgICsgJyBsaW5lYXJfc29sdmVyIGxpbmVjaGFyIGxpbmVsfDEwIGxpbmVudW0gbGluZV90eXBlIGxpbmV3aWR0aCBsaW5lX3dpZHRoIGxpbnNvbHZlX3BhcmFtcydcbiAgICAgICsgJyBsaW5zb2x2ZXdhcm4gbGlzcGRpc3AgbGlzdGFyaXRoIGxpc3Rjb25zdHZhcnMgbGlzdGR1bW15dmFycyBsbXhjaGFyIGxvYWRfcGF0aG5hbWUnXG4gICAgICArICcgbG9hZHByaW50IGxvZ2FicyBsb2dhcmMgbG9nY2IgbG9nY29uY29lZmZwIGxvZ2V4cGFuZCBsb2duZWdpbnQgbG9nc2ltcCBsb2d4J1xuICAgICAgKyAnIGxvZ3hfc2Vjb25kYXJ5IGxvZ3kgbG9neV9zZWNvbmRhcnkgbG9neiBscmllbSBtMXBicmFuY2ggbWFjcm9leHBhbnNpb24gbWFjcm9zJ1xuICAgICAgKyAnIG1haW52YXIgbWFudWFsX2RlbW8gbWFwZXJyb3IgbWFwcHJpbnQgbWF0cml4X2VsZW1lbnRfYWRkIG1hdHJpeF9lbGVtZW50X211bHQnXG4gICAgICArICcgbWF0cml4X2VsZW1lbnRfdHJhbnNwb3NlIG1heGFwcGx5ZGVwdGggbWF4YXBwbHloZWlnaHQgbWF4aW1hX3RlbXBkaXJ8MTAgbWF4aW1hX3VzZXJkaXJ8MTAnXG4gICAgICArICcgbWF4bmVnZXggTUFYX09SRCBtYXhwb3NleCBtYXhwc2lmcmFjZGVub20gbWF4cHNpZnJhY251bSBtYXhwc2luZWdpbnQgbWF4cHNpcG9zaW50J1xuICAgICAgKyAnIG1heHRheW9yZGVyIG1lc2hfbGluZXNfY29sb3IgbWV0aG9kIG1vZF9iaWdfcHJpbWUgbW9kZV9jaGVja19lcnJvcnAnXG4gICAgICArICcgbW9kZV9jaGVja3AgbW9kZV9jaGVja193YXJucCBtb2RfdGVzdCBtb2RfdGhyZXNob2xkIG1vZHVsYXJfbGluZWFyX3NvbHZlcidcbiAgICAgICsgJyBtb2R1bHVzIG11bHRpcGxpY2F0aXZlIG11bHRpcGxpY2l0aWVzIG15b3B0aW9ucyBuYXJ5IG5lZ2Rpc3RyaWIgbmVnc3VtZGlzcGZsYWcnXG4gICAgICArICcgbmV3bGluZSBuZXd0b25lcHNpbG9uIG5ld3Rvbm1heGl0ZXIgbmV4dGxheWVyZmFjdG9yIG5pY2VpbmRpY2VzcHJlZiBubSBubWMnXG4gICAgICArICcgbm9ldmFsIG5vbGFiZWxzIG5vbmVnYXRpdmVfbHAgbm9uaW50ZWdlciBub25zY2FsYXIgbm91biBub3VuZGlzcCBub3VucyBucCdcbiAgICAgICsgJyBucGkgbnRpY2tzIG50cmlnIG51bWVyIG51bWVyX3BicmFuY2ggb2Jhc2Ugb2RkIG9kZGZ1biBvcGFjaXR5IG9wcHJvcGVydGllcydcbiAgICAgICsgJyBvcHN1YnN0IG9wdGltcHJlZml4IG9wdGlvbnNldCBvcmllbnRhdGlvbiBvcmlnaW4gb3J0aG9wb2x5X3JldHVybnNfaW50ZXJ2YWxzJ1xuICAgICAgKyAnIG91dGF0aXZlIG91dGNoYXIgcGFja2FnZWZpbGUgcGFsZXR0ZSBwYXJ0c3dpdGNoIHBkZl9maWxlIHBmZWZvcm1hdCBwaGlyZXNvbHV0aW9uJ1xuICAgICAgKyAnICVwaWFyZ3MgcGllY2UgcGl2b3RfY291bnRfc3ggcGl2b3RfbWF4X3N4IHBsb3RfZm9ybWF0IHBsb3Rfb3B0aW9ucyBwbG90X3JlYWxwYXJ0J1xuICAgICAgKyAnIHBuZ19maWxlIHBvY2hoYW1tZXJfbWF4X2luZGV4IHBvaW50cyBwb2ludHNpemUgcG9pbnRfc2l6ZSBwb2ludHNfam9pbmVkIHBvaW50X3R5cGUnXG4gICAgICArICcgcG9pc2xpbSBwb2lzc29uIHBvbHlfY29lZmZpY2llbnRfcmluZyBwb2x5X2VsaW1pbmF0aW9uX29yZGVyIHBvbHlmYWN0b3IgcG9seV9ncm9ibmVyX2FsZ29yaXRobSdcbiAgICAgICsgJyBwb2x5X2dyb2JuZXJfZGVidWcgcG9seV9tb25vbWlhbF9vcmRlciBwb2x5X3ByaW1hcnlfZWxpbWluYXRpb25fb3JkZXIgcG9seV9yZXR1cm5fdGVybV9saXN0J1xuICAgICAgKyAnIHBvbHlfc2Vjb25kYXJ5X2VsaW1pbmF0aW9uX29yZGVyIHBvbHlfdG9wX3JlZHVjdGlvbl9vbmx5IHBvc2Z1biBwb3NpdGlvbidcbiAgICAgICsgJyBwb3dlcmRpc3AgcHJlZCBwcmVkZXJyb3IgcHJpbWVwX251bWJlcl9vZl90ZXN0cyBwcm9kdWN0X3VzZV9nYW1tYSBwcm9ncmFtJ1xuICAgICAgKyAnIHByb2dyYW1tb2RlIHByb21vdGVfZmxvYXRfdG9fYmlnZmxvYXQgcHJvbXB0IHByb3BvcnRpb25hbF9heGVzIHByb3BzIHBzZXhwYW5kJ1xuICAgICAgKyAnIHBzX2ZpbGUgcmFkZXhwYW5kIHJhZGl1cyByYWRzdWJzdGZsYWcgcmFzc29jaWF0aXZlIHJhdGFsZ2Rlbm9tIHJhdGNocmlzdG9mJ1xuICAgICAgKyAnIHJhdGRlbm9tZGl2aWRlIHJhdGVpbnN0ZWluIHJhdGVwc2lsb24gcmF0ZmFjIHJhdGlvbmFsIHJhdG14IHJhdHByaW50IHJhdHJpZW1hbm4nXG4gICAgICArICcgcmF0c2ltcGV4cG9ucyByYXR2YXJzd2l0Y2ggcmF0d2VpZ2h0cyByYXR3ZXlsIHJhdHd0bHZsIHJlYWwgcmVhbG9ubHkgcmVkcmF3J1xuICAgICAgKyAnIHJlZmNoZWNrIHJlc29sdXRpb24gcmVzdGFydCByZXN1bHRhbnQgcmljIHJpZW0gcm14Y2hhciAlcm51bV9saXN0IHJvbWJlcmdhYnMnXG4gICAgICArICcgcm9tYmVyZ2l0IHJvbWJlcmdtaW4gcm9tYmVyZ3RvbCByb290c2Nvbm1vZGUgcm9vdHNlcHNpbG9uIHJ1bl92aWV3ZXIgc2FtZV94eSdcbiAgICAgICsgJyBzYW1lX3h5eiBzYXZlZGVmIHNhdmVmYWN0b3JzIHNjYWxhciBzY2FsYXJtYXRyaXhwIHNjYWxlIHNjYWxlX2xwIHNldGNoZWNrJ1xuICAgICAgKyAnIHNldGNoZWNrYnJlYWsgc2V0dmFsIHNob3dfZWRnZV9jb2xvciBzaG93X2VkZ2VzIHNob3dfZWRnZV90eXBlIHNob3dfZWRnZV93aWR0aCdcbiAgICAgICsgJyBzaG93X2lkIHNob3dfbGFiZWwgc2hvd3RpbWUgc2hvd192ZXJ0ZXhfY29sb3Igc2hvd192ZXJ0ZXhfc2l6ZSBzaG93X3ZlcnRleF90eXBlJ1xuICAgICAgKyAnIHNob3dfdmVydGljZXMgc2hvd193ZWlnaHQgc2ltcCBzaW1wbGlmaWVkX291dHB1dCBzaW1wbGlmeV9wcm9kdWN0cyBzaW1wcHJvZHVjdCdcbiAgICAgICsgJyBzaW1wc3VtIHNpbm5waWZsYWcgc29sdmVkZWNvbXBvc2VzIHNvbHZlZXhwbGljaXQgc29sdmVmYWN0b3JzIHNvbHZlbnVsbHdhcm4nXG4gICAgICArICcgc29sdmVyYWRjYW4gc29sdmV0cmlnd2FybiBzcGFjZSBzcGFyc2Ugc3BoZXJlIHNwcmluZ19lbWJlZGRpbmdfZGVwdGggc3FydGRpc3BmbGFnJ1xuICAgICAgKyAnIHN0YXJkaXNwIHN0YXJ0cGhpIHN0YXJ0dGhldGEgc3RhdHNfbnVtZXIgc3RyaW5nZGlzcCBzdHJ1Y3R1cmVzIHN0eWxlIHN1Ymxpc19hcHBseV9sYW1iZGEnXG4gICAgICArICcgc3VibnVtc2ltcCBzdW1leHBhbmQgc3Vtc3BsaXRmYWN0IHN1cmZhY2Ugc3VyZmFjZV9oaWRlIHN2Z19maWxlIHN5bW1ldHJpYydcbiAgICAgICsgJyB0YWIgdGF5bG9yZGVwdGggdGF5bG9yX2xvZ2V4cGFuZCB0YXlsb3Jfb3JkZXJfY29lZmZpY2llbnRzIHRheWxvcl90cnVuY2F0ZV9wb2x5bm9taWFscydcbiAgICAgICsgJyB0ZW5zb3JraWxsIHRlcm1pbmFsIHRlc3RzdWl0ZV9maWxlcyB0aGV0YXJlc29sdXRpb24gdGltZXJfZGV2YWx1ZSB0aXRsZSB0bGltc3dpdGNoJ1xuICAgICAgKyAnIHRyIHRyYWNrIHRyYW5zY29tcGlsZSB0cmFuc2Zvcm0gdHJhbnNmb3JtX3h5IHRyYW5zbGF0ZV9mYXN0X2FycmF5cyB0cmFuc3BhcmVudCdcbiAgICAgICsgJyB0cmFuc3J1biB0cl9hcnJheV9hc19yZWYgdHJfYm91bmRfZnVuY3Rpb25fYXBwbHlwIHRyX2ZpbGVfdHR5X21lc3NhZ2VzcCB0cl9mbG9hdF9jYW5fYnJhbmNoX2NvbXBsZXgnXG4gICAgICArICcgdHJfZnVuY3Rpb25fY2FsbF9kZWZhdWx0IHRyaWdleHBhbmRwbHVzIHRyaWdleHBhbmR0aW1lcyB0cmlnaW52ZXJzZXMgdHJpZ3NpZ24nXG4gICAgICArICcgdHJpdmlhbF9zb2x1dGlvbnMgdHJfbnVtZXIgdHJfb3B0aW1pemVfbWF4X2xvb3AgdHJfc2VtaWNvbXBpbGUgdHJfc3RhdGVfdmFycydcbiAgICAgICsgJyB0cl93YXJuX2JhZF9mdW5jdGlvbl9jYWxscyB0cl93YXJuX2ZleHByIHRyX3dhcm5fbWV2YWwgdHJfd2Fybl9tb2RlJ1xuICAgICAgKyAnIHRyX3dhcm5fdW5kZWNsYXJlZCB0cl93YXJuX3VuZGVmaW5lZF92YXJpYWJsZSB0c3RlcCB0dHlvZmYgdHViZV9leHRyZW1lcydcbiAgICAgICsgJyB1ZmcgdWcgJXVuaXRleHBhbmQgdW5pdF92ZWN0b3JzIHVyaWMgdXJpZW0gdXNlX2Zhc3RfYXJyYXlzIHVzZXJfcHJlYW1ibGUnXG4gICAgICArICcgdXNlcnNldHVuaXRzIHZhbHVlcyB2ZWN0X2Nyb3NzIHZlcmJvc2UgdmVydGV4X2NvbG9yIHZlcnRleF9jb2xvcmluZyB2ZXJ0ZXhfcGFydGl0aW9uJ1xuICAgICAgKyAnIHZlcnRleF9zaXplIHZlcnRleF90eXBlIHZpZXcgd2FybmluZ3Mgd2V5bCB3aWR0aCB3aW5kb3duYW1lIHdpbmRvd3RpdGxlIHdpcmVkX3N1cmZhY2UnXG4gICAgICArICcgd2lyZWZyYW1lIHhheGlzIHhheGlzX2NvbG9yIHhheGlzX3NlY29uZGFyeSB4YXhpc190eXBlIHhheGlzX3dpZHRoIHhsYWJlbCdcbiAgICAgICsgJyB4bGFiZWxfc2Vjb25kYXJ5IHhsZW5ndGggeHJhbmdlIHhyYW5nZV9zZWNvbmRhcnkgeHRpY3MgeHRpY3NfYXhpcyB4dGljc19yb3RhdGUnXG4gICAgICArICcgeHRpY3Nfcm90YXRlX3NlY29uZGFyeSB4dGljc19zZWNvbmRhcnkgeHRpY3Nfc2Vjb25kYXJ5X2F4aXMgeHVfZ3JpZCB4X3ZveGVsJ1xuICAgICAgKyAnIHh5X2ZpbGUgeHlwbGFuZSB4eV9zY2FsZSB5YXhpcyB5YXhpc19jb2xvciB5YXhpc19zZWNvbmRhcnkgeWF4aXNfdHlwZSB5YXhpc193aWR0aCdcbiAgICAgICsgJyB5bGFiZWwgeWxhYmVsX3NlY29uZGFyeSB5bGVuZ3RoIHlyYW5nZSB5cmFuZ2Vfc2Vjb25kYXJ5IHl0aWNzIHl0aWNzX2F4aXMnXG4gICAgICArICcgeXRpY3Nfcm90YXRlIHl0aWNzX3JvdGF0ZV9zZWNvbmRhcnkgeXRpY3Nfc2Vjb25kYXJ5IHl0aWNzX3NlY29uZGFyeV9heGlzJ1xuICAgICAgKyAnIHl2X2dyaWQgeV92b3hlbCB5eF9yYXRpbyB6YXhpcyB6YXhpc19jb2xvciB6YXhpc190eXBlIHpheGlzX3dpZHRoIHplcm9hIHplcm9iJ1xuICAgICAgKyAnIHplcm9iZXJuIHpldGElcGkgemxhYmVsIHpsYWJlbF9yb3RhdGUgemxlbmd0aCB6bWluIHpuX3ByaW1yb290X2xpbWl0IHpuX3ByaW1yb290X3ByZXRlc3QnO1xuICB2YXIgU1lNQk9MUyA9ICdfIF9fICV8MCAlJXwwJztcblxuICByZXR1cm4ge1xuICAgIGxleGVtZXM6ICdbQS1aYS16XyVdWzAtOUEtWmEtel8lXSonLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAgYnVpbHRfaW46IEJVSUxUSU5fRlVOQ1RJT05TLFxuICAgICAgc3ltYm9sOiBTWU1CT0xTLFxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgIGJlZ2luOiAnL1xcXFwqJyxcbiAgICAgICAgZW5kOiAnXFxcXCovJyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGZsb2F0IG51bWJlciB3LyBleHBvbmVudFxuICAgICAgICAgICAgLy8gaG1tLCBJIHdvbmRlciBpZiB3ZSBvdWdodCB0byBpbmNsdWRlIG90aGVyIGV4cG9uZW50IG1hcmtlcnM/XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiKFxcXFxkK3xcXFxcZCtcXFxcLnxcXFxcLlxcXFxkK3xcXFxcZCtcXFxcLlxcXFxkKylbRWVdWy0rXT9cXFxcZCtcXFxcYicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBiaWdmbG9hdCBudW1iZXJcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXGQrfFxcXFxkK1xcXFwufFxcXFwuXFxcXGQrfFxcXFxkK1xcXFwuXFxcXGQrKVtCYl1bLStdP1xcXFxkK1xcXFxiJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGZsb2F0IG51bWJlciB3L291dCBleHBvbmVudFxuICAgICAgICAgICAgLy8gRG9lc24ndCBzZWVtIHRvIHJlY29nbml6ZSBmbG9hdHMgd2hpY2ggc3RhcnQgd2l0aCAnLidcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoXFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCspXFxcXGInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gaW50ZWdlciBpbiBiYXNlIHVwIHRvIDM2XG4gICAgICAgICAgICAvLyBEb2Vzbid0IHNlZW0gdG8gcmVjb2duaXplIGludGVnZXJzIHdoaWNoIGVuZCB3aXRoICcuJ1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihcXFxcZCt8MFswLTlBLVphLXpdKylcXFxcLj9cXFxcYicsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvQC9cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczpcbiAgICAgICdpbnQgZmxvYXQgc3RyaW5nIHZlY3RvciBtYXRyaXggaWYgZWxzZSBzd2l0Y2ggY2FzZSBkZWZhdWx0IHdoaWxlIGRvIGZvciBpbiBicmVhayAnICtcbiAgICAgICdjb250aW51ZSBnbG9iYWwgcHJvYyByZXR1cm4gYWJvdXQgYWJzIGFkZEF0dHIgYWRkQXR0cmlidXRlRWRpdG9yTm9kZUhlbHAgYWRkRHluYW1pYyAnICtcbiAgICAgICdhZGROZXdTaGVsZlRhYiBhZGRQUCBhZGRQYW5lbENhdGVnb3J5IGFkZFByZWZpeFRvTmFtZSBhZHZhbmNlVG9OZXh0RHJpdmVuS2V5ICcgK1xuICAgICAgJ2FmZmVjdGVkTmV0IGFmZmVjdHMgYWltQ29uc3RyYWludCBhaXIgYWxpYXMgYWxpYXNBdHRyIGFsaWduIGFsaWduQ3R4IGFsaWduQ3VydmUgJyArXG4gICAgICAnYWxpZ25TdXJmYWNlIGFsbFZpZXdGaXQgYW1iaWVudExpZ2h0IGFuZ2xlIGFuZ2xlQmV0d2VlbiBhbmltQ29uZSBhbmltQ3VydmVFZGl0b3IgJyArXG4gICAgICAnYW5pbURpc3BsYXkgYW5pbVZpZXcgYW5ub3RhdGUgYXBwZW5kU3RyaW5nQXJyYXkgYXBwbGljYXRpb25OYW1lIGFwcGx5QXR0clByZXNldCAnICtcbiAgICAgICdhcHBseVRha2UgYXJjTGVuRGltQ29udGV4dCBhcmNMZW5ndGhEaW1lbnNpb24gYXJjbGVuIGFycmF5TWFwcGVyIGFydDNkUGFpbnRDdHggJyArXG4gICAgICAnYXJ0QXR0ckN0eCBhcnRBdHRyUGFpbnRWZXJ0ZXhDdHggYXJ0QXR0clNraW5QYWludEN0eCBhcnRBdHRyVG9vbCBhcnRCdWlsZFBhaW50TWVudSAnICtcbiAgICAgICdhcnRGbHVpZEF0dHJDdHggYXJ0UHV0dHlDdHggYXJ0U2VsZWN0Q3R4IGFydFNldFBhaW50Q3R4IGFydFVzZXJQYWludEN0eCBhc3NpZ25Db21tYW5kICcgK1xuICAgICAgJ2Fzc2lnbklucHV0RGV2aWNlIGFzc2lnblZpZXdwb3J0RmFjdG9yaWVzIGF0dGFjaEN1cnZlIGF0dGFjaERldmljZUF0dHIgYXR0YWNoU3VyZmFjZSAnICtcbiAgICAgICdhdHRyQ29sb3JTbGlkZXJHcnAgYXR0ckNvbXBhdGliaWxpdHkgYXR0ckNvbnRyb2xHcnAgYXR0ckVudW1PcHRpb25NZW51ICcgK1xuICAgICAgJ2F0dHJFbnVtT3B0aW9uTWVudUdycCBhdHRyRmllbGRHcnAgYXR0ckZpZWxkU2xpZGVyR3JwIGF0dHJOYXZpZ2F0aW9uQ29udHJvbEdycCAnICtcbiAgICAgICdhdHRyUHJlc2V0RWRpdFdpbiBhdHRyaWJ1dGVFeGlzdHMgYXR0cmlidXRlSW5mbyBhdHRyaWJ1dGVNZW51IGF0dHJpYnV0ZVF1ZXJ5ICcgK1xuICAgICAgJ2F1dG9LZXlmcmFtZSBhdXRvUGxhY2UgYmFrZUNsaXAgYmFrZUZsdWlkU2hhZGluZyBiYWtlUGFydGlhbEhpc3RvcnkgYmFrZVJlc3VsdHMgJyArXG4gICAgICAnYmFrZVNpbXVsYXRpb24gYmFzZW5hbWUgYmFzZW5hbWVFeCBiYXRjaFJlbmRlciBiZXNzZWwgYmV2ZWwgYmV2ZWxQbHVzIGJpbk1lbWJlcnNoaXAgJyArXG4gICAgICAnYmluZFNraW4gYmxlbmQyIGJsZW5kU2hhcGUgYmxlbmRTaGFwZUVkaXRvciBibGVuZFNoYXBlUGFuZWwgYmxlbmRUd29BdHRyIGJsaW5kRGF0YVR5cGUgJyArXG4gICAgICAnYm9uZUxhdHRpY2UgYm91bmRhcnkgYm94RG9sbHlDdHggYm94Wm9vbUN0eCBidWZmZXJDdXJ2ZSBidWlsZEJvb2ttYXJrTWVudSAnICtcbiAgICAgICdidWlsZEtleWZyYW1lTWVudSBidXR0b24gYnV0dG9uTWFuaXAgQ0JHIGNhY2hlRmlsZSBjYWNoZUZpbGVDb21iaW5lIGNhY2hlRmlsZU1lcmdlICcgK1xuICAgICAgJ2NhY2hlRmlsZVRyYWNrIGNhbWVyYSBjYW1lcmFWaWV3IGNhbkNyZWF0ZU1hbmlwIGNhbnZhcyBjYXBpdGFsaXplU3RyaW5nIGNhdGNoICcgK1xuICAgICAgJ2NhdGNoUXVpZXQgY2VpbCBjaGFuZ2VTdWJkaXZDb21wb25lbnREaXNwbGF5TGV2ZWwgY2hhbmdlU3ViZGl2UmVnaW9uIGNoYW5uZWxCb3ggJyArXG4gICAgICAnY2hhcmFjdGVyIGNoYXJhY3Rlck1hcCBjaGFyYWN0ZXJPdXRsaW5lRWRpdG9yIGNoYXJhY3Rlcml6ZSBjaGRpciBjaGVja0JveCBjaGVja0JveEdycCAnICtcbiAgICAgICdjaGVja0RlZmF1bHRSZW5kZXJHbG9iYWxzIGNob2ljZSBjaXJjbGUgY2lyY3VsYXJGaWxsZXQgY2xhbXAgY2xlYXIgY2xlYXJDYWNoZSBjbGlwICcgK1xuICAgICAgJ2NsaXBFZGl0b3IgY2xpcEVkaXRvckN1cnJlbnRUaW1lQ3R4IGNsaXBTY2hlZHVsZSBjbGlwU2NoZWR1bGVyT3V0bGluZXIgY2xpcFRyaW1CZWZvcmUgJyArXG4gICAgICAnY2xvc2VDdXJ2ZSBjbG9zZVN1cmZhY2UgY2x1c3RlciBjbWRGaWxlT3V0cHV0IGNtZFNjcm9sbEZpZWxkRXhlY3V0ZXIgJyArXG4gICAgICAnY21kU2Nyb2xsRmllbGRSZXBvcnRlciBjbWRTaGVsbCBjb2Fyc2VuU3ViZGl2U2VsZWN0aW9uTGlzdCBjb2xsaXNpb24gY29sb3IgJyArXG4gICAgICAnY29sb3JBdFBvaW50IGNvbG9yRWRpdG9yIGNvbG9ySW5kZXggY29sb3JJbmRleFNsaWRlckdycCBjb2xvclNsaWRlckJ1dHRvbkdycCAnICtcbiAgICAgICdjb2xvclNsaWRlckdycCBjb2x1bW5MYXlvdXQgY29tbWFuZEVjaG8gY29tbWFuZExpbmUgY29tbWFuZFBvcnQgY29tcGFjdEhhaXJTeXN0ZW0gJyArXG4gICAgICAnY29tcG9uZW50RWRpdG9yIGNvbXBvc2l0aW5nSW50ZXJvcCBjb21wdXRlUG9seXNldFZvbHVtZSBjb25kaXRpb24gY29uZSBjb25maXJtRGlhbG9nICcgK1xuICAgICAgJ2Nvbm5lY3RBdHRyIGNvbm5lY3RDb250cm9sIGNvbm5lY3REeW5hbWljIGNvbm5lY3RKb2ludCBjb25uZWN0aW9uSW5mbyBjb25zdHJhaW4gJyArXG4gICAgICAnY29uc3RyYWluVmFsdWUgY29uc3RydWN0aW9uSGlzdG9yeSBjb250YWluZXIgY29udGFpbnNNdWx0aWJ5dGUgY29udGV4dEluZm8gY29udHJvbCAnICtcbiAgICAgICdjb252ZXJ0RnJvbU9sZExheWVycyBjb252ZXJ0SWZmVG9Qc2QgY29udmVydExpZ2h0bWFwIGNvbnZlcnRTb2xpZFR4IGNvbnZlcnRUZXNzZWxsYXRpb24gJyArXG4gICAgICAnY29udmVydFVuaXQgY29weUFycmF5IGNvcHlGbGV4b3IgY29weUtleSBjb3B5U2tpbldlaWdodHMgY29zIGNwQnV0dG9uIGNwQ2FjaGUgJyArXG4gICAgICAnY3BDbG90aFNldCBjcENvbGxpc2lvbiBjcENvbnN0cmFpbnQgY3BDb252Q2xvdGhUb01lc2ggY3BGb3JjZXMgY3BHZXRTb2x2ZXJBdHRyIGNwUGFuZWwgJyArXG4gICAgICAnY3BQcm9wZXJ0eSBjcFJpZ2lkQ29sbGlzaW9uRmlsdGVyIGNwU2VhbSBjcFNldEVkaXQgY3BTZXRTb2x2ZXJBdHRyIGNwU29sdmVyICcgK1xuICAgICAgJ2NwU29sdmVyVHlwZXMgY3BUb29sIGNwVXBkYXRlQ2xvdGhVVnMgY3JlYXRlRGlzcGxheUxheWVyIGNyZWF0ZURyYXdDdHggY3JlYXRlRWRpdG9yICcgK1xuICAgICAgJ2NyZWF0ZUxheWVyZWRQc2RGaWxlIGNyZWF0ZU1vdGlvbkZpZWxkIGNyZWF0ZU5ld1NoZWxmIGNyZWF0ZU5vZGUgY3JlYXRlUmVuZGVyTGF5ZXIgJyArXG4gICAgICAnY3JlYXRlU3ViZGl2UmVnaW9uIGNyb3NzIGNyb3NzUHJvZHVjdCBjdHhBYm9ydCBjdHhDb21wbGV0aW9uIGN0eEVkaXRNb2RlIGN0eFRyYXZlcnNlICcgK1xuICAgICAgJ2N1cnJlbnRDdHggY3VycmVudFRpbWUgY3VycmVudFRpbWVDdHggY3VycmVudFVuaXQgY3VydmUgY3VydmVBZGRQdEN0eCAnICtcbiAgICAgICdjdXJ2ZUNWQ3R4IGN1cnZlRVBDdHggY3VydmVFZGl0b3JDdHggY3VydmVJbnRlcnNlY3QgY3VydmVNb3ZlRVBDdHggY3VydmVPblN1cmZhY2UgJyArXG4gICAgICAnY3VydmVTa2V0Y2hDdHggY3V0S2V5IGN5Y2xlQ2hlY2sgY3lsaW5kZXIgZGFnUG9zZSBkYXRlIGRlZmF1bHRMaWdodExpc3RDaGVja0JveCAnICtcbiAgICAgICdkZWZhdWx0TmF2aWdhdGlvbiBkZWZpbmVEYXRhU2VydmVyIGRlZmluZVZpcnR1YWxEZXZpY2UgZGVmb3JtZXIgZGVnX3RvX3JhZCBkZWxldGUgJyArXG4gICAgICAnZGVsZXRlQXR0ciBkZWxldGVTaGFkaW5nR3JvdXBzQW5kTWF0ZXJpYWxzIGRlbGV0ZVNoZWxmVGFiIGRlbGV0ZVVJIGRlbGV0ZVVudXNlZEJydXNoZXMgJyArXG4gICAgICAnZGVscmFuZHN0ciBkZXRhY2hDdXJ2ZSBkZXRhY2hEZXZpY2VBdHRyIGRldGFjaFN1cmZhY2UgZGV2aWNlRWRpdG9yIGRldmljZVBhbmVsIGRnSW5mbyAnICtcbiAgICAgICdkZ2RpcnR5IGRnZXZhbCBkZ3RpbWVyIGRpbVdoZW4gZGlyZWN0S2V5Q3R4IGRpcmVjdGlvbmFsTGlnaHQgZGlybWFwIGRpcm5hbWUgZGlzYWJsZSAnICtcbiAgICAgICdkaXNjb25uZWN0QXR0ciBkaXNjb25uZWN0Sm9pbnQgZGlza0NhY2hlIGRpc3BsYWNlbWVudFRvUG9seSBkaXNwbGF5QWZmZWN0ZWQgJyArXG4gICAgICAnZGlzcGxheUNvbG9yIGRpc3BsYXlDdWxsIGRpc3BsYXlMZXZlbE9mRGV0YWlsIGRpc3BsYXlQcmVmIGRpc3BsYXlSR0JDb2xvciAnICtcbiAgICAgICdkaXNwbGF5U21vb3RobmVzcyBkaXNwbGF5U3RhdHMgZGlzcGxheVN0cmluZyBkaXNwbGF5U3VyZmFjZSBkaXN0YW5jZURpbUNvbnRleHQgJyArXG4gICAgICAnZGlzdGFuY2VEaW1lbnNpb24gZG9CbHVyIGRvbGx5IGRvbGx5Q3R4IGRvcGVTaGVldEVkaXRvciBkb3QgZG90UHJvZHVjdCAnICtcbiAgICAgICdkb3VibGVQcm9maWxlQmlyYWlsU3VyZmFjZSBkcmFnIGRyYWdBdHRyQ29udGV4dCBkcmFnZ2VyQ29udGV4dCBkcm9wb2ZmTG9jYXRvciAnICtcbiAgICAgICdkdXBsaWNhdGUgZHVwbGljYXRlQ3VydmUgZHVwbGljYXRlU3VyZmFjZSBkeW5DYWNoZSBkeW5Db250cm9sIGR5bkV4cG9ydCBkeW5FeHByZXNzaW9uICcgK1xuICAgICAgJ2R5bkdsb2JhbHMgZHluUGFpbnRFZGl0b3IgZHluUGFydGljbGVDdHggZHluUHJlZiBkeW5SZWxFZFBhbmVsIGR5blJlbEVkaXRvciAnICtcbiAgICAgICdkeW5hbWljTG9hZCBlZGl0QXR0ckxpbWl0cyBlZGl0RGlzcGxheUxheWVyR2xvYmFscyBlZGl0RGlzcGxheUxheWVyTWVtYmVycyAnICtcbiAgICAgICdlZGl0UmVuZGVyTGF5ZXJBZGp1c3RtZW50IGVkaXRSZW5kZXJMYXllckdsb2JhbHMgZWRpdFJlbmRlckxheWVyTWVtYmVycyBlZGl0b3IgJyArXG4gICAgICAnZWRpdG9yVGVtcGxhdGUgZWZmZWN0b3IgZW1pdCBlbWl0dGVyIGVuYWJsZURldmljZSBlbmNvZGVTdHJpbmcgZW5kU3RyaW5nIGVuZHNXaXRoIGVudiAnICtcbiAgICAgICdlcXVpdmFsZW50IGVxdWl2YWxlbnRUb2wgZXJmIGVycm9yIGV2YWwgZXZhbERlZmVycmVkIGV2YWxFY2hvIGV2ZW50ICcgK1xuICAgICAgJ2V4YWN0V29ybGRCb3VuZGluZ0JveCBleGNsdXNpdmVMaWdodENoZWNrQm94IGV4ZWMgZXhlY3V0ZUZvckVhY2hPYmplY3QgZXhpc3RzIGV4cCAnICtcbiAgICAgICdleHByZXNzaW9uIGV4cHJlc3Npb25FZGl0b3JMaXN0ZW4gZXh0ZW5kQ3VydmUgZXh0ZW5kU3VyZmFjZSBleHRydWRlIGZjaGVjayBmY2xvc2UgZmVvZiAnICtcbiAgICAgICdmZmx1c2ggZmdldGxpbmUgZmdldHdvcmQgZmlsZSBmaWxlQnJvd3NlckRpYWxvZyBmaWxlRGlhbG9nIGZpbGVFeHRlbnNpb24gZmlsZUluZm8gJyArXG4gICAgICAnZmlsZXRlc3QgZmlsbGV0Q3VydmUgZmlsdGVyIGZpbHRlckN1cnZlIGZpbHRlckV4cGFuZCBmaWx0ZXJTdHVkaW9JbXBvcnQgJyArXG4gICAgICAnZmluZEFsbEludGVyc2VjdGlvbnMgZmluZEFuaW1DdXJ2ZXMgZmluZEtleWZyYW1lIGZpbmRNZW51SXRlbSBmaW5kUmVsYXRlZFNraW5DbHVzdGVyICcgK1xuICAgICAgJ2ZpbmRlciBmaXJzdFBhcmVudE9mIGZpdEJzcGxpbmUgZmxleG9yIGZsb2F0RXEgZmxvYXRGaWVsZCBmbG9hdEZpZWxkR3JwIGZsb2F0U2Nyb2xsQmFyICcgK1xuICAgICAgJ2Zsb2F0U2xpZGVyIGZsb2F0U2xpZGVyMiBmbG9hdFNsaWRlckJ1dHRvbkdycCBmbG9hdFNsaWRlckdycCBmbG9vciBmbG93IGZsdWlkQ2FjaGVJbmZvICcgK1xuICAgICAgJ2ZsdWlkRW1pdHRlciBmbHVpZFZveGVsSW5mbyBmbHVzaFVuZG8gZm1vZCBmb250RGlhbG9nIGZvcGVuIGZvcm1MYXlvdXQgZm9ybWF0IGZwcmludCAnICtcbiAgICAgICdmcmFtZUxheW91dCBmcmVhZCBmcmVlRm9ybUZpbGxldCBmcmV3aW5kIGZyb21OYXRpdmVQYXRoIGZ3cml0ZSBnYW1tYSBnYXVzcyAnICtcbiAgICAgICdnZW9tZXRyeUNvbnN0cmFpbnQgZ2V0QXBwbGljYXRpb25WZXJzaW9uQXNGbG9hdCBnZXRBdHRyIGdldENsYXNzaWZpY2F0aW9uICcgK1xuICAgICAgJ2dldERlZmF1bHRCcnVzaCBnZXRGaWxlTGlzdCBnZXRGbHVpZEF0dHIgZ2V0SW5wdXREZXZpY2VSYW5nZSBnZXRNYXlhUGFuZWxUeXBlcyAnICtcbiAgICAgICdnZXRNb2RpZmllcnMgZ2V0UGFuZWwgZ2V0UGFydGljbGVBdHRyIGdldFBsdWdpblJlc291cmNlIGdldGVudiBnZXRwaWQgZ2xSZW5kZXIgJyArXG4gICAgICAnZ2xSZW5kZXJFZGl0b3IgZ2xvYmFsU3RpdGNoIGdtYXRjaCBnb2FsIGdvdG9CaW5kUG9zZSBncmFiQ29sb3IgZ3JhZGllbnRDb250cm9sICcgK1xuICAgICAgJ2dyYWRpZW50Q29udHJvbE5vQXR0ciBncmFwaERvbGx5Q3R4IGdyYXBoU2VsZWN0Q29udGV4dCBncmFwaFRyYWNrQ3R4IGdyYXZpdHkgZ3JpZCAnICtcbiAgICAgICdncmlkTGF5b3V0IGdyb3VwIGdyb3VwT2JqZWN0c0J5TmFtZSBIZkFkZEF0dHJhY3RvclRvQVMgSGZBc3NpZ25BUyBIZkJ1aWxkRXF1YWxNYXAgJyArXG4gICAgICAnSGZCdWlsZEZ1ckZpbGVzIEhmQnVpbGRGdXJJbWFnZXMgSGZDYW5jZWxBRlIgSGZDb25uZWN0QVNUb0hGIEhmQ3JlYXRlQXR0cmFjdG9yICcgK1xuICAgICAgJ0hmRGVsZXRlQVMgSGZFZGl0QVMgSGZQZXJmb3JtQ3JlYXRlQVMgSGZSZW1vdmVBdHRyYWN0b3JGcm9tQVMgSGZTZWxlY3RBdHRhY2hlZCAnICtcbiAgICAgICdIZlNlbGVjdEF0dHJhY3RvcnMgSGZVbkFzc2lnbkFTIGhhcmRlblBvaW50Q3VydmUgaGFyZHdhcmUgaGFyZHdhcmVSZW5kZXJQYW5lbCAnICtcbiAgICAgICdoZWFkc1VwRGlzcGxheSBoZWFkc1VwTWVzc2FnZSBoZWxwIGhlbHBMaW5lIGhlcm1pdGUgaGlkZSBoaWxpdGUgaGl0VGVzdCBob3RCb3ggaG90a2V5ICcgK1xuICAgICAgJ2hvdGtleUNoZWNrIGhzdl90b19yZ2IgaHVkQnV0dG9uIGh1ZFNsaWRlciBodWRTbGlkZXJCdXR0b24gaHdSZWZsZWN0aW9uTWFwIGh3UmVuZGVyICcgK1xuICAgICAgJ2h3UmVuZGVyTG9hZCBoeXBlckdyYXBoIGh5cGVyUGFuZWwgaHlwZXJTaGFkZSBoeXBvdCBpY29uVGV4dEJ1dHRvbiBpY29uVGV4dENoZWNrQm94ICcgK1xuICAgICAgJ2ljb25UZXh0UmFkaW9CdXR0b24gaWNvblRleHRSYWRpb0NvbGxlY3Rpb24gaWNvblRleHRTY3JvbGxMaXN0IGljb25UZXh0U3RhdGljTGFiZWwgJyArXG4gICAgICAnaWtIYW5kbGUgaWtIYW5kbGVDdHggaWtIYW5kbGVEaXNwbGF5U2NhbGUgaWtTb2x2ZXIgaWtTcGxpbmVIYW5kbGVDdHggaWtTeXN0ZW0gJyArXG4gICAgICAnaWtTeXN0ZW1JbmZvIGlrZmtEaXNwbGF5TWV0aG9kIGlsbHVzdHJhdG9yQ3VydmVzIGltYWdlIGltZlBsdWdpbnMgaW5oZXJpdFRyYW5zZm9ybSAnICtcbiAgICAgICdpbnNlcnRKb2ludCBpbnNlcnRKb2ludEN0eCBpbnNlcnRLZXlDdHggaW5zZXJ0S25vdEN1cnZlIGluc2VydEtub3RTdXJmYWNlIGluc3RhbmNlICcgK1xuICAgICAgJ2luc3RhbmNlYWJsZSBpbnN0YW5jZXIgaW50RmllbGQgaW50RmllbGRHcnAgaW50U2Nyb2xsQmFyIGludFNsaWRlciBpbnRTbGlkZXJHcnAgJyArXG4gICAgICAnaW50ZXJUb1VJIGludGVybmFsVmFyIGludGVyc2VjdCBpcHJFbmdpbmUgaXNBbmltQ3VydmUgaXNDb25uZWN0ZWQgaXNEaXJ0eSBpc1BhcmVudE9mICcgK1xuICAgICAgJ2lzU2FtZU9iamVjdCBpc1RydWUgaXNWYWxpZE9iamVjdE5hbWUgaXNWYWxpZFN0cmluZyBpc1ZhbGlkVWlOYW1lIGlzb2xhdGVTZWxlY3QgJyArXG4gICAgICAnaXRlbUZpbHRlciBpdGVtRmlsdGVyQXR0ciBpdGVtRmlsdGVyUmVuZGVyIGl0ZW1GaWx0ZXJUeXBlIGpvaW50IGpvaW50Q2x1c3RlciBqb2ludEN0eCAnICtcbiAgICAgICdqb2ludERpc3BsYXlTY2FsZSBqb2ludExhdHRpY2Uga2V5VGFuZ2VudCBrZXlmcmFtZSBrZXlmcmFtZU91dGxpbmVyICcgK1xuICAgICAgJ2tleWZyYW1lUmVnaW9uQ3VycmVudFRpbWVDdHgga2V5ZnJhbWVSZWdpb25EaXJlY3RLZXlDdHgga2V5ZnJhbWVSZWdpb25Eb2xseUN0eCAnICtcbiAgICAgICdrZXlmcmFtZVJlZ2lvbkluc2VydEtleUN0eCBrZXlmcmFtZVJlZ2lvbk1vdmVLZXlDdHgga2V5ZnJhbWVSZWdpb25TY2FsZUtleUN0eCAnICtcbiAgICAgICdrZXlmcmFtZVJlZ2lvblNlbGVjdEtleUN0eCBrZXlmcmFtZVJlZ2lvblNldEtleUN0eCBrZXlmcmFtZVJlZ2lvblRyYWNrQ3R4ICcgK1xuICAgICAgJ2tleWZyYW1lU3RhdHMgbGFzc29Db250ZXh0IGxhdHRpY2UgbGF0dGljZURlZm9ybUtleUN0eCBsYXVuY2ggbGF1bmNoSW1hZ2VFZGl0b3IgJyArXG4gICAgICAnbGF5ZXJCdXR0b24gbGF5ZXJlZFNoYWRlclBvcnQgbGF5ZXJlZFRleHR1cmVQb3J0IGxheW91dCBsYXlvdXREaWFsb2cgbGlnaHRMaXN0ICcgK1xuICAgICAgJ2xpZ2h0TGlzdEVkaXRvciBsaWdodExpc3RQYW5lbCBsaWdodGxpbmsgbGluZUludGVyc2VjdGlvbiBsaW5lYXJQcmVjaXNpb24gbGluc3RlcCAnICtcbiAgICAgICdsaXN0QW5pbWF0YWJsZSBsaXN0QXR0ciBsaXN0Q2FtZXJhcyBsaXN0Q29ubmVjdGlvbnMgbGlzdERldmljZUF0dGFjaG1lbnRzIGxpc3RIaXN0b3J5ICcgK1xuICAgICAgJ2xpc3RJbnB1dERldmljZUF4ZXMgbGlzdElucHV0RGV2aWNlQnV0dG9ucyBsaXN0SW5wdXREZXZpY2VzIGxpc3RNZW51QW5ub3RhdGlvbiAnICtcbiAgICAgICdsaXN0Tm9kZVR5cGVzIGxpc3RQYW5lbENhdGVnb3JpZXMgbGlzdFJlbGF0aXZlcyBsaXN0U2V0cyBsaXN0VHJhbnNmb3JtcyAnICtcbiAgICAgICdsaXN0VW5zZWxlY3RlZCBsaXN0ZXJFZGl0b3IgbG9hZEZsdWlkIGxvYWROZXdTaGVsZiBsb2FkUGx1Z2luICcgK1xuICAgICAgJ2xvYWRQbHVnaW5MYW5ndWFnZVJlc291cmNlcyBsb2FkUHJlZk9iamVjdHMgbG9jYWxpemVkUGFuZWxMYWJlbCBsb2NrTm9kZSBsb2Z0IGxvZyAnICtcbiAgICAgICdsb25nTmFtZU9mIGxvb2tUaHJ1IGxzIGxzVGhyb3VnaEZpbHRlciBsc1R5cGUgbHNVSSBNYXlhdG9tciBtYWcgbWFrZUlkZW50aXR5IG1ha2VMaXZlICcgK1xuICAgICAgJ21ha2VQYWludGFibGUgbWFrZVJvbGwgbWFrZVNpbmdsZVN1cmZhY2UgbWFrZVR1YmVPbiBtYWtlYm90IG1hbmlwTW92ZUNvbnRleHQgJyArXG4gICAgICAnbWFuaXBNb3ZlTGltaXRzQ3R4IG1hbmlwT3B0aW9ucyBtYW5pcFJvdGF0ZUNvbnRleHQgbWFuaXBSb3RhdGVMaW1pdHNDdHggJyArXG4gICAgICAnbWFuaXBTY2FsZUNvbnRleHQgbWFuaXBTY2FsZUxpbWl0c0N0eCBtYXJrZXIgbWF0Y2ggbWF4IG1lbW9yeSBtZW51IG1lbnVCYXJMYXlvdXQgJyArXG4gICAgICAnbWVudUVkaXRvciBtZW51SXRlbSBtZW51SXRlbVRvU2hlbGYgbWVudVNldCBtZW51U2V0UHJlZiBtZXNzYWdlTGluZSBtaW4gbWluaW1pemVBcHAgJyArXG4gICAgICAnbWlycm9ySm9pbnQgbW9kZWxDdXJyZW50VGltZUN0eCBtb2RlbEVkaXRvciBtb2RlbFBhbmVsIG1vdXNlIG1vdkluIG1vdk91dCBtb3ZlICcgK1xuICAgICAgJ21vdmVJS3RvRksgbW92ZUtleUN0eCBtb3ZlVmVydGV4QWxvbmdEaXJlY3Rpb24gbXVsdGlQcm9maWxlQmlyYWlsU3VyZmFjZSBtdXRlICcgK1xuICAgICAgJ25QYXJ0aWNsZSBuYW1lQ29tbWFuZCBuYW1lRmllbGQgbmFtZXNwYWNlIG5hbWVzcGFjZUluZm8gbmV3UGFuZWxJdGVtcyBuZXd0b24gbm9kZUNhc3QgJyArXG4gICAgICAnbm9kZUljb25CdXR0b24gbm9kZU91dGxpbmVyIG5vZGVQcmVzZXQgbm9kZVR5cGUgbm9pc2Ugbm9uTGluZWFyIG5vcm1hbENvbnN0cmFpbnQgJyArXG4gICAgICAnbm9ybWFsaXplIG51cmJzQm9vbGVhbiBudXJic0NvcHlVVlNldCBudXJic0N1YmUgbnVyYnNFZGl0VVYgbnVyYnNQbGFuZSBudXJic1NlbGVjdCAnICtcbiAgICAgICdudXJic1NxdWFyZSBudXJic1RvUG9seSBudXJic1RvUG9seWdvbnNQcmVmIG51cmJzVG9TdWJkaXYgbnVyYnNUb1N1YmRpdlByZWYgJyArXG4gICAgICAnbnVyYnNVVlNldCBudXJic1ZpZXdEaXJlY3Rpb25WZWN0b3Igb2JqRXhpc3RzIG9iamVjdENlbnRlciBvYmplY3RMYXllciBvYmplY3RUeXBlICcgK1xuICAgICAgJ29iamVjdFR5cGVVSSBvYnNvbGV0ZVByb2Mgb2NlYW5OdXJic1ByZXZpZXdQbGFuZSBvZmZzZXRDdXJ2ZSBvZmZzZXRDdXJ2ZU9uU3VyZmFjZSAnICtcbiAgICAgICdvZmZzZXRTdXJmYWNlIG9wZW5HTEV4dGVuc2lvbiBvcGVuTWF5YVByZWYgb3B0aW9uTWVudSBvcHRpb25NZW51R3JwIG9wdGlvblZhciBvcmJpdCAnICtcbiAgICAgICdvcmJpdEN0eCBvcmllbnRDb25zdHJhaW50IG91dGxpbmVyRWRpdG9yIG91dGxpbmVyUGFuZWwgb3ZlcnJpZGVNb2RpZmllciAnICtcbiAgICAgICdwYWludEVmZmVjdHNEaXNwbGF5IHBhaXJCbGVuZCBwYWxldHRlUG9ydCBwYW5lTGF5b3V0IHBhbmVsIHBhbmVsQ29uZmlndXJhdGlvbiAnICtcbiAgICAgICdwYW5lbEhpc3RvcnkgcGFyYW1EaW1Db250ZXh0IHBhcmFtRGltZW5zaW9uIHBhcmFtTG9jYXRvciBwYXJlbnQgcGFyZW50Q29uc3RyYWludCAnICtcbiAgICAgICdwYXJ0aWNsZSBwYXJ0aWNsZUV4aXN0cyBwYXJ0aWNsZUluc3RhbmNlciBwYXJ0aWNsZVJlbmRlckluZm8gcGFydGl0aW9uIHBhc3RlS2V5ICcgK1xuICAgICAgJ3BhdGhBbmltYXRpb24gcGF1c2UgcGNsb3NlIHBlcmNlbnQgcGVyZm9ybWFuY2VPcHRpb25zIHBmeHN0cm9rZXMgcGlja1dhbGsgcGljdHVyZSAnICtcbiAgICAgICdwaXhlbE1vdmUgcGxhbmFyU3JmIHBsYW5lIHBsYXkgcGxheWJhY2tPcHRpb25zIHBsYXlibGFzdCBwbHVnQXR0ciBwbHVnTm9kZSBwbHVnaW5JbmZvICcgK1xuICAgICAgJ3BsdWdpblJlc291cmNlVXRpbCBwb2ludENvbnN0cmFpbnQgcG9pbnRDdXJ2ZUNvbnN0cmFpbnQgcG9pbnRMaWdodCBwb2ludE1hdHJpeE11bHQgJyArXG4gICAgICAncG9pbnRPbkN1cnZlIHBvaW50T25TdXJmYWNlIHBvaW50UG9zaXRpb24gcG9sZVZlY3RvckNvbnN0cmFpbnQgcG9seUFwcGVuZCAnICtcbiAgICAgICdwb2x5QXBwZW5kRmFjZXRDdHggcG9seUFwcGVuZFZlcnRleCBwb2x5QXV0b1Byb2plY3Rpb24gcG9seUF2ZXJhZ2VOb3JtYWwgJyArXG4gICAgICAncG9seUF2ZXJhZ2VWZXJ0ZXggcG9seUJldmVsIHBvbHlCbGVuZENvbG9yIHBvbHlCbGluZERhdGEgcG9seUJvb2xPcCBwb2x5QnJpZGdlRWRnZSAnICtcbiAgICAgICdwb2x5Q2FjaGVNb25pdG9yIHBvbHlDaGVjayBwb2x5Q2hpcE9mZiBwb2x5Q2xpcGJvYXJkIHBvbHlDbG9zZUJvcmRlciBwb2x5Q29sbGFwc2VFZGdlICcgK1xuICAgICAgJ3BvbHlDb2xsYXBzZUZhY2V0IHBvbHlDb2xvckJsaW5kRGF0YSBwb2x5Q29sb3JEZWwgcG9seUNvbG9yUGVyVmVydGV4IHBvbHlDb2xvclNldCAnICtcbiAgICAgICdwb2x5Q29tcGFyZSBwb2x5Q29uZSBwb2x5Q29weVVWIHBvbHlDcmVhc2UgcG9seUNyZWFzZUN0eCBwb2x5Q3JlYXRlRmFjZXQgJyArXG4gICAgICAncG9seUNyZWF0ZUZhY2V0Q3R4IHBvbHlDdWJlIHBvbHlDdXQgcG9seUN1dEN0eCBwb2x5Q3lsaW5kZXIgcG9seUN5bGluZHJpY2FsUHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5RGVsRWRnZSBwb2x5RGVsRmFjZXQgcG9seURlbFZlcnRleCBwb2x5RHVwbGljYXRlQW5kQ29ubmVjdCBwb2x5RHVwbGljYXRlRWRnZSAnICtcbiAgICAgICdwb2x5RWRpdFVWIHBvbHlFZGl0VVZTaGVsbCBwb2x5RXZhbHVhdGUgcG9seUV4dHJ1ZGVFZGdlIHBvbHlFeHRydWRlRmFjZXQgJyArXG4gICAgICAncG9seUV4dHJ1ZGVWZXJ0ZXggcG9seUZsaXBFZGdlIHBvbHlGbGlwVVYgcG9seUZvcmNlVVYgcG9seUdlb1NhbXBsZXIgcG9seUhlbGl4ICcgK1xuICAgICAgJ3BvbHlJbmZvIHBvbHlJbnN0YWxsQWN0aW9uIHBvbHlMYXlvdXRVViBwb2x5TGlzdENvbXBvbmVudENvbnZlcnNpb24gcG9seU1hcEN1dCAnICtcbiAgICAgICdwb2x5TWFwRGVsIHBvbHlNYXBTZXcgcG9seU1hcFNld01vdmUgcG9seU1lcmdlRWRnZSBwb2x5TWVyZ2VFZGdlQ3R4IHBvbHlNZXJnZUZhY2V0ICcgK1xuICAgICAgJ3BvbHlNZXJnZUZhY2V0Q3R4IHBvbHlNZXJnZVVWIHBvbHlNZXJnZVZlcnRleCBwb2x5TWlycm9yRmFjZSBwb2x5TW92ZUVkZ2UgJyArXG4gICAgICAncG9seU1vdmVGYWNldCBwb2x5TW92ZUZhY2V0VVYgcG9seU1vdmVVViBwb2x5TW92ZVZlcnRleCBwb2x5Tm9ybWFsIHBvbHlOb3JtYWxQZXJWZXJ0ZXggJyArXG4gICAgICAncG9seU5vcm1hbGl6ZVVWIHBvbHlPcHRVdnMgcG9seU9wdGlvbnMgcG9seU91dHB1dCBwb2x5UGlwZSBwb2x5UGxhbmFyUHJvamVjdGlvbiAnICtcbiAgICAgICdwb2x5UGxhbmUgcG9seVBsYXRvbmljU29saWQgcG9seVBva2UgcG9seVByaW1pdGl2ZSBwb2x5UHJpc20gcG9seVByb2plY3Rpb24gJyArXG4gICAgICAncG9seVB5cmFtaWQgcG9seVF1YWQgcG9seVF1ZXJ5QmxpbmREYXRhIHBvbHlSZWR1Y2UgcG9seVNlbGVjdCBwb2x5U2VsZWN0Q29uc3RyYWludCAnICtcbiAgICAgICdwb2x5U2VsZWN0Q29uc3RyYWludE1vbml0b3IgcG9seVNlbGVjdEN0eCBwb2x5U2VsZWN0RWRpdEN0eCBwb2x5U2VwYXJhdGUgJyArXG4gICAgICAncG9seVNldFRvRmFjZU5vcm1hbCBwb2x5U2V3RWRnZSBwb2x5U2hvcnRlc3RQYXRoQ3R4IHBvbHlTbW9vdGggcG9seVNvZnRFZGdlICcgK1xuICAgICAgJ3BvbHlTcGhlcmUgcG9seVNwaGVyaWNhbFByb2plY3Rpb24gcG9seVNwbGl0IHBvbHlTcGxpdEN0eCBwb2x5U3BsaXRFZGdlIHBvbHlTcGxpdFJpbmcgJyArXG4gICAgICAncG9seVNwbGl0VmVydGV4IHBvbHlTdHJhaWdodGVuVVZCb3JkZXIgcG9seVN1YmRpdmlkZUVkZ2UgcG9seVN1YmRpdmlkZUZhY2V0ICcgK1xuICAgICAgJ3BvbHlUb1N1YmRpdiBwb2x5VG9ydXMgcG9seVRyYW5zZmVyIHBvbHlUcmlhbmd1bGF0ZSBwb2x5VVZTZXQgcG9seVVuaXRlIHBvbHlXZWRnZUZhY2UgJyArXG4gICAgICAncG9wZW4gcG9wdXBNZW51IHBvc2UgcG93IHByZWxvYWRSZWZFZCBwcmludCBwcm9ncmVzc0JhciBwcm9ncmVzc1dpbmRvdyBwcm9qRmlsZVZpZXdlciAnICtcbiAgICAgICdwcm9qZWN0Q3VydmUgcHJvamVjdFRhbmdlbnQgcHJvamVjdGlvbkNvbnRleHQgcHJvamVjdGlvbk1hbmlwIHByb21wdERpYWxvZyBwcm9wTW9kQ3R4ICcgK1xuICAgICAgJ3Byb3BNb3ZlIHBzZENoYW5uZWxPdXRsaW5lciBwc2RFZGl0VGV4dHVyZUZpbGUgcHNkRXhwb3J0IHBzZFRleHR1cmVGaWxlIHB1dGVudiBwd2QgJyArXG4gICAgICAncHl0aG9uIHF1ZXJ5U3ViZGl2IHF1aXQgcmFkX3RvX2RlZyByYWRpYWwgcmFkaW9CdXR0b24gcmFkaW9CdXR0b25HcnAgcmFkaW9Db2xsZWN0aW9uICcgK1xuICAgICAgJ3JhZGlvTWVudUl0ZW1Db2xsZWN0aW9uIHJhbXBDb2xvclBvcnQgcmFuZCByYW5kb21pemVGb2xsaWNsZXMgcmFuZHN0YXRlIHJhbmdlQ29udHJvbCAnICtcbiAgICAgICdyZWFkVGFrZSByZWJ1aWxkQ3VydmUgcmVidWlsZFN1cmZhY2UgcmVjb3JkQXR0ciByZWNvcmREZXZpY2UgcmVkbyByZWZlcmVuY2UgJyArXG4gICAgICAncmVmZXJlbmNlRWRpdCByZWZlcmVuY2VRdWVyeSByZWZpbmVTdWJkaXZTZWxlY3Rpb25MaXN0IHJlZnJlc2ggcmVmcmVzaEFFICcgK1xuICAgICAgJ3JlZ2lzdGVyUGx1Z2luUmVzb3VyY2UgcmVoYXNoIHJlbG9hZEltYWdlIHJlbW92ZUpvaW50IHJlbW92ZU11bHRpSW5zdGFuY2UgJyArXG4gICAgICAncmVtb3ZlUGFuZWxDYXRlZ29yeSByZW5hbWUgcmVuYW1lQXR0ciByZW5hbWVTZWxlY3Rpb25MaXN0IHJlbmFtZVVJIHJlbmRlciAnICtcbiAgICAgICdyZW5kZXJHbG9iYWxzTm9kZSByZW5kZXJJbmZvIHJlbmRlckxheWVyQnV0dG9uIHJlbmRlckxheWVyUGFyZW50ICcgK1xuICAgICAgJ3JlbmRlckxheWVyUG9zdFByb2Nlc3MgcmVuZGVyTGF5ZXJVbnBhcmVudCByZW5kZXJNYW5pcCByZW5kZXJQYXJ0aXRpb24gJyArXG4gICAgICAncmVuZGVyUXVhbGl0eU5vZGUgcmVuZGVyU2V0dGluZ3MgcmVuZGVyVGh1bWJuYWlsVXBkYXRlIHJlbmRlcldpbmRvd0VkaXRvciAnICtcbiAgICAgICdyZW5kZXJXaW5kb3dTZWxlY3RDb250ZXh0IHJlbmRlcmVyIHJlb3JkZXIgcmVvcmRlckRlZm9ybWVycyByZXF1aXJlcyByZXJvb3QgJyArXG4gICAgICAncmVzYW1wbGVGbHVpZCByZXNldEFFIHJlc2V0UGZ4VG9Qb2x5Q2FtZXJhIHJlc2V0VG9vbCByZXNvbHV0aW9uTm9kZSByZXRhcmdldCAnICtcbiAgICAgICdyZXZlcnNlQ3VydmUgcmV2ZXJzZVN1cmZhY2UgcmV2b2x2ZSByZ2JfdG9faHN2IHJpZ2lkQm9keSByaWdpZFNvbHZlciByb2xsIHJvbGxDdHggJyArXG4gICAgICAncm9vdE9mIHJvdCByb3RhdGUgcm90YXRpb25JbnRlcnBvbGF0aW9uIHJvdW5kQ29uc3RhbnRSYWRpdXMgcm93Q29sdW1uTGF5b3V0IHJvd0xheW91dCAnICtcbiAgICAgICdydW5UaW1lQ29tbWFuZCBydW51cCBzYW1wbGVJbWFnZSBzYXZlQWxsU2hlbHZlcyBzYXZlQXR0clByZXNldCBzYXZlRmx1aWQgc2F2ZUltYWdlICcgK1xuICAgICAgJ3NhdmVJbml0aWFsU3RhdGUgc2F2ZU1lbnUgc2F2ZVByZWZPYmplY3RzIHNhdmVQcmVmcyBzYXZlU2hlbGYgc2F2ZVRvb2xTZXR0aW5ncyBzY2FsZSAnICtcbiAgICAgICdzY2FsZUJydXNoQnJpZ2h0bmVzcyBzY2FsZUNvbXBvbmVudHMgc2NhbGVDb25zdHJhaW50IHNjYWxlS2V5IHNjYWxlS2V5Q3R4IHNjZW5lRWRpdG9yICcgK1xuICAgICAgJ3NjZW5lVUlSZXBsYWNlbWVudCBzY21oIHNjcmlwdEN0eCBzY3JpcHRFZGl0b3JJbmZvIHNjcmlwdEpvYiBzY3JpcHROb2RlIHNjcmlwdFRhYmxlICcgK1xuICAgICAgJ3NjcmlwdFRvU2hlbGYgc2NyaXB0ZWRQYW5lbCBzY3JpcHRlZFBhbmVsVHlwZSBzY3JvbGxGaWVsZCBzY3JvbGxMYXlvdXQgc2N1bHB0ICcgK1xuICAgICAgJ3NlYXJjaFBhdGhBcnJheSBzZWVkIHNlbExvYWRTZXR0aW5ncyBzZWxlY3Qgc2VsZWN0Q29udGV4dCBzZWxlY3RDdXJ2ZUNWIHNlbGVjdEtleSAnICtcbiAgICAgICdzZWxlY3RLZXlDdHggc2VsZWN0S2V5ZnJhbWVSZWdpb25DdHggc2VsZWN0TW9kZSBzZWxlY3RQcmVmIHNlbGVjdFByaW9yaXR5IHNlbGVjdFR5cGUgJyArXG4gICAgICAnc2VsZWN0ZWROb2RlcyBzZWxlY3Rpb25Db25uZWN0aW9uIHNlcGFyYXRvciBzZXRBdHRyIHNldEF0dHJFbnVtUmVzb3VyY2UgJyArXG4gICAgICAnc2V0QXR0ck1hcHBpbmcgc2V0QXR0ck5pY2VOYW1lUmVzb3VyY2Ugc2V0Q29uc3RyYWludFJlc3RQb3NpdGlvbiAnICtcbiAgICAgICdzZXREZWZhdWx0U2hhZGluZ0dyb3VwIHNldERyaXZlbktleWZyYW1lIHNldER5bmFtaWMgc2V0RWRpdEN0eCBzZXRFZGl0b3Igc2V0Rmx1aWRBdHRyICcgK1xuICAgICAgJ3NldEZvY3VzIHNldEluZmluaXR5IHNldElucHV0RGV2aWNlTWFwcGluZyBzZXRLZXlDdHggc2V0S2V5UGF0aCBzZXRLZXlmcmFtZSAnICtcbiAgICAgICdzZXRLZXlmcmFtZUJsZW5kc2hhcGVUYXJnZXRXdHMgc2V0TWVudU1vZGUgc2V0Tm9kZU5pY2VOYW1lUmVzb3VyY2Ugc2V0Tm9kZVR5cGVGbGFnICcgK1xuICAgICAgJ3NldFBhcmVudCBzZXRQYXJ0aWNsZUF0dHIgc2V0UGZ4VG9Qb2x5Q2FtZXJhIHNldFBsdWdpblJlc291cmNlIHNldFByb2plY3QgJyArXG4gICAgICAnc2V0U3RhbXBEZW5zaXR5IHNldFN0YXJ0dXBNZXNzYWdlIHNldFN0YXRlIHNldFRvb2xUbyBzZXRVSVRlbXBsYXRlIHNldFhmb3JtTWFuaXAgc2V0cyAnICtcbiAgICAgICdzaGFkaW5nQ29ubmVjdGlvbiBzaGFkaW5nR2VvbWV0cnlSZWxDdHggc2hhZGluZ0xpZ2h0UmVsQ3R4IHNoYWRpbmdOZXR3b3JrQ29tcGFyZSAnICtcbiAgICAgICdzaGFkaW5nTm9kZSBzaGFwZUNvbXBhcmUgc2hlbGZCdXR0b24gc2hlbGZMYXlvdXQgc2hlbGZUYWJMYXlvdXQgc2hlbGxGaWVsZCAnICtcbiAgICAgICdzaG9ydE5hbWVPZiBzaG93SGVscCBzaG93SGlkZGVuIHNob3dNYW5pcEN0eCBzaG93U2VsZWN0aW9uSW5UaXRsZSAnICtcbiAgICAgICdzaG93U2hhZGluZ0dyb3VwQXR0ckVkaXRvciBzaG93V2luZG93IHNpZ24gc2ltcGxpZnkgc2luIHNpbmdsZVByb2ZpbGVCaXJhaWxTdXJmYWNlICcgK1xuICAgICAgJ3NpemUgc2l6ZUJ5dGVzIHNraW5DbHVzdGVyIHNraW5QZXJjZW50IHNtb290aEN1cnZlIHNtb290aFRhbmdlbnRTdXJmYWNlIHNtb290aHN0ZXAgJyArXG4gICAgICAnc25hcDJ0bzIgc25hcEtleSBzbmFwTW9kZSBzbmFwVG9nZXRoZXJDdHggc25hcHNob3Qgc29mdCBzb2Z0TW9kIHNvZnRNb2RDdHggc29ydCBzb3VuZCAnICtcbiAgICAgICdzb3VuZENvbnRyb2wgc291cmNlIHNwYWNlTG9jYXRvciBzcGhlcmUgc3BocmFuZCBzcG90TGlnaHQgc3BvdExpZ2h0UHJldmlld1BvcnQgJyArXG4gICAgICAnc3ByZWFkU2hlZXRFZGl0b3Igc3ByaW5nIHNxcnQgc3F1YXJlU3VyZmFjZSBzcnRDb250ZXh0IHN0YWNrVHJhY2Ugc3RhcnRTdHJpbmcgJyArXG4gICAgICAnc3RhcnRzV2l0aCBzdGl0Y2hBbmRFeHBsb2RlU2hlbGwgc3RpdGNoU3VyZmFjZSBzdGl0Y2hTdXJmYWNlUG9pbnRzIHN0cmNtcCAnICtcbiAgICAgICdzdHJpbmdBcnJheUNhdGVuYXRlIHN0cmluZ0FycmF5Q29udGFpbnMgc3RyaW5nQXJyYXlDb3VudCBzdHJpbmdBcnJheUluc2VydEF0SW5kZXggJyArXG4gICAgICAnc3RyaW5nQXJyYXlJbnRlcnNlY3RvciBzdHJpbmdBcnJheVJlbW92ZSBzdHJpbmdBcnJheVJlbW92ZUF0SW5kZXggJyArXG4gICAgICAnc3RyaW5nQXJyYXlSZW1vdmVEdXBsaWNhdGVzIHN0cmluZ0FycmF5UmVtb3ZlRXhhY3Qgc3RyaW5nQXJyYXlUb1N0cmluZyAnICtcbiAgICAgICdzdHJpbmdUb1N0cmluZ0FycmF5IHN0cmlwIHN0cmlwUHJlZml4RnJvbU5hbWUgc3Ryb2tlIHN1YmRBdXRvUHJvamVjdGlvbiAnICtcbiAgICAgICdzdWJkQ2xlYW5Ub3BvbG9neSBzdWJkQ29sbGFwc2Ugc3ViZER1cGxpY2F0ZUFuZENvbm5lY3Qgc3ViZEVkaXRVViAnICtcbiAgICAgICdzdWJkTGlzdENvbXBvbmVudENvbnZlcnNpb24gc3ViZE1hcEN1dCBzdWJkTWFwU2V3TW92ZSBzdWJkTWF0Y2hUb3BvbG9neSBzdWJkTWlycm9yICcgK1xuICAgICAgJ3N1YmRUb0JsaW5kIHN1YmRUb1BvbHkgc3ViZFRyYW5zZmVyVVZzVG9DYWNoZSBzdWJkaXYgc3ViZGl2Q3JlYXNlICcgK1xuICAgICAgJ3N1YmRpdkRpc3BsYXlTbW9vdGhuZXNzIHN1YnN0aXR1dGUgc3Vic3RpdHV0ZUFsbFN0cmluZyBzdWJzdGl0dXRlR2VvbWV0cnkgc3Vic3RyaW5nICcgK1xuICAgICAgJ3N1cmZhY2Ugc3VyZmFjZVNhbXBsZXIgc3VyZmFjZVNoYWRlckxpc3Qgc3dhdGNoRGlzcGxheVBvcnQgc3dpdGNoVGFibGUgc3ltYm9sQnV0dG9uICcgK1xuICAgICAgJ3N5bWJvbENoZWNrQm94IHN5c0ZpbGUgc3lzdGVtIHRhYkxheW91dCB0YW4gdGFuZ2VudENvbnN0cmFpbnQgdGV4TGF0dGljZURlZm9ybUNvbnRleHQgJyArXG4gICAgICAndGV4TWFuaXBDb250ZXh0IHRleE1vdmVDb250ZXh0IHRleE1vdmVVVlNoZWxsQ29udGV4dCB0ZXhSb3RhdGVDb250ZXh0IHRleFNjYWxlQ29udGV4dCAnICtcbiAgICAgICd0ZXhTZWxlY3RDb250ZXh0IHRleFNlbGVjdFNob3J0ZXN0UGF0aEN0eCB0ZXhTbXVkZ2VVVkNvbnRleHQgdGV4V2luVG9vbEN0eCB0ZXh0ICcgK1xuICAgICAgJ3RleHRDdXJ2ZXMgdGV4dEZpZWxkIHRleHRGaWVsZEJ1dHRvbkdycCB0ZXh0RmllbGRHcnAgdGV4dE1hbmlwIHRleHRTY3JvbGxMaXN0ICcgK1xuICAgICAgJ3RleHRUb1NoZWxmIHRleHR1cmVEaXNwbGFjZVBsYW5lIHRleHR1cmVIYWlyQ29sb3IgdGV4dHVyZVBsYWNlbWVudENvbnRleHQgJyArXG4gICAgICAndGV4dHVyZVdpbmRvdyB0aHJlYWRDb3VudCB0aHJlZVBvaW50QXJjQ3R4IHRpbWVDb250cm9sIHRpbWVQb3J0IHRpbWVyWCB0b05hdGl2ZVBhdGggJyArXG4gICAgICAndG9nZ2xlIHRvZ2dsZUF4aXMgdG9nZ2xlV2luZG93VmlzaWJpbGl0eSB0b2tlbml6ZSB0b2tlbml6ZUxpc3QgdG9sZXJhbmNlIHRvbG93ZXIgJyArXG4gICAgICAndG9vbEJ1dHRvbiB0b29sQ29sbGVjdGlvbiB0b29sRHJvcHBlZCB0b29sSGFzT3B0aW9ucyB0b29sUHJvcGVydHlXaW5kb3cgdG9ydXMgdG91cHBlciAnICtcbiAgICAgICd0cmFjZSB0cmFjayB0cmFja0N0eCB0cmFuc2ZlckF0dHJpYnV0ZXMgdHJhbnNmb3JtQ29tcGFyZSB0cmFuc2Zvcm1MaW1pdHMgdHJhbnNsYXRvciAnICtcbiAgICAgICd0cmltIHRydW5jIHRydW5jYXRlRmx1aWRDYWNoZSB0cnVuY2F0ZUhhaXJDYWNoZSB0dW1ibGUgdHVtYmxlQ3R4IHR1cmJ1bGVuY2UgJyArXG4gICAgICAndHdvUG9pbnRBcmNDdHggdWlSZXMgdWlUZW1wbGF0ZSB1bmFzc2lnbklucHV0RGV2aWNlIHVuZG8gdW5kb0luZm8gdW5ncm91cCB1bmlmb3JtIHVuaXQgJyArXG4gICAgICAndW5sb2FkUGx1Z2luIHVudGFuZ2xlVVYgdW50aXRsZWRGaWxlTmFtZSB1bnRyaW0gdXBBeGlzIHVwZGF0ZUFFIHVzZXJDdHggdXZMaW5rICcgK1xuICAgICAgJ3V2U25hcHNob3QgdmFsaWRhdGVTaGVsZk5hbWUgdmVjdG9yaXplIHZpZXcyZFRvb2xDdHggdmlld0NhbWVyYSB2aWV3Q2xpcFBsYW5lICcgK1xuICAgICAgJ3ZpZXdGaXQgdmlld0hlYWRPbiB2aWV3TG9va0F0IHZpZXdNYW5pcCB2aWV3UGxhY2Ugdmlld1NldCB2aXNvciB2b2x1bWVBeGlzIHZvcnRleCAnICtcbiAgICAgICd3YWl0Q3Vyc29yIHdhcm5pbmcgd2ViQnJvd3NlciB3ZWJCcm93c2VyUHJlZnMgd2hhdElzIHdpbmRvdyB3aW5kb3dQcmVmIHdpcmUgJyArXG4gICAgICAnd2lyZUNvbnRleHQgd29ya3NwYWNlIHdyaW5rbGUgd3JpbmtsZUNvbnRleHQgd3JpdGVUYWtlIHhibUxhbmdQYXRoTGlzdCB4Zm9ybScsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdgJywgZW5kOiAnYCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfSxcbiAgICAgIHsgLy8gZWF0cyB2YXJpYWJsZXNcbiAgICAgICAgYmVnaW46ICdbXFxcXCRcXFxcJVxcXFxAXShcXFxcXlxcXFx3XFxcXGJ8I1xcXFx3K3xbXlxcXFxzXFxcXHd7XXx7XFxcXHcrfXxcXFxcdyspJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdtb2R1bGUgdXNlX21vZHVsZSBpbXBvcnRfbW9kdWxlIGluY2x1ZGVfbW9kdWxlIGVuZF9tb2R1bGUgaW5pdGlhbGlzZSAnICtcbiAgICAgICdtdXRhYmxlIGluaXRpYWxpemUgZmluYWxpemUgZmluYWxpc2UgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHByZWQgJyArXG4gICAgICAnbW9kZSBmdW5jIHR5cGUgaW5zdCBzb2x2ZXIgYW55X3ByZWQgYW55X2Z1bmMgaXMgc2VtaWRldCBkZXQgbm9uZGV0ICcgK1xuICAgICAgJ211bHRpIGVycm9uZW91cyBmYWlsdXJlIGNjX25vbmRldCBjY19tdWx0aSB0eXBlY2xhc3MgaW5zdGFuY2Ugd2hlcmUgJyArXG4gICAgICAncHJhZ21hIHByb21pc2UgZXh0ZXJuYWwgdHJhY2UgYXRvbWljIG9yX2Vsc2UgcmVxdWlyZV9jb21wbGV0ZV9zd2l0Y2ggJyArXG4gICAgICAncmVxdWlyZV9kZXQgcmVxdWlyZV9zZW1pZGV0IHJlcXVpcmVfbXVsdGkgcmVxdWlyZV9ub25kZXQgJyArXG4gICAgICAncmVxdWlyZV9jY19tdWx0aSByZXF1aXJlX2NjX25vbmRldCByZXF1aXJlX2Vycm9uZW91cyByZXF1aXJlX2ZhaWx1cmUnLFxuICAgIG1ldGE6XG4gICAgICAvLyBwcmFnbWFcbiAgICAgICdpbmxpbmUgbm9faW5saW5lIHR5cGVfc3BlYyBzb3VyY2VfZmlsZSBmYWN0X3RhYmxlIG9ic29sZXRlIG1lbW8gJyArXG4gICAgICAnbG9vcF9jaGVjayBtaW5pbWFsX21vZGVsIHRlcm1pbmF0ZXMgZG9lc19ub3RfdGVybWluYXRlICcgK1xuICAgICAgJ2NoZWNrX3Rlcm1pbmF0aW9uIHByb21pc2VfZXF1aXZhbGVudF9jbGF1c2VzICcgK1xuICAgICAgLy8gcHJlcHJvY2Vzc29yXG4gICAgICAnZm9yZWlnbl9wcm9jIGZvcmVpZ25fZGVjbCBmb3JlaWduX2NvZGUgZm9yZWlnbl90eXBlICcgK1xuICAgICAgJ2ZvcmVpZ25faW1wb3J0X21vZHVsZSBmb3JlaWduX2V4cG9ydF9lbnVtIGZvcmVpZ25fZXhwb3J0ICcgK1xuICAgICAgJ2ZvcmVpZ25fZW51bSBtYXlfY2FsbF9tZXJjdXJ5IHdpbGxfbm90X2NhbGxfbWVyY3VyeSB0aHJlYWRfc2FmZSAnICtcbiAgICAgICdub3RfdGhyZWFkX3NhZmUgbWF5YmVfdGhyZWFkX3NhZmUgcHJvbWlzZV9wdXJlIHByb21pc2Vfc2VtaXB1cmUgJyArXG4gICAgICAndGFibGVkX2Zvcl9pbyBsb2NhbCB1bnRyYWlsZWQgdHJhaWxlZCBhdHRhY2hfdG9faW9fc3RhdGUgJyArXG4gICAgICAnY2FuX3Bhc3NfYXNfbWVyY3VyeV90eXBlIHN0YWJsZSB3aWxsX25vdF90aHJvd19leGNlcHRpb24gJyArXG4gICAgICAnbWF5X21vZGlmeV90cmFpbCB3aWxsX25vdF9tb2RpZnlfdHJhaWwgbWF5X2R1cGxpY2F0ZSAnICtcbiAgICAgICdtYXlfbm90X2R1cGxpY2F0ZSBhZmZlY3RzX2xpdmVuZXNzIGRvZXNfbm90X2FmZmVjdF9saXZlbmVzcyAnICtcbiAgICAgICdkb2VzbnRfYWZmZWN0X2xpdmVuZXNzIG5vX3NoYXJpbmcgdW5rbm93bl9zaGFyaW5nIHNoYXJpbmcnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ3NvbWUgYWxsIG5vdCBpZiB0aGVuIGVsc2UgdHJ1ZSBmYWlsIGZhbHNlIHRyeSBjYXRjaCBjYXRjaF9hbnkgJyArXG4gICAgICAnc2VtaWRldF90cnVlIHNlbWlkZXRfZmFsc2Ugc2VtaWRldF9mYWlsIGltcHVyZV90cnVlIGltcHVyZSBzZW1pcHVyZSdcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnJScsICckJyk7XG5cbiAgdmFyIE5VTUNPREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogXCIwJy5cXFxcfDBbYm94XVswLTlhLWZBLUZdKlwiXG4gIH07XG5cbiAgdmFyIEFUT00gPSBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7cmVsZXZhbmNlOiAwfSk7XG4gIHZhciBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge3JlbGV2YW5jZTogMH0pO1xuICB2YXIgU1RSSU5HX0ZNVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcXFxcXFthYmZucnR2XVxcXFx8XFxcXFxcXFx4WzAtOWEtZkEtRl0qXFxcXFxcXFxcXFxcfCVbLSsjICouMC05XSpbZGlveFh1Y3NmZUVnR3BdJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgU1RSSU5HLmNvbnRhaW5zLnB1c2goU1RSSU5HX0ZNVCk7XG5cbiAgdmFyIElNUExJQ0FUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAnPD0+J30sXG4gICAgICB7YmVnaW46ICc8PScsIHJlbGV2YW5jZTogMH0sXG4gICAgICB7YmVnaW46ICc9PicsIHJlbGV2YW5jZTogMH0sXG4gICAgICB7YmVnaW46ICcvXFxcXFxcXFwnfSxcbiAgICAgIHtiZWdpbjogJ1xcXFxcXFxcLyd9XG4gICAgXVxuICB9O1xuXG4gIHZhciBIRUFEX0JPRFlfQ09OSlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46ICc6LVxcXFx8LS0+J30sXG4gICAgICB7YmVnaW46ICc9JywgcmVsZXZhbmNlOiAwfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbScsICdtb28nXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIElNUExJQ0FUSU9OLFxuICAgICAgSEVBRF9CT0RZX0NPTkpVTkNUSU9OLFxuICAgICAgQ09NTUVOVCxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBOVU1DT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIEFUT00sXG4gICAgICBTVFJJTkcsXG4gICAgICB7YmVnaW46IC86LS99LCAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgICAvL2xvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ21pcHMnXSxcbiAgICBsZXhlbWVzOiAnXFxcXC4/JyArIGhsanMuSURFTlRfUkUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIG1ldGE6XG4gICAgICAgIC8vR05VIHByZXByb2NzXG4gICAgICAgICcuMmJ5dGUgLjRieXRlIC5hbGlnbiAuYXNjaWkgLmFzY2l6IC5iYWxpZ24gLmJ5dGUgLmNvZGUgLmRhdGEgLmVsc2UgLmVuZCAuZW5kaWYgLmVuZG0gLmVuZHIgLmVxdSAuZXJyIC5leGl0bSAuZXh0ZXJuIC5nbG9iYWwgLmh3b3JkIC5pZiAuaWZkZWYgLmlmbmRlZiAuaW5jbHVkZSAuaXJwIC5sb25nIC5tYWNybyAucmVwdCAucmVxIC5zZWN0aW9uIC5zZXQgLnNraXAgLnNwYWNlIC50ZXh0IC53b3JkIC5sdG9yZyAnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICckMCAkMSAkMiAkMyAkNCAkNSAkNiAkNyAkOCAkOSAkMTAgJDExICQxMiAkMTMgJDE0ICQxNSAnICsgLy8gaW50ZWdlciByZWdpc3RlcnNcbiAgICAgICAgJyQxNiAkMTcgJDE4ICQxOSAkMjAgJDIxICQyMiAkMjMgJDI0ICQyNSAkMjYgJDI3ICQyOCAkMjkgJDMwICQzMSAnICsgLy8gaW50ZWdlciByZWdpc3RlcnNcbiAgICAgICAgJ3plcm8gYXQgdjAgdjEgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgJyArIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICAndDAgdDEgdDIgdDMgdDQgdDUgdDYgdDcgdDggdDkgczAgczEgczIgczMgczQgczUgczYgczcgczggJyArIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICAnazAgazEgZ3Agc3AgZnAgcmEgJyArIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICAnJGYwICRmMSAkZjIgJGYyICRmNCAkZjUgJGY2ICRmNyAkZjggJGY5ICRmMTAgJGYxMSAkZjEyICRmMTMgJGYxNCAkZjE1ICcgKyAvLyBmbG9hdGluZy1wb2ludCByZWdpc3RlcnNcbiAgICAgICAgJyRmMTYgJGYxNyAkZjE4ICRmMTkgJGYyMCAkZjIxICRmMjIgJGYyMyAkZjI0ICRmMjUgJGYyNiAkZjI3ICRmMjggJGYyOSAkZjMwICRmMzEgJyArIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICAnQ29udGV4dCBSYW5kb20gRW50cnlMbzAgRW50cnlMbzEgQ29udGV4dCBQYWdlTWFzayBXaXJlZCBFbnRyeUhpICcgKyAvLyBDb3Byb2Nlc3NvciAwIHJlZ2lzdGVyc1xuICAgICAgICAnSFdSRW5hIEJhZFZBZGRyIENvdW50IENvbXBhcmUgU1IgSW50Q3RsIFNSU0N0bCBTUlNNYXAgQ2F1c2UgRVBDIFBSSWQgJyArIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICdFQmFzZSBDb25maWcgQ29uZmlnMSBDb25maWcyIENvbmZpZzMgTExBZGRyIERlYnVnIERFUEMgREVTQVZFIENhY2hlRXJyICcgKyAvLyBDb3Byb2Nlc3NvciAwIHJlZ2lzdGVyc1xuICAgICAgICAnRUNDIEVycm9yRVBDIFRhZ0xvIERhdGFMbyBUYWdIaSBEYXRhSGkgV2F0Y2hMbyBXYXRjaEhpIFBlcmZDdGwgUGVyZkNudCAnIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignKyAgICAgLy9tbmVtb25pY3NcbiAgICAgICAgICAgIC8vIDMyLWJpdCBpbnRlZ2VyIGluc3RydWN0aW9uc1xuICAgICAgICAgICAgJ2FkZGk/dT98YW5kaT98YihhbCk/fGJlcWw/fGJnZXooYWwpP2w/fGJndHpsP3xibGV6bD98Ymx0eihhbCk/bD98JyArXG4gICAgICAgICAgICAnYm5lbD98Y2xbb3pdfGRpdnU/fGV4dHxpbnN8aihhbCk/fGphbHIoXFwuaGIpP3xqcihcXC5oYik/fGxidT98bGh1P3wnICtcbiAgICAgICAgICAgICdsbHxsdWl8bHdbbHJdP3xtYWRkdT98bWZoaXxtZmxvfG1vdm58bW92enxtb3ZlfG1zdWJ1P3xtdGhpfG10bG98bXVsfCcgK1xuICAgICAgICAgICAgJ211bHR1P3xub3B8bm9yfG9yaT98cm90cnY/fHNifHNjfHNlW2JoXXxzaHxzbGx2P3xzbHRpP3U/fHNyYXY/fCcgK1xuICAgICAgICAgICAgJ3NybHY/fHN1YnU/fHN3W2xyXT98eG9yaT98d3NiaHwnICtcbiAgICAgICAgICAgIC8vIGZsb2F0aW5nLXBvaW50IGluc3RydWN0aW9uc1xuICAgICAgICAgICAgJ2Fic1xcLltzZF18YWRkXFwuW3NkXXxhbG52LnBzfGJjMVtmdF1sP3wnICtcbiAgICAgICAgICAgICdjXFwuKHM/Znx1bnx1P2VxfFtvdV1sdHxbb3VdbGV8bmdsZT98c2VxfGxbZXRdfG5nW2V0XSlcXC5bc2RdfCcgK1xuICAgICAgICAgICAgJyhjZWlsfGZsb29yfHJvdW5kfHRydW5jKVxcLltsd11cXC5bc2RdfGNmYzF8Y3Z0XFwuZFxcLltsc3ddfCcgK1xuICAgICAgICAgICAgJ2N2dFxcLmxcXC5bZHN3XXxjdnRcXC5wc1xcLnN8Y3Z0XFwuc1xcLltkbHddfGN2dFxcLnNcXC5wW2x1XXxjdnRcXC53XFwuW2Rsc118JyArXG4gICAgICAgICAgICAnZGl2XFwuW2RzXXxsZHg/YzF8bHV4YzF8bHd4P2MxfG1hZGRcXC5bc2RdfG1mYzF8bW92W2ZudHpdP1xcLltkc118JyArXG4gICAgICAgICAgICAnbXN1YlxcLltzZF18bXRoP2MxfG11bFxcLltkc118bmVnXFwuW2RzXXxubWFkZFxcLltkc118bm1zdWJcXC5bZHNdfCcgK1xuICAgICAgICAgICAgJ3BbbHVdW2x1XVxcLnBzfHJlY2lwXFwuZm10fHI/c3FydFxcLltkc118c2R4P2MxfHN1YlxcLltkc118c3V4YzF8JyArXG4gICAgICAgICAgICAnc3d4P2MxfCcgK1xuICAgICAgICAgICAgLy8gc3lzdGVtIGNvbnRyb2wgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICAnYnJlYWt8Y2FjaGV8ZD9lcmV0fFtkZV1pfGVoYnxtZmMwfG10YzB8cGF1c2V8cHJlZng/fHJkaHdyfCcgK1xuICAgICAgICAgICAgJ3JkcGdwcnxzZGJicHxzc25vcHxzeW5jaT98c3lzY2FsbHx0ZXFpP3x0Z2VpP3U/fHRsYihwfHJ8d1tpcl0pfCcgK1xuICAgICAgICAgICAgJ3RsdGk/dT98dG5laT98d2FpdHx3cnBncHInK1xuICAgICAgICAnKScsXG4gICAgICAgIGVuZDogJ1xcXFxzJ1xuICAgICAgfSxcbiAgICAgIC8vIGxpbmVzIGVuZGluZyB3aXRoIDsgb3IgIyBhcmVuJ3QgcmVhbGx5IGNvbW1lbnRzLCBwcm9iYWJseSBhdXRvLWRldGVjdCBmYWlsXG4gICAgICBobGpzLkNPTU1FTlQoJ1s7I10oPyFcXHMqJCknLCAnJCcpLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAge2JlZ2luOiAnMHhbMC05YS1mXSsnfSwgLy9oZXhcbiAgICAgICAgICAgIHtiZWdpbjogJ1xcXFxiLT9cXFxcZCsnfSAgICAgICAgICAgLy9iYXJlIG51bWJlclxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7YmVnaW46ICdeXFxcXHMqW2Etel9cXFxcLlxcXFwkXVthLXowLTlfXFxcXC5cXFxcJF0rOid9LCAvL0dOVSBNSVBTIHN5bnRheFxuICAgICAgICAgICAge2JlZ2luOiAnXlxcXFxzKlswLTldKzonfSwgLy8gbnVtYmVyZWQgbG9jYWwgbGFiZWxzXG4gICAgICAgICAgICB7YmVnaW46ICdbMC05XStbYmZdJyB9ICAvLyBudW1iZXIgbG9jYWwgbGFiZWwgcmVmZXJlbmNlIChiYWNrd2FyZHMsIGZvcndhcmRzKVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6ICdcXC8nXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOlxuICAgICAgJ2Vudmlyb24gdm9jYWJ1bGFyaWVzIG5vdGF0aW9ucyBjb25zdHJ1Y3RvcnMgZGVmaW5pdGlvbnMgJyArXG4gICAgICAncmVnaXN0cmF0aW9ucyB0aGVvcmVtcyBzY2hlbWVzIHJlcXVpcmVtZW50cyBiZWdpbiBlbmQgZGVmaW5pdGlvbiAnICtcbiAgICAgICdyZWdpc3RyYXRpb24gY2x1c3RlciBleGlzdGVuY2UgcHJlZCBmdW5jIGRlZnByZWQgZGVmZnVuYyB0aGVvcmVtICcgK1xuICAgICAgJ3Byb29mIGxldCB0YWtlIGFzc3VtZSB0aGVuIHRodXMgaGVuY2UgZXggZm9yIHN0IGhvbGRzIGNvbnNpZGVyICcgK1xuICAgICAgJ3JlY29uc2lkZXIgc3VjaCB0aGF0IGFuZCBpbiBwcm92aWRlZCBvZiBhcyBmcm9tIGJlIGJlaW5nIGJ5IG1lYW5zICcgK1xuICAgICAgJ2VxdWFscyBpbXBsaWVzIGlmZiByZWRlZmluZSBkZWZpbmUgbm93IG5vdCBvciBhdHRyIGlzIG1vZGUgJyArXG4gICAgICAnc3VwcG9zZSBwZXIgY2FzZXMgc2V0IHRoZXNpcyBjb250cmFkaWN0aW9uIHNjaGVtZSByZXNlcnZlIHN0cnVjdCAnICtcbiAgICAgICdjb3JyZWN0bmVzcyBjb21wYXRpYmlsaXR5IGNvaGVyZW5jZSBzeW1tZXRyeSBhc3N5bWV0cnkgJyArXG4gICAgICAncmVmbGV4aXZpdHkgaXJyZWZsZXhpdml0eSBjb25uZWN0ZWRuZXNzIHVuaXF1ZW5lc3MgY29tbXV0YXRpdml0eSAnICtcbiAgICAgICdpZGVtcG90ZW5jZSBpbnZvbHV0aXZlbmVzcyBwcm9qZWN0aXZpdHknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzo6JywgJyQnKVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBQRVJMX0tFWVdPUkRTID0gJ2dldHB3ZW50IGdldHNlcnZlbnQgcXVvdGVtZXRhIG1zZ3JjdiBzY2FsYXIga2lsbCBkYm1jbG9zZSB1bmRlZiBsYyAnICtcbiAgICAnbWEgc3lzd3JpdGUgdHIgc2VuZCB1bWFzayBzeXNvcGVuIHNobXdyaXRlIHZlYyBxeCB1dGltZSBsb2NhbCBvY3Qgc2VtY3RsIGxvY2FsdGltZSAnICtcbiAgICAncmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxJyArXG4gICAgJ2ZpbGVubyBxdyBlbmRwcm90b2VudCB3YWl0IHNldGhvc3RlbnQgYmxlc3Mgc3wwIG9wZW5kaXIgY29udGludWUgZWFjaCBzbGVlcCBlbmRncmVudCAnICtcbiAgICAnc2h1dGRvd24gZHVtcCBjaG9tcCBjb25uZWN0IGdldHNvY2tuYW1lIGRpZSBzb2NrZXRwYWlyIGNsb3NlIGZsb2NrIGV4aXN0cyBpbmRleCBzaG1nZXQnICtcbiAgICAnc3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciAnICtcbiAgICAndW5zaGlmdCBmY250bCBzeXNjYWxsIGdvdG8gZ2V0bmV0YnlhZGRyIGpvaW4gZ210aW1lIHN5bWxpbmsgc2VtZ2V0IHNwbGljZSB4fDAgJyArXG4gICAgJ2dldHBlZXJuYW1lIHJlY3YgbG9nIHNldHNvY2tvcHQgY29zIGxhc3QgcmV2ZXJzZSBnZXRob3N0YnluYW1lIGdldGdybmFtIHN0dWR5IGZvcm1saW5lICcgK1xuICAgICdlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kICcgK1xuICAgICdta2RpciBwb3MgY2htb2QgeXwwIHN1YnN0ciBlbmRuZXRlbnQgcHJpbnRmIG5leHQgb3BlbiBtc2dzbmQgcmVhZGRpciB1c2UgdW5saW5rICcgK1xuICAgICdnZXRzb2Nrb3B0IGdldHByaW9yaXR5IHJpbmRleCB3YW50YXJyYXkgaGV4IHN5c3RlbSBnZXRzZXJ2Ynlwb3J0IGVuZHNlcnZlbnQgaW50IGNociAnICtcbiAgICAndW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rICcgK1xuICAgICdnZXRncmdpZCBzaG1jdGwgd2FpdHBpZCB1bnBhY2sgZ2V0bmV0YnluYW1lIHJlc2V0IGNoZGlyIGdyZXAgc3BsaXQgcmVxdWlyZSBjYWxsZXIgJyArXG4gICAgJ2xjZmlyc3QgdW50aWwgd2FybiB3aGlsZSB2YWx1ZXMgc2hpZnQgdGVsbGRpciBnZXRwd3VpZCBteSBnZXRwcm90b2J5bnVtYmVyIGRlbGV0ZSBhbmQgJyArXG4gICAgJ3NvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgJyArXG4gICAgJ2Nocm9vdCBzeXNyZWFkIHNldHB3ZW50IG5vIGNyeXB0IGdldGMgY2hvd24gc3FydCB3cml0ZSBzZXRuZXRlbnQgc2V0cHJpb3JpdHkgZm9yZWFjaCAnICtcbiAgICAndGllIHNpbiBtc2dnZXQgbWFwIHN0YXQgZ2V0bG9naW4gdW5sZXNzIGVsc2lmIHRydW5jYXRlIGV4ZWMga2V5cyBnbG9iIHRpZWQgY2xvc2VkaXInICtcbiAgICAnaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSAnICtcbiAgICAnYXRhbjIgZ2V0Z3JlbnQgZXhwIHRpbWUgcHVzaCBzZXRncmVudCBndCBsdCBvciBuZSBtfDAgYnJlYWsgZ2l2ZW4gc2F5IHN0YXRlIHdoZW4nO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnWyRAXVxcXFx7JywgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBQRVJMX0tFWVdPUkRTXG4gIH07XG4gIHZhciBNRVRIT0QgPSB7XG4gICAgYmVnaW46ICctPnsnLCBlbmQ6ICd9J1xuICAgIC8vIGNvbnRhaW5zIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIFZBUiA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFwkXFxkL30sXG4gICAgICB7YmVnaW46IC9bXFwkJUBdKFxcXlxcd1xcYnwjXFx3Kyg6OlxcdyspKnx7XFx3K318XFx3Kyg6OlxcdyopKikvfSxcbiAgICAgIHtiZWdpbjogL1tcXCQlQF1bXlxcc1xcd3tdLywgcmVsZXZhbmNlOiAwfVxuICAgIF1cbiAgfTtcbiAgdmFyIFNUUklOR19DT05UQUlOUyA9IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNULCBWQVJdO1xuICB2YXIgUEVSTF9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFZBUixcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICdeXFxcXD1cXFxcdycsXG4gICAgICAnXFxcXD1jdXQnLFxuICAgICAge1xuICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZVxuICAgICAgfVxuICAgICksXG4gICAgTUVUSE9ELFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBjb250YWluczogU1RSSU5HX0NPTlRBSU5TLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcfCcsIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcPCcsIGVuZDogJ1xcXFw+JyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncXdcXFxccytxJywgZW5kOiAncScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAne1xcXFx3K30nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXFwtP1xcXFx3K1xcXFxzKlxcXFw9XFxcXD4nLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXSxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKFxcXFwvXFxcXC98JyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKHNwbGl0fHJldHVybnxwcmludHxyZXZlcnNlfGdyZXApXFxcXGIpXFxcXHMqJyxcbiAgICAgIGtleXdvcmRzOiAnc3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCcsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICBiZWdpbjogJyhzfHRyfHkpLyhcXFxcXFxcXC58W14vXSkqLyhcXFxcXFxcXC58W14vXSkqL1thLXpdKicsXG4gICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICBiZWdpbjogJyhtfHFyKT8vJywgZW5kOiAnL1thLXpdKicsXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCAvLyBhbGxvd3MgZW1wdHkgXCIvL1wiIHdoaWNoIGlzIGEgY29tbW9uIGNvbW1lbnQgZGVsaW1pdGVyIGluIG90aGVyIGxhbmd1YWdlc1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnc3ViJywgZW5kOiAnKFxcXFxzKlxcXFwoLio/XFxcXCkpP1s7e10nLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgcmVsZXZhbmNlOiA1LFxuICAgICAgY29udGFpbnM6IFtobGpzLlRJVExFX01PREVdXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJy1cXFxcd1xcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IFwiXl9fREFUQV9fJFwiLFxuICAgICAgZW5kOiBcIl5fX0VORF9fJFwiLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdtb2pvbGljaW91cycsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogXCJeQEAuKlwiLFxuICAgICAgICAgICAgZW5kOiBcIiRcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBQRVJMX0RFRkFVTFRfQ09OVEFJTlM7XG4gIE1FVEhPRC5jb250YWlucyA9IFBFUkxfREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncGwnLCAncG0nXSxcbiAgICBsZXhlbWVzOiAvW1xcd1xcLl0rLyxcbiAgICBrZXl3b3JkczogUEVSTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogUEVSTF9ERUZBVUxUX0NPTlRBSU5TXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeX18oRU5EfERBVEEpX18kJ1xuICAgICAgfSxcbiAgICAvLyBtb2pvbGljaW91cyBsaW5lXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIl5cXFxccyolezEsMn09ezAsMn1cIiwgZW5kOiAnJCcsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncGVybCdcbiAgICAgIH0sXG4gICAgLy8gbW9qb2xpY2lvdXMgYmxvY2tcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiPCV7MSwyfT17MCwyfVwiLFxuICAgICAgICBlbmQ6IFwiPXswLDF9JT5cIixcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwZXJsJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLCByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbJF1bYS1mQS1GMC05XSsnXG4gICAgICB9LFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdwdWJsaWMgcHJpdmF0ZSBwcm9wZXJ0eSBjb250aW51ZSBleGl0IGV4dGVybiBuZXcgdHJ5IGNhdGNoICcgK1xuICAgICAgICAnZWFjaGluIG5vdCBhYnN0cmFjdCBmaW5hbCBzZWxlY3QgY2FzZSBkZWZhdWx0IGNvbnN0IGxvY2FsIGdsb2JhbCBmaWVsZCAnICtcbiAgICAgICAgJ2VuZCBpZiB0aGVuIGVsc2UgZWxzZWlmIGVuZGlmIHdoaWxlIHdlbmQgcmVwZWF0IHVudGlsIGZvcmV2ZXIgZm9yICcgK1xuICAgICAgICAndG8gc3RlcCBuZXh0IHJldHVybiBtb2R1bGUgaW5saW5lIHRocm93IGltcG9ydCcsXG5cbiAgICAgIGJ1aWx0X2luOiAnRGVidWdMb2cgRGVidWdTdG9wIEVycm9yIFByaW50IEFDb3MgQUNvc3IgQVNpbiBBU2luciBBVGFuIEFUYW4yIEFUYW4yciBBVGFuciBBYnMgQWJzIENlaWwgJyArXG4gICAgICAgICdDbGFtcCBDbGFtcCBDb3MgQ29zciBFeHAgRmxvb3IgTG9nIE1heCBNYXggTWluIE1pbiBQb3cgU2duIFNnbiBTaW4gU2luciBTcXJ0IFRhbiBUYW5yIFNlZWQgUEkgSEFMRlBJIFRXT1BJJyxcblxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCBhbmQgb3Igc2hsIHNociBtb2QnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKCcjcmVtJywgJyNlbmQnKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgXCInXCIsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbiBtZXRob2QnLCBlbmQ6ICdbKD06XXwkJyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cydcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihzZWxmfHN1cGVyKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXFxcXHMqIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kaWYgZW5kIHRoZW4nfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKnN0cmljdFxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2FsaWFzJywgZW5kOiAnPScsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIE5VTUJFUlxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAvLyBNb29uc2NyaXB0IGtleXdvcmRzXG4gICAgICAnaWYgdGhlbiBub3QgZm9yIGluIHdoaWxlIGRvIHJldHVybiBlbHNlIGVsc2VpZiBicmVhayBjb250aW51ZSBzd2l0Y2ggYW5kIG9yICcgK1xuICAgICAgJ3VubGVzcyB3aGVuIGNsYXNzIGV4dGVuZHMgc3VwZXIgbG9jYWwgaW1wb3J0IGV4cG9ydCBmcm9tIHVzaW5nJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbmlsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdfRyBfVkVSU0lPTiBhc3NlcnQgY29sbGVjdGdhcmJhZ2UgZG9maWxlIGVycm9yIGdldGZlbnYgZ2V0bWV0YXRhYmxlIGlwYWlycyBsb2FkICcgK1xuICAgICAgJ2xvYWRmaWxlIGxvYWRzdHJpbmcgbW9kdWxlIG5leHQgcGFpcnMgcGNhbGwgcHJpbnQgcmF3ZXF1YWwgcmF3Z2V0IHJhd3NldCByZXF1aXJlICcgK1xuICAgICAgJ3NlbGVjdCBzZXRmZW52IHNldG1ldGF0YWJsZSB0b251bWJlciB0b3N0cmluZyB0eXBlIHVucGFjayB4cGNhbGwgY29yb3V0aW5lIGRlYnVnICcgK1xuICAgICAgJ2lvIG1hdGggb3MgcGFja2FnZSBzdHJpbmcgdGFibGUnXG4gIH07XG4gIHZhciBKU19JREVOVF9SRSA9ICdbQS1aYS16JF9dWzAtOUEtWmEteiRfXSonO1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5pbmhlcml0KGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtzdGFydHM6IHtlbmQ6ICcoXFxcXHMqLyk/JywgcmVsZXZhbmNlOiAwfX0pLCAvLyBhIG51bWJlciB0cmllcyB0byBlYXQgdGhlIGZvbGxvd2luZyBzbGFzaCB0byBwcmV2ZW50IHRyZWF0aW5nIGl0IGFzIGEgcmVnZXhwXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogLycvLCBlbmQ6IC8nLyxcbiAgICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICBiZWdpbjogJ0BfXycgKyBobGpzLklERU5UX1JFXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogJ0AnICsgaGxqcy5JREVOVF9SRSAvLyByZWxldmFuY2UgYm9vc3RlciBvbiBwYXIgd2l0aCBDb2ZmZWVTY3JpcHRcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxcXFxcJyArIGhsanMuSURFTlRfUkUgLy8gaW5zdFxcbWV0aG9kXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHZhciBUSVRMRSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSlNfSURFTlRfUkV9KTtcbiAgdmFyIFBBUkFNU19SRSA9ICcoXFxcXCguKlxcXFwpKT9cXFxccypcXFxcQlstPV0+JztcbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnXFxcXChbXlxcXFwoXScsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIC8qIFdlIG5lZWQgYW5vdGhlciBjb250YWluZWQgbmFtZWxlc3MgbW9kZSB0byBub3QgaGF2ZSBldmVyeSBuZXN0ZWRcbiAgICBwYWlyIG9mIHBhcmVucyB0byBiZSBjYWxsZWQgXCJwYXJhbXNcIiAqL1xuICAgIGNvbnRhaW5zOiBbe1xuICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgY29udGFpbnM6IFsnc2VsZiddLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgICB9XVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtb29uJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC9cXC9cXCovLFxuICAgIGNvbnRhaW5zOiBFWFBSRVNTSU9OUy5jb25jYXQoW1xuICAgICAgaGxqcy5DT01NRU5UKCctLScsICckJyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJywgIC8vIGZ1bmN0aW9uOiAtPiA9PlxuICAgICAgICBiZWdpbjogJ15cXFxccyonICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqPVxcXFxzKicgKyBQQVJBTVNfUkUsIGVuZDogJ1stPV0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbVElUTEUsIFBBUkFNU11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvW1xcKCw6PV1cXHMqLywgLy8gYW5vbnltb3VzIGZ1bmN0aW9uIHN0YXJ0XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogUEFSQU1TX1JFLCBlbmQ6ICdbLT1dPicsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbUEFSQU1TXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbVElUTEVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBUSVRMRVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICduYW1lJywgICAgLy8gdGFibGVcbiAgICAgICAgYmVnaW46IEpTX0lERU5UX1JFICsgJzonLCBlbmQ6ICc6JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOlxuICAgICAgICAgICdidWlsZCBjcmVhdGUgaW5kZXggZGVsZXRlIGRyb3AgZXhwbGFpbiBpbmZlcnwxMCBpbnNlcnQgbWVyZ2UgcHJlcGFyZSBzZWxlY3QgdXBkYXRlIHVwc2VydHwxMCcsXG4gICAgICAgIGVuZDogLzsvLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIuY291Y2hiYXNlLmNvbS9kb2N1bWVudGF0aW9uL3NlcnZlci9jdXJyZW50L24xcWwvbjFxbC1sYW5ndWFnZS1yZWZlcmVuY2UvcmVzZXJ2ZWR3b3Jkcy5odG1sXG4gICAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAgICdhbGwgYWx0ZXIgYW5hbHl6ZSBhbmQgYW55IGFycmF5IGFzIGFzYyBiZWdpbiBiZXR3ZWVuIGJpbmFyeSBib29sZWFuIGJyZWFrIGJ1Y2tldCBidWlsZCBieSBjYWxsICcgK1xuICAgICAgICAgICAgJ2Nhc2UgY2FzdCBjbHVzdGVyIGNvbGxhdGUgY29sbGVjdGlvbiBjb21taXQgY29ubmVjdCBjb250aW51ZSBjb3JyZWxhdGUgY292ZXIgY3JlYXRlIGRhdGFiYXNlICcgK1xuICAgICAgICAgICAgJ2RhdGFzZXQgZGF0YXN0b3JlIGRlY2xhcmUgZGVjcmVtZW50IGRlbGV0ZSBkZXJpdmVkIGRlc2MgZGVzY3JpYmUgZGlzdGluY3QgZG8gZHJvcCBlYWNoIGVsZW1lbnQgJyArXG4gICAgICAgICAgICAnZWxzZSBlbmQgZXZlcnkgZXhjZXB0IGV4Y2x1ZGUgZXhlY3V0ZSBleGlzdHMgZXhwbGFpbiBmZXRjaCBmaXJzdCBmbGF0dGVuIGZvciBmb3JjZSBmcm9tICcgK1xuICAgICAgICAgICAgJ2Z1bmN0aW9uIGdyYW50IGdyb3VwIGdzaSBoYXZpbmcgaWYgaWdub3JlIGlsaWtlIGluIGluY2x1ZGUgaW5jcmVtZW50IGluZGV4IGluZmVyIGlubGluZSBpbm5lciAnICtcbiAgICAgICAgICAgICdpbnNlcnQgaW50ZXJzZWN0IGludG8gaXMgam9pbiBrZXkga2V5cyBrZXlzcGFjZSBrbm93biBsYXN0IGxlZnQgbGV0IGxldHRpbmcgbGlrZSBsaW1pdCBsc20gbWFwICcgK1xuICAgICAgICAgICAgJ21hcHBpbmcgbWF0Y2hlZCBtYXRlcmlhbGl6ZWQgbWVyZ2UgbWludXMgbmFtZXNwYWNlIG5lc3Qgbm90IG51bWJlciBvYmplY3Qgb2Zmc2V0IG9uICcgK1xuICAgICAgICAgICAgJ29wdGlvbiBvciBvcmRlciBvdXRlciBvdmVyIHBhcnNlIHBhcnRpdGlvbiBwYXNzd29yZCBwYXRoIHBvb2wgcHJlcGFyZSBwcmltYXJ5IHByaXZhdGUgcHJpdmlsZWdlICcgK1xuICAgICAgICAgICAgJ3Byb2NlZHVyZSBwdWJsaWMgcmF3IHJlYWxtIHJlZHVjZSByZW5hbWUgcmV0dXJuIHJldHVybmluZyByZXZva2UgcmlnaHQgcm9sZSByb2xsYmFjayBzYXRpc2ZpZXMgJyArXG4gICAgICAgICAgICAnc2NoZW1hIHNlbGVjdCBzZWxmIHNlbWkgc2V0IHNob3cgc29tZSBzdGFydCBzdGF0aXN0aWNzIHN0cmluZyBzeXN0ZW0gdGhlbiB0byB0cmFuc2FjdGlvbiB0cmlnZ2VyICcgK1xuICAgICAgICAgICAgJ3RydW5jYXRlIHVuZGVyIHVuaW9uIHVuaXF1ZSB1bmtub3duIHVubmVzdCB1bnNldCB1cGRhdGUgdXBzZXJ0IHVzZSB1c2VyIHVzaW5nIHZhbGlkYXRlIHZhbHVlICcgK1xuICAgICAgICAgICAgJ3ZhbHVlZCB2YWx1ZXMgdmlhIHZpZXcgd2hlbiB3aGVyZSB3aGlsZSB3aXRoIHdpdGhpbiB3b3JrIHhvcicsXG4gICAgICAgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVyLmNvdWNoYmFzZS5jb20vZG9jdW1lbnRhdGlvbi9zZXJ2ZXIvNC41L24xcWwvbjFxbC1sYW5ndWFnZS1yZWZlcmVuY2UvbGl0ZXJhbHMuaHRtbFxuICAgICAgICAgIGxpdGVyYWw6XG4gICAgICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIG1pc3Npbmd8NScsXG4gICAgICAgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVyLmNvdWNoYmFzZS5jb20vZG9jdW1lbnRhdGlvbi9zZXJ2ZXIvNC41L24xcWwvbjFxbC1sYW5ndWFnZS1yZWZlcmVuY2UvZnVuY3Rpb25zLmh0bWxcbiAgICAgICAgICBidWlsdF9pbjpcbiAgICAgICAgICAgICdhcnJheV9hZ2cgYXJyYXlfYXBwZW5kIGFycmF5X2NvbmNhdCBhcnJheV9jb250YWlucyBhcnJheV9jb3VudCBhcnJheV9kaXN0aW5jdCBhcnJheV9pZm51bGwgYXJyYXlfbGVuZ3RoICcgK1xuICAgICAgICAgICAgJ2FycmF5X21heCBhcnJheV9taW4gYXJyYXlfcG9zaXRpb24gYXJyYXlfcHJlcGVuZCBhcnJheV9wdXQgYXJyYXlfcmFuZ2UgYXJyYXlfcmVtb3ZlIGFycmF5X3JlcGVhdCBhcnJheV9yZXBsYWNlICcgK1xuICAgICAgICAgICAgJ2FycmF5X3JldmVyc2UgYXJyYXlfc29ydCBhcnJheV9zdW0gYXZnIGNvdW50IG1heCBtaW4gc3VtIGdyZWF0ZXN0IGxlYXN0IGlmbWlzc2luZyBpZm1pc3Npbmdvcm51bGwgaWZudWxsICcgK1xuICAgICAgICAgICAgJ21pc3NpbmdpZiBudWxsaWYgaWZpbmYgaWZuYW4gaWZuYW5vcmluZiBuYW5pbmYgbmVnaW5maWYgcG9zaW5maWYgY2xvY2tfbWlsbGlzIGNsb2NrX3N0ciBkYXRlX2FkZF9taWxsaXMgJyArXG4gICAgICAgICAgICAnZGF0ZV9hZGRfc3RyIGRhdGVfZGlmZl9taWxsaXMgZGF0ZV9kaWZmX3N0ciBkYXRlX3BhcnRfbWlsbGlzIGRhdGVfcGFydF9zdHIgZGF0ZV90cnVuY19taWxsaXMgZGF0ZV90cnVuY19zdHIgJyArXG4gICAgICAgICAgICAnZHVyYXRpb25fdG9fc3RyIG1pbGxpcyBzdHJfdG9fbWlsbGlzIG1pbGxpc190b19zdHIgbWlsbGlzX3RvX3V0YyBtaWxsaXNfdG9fem9uZV9uYW1lIG5vd19taWxsaXMgbm93X3N0ciAnICtcbiAgICAgICAgICAgICdzdHJfdG9fZHVyYXRpb24gc3RyX3RvX3V0YyBzdHJfdG9fem9uZV9uYW1lIGRlY29kZV9qc29uIGVuY29kZV9qc29uIGVuY29kZWRfc2l6ZSBwb2x5X2xlbmd0aCBiYXNlNjQgYmFzZTY0X2VuY29kZSAnICtcbiAgICAgICAgICAgICdiYXNlNjRfZGVjb2RlIG1ldGEgdXVpZCBhYnMgYWNvcyBhc2luIGF0YW4gYXRhbjIgY2VpbCBjb3MgZGVncmVlcyBlIGV4cCBsbiBsb2cgZmxvb3IgcGkgcG93ZXIgcmFkaWFucyByYW5kb20gJyArXG4gICAgICAgICAgICAncm91bmQgc2lnbiBzaW4gc3FydCB0YW4gdHJ1bmMgb2JqZWN0X2xlbmd0aCBvYmplY3RfbmFtZXMgb2JqZWN0X3BhaXJzIG9iamVjdF9pbm5lcl9wYWlycyBvYmplY3RfdmFsdWVzICcgK1xuICAgICAgICAgICAgJ29iamVjdF9pbm5lcl92YWx1ZXMgb2JqZWN0X2FkZCBvYmplY3RfcHV0IG9iamVjdF9yZW1vdmUgb2JqZWN0X3Vud3JhcCByZWdleHBfY29udGFpbnMgcmVnZXhwX2xpa2UgcmVnZXhwX3Bvc2l0aW9uICcgK1xuICAgICAgICAgICAgJ3JlZ2V4cF9yZXBsYWNlIGNvbnRhaW5zIGluaXRjYXAgbGVuZ3RoIGxvd2VyIGx0cmltIHBvc2l0aW9uIHJlcGVhdCByZXBsYWNlIHJ0cmltIHNwbGl0IHN1YnN0ciB0aXRsZSB0cmltIHVwcGVyICcgK1xuICAgICAgICAgICAgJ2lzYXJyYXkgaXNhdG9tIGlzYm9vbGVhbiBpc251bWJlciBpc29iamVjdCBpc3N0cmluZyB0eXBlIHRvYXJyYXkgdG9hdG9tIHRvYm9vbGVhbiB0b251bWJlciB0b29iamVjdCB0b3N0cmluZydcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC9cXCRcXGQrL30sXG4gICAgICB7YmVnaW46IC9cXCRcXHsvLCBlbmQ6IC99L30sXG4gICAgICB7YmVnaW46ICdbXFxcXCRcXFxcQF0nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFfVxuICAgIF1cbiAgfTtcbiAgdmFyIERFRkFVTFQgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgbGV4ZW1lczogJ1thLXovX10rJyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ29uIG9mZiB5ZXMgbm8gdHJ1ZSBmYWxzZSBub25lIGJsb2NrZWQgZGVidWcgaW5mbyBub3RpY2Ugd2FybiBlcnJvciBjcml0ICcgK1xuICAgICAgICAnc2VsZWN0IGJyZWFrIGxhc3QgcGVybWFuZW50IHJlZGlyZWN0IGtxdWV1ZSBydHNpZyBlcG9sbCBwb2xsIC9kZXYvcG9sbCdcbiAgICB9LFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBpbGxlZ2FsOiAnPT4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9cIi8sIGVuZDogL1wiL30sXG4gICAgICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gdGhpcyBzd2FsbG93cyBlbnRpcmUgVVJMcyB0byBhdm9pZCBkZXRlY3RpbmcgbnVtYmVycyB3aXRoaW5cbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcoW2Etel0rKTovJywgZW5kOiAnXFxcXHMnLCBlbmRzV2l0aFBhcmVudDogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtWQVJdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgVkFSXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IFwiXFxcXHNcXFxcXlwiLCBlbmQ6IFwiXFxcXHN8e3w7XCIsIHJldHVybkVuZDogdHJ1ZX0sXG4gICAgICAgICAgLy8gcmVnZXhwIGxvY2F0aW9ucyAofiwgfiopXG4gICAgICAgICAge2JlZ2luOiBcIn5cXFxcKj9cXFxccytcIiwgZW5kOiBcIlxcXFxzfHt8O1wiLCByZXR1cm5FbmQ6IHRydWV9LFxuICAgICAgICAgIC8vICouZXhhbXBsZS5jb21cbiAgICAgICAgICB7YmVnaW46IFwiXFxcXCooXFxcXC5bYS16XFxcXC1dKykrXCJ9LFxuICAgICAgICAgIC8vIHN1Yi5leGFtcGxlLipcbiAgICAgICAgICB7YmVnaW46IFwiKFthLXpcXFxcLV0rXFxcXC4pK1xcXFwqXCJ9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBJUFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGR7MSwzfVxcXFwuXFxcXGR7MSwzfVxcXFwuXFxcXGR7MSwzfVxcXFwuXFxcXGR7MSwzfSg6XFxcXGR7MSw1fSk/XFxcXGInXG4gICAgICB9LFxuICAgICAgLy8gdW5pdHNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYlxcXFxkK1trS21NZ0dkc2hkd3ldKlxcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgVkFSXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyduZ2lueGNvbmYnXSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccyt7JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogJ3snLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFxzJywgZW5kOiAnO3x7JywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgICAgICBzdGFydHM6IERFRkFVTFRcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1teXFxcXHNcXFxcfV0nXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnbmltJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhZGRyIGFuZCBhcyBhc20gYmluZCBibG9jayBicmVhayBjYXNlIGNhc3QgY29uc3QgY29udGludWUgY29udmVydGVyICcgK1xuICAgICAgICAnZGlzY2FyZCBkaXN0aW5jdCBkaXYgZG8gZWxpZiBlbHNlIGVuZCBlbnVtIGV4Y2VwdCBleHBvcnQgZmluYWxseSAnICtcbiAgICAgICAgJ2ZvciBmcm9tIGdlbmVyaWMgaWYgaW1wb3J0IGluIGluY2x1ZGUgaW50ZXJmYWNlIGlzIGlzbm90IGl0ZXJhdG9yICcgK1xuICAgICAgICAnbGV0IG1hY3JvIG1ldGhvZCBtaXhpbiBtb2QgbmlsIG5vdCBub3RpbiBvYmplY3Qgb2Ygb3Igb3V0IHByb2MgcHRyICcgK1xuICAgICAgICAncmFpc2UgcmVmIHJldHVybiBzaGwgc2hyIHN0YXRpYyB0ZW1wbGF0ZSB0cnkgdHVwbGUgdHlwZSB1c2luZyB2YXIgJyArXG4gICAgICAgICd3aGVuIHdoaWxlIHdpdGggd2l0aG91dCB4b3IgeWllbGQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3NoYXJlZCBndWFyZGVkIHN0ZGluIHN0ZG91dCBzdGRlcnIgcmVzdWx0IHRydWUgZmFsc2UnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdpbnQgaW50OCBpbnQxNiBpbnQzMiBpbnQ2NCB1aW50IHVpbnQ4IHVpbnQxNiB1aW50MzIgdWludDY0IGZsb2F0ICcgK1xuICAgICAgICAnZmxvYXQzMiBmbG9hdDY0IGJvb2wgY2hhciBzdHJpbmcgY3N0cmluZyBwb2ludGVyIGV4cHIgc3RtdCB2b2lkICcgK1xuICAgICAgICAnYXV0byBhbnkgcmFuZ2UgYXJyYXkgb3BlbmFycmF5IHZhcmFyZ3Mgc2VxIHNldCBjbG9uZyBjdWxvbmcgY2NoYXIgJyArXG4gICAgICAgICdjc2NoYXIgY3Nob3J0IGNpbnQgY3NpemUgY2xvbmdsb25nIGNmbG9hdCBjZG91YmxlIGNsb25nZG91YmxlICcgK1xuICAgICAgICAnY3VjaGFyIGN1c2hvcnQgY3VpbnQgY3Vsb25nbG9uZyBjc3RyaW5nYXJyYXkgc2VtaXN0YXRpYydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIC8vIEFjdHVhbGx5IHByYWdtYVxuICAgICAgICBiZWdpbjogL3tcXC4vLFxuICAgICAgICBlbmQ6IC9cXC59LyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogL1thLXpBLVpdXFx3KlwiLyxcbiAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW3tiZWdpbjogL1wiXCIvfV1cbiAgICAgIH0sIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC8oW2EtekEtWl1cXHcqKT9cIlwiXCIvLFxuICAgICAgICBlbmQ6IC9cIlwiXCIvXG4gICAgICB9LFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAvXFxiW0EtWl1cXHcrXFxiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9cXGIoMFt4WF1bMC05YS1mQS1GXVtfMC05YS1mQS1GXSopKCc/W2lJdVVdKDh8MTZ8MzJ8NjQpKT8vfSxcbiAgICAgICAgICB7YmVnaW46IC9cXGIoMG9bMC03XVtfMC03XSopKCc/W2lJdVVmRl0oOHwxNnwzMnw2NCkpPy99LFxuICAgICAgICAgIHtiZWdpbjogL1xcYigwKGJ8QilbMDFdW18wMV0qKSgnP1tpSXVVZkZdKDh8MTZ8MzJ8NjQpKT8vfSxcbiAgICAgICAgICB7YmVnaW46IC9cXGIoXFxkW19cXGRdKikoJz9baUl1VWZGXSg4fDE2fDMyfDY0KSk/L31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBOSVhfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdyZWMgd2l0aCBsZXQgaW4gaW5oZXJpdCBhc3NlcnQgaWYgZWxzZSB0aGVuJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2Ugb3IgYW5kIG51bGwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2ltcG9ydCBhYm9ydCBiYXNlTmFtZU9mIGRpck9mIGlzTnVsbCBidWlsdGlucyBtYXAgcmVtb3ZlQXR0cnMgdGhyb3cgJyArXG4gICAgICAndG9TdHJpbmcgZGVyaXZhdGlvbidcbiAgfTtcbiAgdmFyIEFOVElRVU9URSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXCRcXHsvLFxuICAgIGVuZDogL30vLFxuICAgIGtleXdvcmRzOiBOSVhfS0VZV09SRFNcbiAgfTtcbiAgdmFyIEFUVFJTID0ge1xuICAgIGJlZ2luOiAvW2EtekEtWjAtOS1fXSsoXFxzKj0pLywgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICBiZWdpbjogL1xcUysvXG4gICAgICB9XG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtBTlRJUVVPVEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IFwiJydcIiwgZW5kOiBcIicnXCJ9LFxuICAgICAge2JlZ2luOiAnXCInLCBlbmQ6ICdcIid9XG4gICAgXVxuICB9O1xuICB2YXIgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HLFxuICAgIEFUVFJTXG4gIF07XG4gIEFOVElRVU9URS5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFtcIm5peG9zXCJdLFxuICAgIGtleXdvcmRzOiBOSVhfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05TXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgQ09OU1RBTlRTID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJChBRE1JTlRPT0xTfEFQUERBVEF8Q0RCVVJOX0FSRUF8Q01ETElORXxDT01NT05GSUxFUzMyfENPTU1PTkZJTEVTNjR8Q09NTU9ORklMRVN8Q09PS0lFU3xERVNLVE9QfERPQ1VNRU5UU3xFWEVESVJ8RVhFRklMRXxFWEVQQVRIfEZBVk9SSVRFU3xGT05UU3xISVNUT1JZfEhXTkRQQVJFTlR8SU5TVERJUnxJTlRFUk5FVF9DQUNIRXxMQU5HVUFHRXxMT0NBTEFQUERBVEF8TVVTSUN8TkVUSE9PRHxPVVRESVJ8UElDVFVSRVN8UExVR0lOU0RJUnxQUklOVEhPT0R8UFJPRklMRXxQUk9HUkFNRklMRVMzMnxQUk9HUkFNRklMRVM2NHxQUk9HUkFNRklMRVN8UVVJQ0tMQVVOQ0h8UkVDRU5UfFJFU09VUkNFU19MT0NBTElaRUR8UkVTT1VSQ0VTfFNFTkRUT3xTTVBST0dSQU1TfFNNU1RBUlRVUHxTVEFSVE1FTlV8U1lTRElSfFRFTVB8VEVNUExBVEVTfFZJREVPU3xXSU5ESVIpL1xuICB9O1xuXG4gIHZhciBERUZJTkVTID0ge1xuICAgIC8vICR7ZGVmaW5lc31cbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCQre1tcXHdcXC46LV0rfS9cbiAgfTtcblxuICB2YXIgVkFSSUFCTEVTID0ge1xuICAgIC8vICR2YXJpYWJsZXNcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCQrXFx3Ky8sXG4gICAgaWxsZWdhbDogL1xcKFxcKXt9L1xuICB9O1xuXG4gIHZhciBMQU5HVUFHRVMgPSB7XG4gICAgLy8gJChsYW5ndWFnZV9zdHJpbmdzKVxuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCtcXChbXFx3XFxeXFwuOi1dK1xcKS9cbiAgfTtcblxuICB2YXIgUEFSQU1FVEVSUyA9IHtcbiAgICAvLyBjb21tYW5kIHBhcmFtZXRlcnNcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnKEFSQ0hJVkV8RklMRV9BVFRSSUJVVEVfQVJDSElWRXxGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9BVFRSSUJVVEVfT0ZGTElORXxGSUxFX0FUVFJJQlVURV9SRUFET05MWXxGSUxFX0FUVFJJQlVURV9TWVNURU18RklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZfEhLQ1J8SEtDVXxIS0REfEhLRVlfQ0xBU1NFU19ST09UfEhLRVlfQ1VSUkVOVF9DT05GSUd8SEtFWV9DVVJSRU5UX1VTRVJ8SEtFWV9EWU5fREFUQXxIS0VZX0xPQ0FMX01BQ0hJTkV8SEtFWV9QRVJGT1JNQU5DRV9EQVRBfEhLRVlfVVNFUlN8SEtMTXxIS1BEfEhLVXxJREFCT1JUfElEQ0FOQ0VMfElESUdOT1JFfElETk98SURPS3xJRFJFVFJZfElEWUVTfE1CX0FCT1JUUkVUUllJR05PUkV8TUJfREVGQlVUVE9OMXxNQl9ERUZCVVRUT04yfE1CX0RFRkJVVFRPTjN8TUJfREVGQlVUVE9ONHxNQl9JQ09ORVhDTEFNQVRJT058TUJfSUNPTklORk9STUFUSU9OfE1CX0lDT05RVUVTVElPTnxNQl9JQ09OU1RPUHxNQl9PS3xNQl9PS0NBTkNFTHxNQl9SRVRSWUNBTkNFTHxNQl9SSUdIVHxNQl9SVExSRUFESU5HfE1CX1NFVEZPUkVHUk9VTkR8TUJfVE9QTU9TVHxNQl9VU0VSSUNPTnxNQl9ZRVNOT3xOT1JNQUx8T0ZGTElORXxSRUFET05MWXxTSENUWHxTSEVMTF9DT05URVhUfFNZU1RFTXxURU1QT1JBUlkpJ1xuICB9O1xuXG4gIHZhciBDT01QSUxFUiA9IHtcbiAgICAvLyAhY29tcGlsZXJfZmxhZ3NcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcIShhZGRpbmNsdWRlZGlyfGFkZHBsdWdpbmRpcnxhcHBlbmRmaWxlfGNkfGRlZmluZXxkZWxmaWxlfGVjaG98ZWxzZXxlbmRpZnxlcnJvcnxleGVjdXRlfGZpbmFsaXplfGdldGRsbHZlcnNpb258Z2V0dGxidmVyc2lvbnxpZnxpZmRlZnxpZm1hY3JvZGVmfGlmbWFjcm9uZGVmfGlmbmRlZnxpbmNsdWRlfGluc2VydG1hY3JvfG1hY3JvfG1hY3JvZW5kfG1ha2Vuc2lzfHBhY2toZHJ8c2VhcmNocGFyc2V8c2VhcmNocmVwbGFjZXxzeXN0ZW18dGVtcGZpbGV8dW5kZWZ8dmVyYm9zZXx3YXJuaW5nKS9cbiAgfTtcblxuICB2YXIgTUVUQUNIQVJTID0ge1xuICAgIC8vICRcXG4sICRcXHIsICRcXHQsICQkXG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC9cXCQoXFxcXFtucnRdfFxcJCkvXG4gIH07XG5cbiAgdmFyIFBMVUdJTlMgPSB7XG4gICAgLy8gcGx1Zzo6aW5zXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGJlZ2luOiAvXFx3K1xcOlxcOlxcdysvXG4gIH07XG5cbiAgICB2YXIgU1RSSU5HID0ge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIE1FVEFDSEFSUyxcbiAgICAgICAgQ09OU1RBTlRTLFxuICAgICAgICBERUZJTkVTLFxuICAgICAgICBWQVJJQUJMRVMsXG4gICAgICAgIExBTkdVQUdFU1xuICAgICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAnQWJvcnQgQWRkQnJhbmRpbmdJbWFnZSBBZGRTaXplIEFsbG93Um9vdERpckluc3RhbGwgQWxsb3dTa2lwRmlsZXMgQXV0b0Nsb3NlV2luZG93IEJHRm9udCBCR0dyYWRpZW50IEJyYW5kaW5nVGV4dCBCcmluZ1RvRnJvbnQgQ2FsbCBDYWxsSW5zdERMTCBDYXB0aW9uIENoYW5nZVVJIENoZWNrQml0bWFwIENsZWFyRXJyb3JzIENvbXBsZXRlZFRleHQgQ29tcG9uZW50VGV4dCBDb3B5RmlsZXMgQ1JDQ2hlY2sgQ3JlYXRlRGlyZWN0b3J5IENyZWF0ZUZvbnQgQ3JlYXRlU2hvcnRDdXQgRGVsZXRlIERlbGV0ZUlOSVNlYyBEZWxldGVJTklTdHIgRGVsZXRlUmVnS2V5IERlbGV0ZVJlZ1ZhbHVlIERldGFpbFByaW50IERldGFpbHNCdXR0b25UZXh0IERpclRleHQgRGlyVmFyIERpclZlcmlmeSBFbmFibGVXaW5kb3cgRW51bVJlZ0tleSBFbnVtUmVnVmFsdWUgRXhjaCBFeGVjIEV4ZWNTaGVsbCBFeGVjU2hlbGxXYWl0IEV4ZWNXYWl0IEV4cGFuZEVudlN0cmluZ3MgRmlsZSBGaWxlQnVmU2l6ZSBGaWxlQ2xvc2UgRmlsZUVycm9yVGV4dCBGaWxlT3BlbiBGaWxlUmVhZCBGaWxlUmVhZEJ5dGUgRmlsZVJlYWRVVEYxNkxFIEZpbGVSZWFkV29yZCBGaWxlU2VlayBGaWxlV3JpdGUgRmlsZVdyaXRlQnl0ZSBGaWxlV3JpdGVVVEYxNkxFIEZpbGVXcml0ZVdvcmQgRmluZENsb3NlIEZpbmRGaXJzdCBGaW5kTmV4dCBGaW5kV2luZG93IEZsdXNoSU5JIEZ1bmN0aW9uRW5kIEdldEN1ckluc3RUeXBlIEdldEN1cnJlbnRBZGRyZXNzIEdldERsZ0l0ZW0gR2V0RExMVmVyc2lvbiBHZXRETExWZXJzaW9uTG9jYWwgR2V0RXJyb3JMZXZlbCBHZXRGaWxlVGltZSBHZXRGaWxlVGltZUxvY2FsIEdldEZ1bGxQYXRoTmFtZSBHZXRGdW5jdGlvbkFkZHJlc3MgR2V0SW5zdERpckVycm9yIEdldExhYmVsQWRkcmVzcyBHZXRUZW1wRmlsZU5hbWUgR290byBIaWRlV2luZG93IEljb24gSWZBYm9ydCBJZkVycm9ycyBJZkZpbGVFeGlzdHMgSWZSZWJvb3RGbGFnIElmU2lsZW50IEluaXRQbHVnaW5zRGlyIEluc3RhbGxCdXR0b25UZXh0IEluc3RhbGxDb2xvcnMgSW5zdGFsbERpciBJbnN0YWxsRGlyUmVnS2V5IEluc3RQcm9ncmVzc0ZsYWdzIEluc3RUeXBlIEluc3RUeXBlR2V0VGV4dCBJbnN0VHlwZVNldFRleHQgSW50NjRDbXAgSW50NjRDbXBVIEludDY0Rm10IEludENtcCBJbnRDbXBVIEludEZtdCBJbnRPcCBJbnRQdHJDbXAgSW50UHRyQ21wVSBJbnRQdHJPcCBJc1dpbmRvdyBMYW5nU3RyaW5nIExpY2Vuc2VCa0NvbG9yIExpY2Vuc2VEYXRhIExpY2Vuc2VGb3JjZVNlbGVjdGlvbiBMaWNlbnNlTGFuZ1N0cmluZyBMaWNlbnNlVGV4dCBMb2FkTGFuZ3VhZ2VGaWxlIExvY2tXaW5kb3cgTG9nU2V0IExvZ1RleHQgTWFuaWZlc3REUElBd2FyZSBNYW5pZmVzdFN1cHBvcnRlZE9TIE1lc3NhZ2VCb3ggTWlzY0J1dHRvblRleHQgTmFtZSBOb3AgT3V0RmlsZSBQYWdlIFBhZ2VDYWxsYmFja3MgUGFnZUV4RW5kIFBvcCBQdXNoIFF1aXQgUmVhZEVudlN0ciBSZWFkSU5JU3RyIFJlYWRSZWdEV09SRCBSZWFkUmVnU3RyIFJlYm9vdCBSZWdETEwgUmVuYW1lIFJlcXVlc3RFeGVjdXRpb25MZXZlbCBSZXNlcnZlRmlsZSBSZXR1cm4gUk1EaXIgU2VhcmNoUGF0aCBTZWN0aW9uRW5kIFNlY3Rpb25HZXRGbGFncyBTZWN0aW9uR2V0SW5zdFR5cGVzIFNlY3Rpb25HZXRTaXplIFNlY3Rpb25HZXRUZXh0IFNlY3Rpb25Hcm91cEVuZCBTZWN0aW9uSW4gU2VjdGlvblNldEZsYWdzIFNlY3Rpb25TZXRJbnN0VHlwZXMgU2VjdGlvblNldFNpemUgU2VjdGlvblNldFRleHQgU2VuZE1lc3NhZ2UgU2V0QXV0b0Nsb3NlIFNldEJyYW5kaW5nSW1hZ2UgU2V0Q29tcHJlc3MgU2V0Q29tcHJlc3NvciBTZXRDb21wcmVzc29yRGljdFNpemUgU2V0Q3RsQ29sb3JzIFNldEN1ckluc3RUeXBlIFNldERhdGFibG9ja09wdGltaXplIFNldERhdGVTYXZlIFNldERldGFpbHNQcmludCBTZXREZXRhaWxzVmlldyBTZXRFcnJvckxldmVsIFNldEVycm9ycyBTZXRGaWxlQXR0cmlidXRlcyBTZXRGb250IFNldE91dFBhdGggU2V0T3ZlcndyaXRlIFNldFJlYm9vdEZsYWcgU2V0UmVnVmlldyBTZXRTaGVsbFZhckNvbnRleHQgU2V0U2lsZW50IFNob3dJbnN0RGV0YWlscyBTaG93VW5pbnN0RGV0YWlscyBTaG93V2luZG93IFNpbGVudEluc3RhbGwgU2lsZW50VW5JbnN0YWxsIFNsZWVwIFNwYWNlVGV4dHMgU3RyQ21wIFN0ckNtcFMgU3RyQ3B5IFN0ckxlbiBTdWJDYXB0aW9uIFVuaWNvZGUgVW5pbnN0YWxsQnV0dG9uVGV4dCBVbmluc3RhbGxDYXB0aW9uIFVuaW5zdGFsbEljb24gVW5pbnN0YWxsU3ViQ2FwdGlvbiBVbmluc3RhbGxUZXh0IFVuaW5zdFBhZ2UgVW5SZWdETEwgVmFyIFZJQWRkVmVyc2lvbktleSBWSUZpbGVWZXJzaW9uIFZJUHJvZHVjdFZlcnNpb24gV2luZG93SWNvbiBXcml0ZUlOSVN0ciBXcml0ZVJlZ0JpbiBXcml0ZVJlZ0RXT1JEIFdyaXRlUmVnRXhwYW5kU3RyIFdyaXRlUmVnTXVsdGlTdHIgV3JpdGVSZWdOb25lIFdyaXRlUmVnU3RyIFdyaXRlVW5pbnN0YWxsZXIgWFBTdHlsZScsXG4gICAgICBsaXRlcmFsOlxuICAgICAgJ2FkbWluIGFsbCBhdXRvIGJvdGggYm90dG9tIGJ6aXAyIGNvbG9yZWQgY29tcG9uZW50cyBjdXJyZW50IGN1c3RvbSBkaXJlY3RvcnkgZmFsc2UgZm9yY2UgaGlkZSBoaWdoZXN0IGlmZGlmZiBpZm5ld2VyIGluc3RmaWxlcyBsYXN0dXNlZCBsZWF2ZSBsZWZ0IGxpY2Vuc2UgbGlzdG9ubHkgbHptYSBuZXZlcnNob3cgbm9uZSBub3JtYWwgbm90c2V0IG9mZiBvbiBvcGVuIHByaW50IHJpZ2h0IHNob3cgc2lsZW50IHNpbGVudGxvZyBzbW9vdGggdGV4dG9ubHkgdG9wIHRydWUgdHJ5IHVuLmNvbXBvbmVudHMgdW4uY3VzdG9tIHVuLmRpcmVjdG9yeSB1bi5pbnN0ZmlsZXMgdW4ubGljZW5zZSB1bmluc3RDb25maXJtIHVzZXIgV2luMTAgV2luNyBXaW44IFdpblZpc3RhIHpsaWInXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ0Z1bmN0aW9uIFBhZ2VFeCBTZWN0aW9uIFNlY3Rpb25Hcm91cCcsIGVuZDogJyQnXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgQ09NUElMRVIsXG4gICAgICBERUZJTkVTLFxuICAgICAgVkFSSUFCTEVTLFxuICAgICAgTEFOR1VBR0VTLFxuICAgICAgUEFSQU1FVEVSUyxcbiAgICAgIFBMVUdJTlMsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEFQSV9DTEFTUyA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICdcXFxcYihBVnxDQXxDRnxDR3xDSXxDTHxDTXxDTnxDVHxNS3xNUHxNVEt8TVRMfE5TfFNDTnxTS3xVSXxXS3xYQylcXFxcdysnLFxuICB9O1xuICB2YXIgT0JKQ19LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2ludCBmbG9hdCB3aGlsZSBjaGFyIGV4cG9ydCBzaXplb2YgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgZm9yIHVuaW9uICcgK1xuICAgICAgJ3Vuc2lnbmVkIGxvbmcgdm9sYXRpbGUgc3RhdGljIGJvb2wgbXV0YWJsZSBpZiBkbyByZXR1cm4gZ290byB2b2lkICcgK1xuICAgICAgJ2VudW0gZWxzZSBicmVhayBleHRlcm4gYXNtIGNhc2Ugc2hvcnQgZGVmYXVsdCBkb3VibGUgcmVnaXN0ZXIgZXhwbGljaXQgJyArXG4gICAgICAnc2lnbmVkIHR5cGVuYW1lIHRoaXMgc3dpdGNoIGNvbnRpbnVlIHdjaGFyX3QgaW5saW5lIHJlYWRvbmx5IGFzc2lnbiAnICtcbiAgICAgICdyZWFkd3JpdGUgc2VsZiBAc3luY2hyb25pemVkIGlkIHR5cGVvZiAnICtcbiAgICAgICdub25hdG9taWMgc3VwZXIgdW5pY2hhciBJQk91dGxldCBJQkFjdGlvbiBzdHJvbmcgd2VhayBjb3B5ICcgK1xuICAgICAgJ2luIG91dCBpbm91dCBieWNvcHkgYnlyZWYgb25ld2F5IF9fc3Ryb25nIF9fd2VhayBfX2Jsb2NrIF9fYXV0b3JlbGVhc2luZyAnICtcbiAgICAgICdAcHJpdmF0ZSBAcHJvdGVjdGVkIEBwdWJsaWMgQHRyeSBAcHJvcGVydHkgQGVuZCBAdGhyb3cgQGNhdGNoIEBmaW5hbGx5ICcgK1xuICAgICAgJ0BhdXRvcmVsZWFzZXBvb2wgQHN5bnRoZXNpemUgQGR5bmFtaWMgQHNlbGVjdG9yIEBvcHRpb25hbCBAcmVxdWlyZWQgJyArXG4gICAgICAnQGVuY29kZSBAcGFja2FnZSBAaW1wb3J0IEBkZWZzIEBjb21wYXRpYmlsaXR5X2FsaWFzICcgK1xuICAgICAgJ19fYnJpZGdlIF9fYnJpZGdlX3RyYW5zZmVyIF9fYnJpZGdlX3JldGFpbmVkIF9fYnJpZGdlX3JldGFpbiAnICtcbiAgICAgICdfX2NvdmFyaWFudCBfX2NvbnRyYXZhcmlhbnQgX19raW5kb2YgJyArXG4gICAgICAnX05vbm51bGwgX051bGxhYmxlIF9OdWxsX3Vuc3BlY2lmaWVkICcgK1xuICAgICAgJ19fRlVOQ1RJT05fXyBfX1BSRVRUWV9GVU5DVElPTl9fIF9fYXR0cmlidXRlX18gJyArXG4gICAgICAnZ2V0dGVyIHNldHRlciByZXRhaW4gdW5zYWZlX3VucmV0YWluZWQgJyArXG4gICAgICAnbm9ubnVsbCBudWxsYWJsZSBudWxsX3Vuc3BlY2lmaWVkIG51bGxfcmVzZXR0YWJsZSBjbGFzcyBpbnN0YW5jZXR5cGUgJyArXG4gICAgICAnTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUiBOU19VTkFWQUlMQUJMRSBOU19SRVFVSVJFU19TVVBFUiAnICtcbiAgICAgICdOU19SRVRVUk5TX0lOTkVSX1BPSU5URVIgTlNfSU5MSU5FIE5TX0FWQUlMQUJMRSBOU19ERVBSRUNBVEVEICcgK1xuICAgICAgJ05TX0VOVU0gTlNfT1BUSU9OUyBOU19TV0lGVF9VTkFWQUlMQUJMRSAnICtcbiAgICAgICdOU19BU1NVTUVfTk9OTlVMTF9CRUdJTiBOU19BU1NVTUVfTk9OTlVMTF9FTkQgJyArXG4gICAgICAnTlNfUkVGSU5FRF9GT1JfU1dJRlQgTlNfU1dJRlRfTkFNRSBOU19TV0lGVF9OT1RIUk9XICcgK1xuICAgICAgJ05TX0RVUklORyBOU19IQU5ETEVSIE5TX0VOREhBTkRMRVIgTlNfVkFMVUVSRVRVUk4gTlNfVk9JRFJFVFVSTicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICdmYWxzZSB0cnVlIEZBTFNFIFRSVUUgbmlsIFlFUyBOTyBOVUxMJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdCT09MIGRpc3BhdGNoX29uY2VfdCBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoX3N5bmMgZGlzcGF0Y2hfYXN5bmMgZGlzcGF0Y2hfb25jZSdcbiAgfTtcbiAgdmFyIExFWEVNRVMgPSAvW2EtekEtWkBdW2EtekEtWjAtOV9dKi87XG4gIHZhciBDTEFTU19LRVlXT1JEUyA9ICdAaW50ZXJmYWNlIEBjbGFzcyBAcHJvdG9jb2wgQGltcGxlbWVudGF0aW9uJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ21tJywgJ29iamMnLCAnb2JqLWMnXSxcbiAgICBrZXl3b3JkczogT0JKQ19LRVlXT1JEUyxcbiAgICBsZXhlbWVzOiBMRVhFTUVTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEFQSV9DTEFTUyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnQFwiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnW15cXFxcXFxcXF1bXlxcJ10nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJyxcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgeyBiZWdpbjogJ1xcXCInLCBlbmQ6ICdcXFwiJyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAnPCcsIGVuZDogJz4nIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICcoJyArIENMQVNTX0tFWVdPUkRTLnNwbGl0KCcgJykuam9pbignfCcpICsgJylcXFxcYicsIGVuZDogJyh7fCQpJywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IENMQVNTX0tFWVdPUkRTLCBsZXhlbWVzOiBMRVhFTUVTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nK2hsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLyogbWlzc2luZyBzdXBwb3J0IGZvciBoZXJlZG9jLWxpa2Ugc3RyaW5nIChPQ2FtbCA0LjAuMispICovXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYW5kIGFzIGFzc2VydCBhc3IgYmVnaW4gY2xhc3MgY29uc3RyYWludCBkbyBkb25lIGRvd250byBlbHNlIGVuZCAnICtcbiAgICAgICAgJ2V4Y2VwdGlvbiBleHRlcm5hbCBmb3IgZnVuIGZ1bmN0aW9uIGZ1bmN0b3IgaWYgaW4gaW5jbHVkZSAnICtcbiAgICAgICAgJ2luaGVyaXQhIGluaGVyaXQgaW5pdGlhbGl6ZXIgbGFuZCBsYXp5IGxldCBsb3IgbHNsIGxzciBseG9yIG1hdGNoIG1ldGhvZCF8MTAgbWV0aG9kICcgK1xuICAgICAgICAnbW9kIG1vZHVsZSBtdXRhYmxlIG5ldyBvYmplY3Qgb2Ygb3BlbiEgb3BlbiBvciBwcml2YXRlIHJlYyBzaWcgc3RydWN0ICcgK1xuICAgICAgICAndGhlbiB0byB0cnkgdHlwZSB2YWwhIHZhbCB2aXJ0dWFsIHdoZW4gd2hpbGUgd2l0aCAnICtcbiAgICAgICAgLyogY2FtbHA0ICovXG4gICAgICAgICdwYXJzZXIgdmFsdWUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8qIGJ1aWx0LWluIHR5cGVzICovXG4gICAgICAgICdhcnJheSBib29sIGJ5dGVzIGNoYXIgZXhufDUgZmxvYXQgaW50IGludDMyIGludDY0IGxpc3QgbGF6eV90fDUgbmF0aXZlaW50fDUgc3RyaW5nIHVuaXQgJyArXG4gICAgICAgIC8qIChzb21lKSB0eXBlcyBpbiBQZXJ2YXNpdmVzICovXG4gICAgICAgICdpbl9jaGFubmVsIG91dF9jaGFubmVsIHJlZicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXC9cXC98Pj4vLFxuICAgIGxleGVtZXM6ICdbYS16X11cXFxcdyohPycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXFsoXFxcXHxcXFxcfCk/XFxcXF18XFxcXChcXFxcKScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJ1xcXFwoXFxcXConLFxuICAgICAgICAnXFxcXCpcXFxcKScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHsgLyogdHlwZSB2YXJpYWJsZSAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpfXSg/IVxcJylbXFxcXHdcXCddKidcbiAgICAgICAgLyogdGhlIGdyYW1tYXIgaXMgYW1iaWd1b3VzIG9uIGhvdyAnYSdiIHNob3VsZCBiZSBpbnRlcnByZXRlZCBidXQgbm90IHRoZSBjb21waWxlciAqL1xuICAgICAgfSxcbiAgICAgIHsgLyogcG9seW1vcnBoaWMgdmFyaWFudCAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdgW0EtWl1bXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICB7IC8qIG1vZHVsZSBvciBjb25zdHJ1Y3RvciAqL1xuICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYltBLVpdW1xcXFx3XFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8qIGRvbid0IGNvbG9yIGlkZW50aWZpZXJzLCBidXQgc2FmZWx5IGNhdGNoIGFsbCBpZGVudGlmaWVycyB3aXRoICcqL1xuICAgICAgICBiZWdpbjogJ1thLXpfXVxcXFx3KlxcJ1tcXFxcd1xcJ10qJywgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2NsYXNzTmFtZTogJ3N0cmluZycsIHJlbGV2YW5jZTogMH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOlxuICAgICAgICAgICdcXFxcYigwW3hYXVthLWZBLUYwLTlfXStbTGxuXT98JyArXG4gICAgICAgICAgJzBbb09dWzAtN19dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtiQl1bMDFfXStbTGxuXT98JyArXG4gICAgICAgICAgJ1swLTldWzAtOV9dKihbTGxuXXwoXFxcXC5bMC05X10qKT8oW2VFXVstK10/WzAtOV9dKyk/KT8pJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1stPV0+LyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfVxuICAgIF1cbiAgfVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblx0dmFyIFNQRUNJQUxfVkFSUyA9IHtcblx0XHRjbGFzc05hbWU6ICdrZXl3b3JkJyxcblx0XHRiZWdpbjogJ1xcXFwkKGZbYXNuXXx0fHZwW3J0ZF18Y2hpbGRyZW4pJ1xuXHR9LFxuXHRMSVRFUkFMUyA9IHtcblx0XHRjbGFzc05hbWU6ICdsaXRlcmFsJyxcblx0XHRiZWdpbjogJ2ZhbHNlfHRydWV8UEl8dW5kZWYnXG5cdH0sXG5cdE5VTUJFUlMgPSB7XG5cdFx0Y2xhc3NOYW1lOiAnbnVtYmVyJyxcblx0XHRiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oZS0/XFxcXGQrKT8nLCAvL2FkZHMgMWU1LCAxZS0xMFxuXHRcdHJlbGV2YW5jZTogMFxuXHR9LFxuXHRTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSx7aWxsZWdhbDogbnVsbH0pLFxuXHRQUkVQUk8gPSB7XG5cdFx0Y2xhc3NOYW1lOiAnbWV0YScsXG5cdFx0a2V5d29yZHM6IHsnbWV0YS1rZXl3b3JkJzogJ2luY2x1ZGUgdXNlJ30sXG5cdFx0YmVnaW46ICdpbmNsdWRlfHVzZSA8Jyxcblx0XHRlbmQ6ICc+J1xuXHR9LFxuXHRQQVJBTVMgPSB7XG5cdFx0Y2xhc3NOYW1lOiAncGFyYW1zJyxcblx0XHRiZWdpbjogJ1xcXFwoJywgZW5kOiAnXFxcXCknLFxuXHRcdGNvbnRhaW5zOiBbJ3NlbGYnLCBOVU1CRVJTLCBTVFJJTkcsIFNQRUNJQUxfVkFSUywgTElURVJBTFNdXG5cdH0sXG5cdE1PRElGSUVSUyA9IHtcblx0XHRiZWdpbjogJ1sqISMlXScsXG5cdFx0cmVsZXZhbmNlOiAwXG5cdH0sXG5cdEZVTkNUSU9OUyA9IHtcblx0XHRjbGFzc05hbWU6ICdmdW5jdGlvbicsXG5cdFx0YmVnaW5LZXl3b3JkczogJ21vZHVsZSBmdW5jdGlvbicsXG5cdFx0ZW5kOiAnXFxcXD18XFxcXHsnLFxuXHRcdGNvbnRhaW5zOiBbUEFSQU1TLCBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cblx0fTtcblxuXHRyZXR1cm4ge1xuXHRcdGFsaWFzZXM6IFsnc2NhZCddLFxuXHRcdGtleXdvcmRzOiB7XG5cdFx0XHRrZXl3b3JkOiAnZnVuY3Rpb24gbW9kdWxlIGluY2x1ZGUgdXNlIGZvciBpbnRlcnNlY3Rpb25fZm9yIGlmIGVsc2UgXFxcXCUnLFxuXHRcdFx0bGl0ZXJhbDogJ2ZhbHNlIHRydWUgUEkgdW5kZWYnLFxuXHRcdFx0YnVpbHRfaW46ICdjaXJjbGUgc3F1YXJlIHBvbHlnb24gdGV4dCBzcGhlcmUgY3ViZSBjeWxpbmRlciBwb2x5aGVkcm9uIHRyYW5zbGF0ZSByb3RhdGUgc2NhbGUgcmVzaXplIG1pcnJvciBtdWx0bWF0cml4IGNvbG9yIG9mZnNldCBodWxsIG1pbmtvd3NraSB1bmlvbiBkaWZmZXJlbmNlIGludGVyc2VjdGlvbiBhYnMgc2lnbiBzaW4gY29zIHRhbiBhY29zIGFzaW4gYXRhbiBhdGFuMiBmbG9vciByb3VuZCBjZWlsIGxuIGxvZyBwb3cgc3FydCBleHAgcmFuZHMgbWluIG1heCBjb25jYXQgbG9va3VwIHN0ciBjaHIgc2VhcmNoIHZlcnNpb24gdmVyc2lvbl9udW0gbm9ybSBjcm9zcyBwYXJlbnRfbW9kdWxlIGVjaG8gaW1wb3J0IGltcG9ydF9keGYgZHhmX2xpbmVhcl9leHRydWRlIGxpbmVhcl9leHRydWRlIHJvdGF0ZV9leHRydWRlIHN1cmZhY2UgcHJvamVjdGlvbiByZW5kZXIgY2hpbGRyZW4gZHhmX2Nyb3NzIGR4Zl9kaW0gbGV0IGFzc2lnbidcblx0XHR9LFxuXHRcdGNvbnRhaW5zOiBbXG5cdFx0XHRobGpzLkNfTElORV9DT01NRU5UX01PREUsXG5cdFx0XHRobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuXHRcdFx0TlVNQkVSUyxcblx0XHRcdFBSRVBSTyxcblx0XHRcdFNUUklORyxcblx0XHRcdFNQRUNJQUxfVkFSUyxcblx0XHRcdE1PRElGSUVSUyxcblx0XHRcdEZVTkNUSU9OU1xuXHRcdF1cblx0fVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIE9YWUdFTkVfS0VZV09SRFMgPSAnYWJzdHJhY3QgYWRkIGFuZCBhcnJheSBhcyBhc2MgYXNwZWN0IGFzc2VtYmx5IGFzeW5jIGJlZ2luIGJyZWFrIGJsb2NrIGJ5IGNhc2UgY2xhc3MgY29uY2F0IGNvbnN0IGNvcHkgY29uc3RydWN0b3IgY29udGludWUgJytcbiAgICAnY3JlYXRlIGRlZmF1bHQgZGVsZWdhdGUgZGVzYyBkaXN0aW5jdCBkaXYgZG8gZG93bnRvIGR5bmFtaWMgZWFjaCBlbHNlIGVtcHR5IGVuZCBlbnN1cmUgZW51bSBlcXVhbHMgZXZlbnQgZXhjZXB0IGV4aXQgZXh0ZW5zaW9uIGV4dGVybmFsIGZhbHNlICcrXG4gICAgJ2ZpbmFsIGZpbmFsaXplIGZpbmFsaXplciBmaW5hbGx5IGZsYWdzIGZvciBmb3J3YXJkIGZyb20gZnVuY3Rpb24gZnV0dXJlIGdsb2JhbCBncm91cCBoYXMgaWYgaW1wbGVtZW50YXRpb24gaW1wbGVtZW50cyBpbXBsaWVzIGluIGluZGV4IGluaGVyaXRlZCAnK1xuICAgICdpbmxpbmUgaW50ZXJmYWNlIGludG8gaW52YXJpYW50cyBpcyBpdGVyYXRvciBqb2luIGxvY2tlZCBsb2NraW5nIGxvb3AgbWF0Y2hpbmcgbWV0aG9kIG1vZCBtb2R1bGUgbmFtZXNwYWNlIG5lc3RlZCBuZXcgbmlsIG5vdCBub3RpZnkgbnVsbGFibGUgb2YgJytcbiAgICAnb2xkIG9uIG9wZXJhdG9yIG9yIG9yZGVyIG91dCBvdmVycmlkZSBwYXJhbGxlbCBwYXJhbXMgcGFydGlhbCBwaW5uZWQgcHJpdmF0ZSBwcm9jZWR1cmUgcHJvcGVydHkgcHJvdGVjdGVkIHB1YmxpYyBxdWVyeWFibGUgcmFpc2UgcmVhZCByZWFkb25seSAnK1xuICAgICdyZWNvcmQgcmVpbnRyb2R1Y2UgcmVtb3ZlIHJlcGVhdCByZXF1aXJlIHJlc3VsdCByZXZlcnNlIHNlYWxlZCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXQgc2hsIHNociBza2lwIHN0YXRpYyBzdGVwIHNvZnQgdGFrZSB0aGVuIHRvIHRydWUgdHJ5IHR1cGxlICcrXG4gICAgJ3R5cGUgdW5pb24gdW5pdCB1bnNhZmUgdW50aWwgdXNlcyB1c2luZyB2YXIgdmlydHVhbCByYWlzZXMgdm9sYXRpbGUgd2hlcmUgd2hpbGUgd2l0aCB3cml0ZSB4b3IgeWllbGQgYXdhaXQgbWFwcGVkIGRlcHJlY2F0ZWQgc3RkY2FsbCBjZGVjbCBwYXNjYWwgJytcbiAgICAncmVnaXN0ZXIgc2FmZWNhbGwgb3ZlcmxvYWQgbGlicmFyeSBwbGF0Zm9ybSByZWZlcmVuY2UgcGFja2VkIHN0cmljdCBwdWJsaXNoZWQgYXV0b3JlbGVhc2Vwb29sIHNlbGVjdG9yIHN0cm9uZyB3ZWFrIHVucmV0YWluZWQnO1xuICB2YXIgQ1VSTFlfQ09NTUVOVCA9ICBobGpzLkNPTU1FTlQoXG4gICAgJ3snLFxuICAgICd9JyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gICk7XG4gIHZhciBQQVJFTl9DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICdcXFxcKFxcXFwqJyxcbiAgICAnXFxcXCpcXFxcKScsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH1cbiAgKTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICBjb250YWluczogW3tiZWdpbjogJ1xcJ1xcJyd9XVxuICB9O1xuICB2YXIgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgYmVnaW46ICcoI1xcXFxkKykrJ1xuICB9O1xuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbiBjb25zdHJ1Y3RvciBkZXN0cnVjdG9yIHByb2NlZHVyZSBtZXRob2QnLCBlbmQ6ICdbOjtdJyxcbiAgICBrZXl3b3JkczogJ2Z1bmN0aW9uIGNvbnN0cnVjdG9yfDEwIGRlc3RydWN0b3J8MTAgcHJvY2VkdXJlfDEwIG1ldGhvZHwxMCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAga2V5d29yZHM6IE9YWUdFTkVfS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbU1RSSU5HLCBDSEFSX1NUUklOR11cbiAgICAgIH0sXG4gICAgICBDVVJMWV9DT01NRU5ULCBQQVJFTl9DT01NRU5UXG4gICAgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgbGV4ZW1lczogL1xcLj9cXHcrLyxcbiAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAnKFwifFxcXFwkW0ctWmctel18XFxcXC9cXFxcKnw8L3w9PnwtPiknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDVVJMWV9DT01NRU5ULCBQQVJFTl9DT01NRU5ULCBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luOiAnPVxcXFxiY2xhc3NcXFxcYicsIGVuZDogJ2VuZDsnLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBTVFJJTkcsIENIQVJfU1RSSU5HLFxuICAgICAgICAgIENVUkxZX0NPTU1FTlQsIFBBUkVOX0NPTU1FTlQsIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBGVU5DVElPTlxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIENVUkxZX1NVQkNPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ3snLFxuICAgICd9JyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJ11cbiAgICB9XG4gICk7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLCByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXiMnLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXFxcXF5yZW17JyxcbiAgICAgICAgJ30nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgQ1VSTFlfU1VCQ09NTUVOVFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXkAoPzpCQVNFfFVTRXxDTEFTU3xPUFRJT05TKSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnQFtcXFxcd1xcXFwtXStcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKD86XFxcXFtbXFxcXHdeO1xcXFwtXSpcXFxcXSk/KD86LiopJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcJFxcXFx7P1tcXFxcd1xcXFwtXFxcXC5cXFxcOl0rXFxcXH0/J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAnXFxcXF5bXFxcXHdcXFxcLVxcXFwuXFxcXDpdKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiAnXFxcXF4jWzAtOWEtZkEtRl0rJ1xuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBNQUNSTyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCRbXFx3XFxkI0BdW1xcd1xcZF9dKi9cbiAgfTtcbiAgdmFyIFRBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogLzwoPyFcXC8pLywgZW5kOiAvPi9cbiAgfTtcbiAgdmFyIFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncGYuY29uZiddLFxuICAgIGxleGVtZXM6IC9bYS16MC05Xzw+LV0rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgYnVpbHRfaW46IC8qIGJsb2NrIG1hdGNoIHBhc3MgYXJlIFwiYWN0aW9uc1wiIGluIHBmLmNvbmYoNSksIHRoZSByZXN0IGFyZVxuICAgICAgICAgICAgICAgICAqIGxleGljYWxseSBzaW1pbGFyIHRvcC1sZXZlbCBjb21tYW5kcy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgJ2Jsb2NrIG1hdGNoIHBhc3MgbG9hZCBhbmNob3J8NSBhbnRpc3Bvb2Z8MTAgc2V0IHRhYmxlJyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdpbiBvdXQgbG9nIHF1aWNrIG9uIHJkb21haW4gaW5ldCBpbmV0NiBwcm90byBmcm9tIHBvcnQgb3MgdG8gcm91dGUnICtcbiAgICAgICAgJ2FsbG93LW9wdHMgZGl2ZXJ0LXBhY2tldCBkaXZlcnQtcmVwbHkgZGl2ZXJ0LXRvIGZsYWdzIGdyb3VwIGljbXAtdHlwZScgK1xuICAgICAgICAnaWNtcDYtdHlwZSBsYWJlbCBvbmNlIHByb2JhYmlsaXR5IHJlY2lldmVkLW9uIHJ0YWJsZSBwcmlvIHF1ZXVlJyArXG4gICAgICAgICd0b3MgdGFnIHRhZ2dlZCB1c2VyIGtlZXAgZnJhZ21lbnQgZm9yIG9zIGRyb3AnICtcbiAgICAgICAgJ2FmLXRvfDEwIGJpbmF0LXRvfDEwIG5hdC10b3wxMCByZHItdG98MTAgYml0bWFzayBsZWFzdC1zdGF0cyByYW5kb20gcm91bmQtcm9iaW4nICtcbiAgICAgICAgJ3NvdXJjZS1oYXNoIHN0YXRpYy1wb3J0JyArXG4gICAgICAgICdkdXAtdG8gcmVwbHktdG8gcm91dGUtdG8nICtcbiAgICAgICAgJ3BhcmVudCBiYW5kd2lkdGggZGVmYXVsdCBtaW4gbWF4IHFsaW1pdCcgK1xuICAgICAgICAnYmxvY2stcG9saWN5IGRlYnVnIGZpbmdlcnByaW50cyBob3N0aWQgbGltaXQgbG9naW50ZXJmYWNlIG9wdGltaXphdGlvbicgK1xuICAgICAgICAncmVhc3NlbWJsZSBydWxlc2V0LW9wdGltaXphdGlvbiBiYXNpYyBub25lIHByb2ZpbGUgc2tpcCBzdGF0ZS1kZWZhdWx0cycgK1xuICAgICAgICAnc3RhdGUtcG9saWN5IHRpbWVvdXQnICtcbiAgICAgICAgJ2NvbnN0IGNvdW50ZXJzIHBlcnNpc3QnICtcbiAgICAgICAgJ25vIG1vZHVsYXRlIHN5bnByb3h5IHN0YXRlfDUgZmxvYXRpbmcgaWYtYm91bmQgbm8tc3luYyBwZmxvd3wxMCBzbG9wcHknICtcbiAgICAgICAgJ3NvdXJjZS10cmFjayBnbG9iYWwgcnVsZSBtYXgtc3JjLW5vZGVzIG1heC1zcmMtc3RhdGVzIG1heC1zcmMtY29ubicgK1xuICAgICAgICAnbWF4LXNyYy1jb25uLXJhdGUgb3ZlcmxvYWQgZmx1c2gnICtcbiAgICAgICAgJ3NjcnVifDUgbWF4LW1zcyBtaW4tdHRsIG5vLWRmfDEwIHJhbmRvbS1pZCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnYWxsIGFueSBuby1yb3V0ZSBzZWxmIHVycGYtZmFpbGVkIGVncmVzc3w1IHVua25vd24nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgTUFDUk8sXG4gICAgICBUQUJMRVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy0tJywgJyQnKTtcbiAgdmFyIFVOUVVPVEVEX0lERU5UID0gJ1thLXpBLVpfXVthLXpBLVpfMC05JF0qJztcbiAgdmFyIERPTExBUl9TVFJJTkcgPSAnXFxcXCQoW2EtekEtWl9dP3xbYS16QS1aX11bYS16QS1aXzAtOV0qKVxcXFwkJztcbiAgdmFyIExBQkVMID0gJzw8XFxcXHMqJyArIFVOUVVPVEVEX0lERU5UICsgJ1xcXFxzKj4+JztcblxuICB2YXIgU1FMX0tXID1cbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9zcWwta2V5d29yZHMtYXBwZW5kaXguaHRtbFxuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL3NxbC1jb21tYW5kcy5odG1sXG4gICAgLy8gU1FMIGNvbW1hbmRzIChzdGFydGluZyB3b3JkcylcbiAgICAnQUJPUlQgQUxURVIgQU5BTFlaRSBCRUdJTiBDQUxMIENIRUNLUE9JTlR8MTAgQ0xPU0UgQ0xVU1RFUiBDT01NRU5UIENPTU1JVCBDT1BZIENSRUFURSBERUFMTE9DQVRFIERFQ0xBUkUgJyArXG4gICAgJ0RFTEVURSBESVNDQVJEIERPIERST1AgRU5EIEVYRUNVVEUgRVhQTEFJTiBGRVRDSCBHUkFOVCBJTVBPUlQgSU5TRVJUIExJU1RFTiBMT0FEIExPQ0sgTU9WRSBOT1RJRlkgJyArXG4gICAgJ1BSRVBBUkUgUkVBU1NJR058MTAgUkVGUkVTSCBSRUlOREVYIFJFTEVBU0UgUkVTRVQgUkVWT0tFIFJPTExCQUNLIFNBVkVQT0lOVCBTRUNVUklUWSBTRUxFQ1QgU0VUIFNIT1cgJyArXG4gICAgJ1NUQVJUIFRSVU5DQVRFIFVOTElTVEVOfDEwIFVQREFURSBWQUNVVU18MTAgVkFMVUVTICcgK1xuICAgIC8vIFNRTCBjb21tYW5kcyAob3RoZXJzKVxuICAgICdBR0dSRUdBVEUgQ09MTEFUSU9OIENPTlZFUlNJT058MTAgREFUQUJBU0UgREVGQVVMVCBQUklWSUxFR0VTIERPTUFJTiBUUklHR0VSIEVYVEVOU0lPTiBGT1JFSUdOICcgK1xuICAgICdXUkFQUEVSfDEwIFRBQkxFIEZVTkNUSU9OIEdST1VQIExBTkdVQUdFIExBUkdFIE9CSkVDVCBNQVRFUklBTElaRUQgVklFVyBPUEVSQVRPUiBDTEFTUyAnICtcbiAgICAnRkFNSUxZIFBPTElDWSBQVUJMSUNBVElPTnwxMCBST0xFIFJVTEUgU0NIRU1BIFNFUVVFTkNFIFNFUlZFUiBTVEFUSVNUSUNTIFNVQlNDUklQVElPTiBTWVNURU0gJyArXG4gICAgJ1RBQkxFU1BBQ0UgQ09ORklHVVJBVElPTiBESUNUSU9OQVJZIFBBUlNFUiBURU1QTEFURSBUWVBFIFVTRVIgTUFQUElORyBQUkVQQVJFRCBBQ0NFU1MgJyArXG4gICAgJ01FVEhPRCBDQVNUIEFTIFRSQU5TRk9STSBUUkFOU0FDVElPTiBPV05FRCBUTyBJTlRPIFNFU1NJT04gQVVUSE9SSVpBVElPTiAnICtcbiAgICAnSU5ERVggUFJPQ0VEVVJFIEFTU0VSVElPTiAnICtcbiAgICAvLyBhZGRpdGlvbmFsIHJlc2VydmVkIGtleSB3b3Jkc1xuICAgICdBTEwgQU5BTFlTRSBBTkQgQU5ZIEFSUkFZIEFTQyBBU1lNTUVUUklDfDEwIEJPVEggQ0FTRSBDSEVDSyAnICtcbiAgICAnQ09MTEFURSBDT0xVTU4gQ09OQ1VSUkVOVExZfDEwIENPTlNUUkFJTlQgQ1JPU1MgJyArXG4gICAgJ0RFRkVSUkFCTEUgUkFOR0UgJyArXG4gICAgJ0RFU0MgRElTVElOQ1QgRUxTRSBFWENFUFQgRk9SIEZSRUVaRXwxMCBGUk9NIEZVTEwgSEFWSU5HICcgK1xuICAgICdJTElLRSBJTiBJTklUSUFMTFkgSU5ORVIgSU5URVJTRUNUIElTIElTTlVMTCBKT0lOIExBVEVSQUwgTEVBRElORyBMSUtFIExJTUlUICcgK1xuICAgICdOQVRVUkFMIE5PVCBOT1ROVUxMIE5VTEwgT0ZGU0VUIE9OIE9OTFkgT1IgT1JERVIgT1VURVIgT1ZFUkxBUFMgUExBQ0lORyBQUklNQVJZICcgK1xuICAgICdSRUZFUkVOQ0VTIFJFVFVSTklORyBTSU1JTEFSIFNPTUUgU1lNTUVUUklDIFRBQkxFU0FNUExFIFRIRU4gJyArXG4gICAgJ1RSQUlMSU5HIFVOSU9OIFVOSVFVRSBVU0lORyBWQVJJQURJQ3wxMCBWRVJCT1NFIFdIRU4gV0hFUkUgV0lORE9XIFdJVEggJyArXG4gICAgLy8gc29tZSBvZiBub24tcmVzZXJ2ZWQgKHdoaWNoIGFyZSB1c2VkIGluIGNsYXVzZXMgb3IgYXMgUEwvcGdTUUwga2V5d29yZClcbiAgICAnQlkgUkVUVVJOUyBJTk9VVCBPVVQgU0VUT0Z8MTAgSUYgU1RSSUNUIENVUlJFTlQgQ09OVElOVUUgT1dORVIgTE9DQVRJT04gT1ZFUiBQQVJUSVRJT04gV0lUSElOICcgK1xuICAgICdCRVRXRUVOIEVTQ0FQRSBFWFRFUk5BTCBJTlZPS0VSIERFRklORVIgV09SSyBSRU5BTUUgVkVSU0lPTiBDT05ORUNUSU9OIENPTk5FQ1QgJyArXG4gICAgJ1RBQkxFUyBURU1QIFRFTVBPUkFSWSBGVU5DVElPTlMgU0VRVUVOQ0VTIFRZUEVTIFNDSEVNQVMgT1BUSU9OIENBU0NBREUgUkVTVFJJQ1QgQUREIEFETUlOICcgK1xuICAgICdFWElTVFMgVkFMSUQgVkFMSURBVEUgRU5BQkxFIERJU0FCTEUgUkVQTElDQXwxMCBBTFdBWVMgUEFTU0lORyBDT0xVTU5TIFBBVEggJyArXG4gICAgJ1JFRiBWQUxVRSBPVkVSUklESU5HIElNTVVUQUJMRSBTVEFCTEUgVk9MQVRJTEUgQkVGT1JFIEFGVEVSIEVBQ0ggUk9XIFBST0NFRFVSQUwgJyArXG4gICAgJ1JPVVRJTkUgTk8gSEFORExFUiBWQUxJREFUT1IgT1BUSU9OUyBTVE9SQUdFIE9JRFN8MTAgV0lUSE9VVCBJTkhFUklUIERFUEVORFMgQ0FMTEVEICcgK1xuICAgICdJTlBVVCBMRUFLUFJPT0Z8MTAgQ09TVCBST1dTIE5PV0FJVCBTRUFSQ0ggVU5USUwgRU5DUllQVEVEfDEwIFBBU1NXT1JEIENPTkZMSUNUfDEwICcgK1xuICAgICdJTlNURUFEIElOSEVSSVRTIENIQVJBQ1RFUklTVElDUyBXUklURSBDVVJTT1IgQUxTTyBTVEFURU1FTlQgU0hBUkUgRVhDTFVTSVZFIElOTElORSAnICtcbiAgICAnSVNPTEFUSU9OIFJFUEVBVEFCTEUgUkVBRCBDT01NSVRURUQgU0VSSUFMSVpBQkxFIFVOQ09NTUlUVEVEIExPQ0FMIEdMT0JBTCBTUUwgUFJPQ0VEVVJFUyAnICtcbiAgICAnUkVDVVJTSVZFIFNOQVBTSE9UIFJPTExVUCBDVUJFIFRSVVNURUR8MTAgSU5DTFVERSBGT0xMT1dJTkcgUFJFQ0VESU5HIFVOQk9VTkRFRCBSQU5HRSBHUk9VUFMgJyArXG4gICAgJ1VORU5DUllQVEVEfDEwIFNZU0lEIEZPUk1BVCBERUxJTUlURVIgSEVBREVSIFFVT1RFIEVOQ09ESU5HIEZJTFRFUiBPRkYgJyArXG4gICAgLy8gc29tZSBwYXJhbWV0ZXJzIG9mIFZBQ1VVTS9BTkFMWVpFL0VYUExBSU5cbiAgICAnRk9SQ0VfUVVPVEUgRk9SQ0VfTk9UX05VTEwgRk9SQ0VfTlVMTCBDT1NUUyBCVUZGRVJTIFRJTUlORyBTVU1NQVJZIERJU0FCTEVfUEFHRV9TS0lQUElORyAnICtcbiAgICAvL1xuICAgICdSRVNUQVJUIENZQ0xFIEdFTkVSQVRFRCBJREVOVElUWSBERUZFUlJFRCBJTU1FRElBVEUgTEVWRUwgTE9HR0VEIFVOTE9HR0VEICcgK1xuICAgICdPRiBOT1RISU5HIE5PTkUgRVhDTFVERSBBVFRSSUJVVEUgJyArXG4gICAgLy8gZnJvbSBHUkFOVCAobm90IGtleXdvcmRzIGFjdHVhbGx5KVxuICAgICdVU0FHRSBST1VUSU5FUyAnICtcbiAgICAvLyBhY3R1YWxseSBsaXRlcmFscywgYnV0IGxvb2sgYmV0dGVyIHRoaXMgd2F5IChkdWUgdG8gSVMgVFJVRSwgSVMgRkFMU0UsIElTTlVMTCBldGMpXG4gICAgJ1RSVUUgRkFMU0UgTkFOIElORklOSVRZICc7XG5cbiAgdmFyIFJPTEVfQVRUUlMgPSAvLyBvbmx5IHRob3NlIG5vdCBpbiBrZXl3cm9kcyBhbHJlYWR5XG4gICAgJ1NVUEVSVVNFUiBOT1NVUEVSVVNFUiBDUkVBVEVEQiBOT0NSRUFURURCIENSRUFURVJPTEUgTk9DUkVBVEVST0xFIElOSEVSSVQgTk9JTkhFUklUICcgK1xuICAgICdMT0dJTiBOT0xPR0lOIFJFUExJQ0FUSU9OIE5PUkVQTElDQVRJT04gQllQQVNTUkxTIE5PQllQQVNTUkxTICc7XG5cbiAgdmFyIFBMUEdTUUxfS1cgPVxuICAgICdBTElBUyBCRUdJTiBDT05TVEFOVCBERUNMQVJFIEVORCBFWENFUFRJT04gUkVUVVJOIFBFUkZPUk18MTAgUkFJU0UgR0VUIERJQUdOT1NUSUNTICcgK1xuICAgICdTVEFDS0VEfDEwIEZPUkVBQ0ggTE9PUCBFTFNJRiBFWElUIFdISUxFIFJFVkVSU0UgU0xJQ0UgREVCVUcgTE9HIElORk8gTk9USUNFIFdBUk5JTkcgQVNTRVJUICcgK1xuICAgICdPUEVOICc7XG5cbiAgdmFyIFRZUEVTID1cbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9kYXRhdHlwZS5odG1sXG4gICAgJ0JJR0lOVCBJTlQ4IEJJR1NFUklBTCBTRVJJQUw4IEJJVCBWQVJZSU5HIFZBUkJJVCBCT09MRUFOIEJPT0wgQk9YIEJZVEVBIENIQVJBQ1RFUiBDSEFSIFZBUkNIQVIgJyArXG4gICAgJ0NJRFIgQ0lSQ0xFIERBVEUgRE9VQkxFIFBSRUNJU0lPTiBGTE9BVDggRkxPQVQgSU5FVCBJTlRFR0VSIElOVCBJTlQ0IElOVEVSVkFMIEpTT04gSlNPTkIgTElORSBMU0VHfDEwICcgK1xuICAgICdNQUNBRERSIE1BQ0FERFI4IE1PTkVZIE5VTUVSSUMgREVDIERFQ0lNQUwgUEFUSCBQT0lOVCBQT0xZR09OIFJFQUwgRkxPQVQ0IFNNQUxMSU5UIElOVDIgJyArXG4gICAgJ1NNQUxMU0VSSUFMfDEwIFNFUklBTDJ8MTAgU0VSSUFMfDEwIFNFUklBTDR8MTAgVEVYVCBUSU1FIFpPTkUgVElNRVRafDEwIFRJTUVTVEFNUCBUSU1FU1RBTVBUWnwxMCBUU1FVRVJZfDEwIFRTVkVDVE9SfDEwICcgK1xuICAgICdUWElEX1NOQVBTSE9UfDEwIFVVSUQgWE1MIE5BVElPTkFMIE5DSEFSICcgK1xuICAgICdJTlQ0UkFOR0V8MTAgSU5UOFJBTkdFfDEwIE5VTVJBTkdFfDEwIFRTUkFOR0V8MTAgVFNUWlJBTkdFfDEwIERBVEVSQU5HRXwxMCAnICtcbiAgICAvLyBwc2V1ZG90eXBlc1xuICAgICdBTllFTEVNRU5UIEFOWUFSUkFZIEFOWU5PTkFSUkFZIEFOWUVOVU0gQU5ZUkFOR0UgQ1NUUklORyBJTlRFUk5BTCAnICtcbiAgICAnUkVDT1JEIFBHX0RETF9DT01NQU5EIFZPSUQgVU5LTk9XTiBPUEFRVUUgUkVGQ1VSU09SICcgK1xuICAgIC8vIHNwZWMuIHR5cGVcbiAgICAnTkFNRSAnICtcbiAgICAvLyBPSUQtdHlwZXNcbiAgICAnT0lEIFJFR1BST0N8MTAgUkVHUFJPQ0VEVVJFfDEwIFJFR09QRVJ8MTAgUkVHT1BFUkFUT1J8MTAgUkVHQ0xBU1N8MTAgUkVHVFlQRXwxMCBSRUdST0xFfDEwICcgK1xuICAgICdSRUdOQU1FU1BBQ0V8MTAgUkVHQ09ORklHfDEwIFJFR0RJQ1RJT05BUll8MTAgJzsvLyArXG4gICAgLy8gc29tZSB0eXBlcyBmcm9tIHN0YW5kYXJkIGV4dGVuc2lvbnNcbiAgICAnSFNUT1JFfDEwIExPIExUUkVFfDEwICc7XG5cbiAgdmFyIFRZUEVTX1JFID1cbiAgICBUWVBFUy50cmltKClcbiAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAubWFwKCBmdW5jdGlvbih2YWwpIHsgcmV0dXJuIHZhbC5zcGxpdCgnfCcpWzBdOyB9IClcbiAgICAgICAgIC5qb2luKCd8Jyk7XG5cbiAgdmFyIFNRTF9CSSA9XG4gICAgJ0NVUlJFTlRfVElNRSBDVVJSRU5UX1RJTUVTVEFNUCBDVVJSRU5UX1VTRVIgQ1VSUkVOVF9DQVRBTE9HfDEwIENVUlJFTlRfREFURSBMT0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgJyArXG4gICAgJ0NVUlJFTlRfUk9MRXwxMCBDVVJSRU5UX1NDSEVNQXwxMCBTRVNTSU9OX1VTRVIgUFVCTElDICc7XG5cbiAgdmFyIFBMUEdTUUxfQkkgPVxuICAgICdGT1VORCBORVcgT0xEIFRHX05BTUV8MTAgVEdfV0hFTnwxMCBUR19MRVZFTHwxMCBUR19PUHwxMCBUR19SRUxJRHwxMCBUR19SRUxOQU1FfDEwICcgK1xuICAgICdUR19UQUJMRV9OQU1FfDEwIFRHX1RBQkxFX1NDSEVNQXwxMCBUR19OQVJHU3wxMCBUR19BUkdWfDEwIFRHX0VWRU5UfDEwIFRHX1RBR3wxMCAnICtcbiAgICAvLyBnZXQgZGlhZ25vc3RpY3NcbiAgICAnUk9XX0NPVU5UIFJFU1VMVF9PSUR8MTAgUEdfQ09OVEVYVHwxMCBSRVRVUk5FRF9TUUxTVEFURSBDT0xVTU5fTkFNRSBDT05TVFJBSU5UX05BTUUgJyArXG4gICAgJ1BHX0RBVEFUWVBFX05BTUV8MTAgTUVTU0FHRV9URVhUIFRBQkxFX05BTUUgU0NIRU1BX05BTUUgUEdfRVhDRVBUSU9OX0RFVEFJTHwxMCAnICtcbiAgICAnUEdfRVhDRVBUSU9OX0hJTlR8MTAgUEdfRVhDRVBUSU9OX0NPTlRFWFR8MTAgJztcblxuICB2YXIgUExQR1NRTF9FWENFUFRJT05TID1cbiAgICAvLyBleGNlcHRpb25zIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvY3VycmVudC9zdGF0aWMvZXJyY29kZXMtYXBwZW5kaXguaHRtbFxuICAgICdTUUxTVEFURSBTUUxFUlJNfDEwICcgK1xuICAgICdTVUNDRVNTRlVMX0NPTVBMRVRJT04gV0FSTklORyBEWU5BTUlDX1JFU1VMVF9TRVRTX1JFVFVSTkVEIElNUExJQ0lUX1pFUk9fQklUX1BBRERJTkcgJyArXG4gICAgJ05VTExfVkFMVUVfRUxJTUlOQVRFRF9JTl9TRVRfRlVOQ1RJT04gUFJJVklMRUdFX05PVF9HUkFOVEVEIFBSSVZJTEVHRV9OT1RfUkVWT0tFRCAnICtcbiAgICAnU1RSSU5HX0RBVEFfUklHSFRfVFJVTkNBVElPTiBERVBSRUNBVEVEX0ZFQVRVUkUgTk9fREFUQSBOT19BRERJVElPTkFMX0RZTkFNSUNfUkVTVUxUX1NFVFNfUkVUVVJORUQgJyArXG4gICAgJ1NRTF9TVEFURU1FTlRfTk9UX1lFVF9DT01QTEVURSBDT05ORUNUSU9OX0VYQ0VQVElPTiBDT05ORUNUSU9OX0RPRVNfTk9UX0VYSVNUIENPTk5FQ1RJT05fRkFJTFVSRSAnICtcbiAgICAnU1FMQ0xJRU5UX1VOQUJMRV9UT19FU1RBQkxJU0hfU1FMQ09OTkVDVElPTiBTUUxTRVJWRVJfUkVKRUNURURfRVNUQUJMSVNITUVOVF9PRl9TUUxDT05ORUNUSU9OICcgK1xuICAgICdUUkFOU0FDVElPTl9SRVNPTFVUSU9OX1VOS05PV04gUFJPVE9DT0xfVklPTEFUSU9OIFRSSUdHRVJFRF9BQ1RJT05fRVhDRVBUSU9OIEZFQVRVUkVfTk9UX1NVUFBPUlRFRCAnICtcbiAgICAnSU5WQUxJRF9UUkFOU0FDVElPTl9JTklUSUFUSU9OIExPQ0FUT1JfRVhDRVBUSU9OIElOVkFMSURfTE9DQVRPUl9TUEVDSUZJQ0FUSU9OIElOVkFMSURfR1JBTlRPUiAnICtcbiAgICAnSU5WQUxJRF9HUkFOVF9PUEVSQVRJT04gSU5WQUxJRF9ST0xFX1NQRUNJRklDQVRJT04gRElBR05PU1RJQ1NfRVhDRVBUSU9OICcgK1xuICAgICdTVEFDS0VEX0RJQUdOT1NUSUNTX0FDQ0VTU0VEX1dJVEhPVVRfQUNUSVZFX0hBTkRMRVIgQ0FTRV9OT1RfRk9VTkQgQ0FSRElOQUxJVFlfVklPTEFUSU9OICcgK1xuICAgICdEQVRBX0VYQ0VQVElPTiBBUlJBWV9TVUJTQ1JJUFRfRVJST1IgQ0hBUkFDVEVSX05PVF9JTl9SRVBFUlRPSVJFIERBVEVUSU1FX0ZJRUxEX09WRVJGTE9XICcgK1xuICAgICdESVZJU0lPTl9CWV9aRVJPIEVSUk9SX0lOX0FTU0lHTk1FTlQgRVNDQVBFX0NIQVJBQ1RFUl9DT05GTElDVCBJTkRJQ0FUT1JfT1ZFUkZMT1cgJyArXG4gICAgJ0lOVEVSVkFMX0ZJRUxEX09WRVJGTE9XIElOVkFMSURfQVJHVU1FTlRfRk9SX0xPR0FSSVRITSBJTlZBTElEX0FSR1VNRU5UX0ZPUl9OVElMRV9GVU5DVElPTiAnICtcbiAgICAnSU5WQUxJRF9BUkdVTUVOVF9GT1JfTlRIX1ZBTFVFX0ZVTkNUSU9OIElOVkFMSURfQVJHVU1FTlRfRk9SX1BPV0VSX0ZVTkNUSU9OICcgK1xuICAgICdJTlZBTElEX0FSR1VNRU5UX0ZPUl9XSURUSF9CVUNLRVRfRlVOQ1RJT04gSU5WQUxJRF9DSEFSQUNURVJfVkFMVUVfRk9SX0NBU1QgJyArXG4gICAgJ0lOVkFMSURfREFURVRJTUVfRk9STUFUIElOVkFMSURfRVNDQVBFX0NIQVJBQ1RFUiBJTlZBTElEX0VTQ0FQRV9PQ1RFVCBJTlZBTElEX0VTQ0FQRV9TRVFVRU5DRSAnICtcbiAgICAnTk9OU1RBTkRBUkRfVVNFX09GX0VTQ0FQRV9DSEFSQUNURVIgSU5WQUxJRF9JTkRJQ0FUT1JfUEFSQU1FVEVSX1ZBTFVFIElOVkFMSURfUEFSQU1FVEVSX1ZBTFVFICcgK1xuICAgICdJTlZBTElEX1JFR1VMQVJfRVhQUkVTU0lPTiBJTlZBTElEX1JPV19DT1VOVF9JTl9MSU1JVF9DTEFVU0UgJyArXG4gICAgJ0lOVkFMSURfUk9XX0NPVU5UX0lOX1JFU1VMVF9PRkZTRVRfQ0xBVVNFIElOVkFMSURfVEFCTEVTQU1QTEVfQVJHVU1FTlQgSU5WQUxJRF9UQUJMRVNBTVBMRV9SRVBFQVQgJyArXG4gICAgJ0lOVkFMSURfVElNRV9aT05FX0RJU1BMQUNFTUVOVF9WQUxVRSBJTlZBTElEX1VTRV9PRl9FU0NBUEVfQ0hBUkFDVEVSIE1PU1RfU1BFQ0lGSUNfVFlQRV9NSVNNQVRDSCAnICtcbiAgICAnTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCBOVUxMX1ZBTFVFX05PX0lORElDQVRPUl9QQVJBTUVURVIgTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UgJyArXG4gICAgJ1NFUVVFTkNFX0dFTkVSQVRPUl9MSU1JVF9FWENFRURFRCBTVFJJTkdfREFUQV9MRU5HVEhfTUlTTUFUQ0ggU1RSSU5HX0RBVEFfUklHSFRfVFJVTkNBVElPTiAnICtcbiAgICAnU1VCU1RSSU5HX0VSUk9SIFRSSU1fRVJST1IgVU5URVJNSU5BVEVEX0NfU1RSSU5HIFpFUk9fTEVOR1RIX0NIQVJBQ1RFUl9TVFJJTkcgJyArXG4gICAgJ0ZMT0FUSU5HX1BPSU5UX0VYQ0VQVElPTiBJTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04gSU5WQUxJRF9CSU5BUllfUkVQUkVTRU5UQVRJT04gJyArXG4gICAgJ0JBRF9DT1BZX0ZJTEVfRk9STUFUIFVOVFJBTlNMQVRBQkxFX0NIQVJBQ1RFUiBOT1RfQU5fWE1MX0RPQ1VNRU5UIElOVkFMSURfWE1MX0RPQ1VNRU5UICcgK1xuICAgICdJTlZBTElEX1hNTF9DT05URU5UIElOVkFMSURfWE1MX0NPTU1FTlQgSU5WQUxJRF9YTUxfUFJPQ0VTU0lOR19JTlNUUlVDVElPTiAnICtcbiAgICAnSU5URUdSSVRZX0NPTlNUUkFJTlRfVklPTEFUSU9OIFJFU1RSSUNUX1ZJT0xBVElPTiBOT1RfTlVMTF9WSU9MQVRJT04gRk9SRUlHTl9LRVlfVklPTEFUSU9OICcgK1xuICAgICdVTklRVUVfVklPTEFUSU9OIENIRUNLX1ZJT0xBVElPTiBFWENMVVNJT05fVklPTEFUSU9OIElOVkFMSURfQ1VSU09SX1NUQVRFICcgK1xuICAgICdJTlZBTElEX1RSQU5TQUNUSU9OX1NUQVRFIEFDVElWRV9TUUxfVFJBTlNBQ1RJT04gQlJBTkNIX1RSQU5TQUNUSU9OX0FMUkVBRFlfQUNUSVZFICcgK1xuICAgICdIRUxEX0NVUlNPUl9SRVFVSVJFU19TQU1FX0lTT0xBVElPTl9MRVZFTCBJTkFQUFJPUFJJQVRFX0FDQ0VTU19NT0RFX0ZPUl9CUkFOQ0hfVFJBTlNBQ1RJT04gJyArXG4gICAgJ0lOQVBQUk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9CUkFOQ0hfVFJBTlNBQ1RJT04gJyArXG4gICAgJ05PX0FDVElWRV9TUUxfVFJBTlNBQ1RJT05fRk9SX0JSQU5DSF9UUkFOU0FDVElPTiBSRUFEX09OTFlfU1FMX1RSQU5TQUNUSU9OICcgK1xuICAgICdTQ0hFTUFfQU5EX0RBVEFfU1RBVEVNRU5UX01JWElOR19OT1RfU1VQUE9SVEVEIE5PX0FDVElWRV9TUUxfVFJBTlNBQ1RJT04gJyArXG4gICAgJ0lOX0ZBSUxFRF9TUUxfVFJBTlNBQ1RJT04gSURMRV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQgSU5WQUxJRF9TUUxfU1RBVEVNRU5UX05BTUUgJyArXG4gICAgJ1RSSUdHRVJFRF9EQVRBX0NIQU5HRV9WSU9MQVRJT04gSU5WQUxJRF9BVVRIT1JJWkFUSU9OX1NQRUNJRklDQVRJT04gSU5WQUxJRF9QQVNTV09SRCAnICtcbiAgICAnREVQRU5ERU5UX1BSSVZJTEVHRV9ERVNDUklQVE9SU19TVElMTF9FWElTVCBERVBFTkRFTlRfT0JKRUNUU19TVElMTF9FWElTVCAnICtcbiAgICAnSU5WQUxJRF9UUkFOU0FDVElPTl9URVJNSU5BVElPTiBTUUxfUk9VVElORV9FWENFUFRJT04gRlVOQ1RJT05fRVhFQ1VURURfTk9fUkVUVVJOX1NUQVRFTUVOVCAnICtcbiAgICAnTU9ESUZZSU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgUFJPSElCSVRFRF9TUUxfU1RBVEVNRU5UX0FUVEVNUFRFRCAnICtcbiAgICAnUkVBRElOR19TUUxfREFUQV9OT1RfUEVSTUlUVEVEIElOVkFMSURfQ1VSU09SX05BTUUgRVhURVJOQUxfUk9VVElORV9FWENFUFRJT04gJyArXG4gICAgJ0NPTlRBSU5JTkdfU1FMX05PVF9QRVJNSVRURUQgTU9ESUZZSU5HX1NRTF9EQVRBX05PVF9QRVJNSVRURUQgJyArXG4gICAgJ1BST0hJQklURURfU1FMX1NUQVRFTUVOVF9BVFRFTVBURUQgUkVBRElOR19TUUxfREFUQV9OT1RfUEVSTUlUVEVEICcgK1xuICAgICdFWFRFUk5BTF9ST1VUSU5FX0lOVk9DQVRJT05fRVhDRVBUSU9OIElOVkFMSURfU1FMU1RBVEVfUkVUVVJORUQgTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCAnICtcbiAgICAnVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCBTUkZfUFJPVE9DT0xfVklPTEFURUQgRVZFTlRfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCAnICtcbiAgICAnU0FWRVBPSU5UX0VYQ0VQVElPTiBJTlZBTElEX1NBVkVQT0lOVF9TUEVDSUZJQ0FUSU9OIElOVkFMSURfQ0FUQUxPR19OQU1FICcgK1xuICAgICdJTlZBTElEX1NDSEVNQV9OQU1FIFRSQU5TQUNUSU9OX1JPTExCQUNLIFRSQU5TQUNUSU9OX0lOVEVHUklUWV9DT05TVFJBSU5UX1ZJT0xBVElPTiAnICtcbiAgICAnU0VSSUFMSVpBVElPTl9GQUlMVVJFIFNUQVRFTUVOVF9DT01QTEVUSU9OX1VOS05PV04gREVBRExPQ0tfREVURUNURUQgJyArXG4gICAgJ1NZTlRBWF9FUlJPUl9PUl9BQ0NFU1NfUlVMRV9WSU9MQVRJT04gU1lOVEFYX0VSUk9SIElOU1VGRklDSUVOVF9QUklWSUxFR0UgQ0FOTk9UX0NPRVJDRSAnICtcbiAgICAnR1JPVVBJTkdfRVJST1IgV0lORE9XSU5HX0VSUk9SIElOVkFMSURfUkVDVVJTSU9OIElOVkFMSURfRk9SRUlHTl9LRVkgSU5WQUxJRF9OQU1FICcgK1xuICAgICdOQU1FX1RPT19MT05HIFJFU0VSVkVEX05BTUUgREFUQVRZUEVfTUlTTUFUQ0ggSU5ERVRFUk1JTkFURV9EQVRBVFlQRSBDT0xMQVRJT05fTUlTTUFUQ0ggJyArXG4gICAgJ0lOREVURVJNSU5BVEVfQ09MTEFUSU9OIFdST05HX09CSkVDVF9UWVBFIEdFTkVSQVRFRF9BTFdBWVMgVU5ERUZJTkVEX0NPTFVNTiAnICtcbiAgICAnVU5ERUZJTkVEX0ZVTkNUSU9OIFVOREVGSU5FRF9UQUJMRSBVTkRFRklORURfUEFSQU1FVEVSIFVOREVGSU5FRF9PQkpFQ1QgJyArXG4gICAgJ0RVUExJQ0FURV9DT0xVTU4gRFVQTElDQVRFX0NVUlNPUiBEVVBMSUNBVEVfREFUQUJBU0UgRFVQTElDQVRFX0ZVTkNUSU9OICcgK1xuICAgICdEVVBMSUNBVEVfUFJFUEFSRURfU1RBVEVNRU5UIERVUExJQ0FURV9TQ0hFTUEgRFVQTElDQVRFX1RBQkxFIERVUExJQ0FURV9BTElBUyAnICtcbiAgICAnRFVQTElDQVRFX09CSkVDVCBBTUJJR1VPVVNfQ09MVU1OIEFNQklHVU9VU19GVU5DVElPTiBBTUJJR1VPVVNfUEFSQU1FVEVSIEFNQklHVU9VU19BTElBUyAnICtcbiAgICAnSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFIElOVkFMSURfQ09MVU1OX0RFRklOSVRJT04gSU5WQUxJRF9DVVJTT1JfREVGSU5JVElPTiAnICtcbiAgICAnSU5WQUxJRF9EQVRBQkFTRV9ERUZJTklUSU9OIElOVkFMSURfRlVOQ1RJT05fREVGSU5JVElPTiAnICtcbiAgICAnSU5WQUxJRF9QUkVQQVJFRF9TVEFURU1FTlRfREVGSU5JVElPTiBJTlZBTElEX1NDSEVNQV9ERUZJTklUSU9OIElOVkFMSURfVEFCTEVfREVGSU5JVElPTiAnICtcbiAgICAnSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiBXSVRIX0NIRUNLX09QVElPTl9WSU9MQVRJT04gSU5TVUZGSUNJRU5UX1JFU09VUkNFUyBESVNLX0ZVTEwgJyArXG4gICAgJ09VVF9PRl9NRU1PUlkgVE9PX01BTllfQ09OTkVDVElPTlMgQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCBQUk9HUkFNX0xJTUlUX0VYQ0VFREVEICcgK1xuICAgICdTVEFURU1FTlRfVE9PX0NPTVBMRVggVE9PX01BTllfQ09MVU1OUyBUT09fTUFOWV9BUkdVTUVOVFMgT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUgJyArXG4gICAgJ09CSkVDVF9JTl9VU0UgQ0FOVF9DSEFOR0VfUlVOVElNRV9QQVJBTSBMT0NLX05PVF9BVkFJTEFCTEUgT1BFUkFUT1JfSU5URVJWRU5USU9OICcgK1xuICAgICdRVUVSWV9DQU5DRUxFRCBBRE1JTl9TSFVURE9XTiBDUkFTSF9TSFVURE9XTiBDQU5OT1RfQ09OTkVDVF9OT1cgREFUQUJBU0VfRFJPUFBFRCAnICtcbiAgICAnU1lTVEVNX0VSUk9SIElPX0VSUk9SIFVOREVGSU5FRF9GSUxFIERVUExJQ0FURV9GSUxFIFNOQVBTSE9UX1RPT19PTEQgQ09ORklHX0ZJTEVfRVJST1IgJyArXG4gICAgJ0xPQ0tfRklMRV9FWElTVFMgRkRXX0VSUk9SIEZEV19DT0xVTU5fTkFNRV9OT1RfRk9VTkQgRkRXX0RZTkFNSUNfUEFSQU1FVEVSX1ZBTFVFX05FRURFRCAnICtcbiAgICAnRkRXX0ZVTkNUSU9OX1NFUVVFTkNFX0VSUk9SIEZEV19JTkNPTlNJU1RFTlRfREVTQ1JJUFRPUl9JTkZPUk1BVElPTiAnICtcbiAgICAnRkRXX0lOVkFMSURfQVRUUklCVVRFX1ZBTFVFIEZEV19JTlZBTElEX0NPTFVNTl9OQU1FIEZEV19JTlZBTElEX0NPTFVNTl9OVU1CRVIgJyArXG4gICAgJ0ZEV19JTlZBTElEX0RBVEFfVFlQRSBGRFdfSU5WQUxJRF9EQVRBX1RZUEVfREVTQ1JJUFRPUlMgJyArXG4gICAgJ0ZEV19JTlZBTElEX0RFU0NSSVBUT1JfRklFTERfSURFTlRJRklFUiBGRFdfSU5WQUxJRF9IQU5ETEUgRkRXX0lOVkFMSURfT1BUSU9OX0lOREVYICcgK1xuICAgICdGRFdfSU5WQUxJRF9PUFRJT05fTkFNRSBGRFdfSU5WQUxJRF9TVFJJTkdfTEVOR1RIX09SX0JVRkZFUl9MRU5HVEggJyArXG4gICAgJ0ZEV19JTlZBTElEX1NUUklOR19GT1JNQVQgRkRXX0lOVkFMSURfVVNFX09GX05VTExfUE9JTlRFUiBGRFdfVE9PX01BTllfSEFORExFUyAnICtcbiAgICAnRkRXX09VVF9PRl9NRU1PUlkgRkRXX05PX1NDSEVNQVMgRkRXX09QVElPTl9OQU1FX05PVF9GT1VORCBGRFdfUkVQTFlfSEFORExFICcgK1xuICAgICdGRFdfU0NIRU1BX05PVF9GT1VORCBGRFdfVEFCTEVfTk9UX0ZPVU5EIEZEV19VTkFCTEVfVE9fQ1JFQVRFX0VYRUNVVElPTiAnICtcbiAgICAnRkRXX1VOQUJMRV9UT19DUkVBVEVfUkVQTFkgRkRXX1VOQUJMRV9UT19FU1RBQkxJU0hfQ09OTkVDVElPTiBQTFBHU1FMX0VSUk9SICcgK1xuICAgICdSQUlTRV9FWENFUFRJT04gTk9fREFUQV9GT1VORCBUT09fTUFOWV9ST1dTIEFTU0VSVF9GQUlMVVJFIElOVEVSTkFMX0VSUk9SIERBVEFfQ09SUlVQVEVEICcgK1xuICAgICdJTkRFWF9DT1JSVVBURUQgJztcblxuICB2YXIgRlVOQ1RJT05TID1cbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtYWdncmVnYXRlLmh0bWxcbiAgICAnQVJSQVlfQUdHIEFWRyBCSVRfQU5EIEJJVF9PUiBCT09MX0FORCBCT09MX09SIENPVU5UIEVWRVJZIEpTT05fQUdHIEpTT05CX0FHRyBKU09OX09CSkVDVF9BR0cgJyArXG4gICAgJ0pTT05CX09CSkVDVF9BR0cgTUFYIE1JTiBNT0RFIFNUUklOR19BR0cgU1VNIFhNTEFHRyAnICtcbiAgICAnQ09SUiBDT1ZBUl9QT1AgQ09WQVJfU0FNUCBSRUdSX0FWR1ggUkVHUl9BVkdZIFJFR1JfQ09VTlQgUkVHUl9JTlRFUkNFUFQgUkVHUl9SMiBSRUdSX1NMT1BFICcgK1xuICAgICdSRUdSX1NYWCBSRUdSX1NYWSBSRUdSX1NZWSBTVERERVYgU1REREVWX1BPUCBTVERERVZfU0FNUCBWQVJJQU5DRSBWQVJfUE9QIFZBUl9TQU1QICcgK1xuICAgICdQRVJDRU5USUxFX0NPTlQgUEVSQ0VOVElMRV9ESVNDICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy13aW5kb3cuaHRtbFxuICAgICdST1dfTlVNQkVSIFJBTksgREVOU0VfUkFOSyBQRVJDRU5UX1JBTksgQ1VNRV9ESVNUIE5USUxFIExBRyBMRUFEIEZJUlNUX1ZBTFVFIExBU1RfVkFMVUUgTlRIX1ZBTFVFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1jb21wYXJpc29uLmh0bWxcbiAgICAnTlVNX05PTk5VTExTIE5VTV9OVUxMUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtbWF0aC5odG1sXG4gICAgJ0FCUyBDQlJUIENFSUwgQ0VJTElORyBERUdSRUVTIERJViBFWFAgRkxPT1IgTE4gTE9HIE1PRCBQSSBQT1dFUiBSQURJQU5TIFJPVU5EIFNDQUxFIFNJR04gU1FSVCAnICtcbiAgICAnVFJVTkMgV0lEVEhfQlVDS0VUICcgK1xuICAgICdSQU5ET00gU0VUU0VFRCAnICtcbiAgICAnQUNPUyBBQ09TRCBBU0lOIEFTSU5EIEFUQU4gQVRBTkQgQVRBTjIgQVRBTjJEIENPUyBDT1NEIENPVCBDT1REIFNJTiBTSU5EIFRBTiBUQU5EICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1zdHJpbmcuaHRtbFxuICAgICdCSVRfTEVOR1RIIENIQVJfTEVOR1RIIENIQVJBQ1RFUl9MRU5HVEggTE9XRVIgT0NURVRfTEVOR1RIIE9WRVJMQVkgUE9TSVRJT04gU1VCU1RSSU5HIFRSRUFUIFRSSU0gVVBQRVIgJyArXG4gICAgJ0FTQ0lJIEJUUklNIENIUiBDT05DQVQgQ09OQ0FUX1dTIENPTlZFUlQgQ09OVkVSVF9GUk9NIENPTlZFUlRfVE8gREVDT0RFIEVOQ09ERSBJTklUQ0FQJyArXG4gICAgJ0xFRlQgTEVOR1RIIExQQUQgTFRSSU0gTUQ1IFBBUlNFX0lERU5UIFBHX0NMSUVOVF9FTkNPRElORyBRVU9URV9JREVOVHwxMCBRVU9URV9MSVRFUkFMfDEwICcgK1xuICAgICdRVU9URV9OVUxMQUJMRXwxMCBSRUdFWFBfTUFUQ0ggUkVHRVhQX01BVENIRVMgUkVHRVhQX1JFUExBQ0UgUkVHRVhQX1NQTElUX1RPX0FSUkFZICcgK1xuICAgICdSRUdFWFBfU1BMSVRfVE9fVEFCTEUgUkVQRUFUIFJFUExBQ0UgUkVWRVJTRSBSSUdIVCBSUEFEIFJUUklNIFNQTElUX1BBUlQgU1RSUE9TIFNVQlNUUiAnICtcbiAgICAnVE9fQVNDSUkgVE9fSEVYIFRSQU5TTEFURSAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtYmluYXJ5c3RyaW5nLmh0bWxcbiAgICAnT0NURVRfTEVOR1RIIEdFVF9CSVQgR0VUX0JZVEUgU0VUX0JJVCBTRVRfQllURSAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtZm9ybWF0dGluZy5odG1sXG4gICAgJ1RPX0NIQVIgVE9fREFURSBUT19OVU1CRVIgVE9fVElNRVNUQU1QICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1kYXRldGltZS5odG1sXG4gICAgJ0FHRSBDTE9DS19USU1FU1RBTVB8MTAgREFURV9QQVJUIERBVEVfVFJVTkMgSVNGSU5JVEUgSlVTVElGWV9EQVlTIEpVU1RJRllfSE9VUlMgSlVTVElGWV9JTlRFUlZBTCAnICtcbiAgICAnTUFLRV9EQVRFIE1BS0VfSU5URVJWQUx8MTAgTUFLRV9USU1FIE1BS0VfVElNRVNUQU1QfDEwIE1BS0VfVElNRVNUQU1QVFp8MTAgTk9XIFNUQVRFTUVOVF9USU1FU1RBTVB8MTAgJyArXG4gICAgJ1RJTUVPRkRBWSBUUkFOU0FDVElPTl9USU1FU1RBTVB8MTAgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWVudW0uaHRtbFxuICAgICdFTlVNX0ZJUlNUIEVOVU1fTEFTVCBFTlVNX1JBTkdFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1nZW9tZXRyeS5odG1sXG4gICAgJ0FSRUEgQ0VOVEVSIERJQU1FVEVSIEhFSUdIVCBJU0NMT1NFRCBJU09QRU4gTlBPSU5UUyBQQ0xPU0UgUE9QRU4gUkFESVVTIFdJRFRIICcgK1xuICAgICdCT1ggQk9VTkRfQk9YIENJUkNMRSBMSU5FIExTRUcgUEFUSCBQT0xZR09OICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1uZXQuaHRtbFxuICAgICdBQkJSRVYgQlJPQURDQVNUIEhPU1QgSE9TVE1BU0sgTUFTS0xFTiBORVRNQVNLIE5FVFdPUksgU0VUX01BU0tMRU4gVEVYVCBJTkVUX1NBTUVfRkFNSUxZJyArXG4gICAgJ0lORVRfTUVSR0UgTUFDQUREUjhfU0VUN0JJVCAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtdGV4dHNlYXJjaC5odG1sXG4gICAgJ0FSUkFZX1RPX1RTVkVDVE9SIEdFVF9DVVJSRU5UX1RTX0NPTkZJRyBOVU1OT0RFIFBMQUlOVE9fVFNRVUVSWSBQSFJBU0VUT19UU1FVRVJZIFdFQlNFQVJDSF9UT19UU1FVRVJZICcgK1xuICAgICdRVUVSWVRSRUUgU0VUV0VJR0hUIFNUUklQIFRPX1RTUVVFUlkgVE9fVFNWRUNUT1IgSlNPTl9UT19UU1ZFQ1RPUiBKU09OQl9UT19UU1ZFQ1RPUiBUU19ERUxFVEUgJyArXG4gICAgJ1RTX0ZJTFRFUiBUU19IRUFETElORSBUU19SQU5LIFRTX1JBTktfQ0QgVFNfUkVXUklURSBUU1FVRVJZX1BIUkFTRSBUU1ZFQ1RPUl9UT19BUlJBWSAnICtcbiAgICAnVFNWRUNUT1JfVVBEQVRFX1RSSUdHRVIgVFNWRUNUT1JfVVBEQVRFX1RSSUdHRVJfQ09MVU1OICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy14bWwuaHRtbFxuICAgICdYTUxDT01NRU5UIFhNTENPTkNBVCBYTUxFTEVNRU5UIFhNTEZPUkVTVCBYTUxQSSBYTUxST09UICcgK1xuICAgICdYTUxFWElTVFMgWE1MX0lTX1dFTExfRk9STUVEIFhNTF9JU19XRUxMX0ZPUk1FRF9ET0NVTUVOVCBYTUxfSVNfV0VMTF9GT1JNRURfQ09OVEVOVCAnICtcbiAgICAnWFBBVEggWFBBVEhfRVhJU1RTIFhNTFRBQkxFIFhNTE5BTUVTUEFDRVMgJyArXG4gICAgJ1RBQkxFX1RPX1hNTCBUQUJMRV9UT19YTUxTQ0hFTUEgVEFCTEVfVE9fWE1MX0FORF9YTUxTQ0hFTUEgJyArXG4gICAgJ1FVRVJZX1RPX1hNTCBRVUVSWV9UT19YTUxTQ0hFTUEgUVVFUllfVE9fWE1MX0FORF9YTUxTQ0hFTUEgJyArXG4gICAgJ0NVUlNPUl9UT19YTUwgQ1VSU09SX1RPX1hNTFNDSEVNQSAnICtcbiAgICAnU0NIRU1BX1RPX1hNTCBTQ0hFTUFfVE9fWE1MU0NIRU1BIFNDSEVNQV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnREFUQUJBU0VfVE9fWE1MIERBVEFCQVNFX1RPX1hNTFNDSEVNQSBEQVRBQkFTRV9UT19YTUxfQU5EX1hNTFNDSEVNQSAnICtcbiAgICAnWE1MQVRUUklCVVRFUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtanNvbi5odG1sXG4gICAgJ1RPX0pTT04gVE9fSlNPTkIgQVJSQVlfVE9fSlNPTiBST1dfVE9fSlNPTiBKU09OX0JVSUxEX0FSUkFZIEpTT05CX0JVSUxEX0FSUkFZIEpTT05fQlVJTERfT0JKRUNUICcgK1xuICAgICdKU09OQl9CVUlMRF9PQkpFQ1QgSlNPTl9PQkpFQ1QgSlNPTkJfT0JKRUNUIEpTT05fQVJSQVlfTEVOR1RIIEpTT05CX0FSUkFZX0xFTkdUSCBKU09OX0VBQ0ggJyArXG4gICAgJ0pTT05CX0VBQ0ggSlNPTl9FQUNIX1RFWFQgSlNPTkJfRUFDSF9URVhUIEpTT05fRVhUUkFDVF9QQVRIIEpTT05CX0VYVFJBQ1RfUEFUSCAnICtcbiAgICAnSlNPTl9PQkpFQ1RfS0VZUyBKU09OQl9PQkpFQ1RfS0VZUyBKU09OX1BPUFVMQVRFX1JFQ09SRCBKU09OQl9QT1BVTEFURV9SRUNPUkQgSlNPTl9QT1BVTEFURV9SRUNPUkRTRVQgJyArXG4gICAgJ0pTT05CX1BPUFVMQVRFX1JFQ09SRFNFVCBKU09OX0FSUkFZX0VMRU1FTlRTIEpTT05CX0FSUkFZX0VMRU1FTlRTIEpTT05fQVJSQVlfRUxFTUVOVFNfVEVYVCAnICtcbiAgICAnSlNPTkJfQVJSQVlfRUxFTUVOVFNfVEVYVCBKU09OX1RZUEVPRiBKU09OQl9UWVBFT0YgSlNPTl9UT19SRUNPUkQgSlNPTkJfVE9fUkVDT1JEIEpTT05fVE9fUkVDT1JEU0VUICcgK1xuICAgICdKU09OQl9UT19SRUNPUkRTRVQgSlNPTl9TVFJJUF9OVUxMUyBKU09OQl9TVFJJUF9OVUxMUyBKU09OQl9TRVQgSlNPTkJfSU5TRVJUIEpTT05CX1BSRVRUWSAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtc2VxdWVuY2UuaHRtbFxuICAgICdDVVJSVkFMIExBU1RWQUwgTkVYVFZBTCBTRVRWQUwgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWNvbmRpdGlvbmFsLmh0bWxcbiAgICAnQ09BTEVTQ0UgTlVMTElGIEdSRUFURVNUIExFQVNUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1hcnJheS5odG1sXG4gICAgJ0FSUkFZX0FQUEVORCBBUlJBWV9DQVQgQVJSQVlfTkRJTVMgQVJSQVlfRElNUyBBUlJBWV9GSUxMIEFSUkFZX0xFTkdUSCBBUlJBWV9MT1dFUiBBUlJBWV9QT1NJVElPTiAnICtcbiAgICAnQVJSQVlfUE9TSVRJT05TIEFSUkFZX1BSRVBFTkQgQVJSQVlfUkVNT1ZFIEFSUkFZX1JFUExBQ0UgQVJSQVlfVE9fU1RSSU5HIEFSUkFZX1VQUEVSIENBUkRJTkFMSVRZICcgK1xuICAgICdTVFJJTkdfVE9fQVJSQVkgVU5ORVNUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1yYW5nZS5odG1sXG4gICAgJ0lTRU1QVFkgTE9XRVJfSU5DIFVQUEVSX0lOQyBMT1dFUl9JTkYgVVBQRVJfSU5GIFJBTkdFX01FUkdFICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy1zcmYuaHRtbFxuICAgICdHRU5FUkFURV9TRVJJRVMgR0VORVJBVEVfU1VCU0NSSVBUUyAnICtcbiAgICAvLyBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9mdW5jdGlvbnMtaW5mby5odG1sXG4gICAgJ0NVUlJFTlRfREFUQUJBU0UgQ1VSUkVOVF9RVUVSWSBDVVJSRU5UX1NDSEVNQXwxMCBDVVJSRU5UX1NDSEVNQVN8MTAgSU5FVF9DTElFTlRfQUREUiBJTkVUX0NMSUVOVF9QT1JUICcgK1xuICAgICdJTkVUX1NFUlZFUl9BRERSIElORVRfU0VSVkVSX1BPUlQgUk9XX1NFQ1VSSVRZX0FDVElWRSBGT1JNQVRfVFlQRSAnICtcbiAgICAnVE9fUkVHQ0xBU1MgVE9fUkVHUFJPQyBUT19SRUdQUk9DRURVUkUgVE9fUkVHT1BFUiBUT19SRUdPUEVSQVRPUiBUT19SRUdUWVBFIFRPX1JFR05BTUVTUEFDRSBUT19SRUdST0xFICcgK1xuICAgICdDT0xfREVTQ1JJUFRJT04gT0JKX0RFU0NSSVBUSU9OIFNIT0JKX0RFU0NSSVBUSU9OICcgK1xuICAgICdUWElEX0NVUlJFTlQgVFhJRF9DVVJSRU5UX0lGX0FTU0lHTkVEIFRYSURfQ1VSUkVOVF9TTkFQU0hPVCBUWElEX1NOQVBTSE9UX1hJUCBUWElEX1NOQVBTSE9UX1hNQVggJyArXG4gICAgJ1RYSURfU05BUFNIT1RfWE1JTiBUWElEX1ZJU0lCTEVfSU5fU05BUFNIT1QgVFhJRF9TVEFUVVMgJyArXG4gICAgLy8gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMS9zdGF0aWMvZnVuY3Rpb25zLWFkbWluLmh0bWxcbiAgICAnQ1VSUkVOVF9TRVRUSU5HIFNFVF9DT05GSUcgQlJJTl9TVU1NQVJJWkVfTkVXX1ZBTFVFUyBCUklOX1NVTU1BUklaRV9SQU5HRSBCUklOX0RFU1VNTUFSSVpFX1JBTkdFICcgK1xuICAgICdHSU5fQ0xFQU5fUEVORElOR19MSVNUICcgK1xuICAgIC8vIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvMTEvc3RhdGljL2Z1bmN0aW9ucy10cmlnZ2VyLmh0bWxcbiAgICAnU1VQUFJFU1NfUkVEVU5EQU5UX1VQREFURVNfVFJJR0dFUiAnICtcbiAgICAvLyBpaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9kZXZlbC9zdGF0aWMvbG8tZnVuY3MuaHRtbFxuICAgICdMT19GUk9NX0JZVEVBIExPX1BVVCBMT19HRVQgTE9fQ1JFQVQgTE9fQ1JFQVRFIExPX1VOTElOSyBMT19JTVBPUlQgTE9fRVhQT1JUIExPUkVBRCBMT1dSSVRFICcgK1xuICAgIC8vXG4gICAgJ0dST1VQSU5HIENBU1QgJztcblxuICAgIHZhciBGVU5DVElPTlNfUkUgPVxuICAgICAgRlVOQ1RJT05TLnRyaW0oKVxuICAgICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgICAgIC5tYXAoIGZ1bmN0aW9uKHZhbCkgeyByZXR1cm4gdmFsLnNwbGl0KCd8JylbMF07IH0gKVxuICAgICAgICAgICAgICAgLmpvaW4oJ3wnKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFsaWFzZXM6IFsncG9zdGdyZXMnLCdwb3N0Z3Jlc3FsJ10sXG4gICAgICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAga2V5d29yZDpcbiAgICAgICAgICAgIFNRTF9LVyArIFBMUEdTUUxfS1cgKyBST0xFX0FUVFJTLFxuICAgICAgICAgIGJ1aWx0X2luOlxuICAgICAgICAgICAgU1FMX0JJICsgUExQR1NRTF9CSSArIFBMUEdTUUxfRVhDRVBUSU9OUyxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gRm9yYmlkIHNvbWUgY3Vuc3RydWN0cyBmcm9tIG90aGVyIGxhbmd1YWdlcyB0byBpbXByb3ZlIGF1dG9kZXRlY3QuIEluIGZhY3RcbiAgICAgICAgLy8gXCJbYS16XTpcIiBpcyBsZWdhbCAoYXMgcGFydCBvZiBhcnJheSBzbGljZSksIGJ1dCBpbXByb2JhYmFsLlxuICAgICAgICBpbGxlZ2FsOiAvOj09fFxcV1xccypcXChcXCp8KF58XFxzKVxcJFthLXpdfHt7fFthLXpdOlxccyokfFxcLlxcLlxcLnxUTzp8RE86LyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIG9mIHNvbWUgd29yZHMsIHdoaWNoIGFyZSByZXNlcnZlZCBvbmx5IGluIHNvbWUgY29udGV4dHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJURVhUXFxzKlNFQVJDSFxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihQUklNQVJZfEZPUkVJR058Rk9SKFxccytOTyk/KVxccytLRVlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJQQVJBTExFTFxccysoVU5TQUZFfFJFU1RSSUNURUR8U0FGRSlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJTVE9SQUdFXFxzKyhQTEFJTnxFWFRFUk5BTHxFWFRFTkRFRHxNQUlOKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYk1BVENIXFxzKyhGVUxMfFBBUlRJQUx8U0lNUExFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYk5VTExTXFxzKyhGSVJTVHxMQVNUKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkVWRU5UXFxzK1RSSUdHRVJcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoTUFQUElOR3xPUilcXHMrUkVQTEFDRVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihGUk9NfFRPKVxccysoUFJPR1JBTXxTVERJTnxTVERPVVQpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFNIQVJFfEVYQ0xVU0lWRSlcXHMrTU9ERVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihMRUZUfFJJR0hUKVxccysoT1VURVJcXHMrKT9KT0lOXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEZFVENIfE1PVkUpXFxzKyhORVhUfFBSSU9SfEZJUlNUfExBU1R8QUJTT0xVVEV8UkVMQVRJVkV8Rk9SV0FSRHxCQUNLV0FSRClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJQUkVTRVJWRVxccytST1dTXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiRElTQ0FSRFxccytQTEFOU1xcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlJFRkVSRU5DSU5HXFxzKyhPTER8TkVXKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNLSVBcXHMrTE9DS0VEXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiR1JPVVBJTkdcXHMrU0VUU1xcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihCSU5BUll8SU5TRU5TSVRJVkV8U0NST0xMfE5PXFxzK1NDUk9MTClcXHMrKENVUlNPUnxGT1IpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFdJVEh8V0lUSE9VVClcXHMrSE9MRFxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYldJVEhcXHMrKENBU0NBREVEfExPQ0FMKVxccytDSEVDS1xccytPUFRJT05cXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJFWENMVURFXFxzKyhUSUVTfE5PXFxzK09USEVSUylcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJGT1JNQVRcXHMrKFRFWFR8WE1MfEpTT058WUFNTClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJTRVRcXHMrKChTRVNTSU9OfExPQ0FMKVxccyspP05BTUVTXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiSVNcXHMrKE5PVFxccyspP1VOS05PV05cXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJTRUNVUklUWVxccytMQUJFTFxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlNUQU5EQUxPTkVcXHMrKFlFU3xOT3xOT1xccytWQUxVRSlcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJXSVRIXFxzKyhOT1xccyspP0RBVEFcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoRk9SRUlHTnxTRVQpXFxzK0RBVEFcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJTRVRcXHMrKENBVEFMT0d8Q09OU1RSQUlOVFMpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKFdJVEh8Rk9SKVxccytPUkRJTkFMSVRZXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiSVNcXHMrKE5PVFxccyspP0RPQ1VNRU5UXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiWE1MXFxzK09QVElPTlxccysoRE9DVU1FTlR8Q09OVEVOVClcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGIoU1RSSVB8UFJFU0VSVkUpXFxzK1dISVRFU1BBQ0VcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJOT1xccysoQUNUSU9OfE1BWFZBTFVFfE1JTlZBTFVFKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYlBBUlRJVElPTlxccytCWVxccysoUkFOR0V8TElTVHxIQVNIKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkFUXFxzK1RJTUVcXHMrWk9ORVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkdSQU5URURcXHMrQllcXGIvIH0sXG4gICAgICAgICAgICAgIHsgYmVnaW46IC9cXGJSRVRVUk5cXHMrKFFVRVJZfE5FWFQpXFxiLyB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvXFxiKEFUVEFDSHxERVRBQ0gpXFxzK1BBUlRJVElPTlxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkZPUkNFXFxzK1JPV1xccytMRVZFTFxccytTRUNVUklUWVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYihJTkNMVURJTkd8RVhDTFVESU5HKVxccysoQ09NTUVOVFN8Q09OU1RSQUlOVFN8REVGQVVMVFN8SURFTlRJVFl8SU5ERVhFU3xTVEFUSVNUSUNTfFNUT1JBR0V8QUxMKVxcYi8gfSxcbiAgICAgICAgICAgICAgeyBiZWdpbjogL1xcYkFTXFxzKyhBU1NJR05NRU5UfElNUExJQ0lUfFBFUk1JU1NJVkV8UkVTVFJJQ1RJVkV8RU5VTXxSQU5HRSlcXGIvIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGZ1bmN0aW9ucyBuYW1lZCBhcyBrZXl3b3JkcywgZm9sbG93ZWQgYnkgJygnXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGIoRk9STUFUfEZBTUlMWXxWRVJTSU9OKVxccypcXCgvLFxuICAgICAgICAgICAgLy9rZXl3b3JkczogeyBidWlsdF9pbjogJ0ZPUk1BVCBGQU1JTFkgVkVSU0lPTicgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gSU5DTFVERSAoIC4uLiApIGluIGluZGV4X3BhcmFtZXRlcnMgaW4gQ1JFQVRFIFRBQkxFXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGJJTkNMVURFXFxzKlxcKC8sXG4gICAgICAgICAgICBrZXl3b3JkczogJ0lOQ0xVREUnXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBub3QgaGlnaGxpZ2h0IFJBTkdFIGlmIG5vdCBpbiBmcmFtZV9jbGF1c2UgKG5vdCAxMDAlIGNvcnJlY3QsIGJ1dCBzZWVtcyBzYXRpc2ZhY3RvcnkpXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGJSQU5HRSg/IVxccyooQkVUV0VFTnxVTkJPVU5ERUR8Q1VSUkVOVHxbLTAtOV0rKSkvXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBkaXNhYmxlIGhpZ2hsaWdodGluZyBpbiBjb21tYW5kcyBDUkVBVEUgQUdHUkVHQVRFL0NPTExBVElPTi9EQVRBQkFTRS9PUEVSVE9SL1RFWFQgU0VBUkNIIC4uLi9UWVBFXG4gICAgICAgICAgLy8gYW5kIGluIFBML3BnU1FMIFJBSVNFIC4uLiBVU0lOR1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFZFUlNJT058T1dORVJ8VEVNUExBVEV8VEFCTEVTUEFDRXxDT05ORUNUSU9OXFxzK0xJTUlUfFBST0NFRFVSRXxSRVNUUklDVHxKT0lOfFBBUlNFUnxDT1BZfFNUQVJUfEVORHxDT0xMQVRJT058SU5QVVR8QU5BTFlaRXxTVE9SQUdFfExJS0V8REVGQVVMVHxERUxJTUlURVJ8RU5DT0RJTkd8Q09MVU1OfENPTlNUUkFJTlR8VEFCTEV8U0NIRU1BKVxccyo9L1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUEdfc210aDsgSEFTX3NvbWVfUFJJVklMRUdFXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy9jbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgICAgICBiZWdpbjogL1xcYihQR19cXHcrP3xIQVNfW0EtWl9dK19QUklWSUxFR0UpXFxiLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGV4dHJhY3RcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xcYkVYVFJBQ1RcXHMqXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcYkZST01cXGIvLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAgICAgLy9idWlsdF9pbjogJ0VYVFJBQ1QnLFxuICAgICAgICAgICAgICB0eXBlOiAgICAgJ0NFTlRVUlkgREFZIERFQ0FERSBET1cgRE9ZIEVQT0NIIEhPVVIgSVNPRE9XIElTT1lFQVIgTUlDUk9TRUNPTkRTICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ01JTExFTk5JVU0gTUlMTElTRUNPTkRTIE1JTlVURSBNT05USCBRVUFSVEVSIFNFQ09ORCBUSU1FWk9ORSBUSU1FWk9ORV9IT1VSICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1RJTUVaT05FX01JTlVURSBXRUVLIFlFQVInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyB4bWxlbGVtZW50LCB4bWxwaSAtIHNwZWNpYWwgTkFNRVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFhNTEVMRU1FTlR8WE1MUEkpXFxzKlxcKFxccypOQU1FLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgICAgIC8vYnVpbHRfaW46ICdYTUxFTEVNRU5UIFhNTFBJJyxcbiAgICAgICAgICAgICAga2V5d29yZDogICdOQU1FJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8geG1scGFyc2UsIHhtbHNlcmlhbGl6ZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiKFhNTFBBUlNFfFhNTFNFUklBTElaRSlcXHMqXFwoXFxzKihET0NVTUVOVHxDT05URU5UKS8sXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICAvL2J1aWx0X2luOiAnWE1MUEFSU0UgWE1MU0VSSUFMSVpFJyxcbiAgICAgICAgICAgICAga2V5d29yZDogICdET0NVTUVOVCBDT05URU5UJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU2VxdWVuY2VzLiBXZSBhY3R1YWxseSBza2lwIGV2ZXJ5dGhpbmcgYmV0d2VlbiBDQUNIRXxJTkNSRU1FTlR8TUFYVkFMVUV8TUlOVkFMVUUgYW5kXG4gICAgICAgICAgLy8gbmVhcmVzdCBmb2xsb3dpbmcgbnVtZXJpYyBjb25zdGFudC4gV2l0aG91dCB3aXRoIHRyaWNrIHdlIGZpbmQgYSBsb3Qgb2YgXCJrZXl3b3Jkc1wiXG4gICAgICAgICAgLy8gaW4gJ2F2cmFzbScgYXV0b2RldGVjdGlvbiB0ZXN0Li4uXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ0NBQ0hFIElOQ1JFTUVOVCBNQVhWQUxVRSBNSU5WQUxVRScsXG4gICAgICAgICAgICBlbmQ6IGhsanMuQ19OVU1CRVJfUkUsXG4gICAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogJ0JZIENBQ0hFIElOQ1JFTUVOVCBNQVhWQUxVRSBNSU5WQUxVRSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFdJVEh8V0lUSE9VVCBUSU1FIFpPTkUgYXMgcGFydCBvZiBkYXRhdHlwZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXGIoV0lUSHxXSVRIT1VUKVxccytUSU1FXFxzK1pPTkVcXGIvXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBJTlRFUlZBTCBvcHRpb25hbCBmaWVsZHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFxiSU5URVJWQUxcXHMrKFlFQVJ8TU9OVEh8REFZfEhPVVJ8TUlOVVRFfFNFQ09ORCkoXFxzK1RPXFxzKyhNT05USHxIT1VSfE1JTlVURXxTRUNPTkQpKT9cXGIvXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQc2V1ZG8tdHlwZXMgd2hpY2ggYWxsb3dlZCBvbmx5IGFzIHJldHVybiB0eXBlXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXGJSRVRVUk5TXFxzKyhMQU5HVUFHRV9IQU5ETEVSfFRSSUdHRVJ8RVZFTlRfVFJJR0dFUnxGRFdfSEFORExFUnxJTkRFWF9BTV9IQU5ETEVSfFRTTV9IQU5ETEVSKVxcYi8sXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBrZXl3b3JkOiAnUkVUVVJOUycsXG4gICAgICAgICAgICAgIHR5cGU6ICdMQU5HVUFHRV9IQU5ETEVSIFRSSUdHRVIgRVZFTlRfVFJJR0dFUiBGRFdfSEFORExFUiBJTkRFWF9BTV9IQU5ETEVSIFRTTV9IQU5ETEVSJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gS25vd24gZnVuY3Rpb25zIC0gb25seSB3aGVuIGZvbGxvd2VkIGJ5ICcoJ1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIEZVTkNUSU9OU19SRSArICcpXFxcXHMqXFxcXCgnXG4gICAgICAgICAgICAvL2tleXdvcmRzOiB7IGJ1aWx0X2luOiBGVU5DVElPTlMgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gVHlwZXNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwuKCcgKyBUWVBFU19SRSArICcpXFxcXGInIC8vIHByZXZlbnQgaGlnaGxpZ2h0IGFzIHR5cGUsIHNheSwgJ29pZCcgaW4gJ3BnY2xhc3Mub2lkJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYignICsgVFlQRVNfUkUgKyAnKVxcXFxzK1BBVEhcXFxcYicsIC8vIGluIFhNTFRBQkxFXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICBrZXl3b3JkOiAnUEFUSCcsIC8vIGhvcGVmdWxseSBubyBvbmUgd291bGQgdXNlIFBBVEggdHlwZSBpbiBYTUxUQUJMRS4uLlxuICAgICAgICAgICAgICB0eXBlOiBUWVBFUy5yZXBsYWNlKCdQQVRIICcsJycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIFRZUEVTX1JFICsgJylcXFxcYidcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFN0cmluZ3MsIHNlZSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzLzExL3N0YXRpYy9zcWwtc3ludGF4LWxleGljYWwuaHRtbCNTUUwtU1lOVEFYLUNPTlNUQU5UU1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1xcJ1xcJyd9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnKGV8RXx1JnxVJilcXCcnLCBlbmQ6ICdcXCcnLFxuICAgICAgICAgICAgY29udGFpbnM6IFt7YmVnaW46ICdcXFxcXFxcXC4nfV0sXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogRE9MTEFSX1NUUklORyxcbiAgICAgICAgICAgIGVuZFNhbWVBc0JlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5IHdlIHdhbnQgdGhlbSBhbGwgZXhjZXB0IFNRTDsgbGlzdGVkIGFyZSB0aG9zZSB3aXRoIGtub3duIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgICAgIC8vIGFuZCBYTUwgKyBKU09OIGp1c3QgaW4gY2FzZVxuICAgICAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiBbJ3Bnc3FsJywncGVybCcsJ3B5dGhvbicsJ3RjbCcsJ3InLCdsdWEnLCdqYXZhJywncGhwJywncnVieScsJ2Jhc2gnLCdzY2hlbWUnLCd4bWwnLCdqc29uJ10sXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gaWRlbnRpZmllcnMgaW4gcXVvdGVzXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbe2JlZ2luOiAnXCJcIid9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gbnVtYmVyc1xuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAvLyBjb21tZW50c1xuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIC8vIFBML3BnU1FMIHN0YWZmXG4gICAgICAgICAgLy8gJVJPV1RZUEUsICVUWVBFLCAkblxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge2JlZ2luOiAnJShST1cpP1RZUEUnLCByZWxldmFuY2U6IDEwfSwgLy8gJVRZUEUsICVST1dUWVBFXG4gICAgICAgICAgICAgIHtiZWdpbjogJ1xcXFwkXFxcXGQrJ30sICAgICAgICAgICAgICAgICAgICAvLyAkblxuICAgICAgICAgICAgICB7YmVnaW46ICdeI1xcXFx3JywgZW5kOiAnJCd9ICAgICAgICAgICAgIC8vICNjb21waWxlciBvcHRpb25cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIDw8bGFiZWxlcz4+XG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgICAgIGJlZ2luOiBMQUJFTCxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBiZWdpbjogJ1xcXFwkK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWjAtOV9cXHg3Zi1cXHhmZl0qJ1xuICB9O1xuICB2YXIgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogLzxcXD8ocGhwKT98XFw/Pi9cbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBQUkVQUk9DRVNTT1JdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlwiJywgZW5kOiAnXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2JcXCcnLCBlbmQ6ICdcXCcnXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSID0ge3ZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV19O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncGhwJywgJ3BocDMnLCAncGhwNCcsICdwaHA1JywgJ3BocDYnLCAncGhwNyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6XG4gICAgICAnYW5kIGluY2x1ZGVfb25jZSBsaXN0IGFic3RyYWN0IGdsb2JhbCBwcml2YXRlIGVjaG8gaW50ZXJmYWNlIGFzIHN0YXRpYyBlbmRzd2l0Y2ggJyArXG4gICAgICAnYXJyYXkgbnVsbCBpZiBlbmR3aGlsZSBvciBjb25zdCBmb3IgZW5kZm9yZWFjaCBzZWxmIHZhciB3aGlsZSBpc3NldCBwdWJsaWMgJyArXG4gICAgICAncHJvdGVjdGVkIGV4aXQgZm9yZWFjaCB0aHJvdyBlbHNlaWYgaW5jbHVkZSBfX0ZJTEVfXyBlbXB0eSByZXF1aXJlX29uY2UgZG8geG9yICcgK1xuICAgICAgJ3JldHVybiBwYXJlbnQgY2xvbmUgdXNlIF9fQ0xBU1NfXyBfX0xJTkVfXyBlbHNlIGJyZWFrIHByaW50IGV2YWwgbmV3ICcgK1xuICAgICAgJ2NhdGNoIF9fTUVUSE9EX18gY2FzZSBleGNlcHRpb24gZGVmYXVsdCBkaWUgcmVxdWlyZSBfX0ZVTkNUSU9OX18gJyArXG4gICAgICAnZW5kZGVjbGFyZSBmaW5hbCB0cnkgc3dpdGNoIGNvbnRpbnVlIGVuZGZvciBlbmRpZiBkZWNsYXJlIHVuc2V0IHRydWUgZmFsc2UgJyArXG4gICAgICAndHJhaXQgZ290byBpbnN0YW5jZW9mIGluc3RlYWRvZiBfX0RJUl9fIF9fTkFNRVNQQUNFX18gJyArXG4gICAgICAneWllbGQgZmluYWxseScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoJy8vJywgJyQnLCB7Y29udGFpbnM6IFtQUkVQUk9DRVNTT1JdfSksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdfX2hhbHRfY29tcGlsZXIuKz87JyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHtcbiAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICBrZXl3b3JkczogJ19faGFsdF9jb21waWxlcicsXG4gICAgICAgICAgbGV4ZW1lczogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPDw8WydcIl0/XFx3K1snXCJdPyQvLCBlbmQ6IC9eXFx3Kzs/JC8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtiZWdpbjogL1xcJFxcdysvfSxcbiAgICAgICAgICAgICAge2JlZ2luOiAvXFx7XFwkLywgZW5kOiAvXFx9L31cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLCBiZWdpbjogL1xcJHRoaXNcXGIvXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIC8vIHN3YWxsb3cgY29tcG9zZWQgaWRlbnRpZmllcnMgdG8gYXZvaWQgcGFyc2luZyB0aGVtIGFzIGtleXdvcmRzXG4gICAgICAgIGJlZ2luOiAvKDo6fC0+KStbYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVowLTlfXFx4N2YtXFx4ZmZdKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvWzt7XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcJHxcXFxcW3wlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgTlVNQkVSXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UnLCBlbmQ6ICd7JywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1s6XFwoXFwkXCJdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7YmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgaW1wbGVtZW50cyd9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgaWxsZWdhbDogL1tcXC4nXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAndXNlJywgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0+JyAvLyBObyBtYXJrdXAsIGp1c3QgYSByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIE5VTUJFUlxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGlzYWJsZUF1dG9kZXRlY3Q6IHRydWVcbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWN0b3IgYWRkcmVzc29mIGFuZCBhcyBiZSBicmVhayBjbGFzcyBjb21waWxlX2Vycm9yIGNvbXBpbGVfaW50cmluc2ljICcgK1xuICAgICAgJ2NvbnN1bWUgY29udGludWUgZGVsZWdhdGUgZGlnZXN0b2YgZG8gZWxzZSBlbHNlaWYgZW1iZWQgZW5kIGVycm9yICcgK1xuICAgICAgJ2ZvciBmdW4gaWYgaWZkZWYgaW4gaW50ZXJmYWNlIGlzIGlzbnQgbGFtYmRhIGxldCBtYXRjaCBuZXcgbm90IG9iamVjdCAnICtcbiAgICAgICdvciBwcmltaXRpdmUgcmVjb3ZlciByZXBlYXQgcmV0dXJuIHN0cnVjdCB0aGVuIHRyYWl0IHRyeSB0eXBlIHVudGlsICcgK1xuICAgICAgJ3VzZSB2YXIgd2hlcmUgd2hpbGUgd2l0aCB4b3InLFxuICAgIG1ldGE6XG4gICAgICAnaXNvIHZhbCB0YWcgdHJuIGJveCByZWYnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndGhpcyBmYWxzZSB0cnVlJ1xuICB9O1xuXG4gIHZhciBUUklQTEVfUVVPVEVfU1RSSU5HX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1wiXCJcIicsIGVuZDogJ1wiXCJcIicsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuXG4gIHZhciBRVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gIH07XG5cbiAgdmFyIFNJTkdMRV9RVU9URV9DSEFSX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBUWVBFX05BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYl8/W0EtWl1bXFxcXHddKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFBSSU1FRF9OQU1FID0ge1xuICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcJycsIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBOVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOV0rfFxcXFxiMFtiQl1bMDFdK3woXFxcXGJcXFxcZCsoX1xcXFxkKyk/KFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKFtlRV1bLStdP1xcXFxkKyk/KScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBgRlVOQ1RJT05gIGFuZCBgQ0xBU1NgIG1vZGVzIHdlcmUgaW50ZW50aW9uYWxseSByZW1vdmVkIHRvIHNpbXBsaWZ5XG4gICAqIGhpZ2hsaWdodGluZyBhbmQgZml4IGNhc2VzIGxpa2VcbiAgICogYGBgXG4gICAqIGludGVyZmFjZSBJdGVyYXRvcltBOiBBXVxuICAgKiAgIGZ1biBoYXNfbmV4dCgpOiBCb29sXG4gICAqICAgZnVuIG5leHQoKTogQT9cbiAgICogYGBgXG4gICAqIHdoZXJlIGl0IGlzIHZhbGlkIHRvIGhhdmUgYSBmdW5jdGlvbiBoZWFkIHdpdGhvdXQgYSBib2R5XG4gICAqL1xuXG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBUWVBFX05BTUUsXG4gICAgICBUUklQTEVfUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBRVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFNJTkdMRV9RVU9URV9DSEFSX01PREUsXG4gICAgICBQUklNRURfTkFNRSxcbiAgICAgIE5VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKXtcbiAgdmFyIEJBQ0tUSUNLX0VTQ0FQRSA9IHtcbiAgICBiZWdpbjogXCJgW1xcXFxzXFxcXFNdXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICB9O1xuICB2YXIgVkFSID0ge1xuICAgIGNsYXNzTmFtZTogXCJ2YXJpYWJsZVwiLFxuICAgIHZhcmlhbnRzOiBbeyBiZWdpbjogL1xcJFtcXHdcXGRdW1xcd1xcZF86XSovIH1dLFxuICB9O1xuICB2YXIgTElURVJBTCA9IHtcbiAgICBjbGFzc05hbWU6IFwibGl0ZXJhbFwiLFxuICAgIGJlZ2luOiAvXFwkKG51bGx8dHJ1ZXxmYWxzZSlcXGIvLFxuICB9O1xuICB2YXIgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogXCJzdHJpbmdcIixcbiAgICB2YXJpYW50czogW3sgYmVnaW46IC9cIi8sIGVuZDogL1wiLyB9LCB7IGJlZ2luOiAvQFwiLywgZW5kOiAvXlwiQC8gfV0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEJBQ0tUSUNLX0VTQ0FQRSxcbiAgICAgIFZBUixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgICAgIGJlZ2luOiAvXFwkW0Etel0vLFxuICAgICAgICBlbmQ6IC9bXkEtel0vLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICB2YXIgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgIHZhcmlhbnRzOiBbeyBiZWdpbjogLycvLCBlbmQ6IC8nLyB9LCB7IGJlZ2luOiAvQCcvLCBlbmQ6IC9eJ0AvIH1dLFxuICB9O1xuXG4gIHZhciBQU19IRUxQVEFHUyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZG9jdGFnXCIsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIC8qIG5vIHBhcmFtYXRlciBoZWxwIHRhZ3MgKi9cblxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcLihzeW5vcHNpc3xkZXNjcmlwdGlvbnxleGFtcGxlfGlucHV0c3xvdXRwdXRzfG5vdGVzfGxpbmt8Y29tcG9uZW50fHJvbGV8ZnVuY3Rpb25hbGl0eSkvLFxuICAgICAgfSxcbiAgICAgIC8qIG9uZSBwYXJhbWV0ZXIgaGVscCB0YWdzICovXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwuKHBhcmFtZXRlcnxmb3J3YXJkaGVscHRhcmdldG5hbWV8Zm9yd2FyZGhlbHBjYXRlZ29yeXxyZW1vdGVoZWxwcnVuc3BhY2V8ZXh0ZXJuYWxoZWxwKVxccytcXFMrLyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgdmFyIFBTX0NPTU1FTlQgPSBobGpzLmluaGVyaXQoaGxqcy5DT01NRU5UKG51bGwsIG51bGwpLCB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIC8qIHNpbmdsZS1saW5lIGNvbW1lbnQgKi9cbiAgICAgIHsgYmVnaW46IC8jLywgZW5kOiAvJC8gfSxcbiAgICAgIC8qIG11bHRpLWxpbmUgY29tbWVudCAqL1xuICAgICAgeyBiZWdpbjogLzwjLywgZW5kOiAvIz4vIH0sXG4gICAgXSxcbiAgICBjb250YWluczogW1BTX0hFTFBUQUdTXSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbXCJwc1wiLCBcInBzMVwiXSxcbiAgICBsZXhlbWVzOiAvLT9bQS16XFwuXFwtXSsvLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIFwiaWYgZWxzZSBmb3JlYWNoIHJldHVybiBmdW5jdGlvbiBkbyB3aGlsZSB1bnRpbCBlbHNlaWYgYmVnaW4gZm9yIHRyYXAgZGF0YSBkeW5hbWljcGFyYW0gZW5kIGJyZWFrIHRocm93IHBhcmFtIGNvbnRpbnVlIGZpbmFsbHkgaW4gc3dpdGNoIGV4aXQgZmlsdGVyIHRyeSBwcm9jZXNzIGNhdGNoXCIgK1xuICAgICAgICBcIlZhbGlkYXRlTm9DaXJjbGVJbk5vZGVSZXNvdXJjZXMgVmFsaWRhdGVOb2RlRXhjbHVzaXZlUmVzb3VyY2VzIFZhbGlkYXRlTm9kZU1hbmFnZXIgVmFsaWRhdGVOb2RlUmVzb3VyY2VzIFZhbGlkYXRlTm9kZVJlc291cmNlU291cmNlIFZhbGlkYXRlTm9OYW1lTm9kZVJlc291cmNlcyBUaHJvd0Vycm9yIElzSGlkZGVuUmVzb3VyY2VcIiArXG4gICAgICAgIFwiSXNQYXR0ZXJuTWF0Y2hlZCBcIixcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICBcIkFkZC1Db21wdXRlciBBZGQtQ29udGVudCBBZGQtSGlzdG9yeSBBZGQtSm9iVHJpZ2dlciBBZGQtTWVtYmVyIEFkZC1QU1NuYXBpbiBBZGQtVHlwZSBDaGVja3BvaW50LUNvbXB1dGVyIENsZWFyLUNvbnRlbnQgXCIgK1xuICAgICAgICBcIkNsZWFyLUV2ZW50TG9nIENsZWFyLUhpc3RvcnkgQ2xlYXItSG9zdCBDbGVhci1JdGVtIENsZWFyLUl0ZW1Qcm9wZXJ0eSBDbGVhci1WYXJpYWJsZSBDb21wYXJlLU9iamVjdCBDb21wbGV0ZS1UcmFuc2FjdGlvbiBDb25uZWN0LVBTU2Vzc2lvbiBcIiArXG4gICAgICAgIFwiQ29ubmVjdC1XU01hbiBDb252ZXJ0LVBhdGggQ29udmVydEZyb20tQ3N2IENvbnZlcnRGcm9tLUpzb24gQ29udmVydEZyb20tU2VjdXJlU3RyaW5nIENvbnZlcnRGcm9tLVN0cmluZ0RhdGEgQ29udmVydFRvLUNzdiBDb252ZXJ0VG8tSHRtbCBcIiArXG4gICAgICAgIFwiQ29udmVydFRvLUpzb24gQ29udmVydFRvLVNlY3VyZVN0cmluZyBDb252ZXJ0VG8tWG1sIENvcHktSXRlbSBDb3B5LUl0ZW1Qcm9wZXJ0eSBEZWJ1Zy1Qcm9jZXNzIERpc2FibGUtQ29tcHV0ZXJSZXN0b3JlIERpc2FibGUtSm9iVHJpZ2dlciBcIiArXG4gICAgICAgIFwiRGlzYWJsZS1QU0JyZWFrcG9pbnQgRGlzYWJsZS1QU1JlbW90aW5nIERpc2FibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBEaXNhYmxlLVdTTWFuQ3JlZFNTUCBEaXNjb25uZWN0LVBTU2Vzc2lvbiBEaXNjb25uZWN0LVdTTWFuIFwiICtcbiAgICAgICAgXCJEaXNhYmxlLVNjaGVkdWxlZEpvYiBFbmFibGUtQ29tcHV0ZXJSZXN0b3JlIEVuYWJsZS1Kb2JUcmlnZ2VyIEVuYWJsZS1QU0JyZWFrcG9pbnQgRW5hYmxlLVBTUmVtb3RpbmcgRW5hYmxlLVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gXCIgK1xuICAgICAgICBcIkVuYWJsZS1TY2hlZHVsZWRKb2IgRW5hYmxlLVdTTWFuQ3JlZFNTUCBFbnRlci1QU1Nlc3Npb24gRXhpdC1QU1Nlc3Npb24gRXhwb3J0LUFsaWFzIEV4cG9ydC1DbGl4bWwgRXhwb3J0LUNvbnNvbGUgRXhwb3J0LUNvdW50ZXIgRXhwb3J0LUNzdiBcIiArXG4gICAgICAgIFwiRXhwb3J0LUZvcm1hdERhdGEgRXhwb3J0LU1vZHVsZU1lbWJlciBFeHBvcnQtUFNTZXNzaW9uIEZvckVhY2gtT2JqZWN0IEZvcm1hdC1DdXN0b20gRm9ybWF0LUxpc3QgRm9ybWF0LVRhYmxlIEZvcm1hdC1XaWRlIEdldC1BY2wgR2V0LUFsaWFzIFwiICtcbiAgICAgICAgXCJHZXQtQXV0aGVudGljb2RlU2lnbmF0dXJlIEdldC1DaGlsZEl0ZW0gR2V0LUNvbW1hbmQgR2V0LUNvbXB1dGVyUmVzdG9yZVBvaW50IEdldC1Db250ZW50IEdldC1Db250cm9sUGFuZWxJdGVtIEdldC1Db3VudGVyIEdldC1DcmVkZW50aWFsIFwiICtcbiAgICAgICAgXCJHZXQtQ3VsdHVyZSBHZXQtRGF0ZSBHZXQtRXZlbnQgR2V0LUV2ZW50TG9nIEdldC1FdmVudFN1YnNjcmliZXIgR2V0LUV4ZWN1dGlvblBvbGljeSBHZXQtRm9ybWF0RGF0YSBHZXQtSG9zdCBHZXQtSG90Rml4IEdldC1IZWxwIEdldC1IaXN0b3J5IFwiICtcbiAgICAgICAgXCJHZXQtSXNlU25pcHBldCBHZXQtSXRlbSBHZXQtSXRlbVByb3BlcnR5IEdldC1Kb2IgR2V0LUpvYlRyaWdnZXIgR2V0LUxvY2F0aW9uIEdldC1NZW1iZXIgR2V0LU1vZHVsZSBHZXQtUGZ4Q2VydGlmaWNhdGUgR2V0LVByb2Nlc3MgXCIgK1xuICAgICAgICBcIkdldC1QU0JyZWFrcG9pbnQgR2V0LVBTQ2FsbFN0YWNrIEdldC1QU0RyaXZlIEdldC1QU1Byb3ZpZGVyIEdldC1QU1Nlc3Npb24gR2V0LVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gR2V0LVBTU25hcGluIEdldC1SYW5kb20gR2V0LVNjaGVkdWxlZEpvYiBcIiArXG4gICAgICAgIFwiR2V0LVNjaGVkdWxlZEpvYk9wdGlvbiBHZXQtU2VydmljZSBHZXQtVHJhY2VTb3VyY2UgR2V0LVRyYW5zYWN0aW9uIEdldC1UeXBlRGF0YSBHZXQtVUlDdWx0dXJlIEdldC1VbmlxdWUgR2V0LVZhcmlhYmxlIEdldC1WZXJiIEdldC1XaW5FdmVudCBcIiArXG4gICAgICAgIFwiR2V0LVdtaU9iamVjdCBHZXQtV1NNYW5DcmVkU1NQIEdldC1XU01hbkluc3RhbmNlIEdyb3VwLU9iamVjdCBJbXBvcnQtQWxpYXMgSW1wb3J0LUNsaXhtbCBJbXBvcnQtQ291bnRlciBJbXBvcnQtQ3N2IEltcG9ydC1Jc2VTbmlwcGV0IFwiICtcbiAgICAgICAgXCJJbXBvcnQtTG9jYWxpemVkRGF0YSBJbXBvcnQtUFNTZXNzaW9uIEltcG9ydC1Nb2R1bGUgSW52b2tlLUFzV29ya2Zsb3cgSW52b2tlLUNvbW1hbmQgSW52b2tlLUV4cHJlc3Npb24gSW52b2tlLUhpc3RvcnkgSW52b2tlLUl0ZW0gXCIgK1xuICAgICAgICBcIkludm9rZS1SZXN0TWV0aG9kIEludm9rZS1XZWJSZXF1ZXN0IEludm9rZS1XbWlNZXRob2QgSW52b2tlLVdTTWFuQWN0aW9uIEpvaW4tUGF0aCBMaW1pdC1FdmVudExvZyBNZWFzdXJlLUNvbW1hbmQgTWVhc3VyZS1PYmplY3QgTW92ZS1JdGVtIFwiICtcbiAgICAgICAgXCJNb3ZlLUl0ZW1Qcm9wZXJ0eSBOZXctQWxpYXMgTmV3LUV2ZW50IE5ldy1FdmVudExvZyBOZXctSXNlU25pcHBldCBOZXctSXRlbSBOZXctSXRlbVByb3BlcnR5IE5ldy1Kb2JUcmlnZ2VyIE5ldy1PYmplY3QgTmV3LU1vZHVsZSBcIiArXG4gICAgICAgIFwiTmV3LU1vZHVsZU1hbmlmZXN0IE5ldy1QU0RyaXZlIE5ldy1QU1Nlc3Npb24gTmV3LVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb25GaWxlIE5ldy1QU1Nlc3Npb25PcHRpb24gTmV3LVBTVHJhbnNwb3J0T3B0aW9uIFwiICtcbiAgICAgICAgXCJOZXctUFNXb3JrZmxvd0V4ZWN1dGlvbk9wdGlvbiBOZXctUFNXb3JrZmxvd1Nlc3Npb24gTmV3LVNjaGVkdWxlZEpvYk9wdGlvbiBOZXctU2VydmljZSBOZXctVGltZVNwYW4gTmV3LVZhcmlhYmxlIE5ldy1XZWJTZXJ2aWNlUHJveHkgXCIgK1xuICAgICAgICBcIk5ldy1XaW5FdmVudCBOZXctV1NNYW5JbnN0YW5jZSBOZXctV1NNYW5TZXNzaW9uT3B0aW9uIE91dC1EZWZhdWx0IE91dC1GaWxlIE91dC1HcmlkVmlldyBPdXQtSG9zdCBPdXQtTnVsbCBPdXQtUHJpbnRlciBPdXQtU3RyaW5nIFBvcC1Mb2NhdGlvbiBcIiArXG4gICAgICAgIFwiUHVzaC1Mb2NhdGlvbiBSZWFkLUhvc3QgUmVjZWl2ZS1Kb2IgUmVnaXN0ZXItRW5naW5lRXZlbnQgUmVnaXN0ZXItT2JqZWN0RXZlbnQgUmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBSZWdpc3Rlci1TY2hlZHVsZWRKb2IgXCIgK1xuICAgICAgICBcIlJlZ2lzdGVyLVdtaUV2ZW50IFJlbW92ZS1Db21wdXRlciBSZW1vdmUtRXZlbnQgUmVtb3ZlLUV2ZW50TG9nIFJlbW92ZS1JdGVtIFJlbW92ZS1JdGVtUHJvcGVydHkgUmVtb3ZlLUpvYiBSZW1vdmUtSm9iVHJpZ2dlciBSZW1vdmUtTW9kdWxlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtUFNCcmVha3BvaW50IFJlbW92ZS1QU0RyaXZlIFJlbW92ZS1QU1Nlc3Npb24gUmVtb3ZlLVBTU25hcGluIFJlbW92ZS1UeXBlRGF0YSBSZW1vdmUtVmFyaWFibGUgUmVtb3ZlLVdtaU9iamVjdCBSZW1vdmUtV1NNYW5JbnN0YW5jZSBcIiArXG4gICAgICAgIFwiUmVuYW1lLUNvbXB1dGVyIFJlbmFtZS1JdGVtIFJlbmFtZS1JdGVtUHJvcGVydHkgUmVzZXQtQ29tcHV0ZXJNYWNoaW5lUGFzc3dvcmQgUmVzb2x2ZS1QYXRoIFJlc3RhcnQtQ29tcHV0ZXIgUmVzdGFydC1TZXJ2aWNlIFJlc3RvcmUtQ29tcHV0ZXIgXCIgK1xuICAgICAgICBcIlJlc3VtZS1Kb2IgUmVzdW1lLVNlcnZpY2UgU2F2ZS1IZWxwIFNlbGVjdC1PYmplY3QgU2VsZWN0LVN0cmluZyBTZWxlY3QtWG1sIFNlbmQtTWFpbE1lc3NhZ2UgU2V0LUFjbCBTZXQtQWxpYXMgU2V0LUF1dGhlbnRpY29kZVNpZ25hdHVyZSBcIiArXG4gICAgICAgIFwiU2V0LUNvbnRlbnQgU2V0LURhdGUgU2V0LUV4ZWN1dGlvblBvbGljeSBTZXQtSXRlbSBTZXQtSXRlbVByb3BlcnR5IFNldC1Kb2JUcmlnZ2VyIFNldC1Mb2NhdGlvbiBTZXQtUFNCcmVha3BvaW50IFNldC1QU0RlYnVnIFwiICtcbiAgICAgICAgXCJTZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbiBTZXQtU2NoZWR1bGVkSm9iIFNldC1TY2hlZHVsZWRKb2JPcHRpb24gU2V0LVNlcnZpY2UgU2V0LVN0cmljdE1vZGUgU2V0LVRyYWNlU291cmNlIFNldC1WYXJpYWJsZSBTZXQtV21pSW5zdGFuY2UgXCIgK1xuICAgICAgICBcIlNldC1XU01hbkluc3RhbmNlIFNldC1XU01hblF1aWNrQ29uZmlnIFNob3ctQ29tbWFuZCBTaG93LUNvbnRyb2xQYW5lbEl0ZW0gU2hvdy1FdmVudExvZyBTb3J0LU9iamVjdCBTcGxpdC1QYXRoIFN0YXJ0LUpvYiBTdGFydC1Qcm9jZXNzIFwiICtcbiAgICAgICAgXCJTdGFydC1TZXJ2aWNlIFN0YXJ0LVNsZWVwIFN0YXJ0LVRyYW5zYWN0aW9uIFN0YXJ0LVRyYW5zY3JpcHQgU3RvcC1Db21wdXRlciBTdG9wLUpvYiBTdG9wLVByb2Nlc3MgU3RvcC1TZXJ2aWNlIFN0b3AtVHJhbnNjcmlwdCBTdXNwZW5kLUpvYiBcIiArXG4gICAgICAgIFwiU3VzcGVuZC1TZXJ2aWNlIFRlZS1PYmplY3QgVGVzdC1Db21wdXRlclNlY3VyZUNoYW5uZWwgVGVzdC1Db25uZWN0aW9uIFRlc3QtTW9kdWxlTWFuaWZlc3QgVGVzdC1QYXRoIFRlc3QtUFNTZXNzaW9uQ29uZmlndXJhdGlvbkZpbGUgXCIgK1xuICAgICAgICBcIlRyYWNlLUNvbW1hbmQgVW5ibG9jay1GaWxlIFVuZG8tVHJhbnNhY3Rpb24gVW5yZWdpc3Rlci1FdmVudCBVbnJlZ2lzdGVyLVBTU2Vzc2lvbkNvbmZpZ3VyYXRpb24gVW5yZWdpc3Rlci1TY2hlZHVsZWRKb2IgVXBkYXRlLUZvcm1hdERhdGEgXCIgK1xuICAgICAgICBcIlVwZGF0ZS1IZWxwIFVwZGF0ZS1MaXN0IFVwZGF0ZS1UeXBlRGF0YSBVc2UtVHJhbnNhY3Rpb24gV2FpdC1FdmVudCBXYWl0LUpvYiBXYWl0LVByb2Nlc3MgV2hlcmUtT2JqZWN0IFdyaXRlLURlYnVnIFdyaXRlLUVycm9yIFdyaXRlLUV2ZW50TG9nIFwiICtcbiAgICAgICAgXCJXcml0ZS1Ib3N0IFdyaXRlLU91dHB1dCBXcml0ZS1Qcm9ncmVzcyBXcml0ZS1WZXJib3NlIFdyaXRlLVdhcm5pbmcgQWRkLU1EVFBlcnNpc3RlbnREcml2ZSBEaXNhYmxlLU1EVE1vbml0b3JTZXJ2aWNlIEVuYWJsZS1NRFRNb25pdG9yU2VydmljZSBcIiArXG4gICAgICAgIFwiR2V0LU1EVERlcGxveW1lbnRTaGFyZVN0YXRpc3RpY3MgR2V0LU1EVE1vbml0b3JEYXRhIEdldC1NRFRPcGVyYXRpbmdTeXN0ZW1DYXRhbG9nIEdldC1NRFRQZXJzaXN0ZW50RHJpdmUgSW1wb3J0LU1EVEFwcGxpY2F0aW9uIFwiICtcbiAgICAgICAgXCJJbXBvcnQtTURURHJpdmVyIEltcG9ydC1NRFRPcGVyYXRpbmdTeXN0ZW0gSW1wb3J0LU1EVFBhY2thZ2UgSW1wb3J0LU1EVFRhc2tTZXF1ZW5jZSBOZXctTURURGF0YWJhc2UgUmVtb3ZlLU1EVE1vbml0b3JEYXRhIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTURUUGVyc2lzdGVudERyaXZlIFJlc3RvcmUtTURUUGVyc2lzdGVudERyaXZlIFNldC1NRFRNb25pdG9yRGF0YSBUZXN0LU1EVERlcGxveW1lbnRTaGFyZSBUZXN0LU1EVE1vbml0b3JEYXRhIFVwZGF0ZS1NRFREYXRhYmFzZVNjaGVtYSBcIiArXG4gICAgICAgIFwiVXBkYXRlLU1EVERlcGxveW1lbnRTaGFyZSBVcGRhdGUtTURUTGlua2VkRFMgVXBkYXRlLU1EVE1lZGlhIEFkZC1WYW10UHJvZHVjdEtleSBFeHBvcnQtVmFtdERhdGEgRmluZC1WYW10TWFuYWdlZE1hY2hpbmUgXCIgK1xuICAgICAgICBcIkdldC1WYW10Q29uZmlybWF0aW9uSWQgR2V0LVZhbXRQcm9kdWN0IEdldC1WYW10UHJvZHVjdEtleSBJbXBvcnQtVmFtdERhdGEgSW5pdGlhbGl6ZS1WYW10RGF0YSBJbnN0YWxsLVZhbXRDb25maXJtYXRpb25JZCBcIiArXG4gICAgICAgIFwiSW5zdGFsbC1WYW10UHJvZHVjdEFjdGl2YXRpb24gSW5zdGFsbC1WYW10UHJvZHVjdEtleSBVcGRhdGUtVmFtdFByb2R1Y3QgQWRkLUNJRGF0YXN0b3JlIEFkZC1LZXlNYW5hZ2VtZW50U2VydmVyIEFkZC1Ob2RlS2V5cyBcIiArXG4gICAgICAgIFwiQWRkLU5zeER5bmFtaWNDcml0ZXJpYSBBZGQtTnN4RHluYW1pY01lbWJlclNldCBBZGQtTnN4RWRnZUludGVyZmFjZUFkZHJlc3MgQWRkLU5zeEZpcmV3YWxsRXhjbHVzaW9uTGlzdE1lbWJlciBBZGQtTnN4RmlyZXdhbGxSdWxlTWVtYmVyIFwiICtcbiAgICAgICAgXCJBZGQtTnN4SXBTZXRNZW1iZXIgQWRkLU5zeExpY2Vuc2UgQWRkLU5zeExvYWRCYWxhbmNlclBvb2xNZW1iZXIgQWRkLU5zeExvYWRCYWxhbmNlclZpcCBBZGQtTnN4U2Vjb25kYXJ5TWFuYWdlciBBZGQtTnN4U2VjdXJpdHlHcm91cE1lbWJlciBcIiArXG4gICAgICAgIFwiQWRkLU5zeFNlY3VyaXR5UG9saWN5UnVsZSBBZGQtTnN4U2VjdXJpdHlQb2xpY3lSdWxlR3JvdXAgQWRkLU5zeFNlY3VyaXR5UG9saWN5UnVsZVNlcnZpY2UgQWRkLU5zeFNlcnZpY2VHcm91cE1lbWJlciBcIiArXG4gICAgICAgIFwiQWRkLU5zeFRyYW5zcG9ydFpvbmVNZW1iZXIgQWRkLVBhc3N0aHJvdWdoRGV2aWNlIEFkZC1WRFN3aXRjaFBoeXNpY2FsTmV0d29ya0FkYXB0ZXIgQWRkLVZEU3dpdGNoVk1Ib3N0IEFkZC1WTUhvc3QgQWRkLVZNSG9zdE50cFNlcnZlciBcIiArXG4gICAgICAgIFwiQWRkLVZpcnR1YWxTd2l0Y2hQaHlzaWNhbE5ldHdvcmtBZGFwdGVyIEFkZC1YbWxFbGVtZW50IEFkZC12UkFDdXN0b21Gb3JtIEFkZC12UkFQcmluY2lwYWxUb1RlbmFudFJvbGUgQWRkLXZSQVJlc2VydmF0aW9uTmV0d29yayBcIiArXG4gICAgICAgIFwiQWRkLXZSQVJlc2VydmF0aW9uU3RvcmFnZSBDbGVhci1Oc3hFZGdlSW50ZXJmYWNlIENsZWFyLU5zeE1hbmFnZXJUaW1lU2V0dGluZ3MgQ29tcHJlc3MtQXJjaGl2ZSBDb25uZWN0LUNJU2VydmVyIENvbm5lY3QtQ2lzU2VydmVyIFwiICtcbiAgICAgICAgXCJDb25uZWN0LUhDWFNlcnZlciBDb25uZWN0LU5JU2VydmVyIENvbm5lY3QtTnN4TG9naWNhbFN3aXRjaCBDb25uZWN0LU5zeFNlcnZlciBDb25uZWN0LU5zeHRTZXJ2ZXIgQ29ubmVjdC1Tcm1TZXJ2ZXIgQ29ubmVjdC1WSVNlcnZlciBcIiArXG4gICAgICAgIFwiQ29ubmVjdC1WbWMgQ29ubmVjdC12UkFTZXJ2ZXIgQ29ubmVjdC12Uk5JU2VydmVyIENvbnZlcnRGcm9tLU1hcmtkb3duIENvbnZlcnRUby1NT0ZJbnN0YW5jZSBDb3B5LURhdGFzdG9yZUl0ZW0gQ29weS1IYXJkRGlzayBDb3B5LU5zeEVkZ2UgXCIgK1xuICAgICAgICBcIkNvcHktVkRpc2sgQ29weS1WTUd1ZXN0RmlsZSBEZWJ1Zy1SdW5zcGFjZSBEaXNhYmxlLU5zeEVkZ2VTc2ggRGlzYWJsZS1SdW5zcGFjZURlYnVnIERpc2FibGUtdlJOSURhdGFTb3VyY2UgRGlzY29ubmVjdC1DSVNlcnZlciBcIiArXG4gICAgICAgIFwiRGlzY29ubmVjdC1DaXNTZXJ2ZXIgRGlzY29ubmVjdC1IQ1hTZXJ2ZXIgRGlzY29ubmVjdC1Oc3hMb2dpY2FsU3dpdGNoIERpc2Nvbm5lY3QtTnN4U2VydmVyIERpc2Nvbm5lY3QtTnN4dFNlcnZlciBEaXNjb25uZWN0LVNybVNlcnZlciBcIiArXG4gICAgICAgIFwiRGlzY29ubmVjdC1WSVNlcnZlciBEaXNjb25uZWN0LVZtYyBEaXNjb25uZWN0LXZSQVNlcnZlciBEaXNjb25uZWN0LXZSTklTZXJ2ZXIgRGlzbW91bnQtVG9vbHMgRW5hYmxlLU5zeEVkZ2VTc2ggRW5hYmxlLVJ1bnNwYWNlRGVidWcgXCIgK1xuICAgICAgICBcIkVuYWJsZS12Uk5JRGF0YVNvdXJjZSBFeHBhbmQtQXJjaGl2ZSBFeHBvcnQtTnN4T2JqZWN0IEV4cG9ydC1TcGJtU3RvcmFnZVBvbGljeSBFeHBvcnQtVkFwcCBFeHBvcnQtVkRQb3J0R3JvdXAgRXhwb3J0LVZEU3dpdGNoIFwiICtcbiAgICAgICAgXCJFeHBvcnQtVk1Ib3N0UHJvZmlsZSBFeHBvcnQtdlJBSWNvbiBFeHBvcnQtdlJBUGFja2FnZSBGaW5kLUNvbW1hbmQgRmluZC1Ec2NSZXNvdXJjZSBGaW5kLU1vZHVsZSBGaW5kLU5zeFdoZXJlVk1Vc2VkIEZpbmQtUGFja2FnZSBcIiArXG4gICAgICAgIFwiRmluZC1QYWNrYWdlUHJvdmlkZXIgRmluZC1Sb2xlQ2FwYWJpbGl0eSBGaW5kLVNjcmlwdCBGb3JtYXQtSGV4IEZvcm1hdC1WTUhvc3REaXNrUGFydGl0aW9uIEZvcm1hdC1YTUwgR2VuZXJhdGUtVmVyc2lvbkluZm8gXCIgK1xuICAgICAgICBcIkdldC1BZHZhbmNlZFNldHRpbmcgR2V0LUFsYXJtQWN0aW9uIEdldC1BbGFybUFjdGlvblRyaWdnZXIgR2V0LUFsYXJtRGVmaW5pdGlvbiBHZXQtQW5ub3RhdGlvbiBHZXQtQ0REcml2ZSBHZXQtQ0lBY2Nlc3NDb250cm9sUnVsZSBcIiArXG4gICAgICAgIFwiR2V0LUNJRGF0YXN0b3JlIEdldC1DSU5ldHdvcmtBZGFwdGVyIEdldC1DSVJvbGUgR2V0LUNJVXNlciBHZXQtQ0lWQXBwIEdldC1DSVZBcHBOZXR3b3JrIEdldC1DSVZBcHBTdGFydFJ1bGUgR2V0LUNJVkFwcFRlbXBsYXRlIEdldC1DSVZNIFwiICtcbiAgICAgICAgXCJHZXQtQ0lWTVRlbXBsYXRlIEdldC1DSVZpZXcgR2V0LUNhdGFsb2cgR2V0LUNpc0NvbW1hbmQgR2V0LUNpc1NlcnZpY2UgR2V0LUNsb3VkQ29tbWFuZCBHZXQtQ2x1c3RlciBHZXQtQ29tcGF0aWJsZVZlcnNpb25BZGR0aW9uYVByb3BlcnRpZXNTdHIgXCIgK1xuICAgICAgICBcIkdldC1Db21wbGV4UmVzb3VyY2VRdWFsaWZpZXIgR2V0LUNvbmZpZ3VyYXRpb25FcnJvckNvdW50IEdldC1Db250ZW50TGlicmFyeUl0ZW0gR2V0LUN1c3RvbUF0dHJpYnV0ZSBHZXQtRFNDUmVzb3VyY2VNb2R1bGVzIEdldC1EYXRhY2VudGVyIFwiICtcbiAgICAgICAgXCJHZXQtRGF0YXN0b3JlIEdldC1EYXRhc3RvcmVDbHVzdGVyIEdldC1EcnNDbHVzdGVyR3JvdXAgR2V0LURyc1JlY29tbWVuZGF0aW9uIEdldC1EcnNSdWxlIEdldC1EcnNWTUhvc3RSdWxlIEdldC1Ec2NSZXNvdXJjZSBHZXQtRWRnZUdhdGV3YXkgXCIgK1xuICAgICAgICBcIkdldC1FbmNyeXB0ZWRQYXNzd29yZCBHZXQtRXJyb3JSZXBvcnQgR2V0LUVzeENsaSBHZXQtRXN4VG9wIEdldC1FeHRlcm5hbE5ldHdvcmsgR2V0LUZpbGVIYXNoIEdldC1GbG9wcHlEcml2ZSBHZXQtRm9sZGVyIEdldC1IQVByaW1hcnlWTUhvc3QgXCIgK1xuICAgICAgICBcIkdldC1IQ1hBcHBsaWFuY2UgR2V0LUhDWEFwcGxpYW5jZUNvbXB1dGUgR2V0LUhDWEFwcGxpYW5jZURWUyBHZXQtSENYQXBwbGlhbmNlRGF0YXN0b3JlIEdldC1IQ1hBcHBsaWFuY2VOZXR3b3JrIEdldC1IQ1hDb250YWluZXIgXCIgK1xuICAgICAgICBcIkdldC1IQ1hEYXRhc3RvcmUgR2V0LUhDWEdhdGV3YXkgR2V0LUhDWEludGVyY29ubmVjdFN0YXR1cyBHZXQtSENYSm9iIEdldC1IQ1hNaWdyYXRpb24gR2V0LUhDWE5ldHdvcmsgR2V0LUhDWE5ldHdvcmtFeHRlbnNpb24gXCIgK1xuICAgICAgICBcIkdldC1IQ1hSZXBsaWNhdGlvbiBHZXQtSENYUmVwbGljYXRpb25TbmFwc2hvdCBHZXQtSENYU2VydmljZSBHZXQtSENYU2l0ZSBHZXQtSENYU2l0ZVBhaXJpbmcgR2V0LUhDWFZNIEdldC1IYXJkRGlzayBHZXQtSVNjc2lIYmFUYXJnZXQgXCIgK1xuICAgICAgICBcIkdldC1Jbm5lck1vc3RFcnJvclJlY29yZCBHZXQtSW5zdGFsbFBhdGggR2V0LUluc3RhbGxlZE1vZHVsZSBHZXQtSW5zdGFsbGVkU2NyaXB0IEdldC1JbnZlbnRvcnkgR2V0LUl0ZW1Qcm9wZXJ0eVZhbHVlIEdldC1LZXlNYW5hZ2VtZW50U2VydmVyIFwiICtcbiAgICAgICAgXCJHZXQtS21pcENsaWVudENlcnRpZmljYXRlIEdldC1LbXNDbHVzdGVyIEdldC1Mb2cgR2V0LUxvZ1R5cGUgR2V0LU1hcmtkb3duT3B0aW9uIEdldC1NZWRpYSBHZXQtTW9mSW5zdGFuY2VOYW1lIEdldC1Nb2ZJbnN0YW5jZVRleHQgR2V0LU5ldHdvcmtBZGFwdGVyIEdldC1OZXR3b3JrUG9vbCBcIiArXG4gICAgICAgIFwiR2V0LU5mc1VzZXIgR2V0LU5pY1RlYW1pbmdQb2xpY3kgR2V0LU5zeEFwcGxpY2FibGVNZW1iZXIgR2V0LU5zeEFwcGxpY2FibGVTZWN1cml0eUFjdGlvbiBHZXQtTnN4QmFja2luZ0RWU3dpdGNoIEdldC1Oc3hCYWNraW5nUG9ydEdyb3VwIEdldC1Oc3hDbGlEZndBZGRyU2V0IFwiICtcbiAgICAgICAgXCJHZXQtTnN4Q2xpRGZ3RmlsdGVyIEdldC1Oc3hDbGlEZndSdWxlIEdldC1Oc3hDbHVzdGVyU3RhdHVzIEdldC1Oc3hDb250cm9sbGVyIEdldC1Oc3hEeW5hbWljQ3JpdGVyaWEgR2V0LU5zeER5bmFtaWNNZW1iZXJTZXQgR2V0LU5zeEVkZ2UgR2V0LU5zeEVkZ2VCZ3AgXCIgK1xuICAgICAgICBcIkdldC1Oc3hFZGdlQmdwTmVpZ2hib3VyIEdldC1Oc3hFZGdlQ2VydGlmaWNhdGUgR2V0LU5zeEVkZ2VDc3IgR2V0LU5zeEVkZ2VGaXJld2FsbCBHZXQtTnN4RWRnZUZpcmV3YWxsUnVsZSBHZXQtTnN4RWRnZUludGVyZmFjZSBHZXQtTnN4RWRnZUludGVyZmFjZUFkZHJlc3MgXCIgK1xuICAgICAgICBcIkdldC1Oc3hFZGdlTmF0IEdldC1Oc3hFZGdlTmF0UnVsZSBHZXQtTnN4RWRnZU9zcGYgR2V0LU5zeEVkZ2VPc3BmQXJlYSBHZXQtTnN4RWRnZU9zcGZJbnRlcmZhY2UgR2V0LU5zeEVkZ2VQcmVmaXggR2V0LU5zeEVkZ2VSZWRpc3RyaWJ1dGlvblJ1bGUgR2V0LU5zeEVkZ2VSb3V0aW5nIFwiICtcbiAgICAgICAgXCJHZXQtTnN4RWRnZVN0YXRpY1JvdXRlIEdldC1Oc3hFZGdlU3ViSW50ZXJmYWNlIEdldC1Oc3hGaXJld2FsbEV4Y2x1c2lvbkxpc3RNZW1iZXIgR2V0LU5zeEZpcmV3YWxsR2xvYmFsQ29uZmlndXJhdGlvbiBHZXQtTnN4RmlyZXdhbGxQdWJsaXNoU3RhdHVzIEdldC1Oc3hGaXJld2FsbFJ1bGUgXCIgK1xuICAgICAgICBcIkdldC1Oc3hGaXJld2FsbFJ1bGVNZW1iZXIgR2V0LU5zeEZpcmV3YWxsU2F2ZWRDb25maWd1cmF0aW9uIEdldC1Oc3hGaXJld2FsbFNlY3Rpb24gR2V0LU5zeEZpcmV3YWxsVGhyZXNob2xkIEdldC1Oc3hJcFBvb2wgR2V0LU5zeElwU2V0IEdldC1Oc3hMaWNlbnNlIEdldC1Oc3hMb2FkQmFsYW5jZXIgXCIgK1xuICAgICAgICBcIkdldC1Oc3hMb2FkQmFsYW5jZXJBcHBsaWNhdGlvblByb2ZpbGUgR2V0LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUnVsZSBHZXQtTnN4TG9hZEJhbGFuY2VyTW9uaXRvciBHZXQtTnN4TG9hZEJhbGFuY2VyUG9vbCBHZXQtTnN4TG9hZEJhbGFuY2VyUG9vbE1lbWJlciBHZXQtTnN4TG9hZEJhbGFuY2VyU3RhdHMgXCIgK1xuICAgICAgICBcIkdldC1Oc3hMb2FkQmFsYW5jZXJWaXAgR2V0LU5zeExvZ2ljYWxSb3V0ZXIgR2V0LU5zeExvZ2ljYWxSb3V0ZXJCZ3AgR2V0LU5zeExvZ2ljYWxSb3V0ZXJCZ3BOZWlnaGJvdXIgR2V0LU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2UgR2V0LU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2luZyBcIiArXG4gICAgICAgIFwiR2V0LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgR2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmIEdldC1Oc3hMb2dpY2FsUm91dGVyT3NwZkFyZWEgR2V0LU5zeExvZ2ljYWxSb3V0ZXJPc3BmSW50ZXJmYWNlIEdldC1Oc3hMb2dpY2FsUm91dGVyUHJlZml4IFwiICtcbiAgICAgICAgXCJHZXQtTnN4TG9naWNhbFJvdXRlclJlZGlzdHJpYnV0aW9uUnVsZSBHZXQtTnN4TG9naWNhbFJvdXRlclJvdXRpbmcgR2V0LU5zeExvZ2ljYWxSb3V0ZXJTdGF0aWNSb3V0ZSBHZXQtTnN4TG9naWNhbFN3aXRjaCBHZXQtTnN4TWFjU2V0IEdldC1Oc3hNYW5hZ2VyQmFja3VwIFwiICtcbiAgICAgICAgXCJHZXQtTnN4TWFuYWdlckNlcnRpZmljYXRlIEdldC1Oc3hNYW5hZ2VyQ29tcG9uZW50U3VtbWFyeSBHZXQtTnN4TWFuYWdlck5ldHdvcmsgR2V0LU5zeE1hbmFnZXJSb2xlIEdldC1Oc3hNYW5hZ2VyU3NvQ29uZmlnIEdldC1Oc3hNYW5hZ2VyU3luY1N0YXR1cyBHZXQtTnN4TWFuYWdlclN5c2xvZ1NlcnZlciBcIiArXG4gICAgICAgIFwiR2V0LU5zeE1hbmFnZXJTeXN0ZW1TdW1tYXJ5IEdldC1Oc3hNYW5hZ2VyVGltZVNldHRpbmdzIEdldC1Oc3hNYW5hZ2VyVmNlbnRlckNvbmZpZyBHZXQtTnN4U2Vjb25kYXJ5TWFuYWdlciBHZXQtTnN4U2VjdXJpdHlHcm91cCBHZXQtTnN4U2VjdXJpdHlHcm91cEVmZmVjdGl2ZUlwQWRkcmVzcyBcIiArXG4gICAgICAgIFwiR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVNYWNBZGRyZXNzIEdldC1Oc3hTZWN1cml0eUdyb3VwRWZmZWN0aXZlTWVtYmVyIEdldC1Oc3hTZWN1cml0eUdyb3VwRWZmZWN0aXZlVmlydHVhbE1hY2hpbmUgR2V0LU5zeFNlY3VyaXR5R3JvdXBFZmZlY3RpdmVWbmljIFwiICtcbiAgICAgICAgXCJHZXQtTnN4U2VjdXJpdHlHcm91cE1lbWJlclR5cGVzIEdldC1Oc3hTZWN1cml0eVBvbGljeSBHZXQtTnN4U2VjdXJpdHlQb2xpY3lIaWdoZXN0VXNlZFByZWNlZGVuY2UgR2V0LU5zeFNlY3VyaXR5UG9saWN5UnVsZSBHZXQtTnN4U2VjdXJpdHlUYWcgR2V0LU5zeFNlY3VyaXR5VGFnQXNzaWdubWVudCBcIiArXG4gICAgICAgIFwiR2V0LU5zeFNlZ21lbnRJZFJhbmdlIEdldC1Oc3hTZXJ2aWNlIEdldC1Oc3hTZXJ2aWNlRGVmaW5pdGlvbiBHZXQtTnN4U2VydmljZUdyb3VwIEdldC1Oc3hTZXJ2aWNlR3JvdXBNZW1iZXIgR2V0LU5zeFNlcnZpY2VQcm9maWxlIEdldC1Oc3hTcG9vZmd1YXJkTmljIEdldC1Oc3hTcG9vZmd1YXJkUG9saWN5IFwiICtcbiAgICAgICAgXCJHZXQtTnN4U3NsVnBuIEdldC1Oc3hTc2xWcG5BdXRoU2VydmVyIEdldC1Oc3hTc2xWcG5DbGllbnRJbnN0YWxsYXRpb25QYWNrYWdlIEdldC1Oc3hTc2xWcG5JcFBvb2wgR2V0LU5zeFNzbFZwblByaXZhdGVOZXR3b3JrIEdldC1Oc3hTc2xWcG5Vc2VyIEdldC1Oc3hUcmFuc3BvcnRab25lIFwiICtcbiAgICAgICAgXCJHZXQtTnN4VXNlclJvbGUgR2V0LU5zeFZkc0NvbnRleHQgR2V0LU5zeHRQb2xpY3lTZXJ2aWNlIEdldC1Oc3h0U2VydmljZSBHZXQtT1NDdXN0b21pemF0aW9uTmljTWFwcGluZyBHZXQtT1NDdXN0b21pemF0aW9uU3BlYyBHZXQtT3JnIEdldC1PcmdOZXR3b3JrIEdldC1PcmdWZGMgXCIgK1xuICAgICAgICBcIkdldC1PcmdWZGNOZXR3b3JrIEdldC1PdmZDb25maWd1cmF0aW9uIEdldC1QU0N1cnJlbnRDb25maWd1cmF0aW9uTm9kZSBHZXQtUFNEZWZhdWx0Q29uZmlndXJhdGlvbkRvY3VtZW50IEdldC1QU01ldGFDb25maWdEb2N1bWVudEluc3RWZXJzaW9uSW5mbyBHZXQtUFNNZXRhQ29uZmlndXJhdGlvblByb2Nlc3NlZCBcIiArXG4gICAgICAgIFwiR2V0LVBTUmVhZExpbmVLZXlIYW5kbGVyIEdldC1QU1JlYWRMaW5lT3B0aW9uIEdldC1QU1JlcG9zaXRvcnkgR2V0LVBTVG9wQ29uZmlndXJhdGlvbk5hbWUgR2V0LVBTVmVyc2lvbiBHZXQtUGFja2FnZSBHZXQtUGFja2FnZVByb3ZpZGVyIEdldC1QYWNrYWdlU291cmNlIEdldC1QYXNzdGhyb3VnaERldmljZSBcIiArXG4gICAgICAgIFwiR2V0LVBvc2l0aW9uSW5mbyBHZXQtUG93ZXJDTElDb21tdW5pdHkgR2V0LVBvd2VyQ0xJQ29uZmlndXJhdGlvbiBHZXQtUG93ZXJDTElIZWxwIEdldC1Qb3dlckNMSVZlcnNpb24gR2V0LVBvd2VyTnN4VmVyc2lvbiBHZXQtUHJvdmlkZXJWZGMgR2V0LVB1YmxpY0tleUZyb21GaWxlIFwiICtcbiAgICAgICAgXCJHZXQtUHVibGljS2V5RnJvbVN0b3JlIEdldC1SZXNvdXJjZVBvb2wgR2V0LVJ1bnNwYWNlIEdldC1SdW5zcGFjZURlYnVnIEdldC1TY3NpQ29udHJvbGxlciBHZXQtU2NzaUx1biBHZXQtU2NzaUx1blBhdGggR2V0LVNlY3VyaXR5SW5mbyBHZXQtU2VjdXJpdHlQb2xpY3kgR2V0LVNuYXBzaG90IFwiICtcbiAgICAgICAgXCJHZXQtU3BibUNhcGFiaWxpdHkgR2V0LVNwYm1Db21wYXRpYmxlU3RvcmFnZSBHZXQtU3BibUVudGl0eUNvbmZpZ3VyYXRpb24gR2V0LVNwYm1GYXVsdERvbWFpbiBHZXQtU3BibVBvaW50SW5UaW1lUmVwbGljYSBHZXQtU3BibVJlcGxpY2F0aW9uR3JvdXAgR2V0LVNwYm1SZXBsaWNhdGlvblBhaXIgXCIgK1xuICAgICAgICBcIkdldC1TcGJtU3RvcmFnZVBvbGljeSBHZXQtU3RhdCBHZXQtU3RhdEludGVydmFsIEdldC1TdGF0VHlwZSBHZXQtVGFnIEdldC1UYWdBc3NpZ25tZW50IEdldC1UYWdDYXRlZ29yeSBHZXQtVGFzayBHZXQtVGVtcGxhdGUgR2V0LVRpbWVab25lIEdldC1VcHRpbWUgR2V0LVVzYkRldmljZSBHZXQtVkFJT0ZpbHRlciBcIiArXG4gICAgICAgIFwiR2V0LVZBcHAgR2V0LVZEQmxvY2tlZFBvbGljeSBHZXQtVkRQb3J0IEdldC1WRFBvcnRncm91cCBHZXQtVkRQb3J0Z3JvdXBPdmVycmlkZVBvbGljeSBHZXQtVkRTZWN1cml0eVBvbGljeSBHZXQtVkRTd2l0Y2ggR2V0LVZEU3dpdGNoUHJpdmF0ZVZsYW4gR2V0LVZEVHJhZmZpY1NoYXBpbmdQb2xpY3kgXCIgK1xuICAgICAgICBcIkdldC1WRFVwbGlua0xhY3BQb2xpY3kgR2V0LVZEVXBsaW5rVGVhbWluZ1BvbGljeSBHZXQtVkRpc2sgR2V0LVZJQWNjb3VudCBHZXQtVklDb21tYW5kIEdldC1WSUNyZWRlbnRpYWxTdG9yZUl0ZW0gR2V0LVZJRXZlbnQgR2V0LVZJT2JqZWN0QnlWSVZpZXcgR2V0LVZJUGVybWlzc2lvbiBHZXQtVklQcml2aWxlZ2UgXCIgK1xuICAgICAgICBcIkdldC1WSVByb3BlcnR5IEdldC1WSVJvbGUgR2V0LVZNIEdldC1WTUd1ZXN0IEdldC1WTUhvc3QgR2V0LVZNSG9zdEFjY291bnQgR2V0LVZNSG9zdEFkdmFuY2VkQ29uZmlndXJhdGlvbiBHZXQtVk1Ib3N0QXV0aGVudGljYXRpb24gR2V0LVZNSG9zdEF2YWlsYWJsZVRpbWVab25lIFwiICtcbiAgICAgICAgXCJHZXQtVk1Ib3N0RGlhZ25vc3RpY1BhcnRpdGlvbiBHZXQtVk1Ib3N0RGlzayBHZXQtVk1Ib3N0RGlza1BhcnRpdGlvbiBHZXQtVk1Ib3N0RmlyZXdhbGxEZWZhdWx0UG9saWN5IEdldC1WTUhvc3RGaXJld2FsbEV4Y2VwdGlvbiBHZXQtVk1Ib3N0RmlybXdhcmUgR2V0LVZNSG9zdEhhcmR3YXJlIFwiICtcbiAgICAgICAgXCJHZXQtVk1Ib3N0SGJhIEdldC1WTUhvc3RNb2R1bGUgR2V0LVZNSG9zdE5ldHdvcmsgR2V0LVZNSG9zdE5ldHdvcmtBZGFwdGVyIEdldC1WTUhvc3ROdHBTZXJ2ZXIgR2V0LVZNSG9zdFBhdGNoIEdldC1WTUhvc3RQY2lEZXZpY2UgR2V0LVZNSG9zdFByb2ZpbGUgXCIgK1xuICAgICAgICBcIkdldC1WTUhvc3RQcm9maWxlSW1hZ2VDYWNoZUNvbmZpZ3VyYXRpb24gR2V0LVZNSG9zdFByb2ZpbGVSZXF1aXJlZElucHV0IEdldC1WTUhvc3RQcm9maWxlU3RvcmFnZURldmljZUNvbmZpZ3VyYXRpb24gR2V0LVZNSG9zdFByb2ZpbGVVc2VyQ29uZmlndXJhdGlvbiBcIiArXG4gICAgICAgIFwiR2V0LVZNSG9zdFByb2ZpbGVWbVBvcnRHcm91cENvbmZpZ3VyYXRpb24gR2V0LVZNSG9zdFJvdXRlIEdldC1WTUhvc3RTZXJ2aWNlIEdldC1WTUhvc3RTbm1wIEdldC1WTUhvc3RTdGFydFBvbGljeSBHZXQtVk1Ib3N0U3RvcmFnZSBHZXQtVk1Ib3N0U3lzTG9nU2VydmVyIEdldC1WTVF1ZXN0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtVk1SZXNvdXJjZUNvbmZpZ3VyYXRpb24gR2V0LVZNU3RhcnRQb2xpY3kgR2V0LVZUcG0gR2V0LVZUcG1DU1IgR2V0LVZUcG1DZXJ0aWZpY2F0ZSBHZXQtVmFzYVByb3ZpZGVyIEdldC1WYXNhU3RvcmFnZUFycmF5IEdldC1WaWV3IEdldC1WaXJ0dWFsUG9ydEdyb3VwIEdldC1WaXJ0dWFsU3dpdGNoIFwiICtcbiAgICAgICAgXCJHZXQtVm1jU2RkY05ldHdvcmtTZXJ2aWNlIEdldC1WbWNTZXJ2aWNlIEdldC1Wc2FuQ2x1c3RlckNvbmZpZ3VyYXRpb24gR2V0LVZzYW5Db21wb25lbnQgR2V0LVZzYW5EaXNrIEdldC1Wc2FuRGlza0dyb3VwIEdldC1Wc2FuRXZhY3VhdGlvblBsYW4gR2V0LVZzYW5GYXVsdERvbWFpbiBcIiArXG4gICAgICAgIFwiR2V0LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwIEdldC1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cFRhcmdldEFzc29jaWF0aW9uIEdldC1Wc2FuSXNjc2lMdW4gR2V0LVZzYW5Jc2NzaVRhcmdldCBHZXQtVnNhbk9iamVjdCBHZXQtVnNhblJlc3luY2luZ0NvbXBvbmVudCBHZXQtVnNhblJ1bnRpbWVJbmZvIFwiICtcbiAgICAgICAgXCJHZXQtVnNhblNwYWNlVXNhZ2UgR2V0LVZzYW5TdGF0IEdldC1Wc2FuVmlldyBHZXQtdlJBQXBwbGlhbmNlU2VydmljZVN0YXR1cyBHZXQtdlJBQXV0aG9yaXphdGlvblJvbGUgR2V0LXZSQUJsdWVwcmludCBHZXQtdlJBQnVzaW5lc3NHcm91cCBHZXQtdlJBQ2F0YWxvZ0l0ZW0gXCIgK1xuICAgICAgICBcIkdldC12UkFDYXRhbG9nSXRlbVJlcXVlc3RUZW1wbGF0ZSBHZXQtdlJBQ2F0YWxvZ1ByaW5jaXBhbCBHZXQtdlJBQ29tcG9uZW50UmVnaXN0cnlTZXJ2aWNlIEdldC12UkFDb21wb25lbnRSZWdpc3RyeVNlcnZpY2VFbmRwb2ludCBHZXQtdlJBQ29tcG9uZW50UmVnaXN0cnlTZXJ2aWNlU3RhdHVzIFwiICtcbiAgICAgICAgXCJHZXQtdlJBQ29udGVudCBHZXQtdlJBQ29udGVudERhdGEgR2V0LXZSQUNvbnRlbnRUeXBlIEdldC12UkFDdXN0b21Gb3JtIEdldC12UkFFbnRpdGxlZENhdGFsb2dJdGVtIEdldC12UkFFbnRpdGxlZFNlcnZpY2UgR2V0LXZSQUVudGl0bGVtZW50IEdldC12UkFFeHRlcm5hbE5ldHdvcmtQcm9maWxlIFwiICtcbiAgICAgICAgXCJHZXQtdlJBR3JvdXBQcmluY2lwYWwgR2V0LXZSQUljb24gR2V0LXZSQU5BVE5ldHdvcmtQcm9maWxlIEdldC12UkFOZXR3b3JrUHJvZmlsZUlQQWRkcmVzc0xpc3QgR2V0LXZSQU5ldHdvcmtQcm9maWxlSVBSYW5nZVN1bW1hcnkgR2V0LXZSQVBhY2thZ2UgR2V0LXZSQVBhY2thZ2VDb250ZW50IFwiICtcbiAgICAgICAgXCJHZXQtdlJBUHJvcGVydHlEZWZpbml0aW9uIEdldC12UkFQcm9wZXJ0eUdyb3VwIEdldC12UkFSZXF1ZXN0IEdldC12UkFSZXF1ZXN0RGV0YWlsIEdldC12UkFSZXNlcnZhdGlvbiBHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2UgR2V0LXZSQVJlc2VydmF0aW9uQ29tcHV0ZVJlc291cmNlTWVtb3J5IFwiICtcbiAgICAgICAgXCJHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2VOZXR3b3JrIEdldC12UkFSZXNlcnZhdGlvbkNvbXB1dGVSZXNvdXJjZVJlc291cmNlUG9vbCBHZXQtdlJBUmVzZXJ2YXRpb25Db21wdXRlUmVzb3VyY2VTdG9yYWdlIEdldC12UkFSZXNlcnZhdGlvblBvbGljeSBcIiArXG4gICAgICAgIFwiR2V0LXZSQVJlc2VydmF0aW9uVGVtcGxhdGUgR2V0LXZSQVJlc2VydmF0aW9uVHlwZSBHZXQtdlJBUmVzb3VyY2UgR2V0LXZSQVJlc291cmNlQWN0aW9uIEdldC12UkFSZXNvdXJjZUFjdGlvblJlcXVlc3RUZW1wbGF0ZSBHZXQtdlJBUmVzb3VyY2VNZXRyaWMgR2V0LXZSQVJlc291cmNlT3BlcmF0aW9uIFwiICtcbiAgICAgICAgXCJHZXQtdlJBUmVzb3VyY2VUeXBlIEdldC12UkFSb3V0ZWROZXR3b3JrUHJvZmlsZSBHZXQtdlJBU2VydmljZSBHZXQtdlJBU2VydmljZUJsdWVwcmludCBHZXQtdlJBU291cmNlTWFjaGluZSBHZXQtdlJBU3RvcmFnZVJlc2VydmF0aW9uUG9saWN5IEdldC12UkFUZW5hbnQgR2V0LXZSQVRlbmFudERpcmVjdG9yeSBcIiArXG4gICAgICAgIFwiR2V0LXZSQVRlbmFudERpcmVjdG9yeVN0YXR1cyBHZXQtdlJBVGVuYW50Um9sZSBHZXQtdlJBVXNlclByaW5jaXBhbCBHZXQtdlJBVXNlclByaW5jaXBhbEdyb3VwTWVtYmVyc2hpcCBHZXQtdlJBVmVyc2lvbiBHZXQtdlJOSUFQSVZlcnNpb24gR2V0LXZSTklBcHBsaWNhdGlvbiBcIiArXG4gICAgICAgIFwiR2V0LXZSTklBcHBsaWNhdGlvblRpZXIgR2V0LXZSTklEYXRhU291cmNlIEdldC12Uk5JRGF0YVNvdXJjZVNOTVBDb25maWcgR2V0LXZSTklEYXRhc3RvcmUgR2V0LXZSTklEaXN0cmlidXRlZFN3aXRjaCBHZXQtdlJOSURpc3RyaWJ1dGVkU3dpdGNoUG9ydEdyb3VwIEdldC12Uk5JRW50aXR5IFwiICtcbiAgICAgICAgXCJHZXQtdlJOSUVudGl0eU5hbWUgR2V0LXZSTklGaXJld2FsbFJ1bGUgR2V0LXZSTklGbG93IEdldC12Uk5JSG9zdCBHZXQtdlJOSUhvc3RWTUtOaWMgR2V0LXZSTklJUFNldCBHZXQtdlJOSUwyTmV0d29yayBHZXQtdlJOSU5TWE1hbmFnZXIgR2V0LXZSTklOb2RlcyBHZXQtdlJOSVByb2JsZW0gXCIgK1xuICAgICAgICBcIkdldC12Uk5JUmVjb21tZW5kZWRSdWxlcyBHZXQtdlJOSVJlY29tbWVuZGVkUnVsZXNOc3hCdW5kbGUgR2V0LXZSTklTZWN1cml0eUdyb3VwIEdldC12Uk5JU2VjdXJpdHlUYWcgR2V0LXZSTklTZXJ2aWNlIEdldC12Uk5JU2VydmljZUdyb3VwIEdldC12Uk5JVk0gR2V0LXZSTklWTXZOSUMgXCIgK1xuICAgICAgICBcIkdldC12Uk5JdkNlbnRlciBHZXQtdlJOSXZDZW50ZXJDbHVzdGVyIEdldC12Uk5JdkNlbnRlckRhdGFjZW50ZXIgR2V0LXZSTkl2Q2VudGVyRm9sZGVyIEdyYW50LU5zeFNwb29mZ3VhcmROaWNBcHByb3ZhbCBJbXBvcnQtQ0lWQXBwIEltcG9ydC1DSVZBcHBUZW1wbGF0ZSBJbXBvcnQtTnN4T2JqZWN0IFwiICtcbiAgICAgICAgXCJJbXBvcnQtUGFja2FnZVByb3ZpZGVyIEltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUgSW1wb3J0LVNwYm1TdG9yYWdlUG9saWN5IEltcG9ydC1WQXBwIEltcG9ydC1WTUhvc3RQcm9maWxlIEltcG9ydC12UkFDb250ZW50RGF0YSBJbXBvcnQtdlJBSWNvbiBJbXBvcnQtdlJBUGFja2FnZSBcIiArXG4gICAgICAgIFwiSW5pdGlhbGl6ZS1Db25maWd1cmF0aW9uUnVudGltZVN0YXRlIEluc3RhbGwtTW9kdWxlIEluc3RhbGwtTnN4Q2x1c3RlciBJbnN0YWxsLVBhY2thZ2UgSW5zdGFsbC1QYWNrYWdlUHJvdmlkZXIgSW5zdGFsbC1TY3JpcHQgSW5zdGFsbC1WTUhvc3RQYXRjaCBJbnZva2UtRHJzUmVjb21tZW5kYXRpb24gXCIgK1xuICAgICAgICBcIkludm9rZS1Oc3hDbGkgSW52b2tlLU5zeENsdXN0ZXJSZXNvbHZlQWxsIEludm9rZS1Oc3hNYW5hZ2VyU3luYyBJbnZva2UtTnN4UmVzdE1ldGhvZCBJbnZva2UtTnN4V2ViUmVxdWVzdCBJbnZva2UtVk1Ib3N0UHJvZmlsZSBJbnZva2UtVk1TY3JpcHQgSW52b2tlLVhwYXRoUXVlcnkgXCIgK1xuICAgICAgICBcIkludm9rZS12UkFEYXRhQ29sbGVjdGlvbiBJbnZva2UtdlJBUmVzdE1ldGhvZCBJbnZva2UtdlJBVGVuYW50RGlyZWN0b3J5U3luYyBJbnZva2UtdlJOSVJlc3RNZXRob2QgSm9pbi1TdHJpbmcgTW91bnQtVG9vbHMgTW92ZS1DbHVzdGVyIE1vdmUtRGF0YWNlbnRlciBNb3ZlLURhdGFzdG9yZSBNb3ZlLUZvbGRlciBcIiArXG4gICAgICAgIFwiTW92ZS1IYXJkRGlzayBNb3ZlLUludmVudG9yeSBNb3ZlLU5zeFNlY3VyaXR5UG9saWN5UnVsZSBNb3ZlLVJlc291cmNlUG9vbCBNb3ZlLVRlbXBsYXRlIE1vdmUtVkFwcCBNb3ZlLVZEaXNrIE1vdmUtVk0gTW92ZS1WTUhvc3QgTmV3LUFkdmFuY2VkU2V0dGluZyBOZXctQWxhcm1BY3Rpb24gXCIgK1xuICAgICAgICBcIk5ldy1BbGFybUFjdGlvblRyaWdnZXIgTmV3LUNERHJpdmUgTmV3LUNJQWNjZXNzQ29udHJvbFJ1bGUgTmV3LUNJVkFwcCBOZXctQ0lWQXBwTmV0d29yayBOZXctQ0lWQXBwVGVtcGxhdGUgTmV3LUNJVk0gTmV3LUNsdXN0ZXIgTmV3LUN1c3RvbUF0dHJpYnV0ZSBOZXctRGF0YWNlbnRlciBOZXctRGF0YXN0b3JlIFwiICtcbiAgICAgICAgXCJOZXctRGF0YXN0b3JlQ2x1c3RlciBOZXctRGF0YXN0b3JlRHJpdmUgTmV3LURyc0NsdXN0ZXJHcm91cCBOZXctRHJzUnVsZSBOZXctRHJzVk1Ib3N0UnVsZSBOZXctRHNjQ2hlY2tzdW0gTmV3LUZsb3BweURyaXZlIE5ldy1Gb2xkZXIgTmV3LUd1aWQgTmV3LUhDWEFwcGxpYW5jZSBOZXctSENYTWlncmF0aW9uIFwiICtcbiAgICAgICAgXCJOZXctSENYTmV0d29ya0V4dGVuc2lvbiBOZXctSENYTmV0d29ya01hcHBpbmcgTmV3LUhDWFJlcGxpY2F0aW9uIE5ldy1IQ1hTaXRlUGFpcmluZyBOZXctSENYU3RhdGljUm91dGUgTmV3LUhhcmREaXNrIE5ldy1JU2NzaUhiYVRhcmdldCBOZXctS21pcENsaWVudENlcnRpZmljYXRlIFwiICtcbiAgICAgICAgXCJOZXctTmV0d29ya0FkYXB0ZXIgTmV3LU5mc1VzZXIgTmV3LU5zeEFkZHJlc3NTcGVjIE5ldy1Oc3hDbHVzdGVyVnhsYW5Db25maWcgTmV3LU5zeENvbnRyb2xsZXIgTmV3LU5zeER5bmFtaWNDcml0ZXJpYVNwZWMgTmV3LU5zeEVkZ2UgTmV3LU5zeEVkZ2VCZ3BOZWlnaGJvdXIgTmV3LU5zeEVkZ2VDc3IgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hFZGdlRmlyZXdhbGxSdWxlIE5ldy1Oc3hFZGdlSW50ZXJmYWNlU3BlYyBOZXctTnN4RWRnZU5hdFJ1bGUgTmV3LU5zeEVkZ2VPc3BmQXJlYSBOZXctTnN4RWRnZU9zcGZJbnRlcmZhY2UgTmV3LU5zeEVkZ2VQcmVmaXggTmV3LU5zeEVkZ2VSZWRpc3RyaWJ1dGlvblJ1bGUgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hFZGdlU2VsZlNpZ25lZENlcnRpZmljYXRlIE5ldy1Oc3hFZGdlU3RhdGljUm91dGUgTmV3LU5zeEVkZ2VTdWJJbnRlcmZhY2UgTmV3LU5zeEVkZ2VTdWJJbnRlcmZhY2VTcGVjIE5ldy1Oc3hGaXJld2FsbFJ1bGUgTmV3LU5zeEZpcmV3YWxsU2F2ZWRDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJOZXctTnN4RmlyZXdhbGxTZWN0aW9uIE5ldy1Oc3hJcFBvb2wgTmV3LU5zeElwU2V0IE5ldy1Oc3hMb2FkQmFsYW5jZXJBcHBsaWNhdGlvblByb2ZpbGUgTmV3LU5zeExvYWRCYWxhbmNlckFwcGxpY2F0aW9uUnVsZSBOZXctTnN4TG9hZEJhbGFuY2VyTWVtYmVyU3BlYyBcIiArXG4gICAgICAgIFwiTmV3LU5zeExvYWRCYWxhbmNlck1vbml0b3IgTmV3LU5zeExvYWRCYWxhbmNlclBvb2wgTmV3LU5zeExvZ2ljYWxSb3V0ZXIgTmV3LU5zeExvZ2ljYWxSb3V0ZXJCZ3BOZWlnaGJvdXIgTmV3LU5zeExvZ2ljYWxSb3V0ZXJCcmlkZ2UgTmV3LU5zeExvZ2ljYWxSb3V0ZXJJbnRlcmZhY2UgXCIgK1xuICAgICAgICBcIk5ldy1Oc3hMb2dpY2FsUm91dGVySW50ZXJmYWNlU3BlYyBOZXctTnN4TG9naWNhbFJvdXRlck9zcGZBcmVhIE5ldy1Oc3hMb2dpY2FsUm91dGVyT3NwZkludGVyZmFjZSBOZXctTnN4TG9naWNhbFJvdXRlclByZWZpeCBOZXctTnN4TG9naWNhbFJvdXRlclJlZGlzdHJpYnV0aW9uUnVsZSBcIiArXG4gICAgICAgIFwiTmV3LU5zeExvZ2ljYWxSb3V0ZXJTdGF0aWNSb3V0ZSBOZXctTnN4TG9naWNhbFN3aXRjaCBOZXctTnN4TWFjU2V0IE5ldy1Oc3hNYW5hZ2VyIE5ldy1Oc3hTZWN1cml0eUdyb3VwIE5ldy1Oc3hTZWN1cml0eVBvbGljeSBOZXctTnN4U2VjdXJpdHlQb2xpY3lBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJOZXctTnN4U2VjdXJpdHlQb2xpY3lGaXJld2FsbFJ1bGVTcGVjIE5ldy1Oc3hTZWN1cml0eVBvbGljeUd1ZXN0SW50cm9zcGVjdGlvblNwZWMgTmV3LU5zeFNlY3VyaXR5UG9saWN5TmV0d29ya0ludHJvc3BlY3Rpb25TcGVjIE5ldy1Oc3hTZWN1cml0eVRhZyBOZXctTnN4U2VjdXJpdHlUYWdBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJOZXctTnN4U2VnbWVudElkUmFuZ2UgTmV3LU5zeFNlcnZpY2UgTmV3LU5zeFNlcnZpY2VHcm91cCBOZXctTnN4U3Bvb2ZndWFyZFBvbGljeSBOZXctTnN4U3NsVnBuQXV0aFNlcnZlciBOZXctTnN4U3NsVnBuQ2xpZW50SW5zdGFsbGF0aW9uUGFja2FnZSBOZXctTnN4U3NsVnBuSXBQb29sIFwiICtcbiAgICAgICAgXCJOZXctTnN4U3NsVnBuUHJpdmF0ZU5ldHdvcmsgTmV3LU5zeFNzbFZwblVzZXIgTmV3LU5zeFRyYW5zcG9ydFpvbmUgTmV3LU5zeFZkc0NvbnRleHQgTmV3LU9TQ3VzdG9taXphdGlvbk5pY01hcHBpbmcgTmV3LU9TQ3VzdG9taXphdGlvblNwZWMgTmV3LU9yZyBOZXctT3JnTmV0d29yayBOZXctT3JnVmRjIFwiICtcbiAgICAgICAgXCJOZXctT3JnVmRjTmV0d29yayBOZXctUmVzb3VyY2VQb29sIE5ldy1TY3JpcHRGaWxlSW5mbyBOZXctU2NzaUNvbnRyb2xsZXIgTmV3LVNuYXBzaG90IE5ldy1TcGJtUnVsZSBOZXctU3BibVJ1bGVTZXQgTmV3LVNwYm1TdG9yYWdlUG9saWN5IE5ldy1TdGF0SW50ZXJ2YWwgTmV3LVRhZyBcIiArXG4gICAgICAgIFwiTmV3LVRhZ0Fzc2lnbm1lbnQgTmV3LVRhZ0NhdGVnb3J5IE5ldy1UZW1wbGF0ZSBOZXctVGVtcG9yYXJ5RmlsZSBOZXctVkFJT0ZpbHRlciBOZXctVkFwcCBOZXctVkRQb3J0Z3JvdXAgTmV3LVZEU3dpdGNoIE5ldy1WRFN3aXRjaFByaXZhdGVWbGFuIE5ldy1WRGlzayBcIiArXG4gICAgICAgIFwiTmV3LVZJQ3JlZGVudGlhbFN0b3JlSXRlbSBOZXctVklJbnZlbnRvcnlEcml2ZSBOZXctVklQZXJtaXNzaW9uIE5ldy1WSVByb3BlcnR5IE5ldy1WSVJvbGUgTmV3LVZJU2FtbFNlY3VyaXR5Q29udGV4dCBOZXctVk0gTmV3LVZNSG9zdEFjY291bnQgTmV3LVZNSG9zdE5ldHdvcmtBZGFwdGVyIFwiICtcbiAgICAgICAgXCJOZXctVk1Ib3N0UHJvZmlsZSBOZXctVk1Ib3N0UHJvZmlsZVZtUG9ydEdyb3VwQ29uZmlndXJhdGlvbiBOZXctVk1Ib3N0Um91dGUgTmV3LVZUcG0gTmV3LVZhc2FQcm92aWRlciBOZXctVmNzT0F1dGhTZWN1cml0eUNvbnRleHQgTmV3LVZpcnR1YWxQb3J0R3JvdXAgTmV3LVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIk5ldy1Wc2FuRGlzayBOZXctVnNhbkRpc2tHcm91cCBOZXctVnNhbkZhdWx0RG9tYWluIE5ldy1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cCBOZXctVnNhbklzY3NpSW5pdGlhdG9yR3JvdXBUYXJnZXRBc3NvY2lhdGlvbiBOZXctVnNhbklzY3NpTHVuIE5ldy1Wc2FuSXNjc2lUYXJnZXQgXCIgK1xuICAgICAgICBcIk5ldy12UkFCdXNpbmVzc0dyb3VwIE5ldy12UkFFbnRpdGxlbWVudCBOZXctdlJBRXh0ZXJuYWxOZXR3b3JrUHJvZmlsZSBOZXctdlJBR3JvdXBQcmluY2lwYWwgTmV3LXZSQU5BVE5ldHdvcmtQcm9maWxlIE5ldy12UkFOZXR3b3JrUHJvZmlsZUlQUmFuZ2VEZWZpbml0aW9uIE5ldy12UkFQYWNrYWdlIFwiICtcbiAgICAgICAgXCJOZXctdlJBUHJvcGVydHlEZWZpbml0aW9uIE5ldy12UkFQcm9wZXJ0eUdyb3VwIE5ldy12UkFSZXNlcnZhdGlvbiBOZXctdlJBUmVzZXJ2YXRpb25OZXR3b3JrRGVmaW5pdGlvbiBOZXctdlJBUmVzZXJ2YXRpb25Qb2xpY3kgTmV3LXZSQVJlc2VydmF0aW9uU3RvcmFnZURlZmluaXRpb24gXCIgK1xuICAgICAgICBcIk5ldy12UkFSb3V0ZWROZXR3b3JrUHJvZmlsZSBOZXctdlJBU2VydmljZSBOZXctdlJBU3RvcmFnZVJlc2VydmF0aW9uUG9saWN5IE5ldy12UkFUZW5hbnQgTmV3LXZSQVRlbmFudERpcmVjdG9yeSBOZXctdlJBVXNlclByaW5jaXBhbCBOZXctdlJOSUFwcGxpY2F0aW9uIE5ldy12Uk5JQXBwbGljYXRpb25UaWVyIFwiICtcbiAgICAgICAgXCJOZXctdlJOSURhdGFTb3VyY2UgT3Blbi1WTUNvbnNvbGVXaW5kb3cgUHVibGlzaC1Nb2R1bGUgUHVibGlzaC1Oc3hTcG9vZmd1YXJkUG9saWN5IFB1Ymxpc2gtU2NyaXB0IFJlZ2lzdGVyLVBTUmVwb3NpdG9yeSBSZWdpc3Rlci1QYWNrYWdlU291cmNlIFJlbW92ZS1BZHZhbmNlZFNldHRpbmcgXCIgK1xuICAgICAgICBcIlJlbW92ZS1BbGFybUFjdGlvbiBSZW1vdmUtQWxhcm1BY3Rpb25UcmlnZ2VyIFJlbW92ZS1BbGlhcyBSZW1vdmUtQ0REcml2ZSBSZW1vdmUtQ0lBY2Nlc3NDb250cm9sUnVsZSBSZW1vdmUtQ0lWQXBwIFJlbW92ZS1DSVZBcHBOZXR3b3JrIFJlbW92ZS1DSVZBcHBUZW1wbGF0ZSBSZW1vdmUtQ2x1c3RlciBcIiArXG4gICAgICAgIFwiUmVtb3ZlLUN1c3RvbUF0dHJpYnV0ZSBSZW1vdmUtRGF0YWNlbnRlciBSZW1vdmUtRGF0YXN0b3JlIFJlbW92ZS1EYXRhc3RvcmVDbHVzdGVyIFJlbW92ZS1EcnNDbHVzdGVyR3JvdXAgUmVtb3ZlLURyc1J1bGUgUmVtb3ZlLURyc1ZNSG9zdFJ1bGUgUmVtb3ZlLUZsb3BweURyaXZlIFJlbW92ZS1Gb2xkZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1IQ1hBcHBsaWFuY2UgUmVtb3ZlLUhDWE5ldHdvcmtFeHRlbnNpb24gUmVtb3ZlLUhDWFJlcGxpY2F0aW9uIFJlbW92ZS1IQ1hTaXRlUGFpcmluZyBSZW1vdmUtSGFyZERpc2sgUmVtb3ZlLUlTY3NpSGJhVGFyZ2V0IFJlbW92ZS1JbnZlbnRvcnkgUmVtb3ZlLUtleU1hbmFnZW1lbnRTZXJ2ZXIgXCIgK1xuICAgICAgICBcIlJlbW92ZS1OZXR3b3JrQWRhcHRlciBSZW1vdmUtTmZzVXNlciBSZW1vdmUtTnN4Q2x1c3RlciBSZW1vdmUtTnN4Q2x1c3RlclZ4bGFuQ29uZmlnIFJlbW92ZS1Oc3hDb250cm9sbGVyIFJlbW92ZS1Oc3hEeW5hbWljQ3JpdGVyaWEgUmVtb3ZlLU5zeER5bmFtaWNNZW1iZXJTZXQgUmVtb3ZlLU5zeEVkZ2UgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hFZGdlQmdwTmVpZ2hib3VyIFJlbW92ZS1Oc3hFZGdlQ2VydGlmaWNhdGUgUmVtb3ZlLU5zeEVkZ2VDc3IgUmVtb3ZlLU5zeEVkZ2VGaXJld2FsbFJ1bGUgUmVtb3ZlLU5zeEVkZ2VJbnRlcmZhY2VBZGRyZXNzIFJlbW92ZS1Oc3hFZGdlTmF0UnVsZSBSZW1vdmUtTnN4RWRnZU9zcGZBcmVhIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4RWRnZU9zcGZJbnRlcmZhY2UgUmVtb3ZlLU5zeEVkZ2VQcmVmaXggUmVtb3ZlLU5zeEVkZ2VSZWRpc3RyaWJ1dGlvblJ1bGUgUmVtb3ZlLU5zeEVkZ2VTdGF0aWNSb3V0ZSBSZW1vdmUtTnN4RWRnZVN1YkludGVyZmFjZSBSZW1vdmUtTnN4RmlyZXdhbGxFeGNsdXNpb25MaXN0TWVtYmVyIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4RmlyZXdhbGxSdWxlIFJlbW92ZS1Oc3hGaXJld2FsbFJ1bGVNZW1iZXIgUmVtb3ZlLU5zeEZpcmV3YWxsU2F2ZWRDb25maWd1cmF0aW9uIFJlbW92ZS1Oc3hGaXJld2FsbFNlY3Rpb24gUmVtb3ZlLU5zeElwUG9vbCBSZW1vdmUtTnN4SXBTZXQgUmVtb3ZlLU5zeElwU2V0TWVtYmVyIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4TG9hZEJhbGFuY2VyQXBwbGljYXRpb25Qcm9maWxlIFJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJNb25pdG9yIFJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJQb29sIFJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJQb29sTWVtYmVyIFJlbW92ZS1Oc3hMb2FkQmFsYW5jZXJWaXAgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyQmdwTmVpZ2hib3VyIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyQnJpZGdlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVySW50ZXJmYWNlIFJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyT3NwZkFyZWEgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Oc3hMb2dpY2FsUm91dGVyT3NwZkludGVyZmFjZSBSZW1vdmUtTnN4TG9naWNhbFJvdXRlclByZWZpeCBSZW1vdmUtTnN4TG9naWNhbFJvdXRlclJlZGlzdHJpYnV0aW9uUnVsZSBSZW1vdmUtTnN4TG9naWNhbFJvdXRlclN0YXRpY1JvdXRlIFJlbW92ZS1Oc3hMb2dpY2FsU3dpdGNoIFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4TWFjU2V0IFJlbW92ZS1Oc3hTZWNvbmRhcnlNYW5hZ2VyIFJlbW92ZS1Oc3hTZWN1cml0eUdyb3VwIFJlbW92ZS1Oc3hTZWN1cml0eUdyb3VwTWVtYmVyIFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeSBSZW1vdmUtTnN4U2VjdXJpdHlQb2xpY3lBc3NpZ25tZW50IFwiICtcbiAgICAgICAgXCJSZW1vdmUtTnN4U2VjdXJpdHlQb2xpY3lSdWxlIFJlbW92ZS1Oc3hTZWN1cml0eVBvbGljeVJ1bGVHcm91cCBSZW1vdmUtTnN4U2VjdXJpdHlQb2xpY3lSdWxlU2VydmljZSBSZW1vdmUtTnN4U2VjdXJpdHlUYWcgUmVtb3ZlLU5zeFNlY3VyaXR5VGFnQXNzaWdubWVudCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeFNlZ21lbnRJZFJhbmdlIFJlbW92ZS1Oc3hTZXJ2aWNlIFJlbW92ZS1Oc3hTZXJ2aWNlR3JvdXAgUmVtb3ZlLU5zeFNwb29mZ3VhcmRQb2xpY3kgUmVtb3ZlLU5zeFNzbFZwbkNsaWVudEluc3RhbGxhdGlvblBhY2thZ2UgUmVtb3ZlLU5zeFNzbFZwbklwUG9vbCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLU5zeFNzbFZwblByaXZhdGVOZXR3b3JrIFJlbW92ZS1Oc3hTc2xWcG5Vc2VyIFJlbW92ZS1Oc3hUcmFuc3BvcnRab25lIFJlbW92ZS1Oc3hUcmFuc3BvcnRab25lTWVtYmVyIFJlbW92ZS1Oc3hWZHNDb250ZXh0IFJlbW92ZS1PU0N1c3RvbWl6YXRpb25OaWNNYXBwaW5nIFwiICtcbiAgICAgICAgXCJSZW1vdmUtT1NDdXN0b21pemF0aW9uU3BlYyBSZW1vdmUtT3JnIFJlbW92ZS1PcmdOZXR3b3JrIFJlbW92ZS1PcmdWZGMgUmVtb3ZlLU9yZ1ZkY05ldHdvcmsgUmVtb3ZlLVBTUmVhZExpbmVLZXlIYW5kbGVyIFJlbW92ZS1QYXNzdGhyb3VnaERldmljZSBSZW1vdmUtUmVzb3VyY2VQb29sIFwiICtcbiAgICAgICAgXCJSZW1vdmUtU25hcHNob3QgUmVtb3ZlLVNwYm1TdG9yYWdlUG9saWN5IFJlbW92ZS1TdGF0SW50ZXJ2YWwgUmVtb3ZlLVRhZyBSZW1vdmUtVGFnQXNzaWdubWVudCBSZW1vdmUtVGFnQ2F0ZWdvcnkgUmVtb3ZlLVRlbXBsYXRlIFJlbW92ZS1Vc2JEZXZpY2UgUmVtb3ZlLVZBSU9GaWx0ZXIgUmVtb3ZlLVZBcHAgXCIgK1xuICAgICAgICBcIlJlbW92ZS1WRFBvcnRHcm91cCBSZW1vdmUtVkRTd2l0Y2ggUmVtb3ZlLVZEU3dpdGNoUGh5c2ljYWxOZXR3b3JrQWRhcHRlciBSZW1vdmUtVkRTd2l0Y2hQcml2YXRlVmxhbiBSZW1vdmUtVkRTd2l0Y2hWTUhvc3QgUmVtb3ZlLVZEaXNrIFJlbW92ZS1WSUNyZWRlbnRpYWxTdG9yZUl0ZW0gXCIgK1xuICAgICAgICBcIlJlbW92ZS1WSVBlcm1pc3Npb24gUmVtb3ZlLVZJUHJvcGVydHkgUmVtb3ZlLVZJUm9sZSBSZW1vdmUtVk0gUmVtb3ZlLVZNSG9zdCBSZW1vdmUtVk1Ib3N0QWNjb3VudCBSZW1vdmUtVk1Ib3N0TmV0d29ya0FkYXB0ZXIgUmVtb3ZlLVZNSG9zdE50cFNlcnZlciBSZW1vdmUtVk1Ib3N0UHJvZmlsZSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLVZNSG9zdFByb2ZpbGVWbVBvcnRHcm91cENvbmZpZ3VyYXRpb24gUmVtb3ZlLVZNSG9zdFJvdXRlIFJlbW92ZS1WVHBtIFJlbW92ZS1WYXNhUHJvdmlkZXIgUmVtb3ZlLVZpcnR1YWxQb3J0R3JvdXAgUmVtb3ZlLVZpcnR1YWxTd2l0Y2ggXCIgK1xuICAgICAgICBcIlJlbW92ZS1WaXJ0dWFsU3dpdGNoUGh5c2ljYWxOZXR3b3JrQWRhcHRlciBSZW1vdmUtVnNhbkRpc2sgUmVtb3ZlLVZzYW5EaXNrR3JvdXAgUmVtb3ZlLVZzYW5GYXVsdERvbWFpbiBSZW1vdmUtVnNhbklzY3NpSW5pdGlhdG9yR3JvdXAgXCIgK1xuICAgICAgICBcIlJlbW92ZS1Wc2FuSXNjc2lJbml0aWF0b3JHcm91cFRhcmdldEFzc29jaWF0aW9uIFJlbW92ZS1Wc2FuSXNjc2lMdW4gUmVtb3ZlLVZzYW5Jc2NzaVRhcmdldCBSZW1vdmUtdlJBQnVzaW5lc3NHcm91cCBSZW1vdmUtdlJBQ3VzdG9tRm9ybSBSZW1vdmUtdlJBRXh0ZXJuYWxOZXR3b3JrUHJvZmlsZSBcIiArXG4gICAgICAgIFwiUmVtb3ZlLXZSQUdyb3VwUHJpbmNpcGFsIFJlbW92ZS12UkFJY29uIFJlbW92ZS12UkFOQVROZXR3b3JrUHJvZmlsZSBSZW1vdmUtdlJBUGFja2FnZSBSZW1vdmUtdlJBUHJpbmNpcGFsRnJvbVRlbmFudFJvbGUgUmVtb3ZlLXZSQVByb3BlcnR5RGVmaW5pdGlvbiBSZW1vdmUtdlJBUHJvcGVydHlHcm91cCBcIiArXG4gICAgICAgIFwiUmVtb3ZlLXZSQVJlc2VydmF0aW9uIFJlbW92ZS12UkFSZXNlcnZhdGlvbk5ldHdvcmsgUmVtb3ZlLXZSQVJlc2VydmF0aW9uUG9saWN5IFJlbW92ZS12UkFSZXNlcnZhdGlvblN0b3JhZ2UgUmVtb3ZlLXZSQVJvdXRlZE5ldHdvcmtQcm9maWxlIFJlbW92ZS12UkFTZXJ2aWNlIFwiICtcbiAgICAgICAgXCJSZW1vdmUtdlJBU3RvcmFnZVJlc2VydmF0aW9uUG9saWN5IFJlbW92ZS12UkFUZW5hbnQgUmVtb3ZlLXZSQVRlbmFudERpcmVjdG9yeSBSZW1vdmUtdlJBVXNlclByaW5jaXBhbCBSZW1vdmUtdlJOSUFwcGxpY2F0aW9uIFJlbW92ZS12Uk5JQXBwbGljYXRpb25UaWVyIFJlbW92ZS12Uk5JRGF0YVNvdXJjZSBcIiArXG4gICAgICAgIFwiUmVwYWlyLU5zeEVkZ2UgUmVwYWlyLVZzYW5PYmplY3QgUmVxdWVzdC12UkFDYXRhbG9nSXRlbSBSZXF1ZXN0LXZSQVJlc291cmNlQWN0aW9uIFJlc3RhcnQtQ0lWQXBwIFJlc3RhcnQtQ0lWQXBwR3Vlc3QgUmVzdGFydC1DSVZNIFJlc3RhcnQtQ0lWTUd1ZXN0IFJlc3RhcnQtVk0gUmVzdGFydC1WTUd1ZXN0IFwiICtcbiAgICAgICAgXCJSZXN0YXJ0LVZNSG9zdCBSZXN0YXJ0LVZNSG9zdFNlcnZpY2UgUmVzdW1lLUhDWFJlcGxpY2F0aW9uIFJldm9rZS1Oc3hTcG9vZmd1YXJkTmljQXBwcm92YWwgU2F2ZS1Nb2R1bGUgU2F2ZS1QYWNrYWdlIFNhdmUtU2NyaXB0IFNlYXJjaC1DbG91ZCBTZXQtQWR2YW5jZWRTZXR0aW5nIFwiICtcbiAgICAgICAgXCJTZXQtQWxhcm1EZWZpbml0aW9uIFNldC1Bbm5vdGF0aW9uIFNldC1DRERyaXZlIFNldC1DSUFjY2Vzc0NvbnRyb2xSdWxlIFNldC1DSU5ldHdvcmtBZGFwdGVyIFNldC1DSVZBcHAgU2V0LUNJVkFwcE5ldHdvcmsgU2V0LUNJVkFwcFN0YXJ0UnVsZSBTZXQtQ0lWQXBwVGVtcGxhdGUgU2V0LUNsdXN0ZXIgXCIgK1xuICAgICAgICBcIlNldC1DdXN0b21BdHRyaWJ1dGUgU2V0LURhdGFjZW50ZXIgU2V0LURhdGFzdG9yZSBTZXQtRGF0YXN0b3JlQ2x1c3RlciBTZXQtRHJzQ2x1c3Rlckdyb3VwIFNldC1EcnNSdWxlIFNldC1EcnNWTUhvc3RSdWxlIFNldC1GbG9wcHlEcml2ZSBTZXQtRm9sZGVyIFNldC1IQ1hBcHBsaWFuY2UgXCIgK1xuICAgICAgICBcIlNldC1IQ1hNaWdyYXRpb24gU2V0LUhDWFJlcGxpY2F0aW9uIFNldC1IYXJkRGlzayBTZXQtSVNjc2lIYmFUYXJnZXQgU2V0LUtleU1hbmFnZW1lbnRTZXJ2ZXIgU2V0LUttc0NsdXN0ZXIgU2V0LU1hcmtkb3duT3B0aW9uIFNldC1OZXR3b3JrQWRhcHRlciBTZXQtTmZzVXNlciBTZXQtTmljVGVhbWluZ1BvbGljeSBcIiArXG4gICAgICAgIFwiU2V0LU5vZGVFeGNsdXNpdmVSZXNvdXJjZXMgU2V0LU5vZGVNYW5hZ2VyIFNldC1Ob2RlUmVzb3VyY2VTb3VyY2UgU2V0LU5vZGVSZXNvdXJjZXMgU2V0LU5zeEVkZ2UgU2V0LU5zeEVkZ2VCZ3AgU2V0LU5zeEVkZ2VGaXJld2FsbCBTZXQtTnN4RWRnZUludGVyZmFjZSBTZXQtTnN4RWRnZU5hdCBcIiArXG4gICAgICAgIFwiU2V0LU5zeEVkZ2VPc3BmIFNldC1Oc3hFZGdlUm91dGluZyBTZXQtTnN4RmlyZXdhbGxHbG9iYWxDb25maWd1cmF0aW9uIFNldC1Oc3hGaXJld2FsbFJ1bGUgU2V0LU5zeEZpcmV3YWxsU2F2ZWRDb25maWd1cmF0aW9uIFNldC1Oc3hGaXJld2FsbFRocmVzaG9sZCBTZXQtTnN4TG9hZEJhbGFuY2VyIFwiICtcbiAgICAgICAgXCJTZXQtTnN4TG9hZEJhbGFuY2VyUG9vbE1lbWJlciBTZXQtTnN4TG9naWNhbFJvdXRlciBTZXQtTnN4TG9naWNhbFJvdXRlckJncCBTZXQtTnN4TG9naWNhbFJvdXRlckJyaWRnaW5nIFNldC1Oc3hMb2dpY2FsUm91dGVySW50ZXJmYWNlIFNldC1Oc3hMb2dpY2FsUm91dGVyT3NwZiBcIiArXG4gICAgICAgIFwiU2V0LU5zeExvZ2ljYWxSb3V0ZXJSb3V0aW5nIFNldC1Oc3hNYW5hZ2VyIFNldC1Oc3hNYW5hZ2VyUm9sZSBTZXQtTnN4TWFuYWdlclRpbWVTZXR0aW5ncyBTZXQtTnN4U2VjdXJpdHlQb2xpY3kgU2V0LU5zeFNlY3VyaXR5UG9saWN5RmlyZXdhbGxSdWxlIFNldC1Oc3hTc2xWcG4gXCIgK1xuICAgICAgICBcIlNldC1PU0N1c3RvbWl6YXRpb25OaWNNYXBwaW5nIFNldC1PU0N1c3RvbWl6YXRpb25TcGVjIFNldC1PcmcgU2V0LU9yZ05ldHdvcmsgU2V0LU9yZ1ZkYyBTZXQtT3JnVmRjTmV0d29yayBTZXQtUFNDdXJyZW50Q29uZmlndXJhdGlvbk5vZGUgU2V0LVBTRGVmYXVsdENvbmZpZ3VyYXRpb25Eb2N1bWVudCBcIiArXG4gICAgICAgIFwiU2V0LVBTTWV0YUNvbmZpZ0RvY0luc1Byb2Nlc3NlZEJlZm9yZU1ldGEgU2V0LVBTTWV0YUNvbmZpZ1ZlcnNpb25JbmZvVjIgU2V0LVBTUmVhZExpbmVLZXlIYW5kbGVyIFNldC1QU1JlYWRMaW5lT3B0aW9uIFNldC1QU1JlcG9zaXRvcnkgU2V0LVBTVG9wQ29uZmlndXJhdGlvbk5hbWUgXCIgK1xuICAgICAgICBcIlNldC1QYWNrYWdlU291cmNlIFNldC1Qb3dlckNMSUNvbmZpZ3VyYXRpb24gU2V0LVJlc291cmNlUG9vbCBTZXQtU2NzaUNvbnRyb2xsZXIgU2V0LVNjc2lMdW4gU2V0LVNjc2lMdW5QYXRoIFNldC1TZWN1cml0eVBvbGljeSBTZXQtU25hcHNob3QgU2V0LVNwYm1FbnRpdHlDb25maWd1cmF0aW9uIFwiICtcbiAgICAgICAgXCJTZXQtU3BibVN0b3JhZ2VQb2xpY3kgU2V0LVN0YXRJbnRlcnZhbCBTZXQtVGFnIFNldC1UYWdDYXRlZ29yeSBTZXQtVGVtcGxhdGUgU2V0LVZBSU9GaWx0ZXIgU2V0LVZBcHAgU2V0LVZEQmxvY2tlZFBvbGljeSBTZXQtVkRQb3J0IFNldC1WRFBvcnRncm91cCBTZXQtVkRQb3J0Z3JvdXBPdmVycmlkZVBvbGljeSBcIiArXG4gICAgICAgIFwiU2V0LVZEU2VjdXJpdHlQb2xpY3kgU2V0LVZEU3dpdGNoIFNldC1WRFRyYWZmaWNTaGFwaW5nUG9saWN5IFNldC1WRFVwbGlua0xhY3BQb2xpY3kgU2V0LVZEVXBsaW5rVGVhbWluZ1BvbGljeSBTZXQtVkRWbGFuQ29uZmlndXJhdGlvbiBTZXQtVkRpc2sgU2V0LVZJUGVybWlzc2lvbiBTZXQtVklSb2xlIFNldC1WTSBcIiArXG4gICAgICAgIFwiU2V0LVZNSG9zdCBTZXQtVk1Ib3N0QWNjb3VudCBTZXQtVk1Ib3N0QWR2YW5jZWRDb25maWd1cmF0aW9uIFNldC1WTUhvc3RBdXRoZW50aWNhdGlvbiBTZXQtVk1Ib3N0RGlhZ25vc3RpY1BhcnRpdGlvbiBTZXQtVk1Ib3N0RmlyZXdhbGxEZWZhdWx0UG9saWN5IFNldC1WTUhvc3RGaXJld2FsbEV4Y2VwdGlvbiBcIiArXG4gICAgICAgIFwiU2V0LVZNSG9zdEZpcm13YXJlIFNldC1WTUhvc3RIYmEgU2V0LVZNSG9zdE1vZHVsZSBTZXQtVk1Ib3N0TmV0d29yayBTZXQtVk1Ib3N0TmV0d29ya0FkYXB0ZXIgU2V0LVZNSG9zdFByb2ZpbGUgU2V0LVZNSG9zdFByb2ZpbGVJbWFnZUNhY2hlQ29uZmlndXJhdGlvbiBcIiArXG4gICAgICAgIFwiU2V0LVZNSG9zdFByb2ZpbGVTdG9yYWdlRGV2aWNlQ29uZmlndXJhdGlvbiBTZXQtVk1Ib3N0UHJvZmlsZVVzZXJDb25maWd1cmF0aW9uIFNldC1WTUhvc3RQcm9maWxlVm1Qb3J0R3JvdXBDb25maWd1cmF0aW9uIFNldC1WTUhvc3RSb3V0ZSBTZXQtVk1Ib3N0U2VydmljZSBTZXQtVk1Ib3N0U25tcCBcIiArXG4gICAgICAgIFwiU2V0LVZNSG9zdFN0YXJ0UG9saWN5IFNldC1WTUhvc3RTdG9yYWdlIFNldC1WTUhvc3RTeXNMb2dTZXJ2ZXIgU2V0LVZNUXVlc3Rpb24gU2V0LVZNUmVzb3VyY2VDb25maWd1cmF0aW9uIFNldC1WTVN0YXJ0UG9saWN5IFNldC1WVHBtIFNldC1WaXJ0dWFsUG9ydEdyb3VwIFNldC1WaXJ0dWFsU3dpdGNoIFwiICtcbiAgICAgICAgXCJTZXQtVnNhbkNsdXN0ZXJDb25maWd1cmF0aW9uIFNldC1Wc2FuRmF1bHREb21haW4gU2V0LVZzYW5Jc2NzaUluaXRpYXRvckdyb3VwIFNldC1Wc2FuSXNjc2lMdW4gU2V0LVZzYW5Jc2NzaVRhcmdldCBTZXQtdlJBQnVzaW5lc3NHcm91cCBTZXQtdlJBQ2F0YWxvZ0l0ZW0gU2V0LXZSQUN1c3RvbUZvcm0gXCIgK1xuICAgICAgICBcIlNldC12UkFFbnRpdGxlbWVudCBTZXQtdlJBRXh0ZXJuYWxOZXR3b3JrUHJvZmlsZSBTZXQtdlJBTkFUTmV0d29ya1Byb2ZpbGUgU2V0LXZSQVJlc2VydmF0aW9uIFNldC12UkFSZXNlcnZhdGlvbk5ldHdvcmsgU2V0LXZSQVJlc2VydmF0aW9uUG9saWN5IFNldC12UkFSZXNlcnZhdGlvblN0b3JhZ2UgXCIgK1xuICAgICAgICBcIlNldC12UkFSb3V0ZWROZXR3b3JrUHJvZmlsZSBTZXQtdlJBU2VydmljZSBTZXQtdlJBU3RvcmFnZVJlc2VydmF0aW9uUG9saWN5IFNldC12UkFUZW5hbnQgU2V0LXZSQVRlbmFudERpcmVjdG9yeSBTZXQtdlJBVXNlclByaW5jaXBhbCBTZXQtdlJOSURhdGFTb3VyY2VTTk1QQ29uZmlnIFNob3ctTWFya2Rvd24gXCIgK1xuICAgICAgICBcIlN0YXJ0LUNJVkFwcCBTdGFydC1DSVZNIFN0YXJ0LUhDWE1pZ3JhdGlvbiBTdGFydC1IQ1hSZXBsaWNhdGlvbiBTdGFydC1TcGJtUmVwbGljYXRpb25GYWlsb3ZlciBTdGFydC1TcGJtUmVwbGljYXRpb25QcmVwYXJlRmFpbG92ZXIgU3RhcnQtU3BibVJlcGxpY2F0aW9uUHJvbW90ZSBcIiArXG4gICAgICAgIFwiU3RhcnQtU3BibVJlcGxpY2F0aW9uUmV2ZXJzZSBTdGFydC1TcGJtUmVwbGljYXRpb25UZXN0RmFpbG92ZXIgU3RhcnQtVGhyZWFkSm9iIFN0YXJ0LVZBcHAgU3RhcnQtVk0gU3RhcnQtVk1Ib3N0IFN0YXJ0LVZNSG9zdFNlcnZpY2UgU3RhcnQtVnNhbkNsdXN0ZXJEaXNrVXBkYXRlIFwiICtcbiAgICAgICAgXCJTdGFydC1Wc2FuQ2x1c3RlclJlYmFsYW5jZSBTdGFydC1Wc2FuRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24gU3RvcC1DSVZBcHAgU3RvcC1DSVZBcHBHdWVzdCBTdG9wLUNJVk0gU3RvcC1DSVZNR3Vlc3QgU3RvcC1TcGJtUmVwbGljYXRpb25UZXN0RmFpbG92ZXIgU3RvcC1UYXNrIFN0b3AtVkFwcCBTdG9wLVZNIFwiICtcbiAgICAgICAgXCJTdG9wLVZNR3Vlc3QgU3RvcC1WTUhvc3QgU3RvcC1WTUhvc3RTZXJ2aWNlIFN0b3AtVnNhbkNsdXN0ZXJSZWJhbGFuY2UgU3VzcGVuZC1DSVZBcHAgU3VzcGVuZC1DSVZNIFN1c3BlbmQtSENYUmVwbGljYXRpb24gU3VzcGVuZC1WTSBTdXNwZW5kLVZNR3Vlc3QgU3VzcGVuZC1WTUhvc3QgXCIgK1xuICAgICAgICBcIlN5bmMtU3BibVJlcGxpY2F0aW9uR3JvdXAgVGVzdC1Db25mbGljdGluZ1Jlc291cmNlcyBUZXN0LUhDWE1pZ3JhdGlvbiBUZXN0LUhDWFJlcGxpY2F0aW9uIFRlc3QtSnNvbiBUZXN0LU1vZHVsZVJlbG9hZFJlcXVpcmVkIFRlc3QtTW9mSW5zdGFuY2VUZXh0IFRlc3QtTm9kZU1hbmFnZXIgXCIgK1xuICAgICAgICBcIlRlc3QtTm9kZVJlc291cmNlU291cmNlIFRlc3QtTm9kZVJlc291cmNlcyBUZXN0LVNjcmlwdEZpbGVJbmZvIFRlc3QtVk1Ib3N0UHJvZmlsZUNvbXBsaWFuY2UgVGVzdC1WTUhvc3RTbm1wIFRlc3QtVnNhbkNsdXN0ZXJIZWFsdGggVGVzdC1Wc2FuTmV0d29ya1BlcmZvcm1hbmNlIFwiICtcbiAgICAgICAgXCJUZXN0LVZzYW5TdG9yYWdlUGVyZm9ybWFuY2UgVGVzdC1Wc2FuVk1DcmVhdGlvbiBUZXN0LXZSQVBhY2thZ2UgVW5pbnN0YWxsLU1vZHVsZSBVbmluc3RhbGwtUGFja2FnZSBVbmluc3RhbGwtU2NyaXB0IFVubG9jay1WTSBVbnJlZ2lzdGVyLVBTUmVwb3NpdG9yeSBVbnJlZ2lzdGVyLVBhY2thZ2VTb3VyY2UgXCIgK1xuICAgICAgICBcIlVwZGF0ZS1Db25maWd1cmF0aW9uRG9jdW1lbnRSZWYgVXBkYXRlLUNvbmZpZ3VyYXRpb25FcnJvckNvdW50IFVwZGF0ZS1EZXBlbmRzT24gVXBkYXRlLUxvY2FsQ29uZmlnTWFuYWdlciBVcGRhdGUtTW9kdWxlIFVwZGF0ZS1Nb2R1bGVNYW5pZmVzdCBVcGRhdGUtTW9kdWxlVmVyc2lvbiBVcGRhdGUtUG93ZXJOc3ggXCIgK1xuICAgICAgICBcIlVwZGF0ZS1TY3JpcHQgVXBkYXRlLVNjcmlwdEZpbGVJbmZvIFVwZGF0ZS1Ub29scyBVcGRhdGUtVnNhbkhjbERhdGFiYXNlIFZhbGlkYXRlVXBkYXRlLUNvbmZpZ3VyYXRpb25EYXRhIFdhaXQtRGVidWdnZXIgV2FpdC1Oc3hDb250cm9sbGVySm9iIFdhaXQtTnN4R2VuZXJpY0pvYiBXYWl0LU5zeEpvYiBcIiArXG4gICAgICAgIFwiV2FpdC1UYXNrIFdhaXQtVG9vbHMgV3JpdGUtSW5mb3JtYXRpb24gV3JpdGUtTG9nIFdyaXRlLU1ldGFDb25maWdGaWxlIFdyaXRlLU5vZGVNT0ZGaWxlXCIsXG4gICAgICBub21hcmt1cDpcbiAgICAgICAgXCItbmUgLWVxIC1sdCAtZ3QgLWdlIC1sZSAtbm90IC1saWtlIC1ub3RsaWtlIC1tYXRjaCAtbm90bWF0Y2ggLWNvbnRhaW5zIC1ub3Rjb250YWlucyAtaW4gLW5vdGluIC1yZXBsYWNlXCIsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgTElURVJBTCxcbiAgICAgIFZBUixcbiAgICAgIFBTX0NPTU1FTlQsXG4gICAgXSxcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdCdWZmZXJlZFJlYWRlciBQVmVjdG9yIFBGb250IFBJbWFnZSBQR3JhcGhpY3MgSGFzaE1hcCBib29sZWFuIGJ5dGUgY2hhciBjb2xvciAnICtcbiAgICAgICAgJ2RvdWJsZSBmbG9hdCBpbnQgbG9uZyBTdHJpbmcgQXJyYXkgRmxvYXREaWN0IEZsb2F0TGlzdCBJbnREaWN0IEludExpc3QgSlNPTkFycmF5IEpTT05PYmplY3QgJyArXG4gICAgICAgICdPYmplY3QgU3RyaW5nRGljdCBTdHJpbmdMaXN0IFRhYmxlIFRhYmxlUm93IFhNTCAnICtcbiAgICAgICAgLy8gSmF2YSBrZXl3b3Jkc1xuICAgICAgICAnZmFsc2Ugc3luY2hyb25pemVkIGludCBhYnN0cmFjdCBmbG9hdCBwcml2YXRlIGNoYXIgYm9vbGVhbiBzdGF0aWMgbnVsbCBpZiBjb25zdCAnICtcbiAgICAgICAgJ2ZvciB0cnVlIHdoaWxlIGxvbmcgdGhyb3cgc3RyaWN0ZnAgZmluYWxseSBwcm90ZWN0ZWQgaW1wb3J0IG5hdGl2ZSBmaW5hbCByZXR1cm4gdm9pZCAnICtcbiAgICAgICAgJ2VudW0gZWxzZSBicmVhayB0cmFuc2llbnQgbmV3IGNhdGNoIGluc3RhbmNlb2YgYnl0ZSBzdXBlciB2b2xhdGlsZSBjYXNlIGFzc2VydCBzaG9ydCAnICtcbiAgICAgICAgJ3BhY2thZ2UgZGVmYXVsdCBkb3VibGUgcHVibGljIHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0aHJvd3MgcHJvdGVjdGVkIHB1YmxpYyBwcml2YXRlJyxcbiAgICAgIGxpdGVyYWw6ICdQMkQgUDNEIEhBTEZfUEkgUEkgUVVBUlRFUl9QSSBUQVUgVFdPX1BJJyxcbiAgICAgIHRpdGxlOiAnc2V0dXAgZHJhdycsXG4gICAgICBidWlsdF9pbjogJ2Rpc3BsYXlIZWlnaHQgZGlzcGxheVdpZHRoIG1vdXNlWSBtb3VzZVggbW91c2VQcmVzc2VkIHBtb3VzZVggcG1vdXNlWSBrZXkgJyArXG4gICAgICAgICdrZXlDb2RlIHBpeGVscyBmb2N1c2VkIGZyYW1lQ291bnQgZnJhbWVSYXRlIGhlaWdodCB3aWR0aCAnICtcbiAgICAgICAgJ3NpemUgY3JlYXRlR3JhcGhpY3MgYmVnaW5EcmF3IGNyZWF0ZVNoYXBlIGxvYWRTaGFwZSBQU2hhcGUgYXJjIGVsbGlwc2UgbGluZSBwb2ludCAnICtcbiAgICAgICAgJ3F1YWQgcmVjdCB0cmlhbmdsZSBiZXppZXIgYmV6aWVyRGV0YWlsIGJlemllclBvaW50IGJlemllclRhbmdlbnQgY3VydmUgY3VydmVEZXRhaWwgY3VydmVQb2ludCAnICtcbiAgICAgICAgJ2N1cnZlVGFuZ2VudCBjdXJ2ZVRpZ2h0bmVzcyBzaGFwZSBzaGFwZU1vZGUgYmVnaW5Db250b3VyIGJlZ2luU2hhcGUgYmV6aWVyVmVydGV4IGN1cnZlVmVydGV4ICcgK1xuICAgICAgICAnZW5kQ29udG91ciBlbmRTaGFwZSBxdWFkcmF0aWNWZXJ0ZXggdmVydGV4IGVsbGlwc2VNb2RlIG5vU21vb3RoIHJlY3RNb2RlIHNtb290aCBzdHJva2VDYXAgJyArXG4gICAgICAgICdzdHJva2VKb2luIHN0cm9rZVdlaWdodCBtb3VzZUNsaWNrZWQgbW91c2VEcmFnZ2VkIG1vdXNlTW92ZWQgbW91c2VQcmVzc2VkIG1vdXNlUmVsZWFzZWQgJyArXG4gICAgICAgICdtb3VzZVdoZWVsIGtleVByZXNzZWQga2V5UHJlc3NlZGtleVJlbGVhc2VkIGtleVR5cGVkIHByaW50IHByaW50bG4gc2F2ZSBzYXZlRnJhbWUgZGF5IGhvdXIgJyArXG4gICAgICAgICdtaWxsaXMgbWludXRlIG1vbnRoIHNlY29uZCB5ZWFyIGJhY2tncm91bmQgY2xlYXIgY29sb3JNb2RlIGZpbGwgbm9GaWxsIG5vU3Ryb2tlIHN0cm9rZSBhbHBoYSAnICtcbiAgICAgICAgJ2JsdWUgYnJpZ2h0bmVzcyBjb2xvciBncmVlbiBodWUgbGVycENvbG9yIHJlZCBzYXR1cmF0aW9uIG1vZGVsWCBtb2RlbFkgbW9kZWxaIHNjcmVlblggc2NyZWVuWSAnICtcbiAgICAgICAgJ3NjcmVlblogYW1iaWVudCBlbWlzc2l2ZSBzaGluaW5lc3Mgc3BlY3VsYXIgYWRkIGNyZWF0ZUltYWdlIGJlZ2luQ2FtZXJhIGNhbWVyYSBlbmRDYW1lcmEgZnJ1c3R1bSAnICtcbiAgICAgICAgJ29ydGhvIHBlcnNwZWN0aXZlIHByaW50Q2FtZXJhIHByaW50UHJvamVjdGlvbiBjdXJzb3IgZnJhbWVSYXRlIG5vQ3Vyc29yIGV4aXQgbG9vcCBub0xvb3AgcG9wU3R5bGUgJyArXG4gICAgICAgICdwdXNoU3R5bGUgcmVkcmF3IGJpbmFyeSBib29sZWFuIGJ5dGUgY2hhciBmbG9hdCBoZXggaW50IHN0ciB1bmJpbmFyeSB1bmhleCBqb2luIG1hdGNoIG1hdGNoQWxsIG5mICcgK1xuICAgICAgICAnbmZjIG5mcCBuZnMgc3BsaXQgc3BsaXRUb2tlbnMgdHJpbSBhcHBlbmQgYXJyYXlDb3B5IGNvbmNhdCBleHBhbmQgcmV2ZXJzZSBzaG9ydGVuIHNvcnQgc3BsaWNlIHN1YnNldCAnICtcbiAgICAgICAgJ2JveCBzcGhlcmUgc3BoZXJlRGV0YWlsIGNyZWF0ZUlucHV0IGNyZWF0ZVJlYWRlciBsb2FkQnl0ZXMgbG9hZEpTT05BcnJheSBsb2FkSlNPTk9iamVjdCBsb2FkU3RyaW5ncyAnICtcbiAgICAgICAgJ2xvYWRUYWJsZSBsb2FkWE1MIG9wZW4gcGFyc2VYTUwgc2F2ZVRhYmxlIHNlbGVjdEZvbGRlciBzZWxlY3RJbnB1dCBiZWdpblJhdyBiZWdpblJlY29yZCBjcmVhdGVPdXRwdXQgJyArXG4gICAgICAgICdjcmVhdGVXcml0ZXIgZW5kUmF3IGVuZFJlY29yZCBQcmludFdyaXRlcnNhdmVCeXRlcyBzYXZlSlNPTkFycmF5IHNhdmVKU09OT2JqZWN0IHNhdmVTdHJlYW0gc2F2ZVN0cmluZ3MgJyArXG4gICAgICAgICdzYXZlWE1MIHNlbGVjdE91dHB1dCBwb3BNYXRyaXggcHJpbnRNYXRyaXggcHVzaE1hdHJpeCByZXNldE1hdHJpeCByb3RhdGUgcm90YXRlWCByb3RhdGVZIHJvdGF0ZVogc2NhbGUgJyArXG4gICAgICAgICdzaGVhclggc2hlYXJZIHRyYW5zbGF0ZSBhbWJpZW50TGlnaHQgZGlyZWN0aW9uYWxMaWdodCBsaWdodEZhbGxvZmYgbGlnaHRzIGxpZ2h0U3BlY3VsYXIgbm9MaWdodHMgbm9ybWFsICcgK1xuICAgICAgICAncG9pbnRMaWdodCBzcG90TGlnaHQgaW1hZ2UgaW1hZ2VNb2RlIGxvYWRJbWFnZSBub1RpbnQgcmVxdWVzdEltYWdlIHRpbnQgdGV4dHVyZSB0ZXh0dXJlTW9kZSB0ZXh0dXJlV3JhcCAnICtcbiAgICAgICAgJ2JsZW5kIGNvcHkgZmlsdGVyIGdldCBsb2FkUGl4ZWxzIHNldCB1cGRhdGVQaXhlbHMgYmxlbmRNb2RlIGxvYWRTaGFkZXIgUFNoYWRlcnJlc2V0U2hhZGVyIHNoYWRlciBjcmVhdGVGb250ICcgK1xuICAgICAgICAnbG9hZEZvbnQgdGV4dCB0ZXh0Rm9udCB0ZXh0QWxpZ24gdGV4dExlYWRpbmcgdGV4dE1vZGUgdGV4dFNpemUgdGV4dFdpZHRoIHRleHRBc2NlbnQgdGV4dERlc2NlbnQgYWJzIGNlaWwgJyArXG4gICAgICAgICdjb25zdHJhaW4gZGlzdCBleHAgZmxvb3IgbGVycCBsb2cgbWFnIG1hcCBtYXggbWluIG5vcm0gcG93IHJvdW5kIHNxIHNxcnQgYWNvcyBhc2luIGF0YW4gYXRhbjIgY29zIGRlZ3JlZXMgJyArXG4gICAgICAgICdyYWRpYW5zIHNpbiB0YW4gbm9pc2Ugbm9pc2VEZXRhaWwgbm9pc2VTZWVkIHJhbmRvbSByYW5kb21HYXVzc2lhbiByYW5kb21TZWVkJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1thLXpBLVpfXVtcXFxcZGEtekEtWl9dK1xcXFwuW1xcXFxkYS16QS1aX117MSwzfScsIGVuZDogJzonLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyhuY2FsbHN8dG90dGltZXxjdW10aW1lKScsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogJ25jYWxscyB0b3R0aW1lfDEwIGN1bXRpbWV8MTAgZmlsZW5hbWUnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2Z1bmN0aW9uIGNhbGxzJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5DX05VTUJFUl9NT0RFXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSQnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIEFUT00gPSB7XG5cbiAgICBiZWdpbjogL1thLXpdW0EtWmEtejAtOV9dKi8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFZBUiA9IHtcblxuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1tBLVpdW2EtekEtWjAtOV9dKi99LFxuICAgICAge2JlZ2luOiAvX1tBLVphLXowLTlfXSovfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBQQVJFTlRFRCA9IHtcblxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBMSVNUID0ge1xuXG4gICAgYmVnaW46IC9cXFsvLFxuICAgIGVuZDogL1xcXS9cbiAgfTtcblxuICB2YXIgTElORV9DT01NRU5UID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46IC8lLywgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFtobGpzLlBIUkFTQUxfV09SRFNfTU9ERV1cbiAgfTtcblxuICB2YXIgQkFDS1RJQ0tfU1RSSU5HID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL2AvLCBlbmQ6IC9gLyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgfTtcblxuICB2YXIgQ0hBUl9DT0RFID0ge1xuXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgLy8gMCdhIGV0Yy5cbiAgICBiZWdpbjogLzBcXCcoXFxcXFxcJ3wuKS9cbiAgfTtcblxuICB2YXIgU1BBQ0VfQ09ERSA9IHtcblxuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8wXFwnXFxcXHMvIC8vIDAnXFxzXG4gIH07XG5cbiAgdmFyIFBSRURfT1AgPSB7IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgYmVnaW46IC86LS9cbiAgfTtcblxuICB2YXIgaW5uZXIgPSBbXG5cbiAgICBBVE9NLFxuICAgIFZBUixcbiAgICBQQVJFTlRFRCxcbiAgICBQUkVEX09QLFxuICAgIExJU1QsXG4gICAgTElORV9DT01NRU5ULFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgQkFDS1RJQ0tfU1RSSU5HLFxuICAgIENIQVJfQ09ERSxcbiAgICBTUEFDRV9DT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuXG4gIFBBUkVOVEVELmNvbnRhaW5zID0gaW5uZXI7XG4gIExJU1QuY29udGFpbnMgPSBpbm5lcjtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBpbm5lci5jb25jYXQoW1xuICAgICAge2JlZ2luOiAvXFwuJC99IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgXSlcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgLy8gd2hpdGVzcGFjZXM6IHNwYWNlLCB0YWIsIGZvcm1mZWVkXG4gIHZhciBXUzAgPSAnWyBcXFxcdFxcXFxmXSonO1xuICB2YXIgV1MxID0gJ1sgXFxcXHRcXFxcZl0rJztcbiAgLy8gZGVsaW1pdGVyXG4gIHZhciBERUxJTSA9ICcoJyArIFdTMCsnWzo9XScrV1MwKyAnfCcgKyBXUzEgKyAnKSc7XG4gIHZhciBLRVlfQUxQSEFOVU0gPSAnKFteXFxcXFxcXFxcXFxcVzo9IFxcXFx0XFxcXGZcXFxcbl18XFxcXFxcXFwuKSsnO1xuICB2YXIgS0VZX09USEVSID0gJyhbXlxcXFxcXFxcOj0gXFxcXHRcXFxcZlxcXFxuXXxcXFxcXFxcXC4pKyc7XG5cbiAgdmFyIERFTElNX0FORF9WQUxVRSA9IHtcbiAgICAgICAgICAvLyBza2lwIERFTElNXG4gICAgICAgICAgZW5kOiBERUxJTSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAvLyB2YWx1ZTogZXZlcnl0aGluZyB1bnRpbCBlbmQgb2YgbGluZSAoYWdhaW4sIHRha2luZyBpbnRvIGFjY291bnQgYmFja3NsYXNoZXMpXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiAnXFxcXFxcXFxcXFxcbicgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXlxcXFxzKlshI10nLCAnJCcpLFxuICAgICAgLy8ga2V5OiBldmVyeXRoaW5nIHVudGlsIHdoaXRlc3BhY2Ugb3IgPSBvciA6ICh0YWtpbmcgaW50byBhY2NvdW50IGJhY2tzbGFzaGVzKVxuICAgICAgLy8gY2FzZSBvZiBhIFwibm9ybWFsXCIga2V5XG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBLRVlfQUxQSEFOVU0gKyBERUxJTSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICBiZWdpbjogS0VZX0FMUEhBTlVNLFxuICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc3RhcnRzOiBERUxJTV9BTkRfVkFMVUVcbiAgICAgIH0sXG4gICAgICAvLyBjYXNlIG9mIGtleSBjb250YWluaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcnMgPT4gcmVsZXZhbmNlID0gMFxuICAgICAge1xuICAgICAgICBiZWdpbjogS0VZX09USEVSICsgREVMSU0sXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICBiZWdpbjogS0VZX09USEVSLFxuICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc3RhcnRzOiBERUxJTV9BTkRfVkFMVUVcbiAgICAgIH0sXG4gICAgICAvLyBjYXNlIG9mIGFuIGVtcHR5IGtleVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBiZWdpbjogS0VZX09USEVSICsgV1MwICsgJyQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ3BhY2thZ2UgaW1wb3J0IG9wdGlvbiBvcHRpb25hbCByZXF1aXJlZCByZXBlYXRlZCBncm91cCBvbmVvZicsXG4gICAgICBidWlsdF9pbjogJ2RvdWJsZSBmbG9hdCBpbnQzMiBpbnQ2NCB1aW50MzIgdWludDY0IHNpbnQzMiBzaW50NjQgJyArXG4gICAgICAgICdmaXhlZDMyIGZpeGVkNjQgc2ZpeGVkMzIgc2ZpeGVkNjQgYm9vbCBzdHJpbmcgYnl0ZXMnLFxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ21lc3NhZ2UgZW51bSBzZXJ2aWNlJywgZW5kOiAvXFx7LyxcbiAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICAgICAgc3RhcnRzOiB7ZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWV9IC8vIGhhY2s6IGVhdGluZyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCB0aXRsZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3JwYycsXG4gICAgICAgIGVuZDogLzsvLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogJ3JwYyByZXR1cm5zJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9eXFxzKltBLVpfXSsvLFxuICAgICAgICBlbmQ6IC9cXHMqPS8sIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBQVVBQRVRfS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAvKiBsYW5ndWFnZSBrZXl3b3JkcyAqL1xuICAgICAgJ2FuZCBjYXNlIGRlZmF1bHQgZWxzZSBlbHNpZiBmYWxzZSBpZiBpbiBpbXBvcnQgZW5oZXJpdHMgbm9kZSBvciB0cnVlIHVuZGVmIHVubGVzcyBtYWluIHNldHRpbmdzICRzdHJpbmcgJyxcbiAgICBsaXRlcmFsOlxuICAgIC8qIG1ldGFwYXJhbWV0ZXJzICovXG4gICAgICAnYWxpYXMgYXVkaXQgYmVmb3JlIGxvZ2xldmVsIG5vb3AgcmVxdWlyZSBzdWJzY3JpYmUgdGFnICcgK1xuICAgIC8qIG5vcm1hbCBhdHRyaWJ1dGVzICovXG4gICAgICAnb3duZXIgZW5zdXJlIGdyb3VwIG1vZGUgbmFtZXwwIGNoYW5nZXMgY29udGV4dCBmb3JjZSBpbmNsIGxlbnMgbG9hZF9wYXRoIG9ubHlpZiBwcm92aWRlciByZXR1cm5zIHJvb3Qgc2hvd19kaWZmIHR5cGVfY2hlY2sgJyArXG4gICAgICAnZW5fYWRkcmVzcyBpcF9hZGRyZXNzIHJlYWxuYW1lIGNvbW1hbmQgZW52aXJvbm1lbnQgaG91ciBtb251dGUgbW9udGggbW9udGhkYXkgc3BlY2lhbCB0YXJnZXQgd2Vla2RheSAnK1xuICAgICAgJ2NyZWF0ZXMgY3dkIG9nb3V0cHV0IHJlZnJlc2ggcmVmcmVzaG9ubHkgdHJpZXMgdHJ5X3NsZWVwIHVtYXNrIGJhY2t1cCBjaGVja3N1bSBjb250ZW50IGN0aW1lIGZvcmNlIGlnbm9yZSAnICtcbiAgICAgICdsaW5rcyBtdGltZSBwdXJnZSByZWN1cnNlIHJlY3Vyc2VsaW1pdCByZXBsYWNlIHNlbGludXhfaWdub3JlX2RlZmF1bHRzIHNlbHJhbmdlIHNlbHJvbGUgc2VsdHlwZSBzZWx1c2VyIHNvdXJjZSAnICtcbiAgICAgICdzb3VpcmNlX3Blcm1pc3Npb25zIHNvdXJjZXNlbGVjdCB2YWxpZGF0ZV9jbWQgdmFsaWRhdGVfcmVwbGFjZW1lbnQgYWxsb3dkdXBlIGF0dHJpYnV0ZV9tZW1iZXJzaGlwIGF1dGhfbWVtYmVyc2hpcCBmb3JjZWxvY2FsIGdpZCAnK1xuICAgICAgJ2lhX2xvYWRfbW9kdWxlIG1lbWJlcnMgc3lzdGVtIGhvc3RfYWxpYXNlcyBpcCBhbGxvd2VkX3RydW5rX3ZsYW5zIGRlc2NyaXB0aW9uIGRldmljZV91cmwgZHVwbGV4IGVuY2Fwc3VsYXRpb24gZXRoZXJjaGFubmVsICcgK1xuICAgICAgJ25hdGl2ZV92bGFuIHNwZWVkIHByaW5jaXBhbHMgYWxsb3dfcm9vdCBhdXRoX2NsYXNzIGF1dGhfdHlwZSBhdXRoZW50aWNhdGVfdXNlciBrX29mX24gbWVjaGFuaXNtcyBydWxlIHNlc3Npb25fb3duZXIgc2hhcmVkIG9wdGlvbnMgJyArXG4gICAgICAnZGV2aWNlIGZzdHlwZSBlbmFibGUgaGFzcmVzdGFydCBkaXJlY3RvcnkgcHJlc2VudCBhYnNlbnQgbGluayBhdGJvb3QgYmxvY2tkZXZpY2UgZGV2aWNlIGR1bXAgcGFzcyByZW1vdW50cyBwb2xsZXJfdGFnIHVzZSAnICtcbiAgICAgICdtZXNzYWdlIHdpdGhwYXRoIGFkbWluZmlsZSBhbGxvd192aXJ0dWFsIGFsbG93Y2Ryb20gY2F0ZWdvcnkgY29uZmlnZmlsZXMgZmxhdm9yIGluc3RhbGxfb3B0aW9ucyBpbnN0YW5jZSBwYWNrYWdlX3NldHRpbmdzIHBsYXRmb3JtICcgK1xuICAgICAgJ3Jlc3BvbnNlZmlsZSBzdGF0dXMgdW5pbnN0YWxsX29wdGlvbnMgdmVuZG9yIHVubGVzc19zeXN0ZW1fdXNlciB1bmxlc3NfdWlkIGJpbmFyeSBjb250cm9sIGZsYWdzIGhhc3N0YXR1cyBtYW5pZmVzdCBwYXR0ZXJuIHJlc3RhcnQgcnVubmluZyAnICtcbiAgICAgICdzdGFydCBzdG9wIGFsbG93ZHVwZSBhdXRocyBleHBpcnkgZ2lkIGdyb3VwcyBob21lIGl0ZXJhdGlvbnMga2V5X21lbWJlcnNoaXAga2V5cyBtYW5hZ2Vob21lIG1lbWJlcnNoaXAgcGFzc3dvcmQgcGFzc3dvcmRfbWF4X2FnZSAnICtcbiAgICAgICdwYXNzd29yZF9taW5fYWdlIHByb2ZpbGVfbWVtYmVyc2hpcCBwcm9maWxlcyBwcm9qZWN0IHB1cmdlX3NzaF9rZXlzIHJvbGVfbWVtYmVyc2hpcCByb2xlcyBzYWx0IHNoZWxsIHVpZCBiYXNldXJsIGNvc3QgZGVzY3IgZW5hYmxlZCAnICtcbiAgICAgICdlbmFibGVncm91cHMgZXhjbHVkZSBmYWlsb3Zlcm1ldGhvZCBncGdjaGVjayBncGdrZXkgaHR0cF9jYWNoaW5nIGluY2x1ZGUgaW5jbHVkZXBrZ3Mga2VlcGFsaXZlIG1ldGFkYXRhX2V4cGlyZSBtZXRhbGluayBtaXJyb3JsaXN0ICcgK1xuICAgICAgJ3ByaW9yaXR5IHByb3RlY3QgcHJveHkgcHJveHlfcGFzc3dvcmQgcHJveHlfdXNlcm5hbWUgcmVwb19ncGdjaGVjayBzM19lbmFibGVkIHNraXBfaWZfdW5hdmFpbGFibGUgc3NsY2FjZXJ0IHNzbGNsaWVudGNlcnQgc3NsY2xpZW50a2V5ICcgK1xuICAgICAgJ3NzbHZlcmlmeSBtb3VudGVkJyxcbiAgICBidWlsdF9pbjpcbiAgICAvKiBjb3JlIGZhY3RzICovXG4gICAgICAnYXJjaGl0ZWN0dXJlIGF1Z2Vhc3ZlcnNpb24gYmxvY2tkZXZpY2VzIGJvYXJkbWFudWZhY3R1cmVyIGJvYXJkcHJvZHVjdG5hbWUgYm9hcmRzZXJpYWxudW1iZXIgY2ZrZXkgZGhjcF9zZXJ2ZXJzICcgK1xuICAgICAgJ2RvbWFpbiBlYzJfIGVjMl91c2VyZGF0YSBmYWN0ZXJ2ZXJzaW9uIGZpbGVzeXN0ZW1zIGxkb20gZnFkbiBnaWQgaGFyZHdhcmVpc2EgaGFyZHdhcmVtb2RlbCBob3N0bmFtZSBpZHwwIGludGVyZmFjZXMgJytcbiAgICAgICdpcGFkZHJlc3MgaXBhZGRyZXNzXyBpcGFkZHJlc3M2IGlwYWRkcmVzczZfIGlwaG9zdG51bWJlciBpc192aXJ0dWFsIGtlcm5lbCBrZXJuZWxtYWp2ZXJzaW9uIGtlcm5lbHJlbGVhc2Uga2VybmVsdmVyc2lvbiAnICtcbiAgICAgICdrZXJuZWxyZWxlYXNlIGtlcm5lbHZlcnNpb24gbHNiZGlzdGNvZGVuYW1lIGxzYmRpc3RkZXNjcmlwdGlvbiBsc2JkaXN0aWQgbHNiZGlzdHJlbGVhc2UgbHNibWFqZGlzdHJlbGVhc2UgbHNibWlub3JkaXN0cmVsZWFzZSAnICtcbiAgICAgICdsc2JyZWxlYXNlIG1hY2FkZHJlc3MgbWFjYWRkcmVzc18gbWFjb3N4X2J1aWxkdmVyc2lvbiBtYWNvc3hfcHJvZHVjdG5hbWUgbWFjb3N4X3Byb2R1Y3R2ZXJzaW9uIG1hY29zeF9wcm9kdWN0dmVyc29uX21ham9yICcgK1xuICAgICAgJ21hY29zeF9wcm9kdWN0dmVyc2lvbl9taW5vciBtYW51ZmFjdHVyZXIgbWVtb3J5ZnJlZSBtZW1vcnlzaXplIG5ldG1hc2sgbWV0bWFza18gbmV0d29ya18gb3BlcmF0aW5nc3lzdGVtIG9wZXJhdGluZ3N5c3RlbW1hanJlbGVhc2UgJytcbiAgICAgICdvcGVyYXRpbmdzeXN0ZW1yZWxlYXNlIG9zZmFtaWx5IHBhcnRpdGlvbnMgcGF0aCBwaHlzaWNhbHByb2Nlc3NvcmNvdW50IHByb2Nlc3NvciBwcm9jZXNzb3Jjb3VudCBwcm9kdWN0bmFtZSBwcyBwdXBwZXR2ZXJzaW9uICcrXG4gICAgICAncnVieXNpdGVkaXIgcnVieXZlcnNpb24gc2VsaW51eCBzZWxpbnV4X2NvbmZpZ19tb2RlIHNlbGludXhfY29uZmlnX3BvbGljeSBzZWxpbnV4X2N1cnJlbnRfbW9kZSBzZWxpbnV4X2N1cnJlbnRfbW9kZSBzZWxpbnV4X2VuZm9yY2VkICcrXG4gICAgICAnc2VsaW51eF9wb2xpY3l2ZXJzaW9uIHNlcmlhbG51bWJlciBzcF8gc3NoZHNha2V5IHNzaGVjZHNha2V5IHNzaHJzYWtleSBzd2FwZW5jcnlwdGVkIHN3YXBmcmVlIHN3YXBzaXplIHRpbWV6b25lIHR5cGUgdW5pcXVlaWQgdXB0aW1lICcrXG4gICAgICAndXB0aW1lX2RheXMgdXB0aW1lX2hvdXJzIHVwdGltZV9zZWNvbmRzIHV1aWQgdmlydHVhbCB2bGFucyB4ZW5kb21haW5zIHpmc192ZXJzaW9uIHpvbmVuYWUgem9uZXMgenBvb2xfdmVyc2lvbidcbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnIycsICckJyk7XG5cbiAgdmFyIElERU5UX1JFID0gJyhbQS1aYS16X118OjopKFxcXFx3fDo6KSonO1xuXG4gIHZhciBUSVRMRSA9IGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogSURFTlRfUkV9KTtcblxuICB2YXIgVkFSSUFCTEUgPSB7Y2xhc3NOYW1lOiAndmFyaWFibGUnLCBiZWdpbjogJ1xcXFwkJyArIElERU5UX1JFfTtcblxuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFZBUklBQkxFXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvJy8sIGVuZDogLycvfSxcbiAgICAgIHtiZWdpbjogL1wiLywgZW5kOiAvXCIvfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncHAnXSxcbiAgICBjb250YWluczogW1xuICAgICAgQ09NTUVOVCxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgU1RSSU5HLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLCBlbmQ6ICdcXFxce3w7JyxcbiAgICAgICAgaWxsZWdhbDogLz0vLFxuICAgICAgICBjb250YWluczogW1RJVExFLCBDT01NRU5UXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2RlZmluZScsIGVuZDogL1xcey8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsIGJlZ2luOiBobGpzLklERU5UX1JFLCBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICdcXFxccytcXFxceycsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFx7LywgZW5kOiAvXFx9LyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBQVVBQRVRfS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIENPTU1FTlQsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjonW2EtekEtWl9dK1xcXFxzKj0+JyxcbiAgICAgICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAnPT4nLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnKFxcXFxiMFswLTdfXSspfChcXFxcYjB4WzAtOWEtZkEtRl9dKyl8KFxcXFxiWzEtOV1bMC05X10qKFxcXFwuWzAtOV9dKyk/KXxbMF9dXFxcXGInLFxuICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBWQVJJQUJMRVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gQmFzZSBkZWFmdWx0IGNvbG9ycyBpbiBQQiBJREU6IGJhY2tncm91bmQ6ICNGRkZGREY7IGZvcmVncm91bmQ6ICMwMDAwMDA7XG5cbmZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNUUklOR1MgPSB7IC8vIFBCIElERSBjb2xvcjogIzAwODBGRiAoQXp1cmUgUmFkaWFuY2UpXG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJyh+KT9cIicsIGVuZDogJ1wiJyxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gIH07XG4gIHZhciBDT05TVEFOVFMgPSB7IC8vIFBCIElERSBjb2xvcjogIzkyNEI3MiAoQ2Fubm9uIFBpbmspXG4gICAgLy8gIFwiI1wiICsgYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSArIGxldHRlcnMsIGRpZ2l0cyBvciB1bmRlcnNjb3JlcyArIChvcHRpb25hbCkgXCIkXCJcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnI1thLXpBLVpfXVxcXFx3KlxcXFwkPydcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncGInLCAncGJpJ10sXG4gICAga2V5d29yZHM6IC8vIFBCIElERSBjb2xvcjogIzAwNjY2NiAoQmx1ZSBTdG9uZSkgKyBCb2xkXG4gICAgICAvLyBLZXl3b3JkcyBmcm9tIGFsbCB2ZXJzaW9uIG9mIFB1cmVCQVNJQyA1LjAwIHVwd2FyZCAuLi5cbiAgICAgICdBbGlnbiBBbmQgQXJyYXkgQXMgQnJlYWsgQ2FsbERlYnVnZ2VyIENhc2UgQ29tcGlsZXJDYXNlIENvbXBpbGVyRGVmYXVsdCAnICtcbiAgICAgICdDb21waWxlckVsc2UgQ29tcGlsZXJFbHNlSWYgQ29tcGlsZXJFbmRJZiBDb21waWxlckVuZFNlbGVjdCBDb21waWxlckVycm9yICcgK1xuICAgICAgJ0NvbXBpbGVySWYgQ29tcGlsZXJTZWxlY3QgQ29tcGlsZXJXYXJuaW5nIENvbnRpbnVlIERhdGEgRGF0YVNlY3Rpb24gRGVidWcgJyArXG4gICAgICAnRGVidWdMZXZlbCBEZWNsYXJlIERlY2xhcmVDIERlY2xhcmVDRExMIERlY2xhcmVETEwgRGVjbGFyZU1vZHVsZSBEZWZhdWx0ICcgK1xuICAgICAgJ0RlZmluZSBEaW0gRGlzYWJsZUFTTSBEaXNhYmxlRGVidWdnZXIgRGlzYWJsZUV4cGxpY2l0IEVsc2UgRWxzZUlmIEVuYWJsZUFTTSAnICtcbiAgICAgICdFbmFibGVEZWJ1Z2dlciBFbmFibGVFeHBsaWNpdCBFbmQgRW5kRGF0YVNlY3Rpb24gRW5kRGVjbGFyZU1vZHVsZSBFbmRFbnVtZXJhdGlvbiAnICtcbiAgICAgICdFbmRJZiBFbmRJbXBvcnQgRW5kSW50ZXJmYWNlIEVuZE1hY3JvIEVuZE1vZHVsZSBFbmRQcm9jZWR1cmUgRW5kU2VsZWN0ICcgK1xuICAgICAgJ0VuZFN0cnVjdHVyZSBFbmRTdHJ1Y3R1cmVVbmlvbiBFbmRXaXRoIEVudW1lcmF0aW9uIEVudW1lcmF0aW9uQmluYXJ5IEV4dGVuZHMgJyArXG4gICAgICAnRmFrZVJldHVybiBGb3IgRm9yRWFjaCBGb3JFdmVyIEdsb2JhbCBHb3N1YiBHb3RvIElmIEltcG9ydCBJbXBvcnRDICcgK1xuICAgICAgJ0luY2x1ZGVCaW5hcnkgSW5jbHVkZUZpbGUgSW5jbHVkZVBhdGggSW50ZXJmYWNlIExpc3QgTWFjcm8gTWFjcm9FeHBhbmRlZENvdW50ICcgK1xuICAgICAgJ01hcCBNb2R1bGUgTmV3TGlzdCBOZXdNYXAgTmV4dCBOb3QgT3IgUHJvY2VkdXJlIFByb2NlZHVyZUMgJyArXG4gICAgICAnUHJvY2VkdXJlQ0RMTCBQcm9jZWR1cmVETEwgUHJvY2VkdXJlUmV0dXJuIFByb3RlY3RlZCBQcm90b3R5cGUgUHJvdG90eXBlQyBSZURpbSAnICtcbiAgICAgICdSZWFkIFJlcGVhdCBSZXN0b3JlIFJldHVybiBSdW50aW1lIFNlbGVjdCBTaGFyZWQgU3RhdGljIFN0ZXAgU3RydWN0dXJlICcgK1xuICAgICAgJ1N0cnVjdHVyZVVuaW9uIFN3YXAgVGhyZWFkZWQgVG8gVW5kZWZpbmVNYWNybyBVbnRpbCBVbnRpbCAgVW51c2VNb2R1bGUgJyArXG4gICAgICAnVXNlTW9kdWxlIFdlbmQgV2hpbGUgV2l0aCBYSW5jbHVkZUZpbGUgWE9yJyxcbiAgICBjb250YWluczogW1xuICAgICAgLy8gQ09NTUVOVFMgfCBQQiBJREUgY29sb3I6ICMwMEFBQUEgKFBlcnNpYW4gR3JlZW4pXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcsIHtyZWxldmFuY2U6IDB9KSxcblxuICAgICAgeyAvLyBQUk9DRURVUkVTIERFRklOSVRJT05TXG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihQcm9jZWR1cmV8RGVjbGFyZSkoQ3xDRExMfERMTCk/XFxcXGInLFxuICAgICAgICBlbmQ6ICdcXFxcKCcsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgLy8gUFJPQ0VEVVJFIEtFWVdPUkRTIHwgUEIgSURFIGNvbG9yOiAjMDA2NjY2IChCbHVlIFN0b25lKSArIEJvbGRcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46ICcoUHJvY2VkdXJlfERlY2xhcmUpKEN8Q0RMTHxETEwpPycsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IC8vIFBST0NFRFVSRSBSRVRVUk4gVFlQRSBTRVRUSU5HIHwgUEIgSURFIGNvbG9yOiAjMDAwMDAwIChCbGFjaylcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcLlxcXFx3KidcbiAgICAgICAgICAgIC8vIGVuZDogJyAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUgLy8gUFJPQ0VEVVJFIE5BTUUgfCBQQiBJREUgY29sb3I6ICMwMDY2NjYgKEJsdWUgU3RvbmUpXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBTVFJJTkdTLFxuICAgICAgQ09OU1RBTlRTXG4gICAgXVxuICB9O1xufVxuXG4vKiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQU5HRUxPR1xuICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC0gdi4xLjIgKDIwMTctMDUtMTIpXG4gICAgICAgIC0tIEJVRy1GSVg6IFNvbWUga2V5d29yZHMgd2VyZSBhY2NpZGVudGFsbHkgam95bmVkIHRvZ2V0aGVyLiBOb3cgZml4ZWQuXG4gICAgLSB2LjEuMSAoMjAxNy0wNC0zMClcbiAgICAgICAgLS0gVXBkYXRlZCB0byBQdXJlQkFTSUMgNS42MC5cbiAgICAgICAgLS0gS2V5d29yZHMgbGlzdCBub3cgYnVpbHQgYnkgZXh0cmFjdGluZyB0aGVtIGZyb20gdGhlIFB1cmVCQVNJQyBTREsnc1xuICAgICAgICAgICBcIlN5bnRheEhpbGlnaHRpbmcuZGxsXCIgKGZyb20gZWFjaCBQdXJlQkFTSUMgdmVyc2lvbikuIFRva2VucyBmcm9tIGVhY2hcbiAgICAgICAgICAgdmVyc2lvbiBhcmUgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCByZW5hbWVkIG9yIHJlbW92ZWQgdG9rZW5zIGFyZSBrZXB0XG4gICAgICAgICAgIGZvciB0aGUgc2FrZSBvZiBjb3ZlcmluZyBhbGwgdmVyc2lvbnMgb2YgdGhlIGxhbmd1YWdlIGZyb20gUHVyZUJBU0lDXG4gICAgICAgICAgIHY1LjAwIHVwd2FyZC4gKE5PVEU6IGN1cnJlbnRseSwgdGhlcmUgYXJlIG5vIHJlbmFtZWQgb3IgZGVwcmVjYXRlZFxuICAgICAgICAgICB0b2tlbnMgaW4gdGhlIGtleXdvcmRzIGxpc3QpLiBGb3IgbW9yZSBpbmZvLCBzZWU6XG4gICAgICAgICAgIC0tIGh0dHA6Ly93d3cucHVyZWJhc2ljLmZyL2VuZ2xpc2gvdmlld3RvcGljLnBocD8mcD01MDYyNjlcbiAgICAgICAgICAgLS0gaHR0cHM6Ly9naXRodWIuY29tL3Rham1vbmUvcHVyZWJhc2ljLWFyY2hpdmVzL3RyZWUvbWFzdGVyL3N5bnRheC1oaWdobGlnaHRpbmcvZ3VpZGVsaW5lc1xuICAgIC0gdi4xLjAgKEFwcmlsIDIwMTYpXG4gICAgICAgIC0tIEZpcnN0IHJlbGVhc2VcbiAgICAgICAgLS0gS2V5d29yZHMgbGlzdCB0YWtlbiBhbmQgYWRhcHRlZCBmcm9tIEd1U2hIJ3MgKEd1c3Rhdm8gSnVsaW8gRmlvcmVuemEpXG4gICAgICAgICAgIFB1cmVCYXNpYyBsYW5ndWFnZSBmaWxlIGZvciBHZVNIaTpcbiAgICAgICAgICAgLS0gaHR0cHM6Ly9naXRodWIuY29tL2Vhc3lib29rL2dlc2hpL2Jsb2IvbWFzdGVyL2dlc2hpL3B1cmViYXNpYy5waHBcbiovOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhbmQgZWxpZiBpcyBnbG9iYWwgYXMgaW4gaWYgZnJvbSByYWlzZSBmb3IgZXhjZXB0IGZpbmFsbHkgcHJpbnQgaW1wb3J0IHBhc3MgcmV0dXJuICcgK1xuICAgICAgJ2V4ZWMgZWxzZSBicmVhayBub3Qgd2l0aCBjbGFzcyBhc3NlcnQgeWllbGQgdHJ5IHdoaWxlIGNvbnRpbnVlIGRlbCBvciBkZWYgbGFtYmRhICcgK1xuICAgICAgJ2FzeW5jIGF3YWl0IG5vbmxvY2FsfDEwJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCcsXG4gICAgbGl0ZXJhbDogJ0ZhbHNlIE5vbmUgVHJ1ZSdcbiAgfTtcbiAgdmFyIFBST01QVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJywgIGJlZ2luOiAvXig+Pj58XFwuXFwuXFwuKSAvXG4gIH07XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvIy9cbiAgfTtcbiAgdmFyIExJVEVSQUxfQlJBQ0tFVCA9IHtcbiAgICBiZWdpbjogL1xce1xcey8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8odXxiKT9yPycnJy8sIGVuZDogLycnJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBQUk9NUFRdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyh1fGIpP3I/XCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGZyfHJmfGYpJycnLywgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVCwgTElURVJBTF9CUkFDS0VULCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGZyfHJmfGYpXCJcIlwiLywgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFBST01QVCwgTElURVJBTF9CUkFDS0VULCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1ciknLywgZW5kOiAvJy8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKHV8cnx1cilcIi8sIGVuZDogL1wiLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oYnxiciknLywgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGJ8YnIpXCIvLCBlbmQ6IC9cIi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGZyfHJmfGYpJy8sIGVuZDogLycvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwgTElURVJBTF9CUkFDS0VULCBTVUJTVF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKGZyfHJmfGYpXCIvLCBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBMSVRFUkFMX0JSQUNLRVQsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG4gIHZhciBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IGhsanMuQklOQVJZX05VTUJFUl9SRSArICdbbExqSl0/J30sXG4gICAgICB7YmVnaW46ICdcXFxcYigwb1swLTddKylbbExqSl0/J30sXG4gICAgICB7YmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnW2xMakpdPyd9XG4gICAgXVxuICB9O1xuICB2YXIgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLFxuICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBQUk9NUFQsIE5VTUJFUiwgU1RSSU5HLCBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtTVFJJTkcsIE5VTUJFUiwgUFJPTVBUXTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3B5JywgJ2d5cCcsICdpcHl0aG9uJ10sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8oPFxcL3wtPnxcXD8pfD0+LyxcbiAgICBjb250YWluczogW1xuICAgICAgUFJPTVBULFxuICAgICAgTlVNQkVSLFxuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7Y2xhc3NOYW1lOiAnZnVuY3Rpb24nLCBiZWdpbktleXdvcmRzOiAnZGVmJ30sXG4gICAgICAgICAge2NsYXNzTmFtZTogJ2NsYXNzJywgYmVnaW5LZXl3b3JkczogJ2NsYXNzJ31cbiAgICAgICAgXSxcbiAgICAgICAgZW5kOiAvOi8sXG4gICAgICAgIGlsbGVnYWw6IC9bJHs9O1xcbixdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICBQQVJBTVMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC8tPi8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6ICdOb25lJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXltcXHQgXSpALywgZW5kOiAvJC9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxiKHByaW50fGV4ZWMpXFwoLyAvLyBkb27igJl0IGhpZ2hsaWdodCBrZXl3b3Jkcy10dXJuZWQtZnVuY3Rpb25zIGluIFB5dGhvbiAzXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFFfS0VZV09SRFMgPSB7XG4gIGtleXdvcmQ6XG4gICAgJ2RvIHdoaWxlIHNlbGVjdCBkZWxldGUgYnkgdXBkYXRlIGZyb20nLFxuICBsaXRlcmFsOlxuICAgICcwYiAxYicsXG4gIGJ1aWx0X2luOlxuICAgICduZWcgbm90IG51bGwgc3RyaW5nIHJlY2lwcm9jYWwgZmxvb3IgY2VpbGluZyBzaWdudW0gbW9kIHhiYXIgeGxvZyBhbmQgb3IgZWFjaCBzY2FuIG92ZXIgcHJpb3IgbW11IGxzcSBpbnYgbWQ1IGx0aW1lIGd0aW1lIGNvdW50IGZpcnN0IHZhciBkZXYgbWVkIGNvdiBjb3IgYWxsIGFueSByYW5kIHN1bXMgcHJkcyBtaW5zIG1heHMgZmlsbHMgZGVsdGFzIHJhdGlvcyBhdmdzIGRpZmZlciBwcmV2IG5leHQgcmFuayByZXZlcnNlIGlhc2MgaWRlc2MgYXNjIGRlc2MgbXN1bSBtY291bnQgbWF2ZyBtZGV2IHhyYW5rIG1taW4gbW1heCB4cHJldiByb3RhdGUgZGlzdGluY3QgZ3JvdXAgd2hlcmUgZmxpcCB0eXBlIGtleSB0aWwgZ2V0IHZhbHVlIGF0dHIgY3V0IHNldCB1cHNlcnQgcmF6ZSB1bmlvbiBpbnRlciBleGNlcHQgY3Jvc3Mgc3YgdnMgc3VibGlzdCBlbmxpc3QgcmVhZDAgcmVhZDEgaG9wZW4gaGNsb3NlIGhkZWwgaHN5bSBoY291bnQgcGVhY2ggc3lzdGVtIGx0cmltIHJ0cmltIHRyaW0gbG93ZXIgdXBwZXIgc3NyIHZpZXcgdGFibGVzIHZpZXdzIGNvbHMgeGNvbHMga2V5cyB4a2V5IHhjb2wgeGFzYyB4ZGVzYyBma2V5cyBtZXRhIGxqIGFqIGFqMCBpaiBwaiBhc29mIHVqIHd3IHdqIHdqMSBmYnkgeGdyb3VwIHVuZ3JvdXAgZWogc2F2ZSBsb2FkIHJzYXZlIHJsb2FkIHNob3cgY3N2IHBhcnNlIGV2YWwgbWluIG1heCBhdmcgd2F2ZyB3c3VtIHNpbiBjb3MgdGFuIHN1bScsXG4gIHR5cGU6XG4gICAgJ2BmbG9hdCBgZG91YmxlIGludCBgdGltZXN0YW1wIGB0aW1lc3BhbiBgZGF0ZXRpbWUgYHRpbWUgYGJvb2xlYW4gYHN5bWJvbCBgY2hhciBgYnl0ZSBgc2hvcnQgYGxvbmcgYHJlYWwgYG1vbnRoIGBkYXRlIGBtaW51dGUgYHNlY29uZCBgZ3VpZCdcbiAgfTtcbiAgcmV0dXJuIHtcbiAgYWxpYXNlczpbJ2snLCAna2RiJ10sXG4gIGtleXdvcmRzOiBRX0tFWVdPUkRTLFxuICBsZXhlbWVzOiAvKGA/KVtBLVphLXowLTlfXStcXGIvLFxuICBjb250YWluczogW1xuICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEtFWVdPUkRTID0ge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2luIG9mIG9uIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICAgJ2luc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgJyArXG4gICAgICAgICdsZXQgeWllbGQgY29uc3QgZXhwb3J0IHN1cGVyIGRlYnVnZ2VyIGFzIGFzeW5jIGF3YWl0IGltcG9ydCcsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdldmFsIGlzRmluaXRlIGlzTmFOIHBhcnNlRmxvYXQgcGFyc2VJbnQgZGVjb2RlVVJJIGRlY29kZVVSSUNvbXBvbmVudCAnICtcbiAgICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgICAnRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yICcgK1xuICAgICAgICAnVHlwZUVycm9yIFVSSUVycm9yIE51bWJlciBNYXRoIERhdGUgU3RyaW5nIFJlZ0V4cCBBcnJheSBGbG9hdDMyQXJyYXkgJyArXG4gICAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICAgJ1VpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlICcgK1xuICAgICAgICAnbW9kdWxlIGNvbnNvbGUgd2luZG93IGRvY3VtZW50IFN5bWJvbCBTZXQgTWFwIFdlYWtTZXQgV2Vha01hcCBQcm94eSBSZWZsZWN0ICcgK1xuICAgICAgICAnQmVoYXZpb3IgYm9vbCBjb2xvciBjb29yZGluYXRlIGRhdGUgZG91YmxlIGVudW1lcmF0aW9uIGZvbnQgZ2VvY2lyY2xlIGdlb3JlY3RhbmdsZSAnICtcbiAgICAgICAgJ2dlb3NoYXBlIGludCBsaXN0IG1hdHJpeDR4NCBwYXJlbnQgcG9pbnQgcXVhdGVybmlvbiByZWFsIHJlY3QgJyArXG4gICAgICAgICdzaXplIHN0cmluZyB1cmwgdmFyaWFudCB2ZWN0b3IyZCB2ZWN0b3IzZCB2ZWN0b3I0ZCcgK1xuICAgICAgICAnUHJvbWlzZSdcbiAgICB9O1xuXG4gIHZhciBRTUxfSURFTlRfUkUgPSAnW2EtekEtWl9dW2EtekEtWjAtOVxcXFwuX10qJztcblxuICAvLyBJc29sYXRlIHByb3BlcnR5IHN0YXRlbWVudHMuIEVuZHMgYXQgYSA6LCA9LCA7LCAsLCBhIGNvbW1lbnQgb3IgZW5kIG9mIGxpbmUuXG4gIC8vIFVzZSBwcm9wZXJ0eSBjbGFzcy5cbiAgdmFyIFBST1BFUlRZID0ge1xuICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICBiZWdpbjogJ1xcXFxicHJvcGVydHlcXFxcYicsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgZW5kOiAnKDp8PXw7fCx8Ly98L1xcXFwqfCQpJyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlXG4gICAgICB9XG4gIH07XG5cbiAgLy8gSXNvbGF0ZSBzaWduYWwgc3RhdGVtZW50cy4gRW5kcyBhdCBhICkgYSBjb21tZW50IG9yIGVuZCBvZiBsaW5lLlxuICAvLyBVc2UgcHJvcGVydHkgY2xhc3MuXG4gIHZhciBTSUdOQUwgPSB7XG4gICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgIGJlZ2luOiAnXFxcXGJzaWduYWxcXFxcYicsXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgZW5kOiAnKFxcXFwofDp8PXw7fCx8Ly98L1xcXFwqfCQpJyxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlXG4gICAgICB9XG4gIH07XG5cbiAgLy8gaWQ6IGlzIHNwZWNpYWwgaW4gUU1MLiBXaGVuIHdlIHNlZSBpZDogd2Ugd2FudCB0byBtYXJrIHRoZSBpZDogYXMgYXR0cmlidXRlIGFuZFxuICAvLyBlbXBoYXNpemUgdGhlIHRva2VuIGZvbGxvd2luZy5cbiAgdmFyIElEX0lEID0ge1xuICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgIGJlZ2luOiAnXFxcXGJpZFxcXFxzKjonLFxuICAgICAgc3RhcnRzOiB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGVuZDogUU1MX0lERU5UX1JFLFxuICAgICAgICByZXR1cm5FbmQ6IGZhbHNlXG4gICAgICB9XG4gIH07XG5cbiAgLy8gRmluZCBRTUwgb2JqZWN0IGF0dHJpYnV0ZS4gQW4gYXR0cmlidXRlIGlzIGEgUU1MIGlkZW50aWZpZXIgZm9sbG93ZWQgYnkgOi5cbiAgLy8gVW5mb3J0dW5hdGVseSBpdCdzIGhhcmQgdG8ga25vdyB3aGVyZSBpdCBlbmRzLCBhcyBpdCBtYXkgY29udGFpbiBzY2FsYXJzLFxuICAvLyBvYmplY3RzLCBvYmplY3QgZGVmaW5pdGlvbnMsIG9yIGphdmFzY3JpcHQuIFRoZSB0cnVlIGVuZCBpcyBlaXRoZXIgd2hlbiB0aGUgcGFyZW50XG4gIC8vIGVuZHMgb3IgdGhlIG5leHQgYXR0cmlidXRlIGlzIGRldGVjdGVkLlxuICB2YXIgUU1MX0FUVFJJQlVURSA9IHtcbiAgICBiZWdpbjogUU1MX0lERU5UX1JFICsgJ1xcXFxzKjonLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiBRTUxfSURFTlRfUkUsXG4gICAgICAgIGVuZDogJ1xcXFxzKjonLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8vIEZpbmQgUU1MIG9iamVjdC4gQSBRTUwgb2JqZWN0IGlzIGEgUU1MIGlkZW50aWZpZXIgZm9sbG93ZWQgYnkgeyBhbmQgZW5kcyBhdCB0aGUgbWF0Y2hpbmcgfS5cbiAgLy8gQWxsIHdlIHJlYWxseSBjYXJlIGFib3V0IGlzIGZpbmRpbmcgSURFTlQgZm9sbG93ZWQgYnkgeyBhbmQganVzdCBtYXJrIHVwIHRoZSBJREVOVCBhbmQgaWdub3JlIHRoZSB7LlxuICB2YXIgUU1MX09CSkVDVCA9IHtcbiAgICBiZWdpbjogUU1MX0lERU5UX1JFICsgJ1xcXFxzKnsnLCBlbmQ6ICd7JyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogUU1MX0lERU5UX1JFfSlcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3F0J10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqWydcIl11c2UgKHN0cmljdHxhc20pWydcIl0vXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHsgLy8gdGVtcGxhdGUgc3RyaW5nXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLCBlbmQ6ICdcXFxcfSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYigwW2JCXVswMV0rKScgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoMFtvT11bMC03XSspJyB9LFxuICAgICAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuUkVHRVhQX01PREUsXG4gICAgICAgICAgeyAvLyBFNFggLyBKU1hcbiAgICAgICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz5cXHMqWyk7XFxdXS8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBzdWJMYW5ndWFnZTogJ3htbCdcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIFNJR05BTCxcbiAgICAgIFBST1BFUlRZLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbicsIGVuZDogL1xcey8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge2JlZ2luOiAvW0EtWmEteiRfXVswLTlBLVphLXokX10qL30pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbGxlZ2FsOiAvXFxbfCUvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwuJyArIGhsanMuSURFTlRfUkUsIHJlbGV2YW5jZTogMCAvLyBoYWNrOiBwcmV2ZW50cyBkZXRlY3Rpb24gb2Yga2V5d29yZHMgYWZ0ZXIgZG90c1xuICAgICAgfSxcbiAgICAgIElEX0lELFxuICAgICAgUU1MX0FUVFJJQlVURSxcbiAgICAgIFFNTF9PQkpFQ1RcbiAgICBdLFxuICAgIGlsbGVnYWw6IC8jL1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIElERU5UX1JFID0gJyhbYS16QS1aXXxcXFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKic7XG5cbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IElERU5UX1JFLFxuICAgICAgICBsZXhlbWVzOiBJREVOVF9SRSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2Z1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoICcgK1xuICAgICAgICAgICAgJ3N0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgJyArXG4gICAgICAgICAgICAnc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLicsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICdOVUxMIE5BIFRSVUUgRkFMU0UgVCBGIEluZiBOYU4gTkFfaW50ZWdlcl98MTAgTkFfcmVhbF98MTAgTkFfY2hhcmFjdGVyX3wxMCAnICtcbiAgICAgICAgICAgICdOQV9jb21wbGV4X3wxMCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gZXhwbGljaXQgaW50ZWdlclxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9MXFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCB0cmFpbGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkK1xcXFwuKD8hXFxcXGQpKD86aVxcXFxiKT9cIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86XFxcXC5cXFxcZCopPyg/OltlRV1bK1xcXFwtXT9cXFxcZCopP2k/XFxcXGJcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBudW1iZXIgd2l0aCBsZWFkaW5nIGRlY2ltYWxcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXC5cXFxcZCsoPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICAvLyBlc2NhcGVkIGlkZW50aWZpZXJcbiAgICAgICAgYmVnaW46ICdgJyxcbiAgICAgICAgZW5kOiAnYCcsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXCInLCBlbmQ6ICdcIid9LFxuICAgICAgICAgIHtiZWdpbjogXCInXCIsIGVuZDogXCInXCJ9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICBmdW5jdGlvbiBvclJlVmFsdWVzKG9wcyl7XG4gICAgcmV0dXJuIG9wc1xuICAgIC5tYXAoZnVuY3Rpb24ob3ApIHtcbiAgICAgIHJldHVybiBvcFxuICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24oY2hhcikge1xuICAgICAgICAgIHJldHVybiAnXFxcXCcgKyBjaGFyO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbignJyk7XG4gICAgfSlcbiAgICAuam9pbignfCcpO1xuICB9XG5cbiAgdmFyIFJFX0lERU5UID0gJ34/W2EteiRfXVswLTlhLXpBLVokX10qJztcbiAgdmFyIFJFX01PRFVMRV9JREVOVCA9ICdgP1tBLVokX11bMC05YS16QS1aJF9dKic7XG5cbiAgdmFyIFJFX1BBUkFNX1RZUEVQQVJBTSA9ICdcXCc/W2EteiRfXVswLTlhLXokX10qJztcbiAgdmFyIFJFX1BBUkFNX1RZUEUgPSAnXFxzKjpcXHMqW2EteiRfXVswLTlhLXokX10qKFxcKFxccyooJyArIFJFX1BBUkFNX1RZUEVQQVJBTSArICdcXHMqKCwnICsgUkVfUEFSQU1fVFlQRVBBUkFNICsgJykqKT9cXHMqXFwpKT8nO1xuICB2YXIgUkVfUEFSQU0gPSBSRV9JREVOVCArICcoJyArIFJFX1BBUkFNX1RZUEUgKyAnKT8oJyArIFJFX1BBUkFNX1RZUEUgKyAnKT8nO1xuICB2YXIgUkVfT1BFUkFUT1IgPSBcIihcIiArIG9yUmVWYWx1ZXMoWyd8fCcsICcmJicsICcrKycsICcqKicsICcrLicsICcqJywgJy8nLCAnKi4nLCAnLy4nLCAnLi4uJywgJ3w+J10pICsgXCJ8PT18PT09KVwiO1xuICB2YXIgUkVfT1BFUkFUT1JfU1BBQ0VEID0gXCJcXFxccytcIiArIFJFX09QRVJBVE9SICsgXCJcXFxccytcIjtcblxuICB2YXIgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhbmQgYXMgYXNyIGFzc2VydCBiZWdpbiBjbGFzcyBjb25zdHJhaW50IGRvIGRvbmUgZG93bnRvIGVsc2UgZW5kIGV4Y2VwdGlvbiBleHRlcm5hbCcgK1xuICAgICAgJ2ZvciBmdW4gZnVuY3Rpb24gZnVuY3RvciBpZiBpbiBpbmNsdWRlIGluaGVyaXQgaW5pdGlhbGl6ZXInICtcbiAgICAgICdsYW5kIGxhenkgbGV0IGxvciBsc2wgbHNyIGx4b3IgbWF0Y2ggbWV0aG9kIG1vZCBtb2R1bGUgbXV0YWJsZSBuZXcgbm9ucmVjJyArXG4gICAgICAnb2JqZWN0IG9mIG9wZW4gb3IgcHJpdmF0ZSByZWMgc2lnIHN0cnVjdCB0aGVuIHRvIHRyeSB0eXBlIHZhbCB2aXJ0dWFsIHdoZW4gd2hpbGUgd2l0aCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnYXJyYXkgYm9vbCBieXRlcyBjaGFyIGV4bnw1IGZsb2F0IGludCBpbnQzMiBpbnQ2NCBsaXN0IGxhenlfdHw1IG5hdGl2ZWludHw1IHJlZiBzdHJpbmcgdW5pdCAnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSdcbiAgfTtcblxuICB2YXIgUkVfTlVNQkVSID0gJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknO1xuXG4gIHZhciBOVU1CRVJfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogUkVfTlVNQkVSXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwoXFxcXC0nICsgUkVfTlVNQkVSICsgJ1xcXFwpJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgT1BFUkFUT1JfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdvcGVyYXRvcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGJlZ2luOiBSRV9PUEVSQVRPUlxuICB9O1xuICB2YXIgTElTVF9DT05URU5UU19NT0RFUyA9IFtcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGJlZ2luOiBSRV9JREVOVFxuICAgIH0sXG4gICAgT1BFUkFUT1JfTU9ERSxcbiAgICBOVU1CRVJfTU9ERVxuICBdO1xuXG4gIHZhciBNT0RVTEVfQUNDRVNTX0NPTlRFTlRTID0gW1xuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgT1BFUkFUT1JfTU9ERSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdtb2R1bGUnLFxuICAgICAgYmVnaW46IFwiXFxcXGJcIiArIFJFX01PRFVMRV9JREVOVCwgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICBlbmQ6IFwiXFwuXCIsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgYmVnaW46IFJFX01PRFVMRV9JREVOVCxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICB2YXIgUEFSQU1TX0NPTlRFTlRTID0gW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21vZHVsZScsXG4gICAgICBiZWdpbjogXCJcXFxcYlwiICsgUkVfTU9EVUxFX0lERU5ULCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgIGVuZDogXCJcXC5cIixcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICBiZWdpbjogUkVfTU9EVUxFX0lERU5ULFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuXG4gIHZhciBQQVJBTVNfTU9ERSA9IHtcbiAgICBiZWdpbjogUkVfSURFTlQsXG4gICAgZW5kOiAnKCx8XFxcXG58XFxcXCkpJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE9QRVJBVE9SX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGluZycsXG4gICAgICAgIGJlZ2luOiAnOicsXG4gICAgICAgIGVuZDogJygsfFxcXFxuKScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEVOVFNcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEZVTkNUSU9OX0JMT0NLX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxccyhcXFxcKFxcXFwuPy4qP1xcXFwpfCcgKyBSRV9JREVOVCArICcpXFxcXHMqPT4nLFxuICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogUkVfSURFTlRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBSRV9QQVJBTVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcc1xcXFwoXFxcXC4/W147XFxcXHxdKlxcXFwpXFxcXHMqPT4nLFxuICAgICAgICBlbmQ6ICdcXFxccz0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgUEFSQU1TX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXChcXFxcLlxcXFxzJyArIFJFX0lERU5UICsgJ1xcXFwpXFxcXHMqPT4nXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBNT0RVTEVfQUNDRVNTX0NPTlRFTlRTLnB1c2goRlVOQ1RJT05fQkxPQ0tfTU9ERSk7XG5cbiAgdmFyIENPTlNUUlVDVE9SX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29uc3RydWN0b3InLFxuICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlQgKyAnXFxcXCgnLFxuICAgIGVuZDogJ1xcXFwpJyxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIE9QRVJBVE9SX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgIGJlZ2luOiAnXFxcXGInICsgUkVfSURFTlRcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIFBBVFRFUk5fTUFUQ0hfQkxPQ0tfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXR0ZXJuLW1hdGNoJyxcbiAgICBiZWdpbjogJ1xcXFx8JyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgZW5kOiAnPT4nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgQ09OU1RSVUNUT1JfTU9ERSxcbiAgICAgIE9QRVJBVE9SX01PREUsXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY2xhc3NOYW1lOiAnY29uc3RydWN0b3InLFxuICAgICAgICBiZWdpbjogUkVfTU9EVUxFX0lERU5UXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBNT0RVTEVfQUNDRVNTX01PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbW9kdWxlLWFjY2VzcycsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIlxcXFxiKFwiICsgUkVfTU9EVUxFX0lERU5UICsgXCJcXFxcLikrXCIgKyBSRV9JREVOVFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiXFxcXGIoXCIgKyBSRV9NT0RVTEVfSURFTlQgKyBcIlxcXFwuKStcXFxcKFwiLFxuICAgICAgICBlbmQ6IFwiXFxcXClcIixcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgRlVOQ1RJT05fQkxPQ0tfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF0uY29uY2F0KE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogXCJcXFxcYihcIiArIFJFX01PRFVMRV9JREVOVCArIFwiXFxcXC4pK3tcIixcbiAgICAgICAgZW5kOiBcIn1cIlxuICAgICAgfVxuICAgIF0sXG4gICAgY29udGFpbnM6IE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFNcbiAgfTtcblxuICBQQVJBTVNfQ09OVEVOVFMucHVzaChNT0RVTEVfQUNDRVNTX01PREUpO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydyZSddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAnKDpcXFxcLXw6PXxcXFxcJHt8XFxcXCs9KScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHsgaWxsZWdhbDogJ14oXFxcXCMsXFxcXC9cXFxcLyknIH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjaGFyYWN0ZXInLFxuICAgICAgICBiZWdpbjogJ1xcJyhcXFxcXFxcXFteXFwnXSt8W15cXCddKVxcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoXFxcXCknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbXFxcXHwnLFxuICAgICAgICBlbmQ6ICdcXFxcfFxcXFxdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAgMCxcbiAgICAgICAgY29udGFpbnM6IExJU1RfQ09OVEVOVFNfTU9ERVNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICAgICAgZW5kOiAnXFxcXF0nLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBMSVNUX0NPTlRFTlRTX01PREVTXG4gICAgICB9LFxuICAgICAgQ09OU1RSVUNUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnb3BlcmF0b3InLFxuICAgICAgICBiZWdpbjogUkVfT1BFUkFUT1JfU1BBQ0VELFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXC1cXFxcLT4nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBOVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFBBVFRFUk5fTUFUQ0hfQkxPQ0tfTU9ERSxcbiAgICAgIEZVTkNUSU9OX0JMT0NLX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21vZHVsZS1kZWYnLFxuICAgICAgICBiZWdpbjogXCJcXFxcYm1vZHVsZVxcXFxzK1wiICsgUkVfSURFTlQgKyBcIlxcXFxzK1wiICsgUkVfTU9EVUxFX0lERU5UICsgXCJcXFxccys9XFxcXHMre1wiLFxuICAgICAgICBlbmQ6IFwifVwiLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbW9kdWxlJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGJlZ2luOiBSRV9NT0RVTEVfSURFTlRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAneycsXG4gICAgICAgICAgICBlbmQ6ICd9JyxcbiAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF0uY29uY2F0KE1PRFVMRV9BQ0NFU1NfQ09OVEVOVFMpXG4gICAgICB9LFxuICAgICAgTU9EVUxFX0FDQ0VTU19NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3JkczpcbiAgICAgICdBcmNoaXZlUmVjb3JkIEFyZWFMaWdodFNvdXJjZSBBdG1vc3BoZXJlIEF0dHJpYnV0ZSBBdHRyaWJ1dGVCZWdpbiBBdHRyaWJ1dGVFbmQgQmFzaXMgJyArXG4gICAgICAnQmVnaW4gQmxvYmJ5IEJvdW5kIENsaXBwaW5nIENsaXBwaW5nUGxhbmUgQ29sb3IgQ29sb3JTYW1wbGVzIENvbmNhdFRyYW5zZm9ybSBDb25lICcgK1xuICAgICAgJ0Nvb3JkaW5hdGVTeXN0ZW0gQ29vcmRTeXNUcmFuc2Zvcm0gQ3JvcFdpbmRvdyBDdXJ2ZXMgQ3lsaW5kZXIgRGVwdGhPZkZpZWxkIERldGFpbCAnICtcbiAgICAgICdEZXRhaWxSYW5nZSBEaXNrIERpc3BsYWNlbWVudCBEaXNwbGF5IEVuZCBFcnJvckhhbmRsZXIgRXhwb3N1cmUgRXh0ZXJpb3IgRm9ybWF0ICcgK1xuICAgICAgJ0ZyYW1lQXNwZWN0UmF0aW8gRnJhbWVCZWdpbiBGcmFtZUVuZCBHZW5lcmFsUG9seWdvbiBHZW9tZXRyaWNBcHByb3hpbWF0aW9uIEdlb21ldHJ5ICcgK1xuICAgICAgJ0hpZGVyIEh5cGVyYm9sb2lkIElkZW50aXR5IElsbHVtaW5hdGUgSW1hZ2VyIEludGVyaW9yIExpZ2h0U291cmNlICcgK1xuICAgICAgJ01ha2VDdWJlRmFjZUVudmlyb25tZW50IE1ha2VMYXRMb25nRW52aXJvbm1lbnQgTWFrZVNoYWRvdyBNYWtlVGV4dHVyZSBNYXR0ZSAnICtcbiAgICAgICdNb3Rpb25CZWdpbiBNb3Rpb25FbmQgTnVQYXRjaCBPYmplY3RCZWdpbiBPYmplY3RFbmQgT2JqZWN0SW5zdGFuY2UgT3BhY2l0eSBPcHRpb24gJyArXG4gICAgICAnT3JpZW50YXRpb24gUGFyYWJvbG9pZCBQYXRjaCBQYXRjaE1lc2ggUGVyc3BlY3RpdmUgUGl4ZWxGaWx0ZXIgUGl4ZWxTYW1wbGVzICcgK1xuICAgICAgJ1BpeGVsVmFyaWFuY2UgUG9pbnRzIFBvaW50c0dlbmVyYWxQb2x5Z29ucyBQb2ludHNQb2x5Z29ucyBQb2x5Z29uIFByb2NlZHVyYWwgUHJvamVjdGlvbiAnICtcbiAgICAgICdRdWFudGl6ZSBSZWFkQXJjaGl2ZSBSZWxhdGl2ZURldGFpbCBSZXZlcnNlT3JpZW50YXRpb24gUm90YXRlIFNjYWxlIFNjcmVlbldpbmRvdyAnICtcbiAgICAgICdTaGFkaW5nSW50ZXJwb2xhdGlvbiBTaGFkaW5nUmF0ZSBTaHV0dGVyIFNpZGVzIFNrZXcgU29saWRCZWdpbiBTb2xpZEVuZCBTcGhlcmUgJyArXG4gICAgICAnU3ViZGl2aXNpb25NZXNoIFN1cmZhY2UgVGV4dHVyZUNvb3JkaW5hdGVzIFRvcnVzIFRyYW5zZm9ybSBUcmFuc2Zvcm1CZWdpbiBUcmFuc2Zvcm1FbmQgJyArXG4gICAgICAnVHJhbnNmb3JtUG9pbnRzIFRyYW5zbGF0ZSBUcmltQ3VydmUgV29ybGRCZWdpbiBXb3JsZEVuZCcsXG4gICAgaWxsZWdhbDogJzwvJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgSURFTlRJRklFUiA9ICdbYS16QS1aLV9dW15cXFxcbntdK1xcXFx7JztcblxuICB2YXIgUFJPUEVSVFkgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICBiZWdpbjogL1thLXpBLVotX10rLywgZW5kOiAvXFxzKjovLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnOycsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgIGJlZ2luOiAvXFwuW2EtekEtWi1fXSsvXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICBiZWdpbjogL1xcKG9wdGlvbmFsXFwpL1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydncmFwaCcsICdpbnN0YW5jZXMnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiAnaW1wb3J0JyxcbiAgICBjb250YWluczogW1xuICAgICAgLy8gRmFjZXQgc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeZmFjZXQgJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBrZXl3b3JkczogJ2ZhY2V0JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBQUk9QRVJUWSxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIC8vIEluc3RhbmNlIHNlY3Rpb25zXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXlxcXFxzKmluc3RhbmNlIG9mICcgKyBJREVOVElGSUVSLFxuICAgICAgICBlbmQ6ICd9JyxcbiAgICAgICAga2V5d29yZHM6ICduYW1lIGNvdW50IGNoYW5uZWxzIGluc3RhbmNlLWRhdGEgaW5zdGFuY2Utc3RhdGUgaW5zdGFuY2Ugb2YnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUFJPUEVSVFksXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICAvLyBDb21wb25lbnQgc2VjdGlvbnNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdeJyArIElERU5USUZJRVIsXG4gICAgICAgIGVuZDogJ30nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBST1BFUlRZLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gQ29tbWVudHNcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLy8gQ29sb3JzIGZyb20gUm91dGVyT1MgdGVybWluYWw6XG4vLyAgIGdyZWVuICAgICAgICAtICMwRTlBMDBcbi8vICAgdGVhbCAgICAgICAgIC0gIzBDOUE5QVxuLy8gICBwdXJwbGUgICAgICAgLSAjOTkwNjlBXG4vLyAgIGxpZ2h0LWJyb3duICAtICM5QTk5MDBcblxuZnVuY3Rpb24oaGxqcykge1xuXG4gIHZhciBTVEFURU1FTlRTID0gJ2ZvcmVhY2ggZG8gd2hpbGUgZm9yIGlmIGZyb20gdG8gc3RlcCBlbHNlIG9uLWVycm9yIGFuZCBvciBub3QgaW4nO1xuXG4gIC8vIEdsb2JhbCBjb21tYW5kczogRXZlcnkgZ2xvYmFsIGNvbW1hbmQgc2hvdWxkIHN0YXJ0IHdpdGggXCI6XCIgdG9rZW4sIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgdmFyaWFibGUuXG4gIHZhciBHTE9CQUxfQ09NTUFORFMgPSAnZ2xvYmFsIGxvY2FsIGJlZXAgZGVsYXkgcHV0IGxlbiB0eXBlb2YgcGljayBsb2cgdGltZSBzZXQgZmluZCBlbnZpcm9ubWVudCB0ZXJtaW5hbCBlcnJvciBleGVjdXRlIHBhcnNlIHJlc29sdmUgdG9hcnJheSB0b2Jvb2wgdG9pZCB0b2lwIHRvaXA2IHRvbnVtIHRvc3RyIHRvdGltZSc7XG5cbiAgLy8gQ29tbW9uIGNvbW1hbmRzOiBGb2xsb3dpbmcgY29tbWFuZHMgYXZhaWxhYmxlIGZyb20gbW9zdCBzdWItbWVudXM6XG4gIHZhciBDT01NT05fQ09NTUFORFMgPSAnYWRkIHJlbW92ZSBlbmFibGUgZGlzYWJsZSBzZXQgZ2V0IHByaW50IGV4cG9ydCBlZGl0IGZpbmQgcnVuIGRlYnVnIGVycm9yIGluZm8gd2FybmluZyc7XG5cbiAgdmFyIExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG5vdGhpbmcgbmlsIG51bGwnO1xuXG4gIHZhciBPQkpFQ1RTID0gJ3RyYWZmaWMtZmxvdyB0cmFmZmljLWdlbmVyYXRvciBmaXJld2FsbCBzY2hlZHVsZXIgYWFhIGFjY291bnRpbmcgYWRkcmVzcy1saXN0IGFkZHJlc3MgYWxpZ24gYXJlYSBiYW5kd2lkdGgtc2VydmVyIGJmZCBiZ3AgYnJpZGdlIGNsaWVudCBjbG9jayBjb21tdW5pdHkgY29uZmlnIGNvbm5lY3Rpb24gY29uc29sZSBjdXN0b21lciBkZWZhdWx0IGRoY3AtY2xpZW50IGRoY3Atc2VydmVyIGRpc2NvdmVyeSBkbnMgZS1tYWlsIGV0aGVybmV0IGZpbHRlciBmaXJld2FsbCBmaXJtd2FyZSBncHMgZ3JhcGhpbmcgZ3JvdXAgaGFyZHdhcmUgaGVhbHRoIGhvdHNwb3QgaWRlbnRpdHkgaWdtcC1wcm94eSBpbmNvbWluZyBpbnN0YW5jZSBpbnRlcmZhY2UgaXAgaXBzZWMgaXB2NiBpcnEgbDJ0cC1zZXJ2ZXIgbGNkIGxkcCBsb2dnaW5nIG1hYy1zZXJ2ZXIgbWFjLXdpbmJveCBtYW5nbGUgbWFudWFsIG1pcnJvciBtbWUgbXBscyBuYXQgbmQgbmVpZ2hib3IgbmV0d29yayBub3RlIG50cCBvc3BmIG9zcGYtdjMgb3Zwbi1zZXJ2ZXIgcGFnZSBwZWVyIHBpbSBwaW5nIHBvbGljeSBwb29sIHBvcnQgcHBwIHBwcG9lLWNsaWVudCBwcHRwLXNlcnZlciBwcmVmaXggcHJvZmlsZSBwcm9wb3NhbCBwcm94eSBxdWV1ZSByYWRpdXMgcmVzb3VyY2UgcmlwIHJpcG5nIHJvdXRlIHJvdXRpbmcgc2NyZWVuIHNjcmlwdCBzZWN1cml0eS1wcm9maWxlcyBzZXJ2ZXIgc2VydmljZSBzZXJ2aWNlLXBvcnQgc2V0dGluZ3Mgc2hhcmVzIHNtYiBzbXMgc25pZmZlciBzbm1wIHNub29wZXIgc29ja3Mgc3N0cC1zZXJ2ZXIgc3lzdGVtIHRvb2wgdHJhY2tpbmcgdHlwZSB1cGdyYWRlIHVwbnAgdXNlci1tYW5hZ2VyIHVzZXJzIHVzZXIgdmxhbiBzZWNyZXQgdnJycCB3YXRjaGRvZyB3ZWItYWNjZXNzIHdpcmVsZXNzIHBwdHAgcHBwb2UgbGFuIHdhbiBsYXllcjctcHJvdG9jb2wgbGVhc2Ugc2ltcGxlIHJhdyc7XG5cbiAgLy8gcHJpbnQgcGFyYW1ldGVyc1xuICAvLyBTZXZlcmFsIHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZSBmb3IgcHJpbnQgY29tbWFuZDpcbiAgLy8gVG9EbzogdmFyIFBBUkFNRVRFUlNfUFJJTlQgPSAnYXBwZW5kIGFzLXZhbHVlIGJyaWVmIGRldGFpbCBjb3VudC1vbmx5IGZpbGUgZm9sbG93IGZvbGxvdy1vbmx5IGZyb20gaW50ZXJ2YWwgdGVyc2UgdmFsdWUtbGlzdCB3aXRob3V0LXBhZ2luZyB3aGVyZSBpbmZvJztcbiAgLy8gVG9EbzogdmFyIE9QRVJBVE9SUyA9ICcmJiBhbmQgISBub3QgfHwgb3IgaW4gfiBeICYgPDwgPj4gKyAtICogLyc7XG4gIC8vIFRvRG86IHZhciBUWVBFUyA9ICdudW0gbnVtYmVyIGJvb2wgYm9vbGVhbiBzdHIgc3RyaW5nIGlwIGlwNi1wcmVmaXggaWQgdGltZSBhcnJheSc7XG4gIC8vIFRvRG86IFRoZSBmb2xsb3dpbmcgdG9rZW5zIHNlcnZlIGFzIGRlbGltaXRlcnMgaW4gdGhlIGdyYW1tYXI6ICgpICBbXSAge30gIDogICA7ICAgJCAgIC9cblxuICB2YXIgVkFSX1BSRUZJWCA9ICdnbG9iYWwgbG9jYWwgc2V0IGZvciBmb3JlYWNoJztcblxuICB2YXIgVkFSID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge2JlZ2luOiAvXFwkW1xcd1xcZCNAXVtcXHdcXGRfXSovfSxcbiAgICAgIHtiZWdpbjogL1xcJFxceyguKj8pfS99XG4gICAgXVxuICB9O1xuXG4gIHZhciBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLywgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXCgvLCBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIEFQT1NfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLywgZW5kOiAvJy9cbiAgfTtcblxuICB2YXIgSVBBRERSID0gJygoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYic7XG4gIHZhciBJUEFERFJfd0JJVE1BU0sgPSAgSVBBRERSKycvKDNbMC0yXXxbMS0yXVswLTldfFxcXFxkKSc7XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JvdXRlcm9zJywgJ21pa3JvdGlrJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBsZXhlbWVzOiAvOj9bXFx3LV0rLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBrZXl3b3JkOiBTVEFURU1FTlRTICsgJyA6JyArIFNUQVRFTUVOVFMuc3BsaXQoJyAnKS5qb2luKCcgOicpICsgJyA6JyArIEdMT0JBTF9DT01NQU5EUy5zcGxpdCgnICcpLmpvaW4oJyA6JyksXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgeyAvLyDQvdC10LTQvtC/0YPRgdGC0LjQvNGL0LUg0LrQvtC90YHRgtGA0YPQutGG0LjQuFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46IC9eQC8sIGVuZDogLyQvLCB9LCAgICAgICAgICAgICAgIC8vIGRuc1xuICAgICAgICAgIHsgYmVnaW46IC9cXC9cXCovLCBlbmQ6IC9cXCpcXC8vLCB9LCAgICAgICAgICAvLyAtLSBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogLyUlLywgZW5kOiAvJC8sIH0sICAgICAgICAgICAgICAgLy8gLS0gY29tbWVudFxuICAgICAgICAgIHsgYmVnaW46IC9eJy8sIGVuZDogLyQvLCB9LCAgICAgICAgICAgICAgIC8vIE1vbmtleSBvbmUgbGluZSBjb21tZW50XG4gICAgICAgICAgeyBiZWdpbjogL15cXHMqXFwvW1xcdy1dKz0vLCBlbmQ6IC8kLywgfSwgICAgLy8gamJvc3MtY2xpXG4gICAgICAgICAgeyBiZWdpbjogL1xcL1xcLy8sIGVuZDogLyQvLCB9LCAgICAgICAgICAgICAvLyBTdGFuIGNvbW1lbnRcbiAgICAgICAgICB7IGJlZ2luOiAvXlxcW1xcPC8sIGVuZDogL1xcPlxcXSQvLCB9LCAgICAgICAgLy8gRiMgY2xhc3MgZGVjbGFyYXRpb24/XG4gICAgICAgICAgeyBiZWdpbjogLzxcXC8vLCBlbmQ6IC8+LywgfSwgICAgICAgICAgICAgIC8vIEhUTUwgdGFnc1xuICAgICAgICAgIHsgYmVnaW46IC9eZmFjZXQgLywgZW5kOiAvXFx9LywgfSwgICAgICAgICAvLyByb2JvY29uZiAtINC70Y7RgtGL0Lkg0LrQvtGB0YLRi9C70YwgKSkpXG4gICAgICAgICAgeyBiZWdpbjogJ14xXFxcXC5cXFxcLihcXFxcZCspJCcsIGVuZDogLyQvLCB9LCAgLy8gdGFwXG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC8uLyxcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ14jJywgJyQnKSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgVkFSLFxuICAgICAgeyAvLyBhdHRyaWJ1dGU9dmFsdWVcbiAgICAgICAgYmVnaW46IC9bXFx3LV0rXFw9KFteXFxzXFx7XFx9XFxbXFxdXFwoXFwpXSspLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgYmVnaW46IC9bXj1dKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPS8sXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogIHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBRVU9URV9TVFJJTkcsXG4gICAgICAgICAgICAgIEFQT1NfU1RSSU5HLFxuICAgICAgICAgICAgICBWQVIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBMSVRFUkFMUy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvKntcbiAgICAgICAgICAgICAgICAvLyBJUHY0IGFkZHJlc3NlcyBhbmQgc3VibmV0c1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtiZWdpbjogSVBBRERSX3dCSVRNQVNLKycoLCcrSVBBRERSX3dCSVRNQVNLKycpKid9LCAvLzE5Mi4xNjguMC4wLzI0LDEuMi4zLjAvMjRcbiAgICAgICAgICAgICAgICAgIHtiZWdpbjogSVBBRERSKyctJytJUEFERFJ9LCAgICAgICAvLyAxOTIuMTY4LjAuMS0xOTIuMTY4LjAuM1xuICAgICAgICAgICAgICAgICAge2JlZ2luOiBJUEFERFIrJygsJytJUEFERFIrJykqJ30sIC8vIDE5Mi4xNjguMC4xLDE5Mi4xNjguMC4zNCwxOTIuMTY4LjI0LjEsMTkyLjE2OC4wLjFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sIC8vICovXG4gICAgICAgICAgICAgIC8qe1xuICAgICAgICAgICAgICAgIC8vIE1BQyBhZGRyZXNzZXMgYW5kIERIQ1AgQ2xpZW50IElEc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9cXGIoMTopPyhbMC05QS1GYS1mXXsxLDJ9WzotXSl7NX0oWzAtOUEtRmEtZl0pezEsMn1cXGIvLFxuICAgICAgICAgICAgICB9LCAvLyovXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyDQndC1INGE0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMINC90LUg0LrQu9Cw0YHRgdC40YTQuNGG0LjRgNC+0LLQsNC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8uINCd0LXQvtCx0YXQvtC00LjQvNC+INC00LvRjyDQuNGB0LrQu9GO0YfQtdC90LjRjyDQv9C+0LTRgdCy0LXRgtC60Lgg0LfQvdCw0YfQtdC90LjQuSDQutCw0LogYnVpbHRfaW4uXG4gICAgICAgICAgICAgICAgLy8gY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogLyhcIlteXCJdKlwifFteXFxzXFx7XFx9XFxbXFxdXSspLyxcbiAgICAgICAgICAgICAgfSwgLy8qL1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH0gLy8qL1xuICAgICAgICBdXG4gICAgICB9LC8vKi9cbiAgICAgIHtcbiAgICAgICAgLy8gSEVYIHZhbHVlc1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogL1xcKlswLTlhLWZBLUZdKy8sXG4gICAgICB9LCAvLyovXG5cbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQ09NTU9OX0NPTU1BTkRTLnNwbGl0KCcgJykuam9pbignfCcpICsgJykoW1xcXFxzXFxbXFwoXXxcXF0pJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRpbi1uYW1lJywgLy8nZnVuY3Rpb24nLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnKFxcXFwuXFxcXC4vfC98XFxcXHMpKCgnICsgT0JKRUNUUy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpOz9cXFxccykrJyxyZWxldmFuY2U6IDEwLH0sXG4gICAgICAgICAge2JlZ2luOiAvXFwuXFwuLyx9LFxuICAgICAgICBdLFxuICAgICAgfSwvLyovXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2Zsb2F0IGNvbG9yIHBvaW50IG5vcm1hbCB2ZWN0b3IgbWF0cml4IHdoaWxlIGZvciBpZiBkbyByZXR1cm4gZWxzZSBicmVhayBleHRlcm4gY29udGludWUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhYnMgYWNvcyBhbWJpZW50IGFyZWEgYXNpbiBhdGFuIGF0bW9zcGhlcmUgYXR0cmlidXRlIGNhbGN1bGF0ZW5vcm1hbCBjZWlsIGNlbGxub2lzZSAnICtcbiAgICAgICAgJ2NsYW1wIGNvbXAgY29uY2F0IGNvcyBkZWdyZWVzIGRlcHRoIERlcml2IGRpZmZ1c2UgZGlzdGFuY2UgRHUgRHYgZW52aXJvbm1lbnQgZXhwICcgK1xuICAgICAgICAnZmFjZWZvcndhcmQgZmlsdGVyc3RlcCBmbG9vciBmb3JtYXQgZnJlc25lbCBpbmNpZGVudCBsZW5ndGggbGlnaHRzb3VyY2UgbG9nIG1hdGNoICcgK1xuICAgICAgICAnbWF4IG1pbiBtb2Qgbm9pc2Ugbm9ybWFsaXplIG50cmFuc2Zvcm0gb3Bwb3NpdGUgb3B0aW9uIHBob25nIHBub2lzZSBwb3cgcHJpbnRmICcgK1xuICAgICAgICAncHRsaW5lZCByYWRpYW5zIHJhbmRvbSByZWZsZWN0IHJlZnJhY3QgcmVuZGVyaW5mbyByb3VuZCBzZXRjb21wIHNldHhjb21wIHNldHljb21wICcgK1xuICAgICAgICAnc2V0emNvbXAgc2hhZG93IHNpZ24gc2luIHNtb290aHN0ZXAgc3BlY3VsYXIgc3BlY3VsYXJicmRmIHNwbGluZSBzcXJ0IHN0ZXAgdGFuICcgK1xuICAgICAgICAndGV4dHVyZSB0ZXh0dXJlaW5mbyB0cmFjZSB0cmFuc2Zvcm0gdnRyYW5zZm9ybSB4Y29tcCB5Y29tcCB6Y29tcCdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICcjJywgZW5kOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N1cmZhY2UgZGlzcGxhY2VtZW50IGxpZ2h0IHZvbHVtZSBpbWFnZXInLCBlbmQ6ICdcXFxcKCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdpbGx1bWluYXRlIGlsbHVtaW5hbmNlIGdhdGhlcicsIGVuZDogJ1xcXFwoJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgICBrZXl3b3JkOiAnQklMTF9QRVJJT0QgQklMTF9TVEFSVCBCSUxMX1NUT1AgUlNfRUZGRUNUSVZFX1NUQVJUIFJTX0VGRkVDVElWRV9TVE9QIFJTX0pVUklTX0NPREUgUlNfT1BDT19DT0RFICcgK1xuICAgICAgICAgJ0lOVERBRERBVFRSSUJVVEV8NSBJTlREQUREVk1TR3w1IElOVERCTE9DS09QfDUgSU5UREJMT0NLT1BOQXw1IElOVERDTE9TRXw1IElOVERDT1VOVHw1ICcgK1xuICAgICAgICAgJ0lOVERDT1VOVFNUQVRVU0NPREV8NSBJTlREQ1JFQVRFTUFTS3w1IElOVERDUkVBVEVEQVlNQVNLfDUgSU5URENSRUFURUZBQ1RPUk1BU0t8NSAnICtcbiAgICAgICAgICdJTlREQ1JFQVRFSEFORExFfDUgSU5URENSRUFURU9WRVJSSURFREFZTUFTS3w1IElOVERDUkVBVEVPVkVSUklERU1BU0t8NSAnICtcbiAgICAgICAgICdJTlREQ1JFQVRFU1RBVFVTQ09ERU1BU0t8NSBJTlREQ1JFQVRFVE9VUEVSSU9EfDUgSU5URERFTEVURXw1IElOVERESVBURVNUfDUgSU5UREVYUE9SVHw1ICcgK1xuICAgICAgICAgJ0lOVERHRVRFUlJPUkNPREV8NSBJTlRER0VURVJST1JNRVNTQUdFfDUgSU5URElTRVFVQUx8NSBJTlRESk9JTnw1IElOVERMT0FEfDUgSU5URExPQURBQ1RVQUxDVVR8NSAnICtcbiAgICAgICAgICdJTlRETE9BRERBVEVTfDUgSU5URExPQURISVNUfDUgSU5URExPQURMSVNUfDUgSU5URExPQURMSVNUREFURVN8NSBJTlRETE9BRExJU1RFTkVSR1l8NSAnICtcbiAgICAgICAgICdJTlRETE9BRExJU1RISVNUfDUgSU5URExPQURSRUxBVEVEQ0hBTk5FTHw1IElOVERMT0FEU1B8NSBJTlRETE9BRFNUQUdJTkd8NSBJTlRETE9BRFVPTXw1ICcgK1xuICAgICAgICAgJ0lOVERMT0FEVU9NREFURVN8NSBJTlRETE9BRFVPTUhJU1R8NSBJTlRETE9BRFZFUlNJT058NSBJTlRET1BFTnw1IElOVERSRUFERklSU1R8NSBJTlREUkVBRE5FWFR8NSAnICtcbiAgICAgICAgICdJTlREUkVDQ09VTlR8NSBJTlREUkVMRUFTRXw1IElOVERSRVBMQUNFfDUgSU5URFJPTExBVkd8NSBJTlREUk9MTFBFQUt8NSBJTlREU0NBTEFST1B8NSBJTlREU0NBTEV8NSAnICtcbiAgICAgICAgICdJTlREU0VUQVRUUklCVVRFfDUgSU5URFNFVERTVFBBUlRJQ0lQQU5UfDUgSU5URFNFVFNUUklOR3w1IElOVERTRVRWQUxVRXw1IElOVERTRVRWQUxVRVNUQVRVU3w1ICcgK1xuICAgICAgICAgJ0lOVERTSElGVFNUQVJUVElNRXw1IElOVERTTU9PVEh8NSBJTlREU09SVHw1IElOVERTUElLRVRFU1R8NSBJTlREU1VCU0VUfDUgSU5URFRPVXw1ICcgK1xuICAgICAgICAgJ0lOVERUT1VSRUxFQVNFfDUgSU5URFRPVVZBTFVFfDUgSU5URFVQREFURVNUQVRTfDUgSU5URFZBTFVFfDUgU1RERVYgSU5URERFTEVURUVYfDUgJyArXG4gICAgICAgICAnSU5URExPQURFWEFDVFVBTHw1IElOVERMT0FERVhDVVR8NSBJTlRETE9BREVYREFURVN8NSBJTlRETE9BREVYfDUgSU5URExPQURFWFJFTEFURURDSEFOTkVMfDUgJyArXG4gICAgICAgICAnSU5URFNBVkVFWHw1IE1WTE9BRHw1IE1WTE9BREFDQ1R8NSBNVkxPQURBQ0NUREFURVN8NSBNVkxPQURBQ0NUSElTVHw1IE1WTE9BRERBVEVTfDUgTVZMT0FESElTVHw1ICcgK1xuICAgICAgICAgJ01WTE9BRExJU1R8NSBNVkxPQURMSVNUREFURVN8NSBNVkxPQURMSVNUSElTVHw1IElGIEZPUiBORVhUIERPTkUgU0VMRUNUIEVORCBDQUxMIEFCT1JUIENMRUFSIENIQU5ORUwgRkFDVE9SIExJU1QgTlVNQkVSICcgK1xuICAgICAgICAgJ09WRVJSSURFIFNFVCBXRUVLIERJU1RSSUJVVElPTk5PREUgRUxTRSBXSEVOIFRIRU4gT1RIRVJXSVNFIElFTlVNIENTViBJTkNMVURFIExFQVZFIFJJREVSIFNBVkUgREVMRVRFICcgK1xuICAgICAgICAgJ05PVkFMVUUgU0VDVElPTiBXQVJOIFNBVkVfVVBEQVRFIERFVEVSTUlOQU5UIExBQkVMIFJFUE9SVCBSRVZFTlVFIEVBQ0ggJyArXG4gICAgICAgICAnSU4gRlJPTSBUT1RBTCBDSEFSR0UgQkxPQ0sgQU5EIE9SIENTVl9GSUxFIFJBVEVfQ09ERSBBVVhJTElBUllfREVNQU5EICcgK1xuICAgICAgICAgJ1VJREFDQ09VTlQgUlMgQklMTF9QRVJJT0RfU0VMRUNUIEhPVVJTX1BFUl9NT05USCBJTlREX0VSUk9SX1NUT1AgU0VBU09OX1NDSEVEVUxFX05BTUUgJyArXG4gICAgICAgICAnQUNDT1VOVEZBQ1RPUiBBUlJBWVVQUEVSQk9VTkQgQ0FMTFNUT1JFRFBST0MgR0VUQURPQ09OTkVDVElPTiBHRVRDT05ORUNUIEdFVERBVEFTT1VSQ0UgJyArXG4gICAgICAgICAnR0VUUVVBTElGSUVSIEdFVFVTRVJJRCBIQVNWQUxVRSBMSVNUQ09VTlQgTElTVE9QIExJU1RVUERBVEUgTElTVFZBTFVFIFBST1JBVEVGQUNUT1IgUlNQUk9SQVRFICcgK1xuICAgICAgICAgJ1NFVEJJTlBBVEggU0VUREJNT05JVE9SIFdRX09QRU4gQklMTElOR0hPVVJTIERBVEUgREFURUZST01GTE9BVCBEQVRFVElNRUZST01TVFJJTkcgJyArXG4gICAgICAgICAnREFURVRJTUVUT1NUUklORyBEQVRFVE9GTE9BVCBEQVkgREFZRElGRiBEQVlOQU1FIERCREFURVRJTUUgSE9VUiBNSU5VVEUgTU9OVEggTU9OVEhESUZGICcgK1xuICAgICAgICAgJ01PTlRISE9VUlMgTU9OVEhOQU1FIFJPVU5EREFURSBTQU1FV0VFS0RBWUxBU1RZRUFSIFNFQ09ORCBXRUVLREFZIFdFRUtESUZGIFlFQVIgWUVBUkRBWSAnICtcbiAgICAgICAgICdZRUFSU1RSIENPTVBTVU0gSElTVENPVU5UIEhJU1RNQVggSElTVE1JTiBISVNUTUlOTlogSElTVFZBTFVFIE1BWE5SQU5HRSBNQVhSQU5HRSBNSU5SQU5HRSAnICtcbiAgICAgICAgICdDT01QSUtWQSBDT01QS1ZBIENPTVBLVkFSRlJPTUtRS1cgQ09NUExGIElEQVRUUiBGTEFHIExGMktXIExGMktXSCBNQVhLVyBQT1dFUkZBQ1RPUiAnICtcbiAgICAgICAgICdSRUFESU5HMlVTQUdFIEFWR1NFQVNPTiBNQVhTRUFTT04gTU9OVEhMWU1FUkdFIFNFQVNPTlZBTFVFIFNVTVNFQVNPTiBBQ0NUUkVBRERBVEVTICcgK1xuICAgICAgICAgJ0FDQ1RUQUJMRUxPQUQgQ09ORklHQUREIENPTkZJR0dFVCBDUkVBVEVPQkpFQ1QgQ1JFQVRFUkVQT1JUIEVNQUlMQ0xJRU5UIEVYUEJMS01ETVVTQUdFICcgK1xuICAgICAgICAgJ0VYUE1ETVVTQUdFIEVYUE9SVF9VU0FHRSBGQUNUT1JJTkVGRkVDVCBHRVRVU0VSU1BFQ0lGSUVEU1RPUCBJTkVGRkVDVCBJU0hPTElEQVkgUlVOUkFURSAnICtcbiAgICAgICAgICdTQVZFX1BST0ZJTEUgU0VUUkVQT1JUVElUTEUgVVNFUkVYSVQgV0FURk9SUlVOUkFURSBUTyBUQUJMRSBBQ09TIEFTSU4gQVRBTiBBVEFOMiBCSVRBTkQgQ0VJTCAnICtcbiAgICAgICAgICdDT1MgQ09TRUNBTlQgQ09TSCBDT1RBTkdFTlQgRElWUVVPVCBESVZSRU0gRVhQIEZBQlMgRkxPT1IgRk1PRCBGUkVQTSBGUkVYUE4gTE9HIExPRzEwIE1BWCBNQVhOICcgK1xuICAgICAgICAgJ01JTiBNSU5OWiBNT0RGIFBPVyBST1VORCBST1VORDJWQUxVRSBST1VORElOVCBTRUNBTlQgU0lOIFNJTkggU1FST09UIFRBTiBUQU5IIEZMT0FUMlNUUklORyAnICtcbiAgICAgICAgICdGTE9BVDJTVFJJTkdOQyBJTlNUUiBMRUZUIExFTiBMVFJJTSBNSUQgUklHSFQgUlRSSU0gU1RSSU5HIFNUUklOR05DIFRPTE9XRVIgVE9VUFBFUiBUUklNICcgK1xuICAgICAgICAgJ05VTURBWVMgUkVBRF9EQVRFIFNUQUdJTkcnLFxuICAgICAgIGJ1aWx0X2luOiAnSURFTlRJRklFUiBPUFRJT05TIFhNTF9FTEVNRU5UIFhNTF9PUCBYTUxfRUxFTUVOVF9PRiBET01ET0NDUkVBVEUgRE9NRE9DTE9BREZJTEUgRE9NRE9DTE9BRFhNTCAnICtcbiAgICAgICAgICdET01ET0NTQVZFRklMRSBET01ET0NHRVRST09UIERPTURPQ0FERFBJIERPTU5PREVHRVROQU1FIERPTU5PREVHRVRUWVBFIERPTU5PREVHRVRWQUxVRSBET01OT0RFR0VUQ0hJTERDVCAnICtcbiAgICAgICAgICdET01OT0RFR0VURklSU1RDSElMRCBET01OT0RFR0VUU0lCTElORyBET01OT0RFQ1JFQVRFQ0hJTERFTEVNRU5UIERPTU5PREVTRVRBVFRSSUJVVEUgJyArXG4gICAgICAgICAnRE9NTk9ERUdFVENISUxERUxFTUVOVENUIERPTU5PREVHRVRGSVJTVENISUxERUxFTUVOVCBET01OT0RFR0VUU0lCTElOR0VMRU1FTlQgRE9NTk9ERUdFVEFUVFJJQlVURUNUICcgK1xuICAgICAgICAgJ0RPTU5PREVHRVRBVFRSSUJVVEVJIERPTU5PREVHRVRBVFRSSUJVVEVCWU5BTUUgRE9NTk9ERUdFVEJZTkFNRSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnI1xcXFxzK1thLXpBLVpcXFxcIFxcXFwuXSonLCByZWxldmFuY2U6IDB9LCAvLyBsb29rcyBsaWtlICMtY29tbWVudFxuICAgICAgICAgIHtiZWdpbjogJyNbYS16QS1aXFxcXCBcXFxcLl0rJ31cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBOVU1fU1VGRklYID0gJyhbdWldKDh8MTZ8MzJ8NjR8MTI4fHNpemUpfGYoMzJ8NjQpKVxcPyc7XG4gIHZhciBLRVlXT1JEUyA9XG4gICAgJ2Fic3RyYWN0IGFzIGFzeW5jIGF3YWl0IGJlY29tZSBib3ggYnJlYWsgY29uc3QgY29udGludWUgY3JhdGUgZG8gZHluICcgK1xuICAgICdlbHNlIGVudW0gZXh0ZXJuIGZhbHNlIGZpbmFsIGZuIGZvciBpZiBpbXBsIGluIGxldCBsb29wIG1hY3JvIG1hdGNoIG1vZCAnICtcbiAgICAnbW92ZSBtdXQgb3ZlcnJpZGUgcHJpdiBwdWIgcmVmIHJldHVybiBzZWxmIFNlbGYgc3RhdGljIHN0cnVjdCBzdXBlciAnICtcbiAgICAndHJhaXQgdHJ1ZSB0cnkgdHlwZSB0eXBlb2YgdW5zYWZlIHVuc2l6ZWQgdXNlIHZpcnR1YWwgd2hlcmUgd2hpbGUgeWllbGQnO1xuICB2YXIgQlVJTFRJTlMgPVxuICAgIC8vIGZ1bmN0aW9uc1xuICAgICdkcm9wICcgK1xuICAgIC8vIHR5cGVzXG4gICAgJ2k4IGkxNiBpMzIgaTY0IGkxMjggaXNpemUgJyArXG4gICAgJ3U4IHUxNiB1MzIgdTY0IHUxMjggdXNpemUgJyArXG4gICAgJ2YzMiBmNjQgJyArXG4gICAgJ3N0ciBjaGFyIGJvb2wgJyArXG4gICAgJ0JveCBPcHRpb24gUmVzdWx0IFN0cmluZyBWZWMgJyArXG4gICAgLy8gdHJhaXRzXG4gICAgJ0NvcHkgU2VuZCBTaXplZCBTeW5jIERyb3AgRm4gRm5NdXQgRm5PbmNlIFRvT3duZWQgQ2xvbmUgRGVidWcgJyArXG4gICAgJ1BhcnRpYWxFcSBQYXJ0aWFsT3JkIEVxIE9yZCBBc1JlZiBBc011dCBJbnRvIEZyb20gRGVmYXVsdCBJdGVyYXRvciAnICtcbiAgICAnRXh0ZW5kIEludG9JdGVyYXRvciBEb3VibGVFbmRlZEl0ZXJhdG9yIEV4YWN0U2l6ZUl0ZXJhdG9yICcgK1xuICAgICdTbGljZUNvbmNhdEV4dCBUb1N0cmluZyAnICtcbiAgICAvLyBtYWNyb3NcbiAgICAnYXNzZXJ0ISBhc3NlcnRfZXEhIGJpdGZsYWdzISBieXRlcyEgY2ZnISBjb2whIGNvbmNhdCEgY29uY2F0X2lkZW50cyEgJyArXG4gICAgJ2RlYnVnX2Fzc2VydCEgZGVidWdfYXNzZXJ0X2VxISBlbnYhIHBhbmljISBmaWxlISBmb3JtYXQhIGZvcm1hdF9hcmdzISAnICtcbiAgICAnaW5jbHVkZV9iaW4hIGluY2x1ZGVfc3RyISBsaW5lISBsb2NhbF9kYXRhX2tleSEgbW9kdWxlX3BhdGghICcgK1xuICAgICdvcHRpb25fZW52ISBwcmludCEgcHJpbnRsbiEgc2VsZWN0ISBzdHJpbmdpZnkhIHRyeSEgdW5pbXBsZW1lbnRlZCEgJyArXG4gICAgJ3VucmVhY2hhYmxlISB2ZWMhIHdyaXRlISB3cml0ZWxuISBtYWNyb19ydWxlcyEgYXNzZXJ0X25lISBkZWJ1Z19hc3NlcnRfbmUhJztcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3JzJ10sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgU29tZSBOb25lIE9rIEVycicsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgQlVJTFRJTlNcbiAgICB9LFxuICAgIGxleGVtZXM6IGhsanMuSURFTlRfUkUgKyAnIT8nLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHtjb250YWluczogWydzZWxmJ119KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7YmVnaW46IC9iP1wiLywgaWxsZWdhbDogbnVsbH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICB7IGJlZ2luOiAvcigjKilcIigufFxcbikqP1wiXFwxKD8hIykvIH0sXG4gICAgICAgICAgIHsgYmVnaW46IC9iPydcXFxcPyh4XFx3ezJ9fHVcXHd7NH18VVxcd3s4fXwuKScvIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC8nW2EtekEtWl9dW2EtekEtWjAtOV9dKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiMGIoWzAxX10rKScgKyBOVU1fU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiMG8oWzAtN19dKyknICsgTlVNX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYjB4KFtBLUZhLWYwLTlfXSspJyArIE5VTV9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoXFxcXGRbXFxcXGRfXSooXFxcXC5bMC05X10rKT8oW2VFXVsrLV0/WzAtOV9dKyk/KScgK1xuICAgICAgICAgICAgICAgICAgIE5VTV9TVUZGSVhcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZm4nLCBlbmQ6ICcoXFxcXCh8PCknLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW2hsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnI1xcXFwhP1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEtc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXCIvLCBlbmQ6IC9cIi9cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3R5cGUnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIHtlbmRzUGFyZW50OiB0cnVlfSlcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxTJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAndHJhaXQgZW51bSBzdHJ1Y3QgdW5pb24nLCBlbmQ6ICd7JyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsIHtlbmRzUGFyZW50OiB0cnVlfSlcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogJ1tcXFxcd1xcXFxkXSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJzo6JyxcbiAgICAgICAga2V5d29yZHM6IHtidWlsdF9pbjogQlVJTFRJTlN9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJy0+J1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgICAvLyBEYXRhIHN0ZXAgYW5kIFBST0MgU1FMIHN0YXRlbWVudHNcbiAgICB2YXIgU0FTX0tFWVdPUkRTID0gJycrXG4gICAgICAgICdkbyBpZiB0aGVuIGVsc2UgZW5kIHVudGlsIHdoaWxlICcrXG4gICAgICAgICcnK1xuICAgICAgICAnYWJvcnQgYXJyYXkgYXR0cmliIGJ5IGNhbGwgY2FyZHMgY2FyZHM0IGNhdG5hbWUgY29udGludWUgJytcbiAgICAgICAgJ2RhdGFsaW5lcyBkYXRhbGluZXM0IGRlbGV0ZSBkZWxpbSBkZWxpbWl0ZXIgZGlzcGxheSBkbSBkcm9wICcrXG4gICAgICAgICdlbmRzYXMgZXJyb3IgZmlsZSBmaWxlbmFtZSBmb290bm90ZSBmb3JtYXQgZ290byBpbiBpbmZpbGUgJytcbiAgICAgICAgJ2luZm9ybWF0IGlucHV0IGtlZXAgbGFiZWwgbGVhdmUgbGVuZ3RoIGxpYm5hbWUgbGluayBsaXN0ICcrXG4gICAgICAgICdsb3N0Y2FyZCBtZXJnZSBtaXNzaW5nIG1vZGlmeSBvcHRpb25zIG91dHB1dCBvdXQgcGFnZSBwdXQgJytcbiAgICAgICAgJ3JlZGlyZWN0IHJlbW92ZSByZW5hbWUgcmVwbGFjZSByZXRhaW4gcmV0dXJuIHNlbGVjdCBzZXQgc2tpcCAnK1xuICAgICAgICAnc3RhcnRzYXMgc3RvcCB0aXRsZSB1cGRhdGUgd2FpdHNhcyB3aGVyZSB3aW5kb3cgeCBzeXN0YXNrICcrXG4gICAgICAgICcnK1xuICAgICAgICAnYWRkIGFuZCBhbHRlciBhcyBjYXNjYWRlIGNoZWNrIGNyZWF0ZSBkZWxldGUgZGVzY3JpYmUgJytcbiAgICAgICAgJ2Rpc3RpbmN0IGRyb3AgZm9yZWlnbiBmcm9tIGdyb3VwIGhhdmluZyBpbmRleCBpbnNlcnQgaW50byBpbiAnK1xuICAgICAgICAna2V5IGxpa2UgbWVzc2FnZSBtb2RpZnkgbXNndHlwZSBub3QgbnVsbCBvbiBvciBvcmRlciBwcmltYXJ5ICcrXG4gICAgICAgICdyZWZlcmVuY2VzIHJlc2V0IHJlc3RyaWN0IHNlbGVjdCBzZXQgdGFibGUgdW5pcXVlIHVwZGF0ZSAnK1xuICAgICAgICAndmFsaWRhdGUgdmlldyB3aGVyZSc7XG5cbiAgICAvLyBCdWlsdC1pbiBTQVMgZnVuY3Rpb25zXG4gICAgdmFyIFNBU19GVU4gPSAnJytcbiAgICAgICAgJ2Fic3xhZGRyfGFpcnl8YXJjb3N8YXJzaW58YXRhbnxhdHRyY3xhdHRybnxiYW5kfCcrXG4gICAgICAgICdiZXRhaW52fGJsc2hpZnR8Ym5vdHxib3J8YnJzaGlmdHxieG9yfGJ5dGV8Y2RmfGNlaWx8JytcbiAgICAgICAgJ2NleGlzdHxjaW52fGNsb3NlfGNub25jdHxjb2xsYXRlfGNvbXBibHxjb21wb3VuZHwnK1xuICAgICAgICAnY29tcHJlc3N8Y29zfGNvc2h8Y3NzfGN1cm9ic3xjdnxkYWNjZGJ8ZGFjY2Ric2x8JytcbiAgICAgICAgJ2RhY2NzbHxkYWNjc3lkfGRhY2N0YWJ8ZGFpcnl8ZGF0ZXxkYXRlanVsfGRhdGVwYXJ0fCcrXG4gICAgICAgICdkYXRldGltZXxkYXl8ZGNsb3NlfGRlcGRifGRlcGRic2x8ZGVwZGJzbHxkZXBzbHwnK1xuICAgICAgICAnZGVwc2x8ZGVwc3lkfGRlcHN5ZHxkZXB0YWJ8ZGVwdGFifGRlcXVvdGV8ZGhtc3xkaWZ8JytcbiAgICAgICAgJ2RpZ2FtbWF8ZGltfGRpbmZvfGRudW18ZG9wZW58ZG9wdG5hbWV8ZG9wdG51bXxkcmVhZHwnK1xuICAgICAgICAnZHJvcG5vdGV8ZHNuYW1lfGVyZnxlcmZjfGV4aXN0fGV4cHxmYXBwZW5kfGZjbG9zZXwnK1xuICAgICAgICAnZmNvbHxmZGVsZXRlfGZldGNofGZldGNob2JzfGZleGlzdHxmZ2V0fGZpbGVleGlzdHwnK1xuICAgICAgICAnZmlsZW5hbWV8ZmlsZXJlZnxmaW5mb3xmaW52fGZpcG5hbWV8ZmlwbmFtZWx8JytcbiAgICAgICAgJ2ZpcHN0YXRlfGZsb29yfGZub25jdHxmbm90ZXxmb3Blbnxmb3B0bmFtZXxmb3B0bnVtfCcrXG4gICAgICAgICdmcG9pbnR8ZnBvc3xmcHV0fGZyZWFkfGZyZXdpbmR8ZnJsZW58ZnNlcHxmdXp6fCcrXG4gICAgICAgICdmd3JpdGV8Z2FtaW52fGdhbW1hfGdldG9wdGlvbnxnZXR2YXJjfGdldHZhcm58aGJvdW5kfCcrXG4gICAgICAgICdobXN8aG9zdGhlbHB8aG91cnxpYmVzc2VsfGluZGV4fGluZGV4Y3xpbmRleHd8aW5wdXR8JytcbiAgICAgICAgJ2lucHV0Y3xpbnB1dG58aW50fGludGNrfGludG54fGludHJyfGlycnxqYmVzc2VsfCcrXG4gICAgICAgICdqdWxkYXRlfGt1cnRvc2lzfGxhZ3xsYm91bmR8bGVmdHxsZW5ndGh8bGdhbW1hfCcrXG4gICAgICAgICdsaWJuYW1lfGxpYnJlZnxsb2d8bG9nMTB8bG9nMnxsb2dwZGZ8bG9ncG1mfGxvZ3NkZnwnK1xuICAgICAgICAnbG93Y2FzZXxtYXh8bWR5fG1lYW58bWlufG1pbnV0ZXxtb2R8bW9udGh8bW9wZW58JytcbiAgICAgICAgJ21vcnR8bnxuZXRwdnxubWlzc3xub3JtYWx8bm90ZXxucHZ8b3BlbnxvcmRpbmFsfCcrXG4gICAgICAgICdwYXRobmFtZXxwZGZ8cGVla3xwZWVrY3xwbWZ8cG9pbnR8cG9pc3Nvbnxwb2tlfCcrXG4gICAgICAgICdwcm9iYmV0YXxwcm9iYm5tbHxwcm9iY2hpfHByb2JmfHByb2JnYW18cHJvYmh5cHJ8JytcbiAgICAgICAgJ3Byb2JpdHxwcm9ibmVnYnxwcm9ibm9ybXxwcm9idHxwdXR8cHV0Y3xwdXRufHF0cnwnK1xuICAgICAgICAncXVvdGV8cmFuYmlufHJhbmNhdXxyYW5leHB8cmFuZ2FtfHJhbmdlfHJhbmt8cmFubm9yfCcrXG4gICAgICAgICdyYW5wb2l8cmFudGJsfHJhbnRyaXxyYW51bml8cmVwZWF0fHJlc29sdmV8cmV2ZXJzZXwnK1xuICAgICAgICAncmV3aW5kfHJpZ2h0fHJvdW5kfHNhdmluZ3xzY2FufHNkZnxzZWNvbmR8c2lnbnwnK1xuICAgICAgICAnc2lufHNpbmh8c2tld25lc3N8c291bmRleHxzcGVkaXN8c3FydHxzdGR8c3RkZXJyfCcrXG4gICAgICAgICdzdGZpcHN8c3RuYW1lfHN0bmFtZWx8c3Vic3RyfHN1bXxzeW1nZXR8c3lzZ2V0fCcrXG4gICAgICAgICdzeXNtc2d8c3lzcHJvZHxzeXNyY3xzeXN0ZW18dGFufHRhbmh8dGltZXx0aW1lcGFydHwnK1xuICAgICAgICAndGludnx0bm9uY3R8dG9kYXl8dHJhbnNsYXRlfHRyYW53cmR8dHJpZ2FtbWF8JytcbiAgICAgICAgJ3RyaW18dHJpbW58dHJ1bmN8dW5pZm9ybXx1cGNhc2V8dXNzfHZhcnx2YXJmbXR8JytcbiAgICAgICAgJ3ZhcmluZm10fHZhcmxhYmVsfHZhcmxlbnx2YXJuYW1lfHZhcm51bXx2YXJyYXl8JytcbiAgICAgICAgJ3ZhcnJheXh8dmFydHlwZXx2ZXJpZnl8dmZvcm1hdHx2Zm9ybWF0ZHx2Zm9ybWF0ZHh8JytcbiAgICAgICAgJ3Zmb3JtYXRufHZmb3JtYXRueHx2Zm9ybWF0d3x2Zm9ybWF0d3h8dmZvcm1hdHh8JytcbiAgICAgICAgJ3ZpbmFycmF5fHZpbmFycmF5eHx2aW5mb3JtYXR8dmluZm9ybWF0ZHx2aW5mb3JtYXRkeHwnK1xuICAgICAgICAndmluZm9ybWF0bnx2aW5mb3JtYXRueHx2aW5mb3JtYXR3fHZpbmZvcm1hdHd4fCcrXG4gICAgICAgICd2aW5mb3JtYXR4fHZsYWJlbHx2bGFiZWx4fHZsZW5ndGh8dmxlbmd0aHh8dm5hbWV8JytcbiAgICAgICAgJ3ZuYW1leHx2dHlwZXx2dHlwZXh8d2Vla2RheXx5ZWFyfHl5cXx6aXBmaXBzfHppcG5hbWV8JytcbiAgICAgICAgJ3ppcG5hbWVsfHppcHN0YXRlJztcblxuICAgIC8vIEJ1aWx0LWluIG1hY3JvIGZ1bmN0aW9uc1xuICAgIHZhciBTQVNfTUFDUk9fRlVOID0gJ2JxdW90ZXxucmJxdW90ZXxjbXByZXN8cWNtcHJlc3xjb21wc3RvcnwnK1xuICAgICAgICAnZGF0YXR5cHxkaXNwbGF5fGRvfGVsc2V8ZW5kfGV2YWx8Z2xvYmFsfGdvdG98JytcbiAgICAgICAgJ2lmfGluZGV4fGlucHV0fGtleWRlZnxsYWJlbHxsZWZ0fGxlbmd0aHxsZXR8JytcbiAgICAgICAgJ2xvY2FsfGxvd2Nhc2V8bWFjcm98bWVuZHxucmJxdW90ZXxucnF1b3RlfCcrXG4gICAgICAgICducnN0cnxwdXR8cWNtcHJlc3xxbGVmdHxxbG93Y2FzZXxxc2NhbnwnK1xuICAgICAgICAncXN1YnN0cnxxc3lzZnVuY3xxdHJpbXxxdW90ZXxxdXBjYXNlfHNjYW58c3RyfCcrXG4gICAgICAgICdzdWJzdHJ8c3VwZXJxfHN5c2NhbGx8c3lzZXZhbGZ8c3lzZXhlY3xzeXNmdW5jfCcrXG4gICAgICAgICdzeXNnZXR8c3lzbHB1dHxzeXNwcm9kfHN5c3JjfHN5c3JwdXR8dGhlbnx0b3wnK1xuICAgICAgICAndHJpbXx1bnF1b3RlfHVudGlsfHVwY2FzZXx2ZXJpZnl8d2hpbGV8d2luZG93JztcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFsaWFzZXM6IFsnc2FzJywgJ1NBUyddLFxuICAgICAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTQVMgaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICAgICAnbnVsbCBtaXNzaW5nIF9hbGxfIF9hdXRvbWF0aWNfIF9jaGFyYWN0ZXJfIF9pbmZpbGVfICcrXG4gICAgICAgICAgICAgICAgJ19uXyBfbmFtZV8gX251bGxfIF9udW1lcmljXyBfdXNlcl8gX3dlYm91dF8nLFxuICAgICAgICAgICAgbWV0YTpcbiAgICAgICAgICAgICAgICBTQVNfS0VZV09SRFNcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBEaXN0aW5jdCBoaWdobGlnaHQgZm9yIHByb2MgPHByb2M+LCBkYXRhLCBydW4sIHF1aXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogL15cXHMqKHByb2MgW1xcd1xcZF9dK3xkYXRhfHJ1bnxxdWl0KVtcXHNcXDtdL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBNYWNybyB2YXJpYWJsZXNcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IC9cXCZbYS16QS1aX1xcJl1bYS16QS1aMC05X10qXFwuPy9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBlbXBoYXNpcyBmb3IgZGF0YWxpbmVzfGNhcmRzXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAvXlxccypkYXRhbGluZXN8Y2FyZHMuKjsvLFxuICAgICAgICAgICAgICAgIGVuZDogL15cXHMqO1xccyokL1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgICAvLyBCdWlsdC1pbiBtYWNybyB2YXJpYWJsZXMgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICAgICAgICAgIGJlZ2luOiAnJSgnICsgU0FTX01BQ1JPX0ZVTiArICcpJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBVc2VyLWRlZmluZWQgbWFjcm8gZnVuY3Rpb25zIGhpZ2hsaWdodGVkIGFmdGVyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgYmVnaW46IC8lW2EtekEtWl9dW2EtekEtWl8wLTldKi9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgICAgICAgICAgYmVnaW46ICdbXiVdKCcgKyBTQVNfRlVOICsgJylbXFwoXSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKicsICc7JyksXG4gICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgQU5OT1RBVElPTiA9IHsgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnQFtBLVphLXpdKycgfTtcblxuICAvLyB1c2VkIGluIHN0cmluZ3MgZm9yIGVzY2FwaW5nL2ludGVycG9sYXRpb24vc3Vic3RpdHV0aW9uXG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKyd9LFxuICAgICAge2JlZ2luOiAnXFxcXCR7JywgZW5kOiAnfSd9XG4gICAgXVxuICB9O1xuXG4gIHZhciBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16XStcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIFNVQlNUXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdbYS16XStcIlwiXCInLCBlbmQ6ICdcIlwiXCInLFxuICAgICAgICBjb250YWluczogW1NVQlNUXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIF1cblxuICB9O1xuXG4gIHZhciBTWU1CT0wgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJ1xcXFx3W1xcXFx3XFxcXGRfXSooPyFcXCcpJ1xuICB9O1xuXG4gIHZhciBUWVBFID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtBLVphLXowLTlfXSonLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBOQU1FID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogL1teMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06O11bXlxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdK3xbXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjs9XS8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIENMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnY2xhc3Mgb2JqZWN0IHRyYWl0IHR5cGUnLFxuICAgIGVuZDogL1s6PXtcXFtcXG47XS8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyB3aXRoJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgICBlbmQ6IC9cXF0vLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtUWVBFXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtUWVBFXVxuICAgICAgfSxcbiAgICAgIE5BTUVcbiAgICBdXG4gIH07XG5cbiAgdmFyIE1FVEhPRCA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZicsXG4gICAgZW5kOiAvWzo9e1xcWyhcXG47XS8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogW05BTUVdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UgbnVsbCcsXG4gICAgICBrZXl3b3JkOiAndHlwZSB5aWVsZCBsYXp5IG92ZXJyaWRlIGRlZiB3aXRoIHZhbCB2YXIgc2VhbGVkIGFic3RyYWN0IHByaXZhdGUgdHJhaXQgb2JqZWN0IGlmIGZvclNvbWUgZm9yIHdoaWxlIHRocm93IGZpbmFsbHkgcHJvdGVjdGVkIGV4dGVuZHMgaW1wb3J0IGZpbmFsIHJldHVybiBlbHNlIGJyZWFrIG5ldyBjYXRjaCBzdXBlciBjbGFzcyBjYXNlIHBhY2thZ2UgZGVmYXVsdCB0cnkgdGhpcyBtYXRjaCBjb250aW51ZSB0aHJvd3MgaW1wbGljaXQnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORyxcbiAgICAgIFNZTUJPTCxcbiAgICAgIFRZUEUsXG4gICAgICBNRVRIT0QsXG4gICAgICBDTEFTUyxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIEFOTk9UQVRJT05cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU0NIRU1FX0lERU5UX1JFID0gJ1teXFxcXChcXFxcKVxcXFxbXFxcXF1cXFxce1xcXFx9XCIsXFwnYDsjfFxcXFxcXFxcXFxcXHNdKyc7XG4gIHZhciBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSA9ICcoXFxcXC18XFxcXCspP1xcXFxkKyhbLi9dXFxcXGQrKT8nO1xuICB2YXIgU0NIRU1FX0NPTVBMRVhfTlVNQkVSX1JFID0gU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUgKyAnWytcXFxcLV0nICsgU0NIRU1FX1NJTVBMRV9OVU1CRVJfUkUgKyAnaSc7XG4gIHZhciBCVUlMVElOUyA9IHtcbiAgICAnYnVpbHRpbi1uYW1lJzpcbiAgICAgICdjYXNlLWxhbWJkYSBjYWxsL2NjIGNsYXNzIGRlZmluZS1jbGFzcyBleGl0LWhhbmRsZXIgZmllbGQgaW1wb3J0ICcgK1xuICAgICAgJ2luaGVyaXQgaW5pdC1maWVsZCBpbnRlcmZhY2UgbGV0Ki12YWx1ZXMgbGV0LXZhbHVlcyBsZXQvZWMgbWl4aW4gJyArXG4gICAgICAnb3B0LWxhbWJkYSBvdmVycmlkZSBwcm90ZWN0IHByb3ZpZGUgcHVibGljIHJlbmFtZSByZXF1aXJlICcgK1xuICAgICAgJ3JlcXVpcmUtZm9yLXN5bnRheCBzeW50YXggc3ludGF4LWNhc2Ugc3ludGF4LWVycm9yIHVuaXQvc2lnIHVubGVzcyAnICtcbiAgICAgICd3aGVuIHdpdGgtc3ludGF4IGFuZCBiZWdpbiBjYWxsLXdpdGgtY3VycmVudC1jb250aW51YXRpb24gJyArXG4gICAgICAnY2FsbC13aXRoLWlucHV0LWZpbGUgY2FsbC13aXRoLW91dHB1dC1maWxlIGNhc2UgY29uZCBkZWZpbmUgJyArXG4gICAgICAnZGVmaW5lLXN5bnRheCBkZWxheSBkbyBkeW5hbWljLXdpbmQgZWxzZSBmb3ItZWFjaCBpZiBsYW1iZGEgbGV0IGxldCogJyArXG4gICAgICAnbGV0LXN5bnRheCBsZXRyZWMgbGV0cmVjLXN5bnRheCBtYXAgb3Igc3ludGF4LXJ1bGVzIFxcJyAqICsgLCAsQCAtIC4uLiAvICcgK1xuICAgICAgJzsgPCA8PSA9ID0+ID4gPj0gYCBhYnMgYWNvcyBhbmdsZSBhcHBlbmQgYXBwbHkgYXNpbiBhc3NvYyBhc3NxIGFzc3YgYXRhbiAnICtcbiAgICAgICdib29sZWFuPyBjYWFyIGNhZHIgY2FsbC13aXRoLWlucHV0LWZpbGUgY2FsbC13aXRoLW91dHB1dC1maWxlICcgK1xuICAgICAgJ2NhbGwtd2l0aC12YWx1ZXMgY2FyIGNkZGRhciBjZGRkZHIgY2RyIGNlaWxpbmcgY2hhci0+aW50ZWdlciAnICtcbiAgICAgICdjaGFyLWFscGhhYmV0aWM/IGNoYXItY2k8PT8gY2hhci1jaTw/IGNoYXItY2k9PyBjaGFyLWNpPj0/IGNoYXItY2k+PyAnICtcbiAgICAgICdjaGFyLWRvd25jYXNlIGNoYXItbG93ZXItY2FzZT8gY2hhci1udW1lcmljPyBjaGFyLXJlYWR5PyBjaGFyLXVwY2FzZSAnICtcbiAgICAgICdjaGFyLXVwcGVyLWNhc2U/IGNoYXItd2hpdGVzcGFjZT8gY2hhcjw9PyBjaGFyPD8gY2hhcj0/IGNoYXI+PT8gY2hhcj4/ICcgK1xuICAgICAgJ2NoYXI/IGNsb3NlLWlucHV0LXBvcnQgY2xvc2Utb3V0cHV0LXBvcnQgY29tcGxleD8gY29ucyBjb3MgJyArXG4gICAgICAnY3VycmVudC1pbnB1dC1wb3J0IGN1cnJlbnQtb3V0cHV0LXBvcnQgZGVub21pbmF0b3IgZGlzcGxheSBlb2Ytb2JqZWN0PyAnICtcbiAgICAgICdlcT8gZXF1YWw/IGVxdj8gZXZhbCBldmVuPyBleGFjdC0+aW5leGFjdCBleGFjdD8gZXhwIGV4cHQgZmxvb3IgJyArXG4gICAgICAnZm9yY2UgZ2NkIGltYWctcGFydCBpbmV4YWN0LT5leGFjdCBpbmV4YWN0PyBpbnB1dC1wb3J0PyBpbnRlZ2VyLT5jaGFyICcgK1xuICAgICAgJ2ludGVnZXI/IGludGVyYWN0aW9uLWVudmlyb25tZW50IGxjbSBsZW5ndGggbGlzdCBsaXN0LT5zdHJpbmcgJyArXG4gICAgICAnbGlzdC0+dmVjdG9yIGxpc3QtcmVmIGxpc3QtdGFpbCBsaXN0PyBsb2FkIGxvZyBtYWduaXR1ZGUgbWFrZS1wb2xhciAnICtcbiAgICAgICdtYWtlLXJlY3Rhbmd1bGFyIG1ha2Utc3RyaW5nIG1ha2UtdmVjdG9yIG1heCBtZW1iZXIgbWVtcSBtZW12IG1pbiAnICtcbiAgICAgICdtb2R1bG8gbmVnYXRpdmU/IG5ld2xpbmUgbm90IG51bGwtZW52aXJvbm1lbnQgbnVsbD8gbnVtYmVyLT5zdHJpbmcgJyArXG4gICAgICAnbnVtYmVyPyBudW1lcmF0b3Igb2RkPyBvcGVuLWlucHV0LWZpbGUgb3Blbi1vdXRwdXQtZmlsZSBvdXRwdXQtcG9ydD8gJyArXG4gICAgICAncGFpcj8gcGVlay1jaGFyIHBvcnQ/IHBvc2l0aXZlPyBwcm9jZWR1cmU/IHF1YXNpcXVvdGUgcXVvdGUgcXVvdGllbnQgJyArXG4gICAgICAncmF0aW9uYWw/IHJhdGlvbmFsaXplIHJlYWQgcmVhZC1jaGFyIHJlYWwtcGFydCByZWFsPyByZW1haW5kZXIgcmV2ZXJzZSAnICtcbiAgICAgICdyb3VuZCBzY2hlbWUtcmVwb3J0LWVudmlyb25tZW50IHNldCEgc2V0LWNhciEgc2V0LWNkciEgc2luIHNxcnQgc3RyaW5nICcgK1xuICAgICAgJ3N0cmluZy0+bGlzdCBzdHJpbmctPm51bWJlciBzdHJpbmctPnN5bWJvbCBzdHJpbmctYXBwZW5kIHN0cmluZy1jaTw9PyAnICtcbiAgICAgICdzdHJpbmctY2k8PyBzdHJpbmctY2k9PyBzdHJpbmctY2k+PT8gc3RyaW5nLWNpPj8gc3RyaW5nLWNvcHkgJyArXG4gICAgICAnc3RyaW5nLWZpbGwhIHN0cmluZy1sZW5ndGggc3RyaW5nLXJlZiBzdHJpbmctc2V0ISBzdHJpbmc8PT8gc3RyaW5nPD8gJyArXG4gICAgICAnc3RyaW5nPT8gc3RyaW5nPj0/IHN0cmluZz4/IHN0cmluZz8gc3Vic3RyaW5nIHN5bWJvbC0+c3RyaW5nIHN5bWJvbD8gJyArXG4gICAgICAndGFuIHRyYW5zY3JpcHQtb2ZmIHRyYW5zY3JpcHQtb24gdHJ1bmNhdGUgdmFsdWVzIHZlY3RvciAnICtcbiAgICAgICd2ZWN0b3ItPmxpc3QgdmVjdG9yLWZpbGwhIHZlY3Rvci1sZW5ndGggdmVjdG9yLXJlZiB2ZWN0b3Itc2V0ISAnICtcbiAgICAgICd3aXRoLWlucHV0LWZyb20tZmlsZSB3aXRoLW91dHB1dC10by1maWxlIHdyaXRlIHdyaXRlLWNoYXIgemVybz8nXG4gIH07XG5cbiAgdmFyIFNIRUJBTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdeIyEnLFxuICAgIGVuZDogJyQnXG4gIH07XG5cbiAgdmFyIExJVEVSQUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICcoI3R8I2Z8I1xcXFxcXFxcJyArIFNDSEVNRV9JREVOVF9SRSArICd8I1xcXFxcXFxcLiknXG4gIH07XG5cbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiBTQ0hFTUVfU0lNUExFX05VTUJFUl9SRSwgcmVsZXZhbmNlOiAwIH0sXG4gICAgICB7IGJlZ2luOiBTQ0hFTUVfQ09NUExFWF9OVU1CRVJfUkUsIHJlbGV2YW5jZTogMCB9LFxuICAgICAgeyBiZWdpbjogJyNiWzAtMV0rKC9bMC0xXSspPycgfSxcbiAgICAgIHsgYmVnaW46ICcjb1swLTddKygvWzAtN10rKT8nIH0sXG4gICAgICB7IGJlZ2luOiAnI3hbMC05YS1mXSsoL1swLTlhLWZdKyk/JyB9XG4gICAgXVxuICB9O1xuXG4gIHZhciBTVFJJTkcgPSBobGpzLlFVT1RFX1NUUklOR19NT0RFO1xuXG4gIHZhciBSRUdVTEFSX0VYUFJFU1NJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBiZWdpbjogJyNbcHJdeFwiJyxcbiAgICBlbmQ6ICdbXlxcXFxcXFxcXVwiJ1xuICB9O1xuXG4gIHZhciBDT01NRU5UX01PREVTID0gW1xuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICc7JyxcbiAgICAgICckJyxcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgKSxcbiAgICBobGpzLkNPTU1FTlQoJyNcXFxcfCcsICdcXFxcfCMnKVxuICBdO1xuXG4gIHZhciBJREVOVCA9IHtcbiAgICBiZWdpbjogU0NIRU1FX0lERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIHZhciBRVU9URURfSURFTlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ1xcJycgKyBTQ0hFTUVfSURFTlRfUkVcbiAgfTtcblxuICB2YXIgQk9EWSA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICB2YXIgUVVPVEVEX0xJU1QgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IC8nLyB9LFxuICAgICAgeyBiZWdpbjogJ2AnIH1cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKScsXG4gICAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCBMSVRFUkFMLCBTVFJJTkcsIE5VTUJFUiwgSURFTlQsIFFVT1RFRF9JREVOVF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgYmVnaW46IFNDSEVNRV9JREVOVF9SRSxcbiAgICBsZXhlbWVzOiBTQ0hFTUVfSURFTlRfUkUsXG4gICAga2V5d29yZHM6IEJVSUxUSU5TXG4gIH07XG5cbiAgdmFyIExBTUJEQSA9IHtcbiAgICBiZWdpbjogL2xhbWJkYS8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLCByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgTkFNRSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLCBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICBjb250YWluczogW0lERU5UXSxcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgdmFyIExJU1QgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nIH1cbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbTEFNQkRBLCBOQU1FLCBCT0RZXVxuICB9O1xuXG4gIEJPRFkuY29udGFpbnMgPSBbTElURVJBTCwgTlVNQkVSLCBTVFJJTkcsIElERU5ULCBRVU9URURfSURFTlQsIFFVT1RFRF9MSVNULCBMSVNUXS5jb25jYXQoQ09NTUVOVF9NT0RFUyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbGxlZ2FsOiAvXFxTLyxcbiAgICBjb250YWluczogW1NIRUJBTkcsIE5VTUJFUiwgU1RSSU5HLCBRVU9URURfSURFTlQsIFFVT1RFRF9MSVNULCBMSVNUXS5jb25jYXQoQ09NTUVOVF9NT0RFUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIENPTU1PTl9DT05UQUlOUyA9IFtcbiAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnXFwnfFxcXCInLCBlbmQ6ICdcXCd8XFxcIicsXG4gICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRSwge2JlZ2luOiAnXFwnXFwnJ31dXG4gICAgfVxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydzY2knXSxcbiAgICBsZXhlbWVzOiAvJT9cXHcrLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2Fib3J0IGJyZWFrIGNhc2UgY2xlYXIgY2F0Y2ggY29udGludWUgZG8gZWxzZWlmIGVsc2UgZW5kZnVuY3Rpb24gZW5kIGZvciBmdW5jdGlvbiAnK1xuICAgICAgICAnZ2xvYmFsIGlmIHBhdXNlIHJldHVybiByZXN1bWUgc2VsZWN0IHRyeSB0aGVuIHdoaWxlJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICclZiAlRiAldCAlVCAlcGkgJWVwcyAlaW5mICVuYW4gJWUgJWkgJXogJXMnLFxuICAgICAgYnVpbHRfaW46IC8vIFNjaWxhYiBoYXMgbW9yZSB0aGFuIDIwMDAgZnVuY3Rpb25zLiBKdXN0IGxpc3QgdGhlIG1vc3QgY29tbW9uc1xuICAgICAgICdhYnMgYW5kIGFjb3MgYXNpbiBhdGFuIGNlaWwgY2QgY2hkaXIgY2xlYXJnbG9iYWwgY29zaCBjb3MgY3VtcHJvZCBkZWZmIGRpc3AgZXJyb3IgJytcbiAgICAgICAnZXhlYyBleGVjc3RyIGV4aXN0cyBleHAgZXllIGdldHRleHQgZmxvb3IgZnByaW50ZiBmcmVhZCBmc29sdmUgaW1hZyBpc2RlZiBpc2VtcHR5ICcrXG4gICAgICAgJ2lzaW5maXNuYW4gaXN2ZWN0b3IgbGFzdGVycm9yIGxlbmd0aCBsb2FkIGxpbnNwYWNlIGxpc3QgbGlzdGZpbGVzIGxvZzEwIGxvZzIgbG9nICcrXG4gICAgICAgJ21heCBtaW4gbXNwcmludGYgbWNsb3NlIG1vcGVuIG9uZXMgb3IgcGF0aGNvbnZlcnQgcG9seSBwcmludGYgcHJvZCBwd2QgcmFuZCByZWFsICcrXG4gICAgICAgJ3JvdW5kIHNpbmggc2luIHNpemUgZ3NvcnQgc3ByaW50ZiBzcXJ0IHN0cmNhdCBzdHJjbXBzIHRyaW5nIHN1bSBzeXN0ZW0gdGFuaCB0YW4gJytcbiAgICAgICAndHlwZSB0eXBlbmFtZSB3YXJuaW5nIHplcm9zIG1hdHJpeCdcbiAgICB9LFxuICAgIGlsbGVnYWw6ICcoXCJ8I3wvXFxcXCp8XFxcXHMrL1xcXFx3KyknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2EtekEtWl9dW2EtekEtWl8wLTldKihcXCcrW1xcXFwuXFwnXSp8W1xcXFwuXFwnXSspJywgZW5kOiAnJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF1cXCcqW1xcXFwuXFwnXSonLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBDT01NT05fQ09OVEFJTlNcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJy8vJywgJyQnKVxuICAgIF0uY29uY2F0KENPTU1PTl9DT05UQUlOUylcbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBJREVOVF9SRSA9ICdbYS16QS1aLV1bYS16QS1aMC05Xy1dKic7XG4gIHZhciBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICcoXFxcXCQnICsgSURFTlRfUkUgKyAnKVxcXFxiJ1xuICB9O1xuICB2YXIgSEVYQ09MT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJywgYmVnaW46ICcjWzAtOUEtRmEtZl0rJ1xuICB9O1xuICB2YXIgREVGX0lOVEVSTkFMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgIGJlZ2luOiAnW0EtWlxcXFxfXFxcXC5cXFxcLV0rJywgZW5kOiAnOicsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnW15cXFxcc10nLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBIRVhDT0xPUixcbiAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLCBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnWz0vfFxcJ10nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCcsIGJlZ2luOiAnXFxcXCNbQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnLCBiZWdpbjogJ1xcXFwuW0EtWmEtejAtOV8tXSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWF0dHInLCBiZWdpbjogJ1xcXFxbJywgZW5kOiAnXFxcXF0nLFxuICAgICAgICBpbGxlZ2FsOiAnJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsIC8vIGJlZ2luOiBJREVOVF9SRSwgZW5kOiAnWyx8XFxcXHNdJ1xuICAgICAgICBiZWdpbjogJ1xcXFxiKGF8YWJicnxhY3JvbnltfGFkZHJlc3N8YXJlYXxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJ8YmFzZXxiaWd8YmxvY2txdW90ZXxib2R5fGJyfGJ1dHRvbnxjYW52YXN8Y2FwdGlvbnxjaXRlfGNvZGV8Y29sfGNvbGdyb3VwfGNvbW1hbmR8ZGF0YWxpc3R8ZGR8ZGVsfGRldGFpbHN8ZGZufGRpdnxkbHxkdHxlbXxlbWJlZHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHwoaFsxLTZdKXxoZWFkfGhlYWRlcnxoZ3JvdXB8aHJ8aHRtbHxpfGlmcmFtZXxpbWd8aW5wdXR8aW5zfGtiZHxrZXlnZW58bGFiZWx8bGVnZW5kfGxpfGxpbmt8bWFwfG1hcmt8bWV0YXxtZXRlcnxuYXZ8bm9mcmFtZXN8bm9zY3JpcHR8b2JqZWN0fG9sfG9wdGdyb3VwfG9wdGlvbnxvdXRwdXR8cHxwYXJhbXxwcmV8cHJvZ3Jlc3N8cXxycHxydHxydWJ5fHNhbXB8c2NyaXB0fHNlY3Rpb258c2VsZWN0fHNtYWxsfHNwYW58c3RyaWtlfHN0cm9uZ3xzdHlsZXxzdWJ8c3VwfHRhYmxlfHRib2R5fHRkfHRleHRhcmVhfHRmb290fHRofHRoZWFkfHRpbWV8dGl0bGV8dHJ8dHR8dWx8dmFyfHZpZGVvKVxcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzoodmlzaXRlZHx2YWxpZHxyb290fHJpZ2h0fHJlcXVpcmVkfHJlYWQtd3JpdGV8cmVhZC1vbmx5fG91dC1yYW5nZXxvcHRpb25hbHxvbmx5LW9mLXR5cGV8b25seS1jaGlsZHxudGgtb2YtdHlwZXxudGgtbGFzdC1vZi10eXBlfG50aC1sYXN0LWNoaWxkfG50aC1jaGlsZHxub3R8bGlua3xsZWZ0fGxhc3Qtb2YtdHlwZXxsYXN0LWNoaWxkfGxhbmd8aW52YWxpZHxpbmRldGVybWluYXRlfGluLXJhbmdlfGhvdmVyfGZvY3VzfGZpcnN0LW9mLXR5cGV8Zmlyc3QtbGluZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtY2hpbGR8Zmlyc3R8ZW5hYmxlZHxlbXB0eXxkaXNhYmxlZHxkZWZhdWx0fGNoZWNrZWR8YmVmb3JlfGFmdGVyfGFjdGl2ZSknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJzo6KGFmdGVyfGJlZm9yZXxjaG9pY2VzfGZpcnN0LWxldHRlcnxmaXJzdC1saW5lfHJlcGVhdC1pbmRleHxyZXBlYXQtaXRlbXxzZWxlY3Rpb258dmFsdWUpJ1xuICAgICAgfSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKHotaW5kZXh8d29yZC13cmFwfHdvcmQtc3BhY2luZ3x3b3JkLWJyZWFrfHdpZHRofHdpZG93c3x3aGl0ZS1zcGFjZXx2aXNpYmlsaXR5fHZlcnRpY2FsLWFsaWdufHVuaWNvZGUtYmlkaXx0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbnx0cmFuc2l0aW9uLXByb3BlcnR5fHRyYW5zaXRpb24tZHVyYXRpb258dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9ufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybXx0b3B8dGV4dC11bmRlcmxpbmUtcG9zaXRpb258dGV4dC10cmFuc2Zvcm18dGV4dC1zaGFkb3d8dGV4dC1yZW5kZXJpbmd8dGV4dC1vdmVyZmxvd3x0ZXh0LWluZGVudHx0ZXh0LWRlY29yYXRpb24tc3R5bGV8dGV4dC1kZWNvcmF0aW9uLWxpbmV8dGV4dC1kZWNvcmF0aW9uLWNvbG9yfHRleHQtZGVjb3JhdGlvbnx0ZXh0LWFsaWduLWxhc3R8dGV4dC1hbGlnbnx0YWItc2l6ZXx0YWJsZS1sYXlvdXR8cmlnaHR8cmVzaXplfHF1b3Rlc3xwb3NpdGlvbnxwb2ludGVyLWV2ZW50c3xwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGFnZS1icmVhay1pbnNpZGV8cGFnZS1icmVhay1iZWZvcmV8cGFnZS1icmVhay1hZnRlcnxwYWRkaW5nLXRvcHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctbGVmdHxwYWRkaW5nLWJvdHRvbXxwYWRkaW5nfG92ZXJmbG93LXl8b3ZlcmZsb3cteHxvdmVyZmxvdy13cmFwfG92ZXJmbG93fG91dGxpbmUtd2lkdGh8b3V0bGluZS1zdHlsZXxvdXRsaW5lLW9mZnNldHxvdXRsaW5lLWNvbG9yfG91dGxpbmV8b3JwaGFuc3xvcmRlcnxvcGFjaXR5fG9iamVjdC1wb3NpdGlvbnxvYmplY3QtZml0fG5vcm1hbHxub25lfG5hdi11cHxuYXYtcmlnaHR8bmF2LWxlZnR8bmF2LWluZGV4fG5hdi1kb3dufG1pbi13aWR0aHxtaW4taGVpZ2h0fG1heC13aWR0aHxtYXgtaGVpZ2h0fG1hc2t8bWFya3N8bWFyZ2luLXRvcHxtYXJnaW4tcmlnaHR8bWFyZ2luLWxlZnR8bWFyZ2luLWJvdHRvbXxtYXJnaW58bGlzdC1zdHlsZS10eXBlfGxpc3Qtc3R5bGUtcG9zaXRpb258bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlfGxpbmUtaGVpZ2h0fGxldHRlci1zcGFjaW5nfGxlZnR8anVzdGlmeS1jb250ZW50fGluaXRpYWx8aW5oZXJpdHxpbWUtbW9kZXxpbWFnZS1vcmllbnRhdGlvbnxpbWFnZS1yZXNvbHV0aW9ufGltYWdlLXJlbmRlcmluZ3xpY29ufGh5cGhlbnN8aGVpZ2h0fGZvbnQtd2VpZ2h0fGZvbnQtdmFyaWFudC1saWdhdHVyZXN8Zm9udC12YXJpYW50fGZvbnQtc3R5bGV8Zm9udC1zdHJldGNofGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zaXplfGZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGV8Zm9udC1rZXJuaW5nfGZvbnQtZmVhdHVyZS1zZXR0aW5nc3xmb250LWZhbWlseXxmb250fGZsb2F0fGZsZXgtd3JhcHxmbGV4LXNocmlua3xmbGV4LWdyb3d8ZmxleC1mbG93fGZsZXgtZGlyZWN0aW9ufGZsZXgtYmFzaXN8ZmxleHxmaWx0ZXJ8ZW1wdHktY2VsbHN8ZGlzcGxheXxkaXJlY3Rpb258Y3Vyc29yfGNvdW50ZXItcmVzZXR8Y291bnRlci1pbmNyZW1lbnR8Y29udGVudHxjb2x1bW4td2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGV8Y29sdW1uLWdhcHxjb2x1bW4tZmlsbHxjb2x1bW4tY291bnR8Y29sdW1uc3xjb2xvcnxjbGlwLXBhdGh8Y2xpcHxjbGVhcnxjYXB0aW9uLXNpZGV8YnJlYWstaW5zaWRlfGJyZWFrLWJlZm9yZXxicmVhay1hZnRlcnxib3gtc2l6aW5nfGJveC1zaGFkb3d8Ym94LWRlY29yYXRpb24tYnJlYWt8Ym90dG9tfGJvcmRlci13aWR0aHxib3JkZXItdG9wLXdpZHRofGJvcmRlci10b3Atc3R5bGV8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1c3xib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3B8Ym9yZGVyLXN0eWxlfGJvcmRlci1zcGFjaW5nfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItcmlnaHQtc3R5bGV8Ym9yZGVyLXJpZ2h0LWNvbG9yfGJvcmRlci1yaWdodHxib3JkZXItcmFkaXVzfGJvcmRlci1sZWZ0LXdpZHRofGJvcmRlci1sZWZ0LXN0eWxlfGJvcmRlci1sZWZ0LWNvbG9yfGJvcmRlci1sZWZ0fGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1vdXRzZXR8Ym9yZGVyLWltYWdlfGJvcmRlci1jb2xvcnxib3JkZXItY29sbGFwc2V8Ym9yZGVyLWJvdHRvbS13aWR0aHxib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzfGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1jb2xvcnxib3JkZXItYm90dG9tfGJvcmRlcnxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZC1yZXBlYXR8YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLWltYWdlfGJhY2tncm91bmQtY29sb3J8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJsZW5kLW1vZGV8YmFja2dyb3VuZHxiYWNrZmFjZS12aXNpYmlsaXR5fGF1dG98YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbnxhbmltYXRpb24tcGxheS1zdGF0ZXxhbmltYXRpb24tbmFtZXxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1maWxsLW1vZGV8YW5pbWF0aW9uLWR1cmF0aW9ufGFuaW1hdGlvbi1kaXJlY3Rpb258YW5pbWF0aW9uLWRlbGF5fGFuaW1hdGlvbnxhbGlnbi1zZWxmfGFsaWduLWl0ZW1zfGFsaWduLWNvbnRlbnQpXFxcXGInLFxuICAgICAgICBpbGxlZ2FsOiAnW15cXFxcc10nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKHdoaXRlc3BhY2V8d2FpdHx3LXJlc2l6ZXx2aXNpYmxlfHZlcnRpY2FsLXRleHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dXBwZXJjYXNlfHVwcGVyLXJvbWFufHVwcGVyLWFscGhhfHVuZGVybGluZXx0cmFuc3BhcmVudHx0b3B8dGhpbnx0aGlja3x0ZXh0fHRleHQtdG9wfHRleHQtYm90dG9tfHRiLXJsfHRhYmxlLWhlYWRlci1ncm91cHx0YWJsZS1mb290ZXItZ3JvdXB8c3ctcmVzaXplfHN1cGVyfHN0cmljdHxzdGF0aWN8c3F1YXJlfHNvbGlkfHNtYWxsLWNhcHN8c2VwYXJhdGV8c2UtcmVzaXplfHNjcm9sbHxzLXJlc2l6ZXxydGx8cm93LXJlc2l6ZXxyaWRnZXxyaWdodHxyZXBlYXR8cmVwZWF0LXl8cmVwZWF0LXh8cmVsYXRpdmV8cHJvZ3Jlc3N8cG9pbnRlcnxvdmVybGluZXxvdXRzaWRlfG91dHNldHxvYmxpcXVlfG5vd3JhcHxub3QtYWxsb3dlZHxub3JtYWx8bm9uZXxudy1yZXNpemV8bm8tcmVwZWF0fG5vLWRyb3B8bmV3c3BhcGVyfG5lLXJlc2l6ZXxuLXJlc2l6ZXxtb3ZlfG1pZGRsZXxtZWRpdW18bHRyfGxyLXRifGxvd2VyY2FzZXxsb3dlci1yb21hbnxsb3dlci1hbHBoYXxsb29zZXxsaXN0LWl0ZW18bGluZXxsaW5lLXRocm91Z2h8bGluZS1lZGdlfGxpZ2h0ZXJ8bGVmdHxrZWVwLWFsbHxqdXN0aWZ5fGl0YWxpY3xpbnRlci13b3JkfGludGVyLWlkZW9ncmFwaHxpbnNpZGV8aW5zZXR8aW5saW5lfGlubGluZS1ibG9ja3xpbmhlcml0fGluYWN0aXZlfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLWFscGhhfGhvcml6b250YWx8aGlkZGVufGhlbHB8aGFuZHxncm9vdmV8Zml4ZWR8ZWxsaXBzaXN8ZS1yZXNpemV8ZG91YmxlfGRvdHRlZHxkaXN0cmlidXRlfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzY3xkaXNhYmxlZHxkZWZhdWx0fGRlY2ltYWx8ZGFzaGVkfGNyb3NzaGFpcnxjb2xsYXBzZXxjb2wtcmVzaXplfGNpcmNsZXxjaGFyfGNlbnRlcnxjYXBpdGFsaXplfGJyZWFrLXdvcmR8YnJlYWstYWxsfGJvdHRvbXxib3RofGJvbGRlcnxib2xkfGJsb2NrfGJpZGktb3ZlcnJpZGV8YmVsb3d8YmFzZWxpbmV8YXV0b3xhbHdheXN8YWxsLXNjcm9sbHxhYnNvbHV0ZXx0YWJsZXx0YWJsZS1jZWxsKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc6JywgZW5kOiAnOycsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgSEVYQ09MT1IsXG4gICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQCcsIGVuZDogJ1t7O10nLFxuICAgICAgICBrZXl3b3JkczogJ21peGluIGluY2x1ZGUgZXh0ZW5kIGZvciBpZiBlbHNlIGVhY2ggd2hpbGUgY2hhcnNldCBpbXBvcnQgZGVidWcgbWVkaWEgcGFnZSBjb250ZW50IGZvbnQtZmFjZSBuYW1lc3BhY2Ugd2FybicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgSEVYQ09MT1IsXG4gICAgICAgICAgaGxqcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcc1tBLVphLXowLTlfLi1dKycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnY29uc29sZSddLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxcc3swLDN9Wy9cXFxcd1xcXFxkXFxcXFtcXFxcXSgpQC1dKls+JSQjXScsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogJyQnLCBzdWJMYW5ndWFnZTogJ2Jhc2gnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBzbWFsaV9pbnN0cl9sb3dfcHJpbyA9IFsnYWRkJywgJ2FuZCcsICdjbXAnLCAnY21wZycsICdjbXBsJywgJ2NvbnN0JywgJ2RpdicsICdkb3VibGUnLCAnZmxvYXQnLCAnZ290bycsICdpZicsICdpbnQnLCAnbG9uZycsICdtb3ZlJywgJ211bCcsICduZWcnLCAnbmV3JywgJ25vcCcsICdub3QnLCAnb3InLCAncmVtJywgJ3JldHVybicsICdzaGwnLCAnc2hyJywgJ3NwdXQnLCAnc3ViJywgJ3Rocm93JywgJ3VzaHInLCAneG9yJ107XG4gIHZhciBzbWFsaV9pbnN0cl9oaWdoX3ByaW8gPSBbJ2FnZXQnLCAnYXB1dCcsICdhcnJheScsICdjaGVjaycsICdleGVjdXRlJywgJ2ZpbGwnLCAnZmlsbGVkJywgJ2dvdG8vMTYnLCAnZ290by8zMicsICdpZ2V0JywgJ2luc3RhbmNlJywgJ2ludm9rZScsICdpcHV0JywgJ21vbml0b3InLCAncGFja2VkJywgJ3NnZXQnLCAnc3BhcnNlJ107XG4gIHZhciBzbWFsaV9rZXl3b3JkcyA9IFsndHJhbnNpZW50JywgJ2NvbnN0cnVjdG9yJywgJ2Fic3RyYWN0JywgJ2ZpbmFsJywgJ3N5bnRoZXRpYycsICdwdWJsaWMnLCAncHJpdmF0ZScsICdwcm90ZWN0ZWQnLCAnc3RhdGljJywgJ2JyaWRnZScsICdzeXN0ZW0nXTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3NtYWxpJ10sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsIGVuZDogJ1wiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnIycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICdcXFxccypcXFxcLmVuZFxcXFxzW2EtekEtWjAtOV0qJ30sXG4gICAgICAgICAge2JlZ2luOiAnXlsgXSpcXFxcLlthLXpBLVpdKicsIHJlbGV2YW5jZTogMH0sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXHM6W2EtekEtWl8wLTldKicsIHJlbGV2YW5jZTogMH0sXG4gICAgICAgICAge2JlZ2luOiAnXFxcXHMoJyArIHNtYWxpX2tleXdvcmRzLmpvaW4oJ3wnKSArICcpJ31cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICB2YXJpYW50cyA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfbG93X3ByaW8uam9pbignfCcpKycpXFxcXHMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxzKCcrc21hbGlfaW5zdHJfbG93X3ByaW8uam9pbignfCcpKycpKChcXFxcLXwvKVthLXpBLVowLTldKykrXFxcXHMnLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxccygnK3NtYWxpX2luc3RyX2hpZ2hfcHJpby5qb2luKCd8JykrJykoKFxcXFwtfC8pW2EtekEtWjAtOV0rKSpcXFxccycsXG4gICAgICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ0xbXlxcKDs6XFxuXSo7JyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1t2cF1bMC05XSsnLFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBWQVJfSURFTlRfUkUgPSAnW2Etel1bYS16QS1aMC05X10qJztcbiAgdmFyIENIQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFwkLnsxfSdcbiAgfTtcbiAgdmFyIFNZTUJPTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnIycgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3N0J10sXG4gICAga2V5d29yZHM6ICdzZWxmIHN1cGVyIG5pbCB0cnVlIGZhbHNlIHRoaXNDb250ZXh0JywgLy8gb25seSA2XG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnXCInLCAnXCInKSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtBLVphLXowLTlfXSonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBWQVJfSURFTlRfUkUgKyAnOicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIFNZTUJPTCxcbiAgICAgIENIQVIsXG4gICAgICB7XG4gICAgICAgIC8vIFRoaXMgbG9va3MgbW9yZSBjb21wbGljYXRlZCB0aGFuIG5lZWRlZCB0byBhdm9pZCBjb21iaW5hdG9yaWFsXG4gICAgICAgIC8vIGV4cGxvc2lvbiB1bmRlciBWOC4gSXQgZWZmZWN0aXZlbHkgbWVhbnMgYHwgdmFyMSB2YXIyIC4uLiB8YCB3aXRoXG4gICAgICAgIC8vIHdoaXRlc3BhY2UgYWRqYWNlbnQgdG8gYHxgIGJlaW5nIG9wdGlvbmFsLlxuICAgICAgICBiZWdpbjogJ1xcXFx8WyBdKicgKyBWQVJfSURFTlRfUkUgKyAnKFsgXSsnICsgVkFSX0lERU5UX1JFICsgJykqWyBdKlxcXFx8JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsIGVuZDogL1xcfC8sXG4gICAgICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgICAgICBjb250YWluczogW3tiZWdpbjogJyhcXFxcfFsgXSopPycgKyBWQVJfSURFTlRfUkV9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcI1xcXFwoJywgZW5kOiAnXFxcXCknLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBDSEFSLFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBTWU1CT0xcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydtbCddLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvKiBhY2NvcmRpbmcgdG8gRGVmaW5pdGlvbiBvZiBTdGFuZGFyZCBNTCA5NyAgKi9cbiAgICAgICAgJ2Fic3R5cGUgYW5kIGFuZGFsc28gYXMgY2FzZSBkYXRhdHlwZSBkbyBlbHNlIGVuZCBlcXR5cGUgJyArXG4gICAgICAgICdleGNlcHRpb24gZm4gZnVuIGZ1bmN0b3IgaGFuZGxlIGlmIGluIGluY2x1ZGUgaW5maXggaW5maXhyICcgK1xuICAgICAgICAnbGV0IGxvY2FsIG5vbmZpeCBvZiBvcCBvcGVuIG9yZWxzZSByYWlzZSByZWMgc2hhcmluZyBzaWcgJyArXG4gICAgICAgICdzaWduYXR1cmUgc3RydWN0IHN0cnVjdHVyZSB0aGVuIHR5cGUgdmFsIHdpdGggd2l0aHR5cGUgd2hlcmUgd2hpbGUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8qIGJ1aWx0LWluIHR5cGVzIGFjY29yZGluZyB0byBiYXNpcyBsaWJyYXJ5ICovXG4gICAgICAgICdhcnJheSBib29sIGNoYXIgZXhuIGludCBsaXN0IG9wdGlvbiBvcmRlciByZWFsIHJlZiBzdHJpbmcgc3Vic3RyaW5nIHZlY3RvciB1bml0IHdvcmQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgTk9ORSBTT01FIExFU1MgRVFVQUwgR1JFQVRFUiBuaWwnXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvXFwvXFwvfD4+LyxcbiAgICBsZXhlbWVzOiAnW2Etel9dXFxcXHcqIT8nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgICAgICBiZWdpbjogL1xcWyhcXHxcXHwpP1xcXXxcXChcXCkvLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXFxcKFxcXFwqJyxcbiAgICAgICAgJ1xcXFwqXFxcXCknLFxuICAgICAgICB7XG4gICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7IC8qIHR5cGUgdmFyaWFibGUgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdcXCdbQS1aYS16X10oPyFcXCcpW1xcXFx3XFwnXSonXG4gICAgICAgIC8qIHRoZSBncmFtbWFyIGlzIGFtYmlndW91cyBvbiBob3cgJ2EnYiBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYnV0IG5vdCB0aGUgY29tcGlsZXIgKi9cbiAgICAgIH0sXG4gICAgICB7IC8qIHBvbHltb3JwaGljIHZhcmlhbnQgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnYFtBLVpdW1xcXFx3XFwnXSonXG4gICAgICB9LFxuICAgICAgeyAvKiBtb2R1bGUgb3IgY29uc3RydWN0b3IgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcJ10qJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvKiBkb24ndCBjb2xvciBpZGVudGlmaWVycywgYnV0IHNhZmVseSBjYXRjaCBhbGwgaWRlbnRpZmllcnMgd2l0aCAnKi9cbiAgICAgICAgYmVnaW46ICdbYS16X11cXFxcdypcXCdbXFxcXHdcXCddKidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7Y2xhc3NOYW1lOiAnc3RyaW5nJywgcmVsZXZhbmNlOiAwfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgJ1xcXFxiKDBbeFhdW2EtZkEtRjAtOV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnMFtvT11bMC03X10rW0xsbl0/fCcgK1xuICAgICAgICAgICcwW2JCXVswMV9dK1tMbG5dP3wnICtcbiAgICAgICAgICAnWzAtOV1bMC05X10qKFtMbG5dfChcXFxcLlswLTlfXSopPyhbZUVdWy0rXT9bMC05X10rKT8pPyknLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvWy09XT4vIC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gSW4gU1FGLCBhIHZhcmlhYmxlIHN0YXJ0IHdpdGggX1xuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFxiXytbYS16QS1aX11cXHcqL1xuICB9O1xuXG4gIC8vIEluIFNRRiwgYSBmdW5jdGlvbiBzaG91bGQgZml0IG15VGFnX2ZuY19teUZ1bmN0aW9uIHBhdHRlcm5cbiAgLy8gaHR0cHM6Ly9jb21tdW5pdHkuYmlzdHVkaW8uY29tL3dpa2kvRnVuY3Rpb25zX0xpYnJhcnlfKEFybWFfMykjQWRkaW5nX2FfRnVuY3Rpb25cbiAgdmFyIEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogL1thLXpBLVpdW2EtekEtWjAtOV0rX2ZuY19cXHcqL1xuICB9O1xuXG4gIC8vIEluIFNRRiBzdHJpbmdzLCBxdW90ZXMgbWF0Y2hpbmcgdGhlIHN0YXJ0IGFyZSBlc2NhcGVkIGJ5IGFkZGluZyBhIGNvbnNlY3V0aXZlLlxuICAvLyBFeGFtcGxlIG9mIHNpbmdsZSBlc2NhcGVkIHF1b3RlczogXCIgXCJcIiBcIiBhbmQgICcgJycgJy5cbiAgdmFyIFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInLFxuICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1wiXCInLCByZWxldmFuY2U6IDB9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBjb250YWluczogW3tiZWdpbjogJ1xcJ1xcJycsIHJlbGV2YW5jZTogMH1dXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIC8vIGxpc3Qgb2Yga2V5d29yZHMgZnJvbTpcbiAgLy8gaHR0cHM6Ly9jb21tdW5pdHkuYmlzdHVkaW8uY29tL3dpa2kvUHJlUHJvY2Vzc29yX0NvbW1hbmRzXG4gIHZhciBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC8jXFxzKlthLXpdK1xcYi8sIGVuZDogLyQvLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAnbWV0YS1rZXl3b3JkJzpcbiAgICAgICAgJ2RlZmluZSB1bmRlZiBpZmRlZiBpZm5kZWYgZWxzZSBlbmRpZiBpbmNsdWRlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFxcXFxuLywgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHtjbGFzc05hbWU6ICdtZXRhLXN0cmluZyd9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS1zdHJpbmcnLFxuICAgICAgICBiZWdpbjogLzxbXlxcbj5dKj4vLCBlbmQ6IC8kLyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgIH0sXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydzcWYnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnY2FzZSBjYXRjaCBkZWZhdWx0IGRvIGVsc2UgZXhpdCBleGl0V2l0aCBmb3IgZm9yRWFjaCBmcm9tIGlmICcgK1xuICAgICAgICAncHJpdmF0ZSBzd2l0Y2ggdGhlbiB0aHJvdyB0byB0cnkgd2FpdFVudGlsIHdoaWxlIHdpdGgnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhYnMgYWNjVGltZSBhY29zIGFjdGlvbiBhY3Rpb25JRHMgYWN0aW9uS2V5cyBhY3Rpb25LZXlzSW1hZ2VzIGFjdGlvbktleXNOYW1lcyAnICtcbiAgICAgICAgJ2FjdGlvbktleXNOYW1lc0FycmF5IGFjdGlvbk5hbWUgYWN0aW9uUGFyYW1zIGFjdGl2YXRlQWRkb25zIGFjdGl2YXRlZEFkZG9ucyBhY3RpdmF0ZUtleSAnICtcbiAgICAgICAgJ2FkZDNERU5Db25uZWN0aW9uIGFkZDNERU5FdmVudEhhbmRsZXIgYWRkM0RFTkxheWVyIGFkZEFjdGlvbiBhZGRCYWNrcGFjayBhZGRCYWNrcGFja0NhcmdvICcgK1xuICAgICAgICAnYWRkQmFja3BhY2tDYXJnb0dsb2JhbCBhZGRCYWNrcGFja0dsb2JhbCBhZGRDYW1TaGFrZSBhZGRDdXJhdG9yQWRkb25zIGFkZEN1cmF0b3JDYW1lcmFBcmVhICcgK1xuICAgICAgICAnYWRkQ3VyYXRvckVkaXRhYmxlT2JqZWN0cyBhZGRDdXJhdG9yRWRpdGluZ0FyZWEgYWRkQ3VyYXRvclBvaW50cyBhZGRFZGl0b3JPYmplY3QgYWRkRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnYWRkRm9yY2UgYWRkR29nZ2xlcyBhZGRHcm91cEljb24gYWRkSGFuZGd1bkl0ZW0gYWRkSGVhZGdlYXIgYWRkSXRlbSBhZGRJdGVtQ2FyZ28gJyArXG4gICAgICAgICdhZGRJdGVtQ2FyZ29HbG9iYWwgYWRkSXRlbVBvb2wgYWRkSXRlbVRvQmFja3BhY2sgYWRkSXRlbVRvVW5pZm9ybSBhZGRJdGVtVG9WZXN0IGFkZExpdmVTdGF0cyAnICtcbiAgICAgICAgJ2FkZE1hZ2F6aW5lIGFkZE1hZ2F6aW5lQW1tb0NhcmdvIGFkZE1hZ2F6aW5lQ2FyZ28gYWRkTWFnYXppbmVDYXJnb0dsb2JhbCBhZGRNYWdhemluZUdsb2JhbCAnICtcbiAgICAgICAgJ2FkZE1hZ2F6aW5lUG9vbCBhZGRNYWdhemluZXMgYWRkTWFnYXppbmVUdXJyZXQgYWRkTWVudSBhZGRNZW51SXRlbSBhZGRNaXNzaW9uRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnYWRkTVBFdmVudEhhbmRsZXIgYWRkTXVzaWNFdmVudEhhbmRsZXIgYWRkT3duZWRNaW5lIGFkZFBsYXllclNjb3JlcyBhZGRQcmltYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ2FkZFB1YmxpY1ZhcmlhYmxlRXZlbnRIYW5kbGVyIGFkZFJhdGluZyBhZGRSZXNvdXJjZXMgYWRkU2NvcmUgYWRkU2NvcmVTaWRlIGFkZFNlY29uZGFyeVdlYXBvbkl0ZW0gJyArXG4gICAgICAgICdhZGRTd2l0Y2hhYmxlVW5pdCBhZGRUZWFtTWVtYmVyIGFkZFRvUmVtYWluc0NvbGxlY3RvciBhZGRUb3JxdWUgYWRkVW5pZm9ybSBhZGRWZWhpY2xlIGFkZFZlc3QgJyArXG4gICAgICAgICdhZGRXYXlwb2ludCBhZGRXZWFwb24gYWRkV2VhcG9uQ2FyZ28gYWRkV2VhcG9uQ2FyZ29HbG9iYWwgYWRkV2VhcG9uR2xvYmFsIGFkZFdlYXBvbkl0ZW0gJyArXG4gICAgICAgICdhZGRXZWFwb25Qb29sIGFkZFdlYXBvblR1cnJldCBhZG1pbiBhZ2VudCBhZ2VudHMgQUdMVG9BU0wgYWltZWRBdFRhcmdldCBhaW1Qb3MgYWlyRGVuc2l0eVJURCAnICtcbiAgICAgICAgJ2FpcnBsYW5lVGhyb3R0bGUgYWlycG9ydFNpZGUgQUlTRmluaXNoSGVhbCBhbGl2ZSBhbGwzREVORW50aXRpZXMgYWxsQWlycG9ydHMgYWxsQ29udHJvbHMgJyArXG4gICAgICAgICdhbGxDdXJhdG9ycyBhbGxDdXRMYXllcnMgYWxsRGVhZCBhbGxEZWFkTWVuIGFsbERpc3BsYXlzIGFsbEdyb3VwcyBhbGxNYXBNYXJrZXJzIGFsbE1pbmVzICcgK1xuICAgICAgICAnYWxsTWlzc2lvbk9iamVjdHMgYWxsb3czRE1vZGUgYWxsb3dDcmV3SW5JbW1vYmlsZSBhbGxvd0N1cmF0b3JMb2dpY0lnbm9yZUFyZWFzIGFsbG93RGFtYWdlICcgK1xuICAgICAgICAnYWxsb3dEYW1tYWdlIGFsbG93RmlsZU9wZXJhdGlvbnMgYWxsb3dGbGVlaW5nIGFsbG93R2V0SW4gYWxsb3dTcHJpbnQgYWxsUGxheWVycyBhbGxTaW1wbGVPYmplY3RzICcgK1xuICAgICAgICAnYWxsU2l0ZXMgYWxsVHVycmV0cyBhbGxVbml0cyBhbGxVbml0c1VBViBhbGxWYXJpYWJsZXMgYW1tbyBhbW1vT25QeWxvbiBhbmQgYW5pbWF0ZSBhbmltYXRlQmF5ICcgK1xuICAgICAgICAnYW5pbWF0ZURvb3IgYW5pbWF0ZVB5bG9uIGFuaW1hdGVTb3VyY2UgYW5pbWF0aW9uTmFtZXMgYW5pbWF0aW9uUGhhc2UgYW5pbWF0aW9uU291cmNlUGhhc2UgJyArXG4gICAgICAgICdhbmltYXRpb25TdGF0ZSBhcHBlbmQgYXBwbHkgYXJtb3J5UG9pbnRzIGFycmF5SW50ZXJzZWN0IGFzaW4gQVNMVG9BR0wgQVNMVG9BVEwgYXNzZXJ0ICcgK1xuICAgICAgICAnYXNzaWduQXNDYXJnbyBhc3NpZ25Bc0NhcmdvSW5kZXggYXNzaWduQXNDb21tYW5kZXIgYXNzaWduQXNEcml2ZXIgYXNzaWduQXNHdW5uZXIgYXNzaWduQXNUdXJyZXQgJyArXG4gICAgICAgICdhc3NpZ25DdXJhdG9yIGFzc2lnbmVkQ2FyZ28gYXNzaWduZWRDb21tYW5kZXIgYXNzaWduZWREcml2ZXIgYXNzaWduZWRHdW5uZXIgYXNzaWduZWRJdGVtcyAnICtcbiAgICAgICAgJ2Fzc2lnbmVkVGFyZ2V0IGFzc2lnbmVkVGVhbSBhc3NpZ25lZFZlaGljbGUgYXNzaWduZWRWZWhpY2xlUm9sZSBhc3NpZ25JdGVtIGFzc2lnblRlYW0gJyArXG4gICAgICAgICdhc3NpZ25Ub0FpcnBvcnQgYXRhbiBhdGFuMiBhdGcgQVRMVG9BU0wgYXR0YWNoZWRPYmplY3QgYXR0YWNoZWRPYmplY3RzIGF0dGFjaGVkVG8gYXR0YWNoT2JqZWN0ICcgK1xuICAgICAgICAnYXR0YWNoVG8gYXR0YWNrRW5hYmxlZCBiYWNrcGFjayBiYWNrcGFja0NhcmdvIGJhY2twYWNrQ29udGFpbmVyIGJhY2twYWNrSXRlbXMgYmFja3BhY2tNYWdhemluZXMgJyArXG4gICAgICAgICdiYWNrcGFja1NwYWNlRm9yIGJlaGF2aW91ciBiZW5jaG1hcmsgYmlub2N1bGFyIGJvdW5kaW5nQm94IGJvdW5kaW5nQm94UmVhbCBib3VuZGluZ0NlbnRlciAnICtcbiAgICAgICAgJ2JyZWFrT3V0IGJyZWFrVG8gYnJpZWZpbmdOYW1lIGJ1aWxkaW5nRXhpdCBidWlsZGluZ1BvcyBidXR0b25BY3Rpb24gYnV0dG9uU2V0QWN0aW9uIGNhZGV0TW9kZSAnICtcbiAgICAgICAgJ2NhbGwgY2FsbEV4dGVuc2lvbiBjYW1Db21tYW5kIGNhbUNvbW1pdCBjYW1Db21taXRQcmVwYXJlZCBjYW1Db21taXR0ZWQgY2FtQ29uc3R1Y3Rpb25TZXRQYXJhbXMgJyArXG4gICAgICAgICdjYW1DcmVhdGUgY2FtRGVzdHJveSBjYW1lcmFFZmZlY3QgY2FtZXJhRWZmZWN0RW5hYmxlSFVEIGNhbWVyYUludGVyZXN0IGNhbWVyYU9uIGNhbWVyYVZpZXcgJyArXG4gICAgICAgICdjYW1wYWlnbkNvbmZpZ0ZpbGUgY2FtUHJlbG9hZCBjYW1QcmVsb2FkZWQgY2FtUHJlcGFyZUJhbmsgY2FtUHJlcGFyZURpciBjYW1QcmVwYXJlRGl2ZSAnICtcbiAgICAgICAgJ2NhbVByZXBhcmVGb2N1cyBjYW1QcmVwYXJlRm92IGNhbVByZXBhcmVGb3ZSYW5nZSBjYW1QcmVwYXJlUG9zIGNhbVByZXBhcmVSZWxQb3MgY2FtUHJlcGFyZVRhcmdldCAnICtcbiAgICAgICAgJ2NhbVNldEJhbmsgY2FtU2V0RGlyIGNhbVNldERpdmUgY2FtU2V0Rm9jdXMgY2FtU2V0Rm92IGNhbVNldEZvdlJhbmdlIGNhbVNldFBvcyBjYW1TZXRSZWxQb3MgJyArXG4gICAgICAgICdjYW1TZXRUYXJnZXQgY2FtVGFyZ2V0IGNhbVVzZU5WRyBjYW5BZGQgY2FuQWRkSXRlbVRvQmFja3BhY2sgY2FuQWRkSXRlbVRvVW5pZm9ybSBjYW5BZGRJdGVtVG9WZXN0ICcgK1xuICAgICAgICAnY2FuY2VsU2ltcGxlVGFza0Rlc3RpbmF0aW9uIGNhbkZpcmUgY2FuTW92ZSBjYW5TbGluZ0xvYWQgY2FuU3RhbmQgY2FuU3VzcGVuZCAnICtcbiAgICAgICAgJ2NhblRyaWdnZXJEeW5hbWljU2ltdWxhdGlvbiBjYW5VbmxvYWRJbkNvbWJhdCBjYW5WZWhpY2xlQ2FyZ28gY2FwdGl2ZSBjYXB0aXZlTnVtIGNiQ2hlY2tlZCAnICtcbiAgICAgICAgJ2NiU2V0Q2hlY2tlZCBjZWlsIGNoYW5uZWxFbmFibGVkIGNoZWF0c0VuYWJsZWQgY2hlY2tBSUZlYXR1cmUgY2hlY2tWaXNpYmlsaXR5IGNsYXNzTmFtZSAnICtcbiAgICAgICAgJ2NsZWFyQWxsSXRlbXNGcm9tQmFja3BhY2sgY2xlYXJCYWNrcGFja0NhcmdvIGNsZWFyQmFja3BhY2tDYXJnb0dsb2JhbCBjbGVhckdyb3VwSWNvbnMgJyArXG4gICAgICAgICdjbGVhckl0ZW1DYXJnbyBjbGVhckl0ZW1DYXJnb0dsb2JhbCBjbGVhckl0ZW1Qb29sIGNsZWFyTWFnYXppbmVDYXJnbyBjbGVhck1hZ2F6aW5lQ2FyZ29HbG9iYWwgJyArXG4gICAgICAgICdjbGVhck1hZ2F6aW5lUG9vbCBjbGVhck92ZXJsYXkgY2xlYXJSYWRpbyBjbGVhcldlYXBvbkNhcmdvIGNsZWFyV2VhcG9uQ2FyZ29HbG9iYWwgY2xlYXJXZWFwb25Qb29sICcgK1xuICAgICAgICAnY2xpZW50T3duZXIgY2xvc2VEaWFsb2cgY2xvc2VEaXNwbGF5IGNsb3NlT3ZlcmxheSBjb2xsYXBzZU9iamVjdFRyZWUgY29sbGVjdDNERU5IaXN0b3J5ICcgK1xuICAgICAgICAnY29sbGVjdGl2ZVJURCBjb21iYXRNb2RlIGNvbW1hbmRBcnRpbGxlcnlGaXJlIGNvbW1hbmRDaGF0IGNvbW1hbmRlciBjb21tYW5kRmlyZSBjb21tYW5kRm9sbG93ICcgK1xuICAgICAgICAnY29tbWFuZEZTTSBjb21tYW5kR2V0T3V0IGNvbW1hbmRpbmdNZW51IGNvbW1hbmRNb3ZlIGNvbW1hbmRSYWRpbyBjb21tYW5kU3RvcCAnICtcbiAgICAgICAgJ2NvbW1hbmRTdXBwcmVzc2l2ZUZpcmUgY29tbWFuZFRhcmdldCBjb21tYW5kV2F0Y2ggY29tbWVudCBjb21taXRPdmVybGF5IGNvbXBpbGUgY29tcGlsZUZpbmFsICcgK1xuICAgICAgICAnY29tcGxldGVkRlNNIGNvbXBvc2VUZXh0IGNvbmZpZ0NsYXNzZXMgY29uZmlnRmlsZSBjb25maWdIaWVyYXJjaHkgY29uZmlnTmFtZSBjb25maWdQcm9wZXJ0aWVzICcgK1xuICAgICAgICAnY29uZmlnU291cmNlQWRkb25MaXN0IGNvbmZpZ1NvdXJjZU1vZCBjb25maWdTb3VyY2VNb2RMaXN0IGNvbmZpcm1TZW5zb3JUYXJnZXQgJyArXG4gICAgICAgICdjb25uZWN0VGVybWluYWxUb1VBViBjb250cm9sc0dyb3VwQ3RybCBjb3B5RnJvbUNsaXBib2FyZCBjb3B5VG9DbGlwYm9hcmQgY29weVdheXBvaW50cyBjb3MgY291bnQgJyArXG4gICAgICAgICdjb3VudEVuZW15IGNvdW50RnJpZW5kbHkgY291bnRTaWRlIGNvdW50VHlwZSBjb3VudFVua25vd24gY3JlYXRlM0RFTkNvbXBvc2l0aW9uIGNyZWF0ZTNERU5FbnRpdHkgJyArXG4gICAgICAgICdjcmVhdGVBZ2VudCBjcmVhdGVDZW50ZXIgY3JlYXRlRGlhbG9nIGNyZWF0ZURpYXJ5TGluayBjcmVhdGVEaWFyeVJlY29yZCBjcmVhdGVEaWFyeVN1YmplY3QgJyArXG4gICAgICAgICdjcmVhdGVEaXNwbGF5IGNyZWF0ZUdlYXJEaWFsb2cgY3JlYXRlR3JvdXAgY3JlYXRlR3VhcmRlZFBvaW50IGNyZWF0ZUxvY2F0aW9uIGNyZWF0ZU1hcmtlciAnICtcbiAgICAgICAgJ2NyZWF0ZU1hcmtlckxvY2FsIGNyZWF0ZU1lbnUgY3JlYXRlTWluZSBjcmVhdGVNaXNzaW9uRGlzcGxheSBjcmVhdGVNUENhbXBhaWduRGlzcGxheSAnICtcbiAgICAgICAgJ2NyZWF0ZVNpbXBsZU9iamVjdCBjcmVhdGVTaW1wbGVUYXNrIGNyZWF0ZVNpdGUgY3JlYXRlU291bmRTb3VyY2UgY3JlYXRlVGFzayBjcmVhdGVUZWFtICcgK1xuICAgICAgICAnY3JlYXRlVHJpZ2dlciBjcmVhdGVVbml0IGNyZWF0ZVZlaGljbGUgY3JlYXRlVmVoaWNsZUNyZXcgY3JlYXRlVmVoaWNsZUxvY2FsIGNyZXcgY3RBZGRIZWFkZXIgJyArXG4gICAgICAgICdjdEFkZFJvdyBjdENsZWFyIGN0Q3VyU2VsIGN0RGF0YSBjdEZpbmRIZWFkZXJSb3dzIGN0RmluZFJvd0hlYWRlciBjdEhlYWRlckNvbnRyb2xzIGN0SGVhZGVyQ291bnQgJyArXG4gICAgICAgICdjdFJlbW92ZUhlYWRlcnMgY3RSZW1vdmVSb3dzIGN0cmxBY3RpdmF0ZSBjdHJsQWRkRXZlbnRIYW5kbGVyIGN0cmxBbmdsZSBjdHJsQXV0b1Njcm9sbERlbGF5ICcgK1xuICAgICAgICAnY3RybEF1dG9TY3JvbGxSZXdpbmQgY3RybEF1dG9TY3JvbGxTcGVlZCBjdHJsQ2hlY2tlZCBjdHJsQ2xhc3NOYW1lIGN0cmxDb21taXQgY3RybENvbW1pdHRlZCAnICtcbiAgICAgICAgJ2N0cmxDcmVhdGUgY3RybERlbGV0ZSBjdHJsRW5hYmxlIGN0cmxFbmFibGVkIGN0cmxGYWRlIGN0cmxIVE1MTG9hZGVkIGN0cmxJREMgY3RybElERCAnICtcbiAgICAgICAgJ2N0cmxNYXBBbmltQWRkIGN0cmxNYXBBbmltQ2xlYXIgY3RybE1hcEFuaW1Db21taXQgY3RybE1hcEFuaW1Eb25lIGN0cmxNYXBDdXJzb3IgY3RybE1hcE1vdXNlT3ZlciAnICtcbiAgICAgICAgJ2N0cmxNYXBTY2FsZSBjdHJsTWFwU2NyZWVuVG9Xb3JsZCBjdHJsTWFwV29ybGRUb1NjcmVlbiBjdHJsTW9kZWwgY3RybE1vZGVsRGlyQW5kVXAgY3RybE1vZGVsU2NhbGUgJyArXG4gICAgICAgICdjdHJsUGFyZW50IGN0cmxQYXJlbnRDb250cm9sc0dyb3VwIGN0cmxQb3NpdGlvbiBjdHJsUmVtb3ZlQWxsRXZlbnRIYW5kbGVycyBjdHJsUmVtb3ZlRXZlbnRIYW5kbGVyICcgK1xuICAgICAgICAnY3RybFNjYWxlIGN0cmxTZXRBY3RpdmVDb2xvciBjdHJsU2V0QW5nbGUgY3RybFNldEF1dG9TY3JvbGxEZWxheSBjdHJsU2V0QXV0b1Njcm9sbFJld2luZCAnICtcbiAgICAgICAgJ2N0cmxTZXRBdXRvU2Nyb2xsU3BlZWQgY3RybFNldEJhY2tncm91bmRDb2xvciBjdHJsU2V0Q2hlY2tlZCBjdHJsU2V0RXZlbnRIYW5kbGVyIGN0cmxTZXRGYWRlICcgK1xuICAgICAgICAnY3RybFNldEZvY3VzIGN0cmxTZXRGb250IGN0cmxTZXRGb250SDEgY3RybFNldEZvbnRIMUIgY3RybFNldEZvbnRIMiBjdHJsU2V0Rm9udEgyQiBjdHJsU2V0Rm9udEgzICcgK1xuICAgICAgICAnY3RybFNldEZvbnRIM0IgY3RybFNldEZvbnRINCBjdHJsU2V0Rm9udEg0QiBjdHJsU2V0Rm9udEg1IGN0cmxTZXRGb250SDVCIGN0cmxTZXRGb250SDYgJyArXG4gICAgICAgICdjdHJsU2V0Rm9udEg2QiBjdHJsU2V0Rm9udEhlaWdodCBjdHJsU2V0Rm9udEhlaWdodEgxIGN0cmxTZXRGb250SGVpZ2h0SDIgY3RybFNldEZvbnRIZWlnaHRIMyAnICtcbiAgICAgICAgJ2N0cmxTZXRGb250SGVpZ2h0SDQgY3RybFNldEZvbnRIZWlnaHRINSBjdHJsU2V0Rm9udEhlaWdodEg2IGN0cmxTZXRGb250SGVpZ2h0U2Vjb25kYXJ5ICcgK1xuICAgICAgICAnY3RybFNldEZvbnRQIGN0cmxTZXRGb250UEIgY3RybFNldEZvbnRTZWNvbmRhcnkgY3RybFNldEZvcmVncm91bmRDb2xvciBjdHJsU2V0TW9kZWwgJyArXG4gICAgICAgICdjdHJsU2V0TW9kZWxEaXJBbmRVcCBjdHJsU2V0TW9kZWxTY2FsZSBjdHJsU2V0UGl4ZWxQcmVjaXNpb24gY3RybFNldFBvc2l0aW9uIGN0cmxTZXRTY2FsZSAnICtcbiAgICAgICAgJ2N0cmxTZXRTdHJ1Y3R1cmVkVGV4dCBjdHJsU2V0VGV4dCBjdHJsU2V0VGV4dENvbG9yIGN0cmxTZXRUb29sdGlwIGN0cmxTZXRUb29sdGlwQ29sb3JCb3ggJyArXG4gICAgICAgICdjdHJsU2V0VG9vbHRpcENvbG9yU2hhZGUgY3RybFNldFRvb2x0aXBDb2xvclRleHQgY3RybFNob3cgY3RybFNob3duIGN0cmxUZXh0IGN0cmxUZXh0SGVpZ2h0ICcgK1xuICAgICAgICAnY3RybFRleHRXaWR0aCBjdHJsVHlwZSBjdHJsVmlzaWJsZSBjdFJvd0NvbnRyb2xzIGN0Um93Q291bnQgY3RTZXRDdXJTZWwgY3RTZXREYXRhICcgK1xuICAgICAgICAnY3RTZXRIZWFkZXJUZW1wbGF0ZSBjdFNldFJvd1RlbXBsYXRlIGN0U2V0VmFsdWUgY3RWYWx1ZSBjdXJhdG9yQWRkb25zIGN1cmF0b3JDYW1lcmEgJyArXG4gICAgICAgICdjdXJhdG9yQ2FtZXJhQXJlYSBjdXJhdG9yQ2FtZXJhQXJlYUNlaWxpbmcgY3VyYXRvckNvZWYgY3VyYXRvckVkaXRhYmxlT2JqZWN0cyBjdXJhdG9yRWRpdGluZ0FyZWEgJyArXG4gICAgICAgICdjdXJhdG9yRWRpdGluZ0FyZWFUeXBlIGN1cmF0b3JNb3VzZU92ZXIgY3VyYXRvclBvaW50cyBjdXJhdG9yUmVnaXN0ZXJlZE9iamVjdHMgY3VyYXRvclNlbGVjdGVkICcgK1xuICAgICAgICAnY3VyYXRvcldheXBvaW50Q29zdCBjdXJyZW50M0RFTk9wZXJhdGlvbiBjdXJyZW50Q2hhbm5lbCBjdXJyZW50Q29tbWFuZCBjdXJyZW50TWFnYXppbmUgJyArXG4gICAgICAgICdjdXJyZW50TWFnYXppbmVEZXRhaWwgY3VycmVudE1hZ2F6aW5lRGV0YWlsVHVycmV0IGN1cnJlbnRNYWdhemluZVR1cnJldCBjdXJyZW50TXV6emxlICcgK1xuICAgICAgICAnY3VycmVudE5hbWVzcGFjZSBjdXJyZW50VGFzayBjdXJyZW50VGFza3MgY3VycmVudFRocm93YWJsZSBjdXJyZW50VmlzaW9uTW9kZSBjdXJyZW50V2F5cG9pbnQgJyArXG4gICAgICAgICdjdXJyZW50V2VhcG9uIGN1cnJlbnRXZWFwb25Nb2RlIGN1cnJlbnRXZWFwb25UdXJyZXQgY3VycmVudFplcm9pbmcgY3Vyc29yT2JqZWN0IGN1cnNvclRhcmdldCAnICtcbiAgICAgICAgJ2N1c3RvbUNoYXQgY3VzdG9tUmFkaW8gY3V0RmFkZU91dCBjdXRPYmogY3V0UnNjIGN1dFRleHQgZGFtYWdlIGRhdGUgZGF0ZVRvTnVtYmVyIGRheXRpbWUgJyArXG4gICAgICAgICdkZUFjdGl2YXRlS2V5IGRlYnJpZWZpbmdUZXh0IGRlYnVnRlNNIGRlYnVnTG9nIGRlZyBkZWxldGUzREVORW50aXRpZXMgZGVsZXRlQXQgZGVsZXRlQ2VudGVyICcgK1xuICAgICAgICAnZGVsZXRlQ29sbGVjdGlvbiBkZWxldGVFZGl0b3JPYmplY3QgZGVsZXRlR3JvdXAgZGVsZXRlR3JvdXBXaGVuRW1wdHkgZGVsZXRlSWRlbnRpdHkgJyArXG4gICAgICAgICdkZWxldGVMb2NhdGlvbiBkZWxldGVNYXJrZXIgZGVsZXRlTWFya2VyTG9jYWwgZGVsZXRlUmFuZ2UgZGVsZXRlUmVzb3VyY2VzIGRlbGV0ZVNpdGUgZGVsZXRlU3RhdHVzICcgK1xuICAgICAgICAnZGVsZXRlVGVhbSBkZWxldGVWZWhpY2xlIGRlbGV0ZVZlaGljbGVDcmV3IGRlbGV0ZVdheXBvaW50IGRldGFjaCBkZXRlY3RlZE1pbmVzICcgK1xuICAgICAgICAnZGlhZ19hY3RpdmVNaXNzaW9uRlNNcyBkaWFnX2FjdGl2ZVNjcmlwdHMgZGlhZ19hY3RpdmVTUUZTY3JpcHRzIGRpYWdfYWN0aXZlU1FTU2NyaXB0cyAnICtcbiAgICAgICAgJ2RpYWdfY2FwdHVyZUZyYW1lIGRpYWdfY2FwdHVyZUZyYW1lVG9GaWxlIGRpYWdfY2FwdHVyZVNsb3dGcmFtZSBkaWFnX2NvZGVQZXJmb3JtYW5jZSAnICtcbiAgICAgICAgJ2RpYWdfZHJhd01vZGUgZGlhZ19lbmFibGUgZGlhZ19lbmFibGVkIGRpYWdfZnBzIGRpYWdfZnBzTWluIGRpYWdfZnJhbWVObyBkaWFnX2xpZ2h0TmV3TG9hZCAnICtcbiAgICAgICAgJ2RpYWdfbGlzdCBkaWFnX2xvZyBkaWFnX2xvZ1Nsb3dGcmFtZSBkaWFnX21lcmdlQ29uZmlnRmlsZSBkaWFnX3JlY29yZFR1cnJldExpbWl0cyAnICtcbiAgICAgICAgJ2RpYWdfc2V0TGlnaHROZXcgZGlhZ190aWNrVGltZSBkaWFnX3RvZ2dsZSBkaWFsb2cgZGlhcnlTdWJqZWN0RXhpc3RzIGRpZEpJUCBkaWRKSVBPd25lciAnICtcbiAgICAgICAgJ2RpZmZpY3VsdHkgZGlmZmljdWx0eUVuYWJsZWQgZGlmZmljdWx0eUVuYWJsZWRSVEQgZGlmZmljdWx0eU9wdGlvbiBkaXJlY3Rpb24gZGlyZWN0U2F5IGRpc2FibGVBSSAnICtcbiAgICAgICAgJ2Rpc2FibGVDb2xsaXNpb25XaXRoIGRpc2FibGVDb252ZXJzYXRpb24gZGlzYWJsZURlYnJpZWZpbmdTdGF0cyBkaXNhYmxlTWFwSW5kaWNhdG9ycyAnICtcbiAgICAgICAgJ2Rpc2FibGVOVkdFcXVpcG1lbnQgZGlzYWJsZVJlbW90ZVNlbnNvcnMgZGlzYWJsZVNlcmlhbGl6YXRpb24gZGlzYWJsZVRJRXF1aXBtZW50ICcgK1xuICAgICAgICAnZGlzYWJsZVVBVkNvbm5lY3RhYmlsaXR5IGRpc2FibGVVc2VySW5wdXQgZGlzcGxheUFkZEV2ZW50SGFuZGxlciBkaXNwbGF5Q3RybCBkaXNwbGF5UGFyZW50ICcgK1xuICAgICAgICAnZGlzcGxheVJlbW92ZUFsbEV2ZW50SGFuZGxlcnMgZGlzcGxheVJlbW92ZUV2ZW50SGFuZGxlciBkaXNwbGF5U2V0RXZlbnRIYW5kbGVyIGRpc3NvbHZlVGVhbSAnICtcbiAgICAgICAgJ2Rpc3RhbmNlIGRpc3RhbmNlMkQgZGlzdGFuY2VTcXIgZGlzdHJpYnV0aW9uUmVnaW9uIGRvM0RFTkFjdGlvbiBkb0FydGlsbGVyeUZpcmUgZG9GaXJlIGRvRm9sbG93ICcgK1xuICAgICAgICAnZG9GU00gZG9HZXRPdXQgZG9Nb3ZlIGRvb3JQaGFzZSBkb1N0b3AgZG9TdXBwcmVzc2l2ZUZpcmUgZG9UYXJnZXQgZG9XYXRjaCBkcmF3QXJyb3cgZHJhd0VsbGlwc2UgJyArXG4gICAgICAgICdkcmF3SWNvbiBkcmF3SWNvbjNEIGRyYXdMaW5lIGRyYXdMaW5lM0QgZHJhd0xpbmsgZHJhd0xvY2F0aW9uIGRyYXdQb2x5Z29uIGRyYXdSZWN0YW5nbGUgJyArXG4gICAgICAgICdkcmF3VHJpYW5nbGUgZHJpdmVyIGRyb3AgZHluYW1pY1NpbXVsYXRpb25EaXN0YW5jZSBkeW5hbWljU2ltdWxhdGlvbkRpc3RhbmNlQ29lZiAnICtcbiAgICAgICAgJ2R5bmFtaWNTaW11bGF0aW9uRW5hYmxlZCBkeW5hbWljU2ltdWxhdGlvblN5c3RlbUVuYWJsZWQgZWNobyBlZGl0M0RFTk1pc3Npb25BdHRyaWJ1dGVzIGVkaXRPYmplY3QgJyArXG4gICAgICAgICdlZGl0b3JTZXRFdmVudEhhbmRsZXIgZWZmZWN0aXZlQ29tbWFuZGVyIGVtcHR5UG9zaXRpb25zIGVuYWJsZUFJIGVuYWJsZUFJRmVhdHVyZSAnICtcbiAgICAgICAgJ2VuYWJsZUFpbVByZWNpc2lvbiBlbmFibGVBdHRhY2sgZW5hYmxlQXVkaW9GZWF0dXJlIGVuYWJsZUF1dG9TdGFydFVwUlREIGVuYWJsZUF1dG9UcmltUlREICcgK1xuICAgICAgICAnZW5hYmxlQ2FtU2hha2UgZW5hYmxlQ2F1c3RpY3MgZW5hYmxlQ2hhbm5lbCBlbmFibGVDb2xsaXNpb25XaXRoIGVuYWJsZUNvcGlsb3QgJyArXG4gICAgICAgICdlbmFibGVEZWJyaWVmaW5nU3RhdHMgZW5hYmxlRGlhZ0xlZ2VuZCBlbmFibGVEeW5hbWljU2ltdWxhdGlvbiBlbmFibGVEeW5hbWljU2ltdWxhdGlvblN5c3RlbSAnICtcbiAgICAgICAgJ2VuYWJsZUVuZERpYWxvZyBlbmFibGVFbmdpbmVBcnRpbGxlcnkgZW5hYmxlRW52aXJvbm1lbnQgZW5hYmxlRmF0aWd1ZSBlbmFibGVHdW5MaWdodHMgJyArXG4gICAgICAgICdlbmFibGVJbmZvUGFuZWxDb21wb25lbnQgZW5hYmxlSVJMYXNlcnMgZW5hYmxlTWltaWNzIGVuYWJsZVBlcnNvblR1cnJldCBlbmFibGVSYWRpbyBlbmFibGVSZWxvYWQgJyArXG4gICAgICAgICdlbmFibGVSb3BlQXR0YWNoIGVuYWJsZVNhdE5vcm1hbE9uRGV0YWlsIGVuYWJsZVNhdmluZyBlbmFibGVTZW50ZW5jZXMgZW5hYmxlU2ltdWxhdGlvbiAnICtcbiAgICAgICAgJ2VuYWJsZVNpbXVsYXRpb25HbG9iYWwgZW5hYmxlU3RhbWluYSBlbmFibGVUZWFtU3dpdGNoIGVuYWJsZVRyYWZmaWMgZW5hYmxlVUFWQ29ubmVjdGFiaWxpdHkgJyArXG4gICAgICAgICdlbmFibGVVQVZXYXlwb2ludHMgZW5hYmxlVmVoaWNsZUNhcmdvIGVuYWJsZVZlaGljbGVTZW5zb3IgZW5hYmxlV2VhcG9uRGlzYXNzZW1ibHkgJyArXG4gICAgICAgICdlbmRMb2FkaW5nU2NyZWVuIGVuZE1pc3Npb24gZW5naW5lT24gZW5naW5lc0lzT25SVEQgZW5naW5lc1JwbVJURCBlbmdpbmVzVG9ycXVlUlREIGVudGl0aWVzICcgK1xuICAgICAgICAnZW52aXJvbm1lbnRFbmFibGVkIGVzdGltYXRlZEVuZFNlcnZlclRpbWUgZXN0aW1hdGVkVGltZUxlZnQgZXZhbE9iamVjdEFyZ3VtZW50IGV2ZXJ5QmFja3BhY2sgJyArXG4gICAgICAgICdldmVyeUNvbnRhaW5lciBleGVjIGV4ZWNFZGl0b3JTY3JpcHQgZXhlY0ZTTSBleGVjVk0gZXhwIGV4cGVjdGVkRGVzdGluYXRpb24gZXhwb3J0SklQTWVzc2FnZXMgJyArXG4gICAgICAgICdleWVEaXJlY3Rpb24gZXllUG9zIGZhY2UgZmFjdGlvbiBmYWRlTXVzaWMgZmFkZVJhZGlvIGZhZGVTb3VuZCBmYWRlU3BlZWNoIGZhaWxNaXNzaW9uICcgK1xuICAgICAgICAnZmlsbFdlYXBvbnNGcm9tUG9vbCBmaW5kIGZpbmRDb3ZlciBmaW5kRGlzcGxheSBmaW5kRWRpdG9yT2JqZWN0IGZpbmRFbXB0eVBvc2l0aW9uICcgK1xuICAgICAgICAnZmluZEVtcHR5UG9zaXRpb25SZWFkeSBmaW5kSWYgZmluZE5lYXJlc3RFbmVteSBmaW5pc2hNaXNzaW9uSW5pdCBmaW5pdGUgZmlyZSBmaXJlQXRUYXJnZXQgJyArXG4gICAgICAgICdmaXJzdEJhY2twYWNrIGZsYWcgZmxhZ0FuaW1hdGlvblBoYXNlIGZsYWdPd25lciBmbGFnU2lkZSBmbGFnVGV4dHVyZSBmbGVlaW5nIGZsb29yIGZseUluSGVpZ2h0ICcgK1xuICAgICAgICAnZmx5SW5IZWlnaHRBU0wgZm9nIGZvZ0ZvcmVjYXN0IGZvZ1BhcmFtcyBmb3JjZUFkZFVuaWZvcm0gZm9yY2VkTWFwIGZvcmNlRW5kIGZvcmNlRmxhZ1RleHR1cmUgJyArXG4gICAgICAgICdmb3JjZUZvbGxvd1JvYWQgZm9yY2VNYXAgZm9yY2VSZXNwYXduIGZvcmNlU3BlZWQgZm9yY2VXYWxrIGZvcmNlV2VhcG9uRmlyZSBmb3JjZVdlYXRoZXJDaGFuZ2UgJyArXG4gICAgICAgICdmb3JFYWNoTWVtYmVyIGZvckVhY2hNZW1iZXJBZ2VudCBmb3JFYWNoTWVtYmVyVGVhbSBmb3JnZXRUYXJnZXQgZm9ybWF0IGZvcm1hdGlvbiAnICtcbiAgICAgICAgJ2Zvcm1hdGlvbkRpcmVjdGlvbiBmb3JtYXRpb25MZWFkZXIgZm9ybWF0aW9uTWVtYmVycyBmb3JtYXRpb25Qb3NpdGlvbiBmb3JtYXRpb25UYXNrIGZvcm1hdFRleHQgJyArXG4gICAgICAgICdmb3JtTGVhZGVyIGZyZWVMb29rIGZyb21FZGl0b3IgZnVlbCBmdWxsQ3JldyBnZWFySURDQW1tb0NvdW50IGdlYXJTbG90QW1tb0NvdW50IGdlYXJTbG90RGF0YSAnICtcbiAgICAgICAgJ2dldDNERU5BY3Rpb25TdGF0ZSBnZXQzREVOQXR0cmlidXRlIGdldDNERU5DYW1lcmEgZ2V0M0RFTkNvbm5lY3Rpb25zIGdldDNERU5FbnRpdHkgJyArXG4gICAgICAgICdnZXQzREVORW50aXR5SUQgZ2V0M0RFTkdyaWQgZ2V0M0RFTkljb25zVmlzaWJsZSBnZXQzREVOTGF5ZXJFbnRpdGllcyBnZXQzREVOTGluZXNWaXNpYmxlICcgK1xuICAgICAgICAnZ2V0M0RFTk1pc3Npb25BdHRyaWJ1dGUgZ2V0M0RFTk1vdXNlT3ZlciBnZXQzREVOU2VsZWN0ZWQgZ2V0QWltaW5nQ29lZiBnZXRBbGxFbnZTb3VuZENvbnRyb2xsZXJzICcgK1xuICAgICAgICAnZ2V0QWxsSGl0UG9pbnRzRGFtYWdlIGdldEFsbE93bmVkTWluZXMgZ2V0QWxsU291bmRDb250cm9sbGVycyBnZXRBbW1vQ2FyZ28gZ2V0QW5pbUFpbVByZWNpc2lvbiAnICtcbiAgICAgICAgJ2dldEFuaW1TcGVlZENvZWYgZ2V0QXJyYXkgZ2V0QXJ0aWxsZXJ5QW1tbyBnZXRBcnRpbGxlcnlDb21wdXRlclNldHRpbmdzIGdldEFydGlsbGVyeUVUQSAnICtcbiAgICAgICAgJ2dldEFzc2lnbmVkQ3VyYXRvckxvZ2ljIGdldEFzc2lnbmVkQ3VyYXRvclVuaXQgZ2V0QmFja3BhY2tDYXJnbyBnZXRCbGVlZGluZ1JlbWFpbmluZyAnICtcbiAgICAgICAgJ2dldEJ1cm5pbmdWYWx1ZSBnZXRDYW1lcmFWaWV3RGlyZWN0aW9uIGdldENhcmdvSW5kZXggZ2V0Q2VudGVyT2ZNYXNzIGdldENsaWVudFN0YXRlICcgK1xuICAgICAgICAnZ2V0Q2xpZW50U3RhdGVOdW1iZXIgZ2V0Q29tcGF0aWJsZVB5bG9uTWFnYXppbmVzIGdldENvbm5lY3RlZFVBViBnZXRDb250YWluZXJNYXhMb2FkICcgK1xuICAgICAgICAnZ2V0Q3Vyc29yT2JqZWN0UGFyYW1zIGdldEN1c3RvbUFpbUNvZWYgZ2V0RGFtbWFnZSBnZXREZXNjcmlwdGlvbiBnZXREaXIgZ2V0RGlyVmlzdWFsICcgK1xuICAgICAgICAnZ2V0RExDQXNzZXRzVXNhZ2UgZ2V0RExDQXNzZXRzVXNhZ2VCeU5hbWUgZ2V0RExDcyBnZXRFZGl0b3JDYW1lcmEgZ2V0RWRpdG9yTW9kZSAnICtcbiAgICAgICAgJ2dldEVkaXRvck9iamVjdFNjb3BlIGdldEVsZXZhdGlvbk9mZnNldCBnZXRFbnZTb3VuZENvbnRyb2xsZXIgZ2V0RmF0aWd1ZSBnZXRGb3JjZWRGbGFnVGV4dHVyZSAnICtcbiAgICAgICAgJ2dldEZyaWVuZCBnZXRGU01WYXJpYWJsZSBnZXRGdWVsQ2FyZ28gZ2V0R3JvdXBJY29uIGdldEdyb3VwSWNvblBhcmFtcyBnZXRHcm91cEljb25zIGdldEhpZGVGcm9tICcgK1xuICAgICAgICAnZ2V0SGl0IGdldEhpdEluZGV4IGdldEhpdFBvaW50RGFtYWdlIGdldEl0ZW1DYXJnbyBnZXRNYWdhemluZUNhcmdvIGdldE1hcmtlckNvbG9yIGdldE1hcmtlclBvcyAnICtcbiAgICAgICAgJ2dldE1hcmtlclNpemUgZ2V0TWFya2VyVHlwZSBnZXRNYXNzIGdldE1pc3Npb25Db25maWcgZ2V0TWlzc2lvbkNvbmZpZ1ZhbHVlIGdldE1pc3Npb25ETENzICcgK1xuICAgICAgICAnZ2V0TWlzc2lvbkxheWVyRW50aXRpZXMgZ2V0TW9kZWxJbmZvIGdldE1vdXNlUG9zaXRpb24gZ2V0TXVzaWNQbGF5ZWRUaW1lIGdldE51bWJlciAnICtcbiAgICAgICAgJ2dldE9iamVjdEFyZ3VtZW50IGdldE9iamVjdENoaWxkcmVuIGdldE9iamVjdERMQyBnZXRPYmplY3RNYXRlcmlhbHMgZ2V0T2JqZWN0UHJveHkgJyArXG4gICAgICAgICdnZXRPYmplY3RUZXh0dXJlcyBnZXRPYmplY3RUeXBlIGdldE9iamVjdFZpZXdEaXN0YW5jZSBnZXRPeHlnZW5SZW1haW5pbmcgZ2V0UGVyc29uVXNlZERMQ3MgJyArXG4gICAgICAgICdnZXRQaWxvdENhbWVyYURpcmVjdGlvbiBnZXRQaWxvdENhbWVyYVBvc2l0aW9uIGdldFBpbG90Q2FtZXJhUm90YXRpb24gZ2V0UGlsb3RDYW1lcmFUYXJnZXQgJyArXG4gICAgICAgICdnZXRQbGF0ZU51bWJlciBnZXRQbGF5ZXJDaGFubmVsIGdldFBsYXllclNjb3JlcyBnZXRQbGF5ZXJVSUQgZ2V0UG9zIGdldFBvc0FTTCBnZXRQb3NBU0xWaXN1YWwgJyArXG4gICAgICAgICdnZXRQb3NBU0xXIGdldFBvc0FUTCBnZXRQb3NBVExWaXN1YWwgZ2V0UG9zVmlzdWFsIGdldFBvc1dvcmxkIGdldFB5bG9uTWFnYXppbmVzIGdldFJlbERpciAnICtcbiAgICAgICAgJ2dldFJlbFBvcyBnZXRSZW1vdGVTZW5zb3JzRGlzYWJsZWQgZ2V0UmVwYWlyQ2FyZ28gZ2V0UmVzb2x1dGlvbiBnZXRTaGFkb3dEaXN0YW5jZSBnZXRTaG90UGFyZW50cyAnICtcbiAgICAgICAgJ2dldFNsaW5nTG9hZCBnZXRTb3VuZENvbnRyb2xsZXIgZ2V0U291bmRDb250cm9sbGVyUmVzdWx0IGdldFNwZWVkIGdldFN0YW1pbmEgZ2V0U3RhdFZhbHVlICcgK1xuICAgICAgICAnZ2V0U3VwcHJlc3Npb24gZ2V0VGVycmFpbkdyaWQgZ2V0VGVycmFpbkhlaWdodEFTTCBnZXRUZXh0IGdldFRvdGFsRExDVXNhZ2VUaW1lIGdldFVuaXRMb2Fkb3V0ICcgK1xuICAgICAgICAnZ2V0VW5pdFRyYWl0IGdldFVzZXJNRkRUZXh0IGdldFVzZXJNRkR2YWx1ZSBnZXRWYXJpYWJsZSBnZXRWZWhpY2xlQ2FyZ28gZ2V0V2VhcG9uQ2FyZ28gJyArXG4gICAgICAgICdnZXRXZWFwb25Td2F5IGdldFdpbmdzT3JpZW50YXRpb25SVEQgZ2V0V2luZ3NQb3NpdGlvblJURCBnZXRXUFBvcyBnbGFuY2VBdCBnbG9iYWxDaGF0IGdsb2JhbFJhZGlvICcgK1xuICAgICAgICAnZ29nZ2xlcyBnb3RvIGdyb3VwIGdyb3VwQ2hhdCBncm91cEZyb21OZXRJZCBncm91cEljb25TZWxlY3RhYmxlIGdyb3VwSWNvbnNWaXNpYmxlIGdyb3VwSWQgJyArXG4gICAgICAgICdncm91cE93bmVyIGdyb3VwUmFkaW8gZ3JvdXBTZWxlY3RlZFVuaXRzIGdyb3VwU2VsZWN0VW5pdCBndW5uZXIgZ3VzdHMgaGFsdCBoYW5kZ3VuSXRlbXMgJyArXG4gICAgICAgICdoYW5kZ3VuTWFnYXppbmUgaGFuZGd1bldlYXBvbiBoYW5kc0hpdCBoYXNJbnRlcmZhY2UgaGFzUGlsb3RDYW1lcmEgaGFzV2VhcG9uIGhjQWxsR3JvdXBzICcgK1xuICAgICAgICAnaGNHcm91cFBhcmFtcyBoY0xlYWRlciBoY1JlbW92ZUFsbEdyb3VwcyBoY1JlbW92ZUdyb3VwIGhjU2VsZWN0ZWQgaGNTZWxlY3RHcm91cCBoY1NldEdyb3VwICcgK1xuICAgICAgICAnaGNTaG93QmFyIGhjU2hvd25CYXIgaGVhZGdlYXIgaGlkZUJvZHkgaGlkZU9iamVjdCBoaWRlT2JqZWN0R2xvYmFsIGhpZGVTZWxlY3Rpb24gaGludCBoaW50QyAnICtcbiAgICAgICAgJ2hpbnRDYWRldCBoaW50U2lsZW50IGhtZCBob3N0TWlzc2lvbiBodG1sTG9hZCBIVURNb3ZlbWVudExldmVscyBodW1pZGl0eSBpbWFnZSBpbXBvcnRBbGxHcm91cHMgJyArXG4gICAgICAgICdpbXBvcnRhbmNlIGluIGluQXJlYSBpbkFyZWFBcnJheSBpbmNhcGFjaXRhdGVkU3RhdGUgaW5mbGFtZSBpbmZsYW1lZCBpbmZvUGFuZWwgJyArXG4gICAgICAgICdpbmZvUGFuZWxDb21wb25lbnRFbmFibGVkIGluZm9QYW5lbENvbXBvbmVudHMgaW5mb1BhbmVscyBpbkdhbWVVSVNldEV2ZW50SGFuZGxlciBpbmhlcml0c0Zyb20gJyArXG4gICAgICAgICdpbml0QW1iaWVudExpZmUgaW5Qb2x5Z29uIGlucHV0QWN0aW9uIGluUmFuZ2VPZkFydGlsbGVyeSBpbnNlcnRFZGl0b3JPYmplY3QgaW50ZXJzZWN0IGlzM0RFTiAnICtcbiAgICAgICAgJ2lzM0RFTk11bHRpcGxheWVyIGlzQWJsZVRvQnJlYXRoZSBpc0FnZW50IGlzQXJyYXkgaXNBdXRvSG92ZXJPbiBpc0F1dG9ub21vdXMgaXNBdXRvdGVzdCAnICtcbiAgICAgICAgJ2lzQmxlZWRpbmcgaXNCdXJuaW5nIGlzQ2xhc3MgaXNDb2xsaXNpb25MaWdodE9uIGlzQ29waWxvdEVuYWJsZWQgaXNEYW1hZ2VBbGxvd2VkIGlzRGVkaWNhdGVkICcgK1xuICAgICAgICAnaXNETENBdmFpbGFibGUgaXNFbmdpbmVPbiBpc0VxdWFsVG8gaXNFcXVhbFR5cGUgaXNFcXVhbFR5cGVBbGwgaXNFcXVhbFR5cGVBbnkgaXNFcXVhbFR5cGVBcnJheSAnICtcbiAgICAgICAgJ2lzRXF1YWxUeXBlUGFyYW1zIGlzRmlsZVBhdGNoaW5nRW5hYmxlZCBpc0ZsYXNobGlnaHRPbiBpc0ZsYXRFbXB0eSBpc0ZvcmNlZFdhbGsgaXNGb3JtYXRpb25MZWFkZXIgJyArXG4gICAgICAgICdpc0dyb3VwRGVsZXRlZFdoZW5FbXB0eSBpc0hpZGRlbiBpc0luUmVtYWluc0NvbGxlY3RvciBpc0luc3RydWN0b3JGaWd1cmVFbmFibGVkIGlzSVJMYXNlck9uICcgK1xuICAgICAgICAnaXNLZXlBY3RpdmUgaXNLaW5kT2YgaXNMYXNlck9uIGlzTGlnaHRPbiBpc0xvY2FsaXplZCBpc01hbnVhbEZpcmUgaXNNYXJrZWRGb3JDb2xsZWN0aW9uICcgK1xuICAgICAgICAnaXNNdWx0aXBsYXllciBpc011bHRpcGxheWVyU29sbyBpc05pbCBpc051bGwgaXNOdW1iZXIgaXNPYmplY3RIaWRkZW4gaXNPYmplY3RSVEQgaXNPblJvYWQgJyArXG4gICAgICAgICdpc1BpcEVuYWJsZWQgaXNQbGF5ZXIgaXNSZWFsVGltZSBpc1JlbW90ZUV4ZWN1dGVkIGlzUmVtb3RlRXhlY3V0ZWRKSVAgaXNTZXJ2ZXIgaXNTaG93aW5nM0RJY29ucyAnICtcbiAgICAgICAgJ2lzU2ltcGxlT2JqZWN0IGlzU3ByaW50QWxsb3dlZCBpc1N0YW1pbmFFbmFibGVkIGlzU3RlYW1NaXNzaW9uIGlzU3RyZWFtRnJpZW5kbHlVSUVuYWJsZWQgaXNUZXh0ICcgK1xuICAgICAgICAnaXNUb3VjaGluZ0dyb3VuZCBpc1R1cm5lZE91dCBpc1R1dEhpbnRzRW5hYmxlZCBpc1VBVkNvbm5lY3RhYmxlIGlzVUFWQ29ubmVjdGVkIGlzVUlDb250ZXh0ICcgK1xuICAgICAgICAnaXNVbmlmb3JtQWxsb3dlZCBpc1ZlaGljbGVDYXJnbyBpc1ZlaGljbGVSYWRhck9uIGlzVmVoaWNsZVNlbnNvckVuYWJsZWQgaXNXYWxraW5nICcgK1xuICAgICAgICAnaXNXZWFwb25EZXBsb3llZCBpc1dlYXBvblJlc3RlZCBpdGVtQ2FyZ28gaXRlbXMgaXRlbXNXaXRoTWFnYXppbmVzIGpvaW4gam9pbkFzIGpvaW5Bc1NpbGVudCAnICtcbiAgICAgICAgJ2pvaW5TaWxlbnQgam9pblN0cmluZyBrYkFkZERhdGFiYXNlIGtiQWRkRGF0YWJhc2VUYXJnZXRzIGtiQWRkVG9waWMga2JIYXNUb3BpYyBrYlJlYWN0ICcgK1xuICAgICAgICAna2JSZW1vdmVUb3BpYyBrYlRlbGwga2JXYXNTYWlkIGtleUltYWdlIGtleU5hbWUga25vd3NBYm91dCBsYW5kIGxhbmRBdCBsYW5kUmVzdWx0IGxhbmd1YWdlICcgK1xuICAgICAgICAnbGFzZXJUYXJnZXQgbGJBZGQgbGJDbGVhciBsYkNvbG9yIGxiQ29sb3JSaWdodCBsYkN1clNlbCBsYkRhdGEgbGJEZWxldGUgbGJJc1NlbGVjdGVkIGxiUGljdHVyZSAnICtcbiAgICAgICAgJ2xiUGljdHVyZVJpZ2h0IGxiU2VsZWN0aW9uIGxiU2V0Q29sb3IgbGJTZXRDb2xvclJpZ2h0IGxiU2V0Q3VyU2VsIGxiU2V0RGF0YSBsYlNldFBpY3R1cmUgJyArXG4gICAgICAgICdsYlNldFBpY3R1cmVDb2xvciBsYlNldFBpY3R1cmVDb2xvckRpc2FibGVkIGxiU2V0UGljdHVyZUNvbG9yU2VsZWN0ZWQgbGJTZXRQaWN0dXJlUmlnaHQgJyArXG4gICAgICAgICdsYlNldFBpY3R1cmVSaWdodENvbG9yIGxiU2V0UGljdHVyZVJpZ2h0Q29sb3JEaXNhYmxlZCBsYlNldFBpY3R1cmVSaWdodENvbG9yU2VsZWN0ZWQgJyArXG4gICAgICAgICdsYlNldFNlbGVjdENvbG9yIGxiU2V0U2VsZWN0Q29sb3JSaWdodCBsYlNldFNlbGVjdGVkIGxiU2V0VGV4dCBsYlNldFRleHRSaWdodCBsYlNldFRvb2x0aXAgJyArXG4gICAgICAgICdsYlNldFZhbHVlIGxiU2l6ZSBsYlNvcnQgbGJTb3J0QnlWYWx1ZSBsYlRleHQgbGJUZXh0UmlnaHQgbGJWYWx1ZSBsZWFkZXIgbGVhZGVyYm9hcmREZUluaXQgJyArXG4gICAgICAgICdsZWFkZXJib2FyZEdldFJvd3MgbGVhZGVyYm9hcmRJbml0IGxlYWRlcmJvYXJkUmVxdWVzdFJvd3NGcmllbmRzIGxlYWRlcmJvYXJkc1JlcXVlc3RVcGxvYWRTY29yZSAnICtcbiAgICAgICAgJ2xlYWRlcmJvYXJkc1JlcXVlc3RVcGxvYWRTY29yZUtlZXBCZXN0IGxlYWRlcmJvYXJkU3RhdGUgbGVhdmVWZWhpY2xlIGxpYnJhcnlDcmVkaXRzICcgK1xuICAgICAgICAnbGlicmFyeURpc2NsYWltZXJzIGxpZmVTdGF0ZSBsaWdodEF0dGFjaE9iamVjdCBsaWdodERldGFjaE9iamVjdCBsaWdodElzT24gbGlnaHRuaW5ncyBsaW1pdFNwZWVkICcgK1xuICAgICAgICAnbGluZWFyQ29udmVyc2lvbiBsaW5lSW50ZXJzZWN0cyBsaW5lSW50ZXJzZWN0c09ianMgbGluZUludGVyc2VjdHNTdXJmYWNlcyBsaW5lSW50ZXJzZWN0c1dpdGggJyArXG4gICAgICAgICdsaW5rSXRlbSBsaXN0IGxpc3RPYmplY3RzIGxpc3RSZW1vdGVUYXJnZXRzIGxpc3RWZWhpY2xlU2Vuc29ycyBsbiBsbmJBZGRBcnJheSBsbmJBZGRDb2x1bW4gJyArXG4gICAgICAgICdsbmJBZGRSb3cgbG5iQ2xlYXIgbG5iQ29sb3IgbG5iQ3VyU2VsUm93IGxuYkRhdGEgbG5iRGVsZXRlQ29sdW1uIGxuYkRlbGV0ZVJvdyAnICtcbiAgICAgICAgJ2xuYkdldENvbHVtbnNQb3NpdGlvbiBsbmJQaWN0dXJlIGxuYlNldENvbG9yIGxuYlNldENvbHVtbnNQb3MgbG5iU2V0Q3VyU2VsUm93IGxuYlNldERhdGEgJyArXG4gICAgICAgICdsbmJTZXRQaWN0dXJlIGxuYlNldFRleHQgbG5iU2V0VmFsdWUgbG5iU2l6ZSBsbmJTb3J0IGxuYlNvcnRCeVZhbHVlIGxuYlRleHQgbG5iVmFsdWUgbG9hZCBsb2FkQWJzICcgK1xuICAgICAgICAnbG9hZEJhY2twYWNrIGxvYWRGaWxlIGxvYWRHYW1lIGxvYWRJZGVudGl0eSBsb2FkTWFnYXppbmUgbG9hZE92ZXJsYXkgbG9hZFN0YXR1cyBsb2FkVW5pZm9ybSAnICtcbiAgICAgICAgJ2xvYWRWZXN0IGxvY2FsIGxvY2FsaXplIGxvY2F0aW9uUG9zaXRpb24gbG9jayBsb2NrQ2FtZXJhVG8gbG9ja0NhcmdvIGxvY2tEcml2ZXIgbG9ja2VkICcgK1xuICAgICAgICAnbG9ja2VkQ2FyZ28gbG9ja2VkRHJpdmVyIGxvY2tlZFR1cnJldCBsb2NrSWRlbnRpdHkgbG9ja1R1cnJldCBsb2NrV1AgbG9nIGxvZ0VudGl0aWVzIGxvZ05ldHdvcmsgJyArXG4gICAgICAgICdsb2dOZXR3b3JrVGVybWluYXRlIGxvb2tBdCBsb29rQXRQb3MgbWFnYXppbmVDYXJnbyBtYWdhemluZXMgbWFnYXppbmVzQWxsVHVycmV0cyBtYWdhemluZXNBbW1vICcgK1xuICAgICAgICAnbWFnYXppbmVzQW1tb0NhcmdvIG1hZ2F6aW5lc0FtbW9GdWxsIG1hZ2F6aW5lc0RldGFpbCBtYWdhemluZXNEZXRhaWxCYWNrcGFjayAnICtcbiAgICAgICAgJ21hZ2F6aW5lc0RldGFpbFVuaWZvcm0gbWFnYXppbmVzRGV0YWlsVmVzdCBtYWdhemluZXNUdXJyZXQgbWFnYXppbmVUdXJyZXRBbW1vIG1hcEFuaW1BZGQgJyArXG4gICAgICAgICdtYXBBbmltQ2xlYXIgbWFwQW5pbUNvbW1pdCBtYXBBbmltRG9uZSBtYXBDZW50ZXJPbkNhbWVyYSBtYXBHcmlkUG9zaXRpb24gbWFya0FzRmluaXNoZWRPblN0ZWFtICcgK1xuICAgICAgICAnbWFya2VyQWxwaGEgbWFya2VyQnJ1c2ggbWFya2VyQ29sb3IgbWFya2VyRGlyIG1hcmtlclBvcyBtYXJrZXJTaGFwZSBtYXJrZXJTaXplIG1hcmtlclRleHQgJyArXG4gICAgICAgICdtYXJrZXJUeXBlIG1heCBtZW1iZXJzIG1lbnVBY3Rpb24gbWVudUFkZCBtZW51Q2hlY2tlZCBtZW51Q2xlYXIgbWVudUNvbGxhcHNlIG1lbnVEYXRhIG1lbnVEZWxldGUgJyArXG4gICAgICAgICdtZW51RW5hYmxlIG1lbnVFbmFibGVkIG1lbnVFeHBhbmQgbWVudUhvdmVyIG1lbnVQaWN0dXJlIG1lbnVTZXRBY3Rpb24gbWVudVNldENoZWNrIG1lbnVTZXREYXRhICcgK1xuICAgICAgICAnbWVudVNldFBpY3R1cmUgbWVudVNldFZhbHVlIG1lbnVTaG9ydGN1dCBtZW51U2hvcnRjdXRUZXh0IG1lbnVTaXplIG1lbnVTb3J0IG1lbnVUZXh0IG1lbnVVUkwgJyArXG4gICAgICAgICdtZW51VmFsdWUgbWluIG1pbmVBY3RpdmUgbWluZURldGVjdGVkQnkgbWlzc2lvbkNvbmZpZ0ZpbGUgbWlzc2lvbkRpZmZpY3VsdHkgbWlzc2lvbk5hbWUgJyArXG4gICAgICAgICdtaXNzaW9uTmFtZXNwYWNlIG1pc3Npb25TdGFydCBtaXNzaW9uVmVyc2lvbiBtb2QgbW9kZWxUb1dvcmxkIG1vZGVsVG9Xb3JsZFZpc3VhbCAnICtcbiAgICAgICAgJ21vZGVsVG9Xb3JsZFZpc3VhbFdvcmxkIG1vZGVsVG9Xb3JsZFdvcmxkIG1vZFBhcmFtcyBtb29uSW50ZW5zaXR5IG1vb25QaGFzZSBtb3JhbGUgbW92ZSAnICtcbiAgICAgICAgJ21vdmUzREVOQ2FtZXJhIG1vdmVJbkFueSBtb3ZlSW5DYXJnbyBtb3ZlSW5Db21tYW5kZXIgbW92ZUluRHJpdmVyIG1vdmVJbkd1bm5lciBtb3ZlSW5UdXJyZXQgJyArXG4gICAgICAgICdtb3ZlT2JqZWN0VG9FbmQgbW92ZU91dCBtb3ZlVGltZSBtb3ZlVG8gbW92ZVRvQ29tcGxldGVkIG1vdmVUb0ZhaWxlZCBtdXNpY1ZvbHVtZSBuYW1lIG5hbWVTb3VuZCAnICtcbiAgICAgICAgJ25lYXJFbnRpdGllcyBuZWFyZXN0QnVpbGRpbmcgbmVhcmVzdExvY2F0aW9uIG5lYXJlc3RMb2NhdGlvbnMgbmVhcmVzdExvY2F0aW9uV2l0aER1YmJpbmcgJyArXG4gICAgICAgICduZWFyZXN0T2JqZWN0IG5lYXJlc3RPYmplY3RzIG5lYXJlc3RUZXJyYWluT2JqZWN0cyBuZWFyT2JqZWN0cyBuZWFyT2JqZWN0c1JlYWR5IG5lYXJSb2FkcyAnICtcbiAgICAgICAgJ25lYXJTdXBwbGllcyBuZWFyVGFyZ2V0cyBuZWVkUmVsb2FkIG5ldElkIG5ldE9iak51bGwgbmV3T3ZlcmxheSBuZXh0TWVudUl0ZW1JbmRleCAnICtcbiAgICAgICAgJ25leHRXZWF0aGVyQ2hhbmdlIG5NZW51SXRlbXMgbm90IG51bWJlck9mRW5naW5lc1JURCBudW1iZXJUb0RhdGUgb2JqZWN0Q3VyYXRvcnMgb2JqZWN0RnJvbU5ldElkICcgK1xuICAgICAgICAnb2JqZWN0UGFyZW50IG9ialN0YXR1cyBvbkJyaWVmaW5nR3JvdXAgb25CcmllZmluZ05vdGVzIG9uQnJpZWZpbmdQbGFuIG9uQnJpZWZpbmdUZWFtU3dpdGNoICcgK1xuICAgICAgICAnb25Db21tYW5kTW9kZUNoYW5nZWQgb25Eb3VibGVDbGljayBvbkVhY2hGcmFtZSBvbkdyb3VwSWNvbkNsaWNrIG9uR3JvdXBJY29uT3ZlckVudGVyICcgK1xuICAgICAgICAnb25Hcm91cEljb25PdmVyTGVhdmUgb25IQ0dyb3VwU2VsZWN0aW9uQ2hhbmdlZCBvbk1hcFNpbmdsZUNsaWNrIG9uUGxheWVyQ29ubmVjdGVkICcgK1xuICAgICAgICAnb25QbGF5ZXJEaXNjb25uZWN0ZWQgb25QcmVsb2FkRmluaXNoZWQgb25QcmVsb2FkU3RhcnRlZCBvblNob3dOZXdPYmplY3Qgb25UZWFtU3dpdGNoICcgK1xuICAgICAgICAnb3BlbkN1cmF0b3JJbnRlcmZhY2Ugb3BlbkRMQ1BhZ2Ugb3Blbk1hcCBvcGVuU3RlYW1BcHAgb3BlbllvdXR1YmVWaWRlbyBvciBvcmRlckdldEluIG92ZXJjYXN0ICcgK1xuICAgICAgICAnb3ZlcmNhc3RGb3JlY2FzdCBvd25lciBwYXJhbSBwYXJhbXMgcGFyc2VOdW1iZXIgcGFyc2VTaW1wbGVBcnJheSBwYXJzZVRleHQgcGFyc2luZ05hbWVzcGFjZSAnICtcbiAgICAgICAgJ3BhcnRpY2xlc1F1YWxpdHkgcGlja1dlYXBvblBvb2wgcGl0Y2ggcGl4ZWxHcmlkIHBpeGVsR3JpZEJhc2UgcGl4ZWxHcmlkTm9VSVNjYWxlIHBpeGVsSCBwaXhlbFcgJyArXG4gICAgICAgICdwbGF5YWJsZVNsb3RzTnVtYmVyIHBsYXlhYmxlVW5pdHMgcGxheUFjdGlvbiBwbGF5QWN0aW9uTm93IHBsYXllciBwbGF5ZXJSZXNwYXduVGltZSBwbGF5ZXJTaWRlICcgK1xuICAgICAgICAncGxheWVyc051bWJlciBwbGF5R2VzdHVyZSBwbGF5TWlzc2lvbiBwbGF5TW92ZSBwbGF5TW92ZU5vdyBwbGF5TXVzaWMgcGxheVNjcmlwdGVkTWlzc2lvbiAnICtcbiAgICAgICAgJ3BsYXlTb3VuZCBwbGF5U291bmQzRCBwb3NpdGlvbiBwb3NpdGlvbkNhbWVyYVRvV29ybGQgcG9zU2NyZWVuVG9Xb3JsZCBwb3NXb3JsZFRvU2NyZWVuICcgK1xuICAgICAgICAncHBFZmZlY3RBZGp1c3QgcHBFZmZlY3RDb21taXQgcHBFZmZlY3RDb21taXR0ZWQgcHBFZmZlY3RDcmVhdGUgcHBFZmZlY3REZXN0cm95IHBwRWZmZWN0RW5hYmxlICcgK1xuICAgICAgICAncHBFZmZlY3RFbmFibGVkIHBwRWZmZWN0Rm9yY2VJbk5WRyBwcmVjaXNpb24gcHJlbG9hZENhbWVyYSBwcmVsb2FkT2JqZWN0IHByZWxvYWRTb3VuZCAnICtcbiAgICAgICAgJ3ByZWxvYWRUaXRsZU9iaiBwcmVsb2FkVGl0bGVSc2MgcHJlcHJvY2Vzc0ZpbGUgcHJlcHJvY2Vzc0ZpbGVMaW5lTnVtYmVycyBwcmltYXJ5V2VhcG9uICcgK1xuICAgICAgICAncHJpbWFyeVdlYXBvbkl0ZW1zIHByaW1hcnlXZWFwb25NYWdhemluZSBwcmlvcml0eSBwcm9jZXNzRGlhcnlMaW5rIHByb2R1Y3RWZXJzaW9uIHByb2ZpbGVOYW1lICcgK1xuICAgICAgICAncHJvZmlsZU5hbWVzcGFjZSBwcm9maWxlTmFtZVN0ZWFtIHByb2dyZXNzTG9hZGluZ1NjcmVlbiBwcm9ncmVzc1Bvc2l0aW9uIHByb2dyZXNzU2V0UG9zaXRpb24gJyArXG4gICAgICAgICdwdWJsaWNWYXJpYWJsZSBwdWJsaWNWYXJpYWJsZUNsaWVudCBwdWJsaWNWYXJpYWJsZVNlcnZlciBwdXNoQmFjayBwdXNoQmFja1VuaXF1ZSBwdXRXZWFwb25Qb29sICcgK1xuICAgICAgICAncXVlcnlJdGVtc1Bvb2wgcXVlcnlNYWdhemluZVBvb2wgcXVlcnlXZWFwb25Qb29sIHJhZCByYWRpb0NoYW5uZWxBZGQgcmFkaW9DaGFubmVsQ3JlYXRlICcgK1xuICAgICAgICAncmFkaW9DaGFubmVsUmVtb3ZlIHJhZGlvQ2hhbm5lbFNldENhbGxTaWduIHJhZGlvQ2hhbm5lbFNldExhYmVsIHJhZGlvVm9sdW1lIHJhaW4gcmFpbmJvdyByYW5kb20gJyArXG4gICAgICAgICdyYW5rIHJhbmtJZCByYXRpbmcgcmVjdGFuZ3VsYXIgcmVnaXN0ZXJlZFRhc2tzIHJlZ2lzdGVyVGFzayByZWxvYWQgcmVsb2FkRW5hYmxlZCByZW1vdGVDb250cm9sICcgK1xuICAgICAgICAncmVtb3RlRXhlYyByZW1vdGVFeGVjQ2FsbCByZW1vdGVFeGVjdXRlZE93bmVyIHJlbW92ZTNERU5Db25uZWN0aW9uIHJlbW92ZTNERU5FdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdyZW1vdmUzREVOTGF5ZXIgcmVtb3ZlQWN0aW9uIHJlbW92ZUFsbDNERU5FdmVudEhhbmRsZXJzIHJlbW92ZUFsbEFjdGlvbnMgcmVtb3ZlQWxsQXNzaWduZWRJdGVtcyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbENvbnRhaW5lcnMgcmVtb3ZlQWxsQ3VyYXRvckFkZG9ucyByZW1vdmVBbGxDdXJhdG9yQ2FtZXJhQXJlYXMgJyArXG4gICAgICAgICdyZW1vdmVBbGxDdXJhdG9yRWRpdGluZ0FyZWFzIHJlbW92ZUFsbEV2ZW50SGFuZGxlcnMgcmVtb3ZlQWxsSGFuZGd1bkl0ZW1zIHJlbW92ZUFsbEl0ZW1zICcgK1xuICAgICAgICAncmVtb3ZlQWxsSXRlbXNXaXRoTWFnYXppbmVzIHJlbW92ZUFsbE1pc3Npb25FdmVudEhhbmRsZXJzIHJlbW92ZUFsbE1QRXZlbnRIYW5kbGVycyAnICtcbiAgICAgICAgJ3JlbW92ZUFsbE11c2ljRXZlbnRIYW5kbGVycyByZW1vdmVBbGxPd25lZE1pbmVzIHJlbW92ZUFsbFByaW1hcnlXZWFwb25JdGVtcyByZW1vdmVBbGxXZWFwb25zICcgK1xuICAgICAgICAncmVtb3ZlQmFja3BhY2sgcmVtb3ZlQmFja3BhY2tHbG9iYWwgcmVtb3ZlQ3VyYXRvckFkZG9ucyByZW1vdmVDdXJhdG9yQ2FtZXJhQXJlYSAnICtcbiAgICAgICAgJ3JlbW92ZUN1cmF0b3JFZGl0YWJsZU9iamVjdHMgcmVtb3ZlQ3VyYXRvckVkaXRpbmdBcmVhIHJlbW92ZURyYXdJY29uIHJlbW92ZURyYXdMaW5rcyAnICtcbiAgICAgICAgJ3JlbW92ZUV2ZW50SGFuZGxlciByZW1vdmVGcm9tUmVtYWluc0NvbGxlY3RvciByZW1vdmVHb2dnbGVzIHJlbW92ZUdyb3VwSWNvbiByZW1vdmVIYW5kZ3VuSXRlbSAnICtcbiAgICAgICAgJ3JlbW92ZUhlYWRnZWFyIHJlbW92ZUl0ZW0gcmVtb3ZlSXRlbUZyb21CYWNrcGFjayByZW1vdmVJdGVtRnJvbVVuaWZvcm0gcmVtb3ZlSXRlbUZyb21WZXN0ICcgK1xuICAgICAgICAncmVtb3ZlSXRlbXMgcmVtb3ZlTWFnYXppbmUgcmVtb3ZlTWFnYXppbmVHbG9iYWwgcmVtb3ZlTWFnYXppbmVzIHJlbW92ZU1hZ2F6aW5lc1R1cnJldCAnICtcbiAgICAgICAgJ3JlbW92ZU1hZ2F6aW5lVHVycmV0IHJlbW92ZU1lbnVJdGVtIHJlbW92ZU1pc3Npb25FdmVudEhhbmRsZXIgcmVtb3ZlTVBFdmVudEhhbmRsZXIgJyArXG4gICAgICAgICdyZW1vdmVNdXNpY0V2ZW50SGFuZGxlciByZW1vdmVPd25lZE1pbmUgcmVtb3ZlUHJpbWFyeVdlYXBvbkl0ZW0gcmVtb3ZlU2Vjb25kYXJ5V2VhcG9uSXRlbSAnICtcbiAgICAgICAgJ3JlbW92ZVNpbXBsZVRhc2sgcmVtb3ZlU3dpdGNoYWJsZVVuaXQgcmVtb3ZlVGVhbU1lbWJlciByZW1vdmVVbmlmb3JtIHJlbW92ZVZlc3QgcmVtb3ZlV2VhcG9uICcgK1xuICAgICAgICAncmVtb3ZlV2VhcG9uQXR0YWNobWVudENhcmdvIHJlbW92ZVdlYXBvbkNhcmdvIHJlbW92ZVdlYXBvbkdsb2JhbCByZW1vdmVXZWFwb25UdXJyZXQgJyArXG4gICAgICAgICdyZXBvcnRSZW1vdGVUYXJnZXQgcmVxdWlyZWRWZXJzaW9uIHJlc2V0Q2FtU2hha2UgcmVzZXRTdWJncm91cERpcmVjdGlvbiByZXNpemUgcmVzb3VyY2VzICcgK1xuICAgICAgICAncmVzcGF3blZlaGljbGUgcmVzdGFydEVkaXRvckNhbWVyYSByZXZlYWwgcmV2ZWFsTWluZSByZXZlcnNlIHJldmVyc2VkTW91c2VZIHJvYWRBdCAnICtcbiAgICAgICAgJ3JvYWRzQ29ubmVjdGVkVG8gcm9sZURlc2NyaXB0aW9uIHJvcGVBdHRhY2hlZE9iamVjdHMgcm9wZUF0dGFjaGVkVG8gcm9wZUF0dGFjaEVuYWJsZWQgJyArXG4gICAgICAgICdyb3BlQXR0YWNoVG8gcm9wZUNyZWF0ZSByb3BlQ3V0IHJvcGVEZXN0cm95IHJvcGVEZXRhY2ggcm9wZUVuZFBvc2l0aW9uIHJvcGVMZW5ndGggcm9wZXMgJyArXG4gICAgICAgICdyb3BlVW53aW5kIHJvcGVVbndvdW5kIHJvdG9yc0ZvcmNlc1JURCByb3RvcnNScG1SVEQgcm91bmQgcnVuSW5pdFNjcmlwdCBzYWZlWm9uZUggc2FmZVpvbmVXICcgK1xuICAgICAgICAnc2FmZVpvbmVXQWJzIHNhZmVab25lWCBzYWZlWm9uZVhBYnMgc2FmZVpvbmVZIHNhdmUzREVOSW52ZW50b3J5IHNhdmVHYW1lIHNhdmVJZGVudGl0eSAnICtcbiAgICAgICAgJ3NhdmVKb3lzdGlja3Mgc2F2ZU92ZXJsYXkgc2F2ZVByb2ZpbGVOYW1lc3BhY2Ugc2F2ZVN0YXR1cyBzYXZlVmFyIHNhdmluZ0VuYWJsZWQgc2F5IHNheTJEIHNheTNEICcgK1xuICAgICAgICAnc2NvcGVOYW1lIHNjb3JlIHNjb3JlU2lkZSBzY3JlZW5zaG90IHNjcmVlblRvV29ybGQgc2NyaXB0RG9uZSBzY3JpcHROYW1lIHNjdWRTdGF0ZSAnICtcbiAgICAgICAgJ3NlY29uZGFyeVdlYXBvbiBzZWNvbmRhcnlXZWFwb25JdGVtcyBzZWNvbmRhcnlXZWFwb25NYWdhemluZSBzZWxlY3Qgc2VsZWN0QmVzdFBsYWNlcyAnICtcbiAgICAgICAgJ3NlbGVjdERpYXJ5U3ViamVjdCBzZWxlY3RlZEVkaXRvck9iamVjdHMgc2VsZWN0RWRpdG9yT2JqZWN0IHNlbGVjdGlvbk5hbWVzIHNlbGVjdGlvblBvc2l0aW9uICcgK1xuICAgICAgICAnc2VsZWN0TGVhZGVyIHNlbGVjdE1heCBzZWxlY3RNaW4gc2VsZWN0Tm9QbGF5ZXIgc2VsZWN0UGxheWVyIHNlbGVjdFJhbmRvbSBzZWxlY3RSYW5kb21XZWlnaHRlZCAnICtcbiAgICAgICAgJ3NlbGVjdFdlYXBvbiBzZWxlY3RXZWFwb25UdXJyZXQgc2VuZEFVTWVzc2FnZSBzZW5kU2ltcGxlQ29tbWFuZCBzZW5kVGFzayBzZW5kVGFza1Jlc3VsdCAnICtcbiAgICAgICAgJ3NlbmRVRFBNZXNzYWdlIHNlcnZlckNvbW1hbmQgc2VydmVyQ29tbWFuZEF2YWlsYWJsZSBzZXJ2ZXJDb21tYW5kRXhlY3V0YWJsZSBzZXJ2ZXJOYW1lIHNlcnZlclRpbWUgJyArXG4gICAgICAgICdzZXQgc2V0M0RFTkF0dHJpYnV0ZSBzZXQzREVOQXR0cmlidXRlcyBzZXQzREVOR3JpZCBzZXQzREVOSWNvbnNWaXNpYmxlIHNldDNERU5MYXllciAnICtcbiAgICAgICAgJ3NldDNERU5MaW5lc1Zpc2libGUgc2V0M0RFTkxvZ2ljVHlwZSBzZXQzREVOTWlzc2lvbkF0dHJpYnV0ZSBzZXQzREVOTWlzc2lvbkF0dHJpYnV0ZXMgJyArXG4gICAgICAgICdzZXQzREVOTW9kZWxzVmlzaWJsZSBzZXQzREVOT2JqZWN0VHlwZSBzZXQzREVOU2VsZWN0ZWQgc2V0QWNjVGltZSBzZXRBY3R1YWxDb2xsZWN0aXZlUlREICcgK1xuICAgICAgICAnc2V0QWlycGxhbmVUaHJvdHRsZSBzZXRBaXJwb3J0U2lkZSBzZXRBbW1vIHNldEFtbW9DYXJnbyBzZXRBbW1vT25QeWxvbiBzZXRBbmltU3BlZWRDb2VmICcgK1xuICAgICAgICAnc2V0QXBlcnR1cmUgc2V0QXBlcnR1cmVOZXcgc2V0QXJtb3J5UG9pbnRzIHNldEF0dHJpYnV0ZXMgc2V0QXV0b25vbW91cyBzZXRCZWhhdmlvdXIgJyArXG4gICAgICAgICdzZXRCbGVlZGluZ1JlbWFpbmluZyBzZXRCcmFrZXNSVEQgc2V0Q2FtZXJhSW50ZXJlc3Qgc2V0Q2FtU2hha2VEZWZQYXJhbXMgc2V0Q2FtU2hha2VQYXJhbXMgJyArXG4gICAgICAgICdzZXRDYW1Vc2VUSSBzZXRDYXB0aXZlIHNldENlbnRlck9mTWFzcyBzZXRDb2xsaXNpb25MaWdodCBzZXRDb21iYXRNb2RlIHNldENvbXBhc3NPc2NpbGxhdGlvbiAnICtcbiAgICAgICAgJ3NldENvbnZveVNlcGFyYXRpb24gc2V0Q3VyYXRvckNhbWVyYUFyZWFDZWlsaW5nIHNldEN1cmF0b3JDb2VmIHNldEN1cmF0b3JFZGl0aW5nQXJlYVR5cGUgJyArXG4gICAgICAgICdzZXRDdXJhdG9yV2F5cG9pbnRDb3N0IHNldEN1cnJlbnRDaGFubmVsIHNldEN1cnJlbnRUYXNrIHNldEN1cnJlbnRXYXlwb2ludCBzZXRDdXN0b21BaW1Db2VmICcgK1xuICAgICAgICAnc2V0Q3VzdG9tV2VpZ2h0UlREIHNldERhbWFnZSBzZXREYW1tYWdlIHNldERhdGUgc2V0RGVicmllZmluZ1RleHQgc2V0RGVmYXVsdENhbWVyYSBzZXREZXN0aW5hdGlvbiAnICtcbiAgICAgICAgJ3NldERldGFpbE1hcEJsZW5kUGFycyBzZXREaXIgc2V0RGlyZWN0aW9uIHNldERyYXdJY29uIHNldERyaXZlT25QYXRoIHNldERyb3BJbnRlcnZhbCAnICtcbiAgICAgICAgJ3NldER5bmFtaWNTaW11bGF0aW9uRGlzdGFuY2Ugc2V0RHluYW1pY1NpbXVsYXRpb25EaXN0YW5jZUNvZWYgc2V0RWRpdG9yTW9kZSBzZXRFZGl0b3JPYmplY3RTY29wZSAnICtcbiAgICAgICAgJ3NldEVmZmVjdENvbmRpdGlvbiBzZXRFbmdpbmVSUE1SVEQgc2V0RmFjZSBzZXRGYWNlQW5pbWF0aW9uIHNldEZhdGlndWUgc2V0RmVhdHVyZVR5cGUgJyArXG4gICAgICAgICdzZXRGbGFnQW5pbWF0aW9uUGhhc2Ugc2V0RmxhZ093bmVyIHNldEZsYWdTaWRlIHNldEZsYWdUZXh0dXJlIHNldEZvZyBzZXRGb3JtYXRpb24gJyArXG4gICAgICAgICdzZXRGb3JtYXRpb25UYXNrIHNldEZvcm1EaXIgc2V0RnJpZW5kIHNldEZyb21FZGl0b3Igc2V0RlNNVmFyaWFibGUgc2V0RnVlbCBzZXRGdWVsQ2FyZ28gJyArXG4gICAgICAgICdzZXRHcm91cEljb24gc2V0R3JvdXBJY29uUGFyYW1zIHNldEdyb3VwSWNvbnNTZWxlY3RhYmxlIHNldEdyb3VwSWNvbnNWaXNpYmxlIHNldEdyb3VwSWQgJyArXG4gICAgICAgICdzZXRHcm91cElkR2xvYmFsIHNldEdyb3VwT3duZXIgc2V0R3VzdHMgc2V0SGlkZUJlaGluZCBzZXRIaXQgc2V0SGl0SW5kZXggc2V0SGl0UG9pbnREYW1hZ2UgJyArXG4gICAgICAgICdzZXRIb3Jpem9uUGFyYWxsYXhDb2VmIHNldEhVRE1vdmVtZW50TGV2ZWxzIHNldElkZW50aXR5IHNldEltcG9ydGFuY2Ugc2V0SW5mb1BhbmVsIHNldExlYWRlciAnICtcbiAgICAgICAgJ3NldExpZ2h0QW1iaWVudCBzZXRMaWdodEF0dGVudWF0aW9uIHNldExpZ2h0QnJpZ2h0bmVzcyBzZXRMaWdodENvbG9yIHNldExpZ2h0RGF5TGlnaHQgJyArXG4gICAgICAgICdzZXRMaWdodEZsYXJlTWF4RGlzdGFuY2Ugc2V0TGlnaHRGbGFyZVNpemUgc2V0TGlnaHRJbnRlbnNpdHkgc2V0TGlnaHRuaW5ncyBzZXRMaWdodFVzZUZsYXJlICcgK1xuICAgICAgICAnc2V0TG9jYWxXaW5kUGFyYW1zIHNldE1hZ2F6aW5lVHVycmV0QW1tbyBzZXRNYXJrZXJBbHBoYSBzZXRNYXJrZXJBbHBoYUxvY2FsIHNldE1hcmtlckJydXNoICcgK1xuICAgICAgICAnc2V0TWFya2VyQnJ1c2hMb2NhbCBzZXRNYXJrZXJDb2xvciBzZXRNYXJrZXJDb2xvckxvY2FsIHNldE1hcmtlckRpciBzZXRNYXJrZXJEaXJMb2NhbCAnICtcbiAgICAgICAgJ3NldE1hcmtlclBvcyBzZXRNYXJrZXJQb3NMb2NhbCBzZXRNYXJrZXJTaGFwZSBzZXRNYXJrZXJTaGFwZUxvY2FsIHNldE1hcmtlclNpemUgJyArXG4gICAgICAgICdzZXRNYXJrZXJTaXplTG9jYWwgc2V0TWFya2VyVGV4dCBzZXRNYXJrZXJUZXh0TG9jYWwgc2V0TWFya2VyVHlwZSBzZXRNYXJrZXJUeXBlTG9jYWwgc2V0TWFzcyAnICtcbiAgICAgICAgJ3NldE1pbWljIHNldE1vdXNlUG9zaXRpb24gc2V0TXVzaWNFZmZlY3Qgc2V0TXVzaWNFdmVudEhhbmRsZXIgc2V0TmFtZSBzZXROYW1lU291bmQgJyArXG4gICAgICAgICdzZXRPYmplY3RBcmd1bWVudHMgc2V0T2JqZWN0TWF0ZXJpYWwgc2V0T2JqZWN0TWF0ZXJpYWxHbG9iYWwgc2V0T2JqZWN0UHJveHkgc2V0T2JqZWN0VGV4dHVyZSAnICtcbiAgICAgICAgJ3NldE9iamVjdFRleHR1cmVHbG9iYWwgc2V0T2JqZWN0Vmlld0Rpc3RhbmNlIHNldE92ZXJjYXN0IHNldE93bmVyIHNldE94eWdlblJlbWFpbmluZyAnICtcbiAgICAgICAgJ3NldFBhcnRpY2xlQ2lyY2xlIHNldFBhcnRpY2xlQ2xhc3Mgc2V0UGFydGljbGVGaXJlIHNldFBhcnRpY2xlUGFyYW1zIHNldFBhcnRpY2xlUmFuZG9tICcgK1xuICAgICAgICAnc2V0UGlsb3RDYW1lcmFEaXJlY3Rpb24gc2V0UGlsb3RDYW1lcmFSb3RhdGlvbiBzZXRQaWxvdENhbWVyYVRhcmdldCBzZXRQaWxvdExpZ2h0IHNldFBpUEVmZmVjdCAnICtcbiAgICAgICAgJ3NldFBpdGNoIHNldFBsYXRlTnVtYmVyIHNldFBsYXlhYmxlIHNldFBsYXllclJlc3Bhd25UaW1lIHNldFBvcyBzZXRQb3NBU0wgc2V0UG9zQVNMMiBzZXRQb3NBU0xXICcgK1xuICAgICAgICAnc2V0UG9zQVRMIHNldFBvc2l0aW9uIHNldFBvc1dvcmxkIHNldFB5bG9uTG9hZE91dCBzZXRQeWxvbnNQcmlvcml0eSBzZXRSYWRpb01zZyBzZXRSYWluICcgK1xuICAgICAgICAnc2V0UmFpbmJvdyBzZXRSYW5kb21MaXAgc2V0UmFuayBzZXRSZWN0YW5ndWxhciBzZXRSZXBhaXJDYXJnbyBzZXRSb3RvckJyYWtlUlREIHNldFNoYWRvd0Rpc3RhbmNlICcgK1xuICAgICAgICAnc2V0U2hvdFBhcmVudHMgc2V0U2lkZSBzZXRTaW1wbGVUYXNrQWx3YXlzVmlzaWJsZSBzZXRTaW1wbGVUYXNrQ3VzdG9tRGF0YSAnICtcbiAgICAgICAgJ3NldFNpbXBsZVRhc2tEZXNjcmlwdGlvbiBzZXRTaW1wbGVUYXNrRGVzdGluYXRpb24gc2V0U2ltcGxlVGFza1RhcmdldCBzZXRTaW1wbGVUYXNrVHlwZSAnICtcbiAgICAgICAgJ3NldFNpbXVsV2VhdGhlckxheWVycyBzZXRTaXplIHNldFNraWxsIHNldFNsaW5nTG9hZCBzZXRTb3VuZEVmZmVjdCBzZXRTcGVha2VyIHNldFNwZWVjaCAnICtcbiAgICAgICAgJ3NldFNwZWVkTW9kZSBzZXRTdGFtaW5hIHNldFN0YW1pbmFTY2hlbWUgc2V0U3RhdFZhbHVlIHNldFN1cHByZXNzaW9uIHNldFN5c3RlbU9mVW5pdHMgJyArXG4gICAgICAgICdzZXRUYXJnZXRBZ2Ugc2V0VGFza01hcmtlck9mZnNldCBzZXRUYXNrUmVzdWx0IHNldFRhc2tTdGF0ZSBzZXRUZXJyYWluR3JpZCBzZXRUZXh0ICcgK1xuICAgICAgICAnc2V0VGltZU11bHRpcGxpZXIgc2V0VGl0bGVFZmZlY3Qgc2V0VHJhZmZpY0RlbnNpdHkgc2V0VHJhZmZpY0Rpc3RhbmNlIHNldFRyYWZmaWNHYXAgJyArXG4gICAgICAgICdzZXRUcmFmZmljU3BlZWQgc2V0VHJpZ2dlckFjdGl2YXRpb24gc2V0VHJpZ2dlckFyZWEgc2V0VHJpZ2dlclN0YXRlbWVudHMgc2V0VHJpZ2dlclRleHQgJyArXG4gICAgICAgICdzZXRUcmlnZ2VyVGltZW91dCBzZXRUcmlnZ2VyVHlwZSBzZXRUeXBlIHNldFVuY29uc2Npb3VzIHNldFVuaXRBYmlsaXR5IHNldFVuaXRMb2Fkb3V0IHNldFVuaXRQb3MgJyArXG4gICAgICAgICdzZXRVbml0UG9zV2VhayBzZXRVbml0UmFuayBzZXRVbml0UmVjb2lsQ29lZmZpY2llbnQgc2V0VW5pdFRyYWl0IHNldFVubG9hZEluQ29tYmF0ICcgK1xuICAgICAgICAnc2V0VXNlckFjdGlvblRleHQgc2V0VXNlck1GRFRleHQgc2V0VXNlck1GRHZhbHVlIHNldFZhcmlhYmxlIHNldFZlY3RvckRpciBzZXRWZWN0b3JEaXJBbmRVcCAnICtcbiAgICAgICAgJ3NldFZlY3RvclVwIHNldFZlaGljbGVBbW1vIHNldFZlaGljbGVBbW1vRGVmIHNldFZlaGljbGVBcm1vciBzZXRWZWhpY2xlQ2FyZ28gc2V0VmVoaWNsZUlkICcgK1xuICAgICAgICAnc2V0VmVoaWNsZUxvY2sgc2V0VmVoaWNsZVBvc2l0aW9uIHNldFZlaGljbGVSYWRhciBzZXRWZWhpY2xlUmVjZWl2ZVJlbW90ZVRhcmdldHMgJyArXG4gICAgICAgICdzZXRWZWhpY2xlUmVwb3J0T3duUG9zaXRpb24gc2V0VmVoaWNsZVJlcG9ydFJlbW90ZVRhcmdldHMgc2V0VmVoaWNsZVRJUGFycyBzZXRWZWhpY2xlVmFyTmFtZSAnICtcbiAgICAgICAgJ3NldFZlbG9jaXR5IHNldFZlbG9jaXR5TW9kZWxTcGFjZSBzZXRWZWxvY2l0eVRyYW5zZm9ybWF0aW9uIHNldFZpZXdEaXN0YW5jZSAnICtcbiAgICAgICAgJ3NldFZpc2libGVJZlRyZWVDb2xsYXBzZWQgc2V0V2FudGVkUlBNUlREIHNldFdhdmVzIHNldFdheXBvaW50QmVoYXZpb3VyIHNldFdheXBvaW50Q29tYmF0TW9kZSAnICtcbiAgICAgICAgJ3NldFdheXBvaW50Q29tcGxldGlvblJhZGl1cyBzZXRXYXlwb2ludERlc2NyaXB0aW9uIHNldFdheXBvaW50Rm9yY2VCZWhhdmlvdXIgc2V0V2F5cG9pbnRGb3JtYXRpb24gJyArXG4gICAgICAgICdzZXRXYXlwb2ludEhvdXNlUG9zaXRpb24gc2V0V2F5cG9pbnRMb2l0ZXJSYWRpdXMgc2V0V2F5cG9pbnRMb2l0ZXJUeXBlIHNldFdheXBvaW50TmFtZSAnICtcbiAgICAgICAgJ3NldFdheXBvaW50UG9zaXRpb24gc2V0V2F5cG9pbnRTY3JpcHQgc2V0V2F5cG9pbnRTcGVlZCBzZXRXYXlwb2ludFN0YXRlbWVudHMgc2V0V2F5cG9pbnRUaW1lb3V0ICcgK1xuICAgICAgICAnc2V0V2F5cG9pbnRUeXBlIHNldFdheXBvaW50VmlzaWJsZSBzZXRXZWFwb25SZWxvYWRpbmdUaW1lIHNldFdpbmQgc2V0V2luZERpciBzZXRXaW5kRm9yY2UgJyArXG4gICAgICAgICdzZXRXaW5kU3RyIHNldFdpbmdGb3JjZVNjYWxlUlREIHNldFdQUG9zIHNob3czREljb25zIHNob3dDaGF0IHNob3dDaW5lbWFCb3JkZXIgc2hvd0NvbW1hbmRpbmdNZW51ICcgK1xuICAgICAgICAnc2hvd0NvbXBhc3Mgc2hvd0N1cmF0b3JDb21wYXNzIHNob3dHUFMgc2hvd0hVRCBzaG93TGVnZW5kIHNob3dNYXAgc2hvd25BcnRpbGxlcnlDb21wdXRlciAnICtcbiAgICAgICAgJ3Nob3duQ2hhdCBzaG93bkNvbXBhc3Mgc2hvd25DdXJhdG9yQ29tcGFzcyBzaG93TmV3RWRpdG9yT2JqZWN0IHNob3duR1BTIHNob3duSFVEIHNob3duTWFwICcgK1xuICAgICAgICAnc2hvd25QYWQgc2hvd25SYWRpbyBzaG93blNjb3JldGFibGUgc2hvd25VQVZGZWVkIHNob3duV2FycmFudCBzaG93bldhdGNoIHNob3dQYWQgc2hvd1JhZGlvICcgK1xuICAgICAgICAnc2hvd1Njb3JldGFibGUgc2hvd1N1YnRpdGxlcyBzaG93VUFWRmVlZCBzaG93V2FycmFudCBzaG93V2F0Y2ggc2hvd1dheXBvaW50IHNob3dXYXlwb2ludHMgc2lkZSAnICtcbiAgICAgICAgJ3NpZGVDaGF0IHNpZGVFbmVteSBzaWRlRnJpZW5kbHkgc2lkZVJhZGlvIHNpbXBsZVRhc2tzIHNpbXVsYXRpb25FbmFibGVkIHNpbXVsQ2xvdWREZW5zaXR5ICcgK1xuICAgICAgICAnc2ltdWxDbG91ZE9jY2x1c2lvbiBzaW11bEluQ2xvdWRzIHNpbXVsV2VhdGhlclN5bmMgc2luIHNpemUgc2l6ZU9mIHNraWxsIHNraWxsRmluYWwgc2tpcFRpbWUgJyArXG4gICAgICAgICdzbGVlcCBzbGlkZXJQb3NpdGlvbiBzbGlkZXJSYW5nZSBzbGlkZXJTZXRQb3NpdGlvbiBzbGlkZXJTZXRSYW5nZSBzbGlkZXJTZXRTcGVlZCBzbGlkZXJTcGVlZCAnICtcbiAgICAgICAgJ3NsaW5nTG9hZEFzc2lzdGFudFNob3duIHNvbGRpZXJNYWdhemluZXMgc29tZUFtbW8gc29ydCBzb3VuZFZvbHVtZSBzcGF3biBzcGVha2VyIHNwZWVkIHNwZWVkTW9kZSAnICtcbiAgICAgICAgJ3NwbGl0U3RyaW5nIHNxcnQgc3F1YWRQYXJhbXMgc3RhbmNlIHN0YXJ0TG9hZGluZ1NjcmVlbiBzdGVwIHN0b3Agc3RvcEVuZ2luZVJURCBzdG9wcGVkIHN0ciAnICtcbiAgICAgICAgJ3N1bk9yTW9vbiBzdXBwb3J0SW5mbyBzdXBwcmVzc0ZvciBzdXJmYWNlSXNXYXRlciBzdXJmYWNlTm9ybWFsIHN1cmZhY2VUeXBlIHN3aW1JbkRlcHRoICcgK1xuICAgICAgICAnc3dpdGNoYWJsZVVuaXRzIHN3aXRjaEFjdGlvbiBzd2l0Y2hDYW1lcmEgc3dpdGNoR2VzdHVyZSBzd2l0Y2hMaWdodCBzd2l0Y2hNb3ZlICcgK1xuICAgICAgICAnc3luY2hyb25pemVkT2JqZWN0cyBzeW5jaHJvbml6ZWRUcmlnZ2VycyBzeW5jaHJvbml6ZWRXYXlwb2ludHMgc3luY2hyb25pemVPYmplY3RzQWRkICcgK1xuICAgICAgICAnc3luY2hyb25pemVPYmplY3RzUmVtb3ZlIHN5bmNocm9uaXplVHJpZ2dlciBzeW5jaHJvbml6ZVdheXBvaW50IHN5c3RlbUNoYXQgc3lzdGVtT2ZVbml0cyB0YW4gJyArXG4gICAgICAgICd0YXJnZXRLbm93bGVkZ2UgdGFyZ2V0cyB0YXJnZXRzQWdncmVnYXRlIHRhcmdldHNRdWVyeSB0YXNrQWx3YXlzVmlzaWJsZSB0YXNrQ2hpbGRyZW4gJyArXG4gICAgICAgICd0YXNrQ29tcGxldGVkIHRhc2tDdXN0b21EYXRhIHRhc2tEZXNjcmlwdGlvbiB0YXNrRGVzdGluYXRpb24gdGFza0hpbnQgdGFza01hcmtlck9mZnNldCB0YXNrUGFyZW50ICcgK1xuICAgICAgICAndGFza1Jlc3VsdCB0YXNrU3RhdGUgdGFza1R5cGUgdGVhbU1lbWJlciB0ZWFtTmFtZSB0ZWFtcyB0ZWFtU3dpdGNoIHRlYW1Td2l0Y2hFbmFibGVkIHRlYW1UeXBlICcgK1xuICAgICAgICAndGVybWluYXRlIHRlcnJhaW5JbnRlcnNlY3QgdGVycmFpbkludGVyc2VjdEFTTCB0ZXJyYWluSW50ZXJzZWN0QXRBU0wgdGV4dCB0ZXh0TG9nIHRleHRMb2dGb3JtYXQgJyArXG4gICAgICAgICd0ZyB0aW1lIHRpbWVNdWx0aXBsaWVyIHRpdGxlQ3V0IHRpdGxlRmFkZU91dCB0aXRsZU9iaiB0aXRsZVJzYyB0aXRsZVRleHQgdG9BcnJheSB0b0ZpeGVkIHRvTG93ZXIgJyArXG4gICAgICAgICd0b1N0cmluZyB0b1VwcGVyIHRyaWdnZXJBY3RpdmF0ZWQgdHJpZ2dlckFjdGl2YXRpb24gdHJpZ2dlckFyZWEgdHJpZ2dlckF0dGFjaGVkVmVoaWNsZSAnICtcbiAgICAgICAgJ3RyaWdnZXJBdHRhY2hPYmplY3QgdHJpZ2dlckF0dGFjaFZlaGljbGUgdHJpZ2dlckR5bmFtaWNTaW11bGF0aW9uIHRyaWdnZXJTdGF0ZW1lbnRzIHRyaWdnZXJUZXh0ICcgK1xuICAgICAgICAndHJpZ2dlclRpbWVvdXQgdHJpZ2dlclRpbWVvdXRDdXJyZW50IHRyaWdnZXJUeXBlIHR1cnJldExvY2FsIHR1cnJldE93bmVyIHR1cnJldFVuaXQgdHZBZGQgdHZDbGVhciAnICtcbiAgICAgICAgJ3R2Q29sbGFwc2UgdHZDb2xsYXBzZUFsbCB0dkNvdW50IHR2Q3VyU2VsIHR2RGF0YSB0dkRlbGV0ZSB0dkV4cGFuZCB0dkV4cGFuZEFsbCB0dlBpY3R1cmUgJyArXG4gICAgICAgICd0dlNldENvbG9yIHR2U2V0Q3VyU2VsIHR2U2V0RGF0YSB0dlNldFBpY3R1cmUgdHZTZXRQaWN0dXJlQ29sb3IgdHZTZXRQaWN0dXJlQ29sb3JEaXNhYmxlZCAnICtcbiAgICAgICAgJ3R2U2V0UGljdHVyZUNvbG9yU2VsZWN0ZWQgdHZTZXRQaWN0dXJlUmlnaHQgdHZTZXRQaWN0dXJlUmlnaHRDb2xvciB0dlNldFBpY3R1cmVSaWdodENvbG9yRGlzYWJsZWQgJyArXG4gICAgICAgICd0dlNldFBpY3R1cmVSaWdodENvbG9yU2VsZWN0ZWQgdHZTZXRUZXh0IHR2U2V0VG9vbHRpcCB0dlNldFZhbHVlIHR2U29ydCB0dlNvcnRCeVZhbHVlIHR2VGV4dCAnICtcbiAgICAgICAgJ3R2VG9vbHRpcCB0dlZhbHVlIHR5cGUgdHlwZU5hbWUgdHlwZU9mIFVBVkNvbnRyb2wgdWlOYW1lc3BhY2UgdWlTbGVlcCB1bmFzc2lnbkN1cmF0b3IgJyArXG4gICAgICAgICd1bmFzc2lnbkl0ZW0gdW5hc3NpZ25UZWFtIHVuYXNzaWduVmVoaWNsZSB1bmRlcndhdGVyIHVuaWZvcm0gdW5pZm9ybUNvbnRhaW5lciB1bmlmb3JtSXRlbXMgJyArXG4gICAgICAgICd1bmlmb3JtTWFnYXppbmVzIHVuaXRBZGRvbnMgdW5pdEFpbVBvc2l0aW9uIHVuaXRBaW1Qb3NpdGlvblZpc3VhbCB1bml0QmFja3BhY2sgdW5pdElzVUFWIHVuaXRQb3MgJyArXG4gICAgICAgICd1bml0UmVhZHkgdW5pdFJlY29pbENvZWZmaWNpZW50IHVuaXRzIHVuaXRzQmVsb3dIZWlnaHQgdW5saW5rSXRlbSB1bmxvY2tBY2hpZXZlbWVudCAnICtcbiAgICAgICAgJ3VucmVnaXN0ZXJUYXNrIHVwZGF0ZURyYXdJY29uIHVwZGF0ZU1lbnVJdGVtIHVwZGF0ZU9iamVjdFRyZWUgdXNlQUlTdGVlcmluZ0NvbXBvbmVudCAnICtcbiAgICAgICAgJ3VzZUF1ZGlvVGltZUZvck1vdmVzIHVzZXJJbnB1dERpc2FibGVkIHZlY3RvckFkZCB2ZWN0b3JDb3MgdmVjdG9yQ3Jvc3NQcm9kdWN0IHZlY3RvckRpZmYgJyArXG4gICAgICAgICd2ZWN0b3JEaXIgdmVjdG9yRGlyVmlzdWFsIHZlY3RvckRpc3RhbmNlIHZlY3RvckRpc3RhbmNlU3FyIHZlY3RvckRvdFByb2R1Y3QgdmVjdG9yRnJvbVRvICcgK1xuICAgICAgICAndmVjdG9yTWFnbml0dWRlIHZlY3Rvck1hZ25pdHVkZVNxciB2ZWN0b3JNb2RlbFRvV29ybGQgdmVjdG9yTW9kZWxUb1dvcmxkVmlzdWFsIHZlY3Rvck11bHRpcGx5ICcgK1xuICAgICAgICAndmVjdG9yTm9ybWFsaXplZCB2ZWN0b3JVcCB2ZWN0b3JVcFZpc3VhbCB2ZWN0b3JXb3JsZFRvTW9kZWwgdmVjdG9yV29ybGRUb01vZGVsVmlzdWFsIHZlaGljbGUgJyArXG4gICAgICAgICd2ZWhpY2xlQ2FyZ29FbmFibGVkIHZlaGljbGVDaGF0IHZlaGljbGVSYWRpbyB2ZWhpY2xlUmVjZWl2ZVJlbW90ZVRhcmdldHMgdmVoaWNsZVJlcG9ydE93blBvc2l0aW9uICcgK1xuICAgICAgICAndmVoaWNsZVJlcG9ydFJlbW90ZVRhcmdldHMgdmVoaWNsZXMgdmVoaWNsZVZhck5hbWUgdmVsb2NpdHkgdmVsb2NpdHlNb2RlbFNwYWNlIHZlcmlmeVNpZ25hdHVyZSAnICtcbiAgICAgICAgJ3Zlc3QgdmVzdENvbnRhaW5lciB2ZXN0SXRlbXMgdmVzdE1hZ2F6aW5lcyB2aWV3RGlzdGFuY2UgdmlzaWJsZUNvbXBhc3MgdmlzaWJsZUdQUyB2aXNpYmxlTWFwICcgK1xuICAgICAgICAndmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkFTTCB2aXNpYmxlU2NvcmV0YWJsZSB2aXNpYmxlV2F0Y2ggd2F2ZXMgd2F5cG9pbnRBdHRhY2hlZE9iamVjdCAnICtcbiAgICAgICAgJ3dheXBvaW50QXR0YWNoZWRWZWhpY2xlIHdheXBvaW50QXR0YWNoT2JqZWN0IHdheXBvaW50QXR0YWNoVmVoaWNsZSB3YXlwb2ludEJlaGF2aW91ciAnICtcbiAgICAgICAgJ3dheXBvaW50Q29tYmF0TW9kZSB3YXlwb2ludENvbXBsZXRpb25SYWRpdXMgd2F5cG9pbnREZXNjcmlwdGlvbiB3YXlwb2ludEZvcmNlQmVoYXZpb3VyICcgK1xuICAgICAgICAnd2F5cG9pbnRGb3JtYXRpb24gd2F5cG9pbnRIb3VzZVBvc2l0aW9uIHdheXBvaW50TG9pdGVyUmFkaXVzIHdheXBvaW50TG9pdGVyVHlwZSB3YXlwb2ludE5hbWUgJyArXG4gICAgICAgICd3YXlwb2ludFBvc2l0aW9uIHdheXBvaW50cyB3YXlwb2ludFNjcmlwdCB3YXlwb2ludHNFbmFibGVkVUFWIHdheXBvaW50U2hvdyB3YXlwb2ludFNwZWVkICcgK1xuICAgICAgICAnd2F5cG9pbnRTdGF0ZW1lbnRzIHdheXBvaW50VGltZW91dCB3YXlwb2ludFRpbWVvdXRDdXJyZW50IHdheXBvaW50VHlwZSB3YXlwb2ludFZpc2libGUgJyArXG4gICAgICAgICd3ZWFwb25BY2Nlc3NvcmllcyB3ZWFwb25BY2Nlc3Nvcmllc0NhcmdvIHdlYXBvbkNhcmdvIHdlYXBvbkRpcmVjdGlvbiB3ZWFwb25JbmVydGlhIHdlYXBvbkxvd2VyZWQgJyArXG4gICAgICAgICd3ZWFwb25zIHdlYXBvbnNJdGVtcyB3ZWFwb25zSXRlbXNDYXJnbyB3ZWFwb25TdGF0ZSB3ZWFwb25zVHVycmV0IHdlaWdodFJURCBXRlNpZGVUZXh0IHdpbmQgJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdibHVmb3IgY2l2aWxpYW4gY29uZmlnTnVsbCBjb250cm9sTnVsbCBkaXNwbGF5TnVsbCBlYXN0IGVuZGwgZmFsc2UgZ3JwTnVsbCBpbmRlcGVuZGVudCBsaW5lQnJlYWsgJyArXG4gICAgICAgICdsb2NhdGlvbk51bGwgbmlsIG9iak51bGwgb3Bmb3IgcGkgcmVzaXN0YW5jZSBzY3JpcHROdWxsIHNpZGVBbWJpZW50TGlmZSBzaWRlRW1wdHkgc2lkZUxvZ2ljICcgK1xuICAgICAgICAnc2lkZVVua25vd24gdGFza051bGwgdGVhbU1lbWJlck51bGwgdHJ1ZSB3ZXN0JyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRlVOQ1RJT04sXG4gICAgICBTVFJJTkdTLFxuICAgICAgUFJFUFJPQ0VTU09SXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvI3xeXFwkIC9cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy0tJywgJyQnKTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6IC9bPD57fSpdLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOlxuICAgICAgICAgICdiZWdpbiBlbmQgc3RhcnQgY29tbWl0IHJvbGxiYWNrIHNhdmVwb2ludCBsb2NrIGFsdGVyIGNyZWF0ZSBkcm9wIHJlbmFtZSBjYWxsICcgK1xuICAgICAgICAgICdkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50ICcgK1xuICAgICAgICAgICdtZXJnZSBkZXNjcmliZSB1c2UgZXhwbGFpbiBoZWxwIGRlY2xhcmUgcHJlcGFyZSBleGVjdXRlIGRlYWxsb2NhdGUgcmVsZWFzZSAnICtcbiAgICAgICAgICAndW5sb2NrIHB1cmdlIHJlc2V0IGNoYW5nZSBzdG9wIGFuYWx5emUgY2FjaGUgZmx1c2ggb3B0aW1pemUgcmVwYWlyIGtpbGwgJyArXG4gICAgICAgICAgJ2luc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IHZhbHVlcyB3aXRoJyxcbiAgICAgICAgZW5kOiAvOy8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBsZXhlbWVzOiAvW1xcd1xcLl0rLyxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgJ2FzIGFib3J0IGFicyBhYnNvbHV0ZSBhY2MgYWNjZSBhY2NlcCBhY2NlcHQgYWNjZXNzIGFjY2Vzc2VkIGFjY2Vzc2libGUgYWNjb3VudCBhY29zIGFjdGlvbiBhY3RpdmF0ZSBhZGQgJyArXG4gICAgICAgICAgICAnYWRkdGltZSBhZG1pbiBhZG1pbmlzdGVyIGFkdmFuY2VkIGFkdmlzZSBhZXNfZGVjcnlwdCBhZXNfZW5jcnlwdCBhZnRlciBhZ2VudCBhZ2dyZWdhdGUgYWxpIGFsaWEgYWxpYXMgJyArXG4gICAgICAgICAgICAnYWxsIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW50aSBhbnkgYW55ZGF0YSBhbnlkYXRhc2V0IGFueXNjaGVtYSBhbnl0eXBlIGFwcGx5ICcgK1xuICAgICAgICAgICAgJ2FyY2hpdmUgYXJjaGl2ZWQgYXJjaGl2ZWxvZyBhcmUgYXMgYXNjIGFzY2lpIGFzaW4gYXNzZW1ibHkgYXNzZXJ0aW9uIGFzc29jaWF0ZSBhc3luY2hyb25vdXMgYXQgYXRhbiAnICtcbiAgICAgICAgICAgICdhdG4yIGF0dHIgYXR0cmkgYXR0cmliIGF0dHJpYnUgYXR0cmlidXQgYXR0cmlidXRlIGF0dHJpYnV0ZXMgYXVkaXQgYXV0aGVudGljYXRlZCBhdXRoZW50aWNhdGlvbiBhdXRoaWQgJyArXG4gICAgICAgICAgICAnYXV0aG9ycyBhdXRvIGF1dG9hbGxvY2F0ZSBhdXRvZGJsaW5rIGF1dG9leHRlbmQgYXV0b21hdGljIGF2YWlsYWJpbGl0eSBhdmcgYmFja3VwIGJhZGZpbGUgYmFzaWNmaWxlICcgK1xuICAgICAgICAgICAgJ2JlZm9yZSBiZWdpbiBiZWdpbm5pbmcgYmVuY2htYXJrIGJldHdlZW4gYmZpbGUgYmZpbGVfYmFzZSBiaWcgYmlnZmlsZSBiaW4gYmluYXJ5X2RvdWJsZSBiaW5hcnlfZmxvYXQgJyArXG4gICAgICAgICAgICAnYmlubG9nIGJpdF9hbmQgYml0X2NvdW50IGJpdF9sZW5ndGggYml0X29yIGJpdF94b3IgYml0bWFwIGJsb2JfYmFzZSBibG9jayBibG9ja3NpemUgYm9keSBib3RoIGJvdW5kICcgK1xuICAgICAgICAgICAgJ2J1Y2tldCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsICcgK1xuICAgICAgICAgICAgJ2NhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSAnICtcbiAgICAgICAgICAgICdjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayAnICtcbiAgICAgICAgICAgICdjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSAnICtcbiAgICAgICAgICAgICdjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uICcgK1xuICAgICAgICAgICAgJ2NvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSAnICtcbiAgICAgICAgICAgICdjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uICcgK1xuICAgICAgICAgICAgJ2Nvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gJyArXG4gICAgICAgICAgICAnY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgJyArXG4gICAgICAgICAgICAnY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgJyArXG4gICAgICAgICAgICAnY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gJyArXG4gICAgICAgICAgICAnY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyICcgK1xuICAgICAgICAgICAgJ2N1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkICcgK1xuICAgICAgICAgICAgJ2RhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyAnICtcbiAgICAgICAgICAgICdkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgJyArXG4gICAgICAgICAgICAnZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzICcgK1xuICAgICAgICAgICAgJ2RlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgJyArXG4gICAgICAgICAgICAnZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yICcgK1xuICAgICAgICAgICAgJ2RldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgJyArXG4gICAgICAgICAgICAnZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2ICcgK1xuICAgICAgICAgICAgJ2RvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgJyArXG4gICAgICAgICAgICAnZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCAnICtcbiAgICAgICAgICAgICdlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyAnICtcbiAgICAgICAgICAgICdlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nICcgK1xuICAgICAgICAgICAgJ2V4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwbG9kZSBleHBvcnQgZXhwb3J0X3NldCBleHRlbmRlZCBleHRlbnQgZXh0ZXJuYWwgJyArXG4gICAgICAgICAgICAnZXh0ZXJuYWxfMSBleHRlcm5hbF8yIGV4dGVybmFsbHkgZXh0cmFjdCBmYWlsZWQgZmFpbGVkX2xvZ2luX2F0dGVtcHRzIGZhaWxvdmVyIGZhaWx1cmUgZmFyIGZhc3QgJyArXG4gICAgICAgICAgICAnZmVhdHVyZV9zZXQgZmVhdHVyZV92YWx1ZSBmZXRjaCBmaWVsZCBmaWVsZHMgZmlsZSBmaWxlX25hbWVfY29udmVydCBmaWxlc3lzdGVtX2xpa2VfbG9nZ2luZyBmaW5hbCAnICtcbiAgICAgICAgICAgICdmaW5pc2ggZmlyc3QgZmlyc3RfdmFsdWUgZml4ZWQgZmxhc2hfY2FjaGUgZmxhc2hiYWNrIGZsb29yIGZsdXNoIGZvbGxvd2luZyBmb2xsb3dzIGZvciBmb3JhbGwgZm9yY2UgZm9yZWlnbiAnICtcbiAgICAgICAgICAgICdmb3JtIGZvcm1hIGZvcm1hdCBmb3VuZCBmb3VuZF9yb3dzIGZyZWVsaXN0IGZyZWVsaXN0cyBmcmVlcG9vbHMgZnJlc2ggZnJvbSBmcm9tX2Jhc2U2NCBmcm9tX2RheXMgJyArXG4gICAgICAgICAgICAnZnRwIGZ1bGwgZnVuY3Rpb24gZ2VuZXJhbCBnZW5lcmF0ZWQgZ2V0IGdldF9mb3JtYXQgZ2V0X2xvY2sgZ2V0ZGF0ZSBnZXR1dGNkYXRlIGdsb2JhbCBnbG9iYWxfbmFtZSAnICtcbiAgICAgICAgICAgICdnbG9iYWxseSBnbyBnb3RvIGdyYW50IGdyYW50cyBncmVhdGVzdCBncm91cCBncm91cF9jb25jYXQgZ3JvdXBfaWQgZ3JvdXBpbmcgZ3JvdXBpbmdfaWQgZ3JvdXBzICcgK1xuICAgICAgICAgICAgJ2d0aWRfc3VidHJhY3QgZ3VhcmFudGVlIGd1YXJkIGhhbmRsZXIgaGFzaCBoYXNoa2V5cyBoYXZpbmcgaGVhIGhlYWQgaGVhZGkgaGVhZGluIGhlYWRpbmcgaGVhcCBoZWxwIGhleCAnICtcbiAgICAgICAgICAgICdoaWVyYXJjaHkgaGlnaCBoaWdoX3ByaW9yaXR5IGhvc3RzIGhvdXIgaG91cnMgaHR0cCBpZCBpZGVudF9jdXJyZW50IGlkZW50X2luY3IgaWRlbnRfc2VlZCBpZGVudGlmaWVkICcgK1xuICAgICAgICAgICAgJ2lkZW50aXR5IGlkbGVfdGltZSBpZiBpZm51bGwgaWdub3JlIGlpZiBpbGlrZSBpbG0gaW1tZWRpYXRlIGltcG9ydCBpbiBpbmNsdWRlIGluY2x1ZGluZyBpbmNyZW1lbnQgJyArXG4gICAgICAgICAgICAnaW5kZXggaW5kZXhlcyBpbmRleGluZyBpbmRleHR5cGUgaW5kaWNhdG9yIGluZGljZXMgaW5ldDZfYXRvbiBpbmV0Nl9udG9hIGluZXRfYXRvbiBpbmV0X250b2EgaW5maWxlICcgK1xuICAgICAgICAgICAgJ2luaXRpYWwgaW5pdGlhbGl6ZWQgaW5pdGlhbGx5IGluaXRyYW5zIGlubWVtb3J5IGlubmVyIGlubm9kYiBpbnB1dCBpbnNlcnQgaW5zdGFsbCBpbnN0YW5jZSBpbnN0YW50aWFibGUgJyArXG4gICAgICAgICAgICAnaW5zdHIgaW50ZXJmYWNlIGludGVybGVhdmVkIGludGVyc2VjdCBpbnRvIGludmFsaWRhdGUgaW52aXNpYmxlIGlzIGlzX2ZyZWVfbG9jayBpc19pcHY0IGlzX2lwdjRfY29tcGF0ICcgK1xuICAgICAgICAgICAgJ2lzX25vdCBpc19ub3RfbnVsbCBpc191c2VkX2xvY2sgaXNkYXRlIGlzbnVsbCBpc29sYXRpb24gaXRlcmF0ZSBqYXZhIGpvaW4ganNvbiBqc29uX2V4aXN0cyAnICtcbiAgICAgICAgICAgICdrZWVwIGtlZXBfZHVwbGljYXRlcyBrZXkga2V5cyBraWxsIGxhbmd1YWdlIGxhcmdlIGxhc3QgbGFzdF9kYXkgbGFzdF9pbnNlcnRfaWQgbGFzdF92YWx1ZSBsYXRlcmFsIGxheCBsY2FzZSAnICtcbiAgICAgICAgICAgICdsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0ICcgK1xuICAgICAgICAgICAgJ2xpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlICcgK1xuICAgICAgICAgICAgJ2xvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCAnICtcbiAgICAgICAgICAgICdsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lICcgK1xuICAgICAgICAgICAgJ21hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCAnICtcbiAgICAgICAgICAgICdtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgJyArXG4gICAgICAgICAgICAnbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzICcgK1xuICAgICAgICAgICAgJ21pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW51dGVzIG1pbnZhbHVlIG1pc3NpbmcgbW9kIG1vZGUgbW9kZWwgbW9kaWZpY2F0aW9uIG1vZGlmeSBtb2R1bGUgbW9uaXRvcmluZyBtb250aCAnICtcbiAgICAgICAgICAgICdtb250aHMgbW91bnQgbW92ZSBtb3ZlbWVudCBtdWx0aXNldCBtdXRleCBuYW1lIG5hbWVfY29uc3QgbmFtZXMgbmFuIG5hdGlvbmFsIG5hdGl2ZSBuYXR1cmFsIG5hdiBuY2hhciAnICtcbiAgICAgICAgICAgICduY2xvYiBuZXN0ZWQgbmV2ZXIgbmV3IG5ld2xpbmUgbmV4dCBuZXh0dmFsIG5vIG5vX3dyaXRlX3RvX2JpbmxvZyBub2FyY2hpdmVsb2cgbm9hdWRpdCBub2JhZGZpbGUgJyArXG4gICAgICAgICAgICAnbm9jaGVjayBub2NvbXByZXNzIG5vY29weSBub2N5Y2xlIG5vZGVsYXkgbm9kaXNjYXJkZmlsZSBub2VudGl0eWVzY2FwaW5nIG5vZ3VhcmFudGVlIG5va2VlcCBub2xvZ2ZpbGUgJyArXG4gICAgICAgICAgICAnbm9tYXBwaW5nIG5vbWF4dmFsdWUgbm9taW5pbWl6ZSBub21pbnZhbHVlIG5vbW9uaXRvcmluZyBub25lIG5vbmVkaXRpb25hYmxlIG5vbnNjaGVtYSBub29yZGVyICcgK1xuICAgICAgICAgICAgJ25vcHIgbm9wcm8gbm9wcm9tIG5vcHJvbXAgbm9wcm9tcHQgbm9yZWx5IG5vcmVzZXRsb2dzIG5vcmV2ZXJzZSBub3JtYWwgbm9yb3dkZXBlbmRlbmNpZXMgbm9zY2hlbWFjaGVjayAnICtcbiAgICAgICAgICAgICdub3N3aXRjaCBub3Qgbm90aGluZyBub3RpY2Ugbm90bnVsbCBub3RyaW0gbm92YWxpZGF0ZSBub3cgbm93YWl0IG50aF92YWx1ZSBudWxsaWYgbnVsbHMgbnVtIG51bWIgbnVtYmUgJyArXG4gICAgICAgICAgICAnbnZhcmNoYXIgbnZhcmNoYXIyIG9iamVjdCBvY2ljb2xsIG9jaWRhdGUgb2NpZGF0ZXRpbWUgb2NpZHVyYXRpb24gb2NpaW50ZXJ2YWwgb2NpbG9ibG9jYXRvciBvY2ludW1iZXIgJyArXG4gICAgICAgICAgICAnb2NpcmVmIG9jaXJlZmN1cnNvciBvY2lyb3dpZCBvY2lzdHJpbmcgb2NpdHlwZSBvY3Qgb2N0ZXRfbGVuZ3RoIG9mIG9mZiBvZmZsaW5lIG9mZnNldCBvaWQgb2lkaW5kZXggb2xkICcgK1xuICAgICAgICAgICAgJ29uIG9ubGluZSBvbmx5IG9wYXF1ZSBvcGVuIG9wZXJhdGlvbnMgb3BlcmF0b3Igb3B0aW1hbCBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxseSBvciBvcmFjbGUgb3JhY2xlX2RhdGUgJyArXG4gICAgICAgICAgICAnb3JhZGF0YSBvcmQgb3JkYXVkaW8gb3JkZGljb20gb3JkZG9jIG9yZGVyIG9yZGltYWdlIG9yZGluYWxpdHkgb3JkdmlkZW8gb3JnYW5pemF0aW9uIG9ybGFueSBvcmx2YXJ5ICcgK1xuICAgICAgICAgICAgJ291dCBvdXRlciBvdXRmaWxlIG91dGxpbmUgb3V0cHV0IG92ZXIgb3ZlcmZsb3cgb3ZlcnJpZGluZyBwYWNrYWdlIHBhZCBwYXJhbGxlbCBwYXJhbGxlbF9lbmFibGUgJyArXG4gICAgICAgICAgICAncGFyYW1ldGVycyBwYXJlbnQgcGFyc2UgcGFydGlhbCBwYXJ0aXRpb24gcGFydGl0aW9ucyBwYXNjYWwgcGFzc2luZyBwYXNzd29yZCBwYXNzd29yZF9ncmFjZV90aW1lICcgK1xuICAgICAgICAgICAgJ3Bhc3N3b3JkX2xvY2tfdGltZSBwYXNzd29yZF9yZXVzZV9tYXggcGFzc3dvcmRfcmV1c2VfdGltZSBwYXNzd29yZF92ZXJpZnlfZnVuY3Rpb24gcGF0Y2ggcGF0aCBwYXRpbmRleCAnICtcbiAgICAgICAgICAgICdwY3RpbmNyZWFzZSBwY3R0aHJlc2hvbGQgcGN0dXNlZCBwY3R2ZXJzaW9uIHBlcmNlbnQgcGVyY2VudF9yYW5rIHBlcmNlbnRpbGVfY29udCBwZXJjZW50aWxlX2Rpc2MgJyArXG4gICAgICAgICAgICAncGVyZm9ybWFuY2UgcGVyaW9kIHBlcmlvZF9hZGQgcGVyaW9kX2RpZmYgcGVybWFuZW50IHBoeXNpY2FsIHBpIHBpcGUgcGlwZWxpbmVkIHBpdm90IHBsdWdnYWJsZSBwbHVnaW4gJyArXG4gICAgICAgICAgICAncG9saWN5IHBvc2l0aW9uIHBvc3RfdHJhbnNhY3Rpb24gcG93IHBvd2VyIHByYWdtYSBwcmVidWlsdCBwcmVjZWRlcyBwcmVjZWRpbmcgcHJlY2lzaW9uIHByZWRpY3Rpb24gJyArXG4gICAgICAgICAgICAncHJlZGljdGlvbl9jb3N0IHByZWRpY3Rpb25fZGV0YWlscyBwcmVkaWN0aW9uX3Byb2JhYmlsaXR5IHByZWRpY3Rpb25fc2V0IHByZXBhcmUgcHJlc2VudCBwcmVzZXJ2ZSAnICtcbiAgICAgICAgICAgICdwcmlvciBwcmlvcml0eSBwcml2YXRlIHByaXZhdGVfc2dhIHByaXZpbGVnZXMgcHJvY2VkdXJhbCBwcm9jZWR1cmUgcHJvY2VkdXJlX2FuYWx5emUgcHJvY2Vzc2xpc3QgJyArXG4gICAgICAgICAgICAncHJvZmlsZXMgcHJvamVjdCBwcm9tcHQgcHJvdGVjdGlvbiBwdWJsaWMgcHVibGlzaGluZ3NlcnZlcm5hbWUgcHVyZ2UgcXVhcnRlciBxdWVyeSBxdWljayBxdWllc2NlIHF1b3RhICcgK1xuICAgICAgICAgICAgJ3F1b3RlbmFtZSByYWRpYW5zIHJhaXNlIHJhbmQgcmFuZ2UgcmFuayByYXcgcmVhZCByZWFkcyByZWFkc2l6ZSByZWJ1aWxkIHJlY29yZCByZWNvcmRzICcgK1xuICAgICAgICAgICAgJ3JlY292ZXIgcmVjb3ZlcnkgcmVjdXJzaXZlIHJlY3ljbGUgcmVkbyByZWR1Y2VkIHJlZiByZWZlcmVuY2UgcmVmZXJlbmNlZCByZWZlcmVuY2VzIHJlZmVyZW5jaW5nIHJlZnJlc2ggJyArXG4gICAgICAgICAgICAncmVnZXhwX2xpa2UgcmVnaXN0ZXIgcmVncl9hdmd4IHJlZ3JfYXZneSByZWdyX2NvdW50IHJlZ3JfaW50ZXJjZXB0IHJlZ3JfcjIgcmVncl9zbG9wZSByZWdyX3N4eCByZWdyX3N4eSAnICtcbiAgICAgICAgICAgICdyZWplY3QgcmVrZXkgcmVsYXRpb25hbCByZWxhdGl2ZSByZWxheWxvZyByZWxlYXNlIHJlbGVhc2VfbG9jayByZWxpZXNfb24gcmVsb2NhdGUgcmVseSByZW0gcmVtYWluZGVyIHJlbmFtZSAnICtcbiAgICAgICAgICAgICdyZXBhaXIgcmVwZWF0IHJlcGxhY2UgcmVwbGljYXRlIHJlcGxpY2F0aW9uIHJlcXVpcmVkIHJlc2V0IHJlc2V0bG9ncyByZXNpemUgcmVzb3VyY2UgcmVzcGVjdCByZXN0b3JlICcgK1xuICAgICAgICAgICAgJ3Jlc3RyaWN0ZWQgcmVzdWx0IHJlc3VsdF9jYWNoZSByZXN1bWFibGUgcmVzdW1lIHJldGVudGlvbiByZXR1cm4gcmV0dXJuaW5nIHJldHVybnMgcmV1c2UgcmV2ZXJzZSByZXZva2UgJyArXG4gICAgICAgICAgICAncmlnaHQgcmxpa2Ugcm9sZSByb2xlcyByb2xsYmFjayByb2xsaW5nIHJvbGx1cCByb3VuZCByb3cgcm93X2NvdW50IHJvd2RlcGVuZGVuY2llcyByb3dpZCByb3dudW0gcm93cyAnICtcbiAgICAgICAgICAgICdydHJpbSBydWxlcyBzYWZlIHNhbHQgc2FtcGxlIHNhdmUgc2F2ZXBvaW50IHNiMSBzYjIgc2I0IHNjYW4gc2NoZW1hIHNjaGVtYWNoZWNrIHNjbiBzY29wZSBzY3JvbGwgJyArXG4gICAgICAgICAgICAnc2RvX2dlb3Jhc3RlciBzZG9fdG9wb19nZW9tZXRyeSBzZWFyY2ggc2VjX3RvX3RpbWUgc2Vjb25kIHNlY29uZHMgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3QgJyArXG4gICAgICAgICAgICAnc2VsZiBzZW1pIHNlcXVlbmNlIHNlcXVlbnRpYWwgc2VyaWFsaXphYmxlIHNlcnZlciBzZXJ2ZXJlcnJvciBzZXNzaW9uIHNlc3Npb25fdXNlciBzZXNzaW9uc19wZXJfdXNlciBzZXQgJyArXG4gICAgICAgICAgICAnc2V0cyBzZXR0aW5ncyBzaGEgc2hhMSBzaGEyIHNoYXJlIHNoYXJlZCBzaGFyZWRfcG9vbCBzaG9ydCBzaG93IHNocmluayBzaHV0ZG93biBzaV9hdmVyYWdlY29sb3IgJyArXG4gICAgICAgICAgICAnc2lfY29sb3JoaXN0b2dyYW0gc2lfZmVhdHVyZWxpc3Qgc2lfcG9zaXRpb25hbGNvbG9yIHNpX3N0aWxsaW1hZ2Ugc2lfdGV4dHVyZSBzaWJsaW5ncyBzaWQgc2lnbiBzaW4gJyArXG4gICAgICAgICAgICAnc2l6ZSBzaXplX3Qgc2l6ZXMgc2tpcCBzbGF2ZSBzbGVlcCBzbWFsbGRhdGV0aW1lZnJvbXBhcnRzIHNtYWxsZmlsZSBzbmFwc2hvdCBzb21lIHNvbmFtZSBzb3J0IHNvdW5kZXggJyArXG4gICAgICAgICAgICAnc291cmNlIHNwYWNlIHNwYXJzZSBzcGZpbGUgc3BsaXQgc3FsIHNxbF9iaWdfcmVzdWx0IHNxbF9idWZmZXJfcmVzdWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzICcgK1xuICAgICAgICAgICAgJ3NxbF9zbWFsbF9yZXN1bHQgc3FsX3ZhcmlhbnRfcHJvcGVydHkgc3FsY29kZSBzcWxkYXRhIHNxbGVycm9yIHNxbG5hbWUgc3Fsc3RhdGUgc3FydCBzcXVhcmUgc3RhbmRhbG9uZSAnICtcbiAgICAgICAgICAgICdzdGFuZGJ5IHN0YXJ0IHN0YXJ0aW5nIHN0YXJ0dXAgc3RhdGVtZW50IHN0YXRpYyBzdGF0aXN0aWNzIHN0YXRzX2Jpbm9taWFsX3Rlc3Qgc3RhdHNfY3Jvc3N0YWIgJyArXG4gICAgICAgICAgICAnc3RhdHNfa3NfdGVzdCBzdGF0c19tb2RlIHN0YXRzX213X3Rlc3Qgc3RhdHNfb25lX3dheV9hbm92YSBzdGF0c190X3Rlc3RfIHN0YXRzX3RfdGVzdF9pbmRlcCAnICtcbiAgICAgICAgICAgICdzdGF0c190X3Rlc3Rfb25lIHN0YXRzX3RfdGVzdF9wYWlyZWQgc3RhdHNfd3NyX3Rlc3Qgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcCBzdGRldiAnICtcbiAgICAgICAgICAgICdzdG9wIHN0b3JhZ2Ugc3RvcmUgc3RvcmVkIHN0ciBzdHJfdG9fZGF0ZSBzdHJhaWdodF9qb2luIHN0cmNtcCBzdHJpY3Qgc3RyaW5nIHN0cnVjdCBzdHVmZiBzdHlsZSBzdWJkYXRlICcgK1xuICAgICAgICAgICAgJ3N1YnBhcnRpdGlvbiBzdWJwYXJ0aXRpb25zIHN1YnN0aXR1dGFibGUgc3Vic3RyIHN1YnN0cmluZyBzdWJ0aW1lIHN1YnRyaW5nX2luZGV4IHN1YnR5cGUgc3VjY2VzcyBzdW0gJyArXG4gICAgICAgICAgICAnc3VzcGVuZCBzd2l0Y2ggc3dpdGNob2Zmc2V0IHN3aXRjaG92ZXIgc3luYyBzeW5jaHJvbm91cyBzeW5vbnltIHN5cyBzeXNfeG1sYWdnIHN5c2FzbSBzeXNhdXggc3lzZGF0ZSAnICtcbiAgICAgICAgICAgICdzeXNkYXRldGltZW9mZnNldCBzeXNkYmEgc3lzb3BlciBzeXN0ZW0gc3lzdGVtX3VzZXIgc3lzdXRjZGF0ZXRpbWUgdGFibGUgdGFibGVzIHRhYmxlc3BhY2UgdGFibGVzYW1wbGUgdGFuIHRkbyAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZSB0ZW1wb3JhcnkgdGVybWluYXRlZCB0ZXJ0aWFyeV93ZWlnaHRzIHRlc3QgdGhhbiB0aGVuIHRocmVhZCB0aHJvdWdoIHRpZXIgdGllcyB0aW1lIHRpbWVfZm9ybWF0ICcgK1xuICAgICAgICAgICAgJ3RpbWVfem9uZSB0aW1lZGlmZiB0aW1lZnJvbXBhcnRzIHRpbWVvdXQgdGltZXN0YW1wIHRpbWVzdGFtcGFkZCB0aW1lc3RhbXBkaWZmIHRpbWV6b25lX2FiYnIgJyArXG4gICAgICAgICAgICAndGltZXpvbmVfbWludXRlIHRpbWV6b25lX3JlZ2lvbiB0byB0b19iYXNlNjQgdG9fZGF0ZSB0b19kYXlzIHRvX3NlY29uZHMgdG9kYXRldGltZW9mZnNldCB0cmFjZSB0cmFja2luZyAnICtcbiAgICAgICAgICAgICd0cmFuc2FjdGlvbiB0cmFuc2FjdGlvbmFsIHRyYW5zbGF0ZSB0cmFuc2xhdGlvbiB0cmVhdCB0cmlnZ2VyIHRyaWdnZXJfbmVzdGxldmVsIHRyaWdnZXJzIHRyaW0gdHJ1bmNhdGUgJyArXG4gICAgICAgICAgICAndHJ5X2Nhc3QgdHJ5X2NvbnZlcnQgdHJ5X3BhcnNlIHR5cGUgdWIxIHViMiB1YjQgdWNhc2UgdW5hcmNoaXZlZCB1bmJvdW5kZWQgdW5jb21wcmVzcyAnICtcbiAgICAgICAgICAgICd1bmRlciB1bmRvIHVuaGV4IHVuaWNvZGUgdW5pZm9ybSB1bmluc3RhbGwgdW5pb24gdW5pcXVlIHVuaXhfdGltZXN0YW1wIHVua25vd24gdW5saW1pdGVkIHVubG9jayB1bm5lc3QgdW5waXZvdCAnICtcbiAgICAgICAgICAgICd1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0ICcgK1xuICAgICAgICAgICAgJ3VybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlICcgK1xuICAgICAgICAgICAgJ3V0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgJyArXG4gICAgICAgICAgICAndmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgJyArXG4gICAgICAgICAgICAndmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyICcgK1xuICAgICAgICAgICAgJ3dlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpbmRvdyB3aXRoIHdpdGhpbiB3aXRob3V0IHdvcmsgd3JhcHBlZCAnICtcbiAgICAgICAgICAgICd4ZGIgeG1sIHhtbGFnZyB4bWxhdHRyaWJ1dGVzIHhtbGNhc3QgeG1sY29sYXR0dmFsIHhtbGVsZW1lbnQgeG1sZXhpc3RzIHhtbGZvcmVzdCB4bWxpbmRleCB4bWxuYW1lc3BhY2VzICcgK1xuICAgICAgICAgICAgJ3htbHBpIHhtbHF1ZXJ5IHhtbHJvb3QgeG1sc2NoZW1hIHhtbHNlcmlhbGl6ZSB4bWx0YWJsZSB4bWx0eXBlIHhvciB5ZWFyIHllYXJfdG9fbW9udGggeWVhcnMgeWVhcndlZWsnLFxuICAgICAgICAgIGxpdGVyYWw6XG4gICAgICAgICAgICAndHJ1ZSBmYWxzZSBudWxsIHVua25vd24nLFxuICAgICAgICAgIGJ1aWx0X2luOlxuICAgICAgICAgICAgJ2FycmF5IGJpZ2ludCBiaW5hcnkgYml0IGJsb2IgYm9vbCBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgJyArXG4gICAgICAgICAgICAnbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHRpbWUgdGltZXN0YW1wIHRpbnlpbnQgdmFyY2hhciB2YXJjaGFyMiB2YXJ5aW5nIHZvaWQnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFwnJywgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCB7YmVnaW46ICdcXCdcXCcnfV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ1wiJywgZW5kOiAnXCInLFxuICAgICAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEUsIHtiZWdpbjogJ1wiXCInfV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogJ2AnLCBlbmQ6ICdgJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBDT01NRU5UX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgIGxleGVtZXM6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAvLyBTdGFuJ3Mga2V5d29yZHNcbiAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgJ2ZvciBpbiB3aGlsZSByZXBlYXQgdW50aWwgaWYgdGhlbiBlbHNlJyxcbiAgICAgICAgICAvLyBTdGFuJ3MgcHJvYmFibGl0eSBkaXN0cmlidXRpb25zIChsZXNzIGJldGEgYW5kIGdhbW1hLCBhcyBjb21tb25seVxuICAgICAgICAgIC8vIHVzZWQgZm9yIHBhcmFtZXRlciBuYW1lcykuIFNvIGZhciwgX2xvZyBhbmQgX3JuZyB2YXJpYW50cyBhcmUgbm90XG4gICAgICAgICAgLy8gaW5jbHVkZWRcbiAgICAgICAgICBzeW1ib2w6XG4gICAgICAgICAgICAnYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCAnICAgICAgICAgICAgICAgK1xuICAgICAgICAgICAgJ2JldGFfYmlub21pYWwgaHlwZXJnZW9tZXRyaWMgY2F0ZWdvcmljYWwgY2F0ZWdvcmljYWxfbG9naXQgJyAgICAgICtcbiAgICAgICAgICAgICdvcmRlcmVkX2xvZ2lzdGljIG5lZ19iaW5vbWlhbCBuZWdfYmlub21pYWxfMiAnICAgICAgICAgICAgICAgICAgICArXG4gICAgICAgICAgICAnbmVnX2Jpbm9taWFsXzJfbG9nIHBvaXNzb24gcG9pc3Nvbl9sb2cgbXVsdGlub21pYWwgbm9ybWFsICcgICAgICAgK1xuICAgICAgICAgICAgJ2V4cF9tb2Rfbm9ybWFsIHNrZXdfbm9ybWFsIHN0dWRlbnRfdCBjYXVjaHkgZG91YmxlX2V4cG9uZW50aWFsICcgICtcbiAgICAgICAgICAgICdsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgJyAgICAgICAgICAgICArXG4gICAgICAgICAgICAnc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgJyAgICAgK1xuICAgICAgICAgICAgJ3JheWxlaWdoIHdpZW5lciBwYXJldG8gcGFyZXRvX3R5cGVfMiB2b25fbWlzZXMgdW5pZm9ybSAnICAgICAgICAgICtcbiAgICAgICAgICAgICdtdWx0aV9ub3JtYWwgbXVsdGlfbm9ybWFsX3ByZWMgbXVsdGlfbm9ybWFsX2Nob2xlc2t5IG11bHRpX2dwICcgICArXG4gICAgICAgICAgICAnbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0ICcgICAgK1xuICAgICAgICAgICAgJ2xral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQnLFxuICAgICAgICAgIC8vIFN0YW4ncyBkYXRhIHR5cGVzXG4gICAgICAgICAgJ3NlbGVjdG9yLXRhZyc6XG4gICAgICAgICAgICAnaW50IHJlYWwgdmVjdG9yIHNpbXBsZXggdW5pdF92ZWN0b3Igb3JkZXJlZCBwb3NpdGl2ZV9vcmRlcmVkICcgICAgK1xuICAgICAgICAgICAgJ3Jvd192ZWN0b3IgbWF0cml4IGNob2xlc2t5X2ZhY3Rvcl9jb3JyIGNob2xlc2t5X2ZhY3Rvcl9jb3YgJyAgICAgICtcbiAgICAgICAgICAgICdjb3JyX21hdHJpeCBjb3ZfbWF0cml4JyxcbiAgICAgICAgICAvLyBTdGFuJ3MgbW9kZWwgYmxvY2tzXG4gICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAnZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkICcgICAgICAgICAgK1xuICAgICAgICAgICAgJ2dlbmVyYXRlZCcsXG4gICAgICAgICAgbGl0ZXJhbDpcbiAgICAgICAgICAgICd0cnVlIGZhbHNlJ1xuICAgICAgICB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvLyBUaGUgYmVsb3cgaXMgYWxsIHRha2VuIGZyb20gdGhlIFIgbGFuZ3VhZ2UgZGVmaW5pdGlvblxuICAgICAge1xuICAgICAgICAvLyBoZXggdmFsdWVcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gaGV4IHZhbHVlXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGV4cGxpY2l0IGludGVnZXJcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IFwiXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/TFxcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggdHJhaWxpbmcgZGVjaW1hbFxuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogXCJcXFxcZCtcXFxcLig/IVxcXFxkKSg/OmlcXFxcYik/XCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFxkKyg/OlxcXFwuXFxcXGQqKT8oPzpbZUVdWytcXFxcLV0/XFxcXGQqKT9pP1xcXFxiXCIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gbnVtYmVyIHdpdGggbGVhZGluZyBkZWNpbWFsXG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBcIlxcXFwuXFxcXGQrKD86W2VFXVsrXFxcXC1dP1xcXFxkKik/aT9cXFxcYlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gLypcbiAgVGhpcyBpcyBhIGZvcmsgYW5kIG1vZGlmaWNhdGlvbiBvZiBEcmV3IE1jRG9uYWxkJ3MgZmlsZSAoaHR0cHM6Ly9naXRodWIuY29tL2RyZXdtY2RvbmFsZC9zdGF0YS1oaWdobGlnaHRpbmcpLiBJIGhhdmUgYWxzbyBpbmNsdWRlZCBhIGxpc3Qgb2YgYnVpbHRpbiBjb21tYW5kcyBmcm9tIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU2NDYuXG4qL1xuXG5mdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydkbycsICdhZG8nXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiAnaWYgZWxzZSBpbiBmb3JlYWNoIGZvciBmb3J2IGZvcnZhIGZvcnZhbCBmb3J2YWx1IGZvcnZhbHVlIGZvcnZhbHVlcyBieSBieXMgYnlzb3J0IHhpIHF1aWV0bHkgcXVpIGNhcHR1cmUgYWJvdXQgYWMgYWNfNyBhY3BycGxvdCBhY3BycGxvdF83IGFkanVzdCBhZG8gYWRvcGF0aCBhZG91cGRhdGUgYWxwaGEgYW1lYW5zIGFuIGFubyBhbm92IGFub3ZhIGFub3ZhX2VzdGF0IGFub3ZhX3Rlcm1zIGFub3ZhZGVmIGFvcmRlciBhcCBhcHAgYXBwZSBhcHBlbiBhcHBlbmQgYXJjaCBhcmNoX2RyIGFyY2hfZXN0YXQgYXJjaF9wIGFyY2hsbSBhcmVnIGFyZWdfcCBhcmdzIGFyaW1hIGFyaW1hX2RyIGFyaW1hX2VzdGF0IGFyaW1hX3AgYXMgYXNtcHJvYml0IGFzbXByb2JpdF9lc3RhdCBhc21wcm9iaXRfbGYgYXNtcHJvYml0X21meF9fZGxnIGFzbXByb2JpdF9wIGFzcyBhc3NlIGFzc2VyIGFzc2VydCBhdnBsb3QgYXZwbG90XzcgYXZwbG90cyBhdnBsb3RzXzcgYmNza2V3MCBiZ29kZnJleSBiaWFzIGJpbnJlZyBiaXAwX2xmIGJpcGxvdCBiaXBwX2xmIGJpcHJfbGYgYmlwcl9wIGJpcHJvYml0IGJpdGVzdCBiaXRlc3RpIGJpdG93dCBibG9naXQgYm1lbXNpemUgYm9vdCBib290c2FtcCBib290c3RyYXAgYm9vdHN0cmFwXzggYm94Y29fbCBib3hjb19wIGJveGNveCBib3hjb3hfNiBib3hjb3hfcCBicHJvYml0IGJyIGJyZWFrIGJyaWVyIGJybyBicm93IGJyb3dzIGJyb3dzZSBicnIgYnJyc3RhdCBicyBic183IGJzYW1wbF93IGJzYW1wbGUgYnNhbXBsZV83IGJzcXJlZyBic3RhdCBic3RhdF83IGJzdGF0XzggYnN0cmFwIGJzdHJhcF83IGJ1YmJsZSBidWJibGVwbG90IGNhIGNhX2VzdGF0IGNhX3AgY2FiaXBsb3QgY2FtYXQgY2Fub24gY2Fub25fOCBjYW5vbl84X3AgY2Fub25fZXN0YXQgY2Fub25fcCBjYXAgY2Fwcm9qZWN0aW9uIGNhcHQgY2FwdHUgY2FwdHVyIGNhcHR1cmUgY2F0IGNjIGNjaGFydCBjY2hhcnRfNyBjY2kgY2QgY2Vuc29ic190YWJsZSBjZW50aWxlIGNmIGNoYXIgY2hkaXIgY2hlY2tkbGdmaWxlcyBjaGVja2VzdGltYXRpb25zYW1wbGUgY2hlY2tobHBmaWxlcyBjaGVja3N1bSBjaGVscCBjaSBjaWkgY2wgY2xhc3MgY2xhc3N1dGlsIGNsZWFyIGNsaSBjbGlzIGNsaXN0IGNsbyBjbG9nIGNsb2dfbGYgY2xvZ19wIGNsb2dpIGNsb2dpX3N3IGNsb2dpdCBjbG9naXRfbGYgY2xvZ2l0X3AgY2xvZ2l0cCBjbG9nbF9zdyBjbG9nbG9nIGNsb25ldmFyIGNsc2xpc3RhcnJheSBjbHVzdGVyIGNsdXN0ZXJfbWVhc3VyZXMgY2x1c3Rlcl9zdG9wIGNsdXN0ZXJfdHJlZSBjbHVzdGVyX3RyZWVfOCBjbHVzdGVybWF0IGNtZGxvZyBjbnIgY25yZSBjbnJlZyBjbnJlZ19wIGNucmVnX3N3IGNuc3JlZyBjb2RlYm9vayBjb2xsYXBzNCBjb2xsYXBzZSBjb2xvcm11bHRfbmIgY29sb3JtdWx0X253IGNvbXBhcmUgY29tcHJlc3MgY29uZiBjb25maSBjb25maXIgY29uZmlybSBjb25yZW4gY29ucyBjb25zdCBjb25zdHIgY29uc3RyYSBjb25zdHJhaSBjb25zdHJhaW4gY29uc3RyYWludCBjb250aW51ZSBjb250cmFjdCBjb3B5IGNvcHlyaWdodCBjb3B5c291cmNlIGNvciBjb3JjIGNvcnIgY29ycjJkYXRhIGNvcnJfYW50aSBjb3JyX2ttbyBjb3JyX3NtYyBjb3JyZSBjb3JyZWwgY29ycmVsYSBjb3JyZWxhdCBjb3JyZWxhdGUgY29ycmdyYW0gY291IGNvdW4gY291bnQgY294IGNveF9wIGNveF9zdyBjb3hiYXNlIGNveGhheiBjb3h2YXIgY3BycGxvdCBjcHJwbG90XzcgY3JjIGNyZXQgY3JldHUgY3JldHVyIGNyZXR1cm4gY3Jvc3MgY3MgY3NjcmlwdCBjc2NyaXB0X2xvZyBjc2kgY3QgY3RfaXMgY3RzZXQgY3RzdF81IGN0c3Rfc3QgY3R0b3N0IGN1bXNwIGN1bXNwXzcgY3VtdWwgY3VzdW0gY3VzdW1fNyBjdXRpbCBkfDAgZGF0YXNpZyBkYXRhc2lnbiBkYXRhc2lnbmEgZGF0YXNpZ25hdCBkYXRhc2lnbmF0dSBkYXRhc2lnbmF0dXIgZGF0YXNpZ25hdHVyZSBkYXRldG9mIGRiIGRiZXRhIGRlIGRlYyBkZWNvIGRlY29kIGRlY29kZSBkZWZmIGRlcyBkZXNjIGRlc2NyIGRlc2NyaSBkZXNjcmliIGRlc2NyaWJlIGRlc3RyaW5nIGRmYmV0YSBkZmdscyBkZnVsbGVyIGRpIGRpX2cgZGlyIGRpcnN0YXRzIGRpcyBkaXNjYXJkIGRpc3AgZGlzcF9yZXMgZGlzcF9zIGRpc3BsIGRpc3BsYSBkaXNwbGF5IGRpc3RpbmN0IGRvIGRvZSBkb2VkIGRvZWRpIGRvZWRpdCBkb3RwbG90IGRvdHBsb3RfNyBkcHJvYml0IGRyYXdub3JtIGRyb3AgZHMgZHNfdXRpbCBkc3RkaXplIGR1cGxpY2F0ZXMgZHVyYmluYSBkd3N0YXQgZHlkeCBlfDAgZWQgZWRpIGVkaXQgZWdlbiBlaXZyZWcgZW1kZWYgZW4gZW5jIGVuY28gZW5jb2QgZW5jb2RlIGVxIGVyYXNlIGVyZWcgZXJlZ19sZiBlcmVnX3AgZXJlZ19zdyBlcmVnaGV0IGVyZWdoZXRfZ2xmIGVyZWdoZXRfZ2xmX3NoIGVyZWdoZXRfZ3AgZXJlZ2hldF9pbGYgZXJlZ2hldF9pbGZfc2ggZXJlZ2hldF9pcCBlcmV0IGVyZXR1IGVyZXR1ciBlcmV0dXJuIGVyciBlcnJvIGVycm9yIGVzaXplIGVzdCBlc3RfY2ZleGlzdCBlc3RfY2ZuYW1lIGVzdF9jbGlja2FibGUgZXN0X2V4cGFuZCBlc3RfaG9sZCBlc3RfdGFibGUgZXN0X3VuaG9sZCBlc3RfdW5ob2xkb2sgZXN0YXQgZXN0YXRfZGVmYXVsdCBlc3RhdF9zdW1tIGVzdGF0X3ZjZV9vbmx5IGVzdGkgZXN0aW1hdGVzIGV0b2RvdyBldG9mIGV0b21keSBleCBleGkgZXhpdCBleHBhbmQgZXhwYW5kY2wgZmFjIGZhY3QgZmFjdG8gZmFjdG9yIGZhY3Rvcl9lc3RhdCBmYWN0b3JfcCBmYWN0b3JfcGNhX3JvdGF0ZWQgZmFjdG9yX3JvdGF0ZSBmYWN0b3JtYXQgZmNhc3QgZmNhc3RfY29tcHV0ZSBmY2FzdF9ncmFwaCBmZGFkZXMgZmRhZGVzYyBmZGFkZXNjciBmZGFkZXNjcmkgZmRhZGVzY3JpYiBmZGFkZXNjcmliZSBmZGFzYXYgZmRhc2F2ZSBmZGF1c2UgZmhfc3QgZmlsZSBvcGVuIGZpbGUgcmVhZCBmaWxlIGNsb3NlIGZpbGUgZmlsZWZpbHRlciBmaWxsaW4gZmluZF9obHBfZmlsZSBmaW5kZmlsZSBmaW5kaXQgZmluZGl0XzcgZml0IGZsIGZsaSBmbGlzIGZsaXN0IGZvcjVfMCBmb3Jlc3QgZm9yZXN0cGxvdCBmb3JtIGZvcm1hIGZvcm1hdCBmcHJlZGljdCBmcmFjXzE1NCBmcmFjX2FkaiBmcmFjX2NoayBmcmFjX2NveCBmcmFjX2RkcCBmcmFjX2RpcyBmcmFjX2R2IGZyYWNfaW4gZnJhY19tdW4gZnJhY19wcCBmcmFjX3BxIGZyYWNfcHYgZnJhY193Z3QgZnJhY194byBmcmFjZ2VuIGZyYWNwbG90IGZyYWNwbG90XzcgZnJhY3BvbHkgZnJhY3ByZWQgZnJvbl9leCBmcm9uX2huIGZyb25fcCBmcm9uX3RuIGZyb25fdG4yIGZyb250aWVyIGZ0b2RhdGUgZnRvZSBmdG9tZHkgZnRvd2RhdGUgZnVubmVsIGZ1bm5lbHBsb3QgZ3wwIGdhbWhldF9nbGYgZ2FtaGV0X2dwIGdhbWhldF9pbGYgZ2FtaGV0X2lwIGdhbW1hIGdhbW1hX2QyIGdhbW1hX3AgZ2FtbWFfc3cgZ2FtbWFoZXQgZ2RpX2hleGFnb24gZ2RpX3Nwb2tlcyBnZSBnZW4gZ2VuZSBnZW5lciBnZW5lcmEgZ2VuZXJhdCBnZW5lcmF0ZSBnZW5yYW5rIGdlbnN0ZCBnZW52bWVhbiBnZXR0b2tlbiBnbCBnbGFkZGVyIGdsYWRkZXJfNyBnbGltX2wwMSBnbGltX2wwMiBnbGltX2wwMyBnbGltX2wwNCBnbGltX2wwNSBnbGltX2wwNiBnbGltX2wwNyBnbGltX2wwOCBnbGltX2wwOSBnbGltX2wxMCBnbGltX2wxMSBnbGltX2wxMiBnbGltX2xmIGdsaW1fbXUgZ2xpbV9udzEgZ2xpbV9udzIgZ2xpbV9udzMgZ2xpbV9wIGdsaW1fdjEgZ2xpbV92MiBnbGltX3YzIGdsaW1fdjQgZ2xpbV92NSBnbGltX3Y2IGdsaW1fdjcgZ2xtIGdsbV82IGdsbV9wIGdsbV9zdyBnbG1wcmVkIGdsbyBnbG9iIGdsb2JhIGdsb2JhbCBnbG9naXQgZ2xvZ2l0XzggZ2xvZ2l0X3AgZ21lYW5zIGduYnJlX2xmIGduYnJlZyBnbmJyZWdfNSBnbmJyZWdfcCBnb21wX2xmIGdvbXBlX3N3IGdvbXBlcl9wIGdvbXBlcnR6IGdvbXBlcnR6aGV0IGdvbXBoZXRfZ2xmIGdvbXBoZXRfZ2xmX3NoIGdvbXBoZXRfZ3AgZ29tcGhldF9pbGYgZ29tcGhldF9pbGZfc2ggZ29tcGhldF9pcCBncGhkb3QgZ3BocGVuIGdwaHByaW50IGdwcmVmcyBncHJvYmlfcCBncHJvYml0IGdwcm9iaXRfOCBnciBncjcgZ3JfY29weSBncl9jdXJyZW50IGdyX2RiIGdyX2Rlc2NyaWJlIGdyX2RpciBncl9kcmF3IGdyX2RyYXdfcmVwbGF5IGdyX2Ryb3AgZ3JfZWRpdCBncl9lZGl0dmlld29wdHMgZ3JfZXhhbXBsZSBncl9leGFtcGxlMiBncl9leHBvcnQgZ3JfcHJpbnQgZ3JfcXNjaGVtZSBncl9xdWVyeSBncl9yZWFkIGdyX3JlbmFtZSBncl9yZXBsYXkgZ3Jfc2F2ZSBncl9zZXQgZ3Jfc2V0c2NoZW1lIGdyX3RhYmxlIGdyX3VuZG8gZ3JfdXNlIGdyYXBoIGdyYXBoNyBncmViYXIgZ3JlaWdlbiBncmVpZ2VuXzcgZ3JlaWdlbl84IGdybWVhbmJ5IGdybWVhbmJ5XzcgZ3NfZmlsZWluZm8gZ3NfZmlsZXR5cGUgZ3NfZ3JhcGhpbmZvIGdzX3N0YXQgZ3NvcnQgZ3dvb2QgaHwwIGhhZGltdm8gaGFyZWcgaGF1c21hbiBoYXZlciBoZSBoZWNrX2QyIGhlY2ttYV9wIGhlY2ttYW4gaGVja3BfbGYgaGVja3ByX3AgaGVja3Byb2IgaGVsIGhlbHAgaGVyZWcgaGV0cHJfbGYgaGV0cHJfcCBoZXRwcm9iIGhldHRlc3QgaGV4ZHVtcCBoaWxpdGUgaGlzdCBoaXN0XzcgaGlzdG9ncmFtIGhsb2dpdCBobHUgaG1lYW5zIGhvdGVsIGhvdGVsbGluZyBocHJvYml0IGhyZWcgaHNlYXJjaCBpY2Q5IGljZDlfZmYgaWNkOXAgaWlzIGltcHV0ZSBpbXRlc3QgaW5iYXNlIGluY2x1ZGUgaW5mIGluZmkgaW5maWwgaW5maWxlIGluZml4IGlucCBpbnB1IGlucHV0IGlucyBpbnNoZWV0IGluc3AgaW5zcGUgaW5zcGVjIGluc3BlY3QgaW50ZWcgaW50ZW4gaW50cmVnIGludHJlZ183IGludHJlZ19wIGludHJnMl9sbCBpbnRyZ19sbCBpbnRyZ19sbDIgaXBvbGF0ZSBpcXJlZyBpciBpcmYgaXJmX2NyZWF0ZSBpcmZtIGlyaSBpc19zdnkgaXNfc3Z5c3VtIGlzaWQgaXN0ZGl6ZSBpdnByb2JfMV9sZiBpdnByb2JfbGYgaXZwcm9iaXQgaXZwcm9iaXRfcCBpdnJlZyBpdnJlZ19mb290bm90ZSBpdnRvYl8xX2xmIGl2dG9iX2xmIGl2dG9iaXQgaXZ0b2JpdF9wIGphY2trbmlmZSBqYWNrbmlmZSBqa25pZmUgamtuaWZlXzYgamtuaWZlXzggamtzdGF0IGpvaW5ieSBrYWxhcm1hMSBrYXAga2FwXzMga2FwbWVpZXIga2FwcGEga2Fwd2d0IGtkZW5zaXR5IGtkZW5zaXR5Xzcga2VlcCBrc20ga3NtaXJub3Yga3RhdSBrd2FsbGlzIGx8MCBsYSBsYWIgbGFiYmUgbGFiYmVwbG90IGxhYmUgbGFiZWwgbGFiZWxib29rIGxhZGRlciBsZXZlbHMgbGV2ZWxzb2YgbGV2ZXJhZ2UgbGZpdCBsZml0X3AgbGkgbGluY29tIGxpbmUgbGlua3Rlc3QgbGlzIGxpc3QgbGxvZ2hldF9nbGYgbGxvZ2hldF9nbGZfc2ggbGxvZ2hldF9ncCBsbG9naGV0X2lsZiBsbG9naGV0X2lsZl9zaCBsbG9naGV0X2lwIGxsb2dpX3N3IGxsb2dpc19wIGxsb2dpc3QgbGxvZ2lzdGljIGxsb2dpc3RpY2hldCBsbm9ybV9sZiBsbm9ybV9zdyBsbm9ybWFfcCBsbm9ybWFsIGxub3JtYWxoZXQgbG5vcm1oZXRfZ2xmIGxub3JtaGV0X2dsZl9zaCBsbm9ybWhldF9ncCBsbm9ybWhldF9pbGYgbG5vcm1oZXRfaWxmX3NoIGxub3JtaGV0X2lwIGxuc2tldzAgbG9hZGluZ3Bsb3QgbG9jIGxvY2EgbG9jYWwgbG9nIGxvZ2kgbG9naXNfbGYgbG9naXN0aWMgbG9naXN0aWNfcCBsb2dpdCBsb2dpdF9lc3RhdCBsb2dpdF9wIGxvZ2xvZ3MgbG9ncmFuayBsb25ld2F5IGxvb2tmb3IgbG9va3VwIGxvd2VzcyBsb3dlc3NfNyBscHJlZGljdCBscmVjb21wIGxyb2MgbHJvY183IGxydGVzdCBscyBsc2VucyBsc2Vuc183IGxzZW5zX3ggbHN0YXQgbHRhYmxlIGx0YWJsZV83IGx0cmlhbmcgbHYgbHZyMnBsb3QgbHZyMnBsb3RfNyBtfDAgbWEgbWFjIG1hY3IgbWFjcm8gbWFrZWNucyBtYW4gbWFub3ZhIG1hbm92YV9lc3RhdCBtYW5vdmFfcCBtYW5vdmF0ZXN0IG1hbnRlbCBtYXJrIG1hcmtpbiBtYXJrb3V0IG1hcmtzYW1wbGUgbWF0IG1hdF9jYXBwIG1hdF9vcmRlciBtYXRfcHV0X3JyIG1hdF9yYXBwIG1hdGEgbWF0YV9jbGVhciBtYXRhX2Rlc2NyaWJlIG1hdGFfZHJvcCBtYXRhX21hdGRlc2NyaWJlIG1hdGFfbWF0c2F2ZSBtYXRhX21hdHVzZSBtYXRhX21lbW9yeSBtYXRhX21saWIgbWF0YV9tb3NhdmUgbWF0YV9yZW5hbWUgbWF0YV93aGljaCBtYXRhbGFiZWwgbWF0Y3Byb2MgbWF0bGlzdCBtYXRuYW1lIG1hdHIgbWF0cmkgbWF0cml4IG1hdHJpeF9pbnB1dF9fZGxnIG1hdHN0cmlrIG1jYyBtY2NpIG1kMF8gbWQxXyBtZDFkZWJ1Z18gbWQyXyBtZDJkZWJ1Z18gbWRzIG1kc19lc3RhdCBtZHNfcCBtZHNjb25maWcgbWRzbG9uZyBtZHNtYXQgbWRzc2hlcGFyZCBtZHl0b2UgbWR5dG9mIG1lX2RlcmQgbWVhbiBtZWFucyBtZWRpYW4gbWVtb3J5IG1lbXNpemUgbWVubCBtZXFwYXJzZSBtZXIgbWVyZyBtZXJnZSBtZXRhIG1mcCBtZnggbWhlbHAgbWhvZGRzIG1pbmJvdW5kIG1peGVkX2xsIG1peGVkX2xsX3JlcGFybSBta2Fzc2VydCBta2RpciBta21hdCBta3NwbGluZSBtbCBtbF81IG1sX2FkanMgbWxfYmhoaHMgbWxfY19kIG1sX2NoZWNrIG1sX2NsZWFyIG1sX2NudCBtbF9kZWJ1ZyBtbF9kZWZkIG1sX2UwIG1sX2UwX2JmZ3MgbWxfZTBfY3ljbGUgbWxfZTBfZGZwIG1sX2UwaSBtbF9lMSBtbF9lMV9iZmdzIG1sX2UxX2JoaGggbWxfZTFfY3ljbGUgbWxfZTFfZGZwIG1sX2UyIG1sX2UyX2N5Y2xlIG1sX2ViZmcwIG1sX2ViZnIwIG1sX2ViZnIxIG1sX2ViaDBxIG1sX2ViaGgwIG1sX2ViaHIwIG1sX2VicjBpIG1sX2VjcjBpIG1sX2VkZnAwIG1sX2VkZnIwIG1sX2VkZnIxIG1sX2VkcjBpIG1sX2VkcyBtbF9lZXIwaSBtbF9lZ3IwaSBtbF9lbGYgbWxfZWxmX2JmZ3MgbWxfZWxmX2JoaGggbWxfZWxmX2N5Y2xlIG1sX2VsZl9kZnAgbWxfZWxmaSBtbF9lbGZzIG1sX2VucjBpIG1sX2VucnIwIG1sX2VyZHUwIG1sX2VyZHUwX2JmZ3MgbWxfZXJkdTBfYmhoaCBtbF9lcmR1MF9iaGhocSBtbF9lcmR1MF9jeWNsZSBtbF9lcmR1MF9kZnAgbWxfZXJkdTBfbnJiZmdzIG1sX2V4ZGUgbWxfZm9vdG5vdGUgbWxfZ2VxbnIgbWxfZ3JhZDAgbWxfZ3JhcGggbWxfaGJoaGggbWxfaGQwIG1sX2hvbGQgbWxfaW5pdCBtbF9pbnYgbWxfbG9nIG1sX21heCBtbF9tbG91dCBtbF9tbG91dF84IG1sX21vZGVsIG1sX25iMCBtbF9vcHQgbWxfcCBtbF9wbG90IG1sX3F1ZXJ5IG1sX3JkZ3JkIG1sX3JlcG9yIG1sX3NfZSBtbF9zY29yZSBtbF9zZWFyYyBtbF90ZWNobmlxdWUgbWxfdW5ob2xkIG1sZXZhbCBtbGZfIG1sbWF0YnlzdW0gbWxtYXRzdW0gbWxvZyBtbG9naSBtbG9naXQgbWxvZ2l0X2Zvb3Rub3RlIG1sb2dpdF9wIG1sb3B0cyBtbHN1bSBtbHZlY3N1bSBtbmwwXyBtb3IgbW9yZSBtb3YgbW92ZSBtcHJvYml0IG1wcm9iaXRfbGYgbXByb2JpdF9wIG1yZHUwXyBtcmR1MV8gbXZkZWNvZGUgbXZlbmNvZGUgbXZyZWcgbXZyZWdfZXN0YXQgbnwwIG5icmVnIG5icmVnX2FsIG5icmVnX2xmIG5icmVnX3AgbmJyZWdfc3cgbmVzdHJlZyBuZXQgbmV3ZXkgbmV3ZXlfNyBuZXdleV9wIG5ld3MgbmwgbmxfNyBubF85IG5sXzlfcCBubF9wIG5sX3BfNyBubGNvbSBubGNvbV9wIG5sZXhwMiBubGV4cDJfNyBubGV4cDJhIG5sZXhwMmFfNyBubGV4cDMgbmxleHAzXzcgbmxnb20zIG5sZ29tM183IG5sZ29tNCBubGdvbTRfNyBubGluaXQgbmxsb2czIG5sbG9nM183IG5sbG9nNCBubGxvZzRfNyBubG9nX3JkIG5sb2dpdCBubG9naXRfcCBubG9naXRnZW4gbmxvZ2l0dHJlZSBubHByZWQgbm8gbm9icmVhayBub2kgbm9pcyBub2lzaSBub2lzaWwgbm9pc2lseSBub3RlIG5vdGVzIG5vdGVzX2RsZyBucHRyZW5kIG51bWxhYmVsIG51bWxpc3Qgb2RiYyBvbGRfdmVyIG9sbyBvbG9nIG9sb2dpIG9sb2dpX3N3IG9sb2dpdCBvbG9naXRfcCBvbG9naXRwIG9uIG9uZSBvbmV3IG9uZXdhIG9uZXdheSBvcF9jb2xubSBvcF9jb21wIG9wX2RpZmYgb3BfaW52IG9wX3N0ciBvcHIgb3BybyBvcHJvYiBvcHJvYl9zdyBvcHJvYmkgb3Byb2JpX3Agb3Byb2JpdCBvcHJvYml0cCBvcHRzX2V4Y2x1c2l2ZSBvcmRlciBvcnRob2cgb3J0aHBvbHkgb3Ugb3V0IG91dGYgb3V0Zmkgb3V0ZmlsIG91dGZpbGUgb3V0cyBvdXRzaCBvdXRzaGUgb3V0c2hlZSBvdXRzaGVldCBvdnRlc3QgcGFjIHBhY183IHBhbGV0dGUgcGFyc2UgcGFyc2VfZGlzc2ltIHBhdXNlIHBjYSBwY2FfOCBwY2FfZGlzcGxheSBwY2FfZXN0YXQgcGNhX3AgcGNhX3JvdGF0ZSBwY2FtYXQgcGNoYXJ0IHBjaGFydF83IHBjaGkgcGNoaV83IHBjb3JyIHBjdGlsZSBwZW50aXVtIHBlcmdyYW0gcGVyZ3JhbV83IHBlcm11dGUgcGVybXV0ZV84IHBlcnNvbmFsIHBldG9fc3QgcGtjb2xsYXBzZSBwa2Nyb3NzIHBrZXF1aXYgcGtleGFtaW5lIHBrZXhhbWluZV83IHBrc2hhcGUgcGtzdW1tIHBrc3VtbV83IHBsIHBsbyBwbG90IHBsdWdpbiBwbm9ybSBwbm9ybV83IHBvaXNnb2YgcG9pc3NfbGYgcG9pc3Nfc3cgcG9pc3NvX3AgcG9pc3NvbiBwb2lzc29uX2VzdGF0IHBvc3QgcG9zdGNsb3NlIHBvc3RmaWxlIHBvc3R1dGlsIHBwZXJyb24gcHIgcHJhaXMgcHJhaXNfZSBwcmFpc19lMiBwcmFpc19wIHByZWRpY3QgcHJlZGljdG5sIHByZXNlcnZlIHByaW50IHBybyBwcm9iIHByb2JpIHByb2JpdCBwcm9iaXRfZXN0YXQgcHJvYml0X3AgcHJvY190aW1lIHByb2NvdmVybGF5IHByb2NydXN0ZXMgcHJvY3J1c3Rlc19lc3RhdCBwcm9jcnVzdGVzX3AgcHJvZmlsZXIgcHJvZyBwcm9nciBwcm9ncmEgcHJvZ3JhbSBwcm9wIHByb3BvcnRpb24gcHJ0ZXN0IHBydGVzdGkgcHdjb3JyIHB3ZCBxXFxcXHMgcWJ5IHFieXMgcWNoaSBxY2hpXzcgcWxhZGRlciBxbGFkZGVyXzcgcW5vcm0gcW5vcm1fNyBxcXBsb3QgcXFwbG90XzcgcXJlZyBxcmVnX2MgcXJlZ19wIHFyZWdfc3cgcXUgcXVhZGNoayBxdWFudGlsZSBxdWFudGlsZV83IHF1ZSBxdWVyIHF1ZXJ5IHJhbmdlIHJhbmtzdW0gcmF0aW8gcmNoYXJ0IHJjaGFydF83IHJjb2YgcmVjYXN0IHJlY2xpbmsgcmVjb2RlIHJlZyByZWczIHJlZzNfcCByZWdkdyByZWdyIHJlZ3JlIHJlZ3JlX3AyIHJlZ3JlcyByZWdyZXNfcCByZWdyZXNzIHJlZ3Jlc3NfZXN0YXQgcmVncml2X3AgcmVtYXAgcmVuIHJlbmEgcmVuYW0gcmVuYW1lIHJlbnBmaXggcmVwZWF0IHJlcGxhY2UgcmVwb3J0IHJlc2hhcGUgcmVzdG9yZSByZXQgcmV0dSByZXR1ciByZXR1cm4gcm0gcm1kaXIgcm9idmFyIHJvY2NvbXAgcm9jY29tcF83IHJvY2NvbXBfOCByb2NmX2xmIHJvY2ZpdCByb2NmaXRfOCByb2Nnb2xkIHJvY3Bsb3Qgcm9jcGxvdF83IHJvY3RhYiByb2N0YWJfNyByb2xsaW5nIHJvbG9naXQgcm9sb2dpdF9wIHJvdCByb3RhIHJvdGF0IHJvdGF0ZSByb3RhdGVtYXQgcnJlZyBycmVnX3AgcnUgcnVuIHJ1bnRlc3QgcnZmcGxvdCBydmZwbG90XzcgcnZwcGxvdCBydnBwbG90Xzcgc2Egc2FmZXN1bSBzYW1wbGUgc2FtcHNpIHNhdiBzYXZlIHNhdmVkcmVzdWx0cyBzYXZlb2xkIHNjIHNjYSBzY2FsIHNjYWxhIHNjYWxhciBzY2F0dGVyIHNjbV9taW5lIHNjbyBzY29iX2xmIHNjb2JfcCBzY29iaV9zdyBzY29iaXQgc2NvciBzY29yZSBzY29yZXBsb3Qgc2NvcmVwbG90X2hlbHAgc2NyZWUgc2NyZWVwbG90IHNjcmVlcGxvdF9oZWxwIHNkdGVzdCBzZHRlc3RpIHNlIHNlYXJjaCBzZXBhcmF0ZSBzZXBlcmF0ZSBzZXJyYmFyIHNlcnJiYXJfNyBzZXJzZXQgc2V0IHNldF9kZWZhdWx0cyBzZnJhbmNpYSBzaCBzaGUgc2hlbCBzaGVsbCBzaGV3aGFydCBzaGV3aGFydF83IHNpZ25lc3RpbWF0aW9uc2FtcGxlIHNpZ25yYW5rIHNpZ250ZXN0IHNpbXVsIHNpbXVsXzcgc2ltdWxhdGUgc2ltdWxhdGVfOCBza3Rlc3Qgc2xlZXAgc2xvZ2l0IHNsb2dpdF9kMiBzbG9naXRfcCBzbW9vdGggc25hcHNwYW4gc28gc29yIHNvcnQgc3BlYXJtYW4gc3Bpa2VwbG90IHNwaWtlcGxvdF83IHNwaWtlcGx0IHNwbGluZV94IHNwbGl0IHNxcmVnIHNxcmVnX3Agc3JldCBzcmV0dSBzcmV0dXIgc3JldHVybiBzc2Mgc3Qgc3RfY3Qgc3RfaGMgc3RfaGNkIHN0X2hjZF9zaCBzdF9pcyBzdF9pc3N5cyBzdF9ub3RlIHN0X3Byb21vIHN0X3NldCBzdF9zaG93IHN0X3NtcGwgc3Rfc3ViaWQgc3RhY2sgc3RhdHNieSBzdGF0c2J5Xzggc3RiYXNlIHN0Y2kgc3RjaV83IHN0Y294IHN0Y294X2VzdGF0IHN0Y294X2ZyIHN0Y294X2ZyX2xsIHN0Y294X3Agc3Rjb3hfc3cgc3Rjb3hrbSBzdGNveGttXzcgc3Rjc3RhdCBzdGN1cnYgc3RjdXJ2ZSBzdGN1cnZlXzcgc3RkZXMgc3RlbSBzdGVwd2lzZSBzdGVyZWcgc3RmaWxsIHN0Z2VuIHN0aXIgc3Rqb2luIHN0bWMgc3RtaCBzdHBocGxvdCBzdHBocGxvdF83IHN0cGh0ZXN0IHN0cGh0ZXN0Xzcgc3RwdGltZSBzdHJhdGUgc3RyYXRlXzcgc3RyZWcgc3RyZWdfc3cgc3RyZXNldCBzdHMgc3RzXzcgc3RzZXQgc3RzcGxpdCBzdHN1bSBzdHRvY2Mgc3R0b2N0IHN0dmFyeSBzdHdlaWIgc3Ugc3Vlc3Qgc3Vlc3RfOCBzdW0gc3VtbSBzdW1tYSBzdW1tYXIgc3VtbWFyaSBzdW1tYXJpeiBzdW1tYXJpemUgc3VuZmxvd2VyIHN1cmVnIHN1cnZjdXJ2IHN1cnZzdW0gc3ZhciBzdmFyX3Agc3ZtYXQgc3Z5IHN2eV9kaXNwIHN2eV9kcmVnIHN2eV9lc3Qgc3Z5X2VzdF83IHN2eV9lc3RhdCBzdnlfZ2V0IHN2eV9nbmJyZWdfcCBzdnlfaGVhZCBzdnlfaGVhZGVyIHN2eV9oZWNrbWFuX3Agc3Z5X2hlY2twcm9iX3Agc3Z5X2ludHJlZ19wIHN2eV9pdnJlZ19wIHN2eV9sb2dpc3RpY19wIHN2eV9sb2dpdF9wIHN2eV9tbG9naXRfcCBzdnlfbmJyZWdfcCBzdnlfb2xvZ2l0X3Agc3Z5X29wcm9iaXRfcCBzdnlfcG9pc3Nvbl9wIHN2eV9wcm9iaXRfcCBzdnlfcmVncmVzc19wIHN2eV9zdWIgc3Z5X3N1Yl83IHN2eV94IHN2eV94Xzcgc3Z5X3hfcCBzdnlkZXMgc3Z5ZGVzXzggc3Z5Z2VuIHN2eWduYnJlZyBzdnloZWNrbWFuIHN2eWhlY2twcm9iIHN2eWludHJlZyBzdnlpbnRyZWdfNyBzdnlpbnRyZyBzdnlpdnJlZyBzdnlsYyBzdnlsb2dfcCBzdnlsb2dpdCBzdnltYXJrb3V0IHN2eW1hcmtvdXRfOCBzdnltZWFuIHN2eW1sb2cgc3Z5bWxvZ2l0IHN2eW5icmVnIHN2eW9sb2cgc3Z5b2xvZ2l0IHN2eW9wcm9iIHN2eW9wcm9iaXQgc3Z5b3B0cyBzdnlwb2lzIHN2eXBvaXNfNyBzdnlwb2lzc29uIHN2eXByb2JpdCBzdnlwcm9idCBzdnlwcm9wIHN2eXByb3BfNyBzdnlyYXRpbyBzdnlyZWcgc3Z5cmVnX3Agc3Z5cmVncmVzcyBzdnlzZXQgc3Z5c2V0Xzcgc3Z5c2V0Xzggc3Z5dGFiIHN2eXRhYl83IHN2eXRlc3Qgc3Z5dG90YWwgc3cgc3dfOCBzd2NucmVnIHN3Y294IHN3ZXJlZyBzd2lsayBzd2xvZ2lzIHN3bG9naXQgc3dvbG9naXQgc3dvcHJidCBzd3BvaXMgc3dwcm9iaXQgc3dxcmVnIHN3dG9iaXQgc3d3ZWliIHN5bW1ldHJ5IHN5bW1pIHN5bXBsb3Qgc3ltcGxvdF83IHN5bnRheCBzeXNkZXNjcmliZSBzeXNkaXIgc3lzdXNlIHN6cm9ldGVyIHRhIHRhYiB0YWIxIHRhYjIgdGFiX29yIHRhYmQgdGFiZGkgdGFiZGlzIHRhYmRpc3AgdGFiaSB0YWJsZSB0YWJvZGRzIHRhYm9kZHNfNyB0YWJzdGF0IHRhYnUgdGFidWwgdGFidWxhIHRhYnVsYXQgdGFidWxhdGUgdGUgdGVtcGZpbGUgdGVtcG5hbWUgdGVtcHZhciB0ZXMgdGVzdCB0ZXN0bmwgdGVzdHBhcm0gdGVzdHN0ZCB0ZXRyYWNob3JpYyB0aW1lX2l0IHRpbWVyIHRpcyB0b2IgdG9iaSB0b2JpdCB0b2JpdF9wIHRvYml0X3N3IHRva2VuIHRva2VuaSB0b2tlbml6IHRva2VuaXplIHRvc3RyaW5nIHRvdGFsIHRyYW5zbGF0ZSB0cmFuc2xhdG9yIHRyYW5zbWFwIHRyZWF0X2xsIHRyZWF0cl9wIHRyZWF0cmVnIHRyaW0gdHJpbWZpbGwgdHJuYl9jb25zIHRybmJfbWVhbiB0cnBvaXNzX2QyIHRydW5jX2xsIHRydW5jcl9wIHRydW5jcmVnIHRzYXBwZW5kIHRzZXQgdHNmaWxsIHRzbGluZSB0c2xpbmVfZXggdHNyZXBvcnQgdHNyZXZhciB0c3JsaW5lIHRzc2V0IHRzc21vb3RoIHRzdW5hYiB0dGVzdCB0dGVzdGkgdHV0X2NoayB0dXRfd2FpdCB0dXRvcmlhbCB0dyB0d2FyZV9zdCB0d28gdHdvd2F5IHR3b3dheV9fZnBmaXRfc2Vyc2V0IHR3b3dheV9fZnVuY3Rpb25fZ2VuIHR3b3dheV9faGlzdG9ncmFtX2dlbiB0d293YXlfX2lwb2ludF9zZXJzZXQgdHdvd2F5X19pcG9pbnRzX3NlcnNldCB0d293YXlfX2tkZW5zaXR5X2dlbiB0d293YXlfX2xmaXRfc2Vyc2V0IHR3b3dheV9fbm9ybWdlbl9nZW4gdHdvd2F5X19wY2lfc2Vyc2V0IHR3b3dheV9fcWZpdF9zZXJzZXQgdHdvd2F5X19zY2F0dGVyaV9zZXJzZXQgdHdvd2F5X19zdW5mbG93ZXJfZ2VuIHR3b3dheV9rc21fc2Vyc2V0IHR5IHR5cCB0eXBlIHR5cGVvZiB1fDAgdW5hYiB1bmFiYnJldiB1bmFiY21kIHVwZGF0ZSB1cyB1c2UgdXNlbGFiZWwgdmFyIHZhcl9ta2NvbXBhbmlvbiB2YXJfcCB2YXJiYXNpYyB2YXJmY2FzdCB2YXJncmFuZ2VyIHZhcmlyZiB2YXJpcmZfYWRkIHZhcmlyZl9jZ3JhcGggdmFyaXJmX2NyZWF0ZSB2YXJpcmZfY3RhYmxlIHZhcmlyZl9kZXNjcmliZSB2YXJpcmZfZGlyIHZhcmlyZl9kcm9wIHZhcmlyZl9lcmFzZSB2YXJpcmZfZ3JhcGggdmFyaXJmX29ncmFwaCB2YXJpcmZfcmVuYW1lIHZhcmlyZl9zZXQgdmFyaXJmX3RhYmxlIHZhcmxpc3QgdmFybG1hciB2YXJub3JtIHZhcnNvYyB2YXJzdGFibGUgdmFyc3RhYmxlX3cgdmFyc3RhYmxlX3cyIHZhcndsZSB2Y2UgdmVjIHZlY19mZXZkIHZlY19ta3BoaSB2ZWNfcCB2ZWNfcF93IHZlY2lyZl9jcmVhdGUgdmVjbG1hciB2ZWNsbWFyX3cgdmVjbm9ybSB2ZWNub3JtX3cgdmVjcmFuayB2ZWNzdGFibGUgdmVyaW5zdCB2ZXJzIHZlcnNpIHZlcnNpbyB2ZXJzaW9uIHZpZXcgdmlld3NvdXJjZSB2aWYgdndscyB3ZGF0ZXRvZiB3ZWJkZXNjcmliZSB3ZWJzZWVrIHdlYnVzZSB3ZWliMV9sZiB3ZWliMl9sZiB3ZWliX2xmIHdlaWJfbGYwIHdlaWJoZXRfZ2xmIHdlaWJoZXRfZ2xmX3NoIHdlaWJoZXRfZ2xmYSB3ZWliaGV0X2dsZmFfc2ggd2VpYmhldF9ncCB3ZWliaGV0X2lsZiB3ZWliaGV0X2lsZl9zaCB3ZWliaGV0X2lsZmEgd2VpYmhldF9pbGZhX3NoIHdlaWJoZXRfaXAgd2VpYnVfc3cgd2VpYnVsX3Agd2VpYnVsbCB3ZWlidWxsX2Mgd2VpYnVsbF9zIHdlaWJ1bGxoZXQgd2ggd2hlbHAgd2hpIHdoaWNoIHdoaWwgd2hpbGUgd2lsY19zdCB3aWxjb3hvbiB3aW4gd2luZCB3aW5kbyB3aW5kb3cgd2luZXhlYyB3bnRlc3RiIHdudGVzdGJfNyB3bnRlc3RxIHhjaGFydCB4Y2hhcnRfNyB4Y29yciB4Y29ycl83IHhpIHhpXzYgeG1sc2F2IHhtbHNhdmUgeG1sdXNlIHhwb3NlIHhzaCB4c2hlIHhzaGVsIHhzaGVsbCB4dF9paXMgeHRfdGlzIHh0YWJfcCB4dGFib25kIHh0YmluX3AgeHRjbG9nIHh0Y2xvZ2xvZyB4dGNsb2dsb2dfOCB4dGNsb2dsb2dfZDIgeHRjbG9nbG9nX3BhX3AgeHRjbG9nbG9nX3JlX3AgeHRjbnRfcCB4dGNvcnIgeHRkYXRhIHh0ZGVzIHh0ZnJvbnRfcCB4dGZyb250aWVyIHh0Z2VlIHh0Z2VlX2VsaW5rIHh0Z2VlX2VzdGF0IHh0Z2VlX21ha2VpdmFyIHh0Z2VlX3AgeHRnZWVfcGxpbmsgeHRnbHMgeHRnbHNfcCB4dGhhdXMgeHRoYXVzbWFuIHh0aHRfcCB4dGh0YXlsb3IgeHRpbGUgeHRpbnRfcCB4dGludHJlZyB4dGludHJlZ184IHh0aW50cmVnX2QyIHh0aW50cmVnX3AgeHRpdnBfMSB4dGl2cF8yIHh0aXZyZWcgeHRsaW5lIHh0bGluZV9leCB4dGxvZ2l0IHh0bG9naXRfOCB4dGxvZ2l0X2QyIHh0bG9naXRfZmVfcCB4dGxvZ2l0X3BhX3AgeHRsb2dpdF9yZV9wIHh0bWl4ZWQgeHRtaXhlZF9lc3RhdCB4dG1peGVkX3AgeHRuYl9mZSB4dG5iX2xmIHh0bmJyZWcgeHRuYnJlZ19wYV9wIHh0bmJyZWdfcmVmZV9wIHh0cGNzZSB4dHBjc2VfcCB4dHBvaXMgeHRwb2lzc29uIHh0cG9pc3Nvbl9kMiB4dHBvaXNzb25fcGFfcCB4dHBvaXNzb25fcmVmZV9wIHh0cHJlZCB4dHByb2JpdCB4dHByb2JpdF84IHh0cHJvYml0X2QyIHh0cHJvYml0X3JlX3AgeHRwc19mZSB4dHBzX2xmIHh0cHNfcmVuIHh0cHNfcmVuXzggeHRyYXJfcCB4dHJjIHh0cmNfcCB4dHJjaGggeHRyZWZlX3AgeHRyZWcgeHRyZWdfYmUgeHRyZWdfZmUgeHRyZWdfbWwgeHRyZWdfcGFfcCB4dHJlZ19yZSB4dHJlZ2FyIHh0cmVyZV9wIHh0c2V0IHh0c2ZfbGwgeHRzZl9sbHRpIHh0c3VtIHh0dGFiIHh0dGVzdDAgeHR0b2JpdCB4dHRvYml0XzggeHR0b2JpdF9wIHh0dHJhbnMgeXggeXh2aWV3X19iYXJsaWtlX2RyYXcgeXh2aWV3X2FyZWFfZHJhdyB5eHZpZXdfYmFyX2RyYXcgeXh2aWV3X2RvdF9kcmF3IHl4dmlld19kcm9wbGluZV9kcmF3IHl4dmlld19mdW5jdGlvbl9kcmF3IHl4dmlld19pYXJyb3dfZHJhdyB5eHZpZXdfaWxhYmVsc19kcmF3IHl4dmlld19ub3JtYWxfZHJhdyB5eHZpZXdfcGNhcnJvd19kcmF3IHl4dmlld19wY2JhcnJvd19kcmF3IHl4dmlld19wY2NhcHN5bV9kcmF3IHl4dmlld19wY3NjYXR0ZXJfZHJhdyB5eHZpZXdfcGNzcGlrZV9kcmF3IHl4dmlld19yYXJlYV9kcmF3IHl4dmlld19yYmFyX2RyYXcgeXh2aWV3X3JiYXJtX2RyYXcgeXh2aWV3X3JjYXBfZHJhdyB5eHZpZXdfcmNhcHN5bV9kcmF3IHl4dmlld19yY29ubmVjdGVkX2RyYXcgeXh2aWV3X3JsaW5lX2RyYXcgeXh2aWV3X3JzY2F0dGVyX2RyYXcgeXh2aWV3X3JzcGlrZV9kcmF3IHl4dmlld19zcGlrZV9kcmF3IHl4dmlld19zdW5mbG93ZXJfZHJhdyB6YXBfcyB6aW5iIHppbmJfbGxmIHppbmJfcGxmIHppcCB6aXBfbGxmIHppcF9wIHppcF9wbGYgenRfY3RfNSB6dF9oY181IHp0X2hjZF81IHp0X2lzXzUgenRfaXNzXzUgenRfc2hvXzUgenRfc21wXzUgenRiYXNlXzUgenRjb3hfNSB6dGRlc181IHp0ZXJlZ181IHp0ZmlsbF81IHp0Z2VuXzUgenRpcl81IHp0am9pbl81IHp0bmIgenRuYl9wIHp0cCB6dHBfcCB6dHNfNSB6dHNldF81IHp0c3BsaV81IHp0c3VtXzUgenR0b2N0XzUgenR2YXJ5XzUgenR3ZWliXzUnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL2BbYS16QS1aMC05X10rJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXHs/W2EtekEtWjAtOV9dK1xcfT8vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtiZWdpbjogJ2BcIlteXFxyXFxuXSo/XCJcXCcnfSxcbiAgICAgICAgICB7YmVnaW46ICdcIlteXFxyXFxuXCJdKlwiJ31cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcYihhYnN8YWNvc3xhc2lufGF0YW58YXRhbjJ8YXRhbmh8Y2VpbHxjbG9nbG9nfGNvbWJ8Y29zfGRpZ2FtbWF8ZXhwfGZsb29yfGludmNsb2dsb2d8aW52bG9naXR8bG58bG5mYWN0fGxuZmFjdG9yaWFsfGxuZ2FtbWF8bG9nfGxvZzEwfG1heHxtaW58bW9kfHJlbGRpZnxyb3VuZHxzaWdufHNpbnxzcXJ0fHN1bXx0YW58dGFuaHx0cmlnYW1tYXx0cnVuY3xiZXRhZGVufEJpbm9taWFsfGJpbm9ybXxiaW5vcm1hbHxjaGkyfGNoaTJ0YWlsfGRnYW1tYXBkYXxkZ2FtbWFwZGFkYXxkZ2FtbWFwZGFkeHxkZ2FtbWFwZHh8ZGdhbW1hcGR4ZHh8RnxGZGVufEZ0YWlsfGdhbW1hZGVufGdhbW1hcHxpYmV0YXxpbnZiaW5vbWlhbHxpbnZjaGkyfGludmNoaTJ0YWlsfGludkZ8aW52RnRhaWx8aW52Z2FtbWFwfGludmliZXRhfGludm5jaGkyfGludm5GdGFpbHxpbnZuaWJldGF8aW52bm9ybXxpbnZub3JtYWx8aW52dHRhaWx8bmJldGFkZW58bmNoaTJ8bkZkZW58bkZ0YWlsfG5pYmV0YXxub3JtfG5vcm1hbHxub3JtYWxkZW58bm9ybWR8bnBuY2hpMnx0ZGVufHR0YWlsfHVuaWZvcm18YWJicmV2fGNoYXJ8aW5kZXh8aW5kZXhub3R8bGVuZ3RofGxvd2VyfGx0cmltfG1hdGNofHBsdXJhbHxwcm9wZXJ8cmVhbHxyZWdleG18cmVnZXhyfHJlZ2V4c3xyZXZlcnNlfHJ0cmltfHN0cmluZ3xzdHJsZW58c3RybG93ZXJ8c3RybHRyaW18c3RybWF0Y2h8c3Ryb2ZyZWFsfHN0cnBvc3xzdHJwcm9wZXJ8c3RycmV2ZXJzZXxzdHJydHJpbXxzdHJ0cmltfHN0cnVwcGVyfHN1Ymluc3RyfHN1Ymlud29yZHxzdWJzdHJ8dHJpbXx1cHBlcnx3b3JkfHdvcmRjb3VudHxfY2FsbGVyfGF1dG9jb2RlfGJ5dGVvcmRlcnxjaG9wfGNsaXB8Y29uZHxlfGVwc2RvdWJsZXxlcHNmbG9hdHxncm91cHxpbmxpc3R8aW5yYW5nZXxpcmVjb2RlfG1hdHJpeHxtYXhieXRlfG1heGRvdWJsZXxtYXhmbG9hdHxtYXhpbnR8bWF4bG9uZ3xtaXxtaW5ieXRlfG1pbmRvdWJsZXxtaW5mbG9hdHxtaW5pbnR8bWlubG9uZ3xtaXNzaW5nfHJ8cmVjb2RlfHJlcGxheXxyZXR1cm58c3xzY2FsYXJ8ZHxkYXRlfGRheXxkb3d8ZG95fGhhbGZ5ZWFyfG1keXxtb250aHxxdWFydGVyfHdlZWt8eWVhcnxkfGRhaWx5fGRvZmR8ZG9maHxkb2ZtfGRvZnF8ZG9md3xkb2Z5fGh8aGFsZnllYXJseXxob2ZkfG18bW9mZHxtb250aGx5fHF8cW9mZHxxdWFydGVybHl8dGlufHR3aXRoaW58d3x3ZWVrbHl8d29mZHx5fHllYXJseXx5aHx5bXx5b2ZkfHlxfHl3fGNob2xlc2t5fGNvbG51bWJ8Y29sc29mfGNvcnJ8ZGV0fGRpYWd8ZGlhZzBjbnR8ZWx8Z2V0fGhhZGFtYXJkfEl8aW52fGludnN5bXxpc3N5bXxpc3N5bW1ldHJpY3xKfG1hdG1pc3Npbmd8bWF0dW5pZm9ybXxtcmVsZGlmfG51bGxtYXR8cm93bnVtYnxyb3dzb2Z8c3dlZXB8c3ltaW52fHRyYWNlfHZlY3x2ZWNkaWFnKSg/PVxcXFwoKSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIGhsanMuQ09NTUVOVCgnXlsgXFx0XSpcXFxcKi4qJCcsIGZhbHNlKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RFUDIxX0lERU5UX1JFID0gJ1tBLVpfXVtBLVowLTlfLl0qJztcbiAgdmFyIFNURVAyMV9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiAnSEVBREVSIEVORFNFQyBEQVRBJ1xuICB9O1xuICB2YXIgU1RFUDIxX1NUQVJUID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnSVNPLTEwMzAzLTIxOycsXG4gICAgcmVsZXZhbmNlOiAxMFxuICB9O1xuICB2YXIgU1RFUDIxX0NMT1NFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnRU5ELUlTTy0xMDMwMy0yMTsnLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsncDIxJywgJ3N0ZXAnLCAnc3RwJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSwgLy8gU1RFUCAyMSBpcyBjYXNlIGluc2Vuc2l0aXZlIGluIHRoZW9yeSwgaW4gcHJhY3RpY2UgYWxsIG5vbi1jb21tZW50cyBhcmUgY2FwaXRhbGl6ZWQuXG4gICAgbGV4ZW1lczogU1RFUDIxX0lERU5UX1JFLFxuICAgIGtleXdvcmRzOiBTVEVQMjFfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFNURVAyMV9TVEFSVCxcbiAgICAgIFNURVAyMV9DTE9TRSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoJy9cXFxcKlxcXFwqIScsICdcXFxcKi8nKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtpbGxlZ2FsOiBudWxsfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IFwiJ1wiLCBlbmQ6IFwiJ1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnIycsIGVuZDogJ1xcXFxkKycsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcblxuICB2YXIgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5JREVOVF9SRVxuICB9O1xuXG4gIHZhciBIRVhfQ09MT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJyMoW2EtZkEtRjAtOV17Nn18W2EtZkEtRjAtOV17M30pJ1xuICB9O1xuXG4gIHZhciBBVF9LRVlXT1JEUyA9IFtcbiAgICAnY2hhcnNldCcsXG4gICAgJ2NzcycsXG4gICAgJ2RlYnVnJyxcbiAgICAnZXh0ZW5kJyxcbiAgICAnZm9udC1mYWNlJyxcbiAgICAnZm9yJyxcbiAgICAnaW1wb3J0JyxcbiAgICAnaW5jbHVkZScsXG4gICAgJ21lZGlhJyxcbiAgICAnbWl4aW4nLFxuICAgICdwYWdlJyxcbiAgICAnd2FybicsXG4gICAgJ3doaWxlJ1xuICBdO1xuXG4gIHZhciBQU0VVRE9fU0VMRUNUT1JTID0gW1xuICAgICdhZnRlcicsXG4gICAgJ2JlZm9yZScsXG4gICAgJ2ZpcnN0LWxldHRlcicsXG4gICAgJ2ZpcnN0LWxpbmUnLFxuICAgICdhY3RpdmUnLFxuICAgICdmaXJzdC1jaGlsZCcsXG4gICAgJ2ZvY3VzJyxcbiAgICAnaG92ZXInLFxuICAgICdsYW5nJyxcbiAgICAnbGluaycsXG4gICAgJ3Zpc2l0ZWQnXG4gIF07XG5cbiAgdmFyIFRBR1MgPSBbXG4gICAgJ2EnLFxuICAgICdhYmJyJyxcbiAgICAnYWRkcmVzcycsXG4gICAgJ2FydGljbGUnLFxuICAgICdhc2lkZScsXG4gICAgJ2F1ZGlvJyxcbiAgICAnYicsXG4gICAgJ2Jsb2NrcXVvdGUnLFxuICAgICdib2R5JyxcbiAgICAnYnV0dG9uJyxcbiAgICAnY2FudmFzJyxcbiAgICAnY2FwdGlvbicsXG4gICAgJ2NpdGUnLFxuICAgICdjb2RlJyxcbiAgICAnZGQnLFxuICAgICdkZWwnLFxuICAgICdkZXRhaWxzJyxcbiAgICAnZGZuJyxcbiAgICAnZGl2JyxcbiAgICAnZGwnLFxuICAgICdkdCcsXG4gICAgJ2VtJyxcbiAgICAnZmllbGRzZXQnLFxuICAgICdmaWdjYXB0aW9uJyxcbiAgICAnZmlndXJlJyxcbiAgICAnZm9vdGVyJyxcbiAgICAnZm9ybScsXG4gICAgJ2gxJyxcbiAgICAnaDInLFxuICAgICdoMycsXG4gICAgJ2g0JyxcbiAgICAnaDUnLFxuICAgICdoNicsXG4gICAgJ2hlYWRlcicsXG4gICAgJ2hncm91cCcsXG4gICAgJ2h0bWwnLFxuICAgICdpJyxcbiAgICAnaWZyYW1lJyxcbiAgICAnaW1nJyxcbiAgICAnaW5wdXQnLFxuICAgICdpbnMnLFxuICAgICdrYmQnLFxuICAgICdsYWJlbCcsXG4gICAgJ2xlZ2VuZCcsXG4gICAgJ2xpJyxcbiAgICAnbWFyaycsXG4gICAgJ21lbnUnLFxuICAgICduYXYnLFxuICAgICdvYmplY3QnLFxuICAgICdvbCcsXG4gICAgJ3AnLFxuICAgICdxJyxcbiAgICAncXVvdGUnLFxuICAgICdzYW1wJyxcbiAgICAnc2VjdGlvbicsXG4gICAgJ3NwYW4nLFxuICAgICdzdHJvbmcnLFxuICAgICdzdW1tYXJ5JyxcbiAgICAnc3VwJyxcbiAgICAndGFibGUnLFxuICAgICd0Ym9keScsXG4gICAgJ3RkJyxcbiAgICAndGV4dGFyZWEnLFxuICAgICd0Zm9vdCcsXG4gICAgJ3RoJyxcbiAgICAndGhlYWQnLFxuICAgICd0aW1lJyxcbiAgICAndHInLFxuICAgICd1bCcsXG4gICAgJ3ZhcicsXG4gICAgJ3ZpZGVvJ1xuICBdO1xuXG4gIHZhciBMT09LQUhFQURfVEFHX0VORCA9ICcoPz1bXFxcXC5cXFxcc1xcXFxuXFxcXFtcXFxcOixdKSc7XG5cbiAgdmFyIEFUVFJJQlVURVMgPSBbXG4gICAgJ2FsaWduLWNvbnRlbnQnLFxuICAgICdhbGlnbi1pdGVtcycsXG4gICAgJ2FsaWduLXNlbGYnLFxuICAgICdhbmltYXRpb24nLFxuICAgICdhbmltYXRpb24tZGVsYXknLFxuICAgICdhbmltYXRpb24tZGlyZWN0aW9uJyxcbiAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJyxcbiAgICAnYW5pbWF0aW9uLWZpbGwtbW9kZScsXG4gICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnLFxuICAgICdhbmltYXRpb24tbmFtZScsXG4gICAgJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJyxcbiAgICAnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsXG4gICAgJ2F1dG8nLFxuICAgICdiYWNrZmFjZS12aXNpYmlsaXR5JyxcbiAgICAnYmFja2dyb3VuZCcsXG4gICAgJ2JhY2tncm91bmQtYXR0YWNobWVudCcsXG4gICAgJ2JhY2tncm91bmQtY2xpcCcsXG4gICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlJyxcbiAgICAnYmFja2dyb3VuZC1vcmlnaW4nLFxuICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uJyxcbiAgICAnYmFja2dyb3VuZC1yZXBlYXQnLFxuICAgICdiYWNrZ3JvdW5kLXNpemUnLFxuICAgICdib3JkZXInLFxuICAgICdib3JkZXItYm90dG9tJyxcbiAgICAnYm9yZGVyLWJvdHRvbS1jb2xvcicsXG4gICAgJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnLFxuICAgICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cycsXG4gICAgJ2JvcmRlci1ib3R0b20tc3R5bGUnLFxuICAgICdib3JkZXItYm90dG9tLXdpZHRoJyxcbiAgICAnYm9yZGVyLWNvbGxhcHNlJyxcbiAgICAnYm9yZGVyLWNvbG9yJyxcbiAgICAnYm9yZGVyLWltYWdlJyxcbiAgICAnYm9yZGVyLWltYWdlLW91dHNldCcsXG4gICAgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLFxuICAgICdib3JkZXItaW1hZ2Utc2xpY2UnLFxuICAgICdib3JkZXItaW1hZ2Utc291cmNlJyxcbiAgICAnYm9yZGVyLWltYWdlLXdpZHRoJyxcbiAgICAnYm9yZGVyLWxlZnQnLFxuICAgICdib3JkZXItbGVmdC1jb2xvcicsXG4gICAgJ2JvcmRlci1sZWZ0LXN0eWxlJyxcbiAgICAnYm9yZGVyLWxlZnQtd2lkdGgnLFxuICAgICdib3JkZXItcmFkaXVzJyxcbiAgICAnYm9yZGVyLXJpZ2h0JyxcbiAgICAnYm9yZGVyLXJpZ2h0LWNvbG9yJyxcbiAgICAnYm9yZGVyLXJpZ2h0LXN0eWxlJyxcbiAgICAnYm9yZGVyLXJpZ2h0LXdpZHRoJyxcbiAgICAnYm9yZGVyLXNwYWNpbmcnLFxuICAgICdib3JkZXItc3R5bGUnLFxuICAgICdib3JkZXItdG9wJyxcbiAgICAnYm9yZGVyLXRvcC1jb2xvcicsXG4gICAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXMnLFxuICAgICdib3JkZXItdG9wLXJpZ2h0LXJhZGl1cycsXG4gICAgJ2JvcmRlci10b3Atc3R5bGUnLFxuICAgICdib3JkZXItdG9wLXdpZHRoJyxcbiAgICAnYm9yZGVyLXdpZHRoJyxcbiAgICAnYm90dG9tJyxcbiAgICAnYm94LWRlY29yYXRpb24tYnJlYWsnLFxuICAgICdib3gtc2hhZG93JyxcbiAgICAnYm94LXNpemluZycsXG4gICAgJ2JyZWFrLWFmdGVyJyxcbiAgICAnYnJlYWstYmVmb3JlJyxcbiAgICAnYnJlYWstaW5zaWRlJyxcbiAgICAnY2FwdGlvbi1zaWRlJyxcbiAgICAnY2xlYXInLFxuICAgICdjbGlwJyxcbiAgICAnY2xpcC1wYXRoJyxcbiAgICAnY29sb3InLFxuICAgICdjb2x1bW4tY291bnQnLFxuICAgICdjb2x1bW4tZmlsbCcsXG4gICAgJ2NvbHVtbi1nYXAnLFxuICAgICdjb2x1bW4tcnVsZScsXG4gICAgJ2NvbHVtbi1ydWxlLWNvbG9yJyxcbiAgICAnY29sdW1uLXJ1bGUtc3R5bGUnLFxuICAgICdjb2x1bW4tcnVsZS13aWR0aCcsXG4gICAgJ2NvbHVtbi1zcGFuJyxcbiAgICAnY29sdW1uLXdpZHRoJyxcbiAgICAnY29sdW1ucycsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjb3VudGVyLWluY3JlbWVudCcsXG4gICAgJ2NvdW50ZXItcmVzZXQnLFxuICAgICdjdXJzb3InLFxuICAgICdkaXJlY3Rpb24nLFxuICAgICdkaXNwbGF5JyxcbiAgICAnZW1wdHktY2VsbHMnLFxuICAgICdmaWx0ZXInLFxuICAgICdmbGV4JyxcbiAgICAnZmxleC1iYXNpcycsXG4gICAgJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgICAnZmxleC1mbG93JyxcbiAgICAnZmxleC1ncm93JyxcbiAgICAnZmxleC1zaHJpbmsnLFxuICAgICdmbGV4LXdyYXAnLFxuICAgICdmbG9hdCcsXG4gICAgJ2ZvbnQnLFxuICAgICdmb250LWZhbWlseScsXG4gICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycsXG4gICAgJ2ZvbnQta2VybmluZycsXG4gICAgJ2ZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUnLFxuICAgICdmb250LXNpemUnLFxuICAgICdmb250LXNpemUtYWRqdXN0JyxcbiAgICAnZm9udC1zdHJldGNoJyxcbiAgICAnZm9udC1zdHlsZScsXG4gICAgJ2ZvbnQtdmFyaWFudCcsXG4gICAgJ2ZvbnQtdmFyaWFudC1saWdhdHVyZXMnLFxuICAgICdmb250LXdlaWdodCcsXG4gICAgJ2hlaWdodCcsXG4gICAgJ2h5cGhlbnMnLFxuICAgICdpY29uJyxcbiAgICAnaW1hZ2Utb3JpZW50YXRpb24nLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnLFxuICAgICdpbWFnZS1yZXNvbHV0aW9uJyxcbiAgICAnaW1lLW1vZGUnLFxuICAgICdpbmhlcml0JyxcbiAgICAnaW5pdGlhbCcsXG4gICAgJ2p1c3RpZnktY29udGVudCcsXG4gICAgJ2xlZnQnLFxuICAgICdsZXR0ZXItc3BhY2luZycsXG4gICAgJ2xpbmUtaGVpZ2h0JyxcbiAgICAnbGlzdC1zdHlsZScsXG4gICAgJ2xpc3Qtc3R5bGUtaW1hZ2UnLFxuICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJyxcbiAgICAnbGlzdC1zdHlsZS10eXBlJyxcbiAgICAnbWFyZ2luJyxcbiAgICAnbWFyZ2luLWJvdHRvbScsXG4gICAgJ21hcmdpbi1sZWZ0JyxcbiAgICAnbWFyZ2luLXJpZ2h0JyxcbiAgICAnbWFyZ2luLXRvcCcsXG4gICAgJ21hcmtzJyxcbiAgICAnbWFzaycsXG4gICAgJ21heC1oZWlnaHQnLFxuICAgICdtYXgtd2lkdGgnLFxuICAgICdtaW4taGVpZ2h0JyxcbiAgICAnbWluLXdpZHRoJyxcbiAgICAnbmF2LWRvd24nLFxuICAgICduYXYtaW5kZXgnLFxuICAgICduYXYtbGVmdCcsXG4gICAgJ25hdi1yaWdodCcsXG4gICAgJ25hdi11cCcsXG4gICAgJ25vbmUnLFxuICAgICdub3JtYWwnLFxuICAgICdvYmplY3QtZml0JyxcbiAgICAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgICAnb3BhY2l0eScsXG4gICAgJ29yZGVyJyxcbiAgICAnb3JwaGFucycsXG4gICAgJ291dGxpbmUnLFxuICAgICdvdXRsaW5lLWNvbG9yJyxcbiAgICAnb3V0bGluZS1vZmZzZXQnLFxuICAgICdvdXRsaW5lLXN0eWxlJyxcbiAgICAnb3V0bGluZS13aWR0aCcsXG4gICAgJ292ZXJmbG93JyxcbiAgICAnb3ZlcmZsb3ctd3JhcCcsXG4gICAgJ292ZXJmbG93LXgnLFxuICAgICdvdmVyZmxvdy15JyxcbiAgICAncGFkZGluZycsXG4gICAgJ3BhZGRpbmctYm90dG9tJyxcbiAgICAncGFkZGluZy1sZWZ0JyxcbiAgICAncGFkZGluZy1yaWdodCcsXG4gICAgJ3BhZGRpbmctdG9wJyxcbiAgICAncGFnZS1icmVhay1hZnRlcicsXG4gICAgJ3BhZ2UtYnJlYWstYmVmb3JlJyxcbiAgICAncGFnZS1icmVhay1pbnNpZGUnLFxuICAgICdwZXJzcGVjdGl2ZScsXG4gICAgJ3BlcnNwZWN0aXZlLW9yaWdpbicsXG4gICAgJ3BvaW50ZXItZXZlbnRzJyxcbiAgICAncG9zaXRpb24nLFxuICAgICdxdW90ZXMnLFxuICAgICdyZXNpemUnLFxuICAgICdyaWdodCcsXG4gICAgJ3RhYi1zaXplJyxcbiAgICAndGFibGUtbGF5b3V0JyxcbiAgICAndGV4dC1hbGlnbicsXG4gICAgJ3RleHQtYWxpZ24tbGFzdCcsXG4gICAgJ3RleHQtZGVjb3JhdGlvbicsXG4gICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcicsXG4gICAgJ3RleHQtZGVjb3JhdGlvbi1saW5lJyxcbiAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJyxcbiAgICAndGV4dC1pbmRlbnQnLFxuICAgICd0ZXh0LW92ZXJmbG93JyxcbiAgICAndGV4dC1yZW5kZXJpbmcnLFxuICAgICd0ZXh0LXNoYWRvdycsXG4gICAgJ3RleHQtdHJhbnNmb3JtJyxcbiAgICAndGV4dC11bmRlcmxpbmUtcG9zaXRpb24nLFxuICAgICd0b3AnLFxuICAgICd0cmFuc2Zvcm0nLFxuICAgICd0cmFuc2Zvcm0tb3JpZ2luJyxcbiAgICAndHJhbnNmb3JtLXN0eWxlJyxcbiAgICAndHJhbnNpdGlvbicsXG4gICAgJ3RyYW5zaXRpb24tZGVsYXknLFxuICAgICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eScsXG4gICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICAndW5pY29kZS1iaWRpJyxcbiAgICAndmVydGljYWwtYWxpZ24nLFxuICAgICd2aXNpYmlsaXR5JyxcbiAgICAnd2hpdGUtc3BhY2UnLFxuICAgICd3aWRvd3MnLFxuICAgICd3aWR0aCcsXG4gICAgJ3dvcmQtYnJlYWsnLFxuICAgICd3b3JkLXNwYWNpbmcnLFxuICAgICd3b3JkLXdyYXAnLFxuICAgICd6LWluZGV4J1xuICBdO1xuXG4gIC8vIGlsbGVnYWxzXG4gIHZhciBJTExFR0FMID0gW1xuICAgICdcXFxcPycsXG4gICAgJyhcXFxcYlJldHVyblxcXFxiKScsIC8vIG1vbmtleVxuICAgICcoXFxcXGJFbmRcXFxcYiknLCAvLyBtb25rZXlcbiAgICAnKFxcXFxiZW5kXFxcXGIpJywgLy8gdmJzY3JpcHRcbiAgICAnKFxcXFxiZGVmXFxcXGIpJywgLy8gZ3JhZGxlXG4gICAgJzsnLCAvLyBhIHdob2xlIGxvdCBvZiBsYW5ndWFnZXNcbiAgICAnI1xcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnXFxcXCpcXFxccycsIC8vIG1hcmtkb3duXG4gICAgJz09PVxcXFxzJywgLy8gbWFya2Rvd25cbiAgICAnXFxcXHwnLFxuICAgICclJywgLy8gcHJvbG9nXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3N0eWwnXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogJ2lmIGVsc2UgZm9yIGluJyxcbiAgICBpbGxlZ2FsOiAnKCcgKyBJTExFR0FMLmpvaW4oJ3wnKSArICcpJyxcbiAgICBjb250YWluczogW1xuXG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuXG4gICAgICAvLyBjb21tZW50c1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcblxuICAgICAgLy8gaGV4IGNvbG9yc1xuICAgICAgSEVYX0NPTE9SLFxuXG4gICAgICAvLyBjbGFzcyB0YWdcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcLlthLXpBLVpdW2EtekEtWjAtOV8tXSonICsgTE9PS0FIRUFEX1RBR19FTkQsXG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLWNsYXNzJ1xuICAgICAgfSxcblxuICAgICAgLy8gaWQgdGFnXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXCNbYS16QS1aXVthLXpBLVowLTlfLV0qJyArIExPT0tBSEVBRF9UQUdfRU5ELFxuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCdcbiAgICAgIH0sXG5cbiAgICAgIC8vIHRhZ3NcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgVEFHUy5qb2luKCd8JykgKyAnKScgKyBMT09LQUhFQURfVEFHX0VORCxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJ1xuICAgICAgfSxcblxuICAgICAgLy8gcHN1ZWRvIHNlbGVjdG9yc1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyY/Oj86XFxcXGIoJyArIFBTRVVET19TRUxFQ1RPUlMuam9pbignfCcpICsgJyknICsgTE9PS0FIRUFEX1RBR19FTkRcbiAgICAgIH0sXG5cbiAgICAgIC8vIEAga2V5d29yZHNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXEAoJyArIEFUX0tFWVdPUkRTLmpvaW4oJ3wnKSArICcpXFxcXGInXG4gICAgICB9LFxuXG4gICAgICAvLyB2YXJpYWJsZXNcbiAgICAgIFZBUklBQkxFLFxuXG4gICAgICAvLyBkaW1lbnNpb25cbiAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuXG4gICAgICAvLyBudW1iZXJcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG5cbiAgICAgIC8vIGZ1bmN0aW9uc1xuICAgICAgLy8gIC0gb25seSBmcm9tIGJlZ2lubmluZyBvZiBsaW5lICsgd2hpdGVzcGFjZVxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnXlthLXpBLVpdW2EtekEtWjAtOV9cXC1dKlxcXFwoLipcXFxcKScsXG4gICAgICAgIGlsbGVnYWw6ICdbXFxcXG5dJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge2NsYXNzTmFtZTogJ3RpdGxlJywgYmVnaW46ICdcXFxcYlthLXpBLVpdW2EtekEtWjAtOV9cXC1dKid9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgSEVYX0NPTE9SLFxuICAgICAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gYXR0cmlidXRlc1xuICAgICAgLy8gIC0gb25seSBmcm9tIGJlZ2lubmluZyBvZiBsaW5lICsgd2hpdGVzcGFjZVxuICAgICAgLy8gIC0gbXVzdCBoYXZlIHdoaXRlc3BhY2UgYWZ0ZXIgaXRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQVRUUklCVVRFUy5yZXZlcnNlKCkuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIHZhbHVlIGNvbnRhaW5lclxuICAgICAgICAgIGVuZDogLzt8JC8sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIEhFWF9DT0xPUixcbiAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAgICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlsbGVnYWw6IC9cXC4vLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIERFVEFJTFMgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcXFxbXFxuKG11bHRpcGFydCk/JywgZW5kOiAnXFxcXF1cXG4nXG4gIH07XG4gIHZhciBUSU1FID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXFxcZHs0fS1cXFxcZHsyfS1cXFxcZHsyfShcXFxccyspXFxcXGR7Mn06XFxcXGR7Mn06XFxcXGR7Mn1cXC5cXFxcZCtaJ1xuICB9O1xuICB2YXIgUFJPR1JFU1NWQUxVRSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnKFxcXFwrfC0pXFxcXGQrJ1xuICB9O1xuICB2YXIgS0VZV09SRFMgPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgcmVsZXZhbmNlOiAxMCxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ14odGVzdHx0ZXN0aW5nfHN1Y2Nlc3N8c3VjY2Vzc2Z1bHxmYWlsdXJlfGVycm9yfHNraXB8eGZhaWx8dXhzdWNjZXNzKSg6PylcXFxccysodGVzdCk/JyB9LFxuICAgICAgeyBiZWdpbjogJ15wcm9ncmVzcyg6PykoXFxcXHMrKT8ocG9wfHB1c2gpPycgfSxcbiAgICAgIHsgYmVnaW46ICdedGFnczonIH0sXG4gICAgICB7IGJlZ2luOiAnXnRpbWU6JyB9XG4gICAgXSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBERVRBSUxTLFxuICAgICAgVElNRSxcbiAgICAgIFBST0dSRVNTVkFMVUUsXG4gICAgICBLRVlXT1JEU1xuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBTV0lGVF9LRVlXT1JEUyA9IHtcbiAgICAgIGtleXdvcmQ6ICcjYXZhaWxhYmxlICNjb2xvckxpdGVyYWwgI2NvbHVtbiAjZWxzZSAjZWxzZWlmICNlbmRpZiAjZmlsZSAnICtcbiAgICAgICAgJyNmaWxlTGl0ZXJhbCAjZnVuY3Rpb24gI2lmICNpbWFnZUxpdGVyYWwgI2xpbmUgI3NlbGVjdG9yICNzb3VyY2VMb2NhdGlvbiAnICtcbiAgICAgICAgJ18gX19DT0xVTU5fXyBfX0ZJTEVfXyBfX0ZVTkNUSU9OX18gX19MSU5FX18gQW55IGFzIGFzISBhcz8gYXNzb2NpYXRlZHR5cGUgJyArXG4gICAgICAgICdhc3NvY2lhdGl2aXR5IGJyZWFrIGNhc2UgY2F0Y2ggY2xhc3MgY29udGludWUgY29udmVuaWVuY2UgZGVmYXVsdCBkZWZlciBkZWluaXQgZGlkU2V0IGRvICcgK1xuICAgICAgICAnZHluYW1pYyBkeW5hbWljVHlwZSBlbHNlIGVudW0gZXh0ZW5zaW9uIGZhbGx0aHJvdWdoIGZhbHNlIGZpbGVwcml2YXRlIGZpbmFsIGZvciBmdW5jICcgK1xuICAgICAgICAnZ2V0IGd1YXJkIGlmIGltcG9ydCBpbiBpbmRpcmVjdCBpbmZpeCBpbml0IGlub3V0IGludGVybmFsIGlzIGxhenkgbGVmdCBsZXQgJyArXG4gICAgICAgICdtdXRhdGluZyBuaWwgbm9uZSBub25tdXRhdGluZyBvcGVuIG9wZXJhdG9yIG9wdGlvbmFsIG92ZXJyaWRlIHBvc3RmaXggcHJlY2VkZW5jZSAnICtcbiAgICAgICAgJ3ByZWZpeCBwcml2YXRlIHByb3RvY29sIFByb3RvY29sIHB1YmxpYyByZXBlYXQgcmVxdWlyZWQgcmV0aHJvd3MgcmV0dXJuICcgK1xuICAgICAgICAncmlnaHQgc2VsZiBTZWxmIHNldCBzdGF0aWMgc3RydWN0IHN1YnNjcmlwdCBzdXBlciBzd2l0Y2ggdGhyb3cgdGhyb3dzIHRydWUgJyArXG4gICAgICAgICd0cnkgdHJ5ISB0cnk/IFR5cGUgdHlwZWFsaWFzIHVub3duZWQgdmFyIHdlYWsgd2hlcmUgd2hpbGUgd2lsbFNldCcsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgICAgYnVpbHRfaW46ICdhYnMgYWR2YW5jZSBhbGlnbm9mIGFsaWdub2ZWYWx1ZSBhbnlHZW5lcmF0b3IgYXNzZXJ0IGFzc2VydGlvbkZhaWx1cmUgJyArXG4gICAgICAgICdicmlkZ2VGcm9tT2JqZWN0aXZlQyBicmlkZ2VGcm9tT2JqZWN0aXZlQ1VuY29uZGl0aW9uYWwgYnJpZGdlVG9PYmplY3RpdmVDICcgK1xuICAgICAgICAnYnJpZGdlVG9PYmplY3RpdmVDVW5jb25kaXRpb25hbCBjIGNvbnRhaW5zIGNvdW50IGNvdW50RWxlbWVudHMgY291bnRMZWFkaW5nWmVyb3MgJyArXG4gICAgICAgICdkZWJ1Z1ByaW50IGRlYnVnUHJpbnRsbiBkaXN0YW5jZSBkcm9wRmlyc3QgZHJvcExhc3QgZHVtcCBlbmNvZGVCaXRzQXNXb3JkcyAnICtcbiAgICAgICAgJ2VudW1lcmF0ZSBlcXVhbCBmYXRhbEVycm9yIGZpbHRlciBmaW5kIGdldEJyaWRnZWRPYmplY3RpdmVDVHlwZSBnZXRWYUxpc3QgJyArXG4gICAgICAgICdpbmRpY2VzIGluc2VydGlvblNvcnQgaXNCcmlkZ2VkVG9PYmplY3RpdmVDIGlzQnJpZGdlZFZlcmJhdGltVG9PYmplY3RpdmVDICcgK1xuICAgICAgICAnaXNVbmlxdWVseVJlZmVyZW5jZWQgaXNVbmlxdWVseVJlZmVyZW5jZWROb25PYmpDIGpvaW4gbGF6eSBsZXhpY29ncmFwaGljYWxDb21wYXJlICcgK1xuICAgICAgICAnbWFwIG1heCBtYXhFbGVtZW50IG1pbiBtaW5FbGVtZW50IG51bWVyaWNDYXN0IG92ZXJsYXBzIHBhcnRpdGlvbiBwb3NpeCAnICtcbiAgICAgICAgJ3ByZWNvbmRpdGlvbiBwcmVjb25kaXRpb25GYWlsdXJlIHByaW50IHByaW50bG4gcXVpY2tTb3J0IHJlYWRMaW5lIHJlZHVjZSByZWZsZWN0ICcgK1xuICAgICAgICAncmVpbnRlcnByZXRDYXN0IHJldmVyc2Ugcm91bmRVcFRvQWxpZ25tZW50IHNpemVvZiBzaXplb2ZWYWx1ZSBzb3J0IHNwbGl0ICcgK1xuICAgICAgICAnc3RhcnRzV2l0aCBzdHJpZGUgc3RyaWRlb2Ygc3RyaWRlb2ZWYWx1ZSBzd2FwIHRvU3RyaW5nIHRyYW5zY29kZSAnICtcbiAgICAgICAgJ3VuZGVyZXN0aW1hdGVDb3VudCB1bnNhZmVBZGRyZXNzT2YgdW5zYWZlQml0Q2FzdCB1bnNhZmVEb3duY2FzdCB1bnNhZmVVbndyYXAgJyArXG4gICAgICAgICd1bnNhZmVSZWZsZWN0IHdpdGhFeHRlbmRlZExpZmV0aW1lIHdpdGhPYmplY3RBdFBsdXNaZXJvIHdpdGhVbnNhZmVQb2ludGVyICcgK1xuICAgICAgICAnd2l0aFVuc2FmZVBvaW50ZXJUb09iamVjdCB3aXRoVW5zYWZlTXV0YWJsZVBvaW50ZXIgd2l0aFVuc2FmZU11dGFibGVQb2ludGVycyAnICtcbiAgICAgICAgJ3dpdGhVbnNhZmVQb2ludGVyIHdpdGhVbnNhZmVQb2ludGVycyB3aXRoVmFMaXN0IHppcCdcbiAgICB9O1xuXG4gIHZhciBUWVBFID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcdTAwQzAtXFx1MDJCOFxcJ10qJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgLy8gc2xpZ2h0bHkgbW9yZSBzcGVjaWFsIHRvIHN3aWZ0XG4gIHZhciBPUFRJT05BTF9VU0lOR19UWVBFID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAnXFxcXGJbQS1aXVtcXFxcd1xcdTAwQzAtXFx1MDJCOFxcJ10qWyE/XSdcbiAgfVxuICB2YXIgQkxPQ0tfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAnL1xcXFwqJyxcbiAgICAnXFxcXCovJyxcbiAgICB7XG4gICAgICBjb250YWluczogWydzZWxmJ11cbiAgICB9XG4gICk7XG4gIHZhciBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXFxcXFwoLywgZW5kOiAnXFxcXCknLFxuICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW10gLy8gYXNzaWduZWQgbGF0ZXJcbiAgfTtcbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFLCBTVUJTVF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtiZWdpbjogL1wiXCJcIi8sIGVuZDogL1wiXCJcIi99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUlMgPSB7XG4gICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgYmVnaW46ICdcXFxcYihbXFxcXGRfXSsoXFxcXC5bXFxcXGRlRV9dKyk/fDB4W2EtZkEtRjAtOV9dKyhcXFxcLlthLWZBLUYwLTlwX10rKT98MGJbMDFfXSt8MG9bMC03X10rKVxcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtOVU1CRVJTXTtcblxuICByZXR1cm4ge1xuICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgQkxPQ0tfQ09NTUVOVCxcbiAgICAgIE9QVElPTkFMX1VTSU5HX1RZUEUsXG4gICAgICBUWVBFLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuYycsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIGJlZ2luOiAvW0EtWmEteiRfXVswLTlBLVphLXokX10qL1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvPC8sIGVuZDogLz4vXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLCBlbmQ6IC9cXCkvLCBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IFNXSUZUX0tFWVdPUkRTLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBOVU1CRVJTLFxuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgIHtiZWdpbjogJzonfSAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGlsbGVnYWw6IC9cXFt8JS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3N0cnVjdCBwcm90b2NvbCBjbGFzcyBleHRlbnNpb24gZW51bScsXG4gICAgICAgIGtleXdvcmRzOiBTV0lGVF9LRVlXT1JEUyxcbiAgICAgICAgZW5kOiAnXFxcXHsnLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtiZWdpbjogL1tBLVphLXokX11bXFx1MDBDMC1cXHUwMkI4MC05QS1aYS16JF9dKi99KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJywgLy8gQGF0dHJpYnV0ZXNcbiAgICAgICAgYmVnaW46ICcoQGRpc2NhcmRhYmxlUmVzdWx0fEB3YXJuX3VudXNlZF9yZXN1bHR8QGV4cG9ydGVkfEBsYXp5fEBub2VzY2FwZXwnICtcbiAgICAgICAgICAgICAgICAgICdATlNDb3B5aW5nfEBOU01hbmFnZWR8QG9iamN8QG9iamNNZW1iZXJzfEBjb252ZW50aW9ufEByZXF1aXJlZHwnICtcbiAgICAgICAgICAgICAgICAgICdAbm9yZXR1cm58QElCQWN0aW9ufEBJQkRlc2lnbmFibGV8QElCSW5zcGVjdGFibGV8QElCT3V0bGV0fCcgK1xuICAgICAgICAgICAgICAgICAgJ0BpbmZpeHxAcHJlZml4fEBwb3N0Zml4fEBhdXRvY2xvc3VyZXxAdGVzdGFibGV8QGF2YWlsYWJsZXwnICtcbiAgICAgICAgICAgICAgICAgICdAbm9ub2JqY3xATlNBcHBsaWNhdGlvbk1haW58QFVJQXBwbGljYXRpb25NYWlufEBkeW5hbWljTWVtYmVyTG9va3VwfCcgK1xuICAgICAgICAgICAgICAgICAgJ0Bwcm9wZXJ0eVdyYXBwZXIpJ1xuXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0JywgZW5kOiAvJC8sXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLCBCTE9DS19DT01NRU5UXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG5cbiAgdmFyIENPTU1FTlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgYmVnaW46IC9cXCRub29wXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGNvbnRhaW5zOiBbe1xuICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgZW5kOiAvXFwpLyxcbiAgICAgIGNvbnRhaW5zOiBbJ3NlbGYnLCB7XG4gICAgICAgIGJlZ2luOiAvXFxcXC4vXG4gICAgICB9XVxuICAgIH1dLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcblxuICB2YXIgRlVOQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46IC9cXCQoPyFub29wKVthLXpBLVpdW19hLXpBLVowLTldKi8sXG4gICAgZW5kOiAvXFwoLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlXG4gIH07XG5cbiAgdmFyIFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogLyVbX2EtekEtWjAtOTpdKi8sXG4gICAgZW5kOiAnJSdcbiAgfTtcblxuICB2YXIgRVNDQVBFX1NFUVVFTkNFID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46IC9cXFxcLi9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5ULFxuICAgICAgRlVOQ1RJT04sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIEVTQ0FQRV9TRVFVRU5DRVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBMSVRFUkFMUyA9ICd0cnVlIGZhbHNlIHllcyBubyBudWxsJztcblxuICAvLyBEZWZpbmUga2V5cyBhcyBzdGFydGluZyB3aXRoIGEgd29yZCBjaGFyYWN0ZXJcbiAgLy8gLi4uY29udGFpbmluZyB3b3JkIGNoYXJzLCBzcGFjZXMsIGNvbG9ucywgZm9yd2FyZC1zbGFzaGVzLCBoeXBoZW5zIGFuZCBwZXJpb2RzXG4gIC8vIC4uLmFuZCBlbmRpbmcgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5IGEgc3BhY2UsIHRhYiBvciBuZXdsaW5lLlxuICAvLyBUaGUgWUFNTCBzcGVjIGFsbG93cyBmb3IgbXVjaCBtb3JlIHRoYW4gdGhpcywgYnV0IHRoaXMgY292ZXJzIG1vc3QgdXNlLWNhc2VzLlxuICB2YXIgS0VZID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKjooPz1bIFxcdF18JCknIH0sXG4gICAgICB7IGJlZ2luOiAnXCJcXFxcd1tcXFxcdyA6XFxcXC8uLV0qXCI6KD89WyBcXHRdfCQpJyB9LCAvL2RvdWJsZSBxdW90ZWQga2V5c1xuICAgICAgeyBiZWdpbjogJ1xcJ1xcXFx3W1xcXFx3IDpcXFxcLy4tXSpcXCc6KD89WyBcXHRdfCQpJyB9IC8vc2luZ2xlIHF1b3RlZCBrZXlzXG4gICAgXVxuICB9O1xuXG4gIHZhciBURU1QTEFURV9WQVJJQUJMRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFx7XFx7JywgZW5kOiAnXFx9XFx9JyB9LCAvLyBqaW5qYSB0ZW1wbGF0ZXMgQW5zaWJsZVxuICAgICAgeyBiZWdpbjogJyVcXHsnLCBlbmQ6ICdcXH0nIH0gLy8gUnVieSBpMThuXG4gICAgXVxuICB9O1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7YmVnaW46IC8nLywgZW5kOiAvJy99LFxuICAgICAge2JlZ2luOiAvXCIvLCBlbmQ6IC9cIi99LFxuICAgICAge2JlZ2luOiAvXFxTKy99XG4gICAgXSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVEVNUExBVEVfVkFSSUFCTEVTXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbJ3ltbCcsICdZQU1MJywgJ3lhbWwnXSxcbiAgICBjb250YWluczogW1xuICAgICAgS0VZLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeLS0tXFxzKiQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgeyAvLyBtdWx0aSBsaW5lIHN0cmluZ1xuICAgICAgICAvLyBCbG9ja3Mgc3RhcnQgd2l0aCBhIHwgb3IgPiBmb2xsb3dlZCBieSBhIG5ld2xpbmVcbiAgICAgICAgLy9cbiAgICAgICAgLy8gSW5kZW50YXRpb24gb2Ygc3Vic2VxdWVudCBsaW5lcyBtdXN0IGJlIHRoZSBzYW1lIHRvXG4gICAgICAgIC8vIGJlIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgYmxvY2tcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdbXFxcXHw+XShbMC05XT9bKy1dKT9bIF0qXFxcXG4oICopW1xcXFxTIF0rXFxcXG4oXFxcXDJbXFxcXFMgXStcXFxcbj8pKicsXG4gICAgICB9LFxuICAgICAgeyAvLyBSdWJ5L1JhaWxzIGVyYlxuICAgICAgICBiZWdpbjogJzwlWyU9LV0/JywgZW5kOiAnWyUtXT8lPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvLyBsb2NhbCB0YWdzXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJyEnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgfSxcbiAgICAgIHsgLy8gZGF0YSB0eXBlXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBiZWdpbjogJyEhJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgIH0sXG4gICAgICB7IC8vIGZyYWdtZW50IGlkICZyZWZcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnJicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnJCcsXG4gICAgICB9LFxuICAgICAgeyAvLyBmcmFnbWVudCByZWZlcmVuY2UgKnJlZlxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdcXFxcKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnJCdcbiAgICAgIH0sXG4gICAgICB7IC8vIGFycmF5IGxpc3RpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVsbGV0JyxcbiAgICAgIC8vIFRPRE86IHJlbW92ZSB8JCBoYWNrIHdoZW4gd2UgaGF2ZSBwcm9wZXIgbG9vay1haGVhZCBzdXBwb3J0XG4gICAgICBiZWdpbjogJ1xcXFwtKD89WyBdfCQpJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogTElURVJBTFMsXG4gICAgICAgIGtleXdvcmRzOiB7bGl0ZXJhbDogTElURVJBTFN9XG4gICAgICB9LFxuICAgICAgLy8gbnVtYmVycyBhcmUgYW55IHZhbGlkIEMtc3R5bGUgbnVtYmVyIHRoYXRcbiAgICAgIC8vIHNpdCBpc29sYXRlZCBmcm9tIG90aGVyIHdvcmRzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1xcXFxiJ1xuICAgICAgfSxcbiAgICAgIFNUUklOR1xuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIC8vIHZlcnNpb24gb2YgZm9ybWF0IGFuZCB0b3RhbCBhbW91bnQgb2YgdGVzdGNhc2VzXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeVEFQIHZlcnNpb24gKFxcXFxkKykkJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdeMVxcXFwuXFxcXC4oXFxcXGQrKSQnIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICAvLyBZQU1MIGJsb2NrXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKFxccyspPy0tLSQnLCBlbmQ6ICdcXFxcLlxcXFwuXFxcXC4kJyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICd5YW1sJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuXHQgIC8vIHRlc3RjYXNlIG51bWJlclxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJyAoXFxcXGQrKSAnXG4gICAgICB9LFxuXHQgIC8vIHRlc3RjYXNlIHN0YXR1cyBhbmQgZGVzY3JpcHRpb25cbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAnXm9rJyB9LFxuICAgICAgICAgIHsgYmVnaW46ICdebm90IG9rJyB9XG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd0ayddLFxuICAgIGtleXdvcmRzOiAnYWZ0ZXIgYXBwZW5kIGFwcGx5IGFycmF5IGF1dG9fZXhlY29rIGF1dG9faW1wb3J0IGF1dG9fbG9hZCBhdXRvX21raW5kZXggJyArXG4gICAgICAnYXV0b19ta2luZGV4X29sZCBhdXRvX3F1YWxpZnkgYXV0b19yZXNldCBiZ2Vycm9yIGJpbmFyeSBicmVhayBjYXRjaCBjZCBjaGFuIGNsb2NrICcgK1xuICAgICAgJ2Nsb3NlIGNvbmNhdCBjb250aW51ZSBkZGUgZGljdCBlbmNvZGluZyBlb2YgZXJyb3IgZXZhbCBleGVjIGV4aXQgZXhwciBmYmxvY2tlZCAnICtcbiAgICAgICdmY29uZmlndXJlIGZjb3B5IGZpbGUgZmlsZWV2ZW50IGZpbGVuYW1lIGZsdXNoIGZvciBmb3JlYWNoIGZvcm1hdCBnZXRzIGdsb2IgZ2xvYmFsICcgK1xuICAgICAgJ2hpc3RvcnkgaHR0cCBpZiBpbmNyIGluZm8gaW50ZXJwIGpvaW4gbGFwcGVuZHwxMCBsYXNzaWdufDEwIGxpbmRleHwxMCBsaW5zZXJ0fDEwIGxpc3QgJyArXG4gICAgICAnbGxlbmd0aHwxMCBsb2FkIGxyYW5nZXwxMCBscmVwZWF0fDEwIGxyZXBsYWNlfDEwIGxyZXZlcnNlfDEwIGxzZWFyY2h8MTAgbHNldHwxMCBsc29ydHwxMCAnK1xuICAgICAgJ21hdGhmdW5jIG1hdGhvcCBtZW1vcnkgbXNnY2F0IG5hbWVzcGFjZSBvcGVuIHBhY2thZ2UgcGFycmF5IHBpZCBwa2c6OmNyZWF0ZSBwa2dfbWtJbmRleCAnK1xuICAgICAgJ3BsYXRmb3JtIHBsYXRmb3JtOjpzaGVsbCBwcm9jIHB1dHMgcHdkIHJlYWQgcmVmY2hhbiByZWdleHAgcmVnaXN0cnkgcmVnc3VifDEwIHJlbmFtZSAnK1xuICAgICAgJ3JldHVybiBzYWZlIHNjYW4gc2VlayBzZXQgc29ja2V0IHNvdXJjZSBzcGxpdCBzdHJpbmcgc3Vic3Qgc3dpdGNoIHRjbF9lbmRPZldvcmQgJytcbiAgICAgICd0Y2xfZmluZExpYnJhcnkgdGNsX3N0YXJ0T2ZOZXh0V29yZCB0Y2xfc3RhcnRPZlByZXZpb3VzV29yZCB0Y2xfd29yZEJyZWFrQWZ0ZXIgJytcbiAgICAgICd0Y2xfd29yZEJyZWFrQmVmb3JlIHRjbHRlc3QgdGNsdmFycyB0ZWxsIHRpbWUgdG0gdHJhY2UgdW5rbm93biB1bmxvYWQgdW5zZXQgdXBkYXRlICcrXG4gICAgICAndXBsZXZlbCB1cHZhciB2YXJpYWJsZSB2d2FpdCB3aGlsZScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnO1sgXFxcXHRdKiMnLCAnJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKCdeWyBcXFxcdF0qIycsICckJyksXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdwcm9jJyxcbiAgICAgICAgZW5kOiAnW1xcXFx7XScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgYmVnaW46ICdbIFxcXFx0XFxcXG5cXFxccl0rKDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKicsXG4gICAgICAgICAgICBlbmQ6ICdbIFxcXFx0XFxcXG5cXFxccl0nLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCQoXFxcXHspPyg6Oik/W2EtekEtWl9dKCg6Oik/W2EtekEtWjAtOV9dKSpcXFxcKChbYS16QS1aMC05X10pKlxcXFwpJyxcbiAgICAgICAgICAgIGVuZDogJ1teYS16QS1aMC05X1xcXFx9XFxcXCRdJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcJChcXFxceyk/KDo6KT9bYS16QS1aX10oKDo6KT9bYS16QS1aMC05X10pKicsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXCkpP1teYS16QS1aMC05X1xcXFx9XFxcXCRdJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIHZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV1cbiAgICAgIH1cbiAgICBdXG4gIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHZhciBDT01NQU5EID0ge1xuICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgYmVnaW46IC9cXFxcLyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAvW2EtekEtWlxcdTA0MzAtXFx1MDQ0ZlxcdTA0MTAtXFx1MDQyZl0rWypdPy99LFxuICAgICAgICAgIHtiZWdpbjogL1teYS16QS1aXFx1MDQzMC1cXHUwNDRmXFx1MDQxMC1cXHUwNDJmMC05XS99XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyBiZWNhdXNlIGl0IGxvb2tzIGxpa2UgYXR0cmlidXRlcyBpbiBIVE1MIHRhZ3NcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7YmVnaW46IC9cXFsvLCBlbmQ6IC9cXF0vfSxcbiAgICAgICAgICAgICAgICB7YmVnaW46IC9cXHsvLCBlbmQ6IC9cXH0vfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogL1xccyo9XFxzKi8sIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAvLT9cXGQqXFwuP1xcZCsocHR8cGN8bW18Y218aW58ZGR8Y2N8ZXh8ZW0pPy9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250YWluczogW1xuICAgICAgQ09NTUFORCxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZm9ybXVsYScsXG4gICAgICAgIGNvbnRhaW5zOiBbQ09NTUFORF0sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46IC9cXCRcXCQvLCBlbmQ6IC9cXCRcXCQvfSxcbiAgICAgICAgICB7YmVnaW46IC9cXCQvLCBlbmQ6IC9cXCQvfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnJScsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApXG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJVSUxUX0lOX1RZUEVTID0gJ2Jvb2wgYnl0ZSBpMTYgaTMyIGk2NCBkb3VibGUgc3RyaW5nIGJpbmFyeSc7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICduYW1lc3BhY2UgY29uc3QgdHlwZWRlZiBzdHJ1Y3QgZW51bSBzZXJ2aWNlIGV4Y2VwdGlvbiB2b2lkIG9uZXdheSBzZXQgbGlzdCBtYXAgcmVxdWlyZWQgb3B0aW9uYWwnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIEJVSUxUX0lOX1RZUEVTLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgZW51bSBzZXJ2aWNlIGV4Y2VwdGlvbicsIGVuZDogL1xcey8sXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHtcbiAgICAgICAgICAgIHN0YXJ0czoge2VuZHNXaXRoUGFyZW50OiB0cnVlLCBleGNsdWRlRW5kOiB0cnVlfSAvLyBoYWNrOiBlYXRpbmcgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgdGl0bGVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFxiKHNldHxsaXN0fG1hcClcXFxccyo8JywgZW5kOiAnPicsXG4gICAgICAgIGtleXdvcmRzOiBCVUlMVF9JTl9UWVBFUyxcbiAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFRQSUQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1sxLTldWzAtOV0qJywgLyogbm8gbGVhZGluZyB6ZXJvcyAqL1xuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgVFBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnOlteXFxcXF1dKydcbiAgfTtcbiAgdmFyIFRQREFUQSA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICcoQVJ8UHxQQVlMT0FEfFBSfFJ8U1J8UlNSfExCTHxWUnxVQUxNfE1FU1NBR0V8VVRPT0x8VUZSQU1FfFRJTUVSfCcgK1xuICAgICdUSU1FUl9PVkVSRkxPV3xKT0lOVF9NQVhfU1BFRUR8UkVTVU1FX1BST0d8RElBR19SRUMpXFxcXFsnLCBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgICdzZWxmJyxcbiAgICAgIFRQSUQsXG4gICAgICBUUExBQkVMXG4gICAgXVxuICB9O1xuICB2YXIgVFBJTyA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgYmVnaW46ICcoQUl8QU98REl8RE98RnxSSXxST3xVSXxVT3xHSXxHT3xTSXxTTylcXFxcWycsIGVuZDogJ1xcXFxdJyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgVFBJRCxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsIC8qIGZvciBwb3Mgc2VjdGlvbiBhdCBib3R0b20gKi9cbiAgICAgIFRQTEFCRUxcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ0FCT1JUIEFDQyBBREpVU1QgQU5EIEFQX0xEIEJSRUFLIENBTEwgQ05UIENPTCBDT05ESVRJT04gQ09ORklHIERBIERCICcgK1xuICAgICAgICAnRElWIERFVEVDVCBFTFNFIEVORCBFTkRGT1IgRVJSX05VTSBFUlJPUl9QUk9HIEZJTkUgRk9SIEdQIEdVQVJEIElOQyAnICtcbiAgICAgICAgJ0lGIEpNUCBMSU5FQVJfTUFYX1NQRUVEIExPQ0sgTU9EIE1PTklUT1IgT0ZGU0VUIE9mZnNldCBPUiBPVkVSUklERSAnICtcbiAgICAgICAgJ1BBVVNFIFBSRUcgUFRIIFJUX0xEIFJVTiBTRUxFQ1QgU0tJUCBTa2lwIFRBIFRCIFRPIFRPT0xfT0ZGU0VUICcgK1xuICAgICAgICAnVG9vbF9PZmZzZXQgVUYgVVQgVUZSQU1FX05VTSBVVE9PTF9OVU0gVU5MT0NLIFdBSVQgWCBZIFogVyBQIFIgU1RSTEVOICcgK1xuICAgICAgICAnU1VCU1RSIEZJTkRTVFIgVk9GRlNFVCBQUk9HIEFUVFIgTU4gUE9TJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdPTiBPRkYgbWF4X3NwZWVkIExQT1MgSlBPUyBFTkFCTEUgRElTQUJMRSBTVEFSVCBTVE9QIFJFU0VUJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFRQREFUQSxcbiAgICAgIFRQSU8sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJy8oUFJPR3xBVFRSfE1OfFBPU3xFTkQpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiB0aGlzIGlzIGZvciBjYXNlcyBsaWtlICxDQUxMICovXG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJyhDQUxMfFJVTnxQT0lOVF9MT0dJQ3xMQkwpXFxcXGInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvKiB0aGlzIGlzIGZvciBjYXNlcyBsaWtlIENOVDEwMCB3aGVyZSB0aGUgZGVmYXVsdCBsZXhlbWVzIGRvIG5vdFxuICAgICAgICAgKiBzZXBhcmF0ZSB0aGUga2V5d29yZCBhbmQgdGhlIG51bWJlciAqL1xuICAgICAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYihBQ0N8Q05UfFNraXB8T2Zmc2V0fFBTUER8UlRfTER8QVBfTER8VG9vbF9PZmZzZXQpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLyogdG8gY2F0Y2ggbnVtYmVycyB0aGF0IGRvIG5vdCBoYXZlIGEgd29yZCBib3VuZGFyeSBvbiB0aGUgbGVmdCAqL1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxkKyhzZWN8bXNlY3xtbS9zZWN8Y20vbWlufGluY2gvbWlufGRlZy9zZWN8bW18aW58Y20pP1xcXFxiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCcvLycsICdbOyRdJyksXG4gICAgICBobGpzLkNPTU1FTlQoJyEnLCAnWzskXScpLFxuICAgICAgaGxqcy5DT01NRU5UKCctLWVnOicsICckJyksXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcJFtBLVphLXowLTlfXSsnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnXFxcXCgnLCBlbmQ6ICdcXFxcKSdcbiAgfTtcblxuICB2YXIgRlVOQ1RJT05fTkFNRVMgPSAnYXR0cmlidXRlIGJsb2NrIGNvbnN0YW50IGN5Y2xlIGRhdGUgZHVtcCBpbmNsdWRlICcgK1xuICAgICAgICAgICAgICAgICAgJ21heCBtaW4gcGFyZW50IHJhbmRvbSByYW5nZSBzb3VyY2UgdGVtcGxhdGVfZnJvbV9zdHJpbmcnO1xuXG4gIHZhciBGVU5DVElPTlMgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogRlVOQ1RJT05fTkFNRVMsXG4gICAga2V5d29yZHM6IHtuYW1lOiBGVU5DVElPTl9OQU1FU30sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQQVJBTVNcbiAgICBdXG4gIH07XG5cbiAgdmFyIEZJTFRFUiA9IHtcbiAgICBiZWdpbjogL1xcfFtBLVphLXpfXSs6Py8sXG4gICAga2V5d29yZHM6XG4gICAgICAnYWJzIGJhdGNoIGNhcGl0YWxpemUgY29sdW1uIGNvbnZlcnRfZW5jb2RpbmcgZGF0ZSBkYXRlX21vZGlmeSBkZWZhdWx0ICcgK1xuICAgICAgJ2VzY2FwZSBmaWx0ZXIgZmlyc3QgZm9ybWF0IGlua3lfdG9faHRtbCBpbmxpbmVfY3NzIGpvaW4ganNvbl9lbmNvZGUga2V5cyBsYXN0ICcgK1xuICAgICAgJ2xlbmd0aCBsb3dlciBtYXAgbWFya2Rvd24gbWVyZ2UgbmwyYnIgbnVtYmVyX2Zvcm1hdCByYXcgcmVkdWNlIHJlcGxhY2UgJyArXG4gICAgICAncmV2ZXJzZSByb3VuZCBzbGljZSBzb3J0IHNwYWNlbGVzcyBzcGxpdCBzdHJpcHRhZ3MgdGl0bGUgdHJpbSB1cHBlciB1cmxfZW5jb2RlJyxcbiAgICBjb250YWluczogW1xuICAgICAgRlVOQ1RJT05TXG4gICAgXVxuICB9O1xuXG4gIHZhciBUQUdTID0gJ2FwcGx5IGF1dG9lc2NhcGUgYmxvY2sgZGVwcmVjYXRlZCBkbyBlbWJlZCBleHRlbmRzIGZpbHRlciBmbHVzaCBmb3IgZnJvbSAnICtcbiAgICAnaWYgaW1wb3J0IGluY2x1ZGUgbWFjcm8gc2FuZGJveCBzZXQgdXNlIHZlcmJhdGltIHdpdGgnO1xuXG4gIFRBR1MgPSBUQUdTICsgJyAnICsgVEFHUy5zcGxpdCgnICcpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gJ2VuZCcgKyB0fSkuam9pbignICcpO1xuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWydjcmFmdGNtcyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL1xceyMvLCAvI30vKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGVtcGxhdGUtdGFnJyxcbiAgICAgICAgYmVnaW46IC9cXHslLywgZW5kOiAvJX0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IC9cXHcrLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBUQUdTLFxuICAgICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogW0ZJTFRFUiwgRlVOQ1RJT05TXSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0ZW1wbGF0ZS12YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvXFx7XFx7LywgZW5kOiAvfX0vLFxuICAgICAgICBjb250YWluczogWydzZWxmJywgRklMVEVSLCBGVU5DVElPTlNdXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEpTX0lERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG4gIHZhciBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2luIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCAnICtcbiAgICAgICdpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlICcgK1xuICAgICAgJ2xldCB5aWVsZCBjb25zdCBjbGFzcyBwdWJsaWMgcHJpdmF0ZSBwcm90ZWN0ZWQgZ2V0IHNldCBzdXBlciAnICtcbiAgICAgICdzdGF0aWMgaW1wbGVtZW50cyBlbnVtIGV4cG9ydCBpbXBvcnQgZGVjbGFyZSB0eXBlIG5hbWVzcGFjZSBhYnN0cmFjdCAnICtcbiAgICAgICdhcyBmcm9tIGV4dGVuZHMgYXN5bmMgYXdhaXQnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBudWxsIHVuZGVmaW5lZCBOYU4gSW5maW5pdHknLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ2V2YWwgaXNGaW5pdGUgaXNOYU4gcGFyc2VGbG9hdCBwYXJzZUludCBkZWNvZGVVUkkgZGVjb2RlVVJJQ29tcG9uZW50ICcgK1xuICAgICAgJ2VuY29kZVVSSSBlbmNvZGVVUklDb21wb25lbnQgZXNjYXBlIHVuZXNjYXBlIE9iamVjdCBGdW5jdGlvbiBCb29sZWFuIEVycm9yICcgK1xuICAgICAgJ0V2YWxFcnJvciBJbnRlcm5hbEVycm9yIFJhbmdlRXJyb3IgUmVmZXJlbmNlRXJyb3IgU3RvcEl0ZXJhdGlvbiBTeW50YXhFcnJvciAnICtcbiAgICAgICdUeXBlRXJyb3IgVVJJRXJyb3IgTnVtYmVyIE1hdGggRGF0ZSBTdHJpbmcgUmVnRXhwIEFycmF5IEZsb2F0MzJBcnJheSAnICtcbiAgICAgICdGbG9hdDY0QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IEludDhBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSAnICtcbiAgICAgICdVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEFycmF5QnVmZmVyIERhdGFWaWV3IEpTT04gSW50bCBhcmd1bWVudHMgcmVxdWlyZSAnICtcbiAgICAgICdtb2R1bGUgY29uc29sZSB3aW5kb3cgZG9jdW1lbnQgYW55IG51bWJlciBib29sZWFuIHN0cmluZyB2b2lkIFByb21pc2UnXG4gIH07XG5cbiAgdmFyIERFQ09SQVRPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgSlNfSURFTlRfUkUsXG4gIH07XG5cbiAgdmFyIEFSR1MgPVxuICB7XG4gICAgYmVnaW46ICdcXFxcKCcsXG4gICAgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgICdzZWxmJyxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHZhciBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgREVDT1JBVE9SLFxuICAgICAgQVJHU1xuICAgIF1cbiAgfTtcbiAgdmFyIE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMFtiQl1bMDFdKyluPycgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYigwW29PXVswLTddKyluPycgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgKyAnbj8nIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICB2YXIgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtdICAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIHZhciBIVE1MX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnaHRtbGAnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIH1cbiAgfTtcbiAgdmFyIENTU19URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2Nzc2AnLCBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICdjc3MnLFxuICAgIH1cbiAgfTtcbiAgdmFyIFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgSFRNTF9URU1QTEFURSxcbiAgICBDU1NfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG5cblxuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd0cyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFxzKlsnXCJddXNlIHN0cmljdFsnXCJdL1xuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBIVE1MX1RFTVBMQVRFLFxuICAgICAgQ1NTX1RFTVBMQVRFLFxuICAgICAgVEVNUExBVEVfU1RSSU5HLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUJFUixcbiAgICAgIHsgLy8gXCJ2YWx1ZVwiIGNvbnRhaW5lclxuICAgICAgICBiZWdpbjogJygnICsgaGxqcy5SRV9TVEFSVEVSU19SRSArICd8XFxcXGIoY2FzZXxyZXR1cm58dGhyb3cpXFxcXGIpXFxcXHMqJyxcbiAgICAgICAga2V5d29yZHM6ICdyZXR1cm4gdGhyb3cgY2FzZScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogJyhcXFxcKC4qP1xcXFwpfCcgKyBobGpzLklERU5UX1JFICsgJylcXFxccyo9PicsIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogL1xcKC8sIGVuZDogL1xcKS8sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSwgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvW1xceztdLywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiBKU19JREVOVF9SRSB9KSxcbiAgICAgICAgICBQQVJBTVNcbiAgICAgICAgXSxcbiAgICAgICAgaWxsZWdhbDogLyUvLFxuICAgICAgICByZWxldmFuY2U6IDAgLy8gKCkgPT4ge30gaXMgbW9yZSB0eXBpY2FsIGluIFR5cGVTY3JpcHRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjb25zdHJ1Y3RvcicsIGVuZDogL1tcXHs7XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyAvLyBwcmV2ZW50IHJlZmVyZW5jZXMgbGlrZSBtb2R1bGUuaWQgZnJvbSBiZWluZyBoaWdsaWdodGVkIGFzIG1vZHVsZSBkZWZpbml0aW9uc1xuICAgICAgICBiZWdpbjogL21vZHVsZVxcLi8sXG4gICAgICAgIGtleXdvcmRzOiB7IGJ1aWx0X2luOiAnbW9kdWxlJyB9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdtb2R1bGUnLCBlbmQ6IC9cXHsvLCBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW50ZXJmYWNlJywgZW5kOiAvXFx7LywgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6ICdpbnRlcmZhY2UgZXh0ZW5kcydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwkWyguXS8gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGEgcGF0dGVybiBjb21tb24gdG8gSlMgbGliczogYCQoc29tZXRoaW5nKWAgYW5kIGAkLnNvbWV0aGluZ2BcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgaGxqcy5JREVOVF9SRSwgcmVsZXZhbmNlOiAwIC8vIGhhY2s6IHByZXZlbnRzIGRldGVjdGlvbiBvZiBrZXl3b3JkcyBhZnRlciBkb3RzXG4gICAgICB9LFxuICAgICAgREVDT1JBVE9SLFxuICAgICAgQVJHU1xuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFZhbHVlIHR5cGVzXG4gICAgICAgICdjaGFyIHVjaGFyIHVuaWNoYXIgaW50IHVpbnQgbG9uZyB1bG9uZyBzaG9ydCB1c2hvcnQgaW50OCBpbnQxNiBpbnQzMiBpbnQ2NCB1aW50OCAnICtcbiAgICAgICAgJ3VpbnQxNiB1aW50MzIgdWludDY0IGZsb2F0IGRvdWJsZSBib29sIHN0cnVjdCBlbnVtIHN0cmluZyB2b2lkICcgK1xuICAgICAgICAvLyBSZWZlcmVuY2UgdHlwZXNcbiAgICAgICAgJ3dlYWsgdW5vd25lZCBvd25lZCAnICtcbiAgICAgICAgLy8gTW9kaWZpZXJzXG4gICAgICAgICdhc3luYyBzaWduYWwgc3RhdGljIGFic3RyYWN0IGludGVyZmFjZSBvdmVycmlkZSB2aXJ0dWFsIGRlbGVnYXRlICcgK1xuICAgICAgICAvLyBDb250cm9sIFN0cnVjdHVyZXNcbiAgICAgICAgJ2lmIHdoaWxlIGRvIGZvciBmb3JlYWNoIGVsc2Ugc3dpdGNoIGNhc2UgYnJlYWsgZGVmYXVsdCByZXR1cm4gdHJ5IGNhdGNoICcgK1xuICAgICAgICAvLyBWaXNpYmlsaXR5XG4gICAgICAgICdwdWJsaWMgcHJpdmF0ZSBwcm90ZWN0ZWQgaW50ZXJuYWwgJyArXG4gICAgICAgIC8vIE90aGVyXG4gICAgICAgICd1c2luZyBuZXcgdGhpcyBnZXQgc2V0IGNvbnN0IHN0ZG91dCBzdGRpbiBzdGRlcnIgdmFyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnREJ1cyBHTGliIENDb2RlIEdlZSBPYmplY3QgR3RrIFBvc2l4JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG51bGwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UgbmFtZXNwYWNlJywgZW5kOiAneycsIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdbXiw6XFxcXG5cXFxcc1xcXFwuXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJywgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXiMnLCBlbmQ6ICckJyxcbiAgICAgICAgcmVsZXZhbmNlOiAyXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3ZiJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FkZGhhbmRsZXIgYWRkcmVzc29mIGFsaWFzIGFuZCBhbmRhbHNvIGFnZ3JlZ2F0ZSBhbnNpIGFzIGFzeW5jIGFzc2VtYmx5IGF1dG8gYXdhaXQgYmluYXJ5IGJ5IGJ5cmVmIGJ5dmFsICcgKyAvKiBhLWIgKi9cbiAgICAgICAgJ2NhbGwgY2FzZSBjYXRjaCBjbGFzcyBjb21wYXJlIGNvbnN0IGNvbnRpbnVlIGN1c3RvbSBkZWNsYXJlIGRlZmF1bHQgZGVsZWdhdGUgZGltIGRpc3RpbmN0IGRvICcgKyAvKiBjLWQgKi9cbiAgICAgICAgJ2VhY2ggZXF1YWxzIGVsc2UgZWxzZWlmIGVuZCBlbnVtIGVyYXNlIGVycm9yIGV2ZW50IGV4aXQgZXhwbGljaXQgZmluYWxseSBmb3IgZnJpZW5kIGZyb20gZnVuY3Rpb24gJyArIC8qIGUtZiAqL1xuICAgICAgICAnZ2V0IGdsb2JhbCBnb3RvIGdyb3VwIGhhbmRsZXMgaWYgaW1wbGVtZW50cyBpbXBvcnRzIGluIGluaGVyaXRzIGludGVyZmFjZSBpbnRvIGlzIGlzZmFsc2UgaXNub3QgaXN0cnVlIGl0ZXJhdG9yICcgKyAvKiBnLWkgKi9cbiAgICAgICAgJ2pvaW4ga2V5IGxldCBsaWIgbGlrZSBsb29wIG1lIG1pZCBtb2QgbW9kdWxlIG11c3Rpbmhlcml0IG11c3RvdmVycmlkZSBteWJhc2UgbXljbGFzcyAnICsgLyogai1tICovXG4gICAgICAgICduYW1lc3BhY2UgbmFycm93aW5nIG5ldyBuZXh0IG5vdCBub3Rpbmhlcml0YWJsZSBub3RvdmVycmlkYWJsZSAnICsgLyogbiAqL1xuICAgICAgICAnb2Ygb2ZmIG9uIG9wZXJhdG9yIG9wdGlvbiBvcHRpb25hbCBvciBvcmRlciBvcmVsc2Ugb3ZlcmxvYWRzIG92ZXJyaWRhYmxlIG92ZXJyaWRlcyAnICsgLyogbyAqL1xuICAgICAgICAncGFyYW1hcnJheSBwYXJ0aWFsIHByZXNlcnZlIHByaXZhdGUgcHJvcGVydHkgcHJvdGVjdGVkIHB1YmxpYyAnICsgLyogcCAqL1xuICAgICAgICAncmFpc2VldmVudCByZWFkb25seSByZWRpbSByZW0gcmVtb3ZlaGFuZGxlciByZXN1bWUgcmV0dXJuICcgKyAvKiByICovXG4gICAgICAgICdzZWxlY3Qgc2V0IHNoYWRvd3Mgc2hhcmVkIHNraXAgc3RhdGljIHN0ZXAgc3RvcCBzdHJ1Y3R1cmUgc3RyaWN0IHN1YiBzeW5jbG9jayAnICsgLyogcyAqL1xuICAgICAgICAndGFrZSB0ZXh0IHRoZW4gdGhyb3cgdG8gdHJ5IHVuaWNvZGUgdW50aWwgdXNpbmcgd2hlbiB3aGVyZSB3aGlsZSB3aWRlbmluZyB3aXRoIHdpdGhldmVudHMgd3JpdGVvbmx5IHhvciB5aWVsZCcsIC8qIHQteSAqL1xuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdib29sZWFuIGJ5dGUgY2Jvb2wgY2J5dGUgY2NoYXIgY2RhdGUgY2RlYyBjZGJsIGNoYXIgY2ludCBjbG5nIGNvYmogY3NieXRlIGNzaG9ydCBjc25nIGNzdHIgY3R5cGUgJyArICAvKiBiLWMgKi9cbiAgICAgICAgJ2RhdGUgZGVjaW1hbCBkaXJlY3RjYXN0IGRvdWJsZSBnZXR0eXBlIGdldHhtbG5hbWVzcGFjZSBpaWYgaW50ZWdlciBsb25nIG9iamVjdCAnICsgLyogZC1vICovXG4gICAgICAgICdzYnl0ZSBzaG9ydCBzaW5nbGUgc3RyaW5nIHRyeWNhc3QgdHlwZW9mIHVpbnRlZ2VyIHVsb25nIHVzaG9ydCcsIC8qIHMtdSAqL1xuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2Ugbm90aGluZydcbiAgICB9LFxuICAgIGlsbGVnYWw6ICcvL3x7fH18ZW5kaWZ8Z29zdWJ8dmFyaWFudHx3ZW5kfF5cXFxcJCAnLCAvKiByZXNlcnZlZCBkZXByZWNhdGVkIGtleXdvcmRzICovXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7Y29udGFpbnM6IFt7YmVnaW46ICdcIlwiJ31dfSksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICdcXCcnLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJ1xcJ1xcJ1xcJ3w8IS0tfC0tPicsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiBbaGxqcy5QSFJBU0FMX1dPUkRTX01PREVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJzwvPycsIGVuZDogJz4nLFxuICAgICAgICAgICAgICBjb250YWluczogW2hsanMuUEhSQVNBTF9XT1JEU19NT0RFXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnaWYgZWxzZSBlbHNlaWYgZW5kIHJlZ2lvbiBleHRlcm5hbHNvdXJjZSd9XG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3ZicyddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdjYWxsIGNsYXNzIGNvbnN0IGRpbSBkbyBsb29wIGVyYXNlIGV4ZWN1dGUgZXhlY3V0ZWdsb2JhbCBleGl0IGZvciBlYWNoIG5leHQgZnVuY3Rpb24gJyArXG4gICAgICAgICdpZiB0aGVuIGVsc2Ugb24gZXJyb3Igb3B0aW9uIGV4cGxpY2l0IG5ldyBwcml2YXRlIHByb3BlcnR5IGxldCBnZXQgcHVibGljIHJhbmRvbWl6ZSAnICtcbiAgICAgICAgJ3JlZGltIHJlbSBzZWxlY3QgY2FzZSBzZXQgc3RvcCBzdWIgd2hpbGUgd2VuZCB3aXRoIGVuZCB0byBlbHNlaWYgaXMgb3IgeG9yIGFuZCBub3QgJyArXG4gICAgICAgICdjbGFzc19pbml0aWFsaXplIGNsYXNzX3Rlcm1pbmF0ZSBkZWZhdWx0IHByZXNlcnZlIGluIG1lIGJ5dmFsIGJ5cmVmIHN0ZXAgcmVzdW1lIGdvdG8nLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdsY2FzZSBtb250aCB2YXJ0eXBlIGluc3RycmV2IHVib3VuZCBzZXRsb2NhbGUgZ2V0b2JqZWN0IHJnYiBnZXRyZWYgc3RyaW5nICcgK1xuICAgICAgICAnd2Vla2RheW5hbWUgcm5kIGRhdGVhZGQgbW9udGhuYW1lIG5vdyBkYXkgbWludXRlIGlzYXJyYXkgY2Jvb2wgcm91bmQgZm9ybWF0Y3VycmVuY3kgJyArXG4gICAgICAgICdjb252ZXJzaW9ucyBjc25nIHRpbWV2YWx1ZSBzZWNvbmQgeWVhciBzcGFjZSBhYnMgY2xuZyB0aW1lc2VyaWFsIGZpeHMgbGVuIGFzYyAnICtcbiAgICAgICAgJ2lzZW1wdHkgbWF0aHMgZGF0ZXNlcmlhbCBhdG4gdGltZXIgaXNvYmplY3QgZmlsdGVyIHdlZWtkYXkgZGF0ZXZhbHVlIGNjdXIgaXNkYXRlICcgK1xuICAgICAgICAnaW5zdHIgZGF0ZWRpZmYgZm9ybWF0ZGF0ZXRpbWUgcmVwbGFjZSBpc251bGwgcmlnaHQgc2duIGFycmF5IHNudW1lcmljIGxvZyBjZGJsIGhleCAnICtcbiAgICAgICAgJ2NociBsYm91bmQgbXNnYm94IHVjYXNlIGdldGxvY2FsZSBjb3MgY2RhdGUgY2J5dGUgcnRyaW0gam9pbiBob3VyIG9jdCB0eXBlbmFtZSB0cmltICcgK1xuICAgICAgICAnc3RyY29tcCBpbnQgY3JlYXRlb2JqZWN0IGxvYWRwaWN0dXJlIHRhbiBmb3JtYXRudW1iZXIgbWlkIHNjcmlwdGVuZ2luZWJ1aWxkdmVyc2lvbiAnICtcbiAgICAgICAgJ3NjcmlwdGVuZ2luZSBzcGxpdCBzY3JpcHRlbmdpbmVtaW5vcnZlcnNpb24gY2ludCBzaW4gZGF0ZXBhcnQgbHRyaW0gc3FyICcgK1xuICAgICAgICAnc2NyaXB0ZW5naW5lbWFqb3J2ZXJzaW9uIHRpbWUgZGVyaXZlZCBldmFsIGRhdGUgZm9ybWF0cGVyY2VudCBleHAgaW5wdXRib3ggbGVmdCBhc2N3ICcgK1xuICAgICAgICAnY2hydyByZWdleHAgc2VydmVyIHJlc3BvbnNlIHJlcXVlc3QgY3N0ciBlcnInLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ3RydWUgZmFsc2UgbnVsbCBub3RoaW5nIGVtcHR5J1xuICAgIH0sXG4gICAgaWxsZWdhbDogJy8vJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtjb250YWluczogW3tiZWdpbjogJ1wiXCInfV19KSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgLycvLFxuICAgICAgICAvJC8sXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPCUnLCBlbmQ6ICclPicsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAndmJzY3JpcHQnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIFNWX0tFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnYWNjZXB0X29uIGFsaWFzIGFsd2F5cyBhbHdheXNfY29tYiBhbHdheXNfZmYgYWx3YXlzX2xhdGNoIGFuZCBhc3NlcnQgYXNzaWduICcgK1xuICAgICAgJ2Fzc3VtZSBhdXRvbWF0aWMgYmVmb3JlIGJlZ2luIGJpbmQgYmlucyBiaW5zb2YgYml0IGJyZWFrIGJ1ZnwwIGJ1ZmlmMCBidWZpZjEgJyArXG4gICAgICAnYnl0ZSBjYXNlIGNhc2V4IGNhc2V6IGNlbGwgY2hhbmRsZSBjaGVja2VyIGNsYXNzIGNsb2NraW5nIGNtb3MgY29uZmlnIGNvbnN0ICcgK1xuICAgICAgJ2NvbnN0cmFpbnQgY29udGV4dCBjb250aW51ZSBjb3ZlciBjb3Zlcmdyb3VwIGNvdmVycG9pbnQgY3Jvc3MgZGVhc3NpZ24gZGVmYXVsdCAnICtcbiAgICAgICdkZWZwYXJhbSBkZXNpZ24gZGlzYWJsZSBkaXN0IGRvIGVkZ2UgZWxzZSBlbmQgZW5kY2FzZSBlbmRjaGVja2VyIGVuZGNsYXNzICcgK1xuICAgICAgJ2VuZGNsb2NraW5nIGVuZGNvbmZpZyBlbmRmdW5jdGlvbiBlbmRnZW5lcmF0ZSBlbmRncm91cCBlbmRpbnRlcmZhY2UgZW5kbW9kdWxlICcgK1xuICAgICAgJ2VuZHBhY2thZ2UgZW5kcHJpbWl0aXZlIGVuZHByb2dyYW0gZW5kcHJvcGVydHkgZW5kc3BlY2lmeSBlbmRzZXF1ZW5jZSBlbmR0YWJsZSAnICtcbiAgICAgICdlbmR0YXNrIGVudW0gZXZlbnQgZXZlbnR1YWxseSBleHBlY3QgZXhwb3J0IGV4dGVuZHMgZXh0ZXJuIGZpbmFsIGZpcnN0X21hdGNoIGZvciAnICtcbiAgICAgICdmb3JjZSBmb3JlYWNoIGZvcmV2ZXIgZm9yayBmb3Jram9pbiBmdW5jdGlvbiBnZW5lcmF0ZXw1IGdlbnZhciBnbG9iYWwgaGlnaHowIGhpZ2h6MSAnICtcbiAgICAgICdpZiBpZmYgaWZub25lIGlnbm9yZV9iaW5zIGlsbGVnYWxfYmlucyBpbXBsZW1lbnRzIGltcGxpZXMgaW1wb3J0IGluY2RpciBpbmNsdWRlICcgK1xuICAgICAgJ2luaXRpYWwgaW5vdXQgaW5wdXQgaW5zaWRlIGluc3RhbmNlIGludCBpbnRlZ2VyIGludGVyY29ubmVjdCBpbnRlcmZhY2UgaW50ZXJzZWN0ICcgK1xuICAgICAgJ2pvaW4gam9pbl9hbnkgam9pbl9ub25lIGxhcmdlIGxldCBsaWJsaXN0IGxpYnJhcnkgbG9jYWwgbG9jYWxwYXJhbSBsb2dpYyBsb25naW50ICcgK1xuICAgICAgJ21hY3JvbW9kdWxlIG1hdGNoZXMgbWVkaXVtIG1vZHBvcnQgbW9kdWxlIG5hbmQgbmVnZWRnZSBuZXR0eXBlIG5ldyBuZXh0dGltZSBubW9zICcgK1xuICAgICAgJ25vciBub3Nob3djYW5jZWxsZWQgbm90IG5vdGlmMCBub3RpZjEgb3Igb3V0cHV0IHBhY2thZ2UgcGFja2VkIHBhcmFtZXRlciBwbW9zICcgK1xuICAgICAgJ3Bvc2VkZ2UgcHJpbWl0aXZlIHByaW9yaXR5IHByb2dyYW0gcHJvcGVydHkgcHJvdGVjdGVkIHB1bGwwIHB1bGwxIHB1bGxkb3duIHB1bGx1cCAnICtcbiAgICAgICdwdWxzZXN0eWxlX29uZGV0ZWN0IHB1bHNlc3R5bGVfb25ldmVudCBwdXJlIHJhbmQgcmFuZGMgcmFuZGNhc2UgcmFuZHNlcXVlbmNlIHJjbW9zICcgK1xuICAgICAgJ3JlYWwgcmVhbHRpbWUgcmVmIHJlZyByZWplY3Rfb24gcmVsZWFzZSByZXBlYXQgcmVzdHJpY3QgcmV0dXJuIHJubW9zIHJwbW9zIHJ0cmFuICcgK1xuICAgICAgJ3J0cmFuaWYwIHJ0cmFuaWYxIHNfYWx3YXlzIHNfZXZlbnR1YWxseSBzX25leHR0aW1lIHNfdW50aWwgc191bnRpbF93aXRoIHNjYWxhcmVkICcgK1xuICAgICAgJ3NlcXVlbmNlIHNob3J0aW50IHNob3J0cmVhbCBzaG93Y2FuY2VsbGVkIHNpZ25lZCBzbWFsbCBzb2Z0IHNvbHZlIHNwZWNpZnkgc3BlY3BhcmFtICcgK1xuICAgICAgJ3N0YXRpYyBzdHJpbmcgc3Ryb25nIHN0cm9uZzAgc3Ryb25nMSBzdHJ1Y3Qgc3VwZXIgc3VwcGx5MCBzdXBwbHkxIHN5bmNfYWNjZXB0X29uICcgK1xuICAgICAgJ3N5bmNfcmVqZWN0X29uIHRhYmxlIHRhZ2dlZCB0YXNrIHRoaXMgdGhyb3VnaG91dCB0aW1lIHRpbWVwcmVjaXNpb24gdGltZXVuaXQgdHJhbiAnICtcbiAgICAgICd0cmFuaWYwIHRyYW5pZjEgdHJpIHRyaTAgdHJpMSB0cmlhbmQgdHJpb3IgdHJpcmVnIHR5cGUgdHlwZWRlZiB1bmlvbiB1bmlxdWUgdW5pcXVlMCAnICtcbiAgICAgICd1bnNpZ25lZCB1bnRpbCB1bnRpbF93aXRoIHVudHlwZWQgdXNlIHV3aXJlIHZhciB2ZWN0b3JlZCB2aXJ0dWFsIHZvaWQgd2FpdCB3YWl0X29yZGVyICcgK1xuICAgICAgJ3dhbmQgd2VhayB3ZWFrMCB3ZWFrMSB3aGlsZSB3aWxkY2FyZCB3aXJlIHdpdGggd2l0aGluIHdvciB4bm9yIHhvcicsXG4gICAgbGl0ZXJhbDpcbiAgICAgICdudWxsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICckZmluaXNoICRzdG9wICRleGl0ICRmYXRhbCAkZXJyb3IgJHdhcm5pbmcgJGluZm8gJHJlYWx0aW1lICR0aW1lICRwcmludHRpbWVzY2FsZSAnICtcbiAgICAgICckYml0c3RvcmVhbCAkYml0c3Rvc2hvcnRyZWFsICRpdG9yICRzaWduZWQgJGNhc3QgJGJpdHMgJHN0aW1lICR0aW1lZm9ybWF0ICcgK1xuICAgICAgJyRyZWFsdG9iaXRzICRzaG9ydHJlYWx0b2JpdHMgJHJ0b2kgJHVuc2lnbmVkICRhc3NlcnRvbiAkYXNzZXJ0a2lsbCAkYXNzZXJ0cGFzc29uICcgK1xuICAgICAgJyRhc3NlcnRmYWlsb24gJGFzc2VydG5vbnZhY3VvdXNvbiAkYXNzZXJ0b2ZmICRhc3NlcnRjb250cm9sICRhc3NlcnRwYXNzb2ZmICcgK1xuICAgICAgJyRhc3NlcnRmYWlsb2ZmICRhc3NlcnR2YWN1b3Vzb2ZmICRpc3VuYm91bmRlZCAkc2FtcGxlZCAkZmVsbCAkY2hhbmdlZCAkcGFzdF9nY2xrICcgK1xuICAgICAgJyRmZWxsX2djbGsgJGNoYW5nZWRfZ2NsayAkcmlzaW5nX2djbGsgJHN0ZWFkeV9nY2xrICRjb3ZlcmFnZV9jb250cm9sICcgK1xuICAgICAgJyRjb3ZlcmFnZV9nZXQgJGNvdmVyYWdlX3NhdmUgJHNldF9jb3ZlcmFnZV9kYl9uYW1lICRyb3NlICRzdGFibGUgJHBhc3QgJyArXG4gICAgICAnJHJvc2VfZ2NsayAkc3RhYmxlX2djbGsgJGZ1dHVyZV9nY2xrICRmYWxsaW5nX2djbGsgJGNoYW5naW5nX2djbGsgJGRpc3BsYXkgJyArXG4gICAgICAnJGNvdmVyYWdlX2dldF9tYXggJGNvdmVyYWdlX21lcmdlICRnZXRfY292ZXJhZ2UgJGxvYWRfY292ZXJhZ2VfZGIgJHR5cGVuYW1lICcgK1xuICAgICAgJyR1bnBhY2tlZF9kaW1lbnNpb25zICRsZWZ0ICRsb3cgJGluY3JlbWVudCAkY2xvZzIgJGxuICRsb2cxMCAkZXhwICRzcXJ0ICRwb3cgJyArXG4gICAgICAnJGZsb29yICRjZWlsICRzaW4gJGNvcyAkdGFuICRjb3VudGJpdHMgJG9uZWhvdCAkaXN1bmtub3duICRmYXRhbCAkd2FybmluZyAnICtcbiAgICAgICckZGltZW5zaW9ucyAkcmlnaHQgJGhpZ2ggJHNpemUgJGFzaW4gJGFjb3MgJGF0YW4gJGF0YW4yICRoeXBvdCAkc2luaCAkY29zaCAnICtcbiAgICAgICckdGFuaCAkYXNpbmggJGFjb3NoICRhdGFuaCAkY291bnRvbmVzICRvbmVob3QwICRlcnJvciAkaW5mbyAkcmFuZG9tICcgK1xuICAgICAgJyRkaXN0X2NoaV9zcXVhcmUgJGRpc3RfZXJsYW5nICRkaXN0X2V4cG9uZW50aWFsICRkaXN0X25vcm1hbCAkZGlzdF9wb2lzc29uICcgK1xuICAgICAgJyRkaXN0X3QgJGRpc3RfdW5pZm9ybSAkcV9pbml0aWFsaXplICRxX3JlbW92ZSAkcV9leGFtICRhc3luYyRhbmQkYXJyYXkgJyArXG4gICAgICAnJGFzeW5jJG5hbmQkYXJyYXkgJGFzeW5jJG9yJGFycmF5ICRhc3luYyRub3IkYXJyYXkgJHN5bmMkYW5kJGFycmF5ICcgK1xuICAgICAgJyRzeW5jJG5hbmQkYXJyYXkgJHN5bmMkb3IkYXJyYXkgJHN5bmMkbm9yJGFycmF5ICRxX2FkZCAkcV9mdWxsICRwc3ByaW50ZiAnICtcbiAgICAgICckYXN5bmMkYW5kJHBsYW5lICRhc3luYyRuYW5kJHBsYW5lICRhc3luYyRvciRwbGFuZSAkYXN5bmMkbm9yJHBsYW5lICcgK1xuICAgICAgJyRzeW5jJGFuZCRwbGFuZSAkc3luYyRuYW5kJHBsYW5lICRzeW5jJG9yJHBsYW5lICRzeW5jJG5vciRwbGFuZSAkc3lzdGVtICcgK1xuICAgICAgJyRkaXNwbGF5ICRkaXNwbGF5YiAkZGlzcGxheWggJGRpc3BsYXlvICRzdHJvYmUgJHN0cm9iZWIgJHN0cm9iZWggJHN0cm9iZW8gJyArXG4gICAgICAnJHdyaXRlICRyZWFkbWVtYiAkcmVhZG1lbWggJHdyaXRlbWVtaCAkdmFsdWUkcGx1c2FyZ3MgJyArXG4gICAgICAnJGR1bXB2YXJzICRkdW1wb24gJGR1bXBsaW1pdCAkZHVtcHBvcnRzICRkdW1wcG9ydHNvbiAkZHVtcHBvcnRzbGltaXQgJyArXG4gICAgICAnJHdyaXRlYiAkd3JpdGVoICR3cml0ZW8gJG1vbml0b3IgJG1vbml0b3JiICRtb25pdG9yaCAkbW9uaXRvcm8gJHdyaXRlbWVtYiAnICtcbiAgICAgICckZHVtcGZpbGUgJGR1bXBvZmYgJGR1bXBhbGwgJGR1bXBmbHVzaCAkZHVtcHBvcnRzb2ZmICRkdW1wcG9ydHNhbGwgJyArXG4gICAgICAnJGR1bXBwb3J0c2ZsdXNoICRmY2xvc2UgJGZkaXNwbGF5ICRmZGlzcGxheWIgJGZkaXNwbGF5aCAkZmRpc3BsYXlvICcgK1xuICAgICAgJyRmc3Ryb2JlICRmc3Ryb2JlYiAkZnN0cm9iZWggJGZzdHJvYmVvICRzd3JpdGUgJHN3cml0ZWIgJHN3cml0ZWggJyArXG4gICAgICAnJHN3cml0ZW8gJGZzY2FuZiAkZnJlYWQgJGZzZWVrICRmZmx1c2ggJGZlb2YgJGZvcGVuICRmd3JpdGUgJGZ3cml0ZWIgJyArXG4gICAgICAnJGZ3cml0ZWggJGZ3cml0ZW8gJGZtb25pdG9yICRmbW9uaXRvcmIgJGZtb25pdG9yaCAkZm1vbml0b3JvICRzZm9ybWF0ICcgK1xuICAgICAgJyRzZm9ybWF0ZiAkZmdldGMgJHVuZ2V0YyAkZmdldHMgJHNzY2FuZiAkcmV3aW5kICRmdGVsbCAkZmVycm9yJ1xuICAgIH07XG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd2JywgJ3N2JywgJ3N2aCddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGtleXdvcmRzOiBTVl9LRVlXT1JEUywgbGV4ZW1lczogL1tcXHdcXCRdKy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge2JlZ2luOiAnXFxcXGIoKFxcXFxkK1xcJyhifGh8b3xkfEJ8SHxPfEQpKVswLTl4elhaYS1mQS1GX10rKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFxCKChcXCcoYnxofG98ZHxCfEh8T3xEKSlbMC05eHpYWmEtZkEtRl9dKyknfSxcbiAgICAgICAgICB7YmVnaW46ICdcXFxcYihbMC05X10pKycsIHJlbGV2YW5jZTogMH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8qIHBhcmFtZXRlcnMgdG8gaW5zdGFuY2VzICovXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7YmVnaW46ICcjXFxcXCgoPyFwYXJhbWV0ZXIpLitcXFxcKSd9LFxuICAgICAgICAgIHtiZWdpbjogJ1xcXFwuXFxcXHcrJywgcmVsZXZhbmNlOiAwfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnYCcsIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeydtZXRhLWtleXdvcmQnOiAnZGVmaW5lIF9fRklMRV9fICcgK1xuICAgICAgICAgICdfX0xJTkVfXyBiZWdpbl9rZXl3b3JkcyBjZWxsZGVmaW5lIGRlZmF1bHRfbmV0dHlwZSBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Vsc2UgZWxzaWYgZW5kX2tleXdvcmRzIGVuZGNlbGxkZWZpbmUgZW5kaWYgaWZkZWYgaWZuZGVmICcgK1xuICAgICAgICAgICdpbmNsdWRlIGxpbmUgbm91bmNvbm5lY3RlZF9kcml2ZSBwcmFnbWEgcmVzZXRhbGwgdGltZXNjYWxlICcgK1xuICAgICAgICAgICd1bmNvbm5lY3RlZF9kcml2ZSB1bmRlZiB1bmRlZmluZWFsbCd9LFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07IC8vIHJldHVyblxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gUmVndWxhciBleHByZXNzaW9uIGZvciBWSERMIG51bWVyaWMgbGl0ZXJhbHMuXG5cbiAgLy8gRGVjaW1hbCBsaXRlcmFsOlxuICB2YXIgSU5URUdFUl9SRSA9ICdcXFxcZChffFxcXFxkKSonO1xuICB2YXIgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gIHZhciBERUNJTUFMX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyhcXFxcLicgKyBJTlRFR0VSX1JFICsgJyk/JyArICcoJyArIEVYUE9ORU5UX1JFICsgJyk/JztcbiAgLy8gQmFzZWQgbGl0ZXJhbDpcbiAgdmFyIEJBU0VEX0lOVEVHRVJfUkUgPSAnXFxcXHcrJztcbiAgdmFyIEJBU0VEX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyMnICsgQkFTRURfSU5URUdFUl9SRSArICcoXFxcXC4nICsgQkFTRURfSU5URUdFUl9SRSArICcpPycgKyAnIycgKyAnKCcgKyBFWFBPTkVOVF9SRSArICcpPyc7XG5cbiAgdmFyIE5VTUJFUl9SRSA9ICdcXFxcYignICsgQkFTRURfTElURVJBTF9SRSArICd8JyArIERFQ0lNQUxfTElURVJBTF9SRSArICcpJztcblxuICByZXR1cm4ge1xuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhYnMgYWNjZXNzIGFmdGVyIGFsaWFzIGFsbCBhbmQgYXJjaGl0ZWN0dXJlIGFycmF5IGFzc2VydCBhc3N1bWUgYXNzdW1lX2d1YXJhbnRlZSBhdHRyaWJ1dGUgJyArXG4gICAgICAgICdiZWdpbiBibG9jayBib2R5IGJ1ZmZlciBidXMgY2FzZSBjb21wb25lbnQgY29uZmlndXJhdGlvbiBjb25zdGFudCBjb250ZXh0IGNvdmVyIGRpc2Nvbm5lY3QgJyArXG4gICAgICAgICdkb3dudG8gZGVmYXVsdCBlbHNlIGVsc2lmIGVuZCBlbnRpdHkgZXhpdCBmYWlybmVzcyBmaWxlIGZvciBmb3JjZSBmdW5jdGlvbiBnZW5lcmF0ZSAnICtcbiAgICAgICAgJ2dlbmVyaWMgZ3JvdXAgZ3VhcmRlZCBpZiBpbXB1cmUgaW4gaW5lcnRpYWwgaW5vdXQgaXMgbGFiZWwgbGlicmFyeSBsaW5rYWdlIGxpdGVyYWwgJyArXG4gICAgICAgICdsb29wIG1hcCBtb2QgbmFuZCBuZXcgbmV4dCBub3Igbm90IG51bGwgb2Ygb24gb3BlbiBvciBvdGhlcnMgb3V0IHBhY2thZ2UgcGFyYW1ldGVyIHBvcnQgJyArXG4gICAgICAgICdwb3N0cG9uZWQgcHJvY2VkdXJlIHByb2Nlc3MgcHJvcGVydHkgcHJvdGVjdGVkIHB1cmUgcmFuZ2UgcmVjb3JkIHJlZ2lzdGVyIHJlamVjdCAnICtcbiAgICAgICAgJ3JlbGVhc2UgcmVtIHJlcG9ydCByZXN0cmljdCByZXN0cmljdF9ndWFyYW50ZWUgcmV0dXJuIHJvbCByb3Igc2VsZWN0IHNlcXVlbmNlICcgK1xuICAgICAgICAnc2V2ZXJpdHkgc2hhcmVkIHNpZ25hbCBzbGEgc2xsIHNyYSBzcmwgc3Ryb25nIHN1YnR5cGUgdGhlbiB0byB0cmFuc3BvcnQgdHlwZSAnICtcbiAgICAgICAgJ3VuYWZmZWN0ZWQgdW5pdHMgdW50aWwgdXNlIHZhcmlhYmxlIHZpZXcgdm1vZGUgdnByb3AgdnVuaXQgd2FpdCB3aGVuIHdoaWxlIHdpdGggeG5vciB4b3InLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdib29sZWFuIGJpdCBjaGFyYWN0ZXIgJyArXG4gICAgICAgICdpbnRlZ2VyIHRpbWUgZGVsYXlfbGVuZ3RoIG5hdHVyYWwgcG9zaXRpdmUgJyArXG4gICAgICAgICdzdHJpbmcgYml0X3ZlY3RvciBmaWxlX29wZW5fa2luZCBmaWxlX29wZW5fc3RhdHVzICcgK1xuICAgICAgICAnc3RkX2xvZ2ljIHN0ZF9sb2dpY192ZWN0b3IgdW5zaWduZWQgc2lnbmVkIGJvb2xlYW5fdmVjdG9yIGludGVnZXJfdmVjdG9yICcgK1xuICAgICAgICAnc3RkX3Vsb2dpYyBzdGRfdWxvZ2ljX3ZlY3RvciB1bnJlc29sdmVkX3Vuc2lnbmVkIHVfdW5zaWduZWQgdW5yZXNvbHZlZF9zaWduZWQgdV9zaWduZWQgJyArXG4gICAgICAgICdyZWFsX3ZlY3RvciB0aW1lX3ZlY3RvcicsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnZmFsc2UgdHJ1ZSBub3RlIHdhcm5pbmcgZXJyb3IgZmFpbHVyZSAnICsgIC8vIHNldmVyaXR5X2xldmVsXG4gICAgICAgICdsaW5lIHRleHQgc2lkZSB3aWR0aCcgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dGlvXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAneycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsICAgICAgLy8gVkhETC0yMDA4IGJsb2NrIGNvbW1lbnRpbmcuXG4gICAgICBobGpzLkNPTU1FTlQoJy0tJywgJyQnKSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBOVU1CRVJfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcoVXxYfDB8MXxafFd8THxIfC0pXFwnJyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogJ1xcJ1tBLVphLXpdKF8/W0EtWmEtejAtOV0pKicsXG4gICAgICAgIGNvbnRhaW5zOiBbaGxqcy5CQUNLU0xBU0hfRVNDQVBFXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihobGpzKSB7XG4gIHJldHVybiB7XG4gICAgbGV4ZW1lczogL1shI0BcXHddKy8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGV4cHJlc3MgdmVyc2lvbiBleGNlcHQ6ICEgJiAqIDwgPSA+ICEhICMgQCBAQFxuICAgICAgICAnTnwwIFB8MCBYfDAgYXwwIGFiIGFiYyBhYm8gYWwgYW0gYW58MCBhciBhcmdhIGFyZ2QgYXJnZSBhcmdkbyBhcmdnIGFyZ2wgYXJndSBhcyBhdSBhdWcgYXVuIGJ8MCBiTiBiYSBiYWQgYmQgYmUgYmVsIGJmIGJsIGJtIGJuIGJvIGJwIGJyIGJyZWEgYnJlYWthIGJyZWFrZCBicmVha2wgYnJvIGJ1ZmRvIGJ1ZmZlcnMgYnVuIGJ3IGN8MCBjTiBjTmYgY2EgY2FiYyBjYWRkYiBjYWQgY2FkZGYgY2FsIGNhdCBjYiBjYyBjY2wgY2QgY2UgY2V4IGNmIGNmaXIgY2dldGIgY2dldGUgY2cgY2hhbmdlcyBjaGQgY2hlIGNoZWNrdCBjbCBjbGEgY2xvIGNtIGNtYXBjIGNtZSBjbiBjbmV3IGNuZiBjbm8gY25vcmVhIGNub3JlbWUgY28gY29sIGNvbG8gY29tIGNvbWMgY29tcCBjb24gY29uZiBjb3BlICcrXG4gICAgICAgICdjcCBjcGYgY3EgY3IgY3MgY3N0IGN1IGN1bmEgY3VubWUgY3cgZGVsbSBkZWIgZGVidWdnIGRlbGMgZGVsZiBkaWYgZGlmZmcgZGlmZm8gZGlmZnAgZGlmZnB1IGRpZmZzIGRpZmZ0aGlzIGRpZyBkaSBkbCBkZWxsIGRqIGRsaSBkbyBkb2F1dG9hIGRwIGRyIGRzIGRzcCBlfDAgZWEgZWMgZWNob2UgZWNob2ggZWNob20gZWNob24gZWwgZWxzZWkgZW0gZW4gZW5kZm8gZW5kZiBlbmR0IGVuZHcgZW5lIGV4IGV4ZSBleGkgZXh1IGZ8MCBmaWxlcyBmaWxldCBmaW4gZmluYSBmaW5pIGZpciBmaXggZm8gZm9sZGMgZm9sZGQgZm9sZGRvYyBmb2xkbyBmb3IgZnUgZ28gZ3IgZ3JlcGEgZ3UgZ3YgaGEgaGVscGYgaGVscGcgaGVscHQgaGkgaGlkIGhpcyBpYSBpYWJjIGlmIGlqIGlsIGltIGltYXBjICcrXG4gICAgICAgICdpbWUgaW5vIGlub3JlYSBpbm9yZW1lIGludCBpcyBpc3AgaXUgaXVuYSBpdW5tZSBqfDAganUga3wwIGtlZXBhIGtlZSBrZWVwaiBsTiBsTmYgbHwwIGxhZCBsYWRkYiBsYWRkZiBsYSBsYW4gbGF0IGxiIGxjIGxjaCBsY2wgbGNzIGxlIGxlZnRhIGxldCBsZXggbGYgbGZpciBsZ2V0YiBsZ2V0ZSBsZyBsZ3IgbGdyZXBhIGxoIGxsIGxsYSBsbGkgbG1hayBsbSBsbWFwYyBsbmUgbG5ldyBsbmYgbG4gbG9hZGsgbG8gbG9jIGxvY2t2IGxvbCBsb3BlIGxwIGxwZiBsciBscyBsdCBsdSBsdWEgbHVhZCBsdWFmIGx2IGx2aW1ncmVwYSBsdyBtfDAgbWEgbWFrIG1hcCBtYXBjIG1hcmtzIG1hdCBtZSBtZW51dCBtZXMgbWsgbWtzIG1rc3AgbWt2IG1rdmllIG1vZCBteiBtemYgbmJjIG5iIG5icyBuZXcgbm0gbm1hcGMgbm1lIG5uIG5ub3JlbWUgbm9hIG5vIG5vaCBub3JlYSBub3JlbWUgbm9ybSBudSBudW4gbnVubWUgb2wgb3wwIG9tIG9tYXBjIG9tZSBvbiBvbm8gb25vcmVtZSBvcHQgb3Ugb3VubWUgb3cgcHwwICcrXG4gICAgICAgICdwcm9mZCBwcm9mIHBybyBwcm9tcHRyIHBjIHBlZCBwZSBwZXJsZCBwbyBwb3B1IHBwIHByZSBwcmV2IHBzIHB0IHB0TiBwdGYgcHRqIHB0bCBwdG4gcHRwIHB0ciBwdHMgcHUgcHcgcHkzIHB5dGhvbjMgcHkzZCBweTNmIHB5IHB5ZCBweWYgcXVpdGEgcWEgcmVjIHJlZCByZWRpIHJlZHIgcmVkcmF3cyByZWcgcmVzIHJldCByZXR1IHJldyByaSByaWdodGIgcnViIHJ1YnlkIHJ1YnlmIHJ1bmQgcnUgcnYgc04gc2FuIHNhIHNhbCBzYXYgc2Igc2JOIHNiYSBzYmYgc2JsIHNibSBzYm4gc2JwIHNiciBzY3JpcCBzY3JpcHRlIHNjcyBzZSBzZXRmIHNldGcgc2V0bCBzZiBzZmlyIHNoIHNpbSBzaWcgc2lsIHNsIHNsYSBzbSBzbWFwIHNtYXBjIHNtZSBzbiBzbmkgc25vIHNub3Igc25vcmVtZSBzb3IgJytcbiAgICAgICAgJ3NvIHNwZWxsZCBzcGUgc3BlbGxpIHNwZWxsciBzcGVsbHUgc3BlbGx3IHNwIHNwciBzcmUgc3Qgc3RhIHN0YXJ0ZyBzdGFydHIgc3RhciBzdG9waSBzdGogc3RzIHN1biBzdW5tIHN1bm1lIHN1cyBzdiBzdyBzeSBzeW50aSBzeW5jIHROIHRhYk4gdGFiYyB0YWJkbyB0YWJlIHRhYmYgdGFiZmlyIHRhYmwgdGFibSB0YWJuZXcgJytcbiAgICAgICAgJ3RhYm4gdGFibyB0YWJwIHRhYnIgdGFicyB0YWIgdGEgdGFncyB0YyB0Y2xkIHRjbGYgdGUgdGYgdGggdGogdGwgdG0gdG4gdG8gdHAgdHIgdHJ5IHRzIHR1IHV8MCB1bmRvaiB1bmRvbCB1bmEgdW5oIHVubCB1bmxvIHVubSB1bm1lIHVucyB1cCB2ZSB2ZXJiIHZlcnQgdmltIHZpbWdyZXBhIHZpIHZpdSB2aWUgdm0gdm1hcGMgdm1lIHZuZSB2biB2bm9yZW1lIHZzIHZ1IHZ1bm1lIHdpbmRvIHd8MCB3TiB3YSB3aCB3aSB3aW5jIHdpbnAgd24gd3Agd3Egd3FhIHdzIHd1IHd2IHh8MCB4YSB4bWFwYyB4bSB4bWUgeG4geG5vcmVtZSB4dSB4dW5tZSB5fDAgenwwIH4gJytcbiAgICAgICAgLy8gZnVsbCB2ZXJzaW9uXG4gICAgICAgICdOZXh0IFByaW50IGFwcGVuZCBhYmJyZXZpYXRlIGFiY2xlYXIgYWJvdmVsZWZ0IGFsbCBhbWVudSBhbm9yZW1lbnUgYXJncyBhcmdhZGQgYXJnZGVsZXRlIGFyZ2VkaXQgYXJnZ2xvYmFsIGFyZ2xvY2FsIGFyZ3VtZW50IGFzY2lpIGF1dG9jbWQgYXVncm91cCBhdW5tZW51IGJ1ZmZlciBiTmV4dCBiYWxsIGJhZGQgYmRlbGV0ZSBiZWhhdmUgYmVsb3dyaWdodCBiZmlyc3QgYmxhc3QgYm1vZGlmaWVkIGJuZXh0IGJvdHJpZ2h0IGJwcmV2aW91cyBicmV3aW5kIGJyZWFrIGJyZWFrYWRkIGJyZWFrZGVsIGJyZWFrbGlzdCBicm93c2UgYnVubG9hZCAnK1xuICAgICAgICAnYndpcGVvdXQgY2hhbmdlIGNOZXh0IGNOZmlsZSBjYWJicmV2IGNhYmNsZWFyIGNhZGRidWZmZXIgY2FkZGV4cHIgY2FkZGZpbGUgY2FsbCBjYXRjaCBjYnVmZmVyIGNjbG9zZSBjZW50ZXIgY2V4cHIgY2ZpbGUgY2ZpcnN0IGNnZXRidWZmZXIgY2dldGV4cHIgY2dldGZpbGUgY2hkaXIgY2hlY2twYXRoIGNoZWNrdGltZSBjbGlzdCBjbGFzdCBjbG9zZSBjbWFwIGNtYXBjbGVhciBjbWVudSBjbmV4dCBjbmV3ZXIgY25maWxlIGNub3JlbWFwIGNub3JlYWJicmV2IGNub3JlbWVudSBjb3B5IGNvbGRlciBjb2xvcnNjaGVtZSBjb21tYW5kIGNvbWNsZWFyIGNvbXBpbGVyIGNvbnRpbnVlIGNvbmZpcm0gY29wZW4gY3ByZXZpb3VzIGNwZmlsZSBjcXVpdCBjcmV3aW5kIGNzY29wZSBjc3RhZyBjdW5tYXAgJytcbiAgICAgICAgJ2N1bmFiYnJldiBjdW5tZW51IGN3aW5kb3cgZGVsZXRlIGRlbG1hcmtzIGRlYnVnIGRlYnVnZ3JlZWR5IGRlbGNvbW1hbmQgZGVsZnVuY3Rpb24gZGlmZnVwZGF0ZSBkaWZmZ2V0IGRpZmZvZmYgZGlmZnBhdGNoIGRpZmZwdXQgZGlmZnNwbGl0IGRpZ3JhcGhzIGRpc3BsYXkgZGVsZXRlbCBkanVtcCBkbGlzdCBkb2F1dG9jbWQgZG9hdXRvYWxsIGRlbGV0ZXAgZHJvcCBkc2VhcmNoIGRzcGxpdCBlZGl0IGVhcmxpZXIgZWNobyBlY2hvZXJyIGVjaG9obCBlY2hvbXNnIGVsc2UgZWxzZWlmIGVtZW51IGVuZGlmIGVuZGZvciAnK1xuICAgICAgICAnZW5kZnVuY3Rpb24gZW5kdHJ5IGVuZHdoaWxlIGVuZXcgZXhlY3V0ZSBleGl0IGV4dXNhZ2UgZmlsZSBmaWxldHlwZSBmaW5kIGZpbmFsbHkgZmluaXNoIGZpcnN0IGZpeGRlbCBmb2xkIGZvbGRjbG9zZSBmb2xkZG9vcGVuIGZvbGRkb2Nsb3NlZCBmb2xkb3BlbiBmdW5jdGlvbiBnbG9iYWwgZ290byBncmVwIGdyZXBhZGQgZ3VpIGd2aW0gaGFyZGNvcHkgaGVscCBoZWxwZmluZCBoZWxwZ3JlcCBoZWxwdGFncyBoaWdobGlnaHQgaGlkZSBoaXN0b3J5IGluc2VydCBpYWJicmV2IGlhYmNsZWFyIGlqdW1wIGlsaXN0IGltYXAgJytcbiAgICAgICAgJ2ltYXBjbGVhciBpbWVudSBpbm9yZW1hcCBpbm9yZWFiYnJldiBpbm9yZW1lbnUgaW50cm8gaXNlYXJjaCBpc3BsaXQgaXVubWFwIGl1bmFiYnJldiBpdW5tZW51IGpvaW4ganVtcHMga2VlcGFsdCBrZWVwbWFya3Mga2VlcGp1bXBzIGxOZXh0IGxOZmlsZSBsaXN0IGxhZGRleHByIGxhZGRidWZmZXIgbGFkZGZpbGUgbGFzdCBsYW5ndWFnZSBsYXRlciBsYnVmZmVyIGxjZCBsY2hkaXIgbGNsb3NlIGxjc2NvcGUgbGVmdCBsZWZ0YWJvdmUgbGV4cHIgbGZpbGUgbGZpcnN0IGxnZXRidWZmZXIgbGdldGV4cHIgbGdldGZpbGUgbGdyZXAgbGdyZXBhZGQgbGhlbHBncmVwIGxsYXN0IGxsaXN0IGxtYWtlIGxtYXAgbG1hcGNsZWFyIGxuZXh0IGxuZXdlciBsbmZpbGUgbG5vcmVtYXAgbG9hZGtleW1hcCBsb2FkdmlldyAnK1xuICAgICAgICAnbG9ja21hcmtzIGxvY2t2YXIgbG9sZGVyIGxvcGVuIGxwcmV2aW91cyBscGZpbGUgbHJld2luZCBsdGFnIGx1bm1hcCBsdWFkbyBsdWFmaWxlIGx2aW1ncmVwIGx2aW1ncmVwYWRkIGx3aW5kb3cgbW92ZSBtYXJrIG1ha2UgbWFwY2xlYXIgbWF0Y2ggbWVudSBtZW51dHJhbnNsYXRlIG1lc3NhZ2VzIG1rZXhyYyBta3Nlc3Npb24gbWtzcGVsbCBta3ZpbXJjIG1rdmlldyBtb2RlIG16c2NoZW1lIG16ZmlsZSBuYmNsb3NlIG5ia2V5IG5ic2FydCBuZXh0IG5tYXAgbm1hcGNsZWFyIG5tZW51IG5ub3JlbWFwICcrXG4gICAgICAgICdubm9yZW1lbnUgbm9hdXRvY21kIG5vcmVtYXAgbm9obHNlYXJjaCBub3JlYWJicmV2IG5vcmVtZW51IG5vcm1hbCBudW1iZXIgbnVubWFwIG51bm1lbnUgb2xkZmlsZXMgb3BlbiBvbWFwIG9tYXBjbGVhciBvbWVudSBvbmx5IG9ub3JlbWFwIG9ub3JlbWVudSBvcHRpb25zIG91bm1hcCBvdW5tZW51IG93bnN5bnRheCBwcmludCBwcm9mZGVsIHByb2ZpbGUgcHJvbXB0ZmluZCBwcm9tcHRyZXBsIHBjbG9zZSBwZWRpdCBwZXJsIHBlcmxkbyBwb3AgcG9wdXAgcHBvcCBwcmVzZXJ2ZSBwcmV2aW91cyBwc2VhcmNoIHB0YWcgcHROZXh0ICcrXG4gICAgICAgICdwdGZpcnN0IHB0anVtcCBwdGxhc3QgcHRuZXh0IHB0cHJldmlvdXMgcHRyZXdpbmQgcHRzZWxlY3QgcHV0IHB3ZCBweTNkbyBweTNmaWxlIHB5dGhvbiBweWRvIHB5ZmlsZSBxdWl0IHF1aXRhbGwgcWFsbCByZWFkIHJlY292ZXIgcmVkbyByZWRpciByZWRyYXcgcmVkcmF3c3RhdHVzIHJlZ2lzdGVycyByZXNpemUgcmV0YWIgcmV0dXJuIHJld2luZCByaWdodCByaWdodGJlbG93IHJ1YnkgcnVieWRvIHJ1YnlmaWxlIHJ1bmRvIHJ1bnRpbWUgcnZpbWluZm8gc3Vic3RpdHV0ZSBzTmV4dCBzYW5kYm94IHNhcmd1bWVudCBzYWxsIHNhdmVhcyBzYnVmZmVyIHNiTmV4dCBzYmFsbCBzYmZpcnN0IHNibGFzdCBzYm1vZGlmaWVkIHNibmV4dCBzYnByZXZpb3VzIHNicmV3aW5kIHNjcmlwdG5hbWVzIHNjcmlwdGVuY29kaW5nICcrXG4gICAgICAgICdzY3Njb3BlIHNldCBzZXRmaWxldHlwZSBzZXRnbG9iYWwgc2V0bG9jYWwgc2ZpbmQgc2ZpcnN0IHNoZWxsIHNpbWFsdCBzaWduIHNpbGVudCBzbGVlcCBzbGFzdCBzbWFnaWMgc21hcGNsZWFyIHNtZW51IHNuZXh0IHNuaWZmIHNub21hZ2ljIHNub3JlbWFwIHNub3JlbWVudSBzb3J0IHNvdXJjZSBzcGVsbGR1bXAgc3BlbGxnb29kIHNwZWxsaW5mbyBzcGVsbHJlcGFsbCBzcGVsbHVuZG8gc3BlbGx3cm9uZyBzcGxpdCBzcHJldmlvdXMgc3Jld2luZCBzdG9wIHN0YWcgc3RhcnRncmVwbGFjZSBzdGFydHJlcGxhY2UgJytcbiAgICAgICAgJ3N0YXJ0aW5zZXJ0IHN0b3BpbnNlcnQgc3RqdW1wIHN0c2VsZWN0IHN1bmhpZGUgc3VubWFwIHN1bm1lbnUgc3VzcGVuZCBzdmlldyBzd2FwbmFtZSBzeW50YXggc3ludGltZSBzeW5jYmluZCB0TmV4dCB0YWJOZXh0IHRhYmNsb3NlIHRhYmVkaXQgdGFiZmluZCB0YWJmaXJzdCB0YWJsYXN0IHRhYm1vdmUgdGFibmV4dCB0YWJvbmx5IHRhYnByZXZpb3VzIHRhYnJld2luZCB0YWcgdGNsIHRjbGRvIHRjbGZpbGUgdGVhcm9mZiB0Zmlyc3QgdGhyb3cgdGp1bXAgdGxhc3QgdG1lbnUgdG5leHQgdG9wbGVmdCB0cHJldmlvdXMgJysndHJld2luZCB0c2VsZWN0IHR1bm1lbnUgdW5kbyB1bmRvam9pbiB1bmRvbGlzdCB1bmFiYnJldmlhdGUgdW5oaWRlIHVubGV0IHVubG9ja3ZhciB1bm1hcCB1bm1lbnUgdW5zaWxlbnQgdXBkYXRlIHZnbG9iYWwgdmVyc2lvbiB2ZXJib3NlIHZlcnRpY2FsIHZpbWdyZXAgdmltZ3JlcGFkZCB2aXN1YWwgdml1c2FnZSB2aWV3IHZtYXAgdm1hcGNsZWFyIHZtZW51IHZuZXcgJytcbiAgICAgICAgJ3Zub3JlbWFwIHZub3JlbWVudSB2c3BsaXQgdnVubWFwIHZ1bm1lbnUgd3JpdGUgd05leHQgd2FsbCB3aGlsZSB3aW5zaXplIHdpbmNtZCB3aW5wb3Mgd25leHQgd3ByZXZpb3VzIHdxYWxsIHdzdmVyYiB3dW5kbyB3dmltaW5mbyB4aXQgeGFsbCB4bWFwY2xlYXIgeG1hcCB4bWVudSB4bm9yZW1hcCB4bm9yZW1lbnUgeHVubWFwIHh1bm1lbnUgeWFuaycsXG4gICAgICBidWlsdF9pbjogLy9idWlsdCBpbiBmdW5jXG4gICAgICAgICdzeW5JRHRyYW5zIGF0YW4yIHJhbmdlIG1hdGNoYXJnIGRpZF9maWxldHlwZSBhc2luIGZlZWRrZXlzIHhvciBhcmd2ICcgK1xuICAgICAgICAnY29tcGxldGVfY2hlY2sgYWRkIGdldHdpbnBvc3ggZ2V0cWZsaXN0IGdldHdpbnBvc3kgc2NyZWVuY29sICcgK1xuICAgICAgICAnY2xlYXJtYXRjaGVzIGVtcHR5IGV4dGVuZCBnZXRjbWRwb3MgbXpldmFsIGdhcmJhZ2Vjb2xsZWN0IHNldHJlZyAnICtcbiAgICAgICAgJ2NlaWwgc3FydCBkaWZmX2hsSUQgaW5wdXRzZWNyZXQgZ2V0IGdldGZwZXJtIGdldHBpZCBmaWxld3JpdGFibGUgJyArXG4gICAgICAgICdzaGlmdHdpZHRoIG1heCBzaW5oIGlzZGlyZWN0b3J5IHN5bklEIHN5c3RlbSBpbnB1dHJlc3RvcmUgd2lubGluZSAnICtcbiAgICAgICAgJ2F0YW4gdmlzdWFsbW9kZSBpbnB1dGxpc3QgdGFicGFnZXdpbm5yIHJvdW5kIGdldHJlZ3R5cGUgbWFwY2hlY2sgJyArXG4gICAgICAgICdoYXNtYXB0byBoaXN0ZGVsIGFyZ2lkeCBmaW5kZmlsZSBzaGEyNTYgZXhpc3RzIHRvdXBwZXIgZ2V0Y21kbGluZSAnICtcbiAgICAgICAgJ3RhZ2xpc3Qgc3RyaW5nIGdldG1hdGNoZXMgYnVmbnIgc3RyZnRpbWUgd2lud2lkdGggYnVmZXhpc3RzICcgK1xuICAgICAgICAnc3RydHJhbnMgdGFicGFnZWJ1Zmxpc3Qgc2V0Y21kcG9zIHJlbW90ZV9yZWFkIHByaW50ZiBzZXRsb2NsaXN0ICcgK1xuICAgICAgICAnZ2V0cG9zIGdldGxpbmUgYnVmd2lubnIgZmxvYXQybnIgbGVuIGdldGNtZHR5cGUgZGlmZl9maWxsZXIgbHVhZXZhbCAnICtcbiAgICAgICAgJ3Jlc29sdmUgbGliY2FsbG5yIGZvbGRjbG9zZWRlbmQgcmV2ZXJzZSBmaWx0ZXIgaGFzX2tleSBidWZuYW1lICcgK1xuICAgICAgICAnc3RyMmZsb2F0IHN0cmxlbiBzZXRsaW5lIGdldGNoYXJtb2Qgc2V0YnVmdmFyIGluZGV4IHNlYXJjaHBvcyAnICtcbiAgICAgICAgJ3NoZWxsZXNjYXBlIHVuZG9maWxlIGZvbGRjbG9zZWQgc2V0cWZsaXN0IGJ1Zmxpc3RlZCBzdHJjaGFycyBzdHIybnIgJyArXG4gICAgICAgICd2aXJ0Y29sIGZsb29yIHJlbW92ZSB1bmRvdHJlZSByZW1vdGVfZXhwciB3aW5oZWlnaHQgZ2V0dGFid2ludmFyICcgK1xuICAgICAgICAncmVsdGltZSBjdXJzb3IgdGFicGFnZW5yIGZpbmRkaXIgbG9jYWx0aW1lIGFjb3MgZ2V0bG9jbGlzdCBzZWFyY2ggJyArXG4gICAgICAgICd0YW5oIG1hdGNoZW5kIHJlbmFtZSBnZXR0YWJ2YXIgc3RyZGlzcGxheXdpZHRoIHR5cGUgYWJzIHB5M2V2YWwgJyArXG4gICAgICAgICdzZXR3aW52YXIgdG9sb3dlciB3aWxkbWVudW1vZGUgbG9nMTAgc3BlbGxzdWdnZXN0IGJ1ZmxvYWRlZCAnICtcbiAgICAgICAgJ3N5bmNvbmNlYWxlZCBuZXh0bm9uYmxhbmsgc2VydmVyMmNsaWVudCBjb21wbGV0ZSBzZXR0YWJ3aW52YXIgJyArXG4gICAgICAgICdleGVjdXRhYmxlIGlucHV0IHdpbmNvbCBzZXRtYXRjaGVzIGdldGZ0eXBlIGhsSUQgaW5wdXRzYXZlICcgK1xuICAgICAgICAnc2VhcmNocGFpciBvciBzY3JlZW5yb3cgbGluZSBzZXR0YWJ2YXIgaGlzdGFkZCBkZWVwY29weSBzdHJwYXJ0ICcgK1xuICAgICAgICAncmVtb3RlX3BlZWsgYW5kIGV2YWwgZ2V0ZnRpbWUgc3VibWF0Y2ggc2NyZWVuY2hhciB3aW5zYXZldmlldyAnICtcbiAgICAgICAgJ21hdGNoYWRkIG1rZGlyIHNjcmVlbmF0dHIgZ2V0Zm9udG5hbWUgbGliY2FsbCByZWx0aW1lc3RyIGdldGZzaXplICcgK1xuICAgICAgICAnd2lubnIgaW52ZXJ0IHBvdyBnZXRidWZsaW5lIGJ5dGUybGluZSBzb3VuZGZvbGQgcmVwZWF0IGZuYW1lZXNjYXBlICcgK1xuICAgICAgICAndGFnZmlsZXMgc2luIHN0cndpZHRoIHNwZWxsYmFkd29yZCB0cnVuYyBtYXBhcmcgbG9nIGxpc3BpbmRlbnQgJyArXG4gICAgICAgICdob3N0bmFtZSBzZXRwb3MgZ2xvYnBhdGggcmVtb3RlX2ZvcmVncm91bmQgZ2V0Y2hhciBzeW5JRGF0dHIgJyArXG4gICAgICAgICdmbmFtZW1vZGlmeSBjc2NvcGVfY29ubmVjdGlvbiBzdHJpZHggd2luYnVmbnIgaW5kZW50IG1pbiAnICtcbiAgICAgICAgJ2NvbXBsZXRlX2FkZCBucjJjaGFyIHNlYXJjaHBhaXJwb3MgaW5wdXRkaWFsb2cgdmFsdWVzIG1hdGNobGlzdCAnICtcbiAgICAgICAgJ2l0ZW1zIGhsZXhpc3RzIHN0cnJpZHggYnJvd3NlZGlyIGV4cGFuZCBmbW9kIHBhdGhzaG9ydGVuIGxpbmUyYnl0ZSAnICtcbiAgICAgICAgJ2FyZ2MgY291bnQgZ2V0d2ludmFyIGdsb2IgZm9sZHRleHRyZXN1bHQgZ2V0cmVnIGZvcmVncm91bmQgY29zaCAnICtcbiAgICAgICAgJ21hdGNoZGVsZXRlIGhhcyBjaGFyMm5yIHNpbXBsaWZ5IGhpc3RnZXQgc2VhcmNoZGVjbCBpY29udiAnICtcbiAgICAgICAgJ3dpbnJlc3RjbWQgcHVtdmlzaWJsZSB3cml0ZWZpbGUgZm9sZGxldmVsIGhhc2xvY2FsZGlyIGtleXMgY29zICcgK1xuICAgICAgICAnbWF0Y2hzdHIgZm9sZHRleHQgaGlzdG5yIHRhbiB0ZW1wbmFtZSBnZXRjd2QgYnl0ZWlkeCBnZXRidWZ2YXIgJyArXG4gICAgICAgICdpc2xvY2tlZCBlc2NhcGUgZXZlbnRoYW5kbGVyIHJlbW90ZV9zZW5kIHNlcnZlcmxpc3Qgd2lucmVzdHZpZXcgJyArXG4gICAgICAgICdzeW5zdGFjayBweWV2YWwgcHJldm5vbmJsYW5rIHJlYWRmaWxlIGNpbmRlbnQgZmlsZXJlYWRhYmxlIGNoYW5nZW5yICcgK1xuICAgICAgICAnZXhwJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogLzsvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgIH0sXG5cbiAgICAgIC8qXG4gICAgICBBIGRvdWJsZSBxdW90ZSBjYW4gc3RhcnQgZWl0aGVyIGEgc3RyaW5nIG9yIGEgbGluZSBjb21tZW50LiBTdHJpbmdzIGFyZVxuICAgICAgZW5kZWQgYmVmb3JlIHRoZSBlbmQgb2YgYSBsaW5lIGJ5IGFub3RoZXIgZG91YmxlIHF1b3RlIGFuZCBjYW4gY29udGFpblxuICAgICAgZXNjYXBlZCBkb3VibGUtcXVvdGVzIGFuZCBwb3N0LWVzY2FwZWQgbGluZSBicmVha3MuXG5cbiAgICAgIEFsc28sIGFueSBkb3VibGUgcXVvdGUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUgaXMgYSBjb21tZW50IGJ1dCB3ZVxuICAgICAgZG9uJ3QgaGFuZGxlIHRoYXQgcHJvcGVybHkgYXQgdGhlIG1vbWVudDogYW55IGRvdWJsZSBxdW90ZSBpbnNpZGUgd2lsbFxuICAgICAgdHVybiB0aGVtIGludG8gYSBzdHJpbmcuIEhhbmRsaW5nIGl0IHByb3Blcmx5IHdpbGwgcmVxdWlyZSBhIHNtYXJ0ZXJcbiAgICAgIHBhcnNlci5cbiAgICAgICovXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvXCIoXFxcXFwifFxcblxcXFx8W15cIlxcbl0pKlwiL1xuICAgICAgfSxcbiAgICAgIGhsanMuQ09NTUVOVCgnXCInLCAnJCcpLFxuXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9bYnd0Z2xzYXZdOltcXHdcXGRfXSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbiBmdW5jdGlvbiEnLCBlbmQ6ICckJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC88W1xcdy1dKz4vXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGxleGVtZXM6ICdbLiVdPycgKyBobGpzLklERU5UX1JFLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnbG9jayByZXAgcmVwZSByZXB6IHJlcG5lIHJlcG56IHhhcXVpcmUgeHJlbGVhc2UgYm5kIG5vYm5kICcgK1xuICAgICAgICAnYWFhIGFhZCBhYW0gYWFzIGFkYyBhZGQgYW5kIGFycGwgYmIwX3Jlc2V0IGJiMV9yZXNldCBib3VuZCBic2YgYnNyIGJzd2FwIGJ0IGJ0YyBidHIgYnRzIGNhbGwgY2J3IGNkcSBjZHFlIGNsYyBjbGQgY2xpIGNsdHMgY21jIGNtcCBjbXBzYiBjbXBzZCBjbXBzcSBjbXBzdyBjbXB4Y2hnIGNtcHhjaGc0ODYgY21weGNoZzhiIGNtcHhjaGcxNmIgY3B1aWQgY3B1X3JlYWQgY3B1X3dyaXRlIGNxbyBjd2QgY3dkZSBkYWEgZGFzIGRlYyBkaXYgZG1pbnQgZW1tcyBlbnRlciBlcXUgZjJ4bTEgZmFicyBmYWRkIGZhZGRwIGZibGQgZmJzdHAgZmNocyBmY2xleCBmY21vdmIgZmNtb3ZiZSBmY21vdmUgZmNtb3ZuYiBmY21vdm5iZSBmY21vdm5lIGZjbW92bnUgZmNtb3Z1IGZjb20gZmNvbWkgZmNvbWlwIGZjb21wIGZjb21wcCBmY29zIGZkZWNzdHAgZmRpc2kgZmRpdiBmZGl2cCBmZGl2ciBmZGl2cnAgZmVtbXMgZmVuaSBmZnJlZSBmZnJlZXAgZmlhZGQgZmljb20gZmljb21wIGZpZGl2IGZpZGl2ciBmaWxkIGZpbXVsIGZpbmNzdHAgZmluaXQgZmlzdCBmaXN0cCBmaXN0dHAgZmlzdWIgZmlzdWJyIGZsZCBmbGQxIGZsZGN3IGZsZGVudiBmbGRsMmUgZmxkbDJ0IGZsZGxnMiBmbGRsbjIgZmxkcGkgZmxkeiBmbXVsIGZtdWxwIGZuY2xleCBmbmRpc2kgZm5lbmkgZm5pbml0IGZub3AgZm5zYXZlIGZuc3RjdyBmbnN0ZW52IGZuc3RzdyBmcGF0YW4gZnByZW0gZnByZW0xIGZwdGFuIGZybmRpbnQgZnJzdG9yIGZzYXZlIGZzY2FsZSBmc2V0cG0gZnNpbiBmc2luY29zIGZzcXJ0IGZzdCBmc3RjdyBmc3RlbnYgZnN0cCBmc3RzdyBmc3ViIGZzdWJwIGZzdWJyIGZzdWJycCBmdHN0IGZ1Y29tIGZ1Y29taSBmdWNvbWlwIGZ1Y29tcCBmdWNvbXBwIGZ4YW0gZnhjaCBmeHRyYWN0IGZ5bDJ4IGZ5bDJ4cDEgaGx0IGlidHMgaWNlYnAgaWRpdiBpbXVsIGluIGluYyBpbmNiaW4gaW5zYiBpbnNkIGluc3cgaW50IGludDAxIGludDEgaW50MDMgaW50MyBpbnRvIGludmQgaW52cGNpZCBpbnZscGcgaW52bHBnYSBpcmV0IGlyZXRkIGlyZXRxIGlyZXR3IGpjeHogamVjeHoganJjeHogam1wIGptcGUgbGFoZiBsYXIgbGRzIGxlYSBsZWF2ZSBsZXMgbGZlbmNlIGxmcyBsZ2R0IGxncyBsaWR0IGxsZHQgbG1zdyBsb2FkYWxsIGxvYWRhbGwyODYgbG9kc2IgbG9kc2QgbG9kc3EgbG9kc3cgbG9vcCBsb29wZSBsb29wbmUgbG9vcG56IGxvb3B6IGxzbCBsc3MgbHRyIG1mZW5jZSBtb25pdG9yIG1vdiBtb3ZkIG1vdnEgbW92c2IgbW92c2QgbW92c3EgbW92c3cgbW92c3ggbW92c3hkIG1vdnp4IG11bCBtd2FpdCBuZWcgbm9wIG5vdCBvciBvdXQgb3V0c2Igb3V0c2Qgb3V0c3cgcGFja3NzZHcgcGFja3Nzd2IgcGFja3Vzd2IgcGFkZGIgcGFkZGQgcGFkZHNiIHBhZGRzaXcgcGFkZHN3IHBhZGR1c2IgcGFkZHVzdyBwYWRkdyBwYW5kIHBhbmRuIHBhdXNlIHBhdmViIHBhdmd1c2IgcGNtcGVxYiBwY21wZXFkIHBjbXBlcXcgcGNtcGd0YiBwY21wZ3RkIHBjbXBndHcgcGRpc3RpYiBwZjJpZCBwZmFjYyBwZmFkZCBwZmNtcGVxIHBmY21wZ2UgcGZjbXBndCBwZm1heCBwZm1pbiBwZm11bCBwZnJjcCBwZnJjcGl0MSBwZnJjcGl0MiBwZnJzcWl0MSBwZnJzcXJ0IHBmc3ViIHBmc3ViciBwaTJmZCBwbWFjaHJpdyBwbWFkZHdkIHBtYWd3IHBtdWxocml3IHBtdWxocndhIHBtdWxocndjIHBtdWxodyBwbXVsbHcgcG12Z2V6YiBwbXZsemIgcG12bnpiIHBtdnpiIHBvcCBwb3BhIHBvcGFkIHBvcGF3IHBvcGYgcG9wZmQgcG9wZnEgcG9wZncgcG9yIHByZWZldGNoIHByZWZldGNodyBwc2xsZCBwc2xscSBwc2xsdyBwc3JhZCBwc3JhdyBwc3JsZCBwc3JscSBwc3JsdyBwc3ViYiBwc3ViZCBwc3Vic2IgcHN1YnNpdyBwc3Vic3cgcHN1YnVzYiBwc3VidXN3IHBzdWJ3IHB1bnBja2hidyBwdW5wY2toZHEgcHVucGNraHdkIHB1bnBja2xidyBwdW5wY2tsZHEgcHVucGNrbHdkIHB1c2ggcHVzaGEgcHVzaGFkIHB1c2hhdyBwdXNoZiBwdXNoZmQgcHVzaGZxIHB1c2hmdyBweG9yIHJjbCByY3IgcmRzaHIgcmRtc3IgcmRwbWMgcmR0c2MgcmR0c2NwIHJldCByZXRmIHJldG4gcm9sIHJvciByZG0gcnNkYyByc2xkdCByc20gcnN0cyBzYWhmIHNhbCBzYWxjIHNhciBzYmIgc2Nhc2Igc2Nhc2Qgc2Nhc3Egc2Nhc3cgc2ZlbmNlIHNnZHQgc2hsIHNobGQgc2hyIHNocmQgc2lkdCBzbGR0IHNraW5pdCBzbWkgc21pbnQgc21pbnRvbGQgc21zdyBzdGMgc3RkIHN0aSBzdG9zYiBzdG9zZCBzdG9zcSBzdG9zdyBzdHIgc3ViIHN2ZGMgc3ZsZHQgc3Z0cyBzd2FwZ3Mgc3lzY2FsbCBzeXNlbnRlciBzeXNleGl0IHN5c3JldCB0ZXN0IHVkMCB1ZDEgdWQyYiB1ZDIgdWQyYSB1bW92IHZlcnIgdmVydyBmd2FpdCB3YmludmQgd3JzaHIgd3Jtc3IgeGFkZCB4YnRzIHhjaGcgeGxhdGIgeGxhdCB4b3IgY21vdmUgY21vdnogY21vdm5lIGNtb3ZueiBjbW92YSBjbW92bmJlIGNtb3ZhZSBjbW92bmIgY21vdmIgY21vdm5hZSBjbW92YmUgY21vdm5hIGNtb3ZnIGNtb3ZubGUgY21vdmdlIGNtb3ZubCBjbW92bCBjbW92bmdlIGNtb3ZsZSBjbW92bmcgY21vdmMgY21vdm5jIGNtb3ZvIGNtb3ZubyBjbW92cyBjbW92bnMgY21vdnAgY21vdnBlIGNtb3ZucCBjbW92cG8gamUganogam5lIGpueiBqYSBqbmJlIGphZSBqbmIgamIgam5hZSBqYmUgam5hIGpnIGpubGUgamdlIGpubCBqbCBqbmdlIGpsZSBqbmcgamMgam5jIGpvIGpubyBqcyBqbnMganBvIGpucCBqcGUganAgc2V0ZSBzZXR6IHNldG5lIHNldG56IHNldGEgc2V0bmJlIHNldGFlIHNldG5iIHNldG5jIHNldGIgc2V0bmFlIHNldGNzZXQgc2V0YmUgc2V0bmEgc2V0ZyBzZXRubGUgc2V0Z2Ugc2V0bmwgc2V0bCBzZXRuZ2Ugc2V0bGUgc2V0bmcgc2V0cyBzZXRucyBzZXRvIHNldG5vIHNldHBlIHNldHAgc2V0cG8gc2V0bnAgYWRkcHMgYWRkc3MgYW5kbnBzIGFuZHBzIGNtcGVxcHMgY21wZXFzcyBjbXBsZXBzIGNtcGxlc3MgY21wbHRwcyBjbXBsdHNzIGNtcG5lcXBzIGNtcG5lcXNzIGNtcG5sZXBzIGNtcG5sZXNzIGNtcG5sdHBzIGNtcG5sdHNzIGNtcG9yZHBzIGNtcG9yZHNzIGNtcHVub3JkcHMgY21wdW5vcmRzcyBjbXBwcyBjbXBzcyBjb21pc3MgY3Z0cGkycHMgY3Z0cHMycGkgY3Z0c2kyc3MgY3Z0c3Myc2kgY3Z0dHBzMnBpIGN2dHRzczJzaSBkaXZwcyBkaXZzcyBsZG14Y3NyIG1heHBzIG1heHNzIG1pbnBzIG1pbnNzIG1vdmFwcyBtb3ZocHMgbW92bGhwcyBtb3ZscHMgbW92aGxwcyBtb3Ztc2twcyBtb3ZudHBzIG1vdnNzIG1vdnVwcyBtdWxwcyBtdWxzcyBvcnBzIHJjcHBzIHJjcHNzIHJzcXJ0cHMgcnNxcnRzcyBzaHVmcHMgc3FydHBzIHNxcnRzcyBzdG14Y3NyIHN1YnBzIHN1YnNzIHVjb21pc3MgdW5wY2tocHMgdW5wY2tscHMgeG9ycHMgZnhyc3RvciBmeHJzdG9yNjQgZnhzYXZlIGZ4c2F2ZTY0IHhnZXRidiB4c2V0YnYgeHNhdmUgeHNhdmU2NCB4c2F2ZW9wdCB4c2F2ZW9wdDY0IHhyc3RvciB4cnN0b3I2NCBwcmVmZXRjaG50YSBwcmVmZXRjaHQwIHByZWZldGNodDEgcHJlZmV0Y2h0MiBtYXNrbW92cSBtb3ZudHEgcGF2Z2IgcGF2Z3cgcGV4dHJ3IHBpbnNydyBwbWF4c3cgcG1heHViIHBtaW5zdyBwbWludWIgcG1vdm1za2IgcG11bGh1dyBwc2FkYncgcHNodWZ3IHBmMml3IHBmbmFjYyBwZnBuYWNjIHBpMmZ3IHBzd2FwZCBtYXNrbW92ZHF1IGNsZmx1c2ggbW92bnRkcSBtb3ZudGkgbW92bnRwZCBtb3ZkcWEgbW92ZHF1IG1vdmRxMnEgbW92cTJkcSBwYWRkcSBwbXVsdWRxIHBzaHVmZCBwc2h1Zmh3IHBzaHVmbHcgcHNsbGRxIHBzcmxkcSBwc3VicSBwdW5wY2tocWRxIHB1bnBja2xxZHEgYWRkcGQgYWRkc2QgYW5kbnBkIGFuZHBkIGNtcGVxcGQgY21wZXFzZCBjbXBsZXBkIGNtcGxlc2QgY21wbHRwZCBjbXBsdHNkIGNtcG5lcXBkIGNtcG5lcXNkIGNtcG5sZXBkIGNtcG5sZXNkIGNtcG5sdHBkIGNtcG5sdHNkIGNtcG9yZHBkIGNtcG9yZHNkIGNtcHVub3JkcGQgY21wdW5vcmRzZCBjbXBwZCBjb21pc2QgY3Z0ZHEycGQgY3Z0ZHEycHMgY3Z0cGQyZHEgY3Z0cGQycGkgY3Z0cGQycHMgY3Z0cGkycGQgY3Z0cHMyZHEgY3Z0cHMycGQgY3Z0c2Qyc2kgY3Z0c2Qyc3MgY3Z0c2kyc2QgY3Z0c3Myc2QgY3Z0dHBkMnBpIGN2dHRwZDJkcSBjdnR0cHMyZHEgY3Z0dHNkMnNpIGRpdnBkIGRpdnNkIG1heHBkIG1heHNkIG1pbnBkIG1pbnNkIG1vdmFwZCBtb3ZocGQgbW92bHBkIG1vdm1za3BkIG1vdnVwZCBtdWxwZCBtdWxzZCBvcnBkIHNodWZwZCBzcXJ0cGQgc3FydHNkIHN1YnBkIHN1YnNkIHVjb21pc2QgdW5wY2tocGQgdW5wY2tscGQgeG9ycGQgYWRkc3VicGQgYWRkc3VicHMgaGFkZHBkIGhhZGRwcyBoc3VicGQgaHN1YnBzIGxkZHF1IG1vdmRkdXAgbW92c2hkdXAgbW92c2xkdXAgY2xnaSBzdGdpIHZtY2FsbCB2bWNsZWFyIHZtZnVuYyB2bWxhdW5jaCB2bWxvYWQgdm1tY2FsbCB2bXB0cmxkIHZtcHRyc3Qgdm1yZWFkIHZtcmVzdW1lIHZtcnVuIHZtc2F2ZSB2bXdyaXRlIHZteG9mZiB2bXhvbiBpbnZlcHQgaW52dnBpZCBwYWJzYiBwYWJzdyBwYWJzZCBwYWxpZ25yIHBoYWRkdyBwaGFkZGQgcGhhZGRzdyBwaHN1YncgcGhzdWJkIHBoc3Vic3cgcG1hZGR1YnN3IHBtdWxocnN3IHBzaHVmYiBwc2lnbmIgcHNpZ253IHBzaWduZCBleHRycSBpbnNlcnRxIG1vdm50c2QgbW92bnRzcyBsemNudCBibGVuZHBkIGJsZW5kcHMgYmxlbmR2cGQgYmxlbmR2cHMgZHBwZCBkcHBzIGV4dHJhY3RwcyBpbnNlcnRwcyBtb3ZudGRxYSBtcHNhZGJ3IHBhY2t1c2R3IHBibGVuZHZiIHBibGVuZHcgcGNtcGVxcSBwZXh0cmIgcGV4dHJkIHBleHRycSBwaG1pbnBvc3V3IHBpbnNyYiBwaW5zcmQgcGluc3JxIHBtYXhzYiBwbWF4c2QgcG1heHVkIHBtYXh1dyBwbWluc2IgcG1pbnNkIHBtaW51ZCBwbWludXcgcG1vdnN4YncgcG1vdnN4YmQgcG1vdnN4YnEgcG1vdnN4d2QgcG1vdnN4d3EgcG1vdnN4ZHEgcG1vdnp4YncgcG1vdnp4YmQgcG1vdnp4YnEgcG1vdnp4d2QgcG1vdnp4d3EgcG1vdnp4ZHEgcG11bGRxIHBtdWxsZCBwdGVzdCByb3VuZHBkIHJvdW5kcHMgcm91bmRzZCByb3VuZHNzIGNyYzMyIHBjbXBlc3RyaSBwY21wZXN0cm0gcGNtcGlzdHJpIHBjbXBpc3RybSBwY21wZ3RxIHBvcGNudCBnZXRzZWMgcGZyY3B2IHBmcnNxcnR2IG1vdmJlIGFlc2VuYyBhZXNlbmNsYXN0IGFlc2RlYyBhZXNkZWNsYXN0IGFlc2ltYyBhZXNrZXlnZW5hc3Npc3QgdmFlc2VuYyB2YWVzZW5jbGFzdCB2YWVzZGVjIHZhZXNkZWNsYXN0IHZhZXNpbWMgdmFlc2tleWdlbmFzc2lzdCB2YWRkcGQgdmFkZHBzIHZhZGRzZCB2YWRkc3MgdmFkZHN1YnBkIHZhZGRzdWJwcyB2YW5kcGQgdmFuZHBzIHZhbmRucGQgdmFuZG5wcyB2YmxlbmRwZCB2YmxlbmRwcyB2YmxlbmR2cGQgdmJsZW5kdnBzIHZicm9hZGNhc3RzcyB2YnJvYWRjYXN0c2QgdmJyb2FkY2FzdGYxMjggdmNtcGVxX29zcGQgdmNtcGVxcGQgdmNtcGx0X29zcGQgdmNtcGx0cGQgdmNtcGxlX29zcGQgdmNtcGxlcGQgdmNtcHVub3JkX3FwZCB2Y21wdW5vcmRwZCB2Y21wbmVxX3VxcGQgdmNtcG5lcXBkIHZjbXBubHRfdXNwZCB2Y21wbmx0cGQgdmNtcG5sZV91c3BkIHZjbXBubGVwZCB2Y21wb3JkX3FwZCB2Y21wb3JkcGQgdmNtcGVxX3VxcGQgdmNtcG5nZV91c3BkIHZjbXBuZ2VwZCB2Y21wbmd0X3VzcGQgdmNtcG5ndHBkIHZjbXBmYWxzZV9vcXBkIHZjbXBmYWxzZXBkIHZjbXBuZXFfb3FwZCB2Y21wZ2Vfb3NwZCB2Y21wZ2VwZCB2Y21wZ3Rfb3NwZCB2Y21wZ3RwZCB2Y21wdHJ1ZV91cXBkIHZjbXB0cnVlcGQgdmNtcGx0X29xcGQgdmNtcGxlX29xcGQgdmNtcHVub3JkX3NwZCB2Y21wbmVxX3VzcGQgdmNtcG5sdF91cXBkIHZjbXBubGVfdXFwZCB2Y21wb3JkX3NwZCB2Y21wZXFfdXNwZCB2Y21wbmdlX3VxcGQgdmNtcG5ndF91cXBkIHZjbXBmYWxzZV9vc3BkIHZjbXBuZXFfb3NwZCB2Y21wZ2Vfb3FwZCB2Y21wZ3Rfb3FwZCB2Y21wdHJ1ZV91c3BkIHZjbXBwZCB2Y21wZXFfb3NwcyB2Y21wZXFwcyB2Y21wbHRfb3NwcyB2Y21wbHRwcyB2Y21wbGVfb3NwcyB2Y21wbGVwcyB2Y21wdW5vcmRfcXBzIHZjbXB1bm9yZHBzIHZjbXBuZXFfdXFwcyB2Y21wbmVxcHMgdmNtcG5sdF91c3BzIHZjbXBubHRwcyB2Y21wbmxlX3VzcHMgdmNtcG5sZXBzIHZjbXBvcmRfcXBzIHZjbXBvcmRwcyB2Y21wZXFfdXFwcyB2Y21wbmdlX3VzcHMgdmNtcG5nZXBzIHZjbXBuZ3RfdXNwcyB2Y21wbmd0cHMgdmNtcGZhbHNlX29xcHMgdmNtcGZhbHNlcHMgdmNtcG5lcV9vcXBzIHZjbXBnZV9vc3BzIHZjbXBnZXBzIHZjbXBndF9vc3BzIHZjbXBndHBzIHZjbXB0cnVlX3VxcHMgdmNtcHRydWVwcyB2Y21wbHRfb3FwcyB2Y21wbGVfb3FwcyB2Y21wdW5vcmRfc3BzIHZjbXBuZXFfdXNwcyB2Y21wbmx0X3VxcHMgdmNtcG5sZV91cXBzIHZjbXBvcmRfc3BzIHZjbXBlcV91c3BzIHZjbXBuZ2VfdXFwcyB2Y21wbmd0X3VxcHMgdmNtcGZhbHNlX29zcHMgdmNtcG5lcV9vc3BzIHZjbXBnZV9vcXBzIHZjbXBndF9vcXBzIHZjbXB0cnVlX3VzcHMgdmNtcHBzIHZjbXBlcV9vc3NkIHZjbXBlcXNkIHZjbXBsdF9vc3NkIHZjbXBsdHNkIHZjbXBsZV9vc3NkIHZjbXBsZXNkIHZjbXB1bm9yZF9xc2QgdmNtcHVub3Jkc2QgdmNtcG5lcV91cXNkIHZjbXBuZXFzZCB2Y21wbmx0X3Vzc2QgdmNtcG5sdHNkIHZjbXBubGVfdXNzZCB2Y21wbmxlc2QgdmNtcG9yZF9xc2QgdmNtcG9yZHNkIHZjbXBlcV91cXNkIHZjbXBuZ2VfdXNzZCB2Y21wbmdlc2QgdmNtcG5ndF91c3NkIHZjbXBuZ3RzZCB2Y21wZmFsc2Vfb3FzZCB2Y21wZmFsc2VzZCB2Y21wbmVxX29xc2QgdmNtcGdlX29zc2QgdmNtcGdlc2QgdmNtcGd0X29zc2QgdmNtcGd0c2QgdmNtcHRydWVfdXFzZCB2Y21wdHJ1ZXNkIHZjbXBsdF9vcXNkIHZjbXBsZV9vcXNkIHZjbXB1bm9yZF9zc2QgdmNtcG5lcV91c3NkIHZjbXBubHRfdXFzZCB2Y21wbmxlX3Vxc2QgdmNtcG9yZF9zc2QgdmNtcGVxX3Vzc2QgdmNtcG5nZV91cXNkIHZjbXBuZ3RfdXFzZCB2Y21wZmFsc2Vfb3NzZCB2Y21wbmVxX29zc2QgdmNtcGdlX29xc2QgdmNtcGd0X29xc2QgdmNtcHRydWVfdXNzZCB2Y21wc2QgdmNtcGVxX29zc3MgdmNtcGVxc3MgdmNtcGx0X29zc3MgdmNtcGx0c3MgdmNtcGxlX29zc3MgdmNtcGxlc3MgdmNtcHVub3JkX3FzcyB2Y21wdW5vcmRzcyB2Y21wbmVxX3Vxc3MgdmNtcG5lcXNzIHZjbXBubHRfdXNzcyB2Y21wbmx0c3MgdmNtcG5sZV91c3NzIHZjbXBubGVzcyB2Y21wb3JkX3FzcyB2Y21wb3Jkc3MgdmNtcGVxX3Vxc3MgdmNtcG5nZV91c3NzIHZjbXBuZ2VzcyB2Y21wbmd0X3Vzc3MgdmNtcG5ndHNzIHZjbXBmYWxzZV9vcXNzIHZjbXBmYWxzZXNzIHZjbXBuZXFfb3FzcyB2Y21wZ2Vfb3NzcyB2Y21wZ2VzcyB2Y21wZ3Rfb3NzcyB2Y21wZ3RzcyB2Y21wdHJ1ZV91cXNzIHZjbXB0cnVlc3MgdmNtcGx0X29xc3MgdmNtcGxlX29xc3MgdmNtcHVub3JkX3NzcyB2Y21wbmVxX3Vzc3MgdmNtcG5sdF91cXNzIHZjbXBubGVfdXFzcyB2Y21wb3JkX3NzcyB2Y21wZXFfdXNzcyB2Y21wbmdlX3Vxc3MgdmNtcG5ndF91cXNzIHZjbXBmYWxzZV9vc3NzIHZjbXBuZXFfb3NzcyB2Y21wZ2Vfb3FzcyB2Y21wZ3Rfb3FzcyB2Y21wdHJ1ZV91c3NzIHZjbXBzcyB2Y29taXNkIHZjb21pc3MgdmN2dGRxMnBkIHZjdnRkcTJwcyB2Y3Z0cGQyZHEgdmN2dHBkMnBzIHZjdnRwczJkcSB2Y3Z0cHMycGQgdmN2dHNkMnNpIHZjdnRzZDJzcyB2Y3Z0c2kyc2QgdmN2dHNpMnNzIHZjdnRzczJzZCB2Y3Z0c3Myc2kgdmN2dHRwZDJkcSB2Y3Z0dHBzMmRxIHZjdnR0c2Qyc2kgdmN2dHRzczJzaSB2ZGl2cGQgdmRpdnBzIHZkaXZzZCB2ZGl2c3MgdmRwcGQgdmRwcHMgdmV4dHJhY3RmMTI4IHZleHRyYWN0cHMgdmhhZGRwZCB2aGFkZHBzIHZoc3VicGQgdmhzdWJwcyB2aW5zZXJ0ZjEyOCB2aW5zZXJ0cHMgdmxkZHF1IHZsZHFxdSB2bGRteGNzciB2bWFza21vdmRxdSB2bWFza21vdnBzIHZtYXNrbW92cGQgdm1heHBkIHZtYXhwcyB2bWF4c2Qgdm1heHNzIHZtaW5wZCB2bWlucHMgdm1pbnNkIHZtaW5zcyB2bW92YXBkIHZtb3ZhcHMgdm1vdmQgdm1vdnEgdm1vdmRkdXAgdm1vdmRxYSB2bW92cXFhIHZtb3ZkcXUgdm1vdnFxdSB2bW92aGxwcyB2bW92aHBkIHZtb3ZocHMgdm1vdmxocHMgdm1vdmxwZCB2bW92bHBzIHZtb3Ztc2twZCB2bW92bXNrcHMgdm1vdm50ZHEgdm1vdm50cXEgdm1vdm50ZHFhIHZtb3ZudHBkIHZtb3ZudHBzIHZtb3ZzZCB2bW92c2hkdXAgdm1vdnNsZHVwIHZtb3ZzcyB2bW92dXBkIHZtb3Z1cHMgdm1wc2FkYncgdm11bHBkIHZtdWxwcyB2bXVsc2Qgdm11bHNzIHZvcnBkIHZvcnBzIHZwYWJzYiB2cGFic3cgdnBhYnNkIHZwYWNrc3N3YiB2cGFja3NzZHcgdnBhY2t1c3diIHZwYWNrdXNkdyB2cGFkZGIgdnBhZGR3IHZwYWRkZCB2cGFkZHEgdnBhZGRzYiB2cGFkZHN3IHZwYWRkdXNiIHZwYWRkdXN3IHZwYWxpZ25yIHZwYW5kIHZwYW5kbiB2cGF2Z2IgdnBhdmd3IHZwYmxlbmR2YiB2cGJsZW5kdyB2cGNtcGVzdHJpIHZwY21wZXN0cm0gdnBjbXBpc3RyaSB2cGNtcGlzdHJtIHZwY21wZXFiIHZwY21wZXF3IHZwY21wZXFkIHZwY21wZXFxIHZwY21wZ3RiIHZwY21wZ3R3IHZwY21wZ3RkIHZwY21wZ3RxIHZwZXJtaWxwZCB2cGVybWlscHMgdnBlcm0yZjEyOCB2cGV4dHJiIHZwZXh0cncgdnBleHRyZCB2cGV4dHJxIHZwaGFkZHcgdnBoYWRkZCB2cGhhZGRzdyB2cGhtaW5wb3N1dyB2cGhzdWJ3IHZwaHN1YmQgdnBoc3Vic3cgdnBpbnNyYiB2cGluc3J3IHZwaW5zcmQgdnBpbnNycSB2cG1hZGR3ZCB2cG1hZGR1YnN3IHZwbWF4c2IgdnBtYXhzdyB2cG1heHNkIHZwbWF4dWIgdnBtYXh1dyB2cG1heHVkIHZwbWluc2IgdnBtaW5zdyB2cG1pbnNkIHZwbWludWIgdnBtaW51dyB2cG1pbnVkIHZwbW92bXNrYiB2cG1vdnN4YncgdnBtb3ZzeGJkIHZwbW92c3hicSB2cG1vdnN4d2QgdnBtb3ZzeHdxIHZwbW92c3hkcSB2cG1vdnp4YncgdnBtb3Z6eGJkIHZwbW92enhicSB2cG1vdnp4d2QgdnBtb3Z6eHdxIHZwbW92enhkcSB2cG11bGh1dyB2cG11bGhyc3cgdnBtdWxodyB2cG11bGx3IHZwbXVsbGQgdnBtdWx1ZHEgdnBtdWxkcSB2cG9yIHZwc2FkYncgdnBzaHVmYiB2cHNodWZkIHZwc2h1Zmh3IHZwc2h1Zmx3IHZwc2lnbmIgdnBzaWdudyB2cHNpZ25kIHZwc2xsZHEgdnBzcmxkcSB2cHNsbHcgdnBzbGxkIHZwc2xscSB2cHNyYXcgdnBzcmFkIHZwc3JsdyB2cHNybGQgdnBzcmxxIHZwdGVzdCB2cHN1YmIgdnBzdWJ3IHZwc3ViZCB2cHN1YnEgdnBzdWJzYiB2cHN1YnN3IHZwc3VidXNiIHZwc3VidXN3IHZwdW5wY2toYncgdnB1bnBja2h3ZCB2cHVucGNraGRxIHZwdW5wY2tocWRxIHZwdW5wY2tsYncgdnB1bnBja2x3ZCB2cHVucGNrbGRxIHZwdW5wY2tscWRxIHZweG9yIHZyY3BwcyB2cmNwc3MgdnJzcXJ0cHMgdnJzcXJ0c3MgdnJvdW5kcGQgdnJvdW5kcHMgdnJvdW5kc2QgdnJvdW5kc3MgdnNodWZwZCB2c2h1ZnBzIHZzcXJ0cGQgdnNxcnRwcyB2c3FydHNkIHZzcXJ0c3MgdnN0bXhjc3IgdnN1YnBkIHZzdWJwcyB2c3Vic2QgdnN1YnNzIHZ0ZXN0cHMgdnRlc3RwZCB2dWNvbWlzZCB2dWNvbWlzcyB2dW5wY2tocGQgdnVucGNraHBzIHZ1bnBja2xwZCB2dW5wY2tscHMgdnhvcnBkIHZ4b3JwcyB2emVyb2FsbCB2emVyb3VwcGVyIHBjbG11bGxxbHFkcSBwY2xtdWxocWxxZHEgcGNsbXVsbHFocWRxIHBjbG11bGhxaHFkcSBwY2xtdWxxZHEgdnBjbG11bGxxbHFkcSB2cGNsbXVsaHFscWRxIHZwY2xtdWxscWhxZHEgdnBjbG11bGhxaHFkcSB2cGNsbXVscWRxIHZmbWFkZDEzMnBzIHZmbWFkZDEzMnBkIHZmbWFkZDMxMnBzIHZmbWFkZDMxMnBkIHZmbWFkZDIxM3BzIHZmbWFkZDIxM3BkIHZmbWFkZDEyM3BzIHZmbWFkZDEyM3BkIHZmbWFkZDIzMXBzIHZmbWFkZDIzMXBkIHZmbWFkZDMyMXBzIHZmbWFkZDMyMXBkIHZmbWFkZHN1YjEzMnBzIHZmbWFkZHN1YjEzMnBkIHZmbWFkZHN1YjMxMnBzIHZmbWFkZHN1YjMxMnBkIHZmbWFkZHN1YjIxM3BzIHZmbWFkZHN1YjIxM3BkIHZmbWFkZHN1YjEyM3BzIHZmbWFkZHN1YjEyM3BkIHZmbWFkZHN1YjIzMXBzIHZmbWFkZHN1YjIzMXBkIHZmbWFkZHN1YjMyMXBzIHZmbWFkZHN1YjMyMXBkIHZmbXN1YjEzMnBzIHZmbXN1YjEzMnBkIHZmbXN1YjMxMnBzIHZmbXN1YjMxMnBkIHZmbXN1YjIxM3BzIHZmbXN1YjIxM3BkIHZmbXN1YjEyM3BzIHZmbXN1YjEyM3BkIHZmbXN1YjIzMXBzIHZmbXN1YjIzMXBkIHZmbXN1YjMyMXBzIHZmbXN1YjMyMXBkIHZmbXN1YmFkZDEzMnBzIHZmbXN1YmFkZDEzMnBkIHZmbXN1YmFkZDMxMnBzIHZmbXN1YmFkZDMxMnBkIHZmbXN1YmFkZDIxM3BzIHZmbXN1YmFkZDIxM3BkIHZmbXN1YmFkZDEyM3BzIHZmbXN1YmFkZDEyM3BkIHZmbXN1YmFkZDIzMXBzIHZmbXN1YmFkZDIzMXBkIHZmbXN1YmFkZDMyMXBzIHZmbXN1YmFkZDMyMXBkIHZmbm1hZGQxMzJwcyB2Zm5tYWRkMTMycGQgdmZubWFkZDMxMnBzIHZmbm1hZGQzMTJwZCB2Zm5tYWRkMjEzcHMgdmZubWFkZDIxM3BkIHZmbm1hZGQxMjNwcyB2Zm5tYWRkMTIzcGQgdmZubWFkZDIzMXBzIHZmbm1hZGQyMzFwZCB2Zm5tYWRkMzIxcHMgdmZubWFkZDMyMXBkIHZmbm1zdWIxMzJwcyB2Zm5tc3ViMTMycGQgdmZubXN1YjMxMnBzIHZmbm1zdWIzMTJwZCB2Zm5tc3ViMjEzcHMgdmZubXN1YjIxM3BkIHZmbm1zdWIxMjNwcyB2Zm5tc3ViMTIzcGQgdmZubXN1YjIzMXBzIHZmbm1zdWIyMzFwZCB2Zm5tc3ViMzIxcHMgdmZubXN1YjMyMXBkIHZmbWFkZDEzMnNzIHZmbWFkZDEzMnNkIHZmbWFkZDMxMnNzIHZmbWFkZDMxMnNkIHZmbWFkZDIxM3NzIHZmbWFkZDIxM3NkIHZmbWFkZDEyM3NzIHZmbWFkZDEyM3NkIHZmbWFkZDIzMXNzIHZmbWFkZDIzMXNkIHZmbWFkZDMyMXNzIHZmbWFkZDMyMXNkIHZmbXN1YjEzMnNzIHZmbXN1YjEzMnNkIHZmbXN1YjMxMnNzIHZmbXN1YjMxMnNkIHZmbXN1YjIxM3NzIHZmbXN1YjIxM3NkIHZmbXN1YjEyM3NzIHZmbXN1YjEyM3NkIHZmbXN1YjIzMXNzIHZmbXN1YjIzMXNkIHZmbXN1YjMyMXNzIHZmbXN1YjMyMXNkIHZmbm1hZGQxMzJzcyB2Zm5tYWRkMTMyc2QgdmZubWFkZDMxMnNzIHZmbm1hZGQzMTJzZCB2Zm5tYWRkMjEzc3MgdmZubWFkZDIxM3NkIHZmbm1hZGQxMjNzcyB2Zm5tYWRkMTIzc2QgdmZubWFkZDIzMXNzIHZmbm1hZGQyMzFzZCB2Zm5tYWRkMzIxc3MgdmZubWFkZDMyMXNkIHZmbm1zdWIxMzJzcyB2Zm5tc3ViMTMyc2QgdmZubXN1YjMxMnNzIHZmbm1zdWIzMTJzZCB2Zm5tc3ViMjEzc3MgdmZubXN1YjIxM3NkIHZmbm1zdWIxMjNzcyB2Zm5tc3ViMTIzc2QgdmZubXN1YjIzMXNzIHZmbm1zdWIyMzFzZCB2Zm5tc3ViMzIxc3MgdmZubXN1YjMyMXNkIHJkZnNiYXNlIHJkZ3NiYXNlIHJkcmFuZCB3cmZzYmFzZSB3cmdzYmFzZSB2Y3Z0cGgycHMgdmN2dHBzMnBoIGFkY3ggYWRveCByZHNlZWQgY2xhYyBzdGFjIHhzdG9yZSB4Y3J5cHRlY2IgeGNyeXB0Y2JjIHhjcnlwdGN0ciB4Y3J5cHRjZmIgeGNyeXB0b2ZiIG1vbnRtdWwgeHNoYTEgeHNoYTI1NiBsbHdwY2Igc2x3cGNiIGx3cHZhbCBsd3BpbnMgdmZtYWRkcGQgdmZtYWRkcHMgdmZtYWRkc2QgdmZtYWRkc3MgdmZtYWRkc3VicGQgdmZtYWRkc3VicHMgdmZtc3ViYWRkcGQgdmZtc3ViYWRkcHMgdmZtc3VicGQgdmZtc3VicHMgdmZtc3Vic2QgdmZtc3Vic3MgdmZubWFkZHBkIHZmbm1hZGRwcyB2Zm5tYWRkc2QgdmZubWFkZHNzIHZmbm1zdWJwZCB2Zm5tc3VicHMgdmZubXN1YnNkIHZmbm1zdWJzcyB2ZnJjenBkIHZmcmN6cHMgdmZyY3pzZCB2ZnJjenNzIHZwY21vdiB2cGNvbWIgdnBjb21kIHZwY29tcSB2cGNvbXViIHZwY29tdWQgdnBjb211cSB2cGNvbXV3IHZwY29tdyB2cGhhZGRiZCB2cGhhZGRicSB2cGhhZGRidyB2cGhhZGRkcSB2cGhhZGR1YmQgdnBoYWRkdWJxIHZwaGFkZHVidyB2cGhhZGR1ZHEgdnBoYWRkdXdkIHZwaGFkZHV3cSB2cGhhZGR3ZCB2cGhhZGR3cSB2cGhzdWJidyB2cGhzdWJkcSB2cGhzdWJ3ZCB2cG1hY3NkZCB2cG1hY3NkcWggdnBtYWNzZHFsIHZwbWFjc3NkZCB2cG1hY3NzZHFoIHZwbWFjc3NkcWwgdnBtYWNzc3dkIHZwbWFjc3N3dyB2cG1hY3N3ZCB2cG1hY3N3dyB2cG1hZGNzc3dkIHZwbWFkY3N3ZCB2cHBlcm0gdnByb3RiIHZwcm90ZCB2cHJvdHEgdnByb3R3IHZwc2hhYiB2cHNoYWQgdnBzaGFxIHZwc2hhdyB2cHNobGIgdnBzaGxkIHZwc2hscSB2cHNobHcgdmJyb2FkY2FzdGkxMjggdnBibGVuZGQgdnBicm9hZGNhc3RiIHZwYnJvYWRjYXN0dyB2cGJyb2FkY2FzdGQgdnBicm9hZGNhc3RxIHZwZXJtZCB2cGVybXBkIHZwZXJtcHMgdnBlcm1xIHZwZXJtMmkxMjggdmV4dHJhY3RpMTI4IHZpbnNlcnRpMTI4IHZwbWFza21vdmQgdnBtYXNrbW92cSB2cHNsbHZkIHZwc2xsdnEgdnBzcmF2ZCB2cHNybHZkIHZwc3JsdnEgdmdhdGhlcmRwZCB2Z2F0aGVycXBkIHZnYXRoZXJkcHMgdmdhdGhlcnFwcyB2cGdhdGhlcmRkIHZwZ2F0aGVycWQgdnBnYXRoZXJkcSB2cGdhdGhlcnFxIHhhYm9ydCB4YmVnaW4geGVuZCB4dGVzdCBhbmRuIGJleHRyIGJsY2kgYmxjaWMgYmxzaSBibHNpYyBibGNmaWxsIGJsc2ZpbGwgYmxjbXNrIGJsc21zayBibHNyIGJsY3MgYnpoaSBtdWx4IHBkZXAgcGV4dCByb3J4IHNhcnggc2hseCBzaHJ4IHR6Y250IHR6bXNrIHQxbXNrYyB2YWxpZ25kIHZhbGlnbnEgdmJsZW5kbXBkIHZibGVuZG1wcyB2YnJvYWRjYXN0ZjMyeDQgdmJyb2FkY2FzdGY2NHg0IHZicm9hZGNhc3RpMzJ4NCB2YnJvYWRjYXN0aTY0eDQgdmNvbXByZXNzcGQgdmNvbXByZXNzcHMgdmN2dHBkMnVkcSB2Y3Z0cHMydWRxIHZjdnRzZDJ1c2kgdmN2dHNzMnVzaSB2Y3Z0dHBkMnVkcSB2Y3Z0dHBzMnVkcSB2Y3Z0dHNkMnVzaSB2Y3Z0dHNzMnVzaSB2Y3Z0dWRxMnBkIHZjdnR1ZHEycHMgdmN2dHVzaTJzZCB2Y3Z0dXNpMnNzIHZleHBhbmRwZCB2ZXhwYW5kcHMgdmV4dHJhY3RmMzJ4NCB2ZXh0cmFjdGY2NHg0IHZleHRyYWN0aTMyeDQgdmV4dHJhY3RpNjR4NCB2Zml4dXBpbW1wZCB2Zml4dXBpbW1wcyB2Zml4dXBpbW1zZCB2Zml4dXBpbW1zcyB2Z2V0ZXhwcGQgdmdldGV4cHBzIHZnZXRleHBzZCB2Z2V0ZXhwc3MgdmdldG1hbnRwZCB2Z2V0bWFudHBzIHZnZXRtYW50c2QgdmdldG1hbnRzcyB2aW5zZXJ0ZjMyeDQgdmluc2VydGY2NHg0IHZpbnNlcnRpMzJ4NCB2aW5zZXJ0aTY0eDQgdm1vdmRxYTMyIHZtb3ZkcWE2NCB2bW92ZHF1MzIgdm1vdmRxdTY0IHZwYWJzcSB2cGFuZGQgdnBhbmRuZCB2cGFuZG5xIHZwYW5kcSB2cGJsZW5kbWQgdnBibGVuZG1xIHZwY21wbHRkIHZwY21wbGVkIHZwY21wbmVxZCB2cGNtcG5sdGQgdnBjbXBubGVkIHZwY21wZCB2cGNtcGx0cSB2cGNtcGxlcSB2cGNtcG5lcXEgdnBjbXBubHRxIHZwY21wbmxlcSB2cGNtcHEgdnBjbXBlcXVkIHZwY21wbHR1ZCB2cGNtcGxldWQgdnBjbXBuZXF1ZCB2cGNtcG5sdHVkIHZwY21wbmxldWQgdnBjbXB1ZCB2cGNtcGVxdXEgdnBjbXBsdHVxIHZwY21wbGV1cSB2cGNtcG5lcXVxIHZwY21wbmx0dXEgdnBjbXBubGV1cSB2cGNtcHVxIHZwY29tcHJlc3NkIHZwY29tcHJlc3NxIHZwZXJtaTJkIHZwZXJtaTJwZCB2cGVybWkycHMgdnBlcm1pMnEgdnBlcm10MmQgdnBlcm10MnBkIHZwZXJtdDJwcyB2cGVybXQycSB2cGV4cGFuZGQgdnBleHBhbmRxIHZwbWF4c3EgdnBtYXh1cSB2cG1pbnNxIHZwbWludXEgdnBtb3ZkYiB2cG1vdmR3IHZwbW92cWIgdnBtb3ZxZCB2cG1vdnF3IHZwbW92c2RiIHZwbW92c2R3IHZwbW92c3FiIHZwbW92c3FkIHZwbW92c3F3IHZwbW92dXNkYiB2cG1vdnVzZHcgdnBtb3Z1c3FiIHZwbW92dXNxZCB2cG1vdnVzcXcgdnBvcmQgdnBvcnEgdnByb2xkIHZwcm9scSB2cHJvbHZkIHZwcm9sdnEgdnByb3JkIHZwcm9ycSB2cHJvcnZkIHZwcm9ydnEgdnBzY2F0dGVyZGQgdnBzY2F0dGVyZHEgdnBzY2F0dGVycWQgdnBzY2F0dGVycXEgdnBzcmFxIHZwc3JhdnEgdnB0ZXJubG9nZCB2cHRlcm5sb2dxIHZwdGVzdG1kIHZwdGVzdG1xIHZwdGVzdG5tZCB2cHRlc3RubXEgdnB4b3JkIHZweG9ycSB2cmNwMTRwZCB2cmNwMTRwcyB2cmNwMTRzZCB2cmNwMTRzcyB2cm5kc2NhbGVwZCB2cm5kc2NhbGVwcyB2cm5kc2NhbGVzZCB2cm5kc2NhbGVzcyB2cnNxcnQxNHBkIHZyc3FydDE0cHMgdnJzcXJ0MTRzZCB2cnNxcnQxNHNzIHZzY2FsZWZwZCB2c2NhbGVmcHMgdnNjYWxlZnNkIHZzY2FsZWZzcyB2c2NhdHRlcmRwZCB2c2NhdHRlcmRwcyB2c2NhdHRlcnFwZCB2c2NhdHRlcnFwcyB2c2h1ZmYzMng0IHZzaHVmZjY0eDIgdnNodWZpMzJ4NCB2c2h1Zmk2NHgyIGthbmRudyBrYW5kdyBrbW92dyBrbm90dyBrb3J0ZXN0dyBrb3J3IGtzaGlmdGx3IGtzaGlmdHJ3IGt1bnBja2J3IGt4bm9ydyBreG9ydyB2cGJyb2FkY2FzdG1iMnEgdnBicm9hZGNhc3RtdzJkIHZwY29uZmxpY3RkIHZwY29uZmxpY3RxIHZwbHpjbnRkIHZwbHpjbnRxIHZleHAycGQgdmV4cDJwcyB2cmNwMjhwZCB2cmNwMjhwcyB2cmNwMjhzZCB2cmNwMjhzcyB2cnNxcnQyOHBkIHZyc3FydDI4cHMgdnJzcXJ0MjhzZCB2cnNxcnQyOHNzIHZnYXRoZXJwZjBkcGQgdmdhdGhlcnBmMGRwcyB2Z2F0aGVycGYwcXBkIHZnYXRoZXJwZjBxcHMgdmdhdGhlcnBmMWRwZCB2Z2F0aGVycGYxZHBzIHZnYXRoZXJwZjFxcGQgdmdhdGhlcnBmMXFwcyB2c2NhdHRlcnBmMGRwZCB2c2NhdHRlcnBmMGRwcyB2c2NhdHRlcnBmMHFwZCB2c2NhdHRlcnBmMHFwcyB2c2NhdHRlcnBmMWRwZCB2c2NhdHRlcnBmMWRwcyB2c2NhdHRlcnBmMXFwZCB2c2NhdHRlcnBmMXFwcyBwcmVmZXRjaHd0MSBibmRtayBibmRjbCBibmRjdSBibmRjbiBibmRtb3YgYm5kbGR4IGJuZHN0eCBzaGExcm5kczQgc2hhMW5leHRlIHNoYTFtc2cxIHNoYTFtc2cyIHNoYTI1NnJuZHMyIHNoYTI1Nm1zZzEgc2hhMjU2bXNnMiBoaW50X25vcDAgaGludF9ub3AxIGhpbnRfbm9wMiBoaW50X25vcDMgaGludF9ub3A0IGhpbnRfbm9wNSBoaW50X25vcDYgaGludF9ub3A3IGhpbnRfbm9wOCBoaW50X25vcDkgaGludF9ub3AxMCBoaW50X25vcDExIGhpbnRfbm9wMTIgaGludF9ub3AxMyBoaW50X25vcDE0IGhpbnRfbm9wMTUgaGludF9ub3AxNiBoaW50X25vcDE3IGhpbnRfbm9wMTggaGludF9ub3AxOSBoaW50X25vcDIwIGhpbnRfbm9wMjEgaGludF9ub3AyMiBoaW50X25vcDIzIGhpbnRfbm9wMjQgaGludF9ub3AyNSBoaW50X25vcDI2IGhpbnRfbm9wMjcgaGludF9ub3AyOCBoaW50X25vcDI5IGhpbnRfbm9wMzAgaGludF9ub3AzMSBoaW50X25vcDMyIGhpbnRfbm9wMzMgaGludF9ub3AzNCBoaW50X25vcDM1IGhpbnRfbm9wMzYgaGludF9ub3AzNyBoaW50X25vcDM4IGhpbnRfbm9wMzkgaGludF9ub3A0MCBoaW50X25vcDQxIGhpbnRfbm9wNDIgaGludF9ub3A0MyBoaW50X25vcDQ0IGhpbnRfbm9wNDUgaGludF9ub3A0NiBoaW50X25vcDQ3IGhpbnRfbm9wNDggaGludF9ub3A0OSBoaW50X25vcDUwIGhpbnRfbm9wNTEgaGludF9ub3A1MiBoaW50X25vcDUzIGhpbnRfbm9wNTQgaGludF9ub3A1NSBoaW50X25vcDU2IGhpbnRfbm9wNTcgaGludF9ub3A1OCBoaW50X25vcDU5IGhpbnRfbm9wNjAgaGludF9ub3A2MSBoaW50X25vcDYyIGhpbnRfbm9wNjMnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIEluc3RydWN0aW9uIHBvaW50ZXJcbiAgICAgICAgJ2lwIGVpcCByaXAgJyArXG4gICAgICAgIC8vIDgtYml0IHJlZ2lzdGVyc1xuICAgICAgICAnYWwgYWggYmwgYmggY2wgY2ggZGwgZGggc2lsIGRpbCBicGwgc3BsIHI4YiByOWIgcjEwYiByMTFiIHIxMmIgcjEzYiByMTRiIHIxNWIgJyArXG4gICAgICAgIC8vIDE2LWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ2F4IGJ4IGN4IGR4IHNpIGRpIGJwIHNwIHI4dyByOXcgcjEwdyByMTF3IHIxMncgcjEzdyByMTR3IHIxNXcgJyArXG4gICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ2VheCBlYnggZWN4IGVkeCBlc2kgZWRpIGVicCBlc3AgZWlwIHI4ZCByOWQgcjEwZCByMTFkIHIxMmQgcjEzZCByMTRkIHIxNWQgJyArXG4gICAgICAgIC8vIDY0LWJpdCByZWdpc3RlcnNcbiAgICAgICAgJ3JheCByYnggcmN4IHJkeCByc2kgcmRpIHJicCByc3AgcjggcjkgcjEwIHIxMSByMTIgcjEzIHIxNCByMTUgJyArXG4gICAgICAgIC8vIFNlZ21lbnQgcmVnaXN0ZXJzXG4gICAgICAgICdjcyBkcyBlcyBmcyBncyBzcyAnICtcbiAgICAgICAgLy8gRmxvYXRpbmcgcG9pbnQgc3RhY2sgcmVnaXN0ZXJzXG4gICAgICAgICdzdCBzdDAgc3QxIHN0MiBzdDMgc3Q0IHN0NSBzdDYgc3Q3ICcgK1xuICAgICAgICAvLyBNTVggUmVnaXN0ZXJzXG4gICAgICAgICdtbTAgbW0xIG1tMiBtbTMgbW00IG1tNSBtbTYgbW03ICcgK1xuICAgICAgICAvLyBTU0UgcmVnaXN0ZXJzXG4gICAgICAgICd4bW0wICB4bW0xICB4bW0yICB4bW0zICB4bW00ICB4bW01ICB4bW02ICB4bW03ICB4bW04ICB4bW05IHhtbTEwICB4bW0xMSB4bW0xMiB4bW0xMyB4bW0xNCB4bW0xNSAnICtcbiAgICAgICAgJ3htbTE2IHhtbTE3IHhtbTE4IHhtbTE5IHhtbTIwIHhtbTIxIHhtbTIyIHhtbTIzIHhtbTI0IHhtbTI1IHhtbTI2IHhtbTI3IHhtbTI4IHhtbTI5IHhtbTMwIHhtbTMxICcgK1xuICAgICAgICAvLyBBVlggcmVnaXN0ZXJzXG4gICAgICAgICd5bW0wICB5bW0xICB5bW0yICB5bW0zICB5bW00ICB5bW01ICB5bW02ICB5bW03ICB5bW04ICB5bW05IHltbTEwICB5bW0xMSB5bW0xMiB5bW0xMyB5bW0xNCB5bW0xNSAnICtcbiAgICAgICAgJ3ltbTE2IHltbTE3IHltbTE4IHltbTE5IHltbTIwIHltbTIxIHltbTIyIHltbTIzIHltbTI0IHltbTI1IHltbTI2IHltbTI3IHltbTI4IHltbTI5IHltbTMwIHltbTMxICcgK1xuICAgICAgICAvLyBBVlgtNTEyRiByZWdpc3RlcnNcbiAgICAgICAgJ3ptbTAgIHptbTEgIHptbTIgIHptbTMgIHptbTQgIHptbTUgIHptbTYgIHptbTcgIHptbTggIHptbTkgem1tMTAgIHptbTExIHptbTEyIHptbTEzIHptbTE0IHptbTE1ICcgK1xuICAgICAgICAnem1tMTYgem1tMTcgem1tMTggem1tMTkgem1tMjAgem1tMjEgem1tMjIgem1tMjMgem1tMjQgem1tMjUgem1tMjYgem1tMjcgem1tMjggem1tMjkgem1tMzAgem1tMzEgJyArXG4gICAgICAgIC8vIEFWWC01MTJGIG1hc2sgcmVnaXN0ZXJzXG4gICAgICAgICdrMCBrMSBrMiBrMyBrNCBrNSBrNiBrNyAnICtcbiAgICAgICAgLy8gQm91bmQgKE1QWCkgcmVnaXN0ZXJcbiAgICAgICAgJ2JuZDAgYm5kMSBibmQyIGJuZDMgJyArXG4gICAgICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJcbiAgICAgICAgJ2NyMCBjcjEgY3IyIGNyMyBjcjQgY3I4IGRyMCBkcjEgZHIyIGRyMyBkcjggdHIzIHRyNCB0cjUgdHI2IHRyNyAnICtcbiAgICAgICAgLy8gTkFTTSBhbHRyZWcgcGFja2FnZVxuICAgICAgICAncjAgcjEgcjIgcjMgcjQgcjUgcjYgcjcgcjBiIHIxYiByMmIgcjNiIHI0YiByNWIgcjZiIHI3YiAnICtcbiAgICAgICAgJ3IwdyByMXcgcjJ3IHIzdyByNHcgcjV3IHI2dyByN3cgcjBkIHIxZCByMmQgcjNkIHI0ZCByNWQgcjZkIHI3ZCAnICtcbiAgICAgICAgJ3IwaCByMWggcjJoIHIzaCAnICtcbiAgICAgICAgJ3IwbCByMWwgcjJsIHIzbCByNGwgcjVsIHI2bCByN2wgcjhsIHI5bCByMTBsIHIxMWwgcjEybCByMTNsIHIxNGwgcjE1bCAnICtcblxuICAgICAgICAnZGIgZHcgZGQgZHEgZHQgZGRxIGRvIGR5IGR6ICcgK1xuICAgICAgICAncmVzYiByZXN3IHJlc2QgcmVzcSByZXN0IHJlc2RxIHJlc28gcmVzeSByZXN6ICcgK1xuICAgICAgICAnaW5jYmluIGVxdSB0aW1lcyAnICtcbiAgICAgICAgJ2J5dGUgd29yZCBkd29yZCBxd29yZCBub3NwbGl0IHJlbCBhYnMgc2VnIHdydCBzdHJpY3QgbmVhciBmYXIgYTMyIHB0cicsXG5cbiAgICAgIG1ldGE6XG4gICAgICAgICclZGVmaW5lICV4ZGVmaW5lICUrICV1bmRlZiAlZGVmc3RyICVkZWZ0b2sgJWFzc2lnbiAlc3RyY2F0ICVzdHJsZW4gJXN1YnN0ciAlcm90YXRlICVlbGlmICVlbHNlICVlbmRpZiAnICtcbiAgICAgICAgJyVpZiAlaWZtYWNybyAlaWZjdHggJWlmaWRuICVpZmlkbmkgJWlmaWQgJWlmbnVtICVpZnN0ciAlaWZ0b2tlbiAlaWZlbXB0eSAlaWZlbnYgJWVycm9yICV3YXJuaW5nICVmYXRhbCAlcmVwICcgK1xuICAgICAgICAnJWVuZHJlcCAlaW5jbHVkZSAlcHVzaCAlcG9wICVyZXBsICVwYXRoc2VhcmNoICVkZXBlbmQgJXVzZSAlYXJnICVzdGFja3NpemUgJWxvY2FsICVsaW5lICVjb21tZW50ICVlbmRjb21tZW50ICcgK1xuICAgICAgICAnLm5vbGlzdCAnICtcbiAgICAgICAgJ19fRklMRV9fIF9fTElORV9fIF9fU0VDVF9fICBfX0JJVFNfXyBfX09VVFBVVF9GT1JNQVRfXyBfX0RBVEVfXyBfX1RJTUVfXyBfX0RBVEVfTlVNX18gX19USU1FX05VTV9fICcgK1xuICAgICAgICAnX19VVENfREFURV9fIF9fVVRDX1RJTUVfXyBfX1VUQ19EQVRFX05VTV9fIF9fVVRDX1RJTUVfTlVNX18gIF9fUEFTU19fIHN0cnVjIGVuZHN0cnVjIGlzdHJ1YyBhdCBpZW5kICcgK1xuICAgICAgICAnYWxpZ24gYWxpZ25iIHNlY3RhbGlnbiBkYXogbm9kYXogdXAgZG93biB6ZXJvIGRlZmF1bHQgb3B0aW9uIGFzc3VtZSBwdWJsaWMgJyArXG5cbiAgICAgICAgJ2JpdHMgdXNlMTYgdXNlMzIgdXNlNjQgZGVmYXVsdCBzZWN0aW9uIHNlZ21lbnQgYWJzb2x1dGUgZXh0ZXJuIGdsb2JhbCBjb21tb24gY3B1IGZsb2F0ICcgK1xuICAgICAgICAnX191dGYxNl9fIF9fdXRmMTZsZV9fIF9fdXRmMTZiZV9fIF9fdXRmMzJfXyBfX3V0ZjMybGVfXyBfX3V0ZjMyYmVfXyAnICtcbiAgICAgICAgJ19fZmxvYXQ4X18gX19mbG9hdDE2X18gX19mbG9hdDMyX18gX19mbG9hdDY0X18gX19mbG9hdDgwbV9fIF9fZmxvYXQ4MGVfXyBfX2Zsb2F0MTI4bF9fIF9fZmxvYXQxMjhoX18gJyArXG4gICAgICAgICdfX0luZmluaXR5X18gX19RTmFOX18gX19TTmFOX18gSW5mIE5hTiBRTmFOIFNOYU4gZmxvYXQ4IGZsb2F0MTYgZmxvYXQzMiBmbG9hdDY0IGZsb2F0ODBtIGZsb2F0ODBlICcgK1xuICAgICAgICAnZmxvYXQxMjhsIGZsb2F0MTI4aCBfX0ZMT0FUX0RBWl9fIF9fRkxPQVRfUk9VTkRfXyBfX0ZMT0FUX18nXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnOycsXG4gICAgICAgICckJyxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEZsb2F0IG51bWJlciBhbmQgeDg3IEJDRFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzooWzAtOV1bMC05X10qKT9cXFxcLlswLTlfXSooPzpbZUVdWystXT9bMC05X10rKT98JyArXG4gICAgICAgICAgICAgICAgICAgJygwW1h4XSk/WzAtOV1bMC05X10qXFxcXC4/WzAtOV9dKig/OltwUF0oPzpbKy1dP1swLTlfXSspPyk/KVxcXFxiJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICAvLyBIZXggbnVtYmVyIGluICRcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXCRbMC05XVswLTlBLUZhLWZdKicsIHJlbGV2YW5jZTogMCB9LFxuXG4gICAgICAgICAgLy8gTnVtYmVyIGluIEgsRCxULFEsTyxCLFkgc3VmZml4XG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKD86WzAtOUEtRmEtZl1bMC05QS1GYS1mX10qW0hoXXxbMC05XVswLTlfXSpbRGRUdF0/fFswLTddWzAtN19dKltRcU9vXXxbMC0xXVswLTFfXSpbQmJZeV0pXFxcXGInIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gWCxELFQsUSxPLEIsWSBwcmVmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzowW1h4XVswLTlBLUZhLWZfXSt8MFtEZFR0XVswLTlfXSt8MFtRcU9vXVswLTdfXSt8MFtCYll5XVswLTFfXSspXFxcXGInfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gRG91YmxlIHF1b3RlIHN0cmluZ1xuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAvLyBTaW5nbGUtcXVvdGVkIHN0cmluZ1xuICAgICAgICAgIHsgYmVnaW46ICdcXCcnLCBlbmQ6ICdbXlxcXFxcXFxcXVxcJycgfSxcbiAgICAgICAgICAvLyBCYWNrcXVvdGVkIHN0cmluZ1xuICAgICAgICAgIHsgYmVnaW46ICdgJywgZW5kOiAnW15cXFxcXFxcXF1gJyB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAvLyBHbG9iYWwgbGFiZWwgYW5kIGxvY2FsIGxhYmVsXG4gICAgICAgICAgeyBiZWdpbjogJ15cXFxccypbQS1aYS16Ll8/XVtBLVphLXowLTlfJCNAfi4/XSooOnxcXFxccytsYWJlbCknIH0sXG4gICAgICAgICAgLy8gTWFjcm8tbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKiUlW0EtWmEtejAtOV8kI0B+Lj9dKjonIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclWzAtOV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclIVxcUysnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqXFwuW1xcd18tXSsvXG4gICAgICB9XG4gICAgXVxuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgdmFyIEJVSUxUSU5fTU9EVUxFUyA9XG4gICAgJ09iamVjdExvYWRlciBBbmltYXRlIE1vdmllQ3JlZGl0cyBTbGlkZXMgRmlsdGVycyBTaGFkaW5nIE1hdGVyaWFscyBMZW5zRmxhcmUgTWFwcGluZyBWTENBdWRpb1ZpZGVvICcgK1xuICAgICdTdGVyZW9EZWNvZGVyIFBvaW50Q2xvdWQgTmV0d29ya0FjY2VzcyBSZW1vdGVDb250cm9sIFJlZ0V4cCBDaHJvbWFLZXkgU25vd2ZhbGwgTm9kZUpTIFNwZWVjaCBDaGFydHMnO1xuXG4gIHZhciBYTF9LRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOlxuICAgICAgJ2lmIHRoZW4gZWxzZSBkbyB3aGlsZSB1bnRpbCBmb3IgbG9vcCBpbXBvcnQgd2l0aCBpcyBhcyB3aGVyZSB3aGVuIGJ5IGRhdGEgY29uc3RhbnQgJyArXG4gICAgICAnaW50ZWdlciByZWFsIHRleHQgbmFtZSBib29sZWFuIHN5bWJvbCBpbmZpeCBwcmVmaXggcG9zdGZpeCBibG9jayB0cmVlJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbmlsJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdpbiBtb2QgcmVtIGFuZCBvciB4b3Igbm90IGFicyBzaWduIGZsb29yIGNlaWwgc3FydCBzaW4gY29zIHRhbiBhc2luICcgK1xuICAgICAgJ2Fjb3MgYXRhbiBleHAgZXhwbTEgbG9nIGxvZzIgbG9nMTAgbG9nMXAgcGkgYXQgdGV4dF9sZW5ndGggdGV4dF9yYW5nZSAnICtcbiAgICAgICd0ZXh0X2ZpbmQgdGV4dF9yZXBsYWNlIGNvbnRhaW5zIHBhZ2Ugc2xpZGUgYmFzaWNfc2xpZGUgdGl0bGVfc2xpZGUgJyArXG4gICAgICAndGl0bGUgc3VidGl0bGUgZmFkZV9pbiBmYWRlX291dCBmYWRlX2F0IGNsZWFyX2NvbG9yIGNvbG9yIGxpbmVfY29sb3IgJyArXG4gICAgICAnbGluZV93aWR0aCB0ZXh0dXJlX3dyYXAgdGV4dHVyZV90cmFuc2Zvcm0gdGV4dHVyZSBzY2FsZV8/eCBzY2FsZV8/eSAnICtcbiAgICAgICdzY2FsZV8/ej8gdHJhbnNsYXRlXz94IHRyYW5zbGF0ZV8/eSB0cmFuc2xhdGVfP3o/IHJvdGF0ZV8/eCByb3RhdGVfP3kgJyArXG4gICAgICAncm90YXRlXz96PyByZWN0YW5nbGUgY2lyY2xlIGVsbGlwc2Ugc3BoZXJlIHBhdGggbGluZV90byBtb3ZlX3RvICcgK1xuICAgICAgJ3F1YWRfdG8gY3VydmVfdG8gdGhlbWUgYmFja2dyb3VuZCBjb250ZW50cyBsb2NhbGx5IHRpbWUgbW91c2VfP3ggJyArXG4gICAgICAnbW91c2VfP3kgbW91c2VfYnV0dG9ucyAnICtcbiAgICAgIEJVSUxUSU5fTU9EVUxFU1xuICB9O1xuXG4gIHZhciBET1VCTEVfUVVPVEVfVEVYVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnXCInLCBlbmQ6ICdcIicsIGlsbGVnYWw6ICdcXFxcbidcbiAgfTtcbiAgdmFyIFNJTkdMRV9RVU9URV9URVhUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdcXCcnLCBlbmQ6ICdcXCcnLCBpbGxlZ2FsOiAnXFxcXG4nXG4gIH07XG4gIHZhciBMT05HX1RFWFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJzw8JywgZW5kOiAnPj4nXG4gIH07XG4gIHZhciBCQVNFRF9OVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1swLTldKyNbMC05QS1aX10rKFxcXFwuWzAtOS1BLVpfXSspPyM/KFtFZV1bKy1dP1swLTldKyk/J1xuICB9O1xuICB2YXIgSU1QT1JUID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdpbXBvcnQnLCBlbmQ6ICckJyxcbiAgICBrZXl3b3JkczogWExfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtET1VCTEVfUVVPVEVfVEVYVF1cbiAgfTtcbiAgdmFyIEZVTkNUSU9OX0RFRklOSVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luOiAvW2Etel1bXlxcbl0qLT4vLCByZXR1cm5CZWdpbjogdHJ1ZSwgZW5kOiAvLT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7c3RhcnRzOiB7XG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogWExfS0VZV09SRFNcbiAgICAgIH19KVxuICAgIF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbJ3RhbyddLFxuICAgIGxleGVtZXM6IC9bYS16QS1aXVthLXpBLVowLTlfP10qLyxcbiAgICBrZXl3b3JkczogWExfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBET1VCTEVfUVVPVEVfVEVYVCxcbiAgICBTSU5HTEVfUVVPVEVfVEVYVCxcbiAgICBMT05HX1RFWFQsXG4gICAgRlVOQ1RJT05fREVGSU5JVElPTixcbiAgICBJTVBPUlQsXG4gICAgQkFTRURfTlVNQkVSLFxuICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3hxdWVyeS8jaWQtdGVybWluYWwtZGVsaW1pdGF0aW9uXG4gIHZhciBLRVlXT1JEUyA9ICdtb2R1bGUgc2NoZW1hIG5hbWVzcGFjZSBib3VuZGFyeS1zcGFjZSBwcmVzZXJ2ZSBuby1wcmVzZXJ2ZSBzdHJpcCBkZWZhdWx0IGNvbGxhdGlvbiBiYXNlLXVyaSBvcmRlcmluZyBjb250ZXh0IGRlY2ltYWwtZm9ybWF0IGRlY2ltYWwtc2VwYXJhdG9yIGNvcHktbmFtZXNwYWNlcyBlbXB0eS1zZXF1ZW5jZSBleGNlcHQgZXhwb25lbnQtc2VwYXJhdG9yIGV4dGVybmFsIGdyb3VwaW5nLXNlcGFyYXRvciBpbmhlcml0IG5vLWluaGVyaXQgbGF4IG1pbnVzLXNpZ24gcGVyLW1pbGxlIHBlcmNlbnQgc2NoZW1hLWF0dHJpYnV0ZSBzY2hlbWEtZWxlbWVudCBzdHJpY3QgdW5vcmRlcmVkIHplcm8tZGlnaXQgJyArXG4gICdkZWNsYXJlIGltcG9ydCBvcHRpb24gZnVuY3Rpb24gdmFsaWRhdGUgdmFyaWFibGUgJyArXG4gICdmb3IgYXQgaW4gbGV0IHdoZXJlIG9yZGVyIGdyb3VwIGJ5IHJldHVybiBpZiB0aGVuIGVsc2UgJyArXG4gICd0dW1ibGluZyBzbGlkaW5nIHdpbmRvdyBzdGFydCB3aGVuIG9ubHkgZW5kIHByZXZpb3VzIG5leHQgc3RhYmxlICcgK1xuICAnYXNjZW5kaW5nIGRlc2NlbmRpbmcgYWxsb3dpbmcgZW1wdHkgZ3JlYXRlc3QgbGVhc3Qgc29tZSBldmVyeSBzYXRpc2ZpZXMgc3dpdGNoIGNhc2UgdHlwZXN3aXRjaCB0cnkgY2F0Y2ggJyArXG4gICdhbmQgb3IgdG8gdW5pb24gaW50ZXJzZWN0IGluc3RhbmNlIG9mIHRyZWF0IGFzIGNhc3RhYmxlIGNhc3QgbWFwIGFycmF5ICcgK1xuICAnZGVsZXRlIGluc2VydCBpbnRvIHJlcGxhY2UgdmFsdWUgcmVuYW1lIGNvcHkgbW9kaWZ5IHVwZGF0ZSc7XG5cbiAgLy8gTm9kZSBUeXBlcyAoc29ydGVkIGJ5IGluaGVyaXRhbmNlKVxuICAvLyBhdG9taWMgdHlwZXMgKHNvcnRlZCBieSBpbmhlcml0YW5jZSlcbiAgdmFyIFRZUEUgPSAnaXRlbSBkb2N1bWVudC1ub2RlIG5vZGUgYXR0cmlidXRlIGRvY3VtZW50IGVsZW1lbnQgY29tbWVudCBuYW1lc3BhY2UgbmFtZXNwYWNlLW5vZGUgcHJvY2Vzc2luZy1pbnN0cnVjdGlvbiB0ZXh0IGNvbnN0cnVjdGlvbiAnICtcbiAgJ3hzOmFueUF0b21pY1R5cGUgeHM6dW50eXBlZEF0b21pYyB4czpkdXJhdGlvbiB4czp0aW1lIHhzOmRlY2ltYWwgeHM6ZmxvYXQgeHM6ZG91YmxlIHhzOmdZZWFyTW9udGggeHM6Z1llYXIgeHM6Z01vbnRoRGF5IHhzOmdNb250aCB4czpnRGF5IHhzOmJvb2xlYW4geHM6YmFzZTY0QmluYXJ5IHhzOmhleEJpbmFyeSB4czphbnlVUkkgeHM6UU5hbWUgeHM6Tk9UQVRJT04geHM6ZGF0ZVRpbWUgeHM6ZGF0ZVRpbWVTdGFtcCB4czpkYXRlIHhzOnN0cmluZyB4czpub3JtYWxpemVkU3RyaW5nIHhzOnRva2VuIHhzOmxhbmd1YWdlIHhzOk5NVE9LRU4geHM6TmFtZSB4czpOQ05hbWUgeHM6SUQgeHM6SURSRUYgeHM6RU5USVRZIHhzOmludGVnZXIgeHM6bm9uUG9zaXRpdmVJbnRlZ2VyIHhzOm5lZ2F0aXZlSW50ZWdlciB4czpsb25nIHhzOmludCB4czpzaG9ydCB4czpieXRlIHhzOm5vbk5lZ2F0aXZlSW50ZWdlciB4czp1bmlzaWduZWRMb25nIHhzOnVuc2lnbmVkSW50IHhzOnVuc2lnbmVkU2hvcnQgeHM6dW5zaWduZWRCeXRlIHhzOnBvc2l0aXZlSW50ZWdlciB4czp5ZWFyTW9udGhEdXJhdGlvbiB4czpkYXlUaW1lRHVyYXRpb24nO1xuXG4gIHZhciBMSVRFUkFMID0gJ2VxIG5lIGx0IGxlIGd0IGdlIGlzICcgK1xuICAgICdzZWxmOjogY2hpbGQ6OiBkZXNjZW5kYW50OjogZGVzY2VuZGFudC1vci1zZWxmOjogYXR0cmlidXRlOjogZm9sbG93aW5nOjogZm9sbG93aW5nLXNpYmxpbmc6OiBwYXJlbnQ6OiBhbmNlc3Rvcjo6IGFuY2VzdG9yLW9yLXNlbGY6OiBwcmVjZWRpbmc6OiBwcmVjZWRpbmctc2libGluZzo6ICcgK1xuICAgICdOYU4nO1xuXG4gIC8vIGZ1bmN0aW9ucyAoVE9ETzogZmluZCByZWdleCBmb3Igb3A6IHdpdGhvdXQgYnJlYWtpbmcgYnVpbGQpXG4gIHZhciBCVUlMVF9JTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFt7XG4gICAgICBiZWdpbjogL1xcYmFycmF5XFw6LyxcbiAgICAgIGVuZDogLyg/OmFwcGVuZHxmaWx0ZXJ8ZmxhdHRlbnxmb2xkXFwtKD86bGVmdHxyaWdodCl8Zm9yLWVhY2goPzpcXC1wYWlyKT98Z2V0fGhlYWR8aW5zZXJ0XFwtYmVmb3JlfGpvaW58cHV0fHJlbW92ZXxyZXZlcnNlfHNpemV8c29ydHxzdWJhcnJheXx0YWlsKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYm1hcFxcOi8sXG4gICAgICBlbmQ6IC8oPzpjb250YWluc3xlbnRyeXxmaW5kfGZvclxcLWVhY2h8Z2V0fGtleXN8bWVyZ2V8cHV0fHJlbW92ZXxzaXplKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYm1hdGhcXDovLFxuICAgICAgZW5kOiAvKD86YSg/OmNvc3xzaW58dGFuWzJdPyl8Y29zfGV4cCg/OjEwKT98bG9nKD86MTApP3xwaXxwb3d8c2lufHNxcnR8dGFuKVxcYi9cbiAgICB9LCB7XG4gICAgICBiZWdpbjogL1xcYm9wXFw6LyxcbiAgICAgIGVuZDogL1xcKC8sXG4gICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGJmblxcOi8sXG4gICAgICBlbmQ6IC9cXCgvLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sXG4vLyBkbyBub3QgaGlnaGxpZ2h0IGluYnVpbHQgc3RyaW5ncyBhcyB2YXJpYWJsZSBvciB4bWwgZWxlbWVudCBuYW1lc1xuICAgIHtcbiAgICAgIGJlZ2luOiAvW148XFwvXFwkXFw6J1wiLV1cXGIoPzphYnN8YWNjdW11bGF0b3JcXC0oPzphZnRlcnxiZWZvcmUpfGFkanVzdFxcLSg/OmRhdGUoPzpUaW1lKT98dGltZSlcXC10b1xcLXRpbWV6b25lfGFuYWx5emVcXC1zdHJpbmd8YXBwbHl8YXZhaWxhYmxlXFwtKD86ZW52aXJvbm1lbnRcXC12YXJpYWJsZXN8c3lzdGVtXFwtcHJvcGVydGllcyl8YXZnfGJhc2VcXC11cml8Ym9vbGVhbnxjZWlsaW5nfGNvZGVwb2ludHM/XFwtKD86ZXF1YWx8dG9cXC1zdHJpbmcpfGNvbGxhdGlvblxcLWtleXxjb2xsZWN0aW9ufGNvbXBhcmV8Y29uY2F0fGNvbnRhaW5zKD86XFwtdG9rZW4pP3xjb3B5XFwtb2Z8Y291bnR8Y3VycmVudCg/OlxcLSk/KD86ZGF0ZSg/OlRpbWUpP3x0aW1lfGdyb3VwKD86aW5nXFwta2V5KT98b3V0cHV0XFwtdXJpfG1lcmdlXFwtKD86Z3JvdXB8a2V5KSk/ZGF0YXxkYXRlVGltZXxkYXlzP1xcLWZyb21cXC0oPzpkYXRlKD86VGltZSk/fGR1cmF0aW9uKXxkZWVwXFwtZXF1YWx8ZGVmYXVsdFxcLSg/OmNvbGxhdGlvbnxsYW5ndWFnZSl8ZGlzdGluY3RcXC12YWx1ZXN8ZG9jdW1lbnQoPzpcXC11cmkpP3xkb2MoPzpcXC1hdmFpbGFibGUpP3xlbGVtZW50XFwtKD86YXZhaWxhYmxlfHdpdGhcXC1pZCl8ZW1wdHl8ZW5jb2RlXFwtZm9yXFwtdXJpfGVuZHNcXC13aXRofGVudmlyb25tZW50XFwtdmFyaWFibGV8ZXJyb3J8ZXNjYXBlXFwtaHRtbFxcLXVyaXxleGFjdGx5XFwtb25lfGV4aXN0c3xmYWxzZXxmaWx0ZXJ8Zmxvb3J8Zm9sZFxcLSg/OmxlZnR8cmlnaHQpfGZvclxcLWVhY2goPzpcXC1wYWlyKT98Zm9ybWF0XFwtKD86ZGF0ZSg/OlRpbWUpP3x0aW1lfGludGVnZXJ8bnVtYmVyKXxmdW5jdGlvblxcLSg/OmFyaXR5fGF2YWlsYWJsZXxsb29rdXB8bmFtZSl8Z2VuZXJhdGVcXC1pZHxoYXNcXC1jaGlsZHJlbnxoZWFkfGhvdXJzXFwtZnJvbVxcLSg/OmRhdGVUaW1lfGR1cmF0aW9ufHRpbWUpfGlkKD86cmVmKT98aW1wbGljaXRcXC10aW1lem9uZXxpblxcLXNjb3BlXFwtcHJlZml4ZXN8aW5kZXhcXC1vZnxpbm5lcm1vc3R8aW5zZXJ0XFwtYmVmb3JlfGlyaVxcLXRvXFwtdXJpfGpzb25cXC0oPzpkb2N8dG9cXC14bWwpfGtleXxsYW5nfGxhc3R8bG9hZFxcLXhxdWVyeVxcLW1vZHVsZXxsb2NhbFxcLW5hbWUoPzpcXC1mcm9tXFwtUU5hbWUpP3woPzpsb3dlcnx1cHBlcilcXC1jYXNlfG1hdGNoZXN8bWF4fG1pbnV0ZXNcXC1mcm9tXFwtKD86ZGF0ZVRpbWV8ZHVyYXRpb258dGltZSl8bWlufG1vbnRocz9cXC1mcm9tXFwtKD86ZGF0ZSg/OlRpbWUpP3xkdXJhdGlvbil8bmFtZSg/OnNwYWNlXFwtdXJpXFwtPyg/OmZvclxcLXByZWZpeHxmcm9tXFwtUU5hbWUpPyk/fG5pbGxlZHxub2RlXFwtbmFtZXxub3JtYWxpemVcXC0oPzpzcGFjZXx1bmljb2RlKXxub3R8bnVtYmVyfG9uZVxcLW9yXFwtbW9yZXxvdXRlcm1vc3R8cGFyc2VcXC0oPzppZXRmXFwtZGF0ZXxqc29uKXxwYXRofHBvc2l0aW9ufCg/OnByZWZpeFxcLWZyb21cXC0pP1FOYW1lfHJhbmRvbVxcLW51bWJlclxcLWdlbmVyYXRvcnxyZWdleFxcLWdyb3VwfHJlbW92ZXxyZXBsYWNlfHJlc29sdmVcXC0oPzpRTmFtZXx1cmkpfHJldmVyc2V8cm9vdHxyb3VuZCg/OlxcLWhhbGZcXC10b1xcLWV2ZW4pP3xzZWNvbmRzXFwtZnJvbVxcLSg/OmRhdGVUaW1lfGR1cmF0aW9ufHRpbWUpfHNuYXBzaG90fHNvcnR8c3RhcnRzXFwtd2l0aHxzdGF0aWNcXC1iYXNlXFwtdXJpfHN0cmVhbVxcLWF2YWlsYWJsZXxzdHJpbmdcXC0/KD86am9pbnxsZW5ndGh8dG9cXC1jb2RlcG9pbnRzKT98c3Vic2VxdWVuY2V8c3Vic3RyaW5nXFwtPyg/OmFmdGVyfGJlZm9yZSk/fHN1bXxzeXN0ZW1cXC1wcm9wZXJ0eXx0YWlsfHRpbWV6b25lXFwtZnJvbVxcLSg/OmRhdGUoPzpUaW1lKT98dGltZSl8dG9rZW5pemV8dHJhY2V8dHJhbnMoPzpmb3JtfGxhdGUpfHRydWV8dHlwZVxcLWF2YWlsYWJsZXx1bm9yZGVyZWR8dW5wYXJzZWRcXC0oPzplbnRpdHl8dGV4dCk/XFwtPyg/OnB1YmxpY1xcLWlkfHVyaXxhdmFpbGFibGV8bGluZXMpP3x1cmlcXC1jb2xsZWN0aW9ufHhtbFxcLXRvXFwtanNvbnx5ZWFycz9cXC1mcm9tXFwtKD86ZGF0ZSg/OlRpbWUpP3xkdXJhdGlvbil8emVyb1xcLW9yXFwtb25lKVxcYi8sXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGJsb2NhbFxcOi8sXG4gICAgICBlbmQ6IC9cXCgvLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgIH0sIHtcbiAgICAgIGJlZ2luOiAvXFxiemlwXFw6LyxcbiAgICAgIGVuZDogLyg/OnppcFxcLWZpbGV8KD86eG1sfGh0bWx8dGV4dHxiaW5hcnkpXFwtZW50cnl8ICg/OnVwZGF0ZVxcLSk/ZW50cmllcylcXGIvXG4gICAgfSwge1xuICAgICAgYmVnaW46IC9cXGIoPzp1dGlsfGRifGZ1bmN0eHxhcHB8eGRtcHx4bWxkYilcXDovLFxuICAgICAgZW5kOiAvXFwoLyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9XG4gIF1cbiAgfTtcblxuICB2YXIgVElUTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIGJlZ2luOiAvXFxieHF1ZXJ5IHZlcnNpb24gXCJbMTNdXFwuWzAxXVwiXFxzPyg/OmVuY29kaW5nIFwiLitcIik/LyxcbiAgICBlbmQ6IC87L1xuICB9O1xuXG4gIHZhciBWQVIgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvW1xcJF1bXFx3LTpdKy9cbiAgfTtcblxuICB2YXIgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICcoXFxcXGIwWzAtN19dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoXFxcXGJbMS05XVswLTlfXSooXFxcXC5bMC05X10rKT8pfFswX11cXFxcYicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgdmFyIFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW3tcbiAgICAgICAgICBiZWdpbjogL1wiXCIvLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICAgIGJlZ2luOiAvJycvLFxuICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICB9XVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICB2YXIgQU5OT1RBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogLyVbXFx3LTpdKy9cbiAgfTtcblxuICB2YXIgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb21tZW50JyxcbiAgICBiZWdpbjogJ1xcXFwoOicsXG4gICAgZW5kOiAnOlxcXFwpJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGNvbnRhaW5zOiBbe1xuICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgIGJlZ2luOiAnQFxcXFx3KydcbiAgICB9XVxuICB9O1xuXG4gIC8vIHNlZSBodHRwczovL3d3dy53My5vcmcvVFIveHF1ZXJ5LyNpZC1jb21wdXRlZENvbnN0cnVjdG9yc1xuICAvLyBtb2NoYTogY29tcHV0ZWRfaW5idWlsdFxuICAvLyBzZWUgaHR0cHM6Ly93d3cucmVnZXhwYWwuY29tLz9mYW09OTk3NDlcbiAgdmFyIENPTVBVVEVEID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdlbGVtZW50IGF0dHJpYnV0ZSBjb21tZW50IGRvY3VtZW50IHByb2Nlc3NpbmctaW5zdHJ1Y3Rpb24nLFxuICAgIGVuZDogJ3snLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcblxuICAvLyBtb2NoYTogZGlyZWN0X21ldGhvZFxuICAgIHZhciBESVJFQ1QgPSB7XG4gICAgICBiZWdpbjogLzwoW1xcd1xcLl86XFwtXSspKChcXHMqLiopPSgnfFwiKS4qKCd8XCIpKT8+LyxcbiAgICAgIGVuZDogLyhcXC9bXFx3XFwuXzpcXC1dKz4pLyxcbiAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgIGNvbnRhaW5zOiBbe1xuICAgICAgICBiZWdpbjogJ3snLFxuICAgICAgICBlbmQ6ICd9JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4cXVlcnknXG4gICAgICB9LCAnc2VsZiddXG4gICAgfTtcblxuXG4gIHZhciBDT05UQUlOUyA9IFtcbiAgICBWQVIsXG4gICAgQlVJTFRfSU4sXG4gICAgU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBDT01NRU5ULFxuICAgIEFOTk9UQVRJT04sXG4gICAgVElUTEUsXG4gICAgQ09NUFVURUQsXG4gICAgRElSRUNUXG4gIF07XG5cblxuXG4gICAgdmFyIE1FVEhPRCA9IHtcbiAgICAgIGJlZ2luOiAneycsXG4gICAgICBlbmQ6ICd9JyxcbiAgICAgIGNvbnRhaW5zOiBDT05UQUlOU1xuICAgIH07XG5cblxuXG4gIHJldHVybiB7XG4gICAgYWxpYXNlczogWyd4cGF0aCcsICd4cSddLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IGZhbHNlLFxuICAgIGxleGVtZXM6IC9bYS16QS1aXFwkXVthLXpBLVowLTlfOlxcLV0qLyxcbiAgICBpbGxlZ2FsOiAvKHByb2MpfChhYnN0cmFjdCl8KGV4dGVuZHMpfCh1bnRpbCl8KCMpLyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICB0eXBlOiBUWVBFLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFxuICAgIH0sXG4gICAgY29udGFpbnM6IENPTlRBSU5TXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaGxqcykge1xuICB2YXIgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFtobGpzLkJBQ0tTTEFTSF9FU0NBUEVdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYlwiJywgZW5kOiAnXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ2JcXCcnLCBlbmQ6ICdcXCcnXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge2lsbGVnYWw6IG51bGx9KSxcbiAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7aWxsZWdhbDogbnVsbH0pXG4gICAgXVxuICB9O1xuICB2YXIgTlVNQkVSID0ge3ZhcmlhbnRzOiBbaGxqcy5CSU5BUllfTlVNQkVSX01PREUsIGhsanMuQ19OVU1CRVJfTU9ERV19O1xuICByZXR1cm4ge1xuICAgIGFsaWFzZXM6IFsnemVwJ10sXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczpcbiAgICAgICdhbmQgaW5jbHVkZV9vbmNlIGxpc3QgYWJzdHJhY3QgZ2xvYmFsIHByaXZhdGUgZWNobyBpbnRlcmZhY2UgYXMgc3RhdGljIGVuZHN3aXRjaCAnICtcbiAgICAgICdhcnJheSBudWxsIGlmIGVuZHdoaWxlIG9yIGNvbnN0IGZvciBlbmRmb3JlYWNoIHNlbGYgdmFyIGxldCB3aGlsZSBpc3NldCBwdWJsaWMgJyArXG4gICAgICAncHJvdGVjdGVkIGV4aXQgZm9yZWFjaCB0aHJvdyBlbHNlaWYgaW5jbHVkZSBfX0ZJTEVfXyBlbXB0eSByZXF1aXJlX29uY2UgZG8geG9yICcgK1xuICAgICAgJ3JldHVybiBwYXJlbnQgY2xvbmUgdXNlIF9fQ0xBU1NfXyBfX0xJTkVfXyBlbHNlIGJyZWFrIHByaW50IGV2YWwgbmV3ICcgK1xuICAgICAgJ2NhdGNoIF9fTUVUSE9EX18gY2FzZSBleGNlcHRpb24gZGVmYXVsdCBkaWUgcmVxdWlyZSBfX0ZVTkNUSU9OX18gJyArXG4gICAgICAnZW5kZGVjbGFyZSBmaW5hbCB0cnkgc3dpdGNoIGNvbnRpbnVlIGVuZGZvciBlbmRpZiBkZWNsYXJlIHVuc2V0IHRydWUgZmFsc2UgJyArXG4gICAgICAndHJhaXQgZ290byBpbnN0YW5jZW9mIGluc3RlYWRvZiBfX0RJUl9fIF9fTkFNRVNQQUNFX18gJyArXG4gICAgICAneWllbGQgZmluYWxseSBpbnQgdWludCBsb25nIHVsb25nIGNoYXIgdWNoYXIgZG91YmxlIGZsb2F0IGJvb2wgYm9vbGVhbiBzdHJpbmcnICtcbiAgICAgICdsaWtlbHkgdW5saWtlbHknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnL1xcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnX19oYWx0X2NvbXBpbGVyLis/OycsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB7XG4gICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAga2V5d29yZHM6ICdfX2hhbHRfY29tcGlsZXInLFxuICAgICAgICAgIGxleGVtZXM6IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJzw8PFtcXCdcIl0/XFxcXHcrW1xcJ1wiXT8kJywgZW5kOiAnXlxcXFx3KzsnLFxuICAgICAgICBjb250YWluczogW2hsanMuQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHN3YWxsb3cgY29tcG9zZWQgaWRlbnRpZmllcnMgdG8gYXZvaWQgcGFyc2luZyB0aGVtIGFzIGtleXdvcmRzXG4gICAgICAgIGJlZ2luOiAvKDo6fC0+KStbYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVowLTlfXFx4N2YtXFx4ZmZdKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJywgZW5kOiAvWzt7XS8sIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcJHxcXFxcW3wlJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcKCcsIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsIGVuZDogJ3snLCBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAvWzpcXChcXCRcIl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJ30sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvW1xcLiddLyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLCBlbmQ6ICc7JyxcbiAgICAgICAgY29udGFpbnM6IFtobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPT4nIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufTsiLCIndXNlIHN0cmljdCc7IC8vIEEgdmFsaWQgb3V0cHV0IHdoaWNoIG1lYW5zIG5vdGhpbmcgaGFzIGJlZW4gcGFyc2VkLlxuLy8gVXNlZCBhcyBlcnJvciByZXR1cm4gLyBpbnZhbGlkIG91dHB1dFxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgbm90aGluZ0hhcHBlbmQgPSB7XG4gIHByb3A6IHt9LFxuICBlYXRlbjogJydcbn07XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgZGVmYXVsdFZhbHVlOiBmdW5jdGlvbiBkZWZhdWx0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSAvLyBJdHMgYSBmdW5jdGlvblxuXG59O1xuXG5mdW5jdGlvbiBwYXJzZSh2YWx1ZSwgaW5kZXhOZXh0LCB1c2VyQ29uZmlnKSB7XG4gIC8vIE1haW4gZnVuY3Rpb25cbiAgdmFyIGxldHNFYXQgPSAnJztcbiAgdmFyIHN0b3BPbkJyYWNlID0gZmFsc2U7XG4gIHZhciBlcnJvckRldGVjdGVkID0gZmFsc2U7XG5cbiAgdmFyIGNvbmZpZyA9IF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRDb25maWcsIHt9LCB1c2VyQ29uZmlnKTsgLy8gTWFrZSBkZWZhdWx0VmFsdWUgYSBmdW5jdGlvbiBpZiBpdCBpc24ndFxuXG5cbiAgaWYgKHR5cGVvZiBjb25maWcuZGVmYXVsdFZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IGNvbmZpZy5kZWZhdWx0VmFsdWU7XG5cbiAgICBjb25maWcuZGVmYXVsdFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIHByb3AgPSB7fTtcbiAgLyogVGhleSBhcmUgYXQgbGVhc3Qgb25lIGxhYmVsIGFuZCBhdCBiZXN0IHR3byAqL1xuXG4gIC8qIGVrcXNkZiA8LSBvbmUgbGFiZWxcbiAgICogcXNkZnFzZmQ9cXNkZnFzZGYgPC0gdHdvICovXG5cbiAgdmFyIGxhYmVsRmlyc3QgPSAnJztcbiAgdmFyIGxhYmVsU2Vjb25kO1xuXG4gIGlmIChpbmRleE5leHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGluZGV4TmV4dCA9IDA7XG4gIH1cbiAgLyogMyB0eXBlcyA6XG4gICAqIC5hemN2IDwtIGNsYXNzXG4gICAqICNwb2kgPC0gaWRcbiAgICogZGZnaD16ZXJ0IDwtIGtleVxuICAgKiBqa2ogPC0gdGhpcyBpcyBhbHNvIGEga2V5IGJ1dCB3aXRoIGEgdXNlciBkZWZpbmVkIHZhbHVlIChkZWZhdWx0IGlzIHVuZGVmaW5lZClcbiAgICogamtqPSA8LSB0aGlzIGlzIGFsc28gYSBrZXkgYnV0IHdpdGggYSBlbXB0eSB2YWx1ZVxuICAgKi9cblxuXG4gIHZhciB0eXBlO1xuICB2YXIgZm9yYmlkZW5DaGFyYWN0ZXJzID0gJ1xcblxccnt9JzsgLy8gQSBmdW5jdGlvbiB0aGF0IGRldGVjdCBpZiBpdCdzIHRpbWUgdG8gZW5kIHRoZSBwYXJzaW5nXG5cbiAgdmFyIHNob3VsZFN0b3AgPSBmdW5jdGlvbiBzaG91bGRTdG9wKCkge1xuICAgIGlmIChpbmRleE5leHQgPj0gdmFsdWUubGVuZ3RoIHx8IGZvcmJpZGVuQ2hhcmFjdGVycy5pbmRleE9mKHZhbHVlW2luZGV4TmV4dF0pID4gLTEpIHtcbiAgICAgIGlmIChzdG9wT25CcmFjZSAmJiB2YWx1ZVtpbmRleE5leHRdICE9PSAnfScpIHtcbiAgICAgICAgZXJyb3JEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVtpbmRleE5leHRdID09PSAnfScgJiYgc3RvcE9uQnJhY2U7XG4gIH07XG5cbiAgdmFyIGVhdGVuID0gJyc7IC8vIENvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBwYXJzZSBzYW1lIGtpbmRzIG9mIGNoYXJhY3RlcnNcbiAgLy8gVXNlZCB0byBwYXJzZSBzcGFjZXMgb3IgaWRlbnRpZmllcnNcblxuICB2YXIgZWF0ID0gZnVuY3Rpb24gZWF0KGNoYXJzKSB7XG4gICAgZWF0ZW4gPSAnJztcblxuICAgIHdoaWxlIChpbmRleE5leHQgPCB2YWx1ZS5sZW5ndGggJiYgZm9yYmlkZW5DaGFyYWN0ZXJzLmluZGV4T2YodmFsdWUuY2hhckF0KGluZGV4TmV4dCkpIDwgMCAmJiBjaGFycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA+PSAwKSB7XG4gICAgICBsZXRzRWF0ICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgZWF0ZW4gKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBpbmRleE5leHQrKztcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcCgpO1xuICB9O1xuXG4gIHZhciBlYXRVbnRpbCA9IGZ1bmN0aW9uIGVhdFVudGlsKGNoYXJzKSB7XG4gICAgZWF0ZW4gPSAnJztcblxuICAgIHdoaWxlIChpbmRleE5leHQgPCB2YWx1ZS5sZW5ndGggJiYgZm9yYmlkZW5DaGFyYWN0ZXJzLmluZGV4T2YodmFsdWUuY2hhckF0KGluZGV4TmV4dCkpIDwgMCAmJiBjaGFycy5pbmRleE9mKHZhbHVlLmNoYXJBdChpbmRleE5leHQpKSA8IDApIHtcbiAgICAgIGxldHNFYXQgKz0gdmFsdWUuY2hhckF0KGluZGV4TmV4dCk7XG4gICAgICBlYXRlbiArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGluZGV4TmV4dCsrO1xuICAgIH0gLy8gVWdseSBidXQga2VlcCB0aGUgbWFpbiBsb29wIHJlYWRhYmxlXG4gICAgLy8gU2V0IHRoZSBsYWJlbCBpdCBzaG91bGQgc2V0XG5cblxuICAgIGlmIChsYWJlbEZpcnN0KSB7XG4gICAgICBsYWJlbFNlY29uZCA9IGVhdGVuO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYWJlbEZpcnN0ID0gZWF0ZW47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFN0b3AoKTtcbiAgfTsgLy8gSW4gcXVvdGUsIGV2ZXJ5IGNoYXJhY3RlciBpcyB2YWxpZCBleGNlcHQgdGhlIHVuZXNjYXBlZCBxdW90ZXMgYW5kIENSIG9yIExGXG4gIC8vIFNhbWUgZnVuY3Rpb24gZm9yIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlXG5cblxuICB2YXIgZWF0SW5RdW90ZSA9IGZ1bmN0aW9uIGVhdEluUXVvdGUocXVvdGUpIHtcbiAgICBlYXRlbiA9ICcnOyAvLyBGaXJzdCBjaGVjayBzbyB2YWx1ZVtpbmRleE5leHQtMV0gd2lsbCBhbHdheXMgYmUgdmFsaWRcblxuICAgIGlmICh2YWx1ZVtpbmRleE5leHRdID09PSBxdW90ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdoaWxlIChpbmRleE5leHQgPCB2YWx1ZS5sZW5ndGggJiYgIShxdW90ZSA9PT0gdmFsdWVbaW5kZXhOZXh0XSAmJiB2YWx1ZVtpbmRleE5leHQgLSAxXSAhPT0gJ1xcXFwnKSAmJiB2YWx1ZVtpbmRleE5leHRdICE9PSAnXFxuJyAmJiB2YWx1ZVtpbmRleE5leHRdICE9PSAnXFxyJykge1xuICAgICAgbGV0c0VhdCArPSB2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KTtcbiAgICAgIGVhdGVuICs9IHZhbHVlLmNoYXJBdChpbmRleE5leHQpO1xuICAgICAgaW5kZXhOZXh0Kys7XG4gICAgfSAvLyBJZiB3ZSBlbmNvdW50ZXIgYW4gRU9MLCB0aGVyZSBpcyBhbiBlcnJvclxuICAgIC8vIFdlIGFyZSB3YWl0aW5nIGZvciBhIHF1b3RlXG5cblxuICAgIGlmICh2YWx1ZVtpbmRleE5leHRdID09PSAnXFxuJyB8fCB2YWx1ZVtpbmRleE5leHRdID09PSAnXFxyJyB8fCBpbmRleE5leHQgPj0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICBlcnJvckRldGVjdGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gVWdseSBidXQga2VlcCB0aGUgbWFpbiBsb29wIHJlYWRhYmxlXG5cblxuICAgIGlmIChsYWJlbEZpcnN0KSB7XG4gICAgICBsYWJlbFNlY29uZCA9IGVhdGVuLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFiZWxGaXJzdCA9IGVhdGVuLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcCgpO1xuICB9OyAvLyBJdCdzIHJlYWxseSBjb21tb24gdG8gZWF0IG9ubHkgb25lIGNoYXJhY3RlciBzbyBsZXQncyBtYWtlIGl0IGEgZnVuY3Rpb25cblxuXG4gIHZhciBlYXRPbmUgPSBmdW5jdGlvbiBlYXRPbmUoYywgc2tpcFN0b3BDaGVjaykge1xuICAgIC8vIE1pYW0gIVxuICAgIGxldHNFYXQgKz0gYztcbiAgICBpbmRleE5leHQrKztcbiAgICByZXR1cm4gc2tpcFN0b3BDaGVjayA/IGZhbHNlIDogc2hvdWxkU3RvcCgpO1xuICB9OyAvLyBDb21tb24gcGFyc2luZyBvZiBxdW90ZXNcblxuXG4gIHZhciBlYXRRdW90ZSA9IGZ1bmN0aW9uIGVhdFF1b3RlKHEpIHtcbiAgICBlYXRPbmUocSwgdHJ1ZSk7XG4gICAgZWF0SW5RdW90ZShxLCB0cnVlKTtcblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSAhPT0gcSkge1xuICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgIH1cblxuICAgIGlmIChlYXRPbmUocSkpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGlkU2V0QnlLZXkgPSBmYWxzZTtcblxuICB2YXIgYWRkQXR0cmlidXRlID0gZnVuY3Rpb24gYWRkQXR0cmlidXRlKCkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaWQnOlxuICAgICAgICAvLyBJRFxuICAgICAgICBpZiAoaWRTZXRCeUtleSkge1xuICAgICAgICAgIHByb3AuaWQgPSBsYWJlbEZpcnN0O1xuICAgICAgICAgIGlkU2V0QnlLZXkgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wLmlkID0gcHJvcC5pZCB8fCBsYWJlbEZpcnN0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NsYXNzJzpcbiAgICAgICAgaWYgKCFwcm9wW1wiY2xhc3NcIl0pIHtcbiAgICAgICAgICBwcm9wW1wiY2xhc3NcIl0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wW1wiY2xhc3NcIl0uaW5kZXhPZihsYWJlbEZpcnN0KSA8IDApIHtcbiAgICAgICAgICBwcm9wW1wiY2xhc3NcIl0ucHVzaChsYWJlbEZpcnN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdrZXknOlxuICAgICAgICBpZiAoIWxhYmVsRmlyc3QpIHtcbiAgICAgICAgICByZXR1cm4gbm90aGluZ0hhcHBlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIShsYWJlbEZpcnN0IGluIHByb3ApKSB7XG4gICAgICAgICAgaWYgKGxhYmVsU2Vjb25kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIEhlcmUsIHdlIGhhdmUgYW4gYXR0cmlidXRlIHdpdGhvdXQgdmFsdWVcbiAgICAgICAgICAgIC8vIHNvIGl0J3MgdXNlciBkZWZpbmVkXG4gICAgICAgICAgICBwcm9wW2xhYmVsRmlyc3RdID0gY29uZmlnLmRlZmF1bHRWYWx1ZShsYWJlbEZpcnN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvcFtsYWJlbEZpcnN0XSA9IGxhYmVsRmlyc3QgPT09ICdjbGFzcycgPyBbbGFiZWxTZWNvbmRdIDogbGFiZWxTZWNvbmQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhYmVsRmlyc3QgPT09ICdpZCcpIHtcbiAgICAgICAgICAgIGlkU2V0QnlLZXkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChsYWJlbEZpcnN0ID09PSAnY2xhc3MnICYmIEJvb2xlYW4obGFiZWxTZWNvbmQpKSB7XG4gICAgICAgICAgcHJvcFtcImNsYXNzXCJdLnB1c2gobGFiZWxTZWNvbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuXG4gICAgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICBsYWJlbEZpcnN0ID0gJyc7XG4gICAgbGFiZWxTZWNvbmQgPSB1bmRlZmluZWQ7XG4gIH07XG4gIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKiBTdGFydCBwYXJzaW5nICoqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuICAvLyBMZXQncyBjaGVjayBmb3IgbGVhZGluZyBzcGFjZXMgZmlyc3RcblxuXG4gIGVhdCgnIFxcdFxcdicpO1xuXG4gIGlmICh2YWx1ZVtpbmRleE5leHRdID09PSAneycpIHtcbiAgICBlYXRPbmUoJ3snKTtcbiAgICBzdG9wT25CcmFjZSA9IHRydWU7XG4gIH1cblxuICB3aGlsZSAoIXNob3VsZFN0b3AoKSkge1xuICAgIC8vIE1haW4gbG9vcCB3aGljaCBleHRyYWN0IGF0dHJpYnV0ZXNcbiAgICBpZiAoZWF0KCcgXFx0XFx2JykpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJy4nKSB7XG4gICAgICAvLyBDbGFzc2VzXG4gICAgICB0eXBlID0gJ2NsYXNzJztcblxuICAgICAgaWYgKGVhdE9uZSgnLicpKSB7XG4gICAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnIycpIHtcbiAgICAgIC8vIElEXG4gICAgICB0eXBlID0gJ2lkJztcblxuICAgICAgaWYgKGVhdE9uZSgnIycpKSB7XG4gICAgICAgIGVycm9yRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gS2V5XG4gICAgICB0eXBlID0gJ2tleSc7XG4gICAgfSAvLyBFeHRyYWN0IG5hbWVcblxuXG4gICAgaWYgKGVhdFVudGlsKCc9XFx0XFxiXFx2IMKgJykgfHwgIWxhYmVsRmlyc3QpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXhOZXh0KSA9PT0gJz0nICYmIHR5cGUgPT09ICdrZXknKSB7XG4gICAgICAvLyBTZXQgbGFiZWxTZWNvbmRcbiAgICAgIGlmIChlYXRPbmUoJz0nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleE5leHQpID09PSAnXCInKSB7XG4gICAgICAgIHZhciByZXQgPSBlYXRRdW90ZSgnXCInKTtcblxuICAgICAgICBpZiAocmV0ID09PSAtMSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHJldCA9PT0gbm90aGluZ0hhcHBlbmQpIHtcbiAgICAgICAgICByZXR1cm4gbm90aGluZ0hhcHBlbmQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY2hhckF0KGluZGV4TmV4dCkgPT09ICdcXCcnKSB7XG4gICAgICAgIHZhciBfcmV0ID0gZWF0UXVvdGUoJ1xcJycpO1xuXG4gICAgICAgIGlmIChfcmV0ID09PSAtMSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKF9yZXQgPT09IG5vdGhpbmdIYXBwZW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG5vdGhpbmdIYXBwZW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVhdFVudGlsKCcgXFx0XFxuXFxyXFx2PX0nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IC8vIEFkZCB0aGUgcGFyc2VkIGF0dHJpYnV0ZSB0byB0aGUgb3V0cHV0IHByb3Agd2l0aCB0aGUgYWQgaG9jIHR5cGVcblxuXG4gICAgYWRkQXR0cmlidXRlKCk7XG4gIH1cblxuICBhZGRBdHRyaWJ1dGUoKTtcblxuICBpZiAoc3RvcE9uQnJhY2UpIHtcbiAgICBpZiAoaW5kZXhOZXh0IDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2luZGV4TmV4dF0gPT09ICd9Jykge1xuICAgICAgc3RvcE9uQnJhY2UgPSBmYWxzZTtcbiAgICAgIGVhdE9uZSgnfScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm90aGluZ0hhcHBlbmQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9yRGV0ZWN0ZWQgPyBub3RoaW5nSGFwcGVuZCA6IHtcbiAgICBwcm9wOiBwcm9wLFxuICAgIGVhdGVuOiBsZXRzRWF0XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcGFyc2VBdHRyID0gcmVxdWlyZSgnbWQtYXR0ci1wYXJzZXInKTtcblxudmFyIFNUQVJUID0gJ1tfXyc7XG52YXIgRU5EID0gJ19fXSc7XG4vKiBGdW5jdGlvbiB1c2VkIHRvIGxvY2F0ZSB0aGUgc3RhcnQgb2YgYSBsaW5lIGlucHV0IGZpbGVkXG4gKiBVc2VkIGJ5IHJlbWFya1xuICovXG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKFNUQVJULCBmcm9tSW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG4vKiBGdW50aW9uIHdoaWNoIGlzIGV4cG9ydGVkICovXG5cblxuZnVuY3Rpb24gcGx1Z2luKCkge1xuICAvKiBWZXJpZmllIGlmIGl0J3MgdGhlIHN5bnRheCBvZiBhIGxpbmUgaW5wdXQgYW5kIHJldHVybiBhIGxpbmUgaW5wdXQgbm9kZSAqL1xuICBmdW5jdGlvbiBpbmxpbmVUb2tlbml6ZXIoZWF0LCB2YWx1ZSkge1xuICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChTVEFSVCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc3VidmFsdWUgPSAnJztcbiAgICB2YXIgaW5kZXggPSBTVEFSVC5sZW5ndGg7XG4gICAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAvKiBUcnkgdG8gbG9jYWxlIHRoZSBlbmQgb2YgdGhlIGxpbmUgaW5wdXQgKi9cblxuICAgIHdoaWxlICghdmFsdWUuc3RhcnRzV2l0aChFTkQsIGluZGV4KSAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgc3VidmFsdWUgKz0gdmFsdWUuY2hhckF0KGluZGV4KTtcblxuICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09ICdcXG4nKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHZhciBsZXRzRWF0ID0gJyc7XG4gICAgdmFyIHByb3AgPSB7XG4gICAgICAvKiBrZXk6IHVuZGVmaW5lZCB7fSAgY2xhc3M6IHVuZGVmaW5lZCBbXSBpZDogdW5kZWZpbmVkICovXG4gICAgfTtcbiAgICAvKiBQYXJzZSB0aGUgYXR0cmlidXRlcyBpZiBhbnkgd2l0aCBtZC1hdHRyLXBhcnNlciAqL1xuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCArIEVORC5sZW5ndGgpID09PSAneycpIHtcbiAgICAgIHZhciByZXMgPSBwYXJzZUF0dHIodmFsdWUsIGluZGV4ICsgRU5ELmxlbmd0aCk7XG4gICAgICBsZXRzRWF0ID0gcmVzLmVhdGVuO1xuICAgICAgcHJvcCA9IHJlcy5wcm9wO1xuICAgIH1cbiAgICAvKiBBbGxvdyBzb21lIG90aGVyIGtpbmQgb2YgaW5wdXQgKi9cblxuXG4gICAgaWYgKHByb3AudHlwZSAhPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgcHJvcC50eXBlID0gJ3RleHQnO1xuICAgIH1cbiAgICAvKiBVbmRlcnNjb3JlcyBpbiB0aGUgcGxhY2Vob2xkZXIgYmVjb21lIHdoaXRlc3BhY2VzICovXG5cblxuICAgIHByb3AucGxhY2Vob2xkZXIgPSBzdWJ2YWx1ZS5yZXBsYWNlKC9eXyovZywgJycpLnJlcGxhY2UoL18qJC9nLCAnJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZWF0KFNUQVJUICsgc3VidmFsdWUgKyBFTkQgKyBsZXRzRWF0KSh7XG4gICAgICAgIHR5cGU6ICdsaW5lLWlucHV0JyxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdpbnB1dCcsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHByb3BcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbmxpbmVUb2tlbml6ZXIubG9jYXRvciA9IGxvY2F0b3I7XG4gIHZhciBQYXJzZXIgPSB0aGlzLlBhcnNlcjsgLy8gSW5qZWN0IGlubGluZVRva2VuaXplclxuXG4gIHZhciBpbmxpbmVUb2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5pbmxpbmVUb2tlbml6ZXJzO1xuICB2YXIgaW5saW5lTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lTWV0aG9kcztcbiAgaW5saW5lVG9rZW5pemVycy5pbnB1dCA9IGlubGluZVRva2VuaXplcjtcbiAgaW5saW5lTWV0aG9kcy5zcGxpY2UoaW5saW5lTWV0aG9kcy5pbmRleE9mKCd1cmwnKSwgMCwgJ2lucHV0Jyk7XG4gIHZhciBDb21waWxlciA9IHRoaXMuQ29tcGlsZXI7IC8vIFN0cmluZ2lmeVxuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcblxuICAgIHZpc2l0b3JzLmxpbmVpbnB1dCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gXCJbX19cIi5jb25jYXQodGhpcy5hbGwobm9kZSkuam9pbignJyksIFwiX19dXCIpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwbHVnaW47IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBTVEFSVCA9ICdbJztcbmNvbnN0IEVORF9SR1ggPSAvKFxcfCAqW3ZWXSAqXSkoe1teXFxuXSp9KT8vO1xuXG5jb25zdCBwYXJzZUF0dHIgPSByZXF1aXJlKCdtZC1hdHRyLXBhcnNlcicpO1xuLyogVGhlIGZ1bmN0aW9uIHRoYXQgbG9jYXRlIGEgdGV4dCBpbnB1dFxuICogVXNlZCBieSByZW1hcmtcbiAqL1xuXG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICBjb25zdCBpbmRleCA9IHZhbHVlLmluZGV4T2YoU1RBUlQsIGZyb21JbmRleCk7XG4gIHJldHVybiBpbmRleDtcbn1cbi8qIFRoZSBtYWluIHBsdWdpbiBmdW5jdGlvbiAqL1xuXG5cbmZ1bmN0aW9uIHBsdWdpbigpIHtcbiAgbGV0IEVORCA9ICd8dl0nOyAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBpc24ndCBpbXBvcnRhbnRcbiAgLy8gRnVuY3Rpb24gdGhhdCBjaGVjayB0aGUgc3ludGF4IGFuZCByZXR1cm4gYSB0ZXh0IGlucHV0IG5vZGVcblxuICBmdW5jdGlvbiBpbmxpbmVUb2tlbml6ZXIoZWF0LCB2YWx1ZSkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmdmbSB8fCAhdmFsdWUuc3RhcnRzV2l0aChTVEFSVCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc3VidmFsdWUgPSAnJztcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlbmd0aFxuICAgIH0gPSB2YWx1ZTtcbiAgICAvKiBOb3Qgc3VyZSBhYm91dCB0aGF0IC4uLiAqL1xuXG4gICAgY29uc3Qgbm93ID0gZWF0Lm5vdygpO1xuICAgIG5vdy5jb2x1bW4gKz0gMjtcbiAgICBub3cub2Zmc2V0ICs9IDI7IC8vIEV4dHJhY3QgdGhlIG9wdGlvbnNcblxuICAgIGxldCByZXQgPSBudWxsO1xuXG4gICAgaWYgKChyZXQgPSB2YWx1ZS5zdWJzdHIoMSkubWF0Y2goRU5EX1JHWCkpICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBzdWJ2YWx1ZSArPSB2YWx1ZS5zdWJzdHIoMSwgcmV0LmluZGV4KTtcbiAgICAgIEVORCA9IHJldFsxXTtcbiAgICAgIGluZGV4ICs9IHJldC5pbmRleCArIEVORC5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEV4dHJhY3QgdGhlIGF0dHJpYnV0ZXNcblxuXG4gICAgbGV0IGxldHNFYXQgPSAnJztcbiAgICBsZXQgcHJvcCA9IHtcbiAgICAgIC8qIGNsYXNzOiB1bmRlZmluZWQgIFtdICwgaWQ6IHVuZGVmaW5lZCAqL1xuICAgIH07XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSA9PT0gJ3snKSB7XG4gICAgICBjb25zdCByZXMgPSBwYXJzZUF0dHIodmFsdWUsIGluZGV4KTtcbiAgICAgIGxldHNFYXQgPSByZXMuZWF0ZW47XG4gICAgICBpbmRleCArPSBsZXRzRWF0Lmxlbmd0aDtcbiAgICAgIHByb3AgPSByZXMucHJvcDtcbiAgICB9IC8vIFJldHVybiB0aGUgc2VsZWN0IG5vZGVcblxuXG4gICAgaWYgKGluZGV4IDw9IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGVhdChTVEFSVCArIHN1YnZhbHVlICsgRU5EICsgbGV0c0VhdCkoe1xuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaE5hbWU6ICdzZWxlY3QnLFxuICAgICAgICAgIGhQcm9wZXJ0aWVzOiBwcm9wLFxuICAgICAgICAgIGhDaGlsZHJlbjogc3VidmFsdWUuc3BsaXQoJ3wnKS5maWx0ZXIoeCA9PiB4KS5tYXAodW50cmltID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSB1bnRyaW0udHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICB0YWdOYW1lOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXh0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGV4dFxuICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlubGluZVRva2VuaXplci5sb2NhdG9yID0gbG9jYXRvcjtcbiAgY29uc3Qge1xuICAgIFBhcnNlclxuICB9ID0gdGhpczsgLy8gSW5qZWN0IGlubGluZVRva2VuaXplclxuXG4gIGNvbnN0IHtcbiAgICBpbmxpbmVUb2tlbml6ZXJzXG4gIH0gPSBQYXJzZXIucHJvdG90eXBlO1xuICBjb25zdCB7XG4gICAgaW5saW5lTWV0aG9kc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgaW5saW5lVG9rZW5pemVycy5zZWxlY3QgPSBpbmxpbmVUb2tlbml6ZXI7XG4gIGlubGluZU1ldGhvZHMuc3BsaWNlKGlubGluZU1ldGhvZHMuaW5kZXhPZigndXJsJyksIDAsICdzZWxlY3QnKTtcbiAgY29uc3Qge1xuICAgIENvbXBpbGVyXG4gIH0gPSB0aGlzOyAvLyBTdHJpbmdpZnlcblxuICBpZiAoQ29tcGlsZXIpIHtcbiAgICBjb25zdCB7XG4gICAgICB2aXNpdG9yc1xuICAgIH0gPSBDb21waWxlci5wcm90b3R5cGU7XG5cbiAgICB2aXNpdG9ycy5saW5lc2VsZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBTVEFSVCArIHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpICsgRU5EO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwbHVnaW47IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBTVEFSVCA9IC9eKFxcW18rXFxuKS9nO1xuY29uc3QgRU5EID0gLyhfK10pL2c7XG5cbmNvbnN0IHBhcnNlQXR0ciA9IHJlcXVpcmUoJ21kLWF0dHItcGFyc2VyJyk7XG5cbmZ1bmN0aW9uIGxvY2F0b3IodmFsdWUsIGZyb21JbmRleCkge1xuICBjb25zdCBpbmRleCA9IHZhbHVlLmluZGV4T2YoU1RBUlQsIGZyb21JbmRleCk7XG4gIHJldHVybiBpbmRleDtcbn1cblxuZnVuY3Rpb24gcGx1Z2luKCkge1xuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtIHx8IHZhbHVlLnNlYXJjaChTVEFSVCkgIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcHJvcCA9IHtcbiAgICAgIGNsYXNzOiB1bmRlZmluZWRcbiAgICAgIC8qIFtdICovXG4gICAgICAsXG4gICAgICBpZDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICBsZXQgZWF0ZW4gPSAnJztcblxuICAgIGlmICh2YWx1ZS5zZWFyY2goRU5EKSA+IDApIHtcbiAgICAgIGlmICh2YWx1ZS5zZWFyY2goRU5EKSArIHZhbHVlLm1hdGNoKEVORClbMF0ubGVuZ3RoIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlLmNoYXJBdCh2YWx1ZS5zZWFyY2goRU5EKSArIHZhbHVlLm1hdGNoKEVORClbMF0ubGVuZ3RoKSA9PT0gJ3snKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHBhcnNlQXR0cih2YWx1ZSwgdmFsdWUuc2VhcmNoKEVORCkgKyB2YWx1ZS5tYXRjaChFTkQpWzBdLmxlbmd0aCk7XG4gICAgICAgIGVhdGVuID0gcmVzLmVhdGVuO1xuICAgICAgICBwcm9wID0gcmVzLnByb3A7XG4gICAgICB9XG5cbiAgICAgIGxldCBlbmQgPSB2YWx1ZS5zZWFyY2goRU5EKTtcblxuICAgICAgaWYgKGVuZCAhPT0gdmFsdWUubWF0Y2goU1RBUlQpWzBdLmxlbmd0aCkge1xuICAgICAgICBlbmQgLT0gMTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdCA9IGVhdCh2YWx1ZS5zbGljZSgwLCB2YWx1ZS5zZWFyY2goRU5EKSArIHZhbHVlLm1hdGNoKEVORClbMF0ubGVuZ3RoKSArIGVhdGVuKSh7XG4gICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoTmFtZTogJ1RFWFRBUkVBJyxcbiAgICAgICAgICBoUHJvcGVydGllczogcHJvcCxcbiAgICAgICAgICBoQ2hpbGRyZW46IFt7XG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUuc2xpY2UodmFsdWUubWF0Y2goU1RBUlQpWzBdLmxlbmd0aCwgZW5kKVxuICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBibG9ja1Rva2VuaXplci5sb2NhdG9yID0gbG9jYXRvcjtcbiAgY29uc3Qge1xuICAgIFBhcnNlclxuICB9ID0gdGhpcztcbiAgY29uc3Qge1xuICAgIGJsb2NrVG9rZW5pemVyc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgY29uc3Qge1xuICAgIGJsb2NrTWV0aG9kc1xuICB9ID0gUGFyc2VyLnByb3RvdHlwZTtcbiAgYmxvY2tUb2tlbml6ZXJzLnRleHRpbnB1dCA9IGJsb2NrVG9rZW5pemVyO1xuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCAndGV4dGlucHV0Jyk7XG4gIGNvbnN0IHtcbiAgICBDb21waWxlclxuICB9ID0gdGhpczsgLy8gU3RyaW5naWZ5XG5cbiAgaWYgKENvbXBpbGVyKSB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzaXRvcnNcbiAgICB9ID0gQ29tcGlsZXIucHJvdG90eXBlO1xuXG4gICAgdmlzaXRvcnMudGV4dGlucHV0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBgW19fJHt0aGlzLmFsbChub2RlKS5qb2luKCcnKX1fX11gO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwbHVnaW47IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBVTkRFRklORURfQ09ERV9QT0lOVFMgPSBbXG4gICAgMHhmZmZlLFxuICAgIDB4ZmZmZixcbiAgICAweDFmZmZlLFxuICAgIDB4MWZmZmYsXG4gICAgMHgyZmZmZSxcbiAgICAweDJmZmZmLFxuICAgIDB4M2ZmZmUsXG4gICAgMHgzZmZmZixcbiAgICAweDRmZmZlLFxuICAgIDB4NGZmZmYsXG4gICAgMHg1ZmZmZSxcbiAgICAweDVmZmZmLFxuICAgIDB4NmZmZmUsXG4gICAgMHg2ZmZmZixcbiAgICAweDdmZmZlLFxuICAgIDB4N2ZmZmYsXG4gICAgMHg4ZmZmZSxcbiAgICAweDhmZmZmLFxuICAgIDB4OWZmZmUsXG4gICAgMHg5ZmZmZixcbiAgICAweGFmZmZlLFxuICAgIDB4YWZmZmYsXG4gICAgMHhiZmZmZSxcbiAgICAweGJmZmZmLFxuICAgIDB4Y2ZmZmUsXG4gICAgMHhjZmZmZixcbiAgICAweGRmZmZlLFxuICAgIDB4ZGZmZmYsXG4gICAgMHhlZmZmZSxcbiAgICAweGVmZmZmLFxuICAgIDB4ZmZmZmUsXG4gICAgMHhmZmZmZixcbiAgICAweDEwZmZmZSxcbiAgICAweDEwZmZmZlxuXTtcblxuZXhwb3J0cy5SRVBMQUNFTUVOVF9DSEFSQUNURVIgPSAnXFx1RkZGRCc7XG5cbmV4cG9ydHMuQ09ERV9QT0lOVFMgPSB7XG4gICAgRU9GOiAtMSxcbiAgICBOVUxMOiAweDAwLFxuICAgIFRBQlVMQVRJT046IDB4MDksXG4gICAgQ0FSUklBR0VfUkVUVVJOOiAweDBkLFxuICAgIExJTkVfRkVFRDogMHgwYSxcbiAgICBGT1JNX0ZFRUQ6IDB4MGMsXG4gICAgU1BBQ0U6IDB4MjAsXG4gICAgRVhDTEFNQVRJT05fTUFSSzogMHgyMSxcbiAgICBRVU9UQVRJT05fTUFSSzogMHgyMixcbiAgICBOVU1CRVJfU0lHTjogMHgyMyxcbiAgICBBTVBFUlNBTkQ6IDB4MjYsXG4gICAgQVBPU1RST1BIRTogMHgyNyxcbiAgICBIWVBIRU5fTUlOVVM6IDB4MmQsXG4gICAgU09MSURVUzogMHgyZixcbiAgICBESUdJVF8wOiAweDMwLFxuICAgIERJR0lUXzk6IDB4MzksXG4gICAgU0VNSUNPTE9OOiAweDNiLFxuICAgIExFU1NfVEhBTl9TSUdOOiAweDNjLFxuICAgIEVRVUFMU19TSUdOOiAweDNkLFxuICAgIEdSRUFURVJfVEhBTl9TSUdOOiAweDNlLFxuICAgIFFVRVNUSU9OX01BUks6IDB4M2YsXG4gICAgTEFUSU5fQ0FQSVRBTF9BOiAweDQxLFxuICAgIExBVElOX0NBUElUQUxfRjogMHg0NixcbiAgICBMQVRJTl9DQVBJVEFMX1g6IDB4NTgsXG4gICAgTEFUSU5fQ0FQSVRBTF9aOiAweDVhLFxuICAgIFJJR0hUX1NRVUFSRV9CUkFDS0VUOiAweDVkLFxuICAgIEdSQVZFX0FDQ0VOVDogMHg2MCxcbiAgICBMQVRJTl9TTUFMTF9BOiAweDYxLFxuICAgIExBVElOX1NNQUxMX0Y6IDB4NjYsXG4gICAgTEFUSU5fU01BTExfWDogMHg3OCxcbiAgICBMQVRJTl9TTUFMTF9aOiAweDdhLFxuICAgIFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjogMHhmZmZkXG59O1xuXG5leHBvcnRzLkNPREVfUE9JTlRfU0VRVUVOQ0VTID0ge1xuICAgIERBU0hfREFTSF9TVFJJTkc6IFsweDJkLCAweDJkXSwgLy8tLVxuICAgIERPQ1RZUEVfU1RSSU5HOiBbMHg0NCwgMHg0ZiwgMHg0MywgMHg1NCwgMHg1OSwgMHg1MCwgMHg0NV0sIC8vRE9DVFlQRVxuICAgIENEQVRBX1NUQVJUX1NUUklORzogWzB4NWIsIDB4NDMsIDB4NDQsIDB4NDEsIDB4NTQsIDB4NDEsIDB4NWJdLCAvL1tDREFUQVtcbiAgICBTQ1JJUFRfU1RSSU5HOiBbMHg3MywgMHg2MywgMHg3MiwgMHg2OSwgMHg3MCwgMHg3NF0sIC8vc2NyaXB0XG4gICAgUFVCTElDX1NUUklORzogWzB4NTAsIDB4NTUsIDB4NDIsIDB4NGMsIDB4NDksIDB4NDNdLCAvL1BVQkxJQ1xuICAgIFNZU1RFTV9TVFJJTkc6IFsweDUzLCAweDU5LCAweDUzLCAweDU0LCAweDQ1LCAweDRkXSAvL1NZU1RFTVxufTtcblxuLy9TdXJyb2dhdGVzXG5leHBvcnRzLmlzU3Vycm9nYXRlID0gZnVuY3Rpb24oY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gMHhkODAwICYmIGNwIDw9IDB4ZGZmZjtcbn07XG5cbmV4cG9ydHMuaXNTdXJyb2dhdGVQYWlyID0gZnVuY3Rpb24oY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gMHhkYzAwICYmIGNwIDw9IDB4ZGZmZjtcbn07XG5cbmV4cG9ydHMuZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCA9IGZ1bmN0aW9uKGNwMSwgY3AyKSB7XG4gICAgcmV0dXJuIChjcDEgLSAweGQ4MDApICogMHg0MDAgKyAweDI0MDAgKyBjcDI7XG59O1xuXG4vL05PVEU6IGV4Y2x1ZGluZyBOVUxMIGFuZCBBU0NJSSB3aGl0ZXNwYWNlXG5leHBvcnRzLmlzQ29udHJvbENvZGVQb2ludCA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGNwICE9PSAweDIwICYmIGNwICE9PSAweDBhICYmIGNwICE9PSAweDBkICYmIGNwICE9PSAweDA5ICYmIGNwICE9PSAweDBjICYmIGNwID49IDB4MDEgJiYgY3AgPD0gMHgxZikgfHxcbiAgICAgICAgKGNwID49IDB4N2YgJiYgY3AgPD0gMHg5ZilcbiAgICApO1xufTtcblxuZXhwb3J0cy5pc1VuZGVmaW5lZENvZGVQb2ludCA9IGZ1bmN0aW9uKGNwKSB7XG4gICAgcmV0dXJuIChjcCA+PSAweGZkZDAgJiYgY3AgPD0gMHhmZGVmKSB8fCBVTkRFRklORURfQ09ERV9QT0lOVFMuaW5kZXhPZihjcCkgPiAtMTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNvbnRyb2xDaGFyYWN0ZXJJbklucHV0U3RyZWFtOiAnY29udHJvbC1jaGFyYWN0ZXItaW4taW5wdXQtc3RyZWFtJyxcbiAgICBub25jaGFyYWN0ZXJJbklucHV0U3RyZWFtOiAnbm9uY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbScsXG4gICAgc3Vycm9nYXRlSW5JbnB1dFN0cmVhbTogJ3N1cnJvZ2F0ZS1pbi1pbnB1dC1zdHJlYW0nLFxuICAgIG5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1czogJ25vbi12b2lkLWh0bWwtZWxlbWVudC1zdGFydC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzJyxcbiAgICBlbmRUYWdXaXRoQXR0cmlidXRlczogJ2VuZC10YWctd2l0aC1hdHRyaWJ1dGVzJyxcbiAgICBlbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzOiAnZW5kLXRhZy13aXRoLXRyYWlsaW5nLXNvbGlkdXMnLFxuICAgIHVuZXhwZWN0ZWRTb2xpZHVzSW5UYWc6ICd1bmV4cGVjdGVkLXNvbGlkdXMtaW4tdGFnJyxcbiAgICB1bmV4cGVjdGVkTnVsbENoYXJhY3RlcjogJ3VuZXhwZWN0ZWQtbnVsbC1jaGFyYWN0ZXInLFxuICAgIHVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lOiAndW5leHBlY3RlZC1xdWVzdGlvbi1tYXJrLWluc3RlYWQtb2YtdGFnLW5hbWUnLFxuICAgIGludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZTogJ2ludmFsaWQtZmlyc3QtY2hhcmFjdGVyLW9mLXRhZy1uYW1lJyxcbiAgICB1bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWU6ICd1bmV4cGVjdGVkLWVxdWFscy1zaWduLWJlZm9yZS1hdHRyaWJ1dGUtbmFtZScsXG4gICAgbWlzc2luZ0VuZFRhZ05hbWU6ICdtaXNzaW5nLWVuZC10YWctbmFtZScsXG4gICAgdW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZTogJ3VuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLWF0dHJpYnV0ZS1uYW1lJyxcbiAgICB1bmtub3duTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2U6ICd1bmtub3duLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZTogJ21pc3Npbmctc2VtaWNvbG9uLWFmdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIHVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOiAndW5leHBlY3RlZC1jaGFyYWN0ZXItYWZ0ZXItZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgdW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZTogJ3VuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLXVucXVvdGVkLWF0dHJpYnV0ZS12YWx1ZScsXG4gICAgZW9mQmVmb3JlVGFnTmFtZTogJ2VvZi1iZWZvcmUtdGFnLW5hbWUnLFxuICAgIGVvZkluVGFnOiAnZW9mLWluLXRhZycsXG4gICAgbWlzc2luZ0F0dHJpYnV0ZVZhbHVlOiAnbWlzc2luZy1hdHRyaWJ1dGUtdmFsdWUnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXM6ICdtaXNzaW5nLXdoaXRlc3BhY2UtYmV0d2Vlbi1hdHRyaWJ1dGVzJyxcbiAgICBtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQ6ICdtaXNzaW5nLXdoaXRlc3BhY2UtYWZ0ZXItZG9jdHlwZS1wdWJsaWMta2V5d29yZCcsXG4gICAgbWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzOlxuICAgICAgICAnbWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tZG9jdHlwZS1wdWJsaWMtYW5kLXN5c3RlbS1pZGVudGlmaWVycycsXG4gICAgbWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkOiAnbWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWtleXdvcmQnLFxuICAgIG1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyOiAnbWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllcicsXG4gICAgbWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXI6ICdtaXNzaW5nLXF1b3RlLWJlZm9yZS1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyJyxcbiAgICBtaXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXI6ICdtaXNzaW5nLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXInLFxuICAgIG1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcjogJ21pc3NpbmctZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXI6ICdhYnJ1cHQtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllcicsXG4gICAgYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXI6ICdhYnJ1cHQtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllcicsXG4gICAgY2RhdGFJbkh0bWxDb250ZW50OiAnY2RhdGEtaW4taHRtbC1jb250ZW50JyxcbiAgICBpbmNvcnJlY3RseU9wZW5lZENvbW1lbnQ6ICdpbmNvcnJlY3RseS1vcGVuZWQtY29tbWVudCcsXG4gICAgZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0OiAnZW9mLWluLXNjcmlwdC1odG1sLWNvbW1lbnQtbGlrZS10ZXh0JyxcbiAgICBlb2ZJbkRvY3R5cGU6ICdlb2YtaW4tZG9jdHlwZScsXG4gICAgbmVzdGVkQ29tbWVudDogJ25lc3RlZC1jb21tZW50JyxcbiAgICBhYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQ6ICdhYnJ1cHQtY2xvc2luZy1vZi1lbXB0eS1jb21tZW50JyxcbiAgICBlb2ZJbkNvbW1lbnQ6ICdlb2YtaW4tY29tbWVudCcsXG4gICAgaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50OiAnaW5jb3JyZWN0bHktY2xvc2VkLWNvbW1lbnQnLFxuICAgIGVvZkluQ2RhdGE6ICdlb2YtaW4tY2RhdGEnLFxuICAgIGFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZTogJ2Fic2VuY2Utb2YtZGlnaXRzLWluLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZScsXG4gICAgbnVsbENoYXJhY3RlclJlZmVyZW5jZTogJ251bGwtY2hhcmFjdGVyLXJlZmVyZW5jZScsXG4gICAgc3Vycm9nYXRlQ2hhcmFjdGVyUmVmZXJlbmNlOiAnc3Vycm9nYXRlLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIGNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2U6ICdjaGFyYWN0ZXItcmVmZXJlbmNlLW91dHNpZGUtdW5pY29kZS1yYW5nZScsXG4gICAgY29udHJvbENoYXJhY3RlclJlZmVyZW5jZTogJ2NvbnRyb2wtY2hhcmFjdGVyLXJlZmVyZW5jZScsXG4gICAgbm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlOiAnbm9uY2hhcmFjdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2UnLFxuICAgIG1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWU6ICdtaXNzaW5nLXdoaXRlc3BhY2UtYmVmb3JlLWRvY3R5cGUtbmFtZScsXG4gICAgbWlzc2luZ0RvY3R5cGVOYW1lOiAnbWlzc2luZy1kb2N0eXBlLW5hbWUnLFxuICAgIGludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWU6ICdpbnZhbGlkLWNoYXJhY3Rlci1zZXF1ZW5jZS1hZnRlci1kb2N0eXBlLW5hbWUnLFxuICAgIGR1cGxpY2F0ZUF0dHJpYnV0ZTogJ2R1cGxpY2F0ZS1hdHRyaWJ1dGUnLFxuICAgIG5vbkNvbmZvcm1pbmdEb2N0eXBlOiAnbm9uLWNvbmZvcm1pbmctZG9jdHlwZScsXG4gICAgbWlzc2luZ0RvY3R5cGU6ICdtaXNzaW5nLWRvY3R5cGUnLFxuICAgIG1pc3BsYWNlZERvY3R5cGU6ICdtaXNwbGFjZWQtZG9jdHlwZScsXG4gICAgZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQ6ICdlbmQtdGFnLXdpdGhvdXQtbWF0Y2hpbmctb3Blbi1lbGVtZW50JyxcbiAgICBjbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzOiAnY2xvc2luZy1vZi1lbGVtZW50LXdpdGgtb3Blbi1jaGlsZC1lbGVtZW50cycsXG4gICAgZGlzYWxsb3dlZENvbnRlbnRJbk5vc2NyaXB0SW5IZWFkOiAnZGlzYWxsb3dlZC1jb250ZW50LWluLW5vc2NyaXB0LWluLWhlYWQnLFxuICAgIG9wZW5FbGVtZW50c0xlZnRBZnRlckVvZjogJ29wZW4tZWxlbWVudHMtbGVmdC1hZnRlci1lb2YnLFxuICAgIGFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQ6ICdhYmFuZG9uZWQtaGVhZC1lbGVtZW50LWNoaWxkJyxcbiAgICBtaXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50OiAnbWlzcGxhY2VkLXN0YXJ0LXRhZy1mb3ItaGVhZC1lbGVtZW50JyxcbiAgICBuZXN0ZWROb3NjcmlwdEluSGVhZDogJ25lc3RlZC1ub3NjcmlwdC1pbi1oZWFkJyxcbiAgICBlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0OiAnZW9mLWluLWVsZW1lbnQtdGhhdC1jYW4tY29udGFpbi1vbmx5LXRleHQnXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB1bmljb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcbmNvbnN0IEVSUiA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lcnJvci1jb2RlcycpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSB1bmljb2RlLkNPREVfUE9JTlRTO1xuXG4vL0NvbnN0XG5jb25zdCBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUgPSAxIDw8IDE2O1xuXG4vL1ByZXByb2Nlc3NvclxuLy9OT1RFOiBIVE1MIGlucHV0IHByZXByb2Nlc3Npbmdcbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbSlcbmNsYXNzIFByZXByb2Nlc3NvciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaHRtbCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5wb3MgPSAtMTtcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gLTE7XG4gICAgICAgIHRoaXMubGFzdENoYXJQb3MgPSAtMTtcblxuICAgICAgICB0aGlzLmdhcFN0YWNrID0gW107XG5cbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmxhc3RDaHVua1dyaXR0ZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVmZmVyV2F0ZXJsaW5lID0gREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FO1xuICAgIH1cblxuICAgIF9lcnIoKSB7XG4gICAgICAgIC8vIE5PVEU6IGVyciByZXBvcnRpbmcgaXMgbm9vcCBieSBkZWZhdWx0LiBFbmFibGVkIGJ5IG1peGluLlxuICAgIH1cblxuICAgIF9hZGRHYXAoKSB7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sucHVzaCh0aGlzLmxhc3RHYXBQb3MpO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbiAgICB9XG5cbiAgICBfcHJvY2Vzc1N1cnJvZ2F0ZShjcCkge1xuICAgICAgICAvL05PVEU6IHRyeSB0byBwZWVrIGEgc3Vycm9nYXRlIHBhaXJcbiAgICAgICAgaWYgKHRoaXMucG9zICE9PSB0aGlzLmxhc3RDaGFyUG9zKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Q3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpO1xuXG4gICAgICAgICAgICBpZiAodW5pY29kZS5pc1N1cnJvZ2F0ZVBhaXIobmV4dENwKSkge1xuICAgICAgICAgICAgICAgIC8vTk9URTogd2UgaGF2ZSBhIHN1cnJvZ2F0ZSBwYWlyLiBQZWVrIHBhaXIgY2hhcmFjdGVyIGFuZCByZWNhbGN1bGF0ZSBjb2RlIHBvaW50LlxuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG5cbiAgICAgICAgICAgICAgICAvL05PVEU6IGFkZCBnYXAgdGhhdCBzaG91bGQgYmUgYXZvaWRlZCBkdXJpbmcgcmV0cmVhdFxuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUuZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcCwgbmV4dENwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vTk9URTogd2UgYXJlIGF0IHRoZSBlbmQgb2YgYSBjaHVuaywgdGhlcmVmb3JlIHdlIGNhbid0IGluZmVyIHN1cnJvZ2F0ZSBwYWlyIHlldC5cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMubGFzdENodW5rV3JpdHRlbikge1xuICAgICAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiAkLkVPRjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vTk9URTogaXNvbGF0ZWQgc3Vycm9nYXRlXG4gICAgICAgIHRoaXMuX2VycihFUlIuc3Vycm9nYXRlSW5JbnB1dFN0cmVhbSk7XG5cbiAgICAgICAgcmV0dXJuIGNwO1xuICAgIH1cblxuICAgIGRyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgaWYgKHRoaXMucG9zID4gdGhpcy5idWZmZXJXYXRlcmxpbmUpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdENoYXJQb3MgLT0gdGhpcy5wb3M7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0xO1xuICAgICAgICAgICAgdGhpcy5nYXBTdGFjayA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGUoY2h1bmssIGlzTGFzdENodW5rKSB7XG4gICAgICAgIGlmICh0aGlzLmh0bWwpIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCArPSBjaHVuaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGNodW5rO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0Q2hhclBvcyA9IHRoaXMuaHRtbC5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gaXNMYXN0Q2h1bms7XG4gICAgfVxuXG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKDAsIHRoaXMucG9zICsgMSkgKyBjaHVuayArIHRoaXMuaHRtbC5zdWJzdHJpbmcodGhpcy5wb3MgKyAxLCB0aGlzLmh0bWwubGVuZ3RoKTtcblxuICAgICAgICB0aGlzLmxhc3RDaGFyUG9zID0gdGhpcy5odG1sLmxlbmd0aCAtIDE7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGFkdmFuY2UoKSB7XG4gICAgICAgIHRoaXMucG9zKys7XG5cbiAgICAgICAgaWYgKHRoaXMucG9zID4gdGhpcy5sYXN0Q2hhclBvcykge1xuICAgICAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gIXRoaXMubGFzdENodW5rV3JpdHRlbjtcbiAgICAgICAgICAgIHJldHVybiAkLkVPRjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcblxuICAgICAgICAvL05PVEU6IGFueSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVycyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvdyBhIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJcbiAgICAgICAgLy9tdXN0IGJlIGlnbm9yZWQuXG4gICAgICAgIGlmICh0aGlzLnNraXBOZXh0TmV3TGluZSAmJiBjcCA9PT0gJC5MSU5FX0ZFRUQpIHtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vTk9URTogYWxsIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJzIG11c3QgYmUgY29udmVydGVkIHRvIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXJzXG4gICAgICAgIGlmIChjcCA9PT0gJC5DQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiAkLkxJTkVfRkVFRDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHVuaWNvZGUuaXNTdXJyb2dhdGUoY3ApKSB7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX3Byb2Nlc3NTdXJyb2dhdGUoY3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9PUFRJTUlaQVRJT046IGZpcnN0IGNoZWNrIGlmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIGNvbW1vbiBhbGxvd2VkXG4gICAgICAgIC8vcmFuZ2UgKEFTQ0lJIGFscGhhbnVtZXJpYywgd2hpdGVzcGFjZXMsIGJpZyBjaHVuayBvZiBCTVApXG4gICAgICAgIC8vYmVmb3JlIGdvaW5nIGludG8gZGV0YWlsZWQgcGVyZm9ybWFuY2UgY29zdCB2YWxpZGF0aW9uLlxuICAgICAgICBjb25zdCBpc0NvbW1vblZhbGlkUmFuZ2UgPVxuICAgICAgICAgICAgKGNwID4gMHgxZiAmJiBjcCA8IDB4N2YpIHx8IGNwID09PSAkLkxJTkVfRkVFRCB8fCBjcCA9PT0gJC5DQVJSSUFHRV9SRVRVUk4gfHwgKGNwID4gMHg5ZiAmJiBjcCA8IDB4ZmRkMCk7XG5cbiAgICAgICAgaWYgKCFpc0NvbW1vblZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG5cbiAgICBfY2hlY2tGb3JQcm9ibGVtYXRpY0NoYXJhY3RlcnMoY3ApIHtcbiAgICAgICAgaWYgKHVuaWNvZGUuaXNDb250cm9sQ29kZVBvaW50KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pY29kZS5pc1VuZGVmaW5lZENvZGVQb2ludChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXRyZWF0KCkge1xuICAgICAgICBpZiAodGhpcy5wb3MgPT09IHRoaXMubGFzdEdhcFBvcykge1xuICAgICAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5nYXBTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMucG9zLS07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcy0tO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQcmVwcm9jZXNzb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vTk9URTogdGhpcyBmaWxlIGNvbnRhaW5zIGF1dG8tZ2VuZXJhdGVkIGFycmF5IG1hcHBlZCByYWRpeCB0cmVlIHRoYXQgaXMgdXNlZCBmb3IgdGhlIG5hbWVkIGVudGl0eSByZWZlcmVuY2VzIGNvbnN1bXB0aW9uXG4vLyhkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L3RyZWUvbWFzdGVyL3NjcmlwdHMvZ2VuZXJhdGUtbmFtZWQtZW50aXR5LWRhdGEvUkVBRE1FLm1kKVxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVWludDE2QXJyYXkoWzQsNTIsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMDYsMzAzLDQxMiw4MTAsMTQzMiwxNzAxLDE3OTYsMTk4NywyMTE0LDIzNjAsMjQyMCwyNDg0LDMxNzAsMzI1MSw0MTQwLDQzOTMsNDU3NSw0NjEwLDUxMDYsNTUxMiw1NzI4LDYxMTcsNjI3NCw2MzE1LDYzNDUsNjQyNyw2NTE2LDcwMDIsNzkxMCw4NzMzLDkzMjMsOTg3MCwxMDE3MCwxMDYzMSwxMDg5MywxMTMxOCwxMTM4NiwxMTQ2NywxMjc3MywxMzA5MiwxNDQ3NCwxNDkyMiwxNTQ0OCwxNTU0MiwxNjQxOSwxNzY2NiwxODE2NiwxODYxMSwxOTAwNCwxOTA5NSwxOTI5OCwxOTM5Nyw0LDE2LDY5LDc3LDk3LDk4LDk5LDEwMiwxMDMsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTQwLDE1MCwxNTgsMTY5LDE3NiwxOTQsMTk5LDIxMCwyMTYsMjIyLDIyNiwyNDIsMjU2LDI2NiwyODMsMjk0LDEwOCwxMDUsMTAzLDUsMTk4LDEsNTksMTQ4LDEsMTk4LDgwLDUsMzgsMSw1OSwxNTYsMSwzOCw5OSwxMTcsMTE2LDEwMSw1LDE5MywxLDU5LDE2NywxLDE5MywxMTQsMTAxLDExOCwxMDEsNTksMSwyNTgsNCwyLDEwNSwxMjEsMTgyLDE5MSwxMTQsOTksNSwxOTQsMSw1OSwxODksMSwxOTQsNTksMSwxMDQwLDExNCw1OSwzLDU1MzQ5LDU2NTgwLDExNCw5NywxMTgsMTAxLDUsMTkyLDEsNTksMjA4LDEsMTkyLDExMiwxMDQsOTcsNTksMSw5MTMsOTcsOTksMTE0LDU5LDEsMjU2LDEwMCw1OSwxLDEwODM1LDQsMiwxMDMsMTEyLDIzMiwyMzcsMTExLDExMCw1OSwxLDI2MCwxMDIsNTksMyw1NTM0OSw1NjYzMiwxMTIsMTA4LDEyMSw3MCwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1OSwxLDgyODksMTA1LDExMCwxMDMsNSwxOTcsMSw1OSwyNjQsMSwxOTcsNCwyLDk5LDExNSwyNzIsMjc3LDExNCw1OSwzLDU1MzQ5LDU2NDc2LDEwNSwxMDMsMTEwLDU5LDEsODc4OCwxMDUsMTA4LDEwMCwxMDEsNSwxOTUsMSw1OSwyOTIsMSwxOTUsMTA5LDEwOCw1LDE5NiwxLDU5LDMwMSwxLDE5Niw0LDgsOTcsOTksMTAxLDEwMiwxMTEsMTE0LDExNSwxMTcsMzIxLDM1MCwzNTQsMzgzLDM4OCwzOTQsNDAwLDQwNSw0LDIsOTksMTE0LDMyNywzMzYsMTA3LDExNSwxMDgsOTcsMTE1LDEwNCw1OSwxLDg3MjYsNCwyLDExOCwxMTksMzQyLDM0NSw1OSwxLDEwOTgzLDEwMSwxMDAsNTksMSw4OTY2LDEyMSw1OSwxLDEwNDEsNCwzLDk5LDExNCwxMTYsMzYyLDM2OSwzNzksOTcsMTE3LDExNSwxMDEsNTksMSw4NzU3LDExMCwxMTEsMTE3LDEwOCwxMDgsMTA1LDExNSw1OSwxLDg0OTIsOTcsNTksMSw5MTQsMTE0LDU5LDMsNTUzNDksNTY1ODEsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjMzLDEwMSwxMTgsMTAxLDU5LDEsNzI4LDk5LDExNCw1OSwxLDg0OTIsMTA5LDExMiwxMDEsMTEzLDU5LDEsODc4Miw0LDE0LDcyLDc5LDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTA4LDExMSwxMTQsMTE1LDExNyw0NDIsNDQ3LDQ1Niw1MDQsNTQyLDU0Nyw1NjksNTczLDU3Nyw2MTYsNjc4LDc4NCw3OTAsNzk2LDk5LDEyMSw1OSwxLDEwNjMsODAsODksNSwxNjksMSw1OSw0NTQsMSwxNjksNCwzLDk5LDExMiwxMjEsNDY0LDQ3MCw0OTcsMTE3LDExNiwxMDEsNTksMSwyNjIsNCwyLDU5LDEwNSw0NzYsNDc4LDEsODkxNCwxMTYsOTcsMTA4LDY4LDEwNSwxMDIsMTAyLDEwMSwxMTQsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCw2OCw1OSwxLDg1MTcsMTA4LDEwMSwxMjEsMTE1LDU5LDEsODQ5Myw0LDQsOTcsMTAxLDEwNSwxMTEsNTE0LDUyMCw1MzAsNTM1LDExNCwxMTEsMTEwLDU5LDEsMjY4LDEwMCwxMDUsMTA4LDUsMTk5LDEsNTksNTI4LDEsMTk5LDExNCw5OSw1OSwxLDI2NCwxMTAsMTA1LDExMCwxMTYsNTksMSw4NzUyLDExMSwxMTYsNTksMSwyNjYsNCwyLDEwMCwxMTAsNTUzLDU2MCwxMDUsMTA4LDEwOCw5Nyw1OSwxLDE4NCwxMTYsMTAxLDExNCw2OCwxMTEsMTE2LDU5LDEsMTgzLDExNCw1OSwxLDg0OTMsMTA1LDU5LDEsOTM1LDExNCw5OSwxMDgsMTAxLDQsNCw2OCw3Nyw4MCw4NCw1OTEsNTk2LDYwMyw2MDksMTExLDExNiw1OSwxLDg4NTcsMTA1LDExMCwxMTcsMTE1LDU5LDEsODg1NCwxMDgsMTE3LDExNSw1OSwxLDg4NTMsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODg1NSwxMTEsNCwyLDk5LDExNSw2MjMsNjQ2LDEwNywxMTksMTA1LDExNSwxMDEsNjcsMTExLDExMCwxMTYsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzU0LDEwMSw2NywxMTcsMTE0LDEwOCwxMjEsNCwyLDY4LDgxLDY1OCw2NzEsMTExLDExNyw5OCwxMDgsMTAxLDgxLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMjEsMTE3LDExMSwxMTYsMTAxLDU5LDEsODIxNyw0LDQsMTA4LDExMCwxMTIsMTE3LDY4OCw3MDEsNzM2LDc1MywxMTEsMTEwLDQsMiw1OSwxMDEsNjk2LDY5OCwxLDg3NTksNTksMSwxMDg2OCw0LDMsMTAzLDEwNSwxMTYsNzA5LDcxNyw3MjIsMTE0LDExNywxMDEsMTEwLDExNiw1OSwxLDg4MDEsMTEwLDExNiw1OSwxLDg3NTEsMTExLDExNywxMTQsNzMsMTEwLDExNiwxMDEsMTAzLDExNCw5NywxMDgsNTksMSw4NzUwLDQsMiwxMDIsMTE0LDc0Miw3NDUsNTksMSw4NDUwLDExMSwxMDAsMTE3LDk5LDExNiw1OSwxLDg3MjAsMTEwLDExNiwxMDEsMTE0LDY3LDEwOCwxMTEsOTksMTA3LDExOSwxMDUsMTE1LDEwMSw2NywxMTEsMTEwLDExNiwxMTEsMTE3LDExNCw3MywxMTAsMTE2LDEwMSwxMDMsMTE0LDk3LDEwOCw1OSwxLDg3NTUsMTExLDExNSwxMTUsNTksMSwxMDc5OSw5OSwxMTQsNTksMyw1NTM0OSw1NjQ3OCwxMTIsNCwyLDU5LDY3LDgwMyw4MDUsMSw4OTE1LDk3LDExMiw1OSwxLDg3ODEsNCwxMSw2OCw3NCw4Myw5MCw5Nyw5OSwxMDEsMTAyLDEwNSwxMTEsMTE1LDgzNCw4NTAsODU1LDg2MCw4NjUsODg4LDkwMyw5MTYsOTIxLDEwMTEsMTQxNSw0LDIsNTksMTExLDg0MCw4NDIsMSw4NTE3LDExNiwxMTQsOTcsMTA0LDEwMCw1OSwxLDEwNTEzLDk5LDEyMSw1OSwxLDEwMjYsOTksMTIxLDU5LDEsMTAyOSw5OSwxMjEsNTksMSwxMDM5LDQsMywxMDMsMTE0LDExNSw4NzMsODc5LDg4MywxMDMsMTAxLDExNCw1OSwxLDgyMjUsMTE0LDU5LDEsODYwOSwxMDQsMTE4LDU5LDEsMTA5ODAsNCwyLDk3LDEyMSw4OTQsOTAwLDExNCwxMTEsMTEwLDU5LDEsMjcwLDU5LDEsMTA0NCwxMDgsNCwyLDU5LDExNiw5MTAsOTEyLDEsODcxMSw5Nyw1OSwxLDkxNiwxMTQsNTksMyw1NTM0OSw1NjU4Myw0LDIsOTcsMTAyLDkyNyw5OTgsNCwyLDk5LDEwOSw5MzMsOTkyLDExNCwxMDUsMTE2LDEwNSw5OSw5NywxMDgsNCw0LDY1LDY4LDcxLDg0LDk1MCw5NTcsOTc4LDk4NSw5OSwxMTcsMTE2LDEwMSw1OSwxLDE4MCwxMTEsNCwyLDExNiwxMTcsOTY0LDk2Nyw1OSwxLDcyOSw5OCwxMDgsMTAxLDY1LDk5LDExNywxMTYsMTAxLDU5LDEsNzMzLDExNCw5NywxMTgsMTAxLDU5LDEsOTYsMTA1LDEwOCwxMDAsMTAxLDU5LDEsNzMyLDExMSwxMTAsMTAwLDU5LDEsODkwMCwxMDIsMTAxLDExNCwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDY4LDU5LDEsODUxOCw0LDQsMTEyLDExNiwxMTcsMTE5LDEwMjEsMTAyNiwxMDQ4LDEyNDksMTAyLDU5LDMsNTUzNDksNTY2MzUsNCwzLDU5LDY4LDY5LDEwMzQsMTAzNiwxMDQxLDEsMTY4LDExMSwxMTYsNTksMSw4NDEyLDExMywxMTcsOTcsMTA4LDU5LDEsODc4NCw5OCwxMDgsMTAxLDQsNiw2Nyw2OCw3Niw4Miw4NSw4NiwxMDY1LDEwODIsMTEwMSwxMTg5LDEyMTEsMTIzNiwxMTEsMTEwLDExNiwxMTEsMTE3LDExNCw3MywxMTAsMTE2LDEwMSwxMDMsMTE0LDk3LDEwOCw1OSwxLDg3NTEsMTExLDQsMiwxMTYsMTE5LDEwODksMTA5Miw1OSwxLDE2OCwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OSw0LDIsMTAxLDExMSwxMTA3LDExNDEsMTAyLDExNiw0LDMsNjUsODIsODQsMTExNywxMTI0LDExMzYsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NiwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MCwxMDEsMTAxLDU5LDEsMTA5ODAsMTEwLDEwMyw0LDIsNzYsODIsMTE0OSwxMTc3LDEwMSwxMDIsMTE2LDQsMiw2NSw4MiwxMTU4LDExNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzIsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjM0LDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzMywxMDUsMTAzLDEwNCwxMTYsNCwyLDY1LDg0LDExOTksMTIwNiwxMTQsMTE0LDExMSwxMTksNTksMSw4NjU4LDEwMSwxMDEsNTksMSw4ODcyLDExMiw0LDIsNjUsNjgsMTIxOCwxMjI1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NTcsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MSwxMDEsMTE0LDExNiwxMDUsOTksOTcsMTA4LDY2LDk3LDExNCw1OSwxLDg3NDEsMTEwLDQsNiw2NSw2Niw3Niw4Miw4NCw5NywxMjY0LDEyOTIsMTI5OSwxMzUyLDEzOTEsMTQwOCwxMTQsMTE0LDExMSwxMTksNCwzLDU5LDY2LDg1LDEyNzYsMTI3OCwxMjgzLDEsODU5NSw5NywxMTQsNTksMSwxMDUxNSwxMTIsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY5MywxMTQsMTAxLDExOCwxMDEsNTksMSw3ODUsMTAxLDEwMiwxMTYsNCwzLDgyLDg0LDg2LDEzMTAsMTMyMywxMzM0LDEwNSwxMDMsMTA0LDExNiw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NiwxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTkwLDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsMTM0NSwxMzQ3LDEsODYzNyw5NywxMTQsNTksMSwxMDU4MiwxMDUsMTAzLDEwNCwxMTYsNCwyLDg0LDg2LDEzNjIsMTM3MywxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTkxLDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsMTM4NCwxMzg2LDEsODY0MSw5NywxMTQsNTksMSwxMDU4MywxMDEsMTAxLDQsMiw1OSw2NSwxMzk5LDE0MDEsMSw4ODY4LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OSw0LDIsOTksMTE2LDE0MjEsMTQyNiwxMTQsNTksMyw1NTM0OSw1NjQ3OSwxMTQsMTExLDEwNyw1OSwxLDI3Miw0LDE2LDc4LDg0LDk3LDk5LDEwMCwxMDIsMTAzLDEwOCwxMDksMTExLDExMiwxMTMsMTE1LDExNiwxMTcsMTIwLDE0NjYsMTQ3MCwxNDc4LDE0ODksMTUxNSwxNTIwLDE1MjUsMTUzNiwxNTQ0LDE1OTMsMTYwOSwxNjE3LDE2NTAsMTY2NCwxNjY4LDE2NzcsNzEsNTksMSwzMzAsNzIsNSwyMDgsMSw1OSwxNDc2LDEsMjA4LDk5LDExNywxMTYsMTAxLDUsMjAxLDEsNTksMTQ4NywxLDIwMSw0LDMsOTcsMTA1LDEyMSwxNDk3LDE1MDMsMTUxMiwxMTQsMTExLDExMCw1OSwxLDI4MiwxMTQsOTksNSwyMDIsMSw1OSwxNTEwLDEsMjAyLDU5LDEsMTA2OSwxMTEsMTE2LDU5LDEsMjc4LDExNCw1OSwzLDU1MzQ5LDU2NTg0LDExNCw5NywxMTgsMTAxLDUsMjAwLDEsNTksMTUzNCwxLDIwMCwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxMiw0LDIsOTcsMTEyLDE1NTAsMTU1NSw5OSwxMTQsNTksMSwyNzQsMTE2LDEyMSw0LDIsODMsODYsMTU2MywxNTc2LDEwOSw5NywxMDgsMTA4LDgzLDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDk3MjMsMTAxLDExNCwxMjEsODMsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTY0Myw0LDIsMTAzLDExMiwxNTk5LDE2MDQsMTExLDExMCw1OSwxLDI4MCwxMDIsNTksMyw1NTM0OSw1NjYzNiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsOTE3LDExNyw0LDIsOTcsMTA1LDE2MjQsMTY0MCwxMDgsNCwyLDU5LDg0LDE2MzEsMTYzMywxLDEwODY5LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg3NzAsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSw4NjUyLDQsMiw5OSwxMDUsMTY1NiwxNjYwLDExNCw1OSwxLDg0OTYsMTA5LDU5LDEsMTA4NjcsOTcsNTksMSw5MTksMTA5LDEwOCw1LDIwMywxLDU5LDE2NzUsMSwyMDMsNCwyLDEwNSwxMTIsMTY4MywxNjg5LDExNSwxMTYsMTE1LDU5LDEsODcwNywxMTEsMTEwLDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsNjksNTksMSw4NTE5LDQsNSw5OSwxMDIsMTA1LDExMSwxMTUsMTcxMywxNzE3LDE3MjIsMTc2MiwxNzkxLDEyMSw1OSwxLDEwNjAsMTE0LDU5LDMsNTUzNDksNTY1ODUsMTA4LDEwOCwxMDEsMTAwLDQsMiw4Myw4NiwxNzMyLDE3NDUsMTA5LDk3LDEwOCwxMDgsODMsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTcyNCwxMDEsMTE0LDEyMSw4MywxMDksOTcsMTA4LDEwOCw4MywxMTMsMTE3LDk3LDExNCwxMDEsNTksMSw5NjQyLDQsMywxMTIsMTE0LDExNywxNzcwLDE3NzUsMTc4MSwxMDIsNTksMyw1NTM0OSw1NjYzNyw2NSwxMDgsMTA4LDU5LDEsODcwNCwxMTQsMTA1LDEwMSwxMTQsMTE2LDExNCwxMDIsNTksMSw4NDk3LDk5LDExNCw1OSwxLDg0OTcsNCwxMiw3NCw4NCw5Nyw5OCw5OSwxMDAsMTAyLDEwMywxMTEsMTE0LDExNSwxMTYsMTgyMiwxODI3LDE4MzQsMTg0OCwxODU1LDE4NzcsMTg4MiwxODg3LDE4OTAsMTg5NiwxOTc4LDE5ODQsOTksMTIxLDU5LDEsMTAyNyw1LDYyLDEsNTksMTgzMiwxLDYyLDEwOSwxMDksOTcsNCwyLDU5LDEwMCwxODQzLDE4NDUsMSw5MTUsNTksMSw5ODgsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjg2LDQsMywxMDEsMTA1LDEyMSwxODYzLDE4NjksMTg3NCwxMDAsMTA1LDEwOCw1OSwxLDI5MCwxMTQsOTksNTksMSwyODQsNTksMSwxMDQzLDExMSwxMTYsNTksMSwyODgsMTE0LDU5LDMsNTUzNDksNTY1ODYsNTksMSw4OTIxLDExMiwxMDIsNTksMyw1NTM0OSw1NjYzOCwxMDEsOTcsMTE2LDEwMSwxMTQsNCw2LDY5LDcwLDcxLDc2LDgzLDg0LDE5MTUsMTkzMywxOTQ0LDE5NTMsMTk1OSwxOTcxLDExMywxMTcsOTcsMTA4LDQsMiw1OSw3NiwxOTI1LDE5MjcsMSw4ODA1LDEwMSwxMTUsMTE1LDU5LDEsODkyMywxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MDcsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDEwOTE0LDEwMSwxMTUsMTE1LDU5LDEsODgyMywxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDEwODc4LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDg4MTksOTksMTE0LDU5LDMsNTUzNDksNTY0ODIsNTksMSw4ODExLDQsOCw2NSw5Nyw5OSwxMDIsMTA1LDExMSwxMTUsMTE3LDIwMDUsMjAxMiwyMDI2LDIwMzIsMjAzNiwyMDQ5LDIwNzMsMjA4OSw4Miw2OCw5OSwxMjEsNTksMSwxMDY2LDQsMiw5OSwxMTYsMjAxOCwyMDIzLDEwMSwxMDcsNTksMSw3MTEsNTksMSw5NCwxMDUsMTE0LDk5LDU5LDEsMjkyLDExNCw1OSwxLDg0NjAsMTA4LDk4LDEwMSwxMTQsMTE2LDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4NDU5LDQsMiwxMTIsMTE0LDIwNTUsMjA1OSwxMDIsNTksMSw4NDYxLDEwNSwxMjIsMTExLDExMCwxMTYsOTcsMTA4LDc2LDEwNSwxMTAsMTAxLDU5LDEsOTQ3Miw0LDIsOTksMTE2LDIwNzksMjA4MywxMTQsNTksMSw4NDU5LDExNCwxMTEsMTA3LDU5LDEsMjk0LDEwOSwxMTIsNCwyLDY4LDY5LDIwOTcsMjEwNywxMTEsMTE5LDExMCw3MiwxMTcsMTA5LDExMiw1OSwxLDg3ODIsMTEzLDExNyw5NywxMDgsNTksMSw4NzgzLDQsMTQsNjksNzQsNzksOTcsOTksMTAwLDEwMiwxMDMsMTA5LDExMCwxMTEsMTE1LDExNiwxMTcsMjE0NCwyMTQ5LDIxNTUsMjE2MCwyMTcxLDIxODksMjE5NCwyMTk4LDIyMDksMjI0NSwyMzA3LDIzMjksMjMzNCwyMzQxLDk5LDEyMSw1OSwxLDEwNDUsMTA4LDEwNSwxMDMsNTksMSwzMDYsOTksMTIxLDU5LDEsMTAyNSw5OSwxMTcsMTE2LDEwMSw1LDIwNSwxLDU5LDIxNjksMSwyMDUsNCwyLDEwNSwxMjEsMjE3NywyMTg2LDExNCw5OSw1LDIwNiwxLDU5LDIxODQsMSwyMDYsNTksMSwxMDQ4LDExMSwxMTYsNTksMSwzMDQsMTE0LDU5LDEsODQ2NSwxMTQsOTcsMTE4LDEwMSw1LDIwNCwxLDU5LDIyMDcsMSwyMDQsNCwzLDU5LDk3LDExMiwyMjE3LDIyMTksMjIzOCwxLDg0NjUsNCwyLDk5LDEwMywyMjI1LDIyMjksMTE0LDU5LDEsMjk4LDEwNSwxMTAsOTcsMTE0LDEyMSw3Myw1OSwxLDg1MjAsMTA4LDEwNSwxMDEsMTE1LDU5LDEsODY1OCw0LDIsMTE2LDExOCwyMjUxLDIyODEsNCwyLDU5LDEwMSwyMjU3LDIyNTksMSw4NzQ4LDQsMiwxMDMsMTE0LDIyNjUsMjI3MSwxMTQsOTcsMTA4LDU5LDEsODc0NywxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCw1OSwxLDg4OTgsMTA1LDExNSwxMDUsOTgsMTA4LDEwMSw0LDIsNjcsODQsMjI5MywyMzAwLDExMSwxMDksMTA5LDk3LDU5LDEsODI5MSwxMDUsMTA5LDEwMSwxMTUsNTksMSw4MjkwLDQsMywxMDMsMTEyLDExNiwyMzE1LDIzMjAsMjMyNSwxMTEsMTEwLDU5LDEsMzAyLDEwMiw1OSwzLDU1MzQ5LDU2NjQwLDk3LDU5LDEsOTIxLDk5LDExNCw1OSwxLDg0NjQsMTA1LDEwOCwxMDAsMTAxLDU5LDEsMjk2LDQsMiwxMDcsMTA5LDIzNDcsMjM1Miw5OSwxMjEsNTksMSwxMDMwLDEwOCw1LDIwNywxLDU5LDIzNTgsMSwyMDcsNCw1LDk5LDEwMiwxMTEsMTE1LDExNywyMzcyLDIzODYsMjM5MSwyMzk3LDI0MTQsNCwyLDEwNSwxMjEsMjM3OCwyMzgzLDExNCw5OSw1OSwxLDMwOCw1OSwxLDEwNDksMTE0LDU5LDMsNTUzNDksNTY1ODksMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQxLDQsMiw5OSwxMDEsMjQwMywyNDA4LDExNCw1OSwzLDU1MzQ5LDU2NDg1LDExNCw5OSwxMjEsNTksMSwxMDMyLDEwNyw5OSwxMjEsNTksMSwxMDI4LDQsNyw3Miw3NCw5Nyw5OSwxMDIsMTExLDExNSwyNDM2LDI0NDEsMjQ0NiwyNDUyLDI0NjcsMjQ3MiwyNDc4LDk5LDEyMSw1OSwxLDEwNjEsOTksMTIxLDU5LDEsMTAzNiwxMTIsMTEyLDk3LDU5LDEsOTIyLDQsMiwxMDEsMTIxLDI0NTgsMjQ2NCwxMDAsMTA1LDEwOCw1OSwxLDMxMCw1OSwxLDEwNTAsMTE0LDU5LDMsNTUzNDksNTY1OTAsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjQyLDk5LDExNCw1OSwzLDU1MzQ5LDU2NDg2LDQsMTEsNzQsODQsOTcsOTksMTAxLDEwMiwxMDgsMTA5LDExMSwxMTUsMTE2LDI1MDgsMjUxMywyNTIwLDI1NjIsMjU4NSwyOTgxLDI5ODYsMzAwNCwzMDExLDMxNDYsMzE2Nyw5OSwxMjEsNTksMSwxMDMzLDUsNjAsMSw1OSwyNTE4LDEsNjAsNCw1LDk5LDEwOSwxMTAsMTEyLDExNCwyNTMyLDI1MzgsMjU0NCwyNTQ4LDI1NTgsMTE3LDExNiwxMDEsNTksMSwzMTMsOTgsMTAwLDk3LDU5LDEsOTIzLDEwMyw1OSwxLDEwMjE4LDEwOCw5Nyw5OSwxMDEsMTE2LDExNCwxMDIsNTksMSw4NDY2LDExNCw1OSwxLDg2MDYsNCwzLDk3LDEwMSwxMjEsMjU3MCwyNTc2LDI1ODIsMTE0LDExMSwxMTAsNTksMSwzMTcsMTAwLDEwNSwxMDgsNTksMSwzMTUsNTksMSwxMDUxLDQsMiwxMDIsMTE1LDI1OTEsMjkwNywxMTYsNCwxMCw2NSw2Nyw2OCw3MCw4Miw4NCw4NSw4Niw5NywxMTQsMjYxNCwyNjYzLDI2NzIsMjcyOCwyNzM1LDI3NjAsMjgyMCwyODcwLDI4ODgsMjg5NSw0LDIsMTEwLDExNCwyNjIwLDI2MzMsMTAzLDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTYsMTE0LDExMSwxMTksNCwzLDU5LDY2LDgyLDI2NDQsMjY0NiwyNjUxLDEsODU5Miw5NywxMTQsNTksMSw4Njc2LDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjQ2LDEwMSwxMDUsMTA4LDEwNSwxMTAsMTAzLDU5LDEsODk2OCwxMTEsNCwyLDExNywxMTksMjY3OSwyNjkyLDk4LDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTQsMTEwLDQsMiw4NCw4NiwyNjk5LDI3MTAsMTAxLDEwMSw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU5MywxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDI3MjEsMjcyMywxLDg2NDMsOTcsMTE0LDU5LDEsMTA1ODUsMTA4LDExMSwxMTEsMTE0LDU5LDEsODk3MCwxMDUsMTAzLDEwNCwxMTYsNCwyLDY1LDg2LDI3NDUsMjc1MiwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTc0LDQsMiwxMDEsMTE0LDI3NjYsMjc5MiwxMDEsNCwzLDU5LDY1LDg2LDI3NzUsMjc3NywyNzg0LDEsODg2NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjEyLDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTg2LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwzLDU5LDY2LDY5LDI4MDYsMjgwOCwyODEzLDEsODg4Miw5NywxMTQsNTksMSwxMDcwMywxMTMsMTE3LDk3LDEwOCw1OSwxLDg4ODQsMTEyLDQsMyw2OCw4NCw4NiwyODI5LDI4NDEsMjg1MiwxMTEsMTE5LDExMCw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NywxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTkyLDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsMjg2MywyODY1LDEsODYzOSw5NywxMTQsNTksMSwxMDU4NCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDI4ODEsMjg4MywxLDg2MzYsOTcsMTE0LDU5LDEsMTA1NzgsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NiwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY2MCwxMTUsNCw2LDY5LDcwLDcxLDc2LDgzLDg0LDI5MjIsMjkzNiwyOTQ3LDI5NTYsMjk2MiwyOTc0LDExMywxMTcsOTcsMTA4LDcxLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMSw4OTIyLDExNywxMDgsMTA4LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsODgwNiwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDU5LDEsODgyMiwxMDEsMTE1LDExNSw1OSwxLDEwOTEzLDEwOCw5NywxMTAsMTE2LDY5LDExMywxMTcsOTcsMTA4LDU5LDEsMTA4NzcsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgxOCwxMTQsNTksMyw1NTM0OSw1NjU5MSw0LDIsNTksMTAxLDI5OTIsMjk5NCwxLDg5MjAsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjY2LDEwNSwxMDAsMTExLDExNiw1OSwxLDMxOSw0LDMsMTEwLDExMiwxMTksMzAxOSwzMTEwLDMxMTUsMTAzLDQsNCw3Niw4MiwxMDgsMTE0LDMwMzAsMzA1OCwzMDcwLDMwOTgsMTAxLDEwMiwxMTYsNCwyLDY1LDgyLDMwMzksMzA0NiwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIyOSwxMDUsMTAzLDEwNCwxMTYsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzEsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMwLDEwMSwxMDIsMTE2LDQsMiw5NywxMTQsMzA3OSwzMDg2LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMyLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSwxMDIzNCwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzMsMTAyLDU5LDMsNTUzNDksNTY2NDMsMTAxLDExNCw0LDIsNzYsODIsMzEyMywzMTM0LDEwMSwxMDIsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDEsMTA1LDEwMywxMDQsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDAsNCwzLDk5LDEwNCwxMTYsMzE1NCwzMTU4LDMxNjEsMTE0LDU5LDEsODQ2Niw1OSwxLDg2MjQsMTE0LDExMSwxMDcsNTksMSwzMjEsNTksMSw4ODEwLDQsOCw5Nyw5OSwxMDEsMTAyLDEwNSwxMTEsMTE1LDExNywzMTg4LDMxOTIsMzE5NiwzMjIyLDMyMjcsMzIzNywzMjQzLDMyNDgsMTEyLDU5LDEsMTA1MDEsMTIxLDU5LDEsMTA1Miw0LDIsMTAwLDEwOCwzMjAyLDMyMTMsMTA1LDExNywxMDksODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyODcsMTA4LDEwNSwxMTAsMTE2LDExNCwxMDIsNTksMSw4NDk5LDExNCw1OSwzLDU1MzQ5LDU2NTkyLDExMCwxMTcsMTE1LDgwLDEwOCwxMTcsMTE1LDU5LDEsODcyMywxMTIsMTAyLDU5LDMsNTUzNDksNTY2NDQsOTksMTE0LDU5LDEsODQ5OSw1OSwxLDkyNCw0LDksNzQsOTcsOTksMTAxLDEwMiwxMTEsMTE1LDExNiwxMTcsMzI3MSwzMjc2LDMyODMsMzMwNiwzNDIyLDM0MjcsNDEyMCw0MTI2LDQxMzcsOTksMTIxLDU5LDEsMTAzNCw5OSwxMTcsMTE2LDEwMSw1OSwxLDMyMyw0LDMsOTcsMTAxLDEyMSwzMjkxLDMyOTcsMzMwMywxMTQsMTExLDExMCw1OSwxLDMyNywxMDAsMTA1LDEwOCw1OSwxLDMyNSw1OSwxLDEwNTMsNCwzLDEwMywxMTUsMTE5LDMzMTQsMzM4MCwzNDE1LDk3LDExNiwxMDUsMTE4LDEwMSw0LDMsNzcsODQsODYsMzMyNywzMzQwLDMzNjUsMTAxLDEwMCwxMDUsMTE3LDEwOSw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMywxMDQsMTA1LDQsMiw5OSwxMTAsMzM0OCwzMzU3LDEwNyw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMyw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMywxMDEsMTE0LDEyMSw4NCwxMDQsMTA1LDExMCw4MywxMTIsOTcsOTksMTAxLDU5LDEsODIwMywxMTYsMTAxLDEwMCw0LDIsNzEsNzYsMzM4OSwzNDA1LDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNzEsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg4MTEsMTAxLDExNSwxMTUsNzYsMTAxLDExNSwxMTUsNTksMSw4ODEwLDc2LDEwNSwxMTAsMTAxLDU5LDEsMTAsMTE0LDU5LDMsNTUzNDksNTY1OTMsNCw0LDY2LDExMCwxMTIsMTE2LDM0MzcsMzQ0NCwzNDYwLDM0NjQsMTE0LDEwMSw5NywxMDcsNTksMSw4Mjg4LDY2LDExNCwxMDEsOTcsMTA3LDEwNSwxMTAsMTAzLDgzLDExMiw5Nyw5OSwxMDEsNTksMSwxNjAsMTAyLDU5LDEsODQ2OSw0LDEzLDU5LDY3LDY4LDY5LDcxLDcyLDc2LDc4LDgwLDgyLDgzLDg0LDg2LDM0OTIsMzQ5NCwzNTE3LDM1MzYsMzU3OCwzNjU3LDM2ODUsMzc4NCwzODIzLDM4NjAsMzkxNSw0MDY2LDQxMDcsMSwxMDk4OCw0LDIsMTExLDExNywzNTAwLDM1MTAsMTEwLDEwMywxMTQsMTE3LDEwMSwxMTAsMTE2LDU5LDEsODgwMiwxMTIsNjcsOTcsMTEyLDU5LDEsODgxMywxMTEsMTE3LDk4LDEwOCwxMDEsODYsMTAxLDExNCwxMTYsMTA1LDk5LDk3LDEwOCw2Niw5NywxMTQsNTksMSw4NzQyLDQsMywxMDgsMTEzLDEyMCwzNTQ0LDM1NTIsMzU3MSwxMDEsMTA5LDEwMSwxMTAsMTE2LDU5LDEsODcxMywxMTcsOTcsMTA4LDQsMiw1OSw4NCwzNTYxLDM1NjMsMSw4ODAwLDEwNSwxMDgsMTAwLDEwMSw1OSwzLDg3NzAsODI0LDEwNSwxMTUsMTE2LDExNSw1OSwxLDg3MDgsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw0LDcsNTksNjksNzAsNzEsNzYsODMsODQsMzYwMCwzNjAyLDM2MDksMzYyMSwzNjMxLDM2MzcsMzY1MCwxLDg4MTUsMTEzLDExNyw5NywxMDgsNTksMSw4ODE3LDExNywxMDgsMTA4LDY5LDExMywxMTcsOTcsMTA4LDU5LDMsODgwNyw4MjQsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwzLDg4MTEsODI0LDEwMSwxMTUsMTE1LDU5LDEsODgyNSwxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwzLDEwODc4LDgyNCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODIxLDExNywxMDksMTEyLDQsMiw2OCw2OSwzNjY2LDM2NzcsMTExLDExOSwxMTAsNzIsMTE3LDEwOSwxMTIsNTksMyw4NzgyLDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwzLDg3ODMsODI0LDEwMSw0LDIsMTAyLDExNSwzNjkyLDM3MjQsMTE2LDg0LDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSwzNzA5LDM3MTEsMzcxNywxLDg5MzgsOTcsMTE0LDU5LDMsMTA3MDMsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODk0MCwxMTUsNCw2LDU5LDY5LDcxLDc2LDgzLDg0LDM3MzksMzc0MSwzNzQ4LDM3NTcsMzc2NCwzNzc3LDEsODgxNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MTYsMTE0LDEwMSw5NywxMTYsMTAxLDExNCw1OSwxLDg4MjQsMTAxLDExNSwxMTUsNTksMyw4ODEwLDgyNCwxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwzLDEwODc3LDgyNCwxMDUsMTA4LDEwMCwxMDEsNTksMSw4ODIwLDEwMSwxMTUsMTE2LDEwMSwxMDAsNCwyLDcxLDc2LDM3OTUsMzgxMiwxMTQsMTAxLDk3LDExNiwxMDEsMTE0LDcxLDExNCwxMDEsOTcsMTE2LDEwMSwxMTQsNTksMywxMDkxNCw4MjQsMTAxLDExNSwxMTUsNzYsMTAxLDExNSwxMTUsNTksMywxMDkxMyw4MjQsMTE0LDEwMSw5OSwxMDEsMTAwLDEwMSwxMTUsNCwzLDU5LDY5LDgzLDM4MzgsMzg0MCwzODQ4LDEsODgzMiwxMTMsMTE3LDk3LDEwOCw1OSwzLDEwOTI3LDgyNCwxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5MjgsNCwyLDEwMSwxMDUsMzg2NiwzODgxLDExOCwxMDEsMTE0LDExNSwxMDEsNjksMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsNTksMSw4NzE2LDEwMywxMDQsMTE2LDg0LDExNCwxMDUsOTcsMTEwLDEwMywxMDgsMTAxLDQsMyw1OSw2Niw2OSwzOTAwLDM5MDIsMzkwOCwxLDg5MzksOTcsMTE0LDU5LDMsMTA3MDQsODI0LDExMywxMTcsOTcsMTA4LDU5LDEsODk0MSw0LDIsMTEzLDExNywzOTIxLDM5NzMsMTE3LDk3LDExNCwxMDEsODMsMTE3LDQsMiw5OCwxMTIsMzkzMywzOTUyLDExNSwxMDEsMTE2LDQsMiw1OSw2OSwzOTQyLDM5NDUsMyw4ODQ3LDgyNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5MzAsMTAxLDExNCwxMTUsMTAxLDExNiw0LDIsNTksNjksMzk2MywzOTY2LDMsODg0OCw4MjQsMTEzLDExNyw5NywxMDgsNTksMSw4OTMxLDQsMyw5OCw5OSwxMTIsMzk4MSw0MDAwLDQwNDUsMTE1LDEwMSwxMTYsNCwyLDU5LDY5LDM5OTAsMzk5MywzLDg4MzQsODQwMiwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NDAsOTksMTAxLDEwMSwxMDAsMTE1LDQsNCw1OSw2OSw4Myw4NCw0MDE1LDQwMTcsNDAyNSw0MDM3LDEsODgzMywxMTMsMTE3LDk3LDEwOCw1OSwzLDEwOTI4LDgyNCwxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg5MjksMTA1LDEwOCwxMDAsMTAxLDU5LDMsODgzMSw4MjQsMTAxLDExNCwxMTUsMTAxLDExNiw0LDIsNTksNjksNDA1Niw0MDU5LDMsODgzNSw4NDAyLDExMywxMTcsOTcsMTA4LDU5LDEsODg0MSwxMDUsMTA4LDEwMCwxMDEsNCw0LDU5LDY5LDcwLDg0LDQwODAsNDA4Miw0MDg5LDQxMDAsMSw4NzY5LDExMywxMTcsOTcsMTA4LDU5LDEsODc3MiwxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzUsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc3NywxMDEsMTE0LDExNiwxMDUsOTksOTcsMTA4LDY2LDk3LDExNCw1OSwxLDg3NDAsOTksMTE0LDU5LDMsNTUzNDksNTY0ODksMTA1LDEwOCwxMDAsMTAxLDUsMjA5LDEsNTksNDEzNSwxLDIwOSw1OSwxLDkyNSw0LDE0LDY5LDk3LDk5LDEwMCwxMDIsMTAzLDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsNDE3MCw0MTc2LDQxODcsNDIwNSw0MjEyLDQyMTcsNDIyOCw0MjUzLDQyNTksNDI5Miw0Mjk1LDQzMTYsNDMzNyw0MzQ2LDEwOCwxMDUsMTAzLDU5LDEsMzM4LDk5LDExNywxMTYsMTAxLDUsMjExLDEsNTksNDE4NSwxLDIxMSw0LDIsMTA1LDEyMSw0MTkzLDQyMDIsMTE0LDk5LDUsMjEyLDEsNTksNDIwMCwxLDIxMiw1OSwxLDEwNTQsOTgsMTA4LDk3LDk5LDU5LDEsMzM2LDExNCw1OSwzLDU1MzQ5LDU2NTk0LDExNCw5NywxMTgsMTAxLDUsMjEwLDEsNTksNDIyNiwxLDIxMCw0LDMsOTcsMTAxLDEwNSw0MjM2LDQyNDEsNDI0Niw5OSwxMTQsNTksMSwzMzIsMTAzLDk3LDU5LDEsOTM3LDk5LDExNCwxMTEsMTEwLDU5LDEsOTI3LDExMiwxMDIsNTksMyw1NTM0OSw1NjY0NiwxMDEsMTEwLDY3LDExNywxMTQsMTA4LDEyMSw0LDIsNjgsODEsNDI3Miw0Mjg1LDExMSwxMTcsOTgsMTA4LDEwMSw4MSwxMTcsMTExLDExNiwxMDEsNTksMSw4MjIwLDExNywxMTEsMTE2LDEwMSw1OSwxLDgyMTYsNTksMSwxMDgzNiw0LDIsOTksMTA4LDQzMDEsNDMwNiwxMTQsNTksMyw1NTM0OSw1NjQ5MCw5NywxMTUsMTA0LDUsMjE2LDEsNTksNDMxNCwxLDIxNiwxMDUsNCwyLDEwOCwxMDksNDMyMyw0MzMyLDEwMCwxMDEsNSwyMTMsMSw1OSw0MzMwLDEsMjEzLDEwMSwxMTUsNTksMSwxMDgwNywxMDksMTA4LDUsMjE0LDEsNTksNDM0NCwxLDIxNCwxMDEsMTE0LDQsMiw2Niw4MCw0MzU0LDQzODAsNCwyLDk3LDExNCw0MzYwLDQzNjQsMTE0LDU5LDEsODI1NCw5Nyw5OSw0LDIsMTAxLDEwNyw0MzcyLDQzNzUsNTksMSw5MTgyLDEwMSwxMTYsNTksMSw5MTQwLDk3LDExNCwxMDEsMTEwLDExNiwxMDQsMTAxLDExNSwxMDUsMTE1LDU5LDEsOTE4MCw0LDksOTcsOTksMTAyLDEwNCwxMDUsMTA4LDExMSwxMTQsMTE1LDQ0MTMsNDQyMiw0NDI2LDQ0MzEsNDQzNSw0NDM4LDQ0NDgsNDQ3MSw0NTYxLDExNCwxMTYsMTA1LDk3LDEwOCw2OCw1OSwxLDg3MDYsMTIxLDU5LDEsMTA1NSwxMTQsNTksMyw1NTM0OSw1NjU5NSwxMDUsNTksMSw5MzQsNTksMSw5MjgsMTE3LDExNSw3NywxMDUsMTEwLDExNywxMTUsNTksMSwxNzcsNCwyLDEwNSwxMTIsNDQ1NCw0NDY3LDExMCw5OSw5NywxMTQsMTAxLDExMiwxMDgsOTcsMTEwLDEwMSw1OSwxLDg0NjAsMTAyLDU5LDEsODQ3Myw0LDQsNTksMTAxLDEwNSwxMTEsNDQ4MSw0NDgzLDQ1MjYsNDUzMSwxLDEwOTM5LDk5LDEwMSwxMDAsMTAxLDExNSw0LDQsNTksNjksODMsODQsNDQ5OCw0NTAwLDQ1MDcsNDUxOSwxLDg4MjYsMTEzLDExNyw5NywxMDgsNTksMSwxMDkyNywxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MjgsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgzMCwxMDksMTAxLDU5LDEsODI0Myw0LDIsMTAwLDExMiw0NTM3LDQ1NDMsMTE3LDk5LDExNiw1OSwxLDg3MTksMTExLDExNCwxMTYsMTA1LDExMSwxMTAsNCwyLDU5LDk3LDQ1NTUsNDU1NywxLDg3NTksMTA4LDU5LDEsODczMyw0LDIsOTksMTA1LDQ1NjcsNDU3MiwxMTQsNTksMyw1NTM0OSw1NjQ5MSw1OSwxLDkzNiw0LDQsODUsMTAyLDExMSwxMTUsNDU4NSw0NTk0LDQ1OTksNDYwNCw3OSw4NCw1LDM0LDEsNTksNDU5MiwxLDM0LDExNCw1OSwzLDU1MzQ5LDU2NTk2LDExMiwxMDIsNTksMSw4NDc0LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDkyLDQsMTIsNjYsNjksOTcsOTksMTAxLDEwMiwxMDQsMTA1LDExMSwxMTQsMTE1LDExNyw0NjM2LDQ2NDIsNDY1MCw0NjgxLDQ3MDQsNDc2Myw0NzY3LDQ3NzEsNTA0Nyw1MDY5LDUwODEsNTA5NCw5NywxMTQsMTE0LDU5LDEsMTA1MTIsNzEsNSwxNzQsMSw1OSw0NjQ4LDEsMTc0LDQsMyw5OSwxMTAsMTE0LDQ2NTgsNDY2NCw0NjY4LDExNywxMTYsMTAxLDU5LDEsMzQwLDEwMyw1OSwxLDEwMjE5LDExNCw0LDIsNTksMTE2LDQ2NzUsNDY3NywxLDg2MDgsMTA4LDU5LDEsMTA1MTgsNCwzLDk3LDEwMSwxMjEsNDY4OSw0Njk1LDQ3MDEsMTE0LDExMSwxMTAsNTksMSwzNDQsMTAwLDEwNSwxMDgsNTksMSwzNDIsNTksMSwxMDU2LDQsMiw1OSwxMTgsNDcxMCw0NzEyLDEsODQ3NiwxMDEsMTE0LDExNSwxMDEsNCwyLDY5LDg1LDQ3MjIsNDc0OCw0LDIsMTA4LDExMyw0NzI4LDQ3MzYsMTAxLDEwOSwxMDEsMTEwLDExNiw1OSwxLDg3MTUsMTE3LDEwNSwxMDgsMTA1LDk4LDExNCwxMDUsMTE3LDEwOSw1OSwxLDg2NTEsMTEyLDY5LDExMywxMTcsMTA1LDEwOCwxMDUsOTgsMTE0LDEwNSwxMTcsMTA5LDU5LDEsMTA2MDcsMTE0LDU5LDEsODQ3NiwxMTEsNTksMSw5MjksMTAzLDEwNCwxMTYsNCw4LDY1LDY3LDY4LDcwLDg0LDg1LDg2LDk3LDQ3OTIsNDg0MCw0ODQ5LDQ5MDUsNDkxMiw0OTcyLDUwMjIsNTA0MCw0LDIsMTEwLDExNCw0Nzk4LDQ4MTEsMTAzLDEwOCwxMDEsNjYsMTE0LDk3LDk5LDEwNywxMDEsMTE2LDU5LDEsMTAyMTcsMTE0LDExMSwxMTksNCwzLDU5LDY2LDc2LDQ4MjIsNDgyNCw0ODI5LDEsODU5NCw5NywxMTQsNTksMSw4Njc3LDEwMSwxMDIsMTE2LDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NDQsMTAxLDEwNSwxMDgsMTA1LDExMCwxMDMsNTksMSw4OTY5LDExMSw0LDIsMTE3LDExOSw0ODU2LDQ4NjksOTgsMTA4LDEwMSw2NiwxMTQsOTcsOTksMTA3LDEwMSwxMTYsNTksMSwxMDIxNSwxMTAsNCwyLDg0LDg2LDQ4NzYsNDg4NywxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTg5LDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsNDg5OCw0OTAwLDEsODY0Miw5NywxMTQsNTksMSwxMDU4MSwxMDgsMTExLDExMSwxMTQsNTksMSw4OTcxLDQsMiwxMDEsMTE0LDQ5MTgsNDk0NCwxMDEsNCwzLDU5LDY1LDg2LDQ5MjcsNDkyOSw0OTM2LDEsODg2NiwxMTQsMTE0LDExMSwxMTksNTksMSw4NjE0LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTg3LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwzLDU5LDY2LDY5LDQ5NTgsNDk2MCw0OTY1LDEsODg4Myw5NywxMTQsNTksMSwxMDcwNCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4ODUsMTEyLDQsMyw2OCw4NCw4Niw0OTgxLDQ5OTMsNTAwNCwxMTEsMTE5LDExMCw4NiwxMDEsOTksMTE2LDExMSwxMTQsNTksMSwxMDU3NSwxMDEsMTAxLDg2LDEwMSw5OSwxMTYsMTExLDExNCw1OSwxLDEwNTg4LDEwMSw5OSwxMTYsMTExLDExNCw0LDIsNTksNjYsNTAxNSw1MDE3LDEsODYzOCw5NywxMTQsNTksMSwxMDU4MCwxMDEsOTksMTE2LDExMSwxMTQsNCwyLDU5LDY2LDUwMzMsNTAzNSwxLDg2NDAsOTcsMTE0LDU5LDEsMTA1NzksMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1OCw0LDIsMTEyLDExNyw1MDUzLDUwNTcsMTAyLDU5LDEsODQ3NywxMTAsMTAwLDczLDEwOSwxMTIsMTA4LDEwNSwxMDEsMTE1LDU5LDEsMTA2MDgsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2NjcsNCwyLDk5LDEwNCw1MDg3LDUwOTEsMTE0LDU5LDEsODQ3NSw1OSwxLDg2MjUsMTA4LDEwMSw2OCwxMDEsMTA4LDk3LDEyMSwxMDEsMTAwLDU5LDEsMTA3NDAsNCwxMyw3Miw3OSw5Nyw5OSwxMDIsMTA0LDEwNSwxMDksMTExLDExMywxMTUsMTE2LDExNyw1MTM0LDUxNTAsNTE1Nyw1MTY0LDUxOTgsNTIwMyw1MjU5LDUyNjUsNTI3Nyw1MjgzLDUzNzQsNTM4MCw1Mzg1LDQsMiw2Nyw5OSw1MTQwLDUxNDYsNzIsOTksMTIxLDU5LDEsMTA2NSwxMjEsNTksMSwxMDY0LDcwLDg0LDk5LDEyMSw1OSwxLDEwNjgsOTksMTE3LDExNiwxMDEsNTksMSwzNDYsNCw1LDU5LDk3LDEwMSwxMDUsMTIxLDUxNzYsNTE3OCw1MTg0LDUxOTAsNTE5NSwxLDEwOTQwLDExNCwxMTEsMTEwLDU5LDEsMzUyLDEwMCwxMDUsMTA4LDU5LDEsMzUwLDExNCw5OSw1OSwxLDM0OCw1OSwxLDEwNTcsMTE0LDU5LDMsNTUzNDksNTY1OTgsMTExLDExNCwxMTYsNCw0LDY4LDc2LDgyLDg1LDUyMTYsNTIyNyw1MjM4LDUyNTAsMTExLDExOSwxMTAsNjUsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5NSwxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTkyLDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk0LDExMiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTkzLDEwMywxMDksOTcsNTksMSw5MzEsOTcsMTA4LDEwOCw2NywxMDUsMTE0LDk5LDEwOCwxMDEsNTksMSw4NzI4LDExMiwxMDIsNTksMyw1NTM0OSw1NjY1MCw0LDIsMTE0LDExNyw1Mjg5LDUyOTMsMTE2LDU5LDEsODczMCw5NywxMTQsMTAxLDQsNCw1OSw3Myw4Myw4NSw1MzA2LDUzMDgsNTMyMiw1MzY3LDEsOTYzMywxMTAsMTE2LDEwMSwxMTQsMTE1LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsNTksMSw4ODUxLDExNyw0LDIsOTgsMTEyLDUzMjksNTM0NywxMTUsMTAxLDExNiw0LDIsNTksNjksNTMzOCw1MzQwLDEsODg0NywxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NDksMTAxLDExNCwxMTUsMTAxLDExNiw0LDIsNTksNjksNTM1OCw1MzYwLDEsODg0OCwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4NTAsMTEwLDEwNSwxMTEsMTEwLDU5LDEsODg1Miw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5NCw5NywxMTQsNTksMSw4OTAyLDQsNCw5OCw5OSwxMDksMTEyLDUzOTUsNTQyMCw1NDc1LDU0NzgsNCwyLDU5LDExNSw1NDAxLDU0MDMsMSw4OTEyLDEwMSwxMTYsNCwyLDU5LDY5LDU0MTEsNTQxMywxLDg5MTIsMTEzLDExNyw5NywxMDgsNTksMSw4ODM4LDQsMiw5OSwxMDQsNTQyNiw1NDY4LDEwMSwxMDEsMTAwLDExNSw0LDQsNTksNjksODMsODQsNTQ0MCw1NDQyLDU0NDksNTQ2MSwxLDg4MjcsMTEzLDExNyw5NywxMDgsNTksMSwxMDkyOCwxMDgsOTcsMTEwLDExNiw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MjksMTA1LDEwOCwxMDAsMTAxLDU5LDEsODgzMSw4NCwxMDQsOTcsMTE2LDU5LDEsODcxNSw1OSwxLDg3MjEsNCwzLDU5LDEwMSwxMTUsNTQ4Niw1NDg4LDU1MDcsMSw4OTEzLDExNCwxMTUsMTAxLDExNiw0LDIsNTksNjksNTQ5OCw1NTAwLDEsODgzNSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg4MzksMTAxLDExNiw1OSwxLDg5MTMsNCwxMSw3Miw4Miw4Myw5Nyw5OSwxMDIsMTA0LDEwNSwxMTEsMTE0LDExNSw1NTM2LDU1NDYsNTU1Miw1NTY3LDU1NzksNTYwMiw1NjA3LDU2NTUsNTY5NSw1NzAxLDU3MTEsNzksODIsNzgsNSwyMjIsMSw1OSw1NTQ0LDEsMjIyLDY1LDY4LDY5LDU5LDEsODQ4Miw0LDIsNzIsOTksNTU1OCw1NTYzLDk5LDEyMSw1OSwxLDEwMzUsMTIxLDU5LDEsMTA2Miw0LDIsOTgsMTE3LDU1NzMsNTU3Niw1OSwxLDksNTksMSw5MzIsNCwzLDk3LDEwMSwxMjEsNTU4Nyw1NTkzLDU1OTksMTE0LDExMSwxMTAsNTksMSwzNTYsMTAwLDEwNSwxMDgsNTksMSwzNTQsNTksMSwxMDU4LDExNCw1OSwzLDU1MzQ5LDU2NTk5LDQsMiwxMDEsMTA1LDU2MTMsNTYzMSw0LDIsMTE0LDExNiw1NjE5LDU2MjcsMTAxLDEwMiwxMTEsMTE0LDEwMSw1OSwxLDg3NTYsOTcsNTksMSw5MjAsNCwyLDk5LDExMCw1NjM3LDU2NDcsMTA3LDgzLDExMiw5Nyw5OSwxMDEsNTksMyw4Mjg3LDgyMDIsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDEsMTA4LDEwMCwxMDEsNCw0LDU5LDY5LDcwLDg0LDU2NjgsNTY3MCw1Njc3LDU2ODgsMSw4NzY0LDExMywxMTcsOTcsMTA4LDU5LDEsODc3MSwxMTcsMTA4LDEwOCw2OSwxMTMsMTE3LDk3LDEwOCw1OSwxLDg3NzMsMTA1LDEwOCwxMDAsMTAxLDU5LDEsODc3NiwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTEsMTA1LDExMiwxMDgsMTAxLDY4LDExMSwxMTYsNTksMSw4NDExLDQsMiw5OSwxMTYsNTcxNyw1NzIyLDExNCw1OSwzLDU1MzQ5LDU2NDk1LDExNCwxMTEsMTA3LDU5LDEsMzU4LDQsMTQsOTcsOTgsOTksMTAwLDEwMiwxMDMsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNyw1NzU4LDU3ODksNTgwNSw1ODIzLDU4MzAsNTgzNSw1ODQ2LDU4NTIsNTkyMSw1OTM3LDYwODksNjA5NSw2MTAxLDYxMDgsNCwyLDk5LDExNCw1NzY0LDU3NzQsMTE3LDExNiwxMDEsNSwyMTgsMSw1OSw1NzcyLDEsMjE4LDExNCw0LDIsNTksMTExLDU3ODEsNTc4MywxLDg2MDcsOTksMTA1LDExNCw1OSwxLDEwNTY5LDExNCw0LDIsOTksMTAxLDU3OTYsNTgwMCwxMjEsNTksMSwxMDM4LDExOCwxMDEsNTksMSwzNjQsNCwyLDEwNSwxMjEsNTgxMSw1ODIwLDExNCw5OSw1LDIxOSwxLDU5LDU4MTgsMSwyMTksNTksMSwxMDU5LDk4LDEwOCw5Nyw5OSw1OSwxLDM2OCwxMTQsNTksMyw1NTM0OSw1NjYwMCwxMTQsOTcsMTE4LDEwMSw1LDIxNywxLDU5LDU4NDQsMSwyMTcsOTcsOTksMTE0LDU5LDEsMzYyLDQsMiwxMDAsMTA1LDU4NTgsNTkwNSwxMDEsMTE0LDQsMiw2Niw4MCw1ODY2LDU4OTIsNCwyLDk3LDExNCw1ODcyLDU4NzYsMTE0LDU5LDEsOTUsOTcsOTksNCwyLDEwMSwxMDcsNTg4NCw1ODg3LDU5LDEsOTE4MywxMDEsMTE2LDU5LDEsOTE0MSw5NywxMTQsMTAxLDExMCwxMTYsMTA0LDEwMSwxMTUsMTA1LDExNSw1OSwxLDkxODEsMTExLDExMCw0LDIsNTksODAsNTkxMyw1OTE1LDEsODg5OSwxMDgsMTE3LDExNSw1OSwxLDg4NDYsNCwyLDEwMywxMTIsNTkyNyw1OTMyLDExMSwxMTAsNTksMSwzNzAsMTAyLDU5LDMsNTUzNDksNTY2NTIsNCw4LDY1LDY4LDY5LDg0LDk3LDEwMCwxMTIsMTE1LDU5NTUsNTk4NSw1OTk2LDYwMDksNjAyNiw2MDMzLDYwNDQsNjA3NSwxMTQsMTE0LDExMSwxMTksNCwzLDU5LDY2LDY4LDU5NjcsNTk2OSw1OTc0LDEsODU5Myw5NywxMTQsNTksMSwxMDUxNCwxMTEsMTE5LDExMCw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjQ1LDExMSwxMTksMTEwLDY1LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTcsMTEzLDExNywxMDUsMTA4LDEwNSw5OCwxMTQsMTA1LDExNywxMDksNTksMSwxMDYwNiwxMDEsMTAxLDQsMiw1OSw2NSw2MDE3LDYwMTksMSw4ODY5LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MTMsMTE0LDExNCwxMTEsMTE5LDU5LDEsODY1NywxMTEsMTE5LDExMCw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjYxLDEwMSwxMTQsNCwyLDc2LDgyLDYwNTIsNjA2MywxMDEsMTAyLDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk4LDEwNSwxMDMsMTA0LDExNiw2NSwxMTQsMTE0LDExMSwxMTksNTksMSw4NTk5LDEwNSw0LDIsNTksMTA4LDYwODIsNjA4NCwxLDk3OCwxMTEsMTEwLDU5LDEsOTMzLDEwNSwxMTAsMTAzLDU5LDEsMzY2LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk2LDEwNSwxMDgsMTAwLDEwMSw1OSwxLDM2MCwxMDksMTA4LDUsMjIwLDEsNTksNjExNSwxLDIyMCw0LDksNjgsOTgsOTksMTAwLDEwMSwxMDIsMTExLDExNSwxMTgsNjEzNyw2MTQzLDYxNDgsNjE1Miw2MTY2LDYyNTAsNjI1NSw2MjYxLDYyNjcsOTcsMTE1LDEwNCw1OSwxLDg4NzUsOTcsMTE0LDU5LDEsMTA5ODcsMTIxLDU5LDEsMTA0Miw5NywxMTUsMTA0LDQsMiw1OSwxMDgsNjE2MSw2MTYzLDEsODg3Myw1OSwxLDEwOTgyLDQsMiwxMDEsMTE0LDYxNzIsNjE3NSw1OSwxLDg4OTcsNCwzLDk4LDExNiwxMjEsNjE4Myw2MTg4LDYyMzgsOTcsMTE0LDU5LDEsODIxNCw0LDIsNTksMTA1LDYxOTQsNjE5NiwxLDgyMTQsOTksOTcsMTA4LDQsNCw2Niw3Niw4Myw4NCw2MjA5LDYyMTQsNjIyMCw2MjMxLDk3LDExNCw1OSwxLDg3MzksMTA1LDExMCwxMDEsNTksMSwxMjQsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsNTksMSwxMDA3MiwxMDUsMTA4LDEwMCwxMDEsNTksMSw4NzY4LDg0LDEwNCwxMDUsMTEwLDgzLDExMiw5Nyw5OSwxMDEsNTksMSw4MjAyLDExNCw1OSwzLDU1MzQ5LDU2NjAxLDExMiwxMDIsNTksMyw1NTM0OSw1NjY1Myw5OSwxMTQsNTksMyw1NTM0OSw1NjQ5NywxMDAsOTcsMTE1LDEwNCw1OSwxLDg4NzQsNCw1LDk5LDEwMSwxMDIsMTExLDExNSw2Mjg2LDYyOTIsNjI5OCw2MzAzLDYzMDksMTA1LDExNCw5OSw1OSwxLDM3MiwxMDAsMTAzLDEwMSw1OSwxLDg4OTYsMTE0LDU5LDMsNTUzNDksNTY2MDIsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjU0LDk5LDExNCw1OSwzLDU1MzQ5LDU2NDk4LDQsNCwxMDIsMTA1LDExMSwxMTUsNjMyNSw2MzMwLDYzMzMsNjMzOSwxMTQsNTksMyw1NTM0OSw1NjYwMyw1OSwxLDkyNiwxMTIsMTAyLDU5LDMsNTUzNDksNTY2NTUsOTksMTE0LDU5LDMsNTUzNDksNTY0OTksNCw5LDY1LDczLDg1LDk3LDk5LDEwMiwxMTEsMTE1LDExNyw2MzY1LDYzNzAsNjM3NSw2MzgwLDYzOTEsNjQwNSw2NDEwLDY0MTYsNjQyMiw5OSwxMjEsNTksMSwxMDcxLDk5LDEyMSw1OSwxLDEwMzEsOTksMTIxLDU5LDEsMTA3MCw5OSwxMTcsMTE2LDEwMSw1LDIyMSwxLDU5LDYzODksMSwyMjEsNCwyLDEwNSwxMjEsNjM5Nyw2NDAyLDExNCw5OSw1OSwxLDM3NCw1OSwxLDEwNjcsMTE0LDU5LDMsNTUzNDksNTY2MDQsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjU2LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTAwLDEwOSwxMDgsNTksMSwzNzYsNCw4LDcyLDk3LDk5LDEwMCwxMDEsMTAyLDExMSwxMTUsNjQ0NSw2NDUwLDY0NTcsNjQ3Miw2NDc3LDY1MDEsNjUwNSw2NTEwLDk5LDEyMSw1OSwxLDEwNDYsOTksMTE3LDExNiwxMDEsNTksMSwzNzcsNCwyLDk3LDEyMSw2NDYzLDY0NjksMTE0LDExMSwxMTAsNTksMSwzODEsNTksMSwxMDQ3LDExMSwxMTYsNTksMSwzNzksNCwyLDExNCwxMTYsNjQ4Myw2NDk3LDExMSw4NywxMDUsMTAwLDExNiwxMDQsODMsMTEyLDk3LDk5LDEwMSw1OSwxLDgyMDMsOTcsNTksMSw5MTgsMTE0LDU5LDEsODQ4OCwxMTIsMTAyLDU5LDEsODQ4NCw5OSwxMTQsNTksMyw1NTM0OSw1NjUwMSw0LDE2LDk3LDk4LDk5LDEwMSwxMDIsMTAzLDEwOCwxMDksMTEwLDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOSw2NTUwLDY1NjEsNjU2OCw2NjEyLDY2MjIsNjYzNCw2NjQ1LDY2NzIsNjY5OSw2ODU0LDY4NzAsNjkyMyw2OTMzLDY5NjMsNjk3NCw2OTgzLDk5LDExNywxMTYsMTAxLDUsMjI1LDEsNTksNjU1OSwxLDIyNSwxMTQsMTAxLDExOCwxMDEsNTksMSwyNTksNCw2LDU5LDY5LDEwMCwxMDUsMTE3LDEyMSw2NTgyLDY1ODQsNjU4OCw2NTkxLDY2MDAsNjYwOSwxLDg3NjYsNTksMyw4NzY2LDgxOSw1OSwxLDg3NjcsMTE0LDk5LDUsMjI2LDEsNTksNjU5OCwxLDIyNiwxMTYsMTAxLDUsMTgwLDEsNTksNjYwNywxLDE4MCw1OSwxLDEwNzIsMTA4LDEwNSwxMDMsNSwyMzAsMSw1OSw2NjIwLDEsMjMwLDQsMiw1OSwxMTQsNjYyOCw2NjMwLDEsODI4OSw1OSwzLDU1MzQ5LDU2NjA2LDExNCw5NywxMTgsMTAxLDUsMjI0LDEsNTksNjY0MywxLDIyNCw0LDIsMTAxLDExMiw2NjUxLDY2NjcsNCwyLDEwMiwxMTIsNjY1Nyw2NjYzLDExNSwxMjEsMTA5LDU5LDEsODUwMSwxMDQsNTksMSw4NTAxLDEwNCw5Nyw1OSwxLDk0NSw0LDIsOTcsMTEyLDY2NzgsNjY5Miw0LDIsOTksMTA4LDY2ODQsNjY4OCwxMTQsNTksMSwyNTcsMTAzLDU5LDEsMTA4MTUsNSwzOCwxLDU5LDY2OTcsMSwzOCw0LDIsMTAwLDEwMyw2NzA1LDY3MzcsNCw1LDU5LDk3LDEwMCwxMTUsMTE4LDY3MTcsNjcxOSw2NzI0LDY3MjcsNjczNCwxLDg3NDMsMTEwLDEwMCw1OSwxLDEwODM3LDU5LDEsMTA4NDQsMTA4LDExMSwxMTIsMTAxLDU5LDEsMTA4NDAsNTksMSwxMDg0Miw0LDcsNTksMTAxLDEwOCwxMDksMTE0LDExNSwxMjIsNjc1Myw2NzU1LDY3NTgsNjc2Miw2ODE0LDY4MzUsNjg0OCwxLDg3MzYsNTksMSwxMDY2MCwxMDEsNTksMSw4NzM2LDExNSwxMDAsNCwyLDU5LDk3LDY3NzAsNjc3MiwxLDg3MzcsNCw4LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsNjc5MCw2NzkzLDY3OTYsNjc5OSw2ODAyLDY4MDUsNjgwOCw2ODExLDU5LDEsMTA2NjQsNTksMSwxMDY2NSw1OSwxLDEwNjY2LDU5LDEsMTA2NjcsNTksMSwxMDY2OCw1OSwxLDEwNjY5LDU5LDEsMTA2NzAsNTksMSwxMDY3MSwxMTYsNCwyLDU5LDExOCw2ODIxLDY4MjMsMSw4NzM1LDk4LDQsMiw1OSwxMDAsNjgzMCw2ODMyLDEsODg5NCw1OSwxLDEwNjUzLDQsMiwxMTIsMTE2LDY4NDEsNjg0NSwxMDQsNTksMSw4NzM4LDU5LDEsMTk3LDk3LDExNCwxMTQsNTksMSw5MDg0LDQsMiwxMDMsMTEyLDY4NjAsNjg2NSwxMTEsMTEwLDU5LDEsMjYxLDEwMiw1OSwzLDU1MzQ5LDU2NjU4LDQsNyw1OSw2OSw5NywxMDEsMTA1LDExMSwxMTIsNjg4Niw2ODg4LDY4OTEsNjg5Nyw2OTAwLDY5MDQsNjkwOCwxLDg3NzYsNTksMSwxMDg2NCw5OSwxMDUsMTE0LDU5LDEsMTA4NjMsNTksMSw4Nzc4LDEwMCw1OSwxLDg3NzksMTE1LDU5LDEsMzksMTE0LDExMSwxMjAsNCwyLDU5LDEwMSw2OTE3LDY5MTksMSw4Nzc2LDExMyw1OSwxLDg3NzgsMTA1LDExMCwxMDMsNSwyMjksMSw1OSw2OTMxLDEsMjI5LDQsMyw5OSwxMTYsMTIxLDY5NDEsNjk0Niw2OTQ5LDExNCw1OSwzLDU1MzQ5LDU2NTAyLDU5LDEsNDIsMTA5LDExMiw0LDIsNTksMTAxLDY5NTcsNjk1OSwxLDg3NzYsMTEzLDU5LDEsODc4MSwxMDUsMTA4LDEwMCwxMDEsNSwyMjcsMSw1OSw2OTcyLDEsMjI3LDEwOSwxMDgsNSwyMjgsMSw1OSw2OTgxLDEsMjI4LDQsMiw5OSwxMDUsNjk4OSw2OTk3LDExMSwxMTAsMTA1LDExMCwxMTYsNTksMSw4NzU1LDExMCwxMTYsNTksMSwxMDc2OSw0LDE2LDc4LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwNSwxMDcsMTA4LDExMCwxMTEsMTEyLDExNCwxMTUsMTE3LDcwMzYsNzA0MSw3MTE5LDcxMzUsNzE0OSw3MTU1LDcyMTksNzIyNCw3MzQ3LDczNTQsNzQ2Myw3NDg5LDc3ODYsNzc5Myw3ODE0LDc4NjYsMTExLDExNiw1OSwxLDEwOTg5LDQsMiw5OSwxMTQsNzA0Nyw3MDk0LDEwNyw0LDQsOTksMTAxLDExMiwxMTUsNzA1OCw3MDY0LDcwNzMsNzA4MCwxMTEsMTEwLDEwMyw1OSwxLDg3ODAsMTEyLDExNSwxMDUsMTA4LDExMSwxMTAsNTksMSwxMDE0LDExNCwxMDUsMTA5LDEwMSw1OSwxLDgyNDUsMTA1LDEwOSw0LDIsNTksMTAxLDcwODgsNzA5MCwxLDg3NjUsMTEzLDU5LDEsODkwOSw0LDIsMTE4LDExOSw3MTAwLDcxMDUsMTAxLDEwMSw1OSwxLDg4OTMsMTAxLDEwMCw0LDIsNTksMTAzLDcxMTMsNzExNSwxLDg5NjUsMTAxLDU5LDEsODk2NSwxMTQsMTA3LDQsMiw1OSwxMTYsNzEyNyw3MTI5LDEsOTE0MSw5OCwxMTQsMTA3LDU5LDEsOTE0Miw0LDIsMTExLDEyMSw3MTQxLDcxNDYsMTEwLDEwMyw1OSwxLDg3ODAsNTksMSwxMDczLDExMywxMTcsMTExLDU5LDEsODIyMiw0LDUsOTksMTA5LDExMiwxMTQsMTE2LDcxNjcsNzE4MSw3MTg4LDcxOTMsNzE5OSw5NywxMTcsMTE1LDQsMiw1OSwxMDEsNzE3Niw3MTc4LDEsODc1Nyw1OSwxLDg3NTcsMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzIsMTE1LDEwNSw1OSwxLDEwMTQsMTEwLDExMSwxMTcsNTksMSw4NDkyLDQsMyw5NywxMDQsMTE5LDcyMDcsNzIxMCw3MjEzLDU5LDEsOTQ2LDU5LDEsODUwMiwxMDEsMTAxLDExMCw1OSwxLDg4MTIsMTE0LDU5LDMsNTUzNDksNTY2MDcsMTAzLDQsNyw5OSwxMTEsMTE1LDExNiwxMTcsMTE4LDExOSw3MjQxLDcyNjIsNzI4OCw3MzA1LDczMjgsNzMzNSw3MzQwLDQsMyw5NywxMDUsMTE3LDcyNDksNzI1Myw3MjU4LDExMiw1OSwxLDg4OTgsMTE0LDk5LDU5LDEsOTcxMSwxMTIsNTksMSw4ODk5LDQsMywxMDAsMTEyLDExNiw3MjcwLDcyNzUsNzI4MSwxMTEsMTE2LDU5LDEsMTA3NTIsMTA4LDExNywxMTUsNTksMSwxMDc1MywxMDUsMTA5LDEwMSwxMTUsNTksMSwxMDc1NCw0LDIsMTEzLDExNiw3Mjk0LDczMDAsOTksMTE3LDExMiw1OSwxLDEwNzU4LDk3LDExNCw1OSwxLDk3MzMsMTE0LDEwNSw5NywxMTAsMTAzLDEwOCwxMDEsNCwyLDEwMCwxMTcsNzMxOCw3MzI0LDExMSwxMTksMTEwLDU5LDEsOTY2MSwxMTIsNTksMSw5NjUxLDExMiwxMDgsMTE3LDExNSw1OSwxLDEwNzU2LDEwMSwxMDEsNTksMSw4ODk3LDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg4OTYsOTcsMTE0LDExMSwxMTksNTksMSwxMDUwOSw0LDMsOTcsMTA3LDExMSw3MzYyLDc0MzYsNzQ1OCw0LDIsOTksMTEwLDczNjgsNzQzMiwxMDcsNCwzLDEwOCwxMTUsMTE2LDczNzcsNzM4Niw3Mzk0LDExMSwxMjIsMTAxLDExMCwxMDMsMTAxLDU5LDEsMTA3MzEsMTEzLDExNyw5NywxMTQsMTAxLDU5LDEsOTY0MiwxMTQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDQsNTksMTAwLDEwOCwxMTQsNzQxMSw3NDEzLDc0MTksNzQyNSwxLDk2NTIsMTExLDExOSwxMTAsNTksMSw5NjYyLDEwMSwxMDIsMTE2LDU5LDEsOTY2NiwxMDUsMTAzLDEwNCwxMTYsNTksMSw5NjU2LDEwNyw1OSwxLDkyNTEsNCwyLDQ5LDUxLDc0NDIsNzQ1NCw0LDIsNTAsNTIsNzQ0OCw3NDUxLDU5LDEsOTYxOCw1OSwxLDk2MTcsNTIsNTksMSw5NjE5LDk5LDEwNyw1OSwxLDk2MDgsNCwyLDEwMSwxMTEsNzQ2OSw3NDg1LDQsMiw1OSwxMTMsNzQ3NSw3NDc4LDMsNjEsODQyMSwxMTcsMTA1LDExOCw1OSwzLDg4MDEsODQyMSwxMTYsNTksMSw4OTc2LDQsNCwxMTIsMTE2LDExOSwxMjAsNzQ5OSw3NTA0LDc1MTcsNzUyMywxMDIsNTksMyw1NTM0OSw1NjY1OSw0LDIsNTksMTE2LDc1MTAsNzUxMiwxLDg4NjksMTExLDEwOSw1OSwxLDg4NjksMTE2LDEwNSwxMDEsNTksMSw4OTA0LDQsMTIsNjgsNzIsODUsODYsOTgsMTAwLDEwNCwxMDksMTEyLDExNiwxMTcsMTE4LDc1NDksNzU3MSw3NTk3LDc2MTksNzY1NSw3NjYwLDc2ODIsNzcwOCw3NzE1LDc3MjEsNzcyOCw3NzUwLDQsNCw3Niw4MiwxMDgsMTE0LDc1NTksNzU2Miw3NTY1LDc1NjgsNTksMSw5NTU5LDU5LDEsOTU1Niw1OSwxLDk1NTgsNTksMSw5NTU1LDQsNSw1OSw2OCw4NSwxMDAsMTE3LDc1ODMsNzU4NSw3NTg4LDc1OTEsNzU5NCwxLDk1NTIsNTksMSw5NTc0LDU5LDEsOTU3Nyw1OSwxLDk1NzIsNTksMSw5NTc1LDQsNCw3Niw4MiwxMDgsMTE0LDc2MDcsNzYxMCw3NjEzLDc2MTYsNTksMSw5NTY1LDU5LDEsOTU2Miw1OSwxLDk1NjQsNTksMSw5NTYxLDQsNyw1OSw3Miw3Niw4MiwxMDQsMTA4LDExNCw3NjM1LDc2MzcsNzY0MCw3NjQzLDc2NDYsNzY0OSw3NjUyLDEsOTU1Myw1OSwxLDk1ODAsNTksMSw5NTcxLDU5LDEsOTU2OCw1OSwxLDk1NzksNTksMSw5NTcwLDU5LDEsOTU2NywxMTEsMTIwLDU5LDEsMTA2OTcsNCw0LDc2LDgyLDEwOCwxMTQsNzY3MCw3NjczLDc2NzYsNzY3OSw1OSwxLDk1NTcsNTksMSw5NTU0LDU5LDEsOTQ4OCw1OSwxLDk0ODQsNCw1LDU5LDY4LDg1LDEwMCwxMTcsNzY5NCw3Njk2LDc2OTksNzcwMiw3NzA1LDEsOTQ3Miw1OSwxLDk1NzMsNTksMSw5NTc2LDU5LDEsOTUxNiw1OSwxLDk1MjQsMTA1LDExMCwxMTcsMTE1LDU5LDEsODg2MywxMDgsMTE3LDExNSw1OSwxLDg4NjIsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODg2NCw0LDQsNzYsODIsMTA4LDExNCw3NzM4LDc3NDEsNzc0NCw3NzQ3LDU5LDEsOTU2Myw1OSwxLDk1NjAsNTksMSw5NDk2LDU5LDEsOTQ5Miw0LDcsNTksNzIsNzYsODIsMTA0LDEwOCwxMTQsNzc2Niw3NzY4LDc3NzEsNzc3NCw3Nzc3LDc3ODAsNzc4MywxLDk0NzQsNTksMSw5NTc4LDU5LDEsOTU2OSw1OSwxLDk1NjYsNTksMSw5NTMyLDU5LDEsOTUwOCw1OSwxLDk1MDAsMTE0LDEwNSwxMDksMTAxLDU5LDEsODI0NSw0LDIsMTAxLDExOCw3Nzk5LDc4MDQsMTE4LDEwMSw1OSwxLDcyOCw5OCw5NywxMTQsNSwxNjYsMSw1OSw3ODEyLDEsMTY2LDQsNCw5OSwxMDEsMTA1LDExMSw3ODI0LDc4MjksNzgzNCw3ODQ2LDExNCw1OSwzLDU1MzQ5LDU2NTAzLDEwOSwxMDUsNTksMSw4MjcxLDEwOSw0LDIsNTksMTAxLDc4NDEsNzg0MywxLDg3NjUsNTksMSw4OTA5LDEwOCw0LDMsNTksOTgsMTA0LDc4NTUsNzg1Nyw3ODYwLDEsOTIsNTksMSwxMDY5MywxMTUsMTE3LDk4LDU5LDEsMTAxODQsNCwyLDEwOCwxMDksNzg3Miw3ODg1LDEwOCw0LDIsNTksMTAxLDc4NzksNzg4MSwxLDgyMjYsMTE2LDU5LDEsODIyNiwxMTIsNCwzLDU5LDY5LDEwMSw3ODk0LDc4OTYsNzg5OSwxLDg3ODIsNTksMSwxMDkyNiw0LDIsNTksMTEzLDc5MDUsNzkwNywxLDg3ODMsNTksMSw4NzgzLDQsMTUsOTcsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTExLDExNCwxMTUsMTE2LDExNywxMTksMTIxLDc5NDIsODAyMSw4MDc1LDgwODAsODEyMSw4MTI2LDgxNTcsODI3OSw4Mjk1LDg0MzAsODQ0Niw4NDg1LDg0OTEsODcwNyw4NzI2LDQsMyw5OSwxMTIsMTE0LDc5NTAsNzk1Niw4MDA3LDExNywxMTYsMTAxLDU5LDEsMjYzLDQsNiw1OSw5Nyw5OCw5OSwxMDAsMTE1LDc5NzAsNzk3Miw3OTc3LDc5ODQsNzk5OCw4MDAzLDEsODc0NSwxMTAsMTAwLDU5LDEsMTA4MjAsMTE0LDk5LDExNywxMTIsNTksMSwxMDgyNSw0LDIsOTcsMTE3LDc5OTAsNzk5NCwxMTIsNTksMSwxMDgyNywxMTIsNTksMSwxMDgyMywxMTEsMTE2LDU5LDEsMTA4MTYsNTksMyw4NzQ1LDY1MDI0LDQsMiwxMDEsMTExLDgwMTMsODAxNywxMTYsNTksMSw4MjU3LDExMCw1OSwxLDcxMSw0LDQsOTcsMTAxLDEwNSwxMTcsODAzMSw4MDQ2LDgwNTYsODA2MSw0LDIsMTEyLDExNCw4MDM3LDgwNDEsMTE1LDU5LDEsMTA4MjksMTExLDExMCw1OSwxLDI2OSwxMDAsMTA1LDEwOCw1LDIzMSwxLDU5LDgwNTQsMSwyMzEsMTE0LDk5LDU5LDEsMjY1LDExMiwxMTUsNCwyLDU5LDExNSw4MDY5LDgwNzEsMSwxMDgyOCwxMDksNTksMSwxMDgzMiwxMTEsMTE2LDU5LDEsMjY3LDQsMywxMDAsMTA5LDExMCw4MDg4LDgwOTcsODEwNCwxMDUsMTA4LDUsMTg0LDEsNTksODA5NSwxLDE4NCwxMTIsMTE2LDEyMSwxMTgsNTksMSwxMDY3NCwxMTYsNSwxNjIsMiw1OSwxMDEsODExMiw4MTE0LDEsMTYyLDExNCwxMDAsMTExLDExNiw1OSwxLDE4MywxMTQsNTksMyw1NTM0OSw1NjYwOCw0LDMsOTksMTAxLDEwNSw4MTM0LDgxMzgsODE1NCwxMjEsNTksMSwxMDk1LDk5LDEwNyw0LDIsNTksMTA5LDgxNDYsODE0OCwxLDEwMDAzLDk3LDExNCwxMDcsNTksMSwxMDAwMyw1OSwxLDk2NywxMTQsNCw3LDU5LDY5LDk5LDEwMSwxMDIsMTA5LDExNSw4MTc0LDgxNzYsODE3OSw4MjU4LDgyNjEsODI2OCw4MjczLDEsOTY3NSw1OSwxLDEwNjkxLDQsMyw1OSwxMDEsMTA4LDgxODcsODE4OSw4MTkzLDEsNzEwLDExMyw1OSwxLDg3OTEsMTAxLDQsMiw5NywxMDAsODIwMCw4MjIzLDExNCwxMTQsMTExLDExOSw0LDIsMTA4LDExNCw4MjEwLDgyMTYsMTAxLDEwMiwxMTYsNTksMSw4NjM0LDEwNSwxMDMsMTA0LDExNiw1OSwxLDg2MzUsNCw1LDgyLDgzLDk3LDk5LDEwMCw4MjM1LDgyMzgsODI0MSw4MjQ2LDgyNTIsNTksMSwxNzQsNTksMSw5NDE2LDExNSwxMTYsNTksMSw4ODU5LDEwNSwxMTQsOTksNTksMSw4ODU4LDk3LDExNSwxMDQsNTksMSw4ODYxLDU5LDEsODc5MSwxMTAsMTA1LDExMCwxMTYsNTksMSwxMDc2OCwxMDUsMTAwLDU5LDEsMTA5OTEsOTksMTA1LDExNCw1OSwxLDEwNjkwLDExNyw5OCwxMTUsNCwyLDU5LDExNyw4Mjg4LDgyOTAsMSw5ODI3LDEwNSwxMTYsNTksMSw5ODI3LDQsNCwxMDgsMTA5LDExMCwxMTIsODMwNSw4MzI2LDgzNzYsODQwMCwxMTEsMTEwLDQsMiw1OSwxMDEsODMxMyw4MzE1LDEsNTgsNCwyLDU5LDExMyw4MzIxLDgzMjMsMSw4Nzg4LDU5LDEsODc4OCw0LDIsMTA5LDExMiw4MzMyLDgzNDQsOTcsNCwyLDU5LDExNiw4MzM5LDgzNDEsMSw0NCw1OSwxLDY0LDQsMyw1OSwxMDIsMTA4LDgzNTIsODM1NCw4MzU4LDEsODcwNSwxMTAsNTksMSw4NzI4LDEwMSw0LDIsMTA5LDEyMCw4MzY1LDgzNzEsMTAxLDExMCwxMTYsNTksMSw4NzA1LDEwMSwxMTUsNTksMSw4NDUwLDQsMiwxMDMsMTA1LDgzODIsODM5NSw0LDIsNTksMTAwLDgzODgsODM5MCwxLDg3NzMsMTExLDExNiw1OSwxLDEwODYxLDExMCwxMTYsNTksMSw4NzUwLDQsMywxMDIsMTE0LDEyMSw4NDA4LDg0MTIsODQxNyw1OSwzLDU1MzQ5LDU2NjYwLDExMSwxMDAsNTksMSw4NzIwLDUsMTY5LDIsNTksMTE1LDg0MjQsODQyNiwxLDE2OSwxMTQsNTksMSw4NDcxLDQsMiw5NywxMTEsODQzNiw4NDQxLDExNCwxMTQsNTksMSw4NjI5LDExNSwxMTUsNTksMSwxMDAwNyw0LDIsOTksMTE3LDg0NTIsODQ1NywxMTQsNTksMyw1NTM0OSw1NjUwNCw0LDIsOTgsMTEyLDg0NjMsODQ3NCw0LDIsNTksMTAxLDg0NjksODQ3MSwxLDEwOTU5LDU5LDEsMTA5NjEsNCwyLDU5LDEwMSw4NDgwLDg0ODIsMSwxMDk2MCw1OSwxLDEwOTYyLDEwMCwxMTEsMTE2LDU5LDEsODk0Myw0LDcsMTAwLDEwMSwxMDgsMTEyLDExNCwxMTgsMTE5LDg1MDcsODUyMiw4NTM2LDg1NTAsODYwMCw4Njk3LDg3MDIsOTcsMTE0LDExNCw0LDIsMTA4LDExNCw4NTE2LDg1MTksNTksMSwxMDU1Miw1OSwxLDEwNTQ5LDQsMiwxMTIsMTE1LDg1MjgsODUzMiwxMTQsNTksMSw4OTI2LDk5LDU5LDEsODkyNyw5NywxMTQsMTE0LDQsMiw1OSwxMTIsODU0NSw4NTQ3LDEsODYzMCw1OSwxLDEwNTU3LDQsNiw1OSw5OCw5OSwxMDAsMTExLDExNSw4NTY0LDg1NjYsODU3Myw4NTg3LDg1OTIsODU5NiwxLDg3NDYsMTE0LDk5LDk3LDExMiw1OSwxLDEwODI0LDQsMiw5NywxMTcsODU3OSw4NTgzLDExMiw1OSwxLDEwODIyLDExMiw1OSwxLDEwODI2LDExMSwxMTYsNTksMSw4ODQ1LDExNCw1OSwxLDEwODIxLDU5LDMsODc0Niw2NTAyNCw0LDQsOTcsMTA4LDExNCwxMTgsODYxMCw4NjIzLDg2NjMsODY3MiwxMTQsMTE0LDQsMiw1OSwxMDksODYxOCw4NjIwLDEsODYzMSw1OSwxLDEwNTU2LDEyMSw0LDMsMTAxLDExOCwxMTksODYzMiw4NjUxLDg2NTYsMTEzLDQsMiwxMTIsMTE1LDg2MzksODY0NSwxMTQsMTAxLDk5LDU5LDEsODkyNiwxMTcsOTksOTksNTksMSw4OTI3LDEwMSwxMDEsNTksMSw4OTEwLDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg5MTEsMTAxLDExMCw1LDE2NCwxLDU5LDg2NzAsMSwxNjQsMTAxLDk3LDExNCwxMTQsMTExLDExOSw0LDIsMTA4LDExNCw4Njg0LDg2OTAsMTAxLDEwMiwxMTYsNTksMSw4NjMwLDEwNSwxMDMsMTA0LDExNiw1OSwxLDg2MzEsMTAxLDEwMSw1OSwxLDg5MTAsMTAxLDEwMCw1OSwxLDg5MTEsNCwyLDk5LDEwNSw4NzEzLDg3MjEsMTExLDExMCwxMDUsMTEwLDExNiw1OSwxLDg3NTQsMTEwLDExNiw1OSwxLDg3NTMsMTA4LDk5LDExNiwxMjEsNTksMSw5MDA1LDQsMTksNjUsNzIsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDYsMTA4LDExMSwxMTQsMTE1LDExNiwxMTcsMTE5LDEyMiw4NzczLDg3NzgsODc4Myw4ODIxLDg4MzksODg1NCw4ODg3LDg5MTQsODkzMCw4OTQ0LDkwMzYsOTA0MSw5MDU4LDkxOTcsOTIyNyw5MjU4LDkyODEsOTI5Nyw5MzA1LDExNCwxMTQsNTksMSw4NjU5LDk3LDExNCw1OSwxLDEwNTk3LDQsNCwxMDMsMTA4LDExNCwxMTUsODc5Myw4Nzk5LDg4MDUsODgwOSwxMDMsMTAxLDExNCw1OSwxLDgyMjQsMTAxLDExNiwxMDQsNTksMSw4NTA0LDExNCw1OSwxLDg1OTUsMTA0LDQsMiw1OSwxMTgsODgxNiw4ODE4LDEsODIwOCw1OSwxLDg4NjcsNCwyLDEwNywxMDgsODgyNyw4ODM0LDk3LDExNCwxMTEsMTE5LDU5LDEsMTA1MTEsOTcsOTksNTksMSw3MzMsNCwyLDk3LDEyMSw4ODQ1LDg4NTEsMTE0LDExMSwxMTAsNTksMSwyNzEsNTksMSwxMDc2LDQsMyw1OSw5NywxMTEsODg2Miw4ODY0LDg4ODAsMSw4NTE4LDQsMiwxMDMsMTE0LDg4NzAsODg3NiwxMDMsMTAxLDExNCw1OSwxLDgyMjUsMTE0LDU5LDEsODY1MCwxMTYsMTE1LDEwMSwxMTMsNTksMSwxMDg3MSw0LDMsMTAzLDEwOCwxMDksODg5NSw4OTAyLDg5MDcsNSwxNzYsMSw1OSw4OTAwLDEsMTc2LDExNiw5Nyw1OSwxLDk0OCwxMTIsMTE2LDEyMSwxMTgsNTksMSwxMDY3Myw0LDIsMTA1LDExNCw4OTIwLDg5MjYsMTE1LDEwNCwxMTYsNTksMSwxMDYyMyw1OSwzLDU1MzQ5LDU2NjA5LDk3LDExNCw0LDIsMTA4LDExNCw4OTM4LDg5NDEsNTksMSw4NjQzLDU5LDEsODY0Miw0LDUsOTcsMTAxLDEwMywxMTUsMTE4LDg5NTYsODk4Niw4OTg5LDg5OTYsOTAwMSwxMDksNCwzLDU5LDExMSwxMTUsODk2NSw4OTY3LDg5ODMsMSw4OTAwLDExMCwxMDAsNCwyLDU5LDExNSw4OTc1LDg5NzcsMSw4OTAwLDExNywxMDUsMTE2LDU5LDEsOTgzMCw1OSwxLDk4MzAsNTksMSwxNjgsOTcsMTA5LDEwOSw5Nyw1OSwxLDk4OSwxMDUsMTEwLDU5LDEsODk0Niw0LDMsNTksMTA1LDExMSw5MDA5LDkwMTEsOTAzMSwxLDI0NywxMDAsMTAxLDUsMjQ3LDIsNTksMTExLDkwMjAsOTAyMiwxLDI0NywxMTAsMTE2LDEwNSwxMDksMTAxLDExNSw1OSwxLDg5MDMsMTEwLDEyMCw1OSwxLDg5MDMsOTksMTIxLDU5LDEsMTEwNiw5OSw0LDIsMTExLDExNCw5MDQ4LDkwNTMsMTE0LDExMCw1OSwxLDg5OTAsMTExLDExMiw1OSwxLDg5NzMsNCw1LDEwOCwxMTIsMTE2LDExNywxMTksOTA3MCw5MDc2LDkwODEsOTEzMCw5MTQ0LDEwOCw5NywxMTQsNTksMSwzNiwxMDIsNTksMyw1NTM0OSw1NjY2MSw0LDUsNTksMTAxLDEwOSwxMTIsMTE1LDkwOTMsOTA5NSw5MTA5LDkxMTYsOTEyMiwxLDcyOSwxMTMsNCwyLDU5LDEwMCw5MTAyLDkxMDQsMSw4Nzg0LDExMSwxMTYsNTksMSw4Nzg1LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg3NjAsMTA4LDExNywxMTUsNTksMSw4NzI0LDExMywxMTcsOTcsMTE0LDEwMSw1OSwxLDg4NjUsOTgsMTA4LDEwMSw5OCw5NywxMTQsMTE5LDEwMSwxMDAsMTAzLDEwMSw1OSwxLDg5NjYsMTEwLDQsMyw5NywxMDAsMTA0LDkxNTMsOTE2MCw5MTcyLDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTUsMTExLDExOSwxMTAsOTcsMTE0LDExNCwxMTEsMTE5LDExNSw1OSwxLDg2NTAsOTcsMTE0LDExMiwxMTEsMTExLDExMCw0LDIsMTA4LDExNCw5MTg0LDkxOTAsMTAxLDEwMiwxMTYsNTksMSw4NjQzLDEwNSwxMDMsMTA0LDExNiw1OSwxLDg2NDIsNCwyLDk4LDk5LDkyMDMsOTIxMSwxMDcsOTcsMTE0LDExMSwxMTksNTksMSwxMDUxMiw0LDIsMTExLDExNCw5MjE3LDkyMjIsMTE0LDExMCw1OSwxLDg5OTEsMTExLDExMiw1OSwxLDg5NzIsNCwzLDk5LDExMSwxMTYsOTIzNSw5MjQ4LDkyNTIsNCwyLDExNCwxMjEsOTI0MSw5MjQ1LDU5LDMsNTUzNDksNTY1MDUsNTksMSwxMTA5LDEwOCw1OSwxLDEwNzQyLDExNCwxMTEsMTA3LDU5LDEsMjczLDQsMiwxMDAsMTE0LDkyNjQsOTI2OSwxMTEsMTE2LDU5LDEsODk0NSwxMDUsNCwyLDU5LDEwMiw5Mjc2LDkyNzgsMSw5NjYzLDU5LDEsOTY2Miw0LDIsOTcsMTA0LDkyODcsOTI5MiwxMTQsMTE0LDU5LDEsODY5Myw5NywxMTQsNTksMSwxMDYwNyw5NywxMTAsMTAzLDEwOCwxMDEsNTksMSwxMDY2Miw0LDIsOTksMTA1LDkzMTEsOTMxNSwxMjEsNTksMSwxMTE5LDEwMywxMTQsOTcsMTE0LDExNCw1OSwxLDEwMjM5LDQsMTgsNjgsOTcsOTksMTAwLDEwMSwxMDIsMTAzLDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMjAsOTM2MSw5Mzc2LDkzOTgsOTQzOSw5NDQ0LDk0NDcsOTQ2Miw5NDk1LDk1MzEsOTU4NSw5NTk4LDk2MTQsOTY1OSw5NzU1LDk3NzEsOTc5Miw5ODA4LDk4MjYsNCwyLDY4LDExMSw5MzY3LDkzNzIsMTExLDExNiw1OSwxLDEwODcxLDExNiw1OSwxLDg3ODUsNCwyLDk5LDExNSw5MzgyLDkzOTIsMTE3LDExNiwxMDEsNSwyMzMsMSw1OSw5MzkwLDEsMjMzLDExNiwxMDEsMTE0LDU5LDEsMTA4NjIsNCw0LDk3LDEwNSwxMTEsMTIxLDk0MDgsOTQxNCw5NDMwLDk0MzYsMTE0LDExMSwxMTAsNTksMSwyODMsMTE0LDQsMiw1OSw5OSw5NDIxLDk0MjMsMSw4NzkwLDUsMjM0LDEsNTksOTQyOCwxLDIzNCwxMDgsMTExLDExMCw1OSwxLDg3ODksNTksMSwxMTAxLDExMSwxMTYsNTksMSwyNzksNTksMSw4NTE5LDQsMiw2OCwxMTQsOTQ1Myw5NDU4LDExMSwxMTYsNTksMSw4Nzg2LDU5LDMsNTUzNDksNTY2MTAsNCwzLDU5LDExNCwxMTUsOTQ3MCw5NDcyLDk0ODIsMSwxMDkwNiw5NywxMTgsMTAxLDUsMjMyLDEsNTksOTQ4MCwxLDIzMiw0LDIsNTksMTAwLDk0ODgsOTQ5MCwxLDEwOTAyLDExMSwxMTYsNTksMSwxMDkwNCw0LDQsNTksMTA1LDEwOCwxMTUsOTUwNSw5NTA3LDk1MTUsOTUxOCwxLDEwOTA1LDExMCwxMTYsMTAxLDExNCwxMTUsNTksMSw5MTkxLDU5LDEsODQ2Nyw0LDIsNTksMTAwLDk1MjQsOTUyNiwxLDEwOTAxLDExMSwxMTYsNTksMSwxMDkwMyw0LDMsOTcsMTEyLDExNSw5NTM5LDk1NDQsOTU2NCw5OSwxMTQsNTksMSwyNzUsMTE2LDEyMSw0LDMsNTksMTE1LDExOCw5NTU0LDk1NTYsOTU2MSwxLDg3MDksMTAxLDExNiw1OSwxLDg3MDksNTksMSw4NzA5LDExMiw0LDIsNDksNTksOTU3MSw5NTgzLDQsMiw1MSw1Miw5NTc3LDk1ODAsNTksMSw4MTk2LDU5LDEsODE5NywxLDgxOTUsNCwyLDEwMywxMTUsOTU5MSw5NTk0LDU5LDEsMzMxLDExMiw1OSwxLDgxOTQsNCwyLDEwMywxMTIsOTYwNCw5NjA5LDExMSwxMTAsNTksMSwyODEsMTAyLDU5LDMsNTUzNDksNTY2NjIsNCwzLDk3LDEwOCwxMTUsOTYyMiw5NjM1LDk2NDAsMTE0LDQsMiw1OSwxMTUsOTYyOSw5NjMxLDEsODkxNywxMDgsNTksMSwxMDcyMywxMTcsMTE1LDU5LDEsMTA4NjUsMTA1LDQsMyw1OSwxMDgsMTE4LDk2NDksOTY1MSw5NjU2LDEsOTQ5LDExMSwxMTAsNTksMSw5NDksNTksMSwxMDEzLDQsNCw5OSwxMTUsMTE3LDExOCw5NjY5LDk2ODYsOTcxNiw5NzQ3LDQsMiwxMDUsMTExLDk2NzUsOTY4MCwxMTQsOTksNTksMSw4NzkwLDEwOCwxMTEsMTEwLDU5LDEsODc4OSw0LDIsMTA1LDEwOCw5NjkyLDk2OTYsMTA5LDU5LDEsODc3MCw5NywxMTAsMTE2LDQsMiwxMDMsMTA4LDk3MDUsOTcxMCwxMTYsMTE0LDU5LDEsMTA5MDIsMTAxLDExNSwxMTUsNTksMSwxMDkwMSw0LDMsOTcsMTAxLDEwNSw5NzI0LDk3MjksOTczNCwxMDgsMTE1LDU5LDEsNjEsMTE1LDExNiw1OSwxLDg3OTksMTE4LDQsMiw1OSw2OCw5NzQxLDk3NDMsMSw4ODAxLDY4LDU5LDEsMTA4NzIsMTEyLDk3LDExNCwxMTUsMTA4LDU5LDEsMTA3MjUsNCwyLDY4LDk3LDk3NjEsOTc2NiwxMTEsMTE2LDU5LDEsODc4NywxMTQsMTE0LDU5LDEsMTA2MDksNCwzLDk5LDEwMCwxMDUsOTc3OSw5NzgzLDk3ODgsMTE0LDU5LDEsODQ5NSwxMTEsMTE2LDU5LDEsODc4NCwxMDksNTksMSw4NzcwLDQsMiw5NywxMDQsOTc5OCw5ODAxLDU5LDEsOTUxLDUsMjQwLDEsNTksOTgwNiwxLDI0MCw0LDIsMTA5LDExNCw5ODE0LDk4MjIsMTA4LDUsMjM1LDEsNTksOTgyMCwxLDIzNSwxMTEsNTksMSw4MzY0LDQsMyw5OSwxMDUsMTEyLDk4MzQsOTgzOCw5ODQzLDEwOCw1OSwxLDMzLDExNSwxMTYsNTksMSw4NzA3LDQsMiwxMDEsMTExLDk4NDksOTg1OSw5OSwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDU5LDEsODQ5NiwxMTAsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwxMDEsNTksMSw4NTE5LDQsMTIsOTcsOTksMTAxLDEwMiwxMDUsMTA2LDEwOCwxMTAsMTExLDExMiwxMTQsMTE1LDk4OTYsOTkxMCw5OTE0LDk5MjEsOTk1NCw5OTYwLDk5NjcsOTk4OSw5OTk0LDEwMDI3LDEwMDM2LDEwMTY0LDEwOCwxMDgsMTA1LDExMCwxMDMsMTAwLDExMSwxMTYsMTE1LDEwMSwxMTMsNTksMSw4Nzg2LDEyMSw1OSwxLDEwOTIsMTA5LDk3LDEwOCwxMDEsNTksMSw5NzkyLDQsMywxMDUsMTA4LDExNCw5OTI5LDk5MzUsOTk1MCwxMDgsMTA1LDEwMyw1OSwxLDY0MjU5LDQsMiwxMDUsMTA4LDk5NDEsOTk0NSwxMDMsNTksMSw2NDI1NiwxMDUsMTAzLDU5LDEsNjQyNjAsNTksMyw1NTM0OSw1NjYxMSwxMDgsMTA1LDEwMyw1OSwxLDY0MjU3LDEwOCwxMDUsMTAzLDU5LDMsMTAyLDEwNiw0LDMsOTcsMTA4LDExNiw5OTc1LDk5NzksOTk4NCwxMTYsNTksMSw5ODM3LDEwNSwxMDMsNTksMSw2NDI1OCwxMTAsMTE1LDU5LDEsOTY0OSwxMTEsMTAyLDU5LDEsNDAyLDQsMiwxMTIsMTE0LDEwMDAwLDEwMDA1LDEwMiw1OSwzLDU1MzQ5LDU2NjYzLDQsMiw5NywxMDcsMTAwMTEsMTAwMTYsMTA4LDEwOCw1OSwxLDg3MDQsNCwyLDU5LDExOCwxMDAyMiwxMDAyNCwxLDg5MTYsNTksMSwxMDk2OSw5NywxMTQsMTE2LDEwNSwxMTAsMTE2LDU5LDEsMTA3NjUsNCwyLDk3LDExMSwxMDA0MiwxMDE1OSw0LDIsOTksMTE1LDEwMDQ4LDEwMTU1LDQsNiw0OSw1MCw1MSw1Miw1Myw1NSwxMDA2MiwxMDEwMiwxMDExNCwxMDEzNSwxMDEzOSwxMDE1MSw0LDYsNTAsNTEsNTIsNTMsNTQsNTYsMTAwNzYsMTAwODMsMTAwODYsMTAwOTMsMTAwOTYsMTAwOTksNSwxODksMSw1OSwxMDA4MSwxLDE4OSw1OSwxLDg1MzEsNSwxODgsMSw1OSwxMDA5MSwxLDE4OCw1OSwxLDg1MzMsNTksMSw4NTM3LDU5LDEsODUzOSw0LDIsNTEsNTMsMTAxMDgsMTAxMTEsNTksMSw4NTMyLDU5LDEsODUzNCw0LDMsNTIsNTMsNTYsMTAxMjIsMTAxMjksMTAxMzIsNSwxOTAsMSw1OSwxMDEyNywxLDE5MCw1OSwxLDg1MzUsNTksMSw4NTQwLDUzLDU5LDEsODUzNiw0LDIsNTQsNTYsMTAxNDUsMTAxNDgsNTksMSw4NTM4LDU5LDEsODU0MSw1Niw1OSwxLDg1NDIsMTA4LDU5LDEsODI2MCwxMTksMTEwLDU5LDEsODk5NCw5OSwxMTQsNTksMyw1NTM0OSw1NjUwNyw0LDE3LDY5LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDUsMTA2LDEwOCwxMTAsMTExLDExNCwxMTUsMTE2LDExOCwxMDIwNiwxMDIxNywxMDI0NywxMDI1NCwxMDI2OCwxMDI3MywxMDM1OCwxMDM2MywxMDM3NCwxMDM4MCwxMDM4NSwxMDQwNiwxMDQ1OCwxMDQ2NCwxMDQ3MCwxMDQ5NywxMDYxMCw0LDIsNTksMTA4LDEwMjEyLDEwMjE0LDEsODgwNyw1OSwxLDEwODkyLDQsMyw5OSwxMDksMTEyLDEwMjI1LDEwMjMxLDEwMjQ0LDExNywxMTYsMTAxLDU5LDEsNTAxLDEwOSw5Nyw0LDIsNTksMTAwLDEwMjM5LDEwMjQxLDEsOTQ3LDU5LDEsOTg5LDU5LDEsMTA4ODYsMTE0LDEwMSwxMTgsMTAxLDU5LDEsMjg3LDQsMiwxMDUsMTIxLDEwMjYwLDEwMjY1LDExNCw5OSw1OSwxLDI4NSw1OSwxLDEwNzUsMTExLDExNiw1OSwxLDI4OSw0LDQsNTksMTA4LDExMywxMTUsMTAyODMsMTAyODUsMTAyODgsMTAzMDgsMSw4ODA1LDU5LDEsODkyMyw0LDMsNTksMTEzLDExNSwxMDI5NiwxMDI5OCwxMDMwMSwxLDg4MDUsNTksMSw4ODA3LDEwOCw5NywxMTAsMTE2LDU5LDEsMTA4NzgsNCw0LDU5LDk5LDEwMCwxMDgsMTAzMTgsMTAzMjAsMTAzMjQsMTAzNDUsMSwxMDg3OCw5OSw1OSwxLDEwOTIxLDExMSwxMTYsNCwyLDU5LDExMSwxMDMzMiwxMDMzNCwxLDEwODgwLDQsMiw1OSwxMDgsMTAzNDAsMTAzNDIsMSwxMDg4Miw1OSwxLDEwODg0LDQsMiw1OSwxMDEsMTAzNTEsMTAzNTQsMyw4OTIzLDY1MDI0LDExNSw1OSwxLDEwOTAwLDExNCw1OSwzLDU1MzQ5LDU2NjEyLDQsMiw1OSwxMDMsMTAzNjksMTAzNzEsMSw4ODExLDU5LDEsODkyMSwxMDksMTAxLDEwOCw1OSwxLDg1MDMsOTksMTIxLDU5LDEsMTEwNyw0LDQsNTksNjksOTcsMTA2LDEwMzk1LDEwMzk3LDEwNDAwLDEwNDAzLDEsODgyMyw1OSwxLDEwODk4LDU5LDEsMTA5MTcsNTksMSwxMDkxNiw0LDQsNjksOTcsMTAxLDExNSwxMDQxNiwxMDQxOSwxMDQzNCwxMDQ1Myw1OSwxLDg4MDksMTEyLDQsMiw1OSwxMTIsMTA0MjYsMTA0MjgsMSwxMDg5MCwxMTQsMTExLDEyMCw1OSwxLDEwODkwLDQsMiw1OSwxMTMsMTA0NDAsMTA0NDIsMSwxMDg4OCw0LDIsNTksMTEzLDEwNDQ4LDEwNDUwLDEsMTA4ODgsNTksMSw4ODA5LDEwNSwxMDksNTksMSw4OTM1LDExMiwxMDIsNTksMyw1NTM0OSw1NjY2NCw5NywxMTgsMTAxLDU5LDEsOTYsNCwyLDk5LDEwNSwxMDQ3NiwxMDQ4MCwxMTQsNTksMSw4NDU4LDEwOSw0LDMsNTksMTAxLDEwOCwxMDQ4OSwxMDQ5MSwxMDQ5NCwxLDg4MTksNTksMSwxMDg5NCw1OSwxLDEwODk2LDUsNjIsNiw1OSw5OSwxMDAsMTA4LDExMywxMTQsMTA1MTIsMTA1MTQsMTA1MjcsMTA1MzIsMTA1MzgsMTA1NDUsMSw2Miw0LDIsOTksMTA1LDEwNTIwLDEwNTIzLDU5LDEsMTA5MTksMTE0LDU5LDEsMTA4NzQsMTExLDExNiw1OSwxLDg5MTksODAsOTcsMTE0LDU5LDEsMTA2NDUsMTE3LDEwMSwxMTUsMTE2LDU5LDEsMTA4NzYsNCw1LDk3LDEwMCwxMDEsMTA4LDExNSwxMDU1NywxMDU3NCwxMDU3OSwxMDU5OSwxMDYwNSw0LDIsMTEyLDExNCwxMDU2MywxMDU3MCwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDg4NiwxMTQsNTksMSwxMDYxNiwxMTEsMTE2LDU5LDEsODkxOSwxMTMsNCwyLDEwOCwxMTMsMTA1ODYsMTA1OTIsMTAxLDExNSwxMTUsNTksMSw4OTIzLDEwOCwxMDEsMTE1LDExNSw1OSwxLDEwODkyLDEwMSwxMTUsMTE1LDU5LDEsODgyMywxMDUsMTA5LDU5LDEsODgxOSw0LDIsMTAxLDExMCwxMDYxNiwxMDYyNiwxMTQsMTE2LDExMCwxMDEsMTEzLDExMyw1OSwzLDg4MDksNjUwMjQsNjksNTksMyw4ODA5LDY1MDI0LDQsMTAsNjUsOTcsOTgsOTksMTAxLDEwMiwxMDcsMTExLDExNSwxMjEsMTA2NTMsMTA2NTgsMTA3MTMsMTA3MTgsMTA3MjQsMTA3NjAsMTA3NjUsMTA3ODYsMTA4NTAsMTA4NzUsMTE0LDExNCw1OSwxLDg2NjAsNCw0LDEwNSwxMDgsMTA5LDExNCwxMDY2OCwxMDY3NCwxMDY3OCwxMDY4NCwxMTQsMTE1LDExMiw1OSwxLDgyMDIsMTAyLDU5LDEsMTg5LDEwNSwxMDgsMTE2LDU5LDEsODQ1OSw0LDIsMTAwLDExNCwxMDY5MCwxMDY5NSw5OSwxMjEsNTksMSwxMDk4LDQsMyw1OSw5OSwxMTksMTA3MDMsMTA3MDUsMTA3MTAsMSw4NTk2LDEwNSwxMTQsNTksMSwxMDU2OCw1OSwxLDg2MjEsOTcsMTE0LDU5LDEsODQ2MywxMDUsMTE0LDk5LDU5LDEsMjkzLDQsMyw5NywxMDgsMTE0LDEwNzMyLDEwNzQ4LDEwNzU0LDExNCwxMTYsMTE1LDQsMiw1OSwxMTcsMTA3NDEsMTA3NDMsMSw5ODI5LDEwNSwxMTYsNTksMSw5ODI5LDEwOCwxMDUsMTEyLDU5LDEsODIzMCw5OSwxMTEsMTEwLDU5LDEsODg4OSwxMTQsNTksMyw1NTM0OSw1NjYxMywxMTUsNCwyLDEwMSwxMTksMTA3NzIsMTA3NzksOTcsMTE0LDExMSwxMTksNTksMSwxMDUzMyw5NywxMTQsMTExLDExOSw1OSwxLDEwNTM0LDQsNSw5NywxMDksMTExLDExMiwxMTQsMTA3OTgsMTA4MDMsMTA4MDksMTA4MzksMTA4NDQsMTE0LDExNCw1OSwxLDg3MDMsMTE2LDEwNCwxMTYsNTksMSw4NzYzLDEwNyw0LDIsMTA4LDExNCwxMDgxNiwxMDgyNywxMDEsMTAyLDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjE3LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjE4LDEwMiw1OSwzLDU1MzQ5LDU2NjY1LDk4LDk3LDExNCw1OSwxLDgyMTMsNCwzLDk5LDEwOCwxMTYsMTA4NTgsMTA4NjMsMTA4NjksMTE0LDU5LDMsNTUzNDksNTY1MDksOTcsMTE1LDEwNCw1OSwxLDg0NjMsMTE0LDExMSwxMDcsNTksMSwyOTUsNCwyLDk4LDExMiwxMDg4MSwxMDg4NywxMTcsMTA4LDEwOCw1OSwxLDgyNTksMTA0LDEwMSwxMTAsNTksMSw4MjA4LDQsMTUsOTcsOTksMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDksMTEwLDExMSwxMTIsMTEzLDExNSwxMTYsMTE3LDEwOTI1LDEwOTM2LDEwOTU4LDEwOTc3LDEwOTkwLDExMDAxLDExMDM5LDExMDQ1LDExMTAxLDExMTkyLDExMjIwLDExMjI2LDExMjM3LDExMjg1LDExMjk5LDk5LDExNywxMTYsMTAxLDUsMjM3LDEsNTksMTA5MzQsMSwyMzcsNCwzLDU5LDEwNSwxMjEsMTA5NDQsMTA5NDYsMTA5NTUsMSw4MjkxLDExNCw5OSw1LDIzOCwxLDU5LDEwOTUzLDEsMjM4LDU5LDEsMTA4MCw0LDIsOTksMTIwLDEwOTY0LDEwOTY4LDEyMSw1OSwxLDEwNzcsOTksMTA4LDUsMTYxLDEsNTksMTA5NzUsMSwxNjEsNCwyLDEwMiwxMTQsMTA5ODMsMTA5ODYsNTksMSw4NjYwLDU5LDMsNTUzNDksNTY2MTQsMTE0LDk3LDExOCwxMDEsNSwyMzYsMSw1OSwxMDk5OSwxLDIzNiw0LDQsNTksMTA1LDExMCwxMTEsMTEwMTEsMTEwMTMsMTEwMjgsMTEwMzQsMSw4NTIwLDQsMiwxMDUsMTEwLDExMDE5LDExMDI0LDExMCwxMTYsNTksMSwxMDc2NCwxMTYsNTksMSw4NzQ5LDEwMiwxMDUsMTEwLDU5LDEsMTA3MTYsMTE2LDk3LDU5LDEsODQ4OSwxMDgsMTA1LDEwMyw1OSwxLDMwNyw0LDMsOTcsMTExLDExMiwxMTA1MywxMTA5MiwxMTA5Niw0LDMsOTksMTAzLDExNiwxMTA2MSwxMTA2NSwxMTA4OCwxMTQsNTksMSwyOTksNCwzLDEwMSwxMDgsMTEyLDExMDczLDExMDc2LDExMDgyLDU5LDEsODQ2NSwxMDUsMTEwLDEwMSw1OSwxLDg0NjQsOTcsMTE0LDExNiw1OSwxLDg0NjUsMTA0LDU5LDEsMzA1LDEwMiw1OSwxLDg4ODcsMTAxLDEwMCw1OSwxLDQzNyw0LDUsNTksOTksMTAyLDExMSwxMTYsMTExMTMsMTExMTUsMTExMjEsMTExMzYsMTExNDIsMSw4NzEyLDk3LDExNCwxMDEsNTksMSw4NDUzLDEwNSwxMTAsNCwyLDU5LDExNiwxMTEyOSwxMTEzMSwxLDg3MzQsMTA1LDEwMSw1OSwxLDEwNzE3LDEwMCwxMTEsMTE2LDU5LDEsMzA1LDQsNSw1OSw5OSwxMDEsMTA4LDExMiwxMTE1NCwxMTE1NiwxMTE2MSwxMTE3OSwxMTE4NiwxLDg3NDcsOTcsMTA4LDU5LDEsODg5MCw0LDIsMTAzLDExNCwxMTE2NywxMTE3MywxMDEsMTE0LDExNSw1OSwxLDg0ODQsOTksOTcsMTA4LDU5LDEsODg5MCw5NywxMTQsMTA0LDEwNyw1OSwxLDEwNzc1LDExNCwxMTEsMTAwLDU5LDEsMTA4MTIsNCw0LDk5LDEwMywxMTIsMTE2LDExMjAyLDExMjA2LDExMjExLDExMjE2LDEyMSw1OSwxLDExMDUsMTExLDExMCw1OSwxLDMwMywxMDIsNTksMyw1NTM0OSw1NjY2Niw5Nyw1OSwxLDk1MywxMTQsMTExLDEwMCw1OSwxLDEwODEyLDExNywxMDEsMTE1LDExNiw1LDE5MSwxLDU5LDExMjM1LDEsMTkxLDQsMiw5OSwxMDUsMTEyNDMsMTEyNDgsMTE0LDU5LDMsNTUzNDksNTY1MTAsMTEwLDQsNSw1OSw2OSwxMDAsMTE1LDExOCwxMTI2MSwxMTI2MywxMTI2NiwxMTI3MSwxMTI4MiwxLDg3MTIsNTksMSw4OTUzLDExMSwxMTYsNTksMSw4OTQ5LDQsMiw1OSwxMTgsMTEyNzcsMTEyNzksMSw4OTQ4LDU5LDEsODk0Nyw1OSwxLDg3MTIsNCwyLDU5LDEwNSwxMTI5MSwxMTI5MywxLDgyOTAsMTA4LDEwMCwxMDEsNTksMSwyOTcsNCwyLDEwNywxMDksMTEzMDUsMTEzMTAsOTksMTIxLDU5LDEsMTExMCwxMDgsNSwyMzksMSw1OSwxMTMxNiwxLDIzOSw0LDYsOTksMTAyLDEwOSwxMTEsMTE1LDExNywxMTMzMiwxMTM0NiwxMTM1MSwxMTM1NywxMTM2MywxMTM4MCw0LDIsMTA1LDEyMSwxMTMzOCwxMTM0MywxMTQsOTksNTksMSwzMDksNTksMSwxMDgxLDExNCw1OSwzLDU1MzQ5LDU2NjE1LDk3LDExNiwxMDQsNTksMSw1NjcsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjY3LDQsMiw5OSwxMDEsMTEzNjksMTEzNzQsMTE0LDU5LDMsNTUzNDksNTY1MTEsMTE0LDk5LDEyMSw1OSwxLDExMTIsMTA3LDk5LDEyMSw1OSwxLDExMDgsNCw4LDk3LDk5LDEwMiwxMDMsMTA0LDEwNiwxMTEsMTE1LDExNDA0LDExNDE4LDExNDMzLDExNDM4LDExNDQ1LDExNDUwLDExNDU1LDExNDYxLDExMiwxMTIsOTcsNCwyLDU5LDExOCwxMTQxMywxMTQxNSwxLDk1NCw1OSwxLDEwMDgsNCwyLDEwMSwxMjEsMTE0MjQsMTE0MzAsMTAwLDEwNSwxMDgsNTksMSwzMTEsNTksMSwxMDgyLDExNCw1OSwzLDU1MzQ5LDU2NjE2LDExNCwxMDEsMTAxLDExMCw1OSwxLDMxMiw5OSwxMjEsNTksMSwxMDkzLDk5LDEyMSw1OSwxLDExMTYsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjY4LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTEyLDQsMjMsNjUsNjYsNjksNzIsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDYsMTA4LDEwOSwxMTAsMTExLDExMiwxMTQsMTE1LDExNiwxMTcsMTE4LDExNTE1LDExNTM4LDExNTQ0LDExNTU1LDExNTYwLDExNzIxLDExNzgwLDExODE4LDExODY4LDEyMTM2LDEyMTYwLDEyMTcxLDEyMjAzLDEyMjA4LDEyMjQ2LDEyMjc1LDEyMzI3LDEyNTA5LDEyNTIzLDEyNTY5LDEyNjQxLDEyNzMyLDEyNzUyLDQsMyw5NywxMTQsMTE2LDExNTIzLDExNTI4LDExNTMyLDExNCwxMTQsNTksMSw4NjY2LDExNCw1OSwxLDg2NTYsOTcsMTA1LDEwOCw1OSwxLDEwNTIzLDk3LDExNCwxMTQsNTksMSwxMDUxMCw0LDIsNTksMTAzLDExNTUwLDExNTUyLDEsODgwNiw1OSwxLDEwODkxLDk3LDExNCw1OSwxLDEwNTk0LDQsOSw5OSwxMDEsMTAzLDEwOSwxMTAsMTEyLDExMywxMTQsMTE2LDExNTgwLDExNTg2LDExNTk0LDExNjAwLDExNjA2LDExNjI0LDExNjI3LDExNjM2LDExNjk0LDExNywxMTYsMTAxLDU5LDEsMzE0LDEwOSwxMTIsMTE2LDEyMSwxMTgsNTksMSwxMDY3NiwxMTQsOTcsMTEwLDU5LDEsODQ2Niw5OCwxMDAsOTcsNTksMSw5NTUsMTAzLDQsMyw1OSwxMDAsMTA4LDExNjE1LDExNjE3LDExNjIwLDEsMTAyMTYsNTksMSwxMDY0MSwxMDEsNTksMSwxMDIxNiw1OSwxLDEwODg1LDExNywxMTEsNSwxNzEsMSw1OSwxMTYzNCwxLDE3MSwxMTQsNCw4LDU5LDk4LDEwMiwxMDQsMTA4LDExMiwxMTUsMTE2LDExNjU1LDExNjU3LDExNjY5LDExNjczLDExNjc3LDExNjgxLDExNjg1LDExNjkwLDEsODU5Miw0LDIsNTksMTAyLDExNjYzLDExNjY1LDEsODY3NiwxMTUsNTksMSwxMDUyNywxMTUsNTksMSwxMDUyNSwxMDcsNTksMSw4NjE3LDExMiw1OSwxLDg2MTksMTA4LDU5LDEsMTA1NTMsMTA1LDEwOSw1OSwxLDEwNjExLDEwOCw1OSwxLDg2MTAsNCwzLDU5LDk3LDEwMSwxMTcwMiwxMTcwNCwxMTcwOSwxLDEwOTIzLDEwNSwxMDgsNTksMSwxMDUyMSw0LDIsNTksMTE1LDExNzE1LDExNzE3LDEsMTA5MjUsNTksMywxMDkyNSw2NTAyNCw0LDMsOTcsOTgsMTE0LDExNzI5LDExNzM0LDExNzM5LDExNCwxMTQsNTksMSwxMDUwOCwxMTQsMTA3LDU5LDEsMTAwOTgsNCwyLDk3LDEwNywxMTc0NSwxMTc1OCw5OSw0LDIsMTAxLDEwNywxMTc1MiwxMTc1NSw1OSwxLDEyMyw1OSwxLDkxLDQsMiwxMDEsMTE1LDExNzY0LDExNzY3LDU5LDEsMTA2MzUsMTA4LDQsMiwxMDAsMTE3LDExNzc0LDExNzc3LDU5LDEsMTA2MzksNTksMSwxMDYzNyw0LDQsOTcsMTAxLDExNywxMjEsMTE3OTAsMTE3OTYsMTE4MTEsMTE4MTUsMTE0LDExMSwxMTAsNTksMSwzMTgsNCwyLDEwMCwxMDUsMTE4MDIsMTE4MDcsMTA1LDEwOCw1OSwxLDMxNiwxMDgsNTksMSw4OTY4LDk4LDU5LDEsMTIzLDU5LDEsMTA4Myw0LDQsOTksMTEzLDExNCwxMTUsMTE4MjgsMTE4MzIsMTE4NDUsMTE4NjQsOTcsNTksMSwxMDU1MCwxMTcsMTExLDQsMiw1OSwxMTQsMTE4NDAsMTE4NDIsMSw4MjIwLDU5LDEsODIyMiw0LDIsMTAwLDExNywxMTg1MSwxMTg1NywxMDQsOTcsMTE0LDU5LDEsMTA1OTksMTE1LDEwNCw5NywxMTQsNTksMSwxMDU3MSwxMDQsNTksMSw4NjI2LDQsNSw1OSwxMDIsMTAzLDExMywxMTUsMTE4ODAsMTE4ODIsMTIwMDgsMTIwMTEsMTIwMzEsMSw4ODA0LDExNiw0LDUsOTcsMTA0LDEwOCwxMTQsMTE2LDExODk1LDExOTEzLDExOTM1LDExOTQ3LDExOTk2LDExNCwxMTQsMTExLDExOSw0LDIsNTksMTE2LDExOTA1LDExOTA3LDEsODU5Miw5NywxMDUsMTA4LDU5LDEsODYxMCw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDAsMTE3LDExOTI1LDExOTMxLDExMSwxMTksMTEwLDU5LDEsODYzNywxMTIsNTksMSw4NjM2LDEwMSwxMDIsMTE2LDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjQ3LDEwNSwxMDMsMTA0LDExNiw0LDMsOTcsMTA0LDExNSwxMTk1OSwxMTk3NCwxMTk4NCwxMTQsMTE0LDExMSwxMTksNCwyLDU5LDExNSwxMTk2OSwxMTk3MSwxLDg1OTYsNTksMSw4NjQ2LDk3LDExNCwxMTIsMTExLDExMSwxMTAsMTE1LDU5LDEsODY1MSwxMTMsMTE3LDEwNSwxMDMsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODYyMSwxMDQsMTE0LDEwMSwxMDEsMTE2LDEwNSwxMDksMTAxLDExNSw1OSwxLDg5MDcsNTksMSw4OTIyLDQsMyw1OSwxMTMsMTE1LDEyMDE5LDEyMDIxLDEyMDI0LDEsODgwNCw1OSwxLDg4MDYsMTA4LDk3LDExMCwxMTYsNTksMSwxMDg3Nyw0LDUsNTksOTksMTAwLDEwMywxMTUsMTIwNDMsMTIwNDUsMTIwNDksMTIwNzAsMTIwODMsMSwxMDg3Nyw5OSw1OSwxLDEwOTIwLDExMSwxMTYsNCwyLDU5LDExMSwxMjA1NywxMjA1OSwxLDEwODc5LDQsMiw1OSwxMTQsMTIwNjUsMTIwNjcsMSwxMDg4MSw1OSwxLDEwODgzLDQsMiw1OSwxMDEsMTIwNzYsMTIwNzksMyw4OTIyLDY1MDI0LDExNSw1OSwxLDEwODk5LDQsNSw5NywxMDAsMTAxLDEwMywxMTUsMTIwOTUsMTIxMDMsMTIxMDgsMTIxMjYsMTIxMzEsMTEyLDExMiwxMTQsMTExLDEyMCw1OSwxLDEwODg1LDExMSwxMTYsNTksMSw4OTE4LDExMyw0LDIsMTAzLDExMywxMjExNSwxMjEyMCwxMTYsMTE0LDU5LDEsODkyMiwxMDMsMTE2LDExNCw1OSwxLDEwODkxLDExNiwxMTQsNTksMSw4ODIyLDEwNSwxMDksNTksMSw4ODE4LDQsMywxMDUsMTA4LDExNCwxMjE0NCwxMjE1MCwxMjE1NiwxMTUsMTA0LDExNiw1OSwxLDEwNjIwLDExMSwxMTEsMTE0LDU5LDEsODk3MCw1OSwzLDU1MzQ5LDU2NjE3LDQsMiw1OSw2OSwxMjE2NiwxMjE2OCwxLDg4MjIsNTksMSwxMDg5Nyw0LDIsOTcsOTgsMTIxNzcsMTIxOTgsMTE0LDQsMiwxMDAsMTE3LDEyMTg0LDEyMTg3LDU5LDEsODYzNyw0LDIsNTksMTA4LDEyMTkzLDEyMTk1LDEsODYzNiw1OSwxLDEwNjAyLDEwOCwxMDcsNTksMSw5NjA0LDk5LDEyMSw1OSwxLDExMTMsNCw1LDU5LDk3LDk5LDEwNCwxMTYsMTIyMjAsMTIyMjIsMTIyMjcsMTIyMzUsMTIyNDEsMSw4ODEwLDExNCwxMTQsNTksMSw4NjQ3LDExMSwxMTQsMTEwLDEwMSwxMTQsNTksMSw4OTkwLDk3LDExNCwxMDAsNTksMSwxMDYwMywxMTQsMTA1LDU5LDEsOTcyMiw0LDIsMTA1LDExMSwxMjI1MiwxMjI1OCwxMDAsMTExLDExNiw1OSwxLDMyMCwxMTcsMTE1LDExNiw0LDIsNTksOTcsMTIyNjcsMTIyNjksMSw5MTM2LDk5LDEwNCwxMDEsNTksMSw5MTM2LDQsNCw2OSw5NywxMDEsMTE1LDEyMjg1LDEyMjg4LDEyMzAzLDEyMzIyLDU5LDEsODgwOCwxMTIsNCwyLDU5LDExMiwxMjI5NSwxMjI5NywxLDEwODg5LDExNCwxMTEsMTIwLDU5LDEsMTA4ODksNCwyLDU5LDExMywxMjMwOSwxMjMxMSwxLDEwODg3LDQsMiw1OSwxMTMsMTIzMTcsMTIzMTksMSwxMDg4Nyw1OSwxLDg4MDgsMTA1LDEwOSw1OSwxLDg5MzQsNCw4LDk3LDk4LDExMCwxMTEsMTEyLDExNiwxMTksMTIyLDEyMzQ1LDEyMzU5LDEyMzY0LDEyNDIxLDEyNDQ2LDEyNDY3LDEyNDc0LDEyNDkwLDQsMiwxMTAsMTE0LDEyMzUxLDEyMzU1LDEwMyw1OSwxLDEwMjIwLDExNCw1OSwxLDg3MDEsMTE0LDEwNyw1OSwxLDEwMjE0LDEwMyw0LDMsMTA4LDEwOSwxMTQsMTIzNzMsMTI0MDEsMTI0MDksMTAxLDEwMiwxMTYsNCwyLDk3LDExNCwxMjM4MiwxMjM4OSwxMTQsMTE0LDExMSwxMTksNTksMSwxMDIyOSwxMDUsMTAzLDEwNCwxMTYsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsMTAyMzEsOTcsMTEyLDExNSwxMTYsMTExLDU5LDEsMTAyMzYsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDEwMjMwLDExMiw5NywxMTQsMTE0LDExMSwxMTksNCwyLDEwOCwxMTQsMTI0MzMsMTI0MzksMTAxLDEwMiwxMTYsNTksMSw4NjE5LDEwNSwxMDMsMTA0LDExNiw1OSwxLDg2MjAsNCwzLDk3LDEwMiwxMDgsMTI0NTQsMTI0NTgsMTI0NjIsMTE0LDU5LDEsMTA2MjksNTksMyw1NTM0OSw1NjY2OSwxMTcsMTE1LDU5LDEsMTA3OTcsMTA1LDEwOSwxMDEsMTE1LDU5LDEsMTA4MDQsNCwyLDk3LDk4LDEyNDgwLDEyNDg1LDExNSwxMTYsNTksMSw4NzI3LDk3LDExNCw1OSwxLDk1LDQsMyw1OSwxMDEsMTAyLDEyNDk4LDEyNTAwLDEyNTA2LDEsOTY3NCwxMTAsMTAzLDEwMSw1OSwxLDk2NzQsNTksMSwxMDczMSw5NywxMTQsNCwyLDU5LDEwOCwxMjUxNywxMjUxOSwxLDQwLDExNiw1OSwxLDEwNjQzLDQsNSw5Nyw5OSwxMDQsMTA5LDExNiwxMjUzNSwxMjU0MCwxMjU0OCwxMjU2MSwxMjU2NCwxMTQsMTE0LDU5LDEsODY0NiwxMTEsMTE0LDExMCwxMDEsMTE0LDU5LDEsODk5MSw5NywxMTQsNCwyLDU5LDEwMCwxMjU1NiwxMjU1OCwxLDg2NTEsNTksMSwxMDYwNSw1OSwxLDgyMDYsMTE0LDEwNSw1OSwxLDg4OTUsNCw2LDk3LDk5LDEwNCwxMDUsMTEzLDExNiwxMjU4MywxMjU4OSwxMjU5NCwxMjU5NywxMjYxNCwxMjYzNSwxMTMsMTE3LDExMSw1OSwxLDgyNDksMTE0LDU5LDMsNTUzNDksNTY1MTMsNTksMSw4NjI0LDEwOSw0LDMsNTksMTAxLDEwMywxMjYwNiwxMjYwOCwxMjYxMSwxLDg4MTgsNTksMSwxMDg5Myw1OSwxLDEwODk1LDQsMiw5OCwxMTcsMTI2MjAsMTI2MjMsNTksMSw5MSwxMTEsNCwyLDU5LDExNCwxMjYzMCwxMjYzMiwxLDgyMTYsNTksMSw4MjE4LDExNCwxMTEsMTA3LDU5LDEsMzIyLDUsNjAsOCw1OSw5OSwxMDAsMTA0LDEwNSwxMDgsMTEzLDExNCwxMjY2MCwxMjY2MiwxMjY3NSwxMjY4MCwxMjY4NiwxMjY5MiwxMjY5OCwxMjcwNSwxLDYwLDQsMiw5OSwxMDUsMTI2NjgsMTI2NzEsNTksMSwxMDkxOCwxMTQsNTksMSwxMDg3MywxMTEsMTE2LDU5LDEsODkxOCwxMTQsMTAxLDEwMSw1OSwxLDg5MDcsMTA5LDEwMSwxMTUsNTksMSw4OTA1LDk3LDExNCwxMTQsNTksMSwxMDYxNCwxMTcsMTAxLDExNSwxMTYsNTksMSwxMDg3NSw0LDIsODAsMTA1LDEyNzExLDEyNzE2LDk3LDExNCw1OSwxLDEwNjQ2LDQsMyw1OSwxMDEsMTAyLDEyNzI0LDEyNzI2LDEyNzI5LDEsOTY2Nyw1OSwxLDg4ODQsNTksMSw5NjY2LDExNCw0LDIsMTAwLDExNywxMjczOSwxMjc0NiwxMTUsMTA0LDk3LDExNCw1OSwxLDEwNTcwLDEwNCw5NywxMTQsNTksMSwxMDU5OCw0LDIsMTAxLDExMCwxMjc1OCwxMjc2OCwxMTQsMTE2LDExMCwxMDEsMTEzLDExMyw1OSwzLDg4MDgsNjUwMjQsNjksNTksMyw4ODA4LDY1MDI0LDQsMTQsNjgsOTcsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTEwLDExMSwxMTIsMTE1LDExNywxMjgwMywxMjgwOSwxMjg5MywxMjkwOCwxMjkxNCwxMjkyOCwxMjkzMywxMjkzNywxMzAxMSwxMzAyNSwxMzAzMiwxMzA0OSwxMzA1MiwxMzA2OSw2OCwxMTEsMTE2LDU5LDEsODc2Miw0LDQsOTksMTA4LDExMiwxMTQsMTI4MTksMTI4MjcsMTI4NDksMTI4ODcsMTE0LDUsMTc1LDEsNTksMTI4MjUsMSwxNzUsNCwyLDEwMSwxMTYsMTI4MzMsMTI4MzYsNTksMSw5Nzk0LDQsMiw1OSwxMDEsMTI4NDIsMTI4NDQsMSwxMDAxNiwxMTUsMTAxLDU5LDEsMTAwMTYsNCwyLDU5LDExNSwxMjg1NSwxMjg1NywxLDg2MTQsMTE2LDExMSw0LDQsNTksMTAwLDEwOCwxMTcsMTI4NjksMTI4NzEsMTI4NzcsMTI4ODMsMSw4NjE0LDExMSwxMTksMTEwLDU5LDEsODYxNSwxMDEsMTAyLDExNiw1OSwxLDg2MTIsMTEyLDU5LDEsODYxMywxMDcsMTAxLDExNCw1OSwxLDk2NDYsNCwyLDExMSwxMjEsMTI4OTksMTI5MDUsMTA5LDEwOSw5Nyw1OSwxLDEwNzkzLDU5LDEsMTA4NCw5NywxMTUsMTA0LDU5LDEsODIxMiw5NywxMTUsMTE3LDExNCwxMDEsMTAwLDk3LDExMCwxMDMsMTA4LDEwMSw1OSwxLDg3MzcsMTE0LDU5LDMsNTUzNDksNTY2MTgsMTExLDU5LDEsODQ4Nyw0LDMsOTksMTAwLDExMCwxMjk0NSwxMjk1NCwxMjk4NSwxMTQsMTExLDUsMTgxLDEsNTksMTI5NTIsMSwxODEsNCw0LDU5LDk3LDk5LDEwMCwxMjk2NCwxMjk2NiwxMjk3MSwxMjk3NiwxLDg3MzksMTE1LDExNiw1OSwxLDQyLDEwNSwxMTQsNTksMSwxMDk5MiwxMTEsMTE2LDUsMTgzLDEsNTksMTI5ODMsMSwxODMsMTE3LDExNSw0LDMsNTksOTgsMTAwLDEyOTk1LDEyOTk3LDEzMDAwLDEsODcyMiw1OSwxLDg4NjMsNCwyLDU5LDExNywxMzAwNiwxMzAwOCwxLDg3NjAsNTksMSwxMDc5NCw0LDIsOTksMTAwLDEzMDE3LDEzMDIxLDExMiw1OSwxLDEwOTcxLDExNCw1OSwxLDgyMzAsMTEyLDEwOCwxMTcsMTE1LDU5LDEsODcyMyw0LDIsMTAwLDExMiwxMzAzOCwxMzA0NCwxMDEsMTA4LDExNSw1OSwxLDg4NzEsMTAyLDU5LDMsNTUzNDksNTY2NzAsNTksMSw4NzIzLDQsMiw5OSwxMTYsMTMwNTgsMTMwNjMsMTE0LDU5LDMsNTUzNDksNTY1MTQsMTEyLDExMSwxMTUsNTksMSw4NzY2LDQsMyw1OSwxMDgsMTA5LDEzMDc3LDEzMDc5LDEzMDg3LDEsOTU2LDExNiwxMDUsMTA5LDk3LDExMiw1OSwxLDg4ODgsOTcsMTEyLDU5LDEsODg4OCw0LDI0LDcxLDc2LDgyLDg2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDgsMTA5LDExMSwxMTIsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTMxNDIsMTMxNjUsMTMyMTcsMTMyMjksMTMyNDcsMTMzMzAsMTMzNTksMTM0MTQsMTM0MjAsMTM1MDgsMTM1MTMsMTM1NzksMTM2MDIsMTM2MjYsMTM2MzEsMTM3NjIsMTM3NjcsMTM4NTUsMTM5MzYsMTM5OTUsMTQyMTQsMTQyODUsMTQzMTIsMTQ0MzIsNCwyLDEwMywxMTYsMTMxNDgsMTMxNTIsNTksMyw4OTIxLDgyNCw0LDIsNTksMTE4LDEzMTU4LDEzMTYxLDMsODgxMSw4NDAyLDU5LDMsODgxMSw4MjQsNCwzLDEwMSwxMDgsMTE2LDEzMTczLDEzMjAwLDEzMjA0LDEwMiwxMTYsNCwyLDk3LDExNCwxMzE4MSwxMzE4OCwxMTQsMTE0LDExMSwxMTksNTksMSw4NjUzLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjU0LDU5LDMsODkyMCw4MjQsNCwyLDU5LDExOCwxMzIxMCwxMzIxMywzLDg4MTAsODQwMiw1OSwzLDg4MTAsODI0LDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjU1LDQsMiw2OCwxMDAsMTMyMzUsMTMyNDEsOTcsMTE1LDEwNCw1OSwxLDg4NzksOTcsMTE1LDEwNCw1OSwxLDg4NzgsNCw1LDk4LDk5LDExMCwxMTIsMTE2LDEzMjU5LDEzMjY0LDEzMjcwLDEzMjc1LDEzMzA4LDEwOCw5Nyw1OSwxLDg3MTEsMTE3LDExNiwxMDEsNTksMSwzMjQsMTAzLDU5LDMsODczNiw4NDAyLDQsNSw1OSw2OSwxMDUsMTExLDExMiwxMzI4NywxMzI4OSwxMzI5MywxMzI5OCwxMzMwMiwxLDg3NzcsNTksMywxMDg2NCw4MjQsMTAwLDU5LDMsODc3OSw4MjQsMTE1LDU5LDEsMzI5LDExNCwxMTEsMTIwLDU5LDEsODc3NywxMTcsMTE0LDQsMiw1OSw5NywxMzMxNiwxMzMxOCwxLDk4MzgsMTA4LDQsMiw1OSwxMTUsMTMzMjUsMTMzMjcsMSw5ODM4LDU5LDEsODQ2OSw0LDIsMTE1LDExNywxMzMzNiwxMzM0NCwxMTIsNSwxNjAsMSw1OSwxMzM0MiwxLDE2MCwxMDksMTEyLDQsMiw1OSwxMDEsMTMzNTIsMTMzNTUsMyw4NzgyLDgyNCw1OSwzLDg3ODMsODI0LDQsNSw5NywxMDEsMTExLDExNywxMjEsMTMzNzEsMTMzODUsMTMzOTEsMTM0MDcsMTM0MTEsNCwyLDExMiwxMTQsMTMzNzcsMTMzODAsNTksMSwxMDgxOSwxMTEsMTEwLDU5LDEsMzI4LDEwMCwxMDUsMTA4LDU5LDEsMzI2LDExMCwxMDMsNCwyLDU5LDEwMCwxMzM5OSwxMzQwMSwxLDg3NzUsMTExLDExNiw1OSwzLDEwODYxLDgyNCwxMTIsNTksMSwxMDgxOCw1OSwxLDEwODUsOTcsMTE1LDEwNCw1OSwxLDgyMTEsNCw3LDU5LDY1LDk3LDEwMCwxMTMsMTE1LDEyMCwxMzQzNiwxMzQzOCwxMzQ0MywxMzQ2NiwxMzQ3MiwxMzQ3OCwxMzQ5NCwxLDg4MDAsMTE0LDExNCw1OSwxLDg2NjMsMTE0LDQsMiwxMDQsMTE0LDEzNDUwLDEzNDU0LDEwNyw1OSwxLDEwNTMyLDQsMiw1OSwxMTEsMTM0NjAsMTM0NjIsMSw4NTk5LDExOSw1OSwxLDg1OTksMTExLDExNiw1OSwzLDg3ODQsODI0LDExNywxMDUsMTE4LDU5LDEsODgwMiw0LDIsMTAxLDEwNSwxMzQ4NCwxMzQ4OSw5NywxMTQsNTksMSwxMDUzNiwxMDksNTksMyw4NzcwLDgyNCwxMDUsMTE1LDExNiw0LDIsNTksMTE1LDEzNTAzLDEzNTA1LDEsODcwOCw1OSwxLDg3MDgsMTE0LDU5LDMsNTUzNDksNTY2MTksNCw0LDY5LDEwMSwxMTUsMTE2LDEzNTIzLDEzNTI3LDEzNTYzLDEzNTY4LDU5LDMsODgwNyw4MjQsNCwzLDU5LDExMywxMTUsMTM1MzUsMTM1MzcsMTM1NTksMSw4ODE3LDQsMyw1OSwxMTMsMTE1LDEzNTQ1LDEzNTQ3LDEzNTUxLDEsODgxNyw1OSwzLDg4MDcsODI0LDEwOCw5NywxMTAsMTE2LDU5LDMsMTA4NzgsODI0LDU5LDMsMTA4NzgsODI0LDEwNSwxMDksNTksMSw4ODIxLDQsMiw1OSwxMTQsMTM1NzQsMTM1NzYsMSw4ODE1LDU5LDEsODgxNSw0LDMsNjUsOTcsMTEyLDEzNTg3LDEzNTkyLDEzNTk3LDExNCwxMTQsNTksMSw4NjU0LDExNCwxMTQsNTksMSw4NjIyLDk3LDExNCw1OSwxLDEwOTk0LDQsMyw1OSwxMTUsMTE4LDEzNjEwLDEzNjEyLDEzNjIzLDEsODcxNSw0LDIsNTksMTAwLDEzNjE4LDEzNjIwLDEsODk1Niw1OSwxLDg5NTQsNTksMSw4NzE1LDk5LDEyMSw1OSwxLDExMTQsNCw3LDY1LDY5LDk3LDEwMCwxMDEsMTE1LDExNiwxMzY0NywxMzY1MiwxMzY1NiwxMzY2MSwxMzY2NSwxMzczNywxMzc0MiwxMTQsMTE0LDU5LDEsODY1Myw1OSwzLDg4MDYsODI0LDExNCwxMTQsNTksMSw4NjAyLDExNCw1OSwxLDgyMjksNCw0LDU5LDEwMiwxMTMsMTE1LDEzNjc1LDEzNjc3LDEzNzAzLDEzNzI1LDEsODgxNiwxMTYsNCwyLDk3LDExNCwxMzY4NCwxMzY5MSwxMTQsMTE0LDExMSwxMTksNTksMSw4NjAyLDEwNSwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjIyLDQsMyw1OSwxMTMsMTE1LDEzNzExLDEzNzEzLDEzNzE3LDEsODgxNiw1OSwzLDg4MDYsODI0LDEwOCw5NywxMTAsMTE2LDU5LDMsMTA4NzcsODI0LDQsMiw1OSwxMTUsMTM3MzEsMTM3MzQsMywxMDg3Nyw4MjQsNTksMSw4ODE0LDEwNSwxMDksNTksMSw4ODIwLDQsMiw1OSwxMTQsMTM3NDgsMTM3NTAsMSw4ODE0LDEwNSw0LDIsNTksMTAxLDEzNzU3LDEzNzU5LDEsODkzOCw1OSwxLDg5NDAsMTA1LDEwMCw1OSwxLDg3NDAsNCwyLDExMiwxMTYsMTM3NzMsMTM3NzgsMTAyLDU5LDMsNTUzNDksNTY2NzEsNSwxNzIsMyw1OSwxMDUsMTEwLDEzNzg3LDEzNzg5LDEzODI5LDEsMTcyLDExMCw0LDQsNTksNjksMTAwLDExOCwxMzgwMCwxMzgwMiwxMzgwNiwxMzgxMiwxLDg3MTMsNTksMyw4OTUzLDgyNCwxMTEsMTE2LDU5LDMsODk0OSw4MjQsNCwzLDk3LDk4LDk5LDEzODIwLDEzODIzLDEzODI2LDU5LDEsODcxMyw1OSwxLDg5NTEsNTksMSw4OTUwLDEwNSw0LDIsNTksMTE4LDEzODM2LDEzODM4LDEsODcxNiw0LDMsOTcsOTgsOTksMTM4NDYsMTM4NDksMTM4NTIsNTksMSw4NzE2LDU5LDEsODk1OCw1OSwxLDg5NTcsNCwzLDk3LDExMSwxMTQsMTM4NjMsMTM4OTIsMTM4OTksMTE0LDQsNCw1OSw5NywxMTUsMTE2LDEzODc0LDEzODc2LDEzODgzLDEzODg4LDEsODc0MiwxMDgsMTA4LDEwMSwxMDgsNTksMSw4NzQyLDEwOCw1OSwzLDExMDA1LDg0MjEsNTksMyw4NzA2LDgyNCwxMDgsMTA1LDExMCwxMTYsNTksMSwxMDc3Miw0LDMsNTksOTksMTAxLDEzOTA3LDEzOTA5LDEzOTE0LDEsODgzMiwxMTcsMTAxLDU5LDEsODkyOCw0LDIsNTksOTksMTM5MjAsMTM5MjMsMywxMDkyNyw4MjQsNCwyLDU5LDEwMSwxMzkyOSwxMzkzMSwxLDg4MzIsMTEzLDU5LDMsMTA5MjcsODI0LDQsNCw2NSw5NywxMDUsMTE2LDEzOTQ2LDEzOTUxLDEzOTcxLDEzOTgyLDExNCwxMTQsNTksMSw4NjU1LDExNCwxMTQsNCwzLDU5LDk5LDExOSwxMzk2MSwxMzk2MywxMzk2NywxLDg2MDMsNTksMywxMDU0Nyw4MjQsNTksMyw4NjA1LDgyNCwxMDMsMTA0LDExNiw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjAzLDExNCwxMDUsNCwyLDU5LDEwMSwxMzk5MCwxMzk5MiwxLDg5MzksNTksMSw4OTQxLDQsNyw5OSwxMDQsMTA1LDEwOSwxMTIsMTEzLDExNywxNDAxMSwxNDAzNiwxNDA2MCwxNDA4MCwxNDA4NSwxNDA5MCwxNDEwNiw0LDQsNTksOTksMTAxLDExNCwxNDAyMSwxNDAyMywxNDAyOCwxNDAzMiwxLDg4MzMsMTE3LDEwMSw1OSwxLDg5MjksNTksMywxMDkyOCw4MjQsNTksMyw1NTM0OSw1NjUxNSwxMTEsMTE0LDExNiw0LDIsMTA5LDExMiwxNDA0NSwxNDA1MCwxMDUsMTAwLDU5LDEsODc0MCw5NywxMTQsOTcsMTA4LDEwOCwxMDEsMTA4LDU5LDEsODc0MiwxMDksNCwyLDU5LDEwMSwxNDA2NywxNDA2OSwxLDg3NjksNCwyLDU5LDExMywxNDA3NSwxNDA3NywxLDg3NzIsNTksMSw4NzcyLDEwNSwxMDAsNTksMSw4NzQwLDk3LDExNCw1OSwxLDg3NDIsMTE1LDExNyw0LDIsOTgsMTEyLDE0MDk4LDE0MTAyLDEwMSw1OSwxLDg5MzAsMTAxLDU5LDEsODkzMSw0LDMsOTgsOTksMTEyLDE0MTE0LDE0MTU3LDE0MTcxLDQsNCw1OSw2OSwxMDEsMTE1LDE0MTI0LDE0MTI2LDE0MTMwLDE0MTMzLDEsODgzNiw1OSwzLDEwOTQ5LDgyNCw1OSwxLDg4NDAsMTAxLDExNiw0LDIsNTksMTAxLDE0MTQxLDE0MTQ0LDMsODgzNCw4NDAyLDExMyw0LDIsNTksMTEzLDE0MTUxLDE0MTUzLDEsODg0MCw1OSwzLDEwOTQ5LDgyNCw5OSw0LDIsNTksMTAxLDE0MTY0LDE0MTY2LDEsODgzMywxMTMsNTksMywxMDkyOCw4MjQsNCw0LDU5LDY5LDEwMSwxMTUsMTQxODEsMTQxODMsMTQxODcsMTQxOTAsMSw4ODM3LDU5LDMsMTA5NTAsODI0LDU5LDEsODg0MSwxMDEsMTE2LDQsMiw1OSwxMDEsMTQxOTgsMTQyMDEsMyw4ODM1LDg0MDIsMTEzLDQsMiw1OSwxMTMsMTQyMDgsMTQyMTAsMSw4ODQxLDU5LDMsMTA5NTAsODI0LDQsNCwxMDMsMTA1LDEwOCwxMTQsMTQyMjQsMTQyMjgsMTQyMzgsMTQyNDIsMTA4LDU5LDEsODgyNSwxMDgsMTAwLDEwMSw1LDI0MSwxLDU5LDE0MjM2LDEsMjQxLDEwMyw1OSwxLDg4MjQsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDIsMTA4LDExNCwxNDI1NCwxNDI2OSwxMDEsMTAyLDExNiw0LDIsNTksMTAxLDE0MjYzLDE0MjY1LDEsODkzOCwxMTMsNTksMSw4OTQwLDEwNSwxMDMsMTA0LDExNiw0LDIsNTksMTAxLDE0Mjc5LDE0MjgxLDEsODkzOSwxMTMsNTksMSw4OTQxLDQsMiw1OSwxMDksMTQyOTEsMTQyOTMsMSw5NTcsNCwzLDU5LDEwMSwxMTUsMTQzMDEsMTQzMDMsMTQzMDgsMSwzNSwxMTQsMTExLDU5LDEsODQ3MCwxMTIsNTksMSw4MTk5LDQsOSw2OCw3Miw5NywxMDAsMTAzLDEwNSwxMDgsMTE0LDExNSwxNDMzMiwxNDMzOCwxNDM0NCwxNDM0OSwxNDM1NSwxNDM2OSwxNDM3NiwxNDQwOCwxNDQyNiw5NywxMTUsMTA0LDU5LDEsODg3Nyw5NywxMTQsMTE0LDU5LDEsMTA1MDAsMTEyLDU5LDMsODc4MSw4NDAyLDk3LDExNSwxMDQsNTksMSw4ODc2LDQsMiwxMDEsMTE2LDE0MzYxLDE0MzY1LDU5LDMsODgwNSw4NDAyLDU5LDMsNjIsODQwMiwxMTAsMTAyLDEwNSwxMTAsNTksMSwxMDcxOCw0LDMsNjUsMTAxLDExNiwxNDM4NCwxNDM4OSwxNDM5MywxMTQsMTE0LDU5LDEsMTA0OTgsNTksMyw4ODA0LDg0MDIsNCwyLDU5LDExNCwxNDM5OSwxNDQwMiwzLDYwLDg0MDIsMTA1LDEwMSw1OSwzLDg4ODQsODQwMiw0LDIsNjUsMTE2LDE0NDE0LDE0NDE5LDExNCwxMTQsNTksMSwxMDQ5OSwxMTQsMTA1LDEwMSw1OSwzLDg4ODUsODQwMiwxMDUsMTA5LDU5LDMsODc2NCw4NDAyLDQsMyw2NSw5NywxMTAsMTQ0NDAsMTQ0NDUsMTQ0NjgsMTE0LDExNCw1OSwxLDg2NjIsMTE0LDQsMiwxMDQsMTE0LDE0NDUyLDE0NDU2LDEwNyw1OSwxLDEwNTMxLDQsMiw1OSwxMTEsMTQ0NjIsMTQ0NjQsMSw4NTk4LDExOSw1OSwxLDg1OTgsMTAxLDk3LDExNCw1OSwxLDEwNTM1LDQsMTgsODMsOTcsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA4LDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTgsMTQ1MTIsMTQ1MTUsMTQ1MzUsMTQ1NjAsMTQ1OTcsMTQ2MDMsMTQ2MTgsMTQ2NDMsMTQ2NTcsMTQ2NjIsMTQ3MDEsMTQ3NDEsMTQ3NDcsMTQ3NjksMTQ4NTEsMTQ4NzcsMTQ5MDcsMTQ5MTYsNTksMSw5NDE2LDQsMiw5OSwxMTUsMTQ1MjEsMTQ1MzEsMTE3LDExNiwxMDEsNSwyNDMsMSw1OSwxNDUyOSwxLDI0MywxMTYsNTksMSw4ODU5LDQsMiwxMDUsMTIxLDE0NTQxLDE0NTU3LDExNCw0LDIsNTksOTksMTQ1NDgsMTQ1NTAsMSw4ODU4LDUsMjQ0LDEsNTksMTQ1NTUsMSwyNDQsNTksMSwxMDg2LDQsNSw5Nyw5OCwxMDUsMTExLDExNSwxNDU3MiwxNDU3NywxNDU4MywxNDU4NywxNDU5MSwxMTUsMTA0LDU5LDEsODg2MSwxMDgsOTcsOTksNTksMSwzMzcsMTE4LDU5LDEsMTA4MDgsMTE2LDU5LDEsODg1NywxMTEsMTA4LDEwMCw1OSwxLDEwNjg0LDEwOCwxMDUsMTAzLDU5LDEsMzM5LDQsMiw5OSwxMTQsMTQ2MDksMTQ2MTQsMTA1LDExNCw1OSwxLDEwNjg3LDU5LDMsNTUzNDksNTY2MjAsNCwzLDExMSwxMTQsMTE2LDE0NjI2LDE0NjMwLDE0NjQwLDExMCw1OSwxLDczMSw5NywxMTgsMTAxLDUsMjQyLDEsNTksMTQ2MzgsMSwyNDIsNTksMSwxMDY4OSw0LDIsOTgsMTA5LDE0NjQ5LDE0NjU0LDk3LDExNCw1OSwxLDEwNjc3LDU5LDEsOTM3LDExMCwxMTYsNTksMSw4NzUwLDQsNCw5Nyw5OSwxMDUsMTE2LDE0NjcyLDE0Njc3LDE0NjkzLDE0Njk4LDExNCwxMTQsNTksMSw4NjM0LDQsMiwxMDUsMTE0LDE0NjgzLDE0Njg3LDExNCw1OSwxLDEwNjg2LDExMSwxMTUsMTE1LDU5LDEsMTA2ODMsMTEwLDEwMSw1OSwxLDgyNTQsNTksMSwxMDY4OCw0LDMsOTcsMTAxLDEwNSwxNDcwOSwxNDcxNCwxNDcxOSw5OSwxMTQsNTksMSwzMzMsMTAzLDk3LDU5LDEsOTY5LDQsMyw5OSwxMDAsMTEwLDE0NzI3LDE0NzMzLDE0NzM2LDExNCwxMTEsMTEwLDU5LDEsOTU5LDU5LDEsMTA2NzgsMTE3LDExNSw1OSwxLDg4NTQsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjcyLDQsMyw5NywxMDEsMTA4LDE0NzU1LDE0NzU5LDE0NzY0LDExNCw1OSwxLDEwNjc5LDExNCwxMTIsNTksMSwxMDY4MSwxMTcsMTE1LDU5LDEsODg1Myw0LDcsNTksOTcsMTAwLDEwNSwxMTEsMTE1LDExOCwxNDc4NSwxNDc4NywxNDc5MiwxNDgzMSwxNDgzNywxNDg0MSwxNDg0OCwxLDg3NDQsMTE0LDExNCw1OSwxLDg2MzUsNCw0LDU5LDEwMSwxMDIsMTA5LDE0ODAyLDE0ODA0LDE0ODE3LDE0ODI0LDEsMTA4NDUsMTE0LDQsMiw1OSwxMTEsMTQ4MTEsMTQ4MTMsMSw4NTAwLDEwMiw1OSwxLDg1MDAsNSwxNzAsMSw1OSwxNDgyMiwxLDE3MCw1LDE4NiwxLDU5LDE0ODI5LDEsMTg2LDEwMywxMTEsMTAyLDU5LDEsODg4NiwxMTQsNTksMSwxMDgzOCwxMDgsMTExLDExMiwxMDEsNTksMSwxMDgzOSw1OSwxLDEwODQzLDQsMyw5OSwxMDgsMTExLDE0ODU5LDE0ODYzLDE0ODczLDExNCw1OSwxLDg1MDAsOTcsMTE1LDEwNCw1LDI0OCwxLDU5LDE0ODcxLDEsMjQ4LDEwOCw1OSwxLDg4NTYsMTA1LDQsMiwxMDgsMTA5LDE0ODg0LDE0ODkzLDEwMCwxMDEsNSwyNDUsMSw1OSwxNDg5MSwxLDI0NSwxMDEsMTE1LDQsMiw1OSw5NywxNDkwMSwxNDkwMywxLDg4NTUsMTE1LDU5LDEsMTA4MDYsMTA5LDEwOCw1LDI0NiwxLDU5LDE0OTE0LDEsMjQ2LDk4LDk3LDExNCw1OSwxLDkwMjEsNCwxMiw5Nyw5OSwxMDEsMTAyLDEwNCwxMDUsMTA4LDEwOSwxMTEsMTE0LDExNSwxMTcsMTQ5NDgsMTQ5OTIsMTQ5OTYsMTUwMzMsMTUwMzgsMTUwNjgsMTUwOTAsMTUxODksMTUxOTIsMTUyMjIsMTU0MjcsMTU0NDEsMTE0LDQsNCw1OSw5NywxMTUsMTE2LDE0OTU5LDE0OTYxLDE0OTc2LDE0OTg5LDEsODc0MSw1LDE4MiwyLDU5LDEwOCwxNDk2OCwxNDk3MCwxLDE4MiwxMDgsMTAxLDEwOCw1OSwxLDg3NDEsNCwyLDEwNSwxMDgsMTQ5ODIsMTQ5ODYsMTA5LDU5LDEsMTA5OTUsNTksMSwxMTAwNSw1OSwxLDg3MDYsMTIxLDU5LDEsMTA4NywxMTQsNCw1LDk5LDEwNSwxMDksMTEyLDExNiwxNTAwOSwxNTAxNCwxNTAxOSwxNTAyNCwxNTAyNywxMTAsMTE2LDU5LDEsMzcsMTExLDEwMCw1OSwxLDQ2LDEwNSwxMDgsNTksMSw4MjQwLDU5LDEsODg2OSwxMDEsMTEwLDEwNyw1OSwxLDgyNDEsMTE0LDU5LDMsNTUzNDksNTY2MjEsNCwzLDEwNSwxMDksMTExLDE1MDQ2LDE1MDU3LDE1MDYzLDQsMiw1OSwxMTgsMTUwNTIsMTUwNTQsMSw5NjYsNTksMSw5ODEsMTA5LDk3LDExNiw1OSwxLDg0OTksMTEwLDEwMSw1OSwxLDk3NDIsNCwzLDU5LDExNiwxMTgsMTUwNzYsMTUwNzgsMTUwODcsMSw5NjAsOTksMTA0LDEwMiwxMTEsMTE0LDEwNyw1OSwxLDg5MTYsNTksMSw5ODIsNCwyLDk3LDExNywxNTA5NiwxNTExOSwxMTAsNCwyLDk5LDEwNywxNTEwMywxNTExNSwxMDcsNCwyLDU5LDEwNCwxNTExMCwxNTExMiwxLDg0NjMsNTksMSw4NDYyLDExOCw1OSwxLDg0NjMsMTE1LDQsOSw1OSw5Nyw5OCw5OSwxMDAsMTAxLDEwOSwxMTUsMTE2LDE1MTQwLDE1MTQyLDE1MTQ4LDE1MTUxLDE1MTU2LDE1MTY4LDE1MTcxLDE1MTc5LDE1MTg0LDEsNDMsOTksMTA1LDExNCw1OSwxLDEwNzg3LDU5LDEsODg2MiwxMDUsMTE0LDU5LDEsMTA3ODYsNCwyLDExMSwxMTcsMTUxNjIsMTUxNjUsNTksMSw4NzI0LDU5LDEsMTA3ODksNTksMSwxMDg2NiwxMTAsNSwxNzcsMSw1OSwxNTE3NywxLDE3NywxMDUsMTA5LDU5LDEsMTA3OTAsMTE5LDExMSw1OSwxLDEwNzkxLDU5LDEsMTc3LDQsMywxMDUsMTEyLDExNywxNTIwMCwxNTIwOCwxNTIxMywxMTAsMTE2LDEwNSwxMTAsMTE2LDU5LDEsMTA3NzMsMTAyLDU5LDMsNTUzNDksNTY2NzMsMTEwLDEwMCw1LDE2MywxLDU5LDE1MjIwLDEsMTYzLDQsMTAsNTksNjksOTcsOTksMTAxLDEwNSwxMTAsMTExLDExNSwxMTcsMTUyNDQsMTUyNDYsMTUyNDksMTUyNTMsMTUyNTgsMTUzMzQsMTUzNDcsMTUzNjcsMTU0MTYsMTU0MjEsMSw4ODI2LDU5LDEsMTA5MzEsMTEyLDU5LDEsMTA5MzUsMTE3LDEwMSw1OSwxLDg4MjgsNCwyLDU5LDk5LDE1MjY0LDE1MjY2LDEsMTA5MjcsNCw2LDU5LDk3LDk5LDEwMSwxMTAsMTE1LDE1MjgwLDE1MjgyLDE1MjkwLDE1Mjk5LDE1MzAzLDE1MzI5LDEsODgyNiwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzUsMTE3LDExNCwxMDgsMTIxLDEwMSwxMTMsNTksMSw4ODI4LDExMyw1OSwxLDEwOTI3LDQsMyw5NywxMDEsMTE1LDE1MzExLDE1MzE5LDE1MzI0LDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDkzNywxMTMsMTEzLDU5LDEsMTA5MzMsMTA1LDEwOSw1OSwxLDg5MzYsMTA1LDEwOSw1OSwxLDg4MzAsMTA5LDEwMSw0LDIsNTksMTE1LDE1MzQyLDE1MzQ0LDEsODI0Miw1OSwxLDg0NzMsNCwzLDY5LDk3LDExNSwxNTM1NSwxNTM1OCwxNTM2Miw1OSwxLDEwOTMzLDExMiw1OSwxLDEwOTM3LDEwNSwxMDksNTksMSw4OTM2LDQsMywxMDAsMTAyLDExMiwxNTM3NSwxNTM3OCwxNTQwNCw1OSwxLDg3MTksNCwzLDk3LDEwOCwxMTUsMTUzODYsMTUzOTIsMTUzOTgsMTA4LDk3LDExNCw1OSwxLDkwMDYsMTA1LDExMCwxMDEsNTksMSw4OTc4LDExNywxMTQsMTAyLDU5LDEsODk3OSw0LDIsNTksMTE2LDE1NDEwLDE1NDEyLDEsODczMywxMTEsNTksMSw4NzMzLDEwNSwxMDksNTksMSw4ODMwLDExNCwxMDEsMTA4LDU5LDEsODg4MCw0LDIsOTksMTA1LDE1NDMzLDE1NDM4LDExNCw1OSwzLDU1MzQ5LDU2NTE3LDU5LDEsOTY4LDExMCw5OSwxMTUsMTEyLDU5LDEsODIwMCw0LDYsMTAyLDEwNSwxMTEsMTEyLDExNSwxMTcsMTU0NjIsMTU0NjcsMTU0NzIsMTU0NzgsMTU0ODUsMTU0OTEsMTE0LDU5LDMsNTUzNDksNTY2MjIsMTEwLDExNiw1OSwxLDEwNzY0LDExMiwxMDIsNTksMyw1NTM0OSw1NjY3NCwxMTQsMTA1LDEwOSwxMDEsNTksMSw4Mjc5LDk5LDExNCw1OSwzLDU1MzQ5LDU2NTE4LDQsMyw5NywxMDEsMTExLDE1NDk5LDE1NTIwLDE1NTM0LDExNiw0LDIsMTAxLDEwNSwxNTUwNiwxNTUxNSwxMTQsMTEwLDEwNSwxMTEsMTEwLDExNSw1OSwxLDg0NjEsMTEwLDExNiw1OSwxLDEwNzc0LDExNSwxMTYsNCwyLDU5LDEwMSwxNTUyOCwxNTUzMCwxLDYzLDExMyw1OSwxLDg3OTksMTE2LDUsMzQsMSw1OSwxNTU0MCwxLDM0LDQsMjEsNjUsNjYsNzIsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMCwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMjAsMTU1ODYsMTU2MDksMTU2MTUsMTU2MjAsMTU3OTYsMTU4NTUsMTU4OTMsMTU5MzEsMTU5NzcsMTYwMDEsMTYwMzksMTYxODMsMTYyMDQsMTYyMjIsMTYyMjgsMTYyODUsMTYzMTIsMTYzMTgsMTYzNjMsMTY0MDgsMTY0MTYsNCwzLDk3LDExNCwxMTYsMTU1OTQsMTU1OTksMTU2MDMsMTE0LDExNCw1OSwxLDg2NjcsMTE0LDU5LDEsODY1OCw5NywxMDUsMTA4LDU5LDEsMTA1MjQsOTcsMTE0LDExNCw1OSwxLDEwNTExLDk3LDExNCw1OSwxLDEwNTk2LDQsNyw5OSwxMDAsMTAxLDExMCwxMTMsMTE0LDExNiwxNTYzNiwxNTY1MSwxNTY1NiwxNTY2NCwxNTY4NywxNTY5NiwxNTc3MCw0LDIsMTAxLDExNywxNTY0MiwxNTY0Niw1OSwzLDg3NjUsODE3LDExNiwxMDEsNTksMSwzNDEsMTA1LDk5LDU5LDEsODczMCwxMDksMTEyLDExNiwxMjEsMTE4LDU5LDEsMTA2NzUsMTAzLDQsNCw1OSwxMDAsMTAxLDEwOCwxNTY3NSwxNTY3NywxNTY4MCwxNTY4MywxLDEwMjE3LDU5LDEsMTA2NDIsNTksMSwxMDY2MSwxMDEsNTksMSwxMDIxNywxMTcsMTExLDUsMTg3LDEsNTksMTU2OTQsMSwxODcsMTE0LDQsMTEsNTksOTcsOTgsOTksMTAyLDEwNCwxMDgsMTEyLDExNSwxMTYsMTE5LDE1NzIxLDE1NzIzLDE1NzI3LDE1NzM5LDE1NzQyLDE1NzQ2LDE1NzUwLDE1NzU0LDE1NzU4LDE1NzYzLDE1NzY3LDEsODU5NCwxMTIsNTksMSwxMDYxMyw0LDIsNTksMTAyLDE1NzMzLDE1NzM1LDEsODY3NywxMTUsNTksMSwxMDUyOCw1OSwxLDEwNTQ3LDExNSw1OSwxLDEwNTI2LDEwNyw1OSwxLDg2MTgsMTEyLDU5LDEsODYyMCwxMDgsNTksMSwxMDU2NSwxMDUsMTA5LDU5LDEsMTA2MTIsMTA4LDU5LDEsODYxMSw1OSwxLDg2MDUsNCwyLDk3LDEwNSwxNTc3NiwxNTc4MSwxMDUsMTA4LDU5LDEsMTA1MjIsMTExLDQsMiw1OSwxMTAsMTU3ODgsMTU3OTAsMSw4NzU4LDk3LDEwOCwxMTUsNTksMSw4NDc0LDQsMyw5Nyw5OCwxMTQsMTU4MDQsMTU4MDksMTU4MTQsMTE0LDExNCw1OSwxLDEwNTA5LDExNCwxMDcsNTksMSwxMDA5OSw0LDIsOTcsMTA3LDE1ODIwLDE1ODMzLDk5LDQsMiwxMDEsMTA3LDE1ODI3LDE1ODMwLDU5LDEsMTI1LDU5LDEsOTMsNCwyLDEwMSwxMTUsMTU4MzksMTU4NDIsNTksMSwxMDYzNiwxMDgsNCwyLDEwMCwxMTcsMTU4NDksMTU4NTIsNTksMSwxMDYzOCw1OSwxLDEwNjQwLDQsNCw5NywxMDEsMTE3LDEyMSwxNTg2NSwxNTg3MSwxNTg4NiwxNTg5MCwxMTQsMTExLDExMCw1OSwxLDM0NSw0LDIsMTAwLDEwNSwxNTg3NywxNTg4MiwxMDUsMTA4LDU5LDEsMzQzLDEwOCw1OSwxLDg5NjksOTgsNTksMSwxMjUsNTksMSwxMDg4LDQsNCw5OSwxMDgsMTEzLDExNSwxNTkwMywxNTkwNywxNTkxNCwxNTkyNyw5Nyw1OSwxLDEwNTUxLDEwMCwxMDQsOTcsMTE0LDU5LDEsMTA2MDEsMTE3LDExMSw0LDIsNTksMTE0LDE1OTIyLDE1OTI0LDEsODIyMSw1OSwxLDgyMjEsMTA0LDU5LDEsODYyNyw0LDMsOTcsOTksMTAzLDE1OTM5LDE1OTY2LDE1OTcwLDEwOCw0LDQsNTksMTA1LDExMiwxMTUsMTU5NTAsMTU5NTIsMTU5NTcsMTU5NjMsMSw4NDc2LDExMCwxMDEsNTksMSw4NDc1LDk3LDExNCwxMTYsNTksMSw4NDc2LDU5LDEsODQ3NywxMTYsNTksMSw5NjQ1LDUsMTc0LDEsNTksMTU5NzUsMSwxNzQsNCwzLDEwNSwxMDgsMTE0LDE1OTg1LDE1OTkxLDE1OTk3LDExNSwxMDQsMTE2LDU5LDEsMTA2MjEsMTExLDExMSwxMTQsNTksMSw4OTcxLDU5LDMsNTUzNDksNTY2MjMsNCwyLDk3LDExMSwxNjAwNywxNjAyOCwxMTQsNCwyLDEwMCwxMTcsMTYwMTQsMTYwMTcsNTksMSw4NjQxLDQsMiw1OSwxMDgsMTYwMjMsMTYwMjUsMSw4NjQwLDU5LDEsMTA2MDQsNCwyLDU5LDExOCwxNjAzNCwxNjAzNiwxLDk2MSw1OSwxLDEwMDksNCwzLDEwMywxMTAsMTE1LDE2MDQ3LDE2MTY3LDE2MTcxLDEwNCwxMTYsNCw2LDk3LDEwNCwxMDgsMTE0LDExNSwxMTYsMTYwNjMsMTYwODEsMTYxMDMsMTYxMzAsMTYxNDMsMTYxNTUsMTE0LDExNCwxMTEsMTE5LDQsMiw1OSwxMTYsMTYwNzMsMTYwNzUsMSw4NTk0LDk3LDEwNSwxMDgsNTksMSw4NjExLDk3LDExNCwxMTIsMTExLDExMSwxMTAsNCwyLDEwMCwxMTcsMTYwOTMsMTYwOTksMTExLDExOSwxMTAsNTksMSw4NjQxLDExMiw1OSwxLDg2NDAsMTAxLDEwMiwxMTYsNCwyLDk3LDEwNCwxNjExMiwxNjEyMCwxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0NCw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDExNSw1OSwxLDg2NTIsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSwxMTUsNTksMSw4NjQ5LDExMywxMTcsMTA1LDEwMyw5NywxMTQsMTE0LDExMSwxMTksNTksMSw4NjA1LDEwNCwxMTQsMTAxLDEwMSwxMTYsMTA1LDEwOSwxMDEsMTE1LDU5LDEsODkwOCwxMDMsNTksMSw3MzAsMTA1LDExMCwxMDMsMTAwLDExMSwxMTYsMTE1LDEwMSwxMTMsNTksMSw4Nzg3LDQsMyw5NywxMDQsMTA5LDE2MTkxLDE2MTk2LDE2MjAxLDExNCwxMTQsNTksMSw4NjQ0LDk3LDExNCw1OSwxLDg2NTIsNTksMSw4MjA3LDExMSwxMTcsMTE1LDExNiw0LDIsNTksOTcsMTYyMTQsMTYyMTYsMSw5MTM3LDk5LDEwNCwxMDEsNTksMSw5MTM3LDEwOSwxMDUsMTAwLDU5LDEsMTA5OTAsNCw0LDk3LDk4LDExMiwxMTYsMTYyMzgsMTYyNTIsMTYyNTcsMTYyNzgsNCwyLDExMCwxMTQsMTYyNDQsMTYyNDgsMTAzLDU5LDEsMTAyMjEsMTE0LDU5LDEsODcwMiwxMTQsMTA3LDU5LDEsMTAyMTUsNCwzLDk3LDEwMiwxMDgsMTYyNjUsMTYyNjksMTYyNzMsMTE0LDU5LDEsMTA2MzAsNTksMyw1NTM0OSw1NjY3NSwxMTcsMTE1LDU5LDEsMTA3OTgsMTA1LDEwOSwxMDEsMTE1LDU5LDEsMTA4MDUsNCwyLDk3LDExMiwxNjI5MSwxNjMwNCwxMTQsNCwyLDU5LDEwMywxNjI5OCwxNjMwMCwxLDQxLDExNiw1OSwxLDEwNjQ0LDExMSwxMDgsMTA1LDExMCwxMTYsNTksMSwxMDc3MCw5NywxMTQsMTE0LDU5LDEsODY0OSw0LDQsOTcsOTksMTA0LDExMywxNjMyOCwxNjMzNCwxNjMzOSwxNjM0MiwxMTMsMTE3LDExMSw1OSwxLDgyNTAsMTE0LDU5LDMsNTUzNDksNTY1MTksNTksMSw4NjI1LDQsMiw5OCwxMTcsMTYzNDgsMTYzNTEsNTksMSw5MywxMTEsNCwyLDU5LDExNCwxNjM1OCwxNjM2MCwxLDgyMTcsNTksMSw4MjE3LDQsMywxMDQsMTA1LDExNCwxNjM3MSwxNjM3NywxNjM4MywxMTQsMTAxLDEwMSw1OSwxLDg5MDgsMTA5LDEwMSwxMTUsNTksMSw4OTA2LDEwNSw0LDQsNTksMTAxLDEwMiwxMDgsMTYzOTQsMTYzOTYsMTYzOTksMTY0MDIsMSw5NjU3LDU5LDEsODg4NSw1OSwxLDk2NTYsMTE2LDExNCwxMDUsNTksMSwxMDcwMiwxMDgsMTE3LDEwNCw5NywxMTQsNTksMSwxMDYwMCw1OSwxLDg0NzgsNCwxOSw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDEwOCwxMDksMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOSwxMjIsMTY0NTksMTY0NjYsMTY0NzIsMTY1NzIsMTY1OTAsMTY2NzIsMTY2ODcsMTY3NDYsMTY4NDQsMTY4NTAsMTY5MjQsMTY5NjMsMTY5ODgsMTcxMTUsMTcxMjEsMTcxNTQsMTcyMDYsMTc2MTQsMTc2NTYsOTksMTE3LDExNiwxMDEsNTksMSwzNDcsMTEzLDExNywxMTEsNTksMSw4MjE4LDQsMTAsNTksNjksOTcsOTksMTAxLDEwNSwxMTAsMTEyLDExNSwxMjEsMTY0OTQsMTY0OTYsMTY0OTksMTY1MTMsMTY1MTgsMTY1MzEsMTY1MzYsMTY1NTYsMTY1NjQsMTY1NjksMSw4ODI3LDU5LDEsMTA5MzIsNCwyLDExMiwxMTQsMTY1MDUsMTY1MDgsNTksMSwxMDkzNiwxMTEsMTEwLDU5LDEsMzUzLDExNywxMDEsNTksMSw4ODI5LDQsMiw1OSwxMDAsMTY1MjQsMTY1MjYsMSwxMDkyOCwxMDUsMTA4LDU5LDEsMzUxLDExNCw5OSw1OSwxLDM0OSw0LDMsNjksOTcsMTE1LDE2NTQ0LDE2NTQ3LDE2NTUxLDU5LDEsMTA5MzQsMTEyLDU5LDEsMTA5MzgsMTA1LDEwOSw1OSwxLDg5MzcsMTExLDEwOCwxMDUsMTEwLDExNiw1OSwxLDEwNzcxLDEwNSwxMDksNTksMSw4ODMxLDU5LDEsMTA4OSwxMTEsMTE2LDQsMyw1OSw5OCwxMDEsMTY1ODIsMTY1ODQsMTY1ODcsMSw4OTAxLDU5LDEsODg2NSw1OSwxLDEwODU0LDQsNyw2NSw5Nyw5OSwxMDksMTE1LDExNiwxMjAsMTY2MDYsMTY2MTEsMTY2MzQsMTY2NDIsMTY2NDYsMTY2NTIsMTY2NjgsMTE0LDExNCw1OSwxLDg2NjQsMTE0LDQsMiwxMDQsMTE0LDE2NjE4LDE2NjIyLDEwNyw1OSwxLDEwNTMzLDQsMiw1OSwxMTEsMTY2MjgsMTY2MzAsMSw4NjAwLDExOSw1OSwxLDg2MDAsMTE2LDUsMTY3LDEsNTksMTY2NDAsMSwxNjcsMTA1LDU5LDEsNTksMTE5LDk3LDExNCw1OSwxLDEwNTM3LDEwOSw0LDIsMTA1LDExMCwxNjY1OSwxNjY2NSwxMTAsMTE3LDExNSw1OSwxLDg3MjYsNTksMSw4NzI2LDExNiw1OSwxLDEwMDM4LDExNCw0LDIsNTksMTExLDE2Njc5LDE2NjgyLDMsNTUzNDksNTY2MjQsMTE5LDExMCw1OSwxLDg5OTQsNCw0LDk3LDk5LDExMSwxMjEsMTY2OTcsMTY3MDIsMTY3MTYsMTY3MzksMTE0LDExMiw1OSwxLDk4MzksNCwyLDEwNCwxMjEsMTY3MDgsMTY3MTMsOTksMTIxLDU5LDEsMTA5Nyw1OSwxLDEwOTYsMTE0LDExNiw0LDIsMTA5LDExMiwxNjcyNCwxNjcyOSwxMDUsMTAwLDU5LDEsODczOSw5NywxMTQsOTcsMTA4LDEwOCwxMDEsMTA4LDU5LDEsODc0MSw1LDE3MywxLDU5LDE2NzQ0LDEsMTczLDQsMiwxMDMsMTA5LDE2NzUyLDE2NzcwLDEwOSw5Nyw0LDMsNTksMTAyLDExOCwxNjc2MiwxNjc2NCwxNjc2NywxLDk2Myw1OSwxLDk2Miw1OSwxLDk2Miw0LDgsNTksMTAwLDEwMSwxMDMsMTA4LDExMCwxMTIsMTE0LDE2Nzg4LDE2NzkwLDE2Nzk1LDE2ODA2LDE2ODE3LDE2ODI4LDE2ODMyLDE2ODM4LDEsODc2NCwxMTEsMTE2LDU5LDEsMTA4NTgsNCwyLDU5LDExMywxNjgwMSwxNjgwMywxLDg3NzEsNTksMSw4NzcxLDQsMiw1OSw2OSwxNjgxMiwxNjgxNCwxLDEwOTEwLDU5LDEsMTA5MTIsNCwyLDU5LDY5LDE2ODIzLDE2ODI1LDEsMTA5MDksNTksMSwxMDkxMSwxMDEsNTksMSw4Nzc0LDEwOCwxMTcsMTE1LDU5LDEsMTA3ODgsOTcsMTE0LDExNCw1OSwxLDEwNjEwLDk3LDExNCwxMTQsNTksMSw4NTkyLDQsNCw5NywxMDEsMTA1LDExNiwxNjg2MCwxNjg4MywxNjg5MSwxNjkwNCw0LDIsMTA4LDExNSwxNjg2NiwxNjg3OCwxMDgsMTE1LDEwMSwxMTYsMTA5LDEwNSwxMTAsMTE3LDExNSw1OSwxLDg3MjYsMTA0LDExMiw1OSwxLDEwODAzLDExMiw5NywxMTQsMTE1LDEwOCw1OSwxLDEwNzI0LDQsMiwxMDAsMTA4LDE2ODk3LDE2OTAwLDU5LDEsODczOSwxMDEsNTksMSw4OTk1LDQsMiw1OSwxMDEsMTY5MTAsMTY5MTIsMSwxMDkyMiw0LDIsNTksMTE1LDE2OTE4LDE2OTIwLDEsMTA5MjQsNTksMywxMDkyNCw2NTAyNCw0LDMsMTAyLDEwOCwxMTIsMTY5MzIsMTY5MzgsMTY5NTgsMTE2LDk5LDEyMSw1OSwxLDExMDAsNCwyLDU5LDk4LDE2OTQ0LDE2OTQ2LDEsNDcsNCwyLDU5LDk3LDE2OTUyLDE2OTU0LDEsMTA2OTIsMTE0LDU5LDEsOTAyMywxMDIsNTksMyw1NTM0OSw1NjY3Niw5Nyw0LDIsMTAwLDExNCwxNjk3MCwxNjk4NSwxMDEsMTE1LDQsMiw1OSwxMTcsMTY5NzgsMTY5ODAsMSw5ODI0LDEwNSwxMTYsNTksMSw5ODI0LDU5LDEsODc0MSw0LDMsOTksMTE1LDExNywxNjk5NiwxNzAyOCwxNzA4OSw0LDIsOTcsMTE3LDE3MDAyLDE3MDE1LDExMiw0LDIsNTksMTE1LDE3MDA5LDE3MDExLDEsODg1MSw1OSwzLDg4NTEsNjUwMjQsMTEyLDQsMiw1OSwxMTUsMTcwMjIsMTcwMjQsMSw4ODUyLDU5LDMsODg1Miw2NTAyNCwxMTcsNCwyLDk4LDExMiwxNzAzNSwxNzA2Miw0LDMsNTksMTAxLDExNSwxNzA0MywxNzA0NSwxNzA0OCwxLDg4NDcsNTksMSw4ODQ5LDEwMSwxMTYsNCwyLDU5LDEwMSwxNzA1NiwxNzA1OCwxLDg4NDcsMTEzLDU5LDEsODg0OSw0LDMsNTksMTAxLDExNSwxNzA3MCwxNzA3MiwxNzA3NSwxLDg4NDgsNTksMSw4ODUwLDEwMSwxMTYsNCwyLDU5LDEwMSwxNzA4MywxNzA4NSwxLDg4NDgsMTEzLDU5LDEsODg1MCw0LDMsNTksOTcsMTAyLDE3MDk3LDE3MDk5LDE3MTEyLDEsOTYzMywxMTQsNCwyLDEwMSwxMDIsMTcxMDYsMTcxMDksNTksMSw5NjMzLDU5LDEsOTY0Miw1OSwxLDk2NDIsOTcsMTE0LDExNCw1OSwxLDg1OTQsNCw0LDk5LDEwMSwxMDksMTE2LDE3MTMxLDE3MTM2LDE3MTQyLDE3MTQ4LDExNCw1OSwzLDU1MzQ5LDU2NTIwLDExNiwxMDksMTEwLDU5LDEsODcyNiwxMDUsMTA4LDEwMSw1OSwxLDg5OTUsOTcsMTE0LDEwMiw1OSwxLDg5MDIsNCwyLDk3LDExNCwxNzE2MCwxNzE3MiwxMTQsNCwyLDU5LDEwMiwxNzE2NywxNzE2OSwxLDk3MzQsNTksMSw5NzMzLDQsMiw5NywxMTAsMTcxNzgsMTcyMDIsMTA1LDEwMywxMDQsMTE2LDQsMiwxMDEsMTEyLDE3MTg4LDE3MTk3LDExMiwxMTUsMTA1LDEwOCwxMTEsMTEwLDU5LDEsMTAxMywxMDQsMTA1LDU5LDEsOTgxLDExNSw1OSwxLDE3NSw0LDUsOTgsOTksMTA5LDExMCwxMTIsMTcyMTgsMTczNTEsMTc0MjAsMTc0MjMsMTc0MjcsNCw5LDU5LDY5LDEwMCwxMDEsMTA5LDExMCwxMTIsMTE0LDExNSwxNzIzOCwxNzI0MCwxNzI0MywxNzI0OCwxNzI2MSwxNzI2NywxNzI3OSwxNzI4NSwxNzI5MSwxLDg4MzQsNTksMSwxMDk0OSwxMTEsMTE2LDU5LDEsMTA5NDEsNCwyLDU5LDEwMCwxNzI1NCwxNzI1NiwxLDg4MzgsMTExLDExNiw1OSwxLDEwOTQ3LDExNywxMDgsMTE2LDU5LDEsMTA5NDUsNCwyLDY5LDEwMSwxNzI3MywxNzI3Niw1OSwxLDEwOTU1LDU5LDEsODg0MiwxMDgsMTE3LDExNSw1OSwxLDEwOTQzLDk3LDExNCwxMTQsNTksMSwxMDYxNyw0LDMsMTAxLDEwNSwxMTcsMTcyOTksMTczMzUsMTczMzksMTE2LDQsMyw1OSwxMDEsMTEwLDE3MzA4LDE3MzEwLDE3MzIyLDEsODgzNCwxMTMsNCwyLDU5LDExMywxNzMxNywxNzMxOSwxLDg4MzgsNTksMSwxMDk0OSwxMDEsMTEzLDQsMiw1OSwxMTMsMTczMzAsMTczMzIsMSw4ODQyLDU5LDEsMTA5NTUsMTA5LDU5LDEsMTA5NTEsNCwyLDk4LDExMiwxNzM0NSwxNzM0OCw1OSwxLDEwOTY1LDU5LDEsMTA5NjMsOTksNCw2LDU5LDk3LDk5LDEwMSwxMTAsMTE1LDE3MzY2LDE3MzY4LDE3Mzc2LDE3Mzg1LDE3Mzg5LDE3NDE1LDEsODgyNywxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsMTA5MzYsMTE3LDExNCwxMDgsMTIxLDEwMSwxMTMsNTksMSw4ODI5LDExMyw1OSwxLDEwOTI4LDQsMyw5NywxMDEsMTE1LDE3Mzk3LDE3NDA1LDE3NDEwLDExMiwxMTIsMTE0LDExMSwxMjAsNTksMSwxMDkzOCwxMTMsMTEzLDU5LDEsMTA5MzQsMTA1LDEwOSw1OSwxLDg5MzcsMTA1LDEwOSw1OSwxLDg4MzEsNTksMSw4NzIxLDEwMyw1OSwxLDk4MzQsNCwxMyw0OSw1MCw1MSw1OSw2OSwxMDAsMTAxLDEwNCwxMDgsMTA5LDExMCwxMTIsMTE1LDE3NDU1LDE3NDYyLDE3NDY5LDE3NDc2LDE3NDc4LDE3NDgxLDE3NDk2LDE3NTA5LDE3NTI0LDE3NTMwLDE3NTM2LDE3NTQ4LDE3NTU0LDUsMTg1LDEsNTksMTc0NjAsMSwxODUsNSwxNzgsMSw1OSwxNzQ2NywxLDE3OCw1LDE3OSwxLDU5LDE3NDc0LDEsMTc5LDEsODgzNSw1OSwxLDEwOTUwLDQsMiwxMTEsMTE1LDE3NDg3LDE3NDkxLDExNiw1OSwxLDEwOTQyLDExNyw5OCw1OSwxLDEwOTY4LDQsMiw1OSwxMDAsMTc1MDIsMTc1MDQsMSw4ODM5LDExMSwxMTYsNTksMSwxMDk0OCwxMTUsNCwyLDExMSwxMTcsMTc1MTYsMTc1MjAsMTA4LDU5LDEsMTAxODUsOTgsNTksMSwxMDk2Nyw5NywxMTQsMTE0LDU5LDEsMTA2MTksMTE3LDEwOCwxMTYsNTksMSwxMDk0Niw0LDIsNjksMTAxLDE3NTQyLDE3NTQ1LDU5LDEsMTA5NTYsNTksMSw4ODQzLDEwOCwxMTcsMTE1LDU5LDEsMTA5NDQsNCwzLDEwMSwxMDUsMTE3LDE3NTYyLDE3NTk4LDE3NjAyLDExNiw0LDMsNTksMTAxLDExMCwxNzU3MSwxNzU3MywxNzU4NSwxLDg4MzUsMTEzLDQsMiw1OSwxMTMsMTc1ODAsMTc1ODIsMSw4ODM5LDU5LDEsMTA5NTAsMTAxLDExMyw0LDIsNTksMTEzLDE3NTkzLDE3NTk1LDEsODg0Myw1OSwxLDEwOTU2LDEwOSw1OSwxLDEwOTUyLDQsMiw5OCwxMTIsMTc2MDgsMTc2MTEsNTksMSwxMDk2NCw1OSwxLDEwOTY2LDQsMyw2NSw5NywxMTAsMTc2MjIsMTc2MjcsMTc2NTAsMTE0LDExNCw1OSwxLDg2NjUsMTE0LDQsMiwxMDQsMTE0LDE3NjM0LDE3NjM4LDEwNyw1OSwxLDEwNTM0LDQsMiw1OSwxMTEsMTc2NDQsMTc2NDYsMSw4NjAxLDExOSw1OSwxLDg2MDEsMTE5LDk3LDExNCw1OSwxLDEwNTM4LDEwOCwxMDUsMTAzLDUsMjIzLDEsNTksMTc2NjQsMSwyMjMsNCwxMyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDQsMTA1LDExMSwxMTIsMTE0LDExNSwxMTksMTc2OTQsMTc3MDksMTc3MTQsMTc3MzcsMTc3NDIsMTc3NDksMTc3NTQsMTc4NjAsMTc5MDUsMTc5NTcsMTc5NjQsMTgwOTAsMTgxMjIsNCwyLDExNCwxMTcsMTc3MDAsMTc3MDYsMTAzLDEwMSwxMTYsNTksMSw4OTgyLDU5LDEsOTY0LDExNCwxMDcsNTksMSw5MTQwLDQsMyw5NywxMDEsMTIxLDE3NzIyLDE3NzI4LDE3NzM0LDExNCwxMTEsMTEwLDU5LDEsMzU3LDEwMCwxMDUsMTA4LDU5LDEsMzU1LDU5LDEsMTA5MCwxMTEsMTE2LDU5LDEsODQxMSwxMDgsMTE0LDEwMSw5OSw1OSwxLDg5ODEsMTE0LDU5LDMsNTUzNDksNTY2MjUsNCw0LDEwMSwxMDUsMTA3LDExMSwxNzc2NCwxNzgwNSwxNzgzNiwxNzg1MSw0LDIsMTE0LDExNiwxNzc3MCwxNzc4NiwxMDEsNCwyLDUyLDEwMiwxNzc3NywxNzc4MCw1OSwxLDg3NTYsMTExLDExNCwxMDEsNTksMSw4NzU2LDk3LDQsMyw1OSwxMTUsMTE4LDE3Nzk1LDE3Nzk3LDE3ODAyLDEsOTUyLDEyMSwxMDksNTksMSw5NzcsNTksMSw5NzcsNCwyLDk5LDExMCwxNzgxMSwxNzgzMSwxMDcsNCwyLDk3LDExNSwxNzgxOCwxNzgyNiwxMTIsMTEyLDExNCwxMTEsMTIwLDU5LDEsODc3NiwxMDUsMTA5LDU5LDEsODc2NCwxMTUsMTEyLDU5LDEsODIwMSw0LDIsOTcsMTE1LDE3ODQyLDE3ODQ2LDExMiw1OSwxLDg3NzYsMTA1LDEwOSw1OSwxLDg3NjQsMTE0LDExMCw1LDI1NCwxLDU5LDE3ODU4LDEsMjU0LDQsMywxMDgsMTA5LDExMCwxNzg2OCwxNzg3MywxNzkwMSwxMDAsMTAxLDU5LDEsNzMyLDEwMSwxMTUsNSwyMTUsMyw1OSw5OCwxMDAsMTc4ODQsMTc4ODYsMTc4OTgsMSwyMTUsNCwyLDU5LDk3LDE3ODkyLDE3ODk0LDEsODg2NCwxMTQsNTksMSwxMDgwMSw1OSwxLDEwODAwLDExNiw1OSwxLDg3NDksNCwzLDEwMSwxMTIsMTE1LDE3OTEzLDE3OTE3LDE3OTUzLDk3LDU5LDEsMTA1MzYsNCw0LDU5LDk4LDk5LDEwMiwxNzkyNywxNzkyOSwxNzkzNCwxNzkzOSwxLDg4NjgsMTExLDExNiw1OSwxLDkwMTQsMTA1LDExNCw1OSwxLDEwOTkzLDQsMiw1OSwxMTEsMTc5NDUsMTc5NDgsMyw1NTM0OSw1NjY3NywxMTQsMTA3LDU5LDEsMTA5NzAsOTcsNTksMSwxMDUzNywxMTQsMTA1LDEwOSwxMDEsNTksMSw4MjQ0LDQsMyw5NywxMDUsMTEyLDE3OTcyLDE3OTc3LDE4MDgyLDEwMCwxMDEsNTksMSw4NDgyLDQsNyw5NywxMDAsMTAxLDEwOSwxMTIsMTE1LDExNiwxNzk5MywxODA1MSwxODA1NiwxODA1OSwxODA2NiwxODA3MiwxODA3NiwxMTAsMTAzLDEwOCwxMDEsNCw1LDU5LDEwMCwxMDgsMTEzLDExNCwxODAwOSwxODAxMSwxODAxNywxODAzMiwxODAzNSwxLDk2NTMsMTExLDExOSwxMTAsNTksMSw5NjYzLDEwMSwxMDIsMTE2LDQsMiw1OSwxMDEsMTgwMjYsMTgwMjgsMSw5NjY3LDExMyw1OSwxLDg4ODQsNTksMSw4Nzk2LDEwNSwxMDMsMTA0LDExNiw0LDIsNTksMTAxLDE4MDQ1LDE4MDQ3LDEsOTY1NywxMTMsNTksMSw4ODg1LDExMSwxMTYsNTksMSw5NzA4LDU5LDEsODc5NiwxMDUsMTEwLDExNywxMTUsNTksMSwxMDgxMCwxMDgsMTE3LDExNSw1OSwxLDEwODA5LDk4LDU5LDEsMTA3MDEsMTA1LDEwOSwxMDEsNTksMSwxMDgxMSwxMDEsMTIyLDEwNSwxMTcsMTA5LDU5LDEsOTE4Niw0LDMsOTksMTA0LDExNiwxODA5OCwxODExMSwxODExNiw0LDIsMTE0LDEyMSwxODEwNCwxODEwOCw1OSwzLDU1MzQ5LDU2NTIxLDU5LDEsMTA5NCw5OSwxMjEsNTksMSwxMTE1LDExNCwxMTEsMTA3LDU5LDEsMzU5LDQsMiwxMDUsMTExLDE4MTI4LDE4MTMzLDEyMCwxMTYsNTksMSw4ODEyLDEwNCwxMDEsOTcsMTAwLDQsMiwxMDgsMTE0LDE4MTQzLDE4MTU0LDEwMSwxMDIsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDYsMTA1LDEwMywxMDQsMTE2LDk3LDExNCwxMTQsMTExLDExOSw1OSwxLDg2MDgsNCwxOCw2NSw3Miw5Nyw5OCw5OSwxMDAsMTAyLDEwMywxMDQsMTA4LDEwOSwxMTEsMTEyLDExNCwxMTUsMTE2LDExNywxMTksMTgyMDQsMTgyMDksMTgyMTQsMTgyMzQsMTgyNTAsMTgyNjgsMTgyOTIsMTgzMDgsMTgzMTksMTgzNDMsMTgzNzksMTgzOTcsMTg0MTMsMTg1MDQsMTg1NDcsMTg1NTMsMTg1ODQsMTg2MDMsMTE0LDExNCw1OSwxLDg2NTcsOTcsMTE0LDU5LDEsMTA1OTUsNCwyLDk5LDExNCwxODIyMCwxODIzMCwxMTcsMTE2LDEwMSw1LDI1MCwxLDU5LDE4MjI4LDEsMjUwLDExNCw1OSwxLDg1OTMsMTE0LDQsMiw5OSwxMDEsMTgyNDEsMTgyNDUsMTIxLDU5LDEsMTExOCwxMTgsMTAxLDU5LDEsMzY1LDQsMiwxMDUsMTIxLDE4MjU2LDE4MjY1LDExNCw5OSw1LDI1MSwxLDU5LDE4MjYzLDEsMjUxLDU5LDEsMTA5MSw0LDMsOTcsOTgsMTA0LDE4Mjc2LDE4MjgxLDE4Mjg3LDExNCwxMTQsNTksMSw4NjQ1LDEwOCw5Nyw5OSw1OSwxLDM2OSw5NywxMTQsNTksMSwxMDYwNiw0LDIsMTA1LDExNCwxODI5OCwxODMwNCwxMTUsMTA0LDExNiw1OSwxLDEwNjIyLDU5LDMsNTUzNDksNTY2MjYsMTE0LDk3LDExOCwxMDEsNSwyNDksMSw1OSwxODMxNywxLDI0OSw0LDIsOTcsOTgsMTgzMjUsMTgzMzgsMTE0LDQsMiwxMDgsMTE0LDE4MzMyLDE4MzM1LDU5LDEsODYzOSw1OSwxLDg2MzgsMTA4LDEwNyw1OSwxLDk2MDAsNCwyLDk5LDExNiwxODM0OSwxODM3NCw0LDIsMTExLDExNCwxODM1NSwxODM2OSwxMTQsMTEwLDQsMiw1OSwxMDEsMTgzNjMsMTgzNjUsMSw4OTg4LDExNCw1OSwxLDg5ODgsMTExLDExMiw1OSwxLDg5NzUsMTE0LDEwNSw1OSwxLDk3MjAsNCwyLDk3LDEwOCwxODM4NSwxODM5MCw5OSwxMTQsNTksMSwzNjMsNSwxNjgsMSw1OSwxODM5NSwxLDE2OCw0LDIsMTAzLDExMiwxODQwMywxODQwOCwxMTEsMTEwLDU5LDEsMzcxLDEwMiw1OSwzLDU1MzQ5LDU2Njc4LDQsNiw5NywxMDAsMTA0LDEwOCwxMTUsMTE3LDE4NDI3LDE4NDM0LDE4NDQ1LDE4NDcwLDE4NDc1LDE4NDk0LDExNCwxMTQsMTExLDExOSw1OSwxLDg1OTMsMTExLDExOSwxMTAsOTcsMTE0LDExNCwxMTEsMTE5LDU5LDEsODU5Nyw5NywxMTQsMTEyLDExMSwxMTEsMTEwLDQsMiwxMDgsMTE0LDE4NDU3LDE4NDYzLDEwMSwxMDIsMTE2LDU5LDEsODYzOSwxMDUsMTAzLDEwNCwxMTYsNTksMSw4NjM4LDExNywxMTUsNTksMSw4ODQ2LDEwNSw0LDMsNTksMTA0LDEwOCwxODQ4NCwxODQ4NiwxODQ4OSwxLDk2NSw1OSwxLDk3OCwxMTEsMTEwLDU5LDEsOTY1LDExMiw5NywxMTQsMTE0LDExMSwxMTksMTE1LDU5LDEsODY0OCw0LDMsOTksMTA1LDExNiwxODUxMiwxODUzNywxODU0Miw0LDIsMTExLDExNCwxODUxOCwxODUzMiwxMTQsMTEwLDQsMiw1OSwxMDEsMTg1MjYsMTg1MjgsMSw4OTg5LDExNCw1OSwxLDg5ODksMTExLDExMiw1OSwxLDg5NzQsMTEwLDEwMyw1OSwxLDM2NywxMTQsMTA1LDU5LDEsOTcyMSw5OSwxMTQsNTksMyw1NTM0OSw1NjUyMiw0LDMsMTAwLDEwNSwxMTQsMTg1NjEsMTg1NjYsMTg1NzIsMTExLDExNiw1OSwxLDg5NDQsMTA4LDEwMCwxMDEsNTksMSwzNjEsMTA1LDQsMiw1OSwxMDIsMTg1NzksMTg1ODEsMSw5NjUzLDU5LDEsOTY1Miw0LDIsOTcsMTA5LDE4NTkwLDE4NTk1LDExNCwxMTQsNTksMSw4NjQ4LDEwOCw1LDI1MiwxLDU5LDE4NjAxLDEsMjUyLDk3LDExMCwxMDMsMTA4LDEwMSw1OSwxLDEwNjYzLDQsMTUsNjUsNjYsNjgsOTcsOTksMTAwLDEwMSwxMDIsMTA4LDExMCwxMTEsMTEyLDExNCwxMTUsMTIyLDE4NjQzLDE4NjQ4LDE4NjYxLDE4NjY3LDE4ODQ3LDE4ODUxLDE4ODU3LDE4OTA0LDE4OTA5LDE4OTE1LDE4OTMxLDE4OTM3LDE4OTQzLDE4OTQ5LDE4OTk2LDExNCwxMTQsNTksMSw4NjYxLDk3LDExNCw0LDIsNTksMTE4LDE4NjU2LDE4NjU4LDEsMTA5ODQsNTksMSwxMDk4NSw5NywxMTUsMTA0LDU5LDEsODg3Miw0LDIsMTEwLDExNCwxODY3MywxODY3OSwxMDMsMTE0LDExNiw1OSwxLDEwNjUyLDQsNywxMDEsMTA3LDExMCwxMTIsMTE0LDExNSwxMTYsMTg2OTUsMTg3MDQsMTg3MTEsMTg3MjAsMTg3NDIsMTg3NTQsMTg4MTAsMTEyLDExNSwxMDUsMTA4LDExMSwxMTAsNTksMSwxMDEzLDk3LDExMiwxMTIsOTcsNTksMSwxMDA4LDExMSwxMTYsMTA0LDEwNSwxMTAsMTAzLDU5LDEsODcwOSw0LDMsMTA0LDEwNSwxMTQsMTg3MjgsMTg3MzIsMTg3MzUsMTA1LDU5LDEsOTgxLDU5LDEsOTgyLDExMSwxMTIsMTE2LDExMSw1OSwxLDg3MzMsNCwyLDU5LDEwNCwxODc0OCwxODc1MCwxLDg1OTcsMTExLDU5LDEsMTAwOSw0LDIsMTA1LDExNywxODc2MCwxODc2NiwxMDMsMTA5LDk3LDU5LDEsOTYyLDQsMiw5OCwxMTIsMTg3NzIsMTg3OTEsMTE1LDEwMSwxMTYsMTEwLDEwMSwxMTMsNCwyLDU5LDExMywxODc4NCwxODc4NywzLDg4NDIsNjUwMjQsNTksMywxMDk1NSw2NTAyNCwxMTUsMTAxLDExNiwxMTAsMTAxLDExMyw0LDIsNTksMTEzLDE4ODAzLDE4ODA2LDMsODg0Myw2NTAyNCw1OSwzLDEwOTU2LDY1MDI0LDQsMiwxMDQsMTE0LDE4ODE2LDE4ODIyLDEwMSwxMTYsOTcsNTksMSw5NzcsMTA1LDk3LDExMCwxMDMsMTA4LDEwMSw0LDIsMTA4LDExNCwxODgzNCwxODg0MCwxMDEsMTAyLDExNiw1OSwxLDg4ODIsMTA1LDEwMywxMDQsMTE2LDU5LDEsODg4MywxMjEsNTksMSwxMDc0LDk3LDExNSwxMDQsNTksMSw4ODY2LDQsMywxMDEsMTA4LDExNCwxODg2NSwxODg4NCwxODg5MCw0LDMsNTksOTgsMTAxLDE4ODczLDE4ODc1LDE4ODgwLDEsODc0NCw5NywxMTQsNTksMSw4ODkxLDExMyw1OSwxLDg3OTQsMTA4LDEwNSwxMTIsNTksMSw4OTQyLDQsMiw5OCwxMTYsMTg4OTYsMTg5MDEsOTcsMTE0LDU5LDEsMTI0LDU5LDEsMTI0LDExNCw1OSwzLDU1MzQ5LDU2NjI3LDExNiwxMTQsMTA1LDU5LDEsODg4MiwxMTUsMTE3LDQsMiw5OCwxMTIsMTg5MjMsMTg5MjcsNTksMyw4ODM0LDg0MDIsNTksMyw4ODM1LDg0MDIsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2Njc5LDExNCwxMTEsMTEyLDU5LDEsODczMywxMTYsMTE0LDEwNSw1OSwxLDg4ODMsNCwyLDk5LDExNywxODk1NSwxODk2MCwxMTQsNTksMyw1NTM0OSw1NjUyMyw0LDIsOTgsMTEyLDE4OTY2LDE4OTgxLDExMCw0LDIsNjksMTAxLDE4OTczLDE4OTc3LDU5LDMsMTA5NTUsNjUwMjQsNTksMyw4ODQyLDY1MDI0LDExMCw0LDIsNjksMTAxLDE4OTg4LDE4OTkyLDU5LDMsMTA5NTYsNjUwMjQsNTksMyw4ODQzLDY1MDI0LDEwNSwxMDMsMTIyLDk3LDEwMyw1OSwxLDEwNjUwLDQsNyw5OSwxMDEsMTAyLDExMSwxMTIsMTE0LDExNSwxOTAyMCwxOTAyNiwxOTA2MSwxOTA2NiwxOTA3MiwxOTA3NSwxOTA4OSwxMDUsMTE0LDk5LDU5LDEsMzczLDQsMiwxMDAsMTA1LDE5MDMyLDE5MDU1LDQsMiw5OCwxMDMsMTkwMzgsMTkwNDMsOTcsMTE0LDU5LDEsMTA4NDcsMTAxLDQsMiw1OSwxMTMsMTkwNTAsMTkwNTIsMSw4NzQzLDU5LDEsODc5MywxMDEsMTE0LDExMiw1OSwxLDg0NzIsMTE0LDU5LDMsNTUzNDksNTY2MjgsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjgwLDU5LDEsODQ3Miw0LDIsNTksMTAxLDE5MDgxLDE5MDgzLDEsODc2OCw5NywxMTYsMTA0LDU5LDEsODc2OCw5OSwxMTQsNTksMyw1NTM0OSw1NjUyNCw0LDE0LDk5LDEwMCwxMDIsMTA0LDEwNSwxMDgsMTA5LDExMCwxMTEsMTE0LDExNSwxMTcsMTE4LDExOSwxOTEyNSwxOTE0NiwxOTE1MiwxOTE1NywxOTE3MywxOTE3NiwxOTE5MiwxOTE5NywxOTIwMiwxOTIzNiwxOTI1MiwxOTI2OSwxOTI4NiwxOTI5MSw0LDMsOTcsMTA1LDExNywxOTEzMywxOTEzNywxOTE0MiwxMTIsNTksMSw4ODk4LDExNCw5OSw1OSwxLDk3MTEsMTEyLDU5LDEsODg5OSwxMTYsMTE0LDEwNSw1OSwxLDk2NjEsMTE0LDU5LDMsNTUzNDksNTY2MjksNCwyLDY1LDk3LDE5MTYzLDE5MTY4LDExNCwxMTQsNTksMSwxMDIzNCwxMTQsMTE0LDU5LDEsMTAyMzEsNTksMSw5NTgsNCwyLDY1LDk3LDE5MTgyLDE5MTg3LDExNCwxMTQsNTksMSwxMDIzMiwxMTQsMTE0LDU5LDEsMTAyMjksOTcsMTEyLDU5LDEsMTAyMzYsMTA1LDExNSw1OSwxLDg5NTUsNCwzLDEwMCwxMTIsMTE2LDE5MjEwLDE5MjE1LDE5MjMwLDExMSwxMTYsNTksMSwxMDc1Miw0LDIsMTAyLDEwOCwxOTIyMSwxOTIyNSw1OSwzLDU1MzQ5LDU2NjgxLDExNywxMTUsNTksMSwxMDc1MywxMDUsMTA5LDEwMSw1OSwxLDEwNzU0LDQsMiw2NSw5NywxOTI0MiwxOTI0NywxMTQsMTE0LDU5LDEsMTAyMzMsMTE0LDExNCw1OSwxLDEwMjMwLDQsMiw5OSwxMTMsMTkyNTgsMTkyNjMsMTE0LDU5LDMsNTUzNDksNTY1MjUsOTksMTE3LDExMiw1OSwxLDEwNzU4LDQsMiwxMTIsMTE2LDE5Mjc1LDE5MjgxLDEwOCwxMTcsMTE1LDU5LDEsMTA3NTYsMTE0LDEwNSw1OSwxLDk2NTEsMTAxLDEwMSw1OSwxLDg4OTcsMTAxLDEwMCwxMDMsMTAxLDU5LDEsODg5Niw0LDgsOTcsOTksMTAxLDEwMiwxMDUsMTExLDExNSwxMTcsMTkzMTYsMTkzMzUsMTkzNDksMTkzNTcsMTkzNjIsMTkzNjcsMTkzNzMsMTkzNzksOTksNCwyLDExNywxMjEsMTkzMjMsMTkzMzIsMTE2LDEwMSw1LDI1MywxLDU5LDE5MzMwLDEsMjUzLDU5LDEsMTEwMyw0LDIsMTA1LDEyMSwxOTM0MSwxOTM0NiwxMTQsOTksNTksMSwzNzUsNTksMSwxMDk5LDExMCw1LDE2NSwxLDU5LDE5MzU1LDEsMTY1LDExNCw1OSwzLDU1MzQ5LDU2NjMwLDk5LDEyMSw1OSwxLDExMTEsMTEyLDEwMiw1OSwzLDU1MzQ5LDU2NjgyLDk5LDExNCw1OSwzLDU1MzQ5LDU2NTI2LDQsMiw5OSwxMDksMTkzODUsMTkzODksMTIxLDU5LDEsMTEwMiwxMDgsNSwyNTUsMSw1OSwxOTM5NSwxLDI1NSw0LDEwLDk3LDk5LDEwMCwxMDEsMTAyLDEwNCwxMDUsMTExLDExNSwxMTksMTk0MTksMTk0MjYsMTk0NDEsMTk0NDYsMTk0NjIsMTk0NjcsMTk0NzIsMTk0ODAsMTk0ODYsMTk0OTIsOTksMTE3LDExNiwxMDEsNTksMSwzNzgsNCwyLDk3LDEyMSwxOTQzMiwxOTQzOCwxMTQsMTExLDExMCw1OSwxLDM4Miw1OSwxLDEwNzksMTExLDExNiw1OSwxLDM4MCw0LDIsMTAxLDExNiwxOTQ1MiwxOTQ1OCwxMTYsMTE0LDEwMiw1OSwxLDg0ODgsOTcsNTksMSw5NTAsMTE0LDU5LDMsNTUzNDksNTY2MzEsOTksMTIxLDU5LDEsMTA3OCwxMDMsMTE0LDk3LDExNCwxMTQsNTksMSw4NjY5LDExMiwxMDIsNTksMyw1NTM0OSw1NjY4Myw5OSwxMTQsNTksMyw1NTM0OSw1NjUyNyw0LDIsMTA2LDExMCwxOTQ5OCwxOTUwMSw1OSwxLDgyMDUsMTA2LDU5LDEsODIwNF0pOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgUHJlcHJvY2Vzc29yID0gcmVxdWlyZSgnLi9wcmVwcm9jZXNzb3InKTtcbmNvbnN0IHVuaWNvZGUgPSByZXF1aXJlKCcuLi9jb21tb24vdW5pY29kZScpO1xuY29uc3QgbmVUcmVlID0gcmVxdWlyZSgnLi9uYW1lZC1lbnRpdHktZGF0YScpO1xuY29uc3QgRVJSID0gcmVxdWlyZSgnLi4vY29tbW9uL2Vycm9yLWNvZGVzJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IHVuaWNvZGUuQ09ERV9QT0lOVFM7XG5jb25zdCAkJCA9IHVuaWNvZGUuQ09ERV9QT0lOVF9TRVFVRU5DRVM7XG5cbi8vQzEgVW5pY29kZSBjb250cm9sIGNoYXJhY3RlciByZWZlcmVuY2UgcmVwbGFjZW1lbnRzXG5jb25zdCBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTID0ge1xuICAgIDB4ODA6IDB4MjBhYyxcbiAgICAweDgyOiAweDIwMWEsXG4gICAgMHg4MzogMHgwMTkyLFxuICAgIDB4ODQ6IDB4MjAxZSxcbiAgICAweDg1OiAweDIwMjYsXG4gICAgMHg4NjogMHgyMDIwLFxuICAgIDB4ODc6IDB4MjAyMSxcbiAgICAweDg4OiAweDAyYzYsXG4gICAgMHg4OTogMHgyMDMwLFxuICAgIDB4OGE6IDB4MDE2MCxcbiAgICAweDhiOiAweDIwMzksXG4gICAgMHg4YzogMHgwMTUyLFxuICAgIDB4OGU6IDB4MDE3ZCxcbiAgICAweDkxOiAweDIwMTgsXG4gICAgMHg5MjogMHgyMDE5LFxuICAgIDB4OTM6IDB4MjAxYyxcbiAgICAweDk0OiAweDIwMWQsXG4gICAgMHg5NTogMHgyMDIyLFxuICAgIDB4OTY6IDB4MjAxMyxcbiAgICAweDk3OiAweDIwMTQsXG4gICAgMHg5ODogMHgwMmRjLFxuICAgIDB4OTk6IDB4MjEyMixcbiAgICAweDlhOiAweDAxNjEsXG4gICAgMHg5YjogMHgyMDNhLFxuICAgIDB4OWM6IDB4MDE1MyxcbiAgICAweDllOiAweDAxN2UsXG4gICAgMHg5ZjogMHgwMTc4XG59O1xuXG4vLyBOYW1lZCBlbnRpdHkgdHJlZSBmbGFnc1xuY29uc3QgSEFTX0RBVEFfRkxBRyA9IDEgPDwgMDtcbmNvbnN0IERBVEFfRFVQTEVUX0ZMQUcgPSAxIDw8IDE7XG5jb25zdCBIQVNfQlJBTkNIRVNfRkxBRyA9IDEgPDwgMjtcbmNvbnN0IE1BWF9CUkFOQ0hfTUFSS0VSX1ZBTFVFID0gSEFTX0RBVEFfRkxBRyB8IERBVEFfRFVQTEVUX0ZMQUcgfCBIQVNfQlJBTkNIRVNfRkxBRztcblxuLy9TdGF0ZXNcbmNvbnN0IERBVEFfU1RBVEUgPSAnREFUQV9TVEFURSc7XG5jb25zdCBSQ0RBVEFfU1RBVEUgPSAnUkNEQVRBX1NUQVRFJztcbmNvbnN0IFJBV1RFWFRfU1RBVEUgPSAnUkFXVEVYVF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9TVEFURSA9ICdTQ1JJUFRfREFUQV9TVEFURSc7XG5jb25zdCBQTEFJTlRFWFRfU1RBVEUgPSAnUExBSU5URVhUX1NUQVRFJztcbmNvbnN0IFRBR19PUEVOX1NUQVRFID0gJ1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IEVORF9UQUdfT1BFTl9TVEFURSA9ICdFTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgVEFHX05BTUVfU1RBVEUgPSAnVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgUkNEQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1JDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFID0gJ1JDREFUQV9FTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSA9ICdSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFJztcbmNvbnN0IFJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURSA9ICdSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURSc7XG5jb25zdCBSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURSA9ICdSQVdURVhUX0VORF9UQUdfTkFNRV9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSA9ICdTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSA9ICdTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSA9ICdTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5fU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5fU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVfU1RBVEUnO1xuY29uc3QgU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSA9ICdTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURSc7XG5jb25zdCBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEUgPSAnU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFJztcbmNvbnN0IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFID0gJ1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFJztcbmNvbnN0IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURSA9ICdCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUnO1xuY29uc3QgQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQVRUUklCVVRFX05BTUVfU1RBVEUnO1xuY29uc3QgQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUgPSAnQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUnO1xuY29uc3QgQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSA9ICdCRUZPUkVfQVRUUklCVVRFX1ZBTFVFX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFID0gJ0FUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0FUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IEFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSA9ICdBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUnO1xuY29uc3QgQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRF9TVEFURSA9ICdBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUgPSAnU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURSc7XG5jb25zdCBCT0dVU19DT01NRU5UX1NUQVRFID0gJ0JPR1VTX0NPTU1FTlRfU1RBVEUnO1xuY29uc3QgTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEUgPSAnTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5fU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9TVEFSVF9TVEFURSA9ICdDT01NRU5UX1NUQVJUX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfU1RBUlRfREFTSF9TVEFURSA9ICdDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9TVEFURSA9ICdDT01NRU5UX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfTEVTU19USEFOX1NJR05fU1RBVEUgPSAnQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9TVEFURSc7XG5jb25zdCBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfU1RBVEUgPSAnQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFID0gJ0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFJztcbmNvbnN0IENPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hfU1RBVEUgPSAnQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURSc7XG5jb25zdCBDT01NRU5UX0VORF9EQVNIX1NUQVRFID0gJ0NPTU1FTlRfRU5EX0RBU0hfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9FTkRfU1RBVEUgPSAnQ09NTUVOVF9FTkRfU1RBVEUnO1xuY29uc3QgQ09NTUVOVF9FTkRfQkFOR19TVEFURSA9ICdDT01NRU5UX0VORF9CQU5HX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfU1RBVEUgPSAnRE9DVFlQRV9TVEFURSc7XG5jb25zdCBCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFID0gJ0JFRk9SRV9ET0NUWVBFX05BTUVfU1RBVEUnO1xuY29uc3QgRE9DVFlQRV9OQU1FX1NUQVRFID0gJ0RPQ1RZUEVfTkFNRV9TVEFURSc7XG5jb25zdCBBRlRFUl9ET0NUWVBFX05BTUVfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9OQU1FX1NUQVRFJztcbmNvbnN0IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEUgPSAnQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURSc7XG5jb25zdCBCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSA9ICdCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSc7XG5jb25zdCBET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUgPSAnRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSA9ICdET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFJztcbmNvbnN0IEJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURSA9ICdCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUnO1xuY29uc3QgQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRF9TVEFURSA9ICdBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFJztcbmNvbnN0IEJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFID0gJ0JFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFJztcbmNvbnN0IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSA9ICdET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUnO1xuY29uc3QgRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFID0gJ0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSc7XG5jb25zdCBBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFID0gJ0FGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEUnO1xuY29uc3QgQk9HVVNfRE9DVFlQRV9TVEFURSA9ICdCT0dVU19ET0NUWVBFX1NUQVRFJztcbmNvbnN0IENEQVRBX1NFQ1RJT05fU1RBVEUgPSAnQ0RBVEFfU0VDVElPTl9TVEFURSc7XG5jb25zdCBDREFUQV9TRUNUSU9OX0JSQUNLRVRfU1RBVEUgPSAnQ0RBVEFfU0VDVElPTl9CUkFDS0VUX1NUQVRFJztcbmNvbnN0IENEQVRBX1NFQ1RJT05fRU5EX1NUQVRFID0gJ0NEQVRBX1NFQ1RJT05fRU5EX1NUQVRFJztcbmNvbnN0IENIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUgPSAnQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSc7XG5jb25zdCBOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ05BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgQU1CSUdVT1VTX0FNUEVSU0FORF9TVEFURSA9ICdBTUJJR1VPU19BTVBFUlNBTkRfU1RBVEUnO1xuY29uc3QgTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSc7XG5jb25zdCBIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFID0gJ0hFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUnO1xuY29uc3QgREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFID0gJ0RFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURSc7XG5jb25zdCBIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ0hFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUnO1xuY29uc3QgREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFID0gJ0RFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSc7XG5jb25zdCBOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EX1NUQVRFID0gJ05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEUnO1xuXG4vL1V0aWxzXG5cbi8vT1BUSU1JWkFUSU9OOiB0aGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIG1vdmVkIG91dCBvZiB0aGlzIG1vZHVsZS4gVjggQ3JhbmtzaGFmdCB3aWxsIG5vdCBpbmxpbmVcbi8vdGhpcyBmdW5jdGlvbnMgaWYgdGhleSB3aWxsIGJlIHNpdHVhdGVkIGluIGFub3RoZXIgbW9kdWxlIGR1ZSB0byBjb250ZXh0IHN3aXRjaC5cbi8vQWx3YXlzIHBlcmZvcm0gaW5saW5pbmcgY2hlY2sgYmVmb3JlIG1vZGlmeWluZyB0aGlzIGZ1bmN0aW9ucyAoJ25vZGUgLS10cmFjZS1pbmxpbmluZycpLlxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGNwKSB7XG4gICAgcmV0dXJuIGNwID09PSAkLlNQQUNFIHx8IGNwID09PSAkLkxJTkVfRkVFRCB8fCBjcCA9PT0gJC5UQUJVTEFUSU9OIHx8IGNwID09PSAkLkZPUk1fRkVFRDtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaURpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuRElHSVRfMCAmJiBjcCA8PSAkLkRJR0lUXzk7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlVcHBlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSAkLkxBVElOX0NBUElUQUxfWjtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxvd2VyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fU01BTExfQSAmJiBjcCA8PSAkLkxBVElOX1NNQUxMX1o7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlMZXR0ZXIoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaUxvd2VyKGNwKSB8fCBpc0FzY2lpVXBwZXIoY3ApO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMZXR0ZXIoY3ApIHx8IGlzQXNjaWlEaWdpdChjcCk7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlVcHBlckhleERpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9ICQuTEFUSU5fQ0FQSVRBTF9GO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpTG93ZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX1NNQUxMX0EgJiYgY3AgPD0gJC5MQVRJTl9TTUFMTF9GO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpSGV4RGlnaXQoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaURpZ2l0KGNwKSB8fCBpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkgfHwgaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApO1xufVxuXG5mdW5jdGlvbiB0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAweDAwMjA7XG59XG5cbi8vTk9URTogU3RyaW5nLmZyb21DaGFyQ29kZSgpIGZ1bmN0aW9uIGNhbiBoYW5kbGUgb25seSBjaGFyYWN0ZXJzIGZyb20gQk1QIHN1YnNldC5cbi8vU28sIHdlIG5lZWQgdG8gd29ya2Fyb3VuZCB0aGlzIG1hbnVhbGx5LlxuLy8oc2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9mcm9tQ2hhckNvZGUjR2V0dGluZ19pdF90b193b3JrX3dpdGhfaGlnaGVyX3ZhbHVlcylcbmZ1bmN0aW9uIHRvQ2hhcihjcCkge1xuICAgIGlmIChjcCA8PSAweGZmZmYpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3ApO1xuICAgIH1cblxuICAgIGNwIC09IDB4MTAwMDA7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKChjcCA+Pj4gMTApICYgMHgzZmYpIHwgMHhkODAwKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkYzAwIHwgKGNwICYgMHgzZmYpKTtcbn1cblxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyQ2hhcihjcCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHRvQXNjaWlMb3dlckNvZGVQb2ludChjcCkpO1xufVxuXG5mdW5jdGlvbiBmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoKG5vZGVJeCwgY3ApIHtcbiAgICBjb25zdCBicmFuY2hDb3VudCA9IG5lVHJlZVsrK25vZGVJeF07XG4gICAgbGV0IGxvID0gKytub2RlSXg7XG4gICAgbGV0IGhpID0gbG8gKyBicmFuY2hDb3VudCAtIDE7XG5cbiAgICB3aGlsZSAobG8gPD0gaGkpIHtcbiAgICAgICAgY29uc3QgbWlkID0gKGxvICsgaGkpID4+PiAxO1xuICAgICAgICBjb25zdCBtaWRDcCA9IG5lVHJlZVttaWRdO1xuXG4gICAgICAgIGlmIChtaWRDcCA8IGNwKSB7XG4gICAgICAgICAgICBsbyA9IG1pZCArIDE7XG4gICAgICAgIH0gZWxzZSBpZiAobWlkQ3AgPiBjcCkge1xuICAgICAgICAgICAgaGkgPSBtaWQgLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5lVHJlZVttaWQgKyBicmFuY2hDb3VudF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG59XG5cbi8vVG9rZW5pemVyXG5jbGFzcyBUb2tlbml6ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NvciA9IG5ldyBQcmVwcm9jZXNzb3IoKTtcblxuICAgICAgICB0aGlzLnRva2VuUXVldWUgPSBbXTtcblxuICAgICAgICB0aGlzLmFsbG93Q0RBVEEgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9ICcnO1xuXG4gICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAtMTtcbiAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ05hbWUgPSAnJztcblxuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IC0xO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyID0gbnVsbDtcbiAgICB9XG5cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoKSB7XG4gICAgICAgIC8vIE5PVEU6IGVyciByZXBvcnRpbmcgaXMgbm9vcCBieSBkZWZhdWx0LiBFbmFibGVkIGJ5IG1peGluLlxuICAgIH1cblxuICAgIF9lcnJPbk5leHRDb2RlUG9pbnQoZXJyKSB7XG4gICAgICAgIHRoaXMuX2NvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5fZXJyKGVycik7XG4gICAgICAgIHRoaXMuX3VuY29uc3VtZSgpO1xuICAgIH1cblxuICAgIC8vQVBJXG4gICAgZ2V0TmV4dFRva2VuKCkge1xuICAgICAgICB3aGlsZSAoIXRoaXMudG9rZW5RdWV1ZS5sZW5ndGggJiYgdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID0gMDtcblxuICAgICAgICAgICAgY29uc3QgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgICAgIHRoaXNbdGhpcy5zdGF0ZV0oY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5RdWV1ZS5zaGlmdCgpO1xuICAgIH1cblxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLndyaXRlKGNodW5rLCBpc0xhc3RDaHVuayk7XG4gICAgfVxuXG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspO1xuICAgIH1cblxuICAgIC8vSGliZXJuYXRpb25cbiAgICBfZW5zdXJlSGliZXJuYXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0KSB7XG4gICAgICAgICAgICBmb3IgKDsgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPiAwOyB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdC0tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucmV0cmVhdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2tlblF1ZXVlLnB1c2goeyB0eXBlOiBUb2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4gfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vQ29uc3VtcHRpb25cbiAgICBfY29uc3VtZSgpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QrKztcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlcHJvY2Vzc29yLmFkdmFuY2UoKTtcbiAgICB9XG5cbiAgICBfdW5jb25zdW1lKCkge1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdC0tO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5yZXRyZWF0KCk7XG4gICAgfVxuXG4gICAgX3JlY29uc3VtZUluU3RhdGUoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLl91bmNvbnN1bWUoKTtcbiAgICB9XG5cbiAgICBfY29uc3VtZVNlcXVlbmNlSWZNYXRjaChwYXR0ZXJuLCBzdGFydENwLCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGxldCBjb25zdW1lZENvdW50ID0gMDtcbiAgICAgICAgbGV0IGlzTWF0Y2ggPSB0cnVlO1xuICAgICAgICBjb25zdCBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGg7XG4gICAgICAgIGxldCBwYXR0ZXJuUG9zID0gMDtcbiAgICAgICAgbGV0IGNwID0gc3RhcnRDcDtcbiAgICAgICAgbGV0IHBhdHRlcm5DcCA9IHZvaWQgMDtcblxuICAgICAgICBmb3IgKDsgcGF0dGVyblBvcyA8IHBhdHRlcm5MZW5ndGg7IHBhdHRlcm5Qb3MrKykge1xuICAgICAgICAgICAgaWYgKHBhdHRlcm5Qb3MgPiAwKSB7XG4gICAgICAgICAgICAgICAgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgICAgICAgICAgY29uc3VtZWRDb3VudCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICAgICAgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXR0ZXJuQ3AgPSBwYXR0ZXJuW3BhdHRlcm5Qb3NdO1xuXG4gICAgICAgICAgICBpZiAoY3AgIT09IHBhdHRlcm5DcCAmJiAoY2FzZVNlbnNpdGl2ZSB8fCBjcCAhPT0gdG9Bc2NpaUxvd2VyQ29kZVBvaW50KHBhdHRlcm5DcCkpKSB7XG4gICAgICAgICAgICAgICAgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc01hdGNoKSB7XG4gICAgICAgICAgICB3aGlsZSAoY29uc3VtZWRDb3VudC0tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNNYXRjaDtcbiAgICB9XG5cbiAgICAvL1RlbXAgYnVmZmVyXG4gICAgX2lzVGVtcEJ1ZmZlckVxdWFsVG9TY3JpcHRTdHJpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBCdWZmLmxlbmd0aCAhPT0gJCQuU0NSSVBUX1NUUklORy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50ZW1wQnVmZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVtcEJ1ZmZbaV0gIT09ICQkLlNDUklQVF9TVFJJTkdbaV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL1Rva2VuIGNyZWF0aW9uXG4gICAgX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTixcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYWNrU2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUVuZFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5FTkRfVEFHX1RPS0VOLFxuICAgICAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhdHRyczogW11cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ29tbWVudFRva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuaXplci5DT01NRU5UX1RPS0VOLFxuICAgICAgICAgICAgZGF0YTogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfY3JlYXRlRG9jdHlwZVRva2VuKGluaXRpYWxOYW1lKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU4sXG4gICAgICAgICAgICBuYW1lOiBpbml0aWFsTmFtZSxcbiAgICAgICAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBudWxsLFxuICAgICAgICAgICAgc3lzdGVtSWQ6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgY2hhcnM6IGNoXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NyZWF0ZUVPRlRva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHsgdHlwZTogVG9rZW5pemVyLkVPRl9UT0tFTiB9O1xuICAgIH1cblxuICAgIC8vVGFnIGF0dHJpYnV0ZXNcbiAgICBfY3JlYXRlQXR0cihhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IHtcbiAgICAgICAgICAgIG5hbWU6IGF0dHJOYW1lRmlyc3RDaCxcbiAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9sZWF2ZUF0dHJOYW1lKHRvU3RhdGUpIHtcbiAgICAgICAgaWYgKFRva2VuaXplci5nZXRUb2tlbkF0dHIodGhpcy5jdXJyZW50VG9rZW4sIHRoaXMuY3VycmVudEF0dHIubmFtZSkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmF0dHJzLnB1c2godGhpcy5jdXJyZW50QXR0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmR1cGxpY2F0ZUF0dHJpYnV0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXRlID0gdG9TdGF0ZTtcbiAgICB9XG5cbiAgICBfbGVhdmVBdHRyVmFsdWUodG9TdGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gdG9TdGF0ZTtcbiAgICB9XG5cbiAgICAvL1Rva2VuIGVtaXNzaW9uXG4gICAgX2VtaXRDdXJyZW50VG9rZW4oKSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oKTtcblxuICAgICAgICBjb25zdCBjdCA9IHRoaXMuY3VycmVudFRva2VuO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcblxuICAgICAgICAvL05PVEU6IHN0b3JlIGVtaXRlZCBzdGFydCB0YWcncyB0YWdOYW1lIHRvIGRldGVybWluZSBpcyB0aGUgZm9sbG93aW5nIGVuZCB0YWcgdG9rZW4gaXMgYXBwcm9wcmlhdGUuXG4gICAgICAgIGlmIChjdC50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ05hbWUgPSBjdC50YWdOYW1lO1xuICAgICAgICB9IGVsc2UgaWYgKGN0LnR5cGUgPT09IFRva2VuaXplci5FTkRfVEFHX1RPS0VOKSB7XG4gICAgICAgICAgICBpZiAoY3QuYXR0cnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW5kVGFnV2l0aEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3Quc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b2tlblF1ZXVlLnB1c2goY3QpO1xuICAgIH1cblxuICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5RdWV1ZS5wdXNoKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9lbWl0RU9GVG9rZW4oKSB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUVPRlRva2VuKCk7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICB9XG5cbiAgICAvL0NoYXJhY3RlcnMgZW1pc3Npb25cblxuICAgIC8vT1BUSU1JWkFUSU9OOiBzcGVjaWZpY2F0aW9uIHVzZXMgb25seSBvbmUgdHlwZSBvZiBjaGFyYWN0ZXIgdG9rZW5zIChvbmUgdG9rZW4gcGVyIGNoYXJhY3RlcikuXG4gICAgLy9UaGlzIGNhdXNlcyBhIGh1Z2UgbWVtb3J5IG92ZXJoZWFkIGFuZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBwYXJzZXIgbG9vcHMuIHBhcnNlNSB1c2VzIDMgZ3JvdXBzIG9mIGNoYXJhY3RlcnMuXG4gICAgLy9JZiB3ZSBoYXZlIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBncm91cCwgcGFyc2VyIGNhbiBwcm9jZXNzIGl0XG4gICAgLy9hcyBhIHNpbmdsZSBzb2xpZCBjaGFyYWN0ZXIgdG9rZW4uXG4gICAgLy9TbywgdGhlcmUgYXJlIDMgdHlwZXMgb2YgY2hhcmFjdGVyIHRva2VucyBpbiBwYXJzZTU6XG4gICAgLy8xKU5VTExfQ0hBUkFDVEVSX1RPS0VOIC0gXFx1MDAwMC1jaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXHUwMDAwXFx1MDAwMFxcdTAwMDAnKVxuICAgIC8vMilXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiAtIGFueSB3aGl0ZXNwYWNlL25ldy1saW5lIGNoYXJhY3RlciBzZXF1ZW5jZXMgKGUuZy4gJ1xcbiAgXFxyXFx0ICAgXFxmJylcbiAgICAvLzMpQ0hBUkFDVEVSX1RPS0VOIC0gYW55IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb24ndCBiZWxvbmcgdG8gZ3JvdXBzIDEgYW5kIDIgKGUuZy4gJ2FiY2RlZjEyMzRAQCMkJV4nKVxuICAgIF9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLnR5cGUgIT09IHR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2hhcnMgKz0gY2g7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZW1pdENvZGVQb2ludChjcCkge1xuICAgICAgICBsZXQgdHlwZSA9IFRva2VuaXplci5DSEFSQUNURVJfVE9LRU47XG5cbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU47XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbih0eXBlLCB0b0NoYXIoY3ApKTtcbiAgICB9XG5cbiAgICBfZW1pdFNldmVyYWxDb2RlUG9pbnRzKGNvZGVQb2ludHMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNvZGVQb2ludHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9OT1RFOiB1c2VkIHRoZW4gd2UgZW1pdCBjaGFyYWN0ZXIgZXhwbGljaXRseS4gVGhpcyBpcyBhbHdheXMgYSBub24td2hpdGVzcGFjZSBhbmQgYSBub24tbnVsbCBjaGFyYWN0ZXIuXG4gICAgLy9TbyB3ZSBjYW4gYXZvaWQgYWRkaXRpb25hbCBjaGVja3MgaGVyZS5cbiAgICBfZW1pdENoYXJzKGNoKSB7XG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbihUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOLCBjaCk7XG4gICAgfVxuXG4gICAgLy8gQ2hhcmFjdGVyIHJlZmVyZW5jZSBoZWxwZXJzXG4gICAgX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2Uoc3RhcnRDcCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgbGV0IGV4Y2VzcyA9IDE7XG4gICAgICAgIGxldCBpID0gZmluZE5hbWVkRW50aXR5VHJlZUJyYW5jaCgwLCBzdGFydENwKTtcblxuICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goc3RhcnRDcCk7XG5cbiAgICAgICAgd2hpbGUgKGkgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IG5lVHJlZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IGluTm9kZSA9IGN1cnJlbnQgPCBNQVhfQlJBTkNIX01BUktFUl9WQUxVRTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVXaXRoRGF0YSA9IGluTm9kZSAmJiBjdXJyZW50ICYgSEFTX0RBVEFfRkxBRztcblxuICAgICAgICAgICAgaWYgKG5vZGVXaXRoRGF0YSkge1xuICAgICAgICAgICAgICAgIC8vTk9URTogd2UgdXNlIGdyZWVkeSBzZWFyY2gsIHNvIHdlIGNvbnRpbnVlIGxvb2t1cCBhdCB0aGlzIHBvaW50XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAmIERBVEFfRFVQTEVUX0ZMQUcgPyBbbmVUcmVlWysraV0sIG5lVHJlZVsrK2ldXSA6IFtuZVRyZWVbKytpXV07XG4gICAgICAgICAgICAgICAgZXhjZXNzID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICBleGNlc3MrKztcblxuICAgICAgICAgICAgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5Ob2RlKSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnQgJiBIQVNfQlJBTkNIRVNfRkxBRyA/IGZpbmROYW1lZEVudGl0eVRyZWVCcmFuY2goaSwgY3ApIDogLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGkgPSBjcCA9PT0gY3VycmVudCA/ICsraSA6IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGV4Y2Vzcy0tKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIF9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEUgfHxcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPT09IEFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfaXNDaGFyYWN0ZXJSZWZlcmVuY2VBdHRyaWJ1dGVRdWlyayh3aXRoU2VtaWNvbG9uKSB7XG4gICAgICAgIGlmICghd2l0aFNlbWljb2xvbiAmJiB0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDcCA9IHRoaXMuX2NvbnN1bWUoKTtcblxuICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXh0Q3AgPT09ICQuRVFVQUxTX1NJR04gfHwgaXNBc2NpaUFscGhhTnVtZXJpYyhuZXh0Q3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIF9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCkge1xuICAgICAgICBpZiAodGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGVtcEJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHRvQ2hhcih0aGlzLnRlbXBCdWZmW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZXZlcmFsQ29kZVBvaW50cyh0aGlzLnRlbXBCdWZmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBTdGF0ZSBtYWNoaW5lXG5cbiAgICAvLyBEYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbREFUQV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gVEFHX09QRU5fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gIFJDREFUQSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JDREFUQV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFJDREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkNEQVRBX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQVdURVhUIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbUkFXVEVYVF9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkFXVEVYVF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBMQUlOVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1BMQUlOVEVYVF9TVEFURV0oY3ApIHtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG5cbiAgICAgICAgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuRVhDTEFNQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE1BUktVUF9ERUNMQVJBVElPTl9PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBFTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoVEFHX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVRVNUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZCZWZvcmVUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtFTkRfVEFHX09QRU5fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoVEFHX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdFbmRUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZCZWZvcmVUYWdOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtUQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJDREFUQSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JDREFUQV9MRVNTX1RIQU5fU0lHTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJDREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQ0RBVEEgZW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbUkNEQVRBX0VORF9UQUdfT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkNEQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJDREFUQSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtSQ0RBVEFfRU5EX1RBR19OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhc3RTdGFydFRhZ05hbWUgPT09IHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQ0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkFXVEVYVCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gUkFXVEVYVF9FTkRfVEFHX09QRU5fU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFJBV1RFWFRfRU5EX1RBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoUkFXVEVYVF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1JBV1RFWFRfRU5EX1RBR19OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhc3RTdGFydFRhZ05hbWUgPT09IHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShSQVdURVhUX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVYQ0xBTUFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwhJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VORF9UQUdfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmLnB1c2goY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0U3RhcnRUYWdOYW1lID09PSB0aGlzLmN1cnJlbnRUb2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfTkFNRV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGUgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGUgc3RhcnQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJz4nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBCdWZmID0gW107XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKFNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0FzY2lpTG93ZXJDaGFyKGNwKTtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4udGFnTmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhc3RTdGFydFRhZ05hbWUgPT09IHRoaXMuY3VycmVudFRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNldmVyYWxDb2RlUG9pbnRzKHRoaXMudGVtcEJ1ZmYpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGUgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5faXNUZW1wQnVmZmVyRXF1YWxUb1NjcmlwdFN0cmluZygpXG4gICAgICAgICAgICAgICAgPyBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURVxuICAgICAgICAgICAgICAgIDogU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaCh0b0FzY2lpTG93ZXJDb2RlUG9pbnQoY3ApKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlMb3dlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoU0NSSVBUX0RBVEFfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5MRVNTX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0NSSVBUX0RBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJz4nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyh1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5faXNUZW1wQnVmZmVyRXF1YWxUb1NjcmlwdFN0cmluZygpXG4gICAgICAgICAgICAgICAgPyBTQ1JJUFRfREFUQV9FU0NBUEVEX1NUQVRFXG4gICAgICAgICAgICAgICAgOiBTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURTtcblxuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKHRvQXNjaWlMb3dlckNvZGVQb2ludChjcCkpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxvd2VyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZi5wdXNoKGNwKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgYXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTiB8fCBjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVRVUFMU19TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCc9Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQVRUUklCVVRFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBVFRSSUJVVEVfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTiB8fCBjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0ck5hbWUoQUZURVJfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRVFVQUxTX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0ck5hbWUoQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaVVwcGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IHRvQXNjaWlMb3dlckNoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLIHx8IGNwID09PSAkLkFQT1NUUk9QSEUgfHwgY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgYXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9BVFRSSUJVVEVfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FUVVBTFNfU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9BVFRSSUJVVEVfVkFMVUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShBVFRSSUJVVEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgYXR0cmlidXRlIHZhbHVlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nQXR0cmlidXRlVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBdHRyaWJ1dGUgdmFsdWUgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIHZhbHVlIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQU1QRVJTQU5EKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXR0cmlidXRlIHZhbHVlICh1bnF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IEFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRF9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjcCA9PT0gJC5RVU9UQVRJT05fTUFSSyB8fFxuICAgICAgICAgICAgY3AgPT09ICQuQVBPU1RST1BIRSB8fFxuICAgICAgICAgICAgY3AgPT09ICQuTEVTU19USEFOX1NJR04gfHxcbiAgICAgICAgICAgIGNwID09PSAkLkVRVUFMU19TSUdOIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5HUkFWRV9BQ0NFTlRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAocXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKFNFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZShEQVRBX1NUQVRFKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VsZi1jbG9zaW5nIHN0YXJ0IHRhZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW1NFTEZfQ0xPU0lOR19TVEFSVF9UQUdfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkU29saWR1c0luVGFnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0FUVFJJQlVURV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJvZ3VzIGNvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtCT0dVU19DT01NRU5UX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFya3VwIGRlY2xhcmF0aW9uIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtNQVJLVVBfREVDTEFSQVRJT05fT1BFTl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuREFTSF9EQVNIX1NUUklORywgY3AsIHRydWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVJUX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuRE9DVFlQRV9TVFJJTkcsIGNwLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2goJCQuQ0RBVEFfU1RBUlRfU1RSSU5HLCBjcCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93Q0RBVEEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gQ0RBVEFfU0VDVElPTl9TVEFURTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jZGF0YUluSHRtbENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgPSAnW0NEQVRBWyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJPR1VTX0NPTU1FTlRfU1RBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL05PVEU6IHNlcXVlbmNlIGxvb2t1cCBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSBsb29rdXBcbiAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbmNvcnJlY3RseU9wZW5lZENvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0NPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBzdGFydCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfU1RBUlRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgc3RhcnQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfU1RBUlRfREFTSF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfRU5EX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKENPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkxFU1NfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICc8JztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfTEVTU19USEFOX1NJR05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICchJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTEVTU19USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJyEnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX0VORF9EQVNIX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSF9EQVNIX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgIT09ICQuR1JFQVRFUl9USEFOX1NJR04gJiYgY3AgIT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5lc3RlZENvbW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDT01NRU5UX0VORF9TVEFURSk7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBlbmQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfRU5EX0RBU0hfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDT01NRU5UX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKENPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDT01NRU5UX0VORF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FWENMQU1BVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfQkFOR19TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhICs9ICctLSc7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKENPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudCBlbmQgYmFuZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NPTU1FTlRfRU5EX0JBTkdfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQ09NTUVOVF9FTkRfREFTSF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbmNvcnJlY3RseUNsb3NlZENvbW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKENPTU1FTlRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCRUZPUkVfRE9DVFlQRV9OQU1FX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4odG9Bc2NpaUxvd2VyQ2hhcihjcCkpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbih1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9OQU1FX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKHRvQ2hhcihjcCkpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfTkFNRV9TVEFURTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfTkFNRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX05BTUVfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLm5hbWUgKz0gdG9Bc2NpaUxvd2VyQ2hhcihjcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5uYW1lICs9IHRvQ2hhcihjcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZnRlciBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX05BTUVfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5QVUJMSUNfU1RSSU5HLCBjcCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLlNZU1RFTV9TVFJJTkcsIGNwLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogc2VxdWVuY2UgbG9va3VwIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlIGxvb2t1cFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgcHVibGljIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShCT0dVU19ET0NUWVBFX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuTlVMTCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5wdWJsaWNJZCArPSB1bmljb2RlLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ucHVibGljSWQgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFmdGVyIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU19TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCZXR3ZWVuIERPQ1RZUEUgcHVibGljIGFuZCBzeXN0ZW0gaWRlbnRpZmllcnMgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBzeXN0ZW0ga2V5d29yZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuUVVPVEFUSU9OX01BUkspIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkFQT1NUUk9QSEUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKEJPR1VTX0RPQ1RZUEVfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjcCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcCA9PT0gJC5RVU9UQVRJT05fTUFSSykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuQVBPU1RST1BIRSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlFVT1RBVElPTl9NQVJLKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5BUE9TVFJPUEhFKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLnN5c3RlbUlkICs9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5zeXN0ZW1JZCArPSB0b0NoYXIoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc1doaXRlc3BhY2UoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBEQVRBX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoQk9HVVNfRE9DVFlQRV9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb2d1cyBET0NUWVBFIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQk9HVVNfRE9DVFlQRV9TVEFURV0oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudFRva2VuKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gREFUQV9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50VG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0NEQVRBX1NFQ1RJT05fU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IENEQVRBX1NFQ1RJT05fQlJBQ0tFVF9TVEFURTtcbiAgICAgICAgfSBlbHNlIGlmIChjcCA9PT0gJC5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5DZGF0YSk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBicmFja2V0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ0RBVEFfU0VDVElPTl9CUkFDS0VUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBDREFUQV9TRUNUSU9OX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDREFUQV9TRUNUSU9OX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENEQVRBIHNlY3Rpb24gZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbQ0RBVEFfU0VDVElPTl9FTkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IERBVEFfU1RBVEU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddXScpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShDREFUQV9TRUNUSU9OX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtDSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICB0aGlzLnRlbXBCdWZmID0gWyQuQU1QRVJTQU5EXTtcblxuICAgICAgICBpZiAoY3AgPT09ICQuTlVNQkVSX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKE5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMuX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuXG4gICAgICAgIC8vTk9URTogbWF0Y2hpbmcgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbWF0Y2hcbiAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICBpZiAodGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wQnVmZiA9IFskLkFNUEVSU0FORF07XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hSZXN1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhTZW1pY29sb24gPSB0aGlzLnRlbXBCdWZmW3RoaXMudGVtcEJ1ZmYubGVuZ3RoIC0gMV0gPT09ICQuU0VNSUNPTE9OO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlQXR0cmlidXRlUXVpcmsod2l0aFNlbWljb2xvbikpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXdpdGhTZW1pY29sb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyT25OZXh0Q29kZVBvaW50KEVSUi5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBtYXRjaFJlc3VsdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMucmV0dXJuU3RhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gQU1CSUdVT1VTX0FNUEVSU0FORF9TVEFURTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFtYmlndW9zIGFtcGVyc2FuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0FNQklHVU9VU19BTVBFUlNBTkRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdG9DaGFyKGNwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3AgPT09ICQuU0VNSUNPTE9OKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmtub3duTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBbTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFXShjcCkge1xuICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gMDtcblxuICAgICAgICBpZiAoY3AgPT09ICQuTEFUSU5fU01BTExfWCB8fCBjcCA9PT0gJC5MQVRJTl9DQVBJVEFMX1gpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEJ1ZmYucHVzaChjcCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gSEVYQURFTUlDQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFSVF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUX1NUQVRFXShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZShIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50c0NvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKERFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGV4YWRlbWljYWwgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW0hFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSB0aGlzLmNoYXJSZWZDb2RlICogMTYgKyBjcCAtIDB4Mzc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDU3O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXNjaWlEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSB0aGlzLmNoYXJSZWZDb2RlICogMTYgKyBjcCAtIDB4MzA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3AgPT09ICQuU0VNSUNPTE9OKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUoTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFtERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEVdKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDEwICsgY3AgLSAweDMwO1xuICAgICAgICB9IGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKE5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgW05VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkRfU1RBVEVdKCkge1xuICAgICAgICBpZiAodGhpcy5jaGFyUmVmQ29kZSA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm51bGxDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhclJlZkNvZGUgPiAweDEwZmZmZikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAkLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfSBlbHNlIGlmICh1bmljb2RlLmlzU3Vycm9nYXRlKHRoaXMuY2hhclJlZkNvZGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gJC5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pY29kZS5pc1VuZGVmaW5lZENvZGVQb2ludCh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5ub25jaGFyYWN0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaWNvZGUuaXNDb250cm9sQ29kZVBvaW50KHRoaXMuY2hhclJlZkNvZGUpIHx8IHRoaXMuY2hhclJlZkNvZGUgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuXG4gICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IEMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFNbdGhpcy5jaGFyUmVmQ29kZV07XG5cbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGVtcEJ1ZmYgPSBbdGhpcy5jaGFyUmVmQ29kZV07XG5cbiAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRzQ29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUpO1xuICAgIH1cbn1cblxuLy9Ub2tlbiB0eXBlc1xuVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTiA9ICdDSEFSQUNURVJfVE9LRU4nO1xuVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOID0gJ05VTExfQ0hBUkFDVEVSX1RPS0VOJztcblRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiA9ICdXSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTic7XG5Ub2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOID0gJ1NUQVJUX1RBR19UT0tFTic7XG5Ub2tlbml6ZXIuRU5EX1RBR19UT0tFTiA9ICdFTkRfVEFHX1RPS0VOJztcblRva2VuaXplci5DT01NRU5UX1RPS0VOID0gJ0NPTU1FTlRfVE9LRU4nO1xuVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU4gPSAnRE9DVFlQRV9UT0tFTic7XG5Ub2tlbml6ZXIuRU9GX1RPS0VOID0gJ0VPRl9UT0tFTic7XG5Ub2tlbml6ZXIuSElCRVJOQVRJT05fVE9LRU4gPSAnSElCRVJOQVRJT05fVE9LRU4nO1xuXG4vL1Rva2VuaXplciBpbml0aWFsIHN0YXRlcyBmb3IgZGlmZmVyZW50IG1vZGVzXG5Ub2tlbml6ZXIuTU9ERSA9IHtcbiAgICBEQVRBOiBEQVRBX1NUQVRFLFxuICAgIFJDREFUQTogUkNEQVRBX1NUQVRFLFxuICAgIFJBV1RFWFQ6IFJBV1RFWFRfU1RBVEUsXG4gICAgU0NSSVBUX0RBVEE6IFNDUklQVF9EQVRBX1NUQVRFLFxuICAgIFBMQUlOVEVYVDogUExBSU5URVhUX1NUQVRFXG59O1xuXG4vL1N0YXRpY1xuVG9rZW5pemVyLmdldFRva2VuQXR0ciA9IGZ1bmN0aW9uKHRva2VuLCBhdHRyTmFtZSkge1xuICAgIGZvciAobGV0IGkgPSB0b2tlbi5hdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodG9rZW4uYXR0cnNbaV0ubmFtZSA9PT0gYXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbi5hdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBUb2tlbml6ZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IE5TID0gKGV4cG9ydHMuTkFNRVNQQUNFUyA9IHtcbiAgICBIVE1MOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG4gICAgTUFUSE1MOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsXG4gICAgU1ZHOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAgIFhMSU5LOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsXG4gICAgWE1MOiAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJyxcbiAgICBYTUxOUzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJ1xufSk7XG5cbmV4cG9ydHMuQVRUUlMgPSB7XG4gICAgVFlQRTogJ3R5cGUnLFxuICAgIEFDVElPTjogJ2FjdGlvbicsXG4gICAgRU5DT0RJTkc6ICdlbmNvZGluZycsXG4gICAgUFJPTVBUOiAncHJvbXB0JyxcbiAgICBOQU1FOiAnbmFtZScsXG4gICAgQ09MT1I6ICdjb2xvcicsXG4gICAgRkFDRTogJ2ZhY2UnLFxuICAgIFNJWkU6ICdzaXplJ1xufTtcblxuZXhwb3J0cy5ET0NVTUVOVF9NT0RFID0ge1xuICAgIE5PX1FVSVJLUzogJ25vLXF1aXJrcycsXG4gICAgUVVJUktTOiAncXVpcmtzJyxcbiAgICBMSU1JVEVEX1FVSVJLUzogJ2xpbWl0ZWQtcXVpcmtzJ1xufTtcblxuY29uc3QgJCA9IChleHBvcnRzLlRBR19OQU1FUyA9IHtcbiAgICBBOiAnYScsXG4gICAgQUREUkVTUzogJ2FkZHJlc3MnLFxuICAgIEFOTk9UQVRJT05fWE1MOiAnYW5ub3RhdGlvbi14bWwnLFxuICAgIEFQUExFVDogJ2FwcGxldCcsXG4gICAgQVJFQTogJ2FyZWEnLFxuICAgIEFSVElDTEU6ICdhcnRpY2xlJyxcbiAgICBBU0lERTogJ2FzaWRlJyxcblxuICAgIEI6ICdiJyxcbiAgICBCQVNFOiAnYmFzZScsXG4gICAgQkFTRUZPTlQ6ICdiYXNlZm9udCcsXG4gICAgQkdTT1VORDogJ2Jnc291bmQnLFxuICAgIEJJRzogJ2JpZycsXG4gICAgQkxPQ0tRVU9URTogJ2Jsb2NrcXVvdGUnLFxuICAgIEJPRFk6ICdib2R5JyxcbiAgICBCUjogJ2JyJyxcbiAgICBCVVRUT046ICdidXR0b24nLFxuXG4gICAgQ0FQVElPTjogJ2NhcHRpb24nLFxuICAgIENFTlRFUjogJ2NlbnRlcicsXG4gICAgQ09ERTogJ2NvZGUnLFxuICAgIENPTDogJ2NvbCcsXG4gICAgQ09MR1JPVVA6ICdjb2xncm91cCcsXG5cbiAgICBERDogJ2RkJyxcbiAgICBERVNDOiAnZGVzYycsXG4gICAgREVUQUlMUzogJ2RldGFpbHMnLFxuICAgIERJQUxPRzogJ2RpYWxvZycsXG4gICAgRElSOiAnZGlyJyxcbiAgICBESVY6ICdkaXYnLFxuICAgIERMOiAnZGwnLFxuICAgIERUOiAnZHQnLFxuXG4gICAgRU06ICdlbScsXG4gICAgRU1CRUQ6ICdlbWJlZCcsXG5cbiAgICBGSUVMRFNFVDogJ2ZpZWxkc2V0JyxcbiAgICBGSUdDQVBUSU9OOiAnZmlnY2FwdGlvbicsXG4gICAgRklHVVJFOiAnZmlndXJlJyxcbiAgICBGT05UOiAnZm9udCcsXG4gICAgRk9PVEVSOiAnZm9vdGVyJyxcbiAgICBGT1JFSUdOX09CSkVDVDogJ2ZvcmVpZ25PYmplY3QnLFxuICAgIEZPUk06ICdmb3JtJyxcbiAgICBGUkFNRTogJ2ZyYW1lJyxcbiAgICBGUkFNRVNFVDogJ2ZyYW1lc2V0JyxcblxuICAgIEgxOiAnaDEnLFxuICAgIEgyOiAnaDInLFxuICAgIEgzOiAnaDMnLFxuICAgIEg0OiAnaDQnLFxuICAgIEg1OiAnaDUnLFxuICAgIEg2OiAnaDYnLFxuICAgIEhFQUQ6ICdoZWFkJyxcbiAgICBIRUFERVI6ICdoZWFkZXInLFxuICAgIEhHUk9VUDogJ2hncm91cCcsXG4gICAgSFI6ICdocicsXG4gICAgSFRNTDogJ2h0bWwnLFxuXG4gICAgSTogJ2knLFxuICAgIElNRzogJ2ltZycsXG4gICAgSU1BR0U6ICdpbWFnZScsXG4gICAgSU5QVVQ6ICdpbnB1dCcsXG4gICAgSUZSQU1FOiAnaWZyYW1lJyxcblxuICAgIEtFWUdFTjogJ2tleWdlbicsXG5cbiAgICBMQUJFTDogJ2xhYmVsJyxcbiAgICBMSTogJ2xpJyxcbiAgICBMSU5LOiAnbGluaycsXG4gICAgTElTVElORzogJ2xpc3RpbmcnLFxuXG4gICAgTUFJTjogJ21haW4nLFxuICAgIE1BTElHTk1BUks6ICdtYWxpZ25tYXJrJyxcbiAgICBNQVJRVUVFOiAnbWFycXVlZScsXG4gICAgTUFUSDogJ21hdGgnLFxuICAgIE1FTlU6ICdtZW51JyxcbiAgICBNRVRBOiAnbWV0YScsXG4gICAgTUdMWVBIOiAnbWdseXBoJyxcbiAgICBNSTogJ21pJyxcbiAgICBNTzogJ21vJyxcbiAgICBNTjogJ21uJyxcbiAgICBNUzogJ21zJyxcbiAgICBNVEVYVDogJ210ZXh0JyxcblxuICAgIE5BVjogJ25hdicsXG4gICAgTk9CUjogJ25vYnInLFxuICAgIE5PRlJBTUVTOiAnbm9mcmFtZXMnLFxuICAgIE5PRU1CRUQ6ICdub2VtYmVkJyxcbiAgICBOT1NDUklQVDogJ25vc2NyaXB0JyxcblxuICAgIE9CSkVDVDogJ29iamVjdCcsXG4gICAgT0w6ICdvbCcsXG4gICAgT1BUR1JPVVA6ICdvcHRncm91cCcsXG4gICAgT1BUSU9OOiAnb3B0aW9uJyxcblxuICAgIFA6ICdwJyxcbiAgICBQQVJBTTogJ3BhcmFtJyxcbiAgICBQTEFJTlRFWFQ6ICdwbGFpbnRleHQnLFxuICAgIFBSRTogJ3ByZScsXG5cbiAgICBSQjogJ3JiJyxcbiAgICBSUDogJ3JwJyxcbiAgICBSVDogJ3J0JyxcbiAgICBSVEM6ICdydGMnLFxuICAgIFJVQlk6ICdydWJ5JyxcblxuICAgIFM6ICdzJyxcbiAgICBTQ1JJUFQ6ICdzY3JpcHQnLFxuICAgIFNFQ1RJT046ICdzZWN0aW9uJyxcbiAgICBTRUxFQ1Q6ICdzZWxlY3QnLFxuICAgIFNPVVJDRTogJ3NvdXJjZScsXG4gICAgU01BTEw6ICdzbWFsbCcsXG4gICAgU1BBTjogJ3NwYW4nLFxuICAgIFNUUklLRTogJ3N0cmlrZScsXG4gICAgU1RST05HOiAnc3Ryb25nJyxcbiAgICBTVFlMRTogJ3N0eWxlJyxcbiAgICBTVUI6ICdzdWInLFxuICAgIFNVTU1BUlk6ICdzdW1tYXJ5JyxcbiAgICBTVVA6ICdzdXAnLFxuXG4gICAgVEFCTEU6ICd0YWJsZScsXG4gICAgVEJPRFk6ICd0Ym9keScsXG4gICAgVEVNUExBVEU6ICd0ZW1wbGF0ZScsXG4gICAgVEVYVEFSRUE6ICd0ZXh0YXJlYScsXG4gICAgVEZPT1Q6ICd0Zm9vdCcsXG4gICAgVEQ6ICd0ZCcsXG4gICAgVEg6ICd0aCcsXG4gICAgVEhFQUQ6ICd0aGVhZCcsXG4gICAgVElUTEU6ICd0aXRsZScsXG4gICAgVFI6ICd0cicsXG4gICAgVFJBQ0s6ICd0cmFjaycsXG4gICAgVFQ6ICd0dCcsXG5cbiAgICBVOiAndScsXG4gICAgVUw6ICd1bCcsXG5cbiAgICBTVkc6ICdzdmcnLFxuXG4gICAgVkFSOiAndmFyJyxcblxuICAgIFdCUjogJ3dicicsXG5cbiAgICBYTVA6ICd4bXAnXG59KTtcblxuZXhwb3J0cy5TUEVDSUFMX0VMRU1FTlRTID0ge1xuICAgIFtOUy5IVE1MXToge1xuICAgICAgICBbJC5BRERSRVNTXTogdHJ1ZSxcbiAgICAgICAgWyQuQVBQTEVUXTogdHJ1ZSxcbiAgICAgICAgWyQuQVJFQV06IHRydWUsXG4gICAgICAgIFskLkFSVElDTEVdOiB0cnVlLFxuICAgICAgICBbJC5BU0lERV06IHRydWUsXG4gICAgICAgIFskLkJBU0VdOiB0cnVlLFxuICAgICAgICBbJC5CQVNFRk9OVF06IHRydWUsXG4gICAgICAgIFskLkJHU09VTkRdOiB0cnVlLFxuICAgICAgICBbJC5CTE9DS1FVT1RFXTogdHJ1ZSxcbiAgICAgICAgWyQuQk9EWV06IHRydWUsXG4gICAgICAgIFskLkJSXTogdHJ1ZSxcbiAgICAgICAgWyQuQlVUVE9OXTogdHJ1ZSxcbiAgICAgICAgWyQuQ0FQVElPTl06IHRydWUsXG4gICAgICAgIFskLkNFTlRFUl06IHRydWUsXG4gICAgICAgIFskLkNPTF06IHRydWUsXG4gICAgICAgIFskLkNPTEdST1VQXTogdHJ1ZSxcbiAgICAgICAgWyQuRERdOiB0cnVlLFxuICAgICAgICBbJC5ERVRBSUxTXTogdHJ1ZSxcbiAgICAgICAgWyQuRElSXTogdHJ1ZSxcbiAgICAgICAgWyQuRElWXTogdHJ1ZSxcbiAgICAgICAgWyQuRExdOiB0cnVlLFxuICAgICAgICBbJC5EVF06IHRydWUsXG4gICAgICAgIFskLkVNQkVEXTogdHJ1ZSxcbiAgICAgICAgWyQuRklFTERTRVRdOiB0cnVlLFxuICAgICAgICBbJC5GSUdDQVBUSU9OXTogdHJ1ZSxcbiAgICAgICAgWyQuRklHVVJFXTogdHJ1ZSxcbiAgICAgICAgWyQuRk9PVEVSXTogdHJ1ZSxcbiAgICAgICAgWyQuRk9STV06IHRydWUsXG4gICAgICAgIFskLkZSQU1FXTogdHJ1ZSxcbiAgICAgICAgWyQuRlJBTUVTRVRdOiB0cnVlLFxuICAgICAgICBbJC5IMV06IHRydWUsXG4gICAgICAgIFskLkgyXTogdHJ1ZSxcbiAgICAgICAgWyQuSDNdOiB0cnVlLFxuICAgICAgICBbJC5INF06IHRydWUsXG4gICAgICAgIFskLkg1XTogdHJ1ZSxcbiAgICAgICAgWyQuSDZdOiB0cnVlLFxuICAgICAgICBbJC5IRUFEXTogdHJ1ZSxcbiAgICAgICAgWyQuSEVBREVSXTogdHJ1ZSxcbiAgICAgICAgWyQuSEdST1VQXTogdHJ1ZSxcbiAgICAgICAgWyQuSFJdOiB0cnVlLFxuICAgICAgICBbJC5IVE1MXTogdHJ1ZSxcbiAgICAgICAgWyQuSUZSQU1FXTogdHJ1ZSxcbiAgICAgICAgWyQuSU1HXTogdHJ1ZSxcbiAgICAgICAgWyQuSU5QVVRdOiB0cnVlLFxuICAgICAgICBbJC5MSV06IHRydWUsXG4gICAgICAgIFskLkxJTktdOiB0cnVlLFxuICAgICAgICBbJC5MSVNUSU5HXTogdHJ1ZSxcbiAgICAgICAgWyQuTUFJTl06IHRydWUsXG4gICAgICAgIFskLk1BUlFVRUVdOiB0cnVlLFxuICAgICAgICBbJC5NRU5VXTogdHJ1ZSxcbiAgICAgICAgWyQuTUVUQV06IHRydWUsXG4gICAgICAgIFskLk5BVl06IHRydWUsXG4gICAgICAgIFskLk5PRU1CRURdOiB0cnVlLFxuICAgICAgICBbJC5OT0ZSQU1FU106IHRydWUsXG4gICAgICAgIFskLk5PU0NSSVBUXTogdHJ1ZSxcbiAgICAgICAgWyQuT0JKRUNUXTogdHJ1ZSxcbiAgICAgICAgWyQuT0xdOiB0cnVlLFxuICAgICAgICBbJC5QXTogdHJ1ZSxcbiAgICAgICAgWyQuUEFSQU1dOiB0cnVlLFxuICAgICAgICBbJC5QTEFJTlRFWFRdOiB0cnVlLFxuICAgICAgICBbJC5QUkVdOiB0cnVlLFxuICAgICAgICBbJC5TQ1JJUFRdOiB0cnVlLFxuICAgICAgICBbJC5TRUNUSU9OXTogdHJ1ZSxcbiAgICAgICAgWyQuU0VMRUNUXTogdHJ1ZSxcbiAgICAgICAgWyQuU09VUkNFXTogdHJ1ZSxcbiAgICAgICAgWyQuU1RZTEVdOiB0cnVlLFxuICAgICAgICBbJC5TVU1NQVJZXTogdHJ1ZSxcbiAgICAgICAgWyQuVEFCTEVdOiB0cnVlLFxuICAgICAgICBbJC5UQk9EWV06IHRydWUsXG4gICAgICAgIFskLlREXTogdHJ1ZSxcbiAgICAgICAgWyQuVEVNUExBVEVdOiB0cnVlLFxuICAgICAgICBbJC5URVhUQVJFQV06IHRydWUsXG4gICAgICAgIFskLlRGT09UXTogdHJ1ZSxcbiAgICAgICAgWyQuVEhdOiB0cnVlLFxuICAgICAgICBbJC5USEVBRF06IHRydWUsXG4gICAgICAgIFskLlRJVExFXTogdHJ1ZSxcbiAgICAgICAgWyQuVFJdOiB0cnVlLFxuICAgICAgICBbJC5UUkFDS106IHRydWUsXG4gICAgICAgIFskLlVMXTogdHJ1ZSxcbiAgICAgICAgWyQuV0JSXTogdHJ1ZSxcbiAgICAgICAgWyQuWE1QXTogdHJ1ZVxuICAgIH0sXG4gICAgW05TLk1BVEhNTF06IHtcbiAgICAgICAgWyQuTUldOiB0cnVlLFxuICAgICAgICBbJC5NT106IHRydWUsXG4gICAgICAgIFskLk1OXTogdHJ1ZSxcbiAgICAgICAgWyQuTVNdOiB0cnVlLFxuICAgICAgICBbJC5NVEVYVF06IHRydWUsXG4gICAgICAgIFskLkFOTk9UQVRJT05fWE1MXTogdHJ1ZVxuICAgIH0sXG4gICAgW05TLlNWR106IHtcbiAgICAgICAgWyQuVElUTEVdOiB0cnVlLFxuICAgICAgICBbJC5GT1JFSUdOX09CSkVDVF06IHRydWUsXG4gICAgICAgIFskLkRFU0NdOiB0cnVlXG4gICAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgSFRNTCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sJyk7XG5cbi8vQWxpYXNlc1xuY29uc3QgJCA9IEhUTUwuVEFHX05BTUVTO1xuY29uc3QgTlMgPSBIVE1MLk5BTUVTUEFDRVM7XG5cbi8vRWxlbWVudCB1dGlsc1xuXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXG4vL0l0J3MgZmFzdGVyIHRoYW4gdXNpbmcgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIGlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkKHRuKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlA7XG5cbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLlJCIHx8IHRuID09PSAkLlJQIHx8IHRuID09PSAkLlJUIHx8IHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUIHx8IHRuID09PSAkLkxJO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5SVEM7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLk9QVElPTjtcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUR1JPVVA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZFRob3JvdWdobHkodG4pIHtcbiAgICBzd2l0Y2ggKHRuLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUDtcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlJCIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuUlAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5SVCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkREIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuRFQgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5MSSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuVEggfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5UUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuUlRDO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRDtcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICByZXR1cm4gdG4gPT09ICQuT1BUSU9OO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5DQVBUSU9OO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5PUFRHUk9VUCB8fCB0biA9PT0gJC5DT0xHUk9VUDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSB7XG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5IVE1MO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NSSB8fCB0biA9PT0gJC5NTyB8fCB0biA9PT0gJC5NTiB8fCB0biA9PT0gJC5NUykge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuSFRNTDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuREVTQykge1xuICAgICAgICAgICAgICAgIHJldHVybiBucyA9PT0gTlMuU1ZHO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnMgPT09IE5TLkhUTUw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1URVhUKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5NQVRITUw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRJVExFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5zID09PSBOUy5TVkc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiAodG4gPT09ICQuQVBQTEVUIHx8IHRuID09PSAkLk9CSkVDVCkgJiYgbnMgPT09IE5TLkhUTUw7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgcmV0dXJuICh0biA9PT0gJC5DQVBUSU9OIHx8IHRuID09PSAkLk1BUlFVRUUpICYmIG5zID09PSBOUy5IVE1MO1xuXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTDtcblxuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgcmV0dXJuIHRuID09PSAkLkZPUkVJR05fT0JKRUNUICYmIG5zID09PSBOUy5TVkc7XG5cbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIHJldHVybiB0biA9PT0gJC5BTk5PVEFUSU9OX1hNTCAmJiBucyA9PT0gTlMuTUFUSE1MO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy9TdGFjayBvZiBvcGVuIGVsZW1lbnRzXG5jbGFzcyBPcGVuRWxlbWVudFN0YWNrIHtcbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCwgdHJlZUFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IC0xO1xuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50VG1wbENvbnRlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnRtcGxDb3VudCA9IDA7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICB9XG5cbiAgICAvL0luZGV4IG9mIGVsZW1lbnRcbiAgICBfaW5kZXhPZihlbGVtZW50KSB7XG4gICAgICAgIGxldCBpZHggPSAtMTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zW2ldID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWR4ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWR4O1xuICAgIH1cblxuICAgIC8vVXBkYXRlIGN1cnJlbnQgZWxlbWVudFxuICAgIF9pc0luVGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUYWdOYW1lID09PSAkLlRFTVBMQVRFICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgPT09IE5TLkhUTUw7XG4gICAgfVxuXG4gICAgX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lID0gdGhpcy5jdXJyZW50ICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLmN1cnJlbnQpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFRtcGxDb250ZW50ID0gdGhpcy5faXNJblRlbXBsYXRlKCkgPyB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudCh0aGlzLmN1cnJlbnQpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvL011dGF0aW9uc1xuICAgIHB1c2goZWxlbWVudCkge1xuICAgICAgICB0aGlzLml0ZW1zWysrdGhpcy5zdGFja1RvcF0gPSBlbGVtZW50O1xuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc0luVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy50bXBsQ291bnQrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcCgpIHtcbiAgICAgICAgdGhpcy5zdGFja1RvcC0tO1xuXG4gICAgICAgIGlmICh0aGlzLnRtcGxDb3VudCA+IDAgJiYgdGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50LS07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgIH1cblxuICAgIHJlcGxhY2Uob2xkRWxlbWVudCwgbmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKG9sZEVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuaXRlbXNbaWR4XSA9IG5ld0VsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydEFmdGVyKHJlZmVyZW5jZUVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gdGhpcy5faW5kZXhPZihyZWZlcmVuY2VFbGVtZW50KSArIDE7XG5cbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdFbGVtZW50KTtcblxuICAgICAgICBpZiAoaW5zZXJ0aW9uSWR4ID09PSArK3RoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BVbnRpbFRhZ05hbWVQb3BwZWQodGFnTmFtZSkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMuY3VycmVudFRhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgcG9wcGVkRWxlbWVudCA9IHRoaXMuY3VycmVudDtcblxuICAgICAgICAgICAgdGhpcy5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKHBvcHBlZEVsZW1lbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnN0YWNrVG9wID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy5jdXJyZW50VGFnTmFtZTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KTtcblxuICAgICAgICAgICAgdGhpcy5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkgxIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSDIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IMyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkg0IHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuSDUgfHxcbiAgICAgICAgICAgICAgICAodG4gPT09ICQuSDYgJiYgbnMgPT09IE5TLkhUTUwpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMuY3VycmVudFRhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCAodG4gPT09ICQuVEggJiYgbnMgPT09IE5TLkhUTUwpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwb3BBbGxVcFRvSHRtbEVsZW1lbnQoKSB7XG4gICAgICAgIC8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCByb290IDxodG1sPiBlbGVtZW50IGlzIGFsd2F5cyBmaXJzdCBpbiB0aGUgb3BlbiBlbGVtZW50IHN0YWNrLCBzb1xuICAgICAgICAvL3dlIHBlcmZvcm0gdGhpcyBmYXN0IHN0YWNrIGNsZWFuIHVwLlxuICAgICAgICB0aGlzLnN0YWNrVG9wID0gMDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBjbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEFCTEUgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5URU1QTEFURSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwpIHx8XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEJPRFkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRGT09UICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5USEVBRCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLkhUTUwpIHx8XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpICE9PSBOUy5IVE1MXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCkge1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAodGhpcy5jdXJyZW50VGFnTmFtZSAhPT0gJC5UUiAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSAkLlRFTVBMQVRFICYmIHRoaXMuY3VycmVudFRhZ05hbWUgIT09ICQuSFRNTCkgfHxcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgIT09IE5TLkhUTUxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlKGVsZW1lbnQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9TZWFyY2hcbiAgICB0cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpIHtcbiAgICAgICAgLy9Qcm9wZXJseSBuZXN0ZWQgPGJvZHk+IGVsZW1lbnQgKHNob3VsZCBiZSBzZWNvbmQgZWxlbWVudCBpbiBzdGFjaykuXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLml0ZW1zWzFdO1xuXG4gICAgICAgIHJldHVybiBlbGVtZW50ICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gJC5CT0RZID8gZWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgY29udGFpbnMoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhPZihlbGVtZW50KSA+IC0xO1xuICAgIH1cblxuICAgIGdldENvbW1vbkFuY2VzdG9yKGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGVsZW1lbnRJZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiAtLWVsZW1lbnRJZHggPj0gMCA/IHRoaXMuaXRlbXNbZWxlbWVudElkeF0gOiBudWxsO1xuICAgIH1cblxuICAgIGlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5jdXJyZW50VGFnTmFtZSA9PT0gJC5IVE1MO1xuICAgIH1cblxuICAgIC8vRWxlbWVudCBpbiBzY29wZVxuICAgIGhhc0luU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHRuID09PSAkLkgxIHx8IHRuID09PSAkLkgyIHx8IHRuID09PSAkLkgzIHx8IHRuID09PSAkLkg0IHx8IHRuID09PSAkLkg1IHx8IHRuID09PSAkLkg2KSAmJlxuICAgICAgICAgICAgICAgIG5zID09PSBOUy5IVE1MXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzU2NvcGluZ0VsZW1lbnQodG4sIG5zKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhhc0luTGlzdEl0ZW1TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCgodG4gPT09ICQuVUwgfHwgdG4gPT09ICQuT0wpICYmIG5zID09PSBOUy5IVE1MKSB8fCBpc1Njb3BpbmdFbGVtZW50KHRuLCBucykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNJbkJ1dHRvblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKHRuID09PSAkLkJVVFRPTiAmJiBucyA9PT0gTlMuSFRNTCkgfHwgaXNTY29waW5nRWxlbWVudCh0biwgbnMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGFzSW5UYWJsZVNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG5cbiAgICAgICAgICAgIGlmIChucyAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRFTVBMQVRFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5URk9PVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhhc0luU2VsZWN0U2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcblxuICAgICAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG4gIT09ICQuT1BUSU9OICYmIHRuICE9PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy9JbXBsaWVkIGVuZCB0YWdzXG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpIHtcbiAgICAgICAgd2hpbGUgKGlzSW1wbGllZEVuZFRhZ1JlcXVpcmVkKHRoaXMuY3VycmVudFRhZ05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKSB7XG4gICAgICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZFRob3JvdWdobHkodGhpcy5jdXJyZW50VGFnTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihleGNsdXNpb25UYWdOYW1lKSB7XG4gICAgICAgIHdoaWxlIChpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCh0aGlzLmN1cnJlbnRUYWdOYW1lKSAmJiB0aGlzLmN1cnJlbnRUYWdOYW1lICE9PSBleGNsdXNpb25UYWdOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9wZW5FbGVtZW50U3RhY2s7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vQ29uc3RcbmNvbnN0IE5PQUhfQVJLX0NBUEFDSVRZID0gMztcblxuLy9MaXN0IG9mIGZvcm1hdHRpbmcgZWxlbWVudHNcbmNsYXNzIEZvcm1hdHRpbmdFbGVtZW50TGlzdCB7XG4gICAgY29uc3RydWN0b3IodHJlZUFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLmJvb2ttYXJrID0gbnVsbDtcbiAgICB9XG5cbiAgICAvL05vYWggQXJrJ3MgY29uZGl0aW9uXG4gICAgLy9PUFRJTUlaQVRJT046IGF0IGZpcnN0IHdlIHRyeSB0byBmaW5kIHBvc3NpYmxlIGNhbmRpZGF0ZXMgZm9yIGV4Y2x1c2lvbiB1c2luZ1xuICAgIC8vbGlnaHR3ZWlnaHQgaGV1cmlzdGljcyB3aXRob3V0IHRob3JvdWdoIGF0dHJpYnV0ZXMgY2hlY2suXG4gICAgX2dldE5vYWhBcmtDb25kaXRpb25DYW5kaWRhdGVzKG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+PSBOT0FIX0FSS19DQVBBQ0lUWSkge1xuICAgICAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QobmV3RWxlbWVudCkubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbmVUYWdOYW1lID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbmVOYW1lc3BhY2VVUkkgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShuZXdFbGVtZW50KTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcblxuICAgICAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbnRyeS5lbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0NhbmRpZGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gbmVUYWdOYW1lICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBuZU5hbWVzcGFjZVVSSSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXR0cnMubGVuZ3RoID09PSBuZUF0dHJzTGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaCh7IGlkeDogaSwgYXR0cnM6IGVsZW1lbnRBdHRycyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FuZGlkYXRlcy5sZW5ndGggPCBOT0FIX0FSS19DQVBBQ0lUWSA/IFtdIDogY2FuZGlkYXRlcztcbiAgICB9XG5cbiAgICBfZW5zdXJlTm9haEFya0NvbmRpdGlvbihuZXdFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSB0aGlzLl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50KTtcbiAgICAgICAgbGV0IGNMZW5ndGggPSBjYW5kaWRhdGVzLmxlbmd0aDtcblxuICAgICAgICBpZiAoY0xlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmVBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QobmV3RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBuZUF0dHJzTGVuZ3RoID0gbmVBdHRycy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBuZUF0dHJzTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICAgICAgLy9OT1RFOiBidWlsZCBhdHRycyBtYXAgZm9yIHRoZSBuZXcgZWxlbWVudCBzbyB3ZSBjYW4gcGVyZm9ybSBmYXN0IGxvb2t1cHNcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVBdHRyc0xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVBdHRyID0gbmVBdHRyc1tpXTtcblxuICAgICAgICAgICAgICAgIG5lQXR0cnNNYXBbbmVBdHRyLm5hbWVdID0gbmVBdHRyLnZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lQXR0cnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY0xlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNBdHRyID0gY2FuZGlkYXRlc1tqXS5hdHRyc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmVBdHRyc01hcFtjQXR0ci5uYW1lXSAhPT0gY0F0dHIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKGosIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY0xlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9OT1RFOiByZW1vdmUgYm90dG9tbW9zdCBjYW5kaWRhdGVzIHVudGlsIE5vYWgncyBBcmsgY29uZGl0aW9uIHdpbGwgbm90IGJlIG1ldFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGNMZW5ndGggLSAxOyBpID49IE5PQUhfQVJLX0NBUEFDSVRZIC0gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShjYW5kaWRhdGVzW2ldLmlkeCwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTXV0YXRpb25zXG4gICAgaW5zZXJ0TWFya2VyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMucHVzaCh7IHR5cGU6IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgfSk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcHVzaEVsZW1lbnQoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgdGhpcy5fZW5zdXJlTm9haEFya0NvbmRpdGlvbihlbGVtZW50KTtcblxuICAgICAgICB0aGlzLmVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBGb3JtYXR0aW5nRWxlbWVudExpc3QuRUxFTUVOVF9FTlRSWSxcbiAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICAgICAgICB0b2tlbjogdG9rZW5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICBpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhlbGVtZW50LCB0b2tlbikge1xuICAgICAgICBsZXQgYm9va21hcmtJZHggPSB0aGlzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgZm9yICg7IGJvb2ttYXJrSWR4ID49IDA7IGJvb2ttYXJrSWR4LS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJpZXNbYm9va21hcmtJZHhdID09PSB0aGlzLmJvb2ttYXJrKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGJvb2ttYXJrSWR4ICsgMSwgMCwge1xuICAgICAgICAgICAgdHlwZTogRm9ybWF0dGluZ0VsZW1lbnRMaXN0LkVMRU1FTlRfRU5UUlksXG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW46IHRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmVtb3ZlRW50cnkoZW50cnkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJpZXNbaV0gPT09IGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJUb0xhc3RNYXJrZXIoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMucG9wKCk7XG5cbiAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07XG5cbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBGb3JtYXR0aW5nRWxlbWVudExpc3QuTUFSS0VSX0VOVFJZKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1NlYXJjaFxuICAgIGdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcblxuICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbnRyeS5lbGVtZW50KSA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldEVsZW1lbnRFbnRyeShlbGVtZW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcblxuICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZICYmIGVudHJ5LmVsZW1lbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbi8vRW50cnkgdHlwZXNcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5NQVJLRVJfRU5UUlkgPSAnTUFSS0VSX0VOVFJZJztcbkZvcm1hdHRpbmdFbGVtZW50TGlzdC5FTEVNRU5UX0VOVFJZID0gJ0VMRU1FTlRfRU5UUlknO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZvcm1hdHRpbmdFbGVtZW50TGlzdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY2xhc3MgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKGhvc3QpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2RzID0ge307XG4gICAgICAgIGNvbnN0IG92ZXJyaWRkZW5NZXRob2RzID0gdGhpcy5fZ2V0T3ZlcnJpZGRlbk1ldGhvZHModGhpcywgb3JpZ2luYWxNZXRob2RzKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdmVycmlkZGVuTWV0aG9kcykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3ZlcnJpZGRlbk1ldGhvZHNba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kc1trZXldID0gaG9zdFtrZXldO1xuICAgICAgICAgICAgICAgIGhvc3Rba2V5XSA9IG92ZXJyaWRkZW5NZXRob2RzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZ2V0T3ZlcnJpZGRlbk1ldGhvZHMoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxufVxuXG5NaXhpbi5pbnN0YWxsID0gZnVuY3Rpb24oaG9zdCwgQ3Rvciwgb3B0cykge1xuICAgIGlmICghaG9zdC5fX21peGlucykge1xuICAgICAgICBob3N0Ll9fbWl4aW5zID0gW107XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob3N0Ll9fbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChob3N0Ll9fbWl4aW5zW2ldLmNvbnN0cnVjdG9yID09PSBDdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gaG9zdC5fX21peGluc1tpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1peGluID0gbmV3IEN0b3IoaG9zdCwgb3B0cyk7XG5cbiAgICBob3N0Ll9fbWl4aW5zLnB1c2gobWl4aW4pO1xuXG4gICAgcmV0dXJuIG1peGluO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4gZXh0ZW5kcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3IocHJlcHJvY2Vzc29yKSB7XG4gICAgICAgIHN1cGVyKHByZXByb2Nlc3Nvcik7XG5cbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBwcmVwcm9jZXNzb3I7XG4gICAgICAgIHRoaXMuaXNFb2wgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saW5lU3RhcnRQb3MgPSAwO1xuICAgICAgICB0aGlzLmRyb3BwZWRCdWZmZXJTaXplID0gMDtcblxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuY29sID0gMDtcbiAgICAgICAgdGhpcy5saW5lID0gMTtcbiAgICB9XG5cbiAgICBfZ2V0T3ZlcnJpZGRlbk1ldGhvZHMobXhuLCBvcmlnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZHZhbmNlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zICsgMTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuaHRtbFtwb3NdO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBMRiBzaG91bGQgYmUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBsaW5lXG4gICAgICAgICAgICAgICAgaWYgKG14bi5pc0VvbCkge1xuICAgICAgICAgICAgICAgICAgICBteG4uaXNFb2wgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbXhuLmxpbmUrKztcbiAgICAgICAgICAgICAgICAgICAgbXhuLmxpbmVTdGFydFBvcyA9IHBvcztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nIHx8IChjaCA9PT0gJ1xccicgJiYgdGhpcy5odG1sW3BvcyArIDFdICE9PSAnXFxuJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbXhuLmlzRW9sID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBteG4uY29sID0gcG9zIC0gbXhuLmxpbmVTdGFydFBvcyArIDE7XG4gICAgICAgICAgICAgICAgbXhuLm9mZnNldCA9IG14bi5kcm9wcGVkQnVmZmVyU2l6ZSArIHBvcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnLmFkdmFuY2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJldHJlYXQoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5yZXRyZWF0LmNhbGwodGhpcyk7XG5cbiAgICAgICAgICAgICAgICBteG4uaXNFb2wgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBteG4uY29sID0gdGhpcy5wb3MgLSBteG4ubGluZVN0YXJ0UG9zICsgMTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2UG9zID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgICAgICBvcmlnLmRyb3BQYXJzZWRDaHVuay5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVkdWN0aW9uID0gcHJldlBvcyAtIHRoaXMucG9zO1xuXG4gICAgICAgICAgICAgICAgbXhuLmxpbmVTdGFydFBvcyAtPSByZWR1Y3Rpb247XG4gICAgICAgICAgICAgICAgbXhuLmRyb3BwZWRCdWZmZXJTaXplICs9IHJlZHVjdGlvbjtcbiAgICAgICAgICAgICAgICBteG4ub2Zmc2V0ID0gbXhuLmRyb3BwZWRCdWZmZXJTaXplICsgdGhpcy5wb3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBvc2l0aW9uVHJhY2tpbmdQcmVwcm9jZXNzb3JNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyJyk7XG5jb25zdCBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4gPSByZXF1aXJlKCcuLi9wb3NpdGlvbi10cmFja2luZy9wcmVwcm9jZXNzb3ItbWl4aW4nKTtcblxuY2xhc3MgTG9jYXRpb25JbmZvVG9rZW5pemVyTWl4aW4gZXh0ZW5kcyBNaXhpbiB7XG4gICAgY29uc3RydWN0b3IodG9rZW5pemVyKSB7XG4gICAgICAgIHN1cGVyKHRva2VuaXplcik7XG5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXI7XG4gICAgICAgIHRoaXMucG9zVHJhY2tlciA9IE1peGluLmluc3RhbGwodG9rZW5pemVyLnByZXByb2Nlc3NvciwgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluKTtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ckxvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdExvYyA9IG51bGw7XG4gICAgfVxuXG4gICAgX2dldEN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0TGluZTogdGhpcy5wb3NUcmFja2VyLmxpbmUsXG4gICAgICAgICAgICBzdGFydENvbDogdGhpcy5wb3NUcmFja2VyLmNvbCxcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0LFxuICAgICAgICAgICAgZW5kTGluZTogLTEsXG4gICAgICAgICAgICBlbmRDb2w6IC0xLFxuICAgICAgICAgICAgZW5kT2Zmc2V0OiAtMVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF9hdHRhY2hDdXJyZW50QXR0ckxvY2F0aW9uSW5mbygpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ckxvY2F0aW9uLmVuZExpbmUgPSB0aGlzLnBvc1RyYWNrZXIubGluZTtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ckxvY2F0aW9uLmVuZENvbCA9IHRoaXMucG9zVHJhY2tlci5jb2w7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbi5lbmRPZmZzZXQgPSB0aGlzLnBvc1RyYWNrZXIub2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRoaXMudG9rZW5pemVyLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgY29uc3QgY3VycmVudEF0dHIgPSB0aGlzLnRva2VuaXplci5jdXJyZW50QXR0cjtcblxuICAgICAgICBpZiAoIWN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRycykge1xuICAgICAgICAgICAgY3VycmVudFRva2VuLmxvY2F0aW9uLmF0dHJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbi5sb2NhdGlvbi5hdHRyc1tjdXJyZW50QXR0ci5uYW1lXSA9IHRoaXMuY3VycmVudEF0dHJMb2NhdGlvbjtcbiAgICB9XG5cbiAgICBfZ2V0T3ZlcnJpZGRlbk1ldGhvZHMobXhuLCBvcmlnKSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB7XG4gICAgICAgICAgICBfY3JlYXRlU3RhcnRUYWdUb2tlbigpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9jcmVhdGVTdGFydFRhZ1Rva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlRW5kVGFnVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlRW5kVGFnVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5jdExvYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9jcmVhdGVDb21tZW50VG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlQ29tbWVudFRva2VuLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlRG9jdHlwZVRva2VuKGluaXRpYWxOYW1lKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlRG9jdHlwZVRva2VuLmNhbGwodGhpcywgaW5pdGlhbE5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uID0gbXhuLmN0TG9jO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4uY2FsbCh0aGlzLCB0eXBlLCBjaCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24gPSBteG4uY3RMb2M7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlRU9GVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fY3JlYXRlRU9GVG9rZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5sb2NhdGlvbiA9IG14bi5fZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfY3JlYXRlQXR0cihhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9jcmVhdGVBdHRyLmNhbGwodGhpcywgYXR0ck5hbWVGaXJzdENoKTtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudEF0dHJMb2NhdGlvbiA9IG14bi5fZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfbGVhdmVBdHRyTmFtZSh0b1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fbGVhdmVBdHRyTmFtZS5jYWxsKHRoaXMsIHRvU3RhdGUpO1xuICAgICAgICAgICAgICAgIG14bi5fYXR0YWNoQ3VycmVudEF0dHJMb2NhdGlvbkluZm8oKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9sZWF2ZUF0dHJWYWx1ZSh0b1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fbGVhdmVBdHRyVmFsdWUuY2FsbCh0aGlzLCB0b1N0YXRlKTtcbiAgICAgICAgICAgICAgICBteG4uX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfZW1pdEN1cnJlbnRUb2tlbigpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdExvYyA9IHRoaXMuY3VycmVudFRva2VuLmxvY2F0aW9uO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBpZiB3ZSBoYXZlIHBlbmRpbmcgY2hhcmFjdGVyIHRva2VuIG1ha2UgaXQncyBlbmQgbG9jYXRpb24gZXF1YWwgdG8gdGhlXG4gICAgICAgICAgICAgICAgLy9jdXJyZW50IHRva2VuJ3Mgc3RhcnQgbG9jYXRpb24uXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZExpbmUgPSBjdExvYy5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZENvbCA9IGN0TG9jLnN0YXJ0Q29sO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQgPSBjdExvYy5zdGFydE9mZnNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkVPRl9UT0tFTikge1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRMaW5lID0gY3RMb2Muc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRDb2wgPSBjdExvYy5zdGFydENvbDtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kTGluZSA9IG14bi5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZENvbCA9IG14bi5wb3NUcmFja2VyLmNvbCArIDE7XG4gICAgICAgICAgICAgICAgICAgIGN0TG9jLmVuZE9mZnNldCA9IG14bi5wb3NUcmFja2VyLm9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3JpZy5fZW1pdEN1cnJlbnRUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RMb2MgPSB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbjtcblxuICAgICAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBjaGFyYWN0ZXIgdG9rZW4gYW5kIGl0J3MgbG9jYXRpb24gd2Fzbid0IHNldCBpbiB0aGUgX2VtaXRDdXJyZW50VG9rZW4oKSxcbiAgICAgICAgICAgICAgICAvL3RoZW4gc2V0IGl0J3MgbG9jYXRpb24gYXQgdGhlIGN1cnJlbnQgcHJlcHJvY2Vzc29yIHBvc2l0aW9uLlxuICAgICAgICAgICAgICAgIC8vV2UgZG9uJ3QgbmVlZCB0byBpbmNyZW1lbnQgcHJlcHJvY2Vzc29yIHBvc2l0aW9uLCBzaW5jZSBjaGFyYWN0ZXIgdG9rZW5cbiAgICAgICAgICAgICAgICAvL2VtaXNzaW9uIGlzIGFsd2F5cyBmb3JjZWQgYnkgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b2tlbiBoZXJlLlxuICAgICAgICAgICAgICAgIC8vU28sIHdlIGFscmVhZHkgaGF2ZSBhZHZhbmNlZCBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICBpZiAoY3RMb2MgJiYgY3RMb2MuZW5kT2Zmc2V0ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRMaW5lID0gbXhuLnBvc1RyYWNrZXIubGluZTtcbiAgICAgICAgICAgICAgICAgICAgY3RMb2MuZW5kQ29sID0gbXhuLnBvc1RyYWNrZXIuY29sO1xuICAgICAgICAgICAgICAgICAgICBjdExvYy5lbmRPZmZzZXQgPSBteG4ucG9zVHJhY2tlci5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3JpZy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vTk9URTogcGF0Y2ggaW5pdGlhbCBzdGF0ZXMgZm9yIGVhY2ggbW9kZSB0byBvYnRhaW4gdG9rZW4gc3RhcnQgcG9zaXRpb25cbiAgICAgICAgT2JqZWN0LmtleXMoVG9rZW5pemVyLk1PREUpLmZvckVhY2gobW9kZU5hbWUgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBUb2tlbml6ZXIuTU9ERVttb2RlTmFtZV07XG5cbiAgICAgICAgICAgIG1ldGhvZHNbc3RhdGVdID0gZnVuY3Rpb24oY3ApIHtcbiAgICAgICAgICAgICAgICBteG4uY3RMb2MgPSBteG4uX2dldEN1cnJlbnRMb2NhdGlvbigpO1xuICAgICAgICAgICAgICAgIG9yaWdbc3RhdGVdLmNhbGwodGhpcywgY3ApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIExvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbiBleHRlbmRzIE1peGluIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgb3B0cykge1xuICAgICAgICBzdXBlcihzdGFjayk7XG5cbiAgICAgICAgdGhpcy5vbkl0ZW1Qb3AgPSBvcHRzLm9uSXRlbVBvcDtcbiAgICB9XG5cbiAgICBfZ2V0T3ZlcnJpZGRlbk1ldGhvZHMobXhuLCBvcmlnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3AoKSB7XG4gICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIG9yaWcucG9wLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwb3BBbGxVcFRvSHRtbEVsZW1lbnQoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgbXhuLm9uSXRlbVBvcCh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvcmlnLnBvcEFsbFVwVG9IdG1sRWxlbWVudC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb3ZlKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBteG4ub25JdGVtUG9wKHRoaXMuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgb3JpZy5yZW1vdmUuY2FsbCh0aGlzLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTG9jYXRpb25JbmZvT3BlbkVsZW1lbnRTdGFja01peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5jb25zdCBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi8uLi90b2tlbml6ZXInKTtcbmNvbnN0IExvY2F0aW9uSW5mb1Rva2VuaXplck1peGluID0gcmVxdWlyZSgnLi90b2tlbml6ZXItbWl4aW4nKTtcbmNvbnN0IExvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbiA9IHJlcXVpcmUoJy4vb3Blbi1lbGVtZW50LXN0YWNrLW1peGluJyk7XG5jb25zdCBIVE1MID0gcmVxdWlyZSgnLi4vLi4vY29tbW9uL2h0bWwnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gSFRNTC5UQUdfTkFNRVM7XG5cbmNsYXNzIExvY2F0aW9uSW5mb1BhcnNlck1peGluIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKHBhcnNlcikge1xuICAgICAgICBzdXBlcihwYXJzZXIpO1xuXG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5wYXJzZXIudHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMucG9zVHJhY2tlciA9IG51bGw7XG4gICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICB9XG5cbiAgICBfc2V0U3RhcnRMb2NhdGlvbihlbGVtZW50KSB7XG4gICAgICAgIGxldCBsb2MgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmxhc3RTdGFydFRhZ1Rva2VuKSB7XG4gICAgICAgICAgICBsb2MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmxhc3RTdGFydFRhZ1Rva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIGxvYy5zdGFydFRhZyA9IHRoaXMubGFzdFN0YXJ0VGFnVG9rZW4ubG9jYXRpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCwgbG9jKTtcbiAgICB9XG5cbiAgICBfc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgY2xvc2luZ1Rva2VuKSB7XG4gICAgICAgIGNvbnN0IGxvYyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50KTtcblxuICAgICAgICBpZiAobG9jKSB7XG4gICAgICAgICAgICBpZiAoY2xvc2luZ1Rva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RMb2MgPSBjbG9zaW5nVG9rZW4ubG9jYXRpb247XG4gICAgICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBGb3IgY2FzZXMgbGlrZSA8cD4gPHA+IDwvcD4gLSBGaXJzdCAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nXG4gICAgICAgICAgICAgICAgLy8gdGFnIGFuZCBmb3IgY2FzZXMgbGlrZSA8dGQ+IDxwPiA8L3RkPiAtICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmcgdGFnLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ2xvc2luZ0VuZFRhZyA9IGNsb3NpbmdUb2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTiAmJiB0biA9PT0gY2xvc2luZ1Rva2VuLnRhZ05hbWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNDbG9zaW5nRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRUYWcgPSBPYmplY3QuYXNzaWduKHt9LCBjdExvYyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5lbmRMaW5lID0gY3RMb2MuZW5kTGluZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZENvbCA9IGN0TG9jLmVuZENvbDtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZE9mZnNldCA9IGN0TG9jLmVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kTGluZSA9IGN0TG9jLnN0YXJ0TGluZTtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZENvbCA9IGN0TG9jLnN0YXJ0Q29sO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kT2Zmc2V0ID0gY3RMb2Muc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14biwgb3JpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2Jvb3RzdHJhcChkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgb3JpZy5fYm9vdHN0cmFwLmNhbGwodGhpcywgZG9jdW1lbnQsIGZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIG14bi5jdXJyZW50VG9rZW4gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW5pemVyTWl4aW4gPSBNaXhpbi5pbnN0YWxsKHRoaXMudG9rZW5pemVyLCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbik7XG5cbiAgICAgICAgICAgICAgICBteG4ucG9zVHJhY2tlciA9IHRva2VuaXplck1peGluLnBvc1RyYWNrZXI7XG5cbiAgICAgICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMub3BlbkVsZW1lbnRzLCBMb2NhdGlvbkluZm9PcGVuRWxlbWVudFN0YWNrTWl4aW4sIHtcbiAgICAgICAgICAgICAgICAgICAgb25JdGVtUG9wOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBteG4uX3NldEVuZExvY2F0aW9uKGVsZW1lbnQsIG14bi5jdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfcnVuUGFyc2luZ0xvb3Aoc2NyaXB0SGFuZGxlcikge1xuICAgICAgICAgICAgICAgIG9yaWcuX3J1blBhcnNpbmdMb29wLmNhbGwodGhpcywgc2NyaXB0SGFuZGxlcik7XG5cbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBnZW5lcmF0ZSBsb2NhdGlvbiBpbmZvIGZvciBlbGVtZW50c1xuICAgICAgICAgICAgICAgIC8vIHRoYXQgcmVtYWlucyBvbiBvcGVuIGVsZW1lbnQgc3RhY2tcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIG14bi5fc2V0RW5kTG9jYXRpb24odGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaV0sIG14bi5jdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vVG9rZW4gcHJvY2Vzc2luZ1xuICAgICAgICAgICAgX3Byb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5fcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudC5jYWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgICAgICAgICBteG4uY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgICAgICAgICAgb3JpZy5fcHJvY2Vzc1Rva2VuLmNhbGwodGhpcywgdG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiA8Ym9keT4gYW5kIDxodG1sPiBhcmUgbmV2ZXIgcG9wcGVkIGZyb20gdGhlIHN0YWNrLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZWRcbiAgICAgICAgICAgICAgICAvL3RoZWlyIGVuZCBsb2NhdGlvbiBleHBsaWNpdGx5LlxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVFeHBsaWNpdFVwZGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5FTkRfVEFHX1RPS0VOICYmXG4gICAgICAgICAgICAgICAgICAgICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwgfHwgKHRva2VuLnRhZ05hbWUgPT09ICQuQk9EWSAmJiB0aGlzLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlRXhwbGljaXRVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSB0b2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXhuLl9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL0RvY3R5cGVcbiAgICAgICAgICAgIF9zZXREb2N1bWVudFR5cGUodG9rZW4pIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9zZXREb2N1bWVudFR5cGUuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudENoaWxkcmVuID0gdGhpcy50cmVlQWRhcHRlci5nZXRDaGlsZE5vZGVzKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNuTGVuZ3RoID0gZG9jdW1lbnRDaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNuTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50Q2hpbGRyZW5baV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuaXNEb2N1bWVudFR5cGVOb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24obm9kZSwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL0VsZW1lbnRzXG4gICAgICAgICAgICBfYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBfYXR0YWNoRWxlbWVudFRvVHJlZSBpcyBjYWxsZWQgZnJvbSBfYXBwZW5kRWxlbWVudCwgX2luc2VydEVsZW1lbnQgYW5kIF9pbnNlcnRUZW1wbGF0ZSBtZXRob2RzLlxuICAgICAgICAgICAgICAgIC8vU28gd2Ugd2lsbCB1c2UgdG9rZW4gbG9jYXRpb24gc3RvcmVkIGluIHRoaXMgbWV0aG9kcyBmb3IgdGhlIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgbXhuLl9zZXRTdGFydExvY2F0aW9uKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIG14bi5sYXN0U3RhcnRUYWdUb2tlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgb3JpZy5fYXR0YWNoRWxlbWVudFRvVHJlZS5jYWxsKHRoaXMsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2FwcGVuZEVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICAgICAgICAgIG14bi5sYXN0U3RhcnRUYWdUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG9yaWcuX2FwcGVuZEVsZW1lbnQuY2FsbCh0aGlzLCB0b2tlbiwgbmFtZXNwYWNlVVJJKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9pbnNlcnRFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRFbGVtZW50LmNhbGwodGhpcywgdG9rZW4sIG5hbWVzcGFjZVVSSSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfaW5zZXJ0VGVtcGxhdGUodG9rZW4pIHtcbiAgICAgICAgICAgICAgICBteG4ubGFzdFN0YXJ0VGFnVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRUZW1wbGF0ZS5jYWxsKHRoaXMsIHRva2VuKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRtcGxDb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odG1wbENvbnRlbnQsIG51bGwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCwgbnVsbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvL0NvbW1lbnRzXG4gICAgICAgICAgICBfYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHBhcmVudCkge1xuICAgICAgICAgICAgICAgIG9yaWcuX2FwcGVuZENvbW1lbnROb2RlLmNhbGwodGhpcywgdG9rZW4sIHBhcmVudCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2RlcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29tbWVudE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vVGV4dFxuICAgICAgICAgICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHN0b3JlIGxhc3QgZm9zdGVyIHBhcmVudGluZyBsb2NhdGlvbiwgc28gd2Ugd2lsbCBiZSBhYmxlIHRvIGZpbmQgaW5zZXJ0ZWQgdGV4dFxuICAgICAgICAgICAgICAgIC8vaW4gY2FzZSBvZiBmb3N0ZXIgcGFyZW50aW5nXG4gICAgICAgICAgICAgICAgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiA9IG9yaWcuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG14bi5sYXN0Rm9zdGVyUGFyZW50aW5nTG9jYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfaW5zZXJ0Q2hhcmFjdGVycyh0b2tlbikge1xuICAgICAgICAgICAgICAgIG9yaWcuX2luc2VydENoYXJhY3RlcnMuY2FsbCh0aGlzLCB0b2tlbik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNGb3N0ZXJQYXJlbnQgPSB0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID1cbiAgICAgICAgICAgICAgICAgICAgKGhhc0Zvc3RlclBhcmVudCAmJiBteG4ubGFzdEZvc3RlclBhcmVudGluZ0xvY2F0aW9uLnBhcmVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2RlcyhwYXJlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dE5vZGVJZHggPVxuICAgICAgICAgICAgICAgICAgICBoYXNGb3N0ZXJQYXJlbnQgJiYgbXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5iZWZvcmVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNpYmxpbmdzLmluZGV4T2YobXhuLmxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbi5iZWZvcmVFbGVtZW50KSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2libGluZ3MubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHROb2RlID0gc2libGluZ3NbdGV4dE5vZGVJZHhdO1xuXG4gICAgICAgICAgICAgICAgLy9OT1RFOiBpZiB3ZSBoYXZlIGxvY2F0aW9uIGFzc2lnbmVkIGJ5IGFub3RoZXIgdG9rZW4sIHRoZW4ganVzdCB1cGRhdGUgZW5kIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgdG5Mb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRuTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHRuTG9jLmVuZExpbmUgPSB0b2tlbi5sb2NhdGlvbi5lbmRMaW5lO1xuICAgICAgICAgICAgICAgICAgICB0bkxvYy5lbmRDb2wgPSB0b2tlbi5sb2NhdGlvbi5lbmRDb2w7XG4gICAgICAgICAgICAgICAgICAgIHRuTG9jLmVuZE9mZnNldCA9IHRva2VuLmxvY2F0aW9uLmVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvY2F0aW9uSW5mb1BhcnNlck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlIGV4dGVuZHMgTWl4aW4ge1xuICAgIGNvbnN0cnVjdG9yKGhvc3QsIG9wdHMpIHtcbiAgICAgICAgc3VwZXIoaG9zdCk7XG5cbiAgICAgICAgdGhpcy5wb3NUcmFja2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5vblBhcnNlRXJyb3IgPSBvcHRzLm9uUGFyc2VFcnJvcjtcbiAgICB9XG5cbiAgICBfc2V0RXJyb3JMb2NhdGlvbihlcnIpIHtcbiAgICAgICAgZXJyLnN0YXJ0TGluZSA9IGVyci5lbmRMaW5lID0gdGhpcy5wb3NUcmFja2VyLmxpbmU7XG4gICAgICAgIGVyci5zdGFydENvbCA9IGVyci5lbmRDb2wgPSB0aGlzLnBvc1RyYWNrZXIuY29sO1xuICAgICAgICBlcnIuc3RhcnRPZmZzZXQgPSBlcnIuZW5kT2Zmc2V0ID0gdGhpcy5wb3NUcmFja2VyLm9mZnNldDtcbiAgICB9XG5cbiAgICBfcmVwb3J0RXJyb3IoY29kZSkge1xuICAgICAgICBjb25zdCBlcnIgPSB7XG4gICAgICAgICAgICBjb2RlOiBjb2RlLFxuICAgICAgICAgICAgc3RhcnRMaW5lOiAtMSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiAtMSxcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiAtMSxcbiAgICAgICAgICAgIGVuZExpbmU6IC0xLFxuICAgICAgICAgICAgZW5kQ29sOiAtMSxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTFcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9zZXRFcnJvckxvY2F0aW9uKGVycik7XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yKGVycik7XG4gICAgfVxuXG4gICAgX2dldE92ZXJyaWRkZW5NZXRob2RzKG14bikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2Vycihjb2RlKSB7XG4gICAgICAgICAgICAgICAgbXhuLl9yZXBvcnRFcnJvcihjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlID0gcmVxdWlyZSgnLi9taXhpbi1iYXNlJyk7XG5jb25zdCBQb3NpdGlvblRyYWNraW5nUHJlcHJvY2Vzc29yTWl4aW4gPSByZXF1aXJlKCcuLi9wb3NpdGlvbi10cmFja2luZy9wcmVwcm9jZXNzb3ItbWl4aW4nKTtcbmNvbnN0IE1peGluID0gcmVxdWlyZSgnLi4vLi4vdXRpbHMvbWl4aW4nKTtcblxuY2xhc3MgRXJyb3JSZXBvcnRpbmdQcmVwcm9jZXNzb3JNaXhpbiBleHRlbmRzIEVycm9yUmVwb3J0aW5nTWl4aW5CYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwcmVwcm9jZXNzb3IsIG9wdHMpIHtcbiAgICAgICAgc3VwZXIocHJlcHJvY2Vzc29yLCBvcHRzKTtcblxuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBNaXhpbi5pbnN0YWxsKHByZXByb2Nlc3NvciwgUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluKTtcbiAgICAgICAgdGhpcy5sYXN0RXJyT2Zmc2V0ID0gLTE7XG4gICAgfVxuXG4gICAgX3JlcG9ydEVycm9yKGNvZGUpIHtcbiAgICAgICAgLy9OT1RFOiBhdm9pZCByZXBvcnRpbmcgZXJyb3IgdHdpY2Ugb24gYWR2YW5jZS9yZXRyZWF0XG4gICAgICAgIGlmICh0aGlzLmxhc3RFcnJPZmZzZXQgIT09IHRoaXMucG9zVHJhY2tlci5vZmZzZXQpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IHRoaXMucG9zVHJhY2tlci5vZmZzZXQ7XG4gICAgICAgICAgICBzdXBlci5fcmVwb3J0RXJyb3IoY29kZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRXJyb3JSZXBvcnRpbmdQcmVwcm9jZXNzb3JNaXhpbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UgPSByZXF1aXJlKCcuL21peGluLWJhc2UnKTtcbmNvbnN0IEVycm9yUmVwb3J0aW5nUHJlcHJvY2Vzc29yTWl4aW4gPSByZXF1aXJlKCcuL3ByZXByb2Nlc3Nvci1taXhpbicpO1xuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi8uLi91dGlscy9taXhpbicpO1xuXG5jbGFzcyBFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluIGV4dGVuZHMgRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHRva2VuaXplciwgb3B0cykge1xuICAgICAgICBzdXBlcih0b2tlbml6ZXIsIG9wdHMpO1xuXG4gICAgICAgIGNvbnN0IHByZXByb2Nlc3Nvck1peGluID0gTWl4aW4uaW5zdGFsbCh0b2tlbml6ZXIucHJlcHJvY2Vzc29yLCBFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluLCBvcHRzKTtcblxuICAgICAgICB0aGlzLnBvc1RyYWNrZXIgPSBwcmVwcm9jZXNzb3JNaXhpbi5wb3NUcmFja2VyO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBFcnJvclJlcG9ydGluZ01peGluQmFzZSA9IHJlcXVpcmUoJy4vbWl4aW4tYmFzZScpO1xuY29uc3QgRXJyb3JSZXBvcnRpbmdUb2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4vdG9rZW5pemVyLW1peGluJyk7XG5jb25zdCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiA9IHJlcXVpcmUoJy4uL2xvY2F0aW9uLWluZm8vdG9rZW5pemVyLW1peGluJyk7XG5jb25zdCBNaXhpbiA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL21peGluJyk7XG5cbmNsYXNzIEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4gZXh0ZW5kcyBFcnJvclJlcG9ydGluZ01peGluQmFzZSB7XG4gICAgY29uc3RydWN0b3IocGFyc2VyLCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKHBhcnNlciwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICAgICAgdGhpcy5jdExvYyA9IG51bGw7XG4gICAgICAgIHRoaXMubG9jQmVmb3JlVG9rZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBfc2V0RXJyb3JMb2NhdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKHRoaXMuY3RMb2MpIHtcbiAgICAgICAgICAgIGVyci5zdGFydExpbmUgPSB0aGlzLmN0TG9jLnN0YXJ0TGluZTtcbiAgICAgICAgICAgIGVyci5zdGFydENvbCA9IHRoaXMuY3RMb2Muc3RhcnRDb2w7XG4gICAgICAgICAgICBlcnIuc3RhcnRPZmZzZXQgPSB0aGlzLmN0TG9jLnN0YXJ0T2Zmc2V0O1xuXG4gICAgICAgICAgICBlcnIuZW5kTGluZSA9IHRoaXMubG9jQmVmb3JlVG9rZW4gPyB0aGlzLmN0TG9jLnN0YXJ0TGluZSA6IHRoaXMuY3RMb2MuZW5kTGluZTtcbiAgICAgICAgICAgIGVyci5lbmRDb2wgPSB0aGlzLmxvY0JlZm9yZVRva2VuID8gdGhpcy5jdExvYy5zdGFydENvbCA6IHRoaXMuY3RMb2MuZW5kQ29sO1xuICAgICAgICAgICAgZXJyLmVuZE9mZnNldCA9IHRoaXMubG9jQmVmb3JlVG9rZW4gPyB0aGlzLmN0TG9jLnN0YXJ0T2Zmc2V0IDogdGhpcy5jdExvYy5lbmRPZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZ2V0T3ZlcnJpZGRlbk1ldGhvZHMobXhuLCBvcmlnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBfYm9vdHN0cmFwKGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBvcmlnLl9ib290c3RyYXAuY2FsbCh0aGlzLCBkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KTtcblxuICAgICAgICAgICAgICAgIE1peGluLmluc3RhbGwodGhpcy50b2tlbml6ZXIsIEVycm9yUmVwb3J0aW5nVG9rZW5pemVyTWl4aW4sIG14bi5vcHRzKTtcbiAgICAgICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMudG9rZW5pemVyLCBMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfcHJvY2Vzc0lucHV0VG9rZW4odG9rZW4pIHtcbiAgICAgICAgICAgICAgICBteG4uY3RMb2MgPSB0b2tlbi5sb2NhdGlvbjtcblxuICAgICAgICAgICAgICAgIG9yaWcuX3Byb2Nlc3NJbnB1dFRva2VuLmNhbGwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2Vycihjb2RlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgbXhuLmxvY0JlZm9yZVRva2VuID0gb3B0aW9ucyAmJiBvcHRpb25zLmJlZm9yZVRva2VuO1xuICAgICAgICAgICAgICAgIG14bi5fcmVwb3J0RXJyb3IoY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHsgRE9DVU1FTlRfTU9ERSB9ID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWwnKTtcblxuLy9Ob2RlIGNvbnN0cnVjdGlvblxuZXhwb3J0cy5jcmVhdGVEb2N1bWVudCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50JyxcbiAgICAgICAgbW9kZTogRE9DVU1FTlRfTU9ERS5OT19RVUlSS1MsXG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50LWZyYWdtZW50JyxcbiAgICAgICAgY2hpbGROb2RlczogW11cbiAgICB9O1xufTtcblxuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwgbmFtZXNwYWNlVVJJLCBhdHRycykge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiB0YWdOYW1lLFxuICAgICAgICB0YWdOYW1lOiB0YWdOYW1lLFxuICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgIG5hbWVzcGFjZVVSSTogbmFtZXNwYWNlVVJJLFxuICAgICAgICBjaGlsZE5vZGVzOiBbXSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbFxuICAgIH07XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbW1lbnROb2RlID0gZnVuY3Rpb24oZGF0YSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiAnI2NvbW1lbnQnLFxuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBwYXJlbnROb2RlOiBudWxsXG4gICAgfTtcbn07XG5cbmNvbnN0IGNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyN0ZXh0JyxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBwYXJlbnROb2RlOiBudWxsXG4gICAgfTtcbn07XG5cbi8vVHJlZSBtdXRhdGlvblxuY29uc3QgYXBwZW5kQ2hpbGQgPSAoZXhwb3J0cy5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIG5ld05vZGUpIHtcbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMucHVzaChuZXdOb2RlKTtcbiAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xufSk7XG5cbmNvbnN0IGluc2VydEJlZm9yZSA9IChleHBvcnRzLmluc2VydEJlZm9yZSA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgICBjb25zdCBpbnNlcnRpb25JZHggPSBwYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihyZWZlcmVuY2VOb2RlKTtcblxuICAgIHBhcmVudE5vZGUuY2hpbGROb2Rlcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdOb2RlKTtcbiAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xufSk7XG5cbmV4cG9ydHMuc2V0VGVtcGxhdGVDb250ZW50ID0gZnVuY3Rpb24odGVtcGxhdGVFbGVtZW50LCBjb250ZW50RWxlbWVudCkge1xuICAgIHRlbXBsYXRlRWxlbWVudC5jb250ZW50ID0gY29udGVudEVsZW1lbnQ7XG59O1xuXG5leHBvcnRzLmdldFRlbXBsYXRlQ29udGVudCA9IGZ1bmN0aW9uKHRlbXBsYXRlRWxlbWVudCkge1xuICAgIHJldHVybiB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudDtcbn07XG5cbmV4cG9ydHMuc2V0RG9jdW1lbnRUeXBlID0gZnVuY3Rpb24oZG9jdW1lbnQsIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xuICAgIGxldCBkb2N0eXBlTm9kZSA9IG51bGw7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRvY3VtZW50LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGRvY3VtZW50LmNoaWxkTm9kZXNbaV0ubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJykge1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUgPSBkb2N1bWVudC5jaGlsZE5vZGVzW2ldO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgZG9jdHlwZU5vZGUubmFtZSA9IG5hbWU7XG4gICAgICAgIGRvY3R5cGVOb2RlLnB1YmxpY0lkID0gcHVibGljSWQ7XG4gICAgICAgIGRvY3R5cGVOb2RlLnN5c3RlbUlkID0gc3lzdGVtSWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYXBwZW5kQ2hpbGQoZG9jdW1lbnQsIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50VHlwZScsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgcHVibGljSWQ6IHB1YmxpY0lkLFxuICAgICAgICAgICAgc3lzdGVtSWQ6IHN5c3RlbUlkXG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuc2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24oZG9jdW1lbnQsIG1vZGUpIHtcbiAgICBkb2N1bWVudC5tb2RlID0gbW9kZTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZnVuY3Rpb24oZG9jdW1lbnQpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQubW9kZTtcbn07XG5cbmV4cG9ydHMuZGV0YWNoTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0cy5pbnNlcnRUZXh0ID0gZnVuY3Rpb24ocGFyZW50Tm9kZSwgdGV4dCkge1xuICAgIGlmIChwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAocHJldk5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgICAgIHByZXZOb2RlLnZhbHVlICs9IHRleHQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnROb2RlLCBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG59O1xuXG5leHBvcnRzLmluc2VydFRleHRCZWZvcmUgPSBmdW5jdGlvbihwYXJlbnROb2RlLCB0ZXh0LCByZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSkgLSAxXTtcblxuICAgIGlmIChwcmV2Tm9kZSAmJiBwcmV2Tm9kZS5ub2RlTmFtZSA9PT0gJyN0ZXh0Jykge1xuICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSwgcmVmZXJlbmNlTm9kZSk7XG4gICAgfVxufTtcblxuZXhwb3J0cy5hZG9wdEF0dHJpYnV0ZXMgPSBmdW5jdGlvbihyZWNpcGllbnQsIGF0dHJzKSB7XG4gICAgY29uc3QgcmVjaXBpZW50QXR0cnNNYXAgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjaXBpZW50LmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlY2lwaWVudEF0dHJzTWFwLnB1c2gocmVjaXBpZW50LmF0dHJzW2ldLm5hbWUpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlY2lwaWVudEF0dHJzTWFwLmluZGV4T2YoYXR0cnNbal0ubmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICByZWNpcGllbnQuYXR0cnMucHVzaChhdHRyc1tqXSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vL1RyZWUgdHJhdmVyc2luZ1xuZXhwb3J0cy5nZXRGaXJzdENoaWxkID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXNbMF07XG59O1xuXG5leHBvcnRzLmdldENoaWxkTm9kZXMgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlcztcbn07XG5cbmV4cG9ydHMuZ2V0UGFyZW50Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlO1xufTtcblxuZXhwb3J0cy5nZXRBdHRyTGlzdCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5hdHRycztcbn07XG5cbi8vTm9kZSBkYXRhXG5leHBvcnRzLmdldFRhZ05hbWUgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudGFnTmFtZTtcbn07XG5cbmV4cG9ydHMuZ2V0TmFtZXNwYWNlVVJJID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5hbWVzcGFjZVVSSTtcbn07XG5cbmV4cG9ydHMuZ2V0VGV4dE5vZGVDb250ZW50ID0gZnVuY3Rpb24odGV4dE5vZGUpIHtcbiAgICByZXR1cm4gdGV4dE5vZGUudmFsdWU7XG59O1xuXG5leHBvcnRzLmdldENvbW1lbnROb2RlQ29udGVudCA9IGZ1bmN0aW9uKGNvbW1lbnROb2RlKSB7XG4gICAgcmV0dXJuIGNvbW1lbnROb2RlLmRhdGE7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVOYW1lID0gZnVuY3Rpb24oZG9jdHlwZU5vZGUpIHtcbiAgICByZXR1cm4gZG9jdHlwZU5vZGUubmFtZTtcbn07XG5cbmV4cG9ydHMuZ2V0RG9jdW1lbnRUeXBlTm9kZVB1YmxpY0lkID0gZnVuY3Rpb24oZG9jdHlwZU5vZGUpIHtcbiAgICByZXR1cm4gZG9jdHlwZU5vZGUucHVibGljSWQ7XG59O1xuXG5leHBvcnRzLmdldERvY3VtZW50VHlwZU5vZGVTeXN0ZW1JZCA9IGZ1bmN0aW9uKGRvY3R5cGVOb2RlKSB7XG4gICAgcmV0dXJuIGRvY3R5cGVOb2RlLnN5c3RlbUlkO1xufTtcblxuLy9Ob2RlIHR5cGVzXG5leHBvcnRzLmlzVGV4dE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCc7XG59O1xuXG5leHBvcnRzLmlzQ29tbWVudE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjY29tbWVudCc7XG59O1xuXG5leHBvcnRzLmlzRG9jdW1lbnRUeXBlTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyNkb2N1bWVudFR5cGUnO1xufTtcblxuZXhwb3J0cy5pc0VsZW1lbnROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiAhIW5vZGUudGFnTmFtZTtcbn07XG5cbi8vIFNvdXJjZSBjb2RlIGxvY2F0aW9uXG5leHBvcnRzLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24gPSBmdW5jdGlvbihub2RlLCBsb2NhdGlvbikge1xuICAgIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uID0gbG9jYXRpb247XG59O1xuXG5leHBvcnRzLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24gPSBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVmYXVsdHMsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgcmV0dXJuIFtkZWZhdWx0cywgb3B0aW9uc10ucmVkdWNlKChtZXJnZWQsIG9wdE9iaikgPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhvcHRPYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIG1lcmdlZFtrZXldID0gb3B0T2JqW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7IERPQ1VNRU5UX01PREUgfSA9IHJlcXVpcmUoJy4vaHRtbCcpO1xuXG4vL0NvbnN0XG5jb25zdCBWQUxJRF9ET0NUWVBFX05BTUUgPSAnaHRtbCc7XG5jb25zdCBWQUxJRF9TWVNURU1fSUQgPSAnYWJvdXQ6bGVnYWN5LWNvbXBhdCc7XG5jb25zdCBRVUlSS1NfTU9ERV9TWVNURU1fSUQgPSAnaHR0cDovL3d3dy5pYm0uY29tL2RhdGEvZHRkL3YxMS9pYm14aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc7XG5cbmNvbnN0IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFtcbiAgICAnKy8vc2lsbWFyaWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vJyxcbiAgICAnLS8vYXMvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vYWR2YXNvZnQgbHRkLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4wLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIgZmluYWwvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvLycsXG4gICAgJy0vL21ldHJpdXMvL2R0ZCBtZXRyaXVzIHByZXNlbnRhdGlvbmFsLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgdGFibGVzLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy8nLFxuICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIGh0bWwvLycsXG4gICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgc3RyaWN0IGh0bWwvLycsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgMi4wLy9cIixcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCAxLjAvL1wiLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIHJlbGF4ZWQgMS4wLy9cIixcbiAgICAnLS8vc3EvL2R0ZCBodG1sIDIuMCBob3RtZXRhbCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL3NvZnRxdWFkIHNvZnR3YXJlLy9kdGQgaG90bWV0YWwgcHJvIDYuMDo6MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLycsXG4gICAgJy0vL3NvZnRxdWFkLy9kdGQgaG90bWV0YWwgcHJvIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLycsXG4gICAgJy0vL3NweWdsYXNzLy9kdGQgaHRtbCAyLjAgZXh0ZW5kZWQvLycsXG4gICAgJy0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZhIGh0bWwvLycsXG4gICAgJy0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZhIHN0cmljdCBodG1sLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMgMTk5NS0wMy0yNC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIgZHJhZnQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGZpbmFsLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMi8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjJzIGRyYWZ0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCBmcmFtZXNldC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCAxOTk2MDcxMi8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgOTcwNDIxLy8nLFxuICAgICctLy93M2MvL2R0ZCB3MyBodG1sLy8nLFxuICAgICctLy93M28vL2R0ZCB3MyBodG1sIDMuMC8vJyxcbiAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwgMi4wLy8nLFxuICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbC8vJ1xuXTtcblxuY29uc3QgUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUy5jb25jYXQoW1xuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLydcbl0pO1xuXG5jb25zdCBRVUlSS1NfTU9ERV9QVUJMSUNfSURTID0gWyctLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8nLCAnLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC9lbicsICdodG1sJ107XG5jb25zdCBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMgPSBbJy0vL3czYy8vZHRkIHhodG1sIDEuMCBmcmFtZXNldC8vJywgJy0vL3czYy8vZHRkIHhodG1sIDEuMCB0cmFuc2l0aW9uYWwvLyddO1xuXG5jb25zdCBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMuY29uY2F0KFtcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nXG5dKTtcblxuLy9VdGlsc1xuZnVuY3Rpb24gZW5xdW90ZURvY3R5cGVJZChpZCkge1xuICAgIGNvbnN0IHF1b3RlID0gaWQuaW5kZXhPZignXCInKSAhPT0gLTEgPyBcIidcIiA6ICdcIic7XG5cbiAgICByZXR1cm4gcXVvdGUgKyBpZCArIHF1b3RlO1xufVxuXG5mdW5jdGlvbiBoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocHVibGljSWQuaW5kZXhPZihwcmVmaXhlc1tpXSkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL0FQSVxuZXhwb3J0cy5pc0NvbmZvcm1pbmcgPSBmdW5jdGlvbih0b2tlbikge1xuICAgIHJldHVybiAoXG4gICAgICAgIHRva2VuLm5hbWUgPT09IFZBTElEX0RPQ1RZUEVfTkFNRSAmJlxuICAgICAgICB0b2tlbi5wdWJsaWNJZCA9PT0gbnVsbCAmJlxuICAgICAgICAodG9rZW4uc3lzdGVtSWQgPT09IG51bGwgfHwgdG9rZW4uc3lzdGVtSWQgPT09IFZBTElEX1NZU1RFTV9JRClcbiAgICApO1xufTtcblxuZXhwb3J0cy5nZXREb2N1bWVudE1vZGUgPSBmdW5jdGlvbih0b2tlbikge1xuICAgIGlmICh0b2tlbi5uYW1lICE9PSBWQUxJRF9ET0NUWVBFX05BTUUpIHtcbiAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgIH1cblxuICAgIGNvbnN0IHN5c3RlbUlkID0gdG9rZW4uc3lzdGVtSWQ7XG5cbiAgICBpZiAoc3lzdGVtSWQgJiYgc3lzdGVtSWQudG9Mb3dlckNhc2UoKSA9PT0gUVVJUktTX01PREVfU1lTVEVNX0lEKSB7XG4gICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICB9XG5cbiAgICBsZXQgcHVibGljSWQgPSB0b2tlbi5wdWJsaWNJZDtcblxuICAgIGlmIChwdWJsaWNJZCAhPT0gbnVsbCkge1xuICAgICAgICBwdWJsaWNJZCA9IHB1YmxpY0lkLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgaWYgKFFVSVJLU19NT0RFX1BVQkxJQ19JRFMuaW5kZXhPZihwdWJsaWNJZCkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByZWZpeGVzID0gc3lzdGVtSWQgPT09IG51bGwgPyBRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIDogUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTO1xuXG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJlZml4ZXMgPVxuICAgICAgICAgICAgc3lzdGVtSWQgPT09IG51bGwgPyBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMgOiBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVM7XG5cbiAgICAgICAgaWYgKGhhc1ByZWZpeChwdWJsaWNJZCwgcHJlZml4ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5MSU1JVEVEX1FVSVJLUztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBET0NVTUVOVF9NT0RFLk5PX1FVSVJLUztcbn07XG5cbmV4cG9ydHMuc2VyaWFsaXplQ29udGVudCA9IGZ1bmN0aW9uKG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xuICAgIGxldCBzdHIgPSAnIURPQ1RZUEUgJztcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHN0ciArPSBuYW1lO1xuICAgIH1cblxuICAgIGlmIChwdWJsaWNJZCkge1xuICAgICAgICBzdHIgKz0gJyBQVUJMSUMgJyArIGVucXVvdGVEb2N0eXBlSWQocHVibGljSWQpO1xuICAgIH0gZWxzZSBpZiAoc3lzdGVtSWQpIHtcbiAgICAgICAgc3RyICs9ICcgU1lTVEVNJztcbiAgICB9XG5cbiAgICBpZiAoc3lzdGVtSWQgIT09IG51bGwpIHtcbiAgICAgICAgc3RyICs9ICcgJyArIGVucXVvdGVEb2N0eXBlSWQoc3lzdGVtSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBUb2tlbml6ZXIgPSByZXF1aXJlKCcuLi90b2tlbml6ZXInKTtcbmNvbnN0IEhUTUwgPSByZXF1aXJlKCcuL2h0bWwnKTtcblxuLy9BbGlhc2VzXG5jb25zdCAkID0gSFRNTC5UQUdfTkFNRVM7XG5jb25zdCBOUyA9IEhUTUwuTkFNRVNQQUNFUztcbmNvbnN0IEFUVFJTID0gSFRNTC5BVFRSUztcblxuLy9NSU1FIHR5cGVzXG5jb25zdCBNSU1FX1RZUEVTID0ge1xuICAgIFRFWFRfSFRNTDogJ3RleHQvaHRtbCcsXG4gICAgQVBQTElDQVRJT05fWE1MOiAnYXBwbGljYXRpb24veGh0bWwreG1sJ1xufTtcblxuLy9BdHRyaWJ1dGVzXG5jb25zdCBERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb251cmwnO1xuY29uc3QgQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9uVVJMJztcbmNvbnN0IFNWR19BVFRSU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICBhdHRyaWJ1dGVuYW1lOiAnYXR0cmlidXRlTmFtZScsXG4gICAgYXR0cmlidXRldHlwZTogJ2F0dHJpYnV0ZVR5cGUnLFxuICAgIGJhc2VmcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgICBiYXNlcHJvZmlsZTogJ2Jhc2VQcm9maWxlJyxcbiAgICBjYWxjbW9kZTogJ2NhbGNNb2RlJyxcbiAgICBjbGlwcGF0aHVuaXRzOiAnY2xpcFBhdGhVbml0cycsXG4gICAgZGlmZnVzZWNvbnN0YW50OiAnZGlmZnVzZUNvbnN0YW50JyxcbiAgICBlZGdlbW9kZTogJ2VkZ2VNb2RlJyxcbiAgICBmaWx0ZXJ1bml0czogJ2ZpbHRlclVuaXRzJyxcbiAgICBnbHlwaHJlZjogJ2dseXBoUmVmJyxcbiAgICBncmFkaWVudHRyYW5zZm9ybTogJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAgICBncmFkaWVudHVuaXRzOiAnZ3JhZGllbnRVbml0cycsXG4gICAga2VybmVsbWF0cml4OiAna2VybmVsTWF0cml4JyxcbiAgICBrZXJuZWx1bml0bGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcsXG4gICAga2V5cG9pbnRzOiAna2V5UG9pbnRzJyxcbiAgICBrZXlzcGxpbmVzOiAna2V5U3BsaW5lcycsXG4gICAga2V5dGltZXM6ICdrZXlUaW1lcycsXG4gICAgbGVuZ3RoYWRqdXN0OiAnbGVuZ3RoQWRqdXN0JyxcbiAgICBsaW1pdGluZ2NvbmVhbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcbiAgICBtYXJrZXJoZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLFxuICAgIG1hcmtlcnVuaXRzOiAnbWFya2VyVW5pdHMnLFxuICAgIG1hcmtlcndpZHRoOiAnbWFya2VyV2lkdGgnLFxuICAgIG1hc2tjb250ZW50dW5pdHM6ICdtYXNrQ29udGVudFVuaXRzJyxcbiAgICBtYXNrdW5pdHM6ICdtYXNrVW5pdHMnLFxuICAgIG51bW9jdGF2ZXM6ICdudW1PY3RhdmVzJyxcbiAgICBwYXRobGVuZ3RoOiAncGF0aExlbmd0aCcsXG4gICAgcGF0dGVybmNvbnRlbnR1bml0czogJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICAgIHBhdHRlcm50cmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAgICBwYXR0ZXJudW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuICAgIHBvaW50c2F0eDogJ3BvaW50c0F0WCcsXG4gICAgcG9pbnRzYXR5OiAncG9pbnRzQXRZJyxcbiAgICBwb2ludHNhdHo6ICdwb2ludHNBdFonLFxuICAgIHByZXNlcnZlYWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcbiAgICBwcmVzZXJ2ZWFzcGVjdHJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG4gICAgcHJpbWl0aXZldW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gICAgcmVmeDogJ3JlZlgnLFxuICAgIHJlZnk6ICdyZWZZJyxcbiAgICByZXBlYXRjb3VudDogJ3JlcGVhdENvdW50JyxcbiAgICByZXBlYXRkdXI6ICdyZXBlYXREdXInLFxuICAgIHJlcXVpcmVkZXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5zaW9ucycsXG4gICAgcmVxdWlyZWRmZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuICAgIHNwZWN1bGFyY29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50JyxcbiAgICBzcGVjdWxhcmV4cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG4gICAgc3ByZWFkbWV0aG9kOiAnc3ByZWFkTWV0aG9kJyxcbiAgICBzdGFydG9mZnNldDogJ3N0YXJ0T2Zmc2V0JyxcbiAgICBzdGRkZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuICAgIHN0aXRjaHRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuICAgIHN1cmZhY2VzY2FsZTogJ3N1cmZhY2VTY2FsZScsXG4gICAgc3lzdGVtbGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG4gICAgdGFibGV2YWx1ZXM6ICd0YWJsZVZhbHVlcycsXG4gICAgdGFyZ2V0eDogJ3RhcmdldFgnLFxuICAgIHRhcmdldHk6ICd0YXJnZXRZJyxcbiAgICB0ZXh0bGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gICAgdmlld2JveDogJ3ZpZXdCb3gnLFxuICAgIHZpZXd0YXJnZXQ6ICd2aWV3VGFyZ2V0JyxcbiAgICB4Y2hhbm5lbHNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3RvcicsXG4gICAgeWNoYW5uZWxzZWxlY3RvcjogJ3lDaGFubmVsU2VsZWN0b3InLFxuICAgIHpvb21hbmRwYW46ICd6b29tQW5kUGFuJ1xufTtcblxuY29uc3QgWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQID0ge1xuICAgICd4bGluazphY3R1YXRlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhY3R1YXRlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazphcmNyb2xlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhcmNyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazpocmVmJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdocmVmJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazpyb2xlJzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazpzaG93JzogeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdzaG93JywgbmFtZXNwYWNlOiBOUy5YTElOSyB9LFxuICAgICd4bGluazp0aXRsZSc6IHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAndGl0bGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH0sXG4gICAgJ3hsaW5rOnR5cGUnOiB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3R5cGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH0sXG4gICAgJ3htbDpiYXNlJzogeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnYmFzZScsIG5hbWVzcGFjZTogTlMuWE1MIH0sXG4gICAgJ3htbDpsYW5nJzogeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnbGFuZycsIG5hbWVzcGFjZTogTlMuWE1MIH0sXG4gICAgJ3htbDpzcGFjZSc6IHsgcHJlZml4OiAneG1sJywgbmFtZTogJ3NwYWNlJywgbmFtZXNwYWNlOiBOUy5YTUwgfSxcbiAgICB4bWxuczogeyBwcmVmaXg6ICcnLCBuYW1lOiAneG1sbnMnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH0sXG4gICAgJ3htbG5zOnhsaW5rJzogeyBwcmVmaXg6ICd4bWxucycsIG5hbWU6ICd4bGluaycsIG5hbWVzcGFjZTogTlMuWE1MTlMgfVxufTtcblxuLy9TVkcgdGFnIG5hbWVzIGFkanVzdG1lbnQgbWFwXG5jb25zdCBTVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQID0gKGV4cG9ydHMuU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IHtcbiAgICBhbHRnbHlwaDogJ2FsdEdseXBoJyxcbiAgICBhbHRnbHlwaGRlZjogJ2FsdEdseXBoRGVmJyxcbiAgICBhbHRnbHlwaGl0ZW06ICdhbHRHbHlwaEl0ZW0nLFxuICAgIGFuaW1hdGVjb2xvcjogJ2FuaW1hdGVDb2xvcicsXG4gICAgYW5pbWF0ZW1vdGlvbjogJ2FuaW1hdGVNb3Rpb24nLFxuICAgIGFuaW1hdGV0cmFuc2Zvcm06ICdhbmltYXRlVHJhbnNmb3JtJyxcbiAgICBjbGlwcGF0aDogJ2NsaXBQYXRoJyxcbiAgICBmZWJsZW5kOiAnZmVCbGVuZCcsXG4gICAgZmVjb2xvcm1hdHJpeDogJ2ZlQ29sb3JNYXRyaXgnLFxuICAgIGZlY29tcG9uZW50dHJhbnNmZXI6ICdmZUNvbXBvbmVudFRyYW5zZmVyJyxcbiAgICBmZWNvbXBvc2l0ZTogJ2ZlQ29tcG9zaXRlJyxcbiAgICBmZWNvbnZvbHZlbWF0cml4OiAnZmVDb252b2x2ZU1hdHJpeCcsXG4gICAgZmVkaWZmdXNlbGlnaHRpbmc6ICdmZURpZmZ1c2VMaWdodGluZycsXG4gICAgZmVkaXNwbGFjZW1lbnRtYXA6ICdmZURpc3BsYWNlbWVudE1hcCcsXG4gICAgZmVkaXN0YW50bGlnaHQ6ICdmZURpc3RhbnRMaWdodCcsXG4gICAgZmVmbG9vZDogJ2ZlRmxvb2QnLFxuICAgIGZlZnVuY2E6ICdmZUZ1bmNBJyxcbiAgICBmZWZ1bmNiOiAnZmVGdW5jQicsXG4gICAgZmVmdW5jZzogJ2ZlRnVuY0cnLFxuICAgIGZlZnVuY3I6ICdmZUZ1bmNSJyxcbiAgICBmZWdhdXNzaWFuYmx1cjogJ2ZlR2F1c3NpYW5CbHVyJyxcbiAgICBmZWltYWdlOiAnZmVJbWFnZScsXG4gICAgZmVtZXJnZTogJ2ZlTWVyZ2UnLFxuICAgIGZlbWVyZ2Vub2RlOiAnZmVNZXJnZU5vZGUnLFxuICAgIGZlbW9ycGhvbG9neTogJ2ZlTW9ycGhvbG9neScsXG4gICAgZmVvZmZzZXQ6ICdmZU9mZnNldCcsXG4gICAgZmVwb2ludGxpZ2h0OiAnZmVQb2ludExpZ2h0JyxcbiAgICBmZXNwZWN1bGFybGlnaHRpbmc6ICdmZVNwZWN1bGFyTGlnaHRpbmcnLFxuICAgIGZlc3BvdGxpZ2h0OiAnZmVTcG90TGlnaHQnLFxuICAgIGZldGlsZTogJ2ZlVGlsZScsXG4gICAgZmV0dXJidWxlbmNlOiAnZmVUdXJidWxlbmNlJyxcbiAgICBmb3JlaWdub2JqZWN0OiAnZm9yZWlnbk9iamVjdCcsXG4gICAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gICAgbGluZWFyZ3JhZGllbnQ6ICdsaW5lYXJHcmFkaWVudCcsXG4gICAgcmFkaWFsZ3JhZGllbnQ6ICdyYWRpYWxHcmFkaWVudCcsXG4gICAgdGV4dHBhdGg6ICd0ZXh0UGF0aCdcbn0pO1xuXG4vL1RhZ3MgdGhhdCBjYXVzZXMgZXhpdCBmcm9tIGZvcmVpZ24gY29udGVudFxuY29uc3QgRVhJVFNfRk9SRUlHTl9DT05URU5UID0ge1xuICAgIFskLkJdOiB0cnVlLFxuICAgIFskLkJJR106IHRydWUsXG4gICAgWyQuQkxPQ0tRVU9URV06IHRydWUsXG4gICAgWyQuQk9EWV06IHRydWUsXG4gICAgWyQuQlJdOiB0cnVlLFxuICAgIFskLkNFTlRFUl06IHRydWUsXG4gICAgWyQuQ09ERV06IHRydWUsXG4gICAgWyQuRERdOiB0cnVlLFxuICAgIFskLkRJVl06IHRydWUsXG4gICAgWyQuRExdOiB0cnVlLFxuICAgIFskLkRUXTogdHJ1ZSxcbiAgICBbJC5FTV06IHRydWUsXG4gICAgWyQuRU1CRURdOiB0cnVlLFxuICAgIFskLkgxXTogdHJ1ZSxcbiAgICBbJC5IMl06IHRydWUsXG4gICAgWyQuSDNdOiB0cnVlLFxuICAgIFskLkg0XTogdHJ1ZSxcbiAgICBbJC5INV06IHRydWUsXG4gICAgWyQuSDZdOiB0cnVlLFxuICAgIFskLkhFQURdOiB0cnVlLFxuICAgIFskLkhSXTogdHJ1ZSxcbiAgICBbJC5JXTogdHJ1ZSxcbiAgICBbJC5JTUddOiB0cnVlLFxuICAgIFskLkxJXTogdHJ1ZSxcbiAgICBbJC5MSVNUSU5HXTogdHJ1ZSxcbiAgICBbJC5NRU5VXTogdHJ1ZSxcbiAgICBbJC5NRVRBXTogdHJ1ZSxcbiAgICBbJC5OT0JSXTogdHJ1ZSxcbiAgICBbJC5PTF06IHRydWUsXG4gICAgWyQuUF06IHRydWUsXG4gICAgWyQuUFJFXTogdHJ1ZSxcbiAgICBbJC5SVUJZXTogdHJ1ZSxcbiAgICBbJC5TXTogdHJ1ZSxcbiAgICBbJC5TTUFMTF06IHRydWUsXG4gICAgWyQuU1BBTl06IHRydWUsXG4gICAgWyQuU1RST05HXTogdHJ1ZSxcbiAgICBbJC5TVFJJS0VdOiB0cnVlLFxuICAgIFskLlNVQl06IHRydWUsXG4gICAgWyQuU1VQXTogdHJ1ZSxcbiAgICBbJC5UQUJMRV06IHRydWUsXG4gICAgWyQuVFRdOiB0cnVlLFxuICAgIFskLlVdOiB0cnVlLFxuICAgIFskLlVMXTogdHJ1ZSxcbiAgICBbJC5WQVJdOiB0cnVlXG59O1xuXG4vL0NoZWNrIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmV4cG9ydHMuY2F1c2VzRXhpdCA9IGZ1bmN0aW9uKHN0YXJ0VGFnVG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHN0YXJ0VGFnVG9rZW4udGFnTmFtZTtcbiAgICBjb25zdCBpc0ZvbnRXaXRoQXR0cnMgPVxuICAgICAgICB0biA9PT0gJC5GT05UICYmXG4gICAgICAgIChUb2tlbml6ZXIuZ2V0VG9rZW5BdHRyKHN0YXJ0VGFnVG9rZW4sIEFUVFJTLkNPTE9SKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5TSVpFKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgVG9rZW5pemVyLmdldFRva2VuQXR0cihzdGFydFRhZ1Rva2VuLCBBVFRSUy5GQUNFKSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gaXNGb250V2l0aEF0dHJzID8gdHJ1ZSA6IEVYSVRTX0ZPUkVJR05fQ09OVEVOVFt0bl07XG59O1xuXG4vL1Rva2VuIGFkanVzdG1lbnRzXG5leHBvcnRzLmFkanVzdFRva2VuTWF0aE1MQXR0cnMgPSBmdW5jdGlvbih0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IERFRklOSVRJT05fVVJMX0FUVFIpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuU1ZHQXR0cnMgPSBmdW5jdGlvbih0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRBdHRyTmFtZSA9IFNWR19BVFRSU19BREpVU1RNRU5UX01BUFt0b2tlbi5hdHRyc1tpXS5uYW1lXTtcblxuICAgICAgICBpZiAoYWRqdXN0ZWRBdHRyTmFtZSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ck5hbWU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnRzLmFkanVzdFRva2VuWE1MQXR0cnMgPSBmdW5jdGlvbih0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRBdHRyRW50cnkgPSBYTUxfQVRUUlNfQURKVVNUTUVOVF9NQVBbdG9rZW4uYXR0cnNbaV0ubmFtZV07XG5cbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ckVudHJ5KSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5wcmVmaXggPSBhZGp1c3RlZEF0dHJFbnRyeS5wcmVmaXg7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyRW50cnkubmFtZTtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWVzcGFjZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydHMuYWRqdXN0VG9rZW5TVkdUYWdOYW1lID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICBjb25zdCBhZGp1c3RlZFRhZ05hbWUgPSBTVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQW3Rva2VuLnRhZ05hbWVdO1xuXG4gICAgaWYgKGFkanVzdGVkVGFnTmFtZSkge1xuICAgICAgICB0b2tlbi50YWdOYW1lID0gYWRqdXN0ZWRUYWdOYW1lO1xuICAgIH1cbn07XG5cbi8vSW50ZWdyYXRpb24gcG9pbnRzXG5mdW5jdGlvbiBpc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KHRuLCBucykge1xuICAgIHJldHVybiBucyA9PT0gTlMuTUFUSE1MICYmICh0biA9PT0gJC5NSSB8fCB0biA9PT0gJC5NTyB8fCB0biA9PT0gJC5NTiB8fCB0biA9PT0gJC5NUyB8fCB0biA9PT0gJC5NVEVYVCk7XG59XG5cbmZ1bmN0aW9uIGlzSHRtbEludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycykge1xuICAgIGlmIChucyA9PT0gTlMuTUFUSE1MICYmIHRuID09PSAkLkFOTk9UQVRJT05fWE1MKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhdHRyc1tpXS5uYW1lID09PSBBVFRSUy5FTkNPRElORykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cnNbaV0udmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5URVhUX0hUTUwgfHwgdmFsdWUgPT09IE1JTUVfVFlQRVMuQVBQTElDQVRJT05fWE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5zID09PSBOUy5TVkcgJiYgKHRuID09PSAkLkZPUkVJR05fT0JKRUNUIHx8IHRuID09PSAkLkRFU0MgfHwgdG4gPT09ICQuVElUTEUpO1xufVxuXG5leHBvcnRzLmlzSW50ZWdyYXRpb25Qb2ludCA9IGZ1bmN0aW9uKHRuLCBucywgYXR0cnMsIGZvcmVpZ25OUykge1xuICAgIGlmICgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IE5TLkhUTUwpICYmIGlzSHRtbEludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCghZm9yZWlnbk5TIHx8IGZvcmVpZ25OUyA9PT0gTlMuTUFUSE1MKSAmJiBpc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KHRuLCBucykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgVG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyk7XG5jb25zdCBPcGVuRWxlbWVudFN0YWNrID0gcmVxdWlyZSgnLi9vcGVuLWVsZW1lbnQtc3RhY2snKTtcbmNvbnN0IEZvcm1hdHRpbmdFbGVtZW50TGlzdCA9IHJlcXVpcmUoJy4vZm9ybWF0dGluZy1lbGVtZW50LWxpc3QnKTtcbmNvbnN0IExvY2F0aW9uSW5mb1BhcnNlck1peGluID0gcmVxdWlyZSgnLi4vZXh0ZW5zaW9ucy9sb2NhdGlvbi1pbmZvL3BhcnNlci1taXhpbicpO1xuY29uc3QgRXJyb3JSZXBvcnRpbmdQYXJzZXJNaXhpbiA9IHJlcXVpcmUoJy4uL2V4dGVuc2lvbnMvZXJyb3ItcmVwb3J0aW5nL3BhcnNlci1taXhpbicpO1xuY29uc3QgTWl4aW4gPSByZXF1aXJlKCcuLi91dGlscy9taXhpbicpO1xuY29uc3QgZGVmYXVsdFRyZWVBZGFwdGVyID0gcmVxdWlyZSgnLi4vdHJlZS1hZGFwdGVycy9kZWZhdWx0Jyk7XG5jb25zdCBtZXJnZU9wdGlvbnMgPSByZXF1aXJlKCcuLi91dGlscy9tZXJnZS1vcHRpb25zJyk7XG5jb25zdCBkb2N0eXBlID0gcmVxdWlyZSgnLi4vY29tbW9uL2RvY3R5cGUnKTtcbmNvbnN0IGZvcmVpZ25Db250ZW50ID0gcmVxdWlyZSgnLi4vY29tbW9uL2ZvcmVpZ24tY29udGVudCcpO1xuY29uc3QgRVJSID0gcmVxdWlyZSgnLi4vY29tbW9uL2Vycm9yLWNvZGVzJyk7XG5jb25zdCB1bmljb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3VuaWNvZGUnKTtcbmNvbnN0IEhUTUwgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbCcpO1xuXG4vL0FsaWFzZXNcbmNvbnN0ICQgPSBIVE1MLlRBR19OQU1FUztcbmNvbnN0IE5TID0gSFRNTC5OQU1FU1BBQ0VTO1xuY29uc3QgQVRUUlMgPSBIVE1MLkFUVFJTO1xuXG5jb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgc2NyaXB0aW5nRW5hYmxlZDogdHJ1ZSxcbiAgICBzb3VyY2VDb2RlTG9jYXRpb25JbmZvOiBmYWxzZSxcbiAgICBvblBhcnNlRXJyb3I6IG51bGwsXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlclxufTtcblxuLy9NaXNjIGNvbnN0YW50c1xuY29uc3QgSElEREVOX0lOUFVUX1RZUEUgPSAnaGlkZGVuJztcblxuLy9BZG9wdGlvbiBhZ2VuY3kgbG9vcHMgaXRlcmF0aW9uIGNvdW50XG5jb25zdCBBQV9PVVRFUl9MT09QX0lURVIgPSA4O1xuY29uc3QgQUFfSU5ORVJfTE9PUF9JVEVSID0gMztcblxuLy9JbnNlcnRpb24gbW9kZXNcbmNvbnN0IElOSVRJQUxfTU9ERSA9ICdJTklUSUFMX01PREUnO1xuY29uc3QgQkVGT1JFX0hUTUxfTU9ERSA9ICdCRUZPUkVfSFRNTF9NT0RFJztcbmNvbnN0IEJFRk9SRV9IRUFEX01PREUgPSAnQkVGT1JFX0hFQURfTU9ERSc7XG5jb25zdCBJTl9IRUFEX01PREUgPSAnSU5fSEVBRF9NT0RFJztcbmNvbnN0IElOX0hFQURfTk9fU0NSSVBUX01PREUgPSAnSU5fSEVBRF9OT19TQ1JJUFRfTU9ERSc7XG5jb25zdCBBRlRFUl9IRUFEX01PREUgPSAnQUZURVJfSEVBRF9NT0RFJztcbmNvbnN0IElOX0JPRFlfTU9ERSA9ICdJTl9CT0RZX01PREUnO1xuY29uc3QgVEVYVF9NT0RFID0gJ1RFWFRfTU9ERSc7XG5jb25zdCBJTl9UQUJMRV9NT0RFID0gJ0lOX1RBQkxFX01PREUnO1xuY29uc3QgSU5fVEFCTEVfVEVYVF9NT0RFID0gJ0lOX1RBQkxFX1RFWFRfTU9ERSc7XG5jb25zdCBJTl9DQVBUSU9OX01PREUgPSAnSU5fQ0FQVElPTl9NT0RFJztcbmNvbnN0IElOX0NPTFVNTl9HUk9VUF9NT0RFID0gJ0lOX0NPTFVNTl9HUk9VUF9NT0RFJztcbmNvbnN0IElOX1RBQkxFX0JPRFlfTU9ERSA9ICdJTl9UQUJMRV9CT0RZX01PREUnO1xuY29uc3QgSU5fUk9XX01PREUgPSAnSU5fUk9XX01PREUnO1xuY29uc3QgSU5fQ0VMTF9NT0RFID0gJ0lOX0NFTExfTU9ERSc7XG5jb25zdCBJTl9TRUxFQ1RfTU9ERSA9ICdJTl9TRUxFQ1RfTU9ERSc7XG5jb25zdCBJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERSA9ICdJTl9TRUxFQ1RfSU5fVEFCTEVfTU9ERSc7XG5jb25zdCBJTl9URU1QTEFURV9NT0RFID0gJ0lOX1RFTVBMQVRFX01PREUnO1xuY29uc3QgQUZURVJfQk9EWV9NT0RFID0gJ0FGVEVSX0JPRFlfTU9ERSc7XG5jb25zdCBJTl9GUkFNRVNFVF9NT0RFID0gJ0lOX0ZSQU1FU0VUX01PREUnO1xuY29uc3QgQUZURVJfRlJBTUVTRVRfTU9ERSA9ICdBRlRFUl9GUkFNRVNFVF9NT0RFJztcbmNvbnN0IEFGVEVSX0FGVEVSX0JPRFlfTU9ERSA9ICdBRlRFUl9BRlRFUl9CT0RZX01PREUnO1xuY29uc3QgQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSA9ICdBRlRFUl9BRlRFUl9GUkFNRVNFVF9NT0RFJztcblxuLy9JbnNlcnRpb24gbW9kZSByZXNldCBtYXBcbmNvbnN0IElOU0VSVElPTl9NT0RFX1JFU0VUX01BUCA9IHtcbiAgICBbJC5UUl06IElOX1JPV19NT0RFLFxuICAgIFskLlRCT0RZXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLlRIRUFEXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLlRGT09UXTogSU5fVEFCTEVfQk9EWV9NT0RFLFxuICAgIFskLkNBUFRJT05dOiBJTl9DQVBUSU9OX01PREUsXG4gICAgWyQuQ09MR1JPVVBdOiBJTl9DT0xVTU5fR1JPVVBfTU9ERSxcbiAgICBbJC5UQUJMRV06IElOX1RBQkxFX01PREUsXG4gICAgWyQuQk9EWV06IElOX0JPRFlfTU9ERSxcbiAgICBbJC5GUkFNRVNFVF06IElOX0ZSQU1FU0VUX01PREVcbn07XG5cbi8vVGVtcGxhdGUgaW5zZXJ0aW9uIG1vZGUgc3dpdGNoIG1hcFxuY29uc3QgVEVNUExBVEVfSU5TRVJUSU9OX01PREVfU1dJVENIX01BUCA9IHtcbiAgICBbJC5DQVBUSU9OXTogSU5fVEFCTEVfTU9ERSxcbiAgICBbJC5DT0xHUk9VUF06IElOX1RBQkxFX01PREUsXG4gICAgWyQuVEJPRFldOiBJTl9UQUJMRV9NT0RFLFxuICAgIFskLlRGT09UXTogSU5fVEFCTEVfTU9ERSxcbiAgICBbJC5USEVBRF06IElOX1RBQkxFX01PREUsXG4gICAgWyQuQ09MXTogSU5fQ09MVU1OX0dST1VQX01PREUsXG4gICAgWyQuVFJdOiBJTl9UQUJMRV9CT0RZX01PREUsXG4gICAgWyQuVERdOiBJTl9ST1dfTU9ERSxcbiAgICBbJC5USF06IElOX1JPV19NT0RFXG59O1xuXG4vL1Rva2VuIGhhbmRsZXJzIG1hcCBmb3IgaW5zZXJ0aW9uIG1vZGVzXG5jb25zdCBUT0tFTl9IQU5ETEVSUyA9IHtcbiAgICBbSU5JVElBTF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5Jbml0aWFsTW9kZSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5Jbml0aWFsTW9kZSxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBkb2N0eXBlSW5Jbml0aWFsTW9kZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IHRva2VuSW5Jbml0aWFsTW9kZSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiB0b2tlbkluSW5pdGlhbE1vZGVcbiAgICB9LFxuICAgIFtCRUZPUkVfSFRNTF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQmVmb3JlSHRtbCxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQmVmb3JlSHRtbCxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0JlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0JlZm9yZUh0bWwsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5CZWZvcmVIdG1sXG4gICAgfSxcbiAgICBbQkVGT1JFX0hFQURfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkJlZm9yZUhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0JlZm9yZUhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0JlZm9yZUhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5CZWZvcmVIZWFkXG4gICAgfSxcbiAgICBbSU5fSEVBRF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5JbkhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBtaXNwbGFjZWREb2N0eXBlLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5IZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5JbkhlYWRcbiAgICB9LFxuICAgIFtJTl9IRUFEX05PX1NDUklQVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuSW5IZWFkTm9TY3JpcHQsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluSGVhZE5vU2NyaXB0LFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogbWlzcGxhY2VkRG9jdHlwZSxcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luSGVhZE5vU2NyaXB0LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJbkhlYWROb1NjcmlwdCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiB0b2tlbkluSGVhZE5vU2NyaXB0XG4gICAgfSxcbiAgICBbQUZURVJfSEVBRF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5BZnRlckhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBtaXNwbGFjZWREb2N0eXBlLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnQWZ0ZXJIZWFkLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdBZnRlckhlYWQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogdG9rZW5BZnRlckhlYWRcbiAgICB9LFxuICAgIFtJTl9CT0RZX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW1RFWFRfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaW5zZXJ0Q2hhcmFjdGVycyxcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5UZXh0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluVGV4dFxuICAgIH0sXG4gICAgW0lOX1RBQkxFX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fVEFCTEVfVEVYVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGVUZXh0LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IHRva2VuSW5UYWJsZVRleHQsXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogdG9rZW5JblRhYmxlVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogdG9rZW5JblRhYmxlVGV4dCxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiB0b2tlbkluVGFibGVUZXh0XG4gICAgfSxcbiAgICBbSU5fQ0FQVElPTl9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJbkNhcHRpb24sXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQ2FwdGlvbixcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9DT0xVTU5fR1JPVVBfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluQ29sdW1uR3JvdXAsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiB0b2tlbkluQ29sdW1uR3JvdXAsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luQ29sdW1uR3JvdXAsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luQ29sdW1uR3JvdXAsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fVEFCTEVfQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5DT01NRU5UX1RPS0VOXTogYXBwZW5kQ29tbWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdJblRhYmxlQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5UYWJsZUJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fUk9XX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5UYWJsZSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IGNoYXJhY3RlckluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luUm93LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblJvdyxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJbkJvZHlcbiAgICB9LFxuICAgIFtJTl9DRUxMX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogY2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luQ2VsbCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5DZWxsLFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1NFTEVDVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5TZWxlY3QsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luU2VsZWN0LFxuICAgICAgICBbVG9rZW5pemVyLkVPRl9UT0tFTl06IGVvZkluQm9keVxuICAgIH0sXG4gICAgW0lOX1NFTEVDVF9JTl9UQUJMRV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IGluc2VydENoYXJhY3RlcnMsXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlLFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdJblNlbGVjdEluVGFibGUsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogZW9mSW5Cb2R5XG4gICAgfSxcbiAgICBbSU5fVEVNUExBVEVfTU9ERV06IHtcbiAgICAgICAgW1Rva2VuaXplci5DSEFSQUNURVJfVE9LRU5dOiBjaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnSW5UZW1wbGF0ZSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogZW5kVGFnSW5UZW1wbGF0ZSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBlb2ZJblRlbXBsYXRlXG4gICAgfSxcbiAgICBbQUZURVJfQk9EWV9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5BZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQsXG4gICAgICAgIFtUb2tlbml6ZXIuRE9DVFlQRV9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTl06IHN0YXJ0VGFnQWZ0ZXJCb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkVORF9UQUdfVE9LRU5dOiBlbmRUYWdBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtJTl9GUkFNRVNFVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0luRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0luRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtBRlRFUl9GUkFNRVNFVF9NT0RFXToge1xuICAgICAgICBbVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTl06IGlnbm9yZVRva2VuLFxuICAgICAgICBbVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiBpbnNlcnRDaGFyYWN0ZXJzLFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU5EX1RBR19UT0tFTl06IGVuZFRhZ0FmdGVyRnJhbWVzZXQsXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9LFxuICAgIFtBRlRFUl9BRlRFUl9CT0RZX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogdG9rZW5BZnRlckFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5OVUxMX0NIQVJBQ1RFUl9UT0tFTl06IHRva2VuQWZ0ZXJBZnRlckJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU5dOiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5LFxuICAgICAgICBbVG9rZW5pemVyLkNPTU1FTlRfVE9LRU5dOiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudCxcbiAgICAgICAgW1Rva2VuaXplci5ET0NUWVBFX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOXTogc3RhcnRUYWdBZnRlckFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogdG9rZW5BZnRlckFmdGVyQm9keSxcbiAgICAgICAgW1Rva2VuaXplci5FT0ZfVE9LRU5dOiBzdG9wUGFyc2luZ1xuICAgIH0sXG4gICAgW0FGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREVdOiB7XG4gICAgICAgIFtUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTl06IHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHksXG4gICAgICAgIFtUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTl06IGFwcGVuZENvbW1lbnRUb0RvY3VtZW50LFxuICAgICAgICBbVG9rZW5pemVyLkRPQ1RZUEVfVE9LRU5dOiBpZ25vcmVUb2tlbixcbiAgICAgICAgW1Rva2VuaXplci5TVEFSVF9UQUdfVE9LRU5dOiBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldCxcbiAgICAgICAgW1Rva2VuaXplci5FTkRfVEFHX1RPS0VOXTogaWdub3JlVG9rZW4sXG4gICAgICAgIFtUb2tlbml6ZXIuRU9GX1RPS0VOXTogc3RvcFBhcnNpbmdcbiAgICB9XG59O1xuXG4vL1BhcnNlclxuY2xhc3MgUGFyc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMudHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMucGVuZGluZ1NjcmlwdCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMsIExvY2F0aW9uSW5mb1BhcnNlck1peGluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMub25QYXJzZUVycm9yKSB7XG4gICAgICAgICAgICBNaXhpbi5pbnN0YWxsKHRoaXMsIEVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4sIHsgb25QYXJzZUVycm9yOiB0aGlzLm9wdGlvbnMub25QYXJzZUVycm9yIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcGFyc2UoaHRtbCkge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnQoKTtcblxuICAgICAgICB0aGlzLl9ib290c3RyYXAoZG9jdW1lbnQsIG51bGwpO1xuICAgICAgICB0aGlzLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AobnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cblxuICAgIHBhcnNlRnJhZ21lbnQoaHRtbCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgIC8vTk9URTogdXNlIDx0ZW1wbGF0ZT4gZWxlbWVudCBhcyBhIGZyYWdtZW50IGNvbnRleHQgaWYgY29udGV4dCBlbGVtZW50IHdhcyBub3QgcHJvdmlkZWQsXG4gICAgICAgIC8vc28gd2Ugd2lsbCBwYXJzZSBpbiBcImZvcmdpdmluZ1wiIG1hbm5lclxuICAgICAgICBpZiAoIWZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgZnJhZ21lbnRDb250ZXh0ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCQuVEVNUExBVEUsIE5TLkhUTUwsIFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vTk9URTogY3JlYXRlIGZha2UgZWxlbWVudCB3aGljaCB3aWxsIGJlIHVzZWQgYXMgJ2RvY3VtZW50JyBmb3IgZnJhZ21lbnQgcGFyc2luZy5cbiAgICAgICAgLy9UaGlzIGlzIGltcG9ydGFudCBmb3IganNkb20gdGhlcmUgJ2RvY3VtZW50JyBjYW4ndCBiZSByZWNyZWF0ZWQsIHRoZXJlZm9yZVxuICAgICAgICAvL2ZyYWdtZW50IHBhcnNpbmcgY2F1c2VzIG1lc3Npbmcgb2YgdGhlIG1haW4gYGRvY3VtZW50YC5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRNb2NrID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCdkb2N1bWVudG1vY2snLCBOUy5IVE1MLCBbXSk7XG5cbiAgICAgICAgdGhpcy5fYm9vdHN0cmFwKGRvY3VtZW50TW9jaywgZnJhZ21lbnRDb250ZXh0KTtcblxuICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGZyYWdtZW50Q29udGV4dCkgPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgIHRoaXMuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShJTl9URU1QTEFURV9NT0RFKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKTtcbiAgICAgICAgdGhpcy5faW5zZXJ0RmFrZVJvb3RFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICB0aGlzLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcChudWxsKTtcblxuICAgICAgICBjb25zdCByb290RWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZChkb2N1bWVudE1vY2spO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2Fkb3B0Tm9kZXMocm9vdEVsZW1lbnQsIGZyYWdtZW50KTtcblxuICAgICAgICByZXR1cm4gZnJhZ21lbnQ7XG4gICAgfVxuXG4gICAgLy9Cb290c3RyYXAgcGFyc2VyXG4gICAgX2Jvb3RzdHJhcChkb2N1bWVudCwgZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gbmV3IFRva2VuaXplcih0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuc3RvcHBlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOSVRJQUxfTU9ERTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSAnJztcblxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRDb250ZXh0ID0gZnJhZ21lbnRDb250ZXh0O1xuXG4gICAgICAgIHRoaXMuaGVhZEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gbnVsbDtcblxuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cyA9IG5ldyBPcGVuRWxlbWVudFN0YWNrKHRoaXMuZG9jdW1lbnQsIHRoaXMudHJlZUFkYXB0ZXIpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyA9IG5ldyBGb3JtYXR0aW5nRWxlbWVudExpc3QodGhpcy50cmVlQWRhcHRlcik7XG5cbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrID0gW107XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcCA9IC0xO1xuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsSW5zZXJ0aW9uTW9kZSA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgICAgIHRoaXMuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZnJhbWVzZXRPayA9IHRydWU7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vRXJyb3JzXG4gICAgX2VycigpIHtcbiAgICAgICAgLy8gTk9URTogZXJyIHJlcG9ydGluZyBpcyBub29wIGJ5IGRlZmF1bHQuIEVuYWJsZWQgYnkgbWl4aW4uXG4gICAgfVxuXG4gICAgLy9QYXJzaW5nIGxvb3BcbiAgICBfcnVuUGFyc2luZ0xvb3Aoc2NyaXB0SGFuZGxlcikge1xuICAgICAgICB3aGlsZSAoIXRoaXMuc3RvcHBlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBUb2tlbml6ZXJDREFUQU1vZGUoKTtcblxuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuaXplci5nZXROZXh0VG9rZW4oKTtcblxuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5ISUJFUk5BVElPTl9UT0tFTikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5za2lwTmV4dE5ld0xpbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTiAmJiB0b2tlbi5jaGFyc1swXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLmNoYXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NJbnB1dFRva2VuKHRva2VuKTtcblxuICAgICAgICAgICAgaWYgKHNjcmlwdEhhbmRsZXIgJiYgdGhpcy5wZW5kaW5nU2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBydW5QYXJzaW5nTG9vcEZvckN1cnJlbnRDaHVuayh3cml0ZUNhbGxiYWNrLCBzY3JpcHRIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKHNjcmlwdEhhbmRsZXIpO1xuXG4gICAgICAgIGlmIChzY3JpcHRIYW5kbGVyICYmIHRoaXMucGVuZGluZ1NjcmlwdCkge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5wZW5kaW5nU2NyaXB0O1xuXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdTY3JpcHQgPSBudWxsO1xuXG4gICAgICAgICAgICBzY3JpcHRIYW5kbGVyKHNjcmlwdCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3cml0ZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICB3cml0ZUNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1RleHQgcGFyc2luZ1xuICAgIF9zZXR1cFRva2VuaXplckNEQVRBTW9kZSgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKTtcblxuICAgICAgICB0aGlzLnRva2VuaXplci5hbGxvd0NEQVRBID1cbiAgICAgICAgICAgIGN1cnJlbnQgJiZcbiAgICAgICAgICAgIGN1cnJlbnQgIT09IHRoaXMuZG9jdW1lbnQgJiZcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpICE9PSBOUy5IVE1MICYmXG4gICAgICAgICAgICAhdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9zd2l0Y2hUb1RleHRQYXJzaW5nKGN1cnJlbnRUb2tlbiwgbmV4dFRva2VuaXplclN0YXRlKSB7XG4gICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoY3VycmVudFRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBuZXh0VG9rZW5pemVyU3RhdGU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gdGhpcy5pbnNlcnRpb25Nb2RlO1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG4gICAgfVxuXG4gICAgc3dpdGNoVG9QbGFpbnRleHRQYXJzaW5nKCkge1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBURVhUX01PREU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlBMQUlOVEVYVDtcbiAgICB9XG5cbiAgICAvL0ZyYWdtZW50IHBhcnNpbmdcbiAgICBfZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0XG4gICAgICAgICAgICA/IHRoaXMuZnJhZ21lbnRDb250ZXh0XG4gICAgICAgICAgICA6IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShub2RlKSA9PT0gJC5GT1JNKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG5vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgIH0gd2hpbGUgKG5vZGUpO1xuICAgIH1cblxuICAgIF9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCkge1xuICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5mcmFnbWVudENvbnRleHQpID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZSh0aGlzLmZyYWdtZW50Q29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5USVRMRSB8fCB0biA9PT0gJC5URVhUQVJFQSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUkNEQVRBO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5TVFlMRSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlhNUCB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLklGUkFNRSB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLk5PRU1CRUQgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5OT0ZSQU1FUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLk5PU0NSSVBUXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplci5NT0RFLlJBV1RFWFQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNDUklQVCkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlBMQUlOVEVYVCkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUExBSU5URVhUO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UcmVlIG11dGF0aW9uXG4gICAgX3NldERvY3VtZW50VHlwZSh0b2tlbikge1xuICAgICAgICBjb25zdCBuYW1lID0gdG9rZW4ubmFtZSB8fCAnJztcbiAgICAgICAgY29uc3QgcHVibGljSWQgPSB0b2tlbi5wdWJsaWNJZCB8fCAnJztcbiAgICAgICAgY29uc3Qgc3lzdGVtSWQgPSB0b2tlbi5zeXN0ZW1JZCB8fCAnJztcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldERvY3VtZW50VHlwZSh0aGlzLmRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpO1xuICAgIH1cblxuICAgIF9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvc3RlclBhcmVudEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnQgfHwgdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcblxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2FwcGVuZEVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgdG9rZW4uYXR0cnMpO1xuXG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2luc2VydEVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgdG9rZW4uYXR0cnMpO1xuXG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2luc2VydEZha2VFbGVtZW50KHRhZ05hbWUpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBOUy5IVE1MLCBbXSk7XG5cbiAgICAgICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50KTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBfaW5zZXJ0VGVtcGxhdGUodG9rZW4pIHtcbiAgICAgICAgY29uc3QgdG1wbCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBOUy5IVE1MLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldFRlbXBsYXRlQ29udGVudCh0bXBsLCBjb250ZW50KTtcbiAgICAgICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZSh0bXBsKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaCh0bXBsKTtcbiAgICB9XG5cbiAgICBfaW5zZXJ0RmFrZVJvb3RFbGVtZW50KCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCQuSFRNTCwgTlMuSFRNTCwgW10pO1xuXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudCwgZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwYXJlbnQpIHtcbiAgICAgICAgY29uc3QgY29tbWVudE5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUNvbW1lbnROb2RlKHRva2VuLmRhdGEpO1xuXG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjb21tZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgX2luc2VydENoYXJhY3RlcnModG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvc3RlclBhcmVudFRleHQodG9rZW4uY2hhcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50IHx8IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9hZG9wdE5vZGVzKGRvbm9yLCByZWNpcGllbnQpIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpOyBjaGlsZDsgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChyZWNpcGllbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vVG9rZW4gcHJvY2Vzc2luZ1xuICAgIF9zaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQgPT09IHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG5cbiAgICAgICAgaWYgKG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY3VycmVudCkgPT09ICQuQU5OT1RBVElPTl9YTUwgJiZcbiAgICAgICAgICAgIG5zID09PSBOUy5NQVRITUwgJiZcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5TVEFSVF9UQUdfVE9LRU4gJiZcbiAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgPT09ICQuU1ZHXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNDaGFyYWN0ZXJUb2tlbiA9XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuQ0hBUkFDVEVSX1RPS0VOIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuTlVMTF9DSEFSQUNURVJfVE9LRU4gfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5XSElURVNQQUNFX0NIQVJBQ1RFUl9UT0tFTjtcblxuICAgICAgICBjb25zdCBpc01hdGhNTFRleHRTdGFydFRhZyA9XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuU1RBUlRfVEFHX1RPS0VOICYmIHRva2VuLnRhZ05hbWUgIT09ICQuTUdMWVBIICYmIHRva2VuLnRhZ05hbWUgIT09ICQuTUFMSUdOTUFSSztcblxuICAgICAgICBpZiAoKGlzTWF0aE1MVGV4dFN0YXJ0VGFnIHx8IGlzQ2hhcmFjdGVyVG9rZW4pICYmIHRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50LCBOUy5NQVRITUwpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiB8fCBpc0NoYXJhY3RlclRva2VuKSAmJlxuICAgICAgICAgICAgdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnQsIE5TLkhUTUwpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRva2VuLnR5cGUgIT09IFRva2VuaXplci5FT0ZfVE9LRU47XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NUb2tlbih0b2tlbikge1xuICAgICAgICBUT0tFTl9IQU5ETEVSU1t0aGlzLmluc2VydGlvbk1vZGVdW3Rva2VuLnR5cGVdKHRoaXMsIHRva2VuKTtcbiAgICB9XG5cbiAgICBfcHJvY2Vzc1Rva2VuSW5Cb2R5TW9kZSh0b2tlbikge1xuICAgICAgICBUT0tFTl9IQU5ETEVSU1tJTl9CT0RZX01PREVdW3Rva2VuLnR5cGVdKHRoaXMsIHRva2VuKTtcbiAgICB9XG5cbiAgICBfcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLkNIQVJBQ1RFUl9UT0tFTikge1xuICAgICAgICAgICAgY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLk5VTExfQ0hBUkFDVEVSX1RPS0VOKSB7XG4gICAgICAgICAgICBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLldISVRFU1BBQ0VfQ0hBUkFDVEVSX1RPS0VOKSB7XG4gICAgICAgICAgICBpbnNlcnRDaGFyYWN0ZXJzKHRoaXMsIHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuQ09NTUVOVF9UT0tFTikge1xuICAgICAgICAgICAgYXBwZW5kQ29tbWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTikge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSBUb2tlbml6ZXIuRU5EX1RBR19UT0tFTikge1xuICAgICAgICAgICAgZW5kVGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcHJvY2Vzc0lucHV0VG9rZW4odG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW5pemVyLlNUQVJUX1RBR19UT0tFTiAmJiB0b2tlbi5zZWxmQ2xvc2luZyAmJiAhdG9rZW4uYWNrU2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uVm9pZEh0bWxFbGVtZW50U3RhcnRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vSW50ZWdyYXRpb24gcG9pbnRzXG4gICAgX2lzSW50ZWdyYXRpb25Qb2ludChlbGVtZW50LCBmb3JlaWduTlMpIHtcbiAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGF0dHJzID0gdGhpcy50cmVlQWRhcHRlci5nZXRBdHRyTGlzdChlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gZm9yZWlnbkNvbnRlbnQuaXNJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMsIGZvcmVpZ25OUyk7XG4gICAgfVxuXG4gICAgLy9BY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50cyByZWNvbnN0cnVjdGlvblxuICAgIF9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgbGlzdExlbmd0aCA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmxlbmd0aDtcblxuICAgICAgICBpZiAobGlzdExlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHVub3BlbklkeCA9IGxpc3RMZW5ndGg7XG4gICAgICAgICAgICBsZXQgZW50cnkgPSBudWxsO1xuXG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgdW5vcGVuSWR4LS07XG4gICAgICAgICAgICAgICAgZW50cnkgPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzW3Vub3BlbklkeF07XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lk1BUktFUl9FTlRSWSB8fCB0aGlzLm9wZW5FbGVtZW50cy5jb250YWlucyhlbnRyeS5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB1bm9wZW5JZHgrKztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAodW5vcGVuSWR4ID4gMCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB1bm9wZW5JZHg7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBlbnRyeSA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0RWxlbWVudChlbnRyeS50b2tlbiwgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZW50cnkuZWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9DbG9zZSBlbGVtZW50c1xuICAgIF9jbG9zZVRhYmxlQ2VsbCgpIHtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9ST1dfTU9ERTtcbiAgICB9XG5cbiAgICBfY2xvc2VQRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5QKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuUCk7XG4gICAgfVxuXG4gICAgLy9JbnNlcnRpb24gbW9kZXNcbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AsIGxhc3QgPSBmYWxzZTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBuZXdJbnNlcnRpb25Nb2RlID0gSU5TRVJUSU9OX01PREVfUkVTRVRfTUFQW3RuXTtcblxuICAgICAgICAgICAgaWYgKG5ld0luc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBuZXdJbnNlcnRpb25Nb2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghbGFzdCAmJiAodG4gPT09ICQuVEQgfHwgdG4gPT09ICQuVEgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fQ0VMTF9NT0RFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghbGFzdCAmJiB0biA9PT0gJC5IRUFEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3QoaSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5jdXJyZW50VG1wbEluc2VydGlvbk1vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLmhlYWRFbGVtZW50ID8gQUZURVJfSEVBRF9NT0RFIDogQkVGT1JFX0hFQURfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3Qoc2VsZWN0SWR4KSB7XG4gICAgICAgIGlmIChzZWxlY3RJZHggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2VsZWN0SWR4IC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2VzdG9yID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoYW5jZXN0b3IpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX0lOX1RBQkxFX01PREU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJTl9TRUxFQ1RfTU9ERTtcbiAgICB9XG5cbiAgICBfcHVzaFRtcGxJbnNlcnRpb25Nb2RlKG1vZGUpIHtcbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnB1c2gobW9kZSk7XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcCsrO1xuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsSW5zZXJ0aW9uTW9kZSA9IG1vZGU7XG4gICAgfVxuXG4gICAgX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCkge1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1RvcC0tO1xuICAgICAgICB0aGlzLmN1cnJlbnRUbXBsSW5zZXJ0aW9uTW9kZSA9IHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1t0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3BdO1xuICAgIH1cblxuICAgIC8vRm9zdGVyIHBhcmVudGluZ1xuICAgIF9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB0biA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gdG4gPT09ICQuVEFCTEUgfHwgdG4gPT09ICQuVEJPRFkgfHwgdG4gPT09ICQuVEZPT1QgfHwgdG4gPT09ICQuVEhFQUQgfHwgdG4gPT09ICQuVFI7XG4gICAgfVxuXG4gICAgX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkICYmIHRoaXMuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHtcbiAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgIGJlZm9yZUVsZW1lbnQ6IG51bGxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuRWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUob3BlbkVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShvcGVuRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KG9wZW5FbGVtZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUob3BlbkVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5iZWZvcmVFbGVtZW50ID0gb3BlbkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaSAtIDFdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhdGlvbi5wYXJlbnQpIHtcbiAgICAgICAgICAgIGxvY2F0aW9uLnBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgIH1cblxuICAgIF9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcblxuICAgICAgICBpZiAobG9jYXRpb24uYmVmb3JlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRCZWZvcmUobG9jYXRpb24ucGFyZW50LCBlbGVtZW50LCBsb2NhdGlvbi5iZWZvcmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQobG9jYXRpb24ucGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9mb3N0ZXJQYXJlbnRUZXh0KGNoYXJzKSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dEJlZm9yZShsb2NhdGlvbi5wYXJlbnQsIGNoYXJzLCBsb2NhdGlvbi5iZWZvcmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChsb2NhdGlvbi5wYXJlbnQsIGNoYXJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vU3BlY2lhbCBlbGVtZW50c1xuICAgIF9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIEhUTUwuU1BFQ0lBTF9FTEVNRU5UU1tuc11bdG5dO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXI7XG5cbi8vQWRvcHRpb24gYWdlbmN5IGFsZ29yaXRobVxuLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2Fkb3B0aW9uQWdlbmN5KVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy9TdGVwcyA1LTggb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodG9rZW4udGFnTmFtZSk7XG5cbiAgICBpZiAoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICBpZiAoIXAub3BlbkVsZW1lbnRzLmNvbnRhaW5zKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgICAgICAgICAgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG9rZW4udGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG59XG5cbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBsZXQgZnVydGhlc3RCbG9jayA9IG51bGw7XG5cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcblxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBmdXJ0aGVzdEJsb2NrID0gZWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZnVydGhlc3RCbG9jaykge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1cnRoZXN0QmxvY2s7XG59XG5cbi8vU3RlcCAxMyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudCkge1xuICAgIGxldCBsYXN0RWxlbWVudCA9IGZ1cnRoZXN0QmxvY2s7XG4gICAgbGV0IG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZnVydGhlc3RCbG9jayk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgZWxlbWVudCA9IG5leHRFbGVtZW50OyBlbGVtZW50ICE9PSBmb3JtYXR0aW5nRWxlbWVudDsgaSsrLCBlbGVtZW50ID0gbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgLy9OT1RFOiBzdG9yZSBuZXh0IGVsZW1lbnQgZm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uIChpdCBtYXkgYmUgZGVsZXRlZCBmcm9tIHRoZSBzdGFjayBieSBzdGVwIDkuNSlcbiAgICAgICAgbmV4dEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3RvcihlbGVtZW50KTtcblxuICAgICAgICBjb25zdCBlbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnkoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJPdmVyZmxvdyA9IGVsZW1lbnRFbnRyeSAmJiBpID49IEFBX0lOTkVSX0xPT1BfSVRFUjtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cyA9ICFlbGVtZW50RW50cnkgfHwgY291bnRlck92ZXJmbG93O1xuXG4gICAgICAgIGlmIChzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzKSB7XG4gICAgICAgICAgICBpZiAoY291bnRlck92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudCA9IGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSk7XG5cbiAgICAgICAgICAgIGlmIChsYXN0RWxlbWVudCA9PT0gZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZWxlbWVudEVudHJ5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChlbGVtZW50LCBsYXN0RWxlbWVudCk7XG4gICAgICAgICAgICBsYXN0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdEVsZW1lbnQ7XG59XG5cbi8vU3RlcCAxMy43IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSkge1xuICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBwLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoZWxlbWVudEVudHJ5LnRva2VuLnRhZ05hbWUsIG5zLCBlbGVtZW50RW50cnkudG9rZW4uYXR0cnMpO1xuXG4gICAgcC5vcGVuRWxlbWVudHMucmVwbGFjZShlbGVtZW50RW50cnkuZWxlbWVudCwgbmV3RWxlbWVudCk7XG4gICAgZWxlbWVudEVudHJ5LmVsZW1lbnQgPSBuZXdFbGVtZW50O1xuXG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG5cbi8vU3RlcCAxNCBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpIHtcbiAgICBpZiAocC5faXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKGNvbW1vbkFuY2VzdG9yKSkge1xuICAgICAgICBwLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGxhc3RFbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0biA9IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShjb21tb25BbmNlc3Rvcik7XG4gICAgICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY29tbW9uQW5jZXN0b3IpO1xuXG4gICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBwLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChjb21tb25BbmNlc3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgfVxufVxuXG4vL1N0ZXBzIDE1LTE5IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgY29uc3QgdG9rZW4gPSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LnRva2VuO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBwLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbnMsIHRva2VuLmF0dHJzKTtcblxuICAgIHAuX2Fkb3B0Tm9kZXMoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG4gICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcblxuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrKG5ld0VsZW1lbnQsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkudG9rZW4pO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuXG4gICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgcC5vcGVuRWxlbWVudHMuaW5zZXJ0QWZ0ZXIoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG59XG5cbi8vQWxnb3JpdGhtIGVudHJ5IHBvaW50XG5mdW5jdGlvbiBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pIHtcbiAgICBsZXQgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQUFfT1VURVJfTE9PUF9JVEVSOyBpKyspIHtcbiAgICAgICAgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbiwgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG5cbiAgICAgICAgaWYgKCFmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1cnRoZXN0QmxvY2sgPSBhYU9idGFpbkZ1cnRoZXN0QmxvY2socCwgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG5cbiAgICAgICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcblxuICAgICAgICBjb25zdCBsYXN0RWxlbWVudCA9IGFhSW5uZXJMb29wKHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvbW1vbkFuY2VzdG9yID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcblxuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgICAgICBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICB9XG59XG5cbi8vR2VuZXJpYyB0b2tlbiBoYW5kbGVyc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGlnbm9yZVRva2VuKCkge1xuICAgIC8vTk9URTogZG8gbm90aGluZyA9KVxufVxuXG5mdW5jdGlvbiBtaXNwbGFjZWREb2N0eXBlKHApIHtcbiAgICBwLl9lcnIoRVJSLm1pc3BsYWNlZERvY3R5cGUpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDb21tZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudCB8fCBwLm9wZW5FbGVtZW50cy5jdXJyZW50KTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAub3BlbkVsZW1lbnRzLml0ZW1zWzBdKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5kb2N1bWVudCk7XG59XG5cbmZ1bmN0aW9uIGluc2VydENoYXJhY3RlcnMocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gc3RvcFBhcnNpbmcocCkge1xuICAgIHAuc3RvcHBlZCA9IHRydWU7XG59XG5cbi8vIFRoZSBcImluaXRpYWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGRvY3R5cGVJbkluaXRpYWxNb2RlKHAsIHRva2VuKSB7XG4gICAgcC5fc2V0RG9jdW1lbnRUeXBlKHRva2VuKTtcblxuICAgIGNvbnN0IG1vZGUgPSB0b2tlbi5mb3JjZVF1aXJrcyA/IEhUTUwuRE9DVU1FTlRfTU9ERS5RVUlSS1MgOiBkb2N0eXBlLmdldERvY3VtZW50TW9kZSh0b2tlbik7XG5cbiAgICBpZiAoIWRvY3R5cGUuaXNDb25mb3JtaW5nKHRva2VuKSkge1xuICAgICAgICBwLl9lcnIoRVJSLm5vbkNvbmZvcm1pbmdEb2N0eXBlKTtcbiAgICB9XG5cbiAgICBwLnRyZWVBZGFwdGVyLnNldERvY3VtZW50TW9kZShwLmRvY3VtZW50LCBtb2RlKTtcblxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEJFRk9SRV9IVE1MX01PREU7XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX2VycihFUlIubWlzc2luZ0RvY3R5cGUsIHsgYmVmb3JlVG9rZW46IHRydWUgfSk7XG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgSFRNTC5ET0NVTUVOVF9NT0RFLlFVSVJLUyk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gQkVGT1JFX0hUTUxfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJiZWZvcmUgaHRtbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdCZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQkVGT1JFX0hFQURfTU9ERTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MIHx8IHRuID09PSAkLkhFQUQgfHwgdG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5CUikge1xuICAgICAgICB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZVJvb3RFbGVtZW50KCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gQkVGT1JFX0hFQURfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJiZWZvcmUgaGVhZFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdCZWZvcmVIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0hFQURfTU9ERTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5CUikge1xuICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5IRUFEKTtcbiAgICBwLmhlYWRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gaGVhZFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5CQVNFIHx8IHRuID09PSAkLkJBU0VGT05UIHx8IHRuID09PSAkLkJHU09VTkQgfHwgdG4gPT09ICQuTElOSyB8fCB0biA9PT0gJC5NRVRBKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5USVRMRSkge1xuICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQ0RBVEEpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9TQ1JJUFQpIHtcbiAgICAgICAgaWYgKHAub3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXIuTU9ERS5SQVdURVhUKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9OT19TQ1JJUFRfTU9ERTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9GUkFNRVMgfHwgdG4gPT09ICQuU1RZTEUpIHtcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuU0NSSVBUX0RBVEEpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgcC5faW5zZXJ0VGVtcGxhdGUodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RFTVBMQVRFX01PREU7XG4gICAgICAgIHAuX3B1c2hUbXBsSW5zZXJ0aW9uTW9kZShJTl9URU1QTEFURV9NT0RFKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhFQUQpIHtcbiAgICAgICAgcC5fZXJyKEVSUi5taXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSEVBRCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfSEVBRF9NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5CUiB8fCB0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSgpO1xuXG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgIT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBwLl9lcnIoRVJSLmNsb3NpbmdPZkVsZW1lbnRXaXRoT3BlbkNoaWxkRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgcC5fcG9wVG1wbEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcC5fZXJyKEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBwLl9lcnIoRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRva2VuSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfSEVBRF9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImluIGhlYWQgbm8gc2NyaXB0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luSGVhZE5vU2NyaXB0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkJBU0VGT05UIHx8XG4gICAgICAgIHRuID09PSAkLkJHU09VTkQgfHxcbiAgICAgICAgdG4gPT09ICQuSEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5MSU5LIHx8XG4gICAgICAgIHRuID09PSAkLk1FVEEgfHxcbiAgICAgICAgdG4gPT09ICQuTk9GUkFNRVMgfHxcbiAgICAgICAgdG4gPT09ICQuU1RZTEVcbiAgICApIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9TQ1JJUFQpIHtcbiAgICAgICAgcC5fZXJyKEVSUi5uZXN0ZWROb3NjcmlwdEluSGVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5OT1NDUklQVCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fSEVBRF9NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5fZXJyKEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluSGVhZE5vU2NyaXB0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgZXJyQ29kZSA9XG4gICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuaXplci5FT0ZfVE9LRU4gPyBFUlIub3BlbkVsZW1lbnRzTGVmdEFmdGVyRW9mIDogRVJSLmRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZDtcblxuICAgIHAuX2VycihlcnJDb2RlKTtcbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9IRUFEX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiYWZ0ZXIgaGVhZFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5CT0RZKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRlJBTUVTRVQpIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0ZSQU1FU0VUX01PREU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgdG4gPT09ICQuQkFTRSB8fFxuICAgICAgICB0biA9PT0gJC5CQVNFRk9OVCB8fFxuICAgICAgICB0biA9PT0gJC5CR1NPVU5EIHx8XG4gICAgICAgIHRuID09PSAkLkxJTksgfHxcbiAgICAgICAgdG4gPT09ICQuTUVUQSB8fFxuICAgICAgICB0biA9PT0gJC5OT0ZSQU1FUyB8fFxuICAgICAgICB0biA9PT0gJC5TQ1JJUFQgfHxcbiAgICAgICAgdG4gPT09ICQuU1RZTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEVNUExBVEUgfHxcbiAgICAgICAgdG4gPT09ICQuVElUTEVcbiAgICApIHtcbiAgICAgICAgcC5fZXJyKEVSUi5hYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucHVzaChwLmhlYWRFbGVtZW50KTtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUocC5oZWFkRWxlbWVudCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5IRUFEKSB7XG4gICAgICAgIHAuX2VycihFUlIubWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5CUikge1xuICAgICAgICB0b2tlbkFmdGVySGVhZChwLCB0b2tlbik7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2VycihFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLkJPRFkpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG4vLyBUaGUgXCJpbiBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gY2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmFkb3B0QXR0cmlidXRlcyhwLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgdG9rZW4uYXR0cnMpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYm9keVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuXG4gICAgaWYgKGJvZHlFbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMoYm9keUVsZW1lbnQsIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XG5cbiAgICBpZiAocC5mcmFtZXNldE9rICYmIGJvZHlFbGVtZW50KSB7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShib2R5RWxlbWVudCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcEFsbFVwVG9IdG1sRWxlbWVudCgpO1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fRlJBTUVTRVRfTU9ERTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgY29uc3QgdG4gPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gcHJlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxuICAgIC8vb24gdG8gdGhlIG5leHQgb25lLiAoTmV3bGluZXMgYXQgdGhlIHN0YXJ0IG9mIHByZSBibG9ja3MgYXJlIGlnbm9yZWQgYXMgYW4gYXV0aG9yaW5nIGNvbnZlbmllbmNlLilcbiAgICBwLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwO1xuXG4gICAgaWYgKCFwLmZvcm1FbGVtZW50IHx8IGluVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG5cbiAgICAgICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuXG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IGVsZW1lbnRUbiA9IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KTtcbiAgICAgICAgbGV0IGNsb3NlVG4gPSBudWxsO1xuXG4gICAgICAgIGlmICh0biA9PT0gJC5MSSAmJiBlbGVtZW50VG4gPT09ICQuTEkpIHtcbiAgICAgICAgICAgIGNsb3NlVG4gPSAkLkxJO1xuICAgICAgICB9IGVsc2UgaWYgKCh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkgJiYgKGVsZW1lbnRUbiA9PT0gJC5ERCB8fCBlbGVtZW50VG4gPT09ICQuRFQpKSB7XG4gICAgICAgICAgICBjbG9zZVRuID0gZWxlbWVudFRuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlVG4pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKGNsb3NlVG4pO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGNsb3NlVG4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWxlbWVudFRuICE9PSAkLkFERFJFU1MgJiYgZWxlbWVudFRuICE9PSAkLkRJViAmJiBlbGVtZW50VG4gIT09ICQuUCAmJiBwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUExBSU5URVhUO1xufVxuXG5mdW5jdGlvbiBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQlVUVE9OKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkJVVFRPTik7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKCQuQSk7XG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudEVudHJ5KSB7XG4gICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShhY3RpdmVFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGFjdGl2ZUVsZW1lbnRFbnRyeSk7XG4gICAgfVxuXG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuXG5mdW5jdGlvbiBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuXG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5OT0JSKSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cblxuZnVuY3Rpb24gYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKFxuICAgICAgICBwLnRyZWVBZGFwdGVyLmdldERvY3VtZW50TW9kZShwLmRvY3VtZW50KSAhPT0gSFRNTC5ET0NVTUVOVF9NT0RFLlFVSVJLUyAmJlxuICAgICAgICBwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUClcbiAgICApIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG59XG5cbmZ1bmN0aW9uIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcblxuICAgIGNvbnN0IGlucHV0VHlwZSA9IFRva2VuaXplci5nZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuXG4gICAgaWYgKCFpbnB1dFR5cGUgfHwgaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCkgIT09IEhJRERFTl9JTlBVVF9UWVBFKSB7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdG9rZW4udGFnTmFtZSA9ICQuSU1HO1xuICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG59XG5cbmZ1bmN0aW9uIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxuICAgIC8vb24gdG8gdGhlIG5leHQgb25lLiAoTmV3bGluZXMgYXQgdGhlIHN0YXJ0IG9mIHRleHRhcmVhIGVsZW1lbnRzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyLk1PREUuUkNEQVRBO1xuICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IFRFWFRfTU9ERTtcbn1cblxuZnVuY3Rpb24geG1wU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xufVxuXG5mdW5jdGlvbiBpZnJhbWVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplci5NT0RFLlJBV1RFWFQpO1xufVxuXG4vL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgd2UgYWx3YXlzIGFjdCBhcyBhbiB1c2VyIGFnZW50IHdpdGggZW5hYmxlZCBwbHVnaW5zLCBzbyB3ZSBwYXJzZVxuLy88bm9lbWJlZD4gYXMgYSByYXd0ZXh0LlxuZnVuY3Rpb24gbm9lbWJlZFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyLk1PREUuUkFXVEVYVCk7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcblxuICAgIGlmIChcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJTl9UQUJMRV9NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fQ0FQVElPTl9NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fVEFCTEVfQk9EWV9NT0RFIHx8XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSU5fUk9XX01PREUgfHxcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJTl9DRUxMX01PREVcbiAgICApIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX0lOX1RBQkxFX01PREU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fU0VMRUNUX01PREU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG5cbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG5mdW5jdGlvbiByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLlJVQlkpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUlRDKTtcbiAgICB9XG5cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cblxuZnVuY3Rpb24gbWVudVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5cbmZ1bmN0aW9uIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG5cbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcblxuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLk1BVEhNTCk7XG4gICAgfVxuXG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBzdmdTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG5cbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcblxuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5TVkcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLlNWRyk7XG4gICAgfVxuXG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXG4vL0l0J3MgZmFzdGVyIHRoYW4gdXNpbmcgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgc3dpdGNoICh0bi5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkkgfHwgdG4gPT09ICQuUyB8fCB0biA9PT0gJC5CIHx8IHRuID09PSAkLlUpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQSkge1xuICAgICAgICAgICAgICAgIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5ETCB8fCB0biA9PT0gJC5PTCB8fCB0biA9PT0gJC5VTCkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkgxIHx8IHRuID09PSAkLkgyIHx8IHRuID09PSAkLkgzIHx8IHRuID09PSAkLkg0IHx8IHRuID09PSAkLkg1IHx8IHRuID09PSAkLkg2KSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkxJIHx8IHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUKSB7XG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkVNIHx8IHRuID09PSAkLlRUKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQlIpIHtcbiAgICAgICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IUikge1xuICAgICAgICAgICAgICAgIGhyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5SQikge1xuICAgICAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5SVCB8fCB0biA9PT0gJC5SUCkge1xuICAgICAgICAgICAgICAgIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biAhPT0gJC5USCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5UUikge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5ESVYgfHwgdG4gPT09ICQuRElSIHx8IHRuID09PSAkLk5BVikge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlBSRSkge1xuICAgICAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQklHKSB7XG4gICAgICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU1HIHx8IHRuID09PSAkLldCUikge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlhNUCkge1xuICAgICAgICAgICAgICAgIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU1ZHKSB7XG4gICAgICAgICAgICAgICAgc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5SVEMpIHtcbiAgICAgICAgICAgICAgICByYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuQ09MKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5CQVNFIHx8IHRuID09PSAkLkxJTksgfHwgdG4gPT09ICQuTUVUQSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQk9EWSkge1xuICAgICAgICAgICAgICAgIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BSU4gfHwgdG4gPT09ICQuTUVOVSkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZPUk0pIHtcbiAgICAgICAgICAgICAgICBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5DT0RFIHx8IHRuID09PSAkLkZPTlQpIHtcbiAgICAgICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5OT0JSKSB7XG4gICAgICAgICAgICAgICAgbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQVJFQSkge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BVEgpIHtcbiAgICAgICAgICAgICAgICBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5NRU5VKSB7XG4gICAgICAgICAgICAgICAgbWVudVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuSEVBRCkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5TVFlMRSB8fCB0biA9PT0gJC5USVRMRSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQVNJREUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5TTUFMTCkge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkVNQkVEKSB7XG4gICAgICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU5QVVQpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuUEFSQU0gfHwgdG4gPT09ICQuVFJBQ0spIHtcbiAgICAgICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuSU1BR0UpIHtcbiAgICAgICAgICAgICAgICBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gIT09ICQuRlJBTUUgJiYgdG4gIT09ICQuVEJPRFkgJiYgdG4gIT09ICQuVEZPT1QgJiYgdG4gIT09ICQuVEhFQUQpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuU0NSSVBUKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5DRU5URVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5GSUdVUkUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5GT09URVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IRUFERVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IR1JPVVAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ESUFMT0dcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkJVVFRPTikge1xuICAgICAgICAgICAgICAgIGJ1dHRvblN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU1RSSUtFIHx8IHRuID09PSAkLlNUUk9ORykge1xuICAgICAgICAgICAgICAgIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkFQUExFVCB8fCB0biA9PT0gJC5PQkpFQ1QpIHtcbiAgICAgICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLktFWUdFTikge1xuICAgICAgICAgICAgICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNPVVJDRSkge1xuICAgICAgICAgICAgICAgIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5JRlJBTUUpIHtcbiAgICAgICAgICAgICAgICBpZnJhbWVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNFTEVDVCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICAgICAgb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CR1NPVU5EKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ERVRBSUxTIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQUREUkVTUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFSVElDTEUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5TRUNUSU9OIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU1VNTUFSWVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTElTVElORykge1xuICAgICAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUFSUVVFRSkge1xuICAgICAgICAgICAgICAgIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTk9FTUJFRCkge1xuICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNBUFRJT04pIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuQkFTRUZPTlQpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgICAgICAgICAgZnJhbWVzZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZJRUxEU0VUKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVYVEFSRUEpIHtcbiAgICAgICAgICAgICAgICB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PU0NSSVBUKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAub3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICAgICAgb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkNPTEdST1VQKSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlBMQUlOVEVYVCkge1xuICAgICAgICAgICAgICAgIHBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CTE9DS1FVT1RFIHx8IHRuID09PSAkLkZJR0NBUFRJT04pIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvZHlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQk9EWV9NT0RFO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQk9EWV9NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmb3JtRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcbiAgICBjb25zdCBmb3JtRWxlbWVudCA9IHAuZm9ybUVsZW1lbnQ7XG5cbiAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKChmb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuRk9STSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuXG4gICAgICAgIGlmIChpblRlbXBsYXRlKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5GT1JNKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmICghcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuUCk7XG4gICAgfVxuXG4gICAgcC5fY2xvc2VQRWxlbWVudCgpO1xufVxuXG5mdW5jdGlvbiBsaUVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luTGlzdEl0ZW1TY29wZSgkLkxJKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLkxJKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuTEkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZGRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24odG4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNOdW1iZXJlZEhlYWRlckluU2NvcGUoKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBickVuZFRhZ0luQm9keShwKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudCgkLkJSKTtcbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG4pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsRWxlbWVudFBvcHBlZChlbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHAuX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vL09QVElNSVpBVElPTjogSW50ZWdlciBjb21wYXJpc29ucyBhcmUgbG93LWNvc3QsIHNvIHdlIGNhbiB1c2UgdmVyeSBmYXN0IHRhZyBuYW1lIGxlbmd0aCBmaWx0ZXJzIGhlcmUuXG4vL0l0J3MgZmFzdGVyIHRoYW4gdXNpbmcgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIGVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5BIHx8IHRuID09PSAkLkIgfHwgdG4gPT09ICQuSSB8fCB0biA9PT0gJC5TIHx8IHRuID09PSAkLlUpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5QKSB7XG4gICAgICAgICAgICAgICAgcEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuREwgfHwgdG4gPT09ICQuVUwgfHwgdG4gPT09ICQuT0wpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTEkpIHtcbiAgICAgICAgICAgICAgICBsaUVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkREIHx8IHRuID09PSAkLkRUKSB7XG4gICAgICAgICAgICAgICAgZGRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5IMSB8fCB0biA9PT0gJC5IMiB8fCB0biA9PT0gJC5IMyB8fCB0biA9PT0gJC5INCB8fCB0biA9PT0gJC5INSB8fCB0biA9PT0gJC5INikge1xuICAgICAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuQlIpIHtcbiAgICAgICAgICAgICAgICBickVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkVNIHx8IHRuID09PSAkLlRUKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CSUcpIHtcbiAgICAgICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5ESVIgfHwgdG4gPT09ICQuRElWIHx8IHRuID09PSAkLk5BViB8fCB0biA9PT0gJC5QUkUpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CT0RZKSB7XG4gICAgICAgICAgICAgICAgYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBodG1sRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRk9STSkge1xuICAgICAgICAgICAgICAgIGZvcm1FbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5DT0RFIHx8IHRuID09PSAkLkZPTlQgfHwgdG4gPT09ICQuTk9CUikge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLk1BSU4gfHwgdG4gPT09ICQuTUVOVSkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkFTSURFKSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNNQUxMKSB7XG4gICAgICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5DRU5URVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5GSUdVUkUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5GT09URVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IRUFERVIgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5IR1JPVVAgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ESUFMT0dcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5BUFBMRVQgfHwgdG4gPT09ICQuT0JKRUNUKSB7XG4gICAgICAgICAgICAgICAgYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU1RSSUtFIHx8IHRuID09PSAkLlNUUk9ORykge1xuICAgICAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdG4gPT09ICQuQUREUkVTUyB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLkFSVElDTEUgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5ERVRBSUxTIHx8XG4gICAgICAgICAgICAgICAgdG4gPT09ICQuU0VDVElPTiB8fFxuICAgICAgICAgICAgICAgIHRuID09PSAkLlNVTU1BUlkgfHxcbiAgICAgICAgICAgICAgICB0biA9PT0gJC5MSVNUSU5HXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuTUFSUVVFRSkge1xuICAgICAgICAgICAgICAgIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBpZiAodG4gPT09ICQuRklFTERTRVQpIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5CTE9DS1FVT1RFIHx8IHRuID09PSAkLkZJR0NBUFRJT04pIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVvZkluQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AgPiAtMSkge1xuICAgICAgICBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwLnN0b3BwZWQgPSB0cnVlO1xuICAgIH1cbn1cblxuLy8gVGhlIFwidGV4dFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZW5kVGFnSW5UZXh0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuU0NSSVBUKSB7XG4gICAgICAgIHAucGVuZGluZ1NjcmlwdCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG59XG5cbmZ1bmN0aW9uIGVvZkluVGV4dChwLCB0b2tlbikge1xuICAgIHAuX2VycihFUlIuZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dCk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGNoYXJhY3RlckluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCBjdXJUbiA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lO1xuXG4gICAgaWYgKGN1clRuID09PSAkLlRBQkxFIHx8IGN1clRuID09PSAkLlRCT0RZIHx8IGN1clRuID09PSAkLlRGT09UIHx8IGN1clRuID09PSAkLlRIRUFEIHx8IGN1clRuID09PSAkLlRSKSB7XG4gICAgICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2VucyA9IFtdO1xuICAgICAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcbiAgICAgICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX1RFWFRfTU9ERTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ0FQVElPTl9NT0RFO1xufVxuXG5mdW5jdGlvbiBjb2xncm91cFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ09MVU1OX0dST1VQX01PREU7XG59XG5cbmZ1bmN0aW9uIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5DT0xHUk9VUCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQ09MVU1OX0dST1VQX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuZnVuY3Rpb24gdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbn1cblxuZnVuY3Rpb24gdGRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KCQuVEJPRFkpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuXG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEFCTEUpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gVG9rZW5pemVyLmdldFRva2VuQXR0cih0b2tlbiwgQVRUUlMuVFlQRSk7XG5cbiAgICBpZiAoaW5wdXRUeXBlICYmIGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpID09PSBISURERU5fSU5QVVRfVFlQRSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cblxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZm9ybVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmICghcC5mb3JtRWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIHN3aXRjaCAodG4ubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5URCB8fCB0biA9PT0gJC5USCB8fCB0biA9PT0gJC5UUikge1xuICAgICAgICAgICAgICAgIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkNPTCkge1xuICAgICAgICAgICAgICAgIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5GT1JNKSB7XG4gICAgICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG4gPT09ICQuU1RZTEUpIHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEKSB7XG4gICAgICAgICAgICAgICAgdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5JTlBVVCkge1xuICAgICAgICAgICAgICAgIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlNDUklQVCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkNBUFRJT04pIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgaWYgKHRuID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgICAgICAgICAgY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuICE9PSAkLkJPRFkgJiZcbiAgICAgICAgdG4gIT09ICQuQ0FQVElPTiAmJlxuICAgICAgICB0biAhPT0gJC5DT0wgJiZcbiAgICAgICAgdG4gIT09ICQuQ09MR1JPVVAgJiZcbiAgICAgICAgdG4gIT09ICQuSFRNTCAmJlxuICAgICAgICB0biAhPT0gJC5UQk9EWSAmJlxuICAgICAgICB0biAhPT0gJC5URCAmJlxuICAgICAgICB0biAhPT0gJC5URk9PVCAmJlxuICAgICAgICB0biAhPT0gJC5USCAmJlxuICAgICAgICB0biAhPT0gJC5USEVBRCAmJlxuICAgICAgICB0biAhPT0gJC5UUlxuICAgICkge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5JblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3Qgc2F2ZWRGb3N0ZXJQYXJlbnRpbmdTdGF0ZSA9IHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZDtcblxuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHRydWU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuSW5Cb2R5TW9kZSh0b2tlbik7XG4gICAgcC5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkID0gc2F2ZWRGb3N0ZXJQYXJlbnRpbmdTdGF0ZTtcbn1cblxuLy8gVGhlIFwiaW4gdGFibGUgdGV4dFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLnB1c2godG9rZW4pO1xufVxuXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbiAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0b2tlbkluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgaWYgKHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICBmb3IgKDsgaSA8IHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHAucGVuZGluZ0NoYXJhY3RlclRva2Vuc1tpXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKDsgaSA8IHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcC5faW5zZXJ0Q2hhcmFjdGVycyhwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gY2FwdGlvblwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5DQVBUSU9OKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQ0FQVElPTik7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fCB0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG5cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0biAhPT0gJC5CT0RZICYmXG4gICAgICAgIHRuICE9PSAkLkNPTCAmJlxuICAgICAgICB0biAhPT0gJC5DT0xHUk9VUCAmJlxuICAgICAgICB0biAhPT0gJC5IVE1MICYmXG4gICAgICAgIHRuICE9PSAkLlRCT0RZICYmXG4gICAgICAgIHRuICE9PSAkLlREICYmXG4gICAgICAgIHRuICE9PSAkLlRGT09UICYmXG4gICAgICAgIHRuICE9PSAkLlRIICYmXG4gICAgICAgIHRuICE9PSAkLlRIRUFEICYmXG4gICAgICAgIHRuICE9PSAkLlRSXG4gICAgKSB7XG4gICAgICAgIGVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJpbiBjb2x1bW4gZ3JvdXBcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkNPTCkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICBlbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gIT09ICQuQ09MKSB7XG4gICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJpbiB0YWJsZSBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlRSKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fUk9XX01PREU7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5USCB8fCB0biA9PT0gJC5URCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoJC5UUik7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuQ09MIHx8XG4gICAgICAgIHRuID09PSAkLkNPTEdST1VQIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEXG4gICAgKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX01PREU7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQKSB8fFxuICAgICAgICAodG4gIT09ICQuSFRNTCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5USCAmJiB0biAhPT0gJC5UUilcbiAgICApIHtcbiAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJpbiByb3dcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuVEggfHwgdG4gPT09ICQuVEQpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX0NFTExfTU9ERTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgdG4gPT09ICQuQ0FQVElPTiB8fFxuICAgICAgICB0biA9PT0gJC5DT0wgfHxcbiAgICAgICAgdG4gPT09ICQuQ09MR1JPVVAgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFJcbiAgICApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJblJvdyhwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5UUikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9UQUJMRV9CT0RZX01PREU7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1RBQkxFX0JPRFlfTU9ERTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRCT0RZIHx8IHRuID09PSAkLlRGT09UIHx8IHRuID09PSAkLlRIRUFEKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fVEFCTEVfQk9EWV9NT0RFO1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh0biAhPT0gJC5CT0RZICYmIHRuICE9PSAkLkNBUFRJT04gJiYgdG4gIT09ICQuQ09MICYmIHRuICE9PSAkLkNPTEdST1VQKSB8fFxuICAgICAgICAodG4gIT09ICQuSFRNTCAmJiB0biAhPT0gJC5URCAmJiB0biAhPT0gJC5USClcbiAgICApIHtcbiAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJpbiBjZWxsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmIChcbiAgICAgICAgdG4gPT09ICQuQ0FQVElPTiB8fFxuICAgICAgICB0biA9PT0gJC5DT0wgfHxcbiAgICAgICAgdG4gPT09ICQuQ09MR1JPVVAgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEggfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFJcbiAgICApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlREKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5USCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5DZWxsKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLlREIHx8IHRuID09PSAkLlRIKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IElOX1JPV19NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSB8fCB0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5URk9PVCB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5UUikge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VUYWJsZUNlbGwoKTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuICE9PSAkLkJPRFkgJiYgdG4gIT09ICQuQ0FQVElPTiAmJiB0biAhPT0gJC5DT0wgJiYgdG4gIT09ICQuQ09MR1JPVVAgJiYgdG4gIT09ICQuSFRNTCkge1xuICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuLy8gVGhlIFwiaW4gc2VsZWN0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLklOUFVUIHx8IHRuID09PSAkLktFWUdFTiB8fCB0biA9PT0gJC5URVhUQVJFQSB8fCB0biA9PT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2VsZWN0U2NvcGUoJC5TRUxFQ1QpKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG5cbiAgICAgICAgICAgIGlmICh0biAhPT0gJC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5TQ1JJUFQgfHwgdG4gPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAodG4gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgY29uc3QgcHJldk9wZW5FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgLSAxXTtcbiAgICAgICAgY29uc3QgcHJldk9wZW5FbGVtZW50VG4gPSBwcmV2T3BlbkVsZW1lbnQgJiYgcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHByZXZPcGVuRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTiAmJiBwcmV2T3BlbkVsZW1lbnRUbiA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ05hbWUgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0biA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdOYW1lID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlNFTEVDVCAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIGVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLzEyLjIuNS40LjE3IFRoZSBcImluIHNlbGVjdCBpbiB0YWJsZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdEluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuVEFCTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFIgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEhcbiAgICApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdEluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG5cbiAgICBpZiAoXG4gICAgICAgIHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuVEFCTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFIgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEhcbiAgICApIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBlbmRUYWdJblNlbGVjdChwLCB0b2tlbik7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJpbiB0ZW1wbGF0ZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuXG4gICAgaWYgKFxuICAgICAgICB0biA9PT0gJC5CQVNFIHx8XG4gICAgICAgIHRuID09PSAkLkJBU0VGT05UIHx8XG4gICAgICAgIHRuID09PSAkLkJHU09VTkQgfHxcbiAgICAgICAgdG4gPT09ICQuTElOSyB8fFxuICAgICAgICB0biA9PT0gJC5NRVRBIHx8XG4gICAgICAgIHRuID09PSAkLk5PRlJBTUVTIHx8XG4gICAgICAgIHRuID09PSAkLlNDUklQVCB8fFxuICAgICAgICB0biA9PT0gJC5TVFlMRSB8fFxuICAgICAgICB0biA9PT0gJC5URU1QTEFURSB8fFxuICAgICAgICB0biA9PT0gJC5USVRMRVxuICAgICkge1xuICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV3SW5zZXJ0aW9uTW9kZSA9IFRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVBbdG5dIHx8IElOX0JPRFlfTU9ERTtcblxuICAgICAgICBwLl9wb3BUbXBsSW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wdXNoVG1wbEluc2VydGlvbk1vZGUobmV3SW5zZXJ0aW9uTW9kZSk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IG5ld0luc2VydGlvbk1vZGU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBlbmRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgZW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVvZkluVGVtcGxhdGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHAuX3BvcFRtcGxJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHAuc3RvcHBlZCA9IHRydWU7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdOYW1lID09PSAkLkhUTUwpIHtcbiAgICAgICAgaWYgKCFwLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfQUZURVJfQk9EWV9NT0RFO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJTl9CT0RZX01PREU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cblxuLy8gVGhlIFwiaW4gZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5GcmFtZXNldChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH0gZWxzZSBpZiAodG4gPT09ICQuRlJBTUUpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5GUkFNRVNFVCAmJiAhcC5vcGVuRWxlbWVudHMuaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG5cbiAgICAgICAgaWYgKCFwLmZyYWdtZW50Q29udGV4dCAmJiBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnTmFtZSAhPT0gJC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gQUZURVJfRlJBTUVTRVRfTU9ERTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGhlIFwiYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnTmFtZSA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEFGVEVSX0FGVEVSX0ZSQU1FU0VUX01PREU7XG4gICAgfVxufVxuXG4vLyBUaGUgXCJhZnRlciBhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ05hbWUgPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSU5fQk9EWV9NT0RFO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG5cbi8vIFRoZSBcImFmdGVyIGFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcblxuICAgIGlmICh0biA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRuID09PSAkLk5PRlJBTUVTKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5cbi8vIFRoZSBydWxlcyBmb3IgcGFyc2luZyB0b2tlbnMgaW4gZm9yZWlnbiBjb250ZW50XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICB0b2tlbi5jaGFycyA9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xufVxuXG5mdW5jdGlvbiBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIGlmIChmb3JlaWduQ29udGVudC5jYXVzZXNFeGl0KHRva2VuKSAmJiAhcC5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocC5vcGVuRWxlbWVudHMuY3VycmVudCkgIT09IE5TLkhUTUwgJiZcbiAgICAgICAgICAgICFwLl9pc0ludGVncmF0aW9uUG9pbnQocC5vcGVuRWxlbWVudHMuY3VycmVudClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHAuX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnROcyA9PT0gTlMuTUFUSE1MKSB7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50TnMgPT09IE5TLlNWRykge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdUYWdOYW1lKHRva2VuKTtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHQXR0cnModG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG5cbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBjdXJyZW50TnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KS50b0xvd2VyQ2FzZSgpID09PSB0b2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYVxuXG52YXIgcHJvdG8gPSBTY2hlbWEucHJvdG90eXBlXG5cbnByb3RvLnNwYWNlID0gbnVsbFxucHJvdG8ubm9ybWFsID0ge31cbnByb3RvLnByb3BlcnR5ID0ge31cblxuZnVuY3Rpb24gU2NoZW1hKHByb3BlcnR5LCBub3JtYWwsIHNwYWNlKSB7XG4gIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eVxuICB0aGlzLm5vcm1hbCA9IG5vcm1hbFxuXG4gIGlmIChzcGFjZSkge1xuICAgIHRoaXMuc3BhY2UgPSBzcGFjZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4vc2NoZW1hJylcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZVxuXG5mdW5jdGlvbiBtZXJnZShkZWZpbml0aW9ucykge1xuICB2YXIgbGVuZ3RoID0gZGVmaW5pdGlvbnMubGVuZ3RoXG4gIHZhciBwcm9wZXJ0eSA9IFtdXG4gIHZhciBub3JtYWwgPSBbXVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgaW5mb1xuICB2YXIgc3BhY2VcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGluZm8gPSBkZWZpbml0aW9uc1tpbmRleF1cbiAgICBwcm9wZXJ0eS5wdXNoKGluZm8ucHJvcGVydHkpXG4gICAgbm9ybWFsLnB1c2goaW5mby5ub3JtYWwpXG4gICAgc3BhY2UgPSBpbmZvLnNwYWNlXG4gIH1cblxuICByZXR1cm4gbmV3IFNjaGVtYShcbiAgICB4dGVuZC5hcHBseShudWxsLCBwcm9wZXJ0eSksXG4gICAgeHRlbmQuYXBwbHkobnVsbCwgbm9ybWFsKSxcbiAgICBzcGFjZVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBub3JtYWxpemVcblxuZnVuY3Rpb24gbm9ybWFsaXplKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBJbmZvXG5cbnZhciBwcm90byA9IEluZm8ucHJvdG90eXBlXG5cbnByb3RvLnNwYWNlID0gbnVsbFxucHJvdG8uYXR0cmlidXRlID0gbnVsbFxucHJvdG8ucHJvcGVydHkgPSBudWxsXG5wcm90by5ib29sZWFuID0gZmFsc2VcbnByb3RvLmJvb2xlYW5pc2ggPSBmYWxzZVxucHJvdG8ub3ZlcmxvYWRlZEJvb2xlYW4gPSBmYWxzZVxucHJvdG8ubnVtYmVyID0gZmFsc2VcbnByb3RvLmNvbW1hU2VwYXJhdGVkID0gZmFsc2VcbnByb3RvLnNwYWNlU2VwYXJhdGVkID0gZmFsc2VcbnByb3RvLmNvbW1hT3JTcGFjZVNlcGFyYXRlZCA9IGZhbHNlXG5wcm90by5tdXN0VXNlUHJvcGVydHkgPSBmYWxzZVxucHJvdG8uZGVmaW5lZCA9IGZhbHNlXG5cbmZ1bmN0aW9uIEluZm8ocHJvcGVydHksIGF0dHJpYnV0ZSkge1xuICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHlcbiAgdGhpcy5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcG93ZXJzID0gMFxuXG5leHBvcnRzLmJvb2xlYW4gPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5ib29sZWFuaXNoID0gaW5jcmVtZW50KClcbmV4cG9ydHMub3ZlcmxvYWRlZEJvb2xlYW4gPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5udW1iZXIgPSBpbmNyZW1lbnQoKVxuZXhwb3J0cy5zcGFjZVNlcGFyYXRlZCA9IGluY3JlbWVudCgpXG5leHBvcnRzLmNvbW1hU2VwYXJhdGVkID0gaW5jcmVtZW50KClcbmV4cG9ydHMuY29tbWFPclNwYWNlU2VwYXJhdGVkID0gaW5jcmVtZW50KClcblxuZnVuY3Rpb24gaW5jcmVtZW50KCkge1xuICByZXR1cm4gTWF0aC5wb3coMiwgKytwb3dlcnMpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIEluZm8gPSByZXF1aXJlKCcuL2luZm8nKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpXG5cbm1vZHVsZS5leHBvcnRzID0gRGVmaW5lZEluZm9cblxuRGVmaW5lZEluZm8ucHJvdG90eXBlID0gbmV3IEluZm8oKVxuRGVmaW5lZEluZm8ucHJvdG90eXBlLmRlZmluZWQgPSB0cnVlXG5cbnZhciBjaGVja3MgPSBbXG4gICdib29sZWFuJyxcbiAgJ2Jvb2xlYW5pc2gnLFxuICAnb3ZlcmxvYWRlZEJvb2xlYW4nLFxuICAnbnVtYmVyJyxcbiAgJ2NvbW1hU2VwYXJhdGVkJyxcbiAgJ3NwYWNlU2VwYXJhdGVkJyxcbiAgJ2NvbW1hT3JTcGFjZVNlcGFyYXRlZCdcbl1cbnZhciBjaGVja3NMZW5ndGggPSBjaGVja3MubGVuZ3RoXG5cbmZ1bmN0aW9uIERlZmluZWRJbmZvKHByb3BlcnR5LCBhdHRyaWJ1dGUsIG1hc2ssIHNwYWNlKSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBjaGVja1xuXG4gIG1hcmsodGhpcywgJ3NwYWNlJywgc3BhY2UpXG5cbiAgSW5mby5jYWxsKHRoaXMsIHByb3BlcnR5LCBhdHRyaWJ1dGUpXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjaGVja3NMZW5ndGgpIHtcbiAgICBjaGVjayA9IGNoZWNrc1tpbmRleF1cbiAgICBtYXJrKHRoaXMsIGNoZWNrLCAobWFzayAmIHR5cGVzW2NoZWNrXSkgPT09IHR5cGVzW2NoZWNrXSlcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrKHZhbHVlcywga2V5LCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICB2YWx1ZXNba2V5XSA9IHZhbHVlXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnLi4vLi4vbm9ybWFsaXplJylcbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuL3NjaGVtYScpXG52YXIgRGVmaW5lZEluZm8gPSByZXF1aXJlKCcuL2RlZmluZWQtaW5mbycpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlXG5cbmZ1bmN0aW9uIGNyZWF0ZShkZWZpbml0aW9uKSB7XG4gIHZhciBzcGFjZSA9IGRlZmluaXRpb24uc3BhY2VcbiAgdmFyIG11c3RVc2VQcm9wZXJ0eSA9IGRlZmluaXRpb24ubXVzdFVzZVByb3BlcnR5IHx8IFtdXG4gIHZhciBhdHRyaWJ1dGVzID0gZGVmaW5pdGlvbi5hdHRyaWJ1dGVzIHx8IHt9XG4gIHZhciBwcm9wcyA9IGRlZmluaXRpb24ucHJvcGVydGllc1xuICB2YXIgdHJhbnNmb3JtID0gZGVmaW5pdGlvbi50cmFuc2Zvcm1cbiAgdmFyIHByb3BlcnR5ID0ge31cbiAgdmFyIG5vcm1hbCA9IHt9XG4gIHZhciBwcm9wXG4gIHZhciBpbmZvXG5cbiAgZm9yIChwcm9wIGluIHByb3BzKSB7XG4gICAgaW5mbyA9IG5ldyBEZWZpbmVkSW5mbyhcbiAgICAgIHByb3AsXG4gICAgICB0cmFuc2Zvcm0oYXR0cmlidXRlcywgcHJvcCksXG4gICAgICBwcm9wc1twcm9wXSxcbiAgICAgIHNwYWNlXG4gICAgKVxuXG4gICAgaWYgKG11c3RVc2VQcm9wZXJ0eS5pbmRleE9mKHByb3ApICE9PSAtMSkge1xuICAgICAgaW5mby5tdXN0VXNlUHJvcGVydHkgPSB0cnVlXG4gICAgfVxuXG4gICAgcHJvcGVydHlbcHJvcF0gPSBpbmZvXG5cbiAgICBub3JtYWxbbm9ybWFsaXplKHByb3ApXSA9IHByb3BcbiAgICBub3JtYWxbbm9ybWFsaXplKGluZm8uYXR0cmlidXRlKV0gPSBwcm9wXG4gIH1cblxuICByZXR1cm4gbmV3IFNjaGVtYShwcm9wZXJ0eSwgbm9ybWFsLCBzcGFjZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgc3BhY2U6ICd4bGluaycsXG4gIHRyYW5zZm9ybTogeGxpbmtUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICB4TGlua0FjdHVhdGU6IG51bGwsXG4gICAgeExpbmtBcmNSb2xlOiBudWxsLFxuICAgIHhMaW5rSHJlZjogbnVsbCxcbiAgICB4TGlua1JvbGU6IG51bGwsXG4gICAgeExpbmtTaG93OiBudWxsLFxuICAgIHhMaW5rVGl0bGU6IG51bGwsXG4gICAgeExpbmtUeXBlOiBudWxsXG4gIH1cbn0pXG5cbmZ1bmN0aW9uIHhsaW5rVHJhbnNmb3JtKF8sIHByb3ApIHtcbiAgcmV0dXJuICd4bGluazonICsgcHJvcC5zbGljZSg1KS50b0xvd2VyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAneG1sJyxcbiAgdHJhbnNmb3JtOiB4bWxUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICB4bWxMYW5nOiBudWxsLFxuICAgIHhtbEJhc2U6IG51bGwsXG4gICAgeG1sU3BhY2U6IG51bGxcbiAgfVxufSlcblxuZnVuY3Rpb24geG1sVHJhbnNmb3JtKF8sIHByb3ApIHtcbiAgcmV0dXJuICd4bWw6JyArIHByb3Auc2xpY2UoMykudG9Mb3dlckNhc2UoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybVxuXG5mdW5jdGlvbiBjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtKGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSkge1xuICByZXR1cm4gYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMgPyBhdHRyaWJ1dGVzW2F0dHJpYnV0ZV0gOiBhdHRyaWJ1dGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtJylcblxubW9kdWxlLmV4cG9ydHMgPSBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm1cblxuZnVuY3Rpb24gY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtKGF0dHJpYnV0ZXMsIHByb3BlcnR5KSB7XG4gIHJldHVybiBjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtKGF0dHJpYnV0ZXMsIHByb3BlcnR5LnRvTG93ZXJDYXNlKCkpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vdXRpbC9jcmVhdGUnKVxudmFyIGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vdXRpbC9jYXNlLWluc2Vuc2l0aXZlLXRyYW5zZm9ybScpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgc3BhY2U6ICd4bWxucycsXG4gIGF0dHJpYnV0ZXM6IHtcbiAgICB4bWxuc3hsaW5rOiAneG1sbnM6eGxpbmsnXG4gIH0sXG4gIHRyYW5zZm9ybTogY2FzZUluc2Vuc2l0aXZlVHJhbnNmb3JtLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgeG1sbnM6IG51bGwsXG4gICAgeG1sbnNYTGluazogbnVsbFxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdXRpbC90eXBlcycpXG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi91dGlsL2NyZWF0ZScpXG5cbnZhciBib29sZWFuaXNoID0gdHlwZXMuYm9vbGVhbmlzaFxudmFyIG51bWJlciA9IHR5cGVzLm51bWJlclxudmFyIHNwYWNlU2VwYXJhdGVkID0gdHlwZXMuc3BhY2VTZXBhcmF0ZWRcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoe1xuICB0cmFuc2Zvcm06IGFyaWFUcmFuc2Zvcm0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBhcmlhQWN0aXZlRGVzY2VuZGFudDogbnVsbCxcbiAgICBhcmlhQXRvbWljOiBib29sZWFuaXNoLFxuICAgIGFyaWFBdXRvQ29tcGxldGU6IG51bGwsXG4gICAgYXJpYUJ1c3k6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUNoZWNrZWQ6IGJvb2xlYW5pc2gsXG4gICAgYXJpYUNvbENvdW50OiBudW1iZXIsXG4gICAgYXJpYUNvbEluZGV4OiBudW1iZXIsXG4gICAgYXJpYUNvbFNwYW46IG51bWJlcixcbiAgICBhcmlhQ29udHJvbHM6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFDdXJyZW50OiBudWxsLFxuICAgIGFyaWFEZXNjcmliZWRCeTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYURldGFpbHM6IG51bGwsXG4gICAgYXJpYURpc2FibGVkOiBib29sZWFuaXNoLFxuICAgIGFyaWFEcm9wRWZmZWN0OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhRXJyb3JNZXNzYWdlOiBudWxsLFxuICAgIGFyaWFFeHBhbmRlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhRmxvd1RvOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhR3JhYmJlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhSGFzUG9wdXA6IG51bGwsXG4gICAgYXJpYUhpZGRlbjogYm9vbGVhbmlzaCxcbiAgICBhcmlhSW52YWxpZDogbnVsbCxcbiAgICBhcmlhS2V5U2hvcnRjdXRzOiBudWxsLFxuICAgIGFyaWFMYWJlbDogbnVsbCxcbiAgICBhcmlhTGFiZWxsZWRCeTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYXJpYUxldmVsOiBudW1iZXIsXG4gICAgYXJpYUxpdmU6IG51bGwsXG4gICAgYXJpYU1vZGFsOiBib29sZWFuaXNoLFxuICAgIGFyaWFNdWx0aUxpbmU6IGJvb2xlYW5pc2gsXG4gICAgYXJpYU11bHRpU2VsZWN0YWJsZTogYm9vbGVhbmlzaCxcbiAgICBhcmlhT3JpZW50YXRpb246IG51bGwsXG4gICAgYXJpYU93bnM6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFyaWFQbGFjZWhvbGRlcjogbnVsbCxcbiAgICBhcmlhUG9zSW5TZXQ6IG51bWJlcixcbiAgICBhcmlhUHJlc3NlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhUmVhZE9ubHk6IGJvb2xlYW5pc2gsXG4gICAgYXJpYVJlbGV2YW50OiBudWxsLFxuICAgIGFyaWFSZXF1aXJlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhUm9sZURlc2NyaXB0aW9uOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBhcmlhUm93Q291bnQ6IG51bWJlcixcbiAgICBhcmlhUm93SW5kZXg6IG51bWJlcixcbiAgICBhcmlhUm93U3BhbjogbnVtYmVyLFxuICAgIGFyaWFTZWxlY3RlZDogYm9vbGVhbmlzaCxcbiAgICBhcmlhU2V0U2l6ZTogbnVtYmVyLFxuICAgIGFyaWFTb3J0OiBudWxsLFxuICAgIGFyaWFWYWx1ZU1heDogbnVtYmVyLFxuICAgIGFyaWFWYWx1ZU1pbjogbnVtYmVyLFxuICAgIGFyaWFWYWx1ZU5vdzogbnVtYmVyLFxuICAgIGFyaWFWYWx1ZVRleHQ6IG51bGwsXG4gICAgcm9sZTogbnVsbFxuICB9XG59KVxuXG5mdW5jdGlvbiBhcmlhVHJhbnNmb3JtKF8sIHByb3ApIHtcbiAgcmV0dXJuIHByb3AgPT09ICdyb2xlJyA/IHByb3AgOiAnYXJpYS0nICsgcHJvcC5zbGljZSg0KS50b0xvd2VyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi91dGlsL3R5cGVzJylcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcbnZhciBjYXNlSW5zZW5zaXRpdmVUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL3V0aWwvY2FzZS1pbnNlbnNpdGl2ZS10cmFuc2Zvcm0nKVxuXG52YXIgYm9vbGVhbiA9IHR5cGVzLmJvb2xlYW5cbnZhciBvdmVybG9hZGVkQm9vbGVhbiA9IHR5cGVzLm92ZXJsb2FkZWRCb29sZWFuXG52YXIgYm9vbGVhbmlzaCA9IHR5cGVzLmJvb2xlYW5pc2hcbnZhciBudW1iZXIgPSB0eXBlcy5udW1iZXJcbnZhciBzcGFjZVNlcGFyYXRlZCA9IHR5cGVzLnNwYWNlU2VwYXJhdGVkXG52YXIgY29tbWFTZXBhcmF0ZWQgPSB0eXBlcy5jb21tYVNlcGFyYXRlZFxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZSh7XG4gIHNwYWNlOiAnaHRtbCcsXG4gIGF0dHJpYnV0ZXM6IHtcbiAgICBhY2NlcHRjaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxuICAgIGNsYXNzbmFtZTogJ2NsYXNzJyxcbiAgICBodG1sZm9yOiAnZm9yJyxcbiAgICBodHRwZXF1aXY6ICdodHRwLWVxdWl2J1xuICB9LFxuICB0cmFuc2Zvcm06IGNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgbXVzdFVzZVByb3BlcnR5OiBbJ2NoZWNrZWQnLCAnbXVsdGlwbGUnLCAnbXV0ZWQnLCAnc2VsZWN0ZWQnXSxcbiAgcHJvcGVydGllczoge1xuICAgIC8vIFN0YW5kYXJkIFByb3BlcnRpZXMuXG4gICAgYWJicjogbnVsbCxcbiAgICBhY2NlcHQ6IGNvbW1hU2VwYXJhdGVkLFxuICAgIGFjY2VwdENoYXJzZXQ6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGFjY2Vzc0tleTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgYWN0aW9uOiBudWxsLFxuICAgIGFsbG93OiBudWxsLFxuICAgIGFsbG93RnVsbFNjcmVlbjogYm9vbGVhbixcbiAgICBhbGxvd1BheW1lbnRSZXF1ZXN0OiBib29sZWFuLFxuICAgIGFsbG93VXNlck1lZGlhOiBib29sZWFuLFxuICAgIGFsdDogbnVsbCxcbiAgICBhczogbnVsbCxcbiAgICBhc3luYzogYm9vbGVhbixcbiAgICBhdXRvQ2FwaXRhbGl6ZTogbnVsbCxcbiAgICBhdXRvQ29tcGxldGU6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGF1dG9Gb2N1czogYm9vbGVhbixcbiAgICBhdXRvUGxheTogYm9vbGVhbixcbiAgICBjYXB0dXJlOiBib29sZWFuLFxuICAgIGNoYXJTZXQ6IG51bGwsXG4gICAgY2hlY2tlZDogYm9vbGVhbixcbiAgICBjaXRlOiBudWxsLFxuICAgIGNsYXNzTmFtZTogc3BhY2VTZXBhcmF0ZWQsXG4gICAgY29sczogbnVtYmVyLFxuICAgIGNvbFNwYW46IG51bGwsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBjb250ZW50RWRpdGFibGU6IGJvb2xlYW5pc2gsXG4gICAgY29udHJvbHM6IGJvb2xlYW4sXG4gICAgY29udHJvbHNMaXN0OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBjb29yZHM6IG51bWJlciB8IGNvbW1hU2VwYXJhdGVkLFxuICAgIGNyb3NzT3JpZ2luOiBudWxsLFxuICAgIGRhdGE6IG51bGwsXG4gICAgZGF0ZVRpbWU6IG51bGwsXG4gICAgZGVjb2Rpbmc6IG51bGwsXG4gICAgZGVmYXVsdDogYm9vbGVhbixcbiAgICBkZWZlcjogYm9vbGVhbixcbiAgICBkaXI6IG51bGwsXG4gICAgZGlyTmFtZTogbnVsbCxcbiAgICBkaXNhYmxlZDogYm9vbGVhbixcbiAgICBkb3dubG9hZDogb3ZlcmxvYWRlZEJvb2xlYW4sXG4gICAgZHJhZ2dhYmxlOiBib29sZWFuaXNoLFxuICAgIGVuY1R5cGU6IG51bGwsXG4gICAgZW50ZXJLZXlIaW50OiBudWxsLFxuICAgIGZvcm06IG51bGwsXG4gICAgZm9ybUFjdGlvbjogbnVsbCxcbiAgICBmb3JtRW5jVHlwZTogbnVsbCxcbiAgICBmb3JtTWV0aG9kOiBudWxsLFxuICAgIGZvcm1Ob1ZhbGlkYXRlOiBib29sZWFuLFxuICAgIGZvcm1UYXJnZXQ6IG51bGwsXG4gICAgaGVhZGVyczogc3BhY2VTZXBhcmF0ZWQsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICAgaGlkZGVuOiBib29sZWFuLFxuICAgIGhpZ2g6IG51bWJlcixcbiAgICBocmVmOiBudWxsLFxuICAgIGhyZWZMYW5nOiBudWxsLFxuICAgIGh0bWxGb3I6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGh0dHBFcXVpdjogc3BhY2VTZXBhcmF0ZWQsXG4gICAgaWQ6IG51bGwsXG4gICAgaW1hZ2VTaXplczogbnVsbCxcbiAgICBpbWFnZVNyY1NldDogY29tbWFTZXBhcmF0ZWQsXG4gICAgaW5wdXRNb2RlOiBudWxsLFxuICAgIGludGVncml0eTogbnVsbCxcbiAgICBpczogbnVsbCxcbiAgICBpc01hcDogYm9vbGVhbixcbiAgICBpdGVtSWQ6IG51bGwsXG4gICAgaXRlbVByb3A6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGl0ZW1SZWY6IHNwYWNlU2VwYXJhdGVkLFxuICAgIGl0ZW1TY29wZTogYm9vbGVhbixcbiAgICBpdGVtVHlwZTogc3BhY2VTZXBhcmF0ZWQsXG4gICAga2luZDogbnVsbCxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBsYW5nOiBudWxsLFxuICAgIGxhbmd1YWdlOiBudWxsLFxuICAgIGxpc3Q6IG51bGwsXG4gICAgbG9vcDogYm9vbGVhbixcbiAgICBsb3c6IG51bWJlcixcbiAgICBtYW5pZmVzdDogbnVsbCxcbiAgICBtYXg6IG51bGwsXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgbWVkaWE6IG51bGwsXG4gICAgbWV0aG9kOiBudWxsLFxuICAgIG1pbjogbnVsbCxcbiAgICBtaW5MZW5ndGg6IG51bWJlcixcbiAgICBtdWx0aXBsZTogYm9vbGVhbixcbiAgICBtdXRlZDogYm9vbGVhbixcbiAgICBuYW1lOiBudWxsLFxuICAgIG5vbmNlOiBudWxsLFxuICAgIG5vTW9kdWxlOiBib29sZWFuLFxuICAgIG5vVmFsaWRhdGU6IGJvb2xlYW4sXG4gICAgb25BYm9ydDogbnVsbCxcbiAgICBvbkFmdGVyUHJpbnQ6IG51bGwsXG4gICAgb25BdXhDbGljazogbnVsbCxcbiAgICBvbkJlZm9yZVByaW50OiBudWxsLFxuICAgIG9uQmVmb3JlVW5sb2FkOiBudWxsLFxuICAgIG9uQmx1cjogbnVsbCxcbiAgICBvbkNhbmNlbDogbnVsbCxcbiAgICBvbkNhblBsYXk6IG51bGwsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogbnVsbCxcbiAgICBvbkNoYW5nZTogbnVsbCxcbiAgICBvbkNsaWNrOiBudWxsLFxuICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgb25Db250ZXh0TWVudTogbnVsbCxcbiAgICBvbkNvcHk6IG51bGwsXG4gICAgb25DdWVDaGFuZ2U6IG51bGwsXG4gICAgb25DdXQ6IG51bGwsXG4gICAgb25EYmxDbGljazogbnVsbCxcbiAgICBvbkRyYWc6IG51bGwsXG4gICAgb25EcmFnRW5kOiBudWxsLFxuICAgIG9uRHJhZ0VudGVyOiBudWxsLFxuICAgIG9uRHJhZ0V4aXQ6IG51bGwsXG4gICAgb25EcmFnTGVhdmU6IG51bGwsXG4gICAgb25EcmFnT3ZlcjogbnVsbCxcbiAgICBvbkRyYWdTdGFydDogbnVsbCxcbiAgICBvbkRyb3A6IG51bGwsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogbnVsbCxcbiAgICBvbkVtcHRpZWQ6IG51bGwsXG4gICAgb25FbmRlZDogbnVsbCxcbiAgICBvbkVycm9yOiBudWxsLFxuICAgIG9uRm9jdXM6IG51bGwsXG4gICAgb25Gb3JtRGF0YTogbnVsbCxcbiAgICBvbkhhc2hDaGFuZ2U6IG51bGwsXG4gICAgb25JbnB1dDogbnVsbCxcbiAgICBvbkludmFsaWQ6IG51bGwsXG4gICAgb25LZXlEb3duOiBudWxsLFxuICAgIG9uS2V5UHJlc3M6IG51bGwsXG4gICAgb25LZXlVcDogbnVsbCxcbiAgICBvbkxhbmd1YWdlQ2hhbmdlOiBudWxsLFxuICAgIG9uTG9hZDogbnVsbCxcbiAgICBvbkxvYWRlZERhdGE6IG51bGwsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogbnVsbCxcbiAgICBvbkxvYWRFbmQ6IG51bGwsXG4gICAgb25Mb2FkU3RhcnQ6IG51bGwsXG4gICAgb25NZXNzYWdlOiBudWxsLFxuICAgIG9uTWVzc2FnZUVycm9yOiBudWxsLFxuICAgIG9uTW91c2VEb3duOiBudWxsLFxuICAgIG9uTW91c2VFbnRlcjogbnVsbCxcbiAgICBvbk1vdXNlTGVhdmU6IG51bGwsXG4gICAgb25Nb3VzZU1vdmU6IG51bGwsXG4gICAgb25Nb3VzZU91dDogbnVsbCxcbiAgICBvbk1vdXNlT3ZlcjogbnVsbCxcbiAgICBvbk1vdXNlVXA6IG51bGwsXG4gICAgb25PZmZsaW5lOiBudWxsLFxuICAgIG9uT25saW5lOiBudWxsLFxuICAgIG9uUGFnZUhpZGU6IG51bGwsXG4gICAgb25QYWdlU2hvdzogbnVsbCxcbiAgICBvblBhc3RlOiBudWxsLFxuICAgIG9uUGF1c2U6IG51bGwsXG4gICAgb25QbGF5OiBudWxsLFxuICAgIG9uUGxheWluZzogbnVsbCxcbiAgICBvblBvcFN0YXRlOiBudWxsLFxuICAgIG9uUHJvZ3Jlc3M6IG51bGwsXG4gICAgb25SYXRlQ2hhbmdlOiBudWxsLFxuICAgIG9uUmVqZWN0aW9uSGFuZGxlZDogbnVsbCxcbiAgICBvblJlc2V0OiBudWxsLFxuICAgIG9uUmVzaXplOiBudWxsLFxuICAgIG9uU2Nyb2xsOiBudWxsLFxuICAgIG9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb246IG51bGwsXG4gICAgb25TZWVrZWQ6IG51bGwsXG4gICAgb25TZWVraW5nOiBudWxsLFxuICAgIG9uU2VsZWN0OiBudWxsLFxuICAgIG9uU3RhbGxlZDogbnVsbCxcbiAgICBvblN0b3JhZ2U6IG51bGwsXG4gICAgb25TdWJtaXQ6IG51bGwsXG4gICAgb25TdXNwZW5kOiBudWxsLFxuICAgIG9uVGltZVVwZGF0ZTogbnVsbCxcbiAgICBvblRvZ2dsZTogbnVsbCxcbiAgICBvblVuaGFuZGxlZFJlamVjdGlvbjogbnVsbCxcbiAgICBvblVubG9hZDogbnVsbCxcbiAgICBvblZvbHVtZUNoYW5nZTogbnVsbCxcbiAgICBvbldhaXRpbmc6IG51bGwsXG4gICAgb25XaGVlbDogbnVsbCxcbiAgICBvcGVuOiBib29sZWFuLFxuICAgIG9wdGltdW06IG51bWJlcixcbiAgICBwYXR0ZXJuOiBudWxsLFxuICAgIHBpbmc6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHBsYWNlaG9sZGVyOiBudWxsLFxuICAgIHBsYXlzSW5saW5lOiBib29sZWFuLFxuICAgIHBvc3RlcjogbnVsbCxcbiAgICBwcmVsb2FkOiBudWxsLFxuICAgIHJlYWRPbmx5OiBib29sZWFuLFxuICAgIHJlZmVycmVyUG9saWN5OiBudWxsLFxuICAgIHJlbDogc3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW4sXG4gICAgcmV2ZXJzZWQ6IGJvb2xlYW4sXG4gICAgcm93czogbnVtYmVyLFxuICAgIHJvd1NwYW46IG51bWJlcixcbiAgICBzYW5kYm94OiBzcGFjZVNlcGFyYXRlZCxcbiAgICBzY29wZTogbnVsbCxcbiAgICBzY29wZWQ6IGJvb2xlYW4sXG4gICAgc2VhbWxlc3M6IGJvb2xlYW4sXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgc2hhcGU6IG51bGwsXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIHNpemVzOiBudWxsLFxuICAgIHNsb3Q6IG51bGwsXG4gICAgc3BhbjogbnVtYmVyLFxuICAgIHNwZWxsQ2hlY2s6IGJvb2xlYW5pc2gsXG4gICAgc3JjOiBudWxsLFxuICAgIHNyY0RvYzogbnVsbCxcbiAgICBzcmNMYW5nOiBudWxsLFxuICAgIHNyY1NldDogY29tbWFTZXBhcmF0ZWQsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBzdGVwOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHRhYkluZGV4OiBudW1iZXIsXG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHRpdGxlOiBudWxsLFxuICAgIHRyYW5zbGF0ZTogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHR5cGVNdXN0TWF0Y2g6IGJvb2xlYW4sXG4gICAgdXNlTWFwOiBudWxsLFxuICAgIHZhbHVlOiBib29sZWFuaXNoLFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgd3JhcDogbnVsbCxcblxuICAgIC8vIExlZ2FjeS5cbiAgICAvLyBTZWU6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI290aGVyLWVsZW1lbnRzLC1hdHRyaWJ1dGVzLWFuZC1hcGlzXG4gICAgYWxpZ246IG51bGwsIC8vIFNldmVyYWwuIFVzZSBDU1MgYHRleHQtYWxpZ25gIGluc3RlYWQsXG4gICAgYUxpbms6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBhOmFjdGl2ZSB7Y29sb3J9YCBpbnN0ZWFkXG4gICAgYXJjaGl2ZTogc3BhY2VTZXBhcmF0ZWQsIC8vIGA8b2JqZWN0PmAuIExpc3Qgb2YgVVJJcyB0byBhcmNoaXZlc1xuICAgIGF4aXM6IG51bGwsIC8vIGA8dGQ+YCBhbmQgYDx0aD5gLiBVc2UgYHNjb3BlYCBvbiBgPHRoPmBcbiAgICBiYWNrZ3JvdW5kOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYmFja2dyb3VuZC1pbWFnZWAgaW5zdGVhZFxuICAgIGJnQ29sb3I6IG51bGwsIC8vIGA8Ym9keT5gIGFuZCB0YWJsZSBlbGVtZW50cy4gVXNlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgaW5zdGVhZFxuICAgIGJvcmRlcjogbnVtYmVyLCAvLyBgPHRhYmxlPmAuIFVzZSBDU1MgYGJvcmRlci13aWR0aGAgaW5zdGVhZCxcbiAgICBib3JkZXJDb2xvcjogbnVsbCwgLy8gYDx0YWJsZT5gLiBVc2UgQ1NTIGBib3JkZXItY29sb3JgIGluc3RlYWQsXG4gICAgYm90dG9tTWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgY2VsbFBhZGRpbmc6IG51bGwsIC8vIGA8dGFibGU+YFxuICAgIGNlbGxTcGFjaW5nOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBjaGFyOiBudWxsLCAvLyBTZXZlcmFsIHRhYmxlIGVsZW1lbnRzLiBXaGVuIGBhbGlnbj1jaGFyYCwgc2V0cyB0aGUgY2hhcmFjdGVyIHRvIGFsaWduIG9uXG4gICAgY2hhck9mZjogbnVsbCwgLy8gU2V2ZXJhbCB0YWJsZSBlbGVtZW50cy4gV2hlbiBgY2hhcmAsIG9mZnNldHMgdGhlIGFsaWdubWVudFxuICAgIGNsYXNzSWQ6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjbGVhcjogbnVsbCwgLy8gYDxicj5gLiBVc2UgQ1NTIGBjbGVhcmAgaW5zdGVhZFxuICAgIGNvZGU6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjb2RlQmFzZTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNvZGVUeXBlOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY29sb3I6IG51bGwsIC8vIGA8Zm9udD5gIGFuZCBgPGhyPmAuIFVzZSBDU1MgaW5zdGVhZFxuICAgIGNvbXBhY3Q6IGJvb2xlYW4sIC8vIExpc3RzLiBVc2UgQ1NTIHRvIHJlZHVjZSBzcGFjZSBiZXR3ZWVuIGl0ZW1zIGluc3RlYWRcbiAgICBkZWNsYXJlOiBib29sZWFuLCAvLyBgPG9iamVjdD5gXG4gICAgZXZlbnQ6IG51bGwsIC8vIGA8c2NyaXB0PmBcbiAgICBmYWNlOiBudWxsLCAvLyBgPGZvbnQ+YC4gVXNlIENTUyBpbnN0ZWFkXG4gICAgZnJhbWU6IG51bGwsIC8vIGA8dGFibGU+YFxuICAgIGZyYW1lQm9yZGVyOiBudWxsLCAvLyBgPGlmcmFtZT5gLiBVc2UgQ1NTIGBib3JkZXJgIGluc3RlYWRcbiAgICBoU3BhY2U6IG51bWJlciwgLy8gYDxpbWc+YCBhbmQgYDxvYmplY3Q+YFxuICAgIGxlZnRNYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBsaW5rOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYTpsaW5rIHtjb2xvcjogKn1gIGluc3RlYWRcbiAgICBsb25nRGVzYzogbnVsbCwgLy8gYDxmcmFtZT5gLCBgPGlmcmFtZT5gLCBhbmQgYDxpbWc+YC4gVXNlIGFuIGA8YT5gXG4gICAgbG93U3JjOiBudWxsLCAvLyBgPGltZz5gLiBVc2UgYSBgPHBpY3R1cmU+YFxuICAgIG1hcmdpbkhlaWdodDogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIG1hcmdpbldpZHRoOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgbm9SZXNpemU6IGJvb2xlYW4sIC8vIGA8ZnJhbWU+YFxuICAgIG5vSHJlZjogYm9vbGVhbiwgLy8gYDxhcmVhPmAuIFVzZSBubyBocmVmIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgYG5vaHJlZmBcbiAgICBub1NoYWRlOiBib29sZWFuLCAvLyBgPGhyPmAuIFVzZSBiYWNrZ3JvdW5kLWNvbG9yIGFuZCBoZWlnaHQgaW5zdGVhZCBvZiBib3JkZXJzXG4gICAgbm9XcmFwOiBib29sZWFuLCAvLyBgPHRkPmAgYW5kIGA8dGg+YFxuICAgIG9iamVjdDogbnVsbCwgLy8gYDxhcHBsZXQ+YFxuICAgIHByb2ZpbGU6IG51bGwsIC8vIGA8aGVhZD5gXG4gICAgcHJvbXB0OiBudWxsLCAvLyBgPGlzaW5kZXg+YFxuICAgIHJldjogbnVsbCwgLy8gYDxsaW5rPmBcbiAgICByaWdodE1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIHJ1bGVzOiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICBzY2hlbWU6IG51bGwsIC8vIGA8bWV0YT5gXG4gICAgc2Nyb2xsaW5nOiBib29sZWFuaXNoLCAvLyBgPGZyYW1lPmAuIFVzZSBvdmVyZmxvdyBpbiB0aGUgY2hpbGQgY29udGV4dFxuICAgIHN0YW5kYnk6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBzdW1tYXJ5OiBudWxsLCAvLyBgPHRhYmxlPmBcbiAgICB0ZXh0OiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgY29sb3JgIGluc3RlYWRcbiAgICB0b3BNYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICB2YWx1ZVR5cGU6IG51bGwsIC8vIGA8cGFyYW0+YFxuICAgIHZlcnNpb246IG51bGwsIC8vIGA8aHRtbD5gLiBVc2UgYSBkb2N0eXBlLlxuICAgIHZBbGlnbjogbnVsbCwgLy8gU2V2ZXJhbC4gVXNlIENTUyBgdmVydGljYWwtYWxpZ25gIGluc3RlYWRcbiAgICB2TGluazogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGE6dmlzaXRlZCB7Y29sb3J9YCBpbnN0ZWFkXG4gICAgdlNwYWNlOiBudW1iZXIsIC8vIGA8aW1nPmAgYW5kIGA8b2JqZWN0PmBcblxuICAgIC8vIE5vbi1zdGFuZGFyZCBQcm9wZXJ0aWVzLlxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiBudWxsLFxuICAgIGF1dG9Db3JyZWN0OiBudWxsLFxuICAgIGF1dG9TYXZlOiBudWxsLFxuICAgIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlOiBib29sZWFuLFxuICAgIHByZWZpeDogbnVsbCxcbiAgICBwcm9wZXJ0eTogbnVsbCxcbiAgICByZXN1bHRzOiBudW1iZXIsXG4gICAgc2VjdXJpdHk6IG51bGwsXG4gICAgdW5zZWxlY3RhYmxlOiBudWxsXG4gIH1cbn0pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG1lcmdlID0gcmVxdWlyZSgnLi9saWIvdXRpbC9tZXJnZScpXG52YXIgeGxpbmsgPSByZXF1aXJlKCcuL2xpYi94bGluaycpXG52YXIgeG1sID0gcmVxdWlyZSgnLi9saWIveG1sJylcbnZhciB4bWxucyA9IHJlcXVpcmUoJy4vbGliL3htbG5zJylcbnZhciBhcmlhID0gcmVxdWlyZSgnLi9saWIvYXJpYScpXG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vbGliL2h0bWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlKFt4bWwsIHhsaW5rLCB4bWxucywgYXJpYSwgaHRtbF0pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi91dGlsL3R5cGVzJylcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL3V0aWwvY3JlYXRlJylcbnZhciBjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtID0gcmVxdWlyZSgnLi91dGlsL2Nhc2Utc2Vuc2l0aXZlLXRyYW5zZm9ybScpXG5cbnZhciBib29sZWFuID0gdHlwZXMuYm9vbGVhblxudmFyIG51bWJlciA9IHR5cGVzLm51bWJlclxudmFyIHNwYWNlU2VwYXJhdGVkID0gdHlwZXMuc3BhY2VTZXBhcmF0ZWRcbnZhciBjb21tYVNlcGFyYXRlZCA9IHR5cGVzLmNvbW1hU2VwYXJhdGVkXG52YXIgY29tbWFPclNwYWNlU2VwYXJhdGVkID0gdHlwZXMuY29tbWFPclNwYWNlU2VwYXJhdGVkXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKHtcbiAgc3BhY2U6ICdzdmcnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG4gICAgYWxpZ25tZW50QmFzZWxpbmU6ICdhbGlnbm1lbnQtYmFzZWxpbmUnLFxuICAgIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9ybScsXG4gICAgYmFzZWxpbmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0JyxcbiAgICBjYXBIZWlnaHQ6ICdjYXAtaGVpZ2h0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICAgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcbiAgICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9uJyxcbiAgICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyxcbiAgICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxcbiAgICBjb2xvclJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsXG4gICAgY3Jvc3NPcmlnaW46ICdjcm9zc29yaWdpbicsXG4gICAgZGF0YVR5cGU6ICdkYXRhdHlwZScsXG4gICAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50LWJhc2VsaW5lJyxcbiAgICBlbmFibGVCYWNrZ3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLFxuICAgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgICBmaWxsUnVsZTogJ2ZpbGwtcnVsZScsXG4gICAgZmxvb2RDb2xvcjogJ2Zsb29kLWNvbG9yJyxcbiAgICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JyxcbiAgICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICAgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgICBmb250U2l6ZUFkanVzdDogJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICAgIGZvbnRTdHJldGNoOiAnZm9udC1zdHJldGNoJyxcbiAgICBmb250U3R5bGU6ICdmb250LXN0eWxlJyxcbiAgICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gICAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgICBnbHlwaE5hbWU6ICdnbHlwaC1uYW1lJyxcbiAgICBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnLFxuICAgIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgICBocmVmTGFuZzogJ2hyZWZsYW5nJyxcbiAgICBob3JpekFkdlg6ICdob3Jpei1hZHYteCcsXG4gICAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLFxuICAgIGhvcml6T3JpZ2luWTogJ2hvcml6LW9yaWdpbi15JyxcbiAgICBpbWFnZVJlbmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG4gICAgbGV0dGVyU3BhY2luZzogJ2xldHRlci1zcGFjaW5nJyxcbiAgICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmctY29sb3InLFxuICAgIG1hcmtlckVuZDogJ21hcmtlci1lbmQnLFxuICAgIG1hcmtlck1pZDogJ21hcmtlci1taWQnLFxuICAgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgICBuYXZEb3duOiAnbmF2LWRvd24nLFxuICAgIG5hdkRvd25MZWZ0OiAnbmF2LWRvd24tbGVmdCcsXG4gICAgbmF2RG93blJpZ2h0OiAnbmF2LWRvd24tcmlnaHQnLFxuICAgIG5hdkxlZnQ6ICduYXYtbGVmdCcsXG4gICAgbmF2TmV4dDogJ25hdi1uZXh0JyxcbiAgICBuYXZQcmV2OiAnbmF2LXByZXYnLFxuICAgIG5hdlJpZ2h0OiAnbmF2LXJpZ2h0JyxcbiAgICBuYXZVcDogJ25hdi11cCcsXG4gICAgbmF2VXBMZWZ0OiAnbmF2LXVwLWxlZnQnLFxuICAgIG5hdlVwUmlnaHQ6ICduYXYtdXAtcmlnaHQnLFxuICAgIG9uQWJvcnQ6ICdvbmFib3J0JyxcbiAgICBvbkFjdGl2YXRlOiAnb25hY3RpdmF0ZScsXG4gICAgb25BZnRlclByaW50OiAnb25hZnRlcnByaW50JyxcbiAgICBvbkJlZm9yZVByaW50OiAnb25iZWZvcmVwcmludCcsXG4gICAgb25CZWdpbjogJ29uYmVnaW4nLFxuICAgIG9uQ2FuY2VsOiAnb25jYW5jZWwnLFxuICAgIG9uQ2FuUGxheTogJ29uY2FucGxheScsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogJ29uY2FucGxheXRocm91Z2gnLFxuICAgIG9uQ2hhbmdlOiAnb25jaGFuZ2UnLFxuICAgIG9uQ2xpY2s6ICdvbmNsaWNrJyxcbiAgICBvbkNsb3NlOiAnb25jbG9zZScsXG4gICAgb25Db3B5OiAnb25jb3B5JyxcbiAgICBvbkN1ZUNoYW5nZTogJ29uY3VlY2hhbmdlJyxcbiAgICBvbkN1dDogJ29uY3V0JyxcbiAgICBvbkRibENsaWNrOiAnb25kYmxjbGljaycsXG4gICAgb25EcmFnOiAnb25kcmFnJyxcbiAgICBvbkRyYWdFbmQ6ICdvbmRyYWdlbmQnLFxuICAgIG9uRHJhZ0VudGVyOiAnb25kcmFnZW50ZXInLFxuICAgIG9uRHJhZ0V4aXQ6ICdvbmRyYWdleGl0JyxcbiAgICBvbkRyYWdMZWF2ZTogJ29uZHJhZ2xlYXZlJyxcbiAgICBvbkRyYWdPdmVyOiAnb25kcmFnb3ZlcicsXG4gICAgb25EcmFnU3RhcnQ6ICdvbmRyYWdzdGFydCcsXG4gICAgb25Ecm9wOiAnb25kcm9wJyxcbiAgICBvbkR1cmF0aW9uQ2hhbmdlOiAnb25kdXJhdGlvbmNoYW5nZScsXG4gICAgb25FbXB0aWVkOiAnb25lbXB0aWVkJyxcbiAgICBvbkVuZDogJ29uZW5kJyxcbiAgICBvbkVuZGVkOiAnb25lbmRlZCcsXG4gICAgb25FcnJvcjogJ29uZXJyb3InLFxuICAgIG9uRm9jdXM6ICdvbmZvY3VzJyxcbiAgICBvbkZvY3VzSW46ICdvbmZvY3VzaW4nLFxuICAgIG9uRm9jdXNPdXQ6ICdvbmZvY3Vzb3V0JyxcbiAgICBvbkhhc2hDaGFuZ2U6ICdvbmhhc2hjaGFuZ2UnLFxuICAgIG9uSW5wdXQ6ICdvbmlucHV0JyxcbiAgICBvbkludmFsaWQ6ICdvbmludmFsaWQnLFxuICAgIG9uS2V5RG93bjogJ29ua2V5ZG93bicsXG4gICAgb25LZXlQcmVzczogJ29ua2V5cHJlc3MnLFxuICAgIG9uS2V5VXA6ICdvbmtleXVwJyxcbiAgICBvbkxvYWQ6ICdvbmxvYWQnLFxuICAgIG9uTG9hZGVkRGF0YTogJ29ubG9hZGVkZGF0YScsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogJ29ubG9hZGVkbWV0YWRhdGEnLFxuICAgIG9uTG9hZFN0YXJ0OiAnb25sb2Fkc3RhcnQnLFxuICAgIG9uTWVzc2FnZTogJ29ubWVzc2FnZScsXG4gICAgb25Nb3VzZURvd246ICdvbm1vdXNlZG93bicsXG4gICAgb25Nb3VzZUVudGVyOiAnb25tb3VzZWVudGVyJyxcbiAgICBvbk1vdXNlTGVhdmU6ICdvbm1vdXNlbGVhdmUnLFxuICAgIG9uTW91c2VNb3ZlOiAnb25tb3VzZW1vdmUnLFxuICAgIG9uTW91c2VPdXQ6ICdvbm1vdXNlb3V0JyxcbiAgICBvbk1vdXNlT3ZlcjogJ29ubW91c2VvdmVyJyxcbiAgICBvbk1vdXNlVXA6ICdvbm1vdXNldXAnLFxuICAgIG9uTW91c2VXaGVlbDogJ29ubW91c2V3aGVlbCcsXG4gICAgb25PZmZsaW5lOiAnb25vZmZsaW5lJyxcbiAgICBvbk9ubGluZTogJ29ub25saW5lJyxcbiAgICBvblBhZ2VIaWRlOiAnb25wYWdlaGlkZScsXG4gICAgb25QYWdlU2hvdzogJ29ucGFnZXNob3cnLFxuICAgIG9uUGFzdGU6ICdvbnBhc3RlJyxcbiAgICBvblBhdXNlOiAnb25wYXVzZScsXG4gICAgb25QbGF5OiAnb25wbGF5JyxcbiAgICBvblBsYXlpbmc6ICdvbnBsYXlpbmcnLFxuICAgIG9uUG9wU3RhdGU6ICdvbnBvcHN0YXRlJyxcbiAgICBvblByb2dyZXNzOiAnb25wcm9ncmVzcycsXG4gICAgb25SYXRlQ2hhbmdlOiAnb25yYXRlY2hhbmdlJyxcbiAgICBvblJlcGVhdDogJ29ucmVwZWF0JyxcbiAgICBvblJlc2V0OiAnb25yZXNldCcsXG4gICAgb25SZXNpemU6ICdvbnJlc2l6ZScsXG4gICAgb25TY3JvbGw6ICdvbnNjcm9sbCcsXG4gICAgb25TZWVrZWQ6ICdvbnNlZWtlZCcsXG4gICAgb25TZWVraW5nOiAnb25zZWVraW5nJyxcbiAgICBvblNlbGVjdDogJ29uc2VsZWN0JyxcbiAgICBvblNob3c6ICdvbnNob3cnLFxuICAgIG9uU3RhbGxlZDogJ29uc3RhbGxlZCcsXG4gICAgb25TdG9yYWdlOiAnb25zdG9yYWdlJyxcbiAgICBvblN1Ym1pdDogJ29uc3VibWl0JyxcbiAgICBvblN1c3BlbmQ6ICdvbnN1c3BlbmQnLFxuICAgIG9uVGltZVVwZGF0ZTogJ29udGltZXVwZGF0ZScsXG4gICAgb25Ub2dnbGU6ICdvbnRvZ2dsZScsXG4gICAgb25VbmxvYWQ6ICdvbnVubG9hZCcsXG4gICAgb25Wb2x1bWVDaGFuZ2U6ICdvbnZvbHVtZWNoYW5nZScsXG4gICAgb25XYWl0aW5nOiAnb253YWl0aW5nJyxcbiAgICBvblpvb206ICdvbnpvb20nLFxuICAgIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlvbicsXG4gICAgb3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLFxuICAgIHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsXG4gICAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcbiAgICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLFxuICAgIHJlZmVycmVyUG9saWN5OiAncmVmZXJyZXJwb2xpY3knLFxuICAgIHJlbmRlcmluZ0ludGVudDogJ3JlbmRlcmluZy1pbnRlbnQnLFxuICAgIHNoYXBlUmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVyaW5nJyxcbiAgICBzdG9wQ29sb3I6ICdzdG9wLWNvbG9yJyxcbiAgICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsXG4gICAgc3RyaWtldGhyb3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbicsXG4gICAgc3RyaWtldGhyb3VnaFRoaWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcbiAgICBzdHJva2VEYXNoQXJyYXk6ICdzdHJva2UtZGFzaGFycmF5JyxcbiAgICBzdHJva2VEYXNoT2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICAgIHN0cm9rZUxpbmVDYXA6ICdzdHJva2UtbGluZWNhcCcsXG4gICAgc3Ryb2tlTGluZUpvaW46ICdzdHJva2UtbGluZWpvaW4nLFxuICAgIHN0cm9rZU1pdGVyTGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gICAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JyxcbiAgICBzdHJva2VXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4gICAgdGFiSW5kZXg6ICd0YWJpbmRleCcsXG4gICAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcbiAgICB0ZXh0RGVjb3JhdGlvbjogJ3RleHQtZGVjb3JhdGlvbicsXG4gICAgdGV4dFJlbmRlcmluZzogJ3RleHQtcmVuZGVyaW5nJyxcbiAgICB0eXBlT2Y6ICd0eXBlb2YnLFxuICAgIHVuZGVybGluZVBvc2l0aW9uOiAndW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxcbiAgICB1bmljb2RlQmlkaTogJ3VuaWNvZGUtYmlkaScsXG4gICAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScsXG4gICAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG4gICAgdkFscGhhYmV0aWM6ICd2LWFscGhhYmV0aWMnLFxuICAgIHZIYW5naW5nOiAndi1oYW5naW5nJyxcbiAgICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJyxcbiAgICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGljYWwnLFxuICAgIHZlY3RvckVmZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLFxuICAgIHZlcnRBZHZZOiAndmVydC1hZHYteScsXG4gICAgdmVydE9yaWdpblg6ICd2ZXJ0LW9yaWdpbi14JyxcbiAgICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLFxuICAgIHdvcmRTcGFjaW5nOiAnd29yZC1zcGFjaW5nJyxcbiAgICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG4gICAgeEhlaWdodDogJ3gtaGVpZ2h0JyxcbiAgICAvLyBUaGVzZSB3ZXJlIGNhbWVsY2FzZWQgaW4gVGlueS4gTm93IGxvd2VyY2FzZWQgaW4gU1ZHIDJcbiAgICBwbGF5YmFja09yZGVyOiAncGxheWJhY2tvcmRlcicsXG4gICAgdGltZWxpbmVCZWdpbjogJ3RpbWVsaW5lYmVnaW4nXG4gIH0sXG4gIHRyYW5zZm9ybTogY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgcHJvcGVydGllczoge1xuICAgIGFib3V0OiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgYWNjZW50SGVpZ2h0OiBudW1iZXIsXG4gICAgYWNjdW11bGF0ZTogbnVsbCxcbiAgICBhZGRpdGl2ZTogbnVsbCxcbiAgICBhbGlnbm1lbnRCYXNlbGluZTogbnVsbCxcbiAgICBhbHBoYWJldGljOiBudW1iZXIsXG4gICAgYW1wbGl0dWRlOiBudW1iZXIsXG4gICAgYXJhYmljRm9ybTogbnVsbCxcbiAgICBhc2NlbnQ6IG51bWJlcixcbiAgICBhdHRyaWJ1dGVOYW1lOiBudWxsLFxuICAgIGF0dHJpYnV0ZVR5cGU6IG51bGwsXG4gICAgYXppbXV0aDogbnVtYmVyLFxuICAgIGJhbmR3aWR0aDogbnVsbCxcbiAgICBiYXNlbGluZVNoaWZ0OiBudWxsLFxuICAgIGJhc2VGcmVxdWVuY3k6IG51bGwsXG4gICAgYmFzZVByb2ZpbGU6IG51bGwsXG4gICAgYmJveDogbnVsbCxcbiAgICBiZWdpbjogbnVsbCxcbiAgICBiaWFzOiBudW1iZXIsXG4gICAgYnk6IG51bGwsXG4gICAgY2FsY01vZGU6IG51bGwsXG4gICAgY2FwSGVpZ2h0OiBudW1iZXIsXG4gICAgY2xhc3NOYW1lOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBjbGlwOiBudWxsLFxuICAgIGNsaXBQYXRoOiBudWxsLFxuICAgIGNsaXBQYXRoVW5pdHM6IG51bGwsXG4gICAgY2xpcFJ1bGU6IG51bGwsXG4gICAgY29sb3I6IG51bGwsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uOiBudWxsLFxuICAgIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6IG51bGwsXG4gICAgY29sb3JQcm9maWxlOiBudWxsLFxuICAgIGNvbG9yUmVuZGVyaW5nOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudFNjcmlwdFR5cGU6IG51bGwsXG4gICAgY29udGVudFN0eWxlVHlwZTogbnVsbCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBjdXJzb3I6IG51bGwsXG4gICAgY3g6IG51bGwsXG4gICAgY3k6IG51bGwsXG4gICAgZDogbnVsbCxcbiAgICBkYXRhVHlwZTogbnVsbCxcbiAgICBkZWZhdWx0QWN0aW9uOiBudWxsLFxuICAgIGRlc2NlbnQ6IG51bWJlcixcbiAgICBkaWZmdXNlQ29uc3RhbnQ6IG51bWJlcixcbiAgICBkaXJlY3Rpb246IG51bGwsXG4gICAgZGlzcGxheTogbnVsbCxcbiAgICBkdXI6IG51bGwsXG4gICAgZGl2aXNvcjogbnVtYmVyLFxuICAgIGRvbWluYW50QmFzZWxpbmU6IG51bGwsXG4gICAgZG93bmxvYWQ6IGJvb2xlYW4sXG4gICAgZHg6IG51bGwsXG4gICAgZHk6IG51bGwsXG4gICAgZWRnZU1vZGU6IG51bGwsXG4gICAgZWRpdGFibGU6IG51bGwsXG4gICAgZWxldmF0aW9uOiBudW1iZXIsXG4gICAgZW5hYmxlQmFja2dyb3VuZDogbnVsbCxcbiAgICBlbmQ6IG51bGwsXG4gICAgZXZlbnQ6IG51bGwsXG4gICAgZXhwb25lbnQ6IG51bWJlcixcbiAgICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiBudWxsLFxuICAgIGZpbGw6IG51bGwsXG4gICAgZmlsbE9wYWNpdHk6IG51bWJlcixcbiAgICBmaWxsUnVsZTogbnVsbCxcbiAgICBmaWx0ZXI6IG51bGwsXG4gICAgZmlsdGVyUmVzOiBudWxsLFxuICAgIGZpbHRlclVuaXRzOiBudWxsLFxuICAgIGZsb29kQ29sb3I6IG51bGwsXG4gICAgZmxvb2RPcGFjaXR5OiBudWxsLFxuICAgIGZvY3VzYWJsZTogbnVsbCxcbiAgICBmb2N1c0hpZ2hsaWdodDogbnVsbCxcbiAgICBmb250RmFtaWx5OiBudWxsLFxuICAgIGZvbnRTaXplOiBudWxsLFxuICAgIGZvbnRTaXplQWRqdXN0OiBudWxsLFxuICAgIGZvbnRTdHJldGNoOiBudWxsLFxuICAgIGZvbnRTdHlsZTogbnVsbCxcbiAgICBmb250VmFyaWFudDogbnVsbCxcbiAgICBmb250V2VpZ2h0OiBudWxsLFxuICAgIGZvcm1hdDogbnVsbCxcbiAgICBmcjogbnVsbCxcbiAgICBmcm9tOiBudWxsLFxuICAgIGZ4OiBudWxsLFxuICAgIGZ5OiBudWxsLFxuICAgIGcxOiBjb21tYVNlcGFyYXRlZCxcbiAgICBnMjogY29tbWFTZXBhcmF0ZWQsXG4gICAgZ2x5cGhOYW1lOiBjb21tYVNlcGFyYXRlZCxcbiAgICBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDogbnVsbCxcbiAgICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6IG51bGwsXG4gICAgZ2x5cGhSZWY6IG51bGwsXG4gICAgZ3JhZGllbnRUcmFuc2Zvcm06IG51bGwsXG4gICAgZ3JhZGllbnRVbml0czogbnVsbCxcbiAgICBoYW5kbGVyOiBudWxsLFxuICAgIGhhbmdpbmc6IG51bWJlcixcbiAgICBoYXRjaENvbnRlbnRVbml0czogbnVsbCxcbiAgICBoYXRjaFVuaXRzOiBudWxsLFxuICAgIGhlaWdodDogbnVsbCxcbiAgICBocmVmOiBudWxsLFxuICAgIGhyZWZMYW5nOiBudWxsLFxuICAgIGhvcml6QWR2WDogbnVtYmVyLFxuICAgIGhvcml6T3JpZ2luWDogbnVtYmVyLFxuICAgIGhvcml6T3JpZ2luWTogbnVtYmVyLFxuICAgIGlkOiBudWxsLFxuICAgIGlkZW9ncmFwaGljOiBudW1iZXIsXG4gICAgaW1hZ2VSZW5kZXJpbmc6IG51bGwsXG4gICAgaW5pdGlhbFZpc2liaWxpdHk6IG51bGwsXG4gICAgaW46IG51bGwsXG4gICAgaW4yOiBudWxsLFxuICAgIGludGVyY2VwdDogbnVtYmVyLFxuICAgIGs6IG51bWJlcixcbiAgICBrMTogbnVtYmVyLFxuICAgIGsyOiBudW1iZXIsXG4gICAgazM6IG51bWJlcixcbiAgICBrNDogbnVtYmVyLFxuICAgIGtlcm5lbE1hdHJpeDogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIGtlcm5lbFVuaXRMZW5ndGg6IG51bGwsXG4gICAga2V5UG9pbnRzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtleVNwbGluZXM6IG51bGwsIC8vIFNFTUlfQ09MT05fU0VQQVJBVEVEXG4gICAga2V5VGltZXM6IG51bGwsIC8vIFNFTUlfQ09MT05fU0VQQVJBVEVEXG4gICAga2VybmluZzogbnVsbCxcbiAgICBsYW5nOiBudWxsLFxuICAgIGxlbmd0aEFkanVzdDogbnVsbCxcbiAgICBsZXR0ZXJTcGFjaW5nOiBudWxsLFxuICAgIGxpZ2h0aW5nQ29sb3I6IG51bGwsXG4gICAgbGltaXRpbmdDb25lQW5nbGU6IG51bWJlcixcbiAgICBsb2NhbDogbnVsbCxcbiAgICBtYXJrZXJFbmQ6IG51bGwsXG4gICAgbWFya2VyTWlkOiBudWxsLFxuICAgIG1hcmtlclN0YXJ0OiBudWxsLFxuICAgIG1hcmtlckhlaWdodDogbnVsbCxcbiAgICBtYXJrZXJVbml0czogbnVsbCxcbiAgICBtYXJrZXJXaWR0aDogbnVsbCxcbiAgICBtYXNrOiBudWxsLFxuICAgIG1hc2tDb250ZW50VW5pdHM6IG51bGwsXG4gICAgbWFza1VuaXRzOiBudWxsLFxuICAgIG1hdGhlbWF0aWNhbDogbnVsbCxcbiAgICBtYXg6IG51bGwsXG4gICAgbWVkaWE6IG51bGwsXG4gICAgbWVkaWFDaGFyYWN0ZXJFbmNvZGluZzogbnVsbCxcbiAgICBtZWRpYUNvbnRlbnRFbmNvZGluZ3M6IG51bGwsXG4gICAgbWVkaWFTaXplOiBudW1iZXIsXG4gICAgbWVkaWFUaW1lOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbW9kZTogbnVsbCxcbiAgICBuYW1lOiBudWxsLFxuICAgIG5hdkRvd246IG51bGwsXG4gICAgbmF2RG93bkxlZnQ6IG51bGwsXG4gICAgbmF2RG93blJpZ2h0OiBudWxsLFxuICAgIG5hdkxlZnQ6IG51bGwsXG4gICAgbmF2TmV4dDogbnVsbCxcbiAgICBuYXZQcmV2OiBudWxsLFxuICAgIG5hdlJpZ2h0OiBudWxsLFxuICAgIG5hdlVwOiBudWxsLFxuICAgIG5hdlVwTGVmdDogbnVsbCxcbiAgICBuYXZVcFJpZ2h0OiBudWxsLFxuICAgIG51bU9jdGF2ZXM6IG51bGwsXG4gICAgb2JzZXJ2ZXI6IG51bGwsXG4gICAgb2Zmc2V0OiBudWxsLFxuICAgIG9uQWJvcnQ6IG51bGwsXG4gICAgb25BY3RpdmF0ZTogbnVsbCxcbiAgICBvbkFmdGVyUHJpbnQ6IG51bGwsXG4gICAgb25CZWZvcmVQcmludDogbnVsbCxcbiAgICBvbkJlZ2luOiBudWxsLFxuICAgIG9uQ2FuY2VsOiBudWxsLFxuICAgIG9uQ2FuUGxheTogbnVsbCxcbiAgICBvbkNhblBsYXlUaHJvdWdoOiBudWxsLFxuICAgIG9uQ2hhbmdlOiBudWxsLFxuICAgIG9uQ2xpY2s6IG51bGwsXG4gICAgb25DbG9zZTogbnVsbCxcbiAgICBvbkNvcHk6IG51bGwsXG4gICAgb25DdWVDaGFuZ2U6IG51bGwsXG4gICAgb25DdXQ6IG51bGwsXG4gICAgb25EYmxDbGljazogbnVsbCxcbiAgICBvbkRyYWc6IG51bGwsXG4gICAgb25EcmFnRW5kOiBudWxsLFxuICAgIG9uRHJhZ0VudGVyOiBudWxsLFxuICAgIG9uRHJhZ0V4aXQ6IG51bGwsXG4gICAgb25EcmFnTGVhdmU6IG51bGwsXG4gICAgb25EcmFnT3ZlcjogbnVsbCxcbiAgICBvbkRyYWdTdGFydDogbnVsbCxcbiAgICBvbkRyb3A6IG51bGwsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogbnVsbCxcbiAgICBvbkVtcHRpZWQ6IG51bGwsXG4gICAgb25FbmQ6IG51bGwsXG4gICAgb25FbmRlZDogbnVsbCxcbiAgICBvbkVycm9yOiBudWxsLFxuICAgIG9uRm9jdXM6IG51bGwsXG4gICAgb25Gb2N1c0luOiBudWxsLFxuICAgIG9uRm9jdXNPdXQ6IG51bGwsXG4gICAgb25IYXNoQ2hhbmdlOiBudWxsLFxuICAgIG9uSW5wdXQ6IG51bGwsXG4gICAgb25JbnZhbGlkOiBudWxsLFxuICAgIG9uS2V5RG93bjogbnVsbCxcbiAgICBvbktleVByZXNzOiBudWxsLFxuICAgIG9uS2V5VXA6IG51bGwsXG4gICAgb25Mb2FkOiBudWxsLFxuICAgIG9uTG9hZGVkRGF0YTogbnVsbCxcbiAgICBvbkxvYWRlZE1ldGFkYXRhOiBudWxsLFxuICAgIG9uTG9hZFN0YXJ0OiBudWxsLFxuICAgIG9uTWVzc2FnZTogbnVsbCxcbiAgICBvbk1vdXNlRG93bjogbnVsbCxcbiAgICBvbk1vdXNlRW50ZXI6IG51bGwsXG4gICAgb25Nb3VzZUxlYXZlOiBudWxsLFxuICAgIG9uTW91c2VNb3ZlOiBudWxsLFxuICAgIG9uTW91c2VPdXQ6IG51bGwsXG4gICAgb25Nb3VzZU92ZXI6IG51bGwsXG4gICAgb25Nb3VzZVVwOiBudWxsLFxuICAgIG9uTW91c2VXaGVlbDogbnVsbCxcbiAgICBvbk9mZmxpbmU6IG51bGwsXG4gICAgb25PbmxpbmU6IG51bGwsXG4gICAgb25QYWdlSGlkZTogbnVsbCxcbiAgICBvblBhZ2VTaG93OiBudWxsLFxuICAgIG9uUGFzdGU6IG51bGwsXG4gICAgb25QYXVzZTogbnVsbCxcbiAgICBvblBsYXk6IG51bGwsXG4gICAgb25QbGF5aW5nOiBudWxsLFxuICAgIG9uUG9wU3RhdGU6IG51bGwsXG4gICAgb25Qcm9ncmVzczogbnVsbCxcbiAgICBvblJhdGVDaGFuZ2U6IG51bGwsXG4gICAgb25SZXBlYXQ6IG51bGwsXG4gICAgb25SZXNldDogbnVsbCxcbiAgICBvblJlc2l6ZTogbnVsbCxcbiAgICBvblNjcm9sbDogbnVsbCxcbiAgICBvblNlZWtlZDogbnVsbCxcbiAgICBvblNlZWtpbmc6IG51bGwsXG4gICAgb25TZWxlY3Q6IG51bGwsXG4gICAgb25TaG93OiBudWxsLFxuICAgIG9uU3RhbGxlZDogbnVsbCxcbiAgICBvblN0b3JhZ2U6IG51bGwsXG4gICAgb25TdWJtaXQ6IG51bGwsXG4gICAgb25TdXNwZW5kOiBudWxsLFxuICAgIG9uVGltZVVwZGF0ZTogbnVsbCxcbiAgICBvblRvZ2dsZTogbnVsbCxcbiAgICBvblVubG9hZDogbnVsbCxcbiAgICBvblZvbHVtZUNoYW5nZTogbnVsbCxcbiAgICBvbldhaXRpbmc6IG51bGwsXG4gICAgb25ab29tOiBudWxsLFxuICAgIG9wYWNpdHk6IG51bGwsXG4gICAgb3BlcmF0b3I6IG51bGwsXG4gICAgb3JkZXI6IG51bGwsXG4gICAgb3JpZW50OiBudWxsLFxuICAgIG9yaWVudGF0aW9uOiBudWxsLFxuICAgIG9yaWdpbjogbnVsbCxcbiAgICBvdmVyZmxvdzogbnVsbCxcbiAgICBvdmVybGF5OiBudWxsLFxuICAgIG92ZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICBvdmVybGluZVRoaWNrbmVzczogbnVtYmVyLFxuICAgIHBhaW50T3JkZXI6IG51bGwsXG4gICAgcGFub3NlMTogbnVsbCxcbiAgICBwYXRoOiBudWxsLFxuICAgIHBhdGhMZW5ndGg6IG51bWJlcixcbiAgICBwYXR0ZXJuQ29udGVudFVuaXRzOiBudWxsLFxuICAgIHBhdHRlcm5UcmFuc2Zvcm06IG51bGwsXG4gICAgcGF0dGVyblVuaXRzOiBudWxsLFxuICAgIHBoYXNlOiBudWxsLFxuICAgIHBpbmc6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHBpdGNoOiBudWxsLFxuICAgIHBsYXliYWNrT3JkZXI6IG51bGwsXG4gICAgcG9pbnRlckV2ZW50czogbnVsbCxcbiAgICBwb2ludHM6IG51bGwsXG4gICAgcG9pbnRzQXRYOiBudW1iZXIsXG4gICAgcG9pbnRzQXRZOiBudW1iZXIsXG4gICAgcG9pbnRzQXRaOiBudW1iZXIsXG4gICAgcHJlc2VydmVBbHBoYTogbnVsbCxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBudWxsLFxuICAgIHByaW1pdGl2ZVVuaXRzOiBudWxsLFxuICAgIHByb3BhZ2F0ZTogbnVsbCxcbiAgICBwcm9wZXJ0eTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHI6IG51bGwsXG4gICAgcmFkaXVzOiBudWxsLFxuICAgIHJlZmVycmVyUG9saWN5OiBudWxsLFxuICAgIHJlZlg6IG51bGwsXG4gICAgcmVmWTogbnVsbCxcbiAgICByZWw6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXY6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZW5kZXJpbmdJbnRlbnQ6IG51bGwsXG4gICAgcmVwZWF0Q291bnQ6IG51bGwsXG4gICAgcmVwZWF0RHVyOiBudWxsLFxuICAgIHJlcXVpcmVkRXh0ZW5zaW9uczogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkRmVhdHVyZXM6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXF1aXJlZEZvbnRzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWRGb3JtYXRzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVzb3VyY2U6IG51bGwsXG4gICAgcmVzdGFydDogbnVsbCxcbiAgICByZXN1bHQ6IG51bGwsXG4gICAgcm90YXRlOiBudWxsLFxuICAgIHJ4OiBudWxsLFxuICAgIHJ5OiBudWxsLFxuICAgIHNjYWxlOiBudWxsLFxuICAgIHNlZWQ6IG51bGwsXG4gICAgc2hhcGVSZW5kZXJpbmc6IG51bGwsXG4gICAgc2lkZTogbnVsbCxcbiAgICBzbG9wZTogbnVsbCxcbiAgICBzbmFwc2hvdFRpbWU6IG51bGwsXG4gICAgc3BlY3VsYXJDb25zdGFudDogbnVtYmVyLFxuICAgIHNwZWN1bGFyRXhwb25lbnQ6IG51bWJlcixcbiAgICBzcHJlYWRNZXRob2Q6IG51bGwsXG4gICAgc3BhY2luZzogbnVsbCxcbiAgICBzdGFydE9mZnNldDogbnVsbCxcbiAgICBzdGREZXZpYXRpb246IG51bGwsXG4gICAgc3RlbWg6IG51bGwsXG4gICAgc3RlbXY6IG51bGwsXG4gICAgc3RpdGNoVGlsZXM6IG51bGwsXG4gICAgc3RvcENvbG9yOiBudWxsLFxuICAgIHN0b3BPcGFjaXR5OiBudWxsLFxuICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogbnVtYmVyLFxuICAgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6IG51bWJlcixcbiAgICBzdHJpbmc6IG51bGwsXG4gICAgc3Ryb2tlOiBudWxsLFxuICAgIHN0cm9rZURhc2hBcnJheTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHN0cm9rZURhc2hPZmZzZXQ6IG51bGwsXG4gICAgc3Ryb2tlTGluZUNhcDogbnVsbCxcbiAgICBzdHJva2VMaW5lSm9pbjogbnVsbCxcbiAgICBzdHJva2VNaXRlckxpbWl0OiBudW1iZXIsXG4gICAgc3Ryb2tlT3BhY2l0eTogbnVtYmVyLFxuICAgIHN0cm9rZVdpZHRoOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHN1cmZhY2VTY2FsZTogbnVtYmVyLFxuICAgIHN5bmNCZWhhdmlvcjogbnVsbCxcbiAgICBzeW5jQmVoYXZpb3JEZWZhdWx0OiBudWxsLFxuICAgIHN5bmNNYXN0ZXI6IG51bGwsXG4gICAgc3luY1RvbGVyYW5jZTogbnVsbCxcbiAgICBzeW5jVG9sZXJhbmNlRGVmYXVsdDogbnVsbCxcbiAgICBzeXN0ZW1MYW5ndWFnZTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHRhYkluZGV4OiBudW1iZXIsXG4gICAgdGFibGVWYWx1ZXM6IG51bGwsXG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHRhcmdldFg6IG51bWJlcixcbiAgICB0YXJnZXRZOiBudW1iZXIsXG4gICAgdGV4dEFuY2hvcjogbnVsbCxcbiAgICB0ZXh0RGVjb3JhdGlvbjogbnVsbCxcbiAgICB0ZXh0UmVuZGVyaW5nOiBudWxsLFxuICAgIHRleHRMZW5ndGg6IG51bGwsXG4gICAgdGltZWxpbmVCZWdpbjogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2Zvcm1CZWhhdmlvcjogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHR5cGVPZjogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHRvOiBudWxsLFxuICAgIHRyYW5zZm9ybTogbnVsbCxcbiAgICB1MTogbnVsbCxcbiAgICB1MjogbnVsbCxcbiAgICB1bmRlcmxpbmVQb3NpdGlvbjogbnVtYmVyLFxuICAgIHVuZGVybGluZVRoaWNrbmVzczogbnVtYmVyLFxuICAgIHVuaWNvZGU6IG51bGwsXG4gICAgdW5pY29kZUJpZGk6IG51bGwsXG4gICAgdW5pY29kZVJhbmdlOiBudWxsLFxuICAgIHVuaXRzUGVyRW06IG51bWJlcixcbiAgICB2YWx1ZXM6IG51bGwsXG4gICAgdkFscGhhYmV0aWM6IG51bWJlcixcbiAgICB2TWF0aGVtYXRpY2FsOiBudW1iZXIsXG4gICAgdmVjdG9yRWZmZWN0OiBudWxsLFxuICAgIHZIYW5naW5nOiBudW1iZXIsXG4gICAgdklkZW9ncmFwaGljOiBudW1iZXIsXG4gICAgdmVyc2lvbjogbnVsbCxcbiAgICB2ZXJ0QWR2WTogbnVtYmVyLFxuICAgIHZlcnRPcmlnaW5YOiBudW1iZXIsXG4gICAgdmVydE9yaWdpblk6IG51bWJlcixcbiAgICB2aWV3Qm94OiBudWxsLFxuICAgIHZpZXdUYXJnZXQ6IG51bGwsXG4gICAgdmlzaWJpbGl0eTogbnVsbCxcbiAgICB3aWR0aDogbnVsbCxcbiAgICB3aWR0aHM6IG51bGwsXG4gICAgd29yZFNwYWNpbmc6IG51bGwsXG4gICAgd3JpdGluZ01vZGU6IG51bGwsXG4gICAgeDogbnVsbCxcbiAgICB4MTogbnVsbCxcbiAgICB4MjogbnVsbCxcbiAgICB4Q2hhbm5lbFNlbGVjdG9yOiBudWxsLFxuICAgIHhIZWlnaHQ6IG51bWJlcixcbiAgICB5OiBudWxsLFxuICAgIHkxOiBudWxsLFxuICAgIHkyOiBudWxsLFxuICAgIHlDaGFubmVsU2VsZWN0b3I6IG51bGwsXG4gICAgejogbnVsbCxcbiAgICB6b29tQW5kUGFuOiBudWxsXG4gIH1cbn0pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG1lcmdlID0gcmVxdWlyZSgnLi9saWIvdXRpbC9tZXJnZScpXG52YXIgeGxpbmsgPSByZXF1aXJlKCcuL2xpYi94bGluaycpXG52YXIgeG1sID0gcmVxdWlyZSgnLi9saWIveG1sJylcbnZhciB4bWxucyA9IHJlcXVpcmUoJy4vbGliL3htbG5zJylcbnZhciBhcmlhID0gcmVxdWlyZSgnLi9saWIvYXJpYScpXG52YXIgc3ZnID0gcmVxdWlyZSgnLi9saWIvc3ZnJylcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZShbeG1sLCB4bGluaywgeG1sbnMsIGFyaWEsIHN2Z10pXG4iLCIndXNlIHN0cmljdCdcblxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4vbm9ybWFsaXplJylcbnZhciBEZWZpbmVkSW5mbyA9IHJlcXVpcmUoJy4vbGliL3V0aWwvZGVmaW5lZC1pbmZvJylcbnZhciBJbmZvID0gcmVxdWlyZSgnLi9saWIvdXRpbC9pbmZvJylcblxudmFyIGRhdGEgPSAnZGF0YSdcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kXG5cbnZhciB2YWxpZCA9IC9eZGF0YVstYS16MC05LjpfXSskL2lcbnZhciBkYXNoID0gLy1bYS16XS9nXG52YXIgY2FwID0gL1tBLVpdL2dcblxuZnVuY3Rpb24gZmluZChzY2hlbWEsIHZhbHVlKSB7XG4gIHZhciBub3JtYWwgPSBub3JtYWxpemUodmFsdWUpXG4gIHZhciBwcm9wID0gdmFsdWVcbiAgdmFyIFR5cGUgPSBJbmZvXG5cbiAgaWYgKG5vcm1hbCBpbiBzY2hlbWEubm9ybWFsKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5wcm9wZXJ0eVtzY2hlbWEubm9ybWFsW25vcm1hbF1dXG4gIH1cblxuICBpZiAobm9ybWFsLmxlbmd0aCA+IDQgJiYgbm9ybWFsLnNsaWNlKDAsIDQpID09PSBkYXRhICYmIHZhbGlkLnRlc3QodmFsdWUpKSB7XG4gICAgLy8gQXR0cmlidXRlIG9yIHByb3BlcnR5LlxuICAgIGlmICh2YWx1ZS5jaGFyQXQoNCkgPT09ICctJykge1xuICAgICAgcHJvcCA9IGRhdGFzZXRUb1Byb3BlcnR5KHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGRhdGFzZXRUb0F0dHJpYnV0ZSh2YWx1ZSlcbiAgICB9XG5cbiAgICBUeXBlID0gRGVmaW5lZEluZm9cbiAgfVxuXG4gIHJldHVybiBuZXcgVHlwZShwcm9wLCB2YWx1ZSlcbn1cblxuZnVuY3Rpb24gZGF0YXNldFRvUHJvcGVydHkoYXR0cmlidXRlKSB7XG4gIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZS5zbGljZSg1KS5yZXBsYWNlKGRhc2gsIGNhbWVsY2FzZSlcbiAgcmV0dXJuIGRhdGEgKyB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRUb0F0dHJpYnV0ZShwcm9wZXJ0eSkge1xuICB2YXIgdmFsdWUgPSBwcm9wZXJ0eS5zbGljZSg0KVxuXG4gIGlmIChkYXNoLnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5XG4gIH1cblxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoY2FwLCBrZWJhYilcblxuICBpZiAodmFsdWUuY2hhckF0KDApICE9PSAnLScpIHtcbiAgICB2YWx1ZSA9ICctJyArIHZhbHVlXG4gIH1cblxuICByZXR1cm4gZGF0YSArIHZhbHVlXG59XG5cbmZ1bmN0aW9uIGtlYmFiKCQwKSB7XG4gIHJldHVybiAnLScgKyAkMC50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIGNhbWVsY2FzZSgkMCkge1xuICByZXR1cm4gJDAuY2hhckF0KDEpLnRvVXBwZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5cbnZhciBudW1iZXJTaWduID0gMzUgLy8gICcjJ1xudmFyIGRvdCA9IDQ2IC8vICAnLidcblxuLy8gQ3JlYXRlIGEgaGFzdCBlbGVtZW50IGZyb20gYSBzaW1wbGUgQ1NTIHNlbGVjdG9yLlxuZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IsIGRlZmF1bHRUYWdOYW1lKSB7XG4gIHZhciB2YWx1ZSA9IHNlbGVjdG9yIHx8ICcnXG4gIHZhciBuYW1lID0gZGVmYXVsdFRhZ05hbWUgfHwgJ2RpdidcbiAgdmFyIHByb3BzID0ge31cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgY2xhc3NOYW1lXG4gIHZhciB0eXBlXG4gIHZhciBjb2RlXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbGFzdEluZGV4XG5cbiAgd2hpbGUgKCsraW5kZXggPD0gbGVuZ3RoKSB7XG4gICAgY29kZSA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpXG5cbiAgICBpZiAoIWNvZGUgfHwgY29kZSA9PT0gZG90IHx8IGNvZGUgPT09IG51bWJlclNpZ24pIHtcbiAgICAgIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UobGFzdEluZGV4LCBpbmRleClcblxuICAgICAgaWYgKHN1YnZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlID09PSBkb3QpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWRlcHRoXG4gICAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3NOYW1lLnB1c2goc3VidmFsdWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IFtzdWJ2YWx1ZV1cbiAgICAgICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBudW1iZXJTaWduKSB7XG4gICAgICAgICAgcHJvcHMuaWQgPSBzdWJ2YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSBzdWJ2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMVxuICAgICAgdHlwZSA9IGNvZGVcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICB0YWdOYW1lOiBuYW1lLFxuICAgIHByb3BlcnRpZXM6IHByb3BzLFxuICAgIGNoaWxkcmVuOiBbXVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5leHBvcnRzLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVxuXG52YXIgZW1wdHkgPSAnJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgd2hpdGVTcGFjZSA9IC9bIFxcdFxcblxcclxcZl0rL2dcblxuZnVuY3Rpb24gcGFyc2UodmFsdWUpIHtcbiAgdmFyIGlucHV0ID0gU3RyaW5nKHZhbHVlIHx8IGVtcHR5KS50cmltKClcbiAgcmV0dXJuIGlucHV0ID09PSBlbXB0eSA/IFtdIDogaW5wdXQuc3BsaXQod2hpdGVTcGFjZSlcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlcykge1xuICByZXR1cm4gdmFsdWVzLmpvaW4oc3BhY2UpLnRyaW0oKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxudmFyIGNvbW1hID0gJywnXG52YXIgc3BhY2UgPSAnICdcbnZhciBlbXB0eSA9ICcnXG5cbi8vIFBhcnNlIGNvbW1hLXNlcGFyYXRlZCB0b2tlbnMgdG8gYW4gYXJyYXkuXG5mdW5jdGlvbiBwYXJzZSh2YWx1ZSkge1xuICB2YXIgdmFsdWVzID0gW11cbiAgdmFyIGlucHV0ID0gU3RyaW5nKHZhbHVlIHx8IGVtcHR5KVxuICB2YXIgaW5kZXggPSBpbnB1dC5pbmRleE9mKGNvbW1hKVxuICB2YXIgbGFzdEluZGV4ID0gMFxuICB2YXIgZW5kID0gZmFsc2VcbiAgdmFyIHZhbFxuXG4gIHdoaWxlICghZW5kKSB7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBpbnB1dC5sZW5ndGhcbiAgICAgIGVuZCA9IHRydWVcbiAgICB9XG5cbiAgICB2YWwgPSBpbnB1dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KS50cmltKClcblxuICAgIGlmICh2YWwgfHwgIWVuZCkge1xuICAgICAgdmFsdWVzLnB1c2godmFsKVxuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMVxuICAgIGluZGV4ID0gaW5wdXQuaW5kZXhPZihjb21tYSwgbGFzdEluZGV4KVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlc1xufVxuXG4vLyBDb21waWxlIGFuIGFycmF5IHRvIGNvbW1hLXNlcGFyYXRlZCB0b2tlbnMuXG4vLyBgb3B0aW9ucy5wYWRMZWZ0YCAoZGVmYXVsdDogYHRydWVgKSBwYWRzIGEgc3BhY2UgbGVmdCBvZiBlYWNoIHRva2VuLCBhbmRcbi8vIGBvcHRpb25zLnBhZFJpZ2h0YCAoZGVmYXVsdDogYGZhbHNlYCkgcGFkcyBhIHNwYWNlIHRvIHRoZSByaWdodCBvZiBlYWNoIHRva2VuLlxuZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlcywgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBsZWZ0ID0gc2V0dGluZ3MucGFkTGVmdCA9PT0gZmFsc2UgPyBlbXB0eSA6IHNwYWNlXG4gIHZhciByaWdodCA9IHNldHRpbmdzLnBhZFJpZ2h0ID8gc3BhY2UgOiBlbXB0eVxuXG4gIC8vIEVuc3VyZSB0aGUgbGFzdCBlbXB0eSBlbnRyeSBpcyBzZWVuLlxuICBpZiAodmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXSA9PT0gZW1wdHkpIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KGVtcHR5KVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKHJpZ2h0ICsgY29tbWEgKyBsZWZ0KS50cmltKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL25vcm1hbGl6ZScpXG52YXIgcGFyc2VTZWxlY3RvciA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1wYXJzZS1zZWxlY3RvcicpXG52YXIgc3BhY2VzID0gcmVxdWlyZSgnc3BhY2Utc2VwYXJhdGVkLXRva2VucycpLnBhcnNlXG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpLnBhcnNlXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuZnVuY3Rpb24gZmFjdG9yeShzY2hlbWEsIGRlZmF1bHRUYWdOYW1lLCBjYXNlU2Vuc2l0aXZlKSB7XG4gIHZhciBhZGp1c3QgPSBjYXNlU2Vuc2l0aXZlID8gY3JlYXRlQWRqdXN0TWFwKGNhc2VTZW5zaXRpdmUpIDogbnVsbFxuXG4gIHJldHVybiBoXG5cbiAgLy8gSHlwZXJzY3JpcHQgY29tcGF0aWJsZSBEU0wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgaGFzdCB0cmVlcy5cbiAgZnVuY3Rpb24gaChzZWxlY3RvciwgcHJvcGVydGllcykge1xuICAgIHZhciBub2RlID0gcGFyc2VTZWxlY3RvcihzZWxlY3RvciwgZGVmYXVsdFRhZ05hbWUpXG4gICAgdmFyIGNoaWxkcmVuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKVxuICAgIHZhciBuYW1lID0gbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKClcbiAgICB2YXIgcHJvcGVydHlcblxuICAgIG5vZGUudGFnTmFtZSA9IGFkanVzdCAmJiBvd24uY2FsbChhZGp1c3QsIG5hbWUpID8gYWRqdXN0W25hbWVdIDogbmFtZVxuXG4gICAgaWYgKHByb3BlcnRpZXMgJiYgaXNDaGlsZHJlbihwcm9wZXJ0aWVzLCBub2RlKSkge1xuICAgICAgY2hpbGRyZW4udW5zaGlmdChwcm9wZXJ0aWVzKVxuICAgICAgcHJvcGVydGllcyA9IG51bGxcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgZm9yIChwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGFkZFByb3BlcnR5KG5vZGUucHJvcGVydGllcywgcHJvcGVydHksIHByb3BlcnRpZXNbcHJvcGVydHldKVxuICAgICAgfVxuICAgIH1cblxuICAgIGFkZENoaWxkKG5vZGUuY2hpbGRyZW4sIGNoaWxkcmVuKVxuXG4gICAgaWYgKG5vZGUudGFnTmFtZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgbm9kZS5jb250ZW50ID0ge3R5cGU6ICdyb290JywgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW59XG4gICAgICBub2RlLmNoaWxkcmVuID0gW11cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkUHJvcGVydHkocHJvcGVydGllcywga2V5LCB2YWx1ZSkge1xuICAgIHZhciBpbmZvXG4gICAgdmFyIHByb3BlcnR5XG4gICAgdmFyIHJlc3VsdFxuXG4gICAgLy8gSWdub3JlIG51bGx5IGFuZCBOYU4gdmFsdWVzLlxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaW5mbyA9IGZpbmQoc2NoZW1hLCBrZXkpXG4gICAgcHJvcGVydHkgPSBpbmZvLnByb3BlcnR5XG4gICAgcmVzdWx0ID0gdmFsdWVcblxuICAgIC8vIEhhbmRsZSBsaXN0IHZhbHVlcy5cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChpbmZvLnNwYWNlU2VwYXJhdGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHNwYWNlcyhyZXN1bHQpXG4gICAgICB9IGVsc2UgaWYgKGluZm8uY29tbWFTZXBhcmF0ZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gY29tbWFzKHJlc3VsdClcbiAgICAgIH0gZWxzZSBpZiAoaW5mby5jb21tYU9yU3BhY2VTZXBhcmF0ZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gc3BhY2VzKGNvbW1hcyhyZXN1bHQpLmpvaW4oJyAnKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBY2NlcHQgYG9iamVjdGAgb24gc3R5bGUuXG4gICAgaWYgKHByb3BlcnR5ID09PSAnc3R5bGUnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IHN0eWxlKHJlc3VsdClcbiAgICB9XG5cbiAgICAvLyBDbGFzcy1uYW1lcyAod2hpY2ggY2FuIGJlIGFkZGVkIGJvdGggb24gdGhlIGBzZWxlY3RvcmAgYW5kIGhlcmUpLlxuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2NsYXNzTmFtZScgJiYgcHJvcGVydGllcy5jbGFzc05hbWUpIHtcbiAgICAgIHJlc3VsdCA9IHByb3BlcnRpZXMuY2xhc3NOYW1lLmNvbmNhdChyZXN1bHQpXG4gICAgfVxuXG4gICAgcHJvcGVydGllc1twcm9wZXJ0eV0gPSBwYXJzZVByaW1pdGl2ZXMoaW5mbywgcHJvcGVydHksIHJlc3VsdClcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHZhbHVlLCBub2RlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgICdsZW5ndGgnIGluIHZhbHVlIHx8XG4gICAgaXNOb2RlKG5vZGUudGFnTmFtZSwgdmFsdWUpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNOb2RlKHRhZ05hbWUsIHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdmFsdWUudHlwZVxuXG4gIGlmICh0YWdOYW1lID09PSAnaW5wdXQnIHx8ICF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZS5jaGlsZHJlbiA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUuY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKVxuXG4gIGlmICh0YWdOYW1lID09PSAnYnV0dG9uJykge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlICE9PSAnbWVudScgJiZcbiAgICAgIHR5cGUgIT09ICdzdWJtaXQnICYmXG4gICAgICB0eXBlICE9PSAncmVzZXQnICYmXG4gICAgICB0eXBlICE9PSAnYnV0dG9uJ1xuICAgIClcbiAgfVxuXG4gIHJldHVybiAndmFsdWUnIGluIHZhbHVlXG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKG5vZGVzLCB2YWx1ZSkge1xuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICBub2Rlcy5wdXNoKHt0eXBlOiAndGV4dCcsIHZhbHVlOiBTdHJpbmcodmFsdWUpfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgaW5kZXggPSAtMVxuICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFkZENoaWxkKG5vZGVzLCB2YWx1ZVtpbmRleF0pXG4gICAgfVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCAhKCd0eXBlJyBpbiB2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIG5vZGVzLCBvciBzdHJpbmcsIGdvdCBgJyArIHZhbHVlICsgJ2AnKVxuICB9XG5cbiAgbm9kZXMucHVzaCh2YWx1ZSlcbn1cblxuLy8gUGFyc2UgYSAobGlzdCBvZikgcHJpbWl0aXZlcy5cbmZ1bmN0aW9uIHBhcnNlUHJpbWl0aXZlcyhpbmZvLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgaW5kZXhcbiAgdmFyIGxlbmd0aFxuICB2YXIgcmVzdWx0XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgnbGVuZ3RoJyBpbiB2YWx1ZSkpIHtcbiAgICByZXR1cm4gcGFyc2VQcmltaXRpdmUoaW5mbywgbmFtZSwgdmFsdWUpXG4gIH1cblxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgaW5kZXggPSAtMVxuICByZXN1bHQgPSBbXVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IHBhcnNlUHJpbWl0aXZlKGluZm8sIG5hbWUsIHZhbHVlW2luZGV4XSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gUGFyc2UgYSBzaW5nbGUgcHJpbWl0aXZlcy5cbmZ1bmN0aW9uIHBhcnNlUHJpbWl0aXZlKGluZm8sIG5hbWUsIHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB2YWx1ZVxuXG4gIGlmIChpbmZvLm51bWJlciB8fCBpbmZvLnBvc2l0aXZlTnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTihyZXN1bHQpICYmIHJlc3VsdCAhPT0gJycpIHtcbiAgICAgIHJlc3VsdCA9IE51bWJlcihyZXN1bHQpXG4gICAgfVxuICB9IGVsc2UgaWYgKGluZm8uYm9vbGVhbiB8fCBpbmZvLm92ZXJsb2FkZWRCb29sZWFuKSB7XG4gICAgLy8gQWNjZXB0IGBib29sZWFuYCBhbmQgYHN0cmluZ2AuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIChyZXN1bHQgPT09ICcnIHx8IG5vcm1hbGl6ZSh2YWx1ZSkgPT09IG5vcm1hbGl6ZShuYW1lKSlcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHN0eWxlKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIga2V5XG5cbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXN1bHQucHVzaChba2V5LCB2YWx1ZVtrZXldXS5qb2luKCc6ICcpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCc7ICcpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFkanVzdE1hcCh2YWx1ZXMpIHtcbiAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIHJlc3VsdCA9IHt9XG4gIHZhciB2YWx1ZVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdXG4gICAgcmVzdWx0W3ZhbHVlLnRvTG93ZXJDYXNlKCldID0gdmFsdWVcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgc2NoZW1hID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciBjYXNlU2Vuc2l0aXZlID0gcmVxdWlyZSgnLi9zdmctY2FzZS1zZW5zaXRpdmUtdGFnLW5hbWVzLmpzb24nKVxudmFyIGZhY3RvcnkgPSByZXF1aXJlKCcuL2ZhY3RvcnknKVxuXG52YXIgc3ZnID0gZmFjdG9yeShzY2hlbWEsICdnJywgY2FzZVNlbnNpdGl2ZSlcbnN2Zy5kaXNwbGF5TmFtZSA9ICdzdmcnXG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHNjaGVtYSA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIGZhY3RvcnkgPSByZXF1aXJlKCcuL2ZhY3RvcnknKVxuXG52YXIgaHRtbCA9IGZhY3Rvcnkoc2NoZW1hLCAnZGl2Jylcbmh0bWwuZGlzcGxheU5hbWUgPSAnaHRtbCdcblxubW9kdWxlLmV4cG9ydHMgPSBodG1sXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjY291bnRcblxuZnVuY3Rpb24gY2NvdW50KHZhbHVlLCBjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvdW50ID0gMFxuICB2YXIgaW5kZXhcblxuICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcblxuICBpZiAodHlwZW9mIGNoYXJhY3RlciAhPT0gJ3N0cmluZycgfHwgY2hhcmFjdGVyLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgY2hhcmFjdGVyJylcbiAgfVxuXG4gIGluZGV4ID0gdmFsdWUuaW5kZXhPZihjaGFyYWN0ZXIpXG5cbiAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgIGNvdW50KytcbiAgICBpbmRleCA9IHZhbHVlLmluZGV4T2YoY2hhcmFjdGVyLCBpbmRleCArIDEpXG4gIH1cblxuICByZXR1cm4gY291bnRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIHMgPSByZXF1aXJlKCdoYXN0c2NyaXB0L3N2ZycpXG52YXIgaCA9IHJlcXVpcmUoJ2hhc3RzY3JpcHQnKVxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGNvdW50ID0gcmVxdWlyZSgnY2NvdW50JylcblxubW9kdWxlLmV4cG9ydHMgPSB3cmFwcGVyXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBIYW5kbGVycy5cbnZhciBtYXAgPSB7XG4gICcjZG9jdW1lbnQnOiByb290LFxuICAnI2RvY3VtZW50LWZyYWdtZW50Jzogcm9vdCxcbiAgJyN0ZXh0JzogdGV4dCxcbiAgJyNjb21tZW50JzogY29tbWVudCxcbiAgJyNkb2N1bWVudFR5cGUnOiBkb2N0eXBlXG59XG5cbi8vIFdyYXBwZXIgdG8gbm9ybWFsaXNlIG9wdGlvbnMuXG5mdW5jdGlvbiB3cmFwcGVyKGFzdCwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBmaWxlXG5cbiAgaWYgKHNldHRpbmdzLm1lc3NhZ2VzKSB7XG4gICAgZmlsZSA9IHNldHRpbmdzXG4gICAgc2V0dGluZ3MgPSB7fVxuICB9IGVsc2Uge1xuICAgIGZpbGUgPSBzZXR0aW5ncy5maWxlXG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtKGFzdCwge1xuICAgIHNjaGVtYTogc2V0dGluZ3Muc3BhY2UgPT09ICdzdmcnID8gc3ZnIDogaHRtbCxcbiAgICBmaWxlOiBmaWxlLFxuICAgIHZlcmJvc2U6IHNldHRpbmdzLnZlcmJvc2UsXG4gICAgbG9jYXRpb246IGZhbHNlXG4gIH0pXG59XG5cbi8vIFRyYW5zZm9ybSBhIG5vZGUuXG5mdW5jdGlvbiB0cmFuc2Zvcm0oYXN0LCBjb25maWcpIHtcbiAgdmFyIHNjaGVtYSA9IGNvbmZpZy5zY2hlbWFcbiAgdmFyIGZuID0gb3duLmNhbGwobWFwLCBhc3Qubm9kZU5hbWUpID8gbWFwW2FzdC5ub2RlTmFtZV0gOiBlbGVtZW50XG4gIHZhciBjaGlsZHJlblxuICB2YXIgbm9kZVxuICB2YXIgcG9zXG5cbiAgaWYgKGZuID09PSBlbGVtZW50KSB7XG4gICAgY29uZmlnLnNjaGVtYSA9IGFzdC5uYW1lc3BhY2VVUkkgPT09IG5zLnN2ZyA/IHN2ZyA6IGh0bWxcbiAgfVxuXG4gIGlmIChhc3QuY2hpbGROb2Rlcykge1xuICAgIGNoaWxkcmVuID0gbm9kZXMoYXN0LmNoaWxkTm9kZXMsIGNvbmZpZylcbiAgfVxuXG4gIG5vZGUgPSBmbihhc3QsIGNoaWxkcmVuLCBjb25maWcpXG5cbiAgaWYgKGFzdC5zb3VyY2VDb2RlTG9jYXRpb24gJiYgY29uZmlnLmZpbGUpIHtcbiAgICBwb3MgPSBsb2NhdGlvbihub2RlLCBhc3Quc291cmNlQ29kZUxvY2F0aW9uLCBjb25maWcpXG5cbiAgICBpZiAocG9zKSB7XG4gICAgICBjb25maWcubG9jYXRpb24gPSB0cnVlXG4gICAgICBub2RlLnBvc2l0aW9uID0gcG9zXG4gICAgfVxuICB9XG5cbiAgY29uZmlnLnNjaGVtYSA9IHNjaGVtYVxuXG4gIHJldHVybiBub2RlXG59XG5cbi8vIFRyYW5zZm9ybSBjaGlsZHJlbi5cbmZ1bmN0aW9uIG5vZGVzKGNoaWxkcmVuLCBjb25maWcpIHtcbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0ID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSB0cmFuc2Zvcm0oY2hpbGRyZW5baW5kZXhdLCBjb25maWcpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIFRyYW5zZm9ybSBhIGRvY3VtZW50LlxuLy8gU3RvcmVzIGBhc3QucXVpcmtzTW9kZWAgaW4gYG5vZGUuZGF0YS5xdWlya3NNb2RlYC5cbmZ1bmN0aW9uIHJvb3QoYXN0LCBjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBub2RlID0ge3R5cGU6ICdyb290JywgY2hpbGRyZW46IGNoaWxkcmVuLCBkYXRhOiB7fX1cbiAgdmFyIGRvY1xuXG4gIG5vZGUuZGF0YS5xdWlya3NNb2RlID0gYXN0Lm1vZGUgPT09ICdxdWlya3MnIHx8IGFzdC5tb2RlID09PSAnbGltaXRlZC1xdWlya3MnXG5cbiAgaWYgKGNvbmZpZy5maWxlICYmIGNvbmZpZy5sb2NhdGlvbikge1xuICAgIGRvYyA9IFN0cmluZyhjb25maWcuZmlsZSlcblxuICAgIG5vZGUucG9zaXRpb24gPSB7XG4gICAgICBzdGFydDoge2xpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwfSxcbiAgICAgIGVuZDoge1xuICAgICAgICBsaW5lOiBjb3VudChkb2MsICdcXG4nKSArIDEsXG4gICAgICAgIGNvbHVtbjogZG9jLmxlbmd0aCAtIGRvYy5sYXN0SW5kZXhPZignXFxuJyksXG4gICAgICAgIG9mZnNldDogZG9jLmxlbmd0aFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG5cbi8vIFRyYW5zZm9ybSBhIGRvY3R5cGUuXG5mdW5jdGlvbiBkb2N0eXBlKGFzdCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdkb2N0eXBlJyxcbiAgICBuYW1lOiBhc3QubmFtZSB8fCAnJyxcbiAgICBwdWJsaWM6IGFzdC5wdWJsaWNJZCB8fCBudWxsLFxuICAgIHN5c3RlbTogYXN0LnN5c3RlbUlkIHx8IG51bGxcbiAgfVxufVxuXG4vLyBUcmFuc2Zvcm0gYSB0ZXh0LlxuZnVuY3Rpb24gdGV4dChhc3QpIHtcbiAgcmV0dXJuIHt0eXBlOiAndGV4dCcsIHZhbHVlOiBhc3QudmFsdWV9XG59XG5cbi8vIFRyYW5zZm9ybSBhIGNvbW1lbnQuXG5mdW5jdGlvbiBjb21tZW50KGFzdCkge1xuICByZXR1cm4ge3R5cGU6ICdjb21tZW50JywgdmFsdWU6IGFzdC5kYXRhfVxufVxuXG4vLyBUcmFuc2Zvcm0gYW4gZWxlbWVudC5cbmZ1bmN0aW9uIGVsZW1lbnQoYXN0LCBjaGlsZHJlbiwgY29uZmlnKSB7XG4gIHZhciBmbiA9IGNvbmZpZy5zY2hlbWEuc3BhY2UgPT09ICdzdmcnID8gcyA6IGhcbiAgdmFyIG5hbWUgPSBhc3QudGFnTmFtZVxuICB2YXIgYXR0cmlidXRlcyA9IGFzdC5hdHRyc1xuICB2YXIgbGVuZ3RoID0gYXR0cmlidXRlcy5sZW5ndGhcbiAgdmFyIHByb3BzID0ge31cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGF0dHJpYnV0ZVxuICB2YXIgcHJvcFxuICB2YXIgbm9kZVxuICB2YXIgcG9zXG4gIHZhciBzdGFydFxuICB2YXIgZW5kXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2luZGV4XVxuICAgIHByb3AgPSAoYXR0cmlidXRlLnByZWZpeCA/IGF0dHJpYnV0ZS5wcmVmaXggKyAnOicgOiAnJykgKyBhdHRyaWJ1dGUubmFtZVxuICAgIHByb3BzW3Byb3BdID0gYXR0cmlidXRlLnZhbHVlXG4gIH1cblxuICBub2RlID0gZm4obmFtZSwgcHJvcHMsIGNoaWxkcmVuKVxuXG4gIGlmIChuYW1lID09PSAndGVtcGxhdGUnICYmICdjb250ZW50JyBpbiBhc3QpIHtcbiAgICBwb3MgPSBhc3Quc291cmNlQ29kZUxvY2F0aW9uXG4gICAgc3RhcnQgPSBwb3MgJiYgcG9zLnN0YXJ0VGFnICYmIHBvc2l0aW9uKHBvcy5zdGFydFRhZykuZW5kXG4gICAgZW5kID0gcG9zICYmIHBvcy5lbmRUYWcgJiYgcG9zaXRpb24ocG9zLmVuZFRhZykuc3RhcnRcblxuICAgIG5vZGUuY29udGVudCA9IHRyYW5zZm9ybShhc3QuY29udGVudCwgY29uZmlnKVxuXG4gICAgaWYgKChzdGFydCB8fCBlbmQpICYmIGNvbmZpZy5maWxlKSB7XG4gICAgICBub2RlLmNvbnRlbnQucG9zaXRpb24gPSB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVxufVxuXG4vLyBDcmVhdGUgY2xlYW4gcG9zaXRpb25hbCBpbmZvcm1hdGlvbi5cbmZ1bmN0aW9uIGxvY2F0aW9uKG5vZGUsIGxvY2F0aW9uLCBjb25maWcpIHtcbiAgdmFyIHNjaGVtYSA9IGNvbmZpZy5zY2hlbWFcbiAgdmFyIHZlcmJvc2UgPSBjb25maWcudmVyYm9zZVxuICB2YXIgcG9zID0gcG9zaXRpb24obG9jYXRpb24pXG4gIHZhciByZWZlcmVuY2VcbiAgdmFyIGF0dHJpYnV0ZXNcbiAgdmFyIGF0dHJpYnV0ZVxuICB2YXIgcHJvcHNcbiAgdmFyIHByb3BcblxuICBpZiAobm9kZS50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICByZWZlcmVuY2UgPSBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV1cblxuICAgIC8vIEJ1ZyBmb3IgdW5jbG9zZWQgd2l0aCBjaGlsZHJlbi5cbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2lzc3Vlcy8xMDk+LlxuICAgIGlmIChcbiAgICAgICFsb2NhdGlvbi5lbmRUYWcgJiZcbiAgICAgIHJlZmVyZW5jZSAmJlxuICAgICAgcmVmZXJlbmNlLnBvc2l0aW9uICYmXG4gICAgICByZWZlcmVuY2UucG9zaXRpb24uZW5kXG4gICAgKSB7XG4gICAgICBwb3MuZW5kID0geHRlbmQocmVmZXJlbmNlLnBvc2l0aW9uLmVuZClcbiAgICB9XG5cbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgYXR0cmlidXRlcyA9IGxvY2F0aW9uLmF0dHJzXG4gICAgICBwcm9wcyA9IHt9XG5cbiAgICAgIGZvciAoYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcHJvcCA9IGZpbmQoc2NoZW1hLCBhdHRyaWJ1dGUpLnByb3BlcnR5XG4gICAgICAgIHByb3BzW3Byb3BdID0gcG9zaXRpb24oYXR0cmlidXRlc1thdHRyaWJ1dGVdKVxuICAgICAgfVxuXG4gICAgICBub2RlLmRhdGEgPSB7XG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgb3BlbmluZzogcG9zaXRpb24obG9jYXRpb24uc3RhcnRUYWcpLFxuICAgICAgICAgIGNsb3Npbmc6IGxvY2F0aW9uLmVuZFRhZyA/IHBvc2l0aW9uKGxvY2F0aW9uLmVuZFRhZykgOiBudWxsLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9zXG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uKGxvYykge1xuICB2YXIgc3RhcnQgPSBwb2ludCh7XG4gICAgbGluZTogbG9jLnN0YXJ0TGluZSxcbiAgICBjb2x1bW46IGxvYy5zdGFydENvbCxcbiAgICBvZmZzZXQ6IGxvYy5zdGFydE9mZnNldFxuICB9KVxuICB2YXIgZW5kID0gcG9pbnQoe1xuICAgIGxpbmU6IGxvYy5lbmRMaW5lLFxuICAgIGNvbHVtbjogbG9jLmVuZENvbCxcbiAgICBvZmZzZXQ6IGxvYy5lbmRPZmZzZXRcbiAgfSlcbiAgcmV0dXJuIHN0YXJ0IHx8IGVuZCA/IHtzdGFydDogc3RhcnQsIGVuZDogZW5kfSA6IG51bGxcbn1cblxuZnVuY3Rpb24gcG9pbnQocG9pbnQpIHtcbiAgcmV0dXJuIHBvaW50LmxpbmUgJiYgcG9pbnQuY29sdW1uID8gcG9pbnQgOiBudWxsXG59XG4iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ncmFtbWFyLmh0bWxcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS92aXNpb25tZWRpYS9jc3MtcGFyc2UvcHVsbC80OSNpc3N1ZWNvbW1lbnQtMzAwODgwMjdcbnZhciBDT01NRU5UX1JFR0VYID0gL1xcL1xcKlteKl0qXFwqKyhbXi8qXVteKl0qXFwqKykqXFwvL2c7XG5cbnZhciBORVdMSU5FX1JFR0VYID0gL1xcbi9nO1xudmFyIFdISVRFU1BBQ0VfUkVHRVggPSAvXlxccyovO1xuXG4vLyBkZWNsYXJhdGlvblxudmFyIFBST1BFUlRZX1JFR0VYID0gL14oXFwqP1stIy8qXFxcXFxcd10rKFxcW1swLTlhLXpfLV0rXFxdKT8pXFxzKi87XG52YXIgQ09MT05fUkVHRVggPSAvXjpcXHMqLztcbnZhciBWQUxVRV9SRUdFWCA9IC9eKCg/OicoPzpcXFxcJ3wuKSo/J3xcIig/OlxcXFxcInwuKSo/XCJ8XFwoW14pXSo/XFwpfFtefTtdKSspLztcbnZhciBTRU1JQ09MT05fUkVHRVggPSAvXls7XFxzXSovO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvVHJpbSNQb2x5ZmlsbFxudmFyIFRSSU1fUkVHRVggPSAvXlxccyt8XFxzKyQvZztcblxuLy8gc3RyaW5nc1xudmFyIE5FV0xJTkUgPSAnXFxuJztcbnZhciBGT1JXQVJEX1NMQVNIID0gJy8nO1xudmFyIEFTVEVSSVNLID0gJyonO1xudmFyIEVNUFRZX1NUUklORyA9ICcnO1xuXG4vLyB0eXBlc1xudmFyIFRZUEVfQ09NTUVOVCA9ICdjb21tZW50JztcbnZhciBUWVBFX0RFQ0xBUkFUSU9OID0gJ2RlY2xhcmF0aW9uJztcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge09iamVjdFtdfVxuICogQHRocm93cyB7VHlwZUVycm9yfVxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oc3R5bGUsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBzdHlsZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoIXN0eWxlKSByZXR1cm4gW107XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uYWwuXG4gICAqL1xuICB2YXIgbGluZW5vID0gMTtcbiAgdmFyIGNvbHVtbiA9IDE7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBsaW5lbm8gYW5kIGNvbHVtbiBiYXNlZCBvbiBgc3RyYC5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oc3RyKSB7XG4gICAgdmFyIGxpbmVzID0gc3RyLm1hdGNoKE5FV0xJTkVfUkVHRVgpO1xuICAgIGlmIChsaW5lcykgbGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICB2YXIgaSA9IHN0ci5sYXN0SW5kZXhPZihORVdMSU5FKTtcbiAgICBjb2x1bW4gPSB+aSA/IHN0ci5sZW5ndGggLSBpIDogY29sdW1uICsgc3RyLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIHBvc2l0aW9uIGFuZCBwYXRjaCBgbm9kZS5wb3NpdGlvbmAuXG4gICAqXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgZnVuY3Rpb24gcG9zaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0geyBsaW5lOiBsaW5lbm8sIGNvbHVtbjogY29sdW1uIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIG5vZGUucG9zaXRpb24gPSBuZXcgUG9zaXRpb24oc3RhcnQpO1xuICAgICAgd2hpdGVzcGFjZSgpO1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3IgYSBub2RlLlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHByb3BlcnR5IHtPYmplY3R9IHN0YXJ0XG4gICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBlbmRcbiAgICogQHByb3BlcnR5IHt1bmRlZmluZWR8U3RyaW5nfSBzb3VyY2VcbiAgICovXG4gIGZ1bmN0aW9uIFBvc2l0aW9uKHN0YXJ0KSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0geyBsaW5lOiBsaW5lbm8sIGNvbHVtbjogY29sdW1uIH07XG4gICAgdGhpcy5zb3VyY2UgPSBvcHRpb25zLnNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb24tZW51bWVyYWJsZSBzb3VyY2Ugc3RyaW5nLlxuICAgKi9cbiAgUG9zaXRpb24ucHJvdG90eXBlLmNvbnRlbnQgPSBzdHlsZTtcblxuICB2YXIgZXJyb3JzTGlzdCA9IFtdO1xuXG4gIC8qKlxuICAgKiBFcnJvciBgbXNnYC5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1zZ1xuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICovXG4gIGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICBvcHRpb25zLnNvdXJjZSArICc6JyArIGxpbmVubyArICc6JyArIGNvbHVtbiArICc6ICcgKyBtc2dcbiAgICApO1xuICAgIGVyci5yZWFzb24gPSBtc2c7XG4gICAgZXJyLmZpbGVuYW1lID0gb3B0aW9ucy5zb3VyY2U7XG4gICAgZXJyLmxpbmUgPSBsaW5lbm87XG4gICAgZXJyLmNvbHVtbiA9IGNvbHVtbjtcbiAgICBlcnIuc291cmNlID0gc3R5bGU7XG5cbiAgICBpZiAob3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGVycm9yc0xpc3QucHVzaChlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoIGByZWAgYW5kIHJldHVybiBjYXB0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZHxBcnJheX1cbiAgICovXG4gIGZ1bmN0aW9uIG1hdGNoKHJlKSB7XG4gICAgdmFyIG0gPSByZS5leGVjKHN0eWxlKTtcbiAgICBpZiAoIW0pIHJldHVybjtcbiAgICB2YXIgc3RyID0gbVswXTtcbiAgICB1cGRhdGVQb3NpdGlvbihzdHIpO1xuICAgIHN0eWxlID0gc3R5bGUuc2xpY2Uoc3RyLmxlbmd0aCk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICAvKipcbiAgICogUGFyc2Ugd2hpdGVzcGFjZS5cbiAgICovXG4gIGZ1bmN0aW9uIHdoaXRlc3BhY2UoKSB7XG4gICAgbWF0Y2goV0hJVEVTUEFDRV9SRUdFWCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgY29tbWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0W119IFtydWxlc11cbiAgICogQHJldHVybiB7T2JqZWN0W119XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50cyhydWxlcykge1xuICAgIHZhciBjO1xuICAgIHJ1bGVzID0gcnVsZXMgfHwgW107XG4gICAgd2hpbGUgKChjID0gY29tbWVudCgpKSkge1xuICAgICAgaWYgKGMgIT09IGZhbHNlKSB7XG4gICAgICAgIHJ1bGVzLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBjb21tZW50LlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqIEB0aHJvd3Mge0Vycm9yfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudCgpIHtcbiAgICB2YXIgcG9zID0gcG9zaXRpb24oKTtcbiAgICBpZiAoRk9SV0FSRF9TTEFTSCAhPSBzdHlsZS5jaGFyQXQoMCkgfHwgQVNURVJJU0sgIT0gc3R5bGUuY2hhckF0KDEpKSByZXR1cm47XG5cbiAgICB2YXIgaSA9IDI7XG4gICAgd2hpbGUgKFxuICAgICAgRU1QVFlfU1RSSU5HICE9IHN0eWxlLmNoYXJBdChpKSAmJlxuICAgICAgKEFTVEVSSVNLICE9IHN0eWxlLmNoYXJBdChpKSB8fCBGT1JXQVJEX1NMQVNIICE9IHN0eWxlLmNoYXJBdChpICsgMSkpXG4gICAgKSB7XG4gICAgICArK2k7XG4gICAgfVxuICAgIGkgKz0gMjtcblxuICAgIGlmIChFTVBUWV9TVFJJTkcgPT09IHN0eWxlLmNoYXJBdChpIC0gMSkpIHtcbiAgICAgIHJldHVybiBlcnJvcignRW5kIG9mIGNvbW1lbnQgbWlzc2luZycpO1xuICAgIH1cblxuICAgIHZhciBzdHIgPSBzdHlsZS5zbGljZSgyLCBpIC0gMik7XG4gICAgY29sdW1uICs9IDI7XG4gICAgdXBkYXRlUG9zaXRpb24oc3RyKTtcbiAgICBzdHlsZSA9IHN0eWxlLnNsaWNlKGkpO1xuICAgIGNvbHVtbiArPSAyO1xuXG4gICAgcmV0dXJuIHBvcyh7XG4gICAgICB0eXBlOiBUWVBFX0NPTU1FTlQsXG4gICAgICBjb21tZW50OiBzdHJcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkZWNsYXJhdGlvbi5cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uKCkge1xuICAgIHZhciBwb3MgPSBwb3NpdGlvbigpO1xuXG4gICAgLy8gcHJvcFxuICAgIHZhciBwcm9wID0gbWF0Y2goUFJPUEVSVFlfUkVHRVgpO1xuICAgIGlmICghcHJvcCkgcmV0dXJuO1xuICAgIGNvbW1lbnQoKTtcblxuICAgIC8vIDpcbiAgICBpZiAoIW1hdGNoKENPTE9OX1JFR0VYKSkgcmV0dXJuIGVycm9yKFwicHJvcGVydHkgbWlzc2luZyAnOidcIik7XG5cbiAgICAvLyB2YWxcbiAgICB2YXIgdmFsID0gbWF0Y2goVkFMVUVfUkVHRVgpO1xuXG4gICAgdmFyIHJldCA9IHBvcyh7XG4gICAgICB0eXBlOiBUWVBFX0RFQ0xBUkFUSU9OLFxuICAgICAgcHJvcGVydHk6IHRyaW0ocHJvcFswXS5yZXBsYWNlKENPTU1FTlRfUkVHRVgsIEVNUFRZX1NUUklORykpLFxuICAgICAgdmFsdWU6IHZhbFxuICAgICAgICA/IHRyaW0odmFsWzBdLnJlcGxhY2UoQ09NTUVOVF9SRUdFWCwgRU1QVFlfU1RSSU5HKSlcbiAgICAgICAgOiBFTVBUWV9TVFJJTkdcbiAgICB9KTtcblxuICAgIC8vIDtcbiAgICBtYXRjaChTRU1JQ09MT05fUkVHRVgpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkZWNsYXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb25zKCkge1xuICAgIHZhciBkZWNscyA9IFtdO1xuXG4gICAgY29tbWVudHMoZGVjbHMpO1xuXG4gICAgLy8gZGVjbGFyYXRpb25zXG4gICAgdmFyIGRlY2w7XG4gICAgd2hpbGUgKChkZWNsID0gZGVjbGFyYXRpb24oKSkpIHtcbiAgICAgIGlmIChkZWNsICE9PSBmYWxzZSkge1xuICAgICAgICBkZWNscy5wdXNoKGRlY2wpO1xuICAgICAgICBjb21tZW50cyhkZWNscyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xzO1xuICB9XG5cbiAgd2hpdGVzcGFjZSgpO1xuICByZXR1cm4gZGVjbGFyYXRpb25zKCk7XG59O1xuXG4vKipcbiAqIFRyaW0gYHN0cmAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyID8gc3RyLnJlcGxhY2UoVFJJTV9SRUdFWCwgRU1QVFlfU1RSSU5HKSA6IEVNUFRZX1NUUklORztcbn1cbiIsInZhciBwYXJzZSA9IHJlcXVpcmUoJ2lubGluZS1zdHlsZS1wYXJzZXInKTtcblxuLyoqXG4gKiBQYXJzZXMgaW5saW5lIHN0eWxlIHRvIG9iamVjdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gcmV0dXJucyB7ICdsaW5lLWhlaWdodCc6ICc0MicgfVxuICogU3R5bGVUb09iamVjdCgnbGluZS1oZWlnaHQ6IDQyOycpO1xuICpcbiAqIEBwYXJhbSAge1N0cmluZ30gICAgICBzdHlsZSAgICAgIC0gVGhlIGlubGluZSBzdHlsZS5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSAgICBbaXRlcmF0b3JdIC0gVGhlIGl0ZXJhdG9yIGZ1bmN0aW9uLlxuICogQHJldHVybiB7bnVsbHxPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIFN0eWxlVG9PYmplY3Qoc3R5bGUsIGl0ZXJhdG9yKSB7XG4gIHZhciBvdXRwdXQgPSBudWxsO1xuICBpZiAoIXN0eWxlIHx8IHR5cGVvZiBzdHlsZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgdmFyIGRlY2xhcmF0aW9uO1xuICB2YXIgZGVjbGFyYXRpb25zID0gcGFyc2Uoc3R5bGUpO1xuICB2YXIgaGFzSXRlcmF0b3IgPSB0eXBlb2YgaXRlcmF0b3IgPT09ICdmdW5jdGlvbic7XG4gIHZhciBwcm9wZXJ0eTtcbiAgdmFyIHZhbHVlO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkZWNsYXJhdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBkZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uc1tpXTtcbiAgICBwcm9wZXJ0eSA9IGRlY2xhcmF0aW9uLnByb3BlcnR5O1xuICAgIHZhbHVlID0gZGVjbGFyYXRpb24udmFsdWU7XG5cbiAgICBpZiAoaGFzSXRlcmF0b3IpIHtcbiAgICAgIGl0ZXJhdG9yKHByb3BlcnR5LCB2YWx1ZSwgZGVjbGFyYXRpb24pO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIG91dHB1dCB8fCAob3V0cHV0ID0ge30pO1xuICAgICAgb3V0cHV0W3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3R5bGVUb09iamVjdDtcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgaHRtbCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2h0bWwnKVxudmFyIHN2ZyA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL3N2ZycpXG52YXIgZmluZCA9IHJlcXVpcmUoJ3Byb3BlcnR5LWluZm9ybWF0aW9uL2ZpbmQnKVxudmFyIGhhc3RUb1JlYWN0ID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vaGFzdC10by1yZWFjdC5qc29uJylcbnZhciBzcGFjZXMgPSByZXF1aXJlKCdzcGFjZS1zZXBhcmF0ZWQtdG9rZW5zJylcbnZhciBjb21tYXMgPSByZXF1aXJlKCdjb21tYS1zZXBhcmF0ZWQtdG9rZW5zJylcbnZhciBzdHlsZSA9IHJlcXVpcmUoJ3N0eWxlLXRvLW9iamVjdCcpXG52YXIgbnMgPSByZXF1aXJlKCd3ZWItbmFtZXNwYWNlcycpXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG5cbnZhciByb290ID0gY29udmVydCgncm9vdCcpXG52YXIgZWxlbWVudCA9IGNvbnZlcnQoJ2VsZW1lbnQnKVxudmFyIHRleHQgPSBjb252ZXJ0KCd0ZXh0JylcblxudmFyIGRhc2hlcyA9IC8tKFthLXpdKS9nXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcHBlclxuXG5mdW5jdGlvbiB3cmFwcGVyKGgsIG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgcHJlZml4XG4gIHZhciByXG4gIHZhciB2XG4gIHZhciB2ZFxuXG4gIGlmICh0eXBlb2YgaCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaCBpcyBub3QgYSBmdW5jdGlvbicpXG4gIH1cblxuICBpZiAodHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygc2V0dGluZ3MgPT09ICdib29sZWFuJykge1xuICAgIHByZWZpeCA9IHNldHRpbmdzXG4gICAgc2V0dGluZ3MgPSB7fVxuICB9IGVsc2Uge1xuICAgIHByZWZpeCA9IHNldHRpbmdzLnByZWZpeFxuICB9XG5cbiAgciA9IHJlYWN0KGgpXG4gIHYgPSB2dWUoaClcbiAgdmQgPSB2ZG9tKGgpXG5cbiAgaWYgKHByZWZpeCA9PT0gbnVsbCB8fCBwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeCA9IHIgPT09IHRydWUgfHwgdiA9PT0gdHJ1ZSB8fCB2ZCA9PT0gdHJ1ZSA/ICdoLScgOiBmYWxzZVxuICB9XG5cbiAgaWYgKHJvb3Qobm9kZSkpIHtcbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgZWxlbWVudChub2RlLmNoaWxkcmVuWzBdKSkge1xuICAgICAgbm9kZSA9IG5vZGUuY2hpbGRyZW5bMF1cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IHtcbiAgICAgICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgICAgICB0YWdOYW1lOiAnZGl2JyxcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbGVtZW50KG5vZGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0V4cGVjdGVkIHJvb3Qgb3IgZWxlbWVudCwgbm90IGAnICsgKChub2RlICYmIG5vZGUudHlwZSkgfHwgbm9kZSkgKyAnYCdcbiAgICApXG4gIH1cblxuICByZXR1cm4gdG9IKGgsIG5vZGUsIHtcbiAgICBzY2hlbWE6IHNldHRpbmdzLnNwYWNlID09PSAnc3ZnJyA/IHN2ZyA6IGh0bWwsXG4gICAgcHJlZml4OiBwcmVmaXgsXG4gICAga2V5OiAwLFxuICAgIHJlYWN0OiByLFxuICAgIHZ1ZTogdixcbiAgICB2ZG9tOiB2ZCxcbiAgICBoeXBlcnNjcmlwdDogaHlwZXJzY3JpcHQoaClcbiAgfSlcbn1cblxuLy8gVHJhbnNmb3JtIGEgaGFzdCBub2RlIHRocm91Z2ggYSBoeXBlcnNjcmlwdCBpbnRlcmZhY2UgdG8gKmFueXRoaW5nKiFcbmZ1bmN0aW9uIHRvSChoLCBub2RlLCBjdHgpIHtcbiAgdmFyIHBhcmVudFNjaGVtYSA9IGN0eC5zY2hlbWFcbiAgdmFyIHNjaGVtYSA9IHBhcmVudFNjaGVtYVxuICB2YXIgbmFtZSA9IG5vZGUudGFnTmFtZVxuICB2YXIgcHJvcGVydGllc1xuICB2YXIgYXR0cmlidXRlc1xuICB2YXIgY2hpbGRyZW5cbiAgdmFyIHByb3BlcnR5XG4gIHZhciBlbGVtZW50c1xuICB2YXIgbGVuZ3RoXG4gIHZhciBpbmRleFxuICB2YXIgdmFsdWVcbiAgdmFyIHJlc3VsdFxuXG4gIGlmIChwYXJlbnRTY2hlbWEuc3BhY2UgPT09ICdodG1sJyAmJiBuYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKSB7XG4gICAgc2NoZW1hID0gc3ZnXG4gICAgY3R4LnNjaGVtYSA9IHNjaGVtYVxuICB9XG5cbiAgaWYgKGN0eC52ZG9tID09PSB0cnVlICYmIHNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnKSB7XG4gICAgbmFtZSA9IG5hbWUudG9VcHBlckNhc2UoKVxuICB9XG5cbiAgcHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllc1xuICBhdHRyaWJ1dGVzID0ge31cblxuICBmb3IgKHByb3BlcnR5IGluIHByb3BlcnRpZXMpIHtcbiAgICBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlcywgcHJvcGVydHksIHByb3BlcnRpZXNbcHJvcGVydHldLCBjdHgpXG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIGF0dHJpYnV0ZXMuc3R5bGUgPT09ICdzdHJpbmcnICYmXG4gICAgKGN0eC52ZG9tID09PSB0cnVlIHx8IGN0eC52dWUgPT09IHRydWUgfHwgY3R4LnJlYWN0ID09PSB0cnVlKVxuICApIHtcbiAgICAvLyBWRE9NLCBWdWUsIGFuZCBSZWFjdCBhY2NlcHQgYHN0eWxlYCBhcyBvYmplY3QuXG4gICAgYXR0cmlidXRlcy5zdHlsZSA9IHBhcnNlU3R5bGUoYXR0cmlidXRlcy5zdHlsZSwgbmFtZSlcbiAgfVxuXG4gIGlmIChjdHgucHJlZml4KSB7XG4gICAgY3R4LmtleSsrXG4gICAgYXR0cmlidXRlcy5rZXkgPSBjdHgucHJlZml4ICsgY3R4LmtleVxuICB9XG5cbiAgaWYgKGN0eC52ZG9tICYmIHNjaGVtYS5zcGFjZSAhPT0gJ2h0bWwnKSB7XG4gICAgYXR0cmlidXRlcy5uYW1lc3BhY2UgPSBuc1tzY2hlbWEuc3BhY2VdXG4gIH1cblxuICBlbGVtZW50cyA9IFtdXG4gIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICBsZW5ndGggPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDBcbiAgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSBjaGlsZHJlbltpbmRleF1cblxuICAgIGlmIChlbGVtZW50KHZhbHVlKSkge1xuICAgICAgZWxlbWVudHMucHVzaCh0b0goaCwgdmFsdWUsIGN0eCkpXG4gICAgfSBlbHNlIGlmICh0ZXh0KHZhbHVlKSkge1xuICAgICAgZWxlbWVudHMucHVzaCh2YWx1ZS52YWx1ZSlcbiAgICB9XG4gIH1cblxuICAvLyBFbnN1cmUgbm8gUmVhY3Qgd2FybmluZ3MgYXJlIHRyaWdnZXJlZCBmb3Igdm9pZCBlbGVtZW50cyBoYXZpbmcgY2hpbGRyZW5cbiAgLy8gcGFzc2VkIGluLlxuICByZXN1bHQgPVxuICAgIGVsZW1lbnRzLmxlbmd0aCA9PT0gMCA/IGgobmFtZSwgYXR0cmlidXRlcykgOiBoKG5hbWUsIGF0dHJpYnV0ZXMsIGVsZW1lbnRzKVxuXG4gIC8vIFJlc3RvcmUgcGFyZW50IHNjaGVtYS5cbiAgY3R4LnNjaGVtYSA9IHBhcmVudFNjaGVtYVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gYWRkQXR0cmlidXRlKHByb3BzLCBwcm9wLCB2YWx1ZSwgY3R4KSB7XG4gIHZhciBoeXBlcmxpa2UgPSBjdHguaHlwZXJzY3JpcHQgfHwgY3R4LnZkb20gfHwgY3R4LnZ1ZVxuICB2YXIgc2NoZW1hID0gY3R4LnNjaGVtYVxuICB2YXIgaW5mbyA9IGZpbmQoc2NoZW1hLCBwcm9wKVxuICB2YXIgc3VicHJvcFxuXG4gIC8vIElnbm9yZSBudWxseSBhbmQgYE5hTmAgdmFsdWVzLlxuICAvLyBJZ25vcmUgYGZhbHNlYCBhbmQgZmFsc2V5IGtub3duIGJvb2xlYW5zIGZvciBoeXBlcmxpa2UgRFNMcy5cbiAgaWYgKFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgIHZhbHVlICE9PSB2YWx1ZSB8fFxuICAgIChoeXBlcmxpa2UgJiYgdmFsdWUgPT09IGZhbHNlKSB8fFxuICAgIChoeXBlcmxpa2UgJiYgaW5mby5ib29sZWFuICYmICF2YWx1ZSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgIC8vIEFjY2VwdCBgYXJyYXlgLlxuICAgIC8vIE1vc3QgcHJvcHMgYXJlIHNwYWNlLXNlcGFyYXRlZC5cbiAgICB2YWx1ZSA9IChpbmZvLmNvbW1hU2VwYXJhdGVkID8gY29tbWFzIDogc3BhY2VzKS5zdHJpbmdpZnkodmFsdWUpXG4gIH1cblxuICAvLyBUcmVhdCBgdHJ1ZWAgYW5kIHRydXRoeSBrbm93biBib29sZWFucy5cbiAgaWYgKGluZm8uYm9vbGVhbiAmJiBjdHguaHlwZXJzY3JpcHQgPT09IHRydWUpIHtcbiAgICB2YWx1ZSA9ICcnXG4gIH1cblxuICBpZiAoY3R4LnZ1ZSkge1xuICAgIGlmIChwcm9wICE9PSAnc3R5bGUnKSB7XG4gICAgICBzdWJwcm9wID0gJ2F0dHJzJ1xuICAgIH1cbiAgfSBlbHNlIGlmICghaW5mby5tdXN0VXNlUHJvcGVydHkpIHtcbiAgICBpZiAoY3R4LnZkb20gPT09IHRydWUpIHtcbiAgICAgIHN1YnByb3AgPSAnYXR0cmlidXRlcydcbiAgICB9IGVsc2UgaWYgKGN0eC5oeXBlcnNjcmlwdCA9PT0gdHJ1ZSkge1xuICAgICAgc3VicHJvcCA9ICdhdHRycydcbiAgICB9XG4gIH1cblxuICBpZiAoc3VicHJvcCkge1xuICAgIGlmIChwcm9wc1tzdWJwcm9wXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wc1tzdWJwcm9wXSA9IHt9XG4gICAgfVxuXG4gICAgcHJvcHNbc3VicHJvcF1baW5mby5hdHRyaWJ1dGVdID0gdmFsdWVcbiAgfSBlbHNlIGlmIChjdHgucmVhY3QgJiYgaW5mby5zcGFjZSkge1xuICAgIHByb3BzW2hhc3RUb1JlYWN0W2luZm8ucHJvcGVydHldIHx8IGluZm8ucHJvcGVydHldID0gdmFsdWVcbiAgfSBlbHNlIHtcbiAgICBwcm9wc1tpbmZvLmF0dHJpYnV0ZV0gPSB2YWx1ZVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGBoYCBpcyBgcmVhY3QuY3JlYXRlRWxlbWVudGAuXG5mdW5jdGlvbiByZWFjdChoKSB7XG4gIHZhciBub2RlID0gaCAmJiBoKCdkaXYnKVxuICByZXR1cm4gQm9vbGVhbihcbiAgICBub2RlICYmICgnX293bmVyJyBpbiBub2RlIHx8ICdfc3RvcmUnIGluIG5vZGUpICYmIG5vZGUua2V5ID09PSBudWxsXG4gIClcbn1cblxuLy8gQ2hlY2sgaWYgYGhgIGlzIGBoeXBlcnNjcmlwdGAuXG5mdW5jdGlvbiBoeXBlcnNjcmlwdChoKSB7XG4gIHJldHVybiBCb29sZWFuKGggJiYgaC5jb250ZXh0ICYmIGguY2xlYW51cClcbn1cblxuLy8gQ2hlY2sgaWYgYGhgIGlzIGB2aXJ0dWFsLWRvbS9oYC5cbmZ1bmN0aW9uIHZkb20oaCkge1xuICByZXR1cm4gaCAmJiBoKCdkaXYnKS50eXBlID09PSAnVmlydHVhbE5vZGUnXG59XG5cbmZ1bmN0aW9uIHZ1ZShoKSB7XG4gIHZhciBub2RlID0gaCAmJiBoKCdkaXYnKVxuICByZXR1cm4gQm9vbGVhbihub2RlICYmIG5vZGUuY29udGV4dCAmJiBub2RlLmNvbnRleHQuX2lzVnVlKVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0eWxlKHZhbHVlLCB0YWdOYW1lKSB7XG4gIHZhciByZXN1bHQgPSB7fVxuXG4gIHRyeSB7XG4gICAgc3R5bGUodmFsdWUsIGl0ZXJhdG9yKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGVycm9yLm1lc3NhZ2UgPVxuICAgICAgdGFnTmFtZSArICdbc3R5bGVdJyArIGVycm9yLm1lc3NhZ2Uuc2xpY2UoJ3VuZGVmaW5lZCcubGVuZ3RoKVxuICAgIHRocm93IGVycm9yXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG5cbiAgZnVuY3Rpb24gaXRlcmF0b3IobmFtZSwgdmFsdWUpIHtcbiAgICByZXN1bHRbc3R5bGVDYXNlKG5hbWUpXSA9IHZhbHVlXG4gIH1cbn1cblxuZnVuY3Rpb24gc3R5bGVDYXNlKHZhbCkge1xuICBpZiAodmFsLnNsaWNlKDAsIDQpID09PSAnLW1zLScpIHtcbiAgICB2YWwgPSAnbXMtJyArIHZhbC5zbGljZSg0KVxuICB9XG5cbiAgcmV0dXJuIHZhbC5yZXBsYWNlKGRhc2hlcywgc3R5bGVSZXBsYWNlcilcbn1cblxuZnVuY3Rpb24gc3R5bGVSZXBsYWNlcigkMCwgJDEpIHtcbiAgcmV0dXJuICQxLnRvVXBwZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGVcbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBIYW5kbGUgdmFsdWVzIGJhc2VkIG9uIGEgcHJvcGVydHkuXG5mdW5jdGlvbiBmYWN0b3J5KGtleSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG5cbiAgZnVuY3Rpb24gb25lKHZhbHVlKSB7XG4gICAgdmFyIGZuID0gb25lLmludmFsaWRcbiAgICB2YXIgaGFuZGxlcnMgPSBvbmUuaGFuZGxlcnNcblxuICAgIGlmICh2YWx1ZSAmJiBvd24uY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgZm4gPSBvd24uY2FsbChoYW5kbGVycywgdmFsdWVba2V5XSkgPyBoYW5kbGVyc1t2YWx1ZVtrZXldXSA6IG9uZS51bmtub3duXG4gICAgfVxuXG4gICAgcmV0dXJuIChmbiB8fCBub29wKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cblxuICBvbmUuaGFuZGxlcnMgPSBzZXR0aW5ncy5oYW5kbGVycyB8fCB7fVxuICBvbmUuaW52YWxpZCA9IHNldHRpbmdzLmludmFsaWRcbiAgb25lLnVua25vd24gPSBzZXR0aW5ncy51bmtub3duXG5cbiAgcmV0dXJuIG9uZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBodG1sID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vaHRtbCcpXG52YXIgc3ZnID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciBmaW5kID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vZmluZCcpXG52YXIgdG9IID0gcmVxdWlyZSgnaGFzdC10by1oeXBlcnNjcmlwdCcpXG52YXIgbnMgPSByZXF1aXJlKCd3ZWItbmFtZXNwYWNlcycpXG52YXIgendpdGNoID0gcmVxdWlyZSgnendpdGNoJylcblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm1cblxudmFyIGlnbm9yZWRTcGFjZXMgPSBbJ3N2ZycsICdodG1sJ11cblxudmFyIG9uZSA9IHp3aXRjaCgndHlwZScpXG5cbm9uZS5oYW5kbGVycy5yb290ID0gcm9vdFxub25lLmhhbmRsZXJzLmVsZW1lbnQgPSBlbGVtZW50XG5vbmUuaGFuZGxlcnMudGV4dCA9IHRleHRcbm9uZS5oYW5kbGVycy5jb21tZW50ID0gY29tbWVudFxub25lLmhhbmRsZXJzLmRvY3R5cGUgPSBkb2N0eXBlXG5cbi8vIFRyYW5zZm9ybSBhIHRyZWUgZnJvbSBoYXN0IHRvIFBhcnNlNeKAmXMgQVNULlxuZnVuY3Rpb24gdHJhbnNmb3JtKHRyZWUsIHNwYWNlKSB7XG4gIHJldHVybiBvbmUodHJlZSwgc3BhY2UgPT09ICdzdmcnID8gc3ZnIDogaHRtbClcbn1cblxuZnVuY3Rpb24gcm9vdChub2RlLCBzY2hlbWEpIHtcbiAgdmFyIGRhdGEgPSBub2RlLmRhdGEgfHwge31cbiAgdmFyIG1vZGUgPSBkYXRhLnF1aXJrc01vZGUgPyAncXVpcmtzJyA6ICduby1xdWlya3MnXG5cbiAgcmV0dXJuIHBhdGNoKG5vZGUsIHtub2RlTmFtZTogJyNkb2N1bWVudCcsIG1vZGU6IG1vZGV9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGZyYWdtZW50KG5vZGUsIHNjaGVtYSkge1xuICByZXR1cm4gcGF0Y2gobm9kZSwge25vZGVOYW1lOiAnI2RvY3VtZW50LWZyYWdtZW50J30sIHNjaGVtYSlcbn1cblxuZnVuY3Rpb24gZG9jdHlwZShub2RlLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHBhdGNoKFxuICAgIG5vZGUsXG4gICAge1xuICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICAgIHB1YmxpY0lkOiBub2RlLnB1YmxpYyB8fCAnJyxcbiAgICAgIHN5c3RlbUlkOiBub2RlLnN5c3RlbSB8fCAnJ1xuICAgIH0sXG4gICAgc2NoZW1hXG4gIClcbn1cblxuZnVuY3Rpb24gdGV4dChub2RlLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHBhdGNoKG5vZGUsIHtub2RlTmFtZTogJyN0ZXh0JywgdmFsdWU6IG5vZGUudmFsdWV9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGNvbW1lbnQobm9kZSwgc2NoZW1hKSB7XG4gIHJldHVybiBwYXRjaChub2RlLCB7bm9kZU5hbWU6ICcjY29tbWVudCcsIGRhdGE6IG5vZGUudmFsdWV9LCBzY2hlbWEpXG59XG5cbmZ1bmN0aW9uIGVsZW1lbnQobm9kZSwgc2NoZW1hKSB7XG4gIHZhciBzcGFjZSA9IHNjaGVtYS5zcGFjZVxuICB2YXIgc2hhbGxvdyA9IHh0ZW5kKG5vZGUsIHtjaGlsZHJlbjogW119KVxuXG4gIHJldHVybiB0b0goaCwgc2hhbGxvdywge3NwYWNlOiBzcGFjZX0pXG5cbiAgZnVuY3Rpb24gaChuYW1lLCBhdHRycykge1xuICAgIHZhciB2YWx1ZXMgPSBbXVxuICAgIHZhciBwNVxuICAgIHZhciBhdHRyXG4gICAgdmFyIHZhbHVlXG4gICAgdmFyIGtleVxuICAgIHZhciBpbmZvXG4gICAgdmFyIHBvc1xuXG4gICAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAgICAgIGluZm8gPSBmaW5kKHNjaGVtYSwga2V5KVxuICAgICAgYXR0ciA9IGF0dHJzW2tleV1cblxuICAgICAgaWYgKGF0dHIgPT09IGZhbHNlIHx8IChpbmZvLmJvb2xlYW4gJiYgIWF0dHIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0ge25hbWU6IGtleSwgdmFsdWU6IGF0dHIgPT09IHRydWUgPyAnJyA6IFN0cmluZyhhdHRyKX1cblxuICAgICAgaWYgKGluZm8uc3BhY2UgJiYgaWdub3JlZFNwYWNlcy5pbmRleE9mKGluZm8uc3BhY2UpID09PSAtMSkge1xuICAgICAgICBwb3MgPSBrZXkuaW5kZXhPZignOicpXG5cbiAgICAgICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgICAgICB2YWx1ZS5wcmVmaXggPSAnJ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlLm5hbWUgPSBrZXkuc2xpY2UocG9zICsgMSlcbiAgICAgICAgICB2YWx1ZS5wcmVmaXggPSBrZXkuc2xpY2UoMCwgcG9zKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUubmFtZXNwYWNlID0gbnNbaW5mby5zcGFjZV1cbiAgICAgIH1cblxuICAgICAgdmFsdWVzLnB1c2godmFsdWUpXG4gICAgfVxuXG4gICAgcDUgPSBwYXRjaChub2RlLCB7bm9kZU5hbWU6IG5hbWUsIHRhZ05hbWU6IG5hbWUsIGF0dHJzOiB2YWx1ZXN9LCBzY2hlbWEpXG5cbiAgICBpZiAobmFtZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgcDUuY29udGVudCA9IGZyYWdtZW50KHNoYWxsb3cuY29udGVudCwgc2NoZW1hKVxuICAgIH1cblxuICAgIHJldHVybiBwNVxuICB9XG59XG5cbi8vIFBhdGNoIHNwZWNpZmljIHByb3BlcnRpZXMuXG5mdW5jdGlvbiBwYXRjaChub2RlLCBwNSwgcGFyZW50U2NoZW1hKSB7XG4gIHZhciBzY2hlbWEgPSBwYXJlbnRTY2hlbWFcbiAgdmFyIHBvc2l0aW9uID0gbm9kZS5wb3NpdGlvblxuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuXG4gIHZhciBjaGlsZE5vZGVzID0gW11cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuID8gY2hpbGRyZW4ubGVuZ3RoIDogMFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgY2hpbGRcblxuICBpZiAobm9kZS50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICBpZiAoc2NoZW1hLnNwYWNlID09PSAnaHRtbCcgJiYgbm9kZS50YWdOYW1lID09PSAnc3ZnJykge1xuICAgICAgc2NoZW1hID0gc3ZnXG4gICAgfVxuXG4gICAgcDUubmFtZXNwYWNlVVJJID0gbnNbc2NoZW1hLnNwYWNlXVxuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGlsZCA9IG9uZShjaGlsZHJlbltpbmRleF0sIHNjaGVtYSlcbiAgICBjaGlsZC5wYXJlbnROb2RlID0gcDVcbiAgICBjaGlsZE5vZGVzW2luZGV4XSA9IGNoaWxkXG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSAnZWxlbWVudCcgfHwgbm9kZS50eXBlID09PSAncm9vdCcpIHtcbiAgICBwNS5jaGlsZE5vZGVzID0gY2hpbGROb2Rlc1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uLnN0YXJ0ICYmIHBvc2l0aW9uLmVuZCkge1xuICAgIHA1LnNvdXJjZUNvZGVMb2NhdGlvbiA9IHtcbiAgICAgIHN0YXJ0TGluZTogcG9zaXRpb24uc3RhcnQubGluZSxcbiAgICAgIHN0YXJ0Q29sOiBwb3NpdGlvbi5zdGFydC5jb2x1bW4sXG4gICAgICBzdGFydE9mZnNldDogcG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgZW5kTGluZTogcG9zaXRpb24uZW5kLmxpbmUsXG4gICAgICBlbmRDb2w6IHBvc2l0aW9uLmVuZC5jb2x1bW4sXG4gICAgICBlbmRPZmZzZXQ6IHBvc2l0aW9uLmVuZC5vZmZzZXRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcDVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgUGFyc2VyID0gcmVxdWlyZSgncGFyc2U1L2xpYi9wYXJzZXInKVxudmFyIHBvcyA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcG9zaXRpb24nKVxudmFyIGZyb21QYXJzZTUgPSByZXF1aXJlKCdoYXN0LXV0aWwtZnJvbS1wYXJzZTUnKVxudmFyIHRvUGFyc2U1ID0gcmVxdWlyZSgnaGFzdC11dGlsLXRvLXBhcnNlNScpXG52YXIgdm9pZHMgPSByZXF1aXJlKCdodG1sLXZvaWQtZWxlbWVudHMnKVxudmFyIG5zID0gcmVxdWlyZSgnd2ViLW5hbWVzcGFjZXMnKVxudmFyIHp3aXRjaCA9IHJlcXVpcmUoJ3p3aXRjaCcpXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG5cbm1vZHVsZS5leHBvcnRzID0gd3JhcFxuXG52YXIgaW5UZW1wbGF0ZU1vZGUgPSAnSU5fVEVNUExBVEVfTU9ERSdcbnZhciBkYXRhU3RhdGUgPSAnREFUQV9TVEFURSdcbnZhciBjaGFyYWN0ZXJUb2tlbiA9ICdDSEFSQUNURVJfVE9LRU4nXG52YXIgc3RhcnRUYWdUb2tlbiA9ICdTVEFSVF9UQUdfVE9LRU4nXG52YXIgZW5kVGFnVG9rZW4gPSAnRU5EX1RBR19UT0tFTidcbnZhciBjb21tZW50VG9rZW4gPSAnQ09NTUVOVF9UT0tFTidcbnZhciBkb2N0eXBlVG9rZW4gPSAnRE9DVFlQRV9UT0tFTidcblxudmFyIHBhcnNlT3B0aW9ucyA9IHtcbiAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogdHJ1ZSxcbiAgc2NyaXB0aW5nRW5hYmxlZDogZmFsc2Vcbn1cblxuZnVuY3Rpb24gd3JhcCh0cmVlLCBmaWxlKSB7XG4gIHZhciBwYXJzZXIgPSBuZXcgUGFyc2VyKHBhcnNlT3B0aW9ucylcbiAgdmFyIG9uZSA9IHp3aXRjaCgndHlwZScpXG4gIHZhciB0b2tlbml6ZXJcbiAgdmFyIHByZXByb2Nlc3NvclxuICB2YXIgcG9zVHJhY2tlclxuICB2YXIgbG9jYXRpb25UcmFja2VyXG4gIHZhciByZXN1bHRcblxuICBvbmUuaGFuZGxlcnMucm9vdCA9IHJvb3RcbiAgb25lLmhhbmRsZXJzLmVsZW1lbnQgPSBlbGVtZW50XG4gIG9uZS5oYW5kbGVycy50ZXh0ID0gdGV4dFxuICBvbmUuaGFuZGxlcnMuY29tbWVudCA9IGNvbW1lbnRcbiAgb25lLmhhbmRsZXJzLmRvY3R5cGUgPSBkb2N0eXBlXG4gIG9uZS5oYW5kbGVycy5yYXcgPSByYXdcbiAgb25lLnVua25vd24gPSB1bmtub3duXG5cbiAgcmVzdWx0ID0gZnJvbVBhcnNlNShkb2N1bWVudE1vZGUodHJlZSkgPyBkb2N1bWVudCgpIDogZnJhZ21lbnQoKSwgZmlsZSlcblxuICAvLyBVbnBhY2sgaWYgcG9zc2libGUgYW5kIHdoZW4gbm90IGdpdmVuIGEgYHJvb3RgLlxuICBpZiAodHJlZS50eXBlICE9PSAncm9vdCcgJiYgcmVzdWx0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiByZXN1bHQuY2hpbGRyZW5bMF1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcblxuICBmdW5jdGlvbiBmcmFnbWVudCgpIHtcbiAgICB2YXIgY29udGV4dFxuICAgIHZhciBtb2NrXG4gICAgdmFyIGRvY1xuXG4gICAgY29udGV4dCA9IHtcbiAgICAgIG5vZGVOYW1lOiAndGVtcGxhdGUnLFxuICAgICAgdGFnTmFtZTogJ3RlbXBsYXRlJyxcbiAgICAgIGF0dHJzOiBbXSxcbiAgICAgIG5hbWVzcGFjZVVSSTogbnMuaHRtbCxcbiAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgfVxuXG4gICAgbW9jayA9IHtcbiAgICAgIG5vZGVOYW1lOiAnZG9jdW1lbnRtb2NrJyxcbiAgICAgIHRhZ05hbWU6ICdkb2N1bWVudG1vY2snLFxuICAgICAgYXR0cnM6IFtdLFxuICAgICAgbmFtZXNwYWNlVVJJOiBucy5odG1sLFxuICAgICAgY2hpbGROb2RlczogW11cbiAgICB9XG5cbiAgICBkb2MgPSB7XG4gICAgICBub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCcsXG4gICAgICBjaGlsZE5vZGVzOiBbXVxuICAgIH1cblxuICAgIHBhcnNlci5fYm9vdHN0cmFwKG1vY2ssIGNvbnRleHQpXG4gICAgcGFyc2VyLl9wdXNoVG1wbEluc2VydGlvbk1vZGUoaW5UZW1wbGF0ZU1vZGUpXG4gICAgcGFyc2VyLl9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKClcbiAgICBwYXJzZXIuX2luc2VydEZha2VSb290RWxlbWVudCgpXG4gICAgcGFyc2VyLl9yZXNldEluc2VydGlvbk1vZGUoKVxuICAgIHBhcnNlci5fZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpXG5cbiAgICB0b2tlbml6ZXIgPSBwYXJzZXIudG9rZW5pemVyXG4gICAgcHJlcHJvY2Vzc29yID0gdG9rZW5pemVyLnByZXByb2Nlc3NvclxuICAgIGxvY2F0aW9uVHJhY2tlciA9IHRva2VuaXplci5fX21peGluc1swXVxuICAgIHBvc1RyYWNrZXIgPSBsb2NhdGlvblRyYWNrZXIucG9zVHJhY2tlclxuXG4gICAgb25lKHRyZWUpXG5cbiAgICBwYXJzZXIuX2Fkb3B0Tm9kZXMobW9jay5jaGlsZE5vZGVzWzBdLCBkb2MpXG5cbiAgICByZXR1cm4gZG9jXG4gIH1cblxuICBmdW5jdGlvbiBkb2N1bWVudCgpIHtcbiAgICB2YXIgZG9jID0gcGFyc2VyLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KClcblxuICAgIHBhcnNlci5fYm9vdHN0cmFwKGRvYywgbnVsbClcbiAgICB0b2tlbml6ZXIgPSBwYXJzZXIudG9rZW5pemVyXG4gICAgcHJlcHJvY2Vzc29yID0gdG9rZW5pemVyLnByZXByb2Nlc3NvclxuICAgIGxvY2F0aW9uVHJhY2tlciA9IHRva2VuaXplci5fX21peGluc1swXVxuICAgIHBvc1RyYWNrZXIgPSBsb2NhdGlvblRyYWNrZXIucG9zVHJhY2tlclxuXG4gICAgb25lKHRyZWUpXG5cbiAgICByZXR1cm4gZG9jXG4gIH1cblxuICBmdW5jdGlvbiBhbGwobm9kZXMpIHtcbiAgICB2YXIgbGVuZ3RoID0gMFxuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAtIGludmFsaWQgbm9kZXMsIHNlZSByZWh5cGVqcy9yZWh5cGUtcmF3IzcuICovXG4gICAgaWYgKG5vZGVzKSB7XG4gICAgICBsZW5ndGggPSBub2Rlcy5sZW5ndGhcbiAgICB9XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgb25lKG5vZGVzW2luZGV4XSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb290KG5vZGUpIHtcbiAgICBhbGwobm9kZS5jaGlsZHJlbilcbiAgfVxuXG4gIGZ1bmN0aW9uIGVsZW1lbnQobm9kZSkge1xuICAgIHZhciBlbXB0eSA9IHZvaWRzLmluZGV4T2Yobm9kZS50YWdOYW1lKSAhPT0gLTFcblxuICAgIHBhcnNlci5fcHJvY2Vzc1Rva2VuKHN0YXJ0VGFnKG5vZGUpLCBucy5odG1sKVxuXG4gICAgYWxsKG5vZGUuY2hpbGRyZW4pXG5cbiAgICBpZiAoIWVtcHR5KSB7XG4gICAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbihlbmRUYWcobm9kZSkpXG5cbiAgICAgIC8vIFB1dCB0aGUgcGFyc2VyIGJhY2sgaW4gdGhlIGRhdGEgc3RhdGU6IHNvbWUgZWxlbWVudHMsIGxpa2UgdGV4dGFyZWFzXG4gICAgICAvLyBhbmQgaWZyYW1lcywgY2hhbmdlIHRoZSBzdGF0ZS5cbiAgICAgIC8vIFNlZSA8c3ludGF4LXRyZWUvaGFzdC11dGlsLXJhdyM3Pi5cbiAgICAgIC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzI1MjgxOTYvcGFja2FnZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMjTDIyMj4uXG4gICAgICB0b2tlbml6ZXIuc3RhdGUgPSBkYXRhU3RhdGVcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0ZXh0KG5vZGUpIHtcbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBjaGFyYWN0ZXJUb2tlbixcbiAgICAgIGNoYXJzOiBub2RlLnZhbHVlLFxuICAgICAgbG9jYXRpb246IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGRvY3R5cGUobm9kZSkge1xuICAgIHZhciBwNSA9IHRvUGFyc2U1KG5vZGUpXG5cbiAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih7XG4gICAgICB0eXBlOiBkb2N0eXBlVG9rZW4sXG4gICAgICBuYW1lOiBwNS5uYW1lLFxuICAgICAgZm9yY2VRdWlya3M6IGZhbHNlLFxuICAgICAgcHVibGljSWQ6IHA1LnB1YmxpY0lkLFxuICAgICAgc3lzdGVtSWQ6IHA1LnN5c3RlbUlkLFxuICAgICAgbG9jYXRpb246IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbW1lbnQobm9kZSkge1xuICAgIHBhcnNlci5fcHJvY2Vzc1Rva2VuKHtcbiAgICAgIHR5cGU6IGNvbW1lbnRUb2tlbixcbiAgICAgIGRhdGE6IG5vZGUudmFsdWUsXG4gICAgICBsb2NhdGlvbjogY3JlYXRlUGFyc2U1TG9jYXRpb24obm9kZSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmF3KG5vZGUpIHtcbiAgICB2YXIgc3RhcnQgPSBwb3Muc3RhcnQobm9kZSlcbiAgICB2YXIgdG9rZW5cblxuICAgIC8vIFJlc2V0IHByZXByb2Nlc3NvcjpcbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvMDQ5MTkwMi9wYWNrYWdlcy9wYXJzZTUvbGliL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanM+LlxuICAgIHByZXByb2Nlc3Nvci5odG1sID0gbnVsbFxuICAgIHByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0ID0gZmFsc2VcbiAgICBwcmVwcm9jZXNzb3IubGFzdENodW5rV3JpdHRlbiA9IGZhbHNlXG4gICAgcHJlcHJvY2Vzc29yLmxhc3RDaGFyUG9zID0gLTFcbiAgICBwcmVwcm9jZXNzb3IucG9zID0gLTFcblxuICAgIC8vIFJlc2V0IHByZXByb2Nlc3NvciBtaXhpbjpcbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvMDQ5MTkwMi9wYWNrYWdlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvcG9zaXRpb24tdHJhY2tpbmcvcHJlcHJvY2Vzc29yLW1peGluLmpzPi5cbiAgICBwb3NUcmFja2VyLmRyb3BwZWRCdWZmZXJTaXplID0gMFxuICAgIHBvc1RyYWNrZXIubGluZSA9IHN0YXJ0LmxpbmVcbiAgICBwb3NUcmFja2VyLmNvbCA9IDFcbiAgICBwb3NUcmFja2VyLm9mZnNldCA9IDBcbiAgICBwb3NUcmFja2VyLmxpbmVTdGFydFBvcyA9IC1zdGFydC5jb2x1bW4gKyAxXG4gICAgcG9zVHJhY2tlci5kcm9wcGVkQnVmZmVyU2l6ZSA9IHN0YXJ0Lm9mZnNldFxuXG4gICAgLy8gUmVzZXQgbG9jYXRpb24gdHJhY2tlcjpcbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvMDQ5MTkwMi9wYWNrYWdlcy9wYXJzZTUvbGliL2V4dGVuc2lvbnMvbG9jYXRpb24taW5mby90b2tlbml6ZXItbWl4aW4uanM+LlxuICAgIGxvY2F0aW9uVHJhY2tlci5jdXJyZW50QXR0ckxvY2F0aW9uID0gbnVsbFxuICAgIGxvY2F0aW9uVHJhY2tlci5jdExvYyA9IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG5cbiAgICAvLyBTZWUgdGhlIGNvZGUgZm9yIGBwYXJzZWAgYW5kIGBwYXJzZUZyYWdtZW50YDpcbiAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vaW5pa3VsaW4vcGFyc2U1L2Jsb2IvMDQ5MTkwMi9wYWNrYWdlcy9wYXJzZTUvbGliL3BhcnNlci9pbmRleC5qcyNMMzcxPi5cbiAgICB0b2tlbml6ZXIud3JpdGUobm9kZS52YWx1ZSlcbiAgICBwYXJzZXIuX3J1blBhcnNpbmdMb29wKG51bGwpXG5cbiAgICAvLyBQcm9jZXNzIGZpbmFsIGNoYXJhY3RlcnMgaWYgdGhleeKAmXJlIHN0aWxsIHRoZXJlIGFmdGVyIGhpYmVybmF0aW5nLlxuICAgIC8vIFNpbWlsYXIgdG86XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzNiZmE3ZDkvcGFja2FnZXMvcGFyc2U1L2xpYi9leHRlbnNpb25zL2xvY2F0aW9uLWluZm8vdG9rZW5pemVyLW1peGluLmpzI0w5NT4uXG4gICAgdG9rZW4gPSB0b2tlbml6ZXIuY3VycmVudENoYXJhY3RlclRva2VuXG5cbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHRva2VuLmxvY2F0aW9uLmVuZExpbmUgPSBwb3NUcmFja2VyLmxpbmVcbiAgICAgIHRva2VuLmxvY2F0aW9uLmVuZENvbCA9IHBvc1RyYWNrZXIuY29sICsgMVxuICAgICAgdG9rZW4ubG9jYXRpb24uZW5kT2Zmc2V0ID0gcG9zVHJhY2tlci5vZmZzZXQgKyAxXG4gICAgICBwYXJzZXIuX3Byb2Nlc3NUb2tlbih0b2tlbilcbiAgICB9XG5cbiAgICAvLyBSZXNldCB0b2tlbml6ZXI6XG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2luaWt1bGluL3BhcnNlNS9ibG9iLzhiMDA0OGUvcGFja2FnZXMvcGFyc2U1L2xpYi90b2tlbml6ZXIvaW5kZXguanMjTDIxNT4uXG4gICAgdG9rZW5pemVyLmN1cnJlbnRUb2tlbiA9IG51bGxcbiAgICB0b2tlbml6ZXIuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbFxuICAgIHRva2VuaXplci5jdXJyZW50QXR0ciA9IG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydFRhZyhub2RlKSB7XG4gIHZhciBsb2NhdGlvbiA9IGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpXG5cbiAgbG9jYXRpb24uc3RhcnRUYWcgPSB4dGVuZChsb2NhdGlvbilcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IHN0YXJ0VGFnVG9rZW4sXG4gICAgdGFnTmFtZTogbm9kZS50YWdOYW1lLFxuICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICBhdHRyczogYXR0cmlidXRlcyhub2RlKSxcbiAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgfVxufVxuXG5mdW5jdGlvbiBhdHRyaWJ1dGVzKG5vZGUpIHtcbiAgcmV0dXJuIHRvUGFyc2U1KHtcbiAgICB0YWdOYW1lOiBub2RlLnRhZ05hbWUsXG4gICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgIHByb3BlcnRpZXM6IG5vZGUucHJvcGVydGllc1xuICB9KS5hdHRyc1xufVxuXG5mdW5jdGlvbiBlbmRUYWcobm9kZSkge1xuICB2YXIgbG9jYXRpb24gPSBjcmVhdGVQYXJzZTVMb2NhdGlvbihub2RlKVxuXG4gIGxvY2F0aW9uLmVuZFRhZyA9IHh0ZW5kKGxvY2F0aW9uKVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZW5kVGFnVG9rZW4sXG4gICAgdGFnTmFtZTogbm9kZS50YWdOYW1lLFxuICAgIGF0dHJzOiBbXSxcbiAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgfVxufVxuXG5mdW5jdGlvbiB1bmtub3duKG5vZGUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29tcGlsZSBgJyArIG5vZGUudHlwZSArICdgIG5vZGUnKVxufVxuXG5mdW5jdGlvbiBkb2N1bWVudE1vZGUobm9kZSkge1xuICB2YXIgaGVhZCA9IG5vZGUudHlwZSA9PT0gJ3Jvb3QnID8gbm9kZS5jaGlsZHJlblswXSA6IG5vZGVcblxuICByZXR1cm4gaGVhZCAmJiAoaGVhZC50eXBlID09PSAnZG9jdHlwZScgfHwgaGVhZC50YWdOYW1lID09PSAnaHRtbCcpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlNUxvY2F0aW9uKG5vZGUpIHtcbiAgdmFyIHN0YXJ0ID0gcG9zLnN0YXJ0KG5vZGUpXG4gIHZhciBlbmQgPSBwb3MuZW5kKG5vZGUpXG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydExpbmU6IHN0YXJ0LmxpbmUsXG4gICAgc3RhcnRDb2w6IHN0YXJ0LmNvbHVtbixcbiAgICBzdGFydE9mZnNldDogc3RhcnQub2Zmc2V0LFxuICAgIGVuZExpbmU6IGVuZC5saW5lLFxuICAgIGVuZENvbDogZW5kLmNvbHVtbixcbiAgICBlbmRPZmZzZXQ6IGVuZC5vZmZzZXRcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnaGFzdC11dGlsLXJhdycpXG5cbm1vZHVsZS5leHBvcnRzID0gcmF3XG5cbmZ1bmN0aW9uIHJhdygpIHtcbiAgcmV0dXJuIHV0aWxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnZlcnRcblxuZnVuY3Rpb24gY29udmVydCh0ZXN0KSB7XG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZUZhY3RvcnkodGVzdClcbiAgfVxuXG4gIGlmICh0ZXN0ID09PSBudWxsIHx8IHRlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBva1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAoJ2xlbmd0aCcgaW4gdGVzdCA/IGFueUZhY3RvcnkgOiBtYXRjaGVzRmFjdG9yeSkodGVzdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0ZXN0XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Jylcbn1cblxuZnVuY3Rpb24gY29udmVydEFsbCh0ZXN0cykge1xuICB2YXIgcmVzdWx0cyA9IFtdXG4gIHZhciBsZW5ndGggPSB0ZXN0cy5sZW5ndGhcbiAgdmFyIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdHNbaW5kZXhdID0gY29udmVydCh0ZXN0c1tpbmRleF0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0c1xufVxuXG4vLyBVdGlsaXR5IGFzc2VydCBlYWNoIHByb3BlcnR5IGluIGB0ZXN0YCBpcyByZXByZXNlbnRlZCBpbiBgbm9kZWAsIGFuZCBlYWNoXG4vLyB2YWx1ZXMgYXJlIHN0cmljdGx5IGVxdWFsLlxuZnVuY3Rpb24gbWF0Y2hlc0ZhY3RvcnkodGVzdCkge1xuICByZXR1cm4gbWF0Y2hlc1xuXG4gIGZ1bmN0aW9uIG1hdGNoZXMobm9kZSkge1xuICAgIHZhciBrZXlcblxuICAgIGZvciAoa2V5IGluIHRlc3QpIHtcbiAgICAgIGlmIChub2RlW2tleV0gIT09IHRlc3Rba2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGFueUZhY3RvcnkodGVzdHMpIHtcbiAgdmFyIGNoZWNrcyA9IGNvbnZlcnRBbGwodGVzdHMpXG4gIHZhciBsZW5ndGggPSBjaGVja3MubGVuZ3RoXG5cbiAgcmV0dXJuIG1hdGNoZXNcblxuICBmdW5jdGlvbiBtYXRjaGVzKCkge1xuICAgIHZhciBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNoZWNrc1tpbmRleF0uYXBwbHkodGhpcywgYXJndW1lbnRzKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8vIFV0aWxpdHkgdG8gY29udmVydCBhIHN0cmluZyBpbnRvIGEgZnVuY3Rpb24gd2hpY2ggY2hlY2tzIGEgZ2l2ZW4gbm9kZeKAmXMgdHlwZVxuLy8gZm9yIHNhaWQgc3RyaW5nLlxuZnVuY3Rpb24gdHlwZUZhY3RvcnkodGVzdCkge1xuICByZXR1cm4gdHlwZVxuXG4gIGZ1bmN0aW9uIHR5cGUobm9kZSkge1xuICAgIHJldHVybiBCb29sZWFuKG5vZGUgJiYgbm9kZS50eXBlID09PSB0ZXN0KVxuICB9XG59XG5cbi8vIFV0aWxpdHkgdG8gcmV0dXJuIHRydWUuXG5mdW5jdGlvbiBvaygpIHtcbiAgcmV0dXJuIHRydWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0UGFyZW50c1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG5cbnZhciBDT05USU5VRSA9IHRydWVcbnZhciBTS0lQID0gJ3NraXAnXG52YXIgRVhJVCA9IGZhbHNlXG5cbnZpc2l0UGFyZW50cy5DT05USU5VRSA9IENPTlRJTlVFXG52aXNpdFBhcmVudHMuU0tJUCA9IFNLSVBcbnZpc2l0UGFyZW50cy5FWElUID0gRVhJVFxuXG5mdW5jdGlvbiB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICB2YXIgaXNcblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZpc2l0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXZlcnNlID0gdmlzaXRvclxuICAgIHZpc2l0b3IgPSB0ZXN0XG4gICAgdGVzdCA9IG51bGxcbiAgfVxuXG4gIGlzID0gY29udmVydCh0ZXN0KVxuXG4gIG9uZSh0cmVlLCBudWxsLCBbXSlcblxuICAvLyBWaXNpdCBhIHNpbmdsZSBub2RlLlxuICBmdW5jdGlvbiBvbmUobm9kZSwgaW5kZXgsIHBhcmVudHMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW11cbiAgICB2YXIgc3VicmVzdWx0XG5cbiAgICBpZiAoIXRlc3QgfHwgaXMobm9kZSwgaW5kZXgsIHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXSB8fCBudWxsKSkge1xuICAgICAgcmVzdWx0ID0gdG9SZXN1bHQodmlzaXRvcihub2RlLCBwYXJlbnRzKSlcblxuICAgICAgaWYgKHJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgcmVzdWx0WzBdICE9PSBTS0lQKSB7XG4gICAgICBzdWJyZXN1bHQgPSB0b1Jlc3VsdChhbGwobm9kZS5jaGlsZHJlbiwgcGFyZW50cy5jb25jYXQobm9kZSkpKVxuICAgICAgcmV0dXJuIHN1YnJlc3VsdFswXSA9PT0gRVhJVCA/IHN1YnJlc3VsdCA6IHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8vIFZpc2l0IGNoaWxkcmVuIGluIGBwYXJlbnRgLlxuICBmdW5jdGlvbiBhbGwoY2hpbGRyZW4sIHBhcmVudHMpIHtcbiAgICB2YXIgbWluID0gLTFcbiAgICB2YXIgc3RlcCA9IHJldmVyc2UgPyAtMSA6IDFcbiAgICB2YXIgaW5kZXggPSAocmV2ZXJzZSA/IGNoaWxkcmVuLmxlbmd0aCA6IG1pbikgKyBzdGVwXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgd2hpbGUgKGluZGV4ID4gbWluICYmIGluZGV4IDwgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBvbmUoY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgcGFyZW50cylcblxuICAgICAgaWYgKHJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gdHlwZW9mIHJlc3VsdFsxXSA9PT0gJ251bWJlcicgPyByZXN1bHRbMV0gOiBpbmRleCArIHN0ZXBcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9SZXN1bHQodmFsdWUpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtDT05USU5VRSwgdmFsdWVdXG4gIH1cblxuICByZXR1cm4gW3ZhbHVlXVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdmlzaXRcblxudmFyIHZpc2l0UGFyZW50cyA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cycpXG5cbnZhciBDT05USU5VRSA9IHZpc2l0UGFyZW50cy5DT05USU5VRVxudmFyIFNLSVAgPSB2aXNpdFBhcmVudHMuU0tJUFxudmFyIEVYSVQgPSB2aXNpdFBhcmVudHMuRVhJVFxuXG52aXNpdC5DT05USU5VRSA9IENPTlRJTlVFXG52aXNpdC5TS0lQID0gU0tJUFxudmlzaXQuRVhJVCA9IEVYSVRcblxuZnVuY3Rpb24gdmlzaXQodHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZpc2l0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXZlcnNlID0gdmlzaXRvclxuICAgIHZpc2l0b3IgPSB0ZXN0XG4gICAgdGVzdCA9IG51bGxcbiAgfVxuXG4gIHZpc2l0UGFyZW50cyh0cmVlLCB0ZXN0LCBvdmVybG9hZCwgcmV2ZXJzZSlcblxuICBmdW5jdGlvbiBvdmVybG9hZChub2RlLCBwYXJlbnRzKSB7XG4gICAgdmFyIHBhcmVudCA9IHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXVxuICAgIHZhciBpbmRleCA9IHBhcmVudCA/IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKG5vZGUpIDogbnVsbFxuICAgIHJldHVybiB2aXNpdG9yKG5vZGUsIGluZGV4LCBwYXJlbnQpXG4gIH1cbn1cbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImthdGV4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImthdGV4XCJdID0gZmFjdG9yeSgpO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL3NyYy9rYXRleC5sZXNzXG52YXIga2F0ZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9Tb3VyY2VMb2NhdGlvbi5qc1xuLyoqXG4gKiBMZXhpbmcgb3IgcGFyc2luZyBwb3NpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBlcnJvciByZXBvcnRpbmcuXG4gKiBUaGlzIG9iamVjdCBpcyBpbW11dGFibGUuXG4gKi9cbnZhciBTb3VyY2VMb2NhdGlvbiA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8vIFRoZSArIHByZWZpeCBpbmRpY2F0ZXMgdGhhdCB0aGVzZSBmaWVsZHMgYXJlbid0IHdyaXRlYWJsZVxuICAvLyBMZXhlciBob2xkaW5nIHRoZSBpbnB1dCBzdHJpbmcuXG4gIC8vIFN0YXJ0IG9mZnNldCwgemVyby1iYXNlZCBpbmNsdXNpdmUuXG4gIC8vIEVuZCBvZmZzZXQsIHplcm8tYmFzZWQgZXhjbHVzaXZlLlxuICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihsZXhlciwgc3RhcnQsIGVuZCkge1xuICAgIHRoaXMubGV4ZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5zdGFydCA9IHZvaWQgMDtcbiAgICB0aGlzLmVuZCA9IHZvaWQgMDtcbiAgICB0aGlzLmxleGVyID0gbGV4ZXI7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG4gIC8qKlxuICAgKiBNZXJnZXMgdHdvIGBTb3VyY2VMb2NhdGlvbmBzIGZyb20gbG9jYXRpb24gcHJvdmlkZXJzLCBnaXZlbiB0aGV5IGFyZVxuICAgKiBwcm92aWRlZCBpbiBvcmRlciBvZiBhcHBlYXJhbmNlLlxuICAgKiAtIFJldHVybnMgdGhlIGZpcnN0IG9uZSdzIGxvY2F0aW9uIGlmIG9ubHkgdGhlIGZpcnN0IGlzIHByb3ZpZGVkLlxuICAgKiAtIFJldHVybnMgYSBtZXJnZWQgcmFuZ2Ugb2YgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBpZiBib3RoIGFyZSBwcm92aWRlZFxuICAgKiAgIGFuZCB0aGVpciBsZXhlcnMgbWF0Y2guXG4gICAqIC0gT3RoZXJ3aXNlLCByZXR1cm5zIG51bGwuXG4gICAqL1xuXG5cbiAgU291cmNlTG9jYXRpb24ucmFuZ2UgPSBmdW5jdGlvbiByYW5nZShmaXJzdCwgc2Vjb25kKSB7XG4gICAgaWYgKCFzZWNvbmQpIHtcbiAgICAgIHJldHVybiBmaXJzdCAmJiBmaXJzdC5sb2M7XG4gICAgfSBlbHNlIGlmICghZmlyc3QgfHwgIWZpcnN0LmxvYyB8fCAhc2Vjb25kLmxvYyB8fCBmaXJzdC5sb2MubGV4ZXIgIT09IHNlY29uZC5sb2MubGV4ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNvdXJjZUxvY2F0aW9uKGZpcnN0LmxvYy5sZXhlciwgZmlyc3QubG9jLnN0YXJ0LCBzZWNvbmQubG9jLmVuZCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBTb3VyY2VMb2NhdGlvbjtcbn0oKTtcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9Ub2tlbi5qc1xuXG4vKipcbiAqIEludGVyZmFjZSByZXF1aXJlZCB0byBicmVhayBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gVG9rZW4sIExleGVyLCBhbmRcbiAqIFBhcnNlRXJyb3IuXG4gKi9cblxuLyoqXG4gKiBUaGUgcmVzdWx0aW5nIHRva2VuIHJldHVybmVkIGZyb20gYGxleGAuXG4gKlxuICogSXQgY29uc2lzdHMgb2YgdGhlIHRva2VuIHRleHQgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICogVGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbGx5IGEgcmFuZ2UgaW4gYW4gaW5wdXQgc3RyaW5nLFxuICogYnV0IGluc3RlYWQgb2YgcmVmZXJlbmNpbmcgdGhlIGJhcmUgaW5wdXQgc3RyaW5nLCB3ZSByZWZlciB0byB0aGUgbGV4ZXIuXG4gKiBUaGF0IHdheSBpdCBpcyBwb3NzaWJsZSB0byBhdHRhY2ggZXh0cmEgbWV0YWRhdGEgdG8gdGhlIGlucHV0IHN0cmluZyxcbiAqIGxpa2UgZm9yIGV4YW1wbGUgYSBmaWxlIG5hbWUgb3Igc2ltaWxhci5cbiAqXG4gKiBUaGUgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMgb3B0aW9uYWwsIHNvIGl0IGlzIE9LIHRvIGNvbnN0cnVjdCBzeW50aGV0aWNcbiAqIHRva2VucyBpZiBhcHByb3ByaWF0ZS4gTm90IHByb3ZpZGluZyBhdmFpbGFibGUgcG9zaXRpb24gaW5mb3JtYXRpb24gbWF5XG4gKiBsZWFkIHRvIGRlZ3JhZGVkIGVycm9yIHJlcG9ydGluZywgdGhvdWdoLlxuICovXG52YXIgVG9rZW5fVG9rZW4gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUb2tlbih0ZXh0LCAvLyB0aGUgdGV4dCBvZiB0aGlzIHRva2VuXG4gIGxvYykge1xuICAgIHRoaXMudGV4dCA9IHZvaWQgMDtcbiAgICB0aGlzLmxvYyA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMubG9jID0gbG9jO1xuICB9XG4gIC8qKlxuICAgKiBHaXZlbiBhIHBhaXIgb2YgdG9rZW5zICh0aGlzIGFuZCBlbmRUb2tlbiksIGNvbXB1dGUgYSBgVG9rZW5gIGVuY29tcGFzc2luZ1xuICAgKiB0aGUgd2hvbGUgaW5wdXQgcmFuZ2UgZW5jbG9zZWQgYnkgdGhlc2UgdHdvLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBUb2tlbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnJhbmdlID0gZnVuY3Rpb24gcmFuZ2UoZW5kVG9rZW4sIC8vIGxhc3QgdG9rZW4gb2YgdGhlIHJhbmdlLCBpbmNsdXNpdmVcbiAgdGV4dCkgLy8gdGhlIHRleHQgb2YgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIHRva2VuXG4gIHtcbiAgICByZXR1cm4gbmV3IFRva2VuKHRleHQsIFNvdXJjZUxvY2F0aW9uLnJhbmdlKHRoaXMsIGVuZFRva2VuKSk7XG4gIH07XG5cbiAgcmV0dXJuIFRva2VuO1xufSgpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvUGFyc2VFcnJvci5qc1xuXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgUGFyc2VFcnJvciBjbGFzcywgd2hpY2ggaXMgdGhlIG1haW4gZXJyb3IgdGhyb3duIGJ5IEthVGVYXG4gKiBmdW5jdGlvbnMgd2hlbiBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcuIFRoaXMgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBpbnRlcm5hbFxuICogZXJyb3JzIGZyb20gZXJyb3JzIGluIHRoZSBleHByZXNzaW9uIHRoYXQgdGhlIHVzZXIgcHJvdmlkZWQuXG4gKlxuICogSWYgcG9zc2libGUsIGEgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgVG9rZW4gb3IgUGFyc2VOb2RlIHdpdGggaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXJlIGluIHRoZSBzb3VyY2Ugc3RyaW5nIHRoZSBwcm9ibGVtIG9jY3VycmVkLlxuICovXG52YXIgUGFyc2VFcnJvciA9IC8vIEVycm9yIHBvc2l0aW9uIGJhc2VkIG9uIHBhc3NlZC1pbiBUb2tlbiBvciBQYXJzZU5vZGUuXG5mdW5jdGlvbiBQYXJzZUVycm9yKG1lc3NhZ2UsIC8vIFRoZSBlcnJvciBtZXNzYWdlXG50b2tlbikgLy8gQW4gb2JqZWN0IHByb3ZpZGluZyBwb3NpdGlvbiBpbmZvcm1hdGlvblxue1xuICB0aGlzLnBvc2l0aW9uID0gdm9pZCAwO1xuICB2YXIgZXJyb3IgPSBcIkthVGVYIHBhcnNlIGVycm9yOiBcIiArIG1lc3NhZ2U7XG4gIHZhciBzdGFydDtcbiAgdmFyIGxvYyA9IHRva2VuICYmIHRva2VuLmxvYztcblxuICBpZiAobG9jICYmIGxvYy5zdGFydCA8PSBsb2MuZW5kKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSB0aGUgaW5wdXQgYW5kIGEgcG9zaXRpb24sIG1ha2UgdGhlIGVycm9yIGEgYml0IGZhbmNpZXJcbiAgICAvLyBHZXQgdGhlIGlucHV0XG4gICAgdmFyIGlucHV0ID0gbG9jLmxleGVyLmlucHV0OyAvLyBQcmVwZW5kIHNvbWUgaW5mb3JtYXRpb25cblxuICAgIHN0YXJ0ID0gbG9jLnN0YXJ0O1xuICAgIHZhciBlbmQgPSBsb2MuZW5kO1xuXG4gICAgaWYgKHN0YXJ0ID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIGVycm9yICs9IFwiIGF0IGVuZCBvZiBpbnB1dDogXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yICs9IFwiIGF0IHBvc2l0aW9uIFwiICsgKHN0YXJ0ICsgMSkgKyBcIjogXCI7XG4gICAgfSAvLyBVbmRlcmxpbmUgdG9rZW4gaW4gcXVlc3Rpb24gdXNpbmcgY29tYmluaW5nIHVuZGVyc2NvcmVzXG5cblxuICAgIHZhciB1bmRlcmxpbmVkID0gaW5wdXQuc2xpY2Uoc3RhcnQsIGVuZCkucmVwbGFjZSgvW15dL2csIFwiJCZcXHUwMzMyXCIpOyAvLyBFeHRyYWN0IHNvbWUgY29udGV4dCBmcm9tIHRoZSBpbnB1dCBhbmQgYWRkIGl0IHRvIHRoZSBlcnJvclxuXG4gICAgdmFyIGxlZnQ7XG5cbiAgICBpZiAoc3RhcnQgPiAxNSkge1xuICAgICAgbGVmdCA9IFwi4oCmXCIgKyBpbnB1dC5zbGljZShzdGFydCAtIDE1LCBzdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlZnQgPSBpbnB1dC5zbGljZSgwLCBzdGFydCk7XG4gICAgfVxuXG4gICAgdmFyIHJpZ2h0O1xuXG4gICAgaWYgKGVuZCArIDE1IDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICByaWdodCA9IGlucHV0LnNsaWNlKGVuZCwgZW5kICsgMTUpICsgXCLigKZcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmlnaHQgPSBpbnB1dC5zbGljZShlbmQpO1xuICAgIH1cblxuICAgIGVycm9yICs9IGxlZnQgKyB1bmRlcmxpbmVkICsgcmlnaHQ7XG4gIH0gLy8gU29tZSBoYWNrZXJ5IHRvIG1ha2UgUGFyc2VFcnJvciBhIHByb3RvdHlwZSBvZiBFcnJvclxuICAvLyBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvODQ2MDc1M1xuXG5cbiAgdmFyIHNlbGYgPSBuZXcgRXJyb3IoZXJyb3IpO1xuICBzZWxmLm5hbWUgPSBcIlBhcnNlRXJyb3JcIjsgLy8gJEZsb3dGaXhNZVxuXG4gIHNlbGYuX19wcm90b19fID0gUGFyc2VFcnJvci5wcm90b3R5cGU7IC8vICRGbG93Rml4TWVcblxuICBzZWxmLnBvc2l0aW9uID0gc3RhcnQ7XG4gIHJldHVybiBzZWxmO1xufTsgLy8gJEZsb3dGaXhNZSBNb3JlIGhhY2tlcnlcblxuXG5QYXJzZUVycm9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBFcnJvci5wcm90b3R5cGU7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfUGFyc2VFcnJvciA9IChQYXJzZUVycm9yKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXJlIHVzZWZ1bCBpbiBvdGhlclxuICogZmlsZXMuXG4gKi9cblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBhbiBlbGVtZW50IGlzIGNvbnRhaW5lZCBpbiBhIGxpc3RcbiAqL1xudmFyIGNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMobGlzdCwgZWxlbSkge1xuICByZXR1cm4gbGlzdC5pbmRleE9mKGVsZW0pICE9PSAtMTtcbn07XG4vKipcbiAqIFByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlIGlmIGEgc2V0dGluZyBpcyB1bmRlZmluZWRcbiAqIE5PVEU6IENvdWxkbid0IHVzZSBgVGAgYXMgdGhlIG91dHB1dCB0eXBlIGR1ZSB0byBmYWNlYm9vay9mbG93IzUwMjIuXG4gKi9cblxuXG52YXIgZGVmbHQgPSBmdW5jdGlvbiBkZWZsdChzZXR0aW5nLCBkZWZhdWx0SWZVbmRlZmluZWQpIHtcbiAgcmV0dXJuIHNldHRpbmcgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRJZlVuZGVmaW5lZCA6IHNldHRpbmc7XG59OyAvLyBoeXBoZW5hdGUgYW5kIGVzY2FwZSBhZGFwdGVkIGZyb20gRmFjZWJvb2sncyBSZWFjdCB1bmRlciBBcGFjaGUgMiBsaWNlbnNlXG5cblxudmFyIHVwcGVyY2FzZSA9IC8oW0EtWl0pL2c7XG5cbnZhciBoeXBoZW5hdGUgPSBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSh1cHBlcmNhc2UsIFwiLSQxXCIpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgRVNDQVBFX0xPT0tVUCA9IHtcbiAgXCImXCI6IFwiJmFtcDtcIixcbiAgXCI+XCI6IFwiJmd0O1wiLFxuICBcIjxcIjogXCImbHQ7XCIsXG4gIFwiXFxcIlwiOiBcIiZxdW90O1wiLFxuICBcIidcIjogXCImI3gyNztcIlxufTtcbnZhciBFU0NBUEVfUkVHRVggPSAvWyY+PFwiJ10vZztcbi8qKlxuICogRXNjYXBlcyB0ZXh0IHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG4gKi9cblxuZnVuY3Rpb24gdXRpbHNfZXNjYXBlKHRleHQpIHtcbiAgcmV0dXJuIFN0cmluZyh0ZXh0KS5yZXBsYWNlKEVTQ0FQRV9SRUdFWCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIEVTQ0FQRV9MT09LVVBbbWF0Y2hdO1xuICB9KTtcbn1cbi8qKlxuICogU29tZXRpbWVzIHdlIHdhbnQgdG8gcHVsbCBvdXQgdGhlIGlubmVybW9zdCBlbGVtZW50IG9mIGEgZ3JvdXAuIEluIG1vc3RcbiAqIGNhc2VzLCB0aGlzIHdpbGwganVzdCBiZSB0aGUgZ3JvdXAgaXRzZWxmLCBidXQgd2hlbiBvcmRncm91cHMgYW5kIGNvbG9ycyBoYXZlXG4gKiBhIHNpbmdsZSBlbGVtZW50LCB3ZSB3YW50IHRvIHB1bGwgdGhhdCBvdXQuXG4gKi9cblxuXG52YXIgZ2V0QmFzZUVsZW0gPSBmdW5jdGlvbiBnZXRCYXNlRWxlbShncm91cCkge1xuICBpZiAoZ3JvdXAudHlwZSA9PT0gXCJvcmRncm91cFwiKSB7XG4gICAgaWYgKGdyb3VwLmJvZHkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gZ2V0QmFzZUVsZW0oZ3JvdXAuYm9keVswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAudHlwZSA9PT0gXCJjb2xvclwiKSB7XG4gICAgaWYgKGdyb3VwLmJvZHkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gZ2V0QmFzZUVsZW0oZ3JvdXAuYm9keVswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAudHlwZSA9PT0gXCJmb250XCIpIHtcbiAgICByZXR1cm4gZ2V0QmFzZUVsZW0oZ3JvdXAuYm9keSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG59O1xuLyoqXG4gKiBUZVhib29rIGFsZ29yaXRobXMgb2Z0ZW4gcmVmZXJlbmNlIFwiY2hhcmFjdGVyIGJveGVzXCIsIHdoaWNoIGFyZSBzaW1wbHkgZ3JvdXBzXG4gKiB3aXRoIGEgc2luZ2xlIGNoYXJhY3RlciBpbiB0aGVtLiBUbyBkZWNpZGUgaWYgc29tZXRoaW5nIGlzIGEgY2hhcmFjdGVyIGJveCxcbiAqIHdlIGZpbmQgaXRzIGlubmVybW9zdCBncm91cCwgYW5kIHNlZSBpZiBpdCBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIuXG4gKi9cblxuXG52YXIgdXRpbHNfaXNDaGFyYWN0ZXJCb3ggPSBmdW5jdGlvbiBpc0NoYXJhY3RlckJveChncm91cCkge1xuICB2YXIgYmFzZUVsZW0gPSBnZXRCYXNlRWxlbShncm91cCk7IC8vIFRoZXNlIGFyZSBhbGwgdGhleSB0eXBlcyBvZiBncm91cHMgd2hpY2ggaG9sZCBzaW5nbGUgY2hhcmFjdGVyc1xuXG4gIHJldHVybiBiYXNlRWxlbS50eXBlID09PSBcIm1hdGhvcmRcIiB8fCBiYXNlRWxlbS50eXBlID09PSBcInRleHRvcmRcIiB8fCBiYXNlRWxlbS50eXBlID09PSBcImF0b21cIjtcbn07XG5cbnZhciBhc3NlcnQgPSBmdW5jdGlvbiBhc3NlcnQodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbm9uLW51bGwsIGJ1dCBnb3QgJyArIFN0cmluZyh2YWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcbi8qKlxuICogUmV0dXJuIHRoZSBwcm90b2NvbCBvZiBhIFVSTCwgb3IgXCJfcmVsYXRpdmVcIiBpZiB0aGUgVVJMIGRvZXMgbm90IHNwZWNpZnkgYVxuICogcHJvdG9jb2wgKGFuZCB0aHVzIGlzIHJlbGF0aXZlKS5cbiAqL1xuXG52YXIgcHJvdG9jb2xGcm9tVXJsID0gZnVuY3Rpb24gcHJvdG9jb2xGcm9tVXJsKHVybCkge1xuICB2YXIgcHJvdG9jb2wgPSAvXlxccyooW15cXFxcLyNdKj8pKD86OnwmIzAqNTh8JiN4MCozYSkvaS5leGVjKHVybCk7XG4gIHJldHVybiBwcm90b2NvbCAhPSBudWxsID8gcHJvdG9jb2xbMV0gOiBcIl9yZWxhdGl2ZVwiO1xufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHV0aWxzID0gKHtcbiAgY29udGFpbnM6IGNvbnRhaW5zLFxuICBkZWZsdDogZGVmbHQsXG4gIGVzY2FwZTogdXRpbHNfZXNjYXBlLFxuICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgZ2V0QmFzZUVsZW06IGdldEJhc2VFbGVtLFxuICBpc0NoYXJhY3RlckJveDogdXRpbHNfaXNDaGFyYWN0ZXJCb3gsXG4gIHByb3RvY29sRnJvbVVybDogcHJvdG9jb2xGcm9tVXJsXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL1NldHRpbmdzLmpzXG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cbi8qKlxuICogVGhpcyBpcyBhIG1vZHVsZSBmb3Igc3RvcmluZyBzZXR0aW5ncyBwYXNzZWQgaW50byBLYVRlWC4gSXQgY29ycmVjdGx5IGhhbmRsZXNcbiAqIGRlZmF1bHQgc2V0dGluZ3MuXG4gKi9cblxuXG5cblxuLyoqXG4gKiBUaGUgbWFpbiBTZXR0aW5ncyBvYmplY3RcbiAqXG4gKiBUaGUgY3VycmVudCBvcHRpb25zIHN0b3JlZCBhcmU6XG4gKiAgLSBkaXNwbGF5TW9kZTogV2hldGhlciB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUgdHlwZXNldCBhcyBpbmxpbmUgbWF0aFxuICogICAgICAgICAgICAgICAgIChmYWxzZSwgdGhlIGRlZmF1bHQpLCBtZWFuaW5nIHRoYXQgdGhlIG1hdGggc3RhcnRzIGluXG4gKiAgICAgICAgICAgICAgICAgXFx0ZXh0c3R5bGUgYW5kIGlzIHBsYWNlZCBpbiBhbiBpbmxpbmUtYmxvY2spOyBvciBhcyBkaXNwbGF5XG4gKiAgICAgICAgICAgICAgICAgbWF0aCAodHJ1ZSksIG1lYW5pbmcgdGhhdCB0aGUgbWF0aCBzdGFydHMgaW4gXFxkaXNwbGF5c3R5bGVcbiAqICAgICAgICAgICAgICAgICBhbmQgaXMgcGxhY2VkIGluIGEgYmxvY2sgd2l0aCB2ZXJ0aWNhbCBtYXJnaW4uXG4gKi9cbnZhciBTZXR0aW5nc19TZXR0aW5ncyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNldHRpbmdzKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRpc3BsYXlNb2RlID0gdm9pZCAwO1xuICAgIHRoaXMub3V0cHV0ID0gdm9pZCAwO1xuICAgIHRoaXMubGVxbm8gPSB2b2lkIDA7XG4gICAgdGhpcy5mbGVxbiA9IHZvaWQgMDtcbiAgICB0aGlzLnRocm93T25FcnJvciA9IHZvaWQgMDtcbiAgICB0aGlzLmVycm9yQ29sb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWNyb3MgPSB2b2lkIDA7XG4gICAgdGhpcy5taW5SdWxlVGhpY2tuZXNzID0gdm9pZCAwO1xuICAgIHRoaXMuY29sb3JJc1RleHRDb2xvciA9IHZvaWQgMDtcbiAgICB0aGlzLnN0cmljdCA9IHZvaWQgMDtcbiAgICB0aGlzLnRydXN0ID0gdm9pZCAwO1xuICAgIHRoaXMubWF4U2l6ZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEV4cGFuZCA9IHZvaWQgMDtcbiAgICAvLyBhbGxvdyBudWxsIG9wdGlvbnNcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLmRpc3BsYXlNb2RlID0gdXRpbHMuZGVmbHQob3B0aW9ucy5kaXNwbGF5TW9kZSwgZmFsc2UpO1xuICAgIHRoaXMub3V0cHV0ID0gdXRpbHMuZGVmbHQob3B0aW9ucy5vdXRwdXQsIFwiaHRtbEFuZE1hdGhtbFwiKTtcbiAgICB0aGlzLmxlcW5vID0gdXRpbHMuZGVmbHQob3B0aW9ucy5sZXFubywgZmFsc2UpO1xuICAgIHRoaXMuZmxlcW4gPSB1dGlscy5kZWZsdChvcHRpb25zLmZsZXFuLCBmYWxzZSk7XG4gICAgdGhpcy50aHJvd09uRXJyb3IgPSB1dGlscy5kZWZsdChvcHRpb25zLnRocm93T25FcnJvciwgdHJ1ZSk7XG4gICAgdGhpcy5lcnJvckNvbG9yID0gdXRpbHMuZGVmbHQob3B0aW9ucy5lcnJvckNvbG9yLCBcIiNjYzAwMDBcIik7XG4gICAgdGhpcy5tYWNyb3MgPSBvcHRpb25zLm1hY3JvcyB8fCB7fTtcbiAgICB0aGlzLm1pblJ1bGVUaGlja25lc3MgPSBNYXRoLm1heCgwLCB1dGlscy5kZWZsdChvcHRpb25zLm1pblJ1bGVUaGlja25lc3MsIDApKTtcbiAgICB0aGlzLmNvbG9ySXNUZXh0Q29sb3IgPSB1dGlscy5kZWZsdChvcHRpb25zLmNvbG9ySXNUZXh0Q29sb3IsIGZhbHNlKTtcbiAgICB0aGlzLnN0cmljdCA9IHV0aWxzLmRlZmx0KG9wdGlvbnMuc3RyaWN0LCBcIndhcm5cIik7XG4gICAgdGhpcy50cnVzdCA9IHV0aWxzLmRlZmx0KG9wdGlvbnMudHJ1c3QsIGZhbHNlKTtcbiAgICB0aGlzLm1heFNpemUgPSBNYXRoLm1heCgwLCB1dGlscy5kZWZsdChvcHRpb25zLm1heFNpemUsIEluZmluaXR5KSk7XG4gICAgdGhpcy5tYXhFeHBhbmQgPSBNYXRoLm1heCgwLCB1dGlscy5kZWZsdChvcHRpb25zLm1heEV4cGFuZCwgMTAwMCkpO1xuICB9XG4gIC8qKlxuICAgKiBSZXBvcnQgbm9uc3RyaWN0IChub24tTGFUZVgtY29tcGF0aWJsZSkgaW5wdXQuXG4gICAqIENhbiBzYWZlbHkgbm90IGJlIGNhbGxlZCBpZiBgdGhpcy5zdHJpY3RgIGlzIGZhbHNlIGluIEphdmFTY3JpcHQuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IFNldHRpbmdzLnByb3RvdHlwZTtcblxuICBfcHJvdG8ucmVwb3J0Tm9uc3RyaWN0ID0gZnVuY3Rpb24gcmVwb3J0Tm9uc3RyaWN0KGVycm9yQ29kZSwgZXJyb3JNc2csIHRva2VuKSB7XG4gICAgdmFyIHN0cmljdCA9IHRoaXMuc3RyaWN0O1xuXG4gICAgaWYgKHR5cGVvZiBzdHJpY3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgLy8gQWxsb3cgcmV0dXJuIHZhbHVlIG9mIHN0cmljdCBmdW5jdGlvbiB0byBiZSBib29sZWFuIG9yIHN0cmluZ1xuICAgICAgLy8gKG9yIG51bGwvdW5kZWZpbmVkLCBtZWFuaW5nIG5vIGZ1cnRoZXIgcHJvY2Vzc2luZykuXG4gICAgICBzdHJpY3QgPSBzdHJpY3QoZXJyb3JDb2RlLCBlcnJvck1zZywgdG9rZW4pO1xuICAgIH1cblxuICAgIGlmICghc3RyaWN0IHx8IHN0cmljdCA9PT0gXCJpZ25vcmVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSB0cnVlIHx8IHN0cmljdCA9PT0gXCJlcnJvclwiKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJMYVRlWC1pbmNvbXBhdGlibGUgaW5wdXQgYW5kIHN0cmljdCBtb2RlIGlzIHNldCB0byAnZXJyb3InOiBcIiArIChlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSBcIndhcm5cIikge1xuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gJ3dhcm4nOiBcIiArIChlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdvbid0IGhhcHBlbiBpbiB0eXBlLXNhZmUgY29kZVxuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gXCIgKyAoXCJ1bnJlY29nbml6ZWQgJ1wiICsgc3RyaWN0ICsgXCInOiBcIiArIGVycm9yTXNnICsgXCIgW1wiICsgZXJyb3JDb2RlICsgXCJdXCIpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdG8gYXBwbHkgc3RyaWN0IChMYVRlWC1hZGhlcmluZykgYmVoYXZpb3IgZm9yIHVudXN1YWxcbiAgICogaW5wdXQgKGxpa2UgYFxcXFxgKS4gIFVubGlrZSBgbm9uc3RyaWN0YCwgd2lsbCBub3QgdGhyb3cgYW4gZXJyb3I7XG4gICAqIGluc3RlYWQsIFwiZXJyb3JcIiB0cmFuc2xhdGVzIHRvIGEgcmV0dXJuIHZhbHVlIG9mIGB0cnVlYCwgd2hpbGUgXCJpZ25vcmVcIlxuICAgKiB0cmFuc2xhdGVzIHRvIGEgcmV0dXJuIHZhbHVlIG9mIGBmYWxzZWAuICBNYXkgc3RpbGwgcHJpbnQgYSB3YXJuaW5nOlxuICAgKiBcIndhcm5cIiBwcmludHMgYSB3YXJuaW5nIGFuZCByZXR1cm5zIGBmYWxzZWAuXG4gICAqIFRoaXMgaXMgZm9yIHRoZSBzZWNvbmQgY2F0ZWdvcnkgb2YgYGVycm9yQ29kZWBzIGxpc3RlZCBpbiB0aGUgUkVBRE1FLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by51c2VTdHJpY3RCZWhhdmlvciA9IGZ1bmN0aW9uIHVzZVN0cmljdEJlaGF2aW9yKGVycm9yQ29kZSwgZXJyb3JNc2csIHRva2VuKSB7XG4gICAgdmFyIHN0cmljdCA9IHRoaXMuc3RyaWN0O1xuXG4gICAgaWYgKHR5cGVvZiBzdHJpY3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgLy8gQWxsb3cgcmV0dXJuIHZhbHVlIG9mIHN0cmljdCBmdW5jdGlvbiB0byBiZSBib29sZWFuIG9yIHN0cmluZ1xuICAgICAgLy8gKG9yIG51bGwvdW5kZWZpbmVkLCBtZWFuaW5nIG5vIGZ1cnRoZXIgcHJvY2Vzc2luZykuXG4gICAgICAvLyBCdXQgY2F0Y2ggYW55IGV4Y2VwdGlvbnMgdGhyb3duIGJ5IGZ1bmN0aW9uLCB0cmVhdGluZyB0aGVtXG4gICAgICAvLyBsaWtlIFwiZXJyb3JcIi5cbiAgICAgIHRyeSB7XG4gICAgICAgIHN0cmljdCA9IHN0cmljdChlcnJvckNvZGUsIGVycm9yTXNnLCB0b2tlbik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzdHJpY3QgPSBcImVycm9yXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzdHJpY3QgfHwgc3RyaWN0ID09PSBcImlnbm9yZVwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzdHJpY3QgPT09IHRydWUgfHwgc3RyaWN0ID09PSBcImVycm9yXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0ID09PSBcIndhcm5cIikge1xuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gJ3dhcm4nOiBcIiArIChlcnJvck1zZyArIFwiIFtcIiArIGVycm9yQ29kZSArIFwiXVwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdvbid0IGhhcHBlbiBpbiB0eXBlLXNhZmUgY29kZVxuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiTGFUZVgtaW5jb21wYXRpYmxlIGlucHV0IGFuZCBzdHJpY3QgbW9kZSBpcyBzZXQgdG8gXCIgKyAoXCJ1bnJlY29nbml6ZWQgJ1wiICsgc3RyaWN0ICsgXCInOiBcIiArIGVycm9yTXNnICsgXCIgW1wiICsgZXJyb3JDb2RlICsgXCJdXCIpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdG8gdGVzdCBwb3RlbnRpYWxseSBkYW5nZXJvdXMgaW5wdXQsIGFuZCByZXR1cm5cbiAgICogYHRydWVgICh0cnVzdGVkKSBvciBgZmFsc2VgICh1bnRydXN0ZWQpLiAgVGhlIHNvbGUgYXJndW1lbnQgYGNvbnRleHRgXG4gICAqIHNob3VsZCBiZSBhbiBvYmplY3Qgd2l0aCBgY29tbWFuZGAgZmllbGQgc3BlY2lmeWluZyB0aGUgcmVsZXZhbnQgTGFUZVhcbiAgICogY29tbWFuZCAoYXMgYSBzdHJpbmcgc3RhcnRpbmcgd2l0aCBgXFxgKSwgYW5kIGFueSBvdGhlciBhcmd1bWVudHMsIGV0Yy5cbiAgICogSWYgYGNvbnRleHRgIGhhcyBhIGB1cmxgIGZpZWxkLCBhIGBwcm90b2NvbGAgZmllbGQgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIGdldCBhZGRlZCBieSB0aGlzIGZ1bmN0aW9uIChjaGFuZ2luZyB0aGUgc3BlY2lmaWVkIG9iamVjdCkuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmlzVHJ1c3RlZCA9IGZ1bmN0aW9uIGlzVHJ1c3RlZChjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQudXJsICYmICFjb250ZXh0LnByb3RvY29sKSB7XG4gICAgICBjb250ZXh0LnByb3RvY29sID0gdXRpbHMucHJvdG9jb2xGcm9tVXJsKGNvbnRleHQudXJsKTtcbiAgICB9XG5cbiAgICB2YXIgdHJ1c3QgPSB0eXBlb2YgdGhpcy50cnVzdCA9PT0gXCJmdW5jdGlvblwiID8gdGhpcy50cnVzdChjb250ZXh0KSA6IHRoaXMudHJ1c3Q7XG4gICAgcmV0dXJuIEJvb2xlYW4odHJ1c3QpO1xuICB9O1xuXG4gIHJldHVybiBTZXR0aW5ncztcbn0oKTtcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9TdHlsZS5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYW5kIGNsYXNzZXMgZm9yIHRoZSB2YXJpb3VzIGtpbmRzIG9mIHN0eWxlc1xuICogdXNlZCBpbiBUZVguIEl0IHByb3ZpZGVzIGEgZ2VuZXJpYyBgU3R5bGVgIGNsYXNzLCB3aGljaCBob2xkcyBpbmZvcm1hdGlvblxuICogYWJvdXQgYSBzcGVjaWZpYyBzdHlsZS4gSXQgdGhlbiBwcm92aWRlcyBpbnN0YW5jZXMgb2YgYWxsIHRoZSBkaWZmZXJlbnQga2luZHNcbiAqIG9mIHN0eWxlcyBwb3NzaWJsZSwgYW5kIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBtb3ZlIGJldHdlZW4gdGhlbSBhbmQgZ2V0XG4gKiBpbmZvcm1hdGlvbiBhYm91dCB0aGVtLlxuICovXG5cbi8qKlxuICogVGhlIG1haW4gc3R5bGUgY2xhc3MuIENvbnRhaW5zIGEgdW5pcXVlIGlkIGZvciB0aGUgc3R5bGUsIGEgc2l6ZSAod2hpY2ggaXNcbiAqIHRoZSBzYW1lIGZvciBjcmFtcGVkIGFuZCB1bmNyYW1wZWQgdmVyc2lvbiBvZiBhIHN0eWxlKSwgYW5kIGEgY3JhbXBlZCBmbGFnLlxuICovXG52YXIgU3R5bGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdHlsZShpZCwgc2l6ZSwgY3JhbXBlZCkge1xuICAgIHRoaXMuaWQgPSB2b2lkIDA7XG4gICAgdGhpcy5zaXplID0gdm9pZCAwO1xuICAgIHRoaXMuY3JhbXBlZCA9IHZvaWQgMDtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB0aGlzLmNyYW1wZWQgPSBjcmFtcGVkO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgc3VwZXJzY3JpcHQgZ2l2ZW4gYSBiYXNlIGluIHRoZSBjdXJyZW50IHN0eWxlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBTdHlsZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnN1cCA9IGZ1bmN0aW9uIHN1cCgpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19zdXBbdGhpcy5pZF1dO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0eWxlIG9mIGEgc3Vic2NyaXB0IGdpdmVuIGEgYmFzZSBpbiB0aGUgY3VycmVudCBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc3ViID0gZnVuY3Rpb24gc3ViKCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX3N1Ylt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgc3R5bGUgb2YgYSBmcmFjdGlvbiBudW1lcmF0b3IgZ2l2ZW4gdGhlIGZyYWN0aW9uIGluIHRoZSBjdXJyZW50XG4gICAqIHN0eWxlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mcmFjTnVtID0gZnVuY3Rpb24gZnJhY051bSgpIHtcbiAgICByZXR1cm4gU3R5bGVfc3R5bGVzW19mcmFjTnVtW3RoaXMuaWRdXTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBzdHlsZSBvZiBhIGZyYWN0aW9uIGRlbm9taW5hdG9yIGdpdmVuIHRoZSBmcmFjdGlvbiBpbiB0aGUgY3VycmVudFxuICAgKiBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZnJhY0RlbiA9IGZ1bmN0aW9uIGZyYWNEZW4oKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfZnJhY0Rlblt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgY3JhbXBlZCB2ZXJzaW9uIG9mIGEgc3R5bGUgKGluIHBhcnRpY3VsYXIsIGNyYW1waW5nIGEgY3JhbXBlZCBzdHlsZVxuICAgKiBkb2Vzbid0IGNoYW5nZSB0aGUgc3R5bGUpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jcmFtcCA9IGZ1bmN0aW9uIGNyYW1wKCkge1xuICAgIHJldHVybiBTdHlsZV9zdHlsZXNbX2NyYW1wW3RoaXMuaWRdXTtcbiAgfVxuICAvKipcbiAgICogR2V0IGEgdGV4dCBvciBkaXNwbGF5IHZlcnNpb24gb2YgdGhpcyBzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8udGV4dCA9IGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIFN0eWxlX3N0eWxlc1tfdGV4dFt0aGlzLmlkXV07XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoaXMgc3R5bGUgaXMgdGlnaHRseSBzcGFjZWQgKHNjcmlwdHN0eWxlL3NjcmlwdHNjcmlwdHN0eWxlKVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5pc1RpZ2h0ID0gZnVuY3Rpb24gaXNUaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID49IDI7XG4gIH07XG5cbiAgcmV0dXJuIFN0eWxlO1xufSgpOyAvLyBFeHBvcnQgYW4gaW50ZXJmYWNlIGZvciB0eXBlIGNoZWNraW5nLCBidXQgZG9uJ3QgZXhwb3NlIHRoZSBpbXBsZW1lbnRhdGlvbi5cbi8vIFRoaXMgd2F5LCBubyBtb3JlIHN0eWxlcyBjYW4gYmUgZ2VuZXJhdGVkLlxuXG5cbi8vIElEcyBvZiB0aGUgZGlmZmVyZW50IHN0eWxlc1xudmFyIEQgPSAwO1xudmFyIERjID0gMTtcbnZhciBUID0gMjtcbnZhciBUYyA9IDM7XG52YXIgUyA9IDQ7XG52YXIgU2MgPSA1O1xudmFyIFNTID0gNjtcbnZhciBTU2MgPSA3OyAvLyBJbnN0YW5jZXMgb2YgdGhlIGRpZmZlcmVudCBzdHlsZXNcblxudmFyIFN0eWxlX3N0eWxlcyA9IFtuZXcgU3R5bGUoRCwgMCwgZmFsc2UpLCBuZXcgU3R5bGUoRGMsIDAsIHRydWUpLCBuZXcgU3R5bGUoVCwgMSwgZmFsc2UpLCBuZXcgU3R5bGUoVGMsIDEsIHRydWUpLCBuZXcgU3R5bGUoUywgMiwgZmFsc2UpLCBuZXcgU3R5bGUoU2MsIDIsIHRydWUpLCBuZXcgU3R5bGUoU1MsIDMsIGZhbHNlKSwgbmV3IFN0eWxlKFNTYywgMywgdHJ1ZSldOyAvLyBMb29rdXAgdGFibGVzIGZvciBzd2l0Y2hpbmcgZnJvbSBvbmUgc3R5bGUgdG8gYW5vdGhlclxuXG52YXIgX3N1cCA9IFtTLCBTYywgUywgU2MsIFNTLCBTU2MsIFNTLCBTU2NdO1xudmFyIF9zdWIgPSBbU2MsIFNjLCBTYywgU2MsIFNTYywgU1NjLCBTU2MsIFNTY107XG52YXIgX2ZyYWNOdW0gPSBbVCwgVGMsIFMsIFNjLCBTUywgU1NjLCBTUywgU1NjXTtcbnZhciBfZnJhY0RlbiA9IFtUYywgVGMsIFNjLCBTYywgU1NjLCBTU2MsIFNTYywgU1NjXTtcbnZhciBfY3JhbXAgPSBbRGMsIERjLCBUYywgVGMsIFNjLCBTYywgU1NjLCBTU2NdO1xudmFyIF90ZXh0ID0gW0QsIERjLCBULCBUYywgVCwgVGMsIFQsIFRjXTsgLy8gV2Ugb25seSBleHBvcnQgc29tZSBvZiB0aGUgc3R5bGVzLlxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfU3R5bGUgPSAoe1xuICBESVNQTEFZOiBTdHlsZV9zdHlsZXNbRF0sXG4gIFRFWFQ6IFN0eWxlX3N0eWxlc1tUXSxcbiAgU0NSSVBUOiBTdHlsZV9zdHlsZXNbU10sXG4gIFNDUklQVFNDUklQVDogU3R5bGVfc3R5bGVzW1NTXVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91bmljb2RlU2NyaXB0cy5qc1xuLypcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBVbmljb2RlIHNjcmlwdHMgYW5kIHNjcmlwdCBmYW1pbGllcyB0aGF0IHdlXG4gKiBzdXBwb3J0LiBUbyBhZGQgbmV3IHNjcmlwdHMgb3IgZmFtaWxpZXMsIGp1c3QgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZVxuICogc2NyaXB0RGF0YSBhcnJheSBiZWxvdy4gQWRkaW5nIHNjcmlwdHMgdG8gdGhlIHNjcmlwdERhdGEgYXJyYXkgYWxsb3dzXG4gKiBjaGFyYWN0ZXJzIGZyb20gdGhhdCBzY3JpcHQgdG8gYXBwZWFyIGluIFxcdGV4dHt9IGVudmlyb25tZW50cy5cbiAqL1xuXG4vKipcbiAqIEVhY2ggc2NyaXB0IG9yIHNjcmlwdCBmYW1pbHkgaGFzIGEgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYmxvY2tzLlxuICogRWFjaCBibG9jayBpcyBhbiBhcnJheSBvZiB0d28gbnVtYmVycyB3aGljaCBzcGVjaWZ5IHRoZSBzdGFydCBhbmRcbiAqIGVuZCBwb2ludHMgKGluY2x1c2l2ZSkgb2YgYSBibG9jayBvZiBVbmljb2RlIGNvZGVwb2ludHMuXG4gKi9cblxuLyoqXG4gKiBVbmljb2RlIGJsb2NrIGRhdGEgZm9yIHRoZSBmYW1pbGllcyBvZiBzY3JpcHRzIHdlIHN1cHBvcnQgaW4gXFx0ZXh0e30uXG4gKiBTY3JpcHRzIG9ubHkgbmVlZCB0byBhcHBlYXIgaGVyZSBpZiB0aGV5IGRvIG5vdCBoYXZlIGZvbnQgbWV0cmljcy5cbiAqL1xudmFyIHNjcmlwdERhdGEgPSBbe1xuICAvLyBMYXRpbiBjaGFyYWN0ZXJzIGJleW9uZCB0aGUgTGF0aW4tMSBjaGFyYWN0ZXJzIHdlIGhhdmUgbWV0cmljcyBmb3IuXG4gIC8vIE5lZWRlZCBmb3IgQ3plY2gsIEh1bmdhcmlhbiBhbmQgVHVya2lzaCB0ZXh0LCBmb3IgZXhhbXBsZS5cbiAgbmFtZTogJ2xhdGluJyxcbiAgYmxvY2tzOiBbWzB4MDEwMCwgMHgwMjRmXSwgLy8gTGF0aW4gRXh0ZW5kZWQtQSBhbmQgTGF0aW4gRXh0ZW5kZWQtQlxuICBbMHgwMzAwLCAweDAzNmZdXVxufSwge1xuICAvLyBUaGUgQ3lyaWxsaWMgc2NyaXB0IHVzZWQgYnkgUnVzc2lhbiBhbmQgcmVsYXRlZCBsYW5ndWFnZXMuXG4gIC8vIEEgQ3lyaWxsaWMgc3Vic2V0IHVzZWQgdG8gYmUgc3VwcG9ydGVkIGFzIGV4cGxpY2l0bHkgZGVmaW5lZFxuICAvLyBzeW1ib2xzIGluIHN5bWJvbHMuanNcbiAgbmFtZTogJ2N5cmlsbGljJyxcbiAgYmxvY2tzOiBbWzB4MDQwMCwgMHgwNGZmXV1cbn0sIHtcbiAgLy8gVGhlIEJyYWhtaWMgc2NyaXB0cyBvZiBTb3V0aCBhbmQgU291dGhlYXN0IEFzaWFcbiAgLy8gRGV2YW5hZ2FyaSAoMDkwMOKAkzA5N0YpXG4gIC8vIEJlbmdhbGkgKDA5ODDigJMwOUZGKVxuICAvLyBHdXJtdWtoaSAoMEEwMOKAkzBBN0YpXG4gIC8vIEd1amFyYXRpICgwQTgw4oCTMEFGRilcbiAgLy8gT3JpeWEgKDBCMDDigJMwQjdGKVxuICAvLyBUYW1pbCAoMEI4MOKAkzBCRkYpXG4gIC8vIFRlbHVndSAoMEMwMOKAkzBDN0YpXG4gIC8vIEthbm5hZGEgKDBDODDigJMwQ0ZGKVxuICAvLyBNYWxheWFsYW0gKDBEMDDigJMwRDdGKVxuICAvLyBTaW5oYWxhICgwRDgw4oCTMERGRilcbiAgLy8gVGhhaSAoMEUwMOKAkzBFN0YpXG4gIC8vIExhbyAoMEU4MOKAkzBFRkYpXG4gIC8vIFRpYmV0YW4gKDBGMDDigJMwRkZGKVxuICAvLyBNeWFubWFyICgxMDAw4oCTMTA5RilcbiAgbmFtZTogJ2JyYWhtaWMnLFxuICBibG9ja3M6IFtbMHgwOTAwLCAweDEwOUZdXVxufSwge1xuICBuYW1lOiAnZ2VvcmdpYW4nLFxuICBibG9ja3M6IFtbMHgxMEEwLCAweDEwZmZdXVxufSwge1xuICAvLyBDaGluZXNlIGFuZCBKYXBhbmVzZS5cbiAgLy8gVGhlIFwia1wiIGluIGNqayBpcyBmb3IgS29yZWFuLCBidXQgd2UndmUgc2VwYXJhdGVkIEtvcmVhbiBvdXRcbiAgbmFtZTogXCJjamtcIixcbiAgYmxvY2tzOiBbWzB4MzAwMCwgMHgzMEZGXSwgLy8gQ0pLIHN5bWJvbHMgYW5kIHB1bmN0dWF0aW9uLCBIaXJhZ2FuYSwgS2F0YWthbmFcbiAgWzB4NEUwMCwgMHg5RkFGXSwgLy8gQ0pLIGlkZW9ncmFtc1xuICBbMHhGRjAwLCAweEZGNjBdXVxufSwge1xuICAvLyBLb3JlYW5cbiAgbmFtZTogJ2hhbmd1bCcsXG4gIGJsb2NrczogW1sweEFDMDAsIDB4RDdBRl1dXG59XTtcbi8qKlxuICogR2l2ZW4gYSBjb2RlcG9pbnQsIHJldHVybiB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IG9yIHNjcmlwdCBmYW1pbHlcbiAqIGl0IGlzIGZyb20sIG9yIG51bGwgaWYgaXQgaXMgbm90IHBhcnQgb2YgYSBrbm93biBibG9ja1xuICovXG5cbmZ1bmN0aW9uIHNjcmlwdEZyb21Db2RlcG9pbnQoY29kZXBvaW50KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0RGF0YS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzY3JpcHQgPSBzY3JpcHREYXRhW2ldO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHNjcmlwdC5ibG9ja3MubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgYmxvY2sgPSBzY3JpcHQuYmxvY2tzW19pXTtcblxuICAgICAgaWYgKGNvZGVwb2ludCA+PSBibG9ja1swXSAmJiBjb2RlcG9pbnQgPD0gYmxvY2tbMV0pIHtcbiAgICAgICAgcmV0dXJuIHNjcmlwdC5uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBBIGZsYXR0ZW5lZCB2ZXJzaW9uIG9mIGFsbCB0aGUgc3VwcG9ydGVkIGJsb2NrcyBpbiBhIHNpbmdsZSBhcnJheS5cbiAqIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1ha2Ugc3VwcG9ydGVkQ29kZXBvaW50KCkgZmFzdC5cbiAqL1xuXG52YXIgYWxsQmxvY2tzID0gW107XG5zY3JpcHREYXRhLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcbiAgcmV0dXJuIHMuYmxvY2tzLmZvckVhY2goZnVuY3Rpb24gKGIpIHtcbiAgICByZXR1cm4gYWxsQmxvY2tzLnB1c2guYXBwbHkoYWxsQmxvY2tzLCBiKTtcbiAgfSk7XG59KTtcbi8qKlxuICogR2l2ZW4gYSBjb2RlcG9pbnQsIHJldHVybiB0cnVlIGlmIGl0IGZhbGxzIHdpdGhpbiBvbmUgb2YgdGhlXG4gKiBzY3JpcHRzIG9yIHNjcmlwdCBmYW1pbGllcyBkZWZpbmVkIGFib3ZlIGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogTWljcm8gYmVuY2htYXJrcyBzaG93cyB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW5cbiAqIC9bXFx1MzAwMC1cXHUzMEZGXFx1NEUwMC1cXHU5RkFGXFx1RkYwMC1cXHVGRjYwXFx1QUMwMC1cXHVEN0FGXFx1MDkwMC1cXHUxMDlGXS8udGVzdCgpXG4gKiBpbiBGaXJlZm94LCBDaHJvbWUgYW5kIE5vZGUuXG4gKi9cblxuZnVuY3Rpb24gc3VwcG9ydGVkQ29kZXBvaW50KGNvZGVwb2ludCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIGlmIChjb2RlcG9pbnQgPj0gYWxsQmxvY2tzW2ldICYmIGNvZGVwb2ludCA8PSBhbGxCbG9ja3NbaSArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9zdmdHZW9tZXRyeS5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgcHJvdmlkZXMgc3VwcG9ydCB0byBkb21UcmVlLmpzIGFuZCBkZWxpbWl0ZXIuanMuXG4gKiBJdCdzIGEgc3RvcmVob3VzZSBvZiBwYXRoIGdlb21ldHJ5IGZvciBTVkcgaW1hZ2VzLlxuICovXG4vLyBJbiBhbGwgcGF0aHMgYmVsb3csIHRoZSB2aWV3Qm94LXRvLWVtIHNjYWxlIGlzIDEwMDA6MS5cbnZhciBoTGluZVBhZCA9IDgwOyAvLyBwYWRkaW5nIGFib3ZlIGEgc3FydCB2aW5pY3VsdW0uIFByZXZlbnRzIGltYWdlIGNyb3BwaW5nLlxuLy8gVGhlIHZpbmljdWx1bSBvZiBhIFxcc3FydCBjYW4gYmUgbWFkZSB0aGlja2VyIGJ5IGEgS2FUZVggcmVuZGVyaW5nIG9wdGlvbi5cbi8vIFRoaW5rIG9mIHZhcmlhYmxlIGV4dHJhVmluaWN1bHVtIGFzIHR3byBkZXRvdXJzIGluIHRoZSBTVkcgcGF0aC5cbi8vIFRoZSBkZXRvdXIgYmVnaW5zIGF0IHRoZSBsb3dlciBsZWZ0IG9mIHRoZSBhcmVhIGxhYmVsZWQgZXh0cmFWaW5pY3VsdW0gYmVsb3cuXG4vLyBUaGUgZGV0b3VyIHByb2NlZWRzIG9uZSBleHRyYVZpbmljdWx1bSBkaXN0YW5jZSB1cCBhbmQgc2xpZ2h0bHkgdG8gdGhlIHJpZ2h0LFxuLy8gZGlzcGxhY2luZyB0aGUgcmFkaXVzZWQgY29ybmVyIGJldHdlZW4gc3VyZCBhbmQgdmluaWN1bHVtLiBUaGUgcmFkaXVzIGlzXG4vLyB0cmF2ZXJzZWQgYXMgdXN1YWwsIHRoZW4gdGhlIGRldG91ciByZXN1bWVzLiBJdCBnb2VzIHJpZ2h0LCB0byB0aGUgZW5kIG9mXG4vLyB0aGUgdmVyeSBsb25nIHZpbmljdWx1bW4sIHRoZW4gZG93biBvbmUgZXh0cmFWaW5pY3VsdW0gZGlzdGFuY2UsXG4vLyBhZnRlciB3aGljaCBpdCByZXN1bWVzIHJlZ3VsYXIgcGF0aCBnZW9tZXRyeSBmb3IgdGhlIHJhZGljYWwuXG5cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW5pY3VsdW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9cbiAgICAgICAgIC/ilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLilpLihpBleHRyYVZpbmljdWx1bVxuICAgICAgICAvIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKGkDAuMDRlbSAoNDAgdW5pdCkgc3RkIHZpbmljdWx1bSB0aGlja25lc3NcbiAgICAgICAvIC9cbiAgICAgIC8gL1xuICAgICAvIC9cXFxuICAgIC8gLyBzdXJkXG4qL1xuXG52YXIgc3FydE1haW4gPSBmdW5jdGlvbiBzcXJ0TWFpbihleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc3FydE1haW4gcGF0aCBnZW9tZXRyeSBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYIE1haW5cbiAgcmV0dXJuIFwiTTk1LFwiICsgKDYyMiArIGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJcXG5jLTIuNywwLC03LjE3LC0yLjcsLTEzLjUsLThjLTUuOCwtNS4zLC05LjUsLTEwLC05LjUsLTE0XFxuYzAsLTIsMC4zLC0zLjMsMSwtNGMxLjMsLTIuNywyMy44MywtMjAuNyw2Ny41LC01NFxcbmM0NC4yLC0zMy4zLDY1LjgsLTUwLjMsNjYuNSwtNTFjMS4zLC0xLjMsMywtMiw1LC0yYzQuNywwLDguNywzLjMsMTIsMTBcXG5zMTczLDM3OCwxNzMsMzc4YzAuNywwLDM1LjMsLTcxLDEwNCwtMjEzYzY4LjcsLTE0MiwxMzcuNSwtMjg1LDIwNi41LC00MjlcXG5jNjksLTE0NCwxMDQuNSwtMjE3LjcsMTA2LjUsLTIyMVxcbmxcIiArIGV4dHJhVmluaWN1bHVtIC8gMi4wNzUgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiXFxuYzUuMywtOS4zLDEyLC0xNCwyMCwtMTRcXG5INDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIODQ1LjI3MjRcXG5zLTIyNS4yNzIsNDY3LC0yMjUuMjcyLDQ2N3MtMjM1LDQ4NiwtMjM1LDQ4NmMtMi43LDQuNywtOSw3LC0xOSw3XFxuYy02LDAsLTEwLC0xLC0xMiwtM3MtMTk0LC00MjIsLTE5NCwtNDIycy02NSw0NywtNjUsNDd6XFxuTVwiICsgKDgzNCArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcImg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcImgtNDAwMDAwelwiO1xufTtcblxudmFyIHNxcnRTaXplMSA9IGZ1bmN0aW9uIHNxcnRTaXplMShleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpIHtcbiAgLy8gc2l6ZTEgaXMgZnJvbSBnbHlwaCBVMjIxQSBpbiB0aGUgZm9udCBLYVRlWF9TaXplMS1SZWd1bGFyXG4gIHJldHVybiBcIk0yNjMsXCIgKyAoNjAxICsgZXh0cmFWaW5pY3VsdW0gKyBoTGluZVBhZCkgKyBcImMwLjcsMCwxOCwzOS43LDUyLDExOVxcbmMzNCw3OS4zLDY4LjE2NywxNTguNywxMDIuNSwyMzhjMzQuMyw3OS4zLDUxLjgsMTE5LjMsNTIuNSwxMjBcXG5jMzQwLC03MDQuNyw1MTAuNywtMTA2MC4zLDUxMiwtMTA2N1xcbmxcIiArIGV4dHJhVmluaWN1bHVtIC8gMi4wODQgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiXFxuYzQuNywtNy4zLDExLC0xMSwxOSwtMTFcXG5INDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIkgxMDEyLjNcXG5zLTI3MS4zLDU2NywtMjcxLjMsNTY3Yy0zOC43LDgwLjcsLTg0LDE3NSwtMTM2LDI4M2MtNTIsMTA4LC04OS4xNjcsMTg1LjMsLTExMS41LDIzMlxcbmMtMjIuMyw0Ni43LC0zMy44LDcwLjMsLTM0LjUsNzFjLTQuNyw0LjcsLTEyLjMsNywtMjMsN3MtMTIsLTEsLTEyLC0xXFxucy0xMDksLTI1MywtMTA5LC0yNTNjLTcyLjcsLTE2OCwtMTA5LjMsLTI1MiwtMTEwLC0yNTJjLTEwLjcsOCwtMjIsMTYuNywtMzQsMjZcXG5jLTIyLDE3LjMsLTMzLjMsMjYsLTM0LDI2cy0yNiwtMjYsLTI2LC0yNnM3NiwtNTksNzYsLTU5czc2LC02MCw3NiwtNjB6XFxuTVwiICsgKDEwMDEgKyBleHRyYVZpbmljdWx1bSkgKyBcIiBcIiArIGhMaW5lUGFkICsgXCJoNDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJoLTQwMDAwMHpcIjtcbn07XG5cbnZhciBzcXJ0U2l6ZTIgPSBmdW5jdGlvbiBzcXJ0U2l6ZTIoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKSB7XG4gIC8vIHNpemUyIGlzIGZyb20gZ2x5cGggVTIyMUEgaW4gdGhlIGZvbnQgS2FUZVhfU2l6ZTItUmVndWxhclxuICByZXR1cm4gXCJNOTgzIFwiICsgKDEwICsgZXh0cmFWaW5pY3VsdW0gKyBoTGluZVBhZCkgKyBcIlxcbmxcIiArIGV4dHJhVmluaWN1bHVtIC8gMy4xMyArIFwiIC1cIiArIGV4dHJhVmluaWN1bHVtICsgXCJcXG5jNCwtNi43LDEwLC0xMCwxOCwtMTAgSDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiXFxuSDEwMTMuMXMtODMuNCwyNjgsLTI2NC4xLDg0MGMtMTgwLjcsNTcyLC0yNzcsODc2LjMsLTI4OSw5MTNjLTQuNyw0LjcsLTEyLjcsNywtMjQsN1xcbnMtMTIsMCwtMTIsMGMtMS4zLC0zLjMsLTMuNywtMTEuNywtNywtMjVjLTM1LjMsLTEyNS4zLC0xMDYuNywtMzczLjMsLTIxNCwtNzQ0XFxuYy0xMCwxMiwtMjEsMjUsLTMzLDM5cy0zMiwzOSwtMzIsMzljLTYsLTUuMywtMTUsLTE0LC0yNywtMjZzMjUsLTMwLDI1LC0zMFxcbmMyNi43LC0zMi43LDUyLC02Myw3NiwtOTFzNTIsLTYwLDUyLC02MHMyMDgsNzIyLDIwOCw3MjJcXG5jNTYsLTE3NS4zLDEyNi4zLC0zOTcuMywyMTEsLTY2NmM4NC43LC0yNjguNywxNTMuOCwtNDg4LjIsMjA3LjUsLTY1OC41XFxuYzUzLjcsLTE3MC4zLDg0LjUsLTI2Ni44LDkyLjUsLTI4OS41elxcbk1cIiArICgxMDAxICsgZXh0cmFWaW5pY3VsdW0pICsgXCIgXCIgKyBoTGluZVBhZCArIFwiaDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiaC00MDAwMDB6XCI7XG59O1xuXG52YXIgc3FydFNpemUzID0gZnVuY3Rpb24gc3FydFNpemUzKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCkge1xuICAvLyBzaXplMyBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemUzLVJlZ3VsYXJcbiAgcmV0dXJuIFwiTTQyNCxcIiArICgyMzk4ICsgZXh0cmFWaW5pY3VsdW0gKyBoTGluZVBhZCkgKyBcIlxcbmMtMS4zLC0wLjcsLTM4LjUsLTE3MiwtMTExLjUsLTUxNGMtNzMsLTM0MiwtMTA5LjgsLTUxMy4zLC0xMTAuNSwtNTE0XFxuYzAsLTIsLTEwLjcsMTQuMywtMzIsNDljLTQuNyw3LjMsLTkuOCwxNS43LC0xNS41LDI1Yy01LjcsOS4zLC05LjgsMTYsLTEyLjUsMjBcXG5zLTUsNywtNSw3Yy00LC0zLjMsLTguMywtNy43LC0xMywtMTNzLTEzLC0xMywtMTMsLTEzczc2LC0xMjIsNzYsLTEyMnM3NywtMTIxLDc3LC0xMjFcXG5zMjA5LDk2OCwyMDksOTY4YzAsLTIsODQuNywtMzYxLjcsMjU0LC0xMDc5YzE2OS4zLC03MTcuMywyNTQuNywtMTA3Ny43LDI1NiwtMTA4MVxcbmxcIiArIGV4dHJhVmluaWN1bHVtIC8gNC4yMjMgKyBcIiAtXCIgKyBleHRyYVZpbmljdWx1bSArIFwiYzQsLTYuNywxMCwtMTAsMTgsLTEwIEg0MDAwMDBcXG52XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIkgxMDE0LjZcXG5zLTg3LjMsMzc4LjcsLTI3Mi42LDExNjZjLTE4NS4zLDc4Ny4zLC0yNzkuMywxMTgyLjMsLTI4MiwxMTg1XFxuYy0yLDYsLTEwLDksLTI0LDlcXG5jLTgsMCwtMTIsLTAuNywtMTIsLTJ6IE1cIiArICgxMDAxICsgZXh0cmFWaW5pY3VsdW0pICsgXCIgXCIgKyBoTGluZVBhZCArIFwiXFxuaDQwMDAwMHZcIiArICg0MCArIGV4dHJhVmluaWN1bHVtKSArIFwiaC00MDAwMDB6XCI7XG59O1xuXG52YXIgc3FydFNpemU0ID0gZnVuY3Rpb24gc3FydFNpemU0KGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCkge1xuICAvLyBzaXplNCBpcyBmcm9tIGdseXBoIFUyMjFBIGluIHRoZSBmb250IEthVGVYX1NpemU0LVJlZ3VsYXJcbiAgcmV0dXJuIFwiTTQ3MyxcIiArICgyNzEzICsgZXh0cmFWaW5pY3VsdW0gKyBoTGluZVBhZCkgKyBcIlxcbmMzMzkuMywtMTc5OS4zLDUwOS4zLC0yNzAwLDUxMCwtMjcwMiBsXCIgKyBleHRyYVZpbmljdWx1bSAvIDUuMjk4ICsgXCIgLVwiICsgZXh0cmFWaW5pY3VsdW0gKyBcIlxcbmMzLjMsLTcuMyw5LjMsLTExLDE4LC0xMSBINDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJIMTAxNy43XFxucy05MC41LDQ3OCwtMjc2LjIsMTQ2NmMtMTg1LjcsOTg4LC0yNzkuNSwxNDgzLC0yODEuNSwxNDg1Yy0yLDYsLTEwLDksLTI0LDlcXG5jLTgsMCwtMTIsLTAuNywtMTIsLTJjMCwtMS4zLC01LjMsLTMyLC0xNiwtOTJjLTUwLjcsLTI5My4zLC0xMTkuNywtNjkzLjMsLTIwNywtMTIwMFxcbmMwLC0xLjMsLTUuMyw4LjcsLTE2LDMwYy0xMC43LDIxLjMsLTIxLjMsNDIuNywtMzIsNjRzLTE2LDMzLC0xNiwzM3MtMjYsLTI2LC0yNiwtMjZcXG5zNzYsLTE1Myw3NiwtMTUzczc3LC0xNTEsNzcsLTE1MWMwLjcsMC43LDM1LjcsMjAyLDEwNSw2MDRjNjcuMyw0MDAuNywxMDIsNjAyLjcsMTA0LFxcbjYwNnpNXCIgKyAoMTAwMSArIGV4dHJhVmluaWN1bHVtKSArIFwiIFwiICsgaExpbmVQYWQgKyBcImg0MDAwMDB2XCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIkgxMDE3Ljd6XCI7XG59O1xuXG52YXIgc3FydFRhbGwgPSBmdW5jdGlvbiBzcXJ0VGFsbChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQsIHZpZXdCb3hIZWlnaHQpIHtcbiAgLy8gc3FydFRhbGwgaXMgZnJvbSBnbHlwaCBVMjNCNyBpbiB0aGUgZm9udCBLYVRlWF9TaXplNC1SZWd1bGFyXG4gIC8vIE9uZSBwYXRoIGVkZ2UgaGFzIGEgdmFyaWFibGUgbGVuZ3RoLiBJdCBydW5zIHZlcnRpY2FsbHkgZnJvbSB0aGUgdmluaWN1bHVtblxuICAvLyB0byBhIHBvaW50IG5lYXIgKDE0IHVuaXRzKSB0aGUgYm90dG9tIG9mIHRoZSBzdXJkLiBUaGUgdmluaWN1bHVtXG4gIC8vIGlzIG5vcm1hbGx5IDQwIHVuaXRzIHRoaWNrLiBTbyB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGluIHF1ZXN0aW9uIGlzOlxuICB2YXIgdmVydFNlZ21lbnQgPSB2aWV3Qm94SGVpZ2h0IC0gNTQgLSBoTGluZVBhZCAtIGV4dHJhVmluaWN1bHVtO1xuICByZXR1cm4gXCJNNzAyIFwiICsgKGV4dHJhVmluaWN1bHVtICsgaExpbmVQYWQpICsgXCJINDAwMDAwXCIgKyAoNDAgKyBleHRyYVZpbmljdWx1bSkgKyBcIlxcbkg3NDJ2XCIgKyB2ZXJ0U2VnbWVudCArIFwibC00IDQtNCA0Yy0uNjY3LjcgLTIgMS41LTQgMi41cy00LjE2NyAxLjgzMy02LjUgMi41LTUuNSAxLTkuNSAxXFxuaC0xMmwtMjgtODRjLTE2LjY2Ny01Mi05Ni42NjcgLTI5NC4zMzMtMjQwLTcyN2wtMjEyIC02NDMgLTg1IDE3MFxcbmMtNC0zLjMzMy04LjMzMy03LjY2Ny0xMyAtMTNsLTEzLTEzbDc3LTE1NSA3Ny0xNTZjNjYgMTk5LjMzMyAxMzkgNDE5LjY2N1xcbjIxOSA2NjEgbDIxOCA2NjF6TTcwMiBcIiArIGhMaW5lUGFkICsgXCJINDAwMDAwdlwiICsgKDQwICsgZXh0cmFWaW5pY3VsdW0pICsgXCJINzQyelwiO1xufTtcblxudmFyIHNxcnRQYXRoID0gZnVuY3Rpb24gc3FydFBhdGgoc2l6ZSwgZXh0cmFWaW5pY3VsdW0sIHZpZXdCb3hIZWlnaHQpIHtcbiAgZXh0cmFWaW5pY3VsdW0gPSAxMDAwICogZXh0cmFWaW5pY3VsdW07IC8vIENvbnZlcnQgZnJvbSBkb2N1bWVudCBlbXMgdG8gdmlld0JveC5cblxuICB2YXIgcGF0aCA9IFwiXCI7XG5cbiAgc3dpdGNoIChzaXplKSB7XG4gICAgY2FzZSBcInNxcnRNYWluXCI6XG4gICAgICBwYXRoID0gc3FydE1haW4oZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRTaXplMVwiOlxuICAgICAgcGF0aCA9IHNxcnRTaXplMShleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwic3FydFNpemUyXCI6XG4gICAgICBwYXRoID0gc3FydFNpemUyKGV4dHJhVmluaWN1bHVtLCBoTGluZVBhZCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzcXJ0U2l6ZTNcIjpcbiAgICAgIHBhdGggPSBzcXJ0U2l6ZTMoZXh0cmFWaW5pY3VsdW0sIGhMaW5lUGFkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcInNxcnRTaXplNFwiOlxuICAgICAgcGF0aCA9IHNxcnRTaXplNChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwic3FydFRhbGxcIjpcbiAgICAgIHBhdGggPSBzcXJ0VGFsbChleHRyYVZpbmljdWx1bSwgaExpbmVQYWQsIHZpZXdCb3hIZWlnaHQpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xudmFyIHN2Z0dlb21ldHJ5X3BhdGggPSB7XG4gIC8vIFRoZSBkb3VibGVsZWZ0YXJyb3cgZ2VvbWV0cnkgaXMgZnJvbSBnbHlwaCBVKzIxRDAgaW4gdGhlIGZvbnQgS2FUZVggTWFpblxuICBkb3VibGVsZWZ0YXJyb3c6IFwiTTI2MiAxNTdcXG5sMTAtMTBjMzQtMzYgNjIuNy03NyA4Ni0xMjMgMy4zLTggNS0xMy4zIDUtMTYgMC01LjMtNi43LTgtMjAtOC03LjNcXG4gMC0xMi4yLjUtMTQuNSAxLjUtMi4zIDEtNC44IDQuNS03LjUgMTAuNS00OS4zIDk3LjMtMTIxLjcgMTY5LjMtMjE3IDIxNi0yOFxcbiAxNC01Ny4zIDI1LTg4IDMzLTYuNyAyLTExIDMuOC0xMyA1LjUtMiAxLjctMyA0LjItMyA3LjVzMSA1LjggMyA3LjVcXG5jMiAxLjcgNi4zIDMuNSAxMyA1LjUgNjggMTcuMyAxMjguMiA0Ny44IDE4MC41IDkxLjUgNTIuMyA0My43IDkzLjggOTYuMiAxMjQuNVxcbiAxNTcuNSA5LjMgOCAxNS4zIDEyLjMgMTggMTNoNmMxMi0uNyAxOC00IDE4LTEwIDAtMi0xLjctNy01LTE1LTIzLjMtNDYtNTItODdcXG4tODYtMTIzbC0xMC0xMGgzOTk3Mzh2LTQwSDIxOGMzMjggMCAwIDAgMCAwbC0xMC04Yy0yNi43LTIwLTY1LjctNDMtMTE3LTY5IDIuN1xcbi0yIDYtMy43IDEwLTUgMzYuNy0xNiA3Mi4zLTM3LjMgMTA3LTY0bDEwLThoMzk5Nzgydi00MHpcXG5tOCAwdjQwaDM5OTczMHYtNDB6bTAgMTk0djQwaDM5OTczMHYtNDB6XCIsXG4gIC8vIGRvdWJsZXJpZ2h0YXJyb3cgaXMgZnJvbSBnbHlwaCBVKzIxRDIgaW4gZm9udCBLYVRlWCBNYWluXG4gIGRvdWJsZXJpZ2h0YXJyb3c6IFwiTTM5OTczOCAzOTJsXFxuLTEwIDEwYy0zNCAzNi02Mi43IDc3LTg2IDEyMy0zLjMgOC01IDEzLjMtNSAxNiAwIDUuMyA2LjcgOCAyMCA4IDcuMyAwIDEyLjItLjVcXG4gMTQuNS0xLjUgMi4zLTEgNC44LTQuNSA3LjUtMTAuNSA0OS4zLTk3LjMgMTIxLjctMTY5LjMgMjE3LTIxNiAyOC0xNCA1Ny4zLTI1IDg4XFxuLTMzIDYuNy0yIDExLTMuOCAxMy01LjUgMi0xLjcgMy00LjIgMy03LjVzLTEtNS44LTMtNy41Yy0yLTEuNy02LjMtMy41LTEzLTUuNS02OFxcbi0xNy4zLTEyOC4yLTQ3LjgtMTgwLjUtOTEuNS01Mi4zLTQzLjctOTMuOC05Ni4yLTEyNC41LTE1Ny41LTkuMy04LTE1LjMtMTIuMy0xOFxcbi0xM2gtNmMtMTIgLjctMTggNC0xOCAxMCAwIDIgMS43IDcgNSAxNSAyMy4zIDQ2IDUyIDg3IDg2IDEyM2wxMCAxMEgwdjQwaDM5OTc4MlxcbmMtMzI4IDAgMCAwIDAgMGwxMCA4YzI2LjcgMjAgNjUuNyA0MyAxMTcgNjktMi43IDItNiAzLjctMTAgNS0zNi43IDE2LTcyLjMgMzcuM1xcbi0xMDcgNjRsLTEwIDhIMHY0MHpNMCAxNTd2NDBoMzk5NzMwdi00MHptMCAxOTR2NDBoMzk5NzMwdi00MHpcIixcbiAgLy8gbGVmdGFycm93IGlzIGZyb20gZ2x5cGggVSsyMTkwIGluIGZvbnQgS2FUZVggTWFpblxuICBsZWZ0YXJyb3c6IFwiTTQwMDAwMCAyNDFIMTEwbDMtM2M2OC43LTUyLjcgMTEzLjctMTIwXFxuIDEzNS0yMDIgNC0xNC43IDYtMjMgNi0yNSAwLTcuMy03LTExLTIxLTExLTggMC0xMy4yLjgtMTUuNSAyLjUtMi4zIDEuNy00LjIgNS44XFxuLTUuNSAxMi41LTEuMyA0LjctMi43IDEwLjMtNCAxNy0xMiA0OC43LTM0LjggOTItNjguNSAxMzBTNjUuMyAyMjguMyAxOCAyNDdcXG5jLTEwIDQtMTYgNy43LTE4IDExIDAgOC43IDYgMTQuMyAxOCAxNyA0Ny4zIDE4LjcgODcuOCA0NyAxMjEuNSA4NVMxOTYgNDQxLjMgMjA4XFxuIDQ5MGMuNyAyIDEuMyA1IDIgOXMxLjIgNi43IDEuNSA4Yy4zIDEuMyAxIDMuMyAyIDZzMi4yIDQuNSAzLjUgNS41YzEuMyAxIDMuM1xcbiAxLjggNiAyLjVzNiAxIDEwIDFjMTQgMCAyMS0zLjcgMjEtMTEgMC0yLTItMTAuMy02LTI1LTIwLTc5LjMtNjUtMTQ2LjctMTM1LTIwMlxcbiBsLTMtM2gzOTk4OTB6TTEwMCAyNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gb3ZlcmJyYWNlIGlzIGZyb20gZ2x5cGhzIFUrMjNBOS8yM0E4LzIzQTcgaW4gZm9udCBLYVRlWF9TaXplNC1SZWd1bGFyXG4gIGxlZnRicmFjZTogXCJNNiA1NDhsLTYtNnYtMzVsNi0xMWM1Ni0xMDQgMTM1LjMtMTgxLjMgMjM4LTIzMiA1Ny4zLTI4LjcgMTE3XFxuLTQ1IDE3OS01MGgzOTk1Nzd2MTIwSDQwM2MtNDMuMyA3LTgxIDE1LTExMyAyNi0xMDAuNyAzMy0xNzkuNyA5MS0yMzcgMTc0LTIuN1xcbiA1LTYgOS0xMCAxMy0uNyAxLTcuMyAxLTIwIDFINnpcIixcbiAgbGVmdGJyYWNldW5kZXI6IFwiTTAgNmw2LTZoMTdjMTIuNjg4IDAgMTkuMzEzLjMgMjAgMSA0IDQgNy4zMTMgOC4zIDEwIDEzXFxuIDM1LjMxMyA1MS4zIDgwLjgxMyA5My44IDEzNi41IDEyNy41IDU1LjY4OCAzMy43IDExNy4xODggNTUuOCAxODQuNSA2Ni41LjY4OFxcbiAwIDIgLjMgNCAxIDE4LjY4OCAyLjcgNzYgNC4zIDE3MiA1aDM5OTQ1MHYxMjBINDI5bC02LTFjLTEyNC42ODgtOC0yMzUtNjEuN1xcbi0zMzEtMTYxQzYwLjY4NyAxMzguNyAzMi4zMTIgOTkuMyA3IDU0TDAgNDFWNnpcIixcbiAgLy8gb3Zlcmdyb3VwIGlzIGZyb20gdGhlIE1uU3ltYm9sIHBhY2thZ2UgKHB1YmxpYyBkb21haW4pXG4gIGxlZnRncm91cDogXCJNNDAwMDAwIDgwXFxuSDQzNUM2NCA4MCAxNjguMyAyMjkuNCAyMSAyNjBjLTUuOSAxLjItMTggMC0xOCAwLTIgMC0zLTEtMy0zdi0zOEM3NiA2MSAyNTcgMFxcbiA0MzUgMGgzOTk1NjV6XCIsXG4gIGxlZnRncm91cHVuZGVyOiBcIk00MDAwMDAgMjYyXFxuSDQzNUM2NCAyNjIgMTY4LjMgMTEyLjYgMjEgODJjLTUuOS0xLjItMTggMC0xOCAwLTIgMC0zIDEtMyAzdjM4Yzc2IDE1OCAyNTcgMjE5XFxuIDQzNSAyMTloMzk5NTY1elwiLFxuICAvLyBIYXJwb29ucyBhcmUgZnJvbSBnbHlwaCBVKzIxQkQgaW4gZm9udCBLYVRlWCBNYWluXG4gIGxlZnRoYXJwb29uOiBcIk0wIDI2N2MuNyA1LjMgMyAxMCA3IDE0aDM5OTk5M3YtNDBIOTNjMy4zXFxuLTMuMyAxMC4yLTkuNSAyMC41LTE4LjVzMTcuOC0xNS44IDIyLjUtMjAuNWM1MC43LTUyIDg4LTExMC4zIDExMi0xNzUgNC0xMS4zIDVcXG4tMTguMyAzLTIxLTEuMy00LTcuMy02LTE4LTYtOCAwLTEzIC43LTE1IDJzLTQuNyA2LjctOCAxNmMtNDIgOTguNy0xMDcuMyAxNzQuN1xcbi0xOTYgMjI4LTYuNyA0LjctMTAuNyA4LTEyIDEwLTEuMyAyLTIgNS43LTIgMTF6bTEwMC0yNnY0MGgzOTk5MDB2LTQwelwiLFxuICBsZWZ0aGFycG9vbnBsdXM6IFwiTTAgMjY3Yy43IDUuMyAzIDEwIDcgMTRoMzk5OTkzdi00MEg5M2MzLjMtMy4zIDEwLjItOS41XFxuIDIwLjUtMTguNXMxNy44LTE1LjggMjIuNS0yMC41YzUwLjctNTIgODgtMTEwLjMgMTEyLTE3NSA0LTExLjMgNS0xOC4zIDMtMjEtMS4zXFxuLTQtNy4zLTYtMTgtNi04IDAtMTMgLjctMTUgMnMtNC43IDYuNy04IDE2Yy00MiA5OC43LTEwNy4zIDE3NC43LTE5NiAyMjgtNi43IDQuN1xcbi0xMC43IDgtMTIgMTAtMS4zIDItMiA1LjctMiAxMXptMTAwLTI2djQwaDM5OTkwMHYtNDB6TTAgNDM1djQwaDQwMDAwMHYtNDB6XFxubTAgMHY0MGg0MDAwMDB2LTQwelwiLFxuICBsZWZ0aGFycG9vbmRvd246IFwiTTcgMjQxYy00IDQtNi4zMzMgOC42NjctNyAxNCAwIDUuMzMzLjY2NyA5IDIgMTFzNS4zMzNcXG4gNS4zMzMgMTIgMTBjOTAuNjY3IDU0IDE1NiAxMzAgMTk2IDIyOCAzLjMzMyAxMC42NjcgNi4zMzMgMTYuMzMzIDkgMTcgMiAuNjY3IDVcXG4gMSA5IDFoNWMxMC42NjcgMCAxNi42NjctMiAxOC02IDItMi42NjcgMS05LjY2Ny0zLTIxLTMyLTg3LjMzMy04Mi42NjctMTU3LjY2N1xcbi0xNTItMjExbC0zLTNoMzk5OTA3di00MHpNOTMgMjgxIEg0MDAwMDAgdi00MEw3IDI0MXpcIixcbiAgbGVmdGhhcnBvb25kb3ducGx1czogXCJNNyA0MzVjLTQgNC02LjMgOC43LTcgMTQgMCA1LjMuNyA5IDIgMTFzNS4zIDUuMyAxMlxcbiAxMGM5MC43IDU0IDE1NiAxMzAgMTk2IDIyOCAzLjMgMTAuNyA2LjMgMTYuMyA5IDE3IDIgLjcgNSAxIDkgMWg1YzEwLjcgMCAxNi43XFxuLTIgMTgtNiAyLTIuNyAxLTkuNy0zLTIxLTMyLTg3LjMtODIuNy0xNTcuNy0xNTItMjExbC0zLTNoMzk5OTA3di00MEg3em05MyAwXFxudjQwaDM5OTkwMHYtNDB6TTAgMjQxdjQwaDM5OTkwMHYtNDB6bTAgMHY0MGgzOTk5MDB2LTQwelwiLFxuICAvLyBob29rIGlzIGZyb20gZ2x5cGggVSsyMUE5IGluIGZvbnQgS2FUZVggTWFpblxuICBsZWZ0aG9vazogXCJNNDAwMDAwIDI4MSBIMTAzcy0zMy0xMS4yLTYxLTMzLjVTMCAxOTcuMyAwIDE2NHMxNC4yLTYxLjIgNDIuNVxcbi04My41QzcwLjggNTguMiAxMDQgNDcgMTQyIDQ3IGMxNi43IDAgMjUgNi43IDI1IDIwIDAgMTItOC43IDE4LjctMjYgMjAtNDAgMy4zXFxuLTY4LjcgMTUuNy04NiAzNy0xMCAxMi0xNSAyNS4zLTE1IDQwIDAgMjIuNyA5LjggNDAuNyAyOS41IDU0IDE5LjcgMTMuMyA0My41IDIxXFxuIDcxLjUgMjNoMzk5ODU5ek0xMDMgMjgxdi00MGgzOTk4OTd2NDB6XCIsXG4gIGxlZnRsaW5lc2VnbWVudDogXCJNNDAgMjgxIFY0MjggSDAgVjk0IEg0MCBWMjQxIEg0MDAwMDAgdjQwelxcbk00MCAyODEgVjQyOCBIMCBWOTQgSDQwIFYyNDEgSDQwMDAwMCB2NDB6XCIsXG4gIGxlZnRtYXBzdG86IFwiTTQwIDI4MSBWNDQ4SDBWNzRINDBWMjQxSDQwMDAwMHY0MHpcXG5NNDAgMjgxIFY0NDhIMFY3NEg0MFYyNDFINDAwMDAwdjQwelwiLFxuICAvLyB0b2Zyb20gaXMgZnJvbSBnbHlwaCBVKzIxQzQgaW4gZm9udCBLYVRlWCBBTVMgUmVndWxhclxuICBsZWZ0VG9Gcm9tOiBcIk0wIDE0N2g0MDAwMDB2NDBIMHptMCAyMTRjNjggNDAgMTE1LjcgOTUuNyAxNDMgMTY3aDIyYzE1LjMgMCAyM1xcbi0uMyAyMy0xIDAtMS4zLTUuMy0xMy43LTE2LTM3LTE4LTM1LjMtNDEuMy02OS03MC0xMDFsLTctOGgzOTk5MDV2LTQwSDk1bDctOFxcbmMyOC43LTMyIDUyLTY1LjcgNzAtMTAxIDEwLjctMjMuMyAxNi0zNS43IDE2LTM3IDAtLjctNy43LTEtMjMtMWgtMjJDMTE1LjcgMjY1LjNcXG4gNjggMzIxIDAgMzYxem0wLTE3NHYtNDBoMzk5OTAwdjQwem0xMDAgMTU0djQwaDM5OTkwMHYtNDB6XCIsXG4gIGxvbmdlcXVhbDogXCJNMCA1MCBoNDAwMDAwIHY0MEgweiBtMCAxOTRoNDAwMDB2NDBIMHpcXG5NMCA1MCBoNDAwMDAwIHY0MEgweiBtMCAxOTRoNDAwMDB2NDBIMHpcIixcbiAgbWlkYnJhY2U6IFwiTTIwMDQyOCAzMzRcXG5jLTEwMC43LTguMy0xOTUuMy00NC0yODAtMTA4LTU1LjMtNDItMTAxLjctOTMtMTM5LTE1M2wtOS0xNGMtMi43IDQtNS43IDguNy05IDE0XFxuLTUzLjMgODYuNy0xMjMuNyAxNTMtMjExIDE5OS02Ni43IDM2LTEzNy4zIDU2LjMtMjEyIDYySDBWMjE0aDE5OTU2OGMxNzguMy0xMS43XFxuIDMxMS43LTc4LjMgNDAzLTIwMSA2LTggOS43LTEyIDExLTEyIC43LS43IDYuNy0xIDE4LTFzMTcuMy4zIDE4IDFjMS4zIDAgNSA0IDExXFxuIDEyIDQ0LjcgNTkuMyAxMDEuMyAxMDYuMyAxNzAgMTQxczE0NS4zIDU0LjMgMjI5IDYwaDE5OTU3MnYxMjB6XCIsXG4gIG1pZGJyYWNldW5kZXI6IFwiTTE5OTU3MiAyMTRcXG5jMTAwLjcgOC4zIDE5NS4zIDQ0IDI4MCAxMDggNTUuMyA0MiAxMDEuNyA5MyAxMzkgMTUzbDkgMTRjMi43LTQgNS43LTguNyA5LTE0XFxuIDUzLjMtODYuNyAxMjMuNy0xNTMgMjExLTE5OSA2Ni43LTM2IDEzNy4zLTU2LjMgMjEyLTYyaDE5OTU2OHYxMjBIMjAwNDMyYy0xNzguM1xcbiAxMS43LTMxMS43IDc4LjMtNDAzIDIwMS02IDgtOS43IDEyLTExIDEyLS43LjctNi43IDEtMTggMXMtMTcuMy0uMy0xOC0xYy0xLjMgMFxcbi01LTQtMTEtMTItNDQuNy01OS4zLTEwMS4zLTEwNi4zLTE3MC0xNDFzLTE0NS4zLTU0LjMtMjI5LTYwSDBWMjE0elwiLFxuICBvaWludFNpemUxOiBcIk01MTIuNiA3MS42YzI3Mi42IDAgMzIwLjMgMTA2LjggMzIwLjMgMTc4LjIgMCA3MC44LTQ3LjcgMTc3LjZcXG4tMzIwLjMgMTc3LjZTMTkzLjEgMzIwLjYgMTkzLjEgMjQ5LjhjMC03MS40IDQ2LjktMTc4LjIgMzE5LjUtMTc4LjJ6XFxubTM2OC4xIDE3OC4yYzAtODYuNC02MC45LTIxNS40LTM2OC4xLTIxNS40LTMwNi40IDAtMzY3LjMgMTI5LTM2Ny4zIDIxNS40IDAgODUuOFxcbjYwLjkgMjE0LjggMzY3LjMgMjE0LjggMzA3LjIgMCAzNjguMS0xMjkgMzY4LjEtMjE0Ljh6XCIsXG4gIG9paW50U2l6ZTI6IFwiTTc1Ny44IDEwMC4xYzM4NC43IDAgNDUxLjEgMTM3LjYgNDUxLjEgMjMwIDAgOTEuMy02Ni40IDIyOC44XFxuLTQ1MS4xIDIyOC44LTM4Ni4zIDAtNDUyLjctMTM3LjUtNDUyLjctMjI4LjggMC05Mi40IDY2LjQtMjMwIDQ1Mi43LTIzMHpcXG5tNTAyLjQgMjMwYzAtMTExLjItODIuNC0yNzcuMi01MDIuNC0yNzcuMnMtNTA0IDE2Ni01MDQgMjc3LjJcXG5jMCAxMTAgODQgMjc2IDUwNCAyNzZzNTAyLjQtMTY2IDUwMi40LTI3NnpcIixcbiAgb2lpaW50U2l6ZTE6IFwiTTY4MS40IDcxLjZjNDA4LjkgMCA0ODAuNSAxMDYuOCA0ODAuNSAxNzguMiAwIDcwLjgtNzEuNiAxNzcuNlxcbi00ODAuNSAxNzcuNlMyMDIuMSAzMjAuNiAyMDIuMSAyNDkuOGMwLTcxLjQgNzAuNS0xNzguMiA0NzkuMy0xNzguMnpcXG5tNTI1LjggMTc4LjJjMC04Ni40LTg2LjgtMjE1LjQtNTI1LjctMjE1LjQtNDM3LjkgMC01MjQuNyAxMjktNTI0LjcgMjE1LjQgMFxcbjg1LjggODYuOCAyMTQuOCA1MjQuNyAyMTQuOCA0MzguOSAwIDUyNS43LTEyOSA1MjUuNy0yMTQuOHpcIixcbiAgb2lpaW50U2l6ZTI6IFwiTTEwMjEuMiA1M2M2MDMuNiAwIDcwNy44IDE2NS44IDcwNy44IDI3Ny4yIDAgMTEwLTEwNC4yIDI3NS44XFxuLTcwNy44IDI3NS44LTYwNiAwLTcxMC4yLTE2NS44LTcxMC4yLTI3NS44QzMxMSAyMTguOCA0MTUuMiA1MyAxMDIxLjIgNTN6XFxubTc3MC40IDI3Ny4xYzAtMTMxLjItMTI2LjQtMzI3LjYtNzcwLjUtMzI3LjZTMjQ4LjQgMTk4LjkgMjQ4LjQgMzMwLjFcXG5jMCAxMzAgMTI4LjggMzI2LjQgNzcyLjcgMzI2LjRzNzcwLjUtMTk2LjQgNzcwLjUtMzI2LjR6XCIsXG4gIHJpZ2h0YXJyb3c6IFwiTTAgMjQxdjQwaDM5OTg5MWMtNDcuMyAzNS4zLTg0IDc4LTExMCAxMjhcXG4tMTYuNyAzMi0yNy43IDYzLjctMzMgOTUgMCAxLjMtLjIgMi43LS41IDQtLjMgMS4zLS41IDIuMy0uNSAzIDAgNy4zIDYuNyAxMSAyMFxcbiAxMSA4IDAgMTMuMi0uOCAxNS41LTIuNSAyLjMtMS43IDQuMi01LjUgNS41LTExLjUgMi0xMy4zIDUuNy0yNyAxMS00MSAxNC43LTQ0LjdcXG4gMzktODQuNSA3My0xMTkuNXM3My43LTYwLjIgMTE5LTc1LjVjNi0yIDktNS43IDktMTFzLTMtOS05LTExYy00NS4zLTE1LjMtODVcXG4tNDAuNS0xMTktNzUuNXMtNTguMy03NC44LTczLTExOS41Yy00LjctMTQtOC4zLTI3LjMtMTEtNDAtMS4zLTYuNy0zLjItMTAuOC01LjVcXG4tMTIuNS0yLjMtMS43LTcuNS0yLjUtMTUuNS0yLjUtMTQgMC0yMSAzLjctMjEgMTEgMCAyIDIgMTAuMyA2IDI1IDIwLjcgODMuMyA2N1xcbiAxNTEuNyAxMzkgMjA1em0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRicmFjZTogXCJNNDAwMDAwIDU0MmxcXG4tNiA2aC0xN2MtMTIuNyAwLTE5LjMtLjMtMjAtMS00LTQtNy4zLTguMy0xMC0xMy0zNS4zLTUxLjMtODAuOC05My44LTEzNi41LTEyNy41XFxucy0xMTcuMi01NS44LTE4NC41LTY2LjVjLS43IDAtMi0uMy00LTEtMTguNy0yLjctNzYtNC4zLTE3Mi01SDBWMjE0aDM5OTU3MWw2IDFcXG5jMTI0LjcgOCAyMzUgNjEuNyAzMzEgMTYxIDMxLjMgMzMuMyA1OS43IDcyLjcgODUgMTE4bDcgMTN2MzV6XCIsXG4gIHJpZ2h0YnJhY2V1bmRlcjogXCJNMzk5OTk0IDBsNiA2djM1bC02IDExYy01NiAxMDQtMTM1LjMgMTgxLjMtMjM4IDIzMi01Ny4zXFxuIDI4LjctMTE3IDQ1LTE3OSA1MEgtMzAwVjIxNGgzOTk4OTdjNDMuMy03IDgxLTE1IDExMy0yNiAxMDAuNy0zMyAxNzkuNy05MSAyMzdcXG4tMTc0IDIuNy01IDYtOSAxMC0xMyAuNy0xIDcuMy0xIDIwLTFoMTd6XCIsXG4gIHJpZ2h0Z3JvdXA6IFwiTTAgODBoMzk5NTY1YzM3MSAwIDI2Ni43IDE0OS40IDQxNCAxODAgNS45IDEuMiAxOCAwIDE4IDAgMiAwXFxuIDMtMSAzLTN2LTM4Yy03Ni0xNTgtMjU3LTIxOS00MzUtMjE5SDB6XCIsXG4gIHJpZ2h0Z3JvdXB1bmRlcjogXCJNMCAyNjJoMzk5NTY1YzM3MSAwIDI2Ni43LTE0OS40IDQxNC0xODAgNS45LTEuMiAxOCAwIDE4XFxuIDAgMiAwIDMgMSAzIDN2MzhjLTc2IDE1OC0yNTcgMjE5LTQzNSAyMTlIMHpcIixcbiAgcmlnaHRoYXJwb29uOiBcIk0wIDI0MXY0MGgzOTk5OTNjNC43LTQuNyA3LTkuMyA3LTE0IDAtOS4zXFxuLTMuNy0xNS4zLTExLTE4LTkyLjctNTYuNy0xNTktMTMzLjctMTk5LTIzMS0zLjMtOS4zLTYtMTQuNy04LTE2LTItMS4zLTctMi0xNS0yXFxuLTEwLjcgMC0xNi43IDItMTggNi0yIDIuNy0xIDkuNyAzIDIxIDE1LjMgNDIgMzYuNyA4MS44IDY0IDExOS41IDI3LjMgMzcuNyA1OFxcbiA2OS4yIDkyIDk0LjV6bTAgMHY0MGgzOTk5MDB2LTQwelwiLFxuICByaWdodGhhcnBvb25wbHVzOiBcIk0wIDI0MXY0MGgzOTk5OTNjNC43LTQuNyA3LTkuMyA3LTE0IDAtOS4zLTMuNy0xNS4zLTExXFxuLTE4LTkyLjctNTYuNy0xNTktMTMzLjctMTk5LTIzMS0zLjMtOS4zLTYtMTQuNy04LTE2LTItMS4zLTctMi0xNS0yLTEwLjcgMC0xNi43XFxuIDItMTggNi0yIDIuNy0xIDkuNyAzIDIxIDE1LjMgNDIgMzYuNyA4MS44IDY0IDExOS41IDI3LjMgMzcuNyA1OCA2OS4yIDkyIDk0LjV6XFxubTAgMHY0MGgzOTk5MDB2LTQweiBtMTAwIDE5NHY0MGgzOTk5MDB2LTQwem0wIDB2NDBoMzk5OTAwdi00MHpcIixcbiAgcmlnaHRoYXJwb29uZG93bjogXCJNMzk5NzQ3IDUxMWMwIDcuMyA2LjcgMTEgMjAgMTEgOCAwIDEzLS44IDE1LTIuNXM0LjctNi44XFxuIDgtMTUuNWM0MC05NCA5OS4zLTE2Ni4zIDE3OC0yMTcgMTMuMy04IDIwLjMtMTIuMyAyMS0xMyA1LjMtMy4zIDguNS01LjggOS41XFxuLTcuNSAxLTEuNyAxLjUtNS4yIDEuNS0xMC41cy0yLjMtMTAuMy03LTE1SDB2NDBoMzk5OTA4Yy0zNCAyNS4zLTY0LjcgNTctOTIgOTVcXG4tMjcuMyAzOC00OC43IDc3LjctNjQgMTE5LTMuMyA4LjctNSAxNC01IDE2ek0wIDI0MXY0MGgzOTk5MDB2LTQwelwiLFxuICByaWdodGhhcnBvb25kb3ducGx1czogXCJNMzk5NzQ3IDcwNWMwIDcuMyA2LjcgMTEgMjAgMTEgOCAwIDEzLS44XFxuIDE1LTIuNXM0LjctNi44IDgtMTUuNWM0MC05NCA5OS4zLTE2Ni4zIDE3OC0yMTcgMTMuMy04IDIwLjMtMTIuMyAyMS0xMyA1LjMtMy4zXFxuIDguNS01LjggOS41LTcuNSAxLTEuNyAxLjUtNS4yIDEuNS0xMC41cy0yLjMtMTAuMy03LTE1SDB2NDBoMzk5OTA4Yy0zNCAyNS4zXFxuLTY0LjcgNTctOTIgOTUtMjcuMyAzOC00OC43IDc3LjctNjQgMTE5LTMuMyA4LjctNSAxNC01IDE2ek0wIDQzNXY0MGgzOTk5MDB2LTQwelxcbm0wLTE5NHY0MGg0MDAwMDB2LTQwem0wIDB2NDBoNDAwMDAwdi00MHpcIixcbiAgcmlnaHRob29rOiBcIk0zOTk4NTkgMjQxYy03NjQgMCAwIDAgMCAwIDQwLTMuMyA2OC43LTE1LjcgODYtMzcgMTAtMTIgMTUtMjUuM1xcbiAxNS00MCAwLTIyLjctOS44LTQwLjctMjkuNS01NC0xOS43LTEzLjMtNDMuNS0yMS03MS41LTIzLTE3LjMtMS4zLTI2LTgtMjYtMjAgMFxcbi0xMy4zIDguNy0yMCAyNi0yMCAzOCAwIDcxIDExLjIgOTkgMzMuNSAwIDAgNyA1LjYgMjEgMTYuNyAxNCAxMS4yIDIxIDMzLjUgMjFcXG4gNjYuOHMtMTQgNjEuMi00MiA4My41Yy0yOCAyMi4zLTYxIDMzLjUtOTkgMzMuNUwwIDI0MXogTTAgMjgxdi00MGgzOTk4NTl2NDB6XCIsXG4gIHJpZ2h0bGluZXNlZ21lbnQ6IFwiTTM5OTk2MCAyNDEgVjk0IGg0MCBWNDI4IGgtNDAgVjI4MSBIMCB2LTQwelxcbk0zOTk5NjAgMjQxIFY5NCBoNDAgVjQyOCBoLTQwIFYyODEgSDAgdi00MHpcIixcbiAgcmlnaHRUb0Zyb206IFwiTTQwMDAwMCAxNjdjLTcwLjctNDItMTE4LTk3LjctMTQyLTE2N2gtMjNjLTE1LjMgMC0yMyAuMy0yM1xcbiAxIDAgMS4zIDUuMyAxMy43IDE2IDM3IDE4IDM1LjMgNDEuMyA2OSA3MCAxMDFsNyA4SDB2NDBoMzk5OTA1bC03IDhjLTI4LjcgMzJcXG4tNTIgNjUuNy03MCAxMDEtMTAuNyAyMy4zLTE2IDM1LjctMTYgMzcgMCAuNyA3LjcgMSAyMyAxaDIzYzI0LTY5LjMgNzEuMy0xMjUgMTQyXFxuLTE2N3ogTTEwMCAxNDd2NDBoMzk5OTAwdi00MHpNMCAzNDF2NDBoMzk5OTAwdi00MHpcIixcbiAgLy8gdHdvaGVhZGxlZnRhcnJvdyBpcyBmcm9tIGdseXBoIFUrMjE5RSBpbiBmb250IEthVGVYIEFNUyBSZWd1bGFyXG4gIHR3b2hlYWRsZWZ0YXJyb3c6IFwiTTAgMTY3YzY4IDQwXFxuIDExNS43IDk1LjcgMTQzIDE2N2gyMmMxNS4zIDAgMjMtLjMgMjMtMSAwLTEuMy01LjMtMTMuNy0xNi0zNy0xOC0zNS4zLTQxLjMtNjlcXG4tNzAtMTAxbC03LThoMTI1bDkgN2M1MC43IDM5LjMgODUgODYgMTAzIDE0MGg0NmMwLTQuNy02LjMtMTguNy0xOS00Mi0xOC0zNS4zXFxuLTQwLTY3LjMtNjYtOTZsLTktOWgzOTk3MTZ2LTQwSDI4NGw5LTljMjYtMjguNyA0OC02MC43IDY2LTk2IDEyLjctMjMuMzMzIDE5XFxuLTM3LjMzMyAxOS00MmgtNDZjLTE4IDU0LTUyLjMgMTAwLjctMTAzIDE0MGwtOSA3SDk1bDctOGMyOC43LTMyIDUyLTY1LjcgNzAtMTAxXFxuIDEwLjctMjMuMzMzIDE2LTM1LjcgMTYtMzcgMC0uNy03LjctMS0yMy0xaC0yMkMxMTUuNyA3MS4zIDY4IDEyNyAwIDE2N3pcIixcbiAgdHdvaGVhZHJpZ2h0YXJyb3c6IFwiTTQwMDAwMCAxNjdcXG5jLTY4LTQwLTExNS43LTk1LjctMTQzLTE2N2gtMjJjLTE1LjMgMC0yMyAuMy0yMyAxIDAgMS4zIDUuMyAxMy43IDE2IDM3IDE4IDM1LjNcXG4gNDEuMyA2OSA3MCAxMDFsNyA4aC0xMjVsLTktN2MtNTAuNy0zOS4zLTg1LTg2LTEwMy0xNDBoLTQ2YzAgNC43IDYuMyAxOC43IDE5IDQyXFxuIDE4IDM1LjMgNDAgNjcuMyA2NiA5Nmw5IDlIMHY0MGgzOTk3MTZsLTkgOWMtMjYgMjguNy00OCA2MC43LTY2IDk2LTEyLjcgMjMuMzMzXFxuLTE5IDM3LjMzMy0xOSA0Mmg0NmMxOC01NCA1Mi4zLTEwMC43IDEwMy0xNDBsOS03aDEyNWwtNyA4Yy0yOC43IDMyLTUyIDY1LjctNzBcXG4gMTAxLTEwLjcgMjMuMzMzLTE2IDM1LjctMTYgMzcgMCAuNyA3LjcgMSAyMyAxaDIyYzI3LjMtNzEuMyA3NS0xMjcgMTQzLTE2N3pcIixcbiAgLy8gdGlsZGUxIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBhIGdseXBoIGZyb20gdGhlIE1uU3ltYm9sIHBhY2thZ2VcbiAgdGlsZGUxOiBcIk0yMDAgNTUuNTM4Yy03NyAwLTE2OCA3My45NTMtMTc3IDczLjk1My0zIDAtN1xcbi0yLjE3NS05LTUuNDM3TDIgOTdjLTEtMi0yLTQtMi02IDAtNCAyLTcgNS05bDIwLTEyQzExNiAxMiAxNzEgMCAyMDcgMGM4NiAwXFxuIDExNCA2OCAxOTEgNjggNzggMCAxNjgtNjggMTc3LTY4IDQgMCA3IDIgOSA1bDEyIDE5YzEgMi4xNzUgMiA0LjM1IDIgNi41MjUgMFxcbiA0LjM1LTIgNy42MTMtNSA5Ljc4OGwtMTkgMTMuMDVjLTkyIDYzLjA3Ny0xMTYuOTM3IDc1LjMwOC0xODMgNzYuMTI4XFxuLTY4LjI2Ny44NDctMTEzLTczLjk1Mi0xOTEtNzMuOTUyelwiLFxuICAvLyBkaXR0byB0aWxkZTIsIHRpbGRlMywgJiB0aWxkZTRcbiAgdGlsZGUyOiBcIk0zNDQgNTUuMjY2Yy0xNDIgMC0zMDAuNjM4IDgxLjMxNi0zMTEuNSA4Ni40MThcXG4tOC4wMSAzLjc2Mi0yMi41IDEwLjkxLTIzLjUgNS41NjJMMSAxMjBjLTEtMi0xLTMtMS00IDAtNSAzLTkgOC0xMGwxOC40LTlDMTYwLjlcXG4gMzEuOSAyODMgMCAzNTggMGMxNDggMCAxODggMTIyIDMzMSAxMjJzMzE0LTk3IDMyNi05N2M0IDAgOCAyIDEwIDdsNyAyMS4xMTRcXG5jMSAyLjE0IDEgMy4yMSAxIDQuMjggMCA1LjM0Ny0zIDkuNjI2LTcgMTAuNjk2bC0yMi4zIDEyLjYyMkM4NTIuNiAxNTguMzcyIDc1MVxcbiAxODEuNDc2IDY3NiAxODEuNDc2Yy0xNDkgMC0xODktMTI2LjIxLTMzMi0xMjYuMjF6XCIsXG4gIHRpbGRlMzogXCJNNzg2IDU5QzQ1NyA1OSAzMiAxNzUuMjQyIDEzIDE3NS4yNDJjLTYgMC0xMC0zLjQ1N1xcbi0xMS0xMC4zN0wuMTUgMTM4Yy0xLTcgMy0xMiAxMC0xM2wxOS4yLTYuNEMzNzguNCA0MC43IDYzNC4zIDAgODA0LjMgMGMzMzcgMFxcbiA0MTEuOCAxNTcgNzQ2LjggMTU3IDMyOCAwIDc1NC0xMTIgNzczLTExMiA1IDAgMTAgMyAxMSA5bDEgMTQuMDc1YzEgOC4wNjYtLjY5N1xcbiAxNi41OTUtNi42OTcgMTcuNDkybC0yMS4wNTIgNy4zMWMtMzY3LjkgOTguMTQ2LTYwOS4xNSAxMjIuNjk2LTc3OC4xNSAxMjIuNjk2XFxuIC0zMzggMC00MDktMTU2LjU3My03NDQtMTU2LjU3M3pcIixcbiAgdGlsZGU0OiBcIk03ODYgNThDNDU3IDU4IDMyIDE3Ny40ODcgMTMgMTc3LjQ4N2MtNiAwLTEwLTMuMzQ1XFxuLTExLTEwLjAzNUwuMTUgMTQzYy0xLTcgMy0xMiAxMC0xM2wyMi02LjdDMzgxLjIgMzUgNjM3LjE1IDAgODA3LjE1IDBjMzM3IDAgNDA5XFxuIDE3NyA3NDQgMTc3IDMyOCAwIDc1NC0xMjcgNzczLTEyNyA1IDAgMTAgMyAxMSA5bDEgMTQuNzk0YzEgNy44MDUtMyAxMy4zOC05XFxuIDE0LjQ5NWwtMjAuNyA1LjU3NGMtMzY2Ljg1IDk5Ljc5LTYwNy4zIDEzOS4zNzItNzc2LjMgMTM5LjM3Mi0zMzggMC00MDlcXG4gLTE3NS4yMzYtNzQ0LTE3NS4yMzZ6XCIsXG4gIC8vIHZlYyBpcyBmcm9tIGdseXBoIFUrMjBENyBpbiBmb250IEthVGVYIE1haW5cbiAgdmVjOiBcIk0zNzcgMjBjMC01LjMzMyAxLjgzMy0xMCA1LjUtMTRTMzkxIDAgMzk3IDBjNC42NjcgMCA4LjY2NyAxLjY2NyAxMiA1XFxuMy4zMzMgMi42NjcgNi42NjcgOSAxMCAxOSA2LjY2NyAyNC42NjcgMjAuMzMzIDQzLjY2NyA0MSA1NyA3LjMzMyA0LjY2NyAxMVxcbjEwLjY2NyAxMSAxOCAwIDYtMSAxMC0zIDEycy02LjY2NyA1LTE0IDljLTI4LjY2NyAxNC42NjctNTMuNjY3IDM1LjY2Ny03NSA2M1xcbi0xLjMzMyAxLjMzMy0zLjE2NyAzLjUtNS41IDYuNXMtNCA0LjgzMy01IDUuNWMtMSAuNjY3LTIuNSAxLjMzMy00LjUgMnMtNC4zMzMgMVxcbi03IDFjLTQuNjY3IDAtOS4xNjctMS44MzMtMTMuNS01LjVTMzM3IDE4NCAzMzcgMTc4YzAtMTIuNjY3IDE1LjY2Ny0zMi4zMzMgNDctNTlcXG5IMjEzbC0xNzEtMWMtOC42NjctNi0xMy0xMi4zMzMtMTMtMTkgMC00LjY2NyA0LjMzMy0xMS4zMzMgMTMtMjBoMzU5XFxuYy0xNi0yNS4zMzMtMjQtNDUtMjQtNTl6XCIsXG4gIC8vIHdpZGVoYXQxIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBhIGdseXBoIGZyb20gdGhlIE1uU3ltYm9sIHBhY2thZ2VcbiAgd2lkZWhhdDE6IFwiTTUyOSAwaDVsNTE5IDExNWM1IDEgOSA1IDkgMTAgMCAxLTEgMi0xIDNsLTQgMjJcXG5jLTEgNS01IDktMTEgOWgtMkw1MzIgNjcgMTkgMTU5aC0yYy01IDAtOS00LTExLTlsLTUtMjJjLTEtNiAyLTEyIDgtMTN6XCIsXG4gIC8vIGRpdHRvIHdpZGVoYXQyLCB3aWRlaGF0MywgJiB3aWRlaGF0NFxuICB3aWRlaGF0MjogXCJNMTE4MSAwaDJsMTE3MSAxNzZjNiAwIDEwIDUgMTAgMTFsLTIgMjNjLTEgNi01IDEwXFxuLTExIDEwaC0xTDExODIgNjcgMTUgMjIwaC0xYy02IDAtMTAtNC0xMS0xMGwtMi0yM2MtMS02IDQtMTEgMTAtMTF6XCIsXG4gIHdpZGVoYXQzOiBcIk0xMTgxIDBoMmwxMTcxIDIzNmM2IDAgMTAgNSAxMCAxMWwtMiAyM2MtMSA2LTUgMTBcXG4tMTEgMTBoLTFMMTE4MiA2NyAxNSAyODBoLTFjLTYgMC0xMC00LTExLTEwbC0yLTIzYy0xLTYgNC0xMSAxMC0xMXpcIixcbiAgd2lkZWhhdDQ6IFwiTTExODEgMGgybDExNzEgMjk2YzYgMCAxMCA1IDEwIDExbC0yIDIzYy0xIDYtNSAxMFxcbi0xMSAxMGgtMUwxMTgyIDY3IDE1IDM0MGgtMWMtNiAwLTEwLTQtMTEtMTBsLTItMjNjLTEtNiA0LTExIDEwLTExelwiLFxuICAvLyB3aWRlY2hlY2sgcGF0aHMgYXJlIGFsbCBpbnZlcnRlZCB2ZXJzaW9ucyBvZiB3aWRlaGF0XG4gIHdpZGVjaGVjazE6IFwiTTUyOSwxNTloNWw1MTksLTExNWM1LC0xLDksLTUsOSwtMTBjMCwtMSwtMSwtMiwtMSwtM2wtNCwtMjJjLTEsXFxuLTUsLTUsLTksLTExLC05aC0ybC01MTIsOTJsLTUxMywtOTJoLTJjLTUsMCwtOSw0LC0xMSw5bC01LDIyYy0xLDYsMiwxMiw4LDEzelwiLFxuICB3aWRlY2hlY2syOiBcIk0xMTgxLDIyMGgybDExNzEsLTE3NmM2LDAsMTAsLTUsMTAsLTExbC0yLC0yM2MtMSwtNiwtNSwtMTAsXFxuLTExLC0xMGgtMWwtMTE2OCwxNTNsLTExNjcsLTE1M2gtMWMtNiwwLC0xMCw0LC0xMSwxMGwtMiwyM2MtMSw2LDQsMTEsMTAsMTF6XCIsXG4gIHdpZGVjaGVjazM6IFwiTTExODEsMjgwaDJsMTE3MSwtMjM2YzYsMCwxMCwtNSwxMCwtMTFsLTIsLTIzYy0xLC02LC01LC0xMCxcXG4tMTEsLTEwaC0xbC0xMTY4LDIxM2wtMTE2NywtMjEzaC0xYy02LDAsLTEwLDQsLTExLDEwbC0yLDIzYy0xLDYsNCwxMSwxMCwxMXpcIixcbiAgd2lkZWNoZWNrNDogXCJNMTE4MSwzNDBoMmwxMTcxLC0yOTZjNiwwLDEwLC01LDEwLC0xMWwtMiwtMjNjLTEsLTYsLTUsLTEwLFxcbi0xMSwtMTBoLTFsLTExNjgsMjczbC0xMTY3LC0yNzNoLTFjLTYsMCwtMTAsNCwtMTEsMTBsLTIsMjNjLTEsNiw0LDExLDEwLDExelwiLFxuICAvLyBUaGUgbmV4dCB0ZW4gcGF0aHMgc3VwcG9ydCByZWFjdGlvbiBhcnJvd3MgZnJvbSB0aGUgbWhjaGVtIHBhY2thZ2UuXG4gIC8vIEFycm93cyBmb3IgXFxjZXs8LS0+fSBhcmUgb2Zmc2V0IGZyb20geEF4aXMgYnkgMC4yMmV4LCBwZXIgbWhjaGVtIGluIExhVGVYXG4gIC8vIGJhcmFib3ZlbGVmdGFycm93IGlzIG1vc3RseSBmcm9tIGZyb20gZ2x5cGggVSsyMTkwIGluIGZvbnQgS2FUZVggTWFpblxuICBiYXJhYm92ZWxlZnRhcnJvdzogXCJNNDAwMDAwIDYyMGgtMzk5ODkwbDMgLTNjNjguNyAtNTIuNyAxMTMuNyAtMTIwIDEzNSAtMjAyXFxuYzQgLTE0LjcgNiAtMjMgNiAtMjVjMCAtNy4zIC03IC0xMSAtMjEgLTExYy04IDAgLTEzLjIgMC44IC0xNS41IDIuNVxcbmMtMi4zIDEuNyAtNC4yIDUuOCAtNS41IDEyLjVjLTEuMyA0LjcgLTIuNyAxMC4zIC00IDE3Yy0xMiA0OC43IC0zNC44IDkyIC02OC41IDEzMFxcbnMtNzQuMiA2Ni4zIC0xMjEuNSA4NWMtMTAgNCAtMTYgNy43IC0xOCAxMWMwIDguNyA2IDE0LjMgMTggMTdjNDcuMyAxOC43IDg3LjggNDdcXG4xMjEuNSA4NXM1Ni41IDgxLjMgNjguNSAxMzBjMC43IDIgMS4zIDUgMiA5czEuMiA2LjcgMS41IDhjMC4zIDEuMyAxIDMuMyAyIDZcXG5zMi4yIDQuNSAzLjUgNS41YzEuMyAxIDMuMyAxLjggNiAyLjVzNiAxIDEwIDFjMTQgMCAyMSAtMy43IDIxIC0xMVxcbmMwIC0yIC0yIC0xMC4zIC02IC0yNWMtMjAgLTc5LjMgLTY1IC0xNDYuNyAtMTM1IC0yMDJsLTMgLTNoMzk5ODkwelxcbk0xMDAgNjIwdjQwaDM5OTkwMHYtNDB6IE0wIDI0MXY0MGgzOTk5MDB2LTQwek0wIDI0MXY0MGgzOTk5MDB2LTQwelwiLFxuICAvLyByaWdodGFycm93YWJvdmViYXIgaXMgbW9zdGx5IGZyb20gZ2x5cGggVSsyMTkyLCBLYVRlWCBNYWluXG4gIHJpZ2h0YXJyb3dhYm92ZWJhcjogXCJNMCAyNDF2NDBoMzk5ODkxYy00Ny4zIDM1LjMtODQgNzgtMTEwIDEyOC0xNi43IDMyXFxuLTI3LjcgNjMuNy0zMyA5NSAwIDEuMy0uMiAyLjctLjUgNC0uMyAxLjMtLjUgMi4zLS41IDMgMCA3LjMgNi43IDExIDIwIDExIDggMFxcbjEzLjItLjggMTUuNS0yLjUgMi4zLTEuNyA0LjItNS41IDUuNS0xMS41IDItMTMuMyA1LjctMjcgMTEtNDEgMTQuNy00NC43IDM5XFxuLTg0LjUgNzMtMTE5LjVzNzMuNy02MC4yIDExOS03NS41YzYtMiA5LTUuNyA5LTExcy0zLTktOS0xMWMtNDUuMy0xNS4zLTg1LTQwLjVcXG4tMTE5LTc1LjVzLTU4LjMtNzQuOC03My0xMTkuNWMtNC43LTE0LTguMy0yNy4zLTExLTQwLTEuMy02LjctMy4yLTEwLjgtNS41XFxuLTEyLjUtMi4zLTEuNy03LjUtMi41LTE1LjUtMi41LTE0IDAtMjEgMy43LTIxIDExIDAgMiAyIDEwLjMgNiAyNSAyMC43IDgzLjMgNjdcXG4xNTEuNyAxMzkgMjA1em05NiAzNzloMzk5ODk0djQwSDB6bTAgMGgzOTk5MDR2NDBIMHpcIixcbiAgLy8gVGhlIHNob3J0IGxlZnQgaGFycG9vbiBoYXMgMC41ZW0gKGkuZS4gNTAwIHVuaXRzKSBrZXJuIG9uIHRoZSBsZWZ0IGVuZC5cbiAgLy8gUmVmIGZyb20gbWhjaGVtLnN0eTogXFxybGFwe1xccmFpc2Vib3h7LS4yMmV4fXskXFxrZXJuMC41ZW1cbiAgYmFyYWJvdmVzaG9ydGxlZnRoYXJwb29uOiBcIk01MDcsNDM1Yy00LDQsLTYuMyw4LjcsLTcsMTRjMCw1LjMsMC43LDksMiwxMVxcbmMxLjMsMiw1LjMsNS4zLDEyLDEwYzkwLjcsNTQsMTU2LDEzMCwxOTYsMjI4YzMuMywxMC43LDYuMywxNi4zLDksMTdcXG5jMiwwLjcsNSwxLDksMWMwLDAsNSwwLDUsMGMxMC43LDAsMTYuNywtMiwxOCwtNmMyLC0yLjcsMSwtOS43LC0zLC0yMVxcbmMtMzIsLTg3LjMsLTgyLjcsLTE1Ny43LC0xNTIsLTIxMWMwLDAsLTMsLTMsLTMsLTNsMzk5MzUxLDBsMCwtNDBcXG5jLTM5ODU3MCwwLC0zOTk0MzcsMCwtMzk5NDM3LDB6IE01OTMgNDM1IHY0MCBIMzk5NTAwIHYtNDB6XFxuTTAgMjgxIHYtNDAgSDM5OTkwOCB2NDB6IE0wIDI4MSB2LTQwIEgzOTk5MDggdjQwelwiLFxuICByaWdodGhhcnBvb25hYm92ZXNob3J0YmFyOiBcIk0wLDI0MSBsMCw0MGMzOTkxMjYsMCwzOTk5OTMsMCwzOTk5OTMsMFxcbmM0LjcsLTQuNyw3LC05LjMsNywtMTRjMCwtOS4zLC0zLjcsLTE1LjMsLTExLC0xOGMtOTIuNywtNTYuNywtMTU5LC0xMzMuNywtMTk5LFxcbi0yMzFjLTMuMywtOS4zLC02LC0xNC43LC04LC0xNmMtMiwtMS4zLC03LC0yLC0xNSwtMmMtMTAuNywwLC0xNi43LDIsLTE4LDZcXG5jLTIsMi43LC0xLDkuNywzLDIxYzE1LjMsNDIsMzYuNyw4MS44LDY0LDExOS41YzI3LjMsMzcuNyw1OCw2OS4yLDkyLDk0LjV6XFxuTTAgMjQxIHY0MCBIMzk5OTA4IHYtNDB6IE0wIDQ3NSB2LTQwIEgzOTk1MDAgdjQweiBNMCA0NzUgdi00MCBIMzk5NTAwIHY0MHpcIixcbiAgc2hvcnRiYXJhYm92ZWxlZnRoYXJwb29uOiBcIk03LDQzNWMtNCw0LC02LjMsOC43LC03LDE0YzAsNS4zLDAuNyw5LDIsMTFcXG5jMS4zLDIsNS4zLDUuMywxMiwxMGM5MC43LDU0LDE1NiwxMzAsMTk2LDIyOGMzLjMsMTAuNyw2LjMsMTYuMyw5LDE3YzIsMC43LDUsMSw5LFxcbjFjMCwwLDUsMCw1LDBjMTAuNywwLDE2LjcsLTIsMTgsLTZjMiwtMi43LDEsLTkuNywtMywtMjFjLTMyLC04Ny4zLC04Mi43LC0xNTcuNyxcXG4tMTUyLC0yMTFjMCwwLC0zLC0zLC0zLC0zbDM5OTkwNywwbDAsLTQwYy0zOTkxMjYsMCwtMzk5OTkzLDAsLTM5OTk5Mywwelxcbk05MyA0MzUgdjQwIEg0MDAwMDAgdi00MHogTTUwMCAyNDEgdjQwIEg0MDAwMDAgdi00MHogTTUwMCAyNDEgdjQwIEg0MDAwMDAgdi00MHpcIixcbiAgc2hvcnRyaWdodGhhcnBvb25hYm92ZWJhcjogXCJNNTMsMjQxbDAsNDBjMzk4NTcwLDAsMzk5NDM3LDAsMzk5NDM3LDBcXG5jNC43LC00LjcsNywtOS4zLDcsLTE0YzAsLTkuMywtMy43LC0xNS4zLC0xMSwtMThjLTkyLjcsLTU2LjcsLTE1OSwtMTMzLjcsLTE5OSxcXG4tMjMxYy0zLjMsLTkuMywtNiwtMTQuNywtOCwtMTZjLTIsLTEuMywtNywtMiwtMTUsLTJjLTEwLjcsMCwtMTYuNywyLC0xOCw2XFxuYy0yLDIuNywtMSw5LjcsMywyMWMxNS4zLDQyLDM2LjcsODEuOCw2NCwxMTkuNWMyNy4zLDM3LjcsNTgsNjkuMiw5Miw5NC41elxcbk01MDAgMjQxIHY0MCBIMzk5NDA4IHYtNDB6IE01MDAgNDM1IHY0MCBINDAwMDAwIHYtNDB6XCJcbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy90cmVlLmpzXG5cblxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIGRvY3VtZW50IGZyYWdtZW50LCB3aGljaCBjb250YWlucyBlbGVtZW50cywgYnV0IHdoZW5cbiAqIHBsYWNlZCBpbnRvIHRoZSBET00gZG9lc24ndCBoYXZlIGFueSByZXByZXNlbnRhdGlvbiBpdHNlbGYuIEl0IG9ubHkgY29udGFpbnNcbiAqIGNoaWxkcmVuIGFuZCBkb2Vzbid0IGhhdmUgYW55IERPTSBub2RlIHByb3BlcnRpZXMuXG4gKi9cbnZhciB0cmVlX0RvY3VtZW50RnJhZ21lbnQgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvLyBIdG1sRG9tTm9kZVxuICAvLyBOZXZlciB1c2VkOyBuZWVkZWQgZm9yIHNhdGlzZnlpbmcgaW50ZXJmYWNlLlxuICBmdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KGNoaWxkcmVuKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHRoaXMuY2xhc3NlcyA9IFtdO1xuICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICB0aGlzLmRlcHRoID0gMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gMDtcbiAgICB0aGlzLnN0eWxlID0ge307XG4gIH1cblxuICB2YXIgX3Byb3RvID0gRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmhhc0NsYXNzID0gZnVuY3Rpb24gaGFzQ2xhc3MoY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIHV0aWxzLmNvbnRhaW5zKHRoaXMuY2xhc3NlcywgY2xhc3NOYW1lKTtcbiAgfVxuICAvKiogQ29udmVydCB0aGUgZnJhZ21lbnQgaW50byBhIG5vZGUuICovXG4gIDtcblxuICBfcHJvdG8udG9Ob2RlID0gZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmcmFnLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFnO1xuICB9XG4gIC8qKiBDb252ZXJ0IHRoZSBmcmFnbWVudCBpbnRvIEhUTUwgbWFya3VwLiAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiXCI7IC8vIFNpbXBseSBjb25jYXRlbmF0ZSB0aGUgbWFya3VwIGZvciB0aGUgY2hpbGRyZW4gdG9nZXRoZXIuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIGlubmVyVGV4dC4gQXBwbGllcyB0b1xuICAgKiBNYXRoRG9tTm9kZSdzIG9ubHkuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dCgpIHtcbiAgICAvLyBUbyBhdm9pZCB0aGlzLCB3ZSB3b3VsZCBzdWJjbGFzcyBkb2N1bWVudEZyYWdtZW50IHNlcGFyYXRlbHkgZm9yXG4gICAgLy8gTWF0aE1MLCBidXQgcG9seWZpbGxzIGZvciBzdWJjbGFzc2luZyBpcyBleHBlbnNpdmUgcGVyIFBSIDE0NjkuXG4gICAgLy8gJEZsb3dGaXhNZTogT25seSB3b3JrcyBmb3IgQ2hpbGRUeXBlID0gTWF0aERvbU5vZGUuXG4gICAgdmFyIHRvVGV4dCA9IGZ1bmN0aW9uIHRvVGV4dChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNoaWxkLnRvVGV4dCgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5tYXAodG9UZXh0KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIHJldHVybiBEb2N1bWVudEZyYWdtZW50O1xufSgpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZG9tVHJlZS5qc1xuLyoqXG4gKiBUaGVzZSBvYmplY3RzIHN0b3JlIHRoZSBkYXRhIGFib3V0IHRoZSBET00gbm9kZXMgd2UgY3JlYXRlLCBhcyB3ZWxsIGFzIHNvbWVcbiAqIGV4dHJhIGRhdGEuIFRoZXkgY2FuIHRoZW4gYmUgdHJhbnNmb3JtZWQgaW50byByZWFsIERPTSBub2RlcyB3aXRoIHRoZVxuICogYHRvTm9kZWAgZnVuY3Rpb24gb3IgSFRNTCBtYXJrdXAgdXNpbmcgYHRvTWFya3VwYC4gVGhleSBhcmUgdXNlZnVsIGZvciBib3RoXG4gKiBzdG9yaW5nIGV4dHJhIHByb3BlcnRpZXMgb24gdGhlIG5vZGVzLCBhcyB3ZWxsIGFzIHByb3ZpZGluZyBhIHdheSB0byBlYXNpbHlcbiAqIHdvcmsgd2l0aCB0aGUgRE9NLlxuICpcbiAqIFNpbWlsYXIgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggTWF0aE1MIG5vZGVzIGV4aXN0IGluIG1hdGhNTFRyZWUuanMuXG4gKlxuICogVE9ETzogcmVmYWN0b3IgYHNwYW5gIGFuZCBgYW5jaG9yYCBpbnRvIGNvbW1vbiBzdXBlcmNsYXNzIHdoZW5cbiAqIHRhcmdldCBlbnZpcm9ubWVudHMgc3VwcG9ydCBjbGFzcyBpbmhlcml0YW5jZVxuICovXG5cblxuXG5cblxuLyoqXG4gKiBDcmVhdGUgYW4gSFRNTCBjbGFzc05hbWUgYmFzZWQgb24gYSBsaXN0IG9mIGNsYXNzZXMuIEluIGFkZGl0aW9uIHRvIGpvaW5pbmdcbiAqIHdpdGggc3BhY2VzLCB3ZSBhbHNvIHJlbW92ZSBlbXB0eSBjbGFzc2VzLlxuICovXG52YXIgY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiBjcmVhdGVDbGFzcyhjbGFzc2VzKSB7XG4gIHJldHVybiBjbGFzc2VzLmZpbHRlcihmdW5jdGlvbiAoY2xzKSB7XG4gICAgcmV0dXJuIGNscztcbiAgfSkuam9pbihcIiBcIik7XG59O1xuXG52YXIgaW5pdE5vZGUgPSBmdW5jdGlvbiBpbml0Tm9kZShjbGFzc2VzLCBvcHRpb25zLCBzdHlsZSkge1xuICB0aGlzLmNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgdGhpcy5oZWlnaHQgPSAwO1xuICB0aGlzLmRlcHRoID0gMDtcbiAgdGhpcy5tYXhGb250U2l6ZSA9IDA7XG4gIHRoaXMuc3R5bGUgPSBzdHlsZSB8fCB7fTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgdGhpcy5jbGFzc2VzLnB1c2goXCJtdGlnaHRcIik7XG4gICAgfVxuXG4gICAgdmFyIGNvbG9yID0gb3B0aW9ucy5nZXRDb2xvcigpO1xuXG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICB0aGlzLnN0eWxlLmNvbG9yID0gY29sb3I7XG4gICAgfVxuICB9XG59O1xuLyoqXG4gKiBDb252ZXJ0IGludG8gYW4gSFRNTCBub2RlXG4gKi9cblxuXG52YXIgX3RvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSh0YWdOYW1lKSB7XG4gIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgLy8gQXBwbHkgdGhlIGNsYXNzXG5cbiAgbm9kZS5jbGFzc05hbWUgPSBjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpOyAvLyBBcHBseSBpbmxpbmUgc3R5bGVzXG5cbiAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qgc2VlbSB0byB1bmRlcnN0YW5kIHNwYW4uc3R5bGUncyB0eXBlLlxuICAgICAgbm9kZS5zdHlsZVtzdHlsZV0gPSB0aGlzLnN0eWxlW3N0eWxlXTtcbiAgICB9XG4gIH0gLy8gQXBwbHkgYXR0cmlidXRlc1xuXG5cbiAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGF0dHIpKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgIH1cbiAgfSAvLyBBcHBlbmQgdGhlIGNoaWxkcmVuLCBhbHNvIGFzIEhUTUwgbm9kZXNcblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jaGlsZHJlbltpXS50b05vZGUoKSk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn07XG4vKipcbiAqIENvbnZlcnQgaW50byBhbiBIVE1MIG1hcmt1cCBzdHJpbmdcbiAqL1xuXG5cbnZhciBfdG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCh0YWdOYW1lKSB7XG4gIHZhciBtYXJrdXAgPSBcIjxcIiArIHRhZ05hbWU7IC8vIEFkZCB0aGUgY2xhc3NcblxuICBpZiAodGhpcy5jbGFzc2VzLmxlbmd0aCkge1xuICAgIG1hcmt1cCArPSBcIiBjbGFzcz1cXFwiXCIgKyB1dGlscy5lc2NhcGUoY3JlYXRlQ2xhc3ModGhpcy5jbGFzc2VzKSkgKyBcIlxcXCJcIjtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBcIlwiOyAvLyBBZGQgdGhlIHN0eWxlcywgYWZ0ZXIgaHlwaGVuYXRpb25cblxuICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICBzdHlsZXMgKz0gdXRpbHMuaHlwaGVuYXRlKHN0eWxlKSArIFwiOlwiICsgdGhpcy5zdHlsZVtzdHlsZV0gKyBcIjtcIjtcbiAgICB9XG4gIH1cblxuICBpZiAoc3R5bGVzKSB7XG4gICAgbWFya3VwICs9IFwiIHN0eWxlPVxcXCJcIiArIHV0aWxzLmVzY2FwZShzdHlsZXMpICsgXCJcXFwiXCI7XG4gIH0gLy8gQWRkIHRoZSBhdHRyaWJ1dGVzXG5cblxuICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgIG1hcmt1cCArPSBcIiBcIiArIGF0dHIgKyBcIj1cXFwiXCIgKyB1dGlscy5lc2NhcGUodGhpcy5hdHRyaWJ1dGVzW2F0dHJdKSArIFwiXFxcIlwiO1xuICAgIH1cbiAgfVxuXG4gIG1hcmt1cCArPSBcIj5cIjsgLy8gQWRkIHRoZSBtYXJrdXAgb2YgdGhlIGNoaWxkcmVuLCBhbHNvIGFzIG1hcmt1cFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIG1hcmt1cCArPSB0aGlzLmNoaWxkcmVuW2ldLnRvTWFya3VwKCk7XG4gIH1cblxuICBtYXJrdXAgKz0gXCI8L1wiICsgdGFnTmFtZSArIFwiPlwiO1xuICByZXR1cm4gbWFya3VwO1xufTsgLy8gTWFraW5nIHRoZSB0eXBlIGJlbG93IGV4YWN0IHdpdGggYWxsIG9wdGlvbmFsIGZpZWxkcyBkb2Vzbid0IHdvcmsgZHVlIHRvXG4vLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy80NTgyXG4vLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy81Njg4XG4vLyBIb3dldmVyLCBzaW5jZSAqYWxsKiBmaWVsZHMgYXJlIG9wdGlvbmFsLCAkU2hhcGU8PiB3b3JrcyBhcyBzdWdnZXN0ZWQgaW4gNTY4OFxuLy8gYWJvdmUuXG4vLyBUaGlzIHR5cGUgZG9lcyBub3QgaW5jbHVkZSBhbGwgQ1NTIHByb3BlcnRpZXMuIEFkZGl0aW9uYWwgcHJvcGVydGllcyBzaG91bGRcbi8vIGJlIGFkZGVkIGFzIG5lZWRlZC5cblxuXG4vKipcbiAqIFRoaXMgbm9kZSByZXByZXNlbnRzIGEgc3BhbiBub2RlLCB3aXRoIGEgY2xhc3NOYW1lLCBhIGxpc3Qgb2YgY2hpbGRyZW4sIGFuZFxuICogYW4gaW5saW5lIHN0eWxlLiBJdCBhbHNvIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGl0cyBoZWlnaHQsIGRlcHRoLCBhbmRcbiAqIG1heEZvbnRTaXplLlxuICpcbiAqIFJlcHJlc2VudHMgdHdvIHR5cGVzIHdpdGggZGlmZmVyZW50IHVzZXM6IFN2Z1NwYW4gdG8gd3JhcCBhbiBTVkcgYW5kIERvbVNwYW5cbiAqIG90aGVyd2lzZS4gVGhpcyB0eXBlc2FmZXR5IGlzIGltcG9ydGFudCB3aGVuIEhUTUwgYnVpbGRlcnMgYWNjZXNzIGEgc3BhbidzXG4gKiBjaGlsZHJlbi5cbiAqL1xudmFyIGRvbVRyZWVfU3BhbiA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHZvaWQgMDtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jbGFzc2VzID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGggPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgaW5pdE5vZGUuY2FsbCh0aGlzLCBjbGFzc2VzLCBvcHRpb25zLCBzdHlsZSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIGFuIGFyYml0cmFyeSBhdHRyaWJ1dGUgb24gdGhlIHNwYW4uIFdhcm5pbmc6IHVzZSB0aGlzIHdpc2VseS4gTm90XG4gICAqIGFsbCBicm93c2VycyBzdXBwb3J0IGF0dHJpYnV0ZXMgdGhlIHNhbWUsIGFuZCBoYXZpbmcgdG9vIG1hbnkgY3VzdG9tXG4gICAqIGF0dHJpYnV0ZXMgaXMgcHJvYmFibHkgYmFkLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBTcGFuLnByb3RvdHlwZTtcblxuICBfcHJvdG8uc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlXSA9IHZhbHVlO1xuICB9O1xuXG4gIF9wcm90by5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH07XG5cbiAgX3Byb3RvLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICByZXR1cm4gX3RvTm9kZS5jYWxsKHRoaXMsIFwic3BhblwiKTtcbiAgfTtcblxuICBfcHJvdG8udG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICByZXR1cm4gX3RvTWFya3VwLmNhbGwodGhpcywgXCJzcGFuXCIpO1xuICB9O1xuXG4gIHJldHVybiBTcGFuO1xufSgpO1xuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhbiBhbmNob3IgKDxhPikgZWxlbWVudCB3aXRoIGEgaHlwZXJsaW5rLiAgU2VlIGBzcGFuYFxuICogZm9yIGZ1cnRoZXIgZGV0YWlscy5cbiAqL1xuXG52YXIgZG9tVHJlZV9BbmNob3IgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBBbmNob3IoaHJlZiwgY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgICB0aGlzLmNoaWxkcmVuID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuc3R5bGUgPSB2b2lkIDA7XG4gICAgaW5pdE5vZGUuY2FsbCh0aGlzLCBjbGFzc2VzLCBvcHRpb25zKTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgfVxuXG4gIHZhciBfcHJvdG8yID0gQW5jaG9yLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBfcHJvdG8yLmhhc0NsYXNzID0gZnVuY3Rpb24gaGFzQ2xhc3MoY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIHV0aWxzLmNvbnRhaW5zKHRoaXMuY2xhc3NlcywgY2xhc3NOYW1lKTtcbiAgfTtcblxuICBfcHJvdG8yLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICByZXR1cm4gX3RvTm9kZS5jYWxsKHRoaXMsIFwiYVwiKTtcbiAgfTtcblxuICBfcHJvdG8yLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgcmV0dXJuIF90b01hcmt1cC5jYWxsKHRoaXMsIFwiYVwiKTtcbiAgfTtcblxuICByZXR1cm4gQW5jaG9yO1xufSgpO1xuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhbiBpbWFnZSBlbWJlZCAoPGltZz4pIGVsZW1lbnQuXG4gKi9cblxudmFyIGRvbVRyZWVfSW1nID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSW1nKHNyYywgYWx0LCBzdHlsZSkge1xuICAgIHRoaXMuc3JjID0gdm9pZCAwO1xuICAgIHRoaXMuYWx0ID0gdm9pZCAwO1xuICAgIHRoaXMuY2xhc3NlcyA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmRlcHRoID0gdm9pZCAwO1xuICAgIHRoaXMubWF4Rm9udFNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy5zdHlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmFsdCA9IGFsdDtcbiAgICB0aGlzLnNyYyA9IHNyYztcbiAgICB0aGlzLmNsYXNzZXMgPSBbXCJtb3JkXCJdO1xuICAgIHRoaXMuc3R5bGUgPSBzdHlsZTtcbiAgfVxuXG4gIHZhciBfcHJvdG8zID0gSW1nLnByb3RvdHlwZTtcblxuICBfcHJvdG8zLmhhc0NsYXNzID0gZnVuY3Rpb24gaGFzQ2xhc3MoY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIHV0aWxzLmNvbnRhaW5zKHRoaXMuY2xhc3NlcywgY2xhc3NOYW1lKTtcbiAgfTtcblxuICBfcHJvdG8zLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gICAgbm9kZS5zcmMgPSB0aGlzLnNyYztcbiAgICBub2RlLmFsdCA9IHRoaXMuYWx0O1xuICAgIG5vZGUuY2xhc3NOYW1lID0gXCJtb3JkXCI7IC8vIEFwcGx5IGlubGluZSBzdHlsZXNcblxuICAgIGZvciAodmFyIHN0eWxlIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlKSkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIG5vZGUuc3R5bGVbc3R5bGVdID0gdGhpcy5zdHlsZVtzdHlsZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH07XG5cbiAgX3Byb3RvMy50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHZhciBtYXJrdXAgPSBcIjxpbWcgIHNyYz0nXCIgKyB0aGlzLnNyYyArIFwiICdhbHQ9J1wiICsgdGhpcy5hbHQgKyBcIicgXCI7IC8vIEFkZCB0aGUgc3R5bGVzLCBhZnRlciBoeXBoZW5hdGlvblxuXG4gICAgdmFyIHN0eWxlcyA9IFwiXCI7XG5cbiAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgc3R5bGVzICs9IHV0aWxzLmh5cGhlbmF0ZShzdHlsZSkgKyBcIjpcIiArIHRoaXMuc3R5bGVbc3R5bGVdICsgXCI7XCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlcykge1xuICAgICAgbWFya3VwICs9IFwiIHN0eWxlPVxcXCJcIiArIHV0aWxzLmVzY2FwZShzdHlsZXMpICsgXCJcXFwiXCI7XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiJy8+XCI7XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfTtcblxuICByZXR1cm4gSW1nO1xufSgpO1xudmFyIGlDb21iaW5hdGlvbnMgPSB7XG4gICfDric6IFwiXFx1MDEzMVxcdTAzMDJcIixcbiAgJ8OvJzogXCJcXHUwMTMxXFx1MDMwOFwiLFxuICAnw60nOiBcIlxcdTAxMzFcXHUwMzAxXCIsXG4gIC8vICfEqyc6ICdcXHUwMTMxXFx1MDMwNCcsIC8vIGVuYWJsZSB3aGVuIHdlIGFkZCBFeHRlbmRlZCBMYXRpblxuICAnw6wnOiBcIlxcdTAxMzFcXHUwMzAwXCJcbn07XG4vKipcbiAqIEEgc3ltYm9sIG5vZGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgc3ltYm9sLiBJdCBlaXRoZXIgcmVuZGVyc1xuICogdG8gYSBzaW5nbGUgdGV4dCBub2RlLCBvciBhIHNwYW4gd2l0aCBhIHNpbmdsZSB0ZXh0IG5vZGUgaW4gaXQsIGRlcGVuZGluZyBvblxuICogd2hldGhlciBpdCBoYXMgQ1NTIGNsYXNzZXMsIHN0eWxlcywgb3IgbmVlZHMgaXRhbGljIGNvcnJlY3Rpb24uXG4gKi9cblxudmFyIGRvbVRyZWVfU3ltYm9sTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN5bWJvbE5vZGUodGV4dCwgaGVpZ2h0LCBkZXB0aCwgaXRhbGljLCBza2V3LCB3aWR0aCwgY2xhc3Nlcywgc3R5bGUpIHtcbiAgICB0aGlzLnRleHQgPSB2b2lkIDA7XG4gICAgdGhpcy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aCA9IHZvaWQgMDtcbiAgICB0aGlzLml0YWxpYyA9IHZvaWQgMDtcbiAgICB0aGlzLnNrZXcgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gdm9pZCAwO1xuICAgIHRoaXMuY2xhc3NlcyA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQgfHwgMDtcbiAgICB0aGlzLmRlcHRoID0gZGVwdGggfHwgMDtcbiAgICB0aGlzLml0YWxpYyA9IGl0YWxpYyB8fCAwO1xuICAgIHRoaXMuc2tldyA9IHNrZXcgfHwgMDtcbiAgICB0aGlzLndpZHRoID0gd2lkdGggfHwgMDtcbiAgICB0aGlzLmNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgIHRoaXMuc3R5bGUgPSBzdHlsZSB8fCB7fTtcbiAgICB0aGlzLm1heEZvbnRTaXplID0gMDsgLy8gTWFyayB0ZXh0IGZyb20gbm9uLUxhdGluIHNjcmlwdHMgd2l0aCBzcGVjaWZpYyBjbGFzc2VzIHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gc3BlY2lmeSB3aGljaCBmb250cyB0byB1c2UuICBUaGlzIGFsbG93cyB1cyB0byByZW5kZXIgdGhlc2VcbiAgICAvLyBjaGFyYWN0ZXJzIHdpdGggYSBzZXJpZiBmb250IGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGJyb3dzZXIgd291bGRcbiAgICAvLyBlaXRoZXIgZGVmYXVsdCB0byBhIHNhbnMgc2VyaWYgb3IgcmVuZGVyIGEgcGxhY2Vob2xkZXIgY2hhcmFjdGVyLlxuICAgIC8vIFdlIHVzZSBDU1MgY2xhc3MgbmFtZXMgbGlrZSBjamtfZmFsbGJhY2ssIGhhbmd1bF9mYWxsYmFjayBhbmRcbiAgICAvLyBicmFobWljX2ZhbGxiYWNrLiBTZWUgLi91bmljb2RlU2NyaXB0cy5qcyBmb3IgdGhlIHNldCBvZiBwb3NzaWJsZVxuICAgIC8vIHNjcmlwdCBuYW1lc1xuXG4gICAgdmFyIHNjcmlwdCA9IHNjcmlwdEZyb21Db2RlcG9pbnQodGhpcy50ZXh0LmNoYXJDb2RlQXQoMCkpO1xuXG4gICAgaWYgKHNjcmlwdCkge1xuICAgICAgdGhpcy5jbGFzc2VzLnB1c2goc2NyaXB0ICsgXCJfZmFsbGJhY2tcIik7XG4gICAgfVxuXG4gICAgaWYgKC9bw67Dr8Otw6xdLy50ZXN0KHRoaXMudGV4dCkpIHtcbiAgICAgIC8vIGFkZCDEqyB3aGVuIHdlIGFkZCBFeHRlbmRlZCBMYXRpblxuICAgICAgdGhpcy50ZXh0ID0gaUNvbWJpbmF0aW9uc1t0aGlzLnRleHRdO1xuICAgIH1cbiAgfVxuXG4gIHZhciBfcHJvdG80ID0gU3ltYm9sTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNC5oYXNDbGFzcyA9IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1dGlscy5jb250YWlucyh0aGlzLmNsYXNzZXMsIGNsYXNzTmFtZSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0ZXh0IG5vZGUgb3Igc3BhbiBmcm9tIGEgc3ltYm9sIG5vZGUuIE5vdGUgdGhhdCBhIHNwYW4gaXMgb25seVxuICAgKiBjcmVhdGVkIGlmIGl0IGlzIG5lZWRlZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG80LnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMudGV4dCk7XG4gICAgdmFyIHNwYW4gPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXRhbGljID4gMCkge1xuICAgICAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgc3Bhbi5zdHlsZS5tYXJnaW5SaWdodCA9IHRoaXMuaXRhbGljICsgXCJlbVwiO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgc3BhbiA9IHNwYW4gfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICBzcGFuLmNsYXNzTmFtZSA9IGNyZWF0ZUNsYXNzKHRoaXMuY2xhc3Nlcyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgc3R5bGUgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpKSB7XG4gICAgICAgIHNwYW4gPSBzcGFuIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpOyAvLyAkRmxvd0ZpeE1lIEZsb3cgZG9lc24ndCBzZWVtIHRvIHVuZGVyc3RhbmQgc3Bhbi5zdHlsZSdzIHR5cGUuXG5cbiAgICAgICAgc3Bhbi5zdHlsZVtzdHlsZV0gPSB0aGlzLnN0eWxlW3N0eWxlXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3Bhbikge1xuICAgICAgc3Bhbi5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIHJldHVybiBzcGFuO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHN5bWJvbCBub2RlLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzQudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICAvLyBUT0RPKGFscGVydCk6IE1vcmUgZHVwbGljYXRpb24gdGhhbiBJJ2QgbGlrZSBmcm9tXG4gICAgLy8gc3Bhbi5wcm90b3R5cGUudG9NYXJrdXAgYW5kIHN5bWJvbE5vZGUucHJvdG90eXBlLnRvTm9kZS4uLlxuICAgIHZhciBuZWVkc1NwYW4gPSBmYWxzZTtcbiAgICB2YXIgbWFya3VwID0gXCI8c3BhblwiO1xuXG4gICAgaWYgKHRoaXMuY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICAgIG5lZWRzU3BhbiA9IHRydWU7XG4gICAgICBtYXJrdXAgKz0gXCIgY2xhc3M9XFxcIlwiO1xuICAgICAgbWFya3VwICs9IHV0aWxzLmVzY2FwZShjcmVhdGVDbGFzcyh0aGlzLmNsYXNzZXMpKTtcbiAgICAgIG1hcmt1cCArPSBcIlxcXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGVzID0gXCJcIjtcblxuICAgIGlmICh0aGlzLml0YWxpYyA+IDApIHtcbiAgICAgIHN0eWxlcyArPSBcIm1hcmdpbi1yaWdodDpcIiArIHRoaXMuaXRhbGljICsgXCJlbTtcIjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBzdHlsZSBpbiB0aGlzLnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIHtcbiAgICAgICAgc3R5bGVzICs9IHV0aWxzLmh5cGhlbmF0ZShzdHlsZSkgKyBcIjpcIiArIHRoaXMuc3R5bGVbc3R5bGVdICsgXCI7XCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlcykge1xuICAgICAgbmVlZHNTcGFuID0gdHJ1ZTtcbiAgICAgIG1hcmt1cCArPSBcIiBzdHlsZT1cXFwiXCIgKyB1dGlscy5lc2NhcGUoc3R5bGVzKSArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIHZhciBlc2NhcGVkID0gdXRpbHMuZXNjYXBlKHRoaXMudGV4dCk7XG5cbiAgICBpZiAobmVlZHNTcGFuKSB7XG4gICAgICBtYXJrdXAgKz0gXCI+XCI7XG4gICAgICBtYXJrdXAgKz0gZXNjYXBlZDtcbiAgICAgIG1hcmt1cCArPSBcIjwvc3Bhbj5cIjtcbiAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlc2NhcGVkO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3ltYm9sTm9kZTtcbn0oKTtcbi8qKlxuICogU1ZHIG5vZGVzIGFyZSB1c2VkIHRvIHJlbmRlciBzdHJldGNoeSB3aWRlIGVsZW1lbnRzLlxuICovXG5cbnZhciBTdmdOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3ZnTm9kZShjaGlsZHJlbiwgYXR0cmlidXRlcykge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90bzUgPSBTdmdOb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG81LnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgc3ZnTlMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIFwic3ZnXCIpOyAvLyBBcHBseSBhdHRyaWJ1dGVzXG5cbiAgICBmb3IgKHZhciBhdHRyIGluIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsIGF0dHIpKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMuY2hpbGRyZW5baV0udG9Ob2RlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzUudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICB2YXIgbWFya3VwID0gXCI8c3ZnXCI7IC8vIEFwcGx5IGF0dHJpYnV0ZXNcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPSdcIiArIHRoaXMuYXR0cmlidXRlc1thdHRyXSArIFwiJ1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIj5cIjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbWFya3VwICs9IHRoaXMuY2hpbGRyZW5baV0udG9NYXJrdXAoKTtcbiAgICB9XG5cbiAgICBtYXJrdXAgKz0gXCI8L3N2Zz5cIjtcbiAgICByZXR1cm4gbWFya3VwO1xuICB9O1xuXG4gIHJldHVybiBTdmdOb2RlO1xufSgpO1xudmFyIGRvbVRyZWVfUGF0aE5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXRoTm9kZShwYXRoTmFtZSwgYWx0ZXJuYXRlKSB7XG4gICAgdGhpcy5wYXRoTmFtZSA9IHZvaWQgMDtcbiAgICB0aGlzLmFsdGVybmF0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLnBhdGhOYW1lID0gcGF0aE5hbWU7XG4gICAgdGhpcy5hbHRlcm5hdGUgPSBhbHRlcm5hdGU7IC8vIFVzZWQgb25seSBmb3IgXFxzcXJ0XG4gIH1cblxuICB2YXIgX3Byb3RvNiA9IFBhdGhOb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG82LnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgc3ZnTlMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIFwicGF0aFwiKTtcblxuICAgIGlmICh0aGlzLmFsdGVybmF0ZSkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkXCIsIHRoaXMuYWx0ZXJuYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkXCIsIHN2Z0dlb21ldHJ5X3BhdGhbdGhpcy5wYXRoTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzYudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICBpZiAodGhpcy5hbHRlcm5hdGUpIHtcbiAgICAgIHJldHVybiBcIjxwYXRoIGQ9J1wiICsgdGhpcy5hbHRlcm5hdGUgKyBcIicvPlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCI8cGF0aCBkPSdcIiArIHN2Z0dlb21ldHJ5X3BhdGhbdGhpcy5wYXRoTmFtZV0gKyBcIicvPlwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gUGF0aE5vZGU7XG59KCk7XG52YXIgTGluZU5vZGUgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5lTm9kZShhdHRyaWJ1dGVzKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG4gIH1cblxuICB2YXIgX3Byb3RvNyA9IExpbmVOb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG83LnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgc3ZnTlMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIFwibGluZVwiKTsgLy8gQXBwbHkgYXR0cmlidXRlc1xuXG4gICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIF9wcm90bzcudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICB2YXIgbWFya3VwID0gXCI8bGluZVwiO1xuXG4gICAgZm9yICh2YXIgYXR0ciBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCBhdHRyKSkge1xuICAgICAgICBtYXJrdXAgKz0gXCIgXCIgKyBhdHRyICsgXCI9J1wiICsgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdICsgXCInXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiLz5cIjtcbiAgICByZXR1cm4gbWFya3VwO1xuICB9O1xuXG4gIHJldHVybiBMaW5lTm9kZTtcbn0oKTtcbmZ1bmN0aW9uIGFzc2VydFN5bWJvbERvbU5vZGUoZ3JvdXApIHtcbiAgaWYgKGdyb3VwIGluc3RhbmNlb2YgZG9tVHJlZV9TeW1ib2xOb2RlKSB7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHN5bWJvbE5vZGUgYnV0IGdvdCBcIiArIFN0cmluZyhncm91cCkgKyBcIi5cIik7XG4gIH1cbn1cbmZ1bmN0aW9uIGFzc2VydFNwYW4oZ3JvdXApIHtcbiAgaWYgKGdyb3VwIGluc3RhbmNlb2YgZG9tVHJlZV9TcGFuKSB7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHNwYW48SHRtbERvbU5vZGU+IGJ1dCBnb3QgXCIgKyBTdHJpbmcoZ3JvdXApICsgXCIuXCIpO1xuICB9XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3N1Ym1vZHVsZXMva2F0ZXgtZm9udHMvZm9udE1ldHJpY3NEYXRhLmpzXG4vLyBUaGlzIGZpbGUgaXMgR0VORVJBVEVEIGJ5IGJ1aWxkTWV0cmljcy5zaC4gRE8gTk9UIE1PRElGWS5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGZvbnRNZXRyaWNzRGF0YSA9ICh7XG4gIFwiQU1TLVJlZ3VsYXJcIjoge1xuICAgIFwiNjVcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiNjlcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzBcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiNzFcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzJcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNzNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNzRcIjogWzAuMTY2NjcsIDAuNjg4ODksIDAsIDAsIDAuNV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI3N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC45NDQ0NV0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI3OVwiOiBbMC4xNjY2NywgMC42ODg4OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4MVwiOiBbMC4xNjY2NywgMC42ODg4OSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4MlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMS4wXSxcbiAgICBcIjg4XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg5XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxNjVcIjogWzAsIDAuNjc1LCAwLjAyNSwgMCwgMC43NV0sXG4gICAgXCIxNzRcIjogWzAuMTU1NTksIDAuNjkyMjQsIDAsIDAsIDAuOTQ2NjZdLFxuICAgIFwiMjQwXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjI5NVwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgXCI3MTBcIjogWzAsIDAuODI1LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjczMlwiOiBbMCwgMC45LCAwLCAwLCAyLjMzMzM0XSxcbiAgICBcIjc3MFwiOiBbMCwgMC44MjUsIDAsIDAsIDIuMzMzMzRdLFxuICAgIFwiNzcxXCI6IFswLCAwLjksIDAsIDAsIDIuMzMzMzRdLFxuICAgIFwiOTg5XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwMDhcIjogWzAsIDAuNDMwNTYsIDAuMDQwMjgsIDAsIDAuNjY2NjddLFxuICAgIFwiODI0NVwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC4yNzVdLFxuICAgIFwiODQ2M1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC41NDAyOF0sXG4gICAgXCI4NDg3XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg0OThcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODUwMlwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NTAzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg1MDRcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODUxM1wiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4NTkyXCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC41XSxcbiAgICBcIjg1OTRcIjogWy0wLjAzNTk4LCAwLjQ2NDAyLCAwLCAwLCAwLjVdLFxuICAgIFwiODYwMlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjAzXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2MDZcIjogWzAuMDEzNTQsIDAuNTIyMzksIDAsIDAsIDEuMF0sXG4gICAgXCI4NjA4XCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgIFwiODYxMFwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4NjExXCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjg2MTlcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjIwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYyMVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDEuMzg4ODldLFxuICAgIFwiODYyMlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjI0XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjVdLFxuICAgIFwiODYyNVwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICBcIjg2MzBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjMxXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAxLjBdLFxuICAgIFwiODYzNFwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NjM1XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg2MzhcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiODYzOVwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC40MTY2N10sXG4gICAgXCI4NjQyXCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjQxNjY3XSxcbiAgICBcIjg2NDNcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNDE2NjddLFxuICAgIFwiODY0NFwiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NDZcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQ3XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODY0OFwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4NjQ5XCI6IFswLjE4MDgsIDAuNjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1MFwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4NjUxXCI6IFswLjAxMzU0LCAwLjUyMjM5LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1MlwiOiBbMC4wMTM1NCwgMC41MjIzOSwgMCwgMCwgMS4wXSxcbiAgICBcIjg2NTNcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1NFwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjU1XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NjZcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjY3XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY2OVwiOiBbLTAuMTMzMTMsIDAuMzc3ODgsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjcyXCI6IFstMC4wNjQsIDAuNDM3LCAwLCAwLCAxLjMzNF0sXG4gICAgXCI4Njc0XCI6IFstMC4wNjQsIDAuNDM3LCAwLCAwLCAxLjMzNF0sXG4gICAgXCI4NzA1XCI6IFswLCAwLjgyNSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MDhcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODcwOVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjQyOTE3XSxcbiAgICBcIjg3MjJcIjogWy0wLjAzNTk4LCAwLjQ2NDAyLCAwLCAwLCAwLjVdLFxuICAgIFwiODcyNFwiOiBbMC4wODE5OCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzI2XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MzNcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM3XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg3MzhcIjogWzAuMDM1MTcsIDAuNTIyMzksIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODczOVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC4yMjIyMl0sXG4gICAgXCI4NzQwXCI6IFswLjI1MTQyLCAwLjc0MTExLCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg3NDFcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiODc0MlwiOiBbMC4yNTE0MiwgMC43NDExMSwgMCwgMCwgMC41XSxcbiAgICBcIjg3NTZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc1N1wiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzY0XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzY1XCI6IFstMC4xMzMxMywgMC4zNzc4OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzY5XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzcwXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzc0XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3NzZcIjogWy0wLjAxNjg4LCAwLjQ4MzEyLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3NzhcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4MlwiOiBbMC4wNjA2MiwgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzgzXCI6IFswLjA2MDYyLCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3ODVcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc4NlwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzg3XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3OTBcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODc5MVwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzk2XCI6IFswLjA4MTk4LCAwLjkxNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDZcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgwN1wiOiBbMC4yNTU4MywgMC43NTU4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODA4XCI6IFswLjI1MTQyLCAwLjc1NzI2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDlcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxMlwiOiBbMC4yNTU4MywgMC43NTU4MywgMCwgMCwgMC41XSxcbiAgICBcIjg4MTRcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxNVwiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODE2XCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MTdcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgxOFwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODE5XCI6IFswLjIyOTU4LCAwLjcyOTU4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjJcIjogWzAuMTgwOCwgMC42NzUsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgyM1wiOiBbMC4xODA4LCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODI4XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MjlcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzMFwiOiBbMC4yMjk1OCwgMC43Mjk1OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODMxXCI6IFswLjIyOTU4LCAwLjcyOTU4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MzJcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzM1wiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQwXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDFcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0MlwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODQzXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDdcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg0OFwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU4XCI6IFswLjA4MTk4LCAwLjU4MTk4LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTlcIjogWzAuMDgxOTgsIDAuNTgxOTgsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2MVwiOiBbMC4wODE5OCwgMC41ODE5OCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODYyXCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODYzXCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODY0XCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODY1XCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODcyXCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NzNcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODg3NFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI4ODc2XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NzdcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODg3OFwiOiBbMCwgMC42ODg4OSwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4ODc5XCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg4ODJcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg4M1wiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODg0XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4ODVcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg4OFwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4ODkwXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjg4OTFcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODg5MlwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4OTAxXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg5MDNcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwNVwiOiBbMC4wODE2NywgMC41ODE2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTA2XCI6IFswLjA4MTY3LCAwLjU4MTY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MDdcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkwOFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTA5XCI6IFstMC4wMzU5OCwgMC40NjQwMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTEwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjc2MDQyXSxcbiAgICBcIjg5MTFcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNzYwNDJdLFxuICAgIFwiODkxMlwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTEzXCI6IFswLjAzNTE3LCAwLjU0OTg2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MTRcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODkxNVwiOiBbMCwgMC41NDk4NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4OTE2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5MThcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MTlcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjBcIjogWzAuMDM1MTcsIDAuNTQ5ODYsIDAsIDAsIDEuMzMzMzRdLFxuICAgIFwiODkyMVwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMS4zMzMzNF0sXG4gICAgXCI4OTIyXCI6IFswLjM4NTY5LCAwLjg4NTY5LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjNcIjogWzAuMzg1NjksIDAuODg1NjksIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkyNlwiOiBbMC4xMzY2NywgMC42MzY2NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTI3XCI6IFswLjEzNjY3LCAwLjYzNjY3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MjhcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkyOVwiOiBbMC4zMDI3NCwgMC43OTM4MywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM0XCI6IFswLjIzMjIyLCAwLjc0MTExLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzVcIjogWzAuMjMyMjIsIDAuNzQxMTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzNlwiOiBbMC4yMzIyMiwgMC43NDExMSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTM3XCI6IFswLjIzMjIyLCAwLjc0MTExLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5MzhcIjogWzAuMjA1NzYsIDAuNzA1NzYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODkzOVwiOiBbMC4yMDU3NiwgMC43MDU3NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTQwXCI6IFswLjMwMjc0LCAwLjc5MzgzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg5NDFcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODk5NFwiOiBbMC4xOTQ0NCwgMC42OTIyNCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4OTk1XCI6IFswLjE5NDQ0LCAwLjY5MjI0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk0MTZcIjogWzAuMTU1NTksIDAuNjkyMjQsIDAsIDAsIDAuOTAyMjJdLFxuICAgIFwiOTQ4NFwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC41XSxcbiAgICBcIjk0ODhcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NDkyXCI6IFswLCAwLjM3Nzg4LCAwLCAwLCAwLjVdLFxuICAgIFwiOTQ5NlwiOiBbMCwgMC4zNzc4OCwgMCwgMCwgMC41XSxcbiAgICBcIjk1ODVcIjogWzAuMTk0NDQsIDAuNjg4ODksIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTU4NlwiOiBbMC4xOTQ0NCwgMC43NDExMSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5NjMyXCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NjMzXCI6IFswLCAwLjY3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NjUwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NTFcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTY1NFwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5NjYwXCI6IFswLCAwLjU0OTg2LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjk2NjFcIjogWzAsIDAuNTQ5ODYsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTY2NFwiOiBbMC4wMzUxNywgMC41NDk4NiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5Njc0XCI6IFswLjExMTExLCAwLjY5MjI0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjk3MzNcIjogWzAuMTk0NDQsIDAuNjkyMjQsIDAsIDAsIDAuOTQ0NDVdLFxuICAgIFwiMTAwMDNcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMTAwMTZcIjogWzAsIDAuNjkyMjQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMTA3MzFcIjogWzAuMTExMTEsIDAuNjkyMjQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiMTA4NDZcIjogWzAuMTk0NDQsIDAuNzU1ODMsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiMTA4NzdcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4NzhcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4ODVcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4ODZcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4ODdcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4ODhcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4ODlcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4OTBcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4OTFcIjogWzAuNDgyNTYsIDAuOTgyNTYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA4OTJcIjogWzAuNDgyNTYsIDAuOTgyNTYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MDFcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MDJcIjogWzAuMTM2NjcsIDAuNjM2NjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzNcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzRcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzVcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzZcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzdcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5MzhcIjogWzAuMjYxNjcsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5NDlcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5NTBcIjogWzAuMjU1ODMsIDAuNzU1ODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5NTVcIjogWzAuMjg0ODEsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTA5NTZcIjogWzAuMjg0ODEsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNTBcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMjIyMjJdLFxuICAgIFwiNTczNTFcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNTczNTJcIjogWzAuMDgxNjcsIDAuNTgxNjcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNTNcIjogWzAsIDAuNDMwNTYsIDAuMDQwMjgsIDAsIDAuNjY2NjddLFxuICAgIFwiNTczNTZcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNTdcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNThcIjogWzAuNDE5NTEsIDAuOTE5NTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNTlcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjBcIjogWzAuMzAyNzQsIDAuNzkzODMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjFcIjogWzAuNDE5NTEsIDAuOTE5NTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjZcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjdcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjhcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNjlcIjogWzAuMjUxNDIsIDAuNzU3MjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNzBcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNTczNzFcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdXG4gIH0sXG4gIFwiQ2FsaWdyYXBoaWMtUmVndWxhclwiOiB7XG4gICAgXCI0OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjQ5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU1XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjY1XCI6IFswLCAwLjY4MzMzLCAwLCAwLjE5NDQ1LCAwLjc5ODQ3XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4MzMzLCAwLjAzMDQxLCAwLjEzODg5LCAwLjY1NjgxXSxcbiAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjA1ODM0LCAwLjEzODg5LCAwLjUyNjUzXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA4MzM0LCAwLjc3MTM5XSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjA4OTQ0LCAwLjExMTExLCAwLjUyNzc4XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4MzMzLCAwLjA5OTMxLCAwLjExMTExLCAwLjcxODc1XSxcbiAgICBcIjcxXCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjA1OTMsIDAuMTExMTEsIDAuNTk0ODddLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAuMDA5NjUsIDAuMTExMTEsIDAuODQ0NTJdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMDczODIsIDAsIDAuNTQ0NTJdLFxuICAgIFwiNzRcIjogWzAuMDk3MjIsIDAuNjgzMzMsIDAuMTg0NzIsIDAuMTY2NjcsIDAuNjc3NzhdLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAuMDE0NDUsIDAuMDU1NTYsIDAuNzYxOTVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTM4ODksIDAuNjg5NzJdLFxuICAgIFwiNzdcIjogWzAsIDAuNjgzMzMsIDAsIDAuMTM4ODksIDEuMjAwOV0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODMzMywgMC4xNDczNiwgMC4wODMzNCwgMC44MjA0OV0sXG4gICAgXCI3OVwiOiBbMCwgMC42ODMzMywgMC4wMjc3OCwgMC4xMTExMSwgMC43OTYxMV0sXG4gICAgXCI4MFwiOiBbMCwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC42OTU1Nl0sXG4gICAgXCI4MVwiOiBbMC4wOTcyMiwgMC42ODMzMywgMCwgMC4xMTExMSwgMC44MTY2N10sXG4gICAgXCI4MlwiOiBbMCwgMC42ODMzMywgMCwgMC4wODMzNCwgMC44NDc1XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjA3NSwgMC4xMzg4OSwgMC42MDU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4yNTQxNywgMCwgMC41NDQ2NF0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4wOTkzMSwgMC4wODMzNCwgMC42MjU4M10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4wODIyMiwgMCwgMC42MTI3OF0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4wODIyMiwgMC4wODMzNCwgMC45ODc3OF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4xNDY0MywgMC4xMzg4OSwgMC43MTMzXSxcbiAgICBcIjg5XCI6IFswLjA5NzIyLCAwLjY4MzMzLCAwLjA4MjIyLCAwLjA4MzM0LCAwLjY2ODM0XSxcbiAgICBcIjkwXCI6IFswLCAwLjY4MzMzLCAwLjA3OTQ0LCAwLjEzODg5LCAwLjcyNDczXVxuICB9LFxuICBcIkZyYWt0dXItUmVndWxhclwiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yOTU3NF0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTQ3MV0sXG4gICAgXCIzOFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43Mzc4Nl0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTIwMV0sXG4gICAgXCI0MFwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4zODg2NV0sXG4gICAgXCI0MVwiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC4zODg2NV0sXG4gICAgXCI0MlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI0M1wiOiBbMC4wODMxOSwgMC41ODI4MywgMCwgMCwgMC43NTYyM10sXG4gICAgXCI0NFwiOiBbMCwgMC4xMDgwMywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI0NVwiOiBbMC4wODMxOSwgMC41ODI4MywgMCwgMCwgMC43NTYyM10sXG4gICAgXCI0NlwiOiBbMCwgMC4xMDgwMywgMCwgMCwgMC4yNzc2NF0sXG4gICAgXCI0N1wiOiBbMC4yNDk4MiwgMC43NDk0NywgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI0OFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI0OVwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1MFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1MVwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1MlwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1M1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1NFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1NVwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1N1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDE4MV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC4yMTYwNl0sXG4gICAgXCI1OVwiOiBbMC4xMjYwNCwgMC40NzUzNCwgMCwgMCwgMC4yMTYwNl0sXG4gICAgXCI2MVwiOiBbLTAuMTMwOTksIDAuMzY4NjYsIDAsIDAsIDAuNzU2MjNdLFxuICAgIFwiNjNcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMzYyNDVdLFxuICAgIFwiNjVcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuNzE3Nl0sXG4gICAgXCI2NlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44ODM5N10sXG4gICAgXCI2N1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42MTI1NF0sXG4gICAgXCI2OFwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC44MzE1OF0sXG4gICAgXCI2OVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC42NjI3OF0sXG4gICAgXCI3MFwiOiBbMC4xMjYwNCwgMC42OTE0MSwgMCwgMCwgMC42MTExOV0sXG4gICAgXCI3MVwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC43ODUzOV0sXG4gICAgXCI3MlwiOiBbMC4wNjMwMiwgMC42OTE0MSwgMCwgMCwgMC43MjAzXSxcbiAgICBcIjczXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjU1NDQ4XSxcbiAgICBcIjc0XCI6IFswLjEyNjA0LCAwLjY5MTQxLCAwLCAwLCAwLjU1MjMxXSxcbiAgICBcIjc1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjY2ODQ1XSxcbiAgICBcIjc2XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjY2NjAyXSxcbiAgICBcIjc3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAxLjA0OTUzXSxcbiAgICBcIjc4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgzMjEyXSxcbiAgICBcIjc5XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgyNjk5XSxcbiAgICBcIjgwXCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjgyNzUzXSxcbiAgICBcIjgxXCI6IFswLjAzNzgxLCAwLjY5MTQxLCAwLCAwLCAwLjgyNjk5XSxcbiAgICBcIjgyXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgyODA3XSxcbiAgICBcIjgzXCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgyODYxXSxcbiAgICBcIjg0XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjY2ODk5XSxcbiAgICBcIjg1XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjY0NTc2XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjgzMTMxXSxcbiAgICBcIjg3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAxLjA0NjAyXSxcbiAgICBcIjg4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjcxOTIyXSxcbiAgICBcIjg5XCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjgzMjkzXSxcbiAgICBcIjkwXCI6IFswLjEyNjA0LCAwLjY5MTQxLCAwLCAwLCAwLjYwMjAxXSxcbiAgICBcIjkxXCI6IFswLjI0OTgyLCAwLjc0OTQ3LCAwLCAwLCAwLjI3NzY0XSxcbiAgICBcIjkzXCI6IFswLjI0OTgyLCAwLjc0OTQ3LCAwLCAwLCAwLjI3NzY0XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjQ5OTY1XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjUwMDQ2XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjUxMzE1XSxcbiAgICBcIjk5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjM4OTQ2XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC40OTg1N10sXG4gICAgXCIxMDFcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNDAwNTNdLFxuICAgIFwiMTAyXCI6IFswLjE4OTA2LCAwLjY5MTQxLCAwLCAwLCAwLjMyNjI2XSxcbiAgICBcIjEwM1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC41MDM3XSxcbiAgICBcIjEwNFwiOiBbMC4xODkwNiwgMC42OTE0MSwgMCwgMCwgMC41MjEyNl0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjc4OTldLFxuICAgIFwiMTA2XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjI4MDg4XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4zODk0Nl0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMjc5NTNdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjc2Njc2XSxcbiAgICBcIjExMFwiOiBbMCwgMC40NzUzNCwgMCwgMCwgMC41MjY2Nl0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNDg4ODVdLFxuICAgIFwiMTEyXCI6IFswLjE4OTA2LCAwLjUyMzk2LCAwLCAwLCAwLjUwMDQ2XSxcbiAgICBcIjExM1wiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC40ODkxMl0sXG4gICAgXCIxMTRcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuMzg5MTldLFxuICAgIFwiMTE1XCI6IFswLCAwLjQ3NTM0LCAwLCAwLCAwLjQ0MjY2XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MjExOSwgMCwgMCwgMC4zMzMwMV0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTE3Ml0sXG4gICAgXCIxMThcIjogWzAsIDAuNTIzOTYsIDAsIDAsIDAuNTExOF0sXG4gICAgXCIxMTlcIjogWzAsIDAuNTIzOTYsIDAsIDAsIDAuNzczNTFdLFxuICAgIFwiMTIwXCI6IFswLjE4OTA2LCAwLjQ3NTM0LCAwLCAwLCAwLjM4ODY1XSxcbiAgICBcIjEyMVwiOiBbMC4xODkwNiwgMC40NzUzNCwgMCwgMCwgMC40OTg4NF0sXG4gICAgXCIxMjJcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuMzkwNTRdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTE0MSwgMCwgMCwgMC4yMTQ3MV0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5MTQxLCAwLCAwLCAwLjIxNDcxXSxcbiAgICBcIjU4MTEyXCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjQ5NzQ5XSxcbiAgICBcIjU4MTEzXCI6IFswLCAwLjYyMTE5LCAwLCAwLCAwLjQ5ODNdLFxuICAgIFwiNTgxMTRcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuMzMzMjhdLFxuICAgIFwiNTgxMTVcIjogWzAuMTg5MDYsIDAuNjkxNDEsIDAsIDAsIDAuMzI5MjNdLFxuICAgIFwiNTgxMTZcIjogWzAuMTg5MDYsIDAuNDc1MzQsIDAsIDAsIDAuNTAzNDNdLFxuICAgIFwiNTgxMTdcIjogWzAsIDAuNjkxNDEsIDAsIDAsIDAuMzMzMDFdLFxuICAgIFwiNTgxMThcIjogWzAsIDAuNjIxMTksIDAsIDAsIDAuMzM0MDldLFxuICAgIFwiNTgxMTlcIjogWzAsIDAuNDc1MzQsIDAsIDAsIDAuNTAwNzNdXG4gIH0sXG4gIFwiTWFpbi1Cb2xkXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjM1XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYwMjc4XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC45NTgzM10sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiNDNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNDRcIjogWzAuMTk0NDQsIDAuMTU1NTYsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzgzMzNdLFxuICAgIFwiNDZcIjogWzAsIDAuMTU1NTYsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1MlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1NVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI1OVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI2MFwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI2MVwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjJcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQzMDVdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNjVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODE4MDVdLFxuICAgIFwiNjdcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiNjhcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODgxOTRdLFxuICAgIFwiNjlcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzU1NTVdLFxuICAgIFwiNzBcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzIzNjFdLFxuICAgIFwiNzFcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTA0MTZdLFxuICAgIFwiNzJcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC40MzYxMV0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC41OTQ0NF0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45MDEzOF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC42OTE2Nl0sXG4gICAgXCI3N1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMS4wOTE2Nl0sXG4gICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2Mzg4XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc4NjExXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLCAwLCAwLjg2Mzg4XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg2MjVdLFxuICAgIFwiODNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOF0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44ODQ3Ml0sXG4gICAgXCI4NlwiOiBbMCwgMC42ODYxMSwgMC4wMTU5NywgMCwgMC44Njk0NF0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4wMTU5NywgMCwgMS4xODg4OF0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44Njk0NF0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODYxMSwgMC4wMjg3NSwgMCwgMC44Njk0NF0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI5MlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjk1XCI6IFswLjMxLCAwLjEzNDQ0LCAwLjAzMTk0LCAwLCAwLjU3NV0sXG4gICAgXCI5N1wiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41NTkwMl0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI5OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiMTAxXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUyNzA4XSxcbiAgICBcIjEwMlwiOiBbMCwgMC42OTQ0NCwgMC4xMDkwMywgMCwgMC4zNTEzOV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuNTc1XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjM1MTM5XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDY5NF0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMTFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjA2OTRdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ3MzYxXSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NTM2MV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjM0OTIsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMTU5NywgMCwgMC42MDY5NF0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMDE1OTcsIDAsIDAuODMwNTVdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjYwNjk0XSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTU5NywgMCwgMC42MDY5NF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiMTIzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxMjRcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiMTI1XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzQ0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiMTcyXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44Njk0NF0sXG4gICAgXCIxNzdcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiMTg0XCI6IFswLjE3MDE0LCAwLCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjE5OFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMS4wNDE2Nl0sXG4gICAgXCIyMTVcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiMjE2XCI6IFswLjA0ODYxLCAwLjczNDcyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjIyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41OTcyMl0sXG4gICAgXCIyMzBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiMjQ3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjI0OFwiOiBbMC4wOTcyMiwgMC41NDE2NywgMCwgMCwgMC41NzVdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjMzOFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMS4xNjk0NF0sXG4gICAgXCIzMzlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjM1MTM5XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzExXCI6IFswLCAwLjYzMTk0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTk2MTEsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiNzE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjcyOVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODY5NDRdLFxuICAgIFwiNzMyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC42OTE2Nl0sXG4gICAgXCI5MTZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTU4MzNdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MDU1NV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjldLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODMwNTVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MzA1NV0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjU3NV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAxLjE0OTk5XSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzE5NDRdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NF0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYwMjc4XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjAyNzhdLFxuICAgIFwiODIyNFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4MjI1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjgyNDJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuMzQ0NDRdLFxuICAgIFwiODQwN1wiOiBbMCwgMC43MjQ0NCwgMC4xNTQ4NiwgMCwgMC41NzVdLFxuICAgIFwiODQ2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Njc1OV0sXG4gICAgXCI4NDY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjg0NjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDczNjFdLFxuICAgIFwiODQ3MlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43NDAyN10sXG4gICAgXCI4NDc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjgzMDU1XSxcbiAgICBcIjg1MDFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODU5MlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5M1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiODU5NFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5NVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC41NzVdLFxuICAgIFwiODU5NlwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODU5N1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODU5OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NTk5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2MDBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODYwMVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjM2XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjM3XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjQwXCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjQxXCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjU2XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4NjU3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc3XSxcbiAgICBcIjg2NThcIjogWy0wLjEwODg5LCAwLjM5MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg2NTlcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODY2MFwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODY2MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI4NzA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg3MDZcIjogWzAsIDAuNjk0NDQsIDAuMDYzODksIDAsIDAuNjI4NDddLFxuICAgIFwiODcwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4NzA5XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzExXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjg3MTJcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODcxNVwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4NzIyXCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3MjNcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODcyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcyNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODcyN1wiOiBbLTAuMDI3NzgsIDAuNDcyMjIsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3MjhcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4NzI5XCI6IFstMC4wMjYzOSwgMC40NzM2MSwgMCwgMCwgMC41NzVdLFxuICAgIFwiODczMFwiOiBbMC4xOCwgMC44MiwgMCwgMCwgMC45NTgzM10sXG4gICAgXCI4NzMzXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg3MzRcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODczNlwiOiBbMCwgMC42OTIyNCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4NzM5XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjg3NDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg3NDNcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODc0NFwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI4NzQ1XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg3NDZcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODc0N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMjc3OCwgMCwgMC41Njg3NV0sXG4gICAgXCI4NzY0XCI6IFstMC4xMDg4OSwgMC4zOTExMSwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjg3NzFcIjogWzAuMDAyMjIsIDAuNTAyMjIsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODc3NlwiOiBbMC4wMjQ0NCwgMC41MjQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4NzgxXCI6IFswLjAwMjIyLCAwLjUwMjIyLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MDFcIjogWzAuMDAyMjIsIDAuNTAyMjIsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgwNFwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODA1XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MTBcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiODgxMVwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMS4xNDk5OV0sXG4gICAgXCI4ODI2XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MjdcIjogWzAuMDg1NTYsIDAuNTg1NTYsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgzNFwiOiBbMC4wODU1NiwgMC41ODU1NiwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODM1XCI6IFswLjA4NTU2LCAwLjU4NTU2LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4MzhcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODgzOVwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODQ2XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg4NDlcIjogWzAuMTk2NjcsIDAuNjk2NjcsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1MFwiOiBbMC4xOTY2NywgMC42OTY2NywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODUxXCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjc2NjY2XSxcbiAgICBcIjg4NTJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNzY2NjZdLFxuICAgIFwiODg1M1wiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODU0XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NTVcIjogWzAuMTMzMzMsIDAuNjMzMzMsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODg1NlwiOiBbMC4xMzMzMywgMC42MzMzMywgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI4ODU3XCI6IFswLjEzMzMzLCAwLjYzMzMzLCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzAyNzddLFxuICAgIFwiODg2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MDI3N10sXG4gICAgXCI4ODY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjg4NjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiODkwMFwiOiBbLTAuMDI2MzksIDAuNDczNjEsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjg5MDFcIjogWy0wLjAyNjM5LCAwLjQ3MzYxLCAwLCAwLCAwLjMxOTQ0XSxcbiAgICBcIjg5MDJcIjogWy0wLjAyNzc4LCAwLjQ3MjIyLCAwLCAwLCAwLjU3NV0sXG4gICAgXCI4OTY4XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjg5NjlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiODk3MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI4OTcxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjUxMTExXSxcbiAgICBcIjg5OTRcIjogWy0wLjEzODg5LCAwLjM2MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjg5OTVcIjogWy0wLjEzODg5LCAwLjM2MTExLCAwLCAwLCAxLjE0OTk5XSxcbiAgICBcIjk2NTFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMDIyMjJdLFxuICAgIFwiOTY1N1wiOiBbLTAuMDI3NzgsIDAuNDcyMjIsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjk2NjFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMDIyMjJdLFxuICAgIFwiOTY2N1wiOiBbLTAuMDI3NzgsIDAuNDcyMjIsIDAsIDAsIDAuNTc1XSxcbiAgICBcIjk3MTFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMTQ5OTldLFxuICAgIFwiOTgyNFwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5ODI1XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjk4MjZcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuODk0NDRdLFxuICAgIFwiOTgyN1wiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC44OTQ0NF0sXG4gICAgXCI5ODM3XCI6IFswLCAwLjc1LCAwLCAwLCAwLjQ0NzIyXSxcbiAgICBcIjk4MzhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ3MjJdLFxuICAgIFwiOTgzOVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCIxMDIxNlwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCIxMDIxN1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDcyMl0sXG4gICAgXCIxMDgxNVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC45XSxcbiAgICBcIjEwOTI3XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjEwOTI4XCI6IFswLjE5NjY3LCAwLjY5NjY3LCAwLCAwLCAwLjg5NDQ0XSxcbiAgICBcIjU3Mzc2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwXVxuICB9LFxuICBcIk1haW4tQm9sZEl0YWxpY1wiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMC4xMTQxNywgMCwgMC4zODYxMV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMC4wNzkzOSwgMCwgMC42MjA1NV0sXG4gICAgXCIzNVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNjgzMywgMCwgMC45NDQ0NF0sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4xMjg2MSwgMCwgMC45NDQ0NF0sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wODUyOCwgMCwgMC44ODU1NV0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4xMjk0NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xNTgwNiwgMCwgMC40NzMzM10sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMzMwNiwgMCwgMC40NzMzM10sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xNDMzMywgMCwgMC41OTExMV0sXG4gICAgXCI0M1wiOiBbMC4xMDMzMywgMC42MDMzMywgMC4wMzMwNiwgMCwgMC44ODU1NV0sXG4gICAgXCI0NFwiOiBbMC4xOTQ0NCwgMC4xNDcyMiwgMCwgMCwgMC4zNTU1NV0sXG4gICAgXCI0NVwiOiBbMCwgMC40NDQ0NCwgMC4wMjYxMSwgMCwgMC40MTQ0NF0sXG4gICAgXCI0NlwiOiBbMCwgMC4xNDcyMiwgMCwgMCwgMC4zNTU1NV0sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xNTgwNiwgMCwgMC41OTExMV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1MlwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1NVwiOiBbMC4xOTQ0NCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NDQ0NCwgMC4xMzE2NywgMCwgMC41OTExMV0sXG4gICAgXCI1OFwiOiBbMCwgMC40NDQ0NCwgMC4wNjY5NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI1OVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wNjY5NSwgMCwgMC4zNTU1NV0sXG4gICAgXCI2MVwiOiBbLTAuMTA4ODksIDAuMzkxMTEsIDAuMDY4MzMsIDAsIDAuODg1NTVdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTE0NzIsIDAsIDAuNTkxMTFdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDgsIDAsIDAuODg1NTVdLFxuICAgIFwiNjVcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODY1NTVdLFxuICAgIFwiNjZcIjogWzAsIDAuNjg2MTEsIDAuMDk5MiwgMCwgMC44MTY2Nl0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODYxMSwgMC4xNDIwOCwgMCwgMC44MjY2Nl0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODYxMSwgMC4wOTA2MiwgMCwgMC44NzU1NV0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMC43NTY2Nl0sXG4gICAgXCI3MFwiOiBbMCwgMC42ODYxMSwgMC4xMjkwMywgMCwgMC43MjcyMl0sXG4gICAgXCI3MVwiOiBbMCwgMC42ODYxMSwgMC4wNzM0NywgMCwgMC44OTUyN10sXG4gICAgXCI3MlwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44OTYxXSxcbiAgICBcIjczXCI6IFswLCAwLjY4NjExLCAwLjE1NjgxLCAwLCAwLjQ3MTY2XSxcbiAgICBcIjc0XCI6IFswLCAwLjY4NjExLCAwLjE0NSwgMCwgMC42MTA1NV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODYxMSwgMC4xNDIwOCwgMCwgMC44OTQ5OV0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC42OTc3N10sXG4gICAgXCI3N1wiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMS4wNzI3N10sXG4gICAgXCI3OFwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44OTYxXSxcbiAgICBcIjc5XCI6IFswLCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg1NDk5XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4NjExLCAwLjA5OTIsIDAsIDAuNzg3MjFdLFxuICAgIFwiODFcIjogWzAuMTk0NDQsIDAuNjg2MTEsIDAuMDkwNjIsIDAsIDAuODU0OTldLFxuICAgIFwiODJcIjogWzAsIDAuNjg2MTEsIDAuMDI1NTksIDAsIDAuODU5NDRdLFxuICAgIFwiODNcIjogWzAsIDAuNjg2MTEsIDAuMTEyNjQsIDAsIDAuNjQ5OTldLFxuICAgIFwiODRcIjogWzAsIDAuNjg2MTEsIDAuMTI5MDMsIDAsIDAuNzk2MV0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODYxMSwgMC4xNzIwOCwgMCwgMC44ODA4M10sXG4gICAgXCI4NlwiOiBbMCwgMC42ODYxMSwgMC4xODYyNSwgMCwgMC44NjU1NV0sXG4gICAgXCI4N1wiOiBbMCwgMC42ODYxMSwgMC4xODYyNSwgMCwgMS4xNTk5OV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODYxMSwgMC4xNTY4MSwgMCwgMC44NjU1NV0sXG4gICAgXCI4OVwiOiBbMCwgMC42ODYxMSwgMC4xOTgwMywgMCwgMC44NjU1NV0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODYxMSwgMC4xNDIwOCwgMCwgMC43MDg4OF0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMC4xODc1LCAwLCAwLjM1NjExXSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjA5OTcyLCAwLCAwLjM1NjExXSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA2NzA5LCAwLCAwLjU5MTExXSxcbiAgICBcIjk1XCI6IFswLjMxLCAwLjEzNDQ0LCAwLjA5ODExLCAwLCAwLjU5MTExXSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjU5MTExXSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjA3ODYxLCAwLCAwLjUzMjIyXSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLjA1MjIyLCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4xMDg2MSwgMCwgMC41OTExMV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAuMDg1LCAwLCAwLjUzMjIyXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4yMTc3OCwgMCwgMC40XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDUsIDAsIDAuNTMyMjJdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLjA5NDI2LCAwLCAwLjU5MTExXSxcbiAgICBcIjEwNVwiOiBbMCwgMC42OTMyNiwgMC4xMTM4NywgMCwgMC4zNTU1NV0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjkzMjYsIDAuMTY3MiwgMCwgMC4zNTU1NV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMTExMTEsIDAsIDAuNTMyMjJdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjEwODYxLCAwLCAwLjI5NjY2XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NDQ0NCwgMC4wOTQyNiwgMCwgMC45NDQ0NF0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuNjQ5OTldLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLjA3ODYxLCAwLCAwLjU5MTExXSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wNzg2MSwgMCwgMC41OTExMV0sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMTA1LCAwLCAwLjUzMjIyXSxcbiAgICBcIjExNFwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC41MDE2N10sXG4gICAgXCIxMTVcIjogWzAsIDAuNDQ0NDQsIDAuMDgxNjcsIDAsIDAuNDg2OTRdLFxuICAgIFwiMTE2XCI6IFswLCAwLjYzNDkyLCAwLjA5NjM5LCAwLCAwLjM4NV0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAuMDk0MjYsIDAsIDAuNjIwNTVdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQ0NDQ0LCAwLjExMTExLCAwLCAwLjUzMjIyXSxcbiAgICBcIjExOVwiOiBbMCwgMC40NDQ0NCwgMC4xMTExMSwgMCwgMC43Njc3N10sXG4gICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAuMTI1ODMsIDAsIDAuNTYwNTVdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwNSwgMCwgMC41NjE2Nl0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAuMTM4ODksIDAsIDAuNDkwNTVdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjE2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44Njg1M10sXG4gICAgXCIxNjhcIjogWzAsIDAuNjk0NDQsIDAuMTE0NzMsIDAsIDAuNTkxMTFdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjk0ODg4XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC41MzIyMl0sXG4gICAgXCIxOThcIjogWzAsIDAuNjg2MTEsIDAuMTE0MzEsIDAsIDEuMDIyNzddLFxuICAgIFwiMjE2XCI6IFswLjA0ODYxLCAwLjczNDcyLCAwLjA5MDYyLCAwLCAwLjg4NTU1XSxcbiAgICBcIjIyM1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wOTczNiwgMCwgMC42NjVdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQ0NDQ0LCAwLjA4NSwgMCwgMC44MjY2Nl0sXG4gICAgXCIyNDhcIjogWzAuMDk3MjIsIDAuNTQxNjcsIDAuMDk0NTgsIDAsIDAuNTkxMTFdLFxuICAgIFwiMzA1XCI6IFswLCAwLjQ0NDQ0LCAwLjA5NDI2LCAwLCAwLjM1NTU1XSxcbiAgICBcIjMzOFwiOiBbMCwgMC42ODYxMSwgMC4xMTQzMSwgMCwgMS4xNDA1NF0sXG4gICAgXCIzMzlcIjogWzAsIDAuNDQ0NDQsIDAuMDg1LCAwLCAwLjgyNjY2XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wNDYxMSwgMCwgMC4zODVdLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLjA2NzA5LCAwLCAwLjU5MTExXSxcbiAgICBcIjcxMVwiOiBbMCwgMC42MzE5NCwgMC4wODI3MSwgMCwgMC41OTExMV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTk0NDQsIDAuMTA0NDQsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA4NTI4LCAwLCAwLjU5MTExXSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41OTExMV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAuMTAzMzMsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45NDg4OF0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjk0NDQsIDAuMTE0NzIsIDAsIDAuNTkxMTFdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLjExNDcyLCAwLCAwLjU5MTExXSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODYxMSwgMC4xMjkwMywgMCwgMC42OTc3N10sXG4gICAgXCI5MTZcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuOTQ0NDRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY4NjExLCAwLjA5MDYyLCAwLCAwLjg4NTU1XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44MDY2Nl0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjg2MTEsIDAuMTUwOTIsIDAsIDAuNzY3NzddLFxuICAgIFwiOTI4XCI6IFswLCAwLjY4NjExLCAwLjE3MjA4LCAwLCAwLjg5NjFdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4NjExLCAwLjExNDMxLCAwLCAwLjgyNjY2XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODYxMSwgMC4xMDc3OCwgMCwgMC44ODU1NV0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjg2MTEsIDAuMDU2MzIsIDAsIDAuODI2NjZdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4NjExLCAwLjEwNzc4LCAwLCAwLjg4NTU1XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODYxMSwgMC4wOTkyLCAwLCAwLjgyNjY2XSxcbiAgICBcIjgyMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDk4MTEsIDAsIDAuNTkxMTFdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40NDQ0NCwgMC4wOTgxMSwgMCwgMS4xODIyMV0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLjEyOTQ1LCAwLCAwLjM1NTU1XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAuMTI5NDUsIDAsIDAuMzU1NTVdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMC4xNjc3MiwgMCwgMC42MjA1NV0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLjA3OTM5LCAwLCAwLjYyMDU1XVxuICB9LFxuICBcIk1haW4tSXRhbGljXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLjEyNDE3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLjA2OTYxLCAwLCAwLjUxNDQ0XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA2NjE2LCAwLCAwLjgxNzc3XSxcbiAgICBcIjM3XCI6IFswLjA1NTU2LCAwLjc1LCAwLjEzNjM5LCAwLCAwLjgxNzc3XSxcbiAgICBcIjM4XCI6IFswLCAwLjY5NDQ0LCAwLjA5Njk0LCAwLCAwLjc2NjY2XSxcbiAgICBcIjM5XCI6IFswLCAwLjY5NDQ0LCAwLjEyNDE3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjQwXCI6IFswLjI1LCAwLjc1LCAwLjE2MTk0LCAwLCAwLjQwODg5XSxcbiAgICBcIjQxXCI6IFswLjI1LCAwLjc1LCAwLjAzNjk0LCAwLCAwLjQwODg5XSxcbiAgICBcIjQyXCI6IFswLCAwLjc1LCAwLjE0OTE3LCAwLCAwLjUxMTExXSxcbiAgICBcIjQzXCI6IFswLjA1NjY3LCAwLjU2MTY3LCAwLjAzNjk0LCAwLCAwLjc2NjY2XSxcbiAgICBcIjQ0XCI6IFswLjE5NDQ0LCAwLjEwNTU2LCAwLCAwLCAwLjMwNjY3XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQzMDU2LCAwLjAyODI2LCAwLCAwLjM1Nzc4XSxcbiAgICBcIjQ2XCI6IFswLCAwLjEwNTU2LCAwLCAwLCAwLjMwNjY3XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLjE2MTk0LCAwLCAwLjUxMTExXSxcbiAgICBcIjQ4XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjQ5XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjUwXCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjUxXCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjUyXCI6IFswLjE5NDQ0LCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjUzXCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjU0XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjU1XCI6IFswLjE5NDQ0LCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjU3XCI6IFswLCAwLjY0NDQ0LCAwLjEzNTU2LCAwLCAwLjUxMTExXSxcbiAgICBcIjU4XCI6IFswLCAwLjQzMDU2LCAwLjA1ODIsIDAsIDAuMzA2NjddLFxuICAgIFwiNTlcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDU4MiwgMCwgMC4zMDY2N10sXG4gICAgXCI2MVwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAuMDY2MTYsIDAsIDAuNzY2NjZdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAuMTIyNSwgMCwgMC41MTExMV0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMC4wOTU5NywgMCwgMC43NjY2Nl0sXG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NDMzM10sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMC4xMDI1NywgMCwgMC43MDM4OV0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMC4xNDUyOCwgMCwgMC43MTU1NV0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMC4wOTQwMywgMCwgMC43NTVdLFxuICAgIFwiNjlcIjogWzAsIDAuNjgzMzMsIDAuMTIwMjgsIDAsIDAuNjc4MzNdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAuMTMzMDUsIDAsIDAuNjUyNzddLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAuMDg3MjIsIDAsIDAuNzczNjFdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAuMTYzODksIDAsIDAuNzQzMzNdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMTU4MDYsIDAsIDAuMzg1NTVdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAuMTQwMjgsIDAsIDAuNTI1XSxcbiAgICBcIjc1XCI6IFswLCAwLjY4MzMzLCAwLjE0NTI4LCAwLCAwLjc2ODg4XSxcbiAgICBcIjc2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjYyNzIyXSxcbiAgICBcIjc3XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjg5NjY2XSxcbiAgICBcIjc4XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjc5XCI6IFswLCAwLjY4MzMzLCAwLjA5NDAzLCAwLCAwLjc2NjY2XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4MzMzLCAwLjEwMjU3LCAwLCAwLjY3ODMzXSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4MzMzLCAwLjA5NDAzLCAwLCAwLjc2NjY2XSxcbiAgICBcIjgyXCI6IFswLCAwLjY4MzMzLCAwLjAzODY4LCAwLCAwLjcyOTQ0XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4MzMzLCAwLjExOTcyLCAwLCAwLjU2MjIyXSxcbiAgICBcIjg0XCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjcxNTU1XSxcbiAgICBcIjg1XCI6IFswLCAwLjY4MzMzLCAwLjE2Mzg5LCAwLCAwLjc0MzMzXSxcbiAgICBcIjg2XCI6IFswLCAwLjY4MzMzLCAwLjE4MzYxLCAwLCAwLjc0MzMzXSxcbiAgICBcIjg3XCI6IFswLCAwLjY4MzMzLCAwLjE4MzYxLCAwLCAwLjk5ODg4XSxcbiAgICBcIjg4XCI6IFswLCAwLjY4MzMzLCAwLjE1ODA2LCAwLCAwLjc0MzMzXSxcbiAgICBcIjg5XCI6IFswLCAwLjY4MzMzLCAwLjE5MzgzLCAwLCAwLjc0MzMzXSxcbiAgICBcIjkwXCI6IFswLCAwLjY4MzMzLCAwLjE0NTI4LCAwLCAwLjYxMzMzXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLjE4NzUsIDAsIDAuMzA2NjddLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAuMTA1MjgsIDAsIDAuMzA2NjddLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAuMDY2NDYsIDAsIDAuNTExMTFdLFxuICAgIFwiOTVcIjogWzAuMzEsIDAuMTIwNTYsIDAuMDkyMDgsIDAsIDAuNTExMTFdLFxuICAgIFwiOTdcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuNTExMTFdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAuMDYzMTIsIDAsIDAuNDZdLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAuMDU2NTMsIDAsIDAuNDZdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLjEwMzMzLCAwLCAwLjUxMTExXSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC40Nl0sXG4gICAgXCIxMDJcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMjExOTQsIDAsIDAuMzA2NjddLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ2XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMC4wNzY3MSwgMCwgMC41MTExMV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjU1MzYsIDAuMTAxOSwgMCwgMC4zMDY2N10sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjU1MzYsIDAuMTQ0NjcsIDAsIDAuMzA2NjddLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjEwNzY0LCAwLCAwLjQ2XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMC4xMDMzMywgMCwgMC4yNTU1NV0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAuMDc2NzEsIDAsIDAuODE3NzddLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLjA3NjcxLCAwLCAwLjU2MjIyXSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMC4wNjMxMiwgMCwgMC41MTExMV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDYzMTIsIDAsIDAuNTExMTFdLFxuICAgIFwiMTEzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjA4ODQ3LCAwLCAwLjQ2XSxcbiAgICBcIjExNFwiOiBbMCwgMC40MzA1NiwgMC4xMDc2NCwgMCwgMC40MjE2Nl0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAuMDgyMDgsIDAsIDAuNDA4ODldLFxuICAgIFwiMTE2XCI6IFswLCAwLjYxNTA4LCAwLjA5NDg2LCAwLCAwLjMzMjIyXSxcbiAgICBcIjExN1wiOiBbMCwgMC40MzA1NiwgMC4wNzY3MSwgMCwgMC41MzY2Nl0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAuMTA3NjQsIDAsIDAuNDZdLFxuICAgIFwiMTE5XCI6IFswLCAwLjQzMDU2LCAwLjEwNzY0LCAwLCAwLjY2NDQ0XSxcbiAgICBcIjEyMFwiOiBbMCwgMC40MzA1NiwgMC4xMjA0MiwgMCwgMC40NjM4OV0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDg4NDcsIDAsIDAuNDg1NTVdLFxuICAgIFwiMTIyXCI6IFswLCAwLjQzMDU2LCAwLjEyMjkyLCAwLCAwLjQwODg5XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMTc4NiwgMC4xMTU4NSwgMCwgMC41MTExMV0sXG4gICAgXCIxNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzY5MDldLFxuICAgIFwiMTY4XCI6IFswLCAwLjY2Nzg2LCAwLjEwNDc0LCAwLCAwLjUxMTExXSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzEyOV0sXG4gICAgXCIxODRcIjogWzAuMTcwMTQsIDAsIDAsIDAsIDAuNDZdLFxuICAgIFwiMTk4XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjg4Mjc3XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzE5NCwgMC4wOTQwMywgMCwgMC43NjY2Nl0sXG4gICAgXCIyMjNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMTA1MTQsIDAsIDAuNTM2NjZdLFxuICAgIFwiMjMwXCI6IFswLCAwLjQzMDU2LCAwLjA3NTE0LCAwLCAwLjcxNTU1XSxcbiAgICBcIjI0OFwiOiBbMC4wOTcyMiwgMC41Mjc3OCwgMC4wOTE5NCwgMCwgMC41MTExMV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDI3NzgsIDAuMzIyNDZdLFxuICAgIFwiMzM4XCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjk4NDk5XSxcbiAgICBcIjMzOVwiOiBbMCwgMC40MzA1NiwgMC4wNzUxNCwgMCwgMC43MTU1NV0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuMzg0MDNdLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLjA2NjQ2LCAwLCAwLjUxMTExXSxcbiAgICBcIjcxMVwiOiBbMCwgMC42Mjg0NywgMC4wODI5NSwgMCwgMC41MTExMV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTYxNjcsIDAuMTAzMzMsIDAsIDAuNTExMTFdLFxuICAgIFwiNzE0XCI6IFswLCAwLjY5NDQ0LCAwLjA5Njk0LCAwLCAwLjUxMTExXSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41MTExMV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAuMTA4MDYsIDAsIDAuNTExMTFdLFxuICAgIFwiNzI5XCI6IFswLCAwLjY2Nzg2LCAwLjExNzUyLCAwLCAwLjMwNjY3XSxcbiAgICBcIjczMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzEyOV0sXG4gICAgXCI3MzJcIjogWzAsIDAuNjY3ODYsIDAuMTE1ODUsIDAsIDAuNTExMTFdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLjEyMjUsIDAsIDAuNTExMTFdLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4MzMzLCAwLjEzMzA1LCAwLCAwLjYyNzIyXSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MTc3N10sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAuMDk0MDMsIDAsIDAuNzY2NjZdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY5MjIyXSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMC4xNTI5NCwgMCwgMC42NjQ0NF0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAuMTYzODksIDAsIDAuNzQzMzNdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLjEyMDI4LCAwLCAwLjcxNTU1XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMC4xMTExMSwgMCwgMC43NjY2Nl0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAuMDU5ODYsIDAsIDAuNzE1NTVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLjExMTExLCAwLCAwLjc2NjY2XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMC4xMDI1NywgMCwgMC43MTU1NV0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQzMDU2LCAwLjA5MjA4LCAwLCAwLjUxMTExXSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDMwNTYsIDAuMDkyMDgsIDAsIDEuMDIyMjJdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMC4xMjQxNywgMCwgMC4zMDY2N10sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLjEyNDE3LCAwLCAwLjMwNjY3XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAuMTY4NSwgMCwgMC41MTQ0NF0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLjA2OTYxLCAwLCAwLjUxNDQ0XSxcbiAgICBcIjg0NjNcIjogWzAsIDAuNjg4ODksIDAsIDAsIDAuNTQwMjhdXG4gIH0sXG4gIFwiTWFpbi1SZWd1bGFyXCI6IHtcbiAgICBcIjMyXCI6IFswLCAwLCAwLCAwLCAwLjI1XSxcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMzZcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjQzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjQ0XCI6IFswLjE5NDQ0LCAwLjEwNTU2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ1XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjMzMzMzXSxcbiAgICBcIjQ2XCI6IFswLCAwLjEwNTU2LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjQ3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiNDhcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI0OVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjUwXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTFcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1MlwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjUzXCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1NVwiOiBbMCwgMC42NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjU2XCI6IFswLCAwLjY0NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiNTdcIjogWzAsIDAuNjQ0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI1OVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI2MFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjYyXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI2NVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MDgzNF0sXG4gICAgXCI2N1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI2OFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NjM4OV0sXG4gICAgXCI2OVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42ODA1Nl0sXG4gICAgXCI3MFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42NTI3OF0sXG4gICAgXCI3MVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43ODQ3Ml0sXG4gICAgXCI3MlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCI3M1wiOiBbMCwgMC42ODMzMywgMCwgMCwgMC4zNjExMV0sXG4gICAgXCI3NFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC41MTM4OV0sXG4gICAgXCI3NVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI3NlwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjVdLFxuICAgIFwiNzdcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuOTE2NjddLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjgwNTZdLFxuICAgIFwiODFcIjogWzAuMTk0NDQsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiODNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiODRcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODVcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiODZcIjogWzAsIDAuNjgzMzMsIDAuMDEzODksIDAsIDAuNzVdLFxuICAgIFwiODdcIjogWzAsIDAuNjgzMzMsIDAuMDEzODksIDAsIDEuMDI3NzhdLFxuICAgIFwiODhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzVdLFxuICAgIFwiODlcIjogWzAsIDAuNjgzMzMsIDAuMDI1LCAwLCAwLjc1XSxcbiAgICBcIjkwXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjkyXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI5NVwiOiBbMC4zMSwgMC4xMjA1NiwgMC4wMjc3OCwgMCwgMC41XSxcbiAgICBcIjk3XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjVdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiOTlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMDc3NzgsIDAsIDAuMzA1NTZdLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLjAxMzg5LCAwLCAwLjVdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42Njc4NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjY3ODYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjExMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41XSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjM5MTY3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4zOTQ0NV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjE1MDgsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjExOFwiOiBbMCwgMC40MzA1NiwgMC4wMTM4OSwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAuMDEzODksIDAsIDAuNzIyMjJdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMTM4OSwgMCwgMC41Mjc3OF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTIzXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiMTI0XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjEyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjEyNlwiOiBbMC4zNSwgMC4zMTc4NiwgMCwgMCwgMC41XSxcbiAgICBcIjE2MFwiOiBbMCwgMCwgMCwgMCwgMC4yNV0sXG4gICAgXCIxNjdcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY2Nzg2LCAwLCAwLCAwLjVdLFxuICAgIFwiMTcyXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjE3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43NV0sXG4gICAgXCIxNzdcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiMTgyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIxOThcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuOTAyNzhdLFxuICAgIFwiMjE1XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjIxNlwiOiBbMC4wNDg2MSwgMC43MzE5NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCIyMjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCIyMzBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiMjQ3XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjI0OFwiOiBbMC4wOTcyMiwgMC41Mjc3OCwgMCwgMCwgMC41XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCIzMzhcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDEuMDEzODldLFxuICAgIFwiMzM5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU2N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgXCI3MTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjI4NDcsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNTY3NzgsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjY3ODYsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc1XSxcbiAgICBcIjczMlwiOiBbMCwgMC42Njc4NiwgMCwgMCwgMC41XSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC42MjVdLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNjk0NDVdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43NV0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTMzXCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzNFwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM3XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjgyMTFcIjogWzAsIDAuNDMwNTYsIDAuMDI3NzgsIDAsIDAuNV0sXG4gICAgXCI4MjEyXCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLCAxLjBdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI4MjIxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODIyNFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4MjI1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjgyMzBcIjogWzAsIDAuMTIsIDAsIDAsIDEuMTcyXSxcbiAgICBcIjgyNDJcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuMjc1XSxcbiAgICBcIjg0MDdcIjogWzAsIDAuNzE0NDQsIDAuMTUzODIsIDAsIDAuNV0sXG4gICAgXCI4NDYzXCI6IFswLCAwLjY4ODg5LCAwLCAwLCAwLjU0MDI4XSxcbiAgICBcIjg0NjVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODQ2N1wiOiBbMCwgMC42OTQ0NCwgMCwgMC4xMTExMSwgMC40MTY2N10sXG4gICAgXCI4NDcyXCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjExMTExLCAwLjYzNjQ2XSxcbiAgICBcIjg0NzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiODUwMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NTkyXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTNcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk0XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk2XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg1OTdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NTk4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiODU5OVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMS4wXSxcbiAgICBcIjg2MDBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjAxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAxLjBdLFxuICAgIFwiODYxNFwiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjBdLFxuICAgIFwiODYxN1wiOiBbMC4wMTEsIDAuNTExLCAwLCAwLCAxLjEyNl0sXG4gICAgXCI4NjE4XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEuMTI2XSxcbiAgICBcIjg2MzZcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODYzN1wiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjQwXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NDFcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1MlwiOiBbMC4wMTEsIDAuNjcxLCAwLCAwLCAxLjBdLFxuICAgIFwiODY1NlwiOiBbLTAuMTMzMTMsIDAuMzY2ODcsIDAsIDAsIDEuMF0sXG4gICAgXCI4NjU3XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg2NThcIjogWy0wLjEzMzEzLCAwLjM2Njg3LCAwLCAwLCAxLjBdLFxuICAgIFwiODY1OVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4NjYwXCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMS4wXSxcbiAgICBcIjg2NjFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNjExMTFdLFxuICAgIFwiODcwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzA2XCI6IFswLCAwLjY5NDQ0LCAwLjA1NTU2LCAwLjA4MzM0LCAwLjUzMDldLFxuICAgIFwiODcwN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzA5XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiODcxMVwiOiBbMCwgMC42ODMzMywgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4NzEyXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzE1XCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzIyXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MjNcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODcyNVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjZcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzI3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjg3MjhcIjogWy0wLjA1NTU1LCAwLjQ0NDQ1LCAwLCAwLCAwLjVdLFxuICAgIFwiODcyOVwiOiBbLTAuMDU1NTUsIDAuNDQ0NDUsIDAsIDAsIDAuNV0sXG4gICAgXCI4NzMwXCI6IFswLjIsIDAuOCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4NzMzXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3MzRcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDEuMF0sXG4gICAgXCI4NzM2XCI6IFswLCAwLjY5MjI0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjg3MzlcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODc0MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC41XSxcbiAgICBcIjg3NDNcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc0NFwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NzQ1XCI6IFswLCAwLjU1NTU2LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3NDZcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODc0N1wiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMTExMSwgMCwgMC40MTY2N10sXG4gICAgXCI4NzY0XCI6IFstMC4xMzMxMywgMC4zNjY4NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzY4XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjg3NzFcIjogWy0wLjAzNjI1LCAwLjQ2Mzc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg3NzNcIjogWy0wLjAyMiwgMC41ODksIDAsIDAsIDEuMF0sXG4gICAgXCI4Nzc2XCI6IFstMC4wMTY4OCwgMC40ODMxMiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzgxXCI6IFstMC4wMzYyNSwgMC40NjM3NSwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4Nzg0XCI6IFstMC4xMzMsIDAuNjcsIDAsIDAsIDAuNzc4XSxcbiAgICBcIjg4MDFcIjogWy0wLjAzNjI1LCAwLjQ2Mzc1LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4MDRcIjogWzAuMTM1OTcsIDAuNjM1OTcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgwNVwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODEwXCI6IFswLjAzOTEsIDAuNTM5MSwgMCwgMCwgMS4wXSxcbiAgICBcIjg4MTFcIjogWzAuMDM5MSwgMC41MzkxLCAwLCAwLCAxLjBdLFxuICAgIFwiODgyNlwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgyN1wiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzNFwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzNVwiOiBbMC4wMzkxLCAwLjUzOTEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODgzOFwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODM5XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NDZcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODg0OVwiOiBbMC4xMzU5NywgMC42MzU5NywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODUwXCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTFcIjogWzAsIDAuNTU1NTYsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiODg1MlwiOiBbMCwgMC41NTU1NiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4ODUzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTRcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg1NVwiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODU2XCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjg4NTdcIjogWzAuMDgzMzMsIDAuNTgzMzMsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI4ODY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg4NjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODg2OVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4ODcyXCI6IFswLjI0OSwgMC43NSwgMCwgMCwgMC44NjddLFxuICAgIFwiODkwMFwiOiBbLTAuMDU1NTUsIDAuNDQ0NDUsIDAsIDAsIDAuNV0sXG4gICAgXCI4OTAxXCI6IFstMC4wNTU1NSwgMC40NDQ0NSwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4OTAyXCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjg5MDRcIjogWzAuMDA1LCAwLjUwNSwgMCwgMCwgMC45XSxcbiAgICBcIjg5NDJcIjogWzAuMDMsIDAuOSwgMCwgMCwgMC4yNzhdLFxuICAgIFwiODk0M1wiOiBbLTAuMTksIDAuMzEsIDAsIDAsIDEuMTcyXSxcbiAgICBcIjg5NDVcIjogWy0wLjEsIDAuODIsIDAsIDAsIDEuMjgyXSxcbiAgICBcIjg5NjhcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODk2OVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCI4OTcwXCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjg5NzFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiODk5NFwiOiBbLTAuMTQyMzYsIDAuMzU3NjQsIDAsIDAsIDEuMF0sXG4gICAgXCI4OTk1XCI6IFstMC4xNDIzNiwgMC4zNTc2NCwgMCwgMCwgMS4wXSxcbiAgICBcIjkxMzZcIjogWzAuMjQ0LCAwLjc0NCwgMCwgMCwgMC40MTJdLFxuICAgIFwiOTEzN1wiOiBbMC4yNDQsIDAuNzQ0LCAwLCAwLCAwLjQxMl0sXG4gICAgXCI5NjUxXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjk2NTdcIjogWy0wLjAzNDcyLCAwLjQ2NTI4LCAwLCAwLCAwLjVdLFxuICAgIFwiOTY2MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5NjY3XCI6IFstMC4wMzQ3MiwgMC40NjUyOCwgMCwgMCwgMC41XSxcbiAgICBcIjk3MTFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDEuMF0sXG4gICAgXCI5ODI0XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk4MjVcIjogWzAuMTI5NjMsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTgyNlwiOiBbMC4xMjk2MywgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5ODI3XCI6IFswLjEyOTYzLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjk4MzdcIjogWzAsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiOTgzOFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4zODg4OV0sXG4gICAgXCI5ODM5XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjEwMjE2XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjEwMjE3XCI6IFswLjI1LCAwLjc1LCAwLCAwLCAwLjM4ODg5XSxcbiAgICBcIjEwMjIyXCI6IFswLjI0NCwgMC43NDQsIDAsIDAsIDAuNDEyXSxcbiAgICBcIjEwMjIzXCI6IFswLjI0NCwgMC43NDQsIDAsIDAsIDAuNDEyXSxcbiAgICBcIjEwMjI5XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEuNjA5XSxcbiAgICBcIjEwMjMwXCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEuNjM4XSxcbiAgICBcIjEwMjMxXCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEuODU5XSxcbiAgICBcIjEwMjMyXCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDEuNjA5XSxcbiAgICBcIjEwMjMzXCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDEuNjM4XSxcbiAgICBcIjEwMjM0XCI6IFswLjAyNCwgMC41MjUsIDAsIDAsIDEuODU4XSxcbiAgICBcIjEwMjM2XCI6IFswLjAxMSwgMC41MTEsIDAsIDAsIDEuNjM4XSxcbiAgICBcIjEwODE1XCI6IFswLCAwLjY4MzMzLCAwLCAwLCAwLjc1XSxcbiAgICBcIjEwOTI3XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjEwOTI4XCI6IFswLjEzNTk3LCAwLjYzNTk3LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjU3Mzc2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwXVxuICB9LFxuICBcIk1hdGgtQm9sZEl0YWxpY1wiOiB7XG4gICAgXCI2NVwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC44Njk0NF0sXG4gICAgXCI2NlwiOiBbMCwgMC42ODYxMSwgMC4wNDgzNSwgMCwgMC44NjY0XSxcbiAgICBcIjY3XCI6IFswLCAwLjY4NjExLCAwLjA2OTc5LCAwLCAwLjgxNjk0XSxcbiAgICBcIjY4XCI6IFswLCAwLjY4NjExLCAwLjAzMTk0LCAwLCAwLjkzODEyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4NjExLCAwLjA1NDUxLCAwLCAwLjgxMDA3XSxcbiAgICBcIjcwXCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjY4ODg5XSxcbiAgICBcIjcxXCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjg4NjczXSxcbiAgICBcIjcyXCI6IFswLCAwLjY4NjExLCAwLjA4MjI5LCAwLCAwLjk4MjI5XSxcbiAgICBcIjczXCI6IFswLCAwLjY4NjExLCAwLjA3Nzc4LCAwLCAwLjUxMTExXSxcbiAgICBcIjc0XCI6IFswLCAwLjY4NjExLCAwLjEwMDY5LCAwLCAwLjYzMTI1XSxcbiAgICBcIjc1XCI6IFswLCAwLjY4NjExLCAwLjA2OTc5LCAwLCAwLjk3MTE4XSxcbiAgICBcIjc2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjc1NTU1XSxcbiAgICBcIjc3XCI6IFswLCAwLjY4NjExLCAwLjExNDI0LCAwLCAxLjE0MjAxXSxcbiAgICBcIjc4XCI6IFswLCAwLjY4NjExLCAwLjExNDI0LCAwLCAwLjk1MDM0XSxcbiAgICBcIjc5XCI6IFswLCAwLjY4NjExLCAwLjAzMTk0LCAwLCAwLjgzNjY2XSxcbiAgICBcIjgwXCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjcyMzA5XSxcbiAgICBcIjgxXCI6IFswLjE5NDQ0LCAwLjY4NjExLCAwLCAwLCAwLjg2ODYxXSxcbiAgICBcIjgyXCI6IFswLCAwLjY4NjExLCAwLjAwNDIxLCAwLCAwLjg3MjM1XSxcbiAgICBcIjgzXCI6IFswLCAwLjY4NjExLCAwLjA1MzgyLCAwLCAwLjY5MjcxXSxcbiAgICBcIjg0XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjYzNjYzXSxcbiAgICBcIjg1XCI6IFswLCAwLjY4NjExLCAwLjExNDI0LCAwLCAwLjgwMDI3XSxcbiAgICBcIjg2XCI6IFswLCAwLjY4NjExLCAwLjI1NTU1LCAwLCAwLjY3Nzc4XSxcbiAgICBcIjg3XCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAxLjA5MzA1XSxcbiAgICBcIjg4XCI6IFswLCAwLjY4NjExLCAwLjA3Nzc4LCAwLCAwLjk0NzIyXSxcbiAgICBcIjg5XCI6IFswLCAwLjY4NjExLCAwLjI1NTU1LCAwLCAwLjY3NDU4XSxcbiAgICBcIjkwXCI6IFswLCAwLjY4NjExLCAwLjA2OTc5LCAwLCAwLjc3MjU3XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjYzMjg3XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUyMDgzXSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxMzQyXSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MDk3Ml0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNTUzNjFdLFxuICAgIFwiMTAyXCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjExMDQyLCAwLCAwLjU2ODA2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC41NDQ5XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42Njc1OV0sXG4gICAgXCIxMDVcIjogWzAsIDAuNjkzMjYsIDAsIDAsIDAuNDA0OF0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjkzMjYsIDAuMDYyMiwgMCwgMC40NzA4M10sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAuMDE4NTIsIDAsIDAuNjAzN10sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMDA4OCwgMCwgMC4zNDgxNV0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDEuMDMyNF0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNzEyOTZdLFxuICAgIFwiMTExXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU4NDcyXSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC42MDA5Ml0sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNTQyMTNdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLjAzMTk0LCAwLCAwLjUyODddLFxuICAgIFwiMTE1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUzMTI1XSxcbiAgICBcIjExNlwiOiBbMCwgMC42MzQ5MiwgMCwgMCwgMC40MTUyOF0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjgxMDJdLFxuICAgIFwiMTE4XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjU2NjY2XSxcbiAgICBcIjExOVwiOiBbMCwgMC40NDQ0NCwgMC4wMjc3OCwgMCwgMC44MzE0OF0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNjU5MDNdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjU5MDI4XSxcbiAgICBcIjEyMlwiOiBbMCwgMC40NDQ0NCwgMC4wNDIxMywgMCwgMC41NTUwOV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjg2MTEsIDAuMTU5NzIsIDAsIDAuNjU2OTRdLFxuICAgIFwiOTE2XCI6IFswLCAwLjY4NjExLCAwLCAwLCAwLjk1ODMzXSxcbiAgICBcIjkyMFwiOiBbMCwgMC42ODYxMSwgMC4wMzE5NCwgMCwgMC44NjcyMl0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjg2MTEsIDAsIDAsIDAuODA1NTVdLFxuICAgIFwiOTI2XCI6IFswLCAwLjY4NjExLCAwLjA3NDU4LCAwLCAwLjg0MTI1XSxcbiAgICBcIjkyOFwiOiBbMCwgMC42ODYxMSwgMC4wODIyOSwgMCwgMC45ODIyOV0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjg2MTEsIDAuMDU0NTEsIDAsIDAuODg1MDddLFxuICAgIFwiOTMzXCI6IFswLCAwLjY4NjExLCAwLjE1OTcyLCAwLCAwLjY3MDgzXSxcbiAgICBcIjkzNFwiOiBbMCwgMC42ODYxMSwgMCwgMCwgMC43NjY2Nl0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjg2MTEsIDAuMTE2NTMsIDAsIDAuNzE0MDJdLFxuICAgIFwiOTM3XCI6IFswLCAwLjY4NjExLCAwLjA0ODM1LCAwLCAwLjg3ODldLFxuICAgIFwiOTQ1XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjc2MDY0XSxcbiAgICBcIjk0NlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wMzQwMywgMCwgMC42NTk3Ml0sXG4gICAgXCI5NDdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDYzODksIDAsIDAuNTkwMDNdLFxuICAgIFwiOTQ4XCI6IFswLCAwLjY5NDQ0LCAwLjAzODE5LCAwLCAwLjUyMjIyXSxcbiAgICBcIjk0OVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41Mjg4Ml0sXG4gICAgXCI5NTBcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDYyMTUsIDAsIDAuNTA4MzNdLFxuICAgIFwiOTUxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjZdLFxuICAgIFwiOTUyXCI6IFswLCAwLjY5NDQ0LCAwLjAzMTk0LCAwLCAwLjU2MThdLFxuICAgIFwiOTUzXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQxMjA0XSxcbiAgICBcIjk1NFwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC42Njc1OV0sXG4gICAgXCI5NTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjcwODNdLFxuICAgIFwiOTU2XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjcwNzg3XSxcbiAgICBcIjk1N1wiOiBbMCwgMC40NDQ0NCwgMC4wNjg5OCwgMCwgMC41NzY4NV0sXG4gICAgXCI5NThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDMwMjEsIDAsIDAuNTA4MzNdLFxuICAgIFwiOTU5XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjU4NDcyXSxcbiAgICBcIjk2MFwiOiBbMCwgMC40NDQ0NCwgMC4wMzcwNCwgMCwgMC42ODI0MV0sXG4gICAgXCI5NjFcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjExOF0sXG4gICAgXCI5NjJcIjogWzAuMDk3MjIsIDAuNDQ0NDQsIDAuMDc5MTcsIDAsIDAuNDIzNjFdLFxuICAgIFwiOTYzXCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjY4NTg4XSxcbiAgICBcIjk2NFwiOiBbMCwgMC40NDQ0NCwgMC4xMzQ3MiwgMCwgMC41MjA4M10sXG4gICAgXCI5NjVcIjogWzAsIDAuNDQ0NDQsIDAuMDM3MDQsIDAsIDAuNjMwNTVdLFxuICAgIFwiOTY2XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjc0NzIyXSxcbiAgICBcIjk2N1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC43MTgwNV0sXG4gICAgXCI5NjhcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDM3MDQsIDAsIDAuNzU4MzNdLFxuICAgIFwiOTY5XCI6IFswLCAwLjQ0NDQ0LCAwLjAzNzA0LCAwLCAwLjcxNzgyXSxcbiAgICBcIjk3N1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42OTE1NV0sXG4gICAgXCI5ODFcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuNzEyNV0sXG4gICAgXCI5ODJcIjogWzAsIDAuNDQ0NDQsIDAuMDMxOTQsIDAsIDAuOTc1XSxcbiAgICBcIjEwMDlcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNjExOF0sXG4gICAgXCIxMDEzXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ4MzMzXVxuICB9LFxuICBcIk1hdGgtSXRhbGljXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAwLjc1XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4MzMzLCAwLjA1MDE3LCAwLjA4MzM0LCAwLjc1ODUxXSxcbiAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA4MzM0LCAwLjcxNDcyXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA1NTU2LCAwLjgyNzkyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjczODJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjQzMDZdLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNzg2MjVdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAuMDgxMjUsIDAuMDU1NTYsIDAuODMxMjVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMTExMTEsIDAuNDM5NThdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAuMDk2MTgsIDAuMTY2NjcsIDAuNTU0NTFdLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDU1NTYsIDAuODQ5MzFdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDI3NzgsIDAuNjgwNTZdLFxuICAgIFwiNzdcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDgzMzQsIDAuOTcwMTRdLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDgzMzQsIDAuODAzNDddLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNzYyNzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjQyMDFdLFxuICAgIFwiODFcIjogWzAuMTk0NDQsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNzkwNTZdLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAuMDA3NzMsIDAuMDgzMzQsIDAuNzU5MjldLFxuICAgIFwiODNcIjogWzAsIDAuNjgzMzMsIDAuMDU3NjQsIDAuMDgzMzQsIDAuNjEzMl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC41ODQzOF0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xMDkwMywgMC4wMjc3OCwgMC42ODI3OF0sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4yMjIyMiwgMCwgMC41ODMzM10sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4wNzg0NywgMC4wODMzNCwgMC44Mjg0N10sXG4gICAgXCI4OVwiOiBbMCwgMC42ODMzMywgMC4yMjIyMiwgMCwgMC41ODA1Nl0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC42ODI2NF0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjg1OV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40MjkxN10sXG4gICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MzI3Nl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTY2NjcsIDAuNTIwNDldLFxuICAgIFwiMTAxXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ2NTYzXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMDc2NCwgMC4xNjY2NywgMC40ODk1OV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDc2OTddLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NjE2XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42NTk1MiwgMCwgMCwgMC4zNDQ1MV0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjU5NTIsIDAuMDU3MjQsIDAsIDAuNDExODFdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjAzMTQ4LCAwLCAwLjUyMDZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAxOTY4LCAwLjA4MzM0LCAwLjI5ODM4XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC44NzgwMV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNjAwMjNdLFxuICAgIFwiMTExXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MDMxM10sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDgzMzQsIDAuNDQ2NDFdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLjA1NTU2LCAwLjQ1MTE2XSxcbiAgICBcIjExNVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40Njg3NV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjE1MDgsIDAsIDAuMDgzMzQsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MjQ2XSxcbiAgICBcIjExOFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC40ODQ3Ml0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAuMDI2OTEsIDAuMDgzMzQsIDAuNzE1OTJdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MTUzXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wNTU1NiwgMC40OTAyOF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAuMDQzOTgsIDAuMDU1NTYsIDAuNDY1MDVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjYxNTI4XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNzYyNzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLjE2NjY3LCAwLjY5NDQ1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMC4wNzU2OSwgMC4wODMzNCwgMC43NDIzNl0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAuMDgxMjUsIDAuMDU1NTYsIDAuODMxMjVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjc3OTg2XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wNTU1NiwgMC41ODMzM10sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNjY2NjddLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLjExLCAwLjA1NTU2LCAwLjYxMjIyXSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NzI0XSxcbiAgICBcIjk0NVwiOiBbMCwgMC40MzA1NiwgMC4wMDM3LCAwLjAyNzc4LCAwLjYzOTddLFxuICAgIFwiOTQ2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1Mjc4LCAwLjA4MzM0LCAwLjU2NTYzXSxcbiAgICBcIjk0N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wNTU1NiwgMCwgMC41MTc3M10sXG4gICAgXCI5NDhcIjogWzAsIDAuNjk0NDQsIDAuMDM3ODUsIDAuMDU1NTYsIDAuNDQ0NDRdLFxuICAgIFwiOTQ5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjQ2NjMyXSxcbiAgICBcIjk1MFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNzM3OCwgMC4wODMzNCwgMC40Mzc1XSxcbiAgICBcIjk1MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wNTU1NiwgMC40OTY1M10sXG4gICAgXCI5NTJcIjogWzAsIDAuNjk0NDQsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNDY5NDRdLFxuICAgIFwiOTUzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjM1Mzk0XSxcbiAgICBcIjk1NFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCI5NTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiOTU2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjYwMjU1XSxcbiAgICBcIjk1N1wiOiBbMCwgMC40MzA1NiwgMC4wNjM2NiwgMC4wMjc3OCwgMC40OTM5OF0sXG4gICAgXCI5NThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDQ2MDEsIDAuMTExMTEsIDAuNDM3NV0sXG4gICAgXCI5NTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDg0NzJdLFxuICAgIFwiOTYwXCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjU3MDAzXSxcbiAgICBcIjk2MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgXCI5NjJcIjogWzAuMDk3MjIsIDAuNDMwNTYsIDAuMDc5ODYsIDAuMDgzMzQsIDAuMzYyODVdLFxuICAgIFwiOTYzXCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjU3MTQxXSxcbiAgICBcIjk2NFwiOiBbMCwgMC40MzA1NiwgMC4xMTMyLCAwLjAyNzc4LCAwLjQzNzE1XSxcbiAgICBcIjk2NVwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC41NDAyOF0sXG4gICAgXCI5NjZcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNjU0MTddLFxuICAgIFwiOTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjYyNTY5XSxcbiAgICBcIjk2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wMzU4OCwgMC4xMTExMSwgMC42NTEzOV0sXG4gICAgXCI5NjlcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAsIDAuNjIyNDVdLFxuICAgIFwiOTc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLjA4MzM0LCAwLjU5MTQ0XSxcbiAgICBcIjk4MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTU4M10sXG4gICAgXCI5ODJcIjogWzAsIDAuNDMwNTYsIDAuMDI3NzgsIDAsIDAuODI4MTNdLFxuICAgIFwiMTAwOVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgXCIxMDEzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQwNTldXG4gIH0sXG4gIFwiTWF0aC1SZWd1bGFyXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjY4MzMzLCAwLCAwLjEzODg5LCAwLjc1XSxcbiAgICBcIjY2XCI6IFswLCAwLjY4MzMzLCAwLjA1MDE3LCAwLjA4MzM0LCAwLjc1ODUxXSxcbiAgICBcIjY3XCI6IFswLCAwLjY4MzMzLCAwLjA3MTUzLCAwLjA4MzM0LCAwLjcxNDcyXSxcbiAgICBcIjY4XCI6IFswLCAwLjY4MzMzLCAwLjAyNzc4LCAwLjA1NTU2LCAwLjgyNzkyXSxcbiAgICBcIjY5XCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjczODJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjQzMDZdLFxuICAgIFwiNzFcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNzg2MjVdLFxuICAgIFwiNzJcIjogWzAsIDAuNjgzMzMsIDAuMDgxMjUsIDAuMDU1NTYsIDAuODMxMjVdLFxuICAgIFwiNzNcIjogWzAsIDAuNjgzMzMsIDAuMDc4NDcsIDAuMTExMTEsIDAuNDM5NThdLFxuICAgIFwiNzRcIjogWzAsIDAuNjgzMzMsIDAuMDk2MTgsIDAuMTY2NjcsIDAuNTU0NTFdLFxuICAgIFwiNzVcIjogWzAsIDAuNjgzMzMsIDAuMDcxNTMsIDAuMDU1NTYsIDAuODQ5MzFdLFxuICAgIFwiNzZcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDI3NzgsIDAuNjgwNTZdLFxuICAgIFwiNzdcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDgzMzQsIDAuOTcwMTRdLFxuICAgIFwiNzhcIjogWzAsIDAuNjgzMzMsIDAuMTA5MDMsIDAuMDgzMzQsIDAuODAzNDddLFxuICAgIFwiNzlcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNzYyNzhdLFxuICAgIFwiODBcIjogWzAsIDAuNjgzMzMsIDAuMTM4ODksIDAuMDgzMzQsIDAuNjQyMDFdLFxuICAgIFwiODFcIjogWzAuMTk0NDQsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNzkwNTZdLFxuICAgIFwiODJcIjogWzAsIDAuNjgzMzMsIDAuMDA3NzMsIDAuMDgzMzQsIDAuNzU5MjldLFxuICAgIFwiODNcIjogWzAsIDAuNjgzMzMsIDAuMDU3NjQsIDAuMDgzMzQsIDAuNjEzMl0sXG4gICAgXCI4NFwiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wODMzNCwgMC41ODQzOF0sXG4gICAgXCI4NVwiOiBbMCwgMC42ODMzMywgMC4xMDkwMywgMC4wMjc3OCwgMC42ODI3OF0sXG4gICAgXCI4NlwiOiBbMCwgMC42ODMzMywgMC4yMjIyMiwgMCwgMC41ODMzM10sXG4gICAgXCI4N1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMCwgMC45NDQ0NV0sXG4gICAgXCI4OFwiOiBbMCwgMC42ODMzMywgMC4wNzg0NywgMC4wODMzNCwgMC44Mjg0N10sXG4gICAgXCI4OVwiOiBbMCwgMC42ODMzMywgMC4yMjIyMiwgMCwgMC41ODA1Nl0sXG4gICAgXCI5MFwiOiBbMCwgMC42ODMzMywgMC4wNzE1MywgMC4wODMzNCwgMC42ODI2NF0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41Mjg1OV0sXG4gICAgXCI5OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC40MjkxN10sXG4gICAgXCI5OVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40MzI3Nl0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjk0NDQsIDAsIDAuMTY2NjcsIDAuNTIwNDldLFxuICAgIFwiMTAxXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ2NTYzXSxcbiAgICBcIjEwMlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4xMDc2NCwgMC4xNjY2NywgMC40ODk1OV0sXG4gICAgXCIxMDNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDI3NzgsIDAuNDc2OTddLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU3NjE2XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42NTk1MiwgMCwgMCwgMC4zNDQ1MV0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjU5NTIsIDAuMDU3MjQsIDAsIDAuNDExODFdLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLjAzMTQ4LCAwLCAwLjUyMDZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLjAxOTY4LCAwLjA4MzM0LCAwLjI5ODM4XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC44NzgwMV0sXG4gICAgXCIxMTBcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNjAwMjNdLFxuICAgIFwiMTExXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQ4NDcyXSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MDMxM10sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAuMDM1ODgsIDAuMDgzMzQsIDAuNDQ2NDFdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLjAyNzc4LCAwLjA1NTU2LCAwLjQ1MTE2XSxcbiAgICBcIjExNVwiOiBbMCwgMC40MzA1NiwgMCwgMC4wNTU1NiwgMC40Njg3NV0sXG4gICAgXCIxMTZcIjogWzAsIDAuNjE1MDgsIDAsIDAuMDgzMzQsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MjQ2XSxcbiAgICBcIjExOFwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC40ODQ3Ml0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDMwNTYsIDAuMDI2OTEsIDAuMDgzMzQsIDAuNzE1OTJdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjU3MTUzXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wNTU1NiwgMC40OTAyOF0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDMwNTYsIDAuMDQzOTgsIDAuMDU1NTYsIDAuNDY1MDVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjY4MzMzLCAwLjEzODg5LCAwLjA4MzM0LCAwLjYxNTI4XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42ODMzMywgMCwgMC4xNjY2NywgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjgzMzMsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNzYyNzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY4MzMzLCAwLCAwLjE2NjY3LCAwLjY5NDQ1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42ODMzMywgMC4wNzU2OSwgMC4wODMzNCwgMC43NDIzNl0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjgzMzMsIDAuMDgxMjUsIDAuMDU1NTYsIDAuODMxMjVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY4MzMzLCAwLjA1NzY0LCAwLjA4MzM0LCAwLjc3OTg2XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42ODMzMywgMC4xMzg4OSwgMC4wNTU1NiwgMC41ODMzM10sXG4gICAgXCI5MzRcIjogWzAsIDAuNjgzMzMsIDAsIDAuMDgzMzQsIDAuNjY2NjddLFxuICAgIFwiOTM2XCI6IFswLCAwLjY4MzMzLCAwLjExLCAwLjA1NTU2LCAwLjYxMjIyXSxcbiAgICBcIjkzN1wiOiBbMCwgMC42ODMzMywgMC4wNTAxNywgMC4wODMzNCwgMC43NzI0XSxcbiAgICBcIjk0NVwiOiBbMCwgMC40MzA1NiwgMC4wMDM3LCAwLjAyNzc4LCAwLjYzOTddLFxuICAgIFwiOTQ2XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLjA1Mjc4LCAwLjA4MzM0LCAwLjU2NTYzXSxcbiAgICBcIjk0N1wiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wNTU1NiwgMCwgMC41MTc3M10sXG4gICAgXCI5NDhcIjogWzAsIDAuNjk0NDQsIDAuMDM3ODUsIDAuMDU1NTYsIDAuNDQ0NDRdLFxuICAgIFwiOTQ5XCI6IFswLCAwLjQzMDU2LCAwLCAwLjA4MzM0LCAwLjQ2NjMyXSxcbiAgICBcIjk1MFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wNzM3OCwgMC4wODMzNCwgMC40Mzc1XSxcbiAgICBcIjk1MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wNTU1NiwgMC40OTY1M10sXG4gICAgXCI5NTJcIjogWzAsIDAuNjk0NDQsIDAuMDI3NzgsIDAuMDgzMzQsIDAuNDY5NDRdLFxuICAgIFwiOTUzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjM1Mzk0XSxcbiAgICBcIjk1NFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41NzYxNl0sXG4gICAgXCI5NTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiOTU2XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjAyNzc4LCAwLjYwMjU1XSxcbiAgICBcIjk1N1wiOiBbMCwgMC40MzA1NiwgMC4wNjM2NiwgMC4wMjc3OCwgMC40OTM5OF0sXG4gICAgXCI5NThcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDQ2MDEsIDAuMTExMTEsIDAuNDM3NV0sXG4gICAgXCI5NTlcIjogWzAsIDAuNDMwNTYsIDAsIDAuMDU1NTYsIDAuNDg0NzJdLFxuICAgIFwiOTYwXCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjU3MDAzXSxcbiAgICBcIjk2MVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgXCI5NjJcIjogWzAuMDk3MjIsIDAuNDMwNTYsIDAuMDc5ODYsIDAuMDgzMzQsIDAuMzYyODVdLFxuICAgIFwiOTYzXCI6IFswLCAwLjQzMDU2LCAwLjAzNTg4LCAwLCAwLjU3MTQxXSxcbiAgICBcIjk2NFwiOiBbMCwgMC40MzA1NiwgMC4xMTMyLCAwLjAyNzc4LCAwLjQzNzE1XSxcbiAgICBcIjk2NVwiOiBbMCwgMC40MzA1NiwgMC4wMzU4OCwgMC4wMjc3OCwgMC41NDAyOF0sXG4gICAgXCI5NjZcIjogWzAuMTk0NDQsIDAuNDMwNTYsIDAsIDAuMDgzMzQsIDAuNjU0MTddLFxuICAgIFwiOTY3XCI6IFswLjE5NDQ0LCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjYyNTY5XSxcbiAgICBcIjk2OFwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMC4wMzU4OCwgMC4xMTExMSwgMC42NTEzOV0sXG4gICAgXCI5NjlcIjogWzAsIDAuNDMwNTYsIDAuMDM1ODgsIDAsIDAuNjIyNDVdLFxuICAgIFwiOTc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLjA4MzM0LCAwLjU5MTQ0XSxcbiAgICBcIjk4MVwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMC4wODMzNCwgMC41OTU4M10sXG4gICAgXCI5ODJcIjogWzAsIDAuNDMwNTYsIDAuMDI3NzgsIDAsIDAuODI4MTNdLFxuICAgIFwiMTAwOVwiOiBbMC4xOTQ0NCwgMC40MzA1NiwgMCwgMC4wODMzNCwgMC41MTcwMl0sXG4gICAgXCIxMDEzXCI6IFswLCAwLjQzMDU2LCAwLCAwLjA1NTU2LCAwLjQwNTldXG4gIH0sXG4gIFwiU2Fuc1NlcmlmLUJvbGRcIjoge1xuICAgIFwiMzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzY2NjddLFxuICAgIFwiMzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAsIDAsIDAuOTE2NjddLFxuICAgIFwiMzZcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuNTVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDEuMDI5MTJdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMwNTZdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDI3NzhdLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNDI3NzhdLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNTVdLFxuICAgIFwiNDNcIjogWzAuMTE2NjcsIDAuNjE2NjcsIDAsIDAsIDAuODU1NTZdLFxuICAgIFwiNDRcIjogWzAuMTA1NTYsIDAuMTMwNTYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNDVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuMzY2NjddLFxuICAgIFwiNDZcIjogWzAsIDAuMTMwNTYsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNTVdLFxuICAgIFwiNDhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNTdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiNThcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNTlcIjogWzAuMTA1NTYsIDAuNDU4MzMsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNjFcIjogWy0wLjA5Mzc1LCAwLjQwNjI1LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjYzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxOTQ1XSxcbiAgICBcIjY0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjY1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjY2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjY3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc4XSxcbiAgICBcIjY4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjY5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY0MTY3XSxcbiAgICBcIjcwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjcxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjcyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjczXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMzMDU2XSxcbiAgICBcIjc0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxOTQ1XSxcbiAgICBcIjc1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc2Mzg5XSxcbiAgICBcIjc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MDU2XSxcbiAgICBcIjc3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjk3Nzc4XSxcbiAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc4XSxcbiAgICBcIjgxXCI6IFswLjEwNTU2LCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjgyXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwMjc4XSxcbiAgICBcIjgzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjg0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjg1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc2Mzg5XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjAxNTI4LCAwLCAwLjczMzM0XSxcbiAgICBcIjg3XCI6IFswLCAwLjY5NDQ0LCAwLjAxNTI4LCAwLCAxLjAzODg5XSxcbiAgICBcIjg4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjg5XCI6IFswLCAwLjY5NDQ0LCAwLjAyNzUsIDAsIDAuNzMzMzRdLFxuICAgIFwiOTBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjcyMjNdLFxuICAgIFwiOTFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzQzMDZdLFxuICAgIFwiOTNcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzQzMDZdLFxuICAgIFwiOTRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiOTVcIjogWzAuMzUsIDAuMTA4MzMsIDAuMDMwNTYsIDAsIDAuNTVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjk5XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjQ4ODg5XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NjExMV0sXG4gICAgXCIxMDFcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTExMTFdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjA3NjM5LCAwLCAwLjMzNjExXSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC41NV0sXG4gICAgXCIxMDRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTA1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI1NTU2XSxcbiAgICBcIjEwNlwiOiBbMC4xOTQ0NCwgMC42OTQ0NCwgMCwgMCwgMC4yODYxMV0sXG4gICAgXCIxMDdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTMwNTZdLFxuICAgIFwiMTA4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjI1NTU2XSxcbiAgICBcIjEwOVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC44NjY2N10sXG4gICAgXCIxMTBcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTExXCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU1XSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NTgzMywgMCwgMCwgMC41NjExMV0sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAsIDAsIDAuNTYxMTFdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ1ODMzLCAwLjAxNTI4LCAwLCAwLjM3MjIyXSxcbiAgICBcIjExNVwiOiBbMCwgMC40NTgzMywgMCwgMCwgMC40MjE2N10sXG4gICAgXCIxMTZcIjogWzAsIDAuNTg5MjksIDAsIDAsIDAuNDA0MTddLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ1ODMzLCAwLCAwLCAwLjU2MTExXSxcbiAgICBcIjExOFwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC41XSxcbiAgICBcIjExOVwiOiBbMCwgMC40NTgzMywgMC4wMTUyOCwgMCwgMC43NDQ0NV0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNV0sXG4gICAgXCIxMjFcIjogWzAuMTk0NDQsIDAuNDU4MzMsIDAuMDE1MjgsIDAsIDAuNV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuNDc2MzldLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjM0NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjE2OFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzMzMzRdLFxuICAgIFwiMTgwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU1XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40ODg4OV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDU4MzMsIDAsIDAsIDAuMjU1NTZdLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ1ODMzLCAwLCAwLCAwLjI4NjExXSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjM1NDIsIDAsIDAsIDAuNTVdLFxuICAgIFwiNzEzXCI6IFswLCAwLjYzNzc4LCAwLCAwLCAwLjU1XSxcbiAgICBcIjcyOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMzA1NTZdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczMzM0XSxcbiAgICBcIjczMlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NV0sXG4gICAgXCI3MzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU4MDU2XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC45MTY2N10sXG4gICAgXCI5MjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODU1NTZdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY3MjIzXSxcbiAgICBcIjkyNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MzMzNF0sXG4gICAgXCI5MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc5NDQ1XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44NTU1Nl0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjg1NTU2XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43OTQ0NV0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ1ODMzLCAwLjAzMDU2LCAwLCAwLjU1XSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDU4MzMsIDAuMDMwNTYsIDAsIDEuMTAwMDFdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMDU1Nl0sXG4gICAgXCI4MjE3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjMwNTU2XSxcbiAgICBcIjgyMjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTU4MzRdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTgzNF1cbiAgfSxcbiAgXCJTYW5zU2VyaWYtSXRhbGljXCI6IHtcbiAgICBcIjMzXCI6IFswLCAwLjY5NDQ0LCAwLjA1NzMzLCAwLCAwLjMxOTQ1XSxcbiAgICBcIjM0XCI6IFswLCAwLjY5NDQ0LCAwLjAwMzE2LCAwLCAwLjVdLFxuICAgIFwiMzVcIjogWzAuMTk0NDQsIDAuNjk0NDQsIDAuMDUwODcsIDAsIDAuODMzMzRdLFxuICAgIFwiMzZcIjogWzAuMDU1NTYsIDAuNzUsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCIzN1wiOiBbMC4wNTU1NiwgMC43NSwgMC4wMzEyNiwgMCwgMC44MzMzNF0sXG4gICAgXCIzOFwiOiBbMCwgMC42OTQ0NCwgMC4wMzA1OCwgMCwgMC43NTgzNF0sXG4gICAgXCIzOVwiOiBbMCwgMC42OTQ0NCwgMC4wNzgxNiwgMCwgMC4yNzc3OF0sXG4gICAgXCI0MFwiOiBbMC4yNSwgMC43NSwgMC4xMzE2NCwgMCwgMC4zODg4OV0sXG4gICAgXCI0MVwiOiBbMC4yNSwgMC43NSwgMC4wMjUzNiwgMCwgMC4zODg4OV0sXG4gICAgXCI0MlwiOiBbMCwgMC43NSwgMC4xMTc3NSwgMCwgMC41XSxcbiAgICBcIjQzXCI6IFswLjA4MzMzLCAwLjU4MzMzLCAwLjAyNTM2LCAwLCAwLjc3Nzc4XSxcbiAgICBcIjQ0XCI6IFswLjEyNSwgMC4wODMzMywgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0NVwiOiBbMCwgMC40NDQ0NCwgMC4wMTk0NiwgMCwgMC4zMzMzM10sXG4gICAgXCI0NlwiOiBbMCwgMC4wODMzMywgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI0N1wiOiBbMC4yNSwgMC43NSwgMC4xMzE2NCwgMCwgMC41XSxcbiAgICBcIjQ4XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNDlcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1MFwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjUxXCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTJcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1M1wiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU0XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNTVcIjogWzAsIDAuNjU1NTYsIDAuMTExNTYsIDAsIDAuNV0sXG4gICAgXCI1NlwiOiBbMCwgMC42NTU1NiwgMC4xMTE1NiwgMCwgMC41XSxcbiAgICBcIjU3XCI6IFswLCAwLjY1NTU2LCAwLjExMTU2LCAwLCAwLjVdLFxuICAgIFwiNThcIjogWzAsIDAuNDQ0NDQsIDAuMDI1MDIsIDAsIDAuMjc3NzhdLFxuICAgIFwiNTlcIjogWzAuMTI1LCAwLjQ0NDQ0LCAwLjAyNTAyLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjYxXCI6IFstMC4xMywgMC4zNywgMC4wNTA4NywgMCwgMC43Nzc3OF0sXG4gICAgXCI2M1wiOiBbMCwgMC42OTQ0NCwgMC4xMTgwOSwgMCwgMC40NzIyMl0sXG4gICAgXCI2NFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC42NjY2N10sXG4gICAgXCI2NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI2NlwiOiBbMCwgMC42OTQ0NCwgMC4wODI5MywgMCwgMC42NjY2N10sXG4gICAgXCI2N1wiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42Mzg4OV0sXG4gICAgXCI2OFwiOiBbMCwgMC42OTQ0NCwgMC4wNzU1NSwgMCwgMC43MjIyM10sXG4gICAgXCI2OVwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC41OTcyMl0sXG4gICAgXCI3MFwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC41Njk0NV0sXG4gICAgXCI3MVwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42NjY2N10sXG4gICAgXCI3MlwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC43MDgzNF0sXG4gICAgXCI3M1wiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC4yNzc3OF0sXG4gICAgXCI3NFwiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC40NzIyMl0sXG4gICAgXCI3NVwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC42OTQ0NV0sXG4gICAgXCI3NlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NDE2N10sXG4gICAgXCI3N1wiOiBbMCwgMC42OTQ0NCwgMC4wODA5NCwgMCwgMC44NzVdLFxuICAgIFwiNzhcIjogWzAsIDAuNjk0NDQsIDAuMDgwOTQsIDAsIDAuNzA4MzRdLFxuICAgIFwiNzlcIjogWzAsIDAuNjk0NDQsIDAuMDc1NTUsIDAsIDAuNzM2MTFdLFxuICAgIFwiODBcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNjM4ODldLFxuICAgIFwiODFcIjogWzAuMTI1LCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjczNjExXSxcbiAgICBcIjgyXCI6IFswLCAwLjY5NDQ0LCAwLjA4MjkzLCAwLCAwLjY0NTg0XSxcbiAgICBcIjgzXCI6IFswLCAwLjY5NDQ0LCAwLjA5MjA1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg0XCI6IFswLCAwLjY5NDQ0LCAwLjEzMzcyLCAwLCAwLjY4MDU2XSxcbiAgICBcIjg1XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjY4NzVdLFxuICAgIFwiODZcIjogWzAsIDAuNjk0NDQsIDAuMTYxNSwgMCwgMC42NjY2N10sXG4gICAgXCI4N1wiOiBbMCwgMC42OTQ0NCwgMC4xNjE1LCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg4XCI6IFswLCAwLjY5NDQ0LCAwLjEzMzcyLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5XCI6IFswLCAwLjY5NDQ0LCAwLjE3MjYxLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkwXCI6IFswLCAwLjY5NDQ0LCAwLjExOTgzLCAwLCAwLjYxMTExXSxcbiAgICBcIjkxXCI6IFswLjI1LCAwLjc1LCAwLjE1OTQyLCAwLCAwLjI4ODg5XSxcbiAgICBcIjkzXCI6IFswLjI1LCAwLjc1LCAwLjA4NzE5LCAwLCAwLjI4ODg5XSxcbiAgICBcIjk0XCI6IFswLCAwLjY5NDQ0LCAwLjA3OTksIDAsIDAuNV0sXG4gICAgXCI5NVwiOiBbMC4zNSwgMC4wOTQ0NCwgMC4wODYxNiwgMCwgMC41XSxcbiAgICBcIjk3XCI6IFswLCAwLjQ0NDQ0LCAwLjAwOTgxLCAwLCAwLjQ4MDU2XSxcbiAgICBcIjk4XCI6IFswLCAwLjY5NDQ0LCAwLjAzMDU3LCAwLCAwLjUxNjY3XSxcbiAgICBcIjk5XCI6IFswLCAwLjQ0NDQ0LCAwLjA4MzM2LCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjEwMFwiOiBbMCwgMC42OTQ0NCwgMC4wOTQ4MywgMCwgMC41MTY2N10sXG4gICAgXCIxMDFcIjogWzAsIDAuNDQ0NDQsIDAuMDY3NzgsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjY5NDQ0LCAwLjIxNzA1LCAwLCAwLjMwNTU2XSxcbiAgICBcIjEwM1wiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC41XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42OTQ0NCwgMC4wMTc3OCwgMCwgMC41MTY2N10sXG4gICAgXCIxMDVcIjogWzAsIDAuNjc5MzcsIDAuMDk3MTgsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA2XCI6IFswLjE5NDQ0LCAwLjY3OTM3LCAwLjA5MTYyLCAwLCAwLjI2NjY3XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42OTQ0NCwgMC4wODMzNiwgMCwgMC40ODg4OV0sXG4gICAgXCIxMDhcIjogWzAsIDAuNjk0NDQsIDAuMDk0ODMsIDAsIDAuMjM4ODldLFxuICAgIFwiMTA5XCI6IFswLCAwLjQ0NDQ0LCAwLjAxNzc4LCAwLCAwLjc5NDQ1XSxcbiAgICBcIjExMFwiOiBbMCwgMC40NDQ0NCwgMC4wMTc3OCwgMCwgMC41MTY2N10sXG4gICAgXCIxMTFcIjogWzAsIDAuNDQ0NDQsIDAuMDY2MTMsIDAsIDAuNV0sXG4gICAgXCIxMTJcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDM4OSwgMCwgMC41MTY2N10sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuNTE2NjddLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLjEwODM2LCAwLCAwLjM0MTY3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMC4wNzc4LCAwLCAwLjM4MzMzXSxcbiAgICBcIjExNlwiOiBbMCwgMC41NzE0MywgMC4wNzIyNSwgMCwgMC4zNjExMV0sXG4gICAgXCIxMTdcIjogWzAsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuNTE2NjddLFxuICAgIFwiMTE4XCI6IFswLCAwLjQ0NDQ0LCAwLjEwODM2LCAwLCAwLjQ2MTExXSxcbiAgICBcIjExOVwiOiBbMCwgMC40NDQ0NCwgMC4xMDgzNiwgMCwgMC42ODMzNF0sXG4gICAgXCIxMjBcIjogWzAsIDAuNDQ0NDQsIDAuMDkxNjksIDAsIDAuNDYxMTFdLFxuICAgIFwiMTIxXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjEwODM2LCAwLCAwLjQ2MTExXSxcbiAgICBcIjEyMlwiOiBbMCwgMC40NDQ0NCwgMC4wODc1MiwgMCwgMC40MzQ3Ml0sXG4gICAgXCIxMjZcIjogWzAuMzUsIDAuMzI2NTksIDAuMDg4MjYsIDAsIDAuNV0sXG4gICAgXCIxNjhcIjogWzAsIDAuNjc5MzcsIDAuMDYzODUsIDAsIDAuNV0sXG4gICAgXCIxNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzM3NTJdLFxuICAgIFwiMTg0XCI6IFswLjE3MDE0LCAwLCAwLCAwLCAwLjQ0NDQ1XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40NDQ0NCwgMC4wNDE2OSwgMCwgMC4yMzg4OV0sXG4gICAgXCI1NjdcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAuMDQxNjksIDAsIDAuMjY2NjddLFxuICAgIFwiNzEwXCI6IFswLCAwLjY5NDQ0LCAwLjA3OTksIDAsIDAuNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNjMxOTQsIDAuMDg0MzIsIDAsIDAuNV0sXG4gICAgXCI3MTNcIjogWzAsIDAuNjA4ODksIDAuMDg3NzYsIDAsIDAuNV0sXG4gICAgXCI3MTRcIjogWzAsIDAuNjk0NDQsIDAuMDkyMDUsIDAsIDAuNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNV0sXG4gICAgXCI3MjhcIjogWzAsIDAuNjk0NDQsIDAuMDk0ODMsIDAsIDAuNV0sXG4gICAgXCI3MjlcIjogWzAsIDAuNjc5MzcsIDAuMDc3NzQsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzMwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNzUyXSxcbiAgICBcIjczMlwiOiBbMCwgMC42NzY1OSwgMC4wODgyNiwgMCwgMC41XSxcbiAgICBcIjczM1wiOiBbMCwgMC42OTQ0NCwgMC4wOTIwNSwgMCwgMC41XSxcbiAgICBcIjkxNVwiOiBbMCwgMC42OTQ0NCwgMC4xMzM3MiwgMCwgMC41NDE2N10sXG4gICAgXCI5MTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiOTIwXCI6IFswLCAwLjY5NDQ0LCAwLjA3NTU1LCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkyM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MjZcIjogWzAsIDAuNjk0NDQsIDAuMTI4MTYsIDAsIDAuNjY2NjddLFxuICAgIFwiOTI4XCI6IFswLCAwLjY5NDQ0LCAwLjA4MDk0LCAwLCAwLjcwODM0XSxcbiAgICBcIjkzMVwiOiBbMCwgMC42OTQ0NCwgMC4xMTk4MywgMCwgMC43MjIyMl0sXG4gICAgXCI5MzNcIjogWzAsIDAuNjk0NDQsIDAuMDkwMzEsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTM0XCI6IFswLCAwLjY5NDQ0LCAwLjA0NjAzLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzNlwiOiBbMCwgMC42OTQ0NCwgMC4wOTAzMSwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzdcIjogWzAsIDAuNjk0NDQsIDAuMDgyOTMsIDAsIDAuNzIyMjJdLFxuICAgIFwiODIxMVwiOiBbMCwgMC40NDQ0NCwgMC4wODYxNiwgMCwgMC41XSxcbiAgICBcIjgyMTJcIjogWzAsIDAuNDQ0NDQsIDAuMDg2MTYsIDAsIDEuMF0sXG4gICAgXCI4MjE2XCI6IFswLCAwLjY5NDQ0LCAwLjA3ODE2LCAwLCAwLjI3Nzc4XSxcbiAgICBcIjgyMTdcIjogWzAsIDAuNjk0NDQsIDAuMDc4MTYsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIyMFwiOiBbMCwgMC42OTQ0NCwgMC4xNDIwNSwgMCwgMC41XSxcbiAgICBcIjgyMjFcIjogWzAsIDAuNjk0NDQsIDAuMDAzMTYsIDAsIDAuNV1cbiAgfSxcbiAgXCJTYW5zU2VyaWYtUmVndWxhclwiOiB7XG4gICAgXCIzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4zMTk0NV0sXG4gICAgXCIzNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjM1XCI6IFswLjE5NDQ0LCAwLjY5NDQ0LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjM2XCI6IFswLjA1NTU2LCAwLjc1LCAwLCAwLCAwLjVdLFxuICAgIFwiMzdcIjogWzAuMDU1NTYsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMzhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzU4MzRdLFxuICAgIFwiMzlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDBcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDFcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuMzg4ODldLFxuICAgIFwiNDJcIjogWzAsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI0M1wiOiBbMC4wODMzMywgMC41ODMzMywgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI0NFwiOiBbMC4xMjUsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMzMzMzNdLFxuICAgIFwiNDZcIjogWzAsIDAuMDgzMzMsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNDdcIjogWzAuMjUsIDAuNzUsIDAsIDAsIDAuNV0sXG4gICAgXCI0OFwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjQ5XCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1MVwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjUyXCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1NFwiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU1XCI6IFswLCAwLjY1NTU2LCAwLCAwLCAwLjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjU1NTYsIDAsIDAsIDAuNV0sXG4gICAgXCI1N1wiOiBbMCwgMC42NTU1NiwgMCwgMCwgMC41XSxcbiAgICBcIjU4XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjI3Nzc4XSxcbiAgICBcIjU5XCI6IFswLjEyNSwgMC40NDQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI2MVwiOiBbLTAuMTMsIDAuMzcsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiNjNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiNjRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNjdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiNjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjNdLFxuICAgIFwiNjlcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTk3MjJdLFxuICAgIFwiNzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTY5NDVdLFxuICAgIFwiNzFcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzJcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzA4MzRdLFxuICAgIFwiNzNcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiNzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiNzVcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjk0NDVdLFxuICAgIFwiNzZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTQxNjddLFxuICAgIFwiNzdcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuODc1XSxcbiAgICBcIjc4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcwODM0XSxcbiAgICBcIjc5XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjczNjExXSxcbiAgICBcIjgwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjgxXCI6IFswLjEyNSwgMC42OTQ0NCwgMCwgMCwgMC43MzYxMV0sXG4gICAgXCI4MlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NDU4NF0sXG4gICAgXCI4M1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42ODA1Nl0sXG4gICAgXCI4NVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42ODc1XSxcbiAgICBcIjg2XCI6IFswLCAwLjY5NDQ0LCAwLjAxMzg5LCAwLCAwLjY2NjY3XSxcbiAgICBcIjg3XCI6IFswLCAwLjY5NDQ0LCAwLjAxMzg5LCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg4XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg5XCI6IFswLCAwLjY5NDQ0LCAwLjAyNSwgMCwgMC42NjY2N10sXG4gICAgXCI5MFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42MTExMV0sXG4gICAgXCI5MVwiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yODg4OV0sXG4gICAgXCI5M1wiOiBbMC4yNSwgMC43NSwgMCwgMCwgMC4yODg4OV0sXG4gICAgXCI5NFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjk1XCI6IFswLjM1LCAwLjA5NDQ0LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgIFwiOTdcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDgwNTZdLFxuICAgIFwiOThcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgIFwiOTlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDQ0NDVdLFxuICAgIFwiMTAwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIxMDJcIjogWzAsIDAuNjk0NDQsIDAuMDY5NDQsIDAsIDAuMzA1NTZdLFxuICAgIFwiMTAzXCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjVdLFxuICAgIFwiMTA0XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjEwNVwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC4yMzg4OV0sXG4gICAgXCIxMDZcIjogWzAuMTk0NDQsIDAuNjc5MzcsIDAsIDAsIDAuMjY2NjddLFxuICAgIFwiMTA3XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjQ4ODg5XSxcbiAgICBcIjEwOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yMzg4OV0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNzk0NDVdLFxuICAgIFwiMTEwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjExMVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjExMlwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMCwgMCwgMC41MTY2N10sXG4gICAgXCIxMTNcIjogWzAuMTk0NDQsIDAuNDQ0NDQsIDAsIDAsIDAuNTE2NjddLFxuICAgIFwiMTE0XCI6IFswLCAwLjQ0NDQ0LCAwLjAxMzg5LCAwLCAwLjM0MTY3XSxcbiAgICBcIjExNVwiOiBbMCwgMC40NDQ0NCwgMCwgMCwgMC4zODMzM10sXG4gICAgXCIxMTZcIjogWzAsIDAuNTcxNDMsIDAsIDAsIDAuMzYxMTFdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjUxNjY3XSxcbiAgICBcIjExOFwiOiBbMCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC40NjExMV0sXG4gICAgXCIxMTlcIjogWzAsIDAuNDQ0NDQsIDAuMDEzODksIDAsIDAuNjgzMzRdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQ0NDQ0LCAwLCAwLCAwLjQ2MTExXSxcbiAgICBcIjEyMVwiOiBbMC4xOTQ0NCwgMC40NDQ0NCwgMC4wMTM4OSwgMCwgMC40NjExMV0sXG4gICAgXCIxMjJcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuNDM0NzJdLFxuICAgIFwiMTI2XCI6IFswLjM1LCAwLjMyNjU5LCAwLCAwLCAwLjVdLFxuICAgIFwiMTY4XCI6IFswLCAwLjY3OTM3LCAwLCAwLCAwLjVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjE4NFwiOiBbMC4xNzAxNCwgMCwgMCwgMCwgMC40NDQ0NV0sXG4gICAgXCIzMDVcIjogWzAsIDAuNDQ0NDQsIDAsIDAsIDAuMjM4ODldLFxuICAgIFwiNTY3XCI6IFswLjE5NDQ0LCAwLjQ0NDQ0LCAwLCAwLCAwLjI2NjY3XSxcbiAgICBcIjcxMFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjcxMVwiOiBbMCwgMC42MzE5NCwgMCwgMCwgMC41XSxcbiAgICBcIjcxM1wiOiBbMCwgMC42MDg4OSwgMCwgMCwgMC41XSxcbiAgICBcIjcxNFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjcxNVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjcyOFwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XSxcbiAgICBcIjcyOVwiOiBbMCwgMC42NzkzNywgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI3MzBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiNzMyXCI6IFswLCAwLjY3NjU5LCAwLCAwLCAwLjVdLFxuICAgIFwiNzMzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiOTE1XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjU0MTY3XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI5MjBcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiOTIzXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjkyNlwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MjhcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzA4MzRdLFxuICAgIFwiOTMxXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjcyMjIyXSxcbiAgICBcIjkzM1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI5MzRcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuNzIyMjJdLFxuICAgIFwiOTM2XCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjc3Nzc4XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC43MjIyMl0sXG4gICAgXCI4MjExXCI6IFswLCAwLjQ0NDQ0LCAwLjAyNzc4LCAwLCAwLjVdLFxuICAgIFwiODIxMlwiOiBbMCwgMC40NDQ0NCwgMC4wMjc3OCwgMCwgMS4wXSxcbiAgICBcIjgyMTZcIjogWzAsIDAuNjk0NDQsIDAsIDAsIDAuMjc3NzhdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC4yNzc3OF0sXG4gICAgXCI4MjIwXCI6IFswLCAwLjY5NDQ0LCAwLCAwLCAwLjVdLFxuICAgIFwiODIyMVwiOiBbMCwgMC42OTQ0NCwgMCwgMCwgMC41XVxuICB9LFxuICBcIlNjcmlwdC1SZWd1bGFyXCI6IHtcbiAgICBcIjY1XCI6IFswLCAwLjcsIDAuMjI5MjUsIDAsIDAuODAyNTNdLFxuICAgIFwiNjZcIjogWzAsIDAuNywgMC4wNDA4NywgMCwgMC45MDc1N10sXG4gICAgXCI2N1wiOiBbMCwgMC43LCAwLjE2ODksIDAsIDAuNjY2MTldLFxuICAgIFwiNjhcIjogWzAsIDAuNywgMC4wOTM3MSwgMCwgMC43NzQ0M10sXG4gICAgXCI2OVwiOiBbMCwgMC43LCAwLjE4NTgzLCAwLCAwLjU2MTYyXSxcbiAgICBcIjcwXCI6IFswLCAwLjcsIDAuMTM2MzQsIDAsIDAuODk1NDRdLFxuICAgIFwiNzFcIjogWzAsIDAuNywgMC4xNzMyMiwgMCwgMC42MDk2MV0sXG4gICAgXCI3MlwiOiBbMCwgMC43LCAwLjI5Njk0LCAwLCAwLjk2OTE5XSxcbiAgICBcIjczXCI6IFswLCAwLjcsIDAuMTkxODksIDAsIDAuODA5MDddLFxuICAgIFwiNzRcIjogWzAuMjc3NzgsIDAuNywgMC4xOTE4OSwgMCwgMS4wNTE1OV0sXG4gICAgXCI3NVwiOiBbMCwgMC43LCAwLjMxMjU5LCAwLCAwLjkxMzY0XSxcbiAgICBcIjc2XCI6IFswLCAwLjcsIDAuMTkxODksIDAsIDAuODczNzNdLFxuICAgIFwiNzdcIjogWzAsIDAuNywgMC4xNTk4MSwgMCwgMS4wODAzMV0sXG4gICAgXCI3OFwiOiBbMCwgMC43LCAwLjM1MjUsIDAsIDAuOTAxNV0sXG4gICAgXCI3OVwiOiBbMCwgMC43LCAwLjA4MDc4LCAwLCAwLjczNzg3XSxcbiAgICBcIjgwXCI6IFswLCAwLjcsIDAuMDgwNzgsIDAsIDEuMDEyNjJdLFxuICAgIFwiODFcIjogWzAsIDAuNywgMC4wMzMwNSwgMCwgMC44ODI4Ml0sXG4gICAgXCI4MlwiOiBbMCwgMC43LCAwLjA2MjU5LCAwLCAwLjg1XSxcbiAgICBcIjgzXCI6IFswLCAwLjcsIDAuMTkxODksIDAsIDAuODY3NjddLFxuICAgIFwiODRcIjogWzAsIDAuNywgMC4yOTA4NywgMCwgMC43NDY5N10sXG4gICAgXCI4NVwiOiBbMCwgMC43LCAwLjI1ODE1LCAwLCAwLjc5OTk2XSxcbiAgICBcIjg2XCI6IFswLCAwLjcsIDAuMjc1MjMsIDAsIDAuNjIyMDRdLFxuICAgIFwiODdcIjogWzAsIDAuNywgMC4yNzUyMywgMCwgMC44MDUzMl0sXG4gICAgXCI4OFwiOiBbMCwgMC43LCAwLjI2MDA2LCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg5XCI6IFswLCAwLjcsIDAuMjkzOSwgMCwgMC43MDk2MV0sXG4gICAgXCI5MFwiOiBbMCwgMC43LCAwLjI0MDM3LCAwLCAwLjgyMTJdXG4gIH0sXG4gIFwiU2l6ZTEtUmVndWxhclwiOiB7XG4gICAgXCI0MFwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NTgzNF0sXG4gICAgXCI0MVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NTgzNF0sXG4gICAgXCI0N1wiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41Nzc3OF0sXG4gICAgXCI5MVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40MTY2N10sXG4gICAgXCI5MlwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC41Nzc3OF0sXG4gICAgXCI5M1wiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40MTY2N10sXG4gICAgXCIxMjNcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiMTI1XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjcxMFwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI3MzJcIjogWzAsIDAuNzIyMjIsIDAsIDAsIDAuNTU1NTZdLFxuICAgIFwiNzcwXCI6IFswLCAwLjcyMjIyLCAwLCAwLCAwLjU1NTU2XSxcbiAgICBcIjc3MVwiOiBbMCwgMC43MjIyMiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4MjE0XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODU5M1wiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI4NTk1XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjg2NTdcIjogWzFlLTA1LCAwLjYsIDAsIDAsIDAuNzc3NzhdLFxuICAgIFwiODY1OVwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC43Nzc3OF0sXG4gICAgXCI4NzE5XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjk0NDQ1XSxcbiAgICBcIjg3MjBcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuOTQ0NDVdLFxuICAgIFwiODcyMVwiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgXCI4NzMwXCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAxLjBdLFxuICAgIFwiODczOVwiOiBbLTAuMDA1OTksIDAuNjA2LCAwLCAwLCAwLjMzMzMzXSxcbiAgICBcIjg3NDFcIjogWy0wLjAwNTk5LCAwLjYwNiwgMCwgMCwgMC41NTU1Nl0sXG4gICAgXCI4NzQ3XCI6IFswLjMwNjEyLCAwLjgwNSwgMC4xOTQ0NSwgMCwgMC40NzIyMl0sXG4gICAgXCI4NzQ4XCI6IFswLjMwNiwgMC44MDUsIDAuMTk0NDUsIDAsIDAuNDcyMjJdLFxuICAgIFwiODc0OVwiOiBbMC4zMDYsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg3NTBcIjogWzAuMzA2MTIsIDAuODA1LCAwLjE5NDQ1LCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg4OTZcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODg5N1wiOiBbMC4yNTAwMSwgMC43NSwgMCwgMCwgMC44MzMzNF0sXG4gICAgXCI4ODk4XCI6IFswLjI1MDAxLCAwLjc1LCAwLCAwLCAwLjgzMzM0XSxcbiAgICBcIjg4OTlcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiODk2OFwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI4OTY5XCI6IFswLjM1MDAxLCAwLjg1LCAwLCAwLCAwLjQ3MjIyXSxcbiAgICBcIjg5NzBcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiODk3MVwiOiBbMC4zNTAwMSwgMC44NSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI5MTY4XCI6IFstMC4wMDA5OSwgMC42MDEsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiMTAyMTZcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiMTAyMTdcIjogWzAuMzUwMDEsIDAuODUsIDAsIDAsIDAuNDcyMjJdLFxuICAgIFwiMTA3NTJcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiMTA3NTNcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiMTA3NTRcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiMTA3NTZcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdLFxuICAgIFwiMTA3NThcIjogWzAuMjUwMDEsIDAuNzUsIDAsIDAsIDAuODMzMzRdXG4gIH0sXG4gIFwiU2l6ZTItUmVndWxhclwiOiB7XG4gICAgXCI0MFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41OTcyMl0sXG4gICAgXCI0MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41OTcyMl0sXG4gICAgXCI0N1wiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44MTExMV0sXG4gICAgXCI5MVwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCI5MlwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC44MTExMV0sXG4gICAgXCI5M1wiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC40NzIyMl0sXG4gICAgXCIxMjNcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiMTI1XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjcxMFwiOiBbMCwgMC43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjczMlwiOiBbMCwgMC43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjc3MFwiOiBbMCwgMC43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjc3MVwiOiBbMCwgMC43NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg3MTlcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMjc3NzhdLFxuICAgIFwiODcyMFwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4yNzc3OF0sXG4gICAgXCI4NzIxXCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjg3MzBcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDEuMF0sXG4gICAgXCI4NzQ3XCI6IFswLjg2MjI1LCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3NDhcIjogWzAuODYyLCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3NDlcIjogWzAuODYyLCAxLjM2LCAwLjQ0NDQ1LCAwLCAwLjU1NTU2XSxcbiAgICBcIjg3NTBcIjogWzAuODYyMjUsIDEuMzYsIDAuNDQ0NDUsIDAsIDAuNTU1NTZdLFxuICAgIFwiODg5NlwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4ODk3XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjg4OThcIjogWzAuNTUwMDEsIDEuMDUsIDAsIDAsIDEuMTExMTFdLFxuICAgIFwiODg5OVwiOiBbMC41NTAwMSwgMS4wNSwgMCwgMCwgMS4xMTExMV0sXG4gICAgXCI4OTY4XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjg5NjlcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiODk3MFwiOiBbMC42NTAwMiwgMS4xNSwgMCwgMCwgMC41Mjc3OF0sXG4gICAgXCI4OTcxXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjUyNzc4XSxcbiAgICBcIjEwMjE2XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjEwMjE3XCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjYxMTExXSxcbiAgICBcIjEwNzUyXCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjUxMTEyXSxcbiAgICBcIjEwNzUzXCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjUxMTEyXSxcbiAgICBcIjEwNzU0XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjUxMTEyXSxcbiAgICBcIjEwNzU2XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXSxcbiAgICBcIjEwNzU4XCI6IFswLjU1MDAxLCAxLjA1LCAwLCAwLCAxLjExMTExXVxuICB9LFxuICBcIlNpemUzLVJlZ3VsYXJcIjoge1xuICAgIFwiNDBcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiNDFcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzM2MTFdLFxuICAgIFwiNDdcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDEuMDQ0NDVdLFxuICAgIFwiOTFcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiOTJcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDEuMDQ0NDVdLFxuICAgIFwiOTNcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTI3NzhdLFxuICAgIFwiMTIzXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjc1XSxcbiAgICBcIjEyNVwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC43NV0sXG4gICAgXCI3MTBcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgIFwiNzMyXCI6IFswLCAwLjc1LCAwLCAwLCAxLjQ0NDQ1XSxcbiAgICBcIjc3MFwiOiBbMCwgMC43NSwgMCwgMCwgMS40NDQ0NV0sXG4gICAgXCI3NzFcIjogWzAsIDAuNzUsIDAsIDAsIDEuNDQ0NDVdLFxuICAgIFwiODczMFwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMS4wXSxcbiAgICBcIjg5NjhcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiODk2OVwiOiBbMC45NTAwMywgMS40NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI4OTcwXCI6IFswLjk1MDAzLCAxLjQ1LCAwLCAwLCAwLjU4MzM0XSxcbiAgICBcIjg5NzFcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNTgzMzRdLFxuICAgIFwiMTAyMTZcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdLFxuICAgIFwiMTAyMTdcIjogWzAuOTUwMDMsIDEuNDUsIDAsIDAsIDAuNzVdXG4gIH0sXG4gIFwiU2l6ZTQtUmVndWxhclwiOiB7XG4gICAgXCI0MFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC43OTE2N10sXG4gICAgXCI0MVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC43OTE2N10sXG4gICAgXCI0N1wiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4yNzc3OF0sXG4gICAgXCI5MVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCI5MlwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMS4yNzc3OF0sXG4gICAgXCI5M1wiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC41ODMzNF0sXG4gICAgXCIxMjNcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuODA1NTZdLFxuICAgIFwiMTI1XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjgwNTU2XSxcbiAgICBcIjcxMFwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgXCI3MzJcIjogWzAsIDAuODI1LCAwLCAwLCAxLjg4ODldLFxuICAgIFwiNzcwXCI6IFswLCAwLjgyNSwgMCwgMCwgMS44ODg5XSxcbiAgICBcIjc3MVwiOiBbMCwgMC44MjUsIDAsIDAsIDEuODg4OV0sXG4gICAgXCI4NzMwXCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAxLjBdLFxuICAgIFwiODk2OFwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI4OTY5XCI6IFsxLjI1MDAzLCAxLjc1LCAwLCAwLCAwLjYzODg5XSxcbiAgICBcIjg5NzBcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuNjM4ODldLFxuICAgIFwiODk3MVwiOiBbMS4yNTAwMywgMS43NSwgMCwgMCwgMC42Mzg4OV0sXG4gICAgXCI5MTE1XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTExNlwiOiBbMWUtMDUsIDAuNiwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTExN1wiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuODc1XSxcbiAgICBcIjkxMThcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI5MTE5XCI6IFsxZS0wNSwgMC42LCAwLCAwLCAwLjg3NV0sXG4gICAgXCI5MTIwXCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC44NzVdLFxuICAgIFwiOTEyMVwiOiBbMC42NDUwMiwgMS4xNTUsIDAsIDAsIDAuNjY2NjddLFxuICAgIFwiOTEyMlwiOiBbLTAuMDAwOTksIDAuNjAxLCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjNcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjRcIjogWzAuNjQ1MDIsIDEuMTU1LCAwLCAwLCAwLjY2NjY3XSxcbiAgICBcIjkxMjVcIjogWy0wLjAwMDk5LCAwLjYwMSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI2XCI6IFswLjY0NTAyLCAxLjE1NSwgMCwgMCwgMC42NjY2N10sXG4gICAgXCI5MTI3XCI6IFsxZS0wNSwgMC45LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMjhcIjogWzAuNjUwMDIsIDEuMTUsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEyOVwiOiBbMC45MDAwMSwgMCwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTMwXCI6IFswLCAwLjMsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTEzMVwiOiBbMWUtMDUsIDAuOSwgMCwgMCwgMC44ODg4OV0sXG4gICAgXCI5MTMyXCI6IFswLjY1MDAyLCAxLjE1LCAwLCAwLCAwLjg4ODg5XSxcbiAgICBcIjkxMzNcIjogWzAuOTAwMDEsIDAsIDAsIDAsIDAuODg4ODldLFxuICAgIFwiOTE0M1wiOiBbMC44ODUwMiwgMC45MTUsIDAsIDAsIDEuMDU1NTZdLFxuICAgIFwiMTAyMTZcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuODA1NTZdLFxuICAgIFwiMTAyMTdcIjogWzEuMjUwMDMsIDEuNzUsIDAsIDAsIDAuODA1NTZdLFxuICAgIFwiNTczNDRcIjogWy0wLjAwNDk5LCAwLjYwNSwgMCwgMCwgMS4wNTU1Nl0sXG4gICAgXCI1NzM0NVwiOiBbLTAuMDA0OTksIDAuNjA1LCAwLCAwLCAxLjA1NTU2XSxcbiAgICBcIjU3NjgwXCI6IFswLCAwLjEyLCAwLCAwLCAwLjQ1XSxcbiAgICBcIjU3NjgxXCI6IFswLCAwLjEyLCAwLCAwLCAwLjQ1XSxcbiAgICBcIjU3NjgyXCI6IFswLCAwLjEyLCAwLCAwLCAwLjQ1XSxcbiAgICBcIjU3NjgzXCI6IFswLCAwLjEyLCAwLCAwLCAwLjQ1XVxuICB9LFxuICBcIlR5cGV3cml0ZXItUmVndWxhclwiOiB7XG4gICAgXCIzMlwiOiBbMCwgMCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzNVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzZcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjM3XCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIzOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMzlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQwXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0MVwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDJcIjogWzAsIDAuNTIwODMsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQzXCI6IFstMC4wODA1NiwgMC41MzA1NSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDRcIjogWzAuMTM4ODksIDAuMTI1LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0NVwiOiBbLTAuMDgwNTYsIDAuNTMwNTUsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ2XCI6IFswLCAwLjEyNSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNDdcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjQ4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI0OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjUxXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjU3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI1OFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTlcIjogWzAuMTM4ODksIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjYwXCI6IFstMC4wNTU1NiwgMC41NTU1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjFcIjogWy0wLjE5NTQ5LCAwLjQxNTYyLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2MlwiOiBbLTAuMDU1NTYsIDAuNTU1NTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjYzXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI2N1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNjhcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjY5XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcyXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3M1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzRcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3OVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjgxXCI6IFswLjEzODg5LCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4NVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjg3XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI4OFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODlcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MVwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTJcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5NFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTVcIjogWzAuMDk1MTQsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5N1wiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiOThcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjk5XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwMVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTAyXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDNcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwNFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA1XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDZcIjogWzAuMjIyMjIsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEwN1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTA4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMDlcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExMFwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTExXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTJcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExM1wiOiBbMC4yMjIyMiwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE0XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMTVcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExNlwiOiBbMCwgMC41NTM1OCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTE3XCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMThcIjogWzAsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjExOVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTIwXCI6IFswLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjFcIjogWzAuMjIyMjIsIDAuNDMwNTYsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyMlwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTIzXCI6IFswLjA4MzMzLCAwLjY5NDQ0LCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjRcIjogWzAuMDgzMzMsIDAuNjk0NDQsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjEyNVwiOiBbMC4wODMzMywgMC42OTQ0NCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTI2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxMjdcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjE2MFwiOiBbMCwgMCwgMCwgMCwgMC41MjVdLFxuICAgIFwiMTc2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCIxODRcIjogWzAuMTk0NDUsIDAsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjMwNVwiOiBbMCwgMC40MzA1NiwgMCwgMCwgMC41MjVdLFxuICAgIFwiNTY3XCI6IFswLjIyMjIyLCAwLjQzMDU2LCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MTFcIjogWzAsIDAuNTY1OTcsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcxM1wiOiBbMCwgMC41NjU1NSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzE0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3MTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjcyOFwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzMwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI3NzBcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjc3MVwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiNzc2XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MTVcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkxNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTIwXCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MjNcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkyNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTI4XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzFcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzM1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTM0XCI6IFswLCAwLjYxMTExLCAwLCAwLCAwLjUyNV0sXG4gICAgXCI5MzZcIjogWzAsIDAuNjExMTEsIDAsIDAsIDAuNTI1XSxcbiAgICBcIjkzN1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODIxNlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODIxN1wiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiODI0MlwiOiBbMCwgMC42MTExMSwgMCwgMCwgMC41MjVdLFxuICAgIFwiOTI1MVwiOiBbMC4xMTExMSwgMC4yMTk0NCwgMCwgMCwgMC41MjVdXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZm9udE1ldHJpY3MuanNcblxuXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBtZXRyaWNzIHJlZ2FyZGluZyBmb250cyBhbmQgaW5kaXZpZHVhbCBzeW1ib2xzLiBUaGUgc2lnbWFcbiAqIGFuZCB4aSB2YXJpYWJsZXMsIGFzIHdlbGwgYXMgdGhlIG1ldHJpY01hcCBtYXAgY29udGFpbiBkYXRhIGV4dHJhY3RlZCBmcm9tXG4gKiBUZVgsIFRlWCBmb250IG1ldHJpY3MsIGFuZCB0aGUgVFRGIGZpbGVzLiBUaGVzZSBkYXRhIGFyZSB0aGVuIGV4cG9zZWQgdmlhIHRoZVxuICogYG1ldHJpY3NgIHZhcmlhYmxlIGFuZCB0aGUgZ2V0Q2hhcmFjdGVyTWV0cmljcyBmdW5jdGlvbi5cbiAqL1xuLy8gSW4gVGVYLCB0aGVyZSBhcmUgYWN0dWFsbHkgdGhyZWUgc2V0cyBvZiBkaW1lbnNpb25zLCBvbmUgZm9yIGVhY2ggb2Zcbi8vIHRleHRzdHlsZSAoc2l6ZSBpbmRleCA1IGFuZCBoaWdoZXI6ID49OXB0KSwgc2NyaXB0c3R5bGUgKHNpemUgaW5kZXggMyBhbmQgNDpcbi8vIDctOHB0KSwgYW5kIHNjcmlwdHNjcmlwdHN0eWxlIChzaXplIGluZGV4IDEgYW5kIDI6IDUtNnB0KS4gIFRoZXNlIGFyZVxuLy8gcHJvdmlkZWQgaW4gdGhlIHRoZSBhcnJheXMgYmVsb3csIGluIHRoYXQgb3JkZXIuXG4vL1xuLy8gVGhlIGZvbnQgbWV0cmljcyBhcmUgc3RvcmVkIGluIGZvbnRzIGNtc3kxMCwgY21zeTcsIGFuZCBjbXN5NSByZXNwc2VjdGl2ZWx5LlxuLy8gVGhpcyB3YXMgZGV0ZXJtaW5lZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgc2NyaXB0OlxuLy9cbi8vICAgICBsYXRleCAtaW50ZXJhY3Rpb249bm9uc3RvcG1vZGUgXFxcbi8vICAgICAnXFxkb2N1bWVudGNsYXNze2FydGljbGV9XFx1c2VwYWNrYWdle2Ftc21hdGh9XFxiZWdpbntkb2N1bWVudH0nIFxcXG4vLyAgICAgJyRhJCBcXGV4cGFuZGFmdGVyXFxzaG93XFx0aGVcXHRleHRmb250MicgXFxcbi8vICAgICAnXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFxzY3JpcHRmb250MicgXFxcbi8vICAgICAnXFxleHBhbmRhZnRlclxcc2hvd1xcdGhlXFxzY3JpcHRzY3JpcHRmb250MicgXFxcbi8vICAgICAnXFxzdG9wJ1xuLy9cbi8vIFRoZSBtZXRyaWNzIHRoZW1zZWx2ZXMgd2VyZSByZXRyZWl2ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kczpcbi8vXG4vLyAgICAgdGZ0b3BsIGNtc3kxMFxuLy8gICAgIHRmdG9wbCBjbXN5N1xuLy8gICAgIHRmdG9wbCBjbXN5NVxuLy9cbi8vIFRoZSBvdXRwdXQgb2YgZWFjaCBvZiB0aGVzZSBjb21tYW5kcyBpcyBxdWl0ZSBsZW5ndGh5LiAgVGhlIG9ubHkgcGFydCB3ZVxuLy8gY2FyZSBhYm91dCBpcyB0aGUgRk9OVERJTUVOIHNlY3Rpb24uIEVhY2ggdmFsdWUgaXMgbWVhc3VyZWQgaW4gRU1zLlxudmFyIHNpZ21hc0FuZFhpcyA9IHtcbiAgc2xhbnQ6IFswLjI1MCwgMC4yNTAsIDAuMjUwXSxcbiAgLy8gc2lnbWExXG4gIHNwYWNlOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hMlxuICBzdHJldGNoOiBbMC4wMDAsIDAuMDAwLCAwLjAwMF0sXG4gIC8vIHNpZ21hM1xuICBzaHJpbms6IFswLjAwMCwgMC4wMDAsIDAuMDAwXSxcbiAgLy8gc2lnbWE0XG4gIHhIZWlnaHQ6IFswLjQzMSwgMC40MzEsIDAuNDMxXSxcbiAgLy8gc2lnbWE1XG4gIHF1YWQ6IFsxLjAwMCwgMS4xNzEsIDEuNDcyXSxcbiAgLy8gc2lnbWE2XG4gIGV4dHJhU3BhY2U6IFswLjAwMCwgMC4wMDAsIDAuMDAwXSxcbiAgLy8gc2lnbWE3XG4gIG51bTE6IFswLjY3NywgMC43MzIsIDAuOTI1XSxcbiAgLy8gc2lnbWE4XG4gIG51bTI6IFswLjM5NCwgMC4zODQsIDAuMzg3XSxcbiAgLy8gc2lnbWE5XG4gIG51bTM6IFswLjQ0NCwgMC40NzEsIDAuNTA0XSxcbiAgLy8gc2lnbWExMFxuICBkZW5vbTE6IFswLjY4NiwgMC43NTIsIDEuMDI1XSxcbiAgLy8gc2lnbWExMVxuICBkZW5vbTI6IFswLjM0NSwgMC4zNDQsIDAuNTMyXSxcbiAgLy8gc2lnbWExMlxuICBzdXAxOiBbMC40MTMsIDAuNTAzLCAwLjUwNF0sXG4gIC8vIHNpZ21hMTNcbiAgc3VwMjogWzAuMzYzLCAwLjQzMSwgMC40MDRdLFxuICAvLyBzaWdtYTE0XG4gIHN1cDM6IFswLjI4OSwgMC4yODYsIDAuMjk0XSxcbiAgLy8gc2lnbWExNVxuICBzdWIxOiBbMC4xNTAsIDAuMTQzLCAwLjIwMF0sXG4gIC8vIHNpZ21hMTZcbiAgc3ViMjogWzAuMjQ3LCAwLjI4NiwgMC40MDBdLFxuICAvLyBzaWdtYTE3XG4gIHN1cERyb3A6IFswLjM4NiwgMC4zNTMsIDAuNDk0XSxcbiAgLy8gc2lnbWExOFxuICBzdWJEcm9wOiBbMC4wNTAsIDAuMDcxLCAwLjEwMF0sXG4gIC8vIHNpZ21hMTlcbiAgZGVsaW0xOiBbMi4zOTAsIDEuNzAwLCAxLjk4MF0sXG4gIC8vIHNpZ21hMjBcbiAgZGVsaW0yOiBbMS4wMTAsIDEuMTU3LCAxLjQyMF0sXG4gIC8vIHNpZ21hMjFcbiAgYXhpc0hlaWdodDogWzAuMjUwLCAwLjI1MCwgMC4yNTBdLFxuICAvLyBzaWdtYTIyXG4gIC8vIFRoZXNlIGZvbnQgbWV0cmljcyBhcmUgZXh0cmFjdGVkIGZyb20gVGVYIGJ5IHVzaW5nIHRmdG9wbCBvbiBjbWV4MTAudGZtO1xuICAvLyB0aGV5IGNvcnJlc3BvbmQgdG8gdGhlIGZvbnQgcGFyYW1ldGVycyBvZiB0aGUgZXh0ZW5zaW9uIGZvbnRzIChmYW1pbHkgMykuXG4gIC8vIFNlZSB0aGUgVGVYYm9vaywgcGFnZSA0NDEuIEluIEFNU1RlWCwgdGhlIGV4dGVuc2lvbiBmb250cyBzY2FsZTsgdG9cbiAgLy8gbWF0Y2ggY21leDcsIHdlJ2QgdXNlIGNtZXg3LnRmbSB2YWx1ZXMgZm9yIHNjcmlwdCBhbmQgc2NyaXB0c2NyaXB0XG4gIC8vIHZhbHVlcy5cbiAgZGVmYXVsdFJ1bGVUaGlja25lc3M6IFswLjA0LCAwLjA0OSwgMC4wNDldLFxuICAvLyB4aTg7IGNtZXg3OiAwLjA0OVxuICBiaWdPcFNwYWNpbmcxOiBbMC4xMTEsIDAuMTExLCAwLjExMV0sXG4gIC8vIHhpOVxuICBiaWdPcFNwYWNpbmcyOiBbMC4xNjYsIDAuMTY2LCAwLjE2Nl0sXG4gIC8vIHhpMTBcbiAgYmlnT3BTcGFjaW5nMzogWzAuMiwgMC4yLCAwLjJdLFxuICAvLyB4aTExXG4gIGJpZ09wU3BhY2luZzQ6IFswLjYsIDAuNjExLCAwLjYxMV0sXG4gIC8vIHhpMTI7IGNtZXg3OiAwLjYxMVxuICBiaWdPcFNwYWNpbmc1OiBbMC4xLCAwLjE0MywgMC4xNDNdLFxuICAvLyB4aTEzOyBjbWV4NzogMC4xNDNcbiAgLy8gVGhlIFxcc3FydCBydWxlIHdpZHRoIGlzIHRha2VuIGZyb20gdGhlIGhlaWdodCBvZiB0aGUgc3VyZCBjaGFyYWN0ZXIuXG4gIC8vIFNpbmNlIHdlIHVzZSB0aGUgc2FtZSBmb250IGF0IGFsbCBzaXplcywgdGhpcyB0aGlja25lc3MgZG9lc24ndCBzY2FsZS5cbiAgc3FydFJ1bGVUaGlja25lc3M6IFswLjA0LCAwLjA0LCAwLjA0XSxcbiAgLy8gVGhpcyB2YWx1ZSBkZXRlcm1pbmVzIGhvdyBsYXJnZSBhIHB0IGlzLCBmb3IgbWV0cmljcyB3aGljaCBhcmUgZGVmaW5lZFxuICAvLyBpbiB0ZXJtcyBvZiBwdHMuXG4gIC8vIFRoaXMgdmFsdWUgaXMgYWxzbyB1c2VkIGluIGthdGV4Lmxlc3M7IGlmIHlvdSBjaGFuZ2UgaXQgbWFrZSBzdXJlIHRoZVxuICAvLyB2YWx1ZXMgbWF0Y2guXG4gIHB0UGVyRW06IFsxMC4wLCAxMC4wLCAxMC4wXSxcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gYWRqYWNlbnQgYHxgIGNvbHVtbnMgaW4gYW4gYXJyYXkgZGVmaW5pdGlvbi4gRnJvbVxuICAvLyBgXFxzaG93dGhlXFxkb3VibGVydWxlc2VwYCBpbiBMYVRlWC4gRXF1YWxzIDIuMCAvIHB0UGVyRW0uXG4gIGRvdWJsZVJ1bGVTZXA6IFswLjIsIDAuMiwgMC4yXSxcbiAgLy8gVGhlIHdpZHRoIG9mIHNlcGFyYXRvciBsaW5lcyBpbiB7YXJyYXl9IGVudmlyb25tZW50cy4gRnJvbVxuICAvLyBgXFxzaG93dGhlXFxhcnJheXJ1bGV3aWR0aGAgaW4gTGFUZVguIEVxdWFscyAwLjQgLyBwdFBlckVtLlxuICBhcnJheVJ1bGVXaWR0aDogWzAuMDQsIDAuMDQsIDAuMDRdLFxuICAvLyBUd28gdmFsdWVzIGZyb20gTGFUZVggc291cmNlMmU6XG4gIGZib3hzZXA6IFswLjMsIDAuMywgMC4zXSxcbiAgLy8gICAgICAgIDMgcHQgLyBwdFBlckVtXG4gIGZib3hydWxlOiBbMC4wNCwgMC4wNCwgMC4wNF0gLy8gMC40IHB0IC8gcHRQZXJFbVxuXG59OyAvLyBUaGlzIG1hcCBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBmb250IG5hbWUgYW5kIGNoYXJhY3RlciBjb2RlIHRvIGNoYXJhY3RlclxuLy8gbWV0cmljcywgaW5jbHVkaW5nIGhlaWdodCwgZGVwdGgsIGl0YWxpYyBjb3JyZWN0aW9uLCBhbmQgc2tldyAoa2VybiBmcm9tIHRoZVxuLy8gY2hhcmFjdGVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIFxcc2tld2NoYXIpXG4vLyBUaGlzIG1hcCBpcyBnZW5lcmF0ZWQgdmlhIGBtYWtlIG1ldHJpY3NgLiBJdCBzaG91bGQgbm90IGJlIGNoYW5nZWQgbWFudWFsbHkuXG5cbiAvLyBUaGVzZSBhcmUgdmVyeSByb3VnaCBhcHByb3hpbWF0aW9ucy4gIFdlIGRlZmF1bHQgdG8gVGltZXMgTmV3IFJvbWFuIHdoaWNoXG4vLyBzaG91bGQgaGF2ZSBMYXRpbi0xIGFuZCBDeXJpbGxpYyBjaGFyYWN0ZXJzLCBidXQgbWF5IG5vdCBkZXBlbmRpbmcgb24gdGhlXG4vLyBvcGVyYXRpbmcgc3lzdGVtLiAgVGhlIG1ldHJpY3MgZG8gbm90IGFjY291bnQgZm9yIGV4dHJhIGhlaWdodCBmcm9tIHRoZVxuLy8gYWNjZW50cy4gIEluIHRoZSBjYXNlIG9mIEN5cmlsbGljIGNoYXJhY3RlcnMgd2hpY2ggaGF2ZSBib3RoIGFzY2VuZGVycyBhbmRcbi8vIGRlc2NlbmRlcnMgd2UgcHJlZmVyIGFwcHJveGltYXRpb25zIHdpdGggYXNjZW5kZXJzLCBwcmltYXJpbHkgdG8gcHJldmVudFxuLy8gdGhlIGZyYWN0aW9uIGJhciBvciByb290IGxpbmUgZnJvbSBpbnRlcnNlY3RpbmcgdGhlIGdseXBoLlxuLy8gVE9ETyhrZXZpbmIpIGFsbG93IHVuaW9uIG9mIG11bHRpcGxlIGdseXBoIG1ldHJpY3MgZm9yIGJldHRlciBhY2N1cmFjeS5cblxudmFyIGV4dHJhQ2hhcmFjdGVyTWFwID0ge1xuICAvLyBMYXRpbi0xXG4gICfDhSc6ICdBJyxcbiAgJ8OHJzogJ0MnLFxuICAnw5AnOiAnRCcsXG4gICfDnic6ICdvJyxcbiAgJ8OlJzogJ2EnLFxuICAnw6cnOiAnYycsXG4gICfDsCc6ICdkJyxcbiAgJ8O+JzogJ28nLFxuICAvLyBDeXJpbGxpY1xuICAn0JAnOiAnQScsXG4gICfQkSc6ICdCJyxcbiAgJ9CSJzogJ0InLFxuICAn0JMnOiAnRicsXG4gICfQlCc6ICdBJyxcbiAgJ9CVJzogJ0UnLFxuICAn0JYnOiAnSycsXG4gICfQlyc6ICczJyxcbiAgJ9CYJzogJ04nLFxuICAn0JknOiAnTicsXG4gICfQmic6ICdLJyxcbiAgJ9CbJzogJ04nLFxuICAn0JwnOiAnTScsXG4gICfQnSc6ICdIJyxcbiAgJ9CeJzogJ08nLFxuICAn0J8nOiAnTicsXG4gICfQoCc6ICdQJyxcbiAgJ9ChJzogJ0MnLFxuICAn0KInOiAnVCcsXG4gICfQoyc6ICd5JyxcbiAgJ9CkJzogJ08nLFxuICAn0KUnOiAnWCcsXG4gICfQpic6ICdVJyxcbiAgJ9CnJzogJ2gnLFxuICAn0KgnOiAnVycsXG4gICfQqSc6ICdXJyxcbiAgJ9CqJzogJ0InLFxuICAn0KsnOiAnWCcsXG4gICfQrCc6ICdCJyxcbiAgJ9CtJzogJzMnLFxuICAn0K4nOiAnWCcsXG4gICfQryc6ICdSJyxcbiAgJ9CwJzogJ2EnLFxuICAn0LEnOiAnYicsXG4gICfQsic6ICdhJyxcbiAgJ9CzJzogJ3InLFxuICAn0LQnOiAneScsXG4gICfQtSc6ICdlJyxcbiAgJ9C2JzogJ20nLFxuICAn0LcnOiAnZScsXG4gICfQuCc6ICduJyxcbiAgJ9C5JzogJ24nLFxuICAn0LonOiAnbicsXG4gICfQuyc6ICduJyxcbiAgJ9C8JzogJ20nLFxuICAn0L0nOiAnbicsXG4gICfQvic6ICdvJyxcbiAgJ9C/JzogJ24nLFxuICAn0YAnOiAncCcsXG4gICfRgSc6ICdjJyxcbiAgJ9GCJzogJ28nLFxuICAn0YMnOiAneScsXG4gICfRhCc6ICdiJyxcbiAgJ9GFJzogJ3gnLFxuICAn0YYnOiAnbicsXG4gICfRhyc6ICduJyxcbiAgJ9GIJzogJ3cnLFxuICAn0YknOiAndycsXG4gICfRiic6ICdhJyxcbiAgJ9GLJzogJ20nLFxuICAn0YwnOiAnYScsXG4gICfRjSc6ICdlJyxcbiAgJ9GOJzogJ20nLFxuICAn0Y8nOiAncidcbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhZGRzIG5ldyBmb250IG1ldHJpY3MgdG8gZGVmYXVsdCBtZXRyaWNNYXBcbiAqIEl0IGNhbiBhbHNvIG92ZXJyaWRlIGV4aXN0aW5nIG1ldHJpY3NcbiAqL1xuZnVuY3Rpb24gc2V0Rm9udE1ldHJpY3MoZm9udE5hbWUsIG1ldHJpY3MpIHtcbiAgZm9udE1ldHJpY3NEYXRhW2ZvbnROYW1lXSA9IG1ldHJpY3M7XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgbG9va2luZyB1cCBpbmZvcm1hdGlvbiBpbiB0aGVcbiAqIG1ldHJpY01hcCB0YWJsZS4gSXQgdGFrZXMgYSBjaGFyYWN0ZXIgYXMgYSBzdHJpbmcsIGFuZCBhIGZvbnQuXG4gKlxuICogTm90ZTogdGhlIGB3aWR0aGAgcHJvcGVydHkgbWF5IGJlIHVuZGVmaW5lZCBpZiBmb250TWV0cmljc0RhdGEuanMgd2Fzbid0XG4gKiBidWlsdCB1c2luZyBgTWFrZSBleHRlbmRlZF9tZXRyaWNzYC5cbiAqL1xuXG5mdW5jdGlvbiBnZXRDaGFyYWN0ZXJNZXRyaWNzKGNoYXJhY3RlciwgZm9udCwgbW9kZSkge1xuICBpZiAoIWZvbnRNZXRyaWNzRGF0YVtmb250XSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkZvbnQgbWV0cmljcyBub3QgZm91bmQgZm9yIGZvbnQ6IFwiICsgZm9udCArIFwiLlwiKTtcbiAgfVxuXG4gIHZhciBjaCA9IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApO1xuICB2YXIgbWV0cmljcyA9IGZvbnRNZXRyaWNzRGF0YVtmb250XVtjaF07XG5cbiAgaWYgKCFtZXRyaWNzICYmIGNoYXJhY3RlclswXSBpbiBleHRyYUNoYXJhY3Rlck1hcCkge1xuICAgIGNoID0gZXh0cmFDaGFyYWN0ZXJNYXBbY2hhcmFjdGVyWzBdXS5jaGFyQ29kZUF0KDApO1xuICAgIG1ldHJpY3MgPSBmb250TWV0cmljc0RhdGFbZm9udF1bY2hdO1xuICB9XG5cbiAgaWYgKCFtZXRyaWNzICYmIG1vZGUgPT09ICd0ZXh0Jykge1xuICAgIC8vIFdlIGRvbid0IHR5cGljYWxseSBoYXZlIGZvbnQgbWV0cmljcyBmb3IgQXNpYW4gc2NyaXB0cy5cbiAgICAvLyBCdXQgc2luY2Ugd2Ugc3VwcG9ydCB0aGVtIGluIHRleHQgbW9kZSwgd2UgbmVlZCB0byByZXR1cm5cbiAgICAvLyBzb21lIHNvcnQgb2YgbWV0cmljcy5cbiAgICAvLyBTbyBpZiB0aGUgY2hhcmFjdGVyIGlzIGluIGEgc2NyaXB0IHdlIHN1cHBvcnQgYnV0IHdlXG4gICAgLy8gZG9uJ3QgaGF2ZSBtZXRyaWNzIGZvciBpdCwganVzdCB1c2UgdGhlIG1ldHJpY3MgZm9yXG4gICAgLy8gdGhlIExhdGluIGNhcGl0YWwgbGV0dGVyIE0uIFRoaXMgaXMgY2xvc2UgZW5vdWdoIGJlY2F1c2VcbiAgICAvLyB3ZSAoY3VycmVudGx5KSBvbmx5IGNhcmUgYWJvdXQgdGhlIGhlaWdodCBvZiB0aGUgZ2xweWhcbiAgICAvLyBub3QgaXRzIHdpZHRoLlxuICAgIGlmIChzdXBwb3J0ZWRDb2RlcG9pbnQoY2gpKSB7XG4gICAgICBtZXRyaWNzID0gZm9udE1ldHJpY3NEYXRhW2ZvbnRdWzc3XTsgLy8gNzcgaXMgdGhlIGNoYXJjb2RlIGZvciAnTSdcbiAgICB9XG4gIH1cblxuICBpZiAobWV0cmljcykge1xuICAgIHJldHVybiB7XG4gICAgICBkZXB0aDogbWV0cmljc1swXSxcbiAgICAgIGhlaWdodDogbWV0cmljc1sxXSxcbiAgICAgIGl0YWxpYzogbWV0cmljc1syXSxcbiAgICAgIHNrZXc6IG1ldHJpY3NbM10sXG4gICAgICB3aWR0aDogbWV0cmljc1s0XVxuICAgIH07XG4gIH1cbn1cbnZhciBmb250TWV0cmljc0J5U2l6ZUluZGV4ID0ge307XG4vKipcbiAqIEdldCB0aGUgZm9udCBtZXRyaWNzIGZvciBhIGdpdmVuIHNpemUuXG4gKi9cblxuZnVuY3Rpb24gZ2V0R2xvYmFsTWV0cmljcyhzaXplKSB7XG4gIHZhciBzaXplSW5kZXg7XG5cbiAgaWYgKHNpemUgPj0gNSkge1xuICAgIHNpemVJbmRleCA9IDA7XG4gIH0gZWxzZSBpZiAoc2l6ZSA+PSAzKSB7XG4gICAgc2l6ZUluZGV4ID0gMTtcbiAgfSBlbHNlIHtcbiAgICBzaXplSW5kZXggPSAyO1xuICB9XG5cbiAgaWYgKCFmb250TWV0cmljc0J5U2l6ZUluZGV4W3NpemVJbmRleF0pIHtcbiAgICB2YXIgbWV0cmljcyA9IGZvbnRNZXRyaWNzQnlTaXplSW5kZXhbc2l6ZUluZGV4XSA9IHtcbiAgICAgIGNzc0VtUGVyTXU6IHNpZ21hc0FuZFhpcy5xdWFkW3NpemVJbmRleF0gLyAxOFxuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc2lnbWFzQW5kWGlzKSB7XG4gICAgICBpZiAoc2lnbWFzQW5kWGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgbWV0cmljc1trZXldID0gc2lnbWFzQW5kWGlzW2tleV1bc2l6ZUluZGV4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9udE1ldHJpY3NCeVNpemVJbmRleFtzaXplSW5kZXhdO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3ltYm9scy5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgaG9sZHMgYSBsaXN0IG9mIGFsbCBuby1hcmd1bWVudCBmdW5jdGlvbnMgYW5kIHNpbmdsZS1jaGFyYWN0ZXJcbiAqIHN5bWJvbHMgKGxpa2UgJ2EnIG9yICc7JykuXG4gKlxuICogRm9yIGVhY2ggb2YgdGhlIHN5bWJvbHMsIHRoZXJlIGFyZSB0aHJlZSBwcm9wZXJ0aWVzIHRoZXkgY2FuIGhhdmU6XG4gKiAtIGZvbnQgKHJlcXVpcmVkKTogdGhlIGZvbnQgdG8gYmUgdXNlZCBmb3IgdGhpcyBzeW1ib2wuIEVpdGhlciBcIm1haW5cIiAodGhlXG4gICAgIG5vcm1hbCBmb250KSwgb3IgXCJhbXNcIiAodGhlIGFtcyBmb250cykuXG4gKiAtIGdyb3VwIChyZXF1aXJlZCk6IHRoZSBQYXJzZU5vZGUgZ3JvdXAgdHlwZSB0aGUgc3ltYm9sIHNob3VsZCBoYXZlIChpLmUuXG4gICAgIFwidGV4dG9yZFwiLCBcIm1hdGhvcmRcIiwgZXRjKS5cbiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9LYVRlWC93aWtpL0V4YW1pbmluZy1UZVgjZ3JvdXAtdHlwZXNcbiAqIC0gcmVwbGFjZTogdGhlIGNoYXJhY3RlciB0aGF0IHRoaXMgc3ltYm9sIG9yIGZ1bmN0aW9uIHNob3VsZCBiZVxuICogICByZXBsYWNlZCB3aXRoIChpLmUuIFwiXFxwaGlcIiBoYXMgYSByZXBsYWNlIHZhbHVlIG9mIFwiXFx1MDNkNVwiLCB0aGUgcGhpXG4gKiAgIGNoYXJhY3RlciBpbiB0aGUgbWFpbiBmb250KS5cbiAqXG4gKiBUaGUgb3V0ZXJtb3N0IG1hcCBpbiB0aGUgdGFibGUgaW5kaWNhdGVzIHdoYXQgbW9kZSB0aGUgc3ltYm9scyBzaG91bGQgYmVcbiAqIGFjY2VwdGVkIGluIChlLmcuIFwibWF0aFwiIG9yIFwidGV4dFwiKS5cbiAqL1xuLy8gU29tZSBvZiB0aGVzZSBoYXZlIGEgXCItdG9rZW5cIiBzdWZmaXggc2luY2UgdGhlc2UgYXJlIGFsc28gdXNlZCBhcyBgUGFyc2VOb2RlYFxuLy8gdHlwZXMgZm9yIHJhdyB0ZXh0IHRva2VucywgYW5kIHdlIHdhbnQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggaGlnaGVyLWxldmVsXG4vLyBgUGFyc2VOb2RlYCB0eXBlcy4gVGhlc2UgYFBhcnNlTm9kZWBzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoaW4gYFBhcnNlcmAgYnlcbi8vIGxvb2tpbmcgdXAgdGhlIGBzeW1ib2xzYCBtYXAuXG52YXIgQVRPTVMgPSB7XG4gIFwiYmluXCI6IDEsXG4gIFwiY2xvc2VcIjogMSxcbiAgXCJpbm5lclwiOiAxLFxuICBcIm9wZW5cIjogMSxcbiAgXCJwdW5jdFwiOiAxLFxuICBcInJlbFwiOiAxXG59O1xudmFyIE5PTl9BVE9NUyA9IHtcbiAgXCJhY2NlbnQtdG9rZW5cIjogMSxcbiAgXCJtYXRob3JkXCI6IDEsXG4gIFwib3AtdG9rZW5cIjogMSxcbiAgXCJzcGFjaW5nXCI6IDEsXG4gIFwidGV4dG9yZFwiOiAxXG59O1xudmFyIHN5bWJvbHMgPSB7XG4gIFwibWF0aFwiOiB7fSxcbiAgXCJ0ZXh0XCI6IHt9XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3N5bWJvbHMgPSAoc3ltYm9scyk7XG4vKiogYGFjY2VwdFVuaWNvZGVDaGFyID0gdHJ1ZWAgaXMgb25seSBhcHBsaWNhYmxlIGlmIGByZXBsYWNlYCBpcyBzZXQuICovXG5cbmZ1bmN0aW9uIGRlZmluZVN5bWJvbChtb2RlLCBmb250LCBncm91cCwgcmVwbGFjZSwgbmFtZSwgYWNjZXB0VW5pY29kZUNoYXIpIHtcbiAgc3ltYm9sc1ttb2RlXVtuYW1lXSA9IHtcbiAgICBmb250OiBmb250LFxuICAgIGdyb3VwOiBncm91cCxcbiAgICByZXBsYWNlOiByZXBsYWNlXG4gIH07XG5cbiAgaWYgKGFjY2VwdFVuaWNvZGVDaGFyICYmIHJlcGxhY2UpIHtcbiAgICBzeW1ib2xzW21vZGVdW3JlcGxhY2VdID0gc3ltYm9sc1ttb2RlXVtuYW1lXTtcbiAgfVxufSAvLyBTb21lIGFiYnJldmlhdGlvbnMgZm9yIGNvbW1vbmx5IHVzZWQgc3RyaW5ncy5cbi8vIFRoaXMgaGVscHMgbWluaWZ5IHRoZSBjb2RlLCBhbmQgYWxzbyBzcG90dGluZyB0eXBvcyB1c2luZyBqc2hpbnQuXG4vLyBtb2RlczpcblxudmFyIHN5bWJvbHNfbWF0aCA9IFwibWF0aFwiO1xudmFyIHN5bWJvbHNfdGV4dCA9IFwidGV4dFwiOyAvLyBmb250czpcblxudmFyIG1haW4gPSBcIm1haW5cIjtcbnZhciBhbXMgPSBcImFtc1wiOyAvLyBncm91cHM6XG5cbnZhciBzeW1ib2xzX2FjY2VudCA9IFwiYWNjZW50LXRva2VuXCI7XG52YXIgYmluID0gXCJiaW5cIjtcbnZhciBzeW1ib2xzX2Nsb3NlID0gXCJjbG9zZVwiO1xudmFyIHN5bWJvbHNfaW5uZXIgPSBcImlubmVyXCI7XG52YXIgbWF0aG9yZCA9IFwibWF0aG9yZFwiO1xudmFyIG9wID0gXCJvcC10b2tlblwiO1xudmFyIHN5bWJvbHNfb3BlbiA9IFwib3BlblwiO1xudmFyIHB1bmN0ID0gXCJwdW5jdFwiO1xudmFyIHJlbCA9IFwicmVsXCI7XG52YXIgc3ltYm9sc19zcGFjaW5nID0gXCJzcGFjaW5nXCI7XG52YXIgc3ltYm9sc190ZXh0b3JkID0gXCJ0ZXh0b3JkXCI7IC8vIE5vdyBjb21lcyB0aGUgc3ltYm9sIHRhYmxlXG4vLyBSZWxhdGlvbiBTeW1ib2xzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjYxXCIsIFwiXFxcXGVxdWl2XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyN0FcIiwgXCJcXFxccHJlY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjdCXCIsIFwiXFxcXHN1Y2NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjIzQ1wiLCBcIlxcXFxzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBNVwiLCBcIlxcXFxwZXJwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTJBQUZcIiwgXCJcXFxccHJlY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTJBQjBcIiwgXCJcXFxcc3VjY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNDNcIiwgXCJcXFxcc2ltZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjIyM1wiLCBcIlxcXFxtaWRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2QVwiLCBcIlxcXFxsbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjZCXCIsIFwiXFxcXGdnXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNERcIiwgXCJcXFxcYXN5bXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjIyNVwiLCBcIlxcXFxwYXJhbGxlbFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkM4XCIsIFwiXFxcXGJvd3RpZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMzIzXCIsIFwiXFxcXHNtaWxlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyOTFcIiwgXCJcXFxcc3FzdWJzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjkyXCIsIFwiXFxcXHNxc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI1MFwiLCBcIlxcXFxkb3RlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMzIyXCIsIFwiXFxcXGZyb3duXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMEJcIiwgXCJcXFxcbmlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjIxRFwiLCBcIlxcXFxwcm9wdG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBMlwiLCBcIlxcXFx2ZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMkEzXCIsIFwiXFxcXGRhc2h2XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMEJcIiwgXCJcXFxcb3duc1wiKTsgLy8gUHVuY3R1YXRpb25cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcHVuY3QsIFwiLlwiLCBcIlxcXFxsZG90cFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIlxcdTIyQzVcIiwgXCJcXFxcY2RvdHBcIik7IC8vIE1pc2MgU3ltYm9sc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiI1wiLCBcIlxcXFwjXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiNcIiwgXCJcXFxcI1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCImXCIsIFwiXFxcXCZcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJlwiLCBcIlxcXFwmXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzVcIiwgXCJcXFxcYWxlcGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIwMFwiLCBcIlxcXFxmb3JhbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjEwRlwiLCBcIlxcXFxoYmFyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDNcIiwgXCJcXFxcZXhpc3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDdcIiwgXCJcXFxcbmFibGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2RFwiLCBcIlxcXFxmbGF0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMTNcIiwgXCJcXFxcZWxsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI2NkVcIiwgXCJcXFxcbmF0dXJhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjYzXCIsIFwiXFxcXGNsdWJzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMThcIiwgXCJcXFxcd3BcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2RlwiLCBcIlxcXFxzaGFycFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjYyXCIsIFwiXFxcXGRpYW1vbmRzdWl0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMUNcIiwgXCJcXFxcUmVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjY2MVwiLCBcIlxcXFxoZWFydHN1aXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjExMVwiLCBcIlxcXFxJbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNjYwXCIsIFwiXFxcXHNwYWRlc3VpdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBN1wiLCBcIlxcXFxTXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEI2XCIsIFwiXFxcXFBcIiwgdHJ1ZSk7IC8vIE1hdGggYW5kIFRleHRcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjBcIiwgXCJcXFxcZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjBcIiwgXCJcXFxcZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjBcIiwgXCJcXFxcdGV4dGRhZ2dlclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDIxXCIsIFwiXFxcXGRkYWdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAyMVwiLCBcIlxcXFxkZGFnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMjFcIiwgXCJcXFxcdGV4dGRhZ2dlcmRibFwiKTsgLy8gTGFyZ2UgRGVsaW1pdGVyc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTIzQjFcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyM0IwXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI3RUZcIiwgXCJcXFxccmdyb3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTI3RUVcIiwgXCJcXFxcbGdyb3VwXCIsIHRydWUpOyAvLyBCaW5hcnkgT3BlcmF0b3JzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjEzXCIsIFwiXFxcXG1wXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTZcIiwgXCJcXFxcb21pbnVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOEVcIiwgXCJcXFxcdXBsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5M1wiLCBcIlxcXFxzcWNhcFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE3XCIsIFwiXFxcXGFzdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjk0XCIsIFwiXFxcXHNxY3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1RUZcIiwgXCJcXFxcYmlnY2lyY1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE5XCIsIFwiXFxcXGJ1bGxldFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMDIxXCIsIFwiXFxcXGRkYWdnZXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI0MFwiLCBcIlxcXFx3clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyQTNGXCIsIFwiXFxcXGFtYWxnXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIiZcIiwgXCJcXFxcQW5kXCIpOyAvLyBmcm9tIGFtc21hdGhcbi8vIEFycm93IFN5bWJvbHNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjVcIiwgXCJcXFxcbG9uZ2xlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQwXCIsIFwiXFxcXExlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyN0Y4XCIsIFwiXFxcXExvbmdsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGNlwiLCBcIlxcXFxsb25ncmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQyXCIsIFwiXFxcXFJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGOVwiLCBcIlxcXFxMb25ncmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk0XCIsIFwiXFxcXGxlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTI3RjdcIiwgXCJcXFxcbG9uZ2xlZnRyaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxRDRcIiwgXCJcXFxcTGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGQVwiLCBcIlxcXFxMb25nbGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBNlwiLCBcIlxcXFxtYXBzdG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjdGQ1wiLCBcIlxcXFxsb25nbWFwc3RvXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTdcIiwgXCJcXFxcbmVhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUE5XCIsIFwiXFxcXGhvb2tsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFBQVwiLCBcIlxcXFxob29rcmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk4XCIsIFwiXFxcXHNlYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFCQ1wiLCBcIlxcXFxsZWZ0aGFycG9vbnVwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQzBcIiwgXCJcXFxccmlnaHRoYXJwb29udXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5OVwiLCBcIlxcXFxzd2Fycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQkRcIiwgXCJcXFxcbGVmdGhhcnBvb25kb3duXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxQzFcIiwgXCJcXFxccmlnaHRoYXJwb29uZG93blwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTk2XCIsIFwiXFxcXG53YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFDQ1wiLCBcIlxcXFxyaWdodGxlZnRoYXJwb29uc1wiLCB0cnVlKTsgLy8gQU1TIE5lZ2F0ZWQgQmluYXJ5IFJlbGF0aW9uc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjZFXCIsIFwiXFxcXG5sZXNzXCIsIHRydWUpOyAvLyBTeW1ib2wgbmFtZXMgcHJlY2VlZGVkIGJ5IFwiQFwiIGVhY2ggaGF2ZSBhIGNvcnJlc3BvbmRpbmcgbWFjcm8uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTBcIiwgXCJcXFxcQG5sZXFzbGFudFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTFcIiwgXCJcXFxcQG5sZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4N1wiLCBcIlxcXFxsbmVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2OFwiLCBcIlxcXFxsbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMENcIiwgXCJcXFxcQGx2ZXJ0bmVxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTZcIiwgXCJcXFxcbG5zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg5XCIsIFwiXFxcXGxuYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4MFwiLCBcIlxcXFxucHJlY1wiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgXFx1MjJlMCB0byBcXG5wcmVjY3VybHllcS4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFMFwiLCBcIlxcXFxucHJlY2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFOFwiLCBcIlxcXFxwcmVjbnNpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjlcIiwgXCJcXFxccHJlY25hcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjQxXCIsIFwiXFxcXG5zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDA2XCIsIFwiXFxcXEBuc2hvcnRtaWRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjI0XCIsIFwiXFxcXG5taWRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFDXCIsIFwiXFxcXG52ZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQURcIiwgXCJcXFxcbnZEYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFQVwiLCBcIlxcXFxudHJpYW5nbGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJFQ1wiLCBcIlxcXFxudHJpYW5nbGVsZWZ0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjhBXCIsIFwiXFxcXHN1YnNldG5lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMUFcIiwgXCJcXFxcQHZhcnN1YnNldG5lcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQ0JcIiwgXCJcXFxcc3Vic2V0bmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTdcIiwgXCJcXFxcQHZhcnN1YnNldG5lcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjZGXCIsIFwiXFxcXG5ndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBGXCIsIFwiXFxcXEBuZ2Vxc2xhbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBFXCIsIFwiXFxcXEBuZ2VxcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBODhcIiwgXCJcXFxcZ25lcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNjlcIiwgXCJcXFxcZ25lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDBEXCIsIFwiXFxcXEBndmVydG5lcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkU3XCIsIFwiXFxcXGduc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE4QVwiLCBcIlxcXFxnbmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODFcIiwgXCJcXFxcbnN1Y2NcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIyZTEgdG8gXFxuc3VjY2N1cmx5ZXEuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTFcIiwgXCJcXFxcbnN1Y2NlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRTlcIiwgXCJcXFxcc3VjY25zaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUJBXCIsIFwiXFxcXHN1Y2NuYXBwcm94XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMjQ2IHRvIFxcc2ltbmVxcS4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0NlwiLCBcIlxcXFxuY29uZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMDdcIiwgXCJcXFxcQG5zaG9ydHBhcmFsbGVsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIyNlwiLCBcIlxcXFxucGFyYWxsZWxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFGXCIsIFwiXFxcXG5WRGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRUJcIiwgXCJcXFxcbnRyaWFuZ2xlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkVEXCIsIFwiXFxcXG50cmlhbmdsZXJpZ2h0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE4XCIsIFwiXFxcXEBuc3Vwc2V0ZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4QlwiLCBcIlxcXFxzdXBzZXRuZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDFCXCIsIFwiXFxcXEB2YXJzdXBzZXRuZXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUNDXCIsIFwiXFxcXHN1cHNldG5lcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHVFMDE5XCIsIFwiXFxcXEB2YXJzdXBzZXRuZXFxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBRVwiLCBcIlxcXFxuVmRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQUI1XCIsIFwiXFxcXHByZWNuZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFCNlwiLCBcIlxcXFxzdWNjbmVxcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdUUwMTZcIiwgXCJcXFxcQG5zdWJzZXRlcXFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkI0XCIsIFwiXFxcXHVubGhkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCNVwiLCBcIlxcXFx1bnJoZFwiKTsgLy8gQU1TIE5lZ2F0ZWQgQXJyb3dzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUFcIiwgXCJcXFxcbmxlZnRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxOUJcIiwgXCJcXFxcbnJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUNEXCIsIFwiXFxcXG5MZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUNGXCIsIFwiXFxcXG5SaWdodGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBRVwiLCBcIlxcXFxubGVmdHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUNFXCIsIFwiXFxcXG5MZWZ0cmlnaHRhcnJvd1wiLCB0cnVlKTsgLy8gQU1TIE1pc2NcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjVCM1wiLCBcIlxcXFx2YXJ0cmlhbmdsZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMEZcIiwgXCJcXFxcaHNsYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVCRFwiLCBcIlxcXFx0cmlhbmdsZWRvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUNBXCIsIFwiXFxcXGxvemVuZ2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNEM4XCIsIFwiXFxcXGNpcmNsZWRTXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QUVcIiwgXCJcXFxcY2lyY2xlZFJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBRVwiLCBcIlxcXFxjaXJjbGVkUlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjFcIiwgXCJcXFxcbWVhc3VyZWRhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDRcIiwgXCJcXFxcbmV4aXN0c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMjdcIiwgXCJcXFxcbWhvXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjEzMlwiLCBcIlxcXFxGaW52XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjE0MVwiLCBcIlxcXFxHYW1lXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAzNVwiLCBcIlxcXFxiYWNrcHJpbWVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUIyXCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUJDXCIsIFwiXFxcXGJsYWNrdHJpYW5nbGVkb3duXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVBMFwiLCBcIlxcXFxibGFja3NxdWFyZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI5RUJcIiwgXCJcXFxcYmxhY2tsb3plbmdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjYwNVwiLCBcIlxcXFxiaWdzdGFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIyMlwiLCBcIlxcXFxzcGhlcmljYWxhbmdsZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDFcIiwgXCJcXFxcY29tcGxlbWVudFwiLCB0cnVlKTsgLy8gdW5pY29kZS1tYXRoIG1hcHMgVStGMCAow7ApIHRvIFxcbWF0aGV0aC4gV2UgbWFwIHRvIEFNUyBmdW5jdGlvbiBcXGV0aFxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhGMFwiLCBcIlxcXFxldGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNTcxXCIsIFwiXFxcXGRpYWd1cFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1NzJcIiwgXCJcXFxcZGlhZ2Rvd25cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNUExXCIsIFwiXFxcXHNxdWFyZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QTFcIiwgXCJcXFxcQm94XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjVDQVwiLCBcIlxcXFxEaWFtb25kXCIpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBVK0E1IHRvIFxcbWF0aHllbi4gV2UgbWFwIHRvIEFNUyBmdW5jdGlvbiBcXHllblxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBNVwiLCBcIlxcXFx5ZW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhBNVwiLCBcIlxcXFx5ZW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzEzXCIsIFwiXFxcXGNoZWNrbWFya1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI3MTNcIiwgXCJcXFxcY2hlY2ttYXJrXCIpOyAvLyBBTVMgSGVicmV3XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzZcIiwgXCJcXFxcYmV0aFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIxMzhcIiwgXCJcXFxcZGFsZXRoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjEzN1wiLCBcIlxcXFxnaW1lbFwiLCB0cnVlKTsgLy8gQU1TIEdyZWVrXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzRERcIiwgXCJcXFxcZGlnYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzRjBcIiwgXCJcXFxcdmFya2FwcGFcIik7IC8vIEFNUyBEZWxpbWl0ZXJzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc19vcGVuLCBcIlxcdTI1MENcIiwgXCJcXFxcdWxjb3JuZXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjUxMFwiLCBcIlxcXFx1cmNvcm5lclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc19vcGVuLCBcIlxcdTI1MTRcIiwgXCJcXFxcbGxjb3JuZXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfY2xvc2UsIFwiXFx1MjUxOFwiLCBcIlxcXFxscmNvcm5lclwiLCB0cnVlKTsgLy8gQU1TIEJpbmFyeSBSZWxhdGlvbnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI2NlwiLCBcIlxcXFxsZXFxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE3RFwiLCBcIlxcXFxsZXFzbGFudFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOTVcIiwgXCJcXFxcZXFzbGFudGxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjcyXCIsIFwiXFxcXGxlc3NzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg1XCIsIFwiXFxcXGxlc3NhcHByb3hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjRBXCIsIFwiXFxcXGFwcHJveGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJENlwiLCBcIlxcXFxsZXNzZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEOFwiLCBcIlxcXFxsbGxcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjc2XCIsIFwiXFxcXGxlc3NndHJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkRBXCIsIFwiXFxcXGxlc3NlcWd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOEJcIiwgXCJcXFxcbGVzc2VxcWd0clwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTFcIiwgXCJcXFxcZG90ZXFkb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjUzXCIsIFwiXFxcXHJpc2luZ2RvdHNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTJcIiwgXCJcXFxcZmFsbGluZ2RvdHNlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyM0RcIiwgXCJcXFxcYmFja3NpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQ0RcIiwgXCJcXFxcYmFja3NpbWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDNVwiLCBcIlxcXFxzdWJzZXRlcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQwXCIsIFwiXFxcXFN1YnNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyOEZcIiwgXCJcXFxcc3FzdWJzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdDXCIsIFwiXFxcXHByZWNjdXJseWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJERVwiLCBcIlxcXFxjdXJseWVxcHJlY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyN0VcIiwgXCJcXFxccHJlY3NpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjdcIiwgXCJcXFxccHJlY2FwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjJcIiwgXCJcXFxcdmFydHJpYW5nbGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJCNFwiLCBcIlxcXFx0cmlhbmdsZWxlZnRlcVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQThcIiwgXCJcXFxcdkRhc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkFBXCIsIFwiXFxcXFZ2ZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIzMjNcIiwgXCJcXFxcc21hbGxzbWlsZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIzMjJcIiwgXCJcXFxcc21hbGxmcm93blwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNEZcIiwgXCJcXFxcYnVtcGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI0RVwiLCBcIlxcXFxCdW1wZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjY3XCIsIFwiXFxcXGdlcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTdFXCIsIFwiXFxcXGdlcXNsYW50XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkE5NlwiLCBcIlxcXFxlcXNsYW50Z3RyXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3M1wiLCBcIlxcXFxndHJzaW1cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyQTg2XCIsIFwiXFxcXGd0cmFwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDdcIiwgXCJcXFxcZ3RyZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEOVwiLCBcIlxcXFxnZ2dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjc3XCIsIFwiXFxcXGd0cmxlc3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkRCXCIsIFwiXFxcXGd0cmVxbGVzc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBOENcIiwgXCJcXFxcZ3RyZXFxbGVzc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTZcIiwgXCJcXFxcZXFjaXJjXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI1N1wiLCBcIlxcXFxjaXJjZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjVDXCIsIFwiXFxcXHRyaWFuZ2xlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyM0NcIiwgXCJcXFxcdGhpY2tzaW1cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjQ4XCIsIFwiXFxcXHRoaWNrYXBwcm94XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MkFDNlwiLCBcIlxcXFxzdXBzZXRlcXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQxXCIsIFwiXFxcXFN1cHNldFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyOTBcIiwgXCJcXFxcc3FzdXBzZXRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjdEXCIsIFwiXFxcXHN1Y2NjdXJseWVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJERlwiLCBcIlxcXFxjdXJseWVxc3VjY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyN0ZcIiwgXCJcXFxcc3VjY3NpbVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTJBQjhcIiwgXCJcXFxcc3VjY2FwcHJveFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjNcIiwgXCJcXFxcdmFydHJpYW5nbGVyaWdodFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjVcIiwgXCJcXFxcdHJpYW5nbGVyaWdodGVxXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJBOVwiLCBcIlxcXFxWZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMjNcIiwgXCJcXFxcc2hvcnRtaWRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjI1XCIsIFwiXFxcXHNob3J0cGFyYWxsZWxcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjZDXCIsIFwiXFxcXGJldHdlZW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMkQ0XCIsIFwiXFxcXHBpdGNoZm9ya1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMURcIiwgXCJcXFxcdmFycHJvcHRvXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjVDMFwiLCBcIlxcXFxibGFja3RyaWFuZ2xlbGVmdFwiKTsgLy8gdW5pY29kZS1tYXRoIHNheXMgdGhhdCBcXHRoZXJlZm9yZSBpcyBhIG1hdGhvcmQgYXRvbS5cbi8vIFdlIGtlcHQgdGhlIGFtc3N5bWIgYXRvbSB0eXBlLCB3aGljaCBpcyByZWwuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMzRcIiwgXCJcXFxcdGhlcmVmb3JlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjIwRFwiLCBcIlxcXFxiYWNrZXBzaWxvblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTI1QjZcIiwgXCJcXFxcYmxhY2t0cmlhbmdsZXJpZ2h0XCIpOyAvLyB1bmljb2RlLW1hdGggc2F5cyB0aGF0IFxcYmVjYXVzZSBpcyBhIG1hdGhvcmQgYXRvbS5cbi8vIFdlIGtlcHQgdGhlIGFtc3N5bWIgYXRvbSB0eXBlLCB3aGljaCBpcyByZWwuXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyMzVcIiwgXCJcXFxcYmVjYXVzZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyRDhcIiwgXCJcXFxcbGxsZXNzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjJEOVwiLCBcIlxcXFxnZ2d0clwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQjJcIiwgXCJcXFxcbGhkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCM1wiLCBcIlxcXFxyaGRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMjQyXCIsIFwiXFxcXGVxc2ltXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyQzhcIiwgXCJcXFxcSm9pblwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyNTFcIiwgXCJcXFxcRG90ZXFcIiwgdHJ1ZSk7IC8vIEFNUyBCaW5hcnkgT3BlcmF0b3JzXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyMTRcIiwgXCJcXFxcZG90cGx1c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyMTZcIiwgXCJcXFxcc21hbGxzZXRtaW51c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDJcIiwgXCJcXFxcQ2FwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJEM1wiLCBcIlxcXFxDdXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyQTVFXCIsIFwiXFxcXGRvdWJsZWJhcndlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjI5RlwiLCBcIlxcXFxib3htaW51c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUVcIiwgXCJcXFxcYm94cGx1c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQzdcIiwgXCJcXFxcZGl2aWRlb250aW1lc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQzlcIiwgXCJcXFxcbHRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQVwiLCBcIlxcXFxydGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkNCXCIsIFwiXFxcXGxlZnR0aHJlZXRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJDQ1wiLCBcIlxcXFxyaWdodHRocmVldGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkNGXCIsIFwiXFxcXGN1cmx5d2VkZ2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkNFXCIsIFwiXFxcXGN1cmx5dmVlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjI5RFwiLCBcIlxcXFxjaXJjbGVkZGFzaFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyOUJcIiwgXCJcXFxcY2lyY2xlZGFzdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQzVcIiwgXCJcXFxcY2VudGVyZG90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQVwiLCBcIlxcXFxpbnRlcmNhbFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyRDJcIiwgXCJcXFxcZG91YmxlY2FwXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJEM1wiLCBcIlxcXFxkb3VibGVjdXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkEwXCIsIFwiXFxcXGJveHRpbWVzXCIsIHRydWUpOyAvLyBBTVMgQXJyb3dzXG4vLyBOb3RlOiB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWUyIHRvIHRoZWlyIG93biBmdW5jdGlvbiBcXHJpZ2h0ZGFzaGFycm93LlxuLy8gV2UnbGwgbWFwIGl0IHRvIEFNUyBmdW5jdGlvbiBcXGRhc2hyaWdodGFycm93LiBJdCBwcm9kdWNlcyB0aGUgc2FtZSBhdG9tLlxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUUyXCIsIFwiXFxcXGRhc2hyaWdodGFycm93XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWUwIHRvIFxcbGVmdGRhc2hhcnJvdy4gV2UnbGwgdXNlIHRoZSBBTVMgc3lub255bS5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFFMFwiLCBcIlxcXFxkYXNobGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDN1wiLCBcIlxcXFxsZWZ0bGVmdGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQzZcIiwgXCJcXFxcbGVmdHJpZ2h0YXJyb3dzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFEQVwiLCBcIlxcXFxMbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjE5RVwiLCBcIlxcXFx0d29oZWFkbGVmdGFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBMlwiLCBcIlxcXFxsZWZ0YXJyb3d0YWlsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBQlwiLCBcIlxcXFxsb29wYXJyb3dsZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDQlwiLCBcIlxcXFxsZWZ0cmlnaHRoYXJwb29uc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjZcIiwgXCJcXFxcY3VydmVhcnJvd2xlZnRcIiwgdHJ1ZSk7IC8vIHVuaWNvZGUtbWF0aCBtYXBzIFxcdTIxYmEgdG8gXFxhY3dvcGVuY2lyY2xlYXJyb3cuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQkFcIiwgXCJcXFxcY2lyY2xlYXJyb3dsZWZ0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFCMFwiLCBcIlxcXFxMc2hcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM4XCIsIFwiXFxcXHVwdXBhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJGXCIsIFwiXFxcXHVwaGFycG9vbmxlZnRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUMzXCIsIFwiXFxcXGRvd25oYXJwb29ubGVmdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyQjhcIiwgXCJcXFxcbXVsdGltYXBcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUFEXCIsIFwiXFxcXGxlZnRyaWdodHNxdWlnYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM5XCIsIFwiXFxcXHJpZ2h0cmlnaHRhcnJvd3NcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUM0XCIsIFwiXFxcXHJpZ2h0bGVmdGFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQTBcIiwgXCJcXFxcdHdvaGVhZHJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUEzXCIsIFwiXFxcXHJpZ2h0YXJyb3d0YWlsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFBQ1wiLCBcIlxcXFxsb29wYXJyb3dyaWdodFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjdcIiwgXCJcXFxcY3VydmVhcnJvd3JpZ2h0XCIsIHRydWUpOyAvLyB1bmljb2RlLW1hdGggbWFwcyBcXHUyMWJiIHRvIFxcY3dvcGVuY2lyY2xlYXJyb3cuIFdlJ2xsIHVzZSB0aGUgQU1TIHN5bm9ueW0uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQkJcIiwgXCJcXFxcY2lyY2xlYXJyb3dyaWdodFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQjFcIiwgXCJcXFxcUnNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjFDQVwiLCBcIlxcXFxkb3duZG93bmFycm93c1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxQkVcIiwgXCJcXFxcdXBoYXJwb29ucmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUMyXCIsIFwiXFxcXGRvd25oYXJwb29ucmlnaHRcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUREXCIsIFwiXFxcXHJpZ2h0c3F1aWdhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxRERcIiwgXCJcXFxcbGVhZHN0b1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIxREJcIiwgXCJcXFxcUnJpZ2h0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHJlbCwgXCJcXHUyMUJFXCIsIFwiXFxcXHJlc3RyaWN0aW9uXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMThcIiwgXCJgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiRcIiwgXCJcXFxcJFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIkXCIsIFwiXFxcXCRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiJFwiLCBcIlxcXFx0ZXh0ZG9sbGFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIiVcIiwgXCJcXFxcJVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCIlXCIsIFwiXFxcXCVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiX1wiLCBcIlxcXFxfXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl9cIiwgXCJcXFxcX1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJfXCIsIFwiXFxcXHRleHR1bmRlcnNjb3JlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjBcIiwgXCJcXFxcYW5nbGVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIxRVwiLCBcIlxcXFxpbmZ0eVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDMyXCIsIFwiXFxcXHByaW1lXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTI1QjNcIiwgXCJcXFxcdHJpYW5nbGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5M1wiLCBcIlxcXFxHYW1tYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMzk0XCIsIFwiXFxcXERlbHRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzOThcIiwgXCJcXFxcVGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5QlwiLCBcIlxcXFxMYW1iZGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDM5RVwiLCBcIlxcXFxYaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwM0EwXCIsIFwiXFxcXFBpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTNcIiwgXCJcXFxcU2lnbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDNBNVwiLCBcIlxcXFxVcHNpbG9uXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTZcIiwgXCJcXFxcUGhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQThcIiwgXCJcXFxcUHNpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAzQTlcIiwgXCJcXFxcT21lZ2FcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiQVwiLCBcIlxcdTAzOTFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiQlwiLCBcIlxcdTAzOTJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiRVwiLCBcIlxcdTAzOTVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiWlwiLCBcIlxcdTAzOTZcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiSFwiLCBcIlxcdTAzOTdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiSVwiLCBcIlxcdTAzOTlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiS1wiLCBcIlxcdTAzOUFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiTVwiLCBcIlxcdTAzOUNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiTlwiLCBcIlxcdTAzOURcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiT1wiLCBcIlxcdTAzOUZcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiUFwiLCBcIlxcdTAzQTFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiVFwiLCBcIlxcdTAzQTRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiWFwiLCBcIlxcdTAzQTdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QUNcIiwgXCJcXFxcbmVnXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEFDXCIsIFwiXFxcXGxub3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjJBNFwiLCBcIlxcXFx0b3BcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjJBNVwiLCBcIlxcXFxib3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIwNVwiLCBcIlxcXFxlbXB0eXNldFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMDVcIiwgXCJcXFxcdmFybm90aGluZ1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCMVwiLCBcIlxcXFxhbHBoYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCMlwiLCBcIlxcXFxiZXRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0IzXCIsIFwiXFxcXGdhbW1hXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0I0XCIsIFwiXFxcXGRlbHRhXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0Y1XCIsIFwiXFxcXGVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjZcIiwgXCJcXFxcemV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCN1wiLCBcIlxcXFxldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjhcIiwgXCJcXFxcdGhldGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjlcIiwgXCJcXFxcaW90YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCQVwiLCBcIlxcXFxrYXBwYVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNCQlwiLCBcIlxcXFxsYW1iZGFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkNcIiwgXCJcXFxcbXVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkRcIiwgXCJcXFxcbnVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkVcIiwgXCJcXFxceGlcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQkZcIiwgXCJcXFxcb21pY3JvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDMFwiLCBcIlxcXFxwaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDMVwiLCBcIlxcXFxyaG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzNcIiwgXCJcXFxcc2lnbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzRcIiwgXCJcXFxcdGF1XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M1XCIsIFwiXFxcXHVwc2lsb25cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzRDVcIiwgXCJcXFxccGhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHUwM0M3XCIsIFwiXFxcXGNoaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNDOFwiLCBcIlxcXFxwc2lcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzlcIiwgXCJcXFxcb21lZ2FcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQjVcIiwgXCJcXFxcdmFyZXBzaWxvblwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNEMVwiLCBcIlxcXFx2YXJ0aGV0YVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNENlwiLCBcIlxcXFx2YXJwaVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiXFx1MDNGMVwiLCBcIlxcXFx2YXJyaG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzJcIiwgXCJcXFxcdmFyc2lnbWFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAzQzZcIiwgXCJcXFxcdmFycGhpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMTdcIiwgXCIqXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIitcIiwgXCIrXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMTJcIiwgXCItXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyQzVcIiwgXCJcXFxcY2RvdFwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMjE4XCIsIFwiXFxcXGNpcmNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx4RjdcIiwgXCJcXFxcZGl2XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxceEIxXCIsIFwiXFxcXHBtXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxceEQ3XCIsIFwiXFxcXHRpbWVzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjlcIiwgXCJcXFxcY2FwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMkFcIiwgXCJcXFxcY3VwXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMTZcIiwgXCJcXFxcc2V0bWludXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIyN1wiLCBcIlxcXFxsYW5kXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjhcIiwgXCJcXFxcbG9yXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyMjdcIiwgXCJcXFxcd2VkZ2VcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjIyOFwiLCBcIlxcXFx2ZWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIxQVwiLCBcIlxcXFxzdXJkXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIihcIiwgXCIoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIltcIiwgXCJbXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTI3RThcIiwgXCJcXFxcbGFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTIyMjNcIiwgXCJcXFxcbHZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiXFx1MjIyNVwiLCBcIlxcXFxsVmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiKVwiLCBcIilcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIl1cIiwgXCJdXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCI/XCIsIFwiP1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiIVwiLCBcIiFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIlxcdTI3RTlcIiwgXCJcXFxccmFuZ2xlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyMjIzXCIsIFwiXFxcXHJ2ZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyMjI1XCIsIFwiXFxcXHJWZXJ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIj1cIiwgXCI9XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIjxcIiwgXCI8XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIj5cIiwgXCI+XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIjpcIiwgXCI6XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNDhcIiwgXCJcXFxcYXBwcm94XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNDVcIiwgXCJcXFxcY29uZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjY1XCIsIFwiXFxcXGdlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyNjVcIiwgXCJcXFxcZ2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTBcIiwgXCJcXFxcZ2V0c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI+XCIsIFwiXFxcXGd0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyMDhcIiwgXCJcXFxcaW5cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1RTAyMFwiLCBcIlxcXFxAbm90XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODJcIiwgXCJcXFxcc3Vic2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODNcIiwgXCJcXFxcc3Vwc2V0XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIyODZcIiwgXCJcXFxcc3Vic2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI4N1wiLCBcIlxcXFxzdXBzZXRlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgcmVsLCBcIlxcdTIyODhcIiwgXCJcXFxcbnN1YnNldGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI4OVwiLCBcIlxcXFxuc3Vwc2V0ZXFcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjJBOFwiLCBcIlxcXFxtb2RlbHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5MFwiLCBcIlxcXFxsZWZ0YXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjI2NFwiLCBcIlxcXFxsZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMjY0XCIsIFwiXFxcXGxlcVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCI8XCIsIFwiXFxcXGx0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTJcIiwgXCJcXFxccmlnaHRhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMTkyXCIsIFwiXFxcXHRvXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MVwiLCBcIlxcXFxuZ2VxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCByZWwsIFwiXFx1MjI3MFwiLCBcIlxcXFxubGVxXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCJ+XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXHNwYWNlXCIpOyAvLyBSZWY6IExhVGVYIFNvdXJjZSAyZTogXFxEZWNsYXJlUm9idXN0Q29tbWFuZHtcXG5vYnJlYWtzcGFjZX17JVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCJcXFxcbm9icmVha3NwYWNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXCBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCJ+XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXHNwYWNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19zcGFjaW5nLCBcIlxceEEwXCIsIFwiXFxcXG5vYnJlYWtzcGFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgbnVsbCwgXCJcXFxcbm9icmVha1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgbnVsbCwgXCJcXFxcYWxsb3dicmVha1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHB1bmN0LCBcIixcIiwgXCIsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcHVuY3QsIFwiO1wiLCBcIjtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIGJpbiwgXCJcXHUyMkJDXCIsIFwiXFxcXGJhcndlZGdlXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjJCQlwiLCBcIlxcXFx2ZWViYXJcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5OVwiLCBcIlxcXFxvZG90XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOTVcIiwgXCJcXFxcb3BsdXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjI5N1wiLCBcIlxcXFxvdGltZXNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIwMlwiLCBcIlxcXFxwYXJ0aWFsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTIyOThcIiwgXCJcXFxcb3NsYXNoXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBiaW4sIFwiXFx1MjI5QVwiLCBcIlxcXFxjaXJjbGVkY2lyY1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgYmluLCBcIlxcdTIyQTFcIiwgXCJcXFxcYm94ZG90XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1QjNcIiwgXCJcXFxcYmlndHJpYW5nbGV1cFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyNUJEXCIsIFwiXFxcXGJpZ3RyaWFuZ2xlZG93blwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMDIwXCIsIFwiXFxcXGRhZ2dlclwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIGJpbiwgXCJcXHUyMkM0XCIsIFwiXFxcXGRpYW1vbmRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBiaW4sIFwiXFx1MjJDNlwiLCBcIlxcXFxzdGFyXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1QzNcIiwgXCJcXFxcdHJpYW5nbGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgYmluLCBcIlxcdTI1QjlcIiwgXCJcXFxcdHJpYW5nbGVyaWdodFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJ7XCIsIFwiXFxcXHtcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwie1wiLCBcIlxcXFx7XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIntcIiwgXCJcXFxcdGV4dGJyYWNlbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwifVwiLCBcIlxcXFx9XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIn1cIiwgXCJcXFxcfVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ9XCIsIFwiXFxcXHRleHRicmFjZXJpZ2h0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIntcIiwgXCJcXFxcbGJyYWNlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJ9XCIsIFwiXFxcXHJicmFjZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJbXCIsIFwiXFxcXGxicmFja1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJbXCIsIFwiXFxcXGxicmFja1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfY2xvc2UsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX29wZW4sIFwiKFwiLCBcIlxcXFxscGFyZW5cIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2Nsb3NlLCBcIilcIiwgXCJcXFxccnBhcmVuXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIjxcIiwgXCJcXFxcdGV4dGxlc3NcIik7IC8vIGluIFQxIGZvbnRlbmNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIj5cIiwgXCJcXFxcdGV4dGdyZWF0ZXJcIik7IC8vIGluIFQxIGZvbnRlbmNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19vcGVuLCBcIlxcdTIzMEFcIiwgXCJcXFxcbGZsb29yXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyMzBCXCIsIFwiXFxcXHJmbG9vclwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfb3BlbiwgXCJcXHUyMzA4XCIsIFwiXFxcXGxjZWlsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19jbG9zZSwgXCJcXHUyMzA5XCIsIFwiXFxcXHJjZWlsXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcXFxcIiwgXCJcXFxcYmFja3NsYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjNcIiwgXCJ8XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjNcIiwgXCJcXFxcdmVydFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJ8XCIsIFwiXFxcXHRleHRiYXJcIik7IC8vIGluIFQxIGZvbnRlbmNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyMjVcIiwgXCJcXFxcfFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMjI1XCIsIFwiXFxcXFZlcnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjIyNVwiLCBcIlxcXFx0ZXh0YmFyZGJsXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIn5cIiwgXCJcXFxcdGV4dGFzY2lpdGlsZGVcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFxcXFwiLCBcIlxcXFx0ZXh0YmFja3NsYXNoXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIl5cIiwgXCJcXFxcdGV4dGFzY2lpY2lyY3VtXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgcmVsLCBcIlxcdTIxOTFcIiwgXCJcXFxcdXBhcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQxXCIsIFwiXFxcXFVwYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5M1wiLCBcIlxcXFxkb3duYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjFEM1wiLCBcIlxcXFxEb3duYXJyb3dcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCByZWwsIFwiXFx1MjE5NVwiLCBcIlxcXFx1cGRvd25hcnJvd1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHJlbCwgXCJcXHUyMUQ1XCIsIFwiXFxcXFVwZG93bmFycm93XCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIxMFwiLCBcIlxcXFxjb3Byb2RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMxXCIsIFwiXFxcXGJpZ3ZlZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyQzBcIiwgXCJcXFxcYmlnd2VkZ2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyQTA0XCIsIFwiXFxcXGJpZ3VwbHVzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjJDMlwiLCBcIlxcXFxiaWdjYXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMkMzXCIsIFwiXFxcXGJpZ2N1cFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkJcIiwgXCJcXFxcaW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MjIyQlwiLCBcIlxcXFxpbnRvcFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkNcIiwgXCJcXFxcaWludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkRcIiwgXCJcXFxcaWlpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjBGXCIsIFwiXFxcXHByb2RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjExXCIsIFwiXFxcXHN1bVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDJcIiwgXCJcXFxcYmlnb3RpbWVzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgb3AsIFwiXFx1MkEwMVwiLCBcIlxcXFxiaWdvcGx1c1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDBcIiwgXCJcXFxcYmlnb2RvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkVcIiwgXCJcXFxcb2ludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTIyMkZcIiwgXCJcXFxcb2lpbnRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjMwXCIsIFwiXFxcXG9paWludFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG9wLCBcIlxcdTJBMDZcIiwgXCJcXFxcYmlnc3FjdXBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBvcCwgXCJcXHUyMjJCXCIsIFwiXFxcXHNtYWxsaW50XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMDI2XCIsIFwiXFxcXHRleHRlbGxpcHNpc1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfaW5uZXIsIFwiXFx1MjAyNlwiLCBcIlxcXFxtYXRoZWxsaXBzaXNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbGRvdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIwMjZcIiwgXCJcXFxcbGRvdHNcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2lubmVyLCBcIlxcdTIyRUZcIiwgXCJcXFxcQGNkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19pbm5lciwgXCJcXHUyMkYxXCIsIFwiXFxcXGRkb3RzXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIyRUVcIiwgXCJcXFxcdmFydmRvdHNcIik7IC8vIFxcdmRvdHMgaXMgYSBtYWNyb1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkNBXCIsIFwiXFxcXGFjdXRlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQlwiLCBcIlxcXFxncmF2ZVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxceEE4XCIsIFwiXFxcXGRkb3RcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJ+XCIsIFwiXFxcXHRpbGRlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDOVwiLCBcIlxcXFxiYXJcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkQ4XCIsIFwiXFxcXGJyZXZlXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDN1wiLCBcIlxcXFxjaGVja1wiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIl5cIiwgXCJcXFxcaGF0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MjBEN1wiLCBcIlxcXFx2ZWNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkQ5XCIsIFwiXFxcXGRvdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyREFcIiwgXCJcXFxcbWF0aHJpbmdcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAxMzFcIiwgXCJcXFxcaW1hdGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxcdTAyMzdcIiwgXCJcXFxcam1hdGhcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDEzMVwiLCBcIlxcXFxpXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTAyMzdcIiwgXCJcXFxcalwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhERlwiLCBcIlxcXFxzc1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhFNlwiLCBcIlxcXFxhZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhFNlwiLCBcIlxcXFxhZVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUwMTUzXCIsIFwiXFxcXG9lXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxceEY4XCIsIFwiXFxcXG9cIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QzZcIiwgXCJcXFxcQUVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MDE1MlwiLCBcIlxcXFxPRVwiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhEOFwiLCBcIlxcXFxPXCIsIHRydWUpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJDQVwiLCBcIlxcXFwnXCIpOyAvLyBhY3V0ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkNCXCIsIFwiXFxcXGBcIik7IC8vIGdyYXZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzZcIiwgXCJcXFxcXlwiKTsgLy8gY2lyY3VtZmxleFxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkRDXCIsIFwiXFxcXH5cIik7IC8vIHRpbGRlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzlcIiwgXCJcXFxcPVwiKTsgLy8gbWFjcm9uXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyRDhcIiwgXCJcXFxcdVwiKTsgLy8gYnJldmVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEOVwiLCBcIlxcXFwuXCIpOyAvLyBkb3QgYWJvdmVcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx1MDJEQVwiLCBcIlxcXFxyXCIpOyAvLyByaW5nIGFib3ZlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfYWNjZW50LCBcIlxcdTAyQzdcIiwgXCJcXFxcdlwiKTsgLy8gY2Fyb25cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc19hY2NlbnQsIFwiXFx4QThcIiwgJ1xcXFxcIicpOyAvLyBkaWFyZXNpc1xuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUwMkREXCIsIFwiXFxcXEhcIik7IC8vIGRvdWJsZSBhY3V0ZVxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX2FjY2VudCwgXCJcXHUyNUVGXCIsIFwiXFxcXHRleHRjaXJjbGVkXCIpOyAvLyBcXGJpZ2NpcmMgZ2x5cGhcbi8vIFRoZXNlIGxpZ2F0dXJlcyBhcmUgZGV0ZWN0ZWQgYW5kIGNyZWF0ZWQgaW4gUGFyc2VyLmpzJ3MgYGZvcm1MaWdhdHVyZXNgLlxuXG52YXIgbGlnYXR1cmVzID0ge1xuICBcIi0tXCI6IHRydWUsXG4gIFwiLS0tXCI6IHRydWUsXG4gIFwiYGBcIjogdHJ1ZSxcbiAgXCInJ1wiOiB0cnVlXG59O1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTNcIiwgXCItLVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDEzXCIsIFwiXFxcXHRleHRlbmRhc2hcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxNFwiLCBcIi0tLVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE0XCIsIFwiXFxcXHRleHRlbWRhc2hcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxOFwiLCBcImBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxOFwiLCBcIlxcXFx0ZXh0cXVvdGVsZWZ0XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTlcIiwgXCInXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTlcIiwgXCJcXFxcdGV4dHF1b3RlcmlnaHRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxQ1wiLCBcImBgXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMUNcIiwgXCJcXFxcdGV4dHF1b3RlZGJsbGVmdFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDFEXCIsIFwiJydcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxRFwiLCBcIlxcXFx0ZXh0cXVvdGVkYmxyaWdodFwiKTsgLy8gIFxcZGVncmVlIGZyb20gZ2Vuc3ltYiBwYWNrYWdlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhCMFwiLCBcIlxcXFxkZWdyZWVcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx4QjBcIiwgXCJcXFxcZGVncmVlXCIpOyAvLyBcXHRleHRkZWdyZWUgZnJvbSBpbnB1dGVuYyBwYWNrYWdlXG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHhCMFwiLCBcIlxcXFx0ZXh0ZGVncmVlXCIsIHRydWUpOyAvLyBUT0RPOiBJbiBMYVRlWCwgXFxwb3VuZHMgY2FuIGdlbmVyYXRlIGEgZGlmZmVyZW50IGNoYXJhY3RlciBpbiB0ZXh0IGFuZCBtYXRoXG4vLyBtb2RlLCBidXQgYW1vbmcgb3VyIGZvbnRzLCBvbmx5IE1haW4tSXRhbGljIGRlZmluZXMgdGhpcyBjaGFyYWN0ZXIgXCIxNjNcIi5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJcXHhBM1wiLCBcIlxcXFxwb3VuZHNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBcIlxceEEzXCIsIFwiXFxcXG1hdGhzdGVybGluZ1wiLCB0cnVlKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIG1hdGhvcmQsIFwiXFx4QTNcIiwgXCJcXFxccG91bmRzXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgbWF0aG9yZCwgXCJcXHhBM1wiLCBcIlxcXFx0ZXh0c3RlcmxpbmdcIiwgdHJ1ZSk7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzIwXCIsIFwiXFxcXG1hbHRlc2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyNzIwXCIsIFwiXFxcXG1hbHRlc2VcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCJcXFxcIFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfc3BhY2luZywgXCJcXHhBMFwiLCBcIiBcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3NwYWNpbmcsIFwiXFx4QTBcIiwgXCJ+XCIpOyAvLyBUaGVyZSBhcmUgbG90cyBvZiBzeW1ib2xzIHdoaWNoIGFyZSB0aGUgc2FtZSwgc28gd2UgYWRkIHRoZW0gaW4gYWZ0ZXJ3YXJkcy5cbi8vIEFsbCBvZiB0aGVzZSBhcmUgdGV4dG9yZHMgaW4gbWF0aCBtb2RlXG5cbnZhciBtYXRoVGV4dFN5bWJvbHMgPSBcIjAxMjM0NTY3ODkvQC5cXFwiXCI7XG5cbmZvciAodmFyIHN5bWJvbHNfaSA9IDA7IHN5bWJvbHNfaSA8IG1hdGhUZXh0U3ltYm9scy5sZW5ndGg7IHN5bWJvbHNfaSsrKSB7XG4gIHZhciBzeW1ib2xzX2NoID0gbWF0aFRleHRTeW1ib2xzLmNoYXJBdChzeW1ib2xzX2kpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIHN5bWJvbHNfY2gsIHN5bWJvbHNfY2gpO1xufSAvLyBBbGwgb2YgdGhlc2UgYXJlIHRleHRvcmRzIGluIHRleHQgbW9kZVxuXG5cbnZhciB0ZXh0U3ltYm9scyA9IFwiMDEyMzQ1Njc4OSFAKigpLT0rW108PnxcXFwiOzo/Ly4sXCI7XG5cbmZvciAodmFyIHNyY19zeW1ib2xzX2kgPSAwOyBzcmNfc3ltYm9sc19pIDwgdGV4dFN5bWJvbHMubGVuZ3RoOyBzcmNfc3ltYm9sc19pKyspIHtcbiAgdmFyIF9jaCA9IHRleHRTeW1ib2xzLmNoYXJBdChzcmNfc3ltYm9sc19pKTtcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaCwgX2NoKTtcbn0gLy8gQWxsIG9mIHRoZXNlIGFyZSB0ZXh0b3JkcyBpbiB0ZXh0IG1vZGUsIGFuZCBtYXRob3JkcyBpbiBtYXRoIG1vZGVcblxuXG52YXIgbGV0dGVycyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO1xuXG5mb3IgKHZhciBzeW1ib2xzX2kyID0gMDsgc3ltYm9sc19pMiA8IGxldHRlcnMubGVuZ3RoOyBzeW1ib2xzX2kyKyspIHtcbiAgdmFyIF9jaDIgPSBsZXR0ZXJzLmNoYXJBdChzeW1ib2xzX2kyKTtcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gyLCBfY2gyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gyLCBfY2gyKTtcbn0gLy8gQmxhY2tib2FyZCBib2xkIGFuZCBzY3JpcHQgbGV0dGVycyBpbiBVbmljb2RlIHJhbmdlXG5cblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiQ1wiLCBcIlxcdTIxMDJcIik7IC8vIGJsYWNrYm9hcmQgYm9sZFxuXG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJDXCIsIFwiXFx1MjEwMlwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIkhcIiwgXCJcXHUyMTBEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiSFwiLCBcIlxcdTIxMERcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJOXCIsIFwiXFx1MjExNVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIk5cIiwgXCJcXHUyMTE1XCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUFwiLCBcIlxcdTIxMTlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJQXCIsIFwiXFx1MjExOVwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlFcIiwgXCJcXHUyMTFBXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiUVwiLCBcIlxcdTIxMUFcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJSXCIsIFwiXFx1MjExRFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIGFtcywgc3ltYm9sc190ZXh0b3JkLCBcIlJcIiwgXCJcXHUyMTFEXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgYW1zLCBzeW1ib2xzX3RleHRvcmQsIFwiWlwiLCBcIlxcdTIxMjRcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBhbXMsIHN5bWJvbHNfdGV4dG9yZCwgXCJaXCIsIFwiXFx1MjEyNFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIFwiaFwiLCBcIlxcdTIxMEVcIik7IC8vIGl0YWxpYyBoLCBQbGFuY2sgY29uc3RhbnRcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgbWF0aG9yZCwgXCJoXCIsIFwiXFx1MjEwRVwiKTsgLy8gVGhlIG5leHQgbG9vcCBsb2FkcyB3aWRlIChzdXJyb2dhdGUgcGFpcikgY2hhcmFjdGVycy5cbi8vIFdlIHN1cHBvcnQgc29tZSBsZXR0ZXJzIGluIHRoZSBVbmljb2RlIHJhbmdlIFUrMUQ0MDAgdG8gVSsxRDdGRixcbi8vIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scy5cbi8vIFNvbWUgZWRpdG9ycyBkbyBub3QgZGVhbCB3ZWxsIHdpdGggd2lkZSBjaGFyYWN0ZXJzLiBTbyBkb24ndCB3cml0ZSB0aGVcbi8vIHN0cmluZyBpbnRvIHRoaXMgZmlsZS4gSW5zdGVhZCwgY3JlYXRlIHRoZSBzdHJpbmcgZnJvbSB0aGUgc3Vycm9nYXRlIHBhaXIuXG5cbnZhciBzeW1ib2xzX3dpZGVDaGFyID0gXCJcIjtcblxuZm9yICh2YXIgc3ltYm9sc19pMyA9IDA7IHN5bWJvbHNfaTMgPCBsZXR0ZXJzLmxlbmd0aDsgc3ltYm9sc19pMysrKSB7XG4gIHZhciBfY2gzID0gbGV0dGVycy5jaGFyQXQoc3ltYm9sc19pMyk7IC8vIFRoZSBoZXggbnVtYmVycyBpbiB0aGUgbmV4dCBsaW5lIGFyZSBhIHN1cnJvZ2F0ZSBwYWlyLlxuICAvLyAweEQ4MzUgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIGZvciBhbGwgbGV0dGVycyBpbiB0aGUgcmFuZ2Ugd2Ugc3VwcG9ydC5cbiAgLy8gMHhEQzAwIGlzIHRoZSBsb3cgc3Vycm9nYXRlIGZvciBib2xkIEEuXG5cblxuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REMwMCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IGJvbGRcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDMzQgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBpdGFsaWNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERDNjggKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBib2xkIGl0YWxpY1xuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REQwNCArIHN5bWJvbHNfaTMpOyAvLyBBLVogYS16IEZyYWN0dXJcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweEREQTAgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBzYW5zLXNlcmlmXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhEREQ0ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogc2FucyBib2xkXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERTA4ICsgc3ltYm9sc19pMyk7IC8vIEEtWiBhLXogc2FucyBpdGFsaWNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERFNzAgKyBzeW1ib2xzX2kzKTsgLy8gQS1aIGEteiBtb25vc3BhY2VcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcblxuICBpZiAoc3ltYm9sc19pMyA8IDI2KSB7XG4gICAgLy8gS2FUZVggZm9udHMgaGF2ZSBvbmx5IGNhcGl0YWwgbGV0dGVycyBmb3IgYmxhY2tib2FyZCBib2xkIGFuZCBzY3JpcHQuXG4gICAgLy8gU2VlIGV4Y2VwdGlvbiBmb3IgayBiZWxvdy5cbiAgICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REQzOCArIHN5bWJvbHNfaTMpOyAvLyBBLVogZG91YmxlIHN0cnVja1xuXG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoMywgc3ltYm9sc193aWRlQ2hhcik7XG4gICAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgICBzeW1ib2xzX3dpZGVDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MzUsIDB4REM5QyArIHN5bWJvbHNfaTMpOyAvLyBBLVogc2NyaXB0XG5cbiAgICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2gzLCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDMsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICB9IC8vIFRPRE86IEFkZCBib2xkIHNjcmlwdCB3aGVuIGl0IGlzIHN1cHBvcnRlZCBieSBhIEthVGVYIGZvbnQuXG5cbn0gLy8gXCJrXCIgaXMgdGhlIG9ubHkgZG91YmxlIHN0cnVjayBsb3dlciBjYXNlIGxldHRlciBpbiB0aGUgS2FUZVggZm9udHMuXG5cblxuc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERENUMpOyAvLyBrIGRvdWJsZSBzdHJ1Y2tcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgXCJrXCIsIHN5bWJvbHNfd2lkZUNoYXIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcImtcIiwgc3ltYm9sc193aWRlQ2hhcik7IC8vIE5leHQsIHNvbWUgd2lkZSBjaGFyYWN0ZXIgbnVtZXJhbHNcblxuZm9yICh2YXIgc3ltYm9sc19pNCA9IDA7IHN5bWJvbHNfaTQgPCAxMDsgc3ltYm9sc19pNCsrKSB7XG4gIHZhciBfY2g0ID0gc3ltYm9sc19pNC50b1N0cmluZygpO1xuXG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkNFICsgc3ltYm9sc19pNCk7IC8vIDAtOSBib2xkXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkUyICsgc3ltYm9sc19pNCk7IC8vIDAtOSBzYW5zIHNlcmlmXG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNCwgc3ltYm9sc193aWRlQ2hhcik7XG4gIHN5bWJvbHNfd2lkZUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgzNSwgMHhERkVDICsgc3ltYm9sc19pNCk7IC8vIDAtOSBib2xkIHNhbnNcblxuICBkZWZpbmVTeW1ib2woc3ltYm9sc19tYXRoLCBtYWluLCBtYXRob3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBfY2g0LCBzeW1ib2xzX3dpZGVDaGFyKTtcbiAgc3ltYm9sc193aWRlQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODM1LCAweERGRjYgKyBzeW1ib2xzX2k0KTsgLy8gMC05IG1vbm9zcGFjZVxuXG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX21hdGgsIG1haW4sIG1hdGhvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xuICBkZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIF9jaDQsIHN5bWJvbHNfd2lkZUNoYXIpO1xufSAvLyBXZSBhZGQgdGhlc2UgTGF0aW4tMSBsZXR0ZXJzIGFzIHN5bWJvbHMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LFxuLy8gYnV0IHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUgZm9udCwgbm9yIGFyZSB0aGV5IHN1cHBvcnRlZCBieSB0aGVcbi8vIFVuaWNvZGUgYWNjZW50IG1lY2hhbmlzbSwgc28gdGhleSBmYWxsIGJhY2sgdG8gVGltZXMgZm9udCBhbmQgbG9vayB1Z2x5LlxuLy8gVE9ETyhlZGVtYWluZSk6IEZpeCB0aGlzLlxuXG5cbnZhciBleHRyYUxhdGluID0gXCLDh8OQw57Dp8O+XCI7XG5cbmZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGV4dHJhTGF0aW4ubGVuZ3RoOyBfaTUrKykge1xuICB2YXIgX2NoNSA9IGV4dHJhTGF0aW4uY2hhckF0KF9pNSk7XG5cbiAgZGVmaW5lU3ltYm9sKHN5bWJvbHNfbWF0aCwgbWFpbiwgbWF0aG9yZCwgX2NoNSwgX2NoNSk7XG4gIGRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgX2NoNSwgX2NoNSk7XG59XG5cbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCLDsFwiLCBcIsOwXCIpOyAvLyBVbmljb2RlIHZlcnNpb25zIG9mIGV4aXN0aW5nIGNoYXJhY3RlcnNcblxuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTNcIiwgXCLigJNcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxNFwiLCBcIuKAlFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDE4XCIsIFwi4oCYXCIpO1xuZGVmaW5lU3ltYm9sKHN5bWJvbHNfdGV4dCwgbWFpbiwgc3ltYm9sc190ZXh0b3JkLCBcIlxcdTIwMTlcIiwgXCLigJlcIik7XG5kZWZpbmVTeW1ib2woc3ltYm9sc190ZXh0LCBtYWluLCBzeW1ib2xzX3RleHRvcmQsIFwiXFx1MjAxQ1wiLCBcIuKAnFwiKTtcbmRlZmluZVN5bWJvbChzeW1ib2xzX3RleHQsIG1haW4sIHN5bWJvbHNfdGV4dG9yZCwgXCJcXHUyMDFEXCIsIFwi4oCdXCIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvd2lkZS1jaGFyYWN0ZXIuanNcbi8qKlxuICogVGhpcyBmaWxlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIFVuaWNvZGUgcmFuZ2UgVSsxRDQwMCB0byBVKzFEN0ZGLFxuICogTWF0aGVtYXRpY2FsIEFscGhhbnVtZXJpYyBTeW1ib2xzLlxuICpcbiAqIEZ1bmN0aW9uIHdpZGVDaGFyYWN0ZXJGb250IHRha2VzIGEgd2lkZSBjaGFyYWN0ZXIgYXMgaW5wdXQgYW5kIHJldHVybnNcbiAqIHRoZSBmb250IGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0byByZW5kZXIgaXQgcHJvcGVybHkuXG4gKi9cblxuLyoqXG4gKiBEYXRhIGJlbG93IGlzIGZyb20gaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvY2hhcnRzL1BERi9VMUQ0MDAucGRmXG4gKiBUaGF0IGRvY3VtZW50IHNvcnRzIGNoYXJhY3RlcnMgaW50byBncm91cHMgYnkgZm9udCB0eXBlLCBzYXkgYm9sZCBvciBpdGFsaWMuXG4gKlxuICogSW4gdGhlIGFycmF5cyBiZWxvdywgZWFjaCBzdWJhcnJheSBjb25zaXN0cyB0aHJlZSBlbGVtZW50czpcbiAqICAgICAgKiBUaGUgQ1NTIGNsYXNzIG9mIHRoYXQgZ3JvdXAgd2hlbiBpbiBtYXRoIG1vZGUuXG4gKiAgICAgICogVGhlIENTUyBjbGFzcyBvZiB0aGF0IGdyb3VwIHdoZW4gaW4gdGV4dCBtb2RlLlxuICogICAgICAqIFRoZSBmb250IG5hbWUsIHNvIHRoYXQgS2FUZVggY2FuIGdldCBmb250IG1ldHJpY3MuXG4gKi9cblxudmFyIHdpZGVMYXRpbkxldHRlckRhdGEgPSBbW1wibWF0aGJmXCIsIFwidGV4dGJmXCIsIFwiTWFpbi1Cb2xkXCJdLCAvLyBBLVogYm9sZCB1cHJpZ2h0XG5bXCJtYXRoYmZcIiwgXCJ0ZXh0YmZcIiwgXCJNYWluLUJvbGRcIl0sIC8vIGEteiBib2xkIHVwcmlnaHRcbltcIm1hdGhkZWZhdWx0XCIsIFwidGV4dGl0XCIsIFwiTWF0aC1JdGFsaWNcIl0sIC8vIEEtWiBpdGFsaWNcbltcIm1hdGhkZWZhdWx0XCIsIFwidGV4dGl0XCIsIFwiTWF0aC1JdGFsaWNcIl0sIC8vIGEteiBpdGFsaWNcbltcImJvbGRzeW1ib2xcIiwgXCJib2xkc3ltYm9sXCIsIFwiTWFpbi1Cb2xkSXRhbGljXCJdLCAvLyBBLVogYm9sZCBpdGFsaWNcbltcImJvbGRzeW1ib2xcIiwgXCJib2xkc3ltYm9sXCIsIFwiTWFpbi1Cb2xkSXRhbGljXCJdLCAvLyBhLXogYm9sZCBpdGFsaWNcbi8vIE1hcCBmYW5jeSBBLVogbGV0dGVycyB0byBzY3JpcHQsIG5vdCBjYWxsaWdyYXBoaWMuXG4vLyBUaGlzIGFsaWducyB3aXRoIHVuaWNvZGUtbWF0aCBhbmQgbWF0aCBmb250cyAoZXhjZXB0IENhbWJyaWEgTWF0aCkuXG5bXCJtYXRoc2NyXCIsIFwidGV4dHNjclwiLCBcIlNjcmlwdC1SZWd1bGFyXCJdLCAvLyBBLVogc2NyaXB0XG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIGEteiBzY3JpcHQuICBObyBmb250XG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIEEtWiBib2xkIHNjcmlwdC4gTm8gZm9udFxuW1wiXCIsIFwiXCIsIFwiXCJdLCAvLyBhLXogYm9sZCBzY3JpcHQuIE5vIGZvbnRcbltcIm1hdGhmcmFrXCIsIFwidGV4dGZyYWtcIiwgXCJGcmFrdHVyLVJlZ3VsYXJcIl0sIC8vIEEtWiBGcmFrdHVyXG5bXCJtYXRoZnJha1wiLCBcInRleHRmcmFrXCIsIFwiRnJha3R1ci1SZWd1bGFyXCJdLCAvLyBhLXogRnJha3R1clxuW1wibWF0aGJiXCIsIFwidGV4dGJiXCIsIFwiQU1TLVJlZ3VsYXJcIl0sIC8vIEEtWiBkb3VibGUtc3RydWNrXG5bXCJtYXRoYmJcIiwgXCJ0ZXh0YmJcIiwgXCJBTVMtUmVndWxhclwiXSwgLy8gayBkb3VibGUtc3RydWNrXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIEEtWiBib2xkIEZyYWt0dXIgTm8gZm9udCBtZXRyaWNzXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIGEteiBib2xkIEZyYWt0dXIuICAgTm8gZm9udC5cbltcIm1hdGhzZlwiLCBcInRleHRzZlwiLCBcIlNhbnNTZXJpZi1SZWd1bGFyXCJdLCAvLyBBLVogc2Fucy1zZXJpZlxuW1wibWF0aHNmXCIsIFwidGV4dHNmXCIsIFwiU2Fuc1NlcmlmLVJlZ3VsYXJcIl0sIC8vIGEteiBzYW5zLXNlcmlmXG5bXCJtYXRoYm9sZHNmXCIsIFwidGV4dGJvbGRzZlwiLCBcIlNhbnNTZXJpZi1Cb2xkXCJdLCAvLyBBLVogYm9sZCBzYW5zLXNlcmlmXG5bXCJtYXRoYm9sZHNmXCIsIFwidGV4dGJvbGRzZlwiLCBcIlNhbnNTZXJpZi1Cb2xkXCJdLCAvLyBhLXogYm9sZCBzYW5zLXNlcmlmXG5bXCJtYXRoaXRzZlwiLCBcInRleHRpdHNmXCIsIFwiU2Fuc1NlcmlmLUl0YWxpY1wiXSwgLy8gQS1aIGl0YWxpYyBzYW5zLXNlcmlmXG5bXCJtYXRoaXRzZlwiLCBcInRleHRpdHNmXCIsIFwiU2Fuc1NlcmlmLUl0YWxpY1wiXSwgLy8gYS16IGl0YWxpYyBzYW5zLXNlcmlmXG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIEEtWiBib2xkIGl0YWxpYyBzYW5zLiBObyBmb250XG5bXCJcIiwgXCJcIiwgXCJcIl0sIC8vIGEteiBib2xkIGl0YWxpYyBzYW5zLiBObyBmb250XG5bXCJtYXRodHRcIiwgXCJ0ZXh0dHRcIiwgXCJUeXBld3JpdGVyLVJlZ3VsYXJcIl0sIC8vIEEtWiBtb25vc3BhY2VcbltcIm1hdGh0dFwiLCBcInRleHR0dFwiLCBcIlR5cGV3cml0ZXItUmVndWxhclwiXV07XG52YXIgd2lkZU51bWVyYWxEYXRhID0gW1tcIm1hdGhiZlwiLCBcInRleHRiZlwiLCBcIk1haW4tQm9sZFwiXSwgLy8gMC05IGJvbGRcbltcIlwiLCBcIlwiLCBcIlwiXSwgLy8gMC05IGRvdWJsZS1zdHJ1Y2suIE5vIEthVGVYIGZvbnQuXG5bXCJtYXRoc2ZcIiwgXCJ0ZXh0c2ZcIiwgXCJTYW5zU2VyaWYtUmVndWxhclwiXSwgLy8gMC05IHNhbnMtc2VyaWZcbltcIm1hdGhib2xkc2ZcIiwgXCJ0ZXh0Ym9sZHNmXCIsIFwiU2Fuc1NlcmlmLUJvbGRcIl0sIC8vIDAtOSBib2xkIHNhbnMtc2VyaWZcbltcIm1hdGh0dFwiLCBcInRleHR0dFwiLCBcIlR5cGV3cml0ZXItUmVndWxhclwiXV07XG52YXIgd2lkZV9jaGFyYWN0ZXJfd2lkZUNoYXJhY3RlckZvbnQgPSBmdW5jdGlvbiB3aWRlQ2hhcmFjdGVyRm9udCh3aWRlQ2hhciwgbW9kZSkge1xuICAvLyBJRSBkb2Vzbid0IHN1cHBvcnQgY29kZVBvaW50QXQoKS4gU28gd29yayB3aXRoIHRoZSBzdXJyb2dhdGUgcGFpci5cbiAgdmFyIEggPSB3aWRlQ2hhci5jaGFyQ29kZUF0KDApOyAvLyBoaWdoIHN1cnJvZ2F0ZVxuXG4gIHZhciBMID0gd2lkZUNoYXIuY2hhckNvZGVBdCgxKTsgLy8gbG93IHN1cnJvZ2F0ZVxuXG4gIHZhciBjb2RlUG9pbnQgPSAoSCAtIDB4RDgwMCkgKiAweDQwMCArIChMIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIHZhciBqID0gbW9kZSA9PT0gXCJtYXRoXCIgPyAwIDogMTsgLy8gY29sdW1uIGluZGV4IGZvciBDU1MgY2xhc3MuXG5cbiAgaWYgKDB4MUQ0MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8IDB4MUQ2QTQpIHtcbiAgICAvLyB3aWRlTGF0aW5MZXR0ZXJEYXRhIGNvbnRhaW5zIGV4YWN0bHkgMjYgY2hhcnMgb24gZWFjaCByb3cuXG4gICAgLy8gU28gd2UgY2FuIGNhbGN1bGF0ZSB0aGUgcmVsZXZhbnQgcm93LiBObyB0cmF2ZXJzZSBuZWNlc3NhcnkuXG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKChjb2RlUG9pbnQgLSAweDFENDAwKSAvIDI2KTtcbiAgICByZXR1cm4gW3dpZGVMYXRpbkxldHRlckRhdGFbaV1bMl0sIHdpZGVMYXRpbkxldHRlckRhdGFbaV1bal1dO1xuICB9IGVsc2UgaWYgKDB4MUQ3Q0UgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFEN0ZGKSB7XG4gICAgLy8gTnVtZXJhbHMsIHRlbiBwZXIgcm93LlxuICAgIHZhciBfaSA9IE1hdGguZmxvb3IoKGNvZGVQb2ludCAtIDB4MUQ3Q0UpIC8gMTApO1xuXG4gICAgcmV0dXJuIFt3aWRlTnVtZXJhbERhdGFbX2ldWzJdLCB3aWRlTnVtZXJhbERhdGFbX2ldW2pdXTtcbiAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPT09IDB4MUQ2QTUgfHwgY29kZVBvaW50ID09PSAweDFENkE2KSB7XG4gICAgLy8gZG90bGVzcyBpIG9yIGpcbiAgICByZXR1cm4gW3dpZGVMYXRpbkxldHRlckRhdGFbMF1bMl0sIHdpZGVMYXRpbkxldHRlckRhdGFbMF1bal1dO1xuICB9IGVsc2UgaWYgKDB4MUQ2QTYgPCBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDwgMHgxRDdDRSkge1xuICAgIC8vIEdyZWVrIGxldHRlcnMuIE5vdCBzdXBwb3J0ZWQsIHlldC5cbiAgICByZXR1cm4gW1wiXCIsIFwiXCJdO1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgYW55IHdpZGUgY2hhcmFjdGVycyBvdXRzaWRlIDFENDAw4oCTMUQ3RkYuXG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5zdXBwb3J0ZWQgY2hhcmFjdGVyOiBcIiArIHdpZGVDaGFyKTtcbiAgfVxufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL09wdGlvbnMuanNcbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcHRpb25zIHRoYXQgdGhlIFBhcnNlciBjYXJyaWVzXG4gKiBhcm91bmQgd2l0aCBpdCB3aGlsZSBwYXJzaW5nLiBEYXRhIGlzIGhlbGQgaW4gYW4gYE9wdGlvbnNgIG9iamVjdCwgYW5kIHdoZW5cbiAqIHJlY3Vyc2luZywgYSBuZXcgYE9wdGlvbnNgIG9iamVjdCBjYW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBgLndpdGgqYCBhbmRcbiAqIGAucmVzZXRgIGZ1bmN0aW9ucy5cbiAqL1xuXG52YXIgc2l6ZVN0eWxlTWFwID0gWy8vIEVhY2ggZWxlbWVudCBjb250YWlucyBbdGV4dHNpemUsIHNjcmlwdHNpemUsIHNjcmlwdHNjcmlwdHNpemVdLlxuLy8gVGhlIHNpemUgbWFwcGluZ3MgYXJlIHRha2VuIGZyb20gVGVYIHdpdGggXFxub3JtYWxzaXplPTEwcHQuXG5bMSwgMSwgMV0sIC8vIHNpemUxOiBbNSwgNSwgNV0gICAgICAgICAgICAgIFxcdGlueVxuWzIsIDEsIDFdLCAvLyBzaXplMjogWzYsIDUsIDVdXG5bMywgMSwgMV0sIC8vIHNpemUzOiBbNywgNSwgNV0gICAgICAgICAgICAgIFxcc2NyaXB0c2l6ZVxuWzQsIDIsIDFdLCAvLyBzaXplNDogWzgsIDYsIDVdICAgICAgICAgICAgICBcXGZvb3Rub3Rlc2l6ZVxuWzUsIDIsIDFdLCAvLyBzaXplNTogWzksIDYsIDVdICAgICAgICAgICAgICBcXHNtYWxsXG5bNiwgMywgMV0sIC8vIHNpemU2OiBbMTAsIDcsIDVdICAgICAgICAgICAgIFxcbm9ybWFsc2l6ZVxuWzcsIDQsIDJdLCAvLyBzaXplNzogWzEyLCA4LCA2XSAgICAgICAgICAgICBcXGxhcmdlXG5bOCwgNiwgM10sIC8vIHNpemU4OiBbMTQuNCwgMTAsIDddICAgICAgICAgIFxcTGFyZ2Vcbls5LCA3LCA2XSwgLy8gc2l6ZTk6IFsxNy4yOCwgMTIsIDEwXSAgICAgICAgXFxMQVJHRVxuWzEwLCA4LCA3XSwgLy8gc2l6ZTEwOiBbMjAuNzQsIDE0LjQsIDEyXSAgICAgXFxodWdlXG5bMTEsIDEwLCA5XV07XG52YXIgc2l6ZU11bHRpcGxpZXJzID0gWy8vIGZvbnRNZXRyaWNzLmpzOmdldEdsb2JhbE1ldHJpY3MgYWxzbyB1c2VzIHNpemUgaW5kZXhlcywgc28gaWZcbi8vIHlvdSBjaGFuZ2Ugc2l6ZSBpbmRleGVzLCBjaGFuZ2UgdGhhdCBmdW5jdGlvbi5cbjAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAxLjAsIDEuMiwgMS40NCwgMS43MjgsIDIuMDc0LCAyLjQ4OF07XG5cbnZhciBzaXplQXRTdHlsZSA9IGZ1bmN0aW9uIHNpemVBdFN0eWxlKHNpemUsIHN0eWxlKSB7XG4gIHJldHVybiBzdHlsZS5zaXplIDwgMiA/IHNpemUgOiBzaXplU3R5bGVNYXBbc2l6ZSAtIDFdW3N0eWxlLnNpemUgLSAxXTtcbn07IC8vIEluIHRoZXNlIHR5cGVzLCBcIlwiIChlbXB0eSBzdHJpbmcpIG1lYW5zIFwibm8gY2hhbmdlXCIuXG5cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBtYWluIG9wdGlvbnMgY2xhc3MuIEl0IGNvbnRhaW5zIHRoZSBjdXJyZW50IHN0eWxlLCBzaXplLCBjb2xvcixcbiAqIGFuZCBmb250LlxuICpcbiAqIE9wdGlvbnMgb2JqZWN0cyBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiBUbyBjcmVhdGUgYSBuZXcgT3B0aW9ucyB3aXRoXG4gKiBkaWZmZXJlbnQgcHJvcGVydGllcywgY2FsbCBhIGAuaGF2aW5nKmAgbWV0aG9kLlxuICovXG52YXIgT3B0aW9uc19PcHRpb25zID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLy8gQSBmb250IGZhbWlseSBhcHBsaWVzIHRvIGEgZ3JvdXAgb2YgZm9udHMgKGkuZS4gU2Fuc1NlcmlmKSwgd2hpbGUgYSBmb250XG4gIC8vIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBmb250IChpLmUuIFNhbnNTZXJpZiBCb2xkKS5cbiAgLy8gU2VlOiBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjIzNTAvZGlmZmVyZW5jZS1iZXR3ZWVuLXRleHRybS1hbmQtbWF0aHJtXG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIHNpemUgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBPcHRpb25zKGRhdGEpIHtcbiAgICB0aGlzLnN0eWxlID0gdm9pZCAwO1xuICAgIHRoaXMuY29sb3IgPSB2b2lkIDA7XG4gICAgdGhpcy5zaXplID0gdm9pZCAwO1xuICAgIHRoaXMudGV4dFNpemUgPSB2b2lkIDA7XG4gICAgdGhpcy5waGFudG9tID0gdm9pZCAwO1xuICAgIHRoaXMuZm9udCA9IHZvaWQgMDtcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSB2b2lkIDA7XG4gICAgdGhpcy5mb250V2VpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9udFNoYXBlID0gdm9pZCAwO1xuICAgIHRoaXMuc2l6ZU11bHRpcGxpZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXhTaXplID0gdm9pZCAwO1xuICAgIHRoaXMubWluUnVsZVRoaWNrbmVzcyA9IHZvaWQgMDtcbiAgICB0aGlzLl9mb250TWV0cmljcyA9IHZvaWQgMDtcbiAgICB0aGlzLnN0eWxlID0gZGF0YS5zdHlsZTtcbiAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICB0aGlzLnNpemUgPSBkYXRhLnNpemUgfHwgT3B0aW9ucy5CQVNFU0laRTtcbiAgICB0aGlzLnRleHRTaXplID0gZGF0YS50ZXh0U2l6ZSB8fCB0aGlzLnNpemU7XG4gICAgdGhpcy5waGFudG9tID0gISFkYXRhLnBoYW50b207XG4gICAgdGhpcy5mb250ID0gZGF0YS5mb250IHx8IFwiXCI7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gZGF0YS5mb250RmFtaWx5IHx8IFwiXCI7XG4gICAgdGhpcy5mb250V2VpZ2h0ID0gZGF0YS5mb250V2VpZ2h0IHx8ICcnO1xuICAgIHRoaXMuZm9udFNoYXBlID0gZGF0YS5mb250U2hhcGUgfHwgJyc7XG4gICAgdGhpcy5zaXplTXVsdGlwbGllciA9IHNpemVNdWx0aXBsaWVyc1t0aGlzLnNpemUgLSAxXTtcbiAgICB0aGlzLm1heFNpemUgPSBkYXRhLm1heFNpemU7XG4gICAgdGhpcy5taW5SdWxlVGhpY2tuZXNzID0gZGF0YS5taW5SdWxlVGhpY2tuZXNzO1xuICAgIHRoaXMuX2ZvbnRNZXRyaWNzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyBcInRoaXNcIi4gIFByb3BlcnRpZXNcbiAgICogZnJvbSBcImV4dGVuc2lvblwiIHdpbGwgYmUgY29waWVkIHRvIHRoZSBuZXcgb3B0aW9ucyBvYmplY3QuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE9wdGlvbnMucHJvdG90eXBlO1xuXG4gIF9wcm90by5leHRlbmQgPSBmdW5jdGlvbiBleHRlbmQoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBzdHlsZTogdGhpcy5zdHlsZSxcbiAgICAgIHNpemU6IHRoaXMuc2l6ZSxcbiAgICAgIHRleHRTaXplOiB0aGlzLnRleHRTaXplLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICBwaGFudG9tOiB0aGlzLnBoYW50b20sXG4gICAgICBmb250OiB0aGlzLmZvbnQsXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYW1pbHksXG4gICAgICBmb250V2VpZ2h0OiB0aGlzLmZvbnRXZWlnaHQsXG4gICAgICBmb250U2hhcGU6IHRoaXMuZm9udFNoYXBlLFxuICAgICAgbWF4U2l6ZTogdGhpcy5tYXhTaXplLFxuICAgICAgbWluUnVsZVRoaWNrbmVzczogdGhpcy5taW5SdWxlVGhpY2tuZXNzXG4gICAgfTtcblxuICAgIGZvciAodmFyIGtleSBpbiBleHRlbnNpb24pIHtcbiAgICAgIGlmIChleHRlbnNpb24uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBkYXRhW2tleV0gPSBleHRlbnNpb25ba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9wdGlvbnMoZGF0YSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiBhbiBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBzdHlsZS4gSWYgYHRoaXMuc3R5bGUgPT09IHN0eWxlYCxcbiAgICogcmV0dXJucyBgdGhpc2AuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ1N0eWxlID0gZnVuY3Rpb24gaGF2aW5nU3R5bGUoc3R5bGUpIHtcbiAgICBpZiAodGhpcy5zdHlsZSA9PT0gc3R5bGUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIHNpemU6IHNpemVBdFN0eWxlKHRoaXMudGV4dFNpemUsIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb3B0aW9ucyBvYmplY3Qgd2l0aCBhIGNyYW1wZWQgdmVyc2lvbiBvZiB0aGUgY3VycmVudCBzdHlsZS4gSWZcbiAgICogdGhlIGN1cnJlbnQgc3R5bGUgaXMgY3JhbXBlZCwgcmV0dXJucyBgdGhpc2AuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ0NyYW1wZWRTdHlsZSA9IGZ1bmN0aW9uIGhhdmluZ0NyYW1wZWRTdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXZpbmdTdHlsZSh0aGlzLnN0eWxlLmNyYW1wKCkpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gc2l6ZSBhbmQgaW4gYXQgbGVhc3QgYFxcdGV4dHN0eWxlYC5cbiAgICogUmV0dXJucyBgdGhpc2AgaWYgYXBwcm9wcmlhdGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmhhdmluZ1NpemUgPSBmdW5jdGlvbiBoYXZpbmdTaXplKHNpemUpIHtcbiAgICBpZiAodGhpcy5zaXplID09PSBzaXplICYmIHRoaXMudGV4dFNpemUgPT09IHNpemUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgICBzdHlsZTogdGhpcy5zdHlsZS50ZXh0KCksXG4gICAgICAgIHNpemU6IHNpemUsXG4gICAgICAgIHRleHRTaXplOiBzaXplLFxuICAgICAgICBzaXplTXVsdGlwbGllcjogc2l6ZU11bHRpcGxpZXJzW3NpemUgLSAxXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBMaWtlIGB0aGlzLmhhdmluZ1NpemUoQkFTRVNJWkUpLmhhdmluZ1N0eWxlKHN0eWxlKWAuIElmIGBzdHlsZWAgaXMgb21pdHRlZCxcbiAgICogY2hhbmdlcyB0byBhdCBsZWFzdCBgXFx0ZXh0c3R5bGVgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5oYXZpbmdCYXNlU3R5bGUgPSBmdW5jdGlvbiBoYXZpbmdCYXNlU3R5bGUoc3R5bGUpIHtcbiAgICBzdHlsZSA9IHN0eWxlIHx8IHRoaXMuc3R5bGUudGV4dCgpO1xuICAgIHZhciB3YW50U2l6ZSA9IHNpemVBdFN0eWxlKE9wdGlvbnMuQkFTRVNJWkUsIHN0eWxlKTtcblxuICAgIGlmICh0aGlzLnNpemUgPT09IHdhbnRTaXplICYmIHRoaXMudGV4dFNpemUgPT09IE9wdGlvbnMuQkFTRVNJWkUgJiYgdGhpcy5zdHlsZSA9PT0gc3R5bGUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIHNpemU6IHdhbnRTaXplXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZWZmZWN0IG9mIHNpemluZyBjaGFuZ2VzIHN1Y2ggYXMgXFxIdWdlLlxuICAgKiBLZWVwIHRoZSBlZmZlY3Qgb2YgdGhlIGN1cnJlbnQgc3R5bGUsIHN1Y2ggYXMgXFxzY3JpcHRzdHlsZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGF2aW5nQmFzZVNpemluZyA9IGZ1bmN0aW9uIGhhdmluZ0Jhc2VTaXppbmcoKSB7XG4gICAgdmFyIHNpemU7XG5cbiAgICBzd2l0Y2ggKHRoaXMuc3R5bGUuaWQpIHtcbiAgICAgIGNhc2UgNDpcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgc2l6ZSA9IDM7IC8vIG5vcm1hbHNpemUgaW4gc2NyaXB0c3R5bGVcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICBzaXplID0gMTsgLy8gbm9ybWFsc2l6ZSBpbiBzY3JpcHRzY3JpcHRzdHlsZVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzaXplID0gNjtcbiAgICAgIC8vIG5vcm1hbHNpemUgaW4gdGV4dHN0eWxlIG9yIGRpc3BsYXlzdHlsZVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBzdHlsZTogdGhpcy5zdHlsZS50ZXh0KCksXG4gICAgICBzaXplOiBzaXplXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBjb2xvci5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aENvbG9yID0gZnVuY3Rpb24gd2l0aENvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGNvbG9yOiBjb2xvclxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCBcInBoYW50b21cIiBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aFBoYW50b20gPSBmdW5jdGlvbiB3aXRoUGhhbnRvbSgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgcGhhbnRvbTogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9wdGlvbnMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG1hdGggZm9udCBvciBvbGQgdGV4dCBmb250LlxuICAgKiBAdHlwZSB7W3R5cGVdfVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by53aXRoRm9udCA9IGZ1bmN0aW9uIHdpdGhGb250KGZvbnQpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgZm9udDogZm9udFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3B0aW9ucyBvYmplY3RzIHdpdGggdGhlIGdpdmVuIGZvbnRGYW1pbHkuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLndpdGhUZXh0Rm9udEZhbWlseSA9IGZ1bmN0aW9uIHdpdGhUZXh0Rm9udEZhbWlseShmb250RmFtaWx5KSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIGZvbnRGYW1pbHk6IGZvbnRGYW1pbHksXG4gICAgICBmb250OiBcIlwiXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gZm9udCB3ZWlnaHRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ud2l0aFRleHRGb250V2VpZ2h0ID0gZnVuY3Rpb24gd2l0aFRleHRGb250V2VpZ2h0KGZvbnRXZWlnaHQpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgZm9udFdlaWdodDogZm9udFdlaWdodCxcbiAgICAgIGZvbnQ6IFwiXCJcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBvcHRpb25zIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBmb250IHdlaWdodFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by53aXRoVGV4dEZvbnRTaGFwZSA9IGZ1bmN0aW9uIHdpdGhUZXh0Rm9udFNoYXBlKGZvbnRTaGFwZSkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBmb250U2hhcGU6IGZvbnRTaGFwZSxcbiAgICAgIGZvbnQ6IFwiXCJcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBDU1Mgc2l6aW5nIGNsYXNzZXMgcmVxdWlyZWQgdG8gc3dpdGNoIGZyb20gZW5jbG9zaW5nIG9wdGlvbnNcbiAgICogYG9sZE9wdGlvbnNgIHRvIGB0aGlzYC4gUmV0dXJucyBhbiBhcnJheSBvZiBjbGFzc2VzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5zaXppbmdDbGFzc2VzID0gZnVuY3Rpb24gc2l6aW5nQ2xhc3NlcyhvbGRPcHRpb25zKSB7XG4gICAgaWYgKG9sZE9wdGlvbnMuc2l6ZSAhPT0gdGhpcy5zaXplKSB7XG4gICAgICByZXR1cm4gW1wic2l6aW5nXCIsIFwicmVzZXQtc2l6ZVwiICsgb2xkT3B0aW9ucy5zaXplLCBcInNpemVcIiArIHRoaXMuc2l6ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQ1NTIHNpemluZyBjbGFzc2VzIHJlcXVpcmVkIHRvIHN3aXRjaCB0byB0aGUgYmFzZSBzaXplLiBMaWtlXG4gICAqIGB0aGlzLmhhdmluZ1NpemUoQkFTRVNJWkUpLnNpemluZ0NsYXNzZXModGhpcylgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5iYXNlU2l6aW5nQ2xhc3NlcyA9IGZ1bmN0aW9uIGJhc2VTaXppbmdDbGFzc2VzKCkge1xuICAgIGlmICh0aGlzLnNpemUgIT09IE9wdGlvbnMuQkFTRVNJWkUpIHtcbiAgICAgIHJldHVybiBbXCJzaXppbmdcIiwgXCJyZXNldC1zaXplXCIgKyB0aGlzLnNpemUsIFwic2l6ZVwiICsgT3B0aW9ucy5CQVNFU0laRV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZm9udCBtZXRyaWNzIGZvciB0aGlzIHNpemUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZvbnRNZXRyaWNzID0gZnVuY3Rpb24gZm9udE1ldHJpY3MoKSB7XG4gICAgaWYgKCF0aGlzLl9mb250TWV0cmljcykge1xuICAgICAgdGhpcy5fZm9udE1ldHJpY3MgPSBnZXRHbG9iYWxNZXRyaWNzKHRoaXMuc2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZvbnRNZXRyaWNzO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBDU1MgY29sb3Igb2YgdGhlIGN1cnJlbnQgb3B0aW9ucyBvYmplY3RcbiAgICovXG4gIDtcblxuICBfcHJvdG8uZ2V0Q29sb3IgPSBmdW5jdGlvbiBnZXRDb2xvcigpIHtcbiAgICBpZiAodGhpcy5waGFudG9tKSB7XG4gICAgICByZXR1cm4gXCJ0cmFuc3BhcmVudFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb2xvcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE9wdGlvbnM7XG59KCk7XG5cbk9wdGlvbnNfT3B0aW9ucy5CQVNFU0laRSA9IDY7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfT3B0aW9ucyA9IChPcHRpb25zX09wdGlvbnMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pdHMuanNcbi8qKlxuICogVGhpcyBmaWxlIGRvZXMgY29udmVyc2lvbiBiZXR3ZWVuIHVuaXRzLiAgSW4gcGFydGljdWxhciwgaXQgcHJvdmlkZXNcbiAqIGNhbGN1bGF0ZVNpemUgdG8gY29udmVydCBvdGhlciB1bml0cyBpbnRvIGVtcy5cbiAqL1xuXG4gLy8gVGhpcyB0YWJsZSBnaXZlcyB0aGUgbnVtYmVyIG9mIFRlWCBwdHMgaW4gb25lIG9mIGVhY2ggKmFic29sdXRlKiBUZVggdW5pdC5cbi8vIFRodXMsIG11bHRpcGx5aW5nIGEgbGVuZ3RoIGJ5IHRoaXMgbnVtYmVyIGNvbnZlcnRzIHRoZSBsZW5ndGggZnJvbSB1bml0c1xuLy8gaW50byBwdHMuICBEaXZpZGluZyB0aGUgcmVzdWx0IGJ5IHB0UGVyRW0gZ2l2ZXMgdGhlIG51bWJlciBvZiBlbXNcbi8vICphc3N1bWluZyogYSBmb250IHNpemUgb2YgcHRQZXJFbSAobm9ybWFsIHNpemUsIG5vcm1hbCBzdHlsZSkuXG5cbnZhciBwdFBlclVuaXQgPSB7XG4gIC8vIGh0dHBzOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0xhVGVYL0xlbmd0aHMgYW5kXG4gIC8vIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL2EvODI2M1xuICBcInB0XCI6IDEsXG4gIC8vIFRlWCBwb2ludFxuICBcIm1tXCI6IDcyMjcgLyAyNTQwLFxuICAvLyBtaWxsaW1ldGVyXG4gIFwiY21cIjogNzIyNyAvIDI1NCxcbiAgLy8gY2VudGltZXRlclxuICBcImluXCI6IDcyLjI3LFxuICAvLyBpbmNoXG4gIFwiYnBcIjogODAzIC8gODAwLFxuICAvLyBiaWcgKFBvc3RTY3JpcHQpIHBvaW50c1xuICBcInBjXCI6IDEyLFxuICAvLyBwaWNhXG4gIFwiZGRcIjogMTIzOCAvIDExNTcsXG4gIC8vIGRpZG90XG4gIFwiY2NcIjogMTQ4NTYgLyAxMTU3LFxuICAvLyBjaWNlcm8gKDEyIGRpZG90KVxuICBcIm5kXCI6IDY4NSAvIDY0MixcbiAgLy8gbmV3IGRpZG90XG4gIFwibmNcIjogMTM3MCAvIDEwNyxcbiAgLy8gbmV3IGNpY2VybyAoMTIgbmV3IGRpZG90KVxuICBcInNwXCI6IDEgLyA2NTUzNixcbiAgLy8gc2NhbGVkIHBvaW50IChUZVgncyBpbnRlcm5hbCBzbWFsbGVzdCB1bml0KVxuICAvLyBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzQxMzcxXG4gIFwicHhcIjogODAzIC8gODAwIC8vIFxccGRmcHhkaW1lbiBkZWZhdWx0cyB0byAxIGJwIGluIHBkZlRlWCBhbmQgTHVhVGVYXG5cbn07IC8vIERpY3Rpb25hcnkgb2YgcmVsYXRpdmUgdW5pdHMsIGZvciBmYXN0IHZhbGlkaXR5IHRlc3RpbmcuXG5cbnZhciByZWxhdGl2ZVVuaXQgPSB7XG4gIFwiZXhcIjogdHJ1ZSxcbiAgXCJlbVwiOiB0cnVlLFxuICBcIm11XCI6IHRydWVcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCB1bml0IChlaXRoZXIgYSBzdHJpbmcgZGVmaW5pbmcgdGhlIHVuaXRcbiAqIG9yIGEgXCJzaXplXCIgcGFyc2Ugbm9kZSBjb250YWluaW5nIGEgdW5pdCBmaWVsZCkgaXMgdmFsaWQuXG4gKi9cbnZhciB2YWxpZFVuaXQgPSBmdW5jdGlvbiB2YWxpZFVuaXQodW5pdCkge1xuICBpZiAodHlwZW9mIHVuaXQgIT09IFwic3RyaW5nXCIpIHtcbiAgICB1bml0ID0gdW5pdC51bml0O1xuICB9XG5cbiAgcmV0dXJuIHVuaXQgaW4gcHRQZXJVbml0IHx8IHVuaXQgaW4gcmVsYXRpdmVVbml0IHx8IHVuaXQgPT09IFwiZXhcIjtcbn07XG4vKlxuICogQ29udmVydCBhIFwic2l6ZVwiIHBhcnNlIG5vZGUgKHdpdGggbnVtZXJpYyBcIm51bWJlclwiIGFuZCBzdHJpbmcgXCJ1bml0XCIgZmllbGRzLFxuICogYXMgcGFyc2VkIGJ5IGZ1bmN0aW9ucy5qcyBhcmdUeXBlIFwic2l6ZVwiKSBpbnRvIGEgQ1NTIGVtIHZhbHVlIGZvciB0aGVcbiAqIGN1cnJlbnQgc3R5bGUvc2NhbGUuICBgb3B0aW9uc2AgZ2l2ZXMgdGhlIGN1cnJlbnQgb3B0aW9ucy5cbiAqL1xuXG52YXIgdW5pdHNfY2FsY3VsYXRlU2l6ZSA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVNpemUoc2l6ZVZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBzY2FsZTtcblxuICBpZiAoc2l6ZVZhbHVlLnVuaXQgaW4gcHRQZXJVbml0KSB7XG4gICAgLy8gQWJzb2x1dGUgdW5pdHNcbiAgICBzY2FsZSA9IHB0UGVyVW5pdFtzaXplVmFsdWUudW5pdF0gLy8gQ29udmVydCB1bml0IHRvIHB0XG4gICAgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbSAvLyBDb252ZXJ0IHB0IHRvIENTUyBlbVxuICAgIC8gb3B0aW9ucy5zaXplTXVsdGlwbGllcjsgLy8gVW5zY2FsZSB0byBtYWtlIGFic29sdXRlIHVuaXRzXG4gIH0gZWxzZSBpZiAoc2l6ZVZhbHVlLnVuaXQgPT09IFwibXVcIikge1xuICAgIC8vIGBtdWAgdW5pdHMgc2NhbGUgd2l0aCBzY3JpcHRzdHlsZS9zY3JpcHRzY3JpcHRzdHlsZS5cbiAgICBzY2FsZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5jc3NFbVBlck11O1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyIHJlbGF0aXZlIHVuaXRzIGFsd2F5cyByZWZlciB0byB0aGUgKnRleHRzdHlsZSogZm9udFxuICAgIC8vIGluIHRoZSBjdXJyZW50IHNpemUuXG4gICAgdmFyIHVuaXRPcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnMuc3R5bGUuaXNUaWdodCgpKSB7XG4gICAgICAvLyBpc1RpZ2h0KCkgbWVhbnMgY3VycmVudCBzdHlsZSBpcyBzY3JpcHQvc2NyaXB0c2NyaXB0LlxuICAgICAgdW5pdE9wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG9wdGlvbnMuc3R5bGUudGV4dCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0gLy8gVE9ETzogSW4gVGVYIHRoZXNlIHVuaXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgcXVhZCBvZiB0aGUgY3VycmVudFxuICAgIC8vICp0ZXh0KiBmb250LCBlLmcuIGNtcjEwLiBLYVRlWCBpbnN0ZWFkIHVzZXMgdmFsdWVzIGZyb20gdGhlXG4gICAgLy8gY29tcGFyYWJseS1zaXplZCAqQ29tcHV0ZXIgTW9kZXJuIHN5bWJvbCogZm9udC4gQXQgMTBwdCwgdGhlc2VcbiAgICAvLyBtYXRjaC4gQXQgN3B0IGFuZCA1cHQsIHRoZXkgZGlmZmVyOiBjbXI3PTEuMTM4ODk0LCBjbXN5Nz0xLjE3MDY0MTtcbiAgICAvLyBjbXI1PTEuMzYxMTMzLCBjbXN5NT0xLjQ3MjI0MS4gQ29uc2lkZXIgJFxcc2NyaXB0c2l6ZSBhXFxrZXJuMWVtYiQuXG4gICAgLy8gVGVYIFxcc2hvd2xpc3RzIHNob3dzIGEga2VybiBvZiAxLjEzODg5ICogZm9udHNpemU7XG4gICAgLy8gS2FUZVggc2hvd3MgYSBrZXJuIG9mIDEuMTcxICogZm9udHNpemUuXG5cblxuICAgIGlmIChzaXplVmFsdWUudW5pdCA9PT0gXCJleFwiKSB7XG4gICAgICBzY2FsZSA9IHVuaXRPcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHNpemVWYWx1ZS51bml0ID09PSBcImVtXCIpIHtcbiAgICAgIHNjYWxlID0gdW5pdE9wdGlvbnMuZm9udE1ldHJpY3MoKS5xdWFkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHVuaXQ6ICdcIiArIHNpemVWYWx1ZS51bml0ICsgXCInXCIpO1xuICAgIH1cblxuICAgIGlmICh1bml0T3B0aW9ucyAhPT0gb3B0aW9ucykge1xuICAgICAgc2NhbGUgKj0gdW5pdE9wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBNYXRoLm1pbihzaXplVmFsdWUubnVtYmVyICogc2NhbGUsIG9wdGlvbnMubWF4U2l6ZSk7XG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvYnVpbGRDb21tb24uanNcbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBjb250YWlucyBnZW5lcmFsIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGZvciBidWlsZGluZ1xuICogZGlmZmVyZW50IGtpbmRzIG9mIGRvbVRyZWUgbm9kZXMgaW4gYSBjb25zaXN0ZW50IG1hbm5lci5cbiAqL1xuXG5cblxuXG5cblxuXG4vLyBUaGUgZm9sbG93aW5nIGhhdmUgdG8gYmUgbG9hZGVkIGZyb20gTWFpbi1JdGFsaWMgZm9udCwgdXNpbmcgY2xhc3MgbWF0aGl0XG52YXIgbWF0aGl0TGV0dGVycyA9IFtcIlxcXFxpbWF0aFwiLCBcIsSxXCIsIC8vIGRvdGxlc3MgaVxuXCJcXFxcam1hdGhcIiwgXCLIt1wiLCAvLyBkb3RsZXNzIGpcblwiXFxcXHBvdW5kc1wiLCBcIlxcXFxtYXRoc3RlcmxpbmdcIiwgXCJcXFxcdGV4dHN0ZXJsaW5nXCIsIFwiwqNcIl07XG4vKipcbiAqIExvb2tzIHVwIHRoZSBnaXZlbiBzeW1ib2wgaW4gZm9udE1ldHJpY3MsIGFmdGVyIGFwcGx5aW5nIGFueSBzeW1ib2xcbiAqIHJlcGxhY2VtZW50cyBkZWZpbmVkIGluIHN5bWJvbC5qc1xuICovXG5cbnZhciBidWlsZENvbW1vbl9sb29rdXBTeW1ib2wgPSBmdW5jdGlvbiBsb29rdXBTeW1ib2wodmFsdWUsIC8vIFRPRE8oIzk2Myk6IFVzZSBhIHVuaW9uIHR5cGUgZm9yIHRoaXMuXG5mb250TmFtZSwgbW9kZSkge1xuICAvLyBSZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIGl0cyByZXBsYWNlZCB2YWx1ZSBmcm9tIHN5bWJvbC5qc1xuICBpZiAoc3JjX3N5bWJvbHNbbW9kZV1bdmFsdWVdICYmIHNyY19zeW1ib2xzW21vZGVdW3ZhbHVlXS5yZXBsYWNlKSB7XG4gICAgdmFsdWUgPSBzcmNfc3ltYm9sc1ttb2RlXVt2YWx1ZV0ucmVwbGFjZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1ldHJpY3M6IGdldENoYXJhY3Rlck1ldHJpY3ModmFsdWUsIGZvbnROYW1lLCBtb2RlKVxuICB9O1xufTtcbi8qKlxuICogTWFrZXMgYSBzeW1ib2xOb2RlIGFmdGVyIHRyYW5zbGF0aW9uIHZpYSB0aGUgbGlzdCBvZiBzeW1ib2xzIGluIHN5bWJvbHMuanMuXG4gKiBDb3JyZWN0bHkgcHVsbHMgb3V0IG1ldHJpY3MgZm9yIHRoZSBjaGFyYWN0ZXIsIGFuZCBvcHRpb25hbGx5IHRha2VzIGEgbGlzdCBvZlxuICogY2xhc3NlcyB0byBiZSBhdHRhY2hlZCB0byB0aGUgbm9kZS5cbiAqXG4gKiBUT0RPOiBtYWtlIGFyZ3VtZW50IG9yZGVyIGNsb3NlciB0byBtYWtlU3BhblxuICogVE9ETzogYWRkIGEgc2VwYXJhdGUgYXJndW1lbnQgZm9yIG1hdGggY2xhc3MgKGUuZy4gYG1vcGAsIGBtYmluYCksIHdoaWNoXG4gKiBzaG91bGQgaWYgcHJlc2VudCBjb21lIGZpcnN0IGluIGBjbGFzc2VzYC5cbiAqIFRPRE8oIzk1Myk6IE1ha2UgYG9wdGlvbnNgIG1hbmRhdG9yeSBhbmQgYWx3YXlzIHBhc3MgaXQgaW4uXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVN5bWJvbCA9IGZ1bmN0aW9uIG1ha2VTeW1ib2wodmFsdWUsIGZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIHZhciBsb29rdXAgPSBidWlsZENvbW1vbl9sb29rdXBTeW1ib2wodmFsdWUsIGZvbnROYW1lLCBtb2RlKTtcbiAgdmFyIG1ldHJpY3MgPSBsb29rdXAubWV0cmljcztcbiAgdmFsdWUgPSBsb29rdXAudmFsdWU7XG4gIHZhciBzeW1ib2xOb2RlO1xuXG4gIGlmIChtZXRyaWNzKSB7XG4gICAgdmFyIGl0YWxpYyA9IG1ldHJpY3MuaXRhbGljO1xuXG4gICAgaWYgKG1vZGUgPT09IFwidGV4dFwiIHx8IG9wdGlvbnMgJiYgb3B0aW9ucy5mb250ID09PSBcIm1hdGhpdFwiKSB7XG4gICAgICBpdGFsaWMgPSAwO1xuICAgIH1cblxuICAgIHN5bWJvbE5vZGUgPSBuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKHZhbHVlLCBtZXRyaWNzLmhlaWdodCwgbWV0cmljcy5kZXB0aCwgaXRhbGljLCBtZXRyaWNzLnNrZXcsIG1ldHJpY3Mud2lkdGgsIGNsYXNzZXMpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE8oZW1pbHkpOiBGaWd1cmUgb3V0IGEgZ29vZCB3YXkgdG8gb25seSBwcmludCB0aGlzIGluIGRldmVsb3BtZW50XG4gICAgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKFwiTm8gY2hhcmFjdGVyIG1ldHJpY3MgXCIgKyAoXCJmb3IgJ1wiICsgdmFsdWUgKyBcIicgaW4gc3R5bGUgJ1wiICsgZm9udE5hbWUgKyBcIicgYW5kIG1vZGUgJ1wiICsgbW9kZSArIFwiJ1wiKSk7XG4gICAgc3ltYm9sTm9kZSA9IG5ldyBkb21UcmVlX1N5bWJvbE5vZGUodmFsdWUsIDAsIDAsIDAsIDAsIDAsIGNsYXNzZXMpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBzeW1ib2xOb2RlLm1heEZvbnRTaXplID0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlLmlzVGlnaHQoKSkge1xuICAgICAgc3ltYm9sTm9kZS5jbGFzc2VzLnB1c2goXCJtdGlnaHRcIik7XG4gICAgfVxuXG4gICAgdmFyIGNvbG9yID0gb3B0aW9ucy5nZXRDb2xvcigpO1xuXG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBzeW1ib2xOb2RlLnN0eWxlLmNvbG9yID0gY29sb3I7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN5bWJvbE5vZGU7XG59O1xuLyoqXG4gKiBNYWtlcyBhIHN5bWJvbCBpbiBNYWluLVJlZ3VsYXIgb3IgQU1TLVJlZ3VsYXIuXG4gKiBVc2VkIGZvciByZWwsIGJpbiwgb3BlbiwgY2xvc2UsIGlubmVyLCBhbmQgcHVuY3QuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWF0aHN5bSA9IGZ1bmN0aW9uIG1hdGhzeW0odmFsdWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgaWYgKGNsYXNzZXMgPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXMgPSBbXTtcbiAgfVxuXG4gIC8vIERlY2lkZSB3aGF0IGZvbnQgdG8gcmVuZGVyIHRoZSBzeW1ib2wgaW4gYnkgaXRzIGVudHJ5IGluIHRoZSBzeW1ib2xzXG4gIC8vIHRhYmxlLlxuICAvLyBIYXZlIGEgc3BlY2lhbCBjYXNlIGZvciB3aGVuIHRoZSB2YWx1ZSA9IFxcIGJlY2F1c2UgdGhlIFxcIGlzIHVzZWQgYXMgYVxuICAvLyB0ZXh0b3JkIGluIHVuc3VwcG9ydGVkIGNvbW1hbmQgZXJyb3JzIGJ1dCBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgcmVndWxhclxuICAvLyB0ZXh0IG9yZGluYWwgYW5kIGlzIHRoZXJlZm9yZSBub3QgcHJlc2VudCBhcyBhIHN5bWJvbCBpbiB0aGUgc3ltYm9sc1xuICAvLyB0YWJsZSBmb3IgdGV4dCwgYXMgd2VsbCBhcyBhIHNwZWNpYWwgY2FzZSBmb3IgYm9sZHN5bWJvbCBiZWNhdXNlIGl0XG4gIC8vIGNhbiBiZSB1c2VkIGZvciBib2xkICsgYW5kIC1cbiAgaWYgKG9wdGlvbnMuZm9udCA9PT0gXCJib2xkc3ltYm9sXCIgJiYgYnVpbGRDb21tb25fbG9va3VwU3ltYm9sKHZhbHVlLCBcIk1haW4tQm9sZFwiLCBtb2RlKS5tZXRyaWNzKSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodmFsdWUsIFwiTWFpbi1Cb2xkXCIsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtcIm1hdGhiZlwiXSkpO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBcIlxcXFxcIiB8fCBzcmNfc3ltYm9sc1ttb2RlXVt2YWx1ZV0uZm9udCA9PT0gXCJtYWluXCIpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh2YWx1ZSwgXCJNYWluLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodmFsdWUsIFwiQU1TLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoW1wiYW1zcm1cIl0pKTtcbiAgfVxufTtcbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBvZiB0aGUgdHdvIGZvbnQgbmFtZXMgKE1haW4tSXRhbGljIGFuZCBNYXRoLUl0YWxpYykgYW5kXG4gKiBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1haW5kZWZhdWx0IG9yIG1hdGhpdCkgdG8gdXNlIGZvciBkZWZhdWx0IG1hdGggZm9udCxcbiAqIGRlcGVuZGluZyBvbiB0aGUgc3ltYm9sLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21hdGhkZWZhdWx0ID0gZnVuY3Rpb24gbWF0aGRlZmF1bHQodmFsdWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgaWYgKC9bMC05XS8udGVzdCh2YWx1ZS5jaGFyQXQoMCkpIHx8IC8vIGdseXBocyBmb3IgXFxpbWF0aCBhbmQgXFxqbWF0aCBkbyBub3QgZXhpc3QgaW4gTWF0aC1JdGFsaWMgc28gd2VcbiAgLy8gbmVlZCB0byB1c2UgTWFpbi1JdGFsaWMgaW5zdGVhZFxuICB1dGlscy5jb250YWlucyhtYXRoaXRMZXR0ZXJzLCB2YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIixcbiAgICAgIGZvbnRDbGFzczogXCJtYXRoaXRcIlxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1hdGgtSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGRlZmF1bHRcIlxuICAgIH07XG4gIH1cbn07XG4vKipcbiAqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIGZvbnQgbmFtZXMgKE1haW4tSXRhbGljLCBNYXRoLUl0YWxpYywgYW5kIENhbGlncmFwaGljKVxuICogYW5kIGNvcnJlc3BvbmRpbmcgc3R5bGUgdGFncyAobWF0aGl0LCBtYXRoZGVmYXVsdCwgb3IgbWF0aGNhbCkgdG8gdXNlIGZvciBmb250XG4gKiBcIm1hdGhub3JtYWxcIiwgZGVwZW5kaW5nIG9uIHRoZSBzeW1ib2wuICBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZvbnRNYXAgZm9yXG4gKiBmb250IFwibWF0aG5vcm1hbFwiLlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX21hdGhub3JtYWwgPSBmdW5jdGlvbiBtYXRobm9ybWFsKHZhbHVlLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIGlmICh1dGlscy5jb250YWlucyhtYXRoaXRMZXR0ZXJzLCB2YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIixcbiAgICAgIGZvbnRDbGFzczogXCJtYXRoaXRcIlxuICAgIH07XG4gIH0gZWxzZSBpZiAoL1swLTldLy50ZXN0KHZhbHVlLmNoYXJBdCgwKSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiQ2FsaWdyYXBoaWMtUmVndWxhclwiLFxuICAgICAgZm9udENsYXNzOiBcIm1hdGhjYWxcIlxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnROYW1lOiBcIk1hdGgtSXRhbGljXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGRlZmF1bHRcIlxuICAgIH07XG4gIH1cbn07XG4vKipcbiAqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIHR3byBmb250IG5hbWVzIChNYWluLUJvbGQgYW5kIE1hdGgtQm9sZEl0YWxpYykgYW5kXG4gKiBjb3JyZXNwb25kaW5nIHN0eWxlIHRhZ3MgKG1hdGhiZiBvciBib2xkc3ltYm9sKSB0byB1c2UgZm9yIGZvbnQgXCJib2xkc3ltYm9sXCIsXG4gKiBkZXBlbmRpbmcgb24gdGhlIHN5bWJvbC4gIFVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgZm9udE1hcCBmb3IgZm9udFxuICogXCJib2xkc3ltYm9sXCIuXG4gKi9cblxuXG52YXIgYm9sZHN5bWJvbCA9IGZ1bmN0aW9uIGJvbGRzeW1ib2wodmFsdWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgaWYgKGJ1aWxkQ29tbW9uX2xvb2t1cFN5bWJvbCh2YWx1ZSwgXCJNYXRoLUJvbGRJdGFsaWNcIiwgbW9kZSkubWV0cmljcykge1xuICAgIHJldHVybiB7XG4gICAgICBmb250TmFtZTogXCJNYXRoLUJvbGRJdGFsaWNcIixcbiAgICAgIGZvbnRDbGFzczogXCJib2xkc3ltYm9sXCJcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIFNvbWUgZ2x5cGhzIGRvIG5vdCBleGlzdCBpbiBNYXRoLUJvbGRJdGFsaWMgc28gd2UgbmVlZCB0byB1c2VcbiAgICAvLyBNYWluLUJvbGQgaW5zdGVhZC5cbiAgICByZXR1cm4ge1xuICAgICAgZm9udE5hbWU6IFwiTWFpbi1Cb2xkXCIsXG4gICAgICBmb250Q2xhc3M6IFwibWF0aGJmXCJcbiAgICB9O1xuICB9XG59O1xuLyoqXG4gKiBNYWtlcyBlaXRoZXIgYSBtYXRob3JkIG9yIHRleHRvcmQgaW4gdGhlIGNvcnJlY3QgZm9udCBhbmQgY29sb3IuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZU9yZCA9IGZ1bmN0aW9uIG1ha2VPcmQoZ3JvdXAsIG9wdGlvbnMsIHR5cGUpIHtcbiAgdmFyIG1vZGUgPSBncm91cC5tb2RlO1xuICB2YXIgdGV4dCA9IGdyb3VwLnRleHQ7XG4gIHZhciBjbGFzc2VzID0gW1wibW9yZFwiXTsgLy8gTWF0aCBtb2RlIG9yIE9sZCBmb250IChpLmUuIFxccm0pXG5cbiAgdmFyIGlzRm9udCA9IG1vZGUgPT09IFwibWF0aFwiIHx8IG1vZGUgPT09IFwidGV4dFwiICYmIG9wdGlvbnMuZm9udDtcbiAgdmFyIGZvbnRPckZhbWlseSA9IGlzRm9udCA/IG9wdGlvbnMuZm9udCA6IG9wdGlvbnMuZm9udEZhbWlseTtcblxuICBpZiAodGV4dC5jaGFyQ29kZUF0KDApID09PSAweEQ4MzUpIHtcbiAgICAvLyBzdXJyb2dhdGUgcGFpcnMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50XG4gICAgdmFyIF93aWRlQ2hhcmFjdGVyRm9udCA9IHdpZGVfY2hhcmFjdGVyX3dpZGVDaGFyYWN0ZXJGb250KHRleHQsIG1vZGUpLFxuICAgICAgICB3aWRlRm9udE5hbWUgPSBfd2lkZUNoYXJhY3RlckZvbnRbMF0sXG4gICAgICAgIHdpZGVGb250Q2xhc3MgPSBfd2lkZUNoYXJhY3RlckZvbnRbMV07XG5cbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCB3aWRlRm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KHdpZGVGb250Q2xhc3MpKTtcbiAgfSBlbHNlIGlmIChmb250T3JGYW1pbHkpIHtcbiAgICB2YXIgZm9udE5hbWU7XG4gICAgdmFyIGZvbnRDbGFzc2VzO1xuXG4gICAgaWYgKGZvbnRPckZhbWlseSA9PT0gXCJib2xkc3ltYm9sXCIgfHwgZm9udE9yRmFtaWx5ID09PSBcIm1hdGhub3JtYWxcIikge1xuICAgICAgdmFyIGZvbnREYXRhID0gZm9udE9yRmFtaWx5ID09PSBcImJvbGRzeW1ib2xcIiA/IGJvbGRzeW1ib2wodGV4dCwgbW9kZSwgb3B0aW9ucywgY2xhc3NlcykgOiBidWlsZENvbW1vbl9tYXRobm9ybWFsKHRleHQsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICAgICAgZm9udE5hbWUgPSBmb250RGF0YS5mb250TmFtZTtcbiAgICAgIGZvbnRDbGFzc2VzID0gW2ZvbnREYXRhLmZvbnRDbGFzc107XG4gICAgfSBlbHNlIGlmICh1dGlscy5jb250YWlucyhtYXRoaXRMZXR0ZXJzLCB0ZXh0KSkge1xuICAgICAgZm9udE5hbWUgPSBcIk1haW4tSXRhbGljXCI7XG4gICAgICBmb250Q2xhc3NlcyA9IFtcIm1hdGhpdFwiXTtcbiAgICB9IGVsc2UgaWYgKGlzRm9udCkge1xuICAgICAgZm9udE5hbWUgPSBmb250TWFwW2ZvbnRPckZhbWlseV0uZm9udE5hbWU7XG4gICAgICBmb250Q2xhc3NlcyA9IFtmb250T3JGYW1pbHldO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb250TmFtZSA9IHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnRPckZhbWlseSwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7XG4gICAgICBmb250Q2xhc3NlcyA9IFtmb250T3JGYW1pbHksIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGVdO1xuICAgIH1cblxuICAgIGlmIChidWlsZENvbW1vbl9sb29rdXBTeW1ib2wodGV4dCwgZm9udE5hbWUsIG1vZGUpLm1ldHJpY3MpIHtcbiAgICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHRleHQsIGZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChmb250Q2xhc3NlcykpO1xuICAgIH0gZWxzZSBpZiAobGlnYXR1cmVzLmhhc093blByb3BlcnR5KHRleHQpICYmIGZvbnROYW1lLnN1YnN0cigwLCAxMCkgPT09IFwiVHlwZXdyaXRlclwiKSB7XG4gICAgICAvLyBEZWNvbnN0cnVjdCBsaWdhdHVyZXMgaW4gbW9ub3NwYWNlIGZvbnRzIChcXHRleHR0dCwgXFx0dCkuXG4gICAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0W2ldLCBmb250TmFtZSwgbW9kZSwgb3B0aW9ucywgY2xhc3Nlcy5jb25jYXQoZm9udENsYXNzZXMpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlRnJhZ21lbnQocGFydHMpO1xuICAgIH1cbiAgfSAvLyBNYWtlcyBhIHN5bWJvbCBpbiB0aGUgZGVmYXVsdCBmb250IGZvciBtYXRob3JkcyBhbmQgdGV4dG9yZHMuXG5cblxuICBpZiAodHlwZSA9PT0gXCJtYXRob3JkXCIpIHtcbiAgICB2YXIgZm9udExvb2t1cCA9IGJ1aWxkQ29tbW9uX21hdGhkZWZhdWx0KHRleHQsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbl9tYWtlU3ltYm9sKHRleHQsIGZvbnRMb29rdXAuZm9udE5hbWUsIG1vZGUsIG9wdGlvbnMsIGNsYXNzZXMuY29uY2F0KFtmb250TG9va3VwLmZvbnRDbGFzc10pKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcInRleHRvcmRcIikge1xuICAgIHZhciBmb250ID0gc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0gJiYgc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0uZm9udDtcblxuICAgIGlmIChmb250ID09PSBcImFtc1wiKSB7XG4gICAgICB2YXIgX2ZvbnROYW1lID0gcmV0cmlldmVUZXh0Rm9udE5hbWUoXCJhbXNybVwiLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKTtcblxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uX21ha2VTeW1ib2wodGV4dCwgX2ZvbnROYW1lLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChcImFtc3JtXCIsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpKTtcbiAgICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWFpblwiIHx8ICFmb250KSB7XG4gICAgICB2YXIgX2ZvbnROYW1lMiA9IHJldHJpZXZlVGV4dEZvbnROYW1lKFwidGV4dHJtXCIsIG9wdGlvbnMuZm9udFdlaWdodCwgb3B0aW9ucy5mb250U2hhcGUpO1xuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBfZm9udE5hbWUyLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvbnRzIGFkZGVkIGJ5IHBsdWdpbnNcbiAgICAgIHZhciBfZm9udE5hbWUzID0gcmV0cmlldmVUZXh0Rm9udE5hbWUoZm9udCwgb3B0aW9ucy5mb250V2VpZ2h0LCBvcHRpb25zLmZvbnRTaGFwZSk7IC8vIFdlIGFkZCBmb250IG5hbWUgYXMgYSBjc3MgY2xhc3NcblxuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVN5bWJvbCh0ZXh0LCBfZm9udE5hbWUzLCBtb2RlLCBvcHRpb25zLCBjbGFzc2VzLmNvbmNhdChfZm9udE5hbWUzLCBvcHRpb25zLmZvbnRXZWlnaHQsIG9wdGlvbnMuZm9udFNoYXBlKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVuZXhwZWN0ZWQgdHlwZTogXCIgKyB0eXBlICsgXCIgaW4gbWFrZU9yZFwiKTtcbiAgfVxufTtcbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHN1YnNlcXVlbnQgc3ltYm9sTm9kZXMgaGF2ZSB0aGUgc2FtZSBjbGFzc2VzLCBza2V3LCBtYXhGb250LFxuICogYW5kIHN0eWxlcy5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9jYW5Db21iaW5lID0gZnVuY3Rpb24gY2FuQ29tYmluZShwcmV2LCBuZXh0KSB7XG4gIGlmIChjcmVhdGVDbGFzcyhwcmV2LmNsYXNzZXMpICE9PSBjcmVhdGVDbGFzcyhuZXh0LmNsYXNzZXMpIHx8IHByZXYuc2tldyAhPT0gbmV4dC5za2V3IHx8IHByZXYubWF4Rm9udFNpemUgIT09IG5leHQubWF4Rm9udFNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBzdHlsZSBpbiBwcmV2LnN0eWxlKSB7XG4gICAgaWYgKHByZXYuc3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGUpICYmIHByZXYuc3R5bGVbc3R5bGVdICE9PSBuZXh0LnN0eWxlW3N0eWxlXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIF9zdHlsZSBpbiBuZXh0LnN0eWxlKSB7XG4gICAgaWYgKG5leHQuc3R5bGUuaGFzT3duUHJvcGVydHkoX3N0eWxlKSAmJiBwcmV2LnN0eWxlW19zdHlsZV0gIT09IG5leHQuc3R5bGVbX3N0eWxlXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogQ29tYmluZSBjb25zZXF1ZXRpdmUgZG9tVHJlZS5zeW1ib2xOb2RlcyBpbnRvIGEgc2luZ2xlIHN5bWJvbE5vZGUuXG4gKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIGFyZ3VtZW50LlxuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX3RyeUNvbWJpbmVDaGFycyA9IGZ1bmN0aW9uIHRyeUNvbWJpbmVDaGFycyhjaGFycykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIHZhciBwcmV2ID0gY2hhcnNbaV07XG4gICAgdmFyIG5leHQgPSBjaGFyc1tpICsgMV07XG5cbiAgICBpZiAocHJldiBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSAmJiBuZXh0IGluc3RhbmNlb2YgZG9tVHJlZV9TeW1ib2xOb2RlICYmIGJ1aWxkQ29tbW9uX2NhbkNvbWJpbmUocHJldiwgbmV4dCkpIHtcbiAgICAgIHByZXYudGV4dCArPSBuZXh0LnRleHQ7XG4gICAgICBwcmV2LmhlaWdodCA9IE1hdGgubWF4KHByZXYuaGVpZ2h0LCBuZXh0LmhlaWdodCk7XG4gICAgICBwcmV2LmRlcHRoID0gTWF0aC5tYXgocHJldi5kZXB0aCwgbmV4dC5kZXB0aCk7IC8vIFVzZSB0aGUgbGFzdCBjaGFyYWN0ZXIncyBpdGFsaWMgY29ycmVjdGlvbiBzaW5jZSB3ZSB1c2VcbiAgICAgIC8vIGl0IHRvIGFkZCBwYWRkaW5nIHRvIHRoZSByaWdodCBvZiB0aGUgc3BhbiBjcmVhdGVkIGZyb21cbiAgICAgIC8vIHRoZSBjb21iaW5lZCBjaGFyYWN0ZXJzLlxuXG4gICAgICBwcmV2Lml0YWxpYyA9IG5leHQuaXRhbGljO1xuICAgICAgY2hhcnMuc3BsaWNlKGkgKyAxLCAxKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2hhcnM7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGhlaWdodCwgZGVwdGgsIGFuZCBtYXhGb250U2l6ZSBvZiBhbiBlbGVtZW50IGJhc2VkIG9uIGl0c1xuICogY2hpbGRyZW4uXG4gKi9cblxuXG52YXIgc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4gPSBmdW5jdGlvbiBzaXplRWxlbWVudEZyb21DaGlsZHJlbihlbGVtKSB7XG4gIHZhciBoZWlnaHQgPSAwO1xuICB2YXIgZGVwdGggPSAwO1xuICB2YXIgbWF4Rm9udFNpemUgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGVsZW0uY2hpbGRyZW5baV07XG5cbiAgICBpZiAoY2hpbGQuaGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICBoZWlnaHQgPSBjaGlsZC5oZWlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkLmRlcHRoID4gZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gY2hpbGQuZGVwdGg7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkLm1heEZvbnRTaXplID4gbWF4Rm9udFNpemUpIHtcbiAgICAgIG1heEZvbnRTaXplID0gY2hpbGQubWF4Rm9udFNpemU7XG4gICAgfVxuICB9XG5cbiAgZWxlbS5oZWlnaHQgPSBoZWlnaHQ7XG4gIGVsZW0uZGVwdGggPSBkZXB0aDtcbiAgZWxlbS5tYXhGb250U2l6ZSA9IG1heEZvbnRTaXplO1xufTtcbi8qKlxuICogTWFrZXMgYSBzcGFuIHdpdGggdGhlIGdpdmVuIGxpc3Qgb2YgY2xhc3NlcywgbGlzdCBvZiBjaGlsZHJlbiwgYW5kIG9wdGlvbnMuXG4gKlxuICogVE9ETygjOTUzKTogRW5zdXJlIHRoYXQgYG9wdGlvbnNgIGlzIGFsd2F5cyBwcm92aWRlZCAoY3VycmVudGx5IHNvbWUgY2FsbFxuICogc2l0ZXMgZG9uJ3QgcGFzcyBpdCkgYW5kIG1ha2UgdGhlIHR5cGUgYmVsb3cgbWFuZGF0b3J5LlxuICogVE9ETzogYWRkIGEgc2VwYXJhdGUgYXJndW1lbnQgZm9yIG1hdGggY2xhc3MgKGUuZy4gYG1vcGAsIGBtYmluYCksIHdoaWNoXG4gKiBzaG91bGQgaWYgcHJlc2VudCBjb21lIGZpcnN0IGluIGBjbGFzc2VzYC5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYWtlU3BhbiA9IGZ1bmN0aW9uIG1ha2VTcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSkge1xuICB2YXIgc3BhbiA9IG5ldyBkb21UcmVlX1NwYW4oY2xhc3NlcywgY2hpbGRyZW4sIG9wdGlvbnMsIHN0eWxlKTtcbiAgc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oc3Bhbik7XG4gIHJldHVybiBzcGFuO1xufTsgLy8gU1ZHIG9uZSBpcyBzaW1wbGVyIC0tIGRvZXNuJ3QgcmVxdWlyZSBoZWlnaHQsIGRlcHRoLCBtYXgtZm9udCBzZXR0aW5nLlxuLy8gVGhpcyBpcyBhbHNvIGEgc2VwYXJhdGUgbWV0aG9kIGZvciB0eXBlc2FmZXR5LlxuXG5cbnZhciBidWlsZENvbW1vbl9tYWtlU3ZnU3BhbiA9IGZ1bmN0aW9uIG1ha2VTdmdTcGFuKGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zLCBzdHlsZSkge1xuICByZXR1cm4gbmV3IGRvbVRyZWVfU3BhbihjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucywgc3R5bGUpO1xufTtcblxudmFyIG1ha2VMaW5lU3BhbiA9IGZ1bmN0aW9uIG1ha2VMaW5lU3BhbihjbGFzc05hbWUsIG9wdGlvbnMsIHRoaWNrbmVzcykge1xuICB2YXIgbGluZSA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtjbGFzc05hbWVdLCBbXSwgb3B0aW9ucyk7XG4gIGxpbmUuaGVpZ2h0ID0gTWF0aC5tYXgodGhpY2tuZXNzIHx8IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcywgb3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzKTtcbiAgbGluZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCA9IGxpbmUuaGVpZ2h0ICsgXCJlbVwiO1xuICBsaW5lLm1heEZvbnRTaXplID0gMS4wO1xuICByZXR1cm4gbGluZTtcbn07XG4vKipcbiAqIE1ha2VzIGFuIGFuY2hvciB3aXRoIHRoZSBnaXZlbiBocmVmLCBsaXN0IG9mIGNsYXNzZXMsIGxpc3Qgb2YgY2hpbGRyZW4sXG4gKiBhbmQgb3B0aW9ucy5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYWtlQW5jaG9yID0gZnVuY3Rpb24gbWFrZUFuY2hvcihocmVmLCBjbGFzc2VzLCBjaGlsZHJlbiwgb3B0aW9ucykge1xuICB2YXIgYW5jaG9yID0gbmV3IGRvbVRyZWVfQW5jaG9yKGhyZWYsIGNsYXNzZXMsIGNoaWxkcmVuLCBvcHRpb25zKTtcbiAgc2l6ZUVsZW1lbnRGcm9tQ2hpbGRyZW4oYW5jaG9yKTtcbiAgcmV0dXJuIGFuY2hvcjtcbn07XG4vKipcbiAqIE1ha2VzIGEgZG9jdW1lbnQgZnJhZ21lbnQgd2l0aCB0aGUgZ2l2ZW4gbGlzdCBvZiBjaGlsZHJlbi5cbiAqL1xuXG5cbnZhciBidWlsZENvbW1vbl9tYWtlRnJhZ21lbnQgPSBmdW5jdGlvbiBtYWtlRnJhZ21lbnQoY2hpbGRyZW4pIHtcbiAgdmFyIGZyYWdtZW50ID0gbmV3IHRyZWVfRG9jdW1lbnRGcmFnbWVudChjaGlsZHJlbik7XG4gIHNpemVFbGVtZW50RnJvbUNoaWxkcmVuKGZyYWdtZW50KTtcbiAgcmV0dXJuIGZyYWdtZW50O1xufTtcbi8qKlxuICogV3JhcHMgZ3JvdXAgaW4gYSBzcGFuIGlmIGl0J3MgYSBkb2N1bWVudCBmcmFnbWVudCwgYWxsb3dpbmcgdG8gYXBwbHkgY2xhc3Nlc1xuICogYW5kIHN0eWxlc1xuICovXG5cblxudmFyIGJ1aWxkQ29tbW9uX3dyYXBGcmFnbWVudCA9IGZ1bmN0aW9uIHdyYXBGcmFnbWVudChncm91cCwgb3B0aW9ucykge1xuICBpZiAoZ3JvdXAgaW5zdGFuY2VvZiB0cmVlX0RvY3VtZW50RnJhZ21lbnQpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb25fbWFrZVNwYW4oW10sIFtncm91cF0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIGdyb3VwO1xufTsgLy8gVGhlc2UgYXJlIGV4YWN0IG9iamVjdCB0eXBlcyB0byBjYXRjaCB0eXBvcyBpbiB0aGUgbmFtZXMgb2YgdGhlIG9wdGlvbmFsIGZpZWxkcy5cblxuXG4vLyBDb21wdXRlcyB0aGUgdXBkYXRlZCBgY2hpbGRyZW5gIGxpc3QgYW5kIHRoZSBvdmVyYWxsIGRlcHRoLlxuLy9cbi8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlVkxpc3QgbWFrZXMgaXQgZWFzaWVyIHRvIGVuZm9yY2UgdHlwZSBzYWZldHkgYnlcbi8vIGFsbG93aW5nIGVhcmx5IGV4aXRzIChyZXR1cm5zKSBpbiB0aGUgbG9naWMuXG52YXIgZ2V0Vkxpc3RDaGlsZHJlbkFuZERlcHRoID0gZnVuY3Rpb24gZ2V0Vkxpc3RDaGlsZHJlbkFuZERlcHRoKHBhcmFtcykge1xuICBpZiAocGFyYW1zLnBvc2l0aW9uVHlwZSA9PT0gXCJpbmRpdmlkdWFsU2hpZnRcIikge1xuICAgIHZhciBvbGRDaGlsZHJlbiA9IHBhcmFtcy5jaGlsZHJlbjtcbiAgICB2YXIgY2hpbGRyZW4gPSBbb2xkQ2hpbGRyZW5bMF1dOyAvLyBBZGQgaW4ga2VybnMgdG8gdGhlIGxpc3Qgb2YgcGFyYW1zLmNoaWxkcmVuIHRvIGdldCBlYWNoIGVsZW1lbnQgdG8gYmVcbiAgICAvLyBzaGlmdGVkIHRvIHRoZSBjb3JyZWN0IHNwZWNpZmllZCBzaGlmdFxuXG4gICAgdmFyIF9kZXB0aCA9IC1vbGRDaGlsZHJlblswXS5zaGlmdCAtIG9sZENoaWxkcmVuWzBdLmVsZW0uZGVwdGg7XG5cbiAgICB2YXIgY3VyclBvcyA9IF9kZXB0aDtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgb2xkQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkaWZmID0gLW9sZENoaWxkcmVuW2ldLnNoaWZ0IC0gY3VyclBvcyAtIG9sZENoaWxkcmVuW2ldLmVsZW0uZGVwdGg7XG4gICAgICB2YXIgc2l6ZSA9IGRpZmYgLSAob2xkQ2hpbGRyZW5baSAtIDFdLmVsZW0uaGVpZ2h0ICsgb2xkQ2hpbGRyZW5baSAtIDFdLmVsZW0uZGVwdGgpO1xuICAgICAgY3VyclBvcyA9IGN1cnJQb3MgKyBkaWZmO1xuICAgICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzaXplXG4gICAgICB9KTtcbiAgICAgIGNoaWxkcmVuLnB1c2gob2xkQ2hpbGRyZW5baV0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICBkZXB0aDogX2RlcHRoXG4gICAgfTtcbiAgfVxuXG4gIHZhciBkZXB0aDtcblxuICBpZiAocGFyYW1zLnBvc2l0aW9uVHlwZSA9PT0gXCJ0b3BcIikge1xuICAgIC8vIFdlIGFsd2F5cyBzdGFydCBhdCB0aGUgYm90dG9tLCBzbyBjYWxjdWxhdGUgdGhlIGJvdHRvbSBieSBhZGRpbmcgdXBcbiAgICAvLyBhbGwgdGhlIHNpemVzXG4gICAgdmFyIGJvdHRvbSA9IHBhcmFtcy5wb3NpdGlvbkRhdGE7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcGFyYW1zLmNoaWxkcmVuLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGNoaWxkID0gcGFyYW1zLmNoaWxkcmVuW19pXTtcbiAgICAgIGJvdHRvbSAtPSBjaGlsZC50eXBlID09PSBcImtlcm5cIiA/IGNoaWxkLnNpemUgOiBjaGlsZC5lbGVtLmhlaWdodCArIGNoaWxkLmVsZW0uZGVwdGg7XG4gICAgfVxuXG4gICAgZGVwdGggPSBib3R0b207XG4gIH0gZWxzZSBpZiAocGFyYW1zLnBvc2l0aW9uVHlwZSA9PT0gXCJib3R0b21cIikge1xuICAgIGRlcHRoID0gLXBhcmFtcy5wb3NpdGlvbkRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGZpcnN0Q2hpbGQgPSBwYXJhbXMuY2hpbGRyZW5bMF07XG5cbiAgICBpZiAoZmlyc3RDaGlsZC50eXBlICE9PSBcImVsZW1cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaXJzdCBjaGlsZCBtdXN0IGhhdmUgdHlwZSBcImVsZW1cIi4nKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnBvc2l0aW9uVHlwZSA9PT0gXCJzaGlmdFwiKSB7XG4gICAgICBkZXB0aCA9IC1maXJzdENoaWxkLmVsZW0uZGVwdGggLSBwYXJhbXMucG9zaXRpb25EYXRhO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLnBvc2l0aW9uVHlwZSA9PT0gXCJmaXJzdEJhc2VsaW5lXCIpIHtcbiAgICAgIGRlcHRoID0gLWZpcnN0Q2hpbGQuZWxlbS5kZXB0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwb3NpdGlvblR5cGUgXCIgKyBwYXJhbXMucG9zaXRpb25UeXBlICsgXCIuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hpbGRyZW46IHBhcmFtcy5jaGlsZHJlbixcbiAgICBkZXB0aDogZGVwdGhcbiAgfTtcbn07XG4vKipcbiAqIE1ha2VzIGEgdmVydGljYWwgbGlzdCBieSBzdGFja2luZyBlbGVtZW50cyBhbmQga2VybnMgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gKiBBbGxvd3MgZm9yIG1hbnkgZGlmZmVyZW50IHdheXMgb2Ygc3BlY2lmeWluZyB0aGUgcG9zaXRpb25pbmcgbWV0aG9kLlxuICpcbiAqIFNlZSBWTGlzdFBhcmFtIGRvY3VtZW50YXRpb24gYWJvdmUuXG4gKi9cblxuXG52YXIgYnVpbGRDb21tb25fbWFrZVZMaXN0ID0gZnVuY3Rpb24gbWFrZVZMaXN0KHBhcmFtcywgb3B0aW9ucykge1xuICB2YXIgX2dldFZMaXN0Q2hpbGRyZW5BbmREID0gZ2V0Vkxpc3RDaGlsZHJlbkFuZERlcHRoKHBhcmFtcyksXG4gICAgICBjaGlsZHJlbiA9IF9nZXRWTGlzdENoaWxkcmVuQW5kRC5jaGlsZHJlbixcbiAgICAgIGRlcHRoID0gX2dldFZMaXN0Q2hpbGRyZW5BbmRELmRlcHRoOyAvLyBDcmVhdGUgYSBzdHJ1dCB0aGF0IGlzIHRhbGxlciB0aGFuIGFueSBsaXN0IGl0ZW0uIFRoZSBzdHJ1dCBpcyBhZGRlZCB0b1xuICAvLyBlYWNoIGl0ZW0sIHdoZXJlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBpdGVtJ3MgYmFzZWxpbmUuIFNpbmNlIGl0IGhhc1xuICAvLyBgb3ZlcmZsb3c6aGlkZGVuYCwgdGhlIHN0cnV0J3MgdG9wIGVkZ2Ugd2lsbCBzaXQgb24gdGhlIGl0ZW0ncyBsaW5lIGJveCdzXG4gIC8vIHRvcCBlZGdlIGFuZCB0aGUgc3RydXQncyBib3R0b20gZWRnZSB3aWxsIHNpdCBvbiB0aGUgaXRlbSdzIGJhc2VsaW5lLFxuICAvLyB3aXRoIG5vIGFkZGl0aW9uYWwgbGluZS1oZWlnaHQgc3BhY2luZy4gVGhpcyBhbGxvd3MgdGhlIGl0ZW0gYmFzZWxpbmUgdG9cbiAgLy8gYmUgcG9zaXRpb25lZCBwcmVjaXNlbHkgd2l0aG91dCB3b3JyeWluZyBhYm91dCBmb250IGFzY2VudCBhbmRcbiAgLy8gbGluZS1oZWlnaHQuXG5cblxuICB2YXIgcHN0cnV0U2l6ZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IFwiZWxlbVwiKSB7XG4gICAgICB2YXIgZWxlbSA9IGNoaWxkLmVsZW07XG4gICAgICBwc3RydXRTaXplID0gTWF0aC5tYXgocHN0cnV0U2l6ZSwgZWxlbS5tYXhGb250U2l6ZSwgZWxlbS5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHBzdHJ1dFNpemUgKz0gMjtcbiAgdmFyIHBzdHJ1dCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcInBzdHJ1dFwiXSwgW10pO1xuICBwc3RydXQuc3R5bGUuaGVpZ2h0ID0gcHN0cnV0U2l6ZSArIFwiZW1cIjsgLy8gQ3JlYXRlIGEgbmV3IGxpc3Qgb2YgYWN0dWFsIGNoaWxkcmVuIGF0IHRoZSBjb3JyZWN0IG9mZnNldHNcblxuICB2YXIgcmVhbENoaWxkcmVuID0gW107XG4gIHZhciBtaW5Qb3MgPSBkZXB0aDtcbiAgdmFyIG1heFBvcyA9IGRlcHRoO1xuICB2YXIgY3VyclBvcyA9IGRlcHRoO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGNoaWxkcmVuLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgX2NoaWxkID0gY2hpbGRyZW5bX2kyXTtcblxuICAgIGlmIChfY2hpbGQudHlwZSA9PT0gXCJrZXJuXCIpIHtcbiAgICAgIGN1cnJQb3MgKz0gX2NoaWxkLnNpemU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfZWxlbSA9IF9jaGlsZC5lbGVtO1xuICAgICAgdmFyIGNsYXNzZXMgPSBfY2hpbGQud3JhcHBlckNsYXNzZXMgfHwgW107XG4gICAgICB2YXIgc3R5bGUgPSBfY2hpbGQud3JhcHBlclN0eWxlIHx8IHt9O1xuICAgICAgdmFyIGNoaWxkV3JhcCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKGNsYXNzZXMsIFtwc3RydXQsIF9lbGVtXSwgdW5kZWZpbmVkLCBzdHlsZSk7XG4gICAgICBjaGlsZFdyYXAuc3R5bGUudG9wID0gLXBzdHJ1dFNpemUgLSBjdXJyUG9zIC0gX2VsZW0uZGVwdGggKyBcImVtXCI7XG5cbiAgICAgIGlmIChfY2hpbGQubWFyZ2luTGVmdCkge1xuICAgICAgICBjaGlsZFdyYXAuc3R5bGUubWFyZ2luTGVmdCA9IF9jaGlsZC5tYXJnaW5MZWZ0O1xuICAgICAgfVxuXG4gICAgICBpZiAoX2NoaWxkLm1hcmdpblJpZ2h0KSB7XG4gICAgICAgIGNoaWxkV3JhcC5zdHlsZS5tYXJnaW5SaWdodCA9IF9jaGlsZC5tYXJnaW5SaWdodDtcbiAgICAgIH1cblxuICAgICAgcmVhbENoaWxkcmVuLnB1c2goY2hpbGRXcmFwKTtcbiAgICAgIGN1cnJQb3MgKz0gX2VsZW0uaGVpZ2h0ICsgX2VsZW0uZGVwdGg7XG4gICAgfVxuXG4gICAgbWluUG9zID0gTWF0aC5taW4obWluUG9zLCBjdXJyUG9zKTtcbiAgICBtYXhQb3MgPSBNYXRoLm1heChtYXhQb3MsIGN1cnJQb3MpO1xuICB9IC8vIFRoZSB2bGlzdCBjb250ZW50cyBnbyBpbiBhIHRhYmxlLWNlbGwgd2l0aCBgdmVydGljYWwtYWxpZ246Ym90dG9tYC5cbiAgLy8gVGhpcyBjZWxsJ3MgYm90dG9tIGVkZ2Ugd2lsbCBkZXRlcm1pbmUgdGhlIGNvbnRhaW5pbmcgdGFibGUncyBiYXNlbGluZVxuICAvLyB3aXRob3V0IG92ZXJseSBleHBhbmRpbmcgdGhlIGNvbnRhaW5pbmcgbGluZS1ib3guXG5cblxuICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdFwiXSwgcmVhbENoaWxkcmVuKTtcbiAgdmxpc3Quc3R5bGUuaGVpZ2h0ID0gbWF4UG9zICsgXCJlbVwiOyAvLyBBIHNlY29uZCByb3cgaXMgdXNlZCBpZiBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSB2bGlzdCdzIGRlcHRoLlxuXG4gIHZhciByb3dzO1xuXG4gIGlmIChtaW5Qb3MgPCAwKSB7XG4gICAgLy8gV2Ugd2lsbCBkZWZpbmUgZGVwdGggaW4gYW4gZW1wdHkgc3BhbiB3aXRoIGRpc3BsYXk6IHRhYmxlLWNlbGwuXG4gICAgLy8gSXQgc2hvdWxkIHJlbmRlciB3aXRoIHRoZSBoZWlnaHQgdGhhdCB3ZSBkZWZpbmUuIEJ1dCBDaHJvbWUsIGluXG4gICAgLy8gY29udGVudGVkaXRhYmxlIG1vZGUgb25seSwgdHJlYXRzIHRoYXQgc3BhbiBhcyBpZiBpdCBjb250YWlucyBzb21lXG4gICAgLy8gdGV4dCBjb250ZW50LiBBbmQgdGhhdCBtaW4taGVpZ2h0IG92ZXItcmlkZXMgb3VyIGRlc2lyZWQgaGVpZ2h0LlxuICAgIC8vIFNvIHdlIHB1dCBhbm90aGVyIGVtcHR5IHNwYW4gaW5zaWRlIHRoZSBkZXB0aCBzdHJ1dCBzcGFuLlxuICAgIHZhciBlbXB0eVNwYW4gPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXSwgW10pO1xuICAgIHZhciBkZXB0aFN0cnV0ID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3RcIl0sIFtlbXB0eVNwYW5dKTtcbiAgICBkZXB0aFN0cnV0LnN0eWxlLmhlaWdodCA9IC1taW5Qb3MgKyBcImVtXCI7IC8vIFNhZmFyaSB3YW50cyB0aGUgZmlyc3Qgcm93IHRvIGhhdmUgaW5saW5lIGNvbnRlbnQ7IG90aGVyd2lzZSBpdFxuICAgIC8vIHB1dHMgdGhlIGJvdHRvbSBvZiB0aGUgKnNlY29uZCogcm93IG9uIHRoZSBiYXNlbGluZS5cblxuICAgIHZhciB0b3BTdHJ1dCA9IGJ1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0LXNcIl0sIFtuZXcgZG9tVHJlZV9TeW1ib2xOb2RlKFwiXFx1MjAwQlwiKV0pO1xuICAgIHJvd3MgPSBbYnVpbGRDb21tb25fbWFrZVNwYW4oW1widmxpc3QtclwiXSwgW3ZsaXN0LCB0b3BTdHJ1dF0pLCBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC1yXCJdLCBbZGVwdGhTdHJ1dF0pXTtcbiAgfSBlbHNlIHtcbiAgICByb3dzID0gW2J1aWxkQ29tbW9uX21ha2VTcGFuKFtcInZsaXN0LXJcIl0sIFt2bGlzdF0pXTtcbiAgfVxuXG4gIHZhciB2dGFibGUgPSBidWlsZENvbW1vbl9tYWtlU3BhbihbXCJ2bGlzdC10XCJdLCByb3dzKTtcblxuICBpZiAocm93cy5sZW5ndGggPT09IDIpIHtcbiAgICB2dGFibGUuY2xhc3Nlcy5wdXNoKFwidmxpc3QtdDJcIik7XG4gIH1cblxuICB2dGFibGUuaGVpZ2h0ID0gbWF4UG9zO1xuICB2dGFibGUuZGVwdGggPSAtbWluUG9zO1xuICByZXR1cm4gdnRhYmxlO1xufTsgLy8gR2x1ZSBpcyBhIGNvbmNlcHQgZnJvbSBUZVggd2hpY2ggaXMgYSBmbGV4aWJsZSBzcGFjZSBiZXR3ZWVuIGVsZW1lbnRzIGluXG4vLyBlaXRoZXIgYSB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIGxpc3QuIEluIEthVGVYLCBhdCBsZWFzdCBmb3Igbm93LCBpdCdzXG4vLyBzdGF0aWMgc3BhY2UgYmV0d2VlbiBlbGVtZW50cyBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuXG5cbnZhciBidWlsZENvbW1vbl9tYWtlR2x1ZSA9IGZ1bmN0aW9uIG1ha2VHbHVlKG1lYXN1cmVtZW50LCBvcHRpb25zKSB7XG4gIC8vIE1ha2UgYW4gZW1wdHkgc3BhbiBmb3IgdGhlIHNwYWNlXG4gIHZhciBydWxlID0gYnVpbGRDb21tb25fbWFrZVNwYW4oW1wibXNwYWNlXCJdLCBbXSwgb3B0aW9ucyk7XG4gIHZhciBzaXplID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShtZWFzdXJlbWVudCwgb3B0aW9ucyk7XG4gIHJ1bGUuc3R5bGUubWFyZ2luUmlnaHQgPSBzaXplICsgXCJlbVwiO1xuICByZXR1cm4gcnVsZTtcbn07IC8vIFRha2VzIGZvbnQgb3B0aW9ucywgYW5kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIGZvbnRMb29rdXAgbmFtZVxuXG5cbnZhciByZXRyaWV2ZVRleHRGb250TmFtZSA9IGZ1bmN0aW9uIHJldHJpZXZlVGV4dEZvbnROYW1lKGZvbnRGYW1pbHksIGZvbnRXZWlnaHQsIGZvbnRTaGFwZSkge1xuICB2YXIgYmFzZUZvbnROYW1lID0gXCJcIjtcblxuICBzd2l0Y2ggKGZvbnRGYW1pbHkpIHtcbiAgICBjYXNlIFwiYW1zcm1cIjpcbiAgICAgIGJhc2VGb250TmFtZSA9IFwiQU1TXCI7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJ0ZXh0cm1cIjpcbiAgICAgIGJhc2VGb250TmFtZSA9IFwiTWFpblwiO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwidGV4dHNmXCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIlNhbnNTZXJpZlwiO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwidGV4dHR0XCI6XG4gICAgICBiYXNlRm9udE5hbWUgPSBcIlR5cGV3cml0ZXJcIjtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGJhc2VGb250TmFtZSA9IGZvbnRGYW1pbHk7XG4gICAgLy8gdXNlIGZvbnRzIGFkZGVkIGJ5IGEgcGx1Z2luXG4gIH1cblxuICB2YXIgZm9udFN0eWxlc05hbWU7XG5cbiAgaWYgKGZvbnRXZWlnaHQgPT09IFwidGV4dGJmXCIgJiYgZm9udFNoYXBlID09PSBcInRleHRpdFwiKSB7XG4gICAgZm9udFN0eWxlc05hbWUgPSBcIkJvbGRJdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRiZlwiKSB7XG4gICAgZm9udFN0eWxlc05hbWUgPSBcIkJvbGRcIjtcbiAgfSBlbHNlIGlmIChmb250V2VpZ2h0ID09PSBcInRleHRpdFwiKSB7XG4gICAgZm9udFN0eWxlc05hbWUgPSBcIkl0YWxpY1wiO1xuICB9IGVsc2Uge1xuICAgIGZvbnRTdHlsZXNOYW1lID0gXCJSZWd1bGFyXCI7XG4gIH1cblxuICByZXR1cm4gYmFzZUZvbnROYW1lICsgXCItXCIgKyBmb250U3R5bGVzTmFtZTtcbn07XG4vKipcbiAqIE1hcHMgVGVYIGZvbnQgY29tbWFuZHMgdG8gb2JqZWN0cyBjb250YWluaW5nOlxuICogLSB2YXJpYW50OiBzdHJpbmcgdXNlZCBmb3IgXCJtYXRodmFyaWFudFwiIGF0dHJpYnV0ZSBpbiBidWlsZE1hdGhNTC5qc1xuICogLSBmb250TmFtZTogdGhlIFwic3R5bGVcIiBwYXJhbWV0ZXIgdG8gZm9udE1ldHJpY3MuZ2V0Q2hhcmFjdGVyTWV0cmljc1xuICovXG4vLyBBIG1hcCBiZXR3ZWVuIHRleCBmb250IGNvbW1hbmRzIGFuIE1hdGhNTCBtYXRodmFyaWFudCBhdHRyaWJ1dGUgdmFsdWVzXG5cblxudmFyIGZvbnRNYXAgPSB7XG4gIC8vIHN0eWxlc1xuICBcIm1hdGhiZlwiOiB7XG4gICAgdmFyaWFudDogXCJib2xkXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1Cb2xkXCJcbiAgfSxcbiAgXCJtYXRocm1cIjoge1xuICAgIHZhcmlhbnQ6IFwibm9ybWFsXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1SZWd1bGFyXCJcbiAgfSxcbiAgXCJ0ZXh0aXRcIjoge1xuICAgIHZhcmlhbnQ6IFwiaXRhbGljXCIsXG4gICAgZm9udE5hbWU6IFwiTWFpbi1JdGFsaWNcIlxuICB9LFxuICBcIm1hdGhpdFwiOiB7XG4gICAgdmFyaWFudDogXCJpdGFsaWNcIixcbiAgICBmb250TmFtZTogXCJNYWluLUl0YWxpY1wiXG4gIH0sXG4gIC8vIERlZmF1bHQgbWF0aCBmb250LCBcIm1hdGhub3JtYWxcIiBhbmQgXCJib2xkc3ltYm9sXCIgYXJlIG1pc3NpbmcgYmVjYXVzZSB0aGV5XG4gIC8vIHJlcXVpcmUgdGhlIHVzZSBvZiBzZXZlcmFsIGZvbnRzOiBNYWluLUl0YWxpYyBhbmQgTWF0aC1JdGFsaWMgZm9yIGRlZmF1bHRcbiAgLy8gbWF0aCBmb250LCBNYWluLUl0YWxpYywgTWF0aC1JdGFsaWMsIENhbGlncmFwaGljIGZvciBcIm1hdGhub3JtYWxcIiwgYW5kXG4gIC8vIE1hdGgtQm9sZEl0YWxpYyBhbmQgTWFpbi1Cb2xkIGZvciBcImJvbGRzeW1ib2xcIi4gIFRoaXMgaXMgaGFuZGxlZCBieSBhXG4gIC8vIHNwZWNpYWwgY2FzZSBpbiBtYWtlT3JkIHdoaWNoIGVuZHMgdXAgY2FsbGluZyBtYXRoZGVmYXVsdCwgbWF0aG5vcm1hbCxcbiAgLy8gYW5kIGJvbGRzeW1ib2wuXG4gIC8vIGZhbWlsaWVzXG4gIFwibWF0aGJiXCI6IHtcbiAgICB2YXJpYW50OiBcImRvdWJsZS1zdHJ1Y2tcIixcbiAgICBmb250TmFtZTogXCJBTVMtUmVndWxhclwiXG4gIH0sXG4gIFwibWF0aGNhbFwiOiB7XG4gICAgdmFyaWFudDogXCJzY3JpcHRcIixcbiAgICBmb250TmFtZTogXCJDYWxpZ3JhcGhpYy1SZWd1bGFyXCJcbiAgfSxcbiAgXCJtYXRoZnJha1wiOiB7XG4gICAgdmFyaWFudDogXCJmcmFrdHVyXCIsXG4gICAgZm9udE5hbWU6IFwiRnJha3R1ci1SZWd1bGFyXCJcbiAgfSxcbiAgXCJtYXRoc2NyXCI6IHtcbiAgICB2YXJpYW50OiBcInNjcmlwdFwiLFxuICAgIGZvbnROYW1lOiBcIlNjcmlwdC1SZWd1bGFyXCJcbiAgfSxcbiAgXCJtYXRoc2ZcIjoge1xuICAgIHZhcmlhbnQ6IFwic2Fucy1zZXJpZlwiLFxuICAgIGZvbnROYW1lOiBcIlNhbnNTZXJpZi1SZWd1bGFyXCJcbiAgfSxcbiAgXCJtYXRodHRcIjoge1xuICAgIHZhcmlhbnQ6IFwibW9ub3NwYWNlXCIsXG4gICAgZm9udE5hbWU6IFwiVHlwZXdyaXRlci1SZWd1bGFyXCJcbiAgfVxufTtcbnZhciBzdmdEYXRhID0ge1xuICAvLyAgIHBhdGgsIHdpZHRoLCBoZWlnaHRcbiAgdmVjOiBbXCJ2ZWNcIiwgMC40NzEsIDAuNzE0XSxcbiAgLy8gdmFsdWVzIGZyb20gdGhlIGZvbnQgZ2x5cGhcbiAgb2lpbnRTaXplMTogW1wib2lpbnRTaXplMVwiLCAwLjk1NywgMC40OTldLFxuICAvLyBvdmFsIHRvIG92ZXJsYXkgdGhlIGludGVncmFuZFxuICBvaWludFNpemUyOiBbXCJvaWludFNpemUyXCIsIDEuNDcyLCAwLjY1OV0sXG4gIG9paWludFNpemUxOiBbXCJvaWlpbnRTaXplMVwiLCAxLjMwNCwgMC40OTldLFxuICBvaWlpbnRTaXplMjogW1wib2lpaW50U2l6ZTJcIiwgMS45OCwgMC42NTldXG59O1xuXG52YXIgYnVpbGRDb21tb25fc3RhdGljU3ZnID0gZnVuY3Rpb24gc3RhdGljU3ZnKHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIENyZWF0ZSBhIHNwYW4gd2l0aCBpbmxpbmUgU1ZHIGZvciB0aGUgZWxlbWVudC5cbiAgdmFyIF9zdmdEYXRhJHZhbHVlID0gc3ZnRGF0YVt2YWx1ZV0sXG4gICAgICBwYXRoTmFtZSA9IF9zdmdEYXRhJHZhbHVlWzBdLFxuICAgICAgd2lkdGggPSBfc3ZnRGF0YSR2YWx1ZVsxXSxcbiAgICAgIGhlaWdodCA9IF9zdmdEYXRhJHZhbHVlWzJdO1xuICB2YXIgcGF0aCA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHBhdGhOYW1lKTtcbiAgdmFyIHN2Z05vZGUgPSBuZXcgU3ZnTm9kZShbcGF0aF0sIHtcbiAgICBcIndpZHRoXCI6IHdpZHRoICsgXCJlbVwiLFxuICAgIFwiaGVpZ2h0XCI6IGhlaWdodCArIFwiZW1cIixcbiAgICAvLyBPdmVycmlkZSBDU1MgcnVsZSBgLmthdGV4IHN2ZyB7IHdpZHRoOiAxMDAlIH1gXG4gICAgXCJzdHlsZVwiOiBcIndpZHRoOlwiICsgd2lkdGggKyBcImVtXCIsXG4gICAgXCJ2aWV3Qm94XCI6IFwiMCAwIFwiICsgMTAwMCAqIHdpZHRoICsgXCIgXCIgKyAxMDAwICogaGVpZ2h0LFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBcInhNaW5ZTWluXCJcbiAgfSk7XG4gIHZhciBzcGFuID0gYnVpbGRDb21tb25fbWFrZVN2Z1NwYW4oW1wib3ZlcmxheVwiXSwgW3N2Z05vZGVdLCBvcHRpb25zKTtcbiAgc3Bhbi5oZWlnaHQgPSBoZWlnaHQ7XG4gIHNwYW4uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJlbVwiO1xuICBzcGFuLnN0eWxlLndpZHRoID0gd2lkdGggKyBcImVtXCI7XG4gIHJldHVybiBzcGFuO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYnVpbGRDb21tb24gPSAoe1xuICBmb250TWFwOiBmb250TWFwLFxuICBtYWtlU3ltYm9sOiBidWlsZENvbW1vbl9tYWtlU3ltYm9sLFxuICBtYXRoc3ltOiBidWlsZENvbW1vbl9tYXRoc3ltLFxuICBtYWtlU3BhbjogYnVpbGRDb21tb25fbWFrZVNwYW4sXG4gIG1ha2VTdmdTcGFuOiBidWlsZENvbW1vbl9tYWtlU3ZnU3BhbixcbiAgbWFrZUxpbmVTcGFuOiBtYWtlTGluZVNwYW4sXG4gIG1ha2VBbmNob3I6IGJ1aWxkQ29tbW9uX21ha2VBbmNob3IsXG4gIG1ha2VGcmFnbWVudDogYnVpbGRDb21tb25fbWFrZUZyYWdtZW50LFxuICB3cmFwRnJhZ21lbnQ6IGJ1aWxkQ29tbW9uX3dyYXBGcmFnbWVudCxcbiAgbWFrZVZMaXN0OiBidWlsZENvbW1vbl9tYWtlVkxpc3QsXG4gIG1ha2VPcmQ6IGJ1aWxkQ29tbW9uX21ha2VPcmQsXG4gIG1ha2VHbHVlOiBidWlsZENvbW1vbl9tYWtlR2x1ZSxcbiAgc3RhdGljU3ZnOiBidWlsZENvbW1vbl9zdGF0aWNTdmcsXG4gIHN2Z0RhdGE6IHN2Z0RhdGEsXG4gIHRyeUNvbWJpbmVDaGFyczogYnVpbGRDb21tb25fdHJ5Q29tYmluZUNoYXJzXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3BhcnNlTm9kZS5qc1xuXG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBub2RlIGlzIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCByZXR1cm5zIGl0IHdpdGggc3RyaWN0ZXJcbiAqIHR5cGluZy4gVGhyb3dzIGlmIHRoZSBub2RlJ3MgdHlwZSBkb2VzIG5vdCBtYXRjaC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9kZVR5cGUobm9kZSwgdHlwZSkge1xuICB2YXIgdHlwZWROb2RlID0gY2hlY2tOb2RlVHlwZShub2RlLCB0eXBlKTtcblxuICBpZiAoIXR5cGVkTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG5vZGUgb2YgdHlwZSBcIiArIHR5cGUgKyBcIiwgYnV0IGdvdCBcIiArIChub2RlID8gXCJub2RlIG9mIHR5cGUgXCIgKyBub2RlLnR5cGUgOiBTdHJpbmcobm9kZSkpKTtcbiAgfSAvLyAkRmxvd0ZpeE1lOiBVbnN1cmUgd2h5LlxuXG5cbiAgcmV0dXJuIHR5cGVkTm9kZTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbm9kZSBtb3JlIHN0cmljdGx5IHR5cGVkIGlmZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4gT3RoZXJ3aXNlLFxuICogcmV0dXJucyBudWxsLlxuICovXG5cbmZ1bmN0aW9uIGNoZWNrTm9kZVR5cGUobm9kZSwgdHlwZSkge1xuICBpZiAobm9kZSAmJiBub2RlLnR5cGUgPT09IHR5cGUpIHtcbiAgICAvLyBUaGUgZGVmaW5pdGlvbiBvZiBQYXJzZU5vZGU8VFlQRT4gZG9lc24ndCBjb21tdW5pY2F0ZSB0byBmbG93IHRoYXRcbiAgICAvLyBgdHlwZTogVFlQRWAgKGFzIHRoYXQncyBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgYW55d2hlcmUpLCB0aG91Z2ggdGhhdFxuICAgIC8vIGhhcHBlbnMgdG8gYmUgdHJ1ZSBmb3IgYWxsIG91ciB2YWx1ZSB0eXBlcy5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBub2RlIGlzIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCByZXR1cm5zIGl0IHdpdGggc3RyaWN0ZXJcbiAqIHR5cGluZy4gVGhyb3dzIGlmIHRoZSBub2RlJ3MgdHlwZSBkb2VzIG5vdCBtYXRjaC5cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRBdG9tRmFtaWx5KG5vZGUsIGZhbWlseSkge1xuICB2YXIgdHlwZWROb2RlID0gY2hlY2tBdG9tRmFtaWx5KG5vZGUsIGZhbWlseSk7XG5cbiAgaWYgKCF0eXBlZE5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlIG9mIHR5cGUgXFxcImF0b21cXFwiIGFuZCBmYW1pbHkgXFxcIlwiICsgZmFtaWx5ICsgXCJcXFwiLCBidXQgZ290IFwiICsgKG5vZGUgPyBub2RlLnR5cGUgPT09IFwiYXRvbVwiID8gXCJhdG9tIG9mIGZhbWlseSBcIiArIG5vZGUuZmFtaWx5IDogXCJub2RlIG9mIHR5cGUgXCIgKyBub2RlLnR5cGUgOiBTdHJpbmcobm9kZSkpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlZE5vZGU7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG5vZGUgbW9yZSBzdHJpY3RseSB0eXBlZCBpZmYgaXQgaXMgb2YgdGhlIGdpdmVuIHR5cGUuIE90aGVyd2lzZSxcbiAqIHJldHVybnMgbnVsbC5cbiAqL1xuXG5mdW5jdGlvbiBjaGVja0F0b21GYW1pbHkobm9kZSwgZmFtaWx5KSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUudHlwZSA9PT0gXCJhdG9tXCIgJiYgbm9kZS5mYW1pbHkgPT09IGZhbWlseSA/IG5vZGUgOiBudWxsO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub2RlIG1vcmUgc3RyaWN0bHkgdHlwZWQgaWZmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLiBPdGhlcndpc2UsXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0U3ltYm9sTm9kZVR5cGUobm9kZSkge1xuICB2YXIgdHlwZWROb2RlID0gY2hlY2tTeW1ib2xOb2RlVHlwZShub2RlKTtcblxuICBpZiAoIXR5cGVkTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG5vZGUgb2Ygc3ltYm9sIGdyb3VwIHR5cGUsIGJ1dCBnb3QgXCIgKyAobm9kZSA/IFwibm9kZSBvZiB0eXBlIFwiICsgbm9kZS50eXBlIDogU3RyaW5nKG5vZGUpKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZWROb2RlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub2RlIG1vcmUgc3RyaWN0bHkgdHlwZWQgaWZmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLiBPdGhlcndpc2UsXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cblxuZnVuY3Rpb24gY2hlY2tTeW1ib2xOb2RlVHlwZShub2RlKSB7XG4gIGlmIChub2RlICYmIChub2RlLnR5cGUgPT09IFwiYXRvbVwiIHx8IE5PTl9BVE9NUy5oYXNPd25Qcm9wZXJ0eShub2RlLnR5cGUpKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3BhY2luZ0RhdGEuanNcbi8qKlxuICogRGVzY3JpYmVzIHNwYWNlcyBiZXR3ZWVuIGRpZmZlcmVudCBjbGFzc2VzIG9mIGF0b21zLlxuICovXG52YXIgdGhpbnNwYWNlID0ge1xuICBudW1iZXI6IDMsXG4gIHVuaXQ6IFwibXVcIlxufTtcbnZhciBtZWRpdW1zcGFjZSA9IHtcbiAgbnVtYmVyOiA0LFxuICB1bml0OiBcIm11XCJcbn07XG52YXIgdGhpY2tzcGFjZSA9IHtcbiAgbnVtYmVyOiA1LFxuICB1bml0OiBcIm11XCJcbn07IC8vIE1ha2luZyB0aGUgdHlwZSBiZWxvdyBleGFjdCB3aXRoIGFsbCBvcHRpb25hbCBmaWVsZHMgZG9lc24ndCB3b3JrIGR1ZSB0b1xuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDU4MlxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNTY4OFxuLy8gSG93ZXZlciwgc2luY2UgKmFsbCogZmllbGRzIGFyZSBvcHRpb25hbCwgJFNoYXBlPD4gd29ya3MgYXMgc3VnZ2VzdGVkIGluIDU2ODhcbi8vIGFib3ZlLlxuXG4vLyBTcGFjaW5nIHJlbGF0aW9uc2hpcHMgZm9yIGRpc3BsYXkgYW5kIHRleHQgc3R5bGVzXG52YXIgc3BhY2luZ3MgPSB7XG4gIG1vcmQ6IHtcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1vcDoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1iaW46IHtcbiAgICBtb3JkOiBtZWRpdW1zcGFjZSxcbiAgICBtb3A6IG1lZGl1bXNwYWNlLFxuICAgIG1vcGVuOiBtZWRpdW1zcGFjZSxcbiAgICBtaW5uZXI6IG1lZGl1bXNwYWNlXG4gIH0sXG4gIG1yZWw6IHtcbiAgICBtb3JkOiB0aGlja3NwYWNlLFxuICAgIG1vcDogdGhpY2tzcGFjZSxcbiAgICBtb3BlbjogdGhpY2tzcGFjZSxcbiAgICBtaW5uZXI6IHRoaWNrc3BhY2VcbiAgfSxcbiAgbW9wZW46IHt9LFxuICBtY2xvc2U6IHtcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtYmluOiBtZWRpdW1zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1pbm5lcjogdGhpbnNwYWNlXG4gIH0sXG4gIG1wdW5jdDoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZSxcbiAgICBtcmVsOiB0aGlja3NwYWNlLFxuICAgIG1vcGVuOiB0aGluc3BhY2UsXG4gICAgbWNsb3NlOiB0aGluc3BhY2UsXG4gICAgbXB1bmN0OiB0aGluc3BhY2UsXG4gICAgbWlubmVyOiB0aGluc3BhY2VcbiAgfSxcbiAgbWlubmVyOiB7XG4gICAgbW9yZDogdGhpbnNwYWNlLFxuICAgIG1vcDogdGhpbnNwYWNlLFxuICAgIG1iaW46IG1lZGl1bXNwYWNlLFxuICAgIG1yZWw6IHRoaWNrc3BhY2UsXG4gICAgbW9wZW46IHRoaW5zcGFjZSxcbiAgICBtcHVuY3Q6IHRoaW5zcGFjZSxcbiAgICBtaW5uZXI6IHRoaW5zcGFjZVxuICB9XG59OyAvLyBTcGFjaW5nIHJlbGF0aW9uc2hpcHMgZm9yIHNjcmlwdCBhbmQgc2NyaXB0c2NyaXB0IHN0eWxlc1xuXG52YXIgdGlnaHRTcGFjaW5ncyA9IHtcbiAgbW9yZDoge1xuICAgIG1vcDogdGhpbnNwYWNlXG4gIH0sXG4gIG1vcDoge1xuICAgIG1vcmQ6IHRoaW5zcGFjZSxcbiAgICBtb3A6IHRoaW5zcGFjZVxuICB9LFxuICBtYmluOiB7fSxcbiAgbXJlbDoge30sXG4gIG1vcGVuOiB7fSxcbiAgbWNsb3NlOiB7XG4gICAgbW9wOiB0aGluc3BhY2VcbiAgfSxcbiAgbXB1bmN0OiB7fSxcbiAgbWlubmVyOiB7XG4gICAgbW9wOiB0aGluc3BhY2VcbiAgfVxufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlZmluZUZ1bmN0aW9uLmpzXG5cblxuLyoqXG4gKiBBbGwgcmVnaXN0ZXJlZCBmdW5jdGlvbnMuXG4gKiBgZnVuY3Rpb25zLmpzYCBqdXN0IGV4cG9ydHMgdGhpcyBzYW1lIGRpY3Rpb25hcnkgYWdhaW4gYW5kIG1ha2VzIGl0IHB1YmxpYy5cbiAqIGBQYXJzZXIuanNgIHJlcXVpcmVzIHRoaXMgZGljdGlvbmFyeS5cbiAqL1xudmFyIF9mdW5jdGlvbnMgPSB7fTtcbi8qKlxuICogQWxsIEhUTUwgYnVpbGRlcnMuIFNob3VsZCBiZSBvbmx5IHVzZWQgaW4gdGhlIGBkZWZpbmUqYCBhbmQgdGhlIGBidWlsZCpNTGBcbiAqIGZ1bmN0aW9ucy5cbiAqL1xuXG52YXIgX2h0bWxHcm91cEJ1aWxkZXJzID0ge307XG4vKipcbiAqIEFsbCBNYXRoTUwgYnVpbGRlcnMuIFNob3VsZCBiZSBvbmx5IHVzZWQgaW4gdGhlIGBkZWZpbmUqYCBhbmQgdGhlIGBidWlsZCpNTGBcbiAqIGZ1bmN0aW9ucy5cbiAqL1xuXG52YXIgX21hdGhtbEdyb3VwQnVpbGRlcnMgPSB7fTtcbmZ1bmN0aW9uIGRlZmluZUZ1bmN0aW9uKF9yZWYpIHtcbiAgdmFyIHR5cGUgPSBfcmVmLnR5cGUsXG4gICAgICBuYW1lcyA9IF9yZWYubmFtZXMsXG4gICAgICBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICBoYW5kbGVyID0gX3JlZi5oYW5kbGVyLFxuICAgICAgaHRtbEJ1aWxkZXIgPSBfcmVmLmh0bWxCdWlsZGVyLFxuICAgICAgbWF0aG1sQnVpbGRlciA9IF9yZWYubWF0aG1sQnVpbGRlcjtcbiAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIG9mIGZ1bmN0aW9uc1xuICB2YXIgZGF0YSA9IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIG51bUFyZ3M6IHByb3BzLm51bUFyZ3MsXG4gICAgYXJnVHlwZXM6IHByb3BzLmFyZ1R5cGVzLFxuICAgIGdyZWVkaW5lc3M6IHByb3BzLmdyZWVkaW5lc3MgPT09IHVuZGVmaW5lZCA/IDEgOiBwcm9wcy5ncmVlZGluZXNzLFxuICAgIGFsbG93ZWRJblRleHQ6ICEhcHJvcHMuYWxsb3dlZEluVGV4dCxcbiAgICBhbGxvd2VkSW5NYXRoOiBwcm9wcy5hbGxvd2VkSW5NYXRoID09PSB1bmRlZmluZWQgPyB0cnVlIDogcHJvcHMuYWxsb3dlZEluTWF0aCxcbiAgICBudW1PcHRpb25hbEFyZ3M6IHByb3BzLm51bU9wdGlvbmFsQXJncyB8fCAwLFxuICAgIGluZml4OiAhIXByb3BzLmluZml4LFxuICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG4gICAgX2Z1bmN0aW9uc1tuYW1lc1tpXV0gPSBkYXRhO1xuICB9XG5cbiAgaWYgKHR5cGUpIHtcbiAgICBpZiAoaHRtbEJ1aWxkZXIpIHtcbiAgICAgIF9odG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IGh0bWxCdWlsZGVyO1xuICAgIH1cblxuICAgIGlmIChtYXRobWxCdWlsZGVyKSB7XG4gICAgICBfbWF0aG1sR3JvdXBCdWlsZGVyc1t0eXBlXSA9IG1hdGhtbEJ1aWxkZXI7XG4gICAgfVxuICB9XG59XG4vKipcbiAqIFVzZSB0aGlzIHRvIHJlZ2lzdGVyIG9ubHkgdGhlIEhUTUwgYW5kIE1hdGhNTCBidWlsZGVycyBmb3IgYSBmdW5jdGlvbiAoZS5nLlxuICogaWYgdGhlIGZ1bmN0aW9uJ3MgUGFyc2VOb2RlIGlzIGdlbmVyYXRlZCBpbiBQYXJzZXIuanMgcmF0aGVyIHRoYW4gdmlhIGFcbiAqIHN0YW5kLWFsb25lIGhhbmRsZXIgcHJvdmlkZWQgdG8gYGRlZmluZUZ1bmN0aW9uYCkuXG4gKi9cblxuZnVuY3Rpb24gZGVmaW5lRnVuY3Rpb25CdWlsZGVycyhfcmVmMikge1xuICB2YXIgdHlwZSA9IF9yZWYyLnR5cGUsXG4gICAgICBodG1sQnVpbGRlciA9IF9yZWYyLmh0bWxCdWlsZGVyLFxuICAgICAgbWF0aG1sQnVpbGRlciA9IF9yZWYyLm1hdGhtbEJ1aWxkZXI7XG4gIGRlZmluZUZ1bmN0aW9uKHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIG5hbWVzOiBbXSxcbiAgICBwcm9wczoge1xuICAgICAgbnVtQXJnczogMFxuICAgIH0sXG4gICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcigpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hvdWxkIG5ldmVyIGJlIGNhbGxlZC4nKTtcbiAgICB9LFxuICAgIGh0bWxCdWlsZGVyOiBodG1sQnVpbGRlcixcbiAgICBtYXRobWxCdWlsZGVyOiBtYXRobWxCdWlsZGVyXG4gIH0pO1xufSAvLyBTaW5jZSB0aGUgY29ycmVzcG9uZGluZyBidWlsZEhUTUwvYnVpbGRNYXRoTUwgZnVuY3Rpb24gZXhwZWN0cyBhXG4vLyBsaXN0IG9mIGVsZW1lbnRzLCB3ZSBub3JtYWxpemUgZm9yIGRpZmZlcmVudCBraW5kcyBvZiBhcmd1bWVudHNcblxudmFyIGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50ID0gZnVuY3Rpb24gb3JkYXJndW1lbnQoYXJnKSB7XG4gIHZhciBub2RlID0gY2hlY2tOb2RlVHlwZShhcmcsIFwib3JkZ3JvdXBcIik7XG4gIHJldHVybiBub2RlID8gbm9kZS5ib2R5IDogW2FyZ107XG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvYnVpbGRIVE1MLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBkb2VzIHRoZSBtYWluIHdvcmsgb2YgYnVpbGRpbmcgYSBkb21UcmVlIHN0cnVjdHVyZSBmcm9tIGEgcGFyc2VcbiAqIHRyZWUuIFRoZSBlbnRyeSBwb2ludCBpcyB0aGUgYGJ1aWxkSFRNTGAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgcGFyc2UgdHJlZS5cbiAqIFRoZW4sIHRoZSBidWlsZEV4cHJlc3Npb24sIGJ1aWxkR3JvdXAsIGFuZCB2YXJpb3VzIGdyb3VwQnVpbGRlcnMgZnVuY3Rpb25zXG4gKiBhcmUgY2FsbGVkLCB0byBwcm9kdWNlIGEgZmluYWwgSFRNTCB0cmVlLlxuICovXG5cblxuXG5cblxuXG5cblxuXG52YXIgYnVpbGRIVE1MX21ha2VTcGFuID0gYnVpbGRDb21tb24ubWFrZVNwYW47IC8vIEJpbmFyeSBhdG9tcyAoZmlyc3QgY2xhc3MgYG1iaW5gKSBjaGFuZ2UgaW50byBvcmRpbmFyeSBhdG9tcyAoYG1vcmRgKVxuLy8gZGVwZW5kaW5nIG9uIHRoZWlyIHN1cnJvdW5kaW5ncy4gU2VlIFRlWGJvb2sgcGcuIDQ0Mi00NDYsIFJ1bGVzIDUgYW5kIDYsXG4vLyBhbmQgdGhlIHRleHQgYmVmb3JlIFJ1bGUgMTkuXG5cbnZhciBiaW5MZWZ0Q2FuY2VsbGVyID0gW1wibGVmdG1vc3RcIiwgXCJtYmluXCIsIFwibW9wZW5cIiwgXCJtcmVsXCIsIFwibW9wXCIsIFwibXB1bmN0XCJdO1xudmFyIGJpblJpZ2h0Q2FuY2VsbGVyID0gW1wicmlnaHRtb3N0XCIsIFwibXJlbFwiLCBcIm1jbG9zZVwiLCBcIm1wdW5jdFwiXTtcbnZhciBzdHlsZU1hcCA9IHtcbiAgXCJkaXNwbGF5XCI6IHNyY19TdHlsZS5ESVNQTEFZLFxuICBcInRleHRcIjogc3JjX1N0eWxlLlRFWFQsXG4gIFwic2NyaXB0XCI6IHNyY19TdHlsZS5TQ1JJUFQsXG4gIFwic2NyaXB0c2NyaXB0XCI6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn07XG52YXIgRG9tRW51bSA9IHtcbiAgbW9yZDogXCJtb3JkXCIsXG4gIG1vcDogXCJtb3BcIixcbiAgbWJpbjogXCJtYmluXCIsXG4gIG1yZWw6IFwibXJlbFwiLFxuICBtb3BlbjogXCJtb3BlblwiLFxuICBtY2xvc2U6IFwibWNsb3NlXCIsXG4gIG1wdW5jdDogXCJtcHVuY3RcIixcbiAgbWlubmVyOiBcIm1pbm5lclwiXG59O1xuXG4vKipcbiAqIFRha2UgYSBsaXN0IG9mIG5vZGVzLCBidWlsZCB0aGVtIGluIG9yZGVyLCBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUgYnVpbHRcbiAqIG5vZGVzLiBkb2N1bWVudEZyYWdtZW50cyBhcmUgZmxhdHRlbmVkIGludG8gdGhlaXIgY29udGVudHMsIHNvIHRoZVxuICogcmV0dXJuZWQgbGlzdCBjb250YWlucyBubyBmcmFnbWVudHMuIGBpc1JlYWxHcm91cGAgaXMgdHJ1ZSBpZiBgZXhwcmVzc2lvbmBcbiAqIGlzIGEgcmVhbCBncm91cCAobm8gYXRvbXMgd2lsbCBiZSBhZGRlZCBvbiBlaXRoZXIgc2lkZSksIGFzIG9wcG9zZWQgdG9cbiAqIGEgcGFydGlhbCBncm91cCAoZS5nLiBvbmUgY3JlYXRlZCBieSBcXGNvbG9yKS4gYHN1cnJvdW5kaW5nYCBpcyBhbiBhcnJheVxuICogY29uc2lzdGluZyB0eXBlIG9mIG5vZGVzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbGVmdCBhbmQgcmlnaHQuXG4gKi9cbnZhciBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uID0gZnVuY3Rpb24gYnVpbGRFeHByZXNzaW9uKGV4cHJlc3Npb24sIG9wdGlvbnMsIGlzUmVhbEdyb3VwLCBzdXJyb3VuZGluZykge1xuICBpZiAoc3Vycm91bmRpbmcgPT09IHZvaWQgMCkge1xuICAgIHN1cnJvdW5kaW5nID0gW251bGwsIG51bGxdO1xuICB9XG5cbiAgLy8gUGFyc2UgZXhwcmVzc2lvbnMgaW50byBgZ3JvdXBzYC5cbiAgdmFyIGdyb3VwcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBvdXRwdXQgPSBidWlsZEhUTUxfYnVpbGRHcm91cChleHByZXNzaW9uW2ldLCBvcHRpb25zKTtcblxuICAgIGlmIChvdXRwdXQgaW5zdGFuY2VvZiB0cmVlX0RvY3VtZW50RnJhZ21lbnQpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG91dHB1dC5jaGlsZHJlbjtcbiAgICAgIGdyb3Vwcy5wdXNoLmFwcGx5KGdyb3VwcywgY2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHMucHVzaChvdXRwdXQpO1xuICAgIH1cbiAgfSAvLyBJZiBgZXhwcmVzc2lvbmAgaXMgYSBwYXJ0aWFsIGdyb3VwLCBsZXQgdGhlIHBhcmVudCBoYW5kbGUgc3BhY2luZ3NcbiAgLy8gdG8gYXZvaWQgcHJvY2Vzc2luZyBncm91cHMgbXVsdGlwbGUgdGltZXMuXG5cblxuICBpZiAoIWlzUmVhbEdyb3VwKSB7XG4gICAgcmV0dXJuIGdyb3VwcztcbiAgfVxuXG4gIHZhciBnbHVlT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgaWYgKGV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG4gICAgdmFyIG5vZGUgPSBjaGVja05vZGVUeXBlKGV4cHJlc3Npb25bMF0sIFwic2l6aW5nXCIpIHx8IGNoZWNrTm9kZVR5cGUoZXhwcmVzc2lvblswXSwgXCJzdHlsaW5nXCIpO1xuXG4gICAgaWYgKCFub2RlKSB7Ly8gTm8gbWF0Y2guXG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwic2l6aW5nXCIpIHtcbiAgICAgIGdsdWVPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTaXplKG5vZGUuc2l6ZSk7XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwic3R5bGluZ1wiKSB7XG4gICAgICBnbHVlT3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGVNYXBbbm9kZS5zdHlsZV0pO1xuICAgIH1cbiAgfSAvLyBEdW1teSBzcGFucyBmb3IgZGV0ZXJtaW5pbmcgc3BhY2luZ3MgYmV0d2VlbiBzdXJyb3VuZGluZyBhdG9tcy5cbiAgLy8gSWYgYGV4cHJlc3Npb25gIGhhcyBubyBhdG9tcyBvbiB0aGUgbGVmdCBvciByaWdodCwgY2xhc3MgXCJsZWZ0bW9zdFwiXG4gIC8vIG9yIFwicmlnaHRtb3N0XCIsIHJlc3BlY3RpdmVseSwgaXMgdXNlZCB0byBpbmRpY2F0ZSBpdC5cblxuXG4gIHZhciBkdW1teVByZXYgPSBidWlsZEhUTUxfbWFrZVNwYW4oW3N1cnJvdW5kaW5nWzBdIHx8IFwibGVmdG1vc3RcIl0sIFtdLCBvcHRpb25zKTtcbiAgdmFyIGR1bW15TmV4dCA9IGJ1aWxkSFRNTF9tYWtlU3Bhbihbc3Vycm91bmRpbmdbMV0gfHwgXCJyaWdodG1vc3RcIl0sIFtdLCBvcHRpb25zKTsgLy8gVE9ETzogVGhlc2UgY29kZSBhc3N1bWVzIHRoYXQgYSBub2RlJ3MgbWF0aCBjbGFzcyBpcyB0aGUgZmlyc3QgZWxlbWVudFxuICAvLyBvZiBpdHMgYGNsYXNzZXNgIGFycmF5LiBBIGxhdGVyIGNsZWFudXAgc2hvdWxkIGVuc3VyZSB0aGlzLCBmb3JcbiAgLy8gaW5zdGFuY2UgYnkgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBgbWFrZVNwYW5gLlxuICAvLyBCZWZvcmUgZGV0ZXJtaW5pbmcgd2hhdCBzcGFjZXMgdG8gaW5zZXJ0LCBwZXJmb3JtIGJpbiBjYW5jZWxsYXRpb24uXG4gIC8vIEJpbmFyeSBvcGVyYXRvcnMgY2hhbmdlIHRvIG9yZGluYXJ5IHN5bWJvbHMgaW4gc29tZSBjb250ZXh0cy5cblxuICB0cmF2ZXJzZU5vblNwYWNlTm9kZXMoZ3JvdXBzLCBmdW5jdGlvbiAobm9kZSwgcHJldikge1xuICAgIHZhciBwcmV2VHlwZSA9IHByZXYuY2xhc3Nlc1swXTtcbiAgICB2YXIgdHlwZSA9IG5vZGUuY2xhc3Nlc1swXTtcblxuICAgIGlmIChwcmV2VHlwZSA9PT0gXCJtYmluXCIgJiYgdXRpbHMuY29udGFpbnMoYmluUmlnaHRDYW5jZWxsZXIsIHR5cGUpKSB7XG4gICAgICBwcmV2LmNsYXNzZXNbMF0gPSBcIm1vcmRcIjtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwibWJpblwiICYmIHV0aWxzLmNvbnRhaW5zKGJpbkxlZnRDYW5jZWxsZXIsIHByZXZUeXBlKSkge1xuICAgICAgbm9kZS5jbGFzc2VzWzBdID0gXCJtb3JkXCI7XG4gICAgfVxuICB9LCB7XG4gICAgbm9kZTogZHVtbXlQcmV2XG4gIH0sIGR1bW15TmV4dCk7XG4gIHRyYXZlcnNlTm9uU3BhY2VOb2Rlcyhncm91cHMsIGZ1bmN0aW9uIChub2RlLCBwcmV2KSB7XG4gICAgdmFyIHByZXZUeXBlID0gZ2V0VHlwZU9mRG9tVHJlZShwcmV2KTtcbiAgICB2YXIgdHlwZSA9IGdldFR5cGVPZkRvbVRyZWUobm9kZSk7IC8vICdtdGlnaHQnIGluZGljYXRlcyB0aGF0IHRoZSBub2RlIGlzIHNjcmlwdCBvciBzY3JpcHRzY3JpcHQgc3R5bGUuXG5cbiAgICB2YXIgc3BhY2UgPSBwcmV2VHlwZSAmJiB0eXBlID8gbm9kZS5oYXNDbGFzcyhcIm10aWdodFwiKSA/IHRpZ2h0U3BhY2luZ3NbcHJldlR5cGVdW3R5cGVdIDogc3BhY2luZ3NbcHJldlR5cGVdW3R5cGVdIDogbnVsbDtcblxuICAgIGlmIChzcGFjZSkge1xuICAgICAgLy8gSW5zZXJ0IGdsdWUgKHNwYWNpbmcpIGFmdGVyIHRoZSBgcHJldmAuXG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUdsdWUoc3BhY2UsIGdsdWVPcHRpb25zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBub2RlOiBkdW1teVByZXZcbiAgfSwgZHVtbXlOZXh0KTtcbiAgcmV0dXJuIGdyb3Vwcztcbn07IC8vIERlcHRoLWZpcnN0IHRyYXZlcnNlIG5vbi1zcGFjZSBgbm9kZXNgLCBjYWxsaW5nIGBjYWxsYmFja2Agd2l0aCB0aGUgY3VycmVudCBhbmRcbi8vIHByZXZpb3VzIG5vZGUgYXMgYXJndW1lbnRzLCBvcHRpb25hbGx5IHJldHVybmluZyBhIG5vZGUgdG8gaW5zZXJ0IGFmdGVyIHRoZVxuLy8gcHJldmlvdXMgbm9kZS4gYHByZXZgIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBwcmV2aW91cyBub2RlIGFuZCBgaW5zZXJ0QWZ0ZXJgXG4vLyBmdW5jdGlvbiB0byBpbnNlcnQgYWZ0ZXIgaXQuIGBuZXh0YCBpcyBhIG5vZGUgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSByaWdodC5cbi8vIFVzZWQgZm9yIGJpbiBjYW5jZWxsYXRpb24gYW5kIGluc2VydGluZyBzcGFjaW5ncy5cblxudmFyIHRyYXZlcnNlTm9uU3BhY2VOb2RlcyA9IGZ1bmN0aW9uIHRyYXZlcnNlTm9uU3BhY2VOb2Rlcyhub2RlcywgY2FsbGJhY2ssIHByZXYsIG5leHQpIHtcbiAgaWYgKG5leHQpIHtcbiAgICAvLyB0ZW1wb3JhcmlseSBhcHBlbmQgdGhlIHJpZ2h0IG5vZGUsIGlmIGV4aXN0c1xuICAgIG5vZGVzLnB1c2gobmV4dCk7XG4gIH1cblxuICB2YXIgaSA9IDA7XG5cbiAgZm9yICg7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgdmFyIHBhcnRpYWxHcm91cCA9IGJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cChub2RlKTtcblxuICAgIGlmIChwYXJ0aWFsR3JvdXApIHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBERlNcbiAgICAgIC8vICRGbG93Rml4TWU6IG1ha2Ugbm9kZXMgYSAkUmVhZE9ubHlBcnJheSBieSByZXR1cm5pbmcgYSBuZXcgYXJyYXlcbiAgICAgIHRyYXZlcnNlTm9uU3BhY2VOb2RlcyhwYXJ0aWFsR3JvdXAuY2hpbGRyZW4sIGNhbGxiYWNrLCBwcmV2KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gSWdub3JlIGV4cGxpY2l0IHNwYWNlcyAoZS5nLiwgXFw7LCBcXCwpIHdoZW4gZGV0ZXJtaW5pbmcgd2hhdCBpbXBsaWNpdFxuICAgIC8vIHNwYWNpbmcgc2hvdWxkIGdvIGJldHdlZW4gYXRvbXMgb2YgZGlmZmVyZW50IGNsYXNzZXNcblxuXG4gICAgaWYgKG5vZGUuY2xhc3Nlc1swXSA9PT0gXCJtc3BhY2VcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IGNhbGxiYWNrKG5vZGUsIHByZXYubm9kZSk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAocHJldi5pbnNlcnRBZnRlcikge1xuICAgICAgICBwcmV2Lmluc2VydEFmdGVyKHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbnNlcnQgYXQgZnJvbnRcbiAgICAgICAgbm9kZXMudW5zaGlmdChyZXN1bHQpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJldi5ub2RlID0gbm9kZTtcblxuICAgIHByZXYuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAobikge1xuICAgICAgICBub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBuKTtcbiAgICAgICAgaSsrO1xuICAgICAgfTtcbiAgICB9KGkpO1xuICB9XG5cbiAgaWYgKG5leHQpIHtcbiAgICBub2Rlcy5wb3AoKTtcbiAgfVxufTsgLy8gQ2hlY2sgaWYgZ2l2ZW4gbm9kZSBpcyBhIHBhcnRpYWwgZ3JvdXAsIGkuZS4sIGRvZXMgbm90IGFmZmVjdCBzcGFjaW5nIGFyb3VuZC5cblxuXG52YXIgYnVpbGRIVE1MX2NoZWNrUGFydGlhbEdyb3VwID0gZnVuY3Rpb24gY2hlY2tQYXJ0aWFsR3JvdXAobm9kZSkge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIHRyZWVfRG9jdW1lbnRGcmFnbWVudCB8fCBub2RlIGluc3RhbmNlb2YgZG9tVHJlZV9BbmNob3IpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTsgLy8gUmV0dXJuIHRoZSBvdXRlcm1vc3Qgbm9kZSBvZiBhIGRvbVRyZWUuXG5cblxudmFyIGdldE91dGVybW9zdE5vZGUgPSBmdW5jdGlvbiBnZXRPdXRlcm1vc3ROb2RlKG5vZGUsIHNpZGUpIHtcbiAgdmFyIHBhcnRpYWxHcm91cCA9IGJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cChub2RlKTtcblxuICBpZiAocGFydGlhbEdyb3VwKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcGFydGlhbEdyb3VwLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgaWYgKHNpZGUgPT09IFwicmlnaHRcIikge1xuICAgICAgICByZXR1cm4gZ2V0T3V0ZXJtb3N0Tm9kZShjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXSwgXCJyaWdodFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoc2lkZSA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dGVybW9zdE5vZGUoY2hpbGRyZW5bMF0sIFwibGVmdFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn07IC8vIFJldHVybiBtYXRoIGF0b20gY2xhc3MgKG1jbGFzcykgb2YgYSBkb21UcmVlLlxuLy8gSWYgYHNpZGVgIGlzIGdpdmVuLCBpdCB3aWxsIGdldCB0aGUgdHlwZSBvZiB0aGUgb3V0ZXJtb3N0IG5vZGUgYXQgZ2l2ZW4gc2lkZS5cblxuXG52YXIgZ2V0VHlwZU9mRG9tVHJlZSA9IGZ1bmN0aW9uIGdldFR5cGVPZkRvbVRyZWUobm9kZSwgc2lkZSkge1xuICBpZiAoIW5vZGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChzaWRlKSB7XG4gICAgbm9kZSA9IGdldE91dGVybW9zdE5vZGUobm9kZSwgc2lkZSk7XG4gIH0gLy8gVGhpcyBtYWtlcyBhIGxvdCBvZiBhc3N1bXB0aW9ucyBhcyB0byB3aGVyZSB0aGUgdHlwZSBvZiBhdG9tXG4gIC8vIGFwcGVhcnMuICBXZSBzaG91bGQgZG8gYSBiZXR0ZXIgam9iIG9mIGVuZm9yY2luZyB0aGlzLlxuXG5cbiAgcmV0dXJuIERvbUVudW1bbm9kZS5jbGFzc2VzWzBdXSB8fCBudWxsO1xufTtcbnZhciBtYWtlTnVsbERlbGltaXRlciA9IGZ1bmN0aW9uIG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIGNsYXNzZXMpIHtcbiAgdmFyIG1vcmVDbGFzc2VzID0gW1wibnVsbGRlbGltaXRlclwiXS5jb25jYXQob3B0aW9ucy5iYXNlU2l6aW5nQ2xhc3NlcygpKTtcbiAgcmV0dXJuIGJ1aWxkSFRNTF9tYWtlU3BhbihjbGFzc2VzLmNvbmNhdChtb3JlQ2xhc3NlcykpO1xufTtcbi8qKlxuICogYnVpbGRHcm91cCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGdyb3VwIGFuZCBjYWxscyB0aGUgY29ycmVjdCBncm91cFR5cGVcbiAqIGZ1bmN0aW9uIGZvciBpdC4gSXQgYWxzbyBoYW5kbGVzIHRoZSBpbnRlcmFjdGlvbiBvZiBzaXplIGFuZCBzdHlsZSBjaGFuZ2VzXG4gKiBiZXR3ZWVuIHBhcmVudHMgYW5kIGNoaWxkcmVuLlxuICovXG5cbnZhciBidWlsZEhUTUxfYnVpbGRHcm91cCA9IGZ1bmN0aW9uIGJ1aWxkR3JvdXAoZ3JvdXAsIG9wdGlvbnMsIGJhc2VPcHRpb25zKSB7XG4gIGlmICghZ3JvdXApIHtcbiAgICByZXR1cm4gYnVpbGRIVE1MX21ha2VTcGFuKCk7XG4gIH1cblxuICBpZiAoX2h0bWxHcm91cEJ1aWxkZXJzW2dyb3VwLnR5cGVdKSB7XG4gICAgLy8gQ2FsbCB0aGUgZ3JvdXBCdWlsZGVycyBmdW5jdGlvblxuICAgIHZhciBncm91cE5vZGUgPSBfaHRtbEdyb3VwQnVpbGRlcnNbZ3JvdXAudHlwZV0oZ3JvdXAsIG9wdGlvbnMpOyAvLyBJZiB0aGUgc2l6ZSBjaGFuZ2VkIGJldHdlZW4gdGhlIHBhcmVudCBhbmQgdGhlIGN1cnJlbnQgZ3JvdXAsIGFjY291bnRcbiAgICAvLyBmb3IgdGhhdCBzaXplIGRpZmZlcmVuY2UuXG5cbiAgICBpZiAoYmFzZU9wdGlvbnMgJiYgb3B0aW9ucy5zaXplICE9PSBiYXNlT3B0aW9ucy5zaXplKSB7XG4gICAgICBncm91cE5vZGUgPSBidWlsZEhUTUxfbWFrZVNwYW4ob3B0aW9ucy5zaXppbmdDbGFzc2VzKGJhc2VPcHRpb25zKSwgW2dyb3VwTm9kZV0sIG9wdGlvbnMpO1xuICAgICAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gYmFzZU9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgICBncm91cE5vZGUuaGVpZ2h0ICo9IG11bHRpcGxpZXI7XG4gICAgICBncm91cE5vZGUuZGVwdGggKj0gbXVsdGlwbGllcjtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXBOb2RlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkdvdCBncm91cCBvZiB1bmtub3duIHR5cGU6ICdcIiArIGdyb3VwLnR5cGUgKyBcIidcIik7XG4gIH1cbn07XG4vKipcbiAqIENvbWJpbmUgYW4gYXJyYXkgb2YgSFRNTCBET00gbm9kZXMgKGUuZy4sIHRoZSBvdXRwdXQgb2YgYGJ1aWxkRXhwcmVzc2lvbmApXG4gKiBpbnRvIGFuIHVuYnJlYWthYmxlIEhUTUwgbm9kZSBvZiBjbGFzcyAuYmFzZSwgd2l0aCBwcm9wZXIgc3RydXRzIHRvXG4gKiBndWFyYW50ZWUgY29ycmVjdCB2ZXJ0aWNhbCBleHRlbnQuICBgYnVpbGRIVE1MYCBjYWxscyB0aGlzIHJlcGVhdGVkbHkgdG9cbiAqIG1ha2UgdXAgdGhlIGVudGlyZSBleHByZXNzaW9uIGFzIGEgc2VxdWVuY2Ugb2YgdW5icmVha2FibGUgdW5pdHMuXG4gKi9cblxuZnVuY3Rpb24gYnVpbGRIVE1MVW5icmVha2FibGUoY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgLy8gQ29tcHV0ZSBoZWlnaHQgYW5kIGRlcHRoIG9mIHRoaXMgY2h1bmsuXG4gIHZhciBib2R5ID0gYnVpbGRIVE1MX21ha2VTcGFuKFtcImJhc2VcIl0sIGNoaWxkcmVuLCBvcHRpb25zKTsgLy8gQWRkIHN0cnV0LCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIHRvcCBvZiB0aGUgSFRNTCBlbGVtZW50IGZhbGxzIGF0XG4gIC8vIHRoZSBoZWlnaHQgb2YgdGhlIGV4cHJlc3Npb24sIGFuZCB0aGUgYm90dG9tIG9mIHRoZSBIVE1MIGVsZW1lbnRcbiAgLy8gZmFsbHMgYXQgdGhlIGRlcHRoIG9mIHRoZSBleHByZXNzaW9uLlxuICAvLyBXZSB1c2VkIHRvIGhhdmUgc2VwYXJhdGUgdG9wIGFuZCBib3R0b20gc3RydXRzLCB3aGVyZSB0aGUgYm90dG9tIHN0cnV0XG4gIC8vIHdvdWxkIGxpa2UgdG8gdXNlIGB2ZXJ0aWNhbC1hbGlnbjogdG9wYCwgYnV0IGluIElFIDkgdGhpcyBsb3dlcnMgdGhlXG4gIC8vIGJhc2VsaW5lIG9mIHRoZSBib3ggdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHN0cnV0IChpbnN0ZWFkIG9mIHN0YXlpbmcgaW5cbiAgLy8gdGhlIG5vcm1hbCBwbGFjZSkgc28gd2UgdXNlIGFuIGFic29sdXRlIHZhbHVlIGZvciB2ZXJ0aWNhbC1hbGlnbiBpbnN0ZWFkLlxuXG4gIHZhciBzdHJ1dCA9IGJ1aWxkSFRNTF9tYWtlU3BhbihbXCJzdHJ1dFwiXSk7XG4gIHN0cnV0LnN0eWxlLmhlaWdodCA9IGJvZHkuaGVpZ2h0ICsgYm9keS5kZXB0aCArIFwiZW1cIjtcbiAgc3RydXQuc3R5bGUudmVydGljYWxBbGlnbiA9IC1ib2R5LmRlcHRoICsgXCJlbVwiO1xuICBib2R5LmNoaWxkcmVuLnVuc2hpZnQoc3RydXQpO1xuICByZXR1cm4gYm9keTtcbn1cbi8qKlxuICogVGFrZSBhbiBlbnRpcmUgcGFyc2UgdHJlZSwgYW5kIGJ1aWxkIGl0IGludG8gYW4gYXBwcm9wcmlhdGUgc2V0IG9mIEhUTUxcbiAqIG5vZGVzLlxuICovXG5cblxuZnVuY3Rpb24gYnVpbGRIVE1MKHRyZWUsIG9wdGlvbnMpIHtcbiAgLy8gU3RyaXAgb2ZmIG91dGVyIHRhZyB3cmFwcGVyIGZvciBwcm9jZXNzaW5nIGJlbG93LlxuICB2YXIgdGFnID0gbnVsbDtcblxuICBpZiAodHJlZS5sZW5ndGggPT09IDEgJiYgdHJlZVswXS50eXBlID09PSBcInRhZ1wiKSB7XG4gICAgdGFnID0gdHJlZVswXS50YWc7XG4gICAgdHJlZSA9IHRyZWVbMF0uYm9keTtcbiAgfSAvLyBCdWlsZCB0aGUgZXhwcmVzc2lvbiBjb250YWluZWQgaW4gdGhlIHRyZWVcblxuXG4gIHZhciBleHByZXNzaW9uID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbih0cmVlLCBvcHRpb25zLCB0cnVlKTtcbiAgdmFyIGNoaWxkcmVuID0gW107IC8vIENyZWF0ZSBvbmUgYmFzZSBub2RlIGZvciBlYWNoIGNodW5rIGJldHdlZW4gcG90ZW50aWFsIGxpbmUgYnJlYWtzLlxuICAvLyBUaGUgVGVYQm9vayBbcC4xNzNdIHNheXMgXCJBIGZvcm11bGEgd2lsbCBiZSBicm9rZW4gb25seSBhZnRlciBhXG4gIC8vIHJlbGF0aW9uIHN5bWJvbCBsaWtlICQ9JCBvciAkPCQgb3IgJFxccmlnaHRhcnJvdyQsIG9yIGFmdGVyIGEgYmluYXJ5XG4gIC8vIG9wZXJhdGlvbiBzeW1ib2wgbGlrZSAkKyQgb3IgJC0kIG9yICRcXHRpbWVzJCwgd2hlcmUgdGhlIHJlbGF0aW9uIG9yXG4gIC8vIGJpbmFyeSBvcGVyYXRpb24gaXMgb24gdGhlIGBgb3V0ZXIgbGV2ZWwnJyBvZiB0aGUgZm9ybXVsYSAoaS5lLiwgbm90XG4gIC8vIGVuY2xvc2VkIGluIHsuLi59IGFuZCBub3QgcGFydCBvZiBhbiBcXG92ZXIgY29uc3RydWN0aW9uKS5cIlxuXG4gIHZhciBwYXJ0cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgIHBhcnRzLnB1c2goZXhwcmVzc2lvbltpXSk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbltpXS5oYXNDbGFzcyhcIm1iaW5cIikgfHwgZXhwcmVzc2lvbltpXS5oYXNDbGFzcyhcIm1yZWxcIikgfHwgZXhwcmVzc2lvbltpXS5oYXNDbGFzcyhcImFsbG93YnJlYWtcIikpIHtcbiAgICAgIC8vIFB1dCBhbnkgcG9zdC1vcGVyYXRvciBnbHVlIG9uIHNhbWUgbGluZSBhcyBvcGVyYXRvci5cbiAgICAgIC8vIFdhdGNoIGZvciBcXG5vYnJlYWsgYWxvbmcgdGhlIHdheSwgYW5kIHN0b3AgYXQgXFxuZXdsaW5lLlxuICAgICAgdmFyIG5vYnJlYWsgPSBmYWxzZTtcblxuICAgICAgd2hpbGUgKGkgPCBleHByZXNzaW9uLmxlbmd0aCAtIDEgJiYgZXhwcmVzc2lvbltpICsgMV0uaGFzQ2xhc3MoXCJtc3BhY2VcIikgJiYgIWV4cHJlc3Npb25baSArIDFdLmhhc0NsYXNzKFwibmV3bGluZVwiKSkge1xuICAgICAgICBpKys7XG4gICAgICAgIHBhcnRzLnB1c2goZXhwcmVzc2lvbltpXSk7XG5cbiAgICAgICAgaWYgKGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJub2JyZWFrXCIpKSB7XG4gICAgICAgICAgbm9icmVhayA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gRG9uJ3QgYWxsb3cgYnJlYWsgaWYgXFxub2JyZWFrIGFtb25nIHRoZSBwb3N0LW9wZXJhdG9yIGdsdWUuXG5cblxuICAgICAgaWYgKCFub2JyZWFrKSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRIVE1MVW5icmVha2FibGUocGFydHMsIG9wdGlvbnMpKTtcbiAgICAgICAgcGFydHMgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25baV0uaGFzQ2xhc3MoXCJuZXdsaW5lXCIpKSB7XG4gICAgICAvLyBXcml0ZSB0aGUgbGluZSBleGNlcHQgdGhlIG5ld2xpbmVcbiAgICAgIHBhcnRzLnBvcCgpO1xuXG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGJ1aWxkSFRNTFVuYnJlYWthYmxlKHBhcnRzLCBvcHRpb25zKSk7XG4gICAgICAgIHBhcnRzID0gW107XG4gICAgICB9IC8vIFB1dCB0aGUgbmV3bGluZSBhdCB0aGUgdG9wIGxldmVsXG5cblxuICAgICAgY2hpbGRyZW4ucHVzaChleHByZXNzaW9uW2ldKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydHMubGVuZ3RoID4gMCkge1xuICAgIGNoaWxkcmVuLnB1c2goYnVpbGRIVE1MVW5icmVha2FibGUocGFydHMsIG9wdGlvbnMpKTtcbiAgfSAvLyBOb3csIGlmIHRoZXJlIHdhcyBhIHRhZywgYnVpbGQgaXQgdG9vIGFuZCBhcHBlbmQgaXQgYXMgYSBmaW5hbCBjaGlsZC5cblxuXG4gIHZhciB0YWdDaGlsZDtcblxuICBpZiAodGFnKSB7XG4gICAgdGFnQ2hpbGQgPSBidWlsZEhUTUxVbmJyZWFrYWJsZShidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKHRhZywgb3B0aW9ucywgdHJ1ZSkpO1xuICAgIHRhZ0NoaWxkLmNsYXNzZXMgPSBbXCJ0YWdcIl07XG4gICAgY2hpbGRyZW4ucHVzaCh0YWdDaGlsZCk7XG4gIH1cblxuICB2YXIgaHRtbE5vZGUgPSBidWlsZEhUTUxfbWFrZVNwYW4oW1wia2F0ZXgtaHRtbFwiXSwgY2hpbGRyZW4pO1xuICBodG1sTm9kZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIik7IC8vIEFkanVzdCB0aGUgc3RydXQgb2YgdGhlIHRhZyB0byBiZSB0aGUgbWF4aW11bSBoZWlnaHQgb2YgYWxsIGNoaWxkcmVuXG4gIC8vICh0aGUgaGVpZ2h0IG9mIHRoZSBlbmNsb3NpbmcgaHRtbE5vZGUpIGZvciBwcm9wZXIgdmVydGljYWwgYWxpZ25tZW50LlxuXG4gIGlmICh0YWdDaGlsZCkge1xuICAgIHZhciBzdHJ1dCA9IHRhZ0NoaWxkLmNoaWxkcmVuWzBdO1xuICAgIHN0cnV0LnN0eWxlLmhlaWdodCA9IGh0bWxOb2RlLmhlaWdodCArIGh0bWxOb2RlLmRlcHRoICsgXCJlbVwiO1xuICAgIHN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtaHRtbE5vZGUuZGVwdGggKyBcImVtXCI7XG4gIH1cblxuICByZXR1cm4gaHRtbE5vZGU7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9tYXRoTUxUcmVlLmpzXG4vKipcbiAqIFRoZXNlIG9iamVjdHMgc3RvcmUgZGF0YSBhYm91dCBNYXRoTUwgbm9kZXMuIFRoaXMgaXMgdGhlIE1hdGhNTCBlcXVpdmFsZW50XG4gKiBvZiB0aGUgdHlwZXMgaW4gZG9tVHJlZS5qcy4gU2luY2UgTWF0aE1MIGhhbmRsZXMgaXRzIG93biByZW5kZXJpbmcsIGFuZFxuICogc2luY2Ugd2UncmUgbWFpbmx5IHVzaW5nIE1hdGhNTCB0byBpbXByb3ZlIGFjY2Vzc2liaWxpdHksIHdlIGRvbid0IG1hbmFnZVxuICogYW55IG9mIHRoZSBzdHlsaW5nIHN0YXRlIHRoYXQgdGhlIHBsYWluIERPTSBub2RlcyBkby5cbiAqXG4gKiBUaGUgYHRvTm9kZWAgYW5kIGB0b01hcmt1cGAgZnVuY3Rpb25zIHdvcmsgc2ltbGFybHkgdG8gaG93IHRoZXkgZG8gaW5cbiAqIGRvbVRyZWUuanMsIGNyZWF0aW5nIG5hbWVzcGFjZWQgRE9NIG5vZGVzIGFuZCBIVE1MIHRleHQgbWFya3VwIHJlc3BlY3RpdmVseS5cbiAqL1xuXG5cbmZ1bmN0aW9uIG5ld0RvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIG5ldyB0cmVlX0RvY3VtZW50RnJhZ21lbnQoY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIGdlbmVyYWwgcHVycG9zZSBNYXRoTUwgbm9kZSBvZiBhbnkgdHlwZS4gVGhlXG4gKiBjb25zdHJ1Y3RvciByZXF1aXJlcyB0aGUgdHlwZSBvZiBub2RlIHRvIGNyZWF0ZSAoZm9yIGV4YW1wbGUsIGBcIm1vXCJgIG9yXG4gKiBgXCJtc3BhY2VcImAsIGNvcnJlc3BvbmRpbmcgdG8gYDxtbz5gIGFuZCBgPG1zcGFjZT5gIHRhZ3MpLlxuICovXG5cbnZhciBtYXRoTUxUcmVlX01hdGhOb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWF0aE5vZGUodHlwZSwgY2hpbGRyZW4pIHtcbiAgICB0aGlzLnR5cGUgPSB2b2lkIDA7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdm9pZCAwO1xuICAgIHRoaXMuY2hpbGRyZW4gPSB2b2lkIDA7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgYW4gYXR0cmlidXRlIG9uIGEgTWF0aE1MIG5vZGUuIE1hdGhNTCBkZXBlbmRzIG9uIGF0dHJpYnV0ZXMgdG8gY29udmV5IGFcbiAgICogc2VtYW50aWMgY29udGVudCwgc28gdGhpcyBpcyB1c2VkIGhlYXZpbHkuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IE1hdGhOb2RlLnByb3RvdHlwZTtcblxuICBfcHJvdG8uc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgYW4gYXR0cmlidXRlIG9uIGEgTWF0aE1MIG5vZGUuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIGdldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1tuYW1lXTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIG1hdGggbm9kZSBpbnRvIGEgTWF0aE1MLW5hbWVzcGFjZWQgRE9NIGVsZW1lbnQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTm9kZSA9IGZ1bmN0aW9uIHRvTm9kZSgpIHtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIiwgdGhpcy50eXBlKTtcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5hdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jaGlsZHJlbltpXS50b05vZGUoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYXRoIG5vZGUgaW50byBhbiBIVE1MIG1hcmt1cCBzdHJpbmcuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnRvTWFya3VwID0gZnVuY3Rpb24gdG9NYXJrdXAoKSB7XG4gICAgdmFyIG1hcmt1cCA9IFwiPFwiICsgdGhpcy50eXBlOyAvLyBBZGQgdGhlIGF0dHJpYnV0ZXNcblxuICAgIGZvciAodmFyIGF0dHIgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYXR0cmlidXRlcywgYXR0cikpIHtcbiAgICAgICAgbWFya3VwICs9IFwiIFwiICsgYXR0ciArIFwiPVxcXCJcIjtcbiAgICAgICAgbWFya3VwICs9IHV0aWxzLmVzY2FwZSh0aGlzLmF0dHJpYnV0ZXNbYXR0cl0pO1xuICAgICAgICBtYXJrdXAgKz0gXCJcXFwiXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWFya3VwICs9IFwiPlwiO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBtYXJrdXAgKz0gdGhpcy5jaGlsZHJlbltpXS50b01hcmt1cCgpO1xuICAgIH1cblxuICAgIG1hcmt1cCArPSBcIjwvXCIgKyB0aGlzLnR5cGUgKyBcIj5cIjtcbiAgICByZXR1cm4gbWFya3VwO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYSBzdHJpbmcsIHNpbWlsYXIgdG8gaW5uZXJUZXh0LCBidXQgZXNjYXBlZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8udG9UZXh0ID0gZnVuY3Rpb24gdG9UZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZC50b1RleHQoKTtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIHJldHVybiBNYXRoTm9kZTtcbn0oKTtcbi8qKlxuICogVGhpcyBub2RlIHJlcHJlc2VudHMgYSBwaWVjZSBvZiB0ZXh0LlxuICovXG5cbnZhciBtYXRoTUxUcmVlX1RleHROb2RlID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGV4dE5vZGUodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gYSBET00gdGV4dCBub2RlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8yID0gVGV4dE5vZGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzIudG9Ob2RlID0gZnVuY3Rpb24gdG9Ob2RlKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgdGV4dCBub2RlIGludG8gZXNjYXBlZCBIVE1MIG1hcmt1cFxuICAgKiAocmVwcmVzZW50aW5nIHRoZSB0ZXh0IGl0c2VsZikuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvMi50b01hcmt1cCA9IGZ1bmN0aW9uIHRvTWFya3VwKCkge1xuICAgIHJldHVybiB1dGlscy5lc2NhcGUodGhpcy50b1RleHQoKSk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSB0ZXh0IG5vZGUgaW50byBhIHN0cmluZ1xuICAgKiAocmVwcmVzZW50aW5nIHRoZSB0ZXh0IGl0ZXNlbGYpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzIudG9UZXh0ID0gZnVuY3Rpb24gdG9UZXh0KCkge1xuICAgIHJldHVybiB0aGlzLnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIFRleHROb2RlO1xufSgpO1xuLyoqXG4gKiBUaGlzIG5vZGUgcmVwcmVzZW50cyBhIHNwYWNlLCBidXQgbWF5IHJlbmRlciBhcyA8bXNwYWNlLi4uLz4gb3IgYXMgdGV4dCxcbiAqIGRlcGVuZGluZyBvbiB0aGUgd2lkdGguXG4gKi9cblxudmFyIFNwYWNlTm9kZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTcGFjZSBub2RlIHdpdGggd2lkdGggZ2l2ZW4gaW4gQ1NTIGVtcy5cbiAgICovXG4gIGZ1bmN0aW9uIFNwYWNlTm9kZSh3aWR0aCkge1xuICAgIHRoaXMud2lkdGggPSB2b2lkIDA7XG4gICAgdGhpcy5jaGFyYWN0ZXIgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoOyAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QtTWF0aE1MMi0yMDAwMDMyOC9jaGFwdGVyNi5odG1sXG4gICAgLy8gZm9yIGEgdGFibGUgb2Ygc3BhY2UtbGlrZSBjaGFyYWN0ZXJzLiAgV2UgdXNlIFVuaWNvZGVcbiAgICAvLyByZXByZXNlbnRhdGlvbnMgaW5zdGVhZCBvZiAmTG9uZ05hbWVzOyBhcyBpdCdzIG5vdCBjbGVhciBob3cgdG9cbiAgICAvLyBtYWtlIHRoZSBsYXR0ZXIgdmlhIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlLlxuXG4gICAgaWYgKHdpZHRoID49IDAuMDU1NTUgJiYgd2lkdGggPD0gMC4wNTU1Nikge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMEFcIjsgLy8gJlZlcnlUaGluU3BhY2U7XG4gICAgfSBlbHNlIGlmICh3aWR0aCA+PSAwLjE2NjYgJiYgd2lkdGggPD0gMC4xNjY3KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwOVwiOyAvLyAmVGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gMC4yMjIyICYmIHdpZHRoIDw9IDAuMjIyMykge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDVcIjsgLy8gJk1lZGl1bVNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gMC4yNzc3ICYmIHdpZHRoIDw9IDAuMjc3OCkge1xuICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBcIlxcdTIwMDVcXHUyMDBBXCI7IC8vICZUaGlja1NwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMDU1NTYgJiYgd2lkdGggPD0gLTAuMDU1NTUpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDBBXFx1MjA2M1wiOyAvLyAmTmVnYXRpdmVWZXJ5VGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMTY2NyAmJiB3aWR0aCA8PSAtMC4xNjY2KSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjAwOVxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlVGhpblNwYWNlO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPj0gLTAuMjIyMyAmJiB3aWR0aCA8PSAtMC4yMjIyKSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IFwiXFx1MjA1RlxcdTIwNjNcIjsgLy8gJk5lZ2F0aXZlTWVkaXVtU3BhY2U7XG4gICAgfSBlbHNlIGlmICh3aWR0aCA+PSAtMC4yNzc4ICYmIHdpZHRoIDw9IC0wLjI3NzcpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyID0gXCJcXHUyMDA1XFx1MjA2M1wiOyAvLyAmTmVnYXRpdmVUaGlja1NwYWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoYXJhY3RlciA9IG51bGw7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYSBNYXRoTUwtbmFtZXNwYWNlZCBET00gZWxlbWVudC5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvMyA9IFNwYWNlTm9kZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMy50b05vZGUgPSBmdW5jdGlvbiB0b05vZGUoKSB7XG4gICAgaWYgKHRoaXMuY2hhcmFjdGVyKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5jaGFyYWN0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIiwgXCJtc3BhY2VcIik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIHRoaXMud2lkdGggKyBcImVtXCIpO1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYW4gSFRNTCBtYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzMudG9NYXJrdXAgPSBmdW5jdGlvbiB0b01hcmt1cCgpIHtcbiAgICBpZiAodGhpcy5jaGFyYWN0ZXIpIHtcbiAgICAgIHJldHVybiBcIjxtdGV4dD5cIiArIHRoaXMuY2hhcmFjdGVyICsgXCI8L210ZXh0PlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCI8bXNwYWNlIHdpZHRoPVxcXCJcIiArIHRoaXMud2lkdGggKyBcImVtXFxcIi8+XCI7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgbWF0aCBub2RlIGludG8gYSBzdHJpbmcsIHNpbWlsYXIgdG8gaW5uZXJUZXh0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90bzMudG9UZXh0ID0gZnVuY3Rpb24gdG9UZXh0KCkge1xuICAgIGlmICh0aGlzLmNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY2hhcmFjdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCIgXCI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBTcGFjZU5vZGU7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1hdGhNTFRyZWUgPSAoe1xuICBNYXRoTm9kZTogbWF0aE1MVHJlZV9NYXRoTm9kZSxcbiAgVGV4dE5vZGU6IG1hdGhNTFRyZWVfVGV4dE5vZGUsXG4gIFNwYWNlTm9kZTogU3BhY2VOb2RlLFxuICBuZXdEb2N1bWVudEZyYWdtZW50OiBuZXdEb2N1bWVudEZyYWdtZW50XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2J1aWxkTWF0aE1MLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb252ZXJ0cyBhIHBhcnNlIHRyZWUgaW50byBhIGNvb3Jlc3BvbmRpbmcgTWF0aE1MIHRyZWUuIFRoZSBtYWluXG4gKiBlbnRyeSBwb2ludCBpcyB0aGUgYGJ1aWxkTWF0aE1MYCBmdW5jdGlvbiwgd2hpY2ggdGFrZXMgYSBwYXJzZSB0cmVlIGZyb20gdGhlXG4gKiBwYXJzZXIuXG4gKi9cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogVGFrZXMgYSBzeW1ib2wgYW5kIGNvbnZlcnRzIGl0IGludG8gYSBNYXRoTUwgdGV4dCBub2RlIGFmdGVyIHBlcmZvcm1pbmdcbiAqIG9wdGlvbmFsIHJlcGxhY2VtZW50IGZyb20gc3ltYm9scy5qcy5cbiAqL1xudmFyIGJ1aWxkTWF0aE1MX21ha2VUZXh0ID0gZnVuY3Rpb24gbWFrZVRleHQodGV4dCwgbW9kZSwgb3B0aW9ucykge1xuICBpZiAoc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0gJiYgc3JjX3N5bWJvbHNbbW9kZV1bdGV4dF0ucmVwbGFjZSAmJiB0ZXh0LmNoYXJDb2RlQXQoMCkgIT09IDB4RDgzNSAmJiAhKGxpZ2F0dXJlcy5oYXNPd25Qcm9wZXJ0eSh0ZXh0KSAmJiBvcHRpb25zICYmIChvcHRpb25zLmZvbnRGYW1pbHkgJiYgb3B0aW9ucy5mb250RmFtaWx5LnN1YnN0cig0LCAyKSA9PT0gXCJ0dFwiIHx8IG9wdGlvbnMuZm9udCAmJiBvcHRpb25zLmZvbnQuc3Vic3RyKDQsIDIpID09PSBcInR0XCIpKSkge1xuICAgIHRleHQgPSBzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XS5yZXBsYWNlO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLlRleHROb2RlKHRleHQpO1xufTtcbi8qKlxuICogV3JhcCB0aGUgZ2l2ZW4gYXJyYXkgb2Ygbm9kZXMgaW4gYW4gPG1yb3c+IG5vZGUgaWYgbmVlZGVkLCBpLmUuLFxuICogdW5sZXNzIHRoZSBhcnJheSBoYXMgbGVuZ3RoIDEuICBBbHdheXMgcmV0dXJucyBhIHNpbmdsZSBub2RlLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9tYWtlUm93ID0gZnVuY3Rpb24gbWFrZVJvdyhib2R5KSB7XG4gIGlmIChib2R5Lmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBib2R5WzBdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1yb3dcIiwgYm9keSk7XG4gIH1cbn07XG4vKipcbiAqIFJldHVybnMgdGhlIG1hdGggdmFyaWFudCBhcyBhIHN0cmluZyBvciBudWxsIGlmIG5vbmUgaXMgcmVxdWlyZWQuXG4gKi9cblxudmFyIGJ1aWxkTWF0aE1MX2dldFZhcmlhbnQgPSBmdW5jdGlvbiBnZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB7XG4gIC8vIEhhbmRsZSBcXHRleHQuLi4gZm9udCBzcGVjaWZpZXJzIGFzIGJlc3Qgd2UgY2FuLlxuICAvLyBNYXRoTUwgaGFzIGEgbGltaXRlZCBsaXN0IG9mIGFsbG93YWJsZSBtYXRodmFyaWFudCBzcGVjaWZpZXJzOyBzZWVcbiAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL01hdGhNTDMvY2hhcHRlcjMuaHRtbCNwcmVzbS5jb21tYXR0XG4gIGlmIChvcHRpb25zLmZvbnRGYW1pbHkgPT09IFwidGV4dHR0XCIpIHtcbiAgICByZXR1cm4gXCJtb25vc3BhY2VcIjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRGYW1pbHkgPT09IFwidGV4dHNmXCIpIHtcbiAgICBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIgJiYgb3B0aW9ucy5mb250V2VpZ2h0ID09PSBcInRleHRiZlwiKSB7XG4gICAgICByZXR1cm4gXCJzYW5zLXNlcmlmLWJvbGQtaXRhbGljXCI7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRTaGFwZSA9PT0gXCJ0ZXh0aXRcIikge1xuICAgICAgcmV0dXJuIFwic2Fucy1zZXJpZi1pdGFsaWNcIjtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgICAgcmV0dXJuIFwiYm9sZC1zYW5zLXNlcmlmXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcInNhbnMtc2VyaWZcIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5mb250U2hhcGUgPT09IFwidGV4dGl0XCIgJiYgb3B0aW9ucy5mb250V2VpZ2h0ID09PSBcInRleHRiZlwiKSB7XG4gICAgcmV0dXJuIFwiYm9sZC1pdGFsaWNcIjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmZvbnRTaGFwZSA9PT0gXCJ0ZXh0aXRcIikge1xuICAgIHJldHVybiBcIml0YWxpY1wiO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuZm9udFdlaWdodCA9PT0gXCJ0ZXh0YmZcIikge1xuICAgIHJldHVybiBcImJvbGRcIjtcbiAgfVxuXG4gIHZhciBmb250ID0gb3B0aW9ucy5mb250O1xuXG4gIGlmICghZm9udCB8fCBmb250ID09PSBcIm1hdGhub3JtYWxcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIG1vZGUgPSBncm91cC5tb2RlO1xuXG4gIGlmIChmb250ID09PSBcIm1hdGhpdFwiKSB7XG4gICAgcmV0dXJuIFwiaXRhbGljXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJib2xkc3ltYm9sXCIpIHtcbiAgICByZXR1cm4gXCJib2xkLWl0YWxpY1wiO1xuICB9IGVsc2UgaWYgKGZvbnQgPT09IFwibWF0aGJmXCIpIHtcbiAgICByZXR1cm4gXCJib2xkXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoYmJcIikge1xuICAgIHJldHVybiBcImRvdWJsZS1zdHJ1Y2tcIjtcbiAgfSBlbHNlIGlmIChmb250ID09PSBcIm1hdGhmcmFrXCIpIHtcbiAgICByZXR1cm4gXCJmcmFrdHVyXCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoc2NyXCIgfHwgZm9udCA9PT0gXCJtYXRoY2FsXCIpIHtcbiAgICAvLyBNYXRoTUwgbWFrZXMgbm8gZGlzdGluY3Rpb24gYmV0d2VlbiBzY3JpcHQgYW5kIGNhbGlncmFocGljXG4gICAgcmV0dXJuIFwic2NyaXB0XCI7XG4gIH0gZWxzZSBpZiAoZm9udCA9PT0gXCJtYXRoc2ZcIikge1xuICAgIHJldHVybiBcInNhbnMtc2VyaWZcIjtcbiAgfSBlbHNlIGlmIChmb250ID09PSBcIm1hdGh0dFwiKSB7XG4gICAgcmV0dXJuIFwibW9ub3NwYWNlXCI7XG4gIH1cblxuICB2YXIgdGV4dCA9IGdyb3VwLnRleHQ7XG5cbiAgaWYgKHV0aWxzLmNvbnRhaW5zKFtcIlxcXFxpbWF0aFwiLCBcIlxcXFxqbWF0aFwiXSwgdGV4dCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XSAmJiBzcmNfc3ltYm9sc1ttb2RlXVt0ZXh0XS5yZXBsYWNlKSB7XG4gICAgdGV4dCA9IHNyY19zeW1ib2xzW21vZGVdW3RleHRdLnJlcGxhY2U7XG4gIH1cblxuICB2YXIgZm9udE5hbWUgPSBidWlsZENvbW1vbi5mb250TWFwW2ZvbnRdLmZvbnROYW1lO1xuXG4gIGlmIChnZXRDaGFyYWN0ZXJNZXRyaWNzKHRleHQsIGZvbnROYW1lLCBtb2RlKSkge1xuICAgIHJldHVybiBidWlsZENvbW1vbi5mb250TWFwW2ZvbnRdLnZhcmlhbnQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4vKipcbiAqIFRha2VzIGEgbGlzdCBvZiBub2RlcywgYnVpbGRzIHRoZW0sIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0aGUgZ2VuZXJhdGVkXG4gKiBNYXRoTUwgbm9kZXMuICBBbHNvIGNvbWJpbmUgY29uc2VjdXRpdmUgPG10ZXh0PiBvdXRwdXRzIGludG8gYSBzaW5nbGVcbiAqIDxtdGV4dD4gdGFnLlxuICovXG5cbnZhciBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24gPSBmdW5jdGlvbiBidWlsZEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgb3B0aW9ucywgaXNPcmRncm91cCkge1xuICBpZiAoZXhwcmVzc2lvbi5sZW5ndGggPT09IDEpIHtcbiAgICB2YXIgZ3JvdXAgPSBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGV4cHJlc3Npb25bMF0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzT3JkZ3JvdXAgJiYgZ3JvdXAgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX01hdGhOb2RlICYmIGdyb3VwLnR5cGUgPT09IFwibW9cIikge1xuICAgICAgLy8gV2hlbiBUZVggd3JpdGVycyB3YW50IHRvIHN1cHByZXNzIHNwYWNpbmcgb24gYW4gb3BlcmF0b3IsXG4gICAgICAvLyB0aGV5IG9mdGVuIHB1dCB0aGUgb3BlcmF0b3IgYnkgaXRzZWxmIGluc2lkZSBicmFjZXMuXG4gICAgICBncm91cC5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgXCIwZW1cIik7XG4gICAgICBncm91cC5zZXRBdHRyaWJ1dGUoXCJyc3BhY2VcIiwgXCIwZW1cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtncm91cF07XG4gIH1cblxuICB2YXIgZ3JvdXBzID0gW107XG4gIHZhciBsYXN0R3JvdXA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHByZXNzaW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9ncm91cCA9IGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZXhwcmVzc2lvbltpXSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoX2dyb3VwIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSAmJiBsYXN0R3JvdXAgaW5zdGFuY2VvZiBtYXRoTUxUcmVlX01hdGhOb2RlKSB7XG4gICAgICAvLyBDb25jYXRlbmF0ZSBhZGphY2VudCA8bXRleHQ+c1xuICAgICAgaWYgKF9ncm91cC50eXBlID09PSAnbXRleHQnICYmIGxhc3RHcm91cC50eXBlID09PSAnbXRleHQnICYmIF9ncm91cC5nZXRBdHRyaWJ1dGUoJ21hdGh2YXJpYW50JykgPT09IGxhc3RHcm91cC5nZXRBdHRyaWJ1dGUoJ21hdGh2YXJpYW50JykpIHtcbiAgICAgICAgdmFyIF9sYXN0R3JvdXAkY2hpbGRyZW47XG5cbiAgICAgICAgKF9sYXN0R3JvdXAkY2hpbGRyZW4gPSBsYXN0R3JvdXAuY2hpbGRyZW4pLnB1c2guYXBwbHkoX2xhc3RHcm91cCRjaGlsZHJlbiwgX2dyb3VwLmNoaWxkcmVuKTtcblxuICAgICAgICBjb250aW51ZTsgLy8gQ29uY2F0ZW5hdGUgYWRqYWNlbnQgPG1uPnNcbiAgICAgIH0gZWxzZSBpZiAoX2dyb3VwLnR5cGUgPT09ICdtbicgJiYgbGFzdEdyb3VwLnR5cGUgPT09ICdtbicpIHtcbiAgICAgICAgdmFyIF9sYXN0R3JvdXAkY2hpbGRyZW4yO1xuXG4gICAgICAgIChfbGFzdEdyb3VwJGNoaWxkcmVuMiA9IGxhc3RHcm91cC5jaGlsZHJlbikucHVzaC5hcHBseShfbGFzdEdyb3VwJGNoaWxkcmVuMiwgX2dyb3VwLmNoaWxkcmVuKTtcblxuICAgICAgICBjb250aW51ZTsgLy8gQ29uY2F0ZW5hdGUgPG1uPi4uLjwvbW4+IGZvbGxvd2VkIGJ5IDxtaT4uPC9taT5cbiAgICAgIH0gZWxzZSBpZiAoX2dyb3VwLnR5cGUgPT09ICdtaScgJiYgX2dyb3VwLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBsYXN0R3JvdXAudHlwZSA9PT0gJ21uJykge1xuICAgICAgICB2YXIgY2hpbGQgPSBfZ3JvdXAuY2hpbGRyZW5bMF07XG5cbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9UZXh0Tm9kZSAmJiBjaGlsZC50ZXh0ID09PSAnLicpIHtcbiAgICAgICAgICB2YXIgX2xhc3RHcm91cCRjaGlsZHJlbjM7XG5cbiAgICAgICAgICAoX2xhc3RHcm91cCRjaGlsZHJlbjMgPSBsYXN0R3JvdXAuY2hpbGRyZW4pLnB1c2guYXBwbHkoX2xhc3RHcm91cCRjaGlsZHJlbjMsIF9ncm91cC5jaGlsZHJlbik7XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsYXN0R3JvdXAudHlwZSA9PT0gJ21pJyAmJiBsYXN0R3JvdXAuY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHZhciBsYXN0Q2hpbGQgPSBsYXN0R3JvdXAuY2hpbGRyZW5bMF07XG5cbiAgICAgICAgaWYgKGxhc3RDaGlsZCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfVGV4dE5vZGUgJiYgbGFzdENoaWxkLnRleHQgPT09IFwiXFx1MDMzOFwiICYmIChfZ3JvdXAudHlwZSA9PT0gJ21vJyB8fCBfZ3JvdXAudHlwZSA9PT0gJ21pJyB8fCBfZ3JvdXAudHlwZSA9PT0gJ21uJykpIHtcbiAgICAgICAgICB2YXIgX2NoaWxkID0gX2dyb3VwLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgICAgaWYgKF9jaGlsZCBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfVGV4dE5vZGUgJiYgX2NoaWxkLnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gT3ZlcmxheSB3aXRoIGNvbWJpbmluZyBjaGFyYWN0ZXIgbG9uZyBzb2xpZHVzXG4gICAgICAgICAgICBfY2hpbGQudGV4dCA9IF9jaGlsZC50ZXh0LnNsaWNlKDAsIDEpICsgXCJcXHUwMzM4XCIgKyBfY2hpbGQudGV4dC5zbGljZSgxKTtcbiAgICAgICAgICAgIGdyb3Vwcy5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBncm91cHMucHVzaChfZ3JvdXApO1xuICAgIGxhc3RHcm91cCA9IF9ncm91cDtcbiAgfVxuXG4gIHJldHVybiBncm91cHM7XG59O1xuLyoqXG4gKiBFcXVpdmFsZW50IHRvIGJ1aWxkRXhwcmVzc2lvbiwgYnV0IHdyYXBzIHRoZSBlbGVtZW50cyBpbiBhbiA8bXJvdz5cbiAqIGlmIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4gIFJldHVybnMgYSBzaW5nbGUgbm9kZSBpbnN0ZWFkIG9mIGFuIGFycmF5LlxuICovXG5cbnZhciBidWlsZEV4cHJlc3Npb25Sb3cgPSBmdW5jdGlvbiBidWlsZEV4cHJlc3Npb25Sb3coZXhwcmVzc2lvbiwgb3B0aW9ucywgaXNPcmRncm91cCkge1xuICByZXR1cm4gYnVpbGRNYXRoTUxfbWFrZVJvdyhidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgb3B0aW9ucywgaXNPcmRncm91cCkpO1xufTtcbi8qKlxuICogVGFrZXMgYSBncm91cCBmcm9tIHRoZSBwYXJzZXIgYW5kIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSBncm91cEJ1aWxkZXJzIGZ1bmN0aW9uXG4gKiBvbiBpdCB0byBwcm9kdWNlIGEgTWF0aE1MIG5vZGUuXG4gKi9cblxudmFyIGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAgPSBmdW5jdGlvbiBidWlsZEdyb3VwKGdyb3VwLCBvcHRpb25zKSB7XG4gIGlmICghZ3JvdXApIHtcbiAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcm93XCIpO1xuICB9XG5cbiAgaWYgKF9tYXRobWxHcm91cEJ1aWxkZXJzW2dyb3VwLnR5cGVdKSB7XG4gICAgLy8gQ2FsbCB0aGUgZ3JvdXBCdWlsZGVycyBmdW5jdGlvblxuICAgIHZhciByZXN1bHQgPSBfbWF0aG1sR3JvdXBCdWlsZGVyc1tncm91cC50eXBlXShncm91cCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJHb3QgZ3JvdXAgb2YgdW5rbm93biB0eXBlOiAnXCIgKyBncm91cC50eXBlICsgXCInXCIpO1xuICB9XG59O1xuLyoqXG4gKiBUYWtlcyBhIGZ1bGwgcGFyc2UgdHJlZSBhbmQgc2V0dGluZ3MgYW5kIGJ1aWxkcyBhIE1hdGhNTCByZXByZXNlbnRhdGlvbiBvZlxuICogaXQuIEluIHBhcnRpY3VsYXIsIHdlIHB1dCB0aGUgZWxlbWVudHMgZnJvbSBidWlsZGluZyB0aGUgcGFyc2UgdHJlZSBpbnRvIGFcbiAqIDxzZW1hbnRpY3M+IHRhZyBzbyB3ZSBjYW4gYWxzbyBpbmNsdWRlIHRoYXQgVGVYIHNvdXJjZSBhcyBhbiBhbm5vdGF0aW9uLlxuICpcbiAqIE5vdGUgdGhhdCB3ZSBhY3R1YWxseSByZXR1cm4gYSBkb21UcmVlIGVsZW1lbnQgd2l0aCBhIGA8bWF0aD5gIGluc2lkZSBpdCBzb1xuICogd2UgY2FuIGRvIGFwcHJvcHJpYXRlIHN0eWxpbmcuXG4gKi9cblxuZnVuY3Rpb24gYnVpbGRNYXRoTUwodHJlZSwgdGV4RXhwcmVzc2lvbiwgb3B0aW9ucywgZm9yTWF0aG1sT25seSkge1xuICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbih0cmVlLCBvcHRpb25zKTsgLy8gV3JhcCB1cCB0aGUgZXhwcmVzc2lvbiBpbiBhbiBtcm93IHNvIGl0IGlzIHByZXNlbnRlZCBpbiB0aGUgc2VtYW50aWNzXG4gIC8vIHRhZyBjb3JyZWN0bHksIHVubGVzcyBpdCdzIGEgc2luZ2xlIDxtcm93PiBvciA8bXRhYmxlPi5cblxuICB2YXIgd3JhcHBlcjtcblxuICBpZiAoZXhwcmVzc2lvbi5sZW5ndGggPT09IDEgJiYgZXhwcmVzc2lvblswXSBpbnN0YW5jZW9mIG1hdGhNTFRyZWVfTWF0aE5vZGUgJiYgdXRpbHMuY29udGFpbnMoW1wibXJvd1wiLCBcIm10YWJsZVwiXSwgZXhwcmVzc2lvblswXS50eXBlKSkge1xuICAgIHdyYXBwZXIgPSBleHByZXNzaW9uWzBdO1xuICB9IGVsc2Uge1xuICAgIHdyYXBwZXIgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1yb3dcIiwgZXhwcmVzc2lvbik7XG4gIH0gLy8gQnVpbGQgYSBUZVggYW5ub3RhdGlvbiBvZiB0aGUgc291cmNlXG5cblxuICB2YXIgYW5ub3RhdGlvbiA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwiYW5ub3RhdGlvblwiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUodGV4RXhwcmVzc2lvbildKTtcbiAgYW5ub3RhdGlvbi5zZXRBdHRyaWJ1dGUoXCJlbmNvZGluZ1wiLCBcImFwcGxpY2F0aW9uL3gtdGV4XCIpO1xuICB2YXIgc2VtYW50aWNzID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJzZW1hbnRpY3NcIiwgW3dyYXBwZXIsIGFubm90YXRpb25dKTtcbiAgdmFyIG1hdGggPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1hdGhcIiwgW3NlbWFudGljc10pO1xuICBtYXRoLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiKTsgLy8gWW91IGNhbid0IHN0eWxlIDxtYXRoPiBub2Rlcywgc28gd2Ugd3JhcCB0aGUgbm9kZSBpbiBhIHNwYW4uXG4gIC8vIE5PVEU6IFRoZSBzcGFuIGNsYXNzIGlzIG5vdCB0eXBlZCB0byBoYXZlIDxtYXRoPiBub2RlcyBhcyBjaGlsZHJlbiwgYW5kXG4gIC8vIHdlIGRvbid0IHdhbnQgdG8gbWFrZSB0aGUgY2hpbGRyZW4gdHlwZSBtb3JlIGdlbmVyaWMgc2luY2UgdGhlIGNoaWxkcmVuXG4gIC8vIG9mIHNwYW4gYXJlIGV4cGVjdGVkIHRvIGhhdmUgbW9yZSBmaWVsZHMgaW4gYGJ1aWxkSHRtbGAgY29udGV4dHMuXG5cbiAgdmFyIHdyYXBwZXJDbGFzcyA9IGZvck1hdGhtbE9ubHkgPyBcImthdGV4XCIgOiBcImthdGV4LW1hdGhtbFwiOyAvLyAkRmxvd0ZpeE1lXG5cbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFt3cmFwcGVyQ2xhc3NdLCBbbWF0aF0pO1xufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvYnVpbGRUcmVlLmpzXG5cblxuXG5cblxuXG5cbnZhciBidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyA9IGZ1bmN0aW9uIG9wdGlvbnNGcm9tU2V0dGluZ3Moc2V0dGluZ3MpIHtcbiAgcmV0dXJuIG5ldyBzcmNfT3B0aW9ucyh7XG4gICAgc3R5bGU6IHNldHRpbmdzLmRpc3BsYXlNb2RlID8gc3JjX1N0eWxlLkRJU1BMQVkgOiBzcmNfU3R5bGUuVEVYVCxcbiAgICBtYXhTaXplOiBzZXR0aW5ncy5tYXhTaXplLFxuICAgIG1pblJ1bGVUaGlja25lc3M6IHNldHRpbmdzLm1pblJ1bGVUaGlja25lc3NcbiAgfSk7XG59O1xuXG52YXIgYnVpbGRUcmVlX2Rpc3BsYXlXcmFwID0gZnVuY3Rpb24gZGlzcGxheVdyYXAobm9kZSwgc2V0dGluZ3MpIHtcbiAgaWYgKHNldHRpbmdzLmRpc3BsYXlNb2RlKSB7XG4gICAgdmFyIGNsYXNzZXMgPSBbXCJrYXRleC1kaXNwbGF5XCJdO1xuXG4gICAgaWYgKHNldHRpbmdzLmxlcW5vKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJsZXFub1wiKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3MuZmxlcW4pIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImZsZXFuXCIpO1xuICAgIH1cblxuICAgIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihjbGFzc2VzLCBbbm9kZV0pO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgYnVpbGRUcmVlX2J1aWxkVHJlZSA9IGZ1bmN0aW9uIGJ1aWxkVHJlZSh0cmVlLCBleHByZXNzaW9uLCBzZXR0aW5ncykge1xuICB2YXIgb3B0aW9ucyA9IGJ1aWxkVHJlZV9vcHRpb25zRnJvbVNldHRpbmdzKHNldHRpbmdzKTtcbiAgdmFyIGthdGV4Tm9kZTtcblxuICBpZiAoc2V0dGluZ3Mub3V0cHV0ID09PSBcIm1hdGhtbFwiKSB7XG4gICAgcmV0dXJuIGJ1aWxkTWF0aE1MKHRyZWUsIGV4cHJlc3Npb24sIG9wdGlvbnMsIHRydWUpO1xuICB9IGVsc2UgaWYgKHNldHRpbmdzLm91dHB1dCA9PT0gXCJodG1sXCIpIHtcbiAgICB2YXIgaHRtbE5vZGUgPSBidWlsZEhUTUwodHJlZSwgb3B0aW9ucyk7XG4gICAga2F0ZXhOb2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wia2F0ZXhcIl0sIFtodG1sTm9kZV0pO1xuICB9IGVsc2Uge1xuICAgIHZhciBtYXRoTUxOb2RlID0gYnVpbGRNYXRoTUwodHJlZSwgZXhwcmVzc2lvbiwgb3B0aW9ucywgZmFsc2UpO1xuXG4gICAgdmFyIF9odG1sTm9kZSA9IGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKTtcblxuICAgIGthdGV4Tm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbbWF0aE1MTm9kZSwgX2h0bWxOb2RlXSk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRUcmVlX2Rpc3BsYXlXcmFwKGthdGV4Tm9kZSwgc2V0dGluZ3MpO1xufTtcbnZhciBidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSA9IGZ1bmN0aW9uIGJ1aWxkSFRNTFRyZWUodHJlZSwgZXhwcmVzc2lvbiwgc2V0dGluZ3MpIHtcbiAgdmFyIG9wdGlvbnMgPSBidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyhzZXR0aW5ncyk7XG4gIHZhciBodG1sTm9kZSA9IGJ1aWxkSFRNTCh0cmVlLCBvcHRpb25zKTtcbiAgdmFyIGthdGV4Tm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImthdGV4XCJdLCBbaHRtbE5vZGVdKTtcbiAgcmV0dXJuIGJ1aWxkVHJlZV9kaXNwbGF5V3JhcChrYXRleE5vZGUsIHNldHRpbmdzKTtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfYnVpbGRUcmVlID0gKGJ1aWxkVHJlZV9idWlsZFRyZWUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvc3RyZXRjaHkuanNcbi8qKlxuICogVGhpcyBmaWxlIHByb3ZpZGVzIHN1cHBvcnQgdG8gYnVpbGRNYXRoTUwuanMgYW5kIGJ1aWxkSFRNTC5qc1xuICogZm9yIHN0cmV0Y2h5IHdpZGUgZWxlbWVudHMgcmVuZGVyZWQgZnJvbSBTVkcgZmlsZXNcbiAqIGFuZCBvdGhlciBDU1MgdHJpY2tlcnkuXG4gKi9cblxuXG5cblxudmFyIHN0cmV0Y2h5Q29kZVBvaW50ID0ge1xuICB3aWRlaGF0OiBcIl5cIixcbiAgd2lkZWNoZWNrOiBcIsuHXCIsXG4gIHdpZGV0aWxkZTogXCJ+XCIsXG4gIHV0aWxkZTogXCJ+XCIsXG4gIG92ZXJsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICB1bmRlcmxlZnRhcnJvdzogXCJcXHUyMTkwXCIsXG4gIHhsZWZ0YXJyb3c6IFwiXFx1MjE5MFwiLFxuICBvdmVycmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gIHVuZGVycmlnaHRhcnJvdzogXCJcXHUyMTkyXCIsXG4gIHhyaWdodGFycm93OiBcIlxcdTIxOTJcIixcbiAgdW5kZXJicmFjZTogXCJcXHUyM0RGXCIsXG4gIG92ZXJicmFjZTogXCJcXHUyM0RFXCIsXG4gIG92ZXJncm91cDogXCJcXHUyM0UwXCIsXG4gIHVuZGVyZ3JvdXA6IFwiXFx1MjNFMVwiLFxuICBvdmVybGVmdHJpZ2h0YXJyb3c6IFwiXFx1MjE5NFwiLFxuICB1bmRlcmxlZnRyaWdodGFycm93OiBcIlxcdTIxOTRcIixcbiAgeGxlZnRyaWdodGFycm93OiBcIlxcdTIxOTRcIixcbiAgT3ZlcnJpZ2h0YXJyb3c6IFwiXFx1MjFEMlwiLFxuICB4UmlnaHRhcnJvdzogXCJcXHUyMUQyXCIsXG4gIG92ZXJsZWZ0aGFycG9vbjogXCJcXHUyMUJDXCIsXG4gIHhsZWZ0aGFycG9vbnVwOiBcIlxcdTIxQkNcIixcbiAgb3ZlcnJpZ2h0aGFycG9vbjogXCJcXHUyMUMwXCIsXG4gIHhyaWdodGhhcnBvb251cDogXCJcXHUyMUMwXCIsXG4gIHhMZWZ0YXJyb3c6IFwiXFx1MjFEMFwiLFxuICB4TGVmdHJpZ2h0YXJyb3c6IFwiXFx1MjFENFwiLFxuICB4aG9va2xlZnRhcnJvdzogXCJcXHUyMUE5XCIsXG4gIHhob29rcmlnaHRhcnJvdzogXCJcXHUyMUFBXCIsXG4gIHhtYXBzdG86IFwiXFx1MjFBNlwiLFxuICB4cmlnaHRoYXJwb29uZG93bjogXCJcXHUyMUMxXCIsXG4gIHhsZWZ0aGFycG9vbmRvd246IFwiXFx1MjFCRFwiLFxuICB4cmlnaHRsZWZ0aGFycG9vbnM6IFwiXFx1MjFDQ1wiLFxuICB4bGVmdHJpZ2h0aGFycG9vbnM6IFwiXFx1MjFDQlwiLFxuICB4dHdvaGVhZGxlZnRhcnJvdzogXCJcXHUyMTlFXCIsXG4gIHh0d29oZWFkcmlnaHRhcnJvdzogXCJcXHUyMUEwXCIsXG4gIHhsb25nZXF1YWw6IFwiPVwiLFxuICB4dG9mcm9tOiBcIlxcdTIxQzRcIixcbiAgeHJpZ2h0bGVmdGFycm93czogXCJcXHUyMUM0XCIsXG4gIHhyaWdodGVxdWlsaWJyaXVtOiBcIlxcdTIxQ0NcIixcbiAgLy8gTm90IGEgcGVyZmVjdCBtYXRjaC5cbiAgeGxlZnRlcXVpbGlicml1bTogXCJcXHUyMUNCXCIgLy8gTm9uZSBiZXR0ZXIgYXZhaWxhYmxlLlxuXG59O1xuXG52YXIgc3RyZXRjaHlfbWF0aE1Mbm9kZSA9IGZ1bmN0aW9uIG1hdGhNTG5vZGUobGFiZWwpIHtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtuZXcgbWF0aE1MVHJlZS5UZXh0Tm9kZShzdHJldGNoeUNvZGVQb2ludFtsYWJlbC5zdWJzdHIoMSldKV0pO1xuICBub2RlLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwidHJ1ZVwiKTtcbiAgcmV0dXJuIG5vZGU7XG59OyAvLyBNYW55IG9mIHRoZSBLYVRlWCBTVkcgaW1hZ2VzIGhhdmUgYmVlbiBhZGFwdGVkIGZyb20gZ2x5cGhzIGluIEthVGVYIGZvbnRzLlxuLy8gQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAsIERlc2lnbiBTY2llbmNlLCBJbmMuICg8d3d3Lm1hdGhqYXgub3JnPilcbi8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE3IEtoYW4gQWNhZGVteSAoPHd3dy5raGFuYWNhZGVteS5vcmc+KVxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuXG4vLyBTZWUgXFxuaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxcbi8vIFZlcnkgTG9uZyBTVkdzXG4vLyAgICBNYW55IG9mIHRoZSBLYVRlWCBzdHJldGNoeSB3aWRlIGVsZW1lbnRzIHVzZSBhIGxvbmcgU1ZHIGltYWdlIGFuZCBhblxuLy8gICAgb3ZlcmZsb3c6IGhpZGRlbiB0YWN0aWMgdG8gYWNoaWV2ZSBhIHN0cmV0Y2h5IGltYWdlIHdoaWxlIGF2b2lkaW5nXG4vLyAgICBkaXN0b3J0aW9uIG9mIGFycm93aGVhZHMgb3IgYnJhY2UgY29ybmVycy5cbi8vICAgIFRoZSBTVkcgdHlwaWNhbGx5IGNvbnRhaW5zIGEgdmVyeSBsb25nICg0MDAgZW0pIGFycm93LlxuLy8gICAgVGhlIFNWRyBpcyBpbiBhIGNvbnRhaW5lciBzcGFuIHRoYXQgaGFzIG92ZXJmbG93OiBoaWRkZW4sIHNvIHRoZSBzcGFuXG4vLyAgICBhY3RzIGxpa2UgYSB3aW5kb3cgdGhhdCBleHBvc2VzIG9ubHkgcGFydCBvZiB0aGUgIFNWRy5cbi8vICAgIFRoZSBTVkcgYWx3YXlzIGhhcyBhIGxvbmdlciwgdGhpbm5lciBhc3BlY3QgcmF0aW8gdGhhbiB0aGUgY29udGFpbmVyIHNwYW4uXG4vLyAgICBBZnRlciB0aGUgU1ZHIGZpbGxzIDEwMCUgb2YgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmVyIHNwYW4sXG4vLyAgICB0aGVyZSBpcyBhIGxvbmcgYXJyb3cgc2hhZnQgbGVmdCBvdmVyLiBUaGF0IGxlZnQtb3ZlciBzaGFmdCBpcyBub3Qgc2hvd24uXG4vLyAgICBJbnN0ZWFkLCBpdCBpcyBzbGljZWQgb2ZmIGJlY2F1c2UgdGhlIHNwYW4ncyBDU1MgaGFzIG92ZXJmbG93OiBoaWRkZW4uXG4vLyAgICBUaHVzLCB0aGUgcmVhZGVyIHNlZXMgYW4gYXJyb3cgdGhhdCBtYXRjaGVzIHRoZSBzdWJqZWN0IG1hdHRlciB3aWR0aFxuLy8gICAgd2l0aG91dCBkaXN0b3J0aW9uLlxuLy8gICAgU29tZSBmdW5jdGlvbnMsIHN1Y2ggYXMgXFxjYW5jZWwsIG5lZWQgdG8gdmFyeSB0aGVpciBhc3BlY3QgcmF0aW8uIFRoZXNlXG4vLyAgICBmdW5jdGlvbnMgZG8gbm90IGdldCB0aGUgb3ZlcmZsb3cgU1ZHIHRyZWF0bWVudC5cbi8vIFNlY29uZCBCcnVzaCBTdHJva2Vcbi8vICAgIExvdyByZXNvbHV0aW9uIG1vbml0b3JzIHN0cnVnZ2xlIHRvIGRpc3BsYXkgaW1hZ2VzIGluIGZpbmUgZGV0YWlsLlxuLy8gICAgU28gYnJvd3NlcnMgYXBwbHkgYW50aS1hbGlhc2luZy4gQSBsb25nIHN0cmFpZ2h0IGFycm93IHNoYWZ0IHRoZXJlZm9yZVxuLy8gICAgd2lsbCBzb21ldGltZXMgYXBwZWFyIGFzIGlmIGl0IGhhcyBhIGJsdXJyZWQgZWRnZS5cbi8vICAgIFRvIG1pdGlnYXRlIHRoaXMsIHRoZXNlIFNWRyBmaWxlcyBjb250YWluIGEgc2Vjb25kIFwiYnJ1c2gtc3Ryb2tlXCIgb24gdGhlXG4vLyAgICBhcnJvdyBzaGFmdHMuIFRoYXQgaXMsIGEgc2Vjb25kIGxvbmcgdGhpbiByZWN0YW5ndWxhciBTVkcgcGF0aCBoYXMgYmVlblxuLy8gICAgd3JpdHRlbiBkaXJlY3RseSBvbiB0b3Agb2YgZWFjaCBhcnJvdyBzaGFmdC4gVGhpcyByZWluZm9yY2VtZW50IGNhdXNlc1xuLy8gICAgc29tZSBvZiB0aGUgc2NyZWVuIHBpeGVscyB0byBkaXNwbGF5IGFzIGJsYWNrIGluc3RlYWQgb2YgdGhlIGFudGktYWxpYXNlZFxuLy8gICAgZ3JheSBwaXhlbCB0aGF0IGEgIHNpbmdsZSBwYXRoIHdvdWxkIGdlbmVyYXRlLiBTbyB3ZSBnZXQgYXJyb3cgc2hhZnRzXG4vLyAgICB3aG9zZSBlZGdlcyBhcHBlYXIgdG8gYmUgc2hhcnBlci5cbi8vIEluIHRoZSBrYXRleEltYWdlc0RhdGEgb2JqZWN0IGp1c3QgYmVsb3csIHRoZSBkaW1lbnNpb25zIGFsbFxuLy8gY29ycmVzcG9uZCB0byBwYXRoIGdlb21ldHJ5IGluc2lkZSB0aGUgcmVsZXZhbnQgU1ZHLlxuLy8gRm9yIGV4YW1wbGUsIFxcb3ZlcnJpZ2h0YXJyb3cgdXNlcyB0aGUgc2FtZSBhcnJvd2hlYWQgYXMgZ2x5cGggVSsyMTkyXG4vLyBmcm9tIHRoZSBLYVRlWCBNYWluIGZvbnQuIFRoZSBzY2FsaW5nIGZhY3RvciBpcyAxMDAwLlxuLy8gVGhhdCBpcywgaW5zaWRlIHRoZSBmb250LCB0aGF0IGFycm93aGVhZCBpcyA1MjIgdW5pdHMgdGFsbCwgd2hpY2hcbi8vIGNvcnJlc3BvbmRzIHRvIDAuNTIyIGVtIGluc2lkZSB0aGUgZG9jdW1lbnQuXG5cblxudmFyIGthdGV4SW1hZ2VzRGF0YSA9IHtcbiAgLy8gICBwYXRoKHMpLCBtaW5XaWR0aCwgaGVpZ2h0LCBhbGlnblxuICBvdmVycmlnaHRhcnJvdzogW1tcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIG92ZXJsZWZ0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIl0sIDAuODg4LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIHVuZGVycmlnaHRhcnJvdzogW1tcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHVuZGVybGVmdGFycm93OiBbW1wibGVmdGFycm93XCJdLCAwLjg4OCwgNTIyLCBcInhNaW5ZTWluXCJdLFxuICB4cmlnaHRhcnJvdzogW1tcInJpZ2h0YXJyb3dcIl0sIDEuNDY5LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHhsZWZ0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIl0sIDEuNDY5LCA1MjIsIFwieE1pbllNaW5cIl0sXG4gIE92ZXJyaWdodGFycm93OiBbW1wiZG91YmxlcmlnaHRhcnJvd1wiXSwgMC44ODgsIDU2MCwgXCJ4TWF4WU1pblwiXSxcbiAgeFJpZ2h0YXJyb3c6IFtbXCJkb3VibGVyaWdodGFycm93XCJdLCAxLjUyNiwgNTYwLCBcInhNYXhZTWluXCJdLFxuICB4TGVmdGFycm93OiBbW1wiZG91YmxlbGVmdGFycm93XCJdLCAxLjUyNiwgNTYwLCBcInhNaW5ZTWluXCJdLFxuICBvdmVybGVmdGhhcnBvb246IFtbXCJsZWZ0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgeGxlZnRoYXJwb29udXA6IFtbXCJsZWZ0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgeGxlZnRoYXJwb29uZG93bjogW1tcImxlZnRoYXJwb29uZG93blwiXSwgMC44ODgsIDUyMiwgXCJ4TWluWU1pblwiXSxcbiAgb3ZlcnJpZ2h0aGFycG9vbjogW1tcInJpZ2h0aGFycG9vblwiXSwgMC44ODgsIDUyMiwgXCJ4TWF4WU1pblwiXSxcbiAgeHJpZ2h0aGFycG9vbnVwOiBbW1wicmlnaHRoYXJwb29uXCJdLCAwLjg4OCwgNTIyLCBcInhNYXhZTWluXCJdLFxuICB4cmlnaHRoYXJwb29uZG93bjogW1tcInJpZ2h0aGFycG9vbmRvd25cIl0sIDAuODg4LCA1MjIsIFwieE1heFlNaW5cIl0sXG4gIHhsb25nZXF1YWw6IFtbXCJsb25nZXF1YWxcIl0sIDAuODg4LCAzMzQsIFwieE1pbllNaW5cIl0sXG4gIHh0d29oZWFkbGVmdGFycm93OiBbW1widHdvaGVhZGxlZnRhcnJvd1wiXSwgMC44ODgsIDMzNCwgXCJ4TWluWU1pblwiXSxcbiAgeHR3b2hlYWRyaWdodGFycm93OiBbW1widHdvaGVhZHJpZ2h0YXJyb3dcIl0sIDAuODg4LCAzMzQsIFwieE1heFlNaW5cIl0sXG4gIG92ZXJsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDAuODg4LCA1MjJdLFxuICBvdmVyYnJhY2U6IFtbXCJsZWZ0YnJhY2VcIiwgXCJtaWRicmFjZVwiLCBcInJpZ2h0YnJhY2VcIl0sIDEuNiwgNTQ4XSxcbiAgdW5kZXJicmFjZTogW1tcImxlZnRicmFjZXVuZGVyXCIsIFwibWlkYnJhY2V1bmRlclwiLCBcInJpZ2h0YnJhY2V1bmRlclwiXSwgMS42LCA1NDhdLFxuICB1bmRlcmxlZnRyaWdodGFycm93OiBbW1wibGVmdGFycm93XCIsIFwicmlnaHRhcnJvd1wiXSwgMC44ODgsIDUyMl0sXG4gIHhsZWZ0cmlnaHRhcnJvdzogW1tcImxlZnRhcnJvd1wiLCBcInJpZ2h0YXJyb3dcIl0sIDEuNzUsIDUyMl0sXG4gIHhMZWZ0cmlnaHRhcnJvdzogW1tcImRvdWJsZWxlZnRhcnJvd1wiLCBcImRvdWJsZXJpZ2h0YXJyb3dcIl0sIDEuNzUsIDU2MF0sXG4gIHhyaWdodGxlZnRoYXJwb29uczogW1tcImxlZnRoYXJwb29uZG93bnBsdXNcIiwgXCJyaWdodGhhcnBvb25wbHVzXCJdLCAxLjc1LCA3MTZdLFxuICB4bGVmdHJpZ2h0aGFycG9vbnM6IFtbXCJsZWZ0aGFycG9vbnBsdXNcIiwgXCJyaWdodGhhcnBvb25kb3ducGx1c1wiXSwgMS43NSwgNzE2XSxcbiAgeGhvb2tsZWZ0YXJyb3c6IFtbXCJsZWZ0YXJyb3dcIiwgXCJyaWdodGhvb2tcIl0sIDEuMDgsIDUyMl0sXG4gIHhob29rcmlnaHRhcnJvdzogW1tcImxlZnRob29rXCIsIFwicmlnaHRhcnJvd1wiXSwgMS4wOCwgNTIyXSxcbiAgb3ZlcmxpbmVzZWdtZW50OiBbW1wibGVmdGxpbmVzZWdtZW50XCIsIFwicmlnaHRsaW5lc2VnbWVudFwiXSwgMC44ODgsIDUyMl0sXG4gIHVuZGVybGluZXNlZ21lbnQ6IFtbXCJsZWZ0bGluZXNlZ21lbnRcIiwgXCJyaWdodGxpbmVzZWdtZW50XCJdLCAwLjg4OCwgNTIyXSxcbiAgb3Zlcmdyb3VwOiBbW1wibGVmdGdyb3VwXCIsIFwicmlnaHRncm91cFwiXSwgMC44ODgsIDM0Ml0sXG4gIHVuZGVyZ3JvdXA6IFtbXCJsZWZ0Z3JvdXB1bmRlclwiLCBcInJpZ2h0Z3JvdXB1bmRlclwiXSwgMC44ODgsIDM0Ml0sXG4gIHhtYXBzdG86IFtbXCJsZWZ0bWFwc3RvXCIsIFwicmlnaHRhcnJvd1wiXSwgMS41LCA1MjJdLFxuICB4dG9mcm9tOiBbW1wibGVmdFRvRnJvbVwiLCBcInJpZ2h0VG9Gcm9tXCJdLCAxLjc1LCA1MjhdLFxuICAvLyBUaGUgbmV4dCB0aHJlZSBhcnJvd3MgYXJlIGZyb20gdGhlIG1oY2hlbSBwYWNrYWdlLlxuICAvLyBJbiBtaGNoZW0uc3R5LCBtaW4tbGVuZ3RoIGlzIDIuMGVtLiBCdXQgdGhlc2UgYXJyb3dzIG1pZ2h0IGFwcGVhciBpbiB0aGVcbiAgLy8gZG9jdW1lbnQgYXMgXFx4cmlnaHRhcnJvdyBvciBcXHhyaWdodGxlZnRoYXJwb29ucy4gVGhvc2UgaGF2ZVxuICAvLyBtaW4tbGVuZ3RoID0gMS43NWVtLCBzbyB3ZSBzZXQgbWluLWxlbmd0aCBvbiB0aGVzZSBuZXh0IHRocmVlIHRvIG1hdGNoLlxuICB4cmlnaHRsZWZ0YXJyb3dzOiBbW1wiYmFyYWJvdmVsZWZ0YXJyb3dcIiwgXCJyaWdodGFycm93YWJvdmViYXJcIl0sIDEuNzUsIDkwMV0sXG4gIHhyaWdodGVxdWlsaWJyaXVtOiBbW1wiYmFyYWJvdmVzaG9ydGxlZnRoYXJwb29uXCIsIFwicmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhclwiXSwgMS43NSwgNzE2XSxcbiAgeGxlZnRlcXVpbGlicml1bTogW1tcInNob3J0YmFyYWJvdmVsZWZ0aGFycG9vblwiLCBcInNob3J0cmlnaHRoYXJwb29uYWJvdmViYXJcIl0sIDEuNzUsIDcxNl1cbn07XG5cbnZhciBncm91cExlbmd0aCA9IGZ1bmN0aW9uIGdyb3VwTGVuZ3RoKGFyZykge1xuICBpZiAoYXJnLnR5cGUgPT09IFwib3JkZ3JvdXBcIikge1xuICAgIHJldHVybiBhcmcuYm9keS5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG5cbnZhciBzdHJldGNoeV9zdmdTcGFuID0gZnVuY3Rpb24gc3ZnU3Bhbihncm91cCwgb3B0aW9ucykge1xuICAvLyBDcmVhdGUgYSBzcGFuIHdpdGggaW5saW5lIFNWRyBmb3IgdGhlIGVsZW1lbnQuXG4gIGZ1bmN0aW9uIGJ1aWxkU3ZnU3Bhbl8oKSB7XG4gICAgdmFyIHZpZXdCb3hXaWR0aCA9IDQwMDAwMDsgLy8gZGVmYXVsdFxuXG4gICAgdmFyIGxhYmVsID0gZ3JvdXAubGFiZWwuc3Vic3RyKDEpO1xuXG4gICAgaWYgKHV0aWxzLmNvbnRhaW5zKFtcIndpZGVoYXRcIiwgXCJ3aWRlY2hlY2tcIiwgXCJ3aWRldGlsZGVcIiwgXCJ1dGlsZGVcIl0sIGxhYmVsKSkge1xuICAgICAgLy8gRWFjaCB0eXBlIGluIHRoZSBgaWZgIHN0YXRlbWVudCBjb3JyZXNwb25kcyB0byBvbmUgb2YgdGhlIFBhcnNlTm9kZVxuICAgICAgLy8gdHlwZXMgYmVsb3cuIFRoaXMgbmFycm93aW5nIGlzIHJlcXVpcmVkIHRvIGFjY2VzcyBgZ3JwLmJhc2VgLlxuICAgICAgdmFyIGdycCA9IGdyb3VwOyAvLyBUaGVyZSBhcmUgZm91ciBTVkcgaW1hZ2VzIGF2YWlsYWJsZSBmb3IgZWFjaCBmdW5jdGlvbi5cbiAgICAgIC8vIENob29zZSBhIHRhbGxlciBpbWFnZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNoYXJhY3RlcnMuXG5cbiAgICAgIHZhciBudW1DaGFycyA9IGdyb3VwTGVuZ3RoKGdycC5iYXNlKTtcbiAgICAgIHZhciB2aWV3Qm94SGVpZ2h0O1xuICAgICAgdmFyIHBhdGhOYW1lO1xuXG4gICAgICB2YXIgX2hlaWdodDtcblxuICAgICAgaWYgKG51bUNoYXJzID4gNSkge1xuICAgICAgICBpZiAobGFiZWwgPT09IFwid2lkZWhhdFwiIHx8IGxhYmVsID09PSBcIndpZGVjaGVja1wiKSB7XG4gICAgICAgICAgdmlld0JveEhlaWdodCA9IDQyMDtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSAyMzY0O1xuICAgICAgICAgIF9oZWlnaHQgPSAwLjQyO1xuICAgICAgICAgIHBhdGhOYW1lID0gbGFiZWwgKyBcIjRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2aWV3Qm94SGVpZ2h0ID0gMzEyO1xuICAgICAgICAgIHZpZXdCb3hXaWR0aCA9IDIzNDA7XG4gICAgICAgICAgX2hlaWdodCA9IDAuMzQ7XG4gICAgICAgICAgcGF0aE5hbWUgPSBcInRpbGRlNFwiO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaW1nSW5kZXggPSBbMSwgMSwgMiwgMiwgMywgM11bbnVtQ2hhcnNdO1xuXG4gICAgICAgIGlmIChsYWJlbCA9PT0gXCJ3aWRlaGF0XCIgfHwgbGFiZWwgPT09IFwid2lkZWNoZWNrXCIpIHtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSBbMCwgMTA2MiwgMjM2NCwgMjM2NCwgMjM2NF1baW1nSW5kZXhdO1xuICAgICAgICAgIHZpZXdCb3hIZWlnaHQgPSBbMCwgMjM5LCAzMDAsIDM2MCwgNDIwXVtpbWdJbmRleF07XG4gICAgICAgICAgX2hlaWdodCA9IFswLCAwLjI0LCAwLjMsIDAuMywgMC4zNiwgMC40Ml1baW1nSW5kZXhdO1xuICAgICAgICAgIHBhdGhOYW1lID0gbGFiZWwgKyBpbWdJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2aWV3Qm94V2lkdGggPSBbMCwgNjAwLCAxMDMzLCAyMzM5LCAyMzQwXVtpbWdJbmRleF07XG4gICAgICAgICAgdmlld0JveEhlaWdodCA9IFswLCAyNjAsIDI4NiwgMzA2LCAzMTJdW2ltZ0luZGV4XTtcbiAgICAgICAgICBfaGVpZ2h0ID0gWzAsIDAuMjYsIDAuMjg2LCAwLjMsIDAuMzA2LCAwLjM0XVtpbWdJbmRleF07XG4gICAgICAgICAgcGF0aE5hbWUgPSBcInRpbGRlXCIgKyBpbWdJbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcGF0aCA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHBhdGhOYW1lKTtcbiAgICAgIHZhciBzdmdOb2RlID0gbmV3IFN2Z05vZGUoW3BhdGhdLCB7XG4gICAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICAgIFwiaGVpZ2h0XCI6IF9oZWlnaHQgKyBcImVtXCIsXG4gICAgICAgIFwidmlld0JveFwiOiBcIjAgMCBcIiArIHZpZXdCb3hXaWR0aCArIFwiIFwiICsgdmlld0JveEhlaWdodCxcbiAgICAgICAgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCI6IFwibm9uZVwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwYW46IGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFtdLCBbc3ZnTm9kZV0sIG9wdGlvbnMpLFxuICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiBfaGVpZ2h0XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3BhbnMgPSBbXTtcbiAgICAgIHZhciBkYXRhID0ga2F0ZXhJbWFnZXNEYXRhW2xhYmVsXTtcbiAgICAgIHZhciBwYXRocyA9IGRhdGFbMF0sXG4gICAgICAgICAgX21pbldpZHRoID0gZGF0YVsxXSxcbiAgICAgICAgICBfdmlld0JveEhlaWdodCA9IGRhdGFbMl07XG5cbiAgICAgIHZhciBfaGVpZ2h0MiA9IF92aWV3Qm94SGVpZ2h0IC8gMTAwMDtcblxuICAgICAgdmFyIG51bVN2Z0NoaWxkcmVuID0gcGF0aHMubGVuZ3RoO1xuICAgICAgdmFyIHdpZHRoQ2xhc3NlcztcbiAgICAgIHZhciBhbGlnbnM7XG5cbiAgICAgIGlmIChudW1TdmdDaGlsZHJlbiA9PT0gMSkge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lOiBBbGwgdGhlc2UgY2FzZXMgbXVzdCBiZSBvZiB0aGUgNC10dXBsZSB0eXBlLlxuICAgICAgICB2YXIgYWxpZ24xID0gZGF0YVszXTtcbiAgICAgICAgd2lkdGhDbGFzc2VzID0gW1wiaGlkZS10YWlsXCJdO1xuICAgICAgICBhbGlnbnMgPSBbYWxpZ24xXTtcbiAgICAgIH0gZWxzZSBpZiAobnVtU3ZnQ2hpbGRyZW4gPT09IDIpIHtcbiAgICAgICAgd2lkdGhDbGFzc2VzID0gW1wiaGFsZmFycm93LWxlZnRcIiwgXCJoYWxmYXJyb3ctcmlnaHRcIl07XG4gICAgICAgIGFsaWducyA9IFtcInhNaW5ZTWluXCIsIFwieE1heFlNaW5cIl07XG4gICAgICB9IGVsc2UgaWYgKG51bVN2Z0NoaWxkcmVuID09PSAzKSB7XG4gICAgICAgIHdpZHRoQ2xhc3NlcyA9IFtcImJyYWNlLWxlZnRcIiwgXCJicmFjZS1jZW50ZXJcIiwgXCJicmFjZS1yaWdodFwiXTtcbiAgICAgICAgYWxpZ25zID0gW1wieE1pbllNaW5cIiwgXCJ4TWlkWU1pblwiLCBcInhNYXhZTWluXCJdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29ycmVjdCBrYXRleEltYWdlc0RhdGEgb3IgdXBkYXRlIGNvZGUgaGVyZSB0byBzdXBwb3J0XFxuICAgICAgICAgICAgICAgICAgICBcIiArIG51bVN2Z0NoaWxkcmVuICsgXCIgY2hpbGRyZW4uXCIpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVN2Z0NoaWxkcmVuOyBpKyspIHtcbiAgICAgICAgdmFyIF9wYXRoID0gbmV3IGRvbVRyZWVfUGF0aE5vZGUocGF0aHNbaV0pO1xuXG4gICAgICAgIHZhciBfc3ZnTm9kZSA9IG5ldyBTdmdOb2RlKFtfcGF0aF0sIHtcbiAgICAgICAgICBcIndpZHRoXCI6IFwiNDAwZW1cIixcbiAgICAgICAgICBcImhlaWdodFwiOiBfaGVpZ2h0MiArIFwiZW1cIixcbiAgICAgICAgICBcInZpZXdCb3hcIjogXCIwIDAgXCIgKyB2aWV3Qm94V2lkdGggKyBcIiBcIiArIF92aWV3Qm94SGVpZ2h0LFxuICAgICAgICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiOiBhbGlnbnNbaV0gKyBcIiBzbGljZVwiXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhciBfc3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFt3aWR0aENsYXNzZXNbaV1dLCBbX3N2Z05vZGVdLCBvcHRpb25zKTtcblxuICAgICAgICBpZiAobnVtU3ZnQ2hpbGRyZW4gPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3BhbjogX3NwYW4sXG4gICAgICAgICAgICBtaW5XaWR0aDogX21pbldpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBfaGVpZ2h0MlxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3NwYW4uc3R5bGUuaGVpZ2h0ID0gX2hlaWdodDIgKyBcImVtXCI7XG4gICAgICAgICAgc3BhbnMucHVzaChfc3Bhbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3BhbjogYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RyZXRjaHlcIl0sIHNwYW5zLCBvcHRpb25zKSxcbiAgICAgICAgbWluV2lkdGg6IF9taW5XaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBfaGVpZ2h0MlxuICAgICAgfTtcbiAgICB9XG4gIH0gLy8gYnVpbGRTdmdTcGFuXygpXG5cblxuICB2YXIgX2J1aWxkU3ZnU3Bhbl8gPSBidWlsZFN2Z1NwYW5fKCksXG4gICAgICBzcGFuID0gX2J1aWxkU3ZnU3Bhbl8uc3BhbixcbiAgICAgIG1pbldpZHRoID0gX2J1aWxkU3ZnU3Bhbl8ubWluV2lkdGgsXG4gICAgICBoZWlnaHQgPSBfYnVpbGRTdmdTcGFuXy5oZWlnaHQ7IC8vIE5vdGUgdGhhdCB3ZSBhcmUgcmV0dXJuaW5nIHNwYW4uZGVwdGggPSAwLlxuICAvLyBBbnkgYWRqdXN0bWVudHMgcmVsYXRpdmUgdG8gdGhlIGJhc2VsaW5lIG11c3QgYmUgZG9uZSBpbiBidWlsZEhUTUwuXG5cblxuICBzcGFuLmhlaWdodCA9IGhlaWdodDtcbiAgc3Bhbi5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcImVtXCI7XG5cbiAgaWYgKG1pbldpZHRoID4gMCkge1xuICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBtaW5XaWR0aCArIFwiZW1cIjtcbiAgfVxuXG4gIHJldHVybiBzcGFuO1xufTtcblxudmFyIHN0cmV0Y2h5X2VuY2xvc2VTcGFuID0gZnVuY3Rpb24gZW5jbG9zZVNwYW4oaW5uZXIsIGxhYmVsLCBwYWQsIG9wdGlvbnMpIHtcbiAgLy8gUmV0dXJuIGFuIGltYWdlIHNwYW4gZm9yIFxcY2FuY2VsLCBcXGJjYW5jZWwsIFxceGNhbmNlbCwgb3IgXFxmYm94XG4gIHZhciBpbWc7XG4gIHZhciB0b3RhbEhlaWdodCA9IGlubmVyLmhlaWdodCArIGlubmVyLmRlcHRoICsgMiAqIHBhZDtcblxuICBpZiAoL2Zib3h8Y29sb3IvLnRlc3QobGFiZWwpKSB7XG4gICAgaW1nID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wic3RyZXRjaHlcIiwgbGFiZWxdLCBbXSwgb3B0aW9ucyk7XG5cbiAgICBpZiAobGFiZWwgPT09IFwiZmJveFwiKSB7XG4gICAgICB2YXIgY29sb3IgPSBvcHRpb25zLmNvbG9yICYmIG9wdGlvbnMuZ2V0Q29sb3IoKTtcblxuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIGltZy5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBcXGNhbmNlbCwgXFxiY2FuY2VsLCBvciBcXHhjYW5jZWxcbiAgICAvLyBTaW5jZSBcXGNhbmNlbCdzIFNWRyBpcyBpbmxpbmUgYW5kIGl0IG9taXRzIHRoZSB2aWV3Qm94IGF0dHJpYnV0ZSxcbiAgICAvLyBpdHMgc3Ryb2tlLXdpZHRoIHdpbGwgbm90IHZhcnkgd2l0aCBzcGFuIGFyZWEuXG4gICAgdmFyIGxpbmVzID0gW107XG5cbiAgICBpZiAoL15bYnhdY2FuY2VsJC8udGVzdChsYWJlbCkpIHtcbiAgICAgIGxpbmVzLnB1c2gobmV3IExpbmVOb2RlKHtcbiAgICAgICAgXCJ4MVwiOiBcIjBcIixcbiAgICAgICAgXCJ5MVwiOiBcIjBcIixcbiAgICAgICAgXCJ4MlwiOiBcIjEwMCVcIixcbiAgICAgICAgXCJ5MlwiOiBcIjEwMCVcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIwLjA0NmVtXCJcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoL154P2NhbmNlbCQvLnRlc3QobGFiZWwpKSB7XG4gICAgICBsaW5lcy5wdXNoKG5ldyBMaW5lTm9kZSh7XG4gICAgICAgIFwieDFcIjogXCIwXCIsXG4gICAgICAgIFwieTFcIjogXCIxMDAlXCIsXG4gICAgICAgIFwieDJcIjogXCIxMDAlXCIsXG4gICAgICAgIFwieTJcIjogXCIwXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMC4wNDZlbVwiXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdmFyIHN2Z05vZGUgPSBuZXcgU3ZnTm9kZShsaW5lcywge1xuICAgICAgXCJ3aWR0aFwiOiBcIjEwMCVcIixcbiAgICAgIFwiaGVpZ2h0XCI6IHRvdGFsSGVpZ2h0ICsgXCJlbVwiXG4gICAgfSk7XG4gICAgaW1nID0gYnVpbGRDb21tb24ubWFrZVN2Z1NwYW4oW10sIFtzdmdOb2RlXSwgb3B0aW9ucyk7XG4gIH1cblxuICBpbWcuaGVpZ2h0ID0gdG90YWxIZWlnaHQ7XG4gIGltZy5zdHlsZS5oZWlnaHQgPSB0b3RhbEhlaWdodCArIFwiZW1cIjtcbiAgcmV0dXJuIGltZztcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0cmV0Y2h5ID0gKHtcbiAgZW5jbG9zZVNwYW46IHN0cmV0Y2h5X2VuY2xvc2VTcGFuLFxuICBtYXRoTUxub2RlOiBzdHJldGNoeV9tYXRoTUxub2RlLFxuICBzdmdTcGFuOiBzdHJldGNoeV9zdmdTcGFuXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9hY2NlbnQuanNcblxuXG5cblxuXG5cblxuXG5cbi8vIE5PVEU6IFVubGlrZSBtb3N0IGBodG1sQnVpbGRlcmBzLCB0aGlzIG9uZSBoYW5kbGVzIG5vdCBvbmx5IFwiYWNjZW50XCIsIGJ1dFxudmFyIGFjY2VudF9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdycCwgb3B0aW9ucykge1xuICAvLyBBY2NlbnRzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMsIHJ1bGUgMTIuXG4gIHZhciBiYXNlO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG4gIHZhciBzdXBTdWJHcm91cDtcblxuICBpZiAoc3VwU3ViKSB7XG4gICAgLy8gSWYgb3VyIGJhc2UgaXMgYSBjaGFyYWN0ZXIgYm94LCBhbmQgd2UgaGF2ZSBzdXBlcnNjcmlwdHMgYW5kXG4gICAgLy8gc3Vic2NyaXB0cywgdGhlIHN1cHN1YiB3aWxsIGRlZmVyIHRvIHVzLiBJbiBwYXJ0aWN1bGFyLCB3ZSB3YW50XG4gICAgLy8gdG8gYXR0YWNoIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgdG8gdGhlIGlubmVyIGJvZHkgKHNvXG4gICAgLy8gdGhhdCB0aGUgcG9zaXRpb24gb2YgdGhlIHN1cGVyc2NyaXB0cyBhbmQgc3Vic2NyaXB0cyB3b24ndCBiZVxuICAgIC8vIGFmZmVjdGVkIGJ5IHRoZSBoZWlnaHQgb2YgdGhlIGFjY2VudCkuIFdlIGFjY29tcGxpc2ggdGhpcyBieVxuICAgIC8vIHN0aWNraW5nIHRoZSBiYXNlIG9mIHRoZSBhY2NlbnQgaW50byB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViLCBhbmRcbiAgICAvLyByZW5kZXJpbmcgdGhhdCwgd2hpbGUga2VlcGluZyB0cmFjayBvZiB3aGVyZSB0aGUgYWNjZW50IGlzLlxuICAgIC8vIFRoZSByZWFsIGFjY2VudCBncm91cCBpcyB0aGUgYmFzZSBvZiB0aGUgc3Vwc3ViIGdyb3VwXG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdXBTdWIuYmFzZSwgXCJhY2NlbnRcIik7IC8vIFRoZSBjaGFyYWN0ZXIgYm94IGlzIHRoZSBiYXNlIG9mIHRoZSBhY2NlbnQgZ3JvdXBcblxuICAgIGJhc2UgPSBncm91cC5iYXNlOyAvLyBTdGljayB0aGUgY2hhcmFjdGVyIGJveCBpbnRvIHRoZSBiYXNlIG9mIHRoZSBzdXBzdWIgZ3JvdXBcblxuICAgIHN1cFN1Yi5iYXNlID0gYmFzZTsgLy8gUmVyZW5kZXIgdGhlIHN1cHN1YiBncm91cCB3aXRoIGl0cyBuZXcgYmFzZSwgYW5kIHN0b3JlIHRoYXRcbiAgICAvLyByZXN1bHQuXG5cbiAgICBzdXBTdWJHcm91cCA9IGFzc2VydFNwYW4oYnVpbGRIVE1MX2J1aWxkR3JvdXAoc3VwU3ViLCBvcHRpb25zKSk7IC8vIHJlc2V0IG9yaWdpbmFsIGJhc2VcblxuICAgIHN1cFN1Yi5iYXNlID0gZ3JvdXA7XG4gIH0gZWxzZSB7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShncnAsIFwiYWNjZW50XCIpO1xuICAgIGJhc2UgPSBncm91cC5iYXNlO1xuICB9IC8vIEJ1aWxkIHRoZSBiYXNlIGdyb3VwXG5cblxuICB2YXIgYm9keSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGJhc2UsIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpOyAvLyBEb2VzIHRoZSBhY2NlbnQgbmVlZCB0byBzaGlmdCBmb3IgdGhlIHNrZXcgb2YgYSBjaGFyYWN0ZXI/XG5cbiAgdmFyIG11c3RTaGlmdCA9IGdyb3VwLmlzU2hpZnR5ICYmIHV0aWxzLmlzQ2hhcmFjdGVyQm94KGJhc2UpOyAvLyBDYWxjdWxhdGUgdGhlIHNrZXcgb2YgdGhlIGFjY2VudC4gVGhpcyBpcyBiYXNlZCBvbiB0aGUgbGluZSBcIklmIHRoZVxuICAvLyBudWNsZXVzIGlzIG5vdCBhIHNpbmdsZSBjaGFyYWN0ZXIsIGxldCBzID0gMDsgb3RoZXJ3aXNlIHNldCBzIHRvIHRoZVxuICAvLyBrZXJuIGFtb3VudCBmb3IgdGhlIG51Y2xldXMgZm9sbG93ZWQgYnkgdGhlIFxcc2tld2NoYXIgb2YgaXRzIGZvbnQuXCJcbiAgLy8gTm90ZSB0aGF0IG91ciBza2V3IG1ldHJpY3MgYXJlIGp1c3QgdGhlIGtlcm4gYmV0d2VlbiBlYWNoIGNoYXJhY3RlclxuICAvLyBhbmQgdGhlIHNrZXdjaGFyLlxuXG4gIHZhciBza2V3ID0gMDtcblxuICBpZiAobXVzdFNoaWZ0KSB7XG4gICAgLy8gSWYgdGhlIGJhc2UgaXMgYSBjaGFyYWN0ZXIgYm94LCB0aGVuIHdlIHdhbnQgdGhlIHNrZXcgb2YgdGhlXG4gICAgLy8gaW5uZXJtb3N0IGNoYXJhY3Rlci4gVG8gZG8gdGhhdCwgd2UgZmluZCB0aGUgaW5uZXJtb3N0IGNoYXJhY3RlcjpcbiAgICB2YXIgYmFzZUNoYXIgPSB1dGlscy5nZXRCYXNlRWxlbShiYXNlKTsgLy8gVGhlbiwgd2UgcmVuZGVyIGl0cyBncm91cCB0byBnZXQgdGhlIHN5bWJvbCBpbnNpZGUgaXRcblxuICAgIHZhciBiYXNlR3JvdXAgPSBidWlsZEhUTUxfYnVpbGRHcm91cChiYXNlQ2hhciwgb3B0aW9ucy5oYXZpbmdDcmFtcGVkU3R5bGUoKSk7IC8vIEZpbmFsbHksIHdlIHB1bGwgdGhlIHNrZXcgb2ZmIG9mIHRoZSBzeW1ib2wuXG5cbiAgICBza2V3ID0gYXNzZXJ0U3ltYm9sRG9tTm9kZShiYXNlR3JvdXApLnNrZXc7IC8vIE5vdGUgdGhhdCB3ZSBub3cgdGhyb3cgYXdheSBiYXNlR3JvdXAsIGJlY2F1c2UgdGhlIGxheWVycyB3ZVxuICAgIC8vIHJlbW92ZWQgd2l0aCBnZXRCYXNlRWxlbSBtaWdodCBjb250YWluIHRoaW5ncyBsaWtlIFxcY29sb3Igd2hpY2hcbiAgICAvLyB3ZSBjYW4ndCBnZXQgcmlkIG9mLlxuICAgIC8vIFRPRE8oZW1pbHkpOiBGaW5kIGEgYmV0dGVyIHdheSB0byBnZXQgdGhlIHNrZXdcbiAgfSAvLyBjYWxjdWxhdGUgdGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSBib2R5IGFuZCB0aGUgYWNjZW50XG5cblxuICB2YXIgY2xlYXJhbmNlID0gTWF0aC5taW4oYm9keS5oZWlnaHQsIG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0KTsgLy8gQnVpbGQgdGhlIGFjY2VudFxuXG4gIHZhciBhY2NlbnRCb2R5O1xuXG4gIGlmICghZ3JvdXAuaXNTdHJldGNoeSkge1xuICAgIHZhciBhY2NlbnQ7XG4gICAgdmFyIHdpZHRoO1xuXG4gICAgaWYgKGdyb3VwLmxhYmVsID09PSBcIlxcXFx2ZWNcIikge1xuICAgICAgLy8gQmVmb3JlIHZlcnNpb24gMC45LCBcXHZlYyB1c2VkIHRoZSBjb21iaW5pbmcgZm9udCBnbHlwaCBVKzIwRDcuXG4gICAgICAvLyBCdXQgYnJvd3NlcnMsIGVzcGVjaWFsbHkgU2FmYXJpLCBhcmUgbm90IGNvbnNpc3RlbnQgaW4gaG93IHRoZXlcbiAgICAgIC8vIHJlbmRlciBjb21iaW5pbmcgY2hhcmFjdGVycyB3aGVuIG5vdCBwcmVjZWRlZCBieSBhIGNoYXJhY3Rlci5cbiAgICAgIC8vIFNvIG5vdyB3ZSB1c2UgYW4gU1ZHLlxuICAgICAgLy8gSWYgU2FmYXJpIHJlZm9ybXMsIHdlIHNob3VsZCBjb25zaWRlciByZXZlcnRpbmcgdG8gdGhlIGdseXBoLlxuICAgICAgYWNjZW50ID0gYnVpbGRDb21tb24uc3RhdGljU3ZnKFwidmVjXCIsIG9wdGlvbnMpO1xuICAgICAgd2lkdGggPSBidWlsZENvbW1vbi5zdmdEYXRhLnZlY1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjZW50ID0gYnVpbGRDb21tb24ubWFrZU9yZCh7XG4gICAgICAgIG1vZGU6IGdyb3VwLm1vZGUsXG4gICAgICAgIHRleHQ6IGdyb3VwLmxhYmVsXG4gICAgICB9LCBvcHRpb25zLCBcInRleHRvcmRcIik7XG4gICAgICBhY2NlbnQgPSBhc3NlcnRTeW1ib2xEb21Ob2RlKGFjY2VudCk7IC8vIFJlbW92ZSB0aGUgaXRhbGljIGNvcnJlY3Rpb24gb2YgdGhlIGFjY2VudCwgYmVjYXVzZSBpdCBvbmx5IHNlcnZlcyB0b1xuICAgICAgLy8gc2hpZnQgdGhlIGFjY2VudCBvdmVyIHRvIGEgcGxhY2Ugd2UgZG9uJ3Qgd2FudC5cblxuICAgICAgYWNjZW50Lml0YWxpYyA9IDA7XG4gICAgICB3aWR0aCA9IGFjY2VudC53aWR0aDtcbiAgICB9XG5cbiAgICBhY2NlbnRCb2R5ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYWNjZW50LWJvZHlcIl0sIFthY2NlbnRdKTsgLy8gXCJGdWxsXCIgYWNjZW50cyBleHBhbmQgdGhlIHdpZHRoIG9mIHRoZSByZXN1bHRpbmcgc3ltYm9sIHRvIGJlXG4gICAgLy8gYXQgbGVhc3QgdGhlIHdpZHRoIG9mIHRoZSBhY2NlbnQsIGFuZCBvdmVybGFwIGRpcmVjdGx5IG9udG8gdGhlXG4gICAgLy8gY2hhcmFjdGVyIHdpdGhvdXQgYW55IHZlcnRpY2FsIG9mZnNldC5cblxuICAgIHZhciBhY2NlbnRGdWxsID0gZ3JvdXAubGFiZWwgPT09IFwiXFxcXHRleHRjaXJjbGVkXCI7XG5cbiAgICBpZiAoYWNjZW50RnVsbCkge1xuICAgICAgYWNjZW50Qm9keS5jbGFzc2VzLnB1c2goJ2FjY2VudC1mdWxsJyk7XG4gICAgICBjbGVhcmFuY2UgPSBib2R5LmhlaWdodDtcbiAgICB9IC8vIFNoaWZ0IHRoZSBhY2NlbnQgb3ZlciBieSB0aGUgc2tldy5cblxuXG4gICAgdmFyIGxlZnQgPSBza2V3OyAvLyBDU1MgZGVmaW5lcyBgLmthdGV4IC5hY2NlbnQgLmFjY2VudC1ib2R5Om5vdCguYWNjZW50LWZ1bGwpIHsgd2lkdGg6IDAgfWBcbiAgICAvLyBzbyB0aGF0IHRoZSBhY2NlbnQgZG9lc24ndCBjb250cmlidXRlIHRvIHRoZSBib3VuZGluZyBib3guXG4gICAgLy8gV2UgbmVlZCB0byBzaGlmdCB0aGUgY2hhcmFjdGVyIGJ5IGl0cyB3aWR0aCAoZWZmZWN0aXZlbHkgaGFsZlxuICAgIC8vIGl0cyB3aWR0aCkgdG8gY29tcGVuc2F0ZS5cblxuICAgIGlmICghYWNjZW50RnVsbCkge1xuICAgICAgbGVmdCAtPSB3aWR0aCAvIDI7XG4gICAgfVxuXG4gICAgYWNjZW50Qm9keS5zdHlsZS5sZWZ0ID0gbGVmdCArIFwiZW1cIjsgLy8gXFx0ZXh0Y2lyY2xlZCB1c2VzIHRoZSBcXGJpZ2NpcmMgZ2x5cGgsIHNvIGl0IG5lZWRzIHNvbWVcbiAgICAvLyB2ZXJ0aWNhbCBhZGp1c3RtZW50IHRvIG1hdGNoIExhVGVYLlxuXG4gICAgaWYgKGdyb3VwLmxhYmVsID09PSBcIlxcXFx0ZXh0Y2lyY2xlZFwiKSB7XG4gICAgICBhY2NlbnRCb2R5LnN0eWxlLnRvcCA9IFwiLjJlbVwiO1xuICAgIH1cblxuICAgIGFjY2VudEJvZHkgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImZpcnN0QmFzZWxpbmVcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYm9keVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogLWNsZWFyYW5jZVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYWNjZW50Qm9keVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBhY2NlbnRCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7XG4gICAgYWNjZW50Qm9keSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBib2R5XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBhY2NlbnRCb2R5LFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogW1wic3ZnLWFsaWduXCJdLFxuICAgICAgICB3cmFwcGVyU3R5bGU6IHNrZXcgPiAwID8ge1xuICAgICAgICAgIHdpZHRoOiBcImNhbGMoMTAwJSAtIFwiICsgMiAqIHNrZXcgKyBcImVtKVwiLFxuICAgICAgICAgIG1hcmdpbkxlZnQ6IDIgKiBza2V3ICsgXCJlbVwiXG4gICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cblxuICB2YXIgYWNjZW50V3JhcCA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJhY2NlbnRcIl0sIFthY2NlbnRCb2R5XSwgb3B0aW9ucyk7XG5cbiAgaWYgKHN1cFN1Ykdyb3VwKSB7XG4gICAgLy8gSGVyZSwgd2UgcmVwbGFjZSB0aGUgXCJiYXNlXCIgY2hpbGQgb2YgdGhlIHN1cHN1YiB3aXRoIG91ciBuZXdseVxuICAgIC8vIGdlbmVyYXRlZCBhY2NlbnQuXG4gICAgc3VwU3ViR3JvdXAuY2hpbGRyZW5bMF0gPSBhY2NlbnRXcmFwOyAvLyBTaW5jZSB3ZSBkb24ndCByZXJ1biB0aGUgaGVpZ2h0IGNhbGN1bGF0aW9uIGFmdGVyIHJlcGxhY2luZyB0aGVcbiAgICAvLyBhY2NlbnQsIHdlIG1hbnVhbGx5IHJlY2FsY3VsYXRlIGhlaWdodC5cblxuICAgIHN1cFN1Ykdyb3VwLmhlaWdodCA9IE1hdGgubWF4KGFjY2VudFdyYXAuaGVpZ2h0LCBzdXBTdWJHcm91cC5oZWlnaHQpOyAvLyBBY2NlbnRzIHNob3VsZCBhbHdheXMgYmUgb3JkcywgZXZlbiB3aGVuIHRoZWlyIGlubmFyZHMgYXJlIG5vdC5cblxuICAgIHN1cFN1Ykdyb3VwLmNsYXNzZXNbMF0gPSBcIm1vcmRcIjtcbiAgICByZXR1cm4gc3VwU3ViR3JvdXA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFjY2VudFdyYXA7XG4gIH1cbn07XG5cbnZhciBhY2NlbnRfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGFjY2VudE5vZGUgPSBncm91cC5pc1N0cmV0Y2h5ID8gc3RyZXRjaHkubWF0aE1Mbm9kZShncm91cC5sYWJlbCkgOiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5sYWJlbCwgZ3JvdXAubW9kZSldKTtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vdmVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJhc2UsIG9wdGlvbnMpLCBhY2NlbnROb2RlXSk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKFwiYWNjZW50XCIsIFwidHJ1ZVwiKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgTk9OX1NUUkVUQ0hZX0FDQ0VOVF9SRUdFWCA9IG5ldyBSZWdFeHAoW1wiXFxcXGFjdXRlXCIsIFwiXFxcXGdyYXZlXCIsIFwiXFxcXGRkb3RcIiwgXCJcXFxcdGlsZGVcIiwgXCJcXFxcYmFyXCIsIFwiXFxcXGJyZXZlXCIsIFwiXFxcXGNoZWNrXCIsIFwiXFxcXGhhdFwiLCBcIlxcXFx2ZWNcIiwgXCJcXFxcZG90XCIsIFwiXFxcXG1hdGhyaW5nXCJdLm1hcChmdW5jdGlvbiAoYWNjZW50KSB7XG4gIHJldHVybiBcIlxcXFxcIiArIGFjY2VudDtcbn0pLmpvaW4oXCJ8XCIpKTsgLy8gQWNjZW50c1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiYWNjZW50XCIsXG4gIG5hbWVzOiBbXCJcXFxcYWN1dGVcIiwgXCJcXFxcZ3JhdmVcIiwgXCJcXFxcZGRvdFwiLCBcIlxcXFx0aWxkZVwiLCBcIlxcXFxiYXJcIiwgXCJcXFxcYnJldmVcIiwgXCJcXFxcY2hlY2tcIiwgXCJcXFxcaGF0XCIsIFwiXFxcXHZlY1wiLCBcIlxcXFxkb3RcIiwgXCJcXFxcbWF0aHJpbmdcIiwgXCJcXFxcd2lkZWNoZWNrXCIsIFwiXFxcXHdpZGVoYXRcIiwgXCJcXFxcd2lkZXRpbGRlXCIsIFwiXFxcXG92ZXJyaWdodGFycm93XCIsIFwiXFxcXG92ZXJsZWZ0YXJyb3dcIiwgXCJcXFxcT3ZlcnJpZ2h0YXJyb3dcIiwgXCJcXFxcb3ZlcmxlZnRyaWdodGFycm93XCIsIFwiXFxcXG92ZXJncm91cFwiLCBcIlxcXFxvdmVybGluZXNlZ21lbnRcIiwgXCJcXFxcb3ZlcmxlZnRoYXJwb29uXCIsIFwiXFxcXG92ZXJyaWdodGhhcnBvb25cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgYmFzZSA9IGFyZ3NbMF07XG4gICAgdmFyIGlzU3RyZXRjaHkgPSAhTk9OX1NUUkVUQ0hZX0FDQ0VOVF9SRUdFWC50ZXN0KGNvbnRleHQuZnVuY05hbWUpO1xuICAgIHZhciBpc1NoaWZ0eSA9ICFpc1N0cmV0Y2h5IHx8IGNvbnRleHQuZnVuY05hbWUgPT09IFwiXFxcXHdpZGVoYXRcIiB8fCBjb250ZXh0LmZ1bmNOYW1lID09PSBcIlxcXFx3aWRldGlsZGVcIiB8fCBjb250ZXh0LmZ1bmNOYW1lID09PSBcIlxcXFx3aWRlY2hlY2tcIjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhY2NlbnRcIixcbiAgICAgIG1vZGU6IGNvbnRleHQucGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogY29udGV4dC5mdW5jTmFtZSxcbiAgICAgIGlzU3RyZXRjaHk6IGlzU3RyZXRjaHksXG4gICAgICBpc1NoaWZ0eTogaXNTaGlmdHksXG4gICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGFjY2VudF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYWNjZW50X21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBUZXh0LW1vZGUgYWNjZW50c1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiYWNjZW50XCIsXG4gIG5hbWVzOiBbXCJcXFxcJ1wiLCBcIlxcXFxgXCIsIFwiXFxcXF5cIiwgXCJcXFxcflwiLCBcIlxcXFw9XCIsIFwiXFxcXHVcIiwgXCJcXFxcLlwiLCAnXFxcXFwiJywgXCJcXFxcclwiLCBcIlxcXFxIXCIsIFwiXFxcXHZcIiwgXCJcXFxcdGV4dGNpcmNsZWRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGFsbG93ZWRJbk1hdGg6IGZhbHNlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciBiYXNlID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhY2NlbnRcIixcbiAgICAgIG1vZGU6IGNvbnRleHQucGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogY29udGV4dC5mdW5jTmFtZSxcbiAgICAgIGlzU3RyZXRjaHk6IGZhbHNlLFxuICAgICAgaXNTaGlmdHk6IHRydWUsXG4gICAgICBiYXNlOiBiYXNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGFjY2VudF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYWNjZW50X21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2FjY2VudHVuZGVyLmpzXG4vLyBIb3Jpem9udGFsIG92ZXJsYXAgZnVuY3Rpb25zXG5cblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiYWNjZW50VW5kZXJcIixcbiAgbmFtZXM6IFtcIlxcXFx1bmRlcmxlZnRhcnJvd1wiLCBcIlxcXFx1bmRlcnJpZ2h0YXJyb3dcIiwgXCJcXFxcdW5kZXJsZWZ0cmlnaHRhcnJvd1wiLCBcIlxcXFx1bmRlcmdyb3VwXCIsIFwiXFxcXHVuZGVybGluZXNlZ21lbnRcIiwgXCJcXFxcdXRpbGRlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGJhc2UgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImFjY2VudFVuZGVyXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGxhYmVsOiBmdW5jTmFtZSxcbiAgICAgIGJhc2U6IGJhc2VcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBUcmVhdCB1bmRlciBhY2NlbnRzIG11Y2ggbGlrZSB1bmRlcmxpbmVzLlxuICAgIHZhciBpbm5lckdyb3VwID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucyk7XG4gICAgdmFyIGFjY2VudEJvZHkgPSBzdHJldGNoeS5zdmdTcGFuKGdyb3VwLCBvcHRpb25zKTtcbiAgICB2YXIga2VybiA9IGdyb3VwLmxhYmVsID09PSBcIlxcXFx1dGlsZGVcIiA/IDAuMTIgOiAwOyAvLyBHZW5lcmF0ZSB0aGUgdmxpc3QsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5zXG5cbiAgICB2YXIgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBhY2NlbnRCb2R5LmhlaWdodCArIGtlcm4sXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGFjY2VudEJvZHksXG4gICAgICAgIHdyYXBwZXJDbGFzc2VzOiBbXCJzdmctYWxpZ25cIl1cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IGtlcm5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGlubmVyR3JvdXBcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJhY2NlbnR1bmRlclwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYWNjZW50Tm9kZSA9IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdW5kZXJcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucyksIGFjY2VudE5vZGVdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudHVuZGVyXCIsIFwidHJ1ZVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvYXJyb3cuanNcblxuXG5cblxuXG5cblxuLy8gSGVscGVyIGZ1bmN0aW9uXG52YXIgYXJyb3dfcGFkZGVkTm9kZSA9IGZ1bmN0aW9uIHBhZGRlZE5vZGUoZ3JvdXApIHtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgZ3JvdXAgPyBbZ3JvdXBdIDogW10pO1xuICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiKzAuNmVtXCIpO1xuICBub2RlLnNldEF0dHJpYnV0ZShcImxzcGFjZVwiLCBcIjAuM2VtXCIpO1xuICByZXR1cm4gbm9kZTtcbn07IC8vIFN0cmV0Y2h5IGFycm93cyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50XG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInhBcnJvd1wiLFxuICBuYW1lczogW1wiXFxcXHhsZWZ0YXJyb3dcIiwgXCJcXFxceHJpZ2h0YXJyb3dcIiwgXCJcXFxceExlZnRhcnJvd1wiLCBcIlxcXFx4UmlnaHRhcnJvd1wiLCBcIlxcXFx4bGVmdHJpZ2h0YXJyb3dcIiwgXCJcXFxceExlZnRyaWdodGFycm93XCIsIFwiXFxcXHhob29rbGVmdGFycm93XCIsIFwiXFxcXHhob29rcmlnaHRhcnJvd1wiLCBcIlxcXFx4bWFwc3RvXCIsIFwiXFxcXHhyaWdodGhhcnBvb25kb3duXCIsIFwiXFxcXHhyaWdodGhhcnBvb251cFwiLCBcIlxcXFx4bGVmdGhhcnBvb25kb3duXCIsIFwiXFxcXHhsZWZ0aGFycG9vbnVwXCIsIFwiXFxcXHhyaWdodGxlZnRoYXJwb29uc1wiLCBcIlxcXFx4bGVmdHJpZ2h0aGFycG9vbnNcIiwgXCJcXFxceGxvbmdlcXVhbFwiLCBcIlxcXFx4dHdvaGVhZHJpZ2h0YXJyb3dcIiwgXCJcXFxceHR3b2hlYWRsZWZ0YXJyb3dcIiwgXCJcXFxceHRvZnJvbVwiLCAvLyBUaGUgbmV4dCAzIGZ1bmN0aW9ucyBhcmUgaGVyZSB0byBzdXBwb3J0IHRoZSBtaGNoZW0gZXh0ZW5zaW9uLlxuICAvLyBEaXJlY3QgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyBkaXNjb3VyYWdlZCBhbmQgbWF5IGJyZWFrIHNvbWVkYXkuXG4gIFwiXFxcXHhyaWdodGxlZnRhcnJvd3NcIiwgXCJcXFxceHJpZ2h0ZXF1aWxpYnJpdW1cIiwgXCJcXFxceGxlZnRlcXVpbGlicml1bVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIG51bU9wdGlvbmFsQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ4QXJyb3dcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYm9keTogYXJnc1swXSxcbiAgICAgIGJlbG93OiBvcHRBcmdzWzBdXG4gICAgfTtcbiAgfSxcbiAgLy8gRmxvdyBpcyB1bmFibGUgdG8gY29ycmVjdGx5IGluZmVyIHRoZSB0eXBlIG9mIGBncm91cGAsIGV2ZW4gdGhvdWdoIGl0J3NcbiAgLy8gdW5hbWliaWd1b3VzbHkgZGV0ZXJtaW5lZCBmcm9tIHRoZSBwYXNzZWQtaW4gYHR5cGVgIGFib3ZlLlxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlOyAvLyBCdWlsZCB0aGUgYXJndW1lbnQgZ3JvdXBzIGluIHRoZSBhcHByb3ByaWF0ZSBzdHlsZS5cbiAgICAvLyBSZWY6IGFtc21hdGguZHR4OiAgIFxcaGJveHskXFxzY3JpcHRzdHlsZVxcbWtlcm4jM211eyM2fVxcbWtlcm4jNG11JH0lXG4gICAgLy8gU29tZSBncm91cHMgY2FuIHJldHVybiBkb2N1bWVudCBmcmFnbWVudHMuICBIYW5kbGUgdGhvc2UgYnkgd3JhcHBpbmdcbiAgICAvLyB0aGVtIGluIGEgc3Bhbi5cblxuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZS5zdXAoKSk7XG4gICAgdmFyIHVwcGVyR3JvdXAgPSBidWlsZENvbW1vbi53cmFwRnJhZ21lbnQoYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucywgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIHVwcGVyR3JvdXAuY2xhc3Nlcy5wdXNoKFwieC1hcnJvdy1wYWRcIik7XG4gICAgdmFyIGxvd2VyR3JvdXA7XG5cbiAgICBpZiAoZ3JvdXAuYmVsb3cpIHtcbiAgICAgIC8vIEJ1aWxkIHRoZSBsb3dlciBncm91cFxuICAgICAgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3ViKCkpO1xuICAgICAgbG93ZXJHcm91cCA9IGJ1aWxkQ29tbW9uLndyYXBGcmFnbWVudChidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5iZWxvdywgbmV3T3B0aW9ucywgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgICAgbG93ZXJHcm91cC5jbGFzc2VzLnB1c2goXCJ4LWFycm93LXBhZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgYXJyb3dCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7IC8vIFJlIHNoaWZ0OiBOb3RlIHRoYXQgc3RyZXRjaHkuc3ZnU3BhbiByZXR1cm5lZCBhcnJvd0JvZHkuZGVwdGggPSAwLlxuICAgIC8vIFRoZSBwb2ludCB3ZSB3YW50IG9uIHRoZSBtYXRoIGF4aXMgaXMgYXQgMC41ICogYXJyb3dCb2R5LmhlaWdodC5cblxuICAgIHZhciBhcnJvd1NoaWZ0ID0gLW9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0ICsgMC41ICogYXJyb3dCb2R5LmhlaWdodDsgLy8gMiBtdSBrZXJuLiBSZWY6IGFtc21hdGguZHR4OiAjN1xcaWYwIzJcXGVsc2VcXG1rZXJuIzJtdVxcZmlcblxuICAgIHZhciB1cHBlclNoaWZ0ID0gLW9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0IC0gMC41ICogYXJyb3dCb2R5LmhlaWdodCAtIDAuMTExOyAvLyAwLjExMSBlbSA9IDIgbXVcblxuICAgIGlmICh1cHBlckdyb3VwLmRlcHRoID4gMC4yNSB8fCBncm91cC5sYWJlbCA9PT0gXCJcXFxceGxlZnRlcXVpbGlicml1bVwiKSB7XG4gICAgICB1cHBlclNoaWZ0IC09IHVwcGVyR3JvdXAuZGVwdGg7IC8vIHNoaWZ0IHVwIGlmIGRlcHRoIGVuY3JvYWNoZXNcbiAgICB9IC8vIEdlbmVyYXRlIHRoZSB2bGlzdFxuXG5cbiAgICB2YXIgdmxpc3Q7XG5cbiAgICBpZiAobG93ZXJHcm91cCkge1xuICAgICAgdmFyIGxvd2VyU2hpZnQgPSAtb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQgKyBsb3dlckdyb3VwLmhlaWdodCArIDAuNSAqIGFycm93Qm9keS5oZWlnaHQgKyAwLjExMTtcbiAgICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiB1cHBlckdyb3VwLFxuICAgICAgICAgIHNoaWZ0OiB1cHBlclNoaWZ0XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBhcnJvd0JvZHksXG4gICAgICAgICAgc2hpZnQ6IGFycm93U2hpZnRcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IGxvd2VyR3JvdXAsXG4gICAgICAgICAgc2hpZnQ6IGxvd2VyU2hpZnRcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogdXBwZXJHcm91cCxcbiAgICAgICAgICBzaGlmdDogdXBwZXJTaGlmdFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogYXJyb3dCb2R5LFxuICAgICAgICAgIHNoaWZ0OiBhcnJvd1NoaWZ0XG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9IC8vICRGbG93Rml4TWU6IFJlcGxhY2UgdGhpcyB3aXRoIHBhc3NpbmcgXCJzdmctYWxpZ25cIiBpbnRvIG1ha2VWTGlzdC5cblxuXG4gICAgdmxpc3QuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uY2xhc3Nlcy5wdXNoKFwic3ZnLWFsaWduXCIpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtcmVsXCIsIFwieC1hcnJvd1wiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYXJyb3dOb2RlID0gc3RyZXRjaHkubWF0aE1Mbm9kZShncm91cC5sYWJlbCk7XG4gICAgdmFyIG5vZGU7XG5cbiAgICBpZiAoZ3JvdXAuYm9keSkge1xuICAgICAgdmFyIHVwcGVyTm9kZSA9IGFycm93X3BhZGRlZE5vZGUoYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSk7XG5cbiAgICAgIGlmIChncm91cC5iZWxvdykge1xuICAgICAgICB2YXIgbG93ZXJOb2RlID0gYXJyb3dfcGFkZGVkTm9kZShidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJlbG93LCBvcHRpb25zKSk7XG4gICAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm11bmRlcm92ZXJcIiwgW2Fycm93Tm9kZSwgbG93ZXJOb2RlLCB1cHBlck5vZGVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vdmVyXCIsIFthcnJvd05vZGUsIHVwcGVyTm9kZV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3JvdXAuYmVsb3cpIHtcbiAgICAgIHZhciBfbG93ZXJOb2RlID0gYXJyb3dfcGFkZGVkTm9kZShidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJlbG93LCBvcHRpb25zKSk7XG5cbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm11bmRlclwiLCBbYXJyb3dOb2RlLCBfbG93ZXJOb2RlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgICAgIC8vIFBhcnNlci5qcyB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gYXJndW1lbnQuXG4gICAgICBub2RlID0gYXJyb3dfcGFkZGVkTm9kZSgpO1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW92ZXJcIiwgW2Fycm93Tm9kZSwgbm9kZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9jaGFyLmpzXG5cblxuIC8vIFxcQGNoYXIgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGdyb3VwZWQgZGVjaW1hbCBhcmd1bWVudCBsaWtlXG4vLyB7MTIzfSBhbmQgY29udmVydHMgaW50byBzeW1ib2wgd2l0aCBjb2RlIDEyMy4gIEl0IGlzIHVzZWQgYnkgdGhlICptYWNybypcbi8vIFxcY2hhciBkZWZpbmVkIGluIG1hY3Jvcy5qcy5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRvcmRcIixcbiAgbmFtZXM6IFtcIlxcXFxAY2hhclwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBhcmcgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcIm9yZGdyb3VwXCIpO1xuICAgIHZhciBncm91cCA9IGFyZy5ib2R5O1xuICAgIHZhciBudW1iZXIgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBhc3NlcnROb2RlVHlwZShncm91cFtpXSwgXCJ0ZXh0b3JkXCIpO1xuICAgICAgbnVtYmVyICs9IG5vZGUudGV4dDtcbiAgICB9XG5cbiAgICB2YXIgY29kZSA9IHBhcnNlSW50KG51bWJlcik7XG5cbiAgICBpZiAoaXNOYU4oY29kZSkpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxAY2hhciBoYXMgbm9uLW51bWVyaWMgYXJndW1lbnQgXCIgKyBudW1iZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgdGV4dDogU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2NvbG9yLmpzXG5cblxuXG5cblxuXG5cbnZhciBjb2xvcl9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50cyA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAuY29sb3IpLCBmYWxzZSk7IC8vIFxcY29sb3IgaXNuJ3Qgc3VwcG9zZWQgdG8gYWZmZWN0IHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cyBpdCBjb250YWlucy5cbiAgLy8gVG8gYWNjb21wbGlzaCB0aGlzLCB3ZSB3cmFwIHRoZSByZXN1bHRzIGluIGEgZnJhZ21lbnQsIHNvIHRoZSBpbm5lclxuICAvLyBlbGVtZW50cyB3aWxsIGJlIGFibGUgdG8gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCB0aGVpciBuZWlnaGJvcnMuIEZvclxuICAvLyBleGFtcGxlLCBgXFxjb2xvcntyZWR9ezIgK30gM2AgaGFzIHRoZSBzYW1lIHNwYWNpbmcgYXMgYDIgKyAzYFxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xufTtcblxudmFyIGNvbG9yX21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBpbm5lciA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLndpdGhDb2xvcihncm91cC5jb2xvcikpO1xuICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXN0eWxlXCIsIGlubmVyKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoY29sb3JcIiwgZ3JvdXAuY29sb3IpO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJjb2xvclwiLFxuICBuYW1lczogW1wiXFxcXHRleHRjb2xvclwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgZ3JlZWRpbmVzczogMyxcbiAgICBhcmdUeXBlczogW1wiY29sb3JcIiwgXCJvcmlnaW5hbFwiXVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGNvbG9yID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJjb2xvci10b2tlblwiKS5jb2xvcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogY29sb3JfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGNvbG9yX21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImNvbG9yXCIsXG4gIG5hbWVzOiBbXCJcXFxcY29sb3JcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcImNvbG9yXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyLFxuICAgICAgICBicmVha09uVG9rZW5UZXh0ID0gX3JlZjIuYnJlYWtPblRva2VuVGV4dDtcbiAgICB2YXIgY29sb3IgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcImNvbG9yLXRva2VuXCIpLmNvbG9yOyAvLyBTZXQgbWFjcm8gXFxjdXJyZW50QGNvbG9yIGluIGN1cnJlbnQgbmFtZXNwYWNlIHRvIHN0b3JlIHRoZSBjdXJyZW50XG4gICAgLy8gY29sb3IsIG1pbWlja2luZyB0aGUgYmVoYXZpb3Igb2YgY29sb3Iuc3R5LlxuICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IHVzZWQganVzdCB0byBjb3JyZWN0bHkgY29sb3IgYSBcXHJpZ2h0XG4gICAgLy8gdGhhdCBmb2xsb3dzIGEgXFxjb2xvciBjb21tYW5kLlxuXG4gICAgcGFyc2VyLmd1bGxldC5tYWNyb3Muc2V0KFwiXFxcXGN1cnJlbnRAY29sb3JcIiwgY29sb3IpOyAvLyBQYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHkgdGhhdCBzaG91bGQgYmUgY29sb3JlZC5cblxuICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbih0cnVlLCBicmVha09uVG9rZW5UZXh0KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjb2xvclwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBjb2xvcjogY29sb3IsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGNvbG9yX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBjb2xvcl9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9jci5qc1xuLy8gUm93IGJyZWFrcyB3aXRoaW4gdGFidWxhciBlbnZpcm9ubWVudHMsIGFuZCBsaW5lIGJyZWFrcyBhdCB0b3AgbGV2ZWxcblxuXG5cblxuXG4gLy8gXFxcXCBpcyBhIG1hY3JvIG1hcHBpbmcgdG8gZWl0aGVyIFxcY3Igb3IgXFxuZXdsaW5lLiAgQmVjYXVzZSB0aGV5IGhhdmUgdGhlXG4vLyBzYW1lIHNpZ25hdHVyZSwgd2UgaW1wbGVtZW50IHRoZW0gYXMgb25lIG1lZ2FmdW5jdGlvbiwgd2l0aCBuZXdSb3dcbi8vIGluZGljYXRpbmcgd2hldGhlciB3ZSdyZSBpbiB0aGUgXFxjciBjYXNlLCBhbmQgbmV3TGluZSBpbmRpY2F0aW5nIHdoZXRoZXJcbi8vIHRvIGJyZWFrIHRoZSBsaW5lIGluIHRoZSBcXG5ld2xpbmUgY2FzZS5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImNyXCIsXG4gIG5hbWVzOiBbXCJcXFxcY3JcIiwgXCJcXFxcbmV3bGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIG51bU9wdGlvbmFsQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wic2l6ZVwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBzaXplID0gb3B0QXJnc1swXTtcbiAgICB2YXIgbmV3Um93ID0gZnVuY05hbWUgPT09IFwiXFxcXGNyXCI7XG4gICAgdmFyIG5ld0xpbmUgPSBmYWxzZTtcblxuICAgIGlmICghbmV3Um93KSB7XG4gICAgICBpZiAocGFyc2VyLnNldHRpbmdzLmRpc3BsYXlNb2RlICYmIHBhcnNlci5zZXR0aW5ncy51c2VTdHJpY3RCZWhhdmlvcihcIm5ld0xpbmVJbkRpc3BsYXlNb2RlXCIsIFwiSW4gTGFUZVgsIFxcXFxcXFxcIG9yIFxcXFxuZXdsaW5lIFwiICsgXCJkb2VzIG5vdGhpbmcgaW4gZGlzcGxheSBtb2RlXCIpKSB7XG4gICAgICAgIG5ld0xpbmUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0xpbmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNyXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG5ld0xpbmU6IG5ld0xpbmUsXG4gICAgICBuZXdSb3c6IG5ld1JvdyxcbiAgICAgIHNpemU6IHNpemUgJiYgYXNzZXJ0Tm9kZVR5cGUoc2l6ZSwgXCJzaXplXCIpLnZhbHVlXG4gICAgfTtcbiAgfSxcbiAgLy8gVGhlIGZvbGxvd2luZyBidWlsZGVycyBhcmUgY2FsbGVkIG9ubHkgYXQgdGhlIHRvcCBsZXZlbCxcbiAgLy8gbm90IHdpdGhpbiB0YWJ1bGFyL2FycmF5IGVudmlyb25tZW50cy5cbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgaWYgKGdyb3VwLm5ld1Jvdykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXGNyIHZhbGlkIG9ubHkgd2l0aGluIGEgdGFidWxhci9hcnJheSBlbnZpcm9ubWVudFwiKTtcbiAgICB9XG5cbiAgICB2YXIgc3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1zcGFjZVwiXSwgW10sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGdyb3VwLm5ld0xpbmUpIHtcbiAgICAgIHNwYW4uY2xhc3Nlcy5wdXNoKFwibmV3bGluZVwiKTtcblxuICAgICAgaWYgKGdyb3VwLnNpemUpIHtcbiAgICAgICAgc3Bhbi5zdHlsZS5tYXJnaW5Ub3AgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnNpemUsIG9wdGlvbnMpICsgXCJlbVwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcGFuO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zcGFjZVwiKTtcblxuICAgIGlmIChncm91cC5uZXdMaW5lKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImxpbmVicmVha1wiLCBcIm5ld2xpbmVcIik7XG5cbiAgICAgIGlmIChncm91cC5zaXplKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuc2l6ZSwgb3B0aW9ucykgKyBcImVtXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RlbGltaXRlci5qc1xuLyoqXG4gKiBUaGlzIGZpbGUgZGVhbHMgd2l0aCBjcmVhdGluZyBkZWxpbWl0ZXJzIG9mIHZhcmlvdXMgc2l6ZXMuIFRoZSBUZVhib29rXG4gKiBkaXNjdXNzZXMgdGhlc2Ugcm91dGluZXMgb24gcGFnZSA0NDEtNDQyLCBpbiB0aGUgXCJBbm90aGVyIHN1YnJvdXRpbmUgc2V0cyBib3hcbiAqIHggdG8gYSBzcGVjaWZpZWQgdmFyaWFibGUgZGVsaW1pdGVyXCIgcGFyYWdyYXBoLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBtYWluIHJvdXRpbmVzIGhlcmUuIGBtYWtlU21hbGxEZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgaW4gdGhlXG4gKiBub3JtYWwgZm9udCwgYnV0IGluIGVpdGhlciB0ZXh0LCBzY3JpcHQsIG9yIHNjcmlwdHNjcmlwdCBzdHlsZS5cbiAqIGBtYWtlTGFyZ2VEZWxpbWAgbWFrZXMgYSBkZWxpbWl0ZXIgaW4gdGV4dHN0eWxlLCBidXQgaW4gb25lIG9mIHRoZSBTaXplMSxcbiAqIFNpemUyLCBTaXplMywgb3IgU2l6ZTQgZm9udHMuIGBtYWtlU3RhY2tlZERlbGltYCBtYWtlcyBhIGRlbGltaXRlciBvdXQgb2ZcbiAqIHNtYWxsZXIgcGllY2VzIHRoYXQgYXJlIHN0YWNrZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLlxuICpcbiAqIFRoZSBmdW5jdGlvbnMgdGFrZSBhIHBhcmFtZXRlciBgY2VudGVyYCwgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgZGVsaW1pdGVyXG4gKiBzaG91bGQgYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBheGlzLlxuICpcbiAqIFRoZW4sIHRoZXJlIGFyZSB0aHJlZSBleHBvc2VkIGZ1bmN0aW9ucy4gYHNpemVkRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIGluXG4gKiBvbmUgb2YgdGhlIGdpdmVuIHNpemVzLiBUaGlzIGlzIHVzZWQgZm9yIHRoaW5ncyBsaWtlIGBcXGJpZ2xgLlxuICogYGN1c3RvbVNpemVkRGVsaW1gIG1ha2VzIGEgZGVsaW1pdGVyIHdpdGggYSBnaXZlbiB0b3RhbCBoZWlnaHQrZGVwdGguIEl0IGlzXG4gKiBjYWxsZWQgaW4gcGxhY2VzIGxpa2UgYFxcc3FydGAuIGBsZWZ0UmlnaHREZWxpbWAgbWFrZXMgYW4gYXBwcm9wcmlhdGVcbiAqIGRlbGltaXRlciB3aGljaCBzdXJyb3VuZHMgYW4gZXhwcmVzc2lvbiBvZiBhIGdpdmVuIGhlaWdodCBhbiBkZXB0aC4gSXQgaXNcbiAqIHVzZWQgaW4gYFxcbGVmdGAgYW5kIGBcXHJpZ2h0YC5cbiAqL1xuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBHZXQgdGhlIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gc3ltYm9sIGFuZCBmb250LCBhZnRlciB0cmFuc2Zvcm1hdGlvbiAoaS5lLlxuICogYWZ0ZXIgZm9sbG93aW5nIHJlcGxhY2VtZW50IGZyb20gc3ltYm9scy5qcylcbiAqL1xudmFyIGRlbGltaXRlcl9nZXRNZXRyaWNzID0gZnVuY3Rpb24gZ2V0TWV0cmljcyhzeW1ib2wsIGZvbnQsIG1vZGUpIHtcbiAgdmFyIHJlcGxhY2UgPSBzcmNfc3ltYm9scy5tYXRoW3N5bWJvbF0gJiYgc3JjX3N5bWJvbHMubWF0aFtzeW1ib2xdLnJlcGxhY2U7XG4gIHZhciBtZXRyaWNzID0gZ2V0Q2hhcmFjdGVyTWV0cmljcyhyZXBsYWNlIHx8IHN5bWJvbCwgZm9udCwgbW9kZSk7XG5cbiAgaWYgKCFtZXRyaWNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgc3ltYm9sIFwiICsgc3ltYm9sICsgXCIgYW5kIGZvbnQgc2l6ZSBcIiArIGZvbnQgKyBcIi5cIik7XG4gIH1cblxuICByZXR1cm4gbWV0cmljcztcbn07XG4vKipcbiAqIFB1dHMgYSBkZWxpbWl0ZXIgc3BhbiBpbiBhIGdpdmVuIHN0eWxlLCBhbmQgYWRkcyBhcHByb3ByaWF0ZSBoZWlnaHQsIGRlcHRoLFxuICogYW5kIG1heEZvbnRTaXplcy5cbiAqL1xuXG5cbnZhciBkZWxpbWl0ZXJfc3R5bGVXcmFwID0gZnVuY3Rpb24gc3R5bGVXcmFwKGRlbGltLCB0b1N0eWxlLCBvcHRpb25zLCBjbGFzc2VzKSB7XG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUodG9TdHlsZSk7XG4gIHZhciBzcGFuID0gYnVpbGRDb21tb24ubWFrZVNwYW4oY2xhc3Nlcy5jb25jYXQobmV3T3B0aW9ucy5zaXppbmdDbGFzc2VzKG9wdGlvbnMpKSwgW2RlbGltXSwgb3B0aW9ucyk7XG4gIHZhciBkZWxpbVNpemVNdWx0aXBsaWVyID0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gIHNwYW4uaGVpZ2h0ICo9IGRlbGltU2l6ZU11bHRpcGxpZXI7XG4gIHNwYW4uZGVwdGggKj0gZGVsaW1TaXplTXVsdGlwbGllcjtcbiAgc3Bhbi5tYXhGb250U2l6ZSA9IG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gIHJldHVybiBzcGFuO1xufTtcblxudmFyIGNlbnRlclNwYW4gPSBmdW5jdGlvbiBjZW50ZXJTcGFuKHNwYW4sIG9wdGlvbnMsIHN0eWxlKSB7XG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc3R5bGUpO1xuICB2YXIgc2hpZnQgPSAoMSAtIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyKSAqIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0O1xuICBzcGFuLmNsYXNzZXMucHVzaChcImRlbGltY2VudGVyXCIpO1xuICBzcGFuLnN0eWxlLnRvcCA9IHNoaWZ0ICsgXCJlbVwiO1xuICBzcGFuLmhlaWdodCAtPSBzaGlmdDtcbiAgc3Bhbi5kZXB0aCArPSBzaGlmdDtcbn07XG4vKipcbiAqIE1ha2VzIGEgc21hbGwgZGVsaW1pdGVyLiBUaGlzIGlzIGEgZGVsaW1pdGVyIHRoYXQgY29tZXMgaW4gdGhlIE1haW4tUmVndWxhclxuICogZm9udCwgYnV0IGlzIHJlc3R5bGVkIHRvIGVpdGhlciBiZSBpbiB0ZXh0c3R5bGUsIHNjcmlwdHN0eWxlLCBvclxuICogc2NyaXB0c2NyaXB0c3R5bGUuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VTbWFsbERlbGltID0gZnVuY3Rpb24gbWFrZVNtYWxsRGVsaW0oZGVsaW0sIHN0eWxlLCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgdmFyIHRleHQgPSBidWlsZENvbW1vbi5tYWtlU3ltYm9sKGRlbGltLCBcIk1haW4tUmVndWxhclwiLCBtb2RlLCBvcHRpb25zKTtcbiAgdmFyIHNwYW4gPSBkZWxpbWl0ZXJfc3R5bGVXcmFwKHRleHQsIHN0eWxlLCBvcHRpb25zLCBjbGFzc2VzKTtcblxuICBpZiAoY2VudGVyKSB7XG4gICAgY2VudGVyU3BhbihzcGFuLCBvcHRpb25zLCBzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3Bhbjtcbn07XG4vKipcbiAqIEJ1aWxkcyBhIHN5bWJvbCBpbiB0aGUgZ2l2ZW4gZm9udCBzaXplIChub3RlIHNpemUgaXMgYW4gaW50ZWdlcilcbiAqL1xuXG5cbnZhciBkZWxpbWl0ZXJfbWF0aHJtU2l6ZSA9IGZ1bmN0aW9uIG1hdGhybVNpemUodmFsdWUsIHNpemUsIG1vZGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTeW1ib2wodmFsdWUsIFwiU2l6ZVwiICsgc2l6ZSArIFwiLVJlZ3VsYXJcIiwgbW9kZSwgb3B0aW9ucyk7XG59O1xuLyoqXG4gKiBNYWtlcyBhIGxhcmdlIGRlbGltaXRlci4gVGhpcyBpcyBhIGRlbGltaXRlciB0aGF0IGNvbWVzIGluIHRoZSBTaXplMSwgU2l6ZTIsXG4gKiBTaXplMywgb3IgU2l6ZTQgZm9udHMuIEl0IGlzIGFsd2F5cyByZW5kZXJlZCBpbiB0ZXh0c3R5bGUuXG4gKi9cblxuXG52YXIgZGVsaW1pdGVyX21ha2VMYXJnZURlbGltID0gZnVuY3Rpb24gbWFrZUxhcmdlRGVsaW0oZGVsaW0sIHNpemUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICB2YXIgaW5uZXIgPSBkZWxpbWl0ZXJfbWF0aHJtU2l6ZShkZWxpbSwgc2l6ZSwgbW9kZSwgb3B0aW9ucyk7XG4gIHZhciBzcGFuID0gZGVsaW1pdGVyX3N0eWxlV3JhcChidWlsZENvbW1vbi5tYWtlU3BhbihbXCJkZWxpbXNpemluZ1wiLCBcInNpemVcIiArIHNpemVdLCBbaW5uZXJdLCBvcHRpb25zKSwgc3JjX1N0eWxlLlRFWFQsIG9wdGlvbnMsIGNsYXNzZXMpO1xuXG4gIGlmIChjZW50ZXIpIHtcbiAgICBjZW50ZXJTcGFuKHNwYW4sIG9wdGlvbnMsIHNyY19TdHlsZS5URVhUKTtcbiAgfVxuXG4gIHJldHVybiBzcGFuO1xufTtcbi8qKlxuICogTWFrZSBhbiBpbm5lciBzcGFuIHdpdGggdGhlIGdpdmVuIG9mZnNldCBhbmQgaW4gdGhlIGdpdmVuIGZvbnQuIFRoaXMgaXMgdXNlZFxuICogaW4gYG1ha2VTdGFja2VkRGVsaW1gIHRvIG1ha2UgdGhlIHN0YWNraW5nIHBpZWNlcyBmb3IgdGhlIGRlbGltaXRlci5cbiAqL1xuXG5cbnZhciBkZWxpbWl0ZXJfbWFrZUlubmVyID0gZnVuY3Rpb24gbWFrZUlubmVyKHN5bWJvbCwgZm9udCwgbW9kZSkge1xuICB2YXIgc2l6ZUNsYXNzOyAvLyBBcHBseSB0aGUgY29ycmVjdCBDU1MgY2xhc3MgdG8gY2hvb3NlIHRoZSByaWdodCBmb250LlxuXG4gIGlmIChmb250ID09PSBcIlNpemUxLVJlZ3VsYXJcIikge1xuICAgIHNpemVDbGFzcyA9IFwiZGVsaW0tc2l6ZTFcIjtcbiAgfSBlbHNlXG4gICAgLyogaWYgKGZvbnQgPT09IFwiU2l6ZTQtUmVndWxhclwiKSAqL1xuICAgIHtcbiAgICAgIHNpemVDbGFzcyA9IFwiZGVsaW0tc2l6ZTRcIjtcbiAgICB9XG5cbiAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZGVsaW1zaXppbmdpbm5lclwiLCBzaXplQ2xhc3NdLCBbYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtidWlsZENvbW1vbi5tYWtlU3ltYm9sKHN5bWJvbCwgZm9udCwgbW9kZSldKV0pOyAvLyBTaW5jZSB0aGlzIHdpbGwgYmUgcGFzc2VkIGludG8gYG1ha2VWTGlzdGAgaW4gdGhlIGVuZCwgd3JhcCB0aGUgZWxlbWVudFxuICAvLyBpbiB0aGUgYXBwcm9wcmlhdGUgdGFnIHRoYXQgVkxpc3QgdXNlcy5cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgIGVsZW06IGlubmVyXG4gIH07XG59OyAvLyBIZWxwZXIgZm9yIG1ha2VTdGFja2VkRGVsaW1cblxuXG52YXIgbGFwID0ge1xuICB0eXBlOiBcImtlcm5cIixcbiAgc2l6ZTogLTAuMDA1XG59O1xuLyoqXG4gKiBNYWtlIGEgc3RhY2tlZCBkZWxpbWl0ZXIgb3V0IG9mIGEgZ2l2ZW4gZGVsaW1pdGVyLCB3aXRoIHRoZSB0b3RhbCBoZWlnaHQgYXRcbiAqIGxlYXN0IGBoZWlnaHRUb3RhbGAuIFRoaXMgcm91dGluZSBpcyBtZW50aW9uZWQgb24gcGFnZSA0NDIgb2YgdGhlIFRlWGJvb2suXG4gKi9cblxudmFyIGRlbGltaXRlcl9tYWtlU3RhY2tlZERlbGltID0gZnVuY3Rpb24gbWFrZVN0YWNrZWREZWxpbShkZWxpbSwgaGVpZ2h0VG90YWwsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAvLyBUaGVyZSBhcmUgZm91ciBwYXJ0cywgdGhlIHRvcCwgYW4gb3B0aW9uYWwgbWlkZGxlLCBhIHJlcGVhdGVkIHBhcnQsIGFuZCBhXG4gIC8vIGJvdHRvbS5cbiAgdmFyIHRvcDtcbiAgdmFyIG1pZGRsZTtcbiAgdmFyIHJlcGVhdDtcbiAgdmFyIGJvdHRvbTtcbiAgdG9wID0gcmVwZWF0ID0gYm90dG9tID0gZGVsaW07XG4gIG1pZGRsZSA9IG51bGw7IC8vIEFsc28ga2VlcCB0cmFjayBvZiB3aGF0IGZvbnQgdGhlIGRlbGltaXRlcnMgYXJlIGluXG5cbiAgdmFyIGZvbnQgPSBcIlNpemUxLVJlZ3VsYXJcIjsgLy8gV2Ugc2V0IHRoZSBwYXJ0cyBhbmQgZm9udCBiYXNlZCBvbiB0aGUgc3ltYm9sLiBOb3RlIHRoYXQgd2UgdXNlXG4gIC8vICdcXHUyM2QwJyBpbnN0ZWFkIG9mICd8JyBhbmQgJ1xcdTIwMTYnIGluc3RlYWQgb2YgJ1xcXFx8JyBmb3IgdGhlXG4gIC8vIHJlcGVhdHMgb2YgdGhlIGFycm93c1xuXG4gIGlmIChkZWxpbSA9PT0gXCJcXFxcdXBhcnJvd1wiKSB7XG4gICAgcmVwZWF0ID0gYm90dG9tID0gXCJcXHUyM0QwXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXFVwYXJyb3dcIikge1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjAxNlwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxkb3duYXJyb3dcIikge1xuICAgIHRvcCA9IHJlcGVhdCA9IFwiXFx1MjNEMFwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxEb3duYXJyb3dcIikge1xuICAgIHRvcCA9IHJlcGVhdCA9IFwiXFx1MjAxNlwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFx1cGRvd25hcnJvd1wiKSB7XG4gICAgdG9wID0gXCJcXFxcdXBhcnJvd1wiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNEMFwiO1xuICAgIGJvdHRvbSA9IFwiXFxcXGRvd25hcnJvd1wiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxVcGRvd25hcnJvd1wiKSB7XG4gICAgdG9wID0gXCJcXFxcVXBhcnJvd1wiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjAxNlwiO1xuICAgIGJvdHRvbSA9IFwiXFxcXERvd25hcnJvd1wiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIltcIiB8fCBkZWxpbSA9PT0gXCJcXFxcbGJyYWNrXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTFcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQTJcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTNcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXVwiIHx8IGRlbGltID09PSBcIlxcXFxyYnJhY2tcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBNFwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBNVwiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBNlwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxcbGZsb29yXCIgfHwgZGVsaW0gPT09IFwiXFx1MjMwQVwiKSB7XG4gICAgcmVwZWF0ID0gdG9wID0gXCJcXHUyM0EyXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0EzXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsY2VpbFwiIHx8IGRlbGltID09PSBcIlxcdTIzMDhcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBMVwiO1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNBMlwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccmZsb29yXCIgfHwgZGVsaW0gPT09IFwiXFx1MjMwQlwiKSB7XG4gICAgcmVwZWF0ID0gdG9wID0gXCJcXHUyM0E1XCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0E2XCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxyY2VpbFwiIHx8IGRlbGltID09PSBcIlxcdTIzMDlcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBNFwiO1xuICAgIHJlcGVhdCA9IGJvdHRvbSA9IFwiXFx1MjNBNVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCIoXCIgfHwgZGVsaW0gPT09IFwiXFxcXGxwYXJlblwiKSB7XG4gICAgdG9wID0gXCJcXHUyMzlCXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyMzlDXCI7XG4gICAgYm90dG9tID0gXCJcXHUyMzlEXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIilcIiB8fCBkZWxpbSA9PT0gXCJcXFxccnBhcmVuXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzOUVcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzOUZcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTBcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXHtcIiB8fCBkZWxpbSA9PT0gXCJcXFxcbGJyYWNlXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQTdcIjtcbiAgICBtaWRkbGUgPSBcIlxcdTIzQThcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQTlcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXH1cIiB8fCBkZWxpbSA9PT0gXCJcXFxccmJyYWNlXCIpIHtcbiAgICB0b3AgPSBcIlxcdTIzQUJcIjtcbiAgICBtaWRkbGUgPSBcIlxcdTIzQUNcIjtcbiAgICBib3R0b20gPSBcIlxcdTIzQURcIjtcbiAgICByZXBlYXQgPSBcIlxcdTIzQUFcIjtcbiAgICBmb250ID0gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAoZGVsaW0gPT09IFwiXFxcXGxncm91cFwiIHx8IGRlbGltID09PSBcIlxcdTI3RUVcIikge1xuICAgIHRvcCA9IFwiXFx1MjNBN1wiO1xuICAgIGJvdHRvbSA9IFwiXFx1MjNBOVwiO1xuICAgIHJlcGVhdCA9IFwiXFx1MjNBQVwiO1xuICAgIGZvbnQgPSBcIlNpemU0LVJlZ3VsYXJcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCJcXFxccmdyb3VwXCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFRlwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxsbW91c3RhY2hlXCIgfHwgZGVsaW0gPT09IFwiXFx1MjNCMFwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0E3XCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0FEXCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIlxcXFxybW91c3RhY2hlXCIgfHwgZGVsaW0gPT09IFwiXFx1MjNCMVwiKSB7XG4gICAgdG9wID0gXCJcXHUyM0FCXCI7XG4gICAgYm90dG9tID0gXCJcXHUyM0E5XCI7XG4gICAgcmVwZWF0ID0gXCJcXHUyM0FBXCI7XG4gICAgZm9udCA9IFwiU2l6ZTQtUmVndWxhclwiO1xuICB9IC8vIEdldCB0aGUgbWV0cmljcyBvZiB0aGUgZm91ciBzZWN0aW9uc1xuXG5cbiAgdmFyIHRvcE1ldHJpY3MgPSBkZWxpbWl0ZXJfZ2V0TWV0cmljcyh0b3AsIGZvbnQsIG1vZGUpO1xuICB2YXIgdG9wSGVpZ2h0VG90YWwgPSB0b3BNZXRyaWNzLmhlaWdodCArIHRvcE1ldHJpY3MuZGVwdGg7XG4gIHZhciByZXBlYXRNZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3MocmVwZWF0LCBmb250LCBtb2RlKTtcbiAgdmFyIHJlcGVhdEhlaWdodFRvdGFsID0gcmVwZWF0TWV0cmljcy5oZWlnaHQgKyByZXBlYXRNZXRyaWNzLmRlcHRoO1xuICB2YXIgYm90dG9tTWV0cmljcyA9IGRlbGltaXRlcl9nZXRNZXRyaWNzKGJvdHRvbSwgZm9udCwgbW9kZSk7XG4gIHZhciBib3R0b21IZWlnaHRUb3RhbCA9IGJvdHRvbU1ldHJpY3MuaGVpZ2h0ICsgYm90dG9tTWV0cmljcy5kZXB0aDtcbiAgdmFyIG1pZGRsZUhlaWdodFRvdGFsID0gMDtcbiAgdmFyIG1pZGRsZUZhY3RvciA9IDE7XG5cbiAgaWYgKG1pZGRsZSAhPT0gbnVsbCkge1xuICAgIHZhciBtaWRkbGVNZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3MobWlkZGxlLCBmb250LCBtb2RlKTtcbiAgICBtaWRkbGVIZWlnaHRUb3RhbCA9IG1pZGRsZU1ldHJpY3MuaGVpZ2h0ICsgbWlkZGxlTWV0cmljcy5kZXB0aDtcbiAgICBtaWRkbGVGYWN0b3IgPSAyOyAvLyByZXBlYXQgc3ltbWV0cmljYWxseSBhYm92ZSBhbmQgYmVsb3cgbWlkZGxlXG4gIH0gLy8gQ2FsY3VhdGUgdGhlIG1pbmltYWwgaGVpZ2h0IHRoYXQgdGhlIGRlbGltaXRlciBjYW4gaGF2ZS5cbiAgLy8gSXQgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHRvcCwgYm90dG9tLCBhbmQgb3B0aW9uYWwgbWlkZGxlIGNvbWJpbmVkLlxuXG5cbiAgdmFyIG1pbkhlaWdodCA9IHRvcEhlaWdodFRvdGFsICsgYm90dG9tSGVpZ2h0VG90YWwgKyBtaWRkbGVIZWlnaHRUb3RhbDsgLy8gQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGNvcGllcyBvZiB0aGUgcmVwZWF0IHN5bWJvbCB3ZSB3aWxsIG5lZWRcblxuICB2YXIgcmVwZWF0Q291bnQgPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoKGhlaWdodFRvdGFsIC0gbWluSGVpZ2h0KSAvIChtaWRkbGVGYWN0b3IgKiByZXBlYXRIZWlnaHRUb3RhbCkpKTsgLy8gQ29tcHV0ZSB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBkZWxpbWl0ZXIgaW5jbHVkaW5nIGFsbCB0aGUgc3ltYm9sc1xuXG4gIHZhciByZWFsSGVpZ2h0VG90YWwgPSBtaW5IZWlnaHQgKyByZXBlYXRDb3VudCAqIG1pZGRsZUZhY3RvciAqIHJlcGVhdEhlaWdodFRvdGFsOyAvLyBUaGUgY2VudGVyIG9mIHRoZSBkZWxpbWl0ZXIgaXMgcGxhY2VkIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGF4aXMuIE5vdGVcbiAgLy8gdGhhdCBpbiB0aGlzIGNvbnRleHQsIFwiY2VudGVyXCIgbWVhbnMgdGhhdCB0aGUgZGVsaW1pdGVyIHNob3VsZCBiZVxuICAvLyBjZW50ZXJlZCBhcm91bmQgdGhlIGF4aXMgaW4gdGhlIGN1cnJlbnQgc3R5bGUsIHdoaWxlIG5vcm1hbGx5IGl0IGlzXG4gIC8vIGNlbnRlcmVkIGFyb3VuZCB0aGUgYXhpcyBpbiB0ZXh0c3R5bGUuXG5cbiAgdmFyIGF4aXNIZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcblxuICBpZiAoY2VudGVyKSB7XG4gICAgYXhpc0hlaWdodCAqPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICB9IC8vIENhbGN1bGF0ZSB0aGUgZGVwdGhcblxuXG4gIHZhciBkZXB0aCA9IHJlYWxIZWlnaHRUb3RhbCAvIDIgLSBheGlzSGVpZ2h0OyAvLyBUaGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSB0aGUgVGVYIHByb2NlZHVyZSBpbiBvbmUgd2F5LlxuICAvLyBXZSBzaGlmdCBlYWNoIHJlcGVhdCBlbGVtZW50IGRvd253YXJkcyBieSAwLjAwNWVtLCB0byBwcmV2ZW50IGEgZ2FwXG4gIC8vIGR1ZSB0byBicm93c2VyIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9yLlxuICAvLyBUaGVuLCBhdCB0aGUgbGFzdCBlbGVtZW50LXRvIGVsZW1lbnQgam9pbnQsIHdlIGFkZCBvbmUgZXh0cmEgcmVwZWF0XG4gIC8vIGVsZW1lbnQgdG8gY292ZXIgdGhlIGdhcCBjcmVhdGVkIGJ5IHRoZSBzaGlmdHMuXG4gIC8vIEZpbmQgdGhlIHNoaWZ0IG5lZWRlZCB0byBhbGlnbiB0aGUgdXBwZXIgZW5kIG9mIHRoZSBleHRyYSBlbGVtZW50IGF0IGEgcG9pbnRcbiAgLy8gMC4wMDVlbSBhYm92ZSB0aGUgbG93ZXIgZW5kIG9mIHRoZSB0b3AgZWxlbWVudC5cblxuICB2YXIgc2hpZnRPZkV4dHJhRWxlbWVudCA9IChyZXBlYXRDb3VudCArIDEpICogMC4wMDUgLSByZXBlYXRIZWlnaHRUb3RhbDsgLy8gTm93LCB3ZSBzdGFydCBidWlsZGluZyB0aGUgcGllY2VzIHRoYXQgd2lsbCBnbyBpbnRvIHRoZSB2bGlzdFxuICAvLyBLZWVwIGEgbGlzdCBvZiB0aGUgaW5uZXIgcGllY2VzXG5cbiAgdmFyIGlubmVycyA9IFtdOyAvLyBBZGQgdGhlIGJvdHRvbSBzeW1ib2xcblxuICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKGJvdHRvbSwgZm9udCwgbW9kZSkpO1xuXG4gIGlmIChtaWRkbGUgPT09IG51bGwpIHtcbiAgICAvLyBBZGQgdGhhdCBtYW55IHN5bWJvbHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcGVhdENvdW50OyBpKyspIHtcbiAgICAgIGlubmVycy5wdXNoKGxhcCk7IC8vIG92ZXJsYXBcblxuICAgICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gV2hlbiB0aGVyZSBpcyBhIG1pZGRsZSBiaXQsIHdlIG5lZWQgdGhlIG1pZGRsZSBwYXJ0IGFuZCB0d28gcmVwZWF0ZWRcbiAgICAvLyBzZWN0aW9uc1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCByZXBlYXRDb3VudDsgX2krKykge1xuICAgICAgaW5uZXJzLnB1c2gobGFwKTtcbiAgICAgIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gICAgfSAvLyBJbnNlcnQgb25lIGV4dHJhIHJlcGVhdCBlbGVtZW50LlxuXG5cbiAgICBpbm5lcnMucHVzaCh7XG4gICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgIHNpemU6IHNoaWZ0T2ZFeHRyYUVsZW1lbnRcbiAgICB9KTtcbiAgICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKHJlcGVhdCwgZm9udCwgbW9kZSkpO1xuICAgIGlubmVycy5wdXNoKGxhcCk7IC8vIE5vdyBpbnNlcnQgdGhlIG1pZGRsZSBvZiB0aGUgYnJhY2UuXG5cbiAgICBpbm5lcnMucHVzaChkZWxpbWl0ZXJfbWFrZUlubmVyKG1pZGRsZSwgZm9udCwgbW9kZSkpO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcmVwZWF0Q291bnQ7IF9pMisrKSB7XG4gICAgICBpbm5lcnMucHVzaChsYXApO1xuICAgICAgaW5uZXJzLnB1c2goZGVsaW1pdGVyX21ha2VJbm5lcihyZXBlYXQsIGZvbnQsIG1vZGUpKTtcbiAgICB9XG4gIH0gLy8gVG8gY292ZXIgdGhlIGdhcCBjcmVhdGUgYnkgdGhlIG92ZXJsYXBzLCBpbnNlcnQgb25lIG1vcmUgcmVwZWF0IGVsZW1lbnQsXG4gIC8vIGF0IGEgcG9zaXRpb24gdGhhdCBqdXRzIDAuMDA1IGFib3ZlIHRoZSBib3R0b20gb2YgdGhlIHRvcCBlbGVtZW50LlxuXG5cbiAgaW5uZXJzLnB1c2goe1xuICAgIHR5cGU6IFwia2VyblwiLFxuICAgIHNpemU6IHNoaWZ0T2ZFeHRyYUVsZW1lbnRcbiAgfSk7XG4gIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIocmVwZWF0LCBmb250LCBtb2RlKSk7XG4gIGlubmVycy5wdXNoKGxhcCk7IC8vIEFkZCB0aGUgdG9wIHN5bWJvbFxuXG4gIGlubmVycy5wdXNoKGRlbGltaXRlcl9tYWtlSW5uZXIodG9wLCBmb250LCBtb2RlKSk7IC8vIEZpbmFsbHksIGJ1aWxkIHRoZSB2bGlzdFxuXG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdCYXNlU3R5bGUoc3JjX1N0eWxlLlRFWFQpO1xuICB2YXIgaW5uZXIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgIHBvc2l0aW9uVHlwZTogXCJib3R0b21cIixcbiAgICBwb3NpdGlvbkRhdGE6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBpbm5lcnNcbiAgfSwgbmV3T3B0aW9ucyk7XG4gIHJldHVybiBkZWxpbWl0ZXJfc3R5bGVXcmFwKGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcImRlbGltc2l6aW5nXCIsIFwibXVsdFwiXSwgW2lubmVyXSwgbmV3T3B0aW9ucyksIHNyY19TdHlsZS5URVhULCBvcHRpb25zLCBjbGFzc2VzKTtcbn07IC8vIEFsbCBzdXJkcyBoYXZlIDAuMDhlbSBwYWRkaW5nIGFib3ZlIHRoZSB2aW5pY3VsdW0gaW5zaWRlIHRoZSBTVkcuXG4vLyBUaGF0IGtlZXBzIGJyb3dzZXIgc3BhbiBoZWlnaHQgcm91bmRpbmcgZXJyb3IgZnJvbSBwaW5jaGluZyB0aGUgbGluZS5cblxuXG52YXIgdmJQYWQgPSA4MDsgLy8gcGFkZGluZyBhYm92ZSB0aGUgc3VyZCwgbWVhc3VyZWQgaW5zaWRlIHRoZSB2aWV3Qm94LlxuXG52YXIgZW1QYWQgPSAwLjA4OyAvLyBwYWRkaW5nLCBpbiBlbXMsIG1lYXN1cmVkIGluIHRoZSBkb2N1bWVudC5cblxudmFyIGRlbGltaXRlcl9zcXJ0U3ZnID0gZnVuY3Rpb24gc3FydFN2ZyhzcXJ0TmFtZSwgaGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBleHRyYVZpbmljdWx1bSwgb3B0aW9ucykge1xuICB2YXIgcGF0aCA9IHNxcnRQYXRoKHNxcnROYW1lLCBleHRyYVZpbmljdWx1bSwgdmlld0JveEhlaWdodCk7XG4gIHZhciBwYXRoTm9kZSA9IG5ldyBkb21UcmVlX1BhdGhOb2RlKHNxcnROYW1lLCBwYXRoKTtcbiAgdmFyIHN2ZyA9IG5ldyBTdmdOb2RlKFtwYXRoTm9kZV0sIHtcbiAgICAvLyBOb3RlOiAxMDAwOjEgcmF0aW8gb2Ygdmlld0JveCB0byBkb2N1bWVudCBlbSB3aWR0aC5cbiAgICBcIndpZHRoXCI6IFwiNDAwZW1cIixcbiAgICBcImhlaWdodFwiOiBoZWlnaHQgKyBcImVtXCIsXG4gICAgXCJ2aWV3Qm94XCI6IFwiMCAwIDQwMDAwMCBcIiArIHZpZXdCb3hIZWlnaHQsXG4gICAgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCI6IFwieE1pbllNaW4gc2xpY2VcIlxuICB9KTtcbiAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTdmdTcGFuKFtcImhpZGUtdGFpbFwiXSwgW3N2Z10sIG9wdGlvbnMpO1xufTtcbi8qKlxuICogTWFrZSBhIHNxcnQgaW1hZ2Ugb2YgdGhlIGdpdmVuIGhlaWdodCxcbiAqL1xuXG5cbnZhciBtYWtlU3FydEltYWdlID0gZnVuY3Rpb24gbWFrZVNxcnRJbWFnZShoZWlnaHQsIG9wdGlvbnMpIHtcbiAgLy8gRGVmaW5lIGEgbmV3T3B0aW9ucyB0aGF0IHJlbW92ZXMgdGhlIGVmZmVjdCBvZiBzaXplIGNoYW5nZXMgc3VjaCBhcyBcXEh1Z2UuXG4gIC8vIFdlIGRvbid0IHBpY2sgZGlmZmVyZW50IGEgaGVpZ2h0IHN1cmQgZm9yIFxcSHVnZS4gRm9yIGl0LCB3ZSBzY2FsZSB1cC5cbiAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ0Jhc2VTaXppbmcoKTsgLy8gUGljayB0aGUgZGVzaXJlZCBzdXJkIGdseXBoIGZyb20gYSBzZXF1ZW5jZSBvZiBzdXJkcy5cblxuICB2YXIgZGVsaW0gPSB0cmF2ZXJzZVNlcXVlbmNlKFwiXFxcXHN1cmRcIiwgaGVpZ2h0ICogbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllciwgc3RhY2tMYXJnZURlbGltaXRlclNlcXVlbmNlLCBuZXdPcHRpb25zKTtcbiAgdmFyIHNpemVNdWx0aXBsaWVyID0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllcjsgLy8gZGVmYXVsdFxuICAvLyBUaGUgc3RhbmRhcmQgc3FydCBTVkdzIGVhY2ggaGF2ZSBhIDAuMDRlbSB0aGljayB2aW5pY3VsdW0uXG4gIC8vIElmIFNldHRpbmdzLm1pblJ1bGVUaGlja25lc3MgaXMgbGFyZ2VyIHRoYW4gdGhhdCwgd2UgYWRkIGV4dHJhVmluaWN1bHVtLlxuXG4gIHZhciBleHRyYVZpbmljdWx1bSA9IE1hdGgubWF4KDAsIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAtIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5zcXJ0UnVsZVRoaWNrbmVzcyk7IC8vIENyZWF0ZSBhIHNwYW4gY29udGFpbmluZyBhbiBTVkcgaW1hZ2Ugb2YgYSBzcXJ0IHN5bWJvbC5cblxuICB2YXIgc3BhbjtcbiAgdmFyIHNwYW5IZWlnaHQgPSAwO1xuICB2YXIgdGV4SGVpZ2h0ID0gMDtcbiAgdmFyIHZpZXdCb3hIZWlnaHQgPSAwO1xuICB2YXIgYWR2YW5jZVdpZHRoOyAvLyBXZSBjcmVhdGUgdmlld0JveGVzIHdpdGggODAgdW5pdHMgb2YgXCJwYWRkaW5nXCIgYWJvdmUgZWFjaCBzdXJkLlxuICAvLyBUaGVuIGJyb3dzZXIgcm91bmRpbmcgZXJyb3Igb24gdGhlIHBhcmVudCBzcGFuIGhlaWdodCB3aWxsIG5vdFxuICAvLyBlbmNyb2FjaCBvbiB0aGUgaW5rIG9mIHRoZSB2aW5pY3VsdW0uIEJ1dCB0aGF0IHBhZGRpbmcgaXMgbm90XG4gIC8vIGluY2x1ZGVkIGluIHRoZSBUZVgtbGlrZSBgaGVpZ2h0YCB1c2VkIGZvciBjYWxjdWxhdGlvbiBvZlxuICAvLyB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFNvIHRleEhlaWdodCA9IHNwYW4uaGVpZ2h0IDwgc3Bhbi5zdHlsZS5oZWlnaHQuXG5cbiAgaWYgKGRlbGltLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgIC8vIEdldCBhbiBTVkcgdGhhdCBpcyBkZXJpdmVkIGZyb20gZ2x5cGggVSsyMjFBIGluIGZvbnQgS2FUZVgtTWFpbi5cbiAgICAvLyAxMDAwIHVuaXQgbm9ybWFsIGdseXBoIGhlaWdodC5cbiAgICB2aWV3Qm94SGVpZ2h0ID0gMTAwMCArIDEwMDAgKiBleHRyYVZpbmljdWx1bSArIHZiUGFkO1xuXG4gICAgaWYgKGhlaWdodCA8IDEuMCkge1xuICAgICAgc2l6ZU11bHRpcGxpZXIgPSAxLjA7IC8vIG1pbWljIGEgXFx0ZXh0Zm9udCByYWRpY2FsXG4gICAgfSBlbHNlIGlmIChoZWlnaHQgPCAxLjQpIHtcbiAgICAgIHNpemVNdWx0aXBsaWVyID0gMC43OyAvLyBtaW1pYyBhIFxcc2NyaXB0Zm9udCByYWRpY2FsXG4gICAgfVxuXG4gICAgc3BhbkhlaWdodCA9ICgxLjAgKyBleHRyYVZpbmljdWx1bSArIGVtUGFkKSAvIHNpemVNdWx0aXBsaWVyO1xuICAgIHRleEhlaWdodCA9ICgxLjAwICsgZXh0cmFWaW5pY3VsdW0pIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgc3BhbiA9IGRlbGltaXRlcl9zcXJ0U3ZnKFwic3FydE1haW5cIiwgc3BhbkhlaWdodCwgdmlld0JveEhlaWdodCwgZXh0cmFWaW5pY3VsdW0sIG9wdGlvbnMpO1xuICAgIHNwYW4uc3R5bGUubWluV2lkdGggPSBcIjAuODUzZW1cIjtcbiAgICBhZHZhbmNlV2lkdGggPSAwLjgzMyAvIHNpemVNdWx0aXBsaWVyOyAvLyBmcm9tIHRoZSBmb250LlxuICB9IGVsc2UgaWYgKGRlbGltLnR5cGUgPT09IFwibGFyZ2VcIikge1xuICAgIC8vIFRoZXNlIFNWR3MgY29tZSBmcm9tIGZvbnRzOiBLYVRlWF9TaXplMSwgX1NpemUyLCBldGMuXG4gICAgdmlld0JveEhlaWdodCA9ICgxMDAwICsgdmJQYWQpICogc2l6ZVRvTWF4SGVpZ2h0W2RlbGltLnNpemVdO1xuICAgIHRleEhlaWdodCA9IChzaXplVG9NYXhIZWlnaHRbZGVsaW0uc2l6ZV0gKyBleHRyYVZpbmljdWx1bSkgLyBzaXplTXVsdGlwbGllcjtcbiAgICBzcGFuSGVpZ2h0ID0gKHNpemVUb01heEhlaWdodFtkZWxpbS5zaXplXSArIGV4dHJhVmluaWN1bHVtICsgZW1QYWQpIC8gc2l6ZU11bHRpcGxpZXI7XG4gICAgc3BhbiA9IGRlbGltaXRlcl9zcXJ0U3ZnKFwic3FydFNpemVcIiArIGRlbGltLnNpemUsIHNwYW5IZWlnaHQsIHZpZXdCb3hIZWlnaHQsIGV4dHJhVmluaWN1bHVtLCBvcHRpb25zKTtcbiAgICBzcGFuLnN0eWxlLm1pbldpZHRoID0gXCIxLjAyZW1cIjtcbiAgICBhZHZhbmNlV2lkdGggPSAxLjAgLyBzaXplTXVsdGlwbGllcjsgLy8gMS4wIGZyb20gdGhlIGZvbnQuXG4gIH0gZWxzZSB7XG4gICAgLy8gVGFsbCBzcXJ0LiBJbiBUZVgsIHRoaXMgd291bGQgYmUgc3RhY2tlZCB1c2luZyBtdWx0aXBsZSBnbHlwaHMuXG4gICAgLy8gV2UnbGwgdXNlIGEgc2luZ2xlIFNWRyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nLlxuICAgIHNwYW5IZWlnaHQgPSBoZWlnaHQgKyBleHRyYVZpbmljdWx1bSArIGVtUGFkO1xuICAgIHRleEhlaWdodCA9IGhlaWdodCArIGV4dHJhVmluaWN1bHVtO1xuICAgIHZpZXdCb3hIZWlnaHQgPSBNYXRoLmZsb29yKDEwMDAgKiBoZWlnaHQgKyBleHRyYVZpbmljdWx1bSkgKyB2YlBhZDtcbiAgICBzcGFuID0gZGVsaW1pdGVyX3NxcnRTdmcoXCJzcXJ0VGFsbFwiLCBzcGFuSGVpZ2h0LCB2aWV3Qm94SGVpZ2h0LCBleHRyYVZpbmljdWx1bSwgb3B0aW9ucyk7XG4gICAgc3Bhbi5zdHlsZS5taW5XaWR0aCA9IFwiMC43NDJlbVwiO1xuICAgIGFkdmFuY2VXaWR0aCA9IDEuMDU2O1xuICB9XG5cbiAgc3Bhbi5oZWlnaHQgPSB0ZXhIZWlnaHQ7XG4gIHNwYW4uc3R5bGUuaGVpZ2h0ID0gc3BhbkhlaWdodCArIFwiZW1cIjtcbiAgcmV0dXJuIHtcbiAgICBzcGFuOiBzcGFuLFxuICAgIGFkdmFuY2VXaWR0aDogYWR2YW5jZVdpZHRoLFxuICAgIC8vIENhbGN1bGF0ZSB0aGUgYWN0dWFsIGxpbmUgd2lkdGguXG4gICAgLy8gVGhpcyBhY3R1YWxseSBzaG91bGQgZGVwZW5kIG9uIHRoZSBjaG9zZW4gZm9udCAtLSBlLmcuIFxcYm9sZG1hdGhcbiAgICAvLyBzaG91bGQgdXNlIHRoZSB0aGlja2VyIHN1cmQgc3ltYm9scyBmcm9tIGUuZy4gS2FUZVhfTWFpbi1Cb2xkLCBhbmRcbiAgICAvLyBoYXZlIHRoaWNrZXIgcnVsZXMuXG4gICAgcnVsZVdpZHRoOiAob3B0aW9ucy5mb250TWV0cmljcygpLnNxcnRSdWxlVGhpY2tuZXNzICsgZXh0cmFWaW5pY3VsdW0pICogc2l6ZU11bHRpcGxpZXJcbiAgfTtcbn07IC8vIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBkZWxpbWl0ZXJzLCBkZWxpbWl0ZXJzIHRoYXQgc3RhY2sgd2hlbiB0aGV5IGJlY29tZVxuLy8gdG9vIGxhcmdlXG5cblxudmFyIHN0YWNrTGFyZ2VEZWxpbWl0ZXJzID0gW1wiKFwiLCBcIlxcXFxscGFyZW5cIiwgXCIpXCIsIFwiXFxcXHJwYXJlblwiLCBcIltcIiwgXCJcXFxcbGJyYWNrXCIsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIiwgXCJcXFxce1wiLCBcIlxcXFxsYnJhY2VcIiwgXCJcXFxcfVwiLCBcIlxcXFxyYnJhY2VcIiwgXCJcXFxcbGZsb29yXCIsIFwiXFxcXHJmbG9vclwiLCBcIlxcdTIzMEFcIiwgXCJcXHUyMzBCXCIsIFwiXFxcXGxjZWlsXCIsIFwiXFxcXHJjZWlsXCIsIFwiXFx1MjMwOFwiLCBcIlxcdTIzMDlcIiwgXCJcXFxcc3VyZFwiXTsgLy8gZGVsaW1pdGVycyB0aGF0IGFsd2F5cyBzdGFja1xuXG52YXIgc3RhY2tBbHdheXNEZWxpbWl0ZXJzID0gW1wiXFxcXHVwYXJyb3dcIiwgXCJcXFxcZG93bmFycm93XCIsIFwiXFxcXHVwZG93bmFycm93XCIsIFwiXFxcXFVwYXJyb3dcIiwgXCJcXFxcRG93bmFycm93XCIsIFwiXFxcXFVwZG93bmFycm93XCIsIFwifFwiLCBcIlxcXFx8XCIsIFwiXFxcXHZlcnRcIiwgXCJcXFxcVmVydFwiLCBcIlxcXFxsdmVydFwiLCBcIlxcXFxydmVydFwiLCBcIlxcXFxsVmVydFwiLCBcIlxcXFxyVmVydFwiLCBcIlxcXFxsZ3JvdXBcIiwgXCJcXFxccmdyb3VwXCIsIFwiXFx1MjdFRVwiLCBcIlxcdTI3RUZcIiwgXCJcXFxcbG1vdXN0YWNoZVwiLCBcIlxcXFxybW91c3RhY2hlXCIsIFwiXFx1MjNCMFwiLCBcIlxcdTIzQjFcIl07IC8vIGFuZCBkZWxpbWl0ZXJzIHRoYXQgbmV2ZXIgc3RhY2tcblxudmFyIHN0YWNrTmV2ZXJEZWxpbWl0ZXJzID0gW1wiPFwiLCBcIj5cIiwgXCJcXFxcbGFuZ2xlXCIsIFwiXFxcXHJhbmdsZVwiLCBcIi9cIiwgXCJcXFxcYmFja3NsYXNoXCIsIFwiXFxcXGx0XCIsIFwiXFxcXGd0XCJdOyAvLyBNZXRyaWNzIG9mIHRoZSBkaWZmZXJlbnQgc2l6ZXMuIEZvdW5kIGJ5IGxvb2tpbmcgYXQgVGVYJ3Mgb3V0cHV0IG9mXG4vLyAkXFxiaWdsfCAvLyBcXEJpZ2x8IFxcYmlnZ2x8IFxcQmlnZ2x8IFxcc2hvd2xpc3RzJFxuLy8gVXNlZCB0byBjcmVhdGUgc3RhY2tlZCBkZWxpbWl0ZXJzIG9mIGFwcHJvcHJpYXRlIHNpemVzIGluIG1ha2VTaXplZERlbGltLlxuXG52YXIgc2l6ZVRvTWF4SGVpZ2h0ID0gWzAsIDEuMiwgMS44LCAyLjQsIDMuMF07XG4vKipcbiAqIFVzZWQgdG8gY3JlYXRlIGEgZGVsaW1pdGVyIG9mIGEgc3BlY2lmaWMgc2l6ZSwgd2hlcmUgYHNpemVgIGlzIDEsIDIsIDMsIG9yIDQuXG4gKi9cblxudmFyIGRlbGltaXRlcl9tYWtlU2l6ZWREZWxpbSA9IGZ1bmN0aW9uIG1ha2VTaXplZERlbGltKGRlbGltLCBzaXplLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKSB7XG4gIC8vIDwgYW5kID4gdHVybiBpbnRvIFxcbGFuZ2xlIGFuZCBcXHJhbmdsZSBpbiBkZWxpbWl0ZXJzXG4gIGlmIChkZWxpbSA9PT0gXCI8XCIgfHwgZGVsaW0gPT09IFwiXFxcXGx0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOFwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxsYW5nbGVcIjtcbiAgfSBlbHNlIGlmIChkZWxpbSA9PT0gXCI+XCIgfHwgZGVsaW0gPT09IFwiXFxcXGd0XCIgfHwgZGVsaW0gPT09IFwiXFx1MjdFOVwiKSB7XG4gICAgZGVsaW0gPSBcIlxcXFxyYW5nbGVcIjtcbiAgfSAvLyBTaXplZCBkZWxpbWl0ZXJzIGFyZSBuZXZlciBjZW50ZXJlZC5cblxuXG4gIGlmICh1dGlscy5jb250YWlucyhzdGFja0xhcmdlRGVsaW1pdGVycywgZGVsaW0pIHx8IHV0aWxzLmNvbnRhaW5zKHN0YWNrTmV2ZXJEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VMYXJnZURlbGltKGRlbGltLCBzaXplLCBmYWxzZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tBbHdheXNEZWxpbWl0ZXJzLCBkZWxpbSkpIHtcbiAgICByZXR1cm4gZGVsaW1pdGVyX21ha2VTdGFja2VkRGVsaW0oZGVsaW0sIHNpemVUb01heEhlaWdodFtzaXplXSwgZmFsc2UsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIklsbGVnYWwgZGVsaW1pdGVyOiAnXCIgKyBkZWxpbSArIFwiJ1wiKTtcbiAgfVxufTtcbi8qKlxuICogVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBzZXF1ZW5jZXMgb2YgZGVsaW1pdGVyIHNpemVzIHRoYXQgdGhlIGRlbGltaXRlcnNcbiAqIGZvbGxvdyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgZGVsaW1pdGVyLiBUaGlzIGlzIHVzZWQgd2hlbiBjcmVhdGluZyBjdXN0b21cbiAqIHNpemVkIGRlbGltaXRlcnMgdG8gZGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlIGEgc21hbGwsIGxhcmdlLCBvciBzdGFja2VkXG4gKiBkZWxpbWl0ZXIuXG4gKlxuICogSW4gcmVhbCBUZVgsIHRoZXNlIHNlcXVlbmNlcyBhcmVuJ3QgZXhwbGljaXRseSBkZWZpbmVkLCBidXQgYXJlIGluc3RlYWRcbiAqIGRlZmluZWQgaW5zaWRlIHRoZSBmb250IG1ldHJpY3MuIFNpbmNlIHRoZXJlIGFyZSBvbmx5IHRocmVlIHNlcXVlbmNlcyB0aGF0XG4gKiBhcmUgcG9zc2libGUgZm9yIHRoZSBkZWxpbWl0ZXJzIHRoYXQgVGVYIGRlZmluZXMsIGl0IGlzIGVhc2llciB0byBqdXN0IGVuY29kZVxuICogdGhlbSBleHBsaWNpdGx5IGhlcmUuXG4gKi9cblxuXG4vLyBEZWxpbWl0ZXJzIHRoYXQgbmV2ZXIgc3RhY2sgdHJ5IHNtYWxsIGRlbGltaXRlcnMgYW5kIGxhcmdlIGRlbGltaXRlcnMgb25seVxudmFyIHN0YWNrTmV2ZXJEZWxpbWl0ZXJTZXF1ZW5jZSA9IFt7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuVEVYVFxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDFcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAyXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogM1xufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDRcbn1dOyAvLyBEZWxpbWl0ZXJzIHRoYXQgYWx3YXlzIHN0YWNrIHRyeSB0aGUgc21hbGwgZGVsaW1pdGVycyBmaXJzdCwgdGhlbiBzdGFja1xuXG52YXIgc3RhY2tBbHdheXNEZWxpbWl0ZXJTZXF1ZW5jZSA9IFt7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFRcbn0sIHtcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuVEVYVFxufSwge1xuICB0eXBlOiBcInN0YWNrXCJcbn1dOyAvLyBEZWxpbWl0ZXJzIHRoYXQgc3RhY2sgd2hlbiBsYXJnZSB0cnkgdGhlIHNtYWxsIGFuZCB0aGVuIGxhcmdlIGRlbGltaXRlcnMsIGFuZFxuLy8gc3RhY2sgYWZ0ZXJ3YXJkc1xuXG52YXIgc3RhY2tMYXJnZURlbGltaXRlclNlcXVlbmNlID0gW3tcbiAgdHlwZTogXCJzbWFsbFwiLFxuICBzdHlsZTogc3JjX1N0eWxlLlNDUklQVFNDUklQVFxufSwge1xuICB0eXBlOiBcInNtYWxsXCIsXG4gIHN0eWxlOiBzcmNfU3R5bGUuU0NSSVBUXG59LCB7XG4gIHR5cGU6IFwic21hbGxcIixcbiAgc3R5bGU6IHNyY19TdHlsZS5URVhUXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogMVxufSwge1xuICB0eXBlOiBcImxhcmdlXCIsXG4gIHNpemU6IDJcbn0sIHtcbiAgdHlwZTogXCJsYXJnZVwiLFxuICBzaXplOiAzXG59LCB7XG4gIHR5cGU6IFwibGFyZ2VcIixcbiAgc2l6ZTogNFxufSwge1xuICB0eXBlOiBcInN0YWNrXCJcbn1dO1xuLyoqXG4gKiBHZXQgdGhlIGZvbnQgdXNlZCBpbiBhIGRlbGltaXRlciBiYXNlZCBvbiB3aGF0IGtpbmQgb2YgZGVsaW1pdGVyIGl0IGlzLlxuICogVE9ETygjOTYzKSBVc2UgbW9yZSBzcGVjaWZpYyBmb250IGZhbWlseSByZXR1cm4gdHlwZSBvbmNlIHRoYXQgaXMgaW50cm9kdWNlZC5cbiAqL1xuXG52YXIgZGVsaW1UeXBlVG9Gb250ID0gZnVuY3Rpb24gZGVsaW1UeXBlVG9Gb250KHR5cGUpIHtcbiAgaWYgKHR5cGUudHlwZSA9PT0gXCJzbWFsbFwiKSB7XG4gICAgcmV0dXJuIFwiTWFpbi1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAodHlwZS50eXBlID09PSBcImxhcmdlXCIpIHtcbiAgICByZXR1cm4gXCJTaXplXCIgKyB0eXBlLnNpemUgKyBcIi1SZWd1bGFyXCI7XG4gIH0gZWxzZSBpZiAodHlwZS50eXBlID09PSBcInN0YWNrXCIpIHtcbiAgICByZXR1cm4gXCJTaXplNC1SZWd1bGFyXCI7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQWRkIHN1cHBvcnQgZm9yIGRlbGltIHR5cGUgJ1wiICsgdHlwZS50eXBlICsgXCInIGhlcmUuXCIpO1xuICB9XG59O1xuLyoqXG4gKiBUcmF2ZXJzZSBhIHNlcXVlbmNlIG9mIHR5cGVzIG9mIGRlbGltaXRlcnMgdG8gZGVjaWRlIHdoYXQga2luZCBvZiBkZWxpbWl0ZXJcbiAqIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGRlbGltaXRlciBvZiB0aGUgZ2l2ZW4gaGVpZ2h0K2RlcHRoLlxuICovXG5cblxudmFyIHRyYXZlcnNlU2VxdWVuY2UgPSBmdW5jdGlvbiB0cmF2ZXJzZVNlcXVlbmNlKGRlbGltLCBoZWlnaHQsIHNlcXVlbmNlLCBvcHRpb25zKSB7XG4gIC8vIEhlcmUsIHdlIGNob29zZSB0aGUgaW5kZXggd2Ugc2hvdWxkIHN0YXJ0IGF0IGluIHRoZSBzZXF1ZW5jZXMuIEluIHNtYWxsZXJcbiAgLy8gc2l6ZXMgKHdoaWNoIGNvcnJlc3BvbmQgdG8gbGFyZ2VyIG51bWJlcnMgaW4gc3R5bGUuc2l6ZSkgd2Ugc3RhcnQgZWFybGllclxuICAvLyBpbiB0aGUgc2VxdWVuY2UuIFRodXMsIHNjcmlwdHNjcmlwdCBzdGFydHMgYXQgaW5kZXggMy0zPTAsIHNjcmlwdCBzdGFydHNcbiAgLy8gYXQgaW5kZXggMy0yPTEsIHRleHQgc3RhcnRzIGF0IDMtMT0yLCBhbmQgZGlzcGxheSBzdGFydHMgYXQgbWluKDIsMy0wKT0yXG4gIHZhciBzdGFydCA9IE1hdGgubWluKDIsIDMgLSBvcHRpb25zLnN0eWxlLnNpemUpO1xuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IHNlcXVlbmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNlcXVlbmNlW2ldLnR5cGUgPT09IFwic3RhY2tcIikge1xuICAgICAgLy8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgZGVsaW1pdGVyLCBzbyB3ZSBqdXN0IGJyZWFrIHRoZSBsb29wIG5vdy5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBtZXRyaWNzID0gZGVsaW1pdGVyX2dldE1ldHJpY3MoZGVsaW0sIGRlbGltVHlwZVRvRm9udChzZXF1ZW5jZVtpXSksIFwibWF0aFwiKTtcbiAgICB2YXIgaGVpZ2h0RGVwdGggPSBtZXRyaWNzLmhlaWdodCArIG1ldHJpY3MuZGVwdGg7IC8vIFNtYWxsIGRlbGltaXRlcnMgYXJlIHNjYWxlZCBkb3duIHZlcnNpb25zIG9mIHRoZSBzYW1lIGZvbnQsIHNvIHdlXG4gICAgLy8gYWNjb3VudCBmb3IgdGhlIHN0eWxlIGNoYW5nZSBzaXplLlxuXG4gICAgaWYgKHNlcXVlbmNlW2ldLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ0Jhc2VTdHlsZShzZXF1ZW5jZVtpXS5zdHlsZSk7XG4gICAgICBoZWlnaHREZXB0aCAqPSBuZXdPcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgIH0gLy8gQ2hlY2sgaWYgdGhlIGRlbGltaXRlciBhdCB0aGlzIHNpemUgd29ya3MgZm9yIHRoZSBnaXZlbiBoZWlnaHQuXG5cblxuICAgIGlmIChoZWlnaHREZXB0aCA+IGhlaWdodCkge1xuICAgICAgcmV0dXJuIHNlcXVlbmNlW2ldO1xuICAgIH1cbiAgfSAvLyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlLCByZXR1cm4gdGhlIGxhc3Qgc2VxdWVuY2UgZWxlbWVudC5cblxuXG4gIHJldHVybiBzZXF1ZW5jZVtzZXF1ZW5jZS5sZW5ndGggLSAxXTtcbn07XG4vKipcbiAqIE1ha2UgYSBkZWxpbWl0ZXIgb2YgYSBnaXZlbiBoZWlnaHQrZGVwdGgsIHdpdGggb3B0aW9uYWwgY2VudGVyaW5nLiBIZXJlLCB3ZVxuICogdHJhdmVyc2UgdGhlIHNlcXVlbmNlcywgYW5kIGNyZWF0ZSBhIGRlbGltaXRlciB0aGF0IHRoZSBzZXF1ZW5jZSB0ZWxscyB1cyB0by5cbiAqL1xuXG5cbnZhciBkZWxpbWl0ZXJfbWFrZUN1c3RvbVNpemVkRGVsaW0gPSBmdW5jdGlvbiBtYWtlQ3VzdG9tU2l6ZWREZWxpbShkZWxpbSwgaGVpZ2h0LCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpIHtcbiAgaWYgKGRlbGltID09PSBcIjxcIiB8fCBkZWxpbSA9PT0gXCJcXFxcbHRcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0U4XCIpIHtcbiAgICBkZWxpbSA9IFwiXFxcXGxhbmdsZVwiO1xuICB9IGVsc2UgaWYgKGRlbGltID09PSBcIj5cIiB8fCBkZWxpbSA9PT0gXCJcXFxcZ3RcIiB8fCBkZWxpbSA9PT0gXCJcXHUyN0U5XCIpIHtcbiAgICBkZWxpbSA9IFwiXFxcXHJhbmdsZVwiO1xuICB9IC8vIERlY2lkZSB3aGF0IHNlcXVlbmNlIHRvIHVzZVxuXG5cbiAgdmFyIHNlcXVlbmNlO1xuXG4gIGlmICh1dGlscy5jb250YWlucyhzdGFja05ldmVyRGVsaW1pdGVycywgZGVsaW0pKSB7XG4gICAgc2VxdWVuY2UgPSBzdGFja05ldmVyRGVsaW1pdGVyU2VxdWVuY2U7XG4gIH0gZWxzZSBpZiAodXRpbHMuY29udGFpbnMoc3RhY2tMYXJnZURlbGltaXRlcnMsIGRlbGltKSkge1xuICAgIHNlcXVlbmNlID0gc3RhY2tMYXJnZURlbGltaXRlclNlcXVlbmNlO1xuICB9IGVsc2Uge1xuICAgIHNlcXVlbmNlID0gc3RhY2tBbHdheXNEZWxpbWl0ZXJTZXF1ZW5jZTtcbiAgfSAvLyBMb29rIHRocm91Z2ggdGhlIHNlcXVlbmNlXG5cblxuICB2YXIgZGVsaW1UeXBlID0gdHJhdmVyc2VTZXF1ZW5jZShkZWxpbSwgaGVpZ2h0LCBzZXF1ZW5jZSwgb3B0aW9ucyk7IC8vIEdldCB0aGUgZGVsaW1pdGVyIGZyb20gZm9udCBnbHlwaHMuXG4gIC8vIERlcGVuZGluZyBvbiB0aGUgc2VxdWVuY2UgZWxlbWVudCB3ZSBkZWNpZGVkIG9uLCBjYWxsIHRoZVxuICAvLyBhcHByb3ByaWF0ZSBmdW5jdGlvbi5cblxuICBpZiAoZGVsaW1UeXBlLnR5cGUgPT09IFwic21hbGxcIikge1xuICAgIHJldHVybiBkZWxpbWl0ZXJfbWFrZVNtYWxsRGVsaW0oZGVsaW0sIGRlbGltVHlwZS5zdHlsZSwgY2VudGVyLCBvcHRpb25zLCBtb2RlLCBjbGFzc2VzKTtcbiAgfSBlbHNlIGlmIChkZWxpbVR5cGUudHlwZSA9PT0gXCJsYXJnZVwiKSB7XG4gICAgcmV0dXJuIGRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbShkZWxpbSwgZGVsaW1UeXBlLnNpemUsIGNlbnRlciwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG4gIH0gZWxzZVxuICAgIC8qIGlmIChkZWxpbVR5cGUudHlwZSA9PT0gXCJzdGFja1wiKSAqL1xuICAgIHtcbiAgICAgIHJldHVybiBkZWxpbWl0ZXJfbWFrZVN0YWNrZWREZWxpbShkZWxpbSwgaGVpZ2h0LCBjZW50ZXIsIG9wdGlvbnMsIG1vZGUsIGNsYXNzZXMpO1xuICAgIH1cbn07XG4vKipcbiAqIE1ha2UgYSBkZWxpbWl0ZXIgZm9yIHVzZSB3aXRoIGBcXGxlZnRgIGFuZCBgXFxyaWdodGAsIGdpdmVuIGEgaGVpZ2h0IGFuZCBkZXB0aFxuICogb2YgYW4gZXhwcmVzc2lvbiB0aGF0IHRoZSBkZWxpbWl0ZXJzIHN1cnJvdW5kLlxuICovXG5cblxudmFyIG1ha2VMZWZ0UmlnaHREZWxpbSA9IGZ1bmN0aW9uIG1ha2VMZWZ0UmlnaHREZWxpbShkZWxpbSwgaGVpZ2h0LCBkZXB0aCwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcykge1xuICAvLyBXZSBhbHdheXMgY2VudGVyIFxcbGVmdC9cXHJpZ2h0IGRlbGltaXRlcnMsIHNvIHRoZSBheGlzIGlzIGFsd2F5cyBzaGlmdGVkXG4gIHZhciBheGlzSGVpZ2h0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmF4aXNIZWlnaHQgKiBvcHRpb25zLnNpemVNdWx0aXBsaWVyOyAvLyBUYWtlbiBmcm9tIFRlWCBzb3VyY2UsIHRleC53ZWIsIGZ1bmN0aW9uIG1ha2VfbGVmdF9yaWdodFxuXG4gIHZhciBkZWxpbWl0ZXJGYWN0b3IgPSA5MDE7XG4gIHZhciBkZWxpbWl0ZXJFeHRlbmQgPSA1LjAgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgdmFyIG1heERpc3RGcm9tQXhpcyA9IE1hdGgubWF4KGhlaWdodCAtIGF4aXNIZWlnaHQsIGRlcHRoICsgYXhpc0hlaWdodCk7XG4gIHZhciB0b3RhbEhlaWdodCA9IE1hdGgubWF4KCAvLyBJbiByZWFsIFRlWCwgY2FsY3VsYXRpb25zIGFyZSBkb25lIHVzaW5nIGludGVncmFsIHZhbHVlcyB3aGljaCBhcmVcbiAgLy8gNjU1MzYgcGVyIHB0LCBvciA2NTUzNjAgcGVyIGVtLiBTbywgdGhlIGRpdmlzaW9uIGhlcmUgdHJ1bmNhdGVzIGluXG4gIC8vIFRlWCBidXQgZG9lc24ndCBoZXJlLCBwcm9kdWNpbmcgZGlmZmVyZW50IHJlc3VsdHMuIElmIHdlIHdhbnRlZCB0b1xuICAvLyBleGFjdGx5IG1hdGNoIFRlWCdzIGNhbGN1bGF0aW9uLCB3ZSBjb3VsZCBkb1xuICAvLyAgIE1hdGguZmxvb3IoNjU1MzYwICogbWF4RGlzdEZyb21BeGlzIC8gNTAwKSAqXG4gIC8vICAgIGRlbGltaXRlckZhY3RvciAvIDY1NTM2MFxuICAvLyAoVG8gc2VlIHRoZSBkaWZmZXJlbmNlLCBjb21wYXJlXG4gIC8vICAgIHhee3hee1xcbGVmdChcXHJ1bGV7MC4xZW19ezAuNjhlbX1cXHJpZ2h0KX19XG4gIC8vIGluIFRlWCBhbmQgS2FUZVgpXG4gIG1heERpc3RGcm9tQXhpcyAvIDUwMCAqIGRlbGltaXRlckZhY3RvciwgMiAqIG1heERpc3RGcm9tQXhpcyAtIGRlbGltaXRlckV4dGVuZCk7IC8vIEZpbmFsbHksIHdlIGRlZmVyIHRvIGBtYWtlQ3VzdG9tU2l6ZWREZWxpbWAgd2l0aCBvdXIgY2FsY3VsYXRlZCB0b3RhbFxuICAvLyBoZWlnaHRcblxuICByZXR1cm4gZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltKGRlbGltLCB0b3RhbEhlaWdodCwgdHJ1ZSwgb3B0aW9ucywgbW9kZSwgY2xhc3Nlcyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkZWxpbWl0ZXIgPSAoe1xuICBzcXJ0SW1hZ2U6IG1ha2VTcXJ0SW1hZ2UsXG4gIHNpemVkRGVsaW06IGRlbGltaXRlcl9tYWtlU2l6ZWREZWxpbSxcbiAgY3VzdG9tU2l6ZWREZWxpbTogZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltLFxuICBsZWZ0UmlnaHREZWxpbTogbWFrZUxlZnRSaWdodERlbGltXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9kZWxpbXNpemluZy5qc1xuXG5cblxuXG5cblxuXG5cblxuLy8gRXh0cmEgZGF0YSBuZWVkZWQgZm9yIHRoZSBkZWxpbWl0ZXIgaGFuZGxlciBkb3duIGJlbG93XG52YXIgZGVsaW1pdGVyU2l6ZXMgPSB7XG4gIFwiXFxcXGJpZ2xcIjoge1xuICAgIG1jbGFzczogXCJtb3BlblwiLFxuICAgIHNpemU6IDFcbiAgfSxcbiAgXCJcXFxcQmlnbFwiOiB7XG4gICAgbWNsYXNzOiBcIm1vcGVuXCIsXG4gICAgc2l6ZTogMlxuICB9LFxuICBcIlxcXFxiaWdnbFwiOiB7XG4gICAgbWNsYXNzOiBcIm1vcGVuXCIsXG4gICAgc2l6ZTogM1xuICB9LFxuICBcIlxcXFxCaWdnbFwiOiB7XG4gICAgbWNsYXNzOiBcIm1vcGVuXCIsXG4gICAgc2l6ZTogNFxuICB9LFxuICBcIlxcXFxiaWdyXCI6IHtcbiAgICBtY2xhc3M6IFwibWNsb3NlXCIsXG4gICAgc2l6ZTogMVxuICB9LFxuICBcIlxcXFxCaWdyXCI6IHtcbiAgICBtY2xhc3M6IFwibWNsb3NlXCIsXG4gICAgc2l6ZTogMlxuICB9LFxuICBcIlxcXFxiaWdnclwiOiB7XG4gICAgbWNsYXNzOiBcIm1jbG9zZVwiLFxuICAgIHNpemU6IDNcbiAgfSxcbiAgXCJcXFxcQmlnZ3JcIjoge1xuICAgIG1jbGFzczogXCJtY2xvc2VcIixcbiAgICBzaXplOiA0XG4gIH0sXG4gIFwiXFxcXGJpZ21cIjoge1xuICAgIG1jbGFzczogXCJtcmVsXCIsXG4gICAgc2l6ZTogMVxuICB9LFxuICBcIlxcXFxCaWdtXCI6IHtcbiAgICBtY2xhc3M6IFwibXJlbFwiLFxuICAgIHNpemU6IDJcbiAgfSxcbiAgXCJcXFxcYmlnZ21cIjoge1xuICAgIG1jbGFzczogXCJtcmVsXCIsXG4gICAgc2l6ZTogM1xuICB9LFxuICBcIlxcXFxCaWdnbVwiOiB7XG4gICAgbWNsYXNzOiBcIm1yZWxcIixcbiAgICBzaXplOiA0XG4gIH0sXG4gIFwiXFxcXGJpZ1wiOiB7XG4gICAgbWNsYXNzOiBcIm1vcmRcIixcbiAgICBzaXplOiAxXG4gIH0sXG4gIFwiXFxcXEJpZ1wiOiB7XG4gICAgbWNsYXNzOiBcIm1vcmRcIixcbiAgICBzaXplOiAyXG4gIH0sXG4gIFwiXFxcXGJpZ2dcIjoge1xuICAgIG1jbGFzczogXCJtb3JkXCIsXG4gICAgc2l6ZTogM1xuICB9LFxuICBcIlxcXFxCaWdnXCI6IHtcbiAgICBtY2xhc3M6IFwibW9yZFwiLFxuICAgIHNpemU6IDRcbiAgfVxufTtcbnZhciBkZWxpbWl0ZXJzID0gW1wiKFwiLCBcIlxcXFxscGFyZW5cIiwgXCIpXCIsIFwiXFxcXHJwYXJlblwiLCBcIltcIiwgXCJcXFxcbGJyYWNrXCIsIFwiXVwiLCBcIlxcXFxyYnJhY2tcIiwgXCJcXFxce1wiLCBcIlxcXFxsYnJhY2VcIiwgXCJcXFxcfVwiLCBcIlxcXFxyYnJhY2VcIiwgXCJcXFxcbGZsb29yXCIsIFwiXFxcXHJmbG9vclwiLCBcIlxcdTIzMEFcIiwgXCJcXHUyMzBCXCIsIFwiXFxcXGxjZWlsXCIsIFwiXFxcXHJjZWlsXCIsIFwiXFx1MjMwOFwiLCBcIlxcdTIzMDlcIiwgXCI8XCIsIFwiPlwiLCBcIlxcXFxsYW5nbGVcIiwgXCJcXHUyN0U4XCIsIFwiXFxcXHJhbmdsZVwiLCBcIlxcdTI3RTlcIiwgXCJcXFxcbHRcIiwgXCJcXFxcZ3RcIiwgXCJcXFxcbHZlcnRcIiwgXCJcXFxccnZlcnRcIiwgXCJcXFxcbFZlcnRcIiwgXCJcXFxcclZlcnRcIiwgXCJcXFxcbGdyb3VwXCIsIFwiXFxcXHJncm91cFwiLCBcIlxcdTI3RUVcIiwgXCJcXHUyN0VGXCIsIFwiXFxcXGxtb3VzdGFjaGVcIiwgXCJcXFxccm1vdXN0YWNoZVwiLCBcIlxcdTIzQjBcIiwgXCJcXHUyM0IxXCIsIFwiL1wiLCBcIlxcXFxiYWNrc2xhc2hcIiwgXCJ8XCIsIFwiXFxcXHZlcnRcIiwgXCJcXFxcfFwiLCBcIlxcXFxWZXJ0XCIsIFwiXFxcXHVwYXJyb3dcIiwgXCJcXFxcVXBhcnJvd1wiLCBcIlxcXFxkb3duYXJyb3dcIiwgXCJcXFxcRG93bmFycm93XCIsIFwiXFxcXHVwZG93bmFycm93XCIsIFwiXFxcXFVwZG93bmFycm93XCIsIFwiLlwiXTtcblxuLy8gRGVsaW1pdGVyIGZ1bmN0aW9uc1xuZnVuY3Rpb24gY2hlY2tEZWxpbWl0ZXIoZGVsaW0sIGNvbnRleHQpIHtcbiAgdmFyIHN5bURlbGltID0gY2hlY2tTeW1ib2xOb2RlVHlwZShkZWxpbSk7XG5cbiAgaWYgKHN5bURlbGltICYmIHV0aWxzLmNvbnRhaW5zKGRlbGltaXRlcnMsIHN5bURlbGltLnRleHQpKSB7XG4gICAgcmV0dXJuIHN5bURlbGltO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgZGVsaW1pdGVyOiAnXCIgKyAoc3ltRGVsaW0gPyBzeW1EZWxpbS50ZXh0IDogSlNPTi5zdHJpbmdpZnkoZGVsaW0pKSArIFwiJyBhZnRlciAnXCIgKyBjb250ZXh0LmZ1bmNOYW1lICsgXCInXCIsIGRlbGltKTtcbiAgfVxufVxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZGVsaW1zaXppbmdcIixcbiAgbmFtZXM6IFtcIlxcXFxiaWdsXCIsIFwiXFxcXEJpZ2xcIiwgXCJcXFxcYmlnZ2xcIiwgXCJcXFxcQmlnZ2xcIiwgXCJcXFxcYmlnclwiLCBcIlxcXFxCaWdyXCIsIFwiXFxcXGJpZ2dyXCIsIFwiXFxcXEJpZ2dyXCIsIFwiXFxcXGJpZ21cIiwgXCJcXFxcQmlnbVwiLCBcIlxcXFxiaWdnbVwiLCBcIlxcXFxCaWdnbVwiLCBcIlxcXFxiaWdcIiwgXCJcXFxcQmlnXCIsIFwiXFxcXGJpZ2dcIiwgXCJcXFxcQmlnZ1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHZhciBkZWxpbSA9IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRlbGltc2l6aW5nXCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgc2l6ZTogZGVsaW1pdGVyU2l6ZXNbY29udGV4dC5mdW5jTmFtZV0uc2l6ZSxcbiAgICAgIG1jbGFzczogZGVsaW1pdGVyU2l6ZXNbY29udGV4dC5mdW5jTmFtZV0ubWNsYXNzLFxuICAgICAgZGVsaW06IGRlbGltLnRleHRcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoZ3JvdXAuZGVsaW0gPT09IFwiLlwiKSB7XG4gICAgICAvLyBFbXB0eSBkZWxpbWl0ZXJzIHN0aWxsIGNvdW50IGFzIGVsZW1lbnRzLCBldmVuIHRob3VnaCB0aGV5IGRvbid0XG4gICAgICAvLyBzaG93IGFueXRoaW5nLlxuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtncm91cC5tY2xhc3NdKTtcbiAgICB9IC8vIFVzZSBkZWxpbWl0ZXIuc2l6ZWREZWxpbSB0byBnZW5lcmF0ZSB0aGUgZGVsaW1pdGVyLlxuXG5cbiAgICByZXR1cm4gZGVsaW1pdGVyLnNpemVkRGVsaW0oZ3JvdXAuZGVsaW0sIGdyb3VwLnNpemUsIG9wdGlvbnMsIGdyb3VwLm1vZGUsIFtncm91cC5tY2xhc3NdKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCkge1xuICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gICAgaWYgKGdyb3VwLmRlbGltICE9PSBcIi5cIikge1xuICAgICAgY2hpbGRyZW4ucHVzaChidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5kZWxpbSwgZ3JvdXAubW9kZSkpO1xuICAgIH1cblxuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBjaGlsZHJlbik7XG5cbiAgICBpZiAoZ3JvdXAubWNsYXNzID09PSBcIm1vcGVuXCIgfHwgZ3JvdXAubWNsYXNzID09PSBcIm1jbG9zZVwiKSB7XG4gICAgICAvLyBPbmx5IHNvbWUgb2YgdGhlIGRlbGltc2l6aW5nIGZ1bmN0aW9ucyBhY3QgYXMgZmVuY2VzLCBhbmQgdGhleVxuICAgICAgLy8gcmV0dXJuIFwibW9wZW5cIiBvciBcIm1jbG9zZVwiIG1jbGFzcy5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFeHBsaWNpdGx5IGRpc2FibGUgZmVuY2luZyBpZiBpdCdzIG5vdCBhIGZlbmNlLCB0byBvdmVycmlkZSB0aGVcbiAgICAgIC8vIGRlZmF1bHRzLlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcImZhbHNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gYXNzZXJ0UGFyc2VkKGdyb3VwKSB7XG4gIGlmICghZ3JvdXAuYm9keSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZzogVGhlIGxlZnRyaWdodCBQYXJzZU5vZGUgd2Fzbid0IGZ1bGx5IHBhcnNlZC5cIik7XG4gIH1cbn1cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImxlZnRyaWdodC1yaWdodFwiLFxuICBuYW1lczogW1wiXFxcXHJpZ2h0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgLy8gXFxsZWZ0IGNhc2UgYmVsb3cgdHJpZ2dlcnMgcGFyc2luZyBvZiBcXHJpZ2h0IGluXG4gICAgLy8gICBgY29uc3QgcmlnaHQgPSBwYXJzZXIucGFyc2VGdW5jdGlvbigpO2BcbiAgICAvLyB1c2VzIHRoaXMgcmV0dXJuIHZhbHVlLlxuICAgIHZhciBjb2xvciA9IGNvbnRleHQucGFyc2VyLmd1bGxldC5tYWNyb3MuZ2V0KFwiXFxcXGN1cnJlbnRAY29sb3JcIik7XG5cbiAgICBpZiAoY29sb3IgJiYgdHlwZW9mIGNvbG9yICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcY3VycmVudEBjb2xvciBzZXQgdG8gbm9uLXN0cmluZyBpbiBcXFxccmlnaHRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGVmdHJpZ2h0LXJpZ2h0XCIsXG4gICAgICBtb2RlOiBjb250ZXh0LnBhcnNlci5tb2RlLFxuICAgICAgZGVsaW06IGNoZWNrRGVsaW1pdGVyKGFyZ3NbMF0sIGNvbnRleHQpLnRleHQsXG4gICAgICBjb2xvcjogY29sb3IgLy8gdW5kZWZpbmVkIGlmIG5vdCBzZXQgdmlhIFxcY29sb3JcblxuICAgIH07XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImxlZnRyaWdodFwiLFxuICBuYW1lczogW1wiXFxcXGxlZnRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICB2YXIgZGVsaW0gPSBjaGVja0RlbGltaXRlcihhcmdzWzBdLCBjb250ZXh0KTtcbiAgICB2YXIgcGFyc2VyID0gY29udGV4dC5wYXJzZXI7IC8vIFBhcnNlIG91dCB0aGUgaW1wbGljaXQgYm9keVxuXG4gICAgKytwYXJzZXIubGVmdHJpZ2h0RGVwdGg7IC8vIHBhcnNlRXhwcmVzc2lvbiBzdG9wcyBiZWZvcmUgJ1xcXFxyaWdodCdcblxuICAgIHZhciBib2R5ID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbihmYWxzZSk7XG4gICAgLS1wYXJzZXIubGVmdHJpZ2h0RGVwdGg7IC8vIENoZWNrIHRoZSBuZXh0IHRva2VuXG5cbiAgICBwYXJzZXIuZXhwZWN0KFwiXFxcXHJpZ2h0XCIsIGZhbHNlKTtcbiAgICB2YXIgcmlnaHQgPSBhc3NlcnROb2RlVHlwZShwYXJzZXIucGFyc2VGdW5jdGlvbigpLCBcImxlZnRyaWdodC1yaWdodFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJsZWZ0cmlnaHRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIGxlZnQ6IGRlbGltLnRleHQsXG4gICAgICByaWdodDogcmlnaHQuZGVsaW0sXG4gICAgICByaWdodENvbG9yOiByaWdodC5jb2xvclxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGFzc2VydFBhcnNlZChncm91cCk7IC8vIEJ1aWxkIHRoZSBpbm5lciBleHByZXNzaW9uXG5cbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIHRydWUsIFtcIm1vcGVuXCIsIFwibWNsb3NlXCJdKTtcbiAgICB2YXIgaW5uZXJIZWlnaHQgPSAwO1xuICAgIHZhciBpbm5lckRlcHRoID0gMDtcbiAgICB2YXIgaGFkTWlkZGxlID0gZmFsc2U7IC8vIENhbGN1bGF0ZSBpdHMgaGVpZ2h0IGFuZCBkZXB0aFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbm5lci5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gUHJvcGVydHkgYGlzTWlkZGxlYCBub3QgZGVmaW5lZCBvbiBgc3BhbmAuIFNlZSBjb21tZW50IGluXG4gICAgICAvLyBcIm1pZGRsZVwiJ3MgaHRtbEJ1aWxkZXIuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBpZiAoaW5uZXJbaV0uaXNNaWRkbGUpIHtcbiAgICAgICAgaGFkTWlkZGxlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlubmVySGVpZ2h0ID0gTWF0aC5tYXgoaW5uZXJbaV0uaGVpZ2h0LCBpbm5lckhlaWdodCk7XG4gICAgICAgIGlubmVyRGVwdGggPSBNYXRoLm1heChpbm5lcltpXS5kZXB0aCwgaW5uZXJEZXB0aCk7XG4gICAgICB9XG4gICAgfSAvLyBUaGUgc2l6ZSBvZiBkZWxpbWl0ZXJzIGlzIHRoZSBzYW1lLCByZWdhcmRsZXNzIG9mIHdoYXQgc3R5bGUgd2UgYXJlXG4gICAgLy8gaW4uIFRodXMsIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgdGhlIHNpemUgb2YgZGVsaW1pdGVyIHdlIG5lZWQgYXJvdW5kXG4gICAgLy8gYSBncm91cCwgd2Ugc2NhbGUgZG93biB0aGUgaW5uZXIgc2l6ZSBiYXNlZCBvbiB0aGUgc2l6ZS5cblxuXG4gICAgaW5uZXJIZWlnaHQgKj0gb3B0aW9ucy5zaXplTXVsdGlwbGllcjtcbiAgICBpbm5lckRlcHRoICo9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgdmFyIGxlZnREZWxpbTtcblxuICAgIGlmIChncm91cC5sZWZ0ID09PSBcIi5cIikge1xuICAgICAgLy8gRW1wdHkgZGVsaW1pdGVycyBpbiBcXGxlZnQgYW5kIFxccmlnaHQgbWFrZSBudWxsIGRlbGltaXRlciBzcGFjZXMuXG4gICAgICBsZWZ0RGVsaW0gPSBtYWtlTnVsbERlbGltaXRlcihvcHRpb25zLCBbXCJtb3BlblwiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSwgdXNlIGxlZnRSaWdodERlbGltIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IHNpemVkXG4gICAgICAvLyBkZWxpbWl0ZXIuXG4gICAgICBsZWZ0RGVsaW0gPSBkZWxpbWl0ZXIubGVmdFJpZ2h0RGVsaW0oZ3JvdXAubGVmdCwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIG9wdGlvbnMsIGdyb3VwLm1vZGUsIFtcIm1vcGVuXCJdKTtcbiAgICB9IC8vIEFkZCBpdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBleHByZXNzaW9uXG5cblxuICAgIGlubmVyLnVuc2hpZnQobGVmdERlbGltKTsgLy8gSGFuZGxlIG1pZGRsZSBkZWxpbWl0ZXJzXG5cbiAgICBpZiAoaGFkTWlkZGxlKSB7XG4gICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgaW5uZXIubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBtaWRkbGVEZWxpbSA9IGlubmVyW19pXTsgLy8gUHJvcGVydHkgYGlzTWlkZGxlYCBub3QgZGVmaW5lZCBvbiBgc3BhbmAuIFNlZSBjb21tZW50IGluXG4gICAgICAgIC8vIFwibWlkZGxlXCIncyBodG1sQnVpbGRlci5cbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgICAgIHZhciBpc01pZGRsZSA9IG1pZGRsZURlbGltLmlzTWlkZGxlO1xuXG4gICAgICAgIGlmIChpc01pZGRsZSkge1xuICAgICAgICAgIC8vIEFwcGx5IHRoZSBvcHRpb25zIHRoYXQgd2VyZSBhY3RpdmUgd2hlbiBcXG1pZGRsZSB3YXMgY2FsbGVkXG4gICAgICAgICAgaW5uZXJbX2ldID0gZGVsaW1pdGVyLmxlZnRSaWdodERlbGltKGlzTWlkZGxlLmRlbGltLCBpbm5lckhlaWdodCwgaW5uZXJEZXB0aCwgaXNNaWRkbGUub3B0aW9ucywgZ3JvdXAubW9kZSwgW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJpZ2h0RGVsaW07IC8vIFNhbWUgZm9yIHRoZSByaWdodCBkZWxpbWl0ZXIsIGJ1dCB1c2luZyBjb2xvciBzcGVjaWZpZWQgYnkgXFxjb2xvclxuXG4gICAgaWYgKGdyb3VwLnJpZ2h0ID09PSBcIi5cIikge1xuICAgICAgcmlnaHREZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtcIm1jbG9zZVwiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb2xvck9wdGlvbnMgPSBncm91cC5yaWdodENvbG9yID8gb3B0aW9ucy53aXRoQ29sb3IoZ3JvdXAucmlnaHRDb2xvcikgOiBvcHRpb25zO1xuICAgICAgcmlnaHREZWxpbSA9IGRlbGltaXRlci5sZWZ0UmlnaHREZWxpbShncm91cC5yaWdodCwgaW5uZXJIZWlnaHQsIGlubmVyRGVwdGgsIGNvbG9yT3B0aW9ucywgZ3JvdXAubW9kZSwgW1wibWNsb3NlXCJdKTtcbiAgICB9IC8vIEFkZCBpdCB0byB0aGUgZW5kIG9mIHRoZSBleHByZXNzaW9uLlxuXG5cbiAgICBpbm5lci5wdXNoKHJpZ2h0RGVsaW0pO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtaW5uZXJcIl0sIGlubmVyLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGFzc2VydFBhcnNlZChncm91cCk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuXG4gICAgaWYgKGdyb3VwLmxlZnQgIT09IFwiLlwiKSB7XG4gICAgICB2YXIgbGVmdE5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC5sZWZ0LCBncm91cC5tb2RlKV0pO1xuICAgICAgbGVmdE5vZGUuc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpO1xuICAgICAgaW5uZXIudW5zaGlmdChsZWZ0Tm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnJpZ2h0ICE9PSBcIi5cIikge1xuICAgICAgdmFyIHJpZ2h0Tm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW2J1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLnJpZ2h0LCBncm91cC5tb2RlKV0pO1xuICAgICAgcmlnaHROb2RlLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcblxuICAgICAgaWYgKGdyb3VwLnJpZ2h0Q29sb3IpIHtcbiAgICAgICAgcmlnaHROb2RlLnNldEF0dHJpYnV0ZShcIm1hdGhjb2xvclwiLCBncm91cC5yaWdodENvbG9yKTtcbiAgICAgIH1cblxuICAgICAgaW5uZXIucHVzaChyaWdodE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZE1hdGhNTF9tYWtlUm93KGlubmVyKTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWlkZGxlXCIsXG4gIG5hbWVzOiBbXCJcXFxcbWlkZGxlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdmFyIGRlbGltID0gY2hlY2tEZWxpbWl0ZXIoYXJnc1swXSwgY29udGV4dCk7XG5cbiAgICBpZiAoIWNvbnRleHQucGFyc2VyLmxlZnRyaWdodERlcHRoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJcXFxcbWlkZGxlIHdpdGhvdXQgcHJlY2VkaW5nIFxcXFxsZWZ0XCIsIGRlbGltKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtaWRkbGVcIixcbiAgICAgIG1vZGU6IGNvbnRleHQucGFyc2VyLm1vZGUsXG4gICAgICBkZWxpbTogZGVsaW0udGV4dFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBtaWRkbGVEZWxpbTtcblxuICAgIGlmIChncm91cC5kZWxpbSA9PT0gXCIuXCIpIHtcbiAgICAgIG1pZGRsZURlbGltID0gbWFrZU51bGxEZWxpbWl0ZXIob3B0aW9ucywgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaWRkbGVEZWxpbSA9IGRlbGltaXRlci5zaXplZERlbGltKGdyb3VwLmRlbGltLCAxLCBvcHRpb25zLCBncm91cC5tb2RlLCBbXSk7XG4gICAgICB2YXIgaXNNaWRkbGUgPSB7XG4gICAgICAgIGRlbGltOiBncm91cC5kZWxpbSxcbiAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgfTsgLy8gUHJvcGVydHkgYGlzTWlkZGxlYCBub3QgZGVmaW5lZCBvbiBgc3BhbmAuIEl0IGlzIG9ubHkgdXNlZCBpblxuICAgICAgLy8gdGhpcyBmaWxlIGFib3ZlLlxuICAgICAgLy8gVE9ETzogRml4IHRoaXMgdmlvbGF0aW9uIG9mIHRoZSBgc3BhbmAgdHlwZSBhbmQgcG9zc2libHkgcmVuYW1lXG4gICAgICAvLyB0aGluZ3Mgc2luY2UgYGlzTWlkZGxlYCBzb3VuZHMgbGlrZSBhIGJvb2xlYW4sIGJ1dCBpcyBhIHN0cnVjdC5cbiAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgbWlkZGxlRGVsaW0uaXNNaWRkbGUgPSBpc01pZGRsZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxlRGVsaW07XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBBIEZpcmVmb3ggXFxtaWRkbGUgd2lsbCBzdHJlY2ggYSBjaGFyYWN0ZXIgdmVydGljYWxseSBvbmx5IGlmIGl0XG4gICAgLy8gaXMgaW4gdGhlIGZlbmNlIHBhcnQgb2YgdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnkgYXQ6XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL01hdGhNTDMvYXBwZW5kaXhjLmh0bWwuXG4gICAgLy8gU28gd2UgbmVlZCB0byBhdm9pZCBVKzIyMjMgYW5kIHVzZSBwbGFpbiBcInxcIiBpbnN0ZWFkLlxuICAgIHZhciB0ZXh0Tm9kZSA9IGdyb3VwLmRlbGltID09PSBcIlxcXFx2ZXJ0XCIgfHwgZ3JvdXAuZGVsaW0gPT09IFwifFwiID8gYnVpbGRNYXRoTUxfbWFrZVRleHQoXCJ8XCIsIFwidGV4dFwiKSA6IGJ1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLmRlbGltLCBncm91cC5tb2RlKTtcbiAgICB2YXIgbWlkZGxlTm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW3RleHROb2RlXSk7XG4gICAgbWlkZGxlTm9kZS5zZXRBdHRyaWJ1dGUoXCJmZW5jZVwiLCBcInRydWVcIik7IC8vIE1hdGhNTCBnaXZlcyA1LzE4ZW0gc3BhY2luZyB0byBlYWNoIDxtbz4gZWxlbWVudC5cbiAgICAvLyBcXG1pZGRsZSBzaG91bGQgZ2V0IGRlbGltaXRlciBzcGFjaW5nIGluc3RlYWQuXG5cbiAgICBtaWRkbGVOb2RlLnNldEF0dHJpYnV0ZShcImxzcGFjZVwiLCBcIjAuMDVlbVwiKTtcbiAgICBtaWRkbGVOb2RlLnNldEF0dHJpYnV0ZShcInJzcGFjZVwiLCBcIjAuMDVlbVwiKTtcbiAgICByZXR1cm4gbWlkZGxlTm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZW5jbG9zZS5qc1xuXG5cblxuXG5cblxuXG5cblxudmFyIGVuY2xvc2VfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAvLyBcXGNhbmNlbCwgXFxiY2FuY2VsLCBcXHhjYW5jZWwsIFxcc291dCwgXFxmYm94LCBcXGNvbG9yYm94LCBcXGZjb2xvcmJveFxuICAvLyBTb21lIGdyb3VwcyBjYW4gcmV0dXJuIGRvY3VtZW50IGZyYWdtZW50cy4gIEhhbmRsZSB0aG9zZSBieSB3cmFwcGluZ1xuICAvLyB0aGVtIGluIGEgc3Bhbi5cbiAgdmFyIGlubmVyID0gYnVpbGRDb21tb24ud3JhcEZyYWdtZW50KGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgdmFyIGxhYmVsID0gZ3JvdXAubGFiZWwuc3Vic3RyKDEpO1xuICB2YXIgc2NhbGUgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICB2YXIgaW1nO1xuICB2YXIgaW1nU2hpZnQgPSAwOyAvLyBJbiB0aGUgTGFUZVggY2FuY2VsIHBhY2thZ2UsIGxpbmUgZ2VvbWV0cnkgaXMgc2xpZ2h0bHkgZGlmZmVyZW50XG4gIC8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzdWJqZWN0IGlzIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCwgb3IgdmljZSB2ZXJzYS5cbiAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgd2lkdGggb2YgYSBncm91cCwgc28gYXMgYSBwcm94eSwgd2UgdGVzdCBpZlxuICAvLyB0aGUgc3ViamVjdCBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIuIFRoaXMgY2FwdHVyZXMgbW9zdCBvZiB0aGVcbiAgLy8gc3ViamVjdHMgdGhhdCBzaG91bGQgZ2V0IHRoZSBcInRhbGxcIiB0cmVhdG1lbnQuXG5cbiAgdmFyIGlzU2luZ2xlQ2hhciA9IHV0aWxzLmlzQ2hhcmFjdGVyQm94KGdyb3VwLmJvZHkpO1xuXG4gIGlmIChsYWJlbCA9PT0gXCJzb3V0XCIpIHtcbiAgICBpbWcgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJzdHJldGNoeVwiLCBcInNvdXRcIl0pO1xuICAgIGltZy5oZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZGVmYXVsdFJ1bGVUaGlja25lc3MgLyBzY2FsZTtcbiAgICBpbWdTaGlmdCA9IC0wLjUgKiBvcHRpb25zLmZvbnRNZXRyaWNzKCkueEhlaWdodDtcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgaG9yaXpvbnRhbCBwYWRkaW5nXG4gICAgaWYgKC9jYW5jZWwvLnRlc3QobGFiZWwpKSB7XG4gICAgICBpZiAoIWlzU2luZ2xlQ2hhcikge1xuICAgICAgICBpbm5lci5jbGFzc2VzLnB1c2goXCJjYW5jZWwtcGFkXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lci5jbGFzc2VzLnB1c2goXCJib3hwYWRcIik7XG4gICAgfSAvLyBBZGQgdmVydGljYWwgcGFkZGluZ1xuXG5cbiAgICB2YXIgdmVydFBhZCA9IDA7XG4gICAgdmFyIHJ1bGVUaGlja25lc3MgPSAwOyAvLyByZWY6IGNhbmNlbCBwYWNrYWdlOiBcXGFkdmFuY2VcXHRvdGFsaGVpZ2h0MlxccEAgJSBcIisyXCJcblxuICAgIGlmICgvYm94Ly50ZXN0KGxhYmVsKSkge1xuICAgICAgcnVsZVRoaWNrbmVzcyA9IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5mYm94cnVsZSwgLy8gZGVmYXVsdFxuICAgICAgb3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzIC8vIFVzZXIgb3ZlcnJpZGUuXG4gICAgICApO1xuICAgICAgdmVydFBhZCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5mYm94c2VwICsgKGxhYmVsID09PSBcImNvbG9yYm94XCIgPyAwIDogcnVsZVRoaWNrbmVzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZlcnRQYWQgPSBpc1NpbmdsZUNoYXIgPyAwLjIgOiAwO1xuICAgIH1cblxuICAgIGltZyA9IHN0cmV0Y2h5LmVuY2xvc2VTcGFuKGlubmVyLCBsYWJlbCwgdmVydFBhZCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoL2Zib3h8Ym94ZWR8ZmNvbG9yYm94Ly50ZXN0KGxhYmVsKSkge1xuICAgICAgaW1nLnN0eWxlLmJvcmRlclN0eWxlID0gXCJzb2xpZFwiO1xuICAgICAgaW1nLnN0eWxlLmJvcmRlcldpZHRoID0gcnVsZVRoaWNrbmVzcyArIFwiZW1cIjtcbiAgICB9XG5cbiAgICBpbWdTaGlmdCA9IGlubmVyLmRlcHRoICsgdmVydFBhZDtcblxuICAgIGlmIChncm91cC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGltZy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBncm91cC5iYWNrZ3JvdW5kQ29sb3I7XG5cbiAgICAgIGlmIChncm91cC5ib3JkZXJDb2xvcikge1xuICAgICAgICBpbWcuc3R5bGUuYm9yZGVyQ29sb3IgPSBncm91cC5ib3JkZXJDb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgdmxpc3Q7XG5cbiAgaWYgKGdyb3VwLmJhY2tncm91bmRDb2xvcikge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbLy8gUHV0IHRoZSBjb2xvciBiYWNrZ3JvdW5kIGJlaGluZCBpbm5lcjtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGltZyxcbiAgICAgICAgc2hpZnQ6IGltZ1NoaWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lcixcbiAgICAgICAgc2hpZnQ6IDBcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IFsvLyBXcml0ZSB0aGUgXFxjYW5jZWwgc3Ryb2tlIG9uIHRvcCBvZiBpbm5lci5cbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGlubmVyLFxuICAgICAgICBzaGlmdDogMFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW1nLFxuICAgICAgICBzaGlmdDogaW1nU2hpZnQsXG4gICAgICAgIHdyYXBwZXJDbGFzc2VzOiAvY2FuY2VsLy50ZXN0KGxhYmVsKSA/IFtcInN2Zy1hbGlnblwiXSA6IFtdXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKC9jYW5jZWwvLnRlc3QobGFiZWwpKSB7XG4gICAgLy8gVGhlIGNhbmNlbCBwYWNrYWdlIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IGNhbmNlbCBsaW5lcyBhZGQgdGhlaXIgaGVpZ2h0XG4gICAgLy8gdG8gdGhlIGV4cHJlc3Npb24sIGJ1dCB0ZXN0cyBzaG93IHRoYXQgaXNuJ3QgaG93IGl0IGFjdHVhbGx5IHdvcmtzLlxuICAgIHZsaXN0LmhlaWdodCA9IGlubmVyLmhlaWdodDtcbiAgICB2bGlzdC5kZXB0aCA9IGlubmVyLmRlcHRoO1xuICB9XG5cbiAgaWYgKC9jYW5jZWwvLnRlc3QobGFiZWwpICYmICFpc1NpbmdsZUNoYXIpIHtcbiAgICAvLyBjYW5jZWwgZG9lcyBub3QgY3JlYXRlIGhvcml6IHNwYWNlIGZvciBpdHMgbGluZSBleHRlbnNpb24uXG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJjYW5jZWwtbGFwXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG4gIH1cbn07XG5cbnZhciBlbmNsb3NlX21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmYm94c2VwID0gMDtcbiAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShncm91cC5sYWJlbC5pbmRleE9mKFwiY29sb3Jib3hcIikgPiAtMSA/IFwibXBhZGRlZFwiIDogXCJtZW5jbG9zZVwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuXG4gIHN3aXRjaCAoZ3JvdXAubGFiZWwpIHtcbiAgICBjYXNlIFwiXFxcXGNhbmNlbFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcInVwZGlhZ29uYWxzdHJpa2VcIik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxcYmNhbmNlbFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcImRvd25kaWFnb25hbHN0cmlrZVwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlxcXFxzb3V0XCI6XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIFwiaG9yaXpvbnRhbHN0cmlrZVwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBcIlxcXFxmYm94XCI6XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5vdGF0aW9uXCIsIFwiYm94XCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFwiXFxcXGZjb2xvcmJveFwiOlxuICAgIGNhc2UgXCJcXFxcY29sb3Jib3hcIjpcbiAgICAgIC8vIDxtZW5jbG9zZT4gZG9lc24ndCBoYXZlIGEgZ29vZCBub3RhdGlvbiBvcHRpb24uIFNvIHVzZSA8bXBhZGRlZD5cbiAgICAgIC8vIGluc3RlYWQuIFNldCBzb21lIGF0dHJpYnV0ZXMgdGhhdCBjb21lIGluY2x1ZGVkIHdpdGggPG1lbmNsb3NlPi5cbiAgICAgIGZib3hzZXAgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZmJveHNlcCAqIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5wdFBlckVtO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIitcIiArIDIgKiBmYm94c2VwICsgXCJwdFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiK1wiICsgMiAqIGZib3hzZXAgKyBcInB0XCIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsc3BhY2VcIiwgZmJveHNlcCArIFwicHRcIik7IC8vXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidm9mZnNldFwiLCBmYm94c2VwICsgXCJwdFwiKTtcblxuICAgICAgaWYgKGdyb3VwLmxhYmVsID09PSBcIlxcXFxmY29sb3Jib3hcIikge1xuICAgICAgICB2YXIgdGhrID0gTWF0aC5tYXgob3B0aW9ucy5mb250TWV0cmljcygpLmZib3hydWxlLCAvLyBkZWZhdWx0XG4gICAgICAgIG9wdGlvbnMubWluUnVsZVRoaWNrbmVzcyAvLyB1c2VyIG92ZXJyaWRlXG4gICAgICAgICk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJib3JkZXI6IFwiICsgdGhrICsgXCJlbSBzb2xpZCBcIiArIFN0cmluZyhncm91cC5ib3JkZXJDb2xvcikpO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJcXFxceGNhbmNlbFwiOlxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJub3RhdGlvblwiLCBcInVwZGlhZ29uYWxzdHJpa2UgZG93bmRpYWdvbmFsc3RyaWtlXCIpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoZ3JvdXAuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRoYmFja2dyb3VuZFwiLCBncm91cC5iYWNrZ3JvdW5kQ29sb3IpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZW5jbG9zZVwiLFxuICBuYW1lczogW1wiXFxcXGNvbG9yYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDIsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBncmVlZGluZXNzOiAzLFxuICAgIGFyZ1R5cGVzOiBbXCJjb2xvclwiLCBcInRleHRcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGNvbG9yID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJjb2xvci10b2tlblwiKS5jb2xvcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZW5jbG9zZVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsYWJlbDogZnVuY05hbWUsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBlbmNsb3NlX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBlbmNsb3NlX21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVuY2xvc2VcIixcbiAgbmFtZXM6IFtcIlxcXFxmY29sb3Jib3hcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMyxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlLFxuICAgIGdyZWVkaW5lc3M6IDMsXG4gICAgYXJnVHlwZXM6IFtcImNvbG9yXCIsIFwiY29sb3JcIiwgXCJ0ZXh0XCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MsIG9wdEFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYyLmZ1bmNOYW1lO1xuICAgIHZhciBib3JkZXJDb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJhY2tncm91bmRDb2xvciA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMV0sIFwiY29sb3ItdG9rZW5cIikuY29sb3I7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzJdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGVuY2xvc2VfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGVuY2xvc2VfbWF0aG1sQnVpbGRlclxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZW5jbG9zZVwiLFxuICBuYW1lczogW1wiXFxcXGZib3hcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wiaGJveFwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjMsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjMucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IFwiXFxcXGZib3hcIixcbiAgICAgIGJvZHk6IGFyZ3NbMF1cbiAgICB9O1xuICB9XG59KTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJlbmNsb3NlXCIsXG4gIG5hbWVzOiBbXCJcXFxcY2FuY2VsXCIsIFwiXFxcXGJjYW5jZWxcIiwgXCJcXFxceGNhbmNlbFwiLCBcIlxcXFxzb3V0XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmNCwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmNC5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjQuZnVuY05hbWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVuY2xvc2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBlbmNsb3NlX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBlbmNsb3NlX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZGVmaW5lRW52aXJvbm1lbnQuanNcblxuXG4vKipcbiAqIEFsbCByZWdpc3RlcmVkIGVudmlyb25tZW50cy5cbiAqIGBlbnZpcm9ubWVudHMuanNgIGV4cG9ydHMgdGhpcyBzYW1lIGRpY3Rpb25hcnkgYWdhaW4gYW5kIG1ha2VzIGl0IHB1YmxpYy5cbiAqIGBQYXJzZXIuanNgIHJlcXVpcmVzIHRoaXMgZGljdGlvbmFyeSB2aWEgYGVudmlyb25tZW50cy5qc2AuXG4gKi9cbnZhciBfZW52aXJvbm1lbnRzID0ge307XG5mdW5jdGlvbiBkZWZpbmVFbnZpcm9ubWVudChfcmVmKSB7XG4gIHZhciB0eXBlID0gX3JlZi50eXBlLFxuICAgICAgbmFtZXMgPSBfcmVmLm5hbWVzLFxuICAgICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgaGFuZGxlciA9IF9yZWYuaGFuZGxlcixcbiAgICAgIGh0bWxCdWlsZGVyID0gX3JlZi5odG1sQnVpbGRlcixcbiAgICAgIG1hdGhtbEJ1aWxkZXIgPSBfcmVmLm1hdGhtbEJ1aWxkZXI7XG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlcyBvZiBlbnZpcm9ubWVudHMuXG4gIHZhciBkYXRhID0ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgbnVtQXJnczogcHJvcHMubnVtQXJncyB8fCAwLFxuICAgIGdyZWVkaW5lc3M6IDEsXG4gICAgYWxsb3dlZEluVGV4dDogZmFsc2UsXG4gICAgbnVtT3B0aW9uYWxBcmdzOiAwLFxuICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gVE9ETzogVGhlIHZhbHVlIHR5cGUgb2YgX2Vudmlyb25tZW50cyBzaG91bGQgYmUgYSB0eXBlIHVuaW9uIG9mIGFsbFxuICAgIC8vIHBvc3NpYmxlIGBFbnZTcGVjPD5gIHBvc3NpYmlsaXRpZXMgaW5zdGVhZCBvZiBgRW52U3BlYzwqPmAsIHdoaWNoIGlzXG4gICAgLy8gYW4gZXhpc3RlbnRpYWwgdHlwZS5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgX2Vudmlyb25tZW50c1tuYW1lc1tpXV0gPSBkYXRhO1xuICB9XG5cbiAgaWYgKGh0bWxCdWlsZGVyKSB7XG4gICAgX2h0bWxHcm91cEJ1aWxkZXJzW3R5cGVdID0gaHRtbEJ1aWxkZXI7XG4gIH1cblxuICBpZiAobWF0aG1sQnVpbGRlcikge1xuICAgIF9tYXRobWxHcm91cEJ1aWxkZXJzW3R5cGVdID0gbWF0aG1sQnVpbGRlcjtcbiAgfVxufVxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZW52aXJvbm1lbnRzL2FycmF5LmpzXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmZ1bmN0aW9uIGdldEhMaW5lcyhwYXJzZXIpIHtcbiAgLy8gUmV0dXJuIGFuIGFycmF5LiBUaGUgYXJyYXkgbGVuZ3RoID0gbnVtYmVyIG9mIGhsaW5lcy5cbiAgLy8gRWFjaCBlbGVtZW50IGluIHRoZSBhcnJheSB0ZWxscyBpZiB0aGUgbGluZSBpcyBkYXNoZWQuXG4gIHZhciBobGluZUluZm8gPSBbXTtcbiAgcGFyc2VyLmNvbnN1bWVTcGFjZXMoKTtcbiAgdmFyIG54dCA9IHBhcnNlci5mZXRjaCgpLnRleHQ7XG5cbiAgd2hpbGUgKG54dCA9PT0gXCJcXFxcaGxpbmVcIiB8fCBueHQgPT09IFwiXFxcXGhkYXNobGluZVwiKSB7XG4gICAgcGFyc2VyLmNvbnN1bWUoKTtcbiAgICBobGluZUluZm8ucHVzaChueHQgPT09IFwiXFxcXGhkYXNobGluZVwiKTtcbiAgICBwYXJzZXIuY29uc3VtZVNwYWNlcygpO1xuICAgIG54dCA9IHBhcnNlci5mZXRjaCgpLnRleHQ7XG4gIH1cblxuICByZXR1cm4gaGxpbmVJbmZvO1xufVxuLyoqXG4gKiBQYXJzZSB0aGUgYm9keSBvZiB0aGUgZW52aXJvbm1lbnQsIHdpdGggcm93cyBkZWxpbWl0ZWQgYnkgXFxcXCBhbmRcbiAqIGNvbHVtbnMgZGVsaW1pdGVkIGJ5ICYsIGFuZCBjcmVhdGUgYSBuZXN0ZWQgbGlzdCBpbiByb3ctbWFqb3Igb3JkZXJcbiAqIHdpdGggb25lIGdyb3VwIHBlciBjZWxsLiAgSWYgZ2l2ZW4gYW4gb3B0aW9uYWwgYXJndW1lbnQgc3R5bGVcbiAqIChcInRleHRcIiwgXCJkaXNwbGF5XCIsIGV0Yy4pLCB0aGVuIGVhY2ggY2VsbCBpcyBjYXN0IGludG8gdGhhdCBzdHlsZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHBhcnNlQXJyYXkocGFyc2VyLCBfcmVmLCBzdHlsZSkge1xuICB2YXIgaHNraXBCZWZvcmVBbmRBZnRlciA9IF9yZWYuaHNraXBCZWZvcmVBbmRBZnRlcixcbiAgICAgIGFkZEpvdCA9IF9yZWYuYWRkSm90LFxuICAgICAgY29scyA9IF9yZWYuY29scyxcbiAgICAgIGFycmF5c3RyZXRjaCA9IF9yZWYuYXJyYXlzdHJldGNoLFxuICAgICAgY29sU2VwYXJhdGlvblR5cGUgPSBfcmVmLmNvbFNlcGFyYXRpb25UeXBlO1xuICAvLyBQYXJzZSBib2R5IG9mIGFycmF5IHdpdGggXFxcXCB0ZW1wb3JhcmlseSBtYXBwZWQgdG8gXFxjclxuICBwYXJzZXIuZ3VsbGV0LmJlZ2luR3JvdXAoKTtcbiAgcGFyc2VyLmd1bGxldC5tYWNyb3Muc2V0KFwiXFxcXFxcXFxcIiwgXCJcXFxcY3JcIik7IC8vIEdldCBjdXJyZW50IGFycmF5c3RyZXRjaCBpZiBpdCdzIG5vdCBzZXQgYnkgdGhlIGVudmlyb25tZW50XG5cbiAgaWYgKCFhcnJheXN0cmV0Y2gpIHtcbiAgICB2YXIgc3RyZXRjaCA9IHBhcnNlci5ndWxsZXQuZXhwYW5kTWFjcm9Bc1RleHQoXCJcXFxcYXJyYXlzdHJldGNoXCIpO1xuXG4gICAgaWYgKHN0cmV0Y2ggPT0gbnVsbCkge1xuICAgICAgLy8gRGVmYXVsdCBcXGFycmF5c3RyZXRjaCBmcm9tIGx0dGFiLmR0eFxuICAgICAgYXJyYXlzdHJldGNoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJyYXlzdHJldGNoID0gcGFyc2VGbG9hdChzdHJldGNoKTtcblxuICAgICAgaWYgKCFhcnJheXN0cmV0Y2ggfHwgYXJyYXlzdHJldGNoIDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIFxcXFxhcnJheXN0cmV0Y2g6IFwiICsgc3RyZXRjaCk7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIFN0YXJ0IGdyb3VwIGZvciBmaXJzdCBjZWxsXG5cblxuICBwYXJzZXIuZ3VsbGV0LmJlZ2luR3JvdXAoKTtcbiAgdmFyIHJvdyA9IFtdO1xuICB2YXIgYm9keSA9IFtyb3ddO1xuICB2YXIgcm93R2FwcyA9IFtdO1xuICB2YXIgaExpbmVzQmVmb3JlUm93ID0gW107IC8vIFRlc3QgZm9yIFxcaGxpbmUgYXQgdGhlIHRvcCBvZiB0aGUgYXJyYXkuXG5cbiAgaExpbmVzQmVmb3JlUm93LnB1c2goZ2V0SExpbmVzKHBhcnNlcikpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAvLyBQYXJzZSBlYWNoIGNlbGwgaW4gaXRzIG93biBncm91cCAobmFtZXNwYWNlKVxuICAgIHZhciBjZWxsID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbihmYWxzZSwgXCJcXFxcY3JcIik7XG4gICAgcGFyc2VyLmd1bGxldC5lbmRHcm91cCgpO1xuICAgIHBhcnNlci5ndWxsZXQuYmVnaW5Hcm91cCgpO1xuICAgIGNlbGwgPSB7XG4gICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGNlbGxcbiAgICB9O1xuXG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICBjZWxsID0ge1xuICAgICAgICB0eXBlOiBcInN0eWxpbmdcIixcbiAgICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgYm9keTogW2NlbGxdXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJvdy5wdXNoKGNlbGwpO1xuICAgIHZhciBuZXh0ID0gcGFyc2VyLmZldGNoKCkudGV4dDtcblxuICAgIGlmIChuZXh0ID09PSBcIiZcIikge1xuICAgICAgcGFyc2VyLmNvbnN1bWUoKTtcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IFwiXFxcXGVuZFwiKSB7XG4gICAgICAvLyBBcnJheXMgdGVybWluYXRlIG5ld2xpbmVzIHdpdGggYFxcY3JjcmAgd2hpY2ggY29uc3VtZXMgYSBgXFxjcmAgaWZcbiAgICAgIC8vIHRoZSBsYXN0IGxpbmUgaXMgZW1wdHkuXG4gICAgICAvLyBOT1RFOiBDdXJyZW50bHksIGBjZWxsYCBpcyB0aGUgbGFzdCBpdGVtIGFkZGVkIGludG8gYHJvd2AuXG4gICAgICBpZiAocm93Lmxlbmd0aCA9PT0gMSAmJiBjZWxsLnR5cGUgPT09IFwic3R5bGluZ1wiICYmIGNlbGwuYm9keVswXS5ib2R5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBib2R5LnBvcCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaExpbmVzQmVmb3JlUm93Lmxlbmd0aCA8IGJvZHkubGVuZ3RoICsgMSkge1xuICAgICAgICBoTGluZXNCZWZvcmVSb3cucHVzaChbXSk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAobmV4dCA9PT0gXCJcXFxcY3JcIikge1xuICAgICAgdmFyIGNyID0gYXNzZXJ0Tm9kZVR5cGUocGFyc2VyLnBhcnNlRnVuY3Rpb24oKSwgXCJjclwiKTtcbiAgICAgIHJvd0dhcHMucHVzaChjci5zaXplKTsgLy8gY2hlY2sgZm9yIFxcaGxpbmUocykgZm9sbG93aW5nIHRoZSByb3cgc2VwYXJhdG9yXG5cbiAgICAgIGhMaW5lc0JlZm9yZVJvdy5wdXNoKGdldEhMaW5lcyhwYXJzZXIpKTtcbiAgICAgIHJvdyA9IFtdO1xuICAgICAgYm9keS5wdXNoKHJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkV4cGVjdGVkICYgb3IgXFxcXFxcXFwgb3IgXFxcXGNyIG9yIFxcXFxlbmRcIiwgcGFyc2VyLm5leHRUb2tlbik7XG4gICAgfVxuICB9IC8vIEVuZCBjZWxsIGdyb3VwXG5cblxuICBwYXJzZXIuZ3VsbGV0LmVuZEdyb3VwKCk7IC8vIEVuZCBhcnJheSBncm91cCBkZWZpbmluZyBcXFxcXG5cbiAgcGFyc2VyLmd1bGxldC5lbmRHcm91cCgpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICBhZGRKb3Q6IGFkZEpvdCxcbiAgICBhcnJheXN0cmV0Y2g6IGFycmF5c3RyZXRjaCxcbiAgICBib2R5OiBib2R5LFxuICAgIGNvbHM6IGNvbHMsXG4gICAgcm93R2Fwczogcm93R2FwcyxcbiAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiBoc2tpcEJlZm9yZUFuZEFmdGVyLFxuICAgIGhMaW5lc0JlZm9yZVJvdzogaExpbmVzQmVmb3JlUm93LFxuICAgIGNvbFNlcGFyYXRpb25UeXBlOiBjb2xTZXBhcmF0aW9uVHlwZVxuICB9O1xufSAvLyBEZWNpZGVzIG9uIGEgc3R5bGUgZm9yIGNlbGxzIGluIGFuIGFycmF5IGFjY29yZGluZyB0byB3aGV0aGVyIHRoZSBnaXZlblxuLy8gZW52aXJvbm1lbnQgbmFtZSBzdGFydHMgd2l0aCB0aGUgbGV0dGVyICdkJy5cblxuXG5mdW5jdGlvbiBkQ2VsbFN0eWxlKGVudk5hbWUpIHtcbiAgaWYgKGVudk5hbWUuc3Vic3RyKDAsIDEpID09PSBcImRcIikge1xuICAgIHJldHVybiBcImRpc3BsYXlcIjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJ0ZXh0XCI7XG4gIH1cbn1cblxudmFyIGFycmF5X2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIHI7XG4gIHZhciBjO1xuICB2YXIgbnIgPSBncm91cC5ib2R5Lmxlbmd0aDtcbiAgdmFyIGhMaW5lc0JlZm9yZVJvdyA9IGdyb3VwLmhMaW5lc0JlZm9yZVJvdztcbiAgdmFyIG5jID0gMDtcbiAgdmFyIGJvZHkgPSBuZXcgQXJyYXkobnIpO1xuICB2YXIgaGxpbmVzID0gW107XG4gIHZhciBydWxlVGhpY2tuZXNzID0gTWF0aC5tYXgoIC8vIEZyb20gTGFUZVggXFxzaG93dGhlXFxhcnJheXJ1bGV3aWR0aC4gRXF1YWxzIDAuMDQgZW0uXG4gIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5hcnJheVJ1bGVXaWR0aCwgb3B0aW9ucy5taW5SdWxlVGhpY2tuZXNzIC8vIFVzZXIgb3ZlcnJpZGUuXG4gICk7IC8vIEhvcml6b250YWwgc3BhY2luZ1xuXG4gIHZhciBwdCA9IDEgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgdmFyIGFycmF5Y29sc2VwID0gNSAqIHB0OyAvLyBkZWZhdWx0IHZhbHVlLCBpLmUuIFxcYXJyYXljb2xzZXAgaW4gYXJ0aWNsZS5jbHNcblxuICBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgJiYgZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwic21hbGxcIikge1xuICAgIC8vIFdlJ3JlIGluIGEge3NtYWxsbWF0cml4fS4gRGVmYXVsdCBjb2x1bW4gc3BhY2UgaXMgXFx0aGlja3NwYWNlLFxuICAgIC8vIGkuZS4gNS8xOGVtID0gMC4yNzc4ZW0sIHBlciBhbXNtYXRoLmR0eCBmb3Ige3NtYWxsbWF0cml4fS5cbiAgICAvLyBCdXQgdGhhdCBuZWVkcyBhZGp1c3RtZW50IGJlY2F1c2UgTGFUZVggYXBwbGllcyBcXHNjcmlwdHN0eWxlIHRvIHRoZVxuICAgIC8vIGVudGlyZSBhcnJheSwgaW5jbHVkaW5nIHRoZSBjb2xzcGFjZSwgYnV0IHRoaXMgZnVuY3Rpb24gYXBwbGllc1xuICAgIC8vIFxcc2NyaXB0c3R5bGUgb25seSBpbnNpZGUgZWFjaCBlbGVtZW50LlxuICAgIHZhciBsb2NhbE11bHRpcGxpZXIgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHNyY19TdHlsZS5TQ1JJUFQpLnNpemVNdWx0aXBsaWVyO1xuICAgIGFycmF5Y29sc2VwID0gMC4yNzc4ICogKGxvY2FsTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXIpO1xuICB9IC8vIFZlcnRpY2FsIHNwYWNpbmdcblxuXG4gIHZhciBiYXNlbGluZXNraXAgPSAxMiAqIHB0OyAvLyBzZWUgc2l6ZTEwLmNsb1xuICAvLyBEZWZhdWx0IFxcam90IGZyb20gbHRtYXRoLmR0eFxuICAvLyBUT0RPKGVkZW1haW5lKTogYWxsb3cgb3ZlcnJpZGluZyBcXGpvdCB2aWEgXFxzZXRsZW5ndGggKCM2ODcpXG5cbiAgdmFyIGpvdCA9IDMgKiBwdDtcbiAgdmFyIGFycmF5c2tpcCA9IGdyb3VwLmFycmF5c3RyZXRjaCAqIGJhc2VsaW5lc2tpcDtcbiAgdmFyIGFyc3RydXRIZWlnaHQgPSAwLjcgKiBhcnJheXNraXA7IC8vIFxcc3RydXRib3ggaW4gbHRmc3N0cmMuZHR4IGFuZFxuXG4gIHZhciBhcnN0cnV0RGVwdGggPSAwLjMgKiBhcnJheXNraXA7IC8vIFxcQGFyc3RydXRib3ggaW4gbHR0YWIuZHR4XG5cbiAgdmFyIHRvdGFsSGVpZ2h0ID0gMDsgLy8gU2V0IGEgcG9zaXRpb24gZm9yIFxcaGxpbmUocykgYXQgdGhlIHRvcCBvZiB0aGUgYXJyYXksIGlmIGFueS5cblxuICBmdW5jdGlvbiBzZXRITGluZVBvcyhobGluZXNJbkdhcCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGxpbmVzSW5HYXAubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0b3RhbEhlaWdodCArPSAwLjI1O1xuICAgICAgfVxuXG4gICAgICBobGluZXMucHVzaCh7XG4gICAgICAgIHBvczogdG90YWxIZWlnaHQsXG4gICAgICAgIGlzRGFzaGVkOiBobGluZXNJbkdhcFtpXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0SExpbmVQb3MoaExpbmVzQmVmb3JlUm93WzBdKTtcblxuICBmb3IgKHIgPSAwOyByIDwgZ3JvdXAuYm9keS5sZW5ndGg7ICsrcikge1xuICAgIHZhciBpbnJvdyA9IGdyb3VwLmJvZHlbcl07XG4gICAgdmFyIGhlaWdodCA9IGFyc3RydXRIZWlnaHQ7IC8vIFxcQGFycmF5IGFkZHMgYW4gXFxAYXJzdHJ1dFxuXG4gICAgdmFyIGRlcHRoID0gYXJzdHJ1dERlcHRoOyAvLyB0byBlYWNoIHRvdyAodmlhIHRoZSB0ZW1wbGF0ZSlcblxuICAgIGlmIChuYyA8IGlucm93Lmxlbmd0aCkge1xuICAgICAgbmMgPSBpbnJvdy5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIG91dHJvdyA9IG5ldyBBcnJheShpbnJvdy5sZW5ndGgpO1xuXG4gICAgZm9yIChjID0gMDsgYyA8IGlucm93Lmxlbmd0aDsgKytjKSB7XG4gICAgICB2YXIgZWx0ID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoaW5yb3dbY10sIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoZGVwdGggPCBlbHQuZGVwdGgpIHtcbiAgICAgICAgZGVwdGggPSBlbHQuZGVwdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChoZWlnaHQgPCBlbHQuaGVpZ2h0KSB7XG4gICAgICAgIGhlaWdodCA9IGVsdC5oZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIG91dHJvd1tjXSA9IGVsdDtcbiAgICB9XG5cbiAgICB2YXIgcm93R2FwID0gZ3JvdXAucm93R2Fwc1tyXTtcbiAgICB2YXIgZ2FwID0gMDtcblxuICAgIGlmIChyb3dHYXApIHtcbiAgICAgIGdhcCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUocm93R2FwLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGdhcCA+IDApIHtcbiAgICAgICAgLy8gXFxAYXJnYXJyYXljclxuICAgICAgICBnYXAgKz0gYXJzdHJ1dERlcHRoO1xuXG4gICAgICAgIGlmIChkZXB0aCA8IGdhcCkge1xuICAgICAgICAgIGRlcHRoID0gZ2FwOyAvLyBcXEB4YXJnYXJyYXljclxuICAgICAgICB9XG5cbiAgICAgICAgZ2FwID0gMDtcbiAgICAgIH1cbiAgICB9IC8vIEluIEFNUyBtdWx0aWxpbmUgZW52aXJvbm1lbnRzIHN1Y2ggYXMgYWxpZ25lZCBhbmQgZ2F0aGVyZWQsIHJvd3NcbiAgICAvLyBjb3JyZXNwb25kIHRvIGxpbmVzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIFxcam90IGFkZGVkIHRvIHRoZVxuICAgIC8vIFxcYmFzZWxpbmVza2lwIHZpYSBcXG9wZW51cC5cblxuXG4gICAgaWYgKGdyb3VwLmFkZEpvdCkge1xuICAgICAgZGVwdGggKz0gam90O1xuICAgIH1cblxuICAgIG91dHJvdy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgb3V0cm93LmRlcHRoID0gZGVwdGg7XG4gICAgdG90YWxIZWlnaHQgKz0gaGVpZ2h0O1xuICAgIG91dHJvdy5wb3MgPSB0b3RhbEhlaWdodDtcbiAgICB0b3RhbEhlaWdodCArPSBkZXB0aCArIGdhcDsgLy8gXFxAeWFyZ2FycmF5Y3JcblxuICAgIGJvZHlbcl0gPSBvdXRyb3c7IC8vIFNldCBhIHBvc2l0aW9uIGZvciBcXGhsaW5lKHMpLCBpZiBhbnkuXG5cbiAgICBzZXRITGluZVBvcyhoTGluZXNCZWZvcmVSb3dbciArIDFdKTtcbiAgfVxuXG4gIHZhciBvZmZzZXQgPSB0b3RhbEhlaWdodCAvIDIgKyBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcbiAgdmFyIGNvbERlc2NyaXB0aW9ucyA9IGdyb3VwLmNvbHMgfHwgW107XG4gIHZhciBjb2xzID0gW107XG4gIHZhciBjb2xTZXA7XG4gIHZhciBjb2xEZXNjck51bTtcblxuICBmb3IgKGMgPSAwLCBjb2xEZXNjck51bSA9IDA7IC8vIENvbnRpbnVlIHdoaWxlIGVpdGhlciB0aGVyZSBhcmUgbW9yZSBjb2x1bW5zIG9yIG1vcmUgY29sdW1uXG4gIC8vIGRlc2NyaXB0aW9ucywgc28gdHJhaWxpbmcgc2VwYXJhdG9ycyBkb24ndCBnZXQgbG9zdC5cbiAgYyA8IG5jIHx8IGNvbERlc2NyTnVtIDwgY29sRGVzY3JpcHRpb25zLmxlbmd0aDsgKytjLCArK2NvbERlc2NyTnVtKSB7XG4gICAgdmFyIGNvbERlc2NyID0gY29sRGVzY3JpcHRpb25zW2NvbERlc2NyTnVtXSB8fCB7fTtcbiAgICB2YXIgZmlyc3RTZXBhcmF0b3IgPSB0cnVlO1xuXG4gICAgd2hpbGUgKGNvbERlc2NyLnR5cGUgPT09IFwic2VwYXJhdG9yXCIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgc2VwYXJhdG9yIGluIGEgcm93LCBhZGQgYSBzcGFjZVxuICAgICAgLy8gYmV0d2VlbiB0aGVtLlxuICAgICAgaWYgKCFmaXJzdFNlcGFyYXRvcikge1xuICAgICAgICBjb2xTZXAgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJhcnJheWNvbHNlcFwiXSwgW10pO1xuICAgICAgICBjb2xTZXAuc3R5bGUud2lkdGggPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuZG91YmxlUnVsZVNlcCArIFwiZW1cIjtcbiAgICAgICAgY29scy5wdXNoKGNvbFNlcCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2xEZXNjci5zZXBhcmF0b3IgPT09IFwifFwiIHx8IGNvbERlc2NyLnNlcGFyYXRvciA9PT0gXCI6XCIpIHtcbiAgICAgICAgdmFyIGxpbmVUeXBlID0gY29sRGVzY3Iuc2VwYXJhdG9yID09PSBcInxcIiA/IFwic29saWRcIiA6IFwiZGFzaGVkXCI7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJ2ZXJ0aWNhbC1zZXBhcmF0b3JcIl0sIFtdLCBvcHRpb25zKTtcbiAgICAgICAgc2VwYXJhdG9yLnN0eWxlLmhlaWdodCA9IHRvdGFsSGVpZ2h0ICsgXCJlbVwiO1xuICAgICAgICBzZXBhcmF0b3Iuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCA9IHJ1bGVUaGlja25lc3MgKyBcImVtXCI7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS5ib3JkZXJSaWdodFN0eWxlID0gbGluZVR5cGU7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS5tYXJnaW4gPSBcIjAgLVwiICsgcnVsZVRoaWNrbmVzcyAvIDIgKyBcImVtXCI7XG4gICAgICAgIHNlcGFyYXRvci5zdHlsZS52ZXJ0aWNhbEFsaWduID0gLSh0b3RhbEhlaWdodCAtIG9mZnNldCkgKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChzZXBhcmF0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBzZXBhcmF0b3IgdHlwZTogXCIgKyBjb2xEZXNjci5zZXBhcmF0b3IpO1xuICAgICAgfVxuXG4gICAgICBjb2xEZXNjck51bSsrO1xuICAgICAgY29sRGVzY3IgPSBjb2xEZXNjcmlwdGlvbnNbY29sRGVzY3JOdW1dIHx8IHt9O1xuICAgICAgZmlyc3RTZXBhcmF0b3IgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoYyA+PSBuYykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIHNlcHdpZHRoID0gdm9pZCAwO1xuXG4gICAgaWYgKGMgPiAwIHx8IGdyb3VwLmhza2lwQmVmb3JlQW5kQWZ0ZXIpIHtcbiAgICAgIHNlcHdpZHRoID0gdXRpbHMuZGVmbHQoY29sRGVzY3IucHJlZ2FwLCBhcnJheWNvbHNlcCk7XG5cbiAgICAgIGlmIChzZXB3aWR0aCAhPT0gMCkge1xuICAgICAgICBjb2xTZXAgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJhcnJheWNvbHNlcFwiXSwgW10pO1xuICAgICAgICBjb2xTZXAuc3R5bGUud2lkdGggPSBzZXB3aWR0aCArIFwiZW1cIjtcbiAgICAgICAgY29scy5wdXNoKGNvbFNlcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbCA9IFtdO1xuXG4gICAgZm9yIChyID0gMDsgciA8IG5yOyArK3IpIHtcbiAgICAgIHZhciByb3cgPSBib2R5W3JdO1xuICAgICAgdmFyIGVsZW0gPSByb3dbY107XG5cbiAgICAgIGlmICghZWxlbSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNoaWZ0ID0gcm93LnBvcyAtIG9mZnNldDtcbiAgICAgIGVsZW0uZGVwdGggPSByb3cuZGVwdGg7XG4gICAgICBlbGVtLmhlaWdodCA9IHJvdy5oZWlnaHQ7XG4gICAgICBjb2wucHVzaCh7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBlbGVtLFxuICAgICAgICBzaGlmdDogc2hpZnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICBjaGlsZHJlbjogY29sXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgY29sID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiY29sLWFsaWduLVwiICsgKGNvbERlc2NyLmFsaWduIHx8IFwiY1wiKV0sIFtjb2xdKTtcbiAgICBjb2xzLnB1c2goY29sKTtcblxuICAgIGlmIChjIDwgbmMgLSAxIHx8IGdyb3VwLmhza2lwQmVmb3JlQW5kQWZ0ZXIpIHtcbiAgICAgIHNlcHdpZHRoID0gdXRpbHMuZGVmbHQoY29sRGVzY3IucG9zdGdhcCwgYXJyYXljb2xzZXApO1xuXG4gICAgICBpZiAoc2Vwd2lkdGggIT09IDApIHtcbiAgICAgICAgY29sU2VwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiYXJyYXljb2xzZXBcIl0sIFtdKTtcbiAgICAgICAgY29sU2VwLnN0eWxlLndpZHRoID0gc2Vwd2lkdGggKyBcImVtXCI7XG4gICAgICAgIGNvbHMucHVzaChjb2xTZXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJvZHkgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtdGFibGVcIl0sIGNvbHMpOyAvLyBBZGQgXFxobGluZShzKSwgaWYgYW55LlxuXG4gIGlmIChobGluZXMubGVuZ3RoID4gMCkge1xuICAgIHZhciBsaW5lID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwiaGxpbmVcIiwgb3B0aW9ucywgcnVsZVRoaWNrbmVzcyk7XG4gICAgdmFyIGRhc2hlcyA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImhkYXNobGluZVwiLCBvcHRpb25zLCBydWxlVGhpY2tuZXNzKTtcbiAgICB2YXIgdkxpc3RFbGVtcyA9IFt7XG4gICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgIGVsZW06IGJvZHksXG4gICAgICBzaGlmdDogMFxuICAgIH1dO1xuXG4gICAgd2hpbGUgKGhsaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaGxpbmUgPSBobGluZXMucG9wKCk7XG4gICAgICB2YXIgbGluZVNoaWZ0ID0gaGxpbmUucG9zIC0gb2Zmc2V0O1xuXG4gICAgICBpZiAoaGxpbmUuaXNEYXNoZWQpIHtcbiAgICAgICAgdkxpc3RFbGVtcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBkYXNoZXMsXG4gICAgICAgICAgc2hpZnQ6IGxpbmVTaGlmdFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZMaXN0RWxlbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogbGluZSxcbiAgICAgICAgICBzaGlmdDogbGluZVNoaWZ0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJvZHkgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IHZMaXN0RWxlbXNcbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCJdLCBbYm9keV0sIG9wdGlvbnMpO1xufTtcblxudmFyIGFsaWduTWFwID0ge1xuICBjOiBcImNlbnRlciBcIixcbiAgbDogXCJsZWZ0IFwiLFxuICByOiBcInJpZ2h0IFwiXG59O1xuXG52YXIgYXJyYXlfbWF0aG1sQnVpbGRlciA9IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIHRhYmxlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGFibGVcIiwgZ3JvdXAuYm9keS5tYXAoZnVuY3Rpb24gKHJvdykge1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10clwiLCByb3cubWFwKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGRcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoY2VsbCwgb3B0aW9ucyldKTtcbiAgICB9KSk7XG4gIH0pKTsgLy8gU2V0IGNvbHVtbiBhbGlnbm1lbnQsIHJvdyBzcGFjaW5nLCBjb2x1bW4gc3BhY2luZywgYW5kXG4gIC8vIGFycmF5IGxpbmVzIGJ5IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGUgdGFibGUgZWxlbWVudC5cbiAgLy8gU2V0IHRoZSByb3cgc3BhY2luZy4gSW4gTWF0aE1MLCB3ZSBzcGVjaWZ5IGEgZ2FwIGRpc3RhbmNlLlxuICAvLyBXZSBkbyBub3QgdXNlIHJvd0dhcFtdIGJlY2F1c2UgTWF0aE1MIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2VzXG4gIC8vIGNlbGwgaGVpZ2h0IHdpdGggdGhlIGhlaWdodC9kZXB0aCBvZiB0aGUgZWxlbWVudCBjb250ZW50LlxuICAvLyBMYVRlWCBcXGFycmF5c3RyZXRjaCBtdWx0aXBsaWVzIHRoZSByb3cgYmFzZWxpbmUtdG8tYmFzZWxpbmUgZGlzdGFuY2UuXG4gIC8vIFdlIHNpbXVsYXRlIHRoaXMgYnkgYWRkaW5nIChhcnJheXN0cmV0Y2ggLSAxKWVtIHRvIHRoZSBnYXAuIFRoaXNcbiAgLy8gZG9lcyBhIHJlYXNvbmFibGUgam9iIG9mIGFkanVzdGluZyBhcnJheXMgY29udGFpbmluZyAxIGVtIHRhbGwgY29udGVudC5cbiAgLy8gVGhlIDAuMTYgYW5kIDAuMDkgdmFsdWVzIGFyZSBmb3VuZCBlbXByaWNhbGx5LiBUaGV5IHByb2R1Y2UgYW4gYXJyYXlcbiAgLy8gc2ltaWxhciB0byBMYVRlWCBhbmQgaW4gd2hpY2ggY29udGVudCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBcXGhpbmVzLlxuXG4gIHZhciBnYXAgPSBncm91cC5hcnJheXN0cmV0Y2ggPT09IDAuNSA/IDAuMSAvLyB7c21hbGxtYXRyaXh9LCB7c3ViYXJyYXl9XG4gIDogMC4xNiArIGdyb3VwLmFycmF5c3RyZXRjaCAtIDEgKyAoZ3JvdXAuYWRkSm90ID8gMC4wOSA6IDApO1xuICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJyb3dzcGFjaW5nXCIsIGdhcCArIFwiZW1cIik7IC8vIE1hdGhNTCB0YWJsZSBsaW5lcyBnbyBvbmx5IGJldHdlZW4gY2VsbHMuXG4gIC8vIFRvIHBsYWNlIGEgbGluZSBvbiBhbiBlZGdlIHdlJ2xsIHVzZSA8bWVuY2xvc2U+LCBpZiBuZWNlc3NhcnkuXG5cbiAgdmFyIG1lbmNsb3NlID0gXCJcIjtcbiAgdmFyIGFsaWduID0gXCJcIjtcblxuICBpZiAoZ3JvdXAuY29scykge1xuICAgIC8vIEZpbmQgY29sdW1uIGFsaWdubWVudCwgY29sdW1uIHNwYWNpbmcsIGFuZCAgdmVydGljYWwgbGluZXMuXG4gICAgdmFyIGNvbHMgPSBncm91cC5jb2xzO1xuICAgIHZhciBjb2x1bW5MaW5lcyA9IFwiXCI7XG4gICAgdmFyIHByZXZUeXBlV2FzQWxpZ24gPSBmYWxzZTtcbiAgICB2YXIgaVN0YXJ0ID0gMDtcbiAgICB2YXIgaUVuZCA9IGNvbHMubGVuZ3RoO1xuXG4gICAgaWYgKGNvbHNbMF0udHlwZSA9PT0gXCJzZXBhcmF0b3JcIikge1xuICAgICAgbWVuY2xvc2UgKz0gXCJ0b3AgXCI7XG4gICAgICBpU3RhcnQgPSAxO1xuICAgIH1cblxuICAgIGlmIChjb2xzW2NvbHMubGVuZ3RoIC0gMV0udHlwZSA9PT0gXCJzZXBhcmF0b3JcIikge1xuICAgICAgbWVuY2xvc2UgKz0gXCJib3R0b20gXCI7XG4gICAgICBpRW5kIC09IDE7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IGlTdGFydDsgaSA8IGlFbmQ7IGkrKykge1xuICAgICAgaWYgKGNvbHNbaV0udHlwZSA9PT0gXCJhbGlnblwiKSB7XG4gICAgICAgIGFsaWduICs9IGFsaWduTWFwW2NvbHNbaV0uYWxpZ25dO1xuXG4gICAgICAgIGlmIChwcmV2VHlwZVdhc0FsaWduKSB7XG4gICAgICAgICAgY29sdW1uTGluZXMgKz0gXCJub25lIFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlR5cGVXYXNBbGlnbiA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGNvbHNbaV0udHlwZSA9PT0gXCJzZXBhcmF0b3JcIikge1xuICAgICAgICAvLyBNYXRoTUwgYWNjZXB0cyBvbmx5IHNpbmdsZSBsaW5lcyBiZXR3ZWVuIGNlbGxzLlxuICAgICAgICAvLyBTbyB3ZSByZWFkIG9ubHkgdGhlIGZpcnN0IG9mIGNvbnNlY3V0aXZlIHNlcGFyYXRvcnMuXG4gICAgICAgIGlmIChwcmV2VHlwZVdhc0FsaWduKSB7XG4gICAgICAgICAgY29sdW1uTGluZXMgKz0gY29sc1tpXS5zZXBhcmF0b3IgPT09IFwifFwiID8gXCJzb2xpZCBcIiA6IFwiZGFzaGVkIFwiO1xuICAgICAgICAgIHByZXZUeXBlV2FzQWxpZ24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbmFsaWduXCIsIGFsaWduLnRyaW0oKSk7XG5cbiAgICBpZiAoL1tzZF0vLnRlc3QoY29sdW1uTGluZXMpKSB7XG4gICAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoXCJjb2x1bW5saW5lc1wiLCBjb2x1bW5MaW5lcy50cmltKCkpO1xuICAgIH1cbiAgfSAvLyBTZXQgY29sdW1uIHNwYWNpbmcuXG5cblxuICBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwiYWxpZ25cIikge1xuICAgIHZhciBfY29scyA9IGdyb3VwLmNvbHMgfHwgW107XG5cbiAgICB2YXIgc3BhY2luZyA9IFwiXCI7XG5cbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgX2NvbHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBzcGFjaW5nICs9IF9pICUgMiA/IFwiMGVtIFwiIDogXCIxZW0gXCI7XG4gICAgfVxuXG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1uc3BhY2luZ1wiLCBzcGFjaW5nLnRyaW0oKSk7XG4gIH0gZWxzZSBpZiAoZ3JvdXAuY29sU2VwYXJhdGlvblR5cGUgPT09IFwiYWxpZ25hdFwiKSB7XG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1uc3BhY2luZ1wiLCBcIjBlbVwiKTtcbiAgfSBlbHNlIGlmIChncm91cC5jb2xTZXBhcmF0aW9uVHlwZSA9PT0gXCJzbWFsbFwiKSB7XG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwiY29sdW1uc3BhY2luZ1wiLCBcIjAuMjc3OGVtXCIpO1xuICB9IGVsc2Uge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcImNvbHVtbnNwYWNpbmdcIiwgXCIxZW1cIik7XG4gIH0gLy8gQWRkcmVzcyBcXGhsaW5lIGFuZCBcXGhkYXNobGluZVxuXG5cbiAgdmFyIHJvd0xpbmVzID0gXCJcIjtcbiAgdmFyIGhsaW5lcyA9IGdyb3VwLmhMaW5lc0JlZm9yZVJvdztcbiAgbWVuY2xvc2UgKz0gaGxpbmVzWzBdLmxlbmd0aCA+IDAgPyBcImxlZnQgXCIgOiBcIlwiO1xuICBtZW5jbG9zZSArPSBobGluZXNbaGxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCA+IDAgPyBcInJpZ2h0IFwiIDogXCJcIjtcblxuICBmb3IgKHZhciBfaTIgPSAxOyBfaTIgPCBobGluZXMubGVuZ3RoIC0gMTsgX2kyKyspIHtcbiAgICByb3dMaW5lcyArPSBobGluZXNbX2kyXS5sZW5ndGggPT09IDAgPyBcIm5vbmUgXCIgLy8gTWF0aE1MIGFjY2VwdHMgb25seSBhIHNpbmdsZSBsaW5lIGJldHdlZW4gcm93cy4gUmVhZCBvbmUgZWxlbWVudC5cbiAgICA6IGhsaW5lc1tfaTJdWzBdID8gXCJkYXNoZWQgXCIgOiBcInNvbGlkIFwiO1xuICB9XG5cbiAgaWYgKC9bc2RdLy50ZXN0KHJvd0xpbmVzKSkge1xuICAgIHRhYmxlLnNldEF0dHJpYnV0ZShcInJvd2xpbmVzXCIsIHJvd0xpbmVzLnRyaW0oKSk7XG4gIH1cblxuICBpZiAobWVuY2xvc2UgIT09IFwiXCIpIHtcbiAgICB0YWJsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWVuY2xvc2VcIiwgW3RhYmxlXSk7XG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwibm90YXRpb25cIiwgbWVuY2xvc2UudHJpbSgpKTtcbiAgfVxuXG4gIGlmIChncm91cC5hcnJheXN0cmV0Y2ggJiYgZ3JvdXAuYXJyYXlzdHJldGNoIDwgMSkge1xuICAgIC8vIEEgc21hbGwgYXJyYXkuIFdyYXAgaW4gc2NyaXB0c3R5bGUgc28gcm93IGdhcCBpcyBub3QgdG9vIGxhcmdlLlxuICAgIHRhYmxlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgW3RhYmxlXSk7XG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwic2NyaXB0bGV2ZWxcIiwgXCIxXCIpO1xuICB9XG5cbiAgcmV0dXJuIHRhYmxlO1xufTsgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGFsaWduZWQgYW5kIGFsaWduZWRhdCBlbnZpcm9ubWVudHMuXG5cblxudmFyIGFycmF5X2FsaWduZWRIYW5kbGVyID0gZnVuY3Rpb24gYWxpZ25lZEhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICB2YXIgY29scyA9IFtdO1xuICB2YXIgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwge1xuICAgIGNvbHM6IGNvbHMsXG4gICAgYWRkSm90OiB0cnVlXG4gIH0sIFwiZGlzcGxheVwiKTsgLy8gRGV0ZXJtaW5pbmcgbnVtYmVyIG9mIGNvbHVtbnMuXG4gIC8vIDEuIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBnaXZlbiwgd2UgdXNlIGl0IGFzIGEgbnVtYmVyIG9mIGNvbHVtbnMsXG4gIC8vICAgIGFuZCBtYWtlcyBzdXJlIHRoYXQgZWFjaCByb3cgZG9lc24ndCBleGNlZWQgdGhhdCBudW1iZXIuXG4gIC8vIDIuIE90aGVyd2lzZSwganVzdCBjb3VudCBudW1iZXIgb2YgY29sdW1ucyA9IG1heGltdW0gbnVtYmVyXG4gIC8vICAgIG9mIGNlbGxzIGluIGVhY2ggcm93IChcImFsaWduZWRcIiBtb2RlIC0tIGlzQWxpZ25lZCB3aWxsIGJlIHRydWUpLlxuICAvL1xuICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBwcmVwZW5kIGVtcHR5IGdyb3VwIHt9IGF0IGJlZ2lubmluZyBvZiBldmVyeSBzZWNvbmRcbiAgLy8gY2VsbCBpbiBlYWNoIHJvdyAoc3RhcnRpbmcgd2l0aCBzZWNvbmQgY2VsbCkgc28gdGhhdCBvcGVyYXRvcnMgYmVjb21lXG4gIC8vIGJpbmFyeS4gIFRoaXMgYmVoYXZpb3IgaXMgaW1wbGVtZW50ZWQgaW4gYW1zbWF0aCdzIFxcc3RhcnRAYWxpZ25lZC5cblxuICB2YXIgbnVtTWF0aHM7XG4gIHZhciBudW1Db2xzID0gMDtcbiAgdmFyIGVtcHR5R3JvdXAgPSB7XG4gICAgdHlwZTogXCJvcmRncm91cFwiLFxuICAgIG1vZGU6IGNvbnRleHQubW9kZSxcbiAgICBib2R5OiBbXVxuICB9O1xuICB2YXIgb3JkZ3JvdXAgPSBjaGVja05vZGVUeXBlKGFyZ3NbMF0sIFwib3JkZ3JvdXBcIik7XG5cbiAgaWYgKG9yZGdyb3VwKSB7XG4gICAgdmFyIGFyZzAgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmRncm91cC5ib2R5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdGV4dG9yZCA9IGFzc2VydE5vZGVUeXBlKG9yZGdyb3VwLmJvZHlbaV0sIFwidGV4dG9yZFwiKTtcbiAgICAgIGFyZzAgKz0gdGV4dG9yZC50ZXh0O1xuICAgIH1cblxuICAgIG51bU1hdGhzID0gTnVtYmVyKGFyZzApO1xuICAgIG51bUNvbHMgPSBudW1NYXRocyAqIDI7XG4gIH1cblxuICB2YXIgaXNBbGlnbmVkID0gIW51bUNvbHM7XG4gIHJlcy5ib2R5LmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIGZvciAodmFyIF9pMyA9IDE7IF9pMyA8IHJvdy5sZW5ndGg7IF9pMyArPSAyKSB7XG4gICAgICAvLyBNb2RpZnkgb3JkZ3JvdXAgbm9kZSB3aXRoaW4gc3R5bGluZyBub2RlXG4gICAgICB2YXIgc3R5bGluZyA9IGFzc2VydE5vZGVUeXBlKHJvd1tfaTNdLCBcInN0eWxpbmdcIik7XG5cbiAgICAgIHZhciBfb3JkZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShzdHlsaW5nLmJvZHlbMF0sIFwib3JkZ3JvdXBcIik7XG5cbiAgICAgIF9vcmRncm91cC5ib2R5LnVuc2hpZnQoZW1wdHlHcm91cCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0FsaWduZWQpIHtcbiAgICAgIC8vIENhc2UgMVxuICAgICAgdmFyIGN1ck1hdGhzID0gcm93Lmxlbmd0aCAvIDI7XG5cbiAgICAgIGlmIChudW1NYXRocyA8IGN1ck1hdGhzKSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlRvbyBtYW55IG1hdGggaW4gYSByb3c6IFwiICsgKFwiZXhwZWN0ZWQgXCIgKyBudW1NYXRocyArIFwiLCBidXQgZ290IFwiICsgY3VyTWF0aHMpLCByb3dbMF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobnVtQ29scyA8IHJvdy5sZW5ndGgpIHtcbiAgICAgIC8vIENhc2UgMlxuICAgICAgbnVtQ29scyA9IHJvdy5sZW5ndGg7XG4gICAgfVxuICB9KTsgLy8gQWRqdXN0aW5nIGFsaWdubWVudC5cbiAgLy8gSW4gYWxpZ25lZCBtb2RlLCB3ZSBhZGQgb25lIFxccXF1YWQgYmV0d2VlbiBjb2x1bW5zO1xuICAvLyBvdGhlcndpc2Ugd2UgYWRkIG5vdGhpbmcuXG5cbiAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbnVtQ29sczsgKytfaTQpIHtcbiAgICB2YXIgYWxpZ24gPSBcInJcIjtcbiAgICB2YXIgcHJlZ2FwID0gMDtcblxuICAgIGlmIChfaTQgJSAyID09PSAxKSB7XG4gICAgICBhbGlnbiA9IFwibFwiO1xuICAgIH0gZWxzZSBpZiAoX2k0ID4gMCAmJiBpc0FsaWduZWQpIHtcbiAgICAgIC8vIFwiYWxpZ25lZFwiIG1vZGUuXG4gICAgICBwcmVnYXAgPSAxOyAvLyBhZGQgb25lIFxccXVhZFxuICAgIH1cblxuICAgIGNvbHNbX2k0XSA9IHtcbiAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgIHByZWdhcDogcHJlZ2FwLFxuICAgICAgcG9zdGdhcDogMFxuICAgIH07XG4gIH1cblxuICByZXMuY29sU2VwYXJhdGlvblR5cGUgPSBpc0FsaWduZWQgPyBcImFsaWduXCIgOiBcImFsaWduYXRcIjtcbiAgcmV0dXJuIHJlcztcbn07IC8vIEFycmF5cyBhcmUgcGFydCBvZiBMYVRlWCwgZGVmaW5lZCBpbiBsdHRhYi5kdHggc28gaXRzIGRvY3VtZW50YXRpb25cbi8vIGlzIHBhcnQgb2YgdGhlIHNvdXJjZTJlLnBkZiBmaWxlIG9mIExhVGVYMmUgc291cmNlIGRvY3VtZW50YXRpb24uXG4vLyB7ZGFycmF5fSBpcyBhbiB7YXJyYXl9IGVudmlyb25tZW50IHdoZXJlIGNlbGxzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUsXG4vLyBhcyBkZWZpbmVkIGluIG5jY21hdGguc3R5LlxuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiYXJyYXlcIiwgXCJkYXJyYXlcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQsIGFyZ3MpIHtcbiAgICAvLyBTaW5jZSBubyB0eXBlcyBhcmUgc3BlY2lmaWVkIGFib3ZlLCB0aGUgdHdvIHBvc3NpYmlsaXRpZXMgYXJlXG4gICAgLy8gLSBUaGUgYXJndW1lbnQgaXMgd3JhcHBlZCBpbiB7fSBvciBbXSwgaW4gd2hpY2ggY2FzZSBQYXJzZXInc1xuICAgIC8vICAgcGFyc2VHcm91cCgpIHJldHVybnMgYW4gXCJvcmRncm91cFwiIHdyYXBwaW5nIHNvbWUgc3ltYm9sIG5vZGUuXG4gICAgLy8gLSBUaGUgYXJndW1lbnQgaXMgYSBiYXJlIHN5bWJvbCBub2RlLlxuICAgIHZhciBzeW1Ob2RlID0gY2hlY2tTeW1ib2xOb2RlVHlwZShhcmdzWzBdKTtcbiAgICB2YXIgY29sYWxpZ24gPSBzeW1Ob2RlID8gW2FyZ3NbMF1dIDogYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJvcmRncm91cFwiKS5ib2R5O1xuICAgIHZhciBjb2xzID0gY29sYWxpZ24ubWFwKGZ1bmN0aW9uIChuZGUpIHtcbiAgICAgIHZhciBub2RlID0gYXNzZXJ0U3ltYm9sTm9kZVR5cGUobmRlKTtcbiAgICAgIHZhciBjYSA9IG5vZGUudGV4dDtcblxuICAgICAgaWYgKFwibGNyXCIuaW5kZXhPZihjYSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICAgIGFsaWduOiBjYVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjYSA9PT0gXCJ8XCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcInNlcGFyYXRvclwiLFxuICAgICAgICAgIHNlcGFyYXRvcjogXCJ8XCJcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2EgPT09IFwiOlwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBzZXBhcmF0b3I6IFwiOlwiXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gY29sdW1uIGFsaWdubWVudDogXCIgKyBjYSwgbmRlKTtcbiAgICB9KTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgY29sczogY29scyxcbiAgICAgIGhza2lwQmVmb3JlQW5kQWZ0ZXI6IHRydWUgLy8gXFxAcHJlYW1ibGUgaW4gbHR0YWIuZHR4XG5cbiAgICB9O1xuICAgIHJldHVybiBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCByZXMsIGRDZWxsU3R5bGUoY29udGV4dC5lbnZOYW1lKSk7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIFRoZSBtYXRyaXggZW52aXJvbm1lbnRzIG9mIGFtc21hdGggYnVpbGRzIG9uIHRoZSBhcnJheSBlbnZpcm9ubWVudFxuLy8gb2YgTGFUZVgsIHdoaWNoIGlzIGRpc2N1c3NlZCBhYm92ZS5cblxuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJtYXRyaXhcIiwgXCJwbWF0cml4XCIsIFwiYm1hdHJpeFwiLCBcIkJtYXRyaXhcIiwgXCJ2bWF0cml4XCIsIFwiVm1hdHJpeFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCkge1xuICAgIHZhciBkZWxpbWl0ZXJzID0ge1xuICAgICAgXCJtYXRyaXhcIjogbnVsbCxcbiAgICAgIFwicG1hdHJpeFwiOiBbXCIoXCIsIFwiKVwiXSxcbiAgICAgIFwiYm1hdHJpeFwiOiBbXCJbXCIsIFwiXVwiXSxcbiAgICAgIFwiQm1hdHJpeFwiOiBbXCJcXFxce1wiLCBcIlxcXFx9XCJdLFxuICAgICAgXCJ2bWF0cml4XCI6IFtcInxcIiwgXCJ8XCJdLFxuICAgICAgXCJWbWF0cml4XCI6IFtcIlxcXFxWZXJ0XCIsIFwiXFxcXFZlcnRcIl1cbiAgICB9W2NvbnRleHQuZW52TmFtZV07IC8vIFxcaHNraXAgLVxcYXJyYXljb2xzZXAgaW4gYW1zbWF0aFxuXG4gICAgdmFyIHBheWxvYWQgPSB7XG4gICAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiBmYWxzZVxuICAgIH07XG4gICAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHBheWxvYWQsIGRDZWxsU3R5bGUoY29udGV4dC5lbnZOYW1lKSk7XG4gICAgcmV0dXJuIGRlbGltaXRlcnMgPyB7XG4gICAgICB0eXBlOiBcImxlZnRyaWdodFwiLFxuICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxuICAgICAgYm9keTogW3Jlc10sXG4gICAgICBsZWZ0OiBkZWxpbWl0ZXJzWzBdLFxuICAgICAgcmlnaHQ6IGRlbGltaXRlcnNbMV0sXG4gICAgICByaWdodENvbG9yOiB1bmRlZmluZWQgLy8gXFxyaWdodCB1bmluZmx1ZW5jZWQgYnkgXFxjb2xvciBpbiBhcnJheVxuXG4gICAgfSA6IHJlcztcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGFycmF5X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBhcnJheV9tYXRobWxCdWlsZGVyXG59KTtcbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wic21hbGxtYXRyaXhcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgcGF5bG9hZCA9IHtcbiAgICAgIGFycmF5c3RyZXRjaDogMC41XG4gICAgfTtcbiAgICB2YXIgcmVzID0gcGFyc2VBcnJheShjb250ZXh0LnBhcnNlciwgcGF5bG9hZCwgXCJzY3JpcHRcIik7XG4gICAgcmVzLmNvbFNlcGFyYXRpb25UeXBlID0gXCJzbWFsbFwiO1xuICAgIHJldHVybiByZXM7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7XG5kZWZpbmVFbnZpcm9ubWVudCh7XG4gIHR5cGU6IFwiYXJyYXlcIixcbiAgbmFtZXM6IFtcInN1YmFycmF5XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgLy8gUGFyc2luZyBvZiB7c3ViYXJyYXl9IGlzIHNpbWlsYXIgdG8ge2FycmF5fVxuICAgIHZhciBzeW1Ob2RlID0gY2hlY2tTeW1ib2xOb2RlVHlwZShhcmdzWzBdKTtcbiAgICB2YXIgY29sYWxpZ24gPSBzeW1Ob2RlID8gW2FyZ3NbMF1dIDogYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJvcmRncm91cFwiKS5ib2R5O1xuICAgIHZhciBjb2xzID0gY29sYWxpZ24ubWFwKGZ1bmN0aW9uIChuZGUpIHtcbiAgICAgIHZhciBub2RlID0gYXNzZXJ0U3ltYm9sTm9kZVR5cGUobmRlKTtcbiAgICAgIHZhciBjYSA9IG5vZGUudGV4dDsgLy8ge3N1YmFycmF5fSBvbmx5IHJlY29nbml6ZXMgXCJsXCIgJiBcImNcIlxuXG4gICAgICBpZiAoXCJsY1wiLmluZGV4T2YoY2EpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxpZ25cIixcbiAgICAgICAgICBhbGlnbjogY2FcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5rbm93biBjb2x1bW4gYWxpZ25tZW50OiBcIiArIGNhLCBuZGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwie3N1YmFycmF5fSBjYW4gY29udGFpbiBvbmx5IG9uZSBjb2x1bW5cIik7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIGNvbHM6IGNvbHMsXG4gICAgICBoc2tpcEJlZm9yZUFuZEFmdGVyOiBmYWxzZSxcbiAgICAgIGFycmF5c3RyZXRjaDogMC41XG4gICAgfTtcbiAgICByZXMgPSBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCByZXMsIFwic2NyaXB0XCIpO1xuXG4gICAgaWYgKHJlcy5ib2R5WzBdLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIntzdWJhcnJheX0gY2FuIGNvbnRhaW4gb25seSBvbmUgY29sdW1uXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIEEgY2FzZXMgZW52aXJvbm1lbnQgKGluIGFtc21hdGguc3R5KSBpcyBhbG1vc3QgZXF1aXZhbGVudCB0b1xuLy8gXFxkZWZcXGFycmF5c3RyZXRjaHsxLjJ9JVxuLy8gXFxsZWZ0XFx7XFxiZWdpbnthcnJheX17QHt9bEB7XFxxdWFkfWxAe319IOKApiBcXGVuZHthcnJheX1cXHJpZ2h0LlxuLy8ge2RjYXNlc30gaXMgYSB7Y2FzZXN9IGVudmlyb25tZW50IHdoZXJlIGNlbGxzIGFyZSBzZXQgaW4gXFxkaXNwbGF5c3R5bGUsXG4vLyBhcyBkZWZpbmVkIGluIG1hdGh0b29scy5zdHkuXG5cbmRlZmluZUVudmlyb25tZW50KHtcbiAgdHlwZTogXCJhcnJheVwiLFxuICBuYW1lczogW1wiY2FzZXNcIiwgXCJkY2FzZXNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGNvbnRleHQpIHtcbiAgICB2YXIgcGF5bG9hZCA9IHtcbiAgICAgIGFycmF5c3RyZXRjaDogMS4yLFxuICAgICAgY29sczogW3tcbiAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICBhbGlnbjogXCJsXCIsXG4gICAgICAgIHByZWdhcDogMCxcbiAgICAgICAgLy8gVE9ETyhrZXZpbmIpIGdldCB0aGUgY3VycmVudCBzdHlsZS5cbiAgICAgICAgLy8gRm9yIG5vdyB3ZSB1c2UgdGhlIG1ldHJpY3MgZm9yIFRFWFQgc3R5bGUgd2hpY2ggaXMgd2hhdCB3ZSB3ZXJlXG4gICAgICAgIC8vIGRvaW5nIGJlZm9yZS4gIEJlZm9yZSBhdHRlbXB0aW5nIHRvIGdldCB0aGUgY3VycmVudCBzdHlsZSB3ZVxuICAgICAgICAvLyBzaG91bGQgbG9vayBhdCBUZVgncyBiZWhhdmlvciBlc3BlY2lhbGx5IGZvciBcXG92ZXIgYW5kIG1hdHJpY2VzLlxuICAgICAgICBwb3N0Z2FwOiAxLjBcbiAgICAgICAgLyogMWVtIHF1YWQgKi9cblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgIGFsaWduOiBcImxcIixcbiAgICAgICAgcHJlZ2FwOiAwLFxuICAgICAgICBwb3N0Z2FwOiAwXG4gICAgICB9XVxuICAgIH07XG4gICAgdmFyIHJlcyA9IHBhcnNlQXJyYXkoY29udGV4dC5wYXJzZXIsIHBheWxvYWQsIGRDZWxsU3R5bGUoY29udGV4dC5lbnZOYW1lKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGVmdHJpZ2h0XCIsXG4gICAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXG4gICAgICBib2R5OiBbcmVzXSxcbiAgICAgIGxlZnQ6IFwiXFxcXHtcIixcbiAgICAgIHJpZ2h0OiBcIi5cIixcbiAgICAgIHJpZ2h0Q29sb3I6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIEFuIGFsaWduZWQgZW52aXJvbm1lbnQgaXMgbGlrZSB0aGUgYWxpZ24qIGVudmlyb25tZW50XG4vLyBleGNlcHQgaXQgb3BlcmF0ZXMgd2l0aGluIG1hdGggbW9kZS5cbi8vIE5vdGUgdGhhdCB3ZSBhc3N1bWUgXFxub21hbGxpbmVza2lwbGltaXQgdG8gYmUgemVybyxcbi8vIHNvIHRoYXQgXFxzdHJ1dEAgaXMgdGhlIHNhbWUgYXMgXFxzdHJ1dC5cblxuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJhbGlnbmVkXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDBcbiAgfSxcbiAgaGFuZGxlcjogYXJyYXlfYWxpZ25lZEhhbmRsZXIsXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIEEgZ2F0aGVyZWQgZW52aXJvbm1lbnQgaXMgbGlrZSBhbiBhcnJheSBlbnZpcm9ubWVudCB3aXRoIG9uZSBjZW50ZXJlZFxuLy8gY29sdW1uLCBidXQgd2hlcmUgcm93cyBhcmUgY29uc2lkZXJlZCBsaW5lcyBzbyBnZXQgXFxqb3QgbGluZSBzcGFjaW5nXG4vLyBhbmQgY29udGVudHMgYXJlIHNldCBpbiBcXGRpc3BsYXlzdHlsZS5cblxuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJnYXRoZXJlZFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCkge1xuICAgIHZhciByZXMgPSB7XG4gICAgICBjb2xzOiBbe1xuICAgICAgICB0eXBlOiBcImFsaWduXCIsXG4gICAgICAgIGFsaWduOiBcImNcIlxuICAgICAgfV0sXG4gICAgICBhZGRKb3Q6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiBwYXJzZUFycmF5KGNvbnRleHQucGFyc2VyLCByZXMsIFwiZGlzcGxheVwiKTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGFycmF5X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBhcnJheV9tYXRobWxCdWlsZGVyXG59KTsgLy8gYWxpZ25hdCBlbnZpcm9ubWVudCBpcyBsaWtlIGFuIGFsaWduIGVudmlyb25tZW50LCBidXQgb25lIG11c3QgZXhwbGljaXRseVxuLy8gc3BlY2lmeSBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIGVhY2ggcm93LCBhbmQgY2FuIGFkanVzdCBzcGFjaW5nIGJldHdlZW5cbi8vIGVhY2ggY29sdW1ucy5cblxuZGVmaW5lRW52aXJvbm1lbnQoe1xuICB0eXBlOiBcImFycmF5XCIsXG4gIG5hbWVzOiBbXCJhbGlnbmVkYXRcIl0sXG4gIC8vIE9uZSBmb3IgbnVtYmVyZWQgYW5kIGZvciB1bm51bWJlcmVkO1xuICAvLyBidXQsIEthVGVYIGRvZXNuJ3Qgc3VwcG9ydHMgbWF0aCBudW1iZXJpbmcgeWV0LFxuICAvLyB0aGV5IG1ha2Ugbm8gZGlmZmVyZW5jZSBmb3Igbm93LlxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogYXJyYXlfYWxpZ25lZEhhbmRsZXIsXG4gIGh0bWxCdWlsZGVyOiBhcnJheV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogYXJyYXlfbWF0aG1sQnVpbGRlclxufSk7IC8vIENhdGNoIFxcaGxpbmUgb3V0c2lkZSBhcnJheSBlbnZpcm9ubWVudFxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidGV4dFwiLFxuICAvLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoaXMgaXMuXG4gIG5hbWVzOiBbXCJcXFxcaGxpbmVcIiwgXCJcXFxcaGRhc2hsaW5lXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBhbGxvd2VkSW5NYXRoOiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoY29udGV4dCwgYXJncykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihjb250ZXh0LmZ1bmNOYW1lICsgXCIgdmFsaWQgb25seSB3aXRoaW4gYXJyYXkgZW52aXJvbm1lbnRcIik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZW52aXJvbm1lbnRzLmpzXG5cbnZhciBlbnZpcm9ubWVudHMgPSBfZW52aXJvbm1lbnRzO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2Vudmlyb25tZW50cyA9IChlbnZpcm9ubWVudHMpOyAvLyBBbGwgZW52aXJvbm1lbnQgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGltcG9ydGVkIGJlbG93XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2Vudmlyb25tZW50LmpzXG5cblxuXG4gLy8gRW52aXJvbm1lbnQgZGVsaW1pdGVycy4gSFRNTC9NYXRoTUwgcmVuZGVyaW5nIGlzIGRlZmluZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmdcbi8vIGRlZmluZUVudmlyb25tZW50IGRlZmluaXRpb25zLlxuLy8gJEZsb3dGaXhNZSwgXCJlbnZpcm9ubWVudFwiIGhhbmRsZXIgcmV0dXJucyBhbiBlbnZpcm9ubWVudCBQYXJzZU5vZGVcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImVudmlyb25tZW50XCIsXG4gIG5hbWVzOiBbXCJcXFxcYmVnaW5cIiwgXCJcXFxcZW5kXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgYXJnVHlwZXM6IFtcInRleHRcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIG5hbWVHcm91cCA9IGFyZ3NbMF07XG5cbiAgICBpZiAobmFtZUdyb3VwLnR5cGUgIT09IFwib3JkZ3JvdXBcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBlbnZpcm9ubWVudCBuYW1lXCIsIG5hbWVHcm91cCk7XG4gICAgfVxuXG4gICAgdmFyIGVudk5hbWUgPSBcIlwiO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lR3JvdXAuYm9keS5sZW5ndGg7ICsraSkge1xuICAgICAgZW52TmFtZSArPSBhc3NlcnROb2RlVHlwZShuYW1lR3JvdXAuYm9keVtpXSwgXCJ0ZXh0b3JkXCIpLnRleHQ7XG4gICAgfVxuXG4gICAgaWYgKGZ1bmNOYW1lID09PSBcIlxcXFxiZWdpblwiKSB7XG4gICAgICAvLyBiZWdpbi4uLmVuZCBpcyBzaW1pbGFyIHRvIGxlZnQuLi5yaWdodFxuICAgICAgaWYgKCFzcmNfZW52aXJvbm1lbnRzLmhhc093blByb3BlcnR5KGVudk5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk5vIHN1Y2ggZW52aXJvbm1lbnQ6IFwiICsgZW52TmFtZSwgbmFtZUdyb3VwKTtcbiAgICAgIH0gLy8gQnVpbGQgdGhlIGVudmlyb25tZW50IG9iamVjdC4gQXJndW1lbnRzIGFuZCBvdGhlciBpbmZvcm1hdGlvbiB3aWxsXG4gICAgICAvLyBiZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgYmVnaW4gYW5kIGVuZCBtZXRob2RzIHVzaW5nIHByb3BlcnRpZXMuXG5cblxuICAgICAgdmFyIGVudiA9IHNyY19lbnZpcm9ubWVudHNbZW52TmFtZV07XG5cbiAgICAgIHZhciBfcGFyc2VyJHBhcnNlQXJndW1lbnQgPSBwYXJzZXIucGFyc2VBcmd1bWVudHMoXCJcXFxcYmVnaW57XCIgKyBlbnZOYW1lICsgXCJ9XCIsIGVudiksXG4gICAgICAgICAgX2FyZ3MgPSBfcGFyc2VyJHBhcnNlQXJndW1lbnQuYXJncyxcbiAgICAgICAgICBvcHRBcmdzID0gX3BhcnNlciRwYXJzZUFyZ3VtZW50Lm9wdEFyZ3M7XG5cbiAgICAgIHZhciBjb250ZXh0ID0ge1xuICAgICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgICAgZW52TmFtZTogZW52TmFtZSxcbiAgICAgICAgcGFyc2VyOiBwYXJzZXJcbiAgICAgIH07XG4gICAgICB2YXIgcmVzdWx0ID0gZW52LmhhbmRsZXIoY29udGV4dCwgX2FyZ3MsIG9wdEFyZ3MpO1xuICAgICAgcGFyc2VyLmV4cGVjdChcIlxcXFxlbmRcIiwgZmFsc2UpO1xuICAgICAgdmFyIGVuZE5hbWVUb2tlbiA9IHBhcnNlci5uZXh0VG9rZW47XG4gICAgICB2YXIgZW5kID0gYXNzZXJ0Tm9kZVR5cGUocGFyc2VyLnBhcnNlRnVuY3Rpb24oKSwgXCJlbnZpcm9ubWVudFwiKTtcblxuICAgICAgaWYgKGVuZC5uYW1lICE9PSBlbnZOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk1pc21hdGNoOiBcXFxcYmVnaW57XCIgKyBlbnZOYW1lICsgXCJ9IG1hdGNoZWQgYnkgXFxcXGVuZHtcIiArIGVuZC5uYW1lICsgXCJ9XCIsIGVuZE5hbWVUb2tlbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZW52aXJvbm1lbnRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbmFtZTogZW52TmFtZSxcbiAgICAgIG5hbWVHcm91cDogbmFtZUdyb3VwXG4gICAgfTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvbWNsYXNzLmpzXG5cblxuXG5cblxuXG52YXIgbWNsYXNzX21ha2VTcGFuID0gYnVpbGRDb21tb24ubWFrZVNwYW47XG5cbmZ1bmN0aW9uIG1jbGFzc19odG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIHRydWUpO1xuICByZXR1cm4gbWNsYXNzX21ha2VTcGFuKFtncm91cC5tY2xhc3NdLCBlbGVtZW50cywgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIG1jbGFzc19tYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBub2RlO1xuICB2YXIgaW5uZXIgPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucyk7XG5cbiAgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtaW5uZXJcIikge1xuICAgIHJldHVybiBtYXRoTUxUcmVlLm5ld0RvY3VtZW50RnJhZ21lbnQoaW5uZXIpO1xuICB9IGVsc2UgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtb3JkXCIpIHtcbiAgICBpZiAoZ3JvdXAuaXNDaGFyYWN0ZXJCb3gpIHtcbiAgICAgIG5vZGUgPSBpbm5lclswXTtcbiAgICAgIG5vZGUudHlwZSA9IFwibWlcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWlcIiwgaW5uZXIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZ3JvdXAuaXNDaGFyYWN0ZXJCb3gpIHtcbiAgICAgIG5vZGUgPSBpbm5lclswXTtcbiAgICAgIG5vZGUudHlwZSA9IFwibW9cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgaW5uZXIpO1xuICAgIH0gLy8gU2V0IHNwYWNpbmcgYmFzZWQgb24gd2hhdCBpcyB0aGUgbW9zdCBsaWtlbHkgYWRqYWNlbnQgYXRvbSB0eXBlLlxuICAgIC8vIFNlZSBUZVhib29rIHAxNzAuXG5cblxuICAgIGlmIChncm91cC5tY2xhc3MgPT09IFwibWJpblwiKSB7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMubHNwYWNlID0gXCIwLjIyZW1cIjsgLy8gbWVkaXVtIHNwYWNlXG5cbiAgICAgIG5vZGUuYXR0cmlidXRlcy5yc3BhY2UgPSBcIjAuMjJlbVwiO1xuICAgIH0gZWxzZSBpZiAoZ3JvdXAubWNsYXNzID09PSBcIm1wdW5jdFwiKSB7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMubHNwYWNlID0gXCIwZW1cIjtcbiAgICAgIG5vZGUuYXR0cmlidXRlcy5yc3BhY2UgPSBcIjAuMTdlbVwiOyAvLyB0aGluc3BhY2VcbiAgICB9IGVsc2UgaWYgKGdyb3VwLm1jbGFzcyA9PT0gXCJtb3BlblwiIHx8IGdyb3VwLm1jbGFzcyA9PT0gXCJtY2xvc2VcIikge1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzLmxzcGFjZSA9IFwiMGVtXCI7XG4gICAgICBub2RlLmF0dHJpYnV0ZXMucnNwYWNlID0gXCIwZW1cIjtcbiAgICB9IC8vIE1hdGhNTCA8bW8+IGRlZmF1bHQgc3BhY2UgaXMgNS8xOCBlbSwgc28gPG1yZWw+IG5lZWRzIG5vIGFjdGlvbi5cbiAgICAvLyBSZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL01hdGhNTC9FbGVtZW50L21vXG5cbiAgfVxuXG4gIHJldHVybiBub2RlO1xufSAvLyBNYXRoIGNsYXNzIGNvbW1hbmRzIGV4Y2VwdCBcXG1hdGhvcFxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJtY2xhc3NcIixcbiAgbmFtZXM6IFtcIlxcXFxtYXRob3JkXCIsIFwiXFxcXG1hdGhiaW5cIiwgXCJcXFxcbWF0aHJlbFwiLCBcIlxcXFxtYXRob3BlblwiLCBcIlxcXFxtYXRoY2xvc2VcIiwgXCJcXFxcbWF0aHB1bmN0XCIsIFwiXFxcXG1hdGhpbm5lclwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJtY2xhc3NcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbWNsYXNzOiBcIm1cIiArIGZ1bmNOYW1lLnN1YnN0cig1KSxcbiAgICAgIC8vIFRPRE8oa2V2aW5iKTogZG9uJ3QgcHJlZml4IHdpdGggJ20nXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiB1dGlscy5pc0NoYXJhY3RlckJveChib2R5KVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBtY2xhc3NfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG1jbGFzc19tYXRobWxCdWlsZGVyXG59KTtcbnZhciBiaW5yZWxDbGFzcyA9IGZ1bmN0aW9uIGJpbnJlbENsYXNzKGFyZykge1xuICAvLyBcXGJpbnJlbEAgc3BhY2luZyB2YXJpZXMgd2l0aCAoYmlufHJlbHxvcmQpIG9mIHRoZSBhdG9tIGluIHRoZSBhcmd1bWVudC5cbiAgLy8gKGJ5IHJlbmRlcmluZyBzZXBhcmF0ZWx5IGFuZCB3aXRoIHt9cyBiZWZvcmUgYW5kIGFmdGVyLCBhbmQgbWVhc3VyaW5nXG4gIC8vIHRoZSBjaGFuZ2UgaW4gc3BhY2luZykuICBXZSdsbCBkbyByb3VnaGx5IHRoZSBzYW1lIGJ5IGRldGVjdGluZyB0aGVcbiAgLy8gYXRvbSB0eXBlIGRpcmVjdGx5LlxuICB2YXIgYXRvbSA9IGFyZy50eXBlID09PSBcIm9yZGdyb3VwXCIgJiYgYXJnLmJvZHkubGVuZ3RoID8gYXJnLmJvZHlbMF0gOiBhcmc7XG5cbiAgaWYgKGF0b20udHlwZSA9PT0gXCJhdG9tXCIgJiYgKGF0b20uZmFtaWx5ID09PSBcImJpblwiIHx8IGF0b20uZmFtaWx5ID09PSBcInJlbFwiKSkge1xuICAgIHJldHVybiBcIm1cIiArIGF0b20uZmFtaWx5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBcIm1vcmRcIjtcbiAgfVxufTsgLy8gXFxAYmlucmVse3h9e3l9IHJlbmRlcnMgbGlrZSB5IGJ1dCBhcyBtYmluL21yZWwvbW9yZCBpZiB4IGlzIG1iaW4vbXJlbC9tb3JkLlxuLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvIFxcYmlucmVsQHt4fVxcYmlucmVsQEB7eX0gaW4gQU1TVGVYLlxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWNsYXNzXCIsXG4gIG5hbWVzOiBbXCJcXFxcQGJpbnJlbFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBtY2xhc3M6IGJpbnJlbENsYXNzKGFyZ3NbMF0pLFxuICAgICAgYm9keTogW2FyZ3NbMV1dLFxuICAgICAgaXNDaGFyYWN0ZXJCb3g6IHV0aWxzLmlzQ2hhcmFjdGVyQm94KGFyZ3NbMV0pXG4gICAgfTtcbiAgfVxufSk7IC8vIEJ1aWxkIGEgcmVsYXRpb24gb3Igc3RhY2tlZCBvcCBieSBwbGFjaW5nIG9uZSBzeW1ib2wgb24gdG9wIG9mIGFub3RoZXJcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1jbGFzc1wiLFxuICBuYW1lczogW1wiXFxcXHN0YWNrcmVsXCIsIFwiXFxcXG92ZXJzZXRcIiwgXCJcXFxcdW5kZXJzZXRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYzLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYzLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMy5mdW5jTmFtZTtcbiAgICB2YXIgYmFzZUFyZyA9IGFyZ3NbMV07XG4gICAgdmFyIHNoaWZ0ZWRBcmcgPSBhcmdzWzBdO1xuICAgIHZhciBtY2xhc3M7XG5cbiAgICBpZiAoZnVuY05hbWUgIT09IFwiXFxcXHN0YWNrcmVsXCIpIHtcbiAgICAgIC8vIExhVGVYIGFwcGxpZXMgXFxiaW5yZWwgc3BhY2luZyB0byBcXG92ZXJzZXQgYW5kIFxcdW5kZXJzZXQuXG4gICAgICBtY2xhc3MgPSBiaW5yZWxDbGFzcyhiYXNlQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWNsYXNzID0gXCJtcmVsXCI7IC8vIGZvciBcXHN0YWNrcmVsXG4gICAgfVxuXG4gICAgdmFyIGJhc2VPcCA9IHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IGJhc2VBcmcubW9kZSxcbiAgICAgIGxpbWl0czogdHJ1ZSxcbiAgICAgIGFsd2F5c0hhbmRsZVN1cFN1YjogdHJ1ZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogZmFsc2UsXG4gICAgICBzdXBwcmVzc0Jhc2VTaGlmdDogZnVuY05hbWUgIT09IFwiXFxcXHN0YWNrcmVsXCIsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChiYXNlQXJnKVxuICAgIH07XG4gICAgdmFyIHN1cHN1YiA9IHtcbiAgICAgIHR5cGU6IFwic3Vwc3ViXCIsXG4gICAgICBtb2RlOiBzaGlmdGVkQXJnLm1vZGUsXG4gICAgICBiYXNlOiBiYXNlT3AsXG4gICAgICBzdXA6IGZ1bmNOYW1lID09PSBcIlxcXFx1bmRlcnNldFwiID8gbnVsbCA6IHNoaWZ0ZWRBcmcsXG4gICAgICBzdWI6IGZ1bmNOYW1lID09PSBcIlxcXFx1bmRlcnNldFwiID8gc2hpZnRlZEFyZyA6IG51bGxcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm1jbGFzc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBtY2xhc3M6IG1jbGFzcyxcbiAgICAgIGJvZHk6IFtzdXBzdWJdLFxuICAgICAgaXNDaGFyYWN0ZXJCb3g6IHV0aWxzLmlzQ2hhcmFjdGVyQm94KHN1cHN1YilcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogbWNsYXNzX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBtY2xhc3NfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZm9udC5qc1xuLy8gVE9ETyhrZXZpbmIpOiBpbXBsZW1lbnQgXFxcXHNsIGFuZCBcXFxcc2NcblxuXG5cblxuXG5cbnZhciBmb250X2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGZvbnQgPSBncm91cC5mb250O1xuICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMud2l0aEZvbnQoZm9udCk7XG4gIHJldHVybiBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbn07XG5cbnZhciBmb250X21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBmb250ID0gZ3JvdXAuZm9udDtcbiAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLndpdGhGb250KGZvbnQpO1xuICByZXR1cm4gYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbn07XG5cbnZhciBmb250QWxpYXNlcyA9IHtcbiAgXCJcXFxcQmJiXCI6IFwiXFxcXG1hdGhiYlwiLFxuICBcIlxcXFxib2xkXCI6IFwiXFxcXG1hdGhiZlwiLFxuICBcIlxcXFxmcmFrXCI6IFwiXFxcXG1hdGhmcmFrXCIsXG4gIFwiXFxcXGJtXCI6IFwiXFxcXGJvbGRzeW1ib2xcIlxufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJmb250XCIsXG4gIG5hbWVzOiBbLy8gc3R5bGVzLCBleGNlcHQgXFxib2xkc3ltYm9sIGRlZmluZWQgYmVsb3dcbiAgXCJcXFxcbWF0aHJtXCIsIFwiXFxcXG1hdGhpdFwiLCBcIlxcXFxtYXRoYmZcIiwgXCJcXFxcbWF0aG5vcm1hbFwiLCAvLyBmYW1pbGllc1xuICBcIlxcXFxtYXRoYmJcIiwgXCJcXFxcbWF0aGNhbFwiLCBcIlxcXFxtYXRoZnJha1wiLCBcIlxcXFxtYXRoc2NyXCIsIFwiXFxcXG1hdGhzZlwiLCBcIlxcXFxtYXRodHRcIiwgLy8gYWxpYXNlcywgZXhjZXB0IFxcYm0gZGVmaW5lZCBiZWxvd1xuICBcIlxcXFxCYmJcIiwgXCJcXFxcYm9sZFwiLCBcIlxcXFxmcmFrXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDEsXG4gICAgZ3JlZWRpbmVzczogMlxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZi5mdW5jTmFtZTtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgdmFyIGZ1bmMgPSBmdW5jTmFtZTtcblxuICAgIGlmIChmdW5jIGluIGZvbnRBbGlhc2VzKSB7XG4gICAgICBmdW5jID0gZm9udEFsaWFzZXNbZnVuY107XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZm9udFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBmb250OiBmdW5jLnNsaWNlKDEpLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmb250X2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBmb250X21hdGhtbEJ1aWxkZXJcbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm1jbGFzc1wiLFxuICBuYW1lczogW1wiXFxcXGJvbGRzeW1ib2xcIiwgXCJcXFxcYm1cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBncmVlZGluZXNzOiAyXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJCb3ggPSB1dGlscy5pc0NoYXJhY3RlckJveChib2R5KTsgLy8gYW1zYnN5LnN0eSdzIFxcYm9sZHN5bWJvbCB1c2VzIFxcYmlucmVsIHNwYWNpbmcgdG8gaW5oZXJpdCB0aGVcbiAgICAvLyBhcmd1bWVudCdzIGJpbnxyZWx8b3JkIHN0YXR1c1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWNsYXNzXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIG1jbGFzczogYmlucmVsQ2xhc3MoYm9keSksXG4gICAgICBib2R5OiBbe1xuICAgICAgICB0eXBlOiBcImZvbnRcIixcbiAgICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAgIGZvbnQ6IFwiYm9sZHN5bWJvbFwiLFxuICAgICAgICBib2R5OiBib2R5XG4gICAgICB9XSxcbiAgICAgIGlzQ2hhcmFjdGVyQm94OiBpc0NoYXJhY3RlckJveFxuICAgIH07XG4gIH1cbn0pOyAvLyBPbGQgZm9udCBjaGFuZ2luZyBmdW5jdGlvbnNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImZvbnRcIixcbiAgbmFtZXM6IFtcIlxcXFxybVwiLCBcIlxcXFxzZlwiLCBcIlxcXFx0dFwiLCBcIlxcXFxiZlwiLCBcIlxcXFxpdFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXIsXG4gICAgICAgIGZ1bmNOYW1lID0gX3JlZjMuZnVuY05hbWUsXG4gICAgICAgIGJyZWFrT25Ub2tlblRleHQgPSBfcmVmMy5icmVha09uVG9rZW5UZXh0O1xuICAgIHZhciBtb2RlID0gcGFyc2VyLm1vZGU7XG4gICAgdmFyIGJvZHkgPSBwYXJzZXIucGFyc2VFeHByZXNzaW9uKHRydWUsIGJyZWFrT25Ub2tlblRleHQpO1xuICAgIHZhciBzdHlsZSA9IFwibWF0aFwiICsgZnVuY05hbWUuc2xpY2UoMSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZm9udFwiLFxuICAgICAgbW9kZTogbW9kZSxcbiAgICAgIGZvbnQ6IHN0eWxlLFxuICAgICAgYm9keToge1xuICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgICBib2R5OiBib2R5XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZvbnRfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGZvbnRfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvZ2VuZnJhYy5qc1xuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBnZW5mcmFjX2FkanVzdFN0eWxlID0gZnVuY3Rpb24gYWRqdXN0U3R5bGUoc2l6ZSwgb3JpZ2luYWxTdHlsZSkge1xuICAvLyBGaWd1cmUgb3V0IHdoYXQgc3R5bGUgdGhpcyBmcmFjdGlvbiBzaG91bGQgYmUgaW4gYmFzZWQgb24gdGhlXG4gIC8vIGZ1bmN0aW9uIHVzZWRcbiAgdmFyIHN0eWxlID0gb3JpZ2luYWxTdHlsZTtcblxuICBpZiAoc2l6ZSA9PT0gXCJkaXNwbGF5XCIpIHtcbiAgICAvLyBHZXQgZGlzcGxheSBzdHlsZSBhcyBhIGRlZmF1bHQuXG4gICAgLy8gSWYgaW5jb21pbmcgc3R5bGUgaXMgc3ViL3N1cCwgdXNlIHN0eWxlLnRleHQoKSB0byBnZXQgY29ycmVjdCBzaXplLlxuICAgIHN0eWxlID0gc3R5bGUuaWQgPj0gc3JjX1N0eWxlLlNDUklQVC5pZCA/IHN0eWxlLnRleHQoKSA6IHNyY19TdHlsZS5ESVNQTEFZO1xuICB9IGVsc2UgaWYgKHNpemUgPT09IFwidGV4dFwiICYmIHN0eWxlLnNpemUgPT09IHNyY19TdHlsZS5ESVNQTEFZLnNpemUpIHtcbiAgICAvLyBXZSdyZSBpbiBhIFxcdGZyYWMgYnV0IGluY29taW5nIHN0eWxlIGlzIGRpc3BsYXlzdHlsZSwgc286XG4gICAgc3R5bGUgPSBzcmNfU3R5bGUuVEVYVDtcbiAgfSBlbHNlIGlmIChzaXplID09PSBcInNjcmlwdFwiKSB7XG4gICAgc3R5bGUgPSBzcmNfU3R5bGUuU0NSSVBUO1xuICB9IGVsc2UgaWYgKHNpemUgPT09IFwic2NyaXB0c2NyaXB0XCIpIHtcbiAgICBzdHlsZSA9IHNyY19TdHlsZS5TQ1JJUFRTQ1JJUFQ7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG52YXIgZ2VuZnJhY19odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIC8vIEZyYWN0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBvbiBwYWdlcyA0NDQtNDQ1LCBydWxlcyAxNShhLWUpLlxuICB2YXIgc3R5bGUgPSBnZW5mcmFjX2FkanVzdFN0eWxlKGdyb3VwLnNpemUsIG9wdGlvbnMuc3R5bGUpO1xuICB2YXIgbnN0eWxlID0gc3R5bGUuZnJhY051bSgpO1xuICB2YXIgZHN0eWxlID0gc3R5bGUuZnJhY0RlbigpO1xuICB2YXIgbmV3T3B0aW9ucztcbiAgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUobnN0eWxlKTtcbiAgdmFyIG51bWVybSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLm51bWVyLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcblxuICBpZiAoZ3JvdXAuY29udGludWVkKSB7XG4gICAgLy8gXFxjZnJhYyBpbnNlcnRzIGEgXFxzdHJ1dCBpbnRvIHRoZSBudW1lcmF0b3IuXG4gICAgLy8gR2V0IFxcc3RydXQgZGltZW5zaW9ucyBmcm9tIFRlWGJvb2sgcGFnZSAzNTMuXG4gICAgdmFyIGhTdHJ1dCA9IDguNSAvIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5wdFBlckVtO1xuICAgIHZhciBkU3RydXQgPSAzLjUgLyBvcHRpb25zLmZvbnRNZXRyaWNzKCkucHRQZXJFbTtcbiAgICBudW1lcm0uaGVpZ2h0ID0gbnVtZXJtLmhlaWdodCA8IGhTdHJ1dCA/IGhTdHJ1dCA6IG51bWVybS5oZWlnaHQ7XG4gICAgbnVtZXJtLmRlcHRoID0gbnVtZXJtLmRlcHRoIDwgZFN0cnV0ID8gZFN0cnV0IDogbnVtZXJtLmRlcHRoO1xuICB9XG5cbiAgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUoZHN0eWxlKTtcbiAgdmFyIGRlbm9tbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmRlbm9tLCBuZXdPcHRpb25zLCBvcHRpb25zKTtcbiAgdmFyIHJ1bGU7XG4gIHZhciBydWxlV2lkdGg7XG4gIHZhciBydWxlU3BhY2luZztcblxuICBpZiAoZ3JvdXAuaGFzQmFyTGluZSkge1xuICAgIGlmIChncm91cC5iYXJTaXplKSB7XG4gICAgICBydWxlV2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmJhclNpemUsIG9wdGlvbnMpO1xuICAgICAgcnVsZSA9IGJ1aWxkQ29tbW9uLm1ha2VMaW5lU3BhbihcImZyYWMtbGluZVwiLCBvcHRpb25zLCBydWxlV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBydWxlID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwiZnJhYy1saW5lXCIsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJ1bGVXaWR0aCA9IHJ1bGUuaGVpZ2h0O1xuICAgIHJ1bGVTcGFjaW5nID0gcnVsZS5oZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgcnVsZSA9IG51bGw7XG4gICAgcnVsZVdpZHRoID0gMDtcbiAgICBydWxlU3BhY2luZyA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWZhdWx0UnVsZVRoaWNrbmVzcztcbiAgfSAvLyBSdWxlIDE1YlxuXG5cbiAgdmFyIG51bVNoaWZ0O1xuICB2YXIgY2xlYXJhbmNlO1xuICB2YXIgZGVub21TaGlmdDtcblxuICBpZiAoc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSB8fCBncm91cC5zaXplID09PSBcImRpc3BsYXlcIikge1xuICAgIG51bVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLm51bTE7XG5cbiAgICBpZiAocnVsZVdpZHRoID4gMCkge1xuICAgICAgY2xlYXJhbmNlID0gMyAqIHJ1bGVTcGFjaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhcmFuY2UgPSA3ICogcnVsZVNwYWNpbmc7XG4gICAgfVxuXG4gICAgZGVub21TaGlmdCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZW5vbTE7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJ1bGVXaWR0aCA+IDApIHtcbiAgICAgIG51bVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLm51bTI7XG4gICAgICBjbGVhcmFuY2UgPSBydWxlU3BhY2luZztcbiAgICB9IGVsc2Uge1xuICAgICAgbnVtU2hpZnQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkubnVtMztcbiAgICAgIGNsZWFyYW5jZSA9IDMgKiBydWxlU3BhY2luZztcbiAgICB9XG5cbiAgICBkZW5vbVNoaWZ0ID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlbm9tMjtcbiAgfVxuXG4gIHZhciBmcmFjO1xuXG4gIGlmICghcnVsZSkge1xuICAgIC8vIFJ1bGUgMTVjXG4gICAgdmFyIGNhbmRpZGF0ZUNsZWFyYW5jZSA9IG51bVNoaWZ0IC0gbnVtZXJtLmRlcHRoIC0gKGRlbm9tbS5oZWlnaHQgLSBkZW5vbVNoaWZ0KTtcblxuICAgIGlmIChjYW5kaWRhdGVDbGVhcmFuY2UgPCBjbGVhcmFuY2UpIHtcbiAgICAgIG51bVNoaWZ0ICs9IDAuNSAqIChjbGVhcmFuY2UgLSBjYW5kaWRhdGVDbGVhcmFuY2UpO1xuICAgICAgZGVub21TaGlmdCArPSAwLjUgKiAoY2xlYXJhbmNlIC0gY2FuZGlkYXRlQ2xlYXJhbmNlKTtcbiAgICB9XG5cbiAgICBmcmFjID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogZGVub21tLFxuICAgICAgICBzaGlmdDogZGVub21TaGlmdFxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogbnVtZXJtLFxuICAgICAgICBzaGlmdDogLW51bVNoaWZ0XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJ1bGUgMTVkXG4gICAgdmFyIGF4aXNIZWlnaHQgPSBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYXhpc0hlaWdodDtcblxuICAgIGlmIChudW1TaGlmdCAtIG51bWVybS5kZXB0aCAtIChheGlzSGVpZ2h0ICsgMC41ICogcnVsZVdpZHRoKSA8IGNsZWFyYW5jZSkge1xuICAgICAgbnVtU2hpZnQgKz0gY2xlYXJhbmNlIC0gKG51bVNoaWZ0IC0gbnVtZXJtLmRlcHRoIC0gKGF4aXNIZWlnaHQgKyAwLjUgKiBydWxlV2lkdGgpKTtcbiAgICB9XG5cbiAgICBpZiAoYXhpc0hlaWdodCAtIDAuNSAqIHJ1bGVXaWR0aCAtIChkZW5vbW0uaGVpZ2h0IC0gZGVub21TaGlmdCkgPCBjbGVhcmFuY2UpIHtcbiAgICAgIGRlbm9tU2hpZnQgKz0gY2xlYXJhbmNlIC0gKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGggLSAoZGVub21tLmhlaWdodCAtIGRlbm9tU2hpZnQpKTtcbiAgICB9XG5cbiAgICB2YXIgbWlkU2hpZnQgPSAtKGF4aXNIZWlnaHQgLSAwLjUgKiBydWxlV2lkdGgpO1xuICAgIGZyYWMgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImluZGl2aWR1YWxTaGlmdFwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBkZW5vbW0sXG4gICAgICAgIHNoaWZ0OiBkZW5vbVNoaWZ0XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBydWxlLFxuICAgICAgICBzaGlmdDogbWlkU2hpZnRcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG51bWVybSxcbiAgICAgICAgc2hpZnQ6IC1udW1TaGlmdFxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSAvLyBTaW5jZSB3ZSBtYW51YWxseSBjaGFuZ2UgdGhlIHN0eWxlIHNvbWV0aW1lcyAod2l0aCBcXGRmcmFjIG9yIFxcdGZyYWMpLFxuICAvLyBhY2NvdW50IGZvciB0aGUgcG9zc2libGUgc2l6ZSBjaGFuZ2UgaGVyZS5cblxuXG4gIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlKTtcbiAgZnJhYy5oZWlnaHQgKj0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gIGZyYWMuZGVwdGggKj0gbmV3T3B0aW9ucy5zaXplTXVsdGlwbGllciAvIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIFJ1bGUgMTVlXG5cbiAgdmFyIGRlbGltU2l6ZTtcblxuICBpZiAoc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSkge1xuICAgIGRlbGltU2l6ZSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5kZWxpbTE7XG4gIH0gZWxzZSB7XG4gICAgZGVsaW1TaXplID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlbGltMjtcbiAgfVxuXG4gIHZhciBsZWZ0RGVsaW07XG4gIHZhciByaWdodERlbGltO1xuXG4gIGlmIChncm91cC5sZWZ0RGVsaW0gPT0gbnVsbCkge1xuICAgIGxlZnREZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtcIm1vcGVuXCJdKTtcbiAgfSBlbHNlIHtcbiAgICBsZWZ0RGVsaW0gPSBkZWxpbWl0ZXIuY3VzdG9tU2l6ZWREZWxpbShncm91cC5sZWZ0RGVsaW0sIGRlbGltU2l6ZSwgdHJ1ZSwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSksIGdyb3VwLm1vZGUsIFtcIm1vcGVuXCJdKTtcbiAgfVxuXG4gIGlmIChncm91cC5jb250aW51ZWQpIHtcbiAgICByaWdodERlbGltID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10pOyAvLyB6ZXJvIHdpZHRoIGZvciBcXGNmcmFjXG4gIH0gZWxzZSBpZiAoZ3JvdXAucmlnaHREZWxpbSA9PSBudWxsKSB7XG4gICAgcmlnaHREZWxpbSA9IG1ha2VOdWxsRGVsaW1pdGVyKG9wdGlvbnMsIFtcIm1jbG9zZVwiXSk7XG4gIH0gZWxzZSB7XG4gICAgcmlnaHREZWxpbSA9IGRlbGltaXRlci5jdXN0b21TaXplZERlbGltKGdyb3VwLnJpZ2h0RGVsaW0sIGRlbGltU2l6ZSwgdHJ1ZSwgb3B0aW9ucy5oYXZpbmdTdHlsZShzdHlsZSksIGdyb3VwLm1vZGUsIFtcIm1jbG9zZVwiXSk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXS5jb25jYXQobmV3T3B0aW9ucy5zaXppbmdDbGFzc2VzKG9wdGlvbnMpKSwgW2xlZnREZWxpbSwgYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibWZyYWNcIl0sIFtmcmFjXSksIHJpZ2h0RGVsaW1dLCBvcHRpb25zKTtcbn07XG5cbnZhciBnZW5mcmFjX21hdGhtbEJ1aWxkZXIgPSBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtZnJhY1wiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5udW1lciwgb3B0aW9ucyksIGJ1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuZGVub20sIG9wdGlvbnMpXSk7XG5cbiAgaWYgKCFncm91cC5oYXNCYXJMaW5lKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJsaW5ldGhpY2tuZXNzXCIsIFwiMHB4XCIpO1xuICB9IGVsc2UgaWYgKGdyb3VwLmJhclNpemUpIHtcbiAgICB2YXIgcnVsZVdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5iYXJTaXplLCBvcHRpb25zKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImxpbmV0aGlja25lc3NcIiwgcnVsZVdpZHRoICsgXCJlbVwiKTtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IGdlbmZyYWNfYWRqdXN0U3R5bGUoZ3JvdXAuc2l6ZSwgb3B0aW9ucy5zdHlsZSk7XG5cbiAgaWYgKHN0eWxlLnNpemUgIT09IG9wdGlvbnMuc3R5bGUuc2l6ZSkge1xuICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zdHlsZVwiLCBbbm9kZV0pO1xuICAgIHZhciBpc0Rpc3BsYXkgPSBzdHlsZS5zaXplID09PSBzcmNfU3R5bGUuRElTUExBWS5zaXplID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkaXNwbGF5c3R5bGVcIiwgaXNEaXNwbGF5KTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcInNjcmlwdGxldmVsXCIsIFwiMFwiKTtcbiAgfVxuXG4gIGlmIChncm91cC5sZWZ0RGVsaW0gIT0gbnVsbCB8fCBncm91cC5yaWdodERlbGltICE9IG51bGwpIHtcbiAgICB2YXIgd2l0aERlbGltcyA9IFtdO1xuXG4gICAgaWYgKGdyb3VwLmxlZnREZWxpbSAhPSBudWxsKSB7XG4gICAgICB2YXIgbGVmdE9wID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoZ3JvdXAubGVmdERlbGltLnJlcGxhY2UoXCJcXFxcXCIsIFwiXCIpKV0pO1xuICAgICAgbGVmdE9wLnNldEF0dHJpYnV0ZShcImZlbmNlXCIsIFwidHJ1ZVwiKTtcbiAgICAgIHdpdGhEZWxpbXMucHVzaChsZWZ0T3ApO1xuICAgIH1cblxuICAgIHdpdGhEZWxpbXMucHVzaChub2RlKTtcblxuICAgIGlmIChncm91cC5yaWdodERlbGltICE9IG51bGwpIHtcbiAgICAgIHZhciByaWdodE9wID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoZ3JvdXAucmlnaHREZWxpbS5yZXBsYWNlKFwiXFxcXFwiLCBcIlwiKSldKTtcbiAgICAgIHJpZ2h0T3Auc2V0QXR0cmlidXRlKFwiZmVuY2VcIiwgXCJ0cnVlXCIpO1xuICAgICAgd2l0aERlbGltcy5wdXNoKHJpZ2h0T3ApO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZE1hdGhNTF9tYWtlUm93KHdpdGhEZWxpbXMpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICBuYW1lczogW1wiXFxcXGNmcmFjXCIsIFwiXFxcXGRmcmFjXCIsIFwiXFxcXGZyYWNcIiwgXCJcXFxcdGZyYWNcIiwgXCJcXFxcZGJpbm9tXCIsIFwiXFxcXGJpbm9tXCIsIFwiXFxcXHRiaW5vbVwiLCBcIlxcXFxcXFxcYXRvcGZyYWNcIiwgLy8gY2Fu4oCZdCBiZSBlbnRlcmVkIGRpcmVjdGx5XG4gIFwiXFxcXFxcXFxicmFjZWZyYWNcIiwgXCJcXFxcXFxcXGJyYWNrZnJhY1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGdyZWVkaW5lc3M6IDJcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIG51bWVyID0gYXJnc1swXTtcbiAgICB2YXIgZGVub20gPSBhcmdzWzFdO1xuICAgIHZhciBoYXNCYXJMaW5lO1xuICAgIHZhciBsZWZ0RGVsaW0gPSBudWxsO1xuICAgIHZhciByaWdodERlbGltID0gbnVsbDtcbiAgICB2YXIgc2l6ZSA9IFwiYXV0b1wiO1xuXG4gICAgc3dpdGNoIChmdW5jTmFtZSkge1xuICAgICAgY2FzZSBcIlxcXFxjZnJhY1wiOlxuICAgICAgY2FzZSBcIlxcXFxkZnJhY1wiOlxuICAgICAgY2FzZSBcIlxcXFxmcmFjXCI6XG4gICAgICBjYXNlIFwiXFxcXHRmcmFjXCI6XG4gICAgICAgIGhhc0JhckxpbmUgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxcXFxcYXRvcGZyYWNcIjpcbiAgICAgICAgaGFzQmFyTGluZSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcIlxcXFxkYmlub21cIjpcbiAgICAgIGNhc2UgXCJcXFxcYmlub21cIjpcbiAgICAgIGNhc2UgXCJcXFxcdGJpbm9tXCI6XG4gICAgICAgIGhhc0JhckxpbmUgPSBmYWxzZTtcbiAgICAgICAgbGVmdERlbGltID0gXCIoXCI7XG4gICAgICAgIHJpZ2h0RGVsaW0gPSBcIilcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcXFxcXGJyYWNlZnJhY1wiOlxuICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgIGxlZnREZWxpbSA9IFwiXFxcXHtcIjtcbiAgICAgICAgcmlnaHREZWxpbSA9IFwiXFxcXH1cIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcXFxcXGJyYWNrZnJhY1wiOlxuICAgICAgICBoYXNCYXJMaW5lID0gZmFsc2U7XG4gICAgICAgIGxlZnREZWxpbSA9IFwiW1wiO1xuICAgICAgICByaWdodERlbGltID0gXCJdXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgZ2VuZnJhYyBjb21tYW5kXCIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZnVuY05hbWUpIHtcbiAgICAgIGNhc2UgXCJcXFxcY2ZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZGZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcZGJpbm9tXCI6XG4gICAgICAgIHNpemUgPSBcImRpc3BsYXlcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcdGZyYWNcIjpcbiAgICAgIGNhc2UgXCJcXFxcdGJpbm9tXCI6XG4gICAgICAgIHNpemUgPSBcInRleHRcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBjb250aW51ZWQ6IGZ1bmNOYW1lID09PSBcIlxcXFxjZnJhY1wiLFxuICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgZGVub206IGRlbm9tLFxuICAgICAgaGFzQmFyTGluZTogaGFzQmFyTGluZSxcbiAgICAgIGxlZnREZWxpbTogbGVmdERlbGltLFxuICAgICAgcmlnaHREZWxpbTogcmlnaHREZWxpbSxcbiAgICAgIHNpemU6IHNpemUsXG4gICAgICBiYXJTaXplOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGdlbmZyYWNfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGdlbmZyYWNfbWF0aG1sQnVpbGRlclxufSk7IC8vIEluZml4IGdlbmVyYWxpemVkIGZyYWN0aW9ucyAtLSB0aGVzZSBhcmUgbm90IHJlbmRlcmVkIGRpcmVjdGx5LCBidXQgcmVwbGFjZWRcbi8vIGltbWVkaWF0ZWx5IGJ5IG9uZSBvZiB0aGUgdmFyaWFudHMgYWJvdmUuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJpbmZpeFwiLFxuICBuYW1lczogW1wiXFxcXG92ZXJcIiwgXCJcXFxcY2hvb3NlXCIsIFwiXFxcXGF0b3BcIiwgXCJcXFxcYnJhY2VcIiwgXCJcXFxcYnJhY2tcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMCxcbiAgICBpbmZpeDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYyKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYyLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMi5mdW5jTmFtZSxcbiAgICAgICAgdG9rZW4gPSBfcmVmMi50b2tlbjtcbiAgICB2YXIgcmVwbGFjZVdpdGg7XG5cbiAgICBzd2l0Y2ggKGZ1bmNOYW1lKSB7XG4gICAgICBjYXNlIFwiXFxcXG92ZXJcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxmcmFjXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGNob29zZVwiOlxuICAgICAgICByZXBsYWNlV2l0aCA9IFwiXFxcXGJpbm9tXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGF0b3BcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxcXFxcYXRvcGZyYWNcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJcXFxcYnJhY2VcIjpcbiAgICAgICAgcmVwbGFjZVdpdGggPSBcIlxcXFxcXFxcYnJhY2VmcmFjXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiXFxcXGJyYWNrXCI6XG4gICAgICAgIHJlcGxhY2VXaXRoID0gXCJcXFxcXFxcXGJyYWNrZnJhY1wiO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGluZml4IGdlbmZyYWMgY29tbWFuZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbmZpeFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICByZXBsYWNlV2l0aDogcmVwbGFjZVdpdGgsXG4gICAgICB0b2tlbjogdG9rZW5cbiAgICB9O1xuICB9XG59KTtcbnZhciBzdHlsQXJyYXkgPSBbXCJkaXNwbGF5XCIsIFwidGV4dFwiLCBcInNjcmlwdFwiLCBcInNjcmlwdHNjcmlwdFwiXTtcblxudmFyIGRlbGltRnJvbVZhbHVlID0gZnVuY3Rpb24gZGVsaW1Gcm9tVmFsdWUoZGVsaW1TdHJpbmcpIHtcbiAgdmFyIGRlbGltID0gbnVsbDtcblxuICBpZiAoZGVsaW1TdHJpbmcubGVuZ3RoID4gMCkge1xuICAgIGRlbGltID0gZGVsaW1TdHJpbmc7XG4gICAgZGVsaW0gPSBkZWxpbSA9PT0gXCIuXCIgPyBudWxsIDogZGVsaW07XG4gIH1cblxuICByZXR1cm4gZGVsaW07XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICBuYW1lczogW1wiXFxcXGdlbmZyYWNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogNixcbiAgICBncmVlZGluZXNzOiA2LFxuICAgIGFyZ1R5cGVzOiBbXCJtYXRoXCIsIFwibWF0aFwiLCBcInNpemVcIiwgXCJ0ZXh0XCIsIFwibWF0aFwiLCBcIm1hdGhcIl1cbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXI7XG4gICAgdmFyIG51bWVyID0gYXJnc1s0XTtcbiAgICB2YXIgZGVub20gPSBhcmdzWzVdOyAvLyBMb29rIGludG8gdGhlIHBhcnNlIG5vZGVzIHRvIGdldCB0aGUgZGVzaXJlZCBkZWxpbWl0ZXJzLlxuXG4gICAgdmFyIGxlZnROb2RlID0gY2hlY2tOb2RlVHlwZShhcmdzWzBdLCBcImF0b21cIik7XG5cbiAgICBpZiAobGVmdE5vZGUpIHtcbiAgICAgIGxlZnROb2RlID0gYXNzZXJ0QXRvbUZhbWlseShhcmdzWzBdLCBcIm9wZW5cIik7XG4gICAgfVxuXG4gICAgdmFyIGxlZnREZWxpbSA9IGxlZnROb2RlID8gZGVsaW1Gcm9tVmFsdWUobGVmdE5vZGUudGV4dCkgOiBudWxsO1xuICAgIHZhciByaWdodE5vZGUgPSBjaGVja05vZGVUeXBlKGFyZ3NbMV0sIFwiYXRvbVwiKTtcblxuICAgIGlmIChyaWdodE5vZGUpIHtcbiAgICAgIHJpZ2h0Tm9kZSA9IGFzc2VydEF0b21GYW1pbHkoYXJnc1sxXSwgXCJjbG9zZVwiKTtcbiAgICB9XG5cbiAgICB2YXIgcmlnaHREZWxpbSA9IHJpZ2h0Tm9kZSA/IGRlbGltRnJvbVZhbHVlKHJpZ2h0Tm9kZS50ZXh0KSA6IG51bGw7XG4gICAgdmFyIGJhck5vZGUgPSBhc3NlcnROb2RlVHlwZShhcmdzWzJdLCBcInNpemVcIik7XG4gICAgdmFyIGhhc0JhckxpbmU7XG4gICAgdmFyIGJhclNpemUgPSBudWxsO1xuXG4gICAgaWYgKGJhck5vZGUuaXNCbGFuaykge1xuICAgICAgLy8gXFxnZW5mcmFjIGFjdHMgZGlmZmVyZW50bHkgdGhhbiBcXGFib3ZlLlxuICAgICAgLy8gXFxnZW5mcmFjIHRyZWF0cyBhbiBlbXB0eSBzaXplIGdyb3VwIGFzIGEgc2lnbmFsIHRvIHVzZSBhXG4gICAgICAvLyBzdGFuZGFyZCBiYXIgc2l6ZS4gXFxhYm92ZSB3b3VsZCBzZWUgc2l6ZSA9IDAgYW5kIG9taXQgdGhlIGJhci5cbiAgICAgIGhhc0JhckxpbmUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXJTaXplID0gYmFyTm9kZS52YWx1ZTtcbiAgICAgIGhhc0JhckxpbmUgPSBiYXJTaXplLm51bWJlciA+IDA7XG4gICAgfSAvLyBGaW5kIG91dCBpZiB3ZSB3YW50IGRpc3BsYXlzdHlsZSwgdGV4dHN0eWxlLCBldGMuXG5cblxuICAgIHZhciBzaXplID0gXCJhdXRvXCI7XG4gICAgdmFyIHN0eWwgPSBjaGVja05vZGVUeXBlKGFyZ3NbM10sIFwib3JkZ3JvdXBcIik7XG5cbiAgICBpZiAoc3R5bCkge1xuICAgICAgaWYgKHN0eWwuYm9keS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0T3JkID0gYXNzZXJ0Tm9kZVR5cGUoc3R5bC5ib2R5WzBdLCBcInRleHRvcmRcIik7XG4gICAgICAgIHNpemUgPSBzdHlsQXJyYXlbTnVtYmVyKHRleHRPcmQudGV4dCldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1szXSwgXCJ0ZXh0b3JkXCIpO1xuICAgICAgc2l6ZSA9IHN0eWxBcnJheVtOdW1iZXIoc3R5bC50ZXh0KV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBudW1lcjogbnVtZXIsXG4gICAgICBkZW5vbTogZGVub20sXG4gICAgICBjb250aW51ZWQ6IGZhbHNlLFxuICAgICAgaGFzQmFyTGluZTogaGFzQmFyTGluZSxcbiAgICAgIGJhclNpemU6IGJhclNpemUsXG4gICAgICBsZWZ0RGVsaW06IGxlZnREZWxpbSxcbiAgICAgIHJpZ2h0RGVsaW06IHJpZ2h0RGVsaW0sXG4gICAgICBzaXplOiBzaXplXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGdlbmZyYWNfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGdlbmZyYWNfbWF0aG1sQnVpbGRlclxufSk7IC8vIFxcYWJvdmUgaXMgYW4gaW5maXggZnJhY3Rpb24gdGhhdCBhbHNvIGRlZmluZXMgYSBmcmFjdGlvbiBiYXIgc2l6ZS5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImluZml4XCIsXG4gIG5hbWVzOiBbXCJcXFxcYWJvdmVcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wic2l6ZVwiXSxcbiAgICBpbmZpeDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY0LCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY0LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNC5mdW5jTmFtZSxcbiAgICAgICAgdG9rZW4gPSBfcmVmNC50b2tlbjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbmZpeFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICByZXBsYWNlV2l0aDogXCJcXFxcXFxcXGFib3ZlZnJhY1wiLFxuICAgICAgc2l6ZTogYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJzaXplXCIpLnZhbHVlLFxuICAgICAgdG9rZW46IHRva2VuXG4gICAgfTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiZ2VuZnJhY1wiLFxuICBuYW1lczogW1wiXFxcXFxcXFxhYm92ZWZyYWNcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMyxcbiAgICBhcmdUeXBlczogW1wibWF0aFwiLCBcInNpemVcIiwgXCJtYXRoXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjUsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjUucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWY1LmZ1bmNOYW1lO1xuICAgIHZhciBudW1lciA9IGFyZ3NbMF07XG4gICAgdmFyIGJhclNpemUgPSBhc3NlcnQoYXNzZXJ0Tm9kZVR5cGUoYXJnc1sxXSwgXCJpbmZpeFwiKS5zaXplKTtcbiAgICB2YXIgZGVub20gPSBhcmdzWzJdO1xuICAgIHZhciBoYXNCYXJMaW5lID0gYmFyU2l6ZS5udW1iZXIgPiAwO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImdlbmZyYWNcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbnVtZXI6IG51bWVyLFxuICAgICAgZGVub206IGRlbm9tLFxuICAgICAgY29udGludWVkOiBmYWxzZSxcbiAgICAgIGhhc0JhckxpbmU6IGhhc0JhckxpbmUsXG4gICAgICBiYXJTaXplOiBiYXJTaXplLFxuICAgICAgbGVmdERlbGltOiBudWxsLFxuICAgICAgcmlnaHREZWxpbTogbnVsbCxcbiAgICAgIHNpemU6IFwiYXV0b1wiXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGdlbmZyYWNfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGdlbmZyYWNfbWF0aG1sQnVpbGRlclxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvaG9yaXpCcmFjZS5qc1xuXG5cblxuXG5cblxuXG5cbi8vIE5PVEU6IFVubGlrZSBtb3N0IGBodG1sQnVpbGRlcmBzLCB0aGlzIG9uZSBoYW5kbGVzIG5vdCBvbmx5IFwiaG9yaXpCcmFjZVwiLCBidXRcbnZhciBob3JpekJyYWNlX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JwLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IG9wdGlvbnMuc3R5bGU7IC8vIFB1bGwgb3V0IHRoZSBgUGFyc2VOb2RlPFwiaG9yaXpCcmFjZVwiPmAgaWYgYGdycGAgaXMgYSBcInN1cHN1YlwiIG5vZGUuXG5cbiAgdmFyIHN1cFN1Ykdyb3VwO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIFJlZjogTGFUZVggc291cmNlMmU6IH19fX1cXGxpbWl0c31cbiAgICAvLyBpLmUuIExhVGVYIHRyZWF0cyB0aGUgYnJhY2Ugc2ltaWxhciB0byBhbiBvcCBhbmQgcGFzc2VzIGl0XG4gICAgLy8gd2l0aCBcXGxpbWl0cywgc28gd2UgbmVlZCB0byBhc3NpZ24gc3Vwc3ViIHN0eWxlLlxuICAgIHN1cFN1Ykdyb3VwID0gc3VwU3ViLnN1cCA/IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cFN1Yi5zdXAsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3VwKCkpLCBvcHRpb25zKSA6IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cFN1Yi5zdWIsIG9wdGlvbnMuaGF2aW5nU3R5bGUoc3R5bGUuc3ViKCkpLCBvcHRpb25zKTtcbiAgICBncm91cCA9IGFzc2VydE5vZGVUeXBlKHN1cFN1Yi5iYXNlLCBcImhvcml6QnJhY2VcIik7XG4gIH0gZWxzZSB7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShncnAsIFwiaG9yaXpCcmFjZVwiKTtcbiAgfSAvLyBCdWlsZCB0aGUgYmFzZSBncm91cFxuXG5cbiAgdmFyIGJvZHkgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5iYXNlLCBvcHRpb25zLmhhdmluZ0Jhc2VTdHlsZShzcmNfU3R5bGUuRElTUExBWSkpOyAvLyBDcmVhdGUgdGhlIHN0cmV0Y2h5IGVsZW1lbnRcblxuICB2YXIgYnJhY2VCb2R5ID0gc3RyZXRjaHkuc3ZnU3Bhbihncm91cCwgb3B0aW9ucyk7IC8vIEdlbmVyYXRlIHRoZSB2bGlzdCwgd2l0aCB0aGUgYXBwcm9wcmlhdGUga2VybnMgICAgICAgIOKUj+KUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUk1xuICAvLyBUaGlzIGZpcnN0IHZsaXN0IGNvbnRhaW5zIHRoZSBjb250ZW50IGFuZCB0aGUgYnJhY2U6ICAgZXF1YXRpb25cblxuICB2YXIgdmxpc3Q7XG5cbiAgaWYgKGdyb3VwLmlzT3Zlcikge1xuICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IDAuMVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYnJhY2VCb2R5XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyAkRmxvd0ZpeE1lOiBSZXBsYWNlIHRoaXMgd2l0aCBwYXNzaW5nIFwic3ZnLWFsaWduXCIgaW50byBtYWtlVkxpc3QuXG5cbiAgICB2bGlzdC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlblsxXS5jbGFzc2VzLnB1c2goXCJzdmctYWxpZ25cIik7XG4gIH0gZWxzZSB7XG4gICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgcG9zaXRpb25EYXRhOiBib2R5LmRlcHRoICsgMC4xICsgYnJhY2VCb2R5LmhlaWdodCxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogYnJhY2VCb2R5XG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAwLjFcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7IC8vICRGbG93Rml4TWU6IFJlcGxhY2UgdGhpcyB3aXRoIHBhc3NpbmcgXCJzdmctYWxpZ25cIiBpbnRvIG1ha2VWTGlzdC5cblxuICAgIHZsaXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNsYXNzZXMucHVzaChcInN2Zy1hbGlnblwiKTtcbiAgfVxuXG4gIGlmIChzdXBTdWJHcm91cCkge1xuICAgIC8vIFRvIHdyaXRlIHRoZSBzdXBzdWIsIHdyYXAgdGhlIGZpcnN0IHZsaXN0IGluIGFub3RoZXIgdmxpc3Q6XG4gICAgLy8gVGhleSBjYW4ndCBhbGwgZ28gaW4gdGhlIHNhbWUgdmxpc3QsIGJlY2F1c2UgdGhlIG5vdGUgbWlnaHQgYmVcbiAgICAvLyB3aWRlciB0aGFuIHRoZSBlcXVhdGlvbi4gV2Ugd2FudCB0aGUgZXF1YXRpb24gdG8gY29udHJvbCB0aGVcbiAgICAvLyBicmFjZSB3aWR0aC5cbiAgICAvLyAgICAgIG5vdGUgICAgICAgICAgbG9uZyBub3RlICAgICAgICAgICBsb25nIG5vdGVcbiAgICAvLyAgIOKUj+KUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUkyAgIG9yICAgIOKUj+KUgeKUgeKUgeKUkyAgICAgbm90ICAgIOKUj+KUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUk1xuICAgIC8vICAgIGVxdWF0aW9uICAgICAgICAgICBlcW4gICAgICAgICAgICAgICAgIGVxblxuICAgIHZhciB2U3BhbiA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgZ3JvdXAuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKGdyb3VwLmlzT3Zlcikge1xuICAgICAgdmxpc3QgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiB2U3BhblxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgICAgc2l6ZTogMC4yXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiBzdXBTdWJHcm91cFxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZsaXN0ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiBcImJvdHRvbVwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IHZTcGFuLmRlcHRoICsgMC4yICsgc3VwU3ViR3JvdXAuaGVpZ2h0ICsgc3VwU3ViR3JvdXAuZGVwdGgsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHN1cFN1Ykdyb3VwXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgICBzaXplOiAwLjJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICAgIGVsZW06IHZTcGFuXG4gICAgICAgIH1dXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBncm91cC5pc092ZXIgPyBcIm1vdmVyXCIgOiBcIm11bmRlclwiXSwgW3ZsaXN0XSwgb3B0aW9ucyk7XG59O1xuXG52YXIgaG9yaXpCcmFjZV9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgYWNjZW50Tm9kZSA9IHN0cmV0Y2h5Lm1hdGhNTG5vZGUoZ3JvdXAubGFiZWwpO1xuICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoZ3JvdXAuaXNPdmVyID8gXCJtb3ZlclwiIDogXCJtdW5kZXJcIiwgW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucyksIGFjY2VudE5vZGVdKTtcbn07IC8vIEhvcml6b250YWwgc3RyZXRjaHkgYnJhY2VzXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhvcml6QnJhY2VcIixcbiAgbmFtZXM6IFtcIlxcXFxvdmVyYnJhY2VcIiwgXCJcXFxcdW5kZXJicmFjZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImhvcml6QnJhY2VcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGFiZWw6IGZ1bmNOYW1lLFxuICAgICAgaXNPdmVyOiAvXlxcXFxvdmVyLy50ZXN0KGZ1bmNOYW1lKSxcbiAgICAgIGJhc2U6IGFyZ3NbMF1cbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogaG9yaXpCcmFjZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogaG9yaXpCcmFjZV9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9ocmVmLmpzXG5cblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiaHJlZlwiLFxuICBuYW1lczogW1wiXFxcXGhyZWZcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMixcbiAgICBhcmdUeXBlczogW1widXJsXCIsIFwib3JpZ2luYWxcIl0sXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHZhciBocmVmID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJ1cmxcIikudXJsO1xuXG4gICAgaWYgKCFwYXJzZXIuc2V0dGluZ3MuaXNUcnVzdGVkKHtcbiAgICAgIGNvbW1hbmQ6IFwiXFxcXGhyZWZcIixcbiAgICAgIHVybDogaHJlZlxuICAgIH0pKSB7XG4gICAgICByZXR1cm4gcGFyc2VyLmZvcm1hdFVuc3VwcG9ydGVkQ21kKFwiXFxcXGhyZWZcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaHJlZlwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBocmVmOiBocmVmLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIGZhbHNlKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUFuY2hvcihncm91cC5ocmVmLCBbXSwgZWxlbWVudHMsIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG1hdGggPSBidWlsZEV4cHJlc3Npb25Sb3coZ3JvdXAuYm9keSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIShtYXRoIGluc3RhbmNlb2YgbWF0aE1MVHJlZV9NYXRoTm9kZSkpIHtcbiAgICAgIG1hdGggPSBuZXcgbWF0aE1MVHJlZV9NYXRoTm9kZShcIm1yb3dcIiwgW21hdGhdKTtcbiAgICB9XG5cbiAgICBtYXRoLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgZ3JvdXAuaHJlZik7XG4gICAgcmV0dXJuIG1hdGg7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImhyZWZcIixcbiAgbmFtZXM6IFtcIlxcXFx1cmxcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhcmdUeXBlczogW1widXJsXCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMi5wYXJzZXI7XG4gICAgdmFyIGhyZWYgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInVybFwiKS51cmw7XG5cbiAgICBpZiAoIXBhcnNlci5zZXR0aW5ncy5pc1RydXN0ZWQoe1xuICAgICAgY29tbWFuZDogXCJcXFxcdXJsXCIsXG4gICAgICB1cmw6IGhyZWZcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIHBhcnNlci5mb3JtYXRVbnN1cHBvcnRlZENtZChcIlxcXFx1cmxcIik7XG4gICAgfVxuXG4gICAgdmFyIGNoYXJzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhyZWYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gaHJlZltpXTtcblxuICAgICAgaWYgKGMgPT09IFwiflwiKSB7XG4gICAgICAgIGMgPSBcIlxcXFx0ZXh0YXNjaWl0aWxkZVwiO1xuICAgICAgfVxuXG4gICAgICBjaGFycy5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBjXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgYm9keSA9IHtcbiAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBmb250OiBcIlxcXFx0ZXh0dHRcIixcbiAgICAgIGJvZHk6IGNoYXJzXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJocmVmXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGhyZWY6IGhyZWYsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KVxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2h0bWxtYXRobWwuanNcblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImh0bWxtYXRobWxcIixcbiAgbmFtZXM6IFtcIlxcXFxodG1sQG1hdGhtbFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImh0bWxtYXRobWxcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgaHRtbDogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1swXSksXG4gICAgICBtYXRobWw6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbMV0pXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5odG1sLCBvcHRpb25zLCBmYWxzZSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VGcmFnbWVudChlbGVtZW50cyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLm1hdGhtbCwgb3B0aW9ucyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL2luY2x1ZGVncmFwaGljcy5qc1xuXG5cblxuXG5cblxuXG52YXIgaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhID0gZnVuY3Rpb24gc2l6ZURhdGEoc3RyKSB7XG4gIGlmICgvXlstK10/ICooXFxkKyhcXC5cXGQqKT98XFwuXFxkKykkLy50ZXN0KHN0cikpIHtcbiAgICAvLyBzdHIgaXMgYSBudW1iZXIgd2l0aCBubyB1bml0IHNwZWNpZmllZC5cbiAgICAvLyBkZWZhdWx0IHVuaXQgaXMgYnAsIHBlciBncmFwaGl4IHBhY2thZ2UuXG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWJlcjogK3N0cixcbiAgICAgIHVuaXQ6IFwiYnBcIlxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1hdGNoID0gLyhbLStdPykgKihcXGQrKD86XFwuXFxkKik/fFxcLlxcZCspICooW2Etel17Mn0pLy5leGVjKHN0cik7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHNpemU6ICdcIiArIHN0ciArIFwiJyBpbiBcXFxcaW5jbHVkZWdyYXBoaWNzXCIpO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgbnVtYmVyOiArKG1hdGNoWzFdICsgbWF0Y2hbMl0pLFxuICAgICAgLy8gc2lnbiArIG1hZ25pdHVkZSwgY2FzdCB0byBudW1iZXJcbiAgICAgIHVuaXQ6IG1hdGNoWzNdXG4gICAgfTtcblxuICAgIGlmICghdmFsaWRVbml0KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHVuaXQ6ICdcIiArIGRhdGEudW5pdCArIFwiJyBpbiBcXFxcaW5jbHVkZWdyYXBoaWNzLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufTtcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcImluY2x1ZGVncmFwaGljc1wiLFxuICBuYW1lczogW1wiXFxcXGluY2x1ZGVncmFwaGljc1wiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIG51bU9wdGlvbmFsQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wicmF3XCIsIFwidXJsXCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IGZhbHNlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgd2lkdGggPSB7XG4gICAgICBudW1iZXI6IDAsXG4gICAgICB1bml0OiBcImVtXCJcbiAgICB9O1xuICAgIHZhciBoZWlnaHQgPSB7XG4gICAgICBudW1iZXI6IDAuOSxcbiAgICAgIHVuaXQ6IFwiZW1cIlxuICAgIH07IC8vIHNvcnRhIGNoYXJhY3RlciBzaXplZC5cblxuICAgIHZhciB0b3RhbGhlaWdodCA9IHtcbiAgICAgIG51bWJlcjogMCxcbiAgICAgIHVuaXQ6IFwiZW1cIlxuICAgIH07XG4gICAgdmFyIGFsdCA9IFwiXCI7XG5cbiAgICBpZiAob3B0QXJnc1swXSkge1xuICAgICAgdmFyIGF0dHJpYnV0ZVN0ciA9IGFzc2VydE5vZGVUeXBlKG9wdEFyZ3NbMF0sIFwicmF3XCIpLnN0cmluZzsgLy8gUGFyc2VyLmpzIGRvZXMgbm90IHBhcnNlIGtleS92YWx1ZSBwYWlycy4gV2UgZ2V0IGEgc3RyaW5nLlxuXG4gICAgICB2YXIgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVN0ci5zcGxpdChcIixcIik7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIga2V5VmFsID0gYXR0cmlidXRlc1tpXS5zcGxpdChcIj1cIik7XG5cbiAgICAgICAgaWYgKGtleVZhbC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICB2YXIgc3RyID0ga2V5VmFsWzFdLnRyaW0oKTtcblxuICAgICAgICAgIHN3aXRjaCAoa2V5VmFsWzBdLnRyaW0oKSkge1xuICAgICAgICAgICAgY2FzZSBcImFsdFwiOlxuICAgICAgICAgICAgICBhbHQgPSBzdHI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwid2lkdGhcIjpcbiAgICAgICAgICAgICAgd2lkdGggPSBpbmNsdWRlZ3JhcGhpY3Nfc2l6ZURhdGEoc3RyKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgXCJoZWlnaHRcIjpcbiAgICAgICAgICAgICAgaGVpZ2h0ID0gaW5jbHVkZWdyYXBoaWNzX3NpemVEYXRhKHN0cik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwidG90YWxoZWlnaHRcIjpcbiAgICAgICAgICAgICAgdG90YWxoZWlnaHQgPSBpbmNsdWRlZ3JhcGhpY3Nfc2l6ZURhdGEoc3RyKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQga2V5OiAnXCIgKyBrZXlWYWxbMF0gKyBcIicgaW4gXFxcXGluY2x1ZGVncmFwaGljcy5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNyYyA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwidXJsXCIpLnVybDtcblxuICAgIGlmIChhbHQgPT09IFwiXCIpIHtcbiAgICAgIC8vIE5vIGFsdCBnaXZlbi4gVXNlIHRoZSBmaWxlIG5hbWUuIFN0cmlwIGF3YXkgdGhlIHBhdGguXG4gICAgICBhbHQgPSBzcmM7XG4gICAgICBhbHQgPSBhbHQucmVwbGFjZSgvXi4qW1xcXFwvXS8sICcnKTtcbiAgICAgIGFsdCA9IGFsdC5zdWJzdHJpbmcoMCwgYWx0Lmxhc3RJbmRleE9mKCcuJykpO1xuICAgIH1cblxuICAgIGlmICghcGFyc2VyLnNldHRpbmdzLmlzVHJ1c3RlZCh7XG4gICAgICBjb21tYW5kOiBcIlxcXFxpbmNsdWRlZ3JhcGhpY3NcIixcbiAgICAgIHVybDogc3JjXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBwYXJzZXIuZm9ybWF0VW5zdXBwb3J0ZWRDbWQoXCJcXFxcaW5jbHVkZWdyYXBoaWNzXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImluY2x1ZGVncmFwaGljc1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBhbHQ6IGFsdCxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgdG90YWxoZWlnaHQ6IHRvdGFsaGVpZ2h0LFxuICAgICAgc3JjOiBzcmNcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgaGVpZ2h0ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5oZWlnaHQsIG9wdGlvbnMpO1xuICAgIHZhciBkZXB0aCA9IDA7XG5cbiAgICBpZiAoZ3JvdXAudG90YWxoZWlnaHQubnVtYmVyID4gMCkge1xuICAgICAgZGVwdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnRvdGFsaGVpZ2h0LCBvcHRpb25zKSAtIGhlaWdodDtcbiAgICAgIGRlcHRoID0gTnVtYmVyKGRlcHRoLnRvRml4ZWQoMikpO1xuICAgIH1cblxuICAgIHZhciB3aWR0aCA9IDA7XG5cbiAgICBpZiAoZ3JvdXAud2lkdGgubnVtYmVyID4gMCkge1xuICAgICAgd2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLndpZHRoLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IGhlaWdodCArIGRlcHRoICsgXCJlbVwiXG4gICAgfTtcblxuICAgIGlmICh3aWR0aCA+IDApIHtcbiAgICAgIHN0eWxlLndpZHRoID0gd2lkdGggKyBcImVtXCI7XG4gICAgfVxuXG4gICAgaWYgKGRlcHRoID4gMCkge1xuICAgICAgc3R5bGUudmVydGljYWxBbGlnbiA9IC1kZXB0aCArIFwiZW1cIjtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBkb21UcmVlX0ltZyhncm91cC5zcmMsIGdyb3VwLmFsdCwgc3R5bGUpO1xuICAgIG5vZGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIG5vZGUuZGVwdGggPSBkZXB0aDtcbiAgICByZXR1cm4gbm9kZTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtZ2x5cGhcIiwgW10pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiYWx0XCIsIGdyb3VwLmFsdCk7XG4gICAgdmFyIGhlaWdodCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAuaGVpZ2h0LCBvcHRpb25zKTtcbiAgICB2YXIgZGVwdGggPSAwO1xuXG4gICAgaWYgKGdyb3VwLnRvdGFsaGVpZ2h0Lm51bWJlciA+IDApIHtcbiAgICAgIGRlcHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC50b3RhbGhlaWdodCwgb3B0aW9ucykgLSBoZWlnaHQ7XG4gICAgICBkZXB0aCA9IGRlcHRoLnRvRml4ZWQoMik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInZhbGlnblwiLCBcIi1cIiArIGRlcHRoICsgXCJlbVwiKTtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBoZWlnaHQgKyBkZXB0aCArIFwiZW1cIik7XG5cbiAgICBpZiAoZ3JvdXAud2lkdGgubnVtYmVyID4gMCkge1xuICAgICAgdmFyIHdpZHRoID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC53aWR0aCwgb3B0aW9ucyk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIHdpZHRoICsgXCJlbVwiKTtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcInNyY1wiLCBncm91cC5zcmMpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9rZXJuLmpzXG4vLyBIb3Jpem9udGFsIHNwYWNpbmcgY29tbWFuZHNcblxuXG5cblxuIC8vIFRPRE86IFxcaHNraXAgYW5kIFxcbXNraXAgc2hvdWxkIHN1cHBvcnQgcGx1cyBhbmQgbWludXMgaW4gbGVuZ3Roc1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwia2VyblwiLFxuICBuYW1lczogW1wiXFxcXGtlcm5cIiwgXCJcXFxcbWtlcm5cIiwgXCJcXFxcaHNraXBcIiwgXCJcXFxcbXNraXBcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wic2l6ZVwiXSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBzaXplID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1swXSwgXCJzaXplXCIpO1xuXG4gICAgaWYgKHBhcnNlci5zZXR0aW5ncy5zdHJpY3QpIHtcbiAgICAgIHZhciBtYXRoRnVuY3Rpb24gPSBmdW5jTmFtZVsxXSA9PT0gJ20nOyAvLyBcXG1rZXJuLCBcXG1za2lwXG5cbiAgICAgIHZhciBtdVVuaXQgPSBzaXplLnZhbHVlLnVuaXQgPT09ICdtdSc7XG5cbiAgICAgIGlmIChtYXRoRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKCFtdVVuaXQpIHtcbiAgICAgICAgICBwYXJzZXIuc2V0dGluZ3MucmVwb3J0Tm9uc3RyaWN0KFwibWF0aFZzVGV4dFVuaXRzXCIsIFwiTGFUZVgncyBcIiArIGZ1bmNOYW1lICsgXCIgc3VwcG9ydHMgb25seSBtdSB1bml0cywgXCIgKyAoXCJub3QgXCIgKyBzaXplLnZhbHVlLnVuaXQgKyBcIiB1bml0c1wiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VyLm1vZGUgIT09IFwibWF0aFwiKSB7XG4gICAgICAgICAgcGFyc2VyLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcIm1hdGhWc1RleHRVbml0c1wiLCBcIkxhVGVYJ3MgXCIgKyBmdW5jTmFtZSArIFwiIHdvcmtzIG9ubHkgaW4gbWF0aCBtb2RlXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAhbWF0aEZ1bmN0aW9uXG4gICAgICAgIGlmIChtdVVuaXQpIHtcbiAgICAgICAgICBwYXJzZXIuc2V0dGluZ3MucmVwb3J0Tm9uc3RyaWN0KFwibWF0aFZzVGV4dFVuaXRzXCIsIFwiTGFUZVgncyBcIiArIGZ1bmNOYW1lICsgXCIgZG9lc24ndCBzdXBwb3J0IG11IHVuaXRzXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBkaW1lbnNpb246IHNpemUudmFsdWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUdsdWUoZ3JvdXAuZGltZW5zaW9uLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBkaW1lbnNpb24gPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmRpbWVuc2lvbiwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLlNwYWNlTm9kZShkaW1lbnNpb24pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9sYXAuanNcbi8vIEhvcml6b250YWwgb3ZlcmxhcCBmdW5jdGlvbnNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibGFwXCIsXG4gIG5hbWVzOiBbXCJcXFxcbWF0aGxsYXBcIiwgXCJcXFxcbWF0aHJsYXBcIiwgXCJcXFxcbWF0aGNsYXBcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJsYXBcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYWxpZ25tZW50OiBmdW5jTmFtZS5zbGljZSg1KSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICAvLyBtYXRobGxhcCwgbWF0aHJsYXAsIG1hdGhjbGFwXG4gICAgdmFyIGlubmVyO1xuXG4gICAgaWYgKGdyb3VwLmFsaWdubWVudCA9PT0gXCJjbGFwXCIpIHtcbiAgICAgIC8vIHJlZjogaHR0cHM6Ly93d3cubWF0aC5sc3UuZWR1L35hcGVybGlzL3B1YmxpY2F0aW9ucy9tYXRoY2xhcC9cbiAgICAgIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pOyAvLyB3cmFwLCBzaW5jZSBDU1Mgd2lsbCBjZW50ZXIgYSAuY2xhcCA+IC5pbm5lciA+IHNwYW5cblxuICAgICAgaW5uZXIgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJpbm5lclwiXSwgW2lubmVyXSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlubmVyID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiaW5uZXJcIl0sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuICAgIH1cblxuICAgIHZhciBmaXggPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJmaXhcIl0sIFtdKTtcbiAgICB2YXIgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtncm91cC5hbGlnbm1lbnRdLCBbaW5uZXIsIGZpeF0sIG9wdGlvbnMpOyAvLyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGNvcnJlY3RseSBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGhlXG4gICAgLy8gdHdvIGl0ZW1zIGludm9sdmVkIGluIHRoZSBsYXAuXG4gICAgLy8gTmV4dCwgdXNlIGEgc3RydXQgdG8gc2V0IHRoZSBoZWlnaHQgb2YgdGhlIEhUTUwgYm91bmRpbmcgYm94LlxuICAgIC8vIE90aGVyd2lzZSwgYSB0YWxsIGFyZ3VtZW50IG1heSBiZSBtaXNwbGFjZWQuXG5cbiAgICB2YXIgc3RydXQgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJzdHJ1dFwiXSk7XG4gICAgc3RydXQuc3R5bGUuaGVpZ2h0ID0gbm9kZS5oZWlnaHQgKyBub2RlLmRlcHRoICsgXCJlbVwiO1xuICAgIHN0cnV0LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAtbm9kZS5kZXB0aCArIFwiZW1cIjtcbiAgICBub2RlLmNoaWxkcmVuLnVuc2hpZnQoc3RydXQpOyAvLyBOZXh0LCBwcmV2ZW50IHZlcnRpY2FsIG1pc3BsYWNlbWVudCB3aGVuIG5leHQgdG8gc29tZXRoaW5nIHRhbGwuXG5cbiAgICBub2RlID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG5vZGVcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7IC8vIEdldCB0aGUgaG9yaXpvbnRhbCBzcGFjaW5nIGNvcnJlY3QgcmVsYXRpdmUgdG8gYWRqYWNlbnQgaXRlbXMuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW25vZGVdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIG1hdGhsbGFwLCBtYXRocmxhcCwgbWF0aGNsYXBcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuXG4gICAgaWYgKGdyb3VwLmFsaWdubWVudCAhPT0gXCJybGFwXCIpIHtcbiAgICAgIHZhciBvZmZzZXQgPSBncm91cC5hbGlnbm1lbnQgPT09IFwibGxhcFwiID8gXCItMVwiIDogXCItMC41XCI7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImxzcGFjZVwiLCBvZmZzZXQgKyBcIndpZHRoXCIpO1xuICAgIH1cblxuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIwcHhcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL21hdGguanNcblxuIC8vIFN3aXRjaGluZyBmcm9tIHRleHQgbW9kZSBiYWNrIHRvIG1hdGggbW9kZVxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwic3R5bGluZ1wiLFxuICBuYW1lczogW1wiXFxcXChcIiwgXCIkXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZSxcbiAgICBhbGxvd2VkSW5NYXRoOiBmYWxzZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lLFxuICAgICAgICBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgb3V0ZXJNb2RlID0gcGFyc2VyLm1vZGU7XG4gICAgcGFyc2VyLnN3aXRjaE1vZGUoXCJtYXRoXCIpO1xuICAgIHZhciBjbG9zZSA9IGZ1bmNOYW1lID09PSBcIlxcXFwoXCIgPyBcIlxcXFwpXCIgOiBcIiRcIjtcbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UsIGNsb3NlKTtcbiAgICBwYXJzZXIuZXhwZWN0KGNsb3NlKTtcbiAgICBwYXJzZXIuc3dpdGNoTW9kZShvdXRlck1vZGUpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInN0eWxpbmdcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgc3R5bGU6IFwidGV4dFwiLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH1cbn0pOyAvLyBDaGVjayBmb3IgZXh0cmEgY2xvc2luZyBtYXRoIGRlbGltaXRlcnNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInRleHRcIixcbiAgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGlzIGlzLlxuICBuYW1lczogW1wiXFxcXClcIiwgXCJcXFxcXVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWUsXG4gICAgYWxsb3dlZEluTWF0aDogZmFsc2VcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTWlzbWF0Y2hlZCBcIiArIGNvbnRleHQuZnVuY05hbWUpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9tYXRoY2hvaWNlLmpzXG5cblxuXG5cblxuXG52YXIgbWF0aGNob2ljZV9jaG9vc2VNYXRoU3R5bGUgPSBmdW5jdGlvbiBjaG9vc2VNYXRoU3R5bGUoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgc3dpdGNoIChvcHRpb25zLnN0eWxlLnNpemUpIHtcbiAgICBjYXNlIHNyY19TdHlsZS5ESVNQTEFZLnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAuZGlzcGxheTtcblxuICAgIGNhc2Ugc3JjX1N0eWxlLlRFWFQuc2l6ZTpcbiAgICAgIHJldHVybiBncm91cC50ZXh0O1xuXG4gICAgY2FzZSBzcmNfU3R5bGUuU0NSSVBULnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAuc2NyaXB0O1xuXG4gICAgY2FzZSBzcmNfU3R5bGUuU0NSSVBUU0NSSVBULnNpemU6XG4gICAgICByZXR1cm4gZ3JvdXAuc2NyaXB0c2NyaXB0O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBncm91cC50ZXh0O1xuICB9XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwibWF0aGNob2ljZVwiLFxuICBuYW1lczogW1wiXFxcXG1hdGhjaG9pY2VcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogNFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZi5wYXJzZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibWF0aGNob2ljZVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBkaXNwbGF5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzBdKSxcbiAgICAgIHRleHQ6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGFyZ3NbMV0pLFxuICAgICAgc2NyaXB0OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChhcmdzWzJdKSxcbiAgICAgIHNjcmlwdHNjcmlwdDogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYXJnc1szXSlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgYm9keSA9IG1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlKGdyb3VwLCBvcHRpb25zKTtcbiAgICB2YXIgZWxlbWVudHMgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGJvZHksIG9wdGlvbnMsIGZhbHNlKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGVsZW1lbnRzKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBib2R5ID0gbWF0aGNob2ljZV9jaG9vc2VNYXRoU3R5bGUoZ3JvdXAsIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZEV4cHJlc3Npb25Sb3coYm9keSwgb3B0aW9ucyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3V0aWxzL2Fzc2VtYmxlU3VwU3ViLmpzXG5cblxuLy8gRm9yIGFuIG9wZXJhdG9yIHdpdGggbGltaXRzLCBhc3NlbWJsZSB0aGUgYmFzZSwgc3VwLCBhbmQgc3ViIGludG8gYSBzcGFuLlxudmFyIGFzc2VtYmxlU3VwU3ViX2Fzc2VtYmxlU3VwU3ViID0gZnVuY3Rpb24gYXNzZW1ibGVTdXBTdWIoYmFzZSwgc3VwR3JvdXAsIHN1Ykdyb3VwLCBvcHRpb25zLCBzdHlsZSwgc2xhbnQsIGJhc2VTaGlmdCkge1xuICAvLyBJRSA4IGNsaXBzIFxcaW50IGlmIGl0IGlzIGluIGEgZGlzcGxheTogaW5saW5lLWJsb2NrLiBXZSB3cmFwIGl0XG4gIC8vIGluIGEgbmV3IHNwYW4gc28gaXQgaXMgYW4gaW5saW5lLCBhbmQgd29ya3MuXG4gIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXSwgW2Jhc2VdKTtcbiAgdmFyIHN1YjtcbiAgdmFyIHN1cDsgLy8gV2UgbWFudWFsbHkgaGF2ZSB0byBoYW5kbGUgdGhlIHN1cGVyc2NyaXB0cyBhbmQgc3Vic2NyaXB0cy4gVGhpcyxcbiAgLy8gYXNpZGUgZnJvbSB0aGUga2VybiBjYWxjdWxhdGlvbnMsIGlzIGNvcGllZCBmcm9tIHN1cHN1Yi5cblxuICBpZiAoc3VwR3JvdXApIHtcbiAgICB2YXIgZWxlbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1cEdyb3VwLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1cCgpKSwgb3B0aW9ucyk7XG4gICAgc3VwID0ge1xuICAgICAgZWxlbTogZWxlbSxcbiAgICAgIGtlcm46IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmcxLCBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nMyAtIGVsZW0uZGVwdGgpXG4gICAgfTtcbiAgfVxuXG4gIGlmIChzdWJHcm91cCkge1xuICAgIHZhciBfZWxlbSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHN1Ykdyb3VwLCBvcHRpb25zLmhhdmluZ1N0eWxlKHN0eWxlLnN1YigpKSwgb3B0aW9ucyk7XG5cbiAgICBzdWIgPSB7XG4gICAgICBlbGVtOiBfZWxlbSxcbiAgICAgIGtlcm46IE1hdGgubWF4KG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmcyLCBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNCAtIF9lbGVtLmhlaWdodClcbiAgICB9O1xuICB9IC8vIEJ1aWxkIHRoZSBmaW5hbCBncm91cCBhcyBhIHZsaXN0IG9mIHRoZSBwb3NzaWJsZSBzdWJzY3JpcHQsIGJhc2UsXG4gIC8vIGFuZCBwb3NzaWJsZSBzdXBlcnNjcmlwdC5cblxuXG4gIHZhciBmaW5hbEdyb3VwO1xuXG4gIGlmIChzdXAgJiYgc3ViKSB7XG4gICAgdmFyIGJvdHRvbSA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1ICsgc3ViLmVsZW0uaGVpZ2h0ICsgc3ViLmVsZW0uZGVwdGggKyBzdWIua2VybiArIGJhc2UuZGVwdGggKyBiYXNlU2hpZnQ7XG4gICAgZmluYWxHcm91cCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IGJvdHRvbSxcbiAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogb3B0aW9ucy5mb250TWV0cmljcygpLmJpZ09wU3BhY2luZzVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1Yi5lbGVtLFxuICAgICAgICBtYXJnaW5MZWZ0OiAtc2xhbnQgKyBcImVtXCJcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IHN1Yi5rZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBiYXNlXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBzdXAua2VyblxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VwLmVsZW0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IHNsYW50ICsgXCJlbVwiXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNVxuICAgICAgfV1cbiAgICB9LCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChzdWIpIHtcbiAgICB2YXIgdG9wID0gYmFzZS5oZWlnaHQgLSBiYXNlU2hpZnQ7IC8vIFNoaWZ0IHRoZSBsaW1pdHMgYnkgdGhlIHNsYW50IG9mIHRoZSBzeW1ib2wuIE5vdGVcbiAgICAvLyB0aGF0IHdlIGFyZSBzdXBwb3NlZCB0byBzaGlmdCB0aGUgbGltaXRzIGJ5IDEvMiBvZiB0aGUgc2xhbnQsXG4gICAgLy8gYnV0IHNpbmNlIHdlIGFyZSBjZW50ZXJpbmcgdGhlIGxpbWl0cyBhZGRpbmcgYSBmdWxsIHNsYW50IG9mXG4gICAgLy8gbWFyZ2luIHdpbGwgc2hpZnQgYnkgMS8yIHRoYXQuXG5cbiAgICBmaW5hbEdyb3VwID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJ0b3BcIixcbiAgICAgIHBvc2l0aW9uRGF0YTogdG9wLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBvcHRpb25zLmZvbnRNZXRyaWNzKCkuYmlnT3BTcGFjaW5nNVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3ViLmVsZW0sXG4gICAgICAgIG1hcmdpbkxlZnQ6IC1zbGFudCArIFwiZW1cIlxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogc3ViLmtlcm5cbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJhc2VcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3VwKSB7XG4gICAgdmFyIF9ib3R0b20gPSBiYXNlLmRlcHRoICsgYmFzZVNoaWZ0O1xuXG4gICAgZmluYWxHcm91cCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiYm90dG9tXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IF9ib3R0b20sXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJhc2VcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IHN1cC5rZXJuXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBzdXAuZWxlbSxcbiAgICAgICAgbWFyZ2luTGVmdDogc2xhbnQgKyBcImVtXCJcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IG9wdGlvbnMuZm9udE1ldHJpY3MoKS5iaWdPcFNwYWNpbmc1XG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgY2FzZSBwcm9iYWJseSBzaG91bGRuJ3Qgb2NjdXIgKHRoaXMgd291bGQgbWVhbiB0aGVcbiAgICAvLyBzdXBzdWIgd2FzIHNlbmRpbmcgdXMgYSBncm91cCB3aXRoIG5vIHN1cGVyc2NyaXB0IG9yXG4gICAgLy8gc3Vic2NyaXB0KSBidXQgYmUgc2FmZS5cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3BcIiwgXCJvcC1saW1pdHNcIl0sIFtmaW5hbEdyb3VwXSwgb3B0aW9ucyk7XG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL29wLmpzXG4vLyBMaW1pdHMsIHN5bWJvbHNcblxuXG5cblxuXG5cblxuXG5cblxuLy8gTW9zdCBvcGVyYXRvcnMgaGF2ZSBhIGxhcmdlIHN1Y2Nlc3NvciBzeW1ib2wsIGJ1dCB0aGVzZSBkb24ndC5cbnZhciBub1N1Y2Nlc3NvciA9IFtcIlxcXFxzbWFsbGludFwiXTsgLy8gTk9URTogVW5saWtlIG1vc3QgYGh0bWxCdWlsZGVyYHMsIHRoaXMgb25lIGhhbmRsZXMgbm90IG9ubHkgXCJvcFwiLCBidXQgYWxzb1xuLy8gXCJzdXBzdWJcIiBzaW5jZSBzb21lIG9mIHRoZW0gKGxpa2UgXFxpbnQpIGNhbiBhZmZlY3Qgc3VwZXIvc3Vic2NyaXB0aW5nLlxuXG52YXIgb3BfaHRtbEJ1aWxkZXIgPSBmdW5jdGlvbiBodG1sQnVpbGRlcihncnAsIG9wdGlvbnMpIHtcbiAgLy8gT3BlcmF0b3JzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnLiA0NDMtNDQ0LCBydWxlIDEzKGEpLlxuICB2YXIgc3VwR3JvdXA7XG4gIHZhciBzdWJHcm91cDtcbiAgdmFyIGhhc0xpbWl0cyA9IGZhbHNlO1xuICB2YXIgZ3JvdXA7XG4gIHZhciBzdXBTdWIgPSBjaGVja05vZGVUeXBlKGdycCwgXCJzdXBzdWJcIik7XG5cbiAgaWYgKHN1cFN1Yikge1xuICAgIC8vIElmIHdlIGhhdmUgbGltaXRzLCBzdXBzdWIgd2lsbCBwYXNzIHVzIGl0cyBncm91cCB0byBoYW5kbGUuIFB1bGxcbiAgICAvLyBvdXQgdGhlIHN1cGVyc2NyaXB0IGFuZCBzdWJzY3JpcHQgYW5kIHNldCB0aGUgZ3JvdXAgdG8gdGhlIG9wIGluXG4gICAgLy8gaXRzIGJhc2UuXG4gICAgc3VwR3JvdXAgPSBzdXBTdWIuc3VwO1xuICAgIHN1Ykdyb3VwID0gc3VwU3ViLnN1YjtcbiAgICBncm91cCA9IGFzc2VydE5vZGVUeXBlKHN1cFN1Yi5iYXNlLCBcIm9wXCIpO1xuICAgIGhhc0xpbWl0cyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShncnAsIFwib3BcIik7XG4gIH1cblxuICB2YXIgc3R5bGUgPSBvcHRpb25zLnN0eWxlO1xuICB2YXIgbGFyZ2UgPSBmYWxzZTtcblxuICBpZiAoc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSAmJiBncm91cC5zeW1ib2wgJiYgIXV0aWxzLmNvbnRhaW5zKG5vU3VjY2Vzc29yLCBncm91cC5uYW1lKSkge1xuICAgIC8vIE1vc3Qgc3ltYm9sIG9wZXJhdG9ycyBnZXQgbGFyZ2VyIGluIGRpc3BsYXlzdHlsZSAocnVsZSAxMylcbiAgICBsYXJnZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYmFzZTtcblxuICBpZiAoZ3JvdXAuc3ltYm9sKSB7XG4gICAgLy8gSWYgdGhpcyBpcyBhIHN5bWJvbCwgY3JlYXRlIHRoZSBzeW1ib2wuXG4gICAgdmFyIGZvbnROYW1lID0gbGFyZ2UgPyBcIlNpemUyLVJlZ3VsYXJcIiA6IFwiU2l6ZTEtUmVndWxhclwiO1xuICAgIHZhciBzdGFzaCA9IFwiXCI7XG5cbiAgICBpZiAoZ3JvdXAubmFtZSA9PT0gXCJcXFxcb2lpbnRcIiB8fCBncm91cC5uYW1lID09PSBcIlxcXFxvaWlpbnRcIikge1xuICAgICAgLy8gTm8gZm9udCBnbHlwaHMgeWV0LCBzbyB1c2UgYSBnbHlwaCB3L28gdGhlIG92YWwuXG4gICAgICAvLyBUT0RPOiBXaGVuIGZvbnQgZ2x5cGhzIGFyZSBhdmFpbGFibGUsIGRlbGV0ZSB0aGlzIGNvZGUuXG4gICAgICBzdGFzaCA9IGdyb3VwLm5hbWUuc3Vic3RyKDEpOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIGdyb3VwLm5hbWUgPSBzdGFzaCA9PT0gXCJvaWludFwiID8gXCJcXFxcaWludFwiIDogXCJcXFxcaWlpbnRcIjtcbiAgICB9XG5cbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVN5bWJvbChncm91cC5uYW1lLCBmb250TmFtZSwgXCJtYXRoXCIsIG9wdGlvbnMsIFtcIm1vcFwiLCBcIm9wLXN5bWJvbFwiLCBsYXJnZSA/IFwibGFyZ2Utb3BcIiA6IFwic21hbGwtb3BcIl0pO1xuXG4gICAgaWYgKHN0YXNoLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFdlJ3JlIGluIFxcb2lpbnQgb3IgXFxvaWlpbnQuIE92ZXJsYXkgdGhlIG92YWwuXG4gICAgICAvLyBUT0RPOiBXaGVuIGZvbnQgZ2x5cGhzIGFyZSBhdmFpbGFibGUsIGRlbGV0ZSB0aGlzIGNvZGUuXG4gICAgICB2YXIgaXRhbGljID0gYmFzZS5pdGFsaWM7XG4gICAgICB2YXIgb3ZhbCA9IGJ1aWxkQ29tbW9uLnN0YXRpY1N2ZyhzdGFzaCArIFwiU2l6ZVwiICsgKGxhcmdlID8gXCIyXCIgOiBcIjFcIiksIG9wdGlvbnMpO1xuICAgICAgYmFzZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJpbmRpdmlkdWFsU2hpZnRcIixcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogYmFzZSxcbiAgICAgICAgICBzaGlmdDogMFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogb3ZhbCxcbiAgICAgICAgICBzaGlmdDogbGFyZ2UgPyAwLjA4IDogMFxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7IC8vICRGbG93Rml4TWVcblxuICAgICAgZ3JvdXAubmFtZSA9IFwiXFxcXFwiICsgc3Rhc2g7XG4gICAgICBiYXNlLmNsYXNzZXMudW5zaGlmdChcIm1vcFwiKTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgICBiYXNlLml0YWxpYyA9IGl0YWxpYztcbiAgICB9XG4gIH0gZWxzZSBpZiAoZ3JvdXAuYm9keSkge1xuICAgIC8vIElmIHRoaXMgaXMgYSBsaXN0LCBjb21wb3NlIHRoYXQgbGlzdC5cbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMsIHRydWUpO1xuXG4gICAgaWYgKGlubmVyLmxlbmd0aCA9PT0gMSAmJiBpbm5lclswXSBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSkge1xuICAgICAgYmFzZSA9IGlubmVyWzBdO1xuICAgICAgYmFzZS5jbGFzc2VzWzBdID0gXCJtb3BcIjsgLy8gcmVwbGFjZSBvbGQgbWNsYXNzXG4gICAgfSBlbHNlIHtcbiAgICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3BcIl0sIGJ1aWxkQ29tbW9uLnRyeUNvbWJpbmVDaGFycyhpbm5lciksIG9wdGlvbnMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIHRoaXMgaXMgYSB0ZXh0IG9wZXJhdG9yLiBCdWlsZCB0aGUgdGV4dCBmcm9tIHRoZVxuICAgIC8vIG9wZXJhdG9yJ3MgbmFtZS5cbiAgICAvLyBUT0RPKGVtaWx5KTogQWRkIGEgc3BhY2UgaW4gdGhlIG1pZGRsZSBvZiBzb21lIG9mIHRoZXNlXG4gICAgLy8gb3BlcmF0b3JzLCBsaWtlIFxcbGltc3VwXG4gICAgdmFyIG91dHB1dCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBncm91cC5uYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvdXRwdXQucHVzaChidWlsZENvbW1vbi5tYXRoc3ltKGdyb3VwLm5hbWVbaV0sIGdyb3VwLm1vZGUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBiYXNlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9wXCJdLCBvdXRwdXQsIG9wdGlvbnMpO1xuICB9IC8vIElmIGNvbnRlbnQgb2Ygb3AgaXMgYSBzaW5nbGUgc3ltYm9sLCBzaGlmdCBpdCB2ZXJ0aWNhbGx5LlxuXG5cbiAgdmFyIGJhc2VTaGlmdCA9IDA7XG4gIHZhciBzbGFudCA9IDA7XG5cbiAgaWYgKChiYXNlIGluc3RhbmNlb2YgZG9tVHJlZV9TeW1ib2xOb2RlIHx8IGdyb3VwLm5hbWUgPT09IFwiXFxcXG9paW50XCIgfHwgZ3JvdXAubmFtZSA9PT0gXCJcXFxcb2lpaW50XCIpICYmICFncm91cC5zdXBwcmVzc0Jhc2VTaGlmdCkge1xuICAgIC8vIFdlIHN1cHByZXNzIHRoZSBzaGlmdCBvZiB0aGUgYmFzZSBvZiBcXG92ZXJzZXQgYW5kIFxcdW5kZXJzZXQuIE90aGVyd2lzZSxcbiAgICAvLyBzaGlmdCB0aGUgc3ltYm9sIHNvIGl0cyBjZW50ZXIgbGllcyBvbiB0aGUgYXhpcyAocnVsZSAxMykuIEl0XG4gICAgLy8gYXBwZWFycyB0aGF0IG91ciBmb250cyBoYXZlIHRoZSBjZW50ZXJzIG9mIHRoZSBzeW1ib2xzIGFscmVhZHlcbiAgICAvLyBhbG1vc3Qgb24gdGhlIGF4aXMsIHNvIHRoZXNlIG51bWJlcnMgYXJlIHZlcnkgc21hbGwuIE5vdGUgd2VcbiAgICAvLyBkb24ndCBhY3R1YWxseSBhcHBseSB0aGlzIGhlcmUsIGJ1dCBpbnN0ZWFkIGl0IGlzIHVzZWQgZWl0aGVyIGluXG4gICAgLy8gdGhlIHZsaXN0IGNyZWF0aW9uIG9yIHNlcGFyYXRlbHkgd2hlbiB0aGVyZSBhcmUgbm8gbGltaXRzLlxuICAgIGJhc2VTaGlmdCA9IChiYXNlLmhlaWdodCAtIGJhc2UuZGVwdGgpIC8gMiAtIG9wdGlvbnMuZm9udE1ldHJpY3MoKS5heGlzSGVpZ2h0OyAvLyBUaGUgc2xhbnQgb2YgdGhlIHN5bWJvbCBpcyBqdXN0IGl0cyBpdGFsaWMgY29ycmVjdGlvbi5cbiAgICAvLyAkRmxvd0ZpeE1lXG5cbiAgICBzbGFudCA9IGJhc2UuaXRhbGljO1xuICB9XG5cbiAgaWYgKGhhc0xpbWl0cykge1xuICAgIHJldHVybiBhc3NlbWJsZVN1cFN1Yl9hc3NlbWJsZVN1cFN1YihiYXNlLCBzdXBHcm91cCwgc3ViR3JvdXAsIG9wdGlvbnMsIHN0eWxlLCBzbGFudCwgYmFzZVNoaWZ0KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoYmFzZVNoaWZ0KSB7XG4gICAgICBiYXNlLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgICAgYmFzZS5zdHlsZS50b3AgPSBiYXNlU2hpZnQgKyBcImVtXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbn07XG5cbnZhciBvcF9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICB2YXIgbm9kZTtcblxuICBpZiAoZ3JvdXAuc3ltYm9sKSB7XG4gICAgLy8gVGhpcyBpcyBhIHN5bWJvbC4gSnVzdCBhZGQgdGhlIHN5bWJvbC5cbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBbYnVpbGRNYXRoTUxfbWFrZVRleHQoZ3JvdXAubmFtZSwgZ3JvdXAubW9kZSldKTtcblxuICAgIGlmICh1dGlscy5jb250YWlucyhub1N1Y2Nlc3NvciwgZ3JvdXAubmFtZSkpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibGFyZ2VvcFwiLCBcImZhbHNlXCIpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChncm91cC5ib2R5KSB7XG4gICAgLy8gVGhpcyBpcyBhbiBvcGVyYXRvciB3aXRoIGNoaWxkcmVuLiBBZGQgdGhlbS5cbiAgICBub2RlID0gbmV3IG1hdGhNTFRyZWVfTWF0aE5vZGUoXCJtb1wiLCBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucykpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSB0ZXh0IG9wZXJhdG9yLiBBZGQgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlXG4gICAgLy8gb3BlcmF0b3IncyBuYW1lLlxuICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZV9NYXRoTm9kZShcIm1pXCIsIFtuZXcgbWF0aE1MVHJlZV9UZXh0Tm9kZShncm91cC5uYW1lLnNsaWNlKDEpKV0pOyAvLyBBcHBlbmQgYW4gPG1vPiZBcHBseUZ1bmN0aW9uOzwvbW8+LlxuICAgIC8vIHJlZjogaHR0cHM6Ly93d3cudzMub3JnL1RSL1JFQy1NYXRoTUwvY2hhcDNfMi5odG1sI3NlYzMuMi40XG5cbiAgICB2YXIgb3BlcmF0b3IgPSBuZXcgbWF0aE1MVHJlZV9NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChcIlxcdTIwNjFcIiwgXCJ0ZXh0XCIpXSk7XG5cbiAgICBpZiAoZ3JvdXAucGFyZW50SXNTdXBTdWIpIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZV9NYXRoTm9kZShcIm1vXCIsIFtub2RlLCBvcGVyYXRvcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gbmV3RG9jdW1lbnRGcmFnbWVudChbbm9kZSwgb3BlcmF0b3JdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBzaW5nbGVDaGFyQmlnT3BzID0ge1xuICBcIlxcdTIyMEZcIjogXCJcXFxccHJvZFwiLFxuICBcIlxcdTIyMTBcIjogXCJcXFxcY29wcm9kXCIsXG4gIFwiXFx1MjIxMVwiOiBcIlxcXFxzdW1cIixcbiAgXCJcXHUyMkMwXCI6IFwiXFxcXGJpZ3dlZGdlXCIsXG4gIFwiXFx1MjJDMVwiOiBcIlxcXFxiaWd2ZWVcIixcbiAgXCJcXHUyMkMyXCI6IFwiXFxcXGJpZ2NhcFwiLFxuICBcIlxcdTIyQzNcIjogXCJcXFxcYmlnY3VwXCIsXG4gIFwiXFx1MkEwMFwiOiBcIlxcXFxiaWdvZG90XCIsXG4gIFwiXFx1MkEwMVwiOiBcIlxcXFxiaWdvcGx1c1wiLFxuICBcIlxcdTJBMDJcIjogXCJcXFxcYmlnb3RpbWVzXCIsXG4gIFwiXFx1MkEwNFwiOiBcIlxcXFxiaWd1cGx1c1wiLFxuICBcIlxcdTJBMDZcIjogXCJcXFxcYmlnc3FjdXBcIlxufTtcbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXGNvcHJvZFwiLCBcIlxcXFxiaWd2ZWVcIiwgXCJcXFxcYmlnd2VkZ2VcIiwgXCJcXFxcYmlndXBsdXNcIiwgXCJcXFxcYmlnY2FwXCIsIFwiXFxcXGJpZ2N1cFwiLCBcIlxcXFxpbnRvcFwiLCBcIlxcXFxwcm9kXCIsIFwiXFxcXHN1bVwiLCBcIlxcXFxiaWdvdGltZXNcIiwgXCJcXFxcYmlnb3BsdXNcIiwgXCJcXFxcYmlnb2RvdFwiLCBcIlxcXFxiaWdzcWN1cFwiLCBcIlxcXFxzbWFsbGludFwiLCBcIlxcdTIyMEZcIiwgXCJcXHUyMjEwXCIsIFwiXFx1MjIxMVwiLCBcIlxcdTIyQzBcIiwgXCJcXHUyMkMxXCIsIFwiXFx1MjJDMlwiLCBcIlxcdTIyQzNcIiwgXCJcXHUyQTAwXCIsIFwiXFx1MkEwMVwiLCBcIlxcdTJBMDJcIiwgXCJcXHUyQTA0XCIsIFwiXFx1MkEwNlwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBmTmFtZSA9IGZ1bmNOYW1lO1xuXG4gICAgaWYgKGZOYW1lLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZk5hbWUgPSBzaW5nbGVDaGFyQmlnT3BzW2ZOYW1lXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsaW1pdHM6IHRydWUsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IHRydWUsXG4gICAgICBuYW1lOiBmTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBvcF9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BfbWF0aG1sQnVpbGRlclxufSk7IC8vIE5vdGU6IGNhbGxpbmcgZGVmaW5lRnVuY3Rpb24gd2l0aCBhIHR5cGUgdGhhdCdzIGFscmVhZHkgYmVlbiBkZWZpbmVkIG9ubHlcbi8vIHdvcmtzIGJlY2F1c2UgdGhlIHNhbWUgaHRtbEJ1aWxkZXIgYW5kIG1hdGhtbEJ1aWxkZXIgYXJlIGJlaW5nIHVzZWQuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXG1hdGhvcFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZjIsIGFyZ3MpIHtcbiAgICB2YXIgcGFyc2VyID0gX3JlZjIucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsaW1pdHM6IGZhbHNlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgIGJvZHk6IGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGJvZHkpXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTsgLy8gVGhlcmUgYXJlIDIgZmxhZ3MgZm9yIG9wZXJhdG9yczsgd2hldGhlciB0aGV5IHByb2R1Y2UgbGltaXRzIGluXG4vLyBkaXNwbGF5c3R5bGUsIGFuZCB3aGV0aGVyIHRoZXkgYXJlIHN5bWJvbHMgYW5kIHNob3VsZCBncm93IGluXG4vLyBkaXNwbGF5c3R5bGUuIFRoZXNlIGZvdXIgZ3JvdXBzIGNvdmVyIHRoZSBmb3VyIHBvc3NpYmxlIGNob2ljZXMuXG5cbnZhciBzaW5nbGVDaGFySW50ZWdyYWxzID0ge1xuICBcIlxcdTIyMkJcIjogXCJcXFxcaW50XCIsXG4gIFwiXFx1MjIyQ1wiOiBcIlxcXFxpaW50XCIsXG4gIFwiXFx1MjIyRFwiOiBcIlxcXFxpaWludFwiLFxuICBcIlxcdTIyMkVcIjogXCJcXFxcb2ludFwiLFxuICBcIlxcdTIyMkZcIjogXCJcXFxcb2lpbnRcIixcbiAgXCJcXHUyMjMwXCI6IFwiXFxcXG9paWludFwiXG59OyAvLyBObyBsaW1pdHMsIG5vdCBzeW1ib2xzXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcFwiLFxuICBuYW1lczogW1wiXFxcXGFyY3NpblwiLCBcIlxcXFxhcmNjb3NcIiwgXCJcXFxcYXJjdGFuXCIsIFwiXFxcXGFyY3RnXCIsIFwiXFxcXGFyY2N0Z1wiLCBcIlxcXFxhcmdcIiwgXCJcXFxcY2hcIiwgXCJcXFxcY29zXCIsIFwiXFxcXGNvc2VjXCIsIFwiXFxcXGNvc2hcIiwgXCJcXFxcY290XCIsIFwiXFxcXGNvdGdcIiwgXCJcXFxcY290aFwiLCBcIlxcXFxjc2NcIiwgXCJcXFxcY3RnXCIsIFwiXFxcXGN0aFwiLCBcIlxcXFxkZWdcIiwgXCJcXFxcZGltXCIsIFwiXFxcXGV4cFwiLCBcIlxcXFxob21cIiwgXCJcXFxca2VyXCIsIFwiXFxcXGxnXCIsIFwiXFxcXGxuXCIsIFwiXFxcXGxvZ1wiLCBcIlxcXFxzZWNcIiwgXCJcXFxcc2luXCIsIFwiXFxcXHNpbmhcIiwgXCJcXFxcc2hcIiwgXCJcXFxcdGFuXCIsIFwiXFxcXHRhbmhcIiwgXCJcXFxcdGdcIiwgXCJcXFxcdGhcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYzLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmMy5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsaW1pdHM6IGZhbHNlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlLFxuICAgICAgc3ltYm9sOiBmYWxzZSxcbiAgICAgIG5hbWU6IGZ1bmNOYW1lXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTsgLy8gTGltaXRzLCBub3Qgc3ltYm9sc1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwib3BcIixcbiAgbmFtZXM6IFtcIlxcXFxkZXRcIiwgXCJcXFxcZ2NkXCIsIFwiXFxcXGluZlwiLCBcIlxcXFxsaW1cIiwgXCJcXFxcbWF4XCIsIFwiXFxcXG1pblwiLCBcIlxcXFxQclwiLCBcIlxcXFxzdXBcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY0KSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY0LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNC5mdW5jTmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvcFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBsaW1pdHM6IHRydWUsXG4gICAgICBwYXJlbnRJc1N1cFN1YjogZmFsc2UsXG4gICAgICBzeW1ib2w6IGZhbHNlLFxuICAgICAgbmFtZTogZnVuY05hbWVcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogb3BfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IG9wX21hdGhtbEJ1aWxkZXJcbn0pOyAvLyBObyBsaW1pdHMsIHN5bWJvbHNcblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcIm9wXCIsXG4gIG5hbWVzOiBbXCJcXFxcaW50XCIsIFwiXFxcXGlpbnRcIiwgXCJcXFxcaWlpbnRcIiwgXCJcXFxcb2ludFwiLCBcIlxcXFxvaWludFwiLCBcIlxcXFxvaWlpbnRcIiwgXCJcXHUyMjJCXCIsIFwiXFx1MjIyQ1wiLCBcIlxcdTIyMkRcIiwgXCJcXHUyMjJFXCIsIFwiXFx1MjIyRlwiLCBcIlxcdTIyMzBcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMFxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWY1KSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWY1LnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmNS5mdW5jTmFtZTtcbiAgICB2YXIgZk5hbWUgPSBmdW5jTmFtZTtcblxuICAgIGlmIChmTmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZOYW1lID0gc2luZ2xlQ2hhckludGVncmFsc1tmTmFtZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwib3BcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgbGltaXRzOiBmYWxzZSxcbiAgICAgIHBhcmVudElzU3VwU3ViOiBmYWxzZSxcbiAgICAgIHN5bWJvbDogdHJ1ZSxcbiAgICAgIG5hbWU6IGZOYW1lXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wX2h0bWxCdWlsZGVyLFxuICBtYXRobWxCdWlsZGVyOiBvcF9tYXRobWxCdWlsZGVyXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vcGVyYXRvcm5hbWUuanNcblxuXG5cblxuXG5cblxuXG4vLyBOT1RFOiBVbmxpa2UgbW9zdCBgaHRtbEJ1aWxkZXJgcywgdGhpcyBvbmUgaGFuZGxlcyBub3Qgb25seVxuLy8gXCJvcGVyYXRvcm5hbWVcIiwgYnV0IGFsc28gIFwic3Vwc3ViXCIgc2luY2UgXFxvcGVyYXRvcm5hbWUqIGNhblxudmFyIG9wZXJhdG9ybmFtZV9odG1sQnVpbGRlciA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdycCwgb3B0aW9ucykge1xuICAvLyBPcGVyYXRvcnMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgcGcuIDQ0My00NDQsIHJ1bGUgMTMoYSkuXG4gIHZhciBzdXBHcm91cDtcbiAgdmFyIHN1Ykdyb3VwO1xuICB2YXIgaGFzTGltaXRzID0gZmFsc2U7XG4gIHZhciBncm91cDtcbiAgdmFyIHN1cFN1YiA9IGNoZWNrTm9kZVR5cGUoZ3JwLCBcInN1cHN1YlwiKTtcblxuICBpZiAoc3VwU3ViKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBsaW1pdHMsIHN1cHN1YiB3aWxsIHBhc3MgdXMgaXRzIGdyb3VwIHRvIGhhbmRsZS4gUHVsbFxuICAgIC8vIG91dCB0aGUgc3VwZXJzY3JpcHQgYW5kIHN1YnNjcmlwdCBhbmQgc2V0IHRoZSBncm91cCB0byB0aGUgb3AgaW5cbiAgICAvLyBpdHMgYmFzZS5cbiAgICBzdXBHcm91cCA9IHN1cFN1Yi5zdXA7XG4gICAgc3ViR3JvdXAgPSBzdXBTdWIuc3ViO1xuICAgIGdyb3VwID0gYXNzZXJ0Tm9kZVR5cGUoc3VwU3ViLmJhc2UsIFwib3BlcmF0b3JuYW1lXCIpO1xuICAgIGhhc0xpbWl0cyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgZ3JvdXAgPSBhc3NlcnROb2RlVHlwZShncnAsIFwib3BlcmF0b3JuYW1lXCIpO1xuICB9XG5cbiAgdmFyIGJhc2U7XG5cbiAgaWYgKGdyb3VwLmJvZHkubGVuZ3RoID4gMCkge1xuICAgIHZhciBib2R5ID0gZ3JvdXAuYm9keS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lOiBDaGVjayBpZiB0aGUgbm9kZSBoYXMgYSBzdHJpbmcgYHRleHRgIHByb3BlcnR5LlxuICAgICAgdmFyIGNoaWxkVGV4dCA9IGNoaWxkLnRleHQ7XG5cbiAgICAgIGlmICh0eXBlb2YgY2hpbGRUZXh0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgbW9kZTogY2hpbGQubW9kZSxcbiAgICAgICAgICB0ZXh0OiBjaGlsZFRleHRcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9KTsgLy8gQ29uc29saWRhdGUgZnVuY3Rpb24gbmFtZXMgaW50byBzeW1ib2wgY2hhcmFjdGVycy5cblxuICAgIHZhciBleHByZXNzaW9uID0gYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihib2R5LCBvcHRpb25zLndpdGhGb250KFwibWF0aHJtXCIpLCB0cnVlKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gZXhwcmVzc2lvbltpXTtcblxuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgZG9tVHJlZV9TeW1ib2xOb2RlKSB7XG4gICAgICAgIC8vIFBlciBhbXNvcG4gcGFja2FnZSxcbiAgICAgICAgLy8gY2hhbmdlIG1pbnVzIHRvIGh5cGhlbiBhbmQgXFxhc3QgdG8gYXN0ZXJpc2tcbiAgICAgICAgY2hpbGQudGV4dCA9IGNoaWxkLnRleHQucmVwbGFjZSgvXFx1MjIxMi8sIFwiLVwiKS5yZXBsYWNlKC9cXHUyMjE3LywgXCIqXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3BcIl0sIGV4cHJlc3Npb24sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGJhc2UgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3BcIl0sIFtdLCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmIChoYXNMaW1pdHMpIHtcbiAgICByZXR1cm4gYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIoYmFzZSwgc3VwR3JvdXAsIHN1Ykdyb3VwLCBvcHRpb25zLCBvcHRpb25zLnN0eWxlLCAwLCAwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTtcbiAgfVxufTtcblxudmFyIG9wZXJhdG9ybmFtZV9tYXRobWxCdWlsZGVyID0gZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAvLyBUaGUgc3RlcHMgdGFrZW4gaGVyZSBhcmUgc2ltaWxhciB0byB0aGUgaHRtbCB2ZXJzaW9uLlxuICB2YXIgZXhwcmVzc2lvbiA9IGJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLndpdGhGb250KFwibWF0aHJtXCIpKTsgLy8gSXMgZXhwcmVzc2lvbiBhIHN0cmluZyBvciBoYXMgaXQgc29tZXRoaW5nIGxpa2UgYSBmcmFjdGlvbj9cblxuICB2YXIgaXNBbGxTdHJpbmcgPSB0cnVlOyAvLyBkZWZhdWx0XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHByZXNzaW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBleHByZXNzaW9uW2ldO1xuXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBtYXRoTUxUcmVlLlNwYWNlTm9kZSkgey8vIERvIG5vdGhpbmdcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBtYXRoTUxUcmVlLk1hdGhOb2RlKSB7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwibWlcIjpcbiAgICAgICAgY2FzZSBcIm1uXCI6XG4gICAgICAgIGNhc2UgXCJtc1wiOlxuICAgICAgICBjYXNlIFwibXNwYWNlXCI6XG4gICAgICAgIGNhc2UgXCJtdGV4dFwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBEbyBub3RoaW5nIHlldC5cblxuICAgICAgICBjYXNlIFwibW9cIjpcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuWzBdO1xuXG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgY2hpbGQgaW5zdGFuY2VvZiBtYXRoTUxUcmVlLlRleHROb2RlKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnRleHQgPSBjaGlsZC50ZXh0LnJlcGxhY2UoL1xcdTIyMTIvLCBcIi1cIikucmVwbGFjZSgvXFx1MjIxNy8sIFwiKlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlzQWxsU3RyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlzQWxsU3RyaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzQWxsU3RyaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzQWxsU3RyaW5nKSB7XG4gICAgLy8gV3JpdGUgYSBzaW5nbGUgVGV4dE5vZGUgaW5zdGVhZCBvZiBtdWx0aXBsZSBuZXN0ZWQgdGFncy5cbiAgICB2YXIgd29yZCA9IGV4cHJlc3Npb24ubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50b1RleHQoKTtcbiAgICB9KS5qb2luKFwiXCIpO1xuICAgIGV4cHJlc3Npb24gPSBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUod29yZCldO1xuICB9XG5cbiAgdmFyIGlkZW50aWZpZXIgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIGV4cHJlc3Npb24pO1xuICBpZGVudGlmaWVyLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIFwibm9ybWFsXCIpOyAvLyBcXHUyMDYxIGlzIHRoZSBzYW1lIGFzICZBcHBseUZ1bmN0aW9uO1xuICAvLyByZWY6IGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vY2hhcnNldHMvcmVmX2h0bWxfZW50aXRpZXNfYS5hc3BcblxuICB2YXIgb3BlcmF0b3IgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChcIlxcdTIwNjFcIiwgXCJ0ZXh0XCIpXSk7XG5cbiAgaWYgKGdyb3VwLnBhcmVudElzU3VwU3ViKSB7XG4gICAgcmV0dXJuIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW2lkZW50aWZpZXIsIG9wZXJhdG9yXSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG1hdGhNTFRyZWUubmV3RG9jdW1lbnRGcmFnbWVudChbaWRlbnRpZmllciwgb3BlcmF0b3JdKTtcbiAgfVxufTsgLy8gXFxvcGVyYXRvcm5hbWVcbi8vIGFtc29wbi5kdHg6IFxcbWF0aG9weyMxXFxrZXJuXFx6QFxcb3BlcmF0b3JAZm9udCMzfVxcbmV3bWNvZGVzQFxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvcGVyYXRvcm5hbWVcIixcbiAgbmFtZXM6IFtcIlxcXFxvcGVyYXRvcm5hbWVcIiwgXCJcXFxcb3BlcmF0b3JuYW1lKlwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcixcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvcGVyYXRvcm5hbWVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSksXG4gICAgICBhbHdheXNIYW5kbGVTdXBTdWI6IGZ1bmNOYW1lID09PSBcIlxcXFxvcGVyYXRvcm5hbWUqXCIsXG4gICAgICBsaW1pdHM6IGZhbHNlLFxuICAgICAgcGFyZW50SXNTdXBTdWI6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IG9wZXJhdG9ybmFtZV9odG1sQnVpbGRlcixcbiAgbWF0aG1sQnVpbGRlcjogb3BlcmF0b3JuYW1lX21hdGhtbEJ1aWxkZXJcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL29yZGdyb3VwLmpzXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIGlmIChncm91cC5zZW1pc2ltcGxlKSB7XG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucywgZmFsc2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgYnVpbGRIVE1MX2J1aWxkRXhwcmVzc2lvbihncm91cC5ib2R5LCBvcHRpb25zLCB0cnVlKSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLmJvZHksIG9wdGlvbnMsIHRydWUpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9vdmVybGluZS5qc1xuXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJvdmVybGluZVwiLFxuICBuYW1lczogW1wiXFxcXG92ZXJsaW5lXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJvdmVybGluZVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gT3ZlcmxpbmVzIGFyZSBoYW5kbGVkIGluIHRoZSBUZVhib29rIHBnIDQ0MywgUnVsZSA5LlxuICAgIC8vIEJ1aWxkIHRoZSBpbm5lciBncm91cCBpbiB0aGUgY3JhbXBlZCBzdHlsZS5cbiAgICB2YXIgaW5uZXJHcm91cCA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpOyAvLyBDcmVhdGUgdGhlIGxpbmUgYWJvdmUgdGhlIGJvZHlcblxuICAgIHZhciBsaW5lID0gYnVpbGRDb21tb24ubWFrZUxpbmVTcGFuKFwib3ZlcmxpbmUtbGluZVwiLCBvcHRpb25zKTsgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuXG4gICAgdmFyIGRlZmF1bHRSdWxlVGhpY2tuZXNzID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlZmF1bHRSdWxlVGhpY2tuZXNzO1xuICAgIHZhciB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lckdyb3VwXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAzICogZGVmYXVsdFJ1bGVUaGlja25lc3NcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGxpbmVcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJrZXJuXCIsXG4gICAgICAgIHNpemU6IGRlZmF1bHRSdWxlVGhpY2tuZXNzXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwib3ZlcmxpbmVcIl0sIFt2bGlzdF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG9wZXJhdG9yID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb1wiLCBbbmV3IG1hdGhNTFRyZWUuVGV4dE5vZGUoXCJcXHUyMDNFXCIpXSk7XG4gICAgb3BlcmF0b3Iuc2V0QXR0cmlidXRlKFwic3RyZXRjaHlcIiwgXCJ0cnVlXCIpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtb3ZlclwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKSwgb3BlcmF0b3JdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImFjY2VudFwiLCBcInRydWVcIik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3BoYW50b20uanNcblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwicGhhbnRvbVwiLFxuICBuYW1lczogW1wiXFxcXHBoYW50b21cIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwicGhhbnRvbVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBkZWZpbmVGdW5jdGlvbl9vcmRhcmd1bWVudChib2R5KVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBlbGVtZW50cyA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoUGhhbnRvbSgpLCBmYWxzZSk7IC8vIFxccGhhbnRvbSBpc24ndCBzdXBwb3NlZCB0byBhZmZlY3QgdGhlIGVsZW1lbnRzIGl0IGNvbnRhaW5zLlxuICAgIC8vIFNlZSBcImNvbG9yXCIgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlRnJhZ21lbnQoZWxlbWVudHMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1waGFudG9tXCIsIGlubmVyKTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwiaHBoYW50b21cIixcbiAgbmFtZXM6IFtcIlxcXFxocGhhbnRvbVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMiwgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMi5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImhwaGFudG9tXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtdLCBbYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucy53aXRoUGhhbnRvbSgpKV0pO1xuICAgIG5vZGUuaGVpZ2h0ID0gMDtcbiAgICBub2RlLmRlcHRoID0gMDtcblxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbltpXS5oZWlnaHQgPSAwO1xuICAgICAgICBub2RlLmNoaWxkcmVuW2ldLmRlcHRoID0gMDtcbiAgICAgIH1cbiAgICB9IC8vIFNlZSBzbWFzaCBmb3IgY29tbWVudCByZTogdXNlIG9mIG1ha2VWTGlzdFxuXG5cbiAgICBub2RlID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IG5vZGVcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7IC8vIEZvciBzcGFjaW5nLCBUZVggdHJlYXRzIFxcc21hc2ggYXMgYSBtYXRoIGdyb3VwIChzYW1lIHNwYWNpbmcgYXMgb3JkKS5cblxuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCJdLCBbbm9kZV0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGdyb3VwLmJvZHkpLCBvcHRpb25zKTtcbiAgICB2YXIgcGhhbnRvbSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBoYW50b21cIiwgaW5uZXIpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtwaGFudG9tXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIwcHhcIik7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkZXB0aFwiLCBcIjBweFwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidnBoYW50b21cIixcbiAgbmFtZXM6IFtcIlxcXFx2cGhhbnRvbVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmMywgYXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmMy5wYXJzZXI7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInZwaGFudG9tXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGJvZHk6IGJvZHlcbiAgICB9O1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgaW5uZXIgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJpbm5lclwiXSwgW2J1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMud2l0aFBoYW50b20oKSldKTtcbiAgICB2YXIgZml4ID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wiZml4XCJdLCBbXSk7XG4gICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJybGFwXCJdLCBbaW5uZXIsIGZpeF0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGRlZmluZUZ1bmN0aW9uX29yZGFyZ3VtZW50KGdyb3VwLmJvZHkpLCBvcHRpb25zKTtcbiAgICB2YXIgcGhhbnRvbSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBoYW50b21cIiwgaW5uZXIpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtcGFkZGVkXCIsIFtwaGFudG9tXSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjBweFwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvcmFpc2Vib3guanNcblxuXG5cblxuXG5cbiAvLyBCb3ggbWFuaXB1bGF0aW9uXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJyYWlzZWJveFwiLFxuICBuYW1lczogW1wiXFxcXHJhaXNlYm94XCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDIsXG4gICAgYXJnVHlwZXM6IFtcInNpemVcIiwgXCJoYm94XCJdLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBhbW91bnQgPSBhc3NlcnROb2RlVHlwZShhcmdzWzBdLCBcInNpemVcIikudmFsdWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInJhaXNlYm94XCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIGR5OiBhbW91bnQsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIGJvZHkgPSBidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKTtcbiAgICB2YXIgZHkgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmR5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgcG9zaXRpb25EYXRhOiAtZHksXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGJvZHlcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuICAgIHZhciBkeSA9IGdyb3VwLmR5Lm51bWJlciArIGdyb3VwLmR5LnVuaXQ7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ2b2Zmc2V0XCIsIGR5KTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvcnVsZS5qc1xuXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJydWxlXCIsXG4gIG5hbWVzOiBbXCJcXFxccnVsZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAyLFxuICAgIG51bU9wdGlvbmFsQXJnczogMSxcbiAgICBhcmdUeXBlczogW1wic2l6ZVwiLCBcInNpemVcIiwgXCJzaXplXCJdXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgc2hpZnQgPSBvcHRBcmdzWzBdO1xuICAgIHZhciB3aWR0aCA9IGFzc2VydE5vZGVUeXBlKGFyZ3NbMF0sIFwic2l6ZVwiKTtcbiAgICB2YXIgaGVpZ2h0ID0gYXNzZXJ0Tm9kZVR5cGUoYXJnc1sxXSwgXCJzaXplXCIpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInJ1bGVcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgc2hpZnQ6IHNoaWZ0ICYmIGFzc2VydE5vZGVUeXBlKHNoaWZ0LCBcInNpemVcIikudmFsdWUsXG4gICAgICB3aWR0aDogd2lkdGgudmFsdWUsXG4gICAgICBoZWlnaHQ6IGhlaWdodC52YWx1ZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIE1ha2UgYW4gZW1wdHkgc3BhbiBmb3IgdGhlIHJ1bGVcbiAgICB2YXIgcnVsZSA9IGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJydWxlXCJdLCBbXSwgb3B0aW9ucyk7IC8vIENhbGN1bGF0ZSB0aGUgc2hpZnQsIHdpZHRoLCBhbmQgaGVpZ2h0IG9mIHRoZSBydWxlLCBhbmQgYWNjb3VudCBmb3IgdW5pdHNcblxuICAgIHZhciB3aWR0aCA9IHVuaXRzX2NhbGN1bGF0ZVNpemUoZ3JvdXAud2lkdGgsIG9wdGlvbnMpO1xuICAgIHZhciBoZWlnaHQgPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLmhlaWdodCwgb3B0aW9ucyk7XG4gICAgdmFyIHNoaWZ0ID0gZ3JvdXAuc2hpZnQgPyB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLnNoaWZ0LCBvcHRpb25zKSA6IDA7IC8vIFN0eWxlIHRoZSBydWxlIHRvIHRoZSByaWdodCBzaXplXG5cbiAgICBydWxlLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSB3aWR0aCArIFwiZW1cIjtcbiAgICBydWxlLnN0eWxlLmJvcmRlclRvcFdpZHRoID0gaGVpZ2h0ICsgXCJlbVwiO1xuICAgIHJ1bGUuc3R5bGUuYm90dG9tID0gc2hpZnQgKyBcImVtXCI7IC8vIFJlY29yZCB0aGUgaGVpZ2h0IGFuZCB3aWR0aFxuXG4gICAgcnVsZS53aWR0aCA9IHdpZHRoO1xuICAgIHJ1bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgc2hpZnQ7XG4gICAgcnVsZS5kZXB0aCA9IC1zaGlmdDsgLy8gRm9udCBzaXplIGlzIHRoZSBudW1iZXIgbGFyZ2UgZW5vdWdoIHRoYXQgdGhlIGJyb3dzZXIgd2lsbFxuICAgIC8vIHJlc2VydmUgYXQgbGVhc3QgYGFic0hlaWdodGAgc3BhY2UgYWJvdmUgdGhlIGJhc2VsaW5lLlxuICAgIC8vIFRoZSAxLjEyNSBmYWN0b3Igd2FzIGVtcGlyaWNhbGx5IGRldGVybWluZWRcblxuICAgIHJ1bGUubWF4Rm9udFNpemUgPSBoZWlnaHQgKiAxLjEyNSAqIG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgd2lkdGggPSB1bml0c19jYWxjdWxhdGVTaXplKGdyb3VwLndpZHRoLCBvcHRpb25zKTtcbiAgICB2YXIgaGVpZ2h0ID0gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5oZWlnaHQsIG9wdGlvbnMpO1xuICAgIHZhciBzaGlmdCA9IGdyb3VwLnNoaWZ0ID8gdW5pdHNfY2FsY3VsYXRlU2l6ZShncm91cC5zaGlmdCwgb3B0aW9ucykgOiAwO1xuICAgIHZhciBjb2xvciA9IG9wdGlvbnMuY29sb3IgJiYgb3B0aW9ucy5nZXRDb2xvcigpIHx8IFwiYmxhY2tcIjtcbiAgICB2YXIgcnVsZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXNwYWNlXCIpO1xuICAgIHJ1bGUuc2V0QXR0cmlidXRlKFwibWF0aGJhY2tncm91bmRcIiwgY29sb3IpO1xuICAgIHJ1bGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgd2lkdGggKyBcImVtXCIpO1xuICAgIHJ1bGUuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGhlaWdodCArIFwiZW1cIik7XG4gICAgdmFyIHdyYXBwZXIgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1wYWRkZWRcIiwgW3J1bGVdKTtcblxuICAgIGlmIChzaGlmdCA+PSAwKSB7XG4gICAgICB3cmFwcGVyLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIitcIiArIHNoaWZ0ICsgXCJlbVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgc2hpZnQgKyBcImVtXCIpO1xuICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJkZXB0aFwiLCBcIitcIiArIC1zaGlmdCArIFwiZW1cIik7XG4gICAgfVxuXG4gICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJ2b2Zmc2V0XCIsIHNoaWZ0ICsgXCJlbVwiKTtcbiAgICByZXR1cm4gd3JhcHBlcjtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc2l6aW5nLmpzXG5cblxuXG5cblxuZnVuY3Rpb24gc2l6aW5nR3JvdXAodmFsdWUsIG9wdGlvbnMsIGJhc2VPcHRpb25zKSB7XG4gIHZhciBpbm5lciA9IGJ1aWxkSFRNTF9idWlsZEV4cHJlc3Npb24odmFsdWUsIG9wdGlvbnMsIGZhbHNlKTtcbiAgdmFyIG11bHRpcGxpZXIgPSBvcHRpb25zLnNpemVNdWx0aXBsaWVyIC8gYmFzZU9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7IC8vIEFkZCBzaXplLXJlc2V0dGluZyBjbGFzc2VzIHRvIHRoZSBpbm5lciBsaXN0IGFuZCBzZXQgbWF4Rm9udFNpemVcbiAgLy8gbWFudWFsbHkuIEhhbmRsZSBuZXN0ZWQgc2l6ZSBjaGFuZ2VzLlxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcG9zID0gaW5uZXJbaV0uY2xhc3Nlcy5pbmRleE9mKFwic2l6aW5nXCIpO1xuXG4gICAgaWYgKHBvcyA8IDApIHtcbiAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGlubmVyW2ldLmNsYXNzZXMsIG9wdGlvbnMuc2l6aW5nQ2xhc3NlcyhiYXNlT3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoaW5uZXJbaV0uY2xhc3Nlc1twb3MgKyAxXSA9PT0gXCJyZXNldC1zaXplXCIgKyBvcHRpb25zLnNpemUpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBuZXN0ZWQgc2l6ZSBjaGFuZ2U6IGUuZy4sIGlubmVyW2ldIGlzIHRoZSBcImJcIiBpblxuICAgICAgLy8gYFxcSHVnZSBhIFxcc21hbGwgYmAuIE92ZXJyaWRlIHRoZSBvbGQgc2l6ZSAodGhlIGByZXNldC1gIGNsYXNzKVxuICAgICAgLy8gYnV0IG5vdCB0aGUgbmV3IHNpemUuXG4gICAgICBpbm5lcltpXS5jbGFzc2VzW3BvcyArIDFdID0gXCJyZXNldC1zaXplXCIgKyBiYXNlT3B0aW9ucy5zaXplO1xuICAgIH1cblxuICAgIGlubmVyW2ldLmhlaWdodCAqPSBtdWx0aXBsaWVyO1xuICAgIGlubmVyW2ldLmRlcHRoICo9IG11bHRpcGxpZXI7XG4gIH1cblxuICByZXR1cm4gYnVpbGRDb21tb24ubWFrZUZyYWdtZW50KGlubmVyKTtcbn1cbnZhciBzaXplRnVuY3MgPSBbXCJcXFxcdGlueVwiLCBcIlxcXFxzaXhwdHNpemVcIiwgXCJcXFxcc2NyaXB0c2l6ZVwiLCBcIlxcXFxmb290bm90ZXNpemVcIiwgXCJcXFxcc21hbGxcIiwgXCJcXFxcbm9ybWFsc2l6ZVwiLCBcIlxcXFxsYXJnZVwiLCBcIlxcXFxMYXJnZVwiLCBcIlxcXFxMQVJHRVwiLCBcIlxcXFxodWdlXCIsIFwiXFxcXEh1Z2VcIl07XG52YXIgc2l6aW5nX2h0bWxCdWlsZGVyID0gZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgLy8gSGFuZGxlIHNpemluZyBvcGVyYXRvcnMgbGlrZSBcXEh1Z2UuIFJlYWwgVGVYIGRvZXNuJ3QgYWN0dWFsbHkgYWxsb3dcbiAgLy8gdGhlc2UgZnVuY3Rpb25zIGluc2lkZSBvZiBtYXRoIGV4cHJlc3Npb25zLCBzbyB3ZSBkbyBzb21lIHNwZWNpYWxcbiAgLy8gaGFuZGxpbmcuXG4gIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTaXplKGdyb3VwLnNpemUpO1xuICByZXR1cm4gc2l6aW5nR3JvdXAoZ3JvdXAuYm9keSwgbmV3T3B0aW9ucywgb3B0aW9ucyk7XG59O1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInNpemluZ1wiLFxuICBuYW1lczogc2l6ZUZ1bmNzLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgYnJlYWtPblRva2VuVGV4dCA9IF9yZWYuYnJlYWtPblRva2VuVGV4dCxcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lLFxuICAgICAgICBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24oZmFsc2UsIGJyZWFrT25Ub2tlblRleHQpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInNpemluZ1wiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc2l6ZSB0byB1c2UgYmFzZWQgb24gdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIGFib3ZlXG4gICAgICBzaXplOiBzaXplRnVuY3MuaW5kZXhPZihmdW5jTmFtZSkgKyAxLFxuICAgICAgYm9keTogYm9keVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBzaXppbmdfaHRtbEJ1aWxkZXIsXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU2l6ZShncm91cC5zaXplKTtcbiAgICB2YXIgaW5uZXIgPSBidWlsZE1hdGhNTF9idWlsZEV4cHJlc3Npb24oZ3JvdXAuYm9keSwgbmV3T3B0aW9ucyk7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1zdHlsZVwiLCBpbm5lcik7IC8vIFRPRE8oZW1pbHkpOiBUaGlzIGRvZXNuJ3QgcHJvZHVjZSB0aGUgY29ycmVjdCBzaXplIGZvciBuZXN0ZWQgc2l6ZVxuICAgIC8vIGNoYW5nZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga2VlcCBzdGF0ZSBvZiB3aGF0IHN0eWxlIHdlJ3JlIGN1cnJlbnRseVxuICAgIC8vIGluLCBzbyB3ZSBjYW4ndCByZXNldCB0aGUgc2l6ZSB0byBub3JtYWwgYmVmb3JlIGNoYW5naW5nIGl0LiAgTm93XG4gICAgLy8gdGhhdCB3ZSdyZSBwYXNzaW5nIGFuIG9wdGlvbnMgcGFyYW1ldGVyIHdlIHNob3VsZCBiZSBhYmxlIHRvIGZpeFxuICAgIC8vIHRoaXMuXG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGhzaXplXCIsIG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgKyBcImVtXCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zbWFzaC5qc1xuLy8gc21hc2gsIHdpdGggb3B0aW9uYWwgW3RiXSwgYXMgaW4gQU1TXG5cblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwic21hc2hcIixcbiAgbmFtZXM6IFtcIlxcXFxzbWFzaFwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIG51bU9wdGlvbmFsQXJnczogMSxcbiAgICBhbGxvd2VkSW5UZXh0OiB0cnVlXG4gIH0sXG4gIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoX3JlZiwgYXJncywgb3B0QXJncykge1xuICAgIHZhciBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICB2YXIgc21hc2hIZWlnaHQgPSBmYWxzZTtcbiAgICB2YXIgc21hc2hEZXB0aCA9IGZhbHNlO1xuICAgIHZhciB0YkFyZyA9IG9wdEFyZ3NbMF0gJiYgYXNzZXJ0Tm9kZVR5cGUob3B0QXJnc1swXSwgXCJvcmRncm91cFwiKTtcblxuICAgIGlmICh0YkFyZykge1xuICAgICAgLy8gT3B0aW9uYWwgW3RiXSBhcmd1bWVudCBpcyBlbmdhZ2VkLlxuICAgICAgLy8gcmVmOiBhbXNtYXRoOiBcXHJlbmV3Y29tbWFuZHtcXHNtYXNofVsxXVt0Yl17JVxuICAgICAgLy8gICAgICAgICAgICAgICBkZWZcXG1iQHR7XFxodH1cXGRlZlxcbWJAYntcXGRwfVxcZGVmXFxtYkB0YntcXGh0XFx6QFxcekBcXGRwfSVcbiAgICAgIHZhciBsZXR0ZXIgPSBcIlwiO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRiQXJnLmJvZHkubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIG5vZGUgPSB0YkFyZy5ib2R5W2ldOyAvLyAkRmxvd0ZpeE1lOiBOb3QgZXZlcnkgbm9kZSB0eXBlIGhhcyBhIGB0ZXh0YCBwcm9wZXJ0eS5cblxuICAgICAgICBsZXR0ZXIgPSBub2RlLnRleHQ7XG5cbiAgICAgICAgaWYgKGxldHRlciA9PT0gXCJ0XCIpIHtcbiAgICAgICAgICBzbWFzaEhlaWdodCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBcImJcIikge1xuICAgICAgICAgIHNtYXNoRGVwdGggPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNtYXNoSGVpZ2h0ID0gZmFsc2U7XG4gICAgICAgICAgc21hc2hEZXB0aCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNtYXNoSGVpZ2h0ID0gdHJ1ZTtcbiAgICAgIHNtYXNoRGVwdGggPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBib2R5ID0gYXJnc1swXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzbWFzaFwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBib2R5LFxuICAgICAgc21hc2hIZWlnaHQ6IHNtYXNoSGVpZ2h0LFxuICAgICAgc21hc2hEZXB0aDogc21hc2hEZXB0aFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW10sIFtidWlsZEhUTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuXG4gICAgaWYgKCFncm91cC5zbWFzaEhlaWdodCAmJiAhZ3JvdXAuc21hc2hEZXB0aCkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwLnNtYXNoSGVpZ2h0KSB7XG4gICAgICBub2RlLmhlaWdodCA9IDA7IC8vIEluIG9yZGVyIHRvIGluZmx1ZW5jZSBtYWtlVkxpc3QsIHdlIGhhdmUgdG8gcmVzZXQgdGhlIGNoaWxkcmVuLlxuXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuW2ldLmhlaWdodCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuc21hc2hEZXB0aCkge1xuICAgICAgbm9kZS5kZXB0aCA9IDA7XG5cbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW5bX2ldLmRlcHRoID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gQXQgdGhpcyBwb2ludCwgd2UndmUgcmVzZXQgdGhlIFRlWC1saWtlIGhlaWdodCBhbmQgZGVwdGggdmFsdWVzLlxuICAgIC8vIEJ1dCB0aGUgc3BhbiBzdGlsbCBoYXMgYW4gSFRNTCBsaW5lIGhlaWdodC5cbiAgICAvLyBtYWtlVkxpc3QgYXBwbGllcyBcImRpc3BsYXk6IHRhYmxlLWNlbGxcIiwgd2hpY2ggcHJldmVudHMgdGhlIGJyb3dzZXJcbiAgICAvLyBmcm9tIGFjdGluZyBvbiB0aGF0IGxpbmUgaGVpZ2h0LiBTbyB3ZSdsbCBjYWxsIG1ha2VWTGlzdCBub3cuXG5cblxuICAgIHZhciBzbWFzaGVkTm9kZSA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwiZmlyc3RCYXNlbGluZVwiLFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBub2RlXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpOyAvLyBGb3Igc3BhY2luZywgVGVYIHRyZWF0cyBcXGhwaGFudG9tIGFzIGEgbWF0aCBncm91cCAoc2FtZSBzcGFjaW5nIGFzIG9yZCkuXG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiXSwgW3NtYXNoZWROb2RlXSwgb3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXBhZGRlZFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5ib2R5LCBvcHRpb25zKV0pO1xuXG4gICAgaWYgKGdyb3VwLnNtYXNoSGVpZ2h0KSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIjBweFwiKTtcbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuc21hc2hEZXB0aCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkZXB0aFwiLCBcIjBweFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc3FydC5qc1xuXG5cblxuXG5cblxuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwic3FydFwiLFxuICBuYW1lczogW1wiXFxcXHNxcnRcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBudW1PcHRpb25hbEFyZ3M6IDFcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHZhciBpbmRleCA9IG9wdEFyZ3NbMF07XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInNxcnRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIC8vIFNxdWFyZSByb290cyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZy4gNDQzLCBSdWxlIDExLlxuICAgIC8vIEZpcnN0LCB3ZSBkbyB0aGUgc2FtZSBzdGVwcyBhcyBpbiBvdmVybGluZSB0byBidWlsZCB0aGUgaW5uZXIgZ3JvdXBcbiAgICAvLyBhbmQgbGluZVxuICAgIHZhciBpbm5lciA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMuaGF2aW5nQ3JhbXBlZFN0eWxlKCkpO1xuXG4gICAgaWYgKGlubmVyLmhlaWdodCA9PT0gMCkge1xuICAgICAgLy8gUmVuZGVyIGEgc21hbGwgc3VyZC5cbiAgICAgIGlubmVyLmhlaWdodCA9IG9wdGlvbnMuZm9udE1ldHJpY3MoKS54SGVpZ2h0O1xuICAgIH0gLy8gU29tZSBncm91cHMgY2FuIHJldHVybiBkb2N1bWVudCBmcmFnbWVudHMuICBIYW5kbGUgdGhvc2UgYnkgd3JhcHBpbmdcbiAgICAvLyB0aGVtIGluIGEgc3Bhbi5cblxuXG4gICAgaW5uZXIgPSBidWlsZENvbW1vbi53cmFwRnJhZ21lbnQoaW5uZXIsIG9wdGlvbnMpOyAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gc2l6ZSBmb3IgdGhlIFxcc3VyZCBkZWxpbWl0ZXJcblxuICAgIHZhciBtZXRyaWNzID0gb3B0aW9ucy5mb250TWV0cmljcygpO1xuICAgIHZhciB0aGV0YSA9IG1ldHJpY3MuZGVmYXVsdFJ1bGVUaGlja25lc3M7XG4gICAgdmFyIHBoaSA9IHRoZXRhO1xuXG4gICAgaWYgKG9wdGlvbnMuc3R5bGUuaWQgPCBzcmNfU3R5bGUuVEVYVC5pZCkge1xuICAgICAgcGhpID0gb3B0aW9ucy5mb250TWV0cmljcygpLnhIZWlnaHQ7XG4gICAgfSAvLyBDYWxjdWxhdGUgdGhlIGNsZWFyYW5jZSBiZXR3ZWVuIHRoZSBib2R5IGFuZCBsaW5lXG5cblxuICAgIHZhciBsaW5lQ2xlYXJhbmNlID0gdGhldGEgKyBwaGkgLyA0O1xuICAgIHZhciBtaW5EZWxpbWl0ZXJIZWlnaHQgPSBpbm5lci5oZWlnaHQgKyBpbm5lci5kZXB0aCArIGxpbmVDbGVhcmFuY2UgKyB0aGV0YTsgLy8gQ3JlYXRlIGEgc3FydCBTVkcgb2YgdGhlIHJlcXVpcmVkIG1pbmltdW0gc2l6ZVxuXG4gICAgdmFyIF9kZWxpbWl0ZXIkc3FydEltYWdlID0gZGVsaW1pdGVyLnNxcnRJbWFnZShtaW5EZWxpbWl0ZXJIZWlnaHQsIG9wdGlvbnMpLFxuICAgICAgICBpbWcgPSBfZGVsaW1pdGVyJHNxcnRJbWFnZS5zcGFuLFxuICAgICAgICBydWxlV2lkdGggPSBfZGVsaW1pdGVyJHNxcnRJbWFnZS5ydWxlV2lkdGgsXG4gICAgICAgIGFkdmFuY2VXaWR0aCA9IF9kZWxpbWl0ZXIkc3FydEltYWdlLmFkdmFuY2VXaWR0aDtcblxuICAgIHZhciBkZWxpbURlcHRoID0gaW1nLmhlaWdodCAtIHJ1bGVXaWR0aDsgLy8gQWRqdXN0IHRoZSBjbGVhcmFuY2UgYmFzZWQgb24gdGhlIGRlbGltaXRlciBzaXplXG5cbiAgICBpZiAoZGVsaW1EZXB0aCA+IGlubmVyLmhlaWdodCArIGlubmVyLmRlcHRoICsgbGluZUNsZWFyYW5jZSkge1xuICAgICAgbGluZUNsZWFyYW5jZSA9IChsaW5lQ2xlYXJhbmNlICsgZGVsaW1EZXB0aCAtIGlubmVyLmhlaWdodCAtIGlubmVyLmRlcHRoKSAvIDI7XG4gICAgfSAvLyBTaGlmdCB0aGUgc3FydCBpbWFnZVxuXG5cbiAgICB2YXIgaW1nU2hpZnQgPSBpbWcuaGVpZ2h0IC0gaW5uZXIuaGVpZ2h0IC0gbGluZUNsZWFyYW5jZSAtIHJ1bGVXaWR0aDtcbiAgICBpbm5lci5zdHlsZS5wYWRkaW5nTGVmdCA9IGFkdmFuY2VXaWR0aCArIFwiZW1cIjsgLy8gT3ZlcmxheSB0aGUgaW1hZ2UgYW5kIHRoZSBhcmd1bWVudC5cblxuICAgIHZhciBib2R5ID0gYnVpbGRDb21tb24ubWFrZVZMaXN0KHtcbiAgICAgIHBvc2l0aW9uVHlwZTogXCJmaXJzdEJhc2VsaW5lXCIsXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IGlubmVyLFxuICAgICAgICB3cmFwcGVyQ2xhc3NlczogW1wic3ZnLWFsaWduXCJdXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiAtKGlubmVyLmhlaWdodCArIGltZ1NoaWZ0KVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogaW1nXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBydWxlV2lkdGhcbiAgICAgIH1dXG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWdyb3VwLmluZGV4KSB7XG4gICAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInNxcnRcIl0sIFtib2R5XSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSB0aGUgb3B0aW9uYWwgcm9vdCBpbmRleFxuICAgICAgLy8gVGhlIGluZGV4IGlzIGFsd2F5cyBpbiBzY3JpcHRzY3JpcHQgc3R5bGVcbiAgICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShzcmNfU3R5bGUuU0NSSVBUU0NSSVBUKTtcbiAgICAgIHZhciByb290bSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKGdyb3VwLmluZGV4LCBuZXdPcHRpb25zLCBvcHRpb25zKTsgLy8gVGhlIGFtb3VudCB0aGUgaW5kZXggaXMgc2hpZnRlZCBieS4gVGhpcyBpcyB0YWtlbiBmcm9tIHRoZSBUZVhcbiAgICAgIC8vIHNvdXJjZSwgaW4gdGhlIGRlZmluaXRpb24gb2YgYFxcckBAdGAuXG5cbiAgICAgIHZhciB0b1NoaWZ0ID0gMC42ICogKGJvZHkuaGVpZ2h0IC0gYm9keS5kZXB0aCk7IC8vIEJ1aWxkIGEgVkxpc3Qgd2l0aCB0aGUgc3VwZXJzY3JpcHQgc2hpZnRlZCB1cCBjb3JyZWN0bHlcblxuICAgICAgdmFyIHJvb3RWTGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IC10b1NoaWZ0LFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgICBlbGVtOiByb290bVxuICAgICAgICB9XVxuICAgICAgfSwgb3B0aW9ucyk7IC8vIEFkZCBhIGNsYXNzIHN1cnJvdW5kaW5nIGl0IHNvIHdlIGNhbiBhZGQgb24gdGhlIGFwcHJvcHJpYXRlXG4gICAgICAvLyBrZXJuaW5nXG5cbiAgICAgIHZhciByb290Vkxpc3RXcmFwID0gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wicm9vdFwiXSwgW3Jvb3RWTGlzdF0pO1xuICAgICAgcmV0dXJuIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1vcmRcIiwgXCJzcXJ0XCJdLCBbcm9vdFZMaXN0V3JhcCwgYm9keV0sIG9wdGlvbnMpO1xuICAgIH1cbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBib2R5ID0gZ3JvdXAuYm9keSxcbiAgICAgICAgaW5kZXggPSBncm91cC5pbmRleDtcbiAgICByZXR1cm4gaW5kZXggPyBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1yb290XCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGJvZHksIG9wdGlvbnMpLCBidWlsZE1hdGhNTF9idWlsZEdyb3VwKGluZGV4LCBvcHRpb25zKV0pIDogbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3FydFwiLCBbYnVpbGRNYXRoTUxfYnVpbGRHcm91cChib2R5LCBvcHRpb25zKV0pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy9zdHlsaW5nLmpzXG5cblxuXG5cblxudmFyIHN0eWxpbmdfc3R5bGVNYXAgPSB7XG4gIFwiZGlzcGxheVwiOiBzcmNfU3R5bGUuRElTUExBWSxcbiAgXCJ0ZXh0XCI6IHNyY19TdHlsZS5URVhULFxuICBcInNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBULFxuICBcInNjcmlwdHNjcmlwdFwiOiBzcmNfU3R5bGUuU0NSSVBUU0NSSVBUXG59O1xuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInN0eWxpbmdcIixcbiAgbmFtZXM6IFtcIlxcXFxkaXNwbGF5c3R5bGVcIiwgXCJcXFxcdGV4dHN0eWxlXCIsIFwiXFxcXHNjcmlwdHN0eWxlXCIsIFwiXFxcXHNjcmlwdHNjcmlwdHN0eWxlXCJdLFxuICBwcm9wczoge1xuICAgIG51bUFyZ3M6IDAsXG4gICAgYWxsb3dlZEluVGV4dDogdHJ1ZVxuICB9LFxuICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKF9yZWYsIGFyZ3MpIHtcbiAgICB2YXIgYnJlYWtPblRva2VuVGV4dCA9IF9yZWYuYnJlYWtPblRva2VuVGV4dCxcbiAgICAgICAgZnVuY05hbWUgPSBfcmVmLmZ1bmNOYW1lLFxuICAgICAgICBwYXJzZXIgPSBfcmVmLnBhcnNlcjtcbiAgICAvLyBwYXJzZSBvdXQgdGhlIGltcGxpY2l0IGJvZHlcbiAgICB2YXIgYm9keSA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24odHJ1ZSwgYnJlYWtPblRva2VuVGV4dCk7IC8vIFRPRE86IFJlZmFjdG9yIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHN0eWxlTWFwIGluIG11bHRpcGxlIHBsYWNlcyAoZS5nLlxuICAgIC8vIGhlcmUgYW5kIGluIGJ1aWxkSFRNTCBhbmQgZGUtZHVwZSB0aGUgZW51bWVyYXRpb24gb2YgYWxsIHRoZSBzdHlsZXMpLlxuICAgIC8vICRGbG93Rml4TWU6IFRoZSBuYW1lcyBhYm92ZSBleGFjdGx5IG1hdGNoIHRoZSBzdHlsZXMuXG5cbiAgICB2YXIgc3R5bGUgPSBmdW5jTmFtZS5zbGljZSgxLCBmdW5jTmFtZS5sZW5ndGggLSA1KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJzdHlsaW5nXCIsXG4gICAgICBtb2RlOiBwYXJzZXIubW9kZSxcbiAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHlsZSB0byB1c2UgYnkgcHVsbGluZyBvdXQgdGhlIHN0eWxlIGZyb21cbiAgICAgIC8vIHRoZSBmdW5jdGlvbiBuYW1lXG4gICAgICBzdHlsZTogc3R5bGUsXG4gICAgICBib2R5OiBib2R5XG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gU3R5bGUgY2hhbmdlcyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBvbiBwZy4gNDQyLCBSdWxlIDMuXG4gICAgdmFyIG5ld1N0eWxlID0gc3R5bGluZ19zdHlsZU1hcFtncm91cC5zdHlsZV07XG4gICAgdmFyIG5ld09wdGlvbnMgPSBvcHRpb25zLmhhdmluZ1N0eWxlKG5ld1N0eWxlKS53aXRoRm9udCgnJyk7XG4gICAgcmV0dXJuIHNpemluZ0dyb3VwKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gRmlndXJlIG91dCB3aGF0IHN0eWxlIHdlJ3JlIGNoYW5naW5nIHRvLlxuICAgIHZhciBuZXdTdHlsZSA9IHN0eWxpbmdfc3R5bGVNYXBbZ3JvdXAuc3R5bGVdO1xuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShuZXdTdHlsZSk7XG4gICAgdmFyIGlubmVyID0gYnVpbGRNYXRoTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG5ld09wdGlvbnMpO1xuICAgIHZhciBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3R5bGVcIiwgaW5uZXIpO1xuICAgIHZhciBzdHlsZUF0dHJpYnV0ZXMgPSB7XG4gICAgICBcImRpc3BsYXlcIjogW1wiMFwiLCBcInRydWVcIl0sXG4gICAgICBcInRleHRcIjogW1wiMFwiLCBcImZhbHNlXCJdLFxuICAgICAgXCJzY3JpcHRcIjogW1wiMVwiLCBcImZhbHNlXCJdLFxuICAgICAgXCJzY3JpcHRzY3JpcHRcIjogW1wiMlwiLCBcImZhbHNlXCJdXG4gICAgfTtcbiAgICB2YXIgYXR0ciA9IHN0eWxlQXR0cmlidXRlc1tncm91cC5zdHlsZV07XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzY3JpcHRsZXZlbFwiLCBhdHRyWzBdKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShcImRpc3BsYXlzdHlsZVwiLCBhdHRyWzFdKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvc3Vwc3ViLmpzXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBTb21ldGltZXMsIGdyb3VwcyBwZXJmb3JtIHNwZWNpYWwgcnVsZXMgd2hlbiB0aGV5IGhhdmUgc3VwZXJzY3JpcHRzIG9yXG4gKiBzdWJzY3JpcHRzIGF0dGFjaGVkIHRvIHRoZW0uIFRoaXMgZnVuY3Rpb24gbGV0cyB0aGUgYHN1cHN1YmAgZ3JvdXAga25vdyB0aGF0XG4gKiBTb21ldGltZXMsIGdyb3VwcyBwZXJmb3JtIHNwZWNpYWwgcnVsZXMgd2hlbiB0aGV5IGhhdmUgc3VwZXJzY3JpcHRzIG9yXG4gKiBpdHMgaW5uZXIgZWxlbWVudCBzaG91bGQgaGFuZGxlIHRoZSBzdXBlcnNjcmlwdHMgYW5kIHN1YnNjcmlwdHMgaW5zdGVhZCBvZlxuICogaGFuZGxpbmcgdGhlbSBpdHNlbGYuXG4gKi9cbnZhciBzdXBzdWJfaHRtbEJ1aWxkZXJEZWxlZ2F0ZSA9IGZ1bmN0aW9uIGh0bWxCdWlsZGVyRGVsZWdhdGUoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGJhc2UgPSBncm91cC5iYXNlO1xuXG4gIGlmICghYmFzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKGJhc2UudHlwZSA9PT0gXCJvcFwiKSB7XG4gICAgLy8gT3BlcmF0b3JzIGhhbmRsZSBzdXBzdWJzIGRpZmZlcmVudGx5IHdoZW4gdGhleSBoYXZlIGxpbWl0c1xuICAgIC8vIChlLmcuIGBcXGRpc3BsYXlzdHlsZVxcc3VtXzJeM2ApXG4gICAgdmFyIGRlbGVnYXRlID0gYmFzZS5saW1pdHMgJiYgKG9wdGlvbnMuc3R5bGUuc2l6ZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkuc2l6ZSB8fCBiYXNlLmFsd2F5c0hhbmRsZVN1cFN1Yik7XG4gICAgcmV0dXJuIGRlbGVnYXRlID8gb3BfaHRtbEJ1aWxkZXIgOiBudWxsO1xuICB9IGVsc2UgaWYgKGJhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIikge1xuICAgIHZhciBfZGVsZWdhdGUgPSBiYXNlLmFsd2F5c0hhbmRsZVN1cFN1YiAmJiAob3B0aW9ucy5zdHlsZS5zaXplID09PSBzcmNfU3R5bGUuRElTUExBWS5zaXplIHx8IGJhc2UubGltaXRzKTtcblxuICAgIHJldHVybiBfZGVsZWdhdGUgPyBvcGVyYXRvcm5hbWVfaHRtbEJ1aWxkZXIgOiBudWxsO1xuICB9IGVsc2UgaWYgKGJhc2UudHlwZSA9PT0gXCJhY2NlbnRcIikge1xuICAgIHJldHVybiB1dGlscy5pc0NoYXJhY3RlckJveChiYXNlLmJhc2UpID8gYWNjZW50X2h0bWxCdWlsZGVyIDogbnVsbDtcbiAgfSBlbHNlIGlmIChiYXNlLnR5cGUgPT09IFwiaG9yaXpCcmFjZVwiKSB7XG4gICAgdmFyIGlzU3VwID0gIWdyb3VwLnN1YjtcbiAgICByZXR1cm4gaXNTdXAgPT09IGJhc2UuaXNPdmVyID8gaG9yaXpCcmFjZV9odG1sQnVpbGRlciA6IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07IC8vIFN1cGVyIHNjcmlwdHMgYW5kIHN1YnNjcmlwdHMsIHdob3NlIHByZWNpc2UgcGxhY2VtZW50IGNhbiBkZXBlbmQgb24gb3RoZXJcbi8vIGZ1bmN0aW9ucyB0aGF0IHByZWNlZGUgdGhlbS5cblxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJzdXBzdWJcIixcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gU3VwZXJzY3JpcHQgYW5kIHN1YnNjcmlwdHMgYXJlIGhhbmRsZWQgaW4gdGhlIFRlWGJvb2sgb24gcGFnZVxuICAgIC8vIDQ0NS00NDYsIHJ1bGVzIDE4KGEtZikuXG4gICAgLy8gSGVyZSBpcyB3aGVyZSB3ZSBkZWZlciB0byB0aGUgaW5uZXIgZ3JvdXAgaWYgaXQgc2hvdWxkIGhhbmRsZVxuICAgIC8vIHN1cGVyc2NyaXB0cyBhbmQgc3Vic2NyaXB0cyBpdHNlbGYuXG4gICAgdmFyIGJ1aWxkZXJEZWxlZ2F0ZSA9IHN1cHN1Yl9odG1sQnVpbGRlckRlbGVnYXRlKGdyb3VwLCBvcHRpb25zKTtcblxuICAgIGlmIChidWlsZGVyRGVsZWdhdGUpIHtcbiAgICAgIHJldHVybiBidWlsZGVyRGVsZWdhdGUoZ3JvdXAsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZUJhc2UgPSBncm91cC5iYXNlLFxuICAgICAgICB2YWx1ZVN1cCA9IGdyb3VwLnN1cCxcbiAgICAgICAgdmFsdWVTdWIgPSBncm91cC5zdWI7XG4gICAgdmFyIGJhc2UgPSBidWlsZEhUTUxfYnVpbGRHcm91cCh2YWx1ZUJhc2UsIG9wdGlvbnMpO1xuICAgIHZhciBzdXBtO1xuICAgIHZhciBzdWJtO1xuICAgIHZhciBtZXRyaWNzID0gb3B0aW9ucy5mb250TWV0cmljcygpOyAvLyBSdWxlIDE4YVxuXG4gICAgdmFyIHN1cFNoaWZ0ID0gMDtcbiAgICB2YXIgc3ViU2hpZnQgPSAwO1xuICAgIHZhciBpc0NoYXJhY3RlckJveCA9IHZhbHVlQmFzZSAmJiB1dGlscy5pc0NoYXJhY3RlckJveCh2YWx1ZUJhc2UpO1xuXG4gICAgaWYgKHZhbHVlU3VwKSB7XG4gICAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnMuaGF2aW5nU3R5bGUob3B0aW9ucy5zdHlsZS5zdXAoKSk7XG4gICAgICBzdXBtID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAodmFsdWVTdXAsIG5ld09wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIWlzQ2hhcmFjdGVyQm94KSB7XG4gICAgICAgIHN1cFNoaWZ0ID0gYmFzZS5oZWlnaHQgLSBuZXdPcHRpb25zLmZvbnRNZXRyaWNzKCkuc3VwRHJvcCAqIG5ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZVN1Yikge1xuICAgICAgdmFyIF9uZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnN1YigpKTtcblxuICAgICAgc3VibSA9IGJ1aWxkSFRNTF9idWlsZEdyb3VwKHZhbHVlU3ViLCBfbmV3T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgIGlmICghaXNDaGFyYWN0ZXJCb3gpIHtcbiAgICAgICAgc3ViU2hpZnQgPSBiYXNlLmRlcHRoICsgX25ld09wdGlvbnMuZm9udE1ldHJpY3MoKS5zdWJEcm9wICogX25ld09wdGlvbnMuc2l6ZU11bHRpcGxpZXIgLyBvcHRpb25zLnNpemVNdWx0aXBsaWVyO1xuICAgICAgfVxuICAgIH0gLy8gUnVsZSAxOGNcblxuXG4gICAgdmFyIG1pblN1cFNoaWZ0O1xuXG4gICAgaWYgKG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZKSB7XG4gICAgICBtaW5TdXBTaGlmdCA9IG1ldHJpY3Muc3VwMTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc3R5bGUuY3JhbXBlZCkge1xuICAgICAgbWluU3VwU2hpZnQgPSBtZXRyaWNzLnN1cDM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pblN1cFNoaWZ0ID0gbWV0cmljcy5zdXAyO1xuICAgIH0gLy8gc2NyaXB0c3BhY2UgaXMgYSBmb250LXNpemUtaW5kZXBlbmRlbnQgc2l6ZSwgc28gc2NhbGUgaXRcbiAgICAvLyBhcHByb3ByaWF0ZWx5IGZvciB1c2UgYXMgdGhlIG1hcmdpblJpZ2h0LlxuXG5cbiAgICB2YXIgbXVsdGlwbGllciA9IG9wdGlvbnMuc2l6ZU11bHRpcGxpZXI7XG4gICAgdmFyIG1hcmdpblJpZ2h0ID0gMC41IC8gbWV0cmljcy5wdFBlckVtIC8gbXVsdGlwbGllciArIFwiZW1cIjtcbiAgICB2YXIgbWFyZ2luTGVmdCA9IG51bGw7XG5cbiAgICBpZiAoc3VibSkge1xuICAgICAgLy8gU3Vic2NyaXB0cyBzaG91bGRuJ3QgYmUgc2hpZnRlZCBieSB0aGUgYmFzZSdzIGl0YWxpYyBjb3JyZWN0aW9uLlxuICAgICAgLy8gQWNjb3VudCBmb3IgdGhhdCBieSBzaGlmdGluZyB0aGUgc3Vic2NyaXB0IGJhY2sgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAvLyBhbW91bnQuIE5vdGUgd2Ugb25seSBkbyB0aGlzIHdoZW4gdGhlIGJhc2UgaXMgYSBzaW5nbGUgc3ltYm9sLlxuICAgICAgdmFyIGlzT2lpbnQgPSBncm91cC5iYXNlICYmIGdyb3VwLmJhc2UudHlwZSA9PT0gXCJvcFwiICYmIGdyb3VwLmJhc2UubmFtZSAmJiAoZ3JvdXAuYmFzZS5uYW1lID09PSBcIlxcXFxvaWludFwiIHx8IGdyb3VwLmJhc2UubmFtZSA9PT0gXCJcXFxcb2lpaW50XCIpO1xuXG4gICAgICBpZiAoYmFzZSBpbnN0YW5jZW9mIGRvbVRyZWVfU3ltYm9sTm9kZSB8fCBpc09paW50KSB7XG4gICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgbWFyZ2luTGVmdCA9IC1iYXNlLml0YWxpYyArIFwiZW1cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc3Vwc3ViO1xuXG4gICAgaWYgKHN1cG0gJiYgc3VibSkge1xuICAgICAgc3VwU2hpZnQgPSBNYXRoLm1heChzdXBTaGlmdCwgbWluU3VwU2hpZnQsIHN1cG0uZGVwdGggKyAwLjI1ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgIHN1YlNoaWZ0ID0gTWF0aC5tYXgoc3ViU2hpZnQsIG1ldHJpY3Muc3ViMik7XG4gICAgICB2YXIgcnVsZVdpZHRoID0gbWV0cmljcy5kZWZhdWx0UnVsZVRoaWNrbmVzczsgLy8gUnVsZSAxOGVcblxuICAgICAgdmFyIG1heFdpZHRoID0gNCAqIHJ1bGVXaWR0aDtcblxuICAgICAgaWYgKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCAtIChzdWJtLmhlaWdodCAtIHN1YlNoaWZ0KSA8IG1heFdpZHRoKSB7XG4gICAgICAgIHN1YlNoaWZ0ID0gbWF4V2lkdGggLSAoc3VwU2hpZnQgLSBzdXBtLmRlcHRoKSArIHN1Ym0uaGVpZ2h0O1xuICAgICAgICB2YXIgcHNpID0gMC44ICogbWV0cmljcy54SGVpZ2h0IC0gKHN1cFNoaWZ0IC0gc3VwbS5kZXB0aCk7XG5cbiAgICAgICAgaWYgKHBzaSA+IDApIHtcbiAgICAgICAgICBzdXBTaGlmdCArPSBwc2k7XG4gICAgICAgICAgc3ViU2hpZnQgLT0gcHNpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2bGlzdEVsZW0gPSBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VibSxcbiAgICAgICAgc2hpZnQ6IHN1YlNoaWZ0LFxuICAgICAgICBtYXJnaW5SaWdodDogbWFyZ2luUmlnaHQsXG4gICAgICAgIG1hcmdpbkxlZnQ6IG1hcmdpbkxlZnRcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgIGVsZW06IHN1cG0sXG4gICAgICAgIHNoaWZ0OiAtc3VwU2hpZnQsXG4gICAgICAgIG1hcmdpblJpZ2h0OiBtYXJnaW5SaWdodFxuICAgICAgfV07XG4gICAgICBzdXBzdWIgPSBidWlsZENvbW1vbi5tYWtlVkxpc3Qoe1xuICAgICAgICBwb3NpdGlvblR5cGU6IFwiaW5kaXZpZHVhbFNoaWZ0XCIsXG4gICAgICAgIGNoaWxkcmVuOiB2bGlzdEVsZW1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoc3VibSkge1xuICAgICAgLy8gUnVsZSAxOGJcbiAgICAgIHN1YlNoaWZ0ID0gTWF0aC5tYXgoc3ViU2hpZnQsIG1ldHJpY3Muc3ViMSwgc3VibS5oZWlnaHQgLSAwLjggKiBtZXRyaWNzLnhIZWlnaHQpO1xuICAgICAgdmFyIF92bGlzdEVsZW0gPSBbe1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogc3VibSxcbiAgICAgICAgbWFyZ2luTGVmdDogbWFyZ2luTGVmdCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IG1hcmdpblJpZ2h0XG4gICAgICB9XTtcbiAgICAgIHN1cHN1YiA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IHN1YlNoaWZ0LFxuICAgICAgICBjaGlsZHJlbjogX3ZsaXN0RWxlbVxuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChzdXBtKSB7XG4gICAgICAvLyBSdWxlIDE4YywgZFxuICAgICAgc3VwU2hpZnQgPSBNYXRoLm1heChzdXBTaGlmdCwgbWluU3VwU2hpZnQsIHN1cG0uZGVwdGggKyAwLjI1ICogbWV0cmljcy54SGVpZ2h0KTtcbiAgICAgIHN1cHN1YiA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogXCJzaGlmdFwiLFxuICAgICAgICBwb3NpdGlvbkRhdGE6IC1zdXBTaGlmdCxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdHlwZTogXCJlbGVtXCIsXG4gICAgICAgICAgZWxlbTogc3VwbSxcbiAgICAgICAgICBtYXJnaW5SaWdodDogbWFyZ2luUmlnaHRcbiAgICAgICAgfV1cbiAgICAgIH0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdXBzdWIgbXVzdCBoYXZlIGVpdGhlciBzdXAgb3Igc3ViLlwiKTtcbiAgICB9IC8vIFdyYXAgdGhlIHN1cHN1YiB2bGlzdCBpbiBhIHNwYW4ubXN1cHN1YiB0byByZXNldCB0ZXh0LWFsaWduLlxuXG5cbiAgICB2YXIgbWNsYXNzID0gZ2V0VHlwZU9mRG9tVHJlZShiYXNlLCBcInJpZ2h0XCIpIHx8IFwibW9yZFwiO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbbWNsYXNzXSwgW2Jhc2UsIGJ1aWxkQ29tbW9uLm1ha2VTcGFuKFtcIm1zdXBzdWJcIl0sIFtzdXBzdWJdKV0sIG9wdGlvbnMpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gSXMgdGhlIGlubmVyIGdyb3VwIGEgcmVsZXZhbnQgaG9yaXpvbmFsIGJyYWNlP1xuICAgIHZhciBpc0JyYWNlID0gZmFsc2U7XG4gICAgdmFyIGlzT3ZlcjtcbiAgICB2YXIgaXNTdXA7XG4gICAgdmFyIGhvcml6QnJhY2UgPSBjaGVja05vZGVUeXBlKGdyb3VwLmJhc2UsIFwiaG9yaXpCcmFjZVwiKTtcblxuICAgIGlmIChob3JpekJyYWNlKSB7XG4gICAgICBpc1N1cCA9ICEhZ3JvdXAuc3VwO1xuXG4gICAgICBpZiAoaXNTdXAgPT09IGhvcml6QnJhY2UuaXNPdmVyKSB7XG4gICAgICAgIGlzQnJhY2UgPSB0cnVlO1xuICAgICAgICBpc092ZXIgPSBob3JpekJyYWNlLmlzT3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAuYmFzZSAmJiAoZ3JvdXAuYmFzZS50eXBlID09PSBcIm9wXCIgfHwgZ3JvdXAuYmFzZS50eXBlID09PSBcIm9wZXJhdG9ybmFtZVwiKSkge1xuICAgICAgZ3JvdXAuYmFzZS5wYXJlbnRJc1N1cFN1YiA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGNoaWxkcmVuID0gW2J1aWxkTWF0aE1MX2J1aWxkR3JvdXAoZ3JvdXAuYmFzZSwgb3B0aW9ucyldO1xuXG4gICAgaWYgKGdyb3VwLnN1Yikge1xuICAgICAgY2hpbGRyZW4ucHVzaChidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLnN1Yiwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIGlmIChncm91cC5zdXApIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRNYXRoTUxfYnVpbGRHcm91cChncm91cC5zdXAsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZVR5cGU7XG5cbiAgICBpZiAoaXNCcmFjZSkge1xuICAgICAgbm9kZVR5cGUgPSBpc092ZXIgPyBcIm1vdmVyXCIgOiBcIm11bmRlclwiO1xuICAgIH0gZWxzZSBpZiAoIWdyb3VwLnN1Yikge1xuICAgICAgdmFyIGJhc2UgPSBncm91cC5iYXNlO1xuXG4gICAgICBpZiAoYmFzZSAmJiBiYXNlLnR5cGUgPT09IFwib3BcIiAmJiBiYXNlLmxpbWl0cyAmJiAob3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkgfHwgYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtb3ZlclwiO1xuICAgICAgfSBlbHNlIGlmIChiYXNlICYmIGJhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIiAmJiBiYXNlLmFsd2F5c0hhbmRsZVN1cFN1YiAmJiAoYmFzZS5saW1pdHMgfHwgb3B0aW9ucy5zdHlsZSA9PT0gc3JjX1N0eWxlLkRJU1BMQVkpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtb3ZlclwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm1zdXBcIjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFncm91cC5zdXApIHtcbiAgICAgIHZhciBfYmFzZSA9IGdyb3VwLmJhc2U7XG5cbiAgICAgIGlmIChfYmFzZSAmJiBfYmFzZS50eXBlID09PSBcIm9wXCIgJiYgX2Jhc2UubGltaXRzICYmIChvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSB8fCBfYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIpKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJcIjtcbiAgICAgIH0gZWxzZSBpZiAoX2Jhc2UgJiYgX2Jhc2UudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIiAmJiBfYmFzZS5hbHdheXNIYW5kbGVTdXBTdWIgJiYgKF9iYXNlLmxpbWl0cyB8fCBvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSkpIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm11bmRlclwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm1zdWJcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9iYXNlMiA9IGdyb3VwLmJhc2U7XG5cbiAgICAgIGlmIChfYmFzZTIgJiYgX2Jhc2UyLnR5cGUgPT09IFwib3BcIiAmJiBfYmFzZTIubGltaXRzICYmIG9wdGlvbnMuc3R5bGUgPT09IHNyY19TdHlsZS5ESVNQTEFZKSB7XG4gICAgICAgIG5vZGVUeXBlID0gXCJtdW5kZXJvdmVyXCI7XG4gICAgICB9IGVsc2UgaWYgKF9iYXNlMiAmJiBfYmFzZTIudHlwZSA9PT0gXCJvcGVyYXRvcm5hbWVcIiAmJiBfYmFzZTIuYWx3YXlzSGFuZGxlU3VwU3ViICYmIChvcHRpb25zLnN0eWxlID09PSBzcmNfU3R5bGUuRElTUExBWSB8fCBfYmFzZTIubGltaXRzKSkge1xuICAgICAgICBub2RlVHlwZSA9IFwibXVuZGVyb3ZlclwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZVR5cGUgPSBcIm1zdWJzdXBcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKG5vZGVUeXBlLCBjaGlsZHJlbik7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N5bWJvbHNPcC5qc1xuXG5cblxuIC8vIE9wZXJhdG9yIFBhcnNlTm9kZXMgY3JlYXRlZCBpbiBQYXJzZXIuanMgZnJvbSBzeW1ib2wgR3JvdXBzIGluIHNyYy9zeW1ib2xzLmpzLlxuXG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJhdG9tXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYXRoc3ltKGdyb3VwLnRleHQsIGdyb3VwLm1vZGUsIG9wdGlvbnMsIFtcIm1cIiArIGdyb3VwLmZhbWlseV0pO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFtidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC50ZXh0LCBncm91cC5tb2RlKV0pO1xuXG4gICAgaWYgKGdyb3VwLmZhbWlseSA9PT0gXCJiaW5cIikge1xuICAgICAgdmFyIHZhcmlhbnQgPSBidWlsZE1hdGhNTF9nZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHZhcmlhbnQgPT09IFwiYm9sZC1pdGFsaWNcIikge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm1hdGh2YXJpYW50XCIsIHZhcmlhbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3JvdXAuZmFtaWx5ID09PSBcInB1bmN0XCIpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic2VwYXJhdG9yXCIsIFwidHJ1ZVwiKTtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLmZhbWlseSA9PT0gXCJvcGVuXCIgfHwgZ3JvdXAuZmFtaWx5ID09PSBcImNsb3NlXCIpIHtcbiAgICAgIC8vIERlbGltcyBidWlsdCBoZXJlIHNob3VsZCBub3Qgc3RyZXRjaCB2ZXJ0aWNhbGx5LlxuICAgICAgLy8gU2VlIGRlbGltc2l6aW5nLmpzIGZvciBzdHJldGNoeSBkZWxpbXMuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwiZmFsc2VcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N5bWJvbHNPcmQuanNcblxuXG5cblxuLy8gXCJtYXRob3JkXCIgYW5kIFwidGV4dG9yZFwiIFBhcnNlTm9kZXMgY3JlYXRlZCBpbiBQYXJzZXIuanMgZnJvbSBzeW1ib2wgR3JvdXBzIGluXG52YXIgZGVmYXVsdFZhcmlhbnQgPSB7XG4gIFwibWlcIjogXCJpdGFsaWNcIixcbiAgXCJtblwiOiBcIm5vcm1hbFwiLFxuICBcIm10ZXh0XCI6IFwibm9ybWFsXCJcbn07XG5kZWZpbmVGdW5jdGlvbkJ1aWxkZXJzKHtcbiAgdHlwZTogXCJtYXRob3JkXCIsXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlT3JkKGdyb3VwLCBvcHRpb25zLCBcIm1hdGhvcmRcIik7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibWlcIiwgW2J1aWxkTWF0aE1MX21ha2VUZXh0KGdyb3VwLnRleHQsIGdyb3VwLm1vZGUsIG9wdGlvbnMpXSk7XG4gICAgdmFyIHZhcmlhbnQgPSBidWlsZE1hdGhNTF9nZXRWYXJpYW50KGdyb3VwLCBvcHRpb25zKSB8fCBcIml0YWxpY1wiO1xuXG4gICAgaWYgKHZhcmlhbnQgIT09IGRlZmF1bHRWYXJpYW50W25vZGUudHlwZV0pIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgdmFyaWFudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuZGVmaW5lRnVuY3Rpb25CdWlsZGVycyh7XG4gIHR5cGU6IFwidGV4dG9yZFwiLFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZU9yZChncm91cCwgb3B0aW9ucywgXCJ0ZXh0b3JkXCIpO1xuICB9LFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRleHQgPSBidWlsZE1hdGhNTF9tYWtlVGV4dChncm91cC50ZXh0LCBncm91cC5tb2RlLCBvcHRpb25zKTtcbiAgICB2YXIgdmFyaWFudCA9IGJ1aWxkTWF0aE1MX2dldFZhcmlhbnQoZ3JvdXAsIG9wdGlvbnMpIHx8IFwibm9ybWFsXCI7XG4gICAgdmFyIG5vZGU7XG5cbiAgICBpZiAoZ3JvdXAubW9kZSA9PT0gJ3RleHQnKSB7XG4gICAgICBub2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGV4dFwiLCBbdGV4dF0pO1xuICAgIH0gZWxzZSBpZiAoL1swLTldLy50ZXN0KGdyb3VwLnRleHQpKSB7XG4gICAgICAvLyBUT0RPKGtldmluYikgbWVyZ2UgYWRqYWNlbnQgPG1uPiBub2Rlc1xuICAgICAgLy8gZG8gaXQgYXMgYSBwb3N0IHByb2Nlc3Npbmcgc3RlcFxuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW5cIiwgW3RleHRdKTtcbiAgICB9IGVsc2UgaWYgKGdyb3VwLnRleHQgPT09IFwiXFxcXHByaW1lXCIpIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1vXCIsIFt0ZXh0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm1pXCIsIFt0ZXh0XSk7XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhbnQgIT09IGRlZmF1bHRWYXJpYW50W25vZGUudHlwZV0pIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwibWF0aHZhcmlhbnRcIiwgdmFyaWFudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3N5bWJvbHNTcGFjaW5nLmpzXG5cblxuXG4gLy8gQSBtYXAgb2YgQ1NTLWJhc2VkIHNwYWNpbmcgZnVuY3Rpb25zIHRvIHRoZWlyIENTUyBjbGFzcy5cblxudmFyIGNzc1NwYWNlID0ge1xuICBcIlxcXFxub2JyZWFrXCI6IFwibm9icmVha1wiLFxuICBcIlxcXFxhbGxvd2JyZWFrXCI6IFwiYWxsb3dicmVha1wiXG59OyAvLyBBIGxvb2t1cCB0YWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHNwYWNpbmcgZnVuY3Rpb24vc3ltYm9sIHNob3VsZCBiZVxuLy8gdHJlYXRlZCBsaWtlIGEgcmVndWxhciBzcGFjZSBjaGFyYWN0ZXIuICBJZiBhIHN5bWJvbCBvciBjb21tYW5kIGlzIGEga2V5XG4vLyBpbiB0aGlzIHRhYmxlLCB0aGVuIGl0IHNob3VsZCBiZSBhIHJlZ3VsYXIgc3BhY2UgY2hhcmFjdGVyLiAgRnVydGhlcm1vcmUsXG4vLyB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBtYXkgaGF2ZSBhIGBjbGFzc05hbWVgIHNwZWNpZnlpbmcgYW4gZXh0cmEgQ1NTIGNsYXNzXG4vLyB0byBhZGQgdG8gdGhlIGNyZWF0ZWQgYHNwYW5gLlxuXG52YXIgcmVndWxhclNwYWNlID0ge1xuICBcIiBcIjoge30sXG4gIFwiXFxcXCBcIjoge30sXG4gIFwiflwiOiB7XG4gICAgY2xhc3NOYW1lOiBcIm5vYnJlYWtcIlxuICB9LFxuICBcIlxcXFxzcGFjZVwiOiB7fSxcbiAgXCJcXFxcbm9icmVha3NwYWNlXCI6IHtcbiAgICBjbGFzc05hbWU6IFwibm9icmVha1wiXG4gIH1cbn07IC8vIFBhcnNlTm9kZTxcInNwYWNpbmdcIj4gY3JlYXRlZCBpbiBQYXJzZXIuanMgZnJvbSB0aGUgXCJzcGFjaW5nXCIgc3ltYm9sIEdyb3VwcyBpblxuLy8gc3JjL3N5bWJvbHMuanMuXG5cbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcInNwYWNpbmdcIixcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgaWYgKHJlZ3VsYXJTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHJlZ3VsYXJTcGFjZVtncm91cC50ZXh0XS5jbGFzc05hbWUgfHwgXCJcIjsgLy8gU3BhY2VzIGFyZSBnZW5lcmF0ZWQgYnkgYWRkaW5nIGFuIGFjdHVhbCBzcGFjZS4gRWFjaCBvZiB0aGVzZVxuICAgICAgLy8gdGhpbmdzIGhhcyBhbiBlbnRyeSBpbiB0aGUgc3ltYm9scyB0YWJsZSwgc28gdGhlc2Ugd2lsbCBiZSB0dXJuZWRcbiAgICAgIC8vIGludG8gYXBwcm9wcmlhdGUgb3V0cHV0cy5cblxuICAgICAgaWYgKGdyb3VwLm1vZGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHZhciBvcmQgPSBidWlsZENvbW1vbi5tYWtlT3JkKGdyb3VwLCBvcHRpb25zLCBcInRleHRvcmRcIik7XG4gICAgICAgIG9yZC5jbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIG9yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3BhY2VcIiwgY2xhc3NOYW1lXSwgW2J1aWxkQ29tbW9uLm1hdGhzeW0oZ3JvdXAudGV4dCwgZ3JvdXAubW9kZSwgb3B0aW9ucyldLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNzc1NwYWNlLmhhc093blByb3BlcnR5KGdyb3VwLnRleHQpKSB7XG4gICAgICAvLyBTcGFjZXMgYmFzZWQgb24ganVzdCBhIENTUyBjbGFzcy5cbiAgICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtc3BhY2VcIiwgY3NzU3BhY2VbZ3JvdXAudGV4dF1dLCBbXSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gdHlwZSBvZiBzcGFjZSBcXFwiXCIgKyBncm91cC50ZXh0ICsgXCJcXFwiXCIpO1xuICAgIH1cbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBub2RlO1xuXG4gICAgaWYgKHJlZ3VsYXJTcGFjZS5oYXNPd25Qcm9wZXJ0eShncm91cC50ZXh0KSkge1xuICAgICAgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRleHRcIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKFwiXFx4QTBcIildKTtcbiAgICB9IGVsc2UgaWYgKGNzc1NwYWNlLmhhc093blByb3BlcnR5KGdyb3VwLnRleHQpKSB7XG4gICAgICAvLyBDU1MtYmFzZWQgTWF0aE1MIHNwYWNlcyAoXFxub2JyZWFrLCBcXGFsbG93YnJlYWspIGFyZSBpZ25vcmVkXG4gICAgICByZXR1cm4gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtc3BhY2VcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVua25vd24gdHlwZSBvZiBzcGFjZSBcXFwiXCIgKyBncm91cC50ZXh0ICsgXCJcXFwiXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy90YWcuanNcblxuXG5cblxudmFyIHRhZ19wYWQgPSBmdW5jdGlvbiBwYWQoKSB7XG4gIHZhciBwYWROb2RlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGRcIiwgW10pO1xuICBwYWROb2RlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiNTAlXCIpO1xuICByZXR1cm4gcGFkTm9kZTtcbn07XG5cbmRlZmluZUZ1bmN0aW9uQnVpbGRlcnMoe1xuICB0eXBlOiBcInRhZ1wiLFxuICBtYXRobWxCdWlsZGVyOiBmdW5jdGlvbiBtYXRobWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgdmFyIHRhYmxlID0gbmV3IG1hdGhNTFRyZWUuTWF0aE5vZGUoXCJtdGFibGVcIiwgW25ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRyXCIsIFt0YWdfcGFkKCksIG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXRkXCIsIFtidWlsZEV4cHJlc3Npb25Sb3coZ3JvdXAuYm9keSwgb3B0aW9ucyldKSwgdGFnX3BhZCgpLCBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZFwiLCBbYnVpbGRFeHByZXNzaW9uUm93KGdyb3VwLnRhZywgb3B0aW9ucyldKV0pXSk7XG4gICAgdGFibGUuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCIxMDAlXCIpO1xuICAgIHJldHVybiB0YWJsZTsgLy8gVE9ETzogTGVmdC1hbGlnbmVkIHRhZ3MuXG4gICAgLy8gQ3VycmVudGx5LCB0aGUgZ3JvdXAgYW5kIG9wdGlvbnMgcGFzc2VkIGhlcmUgZG8gbm90IGNvbnRhaW5cbiAgICAvLyBlbm91Z2ggaW5mbyB0byBzZXQgdGFnIGFsaWdubWVudC4gYGxlcW5vYCBpcyBpbiBTZXR0aW5ncyBidXQgaXQgaXNcbiAgICAvLyBub3QgcGFzc2VkIHRvIE9wdGlvbnMuIE9uIHRoZSBIVE1MIHNpZGUsIGxlcW5vIGlzXG4gICAgLy8gc2V0IGJ5IGEgQ1NTIGNsYXNzIGFwcGxpZWQgaW4gYnVpbGRUcmVlLmpzLiBUaGF0IHdvdWxkIGhhdmUgd29ya2VkXG4gICAgLy8gaW4gTWF0aE1MIGlmIGJyb3dzZXJzIHN1cHBvcnRlZCA8bWxhYmVsZWR0cj4uIFNpbmNlIHRoZXkgZG9uJ3QsIHdlXG4gICAgLy8gbmVlZCB0byByZXdyaXRlIHRoZSB3YXkgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvZnVuY3Rpb25zL3RleHQuanNcblxuXG5cbiAvLyBOb24tbWF0aHkgdGV4dCwgcG9zc2libHkgaW4gYSBmb250XG5cbnZhciB0ZXh0Rm9udEZhbWlsaWVzID0ge1xuICBcIlxcXFx0ZXh0XCI6IHVuZGVmaW5lZCxcbiAgXCJcXFxcdGV4dHJtXCI6IFwidGV4dHJtXCIsXG4gIFwiXFxcXHRleHRzZlwiOiBcInRleHRzZlwiLFxuICBcIlxcXFx0ZXh0dHRcIjogXCJ0ZXh0dHRcIixcbiAgXCJcXFxcdGV4dG5vcm1hbFwiOiBcInRleHRybVwiXG59O1xudmFyIHRleHRGb250V2VpZ2h0cyA9IHtcbiAgXCJcXFxcdGV4dGJmXCI6IFwidGV4dGJmXCIsXG4gIFwiXFxcXHRleHRtZFwiOiBcInRleHRtZFwiXG59O1xudmFyIHRleHRGb250U2hhcGVzID0ge1xuICBcIlxcXFx0ZXh0aXRcIjogXCJ0ZXh0aXRcIixcbiAgXCJcXFxcdGV4dHVwXCI6IFwidGV4dHVwXCJcbn07XG5cbnZhciBvcHRpb25zV2l0aEZvbnQgPSBmdW5jdGlvbiBvcHRpb25zV2l0aEZvbnQoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgdmFyIGZvbnQgPSBncm91cC5mb250OyAvLyBDaGVja3MgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZm9udCBmYW1pbHkgb3IgYSBmb250IHN0eWxlLlxuXG4gIGlmICghZm9udCkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9IGVsc2UgaWYgKHRleHRGb250RmFtaWxpZXNbZm9udF0pIHtcbiAgICByZXR1cm4gb3B0aW9ucy53aXRoVGV4dEZvbnRGYW1pbHkodGV4dEZvbnRGYW1pbGllc1tmb250XSk7XG4gIH0gZWxzZSBpZiAodGV4dEZvbnRXZWlnaHRzW2ZvbnRdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2l0aFRleHRGb250V2VpZ2h0KHRleHRGb250V2VpZ2h0c1tmb250XSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2l0aFRleHRGb250U2hhcGUodGV4dEZvbnRTaGFwZXNbZm9udF0pO1xuICB9XG59O1xuXG5kZWZpbmVGdW5jdGlvbih7XG4gIHR5cGU6IFwidGV4dFwiLFxuICBuYW1lczogWy8vIEZvbnQgZmFtaWxpZXNcbiAgXCJcXFxcdGV4dFwiLCBcIlxcXFx0ZXh0cm1cIiwgXCJcXFxcdGV4dHNmXCIsIFwiXFxcXHRleHR0dFwiLCBcIlxcXFx0ZXh0bm9ybWFsXCIsIC8vIEZvbnQgd2VpZ2h0c1xuICBcIlxcXFx0ZXh0YmZcIiwgXCJcXFxcdGV4dG1kXCIsIC8vIEZvbnQgU2hhcGVzXG4gIFwiXFxcXHRleHRpdFwiLCBcIlxcXFx0ZXh0dXBcIl0sXG4gIHByb3BzOiB7XG4gICAgbnVtQXJnczogMSxcbiAgICBhcmdUeXBlczogW1widGV4dFwiXSxcbiAgICBncmVlZGluZXNzOiAyLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyLFxuICAgICAgICBmdW5jTmFtZSA9IF9yZWYuZnVuY05hbWU7XG4gICAgdmFyIGJvZHkgPSBhcmdzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIG1vZGU6IHBhcnNlci5tb2RlLFxuICAgICAgYm9keTogZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQoYm9keSksXG4gICAgICBmb250OiBmdW5jTmFtZVxuICAgIH07XG4gIH0sXG4gIGh0bWxCdWlsZGVyOiBmdW5jdGlvbiBodG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9uc1dpdGhGb250KGdyb3VwLCBvcHRpb25zKTtcbiAgICB2YXIgaW5uZXIgPSBidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uKGdyb3VwLmJvZHksIG5ld09wdGlvbnMsIHRydWUpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwidGV4dFwiXSwgYnVpbGRDb21tb24udHJ5Q29tYmluZUNoYXJzKGlubmVyKSwgbmV3T3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgbmV3T3B0aW9ucyA9IG9wdGlvbnNXaXRoRm9udChncm91cCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1aWxkRXhwcmVzc2lvblJvdyhncm91cC5ib2R5LCBuZXdPcHRpb25zKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9mdW5jdGlvbnMvdW5kZXJsaW5lLmpzXG5cblxuXG5cblxuZGVmaW5lRnVuY3Rpb24oe1xuICB0eXBlOiBcInVuZGVybGluZVwiLFxuICBuYW1lczogW1wiXFxcXHVuZGVybGluZVwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAxLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihfcmVmLCBhcmdzKSB7XG4gICAgdmFyIHBhcnNlciA9IF9yZWYucGFyc2VyO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInVuZGVybGluZVwiLFxuICAgICAgbW9kZTogcGFyc2VyLm1vZGUsXG4gICAgICBib2R5OiBhcmdzWzBdXG4gICAgfTtcbiAgfSxcbiAgaHRtbEJ1aWxkZXI6IGZ1bmN0aW9uIGh0bWxCdWlsZGVyKGdyb3VwLCBvcHRpb25zKSB7XG4gICAgLy8gVW5kZXJsaW5lcyBhcmUgaGFuZGxlZCBpbiB0aGUgVGVYYm9vayBwZyA0NDMsIFJ1bGUgMTAuXG4gICAgLy8gQnVpbGQgdGhlIGlubmVyIGdyb3VwLlxuICAgIHZhciBpbm5lckdyb3VwID0gYnVpbGRIVE1MX2J1aWxkR3JvdXAoZ3JvdXAuYm9keSwgb3B0aW9ucyk7IC8vIENyZWF0ZSB0aGUgbGluZSB0byBnbyBiZWxvdyB0aGUgYm9keVxuXG4gICAgdmFyIGxpbmUgPSBidWlsZENvbW1vbi5tYWtlTGluZVNwYW4oXCJ1bmRlcmxpbmUtbGluZVwiLCBvcHRpb25zKTsgLy8gR2VuZXJhdGUgdGhlIHZsaXN0LCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuc1xuXG4gICAgdmFyIGRlZmF1bHRSdWxlVGhpY2tuZXNzID0gb3B0aW9ucy5mb250TWV0cmljcygpLmRlZmF1bHRSdWxlVGhpY2tuZXNzO1xuICAgIHZhciB2bGlzdCA9IGJ1aWxkQ29tbW9uLm1ha2VWTGlzdCh7XG4gICAgICBwb3NpdGlvblR5cGU6IFwidG9wXCIsXG4gICAgICBwb3NpdGlvbkRhdGE6IGlubmVyR3JvdXAuaGVpZ2h0LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHR5cGU6IFwia2VyblwiLFxuICAgICAgICBzaXplOiBkZWZhdWx0UnVsZVRoaWNrbmVzc1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImVsZW1cIixcbiAgICAgICAgZWxlbTogbGluZVxuICAgICAgfSwge1xuICAgICAgICB0eXBlOiBcImtlcm5cIixcbiAgICAgICAgc2l6ZTogMyAqIGRlZmF1bHRSdWxlVGhpY2tuZXNzXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6IFwiZWxlbVwiLFxuICAgICAgICBlbGVtOiBpbm5lckdyb3VwXG4gICAgICB9XVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJtb3JkXCIsIFwidW5kZXJsaW5lXCJdLCBbdmxpc3RdLCBvcHRpb25zKTtcbiAgfSxcbiAgbWF0aG1sQnVpbGRlcjogZnVuY3Rpb24gbWF0aG1sQnVpbGRlcihncm91cCwgb3B0aW9ucykge1xuICAgIHZhciBvcGVyYXRvciA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibW9cIiwgW25ldyBtYXRoTUxUcmVlLlRleHROb2RlKFwiXFx1MjAzRVwiKV0pO1xuICAgIG9wZXJhdG9yLnNldEF0dHJpYnV0ZShcInN0cmV0Y2h5XCIsIFwidHJ1ZVwiKTtcbiAgICB2YXIgbm9kZSA9IG5ldyBtYXRoTUxUcmVlLk1hdGhOb2RlKFwibXVuZGVyXCIsIFtidWlsZE1hdGhNTF9idWlsZEdyb3VwKGdyb3VwLmJvZHksIG9wdGlvbnMpLCBvcGVyYXRvcl0pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiYWNjZW50dW5kZXJcIiwgXCJ0cnVlXCIpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy92ZXJiLmpzXG5cblxuXG5cbmRlZmluZUZ1bmN0aW9uKHtcbiAgdHlwZTogXCJ2ZXJiXCIsXG4gIG5hbWVzOiBbXCJcXFxcdmVyYlwiXSxcbiAgcHJvcHM6IHtcbiAgICBudW1BcmdzOiAwLFxuICAgIGFsbG93ZWRJblRleHQ6IHRydWVcbiAgfSxcbiAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihjb250ZXh0LCBhcmdzLCBvcHRBcmdzKSB7XG4gICAgLy8gXFx2ZXJiIGFuZCBcXHZlcmIqIGFyZSBkZWFsdCB3aXRoIGRpcmVjdGx5IGluIFBhcnNlci5qcy5cbiAgICAvLyBJZiB3ZSBlbmQgdXAgaGVyZSwgaXQncyBiZWNhdXNlIG9mIGEgZmFpbHVyZSB0byBtYXRjaCB0aGUgdHdvIGRlbGltaXRlcnNcbiAgICAvLyBpbiB0aGUgcmVnZXggaW4gTGV4ZXIuanMuICBMYVRlWCByYWlzZXMgdGhlIGZvbGxvd2luZyBlcnJvciB3aGVuIFxcdmVyYiBpc1xuICAgIC8vIHRlcm1pbmF0ZWQgYnkgZW5kIG9mIGxpbmUgKG9yIGZpbGUpLlxuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFx2ZXJiIGVuZGVkIGJ5IGVuZCBvZiBsaW5lIGluc3RlYWQgb2YgbWF0Y2hpbmcgZGVsaW1pdGVyXCIpO1xuICB9LFxuICBodG1sQnVpbGRlcjogZnVuY3Rpb24gaHRtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGV4dCA9IG1ha2VWZXJiKGdyb3VwKTtcbiAgICB2YXIgYm9keSA9IFtdOyAvLyBcXHZlcmIgZW50ZXJzIHRleHQgbW9kZSBhbmQgdGhlcmVmb3JlIGlzIHNpemVkIGxpa2UgXFx0ZXh0c3R5bGVcblxuICAgIHZhciBuZXdPcHRpb25zID0gb3B0aW9ucy5oYXZpbmdTdHlsZShvcHRpb25zLnN0eWxlLnRleHQoKSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gdGV4dFtpXTtcblxuICAgICAgaWYgKGMgPT09ICd+Jykge1xuICAgICAgICBjID0gJ1xcXFx0ZXh0YXNjaWl0aWxkZSc7XG4gICAgICB9XG5cbiAgICAgIGJvZHkucHVzaChidWlsZENvbW1vbi5tYWtlU3ltYm9sKGMsIFwiVHlwZXdyaXRlci1SZWd1bGFyXCIsIGdyb3VwLm1vZGUsIG5ld09wdGlvbnMsIFtcIm1vcmRcIiwgXCJ0ZXh0dHRcIl0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRDb21tb24ubWFrZVNwYW4oW1wibW9yZFwiLCBcInRleHRcIl0uY29uY2F0KG5ld09wdGlvbnMuc2l6aW5nQ2xhc3NlcyhvcHRpb25zKSksIGJ1aWxkQ29tbW9uLnRyeUNvbWJpbmVDaGFycyhib2R5KSwgbmV3T3B0aW9ucyk7XG4gIH0sXG4gIG1hdGhtbEJ1aWxkZXI6IGZ1bmN0aW9uIG1hdGhtbEJ1aWxkZXIoZ3JvdXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGV4dCA9IG5ldyBtYXRoTUxUcmVlLlRleHROb2RlKG1ha2VWZXJiKGdyb3VwKSk7XG4gICAgdmFyIG5vZGUgPSBuZXcgbWF0aE1MVHJlZS5NYXRoTm9kZShcIm10ZXh0XCIsIFt0ZXh0XSk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJtYXRodmFyaWFudFwiLCBcIm1vbm9zcGFjZVwiKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufSk7XG4vKipcbiAqIENvbnZlcnRzIHZlcmIgZ3JvdXAgaW50byBib2R5IHN0cmluZy5cbiAqXG4gKiBcXHZlcmIqIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCBhbiBvcGVuIGJveCBcXHUyNDIzXG4gKiBcXHZlcmIgcmVwbGFjZXMgZWFjaCBzcGFjZSB3aXRoIGEgbm8tYnJlYWsgc3BhY2UgXFx4QTBcbiAqL1xuXG52YXIgbWFrZVZlcmIgPSBmdW5jdGlvbiBtYWtlVmVyYihncm91cCkge1xuICByZXR1cm4gZ3JvdXAuYm9keS5yZXBsYWNlKC8gL2csIGdyb3VwLnN0YXIgPyBcIlxcdTI0MjNcIiA6ICdcXHhBMCcpO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2Z1bmN0aW9ucy5qc1xuLyoqIEluY2x1ZGUgdGhpcyB0byBlbnN1cmUgdGhhdCBhbGwgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLiAqL1xuXG52YXIgZnVuY3Rpb25zID0gX2Z1bmN0aW9ucztcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19mdW5jdGlvbnMgPSAoZnVuY3Rpb25zKTsgLy8gVE9ETyhrZXZpbmIpOiBoYXZlIGZ1bmN0aW9ucyByZXR1cm4gYW4gb2JqZWN0IGFuZCBjYWxsIGRlZmluZUZ1bmN0aW9uIHdpdGhcbi8vIHRoYXQgb2JqZWN0IGluIHRoaXMgZmlsZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gc2lkZS1lZmZlY3RzLlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9MZXhlci5qc1xuLyoqXG4gKiBUaGUgTGV4ZXIgY2xhc3MgaGFuZGxlcyB0b2tlbml6aW5nIHRoZSBpbnB1dCBpbiB2YXJpb3VzIHdheXMuIFNpbmNlIG91clxuICogcGFyc2VyIGV4cGVjdHMgdXMgdG8gYmUgYWJsZSB0byBiYWNrdHJhY2ssIHRoZSBsZXhlciBhbGxvd3MgbGV4aW5nIGZyb20gYW55XG4gKiBnaXZlbiBzdGFydGluZyBwb2ludC5cbiAqXG4gKiBJdHMgbWFpbiBleHBvc2VkIGZ1bmN0aW9uIGlzIHRoZSBgbGV4YCBmdW5jdGlvbiwgd2hpY2ggdGFrZXMgYSBwb3NpdGlvbiB0b1xuICogbGV4IGZyb20gYW5kIGEgdHlwZSBvZiB0b2tlbiB0byBsZXguIEl0IGRlZmVycyB0byB0aGUgYXBwcm9wcmlhdGUgYF9pbm5lckxleGBcbiAqIGZ1bmN0aW9uLlxuICpcbiAqIFRoZSB2YXJpb3VzIGBfaW5uZXJMZXhgIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBhY3R1YWwgbGV4aW5nIG9mIGRpZmZlcmVudFxuICoga2luZHMuXG4gKi9cblxuXG5cblxuLyogVGhlIGZvbGxvd2luZyB0b2tlblJlZ2V4XG4gKiAtIG1hdGNoZXMgdHlwaWNhbCB3aGl0ZXNwYWNlIChidXQgbm90IE5CU1AgZXRjLikgdXNpbmcgaXRzIGZpcnN0IGdyb3VwXG4gKiAtIGRvZXMgbm90IG1hdGNoIGFueSBjb250cm9sIGNoYXJhY3RlciBcXHgwMC1cXHgxZiBleGNlcHQgd2hpdGVzcGFjZVxuICogLSBkb2VzIG5vdCBtYXRjaCBhIGJhcmUgYmFja3NsYXNoXG4gKiAtIG1hdGNoZXMgYW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgdGhvc2UganVzdCBtZW50aW9uZWRcbiAqIC0gZG9lcyBub3QgbWF0Y2ggdGhlIEJNUCBwcml2YXRlIHVzZSBhcmVhIFxcdUUwMDAtXFx1RjhGRlxuICogLSBkb2VzIG5vdCBtYXRjaCBiYXJlIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzXG4gKiAtIG1hdGNoZXMgYW55IEJNUCBjaGFyYWN0ZXIgZXhjZXB0IGZvciB0aG9zZSBqdXN0IGRlc2NyaWJlZFxuICogLSBtYXRjaGVzIGFueSB2YWxpZCBVbmljb2RlIHN1cnJvZ2F0ZSBwYWlyXG4gKiAtIG1hdGNoZXMgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgbGV0dGVyc1xuICogLSBtYXRjaGVzIGEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGFueSBCTVAgY2hhcmFjdGVyLCBpbmNsdWRpbmcgbmV3bGluZVxuICogSnVzdCBiZWNhdXNlIHRoZSBMZXhlciBtYXRjaGVzIHNvbWV0aGluZyBkb2Vzbid0IG1lYW4gaXQncyB2YWxpZCBpbnB1dDpcbiAqIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIGZ1bmN0aW9uIG9yIHN5bWJvbCBkZWZpbml0aW9uLCB0aGUgUGFyc2VyIHdpbGxcbiAqIHN0aWxsIHJlamVjdCB0aGUgaW5wdXQuXG4gKi9cbnZhciBzcGFjZVJlZ2V4U3RyaW5nID0gXCJbIFxcclxcblxcdF1cIjtcbnZhciBjb250cm9sV29yZFJlZ2V4U3RyaW5nID0gXCJcXFxcXFxcXFthLXpBLVpAXStcIjtcbnZhciBjb250cm9sU3ltYm9sUmVnZXhTdHJpbmcgPSBcIlxcXFxcXFxcW15cXHVEODAwLVxcdURGRkZdXCI7XG52YXIgY29udHJvbFdvcmRXaGl0ZXNwYWNlUmVnZXhTdHJpbmcgPSBcIlwiICsgY29udHJvbFdvcmRSZWdleFN0cmluZyArIHNwYWNlUmVnZXhTdHJpbmcgKyBcIipcIjtcbnZhciBjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleCA9IG5ldyBSZWdFeHAoXCJeKFwiICsgY29udHJvbFdvcmRSZWdleFN0cmluZyArIFwiKVwiICsgc3BhY2VSZWdleFN0cmluZyArIFwiKiRcIik7XG52YXIgY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nID0gXCJbXFx1MDMwMC1cXHUwMzZGXVwiO1xudmFyIGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCA9IG5ldyBSZWdFeHAoY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nICsgXCIrJFwiKTtcbnZhciB0b2tlblJlZ2V4U3RyaW5nID0gXCIoXCIgKyBzcGFjZVJlZ2V4U3RyaW5nICsgXCIrKXxcIiArIC8vIHdoaXRlc3BhY2VcblwiKFshLVxcXFxbXFxcXF0tXFx1MjAyN1xcdTIwMkEtXFx1RDdGRlxcdUY5MDAtXFx1RkZGRl1cIiArICggLy8gc2luZ2xlIGNvZGVwb2ludFxuY29tYmluaW5nRGlhY3JpdGljYWxNYXJrU3RyaW5nICsgXCIqXCIpICsgLy8gLi4ucGx1cyBhY2NlbnRzXG5cInxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdXCIgKyAoIC8vIHN1cnJvZ2F0ZSBwYWlyXG5jb21iaW5pbmdEaWFjcml0aWNhbE1hcmtTdHJpbmcgKyBcIipcIikgKyAvLyAuLi5wbHVzIGFjY2VudHNcblwifFxcXFxcXFxcdmVyYlxcXFwqKFteXSkuKj9cXFxcM1wiICsgLy8gXFx2ZXJiKlxuXCJ8XFxcXFxcXFx2ZXJiKFteKmEtekEtWl0pLio/XFxcXDRcIiArIC8vIFxcdmVyYiB1bnN0YXJyZWRcblwifFxcXFxcXFxcb3BlcmF0b3JuYW1lXFxcXCpcIiArICggLy8gXFxvcGVyYXRvcm5hbWUqXG5cInxcIiArIGNvbnRyb2xXb3JkV2hpdGVzcGFjZVJlZ2V4U3RyaW5nKSArICggLy8gXFxtYWNyb05hbWUgKyBzcGFjZXNcblwifFwiICsgY29udHJvbFN5bWJvbFJlZ2V4U3RyaW5nICsgXCIpXCIpOyAvLyBcXFxcLCBcXCcsIGV0Yy5cblxuLyoqIE1haW4gTGV4ZXIgY2xhc3MgKi9cblxudmFyIExleGVyX0xleGVyID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgLy8gY2F0ZWdvcnkgY29kZXMsIG9ubHkgc3VwcG9ydHMgY29tbWVudCBjaGFyYWN0ZXJzICgxNCkgZm9yIG5vd1xuICBmdW5jdGlvbiBMZXhlcihpbnB1dCwgc2V0dGluZ3MpIHtcbiAgICB0aGlzLmlucHV0ID0gdm9pZCAwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB2b2lkIDA7XG4gICAgdGhpcy50b2tlblJlZ2V4ID0gdm9pZCAwO1xuICAgIHRoaXMuY2F0Y29kZXMgPSB2b2lkIDA7XG4gICAgLy8gU2VwYXJhdGUgYWNjZW50cyBmcm9tIGNoYXJhY3RlcnNcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIHRoaXMudG9rZW5SZWdleCA9IG5ldyBSZWdFeHAodG9rZW5SZWdleFN0cmluZywgJ2cnKTtcbiAgICB0aGlzLmNhdGNvZGVzID0ge1xuICAgICAgXCIlXCI6IDE0IC8vIGNvbW1lbnQgY2hhcmFjdGVyXG5cbiAgICB9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IExleGVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8uc2V0Q2F0Y29kZSA9IGZ1bmN0aW9uIHNldENhdGNvZGUoY2hhciwgY29kZSkge1xuICAgIHRoaXMuY2F0Y29kZXNbY2hhcl0gPSBjb2RlO1xuICB9XG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGxleGVzIGEgc2luZ2xlIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5sZXggPSBmdW5jdGlvbiBsZXgoKSB7XG4gICAgdmFyIGlucHV0ID0gdGhpcy5pbnB1dDtcbiAgICB2YXIgcG9zID0gdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleDtcblxuICAgIGlmIChwb3MgPT09IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBUb2tlbl9Ub2tlbihcIkVPRlwiLCBuZXcgU291cmNlTG9jYXRpb24odGhpcywgcG9zLCBwb3MpKTtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2ggPSB0aGlzLnRva2VuUmVnZXguZXhlYyhpbnB1dCk7XG5cbiAgICBpZiAobWF0Y2ggPT09IG51bGwgfHwgbWF0Y2guaW5kZXggIT09IHBvcykge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXI6ICdcIiArIGlucHV0W3Bvc10gKyBcIidcIiwgbmV3IFRva2VuX1Rva2VuKGlucHV0W3Bvc10sIG5ldyBTb3VyY2VMb2NhdGlvbih0aGlzLCBwb3MsIHBvcyArIDEpKSk7XG4gICAgfVxuXG4gICAgdmFyIHRleHQgPSBtYXRjaFsyXSB8fCBcIiBcIjtcblxuICAgIGlmICh0aGlzLmNhdGNvZGVzW3RleHRdID09PSAxNCkge1xuICAgICAgLy8gY29tbWVudCBjaGFyYWN0ZXJcbiAgICAgIHZhciBubEluZGV4ID0gaW5wdXQuaW5kZXhPZignXFxuJywgdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleCk7XG5cbiAgICAgIGlmIChubEluZGV4ID09PSAtMSkge1xuICAgICAgICB0aGlzLnRva2VuUmVnZXgubGFzdEluZGV4ID0gaW5wdXQubGVuZ3RoOyAvLyBFT0ZcblxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcImNvbW1lbnRBdEVuZFwiLCBcIiUgY29tbWVudCBoYXMgbm8gdGVybWluYXRpbmcgbmV3bGluZTsgTGFUZVggd291bGQgXCIgKyBcImZhaWwgYmVjYXVzZSBvZiBjb21tZW50aW5nIHRoZSBlbmQgb2YgbWF0aCBtb2RlIChlLmcuICQpXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlblJlZ2V4Lmxhc3RJbmRleCA9IG5sSW5kZXggKyAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICB9IC8vIFRyaW0gYW55IHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSBjb250cm9sIHdvcmQgbWF0Y2hcblxuXG4gICAgdmFyIGNvbnRyb2xNYXRjaCA9IHRleHQubWF0Y2goY29udHJvbFdvcmRXaGl0ZXNwYWNlUmVnZXgpO1xuXG4gICAgaWYgKGNvbnRyb2xNYXRjaCkge1xuICAgICAgdGV4dCA9IGNvbnRyb2xNYXRjaFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFRva2VuX1Rva2VuKHRleHQsIG5ldyBTb3VyY2VMb2NhdGlvbih0aGlzLCBwb3MsIHRoaXMudG9rZW5SZWdleC5sYXN0SW5kZXgpKTtcbiAgfTtcblxuICByZXR1cm4gTGV4ZXI7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvTmFtZXNwYWNlLmpzXG4vKipcbiAqIEEgYE5hbWVzcGFjZWAgcmVmZXJzIHRvIGEgc3BhY2Ugb2YgbmFtZWFibGUgdGhpbmdzIGxpa2UgbWFjcm9zIG9yIGxlbmd0aHMsXG4gKiB3aGljaCBjYW4gYmUgYHNldGAgZWl0aGVyIGdsb2JhbGx5IG9yIGxvY2FsIHRvIGEgbmVzdGVkIGdyb3VwLCB1c2luZyBhblxuICogdW5kbyBzdGFjayBzaW1pbGFyIHRvIGhvdyBUZVggaW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uYWxpdHkuXG4gKiBQZXJmb3JtYW5jZS13aXNlLCBgZ2V0YCBhbmQgbG9jYWwgYHNldGAgdGFrZSBjb25zdGFudCB0aW1lLCB3aGlsZSBnbG9iYWxcbiAqIGBzZXRgIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZSBkZXB0aCBvZiBncm91cCBuZXN0aW5nLlxuICovXG5cblxudmFyIE5hbWVzcGFjZV9OYW1lc3BhY2UgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQm90aCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIG9iamVjdCBvZlxuICAgKiBidWlsdC1pbiBtYXBwaW5ncyB3aGljaCBuZXZlciBjaGFuZ2UuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICAgKiBvZiBpbml0aWFsIChnbG9iYWwtbGV2ZWwpIG1hcHBpbmdzLCB3aGljaCB3aWxsIGNvbnN0YW50bHkgY2hhbmdlXG4gICAqIGFjY29yZGluZyB0byBhbnkgZ2xvYmFsL3RvcC1sZXZlbCBgc2V0YHMgZG9uZS5cbiAgICovXG4gIGZ1bmN0aW9uIE5hbWVzcGFjZShidWlsdGlucywgZ2xvYmFsTWFjcm9zKSB7XG4gICAgaWYgKGJ1aWx0aW5zID09PSB2b2lkIDApIHtcbiAgICAgIGJ1aWx0aW5zID0ge307XG4gICAgfVxuXG4gICAgaWYgKGdsb2JhbE1hY3JvcyA9PT0gdm9pZCAwKSB7XG4gICAgICBnbG9iYWxNYWNyb3MgPSB7fTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB2b2lkIDA7XG4gICAgdGhpcy5idWlsdGlucyA9IHZvaWQgMDtcbiAgICB0aGlzLnVuZGVmU3RhY2sgPSB2b2lkIDA7XG4gICAgdGhpcy5jdXJyZW50ID0gZ2xvYmFsTWFjcm9zO1xuICAgIHRoaXMuYnVpbHRpbnMgPSBidWlsdGlucztcbiAgICB0aGlzLnVuZGVmU3RhY2sgPSBbXTtcbiAgfVxuICAvKipcbiAgICogU3RhcnQgYSBuZXcgbmVzdGVkIGdyb3VwLCBhZmZlY3RpbmcgZnV0dXJlIGxvY2FsIGBzZXRgcy5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gTmFtZXNwYWNlLnByb3RvdHlwZTtcblxuICBfcHJvdG8uYmVnaW5Hcm91cCA9IGZ1bmN0aW9uIGJlZ2luR3JvdXAoKSB7XG4gICAgdGhpcy51bmRlZlN0YWNrLnB1c2goe30pO1xuICB9XG4gIC8qKlxuICAgKiBFbmQgY3VycmVudCBuZXN0ZWQgZ3JvdXAsIHJlc3RvcmluZyB2YWx1ZXMgYmVmb3JlIHRoZSBncm91cCBiZWdhbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZW5kR3JvdXAgPSBmdW5jdGlvbiBlbmRHcm91cCgpIHtcbiAgICBpZiAodGhpcy51bmRlZlN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5iYWxhbmNlZCBuYW1lc3BhY2UgZGVzdHJ1Y3Rpb246IGF0dGVtcHQgXCIgKyBcInRvIHBvcCBnbG9iYWwgbmFtZXNwYWNlOyBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWdcIik7XG4gICAgfVxuXG4gICAgdmFyIHVuZGVmcyA9IHRoaXMudW5kZWZTdGFjay5wb3AoKTtcblxuICAgIGZvciAodmFyIHVuZGVmIGluIHVuZGVmcykge1xuICAgICAgaWYgKHVuZGVmcy5oYXNPd25Qcm9wZXJ0eSh1bmRlZikpIHtcbiAgICAgICAgaWYgKHVuZGVmc1t1bmRlZl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRbdW5kZWZdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3VycmVudFt1bmRlZl0gPSB1bmRlZnNbdW5kZWZdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEZXRlY3Qgd2hldGhlciBgbmFtZWAgaGFzIGEgZGVmaW5pdGlvbi4gIEVxdWl2YWxlbnQgdG9cbiAgICogYGdldChuYW1lKSAhPSBudWxsYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGFzID0gZnVuY3Rpb24gaGFzKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50Lmhhc093blByb3BlcnR5KG5hbWUpIHx8IHRoaXMuYnVpbHRpbnMuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIG5hbWUsIG9yIGB1bmRlZmluZWRgIGlmIHRoZXJlIGlzIG5vIHZhbHVlLlxuICAgKlxuICAgKiBOb3RlOiBEbyBub3QgdXNlIGBpZiAobmFtZXNwYWNlLmdldCguLi4pKWAgdG8gZGV0ZWN0IHdoZXRoZXIgYSBtYWNyb1xuICAgKiBpcyBkZWZpbmVkLCBhcyB0aGUgZGVmaW5pdGlvbiBtYXkgYmUgdGhlIGVtcHR5IHN0cmluZyB3aGljaCBldmFsdWF0ZXNcbiAgICogdG8gYGZhbHNlYCBpbiBKYXZhU2NyaXB0LiAgVXNlIGBpZiAobmFtZXNwYWNlLmdldCguLi4pICE9IG51bGwpYCBvclxuICAgKiBgaWYgKG5hbWVzcGFjZS5oYXMoLi4uKSlgLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5nZXQgPSBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnQuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWx0aW5zW25hbWVdO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgbmFtZSwgYW5kIG9wdGlvbmFsbHkgc2V0IGl0IGdsb2JhbGx5IHRvby5cbiAgICogTG9jYWwgc2V0KCkgc2V0cyB0aGUgY3VycmVudCB2YWx1ZSBhbmQgKHdoZW4gYXBwcm9wcmlhdGUpIGFkZHMgYW4gdW5kb1xuICAgKiBvcGVyYXRpb24gdG8gdGhlIHVuZG8gc3RhY2suICBHbG9iYWwgc2V0KCkgbWF5IGNoYW5nZSB0aGUgdW5kb1xuICAgKiBvcGVyYXRpb24gYXQgZXZlcnkgbGV2ZWwsIHNvIHRha2VzIHRpbWUgbGluZWFyIGluIHRoZWlyIG51bWJlci5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc2V0ID0gZnVuY3Rpb24gc2V0KG5hbWUsIHZhbHVlLCBnbG9iYWwpIHtcbiAgICBpZiAoZ2xvYmFsID09PSB2b2lkIDApIHtcbiAgICAgIGdsb2JhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChnbG9iYWwpIHtcbiAgICAgIC8vIEdsb2JhbCBzZXQgaXMgZXF1aXZhbGVudCB0byBzZXR0aW5nIGluIGFsbCBncm91cHMuICBTaW11bGF0ZSB0aGlzXG4gICAgICAvLyBieSBkZXN0cm95aW5nIGFueSB1bmRvcyBjdXJyZW50bHkgc2NoZWR1bGVkIGZvciB0aGlzIG5hbWUsXG4gICAgICAvLyBhbmQgYWRkaW5nIGFuIHVuZG8gd2l0aCB0aGUgKm5ldyogdmFsdWUgKGluIGNhc2UgaXQgbGF0ZXIgZ2V0c1xuICAgICAgLy8gbG9jYWxseSByZXNldCB3aXRoaW4gdGhpcyBlbnZpcm9ubWVudCkuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudW5kZWZTdGFjay5sZW5ndGg7IGkrKykge1xuICAgICAgICBkZWxldGUgdGhpcy51bmRlZlN0YWNrW2ldW25hbWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51bmRlZlN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy51bmRlZlN0YWNrW3RoaXMudW5kZWZTdGFjay5sZW5ndGggLSAxXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVbmRvIHRoaXMgc2V0IGF0IGVuZCBvZiB0aGlzIGdyb3VwIChwb3NzaWJseSB0byBgdW5kZWZpbmVkYCksXG4gICAgICAvLyB1bmxlc3MgYW4gdW5kbyBpcyBhbHJlYWR5IGluIHBsYWNlLCBpbiB3aGljaCBjYXNlIHRoYXQgb2xkZXJcbiAgICAgIC8vIHZhbHVlIGlzIHRoZSBjb3JyZWN0IG9uZS5cbiAgICAgIHZhciB0b3AgPSB0aGlzLnVuZGVmU3RhY2tbdGhpcy51bmRlZlN0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAodG9wICYmICF0b3AuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgdG9wW25hbWVdID0gdGhpcy5jdXJyZW50W25hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFtuYW1lXSA9IHZhbHVlO1xuICB9O1xuXG4gIHJldHVybiBOYW1lc3BhY2U7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvbWFjcm9zLmpzXG4vKipcbiAqIFByZWRlZmluZWQgbWFjcm9zIGZvciBLYVRlWC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHNvbWUgY29tbWFuZHMgaW4gdGVybXMgb2Ygb3RoZXJzLlxuICovXG5cblxuXG5cblxudmFyIGJ1aWx0aW5NYWNyb3MgPSB7fTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1hY3JvcyA9IChidWlsdGluTWFjcm9zKTsgLy8gVGhpcyBmdW5jdGlvbiBtaWdodCBvbmUgZGF5IGFjY2VwdCBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IGFuZCBkbyBtb3JlIHRoaW5ncy5cblxuZnVuY3Rpb24gZGVmaW5lTWFjcm8obmFtZSwgYm9keSkge1xuICBidWlsdGluTWFjcm9zW25hbWVdID0gYm9keTtcbn0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gbWFjcm8gdG9vbHNcbi8vIExhVGVYJ3MgXFxAZmlyc3RvZnR3b3sjMX17IzJ9IGV4cGFuZHMgdG8gIzEsIHNraXBwaW5nICMyXG4vLyBUZVggc291cmNlOiBcXGxvbmdcXGRlZlxcQGZpcnN0b2Z0d28jMSMyeyMxfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxAZmlyc3RvZnR3b1wiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMik7XG4gIHJldHVybiB7XG4gICAgdG9rZW5zOiBhcmdzWzBdLFxuICAgIG51bUFyZ3M6IDBcbiAgfTtcbn0pOyAvLyBMYVRlWCdzIFxcQHNlY29uZG9mdHdveyMxfXsjMn0gZXhwYW5kcyB0byAjMiwgc2tpcHBpbmcgIzFcbi8vIFRlWCBzb3VyY2U6IFxcbG9uZ1xcZGVmXFxAc2Vjb25kb2Z0d28jMSMyeyMyfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxAc2Vjb25kb2Z0d29cIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGFyZ3MgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDIpO1xuICByZXR1cm4ge1xuICAgIHRva2VuczogYXJnc1sxXSxcbiAgICBudW1BcmdzOiAwXG4gIH07XG59KTsgLy8gTGFUZVgncyBcXEBpZm5leHRjaGFyeyMxfXsjMn17IzN9IGxvb2tzIGFoZWFkIHRvIHRoZSBuZXh0ICh1bmV4cGFuZGVkKVxuLy8gc3ltYm9sLiAgSWYgaXQgbWF0Y2hlcyAjMSwgdGhlbiB0aGUgbWFjcm8gZXhwYW5kcyB0byAjMjsgb3RoZXJ3aXNlLCAjMy5cbi8vIE5vdGUsIGhvd2V2ZXIsIHRoYXQgaXQgZG9lcyBub3QgY29uc3VtZSB0aGUgbmV4dCBzeW1ib2wgaW4gZWl0aGVyIGNhc2UuXG5cbmRlZmluZU1hY3JvKFwiXFxcXEBpZm5leHRjaGFyXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBhcmdzID0gY29udGV4dC5jb25zdW1lQXJncygzKTsgLy8gc3ltYm9sLCBpZiwgZWxzZVxuXG4gIHZhciBuZXh0VG9rZW4gPSBjb250ZXh0LmZ1dHVyZSgpO1xuXG4gIGlmIChhcmdzWzBdLmxlbmd0aCA9PT0gMSAmJiBhcmdzWzBdWzBdLnRleHQgPT09IG5leHRUb2tlbi50ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuczogYXJnc1sxXSxcbiAgICAgIG51bUFyZ3M6IDBcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMl0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfVxufSk7IC8vIExhVGVYJ3MgXFxAaWZzdGFyeyMxfXsjMn0gbG9va3MgYWhlYWQgdG8gdGhlIG5leHQgKHVuZXhwYW5kZWQpIHN5bWJvbC5cbi8vIElmIGl0IGlzIGAqYCwgdGhlbiBpdCBjb25zdW1lcyB0aGUgc3ltYm9sLCBhbmQgdGhlIG1hY3JvIGV4cGFuZHMgdG8gIzE7XG4vLyBvdGhlcndpc2UsIHRoZSBtYWNybyBleHBhbmRzIHRvICMyICh3aXRob3V0IGNvbnN1bWluZyB0aGUgc3ltYm9sKS5cbi8vIFRlWCBzb3VyY2U6IFxcZGVmXFxAaWZzdGFyIzF7XFxAaWZuZXh0Y2hhciAqe1xcQGZpcnN0b2Z0d297IzF9fX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcQGlmc3RhclwiLCBcIlxcXFxAaWZuZXh0Y2hhciAqe1xcXFxAZmlyc3RvZnR3b3sjMX19XCIpOyAvLyBMYVRlWCdzIFxcVGV4dE9yTWF0aHsjMX17IzJ9IGV4cGFuZHMgdG8gIzEgaW4gdGV4dCBtb2RlLCAjMiBpbiBtYXRoIG1vZGVcblxuZGVmaW5lTWFjcm8oXCJcXFxcVGV4dE9yTWF0aFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgYXJncyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMik7XG5cbiAgaWYgKGNvbnRleHQubW9kZSA9PT0gJ3RleHQnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuczogYXJnc1swXSxcbiAgICAgIG51bUFyZ3M6IDBcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbnM6IGFyZ3NbMV0sXG4gICAgICBudW1BcmdzOiAwXG4gICAgfTtcbiAgfVxufSk7IC8vIExvb2t1cCB0YWJsZSBmb3IgcGFyc2luZyBudW1iZXJzIGluIGJhc2UgOCB0aHJvdWdoIDE2XG5cbnZhciBkaWdpdFRvTnVtYmVyID0ge1xuICBcIjBcIjogMCxcbiAgXCIxXCI6IDEsXG4gIFwiMlwiOiAyLFxuICBcIjNcIjogMyxcbiAgXCI0XCI6IDQsXG4gIFwiNVwiOiA1LFxuICBcIjZcIjogNixcbiAgXCI3XCI6IDcsXG4gIFwiOFwiOiA4LFxuICBcIjlcIjogOSxcbiAgXCJhXCI6IDEwLFxuICBcIkFcIjogMTAsXG4gIFwiYlwiOiAxMSxcbiAgXCJCXCI6IDExLFxuICBcImNcIjogMTIsXG4gIFwiQ1wiOiAxMixcbiAgXCJkXCI6IDEzLFxuICBcIkRcIjogMTMsXG4gIFwiZVwiOiAxNCxcbiAgXCJFXCI6IDE0LFxuICBcImZcIjogMTUsXG4gIFwiRlwiOiAxNVxufTsgLy8gVGVYIFxcY2hhciBtYWtlcyBhIGxpdGVyYWwgY2hhcmFjdGVyIChjYXRjb2RlIDEyKSB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm1zOlxuLy8gKHNlZSBUaGUgVGVYQm9vaywgcC4gNDMpXG4vLyAgIFxcY2hhcjEyMyAgLS0gZGVjaW1hbFxuLy8gICBcXGNoYXInMTIzIC0tIG9jdGFsXG4vLyAgIFxcY2hhclwiMTIzIC0tIGhleFxuLy8gICBcXGNoYXJgeCAgIC0tIGNoYXJhY3RlciB0aGF0IGNhbiBiZSB3cml0dGVuIChpLmUuIGlzbid0IGFjdGl2ZSlcbi8vICAgXFxjaGFyYFxceCAgLS0gY2hhcmFjdGVyIHRoYXQgY2Fubm90IGJlIHdyaXR0ZW4gKGUuZy4gJSlcbi8vIFRoZXNlIGFsbCByZWZlciB0byBjaGFyYWN0ZXJzIGZyb20gdGhlIGZvbnQsIHNvIHdlIHR1cm4gdGhlbSBpbnRvIHNwZWNpYWxcbi8vIGNhbGxzIHRvIGEgZnVuY3Rpb24gXFxAY2hhciBkZWFsdCB3aXRoIGluIHRoZSBQYXJzZXIuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGNoYXJcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIHRva2VuID0gY29udGV4dC5wb3BUb2tlbigpO1xuICB2YXIgYmFzZTtcbiAgdmFyIG51bWJlciA9ICcnO1xuXG4gIGlmICh0b2tlbi50ZXh0ID09PSBcIidcIikge1xuICAgIGJhc2UgPSA4O1xuICAgIHRva2VuID0gY29udGV4dC5wb3BUb2tlbigpO1xuICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT09ICdcIicpIHtcbiAgICBiYXNlID0gMTY7XG4gICAgdG9rZW4gPSBjb250ZXh0LnBvcFRva2VuKCk7XG4gIH0gZWxzZSBpZiAodG9rZW4udGV4dCA9PT0gXCJgXCIpIHtcbiAgICB0b2tlbiA9IGNvbnRleHQucG9wVG9rZW4oKTtcblxuICAgIGlmICh0b2tlbi50ZXh0WzBdID09PSBcIlxcXFxcIikge1xuICAgICAgbnVtYmVyID0gdG9rZW4udGV4dC5jaGFyQ29kZUF0KDEpO1xuICAgIH0gZWxzZSBpZiAodG9rZW4udGV4dCA9PT0gXCJFT0ZcIikge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXGNoYXJgIG1pc3NpbmcgYXJndW1lbnRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bWJlciA9IHRva2VuLnRleHQuY2hhckNvZGVBdCgwKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYmFzZSA9IDEwO1xuICB9XG5cbiAgaWYgKGJhc2UpIHtcbiAgICAvLyBQYXJzZSBhIG51bWJlciBpbiB0aGUgZ2l2ZW4gYmFzZSwgc3RhcnRpbmcgd2l0aCBmaXJzdCBgdG9rZW5gLlxuICAgIG51bWJlciA9IGRpZ2l0VG9OdW1iZXJbdG9rZW4udGV4dF07XG5cbiAgICBpZiAobnVtYmVyID09IG51bGwgfHwgbnVtYmVyID49IGJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgYmFzZS1cIiArIGJhc2UgKyBcIiBkaWdpdCBcIiArIHRva2VuLnRleHQpO1xuICAgIH1cblxuICAgIHZhciBkaWdpdDtcblxuICAgIHdoaWxlICgoZGlnaXQgPSBkaWdpdFRvTnVtYmVyW2NvbnRleHQuZnV0dXJlKCkudGV4dF0pICE9IG51bGwgJiYgZGlnaXQgPCBiYXNlKSB7XG4gICAgICBudW1iZXIgKj0gYmFzZTtcbiAgICAgIG51bWJlciArPSBkaWdpdDtcbiAgICAgIGNvbnRleHQucG9wVG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXCJcXFxcQGNoYXJ7XCIgKyBudW1iZXIgKyBcIn1cIjtcbn0pOyAvLyBCYXNpYyBzdXBwb3J0IGZvciBtYWNybyBkZWZpbml0aW9uczpcbi8vICAgICBcXGRlZlxcbWFjcm97ZXhwYW5zaW9ufVxuLy8gICAgIFxcZGVmXFxtYWNybyMxe2V4cGFuc2lvbn1cbi8vICAgICBcXGRlZlxcbWFjcm8jMSMye2V4cGFuc2lvbn1cbi8vICAgICBcXGRlZlxcbWFjcm8jMSMyIzMjNCM1IzYjNyM4Izl7ZXhwYW5zaW9ufVxuLy8gQWxzbyB0aGUgXFxnZGVmIGFuZCBcXGdsb2JhbFxcZGVmIGVxdWl2YWxlbnRzXG5cbnZhciBtYWNyb3NfZGVmID0gZnVuY3Rpb24gZGVmKGNvbnRleHQsIGdsb2JhbCkge1xuICB2YXIgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAoYXJnLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxnZGVmJ3MgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIG1hY3JvIG5hbWVcIik7XG4gIH1cblxuICB2YXIgbmFtZSA9IGFyZ1swXS50ZXh0OyAvLyBDb3VudCBhcmd1bWVudCBzcGVjaWZpZXJzLCBhbmQgY2hlY2sgdGhleSBhcmUgaW4gdGhlIG9yZGVyICMxICMyIC4uLlxuXG4gIHZhciBudW1BcmdzID0gMDtcbiAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICB3aGlsZSAoYXJnLmxlbmd0aCA9PT0gMSAmJiBhcmdbMF0udGV4dCA9PT0gXCIjXCIpIHtcbiAgICBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuXG4gICAgaWYgKGFyZy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgYXJndW1lbnQgbnVtYmVyIGxlbmd0aCBcXFwiXCIgKyBhcmcubGVuZ3RoICsgXCJcXFwiXCIpO1xuICAgIH1cblxuICAgIGlmICghL15bMS05XSQvLnRlc3QoYXJnWzBdLnRleHQpKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IG51bWJlciBcXFwiXCIgKyBhcmdbMF0udGV4dCArIFwiXFxcIlwiKTtcbiAgICB9XG5cbiAgICBudW1BcmdzKys7XG5cbiAgICBpZiAocGFyc2VJbnQoYXJnWzBdLnRleHQpICE9PSBudW1BcmdzKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJBcmd1bWVudCBudW1iZXIgXFxcIlwiICsgYXJnWzBdLnRleHQgKyBcIlxcXCIgb3V0IG9mIG9yZGVyXCIpO1xuICAgIH1cblxuICAgIGFyZyA9IGNvbnRleHQuY29uc3VtZUFyZ3MoMSlbMF07XG4gIH0gLy8gRmluYWwgYXJnIGlzIHRoZSBleHBhbnNpb24gb2YgdGhlIG1hY3JvXG5cblxuICBjb250ZXh0Lm1hY3Jvcy5zZXQobmFtZSwge1xuICAgIHRva2VuczogYXJnLFxuICAgIG51bUFyZ3M6IG51bUFyZ3NcbiAgfSwgZ2xvYmFsKTtcbiAgcmV0dXJuICcnO1xufTtcblxuZGVmaW5lTWFjcm8oXCJcXFxcZ2RlZlwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX2RlZihjb250ZXh0LCB0cnVlKTtcbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxcZGVmXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHJldHVybiBtYWNyb3NfZGVmKGNvbnRleHQsIGZhbHNlKTtcbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ2xvYmFsXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHZhciBuZXh0ID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAobmV4dC5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIGNvbW1hbmQgYWZ0ZXIgXFxcXGdsb2JhbFwiKTtcbiAgfVxuXG4gIHZhciBjb21tYW5kID0gbmV4dFswXS50ZXh0OyAvLyBUT0RPOiBTaG91bGQgZXhwYW5kIGNvbW1hbmRcblxuICBpZiAoY29tbWFuZCA9PT0gXCJcXFxcZGVmXCIpIHtcbiAgICAvLyBcXGdsb2JhbFxcZGVmIGlzIGVxdWl2YWxlbnQgdG8gXFxnZGVmXG4gICAgcmV0dXJuIG1hY3Jvc19kZWYoY29udGV4dCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBjb21tYW5kICdcIiArIGNvbW1hbmQgKyBcIicgYWZ0ZXIgXFxcXGdsb2JhbFwiKTtcbiAgfVxufSk7IC8vIFxcbmV3Y29tbWFuZHtcXG1hY3JvfVthcmdzXXtkZWZpbml0aW9ufVxuLy8gXFxyZW5ld2NvbW1hbmR7XFxtYWNyb31bYXJnc117ZGVmaW5pdGlvbn1cbi8vIFRPRE86IE9wdGlvbmFsIGFyZ3VtZW50czogXFxuZXdjb21tYW5ke1xcbWFjcm99W2FyZ3NdW2RlZmF1bHRde2RlZmluaXRpb259XG5cbnZhciBtYWNyb3NfbmV3Y29tbWFuZCA9IGZ1bmN0aW9uIG5ld2NvbW1hbmQoY29udGV4dCwgZXhpc3RzT0ssIG5vbmV4aXN0c09LKSB7XG4gIHZhciBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuXG4gIGlmIChhcmcubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXG5ld2NvbW1hbmQncyBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgbWFjcm8gbmFtZVwiKTtcbiAgfVxuXG4gIHZhciBuYW1lID0gYXJnWzBdLnRleHQ7XG4gIHZhciBleGlzdHMgPSBjb250ZXh0LmlzRGVmaW5lZChuYW1lKTtcblxuICBpZiAoZXhpc3RzICYmICFleGlzdHNPSykge1xuICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFxuZXdjb21tYW5ke1wiICsgbmFtZSArIFwifSBhdHRlbXB0aW5nIHRvIHJlZGVmaW5lIFwiICsgKG5hbWUgKyBcIjsgdXNlIFxcXFxyZW5ld2NvbW1hbmRcIikpO1xuICB9XG5cbiAgaWYgKCFleGlzdHMgJiYgIW5vbmV4aXN0c09LKSB7XG4gICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXHJlbmV3Y29tbWFuZHtcIiArIG5hbWUgKyBcIn0gd2hlbiBjb21tYW5kIFwiICsgbmFtZSArIFwiIFwiICsgXCJkb2VzIG5vdCB5ZXQgZXhpc3Q7IHVzZSBcXFxcbmV3Y29tbWFuZFwiKTtcbiAgfVxuXG4gIHZhciBudW1BcmdzID0gMDtcbiAgYXJnID0gY29udGV4dC5jb25zdW1lQXJncygxKVswXTtcblxuICBpZiAoYXJnLmxlbmd0aCA9PT0gMSAmJiBhcmdbMF0udGV4dCA9PT0gXCJbXCIpIHtcbiAgICB2YXIgYXJnVGV4dCA9ICcnO1xuICAgIHZhciB0b2tlbiA9IGNvbnRleHQuZXhwYW5kTmV4dFRva2VuKCk7XG5cbiAgICB3aGlsZSAodG9rZW4udGV4dCAhPT0gXCJdXCIgJiYgdG9rZW4udGV4dCAhPT0gXCJFT0ZcIikge1xuICAgICAgLy8gVE9ETzogU2hvdWxkIHByb3Blcmx5IGV4cGFuZCBhcmcsIGUuZy4sIGlnbm9yZSB7fXNcbiAgICAgIGFyZ1RleHQgKz0gdG9rZW4udGV4dDtcbiAgICAgIHRva2VuID0gY29udGV4dC5leHBhbmROZXh0VG9rZW4oKTtcbiAgICB9XG5cbiAgICBpZiAoIWFyZ1RleHQubWF0Y2goL15cXHMqWzAtOV0rXFxzKiQvKSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzOiBcIiArIGFyZ1RleHQpO1xuICAgIH1cblxuICAgIG51bUFyZ3MgPSBwYXJzZUludChhcmdUZXh0KTtcbiAgICBhcmcgPSBjb250ZXh0LmNvbnN1bWVBcmdzKDEpWzBdO1xuICB9IC8vIEZpbmFsIGFyZyBpcyB0aGUgZXhwYW5zaW9uIG9mIHRoZSBtYWNyb1xuXG5cbiAgY29udGV4dC5tYWNyb3Muc2V0KG5hbWUsIHtcbiAgICB0b2tlbnM6IGFyZyxcbiAgICBudW1BcmdzOiBudW1BcmdzXG4gIH0pO1xuICByZXR1cm4gJyc7XG59O1xuXG5kZWZpbmVNYWNybyhcIlxcXFxuZXdjb21tYW5kXCIsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIHJldHVybiBtYWNyb3NfbmV3Y29tbWFuZChjb250ZXh0LCBmYWxzZSwgdHJ1ZSk7XG59KTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlbmV3Y29tbWFuZFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX25ld2NvbW1hbmQoY29udGV4dCwgdHJ1ZSwgZmFsc2UpO1xufSk7XG5kZWZpbmVNYWNybyhcIlxcXFxwcm92aWRlY29tbWFuZFwiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICByZXR1cm4gbWFjcm9zX25ld2NvbW1hbmQoY29udGV4dCwgdHJ1ZSwgdHJ1ZSk7XG59KTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR3JvdXBpbmdcbi8vIFxcbGV0XFxiZ3JvdXA9eyBcXGxldFxcZWdyb3VwPX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcYmdyb3VwXCIsIFwie1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGVncm91cFwiLCBcIn1cIik7IC8vIFN5bWJvbHMgZnJvbSBsYXRleC5sdHg6XG4vLyBcXGRlZlxcbHF7YH1cbi8vIFxcZGVmXFxycXsnfVxuLy8gXFxkZWYgXFxhYSB7XFxyIGF9XG4vLyBcXGRlZiBcXEFBIHtcXHIgQX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcbHFcIiwgXCJgXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccnFcIiwgXCInXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWFcIiwgXCJcXFxcciBhXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQUFcIiwgXCJcXFxcciBBXCIpOyAvLyBDb3B5cmlnaHQgKEMpIGFuZCByZWdpc3RlcmVkIChSKSBzeW1ib2xzLiBVc2UgcmF3IHN5bWJvbCBpbiBNYXRoTUwuXG4vLyBcXERlY2xhcmVUZXh0Q29tbWFuZERlZmF1bHR7XFx0ZXh0Y29weXJpZ2h0fXtcXHRleHRjaXJjbGVke2N9fVxuLy8gXFxEZWNsYXJlVGV4dENvbW1hbmREZWZhdWx0e1xcdGV4dHJlZ2lzdGVyZWR9e1xcdGV4dGNpcmNsZWR7JVxuLy8gICAgICBcXGNoZWNrQG1hdGhmb250c1xcZm9udHNpemVcXHNmQHNpemVcXHpAXFxtYXRoQGZvbnRzZmFsc2VcXHNlbGVjdGZvbnQgUn19XG4vLyBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcY29weXJpZ2h0fXslXG4vLyAgICBcXGlmbW1vZGV7XFxuZnNzQHRleHR7XFx0ZXh0Y29weXJpZ2h0fX1cXGVsc2VcXHRleHRjb3B5cmlnaHRcXGZpfVxuXG5kZWZpbmVNYWNybyhcIlxcXFx0ZXh0Y29weXJpZ2h0XCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFx0ZXh0Y2lyY2xlZHtjfX17XFxcXGNoYXJgwql9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29weXJpZ2h0XCIsIFwiXFxcXFRleHRPck1hdGh7XFxcXHRleHRjb3B5cmlnaHR9e1xcXFx0ZXh0e1xcXFx0ZXh0Y29weXJpZ2h0fX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZXh0cmVnaXN0ZXJlZFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcdGV4dGNpcmNsZWR7XFxcXHNjcmlwdHNpemUgUn19e1xcXFxjaGFyYMKufVwiKTsgLy8gQ2hhcmFjdGVycyBvbWl0dGVkIGZyb20gVW5pY29kZSByYW5nZSAxRDQwMOKAkzFEN0ZGXG5cbmRlZmluZU1hY3JvKFwiXFx1MjEyQ1wiLCBcIlxcXFxtYXRoc2Nye0J9XCIpOyAvLyBzY3JpcHRcblxuZGVmaW5lTWFjcm8oXCJcXHUyMTMwXCIsIFwiXFxcXG1hdGhzY3J7RX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMzFcIiwgXCJcXFxcbWF0aHNjcntGfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEwQlwiLCBcIlxcXFxtYXRoc2Nye0h9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTEwXCIsIFwiXFxcXG1hdGhzY3J7SX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMTJcIiwgXCJcXFxcbWF0aHNjcntMfVwiKTtcbmRlZmluZU1hY3JvKFwiXFx1MjEzM1wiLCBcIlxcXFxtYXRoc2Nye019XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTFCXCIsIFwiXFxcXG1hdGhzY3J7Un1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIxMkRcIiwgXCJcXFxcbWF0aGZyYWt7Q31cIik7IC8vIEZyYWt0dXJcblxuZGVmaW5lTWFjcm8oXCJcXHUyMTBDXCIsIFwiXFxcXG1hdGhmcmFre0h9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMTI4XCIsIFwiXFxcXG1hdGhmcmFre1p9XCIpOyAvLyBEZWZpbmUgXFxCYmJrIHdpdGggYSBtYWNybyB0aGF0IHdvcmtzIGluIGJvdGggSFRNTCBhbmQgTWF0aE1MLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxCYmJrXCIsIFwiXFxcXEJiYntrfVwiKTsgLy8gVW5pY29kZSBtaWRkbGUgZG90XG4vLyBUaGUgS2FUZVggZm9udHMgZG8gbm90IGNvbnRhaW4gVSswMEI3LiBJbnN0ZWFkLCBcXGNkb3RwIGRpc3BsYXlzXG4vLyB0aGUgZG90IGF0IFUrMjJDNSBhbmQgZ2l2ZXMgaXQgcHVuY3Qgc3BhY2luZy5cblxuZGVmaW5lTWFjcm8oXCJcXHhCN1wiLCBcIlxcXFxjZG90cFwiKTsgLy8gXFxsbGFwIGFuZCBcXHJsYXAgcmVuZGVyIHRoZWlyIGNvbnRlbnRzIGluIHRleHQgbW9kZVxuXG5kZWZpbmVNYWNybyhcIlxcXFxsbGFwXCIsIFwiXFxcXG1hdGhsbGFwe1xcXFx0ZXh0cm17IzF9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJsYXBcIiwgXCJcXFxcbWF0aHJsYXB7XFxcXHRleHRybXsjMX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY2xhcFwiLCBcIlxcXFxtYXRoY2xhcHtcXFxcdGV4dHJteyMxfX1cIik7IC8vIFxcbm90IGlzIGRlZmluZWQgYnkgYmFzZS9mb250bWF0aC5sdHggdmlhXG4vLyBcXERlY2xhcmVNYXRoU3ltYm9se1xcbm90fXtcXG1hdGhyZWx9e3N5bWJvbHN9e1wiMzZ9XG4vLyBJdCdzIHRodXMgdHJlYXRlZCBsaWtlIGEgXFxtYXRocmVsLCBidXQgZGVmaW5lZCBieSBhIHN5bWJvbCB0aGF0IGhhcyB6ZXJvXG4vLyB3aWR0aCBidXQgZXh0ZW5kcyB0byB0aGUgcmlnaHQuICBXZSB1c2UgXFxybGFwIHRvIGdldCB0aGF0IHNwYWNpbmcuXG4vLyBGb3IgTWF0aE1MIHdlIHdyaXRlIFUrMDMzOCBoZXJlLiBidWlsZE1hdGhNTC5qcyB3aWxsIHRoZW4gZG8gdGhlIG92ZXJsYXkuXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5vdFwiLCAnXFxcXGh0bWxAbWF0aG1se1xcXFxtYXRocmVse1xcXFxtYXRocmxhcFxcXFxAbm90fX17XFxcXGNoYXJcIjMzOH0nKTsgLy8gTmVnYXRlZCBzeW1ib2xzIGZyb20gYmFzZS9mb250bWF0aC5sdHg6XG4vLyBcXGRlZlxcbmVxe1xcbm90PX0gXFxsZXRcXG5lPVxcbmVxXG4vLyBcXERlY2xhcmVSb2J1c3RDb21tYW5kXG4vLyAgIFxcbm90aW57XFxtYXRocmVse1xcbUB0aFxcbWF0aHBhbGV0dGVcXGNAbmNlbFxcaW59fVxuLy8gXFxkZWZcXGNAbmNlbCMxIzJ7XFxtQHRoXFxvb2FsaWdueyRcXGhmaWwjMVxcbWtlcm4xbXUvXFxoZmlsJFxcY3JjciQjMSMyJH19XG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcbWF0aHJlbHtcXFxcbm90PX19e1xcXFxtYXRocmVse1xcXFxjaGFyYOKJoH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmVcIiwgXCJcXFxcbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjYwXCIsIFwiXFxcXG5lcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5vdGluXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxtYXRocmVse3tcXFxcaW59XFxcXG1hdGhsbGFwey9cXFxcbXNraXAxbXV9fX1cIiArIFwie1xcXFxtYXRocmVse1xcXFxjaGFyYOKIiX19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjA5XCIsIFwiXFxcXG5vdGluXCIpOyAvLyBVbmljb2RlIHN0YWNrZWQgcmVsYXRpb25zXG5cbmRlZmluZU1hY3JvKFwiXFx1MjI1OFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7PVxcXFxrZXJuey0xZW19XFxcXHJhaXNlYm94ezAuNGVtfXskXFxcXHNjcmlwdHNpemVcXFxcZnJvd24kfX1cIiArIFwifXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjU4fX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIyNTlcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHN0YWNrcmVse1xcXFx0aW55XFxcXHdlZGdlfXs9fX17XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1OH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVBXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFx2ZWV9ez19fXtcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVBfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIyNUJcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHN0YWNrcmVse1xcXFxzY3JpcHRzaXplXFxcXHN0YXJ9ez19fVwiICsgXCJ7XFxcXG1hdGhyZWx7XFxcXGNoYXJgXFx1MjI1Qn19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMjVEXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxzdGFja3JlbHtcXFxcdGlueVxcXFxtYXRocm17ZGVmfX17PX19XCIgKyBcIntcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVEfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIyNUVcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHN0YWNrcmVse1xcXFx0aW55XFxcXG1hdGhybXttfX17PX19XCIgKyBcIntcXFxcbWF0aHJlbHtcXFxcY2hhcmBcXHUyMjVFfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIyNUZcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXHN0YWNrcmVse1xcXFx0aW55P317PX19e1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyNUZ9fVwiKTsgLy8gTWlzYyBVbmljb2RlXG5cbmRlZmluZU1hY3JvKFwiXFx1MjdDMlwiLCBcIlxcXFxwZXJwXCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMDNDXCIsIFwiXFxcXG1hdGhjbG9zZXshXFxcXG1rZXJuLTAuOG11IX1cIik7XG5kZWZpbmVNYWNybyhcIlxcdTIyMENcIiwgXCJcXFxcbm90bmlcIik7XG5kZWZpbmVNYWNybyhcIlxcdTIzMUNcIiwgXCJcXFxcdWxjb3JuZXJcIik7XG5kZWZpbmVNYWNybyhcIlxcdTIzMURcIiwgXCJcXFxcdXJjb3JuZXJcIik7XG5kZWZpbmVNYWNybyhcIlxcdTIzMUVcIiwgXCJcXFxcbGxjb3JuZXJcIik7XG5kZWZpbmVNYWNybyhcIlxcdTIzMUZcIiwgXCJcXFxcbHJjb3JuZXJcIik7XG5kZWZpbmVNYWNybyhcIlxceEE5XCIsIFwiXFxcXGNvcHlyaWdodFwiKTtcbmRlZmluZU1hY3JvKFwiXFx4QUVcIiwgXCJcXFxcdGV4dHJlZ2lzdGVyZWRcIik7XG5kZWZpbmVNYWNybyhcIlxcdUZFMEZcIiwgXCJcXFxcdGV4dHJlZ2lzdGVyZWRcIik7IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIExhVGVYXzLOtVxuLy8gXFx2ZG90c3tcXHZib3h7XFxiYXNlbGluZXNraXA0XFxwQCAgXFxsaW5lc2tpcGxpbWl0XFx6QFxuLy8gXFxrZXJuNlxccEBcXGhib3h7Ln1cXGhib3h7Ln1cXGhib3h7Ln19fVxuLy8gV2UnbGwgY2FsbCBcXHZhcnZkb3RzLCB3aGljaCBnZXRzIGEgZ2x5cGggZnJvbSBzeW1ib2xzLmpzLlxuLy8gVGhlIHplcm8td2lkdGggcnVsZSBnZXRzIHVzIGFuIGVxdWl2YWxlbnQgdG8gdGhlIHZlcnRpY2FsIDZwdCBrZXJuLlxuXG5kZWZpbmVNYWNybyhcIlxcXFx2ZG90c1wiLCBcIlxcXFxtYXRob3Jke1xcXFx2YXJ2ZG90c1xcXFxydWxlezBwdH17MTVwdH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyMkVFXCIsIFwiXFxcXHZkb3RzXCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBhbXNtYXRoLnN0eVxuLy8gaHR0cDovL21pcnJvcnMuY29uY2VydHBhc3MuY29tL3RleC1hcmNoaXZlL21hY3Jvcy9sYXRleC9yZXF1aXJlZC9hbXNtYXRoL2Ftc21hdGgucGRmXG4vLyBJdGFsaWMgR3JlZWsgY2FwaXRhbCBsZXR0ZXJzLiAgQU1TIGRlZmluZXMgdGhlc2Ugd2l0aCBcXERlY2xhcmVNYXRoU3ltYm9sLFxuLy8gYnV0IHRoZXkgYXJlIGVxdWl2YWxlbnQgdG8gXFxtYXRoaXR7XFxMZXR0ZXJ9LlxuXG5kZWZpbmVNYWNybyhcIlxcXFx2YXJHYW1tYVwiLCBcIlxcXFxtYXRoaXR7XFxcXEdhbW1hfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhckRlbHRhXCIsIFwiXFxcXG1hdGhpdHtcXFxcRGVsdGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyVGhldGFcIiwgXCJcXFxcbWF0aGl0e1xcXFxUaGV0YX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJMYW1iZGFcIiwgXCJcXFxcbWF0aGl0e1xcXFxMYW1iZGF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyWGlcIiwgXCJcXFxcbWF0aGl0e1xcXFxYaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJQaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBpfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclNpZ21hXCIsIFwiXFxcXG1hdGhpdHtcXFxcU2lnbWF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyVXBzaWxvblwiLCBcIlxcXFxtYXRoaXR7XFxcXFVwc2lsb259XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyUGhpXCIsIFwiXFxcXG1hdGhpdHtcXFxcUGhpfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHZhclBzaVwiLCBcIlxcXFxtYXRoaXR7XFxcXFBzaX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJPbWVnYVwiLCBcIlxcXFxtYXRoaXR7XFxcXE9tZWdhfVwiKTsgLy9cXG5ld2NvbW1hbmR7XFxzdWJzdGFja31bMV17XFxzdWJhcnJheXtjfSMxXFxlbmRzdWJhcnJheX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcc3Vic3RhY2tcIiwgXCJcXFxcYmVnaW57c3ViYXJyYXl9e2N9IzFcXFxcZW5ke3N1YmFycmF5fVwiKTsgLy8gXFxyZW5ld2NvbW1hbmR7XFxjb2xvbn17XFxub2JyZWFrXFxtc2tpcDJtdVxcbWF0aHB1bmN0e31cXG5vbnNjcmlwdFxuLy8gXFxta2Vybi1cXHRoaW5tdXNraXB7On1cXG1za2lwNm11cGx1czFtdVxccmVsYXh9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uXCIsIFwiXFxcXG5vYnJlYWtcXFxcbXNraXAybXVcXFxcbWF0aHB1bmN0e31cIiArIFwiXFxcXG1hdGhjaG9pY2V7XFxcXG1rZXJuLTNtdX17XFxcXG1rZXJuLTNtdX17fXt9ezp9XFxcXG1za2lwNm11XCIpOyAvLyBcXG5ld2NvbW1hbmR7XFxib3hlZH1bMV17XFxmYm94e1xcbUB0aCRcXGRpc3BsYXlzdHlsZSMxJH19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGJveGVkXCIsIFwiXFxcXGZib3h7JFxcXFxkaXNwbGF5c3R5bGV7IzF9JH1cIik7IC8vIFxcZGVmXFxpZmZ7XFxET1RTQlxcO1xcTG9uZ2xlZnRyaWdodGFycm93XFw7fVxuLy8gXFxkZWZcXGltcGxpZXN7XFxET1RTQlxcO1xcTG9uZ3JpZ2h0YXJyb3dcXDt9XG4vLyBcXGRlZlxcaW1wbGllZGJ5e1xcRE9UU0JcXDtcXExvbmdsZWZ0YXJyb3dcXDt9XG5cbmRlZmluZU1hY3JvKFwiXFxcXGlmZlwiLCBcIlxcXFxET1RTQlxcXFw7XFxcXExvbmdsZWZ0cmlnaHRhcnJvd1xcXFw7XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcaW1wbGllc1wiLCBcIlxcXFxET1RTQlxcXFw7XFxcXExvbmdyaWdodGFycm93XFxcXDtcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbXBsaWVkYnlcIiwgXCJcXFxcRE9UU0JcXFxcO1xcXFxMb25nbGVmdGFycm93XFxcXDtcIik7IC8vIEFNU01hdGgncyBhdXRvbWF0aWMgXFxkb3RzLCBiYXNlZCBvbiBcXG1kb3RzQEAgbWFjcm8uXG5cbnZhciBkb3RzQnlUb2tlbiA9IHtcbiAgJywnOiAnXFxcXGRvdHNjJyxcbiAgJ1xcXFxub3QnOiAnXFxcXGRvdHNiJyxcbiAgLy8gXFxrZXliaW5AIGNoZWNrcyBmb3IgdGhlIGZvbGxvd2luZzpcbiAgJysnOiAnXFxcXGRvdHNiJyxcbiAgJz0nOiAnXFxcXGRvdHNiJyxcbiAgJzwnOiAnXFxcXGRvdHNiJyxcbiAgJz4nOiAnXFxcXGRvdHNiJyxcbiAgJy0nOiAnXFxcXGRvdHNiJyxcbiAgJyonOiAnXFxcXGRvdHNiJyxcbiAgJzonOiAnXFxcXGRvdHNiJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcRE9UU0I6XG4gICdcXFxcRE9UU0InOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxjb3Byb2QnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWd2ZWUnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxiaWd3ZWRnZSc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ3VwbHVzJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnY2FwJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnY3VwJzogJ1xcXFxkb3RzYicsXG4gICdcXFxccHJvZCc6ICdcXFxcZG90c2InLFxuICAnXFxcXHN1bSc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ290aW1lcyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ29wbHVzJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcYmlnb2RvdCc6ICdcXFxcZG90c2InLFxuICAnXFxcXGJpZ3NxY3VwJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcQW5kJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcbG9uZ3JpZ2h0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxMb25ncmlnaHRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAnXFxcXGxvbmdsZWZ0YXJyb3cnOiAnXFxcXGRvdHNiJyxcbiAgJ1xcXFxMb25nbGVmdGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcbG9uZ2xlZnRyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcTG9uZ2xlZnRyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcbWFwc3RvJzogJ1xcXFxkb3RzYicsXG4gICdcXFxcbG9uZ21hcHN0byc6ICdcXFxcZG90c2InLFxuICAnXFxcXGhvb2tyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxcZG90ZXEnOiAnXFxcXGRvdHNiJyxcbiAgLy8gU3ltYm9scyB3aG9zZSBkZWZpbml0aW9uIHN0YXJ0cyB3aXRoIFxcbWF0aGJpbjpcbiAgJ1xcXFxtYXRoYmluJzogJ1xcXFxkb3RzYicsXG4gIC8vIFN5bWJvbHMgd2hvc2UgZGVmaW5pdGlvbiBzdGFydHMgd2l0aCBcXG1hdGhyZWw6XG4gICdcXFxcbWF0aHJlbCc6ICdcXFxcZG90c2InLFxuICAnXFxcXHJlbGJhcic6ICdcXFxcZG90c2InLFxuICAnXFxcXFJlbGJhcic6ICdcXFxcZG90c2InLFxuICAnXFxcXHhyaWdodGFycm93JzogJ1xcXFxkb3RzYicsXG4gICdcXFxceGxlZnRhcnJvdyc6ICdcXFxcZG90c2InLFxuICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxET1RTSTpcbiAgJ1xcXFxET1RTSSc6ICdcXFxcZG90c2knLFxuICAnXFxcXGludCc6ICdcXFxcZG90c2knLFxuICAnXFxcXG9pbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpaW50JzogJ1xcXFxkb3RzaScsXG4gICdcXFxcaWlpbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpaWlpbnQnOiAnXFxcXGRvdHNpJyxcbiAgJ1xcXFxpZG90c2ludCc6ICdcXFxcZG90c2knLFxuICAvLyBTeW1ib2xzIHdob3NlIGRlZmluaXRpb24gc3RhcnRzIHdpdGggXFxET1RTWDpcbiAgJ1xcXFxET1RTWCc6ICdcXFxcZG90c3gnXG59O1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c1wiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICAvLyBUT0RPOiBJZiB1c2VkIGluIHRleHQgbW9kZSwgc2hvdWxkIGV4cGFuZCB0byBcXHRleHRlbGxpcHNpcy5cbiAgLy8gSG93ZXZlciwgaW4gS2FUZVgsIFxcdGV4dGVsbGlwc2lzIGFuZCBcXGxkb3RzIGJlaGF2ZSB0aGUgc2FtZVxuICAvLyAoaW4gdGV4dCBtb2RlKSwgYW5kIGl0J3MgdW5saWtlbHkgd2UnZCBzZWUgYW55IG9mIHRoZSBtYXRoIGNvbW1hbmRzXG4gIC8vIHRoYXQgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBcXGRvdHMgd2hlbiBpbiB0ZXh0IG1vZGUuICBTbyBmaW5lIGZvciBub3dcbiAgLy8gKHVudGlsIHdlIHN1cHBvcnQgXFxpZm1tb2RlIC4uLiBcXGVsc2UgLi4uIFxcZmkpLlxuICB2YXIgdGhlZG90cyA9ICdcXFxcZG90c28nO1xuICB2YXIgbmV4dCA9IGNvbnRleHQuZXhwYW5kQWZ0ZXJGdXR1cmUoKS50ZXh0O1xuXG4gIGlmIChuZXh0IGluIGRvdHNCeVRva2VuKSB7XG4gICAgdGhlZG90cyA9IGRvdHNCeVRva2VuW25leHRdO1xuICB9IGVsc2UgaWYgKG5leHQuc3Vic3RyKDAsIDQpID09PSAnXFxcXG5vdCcpIHtcbiAgICB0aGVkb3RzID0gJ1xcXFxkb3RzYic7XG4gIH0gZWxzZSBpZiAobmV4dCBpbiBzcmNfc3ltYm9scy5tYXRoKSB7XG4gICAgaWYgKHV0aWxzLmNvbnRhaW5zKFsnYmluJywgJ3JlbCddLCBzcmNfc3ltYm9scy5tYXRoW25leHRdLmdyb3VwKSkge1xuICAgICAgdGhlZG90cyA9ICdcXFxcZG90c2InO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGVkb3RzO1xufSk7XG52YXIgc3BhY2VBZnRlckRvdHMgPSB7XG4gIC8vIFxccmlnaHRkZWxpbUAgY2hlY2tzIGZvciB0aGUgZm9sbG93aW5nOlxuICAnKSc6IHRydWUsXG4gICddJzogdHJ1ZSxcbiAgJ1xcXFxyYnJhY2snOiB0cnVlLFxuICAnXFxcXH0nOiB0cnVlLFxuICAnXFxcXHJicmFjZSc6IHRydWUsXG4gICdcXFxccmFuZ2xlJzogdHJ1ZSxcbiAgJ1xcXFxyY2VpbCc6IHRydWUsXG4gICdcXFxccmZsb29yJzogdHJ1ZSxcbiAgJ1xcXFxyZ3JvdXAnOiB0cnVlLFxuICAnXFxcXHJtb3VzdGFjaGUnOiB0cnVlLFxuICAnXFxcXHJpZ2h0JzogdHJ1ZSxcbiAgJ1xcXFxiaWdyJzogdHJ1ZSxcbiAgJ1xcXFxiaWdncic6IHRydWUsXG4gICdcXFxcQmlncic6IHRydWUsXG4gICdcXFxcQmlnZ3InOiB0cnVlLFxuICAvLyBcXGV4dHJhQCBhbHNvIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nOlxuICAnJCc6IHRydWUsXG4gIC8vIFxcZXh0cmFwQCBjaGVja3MgZm9yIHRoZSBmb2xsb3dpbmc6XG4gICc7JzogdHJ1ZSxcbiAgJy4nOiB0cnVlLFxuICAnLCc6IHRydWVcbn07XG5kZWZpbmVNYWNybyhcIlxcXFxkb3Rzb1wiLCBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgbmV4dCA9IGNvbnRleHQuZnV0dXJlKCkudGV4dDtcblxuICBpZiAobmV4dCBpbiBzcGFjZUFmdGVyRG90cykge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1xcXFwsXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXFxcXGxkb3RzXCI7XG4gIH1cbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c2NcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7IC8vIFxcZG90c2MgdXNlcyBcXGV4dHJhQCBidXQgbm90IFxcZXh0cmFwQCwgaW5zdGVhZCBzcGVjaWFsbHkgY2hlY2tpbmcgZm9yXG4gIC8vICc7JyBhbmQgJy4nLCBidXQgZG9lc24ndCBjaGVjayBmb3IgJywnLlxuXG4gIGlmIChuZXh0IGluIHNwYWNlQWZ0ZXJEb3RzICYmIG5leHQgIT09ICcsJykge1xuICAgIHJldHVybiBcIlxcXFxsZG90c1xcXFwsXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXFxcXGxkb3RzXCI7XG4gIH1cbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxcY2RvdHNcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIG5leHQgPSBjb250ZXh0LmZ1dHVyZSgpLnRleHQ7XG5cbiAgaWYgKG5leHQgaW4gc3BhY2VBZnRlckRvdHMpIHtcbiAgICByZXR1cm4gXCJcXFxcQGNkb3RzXFxcXCxcIjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJcXFxcQGNkb3RzXCI7XG4gIH1cbn0pO1xuZGVmaW5lTWFjcm8oXCJcXFxcZG90c2JcIiwgXCJcXFxcY2RvdHNcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxkb3RzbVwiLCBcIlxcXFxjZG90c1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGRvdHNpXCIsIFwiXFxcXCFcXFxcY2RvdHNcIik7IC8vIGFtc21hdGggZG9lc24ndCBhY3R1YWxseSBkZWZpbmUgXFxkb3RzeCwgYnV0IFxcZG90cyBmb2xsb3dlZCBieSBhIG1hY3JvXG4vLyBzdGFydGluZyB3aXRoIFxcRE9UU1ggaW1wbGllcyBcXGRvdHNvLCBhbmQgdGhlbiBcXGV4dHJhQCBkZXRlY3RzIHRoaXMgY2FzZVxuLy8gYW5kIGZvcmNlcyB0aGUgYWRkZWQgYFxcLGAuXG5cbmRlZmluZU1hY3JvKFwiXFxcXGRvdHN4XCIsIFwiXFxcXGxkb3RzXFxcXCxcIik7IC8vIFxcbGV0XFxET1RTSVxccmVsYXhcbi8vIFxcbGV0XFxET1RTQlxccmVsYXhcbi8vIFxcbGV0XFxET1RTWFxccmVsYXhcblxuZGVmaW5lTWFjcm8oXCJcXFxcRE9UU0lcIiwgXCJcXFxccmVsYXhcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxET1RTQlwiLCBcIlxcXFxyZWxheFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXERPVFNYXCIsIFwiXFxcXHJlbGF4XCIpOyAvLyBTcGFjaW5nLCBiYXNlZCBvbiBhbXNtYXRoLnN0eSdzIG92ZXJyaWRlIG9mIExhVGVYIGRlZmF1bHRzXG4vLyBcXERlY2xhcmVSb2J1c3RDb21tYW5ke1xcdG1zcGFjZX1bM117JVxuLy8gICBcXGlmbW1vZGVcXG1za2lwIzEjMlxcZWxzZVxca2VybiMxIzNcXGZpXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcdG1zcGFjZVwiLCBcIlxcXFxUZXh0T3JNYXRoe1xcXFxrZXJuIzEjM317XFxcXG1za2lwIzEjMn1cXFxccmVsYXhcIik7IC8vIFxccmVuZXdjb21tYW5ke1xcLH17XFx0bXNwYWNlK1xcdGhpbm11c2tpcHsuMTY2N2VtfX1cbi8vIFRPRE86IG1hdGggbW9kZSBzaG91bGQgdXNlIFxcdGhpbm11c2tpcFxuXG5kZWZpbmVNYWNybyhcIlxcXFwsXCIsIFwiXFxcXHRtc3BhY2UrezNtdX17LjE2NjdlbX1cIik7IC8vIFxcbGV0XFx0aGluc3BhY2VcXCxcblxuZGVmaW5lTWFjcm8oXCJcXFxcdGhpbnNwYWNlXCIsIFwiXFxcXCxcIik7IC8vIFxcZGVmXFw+e1xcbXNraXBcXG1lZG11c2tpcH1cbi8vIFxccmVuZXdjb21tYW5ke1xcOn17XFx0bXNwYWNlK1xcbWVkbXVza2lwey4yMjIyZW19fVxuLy8gVE9ETzogXFw+IGFuZCBtYXRoIG1vZGUgb2YgXFw6IHNob3VsZCB1c2UgXFxtZWRtdXNraXAgPSA0bXUgcGx1cyAybXUgbWludXMgNG11XG5cbmRlZmluZU1hY3JvKFwiXFxcXD5cIiwgXCJcXFxcbXNraXB7NG11fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXDpcIiwgXCJcXFxcdG1zcGFjZSt7NG11fXsuMjIyMmVtfVwiKTsgLy8gXFxsZXRcXG1lZHNwYWNlXFw6XG5cbmRlZmluZU1hY3JvKFwiXFxcXG1lZHNwYWNlXCIsIFwiXFxcXDpcIik7IC8vIFxccmVuZXdjb21tYW5ke1xcO317XFx0bXNwYWNlK1xcdGhpY2ttdXNraXB7LjI3NzdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaWNrbXVza2lwID0gNW11IHBsdXMgNW11XG5cbmRlZmluZU1hY3JvKFwiXFxcXDtcIiwgXCJcXFxcdG1zcGFjZSt7NW11fXsuMjc3N2VtfVwiKTsgLy8gXFxsZXRcXHRoaWNrc3BhY2VcXDtcblxuZGVmaW5lTWFjcm8oXCJcXFxcdGhpY2tzcGFjZVwiLCBcIlxcXFw7XCIpOyAvLyBcXHJlbmV3Y29tbWFuZHtcXCF9e1xcdG1zcGFjZS1cXHRoaW5tdXNraXB7LjE2NjdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaW5tdXNraXBcblxuZGVmaW5lTWFjcm8oXCJcXFxcIVwiLCBcIlxcXFx0bXNwYWNlLXszbXV9ey4xNjY3ZW19XCIpOyAvLyBcXGxldFxcbmVndGhpbnNwYWNlXFwhXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lZ3RoaW5zcGFjZVwiLCBcIlxcXFwhXCIpOyAvLyBcXG5ld2NvbW1hbmR7XFxuZWdtZWRzcGFjZX17XFx0bXNwYWNlLVxcbWVkbXVza2lwey4yMjIyZW19fVxuLy8gVE9ETzogbWF0aCBtb2RlIHNob3VsZCB1c2UgXFxtZWRtdXNraXBcblxuZGVmaW5lTWFjcm8oXCJcXFxcbmVnbWVkc3BhY2VcIiwgXCJcXFxcdG1zcGFjZS17NG11fXsuMjIyMmVtfVwiKTsgLy8gXFxuZXdjb21tYW5ke1xcbmVndGhpY2tzcGFjZX17XFx0bXNwYWNlLVxcdGhpY2ttdXNraXB7LjI3NzdlbX19XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXHRoaWNrbXVza2lwXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5lZ3RoaWNrc3BhY2VcIiwgXCJcXFxcdG1zcGFjZS17NW11fXsuMjc3ZW19XCIpOyAvLyBcXGRlZlxcZW5zcGFjZXtcXGtlcm4uNWVtIH1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZW5zcGFjZVwiLCBcIlxcXFxrZXJuLjVlbSBcIik7IC8vIFxcZGVmXFxlbnNraXB7XFxoc2tpcC41ZW1cXHJlbGF4fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxlbnNraXBcIiwgXCJcXFxcaHNraXAuNWVtXFxcXHJlbGF4XCIpOyAvLyBcXGRlZlxccXVhZHtcXGhza2lwMWVtXFxyZWxheH1cblxuZGVmaW5lTWFjcm8oXCJcXFxccXVhZFwiLCBcIlxcXFxoc2tpcDFlbVxcXFxyZWxheFwiKTsgLy8gXFxkZWZcXHFxdWFke1xcaHNraXAyZW1cXHJlbGF4fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxxcXVhZFwiLCBcIlxcXFxoc2tpcDJlbVxcXFxyZWxheFwiKTsgLy8gXFx0YWdAaW5AZGlzcGxheSBmb3JtIG9mIFxcdGFnXG5cbmRlZmluZU1hY3JvKFwiXFxcXHRhZ1wiLCBcIlxcXFxAaWZzdGFyXFxcXHRhZ0BsaXRlcmFsXFxcXHRhZ0BwYXJlblwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRhZ0BwYXJlblwiLCBcIlxcXFx0YWdAbGl0ZXJhbHsoeyMxfSl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGFnQGxpdGVyYWxcIiwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQubWFjcm9zLmdldChcIlxcXFxkZkB0YWdcIikpIHtcbiAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJNdWx0aXBsZSBcXFxcdGFnXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXFxcXGdkZWZcXFxcZGZAdGFne1xcXFx0ZXh0eyMxfX1cIjtcbn0pOyAvLyBcXHJlbmV3Y29tbWFuZHtcXGJtb2R9e1xcbm9uc2NyaXB0XFxtc2tpcC1cXG1lZG11c2tpcFxcbWtlcm41bXVcXG1hdGhiaW5cbi8vICAge1xcb3BlcmF0b3JAZm9udCBtb2R9XFxwZW5hbHR5OTAwXG4vLyAgIFxcbWtlcm41bXVcXG5vbnNjcmlwdFxcbXNraXAtXFxtZWRtdXNraXB9XG4vLyBcXG5ld2NvbW1hbmR7XFxwb2R9WzFde1xcYWxsb3dicmVha1xuLy8gICBcXGlmQGRpc3BsYXlcXG1rZXJuMThtdVxcZWxzZVxcbWtlcm44bXVcXGZpKCMxKX1cbi8vIFxccmVuZXdjb21tYW5ke1xccG1vZH1bMV17XFxwb2R7e1xcb3BlcmF0b3JAZm9udCBtb2R9XFxta2VybjZtdSMxfX1cbi8vIFxcbmV3Y29tbWFuZHtcXG1vZH1bMV17XFxhbGxvd2JyZWFrXFxpZkBkaXNwbGF5XFxta2VybjE4bXVcbi8vICAgXFxlbHNlXFxta2VybjEybXVcXGZpe1xcb3BlcmF0b3JAZm9udCBtb2R9XFwsXFwsIzF9XG4vLyBUT0RPOiBtYXRoIG1vZGUgc2hvdWxkIHVzZSBcXG1lZG11c2tpcCA9IDRtdSBwbHVzIDJtdSBtaW51cyA0bXVcblxuZGVmaW5lTWFjcm8oXCJcXFxcYm1vZFwiLCBcIlxcXFxtYXRoY2hvaWNle1xcXFxtc2tpcDFtdX17XFxcXG1za2lwMW11fXtcXFxcbXNraXA1bXV9e1xcXFxtc2tpcDVtdX1cIiArIFwiXFxcXG1hdGhiaW57XFxcXHJtIG1vZH1cIiArIFwiXFxcXG1hdGhjaG9pY2V7XFxcXG1za2lwMW11fXtcXFxcbXNraXAxbXV9e1xcXFxtc2tpcDVtdX17XFxcXG1za2lwNW11fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBvZFwiLCBcIlxcXFxhbGxvd2JyZWFrXCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxta2VybjE4bXV9e1xcXFxta2VybjhtdX17XFxcXG1rZXJuOG11fXtcXFxcbWtlcm44bXV9KCMxKVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBtb2RcIiwgXCJcXFxccG9ke3tcXFxccm0gbW9kfVxcXFxta2VybjZtdSMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1vZFwiLCBcIlxcXFxhbGxvd2JyZWFrXCIgKyBcIlxcXFxtYXRoY2hvaWNle1xcXFxta2VybjE4bXV9e1xcXFxta2VybjEybXV9e1xcXFxta2VybjEybXV9e1xcXFxta2VybjEybXV9XCIgKyBcIntcXFxccm0gbW9kfVxcXFwsXFxcXCwjMVwiKTsgLy8gXFxwbWIgICAgLS0gICBBIHNpbXVsYXRpb24gb2YgYm9sZC5cbi8vIFRoZSB2ZXJzaW9uIGluIGFtYnN5LnN0eSB3b3JrcyBieSB0eXBlc2V0dGluZyB0aHJlZSBjb3BpZXMgb2YgdGhlIGFyZ3VtZW50XG4vLyB3aXRoIHNtYWxsIG9mZnNldHMuIFdlIHVzZSB0d28gY29waWVzLiBXZSBvbWl0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgYmVjYXVzZVxuLy8gb2YgcmVuZGVyaW5nIHByb2JsZW1zIHRoYXQgbWFrZVZMaXN0IGVuY291bnRlcnMgaW4gU2FmYXJpLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxwbWJcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxAYmlucmVseyMxfXtcXFxcbWF0aHJsYXB7IzF9XFxcXGtlcm4wLjVweCMxfX1cIiArIFwie1xcXFxtYXRoYmZ7IzF9fVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTGFUZVggc291cmNlMmVcbi8vIFxcXFwgZGVmYXVsdHMgdG8gXFxuZXdsaW5lLCBidXQgY2hhbmdlcyB0byBcXGNyIHdpdGhpbiBhcnJheSBlbnZpcm9ubWVudFxuXG5kZWZpbmVNYWNybyhcIlxcXFxcXFxcXCIsIFwiXFxcXG5ld2xpbmVcIik7IC8vIFxcZGVmXFxUZVh7VFxca2Vybi0uMTY2N2VtXFxsb3dlci41ZXhcXGhib3h7RX1cXGtlcm4tLjEyNWVtWFxcQH1cbi8vIFRPRE86IERvZXNuJ3Qgbm9ybWFsbHkgd29yayBpbiBtYXRoIG1vZGUgYmVjYXVzZSBcXEAgZmFpbHMuICBLYVRlWCBkb2Vzbid0XG4vLyBzdXBwb3J0IFxcQCB5ZXQsIHNvIHRoYXQncyBvbWl0dGVkLCBhbmQgd2UgYWRkIFxcdGV4dCBzbyB0aGF0IHRoZSByZXN1bHRcbi8vIGRvZXNuJ3QgbG9vayBmdW5ueSBpbiBtYXRoIG1vZGUuXG5cbmRlZmluZU1hY3JvKFwiXFxcXFRlWFwiLCBcIlxcXFx0ZXh0cm17XFxcXGh0bWxAbWF0aG1se1wiICsgXCJUXFxcXGtlcm4tLjE2NjdlbVxcXFxyYWlzZWJveHstLjVleH17RX1cXFxca2Vybi0uMTI1ZW1YXCIgKyBcIn17VGVYfX1cIik7IC8vIFxcRGVjbGFyZVJvYnVzdENvbW1hbmR7XFxMYVRlWH17TFxca2Vybi0uMzZlbSVcbi8vICAgICAgICAge1xcc2JveFxcekAgVCVcbi8vICAgICAgICAgIFxcdmJveCB0b1xcaHRcXHpAe1xcaGJveHtcXGNoZWNrQG1hdGhmb250c1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxmb250c2l6ZVxcc2ZAc2l6ZVxcekBcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbWF0aEBmb250c2ZhbHNlXFxzZWxlY3Rmb250XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBfSVcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIFxcdnNzfSVcbi8vICAgICAgICAgfSVcbi8vICAgICAgICAgXFxrZXJuLS4xNWVtJVxuLy8gICAgICAgICBcXFRlWH1cbi8vIFRoaXMgY29kZSBhbGlnbnMgdGhlIHRvcCBvZiB0aGUgQSB3aXRoIHRoZSBUIChmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBUZVgnc1xuLy8gYm94ZXMsIHRob3VnaCB2aXN1YWxseSB0aGUgQSBhcHBlYXJzIHRvIGV4dGVuZCBhYm92ZSBzbGlnaHRseSkuXG4vLyBXZSBjb21wdXRlIHRoZSBjb3JyZXNwb25kaW5nIFxccmFpc2Vib3ggd2hlbiBBIGlzIHJlbmRlcmVkIGluIFxcbm9ybWFsc2l6ZVxuLy8gXFxzY3JpcHRzdHlsZSwgd2hpY2ggaGFzIGEgc2NhbGUgZmFjdG9yIG9mIDAuNyAoc2VlIE9wdGlvbnMuanMpLlxuXG52YXIgbGF0ZXhSYWlzZUEgPSBmb250TWV0cmljc0RhdGFbJ01haW4tUmVndWxhciddW1wiVFwiLmNoYXJDb2RlQXQoMCldWzFdIC0gMC43ICogZm9udE1ldHJpY3NEYXRhWydNYWluLVJlZ3VsYXInXVtcIkFcIi5jaGFyQ29kZUF0KDApXVsxXSArIFwiZW1cIjtcbmRlZmluZU1hY3JvKFwiXFxcXExhVGVYXCIsIFwiXFxcXHRleHRybXtcXFxcaHRtbEBtYXRobWx7XCIgKyAoXCJMXFxcXGtlcm4tLjM2ZW1cXFxccmFpc2Vib3h7XCIgKyBsYXRleFJhaXNlQSArIFwifXtcXFxcc2NyaXB0c3R5bGUgQX1cIikgKyBcIlxcXFxrZXJuLS4xNWVtXFxcXFRlWH17TGFUZVh9fVwiKTsgLy8gTmV3IEthVGVYIGxvZ28gYmFzZWQgb24gdHdlYWtpbmcgTGFUZVggbG9nb1xuXG5kZWZpbmVNYWNybyhcIlxcXFxLYVRlWFwiLCBcIlxcXFx0ZXh0cm17XFxcXGh0bWxAbWF0aG1se1wiICsgKFwiS1xcXFxrZXJuLS4xN2VtXFxcXHJhaXNlYm94e1wiICsgbGF0ZXhSYWlzZUEgKyBcIn17XFxcXHNjcmlwdHN0eWxlIEF9XCIpICsgXCJcXFxca2Vybi0uMTVlbVxcXFxUZVh9e0thVGVYfX1cIik7IC8vIFxcRGVjbGFyZVJvYnVzdENvbW1hbmRcXGhzcGFjZXtcXEBpZnN0YXJcXEBoc3BhY2VyXFxAaHNwYWNlfVxuLy8gXFxkZWZcXEBoc3BhY2UjMXtcXGhza2lwICAjMVxccmVsYXh9XG4vLyBcXGRlZlxcQGhzcGFjZXIjMXtcXHZydWxlIFxcQHdpZHRoXFx6QFxcbm9icmVha1xuLy8gICAgICAgICAgICAgICAgIFxcaHNraXAgIzFcXGhza2lwIFxcekBza2lwfVxuXG5kZWZpbmVNYWNybyhcIlxcXFxoc3BhY2VcIiwgXCJcXFxcQGlmc3RhclxcXFxAaHNwYWNlclxcXFxAaHNwYWNlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcQGhzcGFjZVwiLCBcIlxcXFxoc2tpcCAjMVxcXFxyZWxheFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEBoc3BhY2VyXCIsIFwiXFxcXHJ1bGV7MHB0fXswcHR9XFxcXGhza2lwICMxXFxcXHJlbGF4XCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBtYXRodG9vbHMuc3R5XG4vL1xccHJvdmlkZWNvbW1hbmRcXG9yZGluYXJ5Y29sb257On1cblxuZGVmaW5lTWFjcm8oXCJcXFxcb3JkaW5hcnljb2xvblwiLCBcIjpcIik7IC8vXFxkZWZcXHZjZW50Y29sb257XFxtYXRocmVse1xcbWF0aG9wXFxvcmRpbmFyeWNvbG9ufX1cbi8vVE9ETyhlZGVtYWluZSk6IE5vdCB5ZXQgY2VudGVyZWQuIEZpeCB2aWEgXFxyYWlzZWJveCBvciAjNzI2XG5cbmRlZmluZU1hY3JvKFwiXFxcXHZjZW50Y29sb25cIiwgXCJcXFxcbWF0aHJlbHtcXFxcbWF0aG9wXFxcXG9yZGluYXJ5Y29sb259XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcZGJsY29sb257XFx2Y2VudGNvbG9uXFxtYXRocmVse1xcbWtlcm4tLjltdX1cXHZjZW50Y29sb259XG5cbmRlZmluZU1hY3JvKFwiXFxcXGRibGNvbG9uXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0uOW11fVxcXFx2Y2VudGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIzN319XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcY29sb25lcXF7XFx2Y2VudGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9PX1cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVse1xcXFx2Y2VudGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fT19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjU0fX1cIik7IC8vIOKJlFxuLy8gXFxwcm92aWRlY29tbWFuZCpcXENvbG9uZXFxe1xcZGJsY29sb25cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX09fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fT19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiM2R9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uZXF7XFx2Y2VudGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxtYXRocmVsey19fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcbWF0aHJlbHstfX19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjNhXFxcXGNoYXJcXFwiMjIxMn19XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25lcXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxtYXRocmVsey19fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcZGJsY29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXG1hdGhyZWx7LX19fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiMjIxMn19XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcZXFxY29sb257PVxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcdmNlbnRjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcZXFxY29sb25cIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRocmVsez1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHZjZW50Y29sb259fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjU1fX1cIik7IC8vIOKJlVxuLy8gXFxwcm92aWRlY29tbWFuZCpcXEVxcWNvbG9uez1cXG1hdGhyZWx7XFxta2Vybi0xLjJtdX1cXGRibGNvbG9ufVxuXG5kZWZpbmVNYWNybyhcIlxcXFxFcXFjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7PVxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb259fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIzZFxcXFxjaGFyXFxcIjIyMzd9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGVxY29sb257XFxtYXRocmVsey19XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFx2Y2VudGNvbG9ufVxuXG5kZWZpbmVNYWNybyhcIlxcXFxlcWNvbG9uXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcbWF0aHJlbHstfVxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcdmNlbnRjb2xvbn19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMzl9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXEVxY29sb257XFxtYXRocmVsey19XFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxkYmxjb2xvbn1cblxuZGVmaW5lTWFjcm8oXCJcXFxcRXFjb2xvblwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXG1hdGhyZWx7LX1cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGRibGNvbG9ufX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiMjIxMlxcXFxjaGFyXFxcIjIyMzd9fVwiKTsgLy8gXFxwcm92aWRlY29tbWFuZCpcXGNvbG9uYXBwcm94e1xcdmNlbnRjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcYXBwcm94fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmFwcHJveFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXHZjZW50Y29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXGFwcHJveH19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjNhXFxcXGNoYXJcXFwiMjI0OH19XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcQ29sb25hcHByb3h7XFxkYmxjb2xvblxcbWF0aHJlbHtcXG1rZXJuLTEuMm11fVxcYXBwcm94fVxuXG5kZWZpbmVNYWNybyhcIlxcXFxDb2xvbmFwcHJveFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcIiArIFwiXFxcXG1hdGhyZWx7XFxcXGRibGNvbG9uXFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxhcHByb3h9fVwiICsgXCJ7XFxcXG1hdGhvcHtcXFxcY2hhclxcXCIyMjM3XFxcXGNoYXJcXFwiMjI0OH19XCIpOyAvLyBcXHByb3ZpZGVjb21tYW5kKlxcY29sb25zaW17XFx2Y2VudGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxzaW19XG5cbmRlZmluZU1hY3JvKFwiXFxcXGNvbG9uc2ltXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcdmNlbnRjb2xvblxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcc2ltfX1cIiArIFwie1xcXFxtYXRob3B7XFxcXGNoYXJcXFwiM2FcXFxcY2hhclxcXCIyMjNjfX1cIik7IC8vIFxccHJvdmlkZWNvbW1hbmQqXFxDb2xvbnNpbXtcXGRibGNvbG9uXFxtYXRocmVse1xcbWtlcm4tMS4ybXV9XFxzaW19XG5cbmRlZmluZU1hY3JvKFwiXFxcXENvbG9uc2ltXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aHJlbHtcXFxcZGJsY29sb25cXFxcbWF0aHJlbHtcXFxcbWtlcm4tMS4ybXV9XFxcXHNpbX19XCIgKyBcIntcXFxcbWF0aG9we1xcXFxjaGFyXFxcIjIyMzdcXFxcY2hhclxcXCIyMjNjfX1cIik7IC8vIFNvbWUgVW5pY29kZSBjaGFyYWN0ZXJzIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG1hY3JvcyB0byBtYXRodG9vbHMgZnVuY3Rpb25zLlxuXG5kZWZpbmVNYWNybyhcIlxcdTIyMzdcIiwgXCJcXFxcZGJsY29sb25cIik7IC8vIDo6XG5cbmRlZmluZU1hY3JvKFwiXFx1MjIzOVwiLCBcIlxcXFxlcWNvbG9uXCIpOyAvLyAtOlxuXG5kZWZpbmVNYWNybyhcIlxcdTIyNTRcIiwgXCJcXFxcY29sb25lcXFcIik7IC8vIDo9XG5cbmRlZmluZU1hY3JvKFwiXFx1MjI1NVwiLCBcIlxcXFxlcXFjb2xvblwiKTsgLy8gPTpcblxuZGVmaW5lTWFjcm8oXCJcXHUyQTc0XCIsIFwiXFxcXENvbG9uZXFxXCIpOyAvLyA6Oj1cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIGNvbG9uZXF1YWxzLnN0eVxuLy8gQWx0ZXJuYXRlIG5hbWVzIGZvciBtYXRodG9vbHMncyBtYWNyb3M6XG5cbmRlZmluZU1hY3JvKFwiXFxcXHJhdGlvXCIsIFwiXFxcXHZjZW50Y29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmNvbG9uXCIsIFwiXFxcXGRibGNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25lcXVhbHNcIiwgXCJcXFxcY29sb25lcXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjb2xvbmNvbG9uZXF1YWxzXCIsIFwiXFxcXENvbG9uZXFxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZXF1YWxzY29sb25cIiwgXCJcXFxcZXFxY29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlcXVhbHNjb2xvbmNvbG9uXCIsIFwiXFxcXEVxcWNvbG9uXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25taW51c1wiLCBcIlxcXFxjb2xvbmVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbm1pbnVzXCIsIFwiXFxcXENvbG9uZXFcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW51c2NvbG9uXCIsIFwiXFxcXGVxY29sb25cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW51c2NvbG9uY29sb25cIiwgXCJcXFxcRXFjb2xvblwiKTsgLy8gXFxjb2xvbmFwcHJveCBuYW1lIGlzIHNhbWUgaW4gbWF0aHRvb2xzIGFuZCBjb2xvbmVxdWFscy5cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbmFwcHJveFwiLCBcIlxcXFxDb2xvbmFwcHJveFwiKTsgLy8gXFxjb2xvbnNpbSBuYW1lIGlzIHNhbWUgaW4gbWF0aHRvb2xzIGFuZCBjb2xvbmVxdWFscy5cblxuZGVmaW5lTWFjcm8oXCJcXFxcY29sb25jb2xvbnNpbVwiLCBcIlxcXFxDb2xvbnNpbVwiKTsgLy8gQWRkaXRpb25hbCBtYWNyb3MsIGltcGxlbWVudGVkIGJ5IGFuYWxvZ3kgd2l0aCBtYXRodG9vbHMgZGVmaW5pdGlvbnM6XG5cbmRlZmluZU1hY3JvKFwiXFxcXHNpbWNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXHNpbVxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcdmNlbnRjb2xvbn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxzaW1jb2xvbmNvbG9uXCIsIFwiXFxcXG1hdGhyZWx7XFxcXHNpbVxcXFxtYXRocmVse1xcXFxta2Vybi0xLjJtdX1cXFxcZGJsY29sb259XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYXBwcm94Y29sb25cIiwgXCJcXFxcbWF0aHJlbHtcXFxcYXBwcm94XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFx2Y2VudGNvbG9ufVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGFwcHJveGNvbG9uY29sb25cIiwgXCJcXFxcbWF0aHJlbHtcXFxcYXBwcm94XFxcXG1hdGhyZWx7XFxcXG1rZXJuLTEuMm11fVxcXFxkYmxjb2xvbn1cIik7IC8vIFByZXNlbnQgaW4gbmV3dHhtYXRoLCBweGZvbnRzIGFuZCB0eGZvbnRzXG5cbmRlZmluZU1hY3JvKFwiXFxcXG5vdG5pXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxub3RcXFxcbml9e1xcXFxtYXRocmVse1xcXFxjaGFyYFxcdTIyMEN9fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxpbXN1cFwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2xpbVxcXFwsc3VwfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxpbWluZlwiLCBcIlxcXFxET1RTQlxcXFxvcGVyYXRvcm5hbWUqe2xpbVxcXFwsaW5mfVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTWF0aE1MIGFsdGVybmF0ZXMgZm9yIEthVGVYIGdseXBocyBpbiB0aGUgVW5pY29kZSBwcml2YXRlIGFyZWFcblxuZGVmaW5lTWFjcm8oXCJcXFxcZ3ZlcnRuZXFxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAZ3ZlcnRuZXFxfXtcXHUyMjY5fVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGx2ZXJ0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQGx2ZXJ0bmVxcX17XFx1MjI2OH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuZ2VxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5nZXFxfXtcXHUyMjcxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5nZXFzbGFudFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5nZXFzbGFudH17XFx1MjI3MX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxubGVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5sZXFxfXtcXHUyMjcwfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG5sZXFzbGFudFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5sZXFzbGFudH17XFx1MjI3MH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuc2hvcnRtaWRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEBuc2hvcnRtaWR9e+KIpH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxuc2hvcnRwYXJhbGxlbFwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5zaG9ydHBhcmFsbGVsfXviiKZ9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnN1YnNldGVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5zdWJzZXRlcXF9e1xcdTIyODh9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbnN1cHNldGVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQG5zdXBzZXRlcXF9e1xcdTIyODl9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vic2V0bmVxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAdmFyc3Vic2V0bmVxfXviiop9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdmFyc3Vic2V0bmVxcVwiLCBcIlxcXFxodG1sQG1hdGhtbHtcXFxcQHZhcnN1YnNldG5lcXF9e+Kri31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJzdXBzZXRuZXFcIiwgXCJcXFxcaHRtbEBtYXRobWx7XFxcXEB2YXJzdXBzZXRuZXF9e+KKi31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx2YXJzdXBzZXRuZXFxXCIsIFwiXFxcXGh0bWxAbWF0aG1se1xcXFxAdmFyc3Vwc2V0bmVxcX174quMfVwiKTsgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gc3RtYXJ5cmQgYW5kIHNlbWFudGljXG4vLyBUaGUgc3RtYXJ5cmQgYW5kIHNlbWFudGljIHBhY2thZ2VzIHJlbmRlciB0aGUgbmV4dCBmb3VyIGl0ZW1zIGJ5IGNhbGxpbmcgYVxuLy8gZ2x5cGguIFRob3NlIGdseXBocyBkbyBub3QgZXhpc3QgaW4gdGhlIEthVGVYIGZvbnRzLiBIZW5jZSB0aGUgbWFjcm9zLlxuXG5kZWZpbmVNYWNybyhcIlxcXFxsbGJyYWNrZXRcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRob3BlbntbXFxcXG1rZXJuLTMuMm11W319XCIgKyBcIntcXFxcbWF0aG9wZW57XFxcXGNoYXJgXFx1MjdFNn19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccnJicmFja2V0XCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aGNsb3Nle11cXFxcbWtlcm4tMy4ybXVdfX1cIiArIFwie1xcXFxtYXRoY2xvc2V7XFxcXGNoYXJgXFx1MjdFN319XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyN0U2XCIsIFwiXFxcXGxsYnJhY2tldFwiKTsgLy8gYmxhY2tib2FyZCBib2xkIFtcblxuZGVmaW5lTWFjcm8oXCJcXHUyN0U3XCIsIFwiXFxcXHJyYnJhY2tldFwiKTsgLy8gYmxhY2tib2FyZCBib2xkIF1cblxuZGVmaW5lTWFjcm8oXCJcXFxcbEJyYWNlXCIsIFwiXFxcXGh0bWxAbWF0aG1se1wiICsgXCJcXFxcbWF0aG9wZW57XFxcXHtcXFxcbWtlcm4tMy4ybXVbfX1cIiArIFwie1xcXFxtYXRob3BlbntcXFxcY2hhcmBcXHUyOTgzfX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyQnJhY2VcIiwgXCJcXFxcaHRtbEBtYXRobWx7XCIgKyBcIlxcXFxtYXRoY2xvc2V7XVxcXFxta2Vybi0zLjJtdVxcXFx9fX1cIiArIFwie1xcXFxtYXRoY2xvc2V7XFxcXGNoYXJgXFx1Mjk4NH19XCIpO1xuZGVmaW5lTWFjcm8oXCJcXHUyOTgzXCIsIFwiXFxcXGxCcmFjZVwiKTsgLy8gYmxhY2tib2FyZCBib2xkIHtcblxuZGVmaW5lTWFjcm8oXCJcXHUyOTg0XCIsIFwiXFxcXHJCcmFjZVwiKTsgLy8gYmxhY2tib2FyZCBib2xkIH1cbi8vIFRPRE86IENyZWF0ZSB2YXJpYWJsZSBzaXplZCB2ZXJzaW9ucyBvZiB0aGUgbGFzdCB0d28gaXRlbXMuIEkgYmVsaWV2ZSB0aGF0XG4vLyB3aWxsIHJlcXVpcmUgbmV3IGZvbnQgZ2x5cGhzLlxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gdGV4dmMuc3R5XG4vLyBUaGUgdGV4dmMgcGFja2FnZSBjb250YWlucyBtYWNyb3MgYXZhaWxhYmxlIGluIG1lZGlhd2lraSBwYWdlcy5cbi8vIFdlIG9taXQgdGhlIGZ1bmN0aW9ucyBkZXByZWNhdGVkIGF0XG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWxwOkRpc3BsYXlpbmdfYV9mb3JtdWxhI0RlcHJlY2F0ZWRfc3ludGF4XG4vLyBXZSBhbHNvIG9taXQgdGV4dmMncyBcXE8sIHdoaWNoIGNvbmZsaWN0cyB3aXRoIFxcdGV4dHtcXE99XG5cbmRlZmluZU1hY3JvKFwiXFxcXGRhcnJcIiwgXCJcXFxcZG93bmFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZEFyclwiLCBcIlxcXFxEb3duYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxEYXJyXCIsIFwiXFxcXERvd25hcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGxhbmdcIiwgXCJcXFxcbGFuZ2xlXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmFuZ1wiLCBcIlxcXFxyYW5nbGVcIik7XG5kZWZpbmVNYWNybyhcIlxcXFx1YXJyXCIsIFwiXFxcXHVwYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFx1QXJyXCIsIFwiXFxcXFVwYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxVYXJyXCIsIFwiXFxcXFVwYXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxOXCIsIFwiXFxcXG1hdGhiYntOfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFJcIiwgXCJcXFxcbWF0aGJie1J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcWlwiLCBcIlxcXFxtYXRoYmJ7Wn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxhbGVmXCIsIFwiXFxcXGFsZXBoXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYWxlZnN5bVwiLCBcIlxcXFxhbGVwaFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEFscGhhXCIsIFwiXFxcXG1hdGhybXtBfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEJldGFcIiwgXCJcXFxcbWF0aHJte0J9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYnVsbFwiLCBcIlxcXFxidWxsZXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxDaGlcIiwgXCJcXFxcbWF0aHJte1h9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcY2x1YnNcIiwgXCJcXFxcY2x1YnN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxjbnVtc1wiLCBcIlxcXFxtYXRoYmJ7Q31cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxDb21wbGV4XCIsIFwiXFxcXG1hdGhiYntDfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXERhZ2dlclwiLCBcIlxcXFxkZGFnZ2VyXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZGlhbW9uZHNcIiwgXCJcXFxcZGlhbW9uZHN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxlbXB0eVwiLCBcIlxcXFxlbXB0eXNldFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXEVwc2lsb25cIiwgXCJcXFxcbWF0aHJte0V9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcRXRhXCIsIFwiXFxcXG1hdGhybXtIfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGV4aXN0XCIsIFwiXFxcXGV4aXN0c1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGhhcnJcIiwgXCJcXFxcbGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxoQXJyXCIsIFwiXFxcXExlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcSGFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGhlYXJ0c1wiLCBcIlxcXFxoZWFydHN1aXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpbWFnZVwiLCBcIlxcXFxJbVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGluZmluXCIsIFwiXFxcXGluZnR5XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcSW90YVwiLCBcIlxcXFxtYXRocm17SX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxpc2luXCIsIFwiXFxcXGluXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcS2FwcGFcIiwgXCJcXFxcbWF0aHJte0t9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbGFyclwiLCBcIlxcXFxsZWZ0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsQXJyXCIsIFwiXFxcXExlZnRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXExhcnJcIiwgXCJcXFxcTGVmdGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbHJhcnJcIiwgXCJcXFxcbGVmdHJpZ2h0YXJyb3dcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxsckFyclwiLCBcIlxcXFxMZWZ0cmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXExyYXJyXCIsIFwiXFxcXExlZnRyaWdodGFycm93XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcTXVcIiwgXCJcXFxcbWF0aHJte019XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbmF0bnVtc1wiLCBcIlxcXFxtYXRoYmJ7Tn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxOdVwiLCBcIlxcXFxtYXRocm17Tn1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxPbWljcm9uXCIsIFwiXFxcXG1hdGhybXtPfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBsdXNtblwiLCBcIlxcXFxwbVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJhcnJcIiwgXCJcXFxccmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJBcnJcIiwgXCJcXFxcUmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFJhcnJcIiwgXCJcXFxcUmlnaHRhcnJvd1wiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlYWxcIiwgXCJcXFxcUmVcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWFsc1wiLCBcIlxcXFxtYXRoYmJ7Un1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSZWFsc1wiLCBcIlxcXFxtYXRoYmJ7Un1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxSaG9cIiwgXCJcXFxcbWF0aHJte1B9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2RvdFwiLCBcIlxcXFxjZG90XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc2VjdFwiLCBcIlxcXFxTXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc3BhZGVzXCIsIFwiXFxcXHNwYWRlc3VpdFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHN1YlwiLCBcIlxcXFxzdWJzZXRcIik7XG5kZWZpbmVNYWNybyhcIlxcXFxzdWJlXCIsIFwiXFxcXHN1YnNldGVxXCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcc3VwZVwiLCBcIlxcXFxzdXBzZXRlcVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFRhdVwiLCBcIlxcXFxtYXRocm17VH1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0aGV0YXN5bVwiLCBcIlxcXFx2YXJ0aGV0YVwiKTsgLy8gVE9ETzogZGVmaW5lTWFjcm8oXCJcXFxcdmFyY29wcGFcIiwgXCJcXFxcXFxtYm94e1xcXFxjb3BwYX1cIik7XG5cbmRlZmluZU1hY3JvKFwiXFxcXHdlaWVycFwiLCBcIlxcXFx3cFwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXFpldGFcIiwgXCJcXFxcbWF0aHJte1p9XCIpOyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBzdGF0bWF0aC5zdHlcbi8vIGh0dHBzOi8vY3Rhbi5tYXRoLmlsbGlub2lzLmVkdS9tYWNyb3MvbGF0ZXgvY29udHJpYi9zdGF0bWF0aC9zdGF0bWF0aC5wZGZcblxuZGVmaW5lTWFjcm8oXCJcXFxcYXJnbWluXCIsIFwiXFxcXERPVFNCXFxcXG9wZXJhdG9ybmFtZSp7YXJnXFxcXCxtaW59XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYXJnbWF4XCIsIFwiXFxcXERPVFNCXFxcXG9wZXJhdG9ybmFtZSp7YXJnXFxcXCxtYXh9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccGxpbVwiLCBcIlxcXFxET1RTQlxcXFxtYXRob3B7XFxcXG9wZXJhdG9ybmFtZXtwbGltfX1cXFxcbGltaXRzXCIpOyAvLyBDdXN0b20gS2hhbiBBY2FkZW15IGNvbG9ycywgc2hvdWxkIGJlIG1vdmVkIHRvIGFuIG9wdGlvbmFsIHBhY2thZ2VcblxuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM2NDk1ZWR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG9yYW5nZVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZmE1MDB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHBpbmtcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmYwMGFmfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZGYwMDMwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmVlblwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyOGFlN2J9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlcIiwgXCJcXFxcdGV4dGNvbG9ye2dyYXl9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM5ZDM4YmR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2NjZmFmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZUJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjODBmNmZmfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxibHVlQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyM2M2Q5ZWF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGJsdWVEXCIsIFwiXFxcXHRleHRjb2xvcnsjIzExYWNjZH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcYmx1ZUVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMGM3Zjk5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM5NGZmZjV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRlYWxCXCIsIFwiXFxcXHRleHRjb2xvcnsjIzI2ZWRkNX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcdGVhbENcIiwgXCJcXFxcdGV4dGNvbG9yeyMjMDFkMWMxfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFx0ZWFsRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMwMWE5OTV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHRlYWxFXCIsIFwiXFxcXHRleHRjb2xvcnsjIzIwODE3MH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5BXCIsIFwiXFxcXHRleHRjb2xvcnsjI2I2ZmZiMH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5CXCIsIFwiXFxcXHRleHRjb2xvcnsjIzhhZjI4MX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5DXCIsIFwiXFxcXHRleHRjb2xvcnsjIzc0Y2Y3MH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5EXCIsIFwiXFxcXHRleHRjb2xvcnsjIzFmYWI1NH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JlZW5FXCIsIFwiXFxcXHRleHRjb2xvcnsjIzBkOTIzZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZEFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmZkMGE5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxnb2xkQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZmJiNzF9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdvbGRDXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmOWMzOX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ29sZERcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTA3ZDEwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxnb2xkRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNhNzVhMDV9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlZEFcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmNhOWE5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRCXCIsIFwiXFxcXHRleHRjb2xvcnsjI2ZmODQ4Mn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccmVkQ1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmOTY4NWR9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHJlZERcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZTg0ZDM5fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxyZWRFXCIsIFwiXFxcXHRleHRjb2xvcnsjI2JjMjYxMn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWFyb29uQVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNmZmJkZTB9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZmY5MmM2fXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtYXJvb25DXCIsIFwiXFxcXHRleHRjb2xvcnsjI2VkNWZhNn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWFyb29uRFwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNjYTMzN2N9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1hcm9vbkVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjOWUwMzRlfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2RkZDdmZn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlQlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyNjNmI5ZmN9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXHB1cnBsZUNcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYWE4N2ZmfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxwdXJwbGVEXCIsIFwiXFxcXHRleHRjb2xvcnsjIzc4NTRhYn17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxccHVycGxlRVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM1NDNiNzh9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXG1pbnRBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2Y1ZjllOH17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcbWludEJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZWRmMmRmfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxtaW50Q1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNlMGU1Y2N9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlBXCIsIFwiXFxcXHRleHRjb2xvcnsjI2Y2ZjdmN317IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUJcIiwgXCJcXFxcdGV4dGNvbG9yeyMjZjBmMWYyfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5Q1wiLCBcIlxcXFx0ZXh0Y29sb3J7IyNlM2U1ZTZ9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlEXCIsIFwiXFxcXHRleHRjb2xvcnsjI2Q2ZDhkYX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUVcIiwgXCJcXFxcdGV4dGNvbG9yeyMjYmFiZWMyfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5RlwiLCBcIlxcXFx0ZXh0Y29sb3J7IyM4ODhkOTN9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGdyYXlHXCIsIFwiXFxcXHRleHRjb2xvcnsjIzYyNjU2OX17IzF9XCIpO1xuZGVmaW5lTWFjcm8oXCJcXFxcZ3JheUhcIiwgXCJcXFxcdGV4dGNvbG9yeyMjM2IzZTQwfXsjMX1cIik7XG5kZWZpbmVNYWNybyhcIlxcXFxncmF5SVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMyMTI0MmN9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGthQmx1ZVwiLCBcIlxcXFx0ZXh0Y29sb3J7IyMzMTQ0NTN9eyMxfVwiKTtcbmRlZmluZU1hY3JvKFwiXFxcXGthR3JlZW5cIiwgXCJcXFxcdGV4dGNvbG9yeyMjNzFCMzA3fXsjMX1cIik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9NYWNyb0V4cGFuZGVyLmpzXG4vKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUg4oCcZ3VsbGV04oCdIHdoZXJlIG1hY3JvcyBhcmUgZXhwYW5kZWRcbiAqIHVudGlsIG9ubHkgbm9uLW1hY3JvIHRva2VucyByZW1haW4uXG4gKi9cblxuXG5cblxuXG5cblxuLy8gTGlzdCBvZiBjb21tYW5kcyB0aGF0IGFjdCBsaWtlIG1hY3JvcyBidXQgYXJlbid0IGRlZmluZWQgYXMgYSBtYWNybyxcbi8vIGZ1bmN0aW9uLCBvciBzeW1ib2wuICBVc2VkIGluIGBpc0RlZmluZWRgLlxudmFyIGltcGxpY2l0Q29tbWFuZHMgPSB7XG4gIFwiXFxcXHJlbGF4XCI6IHRydWUsXG4gIC8vIE1hY3JvRXhwYW5kZXIuanNcbiAgXCJeXCI6IHRydWUsXG4gIC8vIFBhcnNlci5qc1xuICBcIl9cIjogdHJ1ZSxcbiAgLy8gUGFyc2VyLmpzXG4gIFwiXFxcXGxpbWl0c1wiOiB0cnVlLFxuICAvLyBQYXJzZXIuanNcbiAgXCJcXFxcbm9saW1pdHNcIjogdHJ1ZSAvLyBQYXJzZXIuanNcblxufTtcblxudmFyIE1hY3JvRXhwYW5kZXJfTWFjcm9FeHBhbmRlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hY3JvRXhwYW5kZXIoaW5wdXQsIHNldHRpbmdzLCBtb2RlKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHZvaWQgMDtcbiAgICB0aGlzLmV4cGFuc2lvbkNvdW50ID0gdm9pZCAwO1xuICAgIHRoaXMubGV4ZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWNyb3MgPSB2b2lkIDA7XG4gICAgdGhpcy5zdGFjayA9IHZvaWQgMDtcbiAgICB0aGlzLm1vZGUgPSB2b2lkIDA7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIHRoaXMuZXhwYW5zaW9uQ291bnQgPSAwO1xuICAgIHRoaXMuZmVlZChpbnB1dCk7IC8vIE1ha2UgbmV3IGdsb2JhbCBuYW1lc3BhY2VcblxuICAgIHRoaXMubWFjcm9zID0gbmV3IE5hbWVzcGFjZV9OYW1lc3BhY2UobWFjcm9zLCBzZXR0aW5ncy5tYWNyb3MpO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgdGhpcy5zdGFjayA9IFtdOyAvLyBjb250YWlucyB0b2tlbnMgaW4gUkVWRVJTRSBvcmRlclxuICB9XG4gIC8qKlxuICAgKiBGZWVkIGEgbmV3IGlucHV0IHN0cmluZyB0byB0aGUgc2FtZSBNYWNyb0V4cGFuZGVyXG4gICAqICh3aXRoIGV4aXN0aW5nIG1hY3JvcyBldGMuKS5cbiAgICovXG5cblxuICB2YXIgX3Byb3RvID0gTWFjcm9FeHBhbmRlci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmZlZWQgPSBmdW5jdGlvbiBmZWVkKGlucHV0KSB7XG4gICAgdGhpcy5sZXhlciA9IG5ldyBMZXhlcl9MZXhlcihpbnB1dCwgdGhpcy5zZXR0aW5ncyk7XG4gIH1cbiAgLyoqXG4gICAqIFN3aXRjaGVzIGJldHdlZW4gXCJ0ZXh0XCIgYW5kIFwibWF0aFwiIG1vZGVzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5zd2l0Y2hNb2RlID0gZnVuY3Rpb24gc3dpdGNoTW9kZShuZXdNb2RlKSB7XG4gICAgdGhpcy5tb2RlID0gbmV3TW9kZTtcbiAgfVxuICAvKipcbiAgICogU3RhcnQgYSBuZXcgZ3JvdXAgbmVzdGluZyB3aXRoaW4gYWxsIG5hbWVzcGFjZXMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmJlZ2luR3JvdXAgPSBmdW5jdGlvbiBiZWdpbkdyb3VwKCkge1xuICAgIHRoaXMubWFjcm9zLmJlZ2luR3JvdXAoKTtcbiAgfVxuICAvKipcbiAgICogRW5kIGN1cnJlbnQgZ3JvdXAgbmVzdGluZyB3aXRoaW4gYWxsIG5hbWVzcGFjZXMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmVuZEdyb3VwID0gZnVuY3Rpb24gZW5kR3JvdXAoKSB7XG4gICAgdGhpcy5tYWNyb3MuZW5kR3JvdXAoKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdG9wbW9zdCB0b2tlbiBvbiB0aGUgc3RhY2ssIHdpdGhvdXQgZXhwYW5kaW5nIGl0LlxuICAgKiBTaW1pbGFyIGluIGJlaGF2aW9yIHRvIFRlWCdzIGBcXGZ1dHVyZWxldGAuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZ1dHVyZSA9IGZ1bmN0aW9uIGZ1dHVyZSgpIHtcbiAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHVzaFRva2VuKHRoaXMubGV4ZXIubGV4KCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhbmQgcmV0dXJuIHRoZSBuZXh0IHVuZXhwYW5kZWQgdG9rZW4uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBvcFRva2VuID0gZnVuY3Rpb24gcG9wVG9rZW4oKSB7XG4gICAgdGhpcy5mdXR1cmUoKTsgLy8gZW5zdXJlIG5vbi1lbXB0eSBzdGFja1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cbiAgLyoqXG4gICAqIEFkZCBhIGdpdmVuIHRva2VuIHRvIHRoZSB0b2tlbiBzdGFjay4gIEluIHBhcnRpY3VsYXIsIHRoaXMgZ2V0IGJlIHVzZWRcbiAgICogdG8gcHV0IGJhY2sgYSB0b2tlbiByZXR1cm5lZCBmcm9tIG9uZSBvZiB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucHVzaFRva2VuID0gZnVuY3Rpb24gcHVzaFRva2VuKHRva2VuKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRva2VuKTtcbiAgfVxuICAvKipcbiAgICogQXBwZW5kIGFuIGFycmF5IG9mIHRva2VucyB0byB0aGUgdG9rZW4gc3RhY2suXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnB1c2hUb2tlbnMgPSBmdW5jdGlvbiBwdXNoVG9rZW5zKHRva2Vucykge1xuICAgIHZhciBfdGhpcyRzdGFjaztcblxuICAgIChfdGhpcyRzdGFjayA9IHRoaXMuc3RhY2spLnB1c2guYXBwbHkoX3RoaXMkc3RhY2ssIHRva2Vucyk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnN1bWUgYWxsIGZvbGxvd2luZyBzcGFjZSB0b2tlbnMsIHdpdGhvdXQgZXhwYW5zaW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jb25zdW1lU3BhY2VzID0gZnVuY3Rpb24gY29uc3VtZVNwYWNlcygpIHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICB2YXIgdG9rZW4gPSB0aGlzLmZ1dHVyZSgpO1xuXG4gICAgICBpZiAodG9rZW4udGV4dCA9PT0gXCIgXCIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29uc3VtZSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBhcmd1bWVudHMgZnJvbSB0aGUgdG9rZW4gc3RyZWFtLFxuICAgKiBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgYXJyYXkgb2YgYXJndW1lbnRzLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jb25zdW1lQXJncyA9IGZ1bmN0aW9uIGNvbnN1bWVBcmdzKG51bUFyZ3MpIHtcbiAgICB2YXIgYXJncyA9IFtdOyAvLyBvYnRhaW4gYXJndW1lbnRzLCBlaXRoZXIgc2luZ2xlIHRva2VuIG9yIGJhbGFuY2VkIHvigKZ9IGdyb3VwXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkge1xuICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7IC8vIGlnbm9yZSBzcGFjZXMgYmVmb3JlIGVhY2ggYXJndW1lbnRcblxuICAgICAgdmFyIHN0YXJ0T2ZBcmcgPSB0aGlzLnBvcFRva2VuKCk7XG5cbiAgICAgIGlmIChzdGFydE9mQXJnLnRleHQgPT09IFwie1wiKSB7XG4gICAgICAgIHZhciBhcmcgPSBbXTtcbiAgICAgICAgdmFyIGRlcHRoID0gMTtcblxuICAgICAgICB3aGlsZSAoZGVwdGggIT09IDApIHtcbiAgICAgICAgICB2YXIgdG9rID0gdGhpcy5wb3BUb2tlbigpO1xuICAgICAgICAgIGFyZy5wdXNoKHRvayk7XG5cbiAgICAgICAgICBpZiAodG9rLnRleHQgPT09IFwie1wiKSB7XG4gICAgICAgICAgICArK2RlcHRoO1xuICAgICAgICAgIH0gZWxzZSBpZiAodG9rLnRleHQgPT09IFwifVwiKSB7XG4gICAgICAgICAgICAtLWRlcHRoO1xuICAgICAgICAgIH0gZWxzZSBpZiAodG9rLnRleHQgPT09IFwiRU9GXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkVuZCBvZiBpbnB1dCBpbiBtYWNybyBhcmd1bWVudFwiLCBzdGFydE9mQXJnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcmcucG9wKCk7IC8vIHJlbW92ZSBsYXN0IH1cblxuICAgICAgICBhcmcucmV2ZXJzZSgpOyAvLyBsaWtlIGFib3ZlLCB0byBmaXQgaW4gd2l0aCBzdGFjayBvcmRlclxuXG4gICAgICAgIGFyZ3NbaV0gPSBhcmc7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0T2ZBcmcudGV4dCA9PT0gXCJFT0ZcIikge1xuICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFbmQgb2YgaW5wdXQgZXhwZWN0aW5nIG1hY3JvIGFyZ3VtZW50XCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJnc1tpXSA9IFtzdGFydE9mQXJnXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXJncztcbiAgfVxuICAvKipcbiAgICogRXhwYW5kIHRoZSBuZXh0IHRva2VuIG9ubHkgb25jZSBpZiBwb3NzaWJsZS5cbiAgICpcbiAgICogSWYgdGhlIHRva2VuIGlzIGV4cGFuZGVkLCB0aGUgcmVzdWx0aW5nIHRva2VucyB3aWxsIGJlIHB1c2hlZCBvbnRvXG4gICAqIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyIGFuZCB3aWxsIGJlIHJldHVybmVkIGFzIGFuIGFycmF5LFxuICAgKiBhbHNvIGluIHJldmVyc2Ugb3JkZXIuXG4gICAqXG4gICAqIElmIG5vdCwgdGhlIG5leHQgdG9rZW4gd2lsbCBiZSByZXR1cm5lZCB3aXRob3V0IHJlbW92aW5nIGl0XG4gICAqIGZyb20gdGhlIHN0YWNrLiAgVGhpcyBjYXNlIGNhbiBiZSBkZXRlY3RlZCBieSBhIGBUb2tlbmAgcmV0dXJuIHZhbHVlXG4gICAqIGluc3RlYWQgb2YgYW4gYEFycmF5YCByZXR1cm4gdmFsdWUuXG4gICAqXG4gICAqIEluIGVpdGhlciBjYXNlLCB0aGUgbmV4dCB0b2tlbiB3aWxsIGJlIG9uIHRoZSB0b3Agb2YgdGhlIHN0YWNrLFxuICAgKiBvciB0aGUgc3RhY2sgd2lsbCBiZSBlbXB0eS5cbiAgICpcbiAgICogVXNlZCB0byBpbXBsZW1lbnQgYGV4cGFuZEFmdGVyRnV0dXJlYCBhbmQgYGV4cGFuZE5leHRUb2tlbmAuXG4gICAqXG4gICAqIEF0IHRoZSBtb21lbnQsIG1hY3JvIGV4cGFuc2lvbiBkb2Vzbid0IGhhbmRsZSBkZWxpbWl0ZWQgbWFjcm9zLFxuICAgKiBpLmUuIHRoaW5ncyBsaWtlIHRob3NlIGRlZmluZWQgYnkgXFxkZWZcXGZvbyMxXFxlbmR74oCmfS5cbiAgICogU2VlIHRoZSBUZVggYm9vayBwYWdlIDIwMmZmLiBmb3IgZGV0YWlscyBvbiBob3cgdGhvc2Ugc2hvdWxkIGJlaGF2ZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kT25jZSA9IGZ1bmN0aW9uIGV4cGFuZE9uY2UoKSB7XG4gICAgdmFyIHRvcFRva2VuID0gdGhpcy5wb3BUb2tlbigpO1xuICAgIHZhciBuYW1lID0gdG9wVG9rZW4udGV4dDtcblxuICAgIHZhciBleHBhbnNpb24gPSB0aGlzLl9nZXRFeHBhbnNpb24obmFtZSk7XG5cbiAgICBpZiAoZXhwYW5zaW9uID09IG51bGwpIHtcbiAgICAgIC8vIG1haW5seSBjaGVja2luZyBmb3IgdW5kZWZpbmVkIGhlcmVcbiAgICAgIC8vIEZ1bGx5IGV4cGFuZGVkXG4gICAgICB0aGlzLnB1c2hUb2tlbih0b3BUb2tlbik7XG4gICAgICByZXR1cm4gdG9wVG9rZW47XG4gICAgfVxuXG4gICAgdGhpcy5leHBhbnNpb25Db3VudCsrO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5zaW9uQ291bnQgPiB0aGlzLnNldHRpbmdzLm1heEV4cGFuZCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVG9vIG1hbnkgZXhwYW5zaW9uczogaW5maW5pdGUgbG9vcCBvciBcIiArIFwibmVlZCB0byBpbmNyZWFzZSBtYXhFeHBhbmQgc2V0dGluZ1wiKTtcbiAgICB9XG5cbiAgICB2YXIgdG9rZW5zID0gZXhwYW5zaW9uLnRva2VucztcblxuICAgIGlmIChleHBhbnNpb24ubnVtQXJncykge1xuICAgICAgdmFyIGFyZ3MgPSB0aGlzLmNvbnN1bWVBcmdzKGV4cGFuc2lvbi5udW1BcmdzKTsgLy8gcGFzdGUgYXJndW1lbnRzIGluIHBsYWNlIG9mIHRoZSBwbGFjZWhvbGRlcnNcblxuICAgICAgdG9rZW5zID0gdG9rZW5zLnNsaWNlKCk7IC8vIG1ha2UgYSBzaGFsbG93IGNvcHlcblxuICAgICAgZm9yICh2YXIgaSA9IHRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgdG9rID0gdG9rZW5zW2ldO1xuXG4gICAgICAgIGlmICh0b2sudGV4dCA9PT0gXCIjXCIpIHtcbiAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiSW5jb21wbGV0ZSBwbGFjZWhvbGRlciBhdCBlbmQgb2YgbWFjcm8gYm9keVwiLCB0b2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRvayA9IHRva2Vuc1stLWldOyAvLyBuZXh0IHRva2VuIG9uIHN0YWNrXG5cbiAgICAgICAgICBpZiAodG9rLnRleHQgPT09IFwiI1wiKSB7XG4gICAgICAgICAgICAvLyAjIyDihpIgI1xuICAgICAgICAgICAgdG9rZW5zLnNwbGljZShpICsgMSwgMSk7IC8vIGRyb3AgZmlyc3QgI1xuICAgICAgICAgIH0gZWxzZSBpZiAoL15bMS05XSQvLnRlc3QodG9rLnRleHQpKSB7XG4gICAgICAgICAgICB2YXIgX3Rva2VucztcblxuICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgcGxhY2Vob2xkZXIgd2l0aCB0aGUgaW5kaWNhdGVkIGFyZ3VtZW50XG4gICAgICAgICAgICAoX3Rva2VucyA9IHRva2Vucykuc3BsaWNlLmFwcGx5KF90b2tlbnMsIFtpLCAyXS5jb25jYXQoYXJnc1srdG9rLnRleHQgLSAxXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJOb3QgYSB2YWxpZCBhcmd1bWVudCBudW1iZXJcIiwgdG9rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIENvbmNhdGVuYXRlIGV4cGFuc2lvbiBvbnRvIHRvcCBvZiBzdGFjay5cblxuXG4gICAgdGhpcy5wdXNoVG9rZW5zKHRva2Vucyk7XG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuICAvKipcbiAgICogRXhwYW5kIHRoZSBuZXh0IHRva2VuIG9ubHkgb25jZSAoaWYgcG9zc2libGUpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmdcbiAgICogdG9wIHRva2VuIG9uIHRoZSBzdGFjayAod2l0aG91dCByZW1vdmluZyBhbnl0aGluZyBmcm9tIHRoZSBzdGFjaykuXG4gICAqIFNpbWlsYXIgaW4gYmVoYXZpb3IgdG8gVGVYJ3MgYFxcZXhwYW5kYWZ0ZXJcXGZ1dHVyZWxldGAuXG4gICAqIEVxdWl2YWxlbnQgdG8gZXhwYW5kT25jZSgpIGZvbGxvd2VkIGJ5IGZ1dHVyZSgpLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBhbmRBZnRlckZ1dHVyZSA9IGZ1bmN0aW9uIGV4cGFuZEFmdGVyRnV0dXJlKCkge1xuICAgIHRoaXMuZXhwYW5kT25jZSgpO1xuICAgIHJldHVybiB0aGlzLmZ1dHVyZSgpO1xuICB9XG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBleHBhbmQgZmlyc3QgdG9rZW4sIHRoZW4gcmV0dXJuIGZpcnN0IG5vbi1leHBhbmRhYmxlIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBhbmROZXh0VG9rZW4gPSBmdW5jdGlvbiBleHBhbmROZXh0VG9rZW4oKSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIGV4cGFuZGVkID0gdGhpcy5leHBhbmRPbmNlKCk7IC8vIGV4cGFuZE9uY2UgcmV0dXJucyBUb2tlbiBpZiBhbmQgb25seSBpZiBpdCdzIGZ1bGx5IGV4cGFuZGVkLlxuXG4gICAgICBpZiAoZXhwYW5kZWQgaW5zdGFuY2VvZiBUb2tlbl9Ub2tlbikge1xuICAgICAgICAvLyBcXHJlbGF4IHN0b3BzIHRoZSBleHBhbnNpb24sIGJ1dCBzaG91bGRuJ3QgZ2V0IHJldHVybmVkIChhXG4gICAgICAgIC8vIG51bGwgcmV0dXJuIHZhbHVlIGNvdWxkbid0IGdldCBpbXBsZW1lbnRlZCBhcyBhIGZ1bmN0aW9uKS5cbiAgICAgICAgaWYgKGV4cGFuZGVkLnRleHQgPT09IFwiXFxcXHJlbGF4XCIpIHtcbiAgICAgICAgICB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnBvcCgpOyAvLyA9PT0gZXhwYW5kZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gRmxvdyB1bmFibGUgdG8gZmlndXJlIG91dCB0aGF0IHRoaXMgcGF0aHdheSBpcyBpbXBvc3NpYmxlLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy80ODA4XG5cblxuICAgIHRocm93IG5ldyBFcnJvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVucmVhY2hhYmxlXG4gIH1cbiAgLyoqXG4gICAqIEZ1bGx5IGV4cGFuZCB0aGUgZ2l2ZW4gbWFjcm8gbmFtZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgbGlzdCBvZlxuICAgKiB0b2tlbnMsIG9yIHJldHVybiBgdW5kZWZpbmVkYCBpZiBubyBzdWNoIG1hY3JvIGlzIGRlZmluZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGFuZE1hY3JvID0gZnVuY3Rpb24gZXhwYW5kTWFjcm8obmFtZSkge1xuICAgIGlmICghdGhpcy5tYWNyb3MuZ2V0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICB2YXIgb2xkU3RhY2tMZW5ndGggPSB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgICB0aGlzLnB1c2hUb2tlbihuZXcgVG9rZW5fVG9rZW4obmFtZSkpO1xuXG4gICAgd2hpbGUgKHRoaXMuc3RhY2subGVuZ3RoID4gb2xkU3RhY2tMZW5ndGgpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IHRoaXMuZXhwYW5kT25jZSgpOyAvLyBleHBhbmRPbmNlIHJldHVybnMgVG9rZW4gaWYgYW5kIG9ubHkgaWYgaXQncyBmdWxseSBleHBhbmRlZC5cblxuICAgICAgaWYgKGV4cGFuZGVkIGluc3RhbmNlb2YgVG9rZW5fVG9rZW4pIHtcbiAgICAgICAgb3V0cHV0LnB1c2godGhpcy5zdGFjay5wb3AoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuICAvKipcbiAgICogRnVsbHkgZXhwYW5kIHRoZSBnaXZlbiBtYWNybyBuYW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIHN0cmluZyxcbiAgICogb3IgcmV0dXJuIGB1bmRlZmluZWRgIGlmIG5vIHN1Y2ggbWFjcm8gaXMgZGVmaW5lZC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwYW5kTWFjcm9Bc1RleHQgPSBmdW5jdGlvbiBleHBhbmRNYWNyb0FzVGV4dChuYW1lKSB7XG4gICAgdmFyIHRva2VucyA9IHRoaXMuZXhwYW5kTWFjcm8obmFtZSk7XG5cbiAgICBpZiAodG9rZW5zKSB7XG4gICAgICByZXR1cm4gdG9rZW5zLm1hcChmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnRleHQ7XG4gICAgICB9KS5qb2luKFwiXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdG9rZW5zO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXhwYW5kZWQgbWFjcm8gYXMgYSByZXZlcnNlZCBhcnJheSBvZiB0b2tlbnMgYW5kIGEgbWFjcm9cbiAgICogYXJndW1lbnQgY291bnQuICBPciByZXR1cm5zIGBudWxsYCBpZiBubyBzdWNoIG1hY3JvLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5fZ2V0RXhwYW5zaW9uID0gZnVuY3Rpb24gX2dldEV4cGFuc2lvbihuYW1lKSB7XG4gICAgdmFyIGRlZmluaXRpb24gPSB0aGlzLm1hY3Jvcy5nZXQobmFtZSk7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PSBudWxsKSB7XG4gICAgICAvLyBtYWlubHkgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBoZXJlXG4gICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICB2YXIgZXhwYW5zaW9uID0gdHlwZW9mIGRlZmluaXRpb24gPT09IFwiZnVuY3Rpb25cIiA/IGRlZmluaXRpb24odGhpcykgOiBkZWZpbml0aW9uO1xuXG4gICAgaWYgKHR5cGVvZiBleHBhbnNpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHZhciBudW1BcmdzID0gMDtcblxuICAgICAgaWYgKGV4cGFuc2lvbi5pbmRleE9mKFwiI1wiKSAhPT0gLTEpIHtcbiAgICAgICAgdmFyIHN0cmlwcGVkID0gZXhwYW5zaW9uLnJlcGxhY2UoLyMjL2csIFwiXCIpO1xuXG4gICAgICAgIHdoaWxlIChzdHJpcHBlZC5pbmRleE9mKFwiI1wiICsgKG51bUFyZ3MgKyAxKSkgIT09IC0xKSB7XG4gICAgICAgICAgKytudW1BcmdzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBib2R5TGV4ZXIgPSBuZXcgTGV4ZXJfTGV4ZXIoZXhwYW5zaW9uLCB0aGlzLnNldHRpbmdzKTtcbiAgICAgIHZhciB0b2tlbnMgPSBbXTtcbiAgICAgIHZhciB0b2sgPSBib2R5TGV4ZXIubGV4KCk7XG5cbiAgICAgIHdoaWxlICh0b2sudGV4dCAhPT0gXCJFT0ZcIikge1xuICAgICAgICB0b2tlbnMucHVzaCh0b2spO1xuICAgICAgICB0b2sgPSBib2R5TGV4ZXIubGV4KCk7XG4gICAgICB9XG5cbiAgICAgIHRva2Vucy5yZXZlcnNlKCk7IC8vIHRvIGZpdCBpbiB3aXRoIHN0YWNrIHVzaW5nIHB1c2ggYW5kIHBvcFxuXG4gICAgICB2YXIgZXhwYW5kZWQgPSB7XG4gICAgICAgIHRva2VuczogdG9rZW5zLFxuICAgICAgICBudW1BcmdzOiBudW1BcmdzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV4cGFuZGVkO1xuICAgIH1cblxuICAgIHJldHVybiBleHBhbnNpb247XG4gIH1cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGEgY29tbWFuZCBpcyBjdXJyZW50bHkgXCJkZWZpbmVkXCIgKGhhcyBzb21lXG4gICAqIGZ1bmN0aW9uYWxpdHkpLCBtZWFuaW5nIHRoYXQgaXQncyBhIG1hY3JvIChpbiB0aGUgY3VycmVudCBncm91cCksXG4gICAqIGEgZnVuY3Rpb24sIGEgc3ltYm9sLCBvciBvbmUgb2YgdGhlIHNwZWNpYWwgY29tbWFuZHMgbGlzdGVkIGluXG4gICAqIGBpbXBsaWNpdENvbW1hbmRzYC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaXNEZWZpbmVkID0gZnVuY3Rpb24gaXNEZWZpbmVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5tYWNyb3MuaGFzKG5hbWUpIHx8IHNyY19mdW5jdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkgfHwgc3JjX3N5bWJvbHMubWF0aC5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCBzcmNfc3ltYm9scy50ZXh0Lmhhc093blByb3BlcnR5KG5hbWUpIHx8IGltcGxpY2l0Q29tbWFuZHMuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gIH07XG5cbiAgcmV0dXJuIE1hY3JvRXhwYW5kZXI7XG59KCk7XG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pY29kZUFjY2VudHMuanNcbi8vIE1hcHBpbmcgb2YgVW5pY29kZSBhY2NlbnQgY2hhcmFjdGVycyB0byB0aGVpciBMYVRlWCBlcXVpdmFsZW50IGluIHRleHQgYW5kXG4vLyBtYXRoIG1vZGUgKHdoZW4gdGhleSBleGlzdCkuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1bmljb2RlQWNjZW50cyA9ICh7XG4gIFwiXFx1MDMwMVwiOiB7XG4gICAgdGV4dDogXCJcXFxcJ1wiLFxuICAgIG1hdGg6ICdcXFxcYWN1dGUnXG4gIH0sXG4gIFwiXFx1MDMwMFwiOiB7XG4gICAgdGV4dDogJ1xcXFxgJyxcbiAgICBtYXRoOiAnXFxcXGdyYXZlJ1xuICB9LFxuICBcIlxcdTAzMDhcIjoge1xuICAgIHRleHQ6ICdcXFxcXCInLFxuICAgIG1hdGg6ICdcXFxcZGRvdCdcbiAgfSxcbiAgXCJcXHUwMzAzXCI6IHtcbiAgICB0ZXh0OiAnXFxcXH4nLFxuICAgIG1hdGg6ICdcXFxcdGlsZGUnXG4gIH0sXG4gIFwiXFx1MDMwNFwiOiB7XG4gICAgdGV4dDogJ1xcXFw9JyxcbiAgICBtYXRoOiAnXFxcXGJhcidcbiAgfSxcbiAgXCJcXHUwMzA2XCI6IHtcbiAgICB0ZXh0OiBcIlxcXFx1XCIsXG4gICAgbWF0aDogJ1xcXFxicmV2ZSdcbiAgfSxcbiAgXCJcXHUwMzBDXCI6IHtcbiAgICB0ZXh0OiAnXFxcXHYnLFxuICAgIG1hdGg6ICdcXFxcY2hlY2snXG4gIH0sXG4gIFwiXFx1MDMwMlwiOiB7XG4gICAgdGV4dDogJ1xcXFxeJyxcbiAgICBtYXRoOiAnXFxcXGhhdCdcbiAgfSxcbiAgXCJcXHUwMzA3XCI6IHtcbiAgICB0ZXh0OiAnXFxcXC4nLFxuICAgIG1hdGg6ICdcXFxcZG90J1xuICB9LFxuICBcIlxcdTAzMEFcIjoge1xuICAgIHRleHQ6ICdcXFxccicsXG4gICAgbWF0aDogJ1xcXFxtYXRocmluZydcbiAgfSxcbiAgXCJcXHUwMzBCXCI6IHtcbiAgICB0ZXh0OiAnXFxcXEgnXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdW5pY29kZVN5bWJvbHMuanNcbi8vIFRoaXMgZmlsZSBpcyBHRU5FUkFURUQgYnkgdW5pY29kZU1ha2UuanMuIERPIE5PVCBNT0RJRlkuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1bmljb2RlU3ltYm9scyA9ICh7XG4gIFwiXFx4RTFcIjogXCJhXFx1MDMwMVwiLFxuICAvLyDDoSA9IFxcJ3thfVxuICBcIlxceEUwXCI6IFwiYVxcdTAzMDBcIixcbiAgLy8gw6AgPSBcXGB7YX1cbiAgXCJcXHhFNFwiOiBcImFcXHUwMzA4XCIsXG4gIC8vIMOkID0gXFxcInthfVxuICBcIlxcdTAxREZcIjogXCJhXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx58gPSBcXFwiXFw9e2F9XG4gIFwiXFx4RTNcIjogXCJhXFx1MDMwM1wiLFxuICAvLyDDoyA9IFxcfnthfVxuICBcIlxcdTAxMDFcIjogXCJhXFx1MDMwNFwiLFxuICAvLyDEgSA9IFxcPXthfVxuICBcIlxcdTAxMDNcIjogXCJhXFx1MDMwNlwiLFxuICAvLyDEgyA9IFxcdXthfVxuICBcIlxcdTFFQUZcIjogXCJhXFx1MDMwNlxcdTAzMDFcIixcbiAgLy8g4bqvID0gXFx1XFwne2F9XG4gIFwiXFx1MUVCMVwiOiBcImFcXHUwMzA2XFx1MDMwMFwiLFxuICAvLyDhurEgPSBcXHVcXGB7YX1cbiAgXCJcXHUxRUI1XCI6IFwiYVxcdTAzMDZcXHUwMzAzXCIsXG4gIC8vIOG6tSA9IFxcdVxcfnthfVxuICBcIlxcdTAxQ0VcIjogXCJhXFx1MDMwQ1wiLFxuICAvLyDHjiA9IFxcdnthfVxuICBcIlxceEUyXCI6IFwiYVxcdTAzMDJcIixcbiAgLy8gw6IgPSBcXF57YX1cbiAgXCJcXHUxRUE1XCI6IFwiYVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6pSA9IFxcXlxcJ3thfVxuICBcIlxcdTFFQTdcIjogXCJhXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4bqnID0gXFxeXFxge2F9XG4gIFwiXFx1MUVBQlwiOiBcImFcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhuqsgPSBcXF5cXH57YX1cbiAgXCJcXHUwMjI3XCI6IFwiYVxcdTAzMDdcIixcbiAgLy8gyKcgPSBcXC57YX1cbiAgXCJcXHUwMUUxXCI6IFwiYVxcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMehID0gXFwuXFw9e2F9XG4gIFwiXFx4RTVcIjogXCJhXFx1MDMwQVwiLFxuICAvLyDDpSA9IFxccnthfVxuICBcIlxcdTAxRkJcIjogXCJhXFx1MDMwQVxcdTAzMDFcIixcbiAgLy8gx7sgPSBcXHJcXCd7YX1cbiAgXCJcXHUxRTAzXCI6IFwiYlxcdTAzMDdcIixcbiAgLy8g4biDID0gXFwue2J9XG4gIFwiXFx1MDEwN1wiOiBcImNcXHUwMzAxXCIsXG4gIC8vIMSHID0gXFwne2N9XG4gIFwiXFx1MDEwRFwiOiBcImNcXHUwMzBDXCIsXG4gIC8vIMSNID0gXFx2e2N9XG4gIFwiXFx1MDEwOVwiOiBcImNcXHUwMzAyXCIsXG4gIC8vIMSJID0gXFxee2N9XG4gIFwiXFx1MDEwQlwiOiBcImNcXHUwMzA3XCIsXG4gIC8vIMSLID0gXFwue2N9XG4gIFwiXFx1MDEwRlwiOiBcImRcXHUwMzBDXCIsXG4gIC8vIMSPID0gXFx2e2R9XG4gIFwiXFx1MUUwQlwiOiBcImRcXHUwMzA3XCIsXG4gIC8vIOG4iyA9IFxcLntkfVxuICBcIlxceEU5XCI6IFwiZVxcdTAzMDFcIixcbiAgLy8gw6kgPSBcXCd7ZX1cbiAgXCJcXHhFOFwiOiBcImVcXHUwMzAwXCIsXG4gIC8vIMOoID0gXFxge2V9XG4gIFwiXFx4RUJcIjogXCJlXFx1MDMwOFwiLFxuICAvLyDDqyA9IFxcXCJ7ZX1cbiAgXCJcXHUxRUJEXCI6IFwiZVxcdTAzMDNcIixcbiAgLy8g4bq9ID0gXFx+e2V9XG4gIFwiXFx1MDExM1wiOiBcImVcXHUwMzA0XCIsXG4gIC8vIMSTID0gXFw9e2V9XG4gIFwiXFx1MUUxN1wiOiBcImVcXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuJcgPSBcXD1cXCd7ZX1cbiAgXCJcXHUxRTE1XCI6IFwiZVxcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG4lSA9IFxcPVxcYHtlfVxuICBcIlxcdTAxMTVcIjogXCJlXFx1MDMwNlwiLFxuICAvLyDElSA9IFxcdXtlfVxuICBcIlxcdTAxMUJcIjogXCJlXFx1MDMwQ1wiLFxuICAvLyDEmyA9IFxcdntlfVxuICBcIlxceEVBXCI6IFwiZVxcdTAzMDJcIixcbiAgLy8gw6ogPSBcXF57ZX1cbiAgXCJcXHUxRUJGXCI6IFwiZVxcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG6vyA9IFxcXlxcJ3tlfVxuICBcIlxcdTFFQzFcIjogXCJlXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buBID0gXFxeXFxge2V9XG4gIFwiXFx1MUVDNVwiOiBcImVcXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu4UgPSBcXF5cXH57ZX1cbiAgXCJcXHUwMTE3XCI6IFwiZVxcdTAzMDdcIixcbiAgLy8gxJcgPSBcXC57ZX1cbiAgXCJcXHUxRTFGXCI6IFwiZlxcdTAzMDdcIixcbiAgLy8g4bifID0gXFwue2Z9XG4gIFwiXFx1MDFGNVwiOiBcImdcXHUwMzAxXCIsXG4gIC8vIMe1ID0gXFwne2d9XG4gIFwiXFx1MUUyMVwiOiBcImdcXHUwMzA0XCIsXG4gIC8vIOG4oSA9IFxcPXtnfVxuICBcIlxcdTAxMUZcIjogXCJnXFx1MDMwNlwiLFxuICAvLyDEnyA9IFxcdXtnfVxuICBcIlxcdTAxRTdcIjogXCJnXFx1MDMwQ1wiLFxuICAvLyDHpyA9IFxcdntnfVxuICBcIlxcdTAxMURcIjogXCJnXFx1MDMwMlwiLFxuICAvLyDEnSA9IFxcXntnfVxuICBcIlxcdTAxMjFcIjogXCJnXFx1MDMwN1wiLFxuICAvLyDEoSA9IFxcLntnfVxuICBcIlxcdTFFMjdcIjogXCJoXFx1MDMwOFwiLFxuICAvLyDhuKcgPSBcXFwie2h9XG4gIFwiXFx1MDIxRlwiOiBcImhcXHUwMzBDXCIsXG4gIC8vIMifID0gXFx2e2h9XG4gIFwiXFx1MDEyNVwiOiBcImhcXHUwMzAyXCIsXG4gIC8vIMSlID0gXFxee2h9XG4gIFwiXFx1MUUyM1wiOiBcImhcXHUwMzA3XCIsXG4gIC8vIOG4oyA9IFxcLntofVxuICBcIlxceEVEXCI6IFwiaVxcdTAzMDFcIixcbiAgLy8gw60gPSBcXCd7aX1cbiAgXCJcXHhFQ1wiOiBcImlcXHUwMzAwXCIsXG4gIC8vIMOsID0gXFxge2l9XG4gIFwiXFx4RUZcIjogXCJpXFx1MDMwOFwiLFxuICAvLyDDryA9IFxcXCJ7aX1cbiAgXCJcXHUxRTJGXCI6IFwiaVxcdTAzMDhcXHUwMzAxXCIsXG4gIC8vIOG4ryA9IFxcXCJcXCd7aX1cbiAgXCJcXHUwMTI5XCI6IFwiaVxcdTAzMDNcIixcbiAgLy8gxKkgPSBcXH57aX1cbiAgXCJcXHUwMTJCXCI6IFwiaVxcdTAzMDRcIixcbiAgLy8gxKsgPSBcXD17aX1cbiAgXCJcXHUwMTJEXCI6IFwiaVxcdTAzMDZcIixcbiAgLy8gxK0gPSBcXHV7aX1cbiAgXCJcXHUwMUQwXCI6IFwiaVxcdTAzMENcIixcbiAgLy8gx5AgPSBcXHZ7aX1cbiAgXCJcXHhFRVwiOiBcImlcXHUwMzAyXCIsXG4gIC8vIMOuID0gXFxee2l9XG4gIFwiXFx1MDFGMFwiOiBcImpcXHUwMzBDXCIsXG4gIC8vIMewID0gXFx2e2p9XG4gIFwiXFx1MDEzNVwiOiBcImpcXHUwMzAyXCIsXG4gIC8vIMS1ID0gXFxee2p9XG4gIFwiXFx1MUUzMVwiOiBcImtcXHUwMzAxXCIsXG4gIC8vIOG4sSA9IFxcJ3trfVxuICBcIlxcdTAxRTlcIjogXCJrXFx1MDMwQ1wiLFxuICAvLyDHqSA9IFxcdntrfVxuICBcIlxcdTAxM0FcIjogXCJsXFx1MDMwMVwiLFxuICAvLyDEuiA9IFxcJ3tsfVxuICBcIlxcdTAxM0VcIjogXCJsXFx1MDMwQ1wiLFxuICAvLyDEviA9IFxcdntsfVxuICBcIlxcdTFFM0ZcIjogXCJtXFx1MDMwMVwiLFxuICAvLyDhuL8gPSBcXCd7bX1cbiAgXCJcXHUxRTQxXCI6IFwibVxcdTAzMDdcIixcbiAgLy8g4bmBID0gXFwue219XG4gIFwiXFx1MDE0NFwiOiBcIm5cXHUwMzAxXCIsXG4gIC8vIMWEID0gXFwne259XG4gIFwiXFx1MDFGOVwiOiBcIm5cXHUwMzAwXCIsXG4gIC8vIMe5ID0gXFxge259XG4gIFwiXFx4RjFcIjogXCJuXFx1MDMwM1wiLFxuICAvLyDDsSA9IFxcfntufVxuICBcIlxcdTAxNDhcIjogXCJuXFx1MDMwQ1wiLFxuICAvLyDFiCA9IFxcdntufVxuICBcIlxcdTFFNDVcIjogXCJuXFx1MDMwN1wiLFxuICAvLyDhuYUgPSBcXC57bn1cbiAgXCJcXHhGM1wiOiBcIm9cXHUwMzAxXCIsXG4gIC8vIMOzID0gXFwne299XG4gIFwiXFx4RjJcIjogXCJvXFx1MDMwMFwiLFxuICAvLyDDsiA9IFxcYHtvfVxuICBcIlxceEY2XCI6IFwib1xcdTAzMDhcIixcbiAgLy8gw7YgPSBcXFwie299XG4gIFwiXFx1MDIyQlwiOiBcIm9cXHUwMzA4XFx1MDMwNFwiLFxuICAvLyDIqyA9IFxcXCJcXD17b31cbiAgXCJcXHhGNVwiOiBcIm9cXHUwMzAzXCIsXG4gIC8vIMO1ID0gXFx+e299XG4gIFwiXFx1MUU0RFwiOiBcIm9cXHUwMzAzXFx1MDMwMVwiLFxuICAvLyDhuY0gPSBcXH5cXCd7b31cbiAgXCJcXHUxRTRGXCI6IFwib1xcdTAzMDNcXHUwMzA4XCIsXG4gIC8vIOG5jyA9IFxcflxcXCJ7b31cbiAgXCJcXHUwMjJEXCI6IFwib1xcdTAzMDNcXHUwMzA0XCIsXG4gIC8vIMitID0gXFx+XFw9e299XG4gIFwiXFx1MDE0RFwiOiBcIm9cXHUwMzA0XCIsXG4gIC8vIMWNID0gXFw9e299XG4gIFwiXFx1MUU1M1wiOiBcIm9cXHUwMzA0XFx1MDMwMVwiLFxuICAvLyDhuZMgPSBcXD1cXCd7b31cbiAgXCJcXHUxRTUxXCI6IFwib1xcdTAzMDRcXHUwMzAwXCIsXG4gIC8vIOG5kSA9IFxcPVxcYHtvfVxuICBcIlxcdTAxNEZcIjogXCJvXFx1MDMwNlwiLFxuICAvLyDFjyA9IFxcdXtvfVxuICBcIlxcdTAxRDJcIjogXCJvXFx1MDMwQ1wiLFxuICAvLyDHkiA9IFxcdntvfVxuICBcIlxceEY0XCI6IFwib1xcdTAzMDJcIixcbiAgLy8gw7QgPSBcXF57b31cbiAgXCJcXHUxRUQxXCI6IFwib1xcdTAzMDJcXHUwMzAxXCIsXG4gIC8vIOG7kSA9IFxcXlxcJ3tvfVxuICBcIlxcdTFFRDNcIjogXCJvXFx1MDMwMlxcdTAzMDBcIixcbiAgLy8g4buTID0gXFxeXFxge299XG4gIFwiXFx1MUVEN1wiOiBcIm9cXHUwMzAyXFx1MDMwM1wiLFxuICAvLyDhu5cgPSBcXF5cXH57b31cbiAgXCJcXHUwMjJGXCI6IFwib1xcdTAzMDdcIixcbiAgLy8gyK8gPSBcXC57b31cbiAgXCJcXHUwMjMxXCI6IFwib1xcdTAzMDdcXHUwMzA0XCIsXG4gIC8vIMixID0gXFwuXFw9e299XG4gIFwiXFx1MDE1MVwiOiBcIm9cXHUwMzBCXCIsXG4gIC8vIMWRID0gXFxIe299XG4gIFwiXFx1MUU1NVwiOiBcInBcXHUwMzAxXCIsXG4gIC8vIOG5lSA9IFxcJ3twfVxuICBcIlxcdTFFNTdcIjogXCJwXFx1MDMwN1wiLFxuICAvLyDhuZcgPSBcXC57cH1cbiAgXCJcXHUwMTU1XCI6IFwiclxcdTAzMDFcIixcbiAgLy8gxZUgPSBcXCd7cn1cbiAgXCJcXHUwMTU5XCI6IFwiclxcdTAzMENcIixcbiAgLy8gxZkgPSBcXHZ7cn1cbiAgXCJcXHUxRTU5XCI6IFwiclxcdTAzMDdcIixcbiAgLy8g4bmZID0gXFwue3J9XG4gIFwiXFx1MDE1QlwiOiBcInNcXHUwMzAxXCIsXG4gIC8vIMWbID0gXFwne3N9XG4gIFwiXFx1MUU2NVwiOiBcInNcXHUwMzAxXFx1MDMwN1wiLFxuICAvLyDhuaUgPSBcXCdcXC57c31cbiAgXCJcXHUwMTYxXCI6IFwic1xcdTAzMENcIixcbiAgLy8gxaEgPSBcXHZ7c31cbiAgXCJcXHUxRTY3XCI6IFwic1xcdTAzMENcXHUwMzA3XCIsXG4gIC8vIOG5pyA9IFxcdlxcLntzfVxuICBcIlxcdTAxNURcIjogXCJzXFx1MDMwMlwiLFxuICAvLyDFnSA9IFxcXntzfVxuICBcIlxcdTFFNjFcIjogXCJzXFx1MDMwN1wiLFxuICAvLyDhuaEgPSBcXC57c31cbiAgXCJcXHUxRTk3XCI6IFwidFxcdTAzMDhcIixcbiAgLy8g4bqXID0gXFxcInt0fVxuICBcIlxcdTAxNjVcIjogXCJ0XFx1MDMwQ1wiLFxuICAvLyDFpSA9IFxcdnt0fVxuICBcIlxcdTFFNkJcIjogXCJ0XFx1MDMwN1wiLFxuICAvLyDhuasgPSBcXC57dH1cbiAgXCJcXHhGQVwiOiBcInVcXHUwMzAxXCIsXG4gIC8vIMO6ID0gXFwne3V9XG4gIFwiXFx4RjlcIjogXCJ1XFx1MDMwMFwiLFxuICAvLyDDuSA9IFxcYHt1fVxuICBcIlxceEZDXCI6IFwidVxcdTAzMDhcIixcbiAgLy8gw7wgPSBcXFwie3V9XG4gIFwiXFx1MDFEOFwiOiBcInVcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDHmCA9IFxcXCJcXCd7dX1cbiAgXCJcXHUwMURDXCI6IFwidVxcdTAzMDhcXHUwMzAwXCIsXG4gIC8vIMecID0gXFxcIlxcYHt1fVxuICBcIlxcdTAxRDZcIjogXCJ1XFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx5YgPSBcXFwiXFw9e3V9XG4gIFwiXFx1MDFEQVwiOiBcInVcXHUwMzA4XFx1MDMwQ1wiLFxuICAvLyDHmiA9IFxcXCJcXHZ7dX1cbiAgXCJcXHUwMTY5XCI6IFwidVxcdTAzMDNcIixcbiAgLy8gxakgPSBcXH57dX1cbiAgXCJcXHUxRTc5XCI6IFwidVxcdTAzMDNcXHUwMzAxXCIsXG4gIC8vIOG5uSA9IFxcflxcJ3t1fVxuICBcIlxcdTAxNkJcIjogXCJ1XFx1MDMwNFwiLFxuICAvLyDFqyA9IFxcPXt1fVxuICBcIlxcdTFFN0JcIjogXCJ1XFx1MDMwNFxcdTAzMDhcIixcbiAgLy8g4bm7ID0gXFw9XFxcInt1fVxuICBcIlxcdTAxNkRcIjogXCJ1XFx1MDMwNlwiLFxuICAvLyDFrSA9IFxcdXt1fVxuICBcIlxcdTAxRDRcIjogXCJ1XFx1MDMwQ1wiLFxuICAvLyDHlCA9IFxcdnt1fVxuICBcIlxceEZCXCI6IFwidVxcdTAzMDJcIixcbiAgLy8gw7sgPSBcXF57dX1cbiAgXCJcXHUwMTZGXCI6IFwidVxcdTAzMEFcIixcbiAgLy8gxa8gPSBcXHJ7dX1cbiAgXCJcXHUwMTcxXCI6IFwidVxcdTAzMEJcIixcbiAgLy8gxbEgPSBcXEh7dX1cbiAgXCJcXHUxRTdEXCI6IFwidlxcdTAzMDNcIixcbiAgLy8g4bm9ID0gXFx+e3Z9XG4gIFwiXFx1MUU4M1wiOiBcIndcXHUwMzAxXCIsXG4gIC8vIOG6gyA9IFxcJ3t3fVxuICBcIlxcdTFFODFcIjogXCJ3XFx1MDMwMFwiLFxuICAvLyDhuoEgPSBcXGB7d31cbiAgXCJcXHUxRTg1XCI6IFwid1xcdTAzMDhcIixcbiAgLy8g4bqFID0gXFxcInt3fVxuICBcIlxcdTAxNzVcIjogXCJ3XFx1MDMwMlwiLFxuICAvLyDFtSA9IFxcXnt3fVxuICBcIlxcdTFFODdcIjogXCJ3XFx1MDMwN1wiLFxuICAvLyDhuocgPSBcXC57d31cbiAgXCJcXHUxRTk4XCI6IFwid1xcdTAzMEFcIixcbiAgLy8g4bqYID0gXFxye3d9XG4gIFwiXFx1MUU4RFwiOiBcInhcXHUwMzA4XCIsXG4gIC8vIOG6jSA9IFxcXCJ7eH1cbiAgXCJcXHUxRThCXCI6IFwieFxcdTAzMDdcIixcbiAgLy8g4bqLID0gXFwue3h9XG4gIFwiXFx4RkRcIjogXCJ5XFx1MDMwMVwiLFxuICAvLyDDvSA9IFxcJ3t5fVxuICBcIlxcdTFFRjNcIjogXCJ5XFx1MDMwMFwiLFxuICAvLyDhu7MgPSBcXGB7eX1cbiAgXCJcXHhGRlwiOiBcInlcXHUwMzA4XCIsXG4gIC8vIMO/ID0gXFxcInt5fVxuICBcIlxcdTFFRjlcIjogXCJ5XFx1MDMwM1wiLFxuICAvLyDhu7kgPSBcXH57eX1cbiAgXCJcXHUwMjMzXCI6IFwieVxcdTAzMDRcIixcbiAgLy8gyLMgPSBcXD17eX1cbiAgXCJcXHUwMTc3XCI6IFwieVxcdTAzMDJcIixcbiAgLy8gxbcgPSBcXF57eX1cbiAgXCJcXHUxRThGXCI6IFwieVxcdTAzMDdcIixcbiAgLy8g4bqPID0gXFwue3l9XG4gIFwiXFx1MUU5OVwiOiBcInlcXHUwMzBBXCIsXG4gIC8vIOG6mSA9IFxccnt5fVxuICBcIlxcdTAxN0FcIjogXCJ6XFx1MDMwMVwiLFxuICAvLyDFuiA9IFxcJ3t6fVxuICBcIlxcdTAxN0VcIjogXCJ6XFx1MDMwQ1wiLFxuICAvLyDFviA9IFxcdnt6fVxuICBcIlxcdTFFOTFcIjogXCJ6XFx1MDMwMlwiLFxuICAvLyDhupEgPSBcXF57en1cbiAgXCJcXHUwMTdDXCI6IFwielxcdTAzMDdcIixcbiAgLy8gxbwgPSBcXC57en1cbiAgXCJcXHhDMVwiOiBcIkFcXHUwMzAxXCIsXG4gIC8vIMOBID0gXFwne0F9XG4gIFwiXFx4QzBcIjogXCJBXFx1MDMwMFwiLFxuICAvLyDDgCA9IFxcYHtBfVxuICBcIlxceEM0XCI6IFwiQVxcdTAzMDhcIixcbiAgLy8gw4QgPSBcXFwie0F9XG4gIFwiXFx1MDFERVwiOiBcIkFcXHUwMzA4XFx1MDMwNFwiLFxuICAvLyDHniA9IFxcXCJcXD17QX1cbiAgXCJcXHhDM1wiOiBcIkFcXHUwMzAzXCIsXG4gIC8vIMODID0gXFx+e0F9XG4gIFwiXFx1MDEwMFwiOiBcIkFcXHUwMzA0XCIsXG4gIC8vIMSAID0gXFw9e0F9XG4gIFwiXFx1MDEwMlwiOiBcIkFcXHUwMzA2XCIsXG4gIC8vIMSCID0gXFx1e0F9XG4gIFwiXFx1MUVBRVwiOiBcIkFcXHUwMzA2XFx1MDMwMVwiLFxuICAvLyDhuq4gPSBcXHVcXCd7QX1cbiAgXCJcXHUxRUIwXCI6IFwiQVxcdTAzMDZcXHUwMzAwXCIsXG4gIC8vIOG6sCA9IFxcdVxcYHtBfVxuICBcIlxcdTFFQjRcIjogXCJBXFx1MDMwNlxcdTAzMDNcIixcbiAgLy8g4bq0ID0gXFx1XFx+e0F9XG4gIFwiXFx1MDFDRFwiOiBcIkFcXHUwMzBDXCIsXG4gIC8vIMeNID0gXFx2e0F9XG4gIFwiXFx4QzJcIjogXCJBXFx1MDMwMlwiLFxuICAvLyDDgiA9IFxcXntBfVxuICBcIlxcdTFFQTRcIjogXCJBXFx1MDMwMlxcdTAzMDFcIixcbiAgLy8g4bqkID0gXFxeXFwne0F9XG4gIFwiXFx1MUVBNlwiOiBcIkFcXHUwMzAyXFx1MDMwMFwiLFxuICAvLyDhuqYgPSBcXF5cXGB7QX1cbiAgXCJcXHUxRUFBXCI6IFwiQVxcdTAzMDJcXHUwMzAzXCIsXG4gIC8vIOG6qiA9IFxcXlxcfntBfVxuICBcIlxcdTAyMjZcIjogXCJBXFx1MDMwN1wiLFxuICAvLyDIpiA9IFxcLntBfVxuICBcIlxcdTAxRTBcIjogXCJBXFx1MDMwN1xcdTAzMDRcIixcbiAgLy8gx6AgPSBcXC5cXD17QX1cbiAgXCJcXHhDNVwiOiBcIkFcXHUwMzBBXCIsXG4gIC8vIMOFID0gXFxye0F9XG4gIFwiXFx1MDFGQVwiOiBcIkFcXHUwMzBBXFx1MDMwMVwiLFxuICAvLyDHuiA9IFxcclxcJ3tBfVxuICBcIlxcdTFFMDJcIjogXCJCXFx1MDMwN1wiLFxuICAvLyDhuIIgPSBcXC57Qn1cbiAgXCJcXHUwMTA2XCI6IFwiQ1xcdTAzMDFcIixcbiAgLy8gxIYgPSBcXCd7Q31cbiAgXCJcXHUwMTBDXCI6IFwiQ1xcdTAzMENcIixcbiAgLy8gxIwgPSBcXHZ7Q31cbiAgXCJcXHUwMTA4XCI6IFwiQ1xcdTAzMDJcIixcbiAgLy8gxIggPSBcXF57Q31cbiAgXCJcXHUwMTBBXCI6IFwiQ1xcdTAzMDdcIixcbiAgLy8gxIogPSBcXC57Q31cbiAgXCJcXHUwMTBFXCI6IFwiRFxcdTAzMENcIixcbiAgLy8gxI4gPSBcXHZ7RH1cbiAgXCJcXHUxRTBBXCI6IFwiRFxcdTAzMDdcIixcbiAgLy8g4biKID0gXFwue0R9XG4gIFwiXFx4QzlcIjogXCJFXFx1MDMwMVwiLFxuICAvLyDDiSA9IFxcJ3tFfVxuICBcIlxceEM4XCI6IFwiRVxcdTAzMDBcIixcbiAgLy8gw4ggPSBcXGB7RX1cbiAgXCJcXHhDQlwiOiBcIkVcXHUwMzA4XCIsXG4gIC8vIMOLID0gXFxcIntFfVxuICBcIlxcdTFFQkNcIjogXCJFXFx1MDMwM1wiLFxuICAvLyDhurwgPSBcXH57RX1cbiAgXCJcXHUwMTEyXCI6IFwiRVxcdTAzMDRcIixcbiAgLy8gxJIgPSBcXD17RX1cbiAgXCJcXHUxRTE2XCI6IFwiRVxcdTAzMDRcXHUwMzAxXCIsXG4gIC8vIOG4liA9IFxcPVxcJ3tFfVxuICBcIlxcdTFFMTRcIjogXCJFXFx1MDMwNFxcdTAzMDBcIixcbiAgLy8g4biUID0gXFw9XFxge0V9XG4gIFwiXFx1MDExNFwiOiBcIkVcXHUwMzA2XCIsXG4gIC8vIMSUID0gXFx1e0V9XG4gIFwiXFx1MDExQVwiOiBcIkVcXHUwMzBDXCIsXG4gIC8vIMSaID0gXFx2e0V9XG4gIFwiXFx4Q0FcIjogXCJFXFx1MDMwMlwiLFxuICAvLyDDiiA9IFxcXntFfVxuICBcIlxcdTFFQkVcIjogXCJFXFx1MDMwMlxcdTAzMDFcIixcbiAgLy8g4bq+ID0gXFxeXFwne0V9XG4gIFwiXFx1MUVDMFwiOiBcIkVcXHUwMzAyXFx1MDMwMFwiLFxuICAvLyDhu4AgPSBcXF5cXGB7RX1cbiAgXCJcXHUxRUM0XCI6IFwiRVxcdTAzMDJcXHUwMzAzXCIsXG4gIC8vIOG7hCA9IFxcXlxcfntFfVxuICBcIlxcdTAxMTZcIjogXCJFXFx1MDMwN1wiLFxuICAvLyDEliA9IFxcLntFfVxuICBcIlxcdTFFMUVcIjogXCJGXFx1MDMwN1wiLFxuICAvLyDhuJ4gPSBcXC57Rn1cbiAgXCJcXHUwMUY0XCI6IFwiR1xcdTAzMDFcIixcbiAgLy8gx7QgPSBcXCd7R31cbiAgXCJcXHUxRTIwXCI6IFwiR1xcdTAzMDRcIixcbiAgLy8g4bigID0gXFw9e0d9XG4gIFwiXFx1MDExRVwiOiBcIkdcXHUwMzA2XCIsXG4gIC8vIMSeID0gXFx1e0d9XG4gIFwiXFx1MDFFNlwiOiBcIkdcXHUwMzBDXCIsXG4gIC8vIMemID0gXFx2e0d9XG4gIFwiXFx1MDExQ1wiOiBcIkdcXHUwMzAyXCIsXG4gIC8vIMScID0gXFxee0d9XG4gIFwiXFx1MDEyMFwiOiBcIkdcXHUwMzA3XCIsXG4gIC8vIMSgID0gXFwue0d9XG4gIFwiXFx1MUUyNlwiOiBcIkhcXHUwMzA4XCIsXG4gIC8vIOG4piA9IFxcXCJ7SH1cbiAgXCJcXHUwMjFFXCI6IFwiSFxcdTAzMENcIixcbiAgLy8gyJ4gPSBcXHZ7SH1cbiAgXCJcXHUwMTI0XCI6IFwiSFxcdTAzMDJcIixcbiAgLy8gxKQgPSBcXF57SH1cbiAgXCJcXHUxRTIyXCI6IFwiSFxcdTAzMDdcIixcbiAgLy8g4biiID0gXFwue0h9XG4gIFwiXFx4Q0RcIjogXCJJXFx1MDMwMVwiLFxuICAvLyDDjSA9IFxcJ3tJfVxuICBcIlxceENDXCI6IFwiSVxcdTAzMDBcIixcbiAgLy8gw4wgPSBcXGB7SX1cbiAgXCJcXHhDRlwiOiBcIklcXHUwMzA4XCIsXG4gIC8vIMOPID0gXFxcIntJfVxuICBcIlxcdTFFMkVcIjogXCJJXFx1MDMwOFxcdTAzMDFcIixcbiAgLy8g4biuID0gXFxcIlxcJ3tJfVxuICBcIlxcdTAxMjhcIjogXCJJXFx1MDMwM1wiLFxuICAvLyDEqCA9IFxcfntJfVxuICBcIlxcdTAxMkFcIjogXCJJXFx1MDMwNFwiLFxuICAvLyDEqiA9IFxcPXtJfVxuICBcIlxcdTAxMkNcIjogXCJJXFx1MDMwNlwiLFxuICAvLyDErCA9IFxcdXtJfVxuICBcIlxcdTAxQ0ZcIjogXCJJXFx1MDMwQ1wiLFxuICAvLyDHjyA9IFxcdntJfVxuICBcIlxceENFXCI6IFwiSVxcdTAzMDJcIixcbiAgLy8gw44gPSBcXF57SX1cbiAgXCJcXHUwMTMwXCI6IFwiSVxcdTAzMDdcIixcbiAgLy8gxLAgPSBcXC57SX1cbiAgXCJcXHUwMTM0XCI6IFwiSlxcdTAzMDJcIixcbiAgLy8gxLQgPSBcXF57Sn1cbiAgXCJcXHUxRTMwXCI6IFwiS1xcdTAzMDFcIixcbiAgLy8g4biwID0gXFwne0t9XG4gIFwiXFx1MDFFOFwiOiBcIktcXHUwMzBDXCIsXG4gIC8vIMeoID0gXFx2e0t9XG4gIFwiXFx1MDEzOVwiOiBcIkxcXHUwMzAxXCIsXG4gIC8vIMS5ID0gXFwne0x9XG4gIFwiXFx1MDEzRFwiOiBcIkxcXHUwMzBDXCIsXG4gIC8vIMS9ID0gXFx2e0x9XG4gIFwiXFx1MUUzRVwiOiBcIk1cXHUwMzAxXCIsXG4gIC8vIOG4viA9IFxcJ3tNfVxuICBcIlxcdTFFNDBcIjogXCJNXFx1MDMwN1wiLFxuICAvLyDhuYAgPSBcXC57TX1cbiAgXCJcXHUwMTQzXCI6IFwiTlxcdTAzMDFcIixcbiAgLy8gxYMgPSBcXCd7Tn1cbiAgXCJcXHUwMUY4XCI6IFwiTlxcdTAzMDBcIixcbiAgLy8gx7ggPSBcXGB7Tn1cbiAgXCJcXHhEMVwiOiBcIk5cXHUwMzAzXCIsXG4gIC8vIMORID0gXFx+e059XG4gIFwiXFx1MDE0N1wiOiBcIk5cXHUwMzBDXCIsXG4gIC8vIMWHID0gXFx2e059XG4gIFwiXFx1MUU0NFwiOiBcIk5cXHUwMzA3XCIsXG4gIC8vIOG5hCA9IFxcLntOfVxuICBcIlxceEQzXCI6IFwiT1xcdTAzMDFcIixcbiAgLy8gw5MgPSBcXCd7T31cbiAgXCJcXHhEMlwiOiBcIk9cXHUwMzAwXCIsXG4gIC8vIMOSID0gXFxge099XG4gIFwiXFx4RDZcIjogXCJPXFx1MDMwOFwiLFxuICAvLyDDliA9IFxcXCJ7T31cbiAgXCJcXHUwMjJBXCI6IFwiT1xcdTAzMDhcXHUwMzA0XCIsXG4gIC8vIMiqID0gXFxcIlxcPXtPfVxuICBcIlxceEQ1XCI6IFwiT1xcdTAzMDNcIixcbiAgLy8gw5UgPSBcXH57T31cbiAgXCJcXHUxRTRDXCI6IFwiT1xcdTAzMDNcXHUwMzAxXCIsXG4gIC8vIOG5jCA9IFxcflxcJ3tPfVxuICBcIlxcdTFFNEVcIjogXCJPXFx1MDMwM1xcdTAzMDhcIixcbiAgLy8g4bmOID0gXFx+XFxcIntPfVxuICBcIlxcdTAyMkNcIjogXCJPXFx1MDMwM1xcdTAzMDRcIixcbiAgLy8gyKwgPSBcXH5cXD17T31cbiAgXCJcXHUwMTRDXCI6IFwiT1xcdTAzMDRcIixcbiAgLy8gxYwgPSBcXD17T31cbiAgXCJcXHUxRTUyXCI6IFwiT1xcdTAzMDRcXHUwMzAxXCIsXG4gIC8vIOG5kiA9IFxcPVxcJ3tPfVxuICBcIlxcdTFFNTBcIjogXCJPXFx1MDMwNFxcdTAzMDBcIixcbiAgLy8g4bmQID0gXFw9XFxge099XG4gIFwiXFx1MDE0RVwiOiBcIk9cXHUwMzA2XCIsXG4gIC8vIMWOID0gXFx1e099XG4gIFwiXFx1MDFEMVwiOiBcIk9cXHUwMzBDXCIsXG4gIC8vIMeRID0gXFx2e099XG4gIFwiXFx4RDRcIjogXCJPXFx1MDMwMlwiLFxuICAvLyDDlCA9IFxcXntPfVxuICBcIlxcdTFFRDBcIjogXCJPXFx1MDMwMlxcdTAzMDFcIixcbiAgLy8g4buQID0gXFxeXFwne099XG4gIFwiXFx1MUVEMlwiOiBcIk9cXHUwMzAyXFx1MDMwMFwiLFxuICAvLyDhu5IgPSBcXF5cXGB7T31cbiAgXCJcXHUxRUQ2XCI6IFwiT1xcdTAzMDJcXHUwMzAzXCIsXG4gIC8vIOG7liA9IFxcXlxcfntPfVxuICBcIlxcdTAyMkVcIjogXCJPXFx1MDMwN1wiLFxuICAvLyDIriA9IFxcLntPfVxuICBcIlxcdTAyMzBcIjogXCJPXFx1MDMwN1xcdTAzMDRcIixcbiAgLy8gyLAgPSBcXC5cXD17T31cbiAgXCJcXHUwMTUwXCI6IFwiT1xcdTAzMEJcIixcbiAgLy8gxZAgPSBcXEh7T31cbiAgXCJcXHUxRTU0XCI6IFwiUFxcdTAzMDFcIixcbiAgLy8g4bmUID0gXFwne1B9XG4gIFwiXFx1MUU1NlwiOiBcIlBcXHUwMzA3XCIsXG4gIC8vIOG5liA9IFxcLntQfVxuICBcIlxcdTAxNTRcIjogXCJSXFx1MDMwMVwiLFxuICAvLyDFlCA9IFxcJ3tSfVxuICBcIlxcdTAxNThcIjogXCJSXFx1MDMwQ1wiLFxuICAvLyDFmCA9IFxcdntSfVxuICBcIlxcdTFFNThcIjogXCJSXFx1MDMwN1wiLFxuICAvLyDhuZggPSBcXC57Un1cbiAgXCJcXHUwMTVBXCI6IFwiU1xcdTAzMDFcIixcbiAgLy8gxZogPSBcXCd7U31cbiAgXCJcXHUxRTY0XCI6IFwiU1xcdTAzMDFcXHUwMzA3XCIsXG4gIC8vIOG5pCA9IFxcJ1xcLntTfVxuICBcIlxcdTAxNjBcIjogXCJTXFx1MDMwQ1wiLFxuICAvLyDFoCA9IFxcdntTfVxuICBcIlxcdTFFNjZcIjogXCJTXFx1MDMwQ1xcdTAzMDdcIixcbiAgLy8g4bmmID0gXFx2XFwue1N9XG4gIFwiXFx1MDE1Q1wiOiBcIlNcXHUwMzAyXCIsXG4gIC8vIMWcID0gXFxee1N9XG4gIFwiXFx1MUU2MFwiOiBcIlNcXHUwMzA3XCIsXG4gIC8vIOG5oCA9IFxcLntTfVxuICBcIlxcdTAxNjRcIjogXCJUXFx1MDMwQ1wiLFxuICAvLyDFpCA9IFxcdntUfVxuICBcIlxcdTFFNkFcIjogXCJUXFx1MDMwN1wiLFxuICAvLyDhuaogPSBcXC57VH1cbiAgXCJcXHhEQVwiOiBcIlVcXHUwMzAxXCIsXG4gIC8vIMOaID0gXFwne1V9XG4gIFwiXFx4RDlcIjogXCJVXFx1MDMwMFwiLFxuICAvLyDDmSA9IFxcYHtVfVxuICBcIlxceERDXCI6IFwiVVxcdTAzMDhcIixcbiAgLy8gw5wgPSBcXFwie1V9XG4gIFwiXFx1MDFEN1wiOiBcIlVcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDHlyA9IFxcXCJcXCd7VX1cbiAgXCJcXHUwMURCXCI6IFwiVVxcdTAzMDhcXHUwMzAwXCIsXG4gIC8vIMebID0gXFxcIlxcYHtVfVxuICBcIlxcdTAxRDVcIjogXCJVXFx1MDMwOFxcdTAzMDRcIixcbiAgLy8gx5UgPSBcXFwiXFw9e1V9XG4gIFwiXFx1MDFEOVwiOiBcIlVcXHUwMzA4XFx1MDMwQ1wiLFxuICAvLyDHmSA9IFxcXCJcXHZ7VX1cbiAgXCJcXHUwMTY4XCI6IFwiVVxcdTAzMDNcIixcbiAgLy8gxaggPSBcXH57VX1cbiAgXCJcXHUxRTc4XCI6IFwiVVxcdTAzMDNcXHUwMzAxXCIsXG4gIC8vIOG5uCA9IFxcflxcJ3tVfVxuICBcIlxcdTAxNkFcIjogXCJVXFx1MDMwNFwiLFxuICAvLyDFqiA9IFxcPXtVfVxuICBcIlxcdTFFN0FcIjogXCJVXFx1MDMwNFxcdTAzMDhcIixcbiAgLy8g4bm6ID0gXFw9XFxcIntVfVxuICBcIlxcdTAxNkNcIjogXCJVXFx1MDMwNlwiLFxuICAvLyDFrCA9IFxcdXtVfVxuICBcIlxcdTAxRDNcIjogXCJVXFx1MDMwQ1wiLFxuICAvLyDHkyA9IFxcdntVfVxuICBcIlxceERCXCI6IFwiVVxcdTAzMDJcIixcbiAgLy8gw5sgPSBcXF57VX1cbiAgXCJcXHUwMTZFXCI6IFwiVVxcdTAzMEFcIixcbiAgLy8gxa4gPSBcXHJ7VX1cbiAgXCJcXHUwMTcwXCI6IFwiVVxcdTAzMEJcIixcbiAgLy8gxbAgPSBcXEh7VX1cbiAgXCJcXHUxRTdDXCI6IFwiVlxcdTAzMDNcIixcbiAgLy8g4bm8ID0gXFx+e1Z9XG4gIFwiXFx1MUU4MlwiOiBcIldcXHUwMzAxXCIsXG4gIC8vIOG6giA9IFxcJ3tXfVxuICBcIlxcdTFFODBcIjogXCJXXFx1MDMwMFwiLFxuICAvLyDhuoAgPSBcXGB7V31cbiAgXCJcXHUxRTg0XCI6IFwiV1xcdTAzMDhcIixcbiAgLy8g4bqEID0gXFxcIntXfVxuICBcIlxcdTAxNzRcIjogXCJXXFx1MDMwMlwiLFxuICAvLyDFtCA9IFxcXntXfVxuICBcIlxcdTFFODZcIjogXCJXXFx1MDMwN1wiLFxuICAvLyDhuoYgPSBcXC57V31cbiAgXCJcXHUxRThDXCI6IFwiWFxcdTAzMDhcIixcbiAgLy8g4bqMID0gXFxcIntYfVxuICBcIlxcdTFFOEFcIjogXCJYXFx1MDMwN1wiLFxuICAvLyDhuoogPSBcXC57WH1cbiAgXCJcXHhERFwiOiBcIllcXHUwMzAxXCIsXG4gIC8vIMOdID0gXFwne1l9XG4gIFwiXFx1MUVGMlwiOiBcIllcXHUwMzAwXCIsXG4gIC8vIOG7siA9IFxcYHtZfVxuICBcIlxcdTAxNzhcIjogXCJZXFx1MDMwOFwiLFxuICAvLyDFuCA9IFxcXCJ7WX1cbiAgXCJcXHUxRUY4XCI6IFwiWVxcdTAzMDNcIixcbiAgLy8g4bu4ID0gXFx+e1l9XG4gIFwiXFx1MDIzMlwiOiBcIllcXHUwMzA0XCIsXG4gIC8vIMiyID0gXFw9e1l9XG4gIFwiXFx1MDE3NlwiOiBcIllcXHUwMzAyXCIsXG4gIC8vIMW2ID0gXFxee1l9XG4gIFwiXFx1MUU4RVwiOiBcIllcXHUwMzA3XCIsXG4gIC8vIOG6jiA9IFxcLntZfVxuICBcIlxcdTAxNzlcIjogXCJaXFx1MDMwMVwiLFxuICAvLyDFuSA9IFxcJ3tafVxuICBcIlxcdTAxN0RcIjogXCJaXFx1MDMwQ1wiLFxuICAvLyDFvSA9IFxcdntafVxuICBcIlxcdTFFOTBcIjogXCJaXFx1MDMwMlwiLFxuICAvLyDhupAgPSBcXF57Wn1cbiAgXCJcXHUwMTdCXCI6IFwiWlxcdTAzMDdcIixcbiAgLy8gxbsgPSBcXC57Wn1cbiAgXCJcXHUwM0FDXCI6IFwiXFx1MDNCMVxcdTAzMDFcIixcbiAgLy8gzqwgPSBcXCd7zrF9XG4gIFwiXFx1MUY3MFwiOiBcIlxcdTAzQjFcXHUwMzAwXCIsXG4gIC8vIOG9sCA9IFxcYHvOsX1cbiAgXCJcXHUxRkIxXCI6IFwiXFx1MDNCMVxcdTAzMDRcIixcbiAgLy8g4b6xID0gXFw9e86xfVxuICBcIlxcdTFGQjBcIjogXCJcXHUwM0IxXFx1MDMwNlwiLFxuICAvLyDhvrAgPSBcXHV7zrF9XG4gIFwiXFx1MDNBRFwiOiBcIlxcdTAzQjVcXHUwMzAxXCIsXG4gIC8vIM6tID0gXFwne861fVxuICBcIlxcdTFGNzJcIjogXCJcXHUwM0I1XFx1MDMwMFwiLFxuICAvLyDhvbIgPSBcXGB7zrV9XG4gIFwiXFx1MDNBRVwiOiBcIlxcdTAzQjdcXHUwMzAxXCIsXG4gIC8vIM6uID0gXFwne863fVxuICBcIlxcdTFGNzRcIjogXCJcXHUwM0I3XFx1MDMwMFwiLFxuICAvLyDhvbQgPSBcXGB7zrd9XG4gIFwiXFx1MDNBRlwiOiBcIlxcdTAzQjlcXHUwMzAxXCIsXG4gIC8vIM6vID0gXFwne865fVxuICBcIlxcdTFGNzZcIjogXCJcXHUwM0I5XFx1MDMwMFwiLFxuICAvLyDhvbYgPSBcXGB7zrl9XG4gIFwiXFx1MDNDQVwiOiBcIlxcdTAzQjlcXHUwMzA4XCIsXG4gIC8vIM+KID0gXFxcInvOuX1cbiAgXCJcXHUwMzkwXCI6IFwiXFx1MDNCOVxcdTAzMDhcXHUwMzAxXCIsXG4gIC8vIM6QID0gXFxcIlxcJ3vOuX1cbiAgXCJcXHUxRkQyXCI6IFwiXFx1MDNCOVxcdTAzMDhcXHUwMzAwXCIsXG4gIC8vIOG/kiA9IFxcXCJcXGB7zrl9XG4gIFwiXFx1MUZEMVwiOiBcIlxcdTAzQjlcXHUwMzA0XCIsXG4gIC8vIOG/kSA9IFxcPXvOuX1cbiAgXCJcXHUxRkQwXCI6IFwiXFx1MDNCOVxcdTAzMDZcIixcbiAgLy8g4b+QID0gXFx1e865fVxuICBcIlxcdTAzQ0NcIjogXCJcXHUwM0JGXFx1MDMwMVwiLFxuICAvLyDPjCA9IFxcJ3vOv31cbiAgXCJcXHUxRjc4XCI6IFwiXFx1MDNCRlxcdTAzMDBcIixcbiAgLy8g4b24ID0gXFxge86/fVxuICBcIlxcdTAzQ0RcIjogXCJcXHUwM0M1XFx1MDMwMVwiLFxuICAvLyDPjSA9IFxcJ3vPhX1cbiAgXCJcXHUxRjdBXCI6IFwiXFx1MDNDNVxcdTAzMDBcIixcbiAgLy8g4b26ID0gXFxge8+FfVxuICBcIlxcdTAzQ0JcIjogXCJcXHUwM0M1XFx1MDMwOFwiLFxuICAvLyDPiyA9IFxcXCJ7z4V9XG4gIFwiXFx1MDNCMFwiOiBcIlxcdTAzQzVcXHUwMzA4XFx1MDMwMVwiLFxuICAvLyDOsCA9IFxcXCJcXCd7z4V9XG4gIFwiXFx1MUZFMlwiOiBcIlxcdTAzQzVcXHUwMzA4XFx1MDMwMFwiLFxuICAvLyDhv6IgPSBcXFwiXFxge8+FfVxuICBcIlxcdTFGRTFcIjogXCJcXHUwM0M1XFx1MDMwNFwiLFxuICAvLyDhv6EgPSBcXD17z4V9XG4gIFwiXFx1MUZFMFwiOiBcIlxcdTAzQzVcXHUwMzA2XCIsXG4gIC8vIOG/oCA9IFxcdXvPhX1cbiAgXCJcXHUwM0NFXCI6IFwiXFx1MDNDOVxcdTAzMDFcIixcbiAgLy8gz44gPSBcXCd7z4l9XG4gIFwiXFx1MUY3Q1wiOiBcIlxcdTAzQzlcXHUwMzAwXCIsXG4gIC8vIOG9vCA9IFxcYHvPiX1cbiAgXCJcXHUwMzhFXCI6IFwiXFx1MDNBNVxcdTAzMDFcIixcbiAgLy8gzo4gPSBcXCd7zqV9XG4gIFwiXFx1MUZFQVwiOiBcIlxcdTAzQTVcXHUwMzAwXCIsXG4gIC8vIOG/qiA9IFxcYHvOpX1cbiAgXCJcXHUwM0FCXCI6IFwiXFx1MDNBNVxcdTAzMDhcIixcbiAgLy8gzqsgPSBcXFwie86lfVxuICBcIlxcdTFGRTlcIjogXCJcXHUwM0E1XFx1MDMwNFwiLFxuICAvLyDhv6kgPSBcXD17zqV9XG4gIFwiXFx1MUZFOFwiOiBcIlxcdTAzQTVcXHUwMzA2XCIsXG4gIC8vIOG/qCA9IFxcdXvOpX1cbiAgXCJcXHUwMzhGXCI6IFwiXFx1MDNBOVxcdTAzMDFcIixcbiAgLy8gzo8gPSBcXCd7zql9XG4gIFwiXFx1MUZGQVwiOiBcIlxcdTAzQTlcXHUwMzAwXCIgLy8g4b+6ID0gXFxge86pfVxuXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL1BhcnNlci5qc1xuLyogZXNsaW50IG5vLWNvbnN0YW50LWNvbmRpdGlvbjowICovXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHBhcnNlciB1c2VkIHRvIHBhcnNlIG91dCBhIFRlWCBleHByZXNzaW9uIGZyb20gdGhlXG4gKiBpbnB1dC4gU2luY2UgVGVYIGlzbid0IGNvbnRleHQtZnJlZSwgc3RhbmRhcmQgcGFyc2VycyBkb24ndCB3b3JrIHBhcnRpY3VsYXJseVxuICogd2VsbC5cbiAqXG4gKiBUaGUgc3RyYXRlZ3kgb2YgdGhpcyBwYXJzZXIgaXMgYXMgc3VjaDpcbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbnMgKHRoZSBgLnBhcnNlLi4uYCBvbmVzKSB0YWtlIGEgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnRcbiAqIHBhcnNlIHN0cmluZyB0byBwYXJzZSB0b2tlbnMgZnJvbS4gVGhlIGxleGVyIChmb3VuZCBpbiBMZXhlci5qcywgc3RvcmVkIGF0XG4gKiB0aGlzLmd1bGxldC5sZXhlcikgYWxzbyBzdXBwb3J0cyBwdWxsaW5nIG91dCB0b2tlbnMgYXQgYXJiaXRyYXJ5IHBsYWNlcy4gV2hlblxuICogaW5kaXZpZHVhbCB0b2tlbnMgYXJlIG5lZWRlZCBhdCBhIHBvc2l0aW9uLCB0aGUgbGV4ZXIgaXMgY2FsbGVkIHRvIHB1bGwgb3V0IGFcbiAqIHRva2VuLCB3aGljaCBpcyB0aGVuIHVzZWQuXG4gKlxuICogVGhlIHBhcnNlciBoYXMgYSBwcm9wZXJ0eSBjYWxsZWQgXCJtb2RlXCIgaW5kaWNhdGluZyB0aGUgbW9kZSB0aGF0XG4gKiB0aGUgcGFyc2VyIGlzIGN1cnJlbnRseSBpbi4gQ3VycmVudGx5IGl0IGhhcyB0byBiZSBvbmUgb2YgXCJtYXRoXCIgb3JcbiAqIFwidGV4dFwiLCB3aGljaCBkZW5vdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYXRoLXlcbiAqIG9uZSBvciBhIHRleHQteSBvbmUgKGUuZy4gaW5zaWRlIFxcdGV4dCkuIEN1cnJlbnRseSwgdGhpcyBzZXJ2ZXMgdG9cbiAqIGxpbWl0IHRoZSBmdW5jdGlvbnMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGV4dCBtb2RlLlxuICpcbiAqIFRoZSBtYWluIGZ1bmN0aW9ucyB0aGVuIHJldHVybiBhbiBvYmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHVzZWZ1bCBkYXRhIHRoYXRcbiAqIHdhcyBwYXJzZWQgYXQgaXRzIGdpdmVuIHBvaW50LCBhbmQgYSBuZXcgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgcGFyc2VkXG4gKiBkYXRhLiBUaGUgbWFpbiBmdW5jdGlvbnMgY2FuIGNhbGwgZWFjaCBvdGhlciBhbmQgY29udGludWUgdGhlIHBhcnNpbmcgYnlcbiAqIHVzaW5nIHRoZSByZXR1cm5lZCBwb3NpdGlvbiBhcyBhIG5ldyBzdGFydGluZyBwb2ludC5cbiAqXG4gKiBUaGVyZSBhcmUgYWxzbyBleHRyYSBgLmhhbmRsZS4uLmAgZnVuY3Rpb25zLCB3aGljaCBwdWxsIG91dCBzb21lIHJldXNlZFxuICogZnVuY3Rpb25hbGl0eSBpbnRvIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9ucy5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIHJldHVybiBQYXJzZU5vZGVzLlxuICovXG52YXIgUGFyc2VyX1BhcnNlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhcnNlcihpbnB1dCwgc2V0dGluZ3MpIHtcbiAgICB0aGlzLm1vZGUgPSB2b2lkIDA7XG4gICAgdGhpcy5ndWxsZXQgPSB2b2lkIDA7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHZvaWQgMDtcbiAgICB0aGlzLmxlZnRyaWdodERlcHRoID0gdm9pZCAwO1xuICAgIHRoaXMubmV4dFRva2VuID0gdm9pZCAwO1xuICAgIC8vIFN0YXJ0IGluIG1hdGggbW9kZVxuICAgIHRoaXMubW9kZSA9IFwibWF0aFwiOyAvLyBDcmVhdGUgYSBuZXcgbWFjcm8gZXhwYW5kZXIgKGd1bGxldCkgYW5kIChpbmRpcmVjdGx5IHZpYSB0aGF0KSBhbHNvIGFcbiAgICAvLyBuZXcgbGV4ZXIgKG1vdXRoKSBmb3IgdGhpcyBwYXJzZXIgKHN0b21hY2gsIGluIHRoZSBsYW5ndWFnZSBvZiBUZVgpXG5cbiAgICB0aGlzLmd1bGxldCA9IG5ldyBNYWNyb0V4cGFuZGVyX01hY3JvRXhwYW5kZXIoaW5wdXQsIHNldHRpbmdzLCB0aGlzLm1vZGUpOyAvLyBTdG9yZSB0aGUgc2V0dGluZ3MgZm9yIHVzZSBpbiBwYXJzaW5nXG5cbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7IC8vIENvdW50IGxlZnRyaWdodCBkZXB0aCAoZm9yIFxcbWlkZGxlIGVycm9ycylcblxuICAgIHRoaXMubGVmdHJpZ2h0RGVwdGggPSAwO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgYSByZXN1bHQgdG8gbWFrZSBzdXJlIGl0IGhhcyB0aGUgcmlnaHQgdHlwZSwgYW5kIHRocm93cyBhblxuICAgKiBhcHByb3ByaWF0ZSBlcnJvciBvdGhlcndpc2UuXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IFBhcnNlci5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmV4cGVjdCA9IGZ1bmN0aW9uIGV4cGVjdCh0ZXh0LCBjb25zdW1lKSB7XG4gICAgaWYgKGNvbnN1bWUgPT09IHZvaWQgMCkge1xuICAgICAgY29uc3VtZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmV0Y2goKS50ZXh0ICE9PSB0ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFeHBlY3RlZCAnXCIgKyB0ZXh0ICsgXCInLCBnb3QgJ1wiICsgdGhpcy5mZXRjaCgpLnRleHQgKyBcIidcIiwgdGhpcy5mZXRjaCgpKTtcbiAgICB9XG5cbiAgICBpZiAoY29uc3VtZSkge1xuICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEaXNjYXJkcyB0aGUgY3VycmVudCBsb29rYWhlYWQgdG9rZW4sIGNvbnNpZGVyaW5nIGl0IGNvbnN1bWVkLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jb25zdW1lID0gZnVuY3Rpb24gY29uc3VtZSgpIHtcbiAgICB0aGlzLm5leHRUb2tlbiA9IG51bGw7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY3VycmVudCBsb29rYWhlYWQgdG9rZW4sIG9yIGlmIHRoZXJlIGlzbid0IG9uZSAoYXQgdGhlXG4gICAqIGJlZ2lubmluZywgb3IgaWYgdGhlIHByZXZpb3VzIGxvb2thaGVhZCB0b2tlbiB3YXMgY29uc3VtZSgpZCksXG4gICAqIGZldGNoIHRoZSBuZXh0IHRva2VuIGFzIHRoZSBuZXcgbG9va2FoZWFkIHRva2VuIGFuZCByZXR1cm4gaXQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmZldGNoID0gZnVuY3Rpb24gZmV0Y2goKSB7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuID09IG51bGwpIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gdGhpcy5ndWxsZXQuZXhwYW5kTmV4dFRva2VuKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG4gIC8qKlxuICAgKiBTd2l0Y2hlcyBiZXR3ZWVuIFwidGV4dFwiIGFuZCBcIm1hdGhcIiBtb2Rlcy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uc3dpdGNoTW9kZSA9IGZ1bmN0aW9uIHN3aXRjaE1vZGUobmV3TW9kZSkge1xuICAgIHRoaXMubW9kZSA9IG5ld01vZGU7XG4gICAgdGhpcy5ndWxsZXQuc3dpdGNoTW9kZShuZXdNb2RlKTtcbiAgfVxuICAvKipcbiAgICogTWFpbiBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBwYXJzZXMgYW4gZW50aXJlIGlucHV0LlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZSA9IGZ1bmN0aW9uIHBhcnNlKCkge1xuICAgIC8vIENyZWF0ZSBhIGdyb3VwIG5hbWVzcGFjZSBmb3IgdGhlIG1hdGggZXhwcmVzc2lvbi5cbiAgICAvLyAoTGFUZVggY3JlYXRlcyBhIG5ldyBncm91cCBmb3IgZXZlcnkgJC4uLiQsICQkLi4uJCQsIFxcWy4uLlxcXS4pXG4gICAgdGhpcy5ndWxsZXQuYmVnaW5Hcm91cCgpOyAvLyBVc2Ugb2xkIFxcY29sb3IgYmVoYXZpb3IgKHNhbWUgYXMgTGFUZVgncyBcXHRleHRjb2xvcikgaWYgcmVxdWVzdGVkLlxuICAgIC8vIFdlIGRvIHRoaXMgd2l0aGluIHRoZSBncm91cCBmb3IgdGhlIG1hdGggZXhwcmVzc2lvbiwgc28gaXQgZG9lc24ndFxuICAgIC8vIHBvbGx1dGUgc2V0dGluZ3MubWFjcm9zLlxuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuY29sb3JJc1RleHRDb2xvcikge1xuICAgICAgdGhpcy5ndWxsZXQubWFjcm9zLnNldChcIlxcXFxjb2xvclwiLCBcIlxcXFx0ZXh0Y29sb3JcIik7XG4gICAgfSAvLyBUcnkgdG8gcGFyc2UgdGhlIGlucHV0XG5cblxuICAgIHZhciBwYXJzZSA9IHRoaXMucGFyc2VFeHByZXNzaW9uKGZhbHNlKTsgLy8gSWYgd2Ugc3VjY2VlZGVkLCBtYWtlIHN1cmUgdGhlcmUncyBhbiBFT0YgYXQgdGhlIGVuZFxuXG4gICAgdGhpcy5leHBlY3QoXCJFT0ZcIik7IC8vIEVuZCB0aGUgZ3JvdXAgbmFtZXNwYWNlIGZvciB0aGUgZXhwcmVzc2lvblxuXG4gICAgdGhpcy5ndWxsZXQuZW5kR3JvdXAoKTtcbiAgICByZXR1cm4gcGFyc2U7XG4gIH07XG5cbiAgX3Byb3RvLnBhcnNlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihicmVha09uSW5maXgsIGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICB2YXIgYm9keSA9IFtdOyAvLyBLZWVwIGFkZGluZyBhdG9tcyB0byB0aGUgYm9keSB1bnRpbCB3ZSBjYW4ndCBwYXJzZSBhbnkgbW9yZSBhdG9tcyAoZWl0aGVyXG4gICAgLy8gd2UgcmVhY2hlZCB0aGUgZW5kLCBhIH0sIG9yIGEgXFxyaWdodClcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBJZ25vcmUgc3BhY2VzIGluIG1hdGggbW9kZVxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZXggPSB0aGlzLmZldGNoKCk7XG5cbiAgICAgIGlmIChQYXJzZXIuZW5kT2ZFeHByZXNzaW9uLmluZGV4T2YobGV4LnRleHQpICE9PSAtMSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGJyZWFrT25Ub2tlblRleHQgJiYgbGV4LnRleHQgPT09IGJyZWFrT25Ub2tlblRleHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmVha09uSW5maXggJiYgc3JjX2Z1bmN0aW9uc1tsZXgudGV4dF0gJiYgc3JjX2Z1bmN0aW9uc1tsZXgudGV4dF0uaW5maXgpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHZhciBhdG9tID0gdGhpcy5wYXJzZUF0b20oYnJlYWtPblRva2VuVGV4dCk7XG5cbiAgICAgIGlmICghYXRvbSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYm9keS5wdXNoKGF0b20pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGUgPT09IFwidGV4dFwiKSB7XG4gICAgICB0aGlzLmZvcm1MaWdhdHVyZXMoYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlSW5maXhOb2Rlcyhib2R5KTtcbiAgfVxuICAvKipcbiAgICogUmV3cml0ZXMgaW5maXggb3BlcmF0b3JzIHN1Y2ggYXMgXFxvdmVyIHdpdGggY29ycmVzcG9uZGluZyBjb21tYW5kcyBzdWNoXG4gICAqIGFzIFxcZnJhYy5cbiAgICpcbiAgICogVGhlcmUgY2FuIG9ubHkgYmUgb25lIGluZml4IG9wZXJhdG9yIHBlciBncm91cC4gIElmIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZVxuICAgKiB0aGVuIHRoZSBleHByZXNzaW9uIGlzIGFtYmlndW91cy4gIFRoaXMgY2FuIGJlIHJlc29sdmVkIGJ5IGFkZGluZyB7fS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uaGFuZGxlSW5maXhOb2RlcyA9IGZ1bmN0aW9uIGhhbmRsZUluZml4Tm9kZXMoYm9keSkge1xuICAgIHZhciBvdmVySW5kZXggPSAtMTtcbiAgICB2YXIgZnVuY05hbWU7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvZHkubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gY2hlY2tOb2RlVHlwZShib2R5W2ldLCBcImluZml4XCIpO1xuXG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBpZiAob3ZlckluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIm9ubHkgb25lIGluZml4IG9wZXJhdG9yIHBlciBncm91cFwiLCBub2RlLnRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG92ZXJJbmRleCA9IGk7XG4gICAgICAgIGZ1bmNOYW1lID0gbm9kZS5yZXBsYWNlV2l0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3ZlckluZGV4ICE9PSAtMSAmJiBmdW5jTmFtZSkge1xuICAgICAgdmFyIG51bWVyTm9kZTtcbiAgICAgIHZhciBkZW5vbU5vZGU7XG4gICAgICB2YXIgbnVtZXJCb2R5ID0gYm9keS5zbGljZSgwLCBvdmVySW5kZXgpO1xuICAgICAgdmFyIGRlbm9tQm9keSA9IGJvZHkuc2xpY2Uob3ZlckluZGV4ICsgMSk7XG5cbiAgICAgIGlmIChudW1lckJvZHkubGVuZ3RoID09PSAxICYmIG51bWVyQm9keVswXS50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgICAgbnVtZXJOb2RlID0gbnVtZXJCb2R5WzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbnVtZXJOb2RlID0ge1xuICAgICAgICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgYm9keTogbnVtZXJCb2R5XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChkZW5vbUJvZHkubGVuZ3RoID09PSAxICYmIGRlbm9tQm9keVswXS50eXBlID09PSBcIm9yZGdyb3VwXCIpIHtcbiAgICAgICAgZGVub21Ob2RlID0gZGVub21Cb2R5WzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVub21Ob2RlID0ge1xuICAgICAgICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgYm9keTogZGVub21Cb2R5XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciBfbm9kZTtcblxuICAgICAgaWYgKGZ1bmNOYW1lID09PSBcIlxcXFxcXFxcYWJvdmVmcmFjXCIpIHtcbiAgICAgICAgX25vZGUgPSB0aGlzLmNhbGxGdW5jdGlvbihmdW5jTmFtZSwgW251bWVyTm9kZSwgYm9keVtvdmVySW5kZXhdLCBkZW5vbU5vZGVdLCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbm9kZSA9IHRoaXMuY2FsbEZ1bmN0aW9uKGZ1bmNOYW1lLCBbbnVtZXJOb2RlLCBkZW5vbU5vZGVdLCBbXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbX25vZGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYm9keTtcbiAgICB9XG4gIH0gLy8gVGhlIGdyZWVkaW5lc3Mgb2YgYSBzdXBlcnNjcmlwdCBvciBzdWJzY3JpcHRcbiAgO1xuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBzdWJzY3JpcHQgb3Igc3VwZXJzY3JpcHQgd2l0aCBuaWNlIGVycm9ycy5cbiAgICovXG4gIF9wcm90by5oYW5kbGVTdXBTdWJzY3JpcHQgPSBmdW5jdGlvbiBoYW5kbGVTdXBTdWJzY3JpcHQobmFtZSkge1xuICAgIHZhciBzeW1ib2xUb2tlbiA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgc3ltYm9sID0gc3ltYm9sVG9rZW4udGV4dDtcbiAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLnBhcnNlR3JvdXAobmFtZSwgZmFsc2UsIFBhcnNlci5TVVBTVUJfR1JFRURJTkVTUywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpOyAvLyBpZ25vcmUgc3BhY2VzIGJlZm9yZSBzdXAvc3Vic2NyaXB0IGFyZ3VtZW50XG5cbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJFeHBlY3RlZCBncm91cCBhZnRlciAnXCIgKyBzeW1ib2wgKyBcIidcIiwgc3ltYm9sVG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cDtcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHRleHR1YWwgaW5wdXQgb2YgYW4gdW5zdXBwb3J0ZWQgY29tbWFuZCBpbnRvIGEgdGV4dCBub2RlXG4gICAqIGNvbnRhaW5lZCB3aXRoaW4gYSBjb2xvciBub2RlIHdob3NlIGNvbG9yIGlzIGRldGVybWluZWQgYnkgZXJyb3JDb2xvclxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5mb3JtYXRVbnN1cHBvcnRlZENtZCA9IGZ1bmN0aW9uIGZvcm1hdFVuc3VwcG9ydGVkQ21kKHRleHQpIHtcbiAgICB2YXIgdGV4dG9yZEFycmF5ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRleHRvcmRBcnJheS5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiB0ZXh0W2ldXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgdGV4dE5vZGUgPSB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIGJvZHk6IHRleHRvcmRBcnJheVxuICAgIH07XG4gICAgdmFyIGNvbG9yTm9kZSA9IHtcbiAgICAgIHR5cGU6IFwiY29sb3JcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIGNvbG9yOiB0aGlzLnNldHRpbmdzLmVycm9yQ29sb3IsXG4gICAgICBib2R5OiBbdGV4dE5vZGVdXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JOb2RlO1xuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSBncm91cCB3aXRoIG9wdGlvbmFsIHN1cGVyL3N1YnNjcmlwdHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlQXRvbSA9IGZ1bmN0aW9uIHBhcnNlQXRvbShicmVha09uVG9rZW5UZXh0KSB7XG4gICAgLy8gVGhlIGJvZHkgb2YgYW4gYXRvbSBpcyBhbiBpbXBsaWNpdCBncm91cCwgc28gdGhhdCB0aGluZ3MgbGlrZVxuICAgIC8vIFxcbGVmdCh4XFxyaWdodCleMiB3b3JrIGNvcnJlY3RseS5cbiAgICB2YXIgYmFzZSA9IHRoaXMucGFyc2VHcm91cChcImF0b21cIiwgZmFsc2UsIG51bGwsIGJyZWFrT25Ub2tlblRleHQpOyAvLyBJbiB0ZXh0IG1vZGUsIHdlIGRvbid0IGhhdmUgc3VwZXJzY3JpcHRzIG9yIHN1YnNjcmlwdHNcblxuICAgIGlmICh0aGlzLm1vZGUgPT09IFwidGV4dFwiKSB7XG4gICAgICByZXR1cm4gYmFzZTtcbiAgICB9IC8vIE5vdGUgdGhhdCBiYXNlIG1heSBiZSBlbXB0eSAoaS5lLiBudWxsKSBhdCB0aGlzIHBvaW50LlxuXG5cbiAgICB2YXIgc3VwZXJzY3JpcHQ7XG4gICAgdmFyIHN1YnNjcmlwdDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBHdWFyYW50ZWVkIGluIG1hdGggbW9kZSwgc28gZWF0IGFueSBzcGFjZXMgZmlyc3QuXG4gICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTsgLy8gTGV4IHRoZSBmaXJzdCB0b2tlblxuXG4gICAgICB2YXIgbGV4ID0gdGhpcy5mZXRjaCgpO1xuXG4gICAgICBpZiAobGV4LnRleHQgPT09IFwiXFxcXGxpbWl0c1wiIHx8IGxleC50ZXh0ID09PSBcIlxcXFxub2xpbWl0c1wiKSB7XG4gICAgICAgIC8vIFdlIGdvdCBhIGxpbWl0IGNvbnRyb2xcbiAgICAgICAgdmFyIG9wTm9kZSA9IGNoZWNrTm9kZVR5cGUoYmFzZSwgXCJvcFwiKTtcblxuICAgICAgICBpZiAob3BOb2RlKSB7XG4gICAgICAgICAgdmFyIGxpbWl0cyA9IGxleC50ZXh0ID09PSBcIlxcXFxsaW1pdHNcIjtcbiAgICAgICAgICBvcE5vZGUubGltaXRzID0gbGltaXRzO1xuICAgICAgICAgIG9wTm9kZS5hbHdheXNIYW5kbGVTdXBTdWIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wTm9kZSA9IGNoZWNrTm9kZVR5cGUoYmFzZSwgXCJvcGVyYXRvcm5hbWVcIik7XG5cbiAgICAgICAgICBpZiAob3BOb2RlICYmIG9wTm9kZS5hbHdheXNIYW5kbGVTdXBTdWIpIHtcbiAgICAgICAgICAgIHZhciBfbGltaXRzID0gbGV4LnRleHQgPT09IFwiXFxcXGxpbWl0c1wiO1xuXG4gICAgICAgICAgICBvcE5vZGUubGltaXRzID0gX2xpbWl0cztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiTGltaXQgY29udHJvbHMgbXVzdCBmb2xsb3cgYSBtYXRoIG9wZXJhdG9yXCIsIGxleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2UgaWYgKGxleC50ZXh0ID09PSBcIl5cIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBzdXBlcnNjcmlwdCBzdGFydFxuICAgICAgICBpZiAoc3VwZXJzY3JpcHQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJEb3VibGUgc3VwZXJzY3JpcHRcIiwgbGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyc2NyaXB0ID0gdGhpcy5oYW5kbGVTdXBTdWJzY3JpcHQoXCJzdXBlcnNjcmlwdFwiKTtcbiAgICAgIH0gZWxzZSBpZiAobGV4LnRleHQgPT09IFwiX1wiKSB7XG4gICAgICAgIC8vIFdlIGdvdCBhIHN1YnNjcmlwdCBzdGFydFxuICAgICAgICBpZiAoc3Vic2NyaXB0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRG91YmxlIHN1YnNjcmlwdFwiLCBsZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3Vic2NyaXB0ID0gdGhpcy5oYW5kbGVTdXBTdWJzY3JpcHQoXCJzdWJzY3JpcHRcIik7XG4gICAgICB9IGVsc2UgaWYgKGxleC50ZXh0ID09PSBcIidcIikge1xuICAgICAgICAvLyBXZSBnb3QgYSBwcmltZVxuICAgICAgICBpZiAoc3VwZXJzY3JpcHQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJEb3VibGUgc3VwZXJzY3JpcHRcIiwgbGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwcmltZSA9IHtcbiAgICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgdGV4dDogXCJcXFxccHJpbWVcIlxuICAgICAgICB9OyAvLyBNYW55IHByaW1lcyBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlciwgc28gd2UgaGFuZGxlIHRoaXMgaGVyZVxuXG4gICAgICAgIHZhciBwcmltZXMgPSBbcHJpbWVdO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTsgLy8gS2VlcCBsZXhpbmcgdG9rZW5zIHVudGlsIHdlIGdldCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhIHByaW1lXG5cbiAgICAgICAgd2hpbGUgKHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIidcIikge1xuICAgICAgICAgIC8vIEZvciBlYWNoIG9uZSwgYWRkIGFub3RoZXIgcHJpbWUgdG8gdGhlIGxpc3RcbiAgICAgICAgICBwcmltZXMucHVzaChwcmltZSk7XG4gICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIH0gLy8gSWYgdGhlcmUncyBhIHN1cGVyc2NyaXB0IGZvbGxvd2luZyB0aGUgcHJpbWVzLCBjb21iaW5lIHRoYXRcbiAgICAgICAgLy8gc3VwZXJzY3JpcHQgaW4gd2l0aCB0aGUgcHJpbWVzLlxuXG5cbiAgICAgICAgaWYgKHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIl5cIikge1xuICAgICAgICAgIHByaW1lcy5wdXNoKHRoaXMuaGFuZGxlU3VwU3Vic2NyaXB0KFwic3VwZXJzY3JpcHRcIikpO1xuICAgICAgICB9IC8vIFB1dCBldmVyeXRoaW5nIGludG8gYW4gb3JkZ3JvdXAgYXMgdGhlIHN1cGVyc2NyaXB0XG5cblxuICAgICAgICBzdXBlcnNjcmlwdCA9IHtcbiAgICAgICAgICB0eXBlOiBcIm9yZGdyb3VwXCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGJvZHk6IHByaW1lc1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgaXQgd2Fzbid0IF4sIF8sIG9yICcsIHN0b3AgcGFyc2luZyBzdXBlci9zdWJzY3JpcHRzXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gQmFzZSBtdXN0IGJlIHNldCBpZiBzdXBlcnNjcmlwdCBvciBzdWJzY3JpcHQgYXJlIHNldCBwZXIgbG9naWMgYWJvdmUsXG4gICAgLy8gYnV0IG5lZWQgdG8gY2hlY2sgaGVyZSBmb3IgdHlwZSBjaGVjayB0byBwYXNzLlxuXG5cbiAgICBpZiAoc3VwZXJzY3JpcHQgfHwgc3Vic2NyaXB0KSB7XG4gICAgICAvLyBJZiB3ZSBnb3QgZWl0aGVyIGEgc3VwZXJzY3JpcHQgb3Igc3Vic2NyaXB0LCBjcmVhdGUgYSBzdXBzdWJcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3Vwc3ViXCIsXG4gICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgYmFzZTogYmFzZSxcbiAgICAgICAgc3VwOiBzdXBlcnNjcmlwdCxcbiAgICAgICAgc3ViOiBzdWJzY3JpcHRcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSByZXR1cm4gdGhlIG9yaWdpbmFsIGJvZHlcbiAgICAgIHJldHVybiBiYXNlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGFuIGVudGlyZSBmdW5jdGlvbiwgaW5jbHVkaW5nIGl0cyBiYXNlIGFuZCBhbGwgb2YgaXRzIGFyZ3VtZW50cy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VGdW5jdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb24oYnJlYWtPblRva2VuVGV4dCwgbmFtZSwgLy8gRm9yIGVycm9yIHJlcG9ydGluZy5cbiAgZ3JlZWRpbmVzcykge1xuICAgIHZhciB0b2tlbiA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgZnVuYyA9IHRva2VuLnRleHQ7XG4gICAgdmFyIGZ1bmNEYXRhID0gc3JjX2Z1bmN0aW9uc1tmdW5jXTtcblxuICAgIGlmICghZnVuY0RhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuY29uc3VtZSgpOyAvLyBjb25zdW1lIGNvbW1hbmQgdG9rZW5cblxuICAgIGlmIChncmVlZGluZXNzICE9IG51bGwgJiYgZnVuY0RhdGEuZ3JlZWRpbmVzcyA8PSBncmVlZGluZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJHb3QgZnVuY3Rpb24gJ1wiICsgZnVuYyArIFwiJyB3aXRoIG5vIGFyZ3VtZW50c1wiICsgKG5hbWUgPyBcIiBhcyBcIiArIG5hbWUgOiBcIlwiKSwgdG9rZW4pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBcInRleHRcIiAmJiAhZnVuY0RhdGEuYWxsb3dlZEluVGV4dCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiQ2FuJ3QgdXNlIGZ1bmN0aW9uICdcIiArIGZ1bmMgKyBcIicgaW4gdGV4dCBtb2RlXCIsIHRva2VuKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gXCJtYXRoXCIgJiYgZnVuY0RhdGEuYWxsb3dlZEluTWF0aCA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkNhbid0IHVzZSBmdW5jdGlvbiAnXCIgKyBmdW5jICsgXCInIGluIG1hdGggbW9kZVwiLCB0b2tlbik7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHBhcnNlQXJndW1lbnRzID0gdGhpcy5wYXJzZUFyZ3VtZW50cyhmdW5jLCBmdW5jRGF0YSksXG4gICAgICAgIGFyZ3MgPSBfdGhpcyRwYXJzZUFyZ3VtZW50cy5hcmdzLFxuICAgICAgICBvcHRBcmdzID0gX3RoaXMkcGFyc2VBcmd1bWVudHMub3B0QXJncztcblxuICAgIHJldHVybiB0aGlzLmNhbGxGdW5jdGlvbihmdW5jLCBhcmdzLCBvcHRBcmdzLCB0b2tlbiwgYnJlYWtPblRva2VuVGV4dCk7XG4gIH1cbiAgLyoqXG4gICAqIENhbGwgYSBmdW5jdGlvbiBoYW5kbGVyIHdpdGggYSBzdWl0YWJsZSBjb250ZXh0IGFuZCBhcmd1bWVudHMuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmNhbGxGdW5jdGlvbiA9IGZ1bmN0aW9uIGNhbGxGdW5jdGlvbihuYW1lLCBhcmdzLCBvcHRBcmdzLCB0b2tlbiwgYnJlYWtPblRva2VuVGV4dCkge1xuICAgIHZhciBjb250ZXh0ID0ge1xuICAgICAgZnVuY05hbWU6IG5hbWUsXG4gICAgICBwYXJzZXI6IHRoaXMsXG4gICAgICB0b2tlbjogdG9rZW4sXG4gICAgICBicmVha09uVG9rZW5UZXh0OiBicmVha09uVG9rZW5UZXh0XG4gICAgfTtcbiAgICB2YXIgZnVuYyA9IHNyY19mdW5jdGlvbnNbbmFtZV07XG5cbiAgICBpZiAoZnVuYyAmJiBmdW5jLmhhbmRsZXIpIHtcbiAgICAgIHJldHVybiBmdW5jLmhhbmRsZXIoY29udGV4dCwgYXJncywgb3B0QXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIk5vIGZ1bmN0aW9uIGhhbmRsZXIgZm9yIFwiICsgbmFtZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGFyZ3VtZW50cyBvZiBhIGZ1bmN0aW9uIG9yIGVudmlyb25tZW50XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlQXJndW1lbnRzID0gZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoZnVuYywgLy8gU2hvdWxkIGxvb2sgbGlrZSBcIlxcbmFtZVwiIG9yIFwiXFxiZWdpbntuYW1lfVwiLlxuICBmdW5jRGF0YSkge1xuICAgIHZhciB0b3RhbEFyZ3MgPSBmdW5jRGF0YS5udW1BcmdzICsgZnVuY0RhdGEubnVtT3B0aW9uYWxBcmdzO1xuXG4gICAgaWYgKHRvdGFsQXJncyA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczogW10sXG4gICAgICAgIG9wdEFyZ3M6IFtdXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBiYXNlR3JlZWRpbmVzcyA9IGZ1bmNEYXRhLmdyZWVkaW5lc3M7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICB2YXIgb3B0QXJncyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbEFyZ3M7IGkrKykge1xuICAgICAgdmFyIGFyZ1R5cGUgPSBmdW5jRGF0YS5hcmdUeXBlcyAmJiBmdW5jRGF0YS5hcmdUeXBlc1tpXTtcbiAgICAgIHZhciBpc09wdGlvbmFsID0gaSA8IGZ1bmNEYXRhLm51bU9wdGlvbmFsQXJnczsgLy8gSWdub3JlIHNwYWNlcyBiZXR3ZWVuIGFyZ3VtZW50cy4gIEFzIHRoZSBUZVhib29rIHNheXM6XG4gICAgICAvLyBcIkFmdGVyIHlvdSBoYXZlIHNhaWQg4oCYXFxkZWZcXHJvdyMxIzJ7Li4ufeKAmSwgeW91IGFyZSBhbGxvd2VkIHRvXG4gICAgICAvLyAgcHV0IHNwYWNlcyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgKGUuZy4sIOKAmFxccm93IHggbuKAmSksIGJlY2F1c2VcbiAgICAgIC8vICBUZVggZG9lc27igJl0IHVzZSBzaW5nbGUgc3BhY2VzIGFzIHVuZGVsaW1pdGVkIGFyZ3VtZW50cy5cIlxuXG4gICAgICB2YXIgY29uc3VtZVNwYWNlcyA9IGkgPiAwICYmICFpc09wdGlvbmFsIHx8IC8vIEFsc28gY29uc3VtZSBsZWFkaW5nIHNwYWNlcyBpbiBtYXRoIG1vZGUsIGFzIHBhcnNlU3ltYm9sXG4gICAgICAvLyB3b24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCB0aGVtLiAgVGhpcyBjYW4gb25seSBoYXBwZW4gd2l0aFxuICAgICAgLy8gbWFjcm9zLCBlLmcuIFxcZnJhY1xcZm9vXFxmb28gd2hlcmUgXFxmb28gZXhwYW5kcyB0byBhIHNwYWNlIHN5bWJvbC5cbiAgICAgIC8vIEluIExhVGVYLCB0aGUgXFxmb28ncyBnZXQgdHJlYXRlZCBhcyAoYmxhbmspIGFyZ3VtZW50cy5cbiAgICAgIC8vIEluIEthVGVYLCBmb3Igbm93LCBib3RoIHNwYWNlcyB3aWxsIGdldCBjb25zdW1lZC5cbiAgICAgIC8vIFRPRE8oZWRlbWFpbmUpXG4gICAgICBpID09PSAwICYmICFpc09wdGlvbmFsICYmIHRoaXMubW9kZSA9PT0gXCJtYXRoXCI7XG4gICAgICB2YXIgYXJnID0gdGhpcy5wYXJzZUdyb3VwT2ZUeXBlKFwiYXJndW1lbnQgdG8gJ1wiICsgZnVuYyArIFwiJ1wiLCBhcmdUeXBlLCBpc09wdGlvbmFsLCBiYXNlR3JlZWRpbmVzcywgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGlmICghYXJnKSB7XG4gICAgICAgIGlmIChpc09wdGlvbmFsKSB7XG4gICAgICAgICAgb3B0QXJncy5wdXNoKG51bGwpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgZ3JvdXAgYWZ0ZXIgJ1wiICsgZnVuYyArIFwiJ1wiLCB0aGlzLmZldGNoKCkpO1xuICAgICAgfVxuXG4gICAgICAoaXNPcHRpb25hbCA/IG9wdEFyZ3MgOiBhcmdzKS5wdXNoKGFyZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICBvcHRBcmdzOiBvcHRBcmdzXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgZ3JvdXAgd2hlbiB0aGUgbW9kZSBpcyBjaGFuZ2luZy5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VHcm91cE9mVHlwZSA9IGZ1bmN0aW9uIHBhcnNlR3JvdXBPZlR5cGUobmFtZSwgdHlwZSwgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIGNvbnN1bWVTcGFjZXMpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJjb2xvclwiOlxuICAgICAgICBpZiAoY29uc3VtZVNwYWNlcykge1xuICAgICAgICAgIHRoaXMuY29uc3VtZVNwYWNlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDb2xvckdyb3VwKG9wdGlvbmFsKTtcblxuICAgICAgY2FzZSBcInNpemVcIjpcbiAgICAgICAgaWYgKGNvbnN1bWVTcGFjZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlU2l6ZUdyb3VwKG9wdGlvbmFsKTtcblxuICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVVybEdyb3VwKG9wdGlvbmFsLCBjb25zdW1lU3BhY2VzKTtcblxuICAgICAgY2FzZSBcIm1hdGhcIjpcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlR3JvdXAobmFtZSwgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIHVuZGVmaW5lZCwgdHlwZSwgY29uc3VtZVNwYWNlcyk7XG5cbiAgICAgIGNhc2UgXCJoYm94XCI6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBoYm94IGFyZ3VtZW50IHR5cGUgd3JhcHMgdGhlIGFyZ3VtZW50IGluIHRoZSBlcXVpdmFsZW50IG9mXG4gICAgICAgICAgLy8gXFxoYm94LCB3aGljaCBpcyBsaWtlIFxcdGV4dCBidXQgc3dpdGNoaW5nIHRvIFxcdGV4dHN0eWxlIHNpemUuXG4gICAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5wYXJzZUdyb3VwKG5hbWUsIG9wdGlvbmFsLCBncmVlZGluZXNzLCB1bmRlZmluZWQsIFwidGV4dFwiLCBjb25zdW1lU3BhY2VzKTtcblxuICAgICAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3R5bGVkR3JvdXAgPSB7XG4gICAgICAgICAgICB0eXBlOiBcInN0eWxpbmdcIixcbiAgICAgICAgICAgIG1vZGU6IGdyb3VwLm1vZGUsXG4gICAgICAgICAgICBib2R5OiBbZ3JvdXBdLFxuICAgICAgICAgICAgc3R5bGU6IFwidGV4dFwiIC8vIHNpbXVsYXRlIFxcdGV4dHN0eWxlXG5cbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBzdHlsZWRHcm91cDtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwicmF3XCI6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoY29uc3VtZVNwYWNlcykge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lU3BhY2VzKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG9wdGlvbmFsICYmIHRoaXMuZmV0Y2goKS50ZXh0ID09PSBcIntcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHRva2VuID0gdGhpcy5wYXJzZVN0cmluZ0dyb3VwKFwicmF3XCIsIG9wdGlvbmFsLCB0cnVlKTtcblxuICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJyYXdcIixcbiAgICAgICAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHN0cmluZzogdG9rZW4udGV4dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiRXhwZWN0ZWQgcmF3IGdyb3VwXCIsIHRoaXMuZmV0Y2goKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgXCJvcmlnaW5hbFwiOlxuICAgICAgY2FzZSBudWxsOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlR3JvdXAobmFtZSwgb3B0aW9uYWwsIGdyZWVkaW5lc3MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb25zdW1lU3BhY2VzKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiVW5rbm93biBncm91cCB0eXBlIGFzIFwiICsgbmFtZSwgdGhpcy5mZXRjaCgpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIERpc2NhcmQgYW55IHNwYWNlIHRva2VucywgZmV0Y2hpbmcgdGhlIG5leHQgbm9uLXNwYWNlIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5jb25zdW1lU3BhY2VzID0gZnVuY3Rpb24gY29uc3VtZVNwYWNlcygpIHtcbiAgICB3aGlsZSAodGhpcy5mZXRjaCgpLnRleHQgPT09IFwiIFwiKSB7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIGdyb3VwLCBlc3NlbnRpYWxseSByZXR1cm5pbmcgdGhlIHN0cmluZyBmb3JtZWQgYnkgdGhlXG4gICAqIGJyYWNlLWVuY2xvc2VkIHRva2VucyBwbHVzIHNvbWUgcG9zaXRpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlU3RyaW5nR3JvdXAgPSBmdW5jdGlvbiBwYXJzZVN0cmluZ0dyb3VwKG1vZGVOYW1lLCAvLyBVc2VkIHRvIGRlc2NyaWJlIHRoZSBtb2RlIGluIGVycm9yIG1lc3NhZ2VzLlxuICBvcHRpb25hbCwgcmF3KSB7XG4gICAgdmFyIGdyb3VwQmVnaW4gPSBvcHRpb25hbCA/IFwiW1wiIDogXCJ7XCI7XG4gICAgdmFyIGdyb3VwRW5kID0gb3B0aW9uYWwgPyBcIl1cIiA6IFwifVwiO1xuICAgIHZhciBiZWdpblRva2VuID0gdGhpcy5mZXRjaCgpO1xuXG4gICAgaWYgKGJlZ2luVG9rZW4udGV4dCAhPT0gZ3JvdXBCZWdpbikge1xuICAgICAgaWYgKG9wdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChyYXcgJiYgYmVnaW5Ub2tlbi50ZXh0ICE9PSBcIkVPRlwiICYmIC9bXnt9W1xcXV0vLnRlc3QoYmVnaW5Ub2tlbi50ZXh0KSkge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgcmV0dXJuIGJlZ2luVG9rZW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG91dGVyTW9kZSA9IHRoaXMubW9kZTtcbiAgICB0aGlzLm1vZGUgPSBcInRleHRcIjtcbiAgICB0aGlzLmV4cGVjdChncm91cEJlZ2luKTtcbiAgICB2YXIgc3RyID0gXCJcIjtcbiAgICB2YXIgZmlyc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgbmVzdGVkID0gMDsgLy8gYWxsb3cgbmVzdGVkIGJyYWNlcyBpbiByYXcgc3RyaW5nIGdyb3VwXG5cbiAgICB2YXIgbGFzdFRva2VuID0gZmlyc3RUb2tlbjtcbiAgICB2YXIgbmV4dFRva2VuO1xuXG4gICAgd2hpbGUgKChuZXh0VG9rZW4gPSB0aGlzLmZldGNoKCkpLnRleHQgIT09IGdyb3VwRW5kIHx8IHJhdyAmJiBuZXN0ZWQgPiAwKSB7XG4gICAgICBzd2l0Y2ggKG5leHRUb2tlbi50ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJFT0ZcIjpcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBpbiBcIiArIG1vZGVOYW1lLCBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKSk7XG5cbiAgICAgICAgY2FzZSBncm91cEJlZ2luOlxuICAgICAgICAgIG5lc3RlZCsrO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgZ3JvdXBFbmQ6XG4gICAgICAgICAgbmVzdGVkLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGxhc3RUb2tlbiA9IG5leHRUb2tlbjtcbiAgICAgIHN0ciArPSBsYXN0VG9rZW4udGV4dDtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZXhwZWN0KGdyb3VwRW5kKTtcbiAgICB0aGlzLm1vZGUgPSBvdXRlck1vZGU7XG4gICAgcmV0dXJuIGZpcnN0VG9rZW4ucmFuZ2UobGFzdFRva2VuLCBzdHIpO1xuICB9XG4gIC8qKlxuICAgKiBQYXJzZXMgYSByZWdleC1kZWxpbWl0ZWQgZ3JvdXA6IHRoZSBsYXJnZXN0IHNlcXVlbmNlIG9mIHRva2Vuc1xuICAgKiB3aG9zZSBjb25jYXRlbmF0ZWQgc3RyaW5ncyBtYXRjaCBgcmVnZXhgLiBSZXR1cm5zIHRoZSBzdHJpbmdcbiAgICogZm9ybWVkIGJ5IHRoZSB0b2tlbnMgcGx1cyBzb21lIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVJlZ2V4R3JvdXAgPSBmdW5jdGlvbiBwYXJzZVJlZ2V4R3JvdXAocmVnZXgsIG1vZGVOYW1lKSB7XG4gICAgdmFyIG91dGVyTW9kZSA9IHRoaXMubW9kZTtcbiAgICB0aGlzLm1vZGUgPSBcInRleHRcIjtcbiAgICB2YXIgZmlyc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgbGFzdFRva2VuID0gZmlyc3RUb2tlbjtcbiAgICB2YXIgc3RyID0gXCJcIjtcbiAgICB2YXIgbmV4dFRva2VuO1xuXG4gICAgd2hpbGUgKChuZXh0VG9rZW4gPSB0aGlzLmZldGNoKCkpLnRleHQgIT09IFwiRU9GXCIgJiYgcmVnZXgudGVzdChzdHIgKyBuZXh0VG9rZW4udGV4dCkpIHtcbiAgICAgIGxhc3RUb2tlbiA9IG5leHRUb2tlbjtcbiAgICAgIHN0ciArPSBsYXN0VG9rZW4udGV4dDtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgIH1cblxuICAgIGlmIChzdHIgPT09IFwiXCIpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgXCIgKyBtb2RlTmFtZSArIFwiOiAnXCIgKyBmaXJzdFRva2VuLnRleHQgKyBcIidcIiwgZmlyc3RUb2tlbik7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RlID0gb3V0ZXJNb2RlO1xuICAgIHJldHVybiBmaXJzdFRva2VuLnJhbmdlKGxhc3RUb2tlbiwgc3RyKTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGEgY29sb3IgZGVzY3JpcHRpb24uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlQ29sb3JHcm91cCA9IGZ1bmN0aW9uIHBhcnNlQ29sb3JHcm91cChvcHRpb25hbCkge1xuICAgIHZhciByZXMgPSB0aGlzLnBhcnNlU3RyaW5nR3JvdXAoXCJjb2xvclwiLCBvcHRpb25hbCk7XG5cbiAgICBpZiAoIXJlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gL14oI1thLWYwLTldezN9fCM/W2EtZjAtOV17Nn18W2Etel0rKSQvaS5leGVjKHJlcy50ZXh0KTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgY29sb3I6ICdcIiArIHJlcy50ZXh0ICsgXCInXCIsIHJlcyk7XG4gICAgfVxuXG4gICAgdmFyIGNvbG9yID0gbWF0Y2hbMF07XG5cbiAgICBpZiAoL15bMC05YS1mXXs2fSQvaS50ZXN0KGNvbG9yKSkge1xuICAgICAgLy8gV2UgYWxsb3cgYSA2LWRpZ2l0IEhUTUwgY29sb3Igc3BlYyB3aXRob3V0IGEgbGVhZGluZyBcIiNcIi5cbiAgICAgIC8vIFRoaXMgZm9sbG93cyB0aGUgeGNvbG9yIHBhY2thZ2UncyBIVE1MIGNvbG9yIG1vZGVsLlxuICAgICAgLy8gUHJlZGVmaW5lZCBjb2xvciBuYW1lcyBhcmUgYWxsIG1pc3NlZCBieSB0aGlzIFJlZ0V4IHBhdHRlcm4uXG4gICAgICBjb2xvciA9IFwiI1wiICsgY29sb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29sb3ItdG9rZW5cIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIGNvbG9yOiBjb2xvclxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFBhcnNlcyBhIHNpemUgc3BlY2lmaWNhdGlvbiwgY29uc2lzdGluZyBvZiBtYWduaXR1ZGUgYW5kIHVuaXQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlU2l6ZUdyb3VwID0gZnVuY3Rpb24gcGFyc2VTaXplR3JvdXAob3B0aW9uYWwpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBpc0JsYW5rID0gZmFsc2U7XG5cbiAgICBpZiAoIW9wdGlvbmFsICYmIHRoaXMuZmV0Y2goKS50ZXh0ICE9PSBcIntcIikge1xuICAgICAgcmVzID0gdGhpcy5wYXJzZVJlZ2V4R3JvdXAoL15bLStdPyAqKD86JHxcXGQrfFxcZCtcXC5cXGQqfFxcLlxcZCopICpbYS16XXswLDJ9ICokLywgXCJzaXplXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB0aGlzLnBhcnNlU3RyaW5nR3JvdXAoXCJzaXplXCIsIG9wdGlvbmFsKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25hbCAmJiByZXMudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIEJlY2F1c2Ugd2UndmUgdGVzdGVkIGZvciB3aGF0IGlzICFvcHRpb25hbCwgdGhpcyBibG9jayB3b24ndFxuICAgICAgLy8gYWZmZWN0IFxca2VybiwgXFxoc3BhY2UsIGV0Yy4gSXQgd2lsbCBjYXB0dXJlIHRoZSBtYW5kYXRvcnkgYXJndW1lbnRzXG4gICAgICAvLyB0byBcXGdlbmZyYWMgYW5kIFxcYWJvdmUuXG4gICAgICByZXMudGV4dCA9IFwiMHB0XCI7IC8vIEVuYWJsZSBcXGFib3Zle31cblxuICAgICAgaXNCbGFuayA9IHRydWU7IC8vIFRoaXMgaXMgaGVyZSBzcGVjaWZpY2FsbHkgZm9yIFxcZ2VuZnJhY1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IC8oWy0rXT8pICooXFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSAqKFthLXpdezJ9KS8uZXhlYyhyZXMudGV4dCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJJbnZhbGlkIHNpemU6ICdcIiArIHJlcy50ZXh0ICsgXCInXCIsIHJlcyk7XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBudW1iZXI6ICsobWF0Y2hbMV0gKyBtYXRjaFsyXSksXG4gICAgICAvLyBzaWduICsgbWFnbml0dWRlLCBjYXN0IHRvIG51bWJlclxuICAgICAgdW5pdDogbWF0Y2hbM11cbiAgICB9O1xuXG4gICAgaWYgKCF2YWxpZFVuaXQoZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIkludmFsaWQgdW5pdDogJ1wiICsgZGF0YS51bml0ICsgXCInXCIsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic2l6ZVwiLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICBpc0JsYW5rOiBpc0JsYW5rXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogUGFyc2VzIGFuIFVSTCwgY2hlY2tpbmcgZXNjYXBlZCBsZXR0ZXJzIGFuZCBhbGxvd2VkIHByb3RvY29scyxcbiAgICogYW5kIHNldHRpbmcgdGhlIGNhdGNvZGUgb2YgJSBhcyBhbiBhY3RpdmUgY2hhcmFjdGVyIChhcyBpbiBcXGh5cGVycmVmKS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VVcmxHcm91cCA9IGZ1bmN0aW9uIHBhcnNlVXJsR3JvdXAob3B0aW9uYWwsIGNvbnN1bWVTcGFjZXMpIHtcbiAgICB0aGlzLmd1bGxldC5sZXhlci5zZXRDYXRjb2RlKFwiJVwiLCAxMyk7IC8vIGFjdGl2ZSBjaGFyYWN0ZXJcblxuICAgIHZhciByZXMgPSB0aGlzLnBhcnNlU3RyaW5nR3JvdXAoXCJ1cmxcIiwgb3B0aW9uYWwsIHRydWUpOyAvLyBnZXQgcmF3IHN0cmluZ1xuXG4gICAgdGhpcy5ndWxsZXQubGV4ZXIuc2V0Q2F0Y29kZShcIiVcIiwgMTQpOyAvLyBjb21tZW50IGNoYXJhY3RlclxuXG4gICAgaWYgKCFyZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gaHlwZXJyZWYgcGFja2FnZSBhbGxvd3MgYmFja3NsYXNoZXMgYWxvbmUgaW4gaHJlZiwgYnV0IGRvZXNuJ3RcbiAgICAvLyBnZW5lcmF0ZSB2YWxpZCBsaW5rcyBpbiBzdWNoIGNhc2VzOyB3ZSBpbnRlcnByZXQgdGhpcyBhc1xuICAgIC8vIFwidW5kZWZpbmVkXCIgYmVoYXZpb3VyLCBhbmQga2VlcCB0aGVtIGFzLWlzLiBTb21lIGJyb3dzZXIgd2lsbFxuICAgIC8vIHJlcGxhY2UgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG5cblxuICAgIHZhciB1cmwgPSByZXMudGV4dC5yZXBsYWNlKC9cXFxcKFsjJCUmfl9ee31dKS9nLCAnJDEnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1cmxcIixcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIHVybDogdXJsXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogSWYgYG9wdGlvbmFsYCBpcyBmYWxzZSBvciBhYnNlbnQsIHRoaXMgcGFyc2VzIGFuIG9yZGluYXJ5IGdyb3VwLFxuICAgKiB3aGljaCBpcyBlaXRoZXIgYSBzaW5nbGUgbnVjbGV1cyAobGlrZSBcInhcIikgb3IgYW4gZXhwcmVzc2lvblxuICAgKiBpbiBicmFjZXMgKGxpa2UgXCJ7eCt5fVwiKSBvciBhbiBpbXBsaWNpdCBncm91cCwgYSBncm91cCB0aGF0IHN0YXJ0c1xuICAgKiBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiwgYW5kIGVuZHMgcmlnaHQgYmVmb3JlIGEgaGlnaGVyIGV4cGxpY2l0XG4gICAqIGdyb3VwIGVuZHMsIG9yIGF0IEVPRi5cbiAgICogSWYgYG9wdGlvbmFsYCBpcyB0cnVlLCBpdCBwYXJzZXMgZWl0aGVyIGEgYnJhY2tldC1kZWxpbWl0ZWQgZXhwcmVzc2lvblxuICAgKiAobGlrZSBcIlt4K3ldXCIpIG9yIHJldHVybnMgbnVsbCB0byBpbmRpY2F0ZSB0aGUgYWJzZW5jZSBvZiBhXG4gICAqIGJyYWNrZXQtZW5jbG9zZWQgZ3JvdXAuXG4gICAqIElmIGBtb2RlYCBpcyBwcmVzZW50LCBzd2l0Y2hlcyB0byB0aGF0IG1vZGUgd2hpbGUgcGFyc2luZyB0aGUgZ3JvdXAsXG4gICAqIGFuZCBzd2l0Y2hlcyBiYWNrIGFmdGVyLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUdyb3VwID0gZnVuY3Rpb24gcGFyc2VHcm91cChuYW1lLCAvLyBGb3IgZXJyb3IgcmVwb3J0aW5nLlxuICBvcHRpb25hbCwgZ3JlZWRpbmVzcywgYnJlYWtPblRva2VuVGV4dCwgbW9kZSwgY29uc3VtZVNwYWNlcykge1xuICAgIC8vIFN3aXRjaCB0byBzcGVjaWZpZWQgbW9kZVxuICAgIHZhciBvdXRlck1vZGUgPSB0aGlzLm1vZGU7XG5cbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zd2l0Y2hNb2RlKG1vZGUpO1xuICAgIH0gLy8gQ29uc3VtZSBzcGFjZXMgaWYgcmVxdWVzdGVkLCBjcnVjaWFsbHkgKmFmdGVyKiB3ZSBzd2l0Y2ggbW9kZXMsXG4gICAgLy8gc28gdGhhdCB0aGUgbmV4dCBub24tc3BhY2UgdG9rZW4gaXMgcGFyc2VkIGluIHRoZSBjb3JyZWN0IG1vZGUuXG5cblxuICAgIGlmIChjb25zdW1lU3BhY2VzKSB7XG4gICAgICB0aGlzLmNvbnN1bWVTcGFjZXMoKTtcbiAgICB9IC8vIEdldCBmaXJzdCB0b2tlblxuXG5cbiAgICB2YXIgZmlyc3RUb2tlbiA9IHRoaXMuZmV0Y2goKTtcbiAgICB2YXIgdGV4dCA9IGZpcnN0VG9rZW4udGV4dDtcbiAgICB2YXIgcmVzdWx0OyAvLyBUcnkgdG8gcGFyc2UgYW4gb3BlbiBicmFjZSBvciBcXGJlZ2luZ3JvdXBcblxuICAgIGlmIChvcHRpb25hbCA/IHRleHQgPT09IFwiW1wiIDogdGV4dCA9PT0gXCJ7XCIgfHwgdGV4dCA9PT0gXCJcXFxcYmVnaW5ncm91cFwiKSB7XG4gICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIHZhciBncm91cEVuZCA9IFBhcnNlci5lbmRPZkdyb3VwW3RleHRdOyAvLyBTdGFydCBhIG5ldyBncm91cCBuYW1lc3BhY2VcblxuICAgICAgdGhpcy5ndWxsZXQuYmVnaW5Hcm91cCgpOyAvLyBJZiB3ZSBnZXQgYSBicmFjZSwgcGFyc2UgYW4gZXhwcmVzc2lvblxuXG4gICAgICB2YXIgZXhwcmVzc2lvbiA9IHRoaXMucGFyc2VFeHByZXNzaW9uKGZhbHNlLCBncm91cEVuZCk7XG4gICAgICB2YXIgbGFzdFRva2VuID0gdGhpcy5mZXRjaCgpOyAvLyBDaGVjayB0aGF0IHdlIGdvdCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2VcblxuICAgICAgdGhpcy5leHBlY3QoZ3JvdXBFbmQpOyAvLyBFbmQgZ3JvdXAgbmFtZXNwYWNlXG5cbiAgICAgIHRoaXMuZ3VsbGV0LmVuZEdyb3VwKCk7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHR5cGU6IFwib3JkZ3JvdXBcIixcbiAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKGZpcnN0VG9rZW4sIGxhc3RUb2tlbiksXG4gICAgICAgIGJvZHk6IGV4cHJlc3Npb24sXG4gICAgICAgIC8vIEEgZ3JvdXAgZm9ybWVkIGJ5IFxcYmVnaW5ncm91cC4uLlxcZW5kZ3JvdXAgaXMgYSBzZW1pLXNpbXBsZSBncm91cFxuICAgICAgICAvLyB3aGljaCBkb2Vzbid0IGFmZmVjdCBzcGFjaW5nIGluIG1hdGggbW9kZSwgaS5lLiwgaXMgdHJhbnNwYXJlbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xOTMwL3doZW4tc2hvdWxkLW9uZS1cbiAgICAgICAgLy8gdXNlLWJlZ2luZ3JvdXAtaW5zdGVhZC1vZi1iZ3JvdXBcbiAgICAgICAgc2VtaXNpbXBsZTogdGV4dCA9PT0gXCJcXFxcYmVnaW5ncm91cFwiIHx8IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbmFsKSB7XG4gICAgICAvLyBSZXR1cm4gbm90aGluZyBmb3IgYW4gb3B0aW9uYWwgZ3JvdXBcbiAgICAgIHJlc3VsdCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGV4aXN0cyBhIGZ1bmN0aW9uIHdpdGggdGhpcyBuYW1lLCBwYXJzZSB0aGUgZnVuY3Rpb24uXG4gICAgICAvLyBPdGhlcndpc2UsIGp1c3QgcmV0dXJuIGEgbnVjbGV1c1xuICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZUZ1bmN0aW9uKGJyZWFrT25Ub2tlblRleHQsIG5hbWUsIGdyZWVkaW5lc3MpIHx8IHRoaXMucGFyc2VTeW1ib2woKTtcblxuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIHRleHRbMF0gPT09IFwiXFxcXFwiICYmICFpbXBsaWNpdENvbW1hbmRzLmhhc093blByb3BlcnR5KHRleHQpKSB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnRocm93T25FcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlVuZGVmaW5lZCBjb250cm9sIHNlcXVlbmNlOiBcIiArIHRleHQsIGZpcnN0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5mb3JtYXRVbnN1cHBvcnRlZENtZCh0ZXh0KTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9XG4gICAgfSAvLyBTd2l0Y2ggbW9kZSBiYWNrXG5cblxuICAgIGlmIChtb2RlKSB7XG4gICAgICB0aGlzLnN3aXRjaE1vZGUob3V0ZXJNb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIC8qKlxuICAgKiBGb3JtIGxpZ2F0dXJlLWxpa2UgY29tYmluYXRpb25zIG9mIGNoYXJhY3RlcnMgZm9yIHRleHQgbW9kZS5cbiAgICogVGhpcyBpbmNsdWRlcyBpbnB1dHMgbGlrZSBcIi0tXCIsIFwiLS0tXCIsIFwiYGBcIiBhbmQgXCInJ1wiLlxuICAgKiBUaGUgcmVzdWx0IHdpbGwgc2ltcGx5IHJlcGxhY2UgbXVsdGlwbGUgdGV4dG9yZCBub2RlcyB3aXRoIGEgc2luZ2xlXG4gICAqIGNoYXJhY3RlciBpbiBlYWNoIHZhbHVlIGJ5IGEgc2luZ2xlIHRleHRvcmQgbm9kZSBoYXZpbmcgbXVsdGlwbGVcbiAgICogY2hhcmFjdGVycyBpbiBpdHMgdmFsdWUuICBUaGUgcmVwcmVzZW50YXRpb24gaXMgc3RpbGwgQVNDSUkgc291cmNlLlxuICAgKiBUaGUgZ3JvdXAgd2lsbCBiZSBtb2RpZmllZCBpbiBwbGFjZS5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZm9ybUxpZ2F0dXJlcyA9IGZ1bmN0aW9uIGZvcm1MaWdhdHVyZXMoZ3JvdXApIHtcbiAgICB2YXIgbiA9IGdyb3VwLmxlbmd0aCAtIDE7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIGEgPSBncm91cFtpXTsgLy8gJEZsb3dGaXhNZTogTm90IGV2ZXJ5IG5vZGUgdHlwZSBoYXMgYSBgdGV4dGAgcHJvcGVydHkuXG5cbiAgICAgIHZhciB2ID0gYS50ZXh0O1xuXG4gICAgICBpZiAodiA9PT0gXCItXCIgJiYgZ3JvdXBbaSArIDFdLnRleHQgPT09IFwiLVwiKSB7XG4gICAgICAgIGlmIChpICsgMSA8IG4gJiYgZ3JvdXBbaSArIDJdLnRleHQgPT09IFwiLVwiKSB7XG4gICAgICAgICAgZ3JvdXAuc3BsaWNlKGksIDMsIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dG9yZFwiLFxuICAgICAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICBsb2M6IFNvdXJjZUxvY2F0aW9uLnJhbmdlKGEsIGdyb3VwW2kgKyAyXSksXG4gICAgICAgICAgICB0ZXh0OiBcIi0tLVwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbiAtPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwLnNwbGljZShpLCAyLCB7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgICAgIG1vZGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShhLCBncm91cFtpICsgMV0pLFxuICAgICAgICAgICAgdGV4dDogXCItLVwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbiAtPSAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgodiA9PT0gXCInXCIgfHwgdiA9PT0gXCJgXCIpICYmIGdyb3VwW2kgKyAxXS50ZXh0ID09PSB2KSB7XG4gICAgICAgIGdyb3VwLnNwbGljZShpLCAyLCB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0b3JkXCIsXG4gICAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgbG9jOiBTb3VyY2VMb2NhdGlvbi5yYW5nZShhLCBncm91cFtpICsgMV0pLFxuICAgICAgICAgIHRleHQ6IHYgKyB2XG4gICAgICAgIH0pO1xuICAgICAgICBuIC09IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBQYXJzZSBhIHNpbmdsZSBzeW1ib2wgb3V0IG9mIHRoZSBzdHJpbmcuIEhlcmUsIHdlIGhhbmRsZSBzaW5nbGUgY2hhcmFjdGVyXG4gICAqIHN5bWJvbHMgYW5kIHNwZWNpYWwgZnVuY3Rpb25zIGxpa2UgXFx2ZXJiLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVN5bWJvbCA9IGZ1bmN0aW9uIHBhcnNlU3ltYm9sKCkge1xuICAgIHZhciBudWNsZXVzID0gdGhpcy5mZXRjaCgpO1xuICAgIHZhciB0ZXh0ID0gbnVjbGV1cy50ZXh0O1xuXG4gICAgaWYgKC9eXFxcXHZlcmJbXmEtekEtWl0vLnRlc3QodGV4dCkpIHtcbiAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgdmFyIGFyZyA9IHRleHQuc2xpY2UoNSk7XG4gICAgICB2YXIgc3RhciA9IGFyZy5jaGFyQXQoMCkgPT09IFwiKlwiO1xuXG4gICAgICBpZiAoc3Rhcikge1xuICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMSk7XG4gICAgICB9IC8vIExleGVyJ3MgdG9rZW5SZWdleCBpcyBjb25zdHJ1Y3RlZCB0byBhbHdheXMgaGF2ZSBtYXRjaGluZ1xuICAgICAgLy8gZmlyc3QvbGFzdCBjaGFyYWN0ZXJzLlxuXG5cbiAgICAgIGlmIChhcmcubGVuZ3RoIDwgMiB8fCBhcmcuY2hhckF0KDApICE9PSBhcmcuc2xpY2UoLTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBzcmNfUGFyc2VFcnJvcihcIlxcXFx2ZXJiIGFzc2VydGlvbiBmYWlsZWQgLS1cXG4gICAgICAgICAgICAgICAgICAgIHBsZWFzZSByZXBvcnQgd2hhdCBpbnB1dCBjYXVzZWQgdGhpcyBidWdcIik7XG4gICAgICB9XG5cbiAgICAgIGFyZyA9IGFyZy5zbGljZSgxLCAtMSk7IC8vIHJlbW92ZSBmaXJzdCBhbmQgbGFzdCBjaGFyXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwidmVyYlwiLFxuICAgICAgICBtb2RlOiBcInRleHRcIixcbiAgICAgICAgYm9keTogYXJnLFxuICAgICAgICBzdGFyOiBzdGFyXG4gICAgICB9O1xuICAgIH0gLy8gQXQgdGhpcyBwb2ludCwgd2Ugc2hvdWxkIGhhdmUgYSBzeW1ib2wsIHBvc3NpYmx5IHdpdGggYWNjZW50cy5cbiAgICAvLyBGaXJzdCBleHBhbmQgYW55IGFjY2VudGVkIGJhc2Ugc3ltYm9sIGFjY29yZGluZyB0byB1bmljb2RlU3ltYm9scy5cblxuXG4gICAgaWYgKHVuaWNvZGVTeW1ib2xzLmhhc093blByb3BlcnR5KHRleHRbMF0pICYmICFzcmNfc3ltYm9sc1t0aGlzLm1vZGVdW3RleHRbMF1dKSB7XG4gICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzdHJpY3QgKFhlVGVYLWNvbXBhdGlibGUpIGluIG1hdGggbW9kZS5cbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnN0cmljdCAmJiB0aGlzLm1vZGUgPT09IFwibWF0aFwiKSB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MucmVwb3J0Tm9uc3RyaWN0KFwidW5pY29kZVRleHRJbk1hdGhNb2RlXCIsIFwiQWNjZW50ZWQgVW5pY29kZSB0ZXh0IGNoYXJhY3RlciBcXFwiXCIgKyB0ZXh0WzBdICsgXCJcXFwiIHVzZWQgaW4gXCIgKyBcIm1hdGggbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgIH1cblxuICAgICAgdGV4dCA9IHVuaWNvZGVTeW1ib2xzW3RleHRbMF1dICsgdGV4dC5zdWJzdHIoMSk7XG4gICAgfSAvLyBTdHJpcCBvZmYgYW55IGNvbWJpbmluZyBjaGFyYWN0ZXJzXG5cblxuICAgIHZhciBtYXRjaCA9IGNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleC5leGVjKHRleHQpO1xuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpO1xuXG4gICAgICBpZiAodGV4dCA9PT0gJ2knKSB7XG4gICAgICAgIHRleHQgPSBcIlxcdTAxMzFcIjsgLy8gZG90bGVzcyBpLCBpbiBtYXRoIGFuZCB0ZXh0IG1vZGVcbiAgICAgIH0gZWxzZSBpZiAodGV4dCA9PT0gJ2onKSB7XG4gICAgICAgIHRleHQgPSBcIlxcdTAyMzdcIjsgLy8gZG90bGVzcyBqLCBpbiBtYXRoIGFuZCB0ZXh0IG1vZGVcbiAgICAgIH1cbiAgICB9IC8vIFJlY29nbml6ZSBiYXNlIHN5bWJvbFxuXG5cbiAgICB2YXIgc3ltYm9sO1xuXG4gICAgaWYgKHNyY19zeW1ib2xzW3RoaXMubW9kZV1bdGV4dF0pIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnN0cmljdCAmJiB0aGlzLm1vZGUgPT09ICdtYXRoJyAmJiBleHRyYUxhdGluLmluZGV4T2YodGV4dCkgPj0gMCkge1xuICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVuaWNvZGVUZXh0SW5NYXRoTW9kZVwiLCBcIkxhdGluLTEvVW5pY29kZSB0ZXh0IGNoYXJhY3RlciBcXFwiXCIgKyB0ZXh0WzBdICsgXCJcXFwiIHVzZWQgaW4gXCIgKyBcIm1hdGggbW9kZVwiLCBudWNsZXVzKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGdyb3VwID0gc3JjX3N5bWJvbHNbdGhpcy5tb2RlXVt0ZXh0XS5ncm91cDtcbiAgICAgIHZhciBsb2MgPSBTb3VyY2VMb2NhdGlvbi5yYW5nZShudWNsZXVzKTtcbiAgICAgIHZhciBzO1xuXG4gICAgICBpZiAoQVRPTVMuaGFzT3duUHJvcGVydHkoZ3JvdXApKSB7XG4gICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgdmFyIGZhbWlseSA9IGdyb3VwO1xuICAgICAgICBzID0ge1xuICAgICAgICAgIHR5cGU6IFwiYXRvbVwiLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBmYW1pbHk6IGZhbWlseSxcbiAgICAgICAgICBsb2M6IGxvYyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIHMgPSB7XG4gICAgICAgICAgdHlwZTogZ3JvdXAsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGxvYzogbG9jLFxuICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3ltYm9sID0gcztcbiAgICB9IGVsc2UgaWYgKHRleHQuY2hhckNvZGVBdCgwKSA+PSAweDgwKSB7XG4gICAgICAvLyBubyBzeW1ib2wgZm9yIGUuZy4gXlxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc3RyaWN0KSB7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQ29kZXBvaW50KHRleHQuY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnJlcG9ydE5vbnN0cmljdChcInVua25vd25TeW1ib2xcIiwgXCJVbnJlY29nbml6ZWQgVW5pY29kZSBjaGFyYWN0ZXIgXFxcIlwiICsgdGV4dFswXSArIFwiXFxcIlwiICsgKFwiIChcIiArIHRleHQuY2hhckNvZGVBdCgwKSArIFwiKVwiKSwgbnVjbGV1cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBcIm1hdGhcIikge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MucmVwb3J0Tm9uc3RyaWN0KFwidW5pY29kZVRleHRJbk1hdGhNb2RlXCIsIFwiVW5pY29kZSB0ZXh0IGNoYXJhY3RlciBcXFwiXCIgKyB0ZXh0WzBdICsgXCJcXFwiIHVzZWQgaW4gbWF0aCBtb2RlXCIsIG51Y2xldXMpO1xuICAgICAgICB9XG4gICAgICB9IC8vIEFsbCBub25tYXRoZW1hdGljYWwgVW5pY29kZSBjaGFyYWN0ZXJzIGFyZSByZW5kZXJlZCBhcyBpZiB0aGV5XG4gICAgICAvLyBhcmUgaW4gdGV4dCBtb2RlICh3cmFwcGVkIGluIFxcdGV4dCkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBpdFxuICAgICAgLy8gdGFrZXMgdG8gcmVuZGVyIHRoZW0gaW4gTGFUZVguICBTZXR0aW5nIGBtb2RlOiB0aGlzLm1vZGVgIGlzXG4gICAgICAvLyBhbm90aGVyIG5hdHVyYWwgY2hvaWNlICh0aGUgdXNlciByZXF1ZXN0ZWQgbWF0aCBtb2RlKSwgYnV0XG4gICAgICAvLyB0aGlzIG1ha2VzIGl0IG1vcmUgZGlmZmljdWx0IGZvciBnZXRDaGFyYWN0ZXJNZXRyaWNzKCkgdG9cbiAgICAgIC8vIGRpc3Rpbmd1aXNoIFVuaWNvZGUgY2hhcmFjdGVycyB3aXRob3V0IG1ldHJpY3MgYW5kIHRob3NlIGZvclxuICAgICAgLy8gd2hpY2ggd2Ugd2FudCB0byBzaW11bGF0ZSB0aGUgbGV0dGVyIE0uXG5cblxuICAgICAgc3ltYm9sID0ge1xuICAgICAgICB0eXBlOiBcInRleHRvcmRcIixcbiAgICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UobnVjbGV1cyksXG4gICAgICAgIHRleHQ6IHRleHRcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsOyAvLyBFT0YsIF4sIF8sIHssIH0sIGV0Yy5cbiAgICB9XG5cbiAgICB0aGlzLmNvbnN1bWUoKTsgLy8gVHJhbnNmb3JtIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGludG8gYWNjZW50c1xuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoWzBdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhY2NlbnQgPSBtYXRjaFswXVtpXTtcblxuICAgICAgICBpZiAoIXVuaWNvZGVBY2NlbnRzW2FjY2VudF0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgc3JjX1BhcnNlRXJyb3IoXCJVbmtub3duIGFjY2VudCAnIFwiICsgYWNjZW50ICsgXCInXCIsIG51Y2xldXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbW1hbmQgPSB1bmljb2RlQWNjZW50c1thY2NlbnRdW3RoaXMubW9kZV07XG5cbiAgICAgICAgaWYgKCFjb21tYW5kKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiQWNjZW50IFwiICsgYWNjZW50ICsgXCIgdW5zdXBwb3J0ZWQgaW4gXCIgKyB0aGlzLm1vZGUgKyBcIiBtb2RlXCIsIG51Y2xldXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ltYm9sID0ge1xuICAgICAgICAgIHR5cGU6IFwiYWNjZW50XCIsXG4gICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgIGxvYzogU291cmNlTG9jYXRpb24ucmFuZ2UobnVjbGV1cyksXG4gICAgICAgICAgbGFiZWw6IGNvbW1hbmQsXG4gICAgICAgICAgaXNTdHJldGNoeTogZmFsc2UsXG4gICAgICAgICAgaXNTaGlmdHk6IHRydWUsXG4gICAgICAgICAgYmFzZTogc3ltYm9sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bWJvbDtcbiAgfTtcblxuICByZXR1cm4gUGFyc2VyO1xufSgpO1xuXG5QYXJzZXJfUGFyc2VyLmVuZE9mRXhwcmVzc2lvbiA9IFtcIn1cIiwgXCJcXFxcZW5kZ3JvdXBcIiwgXCJcXFxcZW5kXCIsIFwiXFxcXHJpZ2h0XCIsIFwiJlwiXTtcblBhcnNlcl9QYXJzZXIuZW5kT2ZHcm91cCA9IHtcbiAgXCJbXCI6IFwiXVwiLFxuICBcIntcIjogXCJ9XCIsXG4gIFwiXFxcXGJlZ2luZ3JvdXBcIjogXCJcXFxcZW5kZ3JvdXBcIlxuICAvKipcbiAgICogUGFyc2VzIGFuIFwiZXhwcmVzc2lvblwiLCB3aGljaCBpcyBhIGxpc3Qgb2YgYXRvbXMuXG4gICAqXG4gICAqIGBicmVha09uSW5maXhgOiBTaG91bGQgdGhlIHBhcnNpbmcgc3RvcCB3aGVuIHdlIGhpdCBpbmZpeCBub2Rlcz8gVGhpc1xuICAgKiAgICAgICAgICAgICAgICAgaGFwcGVucyB3aGVuIGZ1bmN0aW9ucyBoYXZlIGhpZ2hlciBwcmVjZW5kZW5jZSBoYW4gaW5maXhcbiAgICogICAgICAgICAgICAgICAgIG5vZGVzIGluIGltcGxpY2l0IHBhcnNlcy5cbiAgICpcbiAgICogYGJyZWFrT25Ub2tlblRleHRgOiBUaGUgdGV4dCBvZiB0aGUgdG9rZW4gdGhhdCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgZW5kXG4gICAqICAgICAgICAgICAgICAgICAgICAgd2l0aCwgb3IgYG51bGxgIGlmIHNvbWV0aGluZyBlbHNlIHNob3VsZCBlbmQgdGhlXG4gICAqICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5cbiAgICovXG5cbn07XG5QYXJzZXJfUGFyc2VyLlNVUFNVQl9HUkVFRElORVNTID0gMTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvcGFyc2VUcmVlLmpzXG4vKipcbiAqIFByb3ZpZGVzIGEgc2luZ2xlIGZ1bmN0aW9uIGZvciBwYXJzaW5nIGFuIGV4cHJlc3Npb24gdXNpbmcgYSBQYXJzZXJcbiAqIFRPRE8oZW1pbHkpOiBSZW1vdmUgdGhpc1xuICovXG5cblxuXG4vKipcbiAqIFBhcnNlcyBhbiBleHByZXNzaW9uIHVzaW5nIGEgUGFyc2VyLCB0aGVuIHJldHVybnMgdGhlIHBhcnNlZCByZXN1bHQuXG4gKi9cbnZhciBwYXJzZVRyZWVfcGFyc2VUcmVlID0gZnVuY3Rpb24gcGFyc2VUcmVlKHRvUGFyc2UsIHNldHRpbmdzKSB7XG4gIGlmICghKHR5cGVvZiB0b1BhcnNlID09PSAnc3RyaW5nJyB8fCB0b1BhcnNlIGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0thVGVYIGNhbiBvbmx5IHBhcnNlIHN0cmluZyB0eXBlZCBleHByZXNzaW9uJyk7XG4gIH1cblxuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcl9QYXJzZXIodG9QYXJzZSwgc2V0dGluZ3MpOyAvLyBCbGFuayBvdXQgYW55IFxcZGZAdGFnIHRvIGF2b2lkIHNwdXJpb3VzIFwiRHVwbGljYXRlIFxcdGFnXCIgZXJyb3JzXG5cbiAgZGVsZXRlIHBhcnNlci5ndWxsZXQubWFjcm9zLmN1cnJlbnRbXCJcXFxcZGZAdGFnXCJdO1xuICB2YXIgdHJlZSA9IHBhcnNlci5wYXJzZSgpOyAvLyBJZiB0aGUgaW5wdXQgdXNlZCBcXHRhZywgaXQgd2lsbCBzZXQgdGhlIFxcZGZAdGFnIG1hY3JvIHRvIHRoZSB0YWcuXG4gIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2VwYXJhdGVseSBwYXJzZSB0aGUgdGFnIGFuZCB3cmFwIHRoZSB0cmVlLlxuXG4gIGlmIChwYXJzZXIuZ3VsbGV0Lm1hY3Jvcy5nZXQoXCJcXFxcZGZAdGFnXCIpKSB7XG4gICAgaWYgKCFzZXR0aW5ncy5kaXNwbGF5TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiXFxcXHRhZyB3b3JrcyBvbmx5IGluIGRpc3BsYXkgZXF1YXRpb25zXCIpO1xuICAgIH1cblxuICAgIHBhcnNlci5ndWxsZXQuZmVlZChcIlxcXFxkZkB0YWdcIik7XG4gICAgdHJlZSA9IFt7XG4gICAgICB0eXBlOiBcInRhZ1wiLFxuICAgICAgbW9kZTogXCJ0ZXh0XCIsXG4gICAgICBib2R5OiB0cmVlLFxuICAgICAgdGFnOiBwYXJzZXIucGFyc2UoKVxuICAgIH1dO1xuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfcGFyc2VUcmVlID0gKHBhcnNlVHJlZV9wYXJzZVRyZWUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9rYXRleC5qc1xuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIEthVGVYLiBIZXJlLCB3ZSBleHBvc2UgZnVuY3Rpb25zIGZvclxuICogcmVuZGVyaW5nIGV4cHJlc3Npb25zIGVpdGhlciB0byBET00gbm9kZXMgb3IgdG8gbWFya3VwIHN0cmluZ3MuXG4gKlxuICogV2UgYWxzbyBleHBvc2UgdGhlIFBhcnNlRXJyb3IgY2xhc3MgdG8gY2hlY2sgaWYgZXJyb3JzIHRocm93biBmcm9tIEthVGVYIGFyZVxuICogZXJyb3JzIGluIHRoZSBleHByZXNzaW9uLCBvciBlcnJvcnMgaW4gamF2YXNjcmlwdCBoYW5kbGluZy5cbiAqL1xuXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIFBhcnNlIGFuZCBidWlsZCBhbiBleHByZXNzaW9uLCBhbmQgcGxhY2UgdGhhdCBleHByZXNzaW9uIGluIHRoZSBET00gbm9kZVxuICogZ2l2ZW4uXG4gKi9cbnZhciBrYXRleF9yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoZXhwcmVzc2lvbiwgYmFzZU5vZGUsIG9wdGlvbnMpIHtcbiAgYmFzZU5vZGUudGV4dENvbnRlbnQgPSBcIlwiO1xuICB2YXIgbm9kZSA9IGthdGV4X3JlbmRlclRvRG9tVHJlZShleHByZXNzaW9uLCBvcHRpb25zKS50b05vZGUoKTtcbiAgYmFzZU5vZGUuYXBwZW5kQ2hpbGQobm9kZSk7XG59OyAvLyBLYVRlWCdzIHN0eWxlcyBkb24ndCB3b3JrIHByb3Blcmx5IGluIHF1aXJrcyBtb2RlLiBQcmludCBvdXQgYW4gZXJyb3IsIGFuZFxuLy8gZGlzYWJsZSByZW5kZXJpbmcuXG5cblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICBpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSAhPT0gXCJDU1MxQ29tcGF0XCIpIHtcbiAgICB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBLYVRlWCBkb2Vzbid0IHdvcmsgaW4gcXVpcmtzIG1vZGUuIE1ha2Ugc3VyZSB5b3VyIFwiICsgXCJ3ZWJzaXRlIGhhcyBhIHN1aXRhYmxlIGRvY3R5cGUuXCIpO1xuXG4gICAga2F0ZXhfcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdGhyb3cgbmV3IHNyY19QYXJzZUVycm9yKFwiS2FUZVggZG9lc24ndCB3b3JrIGluIHF1aXJrcyBtb2RlLlwiKTtcbiAgICB9O1xuICB9XG59XG4vKipcbiAqIFBhcnNlIGFuZCBidWlsZCBhbiBleHByZXNzaW9uLCBhbmQgcmV0dXJuIHRoZSBtYXJrdXAgZm9yIHRoYXQuXG4gKi9cblxuXG52YXIgcmVuZGVyVG9TdHJpbmcgPSBmdW5jdGlvbiByZW5kZXJUb1N0cmluZyhleHByZXNzaW9uLCBvcHRpb25zKSB7XG4gIHZhciBtYXJrdXAgPSBrYXRleF9yZW5kZXJUb0RvbVRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykudG9NYXJrdXAoKTtcbiAgcmV0dXJuIG1hcmt1cDtcbn07XG4vKipcbiAqIFBhcnNlIGFuIGV4cHJlc3Npb24gYW5kIHJldHVybiB0aGUgcGFyc2UgdHJlZS5cbiAqL1xuXG5cbnZhciBrYXRleF9nZW5lcmF0ZVBhcnNlVHJlZSA9IGZ1bmN0aW9uIGdlbmVyYXRlUGFyc2VUcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gbmV3IFNldHRpbmdzX1NldHRpbmdzKG9wdGlvbnMpO1xuICByZXR1cm4gc3JjX3BhcnNlVHJlZShleHByZXNzaW9uLCBzZXR0aW5ncyk7XG59O1xuLyoqXG4gKiBJZiB0aGUgZ2l2ZW4gZXJyb3IgaXMgYSBLYVRlWCBQYXJzZUVycm9yIGFuZCBvcHRpb25zLnRocm93T25FcnJvciBpcyBmYWxzZSxcbiAqIHJlbmRlcnMgdGhlIGludmFsaWQgTGFUZVggYXMgYSBzcGFuIHdpdGggaG92ZXIgdGl0bGUgZ2l2aW5nIHRoZSBLYVRlWFxuICogZXJyb3IgbWVzc2FnZS4gIE90aGVyd2lzZSwgc2ltcGx5IHRocm93cyB0aGUgZXJyb3IuXG4gKi9cblxuXG52YXIga2F0ZXhfcmVuZGVyRXJyb3IgPSBmdW5jdGlvbiByZW5kZXJFcnJvcihlcnJvciwgZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50aHJvd09uRXJyb3IgfHwgIShlcnJvciBpbnN0YW5jZW9mIHNyY19QYXJzZUVycm9yKSkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgdmFyIG5vZGUgPSBidWlsZENvbW1vbi5tYWtlU3BhbihbXCJrYXRleC1lcnJvclwiXSwgW25ldyBkb21UcmVlX1N5bWJvbE5vZGUoZXhwcmVzc2lvbildKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCBlcnJvci50b1N0cmluZygpKTtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcImNvbG9yOlwiICsgb3B0aW9ucy5lcnJvckNvbG9yKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIHJldHVybnMgdGhlIGthdGV4IGJ1aWxkIHRyZWUuIFRoaXMgaXMgdXNlZCBmb3IgYWR2YW5jZWRcbiAqIHVzZSBjYXNlcyAobGlrZSByZW5kZXJpbmcgdG8gY3VzdG9tIG91dHB1dCkuXG4gKi9cblxuXG52YXIga2F0ZXhfcmVuZGVyVG9Eb21UcmVlID0gZnVuY3Rpb24gcmVuZGVyVG9Eb21UcmVlKGV4cHJlc3Npb24sIG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gbmV3IFNldHRpbmdzX1NldHRpbmdzKG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgdmFyIHRyZWUgPSBzcmNfcGFyc2VUcmVlKGV4cHJlc3Npb24sIHNldHRpbmdzKTtcbiAgICByZXR1cm4gYnVpbGRUcmVlX2J1aWxkVHJlZSh0cmVlLCBleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGthdGV4X3JlbmRlckVycm9yKGVycm9yLCBleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gIH1cbn07XG4vKipcbiAqIEdlbmVyYXRlcyBhbmQgcmV0dXJucyB0aGUga2F0ZXggYnVpbGQgdHJlZSwgd2l0aCBqdXN0IEhUTUwgKG5vIE1hdGhNTCkuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcyAobGlrZSByZW5kZXJpbmcgdG8gY3VzdG9tIG91dHB1dCkuXG4gKi9cblxuXG52YXIga2F0ZXhfcmVuZGVyVG9IVE1MVHJlZSA9IGZ1bmN0aW9uIHJlbmRlclRvSFRNTFRyZWUoZXhwcmVzc2lvbiwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3NfU2V0dGluZ3Mob3B0aW9ucyk7XG5cbiAgdHJ5IHtcbiAgICB2YXIgdHJlZSA9IHNyY19wYXJzZVRyZWUoZXhwcmVzc2lvbiwgc2V0dGluZ3MpO1xuICAgIHJldHVybiBidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSh0cmVlLCBleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGthdGV4X3JlbmRlckVycm9yKGVycm9yLCBleHByZXNzaW9uLCBzZXR0aW5ncyk7XG4gIH1cbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGthdGV4XzAgPSAoe1xuICAvKipcbiAgICogQ3VycmVudCBLYVRlWCB2ZXJzaW9uXG4gICAqL1xuICB2ZXJzaW9uOiBcIjAuMTEuMVwiLFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBnaXZlbiBMYVRlWCBpbnRvIGFuIEhUTUwrTWF0aE1MIGNvbWJpbmF0aW9uLCBhbmQgYWRkc1xuICAgKiBpdCBhcyBhIGNoaWxkIHRvIHRoZSBzcGVjaWZpZWQgRE9NIG5vZGUuXG4gICAqL1xuICByZW5kZXI6IGthdGV4X3JlbmRlcixcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MK01hdGhNTCBjb21iaW5hdGlvbiBzdHJpbmcsXG4gICAqIGZvciBzZW5kaW5nIHRvIHRoZSBjbGllbnQuXG4gICAqL1xuICByZW5kZXJUb1N0cmluZzogcmVuZGVyVG9TdHJpbmcsXG5cbiAgLyoqXG4gICAqIEthVGVYIGVycm9yLCB1c3VhbGx5IGR1cmluZyBwYXJzaW5nLlxuICAgKi9cbiAgUGFyc2VFcnJvcjogc3JjX1BhcnNlRXJyb3IsXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgZ2l2ZW4gTGFUZVggaW50byBLYVRlWCdzIGludGVybmFsIHBhcnNlIHRyZWUgc3RydWN0dXJlLFxuICAgKiB3aXRob3V0IHJlbmRlcmluZyB0byBIVE1MIG9yIE1hdGhNTC5cbiAgICpcbiAgICogTk9URTogVGhpcyBtZXRob2QgaXMgbm90IGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgcHVibGljIHVzZS5cbiAgICogVGhlIGludGVybmFsIHRyZWUgcmVwcmVzZW50YXRpb24gaXMgdW5zdGFibGUgYW5kIGlzIHZlcnkgbGlrZWx5XG4gICAqIHRvIGNoYW5nZS4gVXNlIGF0IHlvdXIgb3duIHJpc2suXG4gICAqL1xuICBfX3BhcnNlOiBrYXRleF9nZW5lcmF0ZVBhcnNlVHJlZSxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MK01hdGhNTCBpbnRlcm5hbCBET00gdHJlZVxuICAgKiByZXByZXNlbnRhdGlvbiwgd2l0aG91dCBmbGF0dGVuaW5nIHRoYXQgcmVwcmVzZW50YXRpb24gdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19yZW5kZXJUb0RvbVRyZWU6IGthdGV4X3JlbmRlclRvRG9tVHJlZSxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZ2l2ZW4gTGFUZVggaW50byBhbiBIVE1MIGludGVybmFsIERPTSB0cmVlIHJlcHJlc2VudGF0aW9uLFxuICAgKiB3aXRob3V0IE1hdGhNTCBhbmQgd2l0aG91dCBmbGF0dGVuaW5nIHRoYXQgcmVwcmVzZW50YXRpb24gdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHB1YmxpYyB1c2UuXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIHJlcHJlc2VudGF0aW9uIGlzIHVuc3RhYmxlIGFuZCBpcyB2ZXJ5IGxpa2VseVxuICAgKiB0byBjaGFuZ2UuIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgX19yZW5kZXJUb0hUTUxUcmVlOiBrYXRleF9yZW5kZXJUb0hUTUxUcmVlLFxuXG4gIC8qKlxuICAgKiBleHRlbmRzIGludGVybmFsIGZvbnQgbWV0cmljcyBvYmplY3Qgd2l0aCBhIG5ldyBvYmplY3RcbiAgICogZWFjaCBrZXkgaW4gdGhlIG5ldyBvYmplY3QgcmVwcmVzZW50cyBhIGZvbnQgbmFtZVxuICAqL1xuICBfX3NldEZvbnRNZXRyaWNzOiBzZXRGb250TWV0cmljcyxcblxuICAvKipcbiAgICogYWRkcyBhIG5ldyBzeW1ib2wgdG8gYnVpbHRpbiBzeW1ib2xzIHRhYmxlXG4gICAqL1xuICBfX2RlZmluZVN5bWJvbDogZGVmaW5lU3ltYm9sLFxuXG4gIC8qKlxuICAgKiBhZGRzIGEgbmV3IG1hY3JvIHRvIGJ1aWx0aW4gbWFjcm8gbGlzdFxuICAgKi9cbiAgX19kZWZpbmVNYWNybzogZGVmaW5lTWFjcm8sXG5cbiAgLyoqXG4gICAqIEV4cG9zZSB0aGUgZG9tIHRyZWUgbm9kZSB0eXBlcywgd2hpY2ggY2FuIGJlIHVzZWZ1bCBmb3IgdHlwZSBjaGVja2luZyBub2Rlcy5cbiAgICpcbiAgICogTk9URTogVGhpcyBtZXRob2QgaXMgbm90IGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgcHVibGljIHVzZS5cbiAgICogVGhlIGludGVybmFsIHRyZWUgcmVwcmVzZW50YXRpb24gaXMgdW5zdGFibGUgYW5kIGlzIHZlcnkgbGlrZWx5XG4gICAqIHRvIGNoYW5nZS4gVXNlIGF0IHlvdXIgb3duIHJpc2suXG4gICAqL1xuICBfX2RvbVRyZWU6IHtcbiAgICBTcGFuOiBkb21UcmVlX1NwYW4sXG4gICAgQW5jaG9yOiBkb21UcmVlX0FuY2hvcixcbiAgICBTeW1ib2xOb2RlOiBkb21UcmVlX1N5bWJvbE5vZGUsXG4gICAgU3ZnTm9kZTogU3ZnTm9kZSxcbiAgICBQYXRoTm9kZTogZG9tVHJlZV9QYXRoTm9kZSxcbiAgICBMaW5lTm9kZTogTGluZU5vZGVcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL2thdGV4LndlYnBhY2suanNcbi8qKlxuICogVGhpcyBpcyB0aGUgd2VicGFjayBlbnRyeSBwb2ludCBmb3IgS2FUZVguIEFzIEVDTUFTY3JpcHQsIGZsb3dbMV0gYW5kIGplc3RbMl1cbiAqIGRvZXNuJ3Qgc3VwcG9ydCBDU1MgbW9kdWxlcyBuYXRpdmVseSwgYSBzZXBhcmF0ZSBlbnRyeSBwb2ludCBpcyB1c2VkIGFuZFxuICogaXQgaXMgbm90IGZsb3d0eXBlZC5cbiAqXG4gKiBbMV0gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbGFtYmRhaGFuZHMvZDE5ZTBkYTk2Mjg1Yjc0OWYwZWZcbiAqIFsyXSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9qZXN0L2RvY3MvZW4vd2VicGFjay5odG1sXG4gKi9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBrYXRleF93ZWJwYWNrID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoa2F0ZXhfMCk7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKVtcImRlZmF1bHRcIl07XG59KTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIGlzQXJyYXkgPSBmdW5jdGlvbiBpc0FycmF5KGFycikge1xuXHRpZiAodHlwZW9mIEFycmF5LmlzQXJyYXkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShhcnIpO1xuXHR9XG5cblx0cmV0dXJuIHRvU3RyLmNhbGwoYXJyKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbnZhciBpc1BsYWluT2JqZWN0ID0gZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcblx0aWYgKCFvYmogfHwgdG9TdHIuY2FsbChvYmopICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHZhciBoYXNPd25Db25zdHJ1Y3RvciA9IGhhc093bi5jYWxsKG9iaiwgJ2NvbnN0cnVjdG9yJyk7XG5cdHZhciBoYXNJc1Byb3RvdHlwZU9mID0gb2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgJiYgaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgJ2lzUHJvdG90eXBlT2YnKTtcblx0Ly8gTm90IG93biBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBtdXN0IGJlIE9iamVjdFxuXHRpZiAob2JqLmNvbnN0cnVjdG9yICYmICFoYXNPd25Db25zdHJ1Y3RvciAmJiAhaGFzSXNQcm90b3R5cGVPZikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIE93biBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhdGVkIGZpcnN0bHksIHNvIHRvIHNwZWVkIHVwLFxuXHQvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRoZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93bi5cblx0dmFyIGtleTtcblx0Zm9yIChrZXkgaW4gb2JqKSB7IC8qKi8gfVxuXG5cdHJldHVybiB0eXBlb2Yga2V5ID09PSAndW5kZWZpbmVkJyB8fCBoYXNPd24uY2FsbChvYmosIGtleSk7XG59O1xuXG4vLyBJZiBuYW1lIGlzICdfX3Byb3RvX18nLCBhbmQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGlzIGF2YWlsYWJsZSwgZGVmaW5lIF9fcHJvdG9fXyBhcyBhbiBvd24gcHJvcGVydHkgb24gdGFyZ2V0XG52YXIgc2V0UHJvcGVydHkgPSBmdW5jdGlvbiBzZXRQcm9wZXJ0eSh0YXJnZXQsIG9wdGlvbnMpIHtcblx0aWYgKGRlZmluZVByb3BlcnR5ICYmIG9wdGlvbnMubmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG9wdGlvbnMubmFtZSwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdHZhbHVlOiBvcHRpb25zLm5ld1ZhbHVlLFxuXHRcdFx0d3JpdGFibGU6IHRydWVcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR0YXJnZXRbb3B0aW9ucy5uYW1lXSA9IG9wdGlvbnMubmV3VmFsdWU7XG5cdH1cbn07XG5cbi8vIFJldHVybiB1bmRlZmluZWQgaW5zdGVhZCBvZiBfX3Byb3RvX18gaWYgJ19fcHJvdG9fXycgaXMgbm90IGFuIG93biBwcm9wZXJ0eVxudmFyIGdldFByb3BlcnR5ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHkob2JqLCBuYW1lKSB7XG5cdGlmIChuYW1lID09PSAnX19wcm90b19fJykge1xuXHRcdGlmICghaGFzT3duLmNhbGwob2JqLCBuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHZvaWQgMDtcblx0XHR9IGVsc2UgaWYgKGdPUEQpIHtcblx0XHRcdC8vIEluIGVhcmx5IHZlcnNpb25zIG9mIG5vZGUsIG9ialsnX19wcm90b19fJ10gaXMgYnVnZ3kgd2hlbiBvYmogaGFzXG5cdFx0XHQvLyBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5LiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgd29ya3MuXG5cdFx0XHRyZXR1cm4gZ09QRChvYmosIG5hbWUpLnZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvYmpbbmFtZV07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGV4dGVuZCgpIHtcblx0dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lO1xuXHR2YXIgdGFyZ2V0ID0gYXJndW1lbnRzWzBdO1xuXHR2YXIgaSA9IDE7XG5cdHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuXHR2YXIgZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKHR5cGVvZiB0YXJnZXQgPT09ICdib29sZWFuJykge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWzFdIHx8IHt9O1xuXHRcdC8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHRpID0gMjtcblx0fVxuXHRpZiAodGFyZ2V0ID09IG51bGwgfHwgKHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnICYmIHR5cGVvZiB0YXJnZXQgIT09ICdmdW5jdGlvbicpKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHRmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0b3B0aW9ucyA9IGFyZ3VtZW50c1tpXTtcblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yIChuYW1lIGluIG9wdGlvbnMpIHtcblx0XHRcdFx0c3JjID0gZ2V0UHJvcGVydHkodGFyZ2V0LCBuYW1lKTtcblx0XHRcdFx0Y29weSA9IGdldFByb3BlcnR5KG9wdGlvbnMsIG5hbWUpO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKHRhcmdldCAhPT0gY29weSkge1xuXHRcdFx0XHRcdC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5c1xuXHRcdFx0XHRcdGlmIChkZWVwICYmIGNvcHkgJiYgKGlzUGxhaW5PYmplY3QoY29weSkgfHwgKGNvcHlJc0FycmF5ID0gaXNBcnJheShjb3B5KSkpKSB7XG5cdFx0XHRcdFx0XHRpZiAoY29weUlzQXJyYXkpIHtcblx0XHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNBcnJheShzcmMpID8gc3JjIDogW107XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBpc1BsYWluT2JqZWN0KHNyYykgPyBzcmMgOiB7fTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGV4dGVuZChkZWVwLCBjbG9uZSwgY29weSkgfSk7XG5cblx0XHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY29weSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0XHRcdHNldFByb3BlcnR5KHRhcmdldCwgeyBuYW1lOiBuYW1lLCBuZXdWYWx1ZTogY29weSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhaWxcblxuZnVuY3Rpb24gYmFpbChlcnIpIHtcbiAgaWYgKGVycikge1xuICAgIHRocm93IGVyclxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5naWZ5XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZSkge1xuICAvLyBOb3RoaW5nLlxuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIE5vZGUuXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ3Bvc2l0aW9uJykgfHwgb3duLmNhbGwodmFsdWUsICd0eXBlJykpIHtcbiAgICByZXR1cm4gcG9zaXRpb24odmFsdWUucG9zaXRpb24pXG4gIH1cblxuICAvLyBQb3NpdGlvbi5cbiAgaWYgKG93bi5jYWxsKHZhbHVlLCAnc3RhcnQnKSB8fCBvd24uY2FsbCh2YWx1ZSwgJ2VuZCcpKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlKVxuICB9XG5cbiAgLy8gUG9pbnQuXG4gIGlmIChvd24uY2FsbCh2YWx1ZSwgJ2xpbmUnKSB8fCBvd24uY2FsbCh2YWx1ZSwgJ2NvbHVtbicpKSB7XG4gICAgcmV0dXJuIHBvaW50KHZhbHVlKVxuICB9XG5cbiAgLy8gP1xuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gcG9pbnQocG9pbnQpIHtcbiAgaWYgKCFwb2ludCB8fCB0eXBlb2YgcG9pbnQgIT09ICdvYmplY3QnKSB7XG4gICAgcG9pbnQgPSB7fVxuICB9XG5cbiAgcmV0dXJuIGluZGV4KHBvaW50LmxpbmUpICsgJzonICsgaW5kZXgocG9pbnQuY29sdW1uKVxufVxuXG5mdW5jdGlvbiBwb3NpdGlvbihwb3MpIHtcbiAgaWYgKCFwb3MgfHwgdHlwZW9mIHBvcyAhPT0gJ29iamVjdCcpIHtcbiAgICBwb3MgPSB7fVxuICB9XG5cbiAgcmV0dXJuIHBvaW50KHBvcy5zdGFydCkgKyAnLScgKyBwb2ludChwb3MuZW5kKVxufVxuXG5mdW5jdGlvbiBpbmRleCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogMVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCd1bmlzdC11dGlsLXN0cmluZ2lmeS1wb3NpdGlvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gVk1lc3NhZ2VcblxuLy8gSW5oZXJpdCBmcm9tIGBFcnJvciNgLlxuZnVuY3Rpb24gVk1lc3NhZ2VQcm90b3R5cGUoKSB7fVxuVk1lc3NhZ2VQcm90b3R5cGUucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlXG5WTWVzc2FnZS5wcm90b3R5cGUgPSBuZXcgVk1lc3NhZ2VQcm90b3R5cGUoKVxuXG4vLyBNZXNzYWdlIHByb3BlcnRpZXMuXG52YXIgcHJvdG8gPSBWTWVzc2FnZS5wcm90b3R5cGVcblxucHJvdG8uZmlsZSA9ICcnXG5wcm90by5uYW1lID0gJydcbnByb3RvLnJlYXNvbiA9ICcnXG5wcm90by5tZXNzYWdlID0gJydcbnByb3RvLnN0YWNrID0gJydcbnByb3RvLmZhdGFsID0gbnVsbFxucHJvdG8uY29sdW1uID0gbnVsbFxucHJvdG8ubGluZSA9IG51bGxcblxuLy8gQ29uc3RydWN0IGEgbmV3IFZNZXNzYWdlLlxuLy9cbi8vIE5vdGU6IFdlIGNhbm5vdCBpbnZva2UgYEVycm9yYCBvbiB0aGUgY3JlYXRlZCBjb250ZXh0LCBhcyB0aGF0IGFkZHMgcmVhZG9ubHlcbi8vIGBsaW5lYCBhbmQgYGNvbHVtbmAgYXR0cmlidXRlcyBvbiBTYWZhcmkgOSwgdGh1cyB0aHJvd2luZyBhbmQgZmFpbGluZyB0aGVcbi8vIGRhdGEuXG5mdW5jdGlvbiBWTWVzc2FnZShyZWFzb24sIHBvc2l0aW9uLCBvcmlnaW4pIHtcbiAgdmFyIHBhcnRzXG4gIHZhciByYW5nZVxuICB2YXIgbG9jYXRpb25cblxuICBpZiAodHlwZW9mIHBvc2l0aW9uID09PSAnc3RyaW5nJykge1xuICAgIG9yaWdpbiA9IHBvc2l0aW9uXG4gICAgcG9zaXRpb24gPSBudWxsXG4gIH1cblxuICBwYXJ0cyA9IHBhcnNlT3JpZ2luKG9yaWdpbilcbiAgcmFuZ2UgPSBzdHJpbmdpZnkocG9zaXRpb24pIHx8ICcxOjEnXG5cbiAgbG9jYXRpb24gPSB7XG4gICAgc3RhcnQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9LFxuICAgIGVuZDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbH1cbiAgfVxuXG4gIC8vIE5vZGUuXG4gIGlmIChwb3NpdGlvbiAmJiBwb3NpdGlvbi5wb3NpdGlvbikge1xuICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucG9zaXRpb25cbiAgfVxuXG4gIGlmIChwb3NpdGlvbikge1xuICAgIC8vIFBvc2l0aW9uLlxuICAgIGlmIChwb3NpdGlvbi5zdGFydCkge1xuICAgICAgbG9jYXRpb24gPSBwb3NpdGlvblxuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5zdGFydFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQb2ludC5cbiAgICAgIGxvY2F0aW9uLnN0YXJ0ID0gcG9zaXRpb25cbiAgICB9XG4gIH1cblxuICBpZiAocmVhc29uLnN0YWNrKSB7XG4gICAgdGhpcy5zdGFjayA9IHJlYXNvbi5zdGFja1xuICAgIHJlYXNvbiA9IHJlYXNvbi5tZXNzYWdlXG4gIH1cblxuICB0aGlzLm1lc3NhZ2UgPSByZWFzb25cbiAgdGhpcy5uYW1lID0gcmFuZ2VcbiAgdGhpcy5yZWFzb24gPSByZWFzb25cbiAgdGhpcy5saW5lID0gcG9zaXRpb24gPyBwb3NpdGlvbi5saW5lIDogbnVsbFxuICB0aGlzLmNvbHVtbiA9IHBvc2l0aW9uID8gcG9zaXRpb24uY29sdW1uIDogbnVsbFxuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb25cbiAgdGhpcy5zb3VyY2UgPSBwYXJ0c1swXVxuICB0aGlzLnJ1bGVJZCA9IHBhcnRzWzFdXG59XG5cbmZ1bmN0aW9uIHBhcnNlT3JpZ2luKG9yaWdpbikge1xuICB2YXIgcmVzdWx0ID0gW251bGwsIG51bGxdXG4gIHZhciBpbmRleFxuXG4gIGlmICh0eXBlb2Ygb3JpZ2luID09PSAnc3RyaW5nJykge1xuICAgIGluZGV4ID0gb3JpZ2luLmluZGV4T2YoJzonKVxuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmVzdWx0WzFdID0gb3JpZ2luXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFswXSA9IG9yaWdpbi5zbGljZSgwLCBpbmRleClcbiAgICAgIHJlc3VsdFsxXSA9IG9yaWdpbi5zbGljZShpbmRleCArIDEpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwiZXhwb3J0IGRlZmF1bHQgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOlxuICAgICAgICAgICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDpcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSk7XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbi8vIGJhc2VkIG9mZiBodHRwczovL2dpdGh1Yi5jb20vZGVmdW5jdHpvbWJpZS9ub2RlLXByb2Nlc3MvYmxvYi9tYXN0ZXIvYnJvd3Nlci5qc1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbnZhciBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuaWYgKHR5cGVvZiBnbG9iYWwuc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xufVxuaWYgKHR5cGVvZiBnbG9iYWwuY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xufVxuXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5leHBvcnQgZnVuY3Rpb24gbmV4dFRpY2soZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn1cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5leHBvcnQgdmFyIHRpdGxlID0gJ2Jyb3dzZXInO1xuZXhwb3J0IHZhciBwbGF0Zm9ybSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgYnJvd3NlciA9IHRydWU7XG5leHBvcnQgdmFyIGVudiA9IHt9O1xuZXhwb3J0IHZhciBhcmd2ID0gW107XG5leHBvcnQgdmFyIHZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbmV4cG9ydCB2YXIgdmVyc2lvbnMgPSB7fTtcbmV4cG9ydCB2YXIgcmVsZWFzZSA9IHt9O1xuZXhwb3J0IHZhciBjb25maWcgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmV4cG9ydCB2YXIgb24gPSBub29wO1xuZXhwb3J0IHZhciBhZGRMaXN0ZW5lciA9IG5vb3A7XG5leHBvcnQgdmFyIG9uY2UgPSBub29wO1xuZXhwb3J0IHZhciBvZmYgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5leHBvcnQgdmFyIHJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5leHBvcnQgdmFyIGVtaXQgPSBub29wO1xuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZyhuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3dkICgpIHsgcmV0dXJuICcvJyB9XG5leHBvcnQgZnVuY3Rpb24gY2hkaXIgKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHVtYXNrKCkgeyByZXR1cm4gMDsgfVxuXG4vLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9rdW1hdmlzL2Jyb3dzZXItcHJvY2Vzcy1ocnRpbWUvYmxvYi9tYXN0ZXIvaW5kZXguanNcbnZhciBwZXJmb3JtYW5jZSA9IGdsb2JhbC5wZXJmb3JtYW5jZSB8fCB7fVxudmFyIHBlcmZvcm1hbmNlTm93ID1cbiAgcGVyZm9ybWFuY2Uubm93ICAgICAgICB8fFxuICBwZXJmb3JtYW5jZS5tb3pOb3cgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm1zTm93ICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uub05vdyAgICAgICB8fFxuICBwZXJmb3JtYW5jZS53ZWJraXROb3cgIHx8XG4gIGZ1bmN0aW9uKCl7IHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIH1cblxuLy8gZ2VuZXJhdGUgdGltZXN0YW1wIG9yIGRlbHRhXG4vLyBzZWUgaHR0cDovL25vZGVqcy5vcmcvYXBpL3Byb2Nlc3MuaHRtbCNwcm9jZXNzX3Byb2Nlc3NfaHJ0aW1lXG5leHBvcnQgZnVuY3Rpb24gaHJ0aW1lKHByZXZpb3VzVGltZXN0YW1wKXtcbiAgdmFyIGNsb2NrdGltZSA9IHBlcmZvcm1hbmNlTm93LmNhbGwocGVyZm9ybWFuY2UpKjFlLTNcbiAgdmFyIHNlY29uZHMgPSBNYXRoLmZsb29yKGNsb2NrdGltZSlcbiAgdmFyIG5hbm9zZWNvbmRzID0gTWF0aC5mbG9vcigoY2xvY2t0aW1lJTEpKjFlOSlcbiAgaWYgKHByZXZpb3VzVGltZXN0YW1wKSB7XG4gICAgc2Vjb25kcyA9IHNlY29uZHMgLSBwcmV2aW91c1RpbWVzdGFtcFswXVxuICAgIG5hbm9zZWNvbmRzID0gbmFub3NlY29uZHMgLSBwcmV2aW91c1RpbWVzdGFtcFsxXVxuICAgIGlmIChuYW5vc2Vjb25kczwwKSB7XG4gICAgICBzZWNvbmRzLS1cbiAgICAgIG5hbm9zZWNvbmRzICs9IDFlOVxuICAgIH1cbiAgfVxuICByZXR1cm4gW3NlY29uZHMsbmFub3NlY29uZHNdXG59XG5cbnZhciBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuZXhwb3J0IGZ1bmN0aW9uIHVwdGltZSgpIHtcbiAgdmFyIGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKTtcbiAgdmFyIGRpZiA9IGN1cnJlbnRUaW1lIC0gc3RhcnRUaW1lO1xuICByZXR1cm4gZGlmIC8gMTAwMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuZXh0VGljazogbmV4dFRpY2ssXG4gIHRpdGxlOiB0aXRsZSxcbiAgYnJvd3NlcjogYnJvd3NlcixcbiAgZW52OiBlbnYsXG4gIGFyZ3Y6IGFyZ3YsXG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHZlcnNpb25zOiB2ZXJzaW9ucyxcbiAgb246IG9uLFxuICBhZGRMaXN0ZW5lcjogYWRkTGlzdGVuZXIsXG4gIG9uY2U6IG9uY2UsXG4gIG9mZjogb2ZmLFxuICByZW1vdmVMaXN0ZW5lcjogcmVtb3ZlTGlzdGVuZXIsXG4gIHJlbW92ZUFsbExpc3RlbmVyczogcmVtb3ZlQWxsTGlzdGVuZXJzLFxuICBlbWl0OiBlbWl0LFxuICBiaW5kaW5nOiBiaW5kaW5nLFxuICBjd2Q6IGN3ZCxcbiAgY2hkaXI6IGNoZGlyLFxuICB1bWFzazogdW1hc2ssXG4gIGhydGltZTogaHJ0aW1lLFxuICBwbGF0Zm9ybTogcGxhdGZvcm0sXG4gIHJlbGVhc2U6IHJlbGVhc2UsXG4gIGNvbmZpZzogY29uZmlnLFxuICB1cHRpbWU6IHVwdGltZVxufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIFNwbGl0IGEgZmlsZW5hbWUgaW50byBbcm9vdCwgZGlyLCBiYXNlbmFtZSwgZXh0XSwgdW5peCB2ZXJzaW9uXG4vLyAncm9vdCcgaXMganVzdCBhIHNsYXNoLCBvciBub3RoaW5nLlxudmFyIHNwbGl0UGF0aFJlID1cbiAgICAvXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLztcbnZhciBzcGxpdFBhdGggPSBmdW5jdGlvbihmaWxlbmFtZSkge1xuICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG59O1xuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6ICcvJztcblxuICAgIC8vIFNraXAgZW1wdHkgYW5kIGludmFsaWQgZW50cmllc1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfSBlbHNlIGlmICghcGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihyZXNvbHZlZFBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhcmVzb2x2ZWRBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIHJldHVybiAoKHJlc29sdmVkQWJzb2x1dGUgPyAnLycgOiAnJykgKyByZXNvbHZlZFBhdGgpIHx8ICcuJztcbn07XG5cbi8vIHBhdGgubm9ybWFsaXplKHBhdGgpXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHBhdGgpIHtcbiAgdmFyIGlzUGF0aEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc1BhdGhBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIGlmICghcGF0aCAmJiAhaXNQYXRoQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNQYXRoQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn1cblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufVxuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgZnJvbSA9IHJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IHJlc29sdmUodG8pLnN1YnN0cigxKTtcblxuICBmdW5jdGlvbiB0cmltKGFycikge1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgZm9yICg7IHN0YXJ0IDwgYXJyLmxlbmd0aDsgc3RhcnQrKykge1xuICAgICAgaWYgKGFycltzdGFydF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgZW5kID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkge1xuICAgICAgaWYgKGFycltlbmRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTtcbiAgfVxuXG4gIHZhciBmcm9tUGFydHMgPSB0cmltKGZyb20uc3BsaXQoJy8nKSk7XG4gIHZhciB0b1BhcnRzID0gdHJpbSh0by5zcGxpdCgnLycpKTtcblxuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oZnJvbVBhcnRzLmxlbmd0aCwgdG9QYXJ0cy5sZW5ndGgpO1xuICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0c1tpXSkge1xuICAgICAgc2FtZVBhcnRzTGVuZ3RoID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvdXRwdXRQYXJ0cyA9IFtdO1xuICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0UGFydHMucHVzaCgnLi4nKTtcbiAgfVxuXG4gIG91dHB1dFBhcnRzID0gb3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7XG5cbiAgcmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oJy8nKTtcbn1cblxuZXhwb3J0IHZhciBzZXAgPSAnLyc7XG5leHBvcnQgdmFyIGRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aCkge1xuICByZXR1cm4gc3BsaXRQYXRoKHBhdGgpWzNdO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICBleHRuYW1lOiBleHRuYW1lLFxuICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gIGRpcm5hbWU6IGRpcm5hbWUsXG4gIHNlcDogc2VwLFxuICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgcmVsYXRpdmU6IHJlbGF0aXZlLFxuICBqb2luOiBqb2luLFxuICBpc0Fic29sdXRlOiBpc0Fic29sdXRlLFxuICBub3JtYWxpemU6IG5vcm1hbGl6ZSxcbiAgcmVzb2x2ZTogcmVzb2x2ZVxufTtcbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InID9cbiAgICBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH0gOlxuICAgIGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmZ1bmN0aW9uIHJlcGxhY2VFeHQobnBhdGgsIGV4dCkge1xuICBpZiAodHlwZW9mIG5wYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBucGF0aDtcbiAgfVxuXG4gIGlmIChucGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnBhdGg7XG4gIH1cblxuICB2YXIgbkZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShucGF0aCwgcGF0aC5leHRuYW1lKG5wYXRoKSkgKyBleHQ7XG4gIHJldHVybiBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG5wYXRoKSwgbkZpbGVOYW1lKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXBsYWNlRXh0O1xuIiwiLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmXG4gICAgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG52YXIgcmVwbGFjZSA9IHJlcXVpcmUoJ3JlcGxhY2UtZXh0JylcbnZhciBidWZmZXIgPSByZXF1aXJlKCdpcy1idWZmZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZGaWxlXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxudmFyIHByb3RvID0gVkZpbGUucHJvdG90eXBlXG5cbi8vIE9yZGVyIG9mIHNldHRpbmcgKGxlYXN0IHNwZWNpZmljIHRvIG1vc3QpLCB3ZSBuZWVkIHRoaXMgYmVjYXVzZSBvdGhlcndpc2Vcbi8vIGB7c3RlbTogJ2EnLCBwYXRoOiAnfi9iLmpzJ31gIHdvdWxkIHRocm93LCBhcyBhIHBhdGggaXMgbmVlZGVkIGJlZm9yZSBhXG4vLyBzdGVtIGNhbiBiZSBzZXQuXG52YXIgb3JkZXIgPSBbJ2hpc3RvcnknLCAncGF0aCcsICdiYXNlbmFtZScsICdzdGVtJywgJ2V4dG5hbWUnLCAnZGlybmFtZSddXG5cbnByb3RvLnRvU3RyaW5nID0gdG9TdHJpbmdcblxuLy8gQWNjZXNzIGZ1bGwgcGF0aCAoYH4vaW5kZXgubWluLmpzYCkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdwYXRoJywge2dldDogZ2V0UGF0aCwgc2V0OiBzZXRQYXRofSlcblxuLy8gQWNjZXNzIHBhcmVudCBwYXRoIChgfmApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnZGlybmFtZScsIHtnZXQ6IGdldERpcm5hbWUsIHNldDogc2V0RGlybmFtZX0pXG5cbi8vIEFjY2VzcyBiYXNlbmFtZSAoYGluZGV4Lm1pbi5qc2ApLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnYmFzZW5hbWUnLCB7Z2V0OiBnZXRCYXNlbmFtZSwgc2V0OiBzZXRCYXNlbmFtZX0pXG5cbi8vIEFjY2VzcyBleHRuYW1lIChgLmpzYCkuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdleHRuYW1lJywge2dldDogZ2V0RXh0bmFtZSwgc2V0OiBzZXRFeHRuYW1lfSlcblxuLy8gQWNjZXNzIHN0ZW0gKGBpbmRleC5taW5gKS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ3N0ZW0nLCB7Z2V0OiBnZXRTdGVtLCBzZXQ6IHNldFN0ZW19KVxuXG4vLyBDb25zdHJ1Y3QgYSBuZXcgZmlsZS5cbmZ1bmN0aW9uIFZGaWxlKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgfHwgYnVmZmVyKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHtjb250ZW50czogb3B0aW9uc31cbiAgfSBlbHNlIGlmICgnbWVzc2FnZScgaW4gb3B0aW9ucyAmJiAnbWVzc2FnZXMnIGluIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9uc1xuICB9XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFZGaWxlKSkge1xuICAgIHJldHVybiBuZXcgVkZpbGUob3B0aW9ucylcbiAgfVxuXG4gIHRoaXMuZGF0YSA9IHt9XG4gIHRoaXMubWVzc2FnZXMgPSBbXVxuICB0aGlzLmhpc3RvcnkgPSBbXVxuICB0aGlzLmN3ZCA9IHByb2Nlc3MuY3dkKClcblxuICAvLyBTZXQgcGF0aCByZWxhdGVkIHByb3BlcnRpZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gb3JkZXIubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcm9wID0gb3JkZXJbaW5kZXhdXG5cbiAgICBpZiAob3duLmNhbGwob3B0aW9ucywgcHJvcCkpIHtcbiAgICAgIHRoaXNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IG5vbi1wYXRoIHJlbGF0ZWQgcHJvcGVydGllcy5cbiAgZm9yIChwcm9wIGluIG9wdGlvbnMpIHtcbiAgICBpZiAob3JkZXIuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHtcbiAgICAgIHRoaXNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBhdGgoKSB7XG4gIHJldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDFdXG59XG5cbmZ1bmN0aW9uIHNldFBhdGgocGF0aCkge1xuICBhc3NlcnROb25FbXB0eShwYXRoLCAncGF0aCcpXG5cbiAgaWYgKHBhdGggIT09IHRoaXMucGF0aCkge1xuICAgIHRoaXMuaGlzdG9yeS5wdXNoKHBhdGgpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGlybmFtZSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5kaXJuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gc2V0RGlybmFtZShkaXJuYW1lKSB7XG4gIGFzc2VydFBhdGgodGhpcy5wYXRoLCAnZGlybmFtZScpXG4gIHRoaXMucGF0aCA9IHBhdGguam9pbihkaXJuYW1lIHx8ICcnLCB0aGlzLmJhc2VuYW1lKVxufVxuXG5mdW5jdGlvbiBnZXRCYXNlbmFtZSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5iYXNlbmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNldEJhc2VuYW1lKGJhc2VuYW1lKSB7XG4gIGFzc2VydE5vbkVtcHR5KGJhc2VuYW1lLCAnYmFzZW5hbWUnKVxuICBhc3NlcnRQYXJ0KGJhc2VuYW1lLCAnYmFzZW5hbWUnKVxuICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBiYXNlbmFtZSlcbn1cblxuZnVuY3Rpb24gZ2V0RXh0bmFtZSgpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5leHRuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gc2V0RXh0bmFtZShleHRuYW1lKSB7XG4gIHZhciBleHQgPSBleHRuYW1lIHx8ICcnXG5cbiAgYXNzZXJ0UGFydChleHQsICdleHRuYW1lJylcbiAgYXNzZXJ0UGF0aCh0aGlzLnBhdGgsICdleHRuYW1lJylcblxuICBpZiAoZXh0KSB7XG4gICAgaWYgKGV4dC5jaGFyQXQoMCkgIT09ICcuJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgbXVzdCBzdGFydCB3aXRoIGAuYCcpXG4gICAgfVxuXG4gICAgaWYgKGV4dC5pbmRleE9mKCcuJywgMSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnBhdGggPSByZXBsYWNlKHRoaXMucGF0aCwgZXh0KVxufVxuXG5mdW5jdGlvbiBnZXRTdGVtKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZydcbiAgICA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoLCB0aGlzLmV4dG5hbWUpXG4gICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gc2V0U3RlbShzdGVtKSB7XG4gIGFzc2VydE5vbkVtcHR5KHN0ZW0sICdzdGVtJylcbiAgYXNzZXJ0UGFydChzdGVtLCAnc3RlbScpXG4gIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUgfHwgJycsIHN0ZW0gKyAodGhpcy5leHRuYW1lIHx8ICcnKSlcbn1cblxuLy8gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgZmlsZS5cbmZ1bmN0aW9uIHRvU3RyaW5nKGVuY29kaW5nKSB7XG4gIHZhciB2YWx1ZSA9IHRoaXMuY29udGVudHMgfHwgJydcbiAgcmV0dXJuIGJ1ZmZlcih2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZyhlbmNvZGluZykgOiBTdHJpbmcodmFsdWUpXG59XG5cbi8vIEFzc2VydCB0aGF0IGBwYXJ0YCBpcyBub3QgYSBwYXRoIChpLmUuLCBkb2VzIG5vdCBjb250YWluIGBwYXRoLnNlcGApLlxuZnVuY3Rpb24gYXNzZXJ0UGFydChwYXJ0LCBuYW1lKSB7XG4gIGlmIChwYXJ0LmluZGV4T2YocGF0aC5zZXApICE9PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgJyArIG5hbWUgKyAnYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgJyArIHBhdGguc2VwICsgJ2AnXG4gICAgKVxuICB9XG59XG5cbi8vIEFzc2VydCB0aGF0IGBwYXJ0YCBpcyBub3QgZW1wdHkuXG5mdW5jdGlvbiBhc3NlcnROb25FbXB0eShwYXJ0LCBuYW1lKSB7XG4gIGlmICghcGFydCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGVtcHR5JylcbiAgfVxufVxuXG4vLyBBc3NlcnQgYHBhdGhgIGV4aXN0cy5cbmZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aCwgbmFtZSkge1xuICBpZiAoIXBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmcgYCcgKyBuYW1lICsgJ2AgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b28nKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIFZNZXNzYWdlID0gcmVxdWlyZSgndmZpbGUtbWVzc2FnZScpXG52YXIgVkZpbGUgPSByZXF1aXJlKCcuL2NvcmUuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZGaWxlXG5cbnZhciBwcm90byA9IFZGaWxlLnByb3RvdHlwZVxuXG5wcm90by5tZXNzYWdlID0gbWVzc2FnZVxucHJvdG8uaW5mbyA9IGluZm9cbnByb3RvLmZhaWwgPSBmYWlsXG5cbi8vIENyZWF0ZSBhIG1lc3NhZ2Ugd2l0aCBgcmVhc29uYCBhdCBgcG9zaXRpb25gLlxuLy8gV2hlbiBhbiBlcnJvciBpcyBwYXNzZWQgaW4gYXMgYHJlYXNvbmAsIGNvcGllcyB0aGUgc3RhY2suXG5mdW5jdGlvbiBtZXNzYWdlKHJlYXNvbiwgcG9zaXRpb24sIG9yaWdpbikge1xuICB2YXIgZmlsZVBhdGggPSB0aGlzLnBhdGhcbiAgdmFyIG1lc3NhZ2UgPSBuZXcgVk1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbiwgb3JpZ2luKVxuXG4gIGlmIChmaWxlUGF0aCkge1xuICAgIG1lc3NhZ2UubmFtZSA9IGZpbGVQYXRoICsgJzonICsgbWVzc2FnZS5uYW1lXG4gICAgbWVzc2FnZS5maWxlID0gZmlsZVBhdGhcbiAgfVxuXG4gIG1lc3NhZ2UuZmF0YWwgPSBmYWxzZVxuXG4gIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKVxuXG4gIHJldHVybiBtZXNzYWdlXG59XG5cbi8vIEZhaWw6IGNyZWF0ZXMgYSB2bWVzc2FnZSwgYXNzb2NpYXRlcyBpdCB3aXRoIHRoZSBmaWxlLCBhbmQgdGhyb3dzIGl0LlxuZnVuY3Rpb24gZmFpbCgpIHtcbiAgdmFyIG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuXG4gIG1lc3NhZ2UuZmF0YWwgPSB0cnVlXG5cbiAgdGhyb3cgbWVzc2FnZVxufVxuXG4vLyBJbmZvOiBjcmVhdGVzIGEgdm1lc3NhZ2UsIGFzc29jaWF0ZXMgaXQgd2l0aCB0aGUgZmlsZSwgYW5kIG1hcmtzIHRoZSBmYXRhbGl0eVxuLy8gYXMgbnVsbC5cbmZ1bmN0aW9uIGluZm8oKSB7XG4gIHZhciBtZXNzYWdlID0gdGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcblxuICBtZXNzYWdlLmZhdGFsID0gbnVsbFxuXG4gIHJldHVybiBtZXNzYWdlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHNsaWNlID0gW10uc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSB3cmFwXG5cbi8vIFdyYXAgYGZuYC5cbi8vIENhbiBiZSBzeW5jIG9yIGFzeW5jOyByZXR1cm4gYSBwcm9taXNlLCByZWNlaXZlIGEgY29tcGxldGlvbiBoYW5kbGVyLCByZXR1cm5cbi8vIG5ldyB2YWx1ZXMgYW5kIGVycm9ycy5cbmZ1bmN0aW9uIHdyYXAoZm4sIGNhbGxiYWNrKSB7XG4gIHZhciBpbnZva2VkXG5cbiAgcmV0dXJuIHdyYXBwZWRcblxuICBmdW5jdGlvbiB3cmFwcGVkKCkge1xuICAgIHZhciBwYXJhbXMgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMClcbiAgICB2YXIgY2FsbGJhY2sgPSBmbi5sZW5ndGggPiBwYXJhbXMubGVuZ3RoXG4gICAgdmFyIHJlc3VsdFxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBwYXJhbXMucHVzaChkb25lKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBmbi5hcHBseShudWxsLCBwYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFdlbGwsIHRoaXMgaXMgcXVpdGUgdGhlIHBpY2tsZS5cbiAgICAgIC8vIGBmbmAgcmVjZWl2ZWQgYSBjYWxsYmFjayBhbmQgaW52b2tlZCBpdCAodGh1cyBjb250aW51aW5nIHRoZSBwaXBlbGluZSksXG4gICAgICAvLyBidXQgbGF0ZXIgYWxzbyB0aHJldyBhbiBlcnJvci5cbiAgICAgIC8vIFdl4oCZcmUgbm90IGFib3V0IHRvIHJlc3RhcnQgdGhlIHBpcGVsaW5lIGFnYWluLCBzbyB0aGUgb25seSB0aGluZyBsZWZ0XG4gICAgICAvLyB0byBkbyBpcyB0byB0aHJvdyB0aGUgdGhpbmcgaW5zdGVhZC5cbiAgICAgIGlmIChjYWxsYmFjayAmJiBpbnZva2VkKSB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb25lKGVycm9yKVxuICAgIH1cblxuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlc3VsdC50aGVuKHRoZW4sIGRvbmUpXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGRvbmUocmVzdWx0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhlbihyZXN1bHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW52b2tlIGBuZXh0YCwgb25seSBvbmNlLlxuICBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmICghaW52b2tlZCkge1xuICAgICAgaW52b2tlZCA9IHRydWVcblxuICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuXG4gIC8vIEludm9rZSBgZG9uZWAgd2l0aCBvbmUgdmFsdWUuXG4gIC8vIFRyYWNrcyBpZiBhbiBlcnJvciBpcyBwYXNzZWQsIHRvby5cbiAgZnVuY3Rpb24gdGhlbih2YWx1ZSkge1xuICAgIGRvbmUobnVsbCwgdmFsdWUpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd3JhcCA9IHJlcXVpcmUoJy4vd3JhcC5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gdHJvdWdoXG5cbnRyb3VnaC53cmFwID0gd3JhcFxuXG52YXIgc2xpY2UgPSBbXS5zbGljZVxuXG4vLyBDcmVhdGUgbmV3IG1pZGRsZXdhcmUuXG5mdW5jdGlvbiB0cm91Z2goKSB7XG4gIHZhciBmbnMgPSBbXVxuICB2YXIgbWlkZGxld2FyZSA9IHt9XG5cbiAgbWlkZGxld2FyZS5ydW4gPSBydW5cbiAgbWlkZGxld2FyZS51c2UgPSB1c2VcblxuICByZXR1cm4gbWlkZGxld2FyZVxuXG4gIC8vIFJ1biBgZm5zYC4gIExhc3QgYXJndW1lbnQgbXVzdCBiZSBhIGNvbXBsZXRpb24gaGFuZGxlci5cbiAgZnVuY3Rpb24gcnVuKCkge1xuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGlucHV0ID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKVxuICAgIHZhciBkb25lID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXVxuXG4gICAgaWYgKHR5cGVvZiBkb25lICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uIGFzIGxhc3QgYXJndW1lbnQsIG5vdCAnICsgZG9uZSlcbiAgICB9XG5cbiAgICBuZXh0LmFwcGx5KG51bGwsIFtudWxsXS5jb25jYXQoaW5wdXQpKVxuXG4gICAgLy8gUnVuIHRoZSBuZXh0IGBmbmAsIGlmIGFueS5cbiAgICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgICAgdmFyIGZuID0gZm5zWysraW5kZXhdXG4gICAgICB2YXIgcGFyYW1zID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApXG4gICAgICB2YXIgdmFsdWVzID0gcGFyYW1zLnNsaWNlKDEpXG4gICAgICB2YXIgbGVuZ3RoID0gaW5wdXQubGVuZ3RoXG4gICAgICB2YXIgcG9zID0gLTFcblxuICAgICAgaWYgKGVycikge1xuICAgICAgICBkb25lKGVycilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIENvcHkgbm9uLW51bGx5IGlucHV0IGludG8gdmFsdWVzLlxuICAgICAgd2hpbGUgKCsrcG9zIDwgbGVuZ3RoKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbcG9zXSA9PT0gbnVsbCB8fCB2YWx1ZXNbcG9zXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVzW3Bvc10gPSBpbnB1dFtwb3NdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5wdXQgPSB2YWx1ZXNcblxuICAgICAgLy8gTmV4dCBvciBkb25lLlxuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHdyYXAoZm4sIG5leHQpLmFwcGx5KG51bGwsIGlucHV0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9uZS5hcHBseShudWxsLCBbbnVsbF0uY29uY2F0KGlucHV0KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBZGQgYGZuYCB0byB0aGUgbGlzdC5cbiAgZnVuY3Rpb24gdXNlKGZuKSB7XG4gICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBgZm5gIHRvIGJlIGEgZnVuY3Rpb24sIG5vdCAnICsgZm4pXG4gICAgfVxuXG4gICAgZm5zLnB1c2goZm4pXG5cbiAgICByZXR1cm4gbWlkZGxld2FyZVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWUgPT4ge1xuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuXHRyZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHt9KTtcbn07XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGV4dGVuZCA9IHJlcXVpcmUoJ2V4dGVuZCcpXG52YXIgYmFpbCA9IHJlcXVpcmUoJ2JhaWwnKVxudmFyIHZmaWxlID0gcmVxdWlyZSgndmZpbGUnKVxudmFyIHRyb3VnaCA9IHJlcXVpcmUoJ3Ryb3VnaCcpXG52YXIgcGxhaW4gPSByZXF1aXJlKCdpcy1wbGFpbi1vYmonKVxuXG4vLyBFeHBvc2UgYSBmcm96ZW4gcHJvY2Vzc29yLlxubW9kdWxlLmV4cG9ydHMgPSB1bmlmaWVkKCkuZnJlZXplKClcblxudmFyIHNsaWNlID0gW10uc2xpY2VcbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBQcm9jZXNzIHBpcGVsaW5lLlxudmFyIHBpcGVsaW5lID0gdHJvdWdoKClcbiAgLnVzZShwaXBlbGluZVBhcnNlKVxuICAudXNlKHBpcGVsaW5lUnVuKVxuICAudXNlKHBpcGVsaW5lU3RyaW5naWZ5KVxuXG5mdW5jdGlvbiBwaXBlbGluZVBhcnNlKHAsIGN0eCkge1xuICBjdHgudHJlZSA9IHAucGFyc2UoY3R4LmZpbGUpXG59XG5cbmZ1bmN0aW9uIHBpcGVsaW5lUnVuKHAsIGN0eCwgbmV4dCkge1xuICBwLnJ1bihjdHgudHJlZSwgY3R4LmZpbGUsIGRvbmUpXG5cbiAgZnVuY3Rpb24gZG9uZShlcnIsIHRyZWUsIGZpbGUpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBuZXh0KGVycilcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnRyZWUgPSB0cmVlXG4gICAgICBjdHguZmlsZSA9IGZpbGVcbiAgICAgIG5leHQoKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwaXBlbGluZVN0cmluZ2lmeShwLCBjdHgpIHtcbiAgY3R4LmZpbGUuY29udGVudHMgPSBwLnN0cmluZ2lmeShjdHgudHJlZSwgY3R4LmZpbGUpXG59XG5cbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgZmlyc3QgcHJvY2Vzc29yLlxuZnVuY3Rpb24gdW5pZmllZCgpIHtcbiAgdmFyIGF0dGFjaGVycyA9IFtdXG4gIHZhciB0cmFuc2Zvcm1lcnMgPSB0cm91Z2goKVxuICB2YXIgbmFtZXNwYWNlID0ge31cbiAgdmFyIGZyb3plbiA9IGZhbHNlXG4gIHZhciBmcmVlemVJbmRleCA9IC0xXG5cbiAgLy8gRGF0YSBtYW5hZ2VtZW50LlxuICBwcm9jZXNzb3IuZGF0YSA9IGRhdGFcblxuICAvLyBMb2NrLlxuICBwcm9jZXNzb3IuZnJlZXplID0gZnJlZXplXG5cbiAgLy8gUGx1Z2lucy5cbiAgcHJvY2Vzc29yLmF0dGFjaGVycyA9IGF0dGFjaGVyc1xuICBwcm9jZXNzb3IudXNlID0gdXNlXG5cbiAgLy8gQVBJLlxuICBwcm9jZXNzb3IucGFyc2UgPSBwYXJzZVxuICBwcm9jZXNzb3Iuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG4gIHByb2Nlc3Nvci5ydW4gPSBydW5cbiAgcHJvY2Vzc29yLnJ1blN5bmMgPSBydW5TeW5jXG4gIHByb2Nlc3Nvci5wcm9jZXNzID0gcHJvY2Vzc1xuICBwcm9jZXNzb3IucHJvY2Vzc1N5bmMgPSBwcm9jZXNzU3luY1xuXG4gIC8vIEV4cG9zZS5cbiAgcmV0dXJuIHByb2Nlc3NvclxuXG4gIC8vIENyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgYmFzZWQgb24gdGhlIHByb2Nlc3NvciBpbiB0aGUgY3VycmVudCBzY29wZS5cbiAgZnVuY3Rpb24gcHJvY2Vzc29yKCkge1xuICAgIHZhciBkZXN0aW5hdGlvbiA9IHVuaWZpZWQoKVxuICAgIHZhciBsZW5ndGggPSBhdHRhY2hlcnMubGVuZ3RoXG4gICAgdmFyIGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBkZXN0aW5hdGlvbi51c2UuYXBwbHkobnVsbCwgYXR0YWNoZXJzW2luZGV4XSlcbiAgICB9XG5cbiAgICBkZXN0aW5hdGlvbi5kYXRhKGV4dGVuZCh0cnVlLCB7fSwgbmFtZXNwYWNlKSlcblxuICAgIHJldHVybiBkZXN0aW5hdGlvblxuICB9XG5cbiAgLy8gRnJlZXplOiB1c2VkIHRvIHNpZ25hbCBhIHByb2Nlc3NvciB0aGF0IGhhcyBmaW5pc2hlZCBjb25maWd1cmF0aW9uLlxuICAvL1xuICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB1bmlmaWVkIGl0c2VsZjogaXTigJlzIGZyb3plbi5cbiAgLy8gUGx1Z2lucyBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGl0LlxuICAvLyBSYXRoZXIsIGl0IHNob3VsZCBiZSBleHRlbmRlZCwgYnkgaW52b2tpbmcgaXQsIGJlZm9yZSBtb2RpZnlpbmcgaXQuXG4gIC8vXG4gIC8vIEluIGVzc2VuY2UsIGFsd2F5cyBpbnZva2UgdGhpcyB3aGVuIGV4cG9ydGluZyBhIHByb2Nlc3Nvci5cbiAgZnVuY3Rpb24gZnJlZXplKCkge1xuICAgIHZhciB2YWx1ZXNcbiAgICB2YXIgcGx1Z2luXG4gICAgdmFyIG9wdGlvbnNcbiAgICB2YXIgdHJhbnNmb3JtZXJcblxuICAgIGlmIChmcm96ZW4pIHtcbiAgICAgIHJldHVybiBwcm9jZXNzb3JcbiAgICB9XG5cbiAgICB3aGlsZSAoKytmcmVlemVJbmRleCA8IGF0dGFjaGVycy5sZW5ndGgpIHtcbiAgICAgIHZhbHVlcyA9IGF0dGFjaGVyc1tmcmVlemVJbmRleF1cbiAgICAgIHBsdWdpbiA9IHZhbHVlc1swXVxuICAgICAgb3B0aW9ucyA9IHZhbHVlc1sxXVxuICAgICAgdHJhbnNmb3JtZXIgPSBudWxsXG5cbiAgICAgIGlmIChvcHRpb25zID09PSBmYWxzZSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgICB2YWx1ZXNbMV0gPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtZXIgPSBwbHVnaW4uYXBwbHkocHJvY2Vzc29yLCB2YWx1ZXMuc2xpY2UoMSkpXG5cbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJhbnNmb3JtZXJzLnVzZSh0cmFuc2Zvcm1lcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcm96ZW4gPSB0cnVlXG4gICAgZnJlZXplSW5kZXggPSBJbmZpbml0eVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuICB9XG5cbiAgLy8gRGF0YSBtYW5hZ2VtZW50LlxuICAvLyBHZXR0ZXIgLyBzZXR0ZXIgZm9yIHByb2Nlc3Nvci1zcGVjaWZpYyBpbmZvcm10aW9uLlxuICBmdW5jdGlvbiBkYXRhKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFNldCBga2V5YC5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGFzc2VydFVuZnJvemVuKCdkYXRhJywgZnJvemVuKVxuXG4gICAgICAgIG5hbWVzcGFjZVtrZXldID0gdmFsdWVcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCBga2V5YC5cbiAgICAgIHJldHVybiAob3duLmNhbGwobmFtZXNwYWNlLCBrZXkpICYmIG5hbWVzcGFjZVtrZXldKSB8fCBudWxsXG4gICAgfVxuXG4gICAgLy8gU2V0IHNwYWNlLlxuICAgIGlmIChrZXkpIHtcbiAgICAgIGFzc2VydFVuZnJvemVuKCdkYXRhJywgZnJvemVuKVxuICAgICAgbmFtZXNwYWNlID0ga2V5XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgLy8gR2V0IHNwYWNlLlxuICAgIHJldHVybiBuYW1lc3BhY2VcbiAgfVxuXG4gIC8vIFBsdWdpbiBtYW5hZ2VtZW50LlxuICAvL1xuICAvLyBQYXNzIGl0OlxuICAvLyAqICAgYW4gYXR0YWNoZXIgYW5kIG9wdGlvbnMsXG4gIC8vICogICBhIHByZXNldCxcbiAgLy8gKiAgIGEgbGlzdCBvZiBwcmVzZXRzLCBhdHRhY2hlcnMsIGFuZCBhcmd1bWVudHMgKGxpc3Qgb2YgYXR0YWNoZXJzIGFuZFxuICAvLyAgICAgb3B0aW9ucykuXG4gIGZ1bmN0aW9uIHVzZSh2YWx1ZSkge1xuICAgIHZhciBzZXR0aW5nc1xuXG4gICAgYXNzZXJ0VW5mcm96ZW4oJ3VzZScsIGZyb3plbilcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFbXB0eS5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYWRkUGx1Z2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICgnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgICBhZGRMaXN0KHZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkUHJlc2V0KHZhbHVlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAnICsgdmFsdWUgKyAnYCcpXG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICBuYW1lc3BhY2Uuc2V0dGluZ3MgPSBleHRlbmQobmFtZXNwYWNlLnNldHRpbmdzIHx8IHt9LCBzZXR0aW5ncylcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yXG5cbiAgICBmdW5jdGlvbiBhZGRQcmVzZXQocmVzdWx0KSB7XG4gICAgICBhZGRMaXN0KHJlc3VsdC5wbHVnaW5zKVxuXG4gICAgICBpZiAocmVzdWx0LnNldHRpbmdzKSB7XG4gICAgICAgIHNldHRpbmdzID0gZXh0ZW5kKHNldHRpbmdzIHx8IHt9LCByZXN1bHQuc2V0dGluZ3MpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGFkZFBsdWdpbih2YWx1ZSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAgICAgICBhZGRQbHVnaW4uYXBwbHkobnVsbCwgdmFsdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkUHJlc2V0KHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAnICsgdmFsdWUgKyAnYCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTGlzdChwbHVnaW5zKSB7XG4gICAgICB2YXIgbGVuZ3RoXG4gICAgICB2YXIgaW5kZXhcblxuICAgICAgaWYgKHBsdWdpbnMgPT09IG51bGwgfHwgcGx1Z2lucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIEVtcHR5LlxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGx1Z2lucyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gcGx1Z2lucykge1xuICAgICAgICBsZW5ndGggPSBwbHVnaW5zLmxlbmd0aFxuICAgICAgICBpbmRleCA9IC0xXG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhZGQocGx1Z2luc1tpbmRleF0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYSBsaXN0IG9mIHBsdWdpbnMsIG5vdCBgJyArIHBsdWdpbnMgKyAnYCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkUGx1Z2luKHBsdWdpbiwgdmFsdWUpIHtcbiAgICAgIHZhciBlbnRyeSA9IGZpbmQocGx1Z2luKVxuXG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgaWYgKHBsYWluKGVudHJ5WzFdKSAmJiBwbGFpbih2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IGV4dGVuZChlbnRyeVsxXSwgdmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBlbnRyeVsxXSA9IHZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdHRhY2hlcnMucHVzaChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZChwbHVnaW4pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXR0YWNoZXJzLmxlbmd0aFxuICAgIHZhciBpbmRleCA9IC0xXG4gICAgdmFyIGVudHJ5XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgZW50cnkgPSBhdHRhY2hlcnNbaW5kZXhdXG5cbiAgICAgIGlmIChlbnRyeVswXSA9PT0gcGx1Z2luKSB7XG4gICAgICAgIHJldHVybiBlbnRyeVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlIGEgZmlsZSAoaW4gc3RyaW5nIG9yIHZmaWxlIHJlcHJlc2VudGF0aW9uKSBpbnRvIGEgdW5pc3Qgbm9kZSB1c2luZ1xuICAvLyB0aGUgYFBhcnNlcmAgb24gdGhlIHByb2Nlc3Nvci5cbiAgZnVuY3Rpb24gcGFyc2UoZG9jKSB7XG4gICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgdmFyIFBhcnNlclxuXG4gICAgZnJlZXplKClcbiAgICBQYXJzZXIgPSBwcm9jZXNzb3IuUGFyc2VyXG4gICAgYXNzZXJ0UGFyc2VyKCdwYXJzZScsIFBhcnNlcilcblxuICAgIGlmIChuZXdhYmxlKFBhcnNlciwgJ3BhcnNlJykpIHtcbiAgICAgIHJldHVybiBuZXcgUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkucGFyc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBQYXJzZXIoU3RyaW5nKGZpbGUpLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8vIFJ1biB0cmFuc2Zvcm1zIG9uIGEgdW5pc3Qgbm9kZSByZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgKGluIHN0cmluZyBvclxuICAvLyB2ZmlsZSByZXByZXNlbnRhdGlvbiksIGFzeW5jLlxuICBmdW5jdGlvbiBydW4obm9kZSwgZmlsZSwgY2IpIHtcbiAgICBhc3NlcnROb2RlKG5vZGUpXG4gICAgZnJlZXplKClcblxuICAgIGlmICghY2IgJiYgdHlwZW9mIGZpbGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNiID0gZmlsZVxuICAgICAgZmlsZSA9IG51bGxcbiAgICB9XG5cbiAgICBpZiAoIWNiKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2IpXG5cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHRyYW5zZm9ybWVycy5ydW4obm9kZSwgdmZpbGUoZmlsZSksIGRvbmUpXG5cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyLCB0cmVlLCBmaWxlKSB7XG4gICAgICAgIHRyZWUgPSB0cmVlIHx8IG5vZGVcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUodHJlZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYihudWxsLCB0cmVlLCBmaWxlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUnVuIHRyYW5zZm9ybXMgb24gYSB1bmlzdCBub2RlIHJlcHJlc2VudGF0aW9uIG9mIGEgZmlsZSAoaW4gc3RyaW5nIG9yXG4gIC8vIHZmaWxlIHJlcHJlc2VudGF0aW9uKSwgc3luYy5cbiAgZnVuY3Rpb24gcnVuU3luYyhub2RlLCBmaWxlKSB7XG4gICAgdmFyIGNvbXBsZXRlID0gZmFsc2VcbiAgICB2YXIgcmVzdWx0XG5cbiAgICBydW4obm9kZSwgZmlsZSwgZG9uZSlcblxuICAgIGFzc2VydERvbmUoJ3J1blN5bmMnLCAncnVuJywgY29tcGxldGUpXG5cbiAgICByZXR1cm4gcmVzdWx0XG5cbiAgICBmdW5jdGlvbiBkb25lKGVyciwgdHJlZSkge1xuICAgICAgY29tcGxldGUgPSB0cnVlXG4gICAgICBiYWlsKGVycilcbiAgICAgIHJlc3VsdCA9IHRyZWVcbiAgICB9XG4gIH1cblxuICAvLyBTdHJpbmdpZnkgYSB1bmlzdCBub2RlIHJlcHJlc2VudGF0aW9uIG9mIGEgZmlsZSAoaW4gc3RyaW5nIG9yIHZmaWxlXG4gIC8vIHJlcHJlc2VudGF0aW9uKSBpbnRvIGEgc3RyaW5nIHVzaW5nIHRoZSBgQ29tcGlsZXJgIG9uIHRoZSBwcm9jZXNzb3IuXG4gIGZ1bmN0aW9uIHN0cmluZ2lmeShub2RlLCBkb2MpIHtcbiAgICB2YXIgZmlsZSA9IHZmaWxlKGRvYylcbiAgICB2YXIgQ29tcGlsZXJcblxuICAgIGZyZWV6ZSgpXG4gICAgQ29tcGlsZXIgPSBwcm9jZXNzb3IuQ29tcGlsZXJcbiAgICBhc3NlcnRDb21waWxlcignc3RyaW5naWZ5JywgQ29tcGlsZXIpXG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuXG4gICAgaWYgKG5ld2FibGUoQ29tcGlsZXIsICdjb21waWxlJykpIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZXIobm9kZSwgZmlsZSkuY29tcGlsZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIENvbXBpbGVyKG5vZGUsIGZpbGUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB9XG5cbiAgLy8gUGFyc2UgYSBmaWxlIChpbiBzdHJpbmcgb3IgdmZpbGUgcmVwcmVzZW50YXRpb24pIGludG8gYSB1bmlzdCBub2RlIHVzaW5nXG4gIC8vIHRoZSBgUGFyc2VyYCBvbiB0aGUgcHJvY2Vzc29yLCB0aGVuIHJ1biB0cmFuc2Zvcm1zIG9uIHRoYXQgbm9kZSwgYW5kXG4gIC8vIGNvbXBpbGUgdGhlIHJlc3VsdGluZyBub2RlIHVzaW5nIHRoZSBgQ29tcGlsZXJgIG9uIHRoZSBwcm9jZXNzb3IsIGFuZFxuICAvLyBzdG9yZSB0aGF0IHJlc3VsdCBvbiB0aGUgdmZpbGUuXG4gIGZ1bmN0aW9uIHByb2Nlc3MoZG9jLCBjYikge1xuICAgIGZyZWV6ZSgpXG4gICAgYXNzZXJ0UGFyc2VyKCdwcm9jZXNzJywgcHJvY2Vzc29yLlBhcnNlcilcbiAgICBhc3NlcnRDb21waWxlcigncHJvY2VzcycsIHByb2Nlc3Nvci5Db21waWxlcilcblxuICAgIGlmICghY2IpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShleGVjdXRvcilcbiAgICB9XG5cbiAgICBleGVjdXRvcihudWxsLCBjYilcblxuICAgIGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGZpbGUgPSB2ZmlsZShkb2MpXG5cbiAgICAgIHBpcGVsaW5lLnJ1bihwcm9jZXNzb3IsIHtmaWxlOiBmaWxlfSwgZG9uZSlcblxuICAgICAgZnVuY3Rpb24gZG9uZShlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUoZmlsZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYihudWxsLCBmaWxlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJvY2VzcyB0aGUgZ2l2ZW4gZG9jdW1lbnQgKGluIHN0cmluZyBvciB2ZmlsZSByZXByZXNlbnRhdGlvbiksIHN5bmMuXG4gIGZ1bmN0aW9uIHByb2Nlc3NTeW5jKGRvYykge1xuICAgIHZhciBjb21wbGV0ZSA9IGZhbHNlXG4gICAgdmFyIGZpbGVcblxuICAgIGZyZWV6ZSgpXG4gICAgYXNzZXJ0UGFyc2VyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3NTeW5jJywgcHJvY2Vzc29yLkNvbXBpbGVyKVxuICAgIGZpbGUgPSB2ZmlsZShkb2MpXG5cbiAgICBwcm9jZXNzKGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdwcm9jZXNzU3luYycsICdwcm9jZXNzJywgY29tcGxldGUpXG5cbiAgICByZXR1cm4gZmlsZVxuXG4gICAgZnVuY3Rpb24gZG9uZShlcnIpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYmFpbChlcnIpXG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIGlmIGB2YWx1ZWAgaXMgYSBjb25zdHJ1Y3Rvci5cbmZ1bmN0aW9uIG5ld2FibGUodmFsdWUsIG5hbWUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB2YWx1ZS5wcm90b3R5cGUgJiZcbiAgICAvLyBBIGZ1bmN0aW9uIHdpdGgga2V5cyBpbiBpdHMgcHJvdG90eXBlIGlzIHByb2JhYmx5IGEgY29uc3RydWN0b3IuXG4gICAgLy8gQ2xhc3Nlc+KAmSBwcm90b3R5cGUgbWV0aG9kcyBhcmUgbm90IGVudW1lcmFibGUsIHNvIHdlIGNoZWNrIGlmIHNvbWUgdmFsdWVcbiAgICAvLyBleGlzdHMgaW4gdGhlIHByb3RvdHlwZS5cbiAgICAoa2V5cyh2YWx1ZS5wcm90b3R5cGUpIHx8IG5hbWUgaW4gdmFsdWUucHJvdG90eXBlKVxuICApXG59XG5cbi8vIENoZWNrIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0IHdpdGgga2V5cy5cbmZ1bmN0aW9uIGtleXModmFsdWUpIHtcbiAgdmFyIGtleVxuICBmb3IgKGtleSBpbiB2YWx1ZSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLy8gQXNzZXJ0IGEgcGFyc2VyIGlzIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIGFzc2VydFBhcnNlcihuYW1lLCBQYXJzZXIpIHtcbiAgaWYgKHR5cGVvZiBQYXJzZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBgJyArIG5hbWUgKyAnYCB3aXRob3V0IGBQYXJzZXJgJylcbiAgfVxufVxuXG4vLyBBc3NlcnQgYSBjb21waWxlciBpcyBhdmFpbGFibGUuXG5mdW5jdGlvbiBhc3NlcnRDb21waWxlcihuYW1lLCBDb21waWxlcikge1xuICBpZiAodHlwZW9mIENvbXBpbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgQ29tcGlsZXJgJylcbiAgfVxufVxuXG4vLyBBc3NlcnQgdGhlIHByb2Nlc3NvciBpcyBub3QgZnJvemVuLlxuZnVuY3Rpb24gYXNzZXJ0VW5mcm96ZW4obmFtZSwgZnJvemVuKSB7XG4gIGlmIChmcm96ZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGludm9rZSBgJyArXG4gICAgICAgIG5hbWUgK1xuICAgICAgICAnYCBvbiBhIGZyb3plbiBwcm9jZXNzb3IuXFxuQ3JlYXRlIGEgbmV3IHByb2Nlc3NvciBmaXJzdCwgYnkgaW52b2tpbmcgaXQ6IHVzZSBgcHJvY2Vzc29yKClgIGluc3RlYWQgb2YgYHByb2Nlc3NvcmAuJ1xuICAgIClcbiAgfVxufVxuXG4vLyBBc3NlcnQgYG5vZGVgIGlzIGEgdW5pc3Qgbm9kZS5cbmZ1bmN0aW9uIGFzc2VydE5vZGUobm9kZSkge1xuICBpZiAoIW5vZGUgfHwgdHlwZW9mIG5vZGUudHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIGdvdCBgJyArIG5vZGUgKyAnYCcpXG4gIH1cbn1cblxuLy8gQXNzZXJ0IHRoYXQgYGNvbXBsZXRlYCBpcyBgdHJ1ZWAuXG5mdW5jdGlvbiBhc3NlcnREb25lKG5hbWUsIGFzeW5jTmFtZSwgY29tcGxldGUpIHtcbiAgaWYgKCFjb21wbGV0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgJyArIG5hbWUgKyAnYCBmaW5pc2hlZCBhc3luYy4gVXNlIGAnICsgYXN5bmNOYW1lICsgJ2AgaW5zdGVhZCdcbiAgICApXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZnJvbVBhcnNlNSA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1mcm9tLXBhcnNlNScpXG52YXIgUGFyc2VyNSA9IHJlcXVpcmUoJ3BhcnNlNS9saWIvcGFyc2VyJylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBlcnJvcnMgPSByZXF1aXJlKCcuL2Vycm9ycy5qc29uJylcblxudmFyIGJhc2UgPSAnaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNlLWVycm9yLSdcblxudmFyIGZhdGFsaXRpZXMgPSB7MjogdHJ1ZSwgMTogZmFsc2UsIDA6IG51bGx9XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VcblxuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSB4dGVuZChvcHRpb25zLCB0aGlzLmRhdGEoJ3NldHRpbmdzJykpXG4gIHZhciBwb3NpdGlvbiA9IHNldHRpbmdzLnBvc2l0aW9uXG5cbiAgcG9zaXRpb24gPSB0eXBlb2YgcG9zaXRpb24gPT09ICdib29sZWFuJyA/IHBvc2l0aW9uIDogdHJ1ZVxuXG4gIHRoaXMuUGFyc2VyID0gcGFyc2VyXG5cbiAgZnVuY3Rpb24gcGFyc2VyKGRvYywgZmlsZSkge1xuICAgIHZhciBmbiA9IHNldHRpbmdzLmZyYWdtZW50ID8gJ3BhcnNlRnJhZ21lbnQnIDogJ3BhcnNlJ1xuICAgIHZhciBvblBhcnNlRXJyb3IgPSBzZXR0aW5ncy5lbWl0UGFyc2VFcnJvcnMgPyBvbmVycm9yIDogbnVsbFxuICAgIHZhciBwYXJzZTUgPSBuZXcgUGFyc2VyNSh7XG4gICAgICBzb3VyY2VDb2RlTG9jYXRpb25JbmZvOiBwb3NpdGlvbixcbiAgICAgIG9uUGFyc2VFcnJvcjogb25QYXJzZUVycm9yLFxuICAgICAgc2NyaXB0aW5nRW5hYmxlZDogZmFsc2VcbiAgICB9KVxuXG4gICAgcmV0dXJuIGZyb21QYXJzZTUocGFyc2U1W2ZuXShkb2MpLCB7XG4gICAgICBzcGFjZTogc2V0dGluZ3Muc3BhY2UsXG4gICAgICBmaWxlOiBmaWxlLFxuICAgICAgdmVyYm9zZTogc2V0dGluZ3MudmVyYm9zZVxuICAgIH0pXG5cbiAgICBmdW5jdGlvbiBvbmVycm9yKGVycikge1xuICAgICAgdmFyIGNvZGUgPSBlcnIuY29kZVxuICAgICAgdmFyIG5hbWUgPSBjYW1lbGNhc2UoY29kZSlcbiAgICAgIHZhciBzZXR0aW5nID0gc2V0dGluZ3NbbmFtZV1cbiAgICAgIHZhciBjb25maWcgPSBzZXR0aW5nID09PSB1bmRlZmluZWQgfHwgc2V0dGluZyA9PT0gbnVsbCA/IHRydWUgOiBzZXR0aW5nXG4gICAgICB2YXIgbGV2ZWwgPSB0eXBlb2YgY29uZmlnID09PSAnbnVtYmVyJyA/IGNvbmZpZyA6IGNvbmZpZyA/IDEgOiAwXG4gICAgICB2YXIgc3RhcnQgPSB7XG4gICAgICAgIGxpbmU6IGVyci5zdGFydExpbmUsXG4gICAgICAgIGNvbHVtbjogZXJyLnN0YXJ0Q29sLFxuICAgICAgICBvZmZzZXQ6IGVyci5zdGFydE9mZnNldFxuICAgICAgfVxuICAgICAgdmFyIGVuZCA9IHtsaW5lOiBlcnIuZW5kTGluZSwgY29sdW1uOiBlcnIuZW5kQ29sLCBvZmZzZXQ6IGVyci5lbmRPZmZzZXR9XG4gICAgICB2YXIgaW5mb1xuICAgICAgdmFyIG1lc3NhZ2VcblxuICAgICAgaWYgKGxldmVsKSB7XG4gICAgICAgIGluZm8gPSBlcnJvcnNbbmFtZV0gfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge1xuICAgICAgICAgIHJlYXNvbjogJycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICcnXG4gICAgICAgIH1cblxuICAgICAgICBtZXNzYWdlID0gZmlsZS5tZXNzYWdlKGZvcm1hdChpbmZvLnJlYXNvbiksIHtzdGFydDogc3RhcnQsIGVuZDogZW5kfSlcbiAgICAgICAgbWVzc2FnZS5zb3VyY2UgPSAncGFyc2UtZXJyb3InXG4gICAgICAgIG1lc3NhZ2UucnVsZUlkID0gY29kZVxuICAgICAgICBtZXNzYWdlLmZhdGFsID0gZmF0YWxpdGllc1tsZXZlbF1cbiAgICAgICAgbWVzc2FnZS5ub3RlID0gZm9ybWF0KGluZm8uZGVzY3JpcHRpb24pXG4gICAgICAgIG1lc3NhZ2UudXJsID0gaW5mby51cmwgPT09IGZhbHNlID8gbnVsbCA6IGJhc2UgKyBjb2RlXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZvcm1hdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJWMoPzotKFxcZCspKT8vZywgY2hhcikucmVwbGFjZSgvJXgvZywgZW5jb2RlZENoYXIpXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoYXIoJDAsICQxKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSAkMSA/IC1wYXJzZUludCgkMSwgMTApIDogMFxuICAgICAgICB2YXIgY2hhciA9IGRvYy5jaGFyQXQoZXJyLnN0YXJ0T2Zmc2V0ICsgb2Zmc2V0KVxuICAgICAgICByZXR1cm4gY2hhciA9PT0gJ2AnID8gJ2AgYCBgJyA6IGNoYXJcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZW5jb2RlZENoYXIoKSB7XG4gICAgICAgIHZhciBjaGFyID0gZG9jXG4gICAgICAgICAgLmNoYXJDb2RlQXQoZXJyLnN0YXJ0T2Zmc2V0KVxuICAgICAgICAgIC50b1N0cmluZygxNilcbiAgICAgICAgICAudG9VcHBlckNhc2UoKVxuXG4gICAgICAgIHJldHVybiAnMHgnICsgY2hhclxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1lbGNhc2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLy1bYS16XS9nLCByZXBsYWNlcilcbn1cblxuZnVuY3Rpb24gcmVwbGFjZXIoJDApIHtcbiAgcmV0dXJuICQwLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpc0VsZW1lbnRcblxuLy8gQ2hlY2sgaWYgaWYgYG5vZGVgIGlzIGFuIGBlbGVtZW50YCBhbmQsIGlmIGB0YWdOYW1lc2AgaXMgZ2l2ZW4sIGBub2RlYFxuLy8gbWF0Y2hlcyB0aGVtIGB0YWdOYW1lc2AuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSwgdGFnTmFtZXMpIHtcbiAgdmFyIG5hbWVcblxuICBpZiAoXG4gICAgIShcbiAgICAgIHRhZ05hbWVzID09PSBudWxsIHx8XG4gICAgICB0YWdOYW1lcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0eXBlb2YgdGFnTmFtZXMgPT09ICdzdHJpbmcnIHx8XG4gICAgICAodHlwZW9mIHRhZ05hbWVzID09PSAnb2JqZWN0JyAmJiB0YWdOYW1lcy5sZW5ndGggIT09IDApXG4gICAgKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnRXhwZWN0ZWQgYHN0cmluZ2Agb3IgYEFycmF5LjxzdHJpbmc+YCBmb3IgYHRhZ05hbWVzYCwgbm90IGAnICtcbiAgICAgICAgdGFnTmFtZXMgK1xuICAgICAgICAnYCdcbiAgICApXG4gIH1cblxuICBpZiAoXG4gICAgIW5vZGUgfHxcbiAgICB0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcgfHxcbiAgICBub2RlLnR5cGUgIT09ICdlbGVtZW50JyB8fFxuICAgIHR5cGVvZiBub2RlLnRhZ05hbWUgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHRhZ05hbWVzID09PSBudWxsIHx8IHRhZ05hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbmFtZSA9IG5vZGUudGFnTmFtZVxuXG4gIGlmICh0eXBlb2YgdGFnTmFtZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5hbWUgPT09IHRhZ05hbWVzXG4gIH1cblxuICByZXR1cm4gdGFnTmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG5cbm1vZHVsZS5leHBvcnRzID0gZmluZEFmdGVyXG5cbmZ1bmN0aW9uIGZpbmRBZnRlcihwYXJlbnQsIGluZGV4LCB0ZXN0KSB7XG4gIHZhciBpcyA9IGNvbnZlcnQodGVzdClcbiAgdmFyIGNoaWxkcmVuXG4gIHZhciBjaGlsZFxuICB2YXIgbGVuZ3RoXG5cbiAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC50eXBlIHx8ICFwYXJlbnQuY2hpbGRyZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHBhcmVudCBub2RlJylcbiAgfVxuXG4gIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuXG4gIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuXG4gIGlmIChpbmRleCAmJiBpbmRleC50eXBlKSB7XG4gICAgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKGluZGV4KVxuICB9XG5cbiAgaWYgKGlzTmFOKGluZGV4KSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPT09IEluZmluaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwb3NpdGl2ZSBmaW5pdGUgaW5kZXggb3IgY2hpbGQgbm9kZScpXG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoaWxkID0gY2hpbGRyZW5baW5kZXhdXG5cbiAgICBpZiAoaXMoY2hpbGQsIGluZGV4LCBwYXJlbnQpKSB7XG4gICAgICByZXR1cm4gY2hpbGRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciByZXBlYXQgPSByZXF1aXJlKCdyZXBlYXQtc3RyaW5nJylcbnZhciBpcyA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50JylcbnZhciBmaW5kQWZ0ZXIgPSByZXF1aXJlKCd1bmlzdC11dGlsLWZpbmQtYWZ0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvVGV4dFxuXG4vLyBNZXRob2RzLlxudmFyIG1pbiA9IE1hdGgubWluXG52YXIgbWF4ID0gTWF0aC5tYXhcblxuLy8gV2hpdGUgc3BhY2UgY29kZXMuXG52YXIgdGFiID0gMHg5XG52YXIgc3BhY2UgPSAweDIwXG52YXIgemVyb1dpZHRoU3BhY2UgPSAweDIwMGJcblxuLy8gQmlkaSBjb250cm9sIGNoYXJhY3RlcnMgY29kZXMuXG52YXIgYWxtID0gMHg2MWNcbnZhciBsdHIgPSAweDIwMGVcbnZhciBydGwgPSAweDIwMGZcbnZhciBscmUgPSAweDIwMmFcbnZhciBybGUgPSAweDIwMmJcbnZhciBwZGYgPSAweDIwMmNcbnZhciBscm8gPSAweDIwMmRcbnZhciBybG8gPSAweDIwMmVcbnZhciBscmkgPSAweDIwNjZcbnZhciBybGkgPSAweDIwNjdcbnZhciBmc2kgPSAweDIwNjhcbnZhciBwZGkgPSAweDIwNjlcblxuLy8gQ2hhcmFjdGVycy5cbnZhciB0YWJDaGFyID0gJ1xcdCdcbnZhciBsaW5lRmVlZENoYXIgPSAnXFxuJ1xudmFyIHNwYWNlQ2hhciA9ICcgJ1xuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGlubmVyVGV4dGAgZ2V0dGVyOlxuLy8gPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1pbm5lcnRleHQtaWRsLWF0dHJpYnV0ZT5cbi8vIE5vdGUgdGhhdCB3ZSBhY3QgYXMgaWYgYG5vZGVgIGlzIGJlaW5nIHJlbmRlcmVkLCBhbmQgYXMgaWYgd2XigJlyZSBhXG4vLyBDU1Mtc3VwcG9ydGluZyB1c2VyIGFnZW50LlxuZnVuY3Rpb24gdG9UZXh0KG5vZGUpIHtcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBbXVxuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIHZhciBibG9jayA9IGJsb2NrT3JDYXB0aW9uKG5vZGUpXG4gIHZhciB3aGl0ZVNwYWNlID0gaW5mZXJXaGl0ZVNwYWNlKG5vZGUsIHt9KVxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgcmVzdWx0c1xuICB2YXIgY3VycmVudFxuICB2YXIgcmVzdWx0XG4gIHZhciB2YWx1ZVxuICB2YXIgY291bnRcblxuICAvLyBUcmVhdCBgdGV4dGAgYW5kIGBjb21tZW50YCBhcyBoYXZpbmcgbm9ybWFsIHdoaXRlLXNwYWNlLlxuICAvLyBUaGlzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYXMgaW4gdGhlIERPTSB0aGUgbm9kZeKAmXMgYC5kYXRhYCBoYXMgdG8gYmVcbiAgLy8gcmV0dXJuZWQuXG4gIC8vIElmIHlvdSB3YW50IHRoYXQgYmVoYXZpb3IgdXNlIGBoYXN0LXV0aWwtdG8tc3RyaW5nYC5cbiAgLy8gQWxsIG90aGVyIG5vZGVzIGFyZSBsYXRlciBoYW5kbGVkIGFzIGlmIHRoZXkgYXJlIGBlbGVtZW50YHMgKHNvIHRoZVxuICAvLyBhbGdvcml0aG0gYWxzbyB3b3JrcyBvbiBhIGByb290YCkuXG4gIC8vIE5vZGVzIHdpdGhvdXQgY2hpbGRyZW4gYXJlIHRyZWF0ZWQgYXMgYSB2b2lkIGVsZW1lbnQsIHNvIGBkb2N0eXBlYCBpcyB0aHVzXG4gIC8vIGlnbm9yZWQuXG4gIGlmIChub2RlLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgIHJldHVybiBjb2xsZWN0VGV4dChub2RlLCB7XG4gICAgICB3aGl0ZVNwYWNlOiB3aGl0ZVNwYWNlLFxuICAgICAgYnJlYWtCZWZvcmU6IHRydWUsXG4gICAgICBicmVha0FmdGVyOiB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIC8vIDEuICBJZiB0aGlzIGVsZW1lbnQgaXMgbm90IGJlaW5nIHJlbmRlcmVkLCBvciBpZiB0aGUgdXNlciBhZ2VudCBpcyBhXG4gIC8vICAgICBub24tQ1NTIHVzZXIgYWdlbnQsIHRoZW4gcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0ZXh0Q29udGVudCBJRExcbiAgLy8gICAgIGF0dHJpYnV0ZSBvbiB0aGlzIGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgICBOb3RlOiB3ZeKAmXJlIG5vdCBzdXBwb3J0aW5nIHN0eWxlc2hlZXRzIHNvIHdl4oCZcmUgYWN0aW5nIGFzIGlmIHRoZSBub2RlXG4gIC8vICAgICBpcyByZW5kZXJlZC5cbiAgLy9cbiAgLy8gICAgIElmIHlvdSB3YW50IHRoYXQgYmVoYXZpb3IgdXNlIGBoYXN0LXV0aWwtdG8tc3RyaW5nYC5cbiAgLy8gICAgIEltcG9ydGFudDogd2XigJlsbCBoYXZlIHRvIGFjY291bnQgZm9yIHRoaXMgbGF0ZXIgdGhvdWdoLlxuXG4gIC8vIDIuICBMZXQgcmVzdWx0cyBiZSBhIG5ldyBlbXB0eSBsaXN0LlxuICByZXN1bHRzID0gW11cblxuICAvLyAzLiAgRm9yIGVhY2ggY2hpbGQgbm9kZSBub2RlIG9mIHRoaXMgZWxlbWVudDpcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAvLyAzLjEuIExldCBjdXJyZW50IGJlIHRoZSBsaXN0IHJlc3VsdGluZyBpbiBydW5uaW5nIHRoZSBpbm5lciB0ZXh0XG4gICAgLy8gICAgICBjb2xsZWN0aW9uIHN0ZXBzIHdpdGggbm9kZS5cbiAgICAvLyAgICAgIEVhY2ggaXRlbSBpbiByZXN1bHRzIHdpbGwgZWl0aGVyIGJlIGEgSmF2YVNjcmlwdCBzdHJpbmcgb3IgYVxuICAgIC8vICAgICAgcG9zaXRpdmUgaW50ZWdlciAoYSByZXF1aXJlZCBsaW5lIGJyZWFrIGNvdW50KS5cbiAgICBjdXJyZW50ID0gaW5uZXJUZXh0Q29sbGVjdGlvbihjaGlsZHJlbltpbmRleF0sIGluZGV4LCBub2RlLCB7XG4gICAgICB3aGl0ZVNwYWNlOiB3aGl0ZVNwYWNlLFxuICAgICAgYnJlYWtCZWZvcmU6IGluZGV4ID09PSAwID8gYmxvY2sgOiBmYWxzZSxcbiAgICAgIGJyZWFrQWZ0ZXI6IGluZGV4ID09PSBsZW5ndGggLSAxID8gYmxvY2sgOiBpcyhjaGlsZHJlbltpbmRleCArIDFdLCAnYnInKVxuICAgIH0pXG5cbiAgICAvLyAzLjIuIEZvciBlYWNoIGl0ZW0gaXRlbSBpbiBjdXJyZW50LCBhcHBlbmQgaXRlbSB0byByZXN1bHRzLlxuICAgIHJlc3VsdHMgPSByZXN1bHRzLmNvbmNhdChjdXJyZW50KVxuICB9XG5cbiAgLy8gNC4gIFJlbW92ZSBhbnkgaXRlbXMgZnJvbSByZXN1bHRzIHRoYXQgYXJlIHRoZSBlbXB0eSBzdHJpbmcuXG4gIC8vIDUuICBSZW1vdmUgYW55IHJ1bnMgb2YgY29uc2VjdXRpdmUgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudCBpdGVtcyBhdCB0aGVcbiAgLy8gICAgIHN0YXJ0IG9yIGVuZCBvZiByZXN1bHRzLlxuICAvLyA2LiAgUmVwbGFjZSBlYWNoIHJlbWFpbmluZyBydW4gb2YgY29uc2VjdXRpdmUgcmVxdWlyZWQgbGluZSBicmVhayBjb3VudFxuICAvLyAgICAgaXRlbXMgd2l0aCBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGFzIG1hbnkgVSswMDBBIExJTkUgRkVFRCAoTEYpXG4gIC8vICAgICBjaGFyYWN0ZXJzIGFzIHRoZSBtYXhpbXVtIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIHJlcXVpcmVkIGxpbmUgYnJlYWtcbiAgLy8gICAgIGNvdW50IGl0ZW1zLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IHJlc3VsdHMubGVuZ3RoXG4gIHJlc3VsdCA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YWx1ZSA9IHJlc3VsdHNbaW5kZXhdXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGNvdW50ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPiBjb3VudCkge1xuICAgICAgICBjb3VudCA9IHZhbHVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmIChjb3VudCkge1xuICAgICAgICByZXN1bHQucHVzaChyZXBlYXQobGluZUZlZWRDaGFyLCBjb3VudCkpXG4gICAgICB9XG5cbiAgICAgIGNvdW50ID0gMFxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpXG4gICAgfVxuICB9XG5cbiAgLy8gNy4gIFJldHVybiB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nIGl0ZW1zIGluIHJlc3VsdHMuXG4gIHJldHVybiByZXN1bHQuam9pbignJylcbn1cblxuLy8gPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2lubmVyLXRleHQtY29sbGVjdGlvbi1zdGVwcz5cbmZ1bmN0aW9uIGlubmVyVGV4dENvbGxlY3Rpb24obm9kZSwgaW5kZXgsIHBhcmVudCwgb3B0aW9ucykge1xuICBpZiAobm9kZS50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICByZXR1cm4gY29sbGVjdEVsZW1lbnQobm9kZSwgaW5kZXgsIHBhcmVudCwgb3B0aW9ucylcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBbXG4gICAgICBvcHRpb25zLndoaXRlU3BhY2UgPT09ICdub3JtYWwnXG4gICAgICAgID8gY29sbGVjdFRleHQobm9kZSwgb3B0aW9ucylcbiAgICAgICAgOiBjb2xsZWN0UHJlVGV4dChub2RlLCBvcHRpb25zKVxuICAgIF1cbiAgfVxuXG4gIHJldHVybiBbXVxufVxuXG4vLyBDb2xsZWN0IGFuIGVsZW1lbnQuXG5mdW5jdGlvbiBjb2xsZWN0RWxlbWVudChub2RlLCBpbmRleCwgcGFyZW50LCBvcHRpb25zKSB7XG4gIC8vIEZpcnN0IHdlIGluZmVyIHRoZSBgd2hpdGUtc3BhY2VgIHByb3BlcnR5LlxuICB2YXIgd2hpdGVTcGFjZSA9IGluZmVyV2hpdGVTcGFjZShub2RlLCBvcHRpb25zKVxuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuIHx8IFtdXG4gIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcbiAgdmFyIG9mZnNldCA9IC0xXG4gIHZhciBpdGVtcyA9IFtdXG4gIHZhciBjdXJyZW50XG4gIHZhciBwcmVmaXhcbiAgdmFyIHN1ZmZpeFxuXG4gIC8vIFdl4oCZcmUgaWdub3JpbmcgcG9pbnQgMywgYW5kIGV4aXRpbmcgd2l0aG91dCBhbnkgY29udGVudCBoZXJlLCBiZWNhdXNlIHdlXG4gIC8vIGRldmlhdGVkIGZyb20gdGhlIHNwZWMgaW4gYHRvVGV4dGAgYXQgc3RlcCAzLlxuICBpZiAobm90UmVuZGVyZWQobm9kZSkpIHtcbiAgICByZXR1cm4gaXRlbXNcbiAgfVxuXG4gIC8vIE5vdGU6IHdlIGZpcnN0IGRldGVjdCBpZiB0aGVyZSBpcyBnb2luZyB0byBiZSBhIGJyZWFrIGJlZm9yZSBvciBhZnRlciB0aGVcbiAgLy8gY29udGVudHMsIGFzIHRoYXQgY2hhbmdlcyB0aGUgd2hpdGUtc3BhY2UgaGFuZGxpbmcuXG5cbiAgLy8gMi4gIElmIG5vZGXigJlzIGNvbXB1dGVkIHZhbHVlIG9mIGB2aXNpYmlsaXR5YCBpcyBub3QgYHZpc2libGVgLCB0aGVuIHJldHVyblxuICAvLyAgICAgaXRlbXMuXG4gIC8vXG4gIC8vICAgICBOb3RlOiBJZ25vcmVkLCBhcyBldmVyeXRoaW5nIGlzIHZpc2libGUgYnkgZGVmYXVsdCB1c2VyIGFnZW50IHN0eWxlcy5cblxuICAvLyAzLiAgSWYgbm9kZSBpcyBub3QgYmVpbmcgcmVuZGVyZWQsIHRoZW4gcmV0dXJuIGl0ZW1zLiBbLi4uXVxuICAvL1xuICAvLyAgICAgTm90ZTogV2UgYWxyZWFkeSBkaWQgdGhpcyBhYm92ZS5cblxuICAvLyBTZWUgYGNvbGxlY3RUZXh0YCBmb3Igc3RlcCA0LlxuXG4gIC8vIDUuICBJZiBub2RlIGlzIGEgYDxicj5gIGVsZW1lbnQsIHRoZW4gYXBwZW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBzaW5nbGVcbiAgLy8gICAgIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG8gaXRlbXMuXG4gIGlmIChpcyhub2RlLCAnYnInKSkge1xuICAgIHN1ZmZpeCA9IGxpbmVGZWVkQ2hhclxuICB9XG5cbiAgLy8gNy4gIElmIG5vZGXigJlzIGNvbXB1dGVkIHZhbHVlIG9mIGBkaXNwbGF5YCBpcyBgdGFibGUtcm93YCwgYW5kIG5vZGXigJlzIENTU1xuICAvLyAgICAgYm94IGlzIG5vdCB0aGUgbGFzdCBgdGFibGUtcm93YCBib3ggb2YgdGhlIG5lYXJlc3QgYW5jZXN0b3IgYHRhYmxlYFxuICAvLyAgICAgYm94LCB0aGVuIGFwcGVuZCBhIHN0cmluZyBjb250YWluaW5nIGEgc2luZ2xlIFUrMDAwQSBMSU5FIEZFRUQgKExGKVxuICAvLyAgICAgY2hhcmFjdGVyIHRvIGl0ZW1zLlxuICAvL1xuICAvLyAgICAgU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGFibGVzLTI+XG4gIC8vICAgICBOb3RlOiBuZWVkcyBmdXJ0aGVyIGludmVzdGlnYXRpb24gYXMgdGhpcyBkb2VzIG5vdCBhY2NvdW50IGZvciBpbXBsaWNpdFxuICAvLyAgICAgcm93cy5cbiAgZWxzZSBpZiAocm93KG5vZGUpICYmIGZpbmRBZnRlcihwYXJlbnQsIG5vZGUsIHJvdykpIHtcbiAgICBzdWZmaXggPSBsaW5lRmVlZENoYXJcbiAgfVxuXG4gIC8vIDguICBJZiBub2RlIGlzIGEgYDxwPmAgZWxlbWVudCwgdGhlbiBhcHBlbmQgMiAoYSByZXF1aXJlZCBsaW5lIGJyZWFrIGNvdW50KVxuICAvLyAgICAgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZW1zLlxuICBlbHNlIGlmIChpcyhub2RlLCAncCcpKSB7XG4gICAgcHJlZml4ID0gMlxuICAgIHN1ZmZpeCA9IDJcbiAgfVxuXG4gIC8vIDkuICBJZiBub2Rl4oCZcyB1c2VkIHZhbHVlIG9mIGBkaXNwbGF5YCBpcyBibG9jay1sZXZlbCBvciBgdGFibGUtY2FwdGlvbmAsXG4gIC8vICAgICB0aGVuIGFwcGVuZCAxIChhIHJlcXVpcmVkIGxpbmUgYnJlYWsgY291bnQpIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZlxuICAvLyAgICAgaXRlbXMuXG4gIGVsc2UgaWYgKGJsb2NrT3JDYXB0aW9uKG5vZGUpKSB7XG4gICAgcHJlZml4ID0gMVxuICAgIHN1ZmZpeCA9IDFcbiAgfVxuXG4gIC8vIDEuICBMZXQgaXRlbXMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBpbm5lciB0ZXh0IGNvbGxlY3Rpb24gc3RlcHMgd2l0aFxuICAvLyAgICAgZWFjaCBjaGlsZCBub2RlIG9mIG5vZGUgaW4gdHJlZSBvcmRlciwgYW5kIHRoZW4gY29uY2F0ZW5hdGluZyB0aGVcbiAgLy8gICAgIHJlc3VsdHMgdG8gYSBzaW5nbGUgbGlzdC5cbiAgd2hpbGUgKCsrb2Zmc2V0IDwgbGVuZ3RoKSB7XG4gICAgY3VycmVudCA9IGlubmVyVGV4dENvbGxlY3Rpb24oY2hpbGRyZW5bb2Zmc2V0XSwgb2Zmc2V0LCBub2RlLCB7XG4gICAgICB3aGl0ZVNwYWNlOiB3aGl0ZVNwYWNlLFxuICAgICAgYnJlYWtCZWZvcmU6IG9mZnNldCA9PT0gMCA/IHByZWZpeCA6IGZhbHNlLFxuICAgICAgYnJlYWtBZnRlcjpcbiAgICAgICAgb2Zmc2V0ID09PSBsZW5ndGggLSAxID8gc3VmZml4IDogaXMoY2hpbGRyZW5bb2Zmc2V0ICsgMV0sICdicicpXG4gICAgfSlcblxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGN1cnJlbnQpXG4gIH1cblxuICAvLyA2LiAgSWYgbm9kZeKAmXMgY29tcHV0ZWQgdmFsdWUgb2YgYGRpc3BsYXlgIGlzIGB0YWJsZS1jZWxsYCwgYW5kIG5vZGXigJlzIENTU1xuICAvLyAgICAgYm94IGlzIG5vdCB0aGUgbGFzdCBgdGFibGUtY2VsbGAgYm94IG9mIGl0cyBlbmNsb3NpbmcgYHRhYmxlLXJvd2AgYm94LFxuICAvLyAgICAgdGhlbiBhcHBlbmQgYSBzdHJpbmcgY29udGFpbmluZyBhIHNpbmdsZSBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT05cbiAgLy8gICAgICh0YWIpIGNoYXJhY3RlciB0byBpdGVtcy5cbiAgLy9cbiAgLy8gICAgIFNlZTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RhYmxlcy0yPlxuICBpZiAoY2VsbChub2RlKSAmJiBmaW5kQWZ0ZXIocGFyZW50LCBub2RlLCBjZWxsKSkge1xuICAgIGl0ZW1zLnB1c2godGFiQ2hhcilcbiAgfVxuXG4gIC8vIEFkZCB0aGUgcHJlLSBhbmQgc3VmZml4LlxuICBpZiAocHJlZml4KSB7XG4gICAgaXRlbXMudW5zaGlmdChwcmVmaXgpXG4gIH1cblxuICBpZiAoc3VmZml4KSB7XG4gICAgaXRlbXMucHVzaChzdWZmaXgpXG4gIH1cblxuICByZXR1cm4gaXRlbXNcbn1cblxuLy8gNC4gIElmIG5vZGUgaXMgYSBUZXh0IG5vZGUsIHRoZW4gZm9yIGVhY2ggQ1NTIHRleHQgYm94IHByb2R1Y2VkIGJ5IG5vZGUsXG4vLyAgICAgaW4gY29udGVudCBvcmRlciwgY29tcHV0ZSB0aGUgdGV4dCBvZiB0aGUgYm94IGFmdGVyIGFwcGxpY2F0aW9uIG9mIHRoZVxuLy8gICAgIENTUyBgd2hpdGUtc3BhY2VgIHByb2Nlc3NpbmcgcnVsZXMgYW5kIGB0ZXh0LXRyYW5zZm9ybWAgcnVsZXMsIHNldFxuLy8gICAgIGl0ZW1zIHRvIHRoZSBsaXN0IG9mIHRoZSByZXN1bHRpbmcgc3RyaW5ncywgYW5kIHJldHVybiBpdGVtcy5cbi8vICAgICBUaGUgQ1NTIGB3aGl0ZS1zcGFjZWAgcHJvY2Vzc2luZyBydWxlcyBhcmUgc2xpZ2h0bHkgbW9kaWZpZWQ6XG4vLyAgICAgY29sbGFwc2libGUgc3BhY2VzIGF0IHRoZSBlbmQgb2YgbGluZXMgYXJlIGFsd2F5cyBjb2xsYXBzZWQsIGJ1dCB0aGV5XG4vLyAgICAgYXJlIG9ubHkgcmVtb3ZlZCBpZiB0aGUgbGluZSBpcyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBibG9jaywgb3IgaXQgZW5kc1xuLy8gICAgIHdpdGggYSBiciBlbGVtZW50LlxuLy8gICAgIFNvZnQgaHlwaGVucyBzaG91bGQgYmUgcHJlc2VydmVkLlxuLy9cbi8vICAgICBOb3RlOiBTZWUgYGNvbGxlY3RUZXh0YCBhbmQgYGNvbGxlY3RQcmVUZXh0YC5cbi8vICAgICBOb3RlOiB3ZSBkb27igJl0IGRlYWwgd2l0aCBgdGV4dC10cmFuc2Zvcm1gLCBubyBlbGVtZW50IGhhcyB0aGF0IGJ5XG4vLyAgICAgZGVmYXVsdC5cbi8vXG4vLyBTZWU6IDxodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI3doaXRlLXNwYWNlLXBoYXNlLTE+XG5mdW5jdGlvbiBjb2xsZWN0VGV4dChub2RlLCBvcHRpb25zKSB7XG4gIHZhciBicmVha0JlZm9yZSA9IG9wdGlvbnMuYnJlYWtCZWZvcmVcbiAgdmFyIGJyZWFrQWZ0ZXIgPSBvcHRpb25zLmJyZWFrQWZ0ZXJcbiAgdmFyIHZhbHVlID0gU3RyaW5nKG5vZGUudmFsdWUpXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGxpbmVzID0gW11cbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBsaW5lU3RhcnRcbiAgdmFyIGxpbmVFbmRcbiAgdmFyIGxpbmVcbiAgdmFyIG5leHRMaW5lXG4gIHZhciBxdWV1ZVxuXG4gIGxpbmVTdGFydCA9IDBcbiAgbGluZUVuZCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWRDaGFyKVxuICBsaW5lRW5kID0gbGluZUVuZCA9PT0gLTEgPyB2YWx1ZS5sZW5ndGggOiBsaW5lRW5kXG5cbiAgd2hpbGUgKGxpbmVFbmQgIT09IC0xKSB7XG4gICAgbGluZSA9IHZhbHVlLnNsaWNlKGxpbmVTdGFydCwgbGluZUVuZClcblxuICAgIC8vIFsuLi5dIGlnbm9yaW5nIGJpZGkgZm9ybWF0dGluZyBjaGFyYWN0ZXJzIChjaGFyYWN0ZXJzIHdpdGggdGhlXG4gICAgLy8gQmlkaV9Db250cm9sIHByb3BlcnR5IFtVQVg5XSkgYXMgaWYgdGhleSB3ZXJlIG5vdCB0aGVyZS5cbiAgICBsaW5lID0gcmVtb3ZlQmlkaUNvbnRyb2xDaGFyYWN0ZXJzKGxpbmUpXG5cbiAgICAvLyBBbnkgc2VxdWVuY2Ugb2YgY29sbGFwc2libGUgc3BhY2VzIGFuZCB0YWJzIGltbWVkaWF0ZWx5IHByZWNlZGluZyBvclxuICAgIC8vIGZvbGxvd2luZyBhIHNlZ21lbnQgYnJlYWsgaXMgcmVtb3ZlZC5cbiAgICBsaW5lID0gdHJpbUFuZGNvbGxhcHNlU3BhY2VzQW5kVGFicyhsaW5lLCBicmVha0JlZm9yZSwgYnJlYWtBZnRlcilcblxuICAgIC8vIEFkZCB0aGUgbGluZS5cbiAgICBsaW5lcy5wdXNoKGxpbmUpXG5cbiAgICAvLyBTdG9wLlxuICAgIGlmIChsaW5lRW5kID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgbGluZVN0YXJ0ID0gbGluZUVuZCArIDFcbiAgICBsaW5lRW5kID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZENoYXIsIGxpbmVTdGFydClcbiAgICBsaW5lRW5kID0gbGluZUVuZCA9PT0gLTEgPyB2YWx1ZS5sZW5ndGggOiBsaW5lRW5kXG4gIH1cblxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGxpbmVzLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG5cbiAgLy8gQ29sbGFwc2libGUgc2VnbWVudCBicmVha3MgYXJlIHRyYW5zZm9ybWVkIGZvciByZW5kZXJpbmcgYWNjb3JkaW5nIHRvIHRoZVxuICAvLyBzZWdtZW50IGJyZWFrIHRyYW5zZm9ybWF0aW9uIHJ1bGVzLlxuICAvLyBTbyBoZXJlIHdlIGp1bXAgdG8gNC4xLjIgb2YgW0NTU1RFWFRdOlxuICAvLyBBbnkgY29sbGFwc2libGUgc2VnbWVudCBicmVhayBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYW5vdGhlciBjb2xsYXBzaWJsZVxuICAvLyBzZWdtZW50IGJyZWFrIGlzIHJlbW92ZWRcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBsaW5lID0gbGluZXNbaW5kZXhdXG4gICAgbmV4dExpbmUgPSBsaW5lc1tpbmRleCArIDFdIHx8ICcnXG5cbiAgICAvLyAqICAgSWYgdGhlIGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgb3IgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNlZ21lbnRcbiAgICAvLyAgICAgYnJlYWsgaXMgdGhlIHplcm8td2lkdGggc3BhY2UgY2hhcmFjdGVyIChVKzIwMEIpLCB0aGVuIHRoZSBicmVhayBpc1xuICAgIC8vICAgICByZW1vdmVkLCBsZWF2aW5nIGJlaGluZCB0aGUgemVyby13aWR0aCBzcGFjZS5cbiAgICBpZiAoXG4gICAgICBsaW5lLmNoYXJDb2RlQXQobGluZS5sZW5ndGggLSAxKSA9PT0gemVyb1dpZHRoU3BhY2UgfHxcbiAgICAgIG5leHRMaW5lLmNoYXJDb2RlQXQoMCkgPT09IHplcm9XaWR0aFNwYWNlXG4gICAgKSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgcXVldWUgPSAnJ1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyAqICAgT3RoZXJ3aXNlLCBpZiB0aGUgRWFzdCBBc2lhbiBXaWR0aCBwcm9wZXJ0eSBbVUFYMTFdIG9mIGJvdGggdGhlXG4gICAgLy8gICAgIGNoYXJhY3RlciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZWdtZW50IGJyZWFrIGlzIEZ1bGx3aWR0aCwgV2lkZSwgb3JcbiAgICAvLyAgICAgSGFsZndpZHRoIChub3QgQW1iaWd1b3VzKSwgYW5kIG5laXRoZXIgc2lkZSBpcyBIYW5ndWwsIHRoZW4gdGhlXG4gICAgLy8gICAgIHNlZ21lbnQgYnJlYWsgaXMgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vICAgICBOb3RlOiBpZ25vcmVkLlxuXG4gICAgLy8gKiAgIE90aGVyd2lzZSwgaWYgdGhlIHdyaXRpbmcgc3lzdGVtIG9mIHRoZSBzZWdtZW50IGJyZWFrIGlzIENoaW5lc2UsXG4gICAgLy8gICAgIEphcGFuZXNlLCBvciBZaSwgYW5kIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBzZWdtZW50IGJyZWFrXG4gICAgLy8gICAgIGlzIHB1bmN0dWF0aW9uIG9yIGEgc3ltYm9sIChVbmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkgUCogb3IgUyopIGFuZFxuICAgIC8vICAgICBoYXMgYW4gRWFzdCBBc2lhbiBXaWR0aCBwcm9wZXJ0eSBvZiBBbWJpZ3VvdXMsIGFuZCB0aGUgY2hhcmFjdGVyIG9uXG4gICAgLy8gICAgIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWdtZW50IGJyZWFrIGlzIEZ1bGx3aWR0aCwgV2lkZSwgb3IgSGFsZndpZHRoLFxuICAgIC8vICAgICBhbmQgbm90IEhhbmd1bCwgdGhlbiB0aGUgc2VnbWVudCBicmVhayBpcyByZW1vdmVkLlxuICAgIC8vXG4gICAgLy8gICAgIE5vdGU6IGlnbm9yZWQuXG5cbiAgICAvLyAqICAgT3RoZXJ3aXNlLCB0aGUgc2VnbWVudCBicmVhayBpcyBjb252ZXJ0ZWQgdG8gYSBzcGFjZSAoVSswMDIwKS5cbiAgICBpZiAobGluZSkge1xuICAgICAgaWYgKHF1ZXVlKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1ZXVlKVxuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgcXVldWUgPSBzcGFjZUNoYXJcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RQcmVUZXh0KG5vZGUpIHtcbiAgcmV0dXJuIFN0cmluZyhub2RlLnZhbHVlKVxufVxuXG5mdW5jdGlvbiByZW1vdmVCaWRpQ29udHJvbENoYXJhY3RlcnModmFsdWUpIHtcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcmVzdWx0ID0gJydcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpc0JpZGlDb250cm9sQ2hhcmFjdGVyKHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICByZXN1bHQgKz0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyAzLiAgRXZlcnkgY29sbGFwc2libGUgdGFiIGlzIGNvbnZlcnRlZCB0byBhIGNvbGxhcHNpYmxlIHNwYWNlIChVKzAwMjApLlxuLy8gNC4gIEFueSBjb2xsYXBzaWJsZSBzcGFjZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYW5vdGhlciBjb2xsYXBzaWJsZVxuLy8gICAgIHNwYWNl4oCUZXZlbiBvbmUgb3V0c2lkZSB0aGUgYm91bmRhcnkgb2YgdGhlIGlubGluZSBjb250YWluaW5nIHRoYXRcbi8vICAgICBzcGFjZSwgcHJvdmlkZWQgYm90aCBzcGFjZXMgYXJlIHdpdGhpbiB0aGUgc2FtZSBpbmxpbmUgZm9ybWF0dGluZ1xuLy8gICAgIGNvbnRleHTigJRpcyBjb2xsYXBzZWQgdG8gaGF2ZSB6ZXJvIGFkdmFuY2Ugd2lkdGguIChJdCBpcyBpbnZpc2libGUsXG4vLyAgICAgYnV0IHJldGFpbnMgaXRzIHNvZnQgd3JhcCBvcHBvcnR1bml0eSwgaWYgYW55LilcbmZ1bmN0aW9uIHRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnModmFsdWUsIGJyZWFrQmVmb3JlLCBicmVha0FmdGVyKSB7XG4gIHZhciBzdGFydCA9IDBcbiAgdmFyIGVuZFxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgY2hhclxuXG4gIC8vIE1vdmUgZm9yd2FyZCBwYXN0IGluaXRpYWwgd2hpdGUgc3BhY2UuXG4gIHdoaWxlIChzdGFydCA8PSBsZW5ndGgpIHtcbiAgICBjaGFyID0gdmFsdWUuY2hhckNvZGVBdChzdGFydClcblxuICAgIGlmIChjaGFyICE9PSBzcGFjZSAmJiBjaGFyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3RhcnQrK1xuICB9XG5cbiAgLy8gSWYgd2XigJlyZSBub3QgZGlyZWN0bHkgYWZ0ZXIgYSBzZWdtZW50IGJyZWFrLCBidXQgdGhlcmUgd2FzIHdoaXRlIHNwYWNlLFxuICAvLyBhZGQgYW4gZW1wdHkgdmFsdWUgdGhhdCB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgc3BhY2UuXG4gIGlmIChzdGFydCAhPT0gMCAmJiAhYnJlYWtCZWZvcmUpIHtcbiAgICByZXN1bHQucHVzaCgnJylcbiAgfVxuXG4gIGVuZCA9IG5leHQoc3RhcnQgLSAxKVxuXG4gIHdoaWxlIChzdGFydCA8IGxlbmd0aCkge1xuICAgIGVuZCA9IGVuZCA9PT0gLTEgPyBsZW5ndGggOiBlbmRcbiAgICByZXN1bHQucHVzaCh2YWx1ZS5zbGljZShzdGFydCwgZW5kKSlcbiAgICBzdGFydCA9IGVuZFxuXG4gICAgd2hpbGUgKHN0YXJ0IDw9IGxlbmd0aCkge1xuICAgICAgY2hhciA9IHZhbHVlLmNoYXJDb2RlQXQoc3RhcnQpXG5cbiAgICAgIGlmIChjaGFyICE9PSBzcGFjZSAmJiBjaGFyICE9PSB0YWIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgc3RhcnQrK1xuICAgIH1cblxuICAgIC8vIElmIHdlIHJlYWNoZWQgdGhlIGVuZCwgdGhlcmUgd2FzIHRyYWlsaW5nIHdoaXRlIHNwYWNlLCBhbmQgdGhlcmXigJlzIG5vXG4gICAgLy8gc2VnbWVudCBicmVhayBhZnRlciB0aGlzIG5vZGUsIGFkZCBhbiBlbXB0eSB2YWx1ZSB0aGF0IHdpbGwgYmUgdHVybmVkXG4gICAgLy8gaW50byBhIHNwYWNlLlxuICAgIGlmIChzdGFydCA9PT0gbGVuZ3RoICYmIHN0YXJ0ICE9PSBlbmQgJiYgIWJyZWFrQWZ0ZXIpIHtcbiAgICAgIHJlc3VsdC5wdXNoKCcnKVxuICAgIH1cblxuICAgIGVuZCA9IG5leHQoc3RhcnQpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgpIHtcbiAgICB2YXIgc3BhY2VJbmRleCA9IHZhbHVlLmluZGV4T2Yoc3BhY2VDaGFyLCBpbmRleCArIDEpXG4gICAgdmFyIHRhYkluZGV4ID0gdmFsdWUuaW5kZXhPZih0YWJDaGFyLCBpbmRleCArIDEpXG4gICAgdmFyIGZuID0gc3BhY2VJbmRleCA9PT0gLTEgfHwgdGFiSW5kZXggPT09IC0xID8gbWF4IDogbWluXG4gICAgcmV0dXJuIGZuKHNwYWNlSW5kZXgsIHRhYkluZGV4KVxuICB9XG59XG5cbi8vIFdlIGRvbuKAmXQgc3VwcG9ydCB2b2lkIGVsZW1lbnRzIGhlcmUgKHNvIGBub2JyIHdicmAgLT4gYG5vcm1hbGAgaXMgaWdub3JlZCkuXG5mdW5jdGlvbiBpbmZlcldoaXRlU3BhY2Uobm9kZSwgb3B0aW9ucykge1xuICB2YXIgcHJvcHMgPSBub2RlLnByb3BlcnRpZXMgfHwge31cbiAgdmFyIGluaGVyaXQgPSBvcHRpb25zLndoaXRlU3BhY2UgfHwgJ25vcm1hbCdcblxuICBzd2l0Y2ggKG5vZGUudGFnTmFtZSkge1xuICAgIGNhc2UgJ2xpc3RpbmcnOlxuICAgIGNhc2UgJ3BsYWludGV4dCc6XG4gICAgY2FzZSAneG1wJzpcbiAgICAgIHJldHVybiAncHJlJ1xuICAgIGNhc2UgJ25vYnInOlxuICAgICAgcmV0dXJuICdub3dyYXAnXG4gICAgY2FzZSAncHJlJzpcbiAgICAgIHJldHVybiBwcm9wcy53cmFwID8gJ3ByZS13cmFwJyA6ICdwcmUnXG4gICAgY2FzZSAndGQnOlxuICAgIGNhc2UgJ3RoJzpcbiAgICAgIHJldHVybiBwcm9wcy5ub1dyYXAgPyAnbm93cmFwJyA6IGluaGVyaXRcbiAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICByZXR1cm4gJ3ByZS13cmFwJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gaW5oZXJpdFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzQmlkaUNvbnRyb2xDaGFyYWN0ZXIoY2hhcikge1xuICBzd2l0Y2ggKGNoYXIpIHtcbiAgICBjYXNlIGFsbTpcbiAgICBjYXNlIGx0cjpcbiAgICBjYXNlIHJ0bDpcbiAgICBjYXNlIGxyZTpcbiAgICBjYXNlIHJsZTpcbiAgICBjYXNlIHBkZjpcbiAgICBjYXNlIGxybzpcbiAgICBjYXNlIHJsbzpcbiAgICBjYXNlIGxyaTpcbiAgICBjYXNlIHJsaTpcbiAgICBjYXNlIGZzaTpcbiAgICBjYXNlIHBkaTpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGNlbGwobm9kZSkge1xuICByZXR1cm4gaXMobm9kZSwgWyd0aCcsICd0ZCddKVxufVxuXG5mdW5jdGlvbiByb3cobm9kZSkge1xuICByZXR1cm4gaXMobm9kZSwgWyd0ciddKVxufVxuXG4vLyBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtY3NzLXVzZXItYWdlbnQtc3R5bGUtc2hlZXQtYW5kLXByZXNlbnRhdGlvbmFsLWhpbnRzPlxuZnVuY3Rpb24gYmxvY2tPckNhcHRpb24obm9kZSkge1xuICByZXR1cm4gaXMobm9kZSwgW1xuICAgICdjYXB0aW9uJywgLy8gYHRhYmxlLWNhcHRpb25gXG4gICAgLy8gUGFnZVxuICAgICdodG1sJyxcbiAgICAnYm9keScsXG4gICAgLy8gRmxvdyBjb250ZW50XG4gICAgJ2FkZHJlc3MnLFxuICAgICdibG9ja3F1b3RlJyxcbiAgICAnY2VudGVyJywgLy8gTGVnYWN5XG4gICAgJ2RpYWxvZycsXG4gICAgJ2RpdicsXG4gICAgJ2ZpZ3VyZScsXG4gICAgJ2ZpZ2NhcHRpb24nLFxuICAgICdmb290ZXInLFxuICAgICdmb3JtLCcsXG4gICAgJ2hlYWRlcicsXG4gICAgJ2hyJyxcbiAgICAnbGVnZW5kJyxcbiAgICAnbGlzdGluZycsIC8vIExlZ2FjeVxuICAgICdtYWluJyxcbiAgICAncCcsXG4gICAgJ3BsYWludGV4dCcsIC8vIExlZ2FjeVxuICAgICdwcmUnLFxuICAgICd4bXAnLCAvLyBMZWdhY3lcbiAgICAvLyBTZWN0aW9ucyBhbmQgaGVhZGluZ3NcbiAgICAnYXJ0aWNsZScsXG4gICAgJ2FzaWRlJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaGdyb3VwJyxcbiAgICAnbmF2JyxcbiAgICAnc2VjdGlvbicsXG4gICAgLy8gTGlzdHNcbiAgICAnZGlyJywgLy8gTGVnYWN5XG4gICAgJ2RkJyxcbiAgICAnZGwnLFxuICAgICdkdCcsXG4gICAgJ21lbnUnLFxuICAgICdvbCcsXG4gICAgJ3VsJ1xuICBdKVxufVxuXG4vLyBOb3RlIHRoYXQgd2UgZG9u4oCZdCBuZWVkIHRvIGluY2x1ZGUgdm9pZCBlbGVtZW50cyBoZXJlIGFzIHRoZXkgZG9u4oCZdCBoYXZlIHRleHQuXG4vL1xuLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9odG1sLXZvaWQtZWxlbWVudHM+XG5mdW5jdGlvbiBub3RSZW5kZXJlZChub2RlKSB7XG4gIHZhciBwcm9wZXJ0aWVzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9XG5cbiAgcmV0dXJuIChcbiAgICAvLyBMaXN0IGZyb206IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNoaWRkZW4tZWxlbWVudHM+XG4gICAgaXMobm9kZSwgW1xuICAgICAgJ2RhdGFsaXN0JyxcbiAgICAgICdoZWFkJyxcbiAgICAgICdub2VtYmVkJyxcbiAgICAgICdub2ZyYW1lcycsXG4gICAgICAncnAnLFxuICAgICAgJ3NjcmlwdCcsXG4gICAgICAnc3R5bGUnLFxuICAgICAgJ3RlbXBsYXRlJyxcbiAgICAgICd0aXRsZScsXG4gICAgICAvLyBBY3QgYXMgaWYgd2Ugc3VwcG9ydCBzY3JpcHRpbmcuXG4gICAgICAnbm9zY3JpcHQnXG4gICAgXSkgfHxcbiAgICAvLyBIaWRkZW4gYXR0cmlidXRlLlxuICAgIHByb3BlcnRpZXMuaGlkZGVuIHx8XG4gICAgLy8gRnJvbTogPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Zsb3ctY29udGVudC0zPlxuICAgIChpcyhub2RlLCAnZGlhbG9nJykgJiYgIXByb3BlcnRpZXMub3BlbilcbiAgKVxufVxuIiwiY29uc3QgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcbmNvbnN0IGthdGV4ID0gcmVxdWlyZSgna2F0ZXgnKS5yZW5kZXJUb1N0cmluZ1xuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKVxuY29uc3QgcGFyc2UgPSByZXF1aXJlKCdyZWh5cGUtcGFyc2UnKVxuY29uc3QgdG9UZXh0ID0gcmVxdWlyZSgnaGFzdC11dGlsLXRvLXRleHQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlaHlwZUthdGV4XG5cbmNvbnN0IGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuY29uc3QgcGFyc2VIdG1sID0gdW5pZmllZCgpLnVzZShwYXJzZSwge2ZyYWdtZW50OiB0cnVlLCBwb3NpdGlvbjogZmFsc2V9KVxuXG5jb25zdCBzb3VyY2UgPSAncmVoeXBlLWthdGV4J1xuXG5mdW5jdGlvbiByZWh5cGVLYXRleChvcHRpb25zKSB7XG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IHRocm93T25FcnJvciA9IG9wdHMudGhyb3dPbkVycm9yIHx8IGZhbHNlXG5cbiAgcmV0dXJuIHRyYW5zZm9ybU1hdGhcblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1NYXRoKHRyZWUsIGZpbGUpIHtcbiAgICB2aXNpdCh0cmVlLCAnZWxlbWVudCcsIG9uZWxlbWVudClcblxuICAgIGZ1bmN0aW9uIG9uZWxlbWVudChlbGVtZW50KSB7XG4gICAgICBjb25zdCBjbGFzc2VzID0gZWxlbWVudC5wcm9wZXJ0aWVzLmNsYXNzTmFtZSB8fCBbXVxuICAgICAgY29uc3QgaW5saW5lID0gY2xhc3Nlcy5pbmNsdWRlcygnbWF0aC1pbmxpbmUnKVxuICAgICAgY29uc3QgZGlzcGxheU1vZGUgPSBjbGFzc2VzLmluY2x1ZGVzKCdtYXRoLWRpc3BsYXknKVxuXG4gICAgICBpZiAoIWlubGluZSAmJiAhZGlzcGxheU1vZGUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gdG9UZXh0KGVsZW1lbnQpXG5cbiAgICAgIGxldCByZXN1bHRcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0ga2F0ZXgoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgYXNzaWduKHt9LCBvcHRpb25zLCB7ZGlzcGxheU1vZGU6IGRpc3BsYXlNb2RlLCB0aHJvd09uRXJyb3I6IHRydWV9KVxuICAgICAgICApXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBmbiA9IHRocm93T25FcnJvciA/ICdmYWlsJyA6ICdtZXNzYWdlJ1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBbc291cmNlLCBlcnJvci5uYW1lLnRvTG93ZXJDYXNlKCldLmpvaW4oJzonKVxuXG4gICAgICAgIGZpbGVbZm5dKGVycm9yLm1lc3NhZ2UsIGVsZW1lbnQucG9zaXRpb24sIG9yaWdpbilcblxuICAgICAgICByZXN1bHQgPSBrYXRleChcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBhc3NpZ24oe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAgIGRpc3BsYXlNb2RlOiBkaXNwbGF5TW9kZSxcbiAgICAgICAgICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gICAgICAgICAgICBzdHJpY3Q6ICdpZ25vcmUnXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBlbGVtZW50LmNoaWxkcmVuID0gcGFyc2VIdG1sLnBhcnNlKHJlc3VsdCkuY2hpbGRyZW5cbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludGVyRWxlbWVudFdoaXRlU3BhY2VcblxuLy8gSFRNTCB3aGl0ZS1zcGFjZSBleHByZXNzaW9uLlxuLy8gU2VlIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzcGFjZS1jaGFyYWN0ZXI+LlxudmFyIHJlID0gL1sgXFx0XFxuXFxmXFxyXS9nXG5cbmZ1bmN0aW9uIGludGVyRWxlbWVudFdoaXRlU3BhY2Uobm9kZSkge1xuICB2YXIgdmFsdWVcblxuICBpZiAobm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICB2YWx1ZSA9IG5vZGUudmFsdWUgfHwgJydcbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IG5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlLCAnJykgPT09ICcnXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlU3BhY2UgPSByZXF1aXJlKCdoYXN0LXV0aWwtd2hpdGVzcGFjZScpXG5cbmV4cG9ydHMuYmVmb3JlID0gc2libGluZ3MoLTEpXG5leHBvcnRzLmFmdGVyID0gc2libGluZ3MoMSlcblxuLy8gRmFjdG9yeSB0byBjaGVjayBzaWJsaW5ncyBpbiBhIGRpcmVjdGlvbi5cbmZ1bmN0aW9uIHNpYmxpbmdzKGluY3JlbWVudCkge1xuICByZXR1cm4gc2libGluZ1xuXG4gIC8vIEZpbmQgYXBwbGljYWJsZSBzaWJsaW5ncyBpbiBhIGRpcmVjdGlvbi5cbiAgZnVuY3Rpb24gc2libGluZyhwYXJlbnQsIGluZGV4LCBpbmNsdWRlV2hpdGVTcGFjZSkge1xuICAgIHZhciBzaWJsaW5ncyA9IHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW5cbiAgICB2YXIgbmV4dFxuXG4gICAgaW5kZXggKz0gaW5jcmVtZW50XG4gICAgbmV4dCA9IHNpYmxpbmdzICYmIHNpYmxpbmdzW2luZGV4XVxuXG4gICAgaWYgKCFpbmNsdWRlV2hpdGVTcGFjZSkge1xuICAgICAgd2hpbGUgKG5leHQgJiYgd2hpdGVTcGFjZShuZXh0KSkge1xuICAgICAgICBpbmRleCArPSBpbmNyZW1lbnRcbiAgICAgICAgbmV4dCA9IHNpYmxpbmdzW2luZGV4XVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWZ0ZXIgPSByZXF1aXJlKCcuL3NpYmxpbmdzJykuYWZ0ZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmaXJzdFxuXG4vLyBHZXQgdGhlIGZpcnN0IGNoaWxkIGluIGBwYXJlbnRgLlxuZnVuY3Rpb24gZmlyc3QocGFyZW50LCBpbmNsdWRlV2hpdGVTcGFjZSkge1xuICByZXR1cm4gYWZ0ZXIocGFyZW50LCAtMSwgaW5jbHVkZVdoaXRlU3BhY2UpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBwbGFjZVxuXG4vLyBHZXQgdGhlIHBvc2l0aW9uIG9mIGBub2RlYCBpbiBgcGFyZW50YC5cbmZ1bmN0aW9uIHBsYWNlKHBhcmVudCwgY2hpbGQpIHtcbiAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQuY2hpbGRyZW4gJiYgcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbnZlcnQgPSByZXF1aXJlKCd1bmlzdC11dGlsLWlzL2NvbnZlcnQnKVxudmFyIHdoaXRlU3BhY2UgPSByZXF1aXJlKCdoYXN0LXV0aWwtd2hpdGVzcGFjZScpXG5cbm1vZHVsZS5leHBvcnRzID0gd2hpdGVTcGFjZUxlZnRcblxudmFyIGlzVGV4dCA9IGNvbnZlcnQoJ3RleHQnKVxuXG4vLyBDaGVjayBpZiBgbm9kZWAgc3RhcnRzIHdpdGggd2hpdGUtc3BhY2UuXG5mdW5jdGlvbiB3aGl0ZVNwYWNlTGVmdChub2RlKSB7XG4gIHJldHVybiBpc1RleHQobm9kZSkgJiYgd2hpdGVTcGFjZShub2RlLnZhbHVlLmNoYXJBdCgwKSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXNzaW9uXG5cbnZhciBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBGYWN0b3J5IHRvIGNoZWNrIGlmIGEgZ2l2ZW4gbm9kZSBjYW4gaGF2ZSBhIHRhZyBvbWl0dGVkLlxuZnVuY3Rpb24gb21pc3Npb24oaGFuZGxlcnMpIHtcbiAgcmV0dXJuIG9taXRcblxuICAvLyBDaGVjayBpZiBhIGdpdmVuIG5vZGUgY2FuIGhhdmUgYSB0YWcgb21pdHRlZC5cbiAgZnVuY3Rpb24gb21pdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gICAgdmFyIG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgICB2YXIgZm4gPSBvd24uY2FsbChoYW5kbGVycywgbmFtZSkgPyBoYW5kbGVyc1tuYW1lXSA6IGZhbHNlXG5cbiAgICByZXR1cm4gZm4gPyBmbihub2RlLCBpbmRleCwgcGFyZW50KSA6IGZhbHNlXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtaXMvY29udmVydCcpXG52YXIgZWxlbWVudCA9IHJlcXVpcmUoJ2hhc3QtdXRpbC1pcy1lbGVtZW50JylcbnZhciB3aGl0ZVNwYWNlTGVmdCA9IHJlcXVpcmUoJy4vdXRpbC93aGl0ZS1zcGFjZS1sZWZ0JylcbnZhciBhZnRlciA9IHJlcXVpcmUoJy4vdXRpbC9zaWJsaW5ncycpLmFmdGVyXG52YXIgb21pc3Npb24gPSByZXF1aXJlKCcuL29taXNzaW9uJylcblxudmFyIGlzQ29tbWVudCA9IGNvbnZlcnQoJ2NvbW1lbnQnKVxuXG52YXIgb3B0aW9uR3JvdXAgPSAnb3B0Z3JvdXAnXG52YXIgb3B0aW9ucyA9IFsnb3B0aW9uJ10uY29uY2F0KG9wdGlvbkdyb3VwKVxudmFyIGRhdGFMaXN0SXRlbSA9IFsnZHQnLCAnZGQnXVxudmFyIGxpc3RJdGVtID0gJ2xpJ1xudmFyIG1lbnVDb250ZW50ID0gWydtZW51aXRlbScsICdocicsICdtZW51J11cbnZhciBydWJ5ID0gWydycCcsICdydCddXG52YXIgdGFibGVDb250YWluZXIgPSBbJ3Rib2R5JywgJ3Rmb290J11cbnZhciB0YWJsZVJvdyA9ICd0cidcbnZhciB0YWJsZUNlbGwgPSBbJ3RkJywgJ3RoJ11cblxudmFyIGNvbmZ1c2luZ1BhcmFncmFwaFBhcmVudCA9IFtcbiAgJ2EnLFxuICAnYXVkaW8nLFxuICAnZGVsJyxcbiAgJ2lucycsXG4gICdtYXAnLFxuICAnbm9zY3JpcHQnLFxuICAndmlkZW8nXG5dXG5cbnZhciBjbGVhclBhcmFncmFwaFNpYmxpbmcgPSBbXG4gICdhZGRyZXNzJyxcbiAgJ2FydGljbGUnLFxuICAnYXNpZGUnLFxuICAnYmxvY2txdW90ZScsXG4gICdkZXRhaWxzJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkZXInLFxuICAnaGdyb3VwJyxcbiAgJ2hyJyxcbiAgJ21haW4nLFxuICAnbWVudScsXG4gICduYXYnLFxuICAnb2wnLFxuICAncCcsXG4gICdwcmUnLFxuICAnc2VjdGlvbicsXG4gICd0YWJsZScsXG4gICd1bCdcbl1cblxubW9kdWxlLmV4cG9ydHMgPSBvbWlzc2lvbih7XG4gIGh0bWw6IGh0bWwsXG4gIGhlYWQ6IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICBib2R5OiBib2R5LFxuICBwOiBwLFxuICBsaTogbGksXG4gIGR0OiBkdCxcbiAgZGQ6IGRkLFxuICBydDogcnVieUVsZW1lbnQsXG4gIHJwOiBydWJ5RWxlbWVudCxcbiAgb3B0Z3JvdXA6IG9wdGdyb3VwLFxuICBvcHRpb246IG9wdGlvbixcbiAgbWVudWl0ZW06IG1lbnVpdGVtLFxuICBjb2xncm91cDogaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24sXG4gIGNhcHRpb246IGhlYWRPckNvbGdyb3VwT3JDYXB0aW9uLFxuICB0aGVhZDogdGhlYWQsXG4gIHRib2R5OiB0Ym9keSxcbiAgdGZvb3Q6IHRmb290LFxuICB0cjogdHIsXG4gIHRkOiBjZWxscyxcbiAgdGg6IGNlbGxzXG59KVxuXG4vLyBNYWNybyBmb3IgYDwvaGVhZD5gLCBgPC9jb2xncm91cD5gLCBhbmQgYDwvY2FwdGlvbj5gLlxuZnVuY3Rpb24gaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24obm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgsIHRydWUpXG4gIHJldHVybiAhbmV4dCB8fCAoIWlzQ29tbWVudChuZXh0KSAmJiAhd2hpdGVTcGFjZUxlZnQobmV4dCkpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9odG1sPmAuXG5mdW5jdGlvbiBodG1sKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgIWlzQ29tbWVudChuZXh0KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvYm9keT5gLlxuZnVuY3Rpb24gYm9keShub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8ICFpc0NvbW1lbnQobmV4dClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3A+YC5cbmZ1bmN0aW9uIHAobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiBuZXh0XG4gICAgPyBlbGVtZW50KG5leHQsIGNsZWFyUGFyYWdyYXBoU2libGluZylcbiAgICA6ICFwYXJlbnQgfHwgIWVsZW1lbnQocGFyZW50LCBjb25mdXNpbmdQYXJhZ3JhcGhQYXJlbnQpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9saT5gLlxuZnVuY3Rpb24gbGkobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIGxpc3RJdGVtKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvZHQ+YC5cbmZ1bmN0aW9uIGR0KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gbmV4dCAmJiBlbGVtZW50KG5leHQsIGRhdGFMaXN0SXRlbSlcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L2RkPmAuXG5mdW5jdGlvbiBkZChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgZGF0YUxpc3RJdGVtKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvcnQ+YCBvciBgPC9ycD5gLlxuZnVuY3Rpb24gcnVieUVsZW1lbnQobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIHJ1YnkpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9vcHRncm91cD5gLlxuZnVuY3Rpb24gb3B0Z3JvdXAobm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIG9wdGlvbkdyb3VwKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvb3B0aW9uPmAuXG5mdW5jdGlvbiBvcHRpb24obm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIG9wdGlvbnMpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC9tZW51aXRlbT5gLlxuZnVuY3Rpb24gbWVudWl0ZW0obm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgbmV4dCA9IGFmdGVyKHBhcmVudCwgaW5kZXgpXG4gIHJldHVybiAhbmV4dCB8fCBlbGVtZW50KG5leHQsIG1lbnVDb250ZW50KVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvdGhlYWQ+YC5cbmZ1bmN0aW9uIHRoZWFkKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gbmV4dCAmJiBlbGVtZW50KG5leHQsIHRhYmxlQ29udGFpbmVyKVxufVxuXG4vLyBXaGV0aGVyIHRvIG9taXQgYDwvdGJvZHk+YC5cbmZ1bmN0aW9uIHRib2R5KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIG5leHQgPSBhZnRlcihwYXJlbnQsIGluZGV4KVxuICByZXR1cm4gIW5leHQgfHwgZWxlbWVudChuZXh0LCB0YWJsZUNvbnRhaW5lcilcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3Rmb290PmAuXG5mdW5jdGlvbiB0Zm9vdChub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHJldHVybiAhYWZ0ZXIocGFyZW50LCBpbmRleClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8L3RyPmAuXG5mdW5jdGlvbiB0cihub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgdGFibGVSb3cpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPC90ZD5gIG9yIGA8L3RoPmAuXG5mdW5jdGlvbiBjZWxscyhub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIHZhciBuZXh0ID0gYWZ0ZXIocGFyZW50LCBpbmRleClcbiAgcmV0dXJuICFuZXh0IHx8IGVsZW1lbnQobmV4dCwgdGFibGVDZWxsKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjb252ZXJ0ID0gcmVxdWlyZSgndW5pc3QtdXRpbC1pcy9jb252ZXJ0JylcbnZhciBlbGVtZW50ID0gcmVxdWlyZSgnaGFzdC11dGlsLWlzLWVsZW1lbnQnKVxudmFyIGJlZm9yZSA9IHJlcXVpcmUoJy4vdXRpbC9zaWJsaW5ncycpLmJlZm9yZVxudmFyIGZpcnN0ID0gcmVxdWlyZSgnLi91dGlsL2ZpcnN0JylcbnZhciBwbGFjZSA9IHJlcXVpcmUoJy4vdXRpbC9wbGFjZScpXG52YXIgd2hpdGVTcGFjZUxlZnQgPSByZXF1aXJlKCcuL3V0aWwvd2hpdGUtc3BhY2UtbGVmdCcpXG52YXIgY2xvc2luZyA9IHJlcXVpcmUoJy4vY2xvc2luZycpXG52YXIgb21pc3Npb24gPSByZXF1aXJlKCcuL29taXNzaW9uJylcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbnZhciBpc0NvbW1lbnQgPSBjb252ZXJ0KCdjb21tZW50JylcblxudmFyIHVuaXF1ZUhlYWRNZXRhZGF0YSA9IFsndGl0bGUnLCAnYmFzZSddXG52YXIgbWV0YSA9IFsnbWV0YScsICdsaW5rJywgJ3NjcmlwdCcsICdzdHlsZScsICd0ZW1wbGF0ZSddXG52YXIgdGFibGVDb250YWluZXJzID0gWyd0aGVhZCcsICd0Ym9keSddXG52YXIgdGFibGVSb3cgPSAndHInXG5cbm1vZHVsZS5leHBvcnRzID0gb21pc3Npb24oe1xuICBodG1sOiBodG1sLFxuICBoZWFkOiBoZWFkLFxuICBib2R5OiBib2R5LFxuICBjb2xncm91cDogY29sZ3JvdXAsXG4gIHRib2R5OiB0Ym9keVxufSlcblxuLy8gV2hldGhlciB0byBvbWl0IGA8aHRtbD5gLlxuZnVuY3Rpb24gaHRtbChub2RlKSB7XG4gIHZhciBoZWFkID0gZmlyc3Qobm9kZSlcbiAgcmV0dXJuICFoZWFkIHx8ICFpc0NvbW1lbnQoaGVhZClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8aGVhZD5gLlxuZnVuY3Rpb24gaGVhZChub2RlKSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW5cbiAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICB2YXIgbWFwID0ge31cbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIGNoaWxkXG4gIHZhciBuYW1lXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuW2luZGV4XVxuICAgIG5hbWUgPSBjaGlsZC50YWdOYW1lXG5cbiAgICBpZiAoZWxlbWVudChjaGlsZCwgdW5pcXVlSGVhZE1ldGFkYXRhKSkge1xuICAgICAgaWYgKG93bi5jYWxsKG1hcCwgbmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIG1hcFtuYW1lXSA9IHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gQm9vbGVhbihsZW5ndGgpXG59XG5cbi8vIFdoZXRoZXIgdG8gb21pdCBgPGJvZHk+YC5cbmZ1bmN0aW9uIGJvZHkobm9kZSkge1xuICB2YXIgaGVhZCA9IGZpcnN0KG5vZGUsIHRydWUpXG5cbiAgcmV0dXJuIChcbiAgICAhaGVhZCB8fCAoIWlzQ29tbWVudChoZWFkKSAmJiAhd2hpdGVTcGFjZUxlZnQoaGVhZCkgJiYgIWVsZW1lbnQoaGVhZCwgbWV0YSkpXG4gIClcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8Y29sZ3JvdXA+YC5cbi8vIFRoZSBzcGVjIGRlc2NyaWJlcyBzb21lIGxvZ2ljIGZvciB0aGUgb3BlbmluZyB0YWcsIGJ1dCBpdOKAmXMgZWFzaWVyIHRvXG4vLyBpbXBsZW1lbnQgaW4gdGhlIGNsb3NpbmcgdGFnLCB0byB0aGUgc2FtZSBlZmZlY3QsIHNvIHdlIGhhbmRsZSBpdCB0aGVyZVxuLy8gaW5zdGVhZC5cbmZ1bmN0aW9uIGNvbGdyb3VwKG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBiZWZvcmUocGFyZW50LCBpbmRleClcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlLCB0cnVlKVxuXG4gIC8vIFByZXZpb3VzIGNvbGdyb3VwIHdhcyBhbHJlYWR5IG9taXR0ZWQuXG4gIGlmIChlbGVtZW50KHByZXYsICdjb2xncm91cCcpICYmIGNsb3NpbmcocHJldiwgcGxhY2UocGFyZW50LCBwcmV2KSwgcGFyZW50KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGhlYWQgJiYgZWxlbWVudChoZWFkLCAnY29sJylcbn1cblxuLy8gV2hldGhlciB0byBvbWl0IGA8dGJvZHk+YC5cbmZ1bmN0aW9uIHRib2R5KG5vZGUsIGluZGV4LCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBiZWZvcmUocGFyZW50LCBpbmRleClcbiAgdmFyIGhlYWQgPSBmaXJzdChub2RlKVxuXG4gIC8vIFByZXZpb3VzIHRhYmxlIHNlY3Rpb24gd2FzIGFscmVhZHkgb21pdHRlZC5cbiAgaWYgKFxuICAgIGVsZW1lbnQocHJldiwgdGFibGVDb250YWluZXJzKSAmJlxuICAgIGNsb3NpbmcocHJldiwgcGxhY2UocGFyZW50LCBwcmV2KSwgcGFyZW50KVxuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBoZWFkICYmIGVsZW1lbnQoaGVhZCwgdGFibGVSb3cpXG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHMub3BlbmluZyA9IHJlcXVpcmUoJy4vb3BlbmluZycpXG5leHBvcnRzLmNsb3NpbmcgPSByZXF1aXJlKCcuL2Nsb3NpbmcnKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBvbmUgPSByZXF1aXJlKCcuL29uZScpXG5cbm1vZHVsZS5leHBvcnRzID0gYWxsXG5cbi8vIFN0cmluZ2lmeSBhbGwgY2hpbGRyZW4gb2YgYHBhcmVudGAuXG5mdW5jdGlvbiBhbGwoY3R4LCBwYXJlbnQpIHtcbiAgdmFyIGNoaWxkcmVuID0gcGFyZW50ICYmIHBhcmVudC5jaGlsZHJlblxuICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciByZXN1bHRzID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdHNbaW5kZXhdID0gb25lKGN0eCwgY2hpbGRyZW5baW5kZXhdLCBpbmRleCwgcGFyZW50KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhleGFkZWNpbWFsXG5cbi8vIENoZWNrIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgY29kZSwgb3IgdGhlIGNoYXJhY3RlciBjb2RlIGF0IHRoZSBmaXJzdFxuLy8gY2hhcmFjdGVyLCBpcyBoZXhhZGVjaW1hbC5cbmZ1bmN0aW9uIGhleGFkZWNpbWFsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID8gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXJcblxuICByZXR1cm4gKFxuICAgIChjb2RlID49IDk3IC8qIGEgKi8gJiYgY29kZSA8PSAxMDIpIC8qIHogKi8gfHxcbiAgICAoY29kZSA+PSA2NSAvKiBBICovICYmIGNvZGUgPD0gNzApIC8qIFogKi8gfHxcbiAgICAoY29kZSA+PSA0OCAvKiBBICovICYmIGNvZGUgPD0gNTcpIC8qIFogKi9cbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGVjaW1hbFxuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXIgY29kZSBhdCB0aGUgZmlyc3Rcbi8vIGNoYXJhY3RlciwgaXMgZGVjaW1hbC5cbmZ1bmN0aW9uIGRlY2ltYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlclxuXG4gIHJldHVybiBjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcgLyogMC05ICovXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhbHBoYWJldGljYWxcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGFscGhhYmV0aWNhbC5cbmZ1bmN0aW9uIGFscGhhYmV0aWNhbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyXG5cbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEyMikgLyogYS16ICovIHx8XG4gICAgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA5MCkgLyogQS1aICovXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gYWxwaGFudW1lcmljYWxcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGFscGhhbnVtZXJpY2FsLlxuZnVuY3Rpb24gYWxwaGFudW1lcmljYWwoY2hhcmFjdGVyKSB7XG4gIHJldHVybiBhbHBoYWJldGljYWwoY2hhcmFjdGVyKSB8fCBkZWNpbWFsKGNoYXJhY3Rlcilcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZW50aXRpZXMgPSByZXF1aXJlKCdjaGFyYWN0ZXItZW50aXRpZXMtaHRtbDQnKVxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKVxudmFyIGhleGFkZWNpbWFsID0gcmVxdWlyZSgnaXMtaGV4YWRlY2ltYWwnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBhbHBoYW51bWVyaWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhbnVtZXJpY2FsJylcbnZhciBkYW5nZXJvdXMgPSByZXF1aXJlKCcuL2Rhbmdlcm91cy5qc29uJylcblxubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGVcbmVuY29kZS5lc2NhcGUgPSBlc2NhcGVcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIExpc3Qgb2YgZW5mb3JjZWQgZXNjYXBlcy5cbnZhciBlc2NhcGVzID0gWydcIicsIFwiJ1wiLCAnPCcsICc+JywgJyYnLCAnYCddXG5cbi8vIE1hcCBvZiBjaGFyYWN0ZXJzIHRvIG5hbWVzLlxudmFyIGNoYXJhY3RlcnMgPSBjb25zdHJ1Y3QoKVxuXG4vLyBEZWZhdWx0IGVzY2FwZXMuXG52YXIgZGVmYXVsdEVzY2FwZXMgPSB0b0V4cHJlc3Npb24oZXNjYXBlcylcblxuLy8gU3Vycm9nYXRlIHBhaXJzLlxudmFyIHN1cnJvZ2F0ZVBhaXIgPSAvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXS9nXG5cbi8vIE5vbi1BU0NJSSBjaGFyYWN0ZXJzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXgsIHVuaWNvcm4vbm8taGV4LWVzY2FwZVxudmFyIGJtcCA9IC9bXFx4MDEtXFx0XFx4MEJcXGZcXHgwRS1cXHgxRlxceDdGXFx4ODFcXHg4RFxceDhGXFx4OTBcXHg5RFxceEEwLVxcdUZGRkZdL2dcblxuLy8gRW5jb2RlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBgdmFsdWVgLlxuZnVuY3Rpb24gZW5jb2RlKHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHN1YnNldCA9IHNldHRpbmdzLnN1YnNldFxuICB2YXIgc2V0ID0gc3Vic2V0ID8gdG9FeHByZXNzaW9uKHN1YnNldCkgOiBkZWZhdWx0RXNjYXBlc1xuICB2YXIgZXNjYXBlT25seSA9IHNldHRpbmdzLmVzY2FwZU9ubHlcbiAgdmFyIG9taXQgPSBzZXR0aW5ncy5vbWl0T3B0aW9uYWxTZW1pY29sb25zXG5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHNldCwgcmVwbGFjZSlcblxuICBpZiAoc3Vic2V0IHx8IGVzY2FwZU9ubHkpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKHN1cnJvZ2F0ZVBhaXIsIHJlcGxhY2VTdXJyb2dhdGVQYWlyKVxuICAgIC5yZXBsYWNlKGJtcCwgcmVwbGFjZSlcblxuICBmdW5jdGlvbiByZXBsYWNlU3Vycm9nYXRlUGFpcihwYWlyLCBwb3MsIHZhbCkge1xuICAgIHJldHVybiB0b0hleFJlZmVyZW5jZShcbiAgICAgIChwYWlyLmNoYXJDb2RlQXQoMCkgLSAweGQ4MDApICogMHg0MDAgK1xuICAgICAgICBwYWlyLmNoYXJDb2RlQXQoMSkgLVxuICAgICAgICAweGRjMDAgK1xuICAgICAgICAweDEwMDAwLFxuICAgICAgdmFsLmNoYXJBdChwb3MgKyAyKSxcbiAgICAgIG9taXRcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlKGNoYXIsIHBvcywgdmFsKSB7XG4gICAgcmV0dXJuIG9uZShjaGFyLCB2YWwuY2hhckF0KHBvcyArIDEpLCBzZXR0aW5ncylcbiAgfVxufVxuXG4vLyBTaG9ydGN1dCB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIEhUTUwuXG5mdW5jdGlvbiBlc2NhcGUodmFsdWUpIHtcbiAgcmV0dXJuIGVuY29kZSh2YWx1ZSwge2VzY2FwZU9ubHk6IHRydWUsIHVzZU5hbWVkUmVmZXJlbmNlczogdHJ1ZX0pXG59XG5cbi8vIEVuY29kZSBgY2hhcmAgYWNjb3JkaW5nIHRvIGBvcHRpb25zYC5cbmZ1bmN0aW9uIG9uZShjaGFyLCBuZXh0LCBvcHRpb25zKSB7XG4gIHZhciBzaG9ydGVzdCA9IG9wdGlvbnMudXNlU2hvcnRlc3RSZWZlcmVuY2VzXG4gIHZhciBvbWl0ID0gb3B0aW9ucy5vbWl0T3B0aW9uYWxTZW1pY29sb25zXG4gIHZhciBuYW1lZFxuICB2YXIgY29kZVxuICB2YXIgbnVtZXJpY1xuICB2YXIgZGVjaW1hbFxuXG4gIGlmICgoc2hvcnRlc3QgfHwgb3B0aW9ucy51c2VOYW1lZFJlZmVyZW5jZXMpICYmIG93bi5jYWxsKGNoYXJhY3RlcnMsIGNoYXIpKSB7XG4gICAgbmFtZWQgPSB0b05hbWVkKGNoYXJhY3RlcnNbY2hhcl0sIG5leHQsIG9taXQsIG9wdGlvbnMuYXR0cmlidXRlKVxuICB9XG5cbiAgaWYgKHNob3J0ZXN0IHx8ICFuYW1lZCkge1xuICAgIGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMClcbiAgICBudW1lcmljID0gdG9IZXhSZWZlcmVuY2UoY29kZSwgbmV4dCwgb21pdClcblxuICAgIC8vIFVzZSB0aGUgc2hvcnRlc3QgbnVtZXJpYyByZWZlcmVuY2Ugd2hlbiByZXF1ZXN0ZWQuXG4gICAgLy8gQSBzaW1wbGUgYWxnb3JpdGhtIHdvdWxkIHVzZSBkZWNpbWFsIGZvciBhbGwgY29kZSBwb2ludHMgdW5kZXIgMTAwLCBhc1xuICAgIC8vIHRob3NlIGFyZSBzaG9ydGVyIHRoYW4gaGV4YWRlY2ltYWw6XG4gICAgLy9cbiAgICAvLyAqIGAmIzk5O2AgdnMgYCYjeDYzO2AgKGRlY2ltYWwgc2hvcnRlcilcbiAgICAvLyAqIGAmIzEwMDtgIHZzIGAmI3g2NDtgIChlcXVhbClcbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIGJlY2F1c2Ugd2UgdGFrZSBgbmV4dGAgaW50byBjb25zaWRlcmF0aW9uIHdoZW4gYG9taXRgIGlzIHVzZWQsXG4gICAgLy8gQW5kIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRoYXQgZGVjaW1hbHMgYXJlIHNob3J0ZXIgb24gYmlnZ2VyIHZhbHVlcyBhc1xuICAgIC8vIHdlbGwgaWYgYG5leHRgIGlzIGhleGFkZWNpbWFsIGJ1dCBub3QgZGVjaW1hbCwgd2UgaW5zdGVhZCBjb21wYXJlIGJvdGguXG4gICAgaWYgKHNob3J0ZXN0KSB7XG4gICAgICBkZWNpbWFsID0gdG9EZWNpbWFsUmVmZXJlbmNlKGNvZGUsIG5leHQsIG9taXQpXG5cbiAgICAgIGlmIChkZWNpbWFsLmxlbmd0aCA8IG51bWVyaWMubGVuZ3RoKSB7XG4gICAgICAgIG51bWVyaWMgPSBkZWNpbWFsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG5hbWVkICYmICghc2hvcnRlc3QgfHwgbmFtZWQubGVuZ3RoIDwgbnVtZXJpYy5sZW5ndGgpKSB7XG4gICAgcmV0dXJuIG5hbWVkXG4gIH1cblxuICByZXR1cm4gbnVtZXJpY1xufVxuXG4vLyBUcmFuc2Zvcm0gYGNvZGVgIGludG8gYW4gZW50aXR5LlxuZnVuY3Rpb24gdG9OYW1lZChuYW1lLCBuZXh0LCBvbWl0LCBhdHRyaWJ1dGUpIHtcbiAgdmFyIHZhbHVlID0gJyYnICsgbmFtZVxuXG4gIGlmIChcbiAgICBvbWl0ICYmXG4gICAgb3duLmNhbGwobGVnYWN5LCBuYW1lKSAmJlxuICAgIGRhbmdlcm91cy5pbmRleE9mKG5hbWUpID09PSAtMSAmJlxuICAgICghYXR0cmlidXRlIHx8IChuZXh0ICYmIG5leHQgIT09ICc9JyAmJiAhYWxwaGFudW1lcmljYWwobmV4dCkpKVxuICApIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJldHVybiB2YWx1ZSArICc7J1xufVxuXG4vLyBUcmFuc2Zvcm0gYGNvZGVgIGludG8gYSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlLlxuZnVuY3Rpb24gdG9IZXhSZWZlcmVuY2UoY29kZSwgbmV4dCwgb21pdCkge1xuICB2YXIgdmFsdWUgPSAnJiN4JyArIGNvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG9taXQgJiYgbmV4dCAmJiAhaGV4YWRlY2ltYWwobmV4dCkgPyB2YWx1ZSA6IHZhbHVlICsgJzsnXG59XG5cbi8vIFRyYW5zZm9ybSBgY29kZWAgaW50byBhIGRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIHRvRGVjaW1hbFJlZmVyZW5jZShjb2RlLCBuZXh0LCBvbWl0KSB7XG4gIHZhciB2YWx1ZSA9ICcmIycgKyBTdHJpbmcoY29kZSlcbiAgcmV0dXJuIG9taXQgJiYgbmV4dCAmJiAhZGVjaW1hbChuZXh0KSA/IHZhbHVlIDogdmFsdWUgKyAnOydcbn1cblxuLy8gQ3JlYXRlIGFuIGV4cHJlc3Npb24gZm9yIGBjaGFyYWN0ZXJzYC5cbmZ1bmN0aW9uIHRvRXhwcmVzc2lvbihjaGFyYWN0ZXJzKSB7XG4gIHJldHVybiBuZXcgUmVnRXhwKCdbJyArIGNoYXJhY3RlcnMuam9pbignJykgKyAnXScsICdnJylcbn1cblxuLy8gQ29uc3RydWN0IHRoZSBtYXAuXG5mdW5jdGlvbiBjb25zdHJ1Y3QoKSB7XG4gIHZhciBjaGFycyA9IHt9XG4gIHZhciBuYW1lXG5cbiAgZm9yIChuYW1lIGluIGVudGl0aWVzKSB7XG4gICAgY2hhcnNbZW50aXRpZXNbbmFtZV1dID0gbmFtZVxuICB9XG5cbiAgcmV0dXJuIGNoYXJzXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgnc3RyaW5naWZ5LWVudGl0aWVzJylcblxubW9kdWxlLmV4cG9ydHMgPSB0ZXh0XG5cbi8vIFN0cmluZ2lmeSBgdGV4dGAuXG5mdW5jdGlvbiB0ZXh0KGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgdmFsdWUgPSBub2RlLnZhbHVlXG5cbiAgcmV0dXJuIGlzTGl0ZXJhbChwYXJlbnQpXG4gICAgPyB2YWx1ZVxuICAgIDogZW50aXRpZXModmFsdWUsIHh0ZW5kKGN0eC5lbnRpdGllcywge3N1YnNldDogWyc8JywgJyYnXX0pKVxufVxuXG4vLyBDaGVjayBpZiBjb250ZW50IG9mIGBub2RlYCBzaG91bGQgYmUgZXNjYXBlZC5cbmZ1bmN0aW9uIGlzTGl0ZXJhbChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIChub2RlLnRhZ05hbWUgPT09ICdzY3JpcHQnIHx8IG5vZGUudGFnTmFtZSA9PT0gJ3N0eWxlJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG4vLyBDaGFyYWN0ZXJzLlxudmFyIG5pbCA9ICdcXDAnXG52YXIgYW1wZXJzYW5kID0gJyYnXG52YXIgc3BhY2UgPSAnICdcbnZhciB0YWIgPSAnXFx0J1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBlcXVhbHNUbyA9ICc9J1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBzbGFzaCA9ICcvJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBjYXJyaWFnZVJldHVybiA9ICdcXHInXG52YXIgZm9ybUZlZWQgPSAnXFxmJ1xuXG52YXIgd2hpdGVzcGFjZSA9IFtzcGFjZSwgdGFiLCBsaW5lRmVlZCwgY2FycmlhZ2VSZXR1cm4sIGZvcm1GZWVkXVxuXG4vLyBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyaWJ1dGUtbmFtZS1zdGF0ZT4uXG52YXIgbmFtZSA9IHdoaXRlc3BhY2UuY29uY2F0KGFtcGVyc2FuZCwgc2xhc2gsIGdyZWF0ZXJUaGFuLCBlcXVhbHNUbylcblxuLy8gU2VlOiA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlLXZhbHVlLSh1bnF1b3RlZCktc3RhdGU+LlxudmFyIHVucXVvdGVkID0gd2hpdGVzcGFjZS5jb25jYXQoYW1wZXJzYW5kLCBncmVhdGVyVGhhbilcbnZhciB1bnF1b3RlZFNhZmUgPSB1bnF1b3RlZC5jb25jYXQoXG4gIG5pbCxcbiAgcXVvdGF0aW9uTWFyayxcbiAgYXBvc3Ryb3BoZSxcbiAgbGVzc1RoYW4sXG4gIGVxdWFsc1RvLFxuICBncmF2ZUFjY2VudFxuKVxuXG4vLyBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyaWJ1dGUtdmFsdWUtKHNpbmdsZS1xdW90ZWQpLXN0YXRlPi5cbnZhciBzaW5nbGVRdW90ZWQgPSBbYW1wZXJzYW5kLCBhcG9zdHJvcGhlXVxuXG4vLyBTZWU6IDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhdHRyaWJ1dGUtdmFsdWUtKGRvdWJsZS1xdW90ZWQpLXN0YXRlPi5cbnZhciBkb3VibGVRdW90ZWQgPSBbYW1wZXJzYW5kLCBxdW90YXRpb25NYXJrXVxuXG4vLyBNYXBzIG9mIHN1YnNldHMuXG4vLyBFYWNoIHZhbHVlIGlzIGEgbWF0cml4IG9mIHR1cGxlcy5cbi8vIFRoZSBmaXJzdCB2YWx1ZSBjYXVzZXMgcGFyc2UgZXJyb3JzLCB0aGUgc2Vjb25kIGlzIHZhbGlkLlxuLy8gT2YgYm90aCB2YWx1ZXMsIHRoZSBmaXJzdCB2YWx1ZSBpcyB1bnNhZmUsIGFuZCB0aGUgc2Vjb25kIGlzIHNhZmUuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbmFtZTogW1xuICAgIFtuYW1lLCBuYW1lLmNvbmNhdChxdW90YXRpb25NYXJrLCBhcG9zdHJvcGhlLCBncmF2ZUFjY2VudCldLFxuICAgIFtcbiAgICAgIG5hbWUuY29uY2F0KG5pbCwgcXVvdGF0aW9uTWFyaywgYXBvc3Ryb3BoZSwgbGVzc1RoYW4pLFxuICAgICAgbmFtZS5jb25jYXQobmlsLCBxdW90YXRpb25NYXJrLCBhcG9zdHJvcGhlLCBsZXNzVGhhbiwgZ3JhdmVBY2NlbnQpXG4gICAgXVxuICBdLFxuICB1bnF1b3RlZDogW1t1bnF1b3RlZCwgdW5xdW90ZWRTYWZlXSwgW3VucXVvdGVkU2FmZSwgdW5xdW90ZWRTYWZlXV0sXG4gIHNpbmdsZTogW1xuICAgIFtzaW5nbGVRdW90ZWQsIHNpbmdsZVF1b3RlZC5jb25jYXQocXVvdGF0aW9uTWFyaywgZ3JhdmVBY2NlbnQpXSxcbiAgICBbXG4gICAgICBzaW5nbGVRdW90ZWQuY29uY2F0KG5pbCksXG4gICAgICBzaW5nbGVRdW90ZWQuY29uY2F0KG5pbCwgcXVvdGF0aW9uTWFyaywgZ3JhdmVBY2NlbnQpXG4gICAgXVxuICBdLFxuICBkb3VibGU6IFtcbiAgICBbZG91YmxlUXVvdGVkLCBkb3VibGVRdW90ZWQuY29uY2F0KGFwb3N0cm9waGUsIGdyYXZlQWNjZW50KV0sXG4gICAgW1xuICAgICAgZG91YmxlUXVvdGVkLmNvbmNhdChuaWwpLFxuICAgICAgZG91YmxlUXVvdGVkLmNvbmNhdChuaWwsIGFwb3N0cm9waGUsIGdyYXZlQWNjZW50KVxuICAgIF1cbiAgXVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBzdmcgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9zdmcnKVxudmFyIGZpbmQgPSByZXF1aXJlKCdwcm9wZXJ0eS1pbmZvcm1hdGlvbi9maW5kJylcbnZhciBzcGFjZXMgPSByZXF1aXJlKCdzcGFjZS1zZXBhcmF0ZWQtdG9rZW5zJykuc3RyaW5naWZ5XG52YXIgY29tbWFzID0gcmVxdWlyZSgnY29tbWEtc2VwYXJhdGVkLXRva2VucycpLnN0cmluZ2lmeVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgnc3RyaW5naWZ5LWVudGl0aWVzJylcbnZhciBjY291bnQgPSByZXF1aXJlKCdjY291bnQnKVxudmFyIGFsbCA9IHJlcXVpcmUoJy4vYWxsJylcbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5cbm1vZHVsZS5leHBvcnRzID0gZWxlbWVudFxuXG52YXIgc3BhY2UgPSAnICdcbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGVxdWFsc1RvID0gJz0nXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xudmFyIHNsYXNoID0gJy8nXG5cbi8vIFN0cmluZ2lmeSBhbiBlbGVtZW50IGBub2RlYC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiBlbGVtZW50KGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgcGFyZW50U2NoZW1hID0gY3R4LnNjaGVtYVxuICB2YXIgbmFtZSA9IG5vZGUudGFnTmFtZVxuICB2YXIgdmFsdWUgPSAnJ1xuICB2YXIgc2VsZkNsb3NpbmdcbiAgdmFyIGNsb3NlXG4gIHZhciBvbWl0XG4gIHZhciByb290ID0gbm9kZVxuICB2YXIgY29udGVudFxuICB2YXIgYXR0cnNcbiAgdmFyIGxhc3RcblxuICBpZiAocGFyZW50U2NoZW1hLnNwYWNlID09PSAnaHRtbCcgJiYgbmFtZSA9PT0gJ3N2ZycpIHtcbiAgICBjdHguc2NoZW1hID0gc3ZnXG4gIH1cblxuICBhdHRycyA9IGF0dHJpYnV0ZXMoY3R4LCBub2RlLnByb3BlcnRpZXMpXG5cbiAgaWYgKGN0eC5zY2hlbWEuc3BhY2UgPT09ICdzdmcnKSB7XG4gICAgb21pdCA9IGZhbHNlXG4gICAgY2xvc2UgPSB0cnVlXG4gICAgc2VsZkNsb3NpbmcgPSBjdHguY2xvc2VFbXB0eVxuICB9IGVsc2Uge1xuICAgIG9taXQgPSBjdHgub21pdFxuICAgIGNsb3NlID0gY3R4LmNsb3NlXG4gICAgc2VsZkNsb3NpbmcgPSBjdHgudm9pZHMuaW5kZXhPZihuYW1lLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHJvb3QgPSBub2RlLmNvbnRlbnRcbiAgICB9XG4gIH1cblxuICBjb250ZW50ID0gYWxsKGN0eCwgcm9vdClcblxuICAvLyBJZiB0aGUgbm9kZSBpcyBjYXRlZ29yaXNlZCBhcyB2b2lkLCBidXQgaXQgaGFzIGNoaWxkcmVuLCByZW1vdmUgdGhlXG4gIC8vIGNhdGVnb3Jpc2F0aW9uLlxuICAvLyBUaGlzIGVuYWJsZXMgZm9yIGV4YW1wbGUgYG1lbnVpdGVtYHMsIHdoaWNoIGFyZSB2b2lkIGluIFczQyBIVE1MIGJ1dCBub3RcbiAgLy8gdm9pZCBpbiBXSEFUV0cgSFRNTCwgdG8gYmUgc3RyaW5naWZpZWQgcHJvcGVybHkuXG4gIHNlbGZDbG9zaW5nID0gY29udGVudCA/IGZhbHNlIDogc2VsZkNsb3NpbmdcblxuICBpZiAoYXR0cnMgfHwgIW9taXQgfHwgIW9taXQub3BlbmluZyhub2RlLCBpbmRleCwgcGFyZW50KSkge1xuICAgIHZhbHVlID0gbGVzc1RoYW4gKyBuYW1lICsgKGF0dHJzID8gc3BhY2UgKyBhdHRycyA6ICcnKVxuXG4gICAgaWYgKHNlbGZDbG9zaW5nICYmIGNsb3NlKSB7XG4gICAgICBsYXN0ID0gYXR0cnMuY2hhckF0KGF0dHJzLmxlbmd0aCAtIDEpXG4gICAgICBpZiAoXG4gICAgICAgICFjdHgudGlnaHRDbG9zZSB8fFxuICAgICAgICBsYXN0ID09PSBzbGFzaCB8fFxuICAgICAgICAoY3R4LnNjaGVtYS5zcGFjZSA9PT0gJ3N2ZycgJiZcbiAgICAgICAgICBsYXN0ICYmXG4gICAgICAgICAgbGFzdCAhPT0gcXVvdGF0aW9uTWFyayAmJlxuICAgICAgICAgIGxhc3QgIT09IGFwb3N0cm9waGUpXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUgKz0gc3BhY2VcbiAgICAgIH1cblxuICAgICAgdmFsdWUgKz0gc2xhc2hcbiAgICB9XG5cbiAgICB2YWx1ZSArPSBncmVhdGVyVGhhblxuICB9XG5cbiAgdmFsdWUgKz0gY29udGVudFxuXG4gIGlmICghc2VsZkNsb3NpbmcgJiYgKCFvbWl0IHx8ICFvbWl0LmNsb3Npbmcobm9kZSwgaW5kZXgsIHBhcmVudCkpKSB7XG4gICAgdmFsdWUgKz0gbGVzc1RoYW4gKyBzbGFzaCArIG5hbWUgKyBncmVhdGVyVGhhblxuICB9XG5cbiAgY3R4LnNjaGVtYSA9IHBhcmVudFNjaGVtYVxuXG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBTdHJpbmdpZnkgYWxsIGF0dHJpYnV0ZXMuXG5mdW5jdGlvbiBhdHRyaWJ1dGVzKGN0eCwgcHJvcHMpIHtcbiAgdmFyIHZhbHVlcyA9IFtdXG4gIHZhciBrZXlcbiAgdmFyIHZhbHVlXG4gIHZhciByZXN1bHRcbiAgdmFyIGxlbmd0aFxuICB2YXIgaW5kZXhcbiAgdmFyIGxhc3RcblxuICBmb3IgKGtleSBpbiBwcm9wcykge1xuICAgIHZhbHVlID0gcHJvcHNba2V5XVxuXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcmVzdWx0ID0gYXR0cmlidXRlKGN0eCwga2V5LCB2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHJlc3VsdClcbiAgICB9XG4gIH1cblxuICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdCA9IHZhbHVlc1tpbmRleF1cbiAgICBsYXN0ID0gbnVsbFxuXG4gICAgaWYgKGN0eC50aWdodCkge1xuICAgICAgbGFzdCA9IHJlc3VsdC5jaGFyQXQocmVzdWx0Lmxlbmd0aCAtIDEpXG4gICAgfVxuXG4gICAgLy8gSW4gdGlnaHQgbW9kZSwgZG9u4oCZdCBhZGQgYSBzcGFjZSBhZnRlciBxdW90ZWQgYXR0cmlidXRlcy5cbiAgICBpZiAoaW5kZXggIT09IGxlbmd0aCAtIDEgJiYgbGFzdCAhPT0gcXVvdGF0aW9uTWFyayAmJiBsYXN0ICE9PSBhcG9zdHJvcGhlKSB7XG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVzdWx0ICsgc3BhY2VcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWVzLmpvaW4oJycpXG59XG5cbi8vIFN0cmluZ2lmeSBvbmUgYXR0cmlidXRlLlxuZnVuY3Rpb24gYXR0cmlidXRlKGN0eCwga2V5LCB2YWx1ZSkge1xuICB2YXIgc2NoZW1hID0gY3R4LnNjaGVtYVxuICB2YXIgaW5mbyA9IGZpbmQoc2NoZW1hLCBrZXkpXG4gIHZhciBuYW1lID0gaW5mby5hdHRyaWJ1dGVcblxuICBpZiAoaW5mby5vdmVybG9hZGVkQm9vbGVhbiAmJiAodmFsdWUgPT09IG5hbWUgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgIHZhbHVlID0gdHJ1ZVxuICB9IGVsc2UgaWYgKFxuICAgIGluZm8uYm9vbGVhbiB8fFxuICAgIChpbmZvLm92ZXJsb2FkZWRCb29sZWFuICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpXG4gICkge1xuICAgIHZhbHVlID0gQm9vbGVhbih2YWx1ZSlcbiAgfVxuXG4gIGlmIChcbiAgICB2YWx1ZSA9PSBudWxsIHx8XG4gICAgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKVxuICApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIG5hbWUgPSBhdHRyaWJ1dGVOYW1lKGN0eCwgbmFtZSlcblxuICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgYm9vbGVhbiBwcm9wZXJ0eSBpbiBTVkc6IGBbZG93bmxvYWRdYCBvblxuICAgIC8vIGA8YT5gLlxuICAgIC8vIFRoaXMgcHJvcGVydHkgZG9lcyBub3Qgc2VlbSB0byB3b3JrIGluIGJyb3dzZXJzIChGRiwgU2EsIENoKSwgc28gSSBjYW7igJl0XG4gICAgLy8gdGVzdCBpZiBkcm9wcGluZyB0aGUgdmFsdWUgd29ya3MuXG4gICAgLy8gQnV0IEkgYXNzdW1lIHRoYXQgaXQgc2hvdWxkOlxuICAgIC8vXG4gICAgLy8gYGBgaHRtbFxuICAgIC8vIDwhZG9jdHlwZSBodG1sPlxuICAgIC8vIDxzdmcgdmlld0JveD1cIjAgMCAxMDAgMTAwXCI+XG4gICAgLy8gICA8YSBocmVmPWh0dHBzOi8vZXhhbXBsZS5jb20gZG93bmxvYWQ+XG4gICAgLy8gICAgIDxjaXJjbGUgY3g9NTAgY3k9NDAgcj0zNSAvPlxuICAgIC8vICAgPC9hPlxuICAgIC8vIDwvc3ZnPlxuICAgIC8vIGBgYFxuICAgIC8vXG4gICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wcm9wZXJ0eS1pbmZvcm1hdGlvbi9ibG9iL21hc3Rlci9saWIvc3ZnLmpzPlxuICAgIHJldHVybiBuYW1lXG4gIH1cblxuICByZXR1cm4gbmFtZSArIGF0dHJpYnV0ZVZhbHVlKGN0eCwga2V5LCB2YWx1ZSwgaW5mbylcbn1cblxuLy8gU3RyaW5naWZ5IHRoZSBhdHRyaWJ1dGUgbmFtZS5cbmZ1bmN0aW9uIGF0dHJpYnV0ZU5hbWUoY3R4LCBuYW1lKSB7XG4gIC8vIEFsd2F5cyBlbmNvZGUgd2l0aG91dCBwYXJzZSBlcnJvcnMgaW4gbm9uLUhUTUwuXG4gIHZhciB2YWxpZCA9IGN0eC5zY2hlbWEuc3BhY2UgPT09ICdodG1sJyA/IGN0eC52YWxpZCA6IDFcbiAgdmFyIHN1YnNldCA9IGNvbnN0YW50cy5uYW1lW3ZhbGlkXVtjdHguc2FmZV1cblxuICByZXR1cm4gZW50aXRpZXMobmFtZSwgeHRlbmQoY3R4LmVudGl0aWVzLCB7c3Vic2V0OiBzdWJzZXR9KSlcbn1cblxuLy8gU3RyaW5naWZ5IHRoZSBhdHRyaWJ1dGUgdmFsdWUuXG5mdW5jdGlvbiBhdHRyaWJ1dGVWYWx1ZShjdHgsIGtleSwgdmFsdWUsIGluZm8pIHtcbiAgdmFyIG9wdGlvbnMgPSBjdHguZW50aXRpZXNcbiAgdmFyIHF1b3RlID0gY3R4LnF1b3RlXG4gIHZhciBhbHRlcm5hdGl2ZSA9IGN0eC5hbHRlcm5hdGl2ZVxuICB2YXIgdW5xdW90ZWRcbiAgdmFyIHN1YnNldFxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHZhbHVlKSB7XG4gICAgLy8gYHNwYWNlc2AgZG9lc27igJl0IGFjY2VwdCBhIHNlY29uZCBhcmd1bWVudCwgYnV0IGl04oCZcyBnaXZlbiBoZXJlIGp1c3QgdG9cbiAgICAvLyBrZWVwIHRoZSBjb2RlIGNsZWFuZXIuXG4gICAgdmFsdWUgPSAoaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyA6IHNwYWNlcykodmFsdWUsIHtcbiAgICAgIHBhZExlZnQ6ICFjdHgudGlnaHRMaXN0c1xuICAgIH0pXG4gIH1cblxuICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcblxuICBpZiAodmFsdWUgfHwgIWN0eC5jb2xsYXBzZUVtcHR5KSB7XG4gICAgdW5xdW90ZWQgPSB2YWx1ZVxuXG4gICAgLy8gQ2hlY2sgdW5xdW90ZWQgdmFsdWUuXG4gICAgaWYgKGN0eC51bnF1b3RlZCkge1xuICAgICAgc3Vic2V0ID0gY29uc3RhbnRzLnVucXVvdGVkW2N0eC52YWxpZF1bY3R4LnNhZmVdXG4gICAgICB1bnF1b3RlZCA9IGVudGl0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgeHRlbmQob3B0aW9ucywge3N1YnNldDogc3Vic2V0LCBhdHRyaWJ1dGU6IHRydWV9KVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIElmIGB2YWx1ZWAgY29udGFpbnMgZW50aXRpZXMgd2hlbiB1bnF1b3RlZOKAplxuICAgIGlmICghY3R4LnVucXVvdGVkIHx8IHVucXVvdGVkICE9PSB2YWx1ZSkge1xuICAgICAgLy8gSWYgdGhlIGFsdGVybmF0aXZlIGlzIGxlc3MgY29tbW9uIHRoYW4gYHF1b3RlYCwgc3dpdGNoLlxuICAgICAgaWYgKGFsdGVybmF0aXZlICYmIGNjb3VudCh2YWx1ZSwgcXVvdGUpID4gY2NvdW50KHZhbHVlLCBhbHRlcm5hdGl2ZSkpIHtcbiAgICAgICAgcXVvdGUgPSBhbHRlcm5hdGl2ZVxuICAgICAgfVxuXG4gICAgICBzdWJzZXQgPSBxdW90ZSA9PT0gYXBvc3Ryb3BoZSA/IGNvbnN0YW50cy5zaW5nbGUgOiBjb25zdGFudHMuZG91YmxlXG4gICAgICAvLyBBbHdheXMgZW5jb2RlIHdpdGhvdXQgcGFyc2UgZXJyb3JzIGluIG5vbi1IVE1MLlxuICAgICAgc3Vic2V0ID0gc3Vic2V0W2N0eC5zY2hlbWEuc3BhY2UgPT09ICdodG1sJyA/IGN0eC52YWxpZCA6IDFdW2N0eC5zYWZlXVxuXG4gICAgICB2YWx1ZSA9IGVudGl0aWVzKHZhbHVlLCB4dGVuZChvcHRpb25zLCB7c3Vic2V0OiBzdWJzZXQsIGF0dHJpYnV0ZTogdHJ1ZX0pKVxuXG4gICAgICB2YWx1ZSA9IHF1b3RlICsgdmFsdWUgKyBxdW90ZVxuICAgIH1cblxuICAgIC8vIERvbuKAmXQgYWRkIGEgYD1gIGZvciB1bnF1b3RlZCBlbXB0aWVzLlxuICAgIHZhbHVlID0gdmFsdWUgPyBlcXVhbHNUbyArIHZhbHVlIDogdmFsdWVcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZG9jdHlwZVxuXG4vLyBTdHJpbmdpZnkgYSBkb2N0eXBlIGBub2RlYC5cbmZ1bmN0aW9uIGRvY3R5cGUoY3R4LCBub2RlKSB7XG4gIHZhciBzZXAgPSBjdHgudGlnaHREb2N0eXBlID8gJycgOiAnICdcbiAgdmFyIG5hbWUgPSBub2RlLm5hbWVcbiAgdmFyIHB1YiA9IG5vZGUucHVibGljXG4gIHZhciBzeXMgPSBub2RlLnN5c3RlbVxuICB2YXIgdmFsID0gWyc8IWRvY3R5cGUnXVxuXG4gIGlmIChuYW1lKSB7XG4gICAgdmFsLnB1c2goc2VwLCBuYW1lKVxuXG4gICAgaWYgKHB1YiAhPSBudWxsKSB7XG4gICAgICB2YWwucHVzaCgnIHB1YmxpYycsIHNlcCwgc21hcnQocHViKSlcbiAgICB9IGVsc2UgaWYgKHN5cyAhPSBudWxsKSB7XG4gICAgICB2YWwucHVzaCgnIHN5c3RlbScpXG4gICAgfVxuXG4gICAgaWYgKHN5cyAhPSBudWxsKSB7XG4gICAgICB2YWwucHVzaChzZXAsIHNtYXJ0KHN5cykpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbC5qb2luKCcnKSArICc+J1xufVxuXG5mdW5jdGlvbiBzbWFydCh2YWx1ZSkge1xuICB2YXIgcXVvdGUgPSB2YWx1ZS5pbmRleE9mKCdcIicpID09PSAtMSA/ICdcIicgOiBcIidcIlxuICByZXR1cm4gcXVvdGUgKyB2YWx1ZSArIHF1b3RlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb21tZW50XG5cbi8vIFN0cmluZ2lmeSBhIGNvbW1lbnQgYG5vZGVgLlxuZnVuY3Rpb24gY29tbWVudChjdHgsIG5vZGUpIHtcbiAgcmV0dXJuICc8IS0tJyArIG5vZGUudmFsdWUgKyAnLS0+J1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0ZXh0ID0gcmVxdWlyZSgnLi90ZXh0JylcblxubW9kdWxlLmV4cG9ydHMgPSByYXdcblxuLy8gU3RyaW5naWZ5IGByYXdgLlxuZnVuY3Rpb24gcmF3KGN0eCwgbm9kZSkge1xuICByZXR1cm4gY3R4LmRhbmdlcm91cyA/IG5vZGUudmFsdWUgOiB0ZXh0KGN0eCwgbm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9uZVxuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxudmFyIGhhbmRsZXJzID0ge31cblxuaGFuZGxlcnMucm9vdCA9IHJlcXVpcmUoJy4vYWxsJylcbmhhbmRsZXJzLnRleHQgPSByZXF1aXJlKCcuL3RleHQnKVxuaGFuZGxlcnMuZWxlbWVudCA9IHJlcXVpcmUoJy4vZWxlbWVudCcpXG5oYW5kbGVycy5kb2N0eXBlID0gcmVxdWlyZSgnLi9kb2N0eXBlJylcbmhhbmRsZXJzLmNvbW1lbnQgPSByZXF1aXJlKCcuL2NvbW1lbnQnKVxuaGFuZGxlcnMucmF3ID0gcmVxdWlyZSgnLi9yYXcnKVxuXG4vLyBTdHJpbmdpZnkgYG5vZGVgLlxuZnVuY3Rpb24gb25lKGN0eCwgbm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICB2YXIgdHlwZSA9IG5vZGUgJiYgbm9kZS50eXBlXG5cbiAgaWYgKCF0eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBub2RlLCBub3QgYCcgKyBub2RlICsgJ2AnKVxuICB9XG5cbiAgaWYgKCFvd24uY2FsbChoYW5kbGVycywgdHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb21waWxlIHVua25vd24gbm9kZSBgJyArIHR5cGUgKyAnYCcpXG4gIH1cblxuICByZXR1cm4gaGFuZGxlcnNbdHlwZV0oY3R4LCBub2RlLCBpbmRleCwgcGFyZW50KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBodG1sID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vaHRtbCcpXG52YXIgc3ZnID0gcmVxdWlyZSgncHJvcGVydHktaW5mb3JtYXRpb24vc3ZnJylcbnZhciB2b2lkcyA9IHJlcXVpcmUoJ2h0bWwtdm9pZC1lbGVtZW50cycpXG52YXIgb21pc3Npb24gPSByZXF1aXJlKCcuL29taXNzaW9uJylcbnZhciBvbmUgPSByZXF1aXJlKCcuL29uZScpXG5cbm1vZHVsZS5leHBvcnRzID0gdG9IdG1sXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxuXG4vLyBTdHJpbmdpZnkgdGhlIGdpdmVuIGhhc3Qgbm9kZS5cbmZ1bmN0aW9uIHRvSHRtbChub2RlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIHF1b3RlID0gc2V0dGluZ3MucXVvdGUgfHwgcXVvdGF0aW9uTWFya1xuICB2YXIgYWx0ZXJuYXRpdmUgPSBxdW90ZSA9PT0gcXVvdGF0aW9uTWFyayA/IGFwb3N0cm9waGUgOiBxdW90YXRpb25NYXJrXG4gIHZhciBzbWFydCA9IHNldHRpbmdzLnF1b3RlU21hcnRcblxuICBpZiAocXVvdGUgIT09IHF1b3RhdGlvbk1hcmsgJiYgcXVvdGUgIT09IGFwb3N0cm9waGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnSW52YWxpZCBxdW90ZSBgJyArXG4gICAgICAgIHF1b3RlICtcbiAgICAgICAgJ2AsIGV4cGVjdGVkIGAnICtcbiAgICAgICAgYXBvc3Ryb3BoZSArXG4gICAgICAgICdgIG9yIGAnICtcbiAgICAgICAgcXVvdGF0aW9uTWFyayArXG4gICAgICAgICdgJ1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBvbmUoXG4gICAge1xuICAgICAgdmFsaWQ6IHNldHRpbmdzLmFsbG93UGFyc2VFcnJvcnMgPyAwIDogMSxcbiAgICAgIHNhZmU6IHNldHRpbmdzLmFsbG93RGFuZ2Vyb3VzQ2hhcmFjdGVycyA/IDAgOiAxLFxuICAgICAgc2NoZW1hOiBzZXR0aW5ncy5zcGFjZSA9PT0gJ3N2ZycgPyBzdmcgOiBodG1sLFxuICAgICAgb21pdDogc2V0dGluZ3Mub21pdE9wdGlvbmFsVGFncyAmJiBvbWlzc2lvbixcbiAgICAgIHF1b3RlOiBxdW90ZSxcbiAgICAgIGFsdGVybmF0aXZlOiBzbWFydCA/IGFsdGVybmF0aXZlIDogbnVsbCxcbiAgICAgIHVucXVvdGVkOiBCb29sZWFuKHNldHRpbmdzLnByZWZlclVucXVvdGVkKSxcbiAgICAgIHRpZ2h0OiBzZXR0aW5ncy50aWdodEF0dHJpYnV0ZXMsXG4gICAgICB0aWdodERvY3R5cGU6IEJvb2xlYW4oc2V0dGluZ3MudGlnaHREb2N0eXBlKSxcbiAgICAgIHRpZ2h0TGlzdHM6IHNldHRpbmdzLnRpZ2h0Q29tbWFTZXBhcmF0ZWRMaXN0cyxcbiAgICAgIHRpZ2h0Q2xvc2U6IHNldHRpbmdzLnRpZ2h0U2VsZkNsb3NpbmcsXG4gICAgICBjb2xsYXBzZUVtcHR5OiBzZXR0aW5ncy5jb2xsYXBzZUVtcHR5QXR0cmlidXRlcyxcbiAgICAgIGRhbmdlcm91czogc2V0dGluZ3MuYWxsb3dEYW5nZXJvdXNIVE1MLFxuICAgICAgdm9pZHM6IHNldHRpbmdzLnZvaWRzIHx8IHZvaWRzLmNvbmNhdCgpLFxuICAgICAgZW50aXRpZXM6IHNldHRpbmdzLmVudGl0aWVzIHx8IHt9LFxuICAgICAgY2xvc2U6IHNldHRpbmdzLmNsb3NlU2VsZkNsb3NpbmcsXG4gICAgICBjbG9zZUVtcHR5OiBzZXR0aW5ncy5jbG9zZUVtcHR5RWxlbWVudHNcbiAgICB9LFxuICAgIG5vZGVcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliJylcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgdG9IVE1MID0gcmVxdWlyZSgnaGFzdC11dGlsLXRvLWh0bWwnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ2lmeVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkoY29uZmlnKSB7XG4gIHZhciBzZXR0aW5ncyA9IHh0ZW5kKGNvbmZpZywgdGhpcy5kYXRhKCdzZXR0aW5ncycpKVxuXG4gIHRoaXMuQ29tcGlsZXIgPSBjb21waWxlclxuXG4gIGZ1bmN0aW9uIGNvbXBpbGVyKHRyZWUpIHtcbiAgICByZXR1cm4gdG9IVE1MKHRyZWUsIHNldHRpbmdzKVxuICB9XG59XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbm1vZHVsZS5leHBvcnRzID0gdW5oZXJpdFxuXG4vLyBDcmVhdGUgYSBjdXN0b20gY29uc3RydWN0b3Igd2hpY2ggY2FuIGJlIG1vZGlmaWVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZVxuLy8gb3JpZ2luYWwgY2xhc3MuXG5mdW5jdGlvbiB1bmhlcml0KFN1cGVyKSB7XG4gIHZhciByZXN1bHRcbiAgdmFyIGtleVxuICB2YXIgdmFsdWVcblxuICBpbmhlcml0cyhPZiwgU3VwZXIpXG4gIGluaGVyaXRzKEZyb20sIE9mKVxuXG4gIC8vIENsb25lIHZhbHVlcy5cbiAgcmVzdWx0ID0gT2YucHJvdG90eXBlXG5cbiAgZm9yIChrZXkgaW4gcmVzdWx0KSB7XG4gICAgdmFsdWUgPSByZXN1bHRba2V5XVxuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gJ2NvbmNhdCcgaW4gdmFsdWUgPyB2YWx1ZS5jb25jYXQoKSA6IHh0ZW5kKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPZlxuXG4gIC8vIENvbnN0cnVjdG9yIGFjY2VwdGluZyBhIHNpbmdsZSBhcmd1bWVudCwgd2hpY2ggaXRzZWxmIGlzIGFuIGBhcmd1bWVudHNgXG4gIC8vIG9iamVjdC5cbiAgZnVuY3Rpb24gRnJvbShwYXJhbWV0ZXJzKSB7XG4gICAgcmV0dXJuIFN1cGVyLmFwcGx5KHRoaXMsIHBhcmFtZXRlcnMpXG4gIH1cblxuICAvLyBDb25zdHJ1Y3RvciBhY2NlcHRpbmcgdmFyaWFkaWMgYXJndW1lbnRzLlxuICBmdW5jdGlvbiBPZigpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgT2YpKSB7XG4gICAgICByZXR1cm4gbmV3IEZyb20oYXJndW1lbnRzKVxuICAgIH1cblxuICAgIHJldHVybiBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gQ29uc3RydWN0IGEgc3RhdGUgYHRvZ2dsZXJgOiBhIGZ1bmN0aW9uIHdoaWNoIGludmVyc2VzIGBwcm9wZXJ0eWAgaW4gY29udGV4dFxuLy8gYmFzZWQgb24gaXRzIGN1cnJlbnQgdmFsdWUuXG4vLyBUaGUgYnkgYHRvZ2dsZXJgIHJldHVybmVkIGZ1bmN0aW9uIHJlc3RvcmVzIHRoYXQgdmFsdWUuXG5mdW5jdGlvbiBmYWN0b3J5KGtleSwgc3RhdGUsIGN0eCkge1xuICByZXR1cm4gZW50ZXJcblxuICBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICB2YXIgY29udGV4dCA9IGN0eCB8fCB0aGlzXG4gICAgdmFyIGN1cnJlbnQgPSBjb250ZXh0W2tleV1cblxuICAgIGNvbnRleHRba2V5XSA9ICFzdGF0ZVxuXG4gICAgcmV0dXJuIGV4aXRcblxuICAgIGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgICBjb250ZXh0W2tleV0gPSBjdXJyZW50XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG5cbmZ1bmN0aW9uIGZhY3RvcnkoZmlsZSkge1xuICB2YXIgY29udGVudHMgPSBpbmRpY2VzKFN0cmluZyhmaWxlKSlcblxuICByZXR1cm4ge1xuICAgIHRvUG9zaXRpb246IG9mZnNldFRvUG9zaXRpb25GYWN0b3J5KGNvbnRlbnRzKSxcbiAgICB0b09mZnNldDogcG9zaXRpb25Ub09mZnNldEZhY3RvcnkoY29udGVudHMpXG4gIH1cbn1cblxuLy8gRmFjdG9yeSB0byBnZXQgdGhlIGxpbmUgYW5kIGNvbHVtbi1iYXNlZCBgcG9zaXRpb25gIGZvciBgb2Zmc2V0YCBpbiB0aGUgYm91bmRcbi8vIGluZGljZXMuXG5mdW5jdGlvbiBvZmZzZXRUb1Bvc2l0aW9uRmFjdG9yeShpbmRpY2VzKSB7XG4gIHJldHVybiBvZmZzZXRUb1Bvc2l0aW9uXG5cbiAgLy8gR2V0IHRoZSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBmb3IgYG9mZnNldGAgaW4gdGhlIGJvdW5kIGluZGljZXMuXG4gIGZ1bmN0aW9uIG9mZnNldFRvUG9zaXRpb24ob2Zmc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTFcbiAgICB2YXIgbGVuZ3RoID0gaW5kaWNlcy5sZW5ndGhcblxuICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGluZGljZXNbaW5kZXhdID4gb2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZTogaW5kZXggKyAxLFxuICAgICAgICAgIGNvbHVtbjogb2Zmc2V0IC0gKGluZGljZXNbaW5kZXggLSAxXSB8fCAwKSArIDEsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG59XG5cbi8vIEZhY3RvcnkgdG8gZ2V0IHRoZSBgb2Zmc2V0YCBmb3IgYSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBpbiB0aGVcbi8vIGJvdW5kIGluZGljZXMuXG5mdW5jdGlvbiBwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeShpbmRpY2VzKSB7XG4gIHJldHVybiBwb3NpdGlvblRvT2Zmc2V0XG5cbiAgLy8gR2V0IHRoZSBgb2Zmc2V0YCBmb3IgYSBsaW5lIGFuZCBjb2x1bW4tYmFzZWQgYHBvc2l0aW9uYCBpbiB0aGUgYm91bmRcbiAgLy8gaW5kaWNlcy5cbiAgZnVuY3Rpb24gcG9zaXRpb25Ub09mZnNldChwb3NpdGlvbikge1xuICAgIHZhciBsaW5lID0gcG9zaXRpb24gJiYgcG9zaXRpb24ubGluZVxuICAgIHZhciBjb2x1bW4gPSBwb3NpdGlvbiAmJiBwb3NpdGlvbi5jb2x1bW5cblxuICAgIGlmICghaXNOYU4obGluZSkgJiYgIWlzTmFOKGNvbHVtbikgJiYgbGluZSAtIDEgaW4gaW5kaWNlcykge1xuICAgICAgcmV0dXJuIChpbmRpY2VzW2xpbmUgLSAyXSB8fCAwKSArIGNvbHVtbiAtIDEgfHwgMFxuICAgIH1cblxuICAgIHJldHVybiAtMVxuICB9XG59XG5cbi8vIEdldCBpbmRpY2VzIG9mIGxpbmUtYnJlYWtzIGluIGB2YWx1ZWAuXG5mdW5jdGlvbiBpbmRpY2VzKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nKVxuXG4gIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICByZXN1bHQucHVzaChpbmRleCArIDEpXG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpXG4gIH1cblxuICByZXN1bHQucHVzaCh2YWx1ZS5sZW5ndGggKyAxKVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xuXG4vLyBGYWN0b3J5IHRvIGRlLWVzY2FwZSBhIHZhbHVlLCBiYXNlZCBvbiBhIGxpc3QgYXQgYGtleWAgaW4gYGN0eGAuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCwga2V5KSB7XG4gIHJldHVybiB1bmVzY2FwZVxuXG4gIC8vIERlLWVzY2FwZSBhIHN0cmluZyB1c2luZyB0aGUgZXhwcmVzc2lvbiBhdCBga2V5YCBpbiBgY3R4YC5cbiAgZnVuY3Rpb24gdW5lc2NhcGUodmFsdWUpIHtcbiAgICB2YXIgcHJldiA9IDBcbiAgICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGJhY2tzbGFzaClcbiAgICB2YXIgZXNjYXBlID0gY3R4W2tleV1cbiAgICB2YXIgcXVldWUgPSBbXVxuICAgIHZhciBjaGFyYWN0ZXJcblxuICAgIHdoaWxlIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHF1ZXVlLnB1c2godmFsdWUuc2xpY2UocHJldiwgaW5kZXgpKVxuICAgICAgcHJldiA9IGluZGV4ICsgMVxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHByZXYpXG5cbiAgICAgIC8vIElmIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIGlzIG5vdCBhIHZhbGlkIGVzY2FwZSwgYWRkIHRoZSBzbGFzaC5cbiAgICAgIGlmICghY2hhcmFjdGVyIHx8IGVzY2FwZS5pbmRleE9mKGNoYXJhY3RlcikgPT09IC0xKSB7XG4gICAgICAgIHF1ZXVlLnB1c2goYmFja3NsYXNoKVxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHZhbHVlLmluZGV4T2YoYmFja3NsYXNoLCBwcmV2ICsgMSlcbiAgICB9XG5cbiAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXYpKVxuXG4gICAgcmV0dXJuIHF1ZXVlLmpvaW4oJycpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG4vKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxudmFyIGVsXG5cbnZhciBzZW1pY29sb24gPSA1OSAvLyAgJzsnXG5cbm1vZHVsZS5leHBvcnRzID0gZGVjb2RlRW50aXR5XG5cbmZ1bmN0aW9uIGRlY29kZUVudGl0eShjaGFyYWN0ZXJzKSB7XG4gIHZhciBlbnRpdHkgPSAnJicgKyBjaGFyYWN0ZXJzICsgJzsnXG4gIHZhciBjaGFyXG5cbiAgZWwgPSBlbCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJylcbiAgZWwuaW5uZXJIVE1MID0gZW50aXR5XG4gIGNoYXIgPSBlbC50ZXh0Q29udGVudFxuXG4gIC8vIFNvbWUgZW50aXRpZXMgZG8gbm90IHJlcXVpcmUgdGhlIGNsb3Npbmcgc2VtaWNvbG9uIChgJm5vdGAgLSBmb3IgaW5zdGFuY2UpLFxuICAvLyB3aGljaCBsZWFkcyB0byBzaXR1YXRpb25zIHdoZXJlIHBhcnNpbmcgdGhlIGFzc3VtZWQgZW50aXR5IG9mICZub3RpdDsgd2lsbFxuICAvLyByZXN1bHQgaW4gdGhlIHN0cmluZyBgwqxpdDtgLiAgV2hlbiB3ZSBlbmNvdW50ZXIgYSB0cmFpbGluZyBzZW1pY29sb24gYWZ0ZXJcbiAgLy8gcGFyc2luZyBhbmQgdGhlIGVudGl0eSB0byBkZWNvZGUgd2FzIG5vdCBhIHNlbWljb2xvbiAoYCZzZW1pO2ApLCB3ZSBjYW5cbiAgLy8gYXNzdW1lIHRoYXQgdGhlIG1hdGNoaW5nIHdhcyBpbmNvbXBsZXRlXG4gIGlmIChjaGFyLmNoYXJDb2RlQXQoY2hhci5sZW5ndGggLSAxKSA9PT0gc2VtaWNvbG9uICYmIGNoYXJhY3RlcnMgIT09ICdzZW1pJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gSWYgdGhlIGRlY29kZWQgc3RyaW5nIGlzIGVxdWFsIHRvIHRoZSBpbnB1dCwgdGhlIGVudGl0eSB3YXMgbm90IHZhbGlkXG4gIHJldHVybiBjaGFyID09PSBlbnRpdHkgPyBmYWxzZSA6IGNoYXJcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbGVnYWN5ID0gcmVxdWlyZSgnY2hhcmFjdGVyLWVudGl0aWVzLWxlZ2FjeScpXG52YXIgaW52YWxpZCA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1yZWZlcmVuY2UtaW52YWxpZCcpXG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKVxudmFyIGhleGFkZWNpbWFsID0gcmVxdWlyZSgnaXMtaGV4YWRlY2ltYWwnKVxudmFyIGFscGhhbnVtZXJpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFudW1lcmljYWwnKVxudmFyIGRlY29kZUVudGl0eSA9IHJlcXVpcmUoJy4vZGVjb2RlLWVudGl0eScpXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VFbnRpdGllc1xuXG52YXIgb3duID0ge30uaGFzT3duUHJvcGVydHlcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG52YXIgbm9vcCA9IEZ1bmN0aW9uLnByb3RvdHlwZVxuXG4vLyBEZWZhdWx0IHNldHRpbmdzLlxudmFyIGRlZmF1bHRzID0ge1xuICB3YXJuaW5nOiBudWxsLFxuICByZWZlcmVuY2U6IG51bGwsXG4gIHRleHQ6IG51bGwsXG4gIHdhcm5pbmdDb250ZXh0OiBudWxsLFxuICByZWZlcmVuY2VDb250ZXh0OiBudWxsLFxuICB0ZXh0Q29udGV4dDogbnVsbCxcbiAgcG9zaXRpb246IHt9LFxuICBhZGRpdGlvbmFsOiBudWxsLFxuICBhdHRyaWJ1dGU6IGZhbHNlLFxuICBub25UZXJtaW5hdGVkOiB0cnVlXG59XG5cbi8vIENoYXJhY3RlcnMuXG52YXIgdGFiID0gOSAvLyAnXFx0J1xudmFyIGxpbmVGZWVkID0gMTAgLy8gJ1xcbidcbnZhciBmb3JtRmVlZCA9IDEyIC8vICAnXFxmJ1xudmFyIHNwYWNlID0gMzIgLy8gJyAnXG52YXIgYW1wZXJzYW5kID0gMzggLy8gICcmJ1xudmFyIHNlbWljb2xvbiA9IDU5IC8vICAnOydcbnZhciBsZXNzVGhhbiA9IDYwIC8vICAnPCdcbnZhciBlcXVhbHNUbyA9IDYxIC8vICAnPSdcbnZhciBudW1iZXJTaWduID0gMzUgLy8gICcjJ1xudmFyIHVwcGVyY2FzZVggPSA4OCAvLyAgJ1gnXG52YXIgbG93ZXJjYXNlWCA9IDEyMCAvLyAgJ3gnXG52YXIgcmVwbGFjZW1lbnRDaGFyYWN0ZXIgPSA2NTUzMyAvLyAn77+9J1xuXG4vLyBSZWZlcmVuY2UgdHlwZXMuXG52YXIgbmFtZSA9ICduYW1lZCdcbnZhciBoZXhhID0gJ2hleGFkZWNpbWFsJ1xudmFyIGRlY2kgPSAnZGVjaW1hbCdcblxuLy8gTWFwIG9mIGJhc2VzLlxudmFyIGJhc2VzID0ge31cblxuYmFzZXNbaGV4YV0gPSAxNlxuYmFzZXNbZGVjaV0gPSAxMFxuXG4vLyBNYXAgb2YgdHlwZXMgdG8gdGVzdHMuXG4vLyBFYWNoIHR5cGUgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZSBhY2NlcHRzIGRpZmZlcmVudCBjaGFyYWN0ZXJzLlxuLy8gVGhpcyB0ZXN0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZXRoZXIgYSByZWZlcmVuY2UgaGFzIGVuZGVkIChhcyB0aGUgc2VtaWNvbG9uXG4vLyBpcyBub3Qgc3RyaWN0bHkgbmVlZGVkKS5cbnZhciB0ZXN0cyA9IHt9XG5cbnRlc3RzW25hbWVdID0gYWxwaGFudW1lcmljYWxcbnRlc3RzW2RlY2ldID0gZGVjaW1hbFxudGVzdHNbaGV4YV0gPSBoZXhhZGVjaW1hbFxuXG4vLyBXYXJuaW5nIHR5cGVzLlxudmFyIG5hbWVkTm90VGVybWluYXRlZCA9IDFcbnZhciBudW1lcmljTm90VGVybWluYXRlZCA9IDJcbnZhciBuYW1lZEVtcHR5ID0gM1xudmFyIG51bWVyaWNFbXB0eSA9IDRcbnZhciBuYW1lZFVua25vd24gPSA1XG52YXIgbnVtZXJpY0Rpc2FsbG93ZWQgPSA2XG52YXIgbnVtZXJpY1Byb2hpYml0ZWQgPSA3XG5cbi8vIFdhcm5pbmcgbWVzc2FnZXMuXG52YXIgbWVzc2FnZXMgPSB7fVxuXG5tZXNzYWdlc1tuYW1lZE5vdFRlcm1pbmF0ZWRdID1cbiAgJ05hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNlbWljb2xvbidcbm1lc3NhZ2VzW251bWVyaWNOb3RUZXJtaW5hdGVkXSA9XG4gICdOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNlbWljb2xvbidcbm1lc3NhZ2VzW25hbWVkRW1wdHldID0gJ05hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBlbXB0eSdcbm1lc3NhZ2VzW251bWVyaWNFbXB0eV0gPSAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZW1wdHknXG5tZXNzYWdlc1tuYW1lZFVua25vd25dID0gJ05hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUga25vd24nXG5tZXNzYWdlc1tudW1lcmljRGlzYWxsb3dlZF0gPVxuICAnTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZGlzYWxsb3dlZCdcbm1lc3NhZ2VzW251bWVyaWNQcm9oaWJpdGVkXSA9XG4gICdOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSBVbmljb2RlIHJhbmdlJ1xuXG4vLyBXcmFwIHRvIGVuc3VyZSBjbGVhbiBwYXJhbWV0ZXJzIGFyZSBnaXZlbiB0byBgcGFyc2VgLlxuZnVuY3Rpb24gcGFyc2VFbnRpdGllcyh2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSB7fVxuICB2YXIgb3B0aW9uXG4gIHZhciBrZXlcblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIGZvciAoa2V5IGluIGRlZmF1bHRzKSB7XG4gICAgb3B0aW9uID0gb3B0aW9uc1trZXldXG4gICAgc2V0dGluZ3Nba2V5XSA9XG4gICAgICBvcHRpb24gPT09IG51bGwgfHwgb3B0aW9uID09PSB1bmRlZmluZWQgPyBkZWZhdWx0c1trZXldIDogb3B0aW9uXG4gIH1cblxuICBpZiAoc2V0dGluZ3MucG9zaXRpb24uaW5kZW50IHx8IHNldHRpbmdzLnBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgc2V0dGluZ3MuaW5kZW50ID0gc2V0dGluZ3MucG9zaXRpb24uaW5kZW50IHx8IFtdXG4gICAgc2V0dGluZ3MucG9zaXRpb24gPSBzZXR0aW5ncy5wb3NpdGlvbi5zdGFydFxuICB9XG5cbiAgcmV0dXJuIHBhcnNlKHZhbHVlLCBzZXR0aW5ncylcbn1cblxuLy8gUGFyc2UgZW50aXRpZXMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gcGFyc2UodmFsdWUsIHNldHRpbmdzKSB7XG4gIHZhciBhZGRpdGlvbmFsID0gc2V0dGluZ3MuYWRkaXRpb25hbFxuICB2YXIgbm9uVGVybWluYXRlZCA9IHNldHRpbmdzLm5vblRlcm1pbmF0ZWRcbiAgdmFyIGhhbmRsZVRleHQgPSBzZXR0aW5ncy50ZXh0XG4gIHZhciBoYW5kbGVSZWZlcmVuY2UgPSBzZXR0aW5ncy5yZWZlcmVuY2VcbiAgdmFyIGhhbmRsZVdhcm5pbmcgPSBzZXR0aW5ncy53YXJuaW5nXG4gIHZhciB0ZXh0Q29udGV4dCA9IHNldHRpbmdzLnRleHRDb250ZXh0XG4gIHZhciByZWZlcmVuY2VDb250ZXh0ID0gc2V0dGluZ3MucmVmZXJlbmNlQ29udGV4dFxuICB2YXIgd2FybmluZ0NvbnRleHQgPSBzZXR0aW5ncy53YXJuaW5nQ29udGV4dFxuICB2YXIgcG9zID0gc2V0dGluZ3MucG9zaXRpb25cbiAgdmFyIGluZGVudCA9IHNldHRpbmdzLmluZGVudCB8fCBbXVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGxpbmVzID0gLTFcbiAgdmFyIGNvbHVtbiA9IHBvcy5jb2x1bW4gfHwgMVxuICB2YXIgbGluZSA9IHBvcy5saW5lIHx8IDFcbiAgdmFyIHF1ZXVlID0gJydcbiAgdmFyIHJlc3VsdCA9IFtdXG4gIHZhciBlbnRpdHlDaGFyYWN0ZXJzXG4gIHZhciBuYW1lZEVudGl0eVxuICB2YXIgdGVybWluYXRlZFxuICB2YXIgY2hhcmFjdGVyc1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciByZWZlcmVuY2VcbiAgdmFyIGZvbGxvd2luZ1xuICB2YXIgd2FybmluZ1xuICB2YXIgcmVhc29uXG4gIHZhciBvdXRwdXRcbiAgdmFyIGVudGl0eVxuICB2YXIgYmVnaW5cbiAgdmFyIHN0YXJ0XG4gIHZhciB0eXBlXG4gIHZhciB0ZXN0XG4gIHZhciBwcmV2XG4gIHZhciBuZXh0XG4gIHZhciBkaWZmXG4gIHZhciBlbmRcblxuICBpZiAodHlwZW9mIGFkZGl0aW9uYWwgPT09ICdzdHJpbmcnKSB7XG4gICAgYWRkaXRpb25hbCA9IGFkZGl0aW9uYWwuY2hhckNvZGVBdCgwKVxuICB9XG5cbiAgLy8gQ2FjaGUgdGhlIGN1cnJlbnQgcG9pbnQuXG4gIHByZXYgPSBub3coKVxuXG4gIC8vIFdyYXAgYGhhbmRsZVdhcm5pbmdgLlxuICB3YXJuaW5nID0gaGFuZGxlV2FybmluZyA/IHBhcnNlRXJyb3IgOiBub29wXG5cbiAgLy8gRW5zdXJlIHRoZSBhbGdvcml0aG0gd2Fsa3Mgb3ZlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCB0aGUgZW5kIChpbmNsdXNpdmUpLlxuICBpbmRleC0tXG4gIGxlbmd0aCsrXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAvLyBJZiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHdhcyBhIG5ld2xpbmUuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGNvbHVtbiA9IGluZGVudFtsaW5lc10gfHwgMVxuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBhbXBlcnNhbmQpIHtcbiAgICAgIGZvbGxvd2luZyA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuXG4gICAgICAvLyBUaGUgYmVoYXZpb3VyIGRlcGVuZHMgb24gdGhlIGlkZW50aXR5IG9mIHRoZSBuZXh0IGNoYXJhY3Rlci5cbiAgICAgIGlmIChcbiAgICAgICAgZm9sbG93aW5nID09PSB0YWIgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBsaW5lRmVlZCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IGZvcm1GZWVkIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gc3BhY2UgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBhbXBlcnNhbmQgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBsZXNzVGhhbiB8fFxuICAgICAgICBmb2xsb3dpbmcgIT09IGZvbGxvd2luZyB8fFxuICAgICAgICAoYWRkaXRpb25hbCAmJiBmb2xsb3dpbmcgPT09IGFkZGl0aW9uYWwpXG4gICAgICApIHtcbiAgICAgICAgLy8gTm90IGEgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbiAgICAgICAgLy8gTm8gY2hhcmFjdGVycyBhcmUgY29uc3VtZWQsIGFuZCBub3RoaW5nIGlzIHJldHVybmVkLlxuICAgICAgICAvLyBUaGlzIGlzIG5vdCBhbiBlcnJvciwgZWl0aGVyLlxuICAgICAgICBxdWV1ZSArPSBmcm9tQ2hhckNvZGUoY2hhcmFjdGVyKVxuICAgICAgICBjb2x1bW4rK1xuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgICBiZWdpbiA9IHN0YXJ0XG4gICAgICBlbmQgPSBzdGFydFxuXG4gICAgICBpZiAoZm9sbG93aW5nID09PSBudW1iZXJTaWduKSB7XG4gICAgICAgIC8vIE51bWVyaWNhbCBlbnRpdHkuXG4gICAgICAgIGVuZCA9ICsrYmVnaW5cblxuICAgICAgICAvLyBUaGUgYmVoYXZpb3VyIGZ1cnRoZXIgZGVwZW5kcyBvbiB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICAgIGZvbGxvd2luZyA9IHZhbHVlLmNoYXJDb2RlQXQoZW5kKVxuXG4gICAgICAgIGlmIChmb2xsb3dpbmcgPT09IHVwcGVyY2FzZVggfHwgZm9sbG93aW5nID09PSBsb3dlcmNhc2VYKSB7XG4gICAgICAgICAgLy8gQVNDSUkgaGV4IGRpZ2l0cy5cbiAgICAgICAgICB0eXBlID0gaGV4YVxuICAgICAgICAgIGVuZCA9ICsrYmVnaW5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBU0NJSSBkaWdpdHMuXG4gICAgICAgICAgdHlwZSA9IGRlY2lcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTmFtZWQgZW50aXR5LlxuICAgICAgICB0eXBlID0gbmFtZVxuICAgICAgfVxuXG4gICAgICBlbnRpdHlDaGFyYWN0ZXJzID0gJydcbiAgICAgIGVudGl0eSA9ICcnXG4gICAgICBjaGFyYWN0ZXJzID0gJydcbiAgICAgIHRlc3QgPSB0ZXN0c1t0eXBlXVxuICAgICAgZW5kLS1cblxuICAgICAgd2hpbGUgKCsrZW5kIDwgbGVuZ3RoKSB7XG4gICAgICAgIGZvbGxvd2luZyA9IHZhbHVlLmNoYXJDb2RlQXQoZW5kKVxuXG4gICAgICAgIGlmICghdGVzdChmb2xsb3dpbmcpKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoYXJhY3RlcnMgKz0gZnJvbUNoYXJDb2RlKGZvbGxvd2luZylcblxuICAgICAgICAvLyBDaGVjayBpZiB3ZSBjYW4gbWF0Y2ggYSBsZWdhY3kgbmFtZWQgcmVmZXJlbmNlLlxuICAgICAgICAvLyBJZiBzbywgd2UgY2FjaGUgdGhhdCBhcyB0aGUgbGFzdCB2aWFibGUgbmFtZWQgcmVmZXJlbmNlLlxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgd2UgZG8gbm90IG5lZWQgdG8gd2FsayBiYWNrd2FyZHMgbGF0ZXIuXG4gICAgICAgIGlmICh0eXBlID09PSBuYW1lICYmIG93bi5jYWxsKGxlZ2FjeSwgY2hhcmFjdGVycykpIHtcbiAgICAgICAgICBlbnRpdHlDaGFyYWN0ZXJzID0gY2hhcmFjdGVyc1xuICAgICAgICAgIGVudGl0eSA9IGxlZ2FjeVtjaGFyYWN0ZXJzXVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRlcm1pbmF0ZWQgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZCkgPT09IHNlbWljb2xvblxuXG4gICAgICBpZiAodGVybWluYXRlZCkge1xuICAgICAgICBlbmQrK1xuXG4gICAgICAgIG5hbWVkRW50aXR5ID0gdHlwZSA9PT0gbmFtZSA/IGRlY29kZUVudGl0eShjaGFyYWN0ZXJzKSA6IGZhbHNlXG5cbiAgICAgICAgaWYgKG5hbWVkRW50aXR5KSB7XG4gICAgICAgICAgZW50aXR5Q2hhcmFjdGVycyA9IGNoYXJhY3RlcnNcbiAgICAgICAgICBlbnRpdHkgPSBuYW1lZEVudGl0eVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGRpZmYgPSAxICsgZW5kIC0gc3RhcnRcblxuICAgICAgaWYgKCF0ZXJtaW5hdGVkICYmICFub25UZXJtaW5hdGVkKSB7XG4gICAgICAgIC8vIEVtcHR5LlxuICAgICAgfSBlbHNlIGlmICghY2hhcmFjdGVycykge1xuICAgICAgICAvLyBBbiBlbXB0eSAocG9zc2libGUpIGVudGl0eSBpcyB2YWxpZCwgdW5sZXNzIGl04oCZcyBudW1lcmljICh0aHVzIGFuXG4gICAgICAgIC8vIGFtcGVyc2FuZCBmb2xsb3dlZCBieSBhbiBvY3RvdGhvcnApLlxuICAgICAgICBpZiAodHlwZSAhPT0gbmFtZSkge1xuICAgICAgICAgIHdhcm5pbmcobnVtZXJpY0VtcHR5LCBkaWZmKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IG5hbWUpIHtcbiAgICAgICAgLy8gQW4gYW1wZXJzYW5kIGZvbGxvd2VkIGJ5IGFueXRoaW5nIHVua25vd24sIGFuZCBub3QgdGVybWluYXRlZCwgaXNcbiAgICAgICAgLy8gaW52YWxpZC5cbiAgICAgICAgaWYgKHRlcm1pbmF0ZWQgJiYgIWVudGl0eSkge1xuICAgICAgICAgIHdhcm5pbmcobmFtZWRVbmtub3duLCAxKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHRoZXJlcyBzb21ldGhpbmcgYWZ0ZXIgYW4gZW50aXR5IG5hbWUgd2hpY2ggaXMgbm90IGtub3duLCBjYXBcbiAgICAgICAgICAvLyB0aGUgcmVmZXJlbmNlLlxuICAgICAgICAgIGlmIChlbnRpdHlDaGFyYWN0ZXJzICE9PSBjaGFyYWN0ZXJzKSB7XG4gICAgICAgICAgICBlbmQgPSBiZWdpbiArIGVudGl0eUNoYXJhY3RlcnMubGVuZ3RoXG4gICAgICAgICAgICBkaWZmID0gMSArIGVuZCAtIGJlZ2luXG4gICAgICAgICAgICB0ZXJtaW5hdGVkID0gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIG5vdCB0ZXJtaW5hdGVkLCB3YXJuLlxuICAgICAgICAgIGlmICghdGVybWluYXRlZCkge1xuICAgICAgICAgICAgcmVhc29uID0gZW50aXR5Q2hhcmFjdGVycyA/IG5hbWVkTm90VGVybWluYXRlZCA6IG5hbWVkRW1wdHlcblxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICBmb2xsb3dpbmcgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZClcblxuICAgICAgICAgICAgICBpZiAoZm9sbG93aW5nID09PSBlcXVhbHNUbykge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcocmVhc29uLCBkaWZmKVxuICAgICAgICAgICAgICAgIGVudGl0eSA9IG51bGxcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhbHBoYW51bWVyaWNhbChmb2xsb3dpbmcpKSB7XG4gICAgICAgICAgICAgICAgZW50aXR5ID0gbnVsbFxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcocmVhc29uLCBkaWZmKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB3YXJuaW5nKHJlYXNvbiwgZGlmZilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZWZlcmVuY2UgPSBlbnRpdHlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGVybWluYXRlZCkge1xuICAgICAgICAgIC8vIEFsbCBub24tdGVybWluYXRlZCBudW1lcmljIGVudGl0aWVzIGFyZSBub3QgcmVuZGVyZWQsIGFuZCB0cmlnZ2VyIGFcbiAgICAgICAgICAvLyB3YXJuaW5nLlxuICAgICAgICAgIHdhcm5pbmcobnVtZXJpY05vdFRlcm1pbmF0ZWQsIGRpZmYpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIHRlcm1pbmF0ZWQgYW5kIG51bWJlciwgcGFyc2UgYXMgZWl0aGVyIGhleGFkZWNpbWFsIG9yIGRlY2ltYWwuXG4gICAgICAgIHJlZmVyZW5jZSA9IHBhcnNlSW50KGNoYXJhY3RlcnMsIGJhc2VzW3R5cGVdKVxuXG4gICAgICAgIC8vIFRyaWdnZXIgYSB3YXJuaW5nIHdoZW4gdGhlIHBhcnNlZCBudW1iZXIgaXMgcHJvaGliaXRlZCwgYW5kIHJlcGxhY2VcbiAgICAgICAgLy8gd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXIuXG4gICAgICAgIGlmIChwcm9oaWJpdGVkKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNQcm9oaWJpdGVkLCBkaWZmKVxuICAgICAgICAgIHJlZmVyZW5jZSA9IGZyb21DaGFyQ29kZShyZXBsYWNlbWVudENoYXJhY3RlcilcbiAgICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgaW4gaW52YWxpZCkge1xuICAgICAgICAgIC8vIFRyaWdnZXIgYSB3YXJuaW5nIHdoZW4gdGhlIHBhcnNlZCBudW1iZXIgaXMgZGlzYWxsb3dlZCwgYW5kIHJlcGxhY2VcbiAgICAgICAgICAvLyBieSBhbiBhbHRlcm5hdGl2ZS5cbiAgICAgICAgICB3YXJuaW5nKG51bWVyaWNEaXNhbGxvd2VkLCBkaWZmKVxuICAgICAgICAgIHJlZmVyZW5jZSA9IGludmFsaWRbcmVmZXJlbmNlXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFBhcnNlIHRoZSBudW1iZXIuXG4gICAgICAgICAgb3V0cHV0ID0gJydcblxuICAgICAgICAgIC8vIFRyaWdnZXIgYSB3YXJuaW5nIHdoZW4gdGhlIHBhcnNlZCBudW1iZXIgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICAgICAgICAgIGlmIChkaXNhbGxvd2VkKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgIHdhcm5pbmcobnVtZXJpY0Rpc2FsbG93ZWQsIGRpZmYpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU3RyaW5naWZ5IHRoZSBudW1iZXIuXG4gICAgICAgICAgaWYgKHJlZmVyZW5jZSA+IDB4ZmZmZikge1xuICAgICAgICAgICAgcmVmZXJlbmNlIC09IDB4MTAwMDBcbiAgICAgICAgICAgIG91dHB1dCArPSBmcm9tQ2hhckNvZGUoKHJlZmVyZW5jZSA+Pj4gKDEwICYgMHgzZmYpKSB8IDB4ZDgwMClcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IDB4ZGMwMCB8IChyZWZlcmVuY2UgJiAweDNmZilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWZlcmVuY2UgPSBvdXRwdXQgKyBmcm9tQ2hhckNvZGUocmVmZXJlbmNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZvdW5kIGl0IVxuICAgICAgLy8gRmlyc3QgZWF0IHRoZSBxdWV1ZWQgY2hhcmFjdGVycyBhcyBub3JtYWwgdGV4dCwgdGhlbiBlYXQgYW4gZW50aXR5LlxuICAgICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgICBmbHVzaCgpXG5cbiAgICAgICAgcHJldiA9IG5vdygpXG4gICAgICAgIGluZGV4ID0gZW5kIC0gMVxuICAgICAgICBjb2x1bW4gKz0gZW5kIC0gc3RhcnQgKyAxXG4gICAgICAgIHJlc3VsdC5wdXNoKHJlZmVyZW5jZSlcbiAgICAgICAgbmV4dCA9IG5vdygpXG4gICAgICAgIG5leHQub2Zmc2V0KytcblxuICAgICAgICBpZiAoaGFuZGxlUmVmZXJlbmNlKSB7XG4gICAgICAgICAgaGFuZGxlUmVmZXJlbmNlLmNhbGwoXG4gICAgICAgICAgICByZWZlcmVuY2VDb250ZXh0LFxuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAge3N0YXJ0OiBwcmV2LCBlbmQ6IG5leHR9LFxuICAgICAgICAgICAgdmFsdWUuc2xpY2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgcHJldiA9IG5leHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHdlIGNvdWxkIG5vdCBmaW5kIGEgcmVmZXJlbmNlLCBxdWV1ZSB0aGUgY2hlY2tlZCBjaGFyYWN0ZXJzIChhc1xuICAgICAgICAvLyBub3JtYWwgY2hhcmFjdGVycyksIGFuZCBtb3ZlIHRoZSBwb2ludGVyIHRvIHRoZWlyIGVuZC5cbiAgICAgICAgLy8gVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIHdlIGNhbiBiZSBjZXJ0YWluIG5laXRoZXIgbmV3bGluZXMgbm9yXG4gICAgICAgIC8vIGFtcGVyc2FuZHMgYXJlIGluY2x1ZGVkLlxuICAgICAgICBjaGFyYWN0ZXJzID0gdmFsdWUuc2xpY2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgIHF1ZXVlICs9IGNoYXJhY3RlcnNcbiAgICAgICAgY29sdW1uICs9IGNoYXJhY3RlcnMubGVuZ3RoXG4gICAgICAgIGluZGV4ID0gZW5kIC0gMVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgYW55dGhpbmcgb3RoZXIgdGhhbiBhbiBhbXBlcnNhbmQsIGluY2x1ZGluZyBuZXdsaW5lcyBhbmQgRU9GLlxuICAgICAgaWYgKFxuICAgICAgICBjaGFyYWN0ZXIgPT09IDEwIC8vIExpbmUgZmVlZFxuICAgICAgKSB7XG4gICAgICAgIGxpbmUrK1xuICAgICAgICBsaW5lcysrXG4gICAgICAgIGNvbHVtbiA9IDBcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gY2hhcmFjdGVyKSB7XG4gICAgICAgIHF1ZXVlICs9IGZyb21DaGFyQ29kZShjaGFyYWN0ZXIpXG4gICAgICAgIGNvbHVtbisrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbHVzaCgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSByZWR1Y2VkIG5vZGVzLCBhbmQgYW55IHBvc3NpYmxlIHdhcm5pbmdzLlxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG5cbiAgLy8gR2V0IGN1cnJlbnQgcG9zaXRpb24uXG4gIGZ1bmN0aW9uIG5vdygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbGluZSxcbiAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgb2Zmc2V0OiBpbmRleCArIChwb3Mub2Zmc2V0IHx8IDApXG4gICAgfVxuICB9XG5cbiAgLy8g4oCcVGhyb3figJ0gYSBwYXJzZS1lcnJvcjogYSB3YXJuaW5nLlxuICBmdW5jdGlvbiBwYXJzZUVycm9yKGNvZGUsIG9mZnNldCkge1xuICAgIHZhciBwb3NpdGlvbiA9IG5vdygpXG5cbiAgICBwb3NpdGlvbi5jb2x1bW4gKz0gb2Zmc2V0XG4gICAgcG9zaXRpb24ub2Zmc2V0ICs9IG9mZnNldFxuXG4gICAgaGFuZGxlV2FybmluZy5jYWxsKHdhcm5pbmdDb250ZXh0LCBtZXNzYWdlc1tjb2RlXSwgcG9zaXRpb24sIGNvZGUpXG4gIH1cblxuICAvLyBGbHVzaCBgcXVldWVgIChub3JtYWwgdGV4dCkuXG4gIC8vIE1hY3JvIGludm9rZWQgYmVmb3JlIGVhY2ggZW50aXR5IGFuZCBhdCB0aGUgZW5kIG9mIGB2YWx1ZWAuXG4gIC8vIERvZXMgbm90aGluZyB3aGVuIGBxdWV1ZWAgaXMgZW1wdHkuXG4gIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIGlmIChxdWV1ZSkge1xuICAgICAgcmVzdWx0LnB1c2gocXVldWUpXG5cbiAgICAgIGlmIChoYW5kbGVUZXh0KSB7XG4gICAgICAgIGhhbmRsZVRleHQuY2FsbCh0ZXh0Q29udGV4dCwgcXVldWUsIHtzdGFydDogcHJldiwgZW5kOiBub3coKX0pXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG4gIH1cbn1cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgdW5pY29kZSByYW5nZS5cbmZ1bmN0aW9uIHByb2hpYml0ZWQoY29kZSkge1xuICByZXR1cm4gKGNvZGUgPj0gMHhkODAwICYmIGNvZGUgPD0gMHhkZmZmKSB8fCBjb2RlID4gMHgxMGZmZmZcbn1cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgaXMgZGlzYWxsb3dlZC5cbmZ1bmN0aW9uIGRpc2FsbG93ZWQoY29kZSkge1xuICByZXR1cm4gKFxuICAgIChjb2RlID49IDB4MDAwMSAmJiBjb2RlIDw9IDB4MDAwOCkgfHxcbiAgICBjb2RlID09PSAweDAwMGIgfHxcbiAgICAoY29kZSA+PSAweDAwMGQgJiYgY29kZSA8PSAweDAwMWYpIHx8XG4gICAgKGNvZGUgPj0gMHgwMDdmICYmIGNvZGUgPD0gMHgwMDlmKSB8fFxuICAgIChjb2RlID49IDB4ZmRkMCAmJiBjb2RlIDw9IDB4ZmRlZikgfHxcbiAgICAoY29kZSAmIDB4ZmZmZikgPT09IDB4ZmZmZiB8fFxuICAgIChjb2RlICYgMHhmZmZmKSA9PT0gMHhmZmZlXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgeHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgZW50aXRpZXMgPSByZXF1aXJlKCdwYXJzZS1lbnRpdGllcycpXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG4vLyBGYWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnRpdHkgZGVjb2Rlci5cbmZ1bmN0aW9uIGZhY3RvcnkoY3R4KSB7XG4gIGRlY29kZXIucmF3ID0gZGVjb2RlUmF3XG5cbiAgcmV0dXJuIGRlY29kZXJcblxuICAvLyBOb3JtYWxpemUgYHBvc2l0aW9uYCB0byBhZGQgYW4gYGluZGVudGAuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZShwb3NpdGlvbikge1xuICAgIHZhciBvZmZzZXRzID0gY3R4Lm9mZnNldFxuICAgIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuICAgIHZhciByZXN1bHQgPSBbXVxuXG4gICAgd2hpbGUgKCsrbGluZSkge1xuICAgICAgaWYgKCEobGluZSBpbiBvZmZzZXRzKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaCgob2Zmc2V0c1tsaW5lXSB8fCAwKSArIDEpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtzdGFydDogcG9zaXRpb24sIGluZGVudDogcmVzdWx0fVxuICB9XG5cbiAgLy8gRGVjb2RlIGB2YWx1ZWAgKGF0IGBwb3NpdGlvbmApIGludG8gdGV4dC1ub2Rlcy5cbiAgZnVuY3Rpb24gZGVjb2Rlcih2YWx1ZSwgcG9zaXRpb24sIGhhbmRsZXIpIHtcbiAgICBlbnRpdGllcyh2YWx1ZSwge1xuICAgICAgcG9zaXRpb246IG5vcm1hbGl6ZShwb3NpdGlvbiksXG4gICAgICB3YXJuaW5nOiBoYW5kbGVXYXJuaW5nLFxuICAgICAgdGV4dDogaGFuZGxlcixcbiAgICAgIHJlZmVyZW5jZTogaGFuZGxlcixcbiAgICAgIHRleHRDb250ZXh0OiBjdHgsXG4gICAgICByZWZlcmVuY2VDb250ZXh0OiBjdHhcbiAgICB9KVxuICB9XG5cbiAgLy8gRGVjb2RlIGB2YWx1ZWAgKGF0IGBwb3NpdGlvbmApIGludG8gYSBzdHJpbmcuXG4gIGZ1bmN0aW9uIGRlY29kZVJhdyh2YWx1ZSwgcG9zaXRpb24sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZW50aXRpZXMoXG4gICAgICB2YWx1ZSxcbiAgICAgIHh0ZW5kKG9wdGlvbnMsIHtwb3NpdGlvbjogbm9ybWFsaXplKHBvc2l0aW9uKSwgd2FybmluZzogaGFuZGxlV2FybmluZ30pXG4gICAgKVxuICB9XG5cbiAgLy8gSGFuZGxlIGEgd2FybmluZy5cbiAgLy8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL3BhcnNlLWVudGl0aWVzPiBmb3IgdGhlIHdhcm5pbmdzLlxuICBmdW5jdGlvbiBoYW5kbGVXYXJuaW5nKHJlYXNvbiwgcG9zaXRpb24sIGNvZGUpIHtcbiAgICBpZiAoY29kZSAhPT0gMykge1xuICAgICAgY3R4LmZpbGUubWVzc2FnZShyZWFzb24sIHBvc2l0aW9uKVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuXG4vLyBDb25zdHJ1Y3QgYSB0b2tlbml6ZXIuICBUaGlzIGNyZWF0ZXMgYm90aCBgdG9rZW5pemVJbmxpbmVgIGFuZCBgdG9rZW5pemVCbG9ja2AuXG5mdW5jdGlvbiBmYWN0b3J5KHR5cGUpIHtcbiAgcmV0dXJuIHRva2VuaXplXG5cbiAgLy8gVG9rZW5pemVyIGZvciBhIGJvdW5kIGB0eXBlYC5cbiAgZnVuY3Rpb24gdG9rZW5pemUodmFsdWUsIGxvY2F0aW9uKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgdmFyIG9mZnNldCA9IHNlbGYub2Zmc2V0XG4gICAgdmFyIHRva2VucyA9IFtdXG4gICAgdmFyIG1ldGhvZHMgPSBzZWxmW3R5cGUgKyAnTWV0aG9kcyddXG4gICAgdmFyIHRva2VuaXplcnMgPSBzZWxmW3R5cGUgKyAnVG9rZW5pemVycyddXG4gICAgdmFyIGxpbmUgPSBsb2NhdGlvbi5saW5lXG4gICAgdmFyIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtblxuICAgIHZhciBpbmRleFxuICAgIHZhciBsZW5ndGhcbiAgICB2YXIgbWV0aG9kXG4gICAgdmFyIG5hbWVcbiAgICB2YXIgbWF0Y2hlZFxuICAgIHZhciB2YWx1ZUxlbmd0aFxuXG4gICAgLy8gVHJpbSB3aGl0ZSBzcGFjZSBvbmx5IGxpbmVzLlxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiB0b2tlbnNcbiAgICB9XG5cbiAgICAvLyBFeHBvc2Ugb24gYGVhdGAuXG4gICAgZWF0Lm5vdyA9IG5vd1xuICAgIGVhdC5maWxlID0gc2VsZi5maWxlXG5cbiAgICAvLyBTeW5jIGluaXRpYWwgb2Zmc2V0LlxuICAgIHVwZGF0ZVBvc2l0aW9uKCcnKVxuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIGB2YWx1ZWAsIGFuZCBpdGVyYXRlIG92ZXIgYWxsIHRva2VuaXplcnMuICBXaGVuIG9uZSBlYXRzXG4gICAgLy8gc29tZXRoaW5nLCByZS1pdGVyYXRlIHdpdGggdGhlIHJlbWFpbmluZyB2YWx1ZS4gIElmIG5vIHRva2VuaXplciBlYXRzLFxuICAgIC8vIHNvbWV0aGluZyBmYWlsZWQgKHNob3VsZCBub3QgaGFwcGVuKSBhbmQgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cbiAgICB3aGlsZSAodmFsdWUpIHtcbiAgICAgIGluZGV4ID0gLTFcbiAgICAgIGxlbmd0aCA9IG1ldGhvZHMubGVuZ3RoXG4gICAgICBtYXRjaGVkID0gZmFsc2VcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgbmFtZSA9IG1ldGhvZHNbaW5kZXhdXG4gICAgICAgIG1ldGhvZCA9IHRva2VuaXplcnNbbmFtZV1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgbWV0aG9kICYmXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gKCFtZXRob2Qub25seUF0U3RhcnQgfHwgc2VsZi5hdFN0YXJ0KSAmJlxuICAgICAgICAgICghbWV0aG9kLm5vdEluTGlzdCB8fCAhc2VsZi5pbkxpc3QpICYmXG4gICAgICAgICAgKCFtZXRob2Qubm90SW5CbG9jayB8fCAhc2VsZi5pbkJsb2NrKSAmJlxuICAgICAgICAgICghbWV0aG9kLm5vdEluTGluayB8fCAhc2VsZi5pbkxpbmspXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlTGVuZ3RoID0gdmFsdWUubGVuZ3RoXG5cbiAgICAgICAgICBtZXRob2QuYXBwbHkoc2VsZiwgW2VhdCwgdmFsdWVdKVxuXG4gICAgICAgICAgbWF0Y2hlZCA9IHZhbHVlTGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGhcblxuICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghbWF0Y2hlZCkge1xuICAgICAgICBzZWxmLmZpbGUuZmFpbChuZXcgRXJyb3IoJ0luZmluaXRlIGxvb3AnKSwgZWF0Lm5vdygpKVxuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGYuZW9mID0gbm93KClcblxuICAgIHJldHVybiB0b2tlbnNcblxuICAgIC8vIFVwZGF0ZSBsaW5lLCBjb2x1bW4sIGFuZCBvZmZzZXQgYmFzZWQgb24gYHZhbHVlYC5cbiAgICBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGxhc3RJbmRleCA9IC0xXG4gICAgICB2YXIgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nKVxuXG4gICAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGxpbmUrK1xuICAgICAgICBsYXN0SW5kZXggPSBpbmRleFxuICAgICAgICBpbmRleCA9IHN1YnZhbHVlLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSlcbiAgICAgIH1cblxuICAgICAgaWYgKGxhc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uID0gc3VidmFsdWUubGVuZ3RoIC0gbGFzdEluZGV4XG4gICAgICB9XG5cbiAgICAgIGlmIChsaW5lIGluIG9mZnNldCkge1xuICAgICAgICBpZiAobGFzdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGNvbHVtbiArPSBvZmZzZXRbbGluZV1cbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4gPD0gb2Zmc2V0W2xpbmVdKSB7XG4gICAgICAgICAgY29sdW1uID0gb2Zmc2V0W2xpbmVdICsgMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IG9mZnNldC4gIENhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBlYXRlbiB0byByZXRyaWV2ZSB0aGVcbiAgICAvLyByYW5nZeKAmXMgb2Zmc2V0cy5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoKSB7XG4gICAgICB2YXIgaW5kZW50YXRpb24gPSBbXVxuICAgICAgdmFyIHBvcyA9IGxpbmUgKyAxXG5cbiAgICAgIC8vIERvbmUuICBDYWxsZWQgd2hlbiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgZWF0ZW4gdG8gcmV0cmlldmUgdGhlIHJhbmdl4oCZc1xuICAgICAgLy8gb2Zmc2V0cy5cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxhc3QgPSBsaW5lICsgMVxuXG4gICAgICAgIHdoaWxlIChwb3MgPCBsYXN0KSB7XG4gICAgICAgICAgaW5kZW50YXRpb24ucHVzaCgob2Zmc2V0W3Bvc10gfHwgMCkgKyAxKVxuXG4gICAgICAgICAgcG9zKytcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRlbnRhdGlvblxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCB0aGUgY3VycmVudCBwb3NpdGlvbi5cbiAgICBmdW5jdGlvbiBub3coKSB7XG4gICAgICB2YXIgcG9zID0ge2xpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1ufVxuXG4gICAgICBwb3Mub2Zmc2V0ID0gc2VsZi50b09mZnNldChwb3MpXG5cbiAgICAgIHJldHVybiBwb3NcbiAgICB9XG5cbiAgICAvLyBTdG9yZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3IgYSBub2RlLlxuICAgIGZ1bmN0aW9uIFBvc2l0aW9uKHN0YXJ0KSB7XG4gICAgICB0aGlzLnN0YXJ0ID0gc3RhcnRcbiAgICAgIHRoaXMuZW5kID0gbm93KClcbiAgICB9XG5cbiAgICAvLyBUaHJvdyB3aGVuIGEgdmFsdWUgaXMgaW5jb3JyZWN0bHkgZWF0ZW4uICBUaGlzIHNob3VsZG7igJl0IGhhcHBlbiBidXQgd2lsbFxuICAgIC8vIHRocm93IG9uIG5ldywgaW5jb3JyZWN0IHJ1bGVzLlxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlRWF0KHN1YnZhbHVlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICh2YWx1ZS5zbGljZSgwLCBzdWJ2YWx1ZS5sZW5ndGgpICE9PSBzdWJ2YWx1ZSkge1xuICAgICAgICAvLyBDYXB0dXJlIHN0YWNrLXRyYWNlLlxuICAgICAgICBzZWxmLmZpbGUuZmFpbChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnSW5jb3JyZWN0bHkgZWF0ZW4gdmFsdWU6IHBsZWFzZSByZXBvcnQgdGhpcyB3YXJuaW5nIG9uIGh0dHBzOi8vZ2l0LmlvL3ZnNUZ0J1xuICAgICAgICAgICksXG4gICAgICAgICAgbm93KClcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcmsgcG9zaXRpb24gYW5kIHBhdGNoIGBub2RlLnBvc2l0aW9uYC5cbiAgICBmdW5jdGlvbiBwb3NpdGlvbigpIHtcbiAgICAgIHZhciBiZWZvcmUgPSBub3coKVxuXG4gICAgICByZXR1cm4gdXBkYXRlXG5cbiAgICAgIC8vIEFkZCB0aGUgcG9zaXRpb24gdG8gYSBub2RlLlxuICAgICAgZnVuY3Rpb24gdXBkYXRlKG5vZGUsIGluZGVudCkge1xuICAgICAgICB2YXIgcHJldiA9IG5vZGUucG9zaXRpb25cbiAgICAgICAgdmFyIHN0YXJ0ID0gcHJldiA/IHByZXYuc3RhcnQgOiBiZWZvcmVcbiAgICAgICAgdmFyIGNvbWJpbmVkID0gW11cbiAgICAgICAgdmFyIG4gPSBwcmV2ICYmIHByZXYuZW5kLmxpbmVcbiAgICAgICAgdmFyIGwgPSBiZWZvcmUubGluZVxuXG4gICAgICAgIG5vZGUucG9zaXRpb24gPSBuZXcgUG9zaXRpb24oc3RhcnQpXG5cbiAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGFscmVhZHkgYSBgcG9zaXRpb25gLCB0aGlzIG5vZGUgd2FzIG1lcmdlZC4gIEZpeGluZ1xuICAgICAgICAvLyBgc3RhcnRgIHdhc27igJl0IGhhcmQsIGJ1dCB0aGUgaW5kZW50IGlzIGRpZmZlcmVudC4gIEVzcGVjaWFsbHlcbiAgICAgICAgLy8gYmVjYXVzZSBzb21lIGluZm9ybWF0aW9uLCB0aGUgaW5kZW50IGJldHdlZW4gYG5gIGFuZCBgbGAgd2FzbuKAmXRcbiAgICAgICAgLy8gdHJhY2tlZC4gIEx1Y2tpbHksIHRoYXQgc3BhY2UgaXMgKHNob3VsZCBiZT8pIGVtcHR5LCBzbyB3ZSBjYW5cbiAgICAgICAgLy8gc2FmZWx5IGNoZWNrIGZvciBpdCBub3cuXG4gICAgICAgIGlmIChwcmV2ICYmIGluZGVudCAmJiBwcmV2LmluZGVudCkge1xuICAgICAgICAgIGNvbWJpbmVkID0gcHJldi5pbmRlbnRcblxuICAgICAgICAgIGlmIChuIDwgbCkge1xuICAgICAgICAgICAgd2hpbGUgKCsrbiA8IGwpIHtcbiAgICAgICAgICAgICAgY29tYmluZWQucHVzaCgob2Zmc2V0W25dIHx8IDApICsgMSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tYmluZWQucHVzaChiZWZvcmUuY29sdW1uKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGluZGVudCA9IGNvbWJpbmVkLmNvbmNhdChpbmRlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnBvc2l0aW9uLmluZGVudCA9IGluZGVudCB8fCBbXVxuXG4gICAgICAgIHJldHVybiBub2RlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGBub2RlYCB0byBgcGFyZW50YHMgY2hpbGRyZW4gb3IgdG8gYHRva2Vuc2AuICBQZXJmb3JtcyBtZXJnZXMgd2hlcmVcbiAgICAvLyBwb3NzaWJsZS5cbiAgICBmdW5jdGlvbiBhZGQobm9kZSwgcGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4gOiB0b2tlbnNcbiAgICAgIHZhciBwcmV2ID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV1cbiAgICAgIHZhciBmblxuXG4gICAgICBpZiAoXG4gICAgICAgIHByZXYgJiZcbiAgICAgICAgbm9kZS50eXBlID09PSBwcmV2LnR5cGUgJiZcbiAgICAgICAgKG5vZGUudHlwZSA9PT0gJ3RleHQnIHx8IG5vZGUudHlwZSA9PT0gJ2Jsb2NrcXVvdGUnKSAmJlxuICAgICAgICBtZXJnZWFibGUocHJldikgJiZcbiAgICAgICAgbWVyZ2VhYmxlKG5vZGUpXG4gICAgICApIHtcbiAgICAgICAgZm4gPSBub2RlLnR5cGUgPT09ICd0ZXh0JyA/IG1lcmdlVGV4dCA6IG1lcmdlQmxvY2txdW90ZVxuICAgICAgICBub2RlID0gZm4uY2FsbChzZWxmLCBwcmV2LCBub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAobm9kZSAhPT0gcHJldikge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKG5vZGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmF0U3RhcnQgJiYgdG9rZW5zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzZWxmLmV4aXRTdGFydCgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGBzdWJ2YWx1ZWAgZnJvbSBgdmFsdWVgLiAgYHN1YnZhbHVlYCBtdXN0IGJlIGF0IHRoZSBzdGFydCBvZlxuICAgIC8vIGB2YWx1ZWAuXG4gICAgZnVuY3Rpb24gZWF0KHN1YnZhbHVlKSB7XG4gICAgICB2YXIgaW5kZW50ID0gZ2V0T2Zmc2V0KClcbiAgICAgIHZhciBwb3MgPSBwb3NpdGlvbigpXG4gICAgICB2YXIgY3VycmVudCA9IG5vdygpXG5cbiAgICAgIHZhbGlkYXRlRWF0KHN1YnZhbHVlKVxuXG4gICAgICBhcHBseS5yZXNldCA9IHJlc2V0XG4gICAgICByZXNldC50ZXN0ID0gdGVzdFxuICAgICAgYXBwbHkudGVzdCA9IHRlc3RcblxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdWJ2YWx1ZS5sZW5ndGgpXG5cbiAgICAgIHVwZGF0ZVBvc2l0aW9uKHN1YnZhbHVlKVxuXG4gICAgICBpbmRlbnQgPSBpbmRlbnQoKVxuXG4gICAgICByZXR1cm4gYXBwbHlcblxuICAgICAgLy8gQWRkIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFkZCBgcG9zaXRpb25gIHRvIHRoZSByZXR1cm5lZCBub2RlLCBhbmRcbiAgICAgIC8vIHJldHVybiB0aGUgbm9kZS5cbiAgICAgIGZ1bmN0aW9uIGFwcGx5KG5vZGUsIHBhcmVudCkge1xuICAgICAgICByZXR1cm4gcG9zKGFkZChwb3Mobm9kZSksIHBhcmVudCksIGluZGVudClcbiAgICAgIH1cblxuICAgICAgLy8gRnVuY3Rpb25zIGp1c3QgbGlrZSBhcHBseSwgYnV0IHJlc2V0cyB0aGUgY29udGVudDogdGhlIGxpbmUgYW5kXG4gICAgICAvLyBjb2x1bW4gYXJlIHJldmVyc2VkLCBhbmQgdGhlIGVhdGVuIHZhbHVlIGlzIHJlLWFkZGVkLiAgIFRoaXMgaXNcbiAgICAgIC8vIHVzZWZ1bCBmb3Igbm9kZXMgd2l0aCBhIHNpbmdsZSB0eXBlIG9mIGNvbnRlbnQsIHN1Y2ggYXMgbGlzdHMgYW5kXG4gICAgICAvLyB0YWJsZXMuICBTZWUgYGFwcGx5YCBhYm92ZSBmb3Igd2hhdCBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC5cbiAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICB2YXIgbm9kZSA9IGFwcGx5LmFwcGx5KG51bGwsIGFyZ3VtZW50cylcblxuICAgICAgICBsaW5lID0gY3VycmVudC5saW5lXG4gICAgICAgIGNvbHVtbiA9IGN1cnJlbnQuY29sdW1uXG4gICAgICAgIHZhbHVlID0gc3VidmFsdWUgKyB2YWx1ZVxuXG4gICAgICAgIHJldHVybiBub2RlXG4gICAgICB9XG5cbiAgICAgIC8vIFRlc3QgdGhlIHBvc2l0aW9uLCBhZnRlciBlYXRpbmcsIGFuZCByZXZlcnNlIHRvIGEgbm90LWVhdGVuIHN0YXRlLlxuICAgICAgZnVuY3Rpb24gdGVzdCgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHBvcyh7fSlcblxuICAgICAgICBsaW5lID0gY3VycmVudC5saW5lXG4gICAgICAgIGNvbHVtbiA9IGN1cnJlbnQuY29sdW1uXG4gICAgICAgIHZhbHVlID0gc3VidmFsdWUgKyB2YWx1ZVxuXG4gICAgICAgIHJldHVybiByZXN1bHQucG9zaXRpb25cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ2hlY2sgd2hldGhlciBhIG5vZGUgaXMgbWVyZ2VhYmxlIHdpdGggYWRqYWNlbnQgbm9kZXMuXG5mdW5jdGlvbiBtZXJnZWFibGUobm9kZSkge1xuICB2YXIgc3RhcnRcbiAgdmFyIGVuZFxuXG4gIGlmIChub2RlLnR5cGUgIT09ICd0ZXh0JyB8fCAhbm9kZS5wb3NpdGlvbikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBzdGFydCA9IG5vZGUucG9zaXRpb24uc3RhcnRcbiAgZW5kID0gbm9kZS5wb3NpdGlvbi5lbmRcblxuICAvLyBPbmx5IG1lcmdlIG5vZGVzIHdoaWNoIG9jY3VweSB0aGUgc2FtZSBzaXplIGFzIHRoZWlyIGB2YWx1ZWAuXG4gIHJldHVybiAoXG4gICAgc3RhcnQubGluZSAhPT0gZW5kLmxpbmUgfHwgZW5kLmNvbHVtbiAtIHN0YXJ0LmNvbHVtbiA9PT0gbm9kZS52YWx1ZS5sZW5ndGhcbiAgKVxufVxuXG4vLyBNZXJnZSB0d28gdGV4dCBub2RlczogYG5vZGVgIGludG8gYHByZXZgLlxuZnVuY3Rpb24gbWVyZ2VUZXh0KHByZXYsIG5vZGUpIHtcbiAgcHJldi52YWx1ZSArPSBub2RlLnZhbHVlXG5cbiAgcmV0dXJuIHByZXZcbn1cblxuLy8gTWVyZ2UgdHdvIGJsb2NrcXVvdGVzOiBgbm9kZWAgaW50byBgcHJldmAsIHVubGVzcyBpbiBDb21tb25NYXJrIG9yIGdmbSBtb2Rlcy5cbmZ1bmN0aW9uIG1lcmdlQmxvY2txdW90ZShwcmV2LCBub2RlKSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuY29tbW9ubWFyayB8fCB0aGlzLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIHByZXYuY2hpbGRyZW4gPSBwcmV2LmNoaWxkcmVuLmNvbmNhdChub2RlLmNoaWxkcmVuKVxuXG4gIHJldHVybiBwcmV2XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVzXG5cbnZhciBkZWZhdWx0cyA9IFtcbiAgJ1xcXFwnLFxuICAnYCcsXG4gICcqJyxcbiAgJ3snLFxuICAnfScsXG4gICdbJyxcbiAgJ10nLFxuICAnKCcsXG4gICcpJyxcbiAgJyMnLFxuICAnKycsXG4gICctJyxcbiAgJy4nLFxuICAnIScsXG4gICdfJyxcbiAgJz4nXG5dXG5cbnZhciBnZm0gPSBkZWZhdWx0cy5jb25jYXQoWyd+JywgJ3wnXSlcblxudmFyIGNvbW1vbm1hcmsgPSBnZm0uY29uY2F0KFtcbiAgJ1xcbicsXG4gICdcIicsXG4gICckJyxcbiAgJyUnLFxuICAnJicsXG4gIFwiJ1wiLFxuICAnLCcsXG4gICcvJyxcbiAgJzonLFxuICAnOycsXG4gICc8JyxcbiAgJz0nLFxuICAnPycsXG4gICdAJyxcbiAgJ14nXG5dKVxuXG5lc2NhcGVzLmRlZmF1bHQgPSBkZWZhdWx0c1xuZXNjYXBlcy5nZm0gPSBnZm1cbmVzY2FwZXMuY29tbW9ubWFyayA9IGNvbW1vbm1hcmtcblxuLy8gR2V0IG1hcmtkb3duIGVzY2FwZXMuXG5mdW5jdGlvbiBlc2NhcGVzKG9wdGlvbnMpIHtcbiAgdmFyIHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmIChzZXR0aW5ncy5jb21tb25tYXJrKSB7XG4gICAgcmV0dXJuIGNvbW1vbm1hcmtcbiAgfVxuXG4gIHJldHVybiBzZXR0aW5ncy5nZm0gPyBnZm0gOiBkZWZhdWx0c1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jhc2UnLFxuICAnYmFzZWZvbnQnLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2NhcHRpb24nLFxuICAnY2VudGVyJyxcbiAgJ2NvbCcsXG4gICdjb2xncm91cCcsXG4gICdkZCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RpYWxvZycsXG4gICdkaXInLFxuICAnZGl2JyxcbiAgJ2RsJyxcbiAgJ2R0JyxcbiAgJ2ZpZWxkc2V0JyxcbiAgJ2ZpZ2NhcHRpb24nLFxuICAnZmlndXJlJyxcbiAgJ2Zvb3RlcicsXG4gICdmb3JtJyxcbiAgJ2ZyYW1lJyxcbiAgJ2ZyYW1lc2V0JyxcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ2hlYWQnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbWV0YScsXG4gICduYXYnLFxuICAnbm9mcmFtZXMnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGFyYW0nLFxuICAncHJlJyxcbiAgJ3NlY3Rpb24nLFxuICAnc291cmNlJyxcbiAgJ3RpdGxlJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBvc2l0aW9uOiB0cnVlLFxuICBnZm06IHRydWUsXG4gIGNvbW1vbm1hcms6IGZhbHNlLFxuICBmb290bm90ZXM6IGZhbHNlLFxuICBwZWRhbnRpYzogZmFsc2UsXG4gIGJsb2NrczogcmVxdWlyZSgnLi9ibG9jay1lbGVtZW50cycpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVzY2FwZXMgPSByZXF1aXJlKCdtYXJrZG93bi1lc2NhcGVzJylcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldE9wdGlvbnNcblxuZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY3VycmVudCA9IHNlbGYub3B0aW9uc1xuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuXG4gIGlmIChvcHRpb25zID09IG51bGwpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0geHRlbmQob3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgYCcgKyBvcHRpb25zICsgJ2AgZm9yIHNldHRpbmcgYG9wdGlvbnNgJylcbiAgfVxuXG4gIGZvciAoa2V5IGluIGRlZmF1bHRzKSB7XG4gICAgdmFsdWUgPSBvcHRpb25zW2tleV1cblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IGN1cnJlbnRba2V5XVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChrZXkgIT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKGtleSA9PT0gJ2Jsb2NrcycgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdmFsdWUgYCcgKyB2YWx1ZSArICdgIGZvciBzZXR0aW5nIGBvcHRpb25zLicgKyBrZXkgKyAnYCdcbiAgICAgIClcbiAgICB9XG5cbiAgICBvcHRpb25zW2tleV0gPSB2YWx1ZVxuICB9XG5cbiAgc2VsZi5vcHRpb25zID0gb3B0aW9uc1xuICBzZWxmLmVzY2FwZSA9IGVzY2FwZXMob3B0aW9ucylcblxuICByZXR1cm4gc2VsZlxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB2aXNpdCA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtdmlzaXQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZVBvc2l0aW9uXG5cbmZ1bmN0aW9uIHJlbW92ZVBvc2l0aW9uKG5vZGUsIGZvcmNlKSB7XG4gIHZpc2l0KG5vZGUsIGZvcmNlID8gaGFyZCA6IHNvZnQpXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIGhhcmQobm9kZSkge1xuICBkZWxldGUgbm9kZS5wb3NpdGlvblxufVxuXG5mdW5jdGlvbiBzb2Z0KG5vZGUpIHtcbiAgbm9kZS5wb3NpdGlvbiA9IHVuZGVmaW5lZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciByZW1vdmVQb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcmVtb3ZlLXBvc2l0aW9uJylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGxpbmVCcmVha3NFeHByZXNzaW9uID0gL1xcclxcbnxcXHIvZ1xuXG4vLyBQYXJzZSB0aGUgYm91bmQgZmlsZS5cbmZ1bmN0aW9uIHBhcnNlKCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHZhbHVlID0gU3RyaW5nKHNlbGYuZmlsZSlcbiAgdmFyIHN0YXJ0ID0ge2xpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwfVxuICB2YXIgY29udGVudCA9IHh0ZW5kKHN0YXJ0KVxuICB2YXIgbm9kZVxuXG4gIC8vIENsZWFuIG5vbi11bml4IG5ld2xpbmVzOiBgXFxyXFxuYCBhbmQgYFxccmAgYXJlIGFsbCBjaGFuZ2VkIHRvIGBcXG5gLlxuICAvLyBUaGlzIHNob3VsZCBub3QgYWZmZWN0IHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShsaW5lQnJlYWtzRXhwcmVzc2lvbiwgbGluZUZlZWQpXG5cbiAgLy8gQk9NLlxuICBpZiAodmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gMHhmZWZmKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKVxuXG4gICAgY29udGVudC5jb2x1bW4rK1xuICAgIGNvbnRlbnQub2Zmc2V0KytcbiAgfVxuXG4gIG5vZGUgPSB7XG4gICAgdHlwZTogJ3Jvb3QnLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplQmxvY2sodmFsdWUsIGNvbnRlbnQpLFxuICAgIHBvc2l0aW9uOiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IHNlbGYuZW9mIHx8IHh0ZW5kKHN0YXJ0KX1cbiAgfVxuXG4gIGlmICghc2VsZi5vcHRpb25zLnBvc2l0aW9uKSB7XG4gICAgcmVtb3ZlUG9zaXRpb24obm9kZSwgdHJ1ZSlcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3bGluZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xuXG5mdW5jdGlvbiBuZXdsaW5lKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApXG4gIHZhciBsZW5ndGhcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBxdWV1ZVxuICB2YXIgaW5kZXhcblxuICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGluZGV4ID0gMVxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgZWF0KHN1YnZhbHVlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbVRyYWlsaW5nTGluZXNcblxudmFyIGxpbmUgPSAnXFxuJ1xuXG4vLyBSZW1vdmUgZmluYWwgbmV3bGluZSBjaGFyYWN0ZXJzIGZyb20gYHZhbHVlYC5cbmZ1bmN0aW9uIHRyaW1UcmFpbGluZ0xpbmVzKHZhbHVlKSB7XG4gIHZhciB2YWwgPSBTdHJpbmcodmFsdWUpXG4gIHZhciBpbmRleCA9IHZhbC5sZW5ndGhcblxuICB3aGlsZSAodmFsLmNoYXJBdCgtLWluZGV4KSA9PT0gbGluZSkge1xuICAgIC8vIEVtcHR5XG4gIH1cblxuICByZXR1cm4gdmFsLnNsaWNlKDAsIGluZGV4ICsgMSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0tdHJhaWxpbmctbGluZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGVudGVkQ29kZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcblxudmFyIHRhYlNpemUgPSA0XG52YXIgY29kZUluZGVudCA9IHJlcGVhdChzcGFjZSwgdGFiU2l6ZSlcblxuZnVuY3Rpb24gaW5kZW50ZWRDb2RlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBjb250ZW50ID0gJydcbiAgdmFyIHN1YnZhbHVlUXVldWUgPSAnJ1xuICB2YXIgY29udGVudFF1ZXVlID0gJydcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgYmxhbmtRdWV1ZVxuICB2YXIgaW5kZW50XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoaW5kZW50KSB7XG4gICAgICBpbmRlbnQgPSBmYWxzZVxuXG4gICAgICBzdWJ2YWx1ZSArPSBzdWJ2YWx1ZVF1ZXVlXG4gICAgICBjb250ZW50ICs9IGNvbnRlbnRRdWV1ZVxuICAgICAgc3VidmFsdWVRdWV1ZSA9ICcnXG4gICAgICBjb250ZW50UXVldWUgPSAnJ1xuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICBzdWJ2YWx1ZVF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICAgIGNvbnRlbnRRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGNvbnRlbnQgKz0gY2hhcmFjdGVyXG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgICBpZiAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgICAgICBjb250ZW50UXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgICAgICAgIHN1YnZhbHVlUXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IHNwYWNlICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gY2hhcmFjdGVyICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKSA9PT0gY2hhcmFjdGVyICYmXG4gICAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAzKSA9PT0gY2hhcmFjdGVyXG4gICAgKSB7XG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGNvZGVJbmRlbnRcbiAgICAgIGluZGV4ICs9IDNcbiAgICAgIGluZGVudCA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBzdWJ2YWx1ZVF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZW50ID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBibGFua1F1ZXVlID0gJydcblxuICAgICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gdGFiIHx8IGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgYmxhbmtRdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHN1YnZhbHVlUXVldWUgKz0gYmxhbmtRdWV1ZSArIGNoYXJhY3RlclxuICAgICAgY29udGVudFF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH1cbiAgfVxuXG4gIGlmIChjb250ZW50KSB7XG4gICAgaWYgKHNpbGVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgICB0eXBlOiAnY29kZScsXG4gICAgICBsYW5nOiBudWxsLFxuICAgICAgbWV0YTogbnVsbCxcbiAgICAgIHZhbHVlOiB0cmltKGNvbnRlbnQpXG4gICAgfSlcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmVuY2VkQ29kZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciB0aWxkZSA9ICd+J1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbnZhciBtaW5GZW5jZUNvdW50ID0gM1xudmFyIHRhYlNpemUgPSA0XG5cbmZ1bmN0aW9uIGZlbmNlZENvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgZ2ZtID0gc2VsZi5vcHRpb25zLmdmbVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBmZW5jZUNvdW50XG4gIHZhciBtYXJrZXJcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgZmxhZ1xuICB2YXIgbGFuZ1xuICB2YXIgbWV0YVxuICB2YXIgcXVldWVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGV4ZGVudGVkQ29udGVudFxuICB2YXIgY2xvc2luZ1xuICB2YXIgZXhkZW50ZWRDbG9zaW5nXG4gIHZhciBpbmRlbnRcbiAgdmFyIG5vd1xuXG4gIGlmICghZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBFYXQgaW5pdGlhbCBzcGFjaW5nLlxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpbmRlbnQgPSBpbmRleFxuXG4gIC8vIEVhdCB0aGUgZmVuY2UuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSB0aWxkZSAmJiBjaGFyYWN0ZXIgIT09IGdyYXZlQWNjZW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBmZW5jZUNvdW50ID0gMVxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgZmVuY2VDb3VudCsrXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKGZlbmNlQ291bnQgPCBtaW5GZW5jZUNvdW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBFYXQgc3BhY2luZyBiZWZvcmUgZmxhZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgLy8gRWF0IGZsYWcuXG4gIGZsYWcgPSAnJ1xuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBsaW5lRmVlZCB8fFxuICAgICAgKG1hcmtlciA9PT0gZ3JhdmVBY2NlbnQgJiYgY2hhcmFjdGVyID09PSBtYXJrZXIpXG4gICAgKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG5cbiAgc3VidmFsdWUgKz0gZmxhZ1xuICBmbGFnID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoZmxhZyksIG5vdylcblxuICBpZiAocXVldWUpIHtcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICB9XG5cbiAgcXVldWUgPSAnJ1xuICBjbG9zaW5nID0gJydcbiAgZXhkZW50ZWRDbG9zaW5nID0gJydcbiAgY29udGVudCA9ICcnXG4gIGV4ZGVudGVkQ29udGVudCA9ICcnXG4gIHZhciBza2lwID0gdHJ1ZVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgY29udGVudCArPSBjbG9zaW5nXG4gICAgZXhkZW50ZWRDb250ZW50ICs9IGV4ZGVudGVkQ2xvc2luZ1xuICAgIGNsb3NpbmcgPSAnJ1xuICAgIGV4ZGVudGVkQ2xvc2luZyA9ICcnXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gVGhlIGZpcnN0IGxpbmUgZmVlZCBpcyBpZ25vcmVkLiBPdGhlcnMgYXJlbuKAmXQuXG4gICAgaWYgKHNraXApIHtcbiAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgc2tpcCA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgfVxuXG4gICAgcXVldWUgPSAnJ1xuICAgIGluZGV4KytcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgZXhkZW50ZWRDbG9zaW5nICs9IHF1ZXVlLnNsaWNlKGluZGVudClcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPj0gdGFiU2l6ZSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNsb3NpbmcgKz0gcXVldWVcbiAgICBleGRlbnRlZENsb3NpbmcgKz0gcXVldWVcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPCBmZW5jZUNvdW50KSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgKz0gY29udGVudCArIGNsb3NpbmdcblxuICAvLyBHZXQgbGFuZyBhbmQgbWV0YSBmcm9tIHRoZSBmbGFnLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGZsYWcubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSBmbGFnLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBpZiAoIWxhbmcpIHtcbiAgICAgICAgbGFuZyA9IGZsYWcuc2xpY2UoMCwgaW5kZXgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsYW5nKSB7XG4gICAgICBtZXRhID0gZmxhZy5zbGljZShpbmRleClcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdjb2RlJyxcbiAgICBsYW5nOiBsYW5nIHx8IGZsYWcgfHwgbnVsbCxcbiAgICBtZXRhOiBtZXRhIHx8IG51bGwsXG4gICAgdmFsdWU6IGV4ZGVudGVkQ29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJydXB0XG5cbmZ1bmN0aW9uIGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIGN0eCwgcGFyYW1zKSB7XG4gIHZhciBsZW5ndGggPSBpbnRlcnJ1cHRvcnMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBpbnRlcnJ1cHRvclxuICB2YXIgY29uZmlnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpbnRlcnJ1cHRvciA9IGludGVycnVwdG9yc1tpbmRleF1cbiAgICBjb25maWcgPSBpbnRlcnJ1cHRvclsxXSB8fCB7fVxuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLnBlZGFudGljICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbmZpZy5wZWRhbnRpYyAhPT0gY3R4Lm9wdGlvbnMucGVkYW50aWNcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLmNvbW1vbm1hcmsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY29uZmlnLmNvbW1vbm1hcmsgIT09IGN0eC5vcHRpb25zLmNvbW1vbm1hcmtcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKHRva2VuaXplcnNbaW50ZXJydXB0b3JbMF1dLmFwcGx5KGN0eCwgcGFyYW1zKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja3F1b3RlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG5cbmZ1bmN0aW9uIGJsb2NrcXVvdGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgb2Zmc2V0cyA9IHNlbGYub2Zmc2V0XG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnNcbiAgdmFyIGludGVycnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0QmxvY2txdW90ZVxuICB2YXIgbm93ID0gZWF0Lm5vdygpXG4gIHZhciBjdXJyZW50TGluZSA9IG5vdy5saW5lXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHZhbHVlcyA9IFtdXG4gIHZhciBjb250ZW50cyA9IFtdXG4gIHZhciBpbmRlbnRzID0gW11cbiAgdmFyIGFkZFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHJlc3RcbiAgdmFyIG5leHRJbmRleFxuICB2YXIgY29udGVudFxuICB2YXIgbGluZVxuICB2YXIgc3RhcnRJbmRleFxuICB2YXIgcHJlZml4ZWRcbiAgdmFyIGV4aXRcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaW5kZXggPSAwXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbmV4dEluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXgpXG4gICAgc3RhcnRJbmRleCA9IGluZGV4XG4gICAgcHJlZml4ZWQgPSBmYWxzZVxuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IGxlbmd0aFxuICAgIH1cblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgICBpbmRleCsrXG4gICAgICBwcmVmaXhlZCA9IHRydWVcblxuICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgfVxuXG4gICAgY29udGVudCA9IHZhbHVlLnNsaWNlKGluZGV4LCBuZXh0SW5kZXgpXG5cbiAgICBpZiAoIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpKSB7XG4gICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKCFwcmVmaXhlZCkge1xuICAgICAgcmVzdCA9IHZhbHVlLnNsaWNlKGluZGV4KVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZm9sbG93aW5nIGNvZGUgY29udGFpbnMgYSBwb3NzaWJsZSBibG9jay5cbiAgICAgIGlmIChpbnRlcnJ1cHQoaW50ZXJydXB0b3JzLCB0b2tlbml6ZXJzLCBzZWxmLCBbZWF0LCByZXN0LCB0cnVlXSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaW5lID0gc3RhcnRJbmRleCA9PT0gaW5kZXggPyBjb250ZW50IDogdmFsdWUuc2xpY2Uoc3RhcnRJbmRleCwgbmV4dEluZGV4KVxuXG4gICAgaW5kZW50cy5wdXNoKGluZGV4IC0gc3RhcnRJbmRleClcbiAgICB2YWx1ZXMucHVzaChsaW5lKVxuICAgIGNvbnRlbnRzLnB1c2goY29udGVudClcblxuICAgIGluZGV4ID0gbmV4dEluZGV4ICsgMVxuICB9XG5cbiAgaW5kZXggPSAtMVxuICBsZW5ndGggPSBpbmRlbnRzLmxlbmd0aFxuICBhZGQgPSBlYXQodmFsdWVzLmpvaW4obGluZUZlZWQpKVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2Zmc2V0c1tjdXJyZW50TGluZV0gPSAob2Zmc2V0c1tjdXJyZW50TGluZV0gfHwgMCkgKyBpbmRlbnRzW2luZGV4XVxuICAgIGN1cnJlbnRMaW5lKytcbiAgfVxuXG4gIGV4aXQgPSBzZWxmLmVudGVyQmxvY2soKVxuICBjb250ZW50cyA9IHNlbGYudG9rZW5pemVCbG9jayhjb250ZW50cy5qb2luKGxpbmVGZWVkKSwgbm93KVxuICBleGl0KClcblxuICByZXR1cm4gYWRkKHt0eXBlOiAnYmxvY2txdW90ZScsIGNoaWxkcmVuOiBjb250ZW50c30pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhdHhIZWFkaW5nXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIG51bWJlclNpZ24gPSAnIydcblxudmFyIG1heEZlbmNlQ291bnQgPSA2XG5cbmZ1bmN0aW9uIGF0eEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIG5vdyA9IGVhdC5ub3coKVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudCA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHF1ZXVlXG4gIHZhciBkZXB0aFxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFYXQgaGFzaGVzLlxuICBkZXB0aCA9IDBcblxuICB3aGlsZSAoKytpbmRleCA8PSBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBudW1iZXJTaWduKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGRlcHRoKytcbiAgfVxuXG4gIGlmIChkZXB0aCA+IG1heEZlbmNlQ291bnQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghZGVwdGggfHwgKCFwZWRhbnRpYyAmJiB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gbnVtYmVyU2lnbikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcblxuICAvLyBFYXQgaW50ZXJtZWRpYXRlIHdoaXRlLXNwYWNlLlxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiBub3QgaW4gcGVkYW50aWMgbW9kZSB3aXRob3V0IHNwYWNpbmcuXG4gIGlmICghcGVkYW50aWMgJiYgcXVldWUubGVuZ3RoID09PSAwICYmIGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IG51bWJlclNpZ24pIHtcbiAgICAgIGNvbnRlbnQgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gc3BhY2UgfHwgY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgLy8gYCNgIHdpdGhvdXQgYSBxdWV1ZSBpcyBwYXJ0IG9mIHRoZSBjb250ZW50LlxuICAgIGlmICghcGVkYW50aWMgJiYgY29udGVudCAmJiAhcXVldWUgJiYgY2hhcmFjdGVyID09PSBudW1iZXJTaWduKSB7XG4gICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBudW1iZXJTaWduKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIGluZGV4LS1cbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBxdWV1ZVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRoZW1hdGljQnJlYWtcblxudmFyIHRhYiA9ICdcXHQnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgYXN0ZXJpc2sgPSAnKidcbnZhciBkYXNoID0gJy0nXG52YXIgdW5kZXJzY29yZSA9ICdfJ1xuXG52YXIgbWF4Q291bnQgPSAzXG5cbmZ1bmN0aW9uIHRoZW1hdGljQnJlYWsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgbWFya2VyQ291bnRcbiAgdmFyIHF1ZXVlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIGlmIChcbiAgICBjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmXG4gICAgY2hhcmFjdGVyICE9PSBkYXNoICYmXG4gICAgY2hhcmFjdGVyICE9PSB1bmRlcnNjb3JlXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICBtYXJrZXJDb3VudCA9IDFcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyKSB7XG4gICAgICBtYXJrZXJDb3VudCsrXG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIG1hcmtlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG1hcmtlckNvdW50ID49IG1heENvdW50ICYmXG4gICAgICAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKVxuICAgICkge1xuICAgICAgc3VidmFsdWUgKz0gcXVldWVcblxuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7dHlwZTogJ3RoZW1hdGljQnJlYWsnfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRhdGlvblxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xuXG52YXIgc3BhY2VTaXplID0gMVxudmFyIHRhYlNpemUgPSA0XG5cbi8vIEdldHMgaW5kZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGEgbGluZS5cbmZ1bmN0aW9uIGluZGVudGF0aW9uKHZhbHVlKSB7XG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGluZGVudCA9IDBcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgdmFyIHN0b3BzID0ge31cbiAgdmFyIHNpemVcblxuICB3aGlsZSAoY2hhcmFjdGVyID09PSB0YWIgfHwgY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgIHNpemUgPSBjaGFyYWN0ZXIgPT09IHRhYiA/IHRhYlNpemUgOiBzcGFjZVNpemVcblxuICAgIGluZGVudCArPSBzaXplXG5cbiAgICBpZiAoc2l6ZSA+IDEpIHtcbiAgICAgIGluZGVudCA9IE1hdGguZmxvb3IoaW5kZW50IC8gc2l6ZSkgKiBzaXplXG4gICAgfVxuXG4gICAgc3RvcHNbaW5kZW50XSA9IGluZGV4XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gIH1cblxuICByZXR1cm4ge2luZGVudDogaW5kZW50LCBzdG9wczogc3RvcHN9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciByZXBlYXQgPSByZXF1aXJlKCdyZXBlYXQtc3RyaW5nJylcbnZhciBnZXRJbmRlbnQgPSByZXF1aXJlKCcuL2dldC1pbmRlbnRhdGlvbicpXG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50YXRpb25cblxudmFyIHRhYiA9ICdcXHQnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG5cbi8vIFJlbW92ZSB0aGUgbWluaW11bSBpbmRlbnQgZnJvbSBldmVyeSBsaW5lIGluIGB2YWx1ZWAuICBTdXBwb3J0cyBib3RoIHRhYixcbi8vIHNwYWNlZCwgYW5kIG1peGVkIGluZGVudGF0aW9uIChhcyB3ZWxsIGFzIHBvc3NpYmxlKS5cbmZ1bmN0aW9uIGluZGVudGF0aW9uKHZhbHVlLCBtYXhpbXVtKSB7XG4gIHZhciB2YWx1ZXMgPSB2YWx1ZS5zcGxpdChsaW5lRmVlZClcbiAgdmFyIHBvc2l0aW9uID0gdmFsdWVzLmxlbmd0aCArIDFcbiAgdmFyIG1pbkluZGVudCA9IEluZmluaXR5XG4gIHZhciBtYXRyaXggPSBbXVxuICB2YXIgaW5kZXhcbiAgdmFyIGluZGVudGF0aW9uXG4gIHZhciBzdG9wc1xuICB2YXIgcGFkZGluZ1xuXG4gIHZhbHVlcy51bnNoaWZ0KHJlcGVhdChzcGFjZSwgbWF4aW11bSkgKyBleGNsYW1hdGlvbk1hcmspXG5cbiAgd2hpbGUgKHBvc2l0aW9uLS0pIHtcbiAgICBpbmRlbnRhdGlvbiA9IGdldEluZGVudCh2YWx1ZXNbcG9zaXRpb25dKVxuXG4gICAgbWF0cml4W3Bvc2l0aW9uXSA9IGluZGVudGF0aW9uLnN0b3BzXG5cbiAgICBpZiAodHJpbSh2YWx1ZXNbcG9zaXRpb25dKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGluZGVudGF0aW9uLmluZGVudCkge1xuICAgICAgaWYgKGluZGVudGF0aW9uLmluZGVudCA+IDAgJiYgaW5kZW50YXRpb24uaW5kZW50IDwgbWluSW5kZW50KSB7XG4gICAgICAgIG1pbkluZGVudCA9IGluZGVudGF0aW9uLmluZGVudFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW5JbmRlbnQgPSBJbmZpbml0eVxuXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChtaW5JbmRlbnQgIT09IEluZmluaXR5KSB7XG4gICAgcG9zaXRpb24gPSB2YWx1ZXMubGVuZ3RoXG5cbiAgICB3aGlsZSAocG9zaXRpb24tLSkge1xuICAgICAgc3RvcHMgPSBtYXRyaXhbcG9zaXRpb25dXG4gICAgICBpbmRleCA9IG1pbkluZGVudFxuXG4gICAgICB3aGlsZSAoaW5kZXggJiYgIShpbmRleCBpbiBzdG9wcykpIHtcbiAgICAgICAgaW5kZXgtLVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRyaW0odmFsdWVzW3Bvc2l0aW9uXSkubGVuZ3RoICE9PSAwICYmXG4gICAgICAgIG1pbkluZGVudCAmJlxuICAgICAgICBpbmRleCAhPT0gbWluSW5kZW50XG4gICAgICApIHtcbiAgICAgICAgcGFkZGluZyA9IHRhYlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFkZGluZyA9ICcnXG4gICAgICB9XG5cbiAgICAgIHZhbHVlc1twb3NpdGlvbl0gPVxuICAgICAgICBwYWRkaW5nICsgdmFsdWVzW3Bvc2l0aW9uXS5zbGljZShpbmRleCBpbiBzdG9wcyA/IHN0b3BzW2luZGV4XSArIDEgOiAwKVxuICAgIH1cbiAgfVxuXG4gIHZhbHVlcy5zaGlmdCgpXG5cbiAgcmV0dXJuIHZhbHVlcy5qb2luKGxpbmVGZWVkKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgcmVwZWF0ID0gcmVxdWlyZSgncmVwZWF0LXN0cmluZycpXG52YXIgZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWRlY2ltYWwnKVxudmFyIGdldEluZGVudCA9IHJlcXVpcmUoJy4uL3V0aWwvZ2V0LWluZGVudGF0aW9uJylcbnZhciByZW1vdmVJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL3JlbW92ZS1pbmRlbnRhdGlvbicpXG52YXIgaW50ZXJydXB0ID0gcmVxdWlyZSgnLi4vdXRpbC9pbnRlcnJ1cHQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RcblxudmFyIGFzdGVyaXNrID0gJyonXG52YXIgdW5kZXJzY29yZSA9ICdfJ1xudmFyIHBsdXNTaWduID0gJysnXG52YXIgZGFzaCA9ICctJ1xudmFyIGRvdCA9ICcuJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGxvd2VyY2FzZVggPSAneCdcblxudmFyIHRhYlNpemUgPSA0XG52YXIgbG9vc2VMaXN0SXRlbUV4cHJlc3Npb24gPSAvXFxuXFxuKD8hXFxzKiQpL1xudmFyIHRhc2tJdGVtRXhwcmVzc2lvbiA9IC9eXFxbKFsgXFx0XXx4fFgpXVsgXFx0XS9cbnZhciBidWxsZXRFeHByZXNzaW9uID0gL14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKCB7MSw0fSg/ISApfCB8XFx0fCR8KD89XFxuKSkoW15cXG5dKikvXG52YXIgcGVkYW50aWNCdWxsZXRFeHByZXNzaW9uID0gL14oWyBcXHRdKikoWyorLV18XFxkK1suKV0pKFsgXFx0XSspL1xudmFyIGluaXRpYWxJbmRlbnRFeHByZXNzaW9uID0gL14oIHsxLDR9fFxcdCk/L2dtXG5cbmZ1bmN0aW9uIGxpc3QoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY29tbW9ubWFyayA9IHNlbGYub3B0aW9ucy5jb21tb25tYXJrXG4gIHZhciBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpY1xuICB2YXIgdG9rZW5pemVycyA9IHNlbGYuYmxvY2tUb2tlbml6ZXJzXG4gIHZhciBpbnRlcnVwdG9ycyA9IHNlbGYuaW50ZXJydXB0TGlzdFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN0YXJ0ID0gbnVsbFxuICB2YXIgc2l6ZSA9IDBcbiAgdmFyIHF1ZXVlXG4gIHZhciBvcmRlcmVkXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgbmV4dEluZGV4XG4gIHZhciBzdGFydEluZGV4XG4gIHZhciBwcmVmaXhlZFxuICB2YXIgY3VycmVudE1hcmtlclxuICB2YXIgY29udGVudFxuICB2YXIgbGluZVxuICB2YXIgcHJldkVtcHR5XG4gIHZhciBlbXB0eVxuICB2YXIgaXRlbXNcbiAgdmFyIGFsbExpbmVzXG4gIHZhciBlbXB0eUxpbmVzXG4gIHZhciBpdGVtXG4gIHZhciBlbnRlclRvcFxuICB2YXIgZXhpdEJsb2NrcXVvdGVcbiAgdmFyIHNwcmVhZCA9IGZhbHNlXG4gIHZhciBub2RlXG4gIHZhciBub3dcbiAgdmFyIGVuZFxuICB2YXIgaW5kZW50ZWRcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHNpemUgKz0gdGFiU2l6ZSAtIChzaXplICUgdGFiU2l6ZSlcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgIHNpemUrK1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmIChzaXplID49IHRhYlNpemUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyID09PSBhc3RlcmlzayB8fCBjaGFyYWN0ZXIgPT09IHBsdXNTaWduIHx8IGNoYXJhY3RlciA9PT0gZGFzaCkge1xuICAgIG1hcmtlciA9IGNoYXJhY3RlclxuICAgIG9yZGVyZWQgPSBmYWxzZVxuICB9IGVsc2Uge1xuICAgIG9yZGVyZWQgPSB0cnVlXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghZGVjaW1hbChjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgICFxdWV1ZSB8fFxuICAgICAgIShjaGFyYWN0ZXIgPT09IGRvdCB8fCAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMpKVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3RhcnQgPSBwYXJzZUludChxdWV1ZSwgMTApXG4gICAgbWFya2VyID0gY2hhcmFjdGVyXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICBpZiAoXG4gICAgY2hhcmFjdGVyICE9PSBzcGFjZSAmJlxuICAgIGNoYXJhY3RlciAhPT0gdGFiICYmXG4gICAgKHBlZGFudGljIHx8IChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkICYmIGNoYXJhY3RlciAhPT0gJycpKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaW5kZXggPSAwXG4gIGl0ZW1zID0gW11cbiAgYWxsTGluZXMgPSBbXVxuICBlbXB0eUxpbmVzID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBuZXh0SW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleClcbiAgICBzdGFydEluZGV4ID0gaW5kZXhcbiAgICBwcmVmaXhlZCA9IGZhbHNlXG4gICAgaW5kZW50ZWQgPSBmYWxzZVxuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IGxlbmd0aFxuICAgIH1cblxuICAgIGVuZCA9IGluZGV4ICsgdGFiU2l6ZVxuICAgIHNpemUgPSAwXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgIHNpemUgKz0gdGFiU2l6ZSAtIChzaXplICUgdGFiU2l6ZSlcbiAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBzaXplKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoc2l6ZSA+PSB0YWJTaXplKSB7XG4gICAgICBpbmRlbnRlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoaXRlbSAmJiBzaXplID49IGl0ZW0uaW5kZW50KSB7XG4gICAgICBpbmRlbnRlZCA9IHRydWVcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgY3VycmVudE1hcmtlciA9IG51bGxcblxuICAgIGlmICghaW5kZW50ZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhcmFjdGVyID09PSBhc3RlcmlzayB8fFxuICAgICAgICBjaGFyYWN0ZXIgPT09IHBsdXNTaWduIHx8XG4gICAgICAgIGNoYXJhY3RlciA9PT0gZGFzaFxuICAgICAgKSB7XG4gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBzaXplKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlID0gJydcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cblxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgICAgIGluZGV4KytcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcXVldWUgJiZcbiAgICAgICAgICAoY2hhcmFjdGVyID09PSBkb3QgfHwgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IGNoYXJhY3RlclxuICAgICAgICAgIHNpemUgKz0gcXVldWUubGVuZ3RoICsgMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50TWFya2VyKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgICBlbmQgPSBpbmRleCArIHRhYlNpemVcblxuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHNwYWNlKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICAgIHNpemUrK1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gZW5kICYmIHZhbHVlLmNoYXJBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgICAgICBpbmRleCAtPSB0YWJTaXplIC0gMVxuICAgICAgICAgICAgc2l6ZSAtPSB0YWJTaXplIC0gMVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkICYmIGNoYXJhY3RlciAhPT0gJycpIHtcbiAgICAgICAgICBjdXJyZW50TWFya2VyID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRNYXJrZXIpIHtcbiAgICAgIGlmICghcGVkYW50aWMgJiYgbWFya2VyICE9PSBjdXJyZW50TWFya2VyKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNvbW1vbm1hcmsgJiYgIWluZGVudGVkICYmIHZhbHVlLmNoYXJBdChzdGFydEluZGV4KSA9PT0gc3BhY2UpIHtcbiAgICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKGNvbW1vbm1hcmsgJiYgaXRlbSkge1xuICAgICAgICBpbmRlbnRlZCA9IHNpemUgPj0gaXRlbS5pbmRlbnQgfHwgc2l6ZSA+IHRhYlNpemVcbiAgICAgIH1cblxuICAgICAgcHJlZml4ZWQgPSBmYWxzZVxuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgfVxuXG4gICAgbGluZSA9IHZhbHVlLnNsaWNlKHN0YXJ0SW5kZXgsIG5leHRJbmRleClcbiAgICBjb250ZW50ID0gc3RhcnRJbmRleCA9PT0gaW5kZXggPyBsaW5lIDogdmFsdWUuc2xpY2UoaW5kZXgsIG5leHRJbmRleClcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRNYXJrZXIgPT09IGFzdGVyaXNrIHx8XG4gICAgICBjdXJyZW50TWFya2VyID09PSB1bmRlcnNjb3JlIHx8XG4gICAgICBjdXJyZW50TWFya2VyID09PSBkYXNoXG4gICAgKSB7XG4gICAgICBpZiAodG9rZW5pemVycy50aGVtYXRpY0JyZWFrLmNhbGwoc2VsZiwgZWF0LCBsaW5lLCB0cnVlKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXZFbXB0eSA9IGVtcHR5XG4gICAgZW1wdHkgPSAhcHJlZml4ZWQgJiYgIXRyaW0oY29udGVudCkubGVuZ3RoXG5cbiAgICBpZiAoaW5kZW50ZWQgJiYgaXRlbSkge1xuICAgICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUuY29uY2F0KGVtcHR5TGluZXMsIGxpbmUpXG4gICAgICBhbGxMaW5lcyA9IGFsbExpbmVzLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgZW1wdHlMaW5lcyA9IFtdXG4gICAgfSBlbHNlIGlmIChwcmVmaXhlZCkge1xuICAgICAgaWYgKGVtcHR5TGluZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHNwcmVhZCA9IHRydWVcbiAgICAgICAgaXRlbS52YWx1ZS5wdXNoKCcnKVxuICAgICAgICBpdGVtLnRyYWlsID0gZW1wdHlMaW5lcy5jb25jYXQoKVxuICAgICAgfVxuXG4gICAgICBpdGVtID0ge1xuICAgICAgICB2YWx1ZTogW2xpbmVdLFxuICAgICAgICBpbmRlbnQ6IHNpemUsXG4gICAgICAgIHRyYWlsOiBbXVxuICAgICAgfVxuXG4gICAgICBpdGVtcy5wdXNoKGl0ZW0pXG4gICAgICBhbGxMaW5lcyA9IGFsbExpbmVzLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgZW1wdHlMaW5lcyA9IFtdXG4gICAgfSBlbHNlIGlmIChlbXB0eSkge1xuICAgICAgaWYgKHByZXZFbXB0eSAmJiAhY29tbW9ubWFyaykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBlbXB0eUxpbmVzLnB1c2gobGluZSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByZXZFbXB0eSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVydXB0b3JzLCB0b2tlbml6ZXJzLCBzZWxmLCBbZWF0LCBsaW5lLCB0cnVlXSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUuY29uY2F0KGVtcHR5TGluZXMsIGxpbmUpXG4gICAgICBhbGxMaW5lcyA9IGFsbExpbmVzLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgZW1wdHlMaW5lcyA9IFtdXG4gICAgfVxuXG4gICAgaW5kZXggPSBuZXh0SW5kZXggKyAxXG4gIH1cblxuICBub2RlID0gZWF0KGFsbExpbmVzLmpvaW4obGluZUZlZWQpKS5yZXNldCh7XG4gICAgdHlwZTogJ2xpc3QnLFxuICAgIG9yZGVyZWQ6IG9yZGVyZWQsXG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIHNwcmVhZDogc3ByZWFkLFxuICAgIGNoaWxkcmVuOiBbXVxuICB9KVxuXG4gIGVudGVyVG9wID0gc2VsZi5lbnRlckxpc3QoKVxuICBleGl0QmxvY2txdW90ZSA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gaXRlbXMubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpdGVtID0gaXRlbXNbaW5kZXhdLnZhbHVlLmpvaW4obGluZUZlZWQpXG4gICAgbm93ID0gZWF0Lm5vdygpXG5cbiAgICBlYXQoaXRlbSkobGlzdEl0ZW0oc2VsZiwgaXRlbSwgbm93KSwgbm9kZSlcblxuICAgIGl0ZW0gPSBpdGVtc1tpbmRleF0udHJhaWwuam9pbihsaW5lRmVlZClcblxuICAgIGlmIChpbmRleCAhPT0gbGVuZ3RoIC0gMSkge1xuICAgICAgaXRlbSArPSBsaW5lRmVlZFxuICAgIH1cblxuICAgIGVhdChpdGVtKVxuICB9XG5cbiAgZW50ZXJUb3AoKVxuICBleGl0QmxvY2txdW90ZSgpXG5cbiAgcmV0dXJuIG5vZGVcbn1cblxuZnVuY3Rpb24gbGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBmbiA9IGN0eC5vcHRpb25zLnBlZGFudGljID8gcGVkYW50aWNMaXN0SXRlbSA6IG5vcm1hbExpc3RJdGVtXG4gIHZhciBjaGVja2VkID0gbnVsbFxuICB2YXIgdGFza1xuICB2YXIgaW5kZW50XG5cbiAgdmFsdWUgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgaWYgKGN0eC5vcHRpb25zLmdmbSkge1xuICAgIHRhc2sgPSB2YWx1ZS5tYXRjaCh0YXNrSXRlbUV4cHJlc3Npb24pXG5cbiAgICBpZiAodGFzaykge1xuICAgICAgaW5kZW50ID0gdGFza1swXS5sZW5ndGhcbiAgICAgIGNoZWNrZWQgPSB0YXNrWzFdLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZVhcbiAgICAgIG9mZnNldHNbcG9zaXRpb24ubGluZV0gKz0gaW5kZW50XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKGluZGVudClcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgc3ByZWFkOiBsb29zZUxpc3RJdGVtRXhwcmVzc2lvbi50ZXN0KHZhbHVlKSxcbiAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgIGNoaWxkcmVuOiBjdHgudG9rZW5pemVCbG9jayh2YWx1ZSwgcG9zaXRpb24pXG4gIH1cbn1cblxuLy8gQ3JlYXRlIGEgbGlzdC1pdGVtIHVzaW5nIG92ZXJseSBzaW1wbGUgbWVjaGFuaWNzLlxuZnVuY3Rpb24gcGVkYW50aWNMaXN0SXRlbShjdHgsIHZhbHVlLCBwb3NpdGlvbikge1xuICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgdmFyIGxpbmUgPSBwb3NpdGlvbi5saW5lXG5cbiAgLy8gUmVtb3ZlIHRoZSBsaXN0LWl0ZW3igJlzIGJ1bGxldC5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgLy8gVGhlIGluaXRpYWwgbGluZSB3YXMgYWxzbyBtYXRjaGVkIGJ5IHRoZSBiZWxvdywgc28gd2UgcmVzZXQgdGhlIGBsaW5lYC5cbiAgbGluZSA9IHBvc2l0aW9uLmxpbmVcblxuICByZXR1cm4gdmFsdWUucmVwbGFjZShpbml0aWFsSW5kZW50RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgLy8gQSBzaW1wbGUgcmVwbGFjZXIgd2hpY2ggcmVtb3ZlZCBhbGwgbWF0Y2hlcywgYW5kIGFkZHMgdGhlaXIgbGVuZ3RoIHRvXG4gIC8vIGBvZmZzZXRgLlxuICBmdW5jdGlvbiByZXBsYWNlcigkMCkge1xuICAgIG9mZnNldHNbbGluZV0gPSAob2Zmc2V0c1tsaW5lXSB8fCAwKSArICQwLmxlbmd0aFxuICAgIGxpbmUrK1xuXG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuLy8gQ3JlYXRlIGEgbGlzdC1pdGVtIHVzaW5nIHNhbmUgbWVjaGFuaWNzLlxuZnVuY3Rpb24gbm9ybWFsTGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuICB2YXIgbWF4XG4gIHZhciBidWxsZXRcbiAgdmFyIHJlc3RcbiAgdmFyIGxpbmVzXG4gIHZhciB0cmltbWVkTGluZXNcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICAvLyBSZW1vdmUgdGhlIGxpc3QtaXRlbeKAmXMgYnVsbGV0LlxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoYnVsbGV0RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgbGluZXMgPSB2YWx1ZS5zcGxpdChsaW5lRmVlZClcblxuICB0cmltbWVkTGluZXMgPSByZW1vdmVJbmRlbnQodmFsdWUsIGdldEluZGVudChtYXgpLmluZGVudCkuc3BsaXQobGluZUZlZWQpXG5cbiAgLy8gV2UgcmVwbGFjZWQgdGhlIGluaXRpYWwgYnVsbGV0IHdpdGggc29tZXRoaW5nIGVsc2UgYWJvdmUsIHdoaWNoIHdhcyB1c2VkXG4gIC8vIHRvIHRyaWNrIGByZW1vdmVJbmRlbnRhdGlvbmAgaW50byByZW1vdmluZyBzb21lIG1vcmUgY2hhcmFjdGVycyB3aGVuXG4gIC8vIHBvc3NpYmxlLiAgSG93ZXZlciwgdGhhdCBjb3VsZCByZXN1bHQgaW4gdGhlIGluaXRpYWwgbGluZSB0byBiZSBzdHJpcHBlZFxuICAvLyBtb3JlIHRoYW4gaXQgc2hvdWxkIGJlLlxuICB0cmltbWVkTGluZXNbMF0gPSByZXN0XG5cbiAgb2Zmc2V0c1tsaW5lXSA9IChvZmZzZXRzW2xpbmVdIHx8IDApICsgYnVsbGV0Lmxlbmd0aFxuICBsaW5lKytcblxuICBpbmRleCA9IDBcbiAgbGVuZ3RoID0gbGluZXMubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBvZmZzZXRzW2xpbmVdID1cbiAgICAgIChvZmZzZXRzW2xpbmVdIHx8IDApICsgbGluZXNbaW5kZXhdLmxlbmd0aCAtIHRyaW1tZWRMaW5lc1tpbmRleF0ubGVuZ3RoXG4gICAgbGluZSsrXG4gIH1cblxuICByZXR1cm4gdHJpbW1lZExpbmVzLmpvaW4obGluZUZlZWQpXG5cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXMgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZXIoJDAsICQxLCAkMiwgJDMsICQ0KSB7XG4gICAgYnVsbGV0ID0gJDEgKyAkMiArICQzXG4gICAgcmVzdCA9ICQ0XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgbmluZSBudW1iZXJlZCBsaXN0IGl0ZW1zIGNhbiBpbmRlbnQgd2l0aCBhblxuICAgIC8vIGV4dHJhIHNwYWNlLiAgVGhhdCBpcywgd2hlbiB0aGUgYnVsbGV0IGRpZCBub3QgcmVjZWl2ZSBhbiBleHRyYSBmaW5hbFxuICAgIC8vIHNwYWNlLlxuICAgIGlmIChOdW1iZXIoJDIpIDwgMTAgJiYgYnVsbGV0Lmxlbmd0aCAlIDIgPT09IDEpIHtcbiAgICAgICQyID0gc3BhY2UgKyAkMlxuICAgIH1cblxuICAgIG1heCA9ICQxICsgcmVwZWF0KHNwYWNlLCAkMi5sZW5ndGgpICsgJDNcblxuICAgIHJldHVybiBtYXggKyByZXN0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldGV4dEhlYWRpbmdcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgZXF1YWxzVG8gPSAnPSdcbnZhciBkYXNoID0gJy0nXG5cbnZhciBtYXhJbmRlbnQgPSAzXG5cbnZhciBlcXVhbHNUb0RlcHRoID0gMVxudmFyIGRhc2hEZXB0aCA9IDJcblxuZnVuY3Rpb24gc2V0ZXh0SGVhZGluZyhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudFxuICB2YXIgcXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgbWFya2VyXG4gIHZhciBkZXB0aFxuXG4gIC8vIEVhdCBpbml0aWFsIGluZGVudGF0aW9uLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlIHx8IGluZGV4ID49IG1heEluZGVudCkge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICBjb250ZW50ID0gJydcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UgfHwgY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgc3VidmFsdWUgKz0gY29udGVudCArIHF1ZXVlXG5cbiAgLy8gRW5zdXJlIHRoZSBjb250ZW50IGlzIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBhbmQgYSB2YWxpZCBtYXJrZXIuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICBtYXJrZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCB8fCAobWFya2VyICE9PSBlcXVhbHNUbyAmJiBtYXJrZXIgIT09IGRhc2gpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcblxuICAvLyBFYXQgU2V0ZXh0LWxpbmUuXG4gIHF1ZXVlID0gbWFya2VyXG4gIGRlcHRoID0gbWFya2VyID09PSBlcXVhbHNUbyA/IGVxdWFsc1RvRGVwdGggOiBkYXNoRGVwdGhcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSkoe1xuICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICBkZXB0aDogZGVwdGgsXG4gICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBhdHRyaWJ1dGVOYW1lID0gJ1thLXpBLVpfOl1bYS16QS1aMC05Oi5fLV0qJ1xudmFyIHVucXVvdGVkID0gJ1teXCJcXCc9PD5gXFxcXHUwMDAwLVxcXFx1MDAyMF0rJ1xudmFyIHNpbmdsZVF1b3RlZCA9IFwiJ1teJ10qJ1wiXG52YXIgZG91YmxlUXVvdGVkID0gJ1wiW15cIl0qXCInXG52YXIgYXR0cmlidXRlVmFsdWUgPVxuICAnKD86JyArIHVucXVvdGVkICsgJ3wnICsgc2luZ2xlUXVvdGVkICsgJ3wnICsgZG91YmxlUXVvdGVkICsgJyknXG52YXIgYXR0cmlidXRlID1cbiAgJyg/OlxcXFxzKycgKyBhdHRyaWJ1dGVOYW1lICsgJyg/OlxcXFxzKj1cXFxccyonICsgYXR0cmlidXRlVmFsdWUgKyAnKT8pJ1xudmFyIG9wZW5UYWcgPSAnPFtBLVphLXpdW0EtWmEtejAtOVxcXFwtXSonICsgYXR0cmlidXRlICsgJypcXFxccypcXFxcLz8+J1xudmFyIGNsb3NlVGFnID0gJzxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+J1xudmFyIGNvbW1lbnQgPSAnPCEtLS0tPnw8IS0tKD86LT9bXj4tXSkoPzotP1teLV0pKi0tPidcbnZhciBwcm9jZXNzaW5nID0gJzxbP10uKj9bP10+J1xudmFyIGRlY2xhcmF0aW9uID0gJzwhW0EtWmEtel0rXFxcXHMrW14+XSo+J1xudmFyIGNkYXRhID0gJzwhXFxcXFtDREFUQVxcXFxbW1xcXFxzXFxcXFNdKj9cXFxcXVxcXFxdPidcblxuZXhwb3J0cy5vcGVuQ2xvc2VUYWcgPSBuZXcgUmVnRXhwKCdeKD86JyArIG9wZW5UYWcgKyAnfCcgKyBjbG9zZVRhZyArICcpJylcblxuZXhwb3J0cy50YWcgPSBuZXcgUmVnRXhwKFxuICAnXig/OicgK1xuICAgIG9wZW5UYWcgK1xuICAgICd8JyArXG4gICAgY2xvc2VUYWcgK1xuICAgICd8JyArXG4gICAgY29tbWVudCArXG4gICAgJ3wnICtcbiAgICBwcm9jZXNzaW5nICtcbiAgICAnfCcgK1xuICAgIGRlY2xhcmF0aW9uICtcbiAgICAnfCcgK1xuICAgIGNkYXRhICtcbiAgICAnKSdcbilcbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgb3BlbkNsb3NlVGFnID0gcmVxdWlyZSgnLi4vdXRpbC9odG1sJykub3BlbkNsb3NlVGFnXG5cbm1vZHVsZS5leHBvcnRzID0gYmxvY2tIdG1sXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGxlc3NUaGFuID0gJzwnXG5cbnZhciByYXdPcGVuRXhwcmVzc2lvbiA9IC9ePChzY3JpcHR8cHJlfHN0eWxlKSg/PShcXHN8PnwkKSkvaVxudmFyIHJhd0Nsb3NlRXhwcmVzc2lvbiA9IC88XFwvKHNjcmlwdHxwcmV8c3R5bGUpPi9pXG52YXIgY29tbWVudE9wZW5FeHByZXNzaW9uID0gL148IS0tL1xudmFyIGNvbW1lbnRDbG9zZUV4cHJlc3Npb24gPSAvLS0+L1xudmFyIGluc3RydWN0aW9uT3BlbkV4cHJlc3Npb24gPSAvXjxcXD8vXG52YXIgaW5zdHJ1Y3Rpb25DbG9zZUV4cHJlc3Npb24gPSAvXFw/Pi9cbnZhciBkaXJlY3RpdmVPcGVuRXhwcmVzc2lvbiA9IC9ePCFbQS1aYS16XS9cbnZhciBkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24gPSAvPi9cbnZhciBjZGF0YU9wZW5FeHByZXNzaW9uID0gL148IVxcW0NEQVRBXFxbL1xudmFyIGNkYXRhQ2xvc2VFeHByZXNzaW9uID0gL1xcXVxcXT4vXG52YXIgZWxlbWVudENsb3NlRXhwcmVzc2lvbiA9IC9eJC9cbnZhciBvdGhlckVsZW1lbnRPcGVuRXhwcmVzc2lvbiA9IG5ldyBSZWdFeHAob3BlbkNsb3NlVGFnLnNvdXJjZSArICdcXFxccyokJylcblxuZnVuY3Rpb24gYmxvY2tIdG1sKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGJsb2NrcyA9IHNlbGYub3B0aW9ucy5ibG9ja3Muam9pbignfCcpXG4gIHZhciBlbGVtZW50T3BlbkV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKFxuICAgICdePC8/KCcgKyBibG9ja3MgKyAnKSg/PShcXFxcc3wvPz58JCkpJyxcbiAgICAnaSdcbiAgKVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIG5leHRcbiAgdmFyIGxpbmVcbiAgdmFyIG9mZnNldFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBjb3VudFxuICB2YXIgc2VxdWVuY2VcbiAgdmFyIHN1YnZhbHVlXG5cbiAgdmFyIHNlcXVlbmNlcyA9IFtcbiAgICBbcmF3T3BlbkV4cHJlc3Npb24sIHJhd0Nsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2NvbW1lbnRPcGVuRXhwcmVzc2lvbiwgY29tbWVudENsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2luc3RydWN0aW9uT3BlbkV4cHJlc3Npb24sIGluc3RydWN0aW9uQ2xvc2VFeHByZXNzaW9uLCB0cnVlXSxcbiAgICBbZGlyZWN0aXZlT3BlbkV4cHJlc3Npb24sIGRpcmVjdGl2ZUNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2NkYXRhT3BlbkV4cHJlc3Npb24sIGNkYXRhQ2xvc2VFeHByZXNzaW9uLCB0cnVlXSxcbiAgICBbZWxlbWVudE9wZW5FeHByZXNzaW9uLCBlbGVtZW50Q2xvc2VFeHByZXNzaW9uLCB0cnVlXSxcbiAgICBbb3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24sIGVsZW1lbnRDbG9zZUV4cHJlc3Npb24sIGZhbHNlXVxuICBdXG5cbiAgLy8gRWF0IGluaXRpYWwgc3BhY2luZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IGxlc3NUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBuZXh0ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICBuZXh0ID0gbmV4dCA9PT0gLTEgPyBsZW5ndGggOiBuZXh0XG4gIGxpbmUgPSB2YWx1ZS5zbGljZShpbmRleCwgbmV4dClcbiAgb2Zmc2V0ID0gLTFcbiAgY291bnQgPSBzZXF1ZW5jZXMubGVuZ3RoXG5cbiAgd2hpbGUgKCsrb2Zmc2V0IDwgY291bnQpIHtcbiAgICBpZiAoc2VxdWVuY2VzW29mZnNldF1bMF0udGVzdChsaW5lKSkge1xuICAgICAgc2VxdWVuY2UgPSBzZXF1ZW5jZXNbb2Zmc2V0XVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoIXNlcXVlbmNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlWzJdXG4gIH1cblxuICBpbmRleCA9IG5leHRcblxuICBpZiAoIXNlcXVlbmNlWzFdLnRlc3QobGluZSkpIHtcbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIG5leHQgPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleCArIDEpXG4gICAgICBuZXh0ID0gbmV4dCA9PT0gLTEgPyBsZW5ndGggOiBuZXh0XG4gICAgICBsaW5lID0gdmFsdWUuc2xpY2UoaW5kZXggKyAxLCBuZXh0KVxuXG4gICAgICBpZiAoc2VxdWVuY2VbMV0udGVzdChsaW5lKSkge1xuICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgIGluZGV4ID0gbmV4dFxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSBuZXh0XG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBpbmRleClcblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7dHlwZTogJ2h0bWwnLCB2YWx1ZTogc3VidmFsdWV9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBjb2xsYXBzZVdoaXRlU3BhY2UgPSByZXF1aXJlKCdjb2xsYXBzZS13aGl0ZS1zcGFjZScpXG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbi8vIE5vcm1hbGl6ZSBhbiBpZGVudGlmaWVyLiAgQ29sbGFwc2VzIG11bHRpcGxlIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgaW50byBhXG4vLyBzaW5nbGUgc3BhY2UsIGFuZCByZW1vdmVzIGNhc2luZy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSkge1xuICByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNlKHZhbHVlKS50b0xvd2VyQ2FzZSgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnLi4vdXRpbC9ub3JtYWxpemUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvb3Rub3RlRGVmaW5pdGlvblxuZm9vdG5vdGVEZWZpbml0aW9uLm5vdEluTGlzdCA9IHRydWVcbmZvb3Rub3RlRGVmaW5pdGlvbi5ub3RJbkJsb2NrID0gdHJ1ZVxuXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGNhcmV0ID0gJ14nXG52YXIgY29sb24gPSAnOidcblxudmFyIEVYUFJFU1NJT05fSU5JVElBTF9UQUIgPSAvXiggezR9fFxcdCk/L2dtXG5cbmZ1bmN0aW9uIGZvb3Rub3RlRGVmaW5pdGlvbihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBvZmZzZXRzID0gc2VsZi5vZmZzZXRcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBub3dcbiAgdmFyIGN1cnJlbnRMaW5lXG4gIHZhciBjb250ZW50XG4gIHZhciBxdWV1ZVxuICB2YXIgc3VicXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgaWRlbnRpZmllclxuICB2YXIgYWRkXG4gIHZhciBleGl0XG5cbiAgaWYgKCFzZWxmLm9wdGlvbnMuZm9vdG5vdGVzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCA9IDBcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlID0gJydcbiAgbm93ID0gZWF0Lm5vdygpXG4gIGN1cnJlbnRMaW5lID0gbm93LmxpbmVcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoXG4gICAgdmFsdWUuY2hhckF0KGluZGV4KSAhPT0gbGVmdFNxdWFyZUJyYWNrZXQgfHxcbiAgICB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSAhPT0gY2FyZXRcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSArPSBsZWZ0U3F1YXJlQnJhY2tldCArIGNhcmV0XG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIHF1ZXVlID0gJydcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKFxuICAgICFxdWV1ZSB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCB8fFxuICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBjb2xvblxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWRlbnRpZmllciA9IHF1ZXVlXG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgcmlnaHRTcXVhcmVCcmFja2V0ICsgY29sb25cbiAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBub3cuY29sdW1uICs9IHN1YnZhbHVlLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IHN1YnZhbHVlLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuICBzdWJxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIHN1YnF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gc3VicXVldWVcbiAgICAgIHN1YnF1ZXVlID0gJydcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VicXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgfVxuXG4gICAgaWYgKHF1ZXVlKSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuXG4gICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBzdWJ2YWx1ZSArPSBjb250ZW50XG5cbiAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShFWFBSRVNTSU9OX0lOSVRJQUxfVEFCLCBmdW5jdGlvbihsaW5lKSB7XG4gICAgb2Zmc2V0c1tjdXJyZW50TGluZV0gPSAob2Zmc2V0c1tjdXJyZW50TGluZV0gfHwgMCkgKyBsaW5lLmxlbmd0aFxuICAgIGN1cnJlbnRMaW5lKytcblxuICAgIHJldHVybiAnJ1xuICB9KVxuXG4gIGFkZCA9IGVhdChzdWJ2YWx1ZSlcblxuICBleGl0ID0gc2VsZi5lbnRlckJsb2NrKClcbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVCbG9jayhjb250ZW50LCBub3cpXG4gIGV4aXQoKVxuXG4gIHJldHVybiBhZGQoe1xuICAgIHR5cGU6ICdmb290bm90ZURlZmluaXRpb24nLFxuICAgIGlkZW50aWZpZXI6IG5vcm1hbGl6ZShpZGVudGlmaWVyKSxcbiAgICBsYWJlbDogaWRlbnRpZmllcixcbiAgICBjaGlsZHJlbjogY29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbml0aW9uXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGVmdFNxdWFyZUJyYWNrZXQgPSAnWydcbnZhciByaWdodFNxdWFyZUJyYWNrZXQgPSAnXSdcbnZhciBsZWZ0UGFyZW50aGVzaXMgPSAnKCdcbnZhciByaWdodFBhcmVudGhlc2lzID0gJyknXG52YXIgY29sb24gPSAnOidcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG5cbmZ1bmN0aW9uIGRlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY29tbW9ubWFyayA9IHNlbGYub3B0aW9ucy5jb21tb25tYXJrXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgYmVmb3JlVVJMXG4gIHZhciBiZWZvcmVUaXRsZVxuICB2YXIgcXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgdGVzdFxuICB2YXIgaWRlbnRpZmllclxuICB2YXIgdXJsXG4gIHZhciB0aXRsZVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgYnJlYWtcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoXG4gICAgIXF1ZXVlIHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4KSAhPT0gcmlnaHRTcXVhcmVCcmFja2V0IHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNvbG9uXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWRlbnRpZmllciA9IHF1ZXVlXG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgcmlnaHRTcXVhcmVCcmFja2V0ICsgY29sb25cbiAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBxdWV1ZSA9ICcnXG4gIGJlZm9yZVVSTCA9IHN1YnZhbHVlXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gbGVzc1RoYW4pIHtcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKCFpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gaXNFbmNsb3NlZFVSTENoYXJhY3Rlci5kZWxpbWl0ZXIpIHtcbiAgICAgIHN1YnZhbHVlICs9IGxlc3NUaGFuICsgcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGluZGV4IC09IHF1ZXVlLmxlbmd0aCArIDFcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghaXNVbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB1cmwgPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHRlc3QgPSBudWxsXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gcXVvdGF0aW9uTWFyaykge1xuICAgIHRlc3QgPSBxdW90YXRpb25NYXJrXG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlKSB7XG4gICAgdGVzdCA9IGFwb3N0cm9waGVcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykge1xuICAgIHRlc3QgPSByaWdodFBhcmVudGhlc2lzXG4gIH1cblxuICBpZiAoIXRlc3QpIHtcbiAgICBxdWV1ZSA9ICcnXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgfSBlbHNlIGlmIChxdWV1ZSkge1xuICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGVzdCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCB8fCBjaGFyYWN0ZXIgPT09IHRlc3QpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXVlICs9IGxpbmVGZWVkXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRlc3QpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJlZm9yZVRpdGxlID0gc3VidmFsdWVcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgICB0aXRsZSA9IHF1ZXVlXG4gICAgcXVldWUgPSAnJ1xuICB9IGVsc2Uge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGJlZm9yZVVSTCA9IGVhdChiZWZvcmVVUkwpLnRlc3QoKS5lbmRcbiAgICB1cmwgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh1cmwpLCBiZWZvcmVVUkwsIHtub25UZXJtaW5hdGVkOiBmYWxzZX0pXG5cbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGJlZm9yZVRpdGxlID0gZWF0KGJlZm9yZVRpdGxlKS50ZXN0KCkuZW5kXG4gICAgICB0aXRsZSA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHRpdGxlKSwgYmVmb3JlVGl0bGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2RlZmluaXRpb24nLFxuICAgICAgaWRlbnRpZmllcjogbm9ybWFsaXplKGlkZW50aWZpZXIpLFxuICAgICAgbGFiZWw6IGlkZW50aWZpZXIsXG4gICAgICB0aXRsZTogdGl0bGUgfHwgbnVsbCxcbiAgICAgIHVybDogdXJsXG4gICAgfSlcbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgY2hhcmFjdGVyYCBjYW4gYmUgaW5zaWRlIGFuIGVuY2xvc2VkIFVSSS5cbmZ1bmN0aW9uIGlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSB7XG4gIHJldHVybiAoXG4gICAgY2hhcmFjdGVyICE9PSBncmVhdGVyVGhhbiAmJlxuICAgIGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldFxuICApXG59XG5cbmlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIuZGVsaW1pdGVyID0gZ3JlYXRlclRoYW5cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgY2FuIGJlIGluc2lkZSBhbiB1bmNsb3NlZCBVUkkuXG5mdW5jdGlvbiBpc1VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gKFxuICAgIGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCAmJlxuICAgICF3aGl0ZXNwYWNlKGNoYXJhY3RlcilcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRhYmxlXG5cbnZhciB0YWIgPSAnXFx0J1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGRhc2ggPSAnLSdcbnZhciBjb2xvbiA9ICc6J1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHZlcnRpY2FsQmFyID0gJ3wnXG5cbnZhciBtaW5Db2x1bW5zID0gMVxudmFyIG1pblJvd3MgPSAyXG5cbnZhciBsZWZ0ID0gJ2xlZnQnXG52YXIgY2VudGVyID0gJ2NlbnRlcidcbnZhciByaWdodCA9ICdyaWdodCdcblxuZnVuY3Rpb24gdGFibGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgaW5kZXhcbiAgdmFyIGFsaWdubWVudHNcbiAgdmFyIGFsaWdubWVudFxuICB2YXIgc3VidmFsdWVcbiAgdmFyIHJvd1xuICB2YXIgbGVuZ3RoXG4gIHZhciBsaW5lc1xuICB2YXIgcXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgaGFzRGFzaFxuICB2YXIgYWxpZ25cbiAgdmFyIGNlbGxcbiAgdmFyIHByZWFtYmxlXG4gIHZhciBub3dcbiAgdmFyIHBvc2l0aW9uXG4gIHZhciBsaW5lQ291bnRcbiAgdmFyIGxpbmVcbiAgdmFyIHJvd3NcbiAgdmFyIHRhYmxlXG4gIHZhciBsaW5lSW5kZXhcbiAgdmFyIHBpcGVJbmRleFxuICB2YXIgZmlyc3RcblxuICAvLyBFeGl0IHdoZW4gbm90IGluIGdmbS1tb2RlLlxuICBpZiAoIXNlbGYub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEdldCB0aGUgcm93cy5cbiAgLy8gRGV0ZWN0aW5nIHRhYmxlcyBzb29uIGlzIGhhcmQsIHNvIHRoZXJlIGFyZSBzb21lIGNoZWNrcyBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gaGVyZSwgc3VjaCBhcyB0aGUgbWluaW11bSBudW1iZXIgb2Ygcm93cywgYW5kIGFsbG93ZWQgY2hhcmFjdGVycyBpbiB0aGVcbiAgLy8gYWxpZ25tZW50IHJvdy5cbiAgaW5kZXggPSAwXG4gIGxpbmVDb3VudCA9IDBcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICBsaW5lcyA9IFtdXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbGluZUluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXgpXG4gICAgcGlwZUluZGV4ID0gdmFsdWUuaW5kZXhPZih2ZXJ0aWNhbEJhciwgaW5kZXggKyAxKVxuXG4gICAgaWYgKGxpbmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIGxpbmVJbmRleCA9IHZhbHVlLmxlbmd0aFxuICAgIH1cblxuICAgIGlmIChwaXBlSW5kZXggPT09IC0xIHx8IHBpcGVJbmRleCA+IGxpbmVJbmRleCkge1xuICAgICAgaWYgKGxpbmVDb3VudCA8IG1pblJvd3MpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgbGluZXMucHVzaCh2YWx1ZS5zbGljZShpbmRleCwgbGluZUluZGV4KSlcbiAgICBsaW5lQ291bnQrK1xuICAgIGluZGV4ID0gbGluZUluZGV4ICsgMVxuICB9XG5cbiAgLy8gUGFyc2UgdGhlIGFsaWdubWVudCByb3cuXG4gIHN1YnZhbHVlID0gbGluZXMuam9pbihsaW5lRmVlZClcbiAgYWxpZ25tZW50cyA9IGxpbmVzLnNwbGljZSgxLCAxKVswXSB8fCBbXVxuICBpbmRleCA9IDBcbiAgbGVuZ3RoID0gYWxpZ25tZW50cy5sZW5ndGhcbiAgbGluZUNvdW50LS1cbiAgYWxpZ25tZW50ID0gZmFsc2VcbiAgYWxpZ24gPSBbXVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IGFsaWdubWVudHMuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gdmVydGljYWxCYXIpIHtcbiAgICAgIGhhc0Rhc2ggPSBudWxsXG5cbiAgICAgIGlmIChhbGlnbm1lbnQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChmaXJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxpZ24ucHVzaChhbGlnbm1lbnQpXG4gICAgICAgIGFsaWdubWVudCA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGZpcnN0ID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gZGFzaCkge1xuICAgICAgaGFzRGFzaCA9IHRydWVcbiAgICAgIGFsaWdubWVudCA9IGFsaWdubWVudCB8fCBudWxsXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGNvbG9uKSB7XG4gICAgICBpZiAoYWxpZ25tZW50ID09PSBsZWZ0KSB7XG4gICAgICAgIGFsaWdubWVudCA9IGNlbnRlclxuICAgICAgfSBlbHNlIGlmIChoYXNEYXNoICYmIGFsaWdubWVudCA9PT0gbnVsbCkge1xuICAgICAgICBhbGlnbm1lbnQgPSByaWdodFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxpZ25tZW50ID0gbGVmdFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKGFsaWdubWVudCAhPT0gZmFsc2UpIHtcbiAgICBhbGlnbi5wdXNoKGFsaWdubWVudClcbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiB3aXRob3V0IGVub3VnaCBjb2x1bW5zLlxuICBpZiAoYWxpZ24ubGVuZ3RoIDwgbWluQ29sdW1ucykge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSByb3dzLlxuICBwb3NpdGlvbiA9IC0xXG4gIHJvd3MgPSBbXVxuXG4gIHRhYmxlID0gZWF0KHN1YnZhbHVlKS5yZXNldCh7dHlwZTogJ3RhYmxlJywgYWxpZ246IGFsaWduLCBjaGlsZHJlbjogcm93c30pXG5cbiAgd2hpbGUgKCsrcG9zaXRpb24gPCBsaW5lQ291bnQpIHtcbiAgICBsaW5lID0gbGluZXNbcG9zaXRpb25dXG4gICAgcm93ID0ge3R5cGU6ICd0YWJsZVJvdycsIGNoaWxkcmVuOiBbXX1cblxuICAgIC8vIEVhdCBhIG5ld2xpbmUgY2hhcmFjdGVyIHdoZW4gdGhpcyBpcyBub3QgdGhlIGZpcnN0IHJvdy5cbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGVhdChsaW5lRmVlZClcbiAgICB9XG5cbiAgICAvLyBFYXQgdGhlIHJvdy5cbiAgICBlYXQobGluZSkucmVzZXQocm93LCB0YWJsZSlcblxuICAgIGxlbmd0aCA9IGxpbmUubGVuZ3RoICsgMVxuICAgIGluZGV4ID0gMFxuICAgIHF1ZXVlID0gJydcbiAgICBjZWxsID0gJydcbiAgICBwcmVhbWJsZSA9IHRydWVcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gbGluZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IHRhYiB8fCBjaGFyYWN0ZXIgPT09IHNwYWNlKSB7XG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWF0KGNoYXJhY3RlcilcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gJycgfHwgY2hhcmFjdGVyID09PSB2ZXJ0aWNhbEJhcikge1xuICAgICAgICBpZiAocHJlYW1ibGUpIHtcbiAgICAgICAgICBlYXQoY2hhcmFjdGVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgoY2VsbCB8fCBjaGFyYWN0ZXIpICYmICFwcmVhbWJsZSkge1xuICAgICAgICAgICAgc3VidmFsdWUgPSBjZWxsXG5cbiAgICAgICAgICAgIGlmIChxdWV1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIpIHtcbiAgICAgICAgICAgICAgICBzdWJ2YWx1ZSArPSBxdWV1ZS5zbGljZSgwLCBxdWV1ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIHF1ZXVlID0gcXVldWUuY2hhckF0KHF1ZXVlLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3VidmFsdWUgKz0gcXVldWVcbiAgICAgICAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm93ID0gZWF0Lm5vdygpXG5cbiAgICAgICAgICAgIGVhdChzdWJ2YWx1ZSkoXG4gICAgICAgICAgICAgIHt0eXBlOiAndGFibGVDZWxsJywgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoY2VsbCwgbm93KX0sXG4gICAgICAgICAgICAgIHJvd1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGVhdChxdWV1ZSArIGNoYXJhY3RlcilcblxuICAgICAgICAgIHF1ZXVlID0gJydcbiAgICAgICAgICBjZWxsID0gJydcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHF1ZXVlKSB7XG4gICAgICAgICAgY2VsbCArPSBxdWV1ZVxuICAgICAgICAgIHF1ZXVlID0gJydcbiAgICAgICAgfVxuXG4gICAgICAgIGNlbGwgKz0gY2hhcmFjdGVyXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoICYmIGluZGV4ICE9PSBsZW5ndGggLSAyKSB7XG4gICAgICAgICAgY2VsbCArPSBsaW5lLmNoYXJBdChpbmRleCArIDEpXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByZWFtYmxlID0gZmFsc2VcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICAvLyBFYXQgdGhlIGFsaWdubWVudCByb3cuXG4gICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgZWF0KGxpbmVGZWVkICsgYWxpZ25tZW50cylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciB0cmltVHJhaWxpbmdMaW5lcyA9IHJlcXVpcmUoJ3RyaW0tdHJhaWxpbmctbGluZXMnKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJhZ3JhcGhcblxudmFyIHRhYiA9ICdcXHQnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHNwYWNlID0gJyAnXG5cbnZhciB0YWJTaXplID0gNFxuXG4vLyBUb2tlbmlzZSBwYXJhZ3JhcGguXG5mdW5jdGlvbiBwYXJhZ3JhcGgoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc2V0dGluZ3MgPSBzZWxmLm9wdGlvbnNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZXR0aW5ncy5jb21tb25tYXJrXG4gIHZhciBnZm0gPSBzZXR0aW5ncy5nZm1cbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJydXB0b3JzID0gc2VsZi5pbnRlcnJ1cHRQYXJhZ3JhcGhcbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHNpemVcbiAgdmFyIG5vd1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIC8vIEVhdCBldmVyeXRoaW5nIGlmIHRoZXJl4oCZcyBubyBmb2xsb3dpbmcgbmV3bGluZS5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICBpbmRleCA9IGxlbmd0aFxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICAvLyBTdG9wIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyBORVdMSU5FLlxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gSW4gY29tbW9ubWFyay1tb2RlLCBmb2xsb3dpbmcgaW5kZW50ZWQgbGluZXMgYXJlIHBhcnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICBpZiAoY29tbW9ubWFyaykge1xuICAgICAgc2l6ZSA9IDBcbiAgICAgIHBvc2l0aW9uID0gaW5kZXggKyAxXG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQocG9zaXRpb24pXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgICAgc2l6ZSA9IHRhYlNpemVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgICBzaXplKytcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb24rK1xuICAgICAgfVxuXG4gICAgICBpZiAoc2l6ZSA+PSB0YWJTaXplICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleCArIDEpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZShpbmRleCArIDEpXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZm9sbG93aW5nIGNvZGUgY29udGFpbnMgYSBwb3NzaWJsZSBibG9jay5cbiAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgc3VidmFsdWUsIHRydWVdKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICAvLyBCcmVhayBpZiB0aGUgZm9sbG93aW5nIGxpbmUgc3RhcnRzIGEgbGlzdCwgd2hlbiBhbHJlYWR5IGluIGEgbGlzdCwgb3JcbiAgICAvLyB3aGVuIGluIGNvbW1vbm1hcmssIG9yIHdoZW4gaW4gZ2ZtIG1vZGUgYW5kIHRoZSBidWxsZXQgaXMgKm5vdCogbnVtZXJpYy5cbiAgICBpZiAoXG4gICAgICB0b2tlbml6ZXJzLmxpc3QuY2FsbChzZWxmLCBlYXQsIHN1YnZhbHVlLCB0cnVlKSAmJlxuICAgICAgKHNlbGYuaW5MaXN0IHx8XG4gICAgICAgIGNvbW1vbm1hcmsgfHxcbiAgICAgICAgKGdmbSAmJiAhZGVjaW1hbCh0cmltLmxlZnQoc3VidmFsdWUpLmNoYXJBdCgwKSkpKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBwb3NpdGlvbiA9IGluZGV4XG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleCArIDEpXG5cbiAgICBpZiAoaW5kZXggIT09IC0xICYmIHRyaW0odmFsdWUuc2xpY2UocG9zaXRpb24sIGluZGV4KSkgPT09ICcnKSB7XG4gICAgICBpbmRleCA9IHBvc2l0aW9uXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgaWYgKHRyaW0oc3VidmFsdWUpID09PSAnJykge1xuICAgIGVhdChzdWJ2YWx1ZSlcblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIHN1YnZhbHVlID0gdHJpbVRyYWlsaW5nTGluZXMoc3VidmFsdWUpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKHN1YnZhbHVlLCBub3cpXG4gIH0pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ1xcXFwnLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9lc2NhcGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZVxuZXNjYXBlLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuZnVuY3Rpb24gZXNjYXBlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgbm9kZVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgPT09IGJhY2tzbGFzaCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgxKVxuXG4gICAgaWYgKHNlbGYuZXNjYXBlLmluZGV4T2YoY2hhcmFjdGVyKSAhPT0gLTEpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgbm9kZSA9IHt0eXBlOiAnYnJlYWsnfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IHt0eXBlOiAndGV4dCcsIHZhbHVlOiBjaGFyYWN0ZXJ9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlYXQoYmFja3NsYXNoICsgY2hhcmFjdGVyKShub2RlKVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCc8JywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGRlY29kZSA9IHJlcXVpcmUoJ3BhcnNlLWVudGl0aWVzJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcblxubW9kdWxlLmV4cG9ydHMgPSBhdXRvTGlua1xuYXV0b0xpbmsubG9jYXRvciA9IGxvY2F0ZVxuYXV0b0xpbmsubm90SW5MaW5rID0gdHJ1ZVxuXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xudmFyIGF0U2lnbiA9ICdAJ1xudmFyIHNsYXNoID0gJy8nXG52YXIgbWFpbHRvID0gJ21haWx0bzonXG52YXIgbWFpbHRvTGVuZ3RoID0gbWFpbHRvLmxlbmd0aFxuXG5mdW5jdGlvbiBhdXRvTGluayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgaGFzQXRDaGFyYWN0ZXIgPSBmYWxzZVxuICB2YXIgbGluayA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG5vd1xuICB2YXIgY29udGVudFxuICB2YXIgdG9rZW5pemVyc1xuICB2YXIgZXhpdFxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgIT09IGxlc3NUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG4gIHN1YnZhbHVlID0gbGVzc1RoYW5cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICB3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gYXRTaWduIHx8XG4gICAgICAoY2hhcmFjdGVyID09PSAnOicgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IHNsYXNoKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsaW5rICs9IHF1ZXVlXG4gIHF1ZXVlID0gJydcblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIGxpbmsgKz0gY2hhcmFjdGVyXG4gIGluZGV4KytcblxuICBpZiAoY2hhcmFjdGVyID09PSBhdFNpZ24pIHtcbiAgICBoYXNBdENoYXJhY3RlciA9IHRydWVcbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhcmFjdGVyICE9PSAnOicgfHwgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IHNsYXNoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsaW5rICs9IHNsYXNoXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoIXF1ZXVlIHx8IGNoYXJhY3RlciAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBsaW5rICs9IHF1ZXVlXG4gIGNvbnRlbnQgPSBsaW5rXG4gIHN1YnZhbHVlICs9IGxpbmsgKyBjaGFyYWN0ZXJcbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4rK1xuICBub3cub2Zmc2V0KytcblxuICBpZiAoaGFzQXRDaGFyYWN0ZXIpIHtcbiAgICBpZiAobGluay5zbGljZSgwLCBtYWlsdG9MZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IG1haWx0bykge1xuICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UobWFpbHRvTGVuZ3RoKVxuICAgICAgbm93LmNvbHVtbiArPSBtYWlsdG9MZW5ndGhcbiAgICAgIG5vdy5vZmZzZXQgKz0gbWFpbHRvTGVuZ3RoXG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmsgPSBtYWlsdG8gKyBsaW5rXG4gICAgfVxuICB9XG5cbiAgLy8gVGVtcG9yYXJpbHkgcmVtb3ZlIGFsbCB0b2tlbml6ZXJzIGV4Y2VwdCB0ZXh0IGluIGF1dG9saW5rcy5cbiAgdG9rZW5pemVycyA9IHNlbGYuaW5saW5lVG9rZW5pemVyc1xuICBzZWxmLmlubGluZVRva2VuaXplcnMgPSB7dGV4dDogdG9rZW5pemVycy50ZXh0fVxuXG4gIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG5cbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShsaW5rLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KSxcbiAgICBjaGlsZHJlbjogY29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbnZhciBwcm90b2NvbHMgPSBbJ2h0dHBzOi8vJywgJ2h0dHA6Ly8nLCAnbWFpbHRvOiddXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBsZW5ndGggPSBwcm90b2NvbHMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBtaW4gPSAtMVxuICB2YXIgcG9zaXRpb25cblxuICBpZiAoIXRoaXMub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSB2YWx1ZS5pbmRleE9mKHByb3RvY29sc1tpbmRleF0sIGZyb21JbmRleClcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgKHBvc2l0aW9uIDwgbWluIHx8IG1pbiA9PT0gLTEpKSB7XG4gICAgICBtaW4gPSBwb3NpdGlvblxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW5cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZGVjb2RlID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3VybCcpXG5cbm1vZHVsZS5leHBvcnRzID0gdXJsXG51cmwubG9jYXRvciA9IGxvY2F0ZVxudXJsLm5vdEluTGluayA9IHRydWVcblxudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGNvbW1hID0gJywnXG52YXIgZG90ID0gJy4nXG52YXIgY29sb24gPSAnOidcbnZhciBzZW1pY29sb24gPSAnOydcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGF0U2lnbiA9ICdAJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG5cbnZhciBodHRwID0gJ2h0dHA6Ly8nXG52YXIgaHR0cHMgPSAnaHR0cHM6Ly8nXG52YXIgbWFpbHRvID0gJ21haWx0bzonXG5cbnZhciBwcm90b2NvbHMgPSBbaHR0cCwgaHR0cHMsIG1haWx0b11cblxudmFyIHByb3RvY29sc0xlbmd0aCA9IHByb3RvY29scy5sZW5ndGhcblxuZnVuY3Rpb24gdXJsKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBjb250ZW50XG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIGluZGV4XG4gIHZhciBwb3NpdGlvblxuICB2YXIgcHJvdG9jb2xcbiAgdmFyIG1hdGNoXG4gIHZhciBsZW5ndGhcbiAgdmFyIHF1ZXVlXG4gIHZhciBwYXJlbkNvdW50XG4gIHZhciBuZXh0Q2hhcmFjdGVyXG4gIHZhciB0b2tlbml6ZXJzXG4gIHZhciBleGl0XG5cbiAgaWYgKCFzZWxmLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSA9ICcnXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IHByb3RvY29sc0xlbmd0aCkge1xuICAgIHByb3RvY29sID0gcHJvdG9jb2xzW2luZGV4XVxuICAgIG1hdGNoID0gdmFsdWUuc2xpY2UoMCwgcHJvdG9jb2wubGVuZ3RoKVxuXG4gICAgaWYgKG1hdGNoLnRvTG93ZXJDYXNlKCkgPT09IHByb3RvY29sKSB7XG4gICAgICBzdWJ2YWx1ZSA9IG1hdGNoXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICghc3VidmFsdWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4ID0gc3VidmFsdWUubGVuZ3RoXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBxdWV1ZSA9ICcnXG4gIHBhcmVuQ291bnQgPSAwXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gZG90IHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGNvbW1hIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGNvbG9uIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IHNlbWljb2xvbiB8fFxuICAgICAgY2hhcmFjdGVyID09PSBxdW90YXRpb25NYXJrIHx8XG4gICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcyB8fFxuICAgICAgY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXRcbiAgICApIHtcbiAgICAgIG5leHRDaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKVxuXG4gICAgICBpZiAoIW5leHRDaGFyYWN0ZXIgfHwgd2hpdGVzcGFjZShuZXh0Q2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcyB8fCBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBwYXJlbkNvdW50KytcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzIHx8IGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBwYXJlbkNvdW50LS1cblxuICAgICAgaWYgKHBhcmVuQ291bnQgPCAwKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKCFxdWV1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gcXVldWVcbiAgY29udGVudCA9IHN1YnZhbHVlXG5cbiAgaWYgKHByb3RvY29sID09PSBtYWlsdG8pIHtcbiAgICBwb3NpdGlvbiA9IHF1ZXVlLmluZGV4T2YoYXRTaWduKVxuXG4gICAgaWYgKHBvc2l0aW9uID09PSAtMSB8fCBwb3NpdGlvbiA9PT0gbGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UobWFpbHRvLmxlbmd0aClcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuXG4gIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiB1cmwuXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnNcbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0ge3RleHQ6IHRva2VuaXplcnMudGV4dH1cblxuICBjb250ZW50ID0gc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBlYXQubm93KCkpXG5cbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0gdG9rZW5pemVyc1xuICBleGl0KClcblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7XG4gICAgdHlwZTogJ2xpbmsnLFxuICAgIHRpdGxlOiBudWxsLFxuICAgIHVybDogZGVjb2RlKHN1YnZhbHVlLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KSxcbiAgICBjaGlsZHJlbjogY29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBhbHBoYWJldGljYWwgPSByZXF1aXJlKCdpcy1hbHBoYWJldGljYWwnKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS90YWcnKVxudmFyIHRhZyA9IHJlcXVpcmUoJy4uL3V0aWwvaHRtbCcpLnRhZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlubGluZUhUTUxcbmlubGluZUhUTUwubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBxdWVzdGlvbk1hcmsgPSAnPydcbnZhciBleGNsYW1hdGlvbk1hcmsgPSAnISdcbnZhciBzbGFzaCA9ICcvJ1xuXG52YXIgaHRtbExpbmtPcGVuRXhwcmVzc2lvbiA9IC9ePGEgL2lcbnZhciBodG1sTGlua0Nsb3NlRXhwcmVzc2lvbiA9IC9ePFxcL2E+L2lcblxuZnVuY3Rpb24gaW5saW5lSFRNTChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgc3VidmFsdWVcblxuICBpZiAodmFsdWUuY2hhckF0KDApICE9PSBsZXNzVGhhbiB8fCBsZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMSlcblxuICBpZiAoXG4gICAgIWFscGhhYmV0aWNhbChjaGFyYWN0ZXIpICYmXG4gICAgY2hhcmFjdGVyICE9PSBxdWVzdGlvbk1hcmsgJiZcbiAgICBjaGFyYWN0ZXIgIT09IGV4Y2xhbWF0aW9uTWFyayAmJlxuICAgIGNoYXJhY3RlciAhPT0gc2xhc2hcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLm1hdGNoKHRhZylcblxuICBpZiAoIXN1YnZhbHVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBub3QgdXNlZCB5ZXQuICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3VidmFsdWUgPSBzdWJ2YWx1ZVswXVxuXG4gIGlmICghc2VsZi5pbkxpbmsgJiYgaHRtbExpbmtPcGVuRXhwcmVzc2lvbi50ZXN0KHN1YnZhbHVlKSkge1xuICAgIHNlbGYuaW5MaW5rID0gdHJ1ZVxuICB9IGVsc2UgaWYgKHNlbGYuaW5MaW5rICYmIGh0bWxMaW5rQ2xvc2VFeHByZXNzaW9uLnRlc3Qoc3VidmFsdWUpKSB7XG4gICAgc2VsZi5pbkxpbmsgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgbGluayA9IHZhbHVlLmluZGV4T2YoJ1snLCBmcm9tSW5kZXgpXG4gIHZhciBpbWFnZSA9IHZhbHVlLmluZGV4T2YoJyFbJywgZnJvbUluZGV4KVxuXG4gIGlmIChpbWFnZSA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGlua1xuICB9XG5cbiAgLy8gTGluayBjYW4gbmV2ZXIgYmUgYC0xYCBpZiBhbiBpbWFnZSBpcyBmb3VuZCwgc28gd2UgZG9u4oCZdCBuZWVkIHRvIGNoZWNrXG4gIC8vIGZvciB0aGF0IDopXG4gIHJldHVybiBsaW5rIDwgaW1hZ2UgPyBsaW5rIDogaW1hZ2Vcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvbGluaycpXG5cbm1vZHVsZS5leHBvcnRzID0gbGlua1xubGluay5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG52YXIgcXVvdGF0aW9uTWFyayA9ICdcIidcbnZhciBhcG9zdHJvcGhlID0gXCInXCJcbnZhciBsZWZ0UGFyZW50aGVzaXMgPSAnKCdcbnZhciByaWdodFBhcmVudGhlc2lzID0gJyknXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG52YXIgZ3JhdmVBY2NlbnQgPSAnYCdcblxuZnVuY3Rpb24gbGluayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgZ2ZtID0gc2VsZi5vcHRpb25zLmdmbVxuICB2YXIgY2xvc2VkXG4gIHZhciBjb3VudFxuICB2YXIgb3BlbmluZ1xuICB2YXIgYmVmb3JlVVJMXG4gIHZhciBiZWZvcmVUaXRsZVxuICB2YXIgc3VicXVldWVcbiAgdmFyIGhhc01hcmtlclxuICB2YXIgaXNJbWFnZVxuICB2YXIgY29udGVudFxuICB2YXIgbWFya2VyXG4gIHZhciBsZW5ndGhcbiAgdmFyIHRpdGxlXG4gIHZhciBkZXB0aFxuICB2YXIgcXVldWVcbiAgdmFyIHVybFxuICB2YXIgbm93XG4gIHZhciBleGl0XG4gIHZhciBub2RlXG5cbiAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhpcyBpcyBhbiBpbWFnZS5cbiAgaWYgKGNoYXJhY3RlciA9PT0gZXhjbGFtYXRpb25NYXJrKSB7XG4gICAgaXNJbWFnZSA9IHRydWVcbiAgICBzdWJ2YWx1ZSA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgLy8gRWF0IHRoZSBvcGVuaW5nLlxuICBpZiAoY2hhcmFjdGVyICE9PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRXhpdCB3aGVuIHRoaXMgaXMgYSBsaW5rIGFuZCB3ZeKAmXJlIGFscmVhZHkgaW5zaWRlIGEgbGluay5cbiAgaWYgKCFpc0ltYWdlICYmIHNlbGYuaW5MaW5rKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuICBpbmRleCsrXG5cbiAgLy8gRWF0IHRoZSBjb250ZW50LlxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgbm93ID0gZWF0Lm5vdygpXG4gIGRlcHRoID0gMFxuXG4gIG5vdy5jb2x1bW4gKz0gaW5kZXhcbiAgbm93Lm9mZnNldCArPSBpbmRleFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgICBzdWJxdWV1ZSA9IGNoYXJhY3RlclxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gZ3JhdmVBY2NlbnQpIHtcbiAgICAgIC8vIElubGluZS1jb2RlIGluIGxpbmsgY29udGVudC5cbiAgICAgIGNvdW50ID0gMVxuXG4gICAgICB3aGlsZSAodmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNvdW50KytcbiAgICAgIH1cblxuICAgICAgaWYgKCFvcGVuaW5nKSB7XG4gICAgICAgIG9wZW5pbmcgPSBjb3VudFxuICAgICAgfSBlbHNlIGlmIChjb3VudCA+PSBvcGVuaW5nKSB7XG4gICAgICAgIG9wZW5pbmcgPSAwXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgLy8gQWxsb3cgYnJhY2tldHMgdG8gYmUgZXNjYXBlZC5cbiAgICAgIGluZGV4KytcbiAgICAgIHN1YnF1ZXVlICs9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgICB9IGVsc2UgaWYgKCghb3BlbmluZyB8fCBnZm0pICYmIGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIC8vIEluIEdGTSBtb2RlLCBicmFja2V0cyBpbiBjb2RlIHN0aWxsIGNvdW50LiAgSW4gYWxsIG90aGVyIG1vZGVzLFxuICAgICAgLy8gdGhleSBkb27igJl0LlxuICAgICAgZGVwdGgrK1xuICAgIH0gZWxzZSBpZiAoKCFvcGVuaW5nIHx8IGdmbSkgJiYgY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGlmIChkZXB0aCkge1xuICAgICAgICBkZXB0aC0tXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBbGxvdyB3aGl0ZS1zcGFjZSBiZXR3ZWVuIGNvbnRlbnQgYW5kIHVybCBpbiBHRk0gbW9kZS5cbiAgICAgICAgaWYgKCFwZWRhbnRpYykge1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4ICsgMSlcblxuICAgICAgICAgICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VicXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBsZWZ0UGFyZW50aGVzaXMpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGxlZnRQYXJlbnRoZXNpc1xuICAgICAgICBjbG9zZWQgPSB0cnVlXG4gICAgICAgIGluZGV4KytcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgc3VicXVldWUgPSAnJ1xuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCB0aGUgY29udGVudCBjbG9zaW5nLlxuICBpZiAoIWNsb3NlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29udGVudCA9IHF1ZXVlXG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgc3VicXVldWVcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB3aGl0ZS1zcGFjZS5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgLy8gRWF0IHRoZSBVUkwuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgcXVldWUgPSAnJ1xuICBiZWZvcmVVUkwgPSBzdWJ2YWx1ZVxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgaW5kZXgrK1xuICAgIGJlZm9yZVVSTCArPSBsZXNzVGhhblxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBncmVhdGVyVGhhbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gbGVzc1RoYW4gKyBxdWV1ZSArIGdyZWF0ZXJUaGFuXG4gICAgdXJsID0gcXVldWVcbiAgICBpbmRleCsrXG4gIH0gZWxzZSB7XG4gICAgY2hhcmFjdGVyID0gbnVsbFxuICAgIHN1YnF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoXG4gICAgICAgIHN1YnF1ZXVlICYmXG4gICAgICAgIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmsgfHxcbiAgICAgICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgICAgICAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykpXG4gICAgICApIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICBpZiAoIXBlZGFudGljKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgZGVwdGgrK1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXB0aC0tXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgdXJsID0gcXVldWVcbiAgICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICB9XG5cbiAgLy8gRWF0IHdoaXRlLXNwYWNlLlxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBzdWJ2YWx1ZSArPSBxdWV1ZVxuXG4gIC8vIEVhdCB0aGUgdGl0bGUuXG4gIGlmIChcbiAgICBxdWV1ZSAmJlxuICAgIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmsgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gYXBvc3Ryb3BoZSB8fFxuICAgICAgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpKVxuICApIHtcbiAgICBpbmRleCsrXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgcXVldWUgPSAnJ1xuICAgIG1hcmtlciA9IGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzID8gcmlnaHRQYXJlbnRoZXNpcyA6IGNoYXJhY3RlclxuICAgIGJlZm9yZVRpdGxlID0gc3VidmFsdWVcblxuICAgIC8vIEluIGNvbW1vbm1hcmstbW9kZSwgdGhpbmdzIGFyZSBwcmV0dHkgZWFzeTogdGhlIG1hcmtlciBjYW5ub3Qgb2NjdXJcbiAgICAvLyBpbnNpZGUgdGhlIHRpdGxlLiAgTm9uLWNvbW1vbm1hcmsgZG9lcywgaG93ZXZlciwgc3VwcG9ydCBuZXN0ZWRcbiAgICAvLyBkZWxpbWl0ZXJzLlxuICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlcikge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgICAgICBxdWV1ZSArPSBiYWNrc2xhc2hcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aXRsZSA9IHF1ZXVlXG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnF1ZXVlID0gJydcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBpZiAoaGFzTWFya2VyKSB7XG4gICAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZVxuICAgICAgICAgICAgc3VicXVldWUgPSAnJ1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGhhc01hcmtlciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmICghaGFzTWFya2VyKSB7XG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBtYXJrZXIgKyBzdWJxdWV1ZVxuICAgICAgICAgIHRpdGxlID0gcXVldWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1ZXVlICs9IG1hcmtlciArIHN1YnF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICAgICAgc3VicXVldWUgPSAnJ1xuICAgICAgICAgIGhhc01hcmtlciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBzdWJ2YWx1ZSArPSByaWdodFBhcmVudGhlc2lzXG5cbiAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgZWF0KGJlZm9yZVVSTCkudGVzdCgpLmVuZCwge1xuICAgIG5vblRlcm1pbmF0ZWQ6IGZhbHNlXG4gIH0pXG5cbiAgaWYgKHRpdGxlKSB7XG4gICAgYmVmb3JlVGl0bGUgPSBlYXQoYmVmb3JlVGl0bGUpLnRlc3QoKS5lbmRcbiAgICB0aXRsZSA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHRpdGxlKSwgYmVmb3JlVGl0bGUpXG4gIH1cblxuICBub2RlID0ge1xuICAgIHR5cGU6IGlzSW1hZ2UgPyAnaW1hZ2UnIDogJ2xpbmsnLFxuICAgIHRpdGxlOiB0aXRsZSB8fCBudWxsLFxuICAgIHVybDogdXJsXG4gIH1cblxuICBpZiAoaXNJbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbFxuICB9IGVsc2Uge1xuICAgIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG4gICAgbm9kZS5jaGlsZHJlbiA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICAgIGV4aXQoKVxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkobm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvbGluaycpXG52YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnLi4vdXRpbC9ub3JtYWxpemUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZmVyZW5jZVxucmVmZXJlbmNlLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxpbmsgPSAnbGluaydcbnZhciBpbWFnZSA9ICdpbWFnZSdcbnZhciBmb290bm90ZSA9ICdmb290bm90ZSdcbnZhciBzaG9ydGN1dCA9ICdzaG9ydGN1dCdcbnZhciBjb2xsYXBzZWQgPSAnY29sbGFwc2VkJ1xudmFyIGZ1bGwgPSAnZnVsbCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG52YXIgY2FyZXQgPSAnXidcblxuZnVuY3Rpb24gcmVmZXJlbmNlKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGNvbW1vbm1hcmsgPSBzZWxmLm9wdGlvbnMuY29tbW9ubWFya1xuICB2YXIgZm9vdG5vdGVzID0gc2VsZi5vcHRpb25zLmZvb3Rub3Rlc1xuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW50cm8gPSAnJ1xuICB2YXIgdHlwZSA9IGxpbmtcbiAgdmFyIHJlZmVyZW5jZVR5cGUgPSBzaG9ydGN1dFxuICB2YXIgY29udGVudFxuICB2YXIgaWRlbnRpZmllclxuICB2YXIgbm93XG4gIHZhciBub2RlXG4gIHZhciBleGl0XG4gIHZhciBxdWV1ZVxuICB2YXIgYnJhY2tldGVkXG4gIHZhciBkZXB0aFxuXG4gIC8vIENoZWNrIHdoZXRoZXIgd2XigJlyZSBlYXRpbmcgYW4gaW1hZ2UuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGV4Y2xhbWF0aW9uTWFyaykge1xuICAgIHR5cGUgPSBpbWFnZVxuICAgIGludHJvID0gY2hhcmFjdGVyXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gIH1cblxuICBpZiAoY2hhcmFjdGVyICE9PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBpbnRybyArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIC8vIENoZWNrIHdoZXRoZXIgd2XigJlyZSBlYXRpbmcgYSBmb290bm90ZS5cbiAgaWYgKGZvb3Rub3RlcyAmJiB2YWx1ZS5jaGFyQXQoaW5kZXgpID09PSBjYXJldCkge1xuICAgIC8vIEV4aXQgaWYgYCFbXmAgaXMgZm91bmQsIHNvIHRoZSBgIWAgd2lsbCBiZSBzZWVuIGFzIHRleHQgYWZ0ZXIgdGhpcyxcbiAgICAvLyBhbmQgd2XigJlsbCBlbnRlciB0aGlzIGZ1bmN0aW9uIGFnYWluIHdoZW4gYFteYCBpcyBmb3VuZC5cbiAgICBpZiAodHlwZSA9PT0gaW1hZ2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGludHJvICs9IGNhcmV0XG4gICAgaW5kZXgrK1xuICAgIHR5cGUgPSBmb290bm90ZVxuICB9XG5cbiAgLy8gRWF0IHRoZSB0ZXh0LlxuICBkZXB0aCA9IDBcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgYnJhY2tldGVkID0gdHJ1ZVxuICAgICAgZGVwdGgrK1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGlmICghZGVwdGgpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVwdGgtLVxuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBzdWJ2YWx1ZSA9IHF1ZXVlXG4gIGNvbnRlbnQgPSBxdWV1ZVxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG4gIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICBxdWV1ZSA9ICcnXG5cbiAgaWYgKCFjb21tb25tYXJrKSB7XG4gICAgLy8gVGhlIG9yaWdpbmFsIG1hcmtkb3duIHN5bnRheCBkZWZpbml0aW9uIGV4cGxpY2l0bHkgYWxsb3dzIGZvciB3aGl0ZXNwYWNlXG4gICAgLy8gYmV0d2VlbiB0aGUgbGluayB0ZXh0IGFuZCBsaW5rIGxhYmVsOyBjb21tb25tYXJrIGRlcGFydHMgZnJvbSB0aGlzLCBpblxuICAgIC8vIHBhcnQgdG8gaW1wcm92ZSBzdXBwb3J0IGZvciBzaG9ydGN1dCByZWZlcmVuY2UgbGlua3NcbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIC8vIElubGluZSBmb290bm90ZXMgY2Fubm90IGhhdmUgYSBsYWJlbC5cbiAgLy8gSWYgZm9vdG5vdGVzIGFyZSBlbmFibGVkLCBsaW5rIGxhYmVscyBjYW5ub3Qgc3RhcnQgd2l0aCBhIGNhcmV0LlxuICBpZiAoXG4gICAgdHlwZSAhPT0gZm9vdG5vdGUgJiZcbiAgICBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0ICYmXG4gICAgKCFmb290bm90ZXMgfHwgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNhcmV0KVxuICApIHtcbiAgICBpZGVudGlmaWVyID0gJydcbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQgfHwgY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgIGlkZW50aWZpZXIgKz0gYmFja3NsYXNoXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgfVxuXG4gICAgICBpZGVudGlmaWVyICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcmVmZXJlbmNlVHlwZSA9IGlkZW50aWZpZXIgPyBmdWxsIDogY29sbGFwc2VkXG4gICAgICBxdWV1ZSArPSBpZGVudGlmaWVyICsgY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGlkZW50aWZpZXIgPSAnJ1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgcXVldWUgPSAnJ1xuICB9IGVsc2Uge1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWRlbnRpZmllciA9IGNvbnRlbnRcbiAgfVxuXG4gIC8vIEJyYWNrZXRzIGNhbm5vdCBiZSBpbnNpZGUgdGhlIGlkZW50aWZpZXIuXG4gIGlmIChyZWZlcmVuY2VUeXBlICE9PSBmdWxsICYmIGJyYWNrZXRlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSBpbnRybyArIHN1YnZhbHVlXG5cbiAgaWYgKHR5cGUgPT09IGxpbmsgJiYgc2VsZi5pbkxpbmspIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICh0eXBlID09PSBmb290bm90ZSAmJiBjb250ZW50LmluZGV4T2Yoc3BhY2UpICE9PSAtMSkge1xuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6IGZvb3Rub3RlLFxuICAgICAgY2hpbGRyZW46IHRoaXMudG9rZW5pemVJbmxpbmUoY29udGVudCwgZWF0Lm5vdygpKVxuICAgIH0pXG4gIH1cblxuICBub3cgPSBlYXQubm93KClcbiAgbm93LmNvbHVtbiArPSBpbnRyby5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBpbnRyby5sZW5ndGhcbiAgaWRlbnRpZmllciA9IHJlZmVyZW5jZVR5cGUgPT09IGZ1bGwgPyBpZGVudGlmaWVyIDogY29udGVudFxuXG4gIG5vZGUgPSB7XG4gICAgdHlwZTogdHlwZSArICdSZWZlcmVuY2UnLFxuICAgIGlkZW50aWZpZXI6IG5vcm1hbGl6ZShpZGVudGlmaWVyKSxcbiAgICBsYWJlbDogaWRlbnRpZmllclxuICB9XG5cbiAgaWYgKHR5cGUgPT09IGxpbmsgfHwgdHlwZSA9PT0gaW1hZ2UpIHtcbiAgICBub2RlLnJlZmVyZW5jZVR5cGUgPSByZWZlcmVuY2VUeXBlXG4gIH1cblxuICBpZiAodHlwZSA9PT0gbGluaykge1xuICAgIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG4gICAgbm9kZS5jaGlsZHJlbiA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICAgIGV4aXQoKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IGltYWdlKSB7XG4gICAgbm9kZS5hbHQgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZShjb250ZW50KSwgbm93KSB8fCBudWxsXG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKShub2RlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBhc3RlcmlzayA9IHZhbHVlLmluZGV4T2YoJyoqJywgZnJvbUluZGV4KVxuICB2YXIgdW5kZXJzY29yZSA9IHZhbHVlLmluZGV4T2YoJ19fJywgZnJvbUluZGV4KVxuXG4gIGlmICh1bmRlcnNjb3JlID09PSAtMSkge1xuICAgIHJldHVybiBhc3Rlcmlza1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlXG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRyaW0gPSByZXF1aXJlKCd0cmltJylcbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9zdHJvbmcnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cm9uZ1xuc3Ryb25nLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGFzdGVyaXNrID0gJyonXG52YXIgdW5kZXJzY29yZSA9ICdfJ1xuXG5mdW5jdGlvbiBzdHJvbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBub3dcbiAgdmFyIHBlZGFudGljXG4gIHZhciBtYXJrZXJcbiAgdmFyIHF1ZXVlXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbGVuZ3RoXG4gIHZhciBwcmV2XG5cbiAgaWYgKFxuICAgIChjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZSkgfHxcbiAgICB2YWx1ZS5jaGFyQXQoKytpbmRleCkgIT09IGNoYXJhY3RlclxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBzdWJ2YWx1ZSA9IG1hcmtlciArIG1hcmtlclxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgaW5kZXgrK1xuICBxdWV1ZSA9ICcnXG4gIGNoYXJhY3RlciA9ICcnXG5cbiAgaWYgKHBlZGFudGljICYmIHdoaXRlc3BhY2UodmFsdWUuY2hhckF0KGluZGV4KSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIHByZXYgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IG1hcmtlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG1hcmtlciAmJlxuICAgICAgKCFwZWRhbnRpYyB8fCAhd2hpdGVzcGFjZShwcmV2KSlcbiAgICApIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleCArIDIpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgICBpZiAoIXRyaW0ocXVldWUpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgbm93ID0gZWF0Lm5vdygpXG4gICAgICAgIG5vdy5jb2x1bW4gKz0gMlxuICAgICAgICBub3cub2Zmc2V0ICs9IDJcblxuICAgICAgICByZXR1cm4gZWF0KHN1YnZhbHVlICsgcXVldWUgKyBzdWJ2YWx1ZSkoe1xuICAgICAgICAgIHR5cGU6ICdzdHJvbmcnLFxuICAgICAgICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKHF1ZXVlLCBub3cpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdvcmRDaGFyYWN0ZXJcblxudmFyIGZyb21Db2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIHJlID0gL1xcdy9cblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyIGNvZGUgYXQgdGhlIGZpcnN0XG4vLyBjaGFyYWN0ZXIsIGlzIGEgd29yZCBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB3b3JkQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gcmUudGVzdChcbiAgICB0eXBlb2YgY2hhcmFjdGVyID09PSAnbnVtYmVyJyA/IGZyb21Db2RlKGNoYXJhY3RlcikgOiBjaGFyYWN0ZXIuY2hhckF0KDApXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgYXN0ZXJpc2sgPSB2YWx1ZS5pbmRleE9mKCcqJywgZnJvbUluZGV4KVxuICB2YXIgdW5kZXJzY29yZSA9IHZhbHVlLmluZGV4T2YoJ18nLCBmcm9tSW5kZXgpXG5cbiAgaWYgKHVuZGVyc2NvcmUgPT09IC0xKSB7XG4gICAgcmV0dXJuIGFzdGVyaXNrXG4gIH1cblxuICBpZiAoYXN0ZXJpc2sgPT09IC0xKSB7XG4gICAgcmV0dXJuIHVuZGVyc2NvcmVcbiAgfVxuXG4gIHJldHVybiB1bmRlcnNjb3JlIDwgYXN0ZXJpc2sgPyB1bmRlcnNjb3JlIDogYXN0ZXJpc2tcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHdvcmQgPSByZXF1aXJlKCdpcy13b3JkLWNoYXJhY3RlcicpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZW1waGFzaXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGhhc2lzXG5lbXBoYXNpcy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuZnVuY3Rpb24gZW1waGFzaXMoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBub3dcbiAgdmFyIHBlZGFudGljXG4gIHZhciBtYXJrZXJcbiAgdmFyIHF1ZXVlXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbGVuZ3RoXG4gIHZhciBwcmV2XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gYXN0ZXJpc2sgJiYgY2hhcmFjdGVyICE9PSB1bmRlcnNjb3JlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwZWRhbnRpYyA9IHNlbGYub3B0aW9ucy5wZWRhbnRpY1xuICBzdWJ2YWx1ZSA9IGNoYXJhY3RlclxuICBtYXJrZXIgPSBjaGFyYWN0ZXJcbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIGluZGV4KytcbiAgcXVldWUgPSAnJ1xuICBjaGFyYWN0ZXIgPSAnJ1xuXG4gIGlmIChwZWRhbnRpYyAmJiB3aGl0ZXNwYWNlKHZhbHVlLmNoYXJBdChpbmRleCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBwcmV2ID0gY2hhcmFjdGVyXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyICYmICghcGVkYW50aWMgfHwgIXdoaXRlc3BhY2UocHJldikpKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIGlmICghdHJpbShxdWV1ZSkgfHwgcHJldiA9PT0gbWFya2VyKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBlZGFudGljICYmIG1hcmtlciA9PT0gdW5kZXJzY29yZSAmJiB3b3JkKGNoYXJhY3RlcikpIHtcbiAgICAgICAgICBxdWV1ZSArPSBtYXJrZXJcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdyA9IGVhdC5ub3coKVxuICAgICAgICBub3cuY29sdW1uKytcbiAgICAgICAgbm93Lm9mZnNldCsrXG5cbiAgICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlICsgbWFya2VyKSh7XG4gICAgICAgICAgdHlwZTogJ2VtcGhhc2lzJyxcbiAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShxdWV1ZSwgbm93KVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBtYXJrZXJcbiAgICB9XG5cbiAgICBpZiAoIXBlZGFudGljICYmIGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZS5pbmRleE9mKCd+ficsIGZyb21JbmRleClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZGVsZXRlJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpa2V0aHJvdWdoXG5zdHJpa2V0aHJvdWdoLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIHRpbGRlID0gJ34nXG52YXIgZmVuY2UgPSAnfn4nXG5cbmZ1bmN0aW9uIHN0cmlrZXRocm91Z2goZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY2hhcmFjdGVyID0gJydcbiAgdmFyIHByZXZpb3VzID0gJydcbiAgdmFyIHByZWNlZGluZyA9ICcnXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBub3dcblxuICBpZiAoXG4gICAgIXNlbGYub3B0aW9ucy5nZm0gfHxcbiAgICB2YWx1ZS5jaGFyQXQoMCkgIT09IHRpbGRlIHx8XG4gICAgdmFsdWUuY2hhckF0KDEpICE9PSB0aWxkZSB8fFxuICAgIHdoaXRlc3BhY2UodmFsdWUuY2hhckF0KDIpKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4ID0gMVxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gMlxuICBub3cub2Zmc2V0ICs9IDJcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gdGlsZGUgJiZcbiAgICAgIHByZXZpb3VzID09PSB0aWxkZSAmJlxuICAgICAgKCFwcmVjZWRpbmcgfHwgIXdoaXRlc3BhY2UocHJlY2VkaW5nKSlcbiAgICApIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChmZW5jZSArIHN1YnZhbHVlICsgZmVuY2UpKHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKHN1YnZhbHVlLCBub3cpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHByZXZpb3VzXG4gICAgcHJlY2VkaW5nID0gcHJldmlvdXNcbiAgICBwcmV2aW91cyA9IGNoYXJhY3RlclxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ2AnLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9jb2RlLWlubGluZScpXG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZVxuaW5saW5lQ29kZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9IDEwIC8vICAnXFxuJ1xudmFyIHNwYWNlID0gMzIgLy8gJyAnXG52YXIgZ3JhdmVBY2NlbnQgPSA5NiAvLyAgJ2AnXG5cbmZ1bmN0aW9uIGlubGluZUNvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgb3BlbmluZ0ZlbmNlRW5kXG4gIHZhciBjbG9zaW5nRmVuY2VTdGFydFxuICB2YXIgY2xvc2luZ0ZlbmNlRW5kXG4gIHZhciBjb2RlXG4gIHZhciBuZXh0XG4gIHZhciBmb3VuZFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gZ3JhdmVBY2NlbnQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKGluZGV4ID09PSAwIHx8IGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG9wZW5pbmdGZW5jZUVuZCA9IGluZGV4XG4gIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNvZGUgPSBuZXh0XG4gICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuXG4gICAgaWYgKGNvZGUgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbG9zaW5nRmVuY2VTdGFydCA9IGluZGV4XG4gICAgICB9XG5cbiAgICAgIGNsb3NpbmdGZW5jZUVuZCA9IGluZGV4ICsgMVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5leHQgIT09IGdyYXZlQWNjZW50ICYmXG4gICAgICAgIGNsb3NpbmdGZW5jZUVuZCAtIGNsb3NpbmdGZW5jZVN0YXJ0ID09PSBvcGVuaW5nRmVuY2VFbmRcbiAgICAgICkge1xuICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNsb3NpbmdGZW5jZVN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsb3NpbmdGZW5jZVN0YXJ0ID0gdW5kZWZpbmVkXG4gICAgICBjbG9zaW5nRmVuY2VFbmQgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoIWZvdW5kKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbml0aWFsIGFuZCBmaW5hbCBzcGFjZSAob3IgbGluZSBmZWVkKSwgaWZmIHRoZXkgZXhpc3QgYW5kIHRoZXJlXG4gIC8vIGFyZSBub24tc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgY29udGVudC5cbiAgaW5kZXggPSBvcGVuaW5nRmVuY2VFbmRcbiAgbGVuZ3RoID0gY2xvc2luZ0ZlbmNlU3RhcnRcbiAgY29kZSA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpXG4gIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGxlbmd0aCAtIDEpXG4gIGZvdW5kID0gZmFsc2VcblxuICBpZiAoXG4gICAgbGVuZ3RoIC0gaW5kZXggPiAyICYmXG4gICAgKGNvZGUgPT09IHNwYWNlIHx8IGNvZGUgPT09IGxpbmVGZWVkKSAmJlxuICAgIChuZXh0ID09PSBzcGFjZSB8fCBuZXh0ID09PSBsaW5lRmVlZClcbiAgKSB7XG4gICAgaW5kZXgrK1xuICAgIGxlbmd0aC0tXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgICBpZiAoY29kZSAhPT0gc3BhY2UgJiYgY29kZSAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoZm91bmQgPT09IHRydWUpIHtcbiAgICAgIG9wZW5pbmdGZW5jZUVuZCsrXG4gICAgICBjbG9zaW5nRmVuY2VTdGFydC0tXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCBjbG9zaW5nRmVuY2VFbmQpKSh7XG4gICAgdHlwZTogJ2lubGluZUNvZGUnLFxuICAgIHZhbHVlOiB2YWx1ZS5zbGljZShvcGVuaW5nRmVuY2VFbmQsIGNsb3NpbmdGZW5jZVN0YXJ0KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYXRlXG5cbmZ1bmN0aW9uIGxvY2F0ZSh2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IHZhbHVlLmluZGV4T2YoJ1xcbicsIGZyb21JbmRleClcblxuICB3aGlsZSAoaW5kZXggPiBmcm9tSW5kZXgpIHtcbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4IC0gMSkgIT09ICcgJykge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpbmRleC0tXG4gIH1cblxuICByZXR1cm4gaW5kZXhcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2JyZWFrJylcblxubW9kdWxlLmV4cG9ydHMgPSBoYXJkQnJlYWtcbmhhcmRCcmVhay5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBtaW5CcmVha0xlbmd0aCA9IDJcblxuZnVuY3Rpb24gaGFyZEJyZWFrKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBxdWV1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBpZiAoaW5kZXggPCBtaW5CcmVha0xlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcblxuICAgICAgcmV0dXJuIGVhdChxdWV1ZSkoe3R5cGU6ICdicmVhayd9KVxuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dFxuXG5mdW5jdGlvbiB0ZXh0KGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIG1ldGhvZHNcbiAgdmFyIHRva2VuaXplcnNcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBwb3NpdGlvblxuICB2YXIgdG9rZW5pemVyXG4gIHZhciBuYW1lXG4gIHZhciBtaW5cbiAgdmFyIG5vd1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBtZXRob2RzID0gc2VsZi5pbmxpbmVNZXRob2RzXG4gIGxlbmd0aCA9IG1ldGhvZHMubGVuZ3RoXG4gIHRva2VuaXplcnMgPSBzZWxmLmlubGluZVRva2VuaXplcnNcbiAgaW5kZXggPSAtMVxuICBtaW4gPSB2YWx1ZS5sZW5ndGhcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIG5hbWUgPSBtZXRob2RzW2luZGV4XVxuXG4gICAgaWYgKG5hbWUgPT09ICd0ZXh0JyB8fCAhdG9rZW5pemVyc1tuYW1lXSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICB0b2tlbml6ZXIgPSB0b2tlbml6ZXJzW25hbWVdLmxvY2F0b3JcblxuICAgIGlmICghdG9rZW5pemVyKSB7XG4gICAgICBlYXQuZmlsZS5mYWlsKCdNaXNzaW5nIGxvY2F0b3I6IGAnICsgbmFtZSArICdgJylcbiAgICB9XG5cbiAgICBwb3NpdGlvbiA9IHRva2VuaXplci5jYWxsKHNlbGYsIHZhbHVlLCAxKVxuXG4gICAgaWYgKHBvc2l0aW9uICE9PSAtMSAmJiBwb3NpdGlvbiA8IG1pbikge1xuICAgICAgbWluID0gcG9zaXRpb25cbiAgICB9XG4gIH1cblxuICBzdWJ2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIG1pbilcbiAgbm93ID0gZWF0Lm5vdygpXG5cbiAgc2VsZi5kZWNvZGUoc3VidmFsdWUsIG5vdywgaGFuZGxlcilcblxuICBmdW5jdGlvbiBoYW5kbGVyKGNvbnRlbnQsIHBvc2l0aW9uLCBzb3VyY2UpIHtcbiAgICBlYXQoc291cmNlIHx8IGNvbnRlbnQpKHt0eXBlOiAndGV4dCcsIHZhbHVlOiBjb250ZW50fSlcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciB0b2dnbGUgPSByZXF1aXJlKCdzdGF0ZS10b2dnbGUnKVxudmFyIHZmaWxlTG9jYXRpb24gPSByZXF1aXJlKCd2ZmlsZS1sb2NhdGlvbicpXG52YXIgdW5lc2NhcGUgPSByZXF1aXJlKCcuL3VuZXNjYXBlJylcbnZhciBkZWNvZGUgPSByZXF1aXJlKCcuL2RlY29kZScpXG52YXIgdG9rZW5pemVyID0gcmVxdWlyZSgnLi90b2tlbml6ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlclxuXG5mdW5jdGlvbiBQYXJzZXIoZG9jLCBmaWxlKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGVcbiAgdGhpcy5vZmZzZXQgPSB7fVxuICB0aGlzLm9wdGlvbnMgPSB4dGVuZCh0aGlzLm9wdGlvbnMpXG4gIHRoaXMuc2V0T3B0aW9ucyh7fSlcblxuICB0aGlzLmluTGlzdCA9IGZhbHNlXG4gIHRoaXMuaW5CbG9jayA9IGZhbHNlXG4gIHRoaXMuaW5MaW5rID0gZmFsc2VcbiAgdGhpcy5hdFN0YXJ0ID0gdHJ1ZVxuXG4gIHRoaXMudG9PZmZzZXQgPSB2ZmlsZUxvY2F0aW9uKGZpbGUpLnRvT2Zmc2V0XG4gIHRoaXMudW5lc2NhcGUgPSB1bmVzY2FwZSh0aGlzLCAnZXNjYXBlJylcbiAgdGhpcy5kZWNvZGUgPSBkZWNvZGUodGhpcylcbn1cblxudmFyIHByb3RvID0gUGFyc2VyLnByb3RvdHlwZVxuXG4vLyBFeHBvc2UgY29yZS5cbnByb3RvLnNldE9wdGlvbnMgPSByZXF1aXJlKCcuL3NldC1vcHRpb25zJylcbnByb3RvLnBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5cbi8vIEV4cG9zZSBgZGVmYXVsdHNgLlxucHJvdG8ub3B0aW9ucyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKVxuXG4vLyBFbnRlciBhbmQgZXhpdCBoZWxwZXJzLlxucHJvdG8uZXhpdFN0YXJ0ID0gdG9nZ2xlKCdhdFN0YXJ0JywgdHJ1ZSlcbnByb3RvLmVudGVyTGlzdCA9IHRvZ2dsZSgnaW5MaXN0JywgZmFsc2UpXG5wcm90by5lbnRlckxpbmsgPSB0b2dnbGUoJ2luTGluaycsIGZhbHNlKVxucHJvdG8uZW50ZXJCbG9jayA9IHRvZ2dsZSgnaW5CbG9jaycsIGZhbHNlKVxuXG4vLyBOb2RlcyB0aGF0IGNhbiBpbnRlcnVwdCBhIHBhcmFncmFwaDpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gQSBwYXJhZ3JhcGgsIGZvbGxvd2VkIGJ5IGEgdGhlbWF0aWMgYnJlYWsuXG4vLyBfX19cbi8vIGBgYFxuLy9cbi8vIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgdGhlbWF0aWMgYnJlYWsg4oCcaW50ZXJ1cHRz4oCdIHRoZSBwYXJhZ3JhcGguXG5wcm90by5pbnRlcnJ1cHRQYXJhZ3JhcGggPSBbXG4gIFsndGhlbWF0aWNCcmVhayddLFxuICBbJ2F0eEhlYWRpbmcnXSxcbiAgWydmZW5jZWRDb2RlJ10sXG4gIFsnYmxvY2txdW90ZSddLFxuICBbJ2h0bWwnXSxcbiAgWydzZXRleHRIZWFkaW5nJywge2NvbW1vbm1hcms6IGZhbHNlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2Zvb3Rub3RlJywge2NvbW1vbm1hcms6IGZhbHNlfV1cbl1cblxuLy8gTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBsaXN0OlxuLy9cbi8vIGBgYG1hcmtkb3duXG4vLyAtIE9uZVxuLy8gX19fXG4vLyBgYGBcbi8vXG4vLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnSB0aGUgbGlzdC5cbnByb3RvLmludGVycnVwdExpc3QgPSBbXG4gIFsnYXR4SGVhZGluZycsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWydmZW5jZWRDb2RlJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ3RoZW1hdGljQnJlYWsnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dLFxuICBbJ2Zvb3Rub3RlJywge2NvbW1vbm1hcms6IGZhbHNlfV1cbl1cblxuLy8gTm9kZXMgdGhhdCBjYW4gaW50ZXJ1cHQgYSBibG9ja3F1b3RlOlxuLy9cbi8vIGBgYG1hcmtkb3duXG4vLyA+IEEgcGFyYWdyYXBoLlxuLy8gX19fXG4vLyBgYGBcbi8vXG4vLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIHRoZW1hdGljIGJyZWFrIOKAnGludGVydXB0c+KAnSB0aGUgYmxvY2txdW90ZS5cbnByb3RvLmludGVycnVwdEJsb2NrcXVvdGUgPSBbXG4gIFsnaW5kZW50ZWRDb2RlJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydmZW5jZWRDb2RlJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydhdHhIZWFkaW5nJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydzZXRleHRIZWFkaW5nJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydodG1sJywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydsaXN0Jywge2NvbW1vbm1hcms6IHRydWV9XSxcbiAgWydkZWZpbml0aW9uJywge2NvbW1vbm1hcms6IGZhbHNlfV0sXG4gIFsnZm9vdG5vdGUnLCB7Y29tbW9ubWFyazogZmFsc2V9XVxuXVxuXG4vLyBIYW5kbGVycy5cbnByb3RvLmJsb2NrVG9rZW5pemVycyA9IHtcbiAgbmV3bGluZTogcmVxdWlyZSgnLi90b2tlbml6ZS9uZXdsaW5lJyksXG4gIGluZGVudGVkQ29kZTogcmVxdWlyZSgnLi90b2tlbml6ZS9jb2RlLWluZGVudGVkJyksXG4gIGZlbmNlZENvZGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvY29kZS1mZW5jZWQnKSxcbiAgYmxvY2txdW90ZTogcmVxdWlyZSgnLi90b2tlbml6ZS9ibG9ja3F1b3RlJyksXG4gIGF0eEhlYWRpbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvaGVhZGluZy1hdHgnKSxcbiAgdGhlbWF0aWNCcmVhazogcmVxdWlyZSgnLi90b2tlbml6ZS90aGVtYXRpYy1icmVhaycpLFxuICBsaXN0OiByZXF1aXJlKCcuL3Rva2VuaXplL2xpc3QnKSxcbiAgc2V0ZXh0SGVhZGluZzogcmVxdWlyZSgnLi90b2tlbml6ZS9oZWFkaW5nLXNldGV4dCcpLFxuICBodG1sOiByZXF1aXJlKCcuL3Rva2VuaXplL2h0bWwtYmxvY2snKSxcbiAgZm9vdG5vdGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvZm9vdG5vdGUtZGVmaW5pdGlvbicpLFxuICBkZWZpbml0aW9uOiByZXF1aXJlKCcuL3Rva2VuaXplL2RlZmluaXRpb24nKSxcbiAgdGFibGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGFibGUnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3Rva2VuaXplL3BhcmFncmFwaCcpXG59XG5cbnByb3RvLmlubGluZVRva2VuaXplcnMgPSB7XG4gIGVzY2FwZTogcmVxdWlyZSgnLi90b2tlbml6ZS9lc2NhcGUnKSxcbiAgYXV0b0xpbms6IHJlcXVpcmUoJy4vdG9rZW5pemUvYXV0by1saW5rJyksXG4gIHVybDogcmVxdWlyZSgnLi90b2tlbml6ZS91cmwnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWlubGluZScpLFxuICBsaW5rOiByZXF1aXJlKCcuL3Rva2VuaXplL2xpbmsnKSxcbiAgcmVmZXJlbmNlOiByZXF1aXJlKCcuL3Rva2VuaXplL3JlZmVyZW5jZScpLFxuICBzdHJvbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvc3Ryb25nJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL3Rva2VuaXplL2VtcGhhc2lzJyksXG4gIGRlbGV0aW9uOiByZXF1aXJlKCcuL3Rva2VuaXplL2RlbGV0ZScpLFxuICBjb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtaW5saW5lJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL3Rva2VuaXplL2JyZWFrJyksXG4gIHRleHQ6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGV4dCcpXG59XG5cbi8vIEV4cG9zZSBwcmVjZWRlbmNlLlxucHJvdG8uYmxvY2tNZXRob2RzID0ga2V5cyhwcm90by5ibG9ja1Rva2VuaXplcnMpXG5wcm90by5pbmxpbmVNZXRob2RzID0ga2V5cyhwcm90by5pbmxpbmVUb2tlbml6ZXJzKVxuXG4vLyBUb2tlbml6ZXJzLlxucHJvdG8udG9rZW5pemVCbG9jayA9IHRva2VuaXplcignYmxvY2snKVxucHJvdG8udG9rZW5pemVJbmxpbmUgPSB0b2tlbml6ZXIoJ2lubGluZScpXG5wcm90by50b2tlbml6ZUZhY3RvcnkgPSB0b2tlbml6ZXJcblxuLy8gR2V0IGFsbCBrZXlzIGluIGB2YWx1ZWAuXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIga2V5XG5cbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXN1bHQucHVzaChrZXkpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHVuaGVyaXQgPSByZXF1aXJlKCd1bmhlcml0JylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL2xpYi9wYXJzZXIuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5wYXJzZS5QYXJzZXIgPSBQYXJzZXJcblxuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSB0aGlzLmRhdGEoJ3NldHRpbmdzJylcbiAgdmFyIExvY2FsID0gdW5oZXJpdChQYXJzZXIpXG5cbiAgTG9jYWwucHJvdG90eXBlLm9wdGlvbnMgPSB4dGVuZChMb2NhbC5wcm90b3R5cGUub3B0aW9ucywgc2V0dGluZ3MsIG9wdGlvbnMpXG5cbiAgdGhpcy5QYXJzZXIgPSBMb2NhbFxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSB9XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG52YXIgc3BhY2VTZXBhcmF0ZWQgPSByZXF1aXJlKCdzcGFjZS1zZXBhcmF0ZWQtdG9rZW5zJyk7XG5cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJbLVtcXFxcXXt9KCkqKz8uXFxcXFxcXFxeJHwvXVwiLCAnZycpLCAnXFxcXCQmJyk7XG59XG5cbnZhciBDX05FV0xJTkUgPSAnXFxuJztcbnZhciBDX0ZFTkNFID0gJ3wnO1xuXG5mdW5jdGlvbiBjb21waWxlckZhY3Rvcnkobm9kZVR5cGUpIHtcbiAgdmFyIHRleHQ7XG4gIHZhciB0aXRsZTtcbiAgcmV0dXJuIHtcbiAgICBibG9ja0hlYWRpbmc6IGZ1bmN0aW9uIGJsb2NrSGVhZGluZyhub2RlKSB7XG4gICAgICB0aXRsZSA9IHRoaXMuYWxsKG5vZGUpLmpvaW4oJycpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gICAgYmxvY2tCb2R5OiBmdW5jdGlvbiBibG9ja0JvZHkobm9kZSkge1xuICAgICAgdGV4dCA9IHRoaXMuYWxsKG5vZGUpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcbnwgJyk7XG4gICAgICB9KS5qb2luKCdcXG58XFxufCAnKTtcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH0sXG4gICAgYmxvY2s6IGZ1bmN0aW9uIGJsb2NrKG5vZGUpIHtcbiAgICAgIHRleHQgPSAnJztcbiAgICAgIHRpdGxlID0gJyc7XG4gICAgICB0aGlzLmFsbChub2RlKTtcblxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHJldHVybiBcIltbXCIuY29uY2F0KG5vZGVUeXBlLCBcIiB8IFwiKS5jb25jYXQodGl0bGUsIFwiXV1cXG58IFwiKS5jb25jYXQodGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJbW1wiLmNvbmNhdChub2RlVHlwZSwgXCJdXVxcbnwgXCIpLmNvbmNhdCh0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2tQbHVnaW4oKSB7XG4gIHZhciBhdmFpbGFibGVCbG9ja3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICB2YXIgcGF0dGVybiA9IE9iamVjdC5rZXlzKGF2YWlsYWJsZUJsb2NrcykubWFwKGVzY2FwZVJlZ0V4cCkuam9pbignfCcpO1xuXG4gIGlmICghcGF0dGVybikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVtYXJrLWN1c3RvbS1ibG9ja3MgbmVlZHMgdG8gYmUgcGFzc2VkIGEgY29uZmlndXJhdGlvbiBvYmplY3QgYXMgb3B0aW9uJyk7XG4gIH1cblxuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKFwiXFxcXFtcXFxcWyhcIi5jb25jYXQocGF0dGVybiwgXCIpKD86ICpcXFxcfCAqKC4qKSk/XFxcXF1cXFxcXVxcblwiKSk7XG5cbiAgZnVuY3Rpb24gYmxvY2tUb2tlbml6ZXIoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gICAgdmFyIG5vdyA9IGVhdC5ub3coKTtcbiAgICB2YXIga2VlcCA9IHJlZ2V4LmV4ZWModmFsdWUpO1xuICAgIGlmICgha2VlcCkgcmV0dXJuO1xuICAgIGlmIChrZWVwLmluZGV4ICE9PSAwKSByZXR1cm47XG5cbiAgICB2YXIgX2tlZXAgPSBfc2xpY2VkVG9BcnJheShrZWVwLCAzKSxcbiAgICAgICAgZWF0ZW4gPSBfa2VlcFswXSxcbiAgICAgICAgYmxvY2tUeXBlID0gX2tlZXBbMV0sXG4gICAgICAgIGJsb2NrVGl0bGUgPSBfa2VlcFsyXTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG5cblxuICAgIGlmIChzaWxlbnQpIHJldHVybiB0cnVlO1xuICAgIHZhciBsaW5lc1RvRWF0ID0gW107XG4gICAgdmFyIGNvbnRlbnQgPSBbXTtcbiAgICB2YXIgaWR4ID0gMDtcblxuICAgIHdoaWxlICgoaWR4ID0gdmFsdWUuaW5kZXhPZihDX05FV0xJTkUpKSAhPT0gLTEpIHtcbiAgICAgIHZhciBuZXh0ID0gdmFsdWUuaW5kZXhPZihDX05FV0xJTkUsIGlkeCArIDEpOyAvLyBlaXRoZXIgc2xpY2UgdW50aWwgbmV4dCBORVdMSU5FIG9yIHNsaWNlIHVudGlsIGVuZCBvZiBzdHJpbmdcblxuICAgICAgdmFyIGxpbmVUb0VhdCA9IG5leHQgIT09IC0xID8gdmFsdWUuc2xpY2UoaWR4ICsgMSwgbmV4dCkgOiB2YWx1ZS5zbGljZShpZHggKyAxKTtcbiAgICAgIGlmIChsaW5lVG9FYXRbMF0gIT09IENfRkVOQ0UpIGJyZWFrOyAvLyByZW1vdmUgbGVhZGluZyBgRkVOQ0UgYCBvciBsZWFkaW5nIGBGRU5DRWBcblxuICAgICAgdmFyIGxpbmUgPSBsaW5lVG9FYXQuc2xpY2UobGluZVRvRWF0LnN0YXJ0c1dpdGgoXCJcIi5jb25jYXQoQ19GRU5DRSwgXCIgXCIpKSA/IDIgOiAxKTtcbiAgICAgIGxpbmVzVG9FYXQucHVzaChsaW5lVG9FYXQpO1xuICAgICAgY29udGVudC5wdXNoKGxpbmUpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShpZHggKyAxKTtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudFN0cmluZyA9IGNvbnRlbnQuam9pbihDX05FV0xJTkUpO1xuICAgIHZhciBzdHJpbmdUb0VhdCA9IGVhdGVuICsgbGluZXNUb0VhdC5qb2luKENfTkVXTElORSk7XG4gICAgdmFyIHBvdGVudGlhbEJsb2NrID0gYXZhaWxhYmxlQmxvY2tzW2Jsb2NrVHlwZV07XG4gICAgdmFyIHRpdGxlQWxsb3dlZCA9IHBvdGVudGlhbEJsb2NrLnRpdGxlICYmIFsnb3B0aW9uYWwnLCAncmVxdWlyZWQnXS5pbmNsdWRlcyhwb3RlbnRpYWxCbG9jay50aXRsZSk7XG4gICAgdmFyIHRpdGxlUmVxdWlyZWQgPSBwb3RlbnRpYWxCbG9jay50aXRsZSAmJiBwb3RlbnRpYWxCbG9jay50aXRsZSA9PT0gJ3JlcXVpcmVkJztcbiAgICBpZiAodGl0bGVSZXF1aXJlZCAmJiAhYmxvY2tUaXRsZSkgcmV0dXJuO1xuICAgIGlmICghdGl0bGVBbGxvd2VkICYmIGJsb2NrVGl0bGUpIHJldHVybjtcbiAgICB2YXIgYWRkID0gZWF0KHN0cmluZ1RvRWF0KTtcbiAgICB2YXIgZXhpdCA9IHRoaXMuZW50ZXJCbG9jaygpO1xuICAgIHZhciBjb250ZW50cyA9IHtcbiAgICAgIHR5cGU6IFwiXCIuY29uY2F0KGJsb2NrVHlwZSwgXCJDdXN0b21CbG9ja0JvZHlcIiksXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGhOYW1lOiAnZGl2JyxcbiAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdjdXN0b20tYmxvY2stYm9keSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRva2VuaXplQmxvY2soY29udGVudFN0cmluZywgbm93KVxuICAgIH07XG4gICAgZXhpdCgpO1xuICAgIHZhciBibG9ja0NoaWxkcmVuID0gW2NvbnRlbnRzXTtcblxuICAgIGlmICh0aXRsZUFsbG93ZWQgJiYgYmxvY2tUaXRsZSkge1xuICAgICAgdmFyIHRpdGxlTm9kZSA9IHtcbiAgICAgICAgdHlwZTogXCJcIi5jb25jYXQoYmxvY2tUeXBlLCBcIkN1c3RvbUJsb2NrSGVhZGluZ1wiKSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhOYW1lOiBwb3RlbnRpYWxCbG9jay5kZXRhaWxzID8gJ3N1bW1hcnknIDogJ2RpdicsXG4gICAgICAgICAgaFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2N1c3RvbS1ibG9jay1oZWFkaW5nJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IHRoaXMudG9rZW5pemVJbmxpbmUoYmxvY2tUaXRsZSwgbm93KVxuICAgICAgfTtcbiAgICAgIGJsb2NrQ2hpbGRyZW4udW5zaGlmdCh0aXRsZU5vZGUpO1xuICAgIH1cblxuICAgIHZhciBjbGFzc0xpc3QgPSBzcGFjZVNlcGFyYXRlZC5wYXJzZShwb3RlbnRpYWxCbG9jay5jbGFzc2VzIHx8ICcnKTtcbiAgICByZXR1cm4gYWRkKHtcbiAgICAgIHR5cGU6IFwiXCIuY29uY2F0KGJsb2NrVHlwZSwgXCJDdXN0b21CbG9ja1wiKSxcbiAgICAgIGNoaWxkcmVuOiBibG9ja0NoaWxkcmVuLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogcG90ZW50aWFsQmxvY2suZGV0YWlscyA/ICdkZXRhaWxzJyA6ICdkaXYnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIGNsYXNzTmFtZTogWydjdXN0b20tYmxvY2snXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGNsYXNzTGlzdCkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBQYXJzZXIgPSB0aGlzLlBhcnNlcjsgLy8gSW5qZWN0IGJsb2NrVG9rZW5pemVyXG5cbiAgdmFyIGJsb2NrVG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tUb2tlbml6ZXJzO1xuICB2YXIgYmxvY2tNZXRob2RzID0gUGFyc2VyLnByb3RvdHlwZS5ibG9ja01ldGhvZHM7XG4gIGJsb2NrVG9rZW5pemVycy5jdXN0b21CbG9ja3MgPSBibG9ja1Rva2VuaXplcjtcbiAgYmxvY2tNZXRob2RzLnNwbGljZShibG9ja01ldGhvZHMuaW5kZXhPZignZmVuY2VkQ29kZScpICsgMSwgMCwgJ2N1c3RvbUJsb2NrcycpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICBpZiAoIXZpc2l0b3JzKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoYXZhaWxhYmxlQmxvY2tzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBjb21waWxlciA9IGNvbXBpbGVyRmFjdG9yeShrZXkpO1xuICAgICAgdmlzaXRvcnNbXCJcIi5jb25jYXQoa2V5LCBcIkN1c3RvbUJsb2NrXCIpXSA9IGNvbXBpbGVyLmJsb2NrO1xuICAgICAgdmlzaXRvcnNbXCJcIi5jb25jYXQoa2V5LCBcIkN1c3RvbUJsb2NrSGVhZGluZ1wiKV0gPSBjb21waWxlci5ibG9ja0hlYWRpbmc7XG4gICAgICB2aXNpdG9yc1tcIlwiLmNvbmNhdChrZXksIFwiQ3VzdG9tQmxvY2tCb2R5XCIpXSA9IGNvbXBpbGVyLmJsb2NrQm9keTtcbiAgICB9KTtcbiAgfSAvLyBJbmplY3QgaW50byBpbnRlcnJ1cHQgcnVsZXNcblxuXG4gIHZhciBpbnRlcnJ1cHRQYXJhZ3JhcGggPSBQYXJzZXIucHJvdG90eXBlLmludGVycnVwdFBhcmFncmFwaDtcbiAgdmFyIGludGVycnVwdExpc3QgPSBQYXJzZXIucHJvdG90eXBlLmludGVycnVwdExpc3Q7XG4gIHZhciBpbnRlcnJ1cHRCbG9ja3F1b3RlID0gUGFyc2VyLnByb3RvdHlwZS5pbnRlcnJ1cHRCbG9ja3F1b3RlO1xuICBpbnRlcnJ1cHRQYXJhZ3JhcGguc3BsaWNlKGludGVycnVwdFBhcmFncmFwaC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbJ2N1c3RvbUJsb2NrcyddKTtcbiAgaW50ZXJydXB0TGlzdC5zcGxpY2UoaW50ZXJydXB0TGlzdC5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbJ2N1c3RvbUJsb2NrcyddKTtcbiAgaW50ZXJydXB0QmxvY2txdW90ZS5zcGxpY2UoaW50ZXJydXB0QmxvY2txdW90ZS5pbmRleE9mKCdmZW5jZWRDb2RlJykgKyAxLCAwLCBbJ2N1c3RvbUJsb2NrcyddKTtcbn07IiwiLyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjEgYnkgQG1hdGhpYXMgKi9cblxuXG4vKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG4vKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG52YXIgcmVnZXhQdW55Y29kZSA9IC9eeG4tLS87XG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxceDIwLVxceDdFXS87IC8vIHVucHJpbnRhYmxlIEFTQ0lJIGNoYXJzICsgbm9uLUFTQ0lJIGNoYXJzXG52YXIgcmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG4vKiogRXJyb3IgbWVzc2FnZXMgKi9cbnZhciBlcnJvcnMgPSB7XG4gICdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG4gICdub3QtYmFzaWMnOiAnSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KScsXG4gICdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG59O1xuXG4vKiogQ29udmVuaWVuY2Ugc2hvcnRjdXRzICovXG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBBIGdlbmVyaWMgZXJyb3IgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhyb3dzIGEgYFJhbmdlRXJyb3JgIHdpdGggdGhlIGFwcGxpY2FibGUgZXJyb3IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZXJyb3IodHlwZSkge1xuICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZV0pO1xufVxuXG4vKipcbiAqIEEgZ2VuZXJpYyBgQXJyYXkjbWFwYCB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgYXJyYXlcbiAqIGl0ZW0uXG4gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG4gKiBhZGRyZXNzZXMuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuICogY2hhcmFjdGVyLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuICB2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgIC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcbiAgICAvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuICAgIHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuICAgIHN0cmluZyA9IHBhcnRzWzFdO1xuICB9XG4gIC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cbiAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcbiAgdmFyIGxhYmVscyA9IHN0cmluZy5zcGxpdCgnLicpO1xuICB2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG4gIHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZGVjb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICovXG5mdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuICB2YXIgb3V0cHV0ID0gW10sXG4gICAgY291bnRlciA9IDAsXG4gICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcbiAgICB2YWx1ZSxcbiAgICBleHRyYTtcbiAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuICAgICAgLy8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG4gICAgICBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuICAgICAgICBvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcbiAgICAgICAgLy8gY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZW5jb2RlXG4gKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuICovXG5mdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG4gIHJldHVybiBtYXAoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIG91dHB1dCA9ICcnO1xuICAgIGlmICh2YWx1ZSA+IDB4RkZGRikge1xuICAgICAgdmFsdWUgLT0gMHgxMDAwMDtcbiAgICAgIG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApO1xuICAgICAgdmFsdWUgPSAweERDMDAgfCB2YWx1ZSAmIDB4M0ZGO1xuICAgIH1cbiAgICBvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlKTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9KS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG4gKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcbiAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG4gIGlmIChjb2RlUG9pbnQgLSA0OCA8IDEwKSB7XG4gICAgcmV0dXJuIGNvZGVQb2ludCAtIDIyO1xuICB9XG4gIGlmIChjb2RlUG9pbnQgLSA2NSA8IDI2KSB7XG4gICAgcmV0dXJuIGNvZGVQb2ludCAtIDY1O1xuICB9XG4gIGlmIChjb2RlUG9pbnQgLSA5NyA8IDI2KSB7XG4gICAgcmV0dXJuIGNvZGVQb2ludCAtIDk3O1xuICB9XG4gIHJldHVybiBiYXNlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpcyBgZGlnaXRgLCB3aGljaCBuZWVkcyB0byBiZSBpbiB0aGUgcmFuZ2VcbiAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcbiAqIGlmIGBmbGFnYCBpcyBub24temVybyBhbmQgYGRpZ2l0YCBoYXMgbm8gdXBwZXJjYXNlIGZvcm0uXG4gKi9cbmZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuICAvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuICAvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcbiAgcmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn1cblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuICB2YXIgayA9IDA7XG4gIGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG4gIGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcbiAgZm9yICggLyogbm8gaW5pdGlhbGl6YXRpb24gKi8gOyBkZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuICAgIGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcbiAgfVxuICByZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMgdG8gYSBzdHJpbmcgb2YgVW5pY29kZVxuICogc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG4gIC8vIERvbid0IHVzZSBVQ1MtMlxuICB2YXIgb3V0cHV0ID0gW10sXG4gICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG4gICAgb3V0LFxuICAgIGkgPSAwLFxuICAgIG4gPSBpbml0aWFsTixcbiAgICBiaWFzID0gaW5pdGlhbEJpYXMsXG4gICAgYmFzaWMsXG4gICAgaixcbiAgICBpbmRleCxcbiAgICBvbGRpLFxuICAgIHcsXG4gICAgayxcbiAgICBkaWdpdCxcbiAgICB0LFxuICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuICAgIGJhc2VNaW51c1Q7XG5cbiAgLy8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG4gIC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG4gIC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG4gIGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcbiAgaWYgKGJhc2ljIDwgMCkge1xuICAgIGJhc2ljID0gMDtcbiAgfVxuXG4gIGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG4gICAgLy8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuICAgICAgZXJyb3IoJ25vdC1iYXNpYycpO1xuICAgIH1cbiAgICBvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcbiAgfVxuXG4gIC8vIE1haW4gZGVjb2RpbmcgbG9vcDogc3RhcnQganVzdCBhZnRlciB0aGUgbGFzdCBkZWxpbWl0ZXIgaWYgYW55IGJhc2ljIGNvZGVcbiAgLy8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuICBmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLyApIHtcblxuICAgIC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cbiAgICAvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG4gICAgLy8gd2hpY2ggZ2V0cyBhZGRlZCB0byBgaWAuIFRoZSBvdmVyZmxvdyBjaGVja2luZyBpcyBlYXNpZXJcbiAgICAvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuICAgIC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG4gICAgZm9yIChvbGRpID0gaSwgdyA9IDEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi8gOyBrICs9IGJhc2UpIHtcblxuICAgICAgaWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG4gICAgICAgIGVycm9yKCdpbnZhbGlkLWlucHV0Jyk7XG4gICAgICB9XG5cbiAgICAgIGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG4gICAgICBpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG4gICAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgICAgfVxuXG4gICAgICBpICs9IGRpZ2l0ICogdztcbiAgICAgIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG4gICAgICBpZiAoZGlnaXQgPCB0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG4gICAgICBpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG4gICAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgICAgfVxuXG4gICAgICB3ICo9IGJhc2VNaW51c1Q7XG5cbiAgICB9XG5cbiAgICBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcbiAgICBiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuICAgIC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG4gICAgLy8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcbiAgICBpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG4gICAgICBlcnJvcignb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBuICs9IGZsb29yKGkgLyBvdXQpO1xuICAgIGkgJT0gb3V0O1xuXG4gICAgLy8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuICAgIG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblxuICB9XG5cbiAgcmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKGlucHV0KSB7XG4gIHZhciBuLFxuICAgIGRlbHRhLFxuICAgIGhhbmRsZWRDUENvdW50LFxuICAgIGJhc2ljTGVuZ3RoLFxuICAgIGJpYXMsXG4gICAgaixcbiAgICBtLFxuICAgIHEsXG4gICAgayxcbiAgICB0LFxuICAgIGN1cnJlbnRWYWx1ZSxcbiAgICBvdXRwdXQgPSBbXSxcbiAgICAvKiogYGlucHV0TGVuZ3RoYCB3aWxsIGhvbGQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiBgaW5wdXRgLiAqL1xuICAgIGlucHV0TGVuZ3RoLFxuICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSxcbiAgICBiYXNlTWludXNULFxuICAgIHFNaW51c1Q7XG5cbiAgLy8gQ29udmVydCB0aGUgaW5wdXQgaW4gVUNTLTIgdG8gVW5pY29kZVxuICBpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG4gIC8vIENhY2hlIHRoZSBsZW5ndGhcbiAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cbiAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcbiAgbiA9IGluaXRpYWxOO1xuICBkZWx0YSA9IDA7XG4gIGJpYXMgPSBpbml0aWFsQmlhcztcblxuICAvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG4gIGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG4gICAgY3VycmVudFZhbHVlID0gaW5wdXRbal07XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcbiAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDtcblxuICAvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcbiAgLy8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIC0gaWYgaXQgaXMgbm90IGVtcHR5IC0gd2l0aCBhIGRlbGltaXRlclxuICBpZiAoYmFzaWNMZW5ndGgpIHtcbiAgICBvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBlbmNvZGluZyBsb29wOlxuICB3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG4gICAgLy8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dFxuICAgIC8vIGxhcmdlciBvbmU6XG4gICAgZm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcbiAgICAgICAgbSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG4gICAgLy8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3dcbiAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG4gICAgaWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcbiAgICAgIGVycm9yKCdvdmVyZmxvdycpO1xuICAgIH1cblxuICAgIGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG4gICAgbiA9IG07XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcbiAgICAgICAgZXJyb3IoJ292ZXJmbG93Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPT0gbikge1xuICAgICAgICAvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlclxuICAgICAgICBmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLyA7IGsgKz0gYmFzZSkge1xuICAgICAgICAgIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuICAgICAgICAgIGlmIChxIDwgdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHFNaW51c1QgPSBxIC0gdDtcbiAgICAgICAgICBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG4gICAgICAgICAgb3V0cHV0LnB1c2goXG4gICAgICAgICAgICBzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuICAgICAgICBkZWx0YSA9IDA7XG4gICAgICAgICsraGFuZGxlZENQQ291bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKytkZWx0YTtcbiAgICArK247XG5cbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3NcbiAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cbiAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuICogY29udmVydGVkIHRvIFVuaWNvZGUuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cbiAqIGNvbnZlcnQgdG8gVW5pY29kZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuICogc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG4gIHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKSA/XG4gICAgICBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpIDpcbiAgICAgIHN0cmluZztcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG4gKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcbiAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuICogQVNDSUkuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG4gKiBVbmljb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3JcbiAqIGVtYWlsIGFkZHJlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0FTQ0lJKGlucHV0KSB7XG4gIHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKSA/XG4gICAgICAneG4tLScgKyBlbmNvZGUoc3RyaW5nKSA6XG4gICAgICBzdHJpbmc7XG4gIH0pO1xufVxuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzEuNC4xJztcbi8qKlxuICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcbiAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG4gKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHR5cGUgT2JqZWN0XG4gKi9cblxuZXhwb3J0IHZhciB1Y3MyID0ge1xuICBkZWNvZGU6IHVjczJkZWNvZGUsXG4gIGVuY29kZTogdWNzMmVuY29kZVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmVyc2lvbjogdmVyc2lvbixcbiAgdWNzMjogdWNzMixcbiAgdG9BU0NJSTogdG9BU0NJSSxcbiAgdG9Vbmljb2RlOiB0b1VuaWNvZGUsXG4gIGVuY29kZTogZW5jb2RlLFxuICBkZWNvZGU6IGRlY29kZVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydCBmdW5jdGlvbiBkZXByZWNhdGUoZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z2xvZyhzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSAwO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIF9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIobWF5YmVCdWYpIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihtYXliZUJ1Zik7XG59XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydCBmdW5jdGlvbiBsb2coKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGZvcm1hdC5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbn1cblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuaW1wb3J0IGluaGVyaXRzIGZyb20gJy4vaW5oZXJpdHMnO1xuZXhwb3J0IHtpbmhlcml0c31cblxuZXhwb3J0IGZ1bmN0aW9uIF9leHRlbmQob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaW5oZXJpdHM6IGluaGVyaXRzLFxuICBfZXh0ZW5kOiBfZXh0ZW5kLFxuICBsb2c6IGxvZyxcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc1ByaW1pdGl2ZTogaXNQcmltaXRpdmUsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzRXJyb3I6IGlzRXJyb3IsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc051bGxPclVuZGVmaW5lZDogaXNOdWxsT3JVbmRlZmluZWQsXG4gIGlzTnVsbDogaXNOdWxsLFxuICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaW5zcGVjdDogaW5zcGVjdCxcbiAgZGVwcmVjYXRlOiBkZXByZWNhdGUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBkZWJ1Z2xvZzogZGVidWdsb2dcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbmZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2KSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB2ID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogJyc7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKG9iaiwgc2VwLCBlcSwgbmFtZSkge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtYXAob2JqZWN0S2V5cyhvYmopLCBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIga3MgPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGspKSArIGVxO1xuICAgICAgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgICByZXR1cm4gbWFwKG9ialtrXSwgZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBlbmNvZGU6IHN0cmluZ2lmeSxcbiAgc3RyaW5naWZ5OiBzdHJpbmdpZnksXG4gIGRlY29kZTogcGFyc2UsXG4gIHBhcnNlOiBwYXJzZVxufVxuZXhwb3J0IHtzdHJpbmdpZnkgYXMgZW5jb2RlLCBwYXJzZSBhcyBkZWNvZGV9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cblxuaW1wb3J0IHt0b0FTQ0lJfSBmcm9tICdwdW55Y29kZSc7XG5pbXBvcnQge2lzT2JqZWN0LGlzU3RyaW5nLGlzTnVsbE9yVW5kZWZpbmVkLGlzTnVsbH0gZnJvbSAndXRpbCc7XG5pbXBvcnQge3BhcnNlIGFzIHFzUGFyc2Usc3RyaW5naWZ5IGFzIHFzU3RyaW5naWZ5fSBmcm9tICdxdWVyeXN0cmluZyc7XG5leHBvcnQge1xuICB1cmxQYXJzZSBhcyBwYXJzZSxcbiAgdXJsUmVzb2x2ZSBhcyByZXNvbHZlLFxuICB1cmxSZXNvbHZlT2JqZWN0IGFzIHJlc29sdmVPYmplY3QsXG4gIHVybEZvcm1hdCBhcyBmb3JtYXRcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcnNlOiB1cmxQYXJzZSxcbiAgcmVzb2x2ZTogdXJsUmVzb2x2ZSxcbiAgcmVzb2x2ZU9iamVjdDogdXJsUmVzb2x2ZU9iamVjdCxcbiAgZm9ybWF0OiB1cmxGb3JtYXQsXG4gIFVybDogVXJsXG59XG5leHBvcnQgZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAvLyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgLy8gdGhlbS5cbiAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gIGhvc3RFbmRpbmdDaGFycyA9IFsnLycsICc/JywgJyMnXSxcbiAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgfSxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgbmV2ZXIgaGF2ZSBhIGhvc3RuYW1lLlxuICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgJ2h0dHAnOiB0cnVlLFxuICAgICdodHRwcyc6IHRydWUsXG4gICAgJ2Z0cCc6IHRydWUsXG4gICAgJ2dvcGhlcic6IHRydWUsXG4gICAgJ2ZpbGUnOiB0cnVlLFxuICAgICdodHRwOic6IHRydWUsXG4gICAgJ2h0dHBzOic6IHRydWUsXG4gICAgJ2Z0cDonOiB0cnVlLFxuICAgICdnb3BoZXI6JzogdHJ1ZSxcbiAgICAnZmlsZTonOiB0cnVlXG4gIH07XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiBpc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgcmV0dXJuIHBhcnNlKHRoaXMsIHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzZWxmLCB1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlciBcXCd1cmxcXCcgbXVzdCBiZSBhIHN0cmluZywgbm90ICcgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgIHNwbGl0dGVyID1cbiAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgIHVTcGxpdCA9IHVybC5zcGxpdChzcGxpdHRlciksXG4gICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICBzZWxmLnBhdGggPSByZXN0O1xuICAgICAgc2VsZi5ocmVmID0gcmVzdDtcbiAgICAgIHNlbGYucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgc2VsZi5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHNlbGYucXVlcnkgPSBxc1BhcnNlKHNlbGYuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5xdWVyeSA9IHNlbGYuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHNlbGYuc2VhcmNoID0gJyc7XG4gICAgICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICBzZWxmLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgc2VsZi5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFyIGksIGhlYywgbCwgcDtcbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHNlbGYuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgc2VsZi5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgcGFyc2VIb3N0KHNlbGYpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHNlbGYuaG9zdG5hbWUgPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICBzZWxmLmhvc3RuYW1lW3NlbGYuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gc2VsZi5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWxmLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvLyBJRE5BIFN1cHBvcnQ6IFJldHVybnMgYSBwdW55Y29kZWQgcmVwcmVzZW50YXRpb24gb2YgXCJkb21haW5cIi5cbiAgICAgIC8vIEl0IG9ubHkgY29udmVydHMgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHRoYXRcbiAgICAgIC8vIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWZcbiAgICAgIC8vIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCBhbHJlYWR5IGlzIEFTQ0lJLW9ubHkuXG4gICAgICBzZWxmLmhvc3RuYW1lID0gdG9BU0NJSShzZWxmLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICBwID0gc2VsZi5wb3J0ID8gJzonICsgc2VsZi5wb3J0IDogJyc7XG4gICAgdmFyIGggPSBzZWxmLmhvc3RuYW1lIHx8ICcnO1xuICAgIHNlbGYuaG9zdCA9IGggKyBwO1xuICAgIHNlbGYuaHJlZiArPSBzZWxmLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICBzZWxmLmhvc3RuYW1lID0gc2VsZi5ob3N0bmFtZS5zdWJzdHIoMSwgc2VsZi5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yIChpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgc2VsZi5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICBzZWxmLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICBzZWxmLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgc2VsZi5xdWVyeSA9IHFzUGFyc2Uoc2VsZi5xdWVyeSk7XG4gICAgfVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgLy8gbm8gcXVlcnkgc3RyaW5nLCBidXQgcGFyc2VRdWVyeVN0cmluZyBzdGlsbCByZXF1ZXN0ZWRcbiAgICBzZWxmLnNlYXJjaCA9ICcnO1xuICAgIHNlbGYucXVlcnkgPSB7fTtcbiAgfVxuICBpZiAocmVzdCkgc2VsZi5wYXRobmFtZSA9IHJlc3Q7XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICBzZWxmLmhvc3RuYW1lICYmICFzZWxmLnBhdGhuYW1lKSB7XG4gICAgc2VsZi5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHNlbGYucGF0aG5hbWUgfHwgc2VsZi5zZWFyY2gpIHtcbiAgICBwID0gc2VsZi5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHNlbGYuc2VhcmNoIHx8ICcnO1xuICAgIHNlbGYucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHNlbGYuaHJlZiA9IGZvcm1hdChzZWxmKTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAoaXNTdHJpbmcob2JqKSkgb2JqID0gcGFyc2Uoe30sIG9iaik7XG4gIHJldHVybiBmb3JtYXQob2JqKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KHNlbGYpIHtcbiAgdmFyIGF1dGggPSBzZWxmLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHNlbGYucHJvdG9jb2wgfHwgJycsXG4gICAgcGF0aG5hbWUgPSBzZWxmLnBhdGhuYW1lIHx8ICcnLFxuICAgIGhhc2ggPSBzZWxmLmhhc2ggfHwgJycsXG4gICAgaG9zdCA9IGZhbHNlLFxuICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHNlbGYuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgc2VsZi5ob3N0O1xuICB9IGVsc2UgaWYgKHNlbGYuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArIChzZWxmLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgP1xuICAgICAgc2VsZi5ob3N0bmFtZSA6XG4gICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAoc2VsZi5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHNlbGYucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZi5xdWVyeSAmJlxuICAgIGlzT2JqZWN0KHNlbGYucXVlcnkpICYmXG4gICAgT2JqZWN0LmtleXMoc2VsZi5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxc1N0cmluZ2lmeShzZWxmLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSBzZWxmLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAoc2VsZi5zbGFzaGVzIHx8XG4gICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZvcm1hdCh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmIChpc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSAmJiAhcmVzdWx0LnBhdGhuYW1lKSB7XG4gICAgICByZXN1bHQucGF0aCA9IHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICB9XG5cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciByZWxQYXRoO1xuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICBpc1JlbEFicyA9IChcbiAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgIHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgKSxcbiAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpKSxcbiAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG4gIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdO1xuICAvLyBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gIC8vIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgLy8gdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAvLyByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAvLyBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9ICcnO1xuICAgIHJlc3VsdC5wb3J0ID0gbnVsbDtcbiAgICBpZiAocmVzdWx0Lmhvc3QpIHtcbiAgICAgIGlmIChzcmNQYXRoWzBdID09PSAnJykgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0O1xuICAgICAgZWxzZSBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpO1xuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHJlbFBhdGhbMF0gPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICBlbHNlIHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlLmhvc3QgPSBudWxsO1xuICAgIH1cbiAgICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyAmJiAocmVsUGF0aFswXSA9PT0gJycgfHwgc3JjUGF0aFswXSA9PT0gJycpO1xuICB9XG4gIHZhciBhdXRoSW5Ib3N0O1xuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgLy8gd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnNlYXJjaCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAnLycgKyByZXN1bHQuc2VhcmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBhIHVybCBFTkRzIGluIC4gb3IgLi4sIHRoZW4gaXQgbXVzdCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgLy8gaG93ZXZlciwgaWYgaXQgZW5kcyBpbiBhbnl0aGluZyBlbHNlIG5vbi1zbGFzaHksXG4gIC8vIHRoZW4gaXQgbXVzdCBOT1QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKFxuICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8XG4gICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IHJlcXVlc3QuaHR0cFxuICBpZiAoIWlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICFpc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwYXJzZUhvc3QodGhpcyk7XG59O1xuXG5mdW5jdGlvbiBwYXJzZUhvc3Qoc2VsZikge1xuICB2YXIgaG9zdCA9IHNlbGYuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHNlbGYucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHNlbGYuaG9zdG5hbWUgPSBob3N0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCd1cmwnKSxcbiAgICBmb3JtYXQgPSBfcmVxdWlyZS5mb3JtYXQsXG4gICAgcGFyc2UgPSBfcmVxdWlyZS5wYXJzZSxcbiAgICBVUkxTZWFyY2hQYXJhbXMgPSBfcmVxdWlyZS5VUkxTZWFyY2hQYXJhbXM7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGx1Z2luKG9wdHMpIHtcbiAgaWYgKF90eXBlb2Yob3B0cykgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhvcHRzKS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbWFyay1pZnJhbWVzIG5lZWRzIHRvIGJlIHBhc3NlZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFzIG9wdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIodXJsKSB7XG4gICAgdmFyIGhvc3RuYW1lID0gcGFyc2UodXJsKS5ob3N0bmFtZTtcbiAgICByZXR1cm4gb3B0c1tob3N0bmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiBibG9ja1Rva2VuaXplcihlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJyEoaHR0cCcpKSByZXR1cm47XG4gICAgdmFyIGVhdGVuVmFsdWUgPSAnJztcbiAgICB2YXIgdXJsID0gJyc7XG4gICAgdmFyIHNwZWNpYWxDaGFycyA9IFsnIScsICcoJywgJyknXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgLSAxXSAhPT0gJyknOyBpKyspIHtcbiAgICAgIGVhdGVuVmFsdWUgKz0gdmFsdWVbaV07XG5cbiAgICAgIGlmICghc3BlY2lhbENoYXJzLmluY2x1ZGVzKHZhbHVlW2ldKSkge1xuICAgICAgICB1cmwgKz0gdmFsdWVbaV07XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cblxuXG4gICAgaWYgKHNpbGVudCkgcmV0dXJuIHRydWU7XG4gICAgdmFyIHByb3ZpZGVyID0gZGV0ZWN0UHJvdmlkZXIodXJsKTtcblxuICAgIGlmICghcHJvdmlkZXIgfHwgcHJvdmlkZXIuZGlzYWJsZWQgPT09IHRydWUgfHwgcHJvdmlkZXIubWF0Y2ggJiYgcHJvdmlkZXIubWF0Y2ggaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXByb3ZpZGVyLm1hdGNoLnRlc3QodXJsKSkge1xuICAgICAgcmV0dXJuIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6IGVhdGVuVmFsdWVcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaW5hbFVybCA9IGNvbXB1dGVGaW5hbFVybChwcm92aWRlciwgdXJsKTtcbiAgICB2YXIgdGh1bWJuYWlsID0gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgZmluYWxVcmwpO1xuICAgIGVhdChlYXRlblZhbHVlKSh7XG4gICAgICB0eXBlOiAnaWZyYW1lJyxcbiAgICAgIHNyYzogdXJsLFxuICAgICAgZGF0YToge1xuICAgICAgICBoTmFtZTogcHJvdmlkZXIudGFnLFxuICAgICAgICBoUHJvcGVydGllczoge1xuICAgICAgICAgIHNyYzogZmluYWxVcmwsXG4gICAgICAgICAgd2lkdGg6IHByb3ZpZGVyLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcHJvdmlkZXIuaGVpZ2h0LFxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBmcmFtZWJvcmRlcjogJzAnXG4gICAgICAgIH0sXG4gICAgICAgIHRodW1ibmFpbDogdGh1bWJuYWlsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgUGFyc2VyID0gdGhpcy5QYXJzZXI7IC8vIEluamVjdCBibG9ja1Rva2VuaXplclxuXG4gIHZhciBibG9ja1Rva2VuaXplcnMgPSBQYXJzZXIucHJvdG90eXBlLmJsb2NrVG9rZW5pemVycztcbiAgdmFyIGJsb2NrTWV0aG9kcyA9IFBhcnNlci5wcm90b3R5cGUuYmxvY2tNZXRob2RzO1xuICBibG9ja1Rva2VuaXplcnMuaWZyYW1lcyA9IGJsb2NrVG9rZW5pemVyO1xuICBibG9ja01ldGhvZHMuc3BsaWNlKGJsb2NrTWV0aG9kcy5pbmRleE9mKCdibG9ja3F1b3RlJykgKyAxLCAwLCAnaWZyYW1lcycpO1xuICB2YXIgQ29tcGlsZXIgPSB0aGlzLkNvbXBpbGVyO1xuXG4gIGlmIChDb21waWxlcikge1xuICAgIHZhciB2aXNpdG9ycyA9IENvbXBpbGVyLnByb3RvdHlwZS52aXNpdG9ycztcbiAgICBpZiAoIXZpc2l0b3JzKSByZXR1cm47XG5cbiAgICB2aXNpdG9ycy5pZnJhbWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIFwiIShcIi5jb25jYXQobm9kZS5zcmMsIFwiKVwiKTtcbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb21wdXRlRmluYWxVcmwocHJvdmlkZXIsIHVybCkge1xuICB2YXIgZmluYWxVcmwgPSB1cmw7XG4gIHZhciBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG5cbiAgaWYgKHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMgJiYgcGFyc2VkLnNlYXJjaCkge1xuICAgIHZhciBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcnNlZC5zZWFyY2gpO1xuICAgIHByb3ZpZGVyLmRyb3BwZWRRdWVyeVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaWdub3JlZCkge1xuICAgICAgcmV0dXJuIHNlYXJjaFtcImRlbGV0ZVwiXShpZ25vcmVkKTtcbiAgICB9KTtcbiAgICBwYXJzZWQuc2VhcmNoID0gc2VhcmNoLnRvU3RyaW5nKCk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZXBsYWNlICYmIHByb3ZpZGVyLnJlcGxhY2UubGVuZ3RoKSB7XG4gICAgcHJvdmlkZXIucmVwbGFjZS5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICB2YXIgX3J1bGUgPSBfc2xpY2VkVG9BcnJheShydWxlLCAyKSxcbiAgICAgICAgICBmcm9tID0gX3J1bGVbMF0sXG4gICAgICAgICAgdG8gPSBfcnVsZVsxXTtcblxuICAgICAgaWYgKGZyb20gJiYgdG8pIGZpbmFsVXJsID0gZmluYWxVcmwucmVwbGFjZShmcm9tLCB0byk7XG4gICAgICBwYXJzZWQgPSBwYXJzZShmaW5hbFVybCk7XG4gICAgfSk7XG4gICAgZmluYWxVcmwgPSBmb3JtYXQocGFyc2VkKTtcbiAgfVxuXG4gIGlmIChwcm92aWRlci5yZW1vdmVGaWxlTmFtZSkge1xuICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZS5zdWJzdHJpbmcoMCwgcGFyc2VkLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGZpbmFsVXJsID0gZm9ybWF0KHBhcnNlZCk7XG4gIH1cblxuICBpZiAocHJvdmlkZXIucmVtb3ZlQWZ0ZXIgJiYgZmluYWxVcmwuaW5jbHVkZXMocHJvdmlkZXIucmVtb3ZlQWZ0ZXIpKSB7XG4gICAgZmluYWxVcmwgPSBmaW5hbFVybC5zdWJzdHJpbmcoMCwgZmluYWxVcmwuaW5kZXhPZihwcm92aWRlci5yZW1vdmVBZnRlcikpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyLmFwcGVuZCkge1xuICAgIGZpbmFsVXJsICs9IHByb3ZpZGVyLmFwcGVuZDtcbiAgfVxuXG4gIHJldHVybiBmaW5hbFVybDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVRodW1ibmFpbChwcm92aWRlciwgdXJsKSB7XG4gIHZhciB0aHVtYm5haWxVUkwgPSAnJztcbiAgdmFyIHRodW1ibmFpbENvbmZpZyA9IHByb3ZpZGVyLnRodW1ibmFpbDtcblxuICBpZiAodGh1bWJuYWlsQ29uZmlnICYmIHRodW1ibmFpbENvbmZpZy5mb3JtYXQpIHtcbiAgICB0aHVtYm5haWxVUkwgPSB0aHVtYm5haWxDb25maWcuZm9ybWF0O1xuICAgIE9iamVjdC5rZXlzKHRodW1ibmFpbENvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXkgIT09ICdmb3JtYXQnO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHNlYXJjaCA9IG5ldyBSZWdFeHAoXCJ7XCIuY29uY2F0KGtleSwgXCJ9XCIpLCAnZycpO1xuICAgICAgdmFyIHJlcGxhY2UgPSBuZXcgUmVnRXhwKHRodW1ibmFpbENvbmZpZ1trZXldKS5leGVjKHVybCk7XG4gICAgICBpZiAocmVwbGFjZSkgdGh1bWJuYWlsVVJMID0gdGh1bWJuYWlsVVJMLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlWzFdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aHVtYm5haWxVUkw7XG59IiwiJ3VzZS1zdHJpY3QnO1xuXG4vKiBUT0RPIDogU2VuZCB0aGUgcmVzdWx0IG9mIGd1aWRlIDpcbiAgY29uc3QgZ3VpZGUgPSByZXF1aXJlKCdyZW1hcmstcHJlc2V0LWxpbnQtbWFya2Rvd24tc3R5bGUtZ3VpZGUnKTtcbiovXG5cbmNvbnN0IGh0bWwgPSByZXF1aXJlKCdyZW1hcmstcmVoeXBlJyk7XG5jb25zdCBrYmQgPSByZXF1aXJlKCdyZW1hcmsta2JkJyk7XG5jb25zdCBtYXRoID0gcmVxdWlyZSgncmVtYXJrLW1hdGgnKTtcbmNvbnN0IGhpZ2hsaWdodCA9IHJlcXVpcmUoJ3JlbWFyay1oaWdobGlnaHQuanMnKTtcbmNvbnN0IG11bHRpQ2hvaWNlID0gcmVxdWlyZSgncmVtYXJrLW11bHRpcGxlLWNob2ljZScpO1xuY29uc3QgbGluZUlucHV0ID0gcmVxdWlyZSgncmVtYXJrLWxpbmUtaW5wdXQnKTtcbmNvbnN0IHNlbGVjdCA9IHJlcXVpcmUoJ3JlbWFyay1zZWxlY3QnKTtcbmNvbnN0IHRleHRJbnB1dCA9IHJlcXVpcmUoJ3JlbWFyay10ZXh0LWlucHV0Jyk7XG5jb25zdCByYXcgPSByZXF1aXJlKCdyZWh5cGUtcmF3Jyk7XG5jb25zdCByZWh5cGVLYXRleCA9IHJlcXVpcmUoJ3JlaHlwZS1rYXRleCcpO1xuY29uc3QgcmVoeXBlU3RyaW5naWZ5ID0gcmVxdWlyZSgncmVoeXBlLXN0cmluZ2lmeScpO1xuY29uc3QgdW5pZmllZCA9IHJlcXVpcmUoJ3VuaWZpZWQnKTtcbmNvbnN0IHJlbWFyayA9IHJlcXVpcmUoJ3JlbWFyay1wYXJzZScpO1xuY29uc3QgY3VzdG9tQmxvY2tzID0gcmVxdWlyZSgncmVtYXJrLWN1c3RvbS1ibG9ja3MnKTtcbmNvbnN0IGlmcmFtZXMgPSByZXF1aXJlKCdyZW1hcmstaWZyYW1lcycpO1xuXG5mdW5jdGlvbiB0b0hUTUwoZGF0YSwgZm5jKSB7XG4gIHVuaWZpZWQoKVxuICAgIC51c2UocmVtYXJrKVxuICAgIC51c2UobGluZUlucHV0KVxuICAgIC51c2UodGV4dElucHV0KVxuICAgIC51c2Uoc2VsZWN0KVxuICAgIC51c2UobXVsdGlDaG9pY2UpXG4gICAgLnVzZShtYXRoKVxuICAgIC51c2Uoa2JkKVxuICAgIC51c2UoY3VzdG9tQmxvY2tzLCB7XG4gICAgICBpbmZvcm1hdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggaW5mb3JtYXRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBjb21tZW50JyxcbiAgICAgICAgdGl0bGU6ICdvcHRpb25hbCcsXG4gICAgICB9LFxuICAgICAgYXR0ZW50aW9uOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBhdHRlbnRpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBxdWVzdGlvbjoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggcXVlc3Rpb24nLFxuICAgICAgICB0aXRsZTogJ29wdGlvbmFsJyxcbiAgICAgIH0sXG4gICAgICBnb29kOiB7XG4gICAgICAgIGNsYXNzZXM6ICdzcGVjaWFsLWJveCBnb29kJyxcbiAgICAgIH0sXG4gICAgICBzZWNyZXQ6IHtcbiAgICAgICAgY2xhc3NlczogJ3NwZWNpYWwtYm94IHNlY3JldCcsXG4gICAgICAgIHRpdGxlOiAnb3B0aW9uYWwnLFxuICAgICAgfSxcbiAgICAgIGJhZDoge1xuICAgICAgICBjbGFzc2VzOiAnc3BlY2lhbC1ib3ggYmFkJyxcbiAgICAgIH19KVxuICAgIC51c2UoaGlnaGxpZ2h0KVxuICAgIC51c2UoaWZyYW1lcywge1xuICAgICAgLy8gVGhpcyBrZXkgY29ycmVzcG9uZHMgdG8gdGhlIGhvc3RuYW1lOiAhKGh0dHA6Ly9ob3N0bmFtZS9mb28pXG4gICAgICAvLyB0aGUgY29uZmlnIGFzc29jaWF0ZWQgdG8gdGhpcyBob3N0bmFtZSB3aWxsIGFwcGx5IHRvIGFueSBpZnJhbWVcbiAgICAgIC8vIHdpdGggYSBtYXRjaGluZyBob3N0bmFtZVxuICAgICAgJ3d3dy55b3V0dWJlLmNvbSc6IHtcbiAgICAgICAgdGFnOiAnSUZSQU1FJyxcbiAgICAgICAgd2lkdGg6IDU2MCxcbiAgICAgICAgaGVpZ2h0OiAzMTUsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcmVwbGFjZTogW1xuICAgICAgICAgIFsnd2F0Y2g/dj0nLCAnZW1iZWQvJ10sXG4gICAgICAgICAgWydodHRwOi8vJywgJ2h0dHBzOi8vJ10sXG4gICAgICAgIF0sXG4gICAgICAgIHRodW1ibmFpbDoge1xuICAgICAgICAgIGZvcm1hdDogJ2h0dHA6Ly9pbWcueW91dHViZS5jb20vdmkve2lkfS8wLmpwZycsXG4gICAgICAgICAgaWQ6ICcuKy8oLispJCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlQWZ0ZXI6ICcmJ1xuICAgICAgfVxuICAgIH0pXG4gICAgLnVzZShodG1sLCB7YWxsb3dEYW5nZXJvdXNIVE1MOiB0cnVlfSlcbiAgICAudXNlKHJlaHlwZUthdGV4KVxuICAgIC51c2UocmF3KVxuICAgIC51c2UocmVoeXBlU3RyaW5naWZ5KVxuXG4gICAgLnByb2Nlc3MoZGF0YSwgZm5jKTtcbn1cblxudG9IVE1MLmRlZmF1bHRWYWx1ZSA9IGBQbHVnaW5zIHByZXNlbnRhdGlvblxuPT09PT09PT09PT09PT09PT1cblxuVGhpcyBwYWdlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgW3JlbWFya11bcmVtYXJrXSB3aXRoIHBsdWdpbnMgdGhhdCBJIGNyZWF0ZWQuIFRoZXNlIHBsdWdpbnMgYXJlIHVzZWQgdG8gcGFyc2UgW2xpbmVzXVtyZW1hcmstbGluZS1pbnB1dF0gb2YgW3RleHRdKHJlbWFyay10ZXh0LWlucHV0KSwgW3NlbGVjdGlvbiBib3hlc11bcmVtYXJrLXNlbGVjdF0gYW5kIGV2ZW4gW01DUXNdW3JlbWFyay1tY3FdLlxuXG5UaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvcG9zZSBhIHNldCBvZiBwbHVnaW5zIGFsbG93aW5nIHRvIGNyZWF0ZSAqKmV4ZXJjaXNlcyoqIGVhc2lseS5cblxuVG8gZmlyc3QgbGV0J3Mgc2VlIHNvbWVzIGV4YW1wbGVzICFcblxuRXhhbXBsZSBvZiBleGVyY2lzZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSAxNTF0aCBwb2vDqW1vbiBbX18xNTF0aCBwb2vDqW1vbl9fXXsjcG9rZW1vbiBvbmlucHV0PVwicG9rZW1vbih0aGlzKVwifSBpcyBvbmUgb2YgdGhlIHR3byBwb2tlbW9ucyB0aGF0IGNhbiB1c2UgdHJhbnNmb3JtIGF0dGFjayAodGhlIG90aGVyIG9uZSBpcyBbIFBpa2FjaHUgfCBEaXR0byB8IE1ld3RvdyB8IEVldmVlIHx2XSApLlxuXG5cbkxpbmUgZWRpdFxuLS0tLS0tLS0tXG5cbllvdSBjYW4gdXNlIGxpbmUgZWRpdCBsaWtlIHRoYXQgOlxuXG5Mb2dpbiA6IFtfX2VtYWlsIG9yIHVzZXJuYW1lX19deyNsb2dpbn0gIFxuUGFzc3dkOiBbX19QYXNzd2RfX117I3Bhc3N3b3JkIHR5cGU9cGFzc3dvcmR9XG5cblRleHQgZWRpdFxuLS0tLS0tLS1cblxuSXQncyBhbHNvIGVhc3kgdG8gdXNlIHRleHQgZWRpdCA6XG5cbltfX19fX19cblxuVGhpcyBpcyBhIHRleHQgem9uZVxuXG5fX19fX19de3Jvd3M9MTMgY29scz0zMH1cblxuXG5TZWxlY3Rpb24gYm94XG4tLS0tLS0tLS0tLS0tXG5cblRvIHVzZSBhIHNlbGVjdGlvbiBib3gsIGp1c3Qgd3JpdGUgaXQgaW4gdGhlIG1hcmtkb3duIGZpbGUuXG5cblsgTWFyaW8gfCBQZWFjaCB8IEx1aWdpIHx2XVxuXG5bcmVtYXJrXTogaHR0cHM6Ly9naXRodWIuY29tL3JlbWFya2pzL3JlbWFyayBcIkdpdGh1YiBvZiB0aGUgcmVtYXJrIHByb2plY3RcIlxuW3JlbWFyay1saW5lLWlucHV0XTogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmVtYXJrLWxpbmUtaW5wdXRcbltyZW1hcmstdGV4dC1pbnB1dF06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlbWFyay10ZXh0LWlucHV0XG5bcmVtYXJrLXNlbGVjdF06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlbWFyay1zZWxlY3RcblxuXG48c2NyaXB0PlxuICBpZiggIXBva2Vtb24gKSB7XG5mdW5jdGlvbiBwb2tlbW9uKCBlbGVtICkge1xuICAgIGlmKCBlbGVtLnZhbHVlICE9ICdtZXcnICkge1xuICAgICAgICBpZiggZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoJ3ZhbGlkJykgKVxuICAgICAgICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpXG4gICAgICAgIGVsZW1bJ2NsYXNzTmFtZSddID0gJ2ludmFsaWQnO1xuICAgIH1lbHNle1xuICAgICAgICBpZiggZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoJ2ludmFsaWQnKSApXG4gICAgICAgICAgICBlbGVtLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQnKVxuICAgICAgICBlbGVtLmNsYXNzTGlzdC5hZGQoJ3ZhbGlkJylcbiAgICB9XG59fTwvc2NyaXB0PmA7XG5cbm1vZHVsZS5leHBvcnRzID0gdG9IVE1MO1xuIl0sIm5hbWVzIjpbInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wSXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b09iamVjdCIsInZhbCIsIlR5cGVFcnJvciIsImFzc2lnbiIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJzaG91bGRVc2VOYXRpdmUiLCJmcm9tIiwic3ltYm9scyIsInRvIiwicyIsInR5cGUiLCJwcm9wcyIsInZhbHVlIiwibm9kZSIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuIiwiY29udmVydCIsInRlc3QiLCJCb29sZWFuIiwidHlwZUZhY3RvcnkiLCJvayIsImFueUZhY3RvcnkiLCJtYXRjaGVzRmFjdG9yeSIsIkVycm9yIiwidGVzdHMiLCJjaGVja3MiLCJyZXN1bHRzIiwiaW5kZXgiLCJjb252ZXJ0QWxsIiwiYXBwbHkiLCJ0aGlzIiwidmlzaXRQYXJlbnRzIiwiQ09OVElOVUUiLCJTS0lQIiwiRVhJVCIsInRyZWUiLCJ2aXNpdG9yIiwicmV2ZXJzZSIsImlzIiwib25lIiwicGFyZW50cyIsInN1YnJlc3VsdCIsInJlc3VsdCIsInRvUmVzdWx0Iiwic3RlcCIsImFsbCIsImNvbmNhdCIsInZpc2l0IiwicGFyZW50IiwiaW5kZXhPZiIsInBvc2l0aW9uIiwiZXhwb3J0cyIsImZhY3RvcnkiLCJwb2ludCIsImRpc3BsYXlOYW1lIiwibGluZSIsImNvbHVtbiIsIm9mZnNldCIsImlzTmFOIiwic3RhcnQiLCJlbmQiLCJvcHRpb25hbCIsIm9wdGlvbnMiLCJjYWNoZSIsImlkZW50aWZpZXIiLCJpZCIsIm5vcm1hbGlzZSIsIm93biIsImdldHRlckZhY3RvcnkiLCJjb21tb25tYXJrIiwiZGVmaW5pdGlvbiIsImdhdGhlciIsInRvVXBwZXJDYXNlIiwibW9kdWxlIiwic3RyIiwicmVwbGFjZSIsImgiLCJoZWFkIiwibm9kZXMiLCJ2YWx1ZXMiLCJ0cmltIiwibGVmdCIsImZuIiwiaGFuZGxlcnMiLCJ1bmtub3duIiwiZGF0YSIsInRleHQiLCJhdWdtZW50IiwidSIsImxvb3NlIiwicHVzaCIsIml0ZW1zIiwibmFtZSIsIm9yZGVyZWQiLCJwcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwid3JhcCIsImRlZiIsImJhY2tSZWZlcmVuY2UiLCJjb250ZW50IiwidGFpbCIsImZvb3Rub3RlQnlJZCIsImZvb3Rub3RlT3JkZXIiLCJsaXN0SXRlbXMiLCJ1cmwiLCJoUHJvcGVydGllcyIsInRoZW1hdGljQnJlYWsiLCJsaXN0IiwicmVzIiwibnVtIiwibWF4Iiwic3Vic3RyIiwic2l6ZSIsImNvZGUiLCJhZGQiLCJzdHJpbmciLCJ0YWJTaXplIiwiY2hhckNvZGVBdCIsInRhYiIsInNsaWNlIiwicmVwZWF0IiwibGluZUZlZWQiLCJjYXJyaWFnZVJldHVybiIsImRldGFiIiwibGFuZyIsIm1hdGNoIiwiaHJlZiIsImxhYmVsIiwiZm9vdG5vdGVSZWZlcmVuY2UiLCJkZXB0aCIsImRhbmdlcm91cyIsImVuY29kZUNhY2hlIiwiZW5jb2RlIiwiZXhjbHVkZSIsImtlZXBFc2NhcGVkIiwibCIsIm5leHRDb2RlIiwiZGVmYXVsdENoYXJzIiwiY2giLCJ0b1N0cmluZyIsImdldEVuY29kZUNhY2hlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiY29tcG9uZW50Q2hhcnMiLCJjb250ZW50cyIsInN1YnR5cGUiLCJyZWZlcmVuY2VUeXBlIiwic3VmZml4IiwiYWx0IiwidW5zaGlmdCIsImxpc3RJdGVtTG9vc2UiLCJzcHJlYWQiLCJ3cyIsIm5ld2xpbmUiLCJibG9ja3F1b3RlIiwicmVxdWlyZSQkMCIsImJyZWFrIiwicmVxdWlyZSQkMSIsInJlcXVpcmUkJDIiLCJkZWxldGUiLCJyZXF1aXJlJCQzIiwiZW1waGFzaXMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsImZvb3Rub3RlIiwicmVxdWlyZSQkNiIsImhlYWRpbmciLCJyZXF1aXJlJCQ3IiwiaHRtbCIsInJlcXVpcmUkJDgiLCJpbWFnZVJlZmVyZW5jZSIsInJldmVydCIsInNyYyIsIm5vcm1hbGl6ZSIsInRpdGxlIiwidW5kZWZpbmVkIiwiaW1hZ2UiLCJpbmxpbmVDb2RlIiwiY29sbGFwc2UiLCJsaW5rUmVmZXJlbmNlIiwibGluayIsImxpc3RJdGVtIiwiY29udGFpbmVyIiwiY2hpbGQiLCJyYXciLCJsaXN0TG9vc2UiLCJ0YWdOYW1lIiwiY2hlY2tlZCIsImRpc2FibGVkIiwicmVxdWlyZSQkMTUiLCJwYXJhZ3JhcGgiLCJyb290Iiwic3Ryb25nIiwidGFibGUiLCJwb3MiLCJyb3ciLCJvdXQiLCJjZWxsIiwicm93cyIsImFsaWduIiwiYWxpZ25MZW5ndGgiLCJ0cmltTGluZXMiLCJyZXF1aXJlJCQyMSIsInRvbWwiLCJpZ25vcmUiLCJ5YW1sIiwiZm9vdG5vdGVEZWZpbml0aW9uIiwic2V0dGluZ3MiLCJhbGxvd0Rhbmdlcm91c0hUTUwiLCJkZWZpbml0aW9ucyIsInh0ZW5kIiwicmlnaHQiLCJjdHgiLCJoTmFtZSIsImhDaGlsZHJlbiIsImdlbmVyYXRlZCIsImZvb3QiLCJmb290ZXIiLCJkZXN0aW5hdGlvbiIsInByb2Nlc3MiLCJmaWxlIiwibmV4dCIsInJ1biIsIm1kYXN0Mmhhc3QiLCJicmlkZ2UiLCJtdXRhdGUiLCJjaGFyYWN0ZXIiLCJyZSIsImZyb21Db2RlIiwiY2hhckF0IiwiQ19QSVBFIiwiRE9VQkxFIiwibG9jYXRvciIsImZyb21JbmRleCIsImlubGluZVRva2VuaXplciIsImVhdCIsInNpbGVudCIsImdmbSIsIndoaXRlc3BhY2UiLCJwcmV2aW91cyIsInByZWNlZGluZyIsInN1YnZhbHVlIiwibm93IiwidG9rZW5pemVJbmxpbmUiLCJQYXJzZXIiLCJpbmxpbmVUb2tlbml6ZXJzIiwiaW5saW5lTWV0aG9kcyIsImtiZCIsInNwbGljZSIsIkNvbXBpbGVyIiwidmlzaXRvcnMiLCJwYXJzZXIiLCJibG9ja1Rva2VuaXplcnMiLCJjb21waWxlciIsInV0aWwiLCJpc1JlbWFya1BhcnNlciIsInByb3RvIiwibWF0aElubGluZVRva2VuaXplciIsInByZXYiLCJjb250ZW50U3RhcnQiLCJjb250ZW50RW5kIiwidmFsdWVFbmQiLCJkb3VibGUiLCJlc2NhcGVkIiwiYmFja3NsYXNoIiwiZG9sbGFyU2lnbiIsInNwYWNlIiwiZGlnaXQwIiwiZGlnaXQ5IiwiY2xhc3NMaXN0IiwiaW5saW5lTWF0aERvdWJsZSIsIm1hdGhEaXNwbGF5IiwibWF0aCIsImF0dGFjaFBhcnNlciIsImlzUmVtYXJrQ29tcGlsZXIiLCJpbmxpbmVNYXRoIiwiZmVuY2UiLCJpbmNsdWRlcyIsImF0dGFjaENvbXBpbGVyIiwiYmxvY2tNZXRob2RzIiwiaW50ZXJydXB0UGFyYWdyYXBoIiwiaW50ZXJydXB0TGlzdCIsImludGVycnVwdEJsb2NrcXVvdGUiLCJsaW5lRW5kIiwibGluZUluZGV4Iiwib3BlbmluZ0ZlbmNlSW5kZW50U2l6ZSIsIm9wZW5pbmdGZW5jZVNpemUiLCJvcGVuaW5nRmVuY2VDb250ZW50U3RhcnQiLCJjbG9zaW5nRmVuY2UiLCJjbG9zaW5nRmVuY2VTaXplIiwibGluZUNvbnRlbnRTdGFydCIsImxpbmVDb250ZW50RW5kIiwibWluRmVuY2VDb3VudCIsImxpbmVGZWVkQ2hhciIsImRvbGxhclNpZ25DaGFyIiwib3B0cyIsImJsb2NrUGx1Z2luIiwiaW5saW5lUGx1Z2luIiwiZ2xvYmFsT2JqZWN0Iiwid2luZG93Iiwic2VsZiIsIm5vZGVUeXBlIiwiaGxqcyIsIkFycmF5UHJvdG8iLCJvYmplY3RLZXlzIiwibGFuZ3VhZ2VzIiwiYWxpYXNlcyIsIm5vSGlnaGxpZ2h0UmUiLCJsYW5ndWFnZVByZWZpeFJlIiwiZml4TWFya3VwUmUiLCJzcGFuRW5kVGFnIiwiY2xhc3NQcmVmaXgiLCJ0YWJSZXBsYWNlIiwidXNlQlIiLCJDT01NT05fS0VZV09SRFMiLCJlc2NhcGUiLCJ0YWciLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwiaXNOb3RIaWdobGlnaHRlZCIsImxhbmd1YWdlIiwiaW5oZXJpdCIsIm9iamVjdHMiLCJvYmoiLCJub2RlU3RyZWFtIiwiX25vZGVTdHJlYW0iLCJmaXJzdENoaWxkIiwibmV4dFNpYmxpbmciLCJub2RlVmFsdWUiLCJldmVudCIsImV4cGFuZF9vcl9jbG9uZV9tb2RlIiwibW9kZSIsInZhcmlhbnRzIiwiY2FjaGVkX3ZhcmlhbnRzIiwidmFyaWFudCIsImRlcGVuZGVuY3lPblBhcmVudCIsImVuZHNXaXRoUGFyZW50Iiwic3RhcnRzIiwic2NvcmVGb3JLZXl3b3JkIiwia2V5d29yZCIsInByb3ZpZGVkU2NvcmUiLCJOdW1iZXIiLCJ3b3JkIiwiY29tcGlsZUxhbmd1YWdlIiwicmVTdHIiLCJsYW5nUmUiLCJnbG9iYWwiLCJSZWdFeHAiLCJjYXNlX2luc2Vuc2l0aXZlIiwiYnVpbGRNb2RlUmVnZXgiLCJtYXRjaGVyUmUiLCJ0ZXJtIiwibWF0Y2hJbmRleGVzIiwicmVnZXhlcyIsIm1hdGNoZXIiLCJtYXRjaEF0IiwiYWRkUnVsZSIsInJ1bGUiLCJyZWdleCIsImV4ZWMiLCJyZUNvdW50TWF0Y2hHcm91cHMiLCJjb250YWlucyIsImJlZ2luS2V5d29yZHMiLCJiZWdpbiIsInRlcm1pbmF0b3JfZW5kIiwiaWxsZWdhbCIsInRlcm1pbmF0b3JzIiwiZWwiLCJyZWdleHBzIiwic2VwYXJhdG9yIiwiYmFja3JlZmVyZW5jZVJlIiwibnVtQ2FwdHVyZXMiLCJyZXQiLCJzdWJzdHJpbmciLCJqb2luUmUiLCJsYXN0SW5kZXgiLCJleHRyYSIsImNvbXBpbGVNb2RlIiwiY29tcGlsZWQiLCJrZXl3b3JkcyIsInJhd0tleXdvcmRzIiwiY29tcGlsZWRfa2V5d29yZHMiLCJzcGxpdEFuZENvbXBpbGUiLCJwYWlyIiwiY29tcGlsZUtleXdvcmRzIiwibGV4ZW1lc1JlIiwibGV4ZW1lcyIsImJlZ2luUmUiLCJlbmRTYW1lQXNCZWdpbiIsImVuZFJlIiwiaWxsZWdhbFJlIiwicmVsZXZhbmNlIiwiYyIsImhpZ2hsaWdodCIsImlnbm9yZV9pbGxlZ2FscyIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRNYXRjaCIsIm1hdGNoX3N0ciIsImJ1aWxkU3BhbiIsImNsYXNzbmFtZSIsImluc2lkZVNwYW4iLCJsZWF2ZU9wZW4iLCJub1ByZWZpeCIsIm9wZW5TcGFuIiwicHJvY2Vzc0J1ZmZlciIsInRvcCIsInN1Ykxhbmd1YWdlIiwiZXhwbGljaXQiLCJtb2RlX2J1ZmZlciIsImNvbnRpbnVhdGlvbnMiLCJoaWdobGlnaHRBdXRvIiwicHJvY2Vzc1N1Ykxhbmd1YWdlIiwia2V5d29yZF9tYXRjaCIsImxhc3RfaW5kZXgiLCJwcm9jZXNzS2V5d29yZHMiLCJzdGFydE5ld01vZGUiLCJjcmVhdGUiLCJkb0JlZ2luTWF0Y2giLCJsZXhlbWUiLCJuZXdfbW9kZSIsImVzY2FwZVJlIiwic2tpcCIsImV4Y2x1ZGVCZWdpbiIsInJldHVybkJlZ2luIiwiZG9FbmRNYXRjaCIsImVuZF9tb2RlIiwiZW5kT2ZNb2RlIiwidGVzdFJlIiwiZW5kc1BhcmVudCIsIm9yaWdpbiIsInJldHVybkVuZCIsImV4Y2x1ZGVFbmQiLCJsYXN0TWF0Y2giLCJwcm9jZXNzTGV4ZW1lIiwidGV4dF9iZWZvcmVfbWF0Y2giLCJwcm9jZXNzZWQiLCJnZXRMYW5ndWFnZSIsImN1cnJlbnQiLCJjb3VudCIsImUiLCJtZXNzYWdlIiwibGFuZ3VhZ2VTdWJzZXQiLCJzZWNvbmRfYmVzdCIsImZpbHRlciIsImF1dG9EZXRlY3Rpb24iLCJmaXhNYXJrdXAiLCJwMSIsImhpZ2hsaWdodEJsb2NrIiwiYmxvY2siLCJvcmlnaW5hbFN0cmVhbSIsInJlc3VsdE5vZGUiLCJfY2xhc3MiLCJjbGFzc2VzIiwicGFyZW50Tm9kZSIsImJsb2NrTGFuZ3VhZ2UiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnROUyIsImlubmVySFRNTCIsInRleHRDb250ZW50Iiwib3JpZ2luYWwiLCJoaWdobGlnaHRlZCIsIm5vZGVTdGFjayIsInNlbGVjdFN0cmVhbSIsIm9wZW4iLCJhdHRyaWJ1dGVzIiwiYSIsImNsb3NlIiwicmVuZGVyIiwic3RyZWFtIiwicG9wIiwibWVyZ2VTdHJlYW1zIiwicHJldkNsYXNzTmFtZSIsImN1cnJlbnRMYW5nIiwicmVzdWx0TGFuZyIsImJ1aWxkQ2xhc3NOYW1lIiwiaW5pdEhpZ2hsaWdodGluZyIsImNhbGxlZCIsImJsb2NrcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJkaXNhYmxlQXV0b2RldGVjdCIsImNvbmZpZ3VyZSIsInVzZXJfb3B0aW9ucyIsImluaXRIaWdobGlnaHRpbmdPbkxvYWQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJMYW5ndWFnZSIsInJhd0RlZmluaXRpb24iLCJiaW5kIiwiYWxpYXMiLCJsaXN0TGFuZ3VhZ2VzIiwiSURFTlRfUkUiLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiTlVNQkVSX1JFIiwiQ19OVU1CRVJfUkUiLCJCSU5BUllfTlVNQkVSX1JFIiwiUkVfU1RBUlRFUlNfUkUiLCJCQUNLU0xBU0hfRVNDQVBFIiwiQVBPU19TVFJJTkdfTU9ERSIsIlFVT1RFX1NUUklOR19NT0RFIiwiUEhSQVNBTF9XT1JEU19NT0RFIiwiQ09NTUVOVCIsImluaGVyaXRzIiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNfQkxPQ0tfQ09NTUVOVF9NT0RFIiwiSEFTSF9DT01NRU5UX01PREUiLCJOVU1CRVJfTU9ERSIsIkNfTlVNQkVSX01PREUiLCJCSU5BUllfTlVNQkVSX01PREUiLCJDU1NfTlVNQkVSX01PREUiLCJSRUdFWFBfTU9ERSIsIlRJVExFX01PREUiLCJVTkRFUlNDT1JFX1RJVExFX01PREUiLCJNRVRIT0RfR1VBUkQiLCJuYW1lc3BhY2UiLCJmb3JtYXQiLCJmbXQiLCJhcmciLCJ0bXAiLCJwcmVjaXNpb24iLCJhcmdJbmRleCIsImFyZ3MiLCJsZWFkaW5nWmVybyIsIm5leHRBcmciLCJzbHVycE51bWJlciIsImRpZ2l0cyIsInBhcnNlSW50IiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwidnNwcmludGYiLCJyZXBsYWNlbWVudHMiLCJjb25zb2xlIiwibG9nIiwicHJpbnRmIiwiZmF1bHQiLCJFQ29uc3RydWN0b3IiLCJGb3JtYXR0ZWRFcnJvciIsImZvcm1hdHRlciIsIkhpZ2giLCJldmFsIiwiRXZhbEVycm9yIiwicmFuZ2UiLCJSYW5nZUVycm9yIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlRXJyb3IiLCJzeW50YXgiLCJTeW50YXhFcnJvciIsInVyaSIsIlVSSUVycm9yIiwiaGlnaCIsImxvdyIsInByZWZpeCIsImRlZmF1bHRQcmVmaXgiLCJjb3JlSGlnaGxpZ2h0IiwiYXV0b0hpZ2hsaWdodCIsImxhbmd1YWdlTmFtZXMiLCJyZWdpc3RlckFsaWFzIiwia2V5SW5zZW5zaXRpdmUiLCJrZXlDYWNoZWRWYXJpYW50cyIsImtleVRlcm1pbmF0b3JFbmQiLCJ2ZXJ0aWNhbEJhciIsInBhcmVuT3BlbiIsInBhcmVuQ2xvc2UiLCJjb21tb25LZXl3b3JkcyIsInNlY29uZEJlc3QiLCJzdWJzZXQiLCJjdXJyZW50Q2hpbGRyZW4iLCJzdGFjayIsIm1vZGVCdWZmZXIiLCJjYXNlSW5zZW5zaXRpdmUiLCJmbGF0dGVuIiwiY29tbW9uIiwiY29udGFpbmVkIiwiZXhwYW5kT3JDbG9uZU1vZGUiLCJjb21waWxlQ29udGFpbnMiLCJleHByZXNzaW9uIiwiaW5kaWNlcyIsImNhcHR1cmVzIiwiZXJyb3IiLCJhZGRUZXh0IiwibmV3TW9kZSIsImFkZFNpYmxpbmdzIiwibWF0Y2hQbHVzUmVtYWluZGVyIiwiZW5kTW9kZSIsInRleHRCZWZvcmVNYXRjaCIsImJ1aWxkIiwiYnVpbGRUZXh0Iiwic3VibWF0Y2giLCJzaWJsaW5ncyIsInNpYmxpbmciLCJhdHRhY2hlciIsImluY2x1ZGUiLCJhc3QiLCJkZWFsTGFiZWxDaGlsZHJlbiIsImxpc3RDaGlsZCIsInQiLCJLRVlXT1JEIiwidjdfa2V5d29yZHMiLCJMSVRFUkFMIiwiTlVNQkVSUyIsIlNUUklOR1MiLCJEQVRFIiwiQ09NTUVOVFMiLCJidWlsdF9pbiIsInY3X3N5c3RlbV9jb25zdGFudHMiLCJjbGFzcyIsInY4X3N5c3RlbV9zZXRzX29mX3ZhbHVlcyIsInY4X3NoYXJlZF9vYmplY3QiLCJsaXRlcmFsIiwibWV0YS1rZXl3b3JkIiwidjdfbWV0YV9rZXl3b3JkcyIsImNvbW1lbnRNb2RlIiwicnVsZURlY2xhcmF0aW9uTW9kZSIsIkhUVFBfVkVSQlMiLCJBUzNfUkVTVF9BUkdfTU9ERSIsIklEX1JFR0VYIiwiVkFSX0RFQ0xTIiwiYnVpbHRJblR5cGVNb2RlIiwib2JqZWN0SGFuZGxlTW9kZSIsImdlbmVyaWNNb2RlIiwiTlVNQkVSIiwibm9tYXJrdXAiLCJTVFJJTkciLCJQQVJBTVMiLCJDT01NRU5UX01PREVfMSIsIktFWVdPUkRTIiwiU1VCU1QiLCJURU1QTEFURV9TVFJJTkciLCJQQVJBTVNfQ09OVEFJTlMiLCJDUFBfUFJJTUlUSVZFX1RZUEVTIiwiUFJFUFJPQ0VTU09SIiwiRlVOQ1RJT05fVElUTEUiLCJDUFBfS0VZV09SRFMiLCJFWFBSRVNTSU9OX0NPTlRBSU5TIiwicHJlcHJvY2Vzc29yIiwic3RyaW5ncyIsIkFSRFVJTk9fS1ciLCJBUkRVSU5PIiwia3dzIiwibWV0YSIsIlRBR19JTlRFUk5BTFMiLCJCQUNLVElDS19FU0NBUEUiLCJWQVJJQUJMRSIsIlZBUiIsIlFVT1RFX1NUUklORyIsIl8iLCJDT01NRU5UX01PREVTIiwiQ0hBUl9TVFJJTkciLCJQUk9DRURVUkUiLCJPQkpFQ1QiLCJFWFBSRVNTSU9OUyIsIlNZTUJPTF9SRSIsIlNZTUJPTCIsIkNPTExFQ1RJT04iLCJISU5UIiwiSElOVF9DT0wiLCJLRVkiLCJMSVNUIiwiQk9EWSIsIk5BTUUiLCJidWlsdGluLW5hbWUiLCJERUZBVUxUX0NPTlRBSU5TIiwiSlNfSURFTlRfUkUiLCJUSVRMRSIsIkNPTU1BTkRTIiwiSU5UX1NVRkZJWCIsIkNSWVNUQUxfTUVUSE9EX1JFIiwiQ1JZU1RBTF9QQVRIX1JFIiwiQ1JZU1RBTF9LRVlXT1JEUyIsIkVYUEFOU0lPTiIsInJlY3Vyc2l2ZVBhcmVuIiwiUV9TVFJJTkciLCJSRUdFWFAiLCJDUllTVEFMX0RFRkFVTFRfQ09OVEFJTlMiLCJWRVJCQVRJTV9TVFJJTkciLCJWRVJCQVRJTV9TVFJJTkdfTk9fTEYiLCJTVUJTVF9OT19MRiIsIklOVEVSUE9MQVRFRF9TVFJJTkciLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HIiwiSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiIsIlRZUEVfSURFTlRfUkUiLCJSVUxFIiwiaW50ZWdlcl9yZSIsImVzY2FwZV9zZXF1ZW5jZV9yZSIsIkRfSU5URUdFUl9NT0RFIiwiRF9GTE9BVF9NT0RFIiwiRF9DSEFSQUNURVJfTU9ERSIsIkRfU1RSSU5HX01PREUiLCJEX05FU1RJTkdfQ09NTUVOVF9NT0RFIiwiQlJBQ0VEX1NVQlNUIiwiRElSRUNUSVZFIiwiQ0xBU1MiLCJGVU5DVElPTiIsIkZJTFRFUiIsIkRUU19SRUZFUkVOQ0UiLCJEVFNfS0VZV09SRCIsIkRUU19MQUJFTCIsIkRUU19DRUxMX1BST1BFUlRZIiwiRFRTX05PREUiLCJFTElYSVJfSURFTlRfUkUiLCJFTElYSVJfS0VZV09SRFMiLCJFTElYSVJfREVGQVVMVF9DT05UQUlOUyIsIkNPTlNUUlVDVE9SIiwiUlVCWV9NRVRIT0RfUkUiLCJSVUJZX0tFWVdPUkRTIiwiWUFSRE9DVEFHIiwiSVJCX09CSkVDVCIsIlJVQllfREVGQVVMVF9DT05UQUlOUyIsIklSQl9ERUZBVUxUIiwiQkFTSUNfQVRPTV9SRSIsIkZVTkNUSU9OX05BTUVfUkUiLCJFUkxBTkdfUkVTRVJWRUQiLCJOQU1FRF9GVU4iLCJGVU5DVElPTl9DQUxMIiwiVFVQTEUiLCJWQVIxIiwiVkFSMiIsIlJFQ09SRF9BQ0NFU1MiLCJCTE9DS19TVEFURU1FTlRTIiwiQkFTSUNfTU9ERVMiLCJNRVRIT0QiLCJUWVBFUEFSQU0iLCJidWlsdC1pbiIsIlNZTUJPTFMiLCJRU1RSIiwiQVNTSUdOTUVOVCIsIkRFU0NURVhUIiwiQVRfQ09NTUVOVF9NT0RFIiwiU1RSVUNUX1RZUEUiLCJQQVJTRV9QQVJBTVMiLCJGVU5DVElPTl9ERUYiLCJERUZJTklUSU9OIiwiQlVJTFRfSU5fUkVGIiwiU1RSSU5HX1JFRiIsIkZVTkNUSU9OX1JFRiIsIkZVTkNUSU9OX1JFRl9QQVJBTVMiLCJHQ09ERV9DT0RFIiwic3ltYm9sIiwiR09fS0VZV09SRFMiLCJCVUlMVF9JTlMiLCJJREVOVElGSUVSX1BMQUlOX09SX1FVT1RFRCIsIkVYUFJFU1NJT05fT1JfSEVMUEVSX0NBTEwiLCJCTE9DS19NVVNUQUNIRV9DT05URU5UUyIsIkJBU0lDX01VU1RBQ0hFX0NPTlRFTlRTIiwiUFJBR01BIiwiVEFHX0lOTkFSRFMiLCJWRVJTSU9OIiwiRE9DVEFHUyIsIkNPTlNUQU5UUyIsIk1FVEhPRFMiLCJUWVBFUyIsIlZBUklBQkxFUyIsIkZVTkNUSU9OX05BTUVfSURFTlRfUkUiLCJKQVZBX05VTUJFUl9NT0RFIiwiSFRNTF9URU1QTEFURSIsIkNTU19URU1QTEFURSIsIlBBUkFNU0JMT0NLIiwiTElURVJBTFMiLCJBTExPV0VEX0NPTU1FTlRTIiwiVkFMVUVfQ09OVEFJTkVSIiwiQVJSQVkiLCJWQVJJQUJMRV9OQU1FX1JFIiwiREVGQVVMVCIsIklOVEVSUE9MQVRJT04iLCJJTlRFUlBPTEFURURfVkFSSUFCTEUiLCJDT01NQU5EIiwiTUFDUk9DQUxMIiwiTEFCRUwiLCJBTk5PVEFUSU9OX1VTRV9TSVRFIiwiQU5OT1RBVElPTiIsIktPVExJTl9OVU1CRVJfTU9ERSIsIktPVExJTl9ORVNURURfQ09NTUVOVCIsIktPVExJTl9QQVJFTl9UWVBFIiwiS09UTElOX1BBUkVOX1RZUEUyIiwiTEFTU09fQ0xPU0VfUkUiLCJMQVNTT19LRVlXT1JEUyIsIkhUTUxfQ09NTUVOVCIsIkxBU1NPX05PUFJPQ0VTUyIsIkxBU1NPX1NUQVJUIiwiTEFTU09fREFUQU1FTUJFUiIsIkxBU1NPX0NPREUiLCJMQVNTT19JREVOVF9SRSIsIklOVEVSUF9JREVOVF9SRSIsIlJVTEVTIiwiVkFMVUUiLCJTVFJJTkdfTU9ERSIsIklERU5UX01PREUiLCJQQVJFTlNfTU9ERSIsIlZBTFVFX1dJVEhfUlVMRVNFVFMiLCJNSVhJTl9HVUFSRF9NT0RFIiwiUlVMRV9NT0RFIiwiQVRfUlVMRV9NT0RFIiwiVkFSX1JVTEVfTU9ERSIsIlNFTEVDVE9SX01PREUiLCJMSVNQX0lERU5UX1JFIiwiTElTUF9TSU1QTEVfTlVNQkVSX1JFIiwiSURFTlQiLCJNRUMiLCJRVU9URUQiLCJRVU9URURfQVRPTSIsIlRJVExFMSIsIlRJVExFMiIsIlNVQlNUX1NJTVBMRSIsIkxTTF9TVFJJTkdTIiwiTFNMX05VTUJFUlMiLCJMT05HX0JSQUNLRVRTIiwiRlVOQyIsIlZBUl9BU1NJRyIsIlRBUkdFVCIsIlRSQU5TUE9TRSIsIkFUT00iLCJQRVJMX0tFWVdPUkRTIiwiU1RSSU5HX0NPTlRBSU5TIiwiUEVSTF9ERUZBVUxUX0NPTlRBSU5TIiwiTklYX0tFWVdPUkRTIiwiQU5USVFVT1RFIiwiREVGSU5FUyIsIkxBTkdVQUdFUyIsIkxFWEVNRVMiLCJDTEFTU19LRVlXT1JEUyIsIlNQRUNJQUxfVkFSUyIsIkZVTkNUSU9OUyIsIk9YWUdFTkVfS0VZV09SRFMiLCJDVVJMWV9DT01NRU5UIiwiUEFSRU5fQ09NTUVOVCIsIkNVUkxZX1NVQkNPTU1FTlQiLCJDT01NRU5UX01PREUiLCJUWVBFU19SRSIsIkZVTkNUSU9OU19SRSIsIlNRTF9LVyIsIlNRTF9CSSIsIlBTX0NPTU1FTlQiLCJQQVJFTlRFRCIsIkxJTkVfQ09NTUVOVCIsIkJBQ0tUSUNLX1NUUklORyIsImlubmVyIiwiV1MwIiwiREVMSU0iLCJLRVlfT1RIRVIiLCJERUxJTV9BTkRfVkFMVUUiLCJQUk9NUFQiLCJMSVRFUkFMX0JSQUNLRVQiLCJRTUxfSURFTlRfUkUiLCJJRF9JRCIsIlFNTF9BVFRSSUJVVEUiLCJRTUxfT0JKRUNUIiwiUkVfSURFTlQiLCJSRV9NT0RVTEVfSURFTlQiLCJSRV9PUEVSQVRPUiIsIm9wIiwiY2hhciIsIlJFX09QRVJBVE9SX1NQQUNFRCIsIlJFX05VTUJFUiIsIk9QRVJBVE9SX01PREUiLCJMSVNUX0NPTlRFTlRTX01PREVTIiwiTU9EVUxFX0FDQ0VTU19DT05URU5UUyIsIlBBUkFNU19DT05URU5UUyIsIkZVTkNUSU9OX0JMT0NLX01PREUiLCJDT05TVFJVQ1RPUl9NT0RFIiwiUEFUVEVSTl9NQVRDSF9CTE9DS19NT0RFIiwiTU9EVUxFX0FDQ0VTU19NT0RFIiwiSURFTlRJRklFUiIsIlBST1BFUlRZIiwiU1RBVEVNRU5UUyIsIkFQT1NfU1RSSU5HIiwiTlVNX1NVRkZJWCIsIkJVSUxUSU5TIiwiVFlQRSIsIlNDSEVNRV9JREVOVF9SRSIsIlNDSEVNRV9TSU1QTEVfTlVNQkVSX1JFIiwiUVVPVEVEX0lERU5UIiwiUVVPVEVEX0xJU1QiLCJDT01NT05fQ09OVEFJTlMiLCJIRVhDT0xPUiIsInNtYWxpX2luc3RyX2xvd19wcmlvIiwiQ0hBUiIsIlZBUl9JREVOVF9SRSIsInNlbGVjdG9yLXRhZyIsIkhFWF9DT0xPUiIsIlNXSUZUX0tFWVdPUkRTIiwiQkxPQ0tfQ09NTUVOVCIsIlRQSUQiLCJUUExBQkVMIiwiRlVOQ1RJT05fTkFNRVMiLCJUQUdTIiwiREVDT1JBVE9SIiwiQVJHUyIsIlhMX0tFWVdPUkRTIiwiRE9VQkxFX1FVT1RFX1RFWFQiLCJJTVBPUlQiLCJGVU5DVElPTl9ERUZJTklUSU9OIiwidkZpbGUiLCJuYk1DIiwiaXNNdWx0aXBsZUNob2lzZSIsIm5iUSIsIm5vZGVDIiwieCIsImZvciIsIm9uY2xpY2siLCJ2aXNpdExpc3QiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX2RlZmluZVByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIm5vdGhpbmdIYXBwZW5kIiwicHJvcCIsImVhdGVuIiwiZGVmYXVsdENvbmZpZyIsImRlZmF1bHRWYWx1ZSIsImluZGV4TmV4dCIsInVzZXJDb25maWciLCJsZXRzRWF0Iiwic3RvcE9uQnJhY2UiLCJlcnJvckRldGVjdGVkIiwiY29uZmlnIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfb2JqZWN0U3ByZWFkIiwibGFiZWxTZWNvbmQiLCJsYWJlbEZpcnN0Iiwic2hvdWxkU3RvcCIsImNoYXJzIiwiZWF0VW50aWwiLCJlYXRPbmUiLCJza2lwU3RvcENoZWNrIiwiZWF0UXVvdGUiLCJxIiwicXVvdGUiLCJlYXRJblF1b3RlIiwiaWRTZXRCeUtleSIsImFkZEF0dHJpYnV0ZSIsIl9yZXQiLCJTVEFSVCIsIkVORCIsInN0YXJ0c1dpdGgiLCJwYXJzZUF0dHIiLCJwbGFjZWhvbGRlciIsImlucHV0IiwibGluZWlucHV0IiwiRU5EX1JHWCIsInVudHJpbSIsInNlbGVjdCIsImxpbmVzZWxlY3QiLCJibG9ja1Rva2VuaXplciIsInNlYXJjaCIsInRleHRpbnB1dCIsIlVOREVGSU5FRF9DT0RFX1BPSU5UUyIsIkVPRiIsIk5VTEwiLCJUQUJVTEFUSU9OIiwiQ0FSUklBR0VfUkVUVVJOIiwiTElORV9GRUVEIiwiRk9STV9GRUVEIiwiU1BBQ0UiLCJFWENMQU1BVElPTl9NQVJLIiwiUVVPVEFUSU9OX01BUksiLCJOVU1CRVJfU0lHTiIsIkFNUEVSU0FORCIsIkFQT1NUUk9QSEUiLCJIWVBIRU5fTUlOVVMiLCJTT0xJRFVTIiwiRElHSVRfMCIsIkRJR0lUXzkiLCJTRU1JQ09MT04iLCJMRVNTX1RIQU5fU0lHTiIsIkVRVUFMU19TSUdOIiwiR1JFQVRFUl9USEFOX1NJR04iLCJRVUVTVElPTl9NQVJLIiwiTEFUSU5fQ0FQSVRBTF9BIiwiTEFUSU5fQ0FQSVRBTF9GIiwiTEFUSU5fQ0FQSVRBTF9YIiwiTEFUSU5fQ0FQSVRBTF9aIiwiUklHSFRfU1FVQVJFX0JSQUNLRVQiLCJHUkFWRV9BQ0NFTlQiLCJMQVRJTl9TTUFMTF9BIiwiTEFUSU5fU01BTExfRiIsIkxBVElOX1NNQUxMX1giLCJMQVRJTl9TTUFMTF9aIiwiUkVQTEFDRU1FTlRfQ0hBUkFDVEVSIiwiREFTSF9EQVNIX1NUUklORyIsIkRPQ1RZUEVfU1RSSU5HIiwiQ0RBVEFfU1RBUlRfU1RSSU5HIiwiU0NSSVBUX1NUUklORyIsIlBVQkxJQ19TVFJJTkciLCJTWVNURU1fU1RSSU5HIiwiY3AiLCJjcDEiLCJjcDIiLCJjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSIsIm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0iLCJzdXJyb2dhdGVJbklucHV0U3RyZWFtIiwibm9uVm9pZEh0bWxFbGVtZW50U3RhcnRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzIiwiZW5kVGFnV2l0aEF0dHJpYnV0ZXMiLCJlbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzIiwidW5leHBlY3RlZFNvbGlkdXNJblRhZyIsInVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyIiwidW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWUiLCJpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUiLCJ1bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWUiLCJtaXNzaW5nRW5kVGFnTmFtZSIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWUiLCJ1bmtub3duTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UiLCJtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UiLCJ1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWUiLCJlb2ZCZWZvcmVUYWdOYW1lIiwiZW9mSW5UYWciLCJtaXNzaW5nQXR0cmlidXRlVmFsdWUiLCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzIiwibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkIiwibWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzIiwibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkIiwibWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIiLCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsIm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllciIsIm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsImFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwiYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXIiLCJjZGF0YUluSHRtbENvbnRlbnQiLCJpbmNvcnJlY3RseU9wZW5lZENvbW1lbnQiLCJlb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQiLCJlb2ZJbkRvY3R5cGUiLCJuZXN0ZWRDb21tZW50IiwiYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50IiwiZW9mSW5Db21tZW50IiwiaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50IiwiZW9mSW5DZGF0YSIsImFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSIsIm51bGxDaGFyYWN0ZXJSZWZlcmVuY2UiLCJzdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2UiLCJjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlIiwiY29udHJvbENoYXJhY3RlclJlZmVyZW5jZSIsIm5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZSIsIm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWUiLCJtaXNzaW5nRG9jdHlwZU5hbWUiLCJpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lIiwiZHVwbGljYXRlQXR0cmlidXRlIiwibm9uQ29uZm9ybWluZ0RvY3R5cGUiLCJtaXNzaW5nRG9jdHlwZSIsIm1pc3BsYWNlZERvY3R5cGUiLCJlbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCIsImNsb3NpbmdPZkVsZW1lbnRXaXRoT3BlbkNoaWxkRWxlbWVudHMiLCJkaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQiLCJvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2YiLCJhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkIiwibWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCIsIm5lc3RlZE5vc2NyaXB0SW5IZWFkIiwiZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dCIsIiQiLCJ1bmljb2RlIiwiQ09ERV9QT0lOVFMiLCJERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUiLCJbb2JqZWN0IE9iamVjdF0iLCJsYXN0R2FwUG9zIiwibGFzdENoYXJQb3MiLCJnYXBTdGFjayIsInNraXBOZXh0TmV3TGluZSIsImxhc3RDaHVua1dyaXR0ZW4iLCJlbmRPZkNodW5rSGl0IiwiYnVmZmVyV2F0ZXJsaW5lIiwibmV4dENwIiwiaXNTdXJyb2dhdGVQYWlyIiwiX2FkZEdhcCIsImdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQiLCJfZXJyIiwiRVJSIiwiY2h1bmsiLCJpc0xhc3RDaHVuayIsImFkdmFuY2UiLCJpc1N1cnJvZ2F0ZSIsIl9wcm9jZXNzU3Vycm9nYXRlIiwiX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzIiwiaXNDb250cm9sQ29kZVBvaW50IiwiaXNVbmRlZmluZWRDb2RlUG9pbnQiLCJVaW50MTZBcnJheSIsIiQkIiwiQ09ERV9QT0lOVF9TRVFVRU5DRVMiLCJDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTIiwiMTI4IiwiMTMwIiwiMTMxIiwiMTMyIiwiMTMzIiwiMTM0IiwiMTM1IiwiMTM2IiwiMTM3IiwiMTM4IiwiMTM5IiwiMTQwIiwiMTQyIiwiMTQ1IiwiMTQ2IiwiMTQ3IiwiMTQ4IiwiMTQ5IiwiMTUwIiwiMTUxIiwiMTUyIiwiMTUzIiwiMTU0IiwiMTU1IiwiMTU2IiwiMTU4IiwiMTU5IiwiSEFTX0RBVEFfRkxBRyIsIkRBVEFfRFVQTEVUX0ZMQUciLCJIQVNfQlJBTkNIRVNfRkxBRyIsIk1BWF9CUkFOQ0hfTUFSS0VSX1ZBTFVFIiwiREFUQV9TVEFURSIsIlJDREFUQV9TVEFURSIsIlJBV1RFWFRfU1RBVEUiLCJTQ1JJUFRfREFUQV9TVEFURSIsIlBMQUlOVEVYVF9TVEFURSIsIlRBR19PUEVOX1NUQVRFIiwiRU5EX1RBR19PUEVOX1NUQVRFIiwiVEFHX05BTUVfU1RBVEUiLCJSQ0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUiLCJSQ0RBVEFfRU5EX1RBR19PUEVOX1NUQVRFIiwiUkNEQVRBX0VORF9UQUdfTkFNRV9TVEFURSIsIlJBV1RFWFRfTEVTU19USEFOX1NJR05fU1RBVEUiLCJSQVdURVhUX0VORF9UQUdfT1BFTl9TVEFURSIsIlJBV1RFWFRfRU5EX1RBR19OQU1FX1NUQVRFIiwiU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05fU1RBVEUiLCJTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5fU1RBVEUiLCJTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVfU1RBVEUiLCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfU1RBVEUiLCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfU1RBVEUiLCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfU1RBVEUiLCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05fU1RBVEUiLCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTl9TVEFURSIsIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVF9TVEFURSIsIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSF9TVEFURSIsIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOX1NUQVRFIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRfU1RBVEUiLCJCRUZPUkVfQVRUUklCVVRFX05BTUVfU1RBVEUiLCJBVFRSSUJVVEVfTkFNRV9TVEFURSIsIkFGVEVSX0FUVFJJQlVURV9OQU1FX1NUQVRFIiwiQkVGT1JFX0FUVFJJQlVURV9WQUxVRV9TVEFURSIsIkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEX1NUQVRFIiwiQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURfU1RBVEUiLCJBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURfU1RBVEUiLCJBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEX1NUQVRFIiwiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR19TVEFURSIsIkJPR1VTX0NPTU1FTlRfU1RBVEUiLCJNQVJLVVBfREVDTEFSQVRJT05fT1BFTl9TVEFURSIsIkNPTU1FTlRfU1RBUlRfU1RBVEUiLCJDT01NRU5UX1NUQVJUX0RBU0hfU1RBVEUiLCJDT01NRU5UX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9TVEFURSIsIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19TVEFURSIsIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX1NUQVRFIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSF9TVEFURSIsIkNPTU1FTlRfRU5EX0RBU0hfU1RBVEUiLCJDT01NRU5UX0VORF9TVEFURSIsIkNPTU1FTlRfRU5EX0JBTkdfU1RBVEUiLCJET0NUWVBFX1NUQVRFIiwiQkVGT1JFX0RPQ1RZUEVfTkFNRV9TVEFURSIsIkRPQ1RZUEVfTkFNRV9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfTkFNRV9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRfU1RBVEUiLCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TVEFURSIsIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRF9TVEFURSIsIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRF9TVEFURSIsIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU1RBVEUiLCJCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNfU1RBVEUiLCJBRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEX1NUQVRFIiwiQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU1RBVEUiLCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURfU1RBVEUiLCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURfU1RBVEUiLCJBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NUQVRFIiwiQk9HVVNfRE9DVFlQRV9TVEFURSIsIkNEQVRBX1NFQ1RJT05fU1RBVEUiLCJDREFUQV9TRUNUSU9OX0JSQUNLRVRfU1RBVEUiLCJDREFUQV9TRUNUSU9OX0VORF9TVEFURSIsIkNIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBVEUiLCJOQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiQU1CSUdVT1VTX0FNUEVSU0FORF9TVEFURSIsIk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9TVEFURSIsIkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUiLCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlRfU1RBVEUiLCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiREVDSU1BTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVRFIiwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORF9TVEFURSIsImlzV2hpdGVzcGFjZSIsImlzQXNjaWlEaWdpdCIsImlzQXNjaWlVcHBlciIsImlzQXNjaWlMb3dlciIsImlzQXNjaWlMZXR0ZXIiLCJpc0FzY2lpQWxwaGFOdW1lcmljIiwiaXNBc2NpaVVwcGVySGV4RGlnaXQiLCJpc0FzY2lpTG93ZXJIZXhEaWdpdCIsInRvQXNjaWlMb3dlckNvZGVQb2ludCIsInRvQ2hhciIsInRvQXNjaWlMb3dlckNoYXIiLCJmaW5kTmFtZWRFbnRpdHlUcmVlQnJhbmNoIiwibm9kZUl4IiwiYnJhbmNoQ291bnQiLCJuZVRyZWUiLCJsbyIsImhpIiwibWlkIiwibWlkQ3AiLCJUb2tlbml6ZXIiLCJQcmVwcm9jZXNzb3IiLCJ0b2tlblF1ZXVlIiwiYWxsb3dDREFUQSIsInN0YXRlIiwicmV0dXJuU3RhdGUiLCJjaGFyUmVmQ29kZSIsInRlbXBCdWZmIiwibGFzdFN0YXJ0VGFnTmFtZSIsImNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCIsImFjdGl2ZSIsImN1cnJlbnRDaGFyYWN0ZXJUb2tlbiIsImN1cnJlbnRUb2tlbiIsImN1cnJlbnRBdHRyIiwiX2NvbnN1bWUiLCJfdW5jb25zdW1lIiwiX2Vuc3VyZUhpYmVybmF0aW9uIiwic2hpZnQiLCJ3cml0ZSIsImluc2VydEh0bWxBdEN1cnJlbnRQb3MiLCJyZXRyZWF0IiwiSElCRVJOQVRJT05fVE9LRU4iLCJwYXR0ZXJuIiwic3RhcnRDcCIsImNhc2VTZW5zaXRpdmUiLCJjb25zdW1lZENvdW50IiwiaXNNYXRjaCIsInBhdHRlcm5MZW5ndGgiLCJwYXR0ZXJuUG9zIiwicGF0dGVybkNwIiwiU1RBUlRfVEFHX1RPS0VOIiwic2VsZkNsb3NpbmciLCJhY2tTZWxmQ2xvc2luZyIsImF0dHJzIiwiRU5EX1RBR19UT0tFTiIsIkNPTU1FTlRfVE9LRU4iLCJpbml0aWFsTmFtZSIsIkRPQ1RZUEVfVE9LRU4iLCJmb3JjZVF1aXJrcyIsInB1YmxpY0lkIiwic3lzdGVtSWQiLCJFT0ZfVE9LRU4iLCJhdHRyTmFtZUZpcnN0Q2giLCJ0b1N0YXRlIiwiZ2V0VG9rZW5BdHRyIiwiX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4iLCJjdCIsIl9jcmVhdGVFT0ZUb2tlbiIsIl9lbWl0Q3VycmVudFRva2VuIiwiX2NyZWF0ZUNoYXJhY3RlclRva2VuIiwiQ0hBUkFDVEVSX1RPS0VOIiwiV0hJVEVTUEFDRV9DSEFSQUNURVJfVE9LRU4iLCJOVUxMX0NIQVJBQ1RFUl9UT0tFTiIsIl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4iLCJjb2RlUG9pbnRzIiwiX2VtaXRDb2RlUG9pbnQiLCJleGNlc3MiLCJpbk5vZGUiLCJ3aXRoU2VtaWNvbG9uIiwiX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUiLCJfZW1pdFNldmVyYWxDb2RlUG9pbnRzIiwiZHJvcFBhcnNlZENodW5rIiwiX2VtaXRFT0ZUb2tlbiIsIl9lbWl0Q2hhcnMiLCJfY3JlYXRlU3RhcnRUYWdUb2tlbiIsIl9yZWNvbnN1bWVJblN0YXRlIiwiX2NyZWF0ZUNvbW1lbnRUb2tlbiIsIl9jcmVhdGVFbmRUYWdUb2tlbiIsIl9pc1RlbXBCdWZmZXJFcXVhbFRvU2NyaXB0U3RyaW5nIiwiX2NyZWF0ZUF0dHIiLCJfbGVhdmVBdHRyTmFtZSIsIl9sZWF2ZUF0dHJWYWx1ZSIsIl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoIiwiX2NyZWF0ZURvY3R5cGVUb2tlbiIsIl9mbHVzaENvZGVQb2ludHNDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlIiwibWF0Y2hSZXN1bHQiLCJfbWF0Y2hOYW1lZENoYXJhY3RlclJlZmVyZW5jZSIsIl9pc0NoYXJhY3RlclJlZmVyZW5jZUF0dHJpYnV0ZVF1aXJrIiwiX2Vyck9uTmV4dENvZGVQb2ludCIsImlzQXNjaWlIZXhEaWdpdCIsInJlcGxhY2VtZW50IiwiTU9ERSIsIkRBVEEiLCJSQ0RBVEEiLCJSQVdURVhUIiwiU0NSSVBUX0RBVEEiLCJQTEFJTlRFWFQiLCJ0b2tlbiIsImF0dHJOYW1lIiwiTlMiLCJIVE1MIiwiTUFUSE1MIiwiU1ZHIiwiWExJTksiLCJYTUwiLCJYTUxOUyIsIkFDVElPTiIsIkVOQ09ESU5HIiwiQ09MT1IiLCJGQUNFIiwiU0laRSIsIk5PX1FVSVJLUyIsIlFVSVJLUyIsIkxJTUlURURfUVVJUktTIiwiQSIsIkFERFJFU1MiLCJBTk5PVEFUSU9OX1hNTCIsIkFQUExFVCIsIkFSRUEiLCJBUlRJQ0xFIiwiQVNJREUiLCJCIiwiQkFTRSIsIkJBU0VGT05UIiwiQkdTT1VORCIsIkJJRyIsIkJMT0NLUVVPVEUiLCJCUiIsIkJVVFRPTiIsIkNBUFRJT04iLCJDRU5URVIiLCJDT0RFIiwiQ09MIiwiQ09MR1JPVVAiLCJERCIsIkRFU0MiLCJERVRBSUxTIiwiRElBTE9HIiwiRElSIiwiRElWIiwiREwiLCJEVCIsIkVNIiwiRU1CRUQiLCJGSUVMRFNFVCIsIkZJR0NBUFRJT04iLCJGSUdVUkUiLCJGT05UIiwiRk9PVEVSIiwiRk9SRUlHTl9PQkpFQ1QiLCJGT1JNIiwiRlJBTUUiLCJGUkFNRVNFVCIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkhFQUQiLCJIRUFERVIiLCJIR1JPVVAiLCJIUiIsIkkiLCJJTUciLCJJTUFHRSIsIklOUFVUIiwiSUZSQU1FIiwiS0VZR0VOIiwiTEkiLCJMSU5LIiwiTElTVElORyIsIk1BSU4iLCJNQUxJR05NQVJLIiwiTUFSUVVFRSIsIk1BVEgiLCJNRU5VIiwiTUVUQSIsIk1HTFlQSCIsIk1JIiwiTU8iLCJNTiIsIk1TIiwiTVRFWFQiLCJOQVYiLCJOT0JSIiwiTk9GUkFNRVMiLCJOT0VNQkVEIiwiTk9TQ1JJUFQiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwiUCIsIlBBUkFNIiwiUFJFIiwiUkIiLCJSUCIsIlJUIiwiUlRDIiwiUlVCWSIsIlMiLCJTQ1JJUFQiLCJTRUNUSU9OIiwiU0VMRUNUIiwiU09VUkNFIiwiU01BTEwiLCJTUEFOIiwiU1RSSUtFIiwiU1RST05HIiwiU1RZTEUiLCJTVUIiLCJTVU1NQVJZIiwiU1VQIiwiVEFCTEUiLCJUQk9EWSIsIlRFTVBMQVRFIiwiVEVYVEFSRUEiLCJURk9PVCIsIlREIiwiVEgiLCJUSEVBRCIsIlRSIiwiVFJBQ0siLCJUVCIsIlUiLCJVTCIsIldCUiIsIlhNUCIsIlRBR19OQU1FUyIsIk5BTUVTUEFDRVMiLCJpc0ltcGxpZWRFbmRUYWdSZXF1aXJlZCIsInRuIiwiaXNJbXBsaWVkRW5kVGFnUmVxdWlyZWRUaG9yb3VnaGx5IiwiaXNTY29waW5nRWxlbWVudCIsIm5zIiwidHJlZUFkYXB0ZXIiLCJzdGFja1RvcCIsImN1cnJlbnRUYWdOYW1lIiwiY3VycmVudFRtcGxDb250ZW50IiwidG1wbENvdW50IiwiZWxlbWVudCIsImlkeCIsImdldE5hbWVzcGFjZVVSSSIsImdldFRhZ05hbWUiLCJfaXNJblRlbXBsYXRlIiwiZ2V0VGVtcGxhdGVDb250ZW50IiwiX3VwZGF0ZUN1cnJlbnRFbGVtZW50Iiwib2xkRWxlbWVudCIsIm5ld0VsZW1lbnQiLCJfaW5kZXhPZiIsInJlZmVyZW5jZUVsZW1lbnQiLCJpbnNlcnRpb25JZHgiLCJwb3BwZWRFbGVtZW50IiwiZWxlbWVudElkeCIsImV4Y2x1c2lvblRhZ05hbWUiLCJOT0FIX0FSS19DQVBBQ0lUWSIsIkZvcm1hdHRpbmdFbGVtZW50TGlzdCIsImVudHJpZXMiLCJib29rbWFyayIsImNhbmRpZGF0ZXMiLCJuZUF0dHJzTGVuZ3RoIiwiZ2V0QXR0ckxpc3QiLCJuZVRhZ05hbWUiLCJuZU5hbWVzcGFjZVVSSSIsImVudHJ5IiwiTUFSS0VSX0VOVFJZIiwiZWxlbWVudEF0dHJzIiwiX2dldE5vYWhBcmtDb25kaXRpb25DYW5kaWRhdGVzIiwiY0xlbmd0aCIsIm5lQXR0cnMiLCJuZUF0dHJzTWFwIiwibmVBdHRyIiwiaiIsImNBdHRyIiwiX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24iLCJFTEVNRU5UX0VOVFJZIiwiYm9va21hcmtJZHgiLCJNaXhpbiIsImhvc3QiLCJvcmlnaW5hbE1ldGhvZHMiLCJvdmVycmlkZGVuTWV0aG9kcyIsIl9nZXRPdmVycmlkZGVuTWV0aG9kcyIsImluc3RhbGwiLCJDdG9yIiwiX19taXhpbnMiLCJjb25zdHJ1Y3RvciIsIm1peGluIiwic3VwZXIiLCJpc0VvbCIsImxpbmVTdGFydFBvcyIsImRyb3BwZWRCdWZmZXJTaXplIiwiY29sIiwibXhuIiwib3JpZyIsInByZXZQb3MiLCJyZWR1Y3Rpb24iLCJ0b2tlbml6ZXIiLCJwb3NUcmFja2VyIiwiUG9zaXRpb25UcmFja2luZ1ByZXByb2Nlc3Nvck1peGluIiwiY3VycmVudEF0dHJMb2NhdGlvbiIsImN0TG9jIiwic3RhcnRMaW5lIiwic3RhcnRDb2wiLCJzdGFydE9mZnNldCIsImVuZExpbmUiLCJlbmRDb2wiLCJlbmRPZmZzZXQiLCJsb2NhdGlvbiIsIm1ldGhvZHMiLCJfZ2V0Q3VycmVudExvY2F0aW9uIiwiX2F0dGFjaEN1cnJlbnRBdHRyTG9jYXRpb25JbmZvIiwibW9kZU5hbWUiLCJvbkl0ZW1Qb3AiLCJwb3BBbGxVcFRvSHRtbEVsZW1lbnQiLCJyZW1vdmUiLCJsYXN0U3RhcnRUYWdUb2tlbiIsImxhc3RGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiIsImxvYyIsInN0YXJ0VGFnIiwic2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsImNsb3NpbmdUb2tlbiIsImdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24iLCJlbmRUYWciLCJmcmFnbWVudENvbnRleHQiLCJfYm9vdHN0cmFwIiwidG9rZW5pemVyTWl4aW4iLCJMb2NhdGlvbkluZm9Ub2tlbml6ZXJNaXhpbiIsIm9wZW5FbGVtZW50cyIsIkxvY2F0aW9uSW5mb09wZW5FbGVtZW50U3RhY2tNaXhpbiIsIl9zZXRFbmRMb2NhdGlvbiIsInNjcmlwdEhhbmRsZXIiLCJfcnVuUGFyc2luZ0xvb3AiLCJfcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCIsIl9wcm9jZXNzVG9rZW4iLCJoYXNJblNjb3BlIiwiX3NldERvY3VtZW50VHlwZSIsImRvY3VtZW50Q2hpbGRyZW4iLCJnZXRDaGlsZE5vZGVzIiwiY25MZW5ndGgiLCJpc0RvY3VtZW50VHlwZU5vZGUiLCJfc2V0U3RhcnRMb2NhdGlvbiIsIl9hdHRhY2hFbGVtZW50VG9UcmVlIiwibmFtZXNwYWNlVVJJIiwiX2FwcGVuZEVsZW1lbnQiLCJfaW5zZXJ0RWxlbWVudCIsIl9pbnNlcnRUZW1wbGF0ZSIsInRtcGxDb250ZW50IiwiX2luc2VydEZha2VSb290RWxlbWVudCIsIl9hcHBlbmRDb21tZW50Tm9kZSIsImNvbW1lbnROb2RlIiwiX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiIsIl9pbnNlcnRDaGFyYWN0ZXJzIiwiaGFzRm9zdGVyUGFyZW50IiwiX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uIiwidGV4dE5vZGVJZHgiLCJiZWZvcmVFbGVtZW50IiwidGV4dE5vZGUiLCJ0bkxvYyIsIm9uUGFyc2VFcnJvciIsIl9zZXRFcnJvckxvY2F0aW9uIiwiX3JlcG9ydEVycm9yIiwiRXJyb3JSZXBvcnRpbmdNaXhpbkJhc2UiLCJsYXN0RXJyT2Zmc2V0IiwicHJlcHJvY2Vzc29yTWl4aW4iLCJFcnJvclJlcG9ydGluZ1ByZXByb2Nlc3Nvck1peGluIiwibG9jQmVmb3JlVG9rZW4iLCJFcnJvclJlcG9ydGluZ1Rva2VuaXplck1peGluIiwiX3Byb2Nlc3NJbnB1dFRva2VuIiwiYmVmb3JlVG9rZW4iLCJET0NVTUVOVF9NT0RFIiwiY2hpbGROb2RlcyIsImNyZWF0ZVRleHROb2RlIiwiYXBwZW5kQ2hpbGQiLCJuZXdOb2RlIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsInRlbXBsYXRlRWxlbWVudCIsImNvbnRlbnRFbGVtZW50IiwiZG9jdHlwZU5vZGUiLCJwcmV2Tm9kZSIsInJlY2lwaWVudCIsInJlY2lwaWVudEF0dHJzTWFwIiwic291cmNlQ29kZUxvY2F0aW9uIiwiZGVmYXVsdHMiLCJyZWR1Y2UiLCJtZXJnZWQiLCJvcHRPYmoiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImVucXVvdGVEb2N0eXBlSWQiLCJoYXNQcmVmaXgiLCJwcmVmaXhlcyIsIkFUVFJTIiwiTUlNRV9UWVBFUyIsIlRFWFRfSFRNTCIsIkFQUExJQ0FUSU9OX1hNTCIsIlNWR19BVFRSU19BREpVU1RNRU5UX01BUCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2Vwcm9maWxlIiwiY2FsY21vZGUiLCJjbGlwcGF0aHVuaXRzIiwiZGlmZnVzZWNvbnN0YW50IiwiZWRnZW1vZGUiLCJmaWx0ZXJ1bml0cyIsImdseXBocmVmIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJncmFkaWVudHVuaXRzIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxlbmd0aGFkanVzdCIsImxpbWl0aW5nY29uZWFuZ2xlIiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJudW1vY3RhdmVzIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzYXR4IiwicG9pbnRzYXR5IiwicG9pbnRzYXR6IiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXF1aXJlZGV4dGVuc2lvbnMiLCJyZXF1aXJlZGZlYXR1cmVzIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidGV4dGxlbmd0aCIsInZpZXdib3giLCJ2aWV3dGFyZ2V0IiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ6b29tYW5kcGFuIiwiWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQIiwieGxpbms6YWN0dWF0ZSIsInhsaW5rOmFyY3JvbGUiLCJ4bGluazpocmVmIiwieGxpbms6cm9sZSIsInhsaW5rOnNob3ciLCJ4bGluazp0aXRsZSIsInhsaW5rOnR5cGUiLCJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIiwieG1sbnMiLCJ4bWxuczp4bGluayIsIlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjbGlwcGF0aCIsImZlYmxlbmQiLCJmZWNvbG9ybWF0cml4IiwiZmVjb21wb25lbnR0cmFuc2ZlciIsImZlY29tcG9zaXRlIiwiZmVjb252b2x2ZW1hdHJpeCIsImZlZGlmZnVzZWxpZ2h0aW5nIiwiZmVkaXNwbGFjZW1lbnRtYXAiLCJmZWRpc3RhbnRsaWdodCIsImZlZmxvb2QiLCJmZWZ1bmNhIiwiZmVmdW5jYiIsImZlZnVuY2ciLCJmZWZ1bmNyIiwiZmVnYXVzc2lhbmJsdXIiLCJmZWltYWdlIiwiZmVtZXJnZSIsImZlbWVyZ2Vub2RlIiwiZmVtb3JwaG9sb2d5IiwiZmVvZmZzZXQiLCJmZXBvaW50bGlnaHQiLCJmZXNwZWN1bGFybGlnaHRpbmciLCJmZXNwb3RsaWdodCIsImZldGlsZSIsImZldHVyYnVsZW5jZSIsImZvcmVpZ25vYmplY3QiLCJsaW5lYXJncmFkaWVudCIsInJhZGlhbGdyYWRpZW50IiwidGV4dHBhdGgiLCJFWElUU19GT1JFSUdOX0NPTlRFTlQiLCJzdGFydFRhZ1Rva2VuIiwiYWRqdXN0ZWRBdHRyTmFtZSIsImFkanVzdGVkQXR0ckVudHJ5IiwiYWRqdXN0ZWRUYWdOYW1lIiwiZm9yZWlnbk5TIiwiaXNIdG1sSW50ZWdyYXRpb25Qb2ludCIsImlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQiLCJERUZBVUxUX09QVElPTlMiLCJzY3JpcHRpbmdFbmFibGVkIiwic291cmNlQ29kZUxvY2F0aW9uSW5mbyIsImRlZmF1bHRUcmVlQWRhcHRlciIsIkhJRERFTl9JTlBVVF9UWVBFIiwiQUFfT1VURVJfTE9PUF9JVEVSIiwiQUFfSU5ORVJfTE9PUF9JVEVSIiwiSU5JVElBTF9NT0RFIiwiQkVGT1JFX0hUTUxfTU9ERSIsIkJFRk9SRV9IRUFEX01PREUiLCJJTl9IRUFEX01PREUiLCJJTl9IRUFEX05PX1NDUklQVF9NT0RFIiwiQUZURVJfSEVBRF9NT0RFIiwiSU5fQk9EWV9NT0RFIiwiVEVYVF9NT0RFIiwiSU5fVEFCTEVfTU9ERSIsIklOX1RBQkxFX1RFWFRfTU9ERSIsIklOX0NBUFRJT05fTU9ERSIsIklOX0NPTFVNTl9HUk9VUF9NT0RFIiwiSU5fVEFCTEVfQk9EWV9NT0RFIiwiSU5fUk9XX01PREUiLCJJTl9DRUxMX01PREUiLCJJTl9TRUxFQ1RfTU9ERSIsIklOX1NFTEVDVF9JTl9UQUJMRV9NT0RFIiwiSU5fVEVNUExBVEVfTU9ERSIsIkFGVEVSX0JPRFlfTU9ERSIsIklOX0ZSQU1FU0VUX01PREUiLCJBRlRFUl9GUkFNRVNFVF9NT0RFIiwiQUZURVJfQUZURVJfQk9EWV9NT0RFIiwiQUZURVJfQUZURVJfRlJBTUVTRVRfTU9ERSIsIklOU0VSVElPTl9NT0RFX1JFU0VUX01BUCIsIlRFTVBMQVRFX0lOU0VSVElPTl9NT0RFX1NXSVRDSF9NQVAiLCJUT0tFTl9IQU5ETEVSUyIsInRva2VuSW5Jbml0aWFsTW9kZSIsImlnbm9yZVRva2VuIiwiYXBwZW5kQ29tbWVudCIsInAiLCJkb2N0eXBlIiwiZ2V0RG9jdW1lbnRNb2RlIiwiaXNDb25mb3JtaW5nIiwic2V0RG9jdW1lbnRNb2RlIiwiaW5zZXJ0aW9uTW9kZSIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInN0YXJ0VGFnSW5Cb2R5IiwiaGVhZEVsZW1lbnQiLCJ0b2tlbkluSGVhZCIsImluc2VydENoYXJhY3RlcnMiLCJzdGFydFRhZ0luSGVhZCIsImVuZFRhZ0luSGVhZCIsInRva2VuSW5IZWFkTm9TY3JpcHQiLCJ0b2tlbkFmdGVySGVhZCIsImZyYW1lc2V0T2siLCJjaGFyYWN0ZXJJbkJvZHkiLCJ3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5IiwiZW5kVGFnSW5Cb2R5IiwiZW9mSW5Cb2R5IiwicGVuZGluZ1NjcmlwdCIsIm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSIsImNoYXJhY3RlckluVGFibGUiLCJzdGFydFRhZ0luVGFibGUiLCJlbmRUYWdJblRhYmxlIiwicGVuZGluZ0NoYXJhY3RlclRva2VucyIsImhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4iLCJ0b2tlbkluVGFibGVUZXh0IiwiaGFzSW5UYWJsZVNjb3BlIiwiZ2VuZXJhdGVJbXBsaWVkRW5kVGFncyIsInBvcFVudGlsVGFnTmFtZVBvcHBlZCIsImFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsImNsZWFyVG9MYXN0TWFya2VyIiwidG9rZW5JbkNvbHVtbkdyb3VwIiwiY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0IiwiX2luc2VydEZha2VFbGVtZW50IiwiaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSIsImNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0IiwiaW5zZXJ0TWFya2VyIiwiX2Nsb3NlVGFibGVDZWxsIiwic3RhcnRUYWdJblNlbGVjdCIsImVuZFRhZ0luU2VsZWN0IiwiX3Jlc2V0SW5zZXJ0aW9uTW9kZSIsIm5ld0luc2VydGlvbk1vZGUiLCJfcG9wVG1wbEluc2VydGlvbk1vZGUiLCJfcHVzaFRtcGxJbnNlcnRpb25Nb2RlIiwiZW9mSW5UZW1wbGF0ZSIsInRva2VuQWZ0ZXJCb2R5Iiwic3RvcFBhcnNpbmciLCJpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQiLCJ0b2tlbkFmdGVyQWZ0ZXJCb2R5IiwiYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQiLCJtZXJnZU9wdGlvbnMiLCJMb2NhdGlvbkluZm9QYXJzZXJNaXhpbiIsIkVycm9yUmVwb3J0aW5nUGFyc2VyTWl4aW4iLCJjcmVhdGVEb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJkb2N1bWVudE1vY2siLCJfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyIsIl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0Iiwicm9vdEVsZW1lbnQiLCJnZXRGaXJzdENoaWxkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX2Fkb3B0Tm9kZXMiLCJzdG9wcGVkIiwiZm9ybUVsZW1lbnQiLCJPcGVuRWxlbWVudFN0YWNrIiwidG1wbEluc2VydGlvbk1vZGVTdGFjayIsInRtcGxJbnNlcnRpb25Nb2RlU3RhY2tUb3AiLCJjdXJyZW50VG1wbEluc2VydGlvbk1vZGUiLCJmb3N0ZXJQYXJlbnRpbmdFbmFibGVkIiwiX3NldHVwVG9rZW5pemVyQ0RBVEFNb2RlIiwiZ2V0TmV4dFRva2VuIiwid3JpdGVDYWxsYmFjayIsInNjcmlwdCIsIl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50IiwiX2lzSW50ZWdyYXRpb25Qb2ludCIsIm5leHRUb2tlbml6ZXJTdGF0ZSIsImdldFBhcmVudE5vZGUiLCJzZXREb2N1bWVudFR5cGUiLCJfZm9zdGVyUGFyZW50RWxlbWVudCIsInRtcGwiLCJzZXRUZW1wbGF0ZUNvbnRlbnQiLCJjcmVhdGVDb21tZW50Tm9kZSIsIl9mb3N0ZXJQYXJlbnRUZXh0IiwiaW5zZXJ0VGV4dCIsImRvbm9yIiwiZGV0YWNoTm9kZSIsImlzQ2hhcmFjdGVyVG9rZW4iLCJjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50IiwibnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJmb3JlaWduQ29udGVudCIsImNhdXNlc0V4aXQiLCJjdXJyZW50TnMiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdFRva2VuWE1MQXR0cnMiLCJzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQiLCJwb3BVbnRpbEVsZW1lbnRQb3BwZWQiLCJlbmRUYWdJbkZvcmVpZ25Db250ZW50IiwiX3Nob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQiLCJpc0ludGVncmF0aW9uUG9pbnQiLCJsaXN0TGVuZ3RoIiwidW5vcGVuSWR4IiwicG9wVW50aWxUYWJsZUNlbGxQb3BwZWQiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsImxhc3QiLCJfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0Iiwic2VsZWN0SWR4IiwiYW5jZXN0b3IiLCJfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nIiwib3BlbkVsZW1lbnQiLCJpbnNlcnRUZXh0QmVmb3JlIiwiU1BFQ0lBTF9FTEVNRU5UUyIsImFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeSIsImZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUiLCJyZW1vdmVFbnRyeSIsImdlbmVyaWNFbmRUYWdJbkJvZHkiLCJhYU9idGFpbkZ1cnRoZXN0QmxvY2siLCJmdXJ0aGVzdEJsb2NrIiwiX2lzU3BlY2lhbEVsZW1lbnQiLCJhYUlubmVyTG9vcCIsImZvcm1hdHRpbmdFbGVtZW50IiwibGFzdEVsZW1lbnQiLCJuZXh0RWxlbWVudCIsImdldENvbW1vbkFuY2VzdG9yIiwiZWxlbWVudEVudHJ5IiwiZ2V0RWxlbWVudEVudHJ5IiwiY291bnRlck92ZXJmbG93IiwiYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkiLCJhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvciIsImNvbW1vbkFuY2VzdG9yIiwiYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImluc2VydEFmdGVyIiwiY2FsbEFkb3B0aW9uQWdlbmN5IiwiX3N3aXRjaFRvVGV4dFBhcnNpbmciLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSIsImVyckNvZGUiLCJfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMiLCJhZGRyZXNzU3RhcnRUYWdJbkJvZHkiLCJoYXNJbkJ1dHRvblNjb3BlIiwiX2Nsb3NlUEVsZW1lbnQiLCJwcmVTdGFydFRhZ0luQm9keSIsImJTdGFydFRhZ0luQm9keSIsInB1c2hFbGVtZW50IiwiYXBwbGV0U3RhcnRUYWdJbkJvZHkiLCJhcmVhU3RhcnRUYWdJbkJvZHkiLCJwYXJhbVN0YXJ0VGFnSW5Cb2R5Iiwibm9lbWJlZFN0YXJ0VGFnSW5Cb2R5Iiwib3B0Z3JvdXBTdGFydFRhZ0luQm9keSIsInJiU3RhcnRUYWdJbkJvZHkiLCJnZW5lcmljU3RhcnRUYWdJbkJvZHkiLCJhY3RpdmVFbGVtZW50RW50cnkiLCJhU3RhcnRUYWdJbkJvZHkiLCJudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5IiwiZWxlbWVudFRuIiwiY2xvc2VUbiIsImxpc3RJdGVtU3RhcnRUYWdJbkJvZHkiLCJoclN0YXJ0VGFnSW5Cb2R5IiwicnRTdGFydFRhZ0luQm9keSIsInhtcFN0YXJ0VGFnSW5Cb2R5Iiwic3ZnU3RhcnRUYWdJbkJvZHkiLCJhZG9wdEF0dHJpYnV0ZXMiLCJodG1sU3RhcnRUYWdJbkJvZHkiLCJib2R5RWxlbWVudCIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiYm9keVN0YXJ0VGFnSW5Cb2R5IiwiaW5UZW1wbGF0ZSIsImZvcm1TdGFydFRhZ0luQm9keSIsIm5vYnJTdGFydFRhZ0luQm9keSIsIm1hdGhTdGFydFRhZ0luQm9keSIsIm1lbnVTdGFydFRhZ0luQm9keSIsInRhYmxlU3RhcnRUYWdJbkJvZHkiLCJpbnB1dFR5cGUiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwiaW1hZ2VTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsImZyYW1lc2V0U3RhcnRUYWdJbkJvZHkiLCJ0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5IiwicGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkiLCJhZGRyZXNzRW5kVGFnSW5Cb2R5IiwiYXBwbGV0RW5kVGFnSW5Cb2R5IiwicEVuZFRhZ0luQm9keSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImxpRW5kVGFnSW5Cb2R5IiwiZGRFbmRUYWdJbkJvZHkiLCJoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJickVuZFRhZ0luQm9keSIsImJvZHlFbmRUYWdJbkJvZHkiLCJodG1sRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsImN1clRuIiwidG9rZW5JblRhYmxlIiwiY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQiLCJ0ZFN0YXJ0VGFnSW5UYWJsZSIsImNvbFN0YXJ0VGFnSW5UYWJsZSIsImZvcm1TdGFydFRhZ0luVGFibGUiLCJ0YWJsZVN0YXJ0VGFnSW5UYWJsZSIsInRib2R5U3RhcnRUYWdJblRhYmxlIiwiaW5wdXRTdGFydFRhZ0luVGFibGUiLCJjYXB0aW9uU3RhcnRUYWdJblRhYmxlIiwiY29sZ3JvdXBTdGFydFRhZ0luVGFibGUiLCJzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlIiwiX3Byb2Nlc3NUb2tlbkluQm9keU1vZGUiLCJoYXNJblNlbGVjdFNjb3BlIiwicHJldk9wZW5FbGVtZW50IiwicHJldk9wZW5FbGVtZW50VG4iLCJTY2hlbWEiLCJwcm9wZXJ0eSIsIm5vcm1hbCIsImluZm8iLCJJbmZvIiwiYXR0cmlidXRlIiwiYm9vbGVhbiIsImJvb2xlYW5pc2giLCJvdmVybG9hZGVkQm9vbGVhbiIsIm51bWJlciIsImNvbW1hU2VwYXJhdGVkIiwic3BhY2VTZXBhcmF0ZWQiLCJjb21tYU9yU3BhY2VTZXBhcmF0ZWQiLCJtdXN0VXNlUHJvcGVydHkiLCJkZWZpbmVkIiwicG93ZXJzIiwiaW5jcmVtZW50IiwiTWF0aCIsInBvdyIsIkRlZmluZWRJbmZvIiwiY2hlY2tzTGVuZ3RoIiwibWFzayIsImNoZWNrIiwibWFyayIsInR5cGVzIiwidHJhbnNmb3JtIiwieExpbmtBY3R1YXRlIiwieExpbmtBcmNSb2xlIiwieExpbmtIcmVmIiwieExpbmtSb2xlIiwieExpbmtTaG93IiwieExpbmtUaXRsZSIsInhMaW5rVHlwZSIsInhtbExhbmciLCJ4bWxCYXNlIiwieG1sU3BhY2UiLCJjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtIiwieG1sbnN4bGluayIsImNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSIsInhtbG5zWExpbmsiLCJhcmlhQWN0aXZlRGVzY2VuZGFudCIsImFyaWFBdG9taWMiLCJhcmlhQXV0b0NvbXBsZXRlIiwiYXJpYUJ1c3kiLCJhcmlhQ2hlY2tlZCIsImFyaWFDb2xDb3VudCIsImFyaWFDb2xJbmRleCIsImFyaWFDb2xTcGFuIiwiYXJpYUNvbnRyb2xzIiwiYXJpYUN1cnJlbnQiLCJhcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGV0YWlscyIsImFyaWFEaXNhYmxlZCIsImFyaWFEcm9wRWZmZWN0IiwiYXJpYUVycm9yTWVzc2FnZSIsImFyaWFFeHBhbmRlZCIsImFyaWFGbG93VG8iLCJhcmlhR3JhYmJlZCIsImFyaWFIYXNQb3B1cCIsImFyaWFIaWRkZW4iLCJhcmlhSW52YWxpZCIsImFyaWFLZXlTaG9ydGN1dHMiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsImFyaWFMZXZlbCIsImFyaWFMaXZlIiwiYXJpYU1vZGFsIiwiYXJpYU11bHRpTGluZSIsImFyaWFNdWx0aVNlbGVjdGFibGUiLCJhcmlhT3JpZW50YXRpb24iLCJhcmlhT3ducyIsImFyaWFQbGFjZWhvbGRlciIsImFyaWFQb3NJblNldCIsImFyaWFQcmVzc2VkIiwiYXJpYVJlYWRPbmx5IiwiYXJpYVJlbGV2YW50IiwiYXJpYVJlcXVpcmVkIiwiYXJpYVJvbGVEZXNjcmlwdGlvbiIsImFyaWFSb3dDb3VudCIsImFyaWFSb3dJbmRleCIsImFyaWFSb3dTcGFuIiwiYXJpYVNlbGVjdGVkIiwiYXJpYVNldFNpemUiLCJhcmlhU29ydCIsImFyaWFWYWx1ZU1heCIsImFyaWFWYWx1ZU1pbiIsImFyaWFWYWx1ZU5vdyIsImFyaWFWYWx1ZVRleHQiLCJyb2xlIiwibWVyZ2UiLCJ4bWwiLCJ4bGluayIsImFyaWEiLCJhY2NlcHRjaGFyc2V0IiwiaHRtbGZvciIsImh0dHBlcXVpdiIsImFiYnIiLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNjZXNzS2V5IiwiYWN0aW9uIiwiYWxsb3ciLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1BheW1lbnRSZXF1ZXN0IiwiYWxsb3dVc2VyTWVkaWEiLCJhcyIsImFzeW5jIiwiYXV0b0NhcGl0YWxpemUiLCJhdXRvQ29tcGxldGUiLCJhdXRvRm9jdXMiLCJhdXRvUGxheSIsImNhcHR1cmUiLCJjaGFyU2V0IiwiY2l0ZSIsImNvbHMiLCJjb2xTcGFuIiwiY29udGVudEVkaXRhYmxlIiwiY29udHJvbHMiLCJjb250cm9sc0xpc3QiLCJjb29yZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGVmZXIiLCJkaXIiLCJkaXJOYW1lIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmNUeXBlIiwiZW50ZXJLZXlIaW50IiwiZm9ybSIsImZvcm1BY3Rpb24iLCJmb3JtRW5jVHlwZSIsImZvcm1NZXRob2QiLCJmb3JtTm9WYWxpZGF0ZSIsImZvcm1UYXJnZXQiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2IiwiaW1hZ2VTaXplcyIsImltYWdlU3JjU2V0IiwiaW5wdXRNb2RlIiwiaW50ZWdyaXR5IiwiaXNNYXAiLCJpdGVtSWQiLCJpdGVtUHJvcCIsIml0ZW1SZWYiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImtpbmQiLCJsb29wIiwibWFuaWZlc3QiLCJtYXhMZW5ndGgiLCJtZWRpYSIsIm1ldGhvZCIsIm1pbiIsIm1pbkxlbmd0aCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub25jZSIsIm5vTW9kdWxlIiwibm9WYWxpZGF0ZSIsIm9uQWJvcnQiLCJvbkFmdGVyUHJpbnQiLCJvbkF1eENsaWNrIiwib25CZWZvcmVQcmludCIsIm9uQmVmb3JlVW5sb2FkIiwib25CbHVyIiwib25DYW5jZWwiLCJvbkNhblBsYXkiLCJvbkNhblBsYXlUaHJvdWdoIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwib25DbG9zZSIsIm9uQ29udGV4dE1lbnUiLCJvbkNvcHkiLCJvbkN1ZUNoYW5nZSIsIm9uQ3V0Iiwib25EYmxDbGljayIsIm9uRHJhZyIsIm9uRHJhZ0VuZCIsIm9uRHJhZ0VudGVyIiwib25EcmFnRXhpdCIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJhZ1N0YXJ0Iiwib25Ecm9wIiwib25EdXJhdGlvbkNoYW5nZSIsIm9uRW1wdGllZCIsIm9uRW5kZWQiLCJvbkVycm9yIiwib25Gb2N1cyIsIm9uRm9ybURhdGEiLCJvbkhhc2hDaGFuZ2UiLCJvbklucHV0Iiwib25JbnZhbGlkIiwib25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJvbkxhbmd1YWdlQ2hhbmdlIiwib25Mb2FkIiwib25Mb2FkZWREYXRhIiwib25Mb2FkZWRNZXRhZGF0YSIsIm9uTG9hZEVuZCIsIm9uTG9hZFN0YXJ0Iiwib25NZXNzYWdlIiwib25NZXNzYWdlRXJyb3IiLCJvbk1vdXNlRG93biIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZU91dCIsIm9uTW91c2VPdmVyIiwib25Nb3VzZVVwIiwib25PZmZsaW5lIiwib25PbmxpbmUiLCJvblBhZ2VIaWRlIiwib25QYWdlU2hvdyIsIm9uUGFzdGUiLCJvblBhdXNlIiwib25QbGF5Iiwib25QbGF5aW5nIiwib25Qb3BTdGF0ZSIsIm9uUHJvZ3Jlc3MiLCJvblJhdGVDaGFuZ2UiLCJvblJlamVjdGlvbkhhbmRsZWQiLCJvblJlc2V0Iiwib25SZXNpemUiLCJvblNjcm9sbCIsIm9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24iLCJvblNlZWtlZCIsIm9uU2Vla2luZyIsIm9uU2VsZWN0Iiwib25TdGFsbGVkIiwib25TdG9yYWdlIiwib25TdWJtaXQiLCJvblN1c3BlbmQiLCJvblRpbWVVcGRhdGUiLCJvblRvZ2dsZSIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwib25VbmxvYWQiLCJvblZvbHVtZUNoYW5nZSIsIm9uV2FpdGluZyIsIm9uV2hlZWwiLCJvcHRpbXVtIiwicGluZyIsInBsYXlzSW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInJlYWRPbmx5IiwicmVmZXJyZXJQb2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZSIsInNjb3BlZCIsInNlYW1sZXNzIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemVzIiwic2xvdCIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjRG9jIiwic3JjTGFuZyIsInNyY1NldCIsInN0eWxlIiwidGFiSW5kZXgiLCJ0cmFuc2xhdGUiLCJ0eXBlTXVzdE1hdGNoIiwidXNlTWFwIiwid2lkdGgiLCJhTGluayIsImFyY2hpdmUiLCJheGlzIiwiYmFja2dyb3VuZCIsImJnQ29sb3IiLCJib3JkZXIiLCJib3JkZXJDb2xvciIsImJvdHRvbU1hcmdpbiIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyT2ZmIiwiY2xhc3NJZCIsImNsZWFyIiwiY29kZUJhc2UiLCJjb2RlVHlwZSIsImNvbG9yIiwiY29tcGFjdCIsImRlY2xhcmUiLCJmYWNlIiwiZnJhbWUiLCJmcmFtZUJvcmRlciIsImhTcGFjZSIsImxlZnRNYXJnaW4iLCJsb25nRGVzYyIsImxvd1NyYyIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibm9SZXNpemUiLCJub0hyZWYiLCJub1NoYWRlIiwibm9XcmFwIiwicHJvZmlsZSIsInByb21wdCIsInJldiIsInJpZ2h0TWFyZ2luIiwicnVsZXMiLCJzY2hlbWUiLCJzY3JvbGxpbmciLCJzdGFuZGJ5Iiwic3VtbWFyeSIsInRvcE1hcmdpbiIsInZhbHVlVHlwZSIsInZlcnNpb24iLCJ2QWxpZ24iLCJ2TGluayIsInZTcGFjZSIsImFsbG93VHJhbnNwYXJlbmN5IiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIiwic2VjdXJpdHkiLCJ1bnNlbGVjdGFibGUiLCJhY2NlbnRIZWlnaHQiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFyYWJpY0Zvcm0iLCJiYXNlbGluZVNoaWZ0IiwiY2FwSGVpZ2h0IiwiY2xpcFBhdGgiLCJjbGlwUnVsZSIsImNvbG9ySW50ZXJwb2xhdGlvbiIsImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMiLCJjb2xvclByb2ZpbGUiLCJjb2xvclJlbmRlcmluZyIsImRhdGFUeXBlIiwiZG9taW5hbnRCYXNlbGluZSIsImVuYWJsZUJhY2tncm91bmQiLCJmaWxsT3BhY2l0eSIsImZpbGxSdWxlIiwiZmxvb2RDb2xvciIsImZsb29kT3BhY2l0eSIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJnbHlwaE5hbWUiLCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImhvcml6QWR2WCIsImhvcml6T3JpZ2luWCIsImhvcml6T3JpZ2luWSIsImltYWdlUmVuZGVyaW5nIiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJtYXJrZXJFbmQiLCJtYXJrZXJNaWQiLCJtYXJrZXJTdGFydCIsIm5hdkRvd24iLCJuYXZEb3duTGVmdCIsIm5hdkRvd25SaWdodCIsIm5hdkxlZnQiLCJuYXZOZXh0IiwibmF2UHJldiIsIm5hdlJpZ2h0IiwibmF2VXAiLCJuYXZVcExlZnQiLCJuYXZVcFJpZ2h0Iiwib25BY3RpdmF0ZSIsIm9uQmVnaW4iLCJvbkVuZCIsIm9uRm9jdXNJbiIsIm9uRm9jdXNPdXQiLCJvbk1vdXNlV2hlZWwiLCJvblJlcGVhdCIsIm9uU2hvdyIsIm9uWm9vbSIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIiLCJwYW5vc2UxIiwicG9pbnRlckV2ZW50cyIsInJlbmRlcmluZ0ludGVudCIsInNoYXBlUmVuZGVyaW5nIiwic3RvcENvbG9yIiwic3RvcE9wYWNpdHkiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3Ryb2tlRGFzaEFycmF5Iiwic3Ryb2tlRGFzaE9mZnNldCIsInN0cm9rZUxpbmVDYXAiLCJzdHJva2VMaW5lSm9pbiIsInN0cm9rZU1pdGVyTGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJ0ZXh0QW5jaG9yIiwidGV4dERlY29yYXRpb24iLCJ0ZXh0UmVuZGVyaW5nIiwidHlwZU9mIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmljb2RlQmlkaSIsInVuaWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZIYW5naW5nIiwidklkZW9ncmFwaGljIiwidk1hdGhlbWF0aWNhbCIsInZlY3RvckVmZmVjdCIsInZlcnRBZHZZIiwidmVydE9yaWdpblgiLCJ2ZXJ0T3JpZ2luWSIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4SGVpZ2h0IiwicGxheWJhY2tPcmRlciIsInRpbWVsaW5lQmVnaW4iLCJhYm91dCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFscGhhYmV0aWMiLCJhbXBsaXR1ZGUiLCJhc2NlbnQiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlVHlwZSIsImF6aW11dGgiLCJiYW5kd2lkdGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYm94IiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjbGlwIiwiY2xpcFBhdGhVbml0cyIsImNvbnRlbnRTY3JpcHRUeXBlIiwiY29udGVudFN0eWxlVHlwZSIsImN1cnNvciIsImN4IiwiY3kiLCJkIiwiZGVmYXVsdEFjdGlvbiIsImRlc2NlbnQiLCJkaWZmdXNlQ29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZHVyIiwiZGl2aXNvciIsImR4IiwiZHkiLCJlZGdlTW9kZSIsImVkaXRhYmxlIiwiZWxldmF0aW9uIiwiZXhwb25lbnQiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZmlsbCIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZm9jdXNhYmxlIiwiZm9jdXNIaWdobGlnaHQiLCJmciIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5kbGVyIiwiaGFuZ2luZyIsImhhdGNoQ29udGVudFVuaXRzIiwiaGF0Y2hVbml0cyIsImlkZW9ncmFwaGljIiwiaW5pdGlhbFZpc2liaWxpdHkiLCJpbiIsImluMiIsImludGVyY2VwdCIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5lbE1hdHJpeCIsImtlcm5lbFVuaXRMZW5ndGgiLCJrZXlQb2ludHMiLCJrZXlTcGxpbmVzIiwia2V5VGltZXMiLCJrZXJuaW5nIiwibGVuZ3RoQWRqdXN0IiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckhlaWdodCIsIm1hcmtlclVuaXRzIiwibWFya2VyV2lkdGgiLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0aGVtYXRpY2FsIiwibWVkaWFDaGFyYWN0ZXJFbmNvZGluZyIsIm1lZGlhQ29udGVudEVuY29kaW5ncyIsIm1lZGlhU2l6ZSIsIm1lZGlhVGltZSIsIm51bU9jdGF2ZXMiLCJvYnNlcnZlciIsIm9wYWNpdHkiLCJvcGVyYXRvciIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvdmVyZmxvdyIsIm92ZXJsYXkiLCJwYXRoIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJhbnNmb3JtIiwicGF0dGVyblVuaXRzIiwicGhhc2UiLCJwaXRjaCIsInBvaW50cyIsInBvaW50c0F0WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJwcm9wYWdhdGUiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9ucyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXF1aXJlZEZvbnRzIiwicmVxdWlyZWRGb3JtYXRzIiwicmVzb3VyY2UiLCJyZXN0YXJ0Iiwicm90YXRlIiwicngiLCJyeSIsInNjYWxlIiwic2VlZCIsInNpZGUiLCJzbG9wZSIsInNuYXBzaG90VGltZSIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3ByZWFkTWV0aG9kIiwic3BhY2luZyIsInN0ZERldmlhdGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0cm9rZSIsInN1cmZhY2VTY2FsZSIsInN5bmNCZWhhdmlvciIsInN5bmNCZWhhdmlvckRlZmF1bHQiLCJzeW5jTWFzdGVyIiwic3luY1RvbGVyYW5jZSIsInN5bmNUb2xlcmFuY2VEZWZhdWx0Iiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwidGV4dExlbmd0aCIsInRyYW5zZm9ybUJlaGF2aW9yIiwidTEiLCJ1MiIsInZpZXdCb3giLCJ2aWV3VGFyZ2V0IiwidmlzaWJpbGl0eSIsIndpZHRocyIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieSIsInkxIiwieTIiLCJ5Q2hhbm5lbFNlbGVjdG9yIiwieiIsInpvb21BbmRQYW4iLCJzY2hlbWEiLCJUeXBlIiwidmFsaWQiLCJkYXNoIiwiY2FtZWxjYXNlIiwiZGF0YXNldFRvUHJvcGVydHkiLCJjYXAiLCJrZWJhYiIsImRhdGFzZXRUb0F0dHJpYnV0ZSIsIiQwIiwic2VsZWN0b3IiLCJkZWZhdWx0VGFnTmFtZSIsImRvdCIsIm51bWJlclNpZ24iLCJlbXB0eSIsIndoaXRlU3BhY2UiLCJjb21tYSIsInBhZExlZnQiLCJwYWRSaWdodCIsInNwYWNlcyIsInBhcnNlIiwiY29tbWFzIiwiYWRqdXN0IiwiY3JlYXRlQWRqdXN0TWFwIiwicGFyc2VTZWxlY3RvciIsImlzTm9kZSIsImlzQ2hpbGRyZW4iLCJhZGRQcm9wZXJ0eSIsImFkZENoaWxkIiwiZmluZCIsInBhcnNlUHJpbWl0aXZlIiwicGFyc2VQcmltaXRpdmVzIiwicG9zaXRpdmVOdW1iZXIiLCJzdmciLCJtZXNzYWdlcyIsInZlcmJvc2UiLCIjZG9jdW1lbnQiLCIjZG9jdW1lbnQtZnJhZ21lbnQiLCIjdGV4dCIsIiNjb21tZW50IiwiI2RvY3VtZW50VHlwZSIsInB1YmxpYyIsInN5c3RlbSIsIm9wZW5pbmciLCJjbG9zaW5nIiwiZG9jIiwicXVpcmtzTW9kZSIsImxhc3RJbmRleE9mIiwiQ09NTUVOVF9SRUdFWCIsIk5FV0xJTkVfUkVHRVgiLCJXSElURVNQQUNFX1JFR0VYIiwiUFJPUEVSVFlfUkVHRVgiLCJDT0xPTl9SRUdFWCIsIlZBTFVFX1JFR0VYIiwiU0VNSUNPTE9OX1JFR0VYIiwiVFJJTV9SRUdFWCIsIk5FV0xJTkUiLCJGT1JXQVJEX1NMQVNIIiwiQVNURVJJU0siLCJFTVBUWV9TVFJJTkciLCJUWVBFX0NPTU1FTlQiLCJUWVBFX0RFQ0xBUkFUSU9OIiwibGluZW5vIiwidXBkYXRlUG9zaXRpb24iLCJsaW5lcyIsIlBvc2l0aW9uIiwibXNnIiwicmVhc29uIiwiZmlsZW5hbWUiLCJtIiwiY29tbWVudHMiLCJjb21tZW50IiwiZGVjbGFyYXRpb24iLCJkZWNsIiwiZGVjbHMiLCJkZWNsYXJhdGlvbnMiLCJpdGVyYXRvciIsIm91dHB1dCIsImhhc0l0ZXJhdG9yIiwibGVuIiwiZGFzaGVzIiwidiIsInZkIiwicmVhY3QiLCJjb250ZXh0IiwiX2lzVnVlIiwidnVlIiwidmRvbSIsInRvSCIsImVsZW1lbnRzIiwicGFyZW50U2NoZW1hIiwic3R5bGVSZXBsYWNlciIsInN0eWxlQ2FzZSIsInBhcnNlU3R5bGUiLCJoeXBlcnNjcmlwdCIsInN1YnByb3AiLCJoeXBlcmxpa2UiLCJoYXN0VG9SZWFjdCIsImNsZWFudXAiLCIkMSIsImludmFsaWQiLCJub29wIiwiRnVuY3Rpb24iLCJpZ25vcmVkU3BhY2VzIiwiendpdGNoIiwicGF0Y2giLCJwNSIsInNoYWxsb3ciLCJhdHRyIiwibG9jYXRpb25UcmFja2VyIiwicGFyc2VPcHRpb25zIiwidm9pZHMiLCJjcmVhdGVQYXJzZTVMb2NhdGlvbiIsImVuZFRhZ1Rva2VuIiwiZGF0YVN0YXRlIiwiY2hhcmFjdGVyVG9rZW4iLCJjb21tZW50VG9rZW4iLCJ0b1BhcnNlNSIsImRvY3R5cGVUb2tlbiIsImZyb21QYXJzZTUiLCJkb2N1bWVudE1vZGUiLCJtb2NrIiwiaW5UZW1wbGF0ZU1vZGUiLCJtb2R1bGVzIiwiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImdldHRlciIsIm8iLCJnZXQiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsIl9fZXNNb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiU291cmNlTG9jYXRpb24iLCJsZXhlciIsImZpcnN0Iiwic2Vjb25kIiwiVG9rZW5fVG9rZW4iLCJUb2tlbiIsImVuZFRva2VuIiwiUGFyc2VFcnJvciIsInVuZGVybGluZWQiLCJfX3Byb3RvX18iLCJzcmNfUGFyc2VFcnJvciIsInVwcGVyY2FzZSIsIkVTQ0FQRV9MT09LVVAiLCImIiwiPiIsIjwiLCJcIiIsIiciLCJFU0NBUEVfUkVHRVgiLCJnZXRCYXNlRWxlbSIsImdyb3VwIiwiYm9keSIsInV0aWxzIiwiZWxlbSIsImRlZmx0Iiwic2V0dGluZyIsImRlZmF1bHRJZlVuZGVmaW5lZCIsImh5cGhlbmF0ZSIsImlzQ2hhcmFjdGVyQm94IiwiYmFzZUVsZW0iLCJwcm90b2NvbEZyb21VcmwiLCJwcm90b2NvbCIsIlNldHRpbmdzX1NldHRpbmdzIiwiU2V0dGluZ3MiLCJkaXNwbGF5TW9kZSIsImxlcW5vIiwiZmxlcW4iLCJ0aHJvd09uRXJyb3IiLCJlcnJvckNvbG9yIiwibWFjcm9zIiwibWluUnVsZVRoaWNrbmVzcyIsImNvbG9ySXNUZXh0Q29sb3IiLCJzdHJpY3QiLCJ0cnVzdCIsIm1heFNpemUiLCJtYXhFeHBhbmQiLCJJbmZpbml0eSIsIl9wcm90byIsInJlcG9ydE5vbnN0cmljdCIsImVycm9yQ29kZSIsImVycm9yTXNnIiwid2FybiIsInVzZVN0cmljdEJlaGF2aW9yIiwiaXNUcnVzdGVkIiwiU3R5bGUiLCJjcmFtcGVkIiwic3VwIiwiU3R5bGVfc3R5bGVzIiwiX3N1cCIsInN1YiIsIl9zdWIiLCJmcmFjTnVtIiwiX2ZyYWNOdW0iLCJmcmFjRGVuIiwiX2ZyYWNEZW4iLCJjcmFtcCIsIl9jcmFtcCIsIl90ZXh0IiwiaXNUaWdodCIsInNyY19TdHlsZSIsIkRJU1BMQVkiLCJURVhUIiwiU0NSSVBUU0NSSVBUIiwic2NyaXB0RGF0YSIsImFsbEJsb2NrcyIsInN1cHBvcnRlZENvZGVwb2ludCIsImNvZGVwb2ludCIsImIiLCJzdmdHZW9tZXRyeV9wYXRoIiwiZG91YmxlbGVmdGFycm93IiwiZG91YmxlcmlnaHRhcnJvdyIsImxlZnRhcnJvdyIsImxlZnRicmFjZSIsImxlZnRicmFjZXVuZGVyIiwibGVmdGdyb3VwIiwibGVmdGdyb3VwdW5kZXIiLCJsZWZ0aGFycG9vbiIsImxlZnRoYXJwb29ucGx1cyIsImxlZnRoYXJwb29uZG93biIsImxlZnRoYXJwb29uZG93bnBsdXMiLCJsZWZ0aG9vayIsImxlZnRsaW5lc2VnbWVudCIsImxlZnRtYXBzdG8iLCJsZWZ0VG9Gcm9tIiwibG9uZ2VxdWFsIiwibWlkYnJhY2UiLCJtaWRicmFjZXVuZGVyIiwib2lpbnRTaXplMSIsIm9paW50U2l6ZTIiLCJvaWlpbnRTaXplMSIsIm9paWludFNpemUyIiwicmlnaHRhcnJvdyIsInJpZ2h0YnJhY2UiLCJyaWdodGJyYWNldW5kZXIiLCJyaWdodGdyb3VwIiwicmlnaHRncm91cHVuZGVyIiwicmlnaHRoYXJwb29uIiwicmlnaHRoYXJwb29ucGx1cyIsInJpZ2h0aGFycG9vbmRvd24iLCJyaWdodGhhcnBvb25kb3ducGx1cyIsInJpZ2h0aG9vayIsInJpZ2h0bGluZXNlZ21lbnQiLCJyaWdodFRvRnJvbSIsInR3b2hlYWRsZWZ0YXJyb3ciLCJ0d29oZWFkcmlnaHRhcnJvdyIsInRpbGRlMSIsInRpbGRlMiIsInRpbGRlMyIsInRpbGRlNCIsInZlYyIsIndpZGVoYXQxIiwid2lkZWhhdDIiLCJ3aWRlaGF0MyIsIndpZGVoYXQ0Iiwid2lkZWNoZWNrMSIsIndpZGVjaGVjazIiLCJ3aWRlY2hlY2szIiwid2lkZWNoZWNrNCIsImJhcmFib3ZlbGVmdGFycm93IiwicmlnaHRhcnJvd2Fib3ZlYmFyIiwiYmFyYWJvdmVzaG9ydGxlZnRoYXJwb29uIiwicmlnaHRoYXJwb29uYWJvdmVzaG9ydGJhciIsInNob3J0YmFyYWJvdmVsZWZ0aGFycG9vbiIsInNob3J0cmlnaHRoYXJwb29uYWJvdmViYXIiLCJ0cmVlX0RvY3VtZW50RnJhZ21lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwibWF4Rm9udFNpemUiLCJoYXNDbGFzcyIsInRvTm9kZSIsImZyYWciLCJ0b01hcmt1cCIsIm1hcmt1cCIsInRvVGV4dCIsImNyZWF0ZUNsYXNzIiwiY2xzIiwiaW5pdE5vZGUiLCJnZXRDb2xvciIsIl90b05vZGUiLCJzZXRBdHRyaWJ1dGUiLCJfdG9NYXJrdXAiLCJzdHlsZXMiLCJkb21UcmVlX1NwYW4iLCJTcGFuIiwiZG9tVHJlZV9BbmNob3IiLCJBbmNob3IiLCJfcHJvdG8yIiwiZG9tVHJlZV9JbWciLCJJbWciLCJfcHJvdG8zIiwiaUNvbWJpbmF0aW9ucyIsIsOuIiwiw68iLCLDrSIsIsOsIiwiZG9tVHJlZV9TeW1ib2xOb2RlIiwiU3ltYm9sTm9kZSIsIml0YWxpYyIsInNrZXciLCJfaSIsInNjcmlwdEZyb21Db2RlcG9pbnQiLCJfcHJvdG80IiwibWFyZ2luUmlnaHQiLCJuZWVkc1NwYW4iLCJTdmdOb2RlIiwiX3Byb3RvNSIsImRvbVRyZWVfUGF0aE5vZGUiLCJQYXRoTm9kZSIsInBhdGhOYW1lIiwiYWx0ZXJuYXRlIiwiX3Byb3RvNiIsIkxpbmVOb2RlIiwiX3Byb3RvNyIsImFzc2VydFN5bWJvbERvbU5vZGUiLCJmb250TWV0cmljc0RhdGEiLCJBTVMtUmVndWxhciIsIjY1IiwiNjYiLCI2NyIsIjY4IiwiNjkiLCI3MCIsIjcxIiwiNzIiLCI3MyIsIjc0IiwiNzUiLCI3NiIsIjc3IiwiNzgiLCI3OSIsIjgwIiwiODEiLCI4MiIsIjgzIiwiODQiLCI4NSIsIjg2IiwiODciLCI4OCIsIjg5IiwiOTAiLCIxMDciLCIxNjUiLCIxNzQiLCIyNDAiLCIyOTUiLCI3MTAiLCI3MzIiLCI3NzAiLCI3NzEiLCI5ODkiLCIxMDA4IiwiODI0NSIsIjg0NjMiLCI4NDg3IiwiODQ5OCIsIjg1MDIiLCI4NTAzIiwiODUwNCIsIjg1MTMiLCI4NTkyIiwiODU5NCIsIjg2MDIiLCI4NjAzIiwiODYwNiIsIjg2MDgiLCI4NjEwIiwiODYxMSIsIjg2MTkiLCI4NjIwIiwiODYyMSIsIjg2MjIiLCI4NjI0IiwiODYyNSIsIjg2MzAiLCI4NjMxIiwiODYzNCIsIjg2MzUiLCI4NjM4IiwiODYzOSIsIjg2NDIiLCI4NjQzIiwiODY0NCIsIjg2NDYiLCI4NjQ3IiwiODY0OCIsIjg2NDkiLCI4NjUwIiwiODY1MSIsIjg2NTIiLCI4NjUzIiwiODY1NCIsIjg2NTUiLCI4NjY2IiwiODY2NyIsIjg2NjkiLCI4NjcyIiwiODY3NCIsIjg3MDUiLCI4NzA4IiwiODcwOSIsIjg3MTciLCI4NzIyIiwiODcyNCIsIjg3MjYiLCI4NzMzIiwiODczNiIsIjg3MzciLCI4NzM4IiwiODczOSIsIjg3NDAiLCI4NzQxIiwiODc0MiIsIjg3NTYiLCI4NzU3IiwiODc2NCIsIjg3NjUiLCI4NzY5IiwiODc3MCIsIjg3NzQiLCI4Nzc2IiwiODc3OCIsIjg3ODIiLCI4NzgzIiwiODc4NSIsIjg3ODYiLCI4Nzg3IiwiODc5MCIsIjg3OTEiLCI4Nzk2IiwiODgwNiIsIjg4MDciLCI4ODA4IiwiODgwOSIsIjg4MTIiLCI4ODE0IiwiODgxNSIsIjg4MTYiLCI4ODE3IiwiODgxOCIsIjg4MTkiLCI4ODIyIiwiODgyMyIsIjg4MjgiLCI4ODI5IiwiODgzMCIsIjg4MzEiLCI4ODMyIiwiODgzMyIsIjg4NDAiLCI4ODQxIiwiODg0MiIsIjg4NDMiLCI4ODQ3IiwiODg0OCIsIjg4NTgiLCI4ODU5IiwiODg2MSIsIjg4NjIiLCI4ODYzIiwiODg2NCIsIjg4NjUiLCI4ODcyIiwiODg3MyIsIjg4NzQiLCI4ODc2IiwiODg3NyIsIjg4NzgiLCI4ODc5IiwiODg4MiIsIjg4ODMiLCI4ODg0IiwiODg4NSIsIjg4ODgiLCI4ODkwIiwiODg5MSIsIjg4OTIiLCI4OTAxIiwiODkwMyIsIjg5MDUiLCI4OTA2IiwiODkwNyIsIjg5MDgiLCI4OTA5IiwiODkxMCIsIjg5MTEiLCI4OTEyIiwiODkxMyIsIjg5MTQiLCI4OTE1IiwiODkxNiIsIjg5MTgiLCI4OTE5IiwiODkyMCIsIjg5MjEiLCI4OTIyIiwiODkyMyIsIjg5MjYiLCI4OTI3IiwiODkyOCIsIjg5MjkiLCI4OTM0IiwiODkzNSIsIjg5MzYiLCI4OTM3IiwiODkzOCIsIjg5MzkiLCI4OTQwIiwiODk0MSIsIjg5OTQiLCI4OTk1IiwiOTQxNiIsIjk0ODQiLCI5NDg4IiwiOTQ5MiIsIjk0OTYiLCI5NTg1IiwiOTU4NiIsIjk2MzIiLCI5NjMzIiwiOTY1MCIsIjk2NTEiLCI5NjU0IiwiOTY2MCIsIjk2NjEiLCI5NjY0IiwiOTY3NCIsIjk3MzMiLCIxMDAwMyIsIjEwMDE2IiwiMTA3MzEiLCIxMDg0NiIsIjEwODc3IiwiMTA4NzgiLCIxMDg4NSIsIjEwODg2IiwiMTA4ODciLCIxMDg4OCIsIjEwODg5IiwiMTA4OTAiLCIxMDg5MSIsIjEwODkyIiwiMTA5MDEiLCIxMDkwMiIsIjEwOTMzIiwiMTA5MzQiLCIxMDkzNSIsIjEwOTM2IiwiMTA5MzciLCIxMDkzOCIsIjEwOTQ5IiwiMTA5NTAiLCIxMDk1NSIsIjEwOTU2IiwiNTczNTAiLCI1NzM1MSIsIjU3MzUyIiwiNTczNTMiLCI1NzM1NiIsIjU3MzU3IiwiNTczNTgiLCI1NzM1OSIsIjU3MzYwIiwiNTczNjEiLCI1NzM2NiIsIjU3MzY3IiwiNTczNjgiLCI1NzM2OSIsIjU3MzcwIiwiNTczNzEiLCJDYWxpZ3JhcGhpYy1SZWd1bGFyIiwiNDgiLCI0OSIsIjUwIiwiNTEiLCI1MiIsIjUzIiwiNTQiLCI1NSIsIjU2IiwiNTciLCJGcmFrdHVyLVJlZ3VsYXIiLCIzMyIsIjM0IiwiMzgiLCIzOSIsIjQwIiwiNDEiLCI0MiIsIjQzIiwiNDQiLCI0NSIsIjQ2IiwiNDciLCI1OCIsIjU5IiwiNjEiLCI2MyIsIjkxIiwiOTMiLCI5NCIsIjk3IiwiOTgiLCI5OSIsIjEwMCIsIjEwMSIsIjEwMiIsIjEwMyIsIjEwNCIsIjEwNSIsIjEwNiIsIjEwOCIsIjEwOSIsIjExMCIsIjExMSIsIjExMiIsIjExMyIsIjExNCIsIjExNSIsIjExNiIsIjExNyIsIjExOCIsIjExOSIsIjEyMCIsIjEyMSIsIjEyMiIsIjgyMTYiLCI4MjE3IiwiNTgxMTIiLCI1ODExMyIsIjU4MTE0IiwiNTgxMTUiLCI1ODExNiIsIjU4MTE3IiwiNTgxMTgiLCI1ODExOSIsIk1haW4tQm9sZCIsIjM1IiwiMzYiLCIzNyIsIjYwIiwiNjIiLCI2NCIsIjkyIiwiOTUiLCIxMjMiLCIxMjQiLCIxMjUiLCIxMjYiLCIxNjgiLCIxNzIiLCIxNzYiLCIxNzciLCIxODQiLCIxOTgiLCIyMTUiLCIyMTYiLCIyMjMiLCIyMzAiLCIyNDciLCIyNDgiLCIzMDUiLCIzMzgiLCIzMzkiLCI1NjciLCI3MTEiLCI3MTMiLCI3MTQiLCI3MTUiLCI3MjgiLCI3MjkiLCI3MzAiLCI3MzMiLCI5MTUiLCI5MTYiLCI5MjAiLCI5MjMiLCI5MjYiLCI5MjgiLCI5MzEiLCI5MzMiLCI5MzQiLCI5MzYiLCI5MzciLCI4MjExIiwiODIxMiIsIjgyMjAiLCI4MjIxIiwiODIyNCIsIjgyMjUiLCI4MjQyIiwiODQwNyIsIjg0NjUiLCI4NDY3IiwiODQ3MiIsIjg0NzYiLCI4NTAxIiwiODU5MyIsIjg1OTUiLCI4NTk2IiwiODU5NyIsIjg1OTgiLCI4NTk5IiwiODYwMCIsIjg2MDEiLCI4NjM2IiwiODYzNyIsIjg2NDAiLCI4NjQxIiwiODY1NiIsIjg2NTciLCI4NjU4IiwiODY1OSIsIjg2NjAiLCI4NjYxIiwiODcwNCIsIjg3MDYiLCI4NzA3IiwiODcxMSIsIjg3MTIiLCI4NzE1IiwiODcyMyIsIjg3MjUiLCI4NzI3IiwiODcyOCIsIjg3MjkiLCI4NzMwIiwiODczNCIsIjg3NDMiLCI4NzQ0IiwiODc0NSIsIjg3NDYiLCI4NzQ3IiwiODc2OCIsIjg3NzEiLCI4NzgxIiwiODgwMSIsIjg4MDQiLCI4ODA1IiwiODgxMCIsIjg4MTEiLCI4ODI2IiwiODgyNyIsIjg4MzQiLCI4ODM1IiwiODgzOCIsIjg4MzkiLCI4ODQ2IiwiODg0OSIsIjg4NTAiLCI4ODUxIiwiODg1MiIsIjg4NTMiLCI4ODU0IiwiODg1NSIsIjg4NTYiLCI4ODU3IiwiODg2NiIsIjg4NjciLCI4ODY4IiwiODg2OSIsIjg5MDAiLCI4OTAyIiwiODk2OCIsIjg5NjkiLCI4OTcwIiwiODk3MSIsIjk2NTciLCI5NjY3IiwiOTcxMSIsIjk4MjQiLCI5ODI1IiwiOTgyNiIsIjk4MjciLCI5ODM3IiwiOTgzOCIsIjk4MzkiLCIxMDIxNiIsIjEwMjE3IiwiMTA4MTUiLCIxMDkyNyIsIjEwOTI4IiwiNTczNzYiLCJNYWluLUJvbGRJdGFsaWMiLCIxNjMiLCJNYWluLUl0YWxpYyIsIk1haW4tUmVndWxhciIsIjMyIiwiMTYwIiwiMTY3IiwiMTgyIiwiODIzMCIsIjg2MTQiLCI4NjE3IiwiODYxOCIsIjg3NzMiLCI4Nzg0IiwiODkwNCIsIjg5NDIiLCI4OTQzIiwiODk0NSIsIjkxMzYiLCI5MTM3IiwiMTAyMjIiLCIxMDIyMyIsIjEwMjI5IiwiMTAyMzAiLCIxMDIzMSIsIjEwMjMyIiwiMTAyMzMiLCIxMDIzNCIsIjEwMjM2IiwiTWF0aC1Cb2xkSXRhbGljIiwiOTQ1IiwiOTQ2IiwiOTQ3IiwiOTQ4IiwiOTQ5IiwiOTUwIiwiOTUxIiwiOTUyIiwiOTUzIiwiOTU0IiwiOTU1IiwiOTU2IiwiOTU3IiwiOTU4IiwiOTU5IiwiOTYwIiwiOTYxIiwiOTYyIiwiOTYzIiwiOTY0IiwiOTY1IiwiOTY2IiwiOTY3IiwiOTY4IiwiOTY5IiwiOTc3IiwiOTgxIiwiOTgyIiwiMTAwOSIsIjEwMTMiLCJNYXRoLUl0YWxpYyIsIk1hdGgtUmVndWxhciIsIlNhbnNTZXJpZi1Cb2xkIiwiMTgwIiwiU2Fuc1NlcmlmLUl0YWxpYyIsIlNhbnNTZXJpZi1SZWd1bGFyIiwiU2NyaXB0LVJlZ3VsYXIiLCJTaXplMS1SZWd1bGFyIiwiODIxNCIsIjg3MTkiLCI4NzIwIiwiODcyMSIsIjg3NDgiLCI4NzQ5IiwiODc1MCIsIjg4OTYiLCI4ODk3IiwiODg5OCIsIjg4OTkiLCI5MTY4IiwiMTA3NTIiLCIxMDc1MyIsIjEwNzU0IiwiMTA3NTYiLCIxMDc1OCIsIlNpemUyLVJlZ3VsYXIiLCJTaXplMy1SZWd1bGFyIiwiU2l6ZTQtUmVndWxhciIsIjkxMTUiLCI5MTE2IiwiOTExNyIsIjkxMTgiLCI5MTE5IiwiOTEyMCIsIjkxMjEiLCI5MTIyIiwiOTEyMyIsIjkxMjQiLCI5MTI1IiwiOTEyNiIsIjkxMjciLCI5MTI4IiwiOTEyOSIsIjkxMzAiLCI5MTMxIiwiOTEzMiIsIjkxMzMiLCI5MTQzIiwiNTczNDQiLCI1NzM0NSIsIjU3NjgwIiwiNTc2ODEiLCI1NzY4MiIsIjU3NjgzIiwiVHlwZXdyaXRlci1SZWd1bGFyIiwiOTYiLCIxMjciLCI3NzYiLCI5MjUxIiwic2lnbWFzQW5kWGlzIiwic2xhbnQiLCJzdHJldGNoIiwic2hyaW5rIiwicXVhZCIsImV4dHJhU3BhY2UiLCJudW0xIiwibnVtMiIsIm51bTMiLCJkZW5vbTEiLCJkZW5vbTIiLCJzdXAxIiwic3VwMiIsInN1cDMiLCJzdWIxIiwic3ViMiIsInN1cERyb3AiLCJzdWJEcm9wIiwiZGVsaW0xIiwiZGVsaW0yIiwiYXhpc0hlaWdodCIsImRlZmF1bHRSdWxlVGhpY2tuZXNzIiwiYmlnT3BTcGFjaW5nMSIsImJpZ09wU3BhY2luZzIiLCJiaWdPcFNwYWNpbmczIiwiYmlnT3BTcGFjaW5nNCIsImJpZ09wU3BhY2luZzUiLCJzcXJ0UnVsZVRoaWNrbmVzcyIsInB0UGVyRW0iLCJkb3VibGVSdWxlU2VwIiwiYXJyYXlSdWxlV2lkdGgiLCJmYm94c2VwIiwiZmJveHJ1bGUiLCJleHRyYUNoYXJhY3Rlck1hcCIsIsOFIiwiw4ciLCLDkCIsIsOeIiwiw6UiLCLDpyIsIsOwIiwiw74iLCLQkCIsItCRIiwi0JIiLCLQkyIsItCUIiwi0JUiLCLQliIsItCXIiwi0JgiLCLQmSIsItCaIiwi0JsiLCLQnCIsItCdIiwi0J4iLCLQnyIsItCgIiwi0KEiLCLQoiIsItCjIiwi0KQiLCLQpSIsItCmIiwi0KciLCLQqCIsItCpIiwi0KoiLCLQqyIsItCsIiwi0K0iLCLQriIsItCvIiwi0LAiLCLQsSIsItCyIiwi0LMiLCLQtCIsItC1Iiwi0LYiLCLQtyIsItC4Iiwi0LkiLCLQuiIsItC7Iiwi0LwiLCLQvSIsItC+Iiwi0L8iLCLRgCIsItGBIiwi0YIiLCLRgyIsItGEIiwi0YUiLCLRhiIsItGHIiwi0YgiLCLRiSIsItGKIiwi0YsiLCLRjCIsItGNIiwi0Y4iLCLRjyIsImdldENoYXJhY3Rlck1ldHJpY3MiLCJmb250IiwibWV0cmljcyIsImZvbnRNZXRyaWNzQnlTaXplSW5kZXgiLCJBVE9NUyIsImJpbiIsInB1bmN0IiwiTk9OX0FUT01TIiwiYWNjZW50LXRva2VuIiwibWF0aG9yZCIsIm9wLXRva2VuIiwidGV4dG9yZCIsInNyY19zeW1ib2xzIiwiZGVmaW5lU3ltYm9sIiwiYWNjZXB0VW5pY29kZUNoYXIiLCJtYWluIiwiYW1zIiwibGlnYXR1cmVzIiwiLS0iLCItLS0iLCJgYCIsIicnIiwic3ltYm9sc19pIiwic3ltYm9sc19jaCIsInNyY19zeW1ib2xzX2kiLCJfY2giLCJsZXR0ZXJzIiwic3ltYm9sc19pMiIsIl9jaDIiLCJzeW1ib2xzX3dpZGVDaGFyIiwic3ltYm9sc19pMyIsIl9jaDMiLCJzeW1ib2xzX2k0IiwiX2NoNCIsIl9pNSIsIl9jaDUiLCJ3aWRlTGF0aW5MZXR0ZXJEYXRhIiwid2lkZU51bWVyYWxEYXRhIiwic2l6ZVN0eWxlTWFwIiwic2l6ZU11bHRpcGxpZXJzIiwic2l6ZUF0U3R5bGUiLCJPcHRpb25zX09wdGlvbnMiLCJPcHRpb25zIiwidGV4dFNpemUiLCJwaGFudG9tIiwiZm9udFNoYXBlIiwic2l6ZU11bHRpcGxpZXIiLCJfZm9udE1ldHJpY3MiLCJCQVNFU0laRSIsImV4dGVuZCIsImV4dGVuc2lvbiIsImhhdmluZ1N0eWxlIiwiaGF2aW5nQ3JhbXBlZFN0eWxlIiwiaGF2aW5nU2l6ZSIsImhhdmluZ0Jhc2VTdHlsZSIsIndhbnRTaXplIiwiaGF2aW5nQmFzZVNpemluZyIsIndpdGhDb2xvciIsIndpdGhQaGFudG9tIiwid2l0aEZvbnQiLCJ3aXRoVGV4dEZvbnRGYW1pbHkiLCJ3aXRoVGV4dEZvbnRXZWlnaHQiLCJ3aXRoVGV4dEZvbnRTaGFwZSIsInNpemluZ0NsYXNzZXMiLCJvbGRPcHRpb25zIiwiYmFzZVNpemluZ0NsYXNzZXMiLCJmb250TWV0cmljcyIsInNpemVJbmRleCIsImNzc0VtUGVyTXUiLCJnZXRHbG9iYWxNZXRyaWNzIiwic3JjX09wdGlvbnMiLCJwdFBlclVuaXQiLCJwdCIsIm1tIiwiY20iLCJicCIsInBjIiwiZGQiLCJjYyIsIm5kIiwibmMiLCJzcCIsInB4IiwicmVsYXRpdmVVbml0IiwiZXgiLCJlbSIsIm11IiwidmFsaWRVbml0IiwidW5pdCIsInVuaXRzX2NhbGN1bGF0ZVNpemUiLCJzaXplVmFsdWUiLCJ1bml0T3B0aW9ucyIsIm1hdGhpdExldHRlcnMiLCJidWlsZENvbW1vbl9sb29rdXBTeW1ib2wiLCJmb250TmFtZSIsImJ1aWxkQ29tbW9uX21ha2VTeW1ib2wiLCJzeW1ib2xOb2RlIiwibG9va3VwIiwiYnVpbGRDb21tb25fY2FuQ29tYmluZSIsIl9zdHlsZSIsInNpemVFbGVtZW50RnJvbUNoaWxkcmVuIiwiYnVpbGRDb21tb25fbWFrZVNwYW4iLCJidWlsZENvbW1vbl9tYWtlU3ZnU3BhbiIsImJ1aWxkQ29tbW9uX21ha2VGcmFnbWVudCIsInJldHJpZXZlVGV4dEZvbnROYW1lIiwiYmFzZUZvbnROYW1lIiwiZm9udE1hcCIsIm1hdGhiZiIsIm1hdGhybSIsInRleHRpdCIsIm1hdGhpdCIsIm1hdGhiYiIsIm1hdGhjYWwiLCJtYXRoZnJhayIsIm1hdGhzY3IiLCJtYXRoc2YiLCJtYXRodHQiLCJzdmdEYXRhIiwiYnVpbGRDb21tb24iLCJtYWtlU3ltYm9sIiwibWF0aHN5bSIsIm1ha2VTcGFuIiwibWFrZVN2Z1NwYW4iLCJtYWtlTGluZVNwYW4iLCJ0aGlja25lc3MiLCJib3JkZXJCb3R0b21XaWR0aCIsIm1ha2VBbmNob3IiLCJhbmNob3IiLCJtYWtlRnJhZ21lbnQiLCJ3cmFwRnJhZ21lbnQiLCJtYWtlVkxpc3QiLCJwYXJhbXMiLCJfZ2V0Vkxpc3RDaGlsZHJlbkFuZEQiLCJwb3NpdGlvblR5cGUiLCJvbGRDaGlsZHJlbiIsIl9kZXB0aCIsImN1cnJQb3MiLCJkaWZmIiwiYm90dG9tIiwicG9zaXRpb25EYXRhIiwiZ2V0Vkxpc3RDaGlsZHJlbkFuZERlcHRoIiwicHN0cnV0U2l6ZSIsInBzdHJ1dCIsInJlYWxDaGlsZHJlbiIsIm1pblBvcyIsIm1heFBvcyIsIl9pMiIsIl9jaGlsZCIsIl9lbGVtIiwid3JhcHBlckNsYXNzZXMiLCJ3cmFwcGVyU3R5bGUiLCJjaGlsZFdyYXAiLCJtYXJnaW5MZWZ0Iiwidmxpc3QiLCJlbXB0eVNwYW4iLCJkZXB0aFN0cnV0IiwidG9wU3RydXQiLCJ2dGFibGUiLCJtYWtlT3JkIiwiaXNGb250IiwiZm9udE9yRmFtaWx5IiwiX3dpZGVDaGFyYWN0ZXJGb250Iiwid2lkZUNoYXIiLCJjb2RlUG9pbnQiLCJmbG9vciIsIndpZGVfY2hhcmFjdGVyX3dpZGVDaGFyYWN0ZXJGb250Iiwid2lkZUZvbnROYW1lIiwid2lkZUZvbnRDbGFzcyIsImZvbnRDbGFzc2VzIiwiZm9udERhdGEiLCJmb250Q2xhc3MiLCJib2xkc3ltYm9sIiwicGFydHMiLCJmb250TG9va3VwIiwiYnVpbGRDb21tb25fbWF0aGRlZmF1bHQiLCJfZm9udE5hbWUiLCJfZm9udE5hbWUzIiwiX2ZvbnROYW1lMiIsIm1ha2VHbHVlIiwibWVhc3VyZW1lbnQiLCJzdGF0aWNTdmciLCJfc3ZnRGF0YSR2YWx1ZSIsInN2Z05vZGUiLCJ0cnlDb21iaW5lQ2hhcnMiLCJhc3NlcnROb2RlVHlwZSIsInR5cGVkTm9kZSIsImNoZWNrTm9kZVR5cGUiLCJhc3NlcnRBdG9tRmFtaWx5IiwiZmFtaWx5IiwiY2hlY2tBdG9tRmFtaWx5IiwiYXNzZXJ0U3ltYm9sTm9kZVR5cGUiLCJjaGVja1N5bWJvbE5vZGVUeXBlIiwidGhpbnNwYWNlIiwibWVkaXVtc3BhY2UiLCJ0aGlja3NwYWNlIiwic3BhY2luZ3MiLCJtb3JkIiwibW9wIiwibWJpbiIsIm1yZWwiLCJtaW5uZXIiLCJtb3BlbiIsIm1jbG9zZSIsIm1wdW5jdCIsInRpZ2h0U3BhY2luZ3MiLCJfZnVuY3Rpb25zIiwiX2h0bWxHcm91cEJ1aWxkZXJzIiwiX21hdGhtbEdyb3VwQnVpbGRlcnMiLCJkZWZpbmVGdW5jdGlvbiIsIl9yZWYiLCJuYW1lcyIsImh0bWxCdWlsZGVyIiwibWF0aG1sQnVpbGRlciIsIm51bUFyZ3MiLCJhcmdUeXBlcyIsImdyZWVkaW5lc3MiLCJhbGxvd2VkSW5UZXh0IiwiYWxsb3dlZEluTWF0aCIsIm51bU9wdGlvbmFsQXJncyIsImluZml4IiwiZGVmaW5lRnVuY3Rpb25CdWlsZGVycyIsIl9yZWYyIiwiZGVmaW5lRnVuY3Rpb25fb3JkYXJndW1lbnQiLCJidWlsZEhUTUxfbWFrZVNwYW4iLCJiaW5MZWZ0Q2FuY2VsbGVyIiwiYmluUmlnaHRDYW5jZWxsZXIiLCJzdHlsZU1hcCIsInNjcmlwdHNjcmlwdCIsIkRvbUVudW0iLCJidWlsZEhUTUxfYnVpbGRFeHByZXNzaW9uIiwiaXNSZWFsR3JvdXAiLCJzdXJyb3VuZGluZyIsImdyb3VwcyIsImJ1aWxkSFRNTF9idWlsZEdyb3VwIiwiZ2x1ZU9wdGlvbnMiLCJkdW1teVByZXYiLCJkdW1teU5leHQiLCJ0cmF2ZXJzZU5vblNwYWNlTm9kZXMiLCJwcmV2VHlwZSIsImdldFR5cGVPZkRvbVRyZWUiLCJjYWxsYmFjayIsInBhcnRpYWxHcm91cCIsImJ1aWxkSFRNTF9jaGVja1BhcnRpYWxHcm91cCIsImdldE91dGVybW9zdE5vZGUiLCJtYWtlTnVsbERlbGltaXRlciIsIm1vcmVDbGFzc2VzIiwiYmFzZU9wdGlvbnMiLCJncm91cE5vZGUiLCJtdWx0aXBsaWVyIiwiYnVpbGRIVE1MVW5icmVha2FibGUiLCJzdHJ1dCIsInZlcnRpY2FsQWxpZ24iLCJidWlsZEhUTUwiLCJ0YWdDaGlsZCIsIm5vYnJlYWsiLCJodG1sTm9kZSIsIm5ld0RvY3VtZW50RnJhZ21lbnQiLCJtYXRoTUxUcmVlX01hdGhOb2RlIiwiTWF0aE5vZGUiLCJnZXRBdHRyaWJ1dGUiLCJtYXRoTUxUcmVlX1RleHROb2RlIiwiVGV4dE5vZGUiLCJtYXRoTUxUcmVlIiwiU3BhY2VOb2RlIiwiYnVpbGRNYXRoTUxfbWFrZVRleHQiLCJidWlsZE1hdGhNTF9tYWtlUm93IiwiYnVpbGRNYXRoTUxfZ2V0VmFyaWFudCIsImJ1aWxkTWF0aE1MX2J1aWxkRXhwcmVzc2lvbiIsImlzT3JkZ3JvdXAiLCJidWlsZE1hdGhNTF9idWlsZEdyb3VwIiwibGFzdEdyb3VwIiwiX2dyb3VwIiwiX2xhc3RHcm91cCRjaGlsZHJlbiIsIl9sYXN0R3JvdXAkY2hpbGRyZW4yIiwiX2xhc3RHcm91cCRjaGlsZHJlbjMiLCJsYXN0Q2hpbGQiLCJidWlsZEV4cHJlc3Npb25Sb3ciLCJidWlsZE1hdGhNTCIsInRleEV4cHJlc3Npb24iLCJmb3JNYXRobWxPbmx5Iiwid3JhcHBlciIsImFubm90YXRpb24iLCJzZW1hbnRpY3MiLCJ3cmFwcGVyQ2xhc3MiLCJidWlsZFRyZWVfb3B0aW9uc0Zyb21TZXR0aW5ncyIsImJ1aWxkVHJlZV9kaXNwbGF5V3JhcCIsInN0cmV0Y2h5Q29kZVBvaW50Iiwid2lkZWhhdCIsIndpZGVjaGVjayIsIndpZGV0aWxkZSIsInV0aWxkZSIsIm92ZXJsZWZ0YXJyb3ciLCJ1bmRlcmxlZnRhcnJvdyIsInhsZWZ0YXJyb3ciLCJvdmVycmlnaHRhcnJvdyIsInVuZGVycmlnaHRhcnJvdyIsInhyaWdodGFycm93IiwidW5kZXJicmFjZSIsIm92ZXJicmFjZSIsIm92ZXJncm91cCIsInVuZGVyZ3JvdXAiLCJvdmVybGVmdHJpZ2h0YXJyb3ciLCJ1bmRlcmxlZnRyaWdodGFycm93IiwieGxlZnRyaWdodGFycm93IiwiT3ZlcnJpZ2h0YXJyb3ciLCJ4UmlnaHRhcnJvdyIsIm92ZXJsZWZ0aGFycG9vbiIsInhsZWZ0aGFycG9vbnVwIiwib3ZlcnJpZ2h0aGFycG9vbiIsInhyaWdodGhhcnBvb251cCIsInhMZWZ0YXJyb3ciLCJ4TGVmdHJpZ2h0YXJyb3ciLCJ4aG9va2xlZnRhcnJvdyIsInhob29rcmlnaHRhcnJvdyIsInhtYXBzdG8iLCJ4cmlnaHRoYXJwb29uZG93biIsInhsZWZ0aGFycG9vbmRvd24iLCJ4cmlnaHRsZWZ0aGFycG9vbnMiLCJ4bGVmdHJpZ2h0aGFycG9vbnMiLCJ4dHdvaGVhZGxlZnRhcnJvdyIsInh0d29oZWFkcmlnaHRhcnJvdyIsInhsb25nZXF1YWwiLCJ4dG9mcm9tIiwieHJpZ2h0bGVmdGFycm93cyIsInhyaWdodGVxdWlsaWJyaXVtIiwieGxlZnRlcXVpbGlicml1bSIsImthdGV4SW1hZ2VzRGF0YSIsIm92ZXJsaW5lc2VnbWVudCIsInVuZGVybGluZXNlZ21lbnQiLCJncm91cExlbmd0aCIsInN0cmV0Y2h5IiwicGFkIiwiaW1nIiwidG90YWxIZWlnaHQiLCJzdHJva2Utd2lkdGgiLCJfYnVpbGRTdmdTcGFuXyIsInZpZXdCb3hXaWR0aCIsInZpZXdCb3hIZWlnaHQiLCJfaGVpZ2h0IiwibnVtQ2hhcnMiLCJiYXNlIiwiaW1nSW5kZXgiLCJtaW5XaWR0aCIsIndpZHRoQ2xhc3NlcyIsImFsaWducyIsInNwYW5zIiwicGF0aHMiLCJfbWluV2lkdGgiLCJfdmlld0JveEhlaWdodCIsIl9oZWlnaHQyIiwibnVtU3ZnQ2hpbGRyZW4iLCJfcGF0aCIsIl9zdmdOb2RlIiwiX3NwYW4iLCJidWlsZFN2Z1NwYW5fIiwiYWNjZW50X2h0bWxCdWlsZGVyIiwiZ3JwIiwic3VwU3ViR3JvdXAiLCJzdXBTdWIiLCJhc3NlcnRTcGFuIiwiaXNTaGlmdHkiLCJiYXNlQ2hhciIsImFjY2VudEJvZHkiLCJjbGVhcmFuY2UiLCJpc1N0cmV0Y2h5IiwiYWNjZW50IiwiYWNjZW50RnVsbCIsImFjY2VudFdyYXAiLCJhY2NlbnRfbWF0aG1sQnVpbGRlciIsImFjY2VudE5vZGUiLCJOT05fU1RSRVRDSFlfQUNDRU5UX1JFR0VYIiwiZnVuY05hbWUiLCJpbm5lckdyb3VwIiwia2VybiIsImFycm93X3BhZGRlZE5vZGUiLCJvcHRBcmdzIiwiYmVsb3ciLCJsb3dlckdyb3VwIiwibmV3T3B0aW9ucyIsInVwcGVyR3JvdXAiLCJhcnJvd0JvZHkiLCJhcnJvd1NoaWZ0IiwidXBwZXJTaGlmdCIsImxvd2VyU2hpZnQiLCJhcnJvd05vZGUiLCJ1cHBlck5vZGUiLCJsb3dlck5vZGUiLCJfbG93ZXJOb2RlIiwiY29sb3JfaHRtbEJ1aWxkZXIiLCJjb2xvcl9tYXRobWxCdWlsZGVyIiwiYnJlYWtPblRva2VuVGV4dCIsImd1bGxldCIsInNldCIsInBhcnNlRXhwcmVzc2lvbiIsIm5ld1JvdyIsIm5ld0xpbmUiLCJtYXJnaW5Ub3AiLCJkZWxpbWl0ZXJfZ2V0TWV0cmljcyIsImRlbGltaXRlcl9zdHlsZVdyYXAiLCJkZWxpbSIsInRvU3R5bGUiLCJkZWxpbVNpemVNdWx0aXBsaWVyIiwiY2VudGVyU3BhbiIsImRlbGltaXRlcl9tYWtlTGFyZ2VEZWxpbSIsImNlbnRlciIsImRlbGltaXRlcl9tYXRocm1TaXplIiwiZGVsaW1pdGVyX21ha2VJbm5lciIsInNpemVDbGFzcyIsImxhcCIsImRlbGltaXRlcl9tYWtlU3RhY2tlZERlbGltIiwiaGVpZ2h0VG90YWwiLCJtaWRkbGUiLCJ0b3BNZXRyaWNzIiwidG9wSGVpZ2h0VG90YWwiLCJyZXBlYXRNZXRyaWNzIiwicmVwZWF0SGVpZ2h0VG90YWwiLCJib3R0b21NZXRyaWNzIiwiYm90dG9tSGVpZ2h0VG90YWwiLCJtaWRkbGVIZWlnaHRUb3RhbCIsIm1pZGRsZUZhY3RvciIsIm1pZGRsZU1ldHJpY3MiLCJtaW5IZWlnaHQiLCJjZWlsIiwicmVhbEhlaWdodFRvdGFsIiwic2hpZnRPZkV4dHJhRWxlbWVudCIsImlubmVycyIsImRlbGltaXRlcl9zcXJ0U3ZnIiwic3FydE5hbWUiLCJleHRyYVZpbmljdWx1bSIsImhMaW5lUGFkIiwic3FydE1haW4iLCJzcXJ0U2l6ZTEiLCJzcXJ0U2l6ZTIiLCJzcXJ0U2l6ZTMiLCJzcXJ0U2l6ZTQiLCJzcXJ0VGFsbCIsInNxcnRQYXRoIiwicGF0aE5vZGUiLCJzdGFja0xhcmdlRGVsaW1pdGVycyIsInN0YWNrQWx3YXlzRGVsaW1pdGVycyIsInN0YWNrTmV2ZXJEZWxpbWl0ZXJzIiwic2l6ZVRvTWF4SGVpZ2h0Iiwic3RhY2tOZXZlckRlbGltaXRlclNlcXVlbmNlIiwic3RhY2tBbHdheXNEZWxpbWl0ZXJTZXF1ZW5jZSIsInN0YWNrTGFyZ2VEZWxpbWl0ZXJTZXF1ZW5jZSIsImRlbGltVHlwZVRvRm9udCIsInRyYXZlcnNlU2VxdWVuY2UiLCJzZXF1ZW5jZSIsImhlaWdodERlcHRoIiwiZGVsaW1pdGVyX21ha2VDdXN0b21TaXplZERlbGltIiwiZGVsaW1UeXBlIiwiZGVsaW1pdGVyX21ha2VTbWFsbERlbGltIiwiZGVsaW1pdGVyIiwiYWR2YW5jZVdpZHRoIiwic3BhbkhlaWdodCIsInRleEhlaWdodCIsInJ1bGVXaWR0aCIsImRlbGltaXRlckV4dGVuZCIsIm1heERpc3RGcm9tQXhpcyIsImRlbGltaXRlclNpemVzIiwiXFxiaWdsIiwibWNsYXNzIiwiXFxCaWdsIiwiXFxiaWdnbCIsIlxcQmlnZ2wiLCJcXGJpZ3IiLCJcXEJpZ3IiLCJcXGJpZ2dyIiwiXFxCaWdnciIsIlxcYmlnbSIsIlxcQmlnbSIsIlxcYmlnZ20iLCJcXEJpZ2dtIiwiXFxiaWciLCJcXEJpZyIsIlxcYmlnZyIsIlxcQmlnZyIsImRlbGltaXRlcnMiLCJjaGVja0RlbGltaXRlciIsInN5bURlbGltIiwiYXNzZXJ0UGFyc2VkIiwibGVmdHJpZ2h0RGVwdGgiLCJleHBlY3QiLCJwYXJzZUZ1bmN0aW9uIiwicmlnaHRDb2xvciIsImxlZnREZWxpbSIsInJpZ2h0RGVsaW0iLCJpbm5lckhlaWdodCIsImlubmVyRGVwdGgiLCJoYWRNaWRkbGUiLCJpc01pZGRsZSIsImNvbG9yT3B0aW9ucyIsImxlZnROb2RlIiwicmlnaHROb2RlIiwibWlkZGxlRGVsaW0iLCJtaWRkbGVOb2RlIiwiZW5jbG9zZV9odG1sQnVpbGRlciIsImltZ1NoaWZ0IiwiaXNTaW5nbGVDaGFyIiwidmVydFBhZCIsInJ1bGVUaGlja25lc3MiLCJib3JkZXJTdHlsZSIsImJvcmRlcldpZHRoIiwiYmFja2dyb3VuZENvbG9yIiwiZW5jbG9zZV9tYXRobWxCdWlsZGVyIiwidGhrIiwiX3JlZjMiLCJfcmVmNCIsIl9lbnZpcm9ubWVudHMiLCJkZWZpbmVFbnZpcm9ubWVudCIsImdldEhMaW5lcyIsImhsaW5lSW5mbyIsImNvbnN1bWVTcGFjZXMiLCJueHQiLCJmZXRjaCIsImNvbnN1bWUiLCJwYXJzZUFycmF5IiwiaHNraXBCZWZvcmVBbmRBZnRlciIsImFkZEpvdCIsImFycmF5c3RyZXRjaCIsImNvbFNlcGFyYXRpb25UeXBlIiwiYmVnaW5Hcm91cCIsImV4cGFuZE1hY3JvQXNUZXh0Iiwicm93R2FwcyIsImhMaW5lc0JlZm9yZVJvdyIsImVuZEdyb3VwIiwibmV4dFRva2VuIiwiY3IiLCJkQ2VsbFN0eWxlIiwiZW52TmFtZSIsImFycmF5X2h0bWxCdWlsZGVyIiwibnIiLCJobGluZXMiLCJhcnJheWNvbHNlcCIsImJhc2VsaW5lc2tpcCIsImpvdCIsImFycmF5c2tpcCIsImFyc3RydXRIZWlnaHQiLCJhcnN0cnV0RGVwdGgiLCJzZXRITGluZVBvcyIsImhsaW5lc0luR2FwIiwiaXNEYXNoZWQiLCJpbnJvdyIsIm91dHJvdyIsImVsdCIsInJvd0dhcCIsImdhcCIsImNvbFNlcCIsImNvbERlc2NyTnVtIiwiY29sRGVzY3JpcHRpb25zIiwiY29sRGVzY3IiLCJmaXJzdFNlcGFyYXRvciIsImxpbmVUeXBlIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0U3R5bGUiLCJtYXJnaW4iLCJzZXB3aWR0aCIsInByZWdhcCIsInBvc3RnYXAiLCJ2TGlzdEVsZW1zIiwiaGxpbmUiLCJsaW5lU2hpZnQiLCJhbGlnbk1hcCIsImFycmF5X21hdGhtbEJ1aWxkZXIiLCJtZW5jbG9zZSIsImNvbHVtbkxpbmVzIiwicHJldlR5cGVXYXNBbGlnbiIsImlTdGFydCIsImlFbmQiLCJfY29scyIsInJvd0xpbmVzIiwiYXJyYXlfYWxpZ25lZEhhbmRsZXIiLCJudW1NYXRocyIsIm51bUNvbHMiLCJlbXB0eUdyb3VwIiwib3JkZ3JvdXAiLCJhcmcwIiwiaXNBbGlnbmVkIiwiX2kzIiwic3R5bGluZyIsImN1ck1hdGhzIiwiX2k0IiwibmRlIiwiY2EiLCJtYXRyaXgiLCJwbWF0cml4IiwiYm1hdHJpeCIsIkJtYXRyaXgiLCJ2bWF0cml4IiwiVm1hdHJpeCIsInNyY19lbnZpcm9ubWVudHMiLCJuYW1lR3JvdXAiLCJlbnYiLCJfcGFyc2VyJHBhcnNlQXJndW1lbnQiLCJwYXJzZUFyZ3VtZW50cyIsIl9hcmdzIiwiZW5kTmFtZVRva2VuIiwibWNsYXNzX21ha2VTcGFuIiwibWNsYXNzX2h0bWxCdWlsZGVyIiwibWNsYXNzX21hdGhtbEJ1aWxkZXIiLCJsc3BhY2UiLCJyc3BhY2UiLCJiaW5yZWxDbGFzcyIsImF0b20iLCJiYXNlQXJnIiwic2hpZnRlZEFyZyIsImJhc2VPcCIsImxpbWl0cyIsImFsd2F5c0hhbmRsZVN1cFN1YiIsInBhcmVudElzU3VwU3ViIiwic3VwcHJlc3NCYXNlU2hpZnQiLCJzdXBzdWIiLCJmb250X2h0bWxCdWlsZGVyIiwiZm9udF9tYXRobWxCdWlsZGVyIiwiZm9udEFsaWFzZXMiLCJcXEJiYiIsIlxcYm9sZCIsIlxcZnJhayIsIlxcYm0iLCJmdW5jIiwiZ2VuZnJhY19hZGp1c3RTdHlsZSIsIm9yaWdpbmFsU3R5bGUiLCJnZW5mcmFjX2h0bWxCdWlsZGVyIiwibnN0eWxlIiwiZHN0eWxlIiwibnVtZXJtIiwibnVtZXIiLCJjb250aW51ZWQiLCJoU3RydXQiLCJkU3RydXQiLCJydWxlU3BhY2luZyIsIm51bVNoaWZ0IiwiZGVub21TaGlmdCIsImZyYWMiLCJkZWxpbVNpemUiLCJkZW5vbW0iLCJkZW5vbSIsImhhc0JhckxpbmUiLCJiYXJTaXplIiwibWlkU2hpZnQiLCJjYW5kaWRhdGVDbGVhcmFuY2UiLCJnZW5mcmFjX21hdGhtbEJ1aWxkZXIiLCJpc0Rpc3BsYXkiLCJ3aXRoRGVsaW1zIiwibGVmdE9wIiwicmlnaHRPcCIsInJlcGxhY2VXaXRoIiwic3R5bEFycmF5IiwiZGVsaW1Gcm9tVmFsdWUiLCJkZWxpbVN0cmluZyIsImJhck5vZGUiLCJpc0JsYW5rIiwic3R5bCIsInRleHRPcmQiLCJfcmVmNSIsImFzc2VydCIsImhvcml6QnJhY2VfaHRtbEJ1aWxkZXIiLCJicmFjZUJvZHkiLCJpc092ZXIiLCJ2U3BhbiIsImNvbW1hbmQiLCJmb3JtYXRVbnN1cHBvcnRlZENtZCIsIm1hdGhtbCIsImluY2x1ZGVncmFwaGljc19zaXplRGF0YSIsInRvdGFsaGVpZ2h0Iiwia2V5VmFsIiwibWF0aEZ1bmN0aW9uIiwibXVVbml0IiwiZGltZW5zaW9uIiwiYWxpZ25tZW50IiwiZml4Iiwib3V0ZXJNb2RlIiwic3dpdGNoTW9kZSIsIm1hdGhjaG9pY2VfY2hvb3NlTWF0aFN0eWxlIiwiYXNzZW1ibGVTdXBTdWJfYXNzZW1ibGVTdXBTdWIiLCJzdXBHcm91cCIsInN1Ykdyb3VwIiwiYmFzZVNoaWZ0IiwiZmluYWxHcm91cCIsIl9ib3R0b20iLCJub1N1Y2Nlc3NvciIsIm9wX2h0bWxCdWlsZGVyIiwiaGFzTGltaXRzIiwibGFyZ2UiLCJzdGFzaCIsIm92YWwiLCJvcF9tYXRobWxCdWlsZGVyIiwic2luZ2xlQ2hhckJpZ09wcyIsIuKIjyIsIuKIkCIsIuKIkSIsIuKLgCIsIuKLgSIsIuKLgiIsIuKLgyIsIuKogCIsIuKogSIsIuKogiIsIuKohCIsIuKohiIsImZOYW1lIiwic2luZ2xlQ2hhckludGVncmFscyIsIuKIqyIsIuKIrCIsIuKIrSIsIuKIriIsIuKIryIsIuKIsCIsIm9wZXJhdG9ybmFtZV9odG1sQnVpbGRlciIsImNoaWxkVGV4dCIsInNpemluZ0dyb3VwIiwiaXNBbGxTdHJpbmciLCJzZW1pc2ltcGxlIiwiYW1vdW50IiwiYm9yZGVyVG9wV2lkdGgiLCJzaXplRnVuY3MiLCJzbWFzaEhlaWdodCIsInNtYXNoRGVwdGgiLCJ0YkFyZyIsInNtYXNoZWROb2RlIiwidGhldGEiLCJwaGkiLCJsaW5lQ2xlYXJhbmNlIiwibWluRGVsaW1pdGVySGVpZ2h0IiwiX2RlbGltaXRlciRzcXJ0SW1hZ2UiLCJkZWxpbURlcHRoIiwicGFkZGluZ0xlZnQiLCJyb290bSIsInRvU2hpZnQiLCJyb290Vkxpc3QiLCJyb290Vkxpc3RXcmFwIiwic3R5bGluZ19zdHlsZU1hcCIsIm5ld1N0eWxlIiwiYnVpbGRlckRlbGVnYXRlIiwic3Vwc3ViX2h0bWxCdWlsZGVyRGVsZWdhdGUiLCJzdXBtIiwic3VibSIsIm1pblN1cFNoaWZ0IiwidmFsdWVCYXNlIiwidmFsdWVTdXAiLCJ2YWx1ZVN1YiIsInN1cFNoaWZ0Iiwic3ViU2hpZnQiLCJfbmV3T3B0aW9ucyIsImlzT2lpbnQiLCJtYXhXaWR0aCIsInBzaSIsInZsaXN0RWxlbSIsIl92bGlzdEVsZW0iLCJpc0JyYWNlIiwiaG9yaXpCcmFjZSIsIl9iYXNlMiIsIl9iYXNlIiwiZGVmYXVsdFZhcmlhbnQiLCJtaSIsIm1uIiwibXRleHQiLCJjc3NTcGFjZSIsIlxcbm9icmVhayIsIlxcYWxsb3dicmVhayIsInJlZ3VsYXJTcGFjZSIsIiAiLCJcXCAiLCJ+IiwiXFxzcGFjZSIsIlxcbm9icmVha3NwYWNlIiwib3JkIiwidGFnX3BhZCIsInBhZE5vZGUiLCJ0ZXh0Rm9udEZhbWlsaWVzIiwiXFx0ZXh0IiwiXFx0ZXh0cm0iLCJcXHRleHRzZiIsIlxcdGV4dHR0IiwiXFx0ZXh0bm9ybWFsIiwidGV4dEZvbnRXZWlnaHRzIiwiXFx0ZXh0YmYiLCJcXHRleHRtZCIsInRleHRGb250U2hhcGVzIiwiXFx0ZXh0aXQiLCJcXHRleHR1cCIsIm9wdGlvbnNXaXRoRm9udCIsIm1ha2VWZXJiIiwic3RhciIsInNyY19mdW5jdGlvbnMiLCJjb250cm9sV29yZFdoaXRlc3BhY2VSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya3NFbmRSZWdleCIsImNvbWJpbmluZ0RpYWNyaXRpY2FsTWFya1N0cmluZyIsInRva2VuUmVnZXhTdHJpbmciLCJMZXhlcl9MZXhlciIsIkxleGVyIiwidG9rZW5SZWdleCIsImNhdGNvZGVzIiwiJSIsInNldENhdGNvZGUiLCJsZXgiLCJubEluZGV4IiwiY29udHJvbE1hdGNoIiwiTmFtZXNwYWNlX05hbWVzcGFjZSIsIk5hbWVzcGFjZSIsImJ1aWx0aW5zIiwiZ2xvYmFsTWFjcm9zIiwidW5kZWZTdGFjayIsInVuZGVmcyIsInVuZGVmIiwiaGFzIiwiYnVpbHRpbk1hY3JvcyIsImRlZmluZU1hY3JvIiwidG9rZW5zIiwiY29uc3VtZUFyZ3MiLCJmdXR1cmUiLCJkaWdpdFRvTnVtYmVyIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkMiLCJEIiwiRSIsImYiLCJGIiwicG9wVG9rZW4iLCJkaWdpdCIsIm1hY3Jvc19kZWYiLCJtYWNyb3NfbmV3Y29tbWFuZCIsImV4aXN0c09LIiwibm9uZXhpc3RzT0siLCJleGlzdHMiLCJpc0RlZmluZWQiLCJhcmdUZXh0IiwiZXhwYW5kTmV4dFRva2VuIiwiZG90c0J5VG9rZW4iLCIsIiwiXFxub3QiLCIrIiwiPSIsIi0iLCIqIiwiOiIsIlxcRE9UU0IiLCJcXGNvcHJvZCIsIlxcYmlndmVlIiwiXFxiaWd3ZWRnZSIsIlxcYmlndXBsdXMiLCJcXGJpZ2NhcCIsIlxcYmlnY3VwIiwiXFxwcm9kIiwiXFxzdW0iLCJcXGJpZ290aW1lcyIsIlxcYmlnb3BsdXMiLCJcXGJpZ29kb3QiLCJcXGJpZ3NxY3VwIiwiXFxBbmQiLCJcXGxvbmdyaWdodGFycm93IiwiXFxMb25ncmlnaHRhcnJvdyIsIlxcbG9uZ2xlZnRhcnJvdyIsIlxcTG9uZ2xlZnRhcnJvdyIsIlxcbG9uZ2xlZnRyaWdodGFycm93IiwiXFxMb25nbGVmdHJpZ2h0YXJyb3ciLCJcXG1hcHN0byIsIlxcbG9uZ21hcHN0byIsIlxcaG9va3JpZ2h0YXJyb3ciLCJcXGRvdGVxIiwiXFxtYXRoYmluIiwiXFxtYXRocmVsIiwiXFxyZWxiYXIiLCJcXFJlbGJhciIsIlxceHJpZ2h0YXJyb3ciLCJcXHhsZWZ0YXJyb3ciLCJcXERPVFNJIiwiXFxpbnQiLCJcXG9pbnQiLCJcXGlpbnQiLCJcXGlpaW50IiwiXFxpaWlpbnQiLCJcXGlkb3RzaW50IiwiXFxET1RTWCIsInRoZWRvdHMiLCJleHBhbmRBZnRlckZ1dHVyZSIsInNwYWNlQWZ0ZXJEb3RzIiwiKSIsIl0iLCJcXHJicmFjayIsIlxcfSIsIlxccmJyYWNlIiwiXFxyYW5nbGUiLCJcXHJjZWlsIiwiXFxyZmxvb3IiLCJcXHJncm91cCIsIlxccm1vdXN0YWNoZSIsIlxccmlnaHQiLCI7IiwiLiIsImxhdGV4UmFpc2VBIiwiaW1wbGljaXRDb21tYW5kcyIsIlxccmVsYXgiLCJeIiwiXFxsaW1pdHMiLCJcXG5vbGltaXRzIiwiTWFjcm9FeHBhbmRlcl9NYWNyb0V4cGFuZGVyIiwiTWFjcm9FeHBhbmRlciIsImV4cGFuc2lvbkNvdW50IiwiZmVlZCIsInB1c2hUb2tlbiIsInB1c2hUb2tlbnMiLCJfdGhpcyRzdGFjayIsInN0YXJ0T2ZBcmciLCJ0b2siLCJleHBhbmRPbmNlIiwidG9wVG9rZW4iLCJleHBhbnNpb24iLCJfZ2V0RXhwYW5zaW9uIiwiX3Rva2VucyIsImV4cGFuZGVkIiwiZXhwYW5kTWFjcm8iLCJvbGRTdGFja0xlbmd0aCIsInN0cmlwcGVkIiwiYm9keUxleGVyIiwidW5pY29kZUFjY2VudHMiLCLMgSIsIsyAIiwizIgiLCLMgyIsIsyEIiwizIYiLCLMjCIsIsyCIiwizIciLCLMiiIsIsyLIiwidW5pY29kZVN5bWJvbHMiLCLDoSIsIsOgIiwiw6QiLCLHnyIsIsOjIiwixIEiLCLEgyIsIuG6ryIsIuG6sSIsIuG6tSIsIseOIiwiw6IiLCLhuqUiLCLhuqciLCLhuqsiLCLIpyIsIsehIiwix7siLCLhuIMiLCLEhyIsIsSNIiwixIkiLCLEiyIsIsSPIiwi4biLIiwiw6kiLCLDqCIsIsOrIiwi4bq9IiwixJMiLCLhuJciLCLhuJUiLCLElSIsIsSbIiwiw6oiLCLhur8iLCLhu4EiLCLhu4UiLCLElyIsIuG4nyIsIse1Iiwi4bihIiwixJ8iLCLHpyIsIsSdIiwixKEiLCLhuKciLCLInyIsIsSlIiwi4bijIiwi4bivIiwixKkiLCLEqyIsIsStIiwix5AiLCLHsCIsIsS1Iiwi4bixIiwix6kiLCLEuiIsIsS+Iiwi4bi/Iiwi4bmBIiwixYQiLCLHuSIsIsOxIiwixYgiLCLhuYUiLCLDsyIsIsOyIiwiw7YiLCLIqyIsIsO1Iiwi4bmNIiwi4bmPIiwiyK0iLCLFjSIsIuG5kyIsIuG5kSIsIsWPIiwix5IiLCLDtCIsIuG7kSIsIuG7kyIsIuG7lyIsIsivIiwiyLEiLCLFkSIsIuG5lSIsIuG5lyIsIsWVIiwixZkiLCLhuZkiLCLFmyIsIuG5pSIsIsWhIiwi4bmnIiwixZ0iLCLhuaEiLCLhupciLCLFpSIsIuG5qyIsIsO6Iiwiw7kiLCLDvCIsIseYIiwix5wiLCLHliIsIseaIiwixakiLCLhubkiLCLFqyIsIuG5uyIsIsWtIiwix5QiLCLDuyIsIsWvIiwixbEiLCLhub0iLCLhuoMiLCLhuoEiLCLhuoUiLCLFtSIsIuG6hyIsIuG6mCIsIuG6jSIsIuG6iyIsIsO9Iiwi4buzIiwiw78iLCLhu7kiLCLIsyIsIsW3Iiwi4bqPIiwi4bqZIiwixboiLCLFviIsIuG6kSIsIsW8Iiwiw4EiLCLDgCIsIsOEIiwix54iLCLDgyIsIsSAIiwixIIiLCLhuq4iLCLhurAiLCLhurQiLCLHjSIsIsOCIiwi4bqkIiwi4bqmIiwi4bqqIiwiyKYiLCLHoCIsIse6Iiwi4biCIiwixIYiLCLEjCIsIsSIIiwixIoiLCLEjiIsIuG4iiIsIsOJIiwiw4giLCLDiyIsIuG6vCIsIsSSIiwi4biWIiwi4biUIiwixJQiLCLEmiIsIsOKIiwi4bq+Iiwi4buAIiwi4buEIiwixJYiLCLhuJ4iLCLHtCIsIuG4oCIsIsSeIiwix6YiLCLEnCIsIsSgIiwi4bimIiwiyJ4iLCLEpCIsIuG4oiIsIsONIiwiw4wiLCLDjyIsIuG4riIsIsSoIiwixKoiLCLErCIsIsePIiwiw44iLCLEsCIsIsS0Iiwi4biwIiwix6giLCLEuSIsIsS9Iiwi4bi+Iiwi4bmAIiwixYMiLCLHuCIsIsORIiwixYciLCLhuYQiLCLDkyIsIsOSIiwiw5YiLCLIqiIsIsOVIiwi4bmMIiwi4bmOIiwiyKwiLCLFjCIsIuG5kiIsIuG5kCIsIsWOIiwix5EiLCLDlCIsIuG7kCIsIuG7kiIsIuG7liIsIsiuIiwiyLAiLCLFkCIsIuG5lCIsIuG5liIsIsWUIiwixZgiLCLhuZgiLCLFmiIsIuG5pCIsIsWgIiwi4bmmIiwixZwiLCLhuaAiLCLFpCIsIuG5qiIsIsOaIiwiw5kiLCLDnCIsIseXIiwix5siLCLHlSIsIseZIiwixagiLCLhubgiLCLFqiIsIuG5uiIsIsWsIiwix5MiLCLDmyIsIsWuIiwixbAiLCLhubwiLCLhuoIiLCLhuoAiLCLhuoQiLCLFtCIsIuG6hiIsIuG6jCIsIuG6iiIsIsOdIiwi4buyIiwixbgiLCLhu7giLCLIsiIsIsW2Iiwi4bqOIiwixbkiLCLFvSIsIuG6kCIsIsW7IiwizqwiLCLhvbAiLCLhvrEiLCLhvrAiLCLOrSIsIuG9siIsIs6uIiwi4b20Iiwizq8iLCLhvbYiLCLPiiIsIs6QIiwi4b+SIiwi4b+RIiwi4b+QIiwiz4wiLCLhvbgiLCLPjSIsIuG9uiIsIs+LIiwizrAiLCLhv6IiLCLhv6EiLCLhv6AiLCLPjiIsIuG9vCIsIs6OIiwi4b+qIiwizqsiLCLhv6kiLCLhv6giLCLOjyIsIuG/uiIsIlBhcnNlcl9QYXJzZXIiLCJicmVha09uSW5maXgiLCJlbmRPZkV4cHJlc3Npb24iLCJwYXJzZUF0b20iLCJmb3JtTGlnYXR1cmVzIiwiaGFuZGxlSW5maXhOb2RlcyIsIm92ZXJJbmRleCIsIm51bWVyTm9kZSIsImRlbm9tTm9kZSIsIm51bWVyQm9keSIsImRlbm9tQm9keSIsImNhbGxGdW5jdGlvbiIsImhhbmRsZVN1cFN1YnNjcmlwdCIsInN5bWJvbFRva2VuIiwicGFyc2VHcm91cCIsIlNVUFNVQl9HUkVFRElORVNTIiwidGV4dG9yZEFycmF5Iiwic3VwZXJzY3JpcHQiLCJzdWJzY3JpcHQiLCJvcE5vZGUiLCJfbGltaXRzIiwicHJpbWUiLCJwcmltZXMiLCJmdW5jRGF0YSIsIl90aGlzJHBhcnNlQXJndW1lbnRzIiwidG90YWxBcmdzIiwiYmFzZUdyZWVkaW5lc3MiLCJhcmdUeXBlIiwiaXNPcHRpb25hbCIsInBhcnNlR3JvdXBPZlR5cGUiLCJwYXJzZUNvbG9yR3JvdXAiLCJwYXJzZVNpemVHcm91cCIsInBhcnNlVXJsR3JvdXAiLCJwYXJzZVN0cmluZ0dyb3VwIiwiZ3JvdXBCZWdpbiIsImdyb3VwRW5kIiwiYmVnaW5Ub2tlbiIsImZpcnN0VG9rZW4iLCJuZXN0ZWQiLCJsYXN0VG9rZW4iLCJwYXJzZVJlZ2V4R3JvdXAiLCJlbmRPZkdyb3VwIiwicGFyc2VTeW1ib2wiLCJudWNsZXVzIiwiWyIsInsiLCJcXGJlZ2luZ3JvdXAiLCJzcmNfcGFyc2VUcmVlIiwidG9QYXJzZSIsImthdGV4X3JlbmRlciIsImJhc2VOb2RlIiwia2F0ZXhfcmVuZGVyVG9Eb21UcmVlIiwiY29tcGF0TW9kZSIsImthdGV4X3JlbmRlckVycm9yIiwia2F0ZXhOb2RlIiwibWF0aE1MTm9kZSIsIl9odG1sTm9kZSIsImJ1aWxkVHJlZV9idWlsZFRyZWUiLCJrYXRleF8wIiwicmVuZGVyVG9TdHJpbmciLCJfX3BhcnNlIiwiX19yZW5kZXJUb0RvbVRyZWUiLCJfX3JlbmRlclRvSFRNTFRyZWUiLCJidWlsZFRyZWVfYnVpbGRIVE1MVHJlZSIsIl9fc2V0Rm9udE1ldHJpY3MiLCJfX2RlZmluZVN5bWJvbCIsIl9fZGVmaW5lTWFjcm8iLCJfX2RvbVRyZWUiLCJoYXNPd24iLCJ0b1N0ciIsImdPUEQiLCJhcnIiLCJpc1BsYWluT2JqZWN0IiwiaGFzT3duQ29uc3RydWN0b3IiLCJoYXNJc1Byb3RvdHlwZU9mIiwic2V0UHJvcGVydHkiLCJuZXdWYWx1ZSIsImdldFByb3BlcnR5IiwiY29weSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJkZWVwIiwiVk1lc3NhZ2UiLCJWTWVzc2FnZVByb3RvdHlwZSIsInBhcnNlT3JpZ2luIiwicnVsZUlkIiwiZmF0YWwiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInBlcmZvcm1hbmNlIiwicGVyZm9ybWFuY2VOb3ciLCJtb3pOb3ciLCJtc05vdyIsIm9Ob3ciLCJ3ZWJraXROb3ciLCJEYXRlIiwiZ2V0VGltZSIsInN0YXJ0VGltZSIsIm5leHRUaWNrIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9ucyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiaHJ0aW1lIiwicHJldmlvdXNUaW1lc3RhbXAiLCJjbG9ja3RpbWUiLCJzZWNvbmRzIiwibmFub3NlY29uZHMiLCJwbGF0Zm9ybSIsInJlbGVhc2UiLCJ1cHRpbWUiLCJub3JtYWxpemVBcnJheSIsImFsbG93QWJvdmVSb290IiwidXAiLCJzcGxpdFBhdGhSZSIsInNwbGl0UGF0aCIsInJlc29sdmUiLCJyZXNvbHZlZFBhdGgiLCJyZXNvbHZlZEFic29sdXRlIiwiaXNQYXRoQWJzb2x1dGUiLCJpc0Fic29sdXRlIiwidHJhaWxpbmdTbGFzaCIsImV4dG5hbWUiLCJiYXNlbmFtZSIsImV4dCIsImRpcm5hbWUiLCJzZXAiLCJyZWxhdGl2ZSIsImZyb21QYXJ0cyIsInRvUGFydHMiLCJzYW1lUGFydHNMZW5ndGgiLCJvdXRwdXRQYXJ0cyIsInhzIiwibnBhdGgiLCJuRmlsZU5hbWUiLCJpc0J1ZmZlciIsIlZGaWxlIiwiYnVmZmVyIiwiaGlzdG9yeSIsImFzc2VydFBhcnQiLCJwYXJ0IiwiYXNzZXJ0Tm9uRW1wdHkiLCJhc3NlcnRQYXRoIiwiZW5jb2RpbmciLCJzdGVtIiwiZmlsZVBhdGgiLCJmYWlsIiwiaW52b2tlZCIsImRvbmUiLCJ0aGVuIiwidHJvdWdoIiwiZm5zIiwibWlkZGxld2FyZSIsInVzZSIsImdldFByb3RvdHlwZU9mIiwidW5pZmllZCIsImF0dGFjaGVycyIsInRyYW5zZm9ybWVycyIsImZyb3plbiIsImZyZWV6ZUluZGV4IiwicHJvY2Vzc29yIiwiYXNzZXJ0VW5mcm96ZW4iLCJmcmVlemUiLCJhZGRQbHVnaW4iLCJhZGRMaXN0IiwiYWRkUHJlc2V0IiwicGx1Z2lucyIsInBsdWdpbiIsInBsYWluIiwidmZpbGUiLCJhc3NlcnRQYXJzZXIiLCJuZXdhYmxlIiwiYXNzZXJ0Q29tcGlsZXIiLCJhc3NlcnROb2RlIiwiY29tcGlsZSIsInJ1blN5bmMiLCJjb21wbGV0ZSIsImJhaWwiLCJhc3NlcnREb25lIiwicHJvY2Vzc1N5bmMiLCJ0cmFuc2Zvcm1lciIsImNiIiwiUHJvbWlzZSIsImV4ZWN1dG9yIiwicmVqZWN0IiwicGlwZWxpbmUiLCJhc3luY05hbWUiLCJmYXRhbGl0aWVzIiwiZW1pdFBhcnNlRXJyb3JzIiwicmVwbGFjZXIiLCJsZXZlbCIsImVycm9ycyIsImRlc2NyaXB0aW9uIiwibm90ZSIsImVuY29kZWRDaGFyIiwicGFyc2U1IiwiUGFyc2VyNSIsInRhZ05hbWVzIiwiYmxvY2tPckNhcHRpb24iLCJpbmZlcldoaXRlU3BhY2UiLCJjb2xsZWN0VGV4dCIsImJyZWFrQmVmb3JlIiwiYnJlYWtBZnRlciIsImlubmVyVGV4dENvbGxlY3Rpb24iLCJ6ZXJvV2lkdGhTcGFjZSIsImFsbSIsImx0ciIsInJ0bCIsImxyZSIsInJsZSIsInBkZiIsImxybyIsInJsbyIsImxyaSIsInJsaSIsImZzaSIsInBkaSIsInRhYkNoYXIiLCJzcGFjZUNoYXIiLCJub3RSZW5kZXJlZCIsImZpbmRBZnRlciIsImNvbGxlY3RFbGVtZW50IiwiY29sbGVjdFByZVRleHQiLCJsaW5lU3RhcnQiLCJuZXh0TGluZSIsInRyaW1BbmRjb2xsYXBzZVNwYWNlc0FuZFRhYnMiLCJyZW1vdmVCaWRpQ29udHJvbENoYXJhY3RlcnMiLCJpc0JpZGlDb250cm9sQ2hhcmFjdGVyIiwic3BhY2VJbmRleCIsImthdGV4IiwiaW5saW5lIiwicGFyc2VIdG1sIiwiaW5jbHVkZVdoaXRlU3BhY2UiLCJhZnRlciIsImlzVGV4dCIsImlzQ29tbWVudCIsIm9wdGlvbkdyb3VwIiwiZGF0YUxpc3RJdGVtIiwibWVudUNvbnRlbnQiLCJydWJ5IiwidGFibGVDb250YWluZXIiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsImNvbmZ1c2luZ1BhcmFncmFwaFBhcmVudCIsImNsZWFyUGFyYWdyYXBoU2libGluZyIsIm9taXNzaW9uIiwiaGVhZE9yQ29sZ3JvdXBPckNhcHRpb24iLCJsaSIsImR0IiwicnQiLCJydWJ5RWxlbWVudCIsInJwIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJtZW51aXRlbSIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIiwidGQiLCJjZWxscyIsInRoIiwid2hpdGVTcGFjZUxlZnQiLCJiZWZvcmUiLCJ1bmlxdWVIZWFkTWV0YWRhdGEiLCJ0YWJsZUNvbnRhaW5lcnMiLCJwbGFjZSIsImFscGhhYmV0aWNhbCIsImRlY2ltYWwiLCJlc2NhcGVPbmx5IiwidXNlTmFtZWRSZWZlcmVuY2VzIiwiY2hhcmFjdGVycyIsImVudGl0aWVzIiwiY29uc3RydWN0IiwiZGVmYXVsdEVzY2FwZXMiLCJ0b0V4cHJlc3Npb24iLCJzdXJyb2dhdGVQYWlyIiwiYm1wIiwib21pdCIsIm9taXRPcHRpb25hbFNlbWljb2xvbnMiLCJ0b0hleFJlZmVyZW5jZSIsIm5hbWVkIiwibnVtZXJpYyIsInNob3J0ZXN0IiwidXNlU2hvcnRlc3RSZWZlcmVuY2VzIiwibGVnYWN5IiwiYWxwaGFudW1lcmljYWwiLCJ0b05hbWVkIiwidG9EZWNpbWFsUmVmZXJlbmNlIiwiaGV4YWRlY2ltYWwiLCJpc0xpdGVyYWwiLCJ1bnF1b3RlZCIsInVucXVvdGVkU2FmZSIsInNpbmdsZVF1b3RlZCIsImRvdWJsZVF1b3RlZCIsInNpbmdsZSIsInRpZ2h0IiwicXVvdGF0aW9uTWFyayIsImFwb3N0cm9waGUiLCJjbG9zZUVtcHR5IiwibGVzc1RoYW4iLCJ0aWdodENsb3NlIiwic2xhc2giLCJncmVhdGVyVGhhbiIsImVxdWFsc1RvIiwiY29uc3RhbnRzIiwic2FmZSIsImFsdGVybmF0aXZlIiwidGlnaHRMaXN0cyIsImNvbGxhcHNlRW1wdHkiLCJjY291bnQiLCJhdHRyaWJ1dGVWYWx1ZSIsInRpZ2h0RG9jdHlwZSIsInB1YiIsInN5cyIsInNtYXJ0IiwicXVvdGVTbWFydCIsImFsbG93UGFyc2VFcnJvcnMiLCJhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnMiLCJvbWl0T3B0aW9uYWxUYWdzIiwicHJlZmVyVW5xdW90ZWQiLCJ0aWdodEF0dHJpYnV0ZXMiLCJ0aWdodENvbW1hU2VwYXJhdGVkTGlzdHMiLCJ0aWdodFNlbGZDbG9zaW5nIiwiY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMiLCJjbG9zZVNlbGZDbG9zaW5nIiwiY2xvc2VFbXB0eUVsZW1lbnRzIiwidG9IVE1MIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiU3VwZXIiLCJPZiIsIkZyb20iLCJwYXJhbWV0ZXJzIiwidG9Qb3NpdGlvbiIsIm9mZnNldFRvUG9zaXRpb25GYWN0b3J5IiwidG9PZmZzZXQiLCJwb3NpdGlvblRvT2Zmc2V0RmFjdG9yeSIsInNlbWljb2xvbiIsImVudGl0eSIsImluZGVudCIsImVudGl0eUNoYXJhY3RlcnMiLCJuYW1lZEVudGl0eSIsInRlcm1pbmF0ZWQiLCJmb2xsb3dpbmciLCJ3YXJuaW5nIiwiYWRkaXRpb25hbCIsIm5vblRlcm1pbmF0ZWQiLCJoYW5kbGVUZXh0IiwiaGFuZGxlUmVmZXJlbmNlIiwiaGFuZGxlV2FybmluZyIsInRleHRDb250ZXh0IiwicmVmZXJlbmNlQ29udGV4dCIsIndhcm5pbmdDb250ZXh0IiwiYW1wZXJzYW5kIiwiZm9ybUZlZWQiLCJ1cHBlcmNhc2VYIiwibG93ZXJjYXNlWCIsImhleGEiLCJkZWNpIiwiZGVjb2RlRW50aXR5IiwibmFtZWRVbmtub3duIiwibmFtZWROb3RUZXJtaW5hdGVkIiwibmFtZWRFbXB0eSIsIm51bWVyaWNOb3RUZXJtaW5hdGVkIiwicHJvaGliaXRlZCIsImJhc2VzIiwibnVtZXJpY1Byb2hpYml0ZWQiLCJyZXBsYWNlbWVudENoYXJhY3RlciIsIm51bWVyaWNEaXNhbGxvd2VkIiwiZGlzYWxsb3dlZCIsIm51bWVyaWNFbXB0eSIsImZsdXNoIiwiZGVjb2RlciIsIm9mZnNldHMiLCJtYXRjaGVkIiwidmFsdWVMZW5ndGgiLCJ0b2tlbml6ZXJzIiwib25seUF0U3RhcnQiLCJhdFN0YXJ0Iiwibm90SW5MaXN0IiwiaW5MaXN0Iiwibm90SW5CbG9jayIsImluQmxvY2siLCJub3RJbkxpbmsiLCJpbkxpbmsiLCJlb2YiLCJpbmRlbnRhdGlvbiIsImdldE9mZnNldCIsImNvbWJpbmVkIiwidmFsaWRhdGVFYXQiLCJyZXNldCIsIm1lcmdlYWJsZSIsIm1lcmdlVGV4dCIsIm1lcmdlQmxvY2txdW90ZSIsImV4aXRTdGFydCIsImVzY2FwZXMiLCJmb290bm90ZXMiLCJwZWRhbnRpYyIsImZvcmNlIiwiaGFyZCIsInNvZnQiLCJsaW5lQnJlYWtzRXhwcmVzc2lvbiIsInRva2VuaXplQmxvY2siLCJyZW1vdmVQb3NpdGlvbiIsImJsYW5rUXVldWUiLCJzdWJ2YWx1ZVF1ZXVlIiwiY29udGVudFF1ZXVlIiwiY29kZUluZGVudCIsImZlbmNlQ291bnQiLCJmbGFnIiwiZXhkZW50ZWRDb250ZW50IiwiZXhkZW50ZWRDbG9zaW5nIiwidGlsZGUiLCJncmF2ZUFjY2VudCIsImRlY29kZSIsInVuZXNjYXBlIiwiaW50ZXJydXB0b3JzIiwiaW50ZXJydXB0b3IiLCJyZXN0IiwibmV4dEluZGV4Iiwic3RhcnRJbmRleCIsInByZWZpeGVkIiwiZXhpdCIsImN1cnJlbnRMaW5lIiwiaW5kZW50cyIsImludGVycnVwdCIsImVudGVyQmxvY2siLCJtYXhGZW5jZUNvdW50IiwibWFya2VyQ291bnQiLCJhc3RlcmlzayIsInVuZGVyc2NvcmUiLCJtYXhDb3VudCIsInN0b3BzIiwic3BhY2VTaXplIiwibWF4aW11bSIsInBhZGRpbmciLCJtaW5JbmRlbnQiLCJleGNsYW1hdGlvbk1hcmsiLCJnZXRJbmRlbnQiLCJjdXJyZW50TWFya2VyIiwicHJldkVtcHR5IiwiYWxsTGluZXMiLCJlbXB0eUxpbmVzIiwiaXRlbSIsImVudGVyVG9wIiwiZXhpdEJsb2NrcXVvdGUiLCJpbmRlbnRlZCIsImludGVydXB0b3JzIiwicGx1c1NpZ24iLCJyaWdodFBhcmVudGhlc2lzIiwidHJhaWwiLCJlbnRlckxpc3QiLCJsb29zZUxpc3RJdGVtRXhwcmVzc2lvbiIsInRhc2tJdGVtRXhwcmVzc2lvbiIsImJ1bGxldEV4cHJlc3Npb24iLCJwZWRhbnRpY0J1bGxldEV4cHJlc3Npb24iLCJpbml0aWFsSW5kZW50RXhwcmVzc2lvbiIsInRhc2siLCJwZWRhbnRpY0xpc3RJdGVtIiwibm9ybWFsTGlzdEl0ZW0iLCJidWxsZXQiLCJ0cmltbWVkTGluZXMiLCIkMiIsIiQzIiwiJDQiLCJyZW1vdmVJbmRlbnQiLCJtYXhJbmRlbnQiLCJlcXVhbHNUb0RlcHRoIiwiZGFzaERlcHRoIiwib3BlblRhZyIsImNsb3NlVGFnIiwiZWxlbWVudE9wZW5FeHByZXNzaW9uIiwic2VxdWVuY2VzIiwicmF3T3BlbkV4cHJlc3Npb24iLCJyYXdDbG9zZUV4cHJlc3Npb24iLCJjb21tZW50T3BlbkV4cHJlc3Npb24iLCJjb21tZW50Q2xvc2VFeHByZXNzaW9uIiwiaW5zdHJ1Y3Rpb25PcGVuRXhwcmVzc2lvbiIsImluc3RydWN0aW9uQ2xvc2VFeHByZXNzaW9uIiwiZGlyZWN0aXZlT3BlbkV4cHJlc3Npb24iLCJkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24iLCJjZGF0YU9wZW5FeHByZXNzaW9uIiwiY2RhdGFDbG9zZUV4cHJlc3Npb24iLCJlbGVtZW50Q2xvc2VFeHByZXNzaW9uIiwib3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24iLCJvcGVuQ2xvc2VUYWciLCJjb2xsYXBzZVdoaXRlU3BhY2UiLCJsZWZ0U3F1YXJlQnJhY2tldCIsInJpZ2h0U3F1YXJlQnJhY2tldCIsImNhcmV0IiwiY29sb24iLCJFWFBSRVNTSU9OX0lOSVRJQUxfVEFCIiwic3VicXVldWUiLCJiZWZvcmVVUkwiLCJiZWZvcmVUaXRsZSIsImlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIiLCJpc1VuY2xvc2VkVVJMQ2hhcmFjdGVyIiwibGVmdFBhcmVudGhlc2lzIiwiYWxpZ25tZW50cyIsImhhc0Rhc2giLCJwcmVhbWJsZSIsImxpbmVDb3VudCIsInBpcGVJbmRleCIsIm1pblJvd3MiLCJtaW5Db2x1bW5zIiwidHJpbVRyYWlsaW5nTGluZXMiLCJsb2NhdGUiLCJhdXRvTGluayIsImF0U2lnbiIsIm1haWx0byIsIm1haWx0b0xlbmd0aCIsImhhc0F0Q2hhcmFjdGVyIiwiZW50ZXJMaW5rIiwicHJvdG9jb2xzIiwicHJvdG9jb2xzTGVuZ3RoIiwicGFyZW5Db3VudCIsIm5leHRDaGFyYWN0ZXIiLCJpbmxpbmVIVE1MIiwicXVlc3Rpb25NYXJrIiwiaHRtbExpbmtPcGVuRXhwcmVzc2lvbiIsImh0bWxMaW5rQ2xvc2VFeHByZXNzaW9uIiwiY2xvc2VkIiwiaGFzTWFya2VyIiwiaXNJbWFnZSIsInNob3J0Y3V0IiwiY29sbGFwc2VkIiwiZnVsbCIsImJyYWNrZXRlZCIsImludHJvIiwic3RyaWtldGhyb3VnaCIsIm9wZW5pbmdGZW5jZUVuZCIsImNsb3NpbmdGZW5jZVN0YXJ0IiwiY2xvc2luZ0ZlbmNlRW5kIiwiZm91bmQiLCJoYXJkQnJlYWsiLCJtaW5CcmVha0xlbmd0aCIsInNldE9wdGlvbnMiLCJ2ZmlsZUxvY2F0aW9uIiwidG9nZ2xlIiwiaW5kZW50ZWRDb2RlIiwiZmVuY2VkQ29kZSIsImF0eEhlYWRpbmciLCJyZXF1aXJlJCQ5Iiwic2V0ZXh0SGVhZGluZyIsInJlcXVpcmUkJDEwIiwicmVxdWlyZSQkMTEiLCJyZXF1aXJlJCQxMiIsInJlcXVpcmUkJDEzIiwicmVxdWlyZSQkMTQiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjIiLCJyZXF1aXJlJCQyMyIsImRlbGV0aW9uIiwicmVxdWlyZSQkMjQiLCJyZXF1aXJlJCQyNSIsInJlcXVpcmUkJDI2IiwicmVxdWlyZSQkMjciLCJ0b2tlbml6ZUZhY3RvcnkiLCJMb2NhbCIsInVuaGVyaXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiaXRlciIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9hcnIiLCJfbiIsIl9kIiwiX2UiLCJfcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJlc2NhcGVSZWdFeHAiLCJDX05FV0xJTkUiLCJDX0ZFTkNFIiwiY29tcGlsZXJGYWN0b3J5IiwiYmxvY2tIZWFkaW5nIiwiYmxvY2tCb2R5IiwiYXZhaWxhYmxlQmxvY2tzIiwia2VlcCIsIl9rZWVwIiwiYmxvY2tUeXBlIiwiYmxvY2tUaXRsZSIsImxpbmVzVG9FYXQiLCJsaW5lVG9FYXQiLCJjb250ZW50U3RyaW5nIiwic3RyaW5nVG9FYXQiLCJwb3RlbnRpYWxCbG9jayIsInRpdGxlQWxsb3dlZCIsImJsb2NrQ2hpbGRyZW4iLCJ0aXRsZU5vZGUiLCJkZXRhaWxzIiwiY3VzdG9tQmxvY2tzIiwibWF4SW50IiwidE1pbiIsInRNYXgiLCJkYW1wIiwiaW5pdGlhbEJpYXMiLCJpbml0aWFsTiIsInJlZ2V4Tm9uQVNDSUkiLCJyZWdleFNlcGFyYXRvcnMiLCJub3QtYmFzaWMiLCJpbnZhbGlkLWlucHV0IiwiYmFzZU1pbnVzVE1pbiIsInN0cmluZ0Zyb21DaGFyQ29kZSIsImRpZ2l0VG9CYXNpYyIsImFkYXB0IiwiZGVsdGEiLCJudW1Qb2ludHMiLCJmaXJzdFRpbWUiLCJ0b0FTQ0lJIiwiZW5jb2RlZCIsIm1hcERvbWFpbiIsImhhbmRsZWRDUENvdW50IiwiYmFzaWNMZW5ndGgiLCJjdXJyZW50VmFsdWUiLCJpbnB1dExlbmd0aCIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsImJhc2VNaW51c1QiLCJxTWludXNUIiwiY291bnRlciIsInVjczJkZWNvZGUiLCJpc051bGwiLCJpc1N0cmluZyIsImlzT2JqZWN0Iiwic3RyaW5naWZ5UHJpbWl0aXZlIiwiaXNGaW5pdGUiLCJxcyIsImVxIiwicmVnZXhwIiwibWF4S2V5cyIsImtzdHIiLCJ2c3RyIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidXJsUGFyc2UiLCJyZXNvbHZlT2JqZWN0IiwiVXJsIiwic2xhc2hlcyIsImF1dGgiLCJwb3J0IiwiaG9zdG5hbWUiLCJoYXNoIiwicXVlcnkiLCJwYXRobmFtZSIsInByb3RvY29sUGF0dGVybiIsInBvcnRQYXR0ZXJuIiwic2ltcGxlUGF0aFBhdHRlcm4iLCJ1bndpc2UiLCJhdXRvRXNjYXBlIiwibm9uSG9zdENoYXJzIiwiaG9zdEVuZGluZ0NoYXJzIiwiaG9zdG5hbWVNYXhMZW4iLCJob3N0bmFtZVBhcnRQYXR0ZXJuIiwiaG9zdG5hbWVQYXJ0U3RhcnQiLCJ1bnNhZmVQcm90b2NvbCIsImphdmFzY3JpcHQiLCJqYXZhc2NyaXB0OiIsImhvc3RsZXNzUHJvdG9jb2wiLCJzbGFzaGVkUHJvdG9jb2wiLCJodHRwIiwiaHR0cHMiLCJmdHAiLCJnb3BoZXIiLCJodHRwOiIsImh0dHBzOiIsImZ0cDoiLCJnb3BoZXI6IiwiZmlsZToiLCJwYXJzZVF1ZXJ5U3RyaW5nIiwic2xhc2hlc0Rlbm90ZUhvc3QiLCJxdWVyeUluZGV4Iiwic3BsaXR0ZXIiLCJ1U3BsaXQiLCJzaW1wbGVQYXRoIiwicXNQYXJzZSIsImhlYyIsImxvd2VyUHJvdG8iLCJob3N0RW5kIiwicGFyc2VIb3N0IiwiaXB2Nkhvc3RuYW1lIiwiaG9zdHBhcnRzIiwibmV3cGFydCIsInZhbGlkUGFydHMiLCJub3RIb3N0IiwiYml0IiwiYWUiLCJlc2MiLCJxbSIsImtzIiwicXNTdHJpbmdpZnkiLCJfdHlwZW9mIiwicmVsUGF0aCIsInRrZXlzIiwidGsiLCJ0a2V5IiwicmtleXMiLCJyayIsInJrZXkiLCJhdXRoSW5Ib3N0IiwiaXNTb3VyY2VBYnMiLCJpc1JlbEFicyIsIm11c3RFbmRBYnMiLCJyZW1vdmVBbGxEb3RzIiwic3JjUGF0aCIsInBzeWNob3RpYyIsImhhc1RyYWlsaW5nU2xhc2giLCJfcmVxdWlyZSIsIlVSTFNlYXJjaFBhcmFtcyIsImlmcmFtZXMiLCJlYXRlblZhbHVlIiwic3BlY2lhbENoYXJzIiwicHJvdmlkZXIiLCJkZXRlY3RQcm92aWRlciIsImZpbmFsVXJsIiwicGFyc2VkIiwiZHJvcHBlZFF1ZXJ5UGFyYW1ldGVycyIsImlnbm9yZWQiLCJfcnVsZSIsInJlbW92ZUZpbGVOYW1lIiwicmVtb3ZlQWZ0ZXIiLCJhcHBlbmQiLCJjb21wdXRlRmluYWxVcmwiLCJ0aHVtYm5haWwiLCJ0aHVtYm5haWxVUkwiLCJ0aHVtYm5haWxDb25maWciLCJjb21wdXRlVGh1bWJuYWlsIiwiYWxsb3dmdWxsc2NyZWVuIiwiZnJhbWVib3JkZXIiLCJpZnJhbWUiLCJmbmMiLCJyZW1hcmsiLCJsaW5lSW5wdXQiLCJ0ZXh0SW5wdXQiLCJtdWx0aUNob2ljZSIsImluZm9ybWF0aW9uIiwiYXR0ZW50aW9uIiwicXVlc3Rpb24iLCJnb29kIiwic2VjcmV0IiwiYmFkIiwid3d3LnlvdXR1YmUuY29tIiwi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LElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUssS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLEtBQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxNQUFNLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLE1BQU0sTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxFQUFFLE9DSTN2dkUsTUFBTTFCLEdBQUlDLEdBQVFDLFlBQ1p5QixHQUFLMUIsR0FBUTJCLHFCQUdiQyxHQUFxQyxDQUN2Q0MsSUFBTSxLQUNOQyxJQUFNLEtBQ05DLElBQU0sSUFDTkMsSUFBTSxLQUNOQyxJQUFNLEtBQ05DLElBQU0sS0FDTkMsSUFBTSxLQUNOQyxJQUFNLElBQ05DLElBQU0sS0FDTkMsSUFBTSxJQUNOQyxJQUFNLEtBQ05DLElBQU0sSUFDTkMsSUFBTSxJQUNOQyxJQUFNLEtBQ05DLElBQU0sS0FDTkMsSUFBTSxLQUNOQyxJQUFNLEtBQ05DLElBQU0sS0FDTkMsSUFBTSxLQUNOQyxJQUFNLEtBQ05DLElBQU0sSUFDTkMs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QUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxHQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLEtBQU8sS0FBTyxFQUFHLEtBQzVCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxLQUFPLEVBQUcsRUFBRyxTQUN4QkMsSUFBTyxDQUFDLEVBQUcsR0FBSyxFQUFHLEVBQUcsU0FDdEJDLElBQU8sQ0FBQyxFQUFHLEtBQU8sRUFBRyxFQUFHLFNBQ3hCQyxJQUFPLENBQUMsRUFBRyxHQUFLLEVBQUcsRUFBRyxTQUN0QkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQzNCQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsR0FDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEdBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsTUFBUSxLQUFPLEVBQUcsRUFBRyxHQUM5QkMsS0FBUSxDQUFDLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLEtBQVEsQ0FBQyxNQUFRLEtBQU8sRUFBRyxFQUFHLEdBQzlCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE1BQVEsS0FBTyxFQUFHLEVBQUcsR0FDOUJDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDakNDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxHQUNqQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLEtBQVEsRUFBRSxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxLQUFRLEVBQUUsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsS0FBUSxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsSUFDekJDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQ2xDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxNQUFRLEtBQU8sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsTUFBUSxLQUFPLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsQ0FBQyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLENBQUMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN6QkMsS0FBUSxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLE1BQVEsTUFBUSxFQUFHLEVBQUcsUUFDL0JDLEtBQVEsQ0FBQyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQy9CQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDekJDLEtBQVEsQ0FBQyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3pCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxNQUFTLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FFcENDLHNCQUF1QixDQUNyQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDL0J6USxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsT0FBUyxPQUFTLE1BQVEsT0FBUyxRQUMxQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUMzQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLE9BQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEtBQU8sT0FBUyxRQUNuQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxHQUFNLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUMzQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsU0FFdkNpUCxrQkFBbUIsQ0FDakJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0J0QixHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQmMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekIxUixHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JrUSxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxPQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjdRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE9BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxNQUFTLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsTUFBUyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDNUJDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzVCQyxNQUFTLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUM1QkMsTUFBUyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FFOUJDLFlBQWEsQ0FDWHRELEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QnNELEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxNQUM1QkMsR0FBTSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJ2RCxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsSUFBTSxFQUFHLEVBQUcsTUFDdEJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QnRCLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCYyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I2QyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQjVDLEdBQU0sRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0I1QyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QjZDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCdlUsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsU0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCa1EsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekI2QyxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUN6QjVDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QjRDLEdBQU0sQ0FBQyxJQUFNLE9BQVMsT0FBUyxFQUFHLE1BQ2xDM0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsTUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM3USxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQjhRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJvQixJQUFPLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsSUFBTSxPQUFTLEVBQUcsRUFBRyxNQUM3QkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQitULElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJxVSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDakMzRCxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQ2pDbFYsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JtVixLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JoVixLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ2lWLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2pDaFYsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENpVixLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNqQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2xDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsS0FBUSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0I3VCxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxNQUM5QjhULEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakM5VCxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQytULEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjlULEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLE1BQzNCK1QsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsS0FBUSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqVSxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQmtVLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzNCalUsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JHLEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCRSxLQUFRLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxNQUMzQjZULEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN2QzdULEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDOFQsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDMVQsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakMyVCxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDNVIsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbEM2UixLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNsQ0MsS0FBUSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JqUSxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNsQ0MsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsU0FDbENXLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFNBQ2pDc1AsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDbENuUCxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ29QLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2xDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxTQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLFFBQ3hCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLE1BQVMsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxNQUFTLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUM1QkMsTUFBUyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDNUJDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFFcENDLGtCQUFtQixDQUNqQnpNLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnNELEdBQU0sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDRSxHQUFNLENBQUMsT0FBUyxJQUFNLE9BQVMsRUFBRyxRQUNsQ3ZELEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxJQUFNLE9BQVMsRUFBRyxRQUM1QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CdEIsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JjLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsR0FBTSxFQUFFLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CNkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM3QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JrUSxHQUFNLENBQUMsSUFBTSxJQUFNLE1BQVEsRUFBRyxRQUM5QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CNEMsR0FBTSxDQUFDLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbEMzQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE1BQVEsRUFBRyxRQUNyQzdRLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDOFEsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEtBQU8sRUFBRyxRQUNwQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsS0FBTyxFQUFHLFFBQ3BDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3VCLElBQU8sQ0FBQyxJQUFNLE9BQVMsT0FBUyxFQUFHLFFBQ25Dd0ksSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJ2SSxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0UsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLElBQU8sQ0FBQyxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUNoQ0UsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLE1BQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEtBQU8sRUFBRyxRQUM5QkUsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxTQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxLQUFPLEVBQUcsUUFDOUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLE1BQ3RDOVQsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaEMrVCxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDcVUsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2pDMkQsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBRW5Da0csY0FBZSxDQUNiM00sR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9Cc0QsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNFLEdBQU0sQ0FBQyxPQUFTLElBQU0sT0FBUyxFQUFHLFFBQ2xDdkQsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLElBQU0sT0FBUyxFQUFHLFFBQzVCQyxHQUFNLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0J0QixHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmMsR0FBTSxDQUFDLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsTUFBUSxFQUFHLFFBQ3BDQyxHQUFNLEVBQUUsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUI2QyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQnZVLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE1BQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQmtRLEdBQU0sQ0FBQyxJQUFNLElBQU0sTUFBUSxFQUFHLFFBQzlCQyxHQUFNLENBQUMsSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0I0QyxHQUFNLENBQUMsSUFBTSxPQUFTLE9BQVMsRUFBRyxRQUNsQzNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDL0JDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDL0JDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDN1EsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaEM4USxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLEtBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDdUIsSUFBTyxDQUFDLElBQU0sT0FBUyxPQUFTLEVBQUcsUUFDbkN3SSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnZJLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsSUFBTyxDQUFDLE9BQVMsRUFBRyxFQUFHLEVBQUcsS0FDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDRSxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdEM5VCxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQytULElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENxVSxJQUFPLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUMvQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDakMzRCxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxLQUFRLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUNoQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakM5VSxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxTQUU3QmliLGVBQWdCLENBQ2RDLEdBQU0sQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEtBQ25CN00sR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCc0QsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLElBQzVCQyxHQUFNLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM1QnZELEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxJQUN0QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCdEIsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJjLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQjZDLEdBQU0sQ0FBQyxNQUFRLE1BQVEsRUFBRyxFQUFHLFFBQzdCNUMsR0FBTSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM2QyxHQUFNLENBQUMsTUFBUSxNQUFRLEVBQUcsRUFBRyxRQUM3QjVDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxLQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEtBQU8sRUFBRyxLQUM3QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QjZDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQ3pCNUMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCNEMsR0FBTSxDQUFDLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQm9CLElBQU8sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxJQUFNLE9BQVMsRUFBRyxFQUFHLElBQzdCNEksSUFBTyxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDcEJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDNUksSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEMwSSxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ3pJLElBQU8sQ0FBQyxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQitULElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCcFUsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJxVSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsR0FDakMzRCxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0IyRCxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ3NHLEtBQVEsQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLE9BQ3hCckcsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFH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QUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMVMsS0FBUSxDQUFDLEtBQU8sSUFBTSxFQUFHLEVBQUcsTUFDNUIyUyxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQzVSLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2xDNlIsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbENtQyxLQUFRLENBQUMsS0FBTyxLQUFPLEVBQUcsRUFBRyxJQUM3QkMsS0FBUSxDQUFDLElBQU0sR0FBSyxFQUFHLEVBQUcsTUFDMUJDLEtBQVEsRUFBRSxJQUFNLElBQU0sRUFBRyxFQUFHLE9BQzVCQyxLQUFRLEVBQUUsR0FBSyxJQUFNLEVBQUcsRUFBRyxPQUMzQnJDLEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzNCalEsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsR0FDbENDLEtBQVEsRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2xDbVMsS0FBUSxDQUFDLEtBQU8sS0FBTyxFQUFHLEVBQUcsTUFDN0JDLEtBQVEsQ0FBQyxLQUFPLEtBQU8sRUFBRyxFQUFHLE1BQzdCelIsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNzUCxLQUFRLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxJQUNsQ25QLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDb1AsS0FBUSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsSUFDbENDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLEdBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDakNDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsSUFBTSxFQUFHLEVBQUcsUUFDeEJDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2pDQyxLQUFRLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNqQ0MsTUFBUyxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDNUJDLE1BQVMsQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQzVCeUIsTUFBUyxDQUFDLEtBQU8sS0FBTyxFQUFHLEVBQUcsTUFDOUJDLE1BQVMsQ0FBQyxLQUFPLEtBQU8sRUFBRyxFQUFHLE1BQzlCQyxNQUFTLENBQUMsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsTUFBUyxDQUFDLEtBQU8sS0FBTyxFQUFHLEVBQUcsT0FDOUJDLE1BQVMsQ0FBQyxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxNQUFTLENBQUMsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QkMsTUFBUyxDQUFDLEtBQU8sS0FBTyxFQUFHLEVBQUcsT0FDOUJDLE1BQVMsQ0FBQyxLQUFPLEtBQU8sRUFBRyxFQUFHLE9BQzlCQyxNQUFTLENBQUMsS0FBTyxLQUFPLEVBQUcsRUFBRyxPQUM5QmhDLE1BQVMsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzVCQyxNQUFTLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNsQ0MsTUFBUyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDbENDLE1BQVMsQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLElBRXBDOEIsa0JBQW1CLENBQ2pCamYsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CcVEsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsT0FDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxPQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxNQUFRLEVBQUcsUUFDckM3USxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLElBQU8sQ0FBQyxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENnRCxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaENrSSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE9BQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUNoQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsT0FDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBRTdCQyxjQUFlLENBQ2JoaEIsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsS0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDcVEsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUMvQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM3USxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxPQUNoQzhRLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENnRCxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLElBQU0sT0FBUyxRQUNuQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsT0FDdENrSSxJQUFPLENBQUMsRUFBRyxPQUFTLE1BQVEsT0FBUyxPQUNyQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsT0FDNUNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxNQUFRLE9BQVMsUUFDckNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsS0FBUSxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdkNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBRW5DRSxlQUFnQixDQUNkamhCLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLEtBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxPQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3JDQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3JDQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ0MsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDckNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUNyQ3FRLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDL0JDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDN1EsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsT0FDaEM4USxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDZ0QsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLE9BQVMsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxJQUFNLE9BQVMsUUFDbkNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLE9BQ3RDa0ksSUFBTyxDQUFDLEVBQUcsT0FBUyxNQUFRLE9BQVMsT0FDckNDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLFFBQzVDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxPQUM1Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLE9BQVMsUUFDNUNDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxPQUFTLE9BQzVDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsTUFBUSxPQUFTLFFBQ3JDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLE9BQVMsUUFDdENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3RDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsT0FBUyxRQUM1Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxPQUFTLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsT0FBUyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLEtBQVEsQ0FBQyxPQUFTLE9BQVMsRUFBRyxPQUFTLFFBQ3ZDQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsT0FBUyxRQUVuQ0csaUJBQWtCLENBQ2hCdlEsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCc0QsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLEtBQzVCQyxHQUFNLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxTQUM1QnZELEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxLQUN0QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLEtBQ3pCdEIsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDekJjLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCNkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJ2VSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsU0FDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJrUSxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQ3pCNEMsR0FBTSxDQUFDLElBQU0sT0FBUyxPQUFTLEVBQUcsS0FDbEMzQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxLQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzdRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCOFEsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnVCLElBQU8sQ0FBQyxJQUFNLE9BQVMsRUFBRyxFQUFHLEtBQzdCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkUsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJtTSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQmpNLElBQU8sQ0FBQyxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkcsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaEM5VCxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQitULElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUMxQkcsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQnBVLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLEtBQzFCcVUsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsS0FDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FDakNDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFNBQ2pDM0QsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCMkQsS0FBUSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFNBRTdCZ0ssbUJBQW9CLENBQ2xCelEsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9Cc0QsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxPQUFTLElBQU0sT0FBUyxFQUFHLElBQ2xDQyxHQUFNLENBQUMsT0FBUyxJQUFNLE9BQVMsRUFBRyxRQUNsQ3ZELEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxJQUFNLElBQU0sT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxJQUFNLE9BQVMsRUFBRyxJQUM1QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDckNDLEdBQU0sQ0FBQyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxJQUFNLElBQU0sT0FBUyxFQUFHLElBQy9CdEIsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDL0JjLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsS0FBTyxPQUFTLE9BQVMsRUFBRyxRQUNuQ0MsR0FBTSxFQUFFLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDaENDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CNkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0J2VSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxNQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEtBQU8sT0FBUyxPQUFTLEVBQUcsUUFDbkNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLE9BQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxRQUM5QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxNQUFRLEVBQUcsUUFDOUJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JrUSxHQUFNLENBQUMsSUFBTSxJQUFNLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLElBQU0sSUFBTSxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsTUFBUSxFQUFHLElBQzlCNEMsR0FBTSxDQUFDLElBQU0sT0FBUyxPQUFTLEVBQUcsSUFDbEMzQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxJQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0QzdRLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDOFEsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsTUFBUSxFQUFHLFFBQ3JDQyxJQUFPLENBQUMsT0FBUyxPQUFTLE9BQVMsRUFBRyxRQUN0Q0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsTUFBUSxFQUFHLFFBQy9CQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLFFBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ3VCLElBQU8sQ0FBQyxJQUFNLE9BQVMsT0FBUyxFQUFHLElBQ25DQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0UsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJFLElBQU8sQ0FBQyxPQUFTLEVBQUcsRUFBRyxFQUFHLFFBQzFCUSxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0csSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdEM5VCxJQUFPLENBQUMsRUFBRyxPQUFTLE1BQVEsRUFBRyxJQUMvQitULElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCcFUsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsSUFDaENxVSxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsR0FDakMzRCxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDakMyRCxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxJQUNqQ0MsS0FBUSxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsS0FFbkNpSyxvQkFBcUIsQ0FDbkIxUSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJzRCxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsSUFDNUJDLEdBQU0sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCdkQsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLElBQ3RCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEtBQU8sT0FBUyxFQUFHLEVBQUcsUUFDN0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLElBQU0sSUFBTSxFQUFHLEVBQUcsSUFDekJ0QixHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUN6QmMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxLQUFPLE9BQVMsRUFBRyxFQUFHLFFBQzdCQyxHQUFNLEVBQUUsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUMxQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekI2QyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QnZVLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsS0FBTyxPQUFTLEVBQUcsRUFBRyxRQUM3QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsT0FDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQy9CQyxHQUFNLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsS0FBTyxFQUFHLFFBQzdCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QmtRLEdBQU0sQ0FBQyxJQUFNLElBQU0sRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsSUFBTSxJQUFNLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDekI0QyxHQUFNLENBQUMsSUFBTSxPQUFTLE9BQVMsRUFBRyxJQUNsQzNDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDekJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsT0FBUyxFQUFHLElBQ3RDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDN1EsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUI4USxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxRQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxPQUFTLEVBQUcsUUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLFFBQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxPQUFTLEVBQUcsUUFDdENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCdUIsSUFBTyxDQUFDLElBQU0sT0FBUyxFQUFHLEVBQUcsSUFDN0JDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCRSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkUsSUFBTyxDQUFDLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDMUJRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCRyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxRQUNoQzlULElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCK1QsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsSUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJwVSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxJQUMxQnFVLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLEtBQVEsQ0FBQyxFQUFHLE9BQVMsT0FBUyxFQUFHLElBQ2pDQyxLQUFRLENBQUMsRUFBRyxPQUFTLE9BQVMsRUFBRyxHQUNqQzNELEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMzQjJELEtBQVEsQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLElBQzNCQyxLQUFRLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxLQUU3QmtLLGlCQUFrQixDQUNoQnRoQixHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssTUFBUSxFQUFHLFFBQzFCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsT0FBUyxHQUFLLE9BQVMsRUFBRyxTQUNqQ0MsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxNQUFRLEVBQUcsT0FDMUJDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxTQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLEtBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE9BQVMsRUFBRyxRQUMzQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFDM0JDLEdBQU0sQ0FBQyxFQUFHLEdBQUssT0FBUyxFQUFHLFFBQzNCQyxHQUFNLENBQUMsRUFBRyxHQUFLLE1BQVEsRUFBRyxRQUMxQkMsR0FBTSxDQUFDLEVBQUcsR0FBSyxPQUFTLEVBQUcsUUFFN0I4ZixnQkFBaUIsQ0FDZnhRLEdBQU0sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCQyxHQUFNLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM1Qk0sR0FBTSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUJLLEdBQU0sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzVCNkMsR0FBTSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDNUI1QyxHQUFNLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM1QjhDLElBQU8sQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzdCRSxJQUFPLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM3QjdTLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxRQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsUUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLFFBQzFCc2YsS0FBUSxFQUFFLE1BQVMsS0FBTyxFQUFHLEVBQUcsUUFDaEMxSixLQUFRLENBQUMsS0FBTyxHQUFLLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEtBQU8sR0FBSyxFQUFHLEVBQUcsUUFDM0JZLEtBQVEsQ0FBQyxLQUFPLEdBQUssRUFBRyxFQUFHLFFBQzNCRSxLQUFRLENBQUMsS0FBTyxHQUFLLEVBQUcsRUFBRyxRQUMzQjRJLEtBQVEsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsU0FDOUJoSSxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxHQUM5QjdULEtBQVEsRUFBRSxPQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDRSxLQUFRLEVBQUUsT0FBUyxLQUFPLEVBQUcsRUFBRyxRQUNoQ2lVLEtBQVEsQ0FBQyxPQUFTLEtBQU8sT0FBUyxFQUFHLFFBQ3JDMkgsS0FBUSxDQUFDLEtBQU8sS0FBTyxPQUFTLEVBQUcsUUFDbkNDLEtBQVEsQ0FBQyxLQUFPLEtBQU8sT0FBUyxFQUFHLFFBQ25DQyxLQUFRLENBQUMsT0FBUyxLQUFPLE9BQVMsRUFBRyxRQUNyQ0MsS0FBUSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDOUJDLEtBQVEsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDOUJsRyxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDOUJDLEtBQVEsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxRQUM5QmdHLEtBQVEsRUFBRSxNQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDckYsTUFBUyxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFFBQy9CcUYsTUFBUyxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsU0FDL0JDLE1BQVMsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBQy9CQyxNQUFTLENBQUMsT0FBUyxJQUFNLEVBQUcsRUFBRyxTQUMvQkMsTUFBUyxDQUFDLE9BQVMsSUFBTSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsQ0FBQyxPQUFTLElBQU0sRUFBRyxFQUFHLFNBRWpDQyxnQkFBaUIsQ0FDZjFSLEdBQU0sQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCQyxHQUFNLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM1Qk0sR0FBTSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJLLEdBQU0sQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCNkMsR0FBTSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUI1QyxHQUFNLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM1QjhDLElBQU8sQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzdCRSxJQUFPLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM3QjdTLElBQU8sQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLEdBQ3ZCQyxJQUFPLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxHQUN2QkMsSUFBTyxDQUFDLEVBQUcsSUFBTSxFQUFHLEVBQUcsR0FDdkJDLElBQU8sQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLEdBQ3ZCdWYsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDOUJDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzlCQyxLQUFRLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUM5QmhJLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLEdBQzlCTSxLQUFRLENBQUMsT0FBUyxLQUFNLE9BQVMsRUFBRyxRQUNwQzJILEtBQVEsQ0FBQyxLQUFPLEtBQU0sT0FBUyxFQUFHLFFBQ2xDQyxLQUFRLENBQUMsS0FBTyxLQUFNLE9BQVMsRUFBRyxRQUNsQ0MsS0FBUSxDQUFDLE9BQVMsS0FBTSxPQUFTLEVBQUcsUUFDcENDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzlCQyxLQUFRLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUM5QkMsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDOUJDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzlCbEcsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJXLE1BQVMsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQy9CQyxNQUFTLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUMvQnFGLE1BQVMsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQy9CQyxNQUFTLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxTQUMvQkMsTUFBUyxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsU0FDL0JDLE1BQVMsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQy9CQyxNQUFTLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxVQUVqQ0UsZ0JBQWlCLENBQ2YzUixHQUFNLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM1QkMsR0FBTSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJNLEdBQU0sQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzVCSyxHQUFNLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM1QjZDLEdBQU0sQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFNBQzVCNUMsR0FBTSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUI4QyxJQUFPLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxLQUM3QkUsSUFBTyxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsS0FDN0I3UyxJQUFPLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxTQUN2QkMsSUFBTyxDQUFDLEVBQUcsSUFBTSxFQUFHLEVBQUcsU0FDdkJDLElBQU8sQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLFNBQ3ZCQyxJQUFPLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxTQUN2QnlYLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLEdBQzlCcUMsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJXLE1BQVMsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLEtBQy9CQyxNQUFTLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxNQUVqQzRGLGdCQUFpQixDQUNmNVIsR0FBTSxDQUFDLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUJDLEdBQU0sQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCTSxHQUFNLENBQUMsUUFBUyxLQUFNLEVBQUcsRUFBRyxTQUM1QkssR0FBTSxDQUFDLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDNUI2QyxHQUFNLENBQUMsUUFBUyxLQUFNLEVBQUcsRUFBRyxTQUM1QjVDLEdBQU0sQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzVCOEMsSUFBTyxDQUFDLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDN0JFLElBQU8sQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzdCN1MsSUFBTyxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDeEJDLElBQU8sQ0FBQyxFQUFHLEtBQU8sRUFBRyxFQUFHLFFBQ3hCQyxJQUFPLENBQUMsRUFBRyxLQUFPLEVBQUcsRUFBRyxRQUN4QkMsSUFBTyxDQUFDLEVBQUcsS0FBTyxFQUFHLEVBQUcsUUFDeEJ5WCxLQUFRLENBQUMsUUFBUyxLQUFNLEVBQUcsRUFBRyxHQUM5QnFDLEtBQVEsQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsUUFBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDOUJDLEtBQVEsQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCeUcsS0FBUSxDQUFDLE9BQVMsTUFBTyxFQUFHLEVBQUcsTUFDL0JDLEtBQVEsQ0FBQyxLQUFPLEdBQUssRUFBRyxFQUFHLE1BQzNCQyxLQUFRLENBQUMsT0FBUyxNQUFPLEVBQUcsRUFBRyxNQUMvQkMsS0FBUSxDQUFDLE9BQVMsTUFBTyxFQUFHLEVBQUcsTUFDL0JDLEtBQVEsQ0FBQyxLQUFPLEdBQUssRUFBRyxFQUFHLE1BQzNCQyxLQUFRLENBQUMsT0FBUyxNQUFPLEVBQUcsRUFBRyxNQUMvQkMsS0FBUSxDQUFDLE9BQVMsTUFBTyxFQUFHLEVBQUcsUUFDL0JDLEtBQVEsRUFBRSxNQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLENBQUMsT0FBUyxNQUFPLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxDQUFDLE9BQVMsTUFBTyxFQUFHLEVBQUcsUUFDL0JDLEtBQVEsRUFBRSxNQUFTLEtBQU8sRUFBRyxFQUFHLFFBQ2hDQyxLQUFRLENBQUMsT0FBUyxNQUFPLEVBQUcsRUFBRyxRQUMvQkMsS0FBUSxDQUFDLEtBQU8sR0FBSyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLEtBQU0sRUFBRyxFQUFHLFFBQzlCQyxLQUFRLENBQUMsT0FBUyxFQUFHLEVBQUcsRUFBRyxRQUMzQkMsS0FBUSxDQUFDLEVBQUcsR0FBSyxFQUFHLEVBQUcsUUFDdkJDLEtBQVEsQ0FBQyxLQUFPLEdBQUssRUFBRyxFQUFHLFFBQzNCQyxLQUFRLENBQUMsT0FBUyxLQUFNLEVBQUcsRUFBRyxRQUM5QkMsS0FBUSxDQUFDLE9BQVMsRUFBRyxFQUFHLEVBQUcsUUFDM0JDLEtBQVEsQ0FBQyxPQUFTLEtBQU8sRUFBRyxFQUFHLFNBQy9CakgsTUFBUyxDQUFDLFFBQVMsS0FBTSxFQUFHLEVBQUcsUUFDL0JDLE1BQVMsQ0FBQyxRQUFTLEtBQU0sRUFBRyxFQUFHLFFBQy9CaUgsTUFBUyxFQUFFLE9BQVMsS0FBTyxFQUFHLEVBQUcsU0FDakNDLE1BQVMsRUFBRSxPQUFTLEtBQU8sRUFBRyxFQUFHLFNBQ2pDQyxNQUFTLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxLQUN6QkMsTUFBUyxDQUFDLEVBQUcsSUFBTSxFQUFHLEVBQUcsS0FDekJDLE1BQVMsQ0FBQyxFQUFHLElBQU0sRUFBRyxFQUFHLEtBQ3pCQyxNQUFTLENBQUMsRUFBRyxJQUFNLEVBQUcsRUFBRyxNQUUzQkMscUJBQXNCLENBQ3BCOUcsR0FBTSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsTUFDbkI3TSxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJzRCxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0JDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CdkQsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0JDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsR0FBTSxDQUFDLE9BQVMsS0FBTyxFQUFHLEVBQUcsTUFDN0JDLEdBQU0sRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxHQUFNLENBQUMsRUFBRyxLQUFPLEVBQUcsRUFBRyxNQUN2QkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0J0QixHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CNkMsR0FBTSxFQUFFLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM1QyxHQUFNLEVBQUUsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQzZDLEdBQU0sRUFBRSxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDNUMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI2QyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QnZVLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QmtRLEdBQU0sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQy9CNkMsR0FBTSxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDL0I1QyxHQUFNLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUMvQkMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekI0QyxHQUFNLENBQUMsT0FBUyxFQUFHLEVBQUcsRUFBRyxNQUN6QjhQLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCelMsR0FBTSxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDekJDLEdBQU0sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQ3pCQyxHQUFNLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUN6QkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaEM3USxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQjhRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkMsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJvQixJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLE9BQVMsT0FBUyxFQUFHLEVBQUcsTUFDaENDLElBQU8sQ0FBQyxPQUFTLE9BQVMsRUFBRyxFQUFHLE1BQ2hDQyxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQjJQLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCL0csSUFBTyxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsTUFDcEJ6SSxJQUFPLENBQUMsRUFBRyxPQUFTLEVBQUcsRUFBRyxNQUMxQkUsSUFBTyxDQUFDLE9BQVMsRUFBRyxFQUFHLEVBQUcsTUFDMUJRLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCRyxJQUFPLENBQUMsT0FBUyxPQUFTLEVBQUcsRUFBRyxNQUNoQ0MsSUFBTyxDQUFDLEVBQUcsT0FBUyxFQUFHLEVBQUcsTUFDMUJDLElBQU8sQ0FBQyxFQUFHLE9BQVMsRUFBRyxFQUFHLE1BQzFCQyxJQUFPLENBQUMs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LEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZ0cUQsSUFBUSxLQUVSQyxJQUFRLEtBRVJGLElBQVEsS0FFUndxRCxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVjdxRCxJQUFRLEtBRVI4cUQsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLE1BRVZDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVY1b0MsSUFBUSxLQUVSNm9DLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVEsS0FFUkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFRLEtBRVJDLElBQVEsS0FFUkMsSUFBVSxNQUVWQyxJQUFVLE1BRVZDLElBQVUsTUFFVkMsSUFBVSxNQUVWQyxJQUFVLEtBRVZDLElBQVUsTUFFVkMsSUFBVSxLQUVWQyxJQUFVLE1BRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFRLEtBRVJDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBUSxLQUVSQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FFVkMsSUFBVSxLQUVWQyxJQUFVLEtBRVZDLElBQVUsS0FF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
diff --git a/rollup.config.js b/rollup.config.js
index e944279..7f09748 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -1,6 +1,6 @@
-import uglify from 'rollup-plugin-uglify';
+import {terser} from 'rollup-plugin-terser';
import builtins from 'rollup-plugin-node-builtins';
-import json from 'rollup-plugin-json';
+import json from '@rollup/plugin-json';
import commonjs from 'rollup-plugin-commonjs';
import resolve from 'rollup-plugin-node-resolve';
import globals from 'rollup-plugin-node-globals';
@@ -24,8 +24,8 @@ export default {
json({
preferConst: true,
}),
+ terser(),
globals(),
- uglify(),
],
};
diff --git a/tohtml.js b/tohtml.js
index e6d5fee..c1be903 100644
--- a/tohtml.js
+++ b/tohtml.js
@@ -85,4 +85,66 @@ function toHTML(data, fnc) {
.process(data, fnc);
}
+toHTML.defaultValue = `Plugins presentation
+=================
+
+This page is an example of using [remark][remark] with plugins that I created. These plugins are used to parse [lines][remark-line-input] of [text](remark-text-input), [selection boxes][remark-select] and even [MCQs][remark-mcq].
+
+The goal of this project is to propose a set of plugins allowing to create **exercises** easily.
+
+To first let's see somes examples !
+
+Example of exercises
+--------------------
+
+The 151th pokémon [__151th pokémon__]{#pokemon oninput="pokemon(this)"} is one of the two pokemons that can use transform attack (the other one is [ Pikachu | Ditto | Mewtow | Eevee |v] ).
+
+
+Line edit
+---------
+
+You can use line edit like that :
+
+Login : [__email or username__]{#login}
+Passwd: [__Passwd__]{#password type=password}
+
+Text edit
+--------
+
+It's also easy to use text edit :
+
+[______
+
+This is a text zone
+
+______]{rows=13 cols=30}
+
+
+Selection box
+-------------
+
+To use a selection box, just write it in the markdown file.
+
+[ Mario | Peach | Luigi |v]
+
+[remark]: https://github.com/remarkjs/remark "Github of the remark project"
+[remark-line-input]: https://www.npmjs.com/package/remark-line-input
+[remark-text-input]: https://www.npmjs.com/package/remark-text-input
+[remark-select]: https://www.npmjs.com/package/remark-select
+
+
+<script>
+ if( !pokemon ) {
+function pokemon( elem ) {
+ if( elem.value != 'mew' ) {
+ if( elem.classList.contains('valid') )
+ elem.classList.remove('valid')
+ elem['className'] = 'invalid';
+ }else{
+ if( elem.classList.contains('invalid') )
+ elem.classList.remove('invalid')
+ elem.classList.add('valid')
+ }
+}}</script>`;
+
module.exports = toHTML;